diff --git a/config.json b/config.json index 4a8a23ff..676b2288 100644 --- a/config.json +++ b/config.json @@ -1,13 +1,15 @@ { "name": "streamline-emr", "org": "streamline", - "version": "2.1", + "version": "2.3", "platforms": [ "linux/arm64" ], "images": { "linux/arm64": { - "registry.gitlab.com/signalytic/client-external/streamline/streamline-emr/arm64:v2.1": "streamline-emr:latest" + "registry.gitlab.com/signalytic/client-external/streamline/streamline-emr/streamline-emr/arm64:2.3": "streamline-emr:latest", + "registry.gitlab.com/signalytic/client-external/streamline/streamline-emr/statistics/arm64:2.3": "streamline-emr-statistics:latest", + "registry.gitlab.com/signalytic/client-external/streamline/streamline-emr/redis/arm64:2.3": "streamline-emr-redis:latest" } } } diff --git a/docker/Dockerfile.redis.arm64 b/docker/Dockerfile.redis.arm64 new file mode 100644 index 00000000..01160078 --- /dev/null +++ b/docker/Dockerfile.redis.arm64 @@ -0,0 +1 @@ +FROM redis:alpine \ No newline at end of file diff --git a/docker/Dockerfile.streamline-emr.arm64 b/docker/Dockerfile.streamline-emr.arm64 index 3e179e33..53c93670 100644 --- a/docker/Dockerfile.streamline-emr.arm64 +++ b/docker/Dockerfile.streamline-emr.arm64 @@ -1,79 +1 @@ -################################################################################ -# Use known working image to pull in working wkhtmltopdf libraries -# ref: https://stackoverflow.com/questions/56426050/how-to-install-wkhtmltopdf-on-docker-php-fpm-alpine-linux -################################################################################ - -FROM surnet/alpine-wkhtmltopdf:3.16.2-0.12.6-full as wkhtmltopdf -FROM php:8.2-fpm-alpine3.17 AS app - -# wkhtmltopdf install dependencies -RUN apk add --no-cache \ - libstdc++ \ - libx11 \ - libxrender \ - libxext \ - libssl1.1 \ - ca-certificates \ - fontconfig \ - freetype \ - ttf-droid \ - ttf-freefont \ - ttf-liberation \ - # more fonts - ; -# wkhtmltopdf copy bins from ext image -COPY --from=wkhtmltopdf /bin/wkhtmltopdf /bin/wkhtmltoimage /bin/libwkhtmltox.so /usr/bin/ - - -################################################################################ -# Copied from previous Dockerfile (v1-rc4) -################################################################################ - -# Install necessary packages and cleanup -RUN set -ex; \ - apk update && \ - apk add --no-cache curl gnupg mysql mysql-client pwgen && \ - docker-php-ext-install pdo pdo_mysql && \ - rm -rf /var/cache/apk/* - -# Install Composer -RUN curl -sS https://getcomposer.org/installer | \ - php -- --install-dir=/usr/bin/ --filename=composer - -# Set the working directory and copy the application code -COPY streamline-src /var/www/html - -COPY my.cnf /etc/mysql/my.cnf - -WORKDIR /var/www/html - -# Create the 'streamline' user and adjust permissions -RUN addgroup -g 1000 streamline && adduser -G streamline -g streamline -s /bin/sh -D streamline && \ - composer install && \ - chmod -R 777 /var/www/html/storage/ && \ - chown -R streamline:streamline /var/www/html && \ - mkdir -p /docker-entrypoint-initdb.d/ - -# Initialize MySQL -COPY streamline_initial.sql /docker-entrypoint-initdb.d/ - -RUN mkdir /scripts && \ - mkdir /scripts/pre-exec.d && \ - mkdir /scripts/pre-init.d && \ - chmod -R 755 /scripts - -VOLUME ["/var/lib/mysql"] - -# Set the startup script as executable -RUN chmod +x /var/www/html/start_up.sh - -# Define the entry point and expose port 80, 3306 -ENTRYPOINT ["/bin/sh", "/var/www/html/start_up.sh"] - -EXPOSE 80 3306 - - -################################################################################ -# Update snappy config to fix issues with wkhtmltopdf -################################################################################ -COPY snappy.php /var/www/html/config/snappy.php \ No newline at end of file +FROM streamlinehealth/streamline:signalytic \ No newline at end of file diff --git a/docker/README.md b/docker/README.md deleted file mode 100644 index 744bc0e4..00000000 --- a/docker/README.md +++ /dev/null @@ -1,52 +0,0 @@ -# Image Notes - -The base images used have a few issues that should be addressed, specifically: -- the `linux/arm64` variant does not work (appears to built for a different platform) -- quite a few files seem to be unused, taking up space unnecessarily and making it difficult to follow -- services should ideally be run in separate docker containers - this looks to have been at least partially implemented, but is not currently used -- mysql configuration is managed in several places, in particular with respect to binary logging -- binary logging needs to be configured slightly differently to work reliably with Signalytic tools (in their current state) - -## Changes -### Required Changes -A minimal set of required changes includes: -- modify `/etc/mysql/my.cnf` - - limit binary logging to the `streamline` database only (`binlog-do-db=streamline`) - - remove binary log size limit (`max_binlog_size`) -- modify `/var/www/html/.docker/mysql/mysql-init.sh` - - remove binary log configuration from `mysqld` commands, using `my.cnf` as the sole configuration source (`--log-basename=bin --log-bin=/var/lib/mysql/logs/bin`) -- replace the arm64 base image with a known working image - -#### Reasoning -The reason for these changes is that the Signalytic database sync tools currently work with only a single database at a time. When using MariaDB, several system databases are generated automatically, generating additional binary logs that we are not interested in. When attempting to later apply the binary logs to a database server, conflicts may arise. An alternative approach would be to drop all databases instead, this is worth investigating in the future. - -### Additional Changes -A temporary solution to the failing arm64 image, is to rebuild the image based on the files already available within the official images. Some additional changes are made here to further reduce the image size. Changes include: -- remove unused dockerfiles from the image -- remove duplicate initialization data -- remove unused git files - -## Background -### Streamline Startup Process -``` --- /var/www/html/start_up.sh (entrypoint, called with /bin/sh) - |-- set env vars (app, db, user, pass, root, rootpass) - |-- .docker/mysql/mysql-init.sh - | |-- exec scripts from /scripts/pre-init.d/ (none) - | |-- create binlogs folder if needed: /var/lib/mysql/logs/ - | |-- create other mysql folders if needed - | |-- if no /var/lib/mysql yet, create then: - | | |-- install db with "mysql_install_db ..." - | | |-- generate db init script: create db, set permissions, etc - | | |-- run mysqld with init script as input (binlogs set in options) - | | `-- if /docker-entrypoint-initdb.d/ exists: - | | |-- start mysqld (same options) - | | |-- apply all *.sql[.gz] files in dir - | | `-- stop mysqld - | |-- exec scripts from /scripts/post-init.d/ (none) - | `-- start mysqld in background - |-- mysql query: "use streamline" ("streamline" hardcoded) - |-- mysql query: "create database streamline" (uses db name variable) - |-- mysql: ./.docker/mysql/scripts/streamline_initial.sql - `- start php app -``` \ No newline at end of file diff --git a/docker/my.cnf b/docker/my.cnf deleted file mode 100644 index a5d9fab3..00000000 --- a/docker/my.cnf +++ /dev/null @@ -1,4 +0,0 @@ -[mysqld] -log-basename=bin -log-bin=/var/lib/mysql/logs/bin -binlog-do-db=streamline \ No newline at end of file diff --git a/docker/snappy.php b/docker/snappy.php deleted file mode 100755 index 292c811f..00000000 --- a/docker/snappy.php +++ /dev/null @@ -1,56 +0,0 @@ - [ - 'enabled' => true, - 'binary' => $pdfPath, - 'timeout' => false, - 'options' => [ - 'enable-local-file-access' => true - ], - 'env' => [], - ], - 'image' => [ - 'enabled' => true, - 'binary' => $imagePath, - 'timeout' => false, - 'options' => [ - 'enable-local-file-access' => true - ], - 'env' => [], - ], -]; diff --git a/docker/streamline-src/.env.example b/docker/streamline-src/.env.example deleted file mode 100755 index 37ec9180..00000000 --- a/docker/streamline-src/.env.example +++ /dev/null @@ -1,43 +0,0 @@ -APP_NAME=Streamline -APP_SHORT_NAME=streamline -APP_ENV=local -APP_KEY= -APP_DEBUG=false -APP_LOG_LEVEL=debug -APP_LOG=daily -APP_URL=http://localhost - -DB_CONNECTION=mysql -DB_HOST=127.0.0.1 -DB_PORT=3306 -DB_DATABASE=streamline -DB_USERNAME=root -DB_PASSWORD=secret - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -SESSION_DRIVER=file -QUEUE_DRIVER=sync - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_DRIVER=smtp -MAIL_HOST=smtp.mailtrap.io -MAIL_PORT=2525 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null - -PUSHER_APP_ID= -PUSHER_APP_KEY= -PUSHER_APP_SECRET= - -# Docker -PORT_SERVER= -PORT_DATABASE= -PORT_PHPMYADMIN= -DOCKER_ACTIVE=false - -SESSION_LIFETIME=20 diff --git a/docker/streamline-src/Modules/Patients/Http/Controllers/ConsultationController.php b/docker/streamline-src/Modules/Patients/Http/Controllers/ConsultationController.php deleted file mode 100755 index 0811dcf8..00000000 --- a/docker/streamline-src/Modules/Patients/Http/Controllers/ConsultationController.php +++ /dev/null @@ -1,1605 +0,0 @@ -middleware('auth'); - } - - /** - * Display a listing of the resource. - * - * @return \Illuminate\Http\Response - */ - public function index() - { - // - } - - public function create() - { - - if (!session()->has('patient_id') || !session()->has('episode_id')) : - flash('Patient is not selected')->error(); - $messages = MessageBoard::orderBy('created_at', 'desc')->paginate(3); - return view('home', compact('messages')); - endif; - - $clinics = Clinic::orderBy('name')->pluck("name", "id")->toArray(); - $clinics = ['0' => "Don't assign clinic"] + $clinics; - $users = User::orderBy('first_name')->select("id", "first_name", "last_name")->get(); - - $episode_id = session()->get('episode_id'); - $patient_id = session()->get('patient_id'); - - if (session()->get('consultation_with_notes') == 1) { - $consultation_with_notes = true; - } else { - $consultation_with_notes = false; - } - - $patient = Patient::where('id', $patient_id)->first(); - $episode = PatientEpisode::where('id', $episode_id)->first(); - $triage = Triage::where(['id' => $episode->triage_id])->first(); - - $is_mental_health_clinic = false; - - // fetch the clinic id and determine if this is a mental health consultation - $clinic_slug = get_name($episode->clinic_id, "id", "slug", "clinics"); - if ($clinic_slug == "mental_health") { - session()->put(['is_mental_health_clinic' => 1]); - $is_mental_health_clinic = true; - } - - /*==== do this for assignment of mental clinic from patient home page ===*/ - if (session()->get("is_mental_health_clinic") == 1) { - $is_mental_health_clinic = true; - } - // unset the session for is_mental_health_clinic - session()->forget('is_mental_health_clinic'); - /*====== end that thing for assignment of mental clinic from patient home page =================*/ - - $documents = DB::table('patient_documents')->whereNull('deleted_at')->where('patient_id', $patient_id)->orderBy('date_taken', 'desc')->get(); - - $categories = DB::table('patient_categories')->where('available', 1)->pluck("name", "id"); - $drug_categories = DB::table('drug_categories')->orderBy('name', 'asc')->get(); - - $diagnoses = DB::table('diagnoses')->whereNull('deleted_at')->where('available', 1)->orderBy('name')->pluck("name", "id")->prepend('- select -', ''); - $outcomes = DB::table('outcomes')->whereNull('deleted_at')->orderBy('name')->pluck('name', 'id')->prepend('- select -', ''); - $wards = DB::table('wards')->where('available', 1)->whereNull('deleted_at')->orderBy('name')->pluck('name', 'id')->prepend('- select -', ''); - $referrals = DB::table('referral_hospitals')->whereNull('deleted_at')->orderBy('name')->pluck('name', 'id')->prepend('- select -', ''); - //select treatment - $treatments = Treatment::where(['patient_id' => $patient_id, 'episode_id' => $episode_id, 'tta' => 0])->get(); - //symptoms - $symptoms = DB::table('symptoms')->whereNull('deleted_at')->orderBy('name')->pluck("name", "id")->toArray(); - $symptoms = ['' => '- select -'] + $symptoms; - $symptoms_periods = ['' => '- select -', 'Hours' => 'Hours', 'Days' => 'Days', 'Weeks' => 'Weeks', 'Months' => 'Months', 'Years' => 'Years']; - - //allergies and alerts - $known_patient_allergies = \Streamline\Models\Allergy::where('patient_id', $patient_id)->orderBy('created_at', 'desc')->take(2)->get(); - $known_patient_alerts = \Streamline\Models\Alert::where('patient_id', $patient_id)->orderBy('created_at', 'desc')->take(2)->get(); - $drug_categories_array = DB::table('drug_categories')->pluck('name', 'id'); - /* get ordered procedures */ - $ordered_procedures = OrderedProcedure::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->get(); - //check for ordered investigations,procedures and treatment - $ordered_investigations = OrderedInvestigation::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->get(); - /* get ordered sundries */ - $ordered_sundries = OrderedSundry::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->get(); - //check for authenticated investigations - $investigation_results = InvestigationResults::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->get(); - $diagnoses_all = DB::table('diagnoses')->whereNull('deleted_at')->select('id', 'prompts', 'reference_areas', 'reference_names')->get(); - - /* ======== added to cater for review episode =========*/ - $is_episode_a_review = check_if_episode_is_a_followup($episode->id); - $parent_episode_treatments = []; - $parent_episode_ordered_procedures = []; - $parent_episode_ordered_investigations = []; - $parent_episode_ordered_sundries = []; - $parent_episode_investigation_results = []; - - if ($is_episode_a_review) { - $parent_episode_details = PatientEpisode::find($episode->parent_episode_id); - - $parent_episode_treatments = Treatment::where(['patient_id' => $patient_id, 'episode_id' => $parent_episode_details->id, 'tta' => 0])->get(); - $parent_episode_ordered_procedures = OrderedProcedure::where(['patient_id' => $patient_id, 'episode_id' => $parent_episode_details->id])->get(); - $parent_episode_ordered_investigations = OrderedInvestigation::where(['patient_id' => $patient_id, 'episode_id' => $parent_episode_details->id])->get(); - /* get ordered sundries */ - $parent_episode_ordered_sundries = OrderedSundry::where(['patient_id' => $patient_id, 'episode_id' => $parent_episode_details->id])->get(); - //check for authenticated investigations - $parent_episode_investigation_results = InvestigationResults::where(['patient_id' => $patient_id, 'episode_id' => $parent_episode_details->id])->get(); - } - /* ========end of variables added to cater for review episodes ========*/ - - $users_collection = DB::table('users')->orderBy("first_name", "asc")->select("id")->get()->toArray(); - $users_array = []; - foreach ($users_collection as $value) { - $user = User::find($value->id); - if (!is_null($user)) { - $users_array[$value->id] = get_full_name($value->id, 'id', 'first_name', 'last_name', 'users'); - } - } - $users_array = ['' => '- select -'] + $users_array; - - $hmis_categories = DB::table('hmis_categories')->orderBy('title', 'asc')->pluck('title', 'id')->toArray(); - $hmis_categories = ['' => '- select -'] + $hmis_categories; - - $cardio_echo = CardioEchoResult::where('episode_id', $episode_id)->first(); - - $patient_episodes = DB::table('patient_episodes')->where('patient_id', $patient_id)->whereNotIn('id', [$episode_id])->latest()->take(5)->get(); - $past_episodes_info = []; - $counter = 0; - - foreach ($patient_episodes as $patient_episode) { - if ($counter == 5) { - break; - } - - if (!is_episode_safe_to_delete($patient_episode->id) && isset($patient_episode->consultation_id)) { // exclude empty episodes - $consultations_details = DB::table('consultations')->find($patient_episode->consultation_id); - - if ($consultations_details) { - $past_episodes_info[$counter]["start_date"] = streamline_date_time($patient_episode->created_at); - $past_episodes_info[$counter]["episode_id"] = $patient_episode->id; - - $past_episodes_info[$counter]["primary_diagnosis"] = $consultations_details->primary_diagnosis ?? 0; - if (unserialize($consultations_details->other_diagnoses)) { - $past_episodes_info[$counter]["other_diagnoses"] = unserialize($consultations_details->other_diagnoses); - } else { - $past_episodes_info[$counter]["other_diagnoses"] = []; - } - - $past_episodes_info[$counter]["outcome"] = $consultations_details->outcome_id ?? 0; - $doctor_id = $consultations_details->consultation_done_by ?? $consultations_details->created_by; - $past_episodes_info[$counter]["doctor"] = get_full_name($doctor_id, 'id', 'first_name', 'last_name', 'users'); - $past_episodes_info[$counter]["clinic"] = isset($patient_episode->clinic_id) ? get_name($patient_episode->clinic_id, 'id', 'name', 'clinics') : "N/A"; - - if (isset($patient_episode->triage_id)) { - $triage_details = DB::table('triage')->find($patient_episode->triage_id); - - if ($triage_details) { - $past_episodes_info[$counter]["symptoms"] = [ - "symptom_duration" => $triage_details->symptom_duration, - "symptoms" => $triage_details->symptoms - ]; - - $observations = explode(",", $triage_details->observations); - $past_episodes_info[$counter]["resp"] = "N/A"; - $past_episodes_info[$counter]["mmhg"] = "N/A"; - $past_episodes_info[$counter]["pulse"] = "N/A"; - $past_episodes_info[$counter]["temp"] = "N/A"; - - foreach ($observations as $observation) { - if (strpos($observation, "Temperature") !== false) { - $past_episodes_info[$counter]["temp"] = explode("=", $observation)[1]; - } - - if (strpos($observation, "Pulse") !== false) { - $past_episodes_info[$counter]["pulse"] = explode("=", $observation)[1]; - } - - if (strpos($observation, "Systolic bp") !== false) { - $past_episodes_info[$counter]["mmhg"] = explode("=", $observation)[1]; - } - - if (strpos($observation, "Diastolic bp") !== false) { - $past_episodes_info[$counter]["mmhg"] = $past_episodes_info[$counter]["mmhg"] . " / " . explode("=", $observation)[1]; - } - - if (strpos($observation, "Respirations") !== false) { - $past_episodes_info[$counter]["resp"] = explode("=", $observation)[1]; - } - } - } else { - $past_episodes_info[$counter]["symptoms"] = []; - $past_episodes_info[$counter]["resp"] = "N/A"; - $past_episodes_info[$counter]["mmhg"] = "N/A"; - $past_episodes_info[$counter]["pulse"] = "N/A"; - $past_episodes_info[$counter]["temp"] = "N/A"; - } - } else { - $past_episodes_info[$counter]["symptoms"] = []; - $past_episodes_info[$counter]["resp"] = "N/A"; - $past_episodes_info[$counter]["mmhg"] = "N/A"; - $past_episodes_info[$counter]["pulse"] = "N/A"; - $past_episodes_info[$counter]["temp"] = "N/A"; - } - - $counter++; - } - } - } - - return view('patients::consultations.create', compact( - 'patient', - 'triage', - 'episode', - 'diagnoses', - 'outcomes', - 'consultation_with_notes', - 'wards', - 'categories', - 'drug_categories', - 'referrals', - 'documents', - 'treatments', - 'symptoms', - 'known_patient_allergies', - 'is_mental_health_clinic', - 'known_patient_alerts', - 'drug_categories_array', - 'ordered_procedures', - 'ordered_investigations', - 'investigation_results', - 'ordered_sundries', - 'users', - 'clinics', - 'diagnoses_all', - 'parent_episode_treatments', - 'parent_episode_ordered_procedures', - 'parent_episode_ordered_sundries', - 'parent_episode_ordered_investigations', - 'parent_episode_investigation_results', - 'users_array', - 'hmis_categories', - 'cardio_echo', - 'past_episodes_info', - 'symptoms_periods' - )); - } - - /** - * Store a newly created resource in storage. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector - */ - public function store(Request $request) - { - - if (!session()->has('patient_id') || !session()->has('episode_id')) : - flash('Patient is not selected')->error(); - $messages = MessageBoard::orderBy('created_at', 'desc')->paginate(3); - return view('home', compact('messages')); - endif; - - $consultation = new Consultation; - - $patient_id = session()->get('patient_id'); - $episode_id = session()->get('episode_id'); - - $consultation->patient_id = $patient_id; - $consultation->episode_id = $episode_id; - - $symptoms_array = $request->symptoms ?? []; - $duration_array = $request->duration ?? []; - $time_array = $request->time ?? []; - - // Build symptoms and duration variables - $durations_final = []; - for ($x = 0; $x < count($symptoms_array); $x++) { - $durations_final[] = $duration_array[$x] . " " . $time_array[$x]; - } - - $consultation->symptoms = implode(",", $symptoms_array); - $consultation->symptom_duration = implode(",", $durations_final); - - $consultation->primary_diagnosis = $request->primary_diagnosis; - $consultation->other_diagnoses = (!empty($request->other_diagnosis[0])) ? serialize($request->other_diagnosis) : null; - $consultation->comments = $request->comments; - $consultation->history_comments = $request->history_comments; - $consultation->clinic_examination_comments = $request->clinic_examination_comments; - $consultation->investigation_and_management_plan_comments = $request->investigation_and_management_plan_comments; - $consultation->outcome_id = $request->outcome; - if ($request->died_on) $consultation->died_on = $request->died_on; - $consultation->rdt = $request->rdt; - if($request->attendance) $consultation->attendance = $request->attendance; - $consultation->rbs = $request->rbs; - $consultation->referral_notes = $request->referral_notes; - $consultation->tb_status_assessment = $request->tb_status_assessment; - $consultation->created_by = Auth::user()->id; - //$consultation->consultation_done_by = Auth::user()->id; still contemplating on whether to do update record - - // begin saving for discharge mortality risk - $discharge_mortality = DB::table('discharge_mortality_risk')->where('patient_id', $patient_id) - ->where('episode_id', $episode_id) - ->first(); - - if ($discharge_mortality) { - DB::table('discharge_mortality_risk') - ->where('id', $discharge_mortality->id) - ->update(['malaria_test' => $request->rdt]); - } - // end discharge mortality risk save - - // performing an ordered procedure. - if (!is_null($request->perform_selected)) { - foreach ($request->perform_selected as $procedure_array_id) { - $arr = explode(",", get_name($request->procedure_order_perform[$procedure_array_id], 'id', 'performed', 'ordered_procedures')); - $arr_id = explode(",", get_name($request->procedure_order_perform[$procedure_array_id], 'id', 'performed_id', 'ordered_procedures')); - - $performed_id = record_staff_that_has_performed_the_service( - $patient_id, - $episode_id, - 1, - $request->perform[$procedure_array_id], - 0, - $request->procedure_performed_by[$procedure_array_id] - ); - - if (isset($arr[$request->procedure_performed_position[$procedure_array_id]])) { - $arr[$request->procedure_performed_position[$procedure_array_id]] = 1; - $arr_id[$request->procedure_performed_position[$procedure_array_id]] = $performed_id; - $update = DB::table('ordered_procedures')->where('id', $request->procedure_order_perform[$procedure_array_id]) - ->update(['performed' => implode(",", $arr), 'performed_id' => implode(",", $arr_id)]); - } - } - } - - // performing an ordered services. - if (!is_null($request->service_perform_selected)) { - foreach ($request->service_perform_selected as $service_array_id) { - $arr = explode(",", get_name($request->service_order_perform[$service_array_id], 'id', 'performed', 'ordered_services')); - $arr_id = explode(",", get_name($request->service_order_perform[$service_array_id], 'id', 'performed_id', 'ordered_services')); - - $performed_id = record_staff_that_has_performed_the_service( - $patient_id, - $episode_id, - 3, - $request->service_perform[$service_array_id], - 0, - $request->service_performed_by[$service_array_id] - ); - - if (isset($arr[$request->service_performed_position[$service_array_id]])) { - $arr[$request->service_performed_position[$service_array_id]] = 1; - $arr_id[$request->service_performed_position[$service_array_id]] = $performed_id; - $update = DB::table('ordered_services')->where('id', $request->service_order_perform[$service_array_id]) - ->update(['performed' => implode(",", $arr), 'performed_id' => implode(",", $arr_id)]); - } - } - } - - // mental health consultation - if (isset($request->mental_health_clinic)) { - $mental_health_consultation = new MentalHealthConsultation(); - $mental_health_consultation->patient_id = $patient_id; - $mental_health_consultation->episode_id = $episode_id; - $mental_health_consultation->hallucinations = $request->hallucinations; - $mental_health_consultation->delusions = $request->delusions; - $mental_health_consultation->disorganised_speech = $request->disorganised_speech; - $mental_health_consultation->abnormal_psychomotor_behaviour = $request->abnormal_psychomotor_behaviour; - $mental_health_consultation->impaired_cognition = $request->impaired_cognition; - $mental_health_consultation->depression = $request->depression; - $mental_health_consultation->mania = $request->mania; - $mental_health_consultation->hamilton_anxiety_score = $request->hamilton_anxiety_score; - $mental_health_consultation->alcohol_screening_score = $request->alcohol_screening_score; - $mental_health_consultation->patient_satisfaction_score = $request->patient_satisfaction_score; - $mental_health_consultation->caregiver_satisfaction_score = $request->caregiver_satisfaction_score; - $mental_health_consultation->created_by = Auth::user()->id; - $mental_health_consultation->save(); - } - - switch ($request->outcome): - case 1: //Admitted - // check to see that the ward is valid - if (is_numeric($request->ward_id)) { - // check if the patient is currently admitted and just update their status - $inpatient_info = InpatientInfo::where(['patient_id' => $patient_id, 'episode_id' => $episode_id, 'discharged' => 0])->orderBy('created_at', 'desc')->first(); - - if ($inpatient_info) { - $inpatient_info->ward_id = $request->ward_id; - $inpatient_info->primary_diagnosis = $request->primary_diagnosis; - $inpatient_info->other_diagnoses = (!empty($request->other_diagnosis[0])) ? serialize($request->other_diagnosis) : null; - $inpatient_info->comments = $request->comments; - $inpatient_info->updated_by = Auth::user()->id; - $inpatient_info->save(); - - $discharge_mortality_inpatient_id = $inpatient_info->id; - } else { - $inpatient = new InpatientInfo; - $inpatient->patient_id = $patient_id; - $inpatient->episode_id = $episode_id; - $inpatient->admitted_on = Carbon::parse($request->admitted_on)->format('Y-m-d'); - $inpatient->ward_id = $request->ward_id; - $inpatient->primary_diagnosis = $request->primary_diagnosis; - $inpatient->other_diagnoses = (!empty($request->other_diagnosis[0])) ? serialize($request->other_diagnosis) : null; - $inpatient->comments = $request->comments; - $inpatient->created_by = Auth::user()->id; - $inpatient->save(); - - $discharge_mortality_inpatient_id = $inpatient->id; - } - - $consultation->ward_id = $request->ward_id; - $consultation->admitted_on = Carbon::parse($request->admitted_on)->format('Y-m-d'); - - if ($discharge_mortality) { - DB::table('discharge_mortality_risk') - ->where('id', $discharge_mortality->id) - ->update(['inpatient_id' => $discharge_mortality_inpatient_id]); - } - } - break; - case 3: // Home with followup - $consultation->followup_where = "Hospital"; - $consultation->followup_when = Carbon::parse($request->followup_when)->format('Y-m-d'); - - // save information to the follow-up table - $appointment = new PatientAppointment(); - $appointment->patient_id = $patient_id; - $appointment->incharge_id = $request->followup_in_charge; - $appointment->clinic_allocation = $request->followup_clinic_allocation; - $appointment->episode_id = $episode_id; - $appointment->appointment_date = Carbon::parse($request->followup_when)->format('Y-m-d'); - $appointment->appointment_time = $request->followup_in_time; - $appointment->created_from = "Consultation"; - $appointment->created_by = Auth::user()->id; - $appointment->updated_by = Auth::user()->id; - $appointment->save(); - break; - case 4: // Referred - $consultation->referred_to = $request->referral_id; - break; - default: - break; - endswitch; - - //handle clinic transfer - $outcome_slug = get_name($request->outcome, "id", "slug", "outcomes"); - if ($outcome_slug == "internal_transfer") { - $transfer = new \Streamline\Models\PatientClinicTransfers; - $transfer->patient_id = $patient_id; - $transfer->episode_id = $episode_id; - $transfer->old_clinic = $request->current_clinic_id; - $transfer->new_clinic = $request->transfer_to_clinic; - $transfer->created_by = Auth::user()->id; - $transfer->save(); - - $episode = PatientEpisode::find($episode_id); - $episode->clinic_id = $request->transfer_to_clinic; - $episode->update(); - - if ($request->current_triage_id != 0) { - $triage = Triage::find($request->current_triage_id); - $triage->clinic_allocation = $request->transfer_to_clinic; - $triage->update(); - } - } - - $episode = PatientEpisode::find($episode_id); - if(!empty($request->investigation_and_management_plan_comments) || !empty($request->clinic_examination_comments) || !empty($request->history_comments)){ - $notes = new WardInpatientDetailedNote; - $notes->patient_id = $patient_id; - $notes->episode_id = $episode_id; - $notes->ward_id = 0; - $notes->investigation_and_management_plan_comments = $request->investigation_and_management_plan_comments?? null; - $notes->clinic_examination_comments = $request->clinic_examination_comments?? null; - $notes->history_comments = $request->history_comments; - $notes->created_by = Auth::user()->id; - $notes->save(); - } - - // Handle the buttons on the consultation page - switch ($request->get('submit-btn')): - case 'investigation': - $consultation->save(); - $episode->consultation_id = $consultation->id; - $episode->save(); - session()->put('redirect_to_consultation', '/consultation/route'); - $url = '/investigations/investigations_review'; - break; - - case 'treatment': - $consultation->save(); - $episode->consultation_id = $consultation->id; - $episode->save(); - session()->put('redirect_to_consultation', '/consultation/route'); - $url = '/prescriptions/create/'; - break; - - case 'procedures': - $consultation->save(); - $episode->consultation_id = $consultation->id; - $episode->save(); - session()->put('redirect_to_consultation', '/consultation/route'); - $url = '/order_procedures/'; - break; - - case 'sundries': - $consultation->save(); - $episode->consultation_id = $consultation->id; - $episode->save(); - session()->put('redirect_to_consultation', '/consultation/route'); - $url = '/order_sundries/'; - break; - - case 'save_consultation': - $consultation->save(); - $episode->consultation_id = $consultation->id; - $episode->save(); - - $dob = new Carbon(get_name($patient_id, 'id', 'date_of_birth', 'patients')); - $age_diff_months = $dob->diffInMonths(Carbon::now()); - if (is_smart_discharge_enabled() && $request->outcome == 1 && $age_diff_months < 61 && $discharge_mortality && is_null($discharge_mortality->post_discharge_mortality_risk)) { - flash("Patient is being monitored for post discharge risk. Please fill the questions below")->success(); - return redirect('/triage/edit_for_post_discharge/' . $episode_id); - } else { - $url = '/patient_flow_monitoring/index'; - } - break; - - case 'services': - $consultation->save(); - $episode->consultation_id = $consultation->id; - $episode->save(); - session()->put('redirect_to_consultation', '/consultation/route'); - $url = '/order_services'; - break; - - case 'complete': - $consultation->completed = 1; - $consultation->save(); - $episode->consultation_id = $consultation->id; - $episode->save(); - session()->forget('consultation_with_notes'); - - add_doctors_fee_to_patient_services($consultation->id, auth()->user()->id); - - $dob = new Carbon(get_name($patient_id, 'id', 'date_of_birth', 'patients')); - $age_diff_months = $dob->diffInMonths(Carbon::now()); - if (is_smart_discharge_enabled() && $request->outcome == 1 && $age_diff_months < 61 && $discharge_mortality && is_null($discharge_mortality->post_discharge_mortality_risk)) { - flash("Patient is being monitored for post discharge risk. Please fill the questions below")->success(); - return redirect('/triage/edit_for_post_discharge/' . $episode_id); - } else { - $url = '/patient_flow_monitoring/index'; - } - break; - - default: - $url = '/patient_flow_monitoring/index'; - break; - endswitch; - - - return redirect($url); - } - - /** - * Display the specified resource. - * - * @param int $id - * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View - */ - public function show($id) - { - $consultation = Consultation::where(['id' => $id])->first(); - $patient = Patient::where('id', $consultation->patient_id)->first(); - $episode = PatientEpisode::where('id', $consultation->episode_id)->first(); - $triage = Triage::where(['id' => $episode->triage_id])->first(); - - if (session()->get('consultation_with_notes') == 1) { - $consultation_with_notes = true; - $consultation_notes = WardInpatientDetailedNote::where(['patient_id' => $patient->id, 'episode_id' => $episode->id, 'ward_id' => 0])->latest()->get(); - } else { - $consultation_with_notes = false; $consultation_notes = ''; - } - - $is_mental_health_clinic = false; - - // fetch the clinic id and determine if this is a mental health consultation - $clinic_slug = get_name($episode->clinic_id, "id", "slug", "clinics"); - if ($clinic_slug == "mental_health") { - $is_mental_health_clinic = true; - } - - $mental_health_consultation = MentalHealthConsultation::where(['patient_id' => $consultation->patient_id, 'episode_id' => $consultation->episode_id])->first(); - - //Dropdowns - $diagnoses = DB::table('diagnoses')->whereNull('deleted_at')->where('available', 1)->orderBy('name')->pluck("name", "id")->prepend('- select -', ''); - $diagnoses_all = DB::table('diagnoses')->whereNull('deleted_at')->select('id', 'prompts', 'reference_areas', 'reference_names')->get(); - $outcomes = DB::table('outcomes')->orderBy('name')->pluck('name', 'id')->prepend('- select -', ''); - $wards = DB::table('wards')->where('available', 1)->whereNull('deleted_at')->orderBy('name')->pluck('name', 'id')->prepend('- select -', ''); - $referrals = DB::table('referral_hospitals')->whereNull('deleted_at')->orderBy('name')->pluck('name', 'id')->prepend('- select -', ''); - //symptoms - $symptoms = DB::table('symptoms')->where('available', 1)->pluck("name", "id"); - - //check for ordered investigations,procedures and treatment - $ordered_investigations = OrderedInvestigation::where(['patient_id' => $consultation->patient_id, 'episode_id' => $consultation->episode_id])->get(); - //check for authenticated investigations - $investigation_results = InvestigationResults::where(['patient_id' => $consultation->patient_id, 'episode_id' => $consultation->episode_id])->get(); - $treatments = Treatment::where(['patient_id' => $consultation->patient_id, 'episode_id' => $consultation->episode_id])->get(); - $ordered_procedures = OrderedProcedure::where(['patient_id' => $consultation->patient_id, 'episode_id' => $consultation->episode_id])->get(); - /* get ordered sundries */ - $ordered_sundries = OrderedSundry::where(['patient_id' => $consultation->patient_id, 'episode_id' => $consultation->episode_id])->get(); - // variables used by the allergies header modal - $categories = DB::table('patient_categories')->where('available', 1)->pluck("name", "id"); - $drug_categories = DB::table('drug_categories')->get(); - $documents = \Streamline\Models\PatientDocument::where('patient_id', $consultation->patient_id)->orderBy('created_at', 'desc')->take(2)->get(); - $known_patient_allergies = \Streamline\Models\Allergy::where('patient_id', $consultation->patient_id)->orderBy('created_at', 'desc')->get(); - $known_patient_alerts = \Streamline\Models\Alert::where('patient_id', $consultation->patient_id)->orderBy('created_at', 'desc')->take(2)->get(); - $drug_categories_array = DB::table('drug_categories')->pluck('name', 'id'); - /* get ordered sundries */ - $ordered_sundries = OrderedSundry::where(['patient_id' => $consultation->patient_id, 'episode_id' => $consultation->episode_id])->get(); - /* ======== added to cater for review episode =========*/ - $is_episode_a_review = check_if_episode_is_a_followup($episode->id); - $parent_episode_treatments = []; - $parent_episode_ordered_procedures = []; - $parent_episode_ordered_investigations = []; - $parent_episode_ordered_sundries = []; - $parent_episode_investigation_results = []; - - if ($is_episode_a_review) { - $parent_episode_details = PatientEpisode::find($episode->parent_episode_id); - - $parent_episode_treatments = Treatment::where(['patient_id' => $consultation->patient_id, 'episode_id' => $parent_episode_details->id, 'tta' => 0])->get(); - $parent_episode_ordered_procedures = OrderedProcedure::where(['patient_id' => $consultation->patient_id, 'episode_id' => $parent_episode_details->id])->get(); - $parent_episode_ordered_investigations = OrderedInvestigation::where(['patient_id' => $consultation->patient_id, 'episode_id' => $parent_episode_details->id])->get(); - /* get ordered sundries */ - $parent_episode_ordered_sundries = OrderedSundry::where(['patient_id' => $consultation->patient_id, 'episode_id' => $parent_episode_details->id])->get(); - //check for authenticated investigations - $parent_episode_investigation_results = InvestigationResults::where(['patient_id' => $consultation->patient_id, 'episode_id' => $parent_episode_details->id])->get(); - } - /* ========end of varibales added to cater for review episodes ========*/ - - $cardio_echo = CardioEchoResult::where('episode_id', $consultation->episode_id)->first(); - $users = DB::table('users')->pluck(DB::raw("CONCAT(first_name,' ',last_name) AS name"), 'id'); - return view('patients::consultations.show', compact( - 'consultation', - 'patient', - 'episode', - 'triage', - 'documents', - 'categories', - 'drug_categories', - 'diagnoses', - 'diagnoses_all', - 'outcomes', - 'wards', - 'referrals', - 'symptoms', - 'known_patient_allergies', - 'drug_categories_array', - 'ordered_investigations', - 'treatments', - 'ordered_procedures', - 'consultation_with_notes', - 'investigation_results', - 'known_patient_alerts', - 'ordered_sundries', - 'is_mental_health_clinic', - 'mental_health_consultation', - 'parent_episode_treatments', - 'parent_episode_ordered_procedures', - 'parent_episode_ordered_sundries', - 'parent_episode_ordered_investigations', - 'parent_episode_investigation_results', - 'cardio_echo', - 'consultation_notes', - 'users' - )); - } - - /** - * Show the form for editing the specified resource. - * - * @param int $id - * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View - */ - public function edit($id) - { - - $consultation = Consultation::where(['id' => $id])->first(); - - $clinics = Clinic::orderBy('name')->pluck("name", "id")->toArray(); - $clinics = ['0' => "Don't assign clinic"] + $clinics; - $users = User::pluck(DB::raw("CONCAT(first_name,' ',last_name) AS name"), 'id'); - - //Patient, Triage and Episode - $patient = Patient::where('id', $consultation->patient_id)->first(); - $episode = PatientEpisode::where('id', $consultation->episode_id)->first(); - $triage = Triage::where(['id' => $episode->triage_id])->first(); - - if (session()->get('consultation_with_notes') == 1) { - $consultation_with_notes = true; - $all_notes = WardInpatientDetailedNote::where(['patient_id' => $patient->id, 'episode_id' => $episode->id, 'ward_id' => 0])->latest()->get(); - $consultation_notes = $all_notes->take(5); - $notes = $all_notes->skip(5); - $view_notes = $notes->all(); - } else { - $consultation_with_notes = false; $consultation_notes = $view_notes =''; - } - $is_mental_health_clinic = false; - // fetch the clinic id and determine if this is a mental health consultation - $clinic_slug = get_name($episode->clinic_id, "id", "slug", "clinics"); - if ($clinic_slug == "mental_health") { - session()->put(['is_mental_health_clinic' => 1]); - $is_mental_health_clinic = true; - } - - /*==== do this for assignment of mental clinic from patient home page ===*/ - if (session()->get("is_mental_health_clinic") == 1) { - $is_mental_health_clinic = true; - } - - $mental_health_consultation = MentalHealthConsultation::where(['patient_id' => $consultation->patient_id, 'episode_id' => $consultation->episode_id])->first(); - - $documents = DB::table('patient_documents')->whereNull('deleted_at')->where('patient_id', $consultation->patient_id)->orderBy('date_taken', 'desc')->get(); - $categories = DB::table('patient_categories')->where('available', 1)->pluck("name", "id"); - $drug_categories = DB::table('drug_categories')->get(); - - $diagnoses = DB::table('diagnoses')->whereNull('deleted_at')->where('available', 1)->orderBy('name')->pluck("name", "id")->prepend('- select -', ''); - $diagnoses_all = DB::table('diagnoses')->whereNull('deleted_at')->select('id', 'prompts', 'reference_areas', 'reference_names')->get(); - $outcomes = DB::table('outcomes')->whereNull('deleted_at')->orderBy('name')->pluck('name', 'id')->prepend('- select -', ''); - $wards = DB::table('wards')->where('available', 1)->whereNull('deleted_at')->orderBy('name')->pluck('name', 'id')->prepend('- select -', ''); - $referrals = DB::table('referral_hospitals')->whereNull('deleted_at')->orderBy('name')->pluck('name', 'id')->prepend('- select -', ''); - //symptoms - $symptoms = DB::table('symptoms')->whereNull('deleted_at')->orderBy('name')->pluck("name", "id")->toArray(); - $symptoms = ['' => '- select -'] + $symptoms; - $symptoms_periods = ['' => '- select -', 'Hours' => 'Hours', 'Days' => 'Days', 'Weeks' => 'Weeks', 'Months' => 'Months', 'Years' => 'Years']; - - //allergies and alerts - $known_patient_allergies = \Streamline\Models\Allergy::where('patient_id', $consultation->patient_id)->orderBy('created_at', 'desc')->take(2)->get(); - $known_patient_alerts = \Streamline\Models\Alert::where('patient_id', $consultation->patient_id)->orderBy('created_at', 'desc')->take(2)->get(); - - $drug_categories_array = DB::table('drug_categories')->pluck('name', 'id'); - //check for ordered investigations,procedures and treatment - $ordered_investigations = OrderedInvestigation::where(['patient_id' => $consultation->patient_id, 'episode_id' => $consultation->episode_id])->get(); - //check for authenticated investigations - $investigation_results = InvestigationResults::where(['patient_id' => $consultation->patient_id, 'episode_id' => $consultation->episode_id])->get(); - $treatments = Treatment::where(['patient_id' => $consultation->patient_id, 'episode_id' => $consultation->episode_id])->get(); - $ordered_procedures = OrderedProcedure::where(['patient_id' => $consultation->patient_id, 'episode_id' => $consultation->episode_id])->get(); - /* get ordered sundries */ - $ordered_sundries = OrderedSundry::where(['patient_id' => $consultation->patient_id, 'episode_id' => $consultation->episode_id])->get(); - /* ======== added to cater for review episode =========*/ - $is_episode_a_review = check_if_episode_is_a_followup($episode->id); - $parent_episode_treatments = []; - $parent_episode_ordered_procedures = []; - $parent_episode_ordered_investigations = []; - $parent_episode_ordered_sundries = []; - $parent_episode_investigation_results = []; - - if ($is_episode_a_review) { - $parent_episode_details = PatientEpisode::find($episode->parent_episode_id); - - $parent_episode_treatments = Treatment::where(['patient_id' => $consultation->patient_id, 'episode_id' => $parent_episode_details->id, 'tta' => 0])->get(); - $parent_episode_ordered_procedures = OrderedProcedure::where(['patient_id' => $consultation->patient_id, 'episode_id' => $parent_episode_details->id])->get(); - $parent_episode_ordered_investigations = OrderedInvestigation::where(['patient_id' => $consultation->patient_id, 'episode_id' => $parent_episode_details->id])->get(); - /* get ordered sundries */ - $parent_episode_ordered_sundries = OrderedSundry::where(['patient_id' => $consultation->patient_id, 'episode_id' => $parent_episode_details->id])->get(); - //check for authenticated investigations - $parent_episode_investigation_results = InvestigationResults::where(['patient_id' => $consultation->patient_id, 'episode_id' => $parent_episode_details->id])->get(); - } - /* ========end of varibales added to cater for review episodes ========*/ - - - $users_collection = DB::table('users')->orderBy("first_name", "asc")->select("id")->get()->toArray(); - $users_array = []; - foreach ($users_collection as $value) { - $user = User::find($value->id); - if (!is_null($user)) { - $users_array[$value->id] = get_full_name($value->id, 'id', 'first_name', 'last_name', 'users'); - } - } - $users_array = ['' => '- select -'] + $users_array; - - $hmis_categories = DB::table('hmis_categories')->orderBy('title', 'asc')->pluck('title', 'id')->toArray(); - $hmis_categories = ['' => '- select -'] + $hmis_categories; - - $cardio_echo = CardioEchoResult::where('episode_id', $consultation->episode_id)->first(); - - $patient_episodes = DB::table('patient_episodes')->where('patient_id', $consultation->patient_id)->whereNotIn('id', [$consultation->episode_id])->latest()->take(5)->get(); - $past_episodes_info = []; - $counter = 0; - - foreach ($patient_episodes as $patient_episode) { - if ($counter == 5) { - break; - } - - if (!is_episode_safe_to_delete($patient_episode->id) && isset($patient_episode->consultation_id)) { // exclude empty episodes - $consultations_details = DB::table('consultations')->find($patient_episode->consultation_id); - - if ($consultations_details) { - $past_episodes_info[$counter]["start_date"] = streamline_date_time($patient_episode->created_at); - $past_episodes_info[$counter]["episode_id"] = $patient_episode->id; - - $past_episodes_info[$counter]["primary_diagnosis"] = $consultations_details->primary_diagnosis ?? 0; - if (unserialize($consultations_details->other_diagnoses)) { - $past_episodes_info[$counter]["other_diagnoses"] = unserialize($consultations_details->other_diagnoses); - } else { - $past_episodes_info[$counter]["other_diagnoses"] = []; - } - - $past_episodes_info[$counter]["outcome"] = $consultations_details->outcome_id ?? 0; - $doctor_id = $consultations_details->consultation_done_by ?? $consultations_details->created_by; - $past_episodes_info[$counter]["doctor"] = get_full_name($doctor_id, 'id', 'first_name', 'last_name', 'users'); - $past_episodes_info[$counter]["clinic"] = isset($patient_episode->clinic_id) ? get_name($patient_episode->clinic_id, 'id', 'name', 'clinics') : "N/A"; - - if (isset($patient_episode->triage_id)) { - $triage_details = DB::table('triage')->find($patient_episode->triage_id); - - if ($triage_details) { - $past_episodes_info[$counter]["symptoms"] = [ - "symptom_duration" => $triage_details->symptom_duration, - "symptoms" => $triage_details->symptoms - ]; - - $observations = explode(",", $triage_details->observations); - $past_episodes_info[$counter]["resp"] = "N/A"; - $past_episodes_info[$counter]["mmhg"] = "N/A"; - $past_episodes_info[$counter]["pulse"] = "N/A"; - $past_episodes_info[$counter]["temp"] = "N/A"; - - foreach ($observations as $observation) { - if (strpos($observation, "Temperature") !== false) { - $past_episodes_info[$counter]["temp"] = explode("=", $observation)[1]; - } - - if (strpos($observation, "Pulse") !== false) { - $past_episodes_info[$counter]["pulse"] = explode("=", $observation)[1]; - } - - if (strpos($observation, "Systolic bp") !== false) { - $past_episodes_info[$counter]["mmhg"] = explode("=", $observation)[1]; - } - - if (strpos($observation, "Diastolic bp") !== false) { - $past_episodes_info[$counter]["mmhg"] = $past_episodes_info[$counter]["mmhg"] . " / " . explode("=", $observation)[1]; - } - - if (strpos($observation, "Respirations") !== false) { - $past_episodes_info[$counter]["resp"] = explode("=", $observation)[1]; - } - } - } else { - $past_episodes_info[$counter]["symptoms"] = []; - $past_episodes_info[$counter]["resp"] = "N/A"; - $past_episodes_info[$counter]["mmhg"] = "N/A"; - $past_episodes_info[$counter]["pulse"] = "N/A"; - $past_episodes_info[$counter]["temp"] = "N/A"; - } - } else { - $past_episodes_info[$counter]["symptoms"] = []; - $past_episodes_info[$counter]["resp"] = "N/A"; - $past_episodes_info[$counter]["mmhg"] = "N/A"; - $past_episodes_info[$counter]["pulse"] = "N/A"; - $past_episodes_info[$counter]["temp"] = "N/A"; - } - - $counter++; - } - } - } - - return view('patients::consultations.edit', compact( - 'consultation', - 'patient', - 'episode', - 'triage', - 'documents', - 'categories', - 'drug_categories', - 'diagnoses', - 'diagnoses_all', - 'outcomes', - 'wards', - 'referrals', - 'symptoms', - 'known_patient_allergies', - 'known_patient_alerts', - 'drug_categories_array', - 'ordered_investigations', - 'past_episodes_info', - 'symptoms_periods', - 'treatments', - 'ordered_procedures', - 'investigation_results', - 'ordered_sundries', - 'is_mental_health_clinic', - 'mental_health_consultation', - 'consultation_with_notes', - 'users', - 'clinics', - 'parent_episode_treatments', - 'parent_episode_ordered_procedures', - 'parent_episode_ordered_sundries', - 'parent_episode_ordered_investigations', - 'parent_episode_investigation_results', - 'users_array', - 'is_mental_health_clinic', - 'hmis_categories', - 'cardio_echo', - 'consultation_notes', - 'view_notes' - )); - } - - public function update(Request $request, $id) - { - - if (!session()->has('patient_id') || !session()->has('episode_id')) : - flash('Patient is not selected')->error(); - $messages = MessageBoard::orderBy('created_at', 'desc')->paginate(3); - return view('home', compact('messages')); - endif; - - $consultation = Consultation::find($id); - - $patient_id = session()->get('patient_id'); - $episode_id = session()->get('episode_id'); - - $symptoms_array = $request->symptoms ?? []; - $duration_array = $request->duration ?? []; - $time_array = $request->time ?? []; - - // Build symptoms and duration variables - $durations_final = []; - for ($x = 0; $x < count($symptoms_array); $x++) { - $durations_final[] = $duration_array[$x] . " " . $time_array[$x]; - } - - $consultation->symptoms = implode(",", $symptoms_array); - $consultation->symptom_duration = implode(",", $durations_final); - - $consultation->primary_diagnosis = $request->primary_diagnosis; - $consultation->other_diagnoses = (!empty($request->other_diagnosis[0])) ? serialize($request->other_diagnosis) : null; - $consultation->comments = $request->comments; - $consultation->outcome_id = $request->outcome; - if ($request->died_on) $consultation->died_on = $request->died_on; - $consultation->rdt = $request->rdt; - if($request->attendance) $consultation->attendance = $request->attendance; - $consultation->rbs = $request->rbs; - $consultation->history_comments = $request->history_comments; - $consultation->clinic_examination_comments = $request->clinic_examination_comments; - $consultation->investigation_and_management_plan_comments = $request->investigation_and_management_plan_comments; - $consultation->referral_notes = $request->referral_notes; - $consultation->tb_status_assessment = $request->tb_status_assessment; - $consultation->updated_by = Auth::user()->id; - //$consultation->consultation_done_by = Auth::user()->id; still contemplating on whether to update field - - // begin saving for discharge mortality risk - $discharge_mortality = DB::table('discharge_mortality_risk')->where('patient_id', $patient_id) - ->where('episode_id', $episode_id) - ->first(); - - if ($discharge_mortality) { - DB::table('discharge_mortality_risk') - ->where('id', $discharge_mortality->id) - ->update(['malaria_test' => $request->rdt]); - } - // end discharge mortality risk save - - // performing an ordered procedure. - if (!is_null($request->perform_selected)) { - foreach ($request->perform_selected as $procedure_array_id) { - $arr = explode(",", get_name($request->procedure_order_perform[$procedure_array_id], 'id', 'performed', 'ordered_procedures')); - $arr_id = explode(",", get_name($request->procedure_order_perform[$procedure_array_id], 'id', 'performed_id', 'ordered_procedures')); - - $performed_id = record_staff_that_has_performed_the_service( - $patient_id, - $episode_id, - 1, - $request->perform[$procedure_array_id], - 0, - $request->procedure_performed_by[$procedure_array_id] - ); - - if (isset($arr[$request->procedure_performed_position[$procedure_array_id]])) { - $arr[$request->procedure_performed_position[$procedure_array_id]] = 1; - $arr_id[$request->procedure_performed_position[$procedure_array_id]] = $performed_id; - $update = DB::table('ordered_procedures')->where('id', $request->procedure_order_perform[$procedure_array_id]) - ->update(['performed' => implode(",", $arr), 'performed_id' => implode(",", $arr_id)]); - } - } - } - - // performing an ordered services. - if (!is_null($request->service_perform_selected)) { - foreach ($request->service_perform_selected as $service_array_id) { - $arr = explode(",", get_name($request->service_order_perform[$service_array_id], 'id', 'performed', 'ordered_services')); - $arr_id = explode(",", get_name($request->service_order_perform[$service_array_id], 'id', 'performed_id', 'ordered_procedures')); - - $performed_id = record_staff_that_has_performed_the_service( - $patient_id, - $episode_id, - 3, - $request->service_perform[$service_array_id], - 0, - $request->service_performed_by[$service_array_id] - ); - - if (isset($arr[$request->service_performed_position[$service_array_id]])) { - $arr[$request->service_performed_position[$service_array_id]] = 1; - $arr_id[$request->service_performed_position[$service_array_id]] = $performed_id; - $update = DB::table('ordered_services')->where('id', $request->service_order_perform[$service_array_id]) - ->update(['performed' => implode(",", $arr), 'performed_id' => implode(",", $arr_id)]); - } - } - } - - switch ($request->outcome): - case 1: //Admitted - if (is_numeric($request->ward_id)) { - /* check if this episode already exists in the inpatients table before inserting new record else update */ - $existing_inpatient = InpatientInfo::where(['episode_id' => $episode_id])->first(); - $inpatient = is_null($existing_inpatient) ? new InpatientInfo : $existing_inpatient; - $inpatient->patient_id = $patient_id; - $inpatient->episode_id = $episode_id; - $inpatient->admitted_on = $request->admitted_on; - $inpatient->ward_id = $request->ward_id; - $inpatient->primary_diagnosis = $request->primary_diagnosis; - $inpatient->other_diagnoses = (!empty($request->other_diagnosis[0])) ? serialize($request->other_diagnosis) : null; - $inpatient->comments = $request->comments; - $inpatient->created_by = Auth::user()->id; - is_null($existing_inpatient) ? $inpatient->save() : $inpatient->update(); // Save/update inpatient info - - $consultation->ward_id = $request->ward_id; - - $consultation->admitted_on = Carbon::parse($request->admitted_on)->format('Y-m-d'); - - if ($discharge_mortality) { - DB::table('discharge_mortality_risk') - ->where('id', $discharge_mortality->id) - ->update(['inpatient_id' => $inpatient->id]); - } - } - break; - case 3: // Home with followup - $consultation->followup_where = "Hospital"; - $consultation->followup_when = Carbon::parse($request->followup_when)->format('Y-m-d'); - - // get current clinic of patient if available - $episode_information = PatientEpisode::find($episode_id); - - if ($episode_information->clinic_id) { - $clinic_allocation_id = $episode_information->clinic_id; - } else { - $clinic_allocation_id = 0; - } - - // check if there is an appointment for this episode - $previous_appointment = PatientAppointment::where(['episode_id' => $episode_id])->first(); - - if ($previous_appointment) { - $appointment = $previous_appointment; - } else { - $appointment = new PatientAppointment(); - $appointment->patient_id = $patient_id; - $appointment->created_by = Auth::user()->id; - $appointment->episode_id = $episode_id; - } - - $appointment->incharge_id = $request->followup_in_charge; - $appointment->clinic_allocation = $request->followup_clinic_allocation; - $appointment->appointment_date = Carbon::parse($request->followup_when)->format('Y-m-d'); - $appointment->appointment_time = $request->followup_in_time; - $appointment->created_from = "Consultation"; - $appointment->updated_by = Auth::user()->id; - $appointment->save(); - break; - case 4: // Referred - $consultation->referred_to = $request->referral_id; - break; - endswitch; - - //handle clinic transfer - $outcome_slug = get_name($request->outcome, "id", "slug", "outcomes"); - if ($outcome_slug == "internal_transfer") { - $transfer = new \Streamline\Models\PatientClinicTransfers; - $transfer->patient_id = $patient_id; - $transfer->episode_id = $episode_id; - $transfer->old_clinic = $request->current_clinic_id; - $transfer->new_clinic = $request->transfer_to_clinic; - $transfer->created_by = Auth::user()->id; - $transfer->save(); - - $episode = PatientEpisode::find($episode_id); - $episode->clinic_id = $request->transfer_to_clinic; - $episode->update(); - - if ($request->current_triage_id != 0) { - $triage = Triage::find($request->current_triage_id); - $triage->clinic_allocation = $request->transfer_to_clinic; - $triage->update(); - } - } - - // mental health consultation - if (isset($request->mental_health_id)) { - $mental_health_consultation = MentalHealthConsultation::find($request->mental_health_id); - $mental_health_consultation->patient_id = $patient_id; - $mental_health_consultation->episode_id = $episode_id; - $mental_health_consultation->hallucinations = $request->hallucinations; - $mental_health_consultation->delusions = $request->delusions; - $mental_health_consultation->disorganised_speech = $request->disorganised_speech; - $mental_health_consultation->abnormal_psychomotor_behaviour = $request->abnormal_psychomotor_behaviour; - $mental_health_consultation->impaired_cognition = $request->impaired_cognition; - $mental_health_consultation->depression = $request->depression; - $mental_health_consultation->mania = $request->mania; - $mental_health_consultation->hamilton_anxiety_score = $request->hamilton_anxiety_score; - $mental_health_consultation->alcohol_screening_score = $request->alcohol_screening_score; - $mental_health_consultation->patient_satisfaction_score = $request->patient_satisfaction_score; - $mental_health_consultation->caregiver_satisfaction_score = $request->caregiver_satisfaction_score; - $mental_health_consultation->updated_by = Auth::user()->id; - $mental_health_consultation->update(); - } - - if(!empty($request->investigation_and_management_plan_comments) || !empty($request->clinic_examination_comments) || !empty($request->history_comments)){ - $notes = new WardInpatientDetailedNote; - $notes->patient_id = $patient_id; - $notes->episode_id = $episode_id; - $notes->ward_id = 0; - $notes->investigation_and_management_plan_comments = $request->investigation_and_management_plan_comments?? null; - $notes->clinic_examination_comments = $request->clinic_examination_comments?? null; - $notes->history_comments = $request->history_comments?? null; - $notes->created_by = Auth::user()->id; - $notes->save(); - } - if(!empty($request->deleted_notes)){ - foreach($request->deleted_notes as $note){ - if(!empty($note)) { - $notes = WardInpatientDetailedNote::find($note); - $notes->delete(); - } - } - } - - switch ($request->get('submit-btn')): - case 'investigation': - $consultation->save(); - session()->put('redirect_to_consultation', '/consultation/route'); - $url = '/investigations/investigations_review'; - break; - - case 'treatment': - $consultation->save(); - session()->forget('alter_episode_id'); - session()->forget('alter_patient_id'); - session()->put('redirect_to_consultation', '/consultation/route'); - $url = '/prescriptions/create/'; - break; - - case 'procedures': - $consultation->save(); - session()->put('redirect_to_consultation', '/consultation/route'); - $url = '/order_procedures/'; - break; - - case 'sundries': - $consultation->save(); - session()->put('redirect_to_consultation', '/consultation/route'); - $url = '/order_sundries/'; - break; - - case 'services': - $consultation->save(); - session()->put('redirect_to_consultation', '/consultation/route'); - $url = '/order_services'; - break; - - case 'save_consultation': - $consultation->save(); - $dob = new Carbon(get_name($patient_id, 'id', 'date_of_birth', 'patients')); - $age_diff_months = $dob->diffInMonths(Carbon::now()); - if (is_smart_discharge_enabled() && $request->outcome == 1 && $age_diff_months < 61 && $discharge_mortality && is_null($discharge_mortality->post_discharge_mortality_risk)) { - flash("Patient is being monitored for post discharge risk. Please fill the questions below")->success(); - return redirect('/triage/edit_for_post_discharge/' . $episode_id); - } else { - $url = '/patient_flow_monitoring/index'; - } - break; - - case 'complete': - $consultation->completed = 1; - $consultation->save(); - session()->forget('consultation_with_notes'); - - add_doctors_fee_to_patient_services($consultation->id, auth()->user()->id); - - $dob = new Carbon(get_name($patient_id, 'id', 'date_of_birth', 'patients')); - $age_diff_months = $dob->diffInMonths(Carbon::now()); - if (is_smart_discharge_enabled() && $request->outcome == 1 && $age_diff_months < 61 && $discharge_mortality && is_null($discharge_mortality->post_discharge_mortality_risk)) { - flash("Patient is being monitored for post discharge risk. Please fill the questions below")->success(); - return redirect('/triage/edit_for_post_discharge/' . $episode_id); - } else { - $url = '/patient_flow_monitoring/index'; - } - break; - default: - $url = '/patient_flow_monitoring/index'; - break; - endswitch; - - return redirect($url); - } - - public function destroy($id) - { - // - } - - public function route() - { - /* - * Check if a consultation is pending and then route it to edit page - * If a consultation is completed, route to the view page - */ - - $patient_id = session()->get('patient_id'); - $episode_id = session()->get('episode_id'); - - $consultation = DB::table('consultations')->where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first(); - - $clinic_id = get_name($episode_id, "id", "clinic_id", "patient_episodes"); - - // check if patient is in the diabetes program - get with the program 'un - $clinic_slug = get_name($clinic_id, "id", "slug", "clinics"); - if ($clinic_slug == "diabetes") { - return redirect('diabetes_clinic/clinic_registration'); - } - - if ($clinic_slug == "ante_natal") { - return redirect('ante_natal_clinic_menu'); - } - - if ($clinic_slug == "art") { - return redirect("hiv_menu"); - } - - if ($clinic_slug == "mental_health") { - $is_mental_health_clinic = true; - session()->put(['is_mental_health_clinic' => 1]); - } - - if ($consultation) { - switch ($consultation->completed) { - case '0': // Pending - return self::edit($consultation->id); - break; - case '1': // Completed - return self::show($consultation->id); - break; - default: // Not created yet - return self::create(); - break; - } - } else { - return self::create(); - } - } - - public function edit_patient_consultation() - { - $patient_id = session()->get('patient_id'); - $episode_id = session()->get('episode_id'); - - // update the completed column back to '0' so that it redirects to consultation@edit method - $consultation = Consultation::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first(); - $consultation->completed = 0; - $consultation->update(); - - return redirect('/consultation/route'); - } - - public function create_with_notes() - { - session()->put('consultation_with_notes', 1); - return redirect('/consultation/route'); - } - - public function add_diagnosis(Request $request) - { - $diagnosis = new \Streamline\Models\Diagnosis; - $diagnosis->name = $request->diagnosis_name; - $diagnosis->icd10_code = $request->icd10_code; - $diagnosis->hmis_no_outpatient = $request->hmis_no_outpatient; - $diagnosis->hmis_no_inpatient = $request->hmis_no_inpatient; - $diagnosis->prompts = $request->diagnosis_prompts; - $diagnosis->chronic_status = $request->chronic_status; - $diagnosis->hmis_category = $request->hmis_category; - $diagnosis->available = isset($request->available)? $request->available:1; - $diagnosis->diagnosis_category = $request->diagnosis_category?? null; - $diagnosis->created_by = auth()->user()->id; - - try { - $diagnosis->save(); - return $diagnosis->id; - } catch (QueryException $e) { - flash("An error occurred")->error(); - return back()->withInput(); - } - } - - public function review_episode($current_episode_id, $parent_episode_id, $type) - { - $episode = PatientEpisode::find($current_episode_id); - $episode->parent_episode_id = $parent_episode_id; - $episode->updated_by = auth()->user()->id; - $episode->save(); - - if ($type == 0) { - return redirect('/consultation/route'); - } else { - return redirect('/consultation/create_with_notes'); - } - } - - public function opd_referral_notes_print($patient_id, $episode_id) - { - $patient = Patient::find($patient_id); - $hospitalInfo = DB::table('hospital_information')->find(1); - - $consultation = Consultation::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->orderBy('created_at', 'desc')->first(); - $triage = Triage::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first(); - $patient_discount = \Streamline\Models\PatientDiscount::where(['patient_category' => $patient->category_id])->select("discount", "pay_later")->first(); - - if (!is_null($patient_discount)) { - $patient_discount->toArray(); - } - $treatments = Treatment::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->get(); - $all_diagnoses = DB::table('diagnoses')->pluck("name", "id"); - - /* ====== start work on investigations */ - // prep the inpatient investigation arrays and counters - $opd_investigations = []; - $opd_investigations_date = []; - $ward_investigations = []; - $ward_investigations_date = []; - - // get all investigations ordered in this episode - $ordered_investigations = OrderedInvestigation::where(['episode_id' => $episode_id])->get(); - - // get all results - $investigation_results_order_ids = InvestigationResults::pluck('order_id', 'id')->toArray(); - - foreach ($ordered_investigations as $investigation) { - $investigation_ids = explode(",", $investigation->investigation_id); - $inpatient_status = explode(",", $investigation->for_inpatient); - - // check if results are available for this investigation - if (in_array($investigation->id, $investigation_results_order_ids)) { - // get the key if available - $key = array_search($investigation->id, $investigation_results_order_ids); - - // get the results object - $results = InvestigationResults::find($key); - - // exclude obstetric u/s results - if ($results->result_type != "Ultrasound_Obstetric") { - $investigation_results = explode(",", $results->value); - $investigation_per_valid = explode(",", $results->per_investigation); - $investigation_comments = explode(",", $results->comment); - - if ($results->all_authenticated == 1) { - for ($i = 0; $i < count($inpatient_status); $i++) { - if ($inpatient_status[$i] == 0) { - if (isset($investigation_ids[$i]) && $investigation_ids[$i] != "") { - $result = Investigation::where('id', $investigation_ids[$i])->first(); - $opd_investigations['name'][] = $result->name; - $opd_investigations['value'][] = $investigation_results[$i]; - $opd_investigations['comment'][] = $investigation_comments[$i]; - - if($result->range_type == 1) { - $opd_investigations['normal_ranges'][] = get_dynamic_normal_range($result->id, get_patient_age_group($patient_id), get_name($patient_id, 'id', 'gender', 'patients')); - } else { - $opd_investigations['normal_ranges'][] = $result->normal_ranges; - } - - $opd_investigations['type'][] = $result->type; - } - } else { - if (isset($investigation_ids[$i]) && $investigation_ids[$i] != "") { - $result = Investigation::where('id', $investigation_ids[$i])->first(); - $ward_investigations['name'][] = $result->name; - $ward_investigations['value'][] = $investigation_results[$i]; - $ward_investigations['comment'][] = $investigation_comments[$i]; - $ward_investigations['type'][] = $result->type; - } - } - } - } else { - for ($i = 0; $i < count($inpatient_status); $i++) { - if ($investigation_per_valid[$i] == 1) { - // this investigation is authenticated - if ($inpatient_status[$i] == 0) { - if (isset($investigation_ids[$i]) && $investigation_ids[$i] != "") { - $result = Investigation::where('id', $investigation_ids[$i])->first(); - $opd_investigations['name'][] = $result->name; - $opd_investigations['value'][] = $investigation_results[$i]; - - if($result->range_type == 1) { - $opd_investigations['normal_ranges'][] = get_dynamic_normal_range($result->id, get_patient_age_group($patient_id), get_name($patient_id, 'id', 'gender', 'patients')); - } else { - $opd_investigations['normal_ranges'][] = $result->normal_ranges; - } - - $opd_investigations['comment'][] = $investigation_comments[$i]; - $opd_investigations['type'][] = $result->type; - } - } else { - if (isset($investigation_ids[$i]) && $investigation_ids[$i] != "") { - $result = Investigation::where('id', $investigation_ids[$i])->first(); - $ward_investigations['name'][] = $result->name; - $ward_investigations['value'][] = $investigation_results[$i]; - $ward_investigations['comment'][] = $investigation_comments[$i]; - $ward_investigations['type'][] = $result->type; - } - } - } else { - if ($inpatient_status[$i] == 0) { - if (isset($investigation_ids[$i]) && $investigation_ids[$i] != "") { - $result = Investigation::where('id', $investigation_ids[$i])->first(); - $opd_investigations['name'][] = $result->name; - $opd_investigations['value'][] = "Pending"; - - if($result->range_type == 1) { - $opd_investigations['normal_ranges'][] = get_dynamic_normal_range($result->id, get_patient_age_group($patient_id), get_name($patient_id, 'id', 'gender', 'patients')); - } else { - $opd_investigations['normal_ranges'][] = $result->normal_ranges; - } - - $opd_investigations['comment'][] = "Pending"; - } - } else { - if (isset($investigation_ids[$i]) && $investigation_ids[$i] != "") { - $result = Investigation::where('id', $investigation_ids[$i])->first(); - $ward_investigations['name'][] = $result->name; - $ward_investigations['value'][] = "Pending"; - $ward_investigations['comment'][] = "Pending"; - } - } - } - } - } - } - } else { - for ($i = 0; $i < count($inpatient_status); $i++) { - if ($inpatient_status[$i] == 0) { - if (isset($investigation_ids[$i]) && $investigation_ids[$i] != "") { - $result = Investigation::where('id', $investigation_ids[$i])->first(); - $opd_investigations['name'][] = $result->name; - $opd_investigations['value'][] = "Pending"; - - if($result->range_type == 1) { - $opd_investigations['normal_ranges'][] = get_dynamic_normal_range($result->id, get_patient_age_group($patient_id), get_name($patient_id, 'id', 'gender', 'patients')); - } else { - $opd_investigations['normal_ranges'][] = $result->normal_ranges; - } - - $opd_investigations['comment'][] = "Pending"; - } - } else { - if (isset($investigation_ids[$i]) && $investigation_ids[$i] != "") { - $result = Investigation::where('id', $investigation_ids[$i])->first(); - $ward_investigations['name'][] = $result->name; - $ward_investigations['value'][] = "Pending"; - $ward_investigations['comment'][] = "Pending"; - } - } - } - } - } - /* ====== end work on investigations */ - $ordered_procedures = OrderedProcedure::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->get(); - $procedures = DB::table('procedures')->where('available', 1)->pluck("name", "id"); - $cons_notes = WardInpatientDetailedNote::where(['patient_id' => $patient_id, 'episode_id' => $episode_id, 'ward_id' => 0])->latest()->get(['investigation_and_management_plan_comments', 'clinic_examination_comments', 'history_comments', 'created_by']); - $priority_signs = $emergent_signs =[]; - $dateBorn = Carbon::parse($patient->date_of_birth); - $years = $dateBorn->diffInYears(); - if(between($years, 0, 12) && !empty($triage)) { - $priority_signs_records = PrioritySign::where('triage_id', $triage->id)->first(); - - if ($priority_signs_records) { - $priority_signs = unserialize($priority_signs_records->signs); - } - - $emergency_signs = EmergencySign::where('triage_id', $triage->id)->first(); - - if (!empty($emergency_signs)) { - $airway = unserialize($emergency_signs->airway); - $circulation = unserialize($emergency_signs->circulation); - $neurological = unserialize($emergency_signs->neurological); - $dehydration = unserialize($emergency_signs->dehydration); - $emergencySigns= array_merge($airway,$circulation, $dehydration,$neurological); - foreach($emergencySigns as $key => $sign) if($sign == 'Yes') $emergent_signs[] = $key; - } - } - // get all symptoms - $symptoms = DB::table('symptoms')->where('available', 1)->pluck("name", "id"); - - $data = [ - 'patient' => $patient, - 'consultation' => $consultation, - 'patient_id' => $patient_id, - 'hospitalInfo' => $hospitalInfo, - 'patient_discount' => $patient_discount, - 'ward_investigations' => $ward_investigations, - 'opd_investigations' => $opd_investigations, - 'ordered_procedures' => $ordered_procedures, - 'procedures' => $procedures, - 'treatments' => $treatments, - 'all_diagnoses' => $all_diagnoses, - 'cons_notes' => $cons_notes, - 'triage' => $triage, - 'years' => $years, - 'symptoms' => $symptoms, - 'priority_signs' => $priority_signs, - 'emergent_signs' => $emergent_signs, - 'opd_investigations_date' => $opd_investigations_date, - 'ward_investigations_date' => $ward_investigations_date - ]; - // return view('patients::consultations/referral_notes_print', $data); - $pdf = SnappyPDF::loadView('patients::consultations/referral_notes_print', $data) - ->setOrientation('portrait') - ->setOption('margin-bottom', 7) - ->setOption('margin-top', 5) - ->setOption('footer-html', 'Stre@mline'); - - return $pdf->inline('Referral Notes' . date("y-m-d h:ia") . '.pdf'); - } - - public function get_outcome_slug($id) - { - $outcome = Outcome::find($id); - if ($outcome) { - return $outcome->slug; - } - - return ""; - } - - public function delete_consultation_clinical_notes($id) - { - $ward_doctor_notes = WardInpatientDetailedNote::find($id); - $ward_doctor_notes->delete(); - - flash('Notes have been deleted')->success(); - return redirect('in_patient_sheet'); - } - - public function update_consultation_clinical_notes(Request $request) - { - $consultation_clinical_notes = WardInpatientDetailedNote::find($request->id); - $consultation_clinical_notes->history_comments = $request->history_comments?? null; - $consultation_clinical_notes->investigation_and_management_plan_comments = $request->investigation_and_management_plan_comments?? null; - $consultation_clinical_notes->clinic_examination_comments = $request->clinic_examination_comments?? null; - $consultation_clinical_notes->updated_by = Auth::user()->id; - - if($consultation_clinical_notes->save()) return $consultation_clinical_notes->id; - else return 0; - } - -} diff --git a/docker/streamline-src/Modules/Patients/Http/Controllers/PatientController.php b/docker/streamline-src/Modules/Patients/Http/Controllers/PatientController.php deleted file mode 100755 index 2a1c6363..00000000 --- a/docker/streamline-src/Modules/Patients/Http/Controllers/PatientController.php +++ /dev/null @@ -1,1579 +0,0 @@ -middleware('auth'); - $this->middleware('permission:patient-list', ['only' => ['index', 'select']]); - $this->middleware('permission:patient-detail', ['only' => ['show']]); - $this->middleware('permission:patient-create', ['only' => ['create', 'store']]); - $this->middleware('permission:patient-edit', ['only' => ['edit', 'update']]); - $this->middleware('permission:patient-delete', ['only' => ['destroy']]); - } - - /** - * Display a listing of the resources - */ - public function index(): View - { - $patients = DB::table('patients')->whereNull('deleted_at') - ->orderBy('created_at', 'desc')->paginate(100); - - $categories = DB::table('patient_categories')->pluck("name", "id"); - $villages = DB::table('villages')->pluck("name", "id")->toArray(); - - $previous_ids = DB::table('patients')->whereNull('deleted_at') - ->distinct()->pluck('previous_id'); - $patient_numbers = DB::table('patients')->whereNull('deleted_at') - ->pluck('number'); - $full_names = DB::table('patients')->whereNull('deleted_at') - ->select(DB::raw('CONCAT(first_name, " ", last_name, " - ", number, " - (", phone, ")") AS full_name')) - ->pluck("full_name"); - - return view('patients::patients.index', compact('patients', 'categories', 'patient_numbers', 'villages', 'previous_ids', 'full_names')) - ->with('i', (request()->input('page', 1) - 1) * 5); - } - - /** - * Show the form for creating a new resource. - * - */ - public function create(): View - { - $occupations = Occupation::orderBy('name')->pluck('name', 'id')->toArray(); - $patient_categories = PatientCategory::where('available', 1)->orderby('name')->pluck('name', 'id')->toArray(); - $marital_statuses = MaritalStatus::pluck('name', 'id')->toArray(); - $religions = Religion::orderBy('name')->pluck('name', 'id')->toArray(); - $relationships = FamilyRelationship::orderBy('name')->pluck('name', 'id')->toArray(); - $patient_registration_fields = PatientRegistrationField::orderBy('name', 'asc')->get(); - $occupations = ['' => '- select -'] + $occupations; - $districts = []; - $religions = ['' => '- select -'] + $religions; - $relationships = ['' => '- select -'] + $relationships; - $dynamic_counties = []; - $dynamic_sub_counties = []; - $dynamic_parishes = []; - $countries = DB::table('countries')->pluck('name', 'id')->prepend('- Select country of origin - ', ''); - $companies = Company::orderBy('name')->pluck("name", "id")->toArray(); - $companies = ['' => '- select -'] + $companies; - - return view('patients::patients.create', compact('occupations', 'patient_categories', 'districts', 'marital_statuses', 'religions', 'relationships', 'dynamic_counties', 'dynamic_sub_counties', 'dynamic_parishes', 'countries', 'companies', 'patient_registration_fields')); - } - - /** - * Store a newly created resource in storage. - * - */ - public function store(Request $request) - { - - request()->validate([ - 'first_name' => 'required', - 'last_name' => 'required', - 'gender' => 'required', - 'date_of_birth' => 'required_without:age_in_years', - 'age_in_years' => 'required_without:date_of_birth', - /*'national_id' => 'max:15|unique:patients',*/ - 'patient_category' => 'required' - ]); - - $other_patients_info_array = [ - 'non_ugandan_foreigner_or_refugee' => $request->input('non_ugandan_foreigner_or_refugee'), - 'non_ugandan_national_id_no' => $request->input('non_ugandan_national_id_no'), - ]; - - - // check if a patient's national_id is in the system already.. - $patient_exists = Patient::where('national_id', $request->national_id)->pluck('national_id')->first(); - if (is_null($patient_exists)) { - $patient = new Patient; - $patient->first_name = $request->first_name; - $patient->last_name = $request->last_name; - $calculated_date_of_birth = null; - if (is_null($request->date_of_birth)) { - $age_in_years = $request->age_in_years; - $calculated_dob = \Carbon\Carbon::now()->subYears($age_in_years); - $calculated_date_of_birth = $calculated_dob->toDateString(); - $patient->date_of_birth = $calculated_date_of_birth; - } else { - $patient->date_of_birth = Carbon::createFromFormat('d/m/Y', $request->date_of_birth)->toDateString(); - } - - $patient->marital_status = $request->marital_status; - $patient->occupation_id = $request->occupation; - $patient->religion_id = $request->religion; - $patient->category_id = $request->patient_category; - $patient->company_id = $request->company; - $patient->citizenship = $request->citizenship; - $patient->country_id = $request->country_id; - $residence_array = explode(",", $request->residence); - $patient->district_id = $residence_array[4] ?? 0; - $patient->county_id = $residence_array[3] ?? 0; - $patient->subcounty_id = $residence_array[2] ?? 0; - $patient->parish_id = $residence_array[1] ?? 0; - $patient->village_id = $residence_array[0] ?? 0; - $patient->address_details = $request->residence; - $patient->gender = $request->gender; - $patient->next_of_kin = $request->next_of_kin; - $patient->next_of_kin_relationship = $request->next_of_kin_relationship; - $patient->phone_of_next_of_kin = removeSpaces($request->next_of_kin_phone); - $patient->phone = removeSpaces($request->phone); - $patient->alternative_phone = removeSpaces($request->alternative_phone); - $patient->national_id = $request->national_id; - $patient->phone_owner = $request->phone_owner; // problem - $patient->hospital_contact = $request->hospital_contact; - $patient->other_patients_info = !empty($other_patients_info_array) ? json_encode($other_patients_info_array) : '' ; - $patient->language = $request->language; - $patient->lc_one = $request->lc_one; - $patient->fingerprint_template = $request->fingerprint_template ?? NULL; - $patient->created_by = Auth::user()->id; - if (!empty($request->registration_field_values)) { - for ($i = 0; $i < count($request->registration_field_values); $i++) $registration_fields[$request->registration_field_names[$i]] = $request->registration_field_values[$i]; - $patient->registration_fields = json_encode($registration_fields); - } - - //year prefix - $currentYear = Carbon::now()->year; - $current_year_last_two_digits = substr($currentYear,-2); - $year_prefix = HospitalInformation::where('id', 1)->value('patient_number_year_prefix'); - - - if ($patient->save()) : - $prefix = DB::table('hospital_information')->where('id', 1)->value('patient_number_abbr'); - - $new_id = quadLimit($patient->id); - if($year_prefix == 1){ - $patient_number = $prefix . "-" . $current_year_last_two_digits . "-" . $new_id; - } - else{ - $patient_number = $prefix . "-" . $new_id; - } - - - DB::table('patients')->where('id', $new_id)->update(['number' => $patient_number]); // Updating the patient number - - flash('Patient with patient number ' . $patient_number . ' has been successfully registered')->success(); - - return redirect('/patient_episodes/set_patient_id/' . $patient->id); - else : - flash("There was an error")->error(); - return redirect()->back()->withInput(); - endif; - } else { - flash("Patient With This National ID Number is already Registered")->error(); - return redirect()->back()->withInput(); - } - } - - /** - * Display the specified resource. - * - * @param int $id - */ - public function show($id): View - { - $patient = Patient::withTrashed()->find($id); - $last_episode = PatientEpisode::where('id', $id)->orderBy('created_at', 'desc')->first(); - $country = null; - if($patient){ - $country = Country::find($patient->country_id); - } - - return view('patients::patients.show', compact('patient', 'last_episode','country')); - } - - /** - * Show the form for editing the specified resource. - * - * @param int $id - */ - public function edit($id): View - { - $patient = Patient::where(['id' => $id])->first(); - - if (is_null($patient->date_of_birth)) { - $dob = "01/01/2020"; - } else { - $dob = Carbon::parse($patient->date_of_birth)->format('d/m/Y'); - } - $episodes = PatientEpisode::distinct('patient_id')->pluck('patient_id')->toArray(); - $occupations = Occupation::orderBy('name')->pluck('name', 'id')->toArray(); - $patient_categories = PatientCategory::where('available', 1)->orderby('name')->pluck('name', 'id')->toArray(); - $districts = DB::table('districts')->whereNull('deleted_at')->orderBy('name')->pluck('name', 'id')->toArray(); - $religions = Religion::orderBy('name')->pluck('name', 'id')->toArray(); - $relationships = FamilyRelationship::orderBy('name')->pluck('name', 'id')->toArray(); - $patient_registration_fields = PatientRegistrationField::orderBy('name', 'asc')->get(); - $occupations = ['' => '- select -'] + $occupations; - $districts = ['' => '- select -'] + $districts; - $religions = ['' => '- select -'] + $religions; - $relationships = ['' => '- select -'] + $relationships; - $marital_statuses = DB::table('marital_statuses')->whereNull('deleted_at')->pluck('name', 'id'); - $countries = DB::table('countries')->whereNull('deleted_at')->pluck('name', 'id')->prepend('- Select country of origin - ', ''); - $companies = Company::orderBy('name')->pluck("name", "id")->toArray(); - $companies = ['' => '- select -'] + $companies; - - return view('patients::patients.edit', compact('patient', 'occupations', 'dob', 'patient_registration_fields', 'patient_categories', 'episodes', 'districts', 'marital_statuses', 'religions', 'relationships', 'countries', 'companies')); - } - - /** - * Update the specified resource in storage. - */ - public function update(Request $request, $id): RedirectResponse - { - - $other_patients_info_array = [ - 'non_ugandan_foreigner_or_refugee' => $request->input('non_ugandan_foreigner_or_refugee'), - 'non_ugandan_national_id_no' => $request->input('non_ugandan_national_id_no'), - ]; - - request()->validate( - [ - 'first_name' => 'required', - 'last_name' => 'required', - 'date_of_birth' => 'required_without:age_in_years', - 'age_in_years' => 'required_without:date_of_birth', - //'national_id' => 'max:15', - 'patient_category' => 'required' - ], - [ - 'first_name.required' => 'Please enter first name' - ] - ); - - $patient = Patient::find($id); - $patient->first_name = $request->first_name; - $patient->last_name = $request->last_name; - $calculated_date_of_birth = null; - if (is_null($request->date_of_birth)) { - $age_in_years = $request->age_in_years; - $calculated_dob = \Carbon\Carbon::now()->subYears($age_in_years); - $calculated_date_of_birth = $calculated_dob->toDateString(); - $patient->date_of_birth = $calculated_date_of_birth; - } else { - $patient->date_of_birth = Carbon::createFromFormat('d/m/Y', $request->date_of_birth)->toDateString(); - } - $patient->marital_status = $request->marital_status; - $patient->occupation_id = $request->occupation; - $patient->religion_id = $request->religion; - $patient->category_id = $request->patient_category; - $patient->company_id = $request->company; - $patient->citizenship = $request->citizenship; - $patient->country_id = $request->country_id; - /*=========*/ - // split the residence values - $residence_array = explode(",", $request->residence); - $patient->district_id = isset($residence_array[4]) ? $residence_array[4] : 0; - $patient->county_id = isset($residence_array[3]) ? $residence_array[3] : 0; - $patient->subcounty_id = isset($residence_array[2]) ? $residence_array[2] : 0; - $patient->parish_id = isset($residence_array[1]) ? $residence_array[1] : 0; - $patient->village_id = isset($residence_array[0]) ? $residence_array[0] : 0; - //for now put the residences string into address_details but ask douglas what it was meant for - $patient->address_details = $request->residence; - $patient->gender = $request->gender; - $patient->next_of_kin = $request->next_of_kin; - $patient->next_of_kin_relationship = $request->next_of_kin_relationship; - $patient->phone_of_next_of_kin = removeSpaces($request->next_of_kin_phone); - $patient->phone = removeSpaces($request->phone); - $patient->alternative_phone = removeSpaces($request->alternative_phone); - $patient->national_id = $request->national_id; - $patient->phone_owner = $request->phone_owner; - $patient->hospital_contact = $request->hospital_contact; - $patient->other_patients_info = !empty($other_patients_info_array) ? json_encode($other_patients_info_array) : '' ; - $patient->language = $request->language; - $patient->lc_one = $request->lc_one; - $patient->is_test_patient = $request->is_test_patient ?? 0; - if ($request->fingerprint_template) { - $patient->fingerprint_template = $request->fingerprint_template; - } - $patient->updated_by = Auth::user()->id; - if (!empty($request->registration_field_values)) { - for ($i = 0; $i < count($request->registration_field_values); $i++) $registration_fields[$request->registration_field_names[$i]] = $request->registration_field_values[$i]; - $patient->registration_fields = json_encode($registration_fields); - } - - /* ===== check if it was previously a main_dependant and patient category has changed then handle */ - $main_patient_to_dependants = null; - $does_previous_patient_category_have_threshold = does_patient_category_have_threshold($patient->category_id); - $does_new_patient_category_have_threshold = does_patient_category_have_threshold($request->patient_category); - $patient_is_a_dependant_of = patient_is_a_dependant_of($patient->id); - if ($does_previous_patient_category_have_threshold == true || !is_null($patient_is_a_dependant_of)) { - //the patient is on a patient dependants category if we go inside this "if" statement - if ($patient_is_a_dependant_of == $patient->id) { - //the patient is a main patient for dependants when we enter this "if" statement - $main_patient_to_dependants = \Streamline\Models\CategoryPatientDependant::where('main_patient_id', $patient->id)->first(); - } - } - /* ======== end of patient dependants hullabaloo =========== */ - - if ($patient->update()) { - if ($main_patient_to_dependants && $does_new_patient_category_have_threshold == false) { - //what happens to their existing invoices though ?? - $main_patient_to_dependants->delete(); - } - if ($main_patient_to_dependants && $does_new_patient_category_have_threshold == true) { - $main_patient_to_dependants->patient_category_id = $request->patient_category; - $main_patient_to_dependants->update(); - } - flash("Patient " . $request->first_name . " " . $request->last_name . " has been updated")->success(); - return redirect('patients/' . $patient->id); - } else { - flash("There was an error")->error(); - return redirect()->back()->withInput(); - } - } - - /** - * Remove the specified resource from storage. - */ - public function destroy($id) - { - $patient = Patient::find($id); - - if ($patient->delete()) : - flash("Patient has been deleted.")->success(); - return redirect('patients/'); - else : - return redirect()->back()->withInput(); - endif; - } - - /** - * Search/select a resource in storage. - */ - public function select(Request $request) - { - $patient_number = $request->number; - $first_name = $request->first_name; - $last_name = $request->last_name; - $national_id = $request->national_id; - $phone_number = $request->phone_number; - $subcounty = $request->subcounty_id; - $parish = $request->parish; - $village = $request->village; - $insurance_group = $request->insurance_group; - $patient_category = $request->patient_category; - - $filters = array(); - $subcounty_ids = array(); - $parish_ids = array(); - $village_ids = array(); - $insurance_group_ids = array(); - $patient_category_ids = array(); - $patients = array(); - $criteria = ''; - $searched = false; - - if (!empty($request->date_of_birth)) { - $searched = TRUE; - $birth_day = Carbon::createFromFormat('d/m/Y', $request->date_of_birth)->format('Y-m-d'); - - if (!empty($birth_day)) { - array_push($filters, ['date_of_birth', '=', $birth_day]); - $criteria .= 'Born (' . $request->date_of_birth . ') '; - } - } - - if (!empty($patient_number)) { - $searched = TRUE; - array_push($filters, ['number', 'LIKE', '%' . $patient_number . '%']); - $criteria .= 'Number (' . $patient_number . ') '; - } - if (!empty($first_name)) { - $searched = TRUE; - array_push($filters, ['first_name', 'LIKE', '%' . $first_name . '%']); - $criteria .= 'First name (' . $first_name . ') '; - } - if (!empty($last_name)) { - $searched = TRUE; - array_push($filters, ['last_name', 'LIKE', '%' . $last_name . '%']); - $criteria .= 'Last name (' . $last_name . ') '; - } - if (!empty($national_id)) { - $searched = TRUE; - array_push($filters, ['national_id', 'LIKE', '%' . $national_id . '%']); - $criteria .= 'National ID (' . $national_id . ') '; - } - - if (!empty($phone_number)) { - $searched = TRUE; - array_push($filters, ['phone', 'LIKE', '%' . $phone_number . '%']); - $criteria .= 'Phone Number (' . $phone_number . ') '; - } - - if (!empty($subcounty)) { - $searched = TRUE; - $subcounty_ids = DB::table('subcounties')->where('name', 'LIKE', '%' . $subcounty . '%')->pluck('id'); - $criteria .= 'Subcounty (' . $subcounty . ') '; - } - if (!empty($parish)) { - $searched = TRUE; - $parish_ids = DB::table('parishes')->where('name', 'LIKE', '%' . $parish . '%')->pluck('id'); - $criteria .= 'Parish (' . $parish . ') '; - } - if (!empty($village)) { - $searched = TRUE; - $village_ids = DB::table('villages')->where('name', 'LIKE', '%' . $village . '%')->pluck('id'); - $criteria .= 'Village (' . $village . ') '; - } - if (!empty($insurance_group)) { - $searched = TRUE; - $insurance_group_ids = DB::table('insurance_groups')->where('name', 'LIKE', '%' . $insurance_group . '%')->pluck('id'); - $criteria .= 'Insurance group (' . $insurance_group . ') '; - } - if (!empty($patient_category)) { - $searched = TRUE; - $patient_category_ids = DB::table('patient_categories')->where('name', 'LIKE', '%' . $patient_category . '%')->pluck('id'); - $criteria .= 'Category (' . $patient_category . ') '; - } - - if (!empty($filters)) { - $searched = TRUE; - if (!empty($subcounty_ids) || !empty($parish_ids) || !empty($village_ids) || !empty($insurance_group_ids) || !empty($patient_category_ids)) { - $patients = Patient::orderBy('first_name', 'asc') - ->where($filters) - ->whereIn('subcounty_id', $subcounty_ids) - ->orWhereIn('parish_id', $parish_ids) - ->orWhereIn('village_id', $village_ids) - ->orWhereIn('insurance_group', $insurance_group_ids) - ->orWhereIn('category_id', $patient_category_ids) - ->paginate(200); - } else { - $patients = Patient::orderBy('first_name', 'asc')->where($filters)->paginate(200); - } - } elseif (!empty($subcounty_ids) || !empty($parish_ids) || !empty($village_ids) || !empty($insurance_group_ids) || !empty($patient_category_ids)) { - $patients = Patient::orderBy('first_name', 'asc') - ->whereIn('subcounty_id', $subcounty_ids) - ->orWhereIn('parish_id', $parish_ids) - ->orWhereIn('village_id', $village_ids) - ->orWhereIn('insurance_group', $insurance_group_ids) - ->orWhereIn('category_id', $patient_category_ids) - ->paginate(200); - } - - $categories = DB::table('patient_categories') - ->pluck("name", "id"); - $marital_statuses = DB::table('marital_statuses') - ->pluck("name", "id"); - $occupations = DB::table('occupations') - ->pluck('name', 'id'); - - $patient_numbers = DB::table('patients') - ->orderBy('number') - ->distinct() - ->pluck('number'); - $first_names = DB::table('patients') - ->orderBy('first_name') - ->distinct() - ->pluck('first_name'); - $last_names = DB::table('patients') - ->orderBy('last_name') - ->distinct() - ->pluck('last_name'); - $national_ids = DB::table('patients') - ->orderBy('national_id') - ->distinct() - ->pluck('national_id'); - $insurance_groups = DB::table('insurance_groups') - ->orderBy('name') - ->distinct() - ->pluck('name'); - $patient_categories = DB::table('patient_categories') - ->orderBy('name') - ->distinct() - ->pluck('name'); - $subcounties = DB::table('subcounties') - ->orderBy('name') - ->distinct() - ->pluck('name'); - $parishes = DB::table('parishes') - ->orderBy('name') - ->distinct() - ->pluck('name'); - $villages = DB::table('villages') - ->orderBy('name') - ->distinct() - ->pluck('name'); - - if (count($patients) || $searched == TRUE) { - $categories = DB::table('patient_categories')->where('available', 1)->pluck("name", "id")->toArray(); - $marital_statuses = DB::table('marital_statuses')->pluck("name", "id")->toArray(); - $occupations = DB::table('occupations')->pluck('name', 'id')->toArray(); - - return view('patients::patients.selected', ['patient_count' => count($patients), 'criteria' => $criteria], compact('patients', 'categories', 'marital_statuses', 'occupations')); - } else { - return view('patients::patients.select', compact('subcounty_ids', 'categories', 'marital_statuses', 'occupations', 'patient_numbers', 'first_names', 'last_names', 'national_ids', 'insurance_groups', 'patient_categories', 'subcounties', 'parishes', 'villages')); - } - } - - /** - * Display a listing of the inactive resource(s). - */ - public function inactive() - { - $patientCount = Patient::get()->count(); - - $patients = Patient::onlyTrashed()->orderBy('id', 'desc')->paginate(20); - - $categories = PatientCategory::pluck("name", "id"); - $marital_statuses = MaritalStatus::pluck("name", "id"); - - if (is_null($patients)) { - flash()->error("There is no inactive patient"); - return redirect('/patients/'); - } else { - return view('patients::patients.inactive', ['PatientCount' => $patientCount], compact('patients', 'categories', "marital_statuses")); - } - } - - /** - * Activate the specified resource in storage. - */ - public function activate($id) - { - $patients = Patient::withTrashed()->where('id', $id)->get(); - if (!is_null($patients)) { - $patient = $patients->first(); - if ($patient->restore()) : - flash("Patient has been activated.")->success(); - return redirect('/patients/inactive'); - endif; - } - - return redirect()->back()->withInput(); - } - - public function update_patient_info($id) - { - $patient = Patient::find($id); - - if ($patient) { - $first_name = title_case($patient->first_name); - - $last_name = title_case($patient->last_name); - - $code = '

Patient Names: ' . $first_name . ' ' . $last_name . '

'; - - $code .= '

Patient Number: ' . $patient->number . '

'; - - $code .= '

Gender: ' . ($patient->gender == 1 ? "Male" : "Female") . '    Date of Birth: ' . streamline_date($patient->date_of_birth) . '

'; - - $code .= '

Phone Number: ' . $patient->phone . '    Next of Kin: ' . $patient->next_of_kin . ' (' . $patient->phone_of_next_of_kin . ')

'; - - $code .= '

Patient Category: ' . get_name($patient->category_id, 'id', 'name', 'patient_categories') . '

'; - - $code .= '

Village: ' . get_name($patient->village_id, 'id', 'name', 'villages') . '

'; - } else { - $code = '

Patient Not Found

'; - } - - return $code; - } - - public function search_residences(Request $request) - { - $data = []; - $counter = 0; - - if ($request->has('q')) { - $search = $request->q; - $districts = DB::table('districts')->whereNull('deleted_at')->where('name', 'LIKE', "%$search%")->get(); - $counties = DB::table('counties')->whereNull('deleted_at')->where('name', 'LIKE', "%$search%")->get(); - $subcounties = DB::table('subcounties')->whereNull('deleted_at')->where('name', 'LIKE', "%$search%")->get(); - $parish = DB::table('parishes')->whereNull('deleted_at')->where('name', 'LIKE', "%$search%")->get(); - $village = DB::table('villages')->whereNull('deleted_at')->where('name', 'LIKE', "%$search%")->get(); - - $districts_arr = DB::table('districts')->whereNull('deleted_at')->pluck('name', 'id')->toArray(); - $counties_arr = DB::table('counties')->whereNull('deleted_at')->pluck('name', 'id')->toArray(); - $subcounties_arr = DB::table('subcounties')->whereNull('deleted_at')->pluck('name', 'id')->toArray(); - $parish_arr = DB::table('parishes')->whereNull('deleted_at')->pluck('name', 'id')->toArray(); - - $counties_rel_arr = DB::table('counties')->whereNull('deleted_at')->pluck('district_id', 'id')->toArray(); - $subcounties_rel_arr = DB::table('subcounties')->whereNull('deleted_at')->pluck('county_id', 'id')->toArray(); - $parish_rel_arr = DB::table('parishes')->whereNull('deleted_at')->pluck('subcounty_id', 'id')->toArray(); - - if (count($village) > 0) { - // village with name found - foreach ($village as $value) { - $parish_id = $value->parish_id; - $parish_name = $parish_arr[$parish_id] ?? ''; - $subcounty_id = $parish_rel_arr[$parish_id] ?? 0; - $subcounty_name = $subcounties_arr[$subcounty_id] ?? ''; - $county_id = $subcounties_rel_arr[$subcounty_id] ?? 0; - $county_name = $counties_arr[$county_id] ?? ''; - $district_id = $counties_rel_arr[$county_id] ?? 0; - $district_name = $districts_arr[$district_id] ?? ''; - - $data[$counter]['ids'] = $value->id . "," . $parish_id . "," . $subcounty_id . "," . $county_id . "," . $district_id; - $data[$counter]['text'] = "Village: " . $value->name . " Parish: " . $parish_name . " Subcounty: " . $subcounty_name . " County: " . $county_name . " District: " . $district_name; - - $counter++; - } - } - - if (count($parish) > 0) { - // parish with name found - foreach ($parish as $value) { - $parish_name = $parish_arr[$value->id] ?? ''; - $subcounty_id = $parish_rel_arr[$value->id] ?? 0; - $subcounty_name = $subcounties_arr[$subcounty_id] ?? ''; - $county_id = $subcounties_rel_arr[$subcounty_id] ?? 0; - $county_name = $counties_arr[$county_id] ?? ''; - $district_id = $counties_rel_arr[$county_id] ?? 0; - $district_name = $districts_arr[$district_id] ?? ''; - - $data[$counter]['ids'] = 0 . "," . $value->id . "," . $subcounty_id . "," . $county_id . "," . $district_id; - $data[$counter]['text'] = "Parish: " . $parish_name . " Subcounty: " . $subcounty_name . " County: " . $county_name . " District: " . $district_name; - - $counter++; - } - } - - if (count($subcounties) > 0) { - // subcounties with name found - foreach ($subcounties as $value) { - $subcounty_name = $subcounties_arr[$value->id] ?? ''; - $county_id = $subcounties_rel_arr[$value->id] ?? 0; - $county_name = $counties_arr[$county_id] ?? ''; - $district_id = $counties_rel_arr[$county_id] ?? 0; - $district_name = $districts_arr[$district_id] ?? ''; - - $data[$counter]['ids'] = 0 . "," . 0 . "," . $value->id . "," . $county_id . "," . $district_id; - $data[$counter]['text'] = "Subcounty: " . $subcounty_name . " County: " . $county_name . " District: " . $district_name; - - $counter++; - } - } - - if (count($counties) > 0) { - // counties with name found - foreach ($counties as $value) { - $county_name = $counties_arr[$value->id] ?? ''; - $district_id = $counties_rel_arr[$value->id] ?? 0; - $district_name = $districts_arr[$district_id] ?? ''; - - $data[$counter]['ids'] = 0 . "," . 0 . "," . 0 . "," . $value->id . "," . $district_id; - $data[$counter]['text'] = "County: " . $county_name . " District: " . $district_name; - - $counter++; - } - } - - if (count($districts) > 0) { - // districts with name found - foreach ($districts as $value) { - // auto generate the rest of the variables - $district_name = $districts_arr[$value->id] ?? ''; - - $data[$counter]['ids'] = 0 . "," . 0 . "," . 0 . "," . 0 . "," . $value->id; - $data[$counter]['text'] = "District: " . $district_name; - - $counter++; - } - } - } - - return response()->json($data); - } - - public function add_company(Request $request) - { - $company = new Company; - $company->name = $request->company_name; - $company->contact = $request->company_contact; - $company->slug = $request->company_identifier; - $company->created_by = auth()->user()->id; - - try { - $company->save(); - return $company->id; - } catch (QueryException $e) { - flash("An error occurred")->error(); - return back()->withInput(); - } - } - - // add new country - public function add_country(Request $request) - { - - - - // $country = new Country; - // $country->name = $request->name; - // $country->created_by = auth()->user()->id; - - // try { - // $country->save(); - // return $country->id; - // } catch (QueryException $e) { - // $errorCode = $e->errorInfo[1]; - // if ($errorCode == 1062) { - // return response()->json(['error' => $e]); - // } - // } - - - // Check if the country already exists - $existingCountry = Country::where('name', $request->name)->first(); - if ($existingCountry) { - return response()->json(['error' => 'Country already exists'], 409); - } - - // Create a new Country instance - $country = new Country; - $country->name = $request->name; - $country->created_by = auth()->user()->id; - - try { - // Save the country and return the ID - $country->save(); - return $country->id; - } catch (QueryException $e) { - return response()->json(['error' => 'Database error occurred'], 500); - } - - - - } - - - public function quick_add_district_residence(Request $request) - { - $district = new District; - $district->name = $request->new_residence_district_name; - $district->created_by = auth()->user()->id; - - try { - $district->save(); - return $district->id; - } catch (QueryException $e) { - flash("An error occurred")->error(); - return back()->withInput(); - } - } - - public function quick_add_village_residence(Request $request) - { - $district_id = $request->residence_district_name; - - $village = new Village; - $village->name = $request->new_residence_village_name; - $village->parish_id = 0; //$request->parish_id; - $village->created_by = auth()->user()->id; - - try { - $village->save(); - return $village->id; - } catch (QueryException $e) { - flash("An error occurred")->error(); - return back()->withInput(); - } - } - - public function check_duplicate_patients(Request $request) - { - $result_count = 0; - $html_text = 0; - $patients = []; - - if (isset($request->first_name) && isset($request->last_name)) { - $patients_one = DB::table('patients') - ->where('first_name', 'LIKE', "%$request->first_name%") - ->where('last_name', 'LIKE', "%$request->last_name%") - ->get(["id", "first_name", "last_name", "number", "gender", "date_of_birth", "phone", "category_id"]); - - $patients_two = DB::table('patients') - ->where('first_name', 'LIKE', "%$request->last_name%") - ->where('last_name', 'LIKE', "%$request->first_name%") - ->get(["id", "first_name", "last_name", "number", "gender", "date_of_birth", "phone", "category_id"]); - - $patients = $patients_one->merge($patients_two); - - $result_count += count($patients); - } - - if (isset($request->phone)) { - $patients_phone = DB::table('patients') - ->where('phone', removeSpaces($request->phone)) - ->get(["id", "first_name", "last_name", "number", "gender", "date_of_birth", "phone", "category_id"]); - - if (count($patients) > 0) { - $patients = $patients->merge($patients_phone); - } else { - $patients = $patients_phone; - } - - $result_count += count($patients_phone); - } - - if ($result_count > 0) { - $html_text = ""; - - $html_text .= ""; - $html_text .= ""; - $html_text .= ""; - $html_text .= ""; - $html_text .= ""; - $html_text .= ""; - $html_text .= ""; - $html_text .= ""; - - $categories = PatientCategory::pluck("name", "id"); - - foreach ($patients as $patient) { - $html_text .= ""; - $html_text .= ""; - $html_text .= ""; - $html_text .= ""; - $html_text .= ""; - $html_text .= ""; - $html_text .= ""; - $html_text .= ""; - } - - $html_text .= "
Name Gender Age Phone Patient Category
" . $patient->first_name . " " . $patient->last_name . " (" . $patient->number . ")" . "" . (($patient->gender == 1) ? "Male" : "Female") . "" . get_patients_age($patient->date_of_birth) . "" . $patient->phone . "" . (isset($categories[$patient->category_id]) ? $categories[$patient->category_id] : "N/A") . " Select
"; - } - - return json_encode([ - "results_count" => $result_count, - "html" => $html_text - ]); - } - - public function search_patient_by_name_number(Request $request) - { - $data = []; - - if ($request->has('q')) { - $search = $request->q; - $data = DB::table('patients')->select("id", "first_name", "last_name", "number", "phone") - ->where('last_name', 'LIKE', "%$search%") - ->orWhere('first_name', 'LIKE', "%$search%") - ->orWhere('number', 'LIKE', "%$search%") - ->get(); - } - - return response()->json($data); - } - - public function possible_duplicate_patients($id) - { - $possible_duplicate_patients = possible_patient_record_duplicates($id); - $original_patient = Patient::find($id); - - $districts = DB::table('districts')->pluck('name', 'id'); - $counties = DB::table('counties')->pluck('name', 'id'); - $subcounties = DB::table('subcounties')->pluck('name', 'id'); - $parishes = DB::table('parishes')->pluck('name', 'id'); - $villages = DB::table('villages')->pluck('name', 'id'); - $occupations = DB::table('occupations')->pluck('name', 'id'); - $religions = DB::table('religions')->pluck('name', 'id'); - $relationships = DB::table('family_relations')->pluck('name', 'id'); - $last_episode = PatientEpisode::where('patient_id', $id)->orderBy('created_at', 'desc')->first(); - - return view('patients::patients.compare_patient_records', compact('original_patient', 'possible_duplicate_patients', 'districts', 'counties', 'subcounties', 'parishes', 'villages', 'occupations', 'religions', 'relationships', 'last_episode')); - } - - public function display_original_and_duplicate_patients(Request $request) - { - $patient_id = $request->patient_id; - - $patient = Patient::find($patient_id); - - $html_text = ""; - $html_text .= ""; - $html_text .= "first_name . "> " . $patient->first_name . ""; - $html_text .= ""; - - $html_text .= ""; - $html_text .= ""; - $html_text .= ""; - - $html_text .= ""; - $gender = $patient->gender == 1 ? "Male" : "Female"; - $html_text .= ""; - $html_text .= ""; - - $html_text .= ""; - $html_text .= ""; - $html_text .= ""; - - $html_text .= ""; - $html_text .= ""; - $html_text .= ""; - - $html_text .= ""; - $html_text .= ""; - $html_text .= ""; - - $html_text .= ""; - $html_text .= ""; - $html_text .= ""; - - $html_text .= ""; - $html_text .= ""; - $html_text .= ""; - - $html_text .= ""; - $html_text .= ""; - $html_text .= ""; - - $html_text .= ""; - $html_text .= ""; - $html_text .= ""; - - $html_text .= ""; - $html_text .= ""; - $html_text .= ""; - - $html_text .= "
All values from " . get_full_name($patient->id, "id", "first_name", "last_name", "patients") . "
" . $patient->last_name . "
" . $gender . "
" . get_patients_age($patient->date_of_birth) . "
" . $patient->phone . "
" . get_name($patient->category_id, "id", "name", "patient_categories") . "
" . get_name($patient->district_id, "id", "name", "districts") . "
" . get_name($patient->county_id, "id", "name", "counties") . "
" . get_name($patient->subcounty_id, "id", "name", "subcounties") . "
" . get_name($patient->parish_id, "id", "name", "parishes") . "
" . get_name($patient->village_id, "id", "name", "villages") . "
"; - - return json_encode([ - "html" => $html_text - ]); - } - - public function merge_records(Request $request) - { - $patient_id_one = (int)$request->original_id; - $patient_id_two = (int)$request->duplicate_id; - - //1.get the original and dupe patient ids - //2.the the original record with all selected fields to keep - //3.loop through the medical and finance tables updating the patient id. - //4.delete the duplicate - - $patient_ids_array = [$patient_id_one, $patient_id_two]; - $patient_id = min($patient_ids_array); - $patient_id_to_delete = max($patient_ids_array); - - $patient = Patient::find($patient_id); - $patient->first_name = $request->first_name; - $patient->last_name = $request->last_name; - $patient->date_of_birth = $request->dob; - $patient->gender = $request->gender; - $patient->phone = removeSpaces($request->phone); - $patient->category_id = $request->category_id; - $patient->district_id = $request->district_id; - $patient->county_id = $request->county_id; - $patient->subcounty_id = $request->subcounty_id; - $patient->parish_id = $request->parish_id; - $patient->village_id = $request->village_id; - $patient->updated_by = Auth::user()->id; - if ($patient->update()) { - - $delete_patient_record = Patient::find($patient_id_to_delete); - $delete_patient_record->delete(); - - //loop thru episodes - $patient_episodes = PatientEpisode::where('patient_id', $patient_id_to_delete)->get(); - if (count($patient_episodes) > 0) { - foreach ($patient_episodes as $episode) { - $episode->patient_id = $patient_id; - $episode->update(); - } - } - - //loop through triage - $patient_triage = \Streamline\Models\Triage::where('patient_id', $patient_id_to_delete)->get(); - if (count($patient_triage) > 0) { - foreach ($patient_triage as $triage) { - $triage->patient_id = $patient_id; - $triage->update(); - } - } - - //loop thru consultations - $patient_consultations = \Streamline\Models\Consultation::where('patient_id', $patient_id_to_delete)->get(); - if (count($patient_consultations) > 0) { - foreach ($patient_consultations as $consultation) { - $consultation->patient_id = $patient_id; - $consultation->update(); - } - } - - //loop thru treatment - $patient_treatments = \Streamline\Models\Treatment::where('patient_id', $patient_id_to_delete)->get(); - if (count($patient_treatments) > 0) { - foreach ($patient_treatments as $treatment) { - $treatment->patient_id = $patient_id; - $treatment->update(); - } - } - - //loop thru ordered invs - $patient_ordered_invs = \Streamline\Models\OrderedInvestigation::where('patient_id', $patient_id_to_delete)->get(); - if (count($patient_ordered_invs) > 0) { - foreach ($patient_ordered_invs as $ordered_invs) { - $ordered_invs->patient_id = $patient_id; - $ordered_invs->update(); - } - } - - //loop thru investigation results - $investigation_results = \Streamline\Models\InvestigationResults::where('patient_id', $patient_id_to_delete)->get(); - if (count($investigation_results) > 0) { - foreach ($investigation_results as $inv_results) { - $inv_results->patient_id = $patient_id; - $inv_results->update(); - } - } - - //loop thru ordered procedures - $patient_ordered_procedures = \Streamline\Models\OrderedProcedure::where('patient_id', $patient_id_to_delete)->get(); - if (count($patient_ordered_procedures) > 0) { - foreach ($patient_ordered_procedures as $ordered_procedures) { - $ordered_procedures->patient_id = $patient_id; - $ordered_procedures->update(); - } - } - - //loop thru ordered sundries - $patient_ordered_sundries = \Streamline\Models\OrderedSundry::where('patient_id', $patient_id_to_delete)->get(); - if (count($patient_ordered_sundries) > 0) { - foreach ($patient_ordered_sundries as $ordered_sundry) { - $ordered_sundry->patient_id = $patient_id; - $ordered_sundry->update(); - } - } - - //loop through ordered services - $patient_ordered_services = \Streamline\Models\OrderedService::where('patient_id', $patient_id_to_delete)->get(); - if (count($patient_ordered_services) > 0) { - foreach ($patient_ordered_services as $ordered_services) { - $ordered_services->patient_id = $patient_id; - $ordered_services->update(); - } - } - - //loop through inpatient info - $inpatient_info_records = \Streamline\Models\InpatientInfo::where('patient_id', $patient_id_to_delete)->get(); - if (count($inpatient_info_records) > 0) { - foreach ($inpatient_info_records as $inpatient_info) { - $inpatient_info->patient_id = $patient_id; - $inpatient_info->update(); - } - } - - //loop though inpatient bills - $inpatient_bills = \Streamline\Models\InpatientBill::where('patient_id', $patient_id_to_delete)->get(); - if (count($inpatient_bills) > 0) { - foreach ($inpatient_bills as $inpatient_bill) { - $inpatient_bill->patient_id = $patient_id; - $inpatient_bill->update(); - } - } - - //loop though ward bed stays - $ward_bed_stay = \Streamline\Models\WardBedStay::where('patient_id', $patient_id_to_delete)->get(); - if (count($ward_bed_stay) > 0) { - foreach ($ward_bed_stay as $bed_stay) { - $bed_stay->patient_id = $patient_id; - $bed_stay->update(); - } - } - - //loop though ward consultation and service - $ward_consultations_and_services = \Streamline\Models\WardConsultationsAndService::where('patient_id', $patient_id_to_delete)->get(); - if (count($ward_consultations_and_services) > 0) { - foreach ($ward_consultations_and_services as $ward_consultation) { - $ward_consultation->patient_id = $patient_id; - $ward_consultation->update(); - } - } - - //loop though ward extras - $ward_extras = \Streamline\Models\WardExtra::where('patient_id', $patient_id_to_delete)->get(); - if (count($ward_extras) > 0) { - foreach ($ward_extras as $ward_extra) { - $ward_extra->patient_id = $patient_id; - $ward_extra->update(); - } - } - - //loop though ward comments - $ward_comments = \Streamline\Models\WardInpatientSheetComment::where('patient_id', $patient_id_to_delete)->get(); - if (count($ward_comments) > 0) { - foreach ($ward_comments as $ward_comment) { - $ward_comment->patient_id = $patient_id; - $ward_comment->update(); - } - } - - //loop though ward investigation pricing - $ward_investigation_pricing = \Streamline\Models\WardInvestigationPricing::where('patient_id', $patient_id_to_delete)->get(); - foreach ($ward_investigation_pricing as $ward_inv_pricing) { - $ward_inv_pricing->patient_id = $patient_id; - $ward_inv_pricing->update(); - } - - //loop though ward procedures - $ward_procedures = \Streamline\Models\WardProcedure::where('patient_id', $patient_id_to_delete)->get(); - foreach ($ward_procedures as $ward_procedure) { - $ward_procedure->patient_id = $patient_id; - $ward_procedure->update(); - } - - //loop though ward sundries - $ward_sundries = \Streamline\Models\WardSundryDispensation::where('patient_id', $patient_id_to_delete)->get(); - foreach ($ward_sundries as $ward_sundry) { - $ward_sundry->patient_id = $patient_id; - $ward_sundry->update(); - } - - //loop though ward treatment - $ward_treatments = \Streamline\Models\WardTreatment::where('patient_id', $patient_id_to_delete)->get(); - foreach ($ward_treatments as $ward_treatment) { - $ward_treatment->patient_id = $patient_id; - $ward_treatment->update(); - } - - $ward_treatment_dispensations = \Streamline\Models\WardTreatmentDispensation::where('patient_id', $patient_id_to_delete)->get(); - foreach ($ward_treatment_dispensations as $ward_treatment_dispensation) { - $ward_treatment_dispensation->patient_id = $patient_id; - $ward_treatment_dispensation->update(); - } - - //loop through investigation deposits - $investigation_deposits = \Streamline\Models\InvestigationDeposit::where('patient_id', $patient_id_to_delete)->get(); - foreach ($investigation_deposits as $inv_deposit) { - $inv_deposit->patient_id = $patient_id; - $inv_deposit->update(); - } - - //loop through treatment deposits - $treatment_deposits = \Streamline\Models\TreatmentDeposits::where('patient_id', $patient_id_to_delete)->get(); - foreach ($treatment_deposits as $treatment_deposit) { - $treatment_deposit->patient_id = $patient_id; - $treatment_deposit->update(); - } - - //loop through service deposits - $service_deposits = \Streamline\Models\ServiceDeposit::where('patient_id', $patient_id_to_delete)->get(); - foreach ($service_deposits as $service_deposit) { - $service_deposit->patient_id = $patient_id; - $service_deposit->update(); - } - - //loop through procedure deposits - $procedure_deposits = \Streamline\Models\ProcedureDeposit::where('patient_id', $patient_id_to_delete)->get(); - foreach ($procedure_deposits as $procedure_deposit) { - $procedure_deposit->patient_id = $patient_id; - $procedure_deposit->update(); - } - - //loop through sundries deposits - $sundry_deposits = \Streamline\Models\SundryDeposit::where('patient_id', $patient_id_to_delete)->get(); - foreach ($sundry_deposits as $sundry_deposit) { - $sundry_deposit->patient_id = $patient_id; - $sundry_deposit->update(); - } - - //loop through patient category invoice - $patient_category_invoices = \Streamline\Models\PatientCategoryInvoice::where('patient_id', $patient_id_to_delete)->get(); - if (count($patient_category_invoices) > 0) { - foreach ($patient_category_invoices as $patient_category_invoice) { - $patient_category_invoice->patient_id = $patient_id; - $patient_category_invoice->update(); - } - } - - //loop through patient dependants incase they were category dependant - $does_patient_to_delete_category_have_threshold = does_patient_category_have_threshold(get_name($patient_id_to_delete, 'id', 'category_id', 'patients')); - $patient_is_a_dependant_of = patient_is_a_dependant_of($patient_id); - if ($does_patient_to_delete_category_have_threshold == true || !is_null($patient_is_a_dependant_of)) { - //the patient is on a patient dependants category if we go inside this "if" statement - $previous_main_dependant_to_delete = \Streamline\Models\CategoryPatientDependant::where('main_patient_id', $patient_id_to_delete)->first(); - if ($previous_main_dependant_to_delete) { - $previous_main_dependant_to_delete->main_patient_id = $patient_id; - $previous_main_dependant_to_delete->update(); - } - - $record_where_duplicate_patient_is_dependant = \Streamline\Models\CategoryPatientDependant::whereRaw('FIND_IN_SET(' . $patient_id_to_delete . ',dependant_patient_ids)')->first(); - if ($record_where_duplicate_patient_is_dependant) { - - $array_with_new_patient_id = []; - $array_where_patient_to_delete_is_dependant = explode(",", $record_where_duplicate_patient_is_dependant->dependant_patient_ids); - for ($i = 0; $i < count($array_where_patient_to_delete_is_dependant); $i++) { - $member = $array_where_patient_to_delete_is_dependant[$i]; - if ($array_where_patient_to_delete_is_dependant[$i] == $patient_id_to_delete) { - $member = $patient_id; - } - $array_with_new_patient_id[] = $member; - } - $record_where_duplicate_patient_is_dependant->dependant_patient_ids = implode(",", $array_with_new_patient_id); - $record_where_duplicate_patient_is_dependant->update(); - } - - $main_dependants_consumptions = \Streamline\Models\DependantsConsumption::where('main_patient_id', $patient_id_to_delete)->get(); - if (count($main_dependants_consumptions)) { - foreach ($main_dependants_consumptions as $main_patient_consumption) { - $main_patient_consumption->main_patient_id = $patient_id; - $main_patient_consumption->update(); - } - } - - $dependants_consumptions = \Streamline\Models\DependantsConsumption::where('dependant_patient_id', $patient_id_to_delete)->get(); - if (count($dependants_consumptions)) { - foreach ($dependants_consumptions as $consumption) { - $consumption->dependant_patient_id = $patient_id; - $consumption->update(); - } - } - } - - //loop through discounts - $discounts = \Streamline\Models\Discount::where('patient_id', $patient_id_to_delete)->get(); - if (count($discounts) > 0) { - foreach ($discounts as $discount_record) { - $discount_record->patient_id = $patient_id; - $discount_record->update(); - } - } - - // TODO Refactor this merge to be in a separate controller and remove repeated table throughs by using one-to-many relationships https://stackoverflow.com/questions/77837354/implementing-one-to-many-relationship-in-laravel-eloquent/77837508 - $tables = ['ward_inpatient_sheet_nurse_comments', 'patient_accounts_deposits', 'patient_dispensings', 'patient_accounts_refunds', 'prescription_errors', 'patient_messages_from_app', 'ward_investigation_pricings', 'patient_clinic_transfers', 'clinic_transfers', 'staff_performed_services', 'ward_inpatient_detailed_notes', 'patient_documents', 'patient_one_off_discounts', 'triage_nutrition', 'triage_news', 'surgeries', 'sundries_deposits', 'smart_triage', 'payrolls', 'patient_refunds', 'patient_account_consumptions', 'patient_appointments', 'phone_followup_patients', 'point_of_sale_records', 'cancelled_patient_opd_dispensations', 'procedure_deposits', 'cancel_patient_transactions', 'central_billing_deposits', 'chronic_patients', 'chi_deposits', 'debtors', 'debt_plan', 'family_account_consumptions', 'inpatient_attendant_passes', 'inpatient_ward_discounts', 'internal_ward_transfers', 'inpatient_sheet_audits', 'maternity_delivery_records', 'maternity_inpatients', 'mental_health_consultation', 'ordered_investigations', 'ordered_procedures']; - foreach ($tables as $table) { - $episodes = DB::table($table)->where('patient_id', $patient_id_to_delete)->get(); - foreach ($episodes as $episode) DB::table($table)->where('id', $episode->id)->update(['patient_id' => $patient_id]); - } - - $incoming_ward_charts = DB::table('incoming_ward_charts')->whereRaw('FIND_IN_SET(' . $patient_id_to_delete . ', patient_ids)')->get(); - foreach ($incoming_ward_charts as $incoming_ward_chart) { - $episode_ids = explode(',', $incoming_ward_chart->patient_ids); - foreach ($episode_ids as $key => $episode_id) if ($episode_id == $patient_id_to_delete) $episode_ids[$key] = $patient_id; - DB::table('incoming_ward_charts')->where('id', $incoming_ward_chart->id)->update(['patient_ids' => implode(',', $episode_ids)]); - } - - $category_patient_dependants = DB::table('category_patient_dependants')->whereRaw('FIND_IN_SET(' . $patient_id_to_delete . ', dependant_patient_ids)')->get(); - foreach ($category_patient_dependants as $category_patient_dependant) { - $episode_ids = explode(',', $category_patient_dependant->dependant_patient_ids); - foreach ($episode_ids as $key => $episode_id) if ($episode_id == $patient_id_to_delete) $episode_ids[$key] = $patient_id; - DB::table('category_patient_dependants')->where('id', $category_patient_dependant->id)->update(['dependant_patient_ids' => implode(',', $episode_ids)]); - } - - $main_patient_ids = DB::table('category_patient_dependants')->where('main_patient_id', $patient_id_to_delete)->get(); - foreach ($main_patient_ids as $main_patient_id) DB::table('category_patient_dependants')->where('id', $main_patient_id->id)->update(['main_patient_id' => $patient_id]); - - $family_members_ids = DB::table('family_accounts')->whereRaw('FIND_IN_SET(' . $patient_id_to_delete . ', family_members_ids)')->get(); - foreach ($family_members_ids as $family_members_id) { - $episode_ids = explode(',', $family_members_id->family_members_ids); - foreach ($episode_ids as $key => $episode_id) if ($episode_id == $patient_id_to_delete) $episode_ids[$key] = $patient_id; - DB::table('family_accounts')->where('id', $family_members_id->id)->update(['family_members_ids' => implode(',', $episode_ids)]); - } - - $family_head_ids = DB::table('family_accounts')->where('family_head_id', $patient_id_to_delete)->get(); - foreach ($family_head_ids as $family_head_id) DB::table('family_accounts')->where('id', $family_head_id->id)->update(['family_head_id' => $patient_id]); - - // update the session ids with the remaining one - session()->put('patient_id', $patient_id); - - flash("Records have been merged")->success(); - return redirect('/possible_duplicate_patients/' . $patient_id); - } - - flash("Oops. Merge has failed. Contact your system admin")->error(); - return redirect()->back()->withInput(); - } - - public function view_dna_patient_demographic(Request $request) - { - $patient_id = $request->patient_id; - - $patient = Patient::withTrashed()->find($patient_id); - - $code = ""; - $x = 1; - - if ($patient) { - $code .= ""; - $code .= ""; - $code .= "Name:"; - $code .= ""; - $code .= ""; - $code .= insurance_flag($patient->id); - $code .= ""; - $code .= ""; - $code .= "Number:"; - $code .= ""; - $code .= ""; - $code .= $patient->number; - $code .= ""; - $code .= ""; - $code .= ""; - $code .= ""; - $code .= "Patient Category"; - $code .= ""; - $code .= ""; - $code .= get_name($patient->category_id, "id", "name", "patient_categories"); - $code .= ""; - $code .= ""; - $code .= "Phone Number"; - $code .= ""; - $code .= ""; - $code .= $patient->phone; - $code .= ""; - $code .= ""; - } else { - $code .= "

No record in the system

"; - } - - return $code; - } - - public function delete_patient_with_reason(Request $request) - { - - $patient = Patient::findOrFail($request->patient_id); - $patient->deleted_by = auth()->user()->id; - $patient->update(); - - - $patient_deactivation_reasons = new \Streamline\Models\PatientDeactivationReason; - $patient_deactivation_reasons->patient_id = $request->patient_id; - $patient_deactivation_reasons->reason = $request->patient_deactivation_reasons; - $patient_deactivation_reasons->save(); - - if ($patient_deactivation_reasons->save() && $patient->delete()) { - flash("Patient has been deleted.")->success(); - return 1; - } else { - return 0; - } - } - - public function search(Request $request) - { - $patient_number_search = $request->number; - $village_search = $request->village; - $previous_id_search = $request->previous_id; - $full_name_search = $request->full_name; - - $criteria = ""; - $filters = []; - - if ($patient_number_search) { - $filters[] = ['number', 'LIKE', '%' . $patient_number_search . '%']; - $criteria .= 'Number (' . $patient_number_search . ') '; - } - - if ($previous_id_search) { - $filters[] = ['previous_id', 'LIKE', '%' . $previous_id_search . '%']; - $criteria .= 'Previous Number (' . $previous_id_search . ') '; - } - - if ($full_name_search) { - $split_full_name_array = explode(' ', $full_name_search); - - if (is_array($split_full_name_array)) { - $first_name_from_split = $split_full_name_array[0] ?? ""; - $last_name_from_split = $split_full_name_array[1] ?? ""; - $patient_number_from_split = count($split_full_name_array) > 2 ? array_slice($split_full_name_array, -3)[0] : ''; - - //just only use the patient number from the full name submitted - if ($patient_number_from_split != "") { - $filters[] = ['number', 'LIKE', '%' . $patient_number_from_split . '%']; - $criteria .= 'Number (' . $patient_number_from_split . ') '; - } else { - $filters[] = ['first_name', 'LIKE', '%' . $first_name_from_split . '%']; - $filters[] = ['last_name', 'LIKE', '%' . $last_name_from_split . '%']; - $criteria .= 'Name (' . $full_name_search . ') '; - } - } else { - //just only use the patient number from the full name submitted - $filters[] = ['first_name', 'LIKE', '%' . $full_name_search . '%']; - $criteria .= 'Name (' . $full_name_search . ') '; - } - } - - if ($village_search) { - $village_id = DB::table('villages')->where(['name' => $village_search])->pluck('id')->first(); - if (!empty($village_id)) { - $filters[] = ['village_id', 'LIKE', '%' . $village_id . '%']; - $criteria .= 'Village (' . $village_search . ') '; - } - } - - if (empty($criteria)) : - $criteria = 'No results found for search'; - $patients = DB::table('patients')->whereNull('deleted_at') - ->orderBy('created_at', 'desc')->paginate(100); - else : - $patients = DB::table('patients')->whereNull('deleted_at')->where($filters) - ->orderBy('created_at', 'desc')->paginate(100); - endif; - - $categories = DB::table('patient_categories')->pluck("name", "id"); - $villages = DB::table('villages')->pluck("name", "id")->toArray(); - - $previous_ids = DB::table('patients')->whereNull('deleted_at') - ->distinct()->pluck('previous_id'); - $patient_numbers = DB::table('patients')->whereNull('deleted_at') - ->pluck('number'); - $full_names = DB::table('patients')->whereNull('deleted_at') - ->select(DB::raw('CONCAT(first_name, " ", last_name, " - ", number, " - (", phone, ")") AS full_name')) - ->pluck("full_name"); - - return view('patients::patients.index', compact('patients', 'categories', 'patient_numbers', 'villages', 'previous_ids', 'full_names', 'criteria')) - ->with('i', (request()->input('page', 1) - 1) * 5); - } - - public function get_fingerprint($id) - { - $patient = DB::table('patients')->where('id', $id)->first(); - - if ($patient && $patient->fingerprint_template) { - return $patient->fingerprint_template; - } else { - return "0"; - } - } - - public function fetch_fingerprint_from_scanner() - { - $response = Http::get('http://localhost:13124/cams/fp-scanner/capture?sendimage=1&apikey=' . get_fingerprint_key()); - - $scanner_response = json_decode($response, true); - - $template = $scanner_response["ApiRequestInfo"]["OperationData"]["Signature"][0]["Template"]; - $pngImage = $scanner_response["ApiRequestInfo"]["OperationData"]["Signature"][0]["Image"]; - $error_code = $scanner_response["ScannerError"]["errorCode"]; - $error_message = $scanner_response["ScannerError"]["errorString"]; - - return json_encode([ - "template" => $template, - "image" => $pngImage, - "error_code" => $error_code, - "error_message" => $error_message, - ]); - } - - public function compare_fingerprint_from_scanner(Request $request) - { - $fingerprint_template = $request->fingerprint_template; - $saved_fingerprint_template = $request->saved_fingerprint_template; - - $response = Http::get('http://localhost:13124/cams/fp-scanner/compare?apikey=' . get_fingerprint_key() . '&tmpl1=' . $fingerprint_template . '&tmpl2=' . $saved_fingerprint_template); - - $scanner_response = json_decode($response, true); - - $score = $scanner_response["ApiRequestInfo"]["OperationData"]["Score"]; - $error_code = $scanner_response["ScannerError"]["errorCode"]; - $error_message = $scanner_response["ScannerError"]["errorString"]; - - return json_encode([ - "score" => $score, - "error_code" => $error_code, - "error_message" => $error_message, - ]); - } - - public function patient_cards(Request $request){ - $patients = $this->patientCardsService->getPatientCardsToday($request); - - if ($patients->isEmpty()) { - $patients = new LengthAwarePaginator([], 0, 200); - } else { - $patients = $patients->toQuery()->paginate(200); - } - - return view('patients::patients/patient_cards_list', compact('patients')); - - } - - public function search_patient_cards_to_print(Request $request){ - $patients_data = $this->patientCardsService->searchPatientCardsToPrint($request); - $searched_data_string = $patients_data['searched_data_string']; - $patients = $patients_data['patients']; - if ($patients->isEmpty()) { - $patients = new LengthAwarePaginator([], 0, 200); - } else { - $patients = $patients->toQuery()->paginate(200); - } - - return view('patients::patients/searched_patient_cards', compact('patients','searched_data_string')); - } - - - public function patient_card($id) - { - $patient = Patient::find($id); - $hospital_details = HospitalInformation::first(); - - $data = [ - 'hospitalInfo' => $hospital_details, - 'patient' => $patient - ]; - - //dompdf - $pdf_card = new DomPDF(); - $html = view('patients::patients/patient_card',compact('data'))->render(); - $pdf_card = DomPDF::loadHtml($html); - $pdf_card->setPaper('A4', 'potrait'); - $options = [ - 'isPhpEnabled' => true, - 'isHtml5ParserEnabled' => true, - // Add more options - ]; - - DomPDF::setOptions($options); - - return $pdf_card->stream('Patient Card.pdf'); - } - - public function print_patients_cards(Request $request){ - - $patient_cards = $this->patientCardsService->printPatientCardsList($request); - $hospital_details = HospitalInformation::first(); - - $pdf_cards = new DomPDF(); - $html = view('patients::patients/print_patients_cards',compact('patient_cards','hospital_details'))->render(); - $pdf_cards = DomPDF::loadHtml($html); - $pdf_cards->setPaper('A4', 'potrait'); - $options = [ - 'isPhpEnabled' => true, - 'isHtml5ParserEnabled' => true, - // Add more options - ]; - DomPDF::setOptions($options); - return $pdf_cards->stream('Patient Cards.pdf', array('Attachment' => false)); - - } - - -} diff --git a/docker/streamline-src/Modules/Patients/Http/Controllers/PatientEpisodeController.php b/docker/streamline-src/Modules/Patients/Http/Controllers/PatientEpisodeController.php deleted file mode 100755 index 599c2733..00000000 --- a/docker/streamline-src/Modules/Patients/Http/Controllers/PatientEpisodeController.php +++ /dev/null @@ -1,1718 +0,0 @@ -middleware('auth'); - } - - /** - * Display a listing of the resource. - * - * @return \Illuminate\Http\Response - */ - public function index() - { - - $patient_id = session()->get('patient_id'); - - $patient_episodes = DB::table('patient_episodes') - ->where(['patient_id' => $patient_id]) - ->whereNull('deleted_at') - ->orderBy('id', 'desc') - ->get(); - $patient = Patient::where(['id' => $patient_id])->first(); - $categories = DB::table('patient_categories')->where('available', 1)->pluck("name", "id"); - $marital_statuses = DB::table('marital_statuses')->pluck("name", "id"); - $diagnoses = DB::table('diagnoses')->where('available', 1)->pluck("name", "id"); - $clinics = DB::table('clinics')->pluck("name", "id")->prepend('- select -', ''); - $relationships = DB::table('family_relations')->pluck('name', 'id'); - $occupations = DB::table('occupations')->pluck('name', 'id'); - $patient_categories = DB::table('patient_categories')->where('available', 1)->pluck('name', 'id'); - $districts = DB::table('districts')->pluck('name', 'id'); - $counties = DB::table('counties')->pluck('name', 'id'); - $subcounties = DB::table('subcounties')->pluck('name', 'id'); - $parishes = DB::table('parishes')->pluck('name', 'id'); - $villages = DB::table('villages')->pluck('name', 'id'); - $drug_categories = DrugCategory::orderBy('name', 'asc')->get(); - $documents = PatientDocument::where('patient_id', $patient_id)->orderBy('created_at', 'desc')->get(); - $known_patient_allergies = Allergy::where('patient_id', $patient_id)->orderBy('created_at', 'desc')->take(2)->get(); - $known_patient_alerts = Alert::where('patient_id', $patient_id)->orderBy('created_at', 'desc')->take(2)->get(); - $drug_categories_array = DB::table('drug_categories')->pluck('name', 'id'); - //$special_clinics = DB::table('clinics')->where('slug', '!=', 'general')->pluck("name", "id")->prepend('GENERAL OPD', 'general_opd')->prepend('- select -', ''); - $special_clinics = DB::table('clinics')->where('available', 1)->whereNull('deleted_at')->orderBy('name', 'asc')->pluck("name", "id")->prepend('- select -', ''); - $wards = DB::table('wards')->where('available', 1)->whereNull('deleted_at')->pluck("name", "id")->prepend('- select -', ''); - $users_collection = DB::table('users')->orderBy("first_name", "asc")->select("id")->get()->toArray(); - $users_array = []; - foreach ($users_collection as $value) { - $user = User::find($value->id); - if (!is_null($user)) { - if ($user->hasRole('Doctors') || $user->hasRole('Doctor')) { - $consultation_records = DB::table('services') - ->join('staff_payment_configurations', 'staff_payment_configurations.item_id', '=', 'services.id') - ->where('services.item_type', 'Consultation') - ->where('staff_payment_configurations.user_id', $value->id) - ->where('staff_payment_configurations.item_category', 3) - ->whereNull('staff_payment_configurations.deleted_at') - ->orderBy('staff_payment_configurations.created_at', 'asc') - ->select('services.*') - ->get(); - - foreach ($consultation_records as $record) { - - $price_list_id = is_patient_category_attached_to_price_list($patient_id); - if ($price_list_id) { - $users_consultation_fee = get_price_list_category_price($price_list_id, 6, $record->id); - } else { - $users_consultation_fee = $record->non_insured_price; - } - - //concatnate the service_record_id with the users id to form the key for the array - $users_array[$record->id . "__" . $value->id] = get_full_name($value->id, 'id', 'first_name', 'last_name', 'users') . " (" . $record->name . " Fee: " . ugandan_shillings($users_consultation_fee) . ")"; - } - } - } - } - $users_array = ['' => '- select -'] + $users_array; - - return view('patients::patient_episodes.index', compact('patient', 'clinics', 'relationships', 'occupations', 'patient_categories', 'diagnoses', 'patient_episodes', 'categories', 'marital_statuses', 'districts', 'counties', 'subcounties', 'parishes', 'villages', 'drug_categories', 'documents', 'known_patient_allergies', 'known_patient_alerts', 'drug_categories_array', 'special_clinics', 'wards', 'users_array')); - } - - /** - * Show the form for creating a new resource. - * - */ - public function create() - { - // - } - - /** - * Store a newly created resource in storage. - * - */ - public function store(Request $request) - { - // - } - - /** - * Display the specified resource. - * - */ - public function show($id) - { - // - } - - /** - * Show the form for editing the specified resource. - * - */ - public function edit($id) - { - // - } - - public function update(Request $request, $id) - { - /* Update Claim Number */ - $episode = PatientEpisode::find($id); - $episode->claim_number = $request->claim_number; - $episode->save(); - if (session()->get('edit_claim_number') == 'patient_home') { - return redirect()->route('patient_episodes.index'); - } else { - return redirect()->route('patient_finance.home'); - } - } - - /** - * Remove the specified resource from storage. - * - */ - public function destroy($id) - { - // - } - - /** - * Create new episode for a patient. - * - */ - public function create_episode(Request $request) - { - $logged_in_user_id = Auth()->user()->id; - $episode = new PatientEpisode; - - $episode->patient_id = $request->patient_id; - $episode->clinic_id = get_default_hospital_clinic(); - $episode->created_by = $logged_in_user_id; - $episode->updated_by = $logged_in_user_id; - - try { - $episode->save(); - flash("A new episode has been saved")->success(); - - // check where the function was called from and return there - if (isset($request->is_from_finance)) { - // return to finance home - return redirect('/patient_finance/home'); - } else { - // return to normal patient home - return redirect('/patient_episodes/'); - } - } catch (QueryException $e) { - flash("An error occurred")->error(); - return back()->withInput(); - } - } - - /** - * Setup patient session using id. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function set_patient_id($id) - { - session()->put('patient_id', $id); - - return redirect('/patient_episodes/'); - } - - /** - * Pathfinder for all patient episode routes. - * - * @param int $id - * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector - */ - public function route_patient_episode(Request $request) - { - //set session for episode_id - session()->put('episode_id', $request->episode_id); - $is_patient_allowed_to_do_consultation = $this->is_patient_allowed_to_have_consultation(session()->get('patient_id'), $request->episode_id); - - switch ($request->submit) { - case 'triage': - session()->put('triage_without_etat', 0); - return redirect('/triage/'); - case 'triage_without_etat': - session()->put('triage_without_etat', 1); - return redirect('/triage/'); - case 'investigations': - return redirect('/investigations/investigations_review'); - case 'consultation': - if ($is_patient_allowed_to_do_consultation == false) { - session()->put('consultation_not_paid', 'consultation_not_paid'); - return redirect()->back()->withInput(); - } - session()->put('consultation_with_notes', 0); - return redirect('/consultation/route'); - case 'consultation_with_notes': - if ($is_patient_allowed_to_do_consultation == false) { - session()->put('consultation_not_paid', 'consultation_not_paid'); - return redirect()->back()->withInput(); - } - session()->put('consultation_with_notes', 1); - return redirect('/consultation/route'); - case 'procedure': - return redirect('/order_procedures'); - case 'sundries': - return redirect('/order_sundries'); - case 'create_anaesthetics': - return redirect('anaesthetics/create'); - case 'create_surgery': - return redirect('theatre_surgery/create'); - case 'anaesthetics_history': - return redirect('anaesthetics/history'); - case 'surgery_index': - return redirect('theatre_surgery'); - case 'inpatient-sheet-button': - case 'maternity_summary': - return redirect('in_patient_sheet'); - case 'inpatient_billing': - return redirect('inpatient_billing'); - case 'patient_document': - return redirect('patient_documents/create'); - case 'death_report_btn': - return redirect('reports/nira/death'); - case 'drug_refill': - session()->forget('alter_episode_id'); - session()->forget('alter_patient_id'); - return redirect('drug_refill'); - case 'services': - return redirect('order_services'); - case 'edit_claim_number': - session()->put(['edit_claim_number' => 'patient_home']); - return redirect('edit_claim_number'); - case 'prescription': - session()->forget('alter_episode_id'); - session()->forget('alter_patient_id'); - return redirect('/prescriptions/create/'); - case 'record_all_items': - return redirect('record_staff_service_performance'); - case 'maternity_admission': - return redirect('maternity_inpatient_sheet'); - case 'delivery_record': - return redirect('maternity_delivery_record'); - case 'birth_report': - return redirect('/reports/nira/birth'); - case 'inpatient_attendant_pass': - return redirect('inpatient_attendant_pass'); - case 'main_exam': - return redirect('/eye_clinic/main_exam_route'); - case 'base_refraction_exam': - return redirect('/eye_clinic/base_exam_refraction'); - case 'eye_glasses': - return redirect('/opticals/order'); - case 'treatment_sheet': - session()->put(['treatment_sheet_route' => 'patient_home']); - return redirect('treatment_sheet/view'); - default: - return redirect('/patient_episodes/'); - } - } - - public function edit_claim_number() - { - $episode_id = session()->get('episode_id'); - $episode = PatientEpisode::find($episode_id); - return view('patients::patient_episodes.edit_claim_number', compact('episode', 'episode_id')); - } - - public function internal_clinic_transfer($id) - { - // get triage id - $triage = Triage::where('episode_id', $id)->first(); - $consultation = Consultation::where('episode_id', $id)->first(); - $episode_details = PatientEpisode::find($id); - - if ($triage) { - if ($consultation) { - return $triage->id . "," . $triage->clinic_allocation . "," . get_name($triage->clinic_allocation, 'id', 'name', 'clinics') . "," . $consultation->consultation_done_by . "," . $triage->patient_id; - } - return $triage->id . "," . $triage->clinic_allocation . "," . get_name($triage->clinic_allocation, 'id', 'name', 'clinics') . "," . 0 . "," . $triage->patient_id; //no doctor was allocated so it is zero - } elseif ($episode_details && !is_null($episode_details->clinic_id)) { - if ($consultation) { - return 0 . "," . $episode_details->clinic_id . "," . get_name($episode_details->clinic_id, 'id', 'name', 'clinics') . "," . $consultation->consultation_done_by . "," . $episode_details->patient_id; - } - return 0 . "," . $episode_details->clinic_id . "," . get_name($episode_details->clinic_id, 'id', 'name', 'clinics') . "," . 0 . "," . $episode_details->patient_id; - } else { - return 0; - } - } - - public function save_internal_clinic_transfer(Request $request) - { - - $transfered_to_doctor = null; - $transfered_from_doctor = null; - $allocated_service_id = null; - $patient_id = $request->patient_id; - $episode_id = $request->episode_id; - - if ($request->transfer_from_doctor) { - $old_services_id_with_user_id = $request->transfer_from_doctor; - $old_services_id_with_user_id_array = explode("__", $old_services_id_with_user_id); // ["service_id", "user_id"] - $old_allocated_service_id = $old_services_id_with_user_id_array[0]; - $transfered_from_doctor = $old_services_id_with_user_id_array[1]; - } - - if ($request->transfer_to_doctor) { - $services_id_with_user_id = $request->transfer_to_doctor; - $services_id_with_user_id_array = explode("__", $services_id_with_user_id); // ["service_id", "user_id"] - $allocated_service_id = $services_id_with_user_id_array[0]; - $transfered_to_doctor = $services_id_with_user_id_array[1]; - } - - $transfer = new PatientClinicTransfers; - $transfer->patient_id = $patient_id; - $transfer->episode_id = $episode_id; - $transfer->old_clinic = $request->old_clinic; - $transfer->new_clinic = $request->new_clinic; - $transfer->old_doctor_id = $transfered_from_doctor; - $transfer->new_doctor_id = $transfered_to_doctor; - $transfer->created_by = Auth()->user()->id; - - $episode = PatientEpisode::find($request->episode_id); - $episode->clinic_id = $request->new_clinic; - - if ($request->triage_id != 0) { - $triage = Triage::find($request->triage_id); - $triage->clinic_allocation = $request->new_clinic; - $triage->update(); - } - - if ($request->transfer_to_doctor) { - $consultation = Consultation::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first(); - if ($consultation) { - // first, check if there is a previously ordered service attached to current doctor - $already_ordered_service = OrderedService::where('performed', 1) - ->where('patient_id', $patient_id) - ->where('episode_id', $episode_id) - ->where('service_id', $consultation->consultation_service_id)->first(); - - if ($already_ordered_service) { - // check whether this has been paid for - if ($already_ordered_service->payment_status == 1) { - return 2; - } - - // otherwise, go on and delete and also remove the performance fee - StaffPerformedService::where('id', $already_ordered_service->performed_id)->delete(); - $already_ordered_service->delete(); - } - - $consultation->consultation_done_by = $transfered_to_doctor; - $consultation->consultation_service_id = $allocated_service_id; - $consultation->update(); - } else { - $consultation_record = new Consultation; - $consultation_record->patient_id = $patient_id; - $consultation_record->episode_id = $episode_id; - $consultation_record->consultation_done_by = $transfered_to_doctor; - $consultation_record->consultation_service_id = $allocated_service_id; - $consultation_record->created_by = auth()->user()->id; - $consultation_record->save(); - - // create new ordered service record - $service_performed_id = record_staff_that_has_performed_the_service( - $patient_id, - $episode_id, - 3, - $allocated_service_id, - 0, - $request->transfer_to_doctor - ); - - $service_order = new OrderedService; - $service_order->patient_id = $patient_id; - $service_order->episode_id = $episode_id; - $service_order->service_id = $allocated_service_id; - $service_order->quantity = 1; - $service_order->performed = 1; - $service_order->performed_id = $service_performed_id; - $service_order->created_by = auth()->user()->id; - $service_order->updated_by = auth()->user()->id; - $service_order->save(); - - $episode->consultation_id = $consultation_record->id; - } - } - - if ($transfer->save() && $episode->update()) { - return 1; - } else { - return 0; - } - } - - public function select_patient_create_session_variables(Request $request) - { - if (isset($request->ward_id)) { - session()->put(['ward_id' => $request->ward_id]); - session()->put(['date' => $request->date]); - } - - if (isset($request->is_appointment_complete) && $request->is_appointment_complete == 1) { - $appointment = PatientAppointment::find($request->appointment_id); - - // reassign the appointment_fulfilled to 1 - $appointment->appointment_fulfilled = 1; - $appointment->updated_by = Auth()->user()->id; - $appointment->save(); - } - } - - public function create_special_clinic_episode(Request $request) - { - $clinic_id = $request->special_clinic_id; - - $last_inserted_id = 0; - $logged_in_user_id = auth()->user()->id; - $episode = new PatientEpisode; - - $episode->patient_id = $request->patient_id; - $episode->clinic_id = $clinic_id; - $episode->created_by = $logged_in_user_id; - $episode->updated_by = $logged_in_user_id; - - try { - $episode->save(); - $last_inserted_id = $episode->id; - $clinic_name = get_name($clinic_id, "id", "name", "clinics"); - - session()->put(['episode_id' => $last_inserted_id]); - - flash("Patient has been allocated to " . $clinic_name)->success(); - - $clinic_slug = get_name($clinic_id, "id", "slug", "clinics"); - if ($clinic_slug == "art") { - //return redirect("hiv_menu"); - } - - if ($clinic_slug == "diabetes") { - //return redirect('diabetes_clinic/clinic_registration'); - } - - if ($clinic_slug == "ante_natal") { - //return redirect('ante_natal_clinic_menu'); - } - - if ($clinic_slug == "mental_health") { - $is_mental_health_clinic = true; - session()->put(['episode_id' => $last_inserted_id]); - - session()->put(['is_mental_health_clinic' => 1]); - //return redirect('consultation/route'); - } - - return redirect('/patient_episodes/'); - } catch (QueryException $e) { - flash("An error occurred")->error(); - return back()->withInput(); - } - } - - public function create_episode_with_ward(Request $request) - { - $last_inserted_id = 0; - $logged_in_user_id = auth()->user()->id; - $episode = new PatientEpisode; - - $episode->patient_id = $request->patient_id; - $episode->clinic_id = get_default_hospital_clinic(); - $episode->created_by = $logged_in_user_id; - $episode->updated_by = $logged_in_user_id; - $ward_id = $request->admission_ward_id; - $admitted_on = $request->ward_admission_date; //Carbon::createFromFormat('d/m/Y', $request->ward_admission_date)->toDateString(); - $ward_name = get_name($ward_id, 'id', 'name', 'wards'); - try { - $episode->save(); - $last_inserted_id = $episode->id; - - session()->put(['episode_id' => $last_inserted_id]); - - // Admit patient in ward - $inpatient = new InpatientInfo; - $inpatient->patient_id = $request->patient_id; - $inpatient->episode_id = $last_inserted_id; - $inpatient->admitted_on = $admitted_on; - $inpatient->ward_id = $ward_id; - $inpatient->created_by = auth()->user()->id; - $inpatient->created_at = Carbon::now(); - $inpatient->save(); - - flash("Patient admitted in " . $ward_name)->success(); - return redirect('/patient_episodes/'); - } catch (QueryException $e) { - flash("An error occurred")->error(); - return back()->withInput(); - } - } - - public function admit_patient_with_episode(Request $request) - { - $ward_id = $request->admission_ward_id; - $admitted_on = $request->ward_admission_date; - $ward_name = get_name($ward_id, 'id', 'name', 'wards'); - - // Admit patient in ward - $inpatient = new InpatientInfo; - $inpatient->patient_id = $request->patient_id; - $inpatient->episode_id = $request->episode_admission_episode_id; - $inpatient->admitted_on = $admitted_on; - $inpatient->ward_id = $ward_id; - $inpatient->created_by = auth()->user()->id; - //$inpatient->created_at = Carbon::now(); - $inpatient->save(); - - flash("The patient has been admitted in " . $ward_name)->success(); - return redirect('/patient_episodes/'); - } - - public function create_episode_with_doctor(Request $request) - { - $services_id_with_user_id = $request->allocated_services_id_with_doctor_id; - $services_id_with_user_id_array = explode("__", $services_id_with_user_id); // ["service_id", "user_id"] - $allocated_service_id = $services_id_with_user_id_array[0]; - $allocated_user_id = $services_id_with_user_id_array[1]; - - $last_inserted_id = 0; - $logged_in_user_id = auth()->user()->id; - $episode = new PatientEpisode; - - $episode->patient_id = $request->patient_id; - $episode->clinic_id = get_default_hospital_clinic(); - $episode->created_by = $logged_in_user_id; - $episode->updated_by = $logged_in_user_id; - - try { - $episode->save(); - $last_inserted_id = $episode->id; - $allocated_persons_name = get_full_name($allocated_user_id, "id", "first_name", "last_name", "users"); - - session()->put(['episode_id' => $last_inserted_id]); - - flash("Patient has been allocated to " . $allocated_persons_name)->success(); - - /* create a record in consultations table attached to allocated doctor */ - $consultation_record = new Consultation; - $consultation_record->patient_id = $episode->patient_id; - $consultation_record->episode_id = $last_inserted_id; - $consultation_record->consultation_done_by = $allocated_user_id; - $consultation_record->consultation_service_id = $allocated_service_id; - $consultation_record->created_by = $logged_in_user_id; - $consultation_record->save(); - - // create new ordered service record - $service_performed_id = record_staff_that_has_performed_the_service( - $episode->patient_id, - $last_inserted_id, - 3, - $allocated_service_id, - 0, - $allocated_user_id - ); - - $service_order = new OrderedService; - $service_order->patient_id = $episode->patient_id; - $service_order->episode_id = $last_inserted_id; - $service_order->service_id = $allocated_service_id; - $service_order->quantity = 1; - $service_order->performed = 1; - $service_order->performed_id = $service_performed_id; - $service_order->created_by = $logged_in_user_id; - $service_order->updated_by = $logged_in_user_id; - $service_order->save(); - - /********** update patient episodes table with the consultation_id ********/ - $episode_record = PatientEpisode::find($last_inserted_id); - if (!is_null($episode_record)) { - $episode_record->consultation_id = $consultation_record->id; - $episode_record->update(); - } - /**********************/ - - return redirect('/patient_episodes/'); - } catch (QueryException $e) { - flash("An error occurred!")->error(); - return back()->withInput(); - } - } - - public function create_episode_with_doctor_and_clinic(Request $request) - { - $services_id_with_user_id = $request->allocated_services_id_with_doctor_id; - $services_id_with_user_id_array = explode("__", $services_id_with_user_id); // ["service_id", "user_id"] - $allocated_service_id = $services_id_with_user_id_array[0]; - $allocated_user_id = $services_id_with_user_id_array[1]; - - $clinic_id = $request->special_clinic_id; - - $last_inserted_id = 0; - $logged_in_user_id = auth()->user()->id; - $episode = new PatientEpisode; - - $episode->patient_id = $request->patient_id; - $episode->clinic_id = $clinic_id; - $episode->created_by = $logged_in_user_id; - $episode->updated_by = $logged_in_user_id; - $episode->claim_number = $request->claim_number; - - try { - $episode->save(); - $last_inserted_id = $episode->id; - $allocated_persons_name = get_full_name($allocated_user_id, "id", "first_name", "last_name", "users"); - - /* create a record in consultations table attached to allocated doctor */ - $consultation_record = new Consultation; - $consultation_record->patient_id = $episode->patient_id; - $consultation_record->episode_id = $last_inserted_id; - $consultation_record->consultation_done_by = $allocated_user_id; - $consultation_record->consultation_service_id = $allocated_service_id; - /* for now make consultation->created_by = allocated_person */ - $consultation_record->created_by = $logged_in_user_id; - /* discuss and see whether to change or not*/ - $consultation_record->save(); - - // create new ordered service record - $service_performed_id = record_staff_that_has_performed_the_service( - $episode->patient_id, - $last_inserted_id, - 3, - $allocated_service_id, - 0, - $allocated_user_id - ); - - $service_order = new OrderedService; - $service_order->patient_id = $episode->patient_id; - $service_order->episode_id = $last_inserted_id; - $service_order->service_id = $allocated_service_id; - $service_order->quantity = 1; - $service_order->performed = 1; - $service_order->performed_id = $service_performed_id; - $service_order->created_by = $logged_in_user_id; - $service_order->updated_by = $logged_in_user_id; - $service_order->save(); - - /********** update patient episodes table with the consultation_id ********/ - $episode_record = PatientEpisode::find($last_inserted_id); - if (!is_null($episode_record)) { - $episode_record->consultation_id = $consultation_record->id; - $episode_record->update(); - } - /**********************/ - - $clinic_slug = get_name($clinic_id, "id", "slug", "clinics"); - if ($clinic_slug == "art") { - //return redirect("hiv_menu"); - } - - if ($clinic_slug == "diabetes") { - //return redirect('diabetes_clinic/clinic_registration'); - } - - if ($clinic_slug == "ante_natal") { - //return redirect('ante_natal_clinic_menu'); - } - - if ($clinic_slug == "mental_health") { - $is_mental_health_clinic = true; - session()->put(['episode_id' => $last_inserted_id]); - - session()->put(['is_mental_health_clinic' => 1]); - //return redirect('consultation/route'); - } - - session()->put(['episode_id' => $last_inserted_id]); - - flash("Patient has been allocated to " . $allocated_persons_name)->success(); - - return redirect('/patient_episodes/'); - } catch (QueryException $e) { - flash("An error occurred")->error(); - return back()->withInput(); - } - } - - public function create_episode_with_lab_self_request(Request $request) - { - $logged_in_user_id = auth()->user()->id; - - $episode = new PatientEpisode; - $episode->patient_id = $request->patient_id; - $episode->clinic_id = get_default_hospital_clinic(); - $episode->episode_type = 1; //self lab request episode - $episode->created_by = $logged_in_user_id; - $episode->updated_by = $logged_in_user_id; - - try { - $episode->save(); - session()->put(['episode_id' => $episode->id]); - - flash("Episode has started")->success(); - return redirect('/investigations/investigations_review'); - } catch (QueryException $e) { - flash("An error occurred")->error(); - return back()->withInput(); - } - } - - public function episode_summary($episode_id) - { - $patient_id = session()->get('patient_id'); - $general_settings = json_decode(GeneralSettings::find(1)->data, true); - $episode_summary_content_setting = $general_settings['episode_summary_content'] ?? ''; - - - - if(is_eye_module_enabled() && is_patient_in_eye_clinic($episode_id)) { - $main_exam = EyeClinicMainExam::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first(); - $base_exam = EyeClinicBaseExamRefraction::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first(); - $slit_lamp_test_areas = SlitLampTestArea::all(); - $slit_lamp_test_area_values = SlitLampTestAreaValue::pluck('name', 'id')->toArray(); - $slit_lamp_test_area_ids = SlitLampTestAreaValue::pluck('id')->toArray(); - } else { - $main_exam = false; - $base_exam = false; - $slit_lamp_test_areas = []; - $slit_lamp_test_area_values = []; - $slit_lamp_test_area_ids = []; - } - $priority_signs = $emergent_signs =[]; - $patient = DB::table('patients')->find(session()->get('patient_id')); - $episode = PatientEpisode::find($episode_id); - $hospital_information = HospitalInformation::find(1); - $outcomes = DB::table('outcomes')->pluck('name', 'id'); - $diagnoses = DB::table('diagnoses')->where('available', 1)->pluck("name", "id"); - $investigations = DB::table('investigations')->pluck("name", "id"); - $procedures = DB::table('procedures')->where('available', 1)->pluck("name", "id"); - $sundries = Sundry::where('available', 1)->orderby('name', 'asc')->pluck('name', 'id')->prepend('- select -', ''); - $services = Services::where('available', 1)->orderby('name', 'asc')->pluck('name', 'id'); - $sundries_results = Sundry::select('id', 'name')->get(); - /* Patient File : It should show Diagnosis, Prescriptions, Lab results, Procedures */ - $consultation = Consultation::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first(); - - $treatments = null; - if (is_array($episode_summary_content_setting) && in_array(10, $episode_summary_content_setting ?? '') ){ - $treatments = Treatment::where(["patient_id" => $patient_id, "episode_id" => $episode_id])->get(); - - } - - - $ordered_procedures = null; - - - if (is_array($episode_summary_content_setting) && in_array(4, $episode_summary_content_setting ?? '') ){ - $ordered_procedures = OrderedProcedure::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->get(); - - } - - - $ordered_sundries = null; - if (is_array($episode_summary_content_setting) && in_array(8, $episode_summary_content_setting ?? '') ){ - $ordered_sundries = OrderedSundry::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->get(); - } - - - $ordered_services = null; - if (is_array($episode_summary_content_setting) && in_array(6, $episode_summary_content_setting ?? '') ){ - $ordered_services = OrderedService::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->get(); - } - - - $inpatient_infos = InpatientInfo::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->get(); - $antenatal_data = DB::table('ante_natal_clinic_followups')->where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first(); - - // prep the inpatient investigation arrays and counters - $opd_investigations = []; - // get all investigations ordered in this episode - $ordered_investigations = OrderedInvestigation::where(['episode_id' => $episode_id])->where('inpatient', 0)->get(); - - // get all results - $investigation_results_order_ids = InvestigationResults::pluck('order_id', 'id')->toArray(); - - $dateBorn = \Carbon\Carbon::parse($patient->date_of_birth); - $years = $dateBorn->diffInYears(); - - //triage details - $triage = null; - if (is_array($episode_summary_content_setting) && in_array(3, $episode_summary_content_setting ?? '') ){ - if ($episode && $episode->triage_id) { - $triage = \Streamline\Models\Triage::where(['id' => $episode->triage_id])->first(); - } - } - - - // get all symptoms - $symptoms = ''; - if (is_array($episode_summary_content_setting) && in_array(5, $episode_summary_content_setting ?? '') ){ - $symptoms = DB::table('symptoms')->where('available', 1)->pluck("name", "id"); - } - - // investigations setting check - if (is_array($episode_summary_content_setting) && in_array(2, $episode_summary_content_setting ?? '') ){ - foreach ($ordered_investigations as $investigation) { - $investigation_ids = explode(",", $investigation->investigation_id); - $inpatient_status = explode(",", $investigation->for_inpatient); - - // check if results are available for this investigation - if (in_array($investigation->id, $investigation_results_order_ids)) { - // get the key if available - $key = array_search($investigation->id, $investigation_results_order_ids); - - // get the results object - $results = InvestigationResults::find($key); - - // exclude obstetric u/s results - if ($results->result_type != "Ultrasound_Obstetric") { - $investigation_results = explode(",", $results->value); - $investigation_per_valid = explode(",", $results->per_investigation); - $investigation_comments = explode(",", $results->comment); - - if ($results->all_authenticated == 1) { - for ($i = 0; $i < count($inpatient_status); $i++) { - if ($inpatient_status[$i] == 0) { - if (isset($investigation_ids[$i]) && $investigation_ids[$i] != "") { - $result = Investigation::where('id', $investigation_ids[$i])->first(); - $opd_investigations['name'][] = $result->name; - $opd_investigations['value'][] = $investigation_results[$i]; - $opd_investigations['comment'][] = $investigation_comments[$i]; - - if($result->range_type == 1) { - $opd_investigations['normal_ranges'][] = get_dynamic_normal_range($result->id, get_patient_age_group($patient_id), get_name($patient_id, 'id', 'gender', 'patients')); - } else { - $opd_investigations['normal_ranges'][] = $result->normal_ranges; - } - - $opd_investigations['type'][] = $result->type; - } - } else { - if (isset($investigation_ids[$i]) && $investigation_ids[$i] != "") { - $result = Investigation::where('id', $investigation_ids[$i])->first(); - $ward_investigations['name'][] = $result->name; - $ward_investigations['value'][] = $investigation_results[$i]; - $ward_investigations['comment'][] = $investigation_comments[$i]; - $ward_investigations['type'][] = $result->type; - } - } - } - } else { - for ($i = 0; $i < count($inpatient_status); $i++) { - if ($investigation_per_valid[$i] == 1) { - // this investigation is authenticated - if ($inpatient_status[$i] == 0) { - if (isset($investigation_ids[$i]) && $investigation_ids[$i] != "") { - $result = Investigation::where('id', $investigation_ids[$i])->first(); - $opd_investigations['name'][] = $result->name; - $opd_investigations['value'][] = $investigation_results[$i]; - - if($result->range_type == 1) { - $opd_investigations['normal_ranges'][] = get_dynamic_normal_range($result->id, get_patient_age_group($patient_id), get_name($patient_id, 'id', 'gender', 'patients')); - } else { - $opd_investigations['normal_ranges'][] = $result->normal_ranges; - } - - $opd_investigations['comment'][] = $investigation_comments[$i]; - $opd_investigations['type'][] = $result->type; - } - } else { - if (isset($investigation_ids[$i]) && $investigation_ids[$i] != "") { - $result = Investigation::where('id', $investigation_ids[$i])->first(); - $ward_investigations['name'][] = $result->name; - $ward_investigations['value'][] = $investigation_results[$i]; - $ward_investigations['comment'][] = $investigation_comments[$i]; - $ward_investigations['type'][] = $result->type; - } - } - } else { - if ($inpatient_status[$i] == 0) { - if (isset($investigation_ids[$i]) && $investigation_ids[$i] != "") { - $result = Investigation::where('id', $investigation_ids[$i])->first(); - $opd_investigations['name'][] = $result->name; - $opd_investigations['value'][] = "Pending"; - - if($result->range_type == 1) { - $opd_investigations['normal_ranges'][] = get_dynamic_normal_range($result->id, get_patient_age_group($patient_id), get_name($patient_id, 'id', 'gender', 'patients')); - } else { - $opd_investigations['normal_ranges'][] = $result->normal_ranges; - } - - $opd_investigations['comment'][] = "Pending"; - } - } else { - if (isset($investigation_ids[$i]) && $investigation_ids[$i] != "") { - $result = Investigation::where('id', $investigation_ids[$i])->first(); - $ward_investigations['name'][] = $result->name; - $ward_investigations['value'][] = "Pending"; - $ward_investigations['comment'][] = "Pending"; - } - } - } - } - } - } - } else { - for ($i = 0; $i < count($inpatient_status); $i++) { - if ($inpatient_status[$i] == 0) { - if (isset($investigation_ids[$i]) && $investigation_ids[$i] != "") { - $result = Investigation::where('id', $investigation_ids[$i])->first(); - $opd_investigations['name'][] = $result->name; - $opd_investigations['value'][] = "Pending"; - - if($result->range_type == 1) { - $opd_investigations['normal_ranges'][] = get_dynamic_normal_range($result->id, get_patient_age_group($patient_id), get_name($patient_id, 'id', 'gender', 'patients')); - } else { - $opd_investigations['normal_ranges'][] = $result->normal_ranges; - } - - $opd_investigations['comment'][] = "Pending"; - } - } else { - if (isset($investigation_ids[$i]) && $investigation_ids[$i] != "") { - $result = Investigation::where('id', $investigation_ids[$i])->first(); - $ward_investigations['name'][] = $result->name; - $ward_investigations['value'][] = "Pending"; - $ward_investigations['comment'][] = "Pending"; - } - } - } - } - } - } - - $discharge_mortality_risk = null; - $priority_signs_records = null; - $emergency_signs = null; - $emergencySigns = null; - - if(between($years, 0, 12)) { - - - if (is_array($episode_summary_content_setting) && in_array(9, $episode_summary_content_setting ?? '') ){ - $priority_signs_records = PrioritySign::where('triage_id', $episode->triage_id)->first(); - - } - - if ($priority_signs_records) { - $priority_signs = unserialize($priority_signs_records->signs); - } - - - if (is_array($episode_summary_content_setting) && in_array(11, $episode_summary_content_setting ?? '') ){ - $emergency_signs = EmergencySign::where('triage_id', $episode->triage_id)->first(); - - } - - - - - if (!empty($emergency_signs)) { - $airway = unserialize($emergency_signs->airway); - $circulation = unserialize($emergency_signs->circulation); - $neurological = unserialize($emergency_signs->neurological); - $dehydration = unserialize($emergency_signs->dehydration); - $emergencySigns= array_merge($airway,$circulation, $dehydration,$neurological); - foreach($emergencySigns as $key => $sign) if($sign == 'Yes') $emergent_signs[] = $key; - } - - - if (is_array($episode_summary_content_setting) && in_array(13, $episode_summary_content_setting ?? '') ){ - $discharge_mortality_risk = DischargeMortalityRisk::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first(); - - } - - - } - - - $cons_notes = []; - if (is_array($episode_summary_content_setting) && in_array(12, $episode_summary_content_setting ?? '') ){ - $cons_notes = WardInpatientDetailedNote::where(['patient_id' => $patient_id, 'episode_id' => $episode_id, 'ward_id' => 0])->latest()->get(['investigation_and_management_plan_comments', 'clinic_examination_comments', 'history_comments', 'created_by','created_at']); - } - - $data = [ - 'main_exam' => $main_exam, - 'base_exam' => $base_exam, - 'slit_lamp_test_areas' => $slit_lamp_test_areas, - 'slit_lamp_test_area_values' => $slit_lamp_test_area_values, - 'slit_lamp_test_area_ids' => $slit_lamp_test_area_ids, - 'hospitalInfo' => $hospital_information, - 'patient' => $patient, - 'episode' => $episode, - 'consultation' => $consultation, - 'treatments' => $treatments, - 'ordered_procedures' => $ordered_procedures, - 'diagnoses' => $diagnoses, - 'ordered_investigations' => $ordered_investigations, - 'investigations' => $investigations, - 'procedures' => $procedures, - 'opd_investigations' => $opd_investigations, - 'inpatient_infos' => $inpatient_infos, - 'sundries' => $sundries, - 'ordered_sundries' => $ordered_sundries, - 'services' => $services, - 'ordered_services' => $ordered_services, - 'outcomes' => $outcomes, - 'antenatal_data' => $antenatal_data, - 'symptoms'=> $symptoms, - 'triage' =>$triage, - 'priority_signs' => $priority_signs, - 'emergent_signs'=> $emergent_signs, - 'discharge_mortality_risk' => $discharge_mortality_risk, - 'cons_notes' => $cons_notes, - 'years'=>$years, - 'episode_summary_content_setting' => $episode_summary_content_setting, - ]; - - - // return view('patients::patient_episodes/episode_summary', $data); - - $pdf = SnappyPDF::loadView('patients::patient_episodes/episode_summary', $data) - ->setOrientation('portrait') - ->setOption('margin-bottom', 7) - ->setOption('margin-top', 5) - ->setOption('footer-html', 'Printed On ' . date('d-M-Y h:ia') . ' By ' . auth()->user()->first_name . " " . auth()->user()->last_name . ''); - - $patientName = $patient->first_name . ' ' . $patient->last_name; - return $pdf->inline($patientName . ' - Episode Summary' . date(" d-m-y h:ia") . '.pdf'); - } - - public function get_assigned_doctor($episode_id) - { - $patient_id = session()->get('patient_id'); - $consultation = Consultation::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first(); - if ($consultation) { - $doctor_id = $consultation->consultation_done_by; - $doctor_name = get_full_name($doctor_id, "id", "first_name", "last_name", "users"); - return $doctor_name; - } - - return 0; - } - - public function save_doctor_transfer(Request $request) - { - $patient_id = session()->get('patient_id'); - $doctor_to_transfer_to = $request->dt_doctor_to; - $episode_id = $request->episode_id; - - if ($doctor_to_transfer_to && $doctor_to_transfer_to != "remove_from_doctor") { - $services_id_with_user_id = $doctor_to_transfer_to; - $services_id_with_user_id_array = explode("__", $services_id_with_user_id); // ["service_id", "user_id"] - $allocated_service_id = $services_id_with_user_id_array[0]; - $transfer_to_doctor = $services_id_with_user_id_array[1]; - - $consultation = Consultation::where(['patient_id' => $patient_id, 'episode_id' => $request->episode_id])->first(); - - if ($consultation) { - // first, check if there is a previously ordered service attached to current doctor - $already_ordered_service = OrderedService::where('performed', 1) - ->where('patient_id', $patient_id) - ->where('episode_id', $episode_id) - ->where('service_id', $consultation->consultation_service_id)->first(); - - if ($already_ordered_service) { - // check whether this has been paid for - if ($already_ordered_service->payment_status == 1) { - return 2; - } - - // otherwise, go on and delete and also remove the performance fee - StaffPerformedService::where('id', $already_ordered_service->performed_id)->delete(); - $already_ordered_service->delete(); - } - - $consultation->consultation_done_by = $transfer_to_doctor; - $consultation->consultation_service_id = $allocated_service_id; - } else { - // create a consultation record with new assigned doctor - $consultation = new Consultation; - $consultation->patient_id = $patient_id; - $consultation->episode_id = $episode_id; - $consultation->consultation_done_by = $transfer_to_doctor; - $consultation->consultation_service_id = $allocated_service_id; - $consultation->created_by = auth()->user()->id; - } - - if ($consultation->save()) { - /********** update patient episodes table with the consultation_id ********/ - $episode_record = PatientEpisode::find($episode_id); - - // create new ordered service record - $service_performed_id = record_staff_that_has_performed_the_service( - $patient_id, - $episode_id, - 3, - $allocated_service_id, - 0, - $transfer_to_doctor - ); - - $service_order = new OrderedService; - $service_order->patient_id = $patient_id; - $service_order->episode_id = $episode_id; - $service_order->service_id = $allocated_service_id; - $service_order->quantity = 1; - $service_order->performed = 1; - $service_order->performed_id = $service_performed_id; - $service_order->created_by = auth()->user()->id; - $service_order->updated_by = auth()->user()->id; - $service_order->save(); - - $episode_record->consultation_id = $consultation->id; - $episode_record->update(); - - return 1; - } else { - return 0; - } - } else { - return 0; - } - } - - function start_appointment_with_clinic(Request $request) - { - $appointment_id = $request->selected_appointment_id; - $selected_clinic_id = $request->special_clinic_id; - $patient_id = $request->patient_id; - - $allocated_service_id = null; - $allocated_user_id = null; - $consultation_record = null; - $services_id_with_user_id = $request->allocated_services_id_with_doctor_id; - - if ($services_id_with_user_id) { - $services_id_with_user_id_array = explode("__", $services_id_with_user_id); // ["service_id", "user_id"] - $allocated_service_id = $services_id_with_user_id_array[0]; - $allocated_user_id = $services_id_with_user_id_array[1]; - } - - $appointment = \Streamline\Models\PatientAppointment::find($appointment_id); - // reassign the appointment_fulfilled to 1 - $appointment->appointment_fulfilled = 1; - $appointment->updated_by = Auth()->user()->id; - if ($appointment->save()) { - - $episode = new PatientEpisode; - $episode->clinic_id = $selected_clinic_id; - $episode->patient_id = $patient_id; - $episode->parent_episode_id = $appointment->episode_id == 0 ? null : $appointment->episode_id; //the original episode_id - $episode->created_by = auth()->user()->id; - $episode->updated_by = auth()->user()->id; - $episode->save(); - - $last_inserted_id = $episode->id; - - if ($services_id_with_user_id) { - $allocated_persons_name = get_full_name($allocated_user_id, "id", "first_name", "last_name", "users"); - /* create a record in consultations table attached to allocated doctor */ - $consultation_record = new Consultation; - $consultation_record->patient_id = $episode->patient_id; - $consultation_record->episode_id = $last_inserted_id; - $consultation_record->consultation_done_by = $allocated_user_id; - $consultation_record->consultation_service_id = $allocated_service_id; - /* for now make consultation->created_by = allocated_person */ - $consultation_record->created_by = auth()->user()->id; - /* discuss and see whether to change or not*/ - $consultation_record->save(); - } - - /********** update patient episodes table with the consultation_id ********/ - $episode_record = PatientEpisode::find($last_inserted_id); - if (!is_null($episode_record) && !is_null($consultation_record)) { - $episode_record->consultation_id = $consultation_record->id; - $episode_record->update(); - } - /**********************/ - //put this patient_id into session - session()->put('patient_id', $patient_id); - - try { - flash("A new episode has been saved")->success(); - - //if the parent episode was an ANC visit then create a copy of previous anc registration and attach it to this episode - $previous_anc_visit = \Streamline\Models\AnteNatalClinicFollowup::where(['patient_id' => $episode->patient_id, 'episode_id' => $episode->parent_episode_id])->first(); - if ($previous_anc_visit) { - create_anc_registration_record_from_previous_visit($patient_id, $episode->parent_episode_id, $episode->id); - } - - // check where the function was called from and return there - if (isset($request->is_from_finance)) { - // return to finance home - return redirect('/patient_finance/home'); - } else { - // return to normal patient home - return redirect('/patient_episodes/'); - } - } catch (QueryException $e) { - flash("An error occurred")->error(); - return back()->withInput(); - } - } else { - flash("An error occurred!")->error(); - return back()->withInput(); - } - } - - function delete_episode($episode_id) - { - $episode = PatientEpisode::find($episode_id); - - // check if consultation record exists with that id - $consultation = Consultation::where('episode_id', $episode_id) - ->first(); - - if ($consultation) { - $consultation->forceDelete(); - } - - if ($episode->forceDelete()) { - flash("Patient episode has been deleted.")->success(); - return redirect('/patient_episodes/'); - } - } - - public function episode_merge_preview() - { - $patient_id = session()->get('patient_id'); - $patient = Patient::find($patient_id); - - $episodes = PatientEpisode::where('patient_id', $patient_id)->orderBy('id', 'desc')->get(); - - $diagnoses = DB::table('diagnoses')->where('available', 1)->pluck("name", "id"); - $clinics = DB::table('clinics')->pluck("name", "id")->prepend('- select -', ''); - $special_clinics = DB::table('clinics')->where('available', 1)->whereNull('deleted_at')->orderBy('name', 'asc')->pluck("name", "id")->prepend('- select -', ''); - $wards = DB::table('wards')->where('available', 1)->pluck("name", "id")->prepend('- select -', ''); - $users_collection = DB::table('users')->orderBy("first_name", "asc")->select("id")->get()->toArray(); - $users_array = []; - foreach ($users_collection as $value) { - $user = User::find($value->id); - if (!is_null($user)) { - if ($user->hasRole('Doctors') || $user->hasRole('Doctor')) { - - //use this join query instead of the commented out query to cater for execution speed (N+1) - $consultation_records = DB::table('services') - ->join('staff_payment_configurations', 'staff_payment_configurations.item_id', '=', 'services.id') - ->where('services.item_type', 'Consultation') - ->where('staff_payment_configurations.user_id', $value->id) - ->where('staff_payment_configurations.item_category', 3) - ->whereNull('staff_payment_configurations.deleted_at') - ->orderBy('staff_payment_configurations.created_at', 'asc') - ->select('services.*') - ->get(); - - foreach ($consultation_records as $record) { - - $price_list_id = is_patient_category_attached_to_price_list($patient_id); - if ($price_list_id) { - $users_consultation_fee = get_price_list_category_price($price_list_id, 6, $record->id); - } else { - $users_consultation_fee = $record->non_insured_price; - } - - //concatnate the service_record_id with the users id to form the key for the array - $users_array[$record->id . "__" . $value->id] = get_full_name($value->id, 'id', 'first_name', 'last_name', 'users') . " (" . $record->name . " Fee: " . ugandan_shillings($users_consultation_fee) . ")"; - } - } - } - } - $users_array = ['' => '- select -'] + $users_array; - - return view('patients::patient_episodes.merge_episodes', compact('patient', 'episodes', 'diagnoses', 'clinics', 'special_clinics', 'wards', 'users_array')); - } - - public function display_original_and_duplicate_episodes(Request $request) - { - $episode_id_one = $request->episode_id_one; - $episode_id_two = $request->episode_id_two; - - $episode_one = PatientEpisode::find($episode_id_one); - - $html_text_one = ""; - $html_text_one .= ""; - $html_text_one .= "clinic_id . "> " . get_name($episode_one->clinic_id, "id", "name", "clinics") . ""; - $html_text_one .= ""; - - $html_text_one .= ""; - $html_text_one .= ""; - $html_text_one .= ""; - - $html_text_one .= ""; - $html_text_one .= ""; - $html_text_one .= ""; - - $html_text_one .= ""; - $html_text_one .= ""; - $html_text_one .= ""; - - $html_text_one .= ""; - $html_text_one .= ""; - $html_text_one .= ""; - - $html_text_one .= ""; - $html_text_one .= ""; - $html_text_one .= ""; - - $html_text_one .= ""; - $html_text_one .= ""; - $html_text_one .= ""; - $html_text_one .= "
Select which episode to keep Episode started on " . streamline_date_time($episode_one->created_at) . "
Primary Diagnosis " . get_name(get_name($episode_one->consultation_id, "id", "primary_diagnosis", "consultations"), "id", "name", "diagnoses") . "
Triage Comments " . get_name($episode_one->triage_id, "id", "comments", "triage") . "
Consultation Comments " . get_name($episode_one->consultation_id, "id", "comments", "consultations") . "
Examination Comments " . get_name($episode_one->consultation_id, "id", "clinic_examination_comments", "consultations") . "
Management Plan " . get_name($episode_one->consultation_id, "id", "investigation_and_management_plan_comments", "consultations") . "
History Comments " . get_name($episode_one->consultation_id, "id", "history_comments", "consultations") . "
"; - - - $episode_two = PatientEpisode::find($episode_id_two); - - $html_text_two = ""; - $html_text_two .= ""; - $html_text_two .= "clinic_id . "> " . get_name($episode_two->clinic_id, "id", "name", "clinics") . ""; - $html_text_two .= ""; - - $html_text_two .= ""; - $html_text_two .= ""; - $html_text_two .= ""; - - $html_text_two .= ""; - $html_text_two .= ""; - $html_text_two .= ""; - - $html_text_two .= ""; - $html_text_two .= ""; - $html_text_two .= ""; - - $html_text_two .= ""; - $html_text_two .= ""; - $html_text_two .= ""; - - $html_text_two .= ""; - $html_text_two .= ""; - $html_text_two .= ""; - - $html_text_two .= ""; - $html_text_two .= ""; - $html_text_two .= ""; - $html_text_two .= "
Episode started on " . streamline_date_time($episode_two->created_at) . "
" . get_name(get_name($episode_two->consultation_id, "id", "primary_diagnosis", "consultations"), "id", "name", "diagnoses") . "
" . get_name($episode_two->triage_id, "id", "comments", "triage") . "
" . get_name($episode_two->consultation_id, "id", "comments", "consultations") . "
" . get_name($episode_two->consultation_id, "id", "clinic_examination_comments", "consultations") . "
" . get_name($episode_two->consultation_id, "id", "investigation_and_management_plan_comments", "consultations") . "
" . get_name($episode_two->consultation_id, "id", "history_comments", "consultations") . "
"; - - return json_encode([ - "html_one" => $html_text_one, - "html_two" => $html_text_two, - ]); - } - - public function complete_episodes_merge(Request $request) - { - $episode_id_one = (int)$request->original_id; - $episode_id_two = (int)$request->duplicate_id; - - $episode_id_to_delete = 0; - $episode_id_to_keep = 0; - - if ($request->has('all_duplicate_fields')) { - $episode_id_to_delete = $request->original_id; - $episode_id_to_keep = $request->duplicate_id; - } - - if ($request->has('all_original_fields')) { - $episode_id_to_delete = $request->duplicate_id; - $episode_id_to_keep = $request->original_id; - } - - //1.get the original and dupe episode ids - //2.the the original record with all selected fields to keep - //3.loop through the medical and finance tables updating the episode id. - - $delete_episode_record = PatientEpisode::find($episode_id_to_delete); - $delete_episode_record->delete(); - - if ($delete_episode_record->update()) { - //update the episode with new clinic - $episode = PatientEpisode::find($episode_id_to_keep); - $episode->clinic_id = $request->clinic_id; - $episode->update(); - - //loop through triage - $patient_triage = \Streamline\Models\Triage::where('episode_id', $episode_id_to_delete)->get(); - foreach ($patient_triage as $triage) { - $triage->episode_id = $episode_id_to_keep; - $triage->clinic_allocation = $request->clinic_id; - $triage->update(); - } - - //loop thru consultations - $patient_consultations = \Streamline\Models\Consultation::where('episode_id', $episode_id_to_delete)->get(); - foreach ($patient_consultations as $consultation) { - $consultation->episode_id = $episode_id_to_keep; - $consultation->primary_diagnosis = ($request->primary_diagnosis == 'N/A') ? null : $request->primary_diagnosis; - $consultation->update(); - } - - $consultations = \Streamline\Models\Consultation::where('episode_id', $episode_id_to_keep)->get(); - foreach ($consultations as $consultation) { - $consultation->primary_diagnosis = ($request->primary_diagnosis == 'N/A') ? null : $request->primary_diagnosis; - $consultation->clinic_examination_comments = $request->clinic_examination_comments; - $consultation->history_comments = $request->history_comments; - $consultation->comments = $request->consultation_comments; - $consultation->update(); - } - - //loop thru treatment - $patient_treatments = \Streamline\Models\Treatment::where('episode_id', $episode_id_to_delete)->get(); - foreach ($patient_treatments as $treatment) { - $treatment->episode_id = $episode_id_to_keep; - $treatment->update(); - } - - //loop thru ordered invs - $patient_ordered_invs = \Streamline\Models\OrderedInvestigation::where('episode_id', $episode_id_to_delete)->get(); - foreach ($patient_ordered_invs as $ordered_invs) { - $ordered_invs->episode_id = $episode_id_to_keep; - $ordered_invs->update(); - } - - //loop thru investigation results - $investigation_results = \Streamline\Models\InvestigationResults::where('episode_id', $episode_id_to_delete)->get(); - foreach ($investigation_results as $inv_results) { - $inv_results->episode_id = $episode_id_to_keep; - $inv_results->update(); - } - - //loop thru ordered procedures - $patient_ordered_procedures = \Streamline\Models\OrderedProcedure::where('episode_id', $episode_id_to_delete)->get(); - foreach ($patient_ordered_procedures as $ordered_procedures) { - $ordered_procedures->episode_id = $episode_id_to_keep; - $ordered_procedures->update(); - } - - //loop thru ordered sundries - $patient_ordered_sundries = \Streamline\Models\OrderedSundry::where('episode_id', $episode_id_to_delete)->get(); - foreach ($patient_ordered_sundries as $ordered_sundry) { - $ordered_sundry->episode_id = $episode_id_to_keep; - $ordered_sundry->update(); - } - - //loop through ordered services - $patient_ordered_services = \Streamline\Models\OrderedService::where('episode_id', $episode_id_to_delete)->get(); - foreach ($patient_ordered_services as $ordered_services) { - $ordered_services->episode_id = $episode_id_to_keep; - $ordered_services->update(); - } - - //loop through inpatient info - $inpatient_info_records = \Streamline\Models\InpatientInfo::where('episode_id', $episode_id_to_delete)->get(); - foreach ($inpatient_info_records as $inpatient_info) { - $inpatient_info->episode_id = $episode_id_to_keep; - $inpatient_info->update(); - } - - //loop though inpatient bills - $inpatient_bills = \Streamline\Models\InpatientBill::where('episode_id', $episode_id_to_delete)->get(); - foreach ($inpatient_bills as $inpatient_bill) { - $inpatient_bill->episode_id = $episode_id_to_keep; - $inpatient_bill->update(); - } - - //loop though ward bed stays - $ward_bed_stay = \Streamline\Models\WardBedStay::where('episode_id', $episode_id_to_delete)->get(); - foreach ($ward_bed_stay as $bed_stay) { - $bed_stay->episode_id = $episode_id_to_keep; - $bed_stay->update(); - } - - //loop though ward consultation and service - $ward_consultations_and_services = \Streamline\Models\WardConsultationsAndService::where('episode_id', $episode_id_to_delete)->get(); - foreach ($ward_consultations_and_services as $ward_consultation) { - $ward_consultation->episode_id = $episode_id_to_keep; - $ward_consultation->update(); - } - - //loop though ward extras - $ward_extras = \Streamline\Models\WardExtra::where('episode_id', $episode_id_to_delete)->get(); - foreach ($ward_extras as $ward_extra) { - $ward_extra->episode_id = $episode_id_to_keep; - $ward_extra->update(); - } - - //loop though ward comments - $ward_comments = \Streamline\Models\WardInpatientSheetComment::where('episode_id', $episode_id_to_delete)->get(); - foreach ($ward_comments as $ward_comment) { - $ward_comment->episode_id = $episode_id_to_keep; - $ward_comment->update(); - } - - //loop though ward investigation pricing - $ward_investigation_pricing = \Streamline\Models\WardInvestigationPricing::where('episode_id', $episode_id_to_delete)->get(); - foreach ($ward_investigation_pricing as $ward_inv_pricing) { - $ward_inv_pricing->episode_id = $episode_id_to_keep; - $ward_inv_pricing->update(); - } - - //loop though ward procedures - $ward_procedures = \Streamline\Models\WardProcedure::where('episode_id', $episode_id_to_delete)->get(); - foreach ($ward_procedures as $ward_procedure) { - $ward_procedure->episode_id = $episode_id_to_keep; - $ward_procedure->update(); - } - - //loop though ward sundries - $ward_sundries = \Streamline\Models\WardSundryDispensation::where('episode_id', $episode_id_to_delete)->get(); - foreach ($ward_sundries as $ward_sundry) { - $ward_sundry->episode_id = $episode_id_to_keep; - $ward_sundry->update(); - } - - //loop though ward treatment - $ward_treatments = \Streamline\Models\WardTreatment::where('episode_id', $episode_id_to_delete)->get(); - foreach ($ward_treatments as $ward_treatment) { - $ward_treatment->episode_id = $episode_id_to_keep; - $ward_treatment->update(); - } - - $ward_treatment_dispensations = \Streamline\Models\WardTreatmentDispensation::where('episode_id', $episode_id_to_delete)->get(); - foreach ($ward_treatment_dispensations as $ward_treatment_dispensation) { - $ward_treatment_dispensation->episode_id = $episode_id_to_keep; - $ward_treatment_dispensation->update(); - } - - //loop through investigation deposits - $investigation_deposits = \Streamline\Models\InvestigationDeposit::where('episode_id', $episode_id_to_delete)->get(); - foreach ($investigation_deposits as $inv_deposit) { - $inv_deposit->episode_id = $episode_id_to_keep; - $inv_deposit->update(); - } - - //loop through treatment deposits - $treatment_deposits = \Streamline\Models\TreatmentDeposits::where('episode_id', $episode_id_to_delete)->get(); - foreach ($treatment_deposits as $treatment_deposit) { - $treatment_deposit->episode_id = $episode_id_to_keep; - $treatment_deposit->update(); - } - - //loop through service deposits - $service_deposits = \Streamline\Models\ServiceDeposit::where('episode_id', $episode_id_to_delete)->get(); - foreach ($service_deposits as $service_deposit) { - $service_deposit->episode_id = $episode_id_to_keep; - $service_deposit->update(); - } - - //loop through procedure deposits - $procedure_deposits = \Streamline\Models\ProcedureDeposit::where('episode_id', $episode_id_to_delete)->get(); - foreach ($procedure_deposits as $procedure_deposit) { - $procedure_deposit->episode_id = $episode_id_to_keep; - $procedure_deposit->update(); - } - - //loop through sundries deposits - $sundry_deposits = \Streamline\Models\SundryDeposit::where('episode_id', $episode_id_to_delete)->get(); - foreach ($sundry_deposits as $sundry_deposit) { - $sundry_deposit->episode_id = $episode_id_to_keep; - $sundry_deposit->update(); - } - - //loop through patient category invoices - $patient_category_invoices = \Streamline\Models\PatientCategoryInvoice::where('episode_id', $episode_id_to_delete)->get(); - foreach ($patient_category_invoices as $patient_invoice) { - $patient_invoice->episode_id = $episode_id_to_keep; - $patient_invoice->update(); - } - $staff_performed_services = StaffPerformedService::where('episode_id', $episode_id_to_delete)->get(); - foreach ($staff_performed_services as $staff_performed_service) { - $staff_performed_service->episode_id = $episode_id_to_keep; - $staff_performed_service->update(); - } - $patient_clinic_transfers = PatientClinicTransfers::where('episode_id', $episode_id_to_delete)->get(); - foreach ($patient_clinic_transfers as $patient_clinic_transfer) { - $patient_clinic_transfer->episode_id = $episode_id_to_keep; - $patient_clinic_transfer->update(); - } - $ordered_sundries = OrderedSundry::where('episode_id', $episode_id_to_delete)->get(); - foreach ($ordered_sundries as $ordered_sundry) { - $ordered_sundry->episode_id = $episode_id_to_keep; - $ordered_sundry->update(); - } - - // TODO Refactor this merge to be in a separate controller and remove repeated table throughs by using one-to-many relationships - $tables = ['ward_inpatient_sheet_nurse_comments', 'ward_inpatient_detailed_notes', 'patient_documents', 'patient_one_off_discounts', 'triage_nutrition', 'triage_news', 'surgeries', 'sundries_deposits', 'smart_triage', 'patient_refunds', 'patient_account_consumptions', 'patient_appointments', 'phone_followup_patients', 'point_of_sale_records', 'procedure_deposits', 'cancel_patient_transactions', 'central_billing_deposits', 'chronic_patients', 'chi_deposits', 'debtors', 'debt_plan', 'dependants_consumptions', 'family_account_consumptions', 'inpatient_attendant_passes', 'inpatient_ward_discounts', 'inpatient_sheet_audits', 'maternity_delivery_records', 'maternity_inpatients', 'mental_health_consultation', 'ordered_investigations', 'ordered_procedures']; - foreach ($tables as $table) { - $episodes = DB::table($table)->where('episode_id', $episode_id_to_delete)->get(); - foreach ($episodes as $episode) DB::table($table)->where('id', $episode->id)->update(['episode_id' => $episode_id_to_keep]); - } - $incoming_ward_charts = DB::table('incoming_ward_charts')->whereRaw('FIND_IN_SET(' . $episode_id_to_delete . ',episode_ids)')->get(); - foreach ($incoming_ward_charts as $incoming_ward_chart) { - $episode_ids = explode(',', $incoming_ward_chart->episode_ids); - foreach ($episode_ids as $key => $episode_id) if ($episode_id == $episode_id_to_delete) $episode_ids[$key] = $episode_id_to_keep; - DB::table('incoming_ward_charts')->where('id', $incoming_ward_chart->id)->update(['episode_ids' => implode(',', $episode_ids)]); - } - flash("Episodes have been merged")->success(); - return redirect('patient_episodes'); - } - - flash("Oops, episode merge has failed. Contact Stre@mline Support")->error(); - return back()->withInput(); - } - - public function check_clinical_consultation_payment(Request $request) - { - $is_patient_allowed_to_do_consultation = $this->is_patient_allowed_to_have_consultation($request->patient_id, $request->episode_id); - if ($is_patient_allowed_to_do_consultation) { - if($request->action == 'consultation_with_notes') session()->put('consultation_with_notes', 1); - else session()->put('consultation_with_notes', 0); - session()->put(['patient_id' => $request->patient_id]); - session()->put(['episode_id' => $request->episode_id]); - return response()->json('/consultation/route'); - } - else return response()->json("unpaid"); - } - - public function is_patient_allowed_to_have_consultation($patient_id, $episode_id) - { - $patient_details = Patient::withTrashed()->find($patient_id); - $episode_details = PatientEpisode::withTrashed()->find($episode_id); - $patient_episodes_payment_setting = $patient_details->episode_payments; - $service_deposit = ServiceDeposit::where('episode_id', $episode_id)->first(); - $patient_category_invoice = PatientCategoryInvoice::where(['episode_id' => $episode_id, 'tag_id' => 6])->first(); - - // check if the episode is a review or not - if (is_null($episode_details->parent_episode_id)) { - $is_perform_unpaid_consultations_enabled = is_perform_unpaid_consultations_enabled($patient_details->category_id); - } else { - $is_perform_unpaid_consultations_enabled = is_perform_unpaid_review_consultations_enabled($patient_details->category_id); - } - - if (!$is_perform_unpaid_consultations_enabled) { - if ($patient_episodes_payment_setting == 0) { - if ($service_deposit || $patient_category_invoice) { - return true; - } - return false; - } elseif ($patient_episodes_payment_setting == 1) { - return false; - } - } - - return true; - } -} diff --git a/docker/streamline-src/Modules/Patients/Http/Controllers/PatientFlowMonitoringController.php b/docker/streamline-src/Modules/Patients/Http/Controllers/PatientFlowMonitoringController.php deleted file mode 100755 index bac75ee9..00000000 --- a/docker/streamline-src/Modules/Patients/Http/Controllers/PatientFlowMonitoringController.php +++ /dev/null @@ -1,238 +0,0 @@ -middleware('auth'); - $this->middleware('permission:patient-flow-monitoring'); - } - - public function index(Request $request): View - { - $clinic_id = $request->clinic_id; - $search_by = $request->search_by; - $reg_date = $request->reg_date; - $start_date = $request->start_date; - $end_date = $request->end_date; - $order_by = $request->order_by ?? 1; - - if (!isset($clinic_id) && !isset($search_by)){ - $clinic_id = session()->get('clinic_id'); - $search_by = session()->get('search_by'); - $reg_date = session()->get('reg_date'); - $start_date = session()->get('start_date'); - $end_date = session()->get('end_date'); - $order_by = session()->get('order_by'); - } else { - session()->put('clinic_id', $clinic_id); - session()->put('search_by', $search_by); - session()->put('reg_date', $reg_date); - session()->put('start_date', $start_date); - session()->put('end_date', $end_date); - session()->put('order_by', $order_by); - } - - - - - if($search_by == 3){ - //yesterday - $start_date_search = Carbon::yesterday()->startOfDay()->toDateTimeString(); - $end_date_search = Carbon::yesterday()->endOfDay()->toDateTimeString(); - $date_search = "Yesterday"; - } elseif($search_by == 1){ - // custom date - $start_date_search = Carbon::parse($reg_date)->startOfDay()->toDateTimeString(); - $end_date_search = Carbon::parse($reg_date)->endOfDay()->toDateTimeString(); - - $date_search = streamline_date($start_date_search); - } elseif($search_by == 2){ - // custom date range - $start_date_search = Carbon::parse($start_date)->startOfDay()->toDateTimeString(); - $end_date_search = Carbon::parse($end_date)->endOfDay()->toDateTimeString(); - - $date_search = streamline_date($start_date_search) . " to " . streamline_date($end_date_search); - } else { - // Today - $start_date_search = Carbon::today()->startOfDay()->toDateTimeString(); - $end_date_search = Carbon::today()->endOfDay()->toDateTimeString(); - - $date_search = "Today"; - } - - switch (get_select_clinic_order_type()) { - case 0: - if ($order_by == 1) { - $order_by_text = "patient_episodes.id"; - } else { - $order_by_text = "triage.severe_grade desc, patient_episodes.id"; - } - break; - case 1: - if ($order_by == 1) { - $order_by_text = "patient_episodes.id desc"; - } else { - $order_by_text = "triage.severe_grade desc, patient_episodes.id desc"; - } - break; - case 2: - default: - if ($order_by == 1) { - $order_by_text = "consultations.completed, patient_episodes.id"; - } else { - $order_by_text = "consultations.completed, triage.severe_grade desc, patient_episodes.id"; - } - break; - } - - if($clinic_id == 0){ - //opd - $patient_episodes = DB::table('patient_episodes') - ->whereNull('patient_episodes.deleted_at') - ->leftJoin('consultations', 'patient_episodes.id', '=', 'consultations.episode_id') - ->leftJoin('ante_natal_clinic_followups as a', 'patient_episodes.id', '=', 'a.episode_id') - ->leftJoin('triage', 'patient_episodes.id', '=', 'triage.episode_id') - ->select('patient_episodes.*', 'consultations.primary_diagnosis','consultations.outcome_id','consultations.completed','consultations.created_by as consultation_created_by','consultations.updated_by as consultation_updated_by','consultations.consultation_done_by', 'a.primary_diagnosis as antenatal_primary_diagnosis','a.outcome_id as antenatal_outcome_id','a.completion_status as antenatal_completed','a.created_by as antenatal_created_by','a.updated_by as antenatal_updated_by', 'triage.id as episode_triage_id', 'triage.severe_grade', 'triage.clinic_allocation') - ->whereBetween('patient_episodes.created_at', [$start_date_search, $end_date_search]) - ->orderByRaw($order_by_text) - ->paginate(200); - $clinic_name = "OPD"; - } else { - //other clinics - $patient_episodes = DB::table('patient_episodes') - ->whereNull('patient_episodes.deleted_at') - ->leftJoin('consultations', 'patient_episodes.id', '=', 'consultations.episode_id') - ->leftJoin('ante_natal_clinic_followups as a', 'patient_episodes.id', '=', 'a.episode_id') - ->leftJoin('triage', 'patient_episodes.id', '=', 'triage.episode_id') - ->where(['patient_episodes.clinic_id' => $clinic_id]) - ->whereBetween('patient_episodes.created_at', [$start_date_search, $end_date_search]) - ->orderByRaw($order_by_text) - ->select('patient_episodes.*', 'consultations.primary_diagnosis','consultations.outcome_id','consultations.completed','consultations.created_by as consultation_created_by','consultations.updated_by as consultation_updated_by','consultations.consultation_done_by', 'a.primary_diagnosis as antenatal_primary_diagnosis','a.outcome_id as antenatal_outcome_id','a.completion_status as antenatal_completed','a.created_by as antenatal_created_by','a.updated_by as antenatal_updated_by','triage.id as episode_triage_id', 'triage.severe_grade', 'triage.clinic_allocation') - ->paginate(200); - $clinic_name = get_name($clinic_id, 'id', 'name', 'clinics'); - } - - $patient_categories = DB::table("patient_categories")->whereNull('deleted_at')->pluck("name", "id"); - - $clinics = DB::table("clinics")->whereNull("deleted_at")->orderBy("name")->pluck("name", "id")->toArray(); - $clinics = [0 => 'OPD'] + $clinics; - $clinics = ['' => '- select -'] + $clinics; - - $diagnoses = DB::table('diagnoses')->where('available', 1)->whereNull('deleted_at')->pluck("name", "id")->toArray(); - - $wards = DB::table('wards')->where('available', 1)->whereNull('deleted_at')->pluck("name", "id")->prepend('- select -', ''); - - // dd($date_search); - return view('patients::patient_flow_monitoring.index', compact('patient_episodes', 'clinics', 'patient_categories','clinic_name','search_by', 'date_search', 'wards', 'diagnoses')); - } - - public function patient_route($episode_id, $route){ - - $episode = PatientEpisode::find($episode_id); - $patient_id = $episode->patient_id; - - // set up session - session()->put(['patient_id' => $patient_id]); - session()->put(['episode_id' => $episode_id]); - - if($route == 'triage'){ - $url = '/triage'; - session()->put('triage_without_etat', 0); - } elseif ($route == 'consultation'){ - session()->put('consultation_with_notes', 0); - $url = '/consultation/route'; - } elseif ($route == 'create_anaesthetics'){ - $url = '/anaesthetics/create'; - } elseif ($route == 'create_surgery'){ - $url = '/theatre_surgery/create'; - } elseif ($route == 'anaesthetics_history'){ - $url = '/anaesthetics/history'; - } elseif ($route == 'surgery_index'){ - $url = '/theatre_surgery'; - } elseif ($route == 'treatment') { - $url = '/prescriptions/create'; - } elseif ($route == 'anc_registration_button'){ - $url = '/ante_natal_clinic/create'; - } elseif ($route == 'anc_followup_button'){ - $url = '/ante_natal_clinic_follow_up/create'; - } elseif ($route == 'investigation') { - $url = '/investigations/investigations_review'; - } elseif ($route == 'triage_without_etat') { - session()->put('triage_without_etat', 1); - $url = '/triage'; - } elseif ($route == 'consultation_with_notes') { - session()->put('consultation_with_notes', 1); - $url = '/consultation/route'; - } elseif ($route == 'view_patient_history') { - $url = '/patient_episodes/'; - } elseif ($route == 'main_exam') { - $url = '/eye_clinic/main_exam_route'; - } elseif ($route == 'base_refraction_exam') { - $url = '/eye_clinic/base_exam_refraction'; - } - - return response()->json($url); - } - - public function inpatient_admission(Request $request) - { - $episode = PatientEpisode::find($request->admission_episode_id); - $patient_id = $episode->patient_id; - $ward_id = $request->admission_ward_id; - $admitted_on = $request->ward_admission_date; - - try { - $episode_id = $episode->id; - session()->put(['episode_id' => $episode_id]); - session()->put(['patient_id' => $patient_id]); - - $consultation = Consultation::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first(); - if ($consultation) { - $consultation->outcome_id = get_name("Admitted", "name", "id", "outcomes"); - $consultation->ward_id = $ward_id; - $consultation->admitted_on = $admitted_on; - $consultation->save(); - } - - // Admit patient in ward - $existing_inpatient = InpatientInfo::where(['episode_id' => $episode_id])->first(); - if ($existing_inpatient) { - $ward_id = $existing_inpatient->ward_id; - $ward_name = get_name($ward_id, "id", "name", "wards"); - - flash("Patient ".get_name($patient_id, "id", "number", "patients")." already admitted for in admitted in ".$ward_name. ". You can use the ward transfer option incase you want to transfer to another ward")->error(); - } else { - $inpatient = is_null($existing_inpatient) ? new InpatientInfo : $existing_inpatient; - $inpatient = new InpatientInfo; - $inpatient->patient_id = $patient_id; - $inpatient->episode_id = $episode_id; - $inpatient->admitted_on = $admitted_on; - $inpatient->ward_id = $ward_id; - $inpatient->created_by = auth()->user()->id; - $inpatient->created_at = Carbon::now(); - $inpatient->save(); - - $ward_name = get_name($ward_id, "id", "name", "wards"); - - flash("Patient ".get_name($patient_id, "id", "number", "patients")." admitted in ".$ward_name)->success(); - } - - return redirect('/patient_episodes/'); - } catch (QueryException $e) { - flash("This episode already exists!")->error(); - return back()->withInput(); - } - } -} diff --git a/docker/streamline-src/Modules/Patients/Http/Controllers/PointOfSaleController.php b/docker/streamline-src/Modules/Patients/Http/Controllers/PointOfSaleController.php deleted file mode 100755 index 45ff8fa9..00000000 --- a/docker/streamline-src/Modules/Patients/Http/Controllers/PointOfSaleController.php +++ /dev/null @@ -1,498 +0,0 @@ -search_date_by){ - case 'yesterday': - $end_date = Carbon::yesterday()->endOfDay(); - $start_date = Carbon::yesterday()->startOfDay(); - $search_text .= "Yesterday "; - break; - case 'custom_date': - $end_date = Carbon::parse($request->start_date)->endOfDay(); - $start_date = Carbon::parse($request->start_date)->startOfDay(); - $search_text .= "From: " . streamline_date($start_date) . " "; - break; - case 'custom_date_range': - $end_date = Carbon::parse($request->end_date)->endOfDay(); - $start_date = Carbon::parse($request->start_date)->startOfDay(); - $search_text .= "From: " . streamline_date($start_date) . " to " . streamline_date($end_date) . " "; - break; - case 'today': - default: - $end_date = Carbon::today()->endOfDay(); - $start_date = Carbon::today()->startOfDay(); - $search_text .= "Today "; - break; - } - - $records = PointOfSaleRecord::join('patients', 'point_of_sale_records.patient_id', '=', 'patients.id') - ->whereBetween('point_of_sale_records.created_at', [$start_date, $end_date]) - ->limit(500)->get(['point_of_sale_records.*', 'patients.first_name', 'patients.last_name', 'patients.number']); - - return view('patients::point_of_sale.index', compact('records', 'search_text')); - } - - public function order_items(){ - $drugs = Drug::get(); - $sundries = Sundry::where('available', 1)->get(); - $services = Services::where('available', 1)->get(); - $eye_glasses = EyeGlasses::get(); - $referral_hospitals = ReferralHospital::orderBy('name')->get(); - - return view('patients::point_of_sale.order_items', compact('drugs', 'eye_glasses', 'sundries', 'referral_hospitals', 'services')); - } - - public function confirm_items(Request $request) - { - $pre_ordered_eye_glasses = []; - $manual_patient_prescriptions = []; - $automatic_patient_prescriptions = []; - $pre_ordered_sundries = []; - $pre_ordered_services = []; - - if($request->patient_id) { - $patient_id = $request->patient_id; - $patient = Patient::find($patient_id); - - // double check if for existing patient_id - if($patient){ - $patient_number = Patient::where('id', $patient_id)->pluck('number')->first(); - $episode_id = PatientEpisode::where('patient_id',$patient_id)->whereDate('created_at', Carbon::today()->toDateString())->pluck('id')->first(); - if(!$episode_id){ - $episode = new PatientEpisode; - $episode->patient_id = $patient_id; - $episode->paid_over = "pos"; - $episode->created_by = Auth::id(); - $episode->updated_by = Auth::id(); - $episode->save(); - flash('A new episode for patient with patient number ' . $patient_number . ' has been initiated.'); - - $episode_id = $episode->id; - } - - } else { - flash('Patient not found')->error(); - redirect('point_of_sale'); - } - } else { - $patient = new Patient; - $patient->first_name = $request->first_name; - $patient->last_name = $request->last_name; - $patient->phone = $request->phone_number ?? ""; - $patient->referred_from = $request->referral_hospital ?? 1; - $patient->category_id = 1; - $patient->created_by = Auth::id(); - $patient->gender = $request->gender ?? 2; - - if (is_null($request->date_of_birth)) { - $age_in_years = $request->age_in_years ?? 18; - $calculated_dob = \Carbon\Carbon::now()->subYears($age_in_years); - $calculated_date_of_birth = $calculated_dob->toDateString(); - $patient->date_of_birth = $calculated_date_of_birth; - } else { - $patient->date_of_birth = Carbon::createFromFormat('d/m/Y', $request->date_of_birth)->toDateString(); - } - - if ($patient->save()): - $prefix = DB::table('hospital_information')->where('id', 1)->value('patient_number_abbr'); - $patient_id = $patient->id; - $new_id = quadLimit($patient_id); - $patient_number = $prefix . "-" . $new_id; - DB::table('patients')->where('id', $new_id)->update(['number' => $patient_number]); // Updating the patient number - else: - flash("There was an error")->error(); - return back()->withInput(); - endif; - - $episode = new PatientEpisode; - $episode->patient_id = $patient_id; - $episode->clinic_id = get_default_hospital_clinic(); - $episode->paid_over = "pos"; - $episode->created_by = Auth::id(); - $episode->updated_by = Auth::id(); - - try { - $episode->save(); - $episode_id = $episode->id; - flash('Patient with patient number ' . $patient_number . ' has been successfully registered.')->success(); - } catch (QueryException $e) { - flash("This episode already exists!")->error(); - return back()->withInput(); - } - } - - if ($request->selected_eye_glasses) { - $pre_ordered_eye_glasses = EyeGlasses::whereIn('id', $request->selected_eye_glasses)->get(); - if (stock_levels_to_consider() == 0) {//getting total stock for optical from both stores and pharmacy - foreach($pre_ordered_eye_glasses as $eye) {$eye->total_stock = $this->itemStockService->getItemAllQuantityByTotal($eye->id, 7);} - } else{//getting total stock for opticals from pharmacy - foreach($pre_ordered_eye_glasses as $eye) {$eye->total_stock = $this->itemStockService->getItemQuantity('pharmacy_stock',$eye->id, 7);} - } - - } - if ($request->selected_drugs) { - if($request->manual_drug_select == 1){ - $manual_patient_prescriptions = Drug::whereIn('id', $request->selected_drugs)->get(); - if (stock_levels_to_consider() == 0) {//getting total stock for drugs from both stores and pharmacy - foreach($manual_patient_prescriptions as $drug) {$drug->total_stock = $this->itemStockService->getItemAllQuantityByTotal($drug->id, 1);} - } else {//getting total stock for drugs from pharmacy - foreach($manual_patient_prescriptions as $drug) {$drug->total_stock = $this->itemStockService->getItemQuantity('pharmacy_stock',$drug->id, 1);} - } - - }else if($request->automatic_drug_select == 1){ - $automatic_patient_prescriptions = Drug::whereIn('id', $request->selected_drugs)->get(); - if (stock_levels_to_consider() == 0) {//getting total stock for drugs from both stores and pharmacy - foreach($automatic_patient_prescriptions as $drug) {$drug->total_stock = $this->itemStockService->getItemAllQuantityByTotal($drug->id, 1);} - } else{//getting total stock for optical from pharmacy - foreach($automatic_patient_prescriptions as $drug) {$drug->total_stock = $this->itemStockService->getItemQuantity('pharmacy_stock',$drug->id, 1);} - } - } - } - if ($request->selected_sundries) { - $pre_ordered_sundries = Sundry::whereIn('id', $request->selected_sundries)->get(); - if (stock_levels_to_consider() == 0) {//getting total stock for sundry from both stores and pharmacy - foreach($pre_ordered_sundries as $sundry) {$sundry->total_stock = $this->itemStockService->getItemAllQuantityByTotal($sundry->id, 2);} - } else{//getting total stock for optical from pharmacy - foreach($pre_ordered_sundries as $sundry) {$sundry->total_stock = $this->itemStockService->getItemQuantity('pharmacy_stock',$sundry->id, 2);} - } - - } - - if ($request->selected_services) { - $pre_ordered_services = Services::whereIn('id', $request->selected_services)->get(); - } - - $allergies = DB::table('allergies')->where(['patient_id' => $patient_id])->pluck('patient_id', 'names'); - - return view('patients::point_of_sale.confirm_items', compact('patient_id', 'episode_id', 'pre_ordered_eye_glasses', - 'manual_patient_prescriptions', 'automatic_patient_prescriptions', 'allergies', 'patient', 'pre_ordered_sundries', 'pre_ordered_services')); - } - - public function confirm_pricing(Request $request){ - $order_sundries_id = NULL; - $treatment_id = NULL; - $order_optical_id = NULL; - $order_service_id = NULL; - - if($request->treatment_item){ - $treatment = new Treatment; - $treatment->patient_id = $request->patient_id; - $treatment->episode_id = $request->episode_id; - $treatment->drugs = implode(',', $request->treatment_item); - - $drugs_array = $request->treatment_item; - $duration_array = $request->duration; - $time_array = $request->time; - $time_duration = []; - $doses = $request->dose ?? []; - $frequencies = $request->frequency ?? []; - $dose_array = []; - $frequencies_array = []; - $instructions_array = []; - - for ($i = 0; $i < count($drugs_array); $i++) { - if (is_drug_chronic($drugs_array[$i])) { - register_chronic_patient($request->patient_id, $request->episode_id, $drugs_array[$i]); - } - - if (isset($duration_array[$i]) && isset($time_array[$i])) { - $time_duration[] = $duration_array[$i] . " " . $time_array[$i]; - } else { - $time_duration[] = "1 Days"; - } - - if (isset($doses[$i])) { - $dose_array[] = $doses[$i]; - } else { - $dose_array[] = "1"; - } - - if (isset($frequencies[$i])) { - $frequencies_array[] = $frequencies[$i]; - } else { - $frequencies_array[] = "2"; - } - - $instructions_array[] = ""; - } - - $treatment->doses = implode(',', $dose_array); - $treatment->frequencies = implode(',', $frequencies_array); - $treatment->instruction = implode(',', $instructions_array); - $treatment->durations = implode(',', $time_duration); - $treatment->quantities_dispensed = implode(',', $request->treatment_quantity); - $treatment->dispense_status = 0; - $treatment->is_pos = 1; - $treatment->created_by = Auth::id(); - $treatment->save(); - - $treatment_id = $treatment->id; - } - - if($request->eye_glass_item){ - $new_ordered_eye_glasses = new OrderedEyeGlasses; - $new_ordered_eye_glasses->patient_id = $request->patient_id; - $new_ordered_eye_glasses->episode_id = $request->episode_id; - $new_ordered_eye_glasses->eye_glasses_id = implode(",", $request->eye_glass_item); - $new_ordered_eye_glasses->quantity = implode(",", $request->eye_glass_quantity); - $new_ordered_eye_glasses->payment_status = 0; //0 by default to mean not paid - $new_ordered_eye_glasses->created_by = auth()->id(); - $new_ordered_eye_glasses->is_pos = 1; - $new_ordered_eye_glasses->save(); - - $order_optical_id = $new_ordered_eye_glasses->id; - } - - if($request->pos_sundry_ids){ - $new_ordered_sundries = new OrderedSundry; - $new_ordered_sundries->patient_id = $request->patient_id; - $new_ordered_sundries->episode_id = $request->episode_id; - $new_ordered_sundries->sundries_id = implode(",", $request->pos_sundry_ids); - $new_ordered_sundries->quantity = implode(",", $request->sundry_quantity); - $new_ordered_sundries->created_by = auth()->id(); - $new_ordered_sundries->is_pos = 1; - $new_ordered_sundries->save(); - - $order_sundries_id = $new_ordered_sundries->id; - } - - if ($request->service_id && $request->service_id[0] != null) { - $new_ordered_service = new OrderedService; - $new_ordered_service->patient_id = $request->patient_id; - $new_ordered_service->episode_id = $request->episode_id; - $new_ordered_service->service_id = implode(",", $request->service_id); - $new_ordered_service->quantity = implode(",", $request->quantity); - $new_ordered_service->performed = 0; - $new_ordered_service->performed_id = 0; - $new_ordered_service->created_by = auth()->id(); - $new_ordered_service->is_pos = 1; - $new_ordered_service->save(); - - $order_service_id = $new_ordered_service->id; - } - - $treatment_item = $treatment_quantity = $treatment_subtotal = []; - // save for treatment - if($request->treatment_item){ - $treatment_item = $request->treatment_item; - $treatment_quantity = $request->treatment_quantity; - $treatment_subtotal = $request->treatment_subtotal; - } - - $eye_glasses_prices_array = $eye_glasses_quantity_array = $eye_glasses_ids_array = []; - // save for eye_glasses arrays - if($request->eye_glass_item){ - $eye_glasses_prices_array = $request->eye_glass_subtotal; - $eye_glasses_quantity_array = $request->eye_glass_quantity; - $eye_glasses_ids_array = $request->eye_glass_item; - } - - $sundry_item = $sundry_quantity = $sundry_subtotal = []; - // save for sundries array - if($request->pos_sundry_ids){ - $sundry_item = $request->pos_sundry_ids; - $sundry_quantity = $request->sundry_quantity; - $sundry_subtotal = $request->sundry_subtotal; - } - - // save for service arrays - $service_ids_array = []; - $service_prices_array = []; - $service_quantity_array = []; - - if($request->service_id){ - $service_prices_array = $request->service_item_subtotal; - $service_ids_array = $request->service_id; - $service_quantity_array = $request->quantity; - } - - $pos_record = new PointOfSaleRecord(); - $pos_record->patient_id = $request->patient_id; - $pos_record->episode_id = $request->episode_id; - $pos_record->treatments = count($treatment_item) > 0 ? json_encode([ - "ids" => $treatment_item, "quantity" => $treatment_quantity, - "subtotal" => $treatment_subtotal, "order_id" => $treatment_id - ]) : NULL; - $pos_record->eye_glasses = count($eye_glasses_ids_array) > 0 ? json_encode([ - "ids" => $eye_glasses_ids_array, "quantity" => $eye_glasses_quantity_array, - "subtotal" => $eye_glasses_prices_array, "order_id" => $order_optical_id - ]) : NULL; - $pos_record->sundries = count($sundry_item) > 0 ? json_encode([ - "ids" => $sundry_item, "quantity" => $sundry_quantity, - "subtotal" => $sundry_subtotal, "order_id" => $order_sundries_id - ]) : NULL; - $pos_record->services = count($service_ids_array) > 0 ? json_encode([ - "ids" => $service_ids_array, "quantity" => $service_quantity_array, - "subtotal" => $service_prices_array, "order_id" => $order_service_id - ]) : NULL; - $pos_record->created_by = Auth::id(); - $pos_record->save(); - - return redirect('point_of_sale/print/' . $pos_record->id); - } - - public function add_referral(Request $request) { - $logged_in_user_id = Auth::id(); - $referral_hospital = new ReferralHospital; - $referral_hospital->name = $request->name; - $referral_hospital->created_by = $logged_in_user_id; - $referral_hospital->updated_by = $logged_in_user_id; - - if ($referral_hospital->save()) { - //insert successful - return $referral_hospital->id; - } else { - return 0; - } - } - - public function get_patient(Request $request){ - $patient = Patient::where('id', $request->patient_id)->first(); - return $patient; - } - - public function print($id) { - $record = PointOfSaleRecord::find($id); - - if ($record) { - if (is_cashier_receipt_type_print_html()) { - $hospital_information = HospitalInformation::first(); - $patient = Patient::find($record->patient_id); - $receipt_date = $record->created_at; - $receipt_reprint_date = date('Y-m-d h:i:s'); - $first_printed_by = $record->created_by; - - $treatments_array = json_decode($record->treatments, true); - $sundries_array = json_decode($record->sundries, true); - $eye_glasses_array = json_decode($record->eye_glasses, true); - $services_array = json_decode($record->services, true); - - $treatment_item = $treatments_array ? $treatments_array["ids"] : []; - $treatment_quantity = $treatments_array ? $treatments_array["quantity"] : []; - $treatment_subtotal = $treatments_array ? $treatments_array["subtotal"] : []; - $treatment_number = $treatments_array ? ($treatments_array["order_id"] ?? 0) : []; - $eye_glasses_ids_array = $eye_glasses_array ? $eye_glasses_array["ids"] : []; - $eye_glasses_quantity_array = $eye_glasses_array ? $eye_glasses_array["quantity"] : []; - $eye_glasses_prices_array = $eye_glasses_array ? $eye_glasses_array["subtotal"] : []; - $eye_glasses_number = $eye_glasses_array ? ($eye_glasses_array["order_id"] ?? 0) : []; - $sundry_item = $sundries_array ? $sundries_array["ids"] : []; - $sundry_quantity = $sundries_array ? $sundries_array["quantity"] : []; - $sundry_subtotal = $sundries_array ? $sundries_array["subtotal"] : []; - $sundry_number = $sundries_array ? ($sundries_array["order_id"] ?? 0) : []; - $service_ids_array = $services_array ? $services_array["ids"] : []; - $service_quantity_array = $services_array ? $services_array["quantity"] : []; - $service_prices_array = $services_array ? $services_array["subtotal"] : []; - $service_number = $services_array ? ($services_array["order_id"] ?? 0) : []; - - return view('patients::point_of_sale.receipt', compact('treatment_item', 'treatment_quantity', 'treatment_subtotal', - 'eye_glasses_prices_array', 'eye_glasses_quantity_array', 'eye_glasses_ids_array', 'hospital_information', 'patient', 'receipt_date', 'first_printed_by', - 'sundry_item','sundry_quantity','sundry_subtotal', 'service_ids_array', 'service_prices_array', 'service_quantity_array', 'receipt_reprint_date', - 'eye_glasses_number', 'treatment_number', 'sundry_number', 'service_number')); - } else { - // set up the redirect link for html - session()->put('print_pos_pdf', 1); - session()->put('print_pos_pdf_id', $id); - - return redirect('/point_of_sale'); - } - } else { - return redirect('/point_of_sale'); - } - } - - public function print_pos_pdf() { - $id = session()->get("print_pos_pdf_id"); - - // add check for when the people try to reload the page - if (!$id) { - return redirect('/point_of_sale'); - } - - // lest i forget Thy love for me - session()->forget('print_pos_pdf'); - session()->forget('print_pos_pdf_id'); - - $record = PointOfSaleRecord::find($id); - - if ($record) { - $hospital_information = HospitalInformation::first(); - $patient = Patient::find($record->patient_id); - $receipt_date = $record->created_at; - $receipt_reprint_date = date('Y-m-d h:i:s'); - - $treatments_array = json_decode($record->treatments, true); - $sundries_array = json_decode($record->sundries, true); - $eye_glasses_array = json_decode($record->eye_glasses, true); - $services_array = json_decode($record->services, true); - - $treatment_item = $treatments_array ? $treatments_array["ids"] : []; - $treatment_quantity = $treatments_array ? $treatments_array["quantity"] : []; - $treatment_subtotal = $treatments_array ? $treatments_array["subtotal"] : []; - $treatment_number = $treatments_array ? ($treatments_array["order_id"] ?? 0) : []; - $eye_glasses_ids_array = $eye_glasses_array ? $eye_glasses_array["ids"] : []; - $eye_glasses_quantity_array = $eye_glasses_array ? $eye_glasses_array["quantity"] : []; - $eye_glasses_prices_array = $eye_glasses_array ? $eye_glasses_array["subtotal"] : []; - $eye_glasses_number = $eye_glasses_array ? ($eye_glasses_array["order_id"] ?? 0) : []; - $sundry_item = $sundries_array ? $sundries_array["ids"] : []; - $sundry_quantity = $sundries_array ? $sundries_array["quantity"] : []; - $sundry_subtotal = $sundries_array ? $sundries_array["subtotal"] : []; - $sundry_number = $sundries_array ? ($sundries_array["order_id"] ?? 0) : []; - $service_ids_array = $services_array ? $services_array["ids"] : []; - $service_quantity_array = $services_array ? $services_array["quantity"] : []; - $service_prices_array = $services_array ? $services_array["subtotal"] : []; - $service_number = $services_array ? ($services_array["order_id"] ?? 0) : []; - - $data = [ - "patient" => $patient, "receipt_date" => $receipt_date, "receipt_reprint_date" => $receipt_reprint_date, "hospital_information" => $hospital_information, - "treatment_item" => $treatment_item, "treatment_quantity" => $treatment_quantity, "treatment_subtotal" => $treatment_subtotal, - "eye_glasses_ids_array" => $eye_glasses_ids_array, "eye_glasses_quantity_array" => $eye_glasses_quantity_array, "eye_glasses_prices_array" => $eye_glasses_prices_array, - "sundry_item" => $sundry_item, "sundry_quantity" => $sundry_quantity, "sundry_subtotal" => $sundry_subtotal, - "service_ids_array" => $service_ids_array, "service_quantity_array" => $service_quantity_array, "service_prices_array" => $service_prices_array, - "treatment_number" => $treatment_number, "eye_glasses_number" => $eye_glasses_number, "sundry_number" => $sundry_number, "service_number" => $service_number, - ]; - - $pdf = SnappyPDF::loadView('patients::point_of_sale.print_pos_pdf', $data) - ->setOrientation('portrait') - ->setPaper('a4') - ->setOption('margin-bottom', 5) - ->setOption('margin-top', 5) - ->setOption('footer-html', '© ' . date('Y') . ' Stre@mline'); - - return $pdf->inline('Patient Receipt' . date(" d-m-y h:ia") . '.pdf'); - } else { - return redirect('/point_of_sale'); - } - } -} diff --git a/docker/streamline-src/Modules/Patients/Http/Controllers/TriageController.php b/docker/streamline-src/Modules/Patients/Http/Controllers/TriageController.php deleted file mode 100755 index 6748ff84..00000000 --- a/docker/streamline-src/Modules/Patients/Http/Controllers/TriageController.php +++ /dev/null @@ -1,1238 +0,0 @@ -get('patient_id'); - $episode_id = session()->get('episode_id'); - - $triage_results = DB::table('triage') - ->where('patient_id', '=', $patient_id) - ->where('episode_id', '=', $episode_id) - ->first(); - - if ($triage_results) { - //triage already performed - return redirect('triage/' . $triage_results->id); - } else { - //triage not performed - return redirect("/triage/create"); - } - } - - /** - * Show the form for creating a new resource. - * - * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View - */ - public function create() - { - $patient_id = session()->get('patient_id'); - $episode_id = session()->get('episode_id'); - $patient = Patient::where('id', $patient_id)->first(); - - if (session()->get('triage_without_etat') == 1) { - $triage_without_etat = true; - } else { - $triage_without_etat = false; - } - - $clinics = DB::table('clinics')->where('available', 1)->whereNull('deleted_at')->orderBy('name')->pluck("name", "id")->toArray(); - $referral_hospitals = DB::table('referral_hospitals')->whereNull('deleted_at')->orderBy('name')->pluck("name", "id")->toArray(); - $symptoms = DB::table('symptoms')->whereNull('deleted_at')->orderBy('name')->pluck("name", "id")->toArray(); - $family_planning_methods = DB::table('family_planning_methods')->orderBy('name')->pluck("name", "id")->toArray(); - - $clinics = ['' => '- select -'] + $clinics; - $referral_hospitals = ['' => '- select -'] + $referral_hospitals; - $symptoms = ['' => '- select -'] + $symptoms; - $family_planning_methods = ['' => '- select -'] + $family_planning_methods; - - $symptoms_periods = ['' => '- select -', 'Hours' => 'Hours', 'Days' => 'Days', 'Weeks' => 'Weeks', 'Months' => 'Months', 'Years' => 'Years']; - - //determine the age group - $today = date("Y-m-d"); - $dob = isset($patient) ? Carbon::parse($patient->date_of_birth) : null; - $age_diff_days = isset($patient) ? $dob->diffInDays(Carbon::now()) : null; - $age_diff_months = isset($patient) ? $age_diff_days / 30.436875 : null; - $difference = days_months_years($dob, $today); - - $days = $difference[0]; - $months = $difference[1]; - $years = $difference[2]; - - // create default age group - $age_group_display = ''; - $age_group = 0; - $age_group_id = 0; - - $age_group_records = DB::table('age_groups')->whereNull('deleted_at')->get()->toArray(); - - foreach ($age_group_records as $age_group_record) { - // turn into days - if ($age_group_record->age_type == 3) { - // days - $first_day = $age_group_record->from_age; - $last_day = $age_group_record->to_age; - } elseif ($age_group_record->age_type == 2) { - // months - $first_day = $age_group_record->from_age * 30; - $last_day = $age_group_record->to_age * 30; - } else { - // years - $first_day = $age_group_record->from_age * 365; - $last_day = $age_group_record->to_age * 365; - } - - if (between($age_diff_days, $first_day, $last_day)) { - $age_group_display = $age_group_record->name; - $age_group_id = $age_group_record->id; - break; - } - } - - if (between($days, 0, 28) && between($months, 0, 0) && between($years, 0, 0)) { - $age_group = 1; - $default_age_group_display = "0 - 28 Days"; - } elseif (between($days, 0, 31) && between($months, 1, 12) && between($years, 0, 0)) { - $age_group = 2; - $default_age_group_display = "1 - 12 Months"; - } elseif (between($days, 0, 31) && between($months, 0, 12) && between($years, 1, 5)) { - $age_group = 3; - $default_age_group_display = "1 - 5 Years"; - } elseif (between($days, 0, 31) && between($months, 0, 12) && between($years, 6, 12)) { - $age_group = 4; - $default_age_group_display = "6 - 12 Years"; - } elseif (between($days, 0, 31) && between($months, 0, 12) && between($years, 13, 200)) { - $age_group = 5; - $default_age_group_display = "> 12 Years"; - } - - // if none of the age groups has a fit lets use the default - if ($age_group_display == '') { - $age_group_display = $default_age_group_display; - } - - $observations = DB::table('observations')->whereNull('deleted_at')->whereRaw('FIND_IN_SET(' . $age_group_id . ',age_group)')->get(); - - return view('patients::triage.create', compact('episode_id', 'age_group_display', 'age_group', 'symptoms', 'years', 'patient', 'family_planning_methods', 'referral_hospitals', 'clinics', 'patient_id', - 'episode_id', 'observations', 'symptoms_periods', 'age_diff_months', 'triage_without_etat')); - } - - /** - * Store a newly created resource in storage. - * - */ - public function store(Request $request) - { - $validator = Validator::make($request->all(), [ - 'triage_grade' => 'required', - 'referral_hospital' => 'required', - 'clinic_allocation' => 'required', - 'patient_id' => 'required', - 'episode_id' => 'required|unique:triage', - 'observationsValues' => ['required_unless:any_tb_sysmptoms, 1'], - 'mother_hiv_positive' => 'boolean', - 'has_been_sick_last_3_months' => ['required_if:mother_hiv_positive,true,boolean'], - 'has_recurring_skin_problem' => ['required_if:mother_hiv_positive,true,boolean'], - 'has_lost_weight_last_3_months' => ['required_if:mother_hiv_positive,true,boolean'], - 'has_had_tb' => ['required_if:mother_hiv_positive,true,boolean'], - 'is_growing_well' => ['required_if:mother_hiv_positive,true,boolean'], - ]); - - if ($validator->fails()) { - $string = ""; - foreach ($validator->errors()->getMessages() as $item) { - $string .= "{$item[0]}
"; - } - flash()->error($string); - return back()->withErrors($validator)->withInput(); - } else { - $logged_in_user_id = Auth()->user()->id; - - $triage = new Triage; - - $patient_id = $request->patient_id; - $episode_id = $request->episode_id; - - // @TODO First check if there is a triage with the same patient and the same episode Alert the user and then not proceed - $emergency_signs = false; - - // Receiving the emergency signs from here - if (isset($request->cyanosis)) : - $emergency_signs = true; - - // Airway - $cyanosis = $request->cyanosis; - $stridor = $request->stridor; - $severe_distress = $request->severe_distress; - - // Circulation - $refill = $request->refill; - $severe_bleeding = $request->severe_bleeding; - $weak_fast_pulse = $request->weak_fast_pulse; - - // neurological - $coma = $request->coma; - $convulsing_now = $request->convulsing_now; - - // Dehydration - $lethargy = $request->lethargy; - - $airway_array = array( - __('layout.cyanosis') => $cyanosis, - __('layout.stridor_breathing_choking') => $stridor, - __('layout.severe_resp_distress') => $severe_distress - ); - - $circulation_array = array( - __('layout.capillary_refill_seconds') => $refill, - __('layout.severe_bleeding') => $severe_bleeding, - __('layout.weak_fast_pulse') => $weak_fast_pulse - ); - - $neurological_array = array( - __('layout.coma') => $coma, - __('layout.convulsing_now') => $convulsing_now - ); - - $dehydration_array = array( - __('layout.diarrhoea_lethargy_sunken_eyes') => $lethargy - ); - - $airway = serialize($airway_array); - $circulation = serialize($circulation_array); - $neurological = serialize($neurological_array); - $dehydration = serialize($dehydration_array); - endif; - - - // Receiving the priority signs - $priority_signs = array(); - - isset($request->trauma) ? $priority_signs[] = __('layout.significant_trauma') : ''; - isset($request->severe_pain) ? $priority_signs[] = __('layout.severe_pain') : ''; - isset($request->oedema) ? $priority_signs[] = __('layout.oedema_both_feet') : ''; - isset($request->surgical_condition) ? $priority_signs[] = __('layout.urgent_surgical_condition') : ''; - isset($request->continuously_irritable) ? $priority_signs[] = __('layout.restless_irritable') : ''; - isset($request->severe_wasting) ? $priority_signs[] = __('layout.malnutrition_visible_wasting') : ''; - isset($request->severe_pallor) ? $priority_signs[] = __('layout.severe_pallor') : ''; - isset($request->burns) ? $priority_signs[] = __('layout.burns_major') : ''; - $priority_array = serialize($priority_signs); - - - // Receiving family planning - $too_sick = $request->too_sick; - $sexually_active = $request->sexually_active; - $pregnant = $request->pregnant; - $menopause = $request->menopause; - $fp_method = $request->fp_method; - $fp_action = $request->fp_action; - - - // Other triage fields - $new_attendance = !empty($request->new_attendance) ? 1 : 0; - $re_attendance = !empty($request->re_attendance) ? 1 : 0; - - $episode_id = $request->episode_id; - - $triage_grade = $request->triage_grade; - $comment = $request->comment; - $referal = $request->referral_hospital; - $clinic_allocation = $request->clinic_allocation; - - // Build symptoms and duration variables - $symptoms_array = $request->symptoms ?? []; - $duration_array = $request->duration ?? []; - $time_array = $request->time ?? []; - $durations_final = []; - - for ($x = 0; $x < count($symptoms_array); $x++) { - $durations_final[] = $duration_array[$x] . " " . $time_array[$x]; - } - - // Build observation variables - $observationsNames_array = !empty($request->observationsNames)? $request->observationsNames:[]; - $obersavationsValues_array = $request->observationsValues; - $observations = []; - - for ($z = 0; $z < count($observationsNames_array); $z++) { - $observations[] = $observationsNames_array[$z] . '=' . $obersavationsValues_array[$z]; - } - - $triage->referral = $referal; - $triage->symptoms = implode(",", $symptoms_array); - $triage->symptom_duration = implode(",", $durations_final); - $triage->observations = implode(",", $observations); - $triage->severe_grade = $triage_grade; - $triage->comments = $comment; - $triage->clinic_allocation = $clinic_allocation; - $triage->patient_id = $patient_id; - $triage->episode_id = $episode_id; - $triage->sexually_active = $sexually_active; - $triage->pregnant = $pregnant; - $triage->menopause = $menopause; - $triage->fp_method = $fp_method; - $triage->fp_action = $fp_action; - $triage->fp_too_sick = $too_sick; - $triage->new_attendance = $new_attendance; - $triage->re_attendance = $re_attendance; - $triage->any_tb_sysmptoms = $request->any_tb_sysmptoms; - $triage->cough_for_2_weeks = $request->cough_for_2_weeks; - $triage->fever_for_2_weeks = $request->fever_for_2_weeks; - $triage->tb_weight_loss = $request->tb_weight_loss; - $triage->tb_excessive_night_sweats = $request->tb_excessive_night_sweats; - $triage->tb_poor_weight_gain = $request->tb_poor_weight_gain; - $triage->tb_contact_with_tb_person = $request->tb_contact_with_tb_person; - $triage->blood_group = $request->blood_group ?? NULL; - $triage->rhesus_factor = $request->rhesus_factor ?? NULL; - $triage->observation_notes = $request->observation_notes ?? NULL; - $triage->nursing_notes = $request->nursing_notes ?? NULL; - $triage->created_by = $logged_in_user_id; - - // begin saving for discharge mortality risk - $discharge_mortality = DB::table('discharge_mortality_risk')->where('patient_id', $patient_id) - ->where('episode_id', $episode_id) - ->first(); - - if(!empty($observationsNames_array)) $observation_array = array_combine($observationsNames_array, $obersavationsValues_array); - - if ($discharge_mortality && is_smart_discharge_enabled()) { - if (isset($request->bcs_eye_movement) && isset($request->bcs_best_mortal) && isset($request->bcs_best_verbal)) { - $total = $request->bcs_eye_movement + $request->bcs_best_mortal + $request->bcs_best_verbal; - - - if ($total == 5) { - $bcs = 0; - } else { - $bcs = 1; - } - } else { - $bcs = null; - } - - if (isset($request->maternal_hiv)) { - if ($request->maternal_hiv == 1) { - $hiv_mom_positive = 0; - $hiv_mom_unknown = 0; - } else if ($request->maternal_hiv == 2) { - $hiv_mom_positive = 1; - $hiv_mom_unknown = 0; - } else if ($request->maternal_hiv == 3) { - $hiv_mom_positive = 0; - $hiv_mom_unknown = 1; - } else { - $hiv_mom_positive = 0; - $hiv_mom_unknown = 0; - } - } else { - $hiv_mom_positive = null; - $hiv_mom_unknown = null; - } - - DB::table('discharge_mortality_risk') - ->where('id', $discharge_mortality->id) - ->update([ - 'weight' => $observation_array["Weight"] ?? null, - 'muac_below_6' => isset($observation_array["MUAC"]) ? ($observation_array["MUAC"] * 10) : null, - 'bmi_below_6' => $observation_array["BMI"] ?? null, - 'hospital_travel_duration_below_6' => $request->hospital_travel_duration ?? null, - 'illness_duration_at_admission_below_6' => $request->illness_duration ?? null, - 'tone_normal_6mo' => $request->tone_normal_6mo ?? null, - 'last_hospitalization' => $request->last_hospitalization ?? null, - 'water_source' => $request->water_source ?? null, - 'filter_water' => $request->safe_water ?? null, - 'child_mosquito_net' => $request->child_mosquito_net ?? null, - 'mother_education_level' => $request->mother_education_level ?? null, - 'hospital_travel_duration' => $request->hospital_travel_duration ?? null, - 'muac' => isset($observation_array["MUAC"]) ? ($observation_array["MUAC"] * 10) : null, - 'temperature' => $observation_array["Temperature"] ?? null, - 'oxy_saturation' => $observation_array["SaO2"] ?? null, - 'bcs' => $bcs, - 'bcs_eye_movement' => $request->bcs_eye_movement ?? null, - 'bcs_best_mortal' => $request->bcs_best_mortal ?? null, - 'bcs_best_verbal' => $request->bcs_best_verbal ?? null, - 'maternal_hiv' => $request->maternal_hiv ?? null, - 'hiv_mom_positive' => $hiv_mom_positive, - 'hiv_mom_unknown' => $hiv_mom_unknown, - 'maternal_age' => $request->maternal_age ?? null, - 'child_hiv' => $request->child_hiv ?? null, - 'child_with_proven_infection' => $request->child_with_proven_infection ?? null, - ]); - } - // end discharge mortality risk save - - try { - if ($triage->save()) { - - // Get the previous inserted id of the triage - $new_triage_id = $triage->id; - - // Inserting National Early Warning Score - if (isset($request->adult)) { - $triage_news = new TriageNews; - $triage_news->triage_id = $new_triage_id; - $triage_news->episode_id = $episode_id; - $triage_news->patient_id = $patient_id; - $triage_news->temperature = isset($request->tempNews) ? $request->tempNews : null; - $triage_news->heart_rate = isset($request->pulseNews) ? $request->pulseNews : null; - $triage_news->respiration_rate = isset($request->respNews) ? $request->respNews : null; - $triage_news->oxygen_saturations = isset($request->saNews) ? $request->saNews : null; - $triage_news->systolic_bp = isset($request->sysNews) ? $request->sysNews : null; - $triage_news->conscious_level = isset($request->conNews) ? $request->conNews : null; - $triage_news->supplementary_oxygen = isset($request->suOxNews) ? $request->suOxNews : null; - $triage_news->created_by = $logged_in_user_id; - $triage_news->save(); - } - - // Inserting the emergency signs - if ($emergency_signs) : - $emergency_sign = new EmergencySign; - - $emergency_sign->airway = $airway; - $emergency_sign->circulation = $circulation; - $emergency_sign->neurological = $neurological; - $emergency_sign->dehydration = $dehydration; - $emergency_sign->patient_id = $patient_id; - $emergency_sign->triage_id = $new_triage_id; - $emergency_sign->episode_id = $episode_id; - $emergency_sign->created_by = $logged_in_user_id; - $emergency_sign->save(); - endif; - - // Inserting the priority signs - if ($priority_signs != "") : - $priority_sign = new PrioritySign; - $priority_sign->signs = $priority_array; - $priority_sign->triage_id = $new_triage_id; - $priority_sign->patient_id = $patient_id; - $priority_sign->episode_id = $episode_id; - $priority_sign->created_by = $logged_in_user_id; - $priority_sign->save(); - endif; - - // Updating the patient episode table with the triage details - $episode_update = PatientEpisode::find($episode_id); - $episode_update->triage_id = $new_triage_id; - $episode_update->clinic_id = $clinic_allocation; - $episode_update->updated_by = $logged_in_user_id; - $episode_update->save(); - - flash("Triage has been saved")->success(); - - $clinic_slug = get_name($clinic_allocation, "id", "slug", "clinics"); - - if ($clinic_slug == "art") { - return redirect()->route('triage.show', $new_triage_id)->with('alert-info', 'Recommended to be transmitted to the ART clinic.'); - //- return redirect("hiv_menu"); - } - } - - - - return redirect("/patient_episodes"); - } catch (QueryException $e) { - flash("An error occurred")->error(); - return back()->withInput(); - } - } - } - - public function show($id) - { - $airway = []; - $circulation = []; - $neurological = []; - $dehydration = []; - $priority_signs = []; - $triage = Triage::where('id', $id)->first(); - $patient_episode = PatientEpisode::where('triage_id', $id)->first(); - $patient_id = DB::table('triage')->where('id', $id)->value('patient_id'); - $episode_id = DB::table('patient_episodes')->where('triage_id', $id)->value('id'); - $patient = Patient::find($patient_id); - if (is_null($patient)) { - flash("This patient was deleted from the system")->error(); - return redirect()->back(); - } - $today = date("Y-m-d"); - $difference = days_months_years($patient->date_of_birth, $today); - $years = $difference[2]; - $clinics = DB::table('clinics')->pluck("name", "id"); - $referral_hospitals = DB::table('referral_hospitals')->pluck('name', 'id'); - $symptoms = DB::table('symptoms')->where('available', 1)->pluck('name', 'id'); - $categories = DB::table('patient_categories')->where('available', 1)->pluck("name", "id"); - $family_planning_methods = DB::table('family_planning_methods')->pluck("name", "id"); - - if (between($years, 0, 12)) { - $emergency_signs = EmergencySign::where('triage_id', $id)->first(); - - if ($emergency_signs) { - $airway = unserialize($emergency_signs->airway); - $circulation = unserialize($emergency_signs->circulation); - $neurological = unserialize($emergency_signs->neurological); - $dehydration = unserialize($emergency_signs->dehydration); - } - } - - if (between($years, 0, 12)) { - $priority_signs_records = PrioritySign::where('triage_id', $id)->first(); - - if ($priority_signs_records) { - $priority_signs = unserialize($priority_signs_records->signs); - } - } - - // fetch any discharge mortality info - $discharge_mortality = DB::table('discharge_mortality_risk')->where('patient_id', $patient_id) - ->where('episode_id', $episode_id) - ->first(); - - $nutrition = DB::table('triage_nutrition')->where('patient_id', $patient_id) - ->where('episode_id', $episode_id) - ->first(); - - if (session()->get('triage_without_etat') == 1) { - $triage_without_etat = true; - } else { - $triage_without_etat = false; - } - - $age_diff_months = Carbon::parse($patient->date_of_birth)->diffInMonths(Carbon::now()); - $triage_hiv = HivGenderBaseViolence::where('triage_id', $triage->id)->first(); - - return view('patients::triage.show', compact('triage', 'patient_episode', 'patient', 'clinics', 'referral_hospitals', 'symptoms', 'categories', 'family_planning_methods', 'triage_hiv', - 'episode_id', 'years', 'airway', 'circulation', 'neurological', 'dehydration', 'discharge_mortality', 'age_diff_months', 'priority_signs', 'nutrition', 'triage_without_etat')); - } - - /** - * Show the form for editing the specified resource. - * - * @param int $id - * @return \Illuminate\Contracts\View\Factory|\Illuminate\Foundation\Application|\Illuminate\View\View - */ - public function edit($id) - { - $patient_id = session()->get('patient_id'); - $episode_id = session()->get('episode_id'); - $patient = Patient::where('id', $patient_id)->first(); - - $clinics = DB::table('clinics')->where('available', 1)->whereNull('deleted_at')->orderBy('name')->pluck("name", "id")->toArray(); - $referral_hospitals = DB::table('referral_hospitals')->whereNull('deleted_at')->orderBy('name')->pluck("name", "id")->toArray(); - $symptoms = DB::table('symptoms')->whereNull('deleted_at')->orderBy('name')->pluck("name", "id")->toArray(); - $family_planning_methods = DB::table('family_planning_methods')->orderBy('name')->pluck("name", "id")->toArray(); - - $clinics = ['' => '- select -'] + $clinics; - $referral_hospitals = ['' => '- select -'] + $referral_hospitals; - $symptoms = ['' => '- select -'] + $symptoms; - $family_planning_methods = ['' => '- select -'] + $family_planning_methods; - - $symptoms_periods = ['' => '- select -', 'Hours' => 'Hours', 'Days' => 'Days', 'Weeks' => 'Weeks', 'Months' => 'Months', 'Years' => 'Years']; - - //determine the age group - $today = date("Y-m-d"); - $dob = Carbon::parse($patient->date_of_birth); - $age_diff_days = $dob->diffInDays(Carbon::now()); - - $difference = days_months_years($dob, $today); - - $days = $difference[0]; - $months = $difference[1]; - $years = $difference[2]; - - $age_group_display = ''; - $age_group = 0; - $age_group_id = 0; - - $age_group_records = DB::table('age_groups')->whereNull('deleted_at')->get()->toArray(); - - foreach ($age_group_records as $age_group_record) { - // turn into days - if ($age_group_record->age_type == 3) { - // days - $first_day = $age_group_record->from_age; - $last_day = $age_group_record->to_age; - } elseif ($age_group_record->age_type == 2) { - // months - $first_day = $age_group_record->from_age * 30; - $last_day = $age_group_record->to_age * 30; - } else { - // years - $first_day = $age_group_record->from_age * 365; - $last_day = $age_group_record->to_age * 365; - } - - if (between($age_diff_days, $first_day, $last_day)) { - $age_group_display = $age_group_record->name; - $age_group_id = $age_group_record->id; - break; - } - } - - if (between($days, 0, 28) && between($months, 0, 0) && between($years, 0, 0)) { - $age_group = 1; - $default_age_group_display = "0 - 28 Days"; - } elseif (between($days, 0, 31) && between($months, 1, 12) && between($years, 0, 0)) { - $age_group = 2; - $default_age_group_display = "1 - 12 Months"; - } elseif (between($days, 0, 31) && between($months, 0, 12) && between($years, 1, 5)) { - $age_group = 3; - $default_age_group_display = "1 - 5 Years"; - } elseif (between($days, 0, 31) && between($months, 0, 12) && between($years, 6, 12)) { - $age_group = 4; - $default_age_group_display = "6 - 12 Years"; - } elseif (between($days, 0, 31) && between($months, 0, 12) && between($years, 13, 200)) { - $age_group = 5; - $default_age_group_display = "> 12 Years"; - } - - // if none of the age groups has a fit lets use the default - if ($age_group_display == '') { - $age_group_display = $default_age_group_display; - } - - $observations = DB::table('observations')->whereNull('deleted_at')->whereRaw('FIND_IN_SET(' . $age_group_id . ',age_group)')->get(); - - $triage = Triage::find($id); - - $emergency_signs = EmergencySign::where('triage_id', $id)->first(); - - if (!empty($emergency_signs)) { - $airway = unserialize($emergency_signs->airway); - $circulation = unserialize($emergency_signs->circulation); - $neurological = unserialize($emergency_signs->neurological); - $dehydration = unserialize($emergency_signs->dehydration); - } else { - $airway = []; - $circulation = []; - $neurological = []; - $dehydration = []; - } - - $observations_to_edit_temp = explode(",", $triage->observations); - $observations_to_edit = []; - - foreach ($observations_to_edit_temp as $value) { - $temp_array = explode("=", $value); - - $observations_to_edit[$temp_array[0]] = $temp_array[1]?? null; - } - - $priority_signs = PrioritySign::where('triage_id', $id)->first(); - $priority_signs = $priority_signs ? unserialize($priority_signs->signs) : []; - - $dob = Carbon::parse($patient->date_of_birth); - - $age_diff_months = $dob->diffInMonths(Carbon::now()); - $triage_hiv = HivGenderBaseViolence::where('triage_id', $triage->id)->first(); - - return view('patients::triage.edit', compact( - 'episode_id', - 'age_group_display', - 'age_group', - 'symptoms', - 'years', - 'patient', - 'family_planning_methods', - 'referral_hospitals', - 'clinics', - 'patient_id', - 'episode_id', - 'observations', - 'triage', - 'airway', - 'circulation', - 'neurological', - 'dehydration', - 'observations_to_edit', - 'priority_signs', - 'symptoms_periods', - 'age_diff_months', - 'triage_hiv', - )); - } - - /** - * Update the specified resource in storage. - * - * @param \Illuminate\Http\Request $request - * @param int $id - * @return \Illuminate\Http\RedirectResponse - */ - public function update(Request $request, $id) - { - $validator = Validator::make($request->all(), [ - 'triage_grade' => 'required', - 'referral_hospital' => 'required', - 'clinic_allocation' => 'required', - 'observationsValues' => 'required' - ]); - - if ($validator->fails()) { - $string = ""; - foreach ($validator->errors()->getMessages() as $item) { - $string .= "{$item[0]}
"; - } - flash()->error($string); - return back()->withErrors($validator)->withInput(); - } else { - $logged_in_user_id = Auth()->user()->id; - $triage = Triage::find($id); - - $emergency_signs = false; - - // Receiving the emergency signs from here - if (isset($request->cyanosis)) : - $emergency_signs = true; - - // Airway - $cyanosis = $request->cyanosis; - $stridor = $request->stridor; - $severe_distress = $request->severe_distress; - - // Circulation - $refill = $request->refill; - $severe_bleeding = $request->severe_bleeding; - $weak_fast_pulse = $request->weak_fast_pulse; - - // neurological - $coma = $request->coma; - $convulsing_now = $request->convulsing_now; - - // Dehydration - $lethargy = $request->lethargy; - - $airway_array = array( - 'Cyanosis' => $cyanosis, - 'Stridor / obstructed breathing/ choking' => $stridor, - 'Severe respiratory distress' => $severe_distress - ); - - $circulation_array = array( - 'Capillary refill > 3 seconds' => $refill, - 'Severe bleeding' => $severe_bleeding, - 'Weak fast pulse' => $weak_fast_pulse - ); - - $neurological_array = array( - 'Coma' => $coma, - 'Convulsing Now' => $convulsing_now - ); - - $dehydration_array = array( - 'Diarrhoea with Lethargy, sunken eyes or very slow skin pinch' => $lethargy - ); - - $airway = serialize($airway_array); - $circulation = serialize($circulation_array); - $neurological = serialize($neurological_array); - $dehydration = serialize($dehydration_array); - endif; - - // Receiving the priority signs - $priority_signs = array(); - - isset($request->trauma) ? $priority_signs[] = 'Significant trauma' : ''; - isset($request->severe_pain) ? $priority_signs[] = 'severe_pain' : ''; - isset($request->oedema) ? $priority_signs[] = 'Oedema of both feet' : ''; - isset($request->surgical_condition) ? $priority_signs[] = 'Urgent surgical condition' : ''; - isset($request->continuously_irritable) ? $priority_signs[] = 'Restless continuously irritable, lethargic' : ''; - isset($request->severe_wasting) ? $priority_signs[] = 'Malnutrution: visible severe wasting' : ''; - isset($request->severe_pallor) ? $priority_signs[] = 'Severe pallor' : ''; - isset($request->burns) ? $priority_signs[] = 'Burns (Major)' : ''; - $priority_array = serialize($priority_signs); - - - // Receiving family planning - $too_sick = $request->too_sick; - $sexually_active = $request->sexually_active; - $pregnant = $request->pregnant; - $menopause = $request->menopause; - $fp_method = $request->fp_method; - $fp_action = $request->fp_action; - - - // Other triage fields - $new_attendance = !empty($request->new_attendance) ? 1 : 0; - $re_attendance = !empty($request->re_attendance) ? 1 : 0; - - $episode_id = $request->episode_id; - - $triage_grade = $request->triage_grade; - $comment = $request->comment; - $referal = $request->referral_hospital; - $clinic_allocation = $request->clinic_allocation; - - - // Build symptoms and duration variables - $symptoms_array = $request->symptoms ?? []; - $duration_array = $request->duration ?? []; - $time_array = $request->time ?? []; - $durations_final = []; - - for ($x = 0; $x < count($symptoms_array); $x++) { - $durations_final[] = $duration_array[$x] . " " . $time_array[$x]; - } - - // Build observation variables - $observationsNames_array = $request->observationsNames; - $obersavationsValues_array = $request->observationsValues; - $observations = []; - - for ($z = 0; $z < count($observationsNames_array); $z++) { - $observations[] = $observationsNames_array[$z] . '=' . $obersavationsValues_array[$z]; - } - - $triage->referral = $referal; - $triage->symptoms = implode(",", $symptoms_array); - $triage->symptom_duration = implode(",", $durations_final); - $triage->observations = implode(",", $observations); - $triage->severe_grade = $triage_grade; - $triage->comments = $comment; - $triage->clinic_allocation = $clinic_allocation; - $triage->sexually_active = $sexually_active; - $triage->pregnant = $pregnant; - $triage->menopause = $menopause; - $triage->fp_method = $fp_method; - $triage->fp_action = $fp_action; - $triage->fp_too_sick = $too_sick; - $triage->new_attendance = $new_attendance; - $triage->re_attendance = $re_attendance; - $triage->updated_by = $logged_in_user_id; - - if ($triage->save()) { - - // Inserting National Early Warning Score - if (isset($request->adult)) { - $triage_news = TriageNews::where('triage_id', $id)->first(); - $triage_news->temperature = isset($request->tempNews) ? $request->tempNews : null; - $triage_news->heart_rate = isset($request->pulseNews) ? $request->pulseNews : null; - $triage_news->respiration_rate = isset($request->respNews) ? $request->respNews : null; - $triage_news->oxygen_saturations = isset($request->saNews) ? $request->saNews : null; - $triage_news->systolic_bp = isset($request->sysNews) ? $request->sysNews : null; - $triage_news->conscious_level = isset($request->conNews) ? $request->conNews : null; - $triage_news->supplementary_oxygen = isset($request->suOxNews) ? $request->suOxNews : null; - $triage_news->updated_by = $logged_in_user_id; - $triage_news->save(); - } - - // Inserting the emergency signs - if ($emergency_signs) : - $emergency_sign = EmergencySign::where('triage_id', $id)->first(); - - if(!empty($emergency_sign)){ - $emergency_sign->airway = $airway; - $emergency_sign->circulation = $circulation; - $emergency_sign->neurological = $neurological; - $emergency_sign->dehydration = $dehydration; - $emergency_sign->updated_by = $logged_in_user_id; - $emergency_sign->save(); - }else { - $emergency_sign = new EmergencySign; - $emergency_sign->patient_id = $triage->patient_id; - $emergency_sign->triage_id = $id; - $emergency_sign->episode_id = $triage->episode_id; - $emergency_sign->airway = $airway; - $emergency_sign->circulation = $circulation; - $emergency_sign->neurological = $neurological; - $emergency_sign->dehydration = $dehydration; - $emergency_sign->created_by = $logged_in_user_id; - $emergency_sign->save(); - } - endif; - - // Inserting the priority signs - if ($priority_signs != "") : - $priority_sign = PrioritySign::where('triage_id', $id)->first(); - $priority_sign->signs = $priority_array; - $priority_sign->updated_by = $logged_in_user_id; - $priority_sign->save(); - endif; - - // Updating the patient episode table with the triage details - $episode_update = PatientEpisode::find($episode_id); - $episode_update->clinic_id = $clinic_allocation; - $episode_update->updated_by = $logged_in_user_id; - $episode_update->save(); - - flash("Triage has been updated")->success(); - - $clinic_slug = get_name($clinic_allocation, "id", "slug", "clinics"); - if ($clinic_slug == "art") { - return redirect()->route('triage.show', $triage->id)->with('alert-info', 'Recommended to be transmitted to the ART clinic.'); - //- return redirect("hiv_menu"); - } - } - - return redirect("/patient_episodes"); - } - } - - /** - * Remove the specified resource from storage. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function destroy($id) - { - // - } - - public function add_symptom(Request $request) - { - - $logged_in_user_id = Auth()->user()->id; - $symptom = new Symptom; - $symptom->name = $request->symptom_name; - $symptom->created_by = $logged_in_user_id; - if ($symptom->save()) { - //insert successful - return 1; - } else { - return 0; - } - } - - public function add_referral(Request $request) - { - - $logged_in_user_id = Auth()->user()->id; - $referral_hospital = new ReferralHospital; - $referral_hospital->name = $request->name; - $referral_hospital->created_by = $logged_in_user_id; - $referral_hospital->updated_by = $logged_in_user_id; - - if ($referral_hospital->save()) { - //insert successful - return $referral_hospital->id; - } else { - return 0; - } - } - - public function get_prompt(Request $request) - { - - $result = DB::table('symptoms')->where('id', $request->symptom_id)->first(); - - if (!empty($result->prompts)) { - $prompt = $result->prompts; - } else { - $prompt = "No prompt available"; - } - - if (!empty($result->reference_link) && !empty($result->reference_link) && $result->reference_link != "-") { - //some links just have "-" - $ref_text = '' . $result->reference_text . ''; - } else { - $ref_text = "No reference link available"; - } - - return $prompt . "&&&&" . $ref_text; - } - - public function save_smart_triage_score(Request $request) { - $smart_triage = SmartTriage::where('episode_id', $request->episode_id)->first(); - - if ($smart_triage) { - $smart_triage->age = $request->age; - $smart_triage->pulse_rate = $request->pulse_rate; - $smart_triage->temperature = $request->temperature; - $smart_triage->muac = $request->muac; - $smart_triage->transformed_oxygen_saturation = $request->transformed_oxygen_saturation; - $smart_triage->oxygen_saturation = $request->oxygen_saturation; - $smart_triage->parent_concern = $request->parent_concern; - $smart_triage->respiratory_distress = $request->respiratory_distress; - $smart_triage->oedema = $request->oedema; - $smart_triage->pallor = $request->pallor; - $smart_triage->respirations_rate = $request->respirations_rate; - $smart_triage->burns = $request->burns; - $smart_triage->severe_pain = $request->severe_pain; - $smart_triage->trauma = $request->trauma; - $smart_triage->continously_irritable = $request->continously_irritable; - $smart_triage->lethargy = $request->lethargy; - $smart_triage->convulsing = $request->convulsing; - $smart_triage->coma = $request->coma; - $smart_triage->weak_fast_pulse = $request->weak_fast_pulse; - $smart_triage->refill = $request->refill; - $smart_triage->stridor = $request->stridor; - $smart_triage->cyanosis = $request->cyanosis; - $smart_triage->linear_predictor = $request->linear_predictor; - $smart_triage->risk_score = $request->risk_score; - $smart_triage->auto_triage_grade = $request->triage_grade; - $smart_triage->selected_triage_grade = $request->selected_triage_grade; - - $smart_triage->save(); - } else { - $smart_triage = new SmartTriage(); - $smart_triage->patient_id = $request->patient_id; - $smart_triage->episode_id = $request->episode_id; - $smart_triage->age = $request->age; - $smart_triage->pulse_rate = $request->pulse_rate; - $smart_triage->temperature = $request->temperature; - $smart_triage->muac = $request->muac; - $smart_triage->transformed_oxygen_saturation = $request->transformed_oxygen_saturation; - $smart_triage->oxygen_saturation = $request->oxygen_saturation; - $smart_triage->parent_concern = $request->parent_concern; - $smart_triage->respiratory_distress = $request->respiratory_distress; - $smart_triage->oedema = $request->oedema; - $smart_triage->pallor = $request->pallor; - $smart_triage->respirations_rate = $request->respirations_rate; - $smart_triage->burns = $request->burns; - $smart_triage->severe_pain = $request->severe_pain; - $smart_triage->trauma = $request->trauma; - $smart_triage->continously_irritable = $request->continously_irritable; - $smart_triage->lethargy = $request->lethargy; - $smart_triage->convulsing = $request->convulsing; - $smart_triage->coma = $request->coma; - $smart_triage->weak_fast_pulse = $request->weak_fast_pulse; - $smart_triage->refill = $request->refill; - $smart_triage->stridor = $request->stridor; - $smart_triage->cyanosis = $request->cyanosis; - $smart_triage->linear_predictor = $request->linear_predictor; - $smart_triage->risk_score = $request->risk_score; - $smart_triage->auto_triage_grade = $request->triage_grade; - $smart_triage->selected_triage_grade = $request->selected_triage_grade; - - $smart_triage->save(); - } - - return 1; - } - - public function smart_triage_report(Request $request) - { - if (isset($request->start_date) && isset($request->end_date)) { - $start_date = Carbon::parse($request->start_date)->startOfDay()->toDateTimeString(); - $end_date = Carbon::parse($request->end_date)->endOfDay()->toDateTimeString(); - } else { - $start_date = Carbon::today()->startOfDay()->toDateTimeString(); - $end_date = Carbon::today()->endOfDay()->toDateTimeString(); - } - - $records = DB::table('smart_triage') - ->whereBetween('smart_triage.created_at', [$start_date, $end_date]) - ->leftJoin('patients', 'smart_triage.patient_id', '=', 'patients.id') - ->select('smart_triage.*', 'patients.number as patients_number', 'patients.first_name', 'patients.last_name', 'patients.date_of_birth') - ->limit(300)->get(); - - return view('patients::triage.smart_triage_report', compact('records', 'start_date', 'end_date')); - } - - public function edit_for_post_discharge($episode_id) - { - $triage = DB::table('triage')->where('episode_id', $episode_id)->first(); - - $temperature = ""; - $oxy_sat = ""; - $muac = ""; - $height = ""; - $weight = ""; - $bmi = ""; - - if ($triage) { - $old_observations = explode(",", $triage->observations); - - foreach ($old_observations as $value) { - $split_values = explode("=", $value); - - switch ($split_values[0]) { - case "Temperature": - $temperature = $split_values[1]; - break; - case "SaO2": - $oxy_sat = $split_values[1]; - break; - case "MUAC": - $muac = $split_values[1]; - break; - case "Height": - $height = $split_values[1]; - break; - case "Weight": - $weight = $split_values[1]; - break; - case "BMI": - $bmi = $split_values[1]; - break; - } - } - } - - $patient_episode = PatientEpisode::where('id', $episode_id)->first(); - $patient_id = $patient_episode->patient_id; - - $patient = Patient::find($patient_id); - - $dob = Carbon::parse($patient->date_of_birth); - $age_diff_months = $dob->diffInMonths(Carbon::now()); - - $today = date("Y-m-d"); - - $difference = days_months_years($dob, $today); - $days = $difference[0]; - $months = $difference[1]; - $years = $difference[2]; - - // create default age group - $age_group_display = ''; - $age_group = 0; - - if (between($days, 0, 28) && between($months, 0, 0) && between($years, 0, 0)) : - $age_group_display = "0 - 28 Days"; - $age_group = 1; - elseif (between($days, 0, 31) && between($months, 1, 12) && between($years, 0, 0)) : - $age_group_display = "1 - 12 Months"; - $age_group = 2; - elseif (between($days, 0, 31) && between($months, 0, 12) && between($years, 1, 5)) : - $age_group_display = "1 - 5 Years"; - $age_group = 3; - elseif (between($days, 0, 31) && between($months, 0, 12) && between($years, 6, 12)) : - $age_group_display = "6 - 12 Years"; - $age_group = 4; - elseif (between($days, 0, 31) && between($months, 0, 12) && between($years, 13, 200)) : - $age_group_display = "> 12 Years"; - $age_group = 5; - endif; - - $categories = DB::table('patient_categories')->where('available', 1)->pluck("name", "id"); - - // fetch any discharge mortality info - $discharge_mortality = DB::table('discharge_mortality_risk')->where('patient_id', $patient_id) - ->where('episode_id', $episode_id) - ->first(); - - return view('patients::triage.edit_for_post_discharge', compact( - 'triage', - 'patient_episode', - 'patient', - 'categories', - 'muac', - 'oxy_sat', - 'episode_id', - 'years', - 'age_diff_months', - 'discharge_mortality', - 'age_group', - 'age_group_display', - 'patient_id', - 'temperature', - 'weight', - 'height', - 'bmi' - )); - } - - public function save_edits_for_post_discharge(Request $request) - { - $episode_id = $request->episode_id; - $patient_id = $request->patient_id; - - // begin saving for discharge mortality risk - $discharge_mortality = DB::table('discharge_mortality_risk')->where('patient_id', $patient_id) - ->where('episode_id', $episode_id) - ->first(); - - if ($discharge_mortality) { - if (isset($request->bcs_eye_movement) && isset($request->bcs_best_mortal) && isset($request->bcs_best_verbal)) { - $total = $request->bcs_eye_movement + $request->bcs_best_mortal + $request->bcs_best_verbal; - - - if ($total == 5) { - $bcs = 0; - } else { - $bcs = 1; - } - } else { - $bcs = null; - } - - if (isset($request->maternal_hiv)) { - if ($request->maternal_hiv == 0) { - $hiv_mom_positive = 0; - $hiv_mom_unknown = 1; - } else if ($request->maternal_hiv == 1) { - $hiv_mom_positive = 0; - $hiv_mom_unknown = 0; - } else { - $hiv_mom_positive = 1; - $hiv_mom_unknown = 0; - } - } else { - $hiv_mom_positive = null; - $hiv_mom_unknown = null; - } - - DB::table('discharge_mortality_risk') - ->where('id', $discharge_mortality->id) - ->update([ - 'weight' => $request->weight ?? null, - 'muac_below_6' => isset($request->muac) ? ($request->muac * 10) : null, - 'bmi_below_6' => $request->bmi ?? null, - 'hospital_travel_duration_below_6' => $request->hospital_travel_duration ?? null, - 'illness_duration_at_admission_below_6' => $request->illness_duration ?? null, - 'last_hospitalization' => $request->last_hospitalization ?? null, - 'water_source' => $request->water_source ?? null, - 'filter_water' => $request->safe_water ?? null, - 'child_mosquito_net' => $request->child_mosquito_net ?? null, - 'mother_education_level' => $request->mother_education_level ?? null, - 'hospital_travel_duration' => $request->hospital_travel_duration ?? null, - 'muac' => isset($request->muac) ? ($request->muac * 10) : null, - 'temperature' => $request->temperature ?? null, - 'oxy_saturation' => $request->oxy_sat ?? null, - 'bcs' => $bcs, - 'bcs_eye_movement' => $request->bcs_eye_movement ?? null, - 'bcs_best_mortal' => $request->bcs_best_mortal ?? null, - 'bcs_best_verbal' => $request->bcs_best_verbal ?? null, - 'maternal_hiv' => $request->maternal_hiv ?? null, - 'hiv_mom_positive' => $hiv_mom_positive, - 'hiv_mom_unknown' => $hiv_mom_unknown, - 'maternal_age' => $request->maternal_age ?? null, - 'child_hiv' => $request->child_hiv ?? null, - 'child_with_proven_infection' => $request->child_with_proven_infection ?? null - ]); - } - // end discharge mortality risk save - - flash("The post discharge risk score has been calculated")->success(); - return redirect('patient_episodes'); - } -} diff --git a/docker/streamline-src/Modules/Patients/Resources/views/consultations/create.blade.php b/docker/streamline-src/Modules/Patients/Resources/views/consultations/create.blade.php deleted file mode 100755 index 12f0d8d0..00000000 --- a/docker/streamline-src/Modules/Patients/Resources/views/consultations/create.blade.php +++ /dev/null @@ -1,2539 +0,0 @@ -@extends('layouts.main') - -@push('scripts') - - -@endpush - -@push('styles') - - - -@endpush - -@section('content') -
-
- @if(!$is_mental_health_clinic) -

{{ __('consultations.add_consultation') }}

- @else -

{{ __('consultations.mental_health_consultations') }}

- @endif -
-
- -
-
- - @php - $patient_id = session('patient_id'); - $episode_id = session('episode_id'); - $episode_created_at = Carbon\Carbon::parse($episode->created_at); - $episode_has_grand_parent_episode = false; - @endphp - -
-
- @include('patients::allergies.header') -
-
-
- - @if(check_if_episode_is_a_followup($episode->id)) - @php - $parent_episode_details = \Streamline\Models\PatientEpisode::find($episode->parent_episode_id); - $parent_consultations = \Streamline\Models\Consultation::where(['episode_id' => $parent_episode_details->id])->get(); - //consultation notes - $consultation_notes = \Streamline\Models\WardInpatientDetailedNote::where(['patient_id' => $patient_id, 'episode_id' => $parent_episode_details->id, 'ward_id' => 0])->latest()->get(['investigation_and_management_plan_comments', 'clinic_examination_comments', 'history_comments', 'created_by','created_at']); - $consultation_notes_details = count($consultation_notes) > 0 ? $consultation_notes : null; - $consultation_notes_created_at = isset($consultation_notes_details) ? streamline_date($consultation_notes_details->pluck('created_at')->first()) : null; - $parent_consultation_details = count($parent_consultations) > 0 ? $parent_consultations->first() : null; - $parent_triage_details = \Streamline\Models\Triage::where(['id' => $parent_episode_details->triage_id])->first(); - - if(check_if_episode_is_a_followup($parent_episode_details->id)){ - $episode_has_grand_parent_episode = true; - - $grand_parent_episode_details = \Streamline\Models\PatientEpisode::find($parent_episode_details->parent_episode_id); - - $grand_parent_episode_treatments = \Streamline\Models\Treatment::where(['patient_id' => $patient_id, 'episode_id' => $grand_parent_episode_details->id, 'tta' => 0])->get(); - - $grand_parent_episode_ordered_procedures = \Streamline\Models\OrderedProcedure::where(['patient_id' => $patient_id, 'episode_id' => $grand_parent_episode_details->id])->get(); - - $grand_parent_episode_ordered_investigations = \Streamline\Models\OrderedInvestigation::where(['patient_id' => $patient_id, 'episode_id' => $grand_parent_episode_details->id])->get(); - - $grand_parent_episode_ordered_sundries = \Streamline\Models\OrderedSundry::where(['patient_id' => $patient_id, 'episode_id' => $grand_parent_episode_details->id])->get(); - - $grand_parent_episode_investigation_results = \Streamline\Models\InvestigationResults::where(['patient_id' => $patient_id, 'episode_id' => $grand_parent_episode_details->id])->get(); - } - @endphp - @endif - - @if(count($past_episodes_info) > 0) -
-

Previous Consultations (Upto latest 5 consultations with a diagnosis)

- -
- - - - - - - - - - - - - @foreach($past_episodes_info as $past_episode) - - - - - - - - - - - - @endforeach - -
DateClinicPrimary DiagnosisOther DiagnosesConsultation By
- {{ $past_episode['start_date'] }} -
- @if(check_if_episode_is_a_followup($past_episode["episode_id"])) -
({{ __('patient_episode.review_from') }} {{ streamline_date(get_name(get_name($past_episode["episode_id"], 'id', 'parent_episode_id', 'patient_episodes'), 'id', 'created_at', 'patient_episodes')) }})
- @endif -
{{ $past_episode['clinic'] }}{{ get_name($past_episode['primary_diagnosis'], 'id', 'name', 'diagnoses') }} - @if(count($past_episode['other_diagnoses']) > 0 && !(count($past_episode["other_diagnoses"]) == 1 && $past_episode["other_diagnoses"][0] == null)) -
    - @foreach($past_episode['other_diagnoses'] as $value) -
  • {{ get_name($value, 'id', 'name', 'diagnoses') }}
  • - @endforeach -
- @endif -
{{ $past_episode['doctor'] }}Details
-
-
- @endif - -
-
-
-
- -
-
-
- {{ __('consultations.triage_grade') }} : - @if($triage) - @switch($triage->severe_grade) - @case (1) -
{{ __('consultations.green') }}
- @break - @case (2) -
{{ __('consultations.yellow') }}
- @break - @case (3) -
{{ __('consultations.red') }}
- @break - @default - {{ __('consultations.triage_grade_not_determined') }} - @endswitch - @endif -
-
- {{ __('consultations.symptoms') }} : - @if($triage) - @php $symptoms_array = explode(",", $triage->symptoms); @endphp - @php $symptoms_duration_array = explode(",", $triage->symptom_duration); @endphp - -
-
- - - - - - - - - @php $counter = 0; @endphp - @for($i = 0; $i < count($symptoms_array); $i++) - - - - - @endfor - -
{{ __('consultations.symptom') }}{{ __('consultations.duration') }}
{{ isset($symptoms[$symptoms_array[$i]]) ? $symptoms[$symptoms_array[$i]] : "" }}{{ isset($symptoms_duration_array[$i]) ? $symptoms_duration_array[$i] : "" }}
-
-
- @else - {{ __('consultations.no_symptom_recorded') }} - @endif -
- -
- - @if($triage) - @php - $observations_array = explode(',', $triage->observations); //i.e[temp=44,height=2] - - $parent_observation_array = isset($parent_triage_details) ? explode(',', $parent_triage_details->observations): []; - @endphp -
-
- - - - - - @if(check_if_episode_is_a_followup($episode->id)) - - @endif - - - - @php $counter = 0; @endphp - @foreach($observations_array as $observation) - @php - $item_array = explode('=', $observation); //i.e[temp,44] - $counter++; - @endphp - @if($counter < 9) - - - - - @if(check_if_episode_is_a_followup($episode->id)) - @foreach($parent_observation_array as $parent_observation) - @php - $parent_item_array = isset($parent_triage_details) ? explode('=', $parent_observation) : []; - @endphp - @if($item_array[0] == $parent_item_array[0]) - - @endif - @endforeach - @endif - - @endif - @endforeach - -
{{ __('consultations.observation') }}{{ __('consultations.value') }} - {{ __('consultations.previous_value') }} -
{{ $item_array[0] }}{{ $item_array[1] }} - {{ $parent_item_array[1] }} -
-
- -
- - - - - - @if(check_if_episode_is_a_followup($episode->id)) - - @endif - - - - @php $counter=0; @endphp - @foreach($observations_array as $observation) - @php - $item_array = explode('=', $observation); //i.e[temp,44] - $counter++; - @endphp - @if($counter >= 9) - - - - - @if(check_if_episode_is_a_followup($episode->id)) - @foreach($parent_observation_array as $parent_observation) - @php - $parent_item_array = isset($parent_triage_details) ? explode('=', $parent_observation) : []; - @endphp - @if($item_array[0] == $parent_item_array[0]) - - @endif - @endforeach - @endif - - @endif - @endforeach - -
{{ __('consultations.observation') }}{{ __('consultations.value') }} - {{ __('consultations.previous_value') }} -
{{ isset($item_array[0]) ? $item_array[0] : "" }}{{ isset($item_array[1]) ? $item_array[1] : "" }} - {{ $parent_item_array[1] }} -
-
-
- -
- - @php $nutrition = DB::table('triage_nutrition')->where('patient_id', $patient_id)->where('episode_id', $episode_id)->first(); @endphp - - @if(is_smart_triage_enabled() && $nutrition) - - - - - - - - -

Nutritional Status

{{ $nutrition->text }}{{ $nutrition->reason }}
- @endif - -
- - {{ __('consultations.comment') }}: {{ !is_null($triage) ? $triage->comments : "" }}
- @else - {{ __('consultations.no_observations_recorded') }}
- @endif - {{ __('consultations.triage_done_by') }} {!! isset($triage) ? ''.\Streamline\Models\User::withTrashed()->find($triage->created_by)->first_name. " ".\Streamline\Models\User::withTrashed()->find($triage->created_by)->last_name.' on '.streamline_date_time($triage->created_at).'' : "" !!} -
-
-
-
-
-
-
-
- -
-
- @if(count($documents) > 0) - @foreach($documents as $document) -
  • - {{ is_null($document->title) ? substr($document->description, 0, 5) : $document->title }} ({{ streamline_date_time($document->created_at) }}) -
  • - @endforeach - @else - {{ __('consultations.no_patient_documents_available') }} - @endif - -
    - - {{ __('consultations.add_new') }} -
    -
    -
    -
    - -
    -
    - -
    -
    - @php - $used_services = \Streamline\Models\OrderedService::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->get(); - $service_performed_counter = 0; - @endphp - - @if(count($used_services) > 0) -
    - - - - - - - - - - - @foreach($used_services as $service) - @php - $service_ids = explode(",", $service->service_id); - $service_quantity = explode(",", $service->quantity); - $service_performed = explode(",", $service->performed); - $service_performed_id_array = explode(",", $service->performed_id); - @endphp - - @for($i = 0; $i < count($service_ids); $i++) - - - - - - - @endfor - @endforeach - -
    {{ __('consultations.service') }}{{ __('consultations.quantity') }}{{ __('consultations.payment_status') }}Performed By
    - {{ get_name($service_ids[$i], "id", "name", "services")}} - - {{ $service_quantity[$i] }} - - {!! $service->payment_status == 0 ? "Not Paid" : "Paid" !!} - - @if($service_performed[$i] == 0) - - {{ Form::hidden('service_perform[]', $service_ids[$i]) }} - {{ Form::hidden('service_order_id[]', $service_ids[$i]) }} - {{ Form::hidden('service_order_perform[]', $service->id) }} - {{ Form::hidden('service_performed_position[]', $i) }} - - - - @php $service_performed_counter++ @endphp - @else - By {{ get_full_name(get_name($service_performed_id_array[$i], 'id', 'performed_by', 'staff_performed_services'), 'id', 'first_name', 'last_name', 'users') }} - @endif -
    -
    - @else - {{ __('consultations.no_used_services') }} - @endif -
    -
    -
    -
    - - - {{-- Display TB screening takend from triage --}} - @if (is_tuberculosis_screening_enabled()) -
    -
    -
    -

    - TB Screening -

    -
    -
    -
    - @if($triage) - @if ($triage->any_tb_sysmptoms == 1) - - - - - - - - - - - - - - - - - - - - - - - - - -
    A cough for more than two weeks ?{{ $triage->cough_for_2_weeks == 1 ? "Yes" : "No" }}
    Persistent fevers for 2 weeks or more ?{{ $triage->fever_for_2_weeks == 1 ? "Yes" : "No" }}
    Noticeable weight loss of more than 3 Kg?{{ $triage->tb_weight_loss == 1 ? "Yes" : "No" }}
    Poor weight gain in the last one month ?{{ $triage->tb_poor_weight_gain == 1 ? "Yes" : "No" }}
    Excessive night sweats for three weeks or more ?{{ $triage->tb_excessive_night_sweats == 1 ? "Yes" : "No" }}
    Contact with a person with pulmonary TB or chronic cough ?{{ $triage->tb_contact_with_tb_person == 1 ? "Yes" : "No" }}
    - @endif - @endif -
    -
    -
    -
    - @endif - {{-- end of tb details --}} -
    -
    - - {{ Form::open(['route' => 'consultation.store','data-toggle'=>'validator', 'id'=>'consultation_form']) }} - - @php $option_symptoms = ""; $option_symptoms_periods = ""; @endphp - @if(are_symptoms_on_consultation()) -
    -
    - - - - - - - - - - - @php - foreach ($symptoms as $key => $value){ - $option_symptoms .= ""; - } - - foreach ($symptoms_periods as $key => $value){ - $option_symptoms_periods .= ""; - } - @endphp - - - - - - - - - -
    {{ __('triage.symptoms') }} @if( Auth::user()->can('symptom-create')){{ __('triage.add_new') }} @endif{{ __('triage.duration') }}{{ __('triage.prompt') }}{{ __('triage.reference_text') }}
    - - -
    -
    - -
    -
    - -
    -
    -
    - {{ __('triage.add_row') }} -
    -
    -
    - @endif - - @if($is_mental_health_clinic) - {{ Form::hidden('mental_health_clinic', 1) }} -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - -
    {{ __('consultations.psychosis_symptom_scores') }}
    {{ __('consultations.hallucinations') }}{{ Form::number('hallucinations', '', ['class' => 'form-control']) }}
    {{ __('consultations.delusions') }}{{ Form::number('delusions', '', ['class' => 'form-control']) }}
    {{ __('consultations.disorganised_speech') }}{{ Form::number('disorganised_speech', '', ['class' => 'form-control']) }}
    {{ __('consultations.abnormal_phychomotor_behaviour') }}{{ Form::number('abnormal_psychomotor_behaviour', '', ['class' => 'form-control']) }}
    -
    -
    - - - - - - - - - - - - - - - - - - - - - -
    {{ __('consultations.negative_symptoms') }}
    {{ __('consultations.impaired_cognition') }}{{ Form::number('impaired_cognition', '', ['class' => 'form-control']) }}
    {{ __('consultations.depression') }}{{ Form::number('depression', '', ['class' => 'form-control']) }}
    {{ __('consultations.mania') }}{{ Form::number('mania', '', ['class' => 'form-control']) }}
    {{ __('consultations.hamilton_anxiety_score') }}{{ Form::number('hamilton_anxiety_score', '', ['class' => 'form-control']) }}
    -
    -
    -
    -

    {{ __('consultations.hamilton_anxiety_score') }}

    -

    0-17 = no / mild anxiety

    -

    18-24 = mild to moderate anxiety

    -

    25-30 = moderate to severe anxiety

    -
    -
    -
    - -
    -
    - - - - - - - - - -
    {{ __('consultations.alcohol_score') }}
    {{ __('consultations.total_score') }}{{ Form::number('alcohol_screening_score', '', ['class' => 'form-control']) }}
    -
    -
    - - - - - - - - - - - - - -
    {{ __('consultations.satisfaction_score') }}
    {{ __('consultations.patient') }}{{ Form::number('patient_satisfaction_score', '', ['class' => 'form-control']) }}
    {{ __('consultations.care_giver') }}{{ Form::number('caregiver_satisfaction_score', '', ['class' => 'form-control']) }}
    -
    -
    -
    -

    {{ __('consultations.alcohol_screening_score') }}

    -

    1-7 = {{ __('consultations.low_risk') }}

    -

    8-19 = {{ __('consultations.harmful_drinking') }}

    -

    20 or above = {{ __('consultations.likely_dependency') }}

    -
    -
    -
    -
    - @endif - - @if($consultation_with_notes) -
    - @if(check_if_episode_is_a_followup($episode->id) && !is_null($consultation_notes_details)) - - {{-- fetch all consultation notes --}} - @if ( count($consultation_notes) > 0 ) - - {{-- History consultation notes --}} - -

    {{ __('consultations.consultation_for_episode_of') }} {{ streamline_date($consultation_notes_created_at) }}

    - - - - - - - - - - @forelse ($consultation_notes as $consultation_note) - @if(!empty($consultation_note->history_comments)) - - - - - - @endif - @empty - {{-- --}} - @endforelse -
    {{ __('consultations.history') }}
    {{ $consultation_note->history_comments ?? '' }} By {{ get_full_name($consultation_note->created_by, 'id', 'first_name', 'last_name', 'users') }}   on {{ streamline_date_time($consultation_note->created_at) ?? '' }}
    {{ __('consultations.no_previous_notes') }}
    - - {{-- Clinic Examination consultation notes --}} - - - - - - - - - - @forelse ($consultation_notes as $consultation_note) - @if(!empty($consultation_note->clinic_examination_comments)) - - - - - @endif - @empty - - {{-- --}} - - @endforelse -
    {{ __('consultations.clinical_examination') }}
    {{ $consultation_note->clinic_examination_comments ?? '' }} By {{ get_full_name($consultation_note->created_by, 'id', 'first_name', 'last_name', 'users') }}   on {{ streamline_date_time($consultation_note->created_at) ?? '' }}
    {{ __('consultations.no_previous_notes') }}
    - - {{-- Investigation and Management Plan consultation notes --}} - - - - - - - - - @forelse ($consultation_notes as $consultation_note) - @if(!empty($consultation_note->investigation_and_management_plan_comments)) - - - - - @endif - @empty - {{-- --}} - @endforelse -
    {{ __('consultations.investigation_and_mgt_plan') }}
    {{ $consultation_note->investigation_and_management_plan_comments ?? '' }} By {{ get_full_name($consultation_note->created_by, 'id', 'first_name', 'last_name', 'users') }}   on {{ streamline_date_time($consultation_note->created_at) ?? '' }}
    {{ __('consultations.no_previous_notes') }}
    - - @endif - - {{-- end fetch all consultation notes --}} - @endif - -

    {{ __('consultations.history') }}

    - - -
    -
    -

    {{ __('consultations.clinical_examination') }}

    - -
    -
    -

    {{ __('consultations.investigation_and_mgt_plan') }}

    - -
    -
    -
    - @endif - - @if (is_tuberculosis_screening_enabled()) - @include('patients::consultations.tb_screening') - @endif - -
    -
    -
    -
    - - - - - - - - - - @if(check_if_episode_is_a_followup($episode->id) && !is_null($parent_consultation_details)) - - - - - - @else - - - - - - @endif - @if( Auth::user()->can('add-new-diagnosis-from-consultation')) - - - - - @endif - -
    {{ __('consultations.PRIMARY_DIAGNOSIS') }}{{ __('consultations.PROMPT') }}{{ __('consultations.REFERENCES') }}
    -
    -
    - {{ Form::select('primary_diagnosis', $diagnoses, $parent_consultation_details->primary_diagnosis, ['id'=>'primary_diagnosis', 'class' => 'form-control col-sm-12 compulsory']) }} -
    -
    -
    (As diagnosed on {{ streamline_date($parent_episode_details->created_at) }})
    -
    -
    -
    -
    {{ $diagnoses_all->firstWhere('id',$parent_consultation_details->primary_diagnosis)->prompts?? '' }} 
    -
    -
    - @if(!is_null($parent_consultation_details->primary_diagnosis)) - @php - $reference_names = explode(",", get_name($parent_consultation_details->primary_diagnosis, 'id', 'reference_names', 'diagnoses')); - $reference_areas = explode(",", get_name($parent_consultation_details->primary_diagnosis, 'id', 'reference_areas', 'diagnoses')); - @endphp - @for($i = 0; $i < count($reference_areas); $i++) - @if(isset($reference_areas[$i]) && isset($reference_names[$i])) - {{ $reference_names[$i] }} | - @endif - @endfor - @endif -
    -
    -
    - {{ Form::select('primary_diagnosis', $diagnoses, '', ['id'=>'primary_diagnosis','class' => 'form-control col-sm-12 compulsory primaryDiagnosis', 'required', 'onchange' => 'get_diagnosis_info(this.value)']) }} -
    -
     
     
    - {{ __('consultations.add_new_diagnosis') }} -
    -
    -
    -
    -
    - -
    -
    -
    -
    - - - - - - - - - - @php - $option_diagnoses = ""; - foreach ($diagnoses as $key => $value){ - $option_diagnoses .= ""; - } - @endphp - - - - - - - - -
    {{ __('consultations.OTHER_DIAGNOSIS') }}{{ __('consultations.PROMPT') }}{{ __('consultations.REFERENCES') }}
    - -
     
     
    - {{ __('consultations.add_row') }} -
    -
    -
    -
    - -
    -
    -
    - - - - - - - - - - - - - - -
    RDTRBS
    - {{ Form::checkbox('rdt', 1, false, ['id'=>'rdt_pos']) }} - - - {{ Form::checkbox('rdt', 0, false, ['id'=>'rdt_neg']) }} - - - {{ Form::text('rbs','',['class'=>'form-control', 'placeholder'=>'(mm/l)']) }} -
    -
    - @if (is_add_attendance_to_consultation_enabled()) -
    -
    - {{ Form::label('attendance',__('triage.re_attendance_or_new')) }} -
    - {{ Form::radio('attendance', 1, false, ["required"]) }} {{ __('triage.new_attendance') }}    - {{ Form::radio('attendance', 2, false, ["required"]) }} {{ __('triage.re_attendance') }} -
    -
    -
    - @endif -
    -
    - -
    -
    -
    -

    {{ __('consultations.ordered_investigations') }}

    -
    - - - - - - - - - - - - - @if($episode_has_grand_parent_episode) - @if(count($grand_parent_episode_investigation_results) > 0) - - - - @foreach($grand_parent_episode_investigation_results as $result) - @php - $investigation_ids_array = explode(',', $result->investigation_id); - - // authentication of investigations - $per_investigation_array = explode(',', $result->per_investigation); - - $comments = explode(",", $result->comment); - $results_values = explode(",", $result->value); - @endphp - @for($i = 0 ; $i < count($investigation_ids_array) ; $i++) - @php - $investigation = \Streamline\Models\Investigation::withTrashed()->find($investigation_ids_array[$i]); - @endphp - @if($investigation) - - - - - - - @endif - @endfor - - - - @endforeach - - - - @elseif(count($grand_parent_episode_ordered_investigations) > 0) - - - - @foreach($grand_parent_episode_ordered_investigations as $investigation) - @php $investigation_ids_array = explode(',', $investigation->investigation_id); @endphp - @for($i = 0 ; $i < count($investigation_ids_array) ; $i++) - @php - $investigation = \Streamline\Models\Investigation::withTrashed()->find($investigation_ids_array[$i]); - @endphp - @if($investigation) - - - - - - - @endif - @endfor - @endforeach - - - - @endif - @endif - - - - @if(count($parent_episode_investigation_results) > 0) - - - - @foreach($parent_episode_investigation_results as $result) - @php - $investigation_ids_array = explode(',', $result->investigation_id); - - // authentication of investigations - $per_investigation_array = explode(',', $result->per_investigation); - - $comments = explode(",", $result->comment); - $results_values = explode(",", $result->value); - @endphp - @for($i = 0 ; $i < count($investigation_ids_array) ; $i++) - @php - $investigation = \Streamline\Models\Investigation::withTrashed()->find($investigation_ids_array[$i]); - @endphp - @if($investigation) - - - - - - - @endif - @endfor - - - - @endforeach - - - - @elseif(count($parent_episode_ordered_investigations) > 0) - - - - @foreach($parent_episode_ordered_investigations as $investigation) - @php $investigation_ids_array = explode(',', $investigation->investigation_id); @endphp - @for($i = 0 ; $i < count($investigation_ids_array) ; $i++) - @php - $investigation = \Streamline\Models\Investigation::withTrashed()->find($investigation_ids_array[$i]); - @endphp - @if($investigation) - - - - - - - @endif - @endfor - @endforeach - - - - @endif - - - @php $set_order_ids = []; @endphp - - @if(count($investigation_results) > 0) - - @if(check_if_episode_is_a_followup($episode->id)) - - - - @endif - - @foreach($investigation_results as $result) - @php - $investigation_ids_array = explode(',', $result->investigation_id); - - // authentication of investigations - $per_investigation_array = explode(',', $result->per_investigation); - - $comments = explode(",", $result->comment); - $results_values = explode(",", $result->value); - $set_order_ids[] = $result->order_id; - @endphp - - @for($i = 0 ; $i < count($investigation_ids_array) ; $i++) - @php - $investigation = \Streamline\Models\Investigation::withTrashed()->find($investigation_ids_array[$i]); - @endphp - @if($investigation) - @if($investigation->type == 1 && isset($results_values[$i])) - - - - - @php - $specialised_results = \Streamline\Models\InvestigationSpecialisedResult::where('id', $results_values[$i])->first(); - - if($specialised_results){ - $variable_id_array = explode(',', $specialised_results->specialised_variable_id); - - $variable_value_array = explode(',', $specialised_results->value); - - $variable_comment_array = explode(',', $specialised_results->comment); - - $variable_normal_range_array = explode(',', $specialised_results->normal_ranges); - } - @endphp - @if($specialised_results) - @for($x = 0; $x < count($variable_id_array); $x++) - - - - - - - - @endfor - @endif - - @elseif($investigation->slug == 'echo' && $results_values[$i] == "") - - - - - @else - - - - - - - - @endif - @endif - @endfor - - - - @endforeach - @endif - - @if(count($ordered_investigations) > 0) - - @if(check_if_episode_is_a_followup($episode->id)) - - - - @endif - - @foreach($ordered_investigations as $investigation) - @php - $investigation_ids_array = explode(',', $investigation->investigation_id); - - if (in_array($investigation->id, $set_order_ids)) { - continue; - } - @endphp - @for($i = 0 ; $i < count($investigation_ids_array) ; $i++) - @php - $investigation = \Streamline\Models\Investigation::withTrashed()->find($investigation_ids_array[$i]); - @endphp - - @if($investigation) - @if($investigation->slug == 'echo') - - - - - @else - - - - - - - - @endif - @endif - @endfor - @endforeach - @endif - - @if(!(count($ordered_investigations) > 0 || count($investigation_results) > 0)) - - - - @endif - -
    {{ __('investigations.investigation_name') }}{{ __('investigations.results') }}{{ __('investigations.normal_ranges') }}{{ __('investigations.unit') }}{{ __('investigations.comment') }}
    {{ __('consultations.investigation_for_episode_of') }} {{ streamline_date($grand_parent_episode_details->created_at) }}
    - @if($investigation->insurance_coverage == 1 && patient_insurance_status($patient_id) == 1) - {{ $investigation->name }} - @else - {{ $investigation->name }} - @endif - - @if($investigation->range_type == 1) - {{ get_dynamic_normal_range($investigation->id, get_patient_age_group($patient_id), get_name($patient_id, 'id', 'gender', 'patients')) }} - @else - {{ $investigation->normal_ranges }} - @endif - - {!! $per_investigation_array[$i] == 0 ? '{{ __("consultations.pending") }}' : $results_values[$i] !!} - - {!! $per_investigation_array[$i] == 0 ? '{{ __("consultations.pending") }}' : ($comments[$i] ?? '') !!} -
    {{ __('consultations.authenticated_by') }}{{ get_name($result->authenticated_by, 'id', 'first_name', 'users')}} {{ get_name($result->authenticated_by, 'id', 'last_name', 'users')}}
    {{ __('consultations.investigation_for_episode_of') }} {{ streamline_date($grand_parent_episode_details->created_at) }}
    - @if($investigation->insurance_coverage == 1 && patient_insurance_status($patient_id) == 1) - {{ $investigation->name }} - @else - {{ $investigation->name }} - @endif - - @if($investigation->range_type == 1) - {{ get_dynamic_normal_range($investigation->id, get_patient_age_group($patient_id), get_name($patient_id, 'id', 'gender', 'patients')) }} - @else - {{ $investigation->normal_ranges }} - @endif - {{ __('consultations.pending') }} - {{ $investigation->comments }} -
    {{ __('consultations.investigation_for_episode_of') }} {{ streamline_date($parent_episode_details->created_at) }}
    - @if($investigation->insurance_coverage == 1 && patient_insurance_status($patient_id) == 1) - {{ $investigation->name }} - @else - {{ $investigation->name }} - @endif - - @if($investigation->range_type == 1) - {{ get_dynamic_normal_range($investigation->id, get_patient_age_group($patient_id), get_name($patient_id, 'id', 'gender', 'patients')) }} - @else - {{ $investigation->normal_ranges }} - @endif - - {!! $per_investigation_array[$i] == 0 ? '{{ __("consultations.pending") }}' : $results_values[$i] !!} - - {!! $per_investigation_array[$i] == 0 ? '{{ __("consultations.pending") }}' : $comments[$i] !!} -
    {{ __('consultations.authenticated_by') }}{{ get_name($result->authenticated_by, 'id', 'first_name', 'users')}} {{ get_name($result->authenticated_by, 'id', 'last_name', 'users')}}
    {{ __('consultations.investigation_for_episode_of') }} {{ streamline_date($parent_episode_details->created_at) }}
    - @if($investigation->insurance_coverage == 1 && patient_insurance_status($patient_id) == 1) - {{ $investigation->name }} - @else - {{ $investigation->name }} - @endif - - @if($investigation->range_type == 1) - {{ get_dynamic_normal_range($investigation->id, get_patient_age_group($patient_id), get_name($patient_id, 'id', 'gender', 'patients')) }} - @else - {{ $investigation->normal_ranges }} - @endif - {{ __('consultations.pending') }} - {{ $investigation->comments }} -
    {{ __('consultations.investigation_for_review') }} ({{ streamline_date($episode->created_at)}})
    - @if($investigation->insurance_coverage == 1 && patient_insurance_status($patient_id) == 1) - {{ $investigation->name }} - @else - {{ $investigation->name }} - @endif -
    {{ get_name($variable_id_array[$x], 'id', 'name', 'investigation_specialised_variables') }}{{ $variable_value_array[$x] }} - @if(get_name($variable_id_array[$x], 'id', 'range_type', 'investigation_specialised_variables') == 1) - - {{ get_dynamic_normal_range_specialized($variable_id_array[$x], get_patient_age_group($patient_id), get_name($patient_id, 'id', 'gender', 'patients')) }} - @else - {{ get_name($variable_id_array[$x], 'id', 'normal_ranges', 'investigation_specialised_variables') }} - @endif - - @if(get_name(get_name($variable_id_array[$x], 'id', 'units', 'investigation_specialised_variables'), 'id', 'name', 'unit_of_measure') != "N/A") - {{ get_name(get_name($variable_id_array[$x], 'id', 'units', 'investigation_specialised_variables'), 'id', 'name', 'unit_of_measure') }} - @endif - {{ $variable_comment_array[$x] }}
    - @if($investigation->insurance_coverage == 1 && patient_insurance_status($patient_id) == 1) - {{ $investigation->name }} - @else - {{ $investigation->name }} - @endif - - - View Results - -
    - @if($investigation->insurance_coverage == 1 && patient_insurance_status($patient_id) == 1) - {{ $investigation->name }} - @else - {{ $investigation->name }} - @endif - - @if($per_investigation_array[$i] == 0) - {{ __("consultations.pending") }} - @else - {!! isset($results_values[$i]) ? nl2br(e($results_values[$i])) : "" !!} - @endif - - @if($investigation->range_type == 1) - {{ get_dynamic_normal_range($investigation->id, get_patient_age_group($patient_id), get_name($patient_id, 'id', 'gender', 'patients')) }} - @else - {{ $investigation->normal_ranges }} - @endif - - {{ get_name(get_name($investigation->id, 'id', 'units', 'investigations'),'id', 'name', 'unit_of_measure') }} - - {!! $per_investigation_array[$i] == 0 ? '{{ __("consultations.pending") }}' : $comments[$i] !!} -
    {{ __('consultations.authenticated_by') }}{{ get_name($result->authenticated_by, 'id', 'first_name', 'users')}} {{ get_name($result->authenticated_by, 'id', 'last_name', 'users')}}
    {{ __('consultations.investigation_for_review') }} ({{ streamline_date($episode->created_at)}})
    - @if($investigation->insurance_coverage == 1 && patient_insurance_status($patient_id) == 1) - {{ $investigation->name }} - @else - {{ $investigation->name }} - @endif - - @if(($cardio_echo)) - - View results - - @else - Pending - @endif -
    - @if($investigation->insurance_coverage == 1 && patient_insurance_status($patient_id) == 1) - {{ $investigation->name }} - @else - {{ $investigation->name }} - @endif - {{ __('consultations.pending') }} - @if($investigation->range_type == 1) - {{ get_dynamic_normal_range($investigation->id, get_patient_age_group($patient_id), get_name($patient_id, 'id', 'gender', 'patients')) }} - @else - {{ $investigation->normal_ranges }} - @endif - - {{ $investigation->comments }} -
    {{ __('consultations.investigation_not_ordered') }} {{ check_if_episode_is_a_followup($episode->id) ? __('consultations.during_current_review') : '' }}.
    -
    -
    -
    -

    {{ __('consultations.ordered_sundries') }}

    -
    - - - - - - - - - - @if($episode_has_grand_parent_episode) - @if(count($grand_parent_episode_ordered_sundries) > 0) - - - - @foreach($grand_parent_episode_ordered_sundries as $ordered_sundry) - @php - $sundry_ids = explode(",", $ordered_sundry->sundries_id); - $sundry_quantity = explode(",", $ordered_sundry->quantity); - @endphp - - @for($i = 0; $i < count($sundry_ids); $i++) - - - - - @endfor - @endforeach - @endif - @endif - - - - @if(count($parent_episode_ordered_sundries) > 0) - - - - @foreach($parent_episode_ordered_sundries as $ordered_sundry) - @php - $sundry_ids = explode(",", $ordered_sundry->sundries_id); - $sundry_quantity = explode(",", $ordered_sundry->quantity); - @endphp - - @for($i = 0; $i < count($sundry_ids); $i++) - - - - - @endfor - @endforeach - @endif - - - @if(count($ordered_sundries) > 0) - - @if(check_if_episode_is_a_followup($episode->id)) - - - - @endif - - @foreach($ordered_sundries as $ordered_sundry) - @php - $sundry_ids = explode(",", $ordered_sundry->sundries_id); - $sundry_quantity = explode(",", $ordered_sundry->quantity); - @endphp - - @for($i = 0; $i < count($sundry_ids); $i++) - - - - - @endfor - @endforeach - @else - - - - @endif - - -
    {{ __('consultations.SUNDRY') }}{{ __('consultations.QUANTITY') }}
    {{ __('consultations.sundries_for_episode_of') }} {{ streamline_date($grand_parent_episode_details->created_at) }}
    {{ get_name($sundry_ids[$i], 'id', 'name', 'sundries') }} {!! $sundry_quantity[$i] !!}
    {{ __('consultations.sundries_for_episode_of') }} {{ streamline_date($parent_episode_details->created_at) }}
    {{ get_name($sundry_ids[$i], 'id', 'name', 'sundries') }} {!! $sundry_quantity[$i] !!}
    {{ __('consultations.sundries_for_episode_review') }} ({{ streamline_date($episode->created_at)}})
    {{ get_name($sundry_ids[$i], 'id', 'name', 'sundries') }} {!! $sundry_quantity[$i] !!}
    {{ __('consultations.no_sundries_ordered') }} {{ check_if_episode_is_a_followup($episode->id) ? __('consultations.during_current_review') : '' }}.
    -
    -
    -
    -
    - -
    -
    -
    -

    {{ __('consultations.treatment_given') }}

    -
    - - - - - - - - - - - - - - @if($episode_has_grand_parent_episode) - @if(count($grand_parent_episode_treatments) > 0) - - - - @foreach($grand_parent_episode_treatments as $treatment) - @php - $drugs_array = explode(",", $treatment->drugs); - $dosage_array = explode(",", $treatment->doses); - $dosage2_array = explode(",", $treatment->dose2); - $frequencies_array = explode(",", $treatment->frequencies); - $duration_array = explode(",", $treatment->durations); - $quantity_dispensed_array = explode(",", $treatment->quantities_dispensed); - $instructions_array = explode(",", $treatment->instruction); - $purchased_elsewhere_array = is_null($treatment->purchased_elsewhere) ? [] : explode(",", $treatment->purchased_elsewhere); - @endphp - @for($x = 0; $x < count($drugs_array); $x++) - @php - $frequency_name = get_name($frequencies_array[$x], 'id', 'name', 'dosage_frequencies'); - $drug_unit_id = get_name($drugs_array[$x], 'id', 'unit_id', 'drugs'); - $unit = get_name($drug_unit_id, 'id', 'name', 'drug_units'); - $unit = $unit=="N/A"?"":$unit; - $drug_unit = "" . $unit . ""; - $dose2 = (empty($dosage2_array[$x])) ? "" : " | " . $dosage2_array[$x] . $drug_unit; - @endphp - - - - - - @if(isset($purchased_elsewhere_array[$x]) && $purchased_elsewhere_array[$x] == 1) - - @else - @if($treatment->dispense_status == 1) - - @else - - @endif - @endif - - - @endfor - @endforeach - @endif - @endif - - - - @if(count($parent_episode_treatments) > 0) - - - - @foreach($parent_episode_treatments as $treatment) - @php - $drugs_array = explode(",", $treatment->drugs); - $dosage_array = explode(",", $treatment->doses); - $dosage2_array = explode(",", $treatment->dose2); - $frequencies_array = explode(",", $treatment->frequencies); - $duration_array = explode(",", $treatment->durations); - $quantity_dispensed_array = explode(",", $treatment->quantities_dispensed); - $instructions_array = explode(",", $treatment->instruction); - $purchased_elsewhere_array = is_null($treatment->purchased_elsewhere) ? [] : explode(",", $treatment->purchased_elsewhere); - @endphp - @for($x = 0; $x < count($drugs_array); $x++) - @php - $frequency_name = get_name($frequencies_array[$x], 'id', 'name', 'dosage_frequencies'); - $drug_unit_id = get_name($drugs_array[$x], 'id', 'unit_id', 'drugs'); - $unit = get_name($drug_unit_id, 'id', 'name', 'drug_units'); - $unit = $unit=="N/A"?"":$unit; - $drug_unit = "" . $unit . ""; - $dose2 = (empty($dosage2_array[$x])) ? "" : " | " . $dosage2_array[$x] . $drug_unit; - @endphp - - - - - - @if(isset($purchased_elsewhere_array[$x]) && $purchased_elsewhere_array[$x] == 1) - - @else - @if($treatment->dispense_status == 1) - - @else - - @endif - @endif - - - @endfor - @endforeach - @endif - - - @if(count($treatments) > 0) - @if(check_if_episode_is_a_followup($episode->id)) - - - - @endif - - @foreach($treatments as $treatment) - @php - $drugs_array = explode(",", $treatment->drugs); - $dosage_array = explode(",", $treatment->doses); - $dosage2_array = explode(",", $treatment->dose2); - $frequencies_array = explode(",", $treatment->frequencies); - $duration_array = explode(",", $treatment->durations); - $quantity_dispensed_array = explode(",", $treatment->quantities_dispensed); - $instructions_array = explode(",", $treatment->instruction); - $purchased_elsewhere_array = is_null($treatment->purchased_elsewhere) ? [] : explode(",", $treatment->purchased_elsewhere); - @endphp - @for($x = 0; $x < count($drugs_array); $x++) - @php - $frequency_name = get_name($frequencies_array[$x], 'id', 'name', 'dosage_frequencies'); - $drug_unit_id = get_name($drugs_array[$x], 'id', 'unit_id', 'drugs'); - $unit = get_name($drug_unit_id, 'id', 'name', 'drug_units'); - $unit = $unit=="N/A"?"":$unit; - $drug_unit = "" . $unit . ""; - $dose2 = (empty($dosage2_array[$x])) ? "" : " | " . $dosage2_array[$x] . $drug_unit; - @endphp - - - - - - @if(isset($purchased_elsewhere_array[$x]) && $purchased_elsewhere_array[$x] == 1) - - @else - @if($treatment->dispense_status == 1) - - @else - - @endif - @endif - - - @endfor - @endforeach - @else - - - - @endif - - -
    {{ __('consultations.DRUG_NAME') }}{{ __('consultations.DOSAGE') }}{{ __('consultations.DURATION') }}{{ __('consultations.QUANTITY') }}{{ __('consultations.STATUS') }}{{ __('consultations.INSTRUCTION') }}
    {{ __('consultations.treatment_for_episode_of') }} {{ streamline_date($grand_parent_episode_details->created_at) }}
    {{ get_name($drugs_array[$x], 'id', "name", 'drugs') }}{{ $dosage_array[$x] }} {!! $drug_unit !!} {{ $dose2 }}    {{ $frequency_name }}{{ isset($duration_array[$x]) ? $duration_array[$x] : "" }}{{ isset($quantity_dispensed_array[$x]) ? $quantity_dispensed_array[$x] : 0 }}Purchased From Elsewhere{{ __('consultations.dispensed') }}{{ __('consultations.pending') }} - {{ isset($instructions_array[$x]) ? trim($instructions_array[$x]) : 'N/A' }} -
    {{ __('consultations.treatment_for_episode_of') }} {{ streamline_date($parent_episode_details->created_at) }}
    {{ get_name($drugs_array[$x], 'id', "name", 'drugs') }}{{ $dosage_array[$x] }} {!! $drug_unit !!} {{ $dose2 }}    {{ $frequency_name }}{{ isset($duration_array[$x]) ? $duration_array[$x] : "" }}{{ isset($quantity_dispensed_array[$x]) ? $quantity_dispensed_array[$x] : 0 }}Purchased From Elsewhere{{ __('consultations.dispensed') }}{{ __('consultations.pending') }} - {{ isset($instructions_array[$x]) ? trim($instructions_array[$x]) : 'N/A' }} -
    {{ __('consultations.treatment_for_episode_review') }} ({{ streamline_date($episode->created_at)}})
    - {{ get_name($drugs_array[$x], 'id', "name", 'drugs') }} - - @if($treatment->is_treatment_progressive != 0) - (Progressive Treatment) - @endif - {{ $dosage_array[$x] }} {!! $drug_unit !!} {{ $dose2 }}    {{ $frequency_name }}{{ isset($duration_array[$x]) ? $duration_array[$x] : "" }}{{ isset($quantity_dispensed_array[$x]) ? $quantity_dispensed_array[$x] : 0 }}Purchased From Elsewhere{{ __('consultations.dispensed') }}{{ __('consultations.pending') }} - {{ isset($instructions_array[$x]) ? trim($instructions_array[$x]) : 'N/A' }} -
    {{ __('consultations.no_prescription_made_yet') }} {{ check_if_episode_is_a_followup($episode->id) ? 'during current review' : '' }}
    -
    -
    -
    -

    {{ __('consultations.ordered_procedures') }}

    -
    - - - - - - - - - - - @if($episode_has_grand_parent_episode) - @if(count($grand_parent_episode_ordered_procedures) > 0) - - - - @php $grand_parent_count = 1; @endphp - @foreach($grand_parent_episode_ordered_procedures as $ordered_procedure) - @php - $procedure_id = explode(",", $ordered_procedure->procedure_id); - $procedure_performed_array = explode(",", $ordered_procedure->performed); - @endphp - - @for($i = 0; $i < count($procedure_id); $i++) - - - - - - @endfor - @endforeach - @endif - @endif - - - - @if(count($parent_episode_ordered_procedures) > 0) - - - - @php $parent_count = 1; @endphp - @foreach($parent_episode_ordered_procedures as $ordered_procedure) - @php - $procedure_id = explode(",", $ordered_procedure->procedure_id); - $procedure_performed_array = explode(",", $ordered_procedure->performed); - @endphp - - @for($i = 0; $i < count($procedure_id); $i++) - - - - - - @endfor - @endforeach - @endif - - - @if(count($ordered_procedures) > 0) - @php $count = 1; $procedure_performed_counter = 0; @endphp - - @if(check_if_episode_is_a_followup($episode->id)) - - - - @endif - - @foreach($ordered_procedures as $ordered_procedure) - @php - $procedure_id = explode(",", $ordered_procedure->procedure_id); - $procedure_performed_array = explode(",", $ordered_procedure->performed); - $procedure_performed_id_array = explode(",", $ordered_procedure->performed_id); - @endphp - - @for($i = 0; $i < count($procedure_id); $i++) - - - - - - @endfor - @endforeach - @else - - - - @endif - - -
    {{ __('consultations.PROCEDURE') }}{{ __('consultations.STATUS') }}{{ __('consultations.PERFORMED') }}
    {{ __('consultations.procedures_for_episode_of') }} {{ streamline_date($grand_parent_episode_details->created_at) }}
    - {{ get_name($procedure_id[$i], 'id', 'name', 'procedures') }} - - {!! $procedure_performed_array[$i] == 1 ? ''.__("consultations.performed").'' : ''. __("consultations.pending").'' !!} - - -
    {{ __('consultations.procedures_for_episode_of') }} {{ streamline_date($parent_episode_details->created_at) }}
    - {{ get_name($procedure_id[$i], 'id', 'name', 'procedures') }} - - {!! $procedure_performed_array[$i] == 1 ? ''.__("consultations.performed").'' : ''. __("consultations.pending").'' !!} - - -
    {{ __('consultations.procedures_for_episode_review') }} ({{ streamline_date($episode->created_at)}})
    - {{ get_name($procedure_id[$i], 'id', 'name', 'procedures') }} - - {!! $procedure_performed_array[$i] == 1 ? ''.__("consultations.performed").'' : ''. __("consultations.pending").'' !!} - - @if($procedure_performed_array[$i] != 1) - - {{ Form::hidden('perform[]', $procedure_id[$i]) }} - {{ Form::hidden('procedure_order_perform[]', $ordered_procedure->id) }} - {{ Form::hidden('procedure_performed_position[]', $i) }} - - - - @php $procedure_performed_counter++ @endphp - @else - By {{ get_full_name(get_name($procedure_performed_id_array[$i], 'id', 'performed_by', 'staff_performed_services'), 'id', 'first_name', 'last_name', 'users') }} - @endif -
    {{ __('consultations.no_procedure_has_been_ordered') }} {{ check_if_episode_is_a_followup($episode->id) ? __('consultations.during_current_review') : '' }}.
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    - {{ Form::button(__('consultations.Investigation'),['type'=>'submit','class'=>'btn btn-info btn-block','name'=>'submit-btn','value'=>'investigation']) }} -
    -
    - {{ Form::button(__('consultations.Treatment'),['type'=>'submit','class'=>'btn btn-default btn-block','name'=>'submit-btn','value'=>'treatment']) }} -
    -
    -
    -
    -
    - {{ Form::button(__('consultations.Procedures'),['type'=>'submit','class'=>'btn btn-inverse btn-block','name'=>'submit-btn','value'=>'procedures']) }} -
    -
    - {{ Form::button(__('consultations.Sundries'),['type'=>'submit','class'=>'btn btn-primary btn-block','name'=>'submit-btn','value'=>'sundries']) }} -
    -
    -
    -
    -
    - {{ Form::button(__('consultations.services'),['type'=>'submit','class'=>'btn btn-default-bluish btn-block','name'=>'submit-btn','value'=>'services']) }} -
    -
    -
    -
    -
    -
    -
    - @if(isset($grand_parent_episode_details) && !is_null($grand_parent_episode_details->consultation_id)) - @php - $grand_parent_consultation = \Streamline\Models\Consultation::where('episode_id',$grand_parent_episode_details->id)->first(); - @endphp - @if($grand_parent_consultation->comments) -
    - {{ __('consultations.consultation_comments_on') }} {{ streamline_date($grand_parent_consultation->created_at) }} -
    -
    - {{ $grand_parent_consultation->comments }} -
    - @endif - @endif - - @if(isset($parent_episode_details) && !is_null($parent_episode_details->consultation_id)) - @php - $parent_consultation = \Streamline\Models\Consultation::where('episode_id',$parent_episode_details->id)->first(); - @endphp - @if($parent_consultation->comments) -
    - {{ __('consultations.consultation_comments_on') }} {{ streamline_date($parent_consultation->created_at) }} -
    -
    - {{ $parent_consultation->comments }} -
    - @endif - @endif -

    {{ __('consultations.comments') }}

    - -
    -
    -
    -

    {{ __('consultations.outcome') }}

    -
    -
    - {{ Form::select('outcome', $outcomes, '7', ['id' => 'outcome', 'class' => 'form-control compulsory']) }} -
    -
    - - - - - -
    - - {{ Form::button(__('consultations.save_consultation'),['type'=>'submit','class'=>'btn btn-default btn-block','name'=>'submit-btn','value'=>'save_consultation']) }} - - {{ Form::button('Complete consultation',['class'=>'btn btn-success btn-block','name'=>'submit-btns','value'=>'complete', 'id'=>'complete_consultations', 'onclick'=>'return confirm_outcome()']) }} -
    -
    -
    - {{ Form::close() }} - - @include('patients::consultations.document.add') - - @include('patients::consultations.add_diagnosis') - - - - - - - - -@endsection - -@push('scripts') - - - -@endpush diff --git a/docker/streamline-src/Modules/Patients/Resources/views/consultations/edit.blade.php b/docker/streamline-src/Modules/Patients/Resources/views/consultations/edit.blade.php deleted file mode 100755 index bc725e1f..00000000 --- a/docker/streamline-src/Modules/Patients/Resources/views/consultations/edit.blade.php +++ /dev/null @@ -1,2543 +0,0 @@ -@extends('layouts.main') - -@push('scripts') - - -@endpush - -@push('styles') - - - -@endpush - -@section('content') - - - -
    -
    -

    {{ __('consultations.edit_consultation') }}

    -
    -
    - -
    -
    - - @php - $patient_id = session('patient_id'); - $episode_id = session('episode_id'); - $episode_created_at = Carbon\Carbon::parse($episode->created_at); - $episode_has_grand_parent_episode = false; - @endphp - -
    -
    - @include('patients::allergies.header') -
    -
    -
    - - @if(check_if_episode_is_a_followup($episode->id)) - @php - $parent_episode_details = \Streamline\Models\PatientEpisode::find($episode->parent_episode_id); - $parent_consultations = \Streamline\Models\Consultation::where(['episode_id' => $parent_episode_details->id])->get(); - $parent_consultation_details = count($parent_consultations) > 0 ? $parent_consultations->first() : null; - $parent_triage_details = \Streamline\Models\Triage::where(['id' => $parent_episode_details->triage_id])->first(); - $parent_consultation_notes = \Streamline\Models\WardInpatientDetailedNote::where(['patient_id' => $episode->patient_id, 'episode_id' => $episode->parent_episode_id, 'ward_id' => 0])->get(); - - if(check_if_episode_is_a_followup($parent_episode_details->id)){ - $episode_has_grand_parent_episode = true; - - $grand_parent_episode_details = \Streamline\Models\PatientEpisode::find($parent_episode_details->parent_episode_id); - - $grand_parent_episode_treatments = \Streamline\Models\Treatment::where(['patient_id' => $patient_id, 'episode_id' => $grand_parent_episode_details->id, 'tta' => 0])->get(); - - $grand_parent_episode_ordered_procedures = \Streamline\Models\OrderedProcedure::where(['patient_id' => $patient_id, 'episode_id' => $grand_parent_episode_details->id])->get(); - - $grand_parent_episode_ordered_investigations = \Streamline\Models\OrderedInvestigation::where(['patient_id' => $patient_id, 'episode_id' => $grand_parent_episode_details->id])->get(); - - $grand_parent_episode_ordered_sundries = \Streamline\Models\OrderedSundry::where(['patient_id' => $patient_id, 'episode_id' => $grand_parent_episode_details->id])->get(); - - $grand_parent_episode_investigation_results = \Streamline\Models\InvestigationResults::where(['patient_id' => $patient_id, 'episode_id' => $grand_parent_episode_details->id])->get(); - } - @endphp - @endif - - {{ Form::model($consultation, ['route' => ['consultation.update',$consultation->id],'method'=>'PUT', 'id'=>'consultation_edit_form']) }} - - @if(count($past_episodes_info) > 0) -
    -

    Previous Consultations (Upto latest 5 consultations with a diagnosis)

    - -
    - - - - - - - - - - - - - @foreach($past_episodes_info as $past_episode) - - - - - - - - - - - - @endforeach - -
    DateClinicPrimary DiagnosisOther DiagnosesConsultation By
    - {{ $past_episode['start_date'] }} -
    - @if(check_if_episode_is_a_followup($past_episode["episode_id"])) -
    ({{ __('patient_episode.review_from') }} {{ streamline_date(get_name(get_name($past_episode["episode_id"], 'id', 'parent_episode_id', 'patient_episodes'), 'id', 'created_at', 'patient_episodes')) }})
    - @endif -
    {{ $past_episode['clinic'] }}{{ get_name($past_episode['primary_diagnosis'], 'id', 'name', 'diagnoses') }} - @if(count($past_episode['other_diagnoses']) > 0 && !(count($past_episode["other_diagnoses"]) == 1 && $past_episode["other_diagnoses"][0] == null)) -
      - @foreach($past_episode['other_diagnoses'] as $value) -
    • {{ get_name($value, 'id', 'name', 'diagnoses') }}
    • - @endforeach -
    - @endif -
    {{ $past_episode['doctor'] }}Details
    -
    -
    - @endif - -
    -
    -
    -
    - -
    -
    -
    - {{ __('consultations.triage_grade') }} : - @if($triage) - @switch($triage->severe_grade) - @case (1) -
    {{ __('consultations.green') }}
    - @break - @case (2) -
    {{ __('consultations.yellow') }}
    - @break - @case (3) -
    {{ __('consultations.red') }}
    - @break - @default - {{ __('consultations.triage_grade_not_determined') }} - @endswitch - @endif -
    -
    - {{ __('consultations.symptoms') }} : - @if($triage) - @php $symptoms_array = explode(",", $triage->symptoms); @endphp - @php $symptoms_duration_array = explode(",", $triage->symptom_duration); @endphp - -
    -
    - - - - - - - - - @php $counter = 0; @endphp - @for($i = 0; $i < count($symptoms_array); $i++) - - - - - @endfor - -
    {{ __('consultations.symptom') }}{{ __('consultations.duration') }}
    {{ isset($symptoms[$symptoms_array[$i]]) ? $symptoms[$symptoms_array[$i]] : "" }}{{ isset($symptoms_duration_array[$i]) ? $symptoms_duration_array[$i] : "" }}
    -
    -
    - @else - {{ __('consultations.no_symptom_recorded') }} - @endif -
    - -
    - - @if($triage) - @php - $observations_array = explode(',', $triage->observations); //i.e[temp=44,height=2] - - $parent_observation_array = isset($parent_triage_details) ? explode(',', $parent_triage_details->observations): []; - @endphp -
    -
    - - - - - - @if(check_if_episode_is_a_followup($episode->id)) - - @endif - - - - @php $counter = 0; @endphp - @foreach($observations_array as $observation) - @php - $item_array = explode('=', $observation); //i.e[temp,44] - $counter++; - - $parent_observation_array = isset($parent_triage_details) ? explode(',', $parent_triage_details->observations): []; - @endphp - @if($counter < 9) - - - - - @if(check_if_episode_is_a_followup($episode->id)) - @foreach($parent_observation_array as $parent_observation) - @php - $parent_item_array = isset($parent_triage_details) ? explode('=', $parent_observation) : []; - @endphp - @if($item_array[0] == $parent_item_array[0]) - - @endif - @endforeach - @endif - - @endif - @endforeach - -
    {{ __('consultations.observation') }}{{ __('consultations.value') }} - {{ __('consultations.previous_value') }} -
    {{ isset($item_array[0]) ? $item_array[0] : "" }}{{ isset($item_array[1]) ? $item_array[1] : "" }} - {{ $parent_item_array[1] }} -
    -
    - -
    - - - - - - @if(check_if_episode_is_a_followup($episode->id)) - - @endif - - - - @php $counter=0; @endphp - @foreach($observations_array as $observation) - @php - $item_array = explode('=', $observation); //i.e[temp,44] - $counter++; - @endphp - @if($counter >= 9) - - - - - @if(check_if_episode_is_a_followup($episode->id)) - @foreach($parent_observation_array as $parent_observation) - @php - $parent_item_array = isset($parent_triage_details) ? explode('=', $parent_observation) : []; - @endphp - @if($item_array[0] == $parent_item_array[0]) - - @endif - @endforeach - @endif - - @endif - @endforeach - -
    {{ __('consultations.observation') }}{{ __('consultations.value') }} - {{ __('consultations.previous_value') }} -
    {{ $item_array[0] }}{{ $item_array[1] }} - {{ $parent_item_array[1] }} -
    -
    -
    - {{ __('consultations.comment') }}: {{ !is_null($triage) ? $triage->comments : "" }}
    - @else - {{ __('consultations.no_observations_recorded') }} - @endif - - {{ __('consultations.triage_done_by') }} {!! isset($triage) ? ''.\Streamline\Models\User::withTrashed()->find($triage->created_by)->first_name. " ".\Streamline\Models\User::withTrashed()->find($triage->created_by)->last_name.' on '.streamline_date_time($triage->created_at).'' : "" !!} -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    - @if(count($documents) > 0) - @foreach($documents as $document) -
  • - {{ is_null($document->title) ? substr($document->description, 0, 5) : $document->title }} ({{ streamline_date_time($document->created_at) }}) -
  • - @endforeach - @else - {{ __('consultations.no_patient_documents_available') }} - @endif - -
    - - {{ __('consultations.add_new') }} -
    -
    -
    -
    - - -
    -
    - -
    -
    - @php - $used_services = \Streamline\Models\OrderedService::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->get(); - $services_counter = 1; - $service_performed_counter = 0; - @endphp - - @if(count($used_services) > 0) -
    - - - - - - - - - - - @foreach($used_services as $service) - @php - $service_ids = explode(",", $service->service_id); - $service_quantity = explode(",", $service->quantity); - $service_performed = explode(",", $service->performed); - @endphp - - @for($i = 0; $i < count($service_ids); $i++) - - - - - - - @endfor - @endforeach - -
    {{ __('consultations.service') }}{{ __('consultations.quantity') }}{{ __('consultations.payment_status') }}Performed By
    - {{ get_name($service_ids[$i], "id", "name", "services")}} - - {{ $service_quantity[$i] }} - - {!! $service->payment_status == 0 ? "Not Paid" : "Paid" !!} - - @if($service_performed[$i] == 0) - - {{ Form::hidden('service_perform[]', $service_ids[$i]) }} - {{ Form::hidden('service_order_id[]', $service_ids[$i]) }} - {{ Form::hidden('service_order_perform[]', $service->id) }} - {{ Form::hidden('service_performed_position[]', $i) }} - - - - @php $service_performed_counter++ @endphp - @endif -
    -
    - @else - {{ __('consultations.no_used_services') }} - @endif -
    -
    -
    -
    - - - {{-- Display TB screening takend from triage --}} - @if (is_tuberculosis_screening_enabled()) -
    -
    -
    -

    - TB Screening -

    -
    -
    -
    - @if($triage) - @if ($triage->any_tb_sysmptoms == 1) - - - - - - - - - - - - - - - - - - - - - - - - - -
    A cough for more than two weeks ?{{ $triage->cough_for_2_weeks == 1 ? "Yes" : "No" }}
    Persistent fevers for 2 weeks or more ?{{ $triage->fever_for_2_weeks == 1 ? "Yes" : "No" }}
    Noticeable weight loss of more than 3 Kg?{{ $triage->tb_weight_loss == 1 ? "Yes" : "No" }}
    Poor weight gain in the last one month ?{{ $triage->tb_poor_weight_gain == 1 ? "Yes" : "No" }}
    Excessive night sweats for three weeks or more ?{{ $triage->tb_excessive_night_sweats == 1 ? "Yes" : "No" }}
    Contact with a person with pulmonary TB or chronic cough ?{{ $triage->tb_contact_with_tb_person == 1 ? "Yes" : "No" }}
    - @endif - @endif -
    -
    -
    -
    - @endif - {{-- end of tb details --}} -
    -
    - - @if($is_mental_health_clinic && isset($mental_health_consultation->id)) - {{ Form::hidden('mental_health_id', $mental_health_consultation->id) }} -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - -
    {{ __('consultations.psychosis_symptom_scores') }}
    {{ __('consultations.hallucinations') }}{{ Form::number('hallucinations', $mental_health_consultation->hallucinations, ['class' => 'form-control']) }}
    {{ __('consultations.delusions') }}{{ Form::number('delusions', $mental_health_consultation->delusions, ['class' => 'form-control']) }}
    {{ __('consultations.disorganised_speech') }}{{ Form::number('disorganised_speech', $mental_health_consultation->disorganised_speech, ['class' => 'form-control']) }}
    {{ __('consultations.abnormal_phychomotor_behaviour') }}{{ Form::number('abnormal_psychomotor_behaviour', $mental_health_consultation->abnormal_psychomotor_behaviour, ['class' => 'form-control']) }}
    -
    -
    - - - - - - - - - - - - - - - - - - - - - -
    {{ __('consultations.negative_symptoms') }}
    {{ __('consultations.impaired_cognition') }}{{ Form::number('impaired_cognition', $mental_health_consultation->impaired_cognition, ['class' => 'form-control']) }}
    {{ __('consultations.depression') }}{{ Form::number('depression', $mental_health_consultation->depression, ['class' => 'form-control']) }}
    {{ __('consultations.mania') }}{{ Form::number('mania', $mental_health_consultation->mania, ['class' => 'form-control']) }}
    {{ __('consultations.hamilton_anxiety_score') }}{{ Form::number('hamilton_anxiety_score', $mental_health_consultation->hamilton_anxiety_score, ['class' => 'form-control']) }}
    -
    -
    -
    -

    {{ __('consultations.hamilton_anxiety_score') }}

    -

    0-17 = no / mild anxiety

    -

    18-24 = mild to moderate anxiety

    -

    25-30 = moderate to severe anxiety

    -
    -
    -
    - -
    -
    - - - - - - - - - -
    {{ __('consultations.alcohol_score') }}
    {{ __('consultations.total_score') }}{{ Form::number('alcohol_screening_score', $mental_health_consultation->alcohol_screening_score, ['class' => 'form-control']) }}
    -
    -
    - - - - - - - - - - - - - -
    {{ __('consultations.satisfaction_score') }}
    {{ __('consultations.patient') }}{{ Form::number('patient_satisfaction_score', $mental_health_consultation->patient_satisfaction_score, ['class' => 'form-control']) }}
    {{ __('consultations.care_giver') }}{{ Form::number('caregiver_satisfaction_score', $mental_health_consultation->caregiver_satisfaction_score, ['class' => 'form-control']) }}
    -
    -
    -
    -

    {{ __('consultations.alcohol_screening_score') }}

    -

    1-7 = {{ __('consultations.low_risk') }}

    -

    8-19 = {{ __('consultations.harmful_drinking') }}

    -

    20 or above = {{ __('consultations.likely_dependency') }}

    -
    -
    -
    -
    - @endif - - @if($consultation_with_notes) -
    -
    -
    - - - - - - - - - @if(Auth::user()->can('edit-consultation-note') || Auth::user()->can('delete-consultation-note')) - - @endif - - - - @forelse ($consultation_notes as $consultation_note) - - - - - - @if (Auth::user()->can('edit-consultation-note') || Auth::user()->can('delete-consultation-note')) - - @endif - - - - - {{ Form::hidden('deleted_notes[]', '', ['id' => 'deleted_note_id_'.$consultation_note->id]) }} - @empty - - @endforelse - -
    {{ __('consultations.previous_notes') }}
    {{ __('consultations.history') }}{{ __('consultations.clinical_examination') }}{{ __('consultations.investigation_and_mgt_plan') }}{{ __('consultations.date') }}{{ __('banking.action') }}
    {{ $consultation_note->history_comments }}{{ $consultation_note->clinic_examination_comments }}{{ $consultation_note->investigation_and_management_plan_comments}}{{ streamline_date_time($consultation_note->created_at) }}
    by {{ $users[$consultation_note->created_by]?? '' }}
    - @if(Auth::user()->can('edit-consultation-note')) - {{ __('consultations.edit_clinical_note') }} - @endif - - @if(Auth::user()->can('delete-consultation-note')) - - @endif -
    {{ __('consultations.no_previous_notes') }}
    - @if (!empty($view_notes)) - {{ __('consultations.view_more_notes') }} - @endif -
    -
    - -
    -
    - @if(check_if_episode_is_a_followup($episode->id) && !empty($parent_consultation_notes)) -
    -
    - - - - - - - - - - - - @forelse ($parent_consultation_notes as $consultation_note) - - - - - - - @empty - - @endforelse - -
    Previously Added Consultation Notes {{ __('consultations.for_episode_of') }} {{ streamline_date($parent_consultation_details->created_at) }}
    {{ __('consultations.history') }}{{ __('consultations.clinical_examination') }}{{ __('consultations.investigation_and_mgt_plan') }}{{ __('consultations.date') }}
    {{ $consultation_note->history_comments }}{{ $consultation_note->clinic_examination_comments }}{{ $consultation_note->investigation_and_management_plan_comments}}{{ streamline_date_time($consultation_note->created_at) }}
    by {{ $users[$consultation_note->created_by]?? '' }}
    No previously added consultation notes {{ __('consultations.for_episode_of') }} {{ streamline_date($parent_consultation_details->created_at) }}.
    -
    -
    - @endif - -
    -
    -

    {{ __('consultations.history') }}

    - -
    -
    -

    {{ __('consultations.clinical_examination') }}

    - -
    -
    -

    {{ __('consultations.investigation_and_mgt_plan') }}

    - -
    -
    -
    - @endif - - @if (is_tuberculosis_screening_enabled()) - @include('patients::consultations.tb_screening') - @endif - - @php $option_symptoms = ""; $option_symptoms_periods = ""; $symptom_counter = 1; @endphp - @if(are_symptoms_on_consultation()) -
    -
    - - - - - - - - - - - - @php - $symptoms_array = explode(",", $consultation->symptoms); - $symptoms_duration_array = explode(",", $consultation->symptom_duration); - - foreach ($symptoms as $key => $value){ - $option_symptoms .= ""; - } - - foreach ($symptoms_periods as $key => $value){ - $option_symptoms_periods .= ""; - } - @endphp - @if(empty($symptoms_array) || count($symptoms_array) != count($symptoms_duration_array) || $consultation->symptoms == '') - - - - - - - - @else - @for($i = 0; $i < count($symptoms_array); $i++) - @php - $duration_array = explode(" ", $symptoms_duration_array[$i]); - @endphp - - - - - - - - @endfor - @endif - -
    {{ __('triage.symptoms') }} {{ __('triage.add_new') }}{{ __('triage.duration') }}{{ __('triage.prompt') }}{{ __('triage.reference_text') }}
    - - -
    -
    - -
    -
    - -
    -
    -
    - {{ Form::select('symptoms[]', $symptoms, $symptoms_array[$i], ['id' => 'symptoms_' . $symptom_counter, 'class' => 'form-control col-sm-12 compulsory initial_symptoms_select', 'onchange' => 'showPrompt(this.value, ' . $symptom_counter . ')']) }} - -
    -
    - -
    -
    - -
    -
    -
    - {{ __('triage.add_row') }} -
    -
    -
    - @endif - -
    -
    -
    -
    - - - - - - - - - - @if(check_if_episode_is_a_followup($episode->id) && !is_null($parent_consultation_details) && $parent_consultation_details->primary_diagnosis != $consultation->primary_diagnosis) - - - - - - - - - - - @else - - - - - - @endif - @if( Auth::user()->can('add-new-diagnosis-from-consultation')) - - - - - @endif - -
    {{ __('consultations.PRIMARY_DIAGNOSIS') }}{{ __('consultations.PROMPT') }}{{ __('consultations.REFERENCES') }}
    -
    -
    - {{ Form::select('parent_primary_diagnosis', $diagnoses, $parent_consultation_details->primary_diagnosis, ['class' => 'form-control col-sm-12 compulsory', 'readonly']) }} -
    -
    -
    (As diagnosed on {{ streamline_date($parent_episode_details->created_at) }})
    -
    -
    -
    - {{ isset($parent_consultation_details->primary_diagnosis) ? $diagnoses_all->firstWhere('id',$parent_consultation_details->primary_diagnosis)->prompts : "" }} 
    -
    - @if(!is_null($parent_consultation_details->primary_diagnosis)) - @php - $reference_names = explode(",", get_name($parent_consultation_details->primary_diagnosis, 'id', 'reference_names', 'diagnoses')); - $reference_areas = explode(",", get_name($parent_consultation_details->primary_diagnosis, 'id', 'reference_areas', 'diagnoses')); - @endphp - @for($i = 0; $i < count($reference_areas); $i++) - @if(isset($reference_areas[$i]) && isset($reference_names[$i])) - {{ $reference_names[$i] }} | - @endif - @endfor - @endif -
    -
    -
    - {{ Form::select('primary_diagnosis', $diagnoses, $consultation->primary_diagnosis, ['id'=>'primary_diagnosis','class' => 'form-control col-sm-12 compulsory', 'required']) }} -
    -
    - {{ isset($consultation->primary_diagnosis) ? $diagnoses_all->firstWhere('id',$consultation->primary_diagnosis)->prompts : "" }} 
    -
    - @if(!is_null($consultation->primary_diagnosis)) - @php - $reference_names = explode(",", get_name($consultation->primary_diagnosis, 'id', 'reference_names', 'diagnoses')); - $reference_areas = explode(",", get_name($consultation->primary_diagnosis, 'id', 'reference_areas', 'diagnoses')); - @endphp - @for($i = 0; $i < count($reference_areas); $i++) - @if(isset($reference_areas[$i]) && isset($reference_names[$i])) - {{ $reference_names[$i] }} | - @endif - @endfor - @endif -
    -
    -
    - {{ Form::select('primary_diagnosis', $diagnoses, $consultation->primary_diagnosis, ['id'=>'primary_diagnosis','class' => 'form-control col-sm-12 compulsory primaryDiagnosis', 'required']) }} -
    -
    {{ isset($consultation->primary_diagnosis) ? $diagnoses_all->firstWhere('id',$consultation->primary_diagnosis)->prompts : "" }} 
    -
    - @if(!is_null($consultation->primary_diagnosis)) - @php - $reference_names = explode(",", get_name($consultation->primary_diagnosis, 'id', 'reference_names', 'diagnoses')); - $reference_areas = explode(",", get_name($consultation->primary_diagnosis, 'id', 'reference_areas', 'diagnoses')); - @endphp - @for($i = 0; $i < count($reference_areas); $i++) - @if(isset($reference_areas[$i]) && isset($reference_names[$i])) - {{ $reference_names[$i] }} | - @endif - @endfor - @endif -
    -
    - {{ __('consultations.add_new_diagnosis') }} -
    -
    -
    -
    -
    - -
    -
    -
    -
    - - - - - - - - - - - - @if(check_if_episode_is_a_followup($episode->id) && !is_null($parent_consultation_details)) - @php - $parent_consultation_other_diagnoses = unserialize($parent_consultation_details->other_diagnoses); - @endphp - - @if(!empty($parent_consultation_other_diagnoses) && $parent_consultation_other_diagnoses[0] != "") - @foreach($parent_consultation_other_diagnoses as $diagnosis) - @if($diagnosis != "") - - - - - - @endif - @endforeach - @endif - @endif - - - @php - $other_diagnoses = unserialize($consultation->other_diagnoses); - @endphp - - @if(empty($other_diagnoses)) - - - - - - - @else - @foreach($other_diagnoses as $diagnosis) - @if($diagnosis != "") - - - - - - - @endif - @endforeach - @endif - -
    #{{ __('consultations.OTHER_DIAGNOSIS') }}{{ __('consultations.PROMPT') }}{{ __('consultations.REFERENCES') }}
    -

    {{ $diagnoses[$diagnosis] }}
    (As diagnosed on {{ streamline_date($parent_episode_details->created_at) }})

    -
    {{ is_object($diagnoses_all->firstWhere('id',$diagnosis)) ? $diagnoses_all->firstWhere('id',$diagnosis)->prompts : '' }} 
    -
    - @if(!is_null($consultation->primary_diagnosis)) - @php - $reference_names = explode(",", get_name($parent_consultation_details->primary_diagnosis, 'id', 'reference_names', 'diagnoses')); - $reference_areas = explode(",", get_name($parent_consultation_details->primary_diagnosis, 'id', 'reference_areas', 'diagnoses')); - @endphp - @for($i = 0; $i < count($reference_areas); $i++) - @if(isset($reference_areas[$i]) && isset($reference_names[$i])) - {{ $reference_names[$i] }} | - @endif - @endfor - @endif -
    -
    - {{ Form::select('other_diagnosis[]', $diagnoses, '', ['class' => 'sec_d form-control col-sm-12 ']) }} -
     
     
    - {{ Form::select('other_diagnosis[]', $diagnoses, $diagnosis, ['class' => 'other_diagnosisx sec_d form-control col-sm-12']) }} -
    {{ is_object($diagnoses_all->firstWhere('id',$diagnosis)) ? $diagnoses_all->firstWhere('id',$diagnosis)->prompts : '' }} 
    {{ is_object($diagnoses_all->firstWhere('id',$diagnosis)) ? $diagnoses_all->firstWhere('id',$diagnosis)->reference_names : '' }} 
    -
    - {{ __('consultations.add_row') }} - {{ __('consultations.delete_row') }} -
    -
    -
    - -
    -
    -
    - - - - - - - - - - - - - - -
    RDTRBS
    - @if($consultation->rdt === 1) - {{ Form::checkbox('rdt', 1, true, ['id'=>'rdt_pos']) }} - - @else - {{ Form::checkbox('rdt', 1, false, ['id'=>'rdt_pos']) }} - - @endif - - @if($consultation->rdt === 0) - {{ Form::checkbox('rdt', 0, true, ['id'=>'rdt_neg']) }} - - @else - {{ Form::checkbox('rdt', 0, false, ['id'=>'rdt_neg']) }} - - @endif - - {{ Form::text('rbs',$consultation->rbs,['class'=>'form-control', 'placeholder'=>'(mm/l)']) }} -
    -
    - @if (is_add_attendance_to_consultation_enabled()) -
    -
    - {{ Form::label('attendance',__('triage.re_attendance_or_new')) }} -
    - {{ Form::radio('attendance', 1, ($consultation->attendance == 1)? true :false, ["required"]) }} {{ __('triage.new_attendance') }}    - {{ Form::radio('attendance', 2, ($consultation->attendance == 2)? true :false, ["required"]) }} {{ __('triage.re_attendance') }} -
    -
    -
    - @endif -
    -
    - -
    -
    -
    -

    {{ __('consultations.ordered_investigations') }}

    -
    - - - - - - - - - - - - - @if($episode_has_grand_parent_episode) - @if(count($grand_parent_episode_investigation_results) > 0) - - - - @foreach($grand_parent_episode_investigation_results as $result) - @php - $investigation_ids_array = explode(',', $result->investigation_id); - - // authentication of investigations - $per_investigation_array = explode(',', $result->per_investigation); - - $comments = explode(",", $result->comment); - $results_values = explode(",", $result->value); - @endphp - @for($i = 0 ; $i < count($investigation_ids_array) ; $i++) - @php - $investigation = \Streamline\Models\Investigation::withTrashed()->find($investigation_ids_array[$i]); - if(!$investigation) { - continue; - } - @endphp - - - - - - - @endfor - - - - @endforeach - - - - @elseif(count($grand_parent_episode_ordered_investigations) > 0) - - - - @foreach($grand_parent_episode_ordered_investigations as $investigation) - @php $investigation_ids_array = explode(',', $investigation->investigation_id); @endphp - @for($i = 0 ; $i < count($investigation_ids_array) ; $i++) - @php - $investigation = \Streamline\Models\Investigation::withTrashed()->find($investigation_ids_array[$i]); - if(!$investigation) { - continue; - } - @endphp - - - - - - - @endfor - @endforeach - - - - @endif - @endif - - - - @if(count($parent_episode_investigation_results) > 0) - - - - @foreach($parent_episode_investigation_results as $result) - @php - $investigation_ids_array = explode(',', $result->investigation_id); - - // authentication of investigations - $per_investigation_array = explode(',', $result->per_investigation); - - $comments = explode(",", $result->comment); - $results_values = explode(",", $result->value); - @endphp - @for($i = 0 ; $i < count($investigation_ids_array) ; $i++) - @php - $investigation = \Streamline\Models\Investigation::withTrashed()->find($investigation_ids_array[$i]); - if(!$investigation) { - continue; - } - @endphp - - - - - - - @endfor - - - - @endforeach - - - - @elseif(count($parent_episode_ordered_investigations) > 0) - - - - @foreach($parent_episode_ordered_investigations as $investigation) - @php $investigation_ids_array = explode(',', $investigation->investigation_id); @endphp - @for($i = 0 ; $i < count($investigation_ids_array) ; $i++) - @php - $investigation = \Streamline\Models\Investigation::withTrashed()->find($investigation_ids_array[$i]); - if(!$investigation) { - continue; - } - @endphp - - - - - - - @endfor - @endforeach - - - - @endif - - - @if(count($investigation_results) > 0) - - @if(check_if_episode_is_a_followup($episode->id)) - - - - @endif - - @foreach($investigation_results as $result) - @php - $investigation_ids_array = explode(',', $result->investigation_id); - - // authentication of investigations - $per_investigation_array = explode(',', $result->per_investigation); - - $comments = explode(",", $result->comment); - $results_values = explode(",", $result->value); - @endphp - - @for($i = 0 ; $i < count($investigation_ids_array) ; $i++) - @php - $investigation = \Streamline\Models\Investigation::withTrashed()->find($investigation_ids_array[$i]); - if(!$investigation) { - continue; - } - @endphp - @if($investigation->type == 1 && isset($results_values[$i])) - - - - - @php - $specialised_results = \Streamline\Models\InvestigationSpecialisedResult::where('id', $results_values[$i])->first(); - - if($specialised_results){ - $variable_id_array = explode(',', $specialised_results->specialised_variable_id); - - $variable_value_array = explode(',', $specialised_results->value); - - $variable_comment_array = explode(',', $specialised_results->comment); - - $variable_normal_range_array = explode(',', $specialised_results->normal_ranges); - } - @endphp - @if($specialised_results) - @for($x = 0; $x < count($variable_id_array); $x++) - - - - - - - - @endfor - @endif - - @elseif($investigation->slug == 'echo' && $results_values[$i] == "") - - - - - @else - - - - - - - - @endif - @endfor - - - - @endforeach - @elseif(count($ordered_investigations) > 0) - - @if(check_if_episode_is_a_followup($episode->id)) - - - - @endif - - @foreach($ordered_investigations as $investigation) - @php - $investigation_ids_array = explode(',', $investigation->investigation_id); - @endphp - - @for($i = 0 ; $i < count($investigation_ids_array) ; $i++) - @if(isset($investigation_ids_array[$i]) && $investigation_ids_array[$i] != "") - @php - $investigation = \Streamline\Models\Investigation::withTrashed()->find($investigation_ids_array[$i]); - if(!$investigation) { - continue; - } - @endphp - @if($investigation->slug == 'echo') - - - - - @else - - - - - - - - @endif - @endif - @endfor - @endforeach - @else - - - - @endif - -
    {{ __('investigations.investigation_name') }}{{ __('investigations.results') }}{{ __('investigations.normal_ranges') }}{{ __('investigations.unit') }}{{ __('investigations.comment') }}
    {{ __('consultations.investigation_for_episode_of') }} {{ streamline_date($grand_parent_episode_details->created_at) }}
    - @if($investigation->insurance_coverage == 1 && patient_insurance_status($patient_id) == 1) - {{ $investigation->name }} - @else - {{ $investigation->name }} - @endif - - @if($investigation->range_type == 1) - {{ get_dynamic_normal_range($investigation->id, get_patient_age_group($patient_id), get_name($patient_id, 'id', 'gender', 'patients')) }} - @else - {{ $investigation->normal_ranges }} - @endif - - {!! (!isset($results_values[$i]) && $per_investigation_array[$i] == 0) ? '{{ __("consultations.pending") }}' : $results_values[$i] !!} - - @if(isset($comments[$i]) && ($per_investigation_array[$i] != 0)) - {{ $comments[$i] }} - @else - {{ __("consultations.pending") }} - @endif -
    {{ __('consultations.authenticated_by') }}{{ get_name($result->authenticated_by, 'id', 'first_name', 'users')}} {{ get_name($result->authenticated_by, 'id', 'last_name', 'users')}}
    {{ __('consultations.investigation_for_episode_of') }} {{ streamline_date($grand_parent_episode_details->created_at) }}
    - @if($investigation->insurance_coverage == 1 && patient_insurance_status($patient_id) == 1) - {{ $investigation->name }} - @else - {{ $investigation->name }} - @endif - - @if($investigation->range_type == 1) - {{ get_dynamic_normal_range($investigation->id, get_patient_age_group($patient_id), get_name($patient_id, 'id', 'gender', 'patients')) }} - @else - {{ $investigation->normal_ranges }} - @endif - {{ __('consultations.pending') }} - {{ $investigation->comments }} -
    {{ __('consultations.investigation_for_episode_of') }} {{ streamline_date($parent_episode_details->created_at) }}
    - @if($investigation->insurance_coverage == 1 && patient_insurance_status($patient_id) == 1) - {{ $investigation->name }} - @else - {{ $investigation->name }} - @endif - - @if($investigation->range_type == 1) - {{ get_dynamic_normal_range($investigation->id, get_patient_age_group($patient_id), get_name($patient_id, 'id', 'gender', 'patients')) }} - @else - {{ $investigation->normal_ranges }} - @endif - - {!! (!isset($results_values[$i]) && $per_investigation_array[$i] == 0) ? '{{ __("consultations.pending") }}' : $results_values[$i] !!} - - @if(isset($comments[$i]) && isset($per_investigation_array[$i]) && $per_investigation_array[$i] != 0) - {{ $comments[$i] }} - @else - {{ __("consultations.pending") }} - @endif -
    {{ __('consultations.authenticated_by') }}{{ get_name($result->authenticated_by, 'id', 'first_name', 'users')}} {{ get_name($result->authenticated_by, 'id', 'last_name', 'users')}}
    {{ __('consultations.investigation_for_episode_of') }} {{ streamline_date($parent_episode_details->created_at) }}
    - @if($investigation->insurance_coverage == 1 && patient_insurance_status($patient_id) == 1) - {{ $investigation->name }} - @else - {{ $investigation->name }} - @endif - - @if($investigation->range_type == 1) - {{ get_dynamic_normal_range($investigation->id, get_patient_age_group($patient_id), get_name($patient_id, 'id', 'gender', 'patients')) }} - @else - {{ $investigation->normal_ranges }} - @endif - {{ __('consultations.pending') }} - {{ $investigation->comments }} -
    {{ __('consultations.investigation_for_review') }} ({{ streamline_date($episode->created_at)}})
    - @if($investigation->insurance_coverage == 1 && patient_insurance_status($patient_id) == 1) - {{ $investigation->name }} - @else - {{ $investigation->name }} - @endif -
    {{ get_name($variable_id_array[$x], 'id', 'name', 'investigation_specialised_variables') }}{{ $variable_value_array[$x] }} - @if(get_name($variable_id_array[$x], 'id', 'range_type', 'investigation_specialised_variables') == 1) - - {{ get_dynamic_normal_range_specialized($variable_id_array[$x], get_patient_age_group($patient_id), get_name($patient_id, 'id', 'gender', 'patients')) }} - @else - {{ get_name($variable_id_array[$x], 'id', 'normal_ranges', 'investigation_specialised_variables') }} - @endif - - @if(get_name(get_name($variable_id_array[$x], 'id', 'units', 'investigation_specialised_variables'), 'id', 'name', 'unit_of_measure') != "N/A") - {{ get_name(get_name($variable_id_array[$x], 'id', 'units', 'investigation_specialised_variables'), 'id', 'name', 'unit_of_measure') }} - @endif - {{ $variable_comment_array[$x] }}
    - @if($investigation->insurance_coverage == 1 && patient_insurance_status($patient_id) == 1) - {{ $investigation->name }} - @else - {{ $investigation->name }} - @endif - - - View Results - -
    - @if($investigation->insurance_coverage == 1 && patient_insurance_status($patient_id) == 1) - {{ $investigation->name }} - @else - {{ $investigation->name }} - @endif - - @if(isset($per_investigation_array[$i]) && $per_investigation_array[$i] == 0) - {{ __("consultations.pending") }} - @else - {!! isset($results_values[$i]) ? nl2br(e($results_values[$i])) : "" !!} - @endif - - @if($investigation->range_type == 1) - {{ get_dynamic_normal_range($investigation->id, get_patient_age_group($patient_id), get_name($patient_id, 'id', 'gender', 'patients')) }} - @else - {{ $investigation->normal_ranges }} - @endif - - {{ get_name(get_name($investigation->id, 'id', 'units', 'investigations'),'id', 'name', 'unit_of_measure') }} - - @if(isset($comments[$i]) && isset($per_investigation_array[$i]) && $per_investigation_array[$i] != 0) - {!! nl2br(e($comments[$i])) !!} - @else - {{ __("consultations.pending") }} - @endif -
    {{ __('consultations.authenticated_by') }}{{ get_name($result->authenticated_by, 'id', 'first_name', 'users')}} {{ get_name($result->authenticated_by, 'id', 'last_name', 'users')}}
    {{ __('consultations.investigation_for_review') }} ({{ streamline_date($episode->created_at)}})
    - @if($investigation->insurance_coverage == 1 && patient_insurance_status($patient_id) == 1) - {{ $investigation->name }} - @else - {{ $investigation->name }} - @endif - - @if(($cardio_echo)) - - View results - - @else - Pending - @endif -
    - @if($investigation->insurance_coverage == 1 && patient_insurance_status($patient_id) == 1) - {{ $investigation->name }} - @else - {{ $investigation->name }} - @endif - {{ __('consultations.pending') }} - @if($investigation->range_type == 1) - {{ get_dynamic_normal_range($investigation->id, get_patient_age_group($patient_id), get_name($patient_id, 'id', 'gender', 'patients')) }} - @else - {{ $investigation->normal_ranges }} - @endif - - {{ $investigation->comments }} -
    {{ __('consultations.investigation_not_ordered') }} {{ check_if_episode_is_a_followup($episode->id) ? 'during current review' : '' }}.
    -
    -
    -
    -

    {{ __('consultations.ordered_sundries') }}

    -
    - - - - - - - - - - @if($episode_has_grand_parent_episode) - @if(count($grand_parent_episode_ordered_sundries) > 0) - - - - @foreach($grand_parent_episode_ordered_sundries as $ordered_sundry) - @php - $sundry_ids = explode(",", $ordered_sundry->sundries_id); - $sundry_quantity = explode(",", $ordered_sundry->quantity); - @endphp - - @for($i = 0; $i < count($sundry_ids); $i++) - - - - - @endfor - @endforeach - @endif - @endif - - - - @if(count($parent_episode_ordered_sundries) > 0) - - @if(check_if_episode_is_a_followup($episode->id)) - - - - @endif - - @foreach($parent_episode_ordered_sundries as $ordered_sundry) - @php - $sundry_ids = explode(",", $ordered_sundry->sundries_id); - $sundry_quantity = explode(",", $ordered_sundry->quantity); - @endphp - - @for($i = 0; $i < count($sundry_ids); $i++) - - - - - @endfor - @endforeach - @endif - - - @if(count($ordered_sundries) > 0) - - @if(check_if_episode_is_a_followup($episode->id)) - - - - @endif - - @foreach($ordered_sundries as $ordered_sundry) - @php - $sundry_ids = explode(",", $ordered_sundry->sundries_id); - $sundry_quantity = explode(",", $ordered_sundry->quantity); - @endphp - - @for($i = 0; $i < count($sundry_ids); $i++) - - - - - @endfor - @endforeach - @else - - - - @endif - - -
    {{ __('consultations.SUNDRY') }}{{ __('consultations.QUANTITY') }}
    {{ __('consultations.sundries_for_episode_of') }} {{ streamline_date($grand_parent_episode_details->created_at) }}
    {{ get_name($sundry_ids[$i], 'id', 'name', 'sundries') }} {!! $sundry_quantity[$i] !!}
    {{ __('consultations.sundries_for_episode_of') }} {{ streamline_date($parent_episode_details->created_at) }}
    {{ get_name($sundry_ids[$i], 'id', 'name', 'sundries') }} {!! $sundry_quantity[$i] !!}
    {{ __('consultations.sundries_for_episode_review') }} ({{ streamline_date($episode->created_at)}})
    {{ get_name($sundry_ids[$i], 'id', 'name', 'sundries') }} {!! $sundry_quantity[$i] !!}
    {{ __('consultations.no_sundries_ordered') }} {{ check_if_episode_is_a_followup($episode->id) ? __('consultations.during_current_review') : '' }}.
    -
    -
    -
    -
    - -
    -
    -
    -

    {{ __('consultations.treatment_given') }}

    -
    - - - - - - - - - - - - - - @if($episode_has_grand_parent_episode) - @if(count($grand_parent_episode_treatments) > 0) - - - - @foreach($grand_parent_episode_treatments as $treatment) - @php - $drugs_array = explode(",", $treatment->drugs); - $dosage_array = explode(",", $treatment->doses); - $dosage2_array = explode(",", $treatment->dose2); - $frequencies_array = explode(",", $treatment->frequencies); - $duration_array = explode(",", $treatment->durations); - $quantity_dispensed_array = explode(",", $treatment->quantities_dispensed); - $instructions_array = explode(",", $treatment->instruction); - $purchased_elsewhere_array = is_null($treatment->purchased_elsewhere) ? [] : explode(",", $treatment->purchased_elsewhere); - @endphp - @for($x = 0; $x < count($drugs_array); $x++) - @php - $frequency_name = get_name($frequencies_array[$x], 'id', 'name', 'dosage_frequencies'); - $drug_unit_id = get_name($drugs_array[$x], 'id', 'unit_id', 'drugs'); - $unit = get_name($drug_unit_id, 'id', 'name', 'drug_units'); - $unit = $unit=="N/A"?"":$unit; - $drug_unit = "" . $unit . ""; - $dose2 = (empty($dosage2_array[$x])) ? "" : " | " . $dosage2_array[$x] . $drug_unit; - @endphp - - - - - - @if(isset($purchased_elsewhere_array[$x]) && $purchased_elsewhere_array[$x] == 1) - - @else - @if($treatment->dispense_status == 1) - - @else - - @endif - @endif - - - @endfor - @endforeach - @endif - @endif - - - - @if(count($parent_episode_treatments) > 0) - - - - @foreach($parent_episode_treatments as $treatment) - @php - $drugs_array = explode(",", $treatment->drugs); - $dosage_array = explode(",", $treatment->doses); - $dosage2_array = explode(",", $treatment->dose2); - $frequencies_array = explode(",", $treatment->frequencies); - $duration_array = explode(",", $treatment->durations); - $quantity_dispensed_array = explode(",", $treatment->quantities_dispensed); - $instructions_array = explode(",", $treatment->instruction); - $purchased_elsewhere_array = is_null($treatment->purchased_elsewhere) ? [] : explode(",", $treatment->purchased_elsewhere); - @endphp - @for($x = 0; $x < count($drugs_array); $x++) - @php - $frequency_name = get_name($frequencies_array[$x], 'id', 'name', 'dosage_frequencies'); - $drug_unit_id = get_name($drugs_array[$x], 'id', 'unit_id', 'drugs'); - $unit = get_name($drug_unit_id, 'id', 'name', 'drug_units'); - $unit = $unit=="N/A"?"":$unit; - $drug_unit = "" . $unit . ""; - $dose2 = (empty($dosage2_array[$x])) ? "" : " | " . $dosage2_array[$x] . $drug_unit; - @endphp - - - - - - @if(isset($purchased_elsewhere_array[$x]) && $purchased_elsewhere_array[$x] == 1) - - @else - @if($treatment->dispense_status == 1) - - @else - - @endif - @endif - - - @endfor - @endforeach - @endif - - - @if(count($treatments) > 0) - @if(check_if_episode_is_a_followup($episode->id)) - - - - @endif - - @foreach($treatments as $treatment) - @php - $drugs_array = explode(",", $treatment->drugs); - $dosage_array = explode(",", $treatment->doses); - $dosage2_array = explode(",", $treatment->dose2); - $frequencies_array = explode(",", $treatment->frequencies); - $duration_array = explode(",", $treatment->durations); - $quantity_dispensed_array = explode(",", $treatment->quantities_dispensed); - $instructions_array = explode(",", $treatment->instruction); - $purchased_elsewhere_array = is_null($treatment->purchased_elsewhere) ? [] : explode(",", $treatment->purchased_elsewhere); - @endphp - @for($x = 0; $x < count($drugs_array); $x++) - @php - $frequency_name = get_name($frequencies_array[$x], 'id', 'name', 'dosage_frequencies'); - $drug_unit_id = get_name($drugs_array[$x], 'id', 'unit_id', 'drugs'); - $unit = get_name($drug_unit_id, 'id', 'name', 'drug_units'); - $unit = $unit=="N/A"?"":$unit; - $drug_unit = "" . $unit . ""; - $dose2 = (empty($dosage2_array[$x])) ? "" : " | " . $dosage2_array[$x] . $drug_unit; - @endphp - - - - - - @if(isset($purchased_elsewhere_array[$x]) && $purchased_elsewhere_array[$x] == 1) - - @else - @if($treatment->dispense_status == 1) - - @else - - @endif - @endif - - - @endfor - @endforeach - @else - - - - @endif - - -
    {{ __('consultations.DRUG_NAME') }}{{ __('consultations.DOSAGE') }}{{ __('consultations.DURATION') }}{{ __('consultations.QUANTITY') }}{{ __('consultations.STATUS') }}{{ __('consultations.INSTRUCTION') }}
    {{ __('consultations.treatment_for_episode_of') }} {{ streamline_date($grand_parent_episode_details->created_at) }}
    {{ get_name($drugs_array[$x], 'id', "name", 'drugs') }}{{ $dosage_array[$x] }} {!! $drug_unit !!} {{ $dose2 }}    {{ $frequency_name }}{{ isset($duration_array[$x]) ? $duration_array[$x] : "" }}{{ $quantity_dispensed_array[$x] }}Purchased From Elsewhere{{ __('consultations.dispensed') }}{{ __('consultations.pending') }} - {{ isset($instructions_array[$x]) ? trim($instructions_array[$x]) : 'N/A' }} -
    {{ __('consultations.treatment_for_episode_of') }} {{ streamline_date($parent_episode_details->created_at) }}
    {{ get_name($drugs_array[$x], 'id', "name", 'drugs') }}{{ $dosage_array[$x] }} {!! $drug_unit !!} {{ $dose2 }}    {{ $frequency_name }}{{ isset($duration_array[$x]) ? $duration_array[$x] : "" }}{{ $quantity_dispensed_array[$x] }}Purchased From Elsewhere{{ __('consultations.dispensed') }}{{ __('consultations.pending') }} - {{ isset($instructions_array[$x]) ? trim($instructions_array[$x]) : 'N/A' }} -
    {{ __('consultations.treatment_for_episode_review') }} ({{ streamline_date($episode->created_at)}})
    - {{ get_name($drugs_array[$x], 'id', "name", 'drugs') }} - - @if($treatment->is_treatment_progressive != 0) - (Progressive Treatment) - @endif - {{ $dosage_array[$x] }} {!! $drug_unit !!} {{ $dose2 }}    {{ $frequency_name }}{{ isset($duration_array[$x]) ? $duration_array[$x] : "" }}{{ $quantity_dispensed_array[$x] }}Purchased From Elsewhere{{ __('consultations.dispensed') }}{{ __('consultations.pending') }} - {{ isset($instructions_array[$x]) ? trim($instructions_array[$x]) : 'N/A' }} -
    {{ __('consultations.no_prescription_made_yet') }} {{ check_if_episode_is_a_followup($episode->id) ? __('consultations.during_current_review') : '' }}
    -
    -
    -
    -

    {{ __('consultations.ordered_procedures') }}

    -
    - - - - - - - - - - - - @if($episode_has_grand_parent_episode) - @if(count($grand_parent_episode_ordered_procedures) > 0) - - - - @php $grand_parent_count = 1; @endphp - @foreach($grand_parent_episode_ordered_procedures as $ordered_procedure) - @php - $procedure_id = explode(",", $ordered_procedure->procedure_id); - $procedure_performed_array = explode(",", $ordered_procedure->performed); - @endphp - - @for($i = 0; $i < count($procedure_id); $i++) - - - - - - - @php $grand_parent_count++; @endphp - @endfor - @endforeach - @endif - @endif - - - - @if(count($parent_episode_ordered_procedures) > 0) - - - - @php $parent_count = 1; @endphp - @foreach($parent_episode_ordered_procedures as $ordered_procedure) - @php - $procedure_id = explode(",", $ordered_procedure->procedure_id); - $procedure_performed_array = explode(",", $ordered_procedure->performed); - @endphp - - @for($i = 0; $i < count($procedure_id); $i++) - - - - - - - @php $parent_count++; @endphp - @endfor - @endforeach - @endif - - - @if(count($ordered_procedures) > 0) - @php $count = 0; $procedure_performed_counter = 0; @endphp - - @if(check_if_episode_is_a_followup($episode->id)) - - - - @endif - - @foreach($ordered_procedures as $ordered_procedure) - @php - $procedure_id = explode(",", $ordered_procedure->procedure_id); - $procedure_performed_array = explode(",", $ordered_procedure->performed); - $procedure_performed_id_array = explode(",", $ordered_procedure->performed_id); - @endphp - - @for($i = 0; $i < count($procedure_id); $i++) - - - - - - - @endfor - @endforeach - @else - - - - @endif - - -
    #{{ __('consultations.PROCEDURE') }}{{ __('consultations.STATUS') }}{{ __('consultations.PERFORMED') }}
    {{ __('consultations.procedures_for_episode_of') }} {{ streamline_date($grand_parent_episode_details->created_at) }}
    {{ $grand_parent_count }} - {{ get_name($procedure_id[$i], 'id', 'name', 'procedures') }} - - {!! $procedure_performed_array[$i] == 1 ? ''.__("consultations.performed").'' : ''. __("consultations.pending").'' !!} - - -
    {{ __('consultations.procedures_for_episode_of') }} {{ streamline_date($parent_episode_details->created_at) }}
    {{ $parent_count }} - {{ get_name($procedure_id[$i], 'id', 'name', 'procedures') }} - - {!! $procedure_performed_array[$i] == 1 ? ''.__("consultations.performed").'' : ''. __("consultations.pending").'' !!} - - -
    {{ __('consultations.procedures_for_episode_review') }} ({{ streamline_date($episode->created_at)}})
    {{ ++$count }} - {{ get_name($procedure_id[$i], 'id', 'name', 'procedures') }} - - {!! $procedure_performed_array[$i] == 1 ? ''.__("consultations.performed").'' : ''. __("consultations.pending").'' !!} - - @if($procedure_performed_array[$i] != 1) - - {{ Form::hidden('perform[]', $procedure_id[$i]) }} - {{ Form::hidden('procedure_order_perform[]', $ordered_procedure->id) }} - {{ Form::hidden('procedure_performed_position[]', $i) }} - - - - @php $procedure_performed_counter++ @endphp - @else - By {{ get_full_name(get_name($procedure_performed_id_array[$i], 'id', 'performed_by', 'staff_performed_services'), 'id', 'first_name', 'last_name', 'users') }} - @endif -
    {{ __('consultations.no_procedure_has_been_ordered') }} {{ check_if_episode_is_a_followup($episode->id) ? __('consultations.during_current_review') : '' }}.
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    - {{ Form::button(__('consultations.Investigation'),['type'=>'submit','class'=>'btn btn-info btn-block','name'=>'submit-btn','value'=>'investigation']) }} -
    -
    - {{ Form::button(__('consultations.Treatment'),['type'=>'submit','class'=>'btn btn-default btn-block','name'=>'submit-btn','value'=>'treatment']) }} -
    -
    -
    -
    -
    - {{ Form::button(__('consultations.Procedures'),['type'=>'submit','class'=>'btn btn-inverse btn-block','name'=>'submit-btn','value'=>'procedures']) }} -
    -
    - {{ Form::button(__('consultations.Sundries'),['type'=>'submit','class'=>'btn btn-primary btn-block','name'=>'submit-btn','value'=>'sundries']) }} -
    -
    -
    -
    -
    - {{ Form::button(__('consultations.services'),['type'=>'submit','class'=>'btn btn-default-bluish btn-block','name'=>'submit-btn','value'=>'services']) }} -
    -
    -
    -
    -
    -
    - @if(isset($grand_parent_episode_details) && !is_null($grand_parent_episode_details->consultation_id)) - @php - $grand_parent_consultation = \Streamline\Models\Consultation::where('episode_id',$grand_parent_episode_details->id)->first(); - @endphp - @if($grand_parent_consultation->comments) -
    - {{ __('consultations.consultation_comments_on') }} {{ streamline_date($grand_parent_consultation->created_at) }} -
    -
    - {{ $grand_parent_consultation->comments }} -
    - @endif - @endif - - @if(isset($parent_episode_details) && !is_null($parent_episode_details->consultation_id)) - @php - $parent_consultation = \Streamline\Models\Consultation::where('episode_id',$parent_episode_details->id)->first(); - @endphp - @if($parent_consultation->comments) -
    - {{ __('consultations.consultation_comments_on') }} {{ streamline_date($parent_consultation->created_at) }} -
    -
    - {{ $parent_consultation->comments }} -
    - @endif - @endif - -

    {{ __('consultations.comments') }}

    - -
    -
    -

    {{ __('consultations.outcome') }}

    - -
    -
    - {{ Form::select('outcome', $outcomes, is_null($consultation->outcome_id) ? 7 : $consultation->outcome_id, ['id' => 'outcome', 'class' => 'form-control compulsory']) }} -
    -
    -
    outcome_id != 1) style="display: none" @endif> -
    - {{ Form::label('ward_id',__('consultations.select_ward')) }} -
    - {{ Form::select('ward_id', $wards, $consultation->ward_id, ['class' => 'form-control compulsory']) }} -
    -
    - -
    - {{ Form::label('admitted_on',__('consultations.admitted_on')) }} -
    - {{ Form::text('admitted_on',Carbon\Carbon::parse($consultation->admitted_on)->format('Y-m-d'),['class' => 'form-control datepicker-autoclose compulsory', 'readonly']) }} - -
    -
    -
    - -
    outcome_id != 3) style="display: none"@endif> - - -
    - {{ Form::label('followup_clinic_allocation', 'Assign Clinic') }} - {{ Form::select('followup_clinic_allocation', $clinics, 0, ['class' => 'form-control col-sm-12 compulsory']) }} -
    - -
    - {{ Form::label('followup_in_charge', __('consultations.assign_incharge')) }} - -
    - -
    - {{ Form::label('followup_when',__('consultations.when')) }} -
    - {{ Form::text('followup_when',Carbon\Carbon::parse($consultation->followup_when)->format('Y-m-d'),['class' => 'form-control compulsory datepicker-autoclose','readonly']) }} - -
    -
    - -
    - {{ Form::label('followup_in_time', __('consultations.appointment_time')) }} - {{ Form::time('followup_in_time',$consultation->followup_time,['class' => 'form-control']) }} -
    -
    - -
    outcome_id != 4) style="display: none" @endif> -
    - {{ Form::label('referral_id',__('consultations.referred_to')) }} -
    - {{ Form::select('referral_id', $referrals, $consultation->referred_to, ['class' => 'form-control compulsory', 'id' => 'referral_hospital']) }} -
    - {{ __('triage.add_new') }} -
    - -
    - -
    - {{ Form::label('referral_notes', 'Referral Notes') }} - -
    -
    - -
    outcome_id, "id", "slug", "outcomes") != "internal_transfer") style="display: none" @endif> -
    - {{ Form::label('current_clinic', __('patient_episode.current_clinic')) }} - {{ Form::hidden('internal_transfer_status', 0, ['id' => 'internal_transfer_status']) }} - {{ Form::hidden('current_clinic_id', $episode->clinic_id ?: 0, ['id' => 'current_clinic_id']) }} - {{ Form::hidden('current_triage_id', $triage ? $triage->id : 0, ['id' => 'current_triage_id']) }} - {{ Form::hidden('current_episode_id', $episode->id, ['id' => 'current_episode_id']) }} - {{ Form::hidden('current_patient_id', $episode->patient_id, ['id' => 'current_patient_id']) }} - {{ Form::text('current_clinic', $episode->clinic_id ? get_name($episode->clinic_id, 'id', 'name', 'clinics') : '', ['class' => 'form-control compulsory', 'readonly', 'id' => 'current_clinic_transfer']) }} -
    - -
    - {{ Form::label('transfer_to_clinic', __('patient_episode.transfer_to')) }} - {{ Form::select('transfer_to_clinic', $clinics, null, ['class' => 'form-control compulsory', 'required', 'id' => 'transfer_to']) }} -
    -
    -
    -
    - @if(isset($consultation) && !is_null($consultation->updated_by)) - {{ __('consultations.consultation_done_by') }} {!! isset($consultation) ? ''.\Streamline\Models\User::withTrashed()->find($consultation->updated_by)->first_name. " ".\Streamline\Models\User::withTrashed()->find($consultation->updated_by)->last_name.' on '.streamline_date_time($consultation->created_at).'' : "" !!} -

    - @else - {{ __('consultations.consultation_done_by') }} {!! isset($consultation) ? ''.\Streamline\Models\User::withTrashed()->find($consultation->created_by)->first_name. " ".\Streamline\Models\User::withTrashed()->find($consultation->created_by)->last_name.' on '.streamline_date_time($consultation->created_at).'' : "" !!} -

    - @endif - - {{ Form::button(__('consultations.update_and_complete_consultation'),['class'=>'btn btn-success btn-block','value'=>'complete','name'=>'submit-btns', 'onclick'=>'return confirm_outcome()']) }} - -

    - - {{ Form::button(__('consultations.save_consultation'),['type'=>'submit','class'=>'btn btn-default btn-block','name'=>'submit-btn','value'=>'save_consultation']) }} -
    -
    -
    - {{ Form::close() }} - - @include('patients::consultations.document.add') - - @include('patients::consultations.add_diagnosis') - - - - - - - - - - - -@endsection - -@push('scripts') - - - - - -@endpush diff --git a/docker/streamline-src/Modules/Patients/Resources/views/consultations/referral_notes_print.blade.php b/docker/streamline-src/Modules/Patients/Resources/views/consultations/referral_notes_print.blade.php deleted file mode 100755 index 674e36c2..00000000 --- a/docker/streamline-src/Modules/Patients/Resources/views/consultations/referral_notes_print.blade.php +++ /dev/null @@ -1,553 +0,0 @@ - - - - - - - - - - - - {{ config('app.name', 'Referral Notes - Stre@mline') }} - - - - - - - - @php - $total_deposits_paid = 0; - $total_amount_to_pay = 0; - $discount_amount = 0; - $insurance_hospital_stay = 0; - $insurance_investigations = 0; - $insurance_treatments = 0; - $insurance_sundries = 0; - $insurance_procedures = 0; - $insurance_tta = 0; - $insurance_services = 0; - $price_list_id = is_patient_category_attached_to_price_list($patient_id); - $investigation_amount_total = 0; - @endphp - - -
    - @include('layouts.header_pdf_print') - -
    OUTPATIENT REFERRAL NOTE
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    {{ __('inpatient.patient_number') }}{{ $patient->number}} Clinic - {{ get_name($consultation->clinic_id, 'id', 'name', 'clinics') }}   -
    {{ __('inpatient.patient_names') }}{{ $patient->first_name}} {{ $patient->last_name}} Consultation Date - {{ streamline_date($consultation->created_at) }} -
    {{ __('inpatient.age') }}{{ get_patients_age($patient->date_of_birth, $consultation->created_at) }} Referral Number - {{ $patient->number }} -
    {{ __('inpatient.gender') }}{{ $patient->gender == 1 ? __('inpatient.male') : __('inpatient.female') }} {{ __('inpatient.category') }} - {{ get_name($patient->category_id, 'id', 'name', 'patient_categories') }} - - @if(!is_null($patient_discount)) - ({{ $patient_discount["discount"] }} % {{ __('inpatient.discount') }}) - @endif -
    -
    - - {{-- Symptoms, Priority and Emergency Signs --}} -
    -
    -
    -
    -
    -
    -
    {{ __('consultations.symptoms') }}
    -
    - @if (!empty($triage->symptoms) || !empty($consultation->symptoms)) - @php - $symptoms_explode = !empty($triage->symptoms)? explode(",", $triage->symptoms):explode(",", $consultation->symptoms); - $symptoms_duration = !empty($triage->symptom_duration)? explode(",", $triage->symptom_duration):explode(",", $consultation->symptom_duration); - @endphp -

    -

      - @foreach ($symptoms_explode as $key => $symptom) -
    • {{ ucwords($symptoms[$symptom] ?? '') }} for {{ $symptoms_duration[$key]?? '' }}
    • - @endforeach -
    -

    - @else -

    -

      -
    • {{ __('consultations.no_symptom_recorded') }}
    • -
    -

    - @endif -
    -
    - @if (between($years, 0, 12)) -
    -
    -
    -
    {{ __('triage.emergency_signs') }}
    -
    - @if (!empty($emergent_signs)) -

    -

      - @foreach ($emergent_signs as $emergent_sign) -
    • {{ ucwords($emergent_sign ?? '') }}
    • - @endforeach -
    -

    - @else -

    -

      -
    • {{ __('layout.no_emergency_signs') }}
    • -
    -

    - @endif -
    -
    -
    -
    -
    -
    {{ __('layout.priority_signs') }}
    -
    - @if (count($priority_signs) > 0) -

    -

      - @foreach ($priority_signs as $priority_sign) -
    • {{ ucwords($priority_sign ?? '') }}
    • - @endforeach -
    -

    - @else -

    -

      -
    • {{ __('layout.no_priority_signs') }}
    • -
    -

    - @endif -
    -
    - @endif - @if (isset($triage->any_tb_sysmptoms) && $triage->any_tb_sysmptoms == 1) -
    -
    -
    -
    {{ __('layout.tb_screening') }}
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - -
    A cough for more than two weeks?{{ $triage->cough_for_2_weeks == 1 ? "Yes" : "No" }}
    Persistent fevers for 2 weeks or more?{{ $triage->fever_for_2_weeks == 1 ? "Yes" : "No" }}
    Noticeable weight loss of more than 3 Kg?{{ $triage->tb_weight_loss == 1 ? "Yes" : "No" }}
    Poor weight gain in the last one month?{{ $triage->tb_poor_weight_gain == 1 ? "Yes" : "No" }}
    Excessive night sweats for three weeks or more?{{ $triage->tb_excessive_night_sweats == 1 ? "Yes" : "No" }}
    Contact with a person with pulmonary TB or chronic cough?{{ $triage->tb_contact_with_tb_person == 1 ? "Yes" : "No" }}
    -
    -
    - @endif -
    -
    -

    - -
    -
    -
    -
    -
    - Primary Diagnosis -
    - - - - - - -
    {{ $all_diagnoses[$consultation->primary_diagnosis]?? "" }}
    -
    - - @php - $other_diagnoses = @unserialize($consultation->other_diagnoses); - @endphp - - @if(!empty($other_diagnoses)) -
    -
    - Secondary Diagnosis -
    - - - @foreach($other_diagnoses as $diagnosis) - - - - @endforeach - -
    {{ $all_diagnoses[$diagnosis]?? "" }}
    -
    - @endif -
    -
    -

    - -
    - @if(!is_null($consultation->comments)) -
    - - - - - - - -
    {{ __('patient_episode.comments') }}
    {!! nl2br(e($consultation->comments)) !!}
    -
    - @endif - - @if(!is_null($consultation->history_comments)) -
    - - - - - - - -
    {{ __('patient_episode.history_comments') }}
    {!! nl2br(e($consultation->history_comments)) !!}
    -
    - @endif - - @if(!is_null($consultation->clinic_examination_comments)) -
    - - - - - - - -
    {{ __('patient_episode.clinic_examination_comments') }}
    {!! nl2br(e($consultation->clinic_examination_comments)) !!}
    -
    - @endif -
    - - @if (!empty($cons_notes)) - - - - - - - - - - - - @forelse ($cons_notes as $consultation_note) - - - - - - - @empty - - @endforelse - -
    {{ __('consultations.previous_notes') }}
    {{ __('consultations.history') }}{{ __('consultations.clinical_examination') }}{{ __('consultations.investigation_and_mgt_plan') }}{{ __('consultations.date') }}
    {{ $consultation_note->history_comments }}{{ $consultation_note->clinic_examination_comments }}{{ $consultation_note->investigation_and_management_plan_comments}}{{ streamline_date_time($consultation_note->created_at) }}
    {{ __('consultations.no_previous_notes') }}
    - @endif - -
    - @if(count($opd_investigations) > 0) -
    - - - - - - - - - - - @if(count($opd_investigations) > 0) - @for($i = 0; $i < count($opd_investigations['name']); $i++) - @if(isset($opd_investigations['name'][$i])) - - - - - - - @endif - @endfor - @endif - -
    {{ __('patient_file.investigation') }}{{ __('patient_file.result') }}{{ __('patient_file.normal_ranges') }}{{ __('patient_file.comment') }}
    {{ $opd_investigations['name'][$i] }} - @if (!empty($opd_investigations['type'][$i])) - See attached - @else - {!! nl2br(e($opd_investigations['value'][$i])) !!} - @endif - {{ $opd_investigations['normal_ranges'][$i] }}{!! nl2br(e($opd_investigations['comment'][$i])) !!}
    -
    - @endif - - @if(count($ordered_procedures) > 0) -
    - - - - - - @foreach($ordered_procedures as $procedure) - @php - $procedure_ids = explode(',', $procedure->procedure_id); - @endphp - @foreach ($procedure_ids as $id) - - - - @endforeach - @endforeach - -
    {{ __('patient_episode.procedure_name') }}
    {{ $procedures[$id] ?? "" }}
    -
    - @endif -
    - -
    - @if(count($treatments) > 0) -
    - - - - - - - - - - - @php $progressive_ids = []; @endphp - @foreach($treatments as $treatment) - drugs); - $dosage_array = explode(",", $treatment->doses); - $dosage2_array = explode(",", $treatment->dose2); - $frequencies_array = explode(",", $treatment->frequencies); - $duration_array = explode(",", $treatment->durations); - $quantity_dispensed_array = explode(",", $treatment->quantities_dispensed); - $instructions_array = explode(",", $treatment->instruction); - $purchased_elsewhere_array = explode(",", $treatment->purchased_elsewhere); - - // check if treatment is progressive and ignore - if ($treatment->is_treatment_progressive != 0) { - $progressive_ids[] = $treatment->is_treatment_progressive; - continue; - } - ?> - @for ($x = 0; $x < count($drugs_array); $x++) - form_id, "id", "name", "unit_of_measure"); - $drug_unit = get_name($drug_details->unit_id, "id", "name", "drug_units"); - $drug_strength = $drug_details->strength; - - $treatment_dosage = $dosage_array[$x] ?? ""; - $treatment_strength = $drug_strength ?? ""; - ?> - - - - - - - - @endfor - @endforeach - - @if(count($progressive_ids) > 0) - @php - $progressive_treatments = \Illuminate\Support\Facades\DB::table('treatments_opd_progressive')->whereIn('id', $progressive_ids)->get(); - @endphp - - @foreach($progressive_treatments as $treatment) - drugs); - $dosage_array = explode(",", $treatment->dose); - $frequencies_array = explode(",", $treatment->drug_frequency); - $duration_array = explode(",", $treatment->durations); - $quantity_dispensed_array = explode(",", $treatment->quantities_to_dispense); - $instructions_array = explode(",", $treatment->instruction); - ?> - @for ($x = 0; $x < count($drugs_array); $x++) - form_id, "id", "name", "unit_of_measure"); - $drug_unit = get_name($drug_details->unit_id, "id", "name", "drug_units"); - $drug_strength = $drug_details->strength; - - $treatment_dosage = $dosage_array[$x] ?? ""; - $treatment_strength = $drug_strength ?? ""; - ?> - - - - - - - - @endfor - @endforeach - @endif - -
    {{ __('patient_file.treatment') }}{{ __('patient_file.dosage_freq') }}{{ __('prescriptions.instructions') }}
    - {{ $drug_details->name }} - - @if($purchased_elsewhere_array[$x] == 1) - ( To Be Purchased elsewhere ) - @endif - - ({{ $dosage_array[$x] }} {!! $drug_unit !!}    {{ get_name($frequencies_array[$x], 'id', 'name', 'dosage_frequencies') }}) - {{ $duration_array[$x] ?? "" }}{{ $instructions_array[$x] ?? "" }}
    {{ $drug_details->name }} - ({{ $dosage_array[$x] }} {!! $drug_unit !!}    {{ get_name($frequencies_array[$x], 'id', 'name', 'dosage_frequencies') }}) - {{ $duration_array[$x] ?? "" }}{{ $instructions_array[$x] ?? "" }}
    -
    - @endif -
    - -
    -
    -
    -
    - Referral Notes -
    - - - - - - -
    {{ $consultation->referral_notes }}
    -
    -
    -
    - -
    - -
    -
    -
    - - - - - - - -
    Referred By: {{ !is_null($consultation->consultation_done_by) ? get_full_name($consultation->consultation_done_by, "id", "first_name", "last_name", "users") : get_full_name($consultation->created_by, "id", "first_name", "last_name", "users")}} to {{ get_name($consultation->referred_to, 'id', 'name', 'referral_hospitals') }}
    -
    -
    -
    - -
    - -
    -
    -
    -
    - Printed By -
    -
      -
    • - first_name . ' ' . Auth::user()->last_name; ?> -    .................................................... -    ({{ streamline_date(date("Y-m-d")) }}) -
    • -
    -
    -
    -
    -
    - - \ No newline at end of file diff --git a/docker/streamline-src/Modules/Patients/Resources/views/consultations/show.blade.php b/docker/streamline-src/Modules/Patients/Resources/views/consultations/show.blade.php deleted file mode 100755 index 6547fe21..00000000 --- a/docker/streamline-src/Modules/Patients/Resources/views/consultations/show.blade.php +++ /dev/null @@ -1,1654 +0,0 @@ -@extends('layouts.main') - -@push('scripts') - - -@endpush - -@push('styles') - -@endpush - -@section('content') - -
    -
    -

    {{ __('consultations.view_consultation_details') }}

    -
    -
    - -
    -
    - - @php - $patient_id = session('patient_id'); - $episode_id = session('episode_id'); - $episode_created_at = Carbon\Carbon::parse($episode->created_at); - $episode_has_grand_parent_episode = false; - @endphp - -
    -
    - @include('patients::allergies.header') -
    -
    -
    - - @if(check_if_episode_is_a_followup($episode->id)) - @php - $parent_episode_details = \Streamline\Models\PatientEpisode::find($episode->parent_episode_id); - $parent_consultations = \Streamline\Models\Consultation::where(['episode_id' => $parent_episode_details->id])->get(); - $parent_consultation_details = count($parent_consultations) > 0 ? $parent_consultations->first() : null; - $parent_triage_details = \Streamline\Models\Triage::where(['id' => $parent_episode_details->triage_id])->first(); - $parent_consultation_notes = \Streamline\Models\WardInpatientDetailedNote::where(['patient_id' => $episode->patient_id, 'episode_id' => $episode->parent_episode_id, 'ward_id' => 0])->get(); - - if(check_if_episode_is_a_followup($parent_episode_details->id)){ - $episode_has_grand_parent_episode = true; - - $grand_parent_episode_details = \Streamline\Models\PatientEpisode::find($parent_episode_details->parent_episode_id); - - $grand_parent_episode_treatments = \Streamline\Models\Treatment::where(['patient_id' => $patient_id, 'episode_id' => $grand_parent_episode_details->id, 'tta' => 0])->get(); - - $grand_parent_episode_ordered_procedures = \Streamline\Models\OrderedProcedure::where(['patient_id' => $patient_id, 'episode_id' => $grand_parent_episode_details->id])->get(); - - $grand_parent_episode_ordered_investigations = \Streamline\Models\OrderedInvestigation::where(['patient_id' => $patient_id, 'episode_id' => $grand_parent_episode_details->id])->get(); - - $grand_parent_episode_ordered_sundries = \Streamline\Models\OrderedSundry::where(['patient_id' => $patient_id, 'episode_id' => $grand_parent_episode_details->id])->get(); - - $grand_parent_episode_investigation_results = \Streamline\Models\InvestigationResults::where(['patient_id' => $patient_id, 'episode_id' => $grand_parent_episode_details->id])->get(); - } - @endphp - @endif - -
    -
    -
    -
    -
    -
    - -
    -
    -
    - {{ __('consultations.triage_grade') }} : - @if($triage) - @switch($triage->severe_grade) - @case (1) -
    {{ __('consultations.green') }}
    - @break - @case (2) -
    {{ __('consultations.yellow') }}
    - @break - @case (3) -
    {{ __('consultations.red') }}
    - @break - @default - T{{ __('consultations.triage_grade_not_determined') }} - @endswitch - @endif -
    -
    - {{ __('consultations.symptoms') }} : - @if($triage) - @php $symptoms_array = explode(",", $triage->symptoms); @endphp - @php $symptoms_duration_array = explode(",", $triage->symptom_duration); @endphp - -
    -
    - - - - - - - - - @php $counter = 0; @endphp - @for($i = 0; $i < count($symptoms_array); $i++) - - - - - @endfor - -
    {{ __('consultations.symptom') }}{{ __('consultations.duration') }}
    {{ isset($symptoms[$symptoms_array[$i]]) ? $symptoms[$symptoms_array[$i]] : "" }}{{ isset($symptoms_duration_array[$i]) ? $symptoms_duration_array[$i] : "" }}
    -
    -
    - @else - {{ __('consultations.no_symptom_recorded') }} - @endif -
    - -
    - - @if($triage) - @php - $observations_array = explode(',', $triage->observations); //i.e[temp=44,height=2] - - $parent_observation_array = isset($parent_triage_details) ? explode(',', $parent_triage_details->observations): []; - @endphp -
    -
    - - - - - @if(check_if_episode_is_a_followup($episode->id)) - - @endif - - - @php $counter = 0; @endphp - @foreach($observations_array as $observation) - @php - $item_array = explode('=', $observation); //i.e[temp,44] - $counter++; - @endphp - @if($counter < 9) - - - - - @if(check_if_episode_is_a_followup($episode->id)) - @foreach($parent_observation_array as $parent_observation) - @php - $parent_item_array = isset($parent_triage_details) ? explode('=', $parent_observation) : []; - @endphp - @if($item_array[0] == $parent_item_array[0]) - - @endif - @endforeach - @endif - - @endif - @endforeach - -
    {{ __('consultations.observation') }}{{ __('consultations.value') }} - {{ __('consultations.previous_value') }} -
    {{ $item_array[0] }}{{ $item_array[1] }} - {{ $parent_item_array[1] }} -
    -
    - -
    - - - - - @if(check_if_episode_is_a_followup($episode->id)) - - @endif - - - @php $counter=0; @endphp - @foreach($observations_array as $observation) - @php - $item_array = explode('=', $observation); //i.e[temp,44] - $counter++; - @endphp - @if($counter >= 9) - - - - - @if(check_if_episode_is_a_followup($episode->id)) - @foreach($parent_observation_array as $parent_observation) - @php - $parent_item_array = isset($parent_triage_details) ? explode('=', $parent_observation) : []; - @endphp - @if($item_array[0] == $parent_item_array[0]) - - @endif - @endforeach - @endif - - @endif - @endforeach - -
    {{ __('consultations.observation') }}{{ __('consultations.value') }} - {{ __('consultations.previous_value') }} -
    {{ $item_array[0] }}{{ $item_array[1] }} - {{ $parent_item_array[1] }} -
    -
    -
    - {{ __('consultations.comment') }}: {{ !is_null($triage) ? $triage->comments : "" }}
    - @else - {{ __('consultations.no_observations_recorded') }} - @endif - - {{ __('consultations.triage_done_by') }} {!! isset($triage) ? ''.$users[$triage->created_by].' on '.streamline_date_time($triage->created_at).'' : "" !!} -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    - @if(count($documents) > 0) - @foreach($documents as $document) -
  • - {{ is_null($document->title) ? substr($document->description, 0, 5) : $document->title }} ({{ streamline_date_time($document->created_at) }}) -
  • - @endforeach - @else - {{ __('consultations.no_patient_documents_available') }} - @endif - -
    - - {{ __('consultations.add_new') }} -
    -
    -
    -
    - -
    -
    - -
    -
    - @php - $used_services = \Streamline\Models\OrderedService::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->get(); - $services_counter = 1; - @endphp - - @if(count($used_services) > 0) -
    - - - - - - - - - - @foreach($used_services as $service) - @php - $service_ids = explode(",", $service->service_id); - $service_quantity = explode(",", $service->quantity); - @endphp - - @for($i = 0; $i < count($service_ids); $i++) - - - - - - @endfor - @endforeach - -
    {{ __('consultations.service') }}{{ __('consultations.quantity') }}{{ __('consultations.payment_status') }}
    - {{ get_name($service_ids[$i], "id", "name", "services")}} - - {{ $service_quantity[$i] }} - - {!! $service->payment_status == 0 ? "Not Paid" : "Paid" !!} -
    -
    - @else - {{ __('consultations.no_used_services') }} - @endif -
    -
    -
    -
    - - - {{-- Display TB screening takend from triage --}} - @if (is_tuberculosis_screening_enabled()) -
    -
    -
    -

    - TB Screening -

    -
    -
    -
    - @if($triage) - @if ($triage->any_tb_sysmptoms == 1) - - - - - - - - - - - - - - - - - - - - - - - - - -
    A cough for more than two weeks ?{{ $triage->cough_for_2_weeks == 1 ? "Yes" : "No" }}
    Persistent fevers for 2 weeks or more ?{{ $triage->fever_for_2_weeks == 1 ? "Yes" : "No" }}
    Noticeable weight loss of more than 3 Kg?{{ $triage->tb_weight_loss == 1 ? "Yes" : "No" }}
    Poor weight gain in the last one month ?{{ $triage->tb_poor_weight_gain == 1 ? "Yes" : "No" }}
    Excessive night sweats for three weeks or more ?{{ $triage->tb_excessive_night_sweats == 1 ? "Yes" : "No" }}
    Contact with a person with pulmonary TB or chronic cough ?{{ $triage->tb_contact_with_tb_person == 1 ? "Yes" : "No" }}
    - @endif - @endif -
    -
    -
    -
    - @endif - {{-- end of tb details --}} -
    -
    - - @if(are_symptoms_on_consultation()) -
    - - - - - - - - - - @php - $symptoms_explode = explode(",", $consultation->symptoms); - $duration_explode = explode(",", $consultation->symptom_duration); - @endphp - - @for ($i = 0; $i < count($symptoms_explode); $i++) - - - - - @endfor - - -
    {{ __('triage.symptoms') }}{{ __('triage.duration') }}
    {{ $symptoms[$symptoms_explode[$i]] ?? '' }}{{ $duration_explode[$i] ?? '' }}
    -
    - @endif - - @if($is_mental_health_clinic) -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - -
    {{ __('consultations.psychosis_symptom_scores') }}
    {{ __('consultations.hallucinations') }}{{ isset($mental_health_consultation->hallucinations) ? $mental_health_consultation->hallucinations : 'N/A' }}
    {{ __('consultations.delusions') }}{{ isset($mental_health_consultation->delusions) ? $mental_health_consultation->delusions : 'N/A' }}
    {{ __('consultations.disorganised_speech') }}{{ isset($mental_health_consultation->disorganised_speech) ? $mental_health_consultation->disorganised_speech : 'N/A' }}
    {{ __('consultations.abnormal_phychomotor_behaviour') }}{{ isset($mental_health_consultation->abnormal_psychomotor_behaviour) ? $mental_health_consultation->abnormal_psychomotor_behaviour : 'N/A' }}
    -
    -
    - - - - - - - - - - - - - - - - - - - - - -
    {{ __('consultations.negative_symptoms') }}
    {{ __('consultations.impaired_cognition') }}{{ isset($mental_health_consultation->impaired_cognition) ? $mental_health_consultation->impaired_cognition : 'N/A' }}
    {{ __('consultations.depression') }}{{ isset($mental_health_consultation->depression) ? $mental_health_consultation->depression : 'N/A' }}
    {{ __('consultations.mania') }}{{ isset($mental_health_consultation->mania) ? $mental_health_consultation->mania : 'N/A' }}
    {{ __('consultations.hamilton_anxiety_score') }}{{ isset($mental_health_consultation->hamilton_anxiety_score) ? $mental_health_consultation->hamilton_anxiety_score : 'N/A' }}
    -
    -
    -
    -

    {{ __('consultations.hamilton_anxiety_score') }}

    -

    0-17 = no / mild anxiety

    -

    18-24 = mild to moderate anxiety

    -

    25-30 = moderate to severe anxiety

    -
    -
    -
    - -
    -
    - - - - - - - - - -
    {{ __('consultations.alcohol_score') }}
    {{ __('consultations.total_score') }}{{ isset($mental_health_consultation->alcohol_screening_score) ? $mental_health_consultation->alcohol_screening_score : 'N/A' }}
    -
    -
    - - - - - - - - - - - - - -
    {{ __('consultations.satisfaction_score') }}
    {{ __('consultations.patient') }}{{ isset($mental_health_consultation->patient_satisfaction_score) ? $mental_health_consultation->patient_satisfaction_score : 'N/A' }}
    {{ __('consultations.care_giver') }}{{ isset($mental_health_consultation->caregiver_satisfaction_score) ? $mental_health_consultation->caregiver_satisfaction_score : 'N/A' }}
    -
    -
    -
    -

    {{ __('consultations.alcohol_screening_score') }}

    -

    1-7 = {{ __('consultations.low_risk') }}

    -

    8-19 = {{ __('consultations.harmful_drinking') }}

    -

    20 or above = {{ __('consultations.likely_dependency') }}

    -
    -
    -
    -
    - @endif - - @if (is_tuberculosis_screening_enabled()) - @include('patients::consultations.tb_screening') - @endif - -
    -
    - - - - - - - - - - @if(check_if_episode_is_a_followup($episode->id) && !is_null($parent_consultation_details) && $parent_consultation_details->primary_diagnosis != $consultation->primary_diagnosis) - - - - - - @endif - - - - - - - - -
    {{ __('consultations.PRIMARY_DIAGNOSIS') }}{{ __('consultations.PROMPT') }}{{ __('consultations.REFERENCES') }}
    -
    -
    - {{ Form::select('parent_primary_diagnosis', $diagnoses, $parent_consultation_details->primary_diagnosis, ['class' => 'form-control col-sm-12 compulsory', 'readonly']) }} -
    -
    -
    ({{ __('consultations.as_diagnosed_on') }} {{ streamline_date($parent_episode_details->created_at) }})
    -
    -
    -
    - {{ isset($parent_consultation_details->primary_diagnosis) ? $diagnoses_all->firstWhere('id',$parent_consultation_details->primary_diagnosis)->prompts : "" }} 
    -
    - @if(!is_null($parent_consultation_details->primary_diagnosis)) - @php - $reference_names = explode(",", get_name($parent_consultation_details->primary_diagnosis, 'id', 'reference_names', 'diagnoses')); - $reference_areas = explode(",", get_name($parent_consultation_details->primary_diagnosis, 'id', 'reference_areas', 'diagnoses')); - @endphp - @for($i = 0; $i < count($reference_areas); $i++) - @if(isset($reference_areas[$i]) && isset($reference_names[$i])) - {{ $reference_names[$i] }} | - @endif - @endfor - @endif -
    -
    -

    {{ isset($diagnoses[$consultation->primary_diagnosis]) ? $diagnoses[$consultation->primary_diagnosis] : "" }}

    -
    {{ is_object($diagnoses_all) && isset($consultation->primary_diagnosis) ? $diagnoses_all->firstWhere('id',$consultation->primary_diagnosis)->prompts : null }} 
    -
    - @if(!is_null($consultation->primary_diagnosis)) - @php - $reference_names = explode(",", get_name($consultation->primary_diagnosis, 'id', 'reference_names', 'diagnoses')); - $reference_areas = explode(",", get_name($consultation->primary_diagnosis, 'id', 'reference_areas', 'diagnoses')); - @endphp - @for($i = 0; $i < count($reference_areas); $i++) - @if(isset($reference_areas[$i]) && isset($reference_names[$i])) - {{ $reference_names[$i] }} | - @endif - @endfor - @endif -
    -
    -
    -
    - -
    -
    - - - - - - - - - - - @if(check_if_episode_is_a_followup($episode->id) && !is_null($parent_consultation_details)) - @php - $parent_consultation_other_diagnoses = unserialize($parent_consultation_details->other_diagnoses); - @endphp - - @if(!empty($parent_consultation_other_diagnoses) && $parent_consultation_other_diagnoses[0] != "") - @foreach($parent_consultation_other_diagnoses as $diagnosis) - @if($diagnosis != "") - - - - - - @endif - @endforeach - @endif - @endif - - - @php - $other_diagnoses = unserialize($consultation->other_diagnoses); - @endphp - - @if(!empty($other_diagnoses) && $other_diagnoses[0] != "") - @foreach($other_diagnoses as $diagnosis) - @if($diagnosis != "") - - - - - - @endif - @endforeach - @else - - - - @endif - -
    {{ __('consultations.OTHER_DIAGNOSIS') }}{{ __('consultations.PROMPT') }}{{ __('consultations.REFERENCES') }}
    -

    {{ $diagnoses[$diagnosis] }}
    (As diagnosed on {{ streamline_date($parent_episode_details->created_at) }})

    -
    {{ is_object($diagnoses_all->firstWhere('id',$diagnosis)) ? $diagnoses_all->firstWhere('id',$diagnosis)->prompts : '' }} 
    -
    - @if(!is_null($consultation->primary_diagnosis)) - @php - $reference_names = explode(",", get_name($parent_consultation_details->primary_diagnosis, 'id', 'reference_names', 'diagnoses')); - $reference_areas = explode(",", get_name($parent_consultation_details->primary_diagnosis, 'id', 'reference_areas', 'diagnoses')); - @endphp - @for($i = 0; $i < count($reference_areas); $i++) - @if(isset($reference_areas[$i]) && isset($reference_names[$i])) - {{ $reference_names[$i] }} | - @endif - @endfor - @endif -
    -
    -

    {{ $diagnoses[$diagnosis] }}

    -
    {{ is_object($diagnoses_all->firstWhere('id',$diagnosis)) ? $diagnoses_all->firstWhere('id',$diagnosis)->prompts : '' }} 
    -
    - @if(!is_null($consultation->primary_diagnosis)) - @php - $reference_names = explode(",", get_name($consultation->primary_diagnosis, 'id', 'reference_names', 'diagnoses')); - $reference_areas = explode(",", get_name($consultation->primary_diagnosis, 'id', 'reference_areas', 'diagnoses')); - @endphp - @for($i = 0; $i < count($reference_areas); $i++) - @if(isset($reference_areas[$i]) && isset($reference_names[$i])) - {{ $reference_names[$i] }} | - @endif - @endfor - @endif -
    -
    No other diagnoses available
    -
    -
    - -
    - - - - - - - - - - - - - -
    RDTRBS
    - @if($consultation->rdt === 1) - - @elseif($consultation->rdt === 0) - - @elseif($consultation->rdt === null) - - @endif - {{ $consultation->rbs }}
    -
    - - @if($consultation_with_notes) -
    -

    Previously Added Consultation Notes

    -
    -
    - - - - - - - - - - - @forelse ($consultation_notes as $consultation_note) - - - - - - - @empty - - @endforelse - -
    {{ __('consultations.history') }}{{ __('consultations.clinical_examination') }}{{ __('consultations.investigation_and_mgt_plan') }}{{ __('consultations.date') }}
    {{ $consultation_note->history_comments }}{{ $consultation_note->clinic_examination_comments }}{{ $consultation_note->investigation_and_management_plan_comments}}{{ streamline_date_time($consultation_note->created_at) }}
    by {{ $users[$consultation_note->created_by]?? '' }}
    No previously added consultation notes.
    -
    -
    -
    - - @if(check_if_episode_is_a_followup($episode->id) && !empty($parent_consultation_notes)) -
    -
    -
    - - - - - - - - - - - - @forelse ($parent_consultation_notes as $consultation_note) - - - - - - - @empty - - @endforelse - -
    Previously Added Consultation Notes {{ __('consultations.for_episode_of') }} {{ streamline_date($parent_consultation_details->created_at) }}
    {{ __('consultations.history') }}{{ __('consultations.clinical_examination') }}{{ __('consultations.investigation_and_mgt_plan') }}{{ __('consultations.date') }}
    {{ $consultation_note->history_comments }}{{ $consultation_note->clinic_examination_comments }}{{ $consultation_note->investigation_and_management_plan_comments}}{{ streamline_date_time($consultation_note->created_at) }}
    by {{ $users[$consultation_note->created_by]?? '' }}
    No previously added consultation notes {{ __('consultations.for_episode_of') }} {{ streamline_date($parent_consultation_details->created_at) }}.
    -
    -
    -
    - @endif - - {{--
    -
    -
    - - - - - - - - - - - -
    {{ __('consultations.history') }}
    {!! ($consultation->history_comments) ? nl2br(e($consultation->history_comments)) : "No comments available" !!}
    -
    -
    -
    --}} - - @endif - -
    -
    -
    -

    {{ __('consultations.ordered_investigations') }}

    - -
    - - - - - - - - - - - - - @if($episode_has_grand_parent_episode) - @if(count($grand_parent_episode_investigation_results) > 0) - - - - @foreach($grand_parent_episode_investigation_results as $result) - @php - $investigation_ids_array = explode(',', $result->investigation_id); - - // authentication of investigations - $per_investigation_array = explode(',', $result->per_investigation); - - $comments = explode(",", $result->comment); - $results_values = explode(",", $result->value); - @endphp - @for($i = 0 ; $i < count($investigation_ids_array) ; $i++) - @php - $investigation = \Streamline\Models\Investigation::withTrashed()->find($investigation_ids_array[$i]); - - if(!$investigation) { - continue; - } - @endphp - - - - - - - @endfor - - - - @endforeach - - - - @elseif(count($grand_parent_episode_ordered_investigations) > 0) - - - - @foreach($grand_parent_episode_ordered_investigations as $investigation) - @php $investigation_ids_array = explode(',', $investigation->investigation_id); @endphp - @for($i = 0 ; $i < count($investigation_ids_array) ; $i++) - @php - $investigation = \Streamline\Models\Investigation::withTrashed()->find($investigation_ids_array[$i]); - if(!$investigation) { - continue; - } - @endphp - - - - - - - @endfor - @endforeach - - - - @endif - @endif - - - - @if(count($parent_episode_investigation_results) > 0) - - - - @foreach($parent_episode_investigation_results as $result) - @php - $investigation_ids_array = explode(',', $result->investigation_id); - - // authentication of investigations - $per_investigation_array = explode(',', $result->per_investigation); - - $comments = explode(",", $result->comment); - $results_values = explode(",", $result->value); - @endphp - @for($i = 0 ; $i < count($investigation_ids_array) ; $i++) - @php - $investigation = \Streamline\Models\Investigation::withTrashed()->find($investigation_ids_array[$i]); - if(!$investigation) { - continue; - } - @endphp - - - - - - - @endfor - - - - @endforeach - - - - @elseif(count($parent_episode_ordered_investigations) > 0) - - - - @foreach($parent_episode_ordered_investigations as $investigation) - @php $investigation_ids_array = explode(',', $investigation->investigation_id); @endphp - @for($i = 0 ; $i < count($investigation_ids_array) ; $i++) - @php - $investigation = \Streamline\Models\Investigation::withTrashed()->find($investigation_ids_array[$i]); - if(!$investigation) { - continue; - } - @endphp - - - - - - - @endfor - @endforeach - - - - @endif - - - @if(count($investigation_results) > 0) - @if(check_if_episode_is_a_followup($episode->id)) - - - - @endif - - @foreach($investigation_results as $result) - @php - $investigation_ids_array = explode(',', $result->investigation_id); - - // authentication of investigations - $per_investigation_array = explode(',', $result->per_investigation); - - $comments = explode(",", $result->comment); - $results_values = explode(",", $result->value); - @endphp - - @for($i = 0 ; $i < count($investigation_ids_array) ; $i++) - @php - $investigation = \Streamline\Models\Investigation::withTrashed()->find($investigation_ids_array[$i]); - if(!$investigation) { - continue; - } - @endphp - @if($investigation->type == 1 && isset($results_values[$i])) - - - - - @php - $specialised_results = \Streamline\Models\InvestigationSpecialisedResult::where('id', $results_values[$i])->first(); - - if($specialised_results) { - $variable_id_array = explode(',', $specialised_results->specialised_variable_id); - - $variable_value_array = explode(',', $specialised_results->value); - - $variable_comment_array = explode(',', $specialised_results->comment); - - $variable_normal_range_array = explode(',', $specialised_results->normal_ranges); - } - @endphp - @if($specialised_results) - @for($x = 0; $x < count($variable_id_array); $x++) - - - - - - - - @endfor - @endif - - @elseif($investigation->slug == 'echo' && $results_values[$i] == "") - - - - - @else - - - - - - - - @endif - @endfor - - - - @endforeach - @elseif(count($ordered_investigations) > 0) - - @if(check_if_episode_is_a_followup($episode->id)) - - - - @endif - - @foreach($ordered_investigations as $investigation) - @php - $investigation_ids_array = explode(',', $investigation->investigation_id); - @endphp - - @for($i = 0 ; $i < count($investigation_ids_array) ; $i++) - @if(isset($investigation_ids_array[$i]) && $investigation_ids_array[$i] != "") - @php - $investigation = \Streamline\Models\Investigation::withTrashed()->find($investigation_ids_array[$i]); - if(!$investigation) { - continue; - } - @endphp - @if($investigation->slug == 'echo') - - - - - @else - - - - - - - - @endif - @endif - @endfor - @endforeach - @else - - - - @endif - -
    {{ __('investigations.investigation_name') }}{{ __('investigations.results') }}{{ __('investigations.normal_ranges') }}{{ __('investigations.unit') }}{{ __('investigations.comment') }}
    {{ __('consultations.investigation_for_episode_of') }}f {{ streamline_date($grand_parent_episode_details->created_at) }}
    - @if($investigation->insurance_coverage == 1 && patient_insurance_status($patient_id) == 1) - {{ $investigation->name }} - @else - {{ $investigation->name }} - @endif - - {{ $investigation->normal_ranges }} - - {!! $per_investigation_array[$i] == 0 ? '{{ __("consultations.pending") }}' : $results_values[$i] !!} - - @if(isset($comments[$i]) && $per_investigation_array[$i] != 0) - {{ $comments[$i] }} - @else - {{ __("consultations.pending") }} - @endif -
    {{ __('consultations.authenticated_by') }}{{ get_name($result->authenticated_by, 'id', 'first_name', 'users')}} {{ get_name($result->authenticated_by, 'id', 'last_name', 'users')}}
    {{ __('consultations.investigation_for_episode_of') }} {{ streamline_date($grand_parent_episode_details->created_at) }}
    - @if($investigation->insurance_coverage == 1 && patient_insurance_status($patient_id) == 1) - {{ $investigation->name }} - @else - {{ $investigation->name }} - @endif - - {{ $investigation->normal_ranges }} - {{ __('consultations.pending') }} - {{ $investigation->comments }} -
    {{ __('consultations.investigation_for_episode_of') }} {{ streamline_date($parent_episode_details->created_at) }}
    - @if($investigation->insurance_coverage == 1 && patient_insurance_status($patient_id) == 1) - {{ $investigation->name }} - @else - {{ $investigation->name }} - @endif - - {{ $investigation->normal_ranges }} - - {!! $per_investigation_array[$i] == 0 ? '{{ __("consultations.pending") }}' : $results_values[$i] !!} - - @if(isset($comments[$i]) && $per_investigation_array[$i] != 0) - {{ $comments[$i] }} - @else - {{ __("consultations.pending") }} - @endif -
    {{ __('consultations.authenticated_by') }}y{{ get_name($result->authenticated_by, 'id', 'first_name', 'users')}} {{ get_name($result->authenticated_by, 'id', 'last_name', 'users')}}
    {{ __('consultations.investigation_for_episode_of') }} {{ streamline_date($parent_episode_details->created_at) }}
    - @if($investigation->insurance_coverage == 1 && patient_insurance_status($patient_id) == 1) - {{ $investigation->name }} - @else - {{ $investigation->name }} - @endif - - {{ $investigation->normal_ranges }} - {{ __('consultations.pending') }} - {{ $investigation->comments }} -
    {{ __('consultations.investigation_for_review') }} ({{ streamline_date($episode->created_at)}})
    - @if($investigation->insurance_coverage == 1 && patient_insurance_status($patient_id) == 1) - {{ $investigation->name }} - @else - {{ $investigation->name }} - @endif -
    {{ get_name($variable_id_array[$x], 'id', 'name', 'investigation_specialised_variables') }}{{ $variable_value_array[$x] }} - @if(get_name($variable_id_array[$x], 'id', 'range_type', 'investigation_specialised_variables') == 1) - - {{ get_dynamic_normal_range_specialized($variable_id_array[$x], get_patient_age_group($patient_id), get_name($patient_id, 'id', 'gender', 'patients')) }} - @else - {{ get_name($variable_id_array[$x], 'id', 'normal_ranges', 'investigation_specialised_variables') }} - @endif - - @if(get_name(get_name($variable_id_array[$x], 'id', 'units', 'investigation_specialised_variables'), 'id', 'name', 'unit_of_measure') != "N/A") - {{ get_name(get_name($variable_id_array[$x], 'id', 'units', 'investigation_specialised_variables'), 'id', 'name', 'unit_of_measure') }} - @endif - {{ $variable_comment_array[$x] }}
    - @if($investigation->insurance_coverage == 1 && patient_insurance_status($patient_id) == 1) - {{ $investigation->name }} - @else - {{ $investigation->name }} - @endif - - - View results - -
    - @if($investigation->insurance_coverage == 1 && patient_insurance_status($patient_id) == 1) - {{ $investigation->name }} - @else - {{ $investigation->name }} - @endif - - @if($per_investigation_array[$i] == 0) - {{ __("consultations.pending") }} - @else - {{ isset($results_values[$i]) ? $results_values[$i] : "" }} - @endif - - @if($investigation->range_type == 1) - {{ get_dynamic_normal_range($investigation->id, get_patient_age_group($patient_id), get_name($patient_id, 'id', 'gender', 'patients')) }} - @else - {{ $investigation->normal_ranges }} - @endif - - {{ get_name(get_name($investigation->id, 'id', 'units', 'investigations'),'id', 'name', 'unit_of_measure') }} - - @if(isset($comments[$i]) && $per_investigation_array[$i] != 0) - {{ $comments[$i] }} - @else - {{ __("consultations.pending") }} - @endif -
    {{ __('consultations.authenticated_by') }}{{ get_name($result->authenticated_by, 'id', 'first_name', 'users')}} {{ get_name($result->authenticated_by, 'id', 'last_name', 'users')}}
    {{ __('consultations.investigation_for_review') }} ({{ streamline_date($episode->created_at)}})
    - @if($investigation->insurance_coverage == 1 && patient_insurance_status($patient_id) == 1) - {{ $investigation->name }} - @else - {{ $investigation->name }} - @endif - - @if(($cardio_echo)) - - View results - - @else - Pending - @endif -
    - @if($investigation->insurance_coverage == 1 && patient_insurance_status($patient_id) == 1) - {{ $investigation->name }} - @else - {{ $investigation->name }} - @endif - {{ __('consultations.pending') }} - @if($investigation->range_type == 1) - {{ get_dynamic_normal_range($investigation->id, get_patient_age_group($patient_id), get_name($patient_id, 'id', 'gender', 'patients')) }} - @else - {{ $investigation->normal_ranges }} - @endif - - {{ $investigation->comments }} -
    {{ __('consultations.investigation_not_ordered') }}
    -
    -
    -
    -

    {{ __('consultations.ordered_sundries') }}

    - -
    - - - - - - - - - - @if($episode_has_grand_parent_episode) - @if(count($grand_parent_episode_ordered_sundries) > 0) - - - - @foreach($grand_parent_episode_ordered_sundries as $ordered_sundry) - @php - $sundry_ids = explode(",", $ordered_sundry->sundries_id); - $sundry_quantity = explode(",", $ordered_sundry->quantity); - @endphp - - @for($i = 0; $i < count($sundry_ids); $i++) - - - - - @endfor - @endforeach - @endif - @endif - - - - @if(count($parent_episode_ordered_sundries) > 0) - - - - @foreach($parent_episode_ordered_sundries as $ordered_sundry) - @php - $sundry_ids = explode(",", $ordered_sundry->sundries_id); - $sundry_quantity = explode(",", $ordered_sundry->quantity); - @endphp - - @for($i = 0; $i < count($sundry_ids); $i++) - - - - - @endfor - @endforeach - @endif - - - @if(count($ordered_sundries) > 0) - - @if(check_if_episode_is_a_followup($episode->id)) - - - - @endif - - @foreach($ordered_sundries as $ordered_sundry) - @php - $sundry_ids = explode(",", $ordered_sundry->sundries_id); - $sundry_quantity = explode(",", $ordered_sundry->quantity); - @endphp - - @for($i = 0; $i < count($sundry_ids); $i++) - - - - - @endfor - @endforeach - @else - - - - @endif - - -
    {{ __('consultations.SUNDRY') }}{{ __('consultations.QUANTITY') }}
    {{ __('consultations.sundries_for_episode_of') }} {{ streamline_date($grand_parent_episode_details->created_at) }}
    {{ get_name($sundry_ids[$i], 'id', 'name', 'sundries') }} {!! $sundry_quantity[$i] !!}
    {{ __('consultations.sundries_for_episode_of') }} {{ streamline_date($parent_episode_details->created_at) }}
    {{ get_name($sundry_ids[$i], 'id', 'name', 'sundries') }} {!! $sundry_quantity[$i] !!}
    {{ __('consultations.sundries_for_episode_review') }} ({{ streamline_date($episode->created_at)}})
    {{ get_name($sundry_ids[$i], 'id', 'name', 'sundries') }} {!! $sundry_quantity[$i] !!}
    {{ __('consultations.no_sundries_ordered') }} {{ check_if_episode_is_a_followup($episode->id) ? __('consultations.during_current_review') : '' }}.
    -
    -
    -
    -
    - -
    -
    -
    -

    {{ __('consultations.treatment_given') }}

    -
    - - - - - - - - - - - - - - @if($episode_has_grand_parent_episode) - @if(count($grand_parent_episode_treatments) > 0) - - - - @foreach($grand_parent_episode_treatments as $treatment) - @php - $drugs_array = explode(",", $treatment->drugs); - $dosage_array = explode(",", $treatment->doses); - $dosage2_array = explode(",", $treatment->dose2); - $frequencies_array = explode(",", $treatment->frequencies); - $duration_array = explode(",", $treatment->durations); - $quantity_dispensed_array = explode(",", $treatment->quantities_dispensed); - $instructions_array = explode(",", $treatment->instruction); - $purchased_elsewhere_array = is_null($treatment->purchased_elsewhere) ? [] : explode(",", $treatment->purchased_elsewhere); - @endphp - @for($x = 0; $x < count($drugs_array); $x++) - @php - $frequency_name = get_name($frequencies_array[$x], 'id', 'name', 'dosage_frequencies'); - $drug_unit_id = get_name($drugs_array[$x], 'id', 'unit_id', 'drugs'); - $unit = get_name($drug_unit_id, 'id', 'name', 'drug_units'); - $unit = $unit=="N/A"?"":$unit; - $drug_unit = "" . $unit . ""; - $dose2 = (empty($dosage2_array[$x])) ? "" : " | " . $dosage2_array[$x] . $drug_unit; - @endphp - - - - - - @if(isset($purchased_elsewhere_array[$x]) && $purchased_elsewhere_array[$x] == 1) - - @else - @if($treatment->dispense_status == 1) - - @else - - @endif - @endif - - - @endfor - @endforeach - @endif - @endif - - - - @if(count($parent_episode_treatments) > 0) - - - - @foreach($parent_episode_treatments as $treatment) - @php - $drugs_array = explode(",", $treatment->drugs); - $dosage_array = explode(",", $treatment->doses); - $dosage2_array = explode(",", $treatment->dose2); - $frequencies_array = explode(",", $treatment->frequencies); - $duration_array = explode(",", $treatment->durations); - $quantity_dispensed_array = explode(",", $treatment->quantities_dispensed); - $instructions_array = explode(",", $treatment->instruction); - $purchased_elsewhere_array = is_null($treatment->purchased_elsewhere) ? [] : explode(",", $treatment->purchased_elsewhere); - @endphp - @for($x = 0; $x < count($drugs_array); $x++) - @php - $frequency_name = get_name($frequencies_array[$x], 'id', 'name', 'dosage_frequencies'); - $drug_unit_id = get_name($drugs_array[$x], 'id', 'unit_id', 'drugs'); - $unit = get_name($drug_unit_id, 'id', 'name', 'drug_units'); - $unit = $unit=="N/A"?"":$unit; - $drug_unit = "" . $unit . ""; - $dose2 = (empty($dosage2_array[$x])) ? "" : " | " . $dosage2_array[$x] . $drug_unit; - @endphp - - - - - - @if(isset($purchased_elsewhere_array[$x]) && $purchased_elsewhere_array[$x] == 1) - - @else - @if($treatment->dispense_status == 1) - - @else - - @endif - @endif - - - @endfor - @endforeach - @endif - - - @if(count($treatments) > 0) - @if(check_if_episode_is_a_followup($episode->id)) - - - - @endif - - @foreach($treatments as $treatment) - @php - $drugs_array = explode(",", $treatment->drugs); - $dosage_array = explode(",", $treatment->doses); - $dosage2_array = explode(",", $treatment->dose2); - $frequencies_array = explode(",", $treatment->frequencies); - $duration_array = explode(",", $treatment->durations); - $quantity_dispensed_array = explode(",", $treatment->quantities_dispensed); - $instructions_array = explode(",", $treatment->instruction); - $purchased_elsewhere_array = is_null($treatment->purchased_elsewhere) ? [] : explode(",", $treatment->purchased_elsewhere); - @endphp - @for($x = 0; $x < count($drugs_array); $x++) - @php - $frequency_name = get_name($frequencies_array[$x], 'id', 'name', 'dosage_frequencies'); - $drug_unit_id = get_name($drugs_array[$x], 'id', 'unit_id', 'drugs'); - $unit = get_name($drug_unit_id, 'id', 'name', 'drug_units'); - $unit = $unit=="N/A"?"":$unit; - $drug_unit = "" . $unit . ""; - $dose2 = (empty($dosage2_array[$x])) ? "" : " | " . $dosage2_array[$x] . $drug_unit; - @endphp - - - - - - @if(isset($purchased_elsewhere_array[$x]) && $purchased_elsewhere_array[$x] == 1) - - @else - @if($treatment->dispense_status == 1) - - @else - - @endif - @endif - - - @endfor - @endforeach - @else - - - - @endif - - -
    {{ __('consultations.DRUG_NAME') }}{{ __('consultations.DOSAGE') }}{{ __('consultations.DURATION') }}{{ __('consultations.QUANTITY') }}{{ __('consultations.STATUS') }}{{ __('consultations.INSTRUCTION') }}
    {{ __('consultations.treatment_for_episode_of') }} {{ streamline_date($grand_parent_episode_details->created_at) }}
    {{ get_name($drugs_array[$x], 'id', "name", 'drugs') }}{{ $dosage_array[$x] }} {!! $drug_unit !!} {{ $dose2 }}    {{ $frequency_name }}{{ isset($duration_array[$x]) ? $duration_array[$x] : "" }}{{ $quantity_dispensed_array[$x] }}Purchased From Elsewhere{{ __('consultations.dispensed') }}{{ __('consultations.pending') }} - {{ isset($instructions_array[$x]) ? trim($instructions_array[$x]) : 'N/A' }} -
    {{ __('consultations.treatment_for_episode_of') }} {{ streamline_date($parent_episode_details->created_at) }}
    {{ get_name($drugs_array[$x], 'id', "name", 'drugs') }}{{ $dosage_array[$x] }} {!! $drug_unit !!} {{ $dose2 }}    {{ $frequency_name }}{{ isset($duration_array[$x]) ? $duration_array[$x] : "" }}{{ $quantity_dispensed_array[$x] }}Purchased From Elsewhere{{ __('consultations.dispensed') }}{{ __('consultations.pending') }} - {{ isset($instructions_array[$x]) ? trim($instructions_array[$x]) : 'N/A' }} -
    {{ __('consultations.treatment_for_episode_review') }} ({{ streamline_date($episode->created_at)}})
    - {{ get_name($drugs_array[$x], 'id', "name", 'drugs') }} - - @if($treatment->is_treatment_progressive != 0) - (Progressive Treatment) - @endif - {{ $dosage_array[$x] }} {!! $drug_unit !!} {{ $dose2 }}    {{ $frequency_name }}{{ isset($duration_array[$x]) ? $duration_array[$x] : "" }}{{ $quantity_dispensed_array[$x] }}Purchased From Elsewhere{{ __('consultations.dispensed') }}{{ __('consultations.pending') }} - {{ isset($instructions_array[$x]) ? trim($instructions_array[$x]) : 'N/A' }} -
    {{ __('consultations.no_prescription_made_yet') }} {{ check_if_episode_is_a_followup($episode->id) ? __('consultations.during_current_review') : '' }}
    -
    -
    -
    -

    {{ __('consultations.ordered_procedures') }}

    -
    - - - - - - - - - - - @if($episode_has_grand_parent_episode) - @if(count($grand_parent_episode_ordered_procedures) > 0) - - - - @php $grand_parent_count = 1; @endphp - @foreach($grand_parent_episode_ordered_procedures as $ordered_procedure) - @php - $procedure_id = explode(",", $ordered_procedure->procedure_id); - $procedure_performed_array = explode(",", $ordered_procedure->performed); - @endphp - - @for($i = 0; $i < count($procedure_id); $i++) - - - - - - @php $grand_parent_count++; @endphp - @endfor - @endforeach - @endif - @endif - - - - @if(count($parent_episode_ordered_procedures) > 0) - - - - @php $parent_count = 1; @endphp - @foreach($parent_episode_ordered_procedures as $ordered_procedure) - @php - $procedure_id = explode(",", $ordered_procedure->procedure_id); - $procedure_performed_array = explode(",", $ordered_procedure->performed); - @endphp - - @for($i = 0; $i < count($procedure_id); $i++) - - - - - - @php $parent_count++; @endphp - @endfor - @endforeach - @endif - - - @if(count($ordered_procedures) > 0) - @php $count = 1; @endphp - - @if(check_if_episode_is_a_followup($episode->id)) - - - - @endif - - @foreach($ordered_procedures as $ordered_procedure) - @php - $procedure_id = explode(",", $ordered_procedure->procedure_id); - $procedure_performed_array = explode(",", $ordered_procedure->performed); - @endphp - - @for($i = 0; $i < count($procedure_id); $i++) - - - - - - @php $count++; @endphp - @endfor - @endforeach - @else - - - - @endif - -
    #{{ __('consultations.PROCEDURE') }}{{ __('consultations.STATUS') }}
    {{ __('consultations.procedures_for_episode_of') }} {{ streamline_date($grand_parent_episode_details->created_at) }}
    {{ $grand_parent_count }} - {{ get_name($procedure_id[$i], 'id', 'name', 'procedures') }} - - {!! $procedure_performed_array[$i] == 1 ? ''.__("consultations.performed").'' : ''. __("consultations.pending").'' !!} -
    {{ __('consultations.procedures_for_episode_of') }} {{ streamline_date($parent_episode_details->created_at) }}
    {{ $parent_count }} - {{ get_name($procedure_id[$i], 'id', 'name', 'procedures') }} - - {!! $procedure_performed_array[$i] == 1 ? ''.__("consultations.performed").'' : ''. __("consultations.pending").'' !!} -
    {{ __('consultations.procedures_for_episode_review') }} ({{ streamline_date($episode->created_at)}})
    {{ $count }} - {{ get_name($procedure_id[$i], 'id', 'name', 'procedures') }} - - {!! $procedure_performed_array[$i] == 1 ? ''.__("consultations.performed").'' : ''. __("consultations.pending").'' !!} -
    {{ __('consultations.no_procedure_has_been_ordered') }} {{ check_if_episode_is_a_followup($episode->id) ? __('consultations.during_current_review') : '' }}.
    -
    -
    -
    -
    - -
    -
    -
    -

    {{ __('consultations.outcome') }}

    - - - - - @if($consultation->outcome_id == 1) - - - @elseif($consultation->outcome_id == 4) - - - @elseif($consultation->outcome_id == 3) - - - - @else - - @endif - - -
    {{ get_name($consultation->outcome_id, 'id', 'name', 'outcomes') }}{{ get_name($consultation->ward_id, 'id', 'name', 'wards') }}{{ get_name($consultation->outcome_id, 'id', 'name', 'outcomes') }} - {{ get_name($consultation->referred_to, 'id', 'name', 'referral_hospitals') }} -

    - View referral notes -
    {{ get_name($consultation->outcome_id, 'id', 'name', 'outcomes') }}{{ $consultation->followup_where }}{{ streamline_date($consultation->followup_when) }}{{ get_name($consultation->outcome_id, 'id', 'name', 'outcomes') }}
    -
    -
    - @if(isset($grand_parent_episode_details) && !is_null($grand_parent_episode_details->consultation_id)) - @php - $grand_parent_consultation = \Streamline\Models\Consultation::where('episode_id',$grand_parent_episode_details->id)->first(); - @endphp - @if($grand_parent_consultation->comments) -
    - {{ __('consultations.consultation_comments_on') }} {{ streamline_date($grand_parent_consultation->created_at) }} -
    -
    - {{ $grand_parent_consultation->comments }} -
    - @endif - @endif - - @if(isset($parent_episode_details) && !is_null($parent_episode_details->consultation_id)) - @php - $parent_consultation = \Streamline\Models\Consultation::where('episode_id',$parent_episode_details->id)->first(); - @endphp - @if($parent_consultation->comments) -
    - {{ __('consultations.consultation_comments_on') }} {{ streamline_date($parent_consultation->created_at) }} -
    -
    - {{ $parent_consultation->comments }} -
    - @endif - @endif - - @if(!$consultation_with_notes) -

    Consultation Comments

    - @if($consultation->comments) - {{ $consultation->comments }} - @else - N/A - @endif - @endif -
    -
    -

    {{ __('consultations.consultation_started_by') }}

    - - {!! "".get_name($consultation->created_by, 'id', 'first_name', 'users')."" !!} {!! "".get_name($consultation->created_by, "id", 'last_name', "users")."" !!} on {{ streamline_date_time($consultation->created_at) }} - - -

    - @if(!is_null($consultation->updated_by)) -

    {{ __('consultations.consultation_completed_by') }}

    - - {!! "".get_name($consultation->updated_by, 'id', 'first_name', 'users')."" !!} {!! "".get_name($consultation->updated_by, "id", 'last_name', "users")."" !!} on {{ streamline_date_time($consultation->updated_at) }} - - @endif -

    - @if(Auth::user()->can('edit-patient-consultation')) - {{ __('consultations.modify_consultation') }} - @endif -
    -
    -
    -@endsection - -@push('scripts') - - - -@endpush diff --git a/docker/streamline-src/Modules/Patients/Resources/views/patient_episodes/episode_summary.blade.php b/docker/streamline-src/Modules/Patients/Resources/views/patient_episodes/episode_summary.blade.php deleted file mode 100755 index 5ed5e733..00000000 --- a/docker/streamline-src/Modules/Patients/Resources/views/patient_episodes/episode_summary.blade.php +++ /dev/null @@ -1,1520 +0,0 @@ - - - - - - - - - - - - {{ config('app.name', 'Inpatient Bill - Stre@mline') }} - - - - - - - - -
    - @include('layouts.header_pdf_print') -
    {{ __('patient_file.patient_episode_summary') }}
    - - - - - - - - - - - - - - - - - - - - - - - - - -
    {{ __('patient_file.patient_number') }}{{ $patient->number}}{{ __('patient_file.category') }} - {{ get_name($patient->category_id, 'id', 'name', 'patient_categories') }} -
    {{ __('patient_file.patient_names') }}{{ $patient->first_name}} {{ $patient->last_name}}{{ __('patient_file.residence') }}{{ patient_residence($patient->id) }}
    {{ __('patient_file.age') }}date_of_birth, $episode->created_at); ?>{{ __('patient_file.gender') }}gender == 1 ? __('patient_file.male') : __('patient_file.female') ?>
    {{ __('patient_file.episode_date') }}created_at)->format('d M Y h:i a'); ?>{{ __('patient_file.outcome') }} - @if($consultation && !is_null($consultation->outcome_id)) - @if($consultation->outcome_id == 3) - {{ $outcomes[$consultation->outcome_id] . ' on (' . streamline_date($consultation->followup_when) . ')' }} - @elseif($consultation->outcome_id == 5) - {{ $outcomes[$consultation->outcome_id] . ' on (' . streamline_date($consultation->died_on) . ')' }} - @else - {{ $outcomes[$consultation->outcome_id] ?? "" }} - @endif - @elseif (!empty($main_exam->outcome_id)) - @if($main_exam->outcome_id == 3) - {{ $outcomes[$main_exam->outcome_id] . ' on (' . streamline_date($main_exam->followup_when) . ')' }} - @else - {{ $outcomes[$main_exam->outcome_id] ?? "" }} - @endif - @elseif (!empty($antenatal_data->outcome_id)) - @if($antenatal_data->outcome_id == 3) - {{ $outcomes[$antenatal_data->outcome_id] . ' on (' . streamline_date($antenatal_data->followup_when) . ')' }} - @elseif($antenatal_data->outcome_id == 5) - {{ $outcomes[$antenatal_data->outcome_id] . ' on (' . streamline_date($antenatal_data->died_on) . ')' }} - @else - {{ $outcomes[$antenatal_data->outcome_id] ?? "" }} - @endif - @endif - -
    - - {{-- start triage observations --}} - @if($triage != null) -
    {{ __('consultations.triage_details') }}
    - - @php - $observations_array = explode(',', $triage->observations); //i.e[temp=44,height=2] - $parent_observation_array = isset($parent_triage_details) ? explode(',', $parent_triage_details->observations): []; - @endphp -
    -
    - - - - - - @if(check_if_episode_is_a_followup($episode->id)) - - @endif - - - - @php $counter = 0; @endphp - @foreach($observations_array as $observation) - @php - $item_array = explode('=', $observation); //i.e[temp,44] - $counter++; - @endphp - @if($counter < 9) - - - - - @if(check_if_episode_is_a_followup($episode->id)) - @foreach($parent_observation_array as $parent_observation) - @php - $parent_item_array = isset($parent_triage_details) ? explode('=', $parent_observation) : []; - @endphp - @if($item_array[0] == $parent_item_array[0]) - - @endif - @endforeach - @endif - - @endif - @endforeach - -
    {{ __('consultations.observation') }}{{ __('consultations.value') }} - {{ __('consultations.previous_value') }} -
    {{ $item_array[0] }}{{ $item_array[1] }} - {{ $parent_item_array[1] }} -
    -
    - -
    - - - - - - @if(check_if_episode_is_a_followup($episode->id)) - - @endif - - - - @php $counter=0; @endphp - @foreach($observations_array as $observation) - @php - $item_array = explode('=', $observation); //i.e[temp,44] - $counter++; - @endphp - @if($counter >= 9) - - - - - @if(check_if_episode_is_a_followup($episode->id)) - @foreach($parent_observation_array as $parent_observation) - @php - $parent_item_array = isset($parent_triage_details) ? explode('=', $parent_observation) : []; - @endphp - @if($item_array[0] == $parent_item_array[0]) - - @endif - @endforeach - @endif - - @endif - @endforeach - - - - - -
    {{ __('consultations.observation') }}{{ __('consultations.value') }} - {{ __('consultations.previous_value') }} -
    {{ isset($item_array[0]) ? $item_array[0] : "" }}{{ isset($item_array[1]) ? $item_array[1] : "" }} - {{ $parent_item_array[1] }} -
    {{ __('consultations.triage_grade') }} - @switch($triage->severe_grade) - @case (1) -
    {{ __('consultations.green') }}
    - @break - @case (2) -
    {{ __('consultations.yellow') }}
    - @break - @case (3) -
    {{ __('consultations.red') }}
    - @break - @default - {{ __('consultations.triage_grade_not_determined') }} - @endswitch -
    -
    -
    - -

    - - @php $nutrition = DB::table('triage_nutrition')->where('patient_id', $triage->patient_id)->where('episode_id', $triage->episode_id)->first(); @endphp - - @if(is_smart_triage_enabled() && $nutrition) - - -
    - - - -
    Nutritional Status
    - - - {{ $nutrition->text }} - {{ $nutrition->reason }} - - - @endif - {{ __('consultations.comment') }}: {{ !is_null($triage) ? $triage->comments : "" }}
    - {{ __('consultations.triage_done_by') }}: {!! ''.\Streamline\Models\User::withTrashed()->find($triage->created_by)->first_name. " ".\Streamline\Models\User::withTrashed()->find($triage->created_by)->last_name.' on '.streamline_date_time($triage->created_at).'' !!} -

    - @endif - {{-- end triage observations --}} - - {{-- Symptoms, Priority and Emergency Signs --}} -
    -
    - - - - - @if (between($years, 0, 12)) - - - - - {{-- start social health indicators --}} - @if ($discharge_mortality_risk != null) - @if (!empty($discharge_mortality_risk)) - - @endif - @endif - {{-- end social health indicators --}} - - @endif - - @if (isset($triage->any_tb_sysmptoms) && $triage->any_tb_sysmptoms == 1 && is_array($episode_summary_content_setting) && in_array(7, $episode_summary_content_setting ?? '')) - - @endif - - -
    - {{-- start symptoms --}} - @if ($triage != null && is_array($episode_summary_content_setting) && in_array(5, $episode_summary_content_setting ?? '')) -
    -
    - - - - - -
    {{ __('consultations.symptoms') }}
    - - - @if (!empty($triage->symptoms) || !empty($consultation->symptoms)) - @php - $symptoms_explode = !empty($triage->symptoms)? explode(",", $triage->symptoms):explode(",", $consultation->symptoms); - $symptoms_duration = !empty($triage->symptom_duration)? explode(",", $triage->symptom_duration):explode(",", $consultation->symptom_duration); - @endphp - - @foreach ($symptoms_explode as $key => $symptom) - - - - @endforeach - - @else - - - - @endif - - -
    {{ ucwords($symptoms[$symptom] ?? '') }} for {{ $symptoms_duration[$key]?? '' }}
    {{ __('consultations.no_symptom_recorded') }}
    - - -
    -
    - @endif - {{-- end symptoms --}} -
    - {{-- start emergent signs --}} - @if ($emergent_signs != null) -
    -
    - - - - -
    {{ __('triage.emergency_signs') }}
    - @if (!empty($emergent_signs)) - - - @foreach ($emergent_signs as $emergent_sign) - - - - @endforeach - -
    {{ ucwords($emergent_sign ?? '') }}
    - @else -

    -

      -
    • {{ __('layout.no_emergency_signs') }}
    • -
    -

    - @endif -
    -
    - @endif - {{-- end emergent signs --}} -
    - {{-- start priority signs --}} - @if (!empty($priority_signs)) -
    -
    - - - - - -
    {{ __('layout.priority_signs') }}
    - - - - @if (count($priority_signs) > 0) - - - @foreach ($priority_signs as $priority_sign) - - - - @endforeach - -
    {{ ucwords($priority_sign ?? '') }}
    - - @else -

    -

      -
    • {{ __('layout.no_priority_signs') }}
    • -
    -

    - @endif -
    -
    - @endif - {{-- end priority signs --}} -
    - - - - -
    Social Health indicators
    -
    -
    - - - - - - - - - - - - - - - - @if ($discharge_mortality_risk->child_with_proven_infection == 1) - - - - - - - - - - - - - - {{-- - - - --}} - - - - - - - - - - - - - - - - - - - - - @endif - -
    Post Discharge Mortality Risk
    {{ Form::label('hospital_travel_duration', 'How long did it take you to travel to the hospital?') }} - @php $arr = ['1' => '< 30 mins','2' => '30 mins – 1 hour','3' => '1 - 4 hours','4' => '> 4 hours']; @endphp - {{ $discharge_mortality_risk->hospital_travel_duration_below_6 ? $arr[$discharge_mortality_risk->hospital_travel_duration_below_6] : "Not Recorded" }} -
    {{ Form::label('illness_duration', 'What is the duration of the present illness at the time of admission?') }} - @php $arr = ['1' => '< 48 hours','2' => '48 hours - 7 days','3' => '7 days - 1 month','4' => 'More than a month']; @endphp - {{ $discharge_mortality_risk->illness_duration_at_admission_below_6 ? $arr[$discharge_mortality_risk->illness_duration_at_admission_below_6] : "Not Recorded" }} -
    - {{ Form::label('last_hospitalization', 'Time since last hospitalization') }} - - @php $arr = ['1' => 'Less than 7 days ago','2' => '7 to 30 days ago','3' => '30 days to 1 year ago','4' => 'More than 1 year ago','5' => 'Never']; @endphp - {{ $discharge_mortality_risk->last_hospitalization ? $arr[$discharge_mortality_risk->last_hospitalization] : "Not Recorded" }} -
    - {{ Form::label('safe_water', 'Do you boil, filter (good sand/ceramic) or disinfect (using bleach/waterguard) all drinking water?') }} - - @if($discharge_mortality_risk->filter_water == 1) - Yes - @else - No - @endif -
    {{ Form::label('child_mosquito_net', 'Does your child sleep under a mosquito net?') }} - @php $arr = ['1' => 'Never','2' => 'Sometimes','3' => 'Always']; @endphp - {{ $discharge_mortality_risk->child_mosquito_net ? $arr[$discharge_mortality_risk->child_mosquito_net] : "Not Recorded" }} -
    {{ Form::label('hospital_travel_duration', 'How long did it take you to travel to the hospital?') }} - @php $arr = ['1' => '< 30 mins','2' => '30 mins – 1 hour','3' => '1 - 4 hours','4' => '> 4 hours']; @endphp - {{ $discharge_mortality_risk->hospital_travel_duration ? $arr[$discharge_mortality_risk->hospital_travel_duration] : "Not Recorded" }} -
    {{ Form::label('mother_education_level', 'What is the education level of the child’s mother?') }} - @php $arr = ['1' => 'No school','2' => '<= P3','3' => 'P4-P7','4' => 'S1-S6','5' => 'Post secondary (including post S4 technical school)','6' => 'Do not know']; @endphp - {{ $discharge_mortality_risk->mother_education_level ? $arr[$discharge_mortality_risk->mother_education_level] : "Not Recorded" }} -
    Eye movement{{ ['1' => 'Watches or follows','0' => 'Fails to watch or follow'][$discharge_mortality_risk->bcs_eye_movement] ?? '' }}
    Best motor response{{ ['0' => 'No response or inappropriate response','1' => 'Withdraws limb from pain stimulus','2' => 'Localizes painful stimulus'][$discharge_mortality_risk->bcs_best_mortal] ?? '' }}
    Best verbal response{{ ['0' => 'No vocal response to pain','1' => 'Moan or abnormal cry with pain','2' => 'Cries appropriately with pain (or speaks if verbal)'][$discharge_mortality_risk->bcs_best_verbal] ?? '' }}
    Mother's age{{ $discharge_mortality_risk->maternal_age }}
    -
    -
    -
    -
    -
    - - - - - -
    {{ __('layout.tb_screening') }}
    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    A cough for more than two weeks?{{ $triage->cough_for_2_weeks == 1 ? "Yes" : "No" }}
    Persistent fevers for 2 weeks or more?{{ $triage->fever_for_2_weeks == 1 ? "Yes" : "No" }}
    Noticeable weight loss of more than 3 Kg?{{ $triage->tb_weight_loss == 1 ? "Yes" : "No" }}
    Poor weight gain in the last one month?{{ $triage->tb_poor_weight_gain == 1 ? "Yes" : "No" }}
    Excessive night sweats for three weeks or more?{{ $triage->tb_excessive_night_sweats == 1 ? "Yes" : "No" }}
    Contact with a person with pulmonary TB or chronic cough?{{ $triage->tb_contact_with_tb_person == 1 ? "Yes" : "No" }}
    -
    -
    -
    -
    -

    - - @if($consultation) - - - - - - - - primary_diagnosis; - $other_diagnoses_string = $consultation->other_diagnoses; - $other_diagnoses_array = unserialize($other_diagnoses_string); - ?> - - - - - - @if(is_array($other_diagnoses_array)) - @for($i = 0; $i < count($other_diagnoses_array); $i++) - @if($other_diagnoses_array[$i] != "") - - - - - @endif - @endfor - @endif - -
    {{ __('patient_file.diagnosis') }}{{ __('patient_file.diagnosis_by') }}
    {{ $diagnoses[$primary_diagnosis] ?? "" }} - @if (!is_null($consultation->consultation_done_by)) - {{ get_full_name($consultation->consultation_done_by, 'id', 'first_name', 'last_name', 'users')}} - @elseif(!is_null($consultation->updated_by)) - {{ get_full_name($consultation->updated_by, 'id', 'first_name', 'last_name', 'users')}} - @else - {{ get_full_name($consultation->created_by, 'id', 'first_name', 'last_name', 'users')}} - @endif -
    {{ $diagnoses[$other_diagnoses_array[$i]] ?? "" }}
    - - - - @if ( !empty($cons_notes)) - - {{-- History consultation notes --}} - - - - - - - -
    {{ __('consultations.previous_notes') }}
    - - - - - - - - @forelse ($cons_notes as $consultation_note) - @if(!empty($consultation_note->history_comments)) - - - - - - @endif - @empty - {{-- --}} - @endforelse -
    {{ __('consultations.history') }}
    {{ $consultation_note->history_comments ?? '' }} By {{ get_full_name($consultation_note->created_by, 'id', 'first_name', 'last_name', 'users') }}   on {{ streamline_date_time($consultation_note->created_at) ?? '' }}
    {{ __('consultations.no_previous_notes') }}
    - - - - {{-- Clinic Examination consultation notes --}} - - - - - - - @forelse ($cons_notes as $consultation_note) - @if(!empty($consultation_note->clinic_examination_comments)) - - - - - @endif - @empty - {{-- --}} - @endforelse -
    {{ __('consultations.clinical_examination') }}
    {{ $consultation_note->clinic_examination_comments ?? '' }} By {{ get_full_name($consultation_note->created_by, 'id', 'first_name', 'last_name', 'users') }}   on {{ streamline_date_time($consultation_note->created_at) ?? '' }}
    {{ __('consultations.no_previous_notes') }}
    - - - {{-- Investigation and Management Plan consultation notes --}} - - - - - - @forelse ($cons_notes as $consultation_note) - @if(!empty($consultation_note->investigation_and_management_plan_comments)) - - - - - @endif - @empty - {{-- --}} - @endforelse -
    {{ __('consultations.investigation_and_mgt_plan') }}
    {{ $consultation_note->investigation_and_management_plan_comments ?? '' }} By {{ get_full_name($consultation_note->created_by, 'id', 'first_name', 'last_name', 'users') }}   on {{ streamline_date_time($consultation_note->created_at) ?? '' }}
    {{ __('consultations.no_previous_notes') }}
    - - - - - - @endif - - - - - {{-- END UPDATED CONSULTATION NOTES --}} - - - - @endif - - {{-- end consultation notes settings check --}} - - @if($main_exam) - @if (is_remove_main_base_refraction_exam_enabled() == 0) -
    -
    - - - - - - - - - - - - - - - - - - -
    External
    RightLeft
    Ext{{ $main_exam->external_right }}{{ $main_exam->external_left }}
    - - - - - - - - - - - - - - - @foreach($slit_lamp_test_areas as $area) - - - @php - $right_slug = $area->slug."_right"; - $left_slug = $area->slug."_left"; - $left_other_slug = $area->slug."_other_left"; - $right_other_slug = $area->slug."_other_right"; - @endphp - - - - @endforeach - - -
    Slit Lamp
    SectionRightLeft
    {{ $area->name }} - @if(in_array($main_exam->$right_slug, $slit_lamp_test_area_ids)) - @php - $value_array = explode(',', $main_exam->$right_slug); - @endphp - @for($x = 0; $x < count($value_array); $x++) - - {{ $slit_lamp_test_area_values[$value_array[$x]] }}
    - @endfor - @endif - @if(isset($right_other_slug)) - - {{ $main_exam->$right_other_slug }} - @endif -
    - @if(in_array($main_exam->$left_slug, $slit_lamp_test_area_ids)) - @php - $value_array = explode(',', $main_exam->$left_slug); - @endphp - @for($x = 0; $x < count($value_array); $x++) - - {{ $slit_lamp_test_area_values[$value_array[$x]] }}
    - @endfor - @endif - @if(isset($left_other_slug)) - - {{ $main_exam->$left_other_slug }} - @endif -
    - @if (!empty($main_exam->doctors_notes)) - - - - - - - -
    {{ __('inpatient.doctor_comments') }} (Main Exam)
    {!! nl2br(e($main_exam->doctors_notes)) !!}
    - @endif - -
    - -
    - - - - - - - - - - @php - $right_diagnosis_array = explode(",", $main_exam->right_eye_diagnosis); - $left_diagnosis_array = explode(",", $main_exam->left_eye_diagnosis); - @endphp - @if(count($right_diagnosis_array) > 0) - @foreach($right_diagnosis_array as $id) - - - - - - @endforeach - @else - - - - @endif - @if(count($left_diagnosis_array) > 0) - @foreach($left_diagnosis_array as $id) - - - - - - @endforeach - @else - - - - @endif - -
    EYESECTIONDIAGNOSIS
    Right{{ get_name(get_name($id, 'id', 'diagnosis_category', 'diagnoses'),'id','name','diagnosis_categories') }}{{ get_name($id, 'id', 'name', 'diagnoses') }}
    ---
    Left{{ get_name(get_name($id, 'id', 'diagnosis_category', 'diagnoses'),'id','name','diagnosis_categories') }}{{ get_name($id, 'id', 'name', 'diagnoses') }}
    ---
    - - - - - - - - - - - - - - - - - -
    IOP
    RightLeft
    {{ $main_exam->iop_right ?? '-' }}{{ $main_exam->iop_left ?? '-' }}
    - - - - - - - - - - - - - - - - - -
    CDR
    RightLeft
    {{ $main_exam->cdr_right ?? '-' }}{{ $main_exam->cdr_left ?? '-' }}
    -
    -
    - @endif - - @if (!empty($main_exam->doctors_notes) && is_remove_main_base_refraction_exam_enabled() == 1) - - - - - - - -
    {{ __('inpatient.doctor_comments') }} (Main Exam)
    {!! nl2br(e($main_exam->doctors_notes)) !!}
    - @endif - @endif - - @if($base_exam) - @if (is_remove_main_base_refraction_exam_enabled() == 0) -

    -
    -
    - - - - - - - - - - - -
    Visual Acuity
    -
    -
    -
    Distance
    -
    Right
    -
    Left
    -
    -
    -
    -
    sc
    -
    - {{ Form::text('visual_acuity_distance_sc_right', $base_exam->visual_acuity_distance_sc_right, ['class' => 'form-control', 'readonly']) }} -
    -
    - {{ Form::text('visual_acuity_distance_sc_left', $base_exam->visual_acuity_distance_sc_left, ['class' => 'form-control', 'readonly']) }} -
    -
    -
    -
    ph
    -
    - {{ Form::text('visual_acuity_distance_ph_right', $base_exam->visual_acuity_distance_ph_right, ['class' => 'form-control', 'readonly']) }} -
    -
    - {{ Form::text('visual_acuity_distance_ph_left', $base_exam->visual_acuity_distance_ph_left, ['class' => 'form-control', 'readonly']) }} -
    -
    -
    -
    cc
    -
    - {{ Form::text('visual_acuity_distance_cc_right', $base_exam->visual_acuity_distance_cc_right, ['class' => 'form-control', 'readonly']) }} -
    -
    - {{ Form::text('visual_acuity_distance_cc_left', $base_exam->visual_acuity_distance_cc_left, ['class' => 'form-control', 'readonly']) }} -
    -
    -
    -
    Near
    -
    -
    -
    -
    sc
    -
    - {{ Form::text('visual_acuity_near_sc_right', $base_exam->visual_acuity_near_sc_right, ['class' => 'form-control', 'readonly']) }} -
    -
    - {{ Form::text('visual_acuity_near_sc_left', $base_exam->visual_acuity_near_sc_left, ['class' => 'form-control', 'readonly']) }} -
    -
    -
    -
    cc
    -
    - {{ Form::text('visual_acuity_near_cc_right', $base_exam->visual_acuity_near_cc_right, ['class' => 'form-control', 'readonly']) }} -
    -
    - {{ Form::text('visual_acuity_near_cc_left', $base_exam->visual_acuity_near_cc_left, ['class' => 'form-control', 'readonly']) }} -
    -
    -
    - - Add -
    -
    - {{ Form::text('added_values',$base_exam->added_values, ['class' => 'form-control', 'readonly']) }} -
    -
    -
    - - -
    -
    - - {{ Form::text('best_right_vision',$base_exam->best_right_vision, ['class' => 'form-control', 'readonly']) }} -
    -
    - - {{ Form::text('best_left_vision',$base_exam->best_left_vision, ['class' => 'form-control', 'readonly']) }} -
    -
    -
    -
    -
    - - - - - - - - - - - -
    Refraction
    -
    -
    - Autorefractor -
    -
    -
    -
    -
    -
    -
    -
    Sphere
    -
    Cylinder
    -
    Axis
    -
    -
    -
    -
    -
    R
    -
    -
    -
    - {{ $base_exam->manifest_auto_right_sphere ?? "-" }} -
    -
    - {{ $base_exam->manifest_auto_right_cylinder ?? "-" }} -
    -
    - {{ $base_exam->manifest_auto_right_axis ?? "-" }} -
    -
    -
    -
    -
    -
    L
    -
    -
    -
    - {{ $base_exam->manifest_auto_left_sphere ?? "-" }} -
    -
    - {{ $base_exam->manifest_auto_left_cylinder ?? "-" }} -
    -
    - {{ $base_exam->manifest_auto_left_axis ?? "-" }} -
    -
    -
    -
    - Keratometry - -
    -
    -
    -
    -
    K1
    -
    K2
    -
    Axis
    -
    -
    -
    -
    -
    R
    -
    -
    -
    - {{ $base_exam->keratometry_k1_right ?? "-" }} -
    -
    - {{ $base_exam->keratometry_k2_right ?? "-" }} -
    -
    - {{ $base_exam->keratometry_axis_right ?? "-" }} -
    -
    -
    -
    -
    -
    L
    -
    -
    -
    - {{ $base_exam->keratometry_k1_left ?? "-" }} -
    -
    - {{ $base_exam->keratometry_k2_left ?? "-" }} -
    -
    - {{ $base_exam->keratometry_axis_left ?? "-" }} -
    -
    -
    -
    - - Retinoscope -
    -
    -
    -
    -
    Sphere
    -
    Cylinder
    -
    Axis
    -
    -
    -
    -
    -
    R
    -
    -
    -
    - {{ $base_exam->manifest_ret_right_sphere ?? "-" }} -
    -
    - {{ $base_exam->manifest_ret_right_cylinder ?? "-" }} -
    -
    - {{ $base_exam->manifest_ret_right_axis ?? "-" }} -
    -
    -
    -
    -
    -
    L
    -
    -
    -
    - {{ $base_exam->manifest_ret_left_sphere ?? "-" }} -
    -
    - {{ $base_exam->manifest_ret_left_cylinder ?? "-" }} -
    -
    - {{ $base_exam->manifest_ret_left_axis ?? "-" }} -
    -
    -
    -
    - - Subjective -
    -
    -
    -
    -
    Sphere
    -
    Cylinder
    -
    Axis
    -
    -
    -
    -
    -
    R
    -
    -
    -
    - {{ $base_exam->subjective_right_sphere ?? "-" }} -
    -
    - {{ $base_exam->subjective_right_cylinder ?? "-" }} -
    -
    - {{ $base_exam->subjective_right_axis ?? "-" }} -
    -
    -
    -
    -
    -
    L
    -
    -
    -
    - {{ $base_exam->subjective_left_sphere ?? "-" }} -
    -
    - {{ $base_exam->subjective_left_cylinder ?? "-" }} -
    -
    - {{ $base_exam->subjective_left_axis ?? "-" }} -
    -
    -
    -
    - -
    - -
    -
    - - {{ Form::text('pd_right_eye', $base_exam->pd_right_eye, ['class' => 'form-control', 'readonly']) }} -
    -
    - - {{ Form::text('pd_left_eye', $base_exam->pd_left_eye, ['class' => 'form-control', 'readonly']) }} -
    -
    -
    -
    -
    - @endif - - @if (!is_null($base_exam->comment)) - - - - - - - -
    {{ __('inpatient.doctor_comments') }} (Base Refraction Exam)
    {!! nl2br(e($base_exam->comment)) !!}
    - @endif - @endif - - - @if($antenatal_data) - - - - - {{-- --}} - - - primary_diagnosis; - $other_diagnoses_array = explode(',', $antenatal_data->other_diagnoses); - ?> - - - - - @if(is_array($other_diagnoses_array)) - @for($i = 0; $i < count($other_diagnoses_array); $i++) - @if($other_diagnoses_array[$i] != "") - - - - - @endif - @endfor - @endif - -
    {{ __('patient_file.diagnosis') }}{{ __('patient_file.diagnosis_by') }}
    {{ $diagnoses[$primary_diagnosis] ?? "" }}
    {{ $diagnoses[$other_diagnoses_array[$i]] ?? "" }}
    - - @if(!is_null($antenatal_data->comments)) - - - - - - - -
    {{ __('patient_episode.comments') }}
    {!! nl2br(e($antenatal_data->comments)) !!}
    - @endif - - @if(!is_null($antenatal_data->history_comments)) - - - - - - - -
    {{ __('patient_episode.history_comments') }}
    {!! nl2br(e($antenatal_data->history_comments)) !!}
    - @endif - - @if(!is_null($antenatal_data->clinic_examination_comments)) - - - - - - - -
    {{ __('patient_episode.clinic_examination_comments') }}
    {!! nl2br(e($antenatal_data->clinic_examination_comments)) !!}
    - @endif - - @if(!is_null($antenatal_data->investigation_and_management_plan_comments)) - - - - - - - -
    {{ __('patient_episode.inv_manage_plan_comment') }}
    {!! nl2br(e($antenatal_data->investigation_and_management_plan_comments)) !!}
    - @endif - @endif - - {{--start Investigations --}} - -
    - - @if (!empty($opd_investigations)) - @if(count($opd_investigations) > 0) -
    - - - - - - - - - - - @if(count($opd_investigations) > 0) - @for($i = 0; $i < count($opd_investigations['name']); $i++) - @if(isset($opd_investigations['name'][$i])) - - - - - - - @endif - @endfor - @endif - -
    {{ __('patient_file.investigation') }}{{ __('patient_file.result') }}{{ __('patient_file.normal_ranges') }}{{ __('patient_file.comment') }}
    {{ $opd_investigations['name'][$i] }} - @if (!empty($opd_investigations['type'][$i])) - See attached - @else - {!! nl2br(e($opd_investigations['value'][$i])) !!} - @endif - {{ $opd_investigations['normal_ranges'][$i] }}{!! nl2br(e($opd_investigations['comment'][$i])) !!}
    -
    - @endif - @endif - - {{-- End Investigations --}} - - - - - {{--start procedures --}} - @if($ordered_procedures != null && $ordered_procedures->isNotEmpty()) -
    - - - - - - @foreach($ordered_procedures as $procedure) - @php - $procedure_ids = explode(',', $procedure->procedure_id); - @endphp - @foreach ($procedure_ids as $id) - - - - @endforeach - @endforeach - -
    {{ __('patient_episode.procedure_name') }}
    {{ $procedures[$id] ?? "" }}
    -
    - @endif - {{--end procedures --}} -
    - - -
    - - - -
    - {{-- start sundries --}} - - - @if ($ordered_sundries != null) - @if(count($ordered_sundries) > 0) -
    - - - - - - - - - @foreach($ordered_sundries as $sundry) - @php - $sundry_ids = explode(',', $sundry->sundries_id); - $sundry_amounts = explode(',', $sundry->quantity); - @endphp - @for($i = 0; $i < count($sundry_ids); $i++) - - - - - @endfor - @endforeach - -
    {{ __('insurance_reports.sundry_name') }}{{ __('patient_episode.quantity') }}
    {{ $sundries[$sundry_ids[$i]] ?? "" }}{{ $sundry_amounts[$i] ?? "" }}
    -
    - @endif - @endif - {{-- end sundries --}} - - {{-- start consultation and services --}} - @if ($ordered_services != null) - @if(count($ordered_services) > 0) -
    - - - - - - - - - @foreach($ordered_services as $ordered_service) - @php - $service_ids = explode(',', $ordered_service->service_id); - $service_amounts = explode(',', $ordered_service->quantity); - @endphp - @for($i = 0; $i < count($service_ids); $i++) - - - - - @endfor - @endforeach - -
    {{ __('patient_episode.services') }}{{ __('patient_episode.quantity') }}
    {{ $services[$service_ids[$i]] ?? "" }}{{ $service_amounts[$i] ?? "" }}
    -
    - @endif - @endif - {{-- end consultation and services --}} - -
    - - - -
    - - {{-- start treatments --}} - - - - @if($treatments != null && $treatments->isNotEmpty()) - -
    - -
    - - - - - - - - - - - @php $progressive_ids = []; @endphp - @foreach($treatments as $treatment) - drugs); - $dosage_array = explode(",", $treatment->doses); - $dosage2_array = explode(",", $treatment->dose2); - $frequencies_array = explode(",", $treatment->frequencies); - $duration_array = explode(",", $treatment->durations); - $quantity_dispensed_array = explode(",", $treatment->quantities_dispensed); - $instructions_array = explode(",", $treatment->instruction); - $purchased_elsewhere_array = explode(",", $treatment->purchased_elsewhere); - - // check if treatment is progressive and ignore - if ($treatment->is_treatment_progressive != 0) { - $progressive_ids[] = $treatment->is_treatment_progressive; - continue; - } - ?> - @for ($x = 0; $x < count($drugs_array); $x++) - form_id, "id", "name", "unit_of_measure"); - $drug_unit = get_name($drug_details->unit_id, "id", "name", "drug_units"); - $drug_strength = $drug_details->strength; - - $treatment_dosage = $dosage_array[$x] ?? ""; - $treatment_strength = $drug_strength ?? ""; - ?> - - - - - - - - @endfor - @endforeach - - @if(count($progressive_ids) > 0) - @php - $progressive_treatments = \Illuminate\Support\Facades\DB::table('treatments_opd_progressive')->whereIn('id', $progressive_ids)->get(); - @endphp - - @foreach($progressive_treatments as $treatment) - drugs); - $dosage_array = explode(",", $treatment->dose); - $frequencies_array = explode(",", $treatment->drug_frequency); - $duration_array = explode(",", $treatment->durations); - $quantity_dispensed_array = explode(",", $treatment->quantities_to_dispense); - $instructions_array = explode(",", $treatment->instruction); - ?> - @for ($x = 0; $x < count($drugs_array); $x++) - form_id, "id", "name", "unit_of_measure"); - $drug_unit = get_name($drug_details->unit_id, "id", "name", "drug_units"); - $drug_strength = $drug_details->strength; - - $treatment_dosage = $dosage_array[$x] ?? ""; - $treatment_strength = $drug_strength ?? ""; - ?> - - - - - - - - @endfor - @endforeach - @endif - -
    {{ __('patient_file.treatment') }}{{ __('patient_file.dosage_freq') }}{{ __('prescriptions.instructions') }}
    - {{ $drug_details->name }} - - @if($purchased_elsewhere_array[$x] == 1) - ( To Be Purchased elsewhere ) - @endif - - ({{ $dosage_array[$x] }} {!! $drug_unit !!}    {{ get_name($frequencies_array[$x], 'id', 'name', 'dosage_frequencies') }}) - {{ $duration_array[$x] ?? "" }}{{ $instructions_array[$x] ?? "" }}
    {{ $drug_details->name }} - ({{ $dosage_array[$x] }} {!! $drug_unit !!}    {{ get_name($frequencies_array[$x], 'id', 'name', 'dosage_frequencies') }}) - {{ $duration_array[$x] ?? "" }}{{ $instructions_array[$x] ?? "" }}
    -
    - -
    - @endif - - {{-- end treatments --}} - - @if (is_add_stamp_feature_enabled() && !empty($hospitalInfo->stamp)) - - - - - - -
    - {{ $hospitalInfo->name}} stamp -
    - @endif -
    - - \ No newline at end of file diff --git a/docker/streamline-src/Modules/Patients/Resources/views/patient_episodes/index.blade.php b/docker/streamline-src/Modules/Patients/Resources/views/patient_episodes/index.blade.php deleted file mode 100755 index 2c102d13..00000000 --- a/docker/streamline-src/Modules/Patients/Resources/views/patient_episodes/index.blade.php +++ /dev/null @@ -1,980 +0,0 @@ -@extends('layouts.main') - -@push('styles') - -@endpush - -@section('content') -
    -
    -

    {{ __('patient_episode.patient_episodes') }}

    -
    -
    - -
    -
    - -
    -
    -
    -
    - @include('patients::allergies.header') -
    -
    -
    -
    -
    - @include('patients::patient_episodes.menu') -
    -
    -
    -
    - -
    -
    - {{ Form::open(['route' => 'patient_episodes.route_patient_episode', 'id' => 'episodesForm']) }} - - {{ Form::hidden('patient_id', $patient->id, ['id' => 'patient_id']) }} - -
    - @include('flash::message') - @if(Auth::user()->can('merge-patient-episodes')) -

    - {{ __('patient_episode.merge_episodes') }}
    -

    - @endif -
    - - - - - - - - - - - - - @foreach($patient_episodes as $patient_episode) - @php - $episode_id = $patient_episode->id; - $created_at = Carbon\Carbon::parse($patient_episode->created_at); - $triage_id = $patient_episode->triage_id; - $anc = \DB::table('ante_natal_clinic_followups')->where([['episode_id', $episode_id],['patient_id', $patient_episode->patient_id]])->first(); - $consultation_id = !empty($anc->primary_diagnosis)? $anc->primary_diagnosis:$patient_episode->consultation_id; - $primary_diagnosis_id = ''; - $other_diagnoses_ids = []; - $triage_comment = ''; - $consultation_comment = ''; - $clinic = (isset($clinics[$patient_episode->clinic_id]) && !is_null($patient_episode->clinic_id)) ? $clinics[$patient_episode->clinic_id] : ''; - $primary_diagnosis = ''; - $other_diagnoses = ''; - $triage_and_consultation_comments = ''; - $right_eye_diagnoses = $left_eye_diagnoses = []; - $eye_consultation_comment = ""; - $eye_triage_comment = ''; - $eye_triage_and_consultation_comments = ""; - @endphp - - @if (!empty($consultation_id)) - @php - $primary_diagnosis_id = !empty($anc->primary_diagnosis)? $anc->primary_diagnosis: get_name($consultation_id, 'id', 'primary_diagnosis', 'consultations'); - - try { - $other_diagnoses_ids = !empty($anc->other_diagnoses)? explode(',',$anc->other_diagnoses): unserialize(trim(get_name($consultation_id, 'id', 'other_diagnoses', 'consultations'))); - } catch (\ErrorException $exception) {} - - // confirm it's an array - $other_diagnoses_ids = is_array($other_diagnoses_ids) ? $other_diagnoses_ids : []; - - $consultation_comment = !empty($anc->comments)? trim($anc->comments): trim(get_name($consultation_id, 'id', 'comments', 'consultations')); - $consultation_comment = clean_streamline_database_output(trim(get_name($consultation_id, 'id', 'comments', 'consultations'))); - $triage_comment = !is_null($triage_id) ? trim(get_name($triage_id, 'id', 'comments', 'triage')) : ''; - $triage_and_consultation_comments = 'Triage: '.$triage_comment.' '.'
    Consultation: '.$consultation_comment; - - $right_eye_diagnoses = explode(',',get_name($consultation_id, 'id', 'right_eye_diagnosis', 'eye_clinic_main_exam')); - $left_eye_diagnoses = explode(',',get_name($consultation_id, 'id', 'left_eye_diagnosis', 'eye_clinic_main_exam')); - $eye_consultation_comment = trim(get_name($consultation_id, 'id', 'advice', 'eye_clinic_main_exam')); - $eye_triage_comment = !is_null($triage_id) ? trim(get_name($triage_id, 'id', 'comment', 'eye_clinic_base_exam_refraction')) : ''; - $eye_triage_and_consultation_comments = 'Base Refraction Exam: '.$eye_triage_comment.' '.'
    Main Exam: '.$eye_consultation_comment; - @endphp - @endif - - @php - $primary_diagnosis = $diagnoses[$primary_diagnosis_id] ?? ''; - $other_diagnoses = ""; - - for($s = 0; $s < count($other_diagnoses_ids); $s++){ - $other_diagnoses .= isset($diagnoses[$other_diagnoses_ids[$s]]) ? ($diagnoses[$other_diagnoses_ids[$s]] . ", ") : ''; - } - - $is_patient_in_eye_clinic = is_patient_in_eye_clinic($episode_id); - @endphp - - - - - - - - - - - @php - $inpatient_info = get_all_first(['episode_id' => $patient_episode->id, 'patient_id' => $patient->id], 'inpatient_info'); - $maternity_ward_id = get_name("maternity", "slug", "id", "wards"); - @endphp - @if ($inpatient_info != 'N/A') - - - - @php - $sec_diagnoses = (!is_null($inpatient_info->other_diagnoses) && !is_null(unserialize($inpatient_info->other_diagnoses))) ? array_values(unserialize($inpatient_info->other_diagnoses)) : [] ; - $sec_diagnosis = ""; - for ($s = 0; $s < count($sec_diagnoses); $s++) $sec_diagnosis .= get_name($sec_diagnoses[$s], "id", "name", "diagnoses") . ", "; - @endphp - - - - - - @endif - - @php - $theatre_information = does_episode_have_theatre_information($patient_episode->id); - @endphp - - @if ($theatre_information) - - - - - - - - - @endif - - @php - $episode_appointment = get_all_first(['episode_id' => $patient_episode->id, 'patient_id' => $patient->id], 'patient_appointments'); - @endphp - - @if($episode_appointment != 'N/A' && $episode_appointment->appointment_fulfilled == 1) - - - - - - - - - @endif - @endforeach - -
    {{ __('patient_episode.episode_date') }}{{ __('patient_episode.clinic') }}{{ __('patient_episode.patient_diagnosis') }}{{ __('patient_episode.consultation_by') }}{{ __('patient_episode.comments') }}{{ __('patient_episode.select') }}
    - {{ streamline_date_time($patient_episode->created_at) }} -
    - {{ __('patient_episode.started_by') }} - {{ get_full_name($patient_episode->created_by, "id", "first_name", "last_name", "users") }} - - @if(check_if_episode_is_a_followup($patient_episode->id)) - @php - $original_episode = \Streamline\Models\PatientEpisode::find($patient_episode->parent_episode_id); - @endphp -
    ({{ __('patient_episode.review_from') }} {{ $original_episode ? streamline_date($original_episode->created_at) : '' }})
    - @endif - - @if(Auth::user()->can('delete-empty-episode') && is_episode_safe_to_delete($patient_episode->id)) -
    -
    - {{ __('patient_episode.remove_episode') }} - @endif -
    - @if( Auth::user()->can('view-patient-episode-clinic-from-patient-home')) - {{ $clinic }} - @endif - - @if( Auth::user()->can('view-patient-episode-primary-diagnoses')) - @if(is_eye_module_enabled() && $is_patient_in_eye_clinic) - @if(count($right_eye_diagnoses) > 0) - @for($x = 0; $x < count($right_eye_diagnoses); $x++) - {{ get_name(get_name($right_eye_diagnoses[$x], 'id', 'diagnosis_category', 'diagnoses'), 'id', 'name', 'diagnosis_categories') }} - {{ $diagnoses[$right_eye_diagnoses[$x]] ?? '' }}
    - @endfor - @endif - @else - {{ __('patient_episode.primary_diagnosis') . ': ' . $primary_diagnosis }} - @endif - @endif - -
    - - @if( Auth::user()->can('view-patient-episode-other-diagnoses')) - @if(is_eye_module_enabled() && $is_patient_in_eye_clinic) - @if(count($left_eye_diagnoses) > 0) - @for($x = 0; $x < count($left_eye_diagnoses); $x++) - {{ get_name(get_name($left_eye_diagnoses[$x], 'id', 'diagnosis_category', 'diagnoses'), 'id', 'name', 'diagnosis_categories') }} - {{ $diagnoses[$left_eye_diagnoses[$x]] ?? '' }}
    - @endfor - @endif - @else - {!! __('patient_episode.other_diagnosis') . ':
    ' !!} - {!! read_more($other_diagnoses, 'other_diagnoses_short' . $patient_episode->id, 'other_diagnoses_long' . $patient_episode->id) !!} - - - @endif - @endif -
    - @php - $consultation_done_by = !empty($anc->created_by)? $anc->created_by :get_doctor_who_completed_episode_consultation($patient_episode->id); - @endphp - - @if(!is_null($consultation_done_by)) - {{ get_full_name($consultation_done_by, "id", "first_name", "last_name", "users") }} - @endif - - @if($patient_episode->episode_type == 1) - {{ __('patient_flow_monitoring.lab_self_request') }} - @endif - - {!! read_more($triage_and_consultation_comments, 'short_comment' . $patient_episode->id, 'long_comment' . $patient_episode->id) !!} - - - - -
    - @if($inpatient_info->discharged) - {{ __('patient_episode.discharged') }} on {{ streamline_date($inpatient_info->discharged_on) }} -
    By {{ get_full_name($inpatient_info->discharged_by, "id", "first_name", "last_name", "users") }} - @else - {{ __('patient_episode.admitted') }} on {{ streamline_date($inpatient_info->admitted_on) }} -
    By {{ get_full_name($inpatient_info->created_by, "id", "first_name", "last_name", "users") }} - @endif -
    {{ get_name($inpatient_info->ward_id, "id", "name", "wards") }} - @if( Auth::user()->can('view-patient-episode-primary-diagnoses')) - {{ get_name($inpatient_info->primary_diagnosis, "id", "name", "diagnoses") }} - @endif - - @if( Auth::user()->can('view-patient-episode-other-diagnoses')) - {!! read_more($sec_diagnosis, 'sec_diagnosis_short' . $episode_id, 'sec_diagnosis_long' . $episode_id) !!} - - @endif - - @php - $consultation_done_by = !empty($anc->created_by)? $anc->created_by :get_doctor_who_has_done_episode_consultation($patient_episode->patient_id, $patient_episode->id); - @endphp - - @if(!is_null($consultation_done_by)) - {{ get_full_name($consultation_done_by, "id", "first_name", "last_name", "users") }} - @endif - - {!! read_more($inpatient_info->comments, 'short_inpatient_comment' . $inpatient_info->id, 'long_inpatient_comment' . $inpatient_info->id) !!} - - - - @if(get_name($inpatient_info->ward_id, "id", "slug", "wards") == "maternity") - - @else - - @endif -
    - @if($theatre_information['surgery_completed']) - {{ __('patient_episode.surgery_complete') }} - @else - {{ __('patient_episode.surgery_not_complete') }} - @endif - -
    - - @if($theatre_information['anaesthesia_completed']) - {{ __('patient_episode.anaesthesia_complete') }} - @else - {{ __('patient_episode.anaesthesia_not_complete') }} - @endif -
    - {{ __('patient_episode.procedure') }}: {{ $theatre_information['procedure_name'] }} - -

    - - {{ __('patient_episode.surgery_type') }}: {{ $theatre_information['surgery_type'] }} -
    {{ __('patient_episode.outcome') }}: {{ $theatre_information['outcome'] }} - @php - $consultation_done_by = !empty($anc->created_by)? $anc->created_by :get_doctor_who_has_done_episode_consultation($patient_episode->patient_id, $patient_episode->id); - @endphp - - @if(!is_null($consultation_done_by)) - {{ get_full_name($consultation_done_by, "id", "first_name", "last_name", "users") }} - @endif - - {!! read_more($theatre_information['comments'], 'short_theatre_comment' . $patient_episode->id, 'long_theatre_comment' . $patient_episode->id) !!} - - - - -
    - @if($episode_appointment->appointment_fulfilled == 1) - {{ __('patient_episode.follow_up') }} - @else - {{ __('patient_episode.follow_up_complete') }} - @endif - {{ __('patient_episode.clinic') }}: {{ get_name($episode_appointment->clinic_allocation, 'id', 'name', 'clinics') }} - {{ __('patient_episode.appointment_date') }}: {{ is_null($episode_appointment->appointment_date) ? '' : streamline_date($episode_appointment->appointment_date) }} -

    - {{ __('patient_episode.in_charge') }}: {{ get_full_name($episode_appointment->incharge_id, 'id', 'first_name', 'last_name', 'users') != "ALL STAFF" ? get_full_name($episode_appointment->incharge_id, 'id', 'first_name', 'last_name', 'users') : "N/A" }} -
    - @php - $consultation_done_by = !empty($anc->created_by)? $anc->created_by : get_doctor_who_has_done_episode_consultation($patient_episode->patient_id, $patient_episode->id); - @endphp - - @if(!is_null($consultation_done_by)) - {{ get_full_name($consultation_done_by, "id", "first_name", "last_name", "users") }} - @endif - {{ $episode_appointment->comments }} - -
    -
    -
    - - - - - - -
    - -
    - - - - {{ Form::close() }} - - - - - - - - - - @if(session()->has('consultation_not_paid')) - - @php session()->forget('consultation_not_paid'); @endphp - @endif -@endsection - -@push('scripts') - - - -@endpush - -@push('styles') - -@endpush \ No newline at end of file diff --git a/docker/streamline-src/Modules/Patients/Resources/views/patient_episodes/menu.blade.php b/docker/streamline-src/Modules/Patients/Resources/views/patient_episodes/menu.blade.php deleted file mode 100755 index 71291874..00000000 --- a/docker/streamline-src/Modules/Patients/Resources/views/patient_episodes/menu.blade.php +++ /dev/null @@ -1,950 +0,0 @@ -@push('styles') - - -@endpush - -
    -
    -
    -
      -
      -
      -
    • - -
    • -
      -
      -
      - -
      - - - @if (Auth::user()->can('create-patient-episode')) -
    • - -
    • - @endif - - @if (Auth::user()->can('create-patient-episode-with-clinic')) -
    • - - - -
    • - @endif - - @if (Auth::user()->can('create-patient-episode-with-doctor-and-clinic')) -
    • - - - -
    • - @endif - - @if (Auth::user()->can('create-patient-episode-with-doctor')) -
    • - - - -
    • - @endif - - @if (Auth::user()->can('create-patient-episode-with-self-lab-request')) -
    • - -
    • - @endif -
      - -
      - @if ($patient->gender == 2) -
    • - @if (Auth::user()->can('create-maternity-admission')) - {{ __('layout.maternity_admission') }} - @endif - - @if (Module::has('Maternity') && Module::isEnabled('Maternity')) - - - - @endif -
    • - @endif - -
    • - @if (Auth::user()->can('create-ward-admission')) - - @endif - -
    • -
      -
      -
    -
    -
    - -
    -
    - - - -
    -
    -
    - @if (!is_null($documents)) -
    -
    - -
    -
    -
    - -
    -
    - - - @php - $un_fullfilled_appointments = un_fullfilled_patient_appointments($patient->id); - @endphp - - @if (count($un_fullfilled_appointments) > 0) -
    -
    - {{ __('layout.patient_appointments') }} -
    - - - - - - - - - - - - - - @foreach ($un_fullfilled_appointments as $appointment) - - - - - - - - - - @endforeach - -
    {{ __('layout.appointment_date') }}{{ __('layout.appointment_time') }}{{ __('layout.episode_started_on') }}{{ __('layout.clinic') }}{{ __('layout.in_charge') }}{{ __('layout.comments') }}
    - {{ is_null($appointment->appointment_date) ? '' : streamline_date($appointment->appointment_date) }} - - {{ $appointment->appointment_time }} - - {{ $appointment->episode_id == 0 ? '' : streamline_date_time(get_name($appointment->episode_id, 'id', 'created_at', 'patient_episodes')) }} - - {{ get_name($appointment->clinic_allocation, 'id', 'name', 'clinics') }} - - {{ get_full_name($appointment->incharge_id, 'id', 'first_name', 'last_name', 'users') != 'ALL STAFF' ? get_full_name($appointment->incharge_id, 'id', 'first_name', 'last_name', 'users') : 'N/A' }} - - {{ $appointment->comments }} - - {{ __('layout.appointment_actions') }} -
    -
    -
    -
    - @endif -
    - - -@php $dob = new Carbon\Carbon($patient->date_of_birth); @endphp - - - -@if (Auth::user()->can('create-patient-episode')) - -@endif - - - - - - - - - -@push('scripts') - - -@endpush -@push('scripts') - - -@endpush diff --git a/docker/streamline-src/Modules/Patients/Resources/views/patient_flow_monitoring/index.blade.php b/docker/streamline-src/Modules/Patients/Resources/views/patient_flow_monitoring/index.blade.php deleted file mode 100755 index 972c6921..00000000 --- a/docker/streamline-src/Modules/Patients/Resources/views/patient_flow_monitoring/index.blade.php +++ /dev/null @@ -1,849 +0,0 @@ -@extends('layouts.main') - -@push('styles') - - - - - -@endpush - -@section('content') - -
    -
    -

    {{ __('patient_flow_monitoring.select_clinic') }}

    -
    -
    - -
    -
    - - @include('flash::message') - - @include ('errors.list') - -
    -
    -
    - {{ Form::open(['route' => 'patient_flow_monitoring.index', 'method' => 'ANY']) }} - -
    - -
    -
    - {{ Form::label('clinic_id', __('patient_flow_monitoring.clinics')) }} - {{ Form::select('clinic_id', $clinics, '', ['class' => 'form-control compulsory', 'required']) }} -
    -
    -
    - -
    -
    - {{ Form::label('search_by', __('patient_flow_monitoring.date')) }} - {{ Form::select('search_by', ['4'=>'Today', '3'=>'Yesterday','1'=>'Custom Date','2'=>'Custom Range'], '', ['class' => 'form-control','id'=>'search_by', 'required']) }} -
    -
    -
    - - - - - -
    -
    - {{ Form::label('order_by', __('patient_flow_monitoring.order_by')) }} - {{ Form::select('order_by', ['0'=>'Triage Grade', '1'=>'Time of Arrival'], 0, ['class' => 'form-control','required']) }} -
    -
    -
    - -
    -

    - {{ Form::button(__('patient_flow_monitoring.submit'),['type'=>'submit','class'=>'btn btn-success waves-effect waves-light m-r-10', 'id'=>'select_patient']) }} -
    -
    -
    - - {{ Form::close() }} -
    -
    -
    - - @php - $counter = 0; - $patients_array = []; - $new_patients = 0; - $returning_patients = 0; - $can_user_view_diagnosis = Auth::user()->can('view-patient-episode-primary-diagnoses'); - @endphp - -
    -
    -
    -

    -
    - - - - - - - - - - - - - - - - - - - - - @if (isset($patient_episodes)) - @foreach($patient_episodes as $episode) - @php - $counter++; - - $patient = \Illuminate\Support\Facades\DB::table('patients')->where('id', $episode->patient_id)->first(); - $investigation_results = \Illuminate\Support\Facades\DB::table('investigation_results')->where('episode_id', $episode->id)->first(); - $investigation_orders = \Illuminate\Support\Facades\DB::table('ordered_investigations')->where('episode_id', $episode->id)->first(); - $treatment_details = \Illuminate\Support\Facades\DB::table('treatments')->where('episode_id', $episode->id)->orderBy('created_at', 'desc')->first(); - $main_exam = \Illuminate\Support\Facades\DB::table('eye_clinic_main_exam')->where('episode_id', $episode->id)->first(); - $is_patient_in_eye_clinic = is_patient_in_eye_clinic($episode->id); - @endphp - - @if($episode->paid_over == "pos") - - - - - - - - - - - - - - - - - @elseif($episode->episode_type == 1) - - - - - - - - - - - - - - - - - @else - - - - - - - - - - - - - - - - - @endif - @endforeach - - - - @endif - -
    #{{ __('patient_flow_monitoring.time') }}{{ __('patient_flow_monitoring.patient_number') }}{{ __('patient_flow_monitoring.name') }}{{ __('patient_flow_monitoring.gender') }}{{ __('patient_flow_monitoring.age') }}{{ __('patient_flow_monitoring.triage') }}{{ __('patient_flow_monitoring.clinic_allocation') }}{{ __('patient_flow_monitoring.diagnosis') }}{{ __('patient_flow_monitoring.investigations') }}{{ __('patient_flow_monitoring.consultation') }}{{ __('patient_flow_monitoring.treatment') }}{{ __('patient_flow_monitoring.outcome') }}{{ __('patient_flow_monitoring.select') }}
    {{ $counter }} - {{ streamline_date_time($episode->created_at) }} - - @if(is_object($patient)) - {{ $patient->number }} ({{ $patient_categories[$patient->category_id] ?? "" }}) - @endif - - {!! is_object($patient) ? insurance_flag($patient->id) : "" !!} -
    {{ $counter }} - {{ streamline_date_time($episode->created_at) }} - - @if(is_object($patient)) - {{ $patient->number }} ({{ isset($patient_categories[$patient->category_id]) ? $patient_categories[$patient->category_id] : "" }}) - @endif - - {!! is_object($patient) ? insurance_flag($patient->id) : "" !!} - - @if(is_object($patient)) - {{ $patient->gender == 1 ? "Male" : "Female" }} - @endif - - @if(is_object($patient)) - {{ get_patients_age($patient->date_of_birth) }} - @endif - - {{ __('patient_flow_monitoring.lab_self_request') }} - - {{ __('patient_flow_monitoring.lab_self_request') }} - - {{ __('patient_flow_monitoring.lab_self_request') }} - - @if(isset($investigation_results)) - @php $per_inv_explode = explode(",", $investigation_results->per_investigation); @endphp - - @if ($investigation_results->all_authenticated == 1) - {{ __('patient_flow_monitoring.all_results_available') }} - @elseif (in_array("1", $per_inv_explode) && in_array("0", $per_inv_explode)) - {{ __('patient_flow_monitoring.some_results_available') }} - @elseif (array_unique($per_inv_explode) == array("0")) - {{ __('patient_flow_monitoring.ordered') }} - @endif - @elseif(isset($investigation_orders)) - {{ __('patient_flow_monitoring.ordered') }} - @else - N/A - @endif - - {{ __('patient_flow_monitoring.lab_self_request') }} - - {{ __('patient_flow_monitoring.lab_self_request') }} - - {{ __('patient_flow_monitoring.lab_self_request') }} - - @if(is_object($patient) && is_null($patient->deleted_at)) - - @else - Patient was deleted - @endif -
    {{ $counter }} - {{ streamline_date_time($episode->created_at) }} - - @if(is_object($patient)) - {{ $patient->number }} ({{ $patient_categories[$patient->category_id] ?? "" }}) - @endif - - {!! is_object($patient) ? insurance_flag($patient->id) : "" !!} - - @if(is_object($patient)) - {{ $patient->gender == 1 ? "Male" : "Female" }} - @endif - - @if(is_object($patient)) - {{ get_patients_age($patient->date_of_birth) }} - @endif - - @if($is_patient_in_eye_clinic) - @php $base_refraction = \Illuminate\Support\Facades\DB::table('eye_clinic_base_exam_refraction')->where('episode_id', $episode->id)->first() @endphp - - @if($base_refraction) - Base Exam Completed By {{ get_full_name($base_refraction->created_by, 'id', 'first_name', 'last_name', 'users') }} - @else - Pending Base Exam - @endif - -
    - - @if (is_null($episode->consultation_id)) - Pending Main Exam - @elseif (!is_null($episode->consultation_id) && get_name($episode->consultation_id, 'id', 'completed', 'eye_clinic_main_exam') == 0) - Ongoing Main Exam - @else - Main Exam Outcome: {{ $main_exam ? get_name($main_exam->outcome_id, 'id', 'name', 'outcomes') : "N/A" }} - @endif - @else - @if (!$episode->episode_triage_id) - N/A - @else - {!! severe_grade($episode->severe_grade) !!} - @endif - @endif -
    - @php - $episode_clinic_name = get_name($episode->clinic_id, 'id', 'name', 'clinics'); - - $episode_transfer = \Streamline\Models\PatientClinicTransfers::where('episode_id', $episode->id)->orderBy('id', 'desc')->first(); - @endphp - - @if ($episode_transfer) - {{ __('patient_flow_monitoring.transferred_from') }} {{ get_name($episode_transfer->old_clinic, 'id', 'name', 'clinics') }} {{ __('patient_flow_monitoring.to') }} {{ get_name($episode_transfer->new_clinic, 'id', 'name', 'clinics') }} - @else - @if($episode_clinic_name != "N/A") - {{ $episode_clinic_name }} - @elseif (!$episode->episode_triage_id) - {{ __('patient_flow_monitoring.pending_triage') }} - @else - {{ get_name($episode->clinic_allocation, 'id', 'name', 'clinics') }} - @endif - @endif - - @if($is_patient_in_eye_clinic) - @php - $right_eye_diagnoses = explode(',',get_name($episode->consultation_id, 'id', 'right_eye_diagnosis', 'eye_clinic_main_exam')); - $left_eye_diagnoses = explode(',',get_name($episode->consultation_id, 'id', 'left_eye_diagnosis', 'eye_clinic_main_exam')); - @endphp - - @if(count($right_eye_diagnoses) > 0) -
    Right Eye Diagnosis
    -
      - @for($x = 0; $x < count($right_eye_diagnoses); $x++) -
    • {{ get_name(get_name($right_eye_diagnoses[$x], 'id', 'diagnosis_category', 'diagnoses'), 'id', 'name', 'diagnosis_categories') }} - {{ $diagnoses[$right_eye_diagnoses[$x]] ?? '' }}
    • - @endfor -
    - - @endif - - @if(count($left_eye_diagnoses) > 0) -
    Left Eye Diagnosis
    -
      - @for($x = 0; $x < count($left_eye_diagnoses); $x++) -
    • {{ get_name(get_name($left_eye_diagnoses[$x], 'id', 'diagnosis_category', 'diagnoses'), 'id', 'name', 'diagnosis_categories') }} - {{ $diagnoses[$left_eye_diagnoses[$x]] ?? '' }}
    • - @endfor -
    - @endif - @else - @php - $primary_diagnosis_id = empty($episode->consultation_id)? $episode->antenatal_primary_diagnosis :get_name($episode->consultation_id, 'id', 'primary_diagnosis', 'consultations'); - @endphp - @if($can_user_view_diagnosis) - {{ get_name($primary_diagnosis_id, "id", "name", "diagnoses") }} - @endif - @endif -
    - @if(isset($investigation_results)) - @php $per_inv_explode = explode(",", $investigation_results->per_investigation); @endphp - - @if ($investigation_results->all_authenticated == 1) - {{ __('patient_flow_monitoring.all_results_available') }} - @elseif (in_array("1", $per_inv_explode) && in_array("0", $per_inv_explode)) - {{ __('patient_flow_monitoring.some_results_available') }} - @elseif (array_unique($per_inv_explode) == array("0")) - {{ __('patient_flow_monitoring.ordered') }} - @endif - @elseif(isset($investigation_orders)) - {{ __('patient_flow_monitoring.ordered') }} - @else - N/A - @endif - - @php $outcome = "N/A"; @endphp - @if($episode->consultation_id || $episode->antenatal_outcome_id) - @if($main_exam) - {{ get_full_name($main_exam->created_by, 'id', 'first_name', 'last_name', 'users') }} - @elseif(!is_null($episode->consultation_done_by) && empty($episode->antenatal_outcome_id)) - {{ get_full_name($episode->consultation_done_by, "id", "first_name", "last_name","users") }} - @else - @php - $outcome_id = !empty($episode->antenatal_outcome_id)? $episode->antenatal_outcome_id:$episode->outcome_id; - $created_by = !empty($episode->consultation_created_by)? $episode->consultation_created_by:$episode->antenatal_created_by; - $updated_by = !empty($episode->consultation_updated_by)? $episode->consultation_updated_by:$episode->antenatal_updated_by; - $outcome = get_name($outcome_id, 'id', 'name', 'outcomes'); @endphp - @if(is_null($updated_by)) - {{ get_full_name($created_by, "id", "first_name", "last_name","users") }} - @else - {{ get_full_name($updated_by, "id", "first_name", "last_name", "users") }} - @endif - @endif - @endif - - @if(is_null($treatment_details)) - N/A - @elseif($treatment_details->dispense_status == 1) - {{ __('patient_flow_monitoring.dispensed') }} - @else - - {{ __('patient_flow_monitoring.orderd_but_not_dispensed') }} - - @endif - - {{-- @if (get_name($episode->id, 'episode_id', 'id', 'ante_natal_clinic_registrations') != "N/A") - Ongoing Consultation (ANC) --}} - @if (is_null($episode->consultation_id) && empty($episode->antenatal_primary_diagnosis)) - {{ __('patient_flow_monitoring.pending_consultation') }} - @elseif($episode->consultation_id && empty($episode->antenatal_primary_diagnosis)) - @if(!is_null($episode->consultation_done_by) && is_null($episode->primary_diagnosis)) - {{ __('patient_flow_monitoring.pending_consultation') }} - @elseif($episode->completed == 0) - @if($main_exam) - {{ get_name($main_exam->outcome_id, 'id', 'name', 'outcomes') }} - @else - {{ __('patient_flow_monitoring.ongoing_consultation') }} - @endif - @else - {{ get_name($episode->outcome_id, 'id', 'name', 'outcomes') }} - @endif - @elseif (!is_null($episode->consultation_id) && get_name($episode->consultation_id, 'id', 'completed', 'consultations') == 0 && empty($episode->antenatal_primary_diagnosis)) - {{ __('patient_flow_monitoring.ongoing_consultation') }} - @else - {{ $outcome }} - @endif - - @if(is_object($patient) && is_null($patient->deleted_at)) - - @else - Patient was deleted - @endif -
    - {{ $patient_episodes->render() }} -
    -
    - - -
    -
    - - - - {{-- clinic transfer modal --}} - - - -@endsection - -@push('scripts') - - - - - - - - - -@endpush diff --git a/docker/streamline-src/Modules/Patients/Resources/views/patients/create.blade.php b/docker/streamline-src/Modules/Patients/Resources/views/patients/create.blade.php deleted file mode 100755 index 2cee43f5..00000000 --- a/docker/streamline-src/Modules/Patients/Resources/views/patients/create.blade.php +++ /dev/null @@ -1,930 +0,0 @@ -@extends('layouts.main') - -@push('styles') - - -@endpush - -@section('content') -
    -
    -

    {{ __('patients.new_patient') }}

    -
    -
    - -
    -
    - -
    - - @include('flash::message') - - {{ Form::open(['route' => 'patients.store','data-toggle'=>'validator']) }} - -
    -
    -
    - {{ Form::label('first_name',__('patients.first_name')) }} - {{ Form::text('first_name','',['class' => 'form-control compulsory', 'required', 'placeholder'=>'Christian name eg Fred', 'id' => 'first_name']) }} -
    -
    - -
    - {{ Form::label('last_name',__('patients.last_name')) }} - {{ Form::text('last_name','',['class' => 'form-control compulsory', 'required','placeholder'=>'Surname eg Asiimwe', 'id' => 'last_name']) }} -
    -
    - - - -
    - {{ Form::label('gender',__('patients.gender')) }} -
    - {{ Form::radio('gender', 1, false, ["required"]) }} {{ __('patients.male') }}    - {{ Form::radio('gender', 2, false, ["required"]) }} {{ __('patients.female') }} -
    -
    - -
    - {{ Form::label('national_id',__('patients.national_id')) }} - {{ Form::text('national_id','',['class' => 'form-control','maxlength'=>15]) }} -
    - -
    - {{ Form::label('date_of_birth',__('patients.date_of_birth')) }} -
    - {{ Form::text('date_of_birth','',['class' => 'form-control compulsory','readonly','id'=>'date_of_birth', 'required']) }} - -
    -
    -
    - -
    -
    -
    - {{ Form::label('age',__('patients.years')) }} - {{ Form::number('age_in_years','0',['class' => 'form-control compulsory','id'=>'age_in_years','min'=>'0','max'=>'120', 'required']) }} -
    -
    -
    -
    -
    - {{ Form::label('age',__('patients.months')) }} - {{ Form::number('age_in_months','0',['class' => 'form-control','id'=>'age_in_months','min'=>'0','max'=>'12']) }} -
    -
    -
    - -
    - {{ Form::label('marital_status',__('patients.marital_status')) }} -
    - @foreach($marital_statuses as $key=>$value) - {{ Form::radio('marital_status', $key,false,[]) }} {{ $value }}    - @endforeach -
    -
    - -
    - {{ Form::label('religion',__('patients.religion')) }} - {{ Form::select('religion',$religions,'',['class' => 'form-control x']) }} -
    -
    -
    - -
    - -
    - {{ Form::label('occupation',__('patients.occupation')) }} - {{ Form::select('occupation',$occupations,'',['class' => 'form-control occupation', 'id' => 'occupation']) }} - Add new occupation -
    -
    - -
    - {{ Form::label('next_of_kin',__('patients.next_of_kin')) }} - {{ Form::text('next_of_kin','',['class' => 'form-control compulsory', 'required']) }} -
    -
    - -
    -
    -
    - {{ Form::label('next_of_kin_relationship',__('patients.next_of_kin_relationship')) }} - {{ Form::select('next_of_kin_relationship',$relationships,'',['class' => 'form-control compulsory', 'required']) }} -
    -
    -
    - {{ Form::label('next_of_kin_phone',__('patients.next_of_kin_phone')) }} - {{ Form::text('next_of_kin_phone','',['class' => 'form-control compulsory', 'required','pattern' => '\d{10}', 'title'=>'Phone number must be exactly 10 digits']) }} -
    -
    -
    -
    - -
    - {{ Form::label('phone',__('patients.phone')) }} - {{ Form::text('phone','',['class' => 'form-control compulsory','id' => 'phone', 'required','pattern' => '\d{10}', 'title'=>'Phone number must be exactly 10 digits' ]) }} -
    -
    - - - -
    - {{ Form::label('alternative_phone', 'Alternative Phone Number') }} - {{ Form::text('alternative_phone','',['class' => 'form-control','id' => 'alternative_phone','pattern' => '\d{10}', 'title'=>'Phone number must be exactly 10 digits']) }} -
    - -
    - {{ Form::label('phone_owner',__('patients.phone_owner')) }} -
    - {{ Form::radio('phone_owner','self',false,['id'=>'owned']) }} {{ __('patients.self') }}    - {{ Form::radio('phone_owner','other',false,['id'=>'non_owned']) }} {{ __('patients.other') }} -
    -
    - - - -
    - {{ Form::label('patient_category',__('patients.patient_category'))}} - {{ Form::select('patient_category',$patient_categories,'1',['class' => 'form-control compulsory', 'required', 'data-error'=>'']) }} -
    -
    - -
    - {{ Form::label('company',__('patients.company_slash_employer'))}} - {{ Form::select('company', $companies ,'',['class' => 'form-control', 'data-error'=>'', 'id' => 'company']) }} -
    - {{ __('patients.add_new_company') }} -
    -
    - -
    - -
    - {{ Form::label('language',__('patients.preferred_language')) }} - {{ Form::select('language',['vern'=>'Vernacular','eng'=>'English',],'eng',['class' => 'form-control compulsory', 'required', 'data-error'=>'Select the language']) }} -
    -
    -
    - {{ Form::label('citizenship',__('patients.citizenship')) }} - {{ Form::select('citizenship',['1'=>'Ugandan','0'=>'Non Ugandan'],'',['class' => 'form-control compulsory', 'required', 'data-error'=>'Select the language','id' => 'citizenship']) }} -
    -
    - - - - - -
    -
    - {{ Form::label('residence','Residence') }} - -
    - {{ __('patients.add_new_residence') }} -
    -
    - - @if (!empty($patient_registration_fields)) - @foreach ($patient_registration_fields as $patient_registration_field) - - @if (!empty($patient_registration_field->options)) -
    - {{ Form::label($patient_registration_field->name, $patient_registration_field->name) }} - -
    - @else -
    - {{ Form::label($patient_registration_field->name, $patient_registration_field->name) }} - compulsory == 1)? 'required':'' }}> -
    - @endif - @endforeach - @endif - - @if(is_fingerprint_enabled()) -
    - {{ Form::label('fingerprint_template',__('patients.patient_fingerprint')) }} - -
    - -
    - - {{ Form::hidden('fingerprint_template', '', ['id' => 'fingerprint_template']) }} - - - -

    -
    - @endif - - - - -
    -
    -
    -
    -
    - {{ Form::button(__('patients.submit'),['type'=>'submit','class'=>'btn btn-success waves-effect waves-light m-r-10', 'id' => 'patients_submit']) }} - {{ Form::button(__('patients.cancel'),['type'=>'reset','class'=>'btn btn-default waves-effect waves-light']) }} -
    -
    - {{ Form::close() }} -
    -@endsection - - - - - - - - -{{-- start of add other foreigner country modal --}} - - - - - -@push('scripts') - - - - {{-- --}} - - - - - - {{-- palm vein scanner --}} - - - {{-- --}} - - {{-- --}} - - - - - - - {{-- end of palm vein scanner --}} -@endpush \ No newline at end of file diff --git a/docker/streamline-src/Modules/Patients/Resources/views/patients/edit.blade.php b/docker/streamline-src/Modules/Patients/Resources/views/patients/edit.blade.php deleted file mode 100755 index 69799c34..00000000 --- a/docker/streamline-src/Modules/Patients/Resources/views/patients/edit.blade.php +++ /dev/null @@ -1,788 +0,0 @@ -@extends('layouts.main') - -@push('styles') - - -@endpush - -@section('content') -
    -
    -

    {{ __('patients.edit_patient') }}

    -
    -
    - -
    - -
    - -
    -
    - - @include('flash::message') - @foreach ($errors->all() as $error) -
    - {{ $error }} -
    - @endforeach - -
    - {{ Form::model($patient, ['method' => 'PUT', 'route' => ['patients.update',$patient], 'data-toggle' => 'validator']) }} - -
    -
    -
    - {{ Form::label('first_name',__('patients.first_name')) }} - {{ Form::text('first_name',$patient->first_name,['class' => 'form-control compulsory', 'required', 'data-error'=>'','placeholder'=>'Christian name eg Fred']) }} -
    -
    -
    - {{ Form::label('last_name',__('patients.last_name')) }} - {{ Form::text('last_name',$patient->last_name,['class' => 'form-control compulsory', 'required','placeholder'=>'Surname eg Asiimwe']) }} -
    -
    - -
    - {{ Form::label('gender',__('patients.gender')) }} -
    - {{ Form::radio('gender', 1, false, ["required"]) }} {{ __('patients.male') }}    - {{ Form::radio('gender', 2, false, ["required"]) }} {{ __('patients.female') }} -
    -
    - -
    - {{ Form::label('national_id',__('patients.national_id')) }} - {{ Form::text('national_id', strtoupper($patient->national_id),['class' => 'form-control','maxlength'=>15]) }} -
    - -
    - {{ Form::label('date_of_birth',__('patients.date_of_birth')) }} -
    - {{ Form::text('date_of_birth',$dob,['class' => 'form-control compulsory', 'required','readonly','id'=>'date_of_birth']) }} - -
    -
    -
    - -
    -
    -
    - {{ Form::label('age',__('patients.years')) }} - {{ Form::number('age_in_years',\Carbon\Carbon::now()->diffInYears($patient->date_of_birth),['class' => 'form-control compulsory','id'=>'age_in_years','min'=>'0', 'max'=>'120']) }} -
    -
    -
    -
    - @php - $months = \Carbon\Carbon::now()->diffInMonths($patient->date_of_birth) - (\Carbon\Carbon::now()->diffInYears($patient->date_of_birth) *12); - @endphp - {{ Form::label('age',__('patients.months')) }} - {{ Form::number('age_in_months',$months,['class' => 'form-control','id'=>'age_in_months','min'=>'0','max'=>'12']) }} -
    -
    -
    - -
    - {{ Form::label('marital_status',__('patients.marital_status')) }} -
    - @foreach($marital_statuses as $key=>$value) - {{ Form::radio('marital_status', $key,false,[]) }} {{ $value }}    - @endforeach -
    -
    - -
    - {{ Form::label('religion',__('patients.religion')) }} - {{ Form::select('religion',$religions,$patient->religion_id,['class' => 'form-control']) }} -
    -
    - - @if( Auth::user()->hasRole('Super Admin')) -
    - {{ Form::label('is_test_patient',__('patients.is_test_patient')) }} -
    - {{ Form::radio('is_test_patient', 1, $patient->is_test_patient == 1) }} Yes    - {{ Form::radio('is_test_patient', 0, $patient->is_test_patient == 0) }} No    -
    -
    - @endif -
    - -
    -
    - {{ Form::label('occupation',__('patients.occupation')) }} - {{ Form::select('occupation',$occupations, $patient->occupation_id,['class' => 'form-control']) }} -
    -
    - -
    - {{ Form::label('next_of_kin',__('patients.next_of_kin')) }} - {{ Form::text('next_of_kin',$patient->next_of_kin,['class' => 'form-control compulsory','required', 'onchange' => "show('kin_div')"]) }} -
    - -
    - {{ Form::label('next_of_kin_relationship',__('patients.next_of_kin_relationship')) }} - {{ Form::select('next_of_kin_relationship',$relationships,$patient->next_of_kin_relationship,['class' => 'form-control compulsory']) }} -
    - {{ Form::label('next_of_kin_phone',__('patients.next_of_kin_phone')) }} - {{ Form::text('next_of_kin_phone',$patient->phone_of_next_of_kin,['class' => 'form-control','pattern' => '\d{10}', 'title'=>'Phone number must be exactly 10 digits']) }} -
    - -
    - {{ Form::label('phone',__('patients.phone')) }} - {{ Form::text('phone',$patient->phone,['class' => 'form-control compulsory','pattern' => '\d{10}', 'title'=>'Phone number must be exactly 10 digits']) }} -
    - -
    - {{ Form::label('alternative_phone', 'Alternative Phone Number') }} - {{ Form::text('alternative_phone',$patient->alternative_phone,['class' => 'form-control','id' => 'alternative_phone','pattern' => '\d{10}', 'title'=>'Phone number must be exactly 10 digits']) }} -
    - -
    - {{ Form::label('phone_owner',__('patients.phone_owner')) }} -
    - {{ Form::radio('phone_owner','self',($patient->phone_owner == "Self" || $patient->phone_owner == "self") ? 1 : 0,['id'=>'owned']) }} {{ __('patients.self') }} -    - {{ Form::radio('phone_owner','other',$patient->phone_owner != "Self" ? 1 : 0,['id'=>'non_owned']) }} {{ __('patients.other') }} -
    -
    - -
    - {{ Form::label("owner_name",__('patients.phone_owner_name')) }} - {{ Form::text('owner_name',$patient->phone_owner,['id'=>'owner_name','class' => 'form-control compulsory']) }} -
    - - - -
    - {{ Form::label('patient_category',__('patients.patient_category'))}} - {{ Form::select('patient_category',$patient_categories,$patient->category_id,['class' => 'form-control compulsory', 'required', 'data-error'=>'']) }} -
    -
    - -
    - {{ Form::label('company',__('patients.company_slash_employer'))}} - {{ Form::select('company', $companies ,$patient->company_id,['class' => 'form-control', 'data-error'=>'', 'id' => 'company']) }} -
    - {{ __('patients.add_new_company') }} -
    -
    - -
    - -
    - {{ Form::label('language',__('patients.preferred_language')) }} - {{ Form::select('language',['' => '- select -','eng'=>'English','vern'=>'Vernacular'],$patient->language,['class' => 'form-control compulsory', 'required', 'data-error'=>'Select the language']) }} -
    -
    - -
    - {{ Form::label('citizenship',__('patients.citizenship')) }} - {{ Form::select('citizenship',['' => '- Select -','1'=>'Ugandan','0'=>'Non Ugandan'],$patient->citizenship,['class' => 'form-control compulsory', 'required', 'data-error'=>'Select the language','id' => 'citizenship']) }} -
    -
    - -
    citizenship == 1) style="display: none" @endif> -
    - {{ Form::label('country_id',__('patients.country_of_origin')) }} - {{ Form::select('country_id', $countries, $patient->country_id, ['class' => 'form-control', 'data-error'=>'Select the country']) }} -
    -
    - - @php - $other_patients_info_data = !empty($patient->other_patients_info) ? json_decode($patient->other_patients_info) : ''; - @endphp -
    - - -
    -
    - -
    - - -
    -
    - -
    - -
    citizenship == 0) style="display: none" @endif> -
    - {{ Form::label('residence','Residence') }} - -
    - - {{ __('patients.add_new_residence') }} -
    -
    - - @if (!empty($patient_registration_fields)) - @php $registration_fields = !empty($patient->registration_fields)? json_decode($patient->registration_fields, true):[]; @endphp - @foreach ($patient_registration_fields as $patient_registration_field) - @php - $field_value = 'reg_field_'.$patient_registration_field->id; - @endphp - - @if (!empty($patient_registration_field->options)) -
    - {{ Form::label($patient_registration_field->name, $patient_registration_field->name) }} - -
    - @else -
    - {{ Form::label($patient_registration_field->name, $patient_registration_field->name) }} - compulsory == 1)? 'required':'' }} value="{{ !empty($registration_fields[$field_value])? $registration_fields[$field_value]:'' }}"> -
    - @endif - @endforeach - @endif - - @if(is_fingerprint_enabled()) -
    - {{ Form::label('fingerprint_template', __('patients.patient_fingerprint')) }} - -
    - -
    - - {{ Form::hidden('fingerprint_template', '', ['id' => 'fingerprint_template']) }} - - - -

    -
    - @endif -
    -
    -
    -
    -
    - {{ Form::button(__('patients.submit'),['type'=>'submit','class'=>'btn btn-success waves-effect waves-light m-r-10', 'id' => 'patients_submit']) }} - {{ Form::button(__('patients.cancel'),['type'=>'reset','class'=>'btn btn-default waves-effect waves-light']) }} - - {{ Form::close() }} - @if (!in_array($patient->id, $episodes)) -
    - - - -
    - @endif -
    -
    -
    -
    -
    - - - - - - - - - - - -@endsection - -@push('scripts') - - - - - - - - - -@endpush \ No newline at end of file diff --git a/docker/streamline-src/Modules/Patients/Resources/views/patients/index.blade.php b/docker/streamline-src/Modules/Patients/Resources/views/patients/index.blade.php deleted file mode 100755 index 30c11324..00000000 --- a/docker/streamline-src/Modules/Patients/Resources/views/patients/index.blade.php +++ /dev/null @@ -1,252 +0,0 @@ -@extends('layouts.main') - -@push('styles') - - - -@endpush - -@section('content') -
    -
    -

    {{ __('patients.view') }}

    -
    -
    - -
    -
    - -
    - @include('flash::message') - {{ Form::open(['route' => 'patients.search', 'method' => 'ANY', 'role' => 'search']) }} - -
    -
    -
    - {{ Form::text('number', '', ['class' => 'form-control typeahead', 'placeholder' => 'Patient number', 'autocomplete' => 'off', 'spellcheck' => false]) }} -
    -
    - - - -
    -
    - {{ Form::text('full_name', '', ['class' => 'form-control typeahead', 'placeholder' => 'Patient Name', 'autocomplete' => 'off', 'spellcheck' => false]) }} -
    -
    - -
    -
    - {{ Form::text('village', '', ['class' => 'form-control typeahead', 'placeholder' => 'Village', 'autocomplete' => 'off', 'spellcheck' => false]) }} -
    -
    - -
    - - {{ count($patient_numbers) }} {{ __('patients.patients_registered') }} -
    -
    - - @if(isset($criteria)) -

    {{ __('patients.search_criteria') }} : {{ $criteria }}

    - @endif - {{ Form::close() }} - -
    - - - - - - - - - - - - - - - - - @foreach($patients as $patient) - - - - - - - - - - - - - @endforeach - - -
    {{ __('patients.patient_number') }}{{ __('patients.full_names') }}{{ __('patients.gender') }}{{ __('patients.age') }}{{ __('patients.phone') }}{{ __('patients.category') }}{{ __('patients.village') }}
    {{ $patient->number }}{!! insurance_flag($patient->id) !!} - @if($patient->gender == 1) - {{ __('patients.male') }} - @else - {{ __('patients.female') }} - @endif - {{ get_patients_age($patient->date_of_birth) }}{{ $patient->phone }}{{ $categories[$patient->category_id] ?? "N/A" }}{{ $villages[$patient->village_id] ?? '' }} {{ __('patients.details') }} - {{ __('patients.edit') }} - - {{ __('patients.select') }} -
    -
    - {{ $patients->links() }} -
    -@endsection - -@push('scripts') - - - - - - - - - - - - - - - -@endpush diff --git a/docker/streamline-src/Modules/Patients/Resources/views/patients/patient_card.blade.php b/docker/streamline-src/Modules/Patients/Resources/views/patients/patient_card.blade.php deleted file mode 100644 index 54298ab9..00000000 --- a/docker/streamline-src/Modules/Patients/Resources/views/patients/patient_card.blade.php +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - Patient Card - - - - - - - {{--
    --}} - - {{-- row 1 --}} - - - - - - - {{-- row 2 --}} - - - - - {{-- row 3 --}} - - - - - {{-- row 4 --}} - - - - - - {{-- row 5 --}} - - - - - - - - {{-- row 6 --}} - - - - - - - - - - - - - - - - - - - - - - -
    - - {{-- LOGO --}} - - - PATIENT CARD
    NAME
    - {{ $data['patient']->first_name ?? '' }} - {{ $data['patient']->last_name ?? '' }} - {{ $data['patient']->other_names ?? '' }} -
    PATIENT NUMBERRESIDENCE
    {{ $data['patient']->number ?? '' }} {{ get_name(get_name($data['patient']->id, "id", "village_id", "patients"), "id", "name", "villages") }}
    DISTRICT
    - {{ get_name($data['patient']->district_id, "id", "name", "districts") }} -
    - {{ getDNS1DBarcodePNGOCards(sprintf("%04u", $data['patient']->id)) }} -
    -

    {{ sprintf("%04u", $data['patient']->id) }}

    - This card is a property of {{ $data['hospitalInfo']->name ?? '' }}, If found please return to the facility.
    - -
    Supported by Streamline ; www.streamlinehealth.org - -
    - {{--
    --}} - - - - - diff --git a/docker/streamline-src/Modules/Patients/Resources/views/patients/show.blade.php b/docker/streamline-src/Modules/Patients/Resources/views/patients/show.blade.php deleted file mode 100755 index c402c46d..00000000 --- a/docker/streamline-src/Modules/Patients/Resources/views/patients/show.blade.php +++ /dev/null @@ -1,265 +0,0 @@ -@extends('layouts.main') - -@section('content') - -@php - $other_patients_info_data = !empty($patient->other_patients_info) ? json_decode($patient->other_patients_info) : ''; - -@endphp - -
    -
    -

    {{ __('patients.view') }}

    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    {{ __('patients.patient_number') }}{{ $patient->number }}
    Code - {{ getDNS1DBarcodePNG(sprintf("%04u", $patient->id)) }} -

    {{ sprintf("%04u", $patient->id) }}

    -
    {{ __('patients.full_names') }}{{ $patient->first_name }} {{ $patient->last_name }}
    {{ __('patients.gender') }}{{ $patient->gender == 1 ? 'Male' : 'Female' }}
    {{ __('patients.age') }}{{ get_patients_age($patient->date_of_birth) }}
    -
    - -
    - @if (Auth::user()->can('print-patient-cards')) - {{ __('patients.print_patient_card') }} - @endif -
    -
    -
    - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    {{ __('patients.phone') }}{{ $patient->phone }}
    {{ __('patients.occupation') }}{{ get_name($patient->occupation_id, 'id', 'name', 'occupations') }}
    {{ __('patients.insurance') }}{{ $patient->insurance_status == 1 ? __('patients.yes') : __('patients.no') }}
    {{ __('patients.religion') }}{{ get_name($patient->religion_id, 'id', 'name', 'religions') }}
    {{__('patients.next_of_kin')}}{{ $patient->next_of_kin }}
    {{ __('patients.next_of_kin_relationship') }}{{ get_name($patient->next_of_kin_relationship, 'id', 'name', 'family_relations') }}
    {{__('patients.phone_of_next_of_kin')}}{{ $patient->phone_of_next_of_kin }}
    Country{{ $country->name ?? '' }}
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @if (isset($other_patients_info_data->non_ugandan_national_id_no)) - - - - - - - @else - - - - - - - @endif - - - @php $registration_fields = !empty($patient->registration_fields)? json_decode($patient->registration_fields, true):[]; @endphp - @foreach ($registration_fields as $key => $registration_field) - @php $keys = explode("_",$key) @endphp - @if (!empty($keys[2])) - - - - - @endif - @endforeach -
    {{ __('patients.district') }}{{ get_name($patient->district_id, 'id', 'name', 'districts') }}
    {{ __('patients.county') }}{{ get_name($patient->county_id, 'id', 'name', 'counties') }}
    {{ __('patients.sub_county') }}{{ get_name($patient->subcounty_id, 'id', 'name', 'subcounties') }}
    {{ __('patients.parish') }}{{ get_name($patient->parish_id, 'id', 'name', 'parishes') }}
    {{ __('patients.village') }}{{ get_name($patient->village_id, 'id', 'name', 'villages') }}
    Referred From{{ $patient->referred_from }}
    Foreigner / Refugee - - @if(!empty($other_patients_info_data)) - @if ($other_patients_info_data->non_ugandan_foreigner_or_refugee == 1) - {{ __('patients.foreigner') }} - @elseif ($other_patients_info_data->non_ugandan_foreigner_or_refugee == 2) - {{ __('patients.refugee') }} - @else - - @endif - @else - - @endif - -
    ID Number{{ $other_patients_info_data->non_ugandan_national_id_no ?? '' }}
    National ID{{ $patient->national_id ?? '' }}
    {{ get_name($keys[2], 'id', 'name', 'patient_registration_fields') }}{{ $registration_field }}
    -
    - -
    - - - - - - - - - - - - - - @if (mother_of_patient($patient->id)) - @php - $mother_id = mother_of_patient($patient->id); - @endphp - - - - - @endif - - @if (children_of_patient($patient->id)) - @php - $children_ids_array = children_of_patient($patient->id); - @endphp - - - - - @endif -
    {{ __('patients.last_patient_visit') }} : - @if(!is_null($last_episode)) - @php - $diagnosis = null; - $primary_diagnosis_id = get_name($last_episode->id, 'episode_id', 'primary_diagnosis', 'consultations'); - - if($primary_diagnosis_id != "N/A" && $primary_diagnosis_id != ""){ - $diagnosis = \Streamline\Models\Diagnosis::withTrashed()->find($primary_diagnosis_id); - } - @endphp - {{ __('patients.primary_diagnosis') }} : {{ !is_null($diagnosis) ? $diagnosis->name : '' }}
    - {{ __('patients.comments') }} : {{ get_name($last_episode->id, 'episode_id', 'comments', 'consultations') }}
    - @endif - {{ __('patients.date') }} : {{ !is_null($last_episode) ? streamline_date($last_episode->created_at) : __('patients.no_visit_yet') }} -
    {{ __('patients.date_registered') }} :{{streamline_date($patient->created_at) }}
    {{ __('patients.created_by') }} :{{ get_full_name($patient->created_by, "id", "first_name", "last_name", "users") }}
    {{ __('patients.mother_name') }}: - - {{ get_full_name($mother_id, "id", "first_name", "last_name", "patients") }} ({{ get_name($mother_id, "id", "number", "patients") }}) - -
    {{ __('patients.children') }}: -
      - @for ($i = 0; $i < count($children_ids_array); $i++) -
    1. - - {{ get_full_name($children_ids_array[$i], "id", "first_name", "last_name", "patients") }} ({{ get_name($children_ids_array[$i], "id", "number", "patients") }}) - -
    2. - @endfor -
    -
    - {{ __('patients.select_patient_history') }} -
    -
    -
    -
    -
    -@endsection diff --git a/docker/streamline-src/Modules/Patients/Resources/views/point_of_sale/confirm_items.blade.php b/docker/streamline-src/Modules/Patients/Resources/views/point_of_sale/confirm_items.blade.php deleted file mode 100644 index 2fa5e1bb..00000000 --- a/docker/streamline-src/Modules/Patients/Resources/views/point_of_sale/confirm_items.blade.php +++ /dev/null @@ -1,945 +0,0 @@ -@extends('layouts.main') - -@push('styles') - - -@endpush - -@section('content') - -
    -
    -

    {{ __('point_of_sale.point_of_sale') }}

    -
    -
    - -
    -
    - -
    - @include('flash::message') - - {{ Form::open(['route'=>'point_of_sale.confirm_pricing']) }} - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - -
    #{{ __('point_of_sale.first_name') }}{{ __('point_of_sale.last_name') }}{{ __('point_of_sale.patient_category') }}{{ __('point_of_sale.phone_number') }}
    {{ __('point_of_sale.patient_information') }}
    {{ $patient->number }}{{ $patient->first_name }}{{ $patient->last_name }}{{ get_name($patient->category_id, 'id', 'name', 'patient_categories') }}{{ $patient->phone }}
    -
    -
    - -
    - - @if($pre_ordered_eye_glasses) -
    -
    - - - - - - - - - - - - @php $pre_order_amount_sum = 0; @endphp - - @foreach($pre_ordered_eye_glasses as $pre_order) - - - - - - - @php - // get insurance status for drug - - $eye_glass_insurance_status = get_name($pre_order->id, "id", "insurance", "eye_glasses"); - $eye_glass_amount = get_name($pre_order->id, "id", "non_insured_price", "eye_glasses"); - // insurance flag - $is_insured = 0; - - // check if drug and patient is eligible for insurance - if($eye_glass_insurance_status == 1 && patient_insurance_status($patient_id) == 1){ - $insurance_amount = get_name($pre_order->id, "id", "non_insured_price", "eye_glasses") - $eye_glass_amount; - $is_insured = 1; - } else { - $insurance_amount = 0; - } - - @endphp - - - - - - - @endforeach - -
    {{ __('point_of_sale.select') }}{{ __('point_of_sale.eye_glasses') }}{{ __('point_of_sale.quantity') }}{{ __('point_of_sale.unit_cost') }}{{ __('point_of_sale.cost') }}
    {{ __('point_of_sale.selected') }}
    - @if ($pre_order->total_stock > 0 ) - - @endif - - @if($pre_order->insurance == 1) - {{ $pre_order->name }} - @else - {{ $pre_order->name }} - @endif -
    - @if ($pre_order->total_stock <= 0) - {{ __('point_of_sale.out_of_stock') }} - @endif -
    - - - @if($pre_order->insurance == 1 && patient_insurance_status($patient_id) == 1) - {{-- {{ ugandan_shillings($pre_order->insured_price) }}--}} - - @else - {{-- {{ ugandan_shillings($pre_order->non_insured_price) }}--}} - - @endif - - .UGx -
    -
    -
    -
    - - {{ __('point_of_sale.ugx') }} -
    -
    -
    - @endif - -
    - - @if($pre_ordered_services) -
    -
    -
    - - - - - - - - - - - - @php - $service_order_amount_sum = 0; - @endphp - - - - - @foreach($pre_ordered_services as $service_order) - - - - - - - - @endforeach - - - @if(!$pre_ordered_services) - - - - @endif - -
    {{ __('service_items.select') }}{{ __('service_items.service') }}{{ __('service_items.quantity') }}{{ __('service_items.unit_cost') }}{{ __('service_items.total_cost') }}
    {{ __('service_items.selected_service_orders') }}
    - - - @if($service_order->insurance_coverage == 1) - {{ $service_order->name }} - @else - {{ $service_order->name }} - @endif - - - - @php - $price_list_id = is_patient_category_attached_to_price_list($patient_id); - @endphp - @if($price_list_id) - {{ ugandan_shillings(get_price_list_category_price($price_list_id, 6, $service_order->id)) }} - - @else - @php - $service_insurance = $service_order->insurance_coverage; - @endphp - - @if($service_insurance == 1 && patient_insurance_status($patient_id) == 1) - {{ ugandan_shillings($service_order->insured_price) }} - - @else - {{ ugandan_shillings($service_order->non_insured_price) }} - - @endif - @endif - -
    - - {{ __('point_of_sale.ugx') }} -
    - -
    {{ __('service_items.select_services_above') }}
    -
    -
    - -
    - -
    - - {{ __('point_of_sale.ugx') }} -
    -
    -
    - @endif - - @php - $allergy_check = ""; - $fre_drop = ""; - $results = \DB::select("select * from dosage_frequencies order by name"); - foreach ($results as $result){ - $fre_drop .= ""; - } - @endphp - - @if($manual_patient_prescriptions) -
    -
    -
    - - - - - - - - - - - - - - - - - - - - @if($manual_patient_prescriptions) - @if(count($manual_patient_prescriptions) > 0) - @foreach($manual_patient_prescriptions as $prescription) - @php - if(isset($allergies['names'])){ - $allergies_explode = explode(",", $allergies['names']); - $allergy_check = \Modules\Pharmacy\Http\Controllers\PrescriptionsController::checkPatientAllergies($allergies_explode, $prescription->drug_category); - } - @endphp - - @php - $is_insured = 0; - @endphp - - - - - - - - - - - - @endforeach - @endif - @else - - @endif - -
    #{{ __('point_of_sale.drug') }}{{ __('point_of_sale.dosage') }}{{ __('point_of_sale.frequency') }}{{ __('point_of_sale.duration') }}{{ __('point_of_sale.quantity_to_dispense') }}{{ __('point_of_sale.price') }}
    {{ __('point_of_sale.selected') }}
    - @php - $total_stock = $prescription->pharmacy_stock; - @endphp - @if ($prescription->total_stock > 0 && $allergy_check != 'Allergic') - - @endif - - @php - $insurance_color = ($prescription->insurance_coverage == 1 && patient_insurance_status($patient_id) == 1) ? "green" : "orange"; - @endphp - {{ $prescription->name }}
    - @if ($allergy_check == 'Allergic') - {{ __('point_of_sale.patient_is_allergic') }}   - @endif - @if ($prescription->total_stock <= 0) - {{ __('point_of_sale.out_of_stock') }} - @endif - pharmacy_comment); - if(isset($prescription->reference_areas)){ $reference_array = explode(",", $prescription->reference_areas); } else { $reference_array = []; } - if(isset($prescription->reference_name)){ $reference_name = explode(",", $prescription->reference_name); } else { $reference_name = []; } - - if (!empty($pharm_comment)): - echo "
    " . $pharm_comment . "
    "; - endif; - ?> - @for ($x = 0; $x < count($reference_array); $x++) - @if(isset($reference_array[$x]) && isset($reference_name[$x])) - {{ $reference_name[$x] }}
    - @endif - @endfor - @if (!empty($pharm_comment)) -
    {{ $pharm_comment }}
    - @endif -
    - - - - - - - - - - - form_id); ?> - - - @if($prescription->insurance_coverage == 1 && patient_insurance_status($patient_id) == 1) - - @else - - @endif - - - - - - -
    - - {{ __('point_of_sale.ugx') }} -
    -
    {{ __('point_of_sale.no_drugs_have_been_searched_yet') }}
    -
    -
    -
    - -
    - - {{ __('point_of_sale.ugx') }} -
    -
    -
    - @endif - - @if($automatic_patient_prescriptions) -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - @if($automatic_patient_prescriptions) - @if(count($automatic_patient_prescriptions) > 0) - @foreach($automatic_patient_prescriptions as $prescription) - @php - if(isset($allergies['names'])){ - $allergies_explode = explode(",", $allergies['names']); - $allergy_check = \Modules\Pharmacy\Http\Controllers\PrescriptionsController::checkPatientAllergies($allergies_explode, $prescription->drug_category); - } - @endphp - - @php - $is_insured = 0; - @endphp - - - - - - - - - - @endforeach - @endif - @else - - @endif - -
    #{{ __('point_of_sale.drug') }}{{ __('point_of_sale.dosage') }}{{ __('point_of_sale.duration') }}{{ __('point_of_sale.dispense') }}{{ __('point_of_sale.price') }}
    {{ __('point_of_sale.selected') }}
    - @php - $total_stock = $prescription->pharmacy_stock; - @endphp - @if ($prescription->total_stock > 0 && $allergy_check != 'Allergic') - - @endif - - @php - $insurance_color = ($prescription->insurance_coverage == 1 && patient_insurance_status($patient_id) == 1) ? "green" : "orange"; - @endphp - {{ $prescription->name }}
    - @if ($allergy_check == 'Allergic') - {{ __('point_of_sale.patient_is_allergic') }}   - @endif - @if ($prescription->total_stock <= 0) - {{ __('point_of_sale.out_of_stock') }} - @endif - pharmacy_comment); - if(isset($prescription->reference_areas)){ $reference_array = explode(",", $prescription->reference_areas); } else { $reference_array = []; } - if(isset($prescription->reference_name)){ $reference_name = explode(",", $prescription->reference_name); } else { $reference_name = []; } - - if (!empty($pharm_comment)): - echo "
    " . $pharm_comment . "
    "; - endif; - ?> - @for ($x = 0; $x < count($reference_array); $x++) - @if(isset($reference_array[$x]) && isset($reference_name[$x])) - {{ $reference_name[$x] }}
    - @endif - @endfor - @if (!empty($pharm_comment)) -
    {{ $pharm_comment }}
    - @endif -
    -
    -
    - - - unit_id); ?> - {{ $drugunit }} - -
    -
    - - -
    -
    -
    - - - {{ __('point_of_sale.duration_in_days') }} - - - - - - - - - form_id); ?> - - - @if($prescription->insurance_coverage == 1 && patient_insurance_status($patient_id) == 1) - - @else - - @endif - - - - - - -
    - - {{ __('point_of_sale.ugx') }} -
    -
    {{ __('point_of_sale.no_drugs_have_searched_yet') }}
    -
    -
    -
    - -
    - - {{ __('point_of_sale.ugx') }} -
    -
    -
    - @endif - - @if($pre_ordered_sundries) -
    -
    - - - - - - - - - - - - @php $pre_order_amount_sum = 0; @endphp - - @foreach($pre_ordered_sundries as $pre_order) - - - - - @php - - $insurance_amount = 0; - - // get insurance status for sundry - $sundry_insurance_status = get_name($pre_order->id, "id", "insurance", "sundries"); - - // insurance flag - $is_insured = 0; - if($sundry_insurance_status == 1 && patient_insurance_status($patient_id) == 1){ - $sundry_amount = get_name($pre_order->id, "id", "insured_price", "sundries"); - $insurance_amount = get_name($pre_order->id, "id", "non_insured_price", "sundries") - $sundry_amount; - $is_insured = 1; - } else { - $sundry_amount = get_name($pre_order->id, "id", "non_insured_price", "sundries"); - } - // } - @endphp - - - - - {{ Form::hidden('sundry_insurance_status[]', $is_insured) }} - {{ Form::hidden('sundry_insurance_amount[]', $insurance_amount, ['class' => 'insurance_amount']) }} - - @endforeach - - -
    {{ __('point_of_sale.select') }}{{ __('point_of_sale.sundry') }}{{ __('point_of_sale.quantity') }}{{ __('point_of_sale.unit_cost') }}{{ __('point_of_sale.total_cost') }}
    {{ __('point_of_sale.selected_sundries_orders') }}
    - @if ($pre_order->total_stock > 0) - - @endif - - @if($pre_order->insurance == 1) - {{ $pre_order->name }} - @else - {{ $pre_order->name }} - @endif -
    - @if ($pre_order->total_stock <= 0) - {{ __('point_of_sale.out_of_stock') }} - @endif -
    - - - @php $price_list_id = is_patient_category_attached_to_price_list($patient_id); @endphp - @if($price_list_id) - {{ ugandan_shillings(get_price_list_category_price($price_list_id, 5, $pre_order->id)) }} - - @else - @php $sundry_insurance = $pre_order->insurance; @endphp - @if($sundry_insurance == 1 && patient_insurance_status($patient_id) == 1) - {{ ugandan_shillings($pre_order->insured_price) }} - - @else - {{ ugandan_shillings($pre_order->non_insured_price) }} - - @endif - @endif - -
    - - {{ __('point_of_sale.ugx') }} -
    - -
    -
    -
    - -
    - - {{ __('point_of_sale.ugx') }} -
    -
    -
    - @endif - -
    -
    -
    - -
    - - {{ __('point_of_sale.ugx') }} -
    -
    -
    -
    -
    - - -
    -
    - - - - -
    - {{ Form::close() }} -
    - -@endsection - -@push('scripts') - - - -@endpush diff --git a/docker/streamline-src/Modules/Patients/Resources/views/point_of_sale/index.blade.php b/docker/streamline-src/Modules/Patients/Resources/views/point_of_sale/index.blade.php deleted file mode 100755 index f21038e9..00000000 --- a/docker/streamline-src/Modules/Patients/Resources/views/point_of_sale/index.blade.php +++ /dev/null @@ -1,200 +0,0 @@ -@extends('layouts.main') - -@push('styles') - - - -@endpush - -@section('content') -
    -
    -

    {{ __('point_of_sale.point_of_sale') }}

    -
    -
    - -
    -
    - -
    - {{ Form::open(['method'=>'post','route' => 'point_of_sale.index']) }} - -
    -
    -
    - - -
    -
    - - - -
    -
    - {{ Form::submit(__('investigations.search'), ['class'=>'btn btn-success pull-right']) }} -
    -
    -
    - {{ Form::close() }} -
    - -
    - @if(session()->get("print_pos_pdf") == 1) - {{ Form::hidden('print_pos_pdf', 1, ['id' => 'print_pos_pdf']) }} - @endif - - @include('flash::message') -

    - -
    - - - - - - - - - - - - - @foreach($records as $record) - - - - - - - - - @endforeach - -
    {{ __('point_of_sale.patient_names') }}{{ __('point_of_sale.items') }}{{ __('point_of_sale.totals') }}{{ __('point_of_sale.record_created_by') }}{{ __('point_of_sale.record_created_on') }}
    {{ $record->first_name . ' ' . $record->last_name }} ({{ $record->number }}) -
      - @if(!is_null($record->treatments)) -
    • {{ __('point_of_sale.treatments') }}
    • - @endif - - @if(!is_null($record->eye_glasses)) -
    • {{ __('point_of_sale.eye_glasses') }}
    • - @endif - - @if(!is_null($record->sundries)) -
    • {{ __('point_of_sale.sundries') }}
    • - @endif - - @if(!is_null($record->services)) -
    • {{ __('point_of_sale.services') }}
    • - @endif -
    -
    - @php - $treatments_array = json_decode($record->treatments, true); - $sundries_array = json_decode($record->sundries, true); - $eye_glasses_array = json_decode($record->eye_glasses, true); - $services_array = json_decode($record->services, true); - @endphp - -
      - @if(!is_null($treatments_array)) -
    • {{ ugandan_shillings(array_sum($treatments_array["subtotal"])) }}
    • - @endif - - @if(!is_null($eye_glasses_array)) -
    • {{ ugandan_shillings(array_sum($eye_glasses_array["subtotal"])) }}
    • - @endif - - @if(!is_null($sundries_array)) -
    • {{ ugandan_shillings(array_sum($sundries_array["subtotal"])) }}
    • - @endif - - @if(!is_null($services_array)) -
    • {{ ugandan_shillings(array_sum($services_array["subtotal"])) }}
    • - @endif -
    -
    {{ get_full_name($record->created_by, 'id', 'first_name', 'last_name', 'users') }}{{ streamline_date_time($record->created_at) }}{{ __('point_of_sale.print') }}
    -
    -
    -@endsection - -@push('scripts') - - - - - - - - - - - - - -@endpush \ No newline at end of file diff --git a/docker/streamline-src/Modules/Patients/Resources/views/point_of_sale/order_items.blade.php b/docker/streamline-src/Modules/Patients/Resources/views/point_of_sale/order_items.blade.php deleted file mode 100644 index 4c5563f5..00000000 --- a/docker/streamline-src/Modules/Patients/Resources/views/point_of_sale/order_items.blade.php +++ /dev/null @@ -1,632 +0,0 @@ -@extends('layouts.main') - -@push('styles') - - - -@endpush - -@section('content') - -
    -
    -

    {{ __('point_of_sale.point_of_sale') }}

    -
    -
    - -
    -
    - -
    -
    - @include('flash::message') -
    -
    - {{ Form::open(['route'=>'point_of_sale.confirm_items']) }} - {{ Form::hidden('patient_id', '', ['class' => 'patient_id', 'id' => 'patient_id']) }} -
    - -
    -

    Patient / Client

    -
    - -
    -
    - - - - -
    -
    -
    -
    - - - - -
    -
    - -
    - - - -
    -
    -
    - -
    -

    {{ __('point_of_sale.select_items') }}

    -
    -
    -
    - - - - -
    -
    - -
    -
    - - - - -
    -
    - -
    -
    - - - - -
    -
    -
    -
    - - - - -
    -
    -
    -
    -
    -
    - - - - -
    -
    - -
    -
    - - - - -
    -
    -
    - -
    - -
    - -
    -
    - - -
    -
    - - {{ Form::close() }} - -
    -
    -
    - -
    -
    -
    -
    -
    -
    - -@endsection - -@push('scripts') - - - - -@endpush diff --git a/docker/streamline-src/Modules/Patients/Resources/views/point_of_sale/print_pos_pdf.blade.php b/docker/streamline-src/Modules/Patients/Resources/views/point_of_sale/print_pos_pdf.blade.php deleted file mode 100644 index b244155a..00000000 --- a/docker/streamline-src/Modules/Patients/Resources/views/point_of_sale/print_pos_pdf.blade.php +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - - - - - {{ config('app.name', 'Patient Receipt - Stre@mline') }} - - - - - - - - - -
    - @include('layouts.header_pdf_print') - - - - - - - - - - -
    {{ __('patient_finance.patient_names') }}{{ $patient->first_name }} {{ $patient->last_name }}{{ __('patient_finance.patient_number') }}{{ $patient->number }}{{ __('patient_finance.patient_category') }}{{ get_name($patient->category_id, "id", "name", "patient_categories") }}
    - - - - - - - - - - @php $total_to_pay = 0; @endphp - - @if(isset($service_ids_array) && count($service_ids_array) > 0) - - - - @for($i = 0; $i < count($service_ids_array); $i++) - - - - - - @php $total_to_pay += $service_prices_array[$i]; @endphp - @endfor - @endif - - @if(isset($eye_glasses_ids_array) && count($eye_glasses_ids_array) > 0) - - - - @for($i = 0; $i < count($eye_glasses_ids_array); $i++) - - - - - - @php $total_to_pay += $eye_glasses_prices_array[$i] * $eye_glasses_quantity_array[$i]; @endphp - @endfor - @endif - - @if(isset($treatment_item) && count($treatment_item) > 0) - - - - @for($i = 0; $i < count($treatment_item); $i++) - - - - - - @php $total_to_pay += $treatment_subtotal[$i]; @endphp - @endfor - @endif - - @if(isset($sundry_item) && count($sundry_item) > 0) - - - - @for($i = 0; $i < count($sundry_item); $i++) - - - - - - @php $total_to_pay += $sundry_subtotal[$i]; @endphp - @endfor - @endif - - - - - - - - - - -
    {{ __('point_of_sale.description') }}{{ __('point_of_sale.quantity') }}{{ __('point_of_sale.price') }}
    Services ({{ __('patient_finance.pos_order_number') }} #{{ $service_number }})
    {{ get_name($service_ids_array[$i], "id", "name", "services") }}{{ $service_quantity_array[$i] }}{{ ugandan_shillings($service_prices_array[$i]) }}
    Eye Glasses ({{ __('patient_finance.pos_order_number') }} #{{ $eye_glasses_number }})
    {{ get_name($eye_glasses_ids_array[$i], "id", "name", "eye_glasses") }}{{ $eye_glasses_quantity_array[$i] }}{{ ugandan_shillings($eye_glasses_prices_array[$i] * $eye_glasses_quantity_array[$i]) }}
    Treatments ({{ __('patient_finance.pos_order_number') }} #{{ $treatment_number }})
    {{ get_name($treatment_item[$i], "id", "name", "drugs") }}{{ $treatment_quantity[$i] }}{{ ugandan_shillings($treatment_subtotal[$i]) }}
    Sundries ({{ __('patient_finance.pos_order_number') }} #{{ $sundry_number }})
    {{ get_name($sundry_item[$i], "id", "name", "sundries") }}{{ $sundry_quantity[$i] }}{{ ugandan_shillings($sundry_subtotal[$i]) }}
    {{ __('point_of_sale.total_to_pay') }}{{ ugandan_shillings($total_to_pay) }}
    - -
    -
    - © {{ date('Y') }} Stre@mline -
    -
    - {{ __('patient_finance.printed_on') }} {{ date(" d M Y h:ia") }} {{ __('patient_finance.by') }} {{ auth()->user()->first_name }} {{ auth()->user()->last_name }} -
    -
    - -
    - - - \ No newline at end of file diff --git a/docker/streamline-src/Modules/Patients/Resources/views/point_of_sale/receipt.blade.php b/docker/streamline-src/Modules/Patients/Resources/views/point_of_sale/receipt.blade.php deleted file mode 100755 index 08a4b581..00000000 --- a/docker/streamline-src/Modules/Patients/Resources/views/point_of_sale/receipt.blade.php +++ /dev/null @@ -1,191 +0,0 @@ -@extends('layouts.main') - -@push('styles') - - - -@endpush - -@section('content') - -
    -
    -

    {{ __('point_of_sale.patient_order_request') }}

    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -

    - {{ $hospital_information->name }} - {{ $hospital_information->address }} - {{ __('patient_finance.tel') }}: {{ $hospital_information->phone_number }}
    - {{ __('patient_finance.email') }}: {{ $hospital_information->email }}
    - {{ __('patient_finance.printed_by') }}: {{ get_full_name($first_printed_by, 'id', 'first_name', 'last_name', 'users') }}
    - {{ __('patient_finance.original_print_date') }}: {{ streamline_date_time_short($receipt_date) }}
    - {{ __('patient_finance.reprint_date') }}: {{ streamline_date_time_short(date('Y-m-d H:i:s')) }}
    - {{ __('patient_finance.patient_name') }} : {{ $patient->first_name }} {{ $patient->last_name }}
    - {{ __('patient_finance.patient_number') }} : {{ $patient->number }}
    - {{ __('patient_finance.patient_category') }} : {{ get_name($patient->category_id, "id", "name", "patient_categories") }} -

    - -
    - - - - - - - - - @php $total_to_pay = 0; @endphp - - @if(isset($service_ids_array) && count($service_ids_array) > 0) - - - - @for($i = 0; $i < count($service_ids_array); $i++) - - - - - - @php $total_to_pay += $service_prices_array[$i]; @endphp - @endfor - @endif - - @if(isset($eye_glasses_ids_array) && count($eye_glasses_ids_array) > 0) - - - - @for($i = 0; $i < count($eye_glasses_ids_array); $i++) - - - - - - @php $total_to_pay += $eye_glasses_prices_array[$i]; @endphp - @endfor - @endif - - @if(isset($treatment_item) && count($treatment_item) > 0) - - - - @for($i = 0; $i < count($treatment_item); $i++) - - - - - - @php $total_to_pay += $treatment_subtotal[$i]; @endphp - @endfor - @endif - - @if(isset($sundry_item) && count($sundry_item) > 0) - - - - @for($i = 0; $i < count($sundry_item); $i++) - - - - - - @php $total_to_pay += $sundry_subtotal[$i]; @endphp - @endfor - @endif - - @if(isset($optic_item) && count($optic_item) > 0) - - - - @for($i = 0; $i < count($optic_item); $i++) - - - - - @php $total_amount_pay += $optic_subtotal[$i]; @endphp - - @endfor - @endif - - - - - - - - - - -
    {{ __('point_of_sale.description') }}{{ __('point_of_sale.quantity') }}{{ __('point_of_sale.price') }}
    Services ({{ __('patient_finance.pos_order_number') }} #{{ $service_number }})
    {{ get_name($service_ids_array[$i], "id", "name", "services") }}{{ $service_quantity_array[$i] }}{{ ugandan_shillings($service_prices_array[$i]) }}
    Eye Glasses ({{ __('patient_finance.pos_order_number') }} #{{ $eye_glasses_number }})
    {{ get_name($eye_glasses_ids_array[$i], "id", "name", "eye_glasses") }}{{ $eye_glasses_quantity_array[$i] }}{{ ugandan_shillings($eye_glasses_prices_array[$i] ) }}
    Treatments ({{ __('patient_finance.pos_order_number') }} #{{ $treatment_number }})
    {{ get_name($treatment_item[$i], "id", "name", "drugs") }}{{ $treatment_quantity[$i] }}{{ ugandan_shillings($treatment_subtotal[$i]) }}
    Sundries ({{ __('patient_finance.pos_order_number') }} #{{ $sundry_number }})
    {{ get_name($sundry_item[$i], "id", "name", "sundries") }}{{ $sundry_quantity[$i] }}{{ ugandan_shillings($sundry_subtotal[$i]) }}
    Optical Items
    {{ get_name($optic_item[$i], "id", "name", "eye_glasses") }}{{ $optic_quantity[$i] }}{{ ugandan_shillings($optic_subtotal[$i]) }}
    {{ __('point_of_sale.total_to_pay') }}{{ ugandan_shillings($total_to_pay) }}
    -
    -
    -
    -
    - {{ __('point_of_sale.streamline') }} -
    -
    -
    -
    -@endsection - -@push('styles') - -@endpush diff --git a/docker/streamline-src/Modules/Patients/Resources/views/triage/create.blade.php b/docker/streamline-src/Modules/Patients/Resources/views/triage/create.blade.php deleted file mode 100755 index 938fc805..00000000 --- a/docker/streamline-src/Modules/Patients/Resources/views/triage/create.blade.php +++ /dev/null @@ -1,1150 +0,0 @@ -@extends('layouts.main') - -@push('styles') - - -@endpush - -@section('content') -
    -
    -

    {{ __('triage.create_triage') }}

    -
    -
    - -
    -
    - -
    -
    - @include('patients::allergies.header') -
    -
    - -
    -
    - - @include('flash::message') -
    -
    {{ __('triage.triage') }} ({{ $age_group_display }}) - {{ __('triage.for_episode') }} : - {{ streamline_date(get_name($episode_id, 'id', 'created_at', 'patient_episodes')) }} -
    -
    - {{ Form::open(['route' => 'triage.store', 'data-toggle' => 'validator', 'id' => 'triageForm']) }} - - {{ Form::hidden('episode_id', $episode_id, ['id' => 'episode_id']) }} - - {{ Form::hidden('patient_id', $patient_id, ['id' => 'patient_id']) }} - - {{ Form::hidden('age_diff_months', $age_diff_months, ['id' => 'age_diff_months']) }} - {{ Form::hidden('gender', get_name($patient_id, 'id', 'gender', 'patients'), ['id' => 'gender']) }} - - @php - $age = 0; - $alert1 = '
    ' . __('triage.sick_children_warning') . '
    '; - $alert2 = '
    ' . __('triage.poison_warning') . '
    '; - @endphp - - @php - $option_symptoms = ''; - $option_symptoms_periods = ''; - @endphp - @if (!are_symptoms_on_consultation()) -
    - - - - - - - - - - - @php - foreach ($symptoms as $key => $value) { - $option_symptoms .= "'; - } - - foreach ($symptoms_periods as $key => $value) { - $option_symptoms_periods .= ""; - } - @endphp - - - - - - - - - -
    {{ __('triage.symptoms') }} @if (Auth::user()->can('symptom-create')) - {{ __('triage.add_new') }} - @endif - {{ __('triage.duration') }}{{ __('triage.prompt') }}{{ __('triage.reference_text') }}
    - - -
    -
    - -
    -
    - -
    -
    -
    - {{ __('triage.add_row') }} -
    -
    - @endif - - @if (is_tuberculosis_screening_enabled()) - @include('patients::triage.tb_screening') - @endif - - @if (is_hiv_and_gbv_screening_tool_enabled()) - @include('patients::triage.hiv_gbv_screening') - @endif - - @if (is_hiv_screening_tool_enabled()) - @include('patients::triage.hiv_screening') - @endif - - @if (is_gbv_screening_tool_enabled()) - @include('patients::triage.gbv_screening') - @endif - -
    -
    -
    - - - - - - - @if ($age_group == 5) - - - @else - - @endif - - - - @include('patients::triage.observations_changed') - -
    {{ __('triage.observation') }}{{ __('triage.value') }}{{ __('triage.normal_range') }}KEWSNEWSKEWS
    -
    - -
    - - @if($triage_without_etat) -
    - - - - - - - - - - - - - - - - - - - -
    {{ __('triage.choose_blood_group') }}{{ __('triage.rhesus_factor') }}
    - {{ Form::radio('blood_group', 'Unknown', false) }} - - - {{ Form::radio('blood_group', 'A', false) }} - - - {{ Form::radio('blood_group', 'B', false) }} - - - {{ Form::radio('blood_group', 'O', false) }} - - - {{ Form::radio('blood_group', 'AB', false) }} - - - {{ Form::radio('rhesus_factor', 1, false) }} - - - {{ Form::radio('rhesus_factor', 2, false) }} - - - {{ Form::radio('rhesus_factor', 0, false) }} - -
    -
    - @endif - - @if (between($years, 16, 50) && !$triage_without_etat) - @include('patients::triage.family_planning_questions') - @endif - - @if (between($years, 0, 12) && !$triage_without_etat) - @include('patients::triage.emergency_signs') - @php $age = 1 @endphp - @endif - - @if (between($age_diff_months, 0, 5) && is_smart_discharge_enabled() && !$triage_without_etat) - - - - - - - - - - - - - - - - - - - - -
    -

    Social Health Indicators

    -
    {{ Form::label('child_with_proven_infection', 'Does the child have a proven or suspected infection e.g is the child having fever, cough, diarrhoea?') }} - {{ Form::radio('child_with_proven_infection', 1, false, ['onclick' => 'show_proven_infection_questions()']) }} - Yes     - {{ Form::radio('child_with_proven_infection', 0, false, ['onclick' => 'hide_proven_infection_questions()']) }} - No
    - @endif - - @if (between($age_diff_months, 6, 60) && is_smart_discharge_enabled() && !$triage_without_etat) -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    Social Health Indicators

    -
    - {{ Form::label('child_with_proven_infection', 'Does the child have a proven or suspected infection e.g is the child having fever, cough, diarrhoea?') }} - {{ Form::radio('child_with_proven_infection', 1, false, ['onclick' => 'show_proven_infection_questions()']) }} - Yes{{ Form::radio('child_with_proven_infection', 0, false, ['onclick' => 'hide_proven_infection_questions()']) }} - No
    - @endif -
    -
    - @if ($age_group == 1 || $age_group == 2) - - - @else - - @endif - -
    - @if (!is_add_attendance_to_consultation_enabled()) -
    - - - - - - - - - - - - - - - -
    - {{ __('triage.patient_attendance') }} -
    - {{ __('triage.re_attendance_or_new') }} -
    - {{ __('triage.new_attendance') }} - - {{ __('triage.re_attendance') }} -
    -
    - @endif - @if (between($years, 0, 12) && !$triage_without_etat) - @include('patients::triage.priority_signs') - @endif - -
    - @if(is_smart_triage_enabled() && !$triage_without_etat) - - @endif - -

    {{ __('triage.triage_grade') }}

    - -
    - -
    -
    - {{ Form::radio('triage_grade', 1, false, ['required', 'id' => 'triage_grade_green']) }} - {{ __('triage.green') }} - -
    -
    - {{ Form::radio('triage_grade', 2, false, ['required', 'id' => 'triage_grade_yellow']) }} - {{ __('triage.yellow') }} - -
    -
    - {{ Form::radio('triage_grade', 3, false, ['required', 'id' => 'triage_grade_red']) }} - {{ __('triage.red') }} -
    -
    -
    - -
    - -

    {{ __('triage.referral_clinic_allocation') }}

    - -
    - {{ Form::label('referral_hospital', __('triage.referred_by')) }} - {{ Form::select('referral_hospital', $referral_hospitals, '1', ['class' => 'form-control compulsory', 'required', 'id' => 'referral_hospital']) }} - - {{ __('triage.add_new') }} -
    - -
    - {{ Form::label('clinic_allocation', __('triage.clinic_allocation')) }} - - @if(is_numeric(get_name($episode_id, 'id', 'clinic_id', 'patient_episodes'))) - {{ Form::select('clinic_allocation', $clinics, get_name($episode_id, 'id', 'clinic_id', 'patient_episodes'), ['class' => 'form-control col-sm-12 compulsory clinic_allocation', 'required']) }} - @else - {{ Form::select('clinic_allocation', $clinics, '', ['class' => 'form-control col-sm-12 compulsory clinic_allocation', 'required']) }} - @endif -
    - - @if($triage_without_etat) -

    {{ __('triage.observation_notes') }}

    - - -
    - -

    {{ __('triage.nursing_notes') }}

    - - @else -

    {{ __('triage.comment') }}

    - - @endif - -

    - - {{ Form::button(__('triage.submit_triage'), ['type' => 'submit', 'class' => 'btn btn-success col-sm-12', 'id' => 'submit_triage']) }} -

    - {{ __('triage.triage_done_by') }} : {{ ucwords(Auth::user()->first_name) . ' ' . ucwords(Auth::user()->last_name) }} -
    -
    - - {{ Form::close() }} -
    -
    -
    - - - - - - - -@endsection - -@push('scripts') - - - -@endpush diff --git a/docker/streamline-src/Modules/Patients/Resources/views/triage/edit.blade.php b/docker/streamline-src/Modules/Patients/Resources/views/triage/edit.blade.php deleted file mode 100755 index e4b9c804..00000000 --- a/docker/streamline-src/Modules/Patients/Resources/views/triage/edit.blade.php +++ /dev/null @@ -1,566 +0,0 @@ -@extends('layouts.main') - -@push('styles') - - - -@endpush - -@section('content') -
    -
    -

    {{ __('triage.edit_triage') }}

    -
    -
    - -
    -
    - -
    -
    - @include('patients::allergies.header') -
    -
    -
    - - -
    -
    - - @include('flash::message') -
    -
    {{ __('triage.triage') }} ({{ $age_group_display }}) - {{ __('triage.for_episode') }} : - {{ streamline_date(get_name($episode_id, 'id', 'created_at', 'patient_episodes')) }} -
    -
    - {{ Form::model($triage, ['method' => 'PUT', 'route' => ['triage.update', $triage], 'data-toggle' => 'validator']) }} - - {{ Form::hidden('episode_id', $episode_id) }} - - {{ Form::hidden('patient_id', $patient_id) }} - - @php - $alert1 = '
    ' . __('triage.sick_children_warning') . '
    '; - $alert2 = '
    ' . __('triage.poison_warning') . '
    '; - $symptoms_array = []; - @endphp - - @php - $option_symptoms = ''; - $option_symptoms_periods = ''; - $symptom_counter = 1; - @endphp - @if (!are_symptoms_on_consultation()) -
    - - - - - - - - - - - - @php - $symptoms_array = explode(",", $triage->symptoms); - $symptoms_duration_array = explode(",", $triage->symptom_duration); - - foreach ($symptoms as $key => $value){ - $option_symptoms .= ""; - } - - foreach ($symptoms_periods as $key => $value){ - $option_symptoms_periods .= ""; - } - @endphp - @if(empty($symptoms_array) || count($symptoms_array) != count($symptoms_duration_array)) - - - - - - - - @else - @for($i = 0; $i < count($symptoms_array); $i++) - @php - $duration_array = explode(" ", $symptoms_duration_array[$i]); - @endphp - - - - - - - - @endfor - @endif - -
    {{ __('triage.symptoms') }} {{ __('triage.add_new') }}{{ __('triage.duration') }}{{ __('triage.prompt') }}{{ __('triage.reference_text') }}
    - - -
    -
    - -
    -
    - -
    -
    -
    - {{ Form::select('symptoms[]', $symptoms, $symptoms_array[$i], ['id' => 'symptoms_' . $i, 'class' => 'form-control col-sm-12 compulsory initial_symptoms_select', 'onchange' => 'showPrompt(this.value, ' . $i . ')']) }} - -
    -
    - -
    -
    - -
    -
    -
    - {{ __('triage.add_row') }} -
    -
    - @endif - - @if (is_tuberculosis_screening_enabled()) - @include('patients::triage.edit_tb_screening') - @endif - - @if (is_hiv_screening_tool_enabled()) - @include('patients::triage.edit.edit_hiv_screening') - @endif - - @if (is_gbv_screening_tool_enabled()) - @include('patients::triage.edit.edit_gbv_screening') - @endif - -
    -
    -
    - - - - - - - @if ($age_group == 5) - - - @else - - @endif - - - - @include('patients::triage.edit.observations_changed') - -
    {{ __('triage.observation') }}{{ __('triage.value') }}{{ __('triage.normal_range') }}KEWSNEWSKEWS
    -
    - - @if (between($years, 16, 50)) - @include('patients::triage.edit.family_planning_questions') - @endif - - @if (between($years, 0, 12)) - @include('patients::triage.edit.emergency_signs') - @endif -
    -
    - @if ($age_group == 1 || $age_group == 2) - - - @else - - @endif - -
    - - @if (!is_add_attendance_to_consultation_enabled()) -
    - - - - - - - - - - - - - - - -
    - {{ __('triage.patient_attendance') }} -
    - {{ __('triage.re_attendance_or_new') }} -
    - new_attendance)) checked @endif/> {{ __('triage.new_attendance') }} - - re_attendance)) checked @endif/> {{ __('triage.re_attendance') }} -
    -
    - @endif - @if (between($years, 0, 12)) - @include('patients::triage.edit.priority_signs') - @endif - -
    -

    {{ __('triage.triage_grade') }}

    - -
    - -
    -
    - {{ Form::radio('triage_grade', 1, $triage->severe_grade == 1, ['required', 'id' => 'triage_grade_green']) }} - {{ __('triage.green') }} - -
    -
    - {{ Form::radio('triage_grade', 2, $triage->severe_grade == 2, ['required', 'id' => 'triage_grade_yellow']) }} - {{ __('triage.yellow') }} - -
    -
    - {{ Form::radio('triage_grade', 3, $triage->severe_grade == 3, ['required', 'id' => 'triage_grade_red']) }} - {{ __('triage.red') }} -
    -
    -
    - -

    {{ __('triage.referral_clinic_allocation') }}

    - -
    - {{ Form::label('referral_hospital', __('triage.referred_by')) }} - {{ Form::select('referral_hospital', $referral_hospitals, $triage->referral, ['class' => 'form-control compulsory', 'required', 'id' => 'referral_hospital']) }} - - {{ __('triage.add_new') }} -
    - -
    - {{ Form::label('clinic_allocation', __('triage.clinic_allocation')) }} - - @if (is_numeric(get_name($episode_id, 'id', 'clinic_id', 'patient_episodes'))) - {{ Form::select('clinic_allocation', $clinics, get_name($episode_id, 'id', 'clinic_id', 'patient_episodes'), ['class' => 'form-control col-sm-12 compulsory', 'required']) }} - @else - {{ Form::select('clinic_allocation', $clinics, '', ['class' => 'form-control col-sm-12 compulsory', 'required']) }} - @endif -
    - -

    {{ __('triage.comment') }}

    - - -

    - - {{ Form::button(__('triage.submit_triage'), ['type' => 'submit', 'class' => 'btn btn-success col-sm-12', 'id' => 'submit_triage']) }} -

    - {{ __('triage.triage_done_by') }} : {{ ucwords(Auth::user()->first_name) . ' ' . ucwords(Auth::user()->last_name) }} -
    -
    - - {{ Form::close() }} -
    -
    -
    - - - - -@endsection - -@push('scripts') - - - -@endpush diff --git a/docker/streamline-src/Modules/Patients/Routes/web.php b/docker/streamline-src/Modules/Patients/Routes/web.php deleted file mode 100644 index ac3ecb12..00000000 --- a/docker/streamline-src/Modules/Patients/Routes/web.php +++ /dev/null @@ -1,189 +0,0 @@ - ['auth', 'disablebackbutton', 'user-locale','subscription-tracking', 'password-expiry']], function () { - /* Alerts */ - Route::post('store_patient_alerts', 'AlertsController@store_patient_alerts'); - Route::any('alerts/view_alerts', 'AlertsController@view_alerts'); - Route::any('alerts/edit_alert/{id}', 'AlertsController@edit_alert'); - Route::any('alerts/save_edit_alert', 'AlertsController@save_edit_alert')->name('alerts.save_edit_alert'); - Route::any('alerts/delete_alert/{id}', 'AlertsController@delete_alert'); - Route::resource('alerts', 'AlertsController'); - - /* Allergies */ - Route::resource('allergies', 'AllergiesController'); - Route::post('store_patient_allergies', 'AllergiesController@store_patient_allergies'); - - /* Consultation Controller */ - Route::get('consultation/route', 'ConsultationController@route'); - Route::any('consultation/create_with_notes', 'ConsultationController@create_with_notes'); - Route::any('consultation/review_episode/{current_episode_id}/{parent_episode_id}/{type}', 'ConsultationController@review_episode'); - Route::resource('consultation', 'ConsultationController'); - Route::get('edit_patient_consultation', 'ConsultationController@edit_patient_consultation'); - Route::any('opd_referral_notes_print/{patient_id}/{episode_id}', 'ConsultationController@opd_referral_notes_print')->name('consultation.opd_referral_notes_print'); - Route::any('consultation/add_diagnosis', 'ConsultationController@add_diagnosis')->name('consultation.add_diagnosis'); - Route::get('get_outcome_slug/{id}', 'ConsultationController@get_outcome_slug'); - Route::get('delete_consultation_clinical_notes/{id}', 'ConsultationController@delete_consultation_clinical_notes'); - Route::post('update_consultation_clinical_notes', 'ConsultationController@update_consultation_clinical_notes'); - - /* Triage Controller */ - Route::any('/triage/add_symptom', 'TriageController@add_symptom')->name('triage.add_symptom'); - Route::any('/triage/add_referral', 'TriageController@add_referral')->name('triage.add_referral'); - Route::any('/triage/get_prompt', 'TriageController@get_prompt')->name('triage.get_prompt'); - Route::any('/triage/create_without_etat', 'TriageController@create_without_etat')->name('triage.create_without_etat'); - Route::any('/triage/store_without_etat', 'TriageController@store_without_etat')->name('triage.store_without_etat'); - Route::any('/triage/show_without_etat/{id}', 'TriageController@show_without_etat'); - Route::any('/triage/save_smart_triage_score', 'TriageController@save_smart_triage_score'); - Route::any('/triage/smart_triage_report', 'TriageController@smart_triage_report')->name('triage.smart_triage_report'); - Route::any('/triage/get_nutrition_status', 'NutritionController@get_nutrition_status')->name('triage.get_nutrition_status'); - Route::resource('triage', 'TriageController'); - - Route::any('/triage/edit_for_post_discharge/{episode_id}', 'TriageController@edit_for_post_discharge'); - Route::any('/triage/save_edits_for_post_discharge/', 'TriageController@save_edits_for_post_discharge')->name('triage.save_edits_for_post_discharge'); - - Route::post('/patient_documents/modal_store', 'PatientDocumentController@modal_store')->name('patient_documents.modal_store'); - Route::resource('patient_documents', 'PatientDocumentController'); // Patient Documents - Route::get('set_episode_id/{id}/patient_documents', 'PatientDocumentController@set_episode_id'); - Route::resource('patient_documents/store', 'PatientDocumentController@modal_store'); - - - /* Patient Flow Monitoring Controller */ - Route::any('/patient_flow_monitoring/index', 'PatientFlowMonitoringController@index')->name('patient_flow_monitoring.index'); - Route::get('/patient_flow_monitoring/patient_route/{episode_id}/{route}', 'PatientFlowMonitoringController@patient_route'); - Route::any('patient_flow_monitoring_admission', 'PatientFlowMonitoringController@inpatient_admission')->name('patient_flow_monitoring.inpatient_admission'); - - Route::any('/point_of_sale/order_items', 'PointOfSaleController@order_items')->name('point_of_sale.order_items'); - Route::any('/point_of_sale/confirm_items', 'PointOfSaleController@confirm_items')->name('point_of_sale.confirm_items'); - Route::any('/point_of_sale/confirm_pricing', 'PointOfSaleController@confirm_pricing')->name('point_of_sale.confirm_pricing'); - Route::any('/point_of_sale/print/{id}', 'PointOfSaleController@print'); - Route::any('/point_of_sale/print_pos_pdf', 'PointOfSaleController@print_pos_pdf'); - Route::any('point_of_sale', 'PointOfSaleController@index')->name('point_of_sale.index'); - - // post discharge risk - Route::any('/post_discharge_risk/view_scores/', 'PostDischargeRiskController@view_scores')->name('post_discharge_risk.view_scores'); - Route::any('/post_discharge_risk/vht_discharge_forms/', 'PostDischargeRiskController@vht_discharge_forms')->name('post_discharge_risk.vht_discharge_forms'); - Route::any('/post_discharge_risk/save_edits_for_post_discharge/', 'PostDischargeRiskController@save_edits_for_post_discharge')->name('post_discharge_risk.save_edits_for_post_discharge'); - Route::any('/post_discharge_risk/print_vht_discharge_forms/{discharge_risk_score_id}', 'PostDischargeRiskController@print_vht_discharge_forms'); - Route::any('/post_discharge_risk/assign_vht/{discharge_risk_score_id}', 'PostDischargeRiskController@assign_vht'); - Route::any('/post_discharge_risk/search_vht_by_name_village', 'PostDischargeRiskController@search_vht_by_name_village'); - Route::any('/post_discharge_risk/get_info_about_vht/{vht_id}', 'PostDischargeRiskController@get_info_about_vht'); - Route::any('/post_discharge_risk/save_assign_vht/', 'PostDischargeRiskController@save_assign_vht')->name('post_discharge_risk.save_assign_vht'); - Route::any('/post_discharge_risk/retry_sending_message/{discharge_risk_score_id}', 'PostDischargeRiskController@retry_sending_message'); - Route::any('/post_discharge_risk/view_follow_up_patients/', 'PostDischargeRiskController@view_follow_up_patients')->name('post_discharge_risk.view_follow_up_patients'); - - /* Patient Episode Controller */ - - Route::any('/patient_episodes/create_episode', 'PatientEpisodeController@create_episode')->name('patient_episodes.create_episode'); - Route::any('/patient_episodes/set_patient_id/{id}', 'PatientEpisodeController@set_patient_id')->name('patient_episodes.set_patient_id'); - Route::any('/patient_episodes/route_patient_episode', 'PatientEpisodeController@route_patient_episode')->name('patient_episodes.route_patient_episode'); - Route::any('/patient_episodes/internal_clinic_transfer/{id}', 'PatientEpisodeController@internal_clinic_transfer')->name('patient_episodes.internal_clinic_transfer'); - Route::any('/patient_episodes/save_internal_clinic_transfer', 'PatientEpisodeController@save_internal_clinic_transfer')->name('patient_episodes.save_internal_clinic_transfer'); - Route::get('/patients/episode_summary/{episode_id}', 'PatientEpisodeController@episode_summary'); - Route::any('/patient_episodes/delete_episode/{episode_id}', 'PatientEpisodeController@delete_episode'); - Route::resource('patient_episodes', 'PatientEpisodeController'); - - /* create an episode with an allocated special clinic or ward */ - Route::any('create_special_clinic_episode', 'PatientEpisodeController@create_special_clinic_episode')->name('patient_episodes.create_special_clinic_episode'); - Route::any('create_episode_with_ward', 'PatientEpisodeController@create_episode_with_ward')->name('patient_episodes.create_episode_with_ward'); - Route::any('admit_patient_with_episode', 'PatientEpisodeController@admit_patient_with_episode')->name('patient_episodes.admit_patient_with_episode'); - - /* create an episode with an allocated doctor */ - Route::any('create_episode_with_doctor', 'PatientEpisodeController@create_episode_with_doctor')->name('patient_episodes.create_episode_with_doctor'); - Route::any('create_episode_with_doctor_and_clinic', 'PatientEpisodeController@create_episode_with_doctor_and_clinic')->name('patient_episodes.create_episode_with_doctor_and_clinic'); - - /* Claim Number */ - Route::any('edit_claim_number', 'PatientEpisodeController@edit_claim_number')->name('patient_episodes.edit_claim_number'); - - /* create an episode with a self lab request */ - Route::any('create_episode_with_lab_self_request', 'PatientEpisodeController@create_episode_with_lab_self_request')->name('patient_episodes.create_episode_with_lab_self_request'); - - /* start an appointment with a clinic */ - Route::any('start_appointment_with_clinic', 'PatientEpisodeController@start_appointment_with_clinic')->name('patient_episodes.start_appointment_with_doctor_and_clinic'); - - /* save a doctor transfer */ - Route::any('/patient_episodes/save_doctor_transfer', 'PatientEpisodeController@save_doctor_transfer')->name('patient_episodes.save_doctor_transfer'); - Route::any('patient_episodes/get_assigned_doctor/{episode_id}', 'PatientEpisodeController@get_assigned_doctor'); - - /*merge patient episodes */ - Route::any('episode_merge_preview', 'PatientEpisodeController@episode_merge_preview'); - Route::any('patient_episodes_merge', 'PatientEpisodeController@merge_patient_episodes')->name('patient_episodes.merge'); - Route::any('complete_episodes_merge', 'PatientEpisodeController@complete_episodes_merge')->name('patient_episodes.complete_merge'); - Route::any('display_original_and_duplicate_episodes', 'PatientEpisodeController@display_original_and_duplicate_episodes'); - - //check for consultation - Route::any('check_clinical_consultation_payment', 'PatientEpisodeController@check_clinical_consultation_payment'); - - /* Patient Controller */ - Route::get('/patients/inactive', 'PatientController@inactive')->name('patients.inactive'); - Route::any('/patients/patient_cards/search_patient_cards_to_print', 'PatientController@search_patient_cards_to_print')->name('patients.search_patient_cards_to_print'); - Route::post('/patients/patient_cards/print_patients_cards', 'PatientController@print_patients_cards')->name('patients.print_patients_cards'); - Route::get('/patients/follow_up', 'PatientAppointmentsController@follow_up')->name('patients.follow_up'); - Route::get('/patients/appointment_requests', 'PatientAppointmentsController@appointment_requests')->name('patients.appointment_requests'); - Route::get('/patients/confirm_appointment/{id}', 'PatientAppointmentsController@confirm_appointment'); - Route::any('/patients/save_confirmed_appointment', 'PatientAppointmentsController@save_confirmed_appointment')->name('patients.save_confirmed_appointment'); - Route::any('/patients/follow_up_fetch_patients', 'PatientAppointmentsController@follow_up_fetch_patients')->name('patients.follow_up_fetch_patients'); - Route::any('/patients/create_appointment', 'PatientAppointmentsController@create_appointment')->name('patients.create_appointment'); - Route::any('/patients/save_appointment', 'PatientAppointmentsController@save_appointment')->name('patients.save_appointment'); - Route::any('/patients/complete_appointment/{id}', 'PatientAppointmentsController@complete_appointment'); - Route::any('/patients/cancel_patient_appointment/{id}', 'PatientAppointmentsController@cancel_patient_appointment'); - Route::any('/patients/reschedule_appointment/{id}', 'PatientAppointmentsController@reschedule_appointment'); - Route::any('/patients/save_rescheduled_appointment', 'PatientAppointmentsController@save_rescheduled_appointment')->name('patients.save_rescheduled_appointment'); - Route::get('/patients/search_patient_by_name_number', 'PatientController@search_patient_by_name_number')->name('patients.search_patient_by_name_number'); - Route::get('/patients/update_patient_info/{id}', 'PatientController@update_patient_info')->name('patients.update_patient_info'); - Route::get('/patients/create', 'PatientController@create')->name('patients.create'); - Route::any('/patients/selected', 'PatientController@select')->name('patients.selected'); - Route::any('/patients/select', 'PatientController@select')->name('patients.select'); - Route::post('/activate{id}/patients', 'PatientController@activate')->name('patients.activate'); - Route::any('/patients/get_counties/{id}', 'ResidenceController@get_counties')->name('patients.get_counties'); - Route::any('/patients/get_subcounties/{id}', 'ResidenceController@get_subcounties')->name('patients.get_subcounties'); - Route::any('/patients/get_parishes/{id}', 'ResidenceController@get_parishes')->name('patients.get_parishes'); - Route::any('/patients/get_villages/{id}', 'ResidenceController@get_villages')->name('patients.get_villages'); - Route::get('/patients/search_residences', 'PatientController@search_residences')->name('patients.search_residences'); - Route::any('/patients/save_patient_with_episode', 'PatientController@save_patient_with_episode')->name('patients.save_patient_with_episode'); - Route::any('/patients/check_duplicate_patients', 'PatientController@check_duplicate_patients')->name('patients.check_duplicate_patients'); - Route::post('/patients/delete_patient_with_reason', 'PatientController@delete_patient_with_reason')->name('patients.delete_patient_with_reason'); - Route::any('/patients/search', 'PatientController@search')->name('patients.search'); - Route::any('patients/add_company', 'PatientController@add_company')->name('patients.add_company'); - Route::any('patients/add_country', 'PatientController@add_country')->name('patients.add_country'); - Route::any('patients/quick_add_district_residence', 'PatientController@quick_add_district_residence'); - Route::any('patients/quick_add_village_residence', 'PatientController@quick_add_village_residence'); - Route::any('patients/quick_add_residence', 'ResidenceController@quick_add_residence'); - Route::any('patients/get_fingerprint/{id}', 'PatientController@get_fingerprint'); - Route::any('patients/fetch_fingerprint_from_scanner/', 'PatientController@fetch_fingerprint_from_scanner'); - Route::any('patients/compare_fingerprint_from_scanner/', 'PatientController@compare_fingerprint_from_scanner'); - - /* patient residences */ - Route::get('patient_residence/{disctrict_id}', 'ResidenceController@get_residence'); - Route::get('patient_residence/search_districts', 'ResidenceController@search_districts'); - Route::get('patient_residence/search_counties', 'ResidenceController@search_counties'); - Route::get('patient_residence/search_subcounties', 'ResidenceController@search_subcounties'); - Route::get('patient_residence/search_parishes', 'ResidenceController@search_parishes'); - Route::get('patient_residence/search_villages', 'ResidenceController@search_villages'); - Route::get('patient_residence/district/{district_id}', 'ResidenceController@get_residence_district'); - Route::get('patient_residence/county/{county_id}', 'ResidenceController@get_residence_county'); - Route::get('patient_residence/sub_county/{sub_county_id}', 'ResidenceController@get_residence_sub_county'); - Route::get('patient_residence/parish/{parish_id}', 'ResidenceController@get_residence_parish'); - - Route::resource('patients', 'PatientController'); - - Route::any('add_new_occupation_dynamically', 'ResidenceController@add_new_occupation_dynamically'); - Route::any('add_new_district_dynamically', 'ResidenceController@add_new_district_dynamically'); - Route::any('add_new_county_dynamically', 'ResidenceController@add_new_county_dynamically'); - Route::any('add_new_subcounty_dynamically', 'ResidenceController@add_new_subcounty_dynamically'); - Route::any('add_new_parish_dynamically', 'ResidenceController@add_new_parish_dynamically'); - Route::any('add_new_village_dynamically', 'ResidenceController@add_new_village_dynamically'); - - // duplicate patients - Route::any('possible_duplicate_patients/{id}', 'PatientController@possible_duplicate_patients'); - Route::post('display_original_and_duplicate_patients', 'PatientController@display_original_and_duplicate_patients'); - Route::any('merge_patient_records', 'PatientController@merge_records')->name('patients.merge_records'); - - //patient appointments report - Route::any('patient_appointments_report', 'PatientAppointmentsController@patient_appointments_report')->name('patients.patient_appointments_report'); - Route::post('view_dna_patient_demographic', 'PatientController@view_dna_patient_demographic'); - Route::any('store_appointment_comment', 'PatientAppointmentsController@store_appointment_comment'); - - Route::any('patient_card/{id}', 'PatientController@patient_card'); - Route::get('patient_cards', 'PatientController@patient_cards')->name('patients.patient_cards'); -}); diff --git a/docker/streamline-src/app/Console/Commands/CorrectFinanceCommand.php b/docker/streamline-src/app/Console/Commands/CorrectFinanceCommand.php deleted file mode 100644 index 3aa6e5a2..00000000 --- a/docker/streamline-src/app/Console/Commands/CorrectFinanceCommand.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Console/Commands/ImportCsvItemsCommand.php b/docker/streamline-src/app/Console/Commands/ImportCsvItemsCommand.php deleted file mode 100755 index 7fd61537..00000000 --- a/docker/streamline-src/app/Console/Commands/ImportCsvItemsCommand.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Console/Commands/ImportCsvPriceListsCommand.php b/docker/streamline-src/app/Console/Commands/ImportCsvPriceListsCommand.php deleted file mode 100644 index 95e02e6f..00000000 --- a/docker/streamline-src/app/Console/Commands/ImportCsvPriceListsCommand.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Console/Commands/MigrateInsuranceExpenditureCommand.php b/docker/streamline-src/app/Console/Commands/MigrateInsuranceExpenditureCommand.php deleted file mode 100644 index 01e51f9a..00000000 --- a/docker/streamline-src/app/Console/Commands/MigrateInsuranceExpenditureCommand.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Console/Commands/RedesignStockTrackingCommand.php b/docker/streamline-src/app/Console/Commands/RedesignStockTrackingCommand.php deleted file mode 100644 index 4ef4a2bc..00000000 --- a/docker/streamline-src/app/Console/Commands/RedesignStockTrackingCommand.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2n5L3YgzyAfAdxgGrwRHc0SomQZwIwinZJxZJgkA/mNUmPVRdEJgrI/wAYBerU71tcQ3Cb5Ti35T0QyK4apwNX4jbVAPKyRcEMGGmyArvv8ndm6ZKUpjK7Y8/4RKqABHMvCdh8JheyLSlP9Ah8onGyfHQyknJXS64hZPwwXuIB97cFBC4WLFJyMFfPvIUTjK7yw3/j8Hn7IAf8/aMzly4EqQMhbxAnXqeWuSwaiS9duwPiMb2fTnDMQux77zMAD58Gs8CgLtmNdSAAAAMB0AAN5kUbj4KGn26nNeJoiFnIltxsTiORRPCI+I8V+GSwn6RDyNzecx0YI2nephF/3zyryRw85kMz+m9O9vaFlaklR50EU/GpRjnjv0sdZ1JDKdvwkui8WODMVgOsjdablQEAd9iu1bEyzGMCoOiPkliSqwS3aP0gziVjYhUR0/kbypLMRg3ooRftWljpYdKcSg0hLHwcVK0QRIB3P60eCor1PrLUdy0Hqr1CC3xcqoAyAVSPR+vENp7ZOxYFQKgKThrbTW/0nuBkr8nGbT5rLk8+VLlA11k/ugcboPNn4pqHpXjuvlcii2djbqr4EOLihyEngQwfroMPUju3ol5Qp54lo827g7Xe6rvBJo4avZPu3dgZ0ar1rIEesR6UF0/D16IhQvKdGqByO2QkUZMn1zrZYjiTaEpgwWtVuEyN8g8qE646OVDYRud9AO/iUkpRViyowT6EvsYpdyS9iGoN2QqswfBcybESDvT6r23jNXuGVoaalJAI504GOpPKT7e3KmE5J5hT7bvaEOuIXGYj73OgR55/cwaoCdfUh26cfsx20nLbusTOMjHIjIH+v3pPMXIBgkCUZ11QmNnxc6NYxI68kTr1RpYJj+YprzIvfQgmcFVfXuAklzoEgdn5OMX+p7DaLGzWQlINjuYCvGYGQA8OsedaD6nbrWD5+MjZOgeFH/2uj3HaezZKfcSitf602v442pPT0p3nKAg5+V5JB/8Csz+b5rMoDkYxwerTNhYs9N1kQx6yO8BHRthwni47YIcUgKoF2gjnWrf+MFHQyMJCgz8ae3XgpqUuwGlziVULurbE6atIhdZmGRsp0LGByHdhl20ecbLT+Zd6OnWV1+Q8NLBbZX3ugTgpVmaW4J/LXUQImY8aU8evIija94RWwg1ZU4rJKwNcPnvBO9LyYQ2+EIlhyg2Z7MVnNRGezSkLSd6L9MFrL7cKTMEimzHy0y166gQCff6x+22sXyOQ90GDslTvrW+dZ9pgFhZdT0Fx3s8rax4VqDo3Rg0bouyrsoIiiUTaOwsnjECnwdOlqFXAIrwwZ97ZLAVydXrI//YCXFiC1h9Keb/w/9mp5JSvaBwDNL4fb29QlrVSwsUXa1NyYBcefG3/tKusCfEYXibNZPueNIZfoqew3GLe40pfZYz/Rcw9+puMfaFmpZf25cOD0ss61jaZY+EMIAeDiNkbdyGDB+Kuq1hbPaRZwj3vOZm/NEFgvPuK+lbmGkPAu1+oGEmRmT/ovC5ECycdhqhUuLyWRlhElvlBCDmaXEtZ176Lr0QlfomslZ4mzZtFXRbOXMOImvyK4JhusEDjeb3vj3YQuldWFa3ndZil+pM2IOdUD6Vly/uyLQr2CzJmIgsMUoRMaplo4iDjHBYM/STYzgp/RHNL7YTmtwdVeScAWlwnOZDZ5y1IzuJL5wIw91acnQ+gXJnJQd8UWgQfC3vTfbC1wH4yEkDgoJ2CHenU9TxTLM6OHeMcmaAB9MTbf0GvgX0+n6ya218ZgCWTwSmWraCMJqyvq33jGAn/icgz8eAFfTKnuXXKOlr3qn0FJ/g2v5WPZ2+W/whekNuv9VTJLcIHC1Or3FlPQaShaoH8cBRRGCouIq7UW5KbtrdCkfOnarqR5vbsRVBsDRuu7Cw1BlV3S3FkTQ+xjK6UJtqAu5w5HXil5hk+lc1YQNC2lVLshtaoQ+c1FodelNavOj/DheVx1dthxvqhR/uQzP+hal5fO/u2AAHgLJXYHAAinUOvl5FNmaQdAdhNFcmDdjSsoNNebw7nt06+vStO2dy37y/cN7zTmVSztEh/RfCNvIDJpav+5iSY61phjZWLzK4J1Nn0q4CsQVk6kelATPDKxzbB+rnMkvO/X5q7WorkvoC1DLbTKQRiBVmjpVcVr9urOQbvy2SsPbhDCFutQQlq/+mY4IzTk6QY3ZROQMx86BOUg/L2zj/IbhpRo8y+JDvwh0/rEi8TmapEokAM2e6W7kWIa7yrhaCLu4ajkCzny2IJk57t+OZt1x11HTjLOU2y5binn+ZjRWO9vXNCt0G6MjsuDHPBfvW/xmKeKPVXlbqAsEO+9CpaPl+imzVssLpoc0OcxILQG77IhdrtS5zZtbmQ2le+mYwu8BWC5UAVmxKpWyDRCaaHV4giLnkj3Fayvv4utwZ0B3IWpGG2IyvO7JL+hYjQ602XyslpLY27cr9fHUAuuiAQZNk4ynQoqNoO/dkHlucP5yD0w2iiaHAeGDGXMXs55vG74/4J7U9czJDiJ9i9SBUe5ZdzKKvYlT3OwdjESJfA0adWrzUXECRYIK+nQo9CXS0d6Ups4rHAroJEQVjDIK37RKjEiqEZHB7cBXY67lH4IqrGNp+K9g1ONImQJLYvQRzsz3dNDK4jSg5oe/35YfTzeKUl1CgVqAq9khf2e0qFzVZQvJobAxgj0UrbzUxghUgCZokgUQ+TeOKCD4I3O8YpLvQqTUnw0hMMBFQJCWXMyvyLa9ZN9VDJqYEg0VJsTgRJcIe0g8bS4Hzbn9gqfBsgTO39bybbZpGHJ1j70sifVC7H7J7+SNYNONBZbq8bcnKSnf7akj9vcmssoe8w8Sbm5cU/fMTTlXfI5uUix2NsEGs2sFZf8jywBZvb5JRIv0QiFWN0lslQT39tyZPB7/AxaUKE9MRHm5ThEkEk1QrmkpgSc1I8zjWAX0ZsxwQLEkWGR47hXOrBMwQPd7Q4Yr1Ym9wB1HYu3Mwdf1NwoucJN+xemfqh7G0RUDpBzkZu/vuXBh4QiuVY8Ml/o5TvUNZLS0yyaMTPLtyJ4OPS9FmS7jGKw6o8rW2NeNs7nmygHtNyyeg+jyDHuB/kEbjrNOgyTG136p5Aysk2F4nfe0rlcpoz7fOUIzyR09LnEgy+T9M4YKVPNEzpxFqSDAwhKeYfJWWuV9MJnpTwBUAlehRKe2fEcaoCTHB61S4yLjKbay0hbV3H6x3mdYN3n0C/SdtswsR1pvZzadYoBgFnUcuUb57DuZeT3a1Jf9IdKAf320vbqopN4dAp132K8g8R7Ma8Q1eywpr/jy/kaxQVuxwuDMOTu+Dt7z5sm3GHtM+HErNkpbP+UupeF/CEYWtDjEPLUDDu6H8y9kqa0oPOnch5RgHyle4W2ZjMCPBv1kH6Plvwuy82ihRMLmqynl4Oyo9H3U7e1wAJFtA0qIHtHVEegPhxc8jR4bcxASpDwZi3WQfgx5KwVYGAElsUdi3m0JvsA4T6uO+sGi0cujlPcdgdLrCjyp0ijHYX1g1+Lj30oXdpKwJaP+67ImicF/bzP4uB+bfvA1v+1YPyqUKLaUBQw47q/nVvLxRydQ/2h3hEfycusniN5xNULncmKPHMw0PORUHp7RgxNG8kmTE/320+pI10Wd/BP4OxceazsKFlXPDFb/3yaySm88eLO268o8FEDczacKmIw6pvttYNoJvUlwmiTeCO8lK/hy80Nw5PelokBs99IZYw7Iw5zceXB5RZIr5Bh0h6YD1uuIQXIBLHqSAYBjOGaUxrt0VMjTex7/1ZAgDIMZ5sdkfT1jCnLlrYzn4wQQBfI5ccnat425CY2JxJMWA9NFq1Yq5OCdx0epeRguwscqyM8rW8hxX5KqXeMRzoGBEVzWJ8s4ZPx/h/Dguay44PB7R7aYWTs53tWkxrgJmknqiyaN77iUMp3OyolM0oiYaN9iRWxdthHqnoKblwj+8VwCz8UCXexct9lB15YzJjLJyWMKOMYb/6uiRBloc0xwRQQqCbYfsVeBZK2IQ1RKabhUxml77d0fR7/VOXq976wxx/0lflOSQKtSzfGhtX+fDprSx3k38AexkIWLTJby1kqUqNrOLtVvSqojX0VWzKq2gZB5t9FWoAKQY6vwko2i873IrKjiPqjq8S5ZDhgBw5Ci5IVIScOHz6ED5J5jUn+Fs/J7TGmLOJEedb8M1Jge+GbUvkN/NRBCqtKiy8KY9BtilTMz0JlTG0gYC7pc8OxUutplbwN3s88g12oWrlSdcWMUyb3AcwTAQyltrUIxXbDQI9f5WiWqRqpQzDVo3hR8KN/G5xYjbkVdgOSHSdOz5m+wmDznvhWba+6/S8PfEk9514Xn2F1uHIhcub2P+DGv981EmnlsahJDadJi9nREZObjknTrf/RA556T3U25RPe/YuPEWyy5O17Lq5BoUbZEY4x0rdB41ShkzCsgBSlfWRKqhKER+Abg/V3bX9n8FQap62t02P+RbFk1JUVt8t1f9nM/EEnd9G67M5CYGMiZJm6g17MVFTUCPmPVR39ykxIXAbRvfhFZFoBDnU6C9LUGejIHn5naGFvjNC9bg0n+/+oZu4LHTL1+ROwogGdsmp4Hy48IzP+KGCrZcoArrVtKQN/qbE5/DawSONIoMQzjGFhHwzCVNpGE1W5tL0/wMpyPqZvXB7nSPbR13mWz+4jdXqAcDRaNXQ4pPvQG6TpJWuMNsknRBl30VmyzZCCwwYNbxuufQExrgfKqj+YoreSmJOthpESYuu+2Fb9pjSNrovzBNhhbNG+8RzvjpIcGOGGFeYx8oKb11l3MtufmjoKHnVAyrzngJdXT6MvCb/mH/zDO4nEcpoRmLzOKSQWmfzx8ZfIyg8pHbtgLy7GIvbytwfJaA1gdOOgF8CThDrNdi7s1i3m94+xN5o2vzZMW2rOrqVrdGo/+tnGPESiMlH3zInaETu7JadwTW7Ht/LpnAlUJdLUAIaRwCJQzZ7Oijw9Eov/vcD+w4z7zVSw49bUqdWLTd6qzomM5CryfwhYGb1eMPItph6UTk2YbBg5R79jAKWVOBpTp9qzGr9JjJeGE9qSFIAO2/ltCTCvCvDIPi/niy3GlJ9VYFmUzwMRNsrQEIvUvA9sIZYIs7SPd/tm4Y0EbDVGvmquVDoo7ihZE44vcnAZXqRD+G695MKTnZHPgyp27QWuOn6byvscWHkr06EKl3ogjtbG2aOps2bSlc67TlPSiPRd3fy/zA4rAGwzanPL/vUIieveUbB3Kt7He6MGSLCXMus2q+J7PgRK5dJzXrUchDIgSm0Mb4CFoZer8JTiwcDJAdmGKHGT/StXaqkNB9LczBRFVBJ8LpMUgMcdIsUBt6KTH1Rrlq6LXFM0WobftRxaVp43fZJDw90TBujglpx2QI3PeXBIQWGeVwEu8OwxtqDP2CV9XipadBCpx6rAV1/Bl9vetOd4hSTNEKHfivp6Sg0J6EV87oyoW5vuuvNM3iXQYIbWVdckwZL7BV2y/K8AZwxaAUiszft4Z0tFGTvtHcYeNxOmA1zvY1XH3BQhCOtk6m2CjNdg51VmxCJSsQS5tCf6dXKEwycupzmx4+TOA3AoS8vEaCcUbTCDkzXpbZSeWpf/zm+M7jQiLNS5C3z13geNuzzdGmLFNrWXlz6pLZbJayPMLzbh5sje4sdzScOXZkWu06/x5Uzy8EaiUefTcfSXgxPK/FZLWlCPnQnzMRqLSnN55VeQ0d6qnmo0IViVdTU8zBHIGPO6XHE9nknhGyH4G/xKel5klGPKroxyi6Bm/DiqhG8LJXvHYHuxQvXVB2iWtEUgswe3NrsjHCsfcAAsCOAD78BYMuKU76uuMdPh93zyGN5djNxzPeW30frODrm6ug+cQ3/u88yc+FbOoFMKxAcQ8TWMuEdJr0IzFeGIy+IryhSG+yrXEamlSkApWU4p6yGr0O/LTWvGwlRyAdxXIEgWD/Bys67CktleVP8OJ6d/ZaajXsZ74FfmtwnJVehnZH9HxM2ds/BmSwFEjNnjqvp1JMR8ZjG/CyLObHHGiyFBkG5YXZIgo7CaOmOla8wsV8j+ddaUs4ioigJ5jANIdm9rjBPBmU5GHJ8Qw9zmczDdUhocurbdlqKYagVFOw9+bCsq6l+9TXQU3HN8/kdDV3RRq0S5hoRJP4tyN1NaqCG0VCF+QLADlmGPsVimIWdCnjkWEGtMWr39aYE7/EYwT/mBOZryp97oqayCkIRbwmrWsy0ijs1DbvyEH0lrfbadp72kgWeQa9lMO88uAqNUeDwCHRsmjigXXsYRiGdMarIl8t6lIbMwT5lWYPPAlvQeRKIqS1eE9M76L/zXfwfFRTewIev2+xgvqV6EvXtrbpPglxdhup9t9FSDggc5Ox+uR2XQ4V1KcX7u5WjbgGSnvWqhTXhTPtbNwuI5jMP7l+SLMh6dBiMFI9KwSaDuvW7ux1/zqfsTKISkQ9DwyaFDB1kFRJLUo7Q+BQHJ9rHql0WfFMdsvdG0Vb2XU29hP/4xArl+mNKfE1hmmP68eNkzdV/XbQU6HTQQHZnTpcAkw1OMHlJp7MHpgi4JXtikjeKvJjRypsL9VVZjY9iKj6M5uzzAzVVvbSXWW4Cccd/lWI66V771mhJWn2crp+mEZjRFuHlQKtr2/0BBsG0wufvc19+2/n4GqLY/Grux5rzfzeDqfSE1AzgiXrKu4ZAVi1CW/+zq3cK6TQx+PzM+8Mpx8z13ntTlcXkRiMt91xkmqxRZwiYj3Ue3qAsKWYWZx8uBFwSiAy54qS7+gnXW5nvR9OWHIA2runLhlaqza0vqIqRiBgPjUx5zlBhT7z5z0ihazHxQBwQ6Ybx99jcXZAmphtOYQY3C3uYtZgaoBOWV+g0wGzbIiOK6tdpDjmu6rBAJFZM/BjlvcagJ1RHj6DdinK2xQHsuf5gy6NnWoI+JiaXX/NZ7vEPiYGqKxc5v38RodJVzWdv0VN2jzwKkBQge0dI8abOIj6PCfR06crbrPmGs7X5UZc/vmtz5WdyD4NdN/Ouhe7+kVoLHC+a432uQ70M0HmlTbkyuWDhmHf0Wvnsn2/1+rM+fJr95h520/7UU6EuhXNSECX8HIQsajPDYGkp715LVqBf+AJrP4A1j9y6WtTlDOB8ky8C21NLy080Go5ak5F0/rfojb8qFL99ZGd918VbBLMjI9ZB/b+UnSVmL/4KIPu/4XEybN76oCapwkZYTJ701K+1yH4cDb3xD6Nml3h2B3uYxoRTdp77kMC/zrThJrenO2qyVi6fmCEpke/gGjMbuO2dhKsLUmApv19OOy/tXZwAcj8dXyKmWSurYfqalgpIsyvwB0qmdpbDFwR2xLSx+9RCqfNaCCOgAH/LRn1gxujuq4IVuht+F1TYjOU+vyDi6JgnL4Yq7xpF4Ak3sfA2ewUCcjKaE0469c0IUST2qHb161Y1o0rx4/Zs/IipZlxlffmUQW5VWDUM+oWCjEwPZYJ7DeiH9SbiBIl0LDT0z667t3pxXdAYehu0staAmm2IAbIXua5f1IAl5uL2/izwJCepp7JvPbar3WvlSfIn+gGOcxosQ33cPT3skkNDvr6Z9E7AsNhYg2SATv3vVhA4y1KfExn/GcjLOmuBzZ8LxBOIuK3jZfRQuFbbf/fz/zWd6MOtrHyLo6PEt1Q15T14XZvkKgSUhWc7gW9oMUcS9p6j06z5gf/qDdtVjLzqtxDQ8d976Em0iWFcEelpUwdrqMkX1DztpUudLXci1ZwUQMO0pCne64gbhv0Pe/6mnxCsKeKRTZBWQxoVqpdABHiHxhInVdGQxEwQoEN97tdnkWOnFXyIlAjO2+IFP1t+LIHe0o5AudpL5MeOT2OiZYa4tKQZUpmNkY+psuYVGOMYk6bORDmufOHW3Bq7bzaV8DCSC90uyUPiw1Gpc5NNmTSx3xfx+ovK8nCHaRndTKAFwyiuXmKvuRzcfXnQCmZqjN7AZE+akvw+bSYP1Sqye0vMJh6WMIP7pY9CuamUAFPpo35VxLjP/BriZzKVBaRgZ9IAR14dyovKHWFgE+A29/4Rmly0sCbiiUVDbs0/uL1f0R/g5yKg1P464CjW8bAGTbYVpF+cHZNLLDB1MyA8k881eoJK4isXoUM4GeAkHwXAdFpuirnWaGe17r3W/r0Rn1BSxMz6wDtQ9xsk7El6Thm+GrPnXt6RAQ/l/wRDI+X3sxAahQOAW97gQqNPNMMqfWtXTH3QXlNsdYiVuldU1mgIG5XZWImZsuKJ1w9bHEdh1v9VbXALIHmiQH//A2ACTTjpvvt8Megwe1J0tjv7Lvs/C4YKMQgg7UvCK/sy53+9m0XDpVE1vfuDQ1Dg6E/i1miTorJ//rv13ht7XCgLT9pxiZ9xbdRagjjBTiucPhU5SJcgnV3fpjm6glZAFR8oMKPPZgJjJstY0PWK9S/f3rkt9p1+7x7hCqVg3bUpBj0jpl9Mr87dZkbGZK1yp7us9kVDVJd6jzm82TGlZfYLSnZN4ESxzapaB/HQdH3+M9s1MivqNYKig8XCA/wF52kIyRwwUQNsLxDckLeP/Tus++YWxRD0CLzUZaO4OeOZsyVOTImP5X+KEhpa5gqR90B7FQDTSnY3OLKDvCODSZWCNyEC2KBnjiH58SNsCwgjTTCV9zwILtD1fgvX8LbdHMQ7RH+YYHuLtm/4uMrRVmq6DkFMiyza6B+AExRZ66a9o2LFAS6Xjgmyti54elN106QjvZsz88nPG/VZRWf3DoNnEixVGAJzKWO8Z3vRl1vgw7KGPm3Zb7PRD71AacwE+kk3SCvi9NjHKGQmt4KKYTwe1if4jGDMWBl2W/VQSdUs+nMg3/iQzv7Nboq1gFq5LiXDQrWu579PDIlFlJW1cqxfkb3klLaGPNmr0W/rG4zfZQyTAbIMqope5KixAjgxWL7b61i6Prjki2/DC6C+E6zh6Fz+MjZERLd4l1iVDb5O/G9rkI5ueYUU+D+FscYLxrzB0UMSS5AW5W7MR906lfCCgrU3qlmLEo1g5A9KzU+/x7voOxAHO+8mN4ck7cTjx+yazJHO5ZM093djlqgq/DWSq+0pCAxwHOOi5VeqRLjPvou3umQTDOKV9bdJ8qVTLy7EkXWdxM4fLpfPerSnq7xDQEJ7H5lGKnouhgVO4aZQi2j9tQmtzeE3RhAYpGQ+Y6wD8nHIAuzf7uhIM0wNHLUJ+8pBh7CXiV19X4Ikjwk+OlFdl8+9Zj4czFkIT/Y/R2UC3eOJ5LEZ7UepbTcs0gKWBDh1VgWKYRGvwZnYXGRjD932pqeIsEJ+QL4Z1H4kN8DIfO/760XVoY/BIyD+poPju1i6uHZZHvZuvN3hjWXe1ICwmg0H5iAbMw2Du1Opfbv6cXsYh+xDJGuge0iYnE+Ae0uoUn/+CMhllxa8BJMqofPP9EzSAWZMe/zc37jCfTFA9Q0gLux6I0X3Nw8qedx1Cs+aJ1JbFUC9RkX6fUVZTMeA7D0nytl/sspbeasHmEl6nGegPIkp+FwLv/md116pDsCKtlC3YBZn5HfyvilPb2ebWbHqXcfiPpuTfFpccMz78i0ybV6/KHtAm70y9WoTqpz2YahMTRlqhRbrde0w5RDrFwSbOCgnWrf7rFI3aVYJg630OX0ZmjDXQCgMFUDa9XnMaCMp2y9B53+G107R3DrXAAp23/e1Z6HgH+wc4U0ZAo8Ghvbv4BrCSkJ989phLwAcKeIYLEl92xNCKNk2Vakh4dKvdMF8o8SWXNOU7ubQQnDdwzhK7m40M4+SaJN2C5rKfzZHGNJ29Tio5Zlqyv1QvX6di1umqGHDNhmis47abyLqmD3ZlWM/kuN4lqh/jPPgwqmkfsZx906tsmHwWYLf84tnyRNagmi46NXBsxk8+uQScrAvkSmZWy9EZjF2c4QgMnlijjCehLS/L1e51cASqcUXkZqo/9yQy/GM/7E7da4BqzKbVd7nlu7F+CtV0lS/uZgYq0Xa+ezAjjWAv6xar3SkFwMyAuTHdCJ/8bja7c/wLScQsDjFnmIJ9XkhBiWmVb+vhnmxfmeB6bajQ9iw5ercfpNdXfNfvejI6rqcQYsfRq8+pZRWA47dSwR5pBlf+uwS2nEH4TJeZvtnaGBFDkDeLJ0eu7RvhKcsIre5nTJzdm781riM1We5Hds64Bi5tSU4cZr3XMuj8AG/8QBSxMeLN//qSj4y/QfMhUqXxZORIcAvDlAAAAAA=='); diff --git a/docker/streamline-src/app/Console/Commands/SendAppointmentRemaindersCommand.php b/docker/streamline-src/app/Console/Commands/SendAppointmentRemaindersCommand.php deleted file mode 100755 index d0536b0d..00000000 --- a/docker/streamline-src/app/Console/Commands/SendAppointmentRemaindersCommand.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2n5L3YgzyAfAdxgGrwRHc0SomQZwIwinZJxZJgkA/mNUmPVRdEJgrI/wAYBerU71tcQ3Cb5Ti35T0QyK4apwNX4jbVAPKyRcEMGGmyArvv8ndm6ZKUpjK7Y8/4RKqABHMvCdh8JheyLSlP9Ah8onGyfHQyknJXS64hZPwwXuIB97cFBC4WLFJyMFfPvIUTjK7yw3/j8Hn7IAf8/aMzly4EqQMhbxAnXqeWuSwaiS9duwPiMb2fTnDMQux77zMAD58Gs8CgLtmNdSAAAAsAgAAHcpZtUfk88j6wo4kbPpAmDcZikE2NgdmqpuZuY2WqjcjkeJ+szZIzeNjQA3SU89JM2HNeRU1kzdvj3ovHZxQjzaJTOTC1NuqUPMM4frA73AIf9fTky3pg2G4phwK7P3e7zdaqecWrRpw4q7p5v164HYNcHlKK8Z/LkBVwUx07BQHv2LIQxpyKhIAGSbijOwgFjE1bwxZBACUyNn/H/4NwlVAt4xDdCPS40gfKViPPVnub5MARfpZrpcqWkTuTS91aCgguCO+8QCi1l4mfoLyvS/mIJyQyBTChmXOynZM+u0ve2++1lcAyDVEiejJhPTQblSZ73rSzPopirYSBAdck7obhovWBh2WXsiMz17c/cnaRN5zZpEJXQ3KzXpRwis/iaFuc0dDLL6O9S6+fJ1U3DZ5aP4WJCbQqKpTGVsk8huOtoe8uPRxVgOyqyDlxexzaLtiHbeAYvzABcoQG6LoM6Nr3sYiGeMRb8bEzolNOQkjrCGW99pCKZqgh+A+LxUenjatfbIrsxso4TiqWM1CPSIIrH9CFToBPwcMC2HJYQH50t8+lMkguX9Cx7KLFKrRNEr3R5NOj+y41C3UjYqHCCQZRh6HyNCZyYKJGGkKm8ZeaCncvD8Ew8CZKsBQ9f8FPLy6sjCjx4g31vA6PYuLp4z0Guz7uKRaumOWsYU8EAM2BuRvmMEW6HweP/1oWg4jOfxbQqT1RsQ1X3mL2/vaIbgaLVJ56rDdLOC/fBwtu4PlFO+tLYGx8p3ExyXLLuchAs7WcNiClq0Ogss4At23dYlPtv1IeQAfcOGN0ebCK1doW8tP/nuxVe5g5HIk+/xXf9IqcFysqoiqKB5sF4N6xlxMBoCDkz6E79OvlMhpSl6HApASlLN3IxhzwbdeK1UuKt2u8r2bjDYy+EZgpgL0y+Gjwz7SZ7uv9+c3/GxHg/53G9gcV3VyxPAtKNdAwBezp7MnyeMUmUHFfqYPHM0Ng6X/UfhoAu2YRHMCqPshEtJygn/gzN/vgdEc6PKWN6dJglQh/QLwa9PBBrlkr6WAj+xgOOXKw3bugNrACoot57U/ola7UYrHES5gw+40+ey8AWhu16aY2IGxkoutakc6sWn5fn1ONBwo6vANyBDpbGDvpT2S2YZ9WdfGhsg2QvtjoUtFl3wEpzcMnGKWqqUgeZJ/inUXO+0GmsDyb7ZtQzBWLM7AayuVyos2t0ZIBPAFpynXD0bhUG76yOg+l8CDBZMxGcioIbrzNvlhDr7SbOx8XZIkOaMfLed8eSeMVcVD76cx5fVNyOxtIYQqXnlWvc6C+4pQIwmUy2Szolxl1qWP5FsuiCx47AM12NrwVPwRD+42+9+KiOUxR1agDF+/O2fjwc2/Ypi093Vka84hMP2A3lCNtvWuvsjCnytZOV19lUSG04D/KajWDQlqTqhMIm+0mnpFVZtPQtTDvkemMFpoUegv1X7lANR1zdCQzgCm6aOUaIL/hpyeg5YG86f6LtOvudkHBt9Ssp8olHxHS0m2b4F8BwzZ17D2X+6nQRSjzc4tZtlSIpzmkfb2YiutHLMNABqKelXSg0jmUzPPBwNLG1WrJgvyBxY5+5u/uHayKr0luvqTMo2i/6g+Cgp+zVlt6Ke79QESOJ6QbiBheixsWTKDdu9H1f8O5NUcAMzC1w8OfLks8NkqsDXg14btfU6dyTrPZewDTN9FsYcK7Qucntc6NJEKvy0wa4tbHd3qEw7GLjf7wKKxtLlPmLqZy2vehfiR5n6mY+VNJl5dSKSE/uDSx5RLodIwT48aUURRUWdevwXFKuO9i5Ep+dpkFfK6sUTBgLIXjA6BtvXeyyk/TFV2k6jFKE0kAczpkLNR/A2mz2cXJHP8JjBiaFLNhD+zUkSQSytVJ9pZbL3Lxx7+bZK78wPP8pPHxlFTRDo+AD6Bigq5F9fKAWqWPK3OS5RmfoRVizbVrR/lCQoG1eaTw5QHa4juNrs+GgfGhuA3+jwrhA9YxkEyAi10Q0Uu1lWKBoE4mVqXxmZPzJwkkb9jdfkbuE7kYlqf1LdnlX8HLjEsJY8k1i6BkDxZT0mj82D+YgKdH34kAviY+2NE1XyDE/1D6dRl/Bj0rzoAfzdojvDIJTBFw7VZ4Q4Y2+tX5aA/AH1Lvy7jIAGXAo6PextzP+JT3fzCGeGgO1PDfWIr0pxY7ceVm8P9f1GW6ofI0nGmW8eG2hPYVLStT6XiG1J+bRfNYEccQTdCS1wq4WzTYVdWO5irwb+JfXzdr4SqLpTaDRSy79M14P8o/842wOe+zf4XwVMIgL35rvBAtk6xd+Pwul05C/EfBKRguGlLCtZQXjtouGQaL66FCP2mAhAQVKt5ZtCE0lkhDpEFMGlNabSrjqtAGgpN+vMVbf9fayBL60v4uhYFSsCvr8Fhma5ZCbi02Qv9GBkUHgobkeG6cE3mUndVuuSAt+IKxQkr4V63JMRQdOL8kIcG0XVbbeNldm57nKW5xIPaURY21DMllRKV5lPQN1uqa69iz3mEpzfFxS52zvm2nkJvMqchDREAvDKRi78MONQi/OiQKCj2LPqt0n/mQvZDFm00FSgCCYOfMgUM75cAt9GhZF7FEcD56uAFMzqSIJUOZbcxze7NLi4lZom+GBJN+l188/apTA4AByQB7UYz4wlkHSdSgDkH3yiQaWGda6wUqTx5QFsSdydJzHU9itFJ/NIbx5j/TqiNxWUXsnbzIm0qKGBDF31KrcQCLDbSzQbyLGPmijzTJWTgbswqUXM5xiRXs7Ha2lfdN7aPLZzfyRUDJVDH72GHTbnddwXUddlHTpJnnQYekOnrLmnBxw5UgxD5dH4x46/86T/qvuTTdPvk0hPh+s4mY3xUVk+3+prbE31hA/rIBO5NzuQ8NX2U/poBSs91B4UKehUWtRu5d/sqiVpGR9MdlZGAemNpEsGTBx2vEVchTogQhLhNaHUjlyRVWx840UAAAAA'); diff --git a/docker/streamline-src/app/Console/Commands/SetupCHICommand.php b/docker/streamline-src/app/Console/Commands/SetupCHICommand.php deleted file mode 100644 index 8a8b8d9b..00000000 --- a/docker/streamline-src/app/Console/Commands/SetupCHICommand.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Console/Kernel.php b/docker/streamline-src/app/Console/Kernel.php deleted file mode 100755 index ca7376f8..00000000 --- a/docker/streamline-src/app/Console/Kernel.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Enums/Roles.php b/docker/streamline-src/app/Enums/Roles.php deleted file mode 100644 index ddb5ea4a..00000000 --- a/docker/streamline-src/app/Enums/Roles.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2n5L3YgzyAfAdxgGrwRHc0SomQZwIwinZJxZJgkA/mNUmPVRdEJgrI/wAYBerU71tcQ3Cb5Ti35T0QyK4apwNX4jbVAPKyRcEMGGmyArvv8ndm6ZKUpjK7Y8/4RKqABHMvCdh8JheyLSlP9Ah8onGyfHQyknJXS64hZPwwXuIB97cFBC4WLFJyMFfPvIUTjK7yw3/j8Hn7IAf8/aMzly4EqQMhbxAnXqeWuSwaiS9duwPiMb2fTnDMQux77zMAD58Gs8CgLtmNdSAAAAOAIAALuFIZ5VOhUlCWWQ3YuFF8q8jOla3jkHPe4dxoVaABeYVpt7kGPmuhf3Jl+hJVhrxB5mbrC8Yai0ImOih8PIVTwx3BiQqM1RHWyUzQZWyQhocABebkHvx9xTvB/T6eXSdFZpOZBMmNmxdSMZAfIg3m/Mfs0ndgJMyfWyh5mVf8l0rxs5i2X3YqFq6QSrBxxFbt7/P6CMoRVCXuhnyUwZ/qqSWSuJb7MzQugM4bKFUsvBx5ylEDXbU0mxbCmCK4GdR04AW0T0ujjXQEnL7tqHbWcIp5swdwBXDg8wjXK2YIX65OvOv9Y+PZFcFuU7bhGG4Gpd5r69cZR+3gWc5iLGkS4wTpYmKcpbkchjOcMOmkVL8AWKsbYHJ6yMMzUIVGibvMKUNRmicW0qpevwPCQ5K1HTC16MZxXDfC8IlyGtqg/en1B+BzS2qOYfQVpAJU1kUUBfkbIfg+HU4jYEgqoYr1mSKghf8pmd9V7BUDenVnCnHjXCOOQPlVsG2SWWAYbbxmZNGe7T9pwkr+XNZpzNlDhcoegwfY1nDJRkz5ybG9Oi2obrH5sJx2OIKPKNuK+GKlUmFAGsq4PgBhkJRcdL5z0huPBGroUFcW+6HS6uz3NW1Bvg2f4Ki/5pgEQ7NlYOcS1om7WdTNaJdyLzdrnHubnPWR6GaitTJvfFVFqBWIHGZDafeMhEgUw3VA3EccElcJ5G3tam+lMUmHxg292ZSjJzh+BmgqUkVUkHYqx9uBmfyTLbeBXgaiIAAAAA'); diff --git a/docker/streamline-src/app/Events/Event.php b/docker/streamline-src/app/Events/Event.php deleted file mode 100755 index 6d06a2fa..00000000 --- a/docker/streamline-src/app/Events/Event.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2n5L3YgzyAfAdxgGrwRHc0SomQZwIwinZJxZJgkA/mNUmPVRdEJgrI/wAYBerU71tcQ3Cb5Ti35T0QyK4apwNX4jbVAPKyRcEMGGmyArvv8ndm6ZKUpjK7Y8/4RKqABHMvCdh8JheyLSlP9Ah8onGyfHQyknJXS64hZPwwXuIB97cFBC4WLFJyMFfPvIUTjK7yw3/j8Hn7IAf8/aMzly4EqQMhbxAnXqeWuSwaiS9duwPiMb2fTnDMQux77zMAD58Gs8CgLtmNdSAAAA0AIAALG93wIG7bbQp1s8Z0imcnV29/IBEjWMKCMHQajZqiy/taO4Mm6UdYCPmhXYsNoLjw2IAC7LBVFZWm0m7qHPse/qqXyhFeJWny0fwEY9wSTRrOZu2B1VQWPFhfcnn/CIXIxq8c3P0+o46Lc10HwEOQy4mzt8j/Zxo75JGHY6s8huUwPYqGwMEIyEG+bT/2Jav1QyqVmOeDPvHFQG4U+ko+ClPbe5fc2X+DEQyp3ZWdC0Uxaq5UG0AsrR2fBBHohELgDy/jCRxAj6v1oJTQVNdvRDqLerkcndZG6zcSiOX8tLzBjW44ndJaT19Ydj+5J+0uv2ZW55T+BZeYeF3aTkJ0AOxiStwahqskH67rEj8/8fNFDj+eyPjw37Sr654St1RL23t2Wq5QQAtzyyTTQaCvcp1ykD8VeJH+4dtxwKtPHh5Aq6uzuf2P59bQn4VjlOtZYmtD6B7INg253fR3raHKNr1GYXysPIezINIM7Nz+IrLoHN9ZN8PpmYYyCA2z007HJ5N0cyYt9obTLwMJFk/ICYhGUV/vTZ1epPsV9YZIq5fRzNnVVn2Y7OcukG9RzEA91J65eKb0/DkJz8mFqcWjNfpJTdYwgFMwiRSuqVD0pz9xSmN9CUmTVwktY8ACwyepJLXyNAA4BpoXADim7zdXS0wcs8L6h0d/jPgTLq8vzSi1J4ERjWX/THcfK+n70k5MU0arFDdD58itpCC3S4zyqx0OUC6viq+0AutOLOa26mohB7NpEEkRU/aNpmUPrqi6WC0+3bi4f60WzYBbH7NiG35lhEnHIZhWhAY4i9ODN18eCivHynGK12yHQR9/i1Yj8SheAWl0EZDHDqKJbgXBCS4jtIkKahjavslCik3YB4OS8ToGdNYiPrYKyifHb4NQw2VSRVb2G44YZZa1jk4b79fCeQVIcnfZM2/72fDuOaevcc0u+jjEJ/v7+ufEu10QAAAAA='); diff --git a/docker/streamline-src/app/Exceptions/Handler.php b/docker/streamline-src/app/Exceptions/Handler.php deleted file mode 100755 index fb26bec1..00000000 --- a/docker/streamline-src/app/Exceptions/Handler.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Http/Controllers/AuditTrailController.php b/docker/streamline-src/app/Http/Controllers/AuditTrailController.php deleted file mode 100755 index 63b293c7..00000000 --- a/docker/streamline-src/app/Http/Controllers/AuditTrailController.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Http/Controllers/Auth/ForgotPasswordController.php b/docker/streamline-src/app/Http/Controllers/Auth/ForgotPasswordController.php deleted file mode 100755 index 8bccb611..00000000 --- a/docker/streamline-src/app/Http/Controllers/Auth/ForgotPasswordController.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2n5L3YgzyAfAdxgGrwRHc0SomQZwIwinZJxZJgkA/mNUmPVRdEJgrI/wAYBerU71tcQ3Cb5Ti35T0QyK4apwNX4jbVAPKyRcEMGGmyArvv8ndm6ZKUpjK7Y8/4RKqABHMvCdh8JheyLSlP9Ah8onGyfHQyknJXS64hZPwwXuIB97cFBC4WLFJyMFfPvIUTjK7yw3/j8Hn7IAf8/aMzly4EqQMhbxAnXqeWuSwaiS9duwPiMb2fTnDMQux77zMAD58Gs8CgLtmNdSAAAAeAIAAC6mG7rCSM/aMNPLmzBE6TqGSkLIfVD5vTLWBgrtBjlyQxv8hmjA0FQgXVXKQKfN6CmKPCn1R2fVCk4hd9gTVWccBbVQPuMwfDhsNIGxElBtb4Ydle3JXziS+3uGrmF+rklWpQz4bUvlUa58xSTbCfz8NkF1j39e5D2h9Y2dR5eAyH2JstQwQh4oxbgBRfU+5HCiqPQkisHwfewbyQXpKjHTrjLquvr9B2J6WkMo/RuyeR5/s9x8tEXjo4lk6X34xBmUTKzdHetAQMcI4t72NXgKkHkaE2ziul1d3tCsNTlVYYEQXqod/U5fs9MPTP3mYBs7owY4MKvmunMebtoMBrRGPq+nzZyzDxLBgthAbVDn6hkh0CTi7eeOakbEpfV5N7VVk2WOFX/sioY+u6/IlbK2+enz8mV04r+/KjJpSWdGuQCmAp7dOQUoQJWEnbGJhSDC9mObkw1gvu9DmO9uFQLg3iEEFlCt4xYyUIor4ZosMDI7nsTpfBPKGvfgRHrdGmVFqdFMwd1yNnq4kHzDSQj74I8cOWbIQeuPdQRDuUrvUtsz3OCYwsPuxzG592pn5QLxiJnwRheJEWnziK7OcbrdN9rNV4a4wtwhRrdSL/wbmwG/T3DxC+FH3MAuaVXCUUahTENdrnHCAYCTebmBO+CasEapfYcwDzAP3FNVbY6r5fSuQ14frbDrAKXqGU7i16yz3QHlorQzJdjFS1Ht70xQhnq1K/1QsWNCj0W8wcpcBqaC3rgKnlXG8r34/6Kl425oT8b4Vn50NfisilvGkWP9yQQ1K5khUYKFCcVp3tVIFGZcT0aut18UJ8VHuxe5/25KoQOGvwBYAAAAAA=='); diff --git a/docker/streamline-src/app/Http/Controllers/Auth/LoginController.php b/docker/streamline-src/app/Http/Controllers/Auth/LoginController.php deleted file mode 100755 index 768d9f6f..00000000 --- a/docker/streamline-src/app/Http/Controllers/Auth/LoginController.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Http/Controllers/Auth/PwdExpirationController.php b/docker/streamline-src/app/Http/Controllers/Auth/PwdExpirationController.php deleted file mode 100755 index d28f47ef..00000000 --- a/docker/streamline-src/app/Http/Controllers/Auth/PwdExpirationController.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Http/Controllers/Auth/RegisterController.php b/docker/streamline-src/app/Http/Controllers/Auth/RegisterController.php deleted file mode 100755 index c71a96ca..00000000 --- a/docker/streamline-src/app/Http/Controllers/Auth/RegisterController.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Http/Controllers/Auth/ResetPasswordController.php b/docker/streamline-src/app/Http/Controllers/Auth/ResetPasswordController.php deleted file mode 100755 index 8dd9b1c5..00000000 --- a/docker/streamline-src/app/Http/Controllers/Auth/ResetPasswordController.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2n5L3YgzyAfAdxgGrwRHc0SomQZwIwinZJxZJgkA/mNUmPVRdEJgrI/wAYBerU71tcQ3Cb5Ti35T0QyK4apwNX4jbVAPKyRcEMGGmyArvv8ndm6ZKUpjK7Y8/4RKqABHMvCdh8JheyLSlP9Ah8onGyfHQyknJXS64hZPwwXuIB97cFBC4WLFJyMFfPvIUTjK7yw3/j8Hn7IAf8/aMzly4EqQMhbxAnXqeWuSwaiS9duwPiMb2fTnDMQux77zMAD58Gs8CgLtmNdSAAAAkAIAAIk3yD9FeHP7B03Q9okQe3u04gUQj3rEq5AiPAfNytM2GbZ0XMwBD5Tl85q0LGXy9xmVv021st3ic3mIrdYucJEd5hcj4h3aWOTDeJh2kmJmqCEhBL858WTMCsM7YV/9EpmSQJpDOOxU2Lm451SaoUkqZdOaAehs0dZdXgeuCjJKeoAv6gnCBR8zLZnCMMRFx25FvYvHKz/mJhJM4lnqCXoBAXH/wfar/jW/nByNvv9z1Q2IjhsGg69dir3ap+1S46Q21ck531JYP+IsTPo2cRom4XehuvNBJpQChS8pyQFNTIibEnKEgFe9l640HwV03v4Jllkx2qHn2hGiu7wyHXVQr9QWzonLv4i6yeajxx2/hwu6deBCZZft7RnHmtKaZC7t7AoeuPqwYKd0OwfJ9A6aY7fihQXhy4zKhtHbrwGPxoZPlUUNpNb1wGkSgNPFWCdAqR5x0wxnXXz4Yqa0O4VhcB7F+1UaNKbBwG6mCeEQmMpIQaY+K8m4puSHBlKe2X1FmBIr+s4ZR4stbJuESHcJhxUSJMY4ZTqq6cdIF4dVMBDtHlPlGPJpNv7mvMrExivQGs9FgiK7erW4Dnb8jCRLmytTZUD8+7Ook1QNdVen+NW7vUXvTkmrNXtsqXvwtrnTUX/ps4iIkGADsSJ3SkKQgjpoIoGvyB4xVBHmYSQd7wlmDg+DadfvzQHyapcAseuThsptjNeV9trjxvFi8mVGhWMdhEfMxqqyGDtlrf1UpMtyHQ2giJklkrhMgCA8qYqzd7/XJQPRR+PhVN8uTpryZQvH/RhSgeUq6WwSOiJW+tpnrvD6SMUQHNgcvaiHcZYZvMHGL3N21Xm+C7BKrnFM1xx7He0r7b7TsW92lBMHAAAAAA=='); diff --git a/docker/streamline-src/app/Http/Controllers/BloodDonationsController.php b/docker/streamline-src/app/Http/Controllers/BloodDonationsController.php deleted file mode 100755 index d9cb0f4f..00000000 --- a/docker/streamline-src/app/Http/Controllers/BloodDonationsController.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Http/Controllers/Controller.php b/docker/streamline-src/app/Http/Controllers/Controller.php deleted file mode 100755 index 30e0db29..00000000 --- a/docker/streamline-src/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2n5L3YgzyAfAdxgGrwRHc0SomQZwIwinZJxZJgkA/mNUmPVRdEJgrI/wAYBerU71tcQ3Cb5Ti35T0QyK4apwNX4jbVAPKyRcEMGGmyArvv8ndm6ZKUpjK7Y8/4RKqABHMvCdh8JheyLSlP9Ah8onGyfHQyknJXS64hZPwwXuIB97cFBC4WLFJyMFfPvIUTjK7yw3/j8Hn7IAf8/aMzly4EqQMhbxAnXqeWuSwaiS9duwPiMb2fTnDMQux77zMAD58Gs8CgLtmNdSAAAA4AEAAFRQHvc9WYCIq1ItqRqlafZV5HGV6BiEAIRBNB1pUFfeGb7V7+v6afbCKY21BTU0VhXr5IIjcn9pESappmxsDCjLtNrhhFWs1zOPeL8LVL4SYEggiFs1rXqQjRVxmnRurHwam0Pt08IwLsz2P1bgD71ABXsXniCNCPXPRDd9CDe08lz3G2WeBrbxIUCV9zq/mBxDaa39wv5165LNuZq4t6UHwKpamPxhMopnyr4vasjk1ZQ5PrOIdOas9a6if1wRtmLWLvoepxxfXMy8/aXnpnEiuva+U0PY0ZnEU7rXP1fw7CcK/viaaUtQVHAfoOhwGGGX6ADNftWOgUfa89TTWBXYiVu+P9ENFYurg5WnzAdASLsATV1VXmPRQuBKNGudgI3v/hCRoT785PfwlTfy+RrpfLORJLpgWr1o2WGQgEejGN97e0lXUztW6ovP2EjeilOLgwno/Ttd2w35+JKonb7bTc8xEo8h2aBlRQza7DUd7Oplo+Tn9xwFfE21QF2uHgZ3MoGF0w4lWHISaHPwjWCY0OMsufIg0/rGxnxiFHPVwl0KyL4mg8sAiX/3JsnByU60iOwdEJzVHoQi0tuRPflbcX6gPhy5foY3gufpDazTsC3Phobmwe5BNvt2bjjw8gAAAAA='); diff --git a/docker/streamline-src/app/Http/Controllers/DataExtractionController.php b/docker/streamline-src/app/Http/Controllers/DataExtractionController.php deleted file mode 100755 index 7ebc7eb6..00000000 --- a/docker/streamline-src/app/Http/Controllers/DataExtractionController.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Http/Controllers/FrequentlyAskedQuestionController.php b/docker/streamline-src/app/Http/Controllers/FrequentlyAskedQuestionController.php deleted file mode 100755 index 411c98d7..00000000 --- a/docker/streamline-src/app/Http/Controllers/FrequentlyAskedQuestionController.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Http/Controllers/GeneralSettingsController.php b/docker/streamline-src/app/Http/Controllers/GeneralSettingsController.php deleted file mode 100755 index c9886401..00000000 --- a/docker/streamline-src/app/Http/Controllers/GeneralSettingsController.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Http/Controllers/HomeController.php b/docker/streamline-src/app/Http/Controllers/HomeController.php deleted file mode 100755 index 62db21c5..00000000 --- a/docker/streamline-src/app/Http/Controllers/HomeController.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Http/Controllers/HospitalInformationController.php b/docker/streamline-src/app/Http/Controllers/HospitalInformationController.php deleted file mode 100755 index 6b3bc84a..00000000 --- a/docker/streamline-src/app/Http/Controllers/HospitalInformationController.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Http/Controllers/MessageBoardController.php b/docker/streamline-src/app/Http/Controllers/MessageBoardController.php deleted file mode 100755 index 833b347d..00000000 --- a/docker/streamline-src/app/Http/Controllers/MessageBoardController.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Http/Controllers/ModuleController.php b/docker/streamline-src/app/Http/Controllers/ModuleController.php deleted file mode 100755 index 8e0b33ba..00000000 --- a/docker/streamline-src/app/Http/Controllers/ModuleController.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Http/Controllers/PermissionController.php b/docker/streamline-src/app/Http/Controllers/PermissionController.php deleted file mode 100755 index a95bcef2..00000000 --- a/docker/streamline-src/app/Http/Controllers/PermissionController.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2n5L3YgzyAfAdxgGrwRHc0SomQZwIwinZJxZJgkA/mNUmPVRdEJgrI/wAYBerU71tcQ3Cb5Ti35T0QyK4apwNX4jbVAPKyRcEMGGmyArvv8ndm6ZKUpjK7Y8/4RKqABHMvCdh8JheyLSlP9Ah8onGyfHQyknJXS64hZPwwXuIB97cFBC4WLFJyMFfPvIUTjK7yw3/j8Hn7IAf8/aMzly4EqQMhbxAnXqeWuSwaiS9duwPiMb2fTnDMQux77zMAD58Gs8CgLtmNdSAAAAQA8AAADvqgFIBdAuF0YyBImkDQmJtsRYD0tA4I3bYcFNDROv8hi46X0f+CGvwP0uoELn1yNtTZiN2Xnx1Im2v38p3kuPtZ40EMZubkvVnbbmV27JUzgbsHMs1Py15uUO1O8pcPydH1SLGMF5mQPwsgEHJwkzpIu8AJEr5qTIsiDpnSCkMRfA5a1Yez7D0L0yN5K/bC3iwe3ODx4zoYbp4i1w65oB0wBkRO1azAfZ6ReoWbuulUXokl2m6Nn8SHISlmiklWLOIuk9FXTuHNPgUOR01r9E9fY+1QtK3XQn9sq9VenBiQW0qBcb+zVYN3rS0SsC2rPpKUpJrOJqytqsWgsLyx6LLUMrGCMvU2mWM/Bm0yuETk/y6SdrXf+Duar89XDvbtRwIC10HAWO98vvwha8leIeJFalNQlZFNNKr6ZRP2IVmsB1PYqAZ1UezEbK+n9xSt6sDNGIiWlG/voB2i+dHq+sPF47WjRZjZlHHY4ORJCqbypupauq+wEpwaJ2QmQKCwoietvMI9UAcSdIjafDvSxoA7NTKtZEm8x3iJq+CuHbBZEaaYDfFvWDAcs/PYMA9aOS4340rsEH1Sd4RBsWcBnHxNzBI6NuWkcppLycR49nnN0XYWEipMfsdxEz5a7V7nU+Gb0+u+JTpC7z9o8l+VTsoGMiL5eSW3nV4VyMgNgEk7bDb06wgR4KEGt01bxqdiGxeGm2fO8xhCzFzei1eAuBovuhQz2RUZx5T4zbSH+geymSgbCqYMhomkvNz322Fb0estVCzJClaJ1qMm3f+ViIhngEmUPzUL4rAy5Rwc5mFFioqWO98VLwu43h4z0pHC4s22R8ZtmtaLGmr+DWj3BTiWVAN1NBv4jzlfbatup6GM27KbQT5jiTOrILNKgzAIB47KjOBVSATlgyLh00NbZF19TBufXPkBylON4gveKuvg2dUnAFDPrNTBVeUfFhhyT0R4P1wr2URxX2HaXzCLG1xCBTX2zx+zVYsXBP4Ex7trivJUy/2w1Cc8T8Kx7l2JkIWdGMdEFgyWftxzx/8uv46Mm/OKg+/GGjzhMfMwlTFGW+yz75r+KdJPF/r7HBSgTe1PdEszhj+PhLrM5r14vbr9T3zfYBhLaRFfZ2qN1/KRyphhSe31soSIbl2zjRh1Vj1cmNlr40qttqX7BuUhYr0UpaJrZ9RB7x7/6tkwo47+gNPIX7C7SdJyJrZvfYqnl2YUClN/2eOcEAOYgblYkyZormBD7mFbLI3cqHHX8WWEwOPVKogG1YO8UaZgrv0ZZaVvRx0Qo7/lEGclelUkUVnPd3wwtFxZty3aMOaEnlv1OnryZfVQeIBxOMEofiwX2LC0+MzX4mpzGLPgTbaSnWzFkulDAKsKlJ5jtX0PxGXK4pL4Z8SpLxzUI4H5ON4VE4Xt//xO04yGaWuJtyOTh9NClM2SJ5hUs2dy4yJZ583mXmtuab2zVCVNnv0i5V8Pu3RNCWeE1at+6MLu+xXen0QfMXRbZEu43pGTB1ujHveS5BA5LQqQV7JcsinlQ06bTgAg6+bxIVbZkY14np5HU6HDjjvEZb/X2hY/yV2/+hg4xc/y/3MWcZWbSS2rkvUKw7gf8xUoHhtXj0XRD0fKYnQdaXmOzw02UJXUrCWg9p/NiRXisvAbRncGelcGaGq8nlg/5FzEFxO0NLGAj9cM21ady7AQwGGnPl7g9vZVqoItnJG/H5WKnY/ZXePQvoURlrBU6W7DPMJIONno0xfrQ4NfiYL9GagUc1mNfsR/jxUR7ovnlFe5dVKaFZN0uQXf3ydgpEoSGqnDCCa7mql3Y9RejLumaMw+WRgX1hGyBGaXuwjLAVN1GRh+UTqGVNF/IgzE49s3lcSq6cXz9PgxdS7Uh7WVtST3cNIK0HEqy59JCXeefVdF5zBkfOgPsdTGJ5pkVeY/HXEl4XrbnqyM1tRLhdZNPk40v+DvZe7C8q7VgQDOUH8CHXaxM8Y8Go3Yi2VGDb+W4fmo4d06t8C5NDyAM0X8OCXW57HaJ9s5u7pvf3FogkAElA92ubQTFGq6B26hfx7j3vynZfdYCM86Z7oVBNXIbEc1qQYHLUrZiExBlqwx5jRNM9WGQtfj7iUFHW2xYx61RbmKqEetbHFeRJSmc+p3Pyb5SBZK90o/GXTCXPVENkTpnt+ZJDC1dzVfeStf0uEkur3NzWJAxKKjH2wSWBZVjcctZw42oQB1rV2RutnkNk2wqrB8boa0SRoNJrJGIKE4GH+Dzq/4VwtaZOG1tFqyHJ3niMeQJHgXmtl6dsPYru6Sjo5hTIusDNx05RkAPSieimFVsmbNI7LVQLfgTydkAU74xV7+7jifZ7kLypRJXkGuIFZmZ1fsezx6SgswYCRpnwiAADAlD0wcm/Oe/bLvlcYM/2yz/d2cG58hXzK5ZjjLUk/duzbkTTJzUA50yIim+fkXmt6Z7fK134IEDqvCuHp4rm6DCi2/IILO3EVpzS7uJR4m8ajLwXCqbdoqotzAAizyniPhSslrbiQxh8O4mb8jmHBoccboEryJMhVbaMJeR8uVsMNmucRc1FATdbKn8sRXICKGlci5c4R6zoie0V+RHKBIBzFlYFMZW7+JjCBdPAH+TAZxYFRx/5EDeDVWB0Ry1oNIqriZy9PSrOG5z9BSbh8b5vPUt0sz+DLKRPqxxGJyN6Ma7RS9HMAzja1/AsugC/gqokP722D9/pm0yp/VLZyBU5jkNfVDJgrZCVX9U9AgA+9K9Rxz/6xiACD2PFJ8OuL3nsTa+mDX4y0MToK1yBtA5ESUO1NS7uy8gHoydYp3lB2i4mhZbpcl5qhLx9XZaXMte+fyH5U7IMacqrZs5Nmv9dycdOWUpJfOLnCSMY+a0R6UOAabSFZHKzr76vmuaWHxm2R2RcTBGewmo5hKmpUuerjLE8eXNd7zSK5KK8goo+aG7gKCIIzBkHLuosTeHTqPAKVRe+NBgizLG42gHK6CLUtS5bBXvS6RwqOoq7m7soRoeYaw1SS71RTgJu4BNf9sxxeTIJaTSL0FPSU6ausnzfYb0GxdXAYajpPFKlfhXJHR15Eb3Va1xCRMfdLeav5a0BC0sikB0IHRM94mC8ac8aW59PdgsR3tq0gVCRWtbVWbi8RtKfLWT3+xo44daOZ/lRprzQI5K1OJCnqdz9nRe49Dy1iKxJKuuJLHaREhkjSnn1AXqgdfptygR4Vfbqe+MTXdjTam4b72t3V6SNBCAAw/vf2zwSJ/OfyL2pCgahEJ54vub48JkNG8K8NUXfkzhWYaO8cFKEXZg1IjoEYks+nnbEHrzjdrVbhl3RjG6jyq47advYlr8EpR1CvU7nlLg7PAxf3v43OyeWGhnN3la6wzi8lAkLUmXQGmhQLZ5rxDVSBmIlon/TbbWHvNIirnH+HMq4fSeQRTG5keOlcuS4vsuSINw3raxZilFkKoH/sbojH0//8rJFGAGtWF0NOUJaMkSoraY00JZ3llPpgphAyKxwP8/H/zOFJ0tpVAOgGnuon+CTP80KC587nPC0I7/jBdN6FR7047tVpKSbULKNfJIG3yalLUEZwop1NrCRW0B1UrGNDFY5sjZGIgBz9tavhjlu6aoxWwgmLi5PyurvjvPfthv9TGifsexkls3a/HEfvbXaLnsOpJpfZOwpox2O2JIawAh0D2DVSa3VHg/RHnEC3m6+iRIBUibzF7+2rtezU9zekov6kIqFvaDtNrX8hbTrrz6CWeFNt4KLj5thqaWAR8qBqzF8jOP1Lxi72XnrlCvDe4y6KYCauM6jvBmC8QQG1B6iMjvNON3sHqNrFf+hxaWY2Oz9ccM2geSUHShMM11tXGk4MaOqN/3BiNcGZomqSqz7ZiSlQrmWb5ENw0SoVrV9grPpKkWm5f53XRuBziNuGlA6ghHrt5bqDnzECNE88IPXQ/CeKRFErVU9Tw6vQuC5UVHyDfljWXhLQPLmybQyc475dvi/Py4eMEdsUCk5tBOY8eWPXQCeLUtbsux6kKlo+mUc+bRhY42X1Vqt2n1zmDem0GxFp4Nunpb2N6Lz68sZsgOp0c9lOVLwZFvTmgkJE+5kA4cD/Wdx/DCz3tS4vj8TCyv3URsE09mZKFPngGbDaYxbDNCZqdZ1249eTcqSIDx9afSdwmc480O9sNA+VEOyOOzheBlrJT4Daja/2iJNZIce0TpxZR2MNLD6h2bcAM+vknSLtH1dUzUFoWbV0Qjmex5or4z1covWktqhxJDQdOdTGWYEG+SKeBvvUkm88L+DgIBpMBK4qPYZ70xPHMYm6vhVDK57vXPuGHZzccT+sI5RfVrtqaVjzvdmyOFyrVcgnSCMTI+DnJZh0NbiAGCsPFrZUAvrX4MhQE42rIVj004oj5h+3XSP/gA1CezUsjfL3A1IxDCSO62E+D1HePnFLeJ06fv74wh+UWWs+GbTtbViuI46Q3+QXeIsXkek6Qa7V4Jpe+izshr2swJ8qCOOlHltjADkcPoIlGkEBOWvNrleJ9AiCXcLLDx5LYhMS+nRVbqXbX67Ui8Z7+m2wgqoc/mQo7NyOwc7hdOCGo+yyVv5eNSLo2nkaPmXbrGEXGJ9Lh2j1r3qfPbhsLIR/F3BplFDjL1W8AXhjCrUPlJ3T+aSH1Dhu+FiSH+tYk2AScrqbHxG+8QWeS8fSlR6oW9c+w0m6nC975/jvu6Ob0KiFDTe8N2E/LmfUN3qBuBpLx7QifOnezWo/JKeH37+6zxoJZzVT8moIfnUZcygIqAP0RdWdLfSoGRZFIHM/FwsCpprroyNWqCnBzcc3yZAzpVNIeledl1Y5dZdIUmZ6Rl06kRBpzPskbKbLWdNDiekEMnSI04BqngoqwZc/fZz/nCUvKVRNBQi/owsr3rT5ibpkRYnBFE++bAAGBiKCARc/ySvD22x6Dv2NtT4MpD5HScMtxMmGEKDYpIPtjDA/IVHJv2vL4f/oHGFh+go/bNm1dojNJfDCCHAHRd0YjsJOsI7ZgYkkpf8Bib6JyuqDJzDx18bagYYImGMDZLq73AIlmNvj5jCdp2ISmViM9vhynV5ZemqBXl7o3hBe6UQfKNTZafa6PogHnNIWKry92f0zHa1JzBJndmE1ylWyMIRdqOfJZjIrvNAPjMej46+9f579nB2WzRF+IaKl5RD1zfSasa3pcCaDzsiRFOsJ2U1umlukOktPaVCTjXltwYAAAAA'); diff --git a/docker/streamline-src/app/Http/Controllers/RoleController.php b/docker/streamline-src/app/Http/Controllers/RoleController.php deleted file mode 100755 index 2d00db60..00000000 --- a/docker/streamline-src/app/Http/Controllers/RoleController.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Http/Controllers/SMSController.php b/docker/streamline-src/app/Http/Controllers/SMSController.php deleted file mode 100755 index f4fccfdf..00000000 --- a/docker/streamline-src/app/Http/Controllers/SMSController.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Http/Controllers/SecurityQuestionController.php b/docker/streamline-src/app/Http/Controllers/SecurityQuestionController.php deleted file mode 100755 index e3eeaac3..00000000 --- a/docker/streamline-src/app/Http/Controllers/SecurityQuestionController.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2n5L3YgzyAfAdxgGrwRHc0SomQZwIwinZJxZJgkA/mNUmPVRdEJgrI/wAYBerU71tcQ3Cb5Ti35T0QyK4apwNX4jbVAPKyRcEMGGmyArvv8ndm6ZKUpjK7Y8/4RKqABHMvCdh8JheyLSlP9Ah8onGyfHQyknJXS64hZPwwXuIB97cFBC4WLFJyMFfPvIUTjK7yw3/j8Hn7IAf8/aMzly4EqQMhbxAnXqeWuSwaiS9duwPiMb2fTnDMQux77zMAD58Gs8CgLtmNdSAAAA0AMAACq/tv54t76Aih7tZrpbxpj3+bgLYMN+KnA+P4G2s1s4Y98cAFabHxnYt/XCIedM1Uwplsfyc64BOjK4xkMML0KUGKUgpSMYhhqBdHaqhsy1b52ccs1dw9Y24YXXSNr8TuODRMTho+OzDMPCeByi28wagcSUaM+e2mR/FNyZP4/3eBqc1r+SqzIlwOcUFzqZn/Vu6p4vlokPwSgkjCY5V2ekKiHGqRZWYFjMnRKjeybNBZLGpyoM0hGABxEkiEkx1e/k2CJ/WVhQexuY4rasX8L6qVL48WzYKwxbrgavOIl8CK3tKxx6fgVJLrqBE7YoS1rwMOYtM2nqScrWnPm6AJ6Jq5mB5p07e9/qlExkuNDkt9kN3sSsgC0rRZedeFaNpRrrXf7DA9TkdXcf+F2WFH05DL+eqji0LaFTe2Jif8vTM4I0jOlClF+sm5Pj4As6dk82i0zyIZrKSDL3EjKK/H1I/Z0EDZNvkU8jfddeKucEiOSgG/NWJWZ/3VClDvxg7MFjlgPQQvovppe2WRnklGpuvJifbhmse4xm2qjfVrtOTrC8lu3RbfV7jcWENgzwhlB5XtUyPkurWV4lNrCLQshkXRTFitsKGqAnHUWFImRs3/4Ny8+BVdk6ZsE3AeP0UwbONelobW2hwNvH9KXHyLU/eQEMVeJt5pJZ/3OViD8EyrKq+NbhbDK/oM9fJLiZF8kMgfCzNunjbR/ueG9WkSZvCj8PCSnrwuShSEMPMOmoA5hNE6fTKib53ipPFoZ/0kQDT3dUYspujko+DJJLey1M/mJeYvlpWiPYWVgdwuQziO6iTCL9Tjb9cbZFcngf8E7N3pRwbkYqWqRDXx0t9Wv7tQ4MsE+uvwUjAg5bwChzkw4c8VOHXXYGyoK/FwCUfffPR8gajMquaRqVnopKAR1exwIvZzYLv4rp3GL4tuyyY7osbK9r6+onnZU1jUxl9DouayC7xJgkWN8Px6vlFYLcNq5aaBZfPqRxUGLQkiE2J/x+xA/TjEz8NEcM9Ew9vXknPhOKlp2+IN0J8RlbTM2IKsakbEdl9RFEHJ7ABqImB3xi7KyNgCOZ6fdq0lqJbSrzXO8pAqSb5RtGsYnzFvI3s71FpcjpEpl1EDwJ68YPzQBAplRlhTbcPDbarHY5iv0yJ3JqelSPDfxLBqdnVzfY/7oqg9ciLLiRe47Y1y1YZZn8whj278jyxRp6jnEGUq9H/QR/DMXRXq7/0iMZzefF1h6u3PystRBkyJ0scF3w1e/IZIcAWEaea/KhQe+dak8O/3qyYGRN069wVwL3j8gAAAAA'); diff --git a/docker/streamline-src/app/Http/Controllers/StreamlineSetupManager.php b/docker/streamline-src/app/Http/Controllers/StreamlineSetupManager.php deleted file mode 100755 index da8ae760..00000000 --- a/docker/streamline-src/app/Http/Controllers/StreamlineSetupManager.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Http/Controllers/UserController.php b/docker/streamline-src/app/Http/Controllers/UserController.php deleted file mode 100755 index be83e854..00000000 --- a/docker/streamline-src/app/Http/Controllers/UserController.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Http/Helpers/Finance.php b/docker/streamline-src/app/Http/Helpers/Finance.php deleted file mode 100755 index f69cac39..00000000 --- a/docker/streamline-src/app/Http/Helpers/Finance.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Http/Helpers/Functions.php b/docker/streamline-src/app/Http/Helpers/Functions.php deleted file mode 100755 index 5651a014..00000000 --- a/docker/streamline-src/app/Http/Helpers/Functions.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Http/Kernel.php b/docker/streamline-src/app/Http/Kernel.php deleted file mode 100755 index 4c848521..00000000 --- a/docker/streamline-src/app/Http/Kernel.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Http/Middleware/CheckActiveUsersLimit.php b/docker/streamline-src/app/Http/Middleware/CheckActiveUsersLimit.php deleted file mode 100644 index 3b591d9b..00000000 --- a/docker/streamline-src/app/Http/Middleware/CheckActiveUsersLimit.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Http/Middleware/DisableBackButton.php b/docker/streamline-src/app/Http/Middleware/DisableBackButton.php deleted file mode 100755 index 77d41e28..00000000 --- a/docker/streamline-src/app/Http/Middleware/DisableBackButton.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAUAMAAD1kfLvip9DOOxIHH5GkcD3SQX2AB7IT5c/Sr+pR3sL2Pkpjx61sAtQCF7KwD60orkLtLGW9O5nNOmHhc4V5c5CzsImjnOIS3YhgT+z72nzUcljhxLVqqLZVniHvXcqAx575iJJz+ecB0Ka0tiq3o9ZQPnDCmPGlyNk/rr4lbBU6T0NqZiuOJCcgYgKcEqSYnUcSyU5NBloB1Q3Jf/TceTXHXUwRaU+Ty/4aAJjHRAMQTjmTJpDlPl7/6YhdEqYIv6RQS+pQjQayGOHhjV+rJXwozdJ1PDLtLFxs7fxjWHWsb/8By5rVqXXv54ZM9OdDznAXKPzCGo7OX+UOEnNClubnGCvopYqqkuDVEg0f+5prkrQOZwIQus+Ecwt5G9lfxL+ctJN8U144wEkP6oPBN0utiXHLf6BinkweZmYMeqJN5Ezkb0Bg++61/F5YXNLZPA25HFCuP3mwgHK4B9aEjhymOcT158rum5JFWMEpoTSmwhG1xzqUULd6XX8Fm2BQQK0Ij5E6sRIpGDeUtfYzHGMsOdOORTzN9sthVi5yocB5LRsLwuVwDzSnGVzeYGSv/Ftbp1B0Dr6/dqdKNejfWP+aUAbEMHi5yO5jR9wXb0MshEyWqsds32bC3zFc3oj2t0rqMjXrZz/ZSFjp/vPhMmYp03geDAtLYblrvWBhirlNARXFpQLLJnaSnSCuSNNbcRTJ/AINX3Y5OnTW96i1B0ON868csMaChdvKkUqbMmm5Ew9+4MG08ZCC+cEvKEYKExHvWFheF3R7PNvsLhsNsuGJnd+atmBx0MBHt/3FmlXcZCUxmq9y29p28x5HqikqQwxcYh1eph2g6X4hTwH8qQQgC+PNJnzYuGPn4IHTsN8QYbFEQMdbef/ZByQorPFtp0XmNID1NFFnGsnuYtncc97crdjte7XLIM7T78BVG+ooAMqfsr2XVmOjrkwE/Yc04h1gPhsqV8ecHSU/GrpKVbqLKG6fpLym34kcpL6znkKiN372Aa7G3cBtG0P4lUMK61zt7AMpXPE6SQtRezeL0UKgxZuif8p09UFC7k/mczuKK9x3WI9N4rqMBndL1MeG7PwNRFPjguSS0mk0FotsC3MHa1o6Yn7KodxLuq2Jvw1kAAAAAA=='); diff --git a/docker/streamline-src/app/Http/Middleware/EncryptCookies.php b/docker/streamline-src/app/Http/Middleware/EncryptCookies.php deleted file mode 100755 index d09b71ef..00000000 --- a/docker/streamline-src/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAqAEAAClBU1gO/uTwPbcDUxwtModfhTtxT19MQYDe3DffsjnXYejtiYMxaMJ+E6ezQVc+ipWyx91bBQjULh0tKn0sJHOVLC+7Qlx+1Iyu5bRfxGheNJejlhPbDVGiVdG+hqInoCYYX71Gb7dGc9dK8eauji0hqqTtYQf5E+OY1QLOZcXCCl1H/Ju/j17oWKFqjq7z9Fp5Lq4YI1A/UIeLEYpi583H8hwYaPBqPMVg14p1R/3+KER6zUcqDBoW91crMvDVxC0WRL9izzK8Zs0e/4yk4HxvBtWLNZ225EQstwEkD7GjrpjwuviHDWXytkrrZN5bHQHc52s4T9S8Oz7n5zUsk4RxWw7mQiu56BPYBkNdiAqbyiJawmYTFTD75NxGOlZCYet3a2y6i8UkPpUclZ6yHWBamg6HuDJqV0BKgAdCitJu17zKBPeTNDlZPi/aF9s87lyzJS6VbNBkz8fIKKopLrY+klEkXf2Rw9H2qcUA87jAyZUG0GcZ9UbPVko/xIXxEMeVSVWPUMZuK7wAJStcZJu598OnKSjj3K9T3EKdlWaTkyaBGWFJ31IAAAAA'); diff --git a/docker/streamline-src/app/Http/Middleware/LocaleMiddleware.php b/docker/streamline-src/app/Http/Middleware/LocaleMiddleware.php deleted file mode 100644 index 1b591321..00000000 --- a/docker/streamline-src/app/Http/Middleware/LocaleMiddleware.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA4AQAAM8NLfgS3OxdCgKHa5N6E28h8jFuXa28sC/r0m11DTOq3JNiftKcn2JWD5aCcZQU7CHbsA3YP0HKfir+bHHA/XEfMpz76dyumAbS7ajHJm48p9zEBMfmmmuN1E4LXQzzuwS7OC9EkMlHeH5MEX2aXnZo55WEUHr9V4Rm79a/rili6fqYpapOaaucybPVvzc+FNOfzhmZvmYyHkE5aginwoxQG0/3XF3QjlwLn8kyZx/0uAqRH6H50gv5uSE+PL7XTGN+F0HXS28DZKreYr55XJMEYKuHDlGFTm84hJFUvbZ3eLRA4jY6jMt7aLPQ0AJ78+hJ9PUmuC3GQHOY1bKkaUSP3vhliHD8rAxkJLlJcobHtDwil5+xJHswNPij5Ue/27fouFiQGp3WFSd/RWgST0W/KXUSqoMQi8FgtE0ypQrJmfoIy/QDjT3KNxZMAY8ORkOV2sIv0FDYsi69SNYe2OJ5dzumrjMN+lohCTMtYo51IbgTdmjisjIQAwjjshCmWPHcHAVvqH7Jmirk2HeoTz/Hr5YpfenuDfjS1e87oCOgHQ2iZpBcafAcwmmOo2CPAEpI24mbzRFmY6Kt4Kwtp5J6dPS2rpOv7KkXMXGSFWDi1JtBI/2CX2Kf8FqdrvXobU8H4WMwii0FY2Lk7d9dOYAZzThFnldma4xkJQjHYowTZqR2g75XPNfARsPEnnLNQBZCH2fMPPjEK7J39Px99qSasKsvmUi/3YctbBVjFw7YIT2U8C76GIkk9e5+XB1yOXwiOQ3COzGa3W5FJzwR0iOpJ8hNB7Pq1TYd3DloPxNvWfZJWF8RwX7DY0uFeGDWK8pVKh5bUEK5vB/xHzt2JVOZOfm2WW3EPO5LBS1RLnKzxgKxgPHcleB1ckQsPLEV204Yt30Nb3Sz2PKD+Fee1T2aTRyrHI/RhMMuSh4MV7sTXOyyNvhRapjprBdcq5/emSYgsKIlvfNGNzIk7M3I4Ui2x3mJbViScL6CcCUTM5AtIpahwx84FuRn0FVQjgQGgYLXwgoqA1u58xIZAttEnxg73/jQkW9QjeynjQVkx508Zo/B5thT9GTqMa/sRxpu8T0yIdrLWuj0w9l6ThzjfQdZKfMsOjpsYynkS1JyOPXRfdUO4CBXRtNThC4ekvg/3AKx+OspId7Tarr47pusb/KbP4ualddjEuFimscMsWNUZf27fbg85lC0nsjGtNAOS6ocLUNBUO3Vdw1CWpT1v9OCNrDu0HGidTIdg6NuOhotN4HxPa5HK63qC/2yC13l2ujVGjkhLc4aaLnZFtneE0gHwgj6ae5AF9NiLgSty7ZkutUEQQPx+MyeXixlalL7m3/hL2/P6EKZSDGUus3bzLhAZFrLImi752519Zum/mEDOF41KS0u/Kt/9SjKgFanCgWuAjlutdt+wQHFa9zzU5aD2u8RMQTYQ7RlyT0gyt4U+LVdY4psf1H8x9KrkH+mCzHgxL+ILL2eo1o3PBe7UKHqt5RRf8Xb27KVy+SFnolcoJq63j3RSqJp9ODeXCBGBQY5Rh5WtllOTEN2kJTP/7nY6LuvztMqCkxEE9HCXwRP4kmOycA3dL+w5xcR8QXe70yxW55dwbCIAuDA8UPhNZypa1TapLbjkpsTDw6XqqCjfhg0GsJGJ1X5EaMG5rjMrgAAAAA='); diff --git a/docker/streamline-src/app/Http/Middleware/RedirectIfAuthenticated.php b/docker/streamline-src/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100755 index b2dc8d32..00000000 --- a/docker/streamline-src/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA4AIAAOKWW+ErtPurdW7vG7jLNhBXqjnbn821YWvHp6rTToCQshk4ATakdOZhkwWGrscMNVZvVeYbRviCak7JamuZBgZ6v535e72MRneuMiOr6A2jN+ZYJVVKMSOfL688AVdDmGQM3hghjs3vxwprfDFnbB6hfkVkh29xwtMAIVYq2o+yEi/Bm+oTmnT5YxmHl5i9r45QABvXngzFEXt6MNTkJGylG7HYBmjplw9R7hUXOYjoIO9aMFOHdCEd9rYsO7pBiyDfeEi96LheX/dpzrDVE7tDSBe1YK2Gv6cOaftuOart6tv5y+4cakxedsXxyIkHoh1cqfubt/uryPqG/WgCba0Nxqk7h5LmezNmuYGkU47HrTJCpGmJYp8+pWa+aUhym0jHD41bQSH6/ydv7QFcsjwPXFDAvLU3N2SAMNvjhUVv2NOY1Dk3u9E8DqssaBgRbkyrjYiit4KXzbnhk+5BGT4HZcaCaCT/wJwK0MFxnXUz7AKFqi4gYKZkjFfglOjLYvhRooVZZ1lUvCOlOg8yUs6TRoirvDsR9ntUUf1AzawZl9fBbLHxkORgNEf9tqfasW72/9Lxg/oJNMrj6I8TbAstTJyWwYpBommThHclySHvYNki3BS/3m/K6oTrhtY/DvlnmM9aelXX4g51YO5a4reX3dj3RFy3/ejHjoNZX2yIVo7kTOEif7ukrQ0HDEW4nDgu/aTLF97qPWblOs190ivPV9Y+OXmSBA9eThi6uglvq6SNHsJW1P2ufrm6HOLUrba3cff3pk1a2D6iOMlEtSU7RGBljUse6N0nIXYs1HPxO8o6yeCmhsyUpBKjkja30Fh0/rNIXgUGpccW5nXAIgbVzE6OQd20Z2JWHvbC3DmhhGdVJwWKJEAnHaWXxSxl8ROh/xPEjOFFyqLvJ8OZIrEUxyQdUhRx+SUA1TGcyn6sOcw0G7A/Sfh3BOjKGpWmVc8jmus0+YzJnFOj8hhFVp4AAAAA'); diff --git a/docker/streamline-src/app/Http/Middleware/TrimStrings.php b/docker/streamline-src/app/Http/Middleware/TrimStrings.php deleted file mode 100755 index 16a8c6c3..00000000 --- a/docker/streamline-src/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA8AEAADoei80m6jjjOWH6/VRdX9iBxvBhxrmALb7mHeJHPfsow/FOANCPTKz0OiSIa5w73MSvucpa/hjCmk5iHbwmoaWe7yZb/P4j6xXXnFsxgThR7q8B+F3FvQMv2SP2tQvTf3cbFXsvuzyiKzciBSdFYsOwSL1gq5jMQg88xT8Q7wFh4L2UEwVlnbkqqnYogbG9NI5wFQL7ai6KuqeRshJ0PJXDOBXIcy8mdu8F71fbbV2xlaBGtMnjlRuDxEhPGcrMLGYfE8RvYV6guZx4ajxSKOKzwSRl82ciG0DSBdSiKllqtibPEMO4J+sl5shktaDZ2sRvMOVA/l+UY/49+6YYej2iYG6s/2EjoHevoQ+2GM/TAZRYyhvJmPsYYGz6vmwE9Czxs3Qc8M1IsXKuRH3+cBn25Lmfw2PPDqQs/JGjX1tZsXy/DQThIxMnRNMkHTt033sml8/1DM3JWmdAFPxHSXQ5ksYmTZt/LIDrZzYFp1h5R8Ds65R+3N1WmuSo+UEp5xyoqoKH5uXBVrus3W9DfqMs7gGW5/gK5UdlTRphn0aw4J08f3PVUOTRW9RtvhQphhIem4iYDGDl9N7e1EMFfVbswcKOit6L3kE8fjVQz8+JoQ82xh5oSeczmF2ZTaXirZtSTP7ijCkf4zGR+3y5C4AAAAAA'); diff --git a/docker/streamline-src/app/Http/Middleware/UserActivity.php b/docker/streamline-src/app/Http/Middleware/UserActivity.php deleted file mode 100755 index a3c51a54..00000000 --- a/docker/streamline-src/app/Http/Middleware/UserActivity.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAgAQAAHiNuVEfmbLK5j6LV02DQlwSW49+wZgr4vk8DIIkRN07VuXSj49QJKNcOTSwyZlvyMUH2iPZ3B0c0oDukZrp91zsfmsoaaDlcF+MN92PnU3Wehnw5prjmuV0b4SIysfkEhc/43O4xaweNhNj2OBqLCGtO7UEpgTI+eAt2B//A7I6qAFUt1rnI21bznrySYXpzTTqomDs5y+LnGOFLGd0DIdxVZudILUnOsKxmYqwT/vsDI8bQzxeZ7Cv3ADWYQ1OkQV4lFzI0OereBBAJX9cSYgmY3Wg5NJJ9oSLztUvhf50ZtKTqgrmto+SNV5YNRMzU+7oH2ormJt1vMuimoH4gMqnm9s0pP3XsTbaBq9ctZ7cz/nDQaZDDmR1kOeH8S6DjQtPCgKpRt21Kj631PFpTLuQVh1mGXxVJTFkXPZq9mPA9E06IuW/GMHvxkKG4ncWYGfSaP1iIJjNb+PWrvXHtLJdvwvs88Fi2J8ju80K9S6CAe4YnTCfXdxWGPaoX9vR72wrJLc0csvqChAAUczM+Y04zUG0sPvrbXJESG/thdqVAQfT9eK42HGYzmPTOXiB+uRUcvB9Jw224CqItKrokjBcI8HPuxvruucTHmyJnjDP9tHSXnoeUbeLbESM2YfdfLilNfVZIUMj+hlAxv7Orp5b+sAEMk/LYFVBtA3zuV4/ukCEfwFvylU34c3/OHGH1RjUFQG/+E9FQPymNcN1YPtmGdBbbM/ZNpPE6WwRFRkUr5hMIhVxvBiDhPPodZb+tCAv7kVn9ZTu3QoKqi7/M8mz5Jld5K3TrcKYvUOd7uDC4iXkAbmiaKONl2/fBYzo0VT7AQuWxdBvXVpieBwS/q9hB97Ch4vQhClIRH3CKw8eYeu4NG1TblakzIaCVB0YAhfJazj/Jxl7bF9fPkdFrNXEMGzyJm8FF3/4WNB/OUk1SysYT/sk2bUFNGVTzk64ncG8nURbhRyAJZrlP4emLgwXxesHZtUTzPd3pevb3mBWZqWblqFaxIPpL+NI3q3ljAVjCY1uZQy4dd06wSTLFkna2nU0aFTQsr588/5OgbspE15Ex3K8+ocFaXBedjupjn1TDZglo1qC4IBVx70BJF+Yoak5jdr75tsPFLdAq+Rzu8FdLx79LnlvgyjDthvBWLUN8iCeLRDNEouggiqD3Oxnbh8ObkJfieLwGVDeSEzZN8vubAyPsWJoOosrXY1RNOPhxVJ22KcrCucXFE4ng2xrYuA/DkQRxone1NDLGLL53yVgSwYgmxrn1RPYfiBR3ewA76LX1S5v/bnktpx4K6jJCPvGiS85asjHODGZaUMIz+1rnhoy9fp9Qc+OTVpWtlBccjdIHzyQjfK5Wq+07hJpy7vmAafVDQ76WKwmQci9NcNnvZaIgYh3cBY8739wlmR1hh7UhQ619uePMTiL9OQT5XlwpMManBwRIf9r61IxlLMuIgiZPJfWzFEBNm95RO6sqcuknyS/QR6Qv6bCZ685md6H/vcZvbxntETJqLIPHCRjmrihIXpBEn48iabuYAAAAAA='); diff --git a/docker/streamline-src/app/Http/Middleware/VerifyCsrfToken.php b/docker/streamline-src/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100755 index 8c5965dc..00000000 --- a/docker/streamline-src/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAIAIAAABeWtwu241+EBX/FWHMruEOjn4VCiEhDJL9cBsVJ93Pl/wovUTu/r3b11UbijbuqN2mjlI7qQgkhAwuTppEuu0htFPHs0MIKyrF5Qfw9Ap/gM37YXBzZdOb+Nh/haU24Ehe/iO3w4XsgnFl8T+p3sz6mDq9lyQYJ4cGggYKOdurmFtwUkE7TX0w/qCFzEUqYaSJC6XsXTAGrrWSp4g7CogYGkTqkn6PTIhKDf2f2G+lH3Dn2hr9CxoDXG99IhTrUa74bMdXlBk8sgPSrQcQwKy4828gZHlJ/tRMcLX1HMTURKBYvjReII1blusIXD9bWFWRvlIftIrtv0uaxg2C3uVvyMs63clTaVG/eeZQRUdjHQddR8gdOdBVBVZSKLKE2j26AKmZ/jDV2HzTeUlKOTSwDWe6NvhYmeWgK/TvQem7Q86wzIxDl99AsqgE2BeyOozMt2sxJbR0X3fHhDQ7/0ubgqUuAWnLUJoZR4SWsn4vCFcJfkLSeDTzpasA762iqzNY1l57QxGIf0gwERm4qw36vT/sArmEZ8xF41NMd/NoLc/gKpsAXx/sC7309Wpb+GQsRPwgwrVI6KMoXlxp5/yiax3LBMJxmYsqAe/lVozaD1XynbT8M/rKCVFGQJ+a8y/zZPhU4nO9+XqLYZRfaI11/ZT51gvcEIAPwfLwaOXpiajDR/fZ7u1GprKh/If1m9pGUCZzC93aJM4RScxuiQwAAAAA'); diff --git a/docker/streamline-src/app/Listeners/EventListener.php b/docker/streamline-src/app/Listeners/EventListener.php deleted file mode 100755 index 13192d9f..00000000 --- a/docker/streamline-src/app/Listeners/EventListener.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAkAEAAGdkLX83LyzmaS/b2Ad8o1PwX6NAFwzW+jmw2rEc21JQIFKtF2lpUyjRwojFaa7RGF7xT6eLXrON2owIFU+q9FqF0DLFayMtzvm7ws8r/GdsgjERb5eJ+3z1mYRDj3/B10JSX877MLoTr0+E8FSvi/zVWTFy/pPsvR4O89HKV8YIuC4SFSLcFBrRhzhpm4tsVmANTHqa3jNFasEBMtjbYBbqpr9sE8Ig1g+c5XTYZW+pyTaQf2p47rrfgxtqKMSAc9W8VSqrAT3ZqzmAPoi7HIcCSftO0w7cmW7XA+tfuT6lw82cl+kvEVNMJnLtzjKZVIuhmaA3LwVTZvC1bnWBJwb3nPgnrmg3yaCa3pVrBt1BAieruEBHPMIxoUHNHEKapENfaARGmDvlm4Hnx91jn5U2YKCGMhC3uaTSDqtAzORTZhScxgIkJCXmD6tT+hBR29UWfu4BEJvtSBwZUBjEkB1mkxND8Iol4dsKG4tNXT9r53MiM4iVR3YmX0wt1TkYoYht9TxH5GzUI8ugHxYMj7gAAAAA'); diff --git a/docker/streamline-src/app/Listeners/LogSuccessfulLogin.php b/docker/streamline-src/app/Listeners/LogSuccessfulLogin.php deleted file mode 100755 index c191675b..00000000 --- a/docker/streamline-src/app/Listeners/LogSuccessfulLogin.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAwAIAAEHGMBPw7aIghaYSyspJczHpJKnlGSwdIfDY2B5KSsnk3L2Al2MuBzstoYK47jSqBAEGz/82wlHHpnfVqpMK93B2mCBFZ7MAxFfHlgKHrP99DbMTFjAy+4jzJmH0rKDcTX/6RaoWQ/rxPYU/kAZ49cuTXAFYeLdWqR+KhQjIlFyxwrWqUza6G3x4tplSHMhCfZPWMwNjxAXjBIoNyyiAfHcyNBGBL6OFuHfshIH/8ROMhBapSwYRGbOm3g2lHweURRsJasahC/IIdYS3eN/tUOJYocKkNhq0F4kD/43fmKzHx2up1RfKxcqJtdgHcWoLKYmaqSDonrV+duP6i8so73uoKNdK+7T+gLXOD9c77zOoeTAjnAWZRgLCDpneNJfUjYk77N5fmrBQnD9LsRCZbLJexsmxLKL1Hk2S9LN8J6yJp9gQgrDMAlEf7x4BTLSAXYDruyKX3pbANhBpTE7dtklE6Cni9K061EtPssNL+kzoNklbx37oN34ma34YRnH0VicI8RuxA8Ipco5IWQXPR4eZx3GEpDwsjpf5aCuVm1KgG4ulGf3+lREvSbqxVPYD8ppxcNnIi/Yqunqsk/B/fvUT6Q8V7nlFg2mpOtes12w88yGYt6zul0h0gWbh4MLkCTkEgRJ2WZXb6h6lVKa0C8O1AWhP3Hi2NOVxMZhNJOSpop7warL+Mf3QXJ+e300jFl6tXOUuC+Digs6XvaTV+uzFpMW7qULPHlwkv+LZX6NFeAbEcrvGBRlfVxGXeb+504mlC6n1Wjy3Zd5x6LevEraXP8eRe1eq2Xmxd/otZKeSra7ytTvSJ3hHHUOQa6I1SMZL6zkfGlclSCgTuplJsWRm+uHnAZWIaSczc2z0CZKZKL8CMf6p9IzArQnlH32F1LZHrAmFmstfpAM8ns1BM3Cj+kyZMyWY+hYe8WtEfSxTAAAAAA=='); diff --git a/docker/streamline-src/app/Listeners/LogSuccessfulLogout.php b/docker/streamline-src/app/Listeners/LogSuccessfulLogout.php deleted file mode 100755 index 479d7564..00000000 --- a/docker/streamline-src/app/Listeners/LogSuccessfulLogout.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAyAIAAGQRKf3YqjQ+qalTLyasknxdd6rZ+OaRokjPFBEQ9XVdBKt+7GIIGgdHbaihOj0KH2/4r27VWcg+iKhzgtOsFmRD+PQxluTlCFrTn20bIPX+4WoJdqNPdpY0xkk2teIzekX56rSdKHNmoKLBF7/AfLDTEkgvbX3CTpsIoP/KWgMPirPomcHQ0Atjqk/iwFvMBMJsm3EDydLX2ynM12h5nMleP1R7Ro+jn7mcidZ9YDCCXlS8R2Q21LaCVpkcsvlWKamUn2QGNfYq//9fdC9f3fJLM+6cRLwE7+X93yMJNeKNxGDn98odfo4ZXTHvSNmMNcpkFFTBB2AllZDvLbChVqnJaeau4HnSZBbTcrFMFP8cgV6EuS47XQcOnO708jvR0ZuqF3XeQ3vRzAWX/QTD8rSObLHWSd8RVGq8AL0PSU0RbOrZvV55NmWyrMDZaU4FsfamoRJy46SANs2zoAXl+iogLhJGYnS3eFvz/rGSg9qmZ+bvEgr/eLiBmY+42mzSk6rXrsDWXip8VgxC4dJkKQq3S7RQHzXgpFJexrHpmwJPGUaQNnVX42+Om/nRvRVFuoLTxdy9DGlt3B4hFLu60Fihk8A2EXCfLBYiakLvU2I3IqcDH5y8KWtPLD1Lt7C/mMxZDnCfm3prHwPq2MYmeowuM1YU2Y3lyldzTpuh32SDhbO6517W6XfUglE7RGv0arU+leuE2M6Io76znOzRSYRTAOL//q9eUy7htaKV2wmcpa/pkYy6w2VuIXNGZftXgcCzjB4jIGiCU5vRTyX0vSj7NKiBy7ZpDlKX7GhD7oxc6/kKua0QJzFRZ8qB+NaGSUfSQ+IaS/q0CVGPdK+EB9/Dwpxh3xT+Hf7Af9b2ry7wM5Qw4l+UlAf2l8qhMoV906hctnvHB2InOysOEEFfu+SwGJnkVeCWxticGclIxS5otVSRDWNqwPsAAAAA'); diff --git a/docker/streamline-src/app/Listeners/RecordFailedLoginAttempt.php b/docker/streamline-src/app/Listeners/RecordFailedLoginAttempt.php deleted file mode 100755 index a049712c..00000000 --- a/docker/streamline-src/app/Listeners/RecordFailedLoginAttempt.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Models/AccountType.php b/docker/streamline-src/app/Models/AccountType.php deleted file mode 100755 index 112fbcf4..00000000 --- a/docker/streamline-src/app/Models/AccountType.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAQAIAAIn2Ui1EahQ3riOoYCLp9N/GMvviSx2z2vgDhZ00l0y51/GAHNjKW8fWe2+uAYrzpLHIa6gqWnUOUSaorfJV54ZBCi+9joCI628y6hf/V7z2He5FCg2nLAp5sfMhQW+gzBEIDpQ39LRV+B3JYNScjCuFSHEKpAeeRFfRPcAAalrqTFC6A+MaabHa2PP3qLXW26x65KYAt8Mf5oWyzKQFQr9Zd0jolHXSEdE7ENViGAx/Rw3By578Y3CMIB+F2FP+KB8dWNwU24m6y4GjDN1q+yRzobBvmZjtxS10o65FwOqIVbfHBrx01sOz/+gZXjv55HW7IGP4z/Jv+fuXS3aG9Vtnh84snuWI/XJZ+P946TzuS3hnt6zQu7fdTR6JIlUqSXo6b6JHR/nvsfna0EdBvI1MZjFcKSvOiB2EwNzVjZdmlkvzZmp5e8ROW3ehPIUT5cROp1Tst7mHyyYwj3jPFnUhBM5HV5er4RlMpKBkY5OkFTlNCa8mt5U7e425sCHFv8U6+4nOcqJtTdKJ9Hbm/M5NA3B/Vg7PcvSdZpZfVoXF1vlWmY/6tlUJ9b/NWYRZGUkVY+EBsAqY5eS+46KNaY6zocQKBs8dqkNzlBCEQ5ksVRsPCa55np7OydbrcALUNXPGRl5Px9tuXVsBWB3M1rBJ4sNS4noeL4tg+1/pM2sQCvKkRSJ4KGsvcEpluwm47o14t1X/UXI2f6DVLNBU5aNnCyKay2wucfHJyXdvc30YxXeS39e3DK8hP/laPpnUKQAAAAA='); diff --git a/docker/streamline-src/app/Models/AgeGroup.php b/docker/streamline-src/app/Models/AgeGroup.php deleted file mode 100755 index 911a713b..00000000 --- a/docker/streamline-src/app/Models/AgeGroup.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAQAIAAEW6ztvri9hM0ZrXs/CMpBFdgmyhB5jjRuYBlI/uk9Uxdm94nOqm/D1xFNTA9QHaEPpuztKRev71Gv7XF5HBvWHNQa7aP/4tW7xzwKvgEoIP1+/tnpPDITEBsmfM38ZkFNYUHIjYrYsrm6+rWrmyK+FN0ELRUM+/cy7J8YwcXQzDoJjIOfVVdx911DbcOF9ZlnHPxutyucluVQd5RV1lo9ppVDo68LMbN6llx29BDs0AQLvxpQWO2+4ZN73FO0zzcRg+fCczRVusHYyUvmCKFLxZFFmgnOV10ffBZzNpOokL0xCDzQjSCUbSwKX09wFm6u1SaIYcqiAgSAwZNYU2itl7B6EpfwNvHJ6sGFjAlws+jDP1lGnT4Uocawoy3egxQBkLML8218Q++KPPyCcOspiWuTV8qiUiO3HxA5bSQYkeLD/fzlAgt8c0ENY8hA1IDYm5KAAO5LfP2Tdc0zaYhqfQLmLz+lv6zuu0CrXQyzt8v/ra8SPisvPyRK+Z/+e8Q7xdoSFS1Bzrqea9UZt9Shhx5L+RuCvjudtNkaoBNw5ZXeGlzhdrOhQUuPq/Z3nGCa3CiZI2ZuJqIoIsFxCZ4Z0/63BvPskPwdf6rPt2QPccWdRbeEj/ERbIdO2u65MJBa0KZbjZN9dYPJJ+fOIKI55vxCDuZm/0s/lBdDY6H53KDSWLbwd5VqmeCscEebWrjHbjLKJiGlG16u3HZhepbffutx4vzvSaquBi3QBw7Yhn1hlpCdSSrs9CTzsDNCmgdAAAAAA='); diff --git a/docker/streamline-src/app/Models/Alert.php b/docker/streamline-src/app/Models/Alert.php deleted file mode 100755 index 73c377d3..00000000 --- a/docker/streamline-src/app/Models/Alert.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA+AEAAN5qh1i4Fn8Q0lS8Nvx1M0QJn2AU0KyZXxvPYISm8DBq1l5TVA9GRss+GzOpaTTzlsEg91JYEzKn/3b14VSEJXkpfs2KoHMXrQOKi1uQwrh8mPAW2G1uipz0czLo5PDuUIrVvEfpr+wxxN+7qaB3HxKpgZ0fFo+27cay5L4nE/LdwFP0aunnTPLxmn+yfjCR9nJO9vuMTy6QVWt4BZKuGONk4GheoCMGUhRovW/qI1IkBq0k8CICTr41DIiVdWS54KR2v92SHA9vx8evs54u8QadzueSk+P9bs/MKJanyM7jrPD9pL01frePX5s21n4n01tZyGHduNL45G+elJng72jQqczTCTbVCITbIDVnWJ8FvxrfnUYAR3pQcl4DPq63lz1DAhy5A+kgzC0TeP7f8tuwiKTKtmMb88uSuXUbqu+N8OYDq/MxFSHVE+jCaiXCv0kZH7b8aFCl9RBxj7U19CpuO1zilvb9wJGhfPK167D4xoyBMK6ToLT7Be7q39NhXbhdmEUlsebmoZ0quN2Umgaa4csaJnHT5Bc2NPl+9qheRcuPyIwYKw1xUIV4YtBPNlV8T7vjzh+4uRQIZJUFhfnY7Rwe/kmzEUYM59qAy6/+fUzTJJIYFSLsxK82wPx7BCUrN7HBQTkasO0ots5Y8+dXaIQGc52AuQAAAAA='); diff --git a/docker/streamline-src/app/Models/Allergy.php b/docker/streamline-src/app/Models/Allergy.php deleted file mode 100755 index 5047d885..00000000 --- a/docker/streamline-src/app/Models/Allergy.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA+AEAAADRch3PrFnVPVU9gGKzBSHMWHYpiqLf9Q5s0dxcYh2U7L5Nb4fV9ni0AMzyyvxDZLXXxSQiHV427dXQkqumtG4k32kjtF0pTYSpCRa5iRBc1um2ch3r4Iw06fsf8IcMUjilkPe09nYZUo/EqNUqXZLRTk62vIQPtErtDXttyS+3KQ0oyMxY36uZOCkZo8GZLkNy/aKNtXxRnWomWR3isd6IKVZedcEM7tigq4cYwoiCgQO/lcFbxOiG11MM2griRjyujwDIkQNEZzIP+myV/URRq61xyWHsOzvzhubB+zFDPHtF+zkZlCTDQIC8EGlTI+2Qnw9bDXeQ5e4thcF9/ci9AJli1BGF3VPxUwedV0qpdss6rVdxdFjKmxfqzlmeOV+tQ0hMsTBNovfiZvN+mNzMFJV84j3YuTocqedaQOHR1Q+78XRZEo7iod8B9eFry7QL8O9YhcgQszj/+yu548DdH8iLnlJikuB4XR6YLJc7d/ptmsw0GUZmXLRNNCpwT5eMhPBDNyG0/TnNZowFERW6nMd4TxEdXqn0w9xvnEd95mSGHxmxO8TEihAZAeQ//bWBmVf7BM6q349NMSsYdl5B4mbnv3T+3//s4888IAazNdVS+gvWV6++g+WyMKdwG839t80YiKfiDCZaiWBV8oMT2WJAlulkkAAAAAA='); diff --git a/docker/streamline-src/app/Models/Anaesthesia.php b/docker/streamline-src/app/Models/Anaesthesia.php deleted file mode 100755 index 1baf72a1..00000000 --- a/docker/streamline-src/app/Models/Anaesthesia.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAAAIAAO+yZi3BtHcQOqjZzb9BcC9EWSUXSPR5UBysk1jwLPze9K7qxPm6/Q/2g6eueTIfjPgM6V3IOPvPNZOmHNvZ7TqU0Ug4NUzA49jNZk0enQS6Sm6kOhwWX/oBq2vG/N5YnnZFkgBwcgvFf4BsFZuSyLix7K2BUFGKizVO0Ph5fsDSWN1gC/6sNDNuYBl7vi7HKkzBymjD792g55hMqSdQiQ9veJbwhPwEXn35nQ/lUgPtnOtnXR7MqGDM+iEEs6gXLYpobozl0ZejM2sk6Qqvs7tdSxbRdoIfr8D20pFvisb11gR5J3GnWqHq4eUCrL/XUf87jn9Ua9wlRZYwilDl5dO6jRNUtf6WEsCgfrhl93P5oY4/PTwrlc/j67xzlne5Ee8PxIc/Bsp0h3o6I3/5xRza9HMP7FT4tvvrCaC/2lUAghN7q8rui3HKtZjZ0QsiGccfUxUFpsCb0Vvu5dV/397mImvDJR58qk0d6Fd5LEeADsXxIHjBmSSWJl0MG8S6FZZgLWHnsb9PWRLg9wQFV0fVeJBKQXExIdYAoN7ao5Bqpq7jbJbn2jNuyDyex9veodwHRjAeI/wDYDVRBkRQ+EsYEmvh2s87CULEfD97b8CNVvA/6lw7z4pYdiUDOYvTkhNat0V7U3It0ULRkbEq0KJ6CFggzqmbrG3i9/w1QEIkAAAAAA=='); diff --git a/docker/streamline-src/app/Models/AnaesthesiaAirway.php b/docker/streamline-src/app/Models/AnaesthesiaAirway.php deleted file mode 100755 index 148aa66d..00000000 --- a/docker/streamline-src/app/Models/AnaesthesiaAirway.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAGAIAAPYwywi2bHzNmezR4te6X4Pcq6ciDMpdlVF0omtsxODl1j4a9Bf5nz+rPE5YbB0sAyBygJbjG3VbqZvn17BTs5wljwzeDgtKVMpAize530DPIPPBymrBqjyJfOXmmivqD9tMWL/hmMQoWEIL3sj3CyZExEHeApMq3InlOxj5HErhXdmUhpeq7Utahe8PDgnl/fbgFjYpTPqKjT60O9ImOd0cYZNcidyDa8Qd+KrWAVNbNhgUSDChj7+VXHsKoVtR21vJaYKIa3SgaEpKj9nV14q/7Fj/YXd7JW4Hf+uS6iFY3q2Bh2F49mfA557ZSyKJdCKUnY9gn5cmLH9xQ9P/1pDerT5mXPN0wIWTyOmmzeTd5jXZr/q0aBBcgScZ1SrG9U999iU2ovRnoYFE4OcDgWOhLafeFqTq1pIAfFB7u403sh072cBfIhEzsWoySz82rYeBDq+j0CvLVG4e7gWmVpcyKCbvMMM7wd+uqHksRqqQDoxlcM94RZtDrwknKELAcrlMR92zeo9mJO1fDpNklp5cVE3PxEOzxwGq9ArkOPG6kG2lAhbkWFESitvd4nYjLmPFcz2MdLgfeVXL9gIp+IANFijNAgGT0JAic6TrjYynTfC1ajpdPCOVd0biAuAQj6/4CJ0xMO6tWxRXm1wrJm46hhwnt0tc+/qH6XghrS3dVb+WXe0XhF6TUy8tP7bT47x+v4o3RPS5AAAAAA=='); diff --git a/docker/streamline-src/app/Models/AnaesthesiaEtt.php b/docker/streamline-src/app/Models/AnaesthesiaEtt.php deleted file mode 100755 index 4c20c19c..00000000 --- a/docker/streamline-src/app/Models/AnaesthesiaEtt.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAACAIAAPiyZuXJkGS5IUG0phossSHYCtWXg4e+FyuNBzTMWYGHzQQAYclijgH/Coi0DlUKeGHY60C1bYWVQj2/U+PKdREgqXcSHxy2jnDtxY9tnRJgnQqUqSU+5Eb3HG5Gmud4DDwC6Suqs072GNkwiYzrsE2DPWaPg51fSDF8s2bVGnqQzX99TOrLNJq+SCR49uBoIDJsYKqM7pMSVCg/3uiPDKHlhEt/V6CPToVpn+M/yfHxSupiPtjdIvHy27z8LB6dmrHGDfb/k/3uUEaJB0sFQtK8ctX99LSkvTyq1GvPG836eInygXS/isRVwPGtzLdEC7WDROqosGpJ6eYFoBsfB916AnBZZ9Kfbf8WoMbXUh7rC9TOYckT6fEt1Vq05d9lxCzjKsi9kuvMGNqo7K1UC73um9n7KlZ11Df1hlr8hBSFkl0SNa+l8YVbTJP8m7QRKdjdiz3Av6IaGGB7aNXcdVlCAj6vSP6S6e76khHjILWJHmLOSK0EjGqyRRKLnIqng0mLCQD8j+QtfbiqZOuEZUnIKKv0yM9QyKGyerPr4CmmyO+ZfDp4v+qKUlxLUCGtb9Jh/G1vyTMJS2Wy4AUM3T8Ilq233jAZdLtfKAK/VKGVp1Gvm22aYdcUxZqslBbLrpE1FvJkXMBjpJ14ot7OB3umovUWSadnpJ30C3+rDvE3rGK4O/qicbcAAAAA'); diff --git a/docker/streamline-src/app/Models/AnaesthesiaInduction.php b/docker/streamline-src/app/Models/AnaesthesiaInduction.php deleted file mode 100755 index 7ec4ff3a..00000000 --- a/docker/streamline-src/app/Models/AnaesthesiaInduction.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAEAIAAAjCWgMWKerDwP1YTDjBGL+9ckWUOVzrW1RHKd7wEQLuJPvGyJJSb2ygQOwQEKevQyKwO/JcXWKPw9zuQvYxKxOKHLXGNzllJmW3ulr1QFgF1RpiHoUoPNvCSj+eFsL21j9ISihjDBy2XI9JiP8GDCkLD162/8hP3JYA6NO2cRvtzv/lQMss79XtjJuErCCSJF1L0j52AzxrBxpyorAD9jQMm+8NlAsNdbUnx9V/cxw4HvKjOWXiW/ZvD37NEUP3aU1uJH4TqFLn8Gasctae2DY2KFultkVbC4zl8G5cQsQveoGay1y9Et2I9FvCPR4z8xiGjpvtEgvvuOYB/OWosTj17MJodUb6OmELU83IKlLHKyZE0UP5rmoXqtBYA4JiUKQwonh+gGlPzANnUJn/k2cCalHBxz3aSZrAGCjfB/tkughxMM0fLmWVwdTlCkmbV0fWGcPeU6vvg5kQeV87Htt0KW9cEDL6bA+NQ9CGYeQD8qs4nSLDZDLpSiimK6E7V0FvcDZ46vuvg2c3EvYBdBP1dFb+hmOoUgTxSKQVUs9/gVnl8+PEf6HgqBpkQUHQ1GzuWJZ7AGxngkELjwRS8gqaNosuCl2EBmDD/RsfOJY7Sl06F8jl9WP76Md+FcAjqZ4568lg+MqUT8q66cMaiX/C3NU8QgcOefUzQQluzipxJG9/PriYchVvMFvVYqBCIAAAAAA='); diff --git a/docker/streamline-src/app/Models/AnaestheticAgent.php b/docker/streamline-src/app/Models/AnaestheticAgent.php deleted file mode 100755 index f242df7f..00000000 --- a/docker/streamline-src/app/Models/AnaestheticAgent.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAACAIAADTDU2Ptw1hPLaG/LupBbv7Wxzn//m+mRNMkfKLFKEkmepjYoXneUy+asp+C4M1SmE3fPTmZVeaTw1LZTclQN9H+8Rj9SN4+VX+mRaiWJdiIvSV/+4pS80cIHF6Ht2SWeaCLcA65E6P62TP0JaT5o7lQRu9UotDRGyhRMFW4BxY6MTReeKX19aIJYHoOdLxcw3IheM4HtObfTG5cXw7pEWlxuWDpgDzjaaj1/zaf79ytsrA4PDDd5W1HgvVvhLLC18r/udlPLyvmQcGE21annoJE67JEP8qHGHi98WOeuB7k/YefTz9Uy4kxeJ4jGz7O7E3h9nWoq2bJXlgIfA4QbJd7gko4FlK5OpXuI+Gqjf//owSA1tiwytxTYJVZdI7nMFdxIS0bXXg5O5icvB/kQgqWeKcTssKlEveItSqoiKYjyK7PCTzGdm6x0N746gxgYYwB1vsE/1CokWa/Yp5lF4zd+wfMasW2bJzOkLCl1T1KZ4E622KKCEdHJdEmC4/BfOvfygv1luAq1r9ncVdF0dZ0uQACY/68Q0aBStCA+MyT8FfN6ri4d1QRmV+B26MZbNu7uCFmsl7zshf+Q1H8+WoUIjwbpJUq+wyNLWBuzAld8MlmxjL0Y2k8vGQN7aMwB7KnSQvWqaPNlGg6DyOal7vqsdYZo9482SkWiOtRKhkU+Ce+DUHJSXwAAAAA'); diff --git a/docker/streamline-src/app/Models/AnaestheticTechnique.php b/docker/streamline-src/app/Models/AnaestheticTechnique.php deleted file mode 100755 index 6d8fdae6..00000000 --- a/docker/streamline-src/app/Models/AnaestheticTechnique.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAEAIAAO3GnNzOEMRa7/8cAVWtYlRrmiQRowNMwhslnMXiLUOvlV9nR62FT38YFlMltCRodq6X08fxk73apVCDjNEhY/AFFdW7Bu0wJ31PxUnOrzPeUlW7EizjTn5c/hivFvr8kOV/Q3+vLgo/dxKOYw1vRgmanQI4SJqFbA8DL1P8WSdec514whVm9ucD+fCwV4WASfe4HVFQQheMbG+nzY53Njt3OCZETl2U3EYRvNUO2N708R2NI5+oZkyrxAvk0qaFZ9UQBhsQJG9QEeWqrmsGkFfb0GroYN3//Gvtp+Afr+JwbzBHPx2D8fhGfMJRI8wzAa7h8wvQ1FQm5edxCnahtjGTFIWsyEGNPuLVmEcFINOUO3vgEq8czht4obQKfzNVldo5Jo8OR+8BCccN3EGjc3xECbfFAqd/bPpv6oxpK/0s9pYkreG2Ym0UAQKaJgoQkBc+nyX7FDfg30dMI2JsYAuwK8rNhb56jfwxLFRPhJmw91yxqdSlwcXDiLdfII9ccuJ7NaRn4hH5MMwvMUtVmAzskSJDw/eRdscABmc1Qcvr9qeb5x+CMtnIhpqYMmLvUlKS1mUEKwl93KsDFG2aFvXlNzEdlsvNY6gUBbYumkA6B01ZZHy9c42g9g5kIzuAnN6ksQijvnYVIRdcBwPU+ZeM9FRjbmjT9Qg+JVPT+uoakx4zrFhf5e0DmrRNUeBT9wAAAAA='); diff --git a/docker/streamline-src/app/Models/Analgesic.php b/docker/streamline-src/app/Models/Analgesic.php deleted file mode 100755 index 0bfe67ca..00000000 --- a/docker/streamline-src/app/Models/Analgesic.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAAAIAAA6k02Lu2R9M/UaKd3O7B9oQVlGrIzFf/4HtFJHsPW0QIKnZKvZxyocHjIezsYgHSYOzkadlvEeo90fUYw7j8ycFDxIP0KMjaPhB8A3Th9fgQYMSLaT3wP4IS70VnmbM9vCIggDS5u5W1zn0FNcn7W2aV6ixL9Kjo4EmmSF+WTuAYD8ARaHW36UHULQijNFGCMsoBIayfbjBpDunS+MEugD+SmzTVbWqVxCyHq4Qo8su+IR2Pw7RSpyE5qv/wXhMgY5oF/eL+HEyeqXb3VxhtUFec3BkyaNZM+WjgNu3gCeackFKcL66nfpXgHO70PAxQNFGZrUOu4iF811AT1mZ7EIuWrXGyu6Q5fgM5VoUHV5Xg0LQvRs35pByrypU75BNrUNBUvN4VPo4Ebj2mZIb9VNZKNiIYGScQapdoHfZ2iVvkgHGyEl6mMHjX3G1ACzPvOn/n+tYLStrHS1n5kcPeDvA72YGWbOUvvJMGVKTYD+bLpZH+A0tsG5tLOvLXq6JMkhP/Zq9a8/mJg4TQwZUHreNbGwr3Q4dFxMWrYgkxakW8xkP6RuAZwhvf3DgWzyG011Wq5Vhh/FUBHazvOShDC7sdWSTiyOuaqGcUhoj5qvuB39aM2Gme4sH4/cNIZYt8gfK4ql4YerqGA//wvJZkTDiGABQHnpa/DLN028NrFktAAAAAA=='); diff --git a/docker/streamline-src/app/Models/AncDeliveryPlan.php b/docker/streamline-src/app/Models/AncDeliveryPlan.php deleted file mode 100644 index 97ac1c8b..00000000 --- a/docker/streamline-src/app/Models/AncDeliveryPlan.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAKAIAAN/ea6rVYEebg9Gpywe8eRcH7kOTBughvPDpZJiP/4p2hZBaujRTbOh0KR6YSZS3MTpLtbi6iLG749k505Q7PevNUDRRVyEo29EXsCrflK7tt2dl6GeYULt0mR+r6iz2YOtF2c2e9qxN7iX5lG/toU8x8SPzKJANHIDSZR+261nT5QlMyi3wbcjElKmqvIZNy7UD6TKd3/Qh7lWSQnprseOWJRrCpRV5T0f4RjxuVsgKFtsFOcdnWtDCDBOjsWEVyWbNixEq29caAQvbwSBz/4/HjEwTdCrPO6bJqamLUfuHdmKDPNYdHaQ+Q3FYQs7fuCR2kvg4WXsaYvo0IpSjB0YdlanT9lMd+uWS4Mr+/lrM5eVpGv6W20fiPucOl0mX+2DDOOOqESbFrrjVnh6Cr1SkplLePXAVgBBdDCE7DVQKZE/GEy8uIruIQDkxfLN1jbW0LmoBk6eBy1z+cahVg6jHKrNpIe/LxknJDuxxyVEwic1dF1sFlELzyg7l4g2AyGUWyGTK9EC00DgaTY3OQP3SGsEhs4KVygHv7YDYJbQliFZagiM2i22TI94ZiApNSxxwQ+BJHrkJBPCV3h5VHOi8BUxwY3WdJweXqlaFS4lSyK7k6+UhH6EsGc2rlD8xZ5WKVN3ICSSnCe0v/xsY6QWOUPzb1GWx7uOiCMR/MgY5XaAd44TVXfoZFtHyk9Ct6mZUmLlmnIr20QT+GEH8LsdwMxFYTHqX4gAAAAA='); diff --git a/docker/streamline-src/app/Models/AncVdrlHiv.php b/docker/streamline-src/app/Models/AncVdrlHiv.php deleted file mode 100755 index 14dd3761..00000000 --- a/docker/streamline-src/app/Models/AncVdrlHiv.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAACAIAANp9K+weWTwpKFjnvoKrgndQgOBr47sVPlCPjbsMCzLuXcavfi3VasqSg/XN7iekdqmP0KngkoC3mb0fONvxrZSXdoi+DAD6XqQHZ38GiXdSXpLBhbykC6nZrcptbNU/sV4XxW+RUgxqjlGWq99jCu4VvU9OPqjcUAzzSz2EiAqBfyMU2ndaIzmsy0GDHqC79yVjn7frAEmpj6YivwEMqaCR3TEvUZFueyE6sMgr7RamHP5F3Jz+0CVwTLBMkWXUPt+OODz4hWrOvdoIYooThs5veMCGHIzX1Jxs1/XcNtg4dFcn+qOt5FBV8HW1FEkhwEtHScbD2AZzB/qyf8Swzj9QwZGzEeyt63BfR++jN/EhTo7ARsCJ0gFSY+k4kZSLXQWhtKInQD96vEKvGe80phauqn8kFNglRMeF1Umx2oZYVMFUwIXCeFBEIEVpH/hrV4j0R+yBGi0t5WLIPNUf4SGkxqoiK0pVFAzbQ7pm0BW1XvdBo+YyOiyG6NKNKcIk4/LgIV7AXs6QRiUDQIjEVRitc8gaEjtyocu5xlPTwijgUJORaKysOdyG8ARB7LFerk0Ov5Sd9Tr79paNaUYj/dpgGLPK7/NnnrN+jMnBwaK85c58mKd1PfnvQ8olWosWzwEx4qX2IeRT5aXOEbl/rVBB0Mz5wc0hoxwbrUXIzPZZ/mI4sR4t+30AAAAA'); diff --git a/docker/streamline-src/app/Models/AnteNatalClinicAccuracy.php b/docker/streamline-src/app/Models/AnteNatalClinicAccuracy.php deleted file mode 100755 index 917a8892..00000000 --- a/docker/streamline-src/app/Models/AnteNatalClinicAccuracy.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAGAIAABhuMo7MhG2tMh1Dm+dI/VyGT9kN2H59tkBf6pFpzOz6Dde0ofpJgnRNFan5mMPRXgM4bbyXg6U6Qajg3kEW93+zVGCdP3FcDPVDUCV+UBmAFpcf44mQTszBnv7tkf3BonfI4BAKonpLqv80tCG8WwK759jeeWdooFFZHVDK/pZteqzomsqm4T35U6mZIbR8fhir+SPpvXKG37gUvsPjeT3z8aG+9LxXkMiEnE2bBMmOI9ZDO4Pd80I6Qr2S8jhdqEVdzfhC0Rkwm5ueMJ4SNqwJ3Raa0DK/nnv1vx6JsDjRPTsFq67rTm765uFPk5MTunffcXWg+grVP8D2A2++nh171vJr5VObJGnVW1q+lpQJAzxGhjXeouSZ5l4gIXfmU3+paQEc2/GfQ8l/w94vXcuKGESTl6if9lweU4fY7TfQq2h9oFHc+G21xAEuoboQucrvaDk67D+W7XYdAKL8b5GMMShjbM6mm8U0H89/L3wa+8QVn+l+6nb3TRfQig2/k61cuH7BTjA0n1B618ZKDcC2nJn2SfX/lzVSf+/YRh6JZTGn9BrFQUEsHTpoekxC4ICzw4atsaVZaIQLj7j1IrD//91jJ4IPGAG51zClSBxk2I5OtQrdJTIr8XBOEsJE4tqoOq+DQOEmIVg2S3e+3S+vnFIChi1EHR7Fshpu/GLiGbCeJkDPe7F2hL/2yRWBsVYjRS/dfj3RAAAAAA=='); diff --git a/docker/streamline-src/app/Models/AnteNatalClinicBloodTransfusion.php b/docker/streamline-src/app/Models/AnteNatalClinicBloodTransfusion.php deleted file mode 100755 index 231e986c..00000000 --- a/docker/streamline-src/app/Models/AnteNatalClinicBloodTransfusion.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAUAIAAA7UubZemIoNtgYGvY7oknNnNxMgzeY3hYvQcvdyYCCUYewedlYdKoDDkKBoXWIwz6zZdr2HavpzXAtkGRThfSxo1YVi49c7pBuCz8mb23fAQU4WjBW+VChtAR3jnBjlOW3SZvTnMhONlghBTblsEz++l6jgwTrpnibFU1iJVG2+PRR2WrRLWSExdYClhjwUXBf2gKlnAHH0WX4CucWboLWfhVG5ATyCisteMEJ4CXBrXnz/I2hFQCoXZkUFzIrbTMdN55k9ySA0+t2ze0DzgDIASFjn35wFJ75iY2Peih9Hzts9S7nD0jwKlofejB9Vm4gvs88Bc2y3SL8ioaTdW7+kLiLIMssQ0kNk9SNNhkNODwUiCT5RExhq06VHAFLT7nFeSAi1WMdzLqRzE4CmPL3Ckg1PT/FqaJaaJHkHTokT7Piej1s2sVUO8AlQ8PVo6KvB9TOf3crZGzUZT+0uIJzIpFUrVdJBjFWJ6PCqf0B68m/MdW0kOCLo4CPW2NSYI6cKGCElXIOzTITgD/+HYAH1QbFYXGGzLlvGPRFW47i4r2/eyix9prEoUkZocHc5EFu1Vy/j3/y/AoOntIFZFrPQgxSERon9iZ2ODqzBsOurXieEHv8eySm79562fWyAb/XI8bpEbNiGGmk5EZ4HTXRLeNRLualf9LR4yXVqvOa2GiDhAh2q45DN15KM57Y78r5MaYK82LBq9jJLIzwCrbfvbJENwz7nSxVaIl0kH0uYBVSuEWGkEZ7VvDUusGPIlJNarHpzaQow6wNrAmPp4xcAAAAA'); diff --git a/docker/streamline-src/app/Models/AnteNatalClinicEngagement.php b/docker/streamline-src/app/Models/AnteNatalClinicEngagement.php deleted file mode 100755 index c021f169..00000000 --- a/docker/streamline-src/app/Models/AnteNatalClinicEngagement.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAIAIAAFC4RGyKcP3iJkuiG2SkxHcGZ4cKeW/axPLrgsoRyvhW7Pv5XMQMIm45h+oudFxvTLC4G9aJi4RmzTEc9b/pXqsf2vDvjhRK+dPSvVX6WTSPHauPi+hgwf4pO7jSzDis1IRd6g6CsqZl+WT0FfdtA8DlCP9L0nfBLgh4/N7FramNSx5YSI67iB5r4PVif8qFjDy6Abh3iovXfM7guWHLK3VY7BC85Ichl6sIMakQBXDeCZDE8FgTWBbyqbJO2TaomIhYWtPizpU0Zbo6n09moG1mGfK3ADSstcjKqP2Ufuslk552JHGjzqDmjNgnbhteFiXqipjH+hjNvskU9/YY22Y2CpV+Mi++alQKumcna46B1v6V8fX/sYVdFhk4ceGsd3/IW25De9MJlzFB6QVEkll8s4h6qBKR47v+t4HDvwCC5VdINtw/7Ym7OuRrcn56ut9/LwJ223MANEGVmFxIdXxCz5qGA2g/UyI3ffobZiLxrQMhrR5AR7uMswymJE8RtDTau7U9E8iz3UAMgMQxfAO5Mcz7tzGeAk4jAmP/fnuHQYzgmWoLzf/zy0Tpcq+M5c8cdXLOnQw61eNKgxqlxjc1nQ1Nana//hXANLHs8VnL58D1mpQFcLh/k6lM4ZkC7pTqXwevEBgUhM32IQgkX/WTtRkkVQtHQTwZFCaFZagIRXubLtQmjNDVfnd6NeWACmvwT8yGaVhW5KkEExNh+sAAAAAA'); diff --git a/docker/streamline-src/app/Models/AnteNatalClinicFollowup.php b/docker/streamline-src/app/Models/AnteNatalClinicFollowup.php deleted file mode 100755 index 71348d1f..00000000 --- a/docker/streamline-src/app/Models/AnteNatalClinicFollowup.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAGAIAAIOiUhO9r30tqQhztDorg7ejEp7GNnT2Qj0n1luHbzb4/6BrTklYhSujHvJwn+xb/NwKm0oGRCrAyJT29dZ5Ybo6pREnnUmHM18cEM9CrBl6+VafpEJME1I2knw3zkTd9ZruDJpUVehWAgTRbsMbV0UDZOaMlt6zO4rQkANFJ5ciQvh2Teb9R4+lxfmYlvUlAzL6i1H5YQCIwoX0lg6sK79tJKEq/DCExgOkwCCjCSfUU8X3cRJw8CpugWNVp0oLiJ1d9xKaxWlzPZW7bnrgtq9apLjyRxy1Fv6VYgZNmoCiz8GVUkuJPONxlKeeOIflDAANtJxY8iS67+VT3tGEdOMnQ4D8jdOUi68yticIIzkEqExrNgiu3YN1Gj1FXdYadqNVlmiO+qWgp+OC0nu8Hzo2phyRQb9OQYGioKs7v6p3DzEzFJgiD/gHPpU74qkyYyuHmFPAmRAEBUELTOVYPVtanxJGdxhTNjhoCrFJ1UmWK+4xyrVbaY4F/wkf5Wu+do9HmMAfMxLYVyOj5qey9z/rm183fX5MAgTnWmvk/+Azel892vCPxtLcFvrAyX6/ppKvTmegjlQSJFS6/giOGDR4Y1W2IArVMzEKEsy2Vyn3hOxLyWbF3RB6U8lmd7Xc7RZMDaYTnEP/DFq1Cas/H44PetFEMWILk9dHSqvoUmIqi+Rmby6+S2FTb2wn9NcFy29xFg+CT548AAAAAA=='); diff --git a/docker/streamline-src/app/Models/AnteNatalClinicLie.php b/docker/streamline-src/app/Models/AnteNatalClinicLie.php deleted file mode 100755 index c0a8ba5f..00000000 --- a/docker/streamline-src/app/Models/AnteNatalClinicLie.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAGAIAACCZm/oTUJ7YhfKE1p4ZIhnxM4NDG9n6mzUEKOhnYrjnNvjDTIpRdzyb6yd66+ju2jRET7B/HUJi+K3bSZYmSzAk0cfugm7g8ONhS9KcCsA1NsgWKwfGHdeVk+0KTdMEPTSP4DNMNdso6fMWYHiqvZk33dLpn6ca9deVT45Bp/tq1ENnSJNHrK7cmPTB7aQwrPqZZV55Qd7qlrjJnhhY06zd66jA5fBmEZM7XEr50EyBaeDsHWnK5ZGYrwFQSvzUBgohox6gRiMtYYH5cM2KDTIQLU1R7nUUPF3QScvtte/Auc6Yd/6auUvIj/IiCUjfwu0FxXC6WvvCTiBbKg8oCeQafYfdpC3+s36BRP3RIE2AxO6byxo8rehTjf6R8qzR5w5zb26uLazST9e1Uf0yjErpGql9URoWkNVSIKn30sicAru3JlV7DWLrzFhxvvVOtDIjMMLWYBSVXICIUNv2Q1nnJf56nXc1FgYPF/7Yt+oXrarDnCHB/+pMPADOCUL0ZWhRgPsgl/a0CQsBMHgjIczmIdpUrDLmcaIFuU1RMu9kwJkLqpU81T26ljFFSuX2LH6EqAqwMi+AhmfnpjKrY/drhd2FF6Ry4fQH/JbgH8DYxkAMvBvfirjwWFuzyEbvP/LciYBrlM8eaG9iu/qFEcLOmU123S1BMvrR7BAkULPUYQMq471q21grdRkw5WatLDazYxb720WGAAAAAA=='); diff --git a/docker/streamline-src/app/Models/AnteNatalClinicOutcome.php b/docker/streamline-src/app/Models/AnteNatalClinicOutcome.php deleted file mode 100755 index 6501d269..00000000 --- a/docker/streamline-src/app/Models/AnteNatalClinicOutcome.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAGAIAAN+babGeOk9ESs86lOO/HUOHpLMxinCQ8qeK+nwkxe/StiY/O/goPD7YpqrMWHxxZyqvI66qaw8b7bO3fqeqkS33iAZv87RheyARVENDOAVCM3WhEIV6Yl8V8v2Cy4bmOszAURK/V9GePgaS7KlsBen5yhi9Ztu5qALMS5ErplbJxVSRu3jWHrb+T03X/pwV1hwJeWXGY+JlF8nqktEh0JXiFwCUTlnwe6yS70OUYrHqW07YNjTNOlDTWSiCFCwj7kEYw/7Eti3r+22QwbD03AEELKovNZ9SsZBdfIwehBwxkcbJYiZiZWF9Eoxp4qeYnIw4Hc0C3kehwx3oHfszR/QXeZWOwOaM+fNi1vvVJpB6V99oq2XiOZMzLHjdqBw4/YBBiw1ObTrfa1GAWOgvBsICi03N8PjKVCFENEchM5wUjWPnyh0CSLtReZ1y/zXmaN4bJcpwJQW6jyrJxXz/Enrd+LNRp1L30PEfX2jYvW2+gs4D+S6w7YseL+XGZ6KpbmWIgpi2EoBCE6wORU2H57wMRQ23xV/4PqNBCiTCezyptI7yqw6mMKIF1n9D61a995zuqH4OEvUIDdGN7eDY1phFOgUi8eAPPM5l0XJJwfRw2JzHuiEg7up7iaQyEafg/VL8u1DiRlrAeKVj0kRC69jmqViOmznqhugRwR4E79Ic3dDBNHJIZ1ycG1C7YTq0dPNjJW6VqfQRAAAAAA=='); diff --git a/docker/streamline-src/app/Models/AnteNatalClinicPosition.php b/docker/streamline-src/app/Models/AnteNatalClinicPosition.php deleted file mode 100755 index 328cf452..00000000 --- a/docker/streamline-src/app/Models/AnteNatalClinicPosition.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAGAIAAFAuBI2soG0zl0Ntv8RQ/WsX0uFE8QSThcoWQwhGGRrgEv1Z4Ll/7+zM3U3CN1hh/jHDdciyoqLfTG+oS2E1NtfrW7QZfAhb+lPzVgJ9nRmZJyBepPbDFbTGUNgqCGxqcJReyzIcKTKsCqk9bYBnnHLMhkOGzEEqAWtmHc4wfx+7nZSO0UVP+CaejoLlf44iaPBtwR8v+fVOyP0oXvqYRN485q4RmzG6waBsn+jSzbdWhL2hvKu40a7AfxUj3WA0RDjH+aqLMqP5eCrkqeJc4ybPRGyDtguRwwkqrzgJBoyLrufJYCUMepbJekrqmggbN8dw0oK9gDQvYArY7IsIq63qdrg/dIV806ewzcdYwi3eK7V5+qrenv0ACJV4gBN2IMDDudpqZEQBSWQd8oYjR+VhMrCNV8zGhVBqRdR3EpqzGwqKRgGMkaQzziYtThjvIF+NoA+LcnFkQA7H458vGs2o38jOL15nc+x/pHI/y892dSHFM/ugWwlLTb4lC78YZy7fIPkZbktsue5NUiRc1ZAZwHxx/ybFCsaLCYAC4jq+CrmpCoO+EQ+aqXoIAVfo3TNEt1NQorPCsk5tJzLLDGuQgwpwcqoZSCqOdrk+J+cjTSE4S4ex/y5bhDGXVGtqEWf7tps9X4fC2hfip3Up2RU5X9Nsln7DTIh8R95I+oIGMwmLFOUsQTnIPddLS9l1kmYOIEcFUaXBAAAAAA=='); diff --git a/docker/streamline-src/app/Models/AnteNatalClinicPresentation.php b/docker/streamline-src/app/Models/AnteNatalClinicPresentation.php deleted file mode 100755 index 92062ce0..00000000 --- a/docker/streamline-src/app/Models/AnteNatalClinicPresentation.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAIAIAAMSzC4pIpj7MYzSszUpMDhvkvjBKX9+W1ZQS+MnwTxbzlz3Ci/SgQ9m99N4Tqp0y3te8heytfKvzDcPdnM5PCib4/zJROjh4efBIv0kwgrX8rfXX/4VkJ61ncBlSrDaOKjerIC4i5GmLpH766TTC0xjkSI6d06DPOiHEpewuFUyRyRUqDs7mfT3K5G0FEV5V+8WWEyi8DtbcSTatUuBdmyheBfpI5yZhaSdl2cAXE7YbNWdcr8K7S6ExRehrrPZiafHzb/+Ds8VsnmWkwWpeic0IIY9qyqNXHEp2mAz3MQeJb4Korwf59khreK8Me2LnLbywBgN+R9CLaeX3mDPxMVSfEDNKxZqpph53XtPNpoyTvGQJR7AwXOiH/m0WT2cl5mil3ntLpZx3RPVVzeLSLTqu5MTTP566ppFIhhi0vry5VRmcZjlaXX2WRXuec+pF0hLliQS5jkHJ37bmgEBfZHGr7G9eQ8LlPXJ7Yvh8oTSmDfPVaWGDM2GJa0uVYNJTnBbLTG/kh8rE2jZz0C6GYWgh6KWA224ziNhZ8xzR4uryDxkLLVmpzkNky6tCUzAdP9NX55slYIjqC6I88+1zBeuQWBs7ke7pO7Wdn2LNvvhFLR/81OXIPt+cpgofFVK/fCkYHv/qAQfGkssPQ58vr8CZrY7y4PYrd/5jbmbyp7g2Hr4fRR1iDUeh4K3L1HfR+tXxz1HqGpnKYdHMZSDm1WgAAAAA'); diff --git a/docker/streamline-src/app/Models/AnteNatalClinicRegistration.php b/docker/streamline-src/app/Models/AnteNatalClinicRegistration.php deleted file mode 100755 index ae208cde..00000000 --- a/docker/streamline-src/app/Models/AnteNatalClinicRegistration.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAIAIAAPG4pc9icp76qwkILqSeYmQnLZEls8jTy1UDCjQCuuguU+2cSo1PcAZjlZL1d5hYeW7XEsOjHfLfOyxSE5Q32uijFq9Qh0gYZHnBuf05G3z/iK9ej7GPnHwUxTYnXlLArBi4wve9frQiLKWxn08+fwZiIomkTH9ef5KDskALHphcPdDHF0IUywdh0CelDUFjpNAIFlzGNk+ril+MrUVwoOQmirMAps7nQn6wBB1QxUf3PnPLlDNWOqi1o9Y45eXgr+AwGD3Z00c0sE2ER5jV68qE0jszIGrpKhI+rFoMNKnv/k+VKFpvj7A/bB5VBAUYq8GFWezqym05yb6eKdcz9ErKTdST3dVZ9dNbpuJtI08MD35Wb2/9HsD1/fturLal7Wx3xA1TDnaNu34b6COjAdiAvx/Eq192094oFLj1suP3QKPQ0YmCP4OtNwjrDy8Z/Bj/GVvElApJNxzfOLDLJO7J9Xlm4yiQ5MTw9+PDaaauaq1RHFkFY4TPJknJ8EnLINPY7u/9PVvY3DDccYRvR9CNP6lOZzVjkZ3yHQiGMJeKgDLOruv7913yLh0DyivNpi/91j3oVkxJqi3GizC7i79/uaseC0df3dgf1MDdyFe5IxuFdLvUIpyfJLoyrIYLqBizAEWI7YzafALVy1SwHPWHOWwLDQ0mMe/xg2cO4LOcDNc6oqassJpeSNYZoKMOy2nzO2xJBBZIXF9seRM4CJsAAAAA'); diff --git a/docker/streamline-src/app/Models/AntenatalMotherHistory.php b/docker/streamline-src/app/Models/AntenatalMotherHistory.php deleted file mode 100644 index a5f1b380..00000000 --- a/docker/streamline-src/app/Models/AntenatalMotherHistory.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAUAIAAHipuuvTIj51tJCrp4lTnLgcu/iE+m9XbUFYJoUErY3UU9DjOiP4FkadgL9QX39W+m5RSJPK6d51LjIdIq4PlqIMM230DhvO/L4wId1YHlk43B0z8aMuiyHBoRFiWlUBixpCfAY6rMXAVsnmqW19dXjGirB0RFLouT4Fr5mau3hXWecAp94GOHRd9BZXxa5YwKFjMDf3In5SujaYrXFepsAJlPxgmCRD0Twi8GVzLTIO1o7b1GS2p1nOWtZcjdreLR6fvppBujqPvluDpPzoxXyCYT0cu/vb13Wkal3Pz2JJbzFvQBpb9tGmWvuyxzYZppSffHCSXy3IHMsnpoCM191LhCfxuANDthJURUZIqo/J9HHxJKqb/bH8/kJNwlnmVaHm4VCE8fQITtWtMw5qSIkEPjLzt/CXEYVV/VC1/5hHw0HqCQTsu9bFdlnpySTxC2kCnCeYm7gub0u0PleJkwJWCcYJ42p3mHCxRGrVeq2Aip5x7T7V4mlPkm2u1TJUkkWh7XFsBdOp9ri419Lq9IQ1lpMCXSn/BJoNpI8/93Eck5Sjv/jlsa7JEEdZaAsrlKPUGxepSMCQKb7Xn7X/mJpf59XOCLebKGErOQoC0oJHJMqKtXp7DFqJiuoYkArhpZ5p3rCtbuzLAry811ye9W3ueVZxKnNgvAHyyMMc69vHivtiiML2nx1J2ktxUOuCgRvZtyrfw3yTMcUquotYhMihNZTqhmJ6MxMhqXQkpexsWNYyGS+bIlIUW3o9dADEQkPv2aUekrKSF9o/2ts8UZ8AAAAA'); diff --git a/docker/streamline-src/app/Models/ArtCardFamilyPlanningMethod.php b/docker/streamline-src/app/Models/ArtCardFamilyPlanningMethod.php deleted file mode 100755 index 90287a0b..00000000 --- a/docker/streamline-src/app/Models/ArtCardFamilyPlanningMethod.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA6AEAAMobUzhbMZLXj0xPxW6+Zjsazw7/YiKpD9RpMsO/lQGymu4dOH/ZTi8C2O2tp6JUw/oWngJ9k6kw13MNrIDmnqIDfJzTjNEMQLe8p/qLMt3IzOZI31tgWhK8pUPQgLcHv2cjewLFR4F5SCqWBaA8KmG5mG7NEozxtV3002vD0WQeQRlFxpA7bwe7rLHDJhFIE/kGvIOknOEMjNtEytLZoi90553cLVd5fNEDneJVbh+uLxkVLemEGmvq+MYL0IIrhLSErOwgiU93LLQVDHWq9i0yTIg1IBehYvskpvck2Vqk6K4L/IyBCQ+MFvdzg7qmBUh8ey03khCt6/+sZ4k4J65gJ4iVpDiRV33qq/BQh5arx+22AT0C+v0rHjtXtDJlY77zkf48+EgSaQ5nb4zae70VAoH9pxCxQaztcsUqy44icRCempKbu1kee2+qOSyT6upWpUMzzBHSoVg63UeVSvFR4TtQ/zZC0yp713ZXnwPngaDjB5J26+6OfiWUazolE7N0ES+Pww6AJeKfs0QZmY8cPOt4DQgGCJnE0MV1p72u+e4ZBohpXzWivLbxW9+WM4I7F/yrjXR0gnvpbdab4gcvbzCklBqJBBw3kXQZVSnx1eN2jRI5Iruc9OSJH54n4M/6z8ORAeLzAAAAAA=='); diff --git a/docker/streamline-src/app/Models/ArtClinicRegistration.php b/docker/streamline-src/app/Models/ArtClinicRegistration.php deleted file mode 100755 index 7c9ab518..00000000 --- a/docker/streamline-src/app/Models/ArtClinicRegistration.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA2AEAAE/L1PB9Ty7Z1zub9+8YP1FwLUjD4gECnSgGfghNKBuArUbNDwcx+50ZTox76Tgdfn+aWAcSh4S41+sSUIwByZiGV0yerWQSfAO/Beh5jwdaL39Ui0ALMhdIzYCetKFtP4WtAp1f3eUudjnTNrV64X/SVHlFfLPgr6dGd2CcFQGHBoLuETsRkvEdaz5UNfgANvgQ70HHBSCU8hwSzrPkXWqv1ZrZLsMotfFj+FVYdn+dlbJpHf+AbE2TZdevr1toPqvfWpu7ELM0XEpvojOcNw8iF1tCRtSA6IELdyuxo6YlY2rfhdmUdH4jxE6Izggkp9RiIGvmY8wx3nPszL98wDlfXFlq0Bb0/W7wQXqnwmTMqyjn//JwWHwcl9l+C4m4FqEsnw1Du5wHtB2hZEgCW5j6aWS//sVQryKVXM/Jp20yGlyJXDVBCA4i9XmMjl1z1xuJrymQlAkOt959kQlXzBCta6QICLVzUI5ahI24RKRPhZskvOQwXVwzUM5uhANI2JuvwsSubZTKhbq3LwjwQfg8/m2gWRdyRl/yuj0Z6q0gsCtPyFTCgP1zqqyiR25tVp9zf6SgSins/SuIYabppOa9/yJTSMZwfQLKqr2eqw0YTqlDZq/ZkpEAAAAA'); diff --git a/docker/streamline-src/app/Models/ArtContinuationCard.php b/docker/streamline-src/app/Models/ArtContinuationCard.php deleted file mode 100755 index 49ef97e3..00000000 --- a/docker/streamline-src/app/Models/ArtContinuationCard.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA2AEAALRiexsCmA+7U95vppbRP67sCTo/L6szcCjcK9B6uArG5VWvRlocuQZ5QEVFtmQHaKyZrPQJG3ybp/ltW1V+klwyJzQbx9MKqljaGNuB8B2V3R4/FC0t1HCyiFss59aNmDrfu3RhIuJFn9dknF8MXqx6JUEM0M+OtQIgDQijnYHPZ9h8UMUGKfTbsvdJ0FN+zas+JDTp1er5cuOeJXip80F/ndk2xrA7QmBlnrGew2GH9LbuqcUCNeWYYvkW0b3lZ8Qk699NJtdxF2S9UDdwhN2RbD6uhIdXqIM3YZ1rQar4IhNhvG7xWxAR+JCi+C7fjM+hGqOH+DT8UN0WWWsgsXFOQMWvt9rd1DNH6pGXnxTGBNsyoQglx4U8dQ+7NBnxwcRow+2BobLQi6yq2c+iwRt8pJB+gVEi7LdEf8DVGO7dTYEMzQmYwuux4ofqdaTJqSQ4uopM1gsP0uoUD0H9lTZPTJPPgYSvN5d0nHjh9fuzSTggHtIBRPzsEos492zMKAwLIEvE1pvn+50yCYIbgacOgwpTSe49JwxpHO99xWcz3726VsZJeQd0a8MAEMeM5sMvOpLRuoIRo/H6sMrvCCa/aQKj39/FfiCAgpUvNjqltF2kdayya4EAAAAA'); diff --git a/docker/streamline-src/app/Models/ArtOi.php b/docker/streamline-src/app/Models/ArtOi.php deleted file mode 100755 index b6cdfaa7..00000000 --- a/docker/streamline-src/app/Models/ArtOi.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA6AEAAKKyFqxmpMi4+V0BexGXgDdWXSvVlxo9c1+ARD+lOBJE+kJEEPecTIofJAWFMyzAokkBcdtUMD2+fVsNPmoUIktrKnI6LHGGctlZKjExWNqkPmtftmVZcSSM0alAyyUJJN2z8FXbfK4bVItpsN4PU+9AywvsqGFf/aDF427ZNiS14lisWN7dVHGXl24T3uVOl6RcsSD6O3hTvARIE/sohCZyBdw0Z7HwVGkHytXwGbWcdZy8uRcD76neebF/7986rR0BHV2xvS9rhGCqgCy/czeEy09f9ZMQFqx/3NHu3o/V2jonLcr4Indd3opXOJjOUW7WgG7GhysLYhB/zD9PcYgqd99Vn2Ky6vLnmSafunGJJbVuXaMMubV/keWwYi31thqRdHZ3O3iKQ3O5LRYWNV0Gl7ngQpVLo4Fpj2hX3NTRHogxUa0V7UGH46Q59oqYgqX7NruLd1tylQeb1/oEFsUWW6eHi9+l44rosBCvLc4uxYol1Yl5JCYwuDG9zpZHqre6WIPI0YAxA/C+ndMydK7usl8Hro3FOnVYduQ7ONHQs7fX1nBEp4our5L4uX1zamX91lMHbb+ghy8QIYbf31R34zzXBvQgk/D8Wb0x7hmjsA3oludhuWZjxy8IKi0t+2dIpni21l4PAAAAAA=='); diff --git a/docker/streamline-src/app/Models/ArtPotentialSideEffect.php b/docker/streamline-src/app/Models/ArtPotentialSideEffect.php deleted file mode 100755 index 9748997c..00000000 --- a/docker/streamline-src/app/Models/ArtPotentialSideEffect.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA2AEAAI1SoxIaQNx3bmrlwLG4C6QPT4G0+6eqD/MFio8Mlu+skqi2eBRP3pxrTwLzdWU9SEWz9ww6jY/5/RLVVQmo9zTBbXGSnBtpnzQnirVuZD6Y81thl/GwwtU6yvtpTaY9PXhM7P/sQoJUijwRLMgZF55Q6vpxdSq+cWkVSv2a89eZ5/BKrf+hmQpiudVO+CW5i0uiI1UYRMZUaC/wby3mXZSnBSChAJTGhmvXcnF69NIFTK+soV+NQW3wLYF1/Qkvzw255NiA7vFdFXzk07sWooYG5hEdpjjezun/xD/Qe7HbP96Qm+hRt+nsksiAssv7cEZeTONfCtAhJfK2Wd5yvW+G6uT9yLV4uWrdfWSXNqGQPMMUtiYPqjUsbPbPsQ2vyQvP7pyGlnq74O0qCZAS1vSvRvAMAkfDHiPAS4eEitlRsQlcMoElaYQvFknL5WT+oNPMLfjBdpae6vg6GiIprvvtD4Jossv3lzQboBUbS0bTBuNms3ibaCETk5LTYBFq1KfZYBiG5yUso37rLSnviBY6PxiK+sd3hjfigc8Ctl8G3YvR++HH7b5WOlwmPiNsihQTwu6k1AP8UDRIAQrDkncE7B0EnL8QEPd/tzGmv+01Wjz8kHcBnnoAAAAA'); diff --git a/docker/streamline-src/app/Models/ArvAdherenceReason.php b/docker/streamline-src/app/Models/ArvAdherenceReason.php deleted file mode 100755 index b6e9d256..00000000 --- a/docker/streamline-src/app/Models/ArvAdherenceReason.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA2AEAABrfsFAk/but4/fB5WZsLmJOxZhwUhMWKcRXVBov1KDwfVFWdx8/3ylekt2+V/FN6M8O3oznMMq9pnk4RleNbv4RZ7r39s2R8D/SF/nyaRhqfACJaLyn4VHKtEjEa21Yrhnxp54Hc7aO+N1bvhHUR4Ia8y+1K/741Sj0cFJSH1LIHM9xu7nd/JYtcp8pj5jOI9HuoCeAWNhm4dlUdGbnVAagftURyy4kbxqe6CF/nq7gY3XLFMiZZAZbSKwOOlA0I49iGIf7AVRfsZwfHX5RMidEmepI72aO2324TLkmEovl+k+n6KVwtLWZO9s1j+VLdoW6Rt8NVY8tg1Wwh17VGpOoku40M6DOE7pTIEjLBAOej/uW++rH6mW07UEfx1MG/qH/ux8rMXpNbiM4ftO5GT0ENVZjOzObrDlYENOcS+57Sqay9kCvn+oWrFd+Jaz3GJnP/ApoH1Fv4AknPbfRHyJE0K518wHhnX+QPLivW7FpzQ9PHXd6ygB/IG2BmWbqjDJqdCZSfg7D9e6Imq6E5Q/1gKyj6qwCZQUzZfK0y/1aKcXZdaVMjOhbw2FLTGdPQicZjdE25bskK5gyzIOTVZvIKZ0uwfjcSwYS8UOxmhOXxjGg6/NcBfwAAAAA'); diff --git a/docker/streamline-src/app/Models/AuditModelTemplate.php b/docker/streamline-src/app/Models/AuditModelTemplate.php deleted file mode 100755 index fab01135..00000000 --- a/docker/streamline-src/app/Models/AuditModelTemplate.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAYAIAAELO3BJsk+52P8lqwnwSetmVsqBObL3fIblX0uRslwycHctc4qBFx7aHCxiKOqghKZLsgNq9qBIOVkKpdNIf2V0iiU/l/vPtwIluFd61QucXAA3rmcvauh4XDessQyNZWsUk1B+kaWZPfdbu65dGLzwmXX7L5UL8kxkbUqSfVN/hfp0K2Q0nOzqshd86JNgD/QtdL1R0Xc91T+yUpG6BJIJbdTIu+yaIfw1ULRm7lSRlo3butDc6KwhBzcreU4O9Clk0jyKKk+yn68SdDemo4WX8+FBqS3xm7V9gwgRBas3jfsr1NpjVFNAlexpnuj58rmpbjtEadefpCC+uIXUTOY9qldtJZy3cFG3DNNAcQU2mxB7MaI3N0ikeQNeMJFCNKTdof9KJtbc38Ad+zOT0v6p2b/n4ZTjXbo/6VYKkBpvYMCtT8ld7BDNOWvCMPraORMjt4/wEzIDjb/sTp4eTmZxbv/ECe0W7syHYbb60PAAnnwCjvl2mt+715Mmkb07xULhu2MAQZugu80YghP1fR5dscxtUMZMxqdfGOk5FMCtj0nqBWVELQ0k0NTq2FMwzmHB8vOABfmLNrzMIAi8oxSaDMdzWSBwngkh/Xr+/FV2gx2ztblm6KyVg7B4INqEX9T60/tHOSedzvtva++92rLOZLrUbsgbROXLct0Gq5e7iux+Uq4YzcuRHNUe5/jcpN1U2qZi4MlbdvLdHAcU4qWI9qMGLjYRF31q46HY0qRM+ngvGdUlXDZYXo0J0yLaTSXw3SWAcF90dBUHHk3Fx5odwZrseQJ/77Ayn1QCgSNp0AAAAAA=='); diff --git a/docker/streamline-src/app/Models/Audits.php b/docker/streamline-src/app/Models/Audits.php deleted file mode 100755 index 48acccd5..00000000 --- a/docker/streamline-src/app/Models/Audits.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAwAEAAF4XR12qzVaLhWcB2UENvAi2NSSWax2EgmDcBAL8zq3LiLhiadTt5XDmGcXmVkPrOrmOqYY1QQ7qzul5WA4wKJIaZA5Gczngt0zNJsiLQLTkB+0NRIbKfz3rk+ftFDOX4jAdGQhVMK7+k0TnUVjJ3U4nd4mRt+SzUuGrjhTVTCOSsxNsinLYg1yWxbKKel021n0puTPsDM6JW04wBDIOblVmIapETI2Et/30AUInRXUYdOiLu7uD7rQ0BLGi8dV7zzW2UsBaY1Q0+YDrfA9FBd1ip1aIsvBHttqLGRjKjErqTrHBW7/iqASoM2ll1QEd+NJtFCecieYDbk03Fk/w88DWdzm0HtZoeuTYf/jyEZLvXyuuc5mbMpQvTa8GaVUBfTXK6a4gCPuMztQpVpL/Pkpw7B8Vs+tyeFkVJ4of+j5X5du7484fx25rg07MetWBR8fhiXS5qiPvrqwWM8jV4V3SwaRngSYuii+7NwVEORP5f9at9ylcYRQGBstl0g42G2EyOHK27Y6Cx2DummN7pyTUFyhqaLWPFzSgzuMpWedAekBJpW+IYcP0gB5luGg3vReO7ps3/sBB78u44GWZc00AAAAA'); diff --git a/docker/streamline-src/app/Models/BankDeposit.php b/docker/streamline-src/app/Models/BankDeposit.php deleted file mode 100755 index 1a4244bb..00000000 --- a/docker/streamline-src/app/Models/BankDeposit.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAKAIAAEP8yqSzy52I2rxDq8DS9E+agrV6HRiJhNwTCWK5gljDYMC5i/8OEf80G35iwFOusnVN4rpuYx0ZXOyCOLfMnazRLQUP4TxPpLtqO994uwM7YBJJU9nd7vay8sKnwDSTf7Q/pu5abfszBeenQepICEHQWusadwDW4ulkIhQgoNvG34kOGAuBh1RK1n0oIwanERk9S35+ObJ5lLsHSdkgwT1+XDSaHP/eaD3p7YiQhCT5YuZzsncFc8znQHecVauc/9mi9yGwldeWaDiev01VZzqQ1XRUB8RjCgFxYorhuidk4C7s5sKEJKKrw/hcdhDe0wvKo9X5VkL0bNmoEs1OBZ5VU9lhOncZnxmggJELd5NiOsno34pFSihw0BZmZ1dNd/jqAwV2sQE9bqmeEHJ71wWNWIBK+WP6g3KlXmkHnCCQWLu5oS3OuMqrTNWbLEGW3EFZwyYiQMVbQtphkkpZSozl0oKo9G5ssXSpsVYd7flcvmwJijomnJEuRYVav7mq5ZRSC9rYF+nAvX2IFqgijj2bQXGxjVgUtAxB2XFbJMbUyOCb2VpYV3qO8971cggIRdUKSSdNprawkG2pLZzhIsk10gmaQAoHKq4lML1gb3qqUKJxg+WfebQihzEAJvwYgrTuTp11XDVoxdXk+ummE8Hk3CVycWcgYaKHOOkbDd3mRy7MpvQmnB50z83VNbBiyiT6G8bNtHVMIzLpTYyVxtRX1OaMAAmyHwAAAAA='); diff --git a/docker/streamline-src/app/Models/BankReconciliationReport.php b/docker/streamline-src/app/Models/BankReconciliationReport.php deleted file mode 100755 index 6382a6f8..00000000 --- a/docker/streamline-src/app/Models/BankReconciliationReport.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAMAIAANXikYNkKy8IXjeZwyiV6sEF0tZlFjNNESkmvaqYAGAWEAnh+4JtgInRTQCe2i4+dDBZg4OhFqqjTChfbuxtYX66Gh3PCz4azeHuBZYU1TqZqAegZfIXMLZr9fkTxprMbq8HB/LsrgkYvsVxlcCaaCaxreLL/Q4D1z2K5xjbDdgaMEf9BrDthMkFanNY7p+Qqp1B3RB2aBH9YQoVKNJU2mjbsKsw2lwAPmAzQ3gVFMXHD4D8sSmczqKHM3iC9lQmwkoZSDyJSPcn30Km6CNHj7a8AqrZOPCVekVsMQHARZRPJDGJY87xLhL3QFkCRZ7gAoWJYo7xjkac04Q/BhzbGN2ws8H2IRmzFi7DfgWcQqdTensObWjNqiiqTUVrEwFDbeMpfu30WepiVu28v2Is85eXPde/Ce/gV/OJGwPvzsdHzir4sTkjiIkGWrkSBQI3cv9dgggPbH99TYSw/v3bXmnvWzUqiS+/K+WvCBuJ38O6u2xmh6ozwL0af4yWOQWDsbjO2miw/pJ7W9Do4hz4lMkKRT1r+owXS44oqApU4rl/SwTcSuXvSnGYY7pLbWlTctgHtyWXwCTPXGVL1zM6cU6UDoqi/LIR/IONvwk9G+6X6jAp3PV52AgH0Ressy1Og+QZ20UpRE6KK5OQAEMFwh7p76dXNMQ9IqTKPN+jsPEGxiuvAQ01qqQ76Qg0yx0UFwvwDBmrrZtBIp6ByaJtOEm8HElewRxjHsFM7klSIcA7AAAAAA=='); diff --git a/docker/streamline-src/app/Models/BankTransfer.php b/docker/streamline-src/app/Models/BankTransfer.php deleted file mode 100755 index 3ec3837a..00000000 --- a/docker/streamline-src/app/Models/BankTransfer.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAMAIAACOHn0/Gur0hT+pMi6LyZPV56rWz0tzS6mgRGaHT9jxy9p7VQAgYGwImbLokIIaUMWjKqOO6XjQUzGjPrZBmsAajzk1Oz2HtRYUS4p8RxwcDZS0SKjWJPB2nYanVcuyPgZ+5IAEEGQ/p9laQr5VHMEGU+zVnXAjdt7+qCQPOXrMOyJrEHLfm5MQsLh0XTNp4f/tjUQchedVq+g5uZQb734COYts5tqEfqBF1KGg4JBVSxNcD8wvFo0ZzpFFSIV7AuXrpeiDbZ/ZaGNXHNtHEZWSY7V+DtY/1CFrd5I+CFBbZ5Nus8zASDMV0+x+4oHY/m6lYVmb9DhWA0zVpkYT2osQN+SWdG3PCGAonwdhhbORxUHoE+7y9Ga4oWx9GgwfM7nmPYRG4OxvT85szHETUWYW8ghQC3Q80V+mpWtRYMoY6QgDqvWt00sYSGpEeT+Pf7RESho680jJF/nOxl1ja6OkS/ieOhFcqHthGF9rLmu8owcV96jscj/2jaYjJ9QuTSYKsAuINqHqVg5CVWs7SMsbjKF4qrqoqYgdHLbMC0Fx36YeSlfRBNAfq1kW9qahvSGLGTuLZFINd2lB+QjETTgjOb9m/9I20vKpUjAJTKc5AaQ+LAAn1CowCULxRWdmOy0viPWoJgZQ4m3gcMHwADAXpoQeGIgCETDAv8qWnKaSOqNfuayG/2grXmP+dHWOO55Nuwsm5EgI2bJvqVER4gvgGn30JlTPw06+FA98OZuhjAAAAAA=='); diff --git a/docker/streamline-src/app/Models/Banking.php b/docker/streamline-src/app/Models/Banking.php deleted file mode 100755 index fa2154ed..00000000 --- a/docker/streamline-src/app/Models/Banking.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA4AEAAEbo186RqB1XGBxPhJqu3I1O9ZkPYgZP8AJtmWsy7jPZ8Cba5K8xc03XEvVFqC6KjJ1wfpCHLThuNc16PaTsFtvgiiGMUe5gbL76eJ1rAsaqxQBAUXV1jft8c26eF281xjAk9L8heSifdt1J9eLYjtlrnBF4mew/T/MumbuHm6/1tMwAiPUxDK+pDOxQAHq4rCBvawNfr6Yh7GQe6HvjWfgeDvH/g8Edwk5pzzpZxmLNj123br7EXwl1lSSgTbfGhoOX8elMu/IRF8+X0XbA5aS9hhtlPYVwaQUEygFazfVyxKDTK9rbegSC94CmZ/4bPhkvsCHH3wM+UZe8QP1zvTx6GT4ne2v6Ba2WdNlsPw81q1AUf6elrFcNMCAuduGmA/9d0ee+crVnCW2/lXoidn3vDox+H7A0l/YIxFJn3IbezjN+neBqr2ZISCIYXSd8GaAdeg1zVFR6zdX3erkQUf2XMjKs6CUYY2+9YDLL3vyvsaiXz8BzcA3WOPd7RpG2SDcf2fyp5CSFZnKgFXSt+2xAYNHHtYwt8xATsKr5sAHb9CI/1rvlZXq1LQPIY91/PkfgkOdSHXdJutiUUS/YZNFt8GPwx8Ke6DDqgXF1I4moy9qPSuNTZFqlmrKQE+8t4wAAAAA='); diff --git a/docker/streamline-src/app/Models/BankingRecord.php b/docker/streamline-src/app/Models/BankingRecord.php deleted file mode 100755 index 09bbe45b..00000000 --- a/docker/streamline-src/app/Models/BankingRecord.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAyAEAAG3vcLarBrgtgu4kTNlvY7eamQREzX6EfrD+j+VLYAwKSqnwBXJgWFDaQzOQAFehrULdRgOUBdFPOiR5yGRPNQaX+xONSP63v2yP4dlSpiUj2J9bTTWTkfsr0pgbg3ZNwfDzGaKU0t1W2tSMiDrnmMXWvfa7/Wgu2ygwQMH7Zo/J6dOxdUYz4Pijj3N9uOXWrkDBIjvOPFmYMWdHK3C1AW4z3GlIwKnem608V/ZQicb4a4A7HKsX6PuSqtFaFBrk0ljV4jR1NBUXAF5j0qUVAx2CRsna9Yw/UbchJFKo5NlLngU/g2uhnaj8Ky1BAhYGviIvgzFM2JXhWPwok9M5H8sCwNuyhLL7lTbeMoIatRp4zVgTCkqKHhDp4acSv8AOUtzuvMS1yy7vm6Pn47dRVguFL6+euirwtE+bx6yGaWrLTbdCJ7uxfIlF0JcwxkZtdKOpvaL7Qk6uJzamlztAt5pNZGp7wZjHujV1NfQLYEKP0/IfS6CAYqG6N4iX9F0p5sMshXpg/UhqMjQundmg3A+V9OoZ83l393iwdFsbRM8G+s/6zOUH5nonf9ngOtEm7LcqkLYta+lBoOHzC6bADhyLEMHg+yXRAAAAAAA='); diff --git a/docker/streamline-src/app/Models/BatchConsumptionTracking.php b/docker/streamline-src/app/Models/BatchConsumptionTracking.php deleted file mode 100644 index 67f398c8..00000000 --- a/docker/streamline-src/app/Models/BatchConsumptionTracking.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA8AEAAJ+MDmw7F5Ag89vPkCR35Us/Z/5jhY3y1V6kcPt3y+NQ+ZY10wnfSrIN610JEitwj5jqjq0mfyIxH96KrDX5CMJIjW9Ao8FYqpiiS4tAV9LljyO9zTP4MB9OYwb5N8Q/WrK/oyrU9cbSNJ+nSPXMEfiw/SjFMbpgMe/MxXFPtPzAwQKs6R6wOT9rB0ZPD89s0IFZI4/w8o2OnJYNro0vCWJfgR3jf6fePdWuK5DvlVxZnmkPkmtlvStW2UkDQugK+1X3DiC+P/picQwELjUsYGdXNPdNP5nrz86M13gQ0TVa02xwaYgzPC3teAASTFi9UaLXA3U7UXJUV8Hk8IRPPQ1h3NvvHUf2WipBjDm+KWmNMHLIBxoYQGqNv5Tr7a/yNMq7JMK4diPz2Nxj/Id4B6YaeEpw7qUXVe3Lqlq2twO7Z4bNYC9YL6n5kMTlIAykR/9Lv4bMBc0tmVIDXHrGCt3SHU2yg7e5AV6eyG4JeIj/c2AGa53TfaAt7TTQ19vupAr/cM9mcjX3WYid+BnbRdk58XGs4/3ysQYUA7RdKg29gm7W0P8+kpf7OcLzr9PAlo5KbzhejoVNQIkaMd1ftmLz4Qd0NguAvrC5D1jFTmWWbwHHkGJWPiqHBCJ2bdsf0GODu7TJsYiaabgvl70dmsEAAAAA'); diff --git a/docker/streamline-src/app/Models/BatchDetailsForTemporaryStockReconciliation.php b/docker/streamline-src/app/Models/BatchDetailsForTemporaryStockReconciliation.php deleted file mode 100755 index 6d5a51fe..00000000 --- a/docker/streamline-src/app/Models/BatchDetailsForTemporaryStockReconciliation.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAOAIAAAflUeBE2j5br9Ii8eli+U0dCLqp4QkqNtbNyAS//JeSplOq3cy9hdzgh5R5XpviyLCoGW8lRwUt3LwrDE6kRJ8nIljjTisxxqoOlGXi059yF/36p6Lzx/2vNVpmR7HhRfHq9KvuW1jtsS6bKCBMza37NOub1U7k4OOH0Kq/UnzTAmrFwNZ+mXX6W3t3gVUXysMhau/fAhUXL0JKMfYBKSBdyK2fIGEu1hZyPrYCGPVwRLUoT5fRNA++KUx9KJvJHjf71C7UhIqj4ATsaRzueqLG6eydVmxyPMSrnPI07CNgU4bIL5JH8YH2UQlrANXwcKhL4nPSLoTY3YWTkIdB1K/V9quOaG0RYnYQbSjuiOPIs+5Q8fRIlHaaDLDN/i5i+usP/OSoZPaj2pld1ZjFYYi1Z1FD477QJUsQTyoUmUbVx23+c6E6oEyjgyXGM96jg+i8HksGI9ZFt70FECo+5qi4ofx/haiFsrNGM02+IJ4DuXwFn/GJn35w4XI77Df3n92arp3yKnng/+UtXHNuxFX9fJWt3RjP3wf8w7wbSXI4OhLulDyB6HDjg/4Z/KOlGXh8qWWhp4OJm/dnDaiJOshHpxkMrVwuN5gndBfPQOec7teaUUySegT4Fh1gZsKhnrOhKo79ncwg3OOLP+2zKVv6wDZLLkF4yD2iY+SCGeqUx1xJWzMEmHelD6qE/HRGbcp8vv7NPYOoSUHI3QtvfdzxqjPheFCNWtz7hZVesXfTFnKD9m/au38AAAAA'); diff --git a/docker/streamline-src/app/Models/BatchIssuedTracking.php b/docker/streamline-src/app/Models/BatchIssuedTracking.php deleted file mode 100644 index d5daaab7..00000000 --- a/docker/streamline-src/app/Models/BatchIssuedTracking.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA6AEAAIePPnCo/wHhyt9aZ34a2b4OJSAkub3JfuWKcgr0iIH9uhcXfSH3i35o3KBmAs2q0nmU3sWXO82gD/c6OhtrpnMUU1dwPG9a9uI7hTN5jYgqSK1xDEOe+4CzTZTNgHtOykfjiFRUzMZMQiK11h6QzTwrJSrJbWLZkt0ySTzOfcQwy8vB9Jfkmsf7VKXO0I9UCLR18tONeu07Pp3rqFQ4rrP7PNumwdRr2OjPFtrwBQFGofiU72f95FQiY+34ch+ewfpWUxlMSKJzRupA/pnUW4V+5QVjZMfSjhzVs38/leCIE2eX/OQdDYS+92QUl0Qp412O40Hx1DEJKdddZtbnaeWDaOukeLUi6xQpAEqvx2S4UsilvLqfStvhxKkKqv49Tr0LJngJqfOQRJ1aWv5kyiPkiYzOokmpOlTdIoVzZrp6oHwbiy4hZiZ/x/tyUjqhtzTemLouj9fCEKJ+ey8xxiEb8qwwOh18yIVhcb8hyjlWlQzB0aHOh/2EbTJavwMJYncyVXmIg7KVMCSC42sUY4qnszCDiWwgijKBNsUXyDPWOixlThTqq5aXemWMfQKds3QNospGYKdBZD6pHcB2ZPJzFBXdKKpm/JtJUEzWSA9CXEswClgvZ4VjAHdxjsD52RZcp8J6+0BPAAAAAA=='); diff --git a/docker/streamline-src/app/Models/BatchStockWatcher.php b/docker/streamline-src/app/Models/BatchStockWatcher.php deleted file mode 100644 index 707b4210..00000000 --- a/docker/streamline-src/app/Models/BatchStockWatcher.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAGAIAAPoDh/g/orK6esghFZ9eVhhE/iw+Gs8P0m8fdxf4qb964Ju/kH5cdh0MggrQpDdRySBELQut+lxEpaTip/4Un5NHmOPmjfQEtAJigjH9yqeWf+j4JTshvDVFmYF70loAKFKACMK8AIowGZ8Rm6MpdqKChtIhcZeDQvhTkE8Jbdrld7z8tfN3kK+nyXftfH1dMtmVssfkmGJ19DA1JeW2bRIXqbiyv1PZZoT4t6hbA8CSRgh/stsAOR326un+uBLAq0rLAYHMFtxxNCCezDKVbyL1QtvTqKzccAO53Dze5tIYetBAx4dUtrwJ/sm5uMx8LewqLkUIqcUpMXOMpajYVb+MuIsv+MjYtD6aBf65MonQSSLasQl8hTi4GbvWH1x5pwM/tuPhTMIu4S4JXq2+1a4QxgSaDAcYQj8OiFFx77yCZeuAlou4D3Kj5BZ3STfLHMFYo7YdZIQFEqzpV8zMuYoZ7qTV3Z3aAb85Leqnp4gPUVaKcyQncJtb8ynk6hpoiWJQZQLtyTgi/w7WgOmlPW/9yymNWkQbZmgP9HBFFdqBy/ef9fI/fh0Owz4i1pBIzfnyfAW8o4RVatCdyNuRCPTEZk0igymfw52nhD6ilw2XIB0maOrZXcbyyYWhkzVNLoj45G6ZOg+VX8IKvYch2OdAbhmvDmyVLu13XRe2pibYmrLb1BAb4o0g4R4zk0S319e7NRx8zcAsAAAAAA=='); diff --git a/docker/streamline-src/app/Models/BloodDonation.php b/docker/streamline-src/app/Models/BloodDonation.php deleted file mode 100755 index 6028d262..00000000 --- a/docker/streamline-src/app/Models/BloodDonation.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAGAIAALy6uBQnNUdzhgRhrPEiYDDL64r9u/s7XjIm+L0/q2Y6GMkNjb95hMXHbhD2SzFFTjJhtr33/uCNxHlUBNc9t47vMFrI5bOxrUzeawY08PaP1d0bIV+1ZfofHqXO5T7o7OJyBK6K5P6NS8pFP6GgpTqJJydF+gDtAwhsrDm73IVp1wUg/UfoiUfH41z+WGoB0IVryCOySe9sJiSXxQFB+mxmXvced10Ox3ruXKiLcOPFSGUv2CLCmS/4OeG4yleesN0j0E6Qk1byNif9B2IxdEIZF4ev5k/boB4emHUWjOgGDNQskOksC0G0Rp8CAk2n2fwUvnUG7pml4lZZx1l2TEJQQqmaIYkLDl7q1612TtWgPLGmyaIUPzA371/5Jog1rd4uL5Bl4floBY/6ANVUrJXL62/UFwKiUZr2SCUEi4HYHpPgkKofPE6AZuGnJPJHf/1I+yq8fqbTzgUxGqHNpuJf/S0oofI4bbPjsi+InlOaNYntNk3DQgNg1rE4Ud/0mTfmkt6IvgbEEr5PWc6ljFTUABvx9ez60jLq/L+Jq84m05ysUMh57lcGohZ03Xx4LIf5EWz3/FXfBJb0febkbgxUefiPrNd6iQXehuApRmmjgLmQQErQSoOcUbwBa3ZqFOUMTB3BjALKxNK29pUiHQ91i4kYsa0KO1TAL4MO/4FFJYf7y7TgpIxP+poOqva+7lJsmaEtPOvXAAAAAA=='); diff --git a/docker/streamline-src/app/Models/BloodGroup.php b/docker/streamline-src/app/Models/BloodGroup.php deleted file mode 100755 index 02041f9f..00000000 --- a/docker/streamline-src/app/Models/BloodGroup.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAEAIAAFXIhBFykYLNEJlAiBGn/MGUQPvkFMA5gWlGsd2rqQPCaJxohLZfl3HdaQ5ArjnDeoglhuKgt5ulMqOPD0x1ayzbu+QA3zdp9vxIdPxKGL3KugwFiIxB5usZnqOTP6Ddhcvt+pqHfcpElk/3668nItvgvaOrg1sacjKZHk5YvOhEjhY3CxCiYNwRIZKZ9w/aWi2twupMwH7Bw2Y0ycVC5S+7WNrbMVmDgsBgJPGUMSiYivtB1Ggu3CYyvWffFG3mZZYq1QWW6ZQRyk6xUllzoiGVMB8zRNGqPdpdMmALkeK1Er9K73xhmjCAqZilIuMqW00DB93xe6DnAAYsu7J12PIvhTC90kxN8roZgZfK4ZCy2HQhMW7g2bFRRjjdyzUUznKXOm2Kq/TrA4vNmmrqmu4INJt08Lpm7Qh3C/anH8UXbxptnc76+s2HOnYsW5DrRO4x4jgbiwo0wtQwLlcmcWeVHggDrai3aOP/xaH5wKZt/nPpgAFTPirWAJJxvR9ggTRIcTnzcP2BpBXpa2/bk+it/Yl8LLFYziFtnKNcU2bOxfEq5VnAuLcyqRyUz/0iY/bxbRsL7+VYDl1yT59b0IjPGRCfUAL8P+UYu8hexxdkQfHYFPtt/jEe2kYXdkBbZ4NOyOUux3OX8cFDGXynwW6V+14HD8j9/1tBDpwYe5mkOxdJVcRMOebTNSdvtXS7BgAAAAA='); diff --git a/docker/streamline-src/app/Models/Budget.php b/docker/streamline-src/app/Models/Budget.php deleted file mode 100755 index 6f614c78..00000000 --- a/docker/streamline-src/app/Models/Budget.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAASAIAABWrWNUHZC7JcRamnhDdiKSvi7PIeKfnSYQfHj3r1cJKuUX9MUgjwqaL9VcDXAmcFipZ11juz/U95KYyqpvUGBmRDQZhoe4dew74K3F1mLkJfD/lI0ZhVEnQPm7Dbgc/TX8lxUQpI+XGavL/n4LRlvASixz3ebVcG+zQd0KInQjqCd7eMvk5QTlXpTKuG6lUlzJ6hlOEIZrPkd8VwHROKRhQfMlVXRd4gM1+l9KXwUxLXEPP5lplkRhxlkgc1HoMoXgqZ4C7Ig+g8VqAbwkq31qDXGi+tL5bcOlYPEkQaRN22AwRXXkSj/O+49xDT2PdxUkL2szw51IFJGGQYpt9u2SR5/IITPc9RVTOpAtFGKMrtlCWmJlGVsSpZ+yLsU1DHgorod43GAVOdiMdYPhXYZKcz5jh3pJMAqSsBYlEfRqMjW/F4cn3uVAdd8veOpllLclQ3otDAA7Pgmf1emcp70VYpnzhG7oBpTK0FID3ihfxby9v0MJAPl0GQqbOHhvQ0UHUBUZ+Y2uJyuKtne3MkXwuczUJg+boj8lt5qVHN9dusm7ywOdlb8Eoz+Pqw2yWFF+figck879hupIwB2mkVJ75QDjc+Sbgweww2S7U4of5zVK4Q6Z+9eViRt3M4M7u3J66fTSRqIXjEF0opgZq/51053nGSckgUOnovH/74YbTqoWbp4tPUyxuS0FTyJxeJHA9QHyIKQtxwKgg1t+2cN5Rcp1mtGgMgY6gTgzgiz/83rfbWUPdhz6dYYlimyhM4U+prucNwTCDAAAAAA=='); diff --git a/docker/streamline-src/app/Models/CHIDeposit.php b/docker/streamline-src/app/Models/CHIDeposit.php deleted file mode 100644 index 61663799..00000000 --- a/docker/streamline-src/app/Models/CHIDeposit.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA0AEAAEgzbh9RqamVVnwsrMiJNHhcYOo5y52NN7825cy0y87Z52FBQAEqzO2u9dd6rPnUc0YCW2aF4qMPtldaE+37oBpElg8W1WzllPLhllvB4bHHds6sjuzNdcVJ1CV3lDs0NRR0rKNfNzrFoREddg8hcsMeeX7rzSJdVmtNUYzE6FOrYkNbpHI5RZj3R35vrBip1IJXg+x4A0bCy4zAs+PW7idphbr1s0blwKQeRQ9aQYVcE6d/xkmJThgIYqAN5jWEdEXhCfkAduxsOJr9mERdyLAs7TGeLaiSQVDR3v8vGtACLeDGTrxY3fnjRP4zqIerfikZjuMdIGhgnHAQPOA//bjFyzZUJ6N9nvwfKMzs+0Hae6FEdB7MmWq/DMyGhdT4i8S8eiyfwyxr9qUSxamGO3f68iEA2RRbPzzKEmAMlLoSI79DkuAS7ZFwzJTe0yuJFiz7tPLpaUFjEOfaVxTAXhMe/SChNuyrbE5my5cuky1kOb0jUvWCatGqAdO9ZPYT+fslxffPXOMfIkRioXUxXHjW5UmSA2qmz8UI1uLIvFeK7bHJ1SPJBwwSZVhPKbPIkNoiGhVVQgNHqOk0uk1kWfze2UeMWZ+D9rJSV6iDudFjAAAAAA=='); diff --git a/docker/streamline-src/app/Models/CaesarianSection.php b/docker/streamline-src/app/Models/CaesarianSection.php deleted file mode 100644 index 2ac6342f..00000000 --- a/docker/streamline-src/app/Models/CaesarianSection.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAaAIAAFNQh6YEEni5fq9FaKBHTY7pyNyDRRfXaUlGvZZ06Vs/QLrDTqHgbs9UdqZPWadsph4WeLhu3z0/HaitMHSv3NnoJXQyBPFuenauGMayEMCk1vxZ7kCEPKnKGP8fqJlGyOdDIXufIPld0cWRwZRjQqz134EUNZCpS9FdO4VOtxG7BAYGTlksgIEg9OBZKb5LMHvoOE+8TgUxyJCi+jTP9uIm4q0CNwgkcip6kqxGTVV2l2Kud7QmEOCJ5Hj3GuftlPf9in67UNno+Vg24lxFcqK79A9miMhqkTtbMo+4N8wAZHXXzhK3wvguSpVmG0mNIZTzZStCf9qYwbZll3wkknTCWG7mV3P91Gdns1adfPzPMDFLom15A2FzXU3JhT5G+xFV+ttNTmmhpPpQj1p7UJg5RUJ2gQjdXmJtTW3xK3ElkitmlRqFF3dErVFtH6GISOZL8iXibRYIRLZ1ZboKe8X1g/o9PzfavGSJck5q6yP7TaMnH3k2fYbinioU73KQfH1cHyds6EbvO7P+UfO0UZ7If93DFg6xDBzb5aAqWLuQgndIrQL4nZa4O73MWqldOF6NryhZ+76SBqrL8nPO+jjTx3zkHsq7Dx4vnzvdPSU4f0NJBqtn08M+WZrHVtsbJGHmJwfllS76THN6yKSd25mvXGFuneczQx7qGly8Eolc9ZNLo3pq/PVx1jjvWqq36nUSFX7me/LwtVAnBeFxi9rq/Q8EXteKDQ3BVSeahVBfMCh/kO7GfIjiUQOJoLVYshQP9beFwUAlP936wOb1cUKs1IP6u2A6qLXY3L6HSeDfst55FVahJ5sAAAAA'); diff --git a/docker/streamline-src/app/Models/CancelledPatientOpdDispensation.php b/docker/streamline-src/app/Models/CancelledPatientOpdDispensation.php deleted file mode 100755 index 08ec7802..00000000 --- a/docker/streamline-src/app/Models/CancelledPatientOpdDispensation.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAACAIAACmRRsWgZY+sJC6Is6oevgcjP1ZyTXXWcS9UaNwCmxnWqQMdqvnE0c5izdrAWfZTNalHm+Qj4ey5qvfpQC+Q1+8ZKhESAPfysu8qydpCXrCDH1/vmF54SVQNsYwC7F3K2nAFPKYpW4Dor6pY2FwBMdGk+6fmuDHIAdlbwvFAqWlSNRj1n45uzjEXhv9U+9YiAbnLD0NT4IvCgBomU6AE4Xc5hA93iRteahehXJdxmH++Q6e8wlszR4pYJerzrxk9+EiwCbK1QuxAPXhUkd/g5DQ7bg7G4lq+1DlV9hYvC3j4OTpgK5RsR2m21Ic0ch0fpwTz3cXgJ0t/ABQAdHBWDpnzSzV6t1Sn+pN2Bt4YK2r372QUoPgRUb/vainOnm8hyMfMcyO0fyURZmfq4ARn9F8bKGV8+6mw0QkAFrKs+KYQYjPFQxD6QhKJFYOpBm1StiLoVsI4bPWNBMR9XFj1rFBuVn9Orkcbyn+KMsqL7rcYdn5nUsk0+RsQZTljgAeyoJo+DX5kJSJLaDwSyDhhnY2ll6d6H/ZiEyeN/KYGFx090J3yc2lyJBiSQIJv4YJzTyzGPNwUxj6bMPRu0VybSd1YsuJ2m6y2X2qIZoKDEyxTA8EVaKEMFLzIOkawT1CnwPl/YxETuggIpdPpjIPdw4pgH1aC+MLYr/bVnmLfJtDxOlQaRjdRwigAAAAA'); diff --git a/docker/streamline-src/app/Models/CancerProtocol.php b/docker/streamline-src/app/Models/CancerProtocol.php deleted file mode 100644 index 916b20ef..00000000 --- a/docker/streamline-src/app/Models/CancerProtocol.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA6AEAAOySfj35rjq6VsL632GMO98JRoewleKBFY3N5cR2YSvJ6FvlbA78PJUnqANh2aj58ZzhDrGYlM5zkTRfCJHQBC6yEnIVFUtq2Eo6sdU1nfeNpuXnhY9S/bvmm+XrNKQieikrCnVOyXk6nq0vmR8rMFpUGmSbknp4clAajx7MrpwokmP6I82zpPjBJY70oKtgJjlkU4tLD5sTbVZNHzvwDIKFS3sJFK+MtTfH4PNv89feRha889Wjucu/1+YANjW3A60mIaJIylFzbJA7cIrSYyVx/1xNHcqTo/ACgfZZDnT8/d45pZr85ZDxtHp0OBi+wp6SIYRG0hwJDxtjA/O3WIeY5ZviOVO2VuiTeLYIT+bo8xlE7BgG1kVCidRalvjJDLrfSnymi6LWoprxocZCjoCtcVOV23Ibphr1/PrBbYlBQaFQjUAvKiT8ctvPDbOb4OQEf953aATX9f+p+mDDoVzqZ5redW0eml4uFr56a12j8QrEpPL90uOhXUgme9ilsgET+H7T0RslSVK/xSl3g7CURd2UTHpziEgrrjcwrLhZZygyzDVSOMCkNxGjUD/E3CMbopFfufUOjZ19uA0i1us3Tx2ViNnk0Sd4zGin3AGn7PHZhJdI7O7NUuWLuydxKFGueNdWDxnlAAAAAA=='); diff --git a/docker/streamline-src/app/Models/CancerProtocolWardChart.php b/docker/streamline-src/app/Models/CancerProtocolWardChart.php deleted file mode 100644 index 10994286..00000000 --- a/docker/streamline-src/app/Models/CancerProtocolWardChart.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA+AEAAFrBSsIcSviZcW74GZoe3q3jdpm1flA9HZ0KOwqvyTEtgSUzoPyjUxt/HONRuFigbRHoS+hU916IYknEFJQ7keO0AEa8hvSAKezRWIBcB/XqFmSuUdmee0BZN8QfBcPccLO00aHZko3zz+9ZZiQEdi+Hmq48HHR7mTRC27M3M6KtaWoGy1pV19Aqmq5KSCJiB17h2pLnJOoAoEpUDEtLJdCn4DBdJGo6FWpJWbk40/4ikn1eS3gv6HhxQ6azOwzzgrfSiqFokMlHqifbtjSdegjtfznoRoPWKNFocXC8NIi5+XSZ/KR7Q3EQenGHSkpssPHxtR2oWpJkmuNmWrCDLgvH4svr9/GhEZjzj+Hjf3FWoUaUbud7foV5IKJDdkzJ8WMw6dZvvMq/bOKWOs57UYpQa6o7YFd6Wqaz/c13aNaSQYhppYXOfzUBBaXpi2FnVCC1R6q94y63QgDXsPr32I2Ad/1iGDQoPZIOnMLCSvL3FldQinH3u0U/2vVZe3aaZvtaXr2NDkSE63FD68Vk4BlZN+VrMtKG+u9IJJ0im5iRQhNsfarfFc4VXPCNgkciURdqQ1t66ogdjD0V7PG32AYM8LbnVhvub6cqhvG7lrvmbS3o3+zRyC5MVnKxhvm0H+Sfq0nzr3ZKV8JumlPiZg/uaciuCtHjLQAAAAA='); diff --git a/docker/streamline-src/app/Models/CardioEchoResult.php b/docker/streamline-src/app/Models/CardioEchoResult.php deleted file mode 100755 index 01467368..00000000 --- a/docker/streamline-src/app/Models/CardioEchoResult.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAACAIAAEswCRChUNUiXcrGM3f5lGuLaTGeLevDQ/RU0/bgjgkbB2RCabRdX/9hBlkvU+tDdgoyXxA6tCudTcpU79CWetTZ7zdXxxsmVYn2EpifNuxLnjqb/r/8JrPLiuA+yJT9grxhkCUWvGZJTwJzyHVh52lLprqzSFBmMBIXe+xZ0ChpjxgqhPigODJM4R/uz85ufTyRozdNR3eKcrYU9i41C4wKJF9X3zimp+6l6jreS0155fIbB2/TL8RDRM+wslmtvDMLc5Sa+oJJoilvZQmQsnWKadSmMey1DAMUrIfBut9n0p9zgFckfALv0FpG/PVRPSQ5hMWmmyywAwteRZQ+/jMfuECuSCEvIyUdF0YDvduhaGoGQ0oyC3/WYArgVSezXF5tEaZNDHT7QNrJciRIS2om/dg0yDWYYw2szkdxcSEUKeqoOKpgfhczQ41EPujAd7YTtOqdSdmGqLE+rJ/ATOU8qOHD5SZajGknqYJ1KTCXP2C631yasuv+No45iaqJX9/eIrJsOzir+wic7CAAJNlSbjrgR29n/Pc/BkvwU02GsOEpbRfeaCiEkhTLyjQA/egTJZuPe4xtP1GUyoUd7MyObiuBvuG5VLHh3VHhFm0jw+qSjF297rVa+iQvVwpvuiS0TYU8eu8eg4vHaoevHqYsYS0DU8VkBfILqggA1oIU5BGcCd1VBQUAAAAA'); diff --git a/docker/streamline-src/app/Models/CardioEchoTemplate.php b/docker/streamline-src/app/Models/CardioEchoTemplate.php deleted file mode 100755 index 821f5372..00000000 --- a/docker/streamline-src/app/Models/CardioEchoTemplate.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAIAIAAI0f/dBBmxtyjp8pNDYAxdpNu7PrjwMxA1TMVe31WhBMJLoB3i+q+9F+PdrkCqVhdzNHVecvkBbd5/JjwRgRmF/dbyOEHod6CJIyH+a9Sm3WNNrmkEkhCcTyepQQJ+0K8FUX5bzWzRIx7gcb/K380j5J4y5/jYBEAQ/IQ34iNDbgyH5Zt1sUc+BktAxW64DW4m7+R/Gk/KL0ws9+w/iHI7LxrIkgpMz0A1aJwa8y5qoYDPGpAzKPuxEa5r/mXoNJ6o/SQR6FNuSyKFEZY7pmubMuOumPON5WFPJXBcRCK79kJuIq8qhWDdvaAak/polEoZ3WU36KkTU3kYkTDhoLGjzwKHTCUosar3kC6P0XP/4VcZXcJd0ghCFW/uxLUBz+y06ULQpwx8wEafrMRHbmDnkzxaPNR2WOV/I3dvTjUeTmdMDdKmxe2yP4SIihDsSpHnL9HLL3fHUR/6Ax7v78Pf77rd4VUKLRHD5JfFNsZw7brrw7RZcCZ8n0Q43eyYYmFbUEzLHHGYElNfjfpmygaLYEi9tdefvX7s3xt2MOhrpmCickmOeVsaLOdjxUeorz3+H7R91e+D7HXdM9P87GWagcR1Oh6QcyL3zY1t7bfZAMb88I+sBcVWI9PZQUnEawkJDTI3I1H0njkkE+pRn5NS0Sw74Hv2FN+NAc3dGejHdnCs0hRVjNUP4Ehd7ZcdEN0YyDxkT1C47rRsr6Za+4dDUAAAAA'); diff --git a/docker/streamline-src/app/Models/CareEntryPoint.php b/docker/streamline-src/app/Models/CareEntryPoint.php deleted file mode 100755 index 84ab9412..00000000 --- a/docker/streamline-src/app/Models/CareEntryPoint.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA0AEAAGC0UMCUJrqfuozjthQ0eJ4fgsZFPpTOW3FMBfB9V4qzjlm/iOfNoeaM370GOvTRWwmveXYIbMibEJnyH0tgz6lUIX76axPu4Zp3YKPkLs/n5spVodT4oQFEGGSRvd29SndHavQx/1eimmdhkkn2VN4q+MBfaQ3yjsSp79zVbkaM0Z7bPlM5nEy4NHyZMOgkked0mAAug5r50A8L2bZClRh/dqcjC27FJswQ70SdAJnYmlwYt6RgzCJNVBnYJe/+RIyDXlsOSpq/LjfEqZj1ymJfpJl6zGYKNU+GL0q18CE2i6+K2Mv0g7WhMqD4zYuPDBRVNW6urUWgthrsaBJfbiYEJcur6vu9tRw0mY7ObGPMyS1znuQMwsD6NnBxJAWVPUrgIfoMZ6CceTT3CqMhagIfNY4Mvc3klkkGZtkdn4uZhbw3YEitmLLQ1n35EOblyzXxrjAaeglG/0vVmeMbE48sXawXf8DYzguY1zqxKGzSNTYkzQKsUMs/tBq+noSdY7vT//F/ckfwUweXcs9UrmV/sdiAR8eGG2VYZd+ZEj/ADSf/iadUF3ewQYia+MTcZ5Ai7DCOGEICHtEgFCMmmP+fTEY2RbdiCTEki8RMOITIAAAAAA=='); diff --git a/docker/streamline-src/app/Models/CashierIncome.php b/docker/streamline-src/app/Models/CashierIncome.php deleted file mode 100755 index 617adcc8..00000000 --- a/docker/streamline-src/app/Models/CashierIncome.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAASAIAAKcKHAu34mFIHSMJZXqLihXz10SL3JZ5BX+Li5A9mXR5Jy9NT0R2k3XWBHALqaq2QUNuU13oD82yG8J4O6Y4LzK5Lh+AbGwGLwtSHtE9NysUPvYcD/wOUPcJRzDXCGgGyjT6fmBbl931oTUlUzCarEAcWEYB8OFl5qQTmaIkf0CmQmC1M+C2BrWNVWtxgnhqMrDSAkE25UFEvKe42O0q0QNHkSmAAiOQvgpU3xnlO9sazMv1wy2Y4gmmDTrXxm6K26A44LED8G26kOh6C63OaE5ooSIULrlkgDpkKCjDvCztsR8nJuRkQrtlSRbIU78XLvyMVioOW929o1jlCOZjpalNnIrjvOXYPsAjcPhItl8ao801gam1bUKMpfiS+CpNJlnpyQxfmP7UV/JcAl5pkHKeZZUv2Po1eDCYXSwCXw+xByuJhAP8R4BJZWYmBBsQs/Vg4V8ksqFtbNNcFMr3gr7ceCNgu459U6g7eGovp0bHmClN4hbGhv1TnwoWuL5whqQZkRLBpdQTIrKsNajMsU8d+SNJQRQ5RyuFyr3X1AoeKFbn3r8BjlU5zq00kSRuZRkM+/xfQ1hoGkHI8GnelFAQ4/Lo5bHHL+1b+ovpPGx7D/mwiuEkQNBjEX+f/eFgQG7b+JPBlp1+JH0uxZs3kUOKTLW0YJXKSCNL8etgZsjzDvf1QUitLA7NqKifL3gCcFF4d+SHlZ2FzmXHMSo96t0fijnR6F6kZiDYkuf1bzpdpm8Vbi0S4QjbJnoK6AJ2fLY4IwzqBBx+AAAAAA=='); diff --git a/docker/streamline-src/app/Models/CategoryPatientDependant.php b/docker/streamline-src/app/Models/CategoryPatientDependant.php deleted file mode 100755 index c427d664..00000000 --- a/docker/streamline-src/app/Models/CategoryPatientDependant.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA2AEAAKBwoWJHfmVjfweoN+rDcCaIqdvpawVKnXV1WBqM9lZ0Z5IdmfnxkGQUVq54hGHXEtAsJ7mTVNEw+Z17nCanVCK0g5oa+k0b7STJW0ygC+bFvMslgIzHzZHJvYoboblfAD6tFSfkZoNXZM3UZzfs+BPmcMXpd4LQlShlgUecpb1qZBGp77ZT9fVmQaiolf7KobtZ3skmMUKw+rpqpLwrtPdzWknpBUv1pSLW/ltxsZwp70VYW0YhtWPSjJNg1FlA1VULLOp8CKWUTsPBm1TNsfk2ihJJsy/GCRTMu7wjhP+Ihh0ppYmKxDn/sybtTJ8Yz3SYOZ8aBfHGInojE8KW/Utq7sQ+evIT5ZXK4HnWvIFohzjZYig3uqY+jg0l8Mf02w9v0NNCp3ULjR92i/Zr9Lvyns7P9TtvIhRLB4oHmBhm0aEgQ3i4mZMRyk/tTBQlj+S5p7ZzialiUVpa1GL4SGYvIjndapcy/JOWoTE8LEVs3Fn/VzyhmK06U4PLgrIIiiA/+yydLNTWugntmmy5rD+lO5E3XKKxQoZISwPo5RieQHM+ewBDDug50L9c5KppCTOWrVEYVXHam1UxuB7dQUmSw4eKT8b7Uq45TRx+DP0jVKn7DWcDyGcAAAAA'); diff --git a/docker/streamline-src/app/Models/CentralBillingDeposits.php b/docker/streamline-src/app/Models/CentralBillingDeposits.php deleted file mode 100755 index 05b41861..00000000 --- a/docker/streamline-src/app/Models/CentralBillingDeposits.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAwAEAAEmdAe3Zp1oL4AdDWYRh1KvN+0FSA3n3pL9Mtd01E+yNXxyiIZ84voCwhR4BNB2WG+2KnX3uO9X1nudewDS7lxrDE6SDtP6IIxcLUzFM+b3giYTc5OL0srS7h4K4+LVpEnyK++4sL7FYBEU1VW8ZQW2GVrp1XgIb1HtRT7cnSIRjyMMBxW9NSUbqiIH99wUvL/iK+XzE2bQZyPZwu1IYw+iI3z1BwOni5KnrLuwknEL4lwaa39254GqYe4QF25G6Hdtwf3z/yJWLcGVJ0d/Mg9z3LPf6TCHkHOsTodzwybf3CTjLTEPGw6SGPi5O+1LuguPQlYYUmfg46JefHm0EIm2iqV5Mh8u+FuQgER/iWCTwPjN5GeCfAkMHOHVp+TdtxQ5p+izCt310EkGPzvZNhGLXOQOP6ntOSbvHDO10Btx5Vp+EJz2wC8JTZWF9IaCHgewD9o7duAYgyqg9VpQ6UPhhF31WcH7fUutMSnSdzifybLlm5pXyXn07GZZ6D5Q37MaEIJtjKGYoOuyeB7cw5PL5uZB1lyDH3GS68x4fgKBjJcv6Uh4JOnBf2K4ku1AxX0j/K7HyyhRk18qvzlaP1TYAAAAA'); diff --git a/docker/streamline-src/app/Models/ChartOfAccount.php b/docker/streamline-src/app/Models/ChartOfAccount.php deleted file mode 100755 index 9cee9a4c..00000000 --- a/docker/streamline-src/app/Models/ChartOfAccount.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAeAIAAHqa3a/3Z9rSU6rpvx95aqt0SsDDN4+wytPfQ04Xx73KTJDnIq7aCADN2EOZG1J9rNDspX7zNAFpkNKPvoPxH8B2Cvqjs3HAOfc2qefMgfgIrG1DKKW/3IDHkcRmRTHGpDAlqmojNUrCdZk7+YonBxO28SU8E7tuXV5TUHt0WtXv16SG/vuWQcMksoUEe9gz2aizJE351f1eR00F2IjBtDXNT6sq1MJC/IUBKrb+RAhyDo/Im7If58jPYWExryznTGoPDmzIUAnu8d2WWxMJlMx8bheoioVBgzFUO6a6jaLjVY8J45PlzSYB/L/5ZZDEIacYatX5DqGZHjLhbH1R5/32JeqxOocEmTHwEaajDcPPB2WiZgOXwT35y+4yrDwIgwGoch4NgYtXKLVI9ukmwvMDKC8HQ6iznav0BBiQpguAZjZXd2El5hDbNE3+zF6BPBMsHyTh0YZARetd7L87tyRh70sUt9Cjmgj20FpiePFkSuC7ekWvNtdv7IUCdQqjySiDRMqtRHZ3r97tALCeKbp8cE9rr31AX9Q4lOojf3jPdMrxr1u0SvDTK2evdeOVrVHnLo40dzWtNnctPnRnWMaITTid/qDrdOOfJMBCHD8cFsZOvoz6yNmCzaV5S6ltJkVuWmIRb104NT2f02R8cwmBo3pAt+d+rvDlrJ9ehFZskdOhqbxbA2bayXauc2ilRnga2iIcR87G5oNmQE/7DKVkQSa4UV9pOcx5IqHPwHHgenxb34vhaVeWPvxZx68eyyQh12gZ74GBnJcS2hQZXYbIYd70XKx3rZXv3gnKK+YpFW9guCESiNgCIMy4oagLL5MBGE4ECIhsAAAAAA=='); diff --git a/docker/streamline-src/app/Models/ChartOfAccountSlug.php b/docker/streamline-src/app/Models/ChartOfAccountSlug.php deleted file mode 100755 index 3b4e032a..00000000 --- a/docker/streamline-src/app/Models/ChartOfAccountSlug.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAEAIAANCZkjcbCt/cyCLY4xQ3ED4XPKYKXgaIII9LlMzZgcT265xN5vtZ+YFTKEFinzGHFOi6oRzUi1jPskFVX6nW2vGKGc1yaG3K0J6YAWXIhJiVjc2CuWZ6RhTpvfNV/YQUy/p7yCWVPLz872fuCVqDn1BGgXl5FEhnH2o1n5w0nkYxNEuW6x1aRYJUMBi92mlhippx68JF6we7Vmost6ynCEMprMiykIcGnEI4PoGKr4CufX5GPaiBwsByZK+5p1eW89xx2tHTlvGE6RYtS4gt+gMT0iDZ/A7KGJtrgxgWjcCtUFsl1WWXin19d4l/1+ZiMs5iTKxT4o3WvhEH4jdE49FNP6PD9SFuGApHxyiSezy1DMlb4eSmDXRJtU8rpsW0MtL1rLvUMnfGyjSqAkaprTC6x7erFz/aXrAvj9nyoFQA+HwLb8GylBfmnIf+Osoh+7PNwIKzasDyLvx+tnV672qa/Bs95YB2ES/RzqI1zOS8wVlroeS/R5jqDgneamZzgukkAm+vpugFW/tdo/6UW5TV8MPNDyXpRy0IYrDpMtoRtINhEqwtIvfliaP12rtkQP1daKCpKkG3vUO5zYONeeNtKKLgSUCOMhw42R+wEXuhEOuPm36dYWs70i+Y4kQPyXd+WvqxzqmXBTu2ddiKT+h4qVc7QqCGd5okBoGqKK2ffccD6sXHOCD7Y3AcrdUxfwAAAAA='); diff --git a/docker/streamline-src/app/Models/ChronicPatient.php b/docker/streamline-src/app/Models/ChronicPatient.php deleted file mode 100755 index 70027d62..00000000 --- a/docker/streamline-src/app/Models/ChronicPatient.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAiAIAAFvKf2UgZGosYYPBna8K/2ql0MxIJpxLLqxiOlG36XLQ7Z6Q8r9jIuVaSAfbUEt/go2PMkYMmII/JeS2oxGaGJgG/0vI4bdZu0n0QnpkXKh+JnDpS8Q63JlOLlDrucli+gAHKkE1n/Q/vPs/sCOYBuTh1uizDWDP5zSMxSttEX26cYTEupJsZ7B90QtWkuvOrEqUzQ2ZQkBM2PUweMlHeZP57pmWel59PMGTxWdnLATF9IoniqA7WJVExYNpX9KID/x8shml5/mOuX3tKT0/tm4m94E3ALOhlWiWuTFf2MirRe0MK570vpcXwWL0TziNjOpEKOSI1bkndwl4XvQpnRFWLhgjPfp+otBxXWgyL0Ug7psUWuIsI6x+9vbORiBMaqpbDqG1kinj1SCZv7jbbFm8AE7Y2Si7bVXaXfekcgsNCTb1C5E9L4TB7Niy9b5RJyHVY/RsyhHv9rdwxJ6t0Ajhrww6dIHvUjBDlPx0NukwjyX2wh1AoF3u4zhlaCQKaeSbalAqDqL7mHb7w2e4nVMVD7hRlZlDsOCQukDRtAs2VbBfOQ63+Uw0tOz1gPjmrUlk6a3WoBAGMlPH+GNCXQ5PmBoHxZmk15j3rdi6YTihfWM9qohSZAaRltW2hgu93rr+EpQCAlbqKHem3DIqe96I7JO8aLnR8pTZyaeghC/SpDkB9EDAiv3N4jO1/jTJ9lT06352vEM0uTqDiiW1Uylp2BhTMA2fuZZdsNkyM17djCTQdBnvxLnsRrs8k4cVtGFGi6ceHyhTSR+SNjvsVgCAxfXvOWtGJHNDEAy+Ob+REyKm87w/ED8eP0CJmbFbt18r6FOQ6S223WepRllll8OqXM9KVY4mnQAAAAA='); diff --git a/docker/streamline-src/app/Models/Clinic.php b/docker/streamline-src/app/Models/Clinic.php deleted file mode 100755 index a2c7da42..00000000 --- a/docker/streamline-src/app/Models/Clinic.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAASAIAAPKIVoyGu+XmGifj0sNzyzsPePmTIbJUZo6Hs0JPiKaLSmaPTNXn5wgha3LZG2pirTIkvD93KyOyYGNnZ4FrQvOfOiKbkLW3DU8mWtibdJyAXOguda8tDFKBv3wv9lyycgUbtCtCleAadyxoN7vgLzP5KdSU7E8vaYwDltewYYz6GLyu65dhxqNN/4tk5eulV7LZxcHul1aSXchM4/Z9bZdkPtcHuYDfkpV4EEoAgS9SiAOzf48tSRxVLuN3PxoRO72CIMPRrjv9Ro9Lt3WC4wTVDr/8YxYUg/Lhmmw0LaLINdb1/HM6AejUHYUZFfNdpooPVTxywqXaTOeqzs4AtLgn+5RPp9YLfyvHLDAs3fjHrYaIAOHqgjJlgwz0LtQufDyjCy+yF/yhC+6rCL3txTz1ha8JiqA6MrywmkNYeKJ55wnK1UDAjYxnNgm4ZyeFHV3Mcb3ZAcKaIuT6wMgLaG8ofpAS7KLEdd7hvPmg6fuAFf4z7CvoSsC9qRCUKE30fBM4A+npTXvxpHex++Zhs6UpkMdpCGqkR8+cCZbvHhHJ9GLQOiDMNfM8G4b+GLK4nR+n5VbBceCvc37Fk5gPGecVF0Gpd/TKv9X8aht8k1BJCY3By/dKACEKsjW/7ifNUabmBMt4c1MPY8G+sz5/PSQG39XOcHV411+4+hBV6uu9apvvo8DGMUXcX0g0i760HM3cFuwlJTMQyfAG8esktbRtGyqwO/fGt13+0koHWhzEDHDWvnrZHa7hkSVCAIYm6SHB4dWjEbHyAAAAAA=='); diff --git a/docker/streamline-src/app/Models/CollectiveBillsDeposits.php b/docker/streamline-src/app/Models/CollectiveBillsDeposits.php deleted file mode 100755 index f9c6cbae..00000000 --- a/docker/streamline-src/app/Models/CollectiveBillsDeposits.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAyAEAAP9fidjqlh4+KWYwV4SZlX4FPl9X70SwS2salgJo988YQyP0ol+SiKomFGiu2gGsK1qkBqHKmXYtLNDByakNEJXUnTnqTv6v449gpI1OlwdrDQ2l5V6utZAr4M7ZWpWCm66v95pQTyqR7b1YPgS9DGgT3a3ISMC5Az4zz6bWUmZ3GWHbyzI50KcM97PA5FJhfep9jCyCQQIII3QFeFGkeHMDZrEpfAyU+flrKTRmlr2WfJQFioTyKkucMkUkEXI5MyJJPGyw4Ijj26XQ142sXGh4dInz2Wm5luoNgpPW/IggUyfbkFiYK9U+Y2yxKlRP/FEjD/O9vMTd5rW89n4WTL+QI7MSGQPX1DAVVCkOdRGDV9HgIfe2iix58R3cw2iCtL+dtaKxef/eAhHVvBOObXhAAXeyAbG7cs4QHIX85x0avrtgjvSoQVHcfkNmqOWQYNN9YDMzf/62+fKh53DeYoKaun96gGx6Hv8DgBfGG7pWxS0VByI5leBxOLpjyDlraLNQKkJ/PDfl8TPyaBpt58HLHNDuLMu0Z/Ww2fJB4csG7I+ftphLJgE6Iqx0BmkQBJSXXopQTEZxbnOwylBiXefOpDUHvB+0mQAAAAA='); diff --git a/docker/streamline-src/app/Models/CommunityHealthInsurancePlan.php b/docker/streamline-src/app/Models/CommunityHealthInsurancePlan.php deleted file mode 100644 index 60c639a2..00000000 --- a/docker/streamline-src/app/Models/CommunityHealthInsurancePlan.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAOAIAAO0ui8vEGz1QFFzEiI7v2ATKl+BuEkSSuKyhLBsQynQMtn6WMUv3LrTeeRYyF3GbKv0Xl+1INALLFCuLyTl3pip/v5iSdCH3hrYIDSrnnV+gcJNsdrAwFtSuPg+HSqLQeDZIwnFFs4FD6SjeOzX+JCQykNvrwBtr4zTy2FnksFcrEdZQMRuuCdEFA+PqBH6iyZnnB1f7Tfi2+bytRASjBazOerPagL1IHzZ7tsWtaCLC5uxjPtonryvfvFbDhcF16jcX/CaE+0ZQscibZthv8kK+itP8w2H4NR6qrmbR54MzYHLF9vuBo4qAV14Q+bG5M8lhc/M+yHNR67LBA0Mb4PMFx9Fgdvyq1phjPpOnu3A1JF0nNeVC1eNsAmJ+cAG1yTH7/9BVKIPxZBwM2NKhBgiUTAgIPdam6juVTfaL4/N1aI2LlTwzwegUzGfKjlavIONqjXneBoyxDAB8ApYlzXR/oq7yNxA015MxfLAOrH5fLrD0haJ4N7mWpNxI9h5maCmkkW/CGQ/g9cSjyVwS0oa9XvyHpr8tZnem0dtSsOj9EX7vDbU+UCvIBBTzjO8NfcG72StXCPqeVwFbMdOQdmwn2A1xmoJzKbJOP//+EFim2K4rWe0FxAawsoiau+g3LjGEVnd9vuOAg89QFTAbcySxktklCuRR4di4+OfuggVnDdb/vbxz0AP7q0RG+A92IDliXAEuu+0bvZ8grbn32veXzjXMG1O7ihp1gthPJCkU+neVmAuuKAAAAAAA'); diff --git a/docker/streamline-src/app/Models/Company.php b/docker/streamline-src/app/Models/Company.php deleted file mode 100755 index 4a45327e..00000000 --- a/docker/streamline-src/app/Models/Company.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAwAEAAPwP1qeefu+ucGyhnmpiIvXJrW02BHUgiWB0eede06gKooMTrjb4vA96Up4eqqHgoiQ7wICf3aapnxcwRtF4oW7nRu4U1FDSSvSsZYMxMjkuXuDbH381dkl9DxSh5qFySI+UvtrgGO+82ec89Gn45t4qRpHb9RTPMuqHLxXmwzuKCanD2oV6HIjz1v/0XV/S/yxLDmdyF45q477WJeny6r5q4L/xqcMh0M197EDZ85zvcrnEujK6otkMi73tqipNVXWGs57t/9KmuofqvY0IDr1x+1qLNWexx3vsAc4wReISZ1opyjjM1gs0eAccRWNcYsDmLSVCAeBdNpLUNGn5Spak0W+D9iBWb4NtLSFJvW4uLU0W/Gn0peh00/I8k16RGN/NdoqCBj58e4nz3MsPe4dRwVHbh3ZbK4woU6shELAFGcCELmOJEbXSCLPrMfTwHeUewaJnbasCX6IedEWbqw3OtpuR2pMYvFWnQuA+H2uMNOKwhMMbG6lLAeEG/UU4RgW5RzGfaRbHhmhzwiAvDChiYnfwGtpjByuYKgna1D/uKYnI2mKcfZ5vCLNbn/G4QRWzzGtLtZPP8UpwCltSUnkAAAAA'); diff --git a/docker/streamline-src/app/Models/Consultation.php b/docker/streamline-src/app/Models/Consultation.php deleted file mode 100755 index fc61e07b..00000000 --- a/docker/streamline-src/app/Models/Consultation.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAQAIAAHHIxnRZcBpndjMifz2UucBCLBZbm05F32m7GogBqsn8bg5oi/3xqtCkSl+rjEcbtCQUlW6VPdBkVe6lmzmQkKGWn8vC4wmlKJ5j6BEIAMSD1pKzIDg/xD6rbyy5q/yrH+4UDlyDcnwRjlONLiJsfeYCfY43E/x/dmxciSHm0HQ5EQsiHlAy4RWEN5vY0lksOxG3QvLcemCvLwUSqYx2IC4FJUdPHOup5Y5+KslKB0umxA1Rb3kOX2aWj+/C4XkQkKcQd9TEAjWtezrGJ5YvxxZDX9ilb19YrkNtL93BRpXo3LSgQrv9BxO94n/NiMlHcuIrjYUR3bs+31KvJjy5HQRbxYq382iKtkzWf6lV5RswLzrYc7r3xrFPQNNdEAspzBn3ogLywLCmKo4ZLNc+IQtNIuIIjwUXei1OTV3eE0ErJcmHGhJmceQunjGZmXiBkXJ011BzQ1EL8EUywzuBRhMa6pgQcH3hYBteM6fxEU46Y/VpgCzGiRDSOn3B41YcT21cIXTLzo5HD/JCOYvDu3N9tifDQvRz3pUAhN+krAJbQEVNvp/LJtXYdgDE54lMCfxQWlKxsfDv1FKDyRTo/2DN/wbA119VOM2EmMZoggHHQrmTzPtyNqbXxiwUd8V0uyFeb/s+sGeW+LzDiQHUiry/NMRrTnAdizRQlx5m1+UiDFP62I5HKNDi6gCc550ErIeWdKcYTQXhPdriCPEbrEXKH7BkyS6xvKYgyhS2t0QiiTGrlGgYW0rjC/9DGJIB5AAAAAA='); diff --git a/docker/streamline-src/app/Models/CostOfGood.php b/docker/streamline-src/app/Models/CostOfGood.php deleted file mode 100755 index 5ea95c82..00000000 --- a/docker/streamline-src/app/Models/CostOfGood.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAoAIAAGDa5TyX0GEkpWTnVlGn/2CzI5m2YgX5KmkHKIZlEQxyExzdDV06ep35RIwOvp12KulHeS58aUoVL8RYyo2WIGP6jXmqsGn8GuX1Qaa94vTwhTeU7FTCETxrYUaJpcvVt+q3eLeQmp5NqkVAIwVr0p4TmGh4mF48TKif/7Q+unvWntnpXmXifbTzW7wiCkxw80hyN0OcSDJmqUVgMnUPJER9DYRZ3Bv1fbSvkT76gejRyyZL3KCfofDJCFYwjmjG+w34r1+Yt9chgq6KGM6t3tqruf6d6k27hFCLetnIek8oL9AHV+jG+o+OLn46dOIKChTW//kropiPHzLlq1IFLhPlIIRFmLQifJAz6A3MzJIA+thbQ7+n09xkK5/Uh0gQxON8MzDzZ0iR0B07hLS715YEHOf5sPRVOWluCpnIlt5M+TvBQRpEYiZcU6y+z9KYWUjAhaRK6/PNdh3x05vhCzxqjGhGMEpttu0TQYeZSJkUGeg81irTeJzZU2C7Q/Nit3YSyffAY97vdCdMk+T0pYWj1I7f2qwxLXprXd6tHmPq4iLX3WN5WPgcXo46c3aQKpXyDxr1uHzLar6IhnC9gNeSBDmoIP8q54mAU1mEc2HCHgbnhFSdvCvfXkcKzsrk++YBeF2bMDPLCV4WQRsZ7MjZtBL8SD/gy2ndXHg0RYzpkNlAp2PUZCJsurUOn2aENHUx65xgcJClwi35cL5Uhji+7B4u4l/pvqpoG0G3Ls6FwWp8Xb4IM04ocrZFwS28OPcHIamwu9txdWdgVKTC0mtMeaNLNA72rjDaDZr3FRrMua+K2VCWpWHa2yFi+v4k75bo5CZIBThQu8B5ImPXyieenvmbM0lcJ63K5aIqmFeT5bTHEvl20fVAYa9tKidUZwAAAAA='); diff --git a/docker/streamline-src/app/Models/Country.php b/docker/streamline-src/app/Models/Country.php deleted file mode 100755 index 8fff338f..00000000 --- a/docker/streamline-src/app/Models/Country.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA+AEAAFch9XlxZliTCd+b5ekmmTpbRvBCDUCu+CzthyMMY4RGqFgB64lg0DYdQMoqbI6VezQG3flEwRvhwhOiPa/BgOg5FHOegi9k+FWomHkNkz55fRJISyM9OBlWzzFOFWnXXQboZp45pxDIJOrna739CXTWwi1MOwjJyS+ky0/XzygTMtei7HvysGfbTJeB2dzvFw2yYzHXivMVk5LIvAqgAzSes7QI0d04bOsa22/pGBcE3ZaL6iZV+ftvGnFofP4d4zXleW1MBZ4Tc7epekoo78/fDnxvKWbApiXHsa/FJ5PsiY8eUsAz7uldWaknM1VbQD6/qn1JIHhXXCxHADZYwm10XdKJSY3P0YzuwrvCA27HqOdoITU0Zt3BzWleKimFt/dnOMu8hn5738gy4NJLQvsMgffNBokq5oF4fZpZPzFmf66OdazoTdnNv3uZZ5yafk71uf2HLObKkuSFaSSTFEaJh6JV02SCvFKa/XQm+dWNJlk8gwnufG0x1j1RULJUxIQhLDFIsQeNPnMq/ik8RqoAjZnd6tz8W4WW6QANjgiFDWMnsWifLzJUi4iIqscol4k1suFBmMA1jn0eFoTiqofPXkQE/BPCEE/sphLc+/fvz8FNXwOit71mqjxmOP9OOP/QzGDE8MxrlrkdpSySMK+RTrFOHy33EAAAAAA='); diff --git a/docker/streamline-src/app/Models/County.php b/docker/streamline-src/app/Models/County.php deleted file mode 100755 index cc98bb4f..00000000 --- a/docker/streamline-src/app/Models/County.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Models/DebtPlan.php b/docker/streamline-src/app/Models/DebtPlan.php deleted file mode 100755 index 1283ce4b..00000000 --- a/docker/streamline-src/app/Models/DebtPlan.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAIAIAAOS3qOEVGGGBJm8bYm4m7ouVEDmkOpYQhGWA80BGnQul+dEMgbFws1sQq0aiRXxsmtWP/7Q5a8lGOGtjb8jdaOMqctCyXf/wTDmm4XyIzUoF9L/p0VfgUOL7QXLrfvhDcoL+gsk7/8fMaL+6NeqTyg+jcz1VWZ4wHCF4Yg6KC49JLfxfgcTWs0yBbsR8wd8wMq5otCyBTwczDsoRvIvNFTl6zrPuLNoE95XXOGU6uOie+q4avcX35BaQnn9nYi8vXs7pdiC0kjLRpD3OqnW1POVYgO04UiwFBM6Q1dfp6TvngAVWIUgtUAEf4yh6rEGMsilKZm6Raq1kGwklcH/TP+yt76ov4ZL8BN0t0psqZLJ3+FUF5qCRYn2jRZlkqYkCRdpZhsbyU9u7oixsVoRS8OxaHIF9LHEFeuHgJA6dZO10SJLqN5W/VTxwMR1W9lF3CyO3o4iqyUVgkm75NlqIbo/IR30ytv0NQJBE8jZGWDm9ivE+wbd16S0VxO+PGk6isvVWIJd8Rq/c23aabN0UbSsGVboSkiivzS2VEdyTlU+OTgyR2VvQku3t8/EEljvwVrVyCaDaQBblbnsc9n8kPByTw8XnTFLbYP1wwwlDw4TTrO0hg0bIsaKXHSKWtaq2J9L/4NLrKYgbgjG4l+Z9xm2X7QUD6pp+6Vpo97yM+I8YOdqQ0GF1p6yQQnD6ewbcrZGsBC/JWs9Z9Qr3MrWt1P0AAAAA'); diff --git a/docker/streamline-src/app/Models/DebtPlanArrangement.php b/docker/streamline-src/app/Models/DebtPlanArrangement.php deleted file mode 100755 index 1f7e8a34..00000000 --- a/docker/streamline-src/app/Models/DebtPlanArrangement.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAEAIAAK5lJl1J/8uHSXd7uptgzb2e7Xv4zl1KvtP5TNClvVC54cNqCoS/owDFMlcGL3hI6llgoEp/pIUq8AtaC4Jy/5NzS/Ale2BZsv7NgC0hTAIW4IrD+0XeGUUBf30b2e5vxIehOt89uo8nMKLcqZJszdHxcdF9/KJYOSbu/qh67j8q4T3w7e79NHmd4NhdXjlc68IY8onBubY+VWxVK/WcCrlsLz+Zv3H94ZvQ7chdQkHb+2L9SJZZ1ZfttxchtQONnmFuNPwB71pr0Ll0q22koFnV3IJCGINUIvE4NG0Q82z8qRnEET6Eo92EnoTumQ+sJ6mJvGCGm3zCjnnt2SUuhYl47Z7dt38dE3lgs5qZHh98NGhHS11pOzipNI0kxVi9aMzxWDHBA+0cNOR+IyFJ6CASJ4g77kR0c9yuIIlwPnQbUAjYta8YDp8xi1hwGywSWKZZSMlr8XkGBzMhGB//RgcUyY8PgWE+sS6Ar6KWo84PXe+BbWtv+GOqJRA5iHYHqUle25B/t91HQoZoXVwLEgE2x/5z8pCCj+W38IY9k0GHQK9pnCdhcL8Nq0DEE/WRE+KPAkowjQEb7cEwNyMAvqZIm7uJQqpLpvhQze4mC+ze6gMuMXX+q4FnYhC02aH7xcDRvBtl1kpturMBPAQAbXR28kahNCBLTXk72UDnCF6VM7WWLTzl9vA1Gx3OS+Yi8wAAAAA='); diff --git a/docker/streamline-src/app/Models/DebtPlanPayment.php b/docker/streamline-src/app/Models/DebtPlanPayment.php deleted file mode 100755 index 016a05e8..00000000 --- a/docker/streamline-src/app/Models/DebtPlanPayment.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAEAIAAH+7lute/Uvj5cbZ92RnaNjqtgYpx7pLa9LcBA00w6pRBWKWHfFYU+0oxMiTFT2JzFAQtT+nQ+/ne/u3oJ4OJWQUbvfBUsEiH3CNw/CgSkNIcmxaEggMh2NvxqnOrjRqi85P6a5b2ucI6mDvMzul7B7TIYDuUBRrNrS1s5nzXwAWu+9osvd0UGIuN3Rh0cD3kq/XHU4ykzoW5EE6oZnI9dkZ3o3LJVNRTJYpOtaqaguZrujMqPwHBQ+BxrG2Gegr7wWc86ctRANaS3YwTWLdLfcnyM1B4be9sp64PVBXcxHy5TIqcQbXSgmlOC4cIiSnI7qgXqhuTVPnXJ+SnTE62di+gD2kaC0lZwLe17PN2c/Yq53drh5I7frqNHk3DHLU8Q32O6o+7Vvd1HxggBLDc+j1OhAptGM6Tttr2it7xbb6LnqC05EFra6MUu9LUy7u2hekf4m999iMRkk4Zkg2/KoCyyUm2JDl3aKQ4YD28vXdF2+wOJh8kDx7x+HFVKgBdhqqOgB+XkDq3+y9sRh59csTv/pyaCa26Yq7cZ0RSZJLRDjx+tc6ft3zHE6GHGrBmLhEgSleTL5NAGKqh/x7Gtt/OS9kXrV7GeMZfxKqfIlX9epxhkhWTTEz121Db/qRrPRtOVqXTPpQgicw3B4c0zA/T7hxxTctfR7KF9V5bEJm5o7hrRdXDKA5IYUNGn0NlQAAAAA='); diff --git a/docker/streamline-src/app/Models/DebtPlanPaymentStaff.php b/docker/streamline-src/app/Models/DebtPlanPaymentStaff.php deleted file mode 100755 index 882fa106..00000000 --- a/docker/streamline-src/app/Models/DebtPlanPaymentStaff.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAQAIAAJT+lEXpi2EINWrLl+DefCj5QZ1P4p+7FZtzFcsWZZW3f6ctrF4ahwke1FnWJiBwGCoMD8yzSa96q2zJu1ab1UjgBGvc+gAScApzosjfTSWygP7CWdDe/dqI+CTmpC93stlxmXfaYjfXb8rU0wyQJqiWCzgHneblkvzUE5zrZDG7fxSY4yyWXjOuGTojeVKH/OqwNspkGiCdM1XR9nyN47JE5WVzDo4hgTXlOvbKpRtCzqnmwq5Sq6LbI2cJtxAuT2Bi3FgRp+KocaMV1XMCywIOvqB9P/iskSjQYNJRUeKBgI+eyDDFEmrbizrQ6NcZrNYj8ZLQn7zVrGzhL5ofbAfsP48APfKm+JdtXyXz6l09AgvPk5cOqLB8MsMudL3gqf9Y+AbKFHUC83DYDT/ZqxA68TOdRt42ZIzLmwU+0O7kSAsiDziSnlesRpPUvb1kG50ss4PsWg5PuIVYrdBpsefGh6u1m3G8HdNKK3g9Y2SkyUFLXSIdU02OjuJX9xCRVvaoGU3HzIN6Gu4EZxa9CM3hgjaHfyznnX0+GGB7JpcUNYqchq9VXC9MvyOlXPxMtdDQIfo+HIoM7YRG+pHsRnwFb+sDomCYwZysWedb/eSdBJTtf6Rl8PZaBU2Me58exocnCIcIImW1YPo/2w84p9wPKA1qKelyd0UkEl/5l+GH5A+9xTlkRuArHseucOFDifoHGKHSZymLiJHva3Nr2cPrfKnDk1FF7HE/ktqYop+jTvpzE8G55W0JZJAYqit9NAAAAAA='); diff --git a/docker/streamline-src/app/Models/Debtor.php b/docker/streamline-src/app/Models/Debtor.php deleted file mode 100755 index 2eb5cd42..00000000 --- a/docker/streamline-src/app/Models/Debtor.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAsAEAADegLbrZmVf8zkfGdKrlI5Y03fuVB7pbbjC/d3pwD867pc/zqWjmS7wFTPyTt4HUO4w1103/bYCa1K7wOUOywbMcj/XBfeKrslnCyTR2dpSTyejyC3YdqVKzCNowxsYYhENaoiUy1RC2MoooK74vlsliEQplEeOWxogWsxUODF+3KPMSAfH6bABrvDBreqvAc11L5LrZHAb5fEhKWCmECf0FmWDhkN4oHiClN7sskY7364u4j22gH1jl/0N1zjUzzsqeWpy8Um4FK720VHF95ThrcOzJ2q/eyiaY7vsZFZ80iTn8LaOuHm7gwEennmxRmlgFB0p/FfjuHw7hIr4V8sRIATnBCxgxL2A4k1WZhbM2ScGUTnEGPLmb+3mj0q3IggbM66bkZuM+wY53AJaz91OB9DqnKdzstOlE9XC5CAlLE6xOpy9SYKGwXl65Q2QuVWK9hDQTwqowMc75f5sA6i2xH/W6PuWSa9u5bqzsMWtxNcDCfFxRo9tiBgrSsPVE7BTzSyl1ERqtY/1m2lKSBeQn+riiYBN6Ge4hAH5cFbSWK7t2xuoviJTRNu8HpMFIbwAAAAA='); diff --git a/docker/streamline-src/app/Models/DebtorPayment.php b/docker/streamline-src/app/Models/DebtorPayment.php deleted file mode 100755 index ab91bb68..00000000 --- a/docker/streamline-src/app/Models/DebtorPayment.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAEAIAAN9IOOPgNgdnJXdbUXuvYz3jtVx0eo9Ne2Ujf+WZhbhLCzGMYlV5M4ezotuBgqJ6ns1NiYiCLsI+v0Eo3THuAQu93v1ujlzwxn96B072COh00awryvy2VPK+ajPz0BexNQtujfHQ3bkfmYfQWNubW7BDp2e3lIm0mAH864lMvt73HIqySOYW7hMmkrcAGThRzw0V663VwHwEFWLKHoe7h7tCBNtjiL8imDxHIFktEOf3UhHrSloggt73QfakUyREMxF4gxTFHZDL0uTL9GIOcDmzE5nIGRi5cWbVTdw+2d9QI4xlL+r2sneSk2XZ/23PBiu3xHzbl3OlPdnFpQS+6BnoJSErd3zr/T17itOysH9bCgNddinMSsDmGnZ8fJs6ALdzYQu4RQHSQ4SejqZZthIjDZnSbiOiZb09Rmmhq0IjRJio1MpGl6pqzGWfSulEHC7l1iuZ4epQ8a44tYxoqXjF9xldHmN3SAFtM7627vFnpDqTZArCvZRgD5KmaZnKIugo6dvlXg8P/Ee50/hhXym+oTw4q6dwhhtKPmEs/JgespWc96HwtNqMt4rvJeQlqocI0zP8/i9d/43Ky2L/b25pA/XKG02Mjyo7rUpbHGjMIzw9kc+gSW7u+rGDNOAhnT0grCfB9rRpU4BRDyM5J293MMvUk5/8eRiR+zeNNnUkkVfT8in2A+W5HvdMGIL/MwAAAAA='); diff --git a/docker/streamline-src/app/Models/Dental.php b/docker/streamline-src/app/Models/Dental.php deleted file mode 100755 index 4fdcbc01..00000000 --- a/docker/streamline-src/app/Models/Dental.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAuAMAAL590SCYcn/1A5uY3yIwazOtJNU/A35LyAhNg0utb6IOYvXrU4uKeswyxuJPdbG5qaKfnBXjheg9VXxxAUG3V1iX2Po9TkwDXYM+PNfoWRGlDPYNc72gxbNRHqFO1HMwj7a80kS2xi06dPps8OU+426Cwb1MxsHABMPKdU4u89RpM1MrrDoiw2QfzG0ZPkrRjMymNLf0vD92zoLn3jz/GFybZ0rpghFd01VDHSw/bgylYaoNeWyPK0YBpbYtEmCSSUOu07cDCDTDClinn2Sukwm/wUpVrw+UX1OkVhM8vNt++i+mKCYHmq1PueizoeKlkwxoilcMmQiT2vfRDvKR2+FrxPMKEi3lnNajnSdLCkuZpgABXzGeH2cyzzNtPdBbfO4Ulmhu4gwIOcRYLBytvfkTEERXo5MiZkXBmSj0EgZw+16554OiU6msMTlo8qPQXVl5NpCyIJY76FSXEQXMGzm0PKvL8S1RgU3NjBBqcswUi3XT9hKiqQPe1obAHVP+OQVcXlut9Kob1ZN2ORxGFnfhSXBhNIc+TsD/1ufH0TW9LtTKBAj6g8gUXWl8pjD1oyab2XByUtXZ6teXcjXu5AhtIDgoo3C5juGBBxGD5jmNsL9hTyTz7Vzbn8B8/u+Tuf4aLkx/qJ+PlqJ8cRew4Mewk41EVyG/Gl09HqxTADF8EpUu3OHNzYzNJauAKmkxYV5RoXgPN81aoyR7lx6HB0qdtt5gXvSVe0kPsbKgzTu/yTL5byoV3dDpqAkDLFokuF/vpfp+MvOi9Ag+00LnrFnmA+ZM+tyefOj8emJWtXShi6HuDlOBSDAGhovYHnat0/wROOe/Hx6gN8zHkSffBaPgsTEQY7Rg2+73RkgGzmn83ZW+GGROW+ZZGFMhYKHYaSIh2Fc56aHCZnwQSvftwJk+t64FeC2ircnR6U+/I7mKnhFqMLWlCX0MG4e0q8ykzIhaxH+ULKfrTTHwlKdWVvcOok8y9FpoptZI6jbll7jf/Iglg6BIsqnidBoGG69KEq3kl/gzdRomTQdDreqrl/aVmaXVLDiAPsBf0GorEpryR/rGUayTwv5WQ8yvdZIQmF0muHl7Zb7h6/3fjkAgEcEnHmSgHpyAICtpR18P3unX33/CKYA3nl2Q3eadVISD7KPkjDitLTjWBka062Zm6rIuaFm9QRR9e0Mdx6FKp+yegSiKiLVCHBnMuoPP/mPERTtdnruFg2Rkx5K5jg2vBgUsyAEQpkbXA72akCkuzSC/d5riWTDRSaUAAAAA'); diff --git a/docker/streamline-src/app/Models/DentalUsage.php b/docker/streamline-src/app/Models/DentalUsage.php deleted file mode 100644 index b9c2cead..00000000 --- a/docker/streamline-src/app/Models/DentalUsage.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAIAIAAN1D0sxi6IYBIMRJxpJxtVkw1oVdDk5qi59Vz2xG56RbM3Cv+C+cqklQULxLOSArCv5THe0yQufeY52Kjr1foDula2haNJ3DWsubfC4l0AHHGU2iAyce5XiVwzqLKRU/yfItjojcTT6wqxDY5pEDim8u6mNQOBadkHBp95NJ5cJSjPw3wYsThjsf+9siIVzinjuH3Vk/4sOm8m8juWfwV7hJtL9rTanGhQLSEz9ZMT/Pi5zTUB4/C57Q76/zzviveLa7PWbLyY60V9aafYI5p2fj6Er+Dol6GQtZJDcAkC3ptsvONC/hsr+fVntC9JSbl0RcaP9s59p23bu6B/a/KGauajek5yFETgV8WxXjJg+ZX9VTK2wHBzXGxZjbZZJ6Ee9eCjEJiAPJdckwa1pK7zUO0RDyPdo/+SA5tE3yRR+aw1gFQ8INYhm9IVOT+VuywwH+Tr1Mf7nIBsF5U2D21Cg1QugHQXLraor/ZPeLISWJT5o82lCATDZ5nT22hWLCEzUjQDbPN5ln/boKlk+XyQz++Z674ZohEhpFMbqkPZqGXl7mOhZduM7/+VCuO3tppM1fs1P79vqnY9712DHXOEldIRrtn3M2i9ns3VgG+IotjDQQhy7RImkmDUUQdxzJZa7X1X0D105HGYNltTMJ5LbXE+PHTk+GFqUMs9p3bwX6ktQECR/zqgIOnVpHNbo31trIjxZOooIH77jIWdskf/QAAAAA'); diff --git a/docker/streamline-src/app/Models/Department.php b/docker/streamline-src/app/Models/Department.php deleted file mode 100755 index 7c28169d..00000000 --- a/docker/streamline-src/app/Models/Department.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAIAIAAJXPwSYtbyfguA1pE9jTznC65mNUNcPWQiiRs5CrZI406SR9c3+Bh3Z25JWlCgehkTADRR81ME0wp2bZavAu4YcE0X7JNg8yiadRCvDYUIF1sjTr6k+CwGw/zyt3kLS+J2WKvZCGAAzje0V1uVI1LEuUqh0YOG6e40Ed3nthVa4gHiGLdUCF31l5tz3QSr9IqxlKLJUkCQt44ndA8mmZGwUDeQdF0dAMo8NKfhMd6aPXHsnCEuPlo/DiCVY/7d6klcMBWil7xoc1Z1ObwsXNvTUiaVKGgoNGYzze57+IztDV7AKypPKuW25MZWwBZmn5nncqf0EnPuzmjKh1yQN0ugYJ/q9w6wguZGAft4Uwxu9QpdBL9ny0lFM9CHmXWnsU1WqX1LDr90ZyLG76BJn59uDJ3g8NyWt5/wLHbRb/U9TjO5sKYuVdqmdshjhtmgA/yprhldXypl7Kj8tIyGmsdiwoPJA4dgxERDvpENrlDRMej+rcfRizX9rXOcTQ92ZfrB+f5wv5U+oF/En8bOS7QZsLpUF3ikS4yX2KBm49bnpwFHa2xE/0ie8dZl0qp+jdw0hna3TYZgYFMBy16GQ4w8AxpwUIfIBiNvp4oxAo3coBlOYxMNZ3QPyajl5VVsVCE26A/5Y56TkX20VxkiBptZmt6DTjuRb1dptIsgG7iS6pRMqWm8yQ6y5S7wGD5BQWzKkK8lA7tyvi8ar2DgvdBxUAAAAA'); diff --git a/docker/streamline-src/app/Models/DependantsConsumption.php b/docker/streamline-src/app/Models/DependantsConsumption.php deleted file mode 100755 index 10b995c2..00000000 --- a/docker/streamline-src/app/Models/DependantsConsumption.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA2AEAAJrLTTiNyeHKXDdHsg4CkPHtRGsZbiLUtn11TWVedUbsj+o4K/gy+dERzp8v0VfqqX8gjyL4kFmokv12bTVFdozultTHVpTiu6lT0B2d737a1Pw1Afvat4aZ7YTA25dxi67Ux0wBe1z7pnqeLd7Zlsgg5V3qOjuHYq7VVx8XZJgUONZVhy8m7eCnZ89Bxa7EHLwU3ma7zFRP/+ydYj9ya/FyBqNVApId+roO5do23KWaI4WcAqCfedmnK8DIE5ZyaC/YHuyVaXwEngNwoKW13pWBopvaL2AgIKm6mrXkdZSV6OHF14rXDqTJ1iPGjE4AMfXulrmNXQS0MgsB99YwxXGes57z3XQu2UNaJQitLjcD6rAgVvo3Ap3HgcQ5+tpb2EMCSFdjiop6w9eCGNfpvOwUkAifJtJhqW+nqCJs8Eo1rMzJqhKIeg1JoAA44CyE4QCOrkQ1SfiMwYbk9sMUWw58D8qCGDE3FyWY7wF779+QpiKsbkZPgc5j2dsZOIkr+H5eJS0YUQ4cMOot1aYqEolD8f8tQdEoDnZIVn1bHUM6k3bUCp26WP3xYO9+wQvtWV54rkkvJVGqFD2NlXR7R4AfDwzssowboIl/KBTRUWrW+/xcSWH85IAAAAAA'); diff --git a/docker/streamline-src/app/Models/DiabetesFollowUp.php b/docker/streamline-src/app/Models/DiabetesFollowUp.php deleted file mode 100755 index f8174320..00000000 --- a/docker/streamline-src/app/Models/DiabetesFollowUp.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA6AEAAE6nJI+nKtiXKfPzuxwF3lTMl66ByAaa7E02XZKiX1+i4G2EerOLqloWAhmZ/2JJ9ff2ntbmMCJsPNhIGolexcZom8qCGUc9mIxtg3naPI2dkQK2VgZoWibPn5Kb+cHnmhYJBehc+BrQBPTmmRCY1mDbW3ok195a/DI3Yg7uZcEXrB2kJe1lC4Ag0vccKAum7THI5U4Mhpb9wYaDPkTXkcnf5N4+EoiByZsNHUhhdj4sFD6rOmeQ5owepa4WRmfYYEegcT6pEfnPaVjbXq/RR209zYjoDtuWB5DK2/v/X/Uud8qxUCsf5sqzsS7dI3FJtLvZS7TYDJmhQf6oII1VROmYcm+Q4DPOZ0U1AQgiLgBs7JvBTOfGMEfTDpCh4GRKFWD0RN/8/TqKnEhg+BrWNwG/6DrBwPi4X6ImWL1qU+LSBSEjMatdZfl11J1k0liDw2ARqhLIwls2R6zNsyMHZqpZVEh0E87RD4tLqEhp5OOkRQPfRcdsJnR+wb6sfHRfN8x3YAULr/ZUCA00w6itjvCSkJ9YULkis/06FnSsd6z8YA/LXRLbfu/zuuGCx05BaVf60+RZRtt2xvFzb0ObteM+BhZRFV81fgAhc/wsqVUMRZBeVvYWRN1Mwb90NMsKKnHgSdgnSxx0AAAAAA=='); diff --git a/docker/streamline-src/app/Models/DiabetesRegistration.php b/docker/streamline-src/app/Models/DiabetesRegistration.php deleted file mode 100755 index c58d8e46..00000000 --- a/docker/streamline-src/app/Models/DiabetesRegistration.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA6AEAACS0qzDf/7dz7/LmKKEc58R5AiEMgMXnzRGQigjKqfvIqpF5ADjju64z4yP7DIzldtYVMKplAWUDfhmPDIexkXLCPqiEqJpGFULN2oOy6LhfPVVMqNMZNzUih9GsSlfJ/0zHIy93IglXxG7iJTVLzEGkQA3mKu+4H84cvjEwQiaHNthuqz0VYTz1DFeAebLDVq7RL/m5JNDrhzKS1OljoJqWbJ/FHh+cmnqIqrcw0JA6MJ4n08DBlMgEZSVD5JNB21O5vy83C3ICWgAFxFiRwPjAzSKmMQ5JDLnt5tbsB388wR6yVuTO3K7rfWZ5cVlEzW3dCQaqJf6CuUx3jwICLiUp4RSErkrbPSOIBWsYifQChVVqSeuRBET9b5+FD1k7k6k4AevAasW2foNqlLfNpI+ShmpvHZ8wReL0gmLMlHRaHlEt6U0tneS1NCukP4BYR8+Pkjuz38/a4NptyBip0VkCKFa/Sc9FlxemgtAJefZWc9WMg5kR4yhnlfxDRmKl4FPgV7nj5ufcnFq0YnrTs+5yL0DiSDciXC9+5WRJ0nvPlryU2xN6CbwPPv465rKlsAYd0+dykhRxwv4TZAkQCqnZ4wUs7GOpOrhvZ+7nUDXgKCsyVF6wQMK+spjr6PE5/JidcwBH9V9YAAAAAA=='); diff --git a/docker/streamline-src/app/Models/Diagnosis.php b/docker/streamline-src/app/Models/Diagnosis.php deleted file mode 100755 index 67223958..00000000 --- a/docker/streamline-src/app/Models/Diagnosis.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAaAIAAPLxF5HiECAZHU+zLiFwVm/CpnZJ44XEnAjmM+lPjxqcCX2/PCaPNEQModfQ6y+PNbKTot4geMnXCG7ZShyRzrBBoj8K6ufQP8WTvwvIuAVntuiY2FJ807PjaFDZDJ/OfJdmTrLyJ6KyCFaSb+JnqbUhzhpJyP4LH8lZte4KJ743lVkCbY6Jk9rYZDj+GSGcc5wE6FicLERb5um2HIboago+HGVfCwQonEQGnjMF/p85RJebANKVCnYgJhpxa86UNguUpoff5XiRlaHuqJNTuGD2dEkmYY9N7euHAeiCTHPkzE7hO3ngZ8wdx32tTKFlx4FvNgrbN5oUETiHVxuZfKKBVa1ulSJnnfednJafrb1H3b00vn6XNWowUmNtu6qAeDcBkoAg7NWfw+VDPWH1GDAkn8slWsw2OQtIoEeDB4uq6CMfUCwdsbBSbb65Ejl65GVD0PKGn+5N4Z6P2TOQGrp4opSgbKAfc8TC3pw1rdQg28UpobdFH9NPXrHBdrhbb+5R7vDVH9sCeYyFPDzE9a8UVSx+BZLpI9p2IfOKNC3Jj2uxAXOtC6JiI1WyO7P8LmX0EXOMxVFhQsQNlbkAkZ+5mfUOGApyh6hIeQLBal/OsX5kGsY0SuzgaO7WOg1sUSOFvRNhlMr0wMvS6r2ksa61Z9zVrWQdflqap1Z4BiLU1GpUS134OfPGDvMDpDR3SDnXZlJ9ovSrcFjsJdxb8RqvNq15XWgJp6gXbvfisXju6OF5oCOUX94kD3Wrw3X2kAN1kyxH3ySJGRytF2uFvg36L0VQAo48STCZHcdtVBlsa036+6pfVqcAAAAA'); diff --git a/docker/streamline-src/app/Models/DiagnosisCategory.php b/docker/streamline-src/app/Models/DiagnosisCategory.php deleted file mode 100644 index 0c3699ec..00000000 --- a/docker/streamline-src/app/Models/DiagnosisCategory.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA6AEAAIowHy/x8IZcY0P6MXfK4lV5o6FdF0xVPH01VsPMtgzvX/Mrls4EKlkzZoVcTn8AajcMUIyTDhMGLMXjda+FE1he1s4roriHnDuXJvPk76PlURn85ha+pLTvvnNJoMsrtQNS8jJZzLgW/JeCe9aj0b5g9YPIEYc4lc819E5MqHlMprkwANWHbOjfKCvOZ8s7+TpDB7Z/20huT1UE+YtAoL1YFLrKlO0o2cpQ6yaM9yIEtpSd/qzV6waJ8vrg3Dk2PSHzYJQghTSgJJfI5LbgWStWBzaeoMJFyOfkOGeO3EtX35bxpWpInYdPYsgFgCaqDdhEMehHWj8KaN5ohFz2YLECoFgUms5tRkGlgSxtunZGyGUxC3T1RYhLbD/tSES4h8ko17XhO7mE5DX0bOjY3ZUKmaYTSPUP7SfJ84n87T7Rt5FHtEjbpWPAXorrwC3A1jiEYBw2QpEWchQcq8RLEG7HuGxiEKDiko2+P4iQT+b2FTHh27ztZNKg6Uh8tIpmcIhKiL4Qbr0Ps39+n5p/2L5A6hqwJje0uRTiBmSWMshNVu5TBaJrDCeCwv+TIQMib0cc1ykbcr1e066KZHV3o5W43T8Ir2EHYZS5MICs+tNZuphMiAqFhiG8q3+KEL/cl51gAPRSf1yYAAAAAA=='); diff --git a/docker/streamline-src/app/Models/DischargeMortalityRisk.php b/docker/streamline-src/app/Models/DischargeMortalityRisk.php deleted file mode 100644 index 2ce24084..00000000 --- a/docker/streamline-src/app/Models/DischargeMortalityRisk.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAyAEAALLP345rHSEDvyOJM61Sg5qdlhJac3Q2MUXkdz84MCxD/nd4xJEbCPW/Di/q2hwyW594qgHDDJ25Xydscs+kvIEFdC5qGFCX7bFvjpmTRtD/PPWXJO1JMXIo2IxYz1OeM1UEfFKEm4SQIkqghCG5QJpZiDUR03kO3xLAkRDRi5Ry9i769oZqQpXD1IS0KZFgJdRwDxL6mFYUC5eV/LwGhYPE3Mc7Q/ql2zdGSGYUONe6MvOhasVUIldt/zfhvgVK1AoFMF8LIcVD3zcfk+cazGgS78Z1SlFdGwnHgVZdMjgAnRiwa+0Uu+X9HU3d9Q6pyB/DBcspT7NddwSdZFPv/Cjz2vG0v7ZVV4HpXFwJ8raILmvfHc848RpAcSKXKeVmpkmWHzwnhg8EMiRqH7DvjaXoZxggIP9FPOMdSZuwnqifDbKi6ju0RhbOek0XJfRY3P0VLdxqT3uTc51Rw8XAMaE0hfYZGdvP5zXShixE7lNpnQf8VygD8xK9mKEJaAFXFamwiPMVKTG9oNTYmPC6M4JbYpbGq9eXMKa610kZQj1oUZi7euRn2y491Zb7uHPOliVIj2uqgqyrZeEOdNPp8QTM/JXc9f49NgAAAAA='); diff --git a/docker/streamline-src/app/Models/Discount.php b/docker/streamline-src/app/Models/Discount.php deleted file mode 100755 index 5b6699e5..00000000 --- a/docker/streamline-src/app/Models/Discount.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA0AEAABXc2YpUn2A1R7/TY0e4Ds3PUjvLVgn7ihVvgEpM2wx+KONJKmOx0XImR0C2zGyCvt7KwTjd5E94AcIIkmTS2Plj8BN6Dx2q0G4dfTxMHgAVO8/YPH51ko5B2YuskFcjHJYoDnZHITZBN5VdNFrLvqUhTiZByhXj+ZUHXOOccNsAj+C3Jq/MUFDxgTwb0BzhvM2wPhimfbH2jVQs4cvQmB1PRoUwdGxv7vDLA3HfgyOvLeM+yQozNYIBWyjYU69+zzvVnd6LcmT1SUjYaI1UBF2dWNEWCWlv7tFxsCZO8U0URmLNdIsjejHogX2Vr1eIDYJRWCYiAHsHNJUUh2FJfoo4/JdxMw1Z7Wis2JOrlBHVuaN0zwRq9F5de9oktUVsYPlZNmlP/PtqSh6/euMwvsAfsOVUnA4o1u0su6LgDiuLd0QDknt2NdJydZSFK00R7OOJMiit0icyl03RnOvsoqjgdS+NBAzgQ8h6KCouFX3xn+TDwPDLelY96Vx7wJon9gpiD820OQLquK6RjftMye2Ugf9PkJg8JPoOjd+627xb/Emhoeje62Glg71kFVeSeLsIQ14/fyjTcEQx9/M/7hD/NSITlKIxLErsdvz6FHO5AAAAAA=='); diff --git a/docker/streamline-src/app/Models/DiscountCategories.php b/docker/streamline-src/app/Models/DiscountCategories.php deleted file mode 100755 index e31e9204..00000000 --- a/docker/streamline-src/app/Models/DiscountCategories.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAEAIAAObQ3rlDazrTwVJ5ZF7dgmIDWLeQnYYnSvHS66ZS8N/PEA76eg6lz5abaXhRTKYi4hQ8gK5DrfrjyTsNqI7PtUcqA0Sa/uTsR5paeaqRbJ6F75JlqpbO/J294g5FKJ8cLE3GaZUtG7zoiJ3F8A5EmN83O/A6DEX5aWNFCDv6IWcuQL9gY8wvvDUA4hNicAMh3bbYqvXE5itKytUkXCYnaaNmdCj8qfkcoGclCXGmckX+6TQSesOBV7aKTrrIYicHyvpV5V4D9p42r6dbhuTGVENOw4IxelNZEkT7Fmao9fhhb0D5ZY/0fUI0Ypie8JrUxwmX3SAlD5YgIakkQaLuzXWgSgdhCA2No0FyVYKhJu5OI1VwCXs+6URi573Ux2RPumrEPY8SOqJAvRqQwjT733JFZJAw5c9LzsY3RheJ1pOD15xx7RbN7mszFlio6g8Glay7VTC6qSkG+um2TzsdTIJzkts6fHtXZZJADoyWX45yliIEzL2zhS9slWIAhvesug/u6B4Eteiciw4labFTxjj3WaX0thFbBT99aniCsKgA1yjKHSgCmKvR6b0wqYA9KDeEirE6Ik6lSNV8lXWVCN0J7UAaF8UnxbVfuxL5FbVrv+gfkKC6lz1M2XUTJxwn8RFJ54wWH3bwwQVP9zFjLdxCRkFUdvD7OgojVIazbU8Bf7BkCgdspAQe8hVpeVV4NQAAAAA='); diff --git a/docker/streamline-src/app/Models/District.php b/docker/streamline-src/app/Models/District.php deleted file mode 100755 index 2e44c020..00000000 --- a/docker/streamline-src/app/Models/District.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAIAIAADkQTHeeGCSnFNBknxutWEFwk1AwzdC1MuHawyL4MKkGAMSYcRk9/7p45ekmBA4Q2UcRy75+NJslzHi5Hg0REX4sM4JrvJK9IXXB0osI1VrFg4I0TKmv/zHVQ0CM1IxOogTGHiOPu6qWv6VbqN/VCqR2TWFAVvRLuybJSOzfIFEW+lNEuCZ4rG0xZ7b2xOlclkbxTA0QxYwHUQONRrfvZReaoNVzEMCtYiRz5aBTFxiEXU/PCp6x3PGzVIjkm+zZjknJUa4p45B/2aO8ppComsDTdu/rBzSTPV21NxgNmAMLOuobKKS1phkqcmOIyAwKA4bibGpLPb/vXiZbTJE2KQYw93BsgLTPwu1dm5XSn0W1s4jvVKvAYk5QOK01R0U/RwTZY8NELikc9mIm6OQUMkoGT8JxavajuCdkxJRM8ftCt1USSd3ITyA7pooH0F7+kbTZxHbbb2r7X4sT0byN9EE3h8SUVWcikidfnhsZ6D6cxrZRdpNoHf47JCmC04J5s2hoRyeBOdnc7M0AbdvFlYefv/dN2CaXLFeQfo4D2hZnNjGubo5/zdNboEvViRJWMFYTStUM96qsUw1HAcgvMFmzf6aLdlIAbLWsmUPrtWue1mE7PhoM57vf278RJ9DYJKuB1lox+X26c3h5qnsuBcWsI+EFXxRMQrZYUgL3PTvCy5upPik73qTSLTFJHsN/TneM926R0xu6NrH2gvrBUZwAAAAA'); diff --git a/docker/streamline-src/app/Models/DonorDiscountDetail.php b/docker/streamline-src/app/Models/DonorDiscountDetail.php deleted file mode 100755 index fbfd27fa..00000000 --- a/docker/streamline-src/app/Models/DonorDiscountDetail.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA8AEAAAHBC60/tQgW/ghIm5CTzmivStGIn2+SDdfyVQOMmkvBR4BdtJtbLMrE8/TYlK1khbbsp+JRLj8Pc1Z+lqi28oTaYUOnSsmbO5bfFRFE0Fpea91hOTEvf2MhPdxipBif7WqCzXaJGfm2uRH/o3gcON2zVPIAWaxO6VUOhZkE2VQbsduzMR0WJuL+BgYWZpoMsoJ7cTn/XgFLUJKwfajezAcQxMQouulz27XqbBdt8BTeEZpt6Ztiif41IUrGSpnOqMOzuu0LIqKgvNCFhMEBoTKdnpPH0fnxxHiOH/ORoU8ckS32rbR2zDjd9VGUCJTx5dULOjqLmvq7155eC2TFZplPJAfxZYPJuWWn5FiYkdbu7dzHCAs6Mo7eW8585NNvF5M+hmhsSTTH+ZkGbuLpFp8Ex0FA1uXHXcfNiGLYMu7ibk3D3Kkx2w1ygdNbWNPEqtKnhnVZneUMW3kDuOe7CGdNjF/MHrVnh0vk9j4tmYRAfKZZOANGAOL7aAoogmdgTFdbnyp0/L4cRrrGpD3IxN8M4dWLzeEqtXjaSj2gMx4jR/g42QqdQF5WXF4kfMksqs8voYV+/PGNzyWXxfcbej5MFdxUQwDn/JoKdXpBD4oKSuxEiG89vKtKPBFkcpKbNOCuoXWtrysw7hEsQQEc26MAAAAA'); diff --git a/docker/streamline-src/app/Models/DonorInvoicePayment.php b/docker/streamline-src/app/Models/DonorInvoicePayment.php deleted file mode 100755 index 0cf2b408..00000000 --- a/docker/streamline-src/app/Models/DonorInvoicePayment.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAEAIAAJVkvtpe7gX0tvC0Dr1ohqO/eqxk/fd9MjoLH29EfrPUgVpxNDvn3FXeIPmGdKWc2jkYTLp4v2SnTqUNFF+ppTWHJc8B00tisxPtTR3wQYYGtvgVMZaB3It4Pxu6FiBq2JR3wfT+WU3G3qaDX1huuGfEkXHQbUQD8omRyVfYbUou48DoshTEtY5+Y6Gjeyw8pMJbRGUZROpTRp8ND3vP7F/eDePgnITx0hZsS2TNTLGTb/cMWwxmCyC/O6iXmJ/CZ0A/pOqew9wyznpQwXiNx//oC619YREo1CjulONokpS0UJptqYnz3HjKOVFWrawQYI4zPAb2Szg2HNriHWP3y/eiPFIACfSMl8cDB7kOAkAi5u357leIMrMhMu8+VwRVmDQTJ4d9ZLT8h8nCzi4hCi79BqojkCJ7+8BrsGwFjiTd0kPqDyMCaAMWKRYqHBZBjatX7As5rIMQ0DcfgDEFPn1OF4xghmhWUjgrEOZtsA0YfttXiMYDF/udbiDdO09fRjc9x/fmtMPWqWMKVYJpDuZRqinaoNH7wMkLVOrqPAIzpFcS2s04QPtR/HGY7h2DGdDxsZ0VHVtBHep9rfG+Ny/CaqZ7pDgDGqk6rYZund4oi2GsgHHu0aesXe0g+KRbexQCVkEqRxZdH6K1/m6TjzpdR4BYxmN1mO8UJJ5XUtZy3LEzevV7i+DU6Te84MsBfAAAAAA='); diff --git a/docker/streamline-src/app/Models/Donors.php b/docker/streamline-src/app/Models/Donors.php deleted file mode 100755 index b2ec91a3..00000000 --- a/docker/streamline-src/app/Models/Donors.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAGAIAADbkUFYQC6m0A75To7+942/CX9gddyqlE74fmlIZBPpQr2ROcEAf6In2jtAnfWmnMINAfhAmkSJqLYNhwO8FH/IqBn1MmKfKBNvEe+c/c7BnRFuZWuU2QCh8/5o3w8DcDMT77tJusoJpt9m662MQy32YLeM1ZhMWv1Pgld96GTORxrY3TyVT/KZ/EIIg2mtzULsrODfWmWD0j0X23aadoVF8A9Xth02xVXv1ahb3VL6yRpj1fpLM+MEODuGnX8AKokMHblYdCAJh9iD5l6Q/YQuHLcqdI2baNCOQ0ZxVca93a31mWlpqlC8IPMnorg4dT1mpzjoE6YSO3FKQZhNR1qznxPw1EIifteGeF4Uip5vK0pWD5Lkc3/LMLGOk3ywXgJo8BDTXak4ly7imRsXvSIpyk8IHIvLJli3tyKXKvFK9+uCy+98lSu3U3Kdz0Dm/0nAlBBp1Z9/5fG3jw4oOcn0gFXsIpkL840dqVpnsvGTiJMLXXPyB1IGgNIArp/LnMG4HqGywkA8UEbdTqXieXu7kIcr9DSFUHS6QggCVvK+3dDIAn4+BsTZ+LhdBHa5qX7/xW7DL2iIxpkDxF1sTBE5toZYrAUcZtahy+A99PtZdGMrhbaMMOkcqP7HqLYi2BXnZYAOrEBElxFh85FtGNCw86GdLcsI9kN8bs3Q3PwcNH9KUMw0ExB2oK/KNGz0JA/1n8vvj40khAAAAAA=='); diff --git a/docker/streamline-src/app/Models/DosageFrequency.php b/docker/streamline-src/app/Models/DosageFrequency.php deleted file mode 100755 index d211afbf..00000000 --- a/docker/streamline-src/app/Models/DosageFrequency.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAASAIAAAkVx3A3sonPlDD83knAuTZMfrGptANKathYE+JIkrNKhY6G/CEeNGaxxul+Il4CV6kMkTQBBK0Hi6dIwu1v78nPIdA3LMGBGyDvbxSIOu5wy6J+NTBRd5679DzjSdQq4HdMvZL5GY4DBWqb+q4izu0zNsgH3o/9GGODu6+41CdDPiQ0GW9KnA3yIQnxN9DEG92UN9UCrKACeEpAXU/sHhmBrCWCJbKM6w1lVEjh7rTFPh52dGK9MAbcH4NAxbsUI7Paw08kxxT1ewmPW72N1h/9gEjtMz0ItNcL7SQ3l41+ATdneWYZ+kWdkddu3BJc6e7HBWnueatMpa7OfmzuLZssxj8fwPnxVJyruEV47DWBVoo07mVqIrF4xYBOLCWcHaCl3l1JOwp8QKJkJLkZ0ADeG2QKrsfKHx2gDKQGnxFByiO0scUrqHpV/qV7E7m+hI/i69WBxyUjgLd1DPxqSOP3qb+/8fI4rg0s+DqdhL3mpSOm41rcrbx5G/mvaCxE8AaZEQUvy2FvHVUN9K8ZQ8LsfIrqdU+Qy7uIzaZj20xmTb67K5qrRFv/8LIUfRnuyOrg36qoaq/+TM82Ww9YnDiI+qZvg1OFbW9+9uhfAWKwWRwIAUZDZNm0xy1FwjJ5GD/lg0HbjwfO/eZgfGEDXpM4brMDmVrzGw1+2CjH9bqACbRq7JPN+iw/Y4uPMOZUY3odI5j1Ug65HdfytV04RyQV11SH72nWr3PQwhopR5aeUeIsK986VNZiDXe6pChYzK00PEUmIJ3MAAAAAA=='); diff --git a/docker/streamline-src/app/Models/Drug.php b/docker/streamline-src/app/Models/Drug.php deleted file mode 100755 index b9fb04dc..00000000 --- a/docker/streamline-src/app/Models/Drug.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAWAQAABBvf4KsSHvKvGt801aZjHn3S1eMJs/NNj+eIyz3s27goRspjlHVXvG/DUFJv6U6+rfP70CjhiIsN7ygQMYQMFO7NzFBr/3/H4I0X7tJ95ph3LbmQKKdYM17OAy0gl+wtzaRJMu/N9nVh2SlSX2RiGXNWCuHp9lUI0nmeW/4ztVHqZ0aAcw6SjP0pbBZN0BAEXqPfo6oFWC2PvYrE8mQu7rlHlRq3No1q0Hm2SMNEY5TrUj/LyOYPTwRgjWX2XXi4to1O+pZzUIGVrXaOWTfRmf0eiIbrXySoNDH6YfXvWnZ3VWy92uLl13fey/O7EIXbJzE94IzDnVieuwjiy+maRre+jUFYYeAKdiQbzNQz5Z6RjasrEGdP76nllYF64zHQJeYijhD+7DoApyqSyI2Lku3qXbUInRwL5FuoIUZ4GzSn7HAp7H8E+rvEjFvJRUCPMEXmhUlek/3CU/nojHCyJ/INLdGHSfr4KFg7RWsTr7rh7tXSbLthf/uaEzY/hF5oavpo9W/LF0OPPPok3PjK8fj8Cdw2g8gMYU8GAKNmAOwHQ2kwDMKQYUod9YIDbhXEAd9MbVuH9OOwpp5h07m8He2Gm7jE4KSlJI0+42F12sHpKKmxR3kZMYCbwP1BewxNnppAzlYzX86C1xiJuZhaDP3lpb8ixeszMzKQP0+NB4pSf8K/BeB37BY+WSQQzTmCGaOWnLEGp8Ykx2p+uWDoW7i5VYtwNgFYPEe+8tcCO4heQ5WxuUqq4Yd9Ld1tB1G7FwK5s5U+22QC7rMYn4NdIMIjczzRNtpssZDnMrkL2kkdE/b4DZpHBfXA5Tiwv0I5k8YTwsU92Aqz2ky4H1fXX+FX5TSYcVbTqq3U+YOcTd+TbWwBs/M620l2tBK/bCE6SS+BtdNJdu2pwbajUW4iBkuZXOlbgHhVpIxLiNMORwDl7wr1v87L0KKGZNC81hmvVLEz/5EDnQ4EYH4hyjAWCNHijOc9cPVeq5cil4MtSecbHxTtWsf2BpL0czkuXogGr/BE2XzCLTZdVA8LGPkoRdUUIfnVOJ+/NHTvWK9knG1y+Y5i5L/PReksPZ0soVaht/K8EOl3RMKf9LXNHxu/k738mXc/nlXyemSkdJtpi1JlBVRLCdTNTihuIJWKBTi5oG+CCTulTOJFBMduldh6qfKhKltrh1vG7LOXxwb0hl3tsCfgb7lsKKwcnXU0xuhJo9SwTrH3gH36hSbDHYf2Luk6JfiVN3dRbJkqzsYG+UfhblqVb3izgHJs5mkyBzGLvFHDYAJjbbgIXg1ZaRRJ8SWhrKSQZmR+b6k2EawDNcJ6ybjU1ICMYHxmzW56W1KYLtuQFyM3IuYUykzVhYb6lsG2Vdkf7MfWON05usWFFtlxd2KyqaOpqWjjPExjmqGQ8Ea80Q6Niu/vmP8qf0U1TEsbKtJSdyj8ZmdIAt89ay8BUfITpv3X7jkxXJZ5+LjXYdxRHg6RBuzAAAAAA=='); diff --git a/docker/streamline-src/app/Models/DrugCategory.php b/docker/streamline-src/app/Models/DrugCategory.php deleted file mode 100755 index 47430b40..00000000 --- a/docker/streamline-src/app/Models/DrugCategory.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAEAIAACVIuyEjXBBhsfbs5yNHLPSCFR5xNJACNjjdgmXZICRWdXPfrN6PKdCiHV/bCZKVYr9/fiVwbxdwdMR01DCpu9w0mOac2zK+4ms0Yzp3ndw3upr1kyhysjL8UmftpDbGehW25s2iqPCyBeBN+UGh73SeRRmI8oKGFmUWlL8iOXXuuOAysHX819V6IGTuI3SgT0Tt4mpTvYHJNZWUbg+Zv2SvpRo57uNf+xAaXci5eEN0MJiHZsHiuciPoUz2sJLxSNuRwFzdNjlIfHnYaOhKsQNIKMRPe7MXtJs4CjUchYoZA5OCiXBp8WfZSdZLdB4TcFsr8RX6Kx5RtM702YxH0tIwiM0K9770qYkVKq2GYWdb84LJDh/wiUDxRxwgnuSFLJMTHKCWOTjyyxNrFasoit7/o6csMfh0mRIWnFrW3kVIiFVDlOQqGpYzeCIvn0KlN6U6sJzvjI66FpoZqik+HrehUSsQn6yd8S32k0fMlVqZ+0+Yz1DANblnVkFfTeI75jFxRz//1aDdzEEawlaVmN9KOJE7i0ildozEtW8c9/rIEK5BM0/QGJXFLLXueTxFc+J6GVFEmQMEKelbVNXdGWaPt5GGRL9V18rLyH9aJtkTA+NsK2y1U3RB3ohgYporyTJ9yLk0Ggxzmd7Xx8WC0jntrYlHIhFLjXIH2LT7zdBT8T0E6IdGnDj2C56lmYpSNgAAAAA='); diff --git a/docker/streamline-src/app/Models/DrugForm.php b/docker/streamline-src/app/Models/DrugForm.php deleted file mode 100755 index 4fc025bd..00000000 --- a/docker/streamline-src/app/Models/DrugForm.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAACAIAABJWdJEZ4lu4yh+O9d1mBLDuPNrfj+7RGjNGXmguc6Pf7gKPbonQwZbwRUNlXuz8NiSpTgQTy5AhZ38jUjjoQk9pYWxgyrj3wy3S+4GscUOC/lRwZUo48489Fov5++2TM+K+4CMywEMrCp/wgge2bzt3zsLnjDdDh/BY9bCru254rsd41XqKEAuYKKcO++4+LJ/BeITWw3lMAjLC/BUkuwcJR4OqNhmLrXFOVTH8p+1V8/NmW4prYT6sBDgb+f5XtAd9sTNHIrzEHLGMDL3Fph8lurB4Bt+pNledFJIni34+rVot2nwf5zZefnlks1bVWGcLjSgW6ZrSNa0aBA+EesEuUyOrL7RWOZCoHyVfyEkd0Wqp6BA5Qov6QynbABhRg03P8XR0PgFEaNxA4t4ZhmpRtti4st7cyyfWYVY31L4au8weaRU5YnTbxMpzsWqXjZWxNIP8nSXjkBvaBpxDn+lLxbN4vOw/HT6hQFuR1cFz11STMPLoSgYpKDVyB0P6aNTEDLSl4zhHO0QGlyrqdob814JPbRabHa3aawcFoC17eefNRaBogu4JkwYrKM3tZEyYVjp8DkA8gWDADaKMQn6QZLvR6haY59GoSX6LBKYU5cX+1KJgFvPe2hYzI49wUX4FFRwqTtBJL0xz1InJlOlV+7leUSQ8qGXKfYb52TfVD3wQPEw3d10AAAAA'); diff --git a/docker/streamline-src/app/Models/DrugRoute.php b/docker/streamline-src/app/Models/DrugRoute.php deleted file mode 100644 index 7919ce09..00000000 --- a/docker/streamline-src/app/Models/DrugRoute.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA4AEAAOBZWMyC0XzTk+IOMOp8AWIBPKIVp5wxmFRtggLB/IjFfKoAkkkFtkYnCZVSf9shTB+TWtFocAL0cPhWiBBUTEMVBwvq5bjwcgkAoEgph42T3RwmtUPFyWlSBTJ1uGFSlYGf4pz/Bn6SKjL31OwZqVXlcQyV34vZdtDrhGjVOpb7rZEBmP/heOAR6fzJn7MtLque6cXAkuiq6JG9wyx3XnkEWGIDU9XVRYcEWKla/gmiL0Zxa758EqfvUQwaMX4rCmLB3KumpP5AtRSVYg5kTTj4x1oI+VnDlap1YU7E5vZUyysRwcVWXNvpWgt1iFxOmbCzitBtxoqz9A2orHjDcIxNrNGOvvN+3KIeBoB8qhxPNIj/inrR5xkG/DBvUbu/lErM6nTgqiRkhoPOX9pjk/MNDG1PIbL9f71QwdhJxhlMaEqH2Ct3uXvJq4as8XVjnNt2GueoF+WCZj/tn5lHubClbHkXON5btYK1W26vRF4ZhImMoW+SMnGn/dtIarCfJzywpB0wl4BKULm8yRceUnHvb1rGZK0CM90WIreh6fZM0XWm1mdh8h9uQpAV90vjtkNdfYT9gDjgWlpTLLWx2dkJ5vK31e9EGZT22JRVJqZmLJvsUbRkhxXuv8hD9Nd9DwAAAAA='); diff --git a/docker/streamline-src/app/Models/DrugUnit.php b/docker/streamline-src/app/Models/DrugUnit.php deleted file mode 100755 index 384a0fdc..00000000 --- a/docker/streamline-src/app/Models/DrugUnit.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAAAIAAJJegjhn8PvMDSkBNWPSnm8Ri4EwcmcdDI0a2n06jBV2xDtoUlXhZvtSE5N9bPXioenqMcOCzkUeGx3HN5aW18ZhjdCdkFFtVfY2FNachJW1N8gcxBmUSUc9wPbJZ3MzRx5C7xq4n8hNwSFgIlBl53J7wAYyBXlvoLFuNhkzd+XbmmKxnnE0mNWsCroWeXLOyARY+megbzjomL97hlH87rV2qaB3Kbu5ZS8xEnuKgzn9DXbFpRGtqKcDwWAnQrrpUo1IucZrwXIM/s4Xo5Y7OB8a5aqF6d/+5UBTqsEVnEsoVZkN5WrNPJVrJp8Z62oIddsn8bdNY8//hoL/dT5VmCPh9/w7ELUkUTAX3t7nvK62/ZWnZxdDQyZxEGaQ/vMLuJe+hNgHkTcOFyy3v8aWFepgViDLtMC2EEfzo3ljlXdYBYkP29vGWw/dQ527iJIGXMgWnLx4COLFCJPOb3/dfMphFn8l9EFE/rgK17HeZCVePonRI95E6D0+MIKAV8q7as07NkqkLbEpvazZGCMnf0qFkYT8FydxUXPAVOznYzsPilY+qw2GgEyQzJevzuDTknEfT6dBf03hnkLO9HL92FMF5+u372H82tYSQ/VlRWmTuSdFodgdzz5g9FOkUKZYBIEJOuaM7BLIWxLADU6bq9ndNBoq0X5gj7H/tFoD8qgPAAAAAA=='); diff --git a/docker/streamline-src/app/Models/EmergencySign.php b/docker/streamline-src/app/Models/EmergencySign.php deleted file mode 100755 index 501a1435..00000000 --- a/docker/streamline-src/app/Models/EmergencySign.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAASAIAADRHPViIeljfs09OYgAYIk66AhnadKKWCsXhkml/CgDPvMEndpBwZZT3EiM/fv/eyEH1HImWNuJhs96T7ER61Oe676F/447XDBbtlxGh5ANfeyPMeY8aLInM/UXxNw6TYPWBjr8vztvVj04AG6SdW9JUeBPY+Vs3C65nY3N7SApZntr1F6HnsftbJ0yzf9lNQxeB6Vl67LfNTbpAVj7UsejsM5OZ0vgwZepQbhKPq82yGSfDYtU/Rv+OGgRMDZ3pLoSD4+XBKvaxWzNWPS3hH1O6TuHPaZc2HoiLnmxKl1fRWmAv36WphiFsjQudZQUb3T1KXXw2lYUn/OpAS25eJT2jjIO4RCYgjOf1uXBORcDa29SXMLMfF4i3pOe47cGpdeiISF5xFWZQyPJfAzooMQYZSWYSGe5UUoMI7uH0cJ0Ft9reAP/SefV1id7lKatHC6PqePTE2+9QqRVsU0uZdXH9n+N9pGrvzf9SZmuTweb1hmX0HkGA3fRcNRlKD0VqJYj5MPgTniNsE1/UADMetTPN8anA/CXD8iJuc1pjo78HkzXoJMM2FxvZisGGGnAPvRMC3anD60pTH/bO68NIcj+eqm9rrHp20bvknS7mDxkAgEW9KU5bqHYzAeb/1t/yBWRzwM1PQMcgEf9NyfGht4XMW6pCCLXAIRSda+aJsVw+RBlGha542eSmvmB6T7GtdjywcQTVabJLIxjCCuWj5rBwdBxEltZh8bHJEw4oXpeAn/NqjrJpbrI5CKbxm7e0ujTKPTFcoiTTAAAAAA=='); diff --git a/docker/streamline-src/app/Models/Equity.php b/docker/streamline-src/app/Models/Equity.php deleted file mode 100755 index 3da3b35d..00000000 --- a/docker/streamline-src/app/Models/Equity.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAwAEAAMdvnfku5mJWe+CSHno57GiRCI5BziEA706NahBQ8uiyDsWTuWgwF98Eb3EerTgDTE0sLhHXB3i10MvfJx1utezuPYSSgdYOmrZEl2oWWPD3Qh88B4uaDudkzsnkiXSwWjpZWhHoeVW+o06z1s3ZuzsC52nxyxByNokP26IcdTGWX6J2O2UVxuKEfpaAQiRxkAdVXsA/YzdlVVfqdUsznfxvCo24+RA/WhTUeVMw09oy8LAEs02nZAu9qhTG06DNs6udmjPbVVvnMsUhWj0/1GZZHujBsfz7indSSzt7loPo6jonYP2AnqZvrdkDknpGGY/M4pitu8z+aFXPZV31ZxtXYldw7BKSt+6arZVj/MBbYDPyVUaFAAuhGq1UMXcdQFPAHPdlIdsZZxHyw7z3i6XDAgHXfbG53bFaiHYKy3m02mL2AmwhDMdUqcjAIXr/xeMp5EpJiWPUG7oajAygAFaXGFR1SODyvL5xo9eFYZC2DhzHRITJloPNTHO298QW1GMhEWrOitq7JDlxWktINI07ke8bV8Q0I90JL758NPHYo4CuZgiQGvD0iqmE8BIawmoBqE7ZAxeuARcUbohPhXkAAAAA'); diff --git a/docker/streamline-src/app/Models/EyeClinicAdditionalTests.php b/docker/streamline-src/app/Models/EyeClinicAdditionalTests.php deleted file mode 100755 index 03c237a5..00000000 --- a/docker/streamline-src/app/Models/EyeClinicAdditionalTests.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA+AEAAL+St+7pGt1nw3HHtYZ7/i+wfzA8PZC9NivIJnJxdDPVcZGU2BMw+/TBpQeIQa9OqRMye+P3ePHS5HVz/y7h3neCPlY9tRjoNUXB33JbFtVu3H1lel657dmLYhk1RjX4kxSiOotQkSzSk8PULqqlfYMhSy7taRjJ/r79tt9otJaWenNvfE4ElVFrePACkx8bnT5EwxL2rWmaEZYWX5a9t/NoPOkbW/OIw4vh0Pl3lMQ5JrJ8KkByF/sLnc7xHRlHOG+b+lZ/3XAGFjcBQs85sPpazj5DqYF/hSu8LIk+xLn8wPAwtLQuNuWXA0mUVeZ9MSJs+mhD8g1RUY2IszvylprlzORUaKfDg0Tai8UEAMyCttMwGiReP9NFrAXkFrrtgo0/NWi+r6NOJEcKrRjh4vMCYSixDQI97wRRYzvcvXKJG+Dah7auE8P6ksJ01cf0Ar5VrJtePub55Y2/7hdleWmgOmVQLqIWW8UuelUBQKx71hiCLd8CLS41/lx9qh0iHn4cLg2Wz3zTFNFq+O4o0aoCl/8RALMJr5Q5Ju15Lr8Sn70L2JTW2JgjC0E5+BSuilWT/JDApbOhxmtdzxgpqZRok2ebOdP16MNfEfDLsBf3EICC0gvyFsmt/SHnj7KbGshmV//2mg4HzssgFS7dQ0Uvk/FdLdmQvwAAAAA='); diff --git a/docker/streamline-src/app/Models/EyeClinicBaseExamRefraction.php b/docker/streamline-src/app/Models/EyeClinicBaseExamRefraction.php deleted file mode 100755 index babbe0ff..00000000 --- a/docker/streamline-src/app/Models/EyeClinicBaseExamRefraction.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAACAIAAG7Qliyv1pNVShRPqv3JOwQLICWo5yOatS/q4QMnwjruUitklrRUsKFiindQwnYVLpbywW0b6YQ0OmfPwvQS8WKxpfGZ1gdp2Uh5VTpQJ8orIj/f+fiTJ3RIWJ5jYoynpvWTxCl7dOv2N3FkCBJr909JKE2HTxluhgVyyClSI0jVhKRVI92079qSxJP6T50rGN+SpF/dHbHED51X0DJwmm7QaIwRaFiwYJmTeO4gu/6hnGZ3YUUQS4RUNxySTBQi4aoHZjmGkcnhAt2foLC5ism0qvm4h/kGVnx/G9MjpL7rRY3j4s+fRaeRc4CQHspkmS32fWxW+CmGZspKJnM8bv8iCNjzm8FxvByhkbmnFaU6HlZxvPTHX+YF/m8EZsQ1wgPSRSZpDORal0b7M4XreUunxzzffQbWlDBtAI/B0fDyivIuYkM4BPdaDqe3TZPSLCoD+7HssAaGZViOBMcLq9TGF0+xAz9JPkRIta0XOX8EHJtvvHUmndqiCuK5HF+EuxOMfmoApiEu27BVy2e/g5Xw/a4ouenCAB7XuOWASFg66EXf9xcTEiynEGZYGJDhzGy4Tm9FtvoBqcdh7fF5nqboN2AxO6pUewOwpy0bgiJ69/IgLAkI2M3sOIdDMDhYfEIEa2Vjeh5hLIrXGDaxBXNclqbkNbBwI/z1tzS/3dmhzpwg8Aj8x64AAAAA'); diff --git a/docker/streamline-src/app/Models/EyeClinicMainExam.php b/docker/streamline-src/app/Models/EyeClinicMainExam.php deleted file mode 100755 index 462eb868..00000000 --- a/docker/streamline-src/app/Models/EyeClinicMainExam.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAEAIAAEyH4BHSt8uskuhpk6bLOL97MoeAG8TZbMv5lZpg9hCmV+rK4fD4BnYJnkUhmSlb0loXSoUf1c40VVadAaF7zJvIwZMvfPNQ/O24OsKukZqSN4p0UGVsPGxc95wiS/dopfS2KrxYkifotSgoC0lJu/oFesWSAClPdPKTN9LsnMZqyLlr0i30EfnZafGKvZEPmrMcFlKSavnMI/6tKBjFlyPn1T1lN09krKrC3gg+opyI+gDY58vSPKOPleFw1U7E6AsLcI0xkE+ProP24vVgQaeS/Y2aq2CWoVW6mCEwAIpwH+hnmAEFW/e9wQy3+POonewfiILpa8bHMsDV83Ey+Gci3nnyvqVduARwlRVt31KpiFlBxrTNbeyYGvlBqtjJA1ou5IhOe3Kro8f9gj8lnay+SyfbNCOEXnXqPUFNIabXtx4x+XG3cE2rbwrFeubybLk4L8MFHI4RT5uTDp0Vq5JrqmYW9wfjLI0rFAUZw6AjNw6INHCt7l2NNw/+bvzhfWj/ymys0vlg342pZE+EVL2GQPmU3on5POhE5dnRo4/HLIZhVilr4PtHRct2cPVTB9hbWrRrHqztywuv6Y4yKxYimb4sUDAASM5s9JH5bZqBlOPqwVAJuQHNqJyLztPD1OVjiuY6rtIE+xYgjqX7kBqG1RfmraeV8Awg0JTOhHFjP1L96xik9/bbTE+OTqFQWQAAAAA='); diff --git a/docker/streamline-src/app/Models/EyeGlasses.php b/docker/streamline-src/app/Models/EyeGlasses.php deleted file mode 100644 index 427ae639..00000000 --- a/docker/streamline-src/app/Models/EyeGlasses.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA0AMAAHEs/7zFRGLTyU26ENUeoxNtxGIfNhz5SeKqT1AcGMgvfrIym0PgKU9Mrs5k26DCVYQj9rU+SaBx0Zf4BvijbDcljXS851TxBCzMROYszYIUOgVhh/a6SplHXtBUkzzEgtLw2s7XtWAB4WlmaD/FcxRZYb+XqC+OrC2qghtEq+IwmsoZNfjqZhL6aBWk/CN4pIOe8ktGI3+uZkLh6Y7xtENMEpspFKPGrPF7TnPuZ77AtxuYD5VetSKVD4AdWZzWZF0HX4MmvKzWDCR2CAAaDEVueCNRe0XbY+/SC1EN0aVs/hmummJCpkt5VlZssNehwouXuwNhQnV++yDoPHsMyPbmMYztSaAmZjawr7FiWzmT2APZ+zJJffIA/EuBdVF+kPRo9xIyRZSgHc1DlLMoLd9HtLskQu0yeqjuRWjAQxFMlVnYAjaoEQvY2HnM61hd9mly1ECx2Rt+ZCuovfEo1F/scuZul8kjosBvYecEso3hJij9bUZNNz9M4dVVhyeN6gGw5pmosi7x/mhHwA/lFQDEz5fxLiGVUKbjBDSZqUr8WCNSpPyCZQoIdI0FSyoJQDqFkL/8vVGzlZKV4GovzmolaoIZl6Nter9Tudl6s9k/4Nbjt6Dsv/kPnOLz7tqsW3M1Lsk08SnbzhFCncYi5g2cBmSDk9AR47M0YKfUXMEWLOquiTbVuyVMZYPf4Jb1AwN4+n3BKdRAsoLu4ZyYL34caRZtW0lY5jh28WksuPnQ3kkCsjCeAGr48qaQla5cDQa7CSDLpMdrg+Aqi/vmjDi6BGBdCCj6wqZbB0Lg26/X3krEbZcdAljmYfoQlt9xMcbeIPMupHPtbJwrp2cVjnHPPVKMnBcXP+F27O2fFDFRyuqCGPh2ZQeySiSc2HHrDAcFWdeQFzMX01uncjhSyPgwSZYVegC/vuISsaL8epY6JjmPbQVr8LSs5se2LJKjHTD00AyKcYKPIPUBbIdTYELISa4cM1m1VRoRCftqzPue+bXCEvlY1rv9ULz3/bLAceQv7rO7xBgjhDrHz6k11wPxhmD6j/HbmIYC/6P2aGZHjr1pQ9K/vXZkgW8MV3Al3Nk5s4cWNF/XK+TbcVHlW8Z0YMLfyueha8mr+Cuhy3SGGz/URfjuxe0Cx8th7tj8MRFr1M6Sz1oO6YIgYOQworv/UxpNBkCAvEEi5/kdiuaaUU1j0GxIi/A0LqG44qa8M+IMZdyWeb+7C/v2o75Jbgxf+0XE4nJYtpy3IyhEEDqm7yIhH21i/3yRqF97hpAPVcUy8BnPGELe83ftlHM2ppwAAAAA'); diff --git a/docker/streamline-src/app/Models/EyeGlassesDeposits.php b/docker/streamline-src/app/Models/EyeGlassesDeposits.php deleted file mode 100755 index 7116b83e..00000000 --- a/docker/streamline-src/app/Models/EyeGlassesDeposits.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA2AEAAOhpCrchZ5dx4XJSXh8+mn2WHP7DZvBgzZvG6qT/2ctGUsMkhL5OS0szIVE1StaIVgoictBS0wDLsyU+fp24xmgCBGmaocPY6n7MjHOJL5M7PU8JWeuKGHZs0GIuiqPwgNWYtfT6AV6br4JfdBn1DIbEVJS+ybltCv2Pr/Cz+kyRHsM0PmwTeRk9R0RfXHDs9C+a4nMm2DKoj0h26hmcTt+/twXAJYlIrylajhwoOkB8FzMKGdh0EdWYiKf7swBT5IzCoyZ7Dj6CL3phHLrM1RfyejMhTmWfFLfgr/x7zTo3G67InZ+1p6XQYtod19OeT1LVe8EDLrwVlkZopGIdVaqKmEujG6za91+VdeF42aKsaL81CF0uAL0YIo05WDuA5M9RR8bw8y+EVSIz7lFLSaTPSN7/MUl0niP6aqZ7Op0ME8IH5ekbx5R2CGXuAvfgNI6aMlZNo3sKN78i5fg5WGS32Y75VgJJAc41v9MvJubaYlqMX61tX73gN9uGNAuB4JE9DnCCNOAvXYYd8y1Iwr4lgHQ/rCW/+m+PF/AcFYf75nrGhWGBtNU0ZZJuilf2jLqu8uwADAdCogKcszvjNfN3f8llfDmOWxHR8ISstS1NB9snhZiIKH4AAAAA'); diff --git a/docker/streamline-src/app/Models/FailedLoginAttempt.php b/docker/streamline-src/app/Models/FailedLoginAttempt.php deleted file mode 100755 index 10f42781..00000000 --- a/docker/streamline-src/app/Models/FailedLoginAttempt.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Models/FamilyAccount.php b/docker/streamline-src/app/Models/FamilyAccount.php deleted file mode 100755 index 52a9cccc..00000000 --- a/docker/streamline-src/app/Models/FamilyAccount.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAACAIAADx4g89i9qMIKmg14Edm1uN2GUi0XoMnn6gJrh5IIdQnuPOVye5Rq5a1UM2yEgFHwh5EuTzS+B38i6pE6MENqiCzB9qA92YjutCbb45N4SxqO+O2g8d0GRE9fmcT5N/f4hOYH10U+ADiBvJsXsKcz3SdIU8pJGhNAjMAvb6P/TCG9/HMmVg6dqtM7OBBaZ/Xqr8FfGTIdXsuDgqwThfQS5rYTe+PRJ891cHkHzwbDcmkG09dIiPrRRo+y80aNlNqhJRPV5LMKPgjfarFyWZr0C2c6xq/VGVB//xsb8mNMZ8ISUs8FP474HER33zjmRgcKh4RSJTaoIkOvEKIRfo/D1kLToVdKa/hZEkUPfSxdfL4yQKQi1dv61vcbAj/4u7kme00BSfKX3MFxJ8oQQrazrE0Kf5fN2NqtfGaxw0uv4IFc7+BxhW7mVCk9yfkFkht9/68qx7jozMssd120HU18EKJec/CUxZVDnk7Kg8tARkmFk3N+Im0dFcfWDSE+YArZFsNuNH7OLq/DYdi5m50cdtnsEjdaQb4C6wGIAb/lAeo9CEL+dYatdGFlgaRPzKVTndnWj2Sx3lMSvtPnlWUANiUSHdBeDL0p92+GVbrg1iVF7iH2MgKR5sYCSPsMoE/Ne3xVI23qbZO57oCOemaY0QRBnv5dGLNR+klsEdNyPjnVKh69XmoG1QAAAAA'); diff --git a/docker/streamline-src/app/Models/FamilyAccountConsumption.php b/docker/streamline-src/app/Models/FamilyAccountConsumption.php deleted file mode 100755 index c9bd6614..00000000 --- a/docker/streamline-src/app/Models/FamilyAccountConsumption.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAGAIAALyDs9OvxiO3laSjhxvbgfv9g0i7OP9Ywf89xSGg0atu2JoipqZgazuie8vn0R67RNsS8aeu8HCMGsmDVwVVsOV4AEB888wV6UFrGzTOYL9RI6ZCXk0Lb7X11qNx3quhCpAJFj97nrsdjtsIdJ7NscloF+qvGllm9rj5J6kEEwj6uIfZbLpwA0pFxIFrOVnBqNLoJQ+yD/hMikz27nO957QVpR0P0SA0Mb66jE8T1T4b9dgvvhOA1fd/q39Gi+xDfI4g5F7y22u4GhrE5x7CLjmCiZrKwLcDJAPir0oOatmFjXz/WOfSs589w/qidwtyPHMgnEehxAJwwyn0qSbautTgeKSp2K6pmgKDOjrDC2113qFyekHFmBM9P+4nP77OZdZ3RLtpGp5B8rqNiErvdoGVuvkRRtIawpNsz9SJzQB4suEemKdaIeL5hSvsMg1skMdZQ6HXakzTCA/JGyRlYiNwIHEAirOvDJJDwSxYN/L1kub8SsGKUH7EdSZbmqYLv4crDwLaB9gNl1FiWWgjiEv41agsGAoF5/vLGznpGcBVlXgakthdgGCLs62icOlTD1+AV4alG44stcu8y3qxiXr5j4QAh10kzALnR5aogVEwKG7e42O8EP7sXrXPe05FeY9ts+brIvEE1poRN76HozVSvbVwep7/so8Qf3J5xT97iYXC4fM6R3n+K25rN6zeT884UiiPVSOCAAAAAA=='); diff --git a/docker/streamline-src/app/Models/FamilyAccountDeposit.php b/docker/streamline-src/app/Models/FamilyAccountDeposit.php deleted file mode 100755 index 8a542a40..00000000 --- a/docker/streamline-src/app/Models/FamilyAccountDeposit.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAEAIAABD21BEhYyLuQKOInE+vm/uBGk2gZLCLFzKji3FmT4rfy531oGuUDxi8DIx0xA9q/v4nU+XjWN0ZONg9f/e7sq2vh9IIWfqafIrSSzg+oTa4OQHipd1zIWhj9cCa7nRlS2YTnhdN2HTpvLJ7HTr9ryUYcFSZhwLpE0kI8cwyaZrvuv7HSn7Mdc2KTGd8it/r+822jsgg5dDqARRROMEuAgBdpvGkCyAMknRBQuQm3kHC7aA4hAxqIdyyBAeJFyW3I6rnVAryBmEYYyWgPkYTnJjdj3phuGTyX3WQ/+CE9smXtmePsJq3e/eylxFE1E5LIXeWSf7NCt1aYHER9Y/vS562AGTKWNPRwmlWOccNB0OVaBXq7lxLH5bO3vnQtrIYtsW2YYUI2Fa9WdKhA6c6UYSldAhFBoP1l3DhQAyoCh5XXeTy9+2gwUKAqUbRFxQVAU/DU+tymlsiScaVCG0Y7RqDYY54sf/iZybXl4JFBaXgqjSneYpTjjxl28oEkSYg3UuYrXOVlVc4ADNYkX5RsIpwX0TIbGAP8gbaczktYQo4rR5YxRnx1W5e2Rb16V88e4a/Q98RY5e/AZTA5pLTQWNmcLKVuxPIcLtLKFlI1ROuK6cZoxX7X3egj4DhlrMwU4SqFOYQbbNf9uE3odsOfxodU6EAO2zYZ7FEPEbdBMN1/ZJAKfvKfJMygyd1/WhltwAAAAA='); diff --git a/docker/streamline-src/app/Models/FamilyAccountDepositCancellation.php b/docker/streamline-src/app/Models/FamilyAccountDepositCancellation.php deleted file mode 100755 index 9d529a03..00000000 --- a/docker/streamline-src/app/Models/FamilyAccountDepositCancellation.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAIAIAAM71JB4UZNx+dU6/F/qSrKrVWNO7UpNssL4/vTkRVzSY+RF7Tsb5F2yte/cCxgch5pF2eOazYkEb3hSCkG/Fv4FV6DwaQFx25rrc06ssz8resbu3boHYBBHt5HUJ3QaCS9HuJeg5N8VxaWjnBlkEa8Gu/NPu/vakU/a1++sqP654kKAI3xg3LVF5TGEjDDwXWP+6IaU5Cg7QYriXD4jVwIJ9Luf9S4xCr0VQd1vZYg200gtcEJOFAmB2KcWA+lcq5rcPJVlzV4/NXwYoCBXIEKCmXBNUlkMBNQAmBOBoPILEULdhzwnCXNPCQPaI9xX+ros9JAR+MdrqGu9NqFZZfuKoNqsJMN2IjkC8aXXGee/11MWAXhhnsSUA/TqGgiVJdM0U4tLjuTcKFS1/HkLZqsa5lZFU/1IBIKvCiMrmluFrlzk75nq3YgY3oZfOLtZkH8Jk0LtGbhtBEpXCtUq8aNLwjhXRaPCRJZoxb4WgM8AEl3aRfslPSKJbosJFVdJPSUDlu/9FgdDOKVOlC/tadaLH3vxUk4NbgTqcrjnkGWGED4p/86P1VPfT/CeqK+6uH81NrLgOIM9BNjf7+kuw2zIKZqjLRXLN3QxeOlHwNeCeyHfynBzqJNDyvn+fD1aviMlERlXlkQUpRBWZrHUq7EgKRxj2Oh24XZbEt7hUAUSedoqbRA+9fLdVyUsQ60Ojv7aNUfWFjijwuEN7tHZuploAAAAA'); diff --git a/docker/streamline-src/app/Models/FamilyAccountsRefund.php b/docker/streamline-src/app/Models/FamilyAccountsRefund.php deleted file mode 100755 index 992ab7cf..00000000 --- a/docker/streamline-src/app/Models/FamilyAccountsRefund.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAkAEAAPxB6c0orSLV23JJ4qB7I669DeWaBTJHq47bADeLvq70OsKpkaVw2ThjS5MTNKqwfvSK02WWYB4JoXh/IGkwQpizz0IOKGfaHniZxjGGfhSnqa7028EpFi2eu42w8cVlwIX2ij26eOjzjaLCjb3PYnZ9E5+U6/R1/Tp6jFXIIgqOKVHW/Kk+emReC8btrpZxVWwLhyoKh4iL+Qva+aIgyPACWX7akxuN7K5HKg8sMaRj93T6rAAo1VdHqZrwhFOr7oT3tM0ly8GPTpQMZDdU/AwzXBq/Mj8k+JGavUlpXm9fZIzYyi/4q6pj/IrlDapFEBSfCbmGKju/JmTH6exw6rUzwas2uP38qgl7LIlj0YmMLBwAMi8OVlR+X+wEOWqjlkoNKcuWV3D42aiwT8Malywi4oGZ9fgAnyakD1E/ZvDO4m3WbLTNz/pPnAtJ3ZyR/cisoMzAjA7+7dfmgizypoDD5gUaxbFJ9c0PCgxKmJL3+vZUsks3xtbyMDgNPze+Dm2ByBhXx7i0+lciYOOi5X8AAAAA'); diff --git a/docker/streamline-src/app/Models/FamilyPlanningMethod.php b/docker/streamline-src/app/Models/FamilyPlanningMethod.php deleted file mode 100755 index 65752c15..00000000 --- a/docker/streamline-src/app/Models/FamilyPlanningMethod.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAWAIAABqH2RzO786G2Iqh1mlLATr/cxnZrLs6ijjIhGTgBuYFCPiEnxXqVLqL/2tOYhyhM5TqQpvHbIw7n4haO33sx8KlbYatboS5H7gAjTLFAj3qH2wYFqfS+7XSNhJ+vQjOxvrzwLknlXH9FqS6Jol6sAdFJJpQF0MKkOatYEMJYfehDhG/ftsA0MJnC8olV7Y/ivJlnC3wU0ZAOob1K2OqVK2g1zKkOd0toUh/4WYjt0npZpCYzi3jS+OESDQBdYsyIXGCrD3AXXiXofh1VheuAONqkvpBKzX0KCrY+kOObm2S4f0tQswF4SRyg4T4sSYfkSbN7J2IVRcyxsmrKQ8Tx1Ad4mHF69e6ri4Mqc2UO7CsG2d2JLaenHJdwrhuixovZXWOOWzzMUzySQSyD57mNgVrjFZjF9Us31DCEO33odNmP7tA+CFlK7b0tbz6feUjshpllTe5WOhyKio344nCaSRDlRO18eJkuoZ0FIwAU/IjFdQqjXodTysrGJSJ5SOGA65bO07ohwYRpEAeTlii5DPYCQu8RxuRWY43LfgiWxwDsN4Pnt01J8jRvo1gU7FFTfDUR/94TmgA0HGlT+XsgkBcp/62WO7QvYGCMIiv4G3xmFyYOrQVE1JF1ZiFcnQv+3chrnc1PvN2+F1taqamEFDmEni04vwLh177qa48RIs9eI8jgCobmCSq+QKAIojrwti5RGR5wdRk2S9B7+nsSvOuXJXMEWB0WYFtSpeuBGjDMt1uakl08IJ9ZofUMX6GApRlNeSnxSoRe3OsRss1Q04Lv5J16dwzNgAAAAA='); diff --git a/docker/streamline-src/app/Models/FamilyRelationship.php b/docker/streamline-src/app/Models/FamilyRelationship.php deleted file mode 100755 index b26740b4..00000000 --- a/docker/streamline-src/app/Models/FamilyRelationship.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAMAIAAG+JAwBRs4cxGo71oQaohZwl/vbaGZxZ6dfEHN5cMwpAcKcneJwscoPXwgiBS3zInM5hbdDXuuQ6x3IfHCyjuKlSkEyKa5Hro6Jfv3xi+hnwcGqEO64iPDsCls41yImQ03IY/mJg8rc6rjNki/U6xOzmqZEQLtYL1xU6iNVAEY1LaSSaY/Pi4SyI3JSL7pGDt8pTRZuO/UgdSoVTYDe7079lNDzz0zxz1vZcn5smJUEzOvBmNn1LW8DL+qZS+uIDt1OE/T5iOymLVwM4Rlwe1MKNArl6r/womBraik2TvwpBkAIX0Sdvp9jRaklhzw3wFyBI6/nq83FgU1uf7qrzlKPugcwthtw0IIKyszo8nkdfK1W4KSQ7sxUaYwgVjpXHSkmkb3QJi54OQgDS1WrRa7kZZDJs7Vbj07fNVdCDcFGSLunCM/HnrBQdfzDEGUsMEqHWOSDNjJ9ccPZThSGbLAjvc3gPdw9zsYDUNIw9unJTDR4TFDc0pEeY22t7noaCd7vy1/SDus5Jp8BeKoO06D8AfxVwGqSOM+OO8xNnl70bgw627XpkisOGt2xqzed0Co62B5qi3WB7TR6dBGswArUVkt5T5OEQ6SMJ1sBUubJym2/JfN9RfA3Q+QGwLyJWgdOCMpBjISdMS7ZHmMoQQ/GPOZRVIrLlUj446ofTjhbwA/uyWp2XHDQJ6D9tsedmJqHuo4lSfgyFdjalWuE1sYhlRAXsGAwnr+sdhtAye5n9AAAAAA=='); diff --git a/docker/streamline-src/app/Models/FinancePointTag.php b/docker/streamline-src/app/Models/FinancePointTag.php deleted file mode 100755 index 8f50c19b..00000000 --- a/docker/streamline-src/app/Models/FinancePointTag.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAYAIAAA4azcAL9wRtW+GY5b5+aHSkapvIpPlrrHhsVmCpL2ROop8RNbLx4qMGzGLvvzkHvPyu3t8glT+445p1qeLxn9pqflxkxNGDGO+Th1fnOzoGQsgjVqb1wwcXPluHfSeirJIZ5HFN9qJV0nO+PDIu75ib5PglSwgSWFccZ6Cg2CvLYATynrqKxhxLu947cv641OLZ7JtfQX8npit1T1J+F3W4Pqwt/+B52DS5+T++pj+hMXXmpyQQmO9BkI5TOrHIojLRTYdyiX+GUqb1DBzfU8KHBo9gR1TRawc1oBSFHMFSVZ4hjq/82XtBOvmtX8wn68qmGYPuwp9qEQbugicoLdwVCKYOp+iITdnPqPCUt+ZGJO4hzYwHmHvHLo2PKstzX7R/fHM/n9IDRDqhCLGdoWPSXZSIKhgYatk5Ozi6H3c8yVP7YxTowkkicBgfS2Ot3yZRtiyoY3yMrpXLGRVmh4iCDTV5Nzt4ZZKQQsroA5rYv1LIdxzF90qbdWPPT9wubsx3sWGFHhWLpT926NkO92JSESvLkBVe3Qz7CUxeTdoT2Ymd1oM6/j5pZtK7IzUvG+xnhb6m+rQPgtQugjfpnsoUtRH0BngzIcRv3f9SbNyvjXcEtX5Ty6USV3tQciel0xu7Ln1NhxcB51qqUP6/ec4jiw6EVo+bES3qD1GDUiJju958OxwrzzVY8KHOwtYZR6xInIzM7DxyCR0u450jFbOj5W3TD9HOEVrABcj0hZFCzizVXc4zp7nPBJTBs+T1Y30/LKMycg1nlgUkzXZoiHE+PMUMJUWo8qaWWKHEykGEAAAAAA=='); diff --git a/docker/streamline-src/app/Models/FixedAsset.php b/docker/streamline-src/app/Models/FixedAsset.php deleted file mode 100755 index 294c315f..00000000 --- a/docker/streamline-src/app/Models/FixedAsset.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAACAIAAM8puHk9D5QXMilBNJGQdXRpPjUe3p49epAXLxGeHzThE3hJGi9sFSUOMRUsarGeo82YyVzQtByAxJS6SSYezv0zB/L51xvwJJ+Sy6WImfmA26p9ofKZhvNElLCbhT8J4sHurppcE40DPomar9GenBamsLs9HfqLS4CcyMhz/d81OunB5+kChAWN9NioX4Sh1NtuUwlxUNRKOditmJ2jS4KgDM0w3lUXJUCfA4Cf8kIjIk2SoBwypVwhKZb+grqkfa25XQfywi5xaEa7audV3qVTJnlP86209oyXu4MhUiPKPawhzfPBD7KmP2CzzPeQqwhFoUiPa6fe+eN5gS25m9UQTPPCdIkZG42/nDDL3v2TBcpoNETGk29d2DJMFh5DOOkqx0a/iJRPMQa6/BMRGLXvZgwSNuEDJsH5RPMqmbx0gqvWIiH1VNz49irs31pqD5IndWhKKiXPqm3euULqXh3QVD8UzubFW54HuSftRqCvgqBML7DTTczXwzS/yBZ7Jd4Dpe6EtPsFkKH/0IKD7vT6oj4EP8uJSJU/hNaRxjDG24jUg8g8EN9InSK1cH8TpejEVhHihXfUOd6wcBbbj7baj7z3ZVZ7Z5fjWMJB0+GmzUHQ8SOR4TJNeEwl9NBEGl+F1R+iDdnPBWriJho1lm8tR3ZDeYV5gPttICYnCauLu/yIfozZSrEAAAAA'); diff --git a/docker/streamline-src/app/Models/FrequentlyAskedQuestion.php b/docker/streamline-src/app/Models/FrequentlyAskedQuestion.php deleted file mode 100755 index ab4e3e7b..00000000 --- a/docker/streamline-src/app/Models/FrequentlyAskedQuestion.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA2AEAAK+UleImdR1s9HU4SrKaZylhJInE7hjaki48MH4+gzN7nQKU2fmmrQivrmsMvs3xTUItngVshoLkCXsr8y+hoe7ydgfxYIUH7Nr1aelvMqw0/6iTcD2cwcUDmPHU2GvWd4pLY0v0W5EgulBje3gV4eqBkebynzdyv0kpL5LyrIqI/cb4dyqtWKqHLE+w3MrT6WR+MhY4QLRTNE/D21F2mF40UoW6M5LMX7zExu2ZHEUuGPWhHmOWEloaMu9mHU+1tly92I0GQeQaJrWKdm5Dzyvt6novXs8MiYP2Y+p4x/EVpjdhipaiDFuotQle5jt3Uqy7UyXCQXJKOd1mcnEOTQZZ4tkE6vH2Pf01MYBozLXPmsSQpvKqruL9glykwhhhhG9mp6kH6UMt2MvRApCoighAwlXWmKN8a0n5jAy5UArW+gIMWhMpOZh5y/QAbzNzT1oA7XPiidpzZzayIr6n4/EUbLg+0/PwaTt/2MRP8pxwL/UKsR3wv3DFhoHv8o6vV2+3RHc9z1Q2BgE8+1SRWAWL5zW9hKUUSo3gyuV1xghVnORkjJtt0GC+KkoXL8ftAUbFYNd9MtduNUAl28HR1WeWF48xYtlBdGCIKKttikoYSnM6mgar9akAAAAA'); diff --git a/docker/streamline-src/app/Models/GenderBasedViolence.php b/docker/streamline-src/app/Models/GenderBasedViolence.php deleted file mode 100644 index a9d52a4d..00000000 --- a/docker/streamline-src/app/Models/GenderBasedViolence.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAEAQAAP8hZJK9y0rBH+47krtvl9BV+1FZTOc2pLgV3EulnUxBF7moD2SySEpmB3vWAnwVLytWAwt8Lk95VyLOy3K1Z2fW7dLeyn21aZYXv1rpNMrPd6ZfSZ2IDlw7sXX5SnVx6rD/OvgT8Na+sH1n43utGHd9vsufTPKIpH1o5s6gziHntL2M3S+12oNBYAfyVcH2SimKv7zvP+6Xfmbsz3+7dF7E6TqHAK+MpIZm2hPjm5YYwHAfihZaa4bN5Be3LJilvz0ZRAkCceHvsCtVaJsVibVqCPSXjowCsGE+a01FalsS4HxoHT6wppqUg7RUeBwAgxraDyhf+uBZzEnkhWeVJtqJUDMKYkLtfhdYz9Vkfy+WgcZQ15uqds8MmGbPGUZXTNJe/mb4Tv3F+2GalXA6SGGftV+ux8hHXzmop/mGd94e1z+qXcxscTS3NcOycS/ozBG9fuwczsrh0rD58a66DLIoE7ZSdUBueDTOku/1AbmGIHIXMrlmhg0YMcGWwb6iG6/r8fQ8E3qjQj/0kgZU7M2cuIigG5M+IMVLyoHMYcIwfJofqtMnK+FHPedrHGajpEE/RiHdyzIHk8JW/7xjhvpYb7aShPGbINfVoQ+MedszlJp7/M5lwTNEQxUhlvm70BV2tbg6WAGenWgdLiEu9GEbshtW1vZ+rfD4gyhe2EnCunX9Gjovbg52LvhKJUSiLCrh/g8YxJNRkDVGmQVPoNG7Y5nsL3jywog9rRg1EJnq7KJ9DXlscqWbA9ic+8lZ/g61gF7OMWkfom6OhV6sqnDV7SvHCHCR2vFSH0474SMttTxCD+Y4MUiw5SAjXzxQXodTPQweTvdDGCM6N0HA+9AXbclBew8lwPqNHj7ml1ZcR1XXB4WwHfl8k8Aos+QTKTSZOGTcthpbMnVZdk5xngA0rRXkUkI+pcGvz1bdCYeHZT3mr1MBjvqqI6NjpjE3IbLLfcK12Q/7OH97MbOQ23pogkdtZtJrcMPJo6XsUetejf3PcA8HxcCmUW9dS3PvaRfmehIB6QGE4BDCM2j57YcYymK1/KgF8fRDfhm+lGsNnO2eWciFWZ4fyCZqgoFX3D+OebrWvtCDjDHBduV5uLIN65/QJfsHmppSa/gHBVs1lXzfJ3CAgrXR+qEdS0neND82X9d+3KPnlzNtE85T+T3iDAaz5O5D61SelSQtRSHd+8dyu0lfGvlRDjEJUQtB01QfVHvfwt8qAkfD88aXTzsiAZS3UVG0V5fpg5n2fZiHSSFlt9zGCmHCgPeBv92KvoSnxdCrf8mz89+tl2t2b0tqA22yxSoS58abfri83MrMTs6QD1NMHAEaE9KI7NBkG7NoogKZLqGd4nospJ0SAMQiRfC4VKFggf6gh7+JjpasAAAAAA=='); diff --git a/docker/streamline-src/app/Models/GeneralItem.php b/docker/streamline-src/app/Models/GeneralItem.php deleted file mode 100755 index c6dc5ca7..00000000 --- a/docker/streamline-src/app/Models/GeneralItem.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAAAQAAHS5FpF5fMfhPuArYxeTu/aMwPgvEdOJRmvPCoxFHeY7sG+Sf6gxwz/HnelXb/FZ5FnDrb8jLBF3OfqXapLr8ey3/oE9bTnDSRxFgVQ4paylt1PY54yvWM5gySCD+HIn6ylvfNkZnhyDeh5ifP+o1ZKP2Fmw4vTQRaeOxO9FzM+FAsaOKepR55xaKWYNYI04RlbOzj+hXaR/M8AJtCIXv/rpyoTgn6XGEPNxyJrU8LHPDqutYuNOrtPzO68sht742YcnVO+ghKvQW9n1k8Z+HRSF/rky5+l0v+kgnjsNpDucuSvMxW3biTJ0qyzouV+lVsUl0W5/rpyXkKDuGrAoowFAfghJ6qD0Fm3B4omoVg0lUWkGPVKWNkROxgqzgfAkASmzGatcIv0jl+wUTI/yDwjayA788FpFbRCRgAjDXYcf/IChiKUez9WNOcMMiJfrpGx09Onju0Wzgq1QYi7GMYt8Uwnr5BOFbxQuS34LWVE/9Ux3D0NhfbAPEnXULViJCBNhLCPZ7DXu1jxNsBybfADS7OgLbwm0ks9urb4ERxhyjOWxQcDHrb3W0Rb12nIxiCTFbgc9Ng+xbTFERaTC5tmwYmYOpxFEzEuX+TrQVizSsU0gm29r5uATLgC76TCVFDFkKTfU+BGp0ME89JA9Y9NEwU/KJ3bB9c17ZETaMDbr0oe0bkAAQjNpAzcPCjkEPg3AePUvjEA0Vr2d3QhZZBisVqWDYZEA/sA9m2AYXFuiYN1UNkm5QVB5gzQPoLp2SKdmbLG3o/PVLrqKprCyheDujQcZ3ZOUgXWr7H5EUs9PEoWOzxUaKqqltbOdxVlj1F+R1pgZPicx+rIQYZynzfucvM2V9wxcuaSP0Hhn8LiQbrvY7iIQFAR7EPZuACFioFDkgi+rtzry5+j4duCK/vd6WAF+PT4rzPd7egHPHh0wUinmJp6rfRpvPjfgeTNJ333VHxqMLwfcCHjO6BkS73iTI+DgXDWchsSTZdOoj8SYJ31ylN/FyqNZM1CKDbjlfpZzUkrIK3LnCabycjd4GCx3XqvEwtAl5b4ZVAXlBBoHd1I+VESRe5tRcdykVQOtC9AzlWs0xpxr3fm0jdTz65j+g0HcNp7q2Sz6Cm4gOqf982sgqlXmHKEA1ctlJlLtSfHFj72qL1pAqjQlhpEc/gTRSr39aIVsI9iQSjBOsNGRxGhb3/FH3wLWgVv1CC+SD0ne0fUwg5cu5khkXxqo52ieyoqFlKmITwWrp1yVLWjpQpgZxA6wC0SdguXQB/F2pBai2hUJopUmGDrM3kWsUsfc1R1hztQtYi9VLCt5xKZ8g1CkSxhBcE6AC78qGlKlVtp5h6mNs6NFJxUQlYWfL3gAAAAA'); diff --git a/docker/streamline-src/app/Models/GeneralItemStoreStockReconciliation.php b/docker/streamline-src/app/Models/GeneralItemStoreStockReconciliation.php deleted file mode 100755 index afdb27d9..00000000 --- a/docker/streamline-src/app/Models/GeneralItemStoreStockReconciliation.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAUAIAAIPOZO8PE0Cm+olk4XtAITrg/W728ycnOchcRcdVYDv0lx+179kemD9Zqjfd5fPHzj/SDW+3T9RfIj1sQSfZiMSDFEC+cjWNA25hCyXiYJ8ya7uvYEYE2gaJwgMPoR1BqNyN7akFlATF8zS3HUbDwN6iqEe4axZ8ZCZIr2HnrB/4l4fjD0EveSjDzkl4Zl4576misuBIcEiU8x0shsIVN9B5rI0QvOjR2bp8Av3mYfgdN1M0i9goVtqfJ0gsd/kUeuCVeg43FQAYT/tgQYyOWnHQO480xlEBU51s+TxE0XU4O9P+dlneJvBF9JNUHxNsfs+D26i3Mt/CYolFKXFNAz5KuoXLg/Iiu5XxS8CNLf5tw32PON2SrInT/pT/Qz7ACkfybyL/KnuktD7mPFZ/Q57bN+tbHx/a/LCZ3HPeCANl85UTE8cajdt7ZDgWnBA2I68Js2p6npiwFUiLa343cgf/8q+dPfmginyScVCPFw4QnQxLhlUDl2mOOkCMqnFwIH36GhYf50o2qrERFkZQsawhZVfjF1/vwSUYKAiXw+tz7hsMnUH3gPSa5z/ad/Qip6sqgUBfFEIIi7Jmpvw/n99I1dBxc3DdvfJZxLcA0+borQCEZyct/KiIhvJ+UYkHvoofIKYd62YWH6Rf7kS6YysxpFXUHVBrlXgEagymR2SxIgxAjpbjDJb11c/AsfM5kxu0ydKhWOqlJ/X1EmQVZAAd5HTEyOkVhWb6rOcRgOxPeyjayMVSa0t2/30pyByZEOv6oBlZ6oa7Dl2QUczJwHcAAAAA'); diff --git a/docker/streamline-src/app/Models/GeneralSettings.php b/docker/streamline-src/app/Models/GeneralSettings.php deleted file mode 100755 index c7110ddf..00000000 --- a/docker/streamline-src/app/Models/GeneralSettings.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAuAEAAN6dN8NA4dp7lIIayEH+gyQCPmrjVCfCJQxgJNlAxBdf+xMcIKASbNZTn2QzVjEZpSu7EMbEvJMKfaE6fSxfquEOOC+H0DpHUjhrFMCwUr5p3D0ZDkxT+YyljattaljKsXHyB45w4OmVKlOX2quAdpt6q4j1KLbXtFmiSxp49DzhD/0QIwXiUCYODOWOu8QDnkWrk+b42BkyWYMC+ihmE8Wzg/cTk6SvoKKV2tH6/gKAR8+GmVPQ82H2luiVGkheXx1xPAfULQX09Sl/d+UOmBA7Ctv/2WkCaeZmUCjSFkzNoEOKKjdJwKN+HccaUt45OeyYuV/c36wRViMTJ52wBJSvLSjXsJi2rJ6QljHgv1/wa9x+1vt7c4ASqdQETXv4suyJ0pVwv+HuPYHAJJ9Q/7dPSpb3Ov5hLtSLGvYAFZIDJJePYPhyexssHp2dArjpSYaYUizpGDxuI8bFcZDI870vTa55X0R+3Bz9MTOIuzg2M0uB/Cq3HMxDUVHoyglsSe54FNPiNTldcpTj9EUnDbAwpEmpApheSdbZw5e4TnqhSqI2dYnAXj87WKqtJlVZhEoxCQERc2K1AAAAAA=='); diff --git a/docker/streamline-src/app/Models/HeadOfFamily.php b/docker/streamline-src/app/Models/HeadOfFamily.php deleted file mode 100755 index ec23b83b..00000000 --- a/docker/streamline-src/app/Models/HeadOfFamily.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAYAIAAGNiieXsznMnh2+e9GTSjdW8vxuP0Od6xyME0M7tuG8yDwTx5v3CyolOTXGMhe+gDKYmHIpolIWpSpslcbaoJfVfd6s/Rnl0sy66X0gCdLJj+XoYv4GWcsXTP1dmnNwE8e4cAyJnfSs/PrMCJ0fh8X1yjKbzFh2V4NbX+L6n0AgG7AXMKNnreOE3t0LS/KITtl3ZDyDbxwV6WFgyB7cKHCjP0qhTppuKicG0unTFttICNQDpRZkvVpuJmMP3bxdOYW01QxnY0WTktF4xukC0HoLuq1Qy4ES1FLkuOaRboJh3vsERfGplEC315R4YawRUfI+//MJ76X+AV0sUSklPKzVD3ywIUfe/A7FIInUSiVmrCTKHpOlOorHj0D2p9vRnfJCATJmFbH5MjJOG4Tm9HIcfFxNJRAfVx2TqQakbimgmV2XmGLRIuzf2zl+cjoxKhNqOlirZtYa+AHJyq+e6kY6aU5gZ2OsnlURDYuVVY5TKxXDg99N34v5wT33LngCGtC/nZY7sv0oUuME+m+w8kROetC3QVkFofAnF26oK9TqCjzn1mu1c8YaUwjQ97wHjxJjAWquU7xKycCmuwxdYeHYAU77eMS6zz8CcWFroep9TVjfN/d9gvi7O7PMCoFli1tFMNJsTq+lE5VjxcmSXaQUuH/mUeH2DHTjsOLS/C2sXX8wMO6Rikd5ckKt1Jx2uMqfq0aWJ9Gjbj03hnn7ny0sDZAq7VgDcYhKszMydBnj0IM9nZMjDbx+kmHp8gE+xhcIEm8V5y94csIH6ZECVmJRVPcug780o8IMmS+HhaqHNAAAAAA=='); diff --git a/docker/streamline-src/app/Models/HeartRegularity.php b/docker/streamline-src/app/Models/HeartRegularity.php deleted file mode 100755 index c656ef1a..00000000 --- a/docker/streamline-src/app/Models/HeartRegularity.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAACAIAAJ85K5ZBpZlsAAvTB1JJH+D3ODi81BjP7d4mnnTmJYlas60TZkjIwqfiAuKZTvV8Ih26OGqPOQM5GmPMlN6sUn/jdCh6MUU28Ysf62VsdpYTnhOyWLTu2imJR0OtN8fZUKo0BE1icmSeeKZlME3xRH2yWTnmnnBsYk3VRwBk5w5hFLLTSVOOQNkSHsnyLog1L+cYe3gOYkkxm26W0piXyGoSmax4cyFXSs7z3dP3YYShKWrXaXV8roC4IsKWSSGqdNAL+feCief2ltoElm3GOgNzZPtUTyYN1yvowAWaIc3+oJ95vFEWidtaGiq+KrskE1X+uNYabQAw/P9+raEun9WSpzXaV54DtfVakDslWY0zT2UF3MtbbD9wdzCWDs7GzAV6yU1PysGqE3szv6+Qi4SqXlCCQ3oO4Bh3o40XpZvS2BagoKMr0qVReGA2aqgLYNkSTaeR0N0nCoHlIYN79U8IWBTQkw4pmZ40Rq4hKWPG/2XVFLkUakzbNCSEGbhaNuOysD7qsAZKA70wi6sA/T5hAGylmXxH5phF8CW2HDM/gdswBf99R2pyfLsWBtxOWdqYlKkqODi+JT5C9f4ooLUWW8cNxareqegsLp6CA/R5k93s+cNAUZ2c+j0uEKXtXF1w+2mUsKrUxKOxjP9zu9dY0NtP2Bm9oYAKUZastkDni9VDDW7JeWQAAAAA'); diff --git a/docker/streamline-src/app/Models/HivCounsellingAndTesting.php b/docker/streamline-src/app/Models/HivCounsellingAndTesting.php deleted file mode 100755 index ff82893b..00000000 --- a/docker/streamline-src/app/Models/HivCounsellingAndTesting.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAGAIAAOS8gYNfCgUGtPrTOUaxOyh7t9sURCpbzemc1fLiIo5nWvJUfdKIonQ4nHSxBIv/JQuPCCDX0kf+qqytET5wyJGeeANWvfDb2y8qK7pe44DGTqY+afbViuE5kxmlEbaq0AdLULByNiU5/DjIRpvalQBPZxBkfpeT5/uGlIPVXZ+XFNjcNAdnnHp7nFNnDVhXTMv7xsuacWIj6OcjUMfs19rl1A5D2ND9+GIX++/6USwuYJA0LEUASOJP1b59MGport+xwPyxeLBJaT3C9fL7iEuGAADDCpmaoVNBHNfM+7gqy0Eg8lzIlockkexajAgw5zyBcm9pFFkfoHmhOBl0ops7xqbjH5OC8eExgX+dfCmXRO95GNqu4NSDzl5SM0eoHqoNIAE/l3lLTRXbWFJ7yA/lnULKw+YPmX7al9qiOyAiq8kHYO5u1eU9sdXnQDOIhcZpXtEgnEarJlq33D6Q16DdjmQiIoNgYDQMJpZ2yt3FpOocpmaCY8ZbrTXnktbC7dt95AQGFR/VGH++OIRLkr7ay504/vELiqULSXsw9TAZ9FG7zdfrXP7pP5xhx5bkb6UIU3sh4kLxPGMvRCUBKnwJfxU+qSdXheJaThmZ6jWYClxXr9A5x1dwHK3GLz195YKJFxOCqCiebKfvDN0DfvdYIjwDwybUktjdK3QDQnNVlDzfx0trzNkgrO5NaBa6GRiivPAZShPhAAAAAA=='); diff --git a/docker/streamline-src/app/Models/HivGenderBaseViolence.php b/docker/streamline-src/app/Models/HivGenderBaseViolence.php deleted file mode 100644 index b580aea9..00000000 --- a/docker/streamline-src/app/Models/HivGenderBaseViolence.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Models/HivPatient.php b/docker/streamline-src/app/Models/HivPatient.php deleted file mode 100755 index 43d78627..00000000 --- a/docker/streamline-src/app/Models/HivPatient.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAiAEAAIv4B0nGEmP8+P6lt3uS1khGXRYszPcXl3h0NGZuiWYcFEQ6FkxHhhfEC82KEneMcCCLwuxHRvYH1yy6rQE1JLR23zaByYAOr53zcpmIXVHVAhE1/SFl8ZG3B2zzLUJsOpZp7wWE5NEv7NBFYuDWl5te+2OwMXRtDhn5asHmuYIaFYJrhroSzKbb2a3ZytNpIZb+xBySPLhrdAz04d1s3wkegLDpz6f8dv8G8vhoeUHpy40YyQRCG2C95IgsLbyIbIAYFdgDi7vkIXdg+IuHEDgJXNuGEOdQArH6MEU7H2q0V5nfRJ91RbydqQwMspqKQLPkzaDr771LuWSobWGHQc9ZUXjx3maIic9V+3UQm4KaAWeCvYcPxg+vb8yqhuJ57HjazDrhISySdc2hd+X3MOnPgyDraQEcAOyzNf6AGk3hj05tmCT/rSu6EZVJbGGIbT5e65IQRSqdBOXnAFzkDcsOHnEFK8avDav/AhIPg95mwZAhQt50AjJyQugBWoV7ShARuCzz2HRQAAAAAA=='); diff --git a/docker/streamline-src/app/Models/HmisCategory.php b/docker/streamline-src/app/Models/HmisCategory.php deleted file mode 100755 index c0363fac..00000000 --- a/docker/streamline-src/app/Models/HmisCategory.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAUAIAAFQ7IhCfw+p9GUwfqCv+6Fs3QGU+3WApOtqq1dEmE1YTYFRsE4yrwGDb1RtwrBoCMLp7ELHzmMZp1TzuMwrBul3jOOAdbyzPvXAjsSGz8vuZOlqWlxo136HEile0aeAN2FuLiJGVrbzMfaodPvb2OmHmZ/Szizow33Uo7FYc0W7vADpTR4o+zdOfL4cGZs5cSibSZQT8HbI4NYA85DyXnTSqDlm9blL5ykMlNvFwgUPn5NRVMosnJsrahgZ3UVbngMPcBHSL8bplBc/FFzGWvhcuCNP6Li8oLgH3xMt/GD5FFk6mk57xHBYtStMSWupugJYyai+iWkLo0FDMPsNPQMwrLIDD6S2zAsG/gaA2wfPfscgXgkjreedJ1W2JgIfTBStEUgqMbf771kE0BNAfKfS40DvYFDC+y9BazJNkO2XMAe/tD9SNeMvT/PzNOIyRtVHw6TWVoS3SGkCE2fdUfkPJxeuYN8iKUU5nzOSpcFylcMzdWUXPRUeLaIZFetBhiqpzM/jc0Z12aorRDsjvl8oGxoIWA6Cqe/BsvdsP6635D4QDODocCpVp6pX4u9nx2Ayyxm/yn1koM1LJTrNAhKGyh1d4ySf44lpViFlyZQpPBzpQDlIIzBvojqkV8Lov0efQkcRcBCr4cNaPi5MH506iZgzfgi5Zy4nuY/8JgJWN887owBws3TC0kqTdaaJ2hVRsc+7ov3bZE8ENrG8bzi+ifixqPuLUyCChTPtDm9VRE2sDQsk7nNdeQL1bNafvctybwUaXKlVfqm6CKVUSHmQAAAAA'); diff --git a/docker/streamline-src/app/Models/HmisCategoryOptions.php b/docker/streamline-src/app/Models/HmisCategoryOptions.php deleted file mode 100644 index 944bce29..00000000 --- a/docker/streamline-src/app/Models/HmisCategoryOptions.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAsAIAANQhkDTvkxTNLs7du6MjdHqjGrQi8gJ3btOtX2BibDKIERK/beMqM2Gry1ew/OU1dH4o0R/o1hLoEDLcXHl8Zo7fDcN7zbdzE4HAau8KkYHIOHbFRksnVSHZHp7S2BbBTsjncPPGL5zY5vRD7pQ0AOr1rDRNJzLbkSZVCSCClpvjHP9e+Ai4P78iTTRY42U/AcRHkgUjbJOqv0XSUHyO2z4f+B3BpyigG3OM0D7gNBwU4K1YIurWjmHCLBlDIOV6NBKyCVHTVirMkZnl6xetQI6IRo3P22HxveZO+ENpw2DNlmh9FIL/x345UugGDAeTTtxoW9/kA4kjDT8ACwiiVnMisMxeN06EowCHcyEr7cP8upZd2A55Tqo5ckV2bOqOOGufHLB5P5+Z5LGT8tl/n4jJiVl3TXawpnLLj+3JPfF7gCyzzlbfdz9LLkP+4RVDYNMYOXju/KeMD+238nKsmCAvhy27TIAcl7wZYlznZa/fzlofGBHIrUewMKDTWka1Jl0TslWkOBEMXWAWhSmD+Kh904Xn6BX/XaewrF53q8SLPH2EcyhmLjhd8UaHYBNPaz9azuM7e2Tvunzbh05+q42C5zGVPlFFgJCEp3yOsefMlnWPOOx3YPcf22gizNbCORH3f9m9V99OmoFDpeZsW7NzErz2rHXJbjQhRF6+pXvCc2QNWM7nlA0t09GACY384bI/cUighrxDEPngVcULjDwVmqIak/t7O7I6EK6LS9w3Yj2C2gjCEJrKQvaDFCNXcO78gDtCkmdz6XMLHANtSJsnLq0nNRpssXWQEULSlLBR0ob7pga9kp8GcL6Xwi6yhxYrISa07s3e/aiQrecpRCtV+4nwAc7J7HS4hL1MbSdWvWpeLfn8y/JCFppaPx0xsXaLaBMVbIEa4QdzVRiuf8gAAAAA'); diff --git a/docker/streamline-src/app/Models/HmisWard.php b/docker/streamline-src/app/Models/HmisWard.php deleted file mode 100644 index 33abc270..00000000 --- a/docker/streamline-src/app/Models/HmisWard.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAQAIAAHh2aomtcOaY6dMnOiUFIZFUdB0qBuIV75EVLh7ChuDqll9V9q12ow7k3REJyuHtv54f89OiTmc5Gt6Yu+iwRB74OauV1iJvcUNo4KNvGVJdBbNJ7ZqOCsa++DNzA6BDtmhKij6Hn3/uXSkeiITgk4DJNl4nYmmsj3QexF2ECZUL/7HVDca6yzk9fOTPi/7/E8h6tR0WVlKjlDAlwcSakJy3fpHSCS/CsppVHdxkPHC3cLpk9g00muOjdbx/B+BcEY0+pt9vBrE5QgGB2aoxf1CgVdXjhpZvgH/eIb/1gPnidT+6gEeWS7TYBNjuLIhLYNhIbajaF+Y15H/44yHviMv8lVrU+eRNwSXlVzaxkaSSa5en70eColmPr3e2eTS1gfa/HgWZMDeEDBLT6W7UJXBTV47ivEZkRAJeNUzZciQhrHrUW028t42z8RQddqxO4Vq3V9/kUkFkkanX6y5Y/KdM1+bNro6xjfV+t9gU/m0fHZjaqcuMyGXMQAH3hUpPdHdDze9mvlIlFy8aR9kgti1WwLt7Ke+wD+i/NQwM6/01ShrXleXJdeshlHMYwm7H13nXQz++BIMXDsWOVM+b+qUBxJs7yHWH7gpJCxU63DgeFX3pe8di4J7vRjr2gNiD5jmsF1pDbR00JCkczE7qrGrDCEC7bhOyZHdFjYlbrsZT1+efB9GbzbLjjWutJYqRoHI383UPNZwZICft+HFGde+MKOHvriCcIcNAltD/yLWVjKXKC781pCwhLlcwiHqRgAAAAAA='); diff --git a/docker/streamline-src/app/Models/HospitalBill.php b/docker/streamline-src/app/Models/HospitalBill.php deleted file mode 100755 index 438ead9c..00000000 --- a/docker/streamline-src/app/Models/HospitalBill.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAOAIAAFm6A/xCjGN0f0nU1B+9OpFE5C9mnAm0q2tV1jq+18ZKYTXKWOBLzIS86Ycx4nGMmhqgV7DnQhruu/qpQsXBI6OF5Cad7sylECmOi4eKA20CihofPkRbFoXJCGbJ5KBl2nYdYdp/pGKIl+8JLjeHtI8fm1gRH9ZRti1wYU5L+7SGb/ic6406JpD5SvQ58ErXrgOaclAR6Ark0iNNuDUJchINsynCkVdBaR61dsRNdxH326h/FK0H3VZ494Lc0rar4zBklbpO3pbzv7Ea8zc14dXwzw7T/3lzIWN1EyJbaID4t3EYRKC8HQBkzHZHHRLVwgs7TYkk7USluPWtFzCaCaIIKlvOOj3tyRGTaT6H/4lgdLg0IekvQ6kHr05cNoHDhyc/CcCamHR5hCCtzd0pSy3f+X4CelC4NaoUPHAtgv4ylXudcqm1TjDXgm4WL0h1nIDLB4ZD4PP7212RqiFn/jsCxvlVoxQxNJVCK81hrnAFJlBFjDebgWI0cI6FotWVDYvvWB5VSlb36SV5A314H85jN8UcgE3/Z5yX6gLo9udXWzufx+SwEd9mI1qPWAsTvSmcVom4R6FmElsHrlKk+V30WiFxXMAAmRqbOb6PYBZy6dotA34upUdA+eQl8sC8fddZPWUZQUYpGMm9pE/1z6XGUQ0zkxbyGm3BU7ebt69yZgmfIA7uFLQ2y7vjpDhB9wQlaTxqtM0GOA+BaiGmP5xVsO+C4zzJJXPJ/3NeJvkxVtYUBz0rr5MAAAAA'); diff --git a/docker/streamline-src/app/Models/HospitalInformation.php b/docker/streamline-src/app/Models/HospitalInformation.php deleted file mode 100755 index 436dbb8a..00000000 --- a/docker/streamline-src/app/Models/HospitalInformation.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAYAIAAJ9uxMfqUh++/fX7Jcmf+hE/+P/W5iUeMkeucI7Qn6sqNvHc8zPmlvyuVowyd7zAOTcinh2YQDVV8dczk0qYxrWY+nEh0K5HwqdLEE8gzzX6btxFFBvDu8yJi+3WeowM7JLo+h1BPSx/RyGN1A0FIVPuc+9kpr5k6S2NGxEnzlrecmEU5AmujJmNfE6SXsusdhHgwh/ISYZKGUPplLi0mWZJ5OEc3+N01UGrqZ8GWNVGxnYcd6Xd5o7SwrKuM0Wa7pHydunuB7pJzdeDahEzmUs2c4F52KUyfNtgNUtkmjpMK/dKHJpAmDmszhU3KfBNxww3atzHi1XLxvgKRb1/vm6d67PvYZ+tJiVL/F3bYAudTcv7X9c+OODdr+8C6R8x7A2opGVmEOjcLDlGlVrIjKVOkT6MSo835KVncSCzo02nmqyWj+jAGzytgT8+nR1wvasCoYsVXVMxeaYxFAKA0lutgz+xTfK/0kYo3ZoamkUchyx0+D2utOXU9RgVPhksKQj/aX0W2teGfupCk8EVpgP8SfQfjrT/BftEiGUmjTzeYgJZHEpnXmNXKm8VV5cqG7SYrUVnPJurezj2t5OAB1yrWiGLBmNoYe9bXCMtfZrmu41UMnegGk63CO6eKdWH4hhso1SVT+uMnRAcbNnHcN9rZUYf7oKHAYX4r8ViL+7QMXEJG8polNBiIP8Jg+EAF6MujcRt3eSk92cnHHe2DZHHBW8Axe4RIY0xN3O2fcd9ohDiKf0gK1QrtmHnrZRYWgiooXLcPyu6w52FHWLBhzMcWZLU27LIKNwD6X+Mpw+HAAAAAA=='); diff --git a/docker/streamline-src/app/Models/HospitalInvoicePayment.php b/docker/streamline-src/app/Models/HospitalInvoicePayment.php deleted file mode 100755 index ac16cc24..00000000 --- a/docker/streamline-src/app/Models/HospitalInvoicePayment.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA8AEAAPxJIuUhunpp6FuzSkumiopZIvdtJz7sg5rA4fxO/9EMK7tm1r01/DGDpC/GCBFR8iikJv9bCyOZOQnO97qvRoDLc4rDcv9KytjAdM4KfeuOS4aNN+8tl7+C1oasaktvNdB5lV32qAXQAyu7071WXwgztg15RruM0gsy/uRkGBafukrpmtMg/tRFYnOCL4pr1wMVXpaqdzCUe1fs+DsfYpiIVJnCYX8tlBTUMkAdGcBnvoClAz1g9A4352UtpAQNrqdjy0inb0Or9Uf61F/H198xoUJ2WZ3BznG6K5yr2G/p5Zn5f+alRILqu0uGUcJ3NoRMyNZrhKONDwOJjpstEG+kQIIlCVEqdE4ANkUvIuzVa41ZaLiYcgPwyrXFJIla8yqxr/asvCDsskAeZ99JrmFUBQZhaS0AnzsaZ13XCBoJNU0biwk3hWLMnZmQ+v8nU00chLGsxq8j+57ZrGLDplAW1YtdLXHBfCaFVO3Nc7iR5si4l66NXOFqnEOe9XkzQqpMCHpfzWLKZGL0p4ES+BC1UwCHSJrIR1Y9d+olZeVs4nz2INHUIdvbW6O48FY6sfT0xv5A9PsDQMVr66Y5U6xK5/dcZxXCWcdu21zlse06OU+p1mbbh6CfkvGYUmCsHqqnmn7xJVWJYjL+7pu5WgQAAAAA'); diff --git a/docker/streamline-src/app/Models/IncomingWardChart.php b/docker/streamline-src/app/Models/IncomingWardChart.php deleted file mode 100755 index 91d727a2..00000000 --- a/docker/streamline-src/app/Models/IncomingWardChart.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAGAIAACGmDNV+cqGLaEeLbwKJ6puBzqmSneXHv/TTho3HnI9X9WEr3OmoJT70EExRBjBwnWyanihQ5UEHTdwapdYht7mHB0Wh8Lsl3k18jhoCmK+ppt649VlVl8qdebFvp8enLQ8hsmZ64zE58oyllXeCPzO0L2r7+lryvOFQm54DoPjVoHtxxn4p+5bM9kd08XqW9E32VaJ6TZy+aSNj0R3omLMkrNVPXdRG314EevmMJHNTOouE8oxb0xRAIUdrXehBKlM0xSeVlL9y+lxTByxQC9cB/02fQiZdWYe3wtWA5gvXnRFJn8r9fhzPZlkw6ASwkwzurNl79NMqDJd9LFyyozmzhLIrVoFd1Kz7iA8xHGDin9IsQ90iSC2NGtwqk3/alB7WZhTjhj+mWnrNUWgksMC+6At4h1blsfeTE0eE4VYe/H1+pTnskdaYDAsG2It6sLWg3AW9xBxnnztds55vb0BxReOgQ+vta3gudw+6icQ2C7uj2ESRtOzjAaq6/s4vpruZidkaKTZy6HFPiMftsQJI1oZMr+4oSyo9e3brPWbV76qS4/Bz/UOpevXhDSRsJhQZaJ8coEfdrx8/4Zu7OLJR2zzlLRNs+PdwSBfY8M3zQq1WkzVvKGwc9hC5fzmBsei8xe2XIvAQiifAHfGhUnMwKtsUNSVbpbpmCKAxjbdo3H2Fwv+uS1RgUP1mSr56lFRb7kYsCvX6AAAAAA=='); diff --git a/docker/streamline-src/app/Models/InpatientAttendantPass.php b/docker/streamline-src/app/Models/InpatientAttendantPass.php deleted file mode 100755 index 9fad418d..00000000 --- a/docker/streamline-src/app/Models/InpatientAttendantPass.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAEAIAAInWifptsy5tpLhRajFCS63bysvTQ4Pi8+212AFoOP0OjrabSJlY6jpxbIbVZmR5cNydcR2UH7hiNLz5eiv28rL5rOM9vqVV6oPD60FTLoS4C02ab5fbxRO/APrBYmAvGcvzArqEt5NFZxI+6U6KeRaRY/FyUHltBSHrRmUIowwiKOdTCMbO6vP1aNxhzOEP/jqoeJ5Fwx/zmULJSTqEj/wSgcAs5XXrEnhFSd2p1WoKWC6qsF6w430xuubkhuA5ij6jEOBnN+ui9xJdnSe57sK9B0BZIzmBEjiQRsaK6FxLYbKTaK+3V/4k1KRDOy+/w8uSzjgEvx/D7/wtsL8JIiFBRFqHxfviqUn+xXUktmR0Hlt7I2LDV6NWf+joSbfMldthnDmSO3VPkm2Ohla7nrfIMPwGLNWM09H7m2TYjENw+pqHf7shxuWTLAFSrgcfwqV9/0mHB8NG7NAhPbNZJS4kQjWCNbB2uZMnJFZ4v0H/fhTSIBm5YxJajjWXX/yMOM/HjGVXpOG0W3405DZFohrA/7d5gmhSQHjFv4zV71vWTaolzYersp6o/AoW11m6XknG+DfI0AV/MvJDgGvZYYlyUAW6pBMtjZIeMqpIvMpF3c7PsMPHl8LIiKvvu3tcs0FUzcyLQrodcrpuAfZorGbrf2t2Lvsv2zfpWOaNL/S6IU3jbaxaJBvMxMjPOd8sXQAAAAA='); diff --git a/docker/streamline-src/app/Models/InpatientBedCategory.php b/docker/streamline-src/app/Models/InpatientBedCategory.php deleted file mode 100755 index fc948551..00000000 --- a/docker/streamline-src/app/Models/InpatientBedCategory.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAsAIAAHIm4VEg7SGZvNUQehSZL/LfKNz6+eOQGG3V4S0VMYw0OLL2QRC1IsZ21TaqrfT5uc11dQBOYLWxPpMtw80kSaQPLKBobnXHdUEvAvpcXXv4h5zuDOghVAzFTL/CKmnZE4qOpZ9KXcxhrYvvYtKI3W9mTMhZ1+MIGWotdOc/ab17tDCVwar2apUaU7NLl7pnO9kjRwnuNkw3sLRvGr4C0YvAqYmWGUsbAQVu8mFZyF0aVvDoeSN/5nGsNqxKTfuMw4OZhkuT6Z59taaSImN4WP4SEezUkQ032ESq2xUNuyOATRD4ZfqnJafu+c0b56dQxk7gxnOEWT+doYET69YF75f3Zlk/8EnmVBF4VINMo9BKr4RYEaG1XCtzeH+UdZyiSnKpPPc3Um+7uF+KRrrJ7XU4Wwg20KhiDbUuY0iKduNKlzwuZcMpzqVu5WyZgLm1OVIk4DCNjdFUmFdhCtQoaqfnMv/S4/TfkDWsHvwqAmvKY9+k9oFJZ1GlQtF55qQxU9ZstjSlX9vGMLpcA/rkoxB5l/RxhXOIc8nskKBOuR/2F0xAvEXcAtieVTzxwmk7zIY4+4maedRFoOJ7uqFr4PGnlDgKD2BXT3CjXXrQkmNPiAsIrjUTYwosff5K2H2CGbudrMAEjL4v9HpkwozDyvOc97RL5UuESVgbs9IervSdYyz1RJJt++tE5otZMZ+J300CEWOeK1CT9Q2U64Krki8NAqAStt/zImTWL5YBUxwhaujL+rxNvHI4HelJeuHdZ4mlJjv3DslwUqMoIR92mEfo1Ni1BxcO+VjvUf/pWszdva44r+HhpYSwhsXVhSopLUXdkydwQh39B20/YAEkOfvD/dgVXqalAQrR944BcJ8MYbBhtmCMsiHnwqqL97vgtG/DfrZfrI+B/E4C0x2RRN4AAAAA'); diff --git a/docker/streamline-src/app/Models/InpatientBill.php b/docker/streamline-src/app/Models/InpatientBill.php deleted file mode 100755 index 49f71fcf..00000000 --- a/docker/streamline-src/app/Models/InpatientBill.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAGAIAAOV6WU5NAEwuh2jtl141aD/OkCVlfqehYQvISRoOtw+zrn7HnNUtx5Zt+fApgw+D6GtYcq33hzdD721WNimLhO6Kfzv1EPMfTTgcSa/37SAU5Jl+FEhznHiZRoHqVoBO89HLMSFLhcHG0avEP+rxIpJDqOVXKYftU+JBnqvNb5pnuf/3WuknUyeTiZCFulRplYemrGsofmU/8q2A3pjzI6C0PtQLS6d70dlD3S2gc05M76glyj+nE4S0/5bCNDnnhh93xzZQq1FCsHjkxlmtg/tYqCaZEt1xRdtEsmkeXbXEbYGMwyYp3YwlwRnAfVppD6/FyIAm5wZddKbhwuie3+B61P1RXjblDc5W+YCZedL9/Y0VbVOE070bt12Qj+h8jvJIQxEfqGJUf1if8UwMztHbSCjcvcP2DLvlIg0IHwWtVzQh7FbAYIHUnBu9NBzkfYBkjrWlQkZRmytdrjKojh7koogzYTCuL1AM92767kpzxbSWWQX+6tYmoDvWzzFm5gyOgQS0wKIYhqgCHtD336tHRiAimqpFyDo11JEKmbqaF0V3obNtQBQ7OYLI9gLpZN8J2n6fWPTIRDhehOG5pABbPShuLtd5rNnfncElYtnrMf/kAZHKSR4wEkOOpo86QUeIVDsAxBK1CA5pjN22Btcdbp8+XqYSV0xPRqMabFDbQLYFZQyErPncCiA4BtMvxLZ3jVWQCS2GAAAAAA=='); diff --git a/docker/streamline-src/app/Models/InpatientInfo.php b/docker/streamline-src/app/Models/InpatientInfo.php deleted file mode 100755 index a3877b2c..00000000 --- a/docker/streamline-src/app/Models/InpatientInfo.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAGAMAAKTkDYJa6g63LpW/nxNSRBICtdK9+t+8PN7yAp73DAbKKLsyAFtKLcer9ZOhm+ZTtGRE4lpVUytVKjA0wGDy4BLBNax5Zav+8Kx+Zrok4UEClB54l387R/IKJ/WxGp3wIFjToYnnLcFUbg46YbPlS9R+ggAocr9dMC1ggT374VyzzpwFrs7lVEkXaGPsLJj044jBFGZKrvx99rpacgrrpsdSndwMPa90oCq16EgSpPG8D4RkzWQPmcYOyherCOyVPlS4jznhPGDBe4mXdbJq/MgZsVGbuDxwfEa1a0EJxsQLzUZvyjT+H0++Bv+A8hTuopcciDr4paIwDfZVcbbnLvJ7VDwby9RgsUyMF/vf3Moh1PgbsBHzIexPbY8H1afjZs96pUOinTiYFPwrJi1ztB9UK2gNcTBypAawXZ/CS2YWqh11nj5H9zmvvfSBeDiWeMR6FNPnPMOE98IYA7mWODT4Nlqncs7DHpLvQxYdN+2M8DaszU4ufOLm5IgJQETyp8M3X5lfLfOeP8P9UJLyqrsw4rd9BTF0hvEyZ/m1S2/46M37XqByS7AbpEZC4Xc/YFrQ6mOBXy0W72Y4LQJY4OR65MvLvhI5fF9uWt4tZ9D72tlw15QBAhZXAIdFQiT8/1TpY8JshsOmYO6YXWq17sF4Z7w5ePe1gYUJtqoiwFctcYD9WF0U9AKe3fmwZp+b5lfZktk5WDW1Q798ojHQOG3gtpgVBVepqiJWyloyL9jyyFoqhm61vSEcdr0Svh+Ya02GM1AfIelrAnxdHNxVRBJj3q61LjNr3zVaCATq2ytrrfdA36XHEPzUX5ZQrNZrSn9Yh4zWy89vkid/MzEPddVnulOHD7KouK3Kty1tcU4xFQsG+gn/cbODkTEXQcH3ZQ7nxlya5Q5k+TSB8ZoJZkxBJPDrNHgz9Y+5VpiR7PyfiLwhPv0PZLwUeTJgRSuGsqe3bic4EqojNcqJ5V4UYeL0Oen4/olxYWJP1MQcLlQH1VO4ArywC6mjRL2nrqi3tBxYpbcXFWmF9lI/gei3CZfJY9Fzh7evLwAAAAA='); diff --git a/docker/streamline-src/app/Models/InpatientSheetAudit.php b/docker/streamline-src/app/Models/InpatientSheetAudit.php deleted file mode 100755 index 939ea865..00000000 --- a/docker/streamline-src/app/Models/InpatientSheetAudit.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA0AEAADRorRkrkPor7SBZflY86JDazQAGlRqEE9fFeI/zFHEIkRvbFUJCgRYzARAfMM9LIWXlqifMbBqHvzan5aO/LfW3wE1XEy1hNsvLDEneaRp9X05CFY3PAKVnkzw7iThaLU9XXHRexA4dPlEq6DxrWS8Q761+KNoyzs3L56jsZp24bGDbCDFVbvZCGduXfHJmojjhtVZtLL8JnGW6B+9QqZZsKTnqZLAqOYQIytnfDRl5apjr37VwJ7BXWA1EyZbYfjtGfZfB1vastMbk7f/IVHnqh2U66ENB9dnUEUl8B2vSjRH9gTYxF8CodWEMJM+zzuoJ2zQBHvM8UBIyQhaCBVW+Ay3+3ZUHdq4R3oT1mO8Gt8H2Q96RDKQArpghP4a/CH0Dcn34LUZ4hAyYCz4S/KD98ZfzvAVHv9qm59QZTwOzNTTz21tMU0htDLX7H0nWHe55QJIiSqDLErXEU409TRlRWAxnd1166Bd2HeNdctWY5Jsop8a9nwCBucsUhmdHFgDQEcuN1fU1JyEDAl8UldBlzi8f9dIUfdvUH1tNzpS4DNucvjaabubXPA+Z0PL1PIlH5jPnc5NX5tgw/8Fguh3eAgHB4K2b3YX6gzsbzCBLAAAAAA=='); diff --git a/docker/streamline-src/app/Models/InpatientWardDiscounts.php b/docker/streamline-src/app/Models/InpatientWardDiscounts.php deleted file mode 100755 index a0ec81ff..00000000 --- a/docker/streamline-src/app/Models/InpatientWardDiscounts.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAAAIAAMkjxvQ7GqA6Bnu8WKLS+Nspiy3c5P3KyTXXBH1CWowy0+6CYn3YYAt7PELBigluvGTD8IkGmANtp1PhP3vTr44rkMXeXbDr2vRXwDwwXT/4lFXeub6fLTYuBuEjk1CtLE1uhsP9khmRCfk1IW2DWJ1DcEXwgFj/zB4qj/pxrAn8COfeCdAHaRkSqE+MIjbc9X+AEp8HA2gOYj+MgRipGUfB/5eWmHol/+dTF+PKPYK4V8jf/CQ7wuAY9BXNgmTr7YWnL268gHe/1I4dAmX0S8xYtr07l34cR05+oo4LeSyXakUfWk1nByPgbe3Ak/I59i/DTdlOsMsRcJrXkIVGZ4hqlPcevpWpsMazbqNQ2a2givpPOSBrEEPft8EQPwLn/Qll3VCJl30xXCrXFAAriOlvkYJStrMIvnyEqYxeiaKOcrFa+i/AgwVQu7b4phicP7mJdRKOamFSKKFrDvqVncypSdL7nTy3rHeUj7oemdUTDAzm9ErNsH0I7HBby+/PNs34DNc1Tsg89XGZqRmO5xlaY1Nyse+dpEr6LdTHXig6eEHL3UYaZRbNqOY2ugjCDtKxkSYZJXbr0kanA1F9NDFLazP5qB1JEM1AP+vkO3R0Sc7MFXdNV0+EeXsvCWHv5ndCfYpkmKTP153iGf5kNCYqwR7Yl3PS4Ch9intkPPFtAAAAAA=='); diff --git a/docker/streamline-src/app/Models/InsuranceBenefit.php b/docker/streamline-src/app/Models/InsuranceBenefit.php deleted file mode 100644 index ad3749a9..00000000 --- a/docker/streamline-src/app/Models/InsuranceBenefit.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA6AEAAOawIG2BQwyE5vAI9VGT+KsN93Hqk9HEz5EzEl8SoaFEmo+ULhd7ca1IC0mj5BRsBn3zcwAbX6oz3lNKeN8QhnpYJJ+0Q0RnstxWbVLUnT+zVdWL1VazxjHG0fw6rHstYDMQVKE8OXA1OQ1a6sUc33qsCgHJndgqa2zmmC4CutPBCJRZT3AbcUwLXqks0LAKHW4aewbzc5onxMfmFvpZ7muGQnDJXEf9eJzGMPHTw7XIdd3aBVcaEBqNomF81FJlcsU3uFdVBnmLAJvmYZCjWg4zLxbyGJrfkuVioL1U/1UwLtXwddISLuY2bjWBvWxy/dnv4S7euqwmGk6CzlBOqbbMm3rZQ8oc/nUS7CmrrOcU7flxma8IWw0FxjG2j7Ki017XmtqW/0eIlrn2CoqSLDBoVcSM2eotxE0JADHzIkNq6IRtsWGaZVAXIQlfUOZahgOl1oq1ri3rwauLrgYIdfjxyFjhPLGDWnH6/vrcN8oMMUWAGpHUxohPX7cNgJqKPwEepTn1zLOXcRacmxIOUm1YHFwYR6zDVYb+AEV/Fdp6rA+mKe7NueKKPXixIvd2l4oCIyHCMG8Gm/FnVwXp36W0haFO6lrSLMgG5k14gLFsKPl+vkW5ocIEm77XzWGO+Iu/Q/to147YAAAAAA=='); diff --git a/docker/streamline-src/app/Models/InsuranceBenefitItem.php b/docker/streamline-src/app/Models/InsuranceBenefitItem.php deleted file mode 100644 index 16ba52d4..00000000 --- a/docker/streamline-src/app/Models/InsuranceBenefitItem.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA8AEAAFUrN6piR607Lqz0WkgRfg8C/FI3vT0hwdXCD2AjAzjybRW8kCgTLRGkyWQVE1k1RINApyaGDzcQZd8ylTWaaYS05dQwsYqgaRQLv7m0hgc0MNoNW/Cds1fkedKG/DOkML9QwCqSrzumJ1Rkjfr4+0zo8YazNt/SE5tcQw/U6lQLNzYsm+g+HzCGwrtcwowz5HM55zDkWHF4K9n3xp//9UuB+Z0WwnVrwVRzGwnlahAknbtpAsTFX4y/12E0OYhF9OyxXap+pBP8XnbEwS6icrR5n0PkcGCuq15IZ8VlcvRru30d4JzHncS7b7P6YR87ECd5MyTdeHso0w3ZFkvbUWIOUpo97SrB4KEujNYv/Hjg1ShlpX6kppxgobYi+GGtIQpbznAp+9mJS6VKmBrClhJGRN74uWfgUuB3g21Y1O/BA7BaTT2rNKZy/haEOz0mbEqsURParoCi2jwCvIgipy2/Ye5ac09R75bmpN+16EqHLkn7SN/PTgV0KcpEQ0O1YqXmkrjUfyNgGyO3f/YaJZ8qJSQOCyKawwMcTWa2mFsWnejr9xtMCJ0qKgCDkqgLNm7wqNbrDGKPLyYe1GoqOXc8M/aqGc71nZD8fp3gR+aifbvxMBBa43/fVYQpUyNiRI3ryLwahdNQ6edO7ZpLD6AAAAAA'); diff --git a/docker/streamline-src/app/Models/InsuranceClaim.php b/docker/streamline-src/app/Models/InsuranceClaim.php deleted file mode 100644 index ee08988f..00000000 --- a/docker/streamline-src/app/Models/InsuranceClaim.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA6AEAAOyUE3Si2uo8Xxh/nc61UygYZwsv42K70EBTnZZJgzU7mDKH9Ks9vsCa0L5Y7KK481evcv48XUkNyeqt1RbGvDwaLYyuXsyvoOp7dAC0JtqOeeMk4tRa40UPdpbMpefRDxvNr4SZVo8lU/xGLvQOeXUjkAsLnWLE1i0Rw3HXtfuT5i8OalBZyJVDZ0N51OxfvfwZNBu9AfsKe4zdqcdhjhoI3aBPdTrmSxjLNqRwyzgWmsUocoxJh7GFjDoPy7qQDQfqPmBg+0R3NoXkLBAhFA2kSWvUaLUskQozl8xyM6LYyCF89w3+EeYu/wrRVHgBCst2xYECXwZgea38NrXZ4MXY1s6KrwO4cqrV2bZcvdJk1gZLgHaj2RX7wgYE95PmkBoB1JSo8M0KuH4qoH4osfLlpMy+jMHWzrZDisN3SLIrMe2WI4CUjh0Zh86uddheNKw9TaXnCrWAni+xtMHgx4umrzAQJH+7R0CAYdpo6fEOyBnRBf2ZyYrM8tDj2atEktN162XBfrgNosFRocID8Y1P2RVAsh+BXtgDJJ4Kqw8G+Y4Qc7TTo41FefLxsfn3ePh1tDSvYV5BixyxCtjbgQul3+OBQhUvkGMFMfWm2YelV/nuq/KidFfmAFxINlWXYN/ZFvIHpxXrAAAAAA=='); diff --git a/docker/streamline-src/app/Models/InsuranceDiseaseGroup.php b/docker/streamline-src/app/Models/InsuranceDiseaseGroup.php deleted file mode 100644 index 2c1b375a..00000000 --- a/docker/streamline-src/app/Models/InsuranceDiseaseGroup.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA8AEAAOoS6l1W0CRkyKl5fYMQvS2cOKAXYK3TlHvqP8spbQMJbIDgDlUu66+RwA2YkOLMDyL+YTuH4CuoKniX+TeXFZI+Ii7WP8BtZRwDKJhnfi07gnf2nO7+fEuOuRaZ3duADjTPMd8ytXvuI+meZDgDRXp5Yrp0mZHHXz3Z4bDC276CoGnfRAYlORs/+C3boOa1Dm0As3ByoS0ljX7LH0VpxMTetV5QZKy+Ad/lYTrZEeyza9UIhsHcQP5Zn3Hc6McVVQUqMP7BZguBLODxPJAQ0Hb+tGiDh6I1LWB+QgNmOlnKsOUCo3+EaQ6er8LcJ38k7y7I7XQsjDIT9bSDB2jyrJbwBMiaUmHucnsiBfTPTUpybCVf5zXwcmAiLa7jwCNn4c6RHFAMTvvYSHAkn4/Hu5a3BrXnbSQO1cGDRFp5cGUZbw1WILO2MeoDqN/lWbC5B9iuroQPSCjXRO1Cp3GWoNFRGq1JLQAuQPOAvCTTtnzPvs+1/qe4vecC7X/hGVhrhMdb13TC3KJ0bqEzfic/PFScxKmGK8rn3obesxqyMyDfI/Mw1xP4m7lcacgPLG62lWXHSr0W3RZXnKEb8BMRN01qu7Zh7NSaOY/fVr/Rt9ruazNzf5rKLGNJk2I8OWbyLyJpXW5eFmnoXv3geNYd7qwAAAAA'); diff --git a/docker/streamline-src/app/Models/InsuranceExpenditure.php b/docker/streamline-src/app/Models/InsuranceExpenditure.php deleted file mode 100755 index 379ebfc1..00000000 --- a/docker/streamline-src/app/Models/InsuranceExpenditure.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA6AEAAAmUaRZ83SLU907IDsgyMUVg90GmLO4XxDmyEL8yg+3r9QOpdMV8lYVfp10CwMGr0d6np/V+qAatF2CGL5VuYPyTW21KUruFlsmuYQ9mZZOvvzkXRsu8ycQqkLUa5HEGNy0SNRysYZkmjtj+B/6JJkOPKgKrruTY4PuStH0jImyTiSI93A+Kz8v23jcWA9UjiEbDZYFNuzExCKUNXjfg1EcG9CJ/g7J+G0rLHH20q1mSnivNt/g4zmC4EYEp85N61EH9o0dMVgoDTvJ2dGbZVMYeKjD2UrdkiJTYRn6vk6xhUUX8xuTLY9/TahiAT6rXb7MwBh/vywmZ9RGXAjLqiJDeQhX3LRAlX5XhvyTLHeJMEvsHqRRTF7+ZJ5Tsat6mF6V2PmybUu8OYok9TyoanRD5pNr6ApvE4q0xAGRVovj0wZk+zfx26gyjBbzUBSQwkgr8L/flJ2oBm2m8QjX5t+TOOrx0tEG2XYd9IDVkZqWpDh0CGh/dXcz7KvLuCHHWfmUoh/rnetTz28td3O/6ItyIOj8CuYreURuS440XZ6p2dd2bq3yc3M6EJtpBe2onPNMQDAfCsvo5Wze5gpt0ErpFtUskdKQ7dktPzsbpB+lHBA1lEbutJtKXtjDrrV3gPWbamdG0DCPcAAAAAA=='); diff --git a/docker/streamline-src/app/Models/InsuranceGroup.php b/docker/streamline-src/app/Models/InsuranceGroup.php deleted file mode 100755 index 6bcbfc2c..00000000 --- a/docker/streamline-src/app/Models/InsuranceGroup.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAUAIAAEb/tyWnMOjlcGGnezw4RbYtauTUR8s0sm7zKsfF0tprqyUwOJahhs9lKWRXg5a/9hXYrKaKcQBWSzf8yXVsvLo/7He8C5sGXJgbVEhFb0p3fiMIvNYg/Pqo80c92eTLTqLr1SmO9LH/Upbfod22xzs1iQVX4TQiTgi1btE1vxeR4QnP66m6GBAoS7kFromYV0r9k61Z4M3gRMJF12Pr1aXymwgf9edmUIJ2b6RVsN3BWO6c6trO03gN5EBbpUTNcxH+0bi+nx5d/OlXE0ZQssjlbx6Ky9LyKauoa2O6RjOyL3Mpzahp6QReWj67E6ot13VYPJ8yFDstKX2jcJOPX7K0JRwQIKkOLPswp+e9ABQfi0Of34BbwQwzfuTTUCXfDMcbcQ1aw/P8OOGTaqZ/MtU5EKKkU5UWRGUU2o34K/oWk+YOIfwX4492iBEBBy8cBUip+xfHIdfU6y0+4ikI6dbgxJdYh4g1nKBaZeS0CcWwbhmeU2DRtJi6whimqta4XB5CKojbm8DcxF+z2F/P6SMgz2gOoHpPdBg3n+7E4ZphKk95vvCkvDwrV2cpNmH8c1PlWdDfxGEV3/2dBeNYOTPCpRSDLTr580UvkOyS05OYkq8wA+FusD43CpClK8Op6ko/Nw98ScD0ivk8hk6l+sRVCoDd83qYdl6jz5knUDW7SQYjfDKYHvmI5UKrs/L5fP+U5+mHZDt+3iA9y+C7FyteENHbotG9xvcdxzMh3Aw+5DO7kQyphsbKPyVLMsL7eRoqj46M6uyF5MNGZUuU05MAAAAA'); diff --git a/docker/streamline-src/app/Models/InsuranceInpatientAccommodationRates.php b/docker/streamline-src/app/Models/InsuranceInpatientAccommodationRates.php deleted file mode 100644 index 90947811..00000000 --- a/docker/streamline-src/app/Models/InsuranceInpatientAccommodationRates.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAAAIAAP69JIE+6pLj8Cl5szEc9JVe4WAVL+HSkFrsP2np78MZ3iibzQqFta6TwQBGdfCgcMz88PZj5m0/gTllT5gqKVE4z7d2YWpqbU80RQXpG51vr2vyeV+sCHi9Ke97u/6uidns7tutiX9ZX0VU8ZogA0j2vJFptQ/p+vecop5CJazwss6C/s5DFvqCcOTxwYHVeMpO+w7DUReLMpo5AZGTrP0soJesyEDrZ2vjlegMktC0NkvgcJBlQx2QBn5U7xJVULFMHYWJs5Jyp6NC5n3XyIjTU6iRtzWeBQpcnRXo6RxGDcuFHwvHiL2o8BzsksEknBX9Ul7bBcoimDgHsENQHXshhMdI64e+dU1+Nq8KdmW/Zvwqz9ijYZVH5beNBER2uRvTnFWHzv9aA0oWwq8o6WMthrRp0PAvNKRE9nbKg9m8rGX3caIzTmDSeq3Hg+VLomqQpdPP8AcS2E9UTChCwHUV+8c58DxLIq6vTRjoMNVJdx70+MzE6+ycFjh+qcPueLE6vFgoEQxKpoeaxQ+vFydBfkGNnO4cMoSwiyB5S/WThCgaBHcqTukK7Be0I68w4MpindysM/3svsyn1TTIfE/9m9qcYe8VegVYtr8hWMy0nyh39xwYQAAZlsUoJO3JV7Y27p0mFMj//H+wRjYv86kFJ5ZOi/RO2tWfxfVwi03QAAAAAA=='); diff --git a/docker/streamline-src/app/Models/InsuranceMember.php b/docker/streamline-src/app/Models/InsuranceMember.php deleted file mode 100755 index d58a5f08..00000000 --- a/docker/streamline-src/app/Models/InsuranceMember.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAMAIAAHTRbH03kZtpMQYsZz6DFiqKTEDQIrqS9VAjq9qSGm+f6VUAmOenwDN18E4YR/PHk8Edi6FGrJnUHz7EVG6Rd5rq2tXn8wSpUlm+TsTKWPG6X8PdvlubkL0kvzufSJsHbzncZe0qIRaO04cdeNQOdEe8DgTkhn2eum10jviip+8Ryu1KwmTUxVF+mYXAQJikNUmOPrDXwrtSXdnq4YNaNxiGK3mJ3n8pRhe/QZGrXyjqTF0GQh3NWVxVN7gst6dEq80nFTUStzuZ7QUJNw3Mg9HKK9RR1ZBHUeSSNJsq9CJUugpJOEFVCExQc+dd4jpzwxBE2JdXxXxULk7PcOAKTFIBsNiS28f3NDwxoN2sxMK7vWqSyM8lhZdqZRAGoFamiz9I1djB7ngz0raixm/6T4l+b7yzYuch0rI/lLia7LTGXVl6d0qwLs9CG3SUBkSpTfCoX9FjmPODR1Np5SYuD4wjqHz34IVSSXEya7J9dqOpqg90zzy/G9xN93b3oUKNNqyYD5nmq8MOE3OhUsWEzyj5eNvQgjw0iHfzTPlRbZvnDL98VoAyUCgzGpfrKA6J/lfMoC6nolrQ50317s9raGKmFtsH5peimQ9fHdCtW/SRp1khGLLXmy9hPXzJI4oPXZooGaaA7m5QGHuLmSNDghpRMPHv+4tRorUdX3CTOLKZqPcYTBb9/Hf+HKSvmOiwiy8imdZo4uHe8/f8tx3j/AK98ux0HjlxUyxF7c2V9QcCAAAAAA=='); diff --git a/docker/streamline-src/app/Models/InsuranceMemberConsumption.php b/docker/streamline-src/app/Models/InsuranceMemberConsumption.php deleted file mode 100644 index dccadcaf..00000000 --- a/docker/streamline-src/app/Models/InsuranceMemberConsumption.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA+AEAAPyzVOT452+pYITw+/J1mNFRTGn17Tdp242XeRGykr9zgdtd1YJzXNnyOtk9mwJn6NCQSRLfLGPO03ZS7dcvCNLjgMf+lISpdwFDHUJMYxFa+z1qL4deo7s31NN+NNFiFsqhGn+m0f2xNlF2QLsQa2DaUm4eVQcLPZLBrhnuiKeoTDJlLk0PaHLsLCc3bKh8IbgBG5XZ7x3IZC2H558OtMR8zrGel4h5HJaHZx63x2FBgQQr2ejT4ANLolx8Zh0uRiuk4G3uyb1GDSiYqOvXUjbCzDnanHDvvUdIzCzqbubMjZ2ipshSu5+X4HJHWvooDBXt82t0bq79CvHY8pxAuxCFvclaLTpv/huWISH3Dwi7KwDrh5hHqW27xr0M6o4xyslsUN28ivKwfCDdU+mofyHqgL52QDVtpk8O3dPDCSNvwHk2Lpe7Q+H+opkqqDcZUK/MxmVJl7rxQWekrxBzh5DuviR7vQs0PYTj1N0x2bbZpI4QmkGw1NDwBuGeTj8uGS3WI4Z/FUDo4K1oZjFP3DG9ry7U4P6pNBZJfI9qXirwxMOVGDHm7nSoSI6OjrQjRoR9F00ZvDkPR+bleI0FT/otBuYHTHvLjtSffSjH729TlVLIBBBtEGuG9j+qS7k2Tu+EvFp2DsIya164VNWvTl4G1Ay2M0RGfAAAAAA='); diff --git a/docker/streamline-src/app/Models/InsurancePremiums.php b/docker/streamline-src/app/Models/InsurancePremiums.php deleted file mode 100755 index 968c107e..00000000 --- a/docker/streamline-src/app/Models/InsurancePremiums.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAQAIAAM4YEXZleu5am/gS5TrkQ9DWF764JfVx2Eze9P4AOAEX5H86aqWvzgaTI2jIfVd1q2hDY+uuDqgSdaXHqGGq/UBfIaC3sjru9tddItH6yHymT52zDpl05mDmy0+OE+m3DIeKzvuuTR/SNNXlEce1gGV86TSj5LI3VOLg+m9DmWEKf7aD37eBMsqg/ui1nsfiikeVs9SNis4/YxzGM4/BjTFITA9gYtLW02fpnPxyivXSPc6suGyUKqKwf0Kl85pTQZ1gzbL0LsGQUE0tcIXVTGnHAz/I9u+TpbpRybpnnz5I/veG7uMQ32gYHqp122J4DWxwDrlQK9HVTVf+D4d0dxJI40G3i2fQIrwHCW1Fe4slRu1yvEPc4mAvrM7qySU4gwzn1R9UE5SOE05g+blf2YE6jQxzyhq5WABdX0vlkBGP26ynyi5tQRWmdoEuZgiUK5/Fgw8Vpdm1WAxhjfuoe2WFSJ0uub0kKkIIZ55EkCF7rRByhGsDay+vaWuMx19VGwHE1TEbRQ2pe0/FKhVPl4kGNNneD7bSEtPv+Oju4s6By0VRjLvk1wmQxxAbHsOLQHmXOLdUkAO60zNZ62eXFYRM0ZKf5acGenGZL5zZKgLMLzzLOb6fsxrdiZERIHl7ZqD4NYcdWwg6IynJl2Dju3O5cii6oMLEp9UH3t00f8TAX3XdpanjYpul2//2Rn10GGBCbO45WkkRsp/eA44vAW9PJQ13ypWTtPreeHqpGeqbpiTHeuDGNPTLtYNalYN3ngAAAAA='); diff --git a/docker/streamline-src/app/Models/InsuranceSubscription.php b/docker/streamline-src/app/Models/InsuranceSubscription.php deleted file mode 100755 index 623d6372..00000000 --- a/docker/streamline-src/app/Models/InsuranceSubscription.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAEAIAAIFM9I6JV1xvRMu+Btcub3aHN6WMkCOSohS/1rAv3pU2f3Wlv7EZg0bRRy1eMCdikAIBgXhBI0VcpI1YbRU7/FailZeW2MKdSwKD4zZ0StgrjeM2a7gmT66Sl5qRrrH6W05hD7YUHDVD8CXdFzT+w8CWHOMD4mff4N5qIFczNz1OC4X10Voxi6dkG86P5/zq5du4ZJ5+ubr43NvL6OPUMOlrELrqs1i/6Xm19ix413Bg44DzkXSVlhyoGZf8RSLaq1iN0GPSZvRionyfv0rdvU9XykbIgbZeGO+4/oFuCEIv4sezCti+HpRKLqvZGr6+W0xNQbd8wtnWjXawhKMp0RjfqxsbUY4ZnRGHGAMwm9Q7FEcD7oeJrFeoDiB1yTSXq94HCtI4e1kwMSy1dXtsfo6T6zTah0JkGKkklCFVgVOGd3NkvgjaKyiRZBN4Mu2qiCFMs77JC6/YuA/Y2N6mYL80sGw1fCt9b8fN2yBD90zQoD7/x8cFRxfanXeMyawIi5V7FMaXvKcYTybJaTIHXM1dTu6YJSzZx+GRPIYnuVrpwSkQqPVlI9w6/DmXdBDAORG2SJHsE7idP1lIcYsGZTbh9gelPeoigGzPM38VhY1mkv5oPH7PY98cb0DjrbeGFwl2qPNbsuPHqml6v9J7cZYsngKjFDSxlnIRTDO8+YzkA4buetq0k+nAD0N/QcJcaAAAAAA='); diff --git a/docker/streamline-src/app/Models/InsuranceTariff.php b/docker/streamline-src/app/Models/InsuranceTariff.php deleted file mode 100644 index 4b0d0c04..00000000 --- a/docker/streamline-src/app/Models/InsuranceTariff.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA6AEAABen/mDIdZ7c3vLbV759m8/3Nxtc59i69ahVzhFcQd4QJQdfDUxB0BafSDGGLoHeWQ7be1qbb1iDGQRGVsd2Xv8PY0h5onjfhWUaCLlXqu7dNsEIrcro2o3OhM6kkX9Mmzajx5Tv6fCbqk3SvFbLELPPhjJrW3Q7xJbALweUhvqfIFKV3FNaleIA4wJlx0wHUYsbhSHJcewGsxBpQsU0oXpJO2JAl0vNI/RW7Tfhq9Dtk9VgcOKmPQgRtXl5izUMKKD0bNqwMdrWCsbNxhuZROJ6P/S6bGp7jeyeJ3mbP6ZFZsosEvXT0Rc81aF59DFLg8aiKuLTfzblbYnoGlHMJ+eVfUnDjecy8Ytcyu+urDauDZNTHGspawWG6HXHXAg/K9xDUI67dVzCl205mAI3thHAHbYokWLTzy9rdTVE5fGkQHat4nRNRAMVnv5nJBF1n7bJQ5moaer5KkxQuT91HMYiXiBYFijGJPFl8LSUCUBKcanv4CJKKNbgycEI0qqu6nCE0P1sBqhSQYcTsUKIh50VQb6SXEIyH2kw/OdPlrgRgK0RHZA8GW+Ij61QqVp131G8dvB7z1jxubnFIWxLD66YQoqsDZShXSIYZ38bILCH+KA6Vc/EcJ3CAeQsAfNlRviTtbwkgo8IAAAAAA=='); diff --git a/docker/streamline-src/app/Models/InternalWardTransfer.php b/docker/streamline-src/app/Models/InternalWardTransfer.php deleted file mode 100755 index 794be398..00000000 --- a/docker/streamline-src/app/Models/InternalWardTransfer.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAEAIAALOdSs/PUA2dQtIVLJo+ebsvnXJeU9HGj4tgT53bfVwSwFNuwVHYSI9MVPw1Cvn8CYEsPaeH9FRjVozbgh6RMcf+x5gptZrbL98Nty8DodEaSkAenv6ngcJFmnxRQn0p6c8CRJIpMDZsCJZ40OBPjfTBbA9RTLAzgXLT+SAUYtSCHEAOZ24mnLiSaWPaXPw1HdRncxMVafMld0UGGP3PHDJkTso9t15W7nbyW+L4VoehjXfTnPNmOoPgA81dj7Ap4ZUwcg5F9s38yUqaQ4iRpjGH7mi5tqe24k8+Ef524jDQv9m0fXRe6KA1DG0awAHK9Qo1NbZXPTyKaJjoM+gPDqO/zRy3E7Rw7oJzgIhazbLy+wb9un/nt93jCcHSSPzrICPIZkiZS2gfdkBLPzGg9fcWKho1ZzHAI4QL7iPSnXJ6iJisXhkjqoMIY7yHAE8TC5vVuxmlEXpthWKkuYGvKWgbL5fh71lluQ9a5Mm6ezWevQzfZGem2Ksf0j+APWAlkrbeww5LNK3iFeU1xkHi6KiIeCPagtzb7HVftqVv+UBLIMERFkbf3J3JnNdOnlJjxEYYml9z5eEdRxGD3saT6R6dxIopuCBHS0uaC91RUtkvh7onV+3VjzNwXYZO3vMy2HFJVQJYo+jFp1jXgDrBHc210tkyrGfqO8L/ntkLiax5UE9ci2FUMI6sSzZdhilh2QAAAAA='); diff --git a/docker/streamline-src/app/Models/InventoryStockDate.php b/docker/streamline-src/app/Models/InventoryStockDate.php deleted file mode 100755 index c1c63567..00000000 --- a/docker/streamline-src/app/Models/InventoryStockDate.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAEAIAADdor1y+Xtjzdd068Y8u0aKkTuXEKxxY9KNLLcQVDmzZT0P7azjv+Vu9kOuwcSjtPoWxXnAlVnqRe8Vl+3beRV02L9zcpg0gRKmGFNL8/6gc7a4tBKRSq5GGh81hRieZZoenZD+N9UKybq7uKv1vuxY2PievflML/oqPgejjkBO3wq9DWUTqjOI53ptFG8Ra0ueiFQsaw/6z77iYgLLvY0qWce0F9ySnhjYt8bY+UJVl2QcN4wXOall+e1Kik8Itt2HCU3/ZisRYWTiwq+mzIQmkpPG2ZM5qQVr2fD6yz25zyfGdvHbf1iJLdR5/yrVB7aw4el604Qt6pFk8K94AUEJjdygB+nGeeZR+UNRIapUNfeJWjchFb3dRlk2TUrh7FBJapNmhoEzWD8845+b/QSt2JBS0epkhjQl3k2xFVKsVh+avj6NCOLwBvDmwEhxsu4j09DvfDbT9bUUCnoTz1M0IEIgAA1MDUesghUejo/j8aduy3NYD8XKGgZQMIE/9T+neFx4qPvA2+aQOO9h9M+m4JF/imDkqbSX8iQsg7CaBjpqf/DcoMARBdgEBKrfy+biLNaVQEkxiuc2+cosw6XdbX3xi2RzLG65KxfZd4FqRlv59kR2E97cG98sUGyRuvioUEfO6kL5WsOzlXc3utIPpSvwmFolLBbJKrgdtNNUF8NxMnRIXURZ1QnGUIJAFAAAAAAA='); diff --git a/docker/streamline-src/app/Models/Investigation.php b/docker/streamline-src/app/Models/Investigation.php deleted file mode 100755 index 283a0fcd..00000000 --- a/docker/streamline-src/app/Models/Investigation.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAKAIAACoEAKEdWVajNl8EGOQKf4w7NktRrACACx1H6L4ROle9n+yr/pG64KZGaEbJ35mDVOrk1WRX4Bqc5O/YIuTBpA7b9blkWJR/3m5I/WBkZXarlZe0qjRlxZPcYApeyrdm0ajJTEjgsah4Mulvxfuykh/8ebrCcPdVqcrJb3A2CKEujxBcnhXnZEcpFNaLQ2dhyt/PpuNUvX0T1ktmbAhnrHjDJsCftEFvRvZ1QXF4aw1DusxzLeQ6/S/EEZWvH1GoGqrvtTodnFyCcfK8PFUnmBD5oGhcAOxA/sgqMAxCQEDGw9Ci4p4cLnQeH27HIMziwtvZBi4MzuWal3ss3JC9Y1/r1h9wraYY/778Zu4BEylVhscpBswTQGdaD0soey4iAQeySr8iIijie4Q2oMz+aTHPmyO3uOs8RenIPG4wKitDg7YhX0x/mONf3E0oJeVVSiLtjdJY+OQq2rYNWk6/r/SR9v40rmpiAaV84O3xS3mhtjzNPRnWk0s4GSAK0EP5bMlyzLSrEEzQxzLbjLGO6bkFSgTNyn0RPONid8uQ0ZUajy5LPahVjYrRdkR6fJHyfjebPyN5el/HMzcR41uhbHwTB7llgmxsd0GEoDXq5enLt71R+FkK5o4hQGY8gJtPNAN88Vv4DHh7HxUocfJcgHZ8/2YeJMf2kComGny/QQLxTvXQxkVvId51Qrg8xJ0z6v30zqS71l2chARLtjzB+2JRG9Ux92M/1AAAAAA='); diff --git a/docker/streamline-src/app/Models/InvestigationCategory.php b/docker/streamline-src/app/Models/InvestigationCategory.php deleted file mode 100755 index 273758a0..00000000 --- a/docker/streamline-src/app/Models/InvestigationCategory.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAUAIAAHoXUV5TCWkjoptFE215369cLzv2Apb1SkvxTiVuUwnJS1O/jEzb29iW2bRVc86UfB5yBnRshffshN9iwNPLP4QwkvRp4exLN5upP5wFJ40zlIHkpUA/o09+ZBdgme4cRel1Q2oY6K5c4/IkTVYuSMDYIVTRwkAoOgkmP0m1jAJs2TCky5rsyT/OyvxZuDhY2+FdskGAQotvzxNQ7os9+wNBnAzKMQ7yzlvq3HeX2R2IR1+5i1/voj/RrqAIhZLSffZpRzresSdFCZid6N8a0+fWzBBYr2sYHKmtvlUybl4JgORB457Za+UQry590M1ERdQoqfUWJ5nFUOq/xwk8pSzDjEUTgP8oEgUGCZo+ZIqiia+gMxoCegqpxkEPjl/DyA0iBJZZ8liI2fRa8Yx8opSoy4q+c0CzwGWMZggQRUD9+YAPyZX4UoDNKVJSIi6YnzRMwsI1Fij28blX+oFPfXxItv+RSb3MwC1xB4LkNeaANVGLR7CrpIC8DH1ZAORH7IBNrqFJtHZWuB6qYyhsb2uu2sXWQ+aa86CjabXn4NDe8GIRnCNwv00HmvpMsrM+kK5GSrpaHhQfl737TfPhHO5QCDJ9C/0An46B3uWVw75017Toj0NO1kLLhZuviU3/lI0lYCzY3MRCvEHSHMZ6AQTIxKJXDHB7o2F6AtsCmcQtXx4sjEz9p6t+iGOlBy7vblTmXeg9XjvtphB1PS0ZcwmS0zRrgbYU+Kmvr1E0OCB2EukOEm3dPXctMhU7AxZwjhG+jzz10T/N4vJ4XIwauRAAAAAA'); diff --git a/docker/streamline-src/app/Models/InvestigationDeposit.php b/docker/streamline-src/app/Models/InvestigationDeposit.php deleted file mode 100755 index bd7c589f..00000000 --- a/docker/streamline-src/app/Models/InvestigationDeposit.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAwAEAAB+jprOAZlAtUc9m+c+Y348q6jVKZHnCXBrMNtgZemiC3wV+4uuqCgTuZKuE23TczEc8IOz1wd0EGlky3Hp7oU/NfCDZflusHIN0JcRNUzAoEhQat9VOYrklGIahQii5it8dZLwz4KOUPxKF6OVtFj663xlljAqNLFvFfNXfKTkFfiv6MNuIbBt0WbJCH8JAdPcplMTwJIw22I548eZdUk1o5LweBYE1ZbhUtFYzpHs1N2R58HbmxRxB3wHBkJr09p7rOqEg+WGHgJpu0AztgLZf6XUBIJJcQQxwI6GdnnwD/LWtY/tow1nhreWxoc9Pf9qbsEabSY58gnZO6POW8MLBhE606Sbu92vEgmhjG3tmYB2ofE9U6scQB8TpdVAGRAGEppGSmNgbRgpS6kXkRGW5KLf82yR1C2tWME0UlIP4RX1GdJxOatidoW1rIR7RSG0lvledVDNHrRQe8Wtef/Ga/rsx3xBax1v8ZYnuXw6RjurQi6HyR/HrPGeleWpyvuOwiS8XwzUCw1oNF4dm8xJN/LFX6HBeMMifssVHWZ0U8X9dEFS4BwKO10u1SkSkaWpKDZSUVI8NsWEKnvTHYf0AAAAA'); diff --git a/docker/streamline-src/app/Models/InvestigationNormalRange.php b/docker/streamline-src/app/Models/InvestigationNormalRange.php deleted file mode 100755 index f590827c..00000000 --- a/docker/streamline-src/app/Models/InvestigationNormalRange.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAACAIAADUNUz9agEp2XXMPo79KcqMO+s4jQ5E2WvA17zA6ZTeydLJ98G9ve2hDklc2b0VJjvthkPaMsYuXMBNnFTUl/awbqhoryCePw6azatHjvt/CpzVKClN2+4wtJFrExpuEVCn8ZNA7R91daa4+E+WKc/Xs58dYUXGyN1ADJtaYCfUlbye+K1AHUtun1E71Rr1rotLKJXRdBezFDGD2pPwiQfDt1g5sNnJe6YdJLzWQoKWFH1HGj3htJ8cme9/z3cqguYdoFi/d9PCip6u7+i0Lo1hf5jMOiDV2dddbGBmd10UimIUXv3RFg2UNRS+wf9EQ7oWtQaGrc9/I8qNpUh7gqDQcoHRR5SRIOt9NpPCTKMzv+VfaBo3QlC8ahR77boeLBKoUtUrYCDwNY0lSkUGaX90pZtA1QhJB2pAWdvUSDD2B6gJDsGcketXJtKR9lcpkz1AuLgaLFl48TKaspqBv4EVFfX4T1mZzw6ILUl8fihVPe+rxMCJqgt60Eq3kRrSpqmdiUlSFgNfDtFwcgBqiltbEOxqrzhOVNdtBqQQSf4oLqUvy3pY4+Aq1sJ1ttWcXqsVV4KSf0dEYMjPiZ87a2kMltaEAecidZGZwCk7P7FAck/5GTEYr0IXq+nCj2n1fN/0hwj2UUf7pZelzKTDwXM5iPmA0XlnVnwHGHW/rxYdmDkwiquYrGmsAAAAA'); diff --git a/docker/streamline-src/app/Models/InvestigationResultTemplate.php b/docker/streamline-src/app/Models/InvestigationResultTemplate.php deleted file mode 100755 index 31b601f9..00000000 --- a/docker/streamline-src/app/Models/InvestigationResultTemplate.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAACAIAAHc7DJGrZVqsTWkk068iitWsmFA4s6Ly7CJmDQukOjaEnXpVHPXsEJ++BmDn4xdLLwNlARR/hMYpg1xCnpTQ0ENu5ggLlCvDv+Ly/j7kxYOrSNf0XyL/aJeBJmvWZek0CqCY1ewj3OlAbD9uRhCUU0Of/yoV+J/fEoZfByGwAAmMa5RhDgXWW9F25eVaL3CqYY3mT+xy5Sa7YvBg7rMJ1YCFcCtAPfJUY/OxzstPa4m3M5hgo5RaeVacC+MpuTEQpKiuei8V41ydgNNR6PI62oda1h2J2hKStiZTIa9qn+c6YeR2BKa9EEYHQVyPHsaXbXzwkg6st2Ke+tDQhoeBpmBEF6F1WoIz2CWnf3DeOycHxbANAmAMVCWYYMomMEFh3l4x+i4YVKPbWcT17JCJBQ3aRcin3ERCJPIigSelVwxd3cOmj7KjqUsIxuWpDu9yTXRLo7ojDWXPI5urtIQCKMdLSvvzPK0CcUnlNJVZ9E1n0n0b+O2atDJyeoAEDCbNcEb15ppvOgA+kREGTOHttJP8zjFrvTOYbAHHxmh0B7l/WK/aDyjLrXHMes0VOJs0+v3YouZNi29n/TGTcLGVGtiLDV+b6gp98OKR9n58cGxg3G5in6/7YouuikobJbQ4ciLMAc6S5wO2taVPolshvEWL3GqE85YirrwcP6JeWAKTqOuG6y6PMu0AAAAA'); diff --git a/docker/streamline-src/app/Models/InvestigationResults.php b/docker/streamline-src/app/Models/InvestigationResults.php deleted file mode 100755 index 0004a31e..00000000 --- a/docker/streamline-src/app/Models/InvestigationResults.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAUAIAAKZWHbw/mj79rAI6YLimXkX7+gFyRNQXIYf41+fAPdwI1VXvTll89HvGuFRtPZAH/PhEWsR6XZSQ3++pEJNNOPq/je07dJ7Vv03ciMboFyPgiwusiqqjc4WYNS5HenOFHPEb0D8AISGKaK/jw5ApKKR5VfcONtVE8QLXorYGX1om6KQ5cLn9DvKMSTMnEMulkh0C0YBJvo9TirJApgkXQB7bp2FKnHicUrTSeo5h9KwEVj0FYbC077T0NRjzB42rFVibCb4GnlvWwlzIOYfSo0k1b26nepTlyqfLFtYhTNE4GKWNoV8E8Yp1EMkhXLwZsPyxR8FCJTVzG5OnZLVaus35DNPhIWAv42JlneD4tueVO2KnPBxhCn+K7pQ99oe14HnUFUQIqfxcKVwZfqw/YfL6sxZSgoD9PbS3k2ya9Nhjz6MnnQeS6vydBt1bIxVSKbXANlUYv7BhPtscTLykgsm2K5mvzQZar+aOX3Ih3znnh0RBZaAAaDILbMyIuxO5qs+Af2eAePy54HC+MeZBkDEk/sf6HB5oQeTJWad4sO9dDoOS4vt+GcKYqKk9bw5Hd8R5bzyEmSaVhzllZTl5QD2dKQ357LWyb6oVbBEAZi6aiauIuGV5ySb8OMBXwVntkJXnNkGGLJ9mqvBh5doBw+P8NyeMoxviJV/Jlvc8V9Syo3fqzuo9qg061ahHAejAg5xOcjkOZ2Km42HIs4L5F1nttDGZgkz+QC7q0uWBNe8z9uHzglMfPPK+mhww6oTy/d8AeFAmZ8qN4dD+opL5CskAAAAA'); diff --git a/docker/streamline-src/app/Models/InvestigationSpecialisedResult.php b/docker/streamline-src/app/Models/InvestigationSpecialisedResult.php deleted file mode 100755 index e06eb49e..00000000 --- a/docker/streamline-src/app/Models/InvestigationSpecialisedResult.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA0AEAADt78nvtDa+584jJRM2L4/YAwDDOvNs8iutgOtpyFhK0l2Xhgwew2L1KrB0bQ1DGP2d8hCaMjkQ2yCiay/cXdtE4TI9LsP+LZEKc1Vky1glL2cQcABx0BG1Zg+07FmquYqVWM63yMFNzhXlczgPlzjLsRDLe2pje6Uzd9EX7IWGtzOIe15qLRuFh/MZ4EK562NHQY5r9u4ufuuKH5FF35Z3uOzXqpyG3S2ABVc8t7HOVb0GGmg8plSGytRw5VKwQNty/jjNOffur6xS+MEk1OouV1JpGwIKZyyoS23WSLoiDzM0YFqYpRT5wc5puj0Rp4Wklf7zu4gaEoyphrsLH6QYazs/gR7qKt+1hteF9gLtcpYMBxUokKYyZUvr3OaAzw+XMdZrTjcnugVvsmdZergZ5ABzt8akyltKUhuSOB+vGJ81+hxxVBKDlbYRhNs4D+0fCP6anKJy1pfEYt3x9KSXuCl2GkPMqqyWDckKlUefF52olrpvFZqs4mZwPTh+F9aII830yok+tIrqG2mJcUKcakndguvAcOwWbLbiIHlvbIl/KKqKVqmyUpNDPspZGqsCcPglYDTLy1mD78x/oFhP0XqJEXayVayYBZaJvsK2VAAAAAA=='); diff --git a/docker/streamline-src/app/Models/InvestigationSpecialisedVariable.php b/docker/streamline-src/app/Models/InvestigationSpecialisedVariable.php deleted file mode 100755 index e148acdd..00000000 --- a/docker/streamline-src/app/Models/InvestigationSpecialisedVariable.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA4AEAAMmGCuHI1xzA5qHsyE3Ddl4h+KUaZSdKIYnnHJbesObk3IrQg0xwVkNPr7ljlmRQJuBHH5I7880PLmwVeovR5qsj3dCl2DI2Zljcz40BwQ+elBAceBRLvGz5FbzyPTt33z+sjH87qDc9PTFEVv6DduQKmmSxPMZPeUd1E2pvSNaVi+mGIEXqlBvHxVnkITOvCQ0GFARs5I0QQeURPxaHQ5utGFL4fPXwMCuA29kmskMvnk+IUJXLyasKbiGCWi/tQsdyqMHqIFDTGkSehFJmytbWPEln+4aCFjmr6OLHbDHSk2ic/1/3Bvk4iF54jYh3TXpW+690BJdlkv8G5c2XglmNbIaRMgiqx7suYu+bpU3fmwpSCq4ivyo1y3UqvQxABeV0EbHowRF1Yl8sFIrCrJUFMo+1xP6Le5b7ZkkgcTCV93LWn2k3bbEI2pxxqASg72qLojDlJqfE6/1nqW9yuZwih235SFakb+EtSIShizDwkC095G+Y3luU9ytKXZx9L74O25Nht/1d9B/DBsz9uqet7un/pnYtQ72QJb8hNP6ENj4reQL/np7tRJQOHt2O20bdiUViYbZlPhv+LaGth3ntOPsrNEoKYD8oCdVx29bWK1YmkhKCNr+SXQjo0FgCMwAAAAA='); diff --git a/docker/streamline-src/app/Models/InvestigationSuperCategory.php b/docker/streamline-src/app/Models/InvestigationSuperCategory.php deleted file mode 100755 index 3c2a4d90..00000000 --- a/docker/streamline-src/app/Models/InvestigationSuperCategory.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAWAIAANoqd5I7Rw/y2XMQPLi3acrg2go0aPqp0ssHmmiT9YgPYG1eUP6FhrWvoCht6WfjWvQSnilifEoAKGj2kA91XLkwX0E40RBu1s3eavBo/uEu4wtEo9PwGwcQDja3OOln8zn6B7Lg0KpdtKssbpB5BvbliRL+CJWTwlehxR0PUzfpqA00X7CSq3lTtDt72TqJBEOPQv6zkuC07YmxwQgnuXzx5LY6+cUWU7ZV0Elypbq7eDbSeLSabCSMTfBqe+z33zvF7UYXOo+APCY92HMvgdefB91lQsqjCVgxWQUUeISEWK6zbXkYKcq0ITW7kRSivohIufn+gVjM6aTbLktwSnRgA0bCh24WSWIWxJm5ytnyfsxH3/jnvbvlSGNNAbtyt1rOo9hb9MPieWF/+1eNEhZQcgC/w0GPdo25cC5rj++yrhAEfv8Fo4jfuDhpE8rpOhZ8pffwYTr7YfcyIA+gLx4fn1MIKAHMeQiMMaaFoxdqORFE9WTF1rdCQSsCQYWD5LZZHQbGajK7240rvMybtaOunOygQCN6+vViC4IVIB6duw48F3H9baDDUD1MgtDajpUOgLKVxg8kxHfO/M1mP1+Ee1vmLrZhKkgWWQ9ybyEPUKV2xhCfMBC5aE3m6wwRVBcFTrbDu4ao4EtinsHaXwVyx3EV0wLOq2gt4oRI5UjCIJ9rsNPidvnzFbKt1ad1Pk1ywSIxR8Y3GRkw7R6GCLeW++L/7xCA6vLNiWKqT3myI/Gn9PDBtSCr3biCWIqaCXxlICg1OQOpt4kU4PiFTLWWbBCzJrToyQAAAAA='); diff --git a/docker/streamline-src/app/Models/InvestigationTestCode.php b/docker/streamline-src/app/Models/InvestigationTestCode.php deleted file mode 100755 index 30a68382..00000000 --- a/docker/streamline-src/app/Models/InvestigationTestCode.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAACAIAAGDYKJih+YfrQ9F2GfErd4KtvSF/SwjYT+TIFN8Q/YzfqQLn/GtOk/o4BV8qHPPsjvTxsG61QaXfBF/y8tO0Dz6FLTRalwPi+Z6Uq4jZLXzl7rzPIBdlhSucEooow9mg2K9JU+3rrLHhM7CDHTmLqg5nvIe9Fs9CAR7zAD5rRtIB6cA6y1ZR3ua2XS2UOvc7AmAdc5yyh3kbBXqeHx6ESQq+hpOOZf52eHth/p+kdRo0CCySxGyN+NdQXiKxaxQn1LCNGPgWohVzdKjLLqLpX6tAB9aoQ7UZumRHVIWbz2gB+kVLMUizp9T0vlXui9x2EUk6lpHL1gDfrqw3aoj/y1deUDCm6Z+p2/BpkrIEbffbBv2BKl60MU/IFNE57niUMHl2gCLANpZ1yFYWiw0kPUaKzBFb/dyH3nGoZnQ/xJ9/YkITzpFAiFQdeq4KYDo6bf2yfhte7j000qx18B90ngo1KcXZu829drU7T6KHDKE3G9cdxnA7sT5q2TazPeJafOI8NZkKV2nsvDiB7yiuWem+VRvCjrCWJRb+I0jiAenmvcv+1Lt8QJa7w5AypbRHk36IPAQKfbY+3UUlahATwlc7/Kh9odoGpsF0bWlFdEJl8Cr3c5JOCh1b+i3HdA/MIYXfRh1LRxWsTFCQdiqn3Cvb0Y1nRnwrt0KogBkvKTZMHJpaBaQmnqYAAAAA'); diff --git a/docker/streamline-src/app/Models/InvoicePayment.php b/docker/streamline-src/app/Models/InvoicePayment.php deleted file mode 100755 index 3162720f..00000000 --- a/docker/streamline-src/app/Models/InvoicePayment.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAACAIAAGXXfR+Ca08oZy4lRKmnPDT3kiGnbjOTYx8oYeKIVR636lqBaQZ/pwwmRWoxsgT0zFiifHcUvpkqGUKwnCr4yrXclC0/TJeXWrXlGGtSATBgwc7h4g6OzaQnx4bDLdI25130Q1UA0W/h1GuYq4ObQA4mqrRLXrmV8xGzB46RSrflTpfzBGDw9mXmAnW9vz1/Azb1SUAyAuGUIIURoy3Fx/sDoqyOBJ3R8Pp4t3iHLsQ3/M35Ji/Bzauw30O2OfMe8v+mDaRFd4ogbq9burm1fM/6se1qIQjsbmq+DJkpeRsRFANgaTe8HgSdpQZUKG/ZT8l1z988yd1Y4ztUTxfkKPMd+EgpVcKajhojsGZPNezqGWasZbA//P57f8G4Z81ZUhcUUweRK7O+FfmM/iaqahCqMUPLB131RVVWo6ikYgDxsSkhoV3mSEeSn6sJ2zqT89NDr3GWFy6PRsvgCCbKH0PTtVSW0msPdTvrXjeYhN+gBORennSshoBhGNjBAI3ZLeHlnn4caCHInjKK21yWLvHQLxSTEHaOBuqJPXAGRNyBlIoE8Z7OWdxwZ/TEIQbyMmDiXow90pIjK+KanJFBGxlPC1XpQZMTUjTLXk1/texxhLfy0vaoomrK/ntvVcB5DkJx+aVC8DgMHQY9JzA3IrsqULK40iHJ9RhohbuLJ7lEKLb4d1KUMZ0AAAAA'); diff --git a/docker/streamline-src/app/Models/InvoicePaymentRecord.php b/docker/streamline-src/app/Models/InvoicePaymentRecord.php deleted file mode 100644 index c188de70..00000000 --- a/docker/streamline-src/app/Models/InvoicePaymentRecord.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAEAIAAGNnq26l9PfGCurfGVeuN6itJh9ipe0MhKddN5AdcG4AVlqV3uMTYvtp9G9ZGMqyG2lwfWddzB6Tl8om10DM+p3EHs9RgKG9a9lMBXZGIYS2qmgxXhjCqKRjndS9LGrJp9bLiY3KYWflWolv1i4qkX+KJyi5JU2qaEl2WgFbNHyrwKkLNTnVWnHJfCJ3s4sbSRcM7SpuZPwpl/iCvvzYIaXOCIWE1a+SctiPp9NzAxsW0EQaj3M70d9RpEKBQtBCDGs/vvIcFN7DYWAERgXWdBP5jOiygXj9WpMkrq5+Ham0F3N1m7MNPiTdWyIPyic+X6SvndOoapwBzBt6D23AUpUuEMHINQq+WmgXTfYY9oRYpxr7Xdkk5dfikD8RObZsRF629FC02ZpQZ84uZStOkgiUE9rD5SRJLFZ3Db95pCAWLPNOQVxy/d3lt8EoyfwBwo4Q2oB+GY9ueiZm08l8DyVHVuQKi5gNYsn0ayX85Pn38ymgdb7Mct09vN0riSo/Mw2Q8ZAdyD2nNT88Nk0618aGSOBd8s9xZeEfSkHY/nMqewlqKRrxQMUBlHyg2hAhc/ustLJKuE1eCzj6dJKe0wbfMPla2ijr98OMAAE6+X8cQn7Och3ZujAx5V6fbFptnSmcXu+fxLEyUz/KcBea4NNTw/r8MUu9mqmRjPCA5ci/P9v4dxlwRo1+OpNfAdRZKgAAAAA='); diff --git a/docker/streamline-src/app/Models/ItemBatchWatcher.php b/docker/streamline-src/app/Models/ItemBatchWatcher.php deleted file mode 100644 index ac8a4633..00000000 --- a/docker/streamline-src/app/Models/ItemBatchWatcher.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAoAQAAGNwYnDXtoFRrUd5/Zan8F/JH14O/LE3jNq6hg90FOuuvh2T0jfhoM4JErd/8Q8JmC4XwGDtNxGQBJDXAQuOvIotUGi6AUjKVxgoQsgdqoFlyIn8Qe60uEUiXaFoTWGM+h4ux7m12Nv7oFH3FRpzW7avYAhQ1TbV5qsTuigw61yZZ5ge/+7BOHn23ft1TAxG9ovpAMN4Oc4RQyAJADMqoEzPohF//KUjhKP62rTDXW77tBK8l7IGjUxslke1CH8nY+cJ0pVKZo72vLMqx2Xu0PMOPK3Ib2Cu1CiTjd2AOGj2QNC3p9d+N2UYBOvXficmuuiBVMXGXUSQV0xSk22nS2EGL2ayB+cVxaVoEOLfKxPd7NkI7SahdAKUFIRGdwGyCj7jPAvha3ZEwaWqQPoMnTz4tEa419SZdxlCyTxCyZIT+kuyHJSnPQogdEtZqTV9jsL4lKzEiooL4/SV+jQhEwlaMFoP7QMndOmnu47ZCCA9XdQkEneFe5InN7/mNPGucpeAZ0ZrEBif9nWZVB6F+6q4B1xOilLqb3l4k4b+Vi5vEAKiZ/w+qC2nTwyJtAQKL484QMQVz/xWCrdkpUDI827/UO7sblNoXWII+6JO7mNt9CMIaAT8HkdN+mzlAM24FWuU1dQ0UDQ6kH/nH2VBRkMA+IzoIJvVkvfhChoq1mLchGXHQVT9d0880TTQYGEI7fgIF3yyXV+nZEZkRGPqV4yl3OCEhJUUbeSHw1GJbbOqnOSlNLoezbRFSeW/GGCuc2Wo9J6J34CWzCfx6Of55C9SAFvP99q1X5ic4ybybEbBGFP4hW5AicykXx/D2oxUkxkwVhgCUy0oAaPoSlV0Pit+In2G6gjKQ4pCtZYAxdSnx6ZluvbdgjlMKb2riErnKra5oU2rmpIYjCGa1WqYjPvBPG9YlL6AqlaV0QJW3WziEWWi8nfQRqvDEd1OjZiu//AcgvFQRM3BPlcCkjUusJndRAJskm7I911AYeLNyjeqogtxClYWtLwVQdZJp7Sge7ioAiWqEZXyk4ymD8gwg9bekR6FjpfW8a0NocmXoIOxau/z7uRCDj6w5ExN2uSQ6NYnz0uRh4twrfN48tEatlO/gl0b5XLMzDduq/vaaaof0e7oMjczARlFSdBt5zKjHFSv4iIEsvalFQis6h7YVlb0mlObhjGQuPRuKcpIH6qPPjuXS6Wt/Cr0LOrfmGeTyvHiwikR4hv9jx5EP9pZmUhDsLIpoAPwmaqMPVO8Kb6fo3wVBsT45xKcX3PkrzB+jppu8tlxbZMdBKKThWHjENGsLNvjIqPW9Yc6KseFQR6vmYvjP6XOuaZkY+kIYaBd2+wmP8wtQ+jbNnLweUR0Wd653Ybx6xioTwOAomC1zZdGJseXURuuvYJKWZRp334LMSFN9dJGcYaU2sj8bshqEiSvx12ho/W/mEjraFt3kEZLeiuJ3dJ5B2ThkXGxqoYVKLtl3R9VM7pt1cqa4i8c1TtEL/eUNDj3jZzO0r7zzMIMOkNxHfaIo/FY+Ps5gkXf8k0YkhiiESKP9c/sdPvGDs1c5ZDwXorz8c5zOGOH/xweAAAAAA=='); diff --git a/docker/streamline-src/app/Models/IvFluid.php b/docker/streamline-src/app/Models/IvFluid.php deleted file mode 100755 index 9d69bd0d..00000000 --- a/docker/streamline-src/app/Models/IvFluid.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAAAIAANKCRV9mv8ouLLDjv2qO2xJz5KBiOB2dy5Z3nnClOJCgm8R4nIqMfkIN/hCeXz0TjUUpR8GwQHoYyLqksxNn5pxsabGdvvpA7+uq9TtU5j3KAHTfEdJ67KDEC+JQ8dt4wmbI/qLwUDa4a1gIWeUU+by3QyQQH+TNDcPxWLX33Im1Q646UK4CDNaUdFZ6tqHGsFSO6PR3NjM58JmDE+VFzH6ENdqqZSacguYp5HUKcBzjF4N9E465H5J8F9VbeR1aEAfdRig8j/Sy2Cf7BfBp6edB81iWHpkFrGn5np5Sk3F6R5XaVg/fc8RIBAamZ2Su4y7pJfj5y+x9tb9kyc0f2805Y4iCacCWQQa4n2LuOw4XL3YAv1D/NQezIqOhtPduOBGaXGhYCmqGbSfbT1LcN7AZnVMqQm64xCnCOy6MVzohQwvScgauLjVemQ37Evx4kaD9xsAgo/r0Wv9/BWNMxIfhJv1nd6l8pIXsw5LwN5r631H3xdbT4ZXunbjeWWSjCkbvYABgZguFcyoTbjDjpVBi6T60FsIJBmbZwLzaMCm8BuPzBxnTQk3Zu6lNjZeaA6tTFkM3mGGDmLRVtzpIV2bdXGpMkS3fEB04D+RVk4fnPPDBI2odACS18xWHXXwEXDCQjqclRO8Ea62ShdxcWWyP9tcCavTRO1qXO3Zfw4NnAAAAAA=='); diff --git a/docker/streamline-src/app/Models/Journal.php b/docker/streamline-src/app/Models/Journal.php deleted file mode 100755 index e9ba1800..00000000 --- a/docker/streamline-src/app/Models/Journal.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA6AEAANTiaM+wIQ1k9eCYdW5ShNjIjE7lhQJylli61Elw9rEmN8kHCRjaIIq6BFRnY2V4Sjgoav6yWJCNBGw0hBJppuYSMX9aP63jbr254cc8ZFIeLG+FTXUWpBpimpfXDDC4pF9nH2vlFz45aBQIazBD0BlFuNed9be+WIOsKr28mWpiw4CQxCzRvaHxFL4Iz48QmrdBzwaUPs3fyxg+jgSiKoH4uPoUtsV7QHn3OZJPcIp3fadew9hAiNtfGcqBBNYqi+U3PD/9hpA/4ef29o1gLwOPXcBlZvZQVZ3I9gIyIsfmFyc5cR16+VMF2aVmIBfEv0Z/HA6z9l1t6DUtXI01QEeHPZu9gqeCGWXIPRiMVp63+TelArDnylNbaNH0FyJD9NoyTT3pxKdShGpSIBTMCzE7vdLgTNHBUinN7rv4Y5qc/HqBcFf0Y3J1BE8eURyOW1JwGdfAZJtZ8y2L8w6Up85Q908BMjNkXW/KaNtuM7mJvkAwsJuxxsEn/x+B2Gou7a5IKnpagu/WlDUPodFokSRSoPrGkbyQus2ZhjC6Lal1/IyeCBz/46DIjMKyi+KgEbFEhF9Ev7A2eu5MOrFfAGEAjQ9fI5zA4JhLlMIVGP2/B7y51zomOpmAINB1vO54hvHyMqFZSzWDAAAAAA=='); diff --git a/docker/streamline-src/app/Models/Lab.php b/docker/streamline-src/app/Models/Lab.php deleted file mode 100755 index 30a64210..00000000 --- a/docker/streamline-src/app/Models/Lab.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAuAMAADlq3h6hH0hTBl54K87TfD9LvH8y4LDBre+qg3XPsEy2/QOcw3D2eK8eyBKuDBk+DhstZ+YwrCxUpEkgaP+nfDxTzwvLk8MHNBOvnhBlDQsz7TcAAMwK5aO5HKvZIW5eJ89OqFL/Le4X3oN3nBjsz0k6a8W0c3CAYG3deVuWbVsIT4+PKkDGLmx11WxUf8VX9suEZDU0dnuOVCqchtIAaiPrFU2IqngPROBcfvv7opESGVC7LBLHMgUP6LCYd0TBMVOdJqF3yNva6EeRf7s9K+0YMydCyqaPps+ptGZEyF2BXRMh0yIjuMCQzipZoRUjNXdnBMeh18v5cV9ZdrO46z/zR3hn5Vtiqxxlc+JK70lLYtbU8ieVjZWXuXi+oXFwgxYO5R07qKGnPt7tovO2aSZrFK5igroajbw50O3av6I0DOzAbIm55V+vNjVGkrwVijQAG1aadxi1rKQbYJeMBXziM4UgZbPsgYPRZIEdZPjaOoa4k8euJXdejwE5N+wp1CVX8YNIvcG1kHEtapj9fidzmNkCUUoMjH3d5kIX73X4FoJGfmYgTeWpZPb41gWKCdkmz4BTLsi0lzGYWPjlxMcv5hz3924hQIEMMhW46C7O+KJW9vWhnDsyRpCCtWtzkyIR5Jakw09sFGTKFNx19tpVJumdTKz28RX14BSVVcAD8PouNAnOGUwfhlGeBFWXRfp/1clF0PMWoolPNED0A2Ko/1ktAurllvmfUs8920C1a/ZY6/MYnLnR149T4mSgneB8mgbKWeZqn9ctBPHF34lJOQlf03tUNt3lC3ANiTQRdqD8wbgkf26AUlmAFn0oIxL634WfI/veMilEMqVZ4agGfXjPHJIkHB2mPk0SMX0W2JB7uQwkfDJF0X0/046wjQFXHbWzmJURJU/sYzJ3BM0YlXGqxHcOv7fZZa+4z6HaZu1iSyqIoc88iFaPQqys/eY/8v+NV3WNLGFaUBKWX0QWYtIAro0axLoJjvxrcOtDxoX6u0bVlIBbKpzUQhSEGTmjSIhwSbv7BWhpHPy7RaZmRn53aiYyQ9azlet4448aA1Bu8M0auVXAcgB3dMLHewrgpIqyl1ftnJoa1t7R3sNnzXTTSUokITsdCND9uHChJAlRms5jfI5GR07ZC/HFcDbWW8cQPdYAmrWnoqsmqu+inEfqXXUOhX8kpUwWiUKaAIN0bAgMyMNhKmmNE5m0Hv4sZJBQBvi1/xr/ozjLynWu8Xwuph6C5C146PmT2erky1Dc6wh0jJcAAAAA'); diff --git a/docker/streamline-src/app/Models/LabForm.php b/docker/streamline-src/app/Models/LabForm.php deleted file mode 100755 index df55503c..00000000 --- a/docker/streamline-src/app/Models/LabForm.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAyAEAAGltGWhEzfujDnvAmUFPpJlkkHcc6fHu4ZoyYmGOVqHy2Hy8ZMJx8EX3kT/nz6S3kbv75lfO+rgQ1+64CH3wgH8hrWD294DGSCurmltTptgUnRVel2gjGaSdgwRIF1xaOA6cPiC2g988G1qMT8aEwt6yorlzdAk7JGNVbKK1qIDtUI/IodUOE514lnbqPoOuxGVAUh9/iNPQpMXRZPLI2XOexZvir0L44ygE8wUAmWe/+A9Aylf5sfVIPJq2j9TbEQKeyDVeX3GhwHd4V+8zxAuPNMgNYhi5VuS7RrR227PC0pldxzBW//crbHmGQTt3A/9lR63m6B1hfyN/jTjpCiBMHyHvMjcNYdfY29gBRme7mHN/gmTmWL8mxOBaKZvWm4l6gYe6vyPwYm/d2Xuq6Kq/B6GXRntpTo22RNaG+TqYSuLLRlJtf5y/82zGbvukpHC69+0GcCJAjZgTSdhLzmhzDvit/H5vUPQ9hvQ4yDbvB8WrDEchMJcLxxvMlE8xaBO6MJWr8EwdrJTJqrezDGqEXSuSdi7S8nt3X9soqSRyTmnhgbv2Z5SxgLhONRywoTsX6cAQ77qg+bXB2PDyU4kOwFgVi8fsiAAAAAA='); diff --git a/docker/streamline-src/app/Models/LabInstrument.php b/docker/streamline-src/app/Models/LabInstrument.php deleted file mode 100755 index 1380273c..00000000 --- a/docker/streamline-src/app/Models/LabInstrument.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA+AEAAOrl7S+o6IkJuqjgPUHPjIOJ7jA63O/mEHxujCsSFuRCTBHK78ymEoDABfnE9Y8FhmO/l0zyaYqjwFhkhY/0Lqhf3sm9vnbqgbu8CUaijOLNMoUzHbi8/n0dkCjYlEQtwI4s6VGiQO0uZiohPONStEY09peAcmqkQDHVWbdnmFg0XKUbUX0FJiXbfm3QS24C4oStRx0BAyek1F/aXO8KgqYevlWZ8ywronSvi9dmKbrNVyUXgGeMtwjnTp9ZJoxu0Zi7KpxHJiFeXLJU7SZjWE7LKQhU7Qvmf9UR2aqr0vJ1XmCI/5PlDCZbV5u6KOro10Mrps9sERN+Xid9itbUzYmUZnfXqyWXtVjZMzYPFisvVVMv+wG9uRKtPpOjbdr6nIqOYdh78Duppg3UX6k8j3R1nh3jhqzvABmMQ9j5rb9UHdmhk9gWeM+DB2sdmmmQ7fy3NH0xfhLybaP8YQOLTkG7y0pyyyjC2/V9z+fut/KolJODKz8y2TgmITBSUdEcI3+984NhqSE9hsDuLoPs3U2MA6gg0P9kHuiDGuShC41DQ5t6q4di0FswqAZD7HLb8mC6GUxoGmMGI9IcPSimDxr459YK9VtuzpOVG3sPhbvmS6eSeXFt+UirxLXCB2Uqv9Z5B4yfSuWkuPqcHQ6mXLpsIB4HPMYS2wAAAAA='); diff --git a/docker/streamline-src/app/Models/LabMachineRestart.php b/docker/streamline-src/app/Models/LabMachineRestart.php deleted file mode 100755 index 08c28ae3..00000000 --- a/docker/streamline-src/app/Models/LabMachineRestart.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAmAEAAEfJTqRc1GbzhiyL5okppv8ihyxds7+Qf+gidSfGObU5mKlk0PVJMAGxwS9AE50YZI7Ej5a+U7cvSyiRVePYtUlE8tMWZnRibDvcslWkY33Lac54zJFmeAmgrgzspS4NPNJf7udVOgWa9ykYryu8LXlhjk4EkiEGmw4+t710rf+7CnvoUved+yo4MkeOfJ/Xo1zUL7Sg0Z8olQh6/H1HU6/HsFH+N89Z0/ciBltVq4BXZR60eL0D5UHTvFfKZjwqWCo5/B4nBDMGJ/amt0pPkfHzzJWPM+p4rtmRNrC+Wk30m5kdku+lG1C1fG03foW7jpvTWfkAsud5LFKCdff7oGE6qwlSmwZGyPOUvQjgcvjFw6FOkusPOyQ/B4pQtbac8dFHNGAC/57/5zMSxhd9ODk7/sJLvDx3HQOJQHmojGdtRb5XyyVdSnkIGbkHNrtWFCLuANQiuXlC9yKjNdDnBkA2XQluGKNpRKCpPNLQCBe6/vhmnwMBv5grqY0P4cyKKWqKcrtTiqthWD7oE8EWHA6QH4AVIojHlgAAAAA='); diff --git a/docker/streamline-src/app/Models/LabMachineResult.php b/docker/streamline-src/app/Models/LabMachineResult.php deleted file mode 100755 index e91561c8..00000000 --- a/docker/streamline-src/app/Models/LabMachineResult.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA6AEAAKkKSdNb9W0x38cxQprzoonIfbDoKKX4mtgpkFe3ZSseje3uRucyMtq6ry6wALlk/pCH/k2YDVZWFyyle/uW1HpfqiXffVT4gkttcrlWYJvkEfPiRPlz8UFxgggdz4KLx0NZHLqyi/Nsaw5L9MuNfW8JydhN0wVa6HIKa/c0/m3kgC9lyEvoT1WyzFL0sbrusECD1LoFXRr5mXqWi/A4smJkJBPpZ75vNDffu1ikTHXSYnnR1LXNBA8emcS7Q6YvHJRwxw0EMDeqGvD6mySitNyYKU40mxi43J5rd+hWlPvf8c504NW+36VUJDMHFIw0CTbWQMRIqiTKYgXn+HHkfF070TmXrM1gso+rA/5c91/xer3pbKsy3KJNN/NQagYbvwMfUF3VbbzRcULfqyATAxIXjvKUdUv0+/vZBJtxNsc4e4GjRGh0wl8QEY0eru9QPTEQxireGQQLMzvlx5BHlZBZxe0D0Qh5YjAkJQqkVpXXm/dg0O/Xm+3Atzc6Q+2dRjO+quR+78eQqWyVQZ0mcuLOCVFvGvQ3AMFbhjBhWoqDZV7bB1Zx86aVLsr+z07FIfIxZBFtG707/W8IivK0EjevMfGUuxKThhesAG/PiF8u7s+bJSrO49Yf4hmWZnlko0Dd5LpVztsaAAAAAA=='); diff --git a/docker/streamline-src/app/Models/LabUsageListing.php b/docker/streamline-src/app/Models/LabUsageListing.php deleted file mode 100755 index f54a7638..00000000 --- a/docker/streamline-src/app/Models/LabUsageListing.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA0AEAADqg54+N9NDUHjtR7V7FV6MvbXYazdolDjEBZHz8CsIWobGuFXK7T40YuwzmuQWOYzWRsCfPBqHqDtodJxhekgPav8PkfuL6DubepTIEAaDdAvkuz01USmciMV5CReH11l1O9bx61mbOEubCIpo4cIuCK2dXPez5bYRlXhMLpBAVp8szafOgP/n2zf0cwBJvYdktEdh2AWTtzOQDZ/3VupVP0gp/h0+DAkAmb9T/D6EXdjdvxrTVCSH6A4eKVoDK895oukcAGpG8p7SwU2KDRhxwYgwxoU6xXCU/V1iQxjxoypjpUdI0WzninoTaEai4lOc4QvjqPlmI5DtR21kj9KxZkD7uri6oZYpRgGpO4SpwNZMepCHKcPJkVv6YXVuEVPirz9xRXNbs6CX54sLh2Pl0KbHcNOhzXHwRgBD5AzdoFohEusDcnzXY7NvIrKzgR3F4fLx93WKBjJGW2MT+22lEPExSpUmWWWPv8JrOFFKO67rv4FznfN5Sfka0UXoS5q9D5X5UWdD5RSAn+QFxaDBmr5b7l1HkkqOf3QBwU4cFzKpU5BFX+Uz9LfcigBk7V9vrW8zVO2sMH4ObLp2yXe/TPGhwcJOACROe6Z9zKc9UAAAAAA=='); diff --git a/docker/streamline-src/app/Models/LaboratorySpecimen.php b/docker/streamline-src/app/Models/LaboratorySpecimen.php deleted file mode 100755 index 166ae35b..00000000 --- a/docker/streamline-src/app/Models/LaboratorySpecimen.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAEAIAAFoXlPEUS9tmAclFCOwgdC6GOJqzWhb25HE6lWKYmSWLHg1SNXoukn3nm88ZwgVRcMgzU0aWFMZCi62eA+5hUWsgo/G2DTU+Je5dSGRZKoY7TZMPxXgWFtYWGC6PwLk+XsexJIeElDsn4m7VXtJ1i9/dCIQjOqBQ9GmDdhe5reRokI0SLilAFu9lI7dxnSsPZspQia8XMXTY0/rc9T5+/+V+wQi8SXamOwDeYPytSOKXcMVZ95A6vWrWPPHu2RFIlaXq17fvybq1Hc/BstpOaQ1hbk6D14a2x+HkcGm3rsX/C/WxFO4oYlbq/HSgn1gIchAYaNmbaaHYq8G/zt/xTEgK26sY97oATS13wGA85pR+YanBWm8CQEJJ51vB9TeAInZdt24qUh2Ut8gurRCkCiaJZECfOQRN2YqocBpFyL5eMbZX44WsOvXPz8Z5gtcCPB/+3MU+lellihzznX97ba1yfyyV6RgHP1KWu2tyMeK8H1JaoKppLUdY3W4TTpb9TdmpphtXaC+Xf2UlBDTO9UiJtmcw3Z+HVyF++Pd0IrEBQqxQo4fzju7Wh85X4j6+XuwzpBmRg74f6AhFm7YDpWgPkpm68uX9/6iXrAUTzHZEpxLUt4LP+ZpAQtDCQfqa/RynIHjOtaBzuO51wfufWQed/bx6dCf/QwQBCAwv8NzENJd4OKdfpUQL7BJ2MwXf2AAAAAA='); diff --git a/docker/streamline-src/app/Models/LicenceCouncil.php b/docker/streamline-src/app/Models/LicenceCouncil.php deleted file mode 100755 index df15d387..00000000 --- a/docker/streamline-src/app/Models/LicenceCouncil.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAGAIAABxw1xxLoWByS9PwR9GgFIG//WMxMAflM/eoxSeAgnF4+YBij1T3ky6TRumFuHBO7Q7x09ErowI4YUdeDwRoK22IlWZFaP3MmntsABDLgOEzxxci2ZRu22YcckL27qKTUdME++jHmp8kYgXGg7Z1whvAuVA167HK1buxgMpUWBHIHyWq7RzKcBPZlWSikTK+mxRWoJpyB6t5JJ121WfUlv403n5pqgMSYqmpPOXPwTbRfMHUWcXYPy9z3NYhtaD1daxG4Cu0km6v2QFG7izdREl8e9AgNUZt+2zGX2fu9DVZJcA4alkjzdhG08mOs3oRqj5TJvI+FHFEGdKWc8KGq/kCr6bqCodz1r5n4NnCb1n625SizPOIeN7tkbiRqaBrj4itNbsl1mM+5/tcXUeCK3uvVft9VqGuUGeOClQb+07/c6LVPh1xtzWUlzmikKhZcETAcDLnF+PZykITgaI1E+FH06qofRlmS2+RDpoBCFw7qdyhgT8hZRWzIxhYY4r6GQR8Melz9s2Le/M8+VlZPP/28KzNchM6H68U/XNkbx/9E+SYHuAg4yTRSa2+3QGx4rZfdPttPxUT7PD6QW4SUbWv0utBXRruidNgmauMHsYGhfB9O6Bh7IbfO8fOkVfEQ54vTwcP1NDk7Hv/TWgPH16GOFIj+GJEqFMvAJZCPjxr4712wIw4CMqf4EKkTQkgSpamFgNh8x1oAAAAAA=='); diff --git a/docker/streamline-src/app/Models/LocationOfDelivery.php b/docker/streamline-src/app/Models/LocationOfDelivery.php deleted file mode 100755 index 4f5e400f..00000000 --- a/docker/streamline-src/app/Models/LocationOfDelivery.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAOAIAAHCyPeErBFEQfcz/wX+Dt3xIcnQYSX0g+4pAYfHeyHMwOB2ZYfrrj7rVyGJVBFzMF182I1EUh7HXWCJcWXqH6zq9AjWLpFNfy4oqjDOj0xE5ljykmaredBmtI5vNBG9gCqihPVwYup3NK00G+SZnhFHPIMq8WbtVmdEj3xK0rC1T06bb6k05h5F7+pre1XpK4fF9cropMooWRHK/g8jx2xJIHs4FPSgxSZsSTubi709wWl2VMwtvpoxyFZQ5HhcDxSCjoJZBVS+j2Pf6uoJC8d0LKO2nUWqmwmfvGX937TyWVh9OBUrNKnKEzzsnXaMhSOcqmXZKpvOUrpIXmQ8WhGLnzK8QUmgVGm+2njcRCFxLphKAaCXhA/9eA60wpcjwsLHckOOsIocjKOSJhLueZY9+U41PhDont1nhqtTJZLilz3jRTYC7SGqnzga1feoRisxPfodhMHMpko2x4dr2fVYg9sUbhBAVE3PFAiaYJOs31aHZY52eJHT/lmWoVY6k6iMjiN2e66xeNMYkWRhhrWUXbhXM/wRzV5mVvPcCxXRBLzhcMQ1paaL8PBEc+ptRsr6zzgdAaoDzigfHhTN1gwPH3gFuEtkiLmZK4LxdDFzwtld3/d1BFLTiDrsWQdD1G6xRSpxdZo4WWV04BJmx5uZa/QmUh/LFTybnQnxgpXhn7OQgeqU1v5VWufIzkY63FyDJDpm2V1sqEQO8nOMq//hOfjltTbiO3/HDgb14mfiO2fsQAEmu+NUAAAAA'); diff --git a/docker/streamline-src/app/Models/MaritalStatus.php b/docker/streamline-src/app/Models/MaritalStatus.php deleted file mode 100755 index 2d3b6204..00000000 --- a/docker/streamline-src/app/Models/MaritalStatus.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAACAIAANTwvoJWg1xycpzGEhFgSCMF3YvKutziYpkCr1hWYvGZ6FTZrQ3nXDqYH3pvXe35ZGIW6aj5sfMC4hRp+Nzj97c4l0jr9UxrlgLTD5bd8aFv1l6L5aFhe20uinKKwb7DoI2u3Q/ggYSyl7fGfP5JqOtjkGCjsvadflqvPYUkoI3Yp4QCTD1EEyit4ey15P69K8/+GyA1Tz9R+C0Xy5wne+KHexG3ukvq7kPSBQXX+9PfHTI/WP2fDu01LtEjDtqc+KmYn2haU27MZdV8rkEd6aCXkCN9mqI2dDnr6Bj9xBdQVwV1dBfhcP0CsiFBlskejGeDYt2YlCRkzJFxqBmQl00pq9dA91lcdpragFmg747YZAJnqT1KgsD5KxwZPQ3Q8whOgDOV+h9dD115FINN0g/1MuijFuhaJie75UZDdbgkcGWgCrZTPExs66/J2p3rOj0igI+ZW5mMG4gp2h+oGmPxg0nX5yomcUdSjj8nahiqdpXmsNKhi86bfDVFC5DN1/tTp1taMIfUtLMITh88/Fit5rpKhz1KCDBR7BaCTs/LuEn3043x6Jld2BeKnonl6tUtDh0h1hkNow6BsDSrdI8bn6TLpq+9aI7VOR8SXmlp+S4YHg/YrkNZFHkE4/kqAKLMYwZkNHsSP32O6H6joiZA7jleBUw51smWKYA84DzXlms6zPBNj4gAAAAA'); diff --git a/docker/streamline-src/app/Models/MarkupTag.php b/docker/streamline-src/app/Models/MarkupTag.php deleted file mode 100755 index 64d82371..00000000 --- a/docker/streamline-src/app/Models/MarkupTag.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAUAIAALREqTcxX/gsyvFzx8/OZ1P+DSogomUeX5nBz3gPiItj2oEfFCgCSTruxoFhY03biZwC0tIpTDRNrB3Yv0vnMwMzVubzxvYyPuQx6G0ztdIevPTEtGP/5YXxPFuuV0oZv4p6uftckdFc/hm/hV89GNAqLkb2coV6qKof1fJGTsPBb+TrxD3FYuWzIbTB78saWiYeU9YpgmhDL5hsb/DkG/XxZFf1okY/MWK8rD79Qh+tB34M8FEmRBo374gsUT60qamUWRtvzBI3iuKXuceAo+Zd3nGjJ9G8r8bKClgLsMxt1CRa522HcTVk6Xzdl3iTRt/4xL1ufEYTpgtr1cuie5XwClwL/ckNm0eO2qUkPLcbe+aKSjutsaSPiKt9zeG7zkOjO9T/63UcaZdaxiS3z1BwdQcAmV6muIV6JUkYTQ1ZWOYG2wV71r1npqMi7q7XyAyae1Vi5WX+qbstGBt0tWTB9+lk7Xmr5DwFxSWOaUS3nG6xec2a93QpqaZWVRHgHi2lod+UfcAxGNBAGPsPfFH2JuKK6NpoSRY9cUbbc4IxWS4Ktar6Ac+/BwONn+zj85SDpkb/wVnvwA4qXapvAsd2W5ao4/6anhi6wwkB+RhJcAdLZkruawyfIuLrU98lijkKaexSFxTydf+hRKUeb0dkI6syesmC5YudQMsmefzSd6mSmwLUOqKCEnizQ4OYtGn/9NynQPqLBtxm1vE4Cl/mZWRlyKZ+03/83kOsx361P+A2bI/nM/d4zvGebsBC1HqUp2oaYQmygFnnHJUMlUIAAAAA'); diff --git a/docker/streamline-src/app/Models/MaternityDeliveryRecord.php b/docker/streamline-src/app/Models/MaternityDeliveryRecord.php deleted file mode 100755 index f8208b23..00000000 --- a/docker/streamline-src/app/Models/MaternityDeliveryRecord.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAEAIAAFCUqFQlk3Gwo1oGlPYXO6tF5s38Hkfe2XOp+0pFA++TBNDtTLhmpAcF9JChJWhNzLH9kGdHLBrSmB/NAy5RuCFRLyMwMbtyrDmGIADVM9yYyIwqE0HEHaVs57yiam0LTC/S0uDPs1tngnMDTb8ujs0qYBQZU+P2Mtx6SPz+uxbayAJrXkQ0mOnRNfaxUKFw3t3FfrW17JE97MdW10JWnO6ZK2u3VZPL9hdHwQuqocULMc5xRbWdr3KPPaRLXTc0LZfMNychu5XwfntiqaDno5HnUZXHj3A02Diq1hZ+Xt3O+EBLE3aeQFasOrMAmquKk8EVbhC73NJbD53dkKTWt1sLBfPcoR+0CozseJ4TkyerY2F+gwf3/6UNb1yidhp841KunntEZBdCqT71L5xdBxNarTtmB9iVcFsv3LZ6oMTiWiXbmVOuhIguTduPjB78Cfg2uND9b/vJxZNcsSXc++Cif6FoTai+TUylgmohJo7nF9iCKEVoSCekeZE4C0F6L8l3H0/pZr6f0Pb3aiM7Yov0If1yf+IMm8dEZ16pT7PreoApWjDUD+8ovqjKa4yHPvbyJO4/RxWaNpQiP1SENdNvoti9HYoN8ctuOcAF6B05p1aFcSurX5oOMl01kGW9lelpj7ssin2W66Owq73H51v9dwolfiVbpj62qEFpaas0m37DfMPTZgHxNjD4bK/MZAAAAAA='); diff --git a/docker/streamline-src/app/Models/MaternityInpatient.php b/docker/streamline-src/app/Models/MaternityInpatient.php deleted file mode 100755 index b15d8ae3..00000000 --- a/docker/streamline-src/app/Models/MaternityInpatient.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAEAIAAH+eU/Z3xvyl5RbboJlU1jh1f3BysPEZ5z75nnWn0c/pwRR5cDodMbeViTxOXyFXBGO+894Mh88cF6YY8em4EfjjfKi+pfVocZ5i9hg+F8ckDs3lPTrDjz4DY9/o/Mbv8KyVTNx39sYwlBpAW/3pRHpN/QsPe6hUvC3jx83XAOGrBM8GPGuWCN5zxNXWWS3zNG0YEhQFUsycv3GiedTcm27cq4Nn43/+WzT9cKbVHgcnhWUaeJl/0KUyuqxZxur9mSzsHkFM45idcKI0UlewyohHXMVNhEqNMnJaREEqyZiv/6JYSFR0HjrVwal3XNBF0bfcDoLBCzHhA7cHXLNno00vsAioZawvMUPhQbwx72z9Nxf9GZPMhER4/ULobzG9+C5xF7GeydK/WYL2rQC3zVCiY4uyj3uX2fBtQTjcKAGp95F2mQe8ShiHo/Nqx97IawXGT+aTsl8S/1PavXN8LtJFS2mvCNO1mHQ6SztWHkgzIOuQF8rHmZzuMYySXROF2Hc5gtKp0M7jwCwHT/lmyslqZg/90EhrJJKii8ODtce0hYkawCZnzF2c5Wrv77DKIkUODvX5xjTcLXaRCOdpnG3Ow4LoKMyjNGsF9colgfCpP7cYCnvgWzF731MW+JiXWOonBalZ0RcA9HmOkG17eMc0L3iIEw8Zk0H+52RRqtgXG3ACHNbBLHgQucCVfmFwaQAAAAA='); diff --git a/docker/streamline-src/app/Models/MaternityProgress.php b/docker/streamline-src/app/Models/MaternityProgress.php deleted file mode 100755 index 69091397..00000000 --- a/docker/streamline-src/app/Models/MaternityProgress.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAOAIAACBJNKoPuRTBWbEBRQIc4fhhgcrRbR0uWDVwu3NFVClRfW/wlb7v53Tdw2CCkUdqDe+7JQHS7i0qEuLc+9PGX6I7reCbKpEwXyV4OiS9V71htXjMsaz6YOYJDyc9OtmQzLb4k6rXh9251/Tr+LfuLKodOjKqTJQblO0RAs4lhEbGk4HTUUYpIw5AZBReldCkRcuTGMwqZYfDfzjRBpqU3u9gGLhZKqJWWiB1jVOviKPKGxj7u7oGayMSKNnZhKFfj7IwqeKeAJEvPdzmJSsTuA/ktj9TsZ0jp2UODdGO0jcxQlam7SLO1j3RsNRs7LRgT2vuAg9av4NieetOU8qoBXYVl3L70qJBk1pVPctU5ASznmrSjWOjYUrUza1C3GyPML2/VOBLCf3Qnk70HylMu0Kie9sNUcO22hI1aCqeWI42+pfdLMaCflQ6IJyZk2fwOockdSTN2WFJUCJGCUskX5EmmF40SkkO98hM1DEyxPa90oZYIGHkdsTeH7e71JUJi6i6CKBVDb56O5ubiJ1mWp5GxFc4A0ZBY+v4SCFMuv+oi2owgmFzd0GA0HeMHZKCT4LlfbFv73VVpTd7XloPFu3DWCw57DHEx3IFoipZfZYuinh+MOvtXER5i2swAJ6SAs2YS6eTwkQTvE1Wrzsa+HDuZYZybnvBjZ5fZbtw1H1FuXIxtv6absnSzJO3ui9rPGUkobRX6nZNx/M+Svd/ka2CstbDpqLzntau9Xblwnb7ZjbCWFmeq0IAAAAA'); diff --git a/docker/streamline-src/app/Models/MentalHealthConsultation.php b/docker/streamline-src/app/Models/MentalHealthConsultation.php deleted file mode 100755 index 2fa1a727..00000000 --- a/docker/streamline-src/app/Models/MentalHealthConsultation.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA+AEAAFeEssZ/lMU2ZR9evMNPPIRBa6GhrZY8jd+kXhZceEp/2eeiyPmHx5wP5Jeeoy8gahNHUK8jPqqOsyWRXX1DEhBovwd34FHHzgfzOMOWFkN1xQps4OZctIdqgn2NcUaCCYqPo4Yej4yK1EMdtK7NowZ+NmKQVqORR/RYkprosLNYFqB+Pld5QSUwA3K4FWo2Ki/G3tiqE+BQrsOWeIMGcLB5Cne9vtnDekvudMUgxShrX29bag9x2yaJFfQ9TuErUYfl/NfD8qDzk4SpUVTe3G38F6PqpMro4pvbZqJO6Hz21eI850BEbq83Z/C6gqswvD2Ih47PZ0Cg+Je3/aTKFnL7LiZqij4L3ikEq93vlQ0puw/2HGJKv8Bhc0BdbK8j/gD7dGuOhRpIv9dcuSI16UZTuD3Htp7NXb0b0aflWf9y4002vNaG3SRoFmESU5Yy0XerpTCMj4L33LmTzER5XzENuWvE0mHceUZtYN4Zb2Qdwv6c0aUVfNzFegwPbDFE1k7dqsnes3z9yXwfXXUalh7gWXS5PDUykEiWkrig0Ii0c5jIlF1lgcNhVBbGUUKDZJfQsnazuG+Y2hAtVhp/i0fpVTFGEbbdXdkBQf9N5IFkE8rqqYfwLniASsrup+rJqzMyE8gSFmulH/AtfJE5S9fST0C9qwbIHQAAAAA='); diff --git a/docker/streamline-src/app/Models/MessageBoard.php b/docker/streamline-src/app/Models/MessageBoard.php deleted file mode 100755 index 0dcdea79..00000000 --- a/docker/streamline-src/app/Models/MessageBoard.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAWAIAAPVcVcao3veBCk5QMrmRjhN0Dpewu6ZVBl1fh/v79OvWx0Igk3MiIFW6StG2kNeRNA2gwtT7vGdD2DsSmgjIJjbZgI57+ccj3USzestl1gFTicVK0rxAgjwXLYGfjAR4R+/ooSCa/ovYdDr2SiK2J0FRDv6ajOTTP2EUB/untkqHjkZS5CyBOPdQnY/JVuOy9MYTuDTLexkkFOc5LZOs4N9QuBSPRTjpmiglhX0T9EuCGQ7feo4earYdqC7jjyxCAeZwOwdCcbkohQgk/1w3rc2T6VuyxOpUmTAlRKpX1PYf4xD8IZRpAL0GgJETk7Yw71/IZ6jyJDb5hTxhAY5Vf95vDwj4sTA6oBoxNFZzaMh0nEpu89WU5hNh9/nmkc0e4JeBGs5d3YuO+jiZg7ClUc9CmyCAYEPUW4cwAofUs//fGukNeDfZ64MIk/iNMUjKpz3+GODuxMIndgWEhfBFt38K7tV7PniMGk+yHiPvqoD48LkqgaJXn4hgZvPDlPjBm9DYtAeOPqioknAzY9IJriJTM2ytv+s5UOwkZHqC/F7lSO+aOeHNSXy1sWwWiuHeva7deEvkcGKaVWGPHzoEj2flmhJce1J3fifv5x4z+Mel8wWyzUDhABZFpZY4+gX4fVA2cDycruFSo6ZvC94e8K9xvuQfzcprX7yltX6axUSWmoNPbRHTVP7mRz+V8+HguW79Yi2LVVljdN3wB/aKpRMdiwlwmoZIMaiWdPqjliAbyfHPYQ0aya2gj2P+2dw5kv62xh2QJCq8OKc/ccKohxqcYTlFfDiALwAAAAA='); diff --git a/docker/streamline-src/app/Models/ModeOfDelivery.php b/docker/streamline-src/app/Models/ModeOfDelivery.php deleted file mode 100755 index 2a6e0a98..00000000 --- a/docker/streamline-src/app/Models/ModeOfDelivery.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAOAIAAGMizrSXfzJTFNfpxydV7dr2WbLOzaauRwR07dbN9yBDJbMJCtUj8yWDR5eUfJI8jRS2n6a3XN7JMy1v4MZ2S1rzM1EsNrkosq9uViV+xNpfCWXp1+fpG6kSM4nSAN1/Joyayd13qClBFn9QaITP540FhbNlLiynGNIFIkX3AaYUOndFtBbU/R3b7t8XSRfZ4fYt0hEQzUPQubBcmHmTVAbwuKMVKZf9QM2qEnAtpULTXdee7prxtHv4Y62ODFPUV7/Gnkz4FlMcW9q4JaORlduB9cIkHxqyzzdIdaQHhDVJ3p0mAWSU0BIZGriuXp2XoZRW804Cmo1EhG+d74u/YOi+wrz1QZl9bfMJrzjXy9+JRqzdaLIs+58kFYPn7Wb/gykVuqcCocES7fTrk01KXpFSqO/EzTBN1OWVv/ZnqS6vswbgZ9WbR2X/qxaLp8Y2xK+gqlNcBrzDjRLgLRX4dVP1YqzaJ9BqOT6ooh8HhGcQYbLL2JTqGrTPkKdrP8zu488MLdoOQohQ8KAG5RfPjj71X6xViHNkdHmnl2ny1V6IsAGwDaVcRff6Y4zF/MXBTHJkt/VEudesFDn8kSa7vDjnd3nCnk9jiEdPfmceNIh1qEIMipN8qfPv4jpCLRTduM0v/8yamptcVuCd3yvf4CXXIIhQ8kzV3lcvt27MSty+OEdByj+3vYhYT6lmOBqUX6PE61m+XwRMg/PNY5JTr0Y2VNkynMm3ic5QZz+bj1WCNakIHdWoKtoAAAAA'); diff --git a/docker/streamline-src/app/Models/Module.php b/docker/streamline-src/app/Models/Module.php deleted file mode 100755 index a5ca20d6..00000000 --- a/docker/streamline-src/app/Models/Module.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAyAEAALIeN/hxpHuDgiUUQS3O813HiBOH7PS0RkE8Q7PeI3Wm5NLakc15+Xl2KaEHnHzksbKcTC/x39LiBqnweBhH5jsX0B6e9mss5+c1suwkoQy24p3tooBogy9zD2VP0EtnJ0jmySVKXQjDX1Q7t+9CM3P+Izxwr8Ej8+OOpc0cWP7GXtFUlUcSO+kPv0yTa59R2NQvO5d4qh+WVJjcRwcqtm/JmX8AdleeaukaVcvPPNHLgJjIN5HWNlZ8jbDTfqZ2c0qPblrpj4Snm3R+UY98uY5J0eA5djTF+PrA5V2gw6skpnVFjvcy//GbQC9sDPT4BHFmoQLwrR8tzJNmqrRKno4eVsxfd6K0oce7rRTdB1tMsaKBgVPlFCjxFhkRCGpRbOji2WRL1iviVl7BsA/JHWK1MuGoMdEt1Qw8pCWp6DE3posnojJPoa4/GUvsOBMk69FEv5Y3i3Ip9BHJAAnmLF4nifGl2XkwcJuSlbDRzbkqbd5/Nb4bmIiZgYhUWZNbIg0QvbbCWCHBBJagib8qoRU/r9GQfBUgTRGp+5XW9pvYRwlyr79IXbCtYU861u/2sDL7TbqygtIc6MVfXnsjsw1iZSvX8ApK2wAAAAA='); diff --git a/docker/streamline-src/app/Models/MuscleRelaxant.php b/docker/streamline-src/app/Models/MuscleRelaxant.php deleted file mode 100755 index 2725ad66..00000000 --- a/docker/streamline-src/app/Models/MuscleRelaxant.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAACAIAABZkTdwFP1KtYOiVYwGIQOYyvkUKPf7nKNF7JAIGejzQg+qiWz83O3QKShj3crnZbS/HjgYsoADtu4y6/N64635+jpzWZx8YwPjE2cZdBfc7vrRyweR0m4gum76BJWB5HXZ2BOQ6LixsQV/Kz3Km4NHFCUlndIdOW6L+XL5FHa32OAPIYq8oPIwjAf0F2+HJ5dKyDspFtZCo/tNrcF0snJ0cFAXXLCjB2PzFUxSilcGtGcqMt8fzRAMJO+IXrm8sZF7GMlE8RZ2XvTb0OZ1+GdHMjJTar9CBGijF86mrYu0QP3Z1lO6pbNs2WgE+lZXNrCV+9lUsSSOh5e2dVrGNL9uwdKRSUZ1Mbocd+Ife8L1rBYry2n6fhyKYY5sKkcJuCQGCLc65J+nhUtWeSESjHvFooH2BhUtdh0ch8faiHxk21dL6QFO1DGcNjyPyXpekMWztL2mNJhz2x3Jnga8NG0+dKufimXZ3Pu5xmUHj6jjc+E+1uLxNXUMuCXv8vXhfe5pKM6de8UAfLSril1Z2lvFQ8MNDVbGNhg8a/O2mMSgGSWMWnIPql/yL59r7RWX+ulKV3Pi344k50DS+nXE8hR5oYX2TePIbuW70Y7l8MKPZ8nsnZ0y/2/rSInw0ukLh3M3V0Gqn9qn0896Y7ASbpgnhjs1q5GE7iQLnj4IPDEiZUpeTJXHh5AYAAAAA'); diff --git a/docker/streamline-src/app/Models/NeedleType.php b/docker/streamline-src/app/Models/NeedleType.php deleted file mode 100755 index 44ebdf70..00000000 --- a/docker/streamline-src/app/Models/NeedleType.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAACAIAAAYoZ90MfR3Bw2LaVC/NKKb+CEhOR45ogAH9j2ik+Krg7ltyyBtiZZyj59XL53U0I7Oa0Lvh7n9BtSIbuj3ICWGi+PTzRaYQ8QTIbcL6VU69COnwXHYKZAuZ0iMe0wGxlg7TEurMZiF6ggsrvlViGtHqNLRcS2/S29AIEflGyP4uto5NSEy3X1vzcHqnkgI5ovEtBQaiY3MwxE4SStX3Nx02Ef2JLcG/mAwgtiOdduMmc4uj8j9KpdVt7MEr40nsJzFOElE1u7x5Ex58BsTFPEmTmsh+bnkH6jl1e/EyGJJcK0EgLH+3AtQTUWYZ10y4id6bkOPIyxenKpUSDo/UDNR8KOB2uBAOMq6FRtEMKYOLklS+dHLQ2BPkrvi2R98jh96spvONYGNDmQ4iSmOChtLYI927oTOf+2SKvw9IMkWzPPm9WLWkUAiG4c6bf45zRMLV/3lInykPU1bZS3BDmK4crX/SOhoilgdZ0pnGL2eVDiEClJmx+ECqGGA/Cr3gffkZ0Xhqlz7DO+LVSsmEMN/YUD+dkv2S4ra9u78FVlGy0NGomztUkYAUFMlB/J5MhVLdNJaMMKzoZdl5tb5Bhqog9CrDQqhqBIWY5mb21kuRCNgKeXRzASlXMuHRW/j8YewST2GBU2GuYsg14fMIGqcpo1t8PWDA+/SGD45OqrXzZMdqFRO6URAAAAAA'); diff --git a/docker/streamline-src/app/Models/NonStaffGuarantor.php b/docker/streamline-src/app/Models/NonStaffGuarantor.php deleted file mode 100755 index b8020279..00000000 --- a/docker/streamline-src/app/Models/NonStaffGuarantor.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAGAIAANWRdewP7CiZv44nvSDquhYO2vCke5iT83Ix7njb1ETWgFYIJh60zjmJTRM65tuwb2Fm6UmrraXPFrACLPrx/HPRG3Eiw7F8aK4ryx/jaoaULsiU1ccDML93MDygxM+jBibF+oEnPIe6gRrwTS0UxAzwy+uxogLQIkEQgiiGbcVjMLTs7krdA40JLHGIup0uyiI/r0td8sskpZxjBYY5c4Mu2tWaWHCam8s8uHnKVFhFXc3mUl4na1SpaN3k2ifrYtP2IouOnVLlpV+FRIAgJJVcS18ixnYDnh36CWtaM0jDeXxiaFmSa5leHmL5CtQuDia806L0I+RcVJJFfWChDzOaWBY0qXImbjbWkS9wnfGkAzX4j8rXUateUhv0tv4uhOe49Arvdoon5FEJQi6C/zHQdpe/Dfp4TUeDbpYFWi8bLNz9mQ0b6/9L+FgZaiOCVqma40yyhplhjavt4wAvTH4ifG4tXNrnvDZP5sK2qhM8VZByKX/QKLLMyP1HF2lLpXUOkKrPgfMx6ycPdytEhehFg4AYjzp0eLN+PvwONfyCl4Mh8g+tM6QZ+6LSorMzKDVTWZDqjoJ6KlZsMyjkjP9uauowm9tbdKYkEd+UbC2mfk6DR87j1mPfl/BWcI01QBwsQDmumUw+vqSxsu+FXiy1WpNHPQ5u87ZlUMmCU0w5Osqwj1JSM9l+OzL5OKytGH+GHkvlD5yEAAAAAA=='); diff --git a/docker/streamline-src/app/Models/Nutrition.php b/docker/streamline-src/app/Models/Nutrition.php deleted file mode 100755 index e297ab68..00000000 --- a/docker/streamline-src/app/Models/Nutrition.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAyAEAAI3bX/FLhQrYqZQHdluh4QwH7wMdSBOcwuoTgG63TbebCJmNzEKXcnR8E4o/3Lu+/eQgC8KeTQmjF/FzBLs25z6xU9hOCKY4Vd93ItMNE/Y4g9KRYk3sTVvET/0ypg2YZg/xbiqA2iibjI3j/BXa+m5MH3DK1Sf0OPKoMAPPUsSmvBZTLJt3oUz7Rlv/qzXitL5T4nGdDbnlz1dt5roOAeWCkdoeqe2Q0JtmpByfZJN3IYfCR5oUxG+sbQnkoGVx6KvsrSyz+z3r2hXN7bp8YoJFmgkQK134WhkgFWOY3uVgO/tCB2veK77MHgu/WwZcOcUZIfhiMeFiJ9sJ28ZLrPAcmwGen3L/Wf6G01q4mKdx4uba7pfx1XWXfRuYn7FUZcrTBPjho87ol6Zr9/cP7Kn40BMO2vgvToPdGtB2RBmPNPpSts2dyIXfBRxusNR6mz82R0hvmiVGMu3Nu2VeTFI1vAoT4DMd78Q8Q/MJUo9YVlg1Bhony4h/rozJEy1bWyqFK0KtnKOE7okkIhRIkepwiOFzCPknnGhKV86kfuUQvLKBIcNLaVYCS5CwWBgEyPeVV1y0N+pS7eUCtYlK0F0+6339iAFICwAAAAA='); diff --git a/docker/streamline-src/app/Models/Observation.php b/docker/streamline-src/app/Models/Observation.php deleted file mode 100755 index 9a8d69f4..00000000 --- a/docker/streamline-src/app/Models/Observation.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAAAIAAGOyJFvzQ03IHHUMOyOkzBJjffatrVFNGV7jvW/c+GgGZxg39Jof2DXmmU/QlNFUItn0GxQx2EtxqCQwAuxg6Hg1jxCKz1ukswOoHqm/WIfgtX4YgZJXlpPG4fQ/s7hys244VlM0JHrBOXcEbTVZcdQIWY/FU6rpGyfQUSQiyA+YIFDn6aR87zcTunRHWHB/aVSKNGYFk3Wyylpd5BlXDf1Hmp04+oUJDVys0Q8iizgsghI0dPsSuAXH1LB5NaNDmic1+XF0/ELRYfkx6C6UBD5zUEfQBRvQd0Ungvi0+qG1bKJg7WDKFrnJZNLG/xQDCIn876W/RX1NG1oao1WTFxHVssUYwTqYSkACTUcBoPOIcoGeb4lh/LZPSJZWBuxGJVvfxtZv0wjyHfTvNzie/QXCHfzDpzPxv4aNZP2xS/LMMbaw7risqvxnEOBZl3r1lHCAdC+L65GTtOmhNCPdsjCWBNooMN/Yi7vuxvWhxteSsz8x/tKmcCRITMigPW1ebZqsLxoy3rTjDd1vMYek3Td4GM2jbqQ9hqOeC7OFFPOISLSOm6LN++BJBbsfBxprePzsbdo4zfUR98KsU/lbK78PFnF9w13Y6t8KSxS9Al21sBGdvKBZneLFYn9WwzeP++rTDgCotItp469T9tBpDRFeeVHzMjUbv6Mfb6wEscRHAAAAAA=='); diff --git a/docker/streamline-src/app/Models/ObstetricHistory.php b/docker/streamline-src/app/Models/ObstetricHistory.php deleted file mode 100755 index 6687eca1..00000000 --- a/docker/streamline-src/app/Models/ObstetricHistory.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAACAIAACBz/+tJh7is8UbF8wgMhMOB0HyxfdlgbOu0X1TbvM46UZjv5gtZBESSPt7r6CAV76CPOcUzU+7kSFcEbnh+fkG6vLA9kM3JinP01a1uo8Yiyuwlivo49v+PH3wQEuP16TFFt1eMgIcKsEq6P3N7juGyhVh/NP9b2/1H0LenuB4BTeCOFrTR32Y+h3Ge2KqweA44TgOia+mAWwc0/+xeU1kM9FGApIQo6z6JFdXUaJTmjHiodrZ4rdnq2O7Td8UhtMD7NHU5TNrBsBAwb0E52TF1GHld9rDv7Ae+mZk8Sm5xJk1hbuEhux2X4qIU/bOO9PGfYEH+XKQHZUvenXqW3+ipTokEcNpsh9hLMd8eNvPyYA6APkNCmNNpPTbL5IO5e5u8Y/xR3E/8BF844OEZews7P2RPwlDfK29uL7yuRqWIx72Kmz6GHVTCxfGZWu3YU4hBM+f8Rr4D3HDm+hz5tXa56/gsSYJRJ+Ak44kwcLUFJu9D2mMwApltqkHxbuswJ2uQAPJz7GyUIOXBcpD4oTBAZJ5MepNu5zQ8tEJuIdOZqOXYmUK6PTijnmSuxLx8fvhky+8wQw0ia3DvIxZiwpQxQBjnDvyQvl+b5j413Agc+jD8UdJY018U1dpMaxNcIImkpLfzgGnFW4THyWdZUppbDW3uNZVlPxky9JNwtpdWJ5eb4lGP0sIAAAAA'); diff --git a/docker/streamline-src/app/Models/ObstetricUltrasoundReports.php b/docker/streamline-src/app/Models/ObstetricUltrasoundReports.php deleted file mode 100755 index 1c2d31fb..00000000 --- a/docker/streamline-src/app/Models/ObstetricUltrasoundReports.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAGAIAAFisjih2Dg5qON1+NPqHclLEZFknz2cS/nnVyyUfcqZ02qw2z7ahyrZWxn6KSvt2wdm1qtBT/PctuNuAdpohSDnspZoTaeE2LqL+yxGlKa7R5gzki0AUTKRZ6i14YtPqZ9LIcsuLKPa0LPXMGRfKA/Wt4YwxqhX/XCXvG30X/fVLvYtkQjxu5/cUCOiimVpggtDmJTVY2xCI0o+ReIyS5SLa0m5cMepjBPwYbCAHzUymH8M495V5TaeuHs5jk/cgKtnWUo2M8HALVAVMpEh5OCk/NFYZ7vD7qmoGotvwmWUqNB5DPFBXFJvC2w4cln/SZIaH/92zDPFnjuWYgOUl5Jq+PINXG43+iapfsgVZm8CVVb+5p2z3nQ9D2hvH0a9GXr3Cno4z66EENG/aBJB4LQdBndubC9GSAdpH/zGrPmdgPjWXMcsjfQH3qTNiDZ441cAqXRxO6LP5xSNLP7d9h6h7f6svvLzpKHEnza88xfRMR3Sj4Ewo4xmbURq2nNEUn2kDsYj8HDW4HklMVs65VagiZ5ZrM0Vog2SgK1D3RnU1n/W+J+Q2Iijxbbtp6IfLJsMwcoUXTGZmS+yZOhqTKySJRnVhLzdcft7l5a4x7L+FJropcB8oxKvjts1T9pjRNXWih4QFLfQLtcz8Yf7Gwdw46rva1AbhpmuT89eYOmTm0ssahhbQoh9av3PH+OvkwWag38AyrW5oAAAAAA=='); diff --git a/docker/streamline-src/app/Models/Occupation.php b/docker/streamline-src/app/Models/Occupation.php deleted file mode 100755 index 5d621f5c..00000000 --- a/docker/streamline-src/app/Models/Occupation.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAIAIAAA9mgtJEfyRlDcKlsrIj+dCyINohtG5CzweFiyDcjRjJ4xLMcBR7eURlMPK/EfgTE/Qii1IHMl/WqEodLP2xngku8XsKI4W2xr7lhVViJrpHrLLMulNv/7tfgh7l/5TXdUIo1pk7r6OoicNv9m4jry/nYZHpDUBkpCFGoz+0CAEE1W5vRJbxQdI9FYbQQZYtAHewN/7UPEJj+jyF6KAEgbpc3S2M9qhBTx0NoeueGQ/vGHTSJ0AoiJIHnLFjmVcnDaAT/wdAJ92ad0JTEf6HyqRAM3HC97n15GFEBGYi3jH78qTV4y/iTLmw3xFy5urvjWmdNSh30brNgyTK5JDrixXNcBmiG6rtPAoeP0XY9yq9LeT0A17l2MTTN55KYTt7/YnGnAjaEPOYcW1OUkXX3YtL+4sP3zYd1Hlfi8YNprlj7jQ4b7IupdRyO3AFS6N+tVQtTsj6eJJQ2D15/Xnp3yILJF5Zcn+sE+0B1alLaRMc/REaalABsRd3IXz/MNhIwIdbVmiOsL71K+PeCXC46haxtbyXmO6Kv7qDqdT5U2AyZzlj6uDbNn/K86NLL/gXj1gRWBwDTeYOjwwiaamG0TXC0eyV5r8duA3A6FuGqK0rHuTNaboR5uHSOYsqAaNiH2oXSNmN3pNp0pwsZV/4MHMdFOr/ZeaVH7BAdMeqR5XXgbn90CCDF6ASVo3OWRFf8LMCYoKuJN+219yNxlkLTCUAAAAA'); diff --git a/docker/streamline-src/app/Models/OpticalStockReconciliation.php b/docker/streamline-src/app/Models/OpticalStockReconciliation.php deleted file mode 100644 index f9cff222..00000000 --- a/docker/streamline-src/app/Models/OpticalStockReconciliation.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA+AEAAIurBQi0gPUahaVVPlPbhX283+Iolu3IVogXPP8MfwLd304V+0pwwVbGiPZIW+c49D7LZYCmYTvXeBfpMzcGOY1Efj4TCHCR/kIEuvbsKWI8U8SvUWAZDolPKoUe26EtAdUAbDzcSpMicljO0FiOlZDD0YkqG8u2Osf4RfAGCJ8dQlVE/3WQzKxqIRI3GSlnKPAoSIzFpum/GppOWwQEQ/90HQHjOA7nBoYaiRSMB/WS9vdGu5ZC8pdbU4YSBGvOT/JdFRnRj27iMlSpRo1yyB5Y+OErugqjdfCq/x++99tJV7Y2F1CupL2zmq1Ygbj8anAcpO4eLpAuRL4kQPN2OYst6rUSKbnbbHMwPsR6fvTRVosxR2RcrixrmJLOG+cJFmWb7SZLEHqexZ3ijGhcXj3+eD+eg2nYi1QYmzWuN2lor4tu9jlQbg7lCIpFdExcqYA3i8ia4yW85e5yXWSzxZrRHnavvLgC7RrnIGJ+nkY4JxNpZTH1Fv67vbEg48YqhStpF5RTNUEhN0t9xcHaqrd1/F3/CZ3xPtFF0EoUTbGftyMsBvS09rF2lTtRyc3dwDvMvJl+8FuvC1t5evc09wI/SPIH+GfKrTrgWkri1LkGMlqZoGEKJroKSOHWd7CdunAa7n17GUfnbsErBa/KeAG5OORs9zWYnQAAAAA='); diff --git a/docker/streamline-src/app/Models/OrderedCancerProtocols.php b/docker/streamline-src/app/Models/OrderedCancerProtocols.php deleted file mode 100644 index df169c2d..00000000 --- a/docker/streamline-src/app/Models/OrderedCancerProtocols.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA8AEAAGrC1FfB+el06Q2Fhp24bg8am56Gn6oFA+eBsBWPmcf/DKZq1gav12eBEbWgKYkvNT4Odq9lgj4SpJdo+qxuzPeQ1d0afX0tLI1qOibqCPnCxKbDetDEJlZYa1lBl2o8rQ9Agd7DW3A6S7NHq/ghRjNNx8ZulKCCTVQUxkW1/Aid9yl3/ZnUOdvvHVWCLFtlex8pMJ30LrWP7NdgNZcpzInFTZlRSm6+DFsZFUhW48U0/7GZ5IwddWlFZ/VAyYj+vQknCKzQQGptOLLW7APjwxyT8X9EGt7Enj4d+8sQhMRrFE6foDHLyxAk8JONclRiE+7hJ3aEW2M7qcs4vcdUxBFkLuW/EvBCQYE87utP0VMfc6y3goQW4Xsl1LTjYToeSeT1mJW7F0HyX48dCE5j7595NROtVwj1pXYNo5Sk7/P6YGtryLA9kqggZFmvlqX2tQiYKyMTN4UyE8zy0A5lunAjggrgiheQZDJPLn/WSRUnk1LEknekoRmsniQbCftbE/u16GLV9PwdVRRVb//OpgkAfmRGQoU/Scq2hZe5dwT/c2fLscvc5Zpfw9pJrnw1eA/0qhgW0jCenCX1cSz70iOUf97LX/cwecOcpwmpZmUpFAVTFnHPGTm0y75aiitkjfkyQH8dkP/TD3AjNxolon4AAAAA'); diff --git a/docker/streamline-src/app/Models/OrderedEyeGlasses.php b/docker/streamline-src/app/Models/OrderedEyeGlasses.php deleted file mode 100755 index 20c025d8..00000000 --- a/docker/streamline-src/app/Models/OrderedEyeGlasses.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA4AEAAMFBflsc3idaXwi/+NcDeoVLpobytoo2CPMwMkKNnY8oYRuseyFfz9zJDsmJ1eG/XHlPYAjpgd5fR7P1s1McMYn7HGE4n6QrLLSrj4y2ru2/k5lYCqjFQL8TpBb7GbkfbuG6v5/DlnVNbNEcc/Pu9zYjvfAzQZHy55jvjlUpwGgPCziuptbpGkvsFMCt08pc/1pTza9cTBR0rEhnwvJtdEoDYL5jc/qxrY6CGv53I+oGjkeBcQfzkLzPy9iziArnm78BiuJAxizXt2fGqzHY3yZF1vPy82nZshV2oz0quKBPuMs1ZJPrl8eVaby0Je8IOzzw6xm5N2MEsnkAR7wfKQIdxCX2bsjfN/nstkFt2ssT6PR9Wd8nphvjADQbDgz0lWY/uatEeHNNTO6AcuTuuvXH6URfo9gIHflUOKDO30pAgz/CuwnPywD+ajDlso/5KfZA4K/fnKnATm1dUw4M/nwRacwD74tArpJKMJjxEO3b793rQiz3aaiz0FoFQSCAmUjmw22KTv5coooWyJ+uRVRII+A98VOxxXVP6Eg3NGFm1eaXboKpVFBzXQLHWgMrdANpWkH9g/iHh+u5ujlkSvRNMI7jmlUKnC1ncpqG8ehe8v/bdYkXjlaSG+PCgOWm5wAAAAA='); diff --git a/docker/streamline-src/app/Models/OrderedInvestigation.php b/docker/streamline-src/app/Models/OrderedInvestigation.php deleted file mode 100755 index 4922a27e..00000000 --- a/docker/streamline-src/app/Models/OrderedInvestigation.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAiAIAAEKaNX8KO39sKCAOY1PUZeYB5H28M4Lyusz5U6GK1i+n5L6rYAwjOx1kDH5DG61okAi8M6jwhjknXTBkSmFpcTjKqM97Fhqv7kR3P9gU+V/umpW11jp39NHQiItrnMWESbV1cOCz7UVS816/4NTNcYK2ikj1nmK2msJUWHiqI99bYLuA63OGGFbu3LsUFsYfIFiyYtK5sZCDabLxynN1TPzk7BhyvH8ia96AHH3Ymh+wj3cQmmWY42Ki72STzBmOCkcdQfkHHZkaEWjEDJVRGRX3mCfxUIRl5V474dCS58x+SQHOr+5RMZSQcvZyZ1P/oEl4PKdmP5eia1AjPiAKygZBUgUZTF4Yo6XBYLiw03Q24VbApdYjX44HTX/02ILnM7QLM7wkBxkyx2afnukSLbAEs/rfv//2cHEwY9uCyhdR5uoISsQPREsNLLF6QPzve0B53XqGsDx1fgdIg3AY7C8WBzTntB7DaDm6WmrCkdf+opGQHagHwLhapugYC3g8D8njxyFrd960R7jB4YKk2kR/ISks6EnfyhMmH06795oKJmskn5Zomhm/QqpCMOYzJu80QOgUFByOG4fZtpSSXeFQy9/MmcVS/0kdlbJnnBFojZ7TaOtsU1Bb8/LYaMgU5QYxBEALiF3vCR0H4exuvU8ojYuSyVieUbRydaUW7UD92J90ocht88NYAkrNl1c2oqf1pLdYeP9JMXcAbtvV+4H+gW7Ts6apNGdEgYnlUHVRGYPmoIK2k6HZzVffuJ/8brGNJj/Vjng5BH6ujOySVCNEEu25gtfBr2B8klqwXqVKvaIMV8CzQtBcKp+2B7Yrdz8Mjt1a0KHVNJiOTsaIrYlR0sv1B70oegAAAAA='); diff --git a/docker/streamline-src/app/Models/OrderedProcedure.php b/docker/streamline-src/app/Models/OrderedProcedure.php deleted file mode 100755 index 81981ba8..00000000 --- a/docker/streamline-src/app/Models/OrderedProcedure.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAQAIAABe5IxEoCA0Tw/gZHxoiEX6en0lfBXrG5CZjpKLJqF29SRX+f+4GDSEzuM54ECwRZz9Zh9+KStnMNYopV+MabUa8yTObdL7LbHhbA36TxIWC7f/Lri2dpyCSN3IQZq9ZUK570Zb/4kMya0CYz+FroNAqjH7hz7EVjUNbMmBIsD7NOV2G/x9M2QXmbZOTnJIsk35sRR4jJuCgzhS6zjxrQZWfGhR3lvi5ePMQaw+b6YnzwtoBN1tWHKWwagoBHojBZJNEa1ZAbLiDMe1wroxH9rP6KwLiRnBgDmGrvCvj8gbh5IO2ZMp/WHC5u7fsijvFiwfdkbP7/YTgOVqcG+3uUHeSzdHzdUSvsO4S1TnlyI1UlQ+UqWadutD+D4M7kIIRGaN2PJ2vWJMJdbsIX8boaKAPKR/60/cp5HkraYa0JKqFnKA6Hw2PwUf2PXgUDoQZpOzETOrEy5KbuelBtXuuDQ68tEbH2zqnYEBQ5akWNr/l0kvqh7cM/eK92p6o40chl3jXctr0G1sEkVSYhuGkPXI1duwwKEHdGhww44ayrINFMBx+0KqdRqNd+c+yHxKKHF79i5h7AckO4ZAE6Ar0Ef94TJTI3el0oxUBcM95W9GZiNWk5UpimUGxXigIHSAV+NJBwg5eX6RBz2dbCCyT5hf4VtouqltKaPUFNdAkeo/AM3yaorAweByklSZJqyOepNGkcFpYuoOFmm2JMHVAFafWn3nq2vJPvnHuDFLPftYOL35o2WGFRBuxPEfOavia2AAAAAA='); diff --git a/docker/streamline-src/app/Models/OrderedService.php b/docker/streamline-src/app/Models/OrderedService.php deleted file mode 100755 index 83058f1e..00000000 --- a/docker/streamline-src/app/Models/OrderedService.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAQAIAAJZpfXKb3ajW7tyKCNTcemeZjZyd4k7Bskh54qQGutVA1zRbUvUIr9bOeFNRVUiHlP4ayJlA5tX4YR1vPcouAEGF6dScUkijXD9omPraBD3/BE/O4sUhUQhvx8ZCNPECO53+CM3mU6M34JkNrxkEJVKqmwZb9JPU0BJXJaoA3j5tMkNp10zznreoemEMzapQV88L/TMq/MRUdJ190VZtjTcmXb8uA4vR3ZlDYpHu6sLooCjRTivpjaMwzlFXIdehWt6nCyVHrCeRqu/JWS2dyR39vWJkyk+BzUaEr4b6kVYsZUfbz2j/HNqHjw7DDA5pwgJkiu7yShTNtuKBU2sNbF3t/a4xQBCvDJjwKZ2xluddkRaP6Rzei/6Ztw+BU7lYM1e3BggayMsQyCnM+tj71Vg6CFbmuaVCGQB4D80eUtqX93S5adiBCA4Yk/FtfYoiQ8Nl150nQ5+EM4tnGVDgMdK/Q6m7eMpyUEcnyTYcKgzcgGPIjA0gpo1+j53NNlEwcZG5kI2PeOh82quVFY6o/HvufU81WfNVGwdfN+iOJQwLQcMnZudLZrdMDxADpKV9EeUNR9+hbsChvZEAJqmgWL1dyleuyvA5SXqChtC1ZLhVLEv/AeoKVj20EGg8z4ZDCqyFHUSWncUiaRQduTyGMii1ZL7dR3sISH5lEwAeBU+QHLO1bWB6VTevjTZ/vatRpADPRN1aYDsf+WFUwxwrDYQfhCwJkWKuJbZiOlfBOL+prEWVCoDNmbMNzqp+oiSFRAAAAAA='); diff --git a/docker/streamline-src/app/Models/OrderedSundry.php b/docker/streamline-src/app/Models/OrderedSundry.php deleted file mode 100755 index 6b0d9b06..00000000 --- a/docker/streamline-src/app/Models/OrderedSundry.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAQAIAAH3FOigH4a+U+Akqz4QioRbPppeCV3cIhKVNSdNLXMr0Dx8RlPJCB/K/pNqrU+3v/cDluzTiE4VO8/81V77nUmN3bnQ02/18wEeO3qf+vSU15fcBkENzW1NSqwuRYfEMFIQdDaNCw4lvXX/4JXtyfaPIfpp/VN7D5GMl5/CMnWQvF6by8VW4tpjAyX07MP1yftRuVXp2jPMchFNUKjxCSrXu5fJ10wrqHUnUeTgD3DnugtC2zTBSOsdcyuw9dTba4B2X/uQaVejNVmudhE5huGVuY/rxTtcQ4yZxwxp/oVqJIzNhZCIWIhd6mHujRE/YwR7tqIzF6TqzT5MlfmobndxxJWdTeCO8jGs6A7AriKdHiwWUkQWT1jiltAxMLDwIJosFQk9uKQUqwRaQBec5EF1SkANtLrP37enVRdjY8kdjp8h+4V85ZZMdsLrvvNljxUeNIIwQUlbvw/beil4QMPws+HAJev8VgpB5RRbGjO75VCpaOQi+sVqJDJ+gkAXPUvIEiR2w1rfShxPHyToft/buPvYRSH7dq6lY18MU3EmAVpM6iIpEy8SrkRL5DPmYXNuDBbIzthd6xNzKcS94YnSQppkxEJZjrqP2fMzrxRZTSwUgrxkUTLDXx7GHvf0nUknuhZwS+mBjfcU/S+r8B3f8r6mIYXJO/0J7seGTh+LqW0b0TLsug286Trdw7EsvBcCEUrNfKQYE/1UOKr7bgLoNpN8zRZigv8XvIQr3ZA44Mrdi++3OXT2UKybd/BRrbQAAAAA='); diff --git a/docker/streamline-src/app/Models/OtherIncome.php b/docker/streamline-src/app/Models/OtherIncome.php deleted file mode 100755 index 364dea37..00000000 --- a/docker/streamline-src/app/Models/OtherIncome.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAyAEAAJLypNxZQRDaZNDvOwl7+CtTJhP5Or5HH9r+j5yqLfFWyNS/SA/a8b5kFRsMuiutXfsG5OVBB2hsPNsIodYJ1Xj0iuJX49pPb7sP6qYWnaTBsnIvjsoZNwS1bd+HrzzgOw8BOc6nzNtv98q/4+rxXnsM3XGdfd3AHRJtlKAZMYOWVH0vgr3sW4C3BnEtK+2o/56/KK8pi3ASxHtdWUaHA2mslmrXQFNzA6GZnKjrWp7le7qvM26/7A+X2I8YcRgJczPUdH73CqlC1+MECczKK3Q+O8Xy/InpXc9HtU72RNVAaL2kUERj3KBIQILyRZOXNxecy9BTNEvFtXgGNbsSb+knNGPKK1Zgs6Jfn1Sf6ng+hf7S0kHm0L3oojnSRGn3oeS+UIBgIrEnZo0degJgCxMeHznmS9cYS9cIisgGH9qVTCqSev4IE/Ry91PqUylF+o46lkATpgot85q2P3072nCRpREbMFlohK1TU66e3LUFvrUgJPrZ15PCrxb+MRoG/foaHloTNNmgiyi7BDs656DNc16H0DYGYbPx2UgOpCpZUYmIdNOcC/NTOI89SsepMGSkctXaI2WJXf4q3lBItQz9KPx4f/B6pgAAAAA='); diff --git a/docker/streamline-src/app/Models/Outcome.php b/docker/streamline-src/app/Models/Outcome.php deleted file mode 100644 index 64ee8da2..00000000 --- a/docker/streamline-src/app/Models/Outcome.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAAGAIAAMU8m3Ekkxlc/2778Lb/RoXc+SeYnSRCeRb+Qn7z6IjOkhDREzxi7upqmx29tSJjFL5s5oc62O2yg+BcYu/Lkv1NzLJImrnzPgMbhWqItWBP7ASQEWgrYPWaCyhGM5kLeLp1cfJjl5ozOsmbN3QoG3ihZoFmvULkQIQXFv8M2BcPscEM1RruU8qgd8EjR9aB7tgcDNfVzYhV6e64NqfB4qglgYuEpkI7ZpqV0p+KGkAYouzFqOUER5pwHYTI8qhOoznyGycnE5NDD9Ge8yAXx0rqREBBUiDqA8k5TN/f1yCvtOg8+StzsdhhvnLoguV9LTQUNJavfXOkhe0gJ0yoPWVGE9M48Q3TOM58nUxlyO0u1eHdtG+58wjUwpTMhU0V94TpiJ/CTOzFUyAwKqylgr6vCWLIw+6bhyhgAmT+yH6v3TlG7u3Z+ueVQdE1WFCMrIS9Fb96zG6u80jMeeEObBl82feIFd3EpMU7CE2Kg0+1/WMH01nA5+WRB5tOKeaGtz9C4+r/dD7T/cAs2xnp9aOzJIt+aIjmvoUQR+yevC28SzTvAZgLVtFQojsnjkRcbxtd+Cwt9WLdxOy6kzWfmDL00Mir7n6cZWnxnq//onuk9QqinOQeDDAunxqu40JZ4AA9e9TlgDXHlNuts8SFphGZ1sHuVlCSE9usixCRDj1qrqU/p74JP0ZczzsC34MTxiUgPneI77mcAAAAAA=='); diff --git a/docker/streamline-src/app/Models/PackageUnit.php b/docker/streamline-src/app/Models/PackageUnit.php deleted file mode 100755 index 40f96ee0..00000000 --- a/docker/streamline-src/app/Models/PackageUnit.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAACAIAAFEJ9wspSOKD+FQX4qs2iJ5dLAtlvvsA6RK0TUwGaSUxl0gI0MUzHAF77ZiCUgYUs17XsFcAFaR9yittAiuz5nImaJGKPTx8zZ/YfuTW4JDeea+Jrc6M2EsJzbGJiJWs+WwAlonNPfESZzcgzHWSJk+THJvU4grHv2v7R5n4NLbYlS23NCgSLVAYrKc7kNkKM1+uVlLY+IJGcoNWI4BxevXTWPzP+uDsQWrqJPV0DrFhUpqXSbzBRovteoCixomm2L128Ke+gh/oaoemx5YUNV6iuByw6bL1HhpTNK+Mx0DxeDBTvNmvfcEyEzc0IzXNKGPDKneN864NOV6QqycsHE8BG+Somg2eud02Mey4lIVzVJizCKrGyS7CC/ZHc6/uJvSHn1yIxXd3YN4K81+Yw5Zd0eiYs1iEPtO2EBIwfecW342ElnV+kbiSdzCH270+jvucybpcrgKWNrsMGQqhkpQqHOrSXHSp96NYnhYBgE1YJL8UeYVEqSYR2IAlC3E7b4ScGhGVuNBnecup1nfGZkL2bWrmSkCediCCFtYCDNZQs9oFizFdWFYSjqTBykAdcl5R2xaXNO+po9nTiYmISChcBRNKpgXHUEBw5PS4hJuxktFAnt3jQdhMmCCOsDBbarCTZvsLO6LmUe+i/loCEBLssm+kfdaZOhnlenpSlDJ/IaQl3KrQ4pYAAAAA'); diff --git a/docker/streamline-src/app/Models/Parish.php b/docker/streamline-src/app/Models/Parish.php deleted file mode 100755 index 76906310..00000000 --- a/docker/streamline-src/app/Models/Parish.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Models/PasswordSecurity.php b/docker/streamline-src/app/Models/PasswordSecurity.php deleted file mode 100755 index 01d8d2b4..00000000 --- a/docker/streamline-src/app/Models/PasswordSecurity.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/gHgv328mFjt6CUbcdinBJCMznVhnK0tLHOKgfdYezP9fGUidO8zkdL4A/FbG0dtCJ00O2fJJeQjwvcUtB8m+PKdoUw2dNu+FYGYceQVoGAzCWvFfKefgIDjCyFDmltviReceCh3R9xi0mt/LNq15uA7WRrrFI5FnTzQnULvqVxlUyCekeNa+rrnaj+qVWxxiVStze7+xLzTtJDa1AvA7et5xcUSro0BtmXz7gWoeVig/rYSxQwaunodG+mhQLUqdUUsNY0N1TglSAAAA6AIAAK1d2/38RxSjRLxBWby05ecYsYuG1shDr/EmkFxh4q7iOzQ/HspEQLFrF6FcEWkK/eiGcZKX95wnTaSkd9tWhd3RtN5ez+hyNu4S5o6jAAtD4VfzITb1D9yzgqa6ExsBjDVvG99b6Q9/SBjWi2JbsMX5SiPux9kndLj9/s270UJWrTM+caX1Z3Lg6tK37OZO5/tbYCuc4IDd3ZVU3gLep5H4HLUprWgKbdy0kB6ibF32MftxTXmVdV8RPEFgJSlFDfG4FkkuCUbjfCq1yDhU43C0AT2N4QVgZlFPiYmVFeygRI2FYYj23Xi0xd0LkqCGSIgemkcUDzJcVY4RK13oUBPgrZPsgbJofqAwxQEzG52OuFHhlGLZlNuWIh0IZaT2yTd9VLdL9UZZXOYgAxMJW4HM/ykWiiPOAsWFmfvflF8grvL5a+zpYIGGzeDXE5SdHuYkcs89muA1o8SYUj0FBBk4cJZnBi7g6Firn9vQXOD+GJZtEmmYTDs4lMNTSQWjqZI+eL/x+ktkWtWPpMZuH5qQnA2Gl5Evl5TMrMWt3ggQlDE0Dyt2izJrHV3Vy2L6zd6XIDnAYtPIPbyQflA5JyNnBa7uL+ohAFIUyYB3jmQmuwjQAg+AlsRRsrQofIPmpR7Lm5ws8JnRQ6MUyB1CXSFlMM1WZRyeErs7Lr7MlmgImfAnFC10m5m/0XxuFPr9X1ZBRo9OtEBMZwCRCaWjaZnUX+1CBoRgXFuoWti3uhmA7ulP3JMHk6XpdJgkcU4Zd0R28WOcQeOiq95z+cQmUJJItJcNHzSkthjKXMuG2IMY+QLpslddeBVX5qhT4wv0zufm1g5LE92qiCoXVvFy3nlMS78xKoR2tetNddo8Kvf/4yiAQHjjVoLmK9azlZ7WyqhitMGO75lmxi4W7uQnpVXpnFnmZAIoiOgE1ySZCvexyr1GzFrsL5hCgScVz+MiQ+i1ROj4iHtO3TKVzXuEt+/EPx9/VYp/dwAAAAA='); diff --git a/docker/streamline-src/app/Models/Patient.php b/docker/streamline-src/app/Models/Patient.php deleted file mode 100755 index 596c1c56..00000000 --- a/docker/streamline-src/app/Models/Patient.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/P1N8tNQwaczrnzVH2sSYRhbSQnENOtSKoZ4ZGOu21RYN/pYxlMn0BQqw7w+KxLvV1c6Y3c8wnMzgFr+ZYPCuMLaXumG43QrPBQS/WIKY3G6zIrMt0fwqFF7etrGYx7dPx9ov2T0Ux9e8jjl/kqQyQCzALthvEeJTkDsSlrzF1DPi0ACBQzVqWW377JaPfs/dngPyOcFoahOUa1i7qXWnB8Ba1+XYxnNaaHFMLUOIa5EbL0i809mcxOp4claiIrtWyd4j9xTYfBhSAAAAsAUAABSD5IyBTjlEKo4kYqMvYBLmXvbWiT3T9lOKqPHwEfLq26eQj64iMKtC0+yh7HcU5GHL24fPVRDrud/iiW8LyD06hE+lZr3pZfWXZyuS3B5V6gJAwjJGnmCrjcE/Lu1a/C89Zz4ugepeb77b0bLTwVg/bxC+jTwXMMqNem+ERoDQHt+Vj8vvgZDAHQxhsyjuttPl0Q6Hb5XIbtRRfAK8byos8+iPp++Etg0m8rgmY6ZF9HcT87zRhX1MzHRFkx9WdqEw4BgEPka/ZXCxKVavQX83aqcTeXsvUYNVQ3PrK/Y8fPoQ3fuG8tmma4XBDcm87YcCfNuN2Lahq8zxVPt/rAl2sSfoGvci0ts0r0XqMYc9vNCo+pLdmdQoXoCFgngwyCVbSR4gYgBwkXb/VFB5lISdP35NtqINhssUnKxM3GohKB1Zd4G9AZ2IJFNdBcaMuqzfs6rn5Ss2nQ7BKEFVhdK/Hb0rMwbCFBpbH6/Z5za0o4CYA5WBJr1w6b/CEI43dd7eW2lMncBjQEE/E5gEAEQ4Hs/7YRBge/LxxQVcsyU6QlxpM1dVuAC3CmLddgv7XCT/wKPjK0uFzj5BoCLDuAMJLN2IpAzcLyucUmpggyJ0OnKRVJXobIsvZb5Tnxzd75KYSQZR29IhTHclETUNeoAdplHXYHfqIksFwa4MTmMHKkLj9gAuBQ5SEAzUlQED6KdnlpW8p+lKRVBmAuSoxii+45dGg+f/CQYBX7chZikKe6RiE1GO3t0m3VF3fEFpuuBne9VmCkAVOgEghSCbwXxIrQnVFV5aoY1zucpA2hQsAZuhSTbLbiSuPdvzeuPLyJu3Nc1HXGzrdkgsu+EpY+AOVlaVQCAACWbMrELYMKquAvPeeCqRuNuJpHAw2Lqt/lJtlsNQmQMHgrwfwwmT3icobieAf5WzHTylNX4V3e/BwOpY+q/Xqe4v79gyBFzrnbNynBMe/3h44MLI4aiHKlpTZrDOOncQgTXLR9xDXojpdkM6rE724vldUgyPh0hTiVxo0BS7x5OGbdoscnzhp9sx1CEbqs0KsYT4mSUSIVRBc0Smp0xupmZUwSMkwOCxuaKmquJZpAhq+XJNtSOSjFOOsKVVIDQ21vdRpb1UGYO5ygtJ58A/n5dyn4jRC5jz3gGySM1o+nCm6VeQ5k72ZjVkWR4WFilnmFhsomwcknjU0+kiFUDsLezcbBKe6nIBsKw9umVHB4Djyop/78AIiIN6eHCAG6H2raXnOUMF+UYLPyAN1nLIEVk7Rk/FFcyas3FxJJReOqmhyddeL2RkSvRt/KY6/R92IBmp0uRtc+UhfbymplM14aYc1J9rXLK2JkZEWkAwKr1nbcL4zZjC+bQJh7BbaJByQpIQbCkPJ+nq/Ft1Vd2ijsKPa7p+Wl1C+/mIGgZF6zzRB8uCj7qhCitmXuCSg4r1yq5W9+UXq+6Xnjd5txHU1MmQjMHihmJPNu7itGZK9eQudaeeLkd1aL8ns+a7ivyWLvak8U/9TdBkU81wZwiHb7cTW8ty926/R+5O/wdiiPactshhTh/WiXoov7wfs/1tacEeK1B7YhuJrxfnzEcwvn10dpVEQftH5mLjPwfl4BNiIxrLnxuFxpv9M6b9spNiXiAdPEpVTaac5/J22AFGW+cH8R3OY7w4N9/xhDiOTCoyMMOHZ3vO3iI7OVLEHFbWnOOGlTOMrczlPAz6XJqBHuYu/t6eW9WAo6h7E6COhkAb2FnUyRjTDNybvDmButyu4pzryN/W3sy7ngXf1/Yy6kT7aWn56y7LV08tTgCx5R5ASTwcNFyQO7WyyFDUvk48Wzh47qjlBO5uYSDJi0EwQkL4C3TZgvrm9DJMNcJyIlZYp/mgFx3uqVfNScHDKou+X5xINZosLVF/xOk8vCJOKL8BDj8V2mb4nIOHjhP7OjJwyJFMVi0/q6IAAAAA'); diff --git a/docker/streamline-src/app/Models/PatientAccountConsumption.php b/docker/streamline-src/app/Models/PatientAccountConsumption.php deleted file mode 100755 index b920a698..00000000 --- a/docker/streamline-src/app/Models/PatientAccountConsumption.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/P1N8tNQwaczrnzVH2sSYRhbSQnENOtSKoZ4ZGOu21RYN/pYxlMn0BQqw7w+KxLvV1c6Y3c8wnMzgFr+ZYPCuMLaXumG43QrPBQS/WIKY3G6zIrMt0fwqFF7etrGYx7dPx9ov2T0Ux9e8jjl/kqQyQCzALthvEeJTkDsSlrzF1DPi0ACBQzVqWW377JaPfs/dngPyOcFoahOUa1i7qXWnB8Ba1+XYxnNaaHFMLUOIa5EbL0i809mcxOp4claiIrtWyd4j9xTYfBhSAAAA4AEAAGQjViKa5A17LGWbtfWiEOi4nitrfVT3D4Zn8cNyMbDRtzzBQoI4HCg95Dh7oqeP9jC9tT9hvpTD+DcFTL0WRoIzUaZaeaNkYeYkipkZu9C8CmPItj2cPmVxUgILzwukcGnHy1vdNI4qLyVJ0NUuDyzag/hS9/HoTRdkHx68ngZjTeGa4wB9nnbHTfk+5/ztKcsb/M2/Y8Tdub20JY4m71JbZscY8zLy3UbtMQr69SEsylc8GirMYsqEjFB4mfxQ1gj+jow1U6GNItigiF8okfqrVloJ0w2Hrfk80A0IG72vSiNxklJMJKN4+D8ckmlpxUb+Rd8x4FaRL8uM2Bgd5bypwR7iwtEPa93Z8/W0OYqXawb51yWB7Vjh3/BWFXvwc+UYVPXvIb8y5bKfU9Jff9e30Zqm0SNNDjXJe63lplUZpU8VLMxICKJnX85qaS3jVPZJuanX7X51hsay/Uf1njFN/og86R71eAdHb01wOKbNsmH4UkZy2nd76kYUjphERw7CJ6OPOYHlPVCiNx+MnKPEUurGo0HRXB5g0ZjDSzA8ZtdXlCnqkaP/ZwTKChhwqAfAJeoN0Na9OUeMkYThYOFb/ZRmJb8q0mXqhmFlRSV9JsSqYEQ7+j5ZkUp/n/5qhwAAAAA='); diff --git a/docker/streamline-src/app/Models/PatientAccountsDeposit.php b/docker/streamline-src/app/Models/PatientAccountsDeposit.php deleted file mode 100755 index 2962e2db..00000000 --- a/docker/streamline-src/app/Models/PatientAccountsDeposit.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/P1N8tNQwaczrnzVH2sSYRhbSQnENOtSKoZ4ZGOu21RYN/pYxlMn0BQqw7w+KxLvV1c6Y3c8wnMzgFr+ZYPCuMLaXumG43QrPBQS/WIKY3G6zIrMt0fwqFF7etrGYx7dPx9ov2T0Ux9e8jjl/kqQyQCzALthvEeJTkDsSlrzF1DPi0ACBQzVqWW377JaPfs/dngPyOcFoahOUa1i7qXWnB8Ba1+XYxnNaaHFMLUOIa5EbL0i809mcxOp4claiIrtWyd4j9xTYfBhSAAAA2AEAACUGS1NHLxCe3lSuOJw3BcvYO4JvCP4A2q39+YpcZ4gON5Y/7lB8Cul2SdkyAsJY+Hy450IFwWakmsNpVBKu7DuDfEhQbKuMT8KTj9y7lcfL+wtRoRrbbsCgzy1y/24bjAaqkSToHEnMD4MyI/J+u/WM/6bywFvw8VMtUEB7Ua7qvWGUHmtgUW80RlXgSA4pLIBGwfyHhLIKT6RlgzLAjZLmf1GbXHArzpXLR8nbjlij1pRMccKj+vXs6E0NkKMOoFMfDr43s+odiTr86PgQwlpDAKKQl0gUiJbhN/I+xzLbtRj4qQhCzSL9/LubtJxK8SpeBqOvWB1b/E3o/iWDB0rdc48GZCBTdnJ8F+lo+iwv6KbyYZDcBCbE5ZaWHoNpUUAQ2WIlu54B2kuVPLjzn+Hw2zwI45RPexnOo4sYt/dPJMcCeQBM7TyAiLg56pjziBkiv3k0NXP/B6wl4mqvUxGHDr8c9BxZ1D9Fb5BsH3vC1o9yOGctlC+AcIfuysdDdqt4Mjpdj/mTCuN8vZLbv62Mh572IvYggSVp0WXd7IRB1u9YWdrGVwm4D/WbZ1mzFAKAC/Zfm5K9XJG03XTmK14ibdAK/SvnHRv9VltMTrhWHeNdG2BZsTkAAAAA'); diff --git a/docker/streamline-src/app/Models/PatientAccountsRefund.php b/docker/streamline-src/app/Models/PatientAccountsRefund.php deleted file mode 100755 index 2e22e92b..00000000 --- a/docker/streamline-src/app/Models/PatientAccountsRefund.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/P1N8tNQwaczrnzVH2sSYRhbSQnENOtSKoZ4ZGOu21RYN/pYxlMn0BQqw7w+KxLvV1c6Y3c8wnMzgFr+ZYPCuMLaXumG43QrPBQS/WIKY3G6zIrMt0fwqFF7etrGYx7dPx9ov2T0Ux9e8jjl/kqQyQCzALthvEeJTkDsSlrzF1DPi0ACBQzVqWW377JaPfs/dngPyOcFoahOUa1i7qXWnB8Ba1+XYxnNaaHFMLUOIa5EbL0i809mcxOp4claiIrtWyd4j9xTYfBhSAAAA2AEAAKQmNJF/tzkb+y+NzSdR7gn/ZolnxiXexfoHJbjPqsX/nPF/aPRaLWsw9tFj6h6daAsDStGMAfr/RBUyS3R8GNDMtZJhyPoWaCR5TOFz/sCdXXP9gL2D3Se2S4+l5MMmmXWnxOYSvdkGfKwFcmfDDEFLdAS7IZbBvIVRGFByL7fhCnB/0mJKSyMjepSFucdbNa7zZNygCeWbyStFWrkdIKCAwVh6VK9qLm0Za2KeqCKx2tQbZHfvIvkV/SiBbCbBCJSUifa04qQQEWQDuB6ryjg/xdFqp1PSv7olGl1ca0SsslOUbs1YPqXUOzmgDhKRgfE8G/aKvmjNKGo1sYCihMUHPhfgDNj8beKyfaytySfvRKc94qKFQMx+9MHNjkRs3w3TlGzXnbXNeilUDFPifMgbnHKxBNEaHp0haeAPpfrKOBrQrjcGps8YIQ8r4oqgL1LTvgU2l2/Gi30CajHBZN0yhI5aAJbQ7E6tJKAvWLr4neOuA+4GUPIWV8J/ClFw8t+ATGr9N68FKRKSxGMZ4/ELdI+HBKjVirfTqlc9eFjoCB1s869o3eyb96GAzbxVeqEW4maZrDbUP409y7H8iJNZ0lAGtF3KqFwuIyoZJfIJa8k9mvK+zVQAAAAA'); diff --git a/docker/streamline-src/app/Models/PatientAppointment.php b/docker/streamline-src/app/Models/PatientAppointment.php deleted file mode 100755 index 8585415c..00000000 --- a/docker/streamline-src/app/Models/PatientAppointment.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/P1N8tNQwaczrnzVH2sSYRhbSQnENOtSKoZ4ZGOu21RYN/pYxlMn0BQqw7w+KxLvV1c6Y3c8wnMzgFr+ZYPCuMLaXumG43QrPBQS/WIKY3G6zIrMt0fwqFF7etrGYx7dPx9ov2T0Ux9e8jjl/kqQyQCzALthvEeJTkDsSlrzF1DPi0ACBQzVqWW377JaPfs/dngPyOcFoahOUa1i7qXWnB8Ba1+XYxnNaaHFMLUOIa5EbL0i809mcxOp4claiIrtWyd4j9xTYfBhSAAAA6AEAALODz2PayZYby8aSqKeZqQvgnaBYBRn7UMoSSvZOp/J10i7uOQdERN0TRwUfE3DDaS7HEcb2457Gcxo6+A+jF+LMvijszGGxVqNLyTD/bC8Xl5JHSrVFqlbIzzR+Dye3Cgzzg/spTSCKVsF9hgkaCwztzkDUyZexUhqfDMCpEKAEBrj00U/p/L7B4iYqOx0FiwCzOCspYZtqhrmzlNsoQ+p4iJ/4bH4O3S9gVPxbkecehIkOaykH9ZGUY+mlMTvtZJmPqbhiDq0xHflltfq+yJHM0FcwXm7GznngvvD6lI3G2soqeFS3VcQvLshT2VRknANSnvDf70nmQcizlcjFP7BoMO3fphK0kcFs+9UMM+kM+rp3rwy/LGhOa85yTNw5kKmvUH3zLGAXeWn9UeI3LHtQwBkKzqRHXxqvFVfAwSKZMTIRraxZ5VEs13rQP3ZkKz01pbmim6E2oCmHQH84IL195Da4dHh8ILi6gT5BbAqyPvu/koXBeuZE/uXKpHL6yBt+HfWCo2igSVnnv7LhLWfI0rRVSrpzDQWLiqlMVhCBo2QNslMlfZAtywS93PKGKonQB80sUAFRJ6HWPjULLOEqCCxQpicpRxOVC+b8zogzg+w+vZziQAomBcX/jgg/L7bBAL1+at8ZAAAAAA=='); diff --git a/docker/streamline-src/app/Models/PatientCategory.php b/docker/streamline-src/app/Models/PatientCategory.php deleted file mode 100755 index 841df01f..00000000 --- a/docker/streamline-src/app/Models/PatientCategory.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/P1N8tNQwaczrnzVH2sSYRhbSQnENOtSKoZ4ZGOu21RYN/pYxlMn0BQqw7w+KxLvV1c6Y3c8wnMzgFr+ZYPCuMLaXumG43QrPBQS/WIKY3G6zIrMt0fwqFF7etrGYx7dPx9ov2T0Ux9e8jjl/kqQyQCzALthvEeJTkDsSlrzF1DPi0ACBQzVqWW377JaPfs/dngPyOcFoahOUa1i7qXWnB8Ba1+XYxnNaaHFMLUOIa5EbL0i809mcxOp4claiIrtWyd4j9xTYfBhSAAAAUAIAAKOEQG9DEaJu0QGdTBX5fFrbrV+lHf5vGssOHrM5zwvKHvqFY1+8D4TfhOu4CWrVEJTn8C1SwMcMnjw/kzg2KvBF/u5/54w2Y4LFKDL6jbEZMUe1m+jJsR5yrAmMbs3cN096e8UdMkKzHF7n8pPsJCiAM1lneYAma9CHXSDmURp2Q5jN5GEGbYPq9KMaCRscnNEoqCsLoltIApUrr2SalJ/Js2bfB3f+3VywCXNICu5n7ucYU3N16pOJQ/x9jVm3P9i5rh0uGg3mYV6FZlbSF7Hz+DUcjvwDgiWjvV88bZ+p8yfk4lz82kcV908vrdrCblUyA7oDJbIP92yN/An6SgPqHNRYhi1KjhEr9K7COOR0TuHvbm35u/aMwCkJ2LQBPxAl8CTnRSwvAH3EYyxMsbpp7p0P9IBIEHom21a2+FFnt6TQzgbr1dnGRJxUyE4bs2UVC2YxJKAmB0hldEGCvplvVWvtkzgENaixUmbKcNp7nJJjQDvOGq9FTUHeYCJoPSdv/FAF49/HAzBpYxgz6YZ9hD9/dqhn9SyVBNYGiu5ZQZngLdAkmKqqrSeA+h5RglA279T8YZZQ2FNGEGbtR428TQ38OoU6vuf0cxvNkbRBkben0SBuUfWCmZtA9lP5y8V5s8O5ZmBgSnTo1hSorSTEh10K3qIxaOtZTHR9Q0qZl+W3Jr7lvg5JFgGWVOBVfoSkqg8P2nQCys1c30Zwxc9Bpk4gxqHV3bUdVlhYgIYQ+utmre94/ND78BaE/fwYKPQi+uEvTuNg2YtSTRRzVoAAAAAA'); diff --git a/docker/streamline-src/app/Models/PatientCategoryInvoice.php b/docker/streamline-src/app/Models/PatientCategoryInvoice.php deleted file mode 100755 index a85b23b3..00000000 --- a/docker/streamline-src/app/Models/PatientCategoryInvoice.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/P1N8tNQwaczrnzVH2sSYRhbSQnENOtSKoZ4ZGOu21RYN/pYxlMn0BQqw7w+KxLvV1c6Y3c8wnMzgFr+ZYPCuMLaXumG43QrPBQS/WIKY3G6zIrMt0fwqFF7etrGYx7dPx9ov2T0Ux9e8jjl/kqQyQCzALthvEeJTkDsSlrzF1DPi0ACBQzVqWW377JaPfs/dngPyOcFoahOUa1i7qXWnB8Ba1+XYxnNaaHFMLUOIa5EbL0i809mcxOp4claiIrtWyd4j9xTYfBhSAAAA6AIAAFwR/GPpSgnkUNQvYWFBqoYrEn+d7oa4lb3zmrLYWOQB4y5bsVbRgTsCh1gkIG7XmT/v1fIa+3CoLVZm9pwu2oPiKcXfLQuEbGM/ysJ6uzCWWk4VTfqQEKQ4D4kDNjBEwV6SiOAnnawiVoimfaQGUQ7lBZNKzTj8BIFE9w/XBAms/+udv2icI9Wm9LC2nia06+/gXoHEcNOnJzqgVcTO0PJqEMfvIbHQYtadGQGtUht1/uo0M8Bs63zQb5Vg9bjzkS2M8JbFZN7c7joOJQWBVzF0pkzDkqV1DvHcuPDzg60XRW2yxiomC+OLoL+sCM76FuOt9BoXrK4Uuf8LXfFo7lZT2HunqEbxYXd5fPALjCjkPSBR5D4cdojGDYIo/UognlwQkR+yYXr7pe8oEH0QshCwe+BGh4CbRogF9PROuprLlVXq1X7b5pbl8suheAxiKSxtpDoThE1TYQazKDOaxVMKxtaMXgj2wgqnLgzXMB3YZqXCpl1MjG6hgg7Ww6FvyiUstnZfX4JqX7QIl3ghZC55dM9F1fcOfKxcZ5ZyB00tOwoM2kaKJt7S4DSdaKX02R0IgEJrobOpuk7UaerRG58PcMBJzcPkIgRyD5Uh4zVNwpTDv9gEzz0zKzpwy+/achqGV1qV51n/dupzKWGJGVaTifC3BsRQhuugerkgO9prOqA7+ToKiTWRX53IyfwFwrTVDwpZC4q9Bg8H5Ix8cyvrppzVyz9CsDu/6a+go/GgOTaR3qS/ySLfZ3l1t1Gps0pAJiIpAH1JLf39ndcEPCi6EgxC2t8Rs4ZlBjXEjN6AZZwu2QPUcv8XRrAun0o5DLpenpuwdCCPYDCiXWMFV9wWUrW680XswSrVd5Tasqt4jFsxp5+6JXND2Uq0v/+4SXimQTQQHH4FF5kLWEvRwVnHpP09kwxFygsXKcElAdVwoZps9Iv9tzkrD5KTVFwn4Q/su2EiWPDjXCMMXoI/rLhraPsoP2Aj8wAAAAA='); diff --git a/docker/streamline-src/app/Models/PatientClinicTransfers.php b/docker/streamline-src/app/Models/PatientClinicTransfers.php deleted file mode 100755 index 5501e61f..00000000 --- a/docker/streamline-src/app/Models/PatientClinicTransfers.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/P1N8tNQwaczrnzVH2sSYRhbSQnENOtSKoZ4ZGOu21RYN/pYxlMn0BQqw7w+KxLvV1c6Y3c8wnMzgFr+ZYPCuMLaXumG43QrPBQS/WIKY3G6zIrMt0fwqFF7etrGYx7dPx9ov2T0Ux9e8jjl/kqQyQCzALthvEeJTkDsSlrzF1DPi0ACBQzVqWW377JaPfs/dngPyOcFoahOUa1i7qXWnB8Ba1+XYxnNaaHFMLUOIa5EbL0i809mcxOp4claiIrtWyd4j9xTYfBhSAAAAyAEAAPozizZw0TvnlwtvuQHEB9rLQUSLt661zAfjL5GMqbNFQ0mtd76o0F88cOrSbi1+0ZsVcAZZVEbvpOiZvGtRdoXv4KS5nes8KdZiHF1aXssxvIe0BeZPvp1SiK5I6Ry6twqxn7cJP+prixOmLGNur2T8JI5ibnQyLujhDegilZDVzfPT+y8zPdvNVCSA7nVWQ1DbWxzowvf+sIL7/YNY4BD2iWj10LBQgnzsCMhcxWOM86A5iA3u67KvEWaSQiUsURoGwlqS24Do/RnRx7K/XMrLb0avsheQJXip3O3rnk1XWbja77/5P+3nLRSE16ZSYYLg2dP9OWmyfsdPNvx0TbxqheV07CN6v1g+pH2CGUL6NJTsVk5p/T6m6ODxAx/KVss2zr3d+vtueidr2lzNmAETeozNm0/vPc6LxBQPF89vJkjv4HwVq0eaXe/10Q/aD4cShmPmLOLZVokFcQaIYyJzM7OUn+jwqNSMu6O/rDfJ9qobaGKnJYnJWKyUVNM95tonKxMesD4pK+kfhfvGx7fiIz8+zzZzGrgBA5+eekV8agFx9CkYnpNgAyxWJXlCSoUxXpgDfvfwi9Uyi572EgsGjGLbWdYvyAAAAAA='); diff --git a/docker/streamline-src/app/Models/PatientDeactivationReason.php b/docker/streamline-src/app/Models/PatientDeactivationReason.php deleted file mode 100755 index 99ad76e9..00000000 --- a/docker/streamline-src/app/Models/PatientDeactivationReason.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/P1N8tNQwaczrnzVH2sSYRhbSQnENOtSKoZ4ZGOu21RYN/pYxlMn0BQqw7w+KxLvV1c6Y3c8wnMzgFr+ZYPCuMLaXumG43QrPBQS/WIKY3G6zIrMt0fwqFF7etrGYx7dPx9ov2T0Ux9e8jjl/kqQyQCzALthvEeJTkDsSlrzF1DPi0ACBQzVqWW377JaPfs/dngPyOcFoahOUa1i7qXWnB8Ba1+XYxnNaaHFMLUOIa5EbL0i809mcxOp4claiIrtWyd4j9xTYfBhSAAAAGAIAAGyTwkqa4JeZa0yixuaF/nGXZS3/LXL/wr+GNgkiKoMJ4LGZfgcO38bp+HFs4os3wlcVnoxxqRzSKBixRS3oZ0ilSrV47UGJ6H1ruOyifB7y2Ej5KDOdPvBrEjHLwRhySS0vYRRhlrFf0MQJuALACWNKrSQk91vvGgqB2TGVnFW9JDjpgs0Aw/nnVzdh55GA96wCoCuW2z59XPx/+lBTIQjTogKSF1R9S0PYKa9Fh+WBBIJ7tyyF6YqWanWCrO7BBGSGmBi+6h7Q4nPNqrK8q2yISfMW8jOnTNYZLPWUHKDQA+GDB9V7m6zL8xLgct9RqXt4twGN0Tnwe+WjcaYspB1rfri+mk9igl5jpLhpPYh2OYBiiA0E+FivzGlIEjLMdeKiuBjtgdkin5mO5LDNu9wy1OiuBJUi1laXRB2Je6NTFJi8ECcgIM0f1HCf8VTkzgI4IcAurXMYD7p04EBwAXIlUuYlQBeXRTVwhvgBQg3fJq+bKWMUgg2j5pMwP/yMqz5+mS9DnVK5U/UocL/U4Bl5p9vMM6/BpsXRwpFpDzjjN87MVtE/Il0pi9tWgjjTzhCPhCk9wjGQjP+qC9Ud8s+9rIVk51umArCdbK3lrXovQLH5gBpxjryvmhmfy1x00VXCin4ftKSxNPESkbgK7/PJLmgj4T6AQliG6ymZm9i6OokQDR6siooLYbShGrS2lL6Dk+3LYcu1AAAAAA=='); diff --git a/docker/streamline-src/app/Models/PatientDiscount.php b/docker/streamline-src/app/Models/PatientDiscount.php deleted file mode 100755 index 331034ca..00000000 --- a/docker/streamline-src/app/Models/PatientDiscount.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/P1N8tNQwaczrnzVH2sSYRhbSQnENOtSKoZ4ZGOu21RYN/pYxlMn0BQqw7w+KxLvV1c6Y3c8wnMzgFr+ZYPCuMLaXumG43QrPBQS/WIKY3G6zIrMt0fwqFF7etrGYx7dPx9ov2T0Ux9e8jjl/kqQyQCzALthvEeJTkDsSlrzF1DPi0ACBQzVqWW377JaPfs/dngPyOcFoahOUa1i7qXWnB8Ba1+XYxnNaaHFMLUOIa5EbL0i809mcxOp4claiIrtWyd4j9xTYfBhSAAAAcAIAAAXfMhXl3erfPot1zQCxCz7jrruY//YMnc1zbDb5Y/fgDi08JolvcP1/2ZBcdT2EL4jZMev0Mmwzhs2LMYLIyYsnTrp+OZ3cicN2cLWUgLc4Xtr3xSoHvtCE0QGh9040IKa/gWdT8maDlg2mS58gscDc3HE7/6lWz0i6Jrxc8EnkEgcLsCbJXbzZwjFv5gaL/Q+y4ApsMeXL02UXME5+tUB6WsKEaPjd11H8JOHEg+a3vasd38LvyiGzVTdezIJox+Zt++KT9rLEnHcu2SRssyxMsv6B9nedSlfKPuwk0g/h1OTLOSpQoWcNgKa92zULPAZX85pXq9E9ayLSIDr1tWIa8jmhU5LlxWYArNExbhuw0OSQcZ/fTgcUdx9E/4sKu0j3H5c3TLUtq2ChK9J4PaL2uTun1Q7b2Rs9GCszPWQSPsWiczUGBG/4TS3AK/PVuWfEpuDYCuSbxZbtVF8BKfbnMlKyuKJ/uRP9ZGQEDi01pLbTjHbluNoLYWHd3x+6XIqp9hNhRn/vKbk4NAqFxcQBqugmwboptJHyPps7Tu1PbqQ6jT/ZOCBZezTHBcy+iQDQA5oXtMZDm6hVrE0gzuNFJArUl5TW4tAb14u97aFd723cIVeDwUWvE0uNTK+93sr7cs6hZXiCRHxiRvIn183rZfd2t/WY9tlHKoIr+zV+pyUBY7JdO31JK/rTcWB3oR9j4y5WEsIzI4oleL+mujFcbVoAwEaPdcY9PPfSMasm1IhvN5I4pRaSNjj2QBxadmYGtgKfswJfM03HFiZAhiyAmkq6bXPW1RdNsuN/75fz8IutLtGCCfomr3BQOwPioQAAAAA='); diff --git a/docker/streamline-src/app/Models/PatientDispensing.php b/docker/streamline-src/app/Models/PatientDispensing.php deleted file mode 100755 index 2b1f2427..00000000 --- a/docker/streamline-src/app/Models/PatientDispensing.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/P1N8tNQwaczrnzVH2sSYRhbSQnENOtSKoZ4ZGOu21RYN/pYxlMn0BQqw7w+KxLvV1c6Y3c8wnMzgFr+ZYPCuMLaXumG43QrPBQS/WIKY3G6zIrMt0fwqFF7etrGYx7dPx9ov2T0Ux9e8jjl/kqQyQCzALthvEeJTkDsSlrzF1DPi0ACBQzVqWW377JaPfs/dngPyOcFoahOUa1i7qXWnB8Ba1+XYxnNaaHFMLUOIa5EbL0i809mcxOp4claiIrtWyd4j9xTYfBhSAAAAEAIAAI/acdSn9XiLBuZ09suHsURkwN1VkB3Nu97DzTzFnRVGivcKPa76NZDMe9UYqv8IegkUngGE5wp7w9YEIcSWbKQeEXKtTugKtSoqZo8ymNOU5NOXoEWNwBgVLfUUvPbY7cEKkXP3+Y073wlxohPWDJnEr5pPEtYObTVT2jPC54wxBZv9O3kl6oI/8OgNxK8XXlJd0F22hqr/uapPYYZ1LyhRfAao2/8Q03+UiSsGOgA2j5pns5N31JwYjOL1BIs10E4lTHXtyAL2wazxZhwL+25xj6nvWTWiFnKA/N2kt+XtLMcZp7Guh6nS141bekzBh17vuM2sCCZ1PRMjjzzQJeWkk56OrMYWlKXAl3BqCK1HdBHYzUIw5qkYYTvwi/8Lfv8M1mr4ZiICtWLRNiLyDyftI+ZaUPq9YZyM+oDmkgxwH4YJfegrnT1F5+8zlkLeo4/ZHsfY7goLqWtJOwWn+AQyJiFJ6w0Ng2IYYAGjeznxy411nShnArQDrgRe0l/AMoVcbyqHgkOf2QwnNYHE9OM73wA+XhlcsnxRrjPhlw95tgqVt+PNSzWIT1245IMVgiJCmR87Mzphmyi1t4F6B1n9UROUFSYIl666+iGoA6yTMFUiRQEfztK4bqCl7+p24P7WoFlh4sSax8p3UEb6kPq5eH6SktiNt+XsRN+fD3M+u00E9ugA/WcNEB2x1MRbGAAAAAA='); diff --git a/docker/streamline-src/app/Models/PatientDocument.php b/docker/streamline-src/app/Models/PatientDocument.php deleted file mode 100755 index cf2ddf0a..00000000 --- a/docker/streamline-src/app/Models/PatientDocument.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/P1N8tNQwaczrnzVH2sSYRhbSQnENOtSKoZ4ZGOu21RYN/pYxlMn0BQqw7w+KxLvV1c6Y3c8wnMzgFr+ZYPCuMLaXumG43QrPBQS/WIKY3G6zIrMt0fwqFF7etrGYx7dPx9ov2T0Ux9e8jjl/kqQyQCzALthvEeJTkDsSlrzF1DPi0ACBQzVqWW377JaPfs/dngPyOcFoahOUa1i7qXWnB8Ba1+XYxnNaaHFMLUOIa5EbL0i809mcxOp4claiIrtWyd4j9xTYfBhSAAAASAIAAF7JiigeHC96An7Cknip7ngSshBd6GOL3p0MOyWJHXbYbPyk2OHl390DQ0ZovSSfRTzHM28p+x1CqQ853xxilPjm4WSP6l3kg2DYLKPw62ReScdoC4sMpIkNjnMwTY+eVaFgOxqWbtpgHOghxvRdvl3nKJxrGFZJRH6i0e4GZf7/xlPTr54xnMPd+cyyPcAm1XiIQuX9XPigmrRPfM6i1zHMe+QUCb12+4XwAySROJl+YofrX9ukF38yYBrclaCkbZLjQSQanuzpAasMFIMgNgDJZh9WAg9tqjGEVjrHRk/zJQD7vxz6X+bZLmkemEq1DN8PTDkv9b+2MT9Kr2e9viqTvogLlwfkaBzynDw5X0Hq8N+P8J7rvxJR7iwbV1IEc31iNEg+Iz3uDwQiOfawISiUItlBD5iAi5oclam0LPK8Y+PjR8wKfBxUU3HADGzIXlVJruium2Kh+Fd5H+UtcYWlL5aIkfSyNFyN7GXDbcQGYRnIq3peFCrzWox3X/XhDZ4mBSlPzL4oM15GQEuyXBhWEhb79ox/YnIE5ZDKrcc0+SZA0IVnJ2zenKe6O3hVJ05riPMAH2FngUjJmGUquYFCpCEAN/Xf48oZykDI9IkzHHaDP4qSEGG4pwpqPmrCMonNr0gfuW7+34HspVuld4fe/wMfTaz0TqankHNI3/olkHj3TAbcT/n8aqPZyluARs3VQGLtT7m4PwzniNJV+P4nH/+kBMZ+mKyDgScL5fbpOenAjqWNT1+IgNurO0Qr8BHZ+ZRyGCeRAAAAAA=='); diff --git a/docker/streamline-src/app/Models/PatientEpisode.php b/docker/streamline-src/app/Models/PatientEpisode.php deleted file mode 100755 index 0171bb99..00000000 --- a/docker/streamline-src/app/Models/PatientEpisode.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/P1N8tNQwaczrnzVH2sSYRhbSQnENOtSKoZ4ZGOu21RYN/pYxlMn0BQqw7w+KxLvV1c6Y3c8wnMzgFr+ZYPCuMLaXumG43QrPBQS/WIKY3G6zIrMt0fwqFF7etrGYx7dPx9ov2T0Ux9e8jjl/kqQyQCzALthvEeJTkDsSlrzF1DPi0ACBQzVqWW377JaPfs/dngPyOcFoahOUa1i7qXWnB8Ba1+XYxnNaaHFMLUOIa5EbL0i809mcxOp4claiIrtWyd4j9xTYfBhSAAAAMAIAALrF62qnF/DHe8GkDK7c/L5KbHHK/fB4FSCJeYFdoYuASRY1AyN6MRRMyNbOEJJT7qYKZ6UGW/x+BCXLmPMeH3m8U7CkIUKOXaxB40dsqspNAEQwJlZkAlDBu2f0buCZK8F/iQuAY5+XzgZ0uvaP/gC1zoxoXlBw3kqqcam0F5YyAXpQ8pnZB8x0VO9wxu2IK24qY1yxBms0QV1nXjoY1u9Q3b4Koq38v8OYZq2PfyumlbiDQKAoCz3XYv1wFe8UH2WbjLNV5i/cS0FVv2J8/Kih+yb5zWCqvX3NVLgxx3+WHhkdNLAPfnHb8ItA9j81m0Nlso2FhFU+XOeAygR0Xm5WKrbmkgMsEkM7lT/Mf4rBtMwNuU3JEj7dZr6D3hvgPnBykHN1YnuQjnqEXYAcxL8rlqpRLwzGoGwUSqoyekFDvFhCWOWMMkLTyyEgKjTfBziBNU03D3+f+WcFA4lesO37l40UN0gC9HrhUurNk+2/lnGDVcgbfnW+ot+y7IMc6CSwhABhmbtyOcp7Ll17+vECH3/a3IvX6qHgCZzXVYOY7q4OrICUV4ts/haYH0FQ+X+YwcCiPTdQIzH7wdU0A1fkCKUof+Pj64YwqSbZJuhufIqV7UGhTB8FopXBrvX1v7Ss6fAXY88pna7IOPuvbPhjzxGPwlf9PcR5iTmo5jF1mbeitt98VcODtkTOxu2PtFLwh43yKDESeeT3ifQ6abYphUCia3MnqKGv/NSn6H7EAAAAAA=='); diff --git a/docker/streamline-src/app/Models/PatientInpatientVitals.php b/docker/streamline-src/app/Models/PatientInpatientVitals.php deleted file mode 100644 index 4d440ca5..00000000 --- a/docker/streamline-src/app/Models/PatientInpatientVitals.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/P1N8tNQwaczrnzVH2sSYRhbSQnENOtSKoZ4ZGOu21RYN/pYxlMn0BQqw7w+KxLvV1c6Y3c8wnMzgFr+ZYPCuMLaXumG43QrPBQS/WIKY3G6zIrMt0fwqFF7etrGYx7dPx9ov2T0Ux9e8jjl/kqQyQCzALthvEeJTkDsSlrzF1DPi0ACBQzVqWW377JaPfs/dngPyOcFoahOUa1i7qXWnB8Ba1+XYxnNaaHFMLUOIa5EbL0i809mcxOp4claiIrtWyd4j9xTYfBhSAAAA8AEAAFHTQ+COhl3YWviGxvVaKyBnQ7rX7FrPjZxb6Od4MS0sFz2EsmEvuXcvczJpDhtDxizsjJZRE8KBMbog91skw7MX0LXtkk3RK0qOVNm0tWfZ9SvhDWit/ir+YBPclnjVVob/5zyFc1CNSPRG/UftSwvZ1rNvdxpvpv1KvcWyz+X6hi8jTqYsrVmOPajTl/mWJ6GoYt2T686lL8c1q1NMKS+U/os2PuCiuJZlDqf0xHSKspuge1Wx6/1h+/qBKFDEMH0RnGfAsofixvDMabYaACvXCKrOx6zq/uoV1nU4cRdlW1oz7jNSnGlKwUrLzCzOUnCa2pF/F4LLebAlAakDK2gVY3+RtooP6c5SmUFIqaoNamrggTEVsNHVNrtJAK07Qk26ClK2KsMkC1xuB1ojlzVZabKkKLLtTz+FGTW3h4/JQ/2f6rF1SnwVI7MU25IgQvAPDjdyEcGsLhWhiC9xb+rjYg7I2A4EUjkFIMzAH9vvryyuLCTDoot4w4w+HJLaOzSJrWBzt/DZpCTAwZtfVWiJAFnZ7/VQTqBZNNt684/eU7TObwJdufHs0+3jhb8RjTqHB4LP9Cjw5CBwEq6M3xmVrQSo9Y4ameG+8x7J9CrbdZoo4EyNFteRNm0gSYj3GpYG3+pOLi0yAU4rOx39zBkAAAAA'); diff --git a/docker/streamline-src/app/Models/PatientOneOffDiscount.php b/docker/streamline-src/app/Models/PatientOneOffDiscount.php deleted file mode 100755 index 3ccf8a92..00000000 --- a/docker/streamline-src/app/Models/PatientOneOffDiscount.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/P1N8tNQwaczrnzVH2sSYRhbSQnENOtSKoZ4ZGOu21RYN/pYxlMn0BQqw7w+KxLvV1c6Y3c8wnMzgFr+ZYPCuMLaXumG43QrPBQS/WIKY3G6zIrMt0fwqFF7etrGYx7dPx9ov2T0Ux9e8jjl/kqQyQCzALthvEeJTkDsSlrzF1DPi0ACBQzVqWW377JaPfs/dngPyOcFoahOUa1i7qXWnB8Ba1+XYxnNaaHFMLUOIa5EbL0i809mcxOp4claiIrtWyd4j9xTYfBhSAAAA0AEAAEFHHQm9S/AWX5Av8lpSM1KyT4jghg/KJ3ncdPXAjJhjpq+Fh6Y/8Xs2aWZWsCtNjirTdwm09o3Tr9bF/47Lmx6sM8eJY7nZDzRMGQYoVZBXssJmoRO5g5Um6jFxYIpKklXF9jFSe0mNxDD/zx7kV+7e5V6dgOz/zBFQhfaXgZ9hXNmPuPZvctfsk646RJfUOwen4jdaJ2F4xUMpVKaYXQ8/s7q7mtNSKCmL9z3sqTuP5sf7larzNk37DobkeOYXBXXpArlz5Qg+aEvhcjQXtIwmJG6F9+spxsrZ2adlb+Sm2PvQzKBF4CIpVrCbKHdUXZoGbShk6Q8KPKw0lVxde8RXun12cb5eB5lQL071SBYKpafVTt8sew/93yTjv7xvXBKoD/xinJYzJKnxqQSQwX/j+iD4SXQqAKjVpE/asbUljB2epqA9p88qfqLISwaBYBG7cwrT4w8oybSkU7Y+pvdZEd9Ex4CoCAxmMjtc67s9blWovapRZapJp+p6fE0LYcmEixhMY9mvMa5s8Q73PuE7kOYx07Dlo22tD52PZpuAfbT7VppTr3QEJ68uk9hu1LB0SeJmHmhnY7mWkfacN8Xl5pNGWhfbx8OZyPd+1dmzAAAAAA=='); diff --git a/docker/streamline-src/app/Models/PatientPaymentMethod.php b/docker/streamline-src/app/Models/PatientPaymentMethod.php deleted file mode 100755 index fa79f56e..00000000 --- a/docker/streamline-src/app/Models/PatientPaymentMethod.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/P1N8tNQwaczrnzVH2sSYRhbSQnENOtSKoZ4ZGOu21RYN/pYxlMn0BQqw7w+KxLvV1c6Y3c8wnMzgFr+ZYPCuMLaXumG43QrPBQS/WIKY3G6zIrMt0fwqFF7etrGYx7dPx9ov2T0Ux9e8jjl/kqQyQCzALthvEeJTkDsSlrzF1DPi0ACBQzVqWW377JaPfs/dngPyOcFoahOUa1i7qXWnB8Ba1+XYxnNaaHFMLUOIa5EbL0i809mcxOp4claiIrtWyd4j9xTYfBhSAAAA2AEAAPaOYjE/I54wb9+84eX/r3kvSQXP2OfJx6ySRDOpQ9+hDNKZR0AVdFV1P+HhK1YWNiZ05pT0v7xm6WbdWqL41/eyiMRQ8RRXuCYKCdrVewQUhORfbT+A+TTI1uE0Y+QEnlu/yp5C1Fptl5VXRrZvRSL+7SshN+SmSEnnmqW5PH1cPHcLZxbzo1aIl77APGua5HsPKSV2OOuOZJSajZLHLneB2nbtn9fnmSfNS/tQdixRzH6dVtEtG2YOMbWTJuLhrV+q56QC74caO9h1TA6C6XfWsdSs3xTI3F9C004V1IZ/MchB0LA7lw7BePIHxYMkanmPgr5mFqPJIpwGEqi25n9mXwY39sIuo9tLTCHcfr9NLz1U0qemZVWy9LvQj1ZRhwkG+cqZqq88/u3nUk+IUlGVQ4fpTmmcQGFJPvK8rCxq9Dj2T/g5wA4Hjgsc5/nhDE5rurmrQ29++6VoOdqyMOqy+RHqU6U9IZhhEodV80IHRh+qiVv733MBlneAsNtczoP4s1KeaHh71MzElUnWKIM6edGUofrN5O5F86ZvS08HrP7GHunSejfSXb0VAxWzPO38W0xKZtl65n8s2jkVFSzydUavE+1WvJJhC75X0CVtMY66BRz7E+0AAAAA'); diff --git a/docker/streamline-src/app/Models/PatientRefunds.php b/docker/streamline-src/app/Models/PatientRefunds.php deleted file mode 100755 index 7d64e769..00000000 --- a/docker/streamline-src/app/Models/PatientRefunds.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/P1N8tNQwaczrnzVH2sSYRhbSQnENOtSKoZ4ZGOu21RYN/pYxlMn0BQqw7w+KxLvV1c6Y3c8wnMzgFr+ZYPCuMLaXumG43QrPBQS/WIKY3G6zIrMt0fwqFF7etrGYx7dPx9ov2T0Ux9e8jjl/kqQyQCzALthvEeJTkDsSlrzF1DPi0ACBQzVqWW377JaPfs/dngPyOcFoahOUa1i7qXWnB8Ba1+XYxnNaaHFMLUOIa5EbL0i809mcxOp4claiIrtWyd4j9xTYfBhSAAAA4AEAANzBi735MbqjXNnxSW2djFWEh+gPRsrM+4mat+y/k6gr0GfqKf6Xru/MknzujOazEuouGMJ1aGXUMbvYaZf2YWOrMcfbacQ0Xs+lrk6hnHaqkZgYiQFzcOSsEakxH1n3brBqUqNcOk1YYa3H/BnHCYSJeBMNBeMZNJP9+PubfWckYY8JjoH0lJTk2bhLPUEcjHFe/sQiuYeDLIwL6gMzs1EJqod78lxIJwSzVcH/ldkyAYsioPCwjA/5OUEFPBsrxbHIroJzPB26edR8PJNR72pNdkCv6IYihSSKncRansTouZjs+zhcW0CKIOkA9yfmk4tUgcipkmbRyK1fo6T/aRoi3VA47kZjPNl1xfJ7iD6Bj4QVFFYD4ndYzAlm91eAmgwF7RhKCj0xJxMsR7ufID+nj/MUc7BWmRCd6BceJcqpe04u/mdct2CcE7Mnh2wJzdt5i4zROb+gORf1wTRMs8VhXQvpV7DsAkg6CzVS5W3YYiywzcuzamEuAjeNcOpa9vqJqbKPevgumyILmdMBEj08hnrYCnkzyP8en5FNL5ze7ccj8chQyo6MS4+ZjPDmcPAQEGgcReI7wZNM2jsU5JBXdYK2/dqVFCI+9M3axYqbXAODVV6E3zU6rZtzY/Ci+AAAAAA='); diff --git a/docker/streamline-src/app/Models/PatientRegistrationField.php b/docker/streamline-src/app/Models/PatientRegistrationField.php deleted file mode 100644 index 8c6d0000..00000000 --- a/docker/streamline-src/app/Models/PatientRegistrationField.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/P1N8tNQwaczrnzVH2sSYRhbSQnENOtSKoZ4ZGOu21RYN/pYxlMn0BQqw7w+KxLvV1c6Y3c8wnMzgFr+ZYPCuMLaXumG43QrPBQS/WIKY3G6zIrMt0fwqFF7etrGYx7dPx9ov2T0Ux9e8jjl/kqQyQCzALthvEeJTkDsSlrzF1DPi0ACBQzVqWW377JaPfs/dngPyOcFoahOUa1i7qXWnB8Ba1+XYxnNaaHFMLUOIa5EbL0i809mcxOp4claiIrtWyd4j9xTYfBhSAAAA8AEAABCNKKYz2vcM2N5P0toLOgKu4Sy/sWlSwDvfmSvSLQx/BNKj0L8WRdvoHEQYU5bFNqEr8n4M9wOMgReIXYaJmy+YaAi0YfDOrZv+Sy0/DBYMLiGLuBbAn6qPO19WkVDenJPyz6TRZyMvzzfNdSj/RCg5CYorF8jnr7wAheqMeCQ5AbVv3ioWTJ0fGUfm296Q8p9dC4zc49gAgyDdt7MpiNjBBuL3bSkVwmsHHQX5Knff209oH9l0uK2qx02yr9pLPIZGjA1BE25tgBc9U7U12bcG5eKcggPIejl8z3/ETGMiEH54XM/Q0IpjS6YBhM7uqRV/aQQITVZa2B5quDq4trfuBaUXPtDEHMI1gr9RrF/Z3YXlydifL+Rbc3Jkm54HvMfUlgWtScU9HxJsJujQNn0zHXcow3Z4ayewU/YNbI+tOtV5i/A5flQZJtTGiqU7tvSa4sCrsCkarutk6ZfZ84SKJHj2Fv06MFr8Pm2EMwNVI7wARZD7wtB//jhztqPRJhwr54Um2QMZAiI90ngzUkSTT6sEwJuW4rT+U3rexO9GY0C0gUJWmzda+iWlrjFvz6MvjwlBcqZ3ROZxsflSJUu0zzknAX9Yn2rrkHu+ya0qpfviTyhPqIa0mYLUu/9S/jPsw/qoM6G+Wut+FK2v5vgAAAAA'); diff --git a/docker/streamline-src/app/Models/Payment.php b/docker/streamline-src/app/Models/Payment.php deleted file mode 100755 index fd200b7c..00000000 --- a/docker/streamline-src/app/Models/Payment.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/P1N8tNQwaczrnzVH2sSYRhbSQnENOtSKoZ4ZGOu21RYN/pYxlMn0BQqw7w+KxLvV1c6Y3c8wnMzgFr+ZYPCuMLaXumG43QrPBQS/WIKY3G6zIrMt0fwqFF7etrGYx7dPx9ov2T0Ux9e8jjl/kqQyQCzALthvEeJTkDsSlrzF1DPi0ACBQzVqWW377JaPfs/dngPyOcFoahOUa1i7qXWnB8Ba1+XYxnNaaHFMLUOIa5EbL0i809mcxOp4claiIrtWyd4j9xTYfBhSAAAAyAEAALPqkZM1Fthsv3zgWy1GCcSltMC0rmTvFd9JtLcjn9yISrTItAOZfcu6eDVHkCOLC5Jz8RC1GxJ27mqM+gNnM23Bx+sH7ZJ6sxQhuuwYwSa0eValefyrCwSTrBPTTH+3ZI/TyACvb3rERKKccJVmigooCrXzV1SJA0k1uaOHJyvKd4STB+uYp+4xm+iupHmNxYyKHaRi0UtM0kibyhW3lyWY5gE1F2P8AH79ZZF/t6ScXmGRKL5T+hfcE+XTA3IYddR1kx/rdQyFGtd5sCBDtUJN5SMGGVvGlbV81P6l6zNv5CtFP/MvCTYDYRJGkIJxoN2U//9GFk+DMWoYc9HDFxjDGkqEhUe653ycaVKruEQqoVerM2jUy6dGidQjPyte4PutIAciVmgQkwbgCeVM7zfKX+48qdmj2RLnAEgEkbq3ducZERpKNCdJxrEceo620o99TfWThVFG7Ibi4NGb3StjCa2nkxVmmA46WovbYkV3EfJXZixo1q/D3WtbIIX0oZnVfMhZKF4AcG1NCW6R0Xd1y6TxOjsSLdteJGi+5fC9doeeL3T1rP1fy/KbzbW3Ey+r9Is86ooH0dKLREQQLMWp/IZ5QQzSEAAAAAA='); diff --git a/docker/streamline-src/app/Models/PaymentItem.php b/docker/streamline-src/app/Models/PaymentItem.php deleted file mode 100755 index 661bf197..00000000 --- a/docker/streamline-src/app/Models/PaymentItem.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/P1N8tNQwaczrnzVH2sSYRhbSQnENOtSKoZ4ZGOu21RYN/pYxlMn0BQqw7w+KxLvV1c6Y3c8wnMzgFr+ZYPCuMLaXumG43QrPBQS/WIKY3G6zIrMt0fwqFF7etrGYx7dPx9ov2T0Ux9e8jjl/kqQyQCzALthvEeJTkDsSlrzF1DPi0ACBQzVqWW377JaPfs/dngPyOcFoahOUa1i7qXWnB8Ba1+XYxnNaaHFMLUOIa5EbL0i809mcxOp4claiIrtWyd4j9xTYfBhSAAAACAIAACRt53jucHcTCEP99OkMfV25eZMsCTbYHKU+VLLtFzlIjg+GyGfUS/OxdFMRmPC/ZN5eC/k1ZPYdciRAQCCE80yeDXjsFgna5j8qKc94ehkUvNu68EVsKej9aAQJSHUBUgqp22qqrc7aR3d/+XzbDRFxc57UWOsDELkmFpqV8ds8KnWg0aurq7jjj/DuUfzpxr+AJIul6T1Y3Xp28+zNkixJfgiCubecG/PhC5ot5v/ucMxEwAruU/fsYR5aYjqahQR3O/5umPOo3OP1Y3Mo1bkB6OtIUQ4VJMKfkcE68aETbP8z/5XP5k/MD5Rv2dlsYjMeTlPKoJyoh+X6tZowq+ClgrYsKmMSwdFGSUqe5MLjbNmd3l1YmX3kAu77gKf+4txlU7HTFfz3rlVsJ2jIeOPKVeO1sBYuS7CBZkuIvSfUwGJ9/BTNDwWJdMSSHGALiI885HPYI3dY9AuPclJHpWDBE4LF+WIjdt8N6+1xDz8UUyhfztkxxePE0B2zdGYeRYoTCyczLP/Tc1b4+ze6XFDNUXneye1pYg9xWhknRaOP0kAELCIDmNEvCMx6dFy7G21YaGXPxQs3Yqu6S/Ogf6jEoxs2oAnPSlvp1M12rJpFIgxGUXUlFZ1b6T/rDl7UYE6/7jmfSUbp/bQMcpmJdI03CEQUQ1tuldbK2fFAPQua9Q6DVNYDD40AAAAA'); diff --git a/docker/streamline-src/app/Models/PaymentMethodsTransaction.php b/docker/streamline-src/app/Models/PaymentMethodsTransaction.php deleted file mode 100755 index dfeccfff..00000000 --- a/docker/streamline-src/app/Models/PaymentMethodsTransaction.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/P1N8tNQwaczrnzVH2sSYRhbSQnENOtSKoZ4ZGOu21RYN/pYxlMn0BQqw7w+KxLvV1c6Y3c8wnMzgFr+ZYPCuMLaXumG43QrPBQS/WIKY3G6zIrMt0fwqFF7etrGYx7dPx9ov2T0Ux9e8jjl/kqQyQCzALthvEeJTkDsSlrzF1DPi0ACBQzVqWW377JaPfs/dngPyOcFoahOUa1i7qXWnB8Ba1+XYxnNaaHFMLUOIa5EbL0i809mcxOp4claiIrtWyd4j9xTYfBhSAAAA4AEAAH2kYUE+PmXLoMXp0beUUO7/BHIs/3d8q6HAfg1kSZBR89optCeyruw5fk7MYae6W896uYhyf/pfoA1a4GUJAY6IkF26R3eVvDj7sKgLgQWOo/vt7dD/d/Lifd6e+fgIfO2quERZLKQiGDMH2gxCPgTCk/jnS8pk6spvOL0gvd4zvdgRmQROrQE0NXHbX9hd1LBuoTO+YObmGv197fVERS+IJRp5w3I2pZXBr+XzCt4UDXWi25JEJWtIlYQrsrbIoqebImPmcwEo6NpdMd+QPsv6pcnO9obb5K0a3oXBQSNvCwK7apEp0zJAtsEbzUdsCjreV1hrRQLIezBQYANTTrs4WAr03VG4GrOGqHVvaKodIiheEp2eUUMFcOY+mcjj0GNMGd6NcGOFA/NlFFQFwpBzddGWH6jAd7Qxwv8MWjoMFmWvn5UnClmjloxjzmW5HEFdg9GYoBlnUpB60R20uS/jtH7FylAsSDzkMzgl+GiqslTIpWNdNL/mqlXZP5A8B7bUkzsOGEdpGtRPtPKFarzBgcmO0mitCJakSgFxVbZLNBLy/SlbUJQCb7P0X1kFKfqkzzu5xowmKDTHVCLNoqK+K3VhJsFVj2/E9t++70EAxqHS0Ya1VHUlAQf5gFR2gwAAAAA='); diff --git a/docker/streamline-src/app/Models/Payroll.php b/docker/streamline-src/app/Models/Payroll.php deleted file mode 100755 index 5d47b198..00000000 --- a/docker/streamline-src/app/Models/Payroll.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/P1N8tNQwaczrnzVH2sSYRhbSQnENOtSKoZ4ZGOu21RYN/pYxlMn0BQqw7w+KxLvV1c6Y3c8wnMzgFr+ZYPCuMLaXumG43QrPBQS/WIKY3G6zIrMt0fwqFF7etrGYx7dPx9ov2T0Ux9e8jjl/kqQyQCzALthvEeJTkDsSlrzF1DPi0ACBQzVqWW377JaPfs/dngPyOcFoahOUa1i7qXWnB8Ba1+XYxnNaaHFMLUOIa5EbL0i809mcxOp4claiIrtWyd4j9xTYfBhSAAAAAAIAACqk26XaNcpT565nAj/Mvc/mUHNEfHOReMaRvyrVEjk7wNjlQ8F7VHSFyZTcwC+SlnaSZ1r0OsuflezWXrEFH5NASY5elIGZSCwMBxZzRcqxMu+GcY43qhGM0zNBN27XSQpnF0ptSQDShNGQ1rTykEnAv1mrUfhN7txXu8dTaaJpy7feQi5UDaEhVh5D7ydOsc9YwnRcsIuRBr4jThVLVVyFflJCOZ0dWfBOwxzya4007M6OzsdIERbwMc5VW7gOIwL0URh8g+rCWPIbzZ6keqg3rCGFvLtdQwFk8S/XuJyQVGoBspX9Jrbz196cQK6xi5cjT0t9GAW0784yRqigjGGWFH5Q6AG314UVq7ZaobGXoewGmUJvzsvw3rP09cjPsYnfr8HRYHXNzOk692sjv3bfqe+7IGiplSnpSRHHWpSB+sPCI4ibohNF5Hy+tTcY4sdS90PFqPcvGranZpQwxl7zmZvfsTiN1tlrYbTb9FCpD5oZT4YHg8YO4KOCMDvc/C640lMyeHCZSp7ewCNnmezSTEO+R7Dl0PUOXAGedrnUK042+QRUSZjV20fcaHqaGVHeTNel4UFjrEhHJjAHUiU8znkvvXv1xsZiAOPyOo+yRQVf1dtn1C4l9b9wPgKj7ilK0uciBflK5kKUMccrpaYDdIgqltgsSZMlDxPtbuv4AAAAAA=='); diff --git a/docker/streamline-src/app/Models/PayrollAllowancesOrDeduction.php b/docker/streamline-src/app/Models/PayrollAllowancesOrDeduction.php deleted file mode 100755 index 4c7057c4..00000000 --- a/docker/streamline-src/app/Models/PayrollAllowancesOrDeduction.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/P1N8tNQwaczrnzVH2sSYRhbSQnENOtSKoZ4ZGOu21RYN/pYxlMn0BQqw7w+KxLvV1c6Y3c8wnMzgFr+ZYPCuMLaXumG43QrPBQS/WIKY3G6zIrMt0fwqFF7etrGYx7dPx9ov2T0Ux9e8jjl/kqQyQCzALthvEeJTkDsSlrzF1DPi0ACBQzVqWW377JaPfs/dngPyOcFoahOUa1i7qXWnB8Ba1+XYxnNaaHFMLUOIa5EbL0i809mcxOp4claiIrtWyd4j9xTYfBhSAAAAEAIAALyR5399+DdtQQywtv3NwtlyRL5/RVE/FVbB0TRt1BgOVYK/wfVHx1IBRgtYOItp6tynGwd8kXyadyU5IiueV0LYWvbb6XhJYNnE6PxXrZZ5DnM2qvV23f7sN76IbkwJW4EXZjAQ84cP+QMD9Jp29TXY+QqcyPOG/wj5Xy6iMDYTIFTdCBn/xEfMlG5eE8jyHf5uimz4AjUv2AVn/HTc1n9C1VxxeRxC7KibxqfmMs+xTCsTpXT9uJqcXlJFsEBRmwgHTNX9K7SoEQs36gYxlsMvMX8BjWasgGKSWmXwAL8QCoet471IY8w9KtP7cCqCUgurkQ4Flm3Ecf799+ZsuzN2PFiHyk7wMJtkC6b7Ffb6MlgLMie6fXLE6um1zFNvRScEXAcjJLz+AqeJltwXoJTYZeBpYICW+BboU9w/19y7vkwCROYmTp45j2Jag+2TS6rE7fuEpS3B94UlgTflNguIV+rS6q0b3uSFvQLcYxbtm6OJyvZakvjV0d3UNOjZy8Yp54+WccjwtKz2DQZuRbk8mAKR+Qp5b8FKYKSc7/IoWT5EoLhdnErFv+gpZFfvphWfGkiEZTqEUQWpvYy+DdyYCDHDTkkaDwAGwrsaxwWNJcD7qb2N1dnd4+ENoDAlHAZI4aQb1UE+uJE23BEzuMh9RJZ/jeSW26d42mWa7DyW83ms3pBhTuNT2B8RYnxlHgAAAAA='); diff --git a/docker/streamline-src/app/Models/PayrollCategory.php b/docker/streamline-src/app/Models/PayrollCategory.php deleted file mode 100644 index 990aa763..00000000 --- a/docker/streamline-src/app/Models/PayrollCategory.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/P1N8tNQwaczrnzVH2sSYRhbSQnENOtSKoZ4ZGOu21RYN/pYxlMn0BQqw7w+KxLvV1c6Y3c8wnMzgFr+ZYPCuMLaXumG43QrPBQS/WIKY3G6zIrMt0fwqFF7etrGYx7dPx9ov2T0Ux9e8jjl/kqQyQCzALthvEeJTkDsSlrzF1DPi0ACBQzVqWW377JaPfs/dngPyOcFoahOUa1i7qXWnB8Ba1+XYxnNaaHFMLUOIa5EbL0i809mcxOp4claiIrtWyd4j9xTYfBhSAAAA6AEAAGidVQjRN9HAqCCwXv9pWkYIroMU0UxP2lTo/G9ohq4nJmXiGvDzKaAvz8+YEN4Qm4rnWIxLMxdWe3kVE/noueQ/EQNC8uKO2HoblsNpFL0vSDaBhJE21gF4N8BMLB108T0f7LpMz5SK3oouieuAIX4INzPQZzONd2u9J8rzc/8la4kSyHQyvALYxIWNwE43pbzPUpT1fRPeMSbTEopU+vHh3eYYvcvllKEXVA880DvKwHyxmzgku/Tj/yidX80Ucr1UVRQVh45x29G0wJZUTHVOlNUVWaMtAsLj/RHhWtbxsuhkTiRLEb8oMTAlvwkgucZgt1evIBQ6xP6VYG5dTyAKSoMZDB1FEamlPql2uAYiF7e/+9Ne0HAjzHXTTDzNsR1/LoZVE7egf1/UIsHBLcBJV63BnBNiRkB0UXi8NybEarJmJyA89iPhtwxq7brSqnRo2KjmtwjibirVv//pJxXHIWzGg8CDvFteFbBBymcTzdH8l9ub8N9RhqDF9nYY5CGRnfN0z5TR2Pvf+rMik9gH5Z09tZCB4ACnZflIk1HLtX5RBI1MDmDy/6PXSqqBOQxJ2j/KpHZu7rI8A/XEShnhhSswJR7jBCqfEe8qcWFLuxtZAJIEC/4JYTF6d9119/9MC8BhL2xmAAAAAA=='); diff --git a/docker/streamline-src/app/Models/PayrollDefault.php b/docker/streamline-src/app/Models/PayrollDefault.php deleted file mode 100755 index f76b1d21..00000000 --- a/docker/streamline-src/app/Models/PayrollDefault.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/P1N8tNQwaczrnzVH2sSYRhbSQnENOtSKoZ4ZGOu21RYN/pYxlMn0BQqw7w+KxLvV1c6Y3c8wnMzgFr+ZYPCuMLaXumG43QrPBQS/WIKY3G6zIrMt0fwqFF7etrGYx7dPx9ov2T0Ux9e8jjl/kqQyQCzALthvEeJTkDsSlrzF1DPi0ACBQzVqWW377JaPfs/dngPyOcFoahOUa1i7qXWnB8Ba1+XYxnNaaHFMLUOIa5EbL0i809mcxOp4claiIrtWyd4j9xTYfBhSAAAAMAIAAF2ybb9BOp7A6cHzI0e16pXX5CHpEgwkidlYLNnMNp5qrPJC3+wD8Gb3uSSpRr8s0+faiEjeq8kiPk2BlW0HtBh2QsLhnEoNZ0yROK0e+SivAd46NMBjidnuCV9FJJnalVUxZdmE0y7/eeor53+ttCOHt4IhmgBXfylyRBdJwvpC1f/sTbUBRcLZJsOGPZEKLMTK5UBFjFgSfkHTGoxwmwEmOmpnznAHWhE6R21aEqwhfA0eIpgPJ6vOYj9KYoXSP8rYEXXGmnkiXzFbDCu0M3F7KJ9dQ3CI0Lk6PN8aPpFQHGt8KqrU3pX1uMLjW/axX+Q55FrQDvH7xxrf7bKlQni5gtTyAll70jtyw7XuGO0GDAYAwFJc6SSuXWELTc/qqekswHIdOnNi/dagLt4DOs83WpGSMB+0exz+QpOEr0MVLqRcYN3+1jiDiepRXJwuipo6teV7viL+GVkpvVGyLeznpkOduww/OpmuNQJWnE+scX8rzOptmV4+shiJYgovsGPgB5XbQ97mtdDJeDjIVAe7Z8yB/37Nk6KxJSNWfaK/esnFzcDhXxoiOGY0wkLFk8G3+v5mQPQm0rJchqqwuB/cekTTnBm7NsyzC47cxzE41oZ5c+NoRGOQmzKYS4FFSCsn2msbjJNbPh89dZarVfmcmnsg9ZgTI3y75vmiHkg5xBjwpF22cmfKb/lNe2Y0kbld3WC9Uk2JUXXEk7V8SfFB9XOixCurqqtCndIXIvKQAAAAAA=='); diff --git a/docker/streamline-src/app/Models/PayrollPayments.php b/docker/streamline-src/app/Models/PayrollPayments.php deleted file mode 100755 index 6491c535..00000000 --- a/docker/streamline-src/app/Models/PayrollPayments.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/P1N8tNQwaczrnzVH2sSYRhbSQnENOtSKoZ4ZGOu21RYN/pYxlMn0BQqw7w+KxLvV1c6Y3c8wnMzgFr+ZYPCuMLaXumG43QrPBQS/WIKY3G6zIrMt0fwqFF7etrGYx7dPx9ov2T0Ux9e8jjl/kqQyQCzALthvEeJTkDsSlrzF1DPi0ACBQzVqWW377JaPfs/dngPyOcFoahOUa1i7qXWnB8Ba1+XYxnNaaHFMLUOIa5EbL0i809mcxOp4claiIrtWyd4j9xTYfBhSAAAAMAIAAJmVh5q907VhSDe8YshObHvTNgStxrRtBjiZKQI/SLsRzpf7Xs/tnAMlgVGktNL/1LVATLuPDZ8gdu/w0q1QwS7gGKR5E0cU94BKHpkoZNIb6eCzXJnaf4hD7SonkSrUOrNx8zghdq/9flFpGxeDXgyh3VSUY3ZGy6nfNcf9HPfPc2K7zFTMpetMNx85Z5VdmU7w+cWmVuuW/kx04C7+mlIYxicHUEPj+F1snsJKuYaN/Uy9BXdnnbMlgTLZ6y5WqGPAsfc2pS9xoMqxzxLm8thFUJVSgSTfrKb6s9xcsV8YnYI0F86t42tzBx6J7FxIyQ6qUy60GLsZ7wsVYXiZ4A1GJhdqKe56Ro0zzI7WP/ueRAVJwo+HMk+9L/XNg61EtEhhVooGobEs9fDOiP96Dzr6NAkeaTpavjJVQruME2T7zh/m+vlquEbK+pnnlX7AxPlNsVltqyOY4HobxbcRGFMMutDeCTImUqd3N6psBXJlok2vqjGg9/KsKP7knZmygIUHB+ZpN9yoY7pabDXcnkvVURsBGcJ/d0g1S4yGbHhB1dyOj/yb2YsJV1CiKupftqEfXME6XsQi12sYb9casMZ1KdDE+0wyoDAOPVNWeXXE+y2hDAJOXpdRBqOw2+UUNkzYCKthFIWVJCoQyr9z6tlEgku2O/JHgIAkZQqMzaJptfspbYRHlmH/QWQtYW8tMgzhjcOkR4N3dsbEri0QGP+w6BSKS19nfNWTKRsUhFqSAAAAAA=='); diff --git a/docker/streamline-src/app/Models/PayrollSalaryScale.php b/docker/streamline-src/app/Models/PayrollSalaryScale.php deleted file mode 100644 index fa9661fb..00000000 --- a/docker/streamline-src/app/Models/PayrollSalaryScale.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/P1N8tNQwaczrnzVH2sSYRhbSQnENOtSKoZ4ZGOu21RYN/pYxlMn0BQqw7w+KxLvV1c6Y3c8wnMzgFr+ZYPCuMLaXumG43QrPBQS/WIKY3G6zIrMt0fwqFF7etrGYx7dPx9ov2T0Ux9e8jjl/kqQyQCzALthvEeJTkDsSlrzF1DPi0ACBQzVqWW377JaPfs/dngPyOcFoahOUa1i7qXWnB8Ba1+XYxnNaaHFMLUOIa5EbL0i809mcxOp4claiIrtWyd4j9xTYfBhSAAAA8AEAANshamXQ6MyKgO8qbaVcXbSRFZj8pz9KG2X5RA3Th/FZ8k5h5bexqkObegbKSXsqJkc7ZlnolvYrqCezjjRNYMYkZFuSuZr2GTl9vi84HYsYoNEIgFYNhefCi9ox6F9+ysRSOlqoJ3rHVY10OAIGoG71tScwm9/huibfRfYnqZ1saEjx3Hw96aNooa5X/2qQ6CRLWuUpAQEtUy8hXszJByiPf7UKYmYKqhvINyEiX8yevw04u2mLqwHSzUH6cRtscicPrnbZ/oNdN4BaGmz324txikbZnov4wKuSaFCe7ohYN0lGIU4jE1ZoVf7jots5wGXVs4Cf+WcNcnSxtUZW1jy/zKLIa/t8UpNZt9w2cLVzEXqTZQcx2hYwKt0+OsyK0/mfoyENDczY2ZVxGzm3yl9v/kferT2gJXobIZXcVUSwvVRwJUQlhDJnxAix0NQzpr51H/7qlE3kVK6aUD3uY9qpTDm4GAgyprTyZH09YxtDloQpTBjDrsJbKrEXj3cZlvvjUlN2kokSVLCZdnn74sbGbDuIHqB8Pwx5+YQuRbYiYpifXE2NlpVAFM9hKfIDiWz11gFEBorAg4Pal0PVwGaUUmFhV4+UYlu0F0VEJEGacmuexWd9dfBabyrpl9Q4pPXWdRNWTZ4aG+7ouFtCwDIAAAAA'); diff --git a/docker/streamline-src/app/Models/PayrollSchedule.php b/docker/streamline-src/app/Models/PayrollSchedule.php deleted file mode 100644 index d928a2dc..00000000 --- a/docker/streamline-src/app/Models/PayrollSchedule.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/P1N8tNQwaczrnzVH2sSYRhbSQnENOtSKoZ4ZGOu21RYN/pYxlMn0BQqw7w+KxLvV1c6Y3c8wnMzgFr+ZYPCuMLaXumG43QrPBQS/WIKY3G6zIrMt0fwqFF7etrGYx7dPx9ov2T0Ux9e8jjl/kqQyQCzALthvEeJTkDsSlrzF1DPi0ACBQzVqWW377JaPfs/dngPyOcFoahOUa1i7qXWnB8Ba1+XYxnNaaHFMLUOIa5EbL0i809mcxOp4claiIrtWyd4j9xTYfBhSAAAA6AEAAHOUUQNhQ6BV12XaWXAhd/MutCaMcfNIaUy9tc2DqGCLQJnvGfFPFqdOdT74cOAm3FOGu5F0mwsuiUe7AIf9NNuFwvY5/4posTn7BmzSWROuMfVeT6FxMzHKKnOIOT7ksg5iY5lD3fOYT2W0tk3lhN5gBOaRE17TRs2yuuthmvb6nB7W/xOEwVu0jyi+8V0xR67xPFccv953pYeTDOpsFAjNS/rbi1SwaBCgaIhwm2vUXNCKRIUWYT81uolX0+hhhKsgrTy2h0tKOgpKAjOgUVCcLBRBXzG0En2qwVjwXONJg+5I7BS+lALRJFdrSYbsrwsyOk78Eiykye68hR/zu20rmHPjQkkqcqzFPZb1uk20yM9DsO1O5ND0uqYBEH4wQllccusk96wxI/6ge073pmM+p1l+oIr3p9O/kDeSwf9vP3+5bxlpMKzSZaKDZj0wYjBf+cbQgTHKnJSNb8ZiwUd3ABO7ZYttQ0e17GNBA+cvQo1Xi5DierCiNq7YIXT3xSWozQ53ZZcQrwKM/nV/b4yMIoSDvHnVzWrUmAjy0jILcfEUVUx+ZasPJWu4qpwZuJ1LhrZMWdz3S4f9OEn9k/sARu9MYSdc3YW96Q8iHOnI9SeB06ZPZU6wH68/ZKeqPJUhiLH6mwstAAAAAA=='); diff --git a/docker/streamline-src/app/Models/PermissionCategory.php b/docker/streamline-src/app/Models/PermissionCategory.php deleted file mode 100755 index 7ae493c8..00000000 --- a/docker/streamline-src/app/Models/PermissionCategory.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/P1N8tNQwaczrnzVH2sSYRhbSQnENOtSKoZ4ZGOu21RYN/pYxlMn0BQqw7w+KxLvV1c6Y3c8wnMzgFr+ZYPCuMLaXumG43QrPBQS/WIKY3G6zIrMt0fwqFF7etrGYx7dPx9ov2T0Ux9e8jjl/kqQyQCzALthvEeJTkDsSlrzF1DPi0ACBQzVqWW377JaPfs/dngPyOcFoahOUa1i7qXWnB8Ba1+XYxnNaaHFMLUOIa5EbL0i809mcxOp4claiIrtWyd4j9xTYfBhSAAAA+AIAAH2XKQnDowlBAW4wAaxjxNae1SriM/PP9iGOQmaKAJf7quEHCSCWziGzoe7eX3KFBdnP/LDWi4oD/kopgRTuVBuCkr2mUGj+3KYprnWlLxBBNjT4O3RxAAJSgUJ8axEoKbku2V8lHYxFnTVDqaNt7nd8IDDAGE1fCLTerOpwdTTjwVDu9woTuoSV8HzxEBNRye7BAnloxyt3fpaP+mbQfeh5BI+kgcEkoFMSvTBM0tnQKhR9p+WmA5lvzWGNuDLtrrDo1gZOzgRFja8c2ZVICI3z0BoEKcNyb0hyehhdagNV3LBvFc0x788+YF5g2WFqbT++bPE7Ib/RqOK5Pg9sWRARUNViaIP7CiwfxNfNv/eZOJSnt0xWkloZmGZChvqB6XVcrvs3Mg+DHW6PRKmWIFzJoVOM6hwSJwXhnbPgON1AaEQbDbws/wi1BC9WG4nAd8W/WlnO6/QXvAGjV7G4ang0V7kI0+Ua9KIz3t3sMyObo/qv1zzcNnTTTF8bVutTa6kL5JxqrYcZRPob5xjhT+NhgdBv2eeAlj7UySjiNzVG5qS8Vh+K6ytiztmJWGWhk64cdyYwas+f2cjSDN//8jNGemg8BNOb+IuD8h7J23nzHGS6qMc6k+7rXAlXGpPXa5MfEif4RH0zXYopRMx7ZIis/mic7bYt5dYnPaHpsvzXDcccw+YlEYL4l39PqVsJ6zE4QQ+i/TNg2kKKX9lvPik1likV44EPmmF3xenkyP1sUlz53pyEBu0b48pPhJ3o+Xqsb26I0MdnMCMvWQj1bHjdrEQmeLtMjUap6IQT7r5eON1g603tYeyQk3sZHi9U3FUMySqAGhopWeI3k5/K+5T6AGd1vaZZEBztdtqWnA+hEDalQMYzPKcF2/4Uu50bPdQeAvuY5qi8FVTiBUcExIGDXnP/SVJXnf/+wgTtc+4Ex/pRu8lOV+ZeUD3M4QVOsOerJm6z7BkNzH6kUxitj10MeSJAZnwAodzGsGZejzOo4jvs0PGsKsAAAAAA'); diff --git a/docker/streamline-src/app/Models/PersonTitle.php b/docker/streamline-src/app/Models/PersonTitle.php deleted file mode 100644 index 89745c19..00000000 --- a/docker/streamline-src/app/Models/PersonTitle.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAKAIAAP66/RP8rthOVToTKjRwPDaDLwBrUzmkhXxMeC0vB8yZkda70UgruGUGymGUQGumwFhEwB4LTeTS6l8iIdKgJOoZ1tgmXxOonOb/Pc3Mqv8by/jixH5LourfyW4HdTZQF0Z2HDq9IMJseDvcZuzg4tsMTQJCbFkZO5dWKPiaAuZ3lp4qZ6jprkZ6TcvuLr0Ihow9AE18/pHGbSpEOZXxW3MUpJbM6WRKET7qRkLQqemPlYJ2Q24liz/BJ21Ss0JniRTCIeQ7IFkGjc0ALTkI56GsXxOn/9HcP6oRCoP0cBrOaGbWzHb7yESacZX8WSVntLIr4FaKbv7uuze0Oy1M+3yehakELPqM5VpLER84pizDQLciEy8cdo0/PIRsbkAOXMKSpjSB7c2slpLjFo/7oV1nGjiyJs5Aqr4m+UhUVvcHatA9A/s7yXKYr7pM9KciABK4Jqo/2ABr/GdShH/SKHKKDkwjBBcDrOdjg3AxB4W5bkXWICUirw+ycCmRVOYc7phhdBKMT8sUjny4KARzLePbC3OM/6t+3xREfiOqNJsBZ+32FZsspF5t1aHtxkrRmfYmA1wZeQ4FhCL5koW+GSCIvuHB5U4oesSlQZieuebvXGDWXZp/frUD0QXT54RCyoWC5uMMv271IYeEqXnfF03Oiplincgfm9s0Y9FvpNHKpYJ0YGJ2CeH98KwlC1pDs02IgoQXpzHgBtSs8alesdelHvi2tb+U1wAAAAA='); diff --git a/docker/streamline-src/app/Models/PharmacyStockReconciliation.php b/docker/streamline-src/app/Models/PharmacyStockReconciliation.php deleted file mode 100755 index 99c9508e..00000000 --- a/docker/streamline-src/app/Models/PharmacyStockReconciliation.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAGAIAAJVIcfQj4QtISPyheW6BUoFmzdA+WmI42bP1yb6jyTX+mhiPYi4ziG8ZKLNyJoGss0o5R4ZRxDVqTXXEB7rniIHpH9CiznW61WCtO67fbXv5czkWDdmbKudRedpEz2yinpMOQYvbvUwNLXUBrR38Kn4SKEjCgoGnijziqIEWsC6WbA1KRSKepQSxKw9WuqujaI96m4v/4bFA/9HKCpjSPf6dtNGEQzo4nZanyiNoXrj1+3aYsYQKRO+cImGHUvrHd1ASWfOHUn+SYCycTamh4uoemd1CXHp0ztAkjo55/Bhy1e5Dy97lch+f39G9lppuiu+y8AfT3yNtvh+6IWndLXkg9vuEzYlOvnyVhNfhtMykcRcYd4AywSpg/2xpkRCYvlfbS5FRAwAkoLQyQs/C0P4MGVRQZCW8g3GHDy2A4xT0fi87Ed8jCMPaYCNybiLjwJQ17i+1JIQr1gClkeaWd+cK1IdBtpp+7QmBTPnZgb3s0WXGNysPG1e10QBZX6fv0w+OR8hgl1GCo/8cn8WcXprPLvDdwrYntkrPDGGBGiVHMqaCAZ/DQgXjGUKKNhXKnxASUMOCk1reoKiyGpet+qlkytvDF1f5i21/CdP17694Du/cxUjSLQr4Sjm6qx3h3RyeKk7hhNDQI2VSrEW179oW132lZ6UUvfl6AgRZJuVFPuQbX1qVWDBOyPA11mOW4k4zB9woMkpJAAAAAA=='); diff --git a/docker/streamline-src/app/Models/PharmacySundryStockReconciliation.php b/docker/streamline-src/app/Models/PharmacySundryStockReconciliation.php deleted file mode 100644 index 6336eb29..00000000 --- a/docker/streamline-src/app/Models/PharmacySundryStockReconciliation.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAASAIAAJPnGUxwoFDspBSv7nudvsqfEoNaDyzHwEU98TwfFt3P/c7xZpLitFtQ7cob5kD5Sg5vjLFw2RqsSaOlWRFPFSQNeRNKTUCBy/8KobUwMtoaHTdI4sxwXqiOEQEJIVQoCkyS6uTi884cuFX8pU1DyKp7UptrjZkP1WM2AIDg0BRtfS9L1NMSFoJ4eFW0Umwis3QonAU45tJiwKatBZpdr5y3bg5AzBFwsnnY978ifjtQeudHVJJlrTMGWQXD4B0Oi+OYh5bHJNG0ybsCbNPHevz+28la8IxuodmmCaDEoRcMsuTCJFPOKzIT50BL8+HlqWQ3Q1nxHtaiRwFXaem2CTucd/8g5pkgLnDMqr+5QtpL8QgNwVWk5KpDXgMvnr7wT3fYKGS8ueGLT1Wy2haIHk7lHcAQ1bQNgj9ktKT262D6F/wrYWCiyk+fpXkGZlvIbnNvOHB3Q+/t1b0PLYggAsbbJWrHMqoYskaDTii/JBtQ80AO9R080uIc5pXMI1mmnsXBd1qXaSfSbtmFVmvYVMmphCgOxuzLbs5oiUyvhqF/wIs6jknUSDiX4tzrlGtCBlPNEAhhGYSfSeBU6Keo8AZn7TawXkE+EeCpkXrYCEl4MMjUSSwYwcGALJ3rvx5rpTt1vhJ+e/WWyh4nPok2Mf/UQZloVGHSzY/mgyL5uDWKCp3uD/j2YzNCHobSV0ADEQG8FyxR81pCDaaCXgtLflM7WxY7Gb1i4vZCHWgeyUzl8XMbMrhm9sfBfReCTcFCW6dQNzG8nJuvAAAAAA=='); diff --git a/docker/streamline-src/app/Models/PointOfSaleRecord.php b/docker/streamline-src/app/Models/PointOfSaleRecord.php deleted file mode 100644 index d3b5ce54..00000000 --- a/docker/streamline-src/app/Models/PointOfSaleRecord.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAsAEAAM8Locg0gKTQm55FmttumXCfR1YEsBsOf8I/57lIbjmE4BOw67pAq2BLfTUqYI4AEE7EKKbsstnCr8zps2GK+tM/t1+DxOh40thmJRgqZ5xMQbERIHpeca1k+OKXjf8RHAnA3X+LRGD/D3Nzg+pitRYpDoaSrCizkQgQW8ov97PFaYP/glCet1g18YixbU/1lffuvPnNdF4uLUOMp8B5CvFQRHKGVBrSO6cvSRGtHYF9hJijV4WhPBuCmDOBEt5LfcqiVqb4e7G1ZAeONahVAgGmtpUoTinfps8chwJO90/kgoiY+5aQPQ4E4CNd+kG/sfj0jPc8OQUgUQc/T657+Uu+u5qO66U9w2MpAqrqMR0Z1jLVPbRHMQtNcdCByLVmaEa7KcPlp10Ti7ONqzuUH7ydZrEY87ivWp80VgoaP9mDJVG53L4cUb4A+54VHBYchr/Oq+AwSxeP5xyHgyzsmBgTWuU+gWniiEFobQ4gER41af0nzgU1odt598ZvgJPOXNrAkzI7fGI1QE+S0QBgT4JxMpb4qvtFcFPpFwUDL22WkJy9OYQfvnSNmad41QgiFAAAAAA='); diff --git a/docker/streamline-src/app/Models/PrescriptionError.php b/docker/streamline-src/app/Models/PrescriptionError.php deleted file mode 100755 index b51fd857..00000000 --- a/docker/streamline-src/app/Models/PrescriptionError.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAEAIAAICXU0Tvr1yBSmjnoo3YZABl3oXfw8dMVGtb6m2G12Sh5gL4OcM/opUdijODd4/N4O3A416vQ0AULolw5TrIDz+uOs8g4KjqB3dNCMk5uj3GXIaeAxMJl3zJdUcw2PpjrNNHF48XGZMNt8iwwa0InkU0qYp/W4W7JCcWcKSdpxrooT0P2oDN2N4X35LXmR8rX3cRUbll6lpOSk80jF1yJbFWbZUG6MqTkzKlL0UOA13vHgWmd+Rr26sn/jtcjkxrlXESjvdUo4OeSxrxp7mguTb/ReMQV6zaOj4nfQbrBdXSOC8MM52nXuybugXUUmdrmQ79EGhZd4lpOAIk2y9Gk696b4PO7y4JAp9biOSd5ISMniwrgqUn+2OAr61Q6ZoVQt3nZcYcQTyTUKIhqG5uLF+2lQ7WRx8iD1k4XCthszLxXH+gE3XuZne3hY+Ixr2arhrAn9tGJJaMiBZ3i2nw4DcoqnR0uQNqvmTSTMVznXIbtbGQEwtnNzeXfdHSJxhBmqJrMac5LXNDkZuyPf1wZ1Uzi9kFAYn3F2X2/1heu86xX9BH5Vy9i8AA/H+j/GSkv6sXX1Y4QL3SeTsJSmbgyAN5QdBlvzKZwNMXcKFel2p/niMOWzJIBYsBF/f5NOLPqLcpadwrFrIuhyzVpUBoLZTfJEDHF3pQK19FIB4qjcGSDStjUKiRKFAzOYOPQUGtJgAAAAA='); diff --git a/docker/streamline-src/app/Models/PriceListCategories.php b/docker/streamline-src/app/Models/PriceListCategories.php deleted file mode 100755 index 01be1140..00000000 --- a/docker/streamline-src/app/Models/PriceListCategories.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAAAIAAMvQwmuDC9r365YR4VvmTtAk83zcJ0baqTucKDYWtDcAee6jzWzGn+8frOuflGEokUpEYYxtGH8nqZZxdjF4SGQjUPzwQl6WXT+hAUqloBMbWu3l0oyXvu/eiahGQOdEiaYU740ru+t9l3lZanOyeIs77ZnFZ4Pc7q51OTkHJ2Okcy29RCbxTFFpjBoKAe3GpIrv0DRAxxaa7jVFAeThC0mYqOjPNhILwbcaWBRNdatnOOpVZ7BG5texXEO6cB5eHtj9kZ0Arj5DnzGDunxU9cLdeC081CXI1DazEEiqP55HzBG5LXD2TjUb3dOaTHyyz8koAlZr1ecKdQ5MamIsRS1sn7IOyBnnut1/DXHMgA5VXMPsL1Rh/uSKxeplFVFzAOjjIF7r/7C3zDU+DJhKTsZA4voHbrXbq9UrJTBssn3yBaV01E6wFreZp8U+gkbbZTEcBbklQJw9JSR3/0RrgAYhHLG1cnGx+hd/pbD5uw4CHgP8vWR39UM2XEI6rHlxMvYW4W340JuJ9JUcXIDJWnCG5mtqNIvXiOHyPiklbtoy9uIpIjrhSQic1qpwxvZ+/WlvGAqjJXM/va5KXRxF+viq54jfBZslRTkEWIaDdFnSs8WJ3Nm5Za7E63k3Ze3vjGw9R0QCj+8lBSyLypEryplzmaSpXn3Wg3Bo9BBdUojkAAAAAA=='); diff --git a/docker/streamline-src/app/Models/PriceListMarkupTagsChanges.php b/docker/streamline-src/app/Models/PriceListMarkupTagsChanges.php deleted file mode 100755 index bb8cac3a..00000000 --- a/docker/streamline-src/app/Models/PriceListMarkupTagsChanges.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAIAIAAFDY72mfnyytMSvAiFLxZ69tE87o48/shBv5oLqv09P1TI78hdq+GrQkVEhOrbzLkZCnDHvmrDZRw42dArTYVDbtY2W2NGa1jsWPhDxuYa2TZ6NBG/yDFPrRD4Ow5mvK/V05Okqq2PyR/ljCsy8b8Tywk3wm7kT+nKLkqK+kQ93HmLwdtZit8zaoShKDtBnwpKWXdA8CyNsRdvxhSqd78KaIuw0bnKfoNLjz9vHh9RXi5NQ0lxoZyoaPY/KPsVtPDmGsqctVcM53Z6jfdtRkTYf5RBaTQrMffbhcHnEGkvaOF8GcUZmlSzWVqIJfk1HjXuLBt8G6i8bj7UsM9pwaZJXkVvDwwtocCFqDZ13hefnEa6FfRZt8QdUYfYFFdgEFHdLYB9xCA43yVx1cOwIbee2M140O6GbEyC2WcgNnrG6pn8lcn7R/vhDMSJvdopQPp1Qg4fw24u1Pw6ccG4x8ectXRQ2TXlSYtfTWD7CP6JYjEQpNo69lKgQ8FBKPycP36y1HMIs2E015E9c12LuZZO+PCq42Tr8FqtPEVGwaPI4WeS3r78+taHP6XmIyN/9QrQBUNj1XdUjgHyxPtKcI8XeqXOWDKA7t5HKQ7gfYHsimNve5OsUIHtjw3GitR7gyNi5FMUSqcuWMwbSlcHywKPKFCo1oRx70JCCbBz1ZX4+13DeukwhfjgUShfzSMjGZV9I/2rveZPlEWqpJKMpv+QIAAAAA'); diff --git a/docker/streamline-src/app/Models/PrioritySign.php b/docker/streamline-src/app/Models/PrioritySign.php deleted file mode 100755 index 9c8ca720..00000000 --- a/docker/streamline-src/app/Models/PrioritySign.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAASAIAANywLdErJ7CFkw+UAFk5R4ldBEIc9Z2tud5JoJHOE0iMNZLcb9Y6/Vkf2g1UnqEQPIlE8n9NDAPkniy5YlArqVmETKXNof2WnZlThgCH2DtdViflcOkgd1UC7CY1PUxw4jJ1mLNZLMc52gIvCYrQlOlVBhiJVA35PtBvbN4JrkNRh+LXp78nEk08DevTB2bBq1Y3Xr9tZzy87h0FU2aBUuyjb/5pscO++Yc12T3iemj83XYXbRt5paTTcOI4BASf3l0YWcF241lNaKo48ampq+ankylD4TzFtuWGuM0DyRif2rlwKcGtp1DNwegx7OVkYNwepC4D32wRgCKNaoLKv5hB1Ck8BSv5TwW39OmDmAdX6bgw9M+ArXlNKpHvY/hD5zq6fogDlNm/ATkZXYgLUUzirm6qK9Crrl+gi8Dvng59pjtC72XaAGfZ78wIcZ8JjA4zF3m3ylGoLHsDkoqx72mYatpXdrW3xuvtH2jEHD7q0IuD0rV3TddbnWsuRpXxDl25cgdBGM4nlfB5a5aohMcV5zufeUl3smJdVjBkMaEbQ75YNw4mrWniCFlQ5VIlYSQEb0KGvLAlTv0D9rM6wHi92zDQcPqH9UkJ6lMkE/8dqdqLfJZ2b5YOCVzLeFn9NMNEhTuansJ5O3B/wHh4zmwZDr+rVSvNcjQOGHxgsp+0fUFH6qHebEYvkNT4eQ/OIH4dwTQHidCATBg9Wr5CGEPcOneTugfD1w/lfYS1XOTlNrAwFuqiEtWKtk7qXeAo+FKczN5kGhuZAAAAAA=='); diff --git a/docker/streamline-src/app/Models/Procedure.php b/docker/streamline-src/app/Models/Procedure.php deleted file mode 100755 index 9ac531b1..00000000 --- a/docker/streamline-src/app/Models/Procedure.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAIAIAAPWNYN9nGT9lvnbABfLFsewmXPP3HMtVPxkTtqULJwi3Zzu4E+1yhripngxgHZ2naUHZ4IioAeMB4BZM65Um0yjOv3QwtI+veU1IhPxha0AuUoksY4/VXnzJj1JLqtFwNUg2JmysVLA56/s5Q0xIZfjUKMKc/ghHSJdQayn7dgAmCziVnCnjk9ckyg4iIGHmtrsc6CC+T5kZoNKzmaJpXTdLfldpYLz/C9pgnGVfjkRetwEGAIsgh0cg6H4LnaomVh/W9qIK1qPFzfeB7pupwndLX/QbokJp6MJpwxgUB7Muo0VHSFATssx0Kol77PUfPNnMncMlcZOvxc9PUlFCOoWXa6lfqUbJyHJSPrJczxecS9jUd1sIIVU91L2JT2ARxvtfs5hJ/ZLfHvB+yVr6xzz5N0UlbA8oNXhS/mxR8Nyaf4mkV6s28O3XOthbP1suX8HIFxgcNlpOLBuOiNY6YnFMlYm02MphD70vg2yNxPWIN6bgMbLtcoknpuMPfilpkU2eFj8i/pfLn3FD3t9qxX1hCrOwGGzfRgI1BUumB7UIKS4esSdCRN+b8J3GZab7lX/zhh8DueonVvGGlt6i5QULgoJqHRKCPvaNDJEReXFQHQ8Rw4mKuQakRenciAbTWyZatH8i+n6Y3Sv0oxKkN/cW8LnNvmDZp0bVMT7L1SF9U/o1syViGuGKiRr4embVQ0A2/dxNqpWKxQtYU+mdwOcAAAAA'); diff --git a/docker/streamline-src/app/Models/ProcedureCategory.php b/docker/streamline-src/app/Models/ProcedureCategory.php deleted file mode 100755 index 8b6a9a6f..00000000 --- a/docker/streamline-src/app/Models/ProcedureCategory.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAUAIAAFO/NRd9oLUvn+rfZF/0Kl5nHDqc1ox1YRJ15YAYwFVgG7xOa4EIsfRIkHluL5bnnOT0hKqEZG90LUr8+Mys36Gv3iZWjZyj9fCGWEJyWB5zDP9rgBDZ+SWSPRh2uFkOBObXt2MMKQqSxgUUYS1TWqDdOkd88WaWctKG1byAhTkBg33eIiISQknzJo8AZAmiVSitoy15PbX0ei+qZgkkvLRd83gVl6LPlc3z4H6sMW25nW3tV9gFVb3FaXtlkbnnxy3RTfk+E39ewTf0LwfvQPwxYyKxkHZcmPAE8NjYehZNvyljMM6rNmOw4VkMBKe3N4dp6nbSGh9wcIeTvYimQMPLR+r5KZ4KiV6lDN/AIG0zazLr5ean3Bd7o6JSGK5++whwFO7LcBBqTAXTjqWMwBGrPuLnZuYXAZQOIIfjcAmnIFLcnwbmH17ce+jUWwOJZV2y52niBHCb3L/hWnqcRvj0J5f02SZSNB8LJQ2cn9EoulfbZnRZEGehqEdZLoDGMQtkowVYonkaQWA+0P1c7rLc4zOyEMM26v8K7cexUgOvlAlkhq5/zva+Nfb0hYALcY6ifXPH75YTqIOESBzEI70/vM2BTzNrwbtWJwMhCX4IV/8yzfezcttZKAg3KyUdIi1wkBxtwnIYtXkn9fmFrVp1mgAXkIXr9R7UlGgjOEMWf87KJepM6t/INyTzG/R6a+D33b8Wpe+PFRg67t+Iyj1T7aavDFcnq/hwd+Mwor7yCpupzS8tfOvczBjTKt1CyUCYlZEd+KSnm9Ag7PUVYRgAAAAA'); diff --git a/docker/streamline-src/app/Models/ProcedureDeposit.php b/docker/streamline-src/app/Models/ProcedureDeposit.php deleted file mode 100755 index 1d7ecc8c..00000000 --- a/docker/streamline-src/app/Models/ProcedureDeposit.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAACAIAAAOMNGWPdUIQOJEdXDX50scERj40OK0YjfkdLgRxqjaMWNOYKHPTJSm4ZEOetSh7iScp7LatYeUfW3cSybiDb+Sr6lVM3+h7VG42ncD2FfOx35afcpvvTQehaXQraJ0qtV+Cs1tQlH1g6wAAd6NesW0aZzYS/rcje9SowkI9ojPwzHr95DyLfMtxv9yayJyOp3X7OGZQMk4FUCX9rgRFBZx2Og145muLEO+zzEL7wydKVjyzcY4BeVQAfFZcmMNLJFiQRbTYOvKQCZ/TKt8BvJIx0tYLnusMRv6oR51PsqvlsUpfS6l01H8/+JOwa24azAO7XlkAMjzalEd1lezLwhlZx8VWpBaxV4J2mNKiUwmiWRLUf7UltLHARQJlYSUCRbfrNsxWFUQG2Pp/7HTZAMNIwwW/wtoXz6Ted/DAQ87hndfc7wK8rHp/Xft0yOZgYNdZ/2GTTum3T7ArF+OP7SxWNd4hEfPf6fai7lh21hNhHGDA8EjIygGMgfGnjBnBNPzWmFeZ+d39yhkGPSz5yj6KJiI6UqHVqLb/bBtvR8GyrLKtxfN7g/oel0Q0D705StGLo3nBK5nUpyHZXsag0JISyLBBfKHuC9uZk3Cb58AANXfuosHSiSB0Av56ORpm6MNb2f+IOToyHlxQe4beXWwCT6OaOFLXoqlq09RZZYfpQgibV8ttAXsAAAAA'); diff --git a/docker/streamline-src/app/Models/Quotation.php b/docker/streamline-src/app/Models/Quotation.php deleted file mode 100755 index 9bd88d34..00000000 --- a/docker/streamline-src/app/Models/Quotation.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAAAIAACGzqBBJ8BrJQurk1iSRnO3pUTF8wzwBSKsQgAYSdXvI+WRKWYz1rs+Rgqicez1TwDaNzxsKt/u5FZdXiNEacGMFL5qv7RmM8o0lvsfjgNco/87W7zKM1tYgKJzbyUJgOe07CozyTVyCfjDHNYVaYNm36D0I8wAg0L07xXhMHns6ohWfFubufbDWUIeoiDjPWuYhFTXc2ak9COL4SZy7pPcMa0cNcd8TA+sUUHb496l+e78Zbp/2wEOE52wHwy5whSc8yAD9O6c8LF5B/caqXMIX0ir6YOiMYrAHPQOJUBsRkCHFZYNZ/X1FX2BzUdzXnPk77L9gSwZwrmrUexR5Xmb3d0hw0wQBuOBh4dKTVZj2xXRHe9iCwm7ifPf+W3s40lNSM8N2Dwgxv6TWRton4cgCTwLBiuZHPQ9AZI6CRS+5LWH7DdD7DLqu4IxeGb0b0jNyItc8NziR52ED6JnN0ggj/9yAWt4ZUhBDq+ZRQCU3wvdlQPrnfoFEvPQrXK9ys5r/uSNBdyFcYcBODe04nikAJ+NuUJQRgrcUkSb06P6YH8yX2FqHKQXJ1AmrwOVN8WNyjKw7spIX8fBBNYyQ4kmLxQH/YEgGtLAynyO9xU++6WGjVIysClCA8lcKuEYswrqvo0caCJQy9C5lgqBj1WiDoFDNVoZsZhuwW2phVJVIAAAAAA=='); diff --git a/docker/streamline-src/app/Models/QuotationType.php b/docker/streamline-src/app/Models/QuotationType.php deleted file mode 100755 index dfd80f89..00000000 --- a/docker/streamline-src/app/Models/QuotationType.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAEAIAAGaW6SjdS0G2Ttrpn3GOuSzJHj8nkWGYl45z6FbWU356iOmQazfU1/IfcwG6Pm5X3WopiJxT3IRt9XS3F78POyzuGInmNe0A8ZD/YKjZICFYBFHaBFd983osWacW5dfrg5aKTMXq6ipKHs/PfBHs4myCbsC6FifW4MN0F2R1+wZKvzCWiZQulLAh1WvvUyblg6iyyQtm0RC37E0fIEiudwwPDSCz9lH8KVr4C3K3Gdd88XBAY3CMr8TE/8z4edHrV5ZaPf8bHIcGxu5BtV7ne2acPXeArMuXBAD4wzBMKuwyGk8+fMGjkLmHpIo5GkY3L4rSWOVoWcm1cs3ALIFu08bCmVyUqIQNGcfV3/wjyJBDF+PGQiYSxgOXTxkuLu3op90jbQ0PIKRNUdhcNW/+5Rkf1cVIuYB+Hx4wRVDQSzUMS1PJv+KcS2Jsa2PAZhwR8JuUozUT1K49vxT1f/iMmPccc3D9ZjS0zS+jI7SAZu5Dsf/E5tso++Tm0IuJaTX1oOdmj77exi9fAjnvYXrndYTL9wzp4eEQHuxphbdwo2jSUKaFiIFxdMuMqIcasqaE+EDEXhv03SgsyDzbaDFbPIoR1noLDmufFUva8kPcDEX3o+eriJ+2LY9N1rpE0y+p6QnE2B7J9UynsQk3/DzLHIMXB+7S6SV8yHE5inPjA9UtxHW3LsMSDxmHUW/kjl2olgAAAAA='); diff --git a/docker/streamline-src/app/Models/Radiology.php b/docker/streamline-src/app/Models/Radiology.php deleted file mode 100755 index 6caf9adb..00000000 --- a/docker/streamline-src/app/Models/Radiology.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAuAMAAOX1YBbfD/VqDkIFM+bI/7Hc+E9LdseqOtQAmgB2F0zW4VZ84pE1+7BqDNj3CQqgRSPoaj6w2LdkdrWyu9x41Oe/wJJS1sD1QR1EpjR5q5lWLGH2V4uP1MuyPtuNVzLpQcRiYjlO3ywE79tROgeEuu0Ilpqw3Jnm1FhLvz51WUX3MTZBaaLPCXSnN2xcIQXf8CYFT7m0m3u6zoXaJtRCuOr7XChvfSYbBIisuOCdfQFqV9YX/h5YwPqePVBZmATm3adlI324J2OxZHAQz0PG4ECntcaW4KvTRd8eio64CdhaK49MrKT4ZxI9JOHO+/mhcoFVjuHkJvE3E0uGyXmcA73VFOXgY+I+LTPrgCk2qqPiOYZQ7faGTTGNmqzqEmzAD5j/JKXXD5W7gyQWo02JbRuyyq80BPQZivJsuqcIbjbtXbtgVTpwwxYWX5BX3TvcxzWuNuOYCmvU0xdx1B/+heNbFLpiATv0QV0Hq1FRQhn+/hmTXc4SGiMJ0/eJ+H/lAVfGJeClZh/HNKYs5PKd0keawVzLAuooAnzTBn4ZPXiIL4bDhy29uqQ1/oMVrnJtAdAkyNylUxC008goYchCm+bXjHJrmryp4Bn/BppwTOoCr9fYcSVSFaMnGVmNXyrNmo2q/Q15ih9Naan8ejP8n1R3hHvqnhOf1+JPUlsrOa8zo/Upd9YAXkJzofIOJl0bYaTeJ7XRyCJ9th/18hQJaV/2hgS7LyjbUlFDcNC5KDCoyMKG17vhy1ffd15S2P8Rud39AXuHNVZWMlrWaK1sn17r6ouC7Pcw748dgGRr4fiTaLty+U5o37SNjD4g0X7zo6u6Iax9uriuRS8hMT8fIVKapQ0JJ6gkMb89Ebe9oWja0sSBWxm0G9Lb04OrApCq3dCC8worcrXPpaXGpHU9IyzUZIbk1ukRfC756oVekAwvxKVxehE4GxMCeKEKubdMRDK+3Q+0zKU/q1GTuHNfXXWHSqXZURJlUa4+mXGvlj8AUpj7DZRgxk/RnMiX9lSrL7JRj647d8hjD/MCN5kzjqPYenNDuSWUbMhr0vSWSyST1gHIyputDjq8dZkNt/iiHLXQvc1Gk1hCLn5ZTs+bhUTEneRGfouhOZRaQuyorhVO8UFqx/az0VBvQx9jZiMNnQkBgB+ijpJSZXKcMvisl9VQ852jMwMPtR/5f5QIRkYmb7xJlZgq3V3M4lxOYfecF5QtCGPa7W+gIXZjZF029Y1VCRzxFlAMTZU5lTgrX9qfGbYPL/rSEAoAAAAA'); diff --git a/docker/streamline-src/app/Models/RadiologyUsage.php b/docker/streamline-src/app/Models/RadiologyUsage.php deleted file mode 100755 index c8e869c7..00000000 --- a/docker/streamline-src/app/Models/RadiologyUsage.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAA0AEAAOZQsxLsJkmIEG0cDlreFMoZXNctv0t7HhjcH5VL3ic1tcfjVmrnpGutIM4lOHDpRaT5tcTrt2rV1kslpy9lNXMDvHTkT8L1Og1nQp57CAzuz1D4ruRZ+Ecx90DKRQiQEDLB+pe0O7RgDXIpM1+3rYcrW3kcoS2YucB3IQUgU1RNG27OMGSmTKZbffBRPgEEllNaiRsx9gQl8HYZG7T2raIdDiWTRfxvAZc7c73IqGt1IfMBkjeMHAN7L2kZLbu+H+wA36F5TEkEnOy4G3KPvUL8EJggioT36i5Iw8/zz3bUpusoxHvgTRwUxx8Kc51F+P15YEVGYmnm3POmH0v/Qr4jOgCj2OXzWazao1/S3Wr1/k9nw+vb9Chvsv4p+W+8sCNyqA6jSBFMDlLXMRM2vegGRdTlHDJKmz8RWDGMW6e7P3qE+hvSi3Fx/eYkJnGSAVJyGOHMMUNbxvzxGjCSIxIZDJ0WRYrpKhPwaPem0zVV7zw/J+60tFzl6Lx+MJyVPnx3ttz7QVP+LdREDRUhY5gsnxtYr3sdJS25Vqs1kk95Cn19dx22zmU2NAI+M87yisuazV7wmO+m/XyInqqkHMtFaIl7MkjwrVJ/MC0dvVruAAAAAA=='); diff --git a/docker/streamline-src/app/Models/ReferralHospital.php b/docker/streamline-src/app/Models/ReferralHospital.php deleted file mode 100755 index cd3b6b70..00000000 --- a/docker/streamline-src/app/Models/ReferralHospital.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAWAIAAJUf5LZHQLkAS88X4vTwYMKusEFoEdryfCY9rZduNa/xYrsYlEK8VfppLdM4sDyhAzgK2jZPmXnPmwdNKDn9Yu8rYH0FgznIeMt99b34Zd+YgvmViMJNQYa7RS+vb3ksqkdowKAGRHLih0RjA8JkyOrD0eX87TtTETeFAkk92NjNDH3RuHiivuvRL/8lKNsvS2FXjW0dUwQz2yc+5lP1nFZeJZaPtGnAF5TkguH1I+24a+KpundANPh8o0snx9NaY/vFCeR3KPSa3iCorMvprZsJIXoCiMgyLmrXm8602JnB4tZbGY7mf7j2toED654N6yGrZ18mDaf913DwTo+0zAzXLXUW9prBD6HxD4l35/t1pQ7Sabm+SzJCLJhAG7Si4v56wzDYKpI0QW8qTxz25eTJ1/Ce+HqQ/2F5lS3wQuMhhGCix9W9G9dmEzfJspK6DE/HG8jgrdYSkoCCOsStbqbwvH0po1/LJOoZZtWUgL6aC3XnMG1BgBqeagTvaOR4lcL345wyOax9/nzYkzvCDdp0nS9fXN90W1gH9BjE/4c2idG99NhxdfnM+2xSie/KZ1vY+eUtpynZfXB0GkklwU9jS77kG045RdzR/SCZhEBCsMvGaRQ+bnT+n7jPaNPWkHdC4dzA/9pVe+jkYVDRcB0Gy5fl0Po4DHvAINRoQBLOwYkQy8nfqxhpgsCsE6gDCQUX6VhetrHkgOgToldYP5nUtsWyC5DpXoOpDppru21aj75y1E8QUBYUAk+Rn/zlIeJ1gEyvOpHmtcprEJm90uAir65oJu2gYgAAAAA='); diff --git a/docker/streamline-src/app/Models/Religion.php b/docker/streamline-src/app/Models/Religion.php deleted file mode 100755 index d7d6ef2d..00000000 --- a/docker/streamline-src/app/Models/Religion.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAIAIAAL0j7aBBodX63R8dN5aT45f/fs148+IFsMjEIUuKq4jA97YfljaR3ls8oY3H5IvekhQpWxXp8CZgvqOyZTFzim8F6oexRwgRf1tI+TtHZa9QwAYVhpmDIuhrG9VtaTb2pwGJaIccf1HQfWmLhdzhDCatTycVyT1GgAk+aNbr0IttW4i4byx4sTOnNqMI2IsjU6+5cj992/1f9kihaSgBVjaHeCfSbRLMTJRIiSse26xOgJc3C89/XeV0YX1TIgWIQ1n0cI5leldJUBfz6iysSlAEOz+rJMHWi/8zqjUoDMNBmaBXTxcKHvEaUvwKsjoLVmV0SFNExfTZZ1BfIYV0JUyakah7/XbGZ5WIAS3rqDRnJNr2ZiagMfCqjKqegPJbzo1lKYZ9Ao0G0ojo3G03jDbpQ66epoER2FYaw25GIzNiZAHZA4n0IFQgFtDJIlR169c0Gj3B42QbyG1CXbivgHUrfWYI6eV2taxH55ffjm/GOj8zm9E7Ql8WWwTMeEv2gMqOh/vCyKdl6vgepB/Bg260gdwU08PRgZB4M7JF4uejmZiw35hdCd5o82J71ryeSLywga0vAQUgsZ1vXYoxknIyaG1DjTljzYI9Kz9SEvWS5iL/+qZLJByaLsVXDd7woVDdowVlu1quVFS1FM1GwTR5lCqqpW6X/LVYFFB3lym4Jg3TVfUCuwRrHPTOMO6QLg0TGaIbjMI9zCb5MMgSELAAAAAA'); diff --git a/docker/streamline-src/app/Models/RemovedChiFamily.php b/docker/streamline-src/app/Models/RemovedChiFamily.php deleted file mode 100755 index f0857887..00000000 --- a/docker/streamline-src/app/Models/RemovedChiFamily.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAEAIAAASfTyyULNU5IC8NJ65kR6sI5gtX6AhvgQDsK8ezwn27FShfQ5EUGcO94lx1ZmY74rfyf60KbWd774+hM5cFCLH5tLYpnrfEMDyzOfPfLqUTjyz8qeLO3Kw/nrQVMYRZXmptS6abkajXbAopdjda14gVGi2j/BhA2dR4BvZL2DcrgZ87K1W0+nypdQ2tY6Jq9YJULEy4Cvm2IailEhqBgO6orinPgdT7AqZhpFdC/NtnsLM1KzLEk/vlKtQSzznbKt7iOeNt5FieZnRMnBSrr/NIENOXBO1TlTG8fvmRtfu2WmRd5PWzykhtOt2k+BqNk78iFZGrKdwM+I6dtHySd0eXmeAN9MlVpNRsUo3M/hs0sBnl9EMp/K4I2wxXFuOQTXML3FtVCQogV1mMBDsHc/tXuk19gQHsu7p21BjDiDTOGp8+MhM2qTKVmf37wY5Relpo5Ecl/Ia348WXxFkrHzxu6cxja6d+oGuU9FH7GIiG0igqdgobq3el1uqVX0yizL33YmUDnmQL+F/+0U7jctajCTQIFHM8I2lfkQIdfEXicHJUUtrlMn10to+t3Dr8mQLp1TpjnJu1zaLo/D9sGDifeNnzPqU2q2xgk3DDosoWXQZNHAlJ13z0pLEPecfUaKxrC806875m4Q3M+VQu993gmdiebIqSBHY5npCjQpFE1HxcBH+T4uLFhoJ8hbpOHQAAAAA='); diff --git a/docker/streamline-src/app/Models/Requisition.php b/docker/streamline-src/app/Models/Requisition.php deleted file mode 100755 index 332bca90..00000000 --- a/docker/streamline-src/app/Models/Requisition.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAACAIAAAVUm9nWy9bvsl3MWBBk9PB/h7CD66P9YFnrt3isagI/5pjBAj6nXhWdwwsyw7DmrZL1xHZxJo6d4xAas3fnlikaPxeumJJ+K17JSS4HCTIk5y8hKnH6nIyRpcac62BgkXjPh6gRE9ioHlcOTNX0np4gbGsSr8B0zOXQzomhEL4sGei2JQVDIkLzqIZYSM6EMlbW7eHTAG9mL4pMT/aCU4hUv3GfNbhyiUuG4K3jaKH0sKguymrNu/NpOFnci0nVkya1fc8i4WmQeFNYfCeXM0y2DS5RBlqZUAIXEvBkJ9NUAIi91zASSbybFmBRKbsEFjVXbNEft6Rs6fBh4mH69wuMwHdBLXCV3ARTFqlbbXvRcJ/If6iI41oS7NRpLDX77TILoaJmMHJPwzn8JEgEjzV09bPluENHitEdQr0jQTv5WQhBdpexbDzdPsVmqfJQNTPK7NOpKUqJCzE4uty6+jJ6pr+V5RJBBr2eCElBOJpxgKWtvutlWy1eVSD6Zfr1Q6smCACUqbXcJT4tpaQ8+2me74xY8575orfGa0OxzEGAFr+9MsrMQaqAjHXMVW6oGNO35ab2/vxbbVUGYKCDV1s0MkXvq7zZefpOTZ93aYsSFvYu3EnhiANj6s3dJtI2pKvHV5oy0o8NakBcmtMNf1z7bdwn5axIDDsfoHNtm7qnSA0kZcBo040AAAAA'); diff --git a/docker/streamline-src/app/Models/Resource.php b/docker/streamline-src/app/Models/Resource.php deleted file mode 100755 index 5461ec29..00000000 --- a/docker/streamline-src/app/Models/Resource.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAKAIAALbecRLv+fvjt4ttucqptVpp8lTbtB44yCZuKD/HPDkn7V18qZaZhe75X3BgB7LoiqcECbJ5eMr2M0taebF4w1GNvz+/R/GPNxKUxyvEm+Hnfy9fdat8gBOT3lxmow9SOl1F3ucrr5UdBRjiLucZBzACo10ovxcljeO5UuLM1/O5MJBcAHZQtq/yDX9o8tUQFbs5sDwD8WzKb+gQQrgdBPPNpHQE1bdbRpP82UupuLSgbiTzXCU8rZ4yRwNScnV2SCguNeGPyrrytJqDh2hryQNAbM6DDO5JtBu6FzanZkg5SagOIritCKnUI77z8Oxt9vPDNhllb/5FnSDVp64tUJLUwlFsws5sQV2NMFWKDnd51NuLGEURQ1GnTWvNhK4KVlhBqQ4FvTIbl7h2O0NG/kXXL1ZLE0xc6rCLOUqMXxuPiAMM0vG41X08Wl8arPX/7D2UKSflYIsUvV5j8QntY+YVvunf1T3O1CAGeoHD5weNVWHqm1VMA2aknDIHYOn+osLXZN4bZjqMp4H7BxxK7DzFKXT3S0h1BWDVpkmaY0qWS66WOKkbg5koA+izFdcK+MTc85+a5ynL/j/WbKQQ6ITUYyT6uW6z+Rw0MFXAhDCcDIrMgqW0+VUmPZPYf0GU5OOmx8iRXFsKp4X7ARCk7IXr+1rqhEdXhFCqT94VqSIJfNgANrfkBbLhZMHYU9sMvLId66l8DurK8cIUPs/GWu38eMbz0mtkjQAAAAA='); diff --git a/docker/streamline-src/app/Models/ResourceCategory.php b/docker/streamline-src/app/Models/ResourceCategory.php deleted file mode 100755 index 7fa58469..00000000 --- a/docker/streamline-src/app/Models/ResourceCategory.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAUAIAAEbCzU/lUmY+J7hpWF7vkxlVDw3iOVJLb+M4YDYxYZK30nc2B5ER2qh1JFXNL4xFEEBhMQOEcYS+CmzWaOMFUmHjUfP/wBZVBoDjRqnghN2GVdPumDmE1okb2Km+ja+VKW3K7JLsLRyXDdXvFFoUkHtZlGJnBkKTw/aRv8jVyWnbqrv8Jr6ARMeJiAngP6WNT79tYLt4+C+roYfpdtZnWP/SYdnbogXdhR1PkPEnm4BN8lDnIsGP21JEiJY7UZlC0b8gBbtYjvfSmEWZ8/eyl4McFYw8YMy2JZW24OgkzQfLaWFpbFJYFoV7NkTGytwqjKKxGMDLaiPzdQVBPXdnqvKCEXMoy2YOzXFBSygYkvkMygi+POaOUz6Qp/fVEPs+4xnBMajq8eSjaC4HSDP0IayLdYYA96xlLIsf6pCjRFx/YlrSkosjhLSS4G8WOME5FzXQvAnmmsxWKhfC2xIJbdcDCIsxYzhiFTX53doVKDSp39ltmcwyp69J18oCoD2bh2vhIRWNnbN157haVYckMA+wCoCpqAJdd4YP2EqBRw4SI7cFKuVDomWUfzrZO2QwRuoLOlvy8ysRficFdNayKGyPIHdXctxEBJzWyaA4DDqlphBmuSOfkia2lxlOwhxYFan3bBEv9Y+3SaRQKFmjY3IHyYo3S/Gb536FZqvLxdUT5XJBoIbwbsuqgebafwPYO9otuDZA9vByr/ZaCR2ydvdiSa1fbo16kWXZwEVVead2TDuEyQIryJQHdSNW02dCiAQh1SDmxBXZpZ+yOeFyu0YAAAAA'); diff --git a/docker/streamline-src/app/Models/ReturnedDrugsPerWardChart.php b/docker/streamline-src/app/Models/ReturnedDrugsPerWardChart.php deleted file mode 100755 index ba493a2f..00000000 --- a/docker/streamline-src/app/Models/ReturnedDrugsPerWardChart.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAAAIAAFTRDCEDVi6nqaaF2J9ncNlO4QlC9yEblD7e4CoyRevNpcXFGjxcUIS1mrveQ1ejpOdN18ybTL6H8KhAUZ3hCIqD9tSnxRL4isfepMhYghrM2ejhZCiRQXTp0wRqkQht3e3yMDV25Y7Ns16X4YQOALWf9dCGkRZHPZcTq9y3iu1zpmzKYhbdTXepoUc2MMAolvxgWarU97bosZcnXLrN19JImBS4t52/dZ/OttVgYqkQnOtPGsMZtCqTaBza7LxUaWQEjTQQI5Z5SyMNqu9j9jfxU3sUrlKkjnsElHj03s8eoH9LCgJDsYwq72KZiIbjhIEnfdA6JOGE563A2K08WqOzm6CQd9RC1gLKnovxeflKxVzo4mvvuzXdrXc+S6RP4npeC0rOX4BFXaKfImN1CdzldI6JfaKhEdYbyu+LD+ura4JVRPjCVy1SREUnU0HcuwOuqxnb+u3Xq0MJkLTDMJhIqlOT3+k8moo1knIbuSpM6Fbrr4AADFN4tCowiR8lxkZADiIlLetv02dSAY6S5+5frGOe9Q9ZaaqY/BgqFHdzZWxU7DGZLVH0vlc490QQihqR9aAMCO5STMPeanOCd1qGUF1YuDJx5tito7jt4PtZY4qV9dDrK4O1sDefRkrYmuIRRbiOGRwl3KTUrKm5y9Jc4HCcTPsuS97L5HGnn1g2AAAAAA=='); diff --git a/docker/streamline-src/app/Models/Risk.php b/docker/streamline-src/app/Models/Risk.php deleted file mode 100644 index f7818852..00000000 --- a/docker/streamline-src/app/Models/Risk.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAqAIAAHS+jhyj1RtlGlRVi5xxhj7jvvaNTo/CMNTRfgDnLeaC6z34bKSL1N5eZ2JLur0aPxSJIjmnDyLHUZCuDRwZ3NpzidAYtY1UHN/pnuUP53njP6BozW7PsTf9ff4b6EvKH8hLi0vsjxdJvBIKd2lWnu37jbQ8oGHzlJBKcgia9KNl0LIFg4XpOYln/3p8xNUHpJQwTqqSjghg3Xe7PRguHhI/G02WQQV8NBhbML+xassigM43ItsRrLCC/B+iaZdtRXYkyUs+nBrJ1JntdxRkU47WamsB4otRcRTGVwfzjP+bSSohCoMrByQixiVZx0FYItAjHeB62IKSgtB4w8Qt522ltTDSPKHkpjW7JVg1d3uv3TjMNmqjYltYwmPRwRGmvBOHfWlLctRVOO9CxV5JZBuWqd0kXV51Bz22ty1sZH0olJbxIN3j/hWE7n+o8s0Jrqami+g7weLcK45PwxjjonmBtjU16NHrePFR8lI8ofS7fHA54EdmV1fE5x0hbq9niCS9gp98PuHjOiTtUcl+i5WmozPJemW+YgrqVKV08vgqt/O3voCTioccXG+PD+OeCLLCe7noPb4aag5k154UWqtpqXSh4PQqlU24yH/PIrdBZT6uhfFkmo00Y9p4m8bZt6JWrUyfqYVh3lM227X+6bgSjuE1FwN7ECLKYEipnKZiZ8q5uYGeH+N1pv5PGdNFgLRWksnpvzUfhsnTyehXe5OQFNoDUJcYop96RqYNa6wTrbf3i9ucDB3GLoxqacZCKilOBFQChI3/xb4i7LNYLzClQO/SiQ9xsdGLPEKOtfnGQKHYgCCwzG2Jf97iDDWzAtmu9HOlbZgFuhD2r3WRURUrjdDGYDAhlTd2Ap2WVilJvOE5M2gM5lUfrsDxrGg/7naunksVh16eAAAAAA=='); diff --git a/docker/streamline-src/app/Models/SecurityQuestion.php b/docker/streamline-src/app/Models/SecurityQuestion.php deleted file mode 100755 index f59c3948..00000000 --- a/docker/streamline-src/app/Models/SecurityQuestion.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAGAIAACFlqzOZF3zmnQ+pPKsSvfk22eti4cE0sz6mUy40v0vV8buN4/bN0m49uBLRuuGZxLugCA/lpHvKv6HRVfxebSX8iuHEeQok1wIXA7VjsmB3/ZFhIQ/AlWDUFojU2x1DC3RsblJZgHkaUiDw9RsvsaoFT5DuskPCeOhuhdqqGdcKFBrYNvJ3qjWu3u82yBg1RtWHbQTvoB8zbZS+6trswmuz4UPw6muC/UBzgsimR80MczA+d7Vyr27duUSXYhyc6WJx19Z7nAyCTzT71Qzdn5Qu6elD01C/Gi/LjTzyI7ixxIpJxs8lcLs5fx3TjUbgPk+aoy3ajKhqY1zVurwBODqX/B6wtDCREc/FSBf2ALe0o9hB48gxEqZ5K7XwaS+Alc3tzAnxiCqMLEZrn4Q6SvYfS3ppKaVg4WSp/YeiBMZfwAIQmLk8BflSbsMeRMobb8noq6ZUT/G6+9y3tIaWLOgcRLgTGLCxYpfcjffyjjT9IWETq95F/DtnHQPeIy/VNC25r7fyhY2csqaLNTssK9/LZEAgpAwH/2rFnZPeXONAIMWECu2R0PwtCueDwF1ikLQ66dcKm0j6l+4bxBIbsbPGjqxuahK89+iyNAKOGcp4+UxOGt7yDZ3+UHNWHt3jTo8GRQN1JBI5zuPgGLaHbdCxJSO472aGsCaVLhnAr5CGm5tJir02+Ya8XUs329NMh/vSy98tuWXDAAAAAA=='); diff --git a/docker/streamline-src/app/Models/SentSmsMessage.php b/docker/streamline-src/app/Models/SentSmsMessage.php deleted file mode 100755 index b85f0f77..00000000 --- a/docker/streamline-src/app/Models/SentSmsMessage.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAwAEAAAWMybNjab4gQcQ7zlmpVqYWvZEaXndvvWADg0RalD6uPCGcvNER2j8JyjUgf+u6Y1uuja6ZvQoEtl/NY+kjoHK8zjSp4xKlidrwq/KDOGqSucxLQrMTTKRxw51jPeEdRClFgFZ763hN6MSL44thObIaas44vGO08L1YGMMWW+P5kwXdFbqp1fBb9UNLcGSXotBUuU1PWSX8oh/NwJQq/5Q8LCIBeP/N9mN0po5357UfIkGJQOVkqQkFZNuinSDCx2qGMRtWsUT82kqFuYYyimWoqMW+wFTWdoFakQCe9Ed5DahY4WISA4UM0l1otrTNizmGiMWF2MIU9Y03kybYuGw7zYlF9JTCqphYCB6DRuPUWMfIvzJvAsVAauf0xJJutxrPsptHQVcg/flEyVFE7jJgfG0884J626jpkumq8fePbC5DBrqa/o/75Ga/6Y/8czzY88+8/3XVPhAXe0uw9CkgiKU9gz4VEtDVNWEqqSKNL2K3hDF72MI+E2K4lxM9IrTHhsOXhxoEFY1+nQWGtHurDW/wHcqVCMR9YJE0kyS0BCIfDAO92EqriGfgUp75/hbxHK7prOrkmZV/bNQEr1wAAAAA'); diff --git a/docker/streamline-src/app/Models/ServiceDeposit.php b/docker/streamline-src/app/Models/ServiceDeposit.php deleted file mode 100755 index ae34e5b5..00000000 --- a/docker/streamline-src/app/Models/ServiceDeposit.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAA4AEAADD2eVuGAVgpH9RcnebiXJI/K+mNABks/crgY2IijaEz15CD21BAwORwJgokl6iDclXoN1jNp4QdKLeuCDWXe5ejoi4O99u0YGqbTZWNuDcPSA0W+mXnE5XALEYPN6Hfv5OLfpEjbpB8S7rDoCBEoFSToqLnLqTM27Mp7gsXLXURqiHPZ1EClAMnWnYmsDYaW4xFu8YZEetZrqIw3Bajpm4PDlDSgrgoeo4ox9A6w7azKrecfRa7Jas+R3TyLTSHZxU9b9gKecszkLUCiJDlDjOuWOxPSQvo/thJx7MiSYOrtb/pt4ToxHJHyHhLVcxM/8+3rCqgzCUSVmchG+S3xzcgzNM28sGadUXMWpvtMDsefmArpVOYGF8zw8D5leRHs7uIF3+qds8+P69+M9HSb+SJNDIkhFAibA/zVAw9HX18t7VmrPJFDv1nRKqByzIR9Kxpw0zNVEJa51v4of8xYhCOXvDTLNJ0aogfwx3jAgNFVtl/HQYx4ZD+p2r3JRzJPlWSGt3ZCp8oa98jNghgeysW5QdPrY/N4HXf+wSUY+e0U5nNKj+Mkj1aKI4gV2CnqQqSImAq85KZiUErYlXCYQCXitOenhWLKJOsT8UYq9oIhxf7OQywzMiY+6U6Gg/yuAAAAAA='); diff --git a/docker/streamline-src/app/Models/Services.php b/docker/streamline-src/app/Models/Services.php deleted file mode 100755 index b979a585..00000000 --- a/docker/streamline-src/app/Models/Services.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAIAIAALYGZBJ3MQT1LfOzzgvchLqKNcvQ24YTXosnFQDxMB0FtPRDIratWuwLekoAzc0JEgf3m0KMXMgBlIY/fQw5P+P4pbICjXrLMDtNgXVY46tGXzWOA8q1vy9OUybdvtArWWkIMgePESpDsbckmk8oc0b2V0Osdju1VFH57oAzKeCtUYftvqQlQEQcEYU6oTUGuEt9nXdIF4bdMLlzBdLk2s+DbaLc2mLHMSNwNOiEKW5uGKE8VYOvFopls+hPLCuE+RfUy19dfG0XTU4jRcse9ylpyISXXT+7GZ/YVsuz1Dnjlg5Poz1BMPSAMNLkFI9h9Mav4R/ssU0zTvKSJXBWvnxeEPmwBclA9Xd/eDmD8l9fGpPs3qwBmN1oSUWHvhx/nOLbN1eyrxodI2vseq8rPj5eKyC2X92diKhYx7cv5nYcefAdKDeteyhFZJTvcgfk+1aPkodQe1/0nCC2mnyJSqLIVWcU8R6EC5XlaMQGziHVl7sT/rYAz5T7faEc04qAebnAKNknTIPwlOcVsKofWl1RuHMlzjP3cBlmyO1cBv9n/uvLh5QTbiY8z5Ar8IJwqZjYrVjwo+JUcoarqm9/JN3PFW904CZbBFbiRy3BcC1QBsdfwjeZXl4NaSzjrM+beMfVcrI8dH1Up6FwEkhT50zzj6WhCIjBOhHH9aLOAJG7xQbSRaO4LnhTq88CYQG/ePuz+pr+JYe+coHVX4AyP7IAAAAA'); diff --git a/docker/streamline-src/app/Models/SingleGroupPremium.php b/docker/streamline-src/app/Models/SingleGroupPremium.php deleted file mode 100755 index 06ed0190..00000000 --- a/docker/streamline-src/app/Models/SingleGroupPremium.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAA8AEAABQ957oQlaYOccmUTTrMilNx5fFZtxh+UiWIO5fwXHDreCOdUt7F2MWSp0wbbkRChwLbTO20GwNW5R8T49NrXbf4ku9d2aqno19VEZSB+0vG+G7O8umDqo8euRznflOaHf9fv5ddNPeBOoBs3QnjMDIqpdxkZoYDDXLiZcGr2bklAs77tIbI/uiywGOx/Oa7JbnFTGTIDlnXlPJEVeAzac1ipK1CMiQQHpPEqIYNk4M21Ynb/By26jtWMaZJHtmSW2GMT+ZbLR2qu+dT2O5mvqnOBhxhhln7+LZDvL1th6QjEFNsXyomUh7pRzws+iGxrMKxP/k4mYpaSacLO1QX/oMq/b5x1OGjYvcN0CkBZP0hYVb/j5Xx/h2iZmzNQoTCINRrSacM+bctoajzmSDiIrOGvK8NJp67ch/DzFoJsa2+t/pq4cdhTRE4oMnhytRVU22HQFzgiZ5qOENXUz+2XRZq9q1DBGOdLWwe/Q9u+2pmv3BJv9XC5r3VF3XYH2XPhNCFUAdjoZj0Z1e4zETbPGU4s6whWro4TsnhA/baojFqwYPO1PePHYR95uK4gU7AWCZISJ2r7CmyJteO/bQk9NoN+rt58pCvsG4a4u8xQjX1oQ/kn/NIDPV3tTn3KoqDuv79npr4RRLOTD8u0o6owG0AAAAA'); diff --git a/docker/streamline-src/app/Models/SlitLampTestArea.php b/docker/streamline-src/app/Models/SlitLampTestArea.php deleted file mode 100644 index 88515599..00000000 --- a/docker/streamline-src/app/Models/SlitLampTestArea.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAA+AEAAIGqULxvF1+llSRm+6nHJccp+i0dt1p7rBry680abEJQki/diaj+2UE9KmgsolAqVME0sThY0TJOZiHMTEPkFJtCDRsHC+9Lfdbzh0J7rOj7BobSuZ+DhV2IlzcEnmI5JKyWKF59bVEi/iSxd02Q1SKOEKy79+Ud0q+pXK/U3EDHkFDxG1VMk/PS1Z5WmY5LNZcHldpygEnZVAawv/hVyGKyyUBP7eIV/MgXT9nt1ZE9juzBz+WGJBAFDtwFYkoAIkOn5RgFIxv1MeIP520Hfa5pEnjjx03btzNI1lNPQ3QVLFXqDcqNbY8lWjpZylcPQaKekTRvJaBIB6SfONKxavHsk9AEV7Xg9lpdEke8wYaALVhnml4vSPZ2rgmkNcdv+9+06ioi4SiV8KwwO725ioi5dAutUZq9PSaQ7XHSX/HMtaBWQS4zDsMCkZZpM0r0p4QYVVeNJ5CsW7vP6sWqr9HrxIszt5Y8Q1KbB6iR0p2j9D0+u8fkpmYPVjWIGrNs48DoTEvf+FugS8SdMRS6JVFnYW3gB/SZiKCC0nlyFbA1ljGf6y1AYl7HTLwzbtLWLPHVDwC5l3u5b1AP+z980V26lF0JasL5yelixhAkxuDoZZVOglt3IkzNMqc9hGLgi7y+nYV1uc9JYKxmKifs7T5lTqrUiOps0AAAAAA='); diff --git a/docker/streamline-src/app/Models/SlitLampTestAreaValue.php b/docker/streamline-src/app/Models/SlitLampTestAreaValue.php deleted file mode 100644 index d0ec6ff4..00000000 --- a/docker/streamline-src/app/Models/SlitLampTestAreaValue.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAA+AEAAJ17woECwwyOYO15/f/RSHyfJ/dTMeY4dl3oH2lRWf/3drb9v/4wsT5mpS+zNGsBZlGhvq58SrqcErS4ohVy7iBqXGKRK50yksdUoW434yJM6new+CB82JSHdnNTCN/lgKVwJ2Dzr9WT5De0lrkJVXbV4kn67TlNgNHtz31RT3wQpz1f+nNuAmWVhb7ggIU7Uxp1k6SVYmWsmBSWpjm23cgzt2ybKySlqO14am6+wjR0QoIN4W6ZRbOBpQnhPVyLIQmHQisNMyszn4U6B6jiwHgSkGlDlleirfcJ6OfqF1o0vzMoFBw/0H3yF2A4ZrMGEQRRa6Zk5HMVZFlvssnBRi7wPKaof4Ql7Z5GM4Sf9VEhT3F2O/XhS6jiTEp4oF0IIJcb7x2t2chwTLp4tQYYHSNpWxvtQJ0ynDK3G2TSp3Z0KkjlaDiTtGFIDvcidsoYUQUbYKTBF1Q2P+NNVRHadbaAdNw9rWy3Fmr16iepaYZdsxhAptTrm2tDyVTw1jgzZmdfQzjThVmQFkk8bsMMKKIkdhLD5zjQMYIs6AYDQOoGZpzi0MSyip5E3Kze5oCM+r6DlskyI09a3bA3yL3JZykQXKYQ6K4CfdRvMAhQNbPsFm90kA3xEZ2TO4Dd4OK0QbqojygJQ8AD0M6XDRG/ig7MlRZ4jfD0ZwAAAAA='); diff --git a/docker/streamline-src/app/Models/SmartTriage.php b/docker/streamline-src/app/Models/SmartTriage.php deleted file mode 100644 index c2f85dfe..00000000 --- a/docker/streamline-src/app/Models/SmartTriage.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAA4AEAACIsyc3IiNWFj0r/UkVwAHWnILrde9/6U+XYA+GJ5JqVsIlVivtydKM4SgP/vEeQOD0m1nThHvjXWu9YxGi7PqC8PnAJtqEBIfz303ni+fvYk41y9oDNK9nOb7hBNSuKM+GMAJSdzhylUWEzTS5lU6+7NwYUh1OtsZ7eDBCt1+vj9T9TGQkUvF/RogB3j0IjkIdCcYiMxUUlX7dndOHeQWW7qv+MaOGli7VmisUAv0d1uEp5AlQdusjaQRVxPxodpI312GiP43vjjoXz78ZjnuRadJZnERs/dF04TzHwXMNJwl1wpCFAUjFtXeyqOO3+ZJWL4/4m03ifQBOmj6MsU0B2wUWZjJJYG8eSTWAFRtZujVT6FRUhTk3+3smms1ViknyZlRybo2r5JhmllgNmN/6kNzsjMIf/5ZyYMAous5O0jFd478hwxJ8OsYQxBNgoexViD4ZuYm2tvV3My9Vshh+pUSDlv2srI+5wFl4pqtPUoYt0zVQTu6FuDunFJvTLSPQ6chCssxkV7nVieP2UhUafuL4Ufh6QuApSjsXVrru5kK7OWJ2m4OC5Ka9SDpQZbQka1C0sKzQiaNN3DlQ9m6vr4Ck533UUC7O65ihxOrRH7x5jDyAPwV1oGR46CRW8WgAAAAA='); diff --git a/docker/streamline-src/app/Models/Speciality.php b/docker/streamline-src/app/Models/Speciality.php deleted file mode 100755 index 3996c9f3..00000000 --- a/docker/streamline-src/app/Models/Speciality.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAAAIAABX0Mzh+EYDWVi89r3SFhhiT30nmLr43+JB6uhwKTwbeLjaj3YiJ65/Nsm1o2UsadNCMsaN3Wf6uB6k0F5lLtmvxuGdRAoHJSYsM3mhaGes8nYv0sLtN86yc9Rgpa+2Bwlrc/hgwCanDw+WD2Ex4qCy+iJhZGNuaIIBjH25xOSCLWFoy2Ui3FZcUHunvi0F+q+bYnTQDweHN+ZOtA+8F2Okrn9iZfBMzZqW6xCCdXnC1kXEp95KJVz2CgUrSpij9COtWpFrGYBwttCKt3DX02lz+qDNBGf4HsAuIMkoLUqxpXQJeDkDoEUQjdCba6tTyLZ/5cSY+adL8hsG7rnh5Pt4DfYSmezQQS44cy4YxBJ2ZOyNxiElHj6qgsnrGTtnyKFzajNQTxhj41CKrjXfGLMrIsiarX/MBre+hw4cqKKppbI8VbasBsr7QkpmOodEH8OigtzzDCso2OItBpWN8MdCEko/V3KMCgdsfLnSeqt8Met4PR16p+zxBSzqo0lfg4oWcy8mA8CiC9sId9wAmH9BHxzqP/r9Q+VFU40dr/6ByolmN3kfPHVoITrHTcvQ1Ld1u4tG/PkMk3t6KpDtc+4IgC2TtFV7TqRfAIMhL91hTerz+q2oGFHUa1Qt1aY4VtLX8eAcInkmmMYk+Z0PBYQBYE+4dTqCgbKa2lG2IVOl6AAAAAA=='); diff --git a/docker/streamline-src/app/Models/SpontaneousRegularRespirationInMinute.php b/docker/streamline-src/app/Models/SpontaneousRegularRespirationInMinute.php deleted file mode 100755 index 6e6a603f..00000000 --- a/docker/streamline-src/app/Models/SpontaneousRegularRespirationInMinute.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAMAIAANMiiAa0zWNmVSBdaIWPv1gsKn08WoIoZtxxcN7W7riuGTJgQWKRUz1IyCPyxTOJSn6XdhUYLC6FApnMEAsm/2BqD6Jhd/FsKWpKoKB4FjPDr6JjZyyLKeLic5owZfMMpMmccCmvMW4qZ0BnoEkpWyCwB4omWG752wsxOdoJKGWgulpWfNoj5aIOoJWmeAU/x6pzKukOxr30Fnja3+zO7uqeCprtijBKYMbYzob4F+Br5AHbQGKlNC/dtox3Q4bs8AHfzx1hu8Q8dJpi88WaqvK47rWbRIT5lq7uB/IjfsmdYakY9gU0jy2VmTj9CpRydf16oGLLUzWa4e0roxzxaOXkr6uiowER8LNxzRRuw5e8tyrmKjlwcEGgUNiTkF2DjxnG2Omk1zV8UYpIpLuWjEpkGuR63WifG2Xc0SxNxcVXHIFcze8b9I+W/PSu3ivdE0fJh8kk186ItshkuzgkkoIhe7nYFsUsLg0uq96R0Dr+lO4X+xO6B1zegrXHE21QHWt3rYdZdQFvlKlL7idk4qF20CCHI0V9bN68zd0T8oFgc79dm290wG5CaiHt5BSMNPeJqkUTi1o0GyJFZxsqpNxoVFQ4KZgBxW1LUidxzeeR4K3sH/5b62RdsnG0KsRWo9fmk1tvQfZFKOJIG2ajvwkTsbme4UPzhSjOpKxDcQbxelh8Q5X9I5yfQf5m0s8BvaXb9arfvE34eQIH23KUh+8WMyvqvGhOsu3c2JDA1nn1AAAAAA=='); diff --git a/docker/streamline-src/app/Models/StaffPaymentConfiguration.php b/docker/streamline-src/app/Models/StaffPaymentConfiguration.php deleted file mode 100755 index 69bf2a4f..00000000 --- a/docker/streamline-src/app/Models/StaffPaymentConfiguration.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAGAIAAO6BZ3sBh65fdgznYjT+vjAhXuhhBbD2JD+Mp29pNY+KkKgVAyYJQYkP9aoga6cfhs0MH4RDr2efXYbw97p9saCsBDztV/7mIcVRNv/Id0SFv2NRXL5b0/Aqhtin4gtxT7NviyejmHkKaFV5UDzp5hKVMqVLHmPmsMlhumm6SP8fwff27AFPE4PXkEKC7XQzOLM9ZOhg7ocy4B+4PMmPr6hr6GdmXXYfEfWbFuNbDIZtPkpG95wpWYkFbi4fpj51ZSHSWeeO/MO/gjauGCiaYWG+i2plwrpU2t66XYqoGRBQFtOIWYUitNCXaf41PBfMGhja8hrPoTejF3PCHugp19iLyjG5oJK055ZF4TJUvePV5jR6yn+baPjTtwkmYDn4YdHhjil6b7N1EXO51w43TyhYp8FG3+L5tMVcv1oM/tsfF1HhPImR/4ioIL/V8nkiRBtD6KJnT6s4T5QPsz+b1xGg2sU0NYEjBRaSIKJcMd5JhPrmM5r+VGfTRNXlizj+aUtZrX7hE7zxRyNnFTLqVItgSr+/Cb9Q0B+5uzfr1nWgduvlyQ7YV+o2LEWnx4gi9okpUxImlP2Ah+0MvzvNiE2bAzVODfCx4FQCjAi4CeUiasgKiEJ/IVYioU0PhghMI6Kp9SIXD20Au1JF5u61g+YFeVvi12Z2xXe7QVOcdEAt8JRaj6uWkMPXvleV6ApX68p3zDRUMReeAAAAAA=='); diff --git a/docker/streamline-src/app/Models/StaffPerformedService.php b/docker/streamline-src/app/Models/StaffPerformedService.php deleted file mode 100755 index 89a92b43..00000000 --- a/docker/streamline-src/app/Models/StaffPerformedService.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAGAIAAN0KdxzUpgs/+yO4uqyORCC2NG4ATqn1/RAHec3EMAhft4lqlhXc9wKJa5YYHSNHzzJ572Fx+f/rX7WGK5A+MURNhugkruSB7uCBGI5KrR6r0LKiGUwl+1ST/tZYrmd+rMZlKsF5W8Lec5ZHCjyC4oPd85Rjv9KmLDQBNZRqFPWsCjeI7M4a0WY+ws4mPsc22FITOZX6cyrGhEiBHcA16biM42BhsC/lbaqnWJWNwgQ1JuO8WdnN1jQFnq1hDHxTmNmK2QCQ/YBxzGcFEAFRuleOLCltyDV0toU3gE4Dtnrtk8l4P/mZDVyaLWD6V/B+xESuqDC+FFCQuAYyuNEKmpYhYTW4H6iT449UZ2bLkzIyRIIo18mWKnpb0XHWJZcpvSFBIUv3XUvV2OrVWswkp/l+djpuO7pJ4HGxcGG3taDNTJ2ewgK0YBq5xjw51Sl1ws9Ux1K5f+eKjRXRdi4aDDGHuUjP5g9K7pu3KF9OwlKW+yxFoDREXSspgtOXPjXXl+IxeiQuL2pRGpiTG0KXhF5GkPdoBhxUWgCtMm7Ggu/yPKxqq7XDNR5I8B1j8c6ZTjHtmJhPzqbaMMbS70jgiGJ1teaRiswhVFbzVojV6SGxty1LULCjW5kZ6/QOiQV/t73V4skEJkl5jPHEc+Cym496Tdsofwn1qfUchrJsRJb8PobbHtURv53zfeHEF1MrOC5SeAMxhbezAAAAAA=='); diff --git a/docker/streamline-src/app/Models/StaffPositions.php b/docker/streamline-src/app/Models/StaffPositions.php deleted file mode 100755 index 0393196b..00000000 --- a/docker/streamline-src/app/Models/StaffPositions.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAKAIAAH4eLe7fLQ5OpgPIIwX0fPgF5fxAdTUFIFVlJhFmGCNcXlV5w5MiX3aux4d3J+HWmN1FKtB2O2nD+IDSx/vBEbFu8Hah1Y3o7KBvEwnqsaWLKFBMg9F8L/LrwTXnMnszFltqQpWxmGxehybysoiKFstUszBzS0eqad4sED9WfcD/p/Edn+8eRKW0wXvqXs6UGYnYscFN6ZQWv/Jj6WlMK7fsBvYP/X7IpEsvjBN5UPvOCTZtAIqXlMGvhTHssewTtUiy6xi7kU42a2Wcjl0/3akWZYrkMSrPWD5VLVnPZNWm+frCV0hmF8aNOMXLmGttmYBcwL5TCkPpdnA8ScyvcyNzFiwJZrqvLLHKf2f0FOIS+r9j33E2FuKVvfroNj9cJBpRAVOnu7FhaXGztbDrrkLsHfvSRRoNgoj+eRvR0Ku61q+g/IIJp25TW8Wgkp5ANPjgLWtYJ8SVw0BCYbhAMW9mpecJDoeGy0B+PzEBqJ/yOIxls462cC5sC3sXiUWNurk1oeM6p2ksV6wHjMoAtJ0iLJRfwmCH2INnigHzASUQ2RO5cdhk6ZJ/8oJ63NJtTWnzyeeIi3jS3h1cQCgcr1nxsoNbEbfTYblMllgEMKM+0e0AsUYrtMX+8ABF2aMYKftI0D0cNqhP9XxJvdJKznRvhuwpCBvRGRZRlnW2TUriOVAp9SCeEgUCgWBoJUajfOPtkkRQZ8nHjicSEcxalZmoUSPBUbxADAAAAAA='); diff --git a/docker/streamline-src/app/Models/StockWatcher.php b/docker/streamline-src/app/Models/StockWatcher.php deleted file mode 100755 index 8cc766ff..00000000 --- a/docker/streamline-src/app/Models/StockWatcher.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAA8AEAANvd7grMluB2NVSbmDEvw5JSnm7EUHa7wHNNhirFOWevZYIg4NEdhBvBXI10xCxIMT3akKsI2AzsBAgTz3QQoVS2YrO6XZM9ZbHOdKHQS7eh9njZIYYS2iAmWF10WVCci/FlGl9vlazpPG7j6eHC5qwKA0KffHsJQTCyqeYwrmiRqrp8h3GEZ+Fz8XILq0GyS+BB1CMy3NF5WFMRdYPch1LW8UVqZxAggDfDCeRfHbATklyNRl5wAZPuzwrCUlolhrgJzH9MSPBCXpwUj/d2ejeyd15Iyw9hnuwe15ucB8vg0Qiem09jwZoj/Knrn6OLcycRp5eC1chwjoLpdXhAjeQ7gtY6thj0Z8KFyGAq65yOuGAL/wru/8o+OXzv3ovCbocys1v+fgRNkBi4y/jNJUz/SN+Tfu+zCQwsGaF49azK3hjVomOKBuREMaRNVZqOjEhjkZQxL8n7/dhtfe2vQqx2XZCTjPbd/tTDMBTkr2W6uZifxJqHMdc0Bg/YOZ/cdMCscJXgqC6lhHgzYDFfgYCdx8i9zQItV5lY6jg7v7sTHnWcrYAkiiC081rm2fFXsKrsPuWSBK01kZ5YSgpW+Iu/6jvzPDpN2G6Ssyjbc+v+c8ssuQ9vFGbDl7uLXQqJGMnUTC9x8qn0LSAOrfSRoIYAAAAA'); diff --git a/docker/streamline-src/app/Models/StoreStockReconciliation.php b/docker/streamline-src/app/Models/StoreStockReconciliation.php deleted file mode 100755 index 6fcf861a..00000000 --- a/docker/streamline-src/app/Models/StoreStockReconciliation.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAGAIAADt3kFMXTwIC0dHmj3tbj9BHqqXiKoVgmKEtzKBOSW/sXUGv8L/TNhPoomTelO/A+u/j4+G9KNlbRc9lQdPtg3AOEnakBNfiroiNkjze5anM5DMGn6DGTRblRTrIxUMVgeO6U1sJ1TcKksbM3h6szrAqixPi/9qyw9owLuWjV2rUwzbvQDMUrSNX6qM1bFKIerk36Bkhg6AYs3VGvx53SXTolq+VC3BNY6v9saeD/DCgm0qpNkWHL3tyqiyYUcZBQl6yp+ViWd4fvG3+/IkQQEX9x45bK53eEYMMpvO5CMS6psXnJrKu99Fy6Thn7rzrhGiG7QFwYHeANB4eFtoLyF8WW80g03RFrPgboCWr9btP/nTfo/NnLHiavqY3Q5HojE4bnwz0McHSYsOT1RmCDBQaUW8K6P3HZdX/l7H0H2wbaLFgRPloYVPPZJxQYOWhWyiJYUFiUMEVvv+QO+D4gqIzhCjs4L4GaKob5QhQ0rxPcXP+Ev1pFYil7mDn2y9MvN4X6IHUS4tPXu9sQLQD/L54tuEmr6iRSNYNFsysadz5MOyfBm3JWVoT9SPP2Ksnq3ZPl+py/oXbWxLkGELM/wGSUtZy0rWBDNDSkLdqwcZIE9yfWbekSFEmzDIXd2+I3L1kyn0TZDLZJ1Pe8rx11CqwQW7i3O5x4zBTrEewIQS4nT0z06yCSGdTrmDxYL54p+t4FxNirh9wAAAAAA=='); diff --git a/docker/streamline-src/app/Models/Strabismus.php b/docker/streamline-src/app/Models/Strabismus.php deleted file mode 100755 index 6f7791c9..00000000 --- a/docker/streamline-src/app/Models/Strabismus.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAA4AEAAGAN1LVlnnIJfkTH1yP1NtT/kzmEBprgjz6i6/KfdjOBd979/5yYIVmdYn3pOELZxTiBG8vKCBoif4SoXRzUSEfcBcdPIBgi+apxoDsRXWD6EsDNkPdJHcogmDQ6iC/KQyrhggSH0pUt4cPFo93JpkSS9//5Mjo8canL3TM/XnQPt3aXGy8JI3cHdIYDfJRffMyv5lnDh2SP+/j7TZ1ULPs1YhnU74cCXLaWDEo/21Jg6IaXEa3V1MGgqg7YNDq4Eu9TVsU214JRz709YU1ZyONDOhQ8CaiYgtPgwgdKprsp5FAUn6HKDNb0/sNCruEysLl3alCa4zjoUTHQNSwSJP0sHrjoRjT6jhmgKH0MtrrNznVkhjAFuNipgcBeWOXHPbVHAtDA7ZWgZAxHi528eXh8J+napmNnL/HMCatZf8nCFc+CCwjE/FK11xFCylt4xdiRV81MIUgLapQjE8Lc2X+3B/3Cw6m/OYL09FM6rJ0OZvvvFABnU0+BmA4rqK3ums/xkKzd5SoPkhXTd6K0KLzb4sFs9OtMIOiHaUmVJXA/bCZ7jiDu7/YXTO1ev8Qptbx38hISoUUmRnIKAedNEo5H2FYgFqdmuDjLjeaLKMqeheARwVDDmYbjdRblWssB3AAAAAA='); diff --git a/docker/streamline-src/app/Models/StreamlineBillReport.php b/docker/streamline-src/app/Models/StreamlineBillReport.php deleted file mode 100755 index 6293c8a8..00000000 --- a/docker/streamline-src/app/Models/StreamlineBillReport.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAEAIAAPLpbjNAFi6R1ce7VSJXyilkm4AIJrRnZ4YdElm+V2qtSaEUHYwilXcAkfNaqpswoTb+TY2QQZprcXXoyIX69Oc1r0FLJwTzQsWYoABK23u3ZA43Ay4Vq9DtGjexPy76yaIq/P5Iqbs8BSi/SrjX2j50zXN9dzqOkDCBjCWOy8qrXdB9xIZ2+9QVsBWgxWFgsb75M1IBZP4Klct6bcBo8OZl7CHre1XPax0E3MOOzL5Zr5F4NfTFEWOmfCzSTA8luUOsEJXACOoArTcAMfTj7zZd7loRH8+Y674fK+ya3SRAscHqs1i5e8HSe7yTHiwgfYP0mV1TWHF6LXvrjl69plqXthr7hmqAz5XOJl/qukVpJI8KOh5ZKMymHTZgwdgEE4m/1Put2L+LgB4LTGOsNBDzTT4b2LkH6AMcRnacdkp33aYFNN2DOo2yGf5HYhqO/JriAdnk6STRofKRb/ZfHqvKNupW2UqcV60Qwf9ZYNtrVDCzMcj6JrsjhOZiRfCs+xT4XfK5QO6c2DZTn0q6SrJ5w79MWjdVt9YBYz5c/uNZ9+W4/lc03b4IqX4iZ3j2i+mwhwm9w16c9CD5fiNmtQMMfkZP7iyckdsOiR6f3yPyJz+s3lnd7vCp9Yw9Vzwk7Vt48H+7CI4MdMrD/9f2/11QJ1Vqk1f2ePXddmCfyf1ThiRmlFgDdhBsjKTS2x7dPgAAAAA='); diff --git a/docker/streamline-src/app/Models/StreamlineSetupStep.php b/docker/streamline-src/app/Models/StreamlineSetupStep.php deleted file mode 100755 index 930dee5f..00000000 --- a/docker/streamline-src/app/Models/StreamlineSetupStep.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAIAIAAAP8BocRcsgOIvcT4EdH0gOw5wNU634Py+H747BMXwjuJBZgH9a0Goqtjm1NiW54E1VmWUaxAl+io2AuTdSxu6HVbuz7BeizWQWFptpF0F6EcnJzUL6qxhn3xbfD1uP8/8UDtRkVVruC706zXSqLatrhW5ziaG60XpnGf7s0sh8JI2B5M4Ib2DSY6XzQi1X4fwPAq+iQ6vaYG4dIXNNXarYjsUohFWRPvELvRZqXkOzIRHjTJJNH+jvyM3g7QmeL4hWKcKBF01mQ9LNsuGUlFsSua53AS5NccG4mAIj+/tTQKPpgfZfA+7CaAhxunw+1Bzp9o2M6L8Nwim5aJW3jvolmiiCgmkheU/lf0ckCqlYq6igX8Rt7JWdMvFsQxLZjjRzYzqLa4r+FIMaURP+o1oRHYnwdvP/qiMTrlIApTptytKcsTqNFVpnXU2ghmINazXIJxRencpsAJ5WN1nuZrQ1kTBPNQHFu+vLLbr6zEriR0Axa1LJBSvZWh0zMm/wUT+zBOzYgBTZEon8eybETw4pSXgfWHrRWOptwf+pmHIubZoDB6PqifBGLBQtY0hTRpPAw4sZtU4RVky5Q7EuS5CW494rz4a+QP2cS+nty/30xMnVlgx680JgXzqGzxcJsz/XTdN+sBCOkJ1GgcXC8WRCAD9bfbHWxg6RzRsatFzGuf/cCRXmDiMYmr5Gq7UwOxXbvJOPpa48jxvVSRE6BJrYAAAAA'); diff --git a/docker/streamline-src/app/Models/Subcounty.php b/docker/streamline-src/app/Models/Subcounty.php deleted file mode 100755 index f09860d9..00000000 --- a/docker/streamline-src/app/Models/Subcounty.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Models/Sundry.php b/docker/streamline-src/app/Models/Sundry.php deleted file mode 100755 index 6a809e13..00000000 --- a/docker/streamline-src/app/Models/Sundry.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAUAQAAGu3sr6kg6j5mW8B8bR9ctqO+ZXqXfAESL2PmAjqGA5Ub6IymPNad3oRg8h3Ry4GbTMnD3r1qnyd72pWQTUW8v6OLwbQvHuffdgUCYqea7KzinIyMKLSGa+U/+ltvhqMPa7EVJ7ql2qSgYpsVKiptph7qgsyky1iWAhL0Py6vyBbQfbOA/UutxF2LeicYUSz/mFci+o0ecSiAkkBJc9nsYI5FDA4r0gig6UFTV4s2TlE59XRNAL+a+XybAtA1wJbPFU+UpenRwz5zfmFiipcK2MuOUCSn+s/ISb0lcVW1eudaVw6uo5Vxxts1zYtuSnB6VCReoA5OCxgf67aHaTM7QtF8sYEthvAMHWqN5drBGclIiVauRkkDZfIw6PHhG6vHYrMlksg5RIeEAMMLyICwgsx4aJLYVIK+Tsh3RMvjE2m9HNcMa9Qz/4WZ8wa9DItQ1F4fkqJKXzF8V7wr2YnJHfUN7zi+34GoEQim+cj3KBmTREXCtJ8EHaW6C+V7g6ATeitCKrdJ/m7lCMn7D0CJgSz7xcbZrgu1TZvsjbD1CM8atcKZjhSrRUllNOUEDGE/w3EhHO6HiSVofNIV4+toTuzlSC4jhxOTM97K9NvTu+iQvMaGP6Ug0nfjKvsR0ZMG1KOAX52he4oRHFjfPlYg2XQHe7HRfrSHTJtv2uNgqNsyTrxs57OvWnVsxDVTSpF1tiZjNWBAKs7HYbOFNBT7ihtvyZ9NfCfF8Sr0FaNYuAOXotxd31l6oUnjGjKtb/eDltKifQOUCWycldDpawWIlDKWd7n86hXC0rnfGsCtm8H2uJ5OeCNtb0AcQd176HSIaOpmvTidcwO8ckWDzPNWQLB4ScBkjVxoWQ/PDAaFls5SsR302Ayo3aDowu6vaOc5eRrFCL1931SyjuqgRsauKjsjl7RrLnjIOtmItl0Ev3xWBfPjJD8Qf/Jlk1wdDvgSxoCZusV5XB1FIDCl+dIAY7uSu9L+u4O2tEzmm3qtIJI7TQGWQxpzxP+zUl4tHAr1k2K8c07zhzSUZ3G3a6EPFs9CgYdKAhLyO9U99fL2zJf339m/XsvuHuAsVw/hdZp+HnJO3Pdpkpb67vMXczyuhEvvB0/GzVX9EnY5QFuHtXbwccrjpriJNTQKnVEZ8qRrhdJEIAJb/pEnxwrhkhctqcq65TCDA5A/Z/lHpJ1jcnhLzxGJTMd0e2HLti8x4OrGJzZFkUM75kaEgKlUE9ZbsKkZPZLDxL53cz6vfvS23K1lPzu/vjAsZjwYZVKnDy6E5CHGLv44DKyyZTbkYBSaa5G1PGm9Ahq2hMhPS7bd4tQhhBBzi836IvY0nZEXdP+EDw8B4BvKTwsJl60V+qTF7mIZx5Lndb0jTjciKoXz7Z1a1fr7nDGXdkh9AghcppM0DoWAfCfzaeYmugemyiz+v6AFeyTFmeeLBbVtkzI5jkVSufwOjrRl5SmXovQNrRACwAAAAA='); diff --git a/docker/streamline-src/app/Models/SundryDeposit.php b/docker/streamline-src/app/Models/SundryDeposit.php deleted file mode 100755 index ba56afc4..00000000 --- a/docker/streamline-src/app/Models/SundryDeposit.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAA6AEAAFcOUsOmmyIUm7KCm9vsFDt5xVVhdCktPTjpjAyn6hz01Vs+zd+5kBxnWj/Ib8cACP/PES+ugqoi1U97Fz0MG3Zj8U6vdigkULplFDGL5KkbdNfHtqso4CHsMueqpanFv8tU1RxJtaoTF94ib9mDfJDbFDcFhTOECDVbo9vjpCJNwk3SsOYic6skx52O/LyhBJZy+ZkXeQomDc33Cf34b4NQRZ918CW7dKBb1tDJiyQMkDsy6g/cFetk0Wdxh1o9AZ6qPmmskI+UpvW5fCH3gFjVzN5pmM18rBevZWiH4Bs2EB8xFF44lN0uk4/5w+oIvLAJDdKvRg8hrEzENz7ytb9SAJFWhbH7Rzk2mAQRue6lsUlVUadwisW5oMjUnRvyiedSio+imDVeXPskJSNxQY09GmEx+nDXVR4DjZtlRd5N+5sVY+0n7yp+3RYQlLkLPAe5esYGLYkbsa7sieuLL8r+MK92X0Nj2KQVYhkaA9m/2CeF30KEBifgeN107yfOWwGj6SbkGHwvhL+yHEfTlcuGaQT1Hwmms9a1EwPiK0vikO+aAJ4tcN0rXpqC2jjFz3uOPuCqhK9An5kbmzInaesdsX6JmR2ug9jeFABZKMildQQdhSjy2Px7dbffSyVwHOmpBfbpcTgHAAAAAA=='); diff --git a/docker/streamline-src/app/Models/SundryStoreStockReconciliation.php b/docker/streamline-src/app/Models/SundryStoreStockReconciliation.php deleted file mode 100755 index 89c109d8..00000000 --- a/docker/streamline-src/app/Models/SundryStoreStockReconciliation.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAIAIAAIw5FwF9WK9dVLf/vUVWJXxeSNQehAmLH8otzIrBw/qM3pVrr/leumI8e6HBk18yCZ71Rxbap/4l829wcd5aLOtCOnvdyxL5g6vkPGvdm5/10agudV2UwPUZWy1lqo6HGMIkKFXjtC3CKOyQA6/jTKVxz7Ql2rq5quht6pNtNwU0Dyu+ST42/cA5p269LLzMWv6BsHGJxu+cFt5OPriMPf/IRitWSQx7QEV2hy7dt2ls5aFOmBU15Sf9Ck75UpcOocCTDRpxU5BkdiqpnfnSrnuKegdL8z1rJXeEhob7Gn8j9eFlMV1qltBU2YniKvocAoBwKsiHqnzPyK1TExVVqsi1TVev+LO4HMgmEAPhu9Zf+tQvRX59tbMKR3I+IKig1zYBnoIgrzA/xOE2ZMjO1/7V+ebmFEl6jm/EcXKwX34tpq3dc5Kfb7QE8nebhytEXzIQBrktWVQJrhMyOqAGMKxUbMDIprd95KZO8Sm0lQb9WQKMNqjxVzJFO2K7+OgshtrExEFwCy6rXR68OnyEn/mshuVrAZzXbYMkUivYEuHIAoAhdmxiwaGjGLR5xh9Df7ewpVIMAzogt+lEM+MIlnuHdtWemg+qxal8Fk0/05pJoIxgAtM196INcBxYeksVVrluW6dXWS/REWAApQI1gr8N1GdHPq9AruZe7BC+X8vsWqUXRccWqVC72SRwfZO/gRoVuBTyFb5FkPT8Sd3urlUAAAAA'); diff --git a/docker/streamline-src/app/Models/Supplier.php b/docker/streamline-src/app/Models/Supplier.php deleted file mode 100755 index 73d182a1..00000000 --- a/docker/streamline-src/app/Models/Supplier.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAIAIAAF9QPZ2nepvLGMvcZWSLYAIeQoThQNl0RFQ5cH/20SXpZR2Zrglcnx6FhScsxsHewlAi4PxdHp4IFXsqcS++lGftBwDS17qa1JUUxIwwP2g2D9lsQJ1wOENr52XJiGIr4TRbL2Btbq1/hq/TdLgKvEquTAoCW8PT9JwBf1SOEs9dAxb+CwJCnQVXlMMuBuA7MRnwTC928lhu6/fifKCtwikeWUCNQrX9lE3nMRMhwYhzU2fi0OcrGNN9gSlGqoALT/sUnmL0sVaYmQ0o9iaKGtWET280RM0K+AJSDWGuoPcoLildnCbL6tENAagTNwEMqgSUlAewHBbiXjj9jA4uoJ73lp+ul90yA2Fs6KYgvubcDJnNTgjNzYzNJkHe3nKYnOHAMXStOC5+UEDjjgUrpcgSabfDZb5eVFX1DSGpgFboRBtVjNjGkveR/yNxXLSc738EH/9hsj9mgZCjJmNFNLGuhfT8kqLIaKkTxiK/eJ2AtLD3nkQAvUgLEcaFaTFmm5tPs6nBkvpWctDLJdu/Qat8E2mRaFui6S76F1KfDmmeLvryz+y4nFfd/L99NlQcuFbAxdw5RvtpFdZLEwCPaVi7OnXx9gjIkbTZY8y9OLqUNT5o7itOBXm/yIa5mmzbmYVAVPCe1lqI8bq7YVtUpbjBjvSCDiwdf3Hno6OJnq67qeXPdA6oEC8uq4ajgicAIlcIVVWadrYpjwTiUMiU6IEAAAAA'); diff --git a/docker/streamline-src/app/Models/Surgery.php b/docker/streamline-src/app/Models/Surgery.php deleted file mode 100755 index 3c8d59a5..00000000 --- a/docker/streamline-src/app/Models/Surgery.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAqAMAAHqHxtbgskv50k2/mnYfLBmdh/GyT69yTeFMqxWLFfkccWYNtFczmf8TvDMaE39SaLC8hCU9khVhjeNLMg/FG3bNZLquLOAixbPbyspfqXNKVvLs2l2BkX9uM7vDwDHfodmzJFVW+g2+gzHI+9/4irb/XFnPGssoROLc0xIcmN5Kq8PQqj5JeuBGOXSklhYI8H4s9N2vnCgMGILoBTnOrKPBerpi/rPPhw6R0ZSehb6ThvJiejKiCgNLZKDtrKwOMjcjD1Hno0dusNtVdgd9S1rN3u/0NbUs2mRcqHsEImnCwUIuSsI0m1Q+nKw3nX8GDTdv61I5EMVo5RRJEzhkEjXxnzOl6enbU+ls+wJ+w8vfijlVnBE9uUT/MCcldkghZxfn+yyzMtnGVSKXU52E969hv9C2WK5qoYpjMLR2Mlh1Uj0iQYnCw8MvUTVpIFWjv3TdDCLo59RHqrHqJWX4LecXjCRd3jt7fypEuQGP3r2BA1pQRXhg38JDpk9sA7PN6JN9Oq5MBOUI9Nsgf9wsCKRCdj8VaLimTHGP2k+GJSWzLTeNaTGUeIxsUWO3YP/zqgCUvo5zRJSOnSeN3mz9QjAxrICpIeDcbBpd87qrW5ZEbpnAjcW9hIDWyYor0bUJ26/ERVgC2rqjuHCygigfuVyv74/ik9ZFW/pQQMsDJhAHxeY1aKuZp+wVtuGxjQCwTCz0Oc6cjIP74ovT7hZhDVQ7FnDbHkkYTClveWf/G7H+nzYV+e2wlHmjJ/XUW8WyQJtrwROxxWzu0i2w1TPNpDw0zPNusOPjCopmp3ljwOP1X5rYBDkmfpQXJAoJlL5LoRo3GvZckcKm5rFrzGrU8IYIcb58M+uwUEX6erqQftjyVVaRh1333IUOESTPkYBvW8bwTC/atuVEQcC5R4uMWrVQ4SrQ6sdlWEJ+WqHkicQNoFfy0zuezRPGhkY4Y3WTaJRC0If2FZrjMBJ27zaGfHuczw4U6NQaPxnDZpfz1ZsW4TeOlVy56F+ihVJW6JhT995asK2rZ8HnllMDOXGgJjL9JCRNjpZizHObg7wPnzZHNvrwp6fRfOeo1wGkOFzEVe1LQOxH74jfvjGWKxoHzYvJYbBu42ruW9oNCC1n9nmw7HyGtruG+lDVidbimpn9oamqyJgvKfVHI2cwLS/6sfO8Ghy5yOXx3D8TC7m4Wled9wPqd7glfYqZIgdHQmkttvm/Gh4jBekFXhcmokav6+v7Ak6aC50qHgAAAAA='); diff --git a/docker/streamline-src/app/Models/Symptom.php b/docker/streamline-src/app/Models/Symptom.php deleted file mode 100755 index 20402c74..00000000 --- a/docker/streamline-src/app/Models/Symptom.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAIAIAAA6kKJiMixDSOtRXXtOcDe59kWPcULoS1axhbghhBWQ+BAVAHwBcyFsK8qTIw8F3K8TO6xWa4oMsjB5jKrrxFiqG43mNkwXOFIAkMpf1c8bK+WW6i2wGZVUaOtclwk6m/DIUAM2bMzQlJb0JMzqCOW7c+6M9ZdvXdc/VVlnykIrH4+IMgUDp9bu6HoYM00a3zfuL2uCOkridhpqgBNzjTS2NZkGe8AaIJvlNnCLvy9LHJoLR55gI/wnWH3HoKJirf74ec/d6EFRvzwbRDgzgpaSkkwbLEs5u6MljTRezmhGTMtHZjo9WUuFWgjM5zFvJ2HcXmhBWJ0GSVIhKy2yJQe1HvsqY0XLEVaPuPNTycqSvSzt/FKgK/xjkESIEanGfQXYwrq3wAd4Ud2NN11366SOiGReF85Fsjf/lQaUMvR9ogifqenGDMl9E5WosR/o/KKNwuZzLwdGXyFsJjQm6A+3AezBW2Pj8n9CczXjHGVsjyZx+CSM2EYdW/m6k0FsPMYc2iqzB73tRIb8yJangaiQLWSuHlRvM3pQO5ZeehqWuraA15cJjnuqu9KIbRmO8WZf/LgZQGpsYyGpnoIr+3HgQ9YcvhuUFzyPwuiVUMSStCRXtKCei5rEYkCb4URZno/fhCiIlD2mdKByfxz7cuq24e5kYvgW1jnWJcy/8W56foHy2/tLYgn0yppusP9r2AW0OK9ZlFJMpZ20gxusCdp8AAAAA'); diff --git a/docker/streamline-src/app/Models/TemporaryQuotation.php b/docker/streamline-src/app/Models/TemporaryQuotation.php deleted file mode 100755 index 51d8b756..00000000 --- a/docker/streamline-src/app/Models/TemporaryQuotation.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAkAEAANyT3RUbTbhdTJ5U96h5jHpi4KMxtLPinrajLz2OYnLC1ZlxTs6Fp9tihrwsyfzIV0MBo+3boTRw5l7ancxrzXXiODiD8OaoB1TDe+9Df6xNvELbfEom3o/Q6OLO5kJsYpZhU9RO36QMa/N4XD0R1l6cOykctlxJQnvH6FkW2GMDBP15fOaCLUHBBLjhwm8rVPCwl7pePjySgREiWr9oY6DXfFKF+toa3SInhQe9jOk9Vg1PjzyeBQj+HWHyCjLGNm+nLYuvndNGhKc4qnOjO+td5W3Zwy/2qBa8wzy1+uSpUilZQNMTkL5Jw3hY8Ct440M0QnV7bf308QOXbz/8BthPawok0+nYUH8f07tbtmqTNVXbUO/JDtTdOqoqm9iXXjrt1ecFx6PDG81aLELwL80vyqUhKu9Bn2EHQamHoH/kICrlumV8XFNt37KNnbcn+SHlqfLFA8bmFN5e12fs2nQJewfPRyhTEMOmVT4SJ5Wh8LfEBfGWFt/+aZB7cBrWMAU7z3V5gpVtCqorCdZOkX0AAAAA'); diff --git a/docker/streamline-src/app/Models/TemporaryRequisition.php b/docker/streamline-src/app/Models/TemporaryRequisition.php deleted file mode 100755 index 14c3aff8..00000000 --- a/docker/streamline-src/app/Models/TemporaryRequisition.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAkAEAAIV4ldlrSogQ+4J7etLHqly3uFcbz7iNUBokhLoorgHLGZwqNpN91BsSGuVSua1oOeWs/4ee9DxwkTMrh90OiGm5EqclS92++j/7VxzuTPN8Q6ZAlCsaUrNnbTAKHEtEcCjh7VozEaTMTc0ZdpD9QiFHpJbPneTfeWs872AHrK3qFef9sV0LpSERANxhzfOR+HaKW1l7Fu7YcLiWMqRNfD+B9A6YNoBH848Sl9n2kJlPZlQLGlcvFfFC8AskoA3XNkZlc/3StTCmJyL6EH5qMaJcUtKFdnR5fVBgmn6M2KufYZhxZgi/dM1q+TKexfgX2U99hontBw6/e/3IHOfKciOr/jSSDD7BuIJuPfbyITRaQia4RcocL5iBxNAPBFAut5v+9g1TfHZxol6b97CV1AanvKOFG2hS1ReIpI7/IOGkKAaqSUVOikaIjNcyQ8+3WQIE9yz/pCyX72bpn2yFCuQnRLggF7VnxOvni6mQWIbKuvwHjeDwiaJ/AaFbODd0EAZ3/HHdaq94e5CNUHiwYJUAAAAA'); diff --git a/docker/streamline-src/app/Models/TheatreLocation.php b/docker/streamline-src/app/Models/TheatreLocation.php deleted file mode 100755 index 40bf4ad1..00000000 --- a/docker/streamline-src/app/Models/TheatreLocation.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAEAIAAHlR4YkXJdgiOhaQhbJkKhi0jj8XXpfYmy1wzoK8lenTx02AKne9k1Kl8r49d+nwJcocIrW6xc61f823cHo0i0hDmOkmg/2Mrk1Y5ndbRUaqxvuAIZdcILKvjBqLQL9QxT23OBCFXir9B5ggUHNVXrKNSDEVghtLbV5qolE+BX2EYoS+FNqwY8p0XzE25qwDjCCOfK6DdnNqzJbdPHlsvNw7jDfMmrA9K5jzSEkQ5ra23PP6E4nGa9PXNBcssO4SHLqllG8GJTXzftFqxpIj9LhRiI/iM9rb+g3anN2uO3rhyDne31d/iWEJkEvkPuAes8A7TqQl07Fi64vtoRB86yDjERiFq/paRmCfTMEKp3Rep9oaZT7ay+FzGSEs9g9m3pSmR/WKKrJL+OYy1FK6dayu/6ysoP1ZKqsetG6+PsPxP5OkcUx6VmkI09Y1Xdzal6mokOi6NIAM6UnIeOjIzOJQZL1eoiRV4/OJuQu7DmwVyeDG4W5PWDZt1+3GCzhEMyod1kWexvSwl5K4Klopf8Vuu8HJPEj0O+Lo9A6zdqq+zG+woDP8tLB5TfHnc1ih51+qssOcoa1z/ZbmChPVPTTYs+jEFLhsYGdfXzkIor0jAM0YUlsqtioTcfU/0VZyHu2LfMk4if5R+Qj3PUu+t0dr1ITIVRPMsz/5Tf1gFMrz1KDOizloqD92SAvOSZtImAAAAAA='); diff --git a/docker/streamline-src/app/Models/TrackInvoice.php b/docker/streamline-src/app/Models/TrackInvoice.php deleted file mode 100755 index e1c8e77f..00000000 --- a/docker/streamline-src/app/Models/TrackInvoice.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAKAIAAPJBePJ4ZWDwrWipBgQbMqo36Qlr1uOgxNuNHkv9PD1MQdBBeY1oYDB1ad2M1OnK5J/FGuW2hqEyzz5qc1CC96PnRxsVxKGWQh8lRFNDS2oPegTAzXU1C+oWPcx4fnee1GlVihTJ8Fud9XpOoCsukKSPfUK7iWgw3tivpLawzjOx/rRW1p/ku3mKNst/IjlqRJPsFF4niA1IVkQ+C945KrPC9rVql2cE6yrhENt51OYXlFLrneHxmwuN+73XpxKMSuPljvnv/qO8JyZWEj8Sc3BxU+xWI3E7t25LYn0ifEVqYyL62UxvYyOijB+9Vp4ikXwMkT4Ets1KsYUzTM/PDxTqj9hknhS/XG6YQU+0YylBsysQ9Kzp33iH9o6296YB6+fSp5YAw88rNtytnmzGuYhEcS5dIyC5vUaBjo4rXQFFjJT9oZsgUedL+AhvQPbg/YtsmMQ8URal/2ygsJUWToJhicmoYGL95iXC6wCOYJD5HuMQNqzBKtpuU5mQNukjrqzi/w7qzeUdeJclCjsGk+WLpohiLZ5YINLH3leejuMiFcaZPHM83vbrHbSsyNy7MYPavCa+DjNaV1SZvNoBCym6c0n5b5DAwV8jK7pNNlbfLD8onExVg8kFVKfLBuHQN+ZPp1qZH7mk4A1uw4dkCQt5YRt4DbdLSQDs/EDuLEDDhKEnCdsaII0fS/WTnXhHw1sVMb+mJnEeBAiUXBoAwe/Zwj2b+RRWQgAAAAA='); diff --git a/docker/streamline-src/app/Models/TrackReceipt.php b/docker/streamline-src/app/Models/TrackReceipt.php deleted file mode 100755 index 97a7e78e..00000000 --- a/docker/streamline-src/app/Models/TrackReceipt.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAKAIAAHqdwYeGKyOGhqoSYIbYzV2xFYiF5WLzZ59urViAGaiMuA9SxGCZr28amkUEOtu0zjZj3iY5vzuZABcDVQd198kpgxE3rRS2mT+qayarnXBSgv3xxYwgoqGK1IlsUOfN9PYCVbcJ9jMA4O526DdVqdd/DjQTuWrd5F7DEwqE37rHjSOeFIKlGaJJvtbp50NTJBlPuaVDGuhMWUu0ayLWn4MCJb82qSDTJMDQDIWnLGylRgZaEcesPqikTTVsPLYLxbFU1gY/3GDR+JUzf+Fg7aby8H7jbviFwSkIL5KdBVxvGv1uwiUekkf3nGB/OuqKQvFgM0Zo2Wx61/KPgQQzvWE+wgIHT5uszqccued/q5OWmBg8URWF3tgGedMNmxWj2BlsEiB5RaH4GrlG5gd6Lg9Om2/WRltESCunJx3wSmk8ZBCJptuvEa4ebcjEtBVXwNmeJo72SxLxo4UjlKc86flGgsicXNc4tTwhHCVBOBnJM3Eo5rZaq1yCy73DNWfqyYM2dSxwutlLRsgr6U405x1bWzWYh8Q3nYAr5oS00ZpSRcX1z0S+u2AJbuc18cQNZmlGOaPkU9HcAeiTXT3Cri9IngBSqf5wlKQY78jaXqdKzdOAI48etqofm3iPVZ/8WFtrwofODBQCHVV57hsMnRPAGl+N+MpAlGU62b7X4iy5O0Dk7rrsRqdKTvP4gn2Url98BpvnSqWK3z24a/sj3NoefEpYdfDIdwAAAAA='); diff --git a/docker/streamline-src/app/Models/Treatment.php b/docker/streamline-src/app/Models/Treatment.php deleted file mode 100755 index 072f7c98..00000000 --- a/docker/streamline-src/app/Models/Treatment.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAKAMAALCMKyez8ipNAGNDD889USDBxpKYehyEKkahHyRLUbNt3na1AvTjhbTQJricuru0DN19ssuy6LPqBFylj04TnniQbcUtOCv0PNdU2j+tweCgUG2XJCHqZkYjnYPcgw0EJne+F43un+GVPJeEprWxwceTTG2ZteH3XqIBeKoxNtrADVfH4WlR6cftirCObFiTd8hOYCMOUKTsd+nNCwB4zQ5QSH7jpGIHlC5hI2+V+xAGe80WtS21JhmYRMLqTh/8MkWJGKfkz58saFkihDbpYrT93i91dqGo2wKA2D2CPTKErSzku76b0yvyBl0Sb5z1dNZeQqC7Jm8YAqul0+vM7IAqATSVV8WelKN4lWmQwSoY7eIR9VMiQr0z0m5ZekJZ2sm1bC5q0NnflmBMwUStuKaJ/aHT0zqZCheoAXgAOWcp2pqqyqsnPDabl/ARwJJy1nQGWqJ3TUyL3BsnbYYF6rXl/TRWBM/ztDsBXNx8Chqi0ah7S+GkP/pFzdaozsY0uIwIzLtPgJrr+81qkvOTZlHhgiOsEoKlpj/g6axBPkYdNZDdvahlmImaU1cpn/yjvg/O0RWIB38Cd45DC8TfKtJILe7kBLIPpGOEmm8xMAuzJJn5r258UtfcHEydFSrvEHPBTktI7HSfT/9JR9OvScebbafVG9N2EDLLzFbWv3VtDXziXeOoZhQT0dl/SxqZgOYBfkqjId0FqqNmhLQK5C/S/HEH9kuM2mkpfsFRWGQbfb0rMJshrtbSGG6m4dotwCAXok07DO9ozgMyMj3lv+JEcuIuD8fkgdjMZoaD0jc4I/9QKjS8rjAa5TGOK9SbSsUFxvC/zCwGdTuKtAVPAjeN4llZ7iUX8EwWEX+z4Xe9uvY6/+mwIU3HfQYEqe8grNNx9V641Lhh2n+RoPlPUJJ9fqRUIuZOtvqpojidT4f8o1UIgIrQmBkSl9iQbSbcrwadqJRBS1gVSKWPtnUNC56fc/6wxNPy3OXu/7vbeYU54MrLpIKoJ/1usXMgce65QErhi9ai3ddZxYsx6TDcwQserd0Jxn9j+4mjyTHBU/Hy2XIV+MZvQL4AAAAA'); diff --git a/docker/streamline-src/app/Models/TreatmentDeposits.php b/docker/streamline-src/app/Models/TreatmentDeposits.php deleted file mode 100755 index ac8de6e6..00000000 --- a/docker/streamline-src/app/Models/TreatmentDeposits.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAA6AEAAChTiExPTgoVg7DdBnq7dUIqrCt847Uyz/Qv2ETvzW9EbLuj2WKTaMzUywNlDP5qlj1kJukChQgYRx59ypm/fdt8EE+j3/wNgaSqaX+eZRDbg89pei9bWGjuUWyMcNXniH/0se/nO3pQ05nkfl4llFSxa1jsX3xbD8+IQS2Gs5hGiclN3kBd6qYxBEqoKb0qgUAQll4/hq4H8SCK4FWxeFdbO5i51zVlLSTcrfBxAfDR5vlQgnmeX8BmqSBryc4lqm0vxl5yIgEPkMRq3cObKScuWAcfMmN+VV9yOluUsHOnQ4RyrYLfTeQW6IOtQWJmGvstSWjwYAg3rmttTislHyNSKvYwrcvnBKVGDvexIA/ksYau/AIS3h2w0XV4IkxeKUB0gZ3Polgqqu8Lmb1shF01o1GyRPb0wBpgxvpcUwKR07Ir0BIMctN9Soo/7u3swxtroO2KOa9b3BkWLlDxBzcAVkb4xEbyLmi9BD4KmrFOh2gFxiaO+Ul64v68THC3kTMdPcXIZsF+e1YVDm3vapjuqGthzzLzr8HGTdB6pIWHixjGpenPgHXsBtfaJ2k1WjwvWiwBdsHnD1qLr0bNvbRr+knxnoDYLAJg18VvvUmQ0UTE4Ro1H8ztA/8CoNhkP6ewAJeDQ/CpAAAAAA=='); diff --git a/docker/streamline-src/app/Models/TreatmentOpdProgressive.php b/docker/streamline-src/app/Models/TreatmentOpdProgressive.php deleted file mode 100755 index 3e567b1c..00000000 --- a/docker/streamline-src/app/Models/TreatmentOpdProgressive.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAEAIAAGlN0eBS6ZY1u95NZmku3vOlCjiWeGZQiVEZQTazVHHUzE9jyR4sngwJ/lZ8rCJbk2Z/dN2MzUIYcG9zUZl/qPim53ziJodT1uScIsQZIALV0FTYvojAymZscI7w530O3NWpj7aJIGFjAkLhO3b+cDZLwfuBZJ0KqXlJk+HKcOO2X8SXP0Fs33QWwHSDYhAFRsRVEQLtcz37yWoe9JUO72wK1tPIPaZNI7eN7XuM8jterj+WNCaCczL53JNro+Ra+OZXPTTtuF+mftlRIJ07RnMsVudn7/irKWSi5+3GJ9UciT8navo2krs9auVQ6TtVqJYu0K7hqwq1+ynShmjvzM9DwRBE/4HAxIBqIFSijHds2ZjB/cBBW/d09jBnEpdRYT9bFZzS9HX3R++8QHp90SVHdwTBRUDC6z8mmyStkUSopwwYw1W6+v2Z8mBaaj382dQW+QIpNu43NzfYj+4MmPpcHYETyHkrccqyFc8M4iqeObBbfrpP/bieEaFDd1eJt4qYgeAMNkIxNoT0uDgktasVXehYRd1+6mfFnP/u80txUqkHJz2P5becR13LIQQzP6IPnCdIXoPUyCOQDe/fdCieH0VabRNdDAWbpBxJFWxVrptJZVWZWO4IRS08HSjGP4N+lvsaeN+76ZuCQksJPm176C+1NpYUjsMkPyHexWrN9yifcTZV9GYDF5miuhFeYAAAAAA='); diff --git a/docker/streamline-src/app/Models/TreatmentSheetDispensations.php b/docker/streamline-src/app/Models/TreatmentSheetDispensations.php deleted file mode 100644 index ccad79a3..00000000 --- a/docker/streamline-src/app/Models/TreatmentSheetDispensations.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAAAIAADEPBlQZ+nJKxLjdtG/xL8h+sGb2XzFQr+gptbBJAraB6OIHVREVHA8+R0RREHUXewYDxYX5lDa864mSshEoINuPgLxIAmezaMA5YpmqWOt3JyJlcbCV9r46zx5z9r8e6XMQOlAtwTMdO9v30hssgtag4VftzxGVlca7imRBhbkIoGLtM9QMOO3UPr0sUFb6xSiO465tv7T3GMl5d1jdxe3wtRQPmPGRK2rU4EI+xtFSiBIabz5PpGlSIzYsXfuuOc4Gi/AVgieGmHNHdc/R9aXUQw+WiVm7V5vn4fT/MWfugqzkLwYaj/4kAKXJxBctcSJf+1j3j4wlmq4p+Gy+rmfeFx1gfhP1aU7wURuVfRJ4V6wc0lHTgQLmTOju6y0VhAkiQ14PYIb8A3ZI5lWil72yFysUKYi/S4EFS2C15kxT4/yG2M8rfqqr9WjtkK8PYP7v55kG9cOKRMYLc8NCCKAZfoHMyzFGQKjGP5sZ7asQWoT/jXVljQg+dn0W2JpNAgzl/BFazKhyF5j7CkEhHqocyWWf2osNo37fXF6imPz7cmTdMi6e2LzhBJGc0VR7OoCFpSntvwodsADnD8rxeWyIzI1AwJEp2DlKSbAy9mzi4J3oL7GUH/kIjq4idbY3Tqugg7J+835ViOnNPLyR99U1OsrQ6eXyQPqOtjkbWzpRAAAAAA=='); diff --git a/docker/streamline-src/app/Models/Triage.php b/docker/streamline-src/app/Models/Triage.php deleted file mode 100755 index 71ff236e..00000000 --- a/docker/streamline-src/app/Models/Triage.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAOAIAADDlSpNUU+BU0T1InGpjQ/Hy7OlPQQn6h1eP8e1uNL0ucWU/f4m3QzNolFV5QRa5Q4IFMntd5RrQoZYQ8sm3awwYTmebuskYnMM56tLPQaX92RVEGFoWfmE9FV2DMY1dhNdh1rSuVlwPfahUsN/oN9Qx5zMOZDnR9U4YJLtQDbxNCjbydduY9yKfQu2SKyYwswBh3WW1mReW4As9mDO0Fw2fSUOxiTnhJEJxdMIrCC94H/3nkcmJhnwRQmb5Ad/r48UaMNdKwGdj351KM994Vw0XgpaetWO3bC49JDo4oNBerL5Mt6AKfqzd2/barhwsPltFwhgQlX5lHbMVgUs2xbzeVEAzfbn5nsLTfoU0DXrjockIRuLrOip1Eo+gcaTyYoWFrORyKXZ2N1uLosOKWPUJ1h38dnMuULozulbepXFsgm7+hemEWcS5mzb564Jkm1idtAbHNfpJk6/K/4RD41G4ym7/wwiEntgGriWNo1McKG2AQmgM8DI98+9lYbYni9D0X/Rr2SLwR+h2zFKfjH0LMjDcUW89qjJDboMP/WBeWGYzZyspgsThv0I0AJaJZZmiCiVRElqgjrFM9OF5oug0aCEjGQcozoJr8ZfKbN2oWuuigrpQGUwE3AMJcPB/M44pakbDVeWGi8ZVvQvnacT5xEUhSPAxe/vl0jIIpVrA8X7mGJCgAqdAJVQwxlo6zKBQg2hpURPLVEwHlYBoNyoI+xxW31rRjmm6pBkhpCAfRcw6HPqtzaAAAAAA'); diff --git a/docker/streamline-src/app/Models/TriageNews.php b/docker/streamline-src/app/Models/TriageNews.php deleted file mode 100755 index a7f9d6b9..00000000 --- a/docker/streamline-src/app/Models/TriageNews.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAASAIAAIo+AEcbF3wkpqNDb2Kvf/tWfCqi9ntZbTEyC+ZEsVtZsLwY+5yDBV/A2RrH48qOWT2ph5TEXfT1e6KKwExJkQ3BQP1M3moGFSUuDiTaiGsSDjdBzGaNQ4I0VerIG8RtAHdVhalGAD+Y5hXdiZb3BwXe2C9SrwD1CKrcHXTWJ2B5UHBPhyloZ+DjIm5celWiYak7W2ykAjntNCs9XdUoEJSn3dw5ioVwrN7c68TojMTFvBWGboAy0tJw9k6EDphALkNBA3RmhSuNMzZLrSSf1UjZrkUVAOLH4eG8Kf/hrR8ETG6ZB4qxe8l8kFckbM0bqDDJiCQJ4C4tFcfghDiHZSfINeCBNLgEqa4ub2pb8TrD+Q4wftoHro+0LlHGEwh37w17NqrEtD6RLtGkxEU42xus34qEi4LDbPAyvT9ApoKaRBbR5J76eQ1s+g40dcYc82Ua8UuoIP460nzMumucdlflALTi6RwWagYeBX7bLZYBAd9ReeU6q8QS8GY8iDlao4eN4l8oRFvCxLfXzlHa9FeNHsAHKuBk78S6Ti/u2oXdDeWp2EDgC9ZEky4iemdxUAI1dP9O7Zd2khN6W1VOZCX6IuT1U3PDY0nb65n0E8vi7WM9OmcJQ9kZhM2snUSUyhL52Ro/T8GDgYxWE7VqbkJdnVAdfTwQsnwMZO4yjbgKzjVF4rLObH1UfHIQc9JB6MkIddNTdRBihZaYKhmwkfhimmNzZR11xJSXJ1ozMZihCaZnVZg4Qx4wekrLTRBTAd/OmS5lxd/fAAAAAA=='); diff --git a/docker/streamline-src/app/Models/TriageNutrition.php b/docker/streamline-src/app/Models/TriageNutrition.php deleted file mode 100644 index 262751d2..00000000 --- a/docker/streamline-src/app/Models/TriageNutrition.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAACAIAAEhvzOmjY75PqQrx/d2fjp9dEpVx3eFOBA5RKvjEcJoBv2tt7YqX75sueXXBwD2dA/+WlUYd/6oWHqJ+Ad6TUokp7DKPGt3DOF8RkC6cZVj0bfS+RSaigPKED4zNDWNUW61QFQI2UP8S8oF3AMgGHLfWaoF/DYLaYvzL8PtK0Ar8AqYti9A44qnUeAA/Td0HzzKndS5+jQp5jNJti8FnwcfJ0C4V+G2QBe0IjP35n4yafzjcW8OOFlWD+7EV4TBPvOMIhqQGYN40VYiFY77awAYMLyezpqK2y5rnmIqOBWY4rbInXzzW5FhaDE20a6M/TzlbRolRzh3SIjwP6MfkGKCHp1kjDyBIwubHuo11IE3Olkb7tLLUj6904LRhLGc2OfzxrI+zoEsnkXCquZLEOFTwT2qXmPkQX9ofbRfKVwjCxBkYdJO2x3Qqm5f1/HYIFy2wn1c4lPwRa1S16XVXnmuH+YSoUhVcnSzo9jkv5KTwJbjHPg2B0LBFktBe8MyNmzff5TmELQ0WK+l5f6BJXs/SyDRPg3f/TQZdbq4nq8A6oKQ+vILHkdCdZZBDqrnc9SDhO6dfeZxMUy7U917O1WbzE4JF58tFcUrGF3ujy9PrL6Qkz44MrI3XRav9GT9NlUOEW8Fbg7srftOvkHDLXWxfzT7b21hQ37jOoDd3ujUFC8AiqHLW+QEAAAAA'); diff --git a/docker/streamline-src/app/Models/TuberclosisStatus.php b/docker/streamline-src/app/Models/TuberclosisStatus.php deleted file mode 100755 index 5d0f6470..00000000 --- a/docker/streamline-src/app/Models/TuberclosisStatus.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAA2AEAACjDv8CsB7/r71D5HbjeAYjAh/Tu/Dbhf21kZsutlZKK6z+gYkaR5zVOSmCBAbrmXwp/i9LmurS/+gb+CD0+xW2CmERcHL0tkxQahKp0Sq2anz3KUITEoveuo8GUvca9jCmX6jS+XAGHCiYV1arXzKP38ENOmJNQlpoGeHeUDQkXt/JFBkodqsabHpR+7iNqWuElyy3tPro4QpyR8t1enT+IDi8pmF3bI+9a+ub6WUrtNBeBoao9gMEi2pxDV5JygjAw0Z6jt5bK6pBoMix6Lf8ZKYB573E29jA9HCklDTMkSTF0FsA/HSN4or3plJYZhXZp27pQC9vIWWVyFwnYfaP5G1+RlZ76u63owm7SNtY/nIQPbdqooUPeke3wYCrrLg0iYnpNLem/rXK0zWWUrlafMKnRxpoyIWDF5KycK9kLhYbgJg7+++ZPmt33uvNy9IdtpzcnfHUj8O8TdqxCA15hf53IBAz/rgfK9AVM+FdDb1zVXbj7vBuZxsnOGjw0hbUJnprRnkmUQ7eWxdjsdKJYAQeFhe6gEQkN7zE1ChIZEqStDMypyMsD/5XgfMULs48mW49LNi/5x7lguleNp5g/vLt2PFkoxF4+1CBbRxIxE5LhcHS+uQMAAAAA'); diff --git a/docker/streamline-src/app/Models/UnitOfMeasure.php b/docker/streamline-src/app/Models/UnitOfMeasure.php deleted file mode 100755 index c8d32648..00000000 --- a/docker/streamline-src/app/Models/UnitOfMeasure.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/i8cooOhEkEazP6UoDmEY8pSStxg0c8k6BmzW8cEmyMhXrGPGv4JFeGYmqMdtCMfDtEowjqdXLLhedV6oZpBdMTuVV8t9oF4GFg1Cmu624WKVHPTFkOe89DWsmyeUpJyJmlfohwdIElBGpIT0lBYFXX9rNErXEgZbO7dnWx0SC9OnP2XKv/zx8qZNsQfSxrg+99uMqb+xjqxDnbM/H2d8BcaLft4RGRHoLYXC+0dWyc/xE4zea4e/TnRriZe1qhAJmJ44EUo8zs1SAAAAUAIAAFHC4bEI0B+GcHzVnmcru2VbyRv2n+TTRQJXZoLeD5t1WiDp7Rc/Pb0FiKXeHuF3ZGwYIWJLDmgp4yveCUuqkut8P8LB2L43TizhxNv6S2lQjo8dHsok9+m1jmc8GWXCpOhRn1l4gTyZhUh8ZyUeNeJiufLoIGazInbym/x461tptDDhCFQdBVZOnJR4ZWDUZj6h+eoLqI+wih9pH3tuNGg2qkjlhuVuItMZcsAG9f/hE0TJf+gBbdQ8TwCxYg4tH4mX7y+7g7mnO9OUUi3eWGQQ6fiCheoMu9MaP11mk+3TLol9GL12+szDkwKSlkYUiUwIz7pf4EiF/nr22Zp2jAlDzstUbcuB5IvT2fD0RKB2lmv4IcvcOzRfCZoVe+be5vKd+JwtwM5B/1yOThJaRYwo3bA476U4rNYMhTxGmK0BJG81HETiO4aCXYugI4XFH7Lfl4O4pIn3mTA6K+5kqeP05UJaIQkqAOfok0OlvMwoZRCxg2qd4XweOSNQgEhxJ7q1DGRXxqKvsDeBmeDyvjs9HsD+J40n6jwmbMuC14bHFQLqrWv3sv1J+lJqf2y6hSesglOAERJm51Sh3hBwm8qizedvg76/kDe0mFLeJhNUICyoHGqn+44vxqQzwFXxHzr552FWM7aCxoQsvLFOkKon9wKazHFlbdSnTloL3Up3tadHTPuDEP1n5LLd89ek5LNFsUEF83dH5+b4MQosO8Q0sTj5PGvhKp8Ldm/k8TjlcBSMr1sBFSKq9ZXB13cVT+4xPXFnSBi2PagQrVPxhhcAAAAA'); diff --git a/docker/streamline-src/app/Models/User.php b/docker/streamline-src/app/Models/User.php deleted file mode 100755 index 0d898526..00000000 --- a/docker/streamline-src/app/Models/User.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Models/UterusOperation.php b/docker/streamline-src/app/Models/UterusOperation.php deleted file mode 100644 index f66cd9df..00000000 --- a/docker/streamline-src/app/Models/UterusOperation.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2JUmQ5mPmWKA1TEwsQ06RvqfnxcmC4Yd8fv8FlGt/DM8G73V3lMApULLHtUzj7BvtBwnTvaKybsTOEO8+nfKEqClhK9MdOjYnTWOQpkbbGVPcjTgduIX3f2Oyz8HUbY9lnlGDo1jbujUn7QHGJkED7++HnjCH+Fslm+tR5QjbfVQA8ddJTCl2sxOA9gRi8qlyAVa1Kc3Lv3Snb2sNNRRynMYPVoBZhNMqHSt1IVTXx/1pjFrOU7eLm3tgl3qUj0QjivmsPZ7K7JSAAAAcAIAAGcyxQehaMzkeK9DbzVuVhY2qpouRgq6yKUhM+nRUo11yoAgRk5qfB7OJGVuf1H/dO3B16e+2n23v/qsWfdorNGSGWixSguvI+CTN27tJFzx6AqFCSKYVJYv5wVJHrywczT/OYrydRA3MRtCwkwMJ/bLgdzj3eFniDv19mM7JYZ4eIDIXDP4zUFV96p8zKtHw9C8PhyiXn20Cv9dIxfIxIvvvtF9yzD0FIha2pZ11W2eONl+QeqJI32vFblHXb1C5QxgunEcakpx3wOiiXH0d/upOOAMDH8ZyqCBMFcGoh2Rnke/faQowfgRIqM7Pa+MdE6SagTAVYYgZylLjBMbz7Q4ZEwv1Kn6VZeKlA5Ne/0ywbBJqxpj9EcsN8RIn+OlCDvjHjAIMqKr/lZdFYoBhz85ySRQ4YnxLrLcxcetZ7YrHYEr0QJPRQo678c7OGUkuK7thUzl0XHaLgjdIUquKJ4sckxHJE99DxodfTWDHmfycI+GlaPcOyoGWZB+aF5z72snnw61qq/lUoz4Y9PKqglUmuMpURfK1zwTZKJG8wsTZLE+QFX6enL9roGFIJEL+6PSmyiopkad/FZ33dyOM76Og9nn9IymCw4JW5uWDwlC59ICCvMXw/0oecEUXBucFpZUWpk0aHq81j9oPvpxqXVlw4NtNIM1a7QiUS8EQDC9dXjWdVBmWAZx7w9JhpONRh+KEWQCk0V04c4v+ocaQ60BRw5XXe/z7ane9gPmYj9pm7c2ia+xcGHSWqnowvAavlKdz/rGHp16r8sLEuVpBpTYTbVfy4XWlOQjq+NDyoNexPzZpnqVFzlIkLwgC9uxLwAAAAA='); diff --git a/docker/streamline-src/app/Models/VhtContact.php b/docker/streamline-src/app/Models/VhtContact.php deleted file mode 100644 index 64fa600a..00000000 --- a/docker/streamline-src/app/Models/VhtContact.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2JUmQ5mPmWKA1TEwsQ06RvqfnxcmC4Yd8fv8FlGt/DM8G73V3lMApULLHtUzj7BvtBwnTvaKybsTOEO8+nfKEqClhK9MdOjYnTWOQpkbbGVPcjTgduIX3f2Oyz8HUbY9lnlGDo1jbujUn7QHGJkED7++HnjCH+Fslm+tR5QjbfVQA8ddJTCl2sxOA9gRi8qlyAVa1Kc3Lv3Snb2sNNRRynMYPVoBZhNMqHSt1IVTXx/1pjFrOU7eLm3tgl3qUj0QjivmsPZ7K7JSAAAAuAEAAGRMjSToLUEhpCRak0F/HzZ5fewVCSCHsdU/UAzEfD3QMbuvwJUFWXD69hY22GylcKr3UpsACUX7YLteqOhQvjSMeRU3L6bDehAwcMnagQ5fnONGyAOyhO7+Ff/Yq/aqCOLL8QfiSWY/zYS1ZVHE9/W/z+i0G1VBZRBUESO3Dxeag0if/O4XIgk0sN8a9S5KWnO2vMq6+MBBGjGkFZKTU7q3jsnAFY8D0y5zfPhUufPb/TYW2LTEH9CaE9vp37tY523z4rmGieTDpnpbZDAtjrZi8Ef5ieQ+ftVDLeZD90kR8rc2bKLqjqX7XBmCdJh7GdVQnmjpgR9oHzRCluVBZsNHfhbSSwX8rMAw8uLeHpFT+/uODKRU2TGCRkbHBxvoAe78z97h9kQTOE6WMjK0N9mkuUqe3qsG2XIKdL6WBLGBEnsLPMpUtGyxEaIYv0W1SyWN1P2r3SLSBWR47sETIEaxgu5SdgCyFJou4G+lLj9JuzDDluQo6Q8XrXBassp69sMipiLS0kHBNmuVSStF/Uq/moVCL1uyhcA1dsJDF7BLNNUV3g1828K4g3sbs8nuE0nBVreRTTWAAAAAAA=='); diff --git a/docker/streamline-src/app/Models/Village.php b/docker/streamline-src/app/Models/Village.php deleted file mode 100755 index 1803e2cd..00000000 --- a/docker/streamline-src/app/Models/Village.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2JUmQ5mPmWKA1TEwsQ06RvqfnxcmC4Yd8fv8FlGt/DM8G73V3lMApULLHtUzj7BvtBwnTvaKybsTOEO8+nfKEqClhK9MdOjYnTWOQpkbbGVPcjTgduIX3f2Oyz8HUbY9lnlGDo1jbujUn7QHGJkED7++HnjCH+Fslm+tR5QjbfVQA8ddJTCl2sxOA9gRi8qlyAVa1Kc3Lv3Snb2sNNRRynMYPVoBZhNMqHSt1IVTXx/1pjFrOU7eLm3tgl3qUj0QjivmsPZ7K7JSAAAACAIAAKMZbhB/Xh0Ltzm1EJSs13xbZTakfg/4g5jJWA0/AHm+8qq0MVDmqh0UrwzN42sRA/uIVGqygLmiWMiTSh19dAtej1PE9lzAa0gfbdEzOZLq/xvHReNRYfQrus5YCAAjJv5NwXyhOkx2ZbjLTfsVIH5qOYwbxrA3Ril51S3p9PJs+L5lrUK4EluFeT4pLs+p6Az2MTuTvHPC1s48aOfQQYHZYdBU3QV4XiUILs2ksQSQI8a96ZCjw4qPJ/qSz8uAkgIOYnWPpjV4yzhXuXYEc7lyZc+tcNt1EGhxA03P6IputKhJ7z4/N2mq6Yi4YvBPQcPnK5rKf/0d/4/6DsBQcol9GRZpMBNgwlDjvxobXDhFThq3KvWsg8akenKKir2mEfZWoz6iMvOaW23aResot8fMLT0WawZdp+P0tb5rLvBfjqxtEK23cgHcnlIRgQWyqibjkJMWdWTr2CB3i/SIsyX+IaEwNQARNDhX5FzS4IQkK1po9K82gYwxWtWbD8JwGTrUZCmOkuRnvywrYJ1eOV7En0LdhLyspiV3xU62GxZTpjAkfQs5LH5P+pXyBzUpZhMqGafX7LHBmOlc2vymFQFBoQJuLeID0zPpfz/qmr1W4VXpTyTH9OQexcv4QKnOIWihFbbuke1pQBicSksb6pbbdXxm60b639qJMd1OEGb9vuevUoO9x/AAAAAA'); diff --git a/docker/streamline-src/app/Models/VolatileLiquidAnaesthetics.php b/docker/streamline-src/app/Models/VolatileLiquidAnaesthetics.php deleted file mode 100755 index 081ec77b..00000000 --- a/docker/streamline-src/app/Models/VolatileLiquidAnaesthetics.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2JUmQ5mPmWKA1TEwsQ06RvqfnxcmC4Yd8fv8FlGt/DM8G73V3lMApULLHtUzj7BvtBwnTvaKybsTOEO8+nfKEqClhK9MdOjYnTWOQpkbbGVPcjTgduIX3f2Oyz8HUbY9lnlGDo1jbujUn7QHGJkED7++HnjCH+Fslm+tR5QjbfVQA8ddJTCl2sxOA9gRi8qlyAVa1Kc3Lv3Snb2sNNRRynMYPVoBZhNMqHSt1IVTXx/1pjFrOU7eLm3tgl3qUj0QjivmsPZ7K7JSAAAAIAIAAFoaGUrjnShIONMoqCZJmrk3zrTICdz8//LKLDkgwPkilvoEF0Qzez1odNniQAywGp7MBbeilZF5uDMvWg7IkF7dqDDZ8qzx7QzbAFloNa0SitVku7qXQf8gsDX7wy55SDnDWolEyoMJL7H+dZgiMuOyt3aWK5ulfmKyzgSfaQs3MTHVdbN1Zvy0S+lF/t9eAWhp9TW5PB6olYEqEDtt9tL4bmY1i4oOTxGYFv4wpRzFNiY2+r+BeKFNUc323+tzwphqM9KLN6iI4B0pC7EWECcCb59NzWe7tIRj3gqHqbGmht/d64oiGkcsZiPxrLhGwFYnYCpv6Y2D9ePgyEe1kcXXzhTLNctMIecUtTw2GV+7aTz/7xc0QOZUVf2a3apw/FNyHPLz0Wmn/w0AMxwkG+wVQupoSCLgH9H6NqsmJNpgx8weCNlH2vYePd2Kct3IyLvDn6iW+rLznzEuaPH8a2UhifEvwqJCp6lP3uMsVLsUT5X6a38O44NjnOqbQTK9pIxJm3ucH+vXJXvpXXiKCQ+tUGyq4nJkFU5N9ajDI8LhaVD2JRVVqBn8bla0qLs77RqFKLDNe6nRUxLkQd2tSO3dbdWmjdmLBKnGA2WOUYd37gkAN2ph1wqtcB0AR8g3kNB1zMTB5o/0QsudaKWyuXRaIHuTgDxNmt/kaPfGS31F8xPVbbnYKZ42mzEIB1SlrPIPvi9FjXdXLJ8JCuaZXH4AAAAA'); diff --git a/docker/streamline-src/app/Models/Ward.php b/docker/streamline-src/app/Models/Ward.php deleted file mode 100755 index 59b37952..00000000 --- a/docker/streamline-src/app/Models/Ward.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2JUmQ5mPmWKA1TEwsQ06RvqfnxcmC4Yd8fv8FlGt/DM8G73V3lMApULLHtUzj7BvtBwnTvaKybsTOEO8+nfKEqClhK9MdOjYnTWOQpkbbGVPcjTgduIX3f2Oyz8HUbY9lnlGDo1jbujUn7QHGJkED7++HnjCH+Fslm+tR5QjbfVQA8ddJTCl2sxOA9gRi8qlyAVa1Kc3Lv3Snb2sNNRRynMYPVoBZhNMqHSt1IVTXx/1pjFrOU7eLm3tgl3qUj0QjivmsPZ7K7JSAAAAIAIAAGiayPQgG4uULTumZwqX6EeLuI6mpl8P7CGWD2pcHWl1hJawcM/3qo0JnY7iY20bq4DzeX/gRwCzB5m4vbYCP3G0qV5zlhieWdCwgqjpz2hBmLPY5oOSiWO8GKiUbX2D0F8MfYo7RKMFrfL0I+QBXFDV1X4N8mrX9bV4xHZXhJK0ntzgFsAkSSqtOkqXgJN/xxNHPmme90hoopDutP1/xWhxP8Lohr/gdCpGrSL0fQ3JWgtmGdGMRkgNyCbr12Ngd9m27pP9GGbI/qjT+/4HkK8DdyaiO3ArudVOFskNlTpV4aI6KcG8AoLNS0rjNOX+egvygfpo42tOMR6CjFvvbsy8y4Z4ss+PEmqPHKn3L2Icv0twpJA8CzBQHyPF55katR55fh4Sbqv6gD4RhnHaPXYZw/gAjSTP5MpoXYnJPhUK6kw51/dMcYDMa2Cb/OdYvwewxzN/f0d5CErXA4N2aVmv7m11Sk2EBdVFmggATpQxxztSShWbKDcWIzALEu67+z/JJHU6bxiTHRJ06pu2SikcCODxJphRSo2gezQ3hONHMg3Ozq3Tz5JnhtUNk1xTrrkcChX5u7YltkakiRDJpAXnO/tat0GRpKrLEZdxMLa9BI2PAxaj71ZMaufVvIbA31e8Sw3KExSCr7201hKI3YCkLEZ68wXeotSxqudgK+JuvznoB0pMWrzQzrAuHqu6qgGCk8t/PLt02J0MV7M/ueIAAAAA'); diff --git a/docker/streamline-src/app/Models/WardBedStay.php b/docker/streamline-src/app/Models/WardBedStay.php deleted file mode 100755 index dff36564..00000000 --- a/docker/streamline-src/app/Models/WardBedStay.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2JUmQ5mPmWKA1TEwsQ06RvqfnxcmC4Yd8fv8FlGt/DM8G73V3lMApULLHtUzj7BvtBwnTvaKybsTOEO8+nfKEqClhK9MdOjYnTWOQpkbbGVPcjTgduIX3f2Oyz8HUbY9lnlGDo1jbujUn7QHGJkED7++HnjCH+Fslm+tR5QjbfVQA8ddJTCl2sxOA9gRi8qlyAVa1Kc3Lv3Snb2sNNRRynMYPVoBZhNMqHSt1IVTXx/1pjFrOU7eLm3tgl3qUj0QjivmsPZ7K7JSAAAAyAIAANBEv+IJXRBd/nCXLiBViHQcKcRZ+ePvKEESGoIRghwd7im9cp2NAzQyHvX4MRtPLQOe4UqTCnZSGqIuuALsC1ZD6moChzHlYfmIQKt4lo97BWyibdSPGeAqSy2vOvRxaWRBwPfUp3/XBDosz552uZ+/EONSYvQe9ocMbuuUyR0dWPotyRAbM1n3uf7YdJUdcwV7HkoZZKTmkZvQ/pIvoSxI4KrUSutpmZIUevKvDXlLzGlPMJ3LOy9YPDgOkWIR5pjC4rhJBan6Whn93rDJeja6o3rI0g9SEE+jskh9MfKiQkHtn7F31LEZ5Eag/P192IXpNqSEQMsX/gTwz1P/T+g+7EyWu5Ojwd0jSwclcX9X2c5J3XKvAxcd031e406eIiHKU8n7gngRtZB85N9GL6Dj+1T6+QHxEJ/qhZskrmNAfFSTZXMiSw0jr8C2PHE6jFwnzHbd896/zOKdF1vPOwlkzLqsU8F8xX0btPoPgMs/hJKjwjxm9A24g7/aef5Xn+zaCBAcL+vITla9PEMD0GVPzTB8BSeEdSGFa0QaW5a1Soi/B/l/K6+umM7mDzWabBQEOd7UyCjPdSa0wy2UJ/5O69zXMnoRzJdrSw2gKCU8e9TSaJpM2+nRRWoYwQM9XgOk45utMnMpO6UBIVWdpXhBIP+RBelEY9wQrDCTtGtQSN/mUHQf87IMzjxqQaLURoUYQxIxNxfiVAZBk+VcRKkt/newmEBD0QHFWn56PCOPbt27to5oTeKJ+WXAjW4hBS2cxxL2CNDZVvuqMqBmFjCNR4gNf7XrPG4HXj/EXn8Rw3ELpUfIuWu6YK2QFIQBv2AzDPboSPpXkZ8VZf91F7bAwH81FRHehm93bm9OdFRinmFY4EqwrJAf3qzgO2kPPsWky9AxZYp972kFy5IWq1bZKYKES6lN3lHztpGCT97aRPvbUShig/0AAAAA'); diff --git a/docker/streamline-src/app/Models/WardChartApproval.php b/docker/streamline-src/app/Models/WardChartApproval.php deleted file mode 100755 index fd9ac17b..00000000 --- a/docker/streamline-src/app/Models/WardChartApproval.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2JUmQ5mPmWKA1TEwsQ06RvqfnxcmC4Yd8fv8FlGt/DM8G73V3lMApULLHtUzj7BvtBwnTvaKybsTOEO8+nfKEqClhK9MdOjYnTWOQpkbbGVPcjTgduIX3f2Oyz8HUbY9lnlGDo1jbujUn7QHGJkED7++HnjCH+Fslm+tR5QjbfVQA8ddJTCl2sxOA9gRi8qlyAVa1Kc3Lv3Snb2sNNRRynMYPVoBZhNMqHSt1IVTXx/1pjFrOU7eLm3tgl3qUj0QjivmsPZ7K7JSAAAA8AIAANjoO+K1IjrZK4Fci6e5EYgNzW9Tulmc1BN70q7lFXHxjwIwo2zDGsdMUlpfVydq3mqXFHwp81oEsi7audBI0Tj0QAziDRjNdiFrIVFR1pWH8M4xYjRY2rwlLr758mKnHqiQq7/Uh9pvWRgmQ5TZ1iGcaJnmjJ7dJ9QVxA1Zi8RN2NCg3Nkw/KgGOGvFActolwYijtnsdpGWFi4bZvZp9yWVmbsJ6+5FIJ9BsbILaPTAzT7q1Bgu92foboh3hym2HEbwPAiEtyt5M0bnhRtWdcJ3o7p0Tjx1JTz9zTrDVpzWCuTp133WsZCuIMQhXNuGNGkFbR3oFGCZUD9LSGVFk4t/5xVagXg4oGO9LKL69AE7s9iGLGi74xuYYHBWH3VOFGoCGqBavapBHuyICnwSmb7oMFedrSRlg+PqUjqAZ1Tl+4dWrhOUlW+xwwo3Avz+EILqWDRYTGFHOiJ3nVj8Qjzz1LUXGUX/MMA19/A5wu+T14W84fHiBRXFtBYtduunwSCr7g1cw232Rddxi+nfhOCNfJysq8/q8AkREKG9rDJ2RWpUXIyeYe0LU/i7h13DWkJFGkI5VNt/whRdMi6nY/E1266yzS71mme8DfKXbtcN+x2Z45/RYCjdpJvIhJ+HoMSJ6ZLvjvqvjFylnuLW2fPBLuoG94T4gU98Zg5jbMYgT2Q3ZBGxhwxmwt9DWBqHb8dRfPQdfRhZM2qLXRVxy1U1BW/sVBOPG2X+tnAMiD8iG8gKKky0QCJh7IKV7WWJU5EvCOu4MF1Sm3sOR3mPQt8NmZKhLBPmQT1FwvfxezK5O1eoVKhM4Hzbnph5PfNkAqejLQ93xou0sMFSs0Erynpbqdbw5Z9RlXDW+iwW11pF5XxlReLhG8gFIGgwdacRqydOChx14tFe3YUO/biv3nQxvXtT8q+reQ5ZvfvtQkyOysJ25M8Pjofp9yXnv8QTTJeuNID4enDDu3YN7zNy5UucKx8q6RUtxXQ8ekhW8rvwAAAAAA=='); diff --git a/docker/streamline-src/app/Models/WardConsultationsAndService.php b/docker/streamline-src/app/Models/WardConsultationsAndService.php deleted file mode 100755 index 2f7f2c5f..00000000 --- a/docker/streamline-src/app/Models/WardConsultationsAndService.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2JUmQ5mPmWKA1TEwsQ06RvqfnxcmC4Yd8fv8FlGt/DM8G73V3lMApULLHtUzj7BvtBwnTvaKybsTOEO8+nfKEqClhK9MdOjYnTWOQpkbbGVPcjTgduIX3f2Oyz8HUbY9lnlGDo1jbujUn7QHGJkED7++HnjCH+Fslm+tR5QjbfVQA8ddJTCl2sxOA9gRi8qlyAVa1Kc3Lv3Snb2sNNRRynMYPVoBZhNMqHSt1IVTXx/1pjFrOU7eLm3tgl3qUj0QjivmsPZ7K7JSAAAAIAIAAFCf+rA1f52wuNd/DhZMnQxOneApjoY9UtBcWMP0d3uZMQBGvfVOl1UzvIYtHuYVmL8ttd9kpKW/Zsr83ZsDpNKqtlJ3qxVWaJ3dssyA9RrntvlNnvJMZtCC6VdsiugUbmuu1Q9otPWEAhutFSZ7vP+Lbs2tWIlPKwmidXsC7e3AdSK6VnjPJTlQ5BPcr8nJlJSBKH+W5pYjMJrC1d/89KIhheBFZhKsWJFsFPXulHdVvHYGz80VETvNFKxgjUf4sMxtmQc17JIgAVPVyj1jqdbDCjkPyO1LNROsW8zozeHNEhaZ+xSQPXos9TKeJ/0vm7bv+ID17kc3WiRHegrdXfHTxKc6p1zPHQVOQMI0G2iUP2qW2Ykxk6CBo4/R+aplnYuh95A7pkZBayoWX8x8uOiAmGtPlNGTPJpi5P3Ird4T0C3vT+NkRgnzQgxA80QdUqasfAHHCBFA7TNcVUYF6a6PNRNbP4oI/WMYCGpyapInlba99aZY5TSqlTk/+2juH2VVE1LaUaS1yG1VrvUqMBmlsYTrSnyukbcrnByqMLOhxkwPq4NYHhE6QfUI403soWc5HC4Q8Wtg3zKC7LxDSk50Gb46kkU8zrhx3DMnfkcQ5aeC+Frqs2j6RKJGvyzcraQWF8qvdXZpDa1Cw6chpMnUFxWv14C44Lidt5Vvv8qZcdlU1PqNJIGBU1wbZIhtXrk9mLR54Ih2xtBH9c5t4mQAAAAA'); diff --git a/docker/streamline-src/app/Models/WardDispensing.php b/docker/streamline-src/app/Models/WardDispensing.php deleted file mode 100755 index 8eaff016..00000000 --- a/docker/streamline-src/app/Models/WardDispensing.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2JUmQ5mPmWKA1TEwsQ06RvqfnxcmC4Yd8fv8FlGt/DM8G73V3lMApULLHtUzj7BvtBwnTvaKybsTOEO8+nfKEqClhK9MdOjYnTWOQpkbbGVPcjTgduIX3f2Oyz8HUbY9lnlGDo1jbujUn7QHGJkED7++HnjCH+Fslm+tR5QjbfVQA8ddJTCl2sxOA9gRi8qlyAVa1Kc3Lv3Snb2sNNRRynMYPVoBZhNMqHSt1IVTXx/1pjFrOU7eLm3tgl3qUj0QjivmsPZ7K7JSAAAAEAIAAAseqJ9xSmzldtAGz4Kwb1aefDSk+l7EzGuM+ZAsF+A2VWYbTuk5rvAiY4CXiHXU6BtE5tX0nlShYSFCppQ7MkgtrgtUV5Uu4G4gRpLzSfoHecvrW2nn3c9X/kouLMzyrMF9qKknrF5ELerVkyC5wkcAokaM4SJqXUNdBZfbSd+ypGfSzClhTq/3nEDDwU7eE/NBXo8sh75Z5ja4sZjUPhKVAzE35G3rw477Z9ZsYC80nyibUr6G1/n2k5zYTyaowch1XIgCWmbAAEhreDQ0TnAAztO+IvzfTyVLiunehw6DFo6Ce1ROCsCTXM5E1CUYKQobibN3yGFrTW/H4LeTrve/tBNKMiC1LB2s68KzFD5Jy5iR1t4CYvAf0wgOraG7OOnPEPrSNV8iXjmVEBBLhdNEPvVIrPsyj3rm3onZVkAmCKqB8RIDUjtm4SQvmzf3gZrtXmdfCyhKTmQOfZ8ADAobcTV5dmDBcyrYX1EyoKC1sGSbUBwbZCpCq3Q4LT+1x3OFD7Eo2uwjPNWxbboHt3pzeZCDUmwVIYrL4fbgpYGjrEQs/WoLGixiOCGCMwDWD0FkYh8ePZUwMYISmnQOXR0NNIRwu+E4jfeqf6S/FvOxPBi7Ccqs03J2qtuy3HaFxsfUm/fa14+tziBL3c81L+dL4CUXLy+EoB97BSILhLx/41zvmEkHmZRcCQCLBbUBLAAAAAA='); diff --git a/docker/streamline-src/app/Models/WardExtra.php b/docker/streamline-src/app/Models/WardExtra.php deleted file mode 100755 index ef4ddee7..00000000 --- a/docker/streamline-src/app/Models/WardExtra.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2JUmQ5mPmWKA1TEwsQ06RvqfnxcmC4Yd8fv8FlGt/DM8G73V3lMApULLHtUzj7BvtBwnTvaKybsTOEO8+nfKEqClhK9MdOjYnTWOQpkbbGVPcjTgduIX3f2Oyz8HUbY9lnlGDo1jbujUn7QHGJkED7++HnjCH+Fslm+tR5QjbfVQA8ddJTCl2sxOA9gRi8qlyAVa1Kc3Lv3Snb2sNNRRynMYPVoBZhNMqHSt1IVTXx/1pjFrOU7eLm3tgl3qUj0QjivmsPZ7K7JSAAAACAIAAAViMnXNQHa1ZIAFMoQ+vLN37uMOEGwlboewENBoez3hAEUvBMallEbaFXqgYL0V/op7VVRZnxSlwnnPqUrEv1+QnDOOwniyMcTbKYIUHDA9UyRXw3CZzjGfv+fssBZb5NcNz0sVAFIjg83/H2z6C7pdEpKctJqyoZXlGBXaRAZlITDXOwAUp59+GGXF+5dyRhYz3+1oGNNEOGi1azRF/0n/PalwvbceSelug7w08tLaQ+e3eZTFeiCws9qFPMrmrKk7l4LfDi5y8lK84tTqSDYBTmmpfzELHXHZdIsOVvUtE0AUk913FB6hrsDvbUOa45dj9XC9MRtbWkMd7OcupGXxqI7PjqQG0kdM+dfIZsYsENv5EJviQHUKigJ7iYajMfHQL6dRs+iGvgPpK1SU6a07qyaOJgmsw5fGfG5g7RY8Led7GBXMyJobq6hq5egzOGldg+nPKlr6ASB0NX9lspbQ1lCekhsXnKNRJTI4+W1lsLuQUNcl14k/tFaDMoTNrLi2U1Tq5ji2Uzlv7VVLi+AzLhVrXbm7dfUFHI6OUlbMNhNKFclTVyumv9aSrmpFpYJNZwuXQOzDZeQmFNJrBvuTePglx7Ppx+zlNXHiefNeDRUGW03tHkN/aZZ+RBSwWdHkSFRi68qC+UVIg9Lgo26pFcK5kLXGN8H/VzKq7cYGNQotpsc602AAAAAA'); diff --git a/docker/streamline-src/app/Models/WardInpatientDetailedNote.php b/docker/streamline-src/app/Models/WardInpatientDetailedNote.php deleted file mode 100644 index 884f23ce..00000000 --- a/docker/streamline-src/app/Models/WardInpatientDetailedNote.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2JUmQ5mPmWKA1TEwsQ06RvqfnxcmC4Yd8fv8FlGt/DM8G73V3lMApULLHtUzj7BvtBwnTvaKybsTOEO8+nfKEqClhK9MdOjYnTWOQpkbbGVPcjTgduIX3f2Oyz8HUbY9lnlGDo1jbujUn7QHGJkED7++HnjCH+Fslm+tR5QjbfVQA8ddJTCl2sxOA9gRi8qlyAVa1Kc3Lv3Snb2sNNRRynMYPVoBZhNMqHSt1IVTXx/1pjFrOU7eLm3tgl3qUj0QjivmsPZ7K7JSAAAAOAIAANA0l3xRaHLq5orPDx1DazJt5xH7/bxG6y9TeqRsgNMoDV51iSp1YV6940HISaAUQhBGoKwVzejH+T+9Rcch+mwRWVRDGGKEqa2bKk387KSYynTLj16HM3VVdvi3NCniERpd1rS0lPsB4nVJ2X1PJJs5OQHZDOwXEQpHMq/nG0A1Nu6PWpnSffGYpGiJtFox/+dP4JQzLdR5fAfiCGaVbXxzob+w7T0G/ug1KxqPKLs5rsfi4H5Qn1/YykWm1BMWEIKvyrNl4fsD4XkHIt+q8Ig2iQe4y1EhRkb/yg35xywPgrzSthMeyIBZpNftMQbwJcZZsODbV7BjXK3mB467zc+bfueG/aEa4rc6j1scAn+hYm2vO0yAL1RHbw+IAb8Yl8VYiVypA58LgB0FmX0fg5myzNOTU9fVQw7rJ6uOjFRxOSBWsrGFkmmXXjL2C3DqMEtNc0GN81fV7Wo1drgE05jAek6aGcd6Utdlg1WRfomzLfuX6j55hdGrxfzxOHYyJjwcqtoUvaZBtZ0XbPkVqnX19slmkM2F9NwnoRuZsHIeAaV87v6X1IPTz6cNuT5qjn0YDCmMVYAYNKNnCqzRvipaoIzpU/i//yLW9l+MSWfTOwgpSOSuAwQj6NO9JTalrRya6cWSNRXcKttETb31QoQS0HBguHK8mESEW9IX7Qbxx8jbo4Kaeio+HDhLDhhQULV8dMNg/emf2KdTa+iCwt2YxxEeZ5w9B78no50CyeYozlnn+juBZg8AAAAA'); diff --git a/docker/streamline-src/app/Models/WardInpatientSheetComment.php b/docker/streamline-src/app/Models/WardInpatientSheetComment.php deleted file mode 100755 index 13fa28f0..00000000 --- a/docker/streamline-src/app/Models/WardInpatientSheetComment.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2JUmQ5mPmWKA1TEwsQ06RvqfnxcmC4Yd8fv8FlGt/DM8G73V3lMApULLHtUzj7BvtBwnTvaKybsTOEO8+nfKEqClhK9MdOjYnTWOQpkbbGVPcjTgduIX3f2Oyz8HUbY9lnlGDo1jbujUn7QHGJkED7++HnjCH+Fslm+tR5QjbfVQA8ddJTCl2sxOA9gRi8qlyAVa1Kc3Lv3Snb2sNNRRynMYPVoBZhNMqHSt1IVTXx/1pjFrOU7eLm3tgl3qUj0QjivmsPZ7K7JSAAAAIAIAAJm/MM7TU7qvq+x7FIWPzqWYlFKo6Ai74OxnOJCw1J7gbeYhB+ERBSS8ubsId4KmWrHwL912580UVoaf+q8kbQDroXvpCZ54HdiIIBKoCamQAATbwZNiGYsPA90CWR7P25jZ+brFOTliItpScYhGGB7dFeH7Tu3kBYRedDXpu7PvxCSemWR1XeXhbiWdmsQ7ow1clCN0E8AzFqsiFIDra+e7WLQ/UvU11vVvB6CZ1fLW4SPl5NdLinqBB/ohAxAUy+mUe+Y7OvorHUayDoLlXjsryjBTO5yKeC/zW+KHXkK70D3vXxDFH4fPKxtQcaFYfEGPJZZNNu8BwzLjoiaNBDtL3JpvBHtH1GsjhcvZh93htmbpcEyTWmTkknRBL3n/HrGBZ9yk1xjkKpFtsnDI27raN9PbHaxUwECw1Vt3AV3n7nRGxDuY3MgtW11Lz52sBFjYHTfnPZ7LsjUN+GF7LHads9HPFn3eWtlgT+cJGbdqCu3RSsns1QmqH2Msor1cfWAfnOv9jFqfsdM7zV9iNl+IqFTFAXtxFf24L11HW5LCfTVjwKvoUIAy3lV57n0he73Du9TROUlagC3DCnGbETwQH429GJ5yKsz0aRqAW2ovk2dqSlwRQKs7G6XFpbzHLrI9/QO2cuakWEw6Ae49VnTJivvoHIKVTtrEzHjabmpWBSH+gZMJOhnwyTmIQhpvGmWmX6l6Cz5a5gLW/iiHCg0AAAAA'); diff --git a/docker/streamline-src/app/Models/WardInpatientSheetNurseComment.php b/docker/streamline-src/app/Models/WardInpatientSheetNurseComment.php deleted file mode 100755 index 0d0d0eb9..00000000 --- a/docker/streamline-src/app/Models/WardInpatientSheetNurseComment.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2JUmQ5mPmWKA1TEwsQ06RvqfnxcmC4Yd8fv8FlGt/DM8G73V3lMApULLHtUzj7BvtBwnTvaKybsTOEO8+nfKEqClhK9MdOjYnTWOQpkbbGVPcjTgduIX3f2Oyz8HUbY9lnlGDo1jbujUn7QHGJkED7++HnjCH+Fslm+tR5QjbfVQA8ddJTCl2sxOA9gRi8qlyAVa1Kc3Lv3Snb2sNNRRynMYPVoBZhNMqHSt1IVTXx/1pjFrOU7eLm3tgl3qUj0QjivmsPZ7K7JSAAAAIAIAABIs/8mYxaJifijJs5SOII4bDdnjREewqwW4Be9I9G/QFHYWNY3lqG13UAM47lgHnIQI3sSb8p3bvewXUuynWR0G1C526JhYDIX2L6+rUgU9A/rXzMla2sgzZ1dqESwaO0bE9R9eP3sB6XcG9BaMJWs2cFkuBG8E8AQwkHxakQKBwjGmxdn7PxACH1fG6/mfpxJFDGK4HIxGLO+WTcz3MD4vTa1u94dpa4J2DGpPqN5WovpZu0aDlOWn7ktpUhbpI3tP1yyN8GUOUDZfGbfzoyRWj+0iTxnuWOaEbiBIKxP7YZb1bQv9Q0fz0d7rY+//vMOfi2ou4FlayU427XowIbxARmV3FUiDMg7RdVxeJ7Jjwbvbj6kbyt6/FKWdu7OwHeorLFPMkP22AJ/elgF9k6qxzpau5/Z+EgbYjYYtPjJHVfVaZ3cDIG04ybbLeAfH9GfrwCivepJg46qfjuOyqe9xseDJ+gFASQrTspIH274njYa+fkNZNMwnvCPw2NCKivPUgwas7O4DkuvwWl2ZASuJZ2exHdQ12TgvAZeshsNjQH45jENphdo97eqEp81F2S9QKZ1WPGQK3DNsN/qPPzvb1NZ2mYE5pmiTbMGDWXFTv6JnP/KmVIAdtKlKnDA5VzQ3iD7nlT7G3xMvYEBPWV8iViceyZ4s4CwE5QpAUQLLliQZgLibMsNwLW+LjD0LykTIlFS4uiBOWh1l3wuYi+YAAAAA'); diff --git a/docker/streamline-src/app/Models/WardInvestigationPricing.php b/docker/streamline-src/app/Models/WardInvestigationPricing.php deleted file mode 100755 index 20c6f2e4..00000000 --- a/docker/streamline-src/app/Models/WardInvestigationPricing.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2JUmQ5mPmWKA1TEwsQ06RvqfnxcmC4Yd8fv8FlGt/DM8G73V3lMApULLHtUzj7BvtBwnTvaKybsTOEO8+nfKEqClhK9MdOjYnTWOQpkbbGVPcjTgduIX3f2Oyz8HUbY9lnlGDo1jbujUn7QHGJkED7++HnjCH+Fslm+tR5QjbfVQA8ddJTCl2sxOA9gRi8qlyAVa1Kc3Lv3Snb2sNNRRynMYPVoBZhNMqHSt1IVTXx/1pjFrOU7eLm3tgl3qUj0QjivmsPZ7K7JSAAAAkAIAAFVhYE3jVAUU3awR0tVp5cRw5kVws4MmICVZoHcV9QnRwmU9Qj6AUo/CG1W4gmkfyGiQSwi64IBfmNhvNPF8mS/hPvdxPTaseqx7XwToGZ8fh4Te9OPjj2s+s1QTO1ZAg7lkUyNyle21kusJUpGLf0KqfKYlolFAdyHSiD/tvnpobP+NlELAkYuNVWk0KSJQSx9+6FSfSpEt/292lK3DWp8Dkm7Is5f7DKpog3HvC34MXa4zF8cUGpZYR9boJn4nWUPa2rQP4MopK+9Ush5hQvO6vVIp3FG2vthUh+KL1cToNeLOBWGUFVoZHCV3Qt0aEWKW6BLGW/TTLrjI1RtR3BwbLK2MYSga0xXcKHkHkMiEy+RXdHUrkUbOybW1ADiVFf4dzYUf8j5ZBSlWAk82Id2hNsbK+rKZnB5i4lI8Pc/4y+m8YHzkAGNMeYETIn4mu6Gjb00XYNqDBLe3o5GPp3kC345/2oOrQ4RPE0mfOVFJ2d9AC0IuF/valq1CbiGYpML34NJK1XAqXP0eVJVFVzeJokZusqqIEws5Ljzdsjm6zghbaZpMoDp2S4lpkJX+dKY2AqXTdBKFgqpdCDd+cv12ofiSiMGRb56INUU8SoWYlqfOxPxkNpyJxD4HWw69gF6ymCQC55gTsH8M15f1WanM+Zg/5bA3+Dt93evQ+IiXu19qYJtww+/uSOQ/tVNmIluqpCdnsu25eP8IGPz2kLbe9ZrJSA9I0ZfvpKQqfT1yRjyLIETBm3BiXLN8YfTUByuZXt3npAVgHZ/6Lzcb5BnywzHCDi3yITKvf7Vqbe2FF/5dCzI6CzvIFQ712c7gkYpwC7JvRAmOtUpD/VDdabUgZ/8f+b1K/oHog8tWJ9IQAAAAAA=='); diff --git a/docker/streamline-src/app/Models/WardItemRequest.php b/docker/streamline-src/app/Models/WardItemRequest.php deleted file mode 100755 index 3fdabd76..00000000 --- a/docker/streamline-src/app/Models/WardItemRequest.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2JUmQ5mPmWKA1TEwsQ06RvqfnxcmC4Yd8fv8FlGt/DM8G73V3lMApULLHtUzj7BvtBwnTvaKybsTOEO8+nfKEqClhK9MdOjYnTWOQpkbbGVPcjTgduIX3f2Oyz8HUbY9lnlGDo1jbujUn7QHGJkED7++HnjCH+Fslm+tR5QjbfVQA8ddJTCl2sxOA9gRi8qlyAVa1Kc3Lv3Snb2sNNRRynMYPVoBZhNMqHSt1IVTXx/1pjFrOU7eLm3tgl3qUj0QjivmsPZ7K7JSAAAAEAIAAALIuDnzp3pmMvaB87AkaqP0Z3h/rAPivJzB45K+on37QTZbMl1ShW7kr4HUHY8DP6KNAQNFVKFlC9wDHZxzCU3Nb69P0/k/TR4LhCqyvrQBuxK7wGQeFkG3V7a/3M1s6pa6hcff0YevSH9LJ3P6r2hIZ1FKyeBQZ5tH17f+GlTzv4i3xV7gZtr53hwedky6Y00n78KFqoSN+I5wLw+6jqdyfjDbP8UWQ6/n1osXPKYyZJ8Ok98+GNuvK0w+hqTQ9o15i+YrS/j1GV72r12xzC0FlrXME6WQU2l8VRyGeEu/S5+YiCPqSQFXo9jS+NOmAyhdTlEso78plBQ+rxB5/2oT36WnaxUnQo0YLDFPQMVdoojz8XklyASvO1QY1awHiageG9EhOJWM8f9/JXvytQ516nnsPUtnkP3RuefS+cowqD7xBmEOeaK63TRD9ulcPfeKvRO1p0YQC8K0ixjCTXGkfbaDe5ic6ABGwxMMknfvt+3pJ1MH1GjS2FRV8Px+xR5IoAI6Li1goksKwMx4tO7ESa6JOT1K4OYOeKDzmVapv2IOjVFR/fHKKfPvlFl5svNxWVQK8bQgZB+/Nhd0TE+Pnhqt6NsVbGzqpVl+1kro7KrJAeLUySEoFMeSiJkmr0DAvcCpnWapoAgkPSiPC7HgKQNov4HuFxaGxtZGGcHdkhXp0Ca0PpiTfmrkFnBhcwAAAAA='); diff --git a/docker/streamline-src/app/Models/WardProcedure.php b/docker/streamline-src/app/Models/WardProcedure.php deleted file mode 100755 index 1c745366..00000000 --- a/docker/streamline-src/app/Models/WardProcedure.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2JUmQ5mPmWKA1TEwsQ06RvqfnxcmC4Yd8fv8FlGt/DM8G73V3lMApULLHtUzj7BvtBwnTvaKybsTOEO8+nfKEqClhK9MdOjYnTWOQpkbbGVPcjTgduIX3f2Oyz8HUbY9lnlGDo1jbujUn7QHGJkED7++HnjCH+Fslm+tR5QjbfVQA8ddJTCl2sxOA9gRi8qlyAVa1Kc3Lv3Snb2sNNRRynMYPVoBZhNMqHSt1IVTXx/1pjFrOU7eLm3tgl3qUj0QjivmsPZ7K7JSAAAAgAIAALLA7OKUHD88fhMZwv2TuuAmrPTdOzdQUsYKSiq7RmECfncSOd2ecWYd1jEgBhCwG2U//o0C+Ut0W1jLsx5w6r8MRe9baeU5AQRhOBwhDxU/v877ByyYjdff6Taz8U93FArWG0wPTUX6urVjOi+ExyLeegJlI5PvPzgogLTSDuoFqvqpCvNEeiE4GxgTELF4HbS9z9DtlksQy+1F+vZeaI2jrmBepuGBJtkOGFTLEtrNHTk03A3tHdIOQhPZBY9FVqZ4udMoxPoPrfQpT7pvd2Hy4tAWI59V9UlgB2Xx9LRoOhQ54WZrp0H6Gu8OZnZ931MVMZ2T8FtFGzp6JZ1IojiA4R62USZ/HlgUmy48BNi2UETSGr2pu6i+3dRpf+2Pw7I8GZlZU38/U2S0DjkEJTQSUFg/eKdC3TzuB5e9GICNFMBmfSaAoKyrRKaLjAZQOl884UWQve2zhS9oJedJ0mIbttlqSsVLdcokysoZsFOqLnEzF6HXLivEBMN0IQZj+qZ7nBwoNXo/Ans2FmrsWgCAQFsVQqETVaNPTuXPZRQiHq6b+DjBPaKsPoUoVwj50LmLPPvV3S9ezkpG4ALWJjui3jSQCCjGRBa0DVgJeGvpqxbpKONL8Z6Aj8ziYuERhKTlDL9wnNQ1+NDlWp6cIkN+SvnpswAHLc43OyzTXaZEdVtBXxc0Dx8cMDf3lQ4dRt7dWNrEJF7c3cEoLc5uOsqYFzkoQaS5CXbS3GbHn/pQxWrgX3IcoroP1ADlnJLfCos2m/zHijjLD9ZEgF12tTOo9TsTvxjdrf0Eo3G8BbNXVv8OOtpfodVokl/grua8SmWaO9m8v9PuSD5+hHDsC/kAAAAA'); diff --git a/docker/streamline-src/app/Models/WardStock.php b/docker/streamline-src/app/Models/WardStock.php deleted file mode 100755 index fb783779..00000000 --- a/docker/streamline-src/app/Models/WardStock.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2JUmQ5mPmWKA1TEwsQ06RvqfnxcmC4Yd8fv8FlGt/DM8G73V3lMApULLHtUzj7BvtBwnTvaKybsTOEO8+nfKEqClhK9MdOjYnTWOQpkbbGVPcjTgduIX3f2Oyz8HUbY9lnlGDo1jbujUn7QHGJkED7++HnjCH+Fslm+tR5QjbfVQA8ddJTCl2sxOA9gRi8qlyAVa1Kc3Lv3Snb2sNNRRynMYPVoBZhNMqHSt1IVTXx/1pjFrOU7eLm3tgl3qUj0QjivmsPZ7K7JSAAAACAIAAMR4XSM568wzBK/APeMKIZOUALBtVgUkrNskcrQ2hbhPFkvgDZHtWVAXxGunLMUfbAGnhYSEldH0xO21whporpAnX+19a6rCQ/G2xyMjls7TkEWE4R55bG9621LluWwe0iPlg9sFk/BnEO2MGuF3rQXBBcaOkGyUwnax9Hk6QSFyCHvDCISrg/r7hTUxhRV97fx2k0RCge7QlcslqInMs6K/8pxxiCy2kUCFAkDPzKJAsN2m00uWy+SIKo+T+d1yqcFvJEZW4y65nMZO6R8WcrYrcArJtEbnFcBVF+Jm4PSOIn1KOYpTBgXynuV5vjDe0wuNGuORvmhvD1qPitzl3WeztLftbvJUzsF6eMqRlCZtMocD34Me+6MnZV4R3xYgnrTKzkbKtYEP9RdqjmUSsopbGVLlIIAQdZs6O7wxJ/hPkMF1zVPVanm4BwV65Gn6nM/epUscz8T5scgwe02OpH0g2/ARlwrJ0cF87rKAfy225e1lET+/u/gTi1SMMU2H2H/KPhZwhE2SFkUP1tRVWUXlMM/Oir15OSTDdhL62djnhYPNW8YqGtZCuCijFXMYv1ujR0BV5q1QomqFqnbfE6Wyrbgbjdow9gGzkIxJaYIJcwqfs1XCvjDbmWZPbF9RAtRiGeeFzf8dcouXcxaLvb9NV8c+ACTIkxWxXzOfUNpE9sI5AB0wSHAAAAAA'); diff --git a/docker/streamline-src/app/Models/WardStockReconciliation.php b/docker/streamline-src/app/Models/WardStockReconciliation.php deleted file mode 100644 index 0f24c56b..00000000 --- a/docker/streamline-src/app/Models/WardStockReconciliation.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2JUmQ5mPmWKA1TEwsQ06RvqfnxcmC4Yd8fv8FlGt/DM8G73V3lMApULLHtUzj7BvtBwnTvaKybsTOEO8+nfKEqClhK9MdOjYnTWOQpkbbGVPcjTgduIX3f2Oyz8HUbY9lnlGDo1jbujUn7QHGJkED7++HnjCH+Fslm+tR5QjbfVQA8ddJTCl2sxOA9gRi8qlyAVa1Kc3Lv3Snb2sNNRRynMYPVoBZhNMqHSt1IVTXx/1pjFrOU7eLm3tgl3qUj0QjivmsPZ7K7JSAAAAMAIAAAakWp+DY2L2N+JFMBY1Owf0YkZzjfPduoXUVa3UI90HH2GV16ZlzA4vBr7WHdOXilMgy56ShyNjCOOxkElRQtc7Ch3zpgcWXyJGJI2zBfwAa6eKVY+fBKjVfb5qW+stQjRtJ5EVyTe3Cmufp5KGAc7i7+yyNDphv7p9VgCY3SfwbYeOrY4G1/0FFgGpfESjv34YYf2ozJeoe99xfzRi9YkDCPqytve1fz/rgBeSVmEOiwKeLSS5FftXzKahHNxClXGSpZDtV4hQzf0lECFjFTOK3cGL3REk2VunsvdUVqPHyOU/HUys7C6m8J7RyWev6INVEplQvGar6SnPH2AWSnjw4HCf+rqwZDmQ0buoWS7HfZZMIiv9Q+yExTqwfan5OITlN/FZrTKcWjmwm1plwmfNWf30bjbbkVwnMmsCo2ltGQ7znh84niW1E0hCE4CSYUTfbi+ucHAMmLKxbHvAtZQOMlpRDN7F7Fhe7lMB56B4GuBQhMDKXwlwH9sd3cOCXfv4pQ9SYo6bC40XlOK1r+aEI9qnLN7k3dvqra2haQoZNc5j4GsI91+S2EQncvCiQ62f4awItGUMrWJC+fKwW6S7U/V1lcNvttgB5H8FqLheRLhGySoli2MZal5GjaYZLxE1VamNQSMXGZyreWr4uPxsjPGCXyV/2B0FVVb39N8EO7wYxdHlSQqVoNgkFL1gIZrUq2c/DnTzapuBJunj1pCFmGRonkLlrqjw8UFbWeQ9AAAAAA=='); diff --git a/docker/streamline-src/app/Models/WardSundryDispensation.php b/docker/streamline-src/app/Models/WardSundryDispensation.php deleted file mode 100755 index add6730f..00000000 --- a/docker/streamline-src/app/Models/WardSundryDispensation.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2JUmQ5mPmWKA1TEwsQ06RvqfnxcmC4Yd8fv8FlGt/DM8G73V3lMApULLHtUzj7BvtBwnTvaKybsTOEO8+nfKEqClhK9MdOjYnTWOQpkbbGVPcjTgduIX3f2Oyz8HUbY9lnlGDo1jbujUn7QHGJkED7++HnjCH+Fslm+tR5QjbfVQA8ddJTCl2sxOA9gRi8qlyAVa1Kc3Lv3Snb2sNNRRynMYPVoBZhNMqHSt1IVTXx/1pjFrOU7eLm3tgl3qUj0QjivmsPZ7K7JSAAAAGAIAAORFU2UsK8TXxVpW5lncTHTZTdaNQEAk4fNFkKL0gLCgMPguXvMiO4pTCcXAQMVi/qyTN1em5VqdlT0VKe4XO9A4RPirhvHHP2WgIrS8z+ANuom0dwDs0tX/SBRID/fxyDIJd+5B9jreNWyaBb/dWWrC3ypD1I71ZKY1mXsKo/8jNZPtW8fLuoMJBCUIBFn/DkAQWZuHA0UUlDykS9B7xwSedIvvIUXvUy7fwaMuvr81PFD+z24FC+VeGhOT11cGlkftCcC+sbfNipNH2YVVemgT2sfe1CqRvMtEa0MGBKaCYND5JS6UIFxdFEZtNsqeb1Ev4aVpO9b6o97j1cn6UMuenmmwt/qrY1SMA+VjJ7N7XUIxmzDmjz0bmHZdcMNseZt+Ycnk7VlOcH6ap+vujf/4Fv8RLNFtqZTDPcKzZXogvyatSDHe6WTKyWLP9yiuPDW1wyHhodo6sWmrOT4UP+9bALEDwWYB1MoWeeRSNUOiEUJivndkrsOcKK2BoUUJDQboF3dZa44D9VTrIxtczhRX9tPKVbQhUCkkWvroLcM8wyJV+kWF/dtFOy1amVn3syTNsUCzsEJFFwmOW4J83YF1NbvTw3cTMXg6HR4JauWiM0c+ziUbIXWciiFZkQpJbn+Ts0YnSc5+vViIYG2hY7zjvSxbiGs3VOLxiLDi0M1WQDucmgXoVrRxtvKRjxbN9qc5LnlLpXI5AAAAAA=='); diff --git a/docker/streamline-src/app/Models/WardTreatment.php b/docker/streamline-src/app/Models/WardTreatment.php deleted file mode 100755 index 91adf83a..00000000 --- a/docker/streamline-src/app/Models/WardTreatment.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2JUmQ5mPmWKA1TEwsQ06RvqfnxcmC4Yd8fv8FlGt/DM8G73V3lMApULLHtUzj7BvtBwnTvaKybsTOEO8+nfKEqClhK9MdOjYnTWOQpkbbGVPcjTgduIX3f2Oyz8HUbY9lnlGDo1jbujUn7QHGJkED7++HnjCH+Fslm+tR5QjbfVQA8ddJTCl2sxOA9gRi8qlyAVa1Kc3Lv3Snb2sNNRRynMYPVoBZhNMqHSt1IVTXx/1pjFrOU7eLm3tgl3qUj0QjivmsPZ7K7JSAAAAEAIAAMeEh2ZcjoeFh4CopObQLQtqMa+LXsBChnFVag08zWi4v3EyYlX0pdyJVhOrSXbb2gyaTtRyvV4EQwfc94F0+oDYuKZpG7iwzeWj74HEf3P9z207953qWQvaNTj21b+lmPfLQCJQg0yYFWZTE9jsYjoxzqBRBX3O2Q9u7igmteSKpxl2nL2dfdqCYALOybeK7XvBy0DjezESQV9tGRph7UDL4b3JNEvps0XqgvRLXeatF/c2kojMEMMwV0xAK4+8HeTKG2Qzm6T8VnOJBhsuRyp61qKSRoMmZS+JGWwjaJYLJxKRZBAD2yM1NZ7wiaw2Y0C6jntYDKMwl7z0W+tV3vPXszKlV0KmdFUU6hlKSLhiXG5FwLBvGx/9J60qIaQhEKKTwyno2Unp/5aDEpZwVGaE6DHj4zhXiMuRWXe6/acqu0BIT9CQqIwTqTd/lOQo/HkY9t5K/pSih/E7okxSm7QIGLOoWYvcM/a4JqOkoswqPI4x8dWZmdNdBZmowXvfT7kUw7wZ3fvzuNa8QIbVYfxi9EibflpLM0ebanCFtZAVFi+YshDZQlmJVBWgbAAQmsXfZaQtm1UdHwK/lGl81Gr8GaEC5woWs0gkR+HETqVjd4G8YBF2bKef6NmuVuSqkrhFE7qKKjpNjhvi5lAgzAkoKzIBTx9BCF0bWP7cL0rnE+874UtIlqhjK5PXBb+72gAAAAA='); diff --git a/docker/streamline-src/app/Models/WardTreatmentDispensation.php b/docker/streamline-src/app/Models/WardTreatmentDispensation.php deleted file mode 100644 index 1576b80e..00000000 --- a/docker/streamline-src/app/Models/WardTreatmentDispensation.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2JUmQ5mPmWKA1TEwsQ06RvqfnxcmC4Yd8fv8FlGt/DM8G73V3lMApULLHtUzj7BvtBwnTvaKybsTOEO8+nfKEqClhK9MdOjYnTWOQpkbbGVPcjTgduIX3f2Oyz8HUbY9lnlGDo1jbujUn7QHGJkED7++HnjCH+Fslm+tR5QjbfVQA8ddJTCl2sxOA9gRi8qlyAVa1Kc3Lv3Snb2sNNRRynMYPVoBZhNMqHSt1IVTXx/1pjFrOU7eLm3tgl3qUj0QjivmsPZ7K7JSAAAAKAIAAAlrmFCB2SoeVV07qmDiMwMX7EHaSwWBPL2tzPeSbHH676uBD7Lx7S2aOQ8bA0q8EDdIa6ebC/Xpvniq+xhkPXiW4Y1zljcl0Syx+ONIweJB8HMHLO2GHRUxJmQVrG/6CckI4BEO7tnbEVYxEL0DHG/bmyQ4MIFtBgLKB7cNmJKgJuJ1mIMMoXxPEdY2sb9PcNCPp1q2ixKIFlkn6Q55d2ciF681FdGh4CET6DukN86/MyybAOickaFdKwE0yroYaOMqyWnWu7wRQD2DNstYM2dt7YUNwCycwPjTS4DZdhC0vwZPcZsyY52JGRa7WcgWLmc3mf806F/qrAFfdOUJjBH8mAgg0T8mJJzr1oGD5u0l/RaWk5BxDn7Fxs59w0z+bw51JsPCXIfmERDynjOjNDyqt5vJWlhqN35W4XuDjMg10daGWTPRUt5urf3Sxaiou+fDZoCPWy8Tj5sA9CbswCfTCpkxBdyB1q26GwSds0OZtIOFmKKAdFDpKv0QrsC0bSO25yp9N9riDWWboMSiQaqb0O1BdKSqwpW48fafvygcKUBAFpKdqwwqz+rwJP+r9CaE+6vGgSMQ4sVgz+ded14DQZweDJH/0G1Vy+0M6bpXa86KUQckS8ywlq0aep1NaLFZc+38xN/4PiMF7gmWzyUSP3UrdDhZxEKRqz7BGIb6VALQOFYIl/uEX46LSZT10YtJHO+HH9haxh8/U3kLAM1Q040iwWF0SwAAAAA='); diff --git a/docker/streamline-src/app/Observers/TriageObserver.php b/docker/streamline-src/app/Observers/TriageObserver.php deleted file mode 100644 index 67cb5fbd..00000000 --- a/docker/streamline-src/app/Observers/TriageObserver.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('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'); diff --git a/docker/streamline-src/app/Providers/AppServiceProvider.php b/docker/streamline-src/app/Providers/AppServiceProvider.php deleted file mode 100755 index 196051a7..00000000 --- a/docker/streamline-src/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2JUmQ5mPmWKA1TEwsQ06RvqfnxcmC4Yd8fv8FlGt/DM8G73V3lMApULLHtUzj7BvtBwnTvaKybsTOEO8+nfKEqClhK9MdOjYnTWOQpkbbGVPcjTgduIX3f2Oyz8HUbY9lnlGDo1jbujUn7QHGJkED7++HnjCH+Fslm+tR5QjbfVQA8ddJTCl2sxOA9gRi8qlyAVa1Kc3Lv3Snb2sNNRRynMYPVoBZhNMqHSt1IVTXx/1pjFrOU7eLm3tgl3qUj0QjivmsPZ7K7JSAAAAoAQAALpEF8cGiiZlnHqRnvk0ENuUDlL6PrfT68gIUm87Jp2nYHSUTROWL5w6H8udUmbrlNozgllNFywR3WqiblzpSqVvOAHSSz8etdCUPDn893Tc0gxpXeyzMSla1ReLWDgcSt0O2RBQ7si8fPvoOp6eENGwbWUhxmbbhDChFvUqIZlXz2HWQkxfXXJynIIeDgMwEyygLP33CVwMvSgTObdWgCOr9Wu4R1G/KHGIojR1k7nRcpv2Nlf8DOBG7SK8e5+L89RdVN5Yr5jGVcL02pH93+VTFevUfF1wq2sayyk6y5+S/Cb19l9xSEsRp0ndB1gAX48aiJ45F4Z/u8Jrd2IUlTEXRPmgl3UHeW9Rm67onWBIIf/PQbk21ENQz3GXlRn5oKVybHTa5Zcf3bJZYnl1v+rMc0YLP1ORGWNP8x7B5QvVCgRt+YjgZbcoTDUhyAbsztJFEojnQJgTR7/FPvp1RzGhpO2WYY28MWKxVbgf9GdsraJUDJsywbTndpL0F8E2l7fHuaUHLHfB/35a2mMZ8Cy1ntsbEpjnGMi5SYnBEeLK8hbExrTPT6m7736w2mhsY0lODHjRLQcDSRKp6kDF1KNHMWki+cUjDBeJHcR+5pYeYz72VNYry9tTO1MnJdqqRWX1ZqID+WKdvXZt2BlD6xy9mB+Ecm3RVT1RCeYTc03pzw8nXzRFayLG0PCDQvl1G2L6IB0epiA4qL+NmWnQCurIT/UlTVgibeWxU6b3zQOLRtkve0DJtOhCDpa6hW/FZplf7GhlUjhWsBKbV9WSkNc6ER0X13likmCWikqmrtTBDFwLaPXVv6fMr8z/gfDc4+7WJYtcUdoHKDi/OhcnJYJCWFi50vY85lnYRz6U2a/un9BZf/ZrFBnSjduCSK72INp3dj4jn7eYN2lAUMpZUqONcXX3JCK0jB9iOPLcHEaWYxQwt5Xm5YU4Y7hpzFdWlamo6Qg7ezyGfh+EqwvH5nAFigBDRWon591jaDvQWf2cBHLLAFBiymJNnVZqvHNmYRZ08MmVPnMbS8KwTByFyCwG8XT8LM0ZfGjWExz/5rzxQ1xMQuI0LZB9vmBMGFOF/av2P084pYqMD846mHNxZp0N/IoGNXuBH67VMqlXpnxefmkVDI9fjRAbmppvnFZoF8DExYhXGPzs2ezX35kDSLzBLnmvf9H7MHBslT8gZUaE43OQyjsLGQ9lyHWp+oKy9W65Q3OU8YNbb/cDdsnAwnuYS4N3DeWWaGEY+M0JY3TprBNsHuRj1mKdd0LoXT+JAFWLL3yP8T9ddMV1dX266oYJWM60Nvz6kmz1/jJUzdXyhqOBqXxbDm7fyY3M61SMgDOIg4C/+IBB11LDiFuC5FypadszdpgeSkdhsr11P0wfqqYJi9Jns5UStYEp/PG6Xz2eogOXIL/P7HxStkG2IBgbbscVt7s1ScSXxJi8RHe0p4cwOEoHCJOr1Ev0+SLvTtpbQGbAHE3q3h9UMOENrKp8Zki8/RDTqwGemXsQmvxDTz7Y7zgDlNI3tqDAb/XM3qb9egNcS/zh94PdYgzOnx1OS0S2cqUSbenghndbeqwIAAAAAA=='); diff --git a/docker/streamline-src/app/Providers/AuthServiceProvider.php b/docker/streamline-src/app/Providers/AuthServiceProvider.php deleted file mode 100755 index 93d495eb..00000000 --- a/docker/streamline-src/app/Providers/AuthServiceProvider.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2JUmQ5mPmWKA1TEwsQ06RvqfnxcmC4Yd8fv8FlGt/DM8G73V3lMApULLHtUzj7BvtBwnTvaKybsTOEO8+nfKEqClhK9MdOjYnTWOQpkbbGVPcjTgduIX3f2Oyz8HUbY9lnlGDo1jbujUn7QHGJkED7++HnjCH+Fslm+tR5QjbfVQA8ddJTCl2sxOA9gRi8qlyAVa1Kc3Lv3Snb2sNNRRynMYPVoBZhNMqHSt1IVTXx/1pjFrOU7eLm3tgl3qUj0QjivmsPZ7K7JSAAAASAIAAJnRaKzMKRkvgKFd27xle+6ZSr2SOlHlMNWyakBEFXnkHIRnGWINENrEPQzX7LFb5VUstLly6yPfKCObAP2zr8+ZpvlQ/aUg11nXj8IE9f/AgtE5crDCMsUW5LE/GkW8iMHkBbQllqUxe++8LQY8ECc5o93NYPAIwS7t50SVFcsV9wLxk6VOTEdgpe4fSVHBBvcC2ezyimU5WgQkSbXYFZ3SCL8/Cp3/3NEpNtWoWNXMOYpmYcqJRf/MHw6b5xtS1FDKbDVXTFHbP6DIWsXyFXRm+RO9NJ9+F/gV+4b4ghnusad7pXpHtXncQuvDiUwHSSi5kgj2g5reVZ9Uo7CejIZzMbQ7dpXgqUPEQ7xk2jVMVc3+GD0Yg2Ws01aP1l7owJMIkC2+ZLtbUx5YtFex6V4A5Qm5ftFNji122FYWxI5NaqErqgBREWUYnH9FgdK3ecJfW9hgMX9erwSTF6XE3QbyKWhnWBXrGmQD6BJhqNmpa+8y5Xkr6p4CisHNObXCeqcbtM5hY5ov1dXj1Oki5w9m2OKWavBuVJuV6vtDBJ6h6eEYLjwsRDj3DMDtCiVLGGcup17qiaeyWb1hAPQPg/kJVA8L8e3wVVzYkFUOjHlmaSlqekz7Tc0VfIgrGVuUpT1Vb7hj+1bQeg4KLJHwiGi2UovphKAafwpmCO1xKXSaFl8xsXNXLKCxDpTdJX4FGyETjNI3pv980gydqX4U7b3S6DqE/ZlCTMU0lvEBwcFQ/UFy04Qze4ec7Izy1JAfLCE+x5jFsn7/AAAAAA=='); diff --git a/docker/streamline-src/app/Providers/BroadcastServiceProvider.php b/docker/streamline-src/app/Providers/BroadcastServiceProvider.php deleted file mode 100755 index 72fb7230..00000000 --- a/docker/streamline-src/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2JUmQ5mPmWKA1TEwsQ06RvqfnxcmC4Yd8fv8FlGt/DM8G73V3lMApULLHtUzj7BvtBwnTvaKybsTOEO8+nfKEqClhK9MdOjYnTWOQpkbbGVPcjTgduIX3f2Oyz8HUbY9lnlGDo1jbujUn7QHGJkED7++HnjCH+Fslm+tR5QjbfVQA8ddJTCl2sxOA9gRi8qlyAVa1Kc3Lv3Snb2sNNRRynMYPVoBZhNMqHSt1IVTXx/1pjFrOU7eLm3tgl3qUj0QjivmsPZ7K7JSAAAAsAIAAIHrv5QlToi7eRphhPX0f3puu2ZU0M6Sp+tG6BJMztnj+A1i68TYeqIX3j+0yVeMeGHG0nwbWdKGFkdjnq9lXsSY936Zann/AKDL7lfexh+tXuukwlejTCRWziOFurKs9vAvw8tPYURbBxvyODLWlPA8mzr+nE/nSKy77ayV2vVHEcq0MH7Gz3ksHYRAnPE3yo/Eq652Mo7MPtF9I4Zul8DYIf6uZvC40B1BbyAupkwYkv3mBbkoGBp6Rk+nP70MoXfBML5QVAlzO1R9r1rMW8ZgTfxTTtc2LswycmydEQs2tfUh5nwWT4vjDnjR7ZAIVHtztSJ/UQ4Gnf8w/keUBmoQBm/6ZTa6OZVrNizQykMGH6V5g+QsRJd199LiV6HlFnrrAIwJBKlYWjMevSVm81YkYoAemya7e45fnCmgMbFlVWEFKsgPkC9VHZNtFQn5Eqyv8IaRGRMAvmF/yNuGmdk01s+vgcPrA7KgmA+6FteCiTMWwFxUFeYMoRKiEKB/Lfjl8E0U2FnC5q/YP/5S+xqdkQcpvbYSnUQxDHyClyanD/QpYdUUnjgPsyXnsIBUwn399/c+yibk5WX/gjTCbD0OWDygNRjcpElrq2Uuj2u8kTxANDBtrs3wrsBTaKOTohSH0lXURGfSPbCdcTz5r8F5jGUPHCiMkioupg2qRN2QdqX+qLmGFy/iJ4WmaaxOZK09e0N0wcjYDZbhjA3g4SgrZOi4uStP9dpKvrtHAiQk0BYz3Vc3H67sKhOb3ISeXqeSQZac4OkxzOUsfR+qDhCRXL7zIVjToOnFAcF9SKWh+vpPhgTvq9FVYC2/E1OndOAA+kkMq6QNaJnauyNXHtquM8Y4WtUPyfm8nz6+rpPP6UN2CxC99s8drVlxAzC/kHn8x909kcyfyokKCdoo41YAAAAA'); diff --git a/docker/streamline-src/app/Providers/EventServiceProvider.php b/docker/streamline-src/app/Providers/EventServiceProvider.php deleted file mode 100755 index 3c49dd6c..00000000 --- a/docker/streamline-src/app/Providers/EventServiceProvider.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2JUmQ5mPmWKA1TEwsQ06RvqfnxcmC4Yd8fv8FlGt/DM8G73V3lMApULLHtUzj7BvtBwnTvaKybsTOEO8+nfKEqClhK9MdOjYnTWOQpkbbGVPcjTgduIX3f2Oyz8HUbY9lnlGDo1jbujUn7QHGJkED7++HnjCH+Fslm+tR5QjbfVQA8ddJTCl2sxOA9gRi8qlyAVa1Kc3Lv3Snb2sNNRRynMYPVoBZhNMqHSt1IVTXx/1pjFrOU7eLm3tgl3qUj0QjivmsPZ7K7JSAAAAAAMAAGwphlcbvgrbBBGywriVd/eyNV8kEdxcgEo96xA9n/9LRqYj4ZNVMFD+ER1PMPHKMG5E1Zf+EIdiiX2hQPtmSgsPP2Z29mL6gaPfcWMjEcSj05oru51acMVEf5u7u1MhxJIg0ib1c3H6z277Gmlv8MkCgzzeFgZ/cAQWzVb1AnSEibLkluOtNBFdZCkp1m3FXyCznMMTDwphKB6eWqNZLv6VxmOp4H24Ma1QhQP/D3hRfIdIesQDObjmEpyTxIk4/CFspCRUBD2oThE3KBMNlR1G9eXnfzCV2PxLCXQ0a8t46NmJVUCd5ek5KPfT+zabQ5MxtyifY8b6EwoGl+vW48ksUb2YVJUOL/iYNDeETcNUfEJObi17HhSGjZbaCAg17VpCLINkBGI6nJuFqWCmR34AYGm/AQR4vO0FcbT/ARo2I5021dJVDh5cb1IX+HayqCC2x2sL4kuXJGkM2m1Bn9knSUZZoKABjElD0MtglAW3zxROKTboQHmP+RefR8CulOuyBAiA+oY9JBeKUsi8GlsmTZY45ocmld0/HXVsBZDtfuDpLoZ1as1KmoAQEHD9qRWqtgNWxMXMrKggamRmdiTPg7HO7w6NdI5sykdAqqTXr1g16+L8/c7CqOsIMp+sPRhGkQ0a9Z0Jw4XvqbSgDtjRpOSP+/bDtxFOlZMebGTPh+Yxwl2ljib8X2A0G0iOwXt6ZEv+hhiGlvycz+MA56j55o5MT8lMQYGJSGCacyDr43aslHwGCv8r8T8OjC46NSEL0/cinV+CvKBTzAqVpgzkiTrhWp2eKNzRAXm9FzIZdnsyJGM46NvgNL4pOUZ03RS0FdDzw6QKZVwPY55OShilvBOqB4lBNc36+WXfl793XBfkX1e6QbTv1Dq3ZbOSnsFnL1ZwQo0GoCH+vohvrIr6VLcLa2uSWDjQ9Kj5ctMsDgrG05bosdfezkz6Ybc66C8Lld6VYHQC5N4bxpYOc8gD5J4t+tnfmdIyfo3CgSjFk3ltLeE0aiCcYd6rrz4kkwAAAAA='); diff --git a/docker/streamline-src/app/Providers/RouteServiceProvider.php b/docker/streamline-src/app/Providers/RouteServiceProvider.php deleted file mode 100755 index cbe46d67..00000000 --- a/docker/streamline-src/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/2JUmQ5mPmWKA1TEwsQ06RvqfnxcmC4Yd8fv8FlGt/DM8G73V3lMApULLHtUzj7BvtBwnTvaKybsTOEO8+nfKEqClhK9MdOjYnTWOQpkbbGVPcjTgduIX3f2Oyz8HUbY9lnlGDo1jbujUn7QHGJkED7++HnjCH+Fslm+tR5QjbfVQA8ddJTCl2sxOA9gRi8qlyAVa1Kc3Lv3Snb2sNNRRynMYPVoBZhNMqHSt1IVTXx/1pjFrOU7eLm3tgl3qUj0QjivmsPZ7K7JSAAAAoAUAABCfqpWr76g+2gVhzo2jD1ZdGeA2dilCFQkFSckgB82OlfOFCsnFTBWEUoUWrIERL7F7AwQt0TglVXixeX0z/fTz2Rk4Q66Q/Z6VV7+GoJBfVFEvcJ8A9QEWWPhXMsFoBIrx6CANW84ajdNjofhugcKdmUm+fEFW0IvFlFuQcilP69F3BCqG58UnX0OCYxiJ9tUIyh2eZ9Xl4d1sR7RlM26o7HXzBBzG71unxbC1FIRYPJOcFvM+qiRlEB/wYWlsnwO+Cp7t7LEENTw7JNYwjy9iBpVmDtXeoR+VoLj+q826QMDiJqsx0JXdw12/SSP93jsnEYUj50QeGqGFrJKkJyKL81oWjHT065WmjLOY5iOrzjZ1vZuY/0x4SNNGXY9G+4hQFbDgpLpIHWhQDZlVDN6Ph533j+FD/MXTvdQTceJv7vYhmAIOlM+Kxawr9b4y8xGt7lpwEL6TH+CDpH+xP1Wyp/Fi5mx20sOf0QqdOqdoIKKLwJQUGaHb3pq+9Ns/E5REB8UWHl9jUMp8ffbbYJkKQg0EeFLhz495BSrA4B0qXnS+7KpA3qwbv32l5nEfqqzsplY/77BetYmTa36rcRyKW7S3c5KJkg1VMSVTLq7Ay+A8qr3B+1S0u0kXUPS+CfOkTlXejuLrIshslNjqAbZjaYIzJ1581Un0a4CCh/ItoX+TJBGXYUxxPQtezbzDmy2Ltpwd7cNOK/waZsskxa2ozpv76aVi1FoacQLqH7c3Nd+xm/x0eFG+L7eNsrtFuxDpHopBY6E77+zK//qD/Tk4Jh3e50G/JOgJVRvEVzIx1zzCbSJnWJ6WQbBneTAdfItb9BQVR9VkMNl0JEuHfVtToosLC5oeuROZ305YJdG/lvghzTKNz91Yt+pcC3tgZwRnAssL+vN3a49x5nlcVhmjjefMqu6cAQSXIh8+zB5yuSzM8T8aYyOyXivUEydEgShh7nGyH9IrKJArxqAAxzIQUcC+vmog1yExi+QEXlZ/CSlAmkWKtl4v0TMDuV60xMUPg9r104khdnk3WMh4Vc4p8FMQ+5970Yy5r/y286KjPCKym2BD3OP356KQWQLoSRXRKJUnwIuAHb7I1EggQGDzJ22L7I7aZdNFgWrHLdG7oTwMdN63RaEghd7iOaWbNW2Btyh34F14B61dUGWLOFoguFjXuprDC8ffsA3yyszirOTOptXCm8MggYQQ2TA4NXb5kieNqrEW68VApoJbhb78T0IXqpNqfUubi0Aib/6y9dEhu9ONEzoRHFAh/MAyZAuH+1pY1EjlvtSfpGwcoCK13ewkoVi2534KvzLHrJ5abgTtwqxkAGdyVVSlMSibS6zVfOqjwkNqm5nGmGGuOS3INQ6DPduwl1xuG6XS5lCFYIp7fGomMjZIMaXd/VzI52zxw+nNuKQhYDC5TBsi/C9GAeIzoPgOthaRkmYiWW00EurYrH9ujmwMI5xdE/eNs2h7mQXPaBeFDcFb8aPs97L9BARL2PXTt8RgfVcr8AjiSimWv9CODS9UaEeYNf4cqNEn+6BFFfgoGnH42SqBEDYOtCDt6moxrFFBCo18+UHOzcvVmwK+h3Vx9ryt6ipE3GpUIl/mhiUXGNCntwhoNf5uwgVCT0Dqni4wodht7mk3mDw2xVqNfznR13mBoF1GrCMcAo3PHViEl2BaYd70irqDwD5NYMWBuZnpZntH6T4edUzq2jgqD70N0KBeT5ORhDvI/XL/b4vK9Qr6L+2S5V27+Zx6eUVPBvIZhfliYBaaijM+L6YshMkUB/JsmIhiibSvbLjG9ATAds/YWUg2xyUqKMSnDXOdJBSwpvaOsLmNtdh46G82Sa9YRlWsG/NnDY2wOxf2Rod1j49supFEFu9jOPOKhwKVZCr6OI+3MZ+uxnyNN5GUX190zJpQTvZREgAAAAA='); diff --git a/docker/streamline-src/app/Services/ReceiptService.php b/docker/streamline-src/app/Services/ReceiptService.php deleted file mode 100644 index 1c1bba9e..00000000 --- a/docker/streamline-src/app/Services/ReceiptService.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/67Si1ByIJvL0RNign5p0t8jOATgMS+G44WO7/HU/eMUXpM4VCzAn/C74ShPqfBNp0gng97Ycc1UrDASo7WsFA8+lM8duTxpb8Rz39l2bC6G+ANqRrqjxAN2+kaqudtQn81QNB60U+nhdBPUaDW455QBBy0Ao2vI0zKQ0TZP3IXwVvZLd7gJ9yW13HjvdcoDwQOFz9fe2GgFBSJrrWSgONSaOyUFZvqQjd4dlWe6N0Tv3CqHmlyLioREFVBEXul0xfyOczzPOJJVSAAAAsAMAACnJOo+jLtAeGyWYbu/CjzQBfrhBy5/OcQFOL28yYUnZeCj7OJH2Zejg4mMk3ZsUd0BEGx3JLVG8y5GV/z0UnC/vCQsbW31kbg0dma2h1d06ZKruEoYUVxXJVwbhXwXrKjNha2wrnrtz4KUNLTlYWyLa/5Tq15aUCPYjiyVrufb6Z2R+F+Io86Q0Kur/Xa4LX243atMk5Yhpc6/RhwsbPcNTbzyfokDmt3cOvuvr1ZnG+zWxQQA1CAi7xMsIytA962arKTQPZlnLtGzqdTBP/WpalGq6reTRN2IPIjlePPtQOUKkTb6O/f0PjjCTNqY82CVRpNQw+k84Lc8+frIp5873AUFE4CDi/JRn+eNeHjy/NahcmzA5PRuGldOPykAacSZyPhqBdOUyTzqisfLcpXCTxvpNBHw5wB5cK8bCiiovETwxQvDg2qJkEoJCGt3c+eH58yWTsOMXW8MPog4egkBNYj2GMa6Ursnffc4KTEYRLiszHueEjg5Ct5+ZHWjQ9G69nCaOohgko2lHUwe/tVMVsKZ8v2Z7oqAG20O0CfZCDZ7I7/oorS3wmN2afiRI2RPseEQohgbcVufS4LkWdyA6t3CMAh+XUr3oHJ2UlOdh5Xcj15fKJrN4vwaO6AaD+gL47EJPTcItyDvQmcqksFeJhaoya7aDJfp70iN7a0pRG+1INhWUzgE92CzQSQxLUbd1c/5aHalfbog073TIfQGEi4vAeaTZ9RVaTVRmdAVoyjriYrl6CdK/hgEbglQ62DORDDpqfNfhS4kJcVH34FvncF96/uf+5zDlxjn0GZ709RMoqPNZuuPtFBpSx385euTX+y9cKgpGyYl7EEH/4l1fPjPhJaLYBOGUF0bfXRa2y2yIyoAUALxUmOP33SM1xEHllXWp7FA0URo4DxCgu1dsRNGAnr5Cmf+Z/9TJhKCTeBwD4E9NG/YwyOo/Soqx0tlRqWFyHP5vMjyGny1t0mJFKSOsq1OL6cSim/13AAUwbOZbrTp0vVOl5Ss5Uns37Fob5HR5MAIarDdCZxn5+3lFiajJ/37rcZejnhjKSnhZ0ekuPmniHRHjLtETDJPkLZXV2y2WljGzU7GnOfloLUCB1XUhMwSxnB9eTF/GgJHSUUB9R7J2K9GUKbuPPLedW/8vDLeAzLhc877Gd47k2tI6pccIRdT8X9vQiWkoHIm12jZU4pc6PeOAV5qHFXWgrB1dajLhU++dLT/l1qnrDOytXCJcG2B4qzrGvIFbD95vAAAAAA=='); diff --git a/docker/streamline-src/app/Services/StreamlineSetupService.php b/docker/streamline-src/app/Services/StreamlineSetupService.php deleted file mode 100644 index 852ccaff..00000000 --- a/docker/streamline-src/app/Services/StreamlineSetupService.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/67Si1ByIJvL0RNign5p0t8jOATgMS+G44WO7/HU/eMUXpM4VCzAn/C74ShPqfBNp0gng97Ycc1UrDASo7WsFA8+lM8duTxpb8Rz39l2bC6G+ANqRrqjxAN2+kaqudtQn81QNB60U+nhdBPUaDW455QBBy0Ao2vI0zKQ0TZP3IXwVvZLd7gJ9yW13HjvdcoDwQOFz9fe2GgFBSJrrWSgONSaOyUFZvqQjd4dlWe6N0Tv3CqHmlyLioREFVBEXul0xfyOczzPOJJVSAAAA2AMAABM4k7dOhmoK/Vk7lT5fd4ZJorenLJkFFMTT9rngDYn72qwKvM3aseq29l4GssxW7s98SLCflm613i4aHbFsYLDfazF7NBxn0jLdN60I9agDltkA63NR/0QWoKavjBMJKpqxTjCokUDOGzgjbdMigS9MnSd5iF8JXcI74eeMpBfw0+Ug5a4TLrjI7DNJVNrzlMal3QUQWsKFUMsME15h+0DWuEe0WY3rb4ZQVR+TSkImLPF+SNpqMUL0gNBEYKJMbPUbkSbtWBKWfF6VtzV1SnBXOcoJ5ZFrlviUIvLr1yy72QsohxCjLD6QhzxeeNNlDCp+BiplHqJdZ+tHuwr6dZ/JENY52+6F8ds6UbiIygNSXGhkNienmhIkty7+iF2xGnmTVRnVVSbY4C11nsIzoPVQkoEAlKxiQVNY+OziSHH/q+/5YDVR829D2pymXT4gxcYOdWO+PYmnJTu7rzqtu+peyswdIK7VjYQZGFn320QfIl6fLkQGZA5oUfLZ/k5fFyVKa4xhkmJ0FNueDNim6dOQImHcSQ31Q3hvMXVlgyqr20oW4OisFukhLHwYoQYlyXEBFQATmK6AR87dx3ang6t57FymBshHhPnf6j9x131AtwY9phtBchymH5a70pDDBLFT3j/OghAz3ZT/YiRoz+T/NHZCrACdpc9kLuKHE6NygCaHDukU4y+2S12ti/nMAM6Cgua8lZYCWS7tQ7zX53yV/iGfcY11Z3GZH0SvZzBFZow9fVzaCx3XFo9uJhwERFMu/jQYOuePNkKVdMyeCet3+O1NMAUx9HoL37Ob529+JtlhUffUeQFVGAI4P7iViRDASM/ZCIsi7ho9Sn5D+kER3BLb6IsCQFmg03rSrLOxTe3vAsA+Ob2RZInycGqy5fxEaMLs3xTBXB40LauSJe+PwPRBSCrc26Dqxx3hMlzV8rTgMsJOhcrqnMIux1CE/3lk5mjNyMz/ke+QnRO2jV8xoS+6+Z65+WhXaJpOCgKd6DY4T2zZodi/bJvnW9d5MeiAj3Xl4OfSsj0iVC1x9AUBBJmdTPMgPR3u1TzOV9jsgRdZ8hUNkAKzk1Rb4h1l2IvBolBG6R2RWjGgYdIASniaEgdso0uE4VSaLl/lnM5FUomXWHxF79+pTrL22xQFav1rmWkbxiUeRsAl9BpMOGS4CU3iVGv+Xd2BtSLND0oZNTFtxSFIDDreFw4EPRFOdo4bHrxzYOocuALFsPbTdX0pIsMLsS3ReDBY4r7N/bWiTfbBsykkRsJQw1q6cp2Tgq1SFAbCuJ1KpUUd7OR3W45xskIrRDTv0AAAAAA='); diff --git a/docker/streamline-src/app/Services/StreamlineSetupServiceInterface.php b/docker/streamline-src/app/Services/StreamlineSetupServiceInterface.php deleted file mode 100644 index 35aa2056..00000000 --- a/docker/streamline-src/app/Services/StreamlineSetupServiceInterface.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/67Si1ByIJvL0RNign5p0t8jOATgMS+G44WO7/HU/eMUXpM4VCzAn/C74ShPqfBNp0gng97Ycc1UrDASo7WsFA8+lM8duTxpb8Rz39l2bC6G+ANqRrqjxAN2+kaqudtQn81QNB60U+nhdBPUaDW455QBBy0Ao2vI0zKQ0TZP3IXwVvZLd7gJ9yW13HjvdcoDwQOFz9fe2GgFBSJrrWSgONSaOyUFZvqQjd4dlWe6N0Tv3CqHmlyLioREFVBEXul0xfyOczzPOJJVSAAAA4AEAAJNNtUFK+Gv0zUQrLhhwcS8CLHHVhSI0U+bTH1rvakJbjJZpSdYJOCUTULdqnqftAxRI2Oh9UwaKK6cURz9/dvqUKNnKMu46X8a5p5yRGLi95syBDSKPjrMVbcp34pkbVcUQp8sKFP7mD3Ss7+uIK91rFqwzd9nvOwBZjMMooWeIDaf6v050L420J66bbWC8dz44Rzl4bV1FEhR/Pcx9PGXqvxfqgNWtD6YTt3Qn+bP5d6p3UrUR7xBj8gJzJQ2OgGZkkDwQ8n7NzSzScL78FFwHU4xgYE9yv4wTzbCB8tDWqpLBUO+6X+J5MK4E2k27gpHY+DqC7/SGmT6ile5fl56pv9Fmmj5hzjiDKnzcVAfGnhIa7bpbWxkYlStoPZw3j4HTQZci2+hbZqR/bJMqYVJOzGJiMlpKitvZvWXEtGQhpIMOzifVu7IhQxBkEp2PLifjDgEqyOr8A/mb3UdYKE5f5MiH2KK0+DBuIdBTWXrIoTRXQW8AnfflEo1XOhxUKzpAt28F9pNC/vMVNEsZ9f7uxMjgzedZ+2CAXzxFJRW8KtyLAIafUrtM8OsBdPIQqdUtEJU0NdFNEed0/R1kCagj2/blfGES2JKhxf+bHfADO/WvBN7s4RJwEBJSBfNBrAAAAAA='); diff --git a/docker/streamline-src/app/Services/UserService.php b/docker/streamline-src/app/Services/UserService.php deleted file mode 100644 index e6dec0b0..00000000 --- a/docker/streamline-src/app/Services/UserService.php +++ /dev/null @@ -1,2 +0,0 @@ -1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="PHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.

    1) Click here to download the required '".$__f0."' loader from the SourceGuardian site
    2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="
    3) Edit ".$__ini." and add 'extension=".$__f0."' directive
    4) Restart the web server";}}$__msg.="";}die($__msg);exit();}}return sg_load('86EF549DC7C503B9AAQAAAAiAAAABMgAAACABAAAAAAAAAD/67Si1ByIJvL0RNign5p0t8jOATgMS+G44WO7/HU/eMUXpM4VCzAn/C74ShPqfBNp0gng97Ycc1UrDASo7WsFA8+lM8duTxpb8Rz39l2bC6G+ANqRrqjxAN2+kaqudtQn81QNB60U+nhdBPUaDW455QBBy0Ao2vI0zKQ0TZP3IXwVvZLd7gJ9yW13HjvdcoDwQOFz9fe2GgFBSJrrWSgONSaOyUFZvqQjd4dlWe6N0Tv3CqHmlyLioREFVBEXul0xfyOczzPOJJVSAAAAqAMAAFAxRaVx+tsJNjkYN6t8/BQWIx9qhG5GGbvb37144vLK58/5LBkl7aARzRcx9JqYwEDtejUi5SmViFebBIWhau3FFC+71ZLE2MlW5g4cOeqiW5fJpEG14MfkNu9KZsBVar/DXq1zterbQrhVu4p+y6nIG4hccZ6wulmoReX4MHGmnQSLC9KNb35jwc4EZYAo9o9dIykx3DHekk3ExaP2DfVTyUNnb3nEPtUjfSFjiKfiVVX2Ar2X65KvZATo7AtX8ZQZp+Hzxd8GWoKb+hZQCY/2PQr4OTMVyg5H7zzyRRQwjSHq72fxqJdWxYme8PrVWYPma8x0uoUXdL76ELPUWOpeui4F6YHVwMywelme+b+CAr1At3XLas5Gu3te1H4Tt3tWG2R8UBKJmaqr/DSC65dS53kYKhVps18Np3N4ZCqVuJLoxXbiF3BfVUVzFsDp+ycDAjXRZwfb1I4pBw53Mjg3k11RC5kTdo/1nf+F/nLfEo4GMvSSkBIthklI26rNTRcNjSdF7h/eQPpQib0chjdbxHjXwLJI/HpOScc6k5u5s3M4Aij3FmXAl2fCebTQ6x0/rwWxx3I171UH2iNUa6sHUB48wwhTDAizzuP5uWRLPlc3QIYILcOYcU+dCPMSyIL2fYiOgQ9Oi5owOwqtWNa0nnBPUZ3YKP8M4PD8W4GjUbP15kz3tdpN+HTWkJBddQEqvwYO9SDPJCLtBd8mb8VIuwdeTnt4PmLMuKExkdjwRB7wEWW3KonmJf00rruIDSLHbqcEkufygdLi+N4THr5Fvg/Lb0tzXmVAkmNo02B0vObrrg1uSttAErfqx8kSPdNovCpqx+88kltxwgK5nEFewsGhjv037qgrZJqUPz1OFfVTtVp7MD4MY4grRxjUkonSw+uey8MWOLQDKP5ahzJ770a5XVfa4WVanwlIWxym6SkNBqznDyCGYUfSEyUZ1JcClgGSXNuihOoEjm7TUx86Nh/FbLMdrWcVL5qJmQQAqZhqqNdk2JFRmI6lYPcqoGMPSow0CRX9XLy5nQSNopGTWGzReXWrDmrdSvYJJYbMctE16pcLi99O2iz4P1UyfhqP/kb5lgiu1q8jWJl57VINfZ6JzL1kcEi186e9JCmFJiE4dqbRfUQjUtDvPnGosy2VxQLBBTvx9duMSXPumC9cAnaYwdOxdM4dQS15OrYfkPkN+TpEF6Mt0/2I/W3UluCy/8HCuB0fyS6/01+mkuhKu2vZ+JUp2wAAAAA='); diff --git a/docker/streamline-src/composer.json b/docker/streamline-src/composer.json deleted file mode 100755 index 4c7b9160..00000000 --- a/docker/streamline-src/composer.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "name": "laravel/laravel", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "type": "project", - "require": { - "php": "^8.1", - "ext-json": "*", - "africastalking/africastalking": "^3.0", - "barryvdh/laravel-dompdf": "^2.2", - "barryvdh/laravel-snappy": "^1.0.1", - "doctrine/dbal": "^3.0", - "fx3costa/laravelchartjs": "^3.0", - "guzzlehttp/guzzle": "^7.5", - "h4cc/wkhtmltoimage-amd64": "0.12.x", - "h4cc/wkhtmltopdf-amd64": "0.12.x", - "laracasts/flash": "^3.2", - "laravel/framework": "^10.0", - "laravel/helpers": "^1.5", - "laravel/tinker": "^2.0", - "laravel/ui": "^4.2.1", - "laravelcollective/html": "^6.2", - "milon/barcode": "^10.0", - "nwidart/laravel-modules": "^10.0", - "owen-it/laravel-auditing": "^13.5", - "spatie/laravel-permission": "^5.10.0" - }, - "require-dev": { - "fakerphp/faker": "^1.19", - "filp/whoops": "~2.0", - "larastan/larastan": "^2.0", - "mockery/mockery": "^1.4.4", - "phpstan/phpstan": "^1.11", - "phpunit/phpunit": "^10.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "Streamline\\": "app/", - "Modules\\": "Modules/" - }, - "classmap": [ - "database/seeders", - "database/factories" - ], - "files": [ - "app/Http/Helpers/Functions.php", - "app/Http/Helpers/Finance.php" - ] - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-root-package-install": [ - "php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "php artisan key:generate" - ], - "post-install-cmd": [ - "Illuminate\\Foundation\\ComposerScripts::postInstall" - ], - "post-update-cmd": [ - "Illuminate\\Foundation\\ComposerScripts::postUpdate" - ], - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover" - ], - "phpstan": [ - "vendor/bin/phpstan analyse -c phpstan.neon" - ] - }, - "config": { - "preferred-install": "dist", - "sort-packages": true, - "optimize-autoloader": true, - "allow-plugins": { - "kylekatarnls/update-helper": false - } - }, - "extra": { - "laravel": { - "dont-discover": [ - "laravel/dusk" - ] - } - } -} diff --git a/docker/streamline-src/composer.lock b/docker/streamline-src/composer.lock deleted file mode 100644 index 32be5008..00000000 --- a/docker/streamline-src/composer.lock +++ /dev/null @@ -1,9394 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "69a41de4ce3c76c7865a7de0eec12ccc", - "packages": [ - { - "name": "africastalking/africastalking", - "version": "v3.0.2", - "source": { - "type": "git", - "url": "https://github.com/AfricasTalkingLtd/africastalking-php.git", - "reference": "8345423ee70b07b36cedcce61c85c9bc679e3666" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/AfricasTalkingLtd/africastalking-php/zipball/8345423ee70b07b36cedcce61c85c9bc679e3666", - "reference": "8345423ee70b07b36cedcce61c85c9bc679e3666", - "shasum": "" - }, - "require": { - "guzzlehttp/guzzle": "^6.0 || ^7.0", - "php": ">=7.1" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "autoload": { - "psr-4": { - "AfricasTalking\\SDK\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Africas's Talking", - "email": "support@africastalking.com", - "homepage": "https://www.africastalking.com" - } - ], - "description": "Official Africa's Talking PHP SDK", - "homepage": "http://github.com/AfricasTalkingLtd/africastalking-php", - "keywords": [ - "Africastalking", - "airtime", - "api", - "sms", - "text message", - "ussd", - "voice" - ], - "support": { - "issues": "https://github.com/AfricasTalkingLtd/africastalking-php/issues", - "source": "https://github.com/AfricasTalkingLtd/africastalking-php/tree/v3.0.2" - }, - "time": "2024-03-07T12:27:18+00:00" - }, - { - "name": "barryvdh/laravel-dompdf", - "version": "v2.2.0", - "source": { - "type": "git", - "url": "https://github.com/barryvdh/laravel-dompdf.git", - "reference": "c96f90c97666cebec154ca1ffb67afed372114d8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/c96f90c97666cebec154ca1ffb67afed372114d8", - "reference": "c96f90c97666cebec154ca1ffb67afed372114d8", - "shasum": "" - }, - "require": { - "dompdf/dompdf": "^2.0.7", - "illuminate/support": "^6|^7|^8|^9|^10|^11", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "larastan/larastan": "^1.0|^2.7.0", - "orchestra/testbench": "^4|^5|^6|^7|^8|^9", - "phpro/grumphp": "^1 || ^2.5", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "laravel": { - "aliases": { - "PDF": "Barryvdh\\DomPDF\\Facade\\Pdf", - "Pdf": "Barryvdh\\DomPDF\\Facade\\Pdf" - }, - "providers": [ - "Barryvdh\\DomPDF\\ServiceProvider" - ] - }, - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "psr-4": { - "Barryvdh\\DomPDF\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "A DOMPDF Wrapper for Laravel", - "keywords": [ - "dompdf", - "laravel", - "pdf" - ], - "support": { - "issues": "https://github.com/barryvdh/laravel-dompdf/issues", - "source": "https://github.com/barryvdh/laravel-dompdf/tree/v2.2.0" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2024-04-25T13:16:04+00:00" - }, - { - "name": "barryvdh/laravel-snappy", - "version": "v1.0.3", - "source": { - "type": "git", - "url": "https://github.com/barryvdh/laravel-snappy.git", - "reference": "716dcb6db24de4ce8e6ae5941cfab152af337ea0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-snappy/zipball/716dcb6db24de4ce8e6ae5941cfab152af337ea0", - "reference": "716dcb6db24de4ce8e6ae5941cfab152af337ea0", - "shasum": "" - }, - "require": { - "illuminate/filesystem": "^9|^10|^11.0", - "illuminate/support": "^9|^10|^11.0", - "knplabs/knp-snappy": "^1.4.4", - "php": ">=7.2" - }, - "require-dev": { - "orchestra/testbench": "^7|^8|^9.0" - }, - "type": "library", - "extra": { - "laravel": { - "aliases": { - "PDF": "Barryvdh\\Snappy\\Facades\\SnappyPdf", - "SnappyImage": "Barryvdh\\Snappy\\Facades\\SnappyImage" - }, - "providers": [ - "Barryvdh\\Snappy\\ServiceProvider" - ] - }, - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "psr-4": { - "Barryvdh\\Snappy\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Snappy PDF/Image for Laravel", - "keywords": [ - "image", - "laravel", - "pdf", - "snappy", - "wkhtmltoimage", - "wkhtmltopdf" - ], - "support": { - "issues": "https://github.com/barryvdh/laravel-snappy/issues", - "source": "https://github.com/barryvdh/laravel-snappy/tree/v1.0.3" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2024-03-09T19:20:39+00:00" - }, - { - "name": "brick/math", - "version": "0.12.1", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "f510c0a40911935b77b86859eb5223d58d660df1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/f510c0a40911935b77b86859eb5223d58d660df1", - "reference": "f510c0a40911935b77b86859eb5223d58d660df1", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^10.1", - "vimeo/psalm": "5.16.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "bignumber", - "brick", - "decimal", - "integer", - "math", - "mathematics", - "rational" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.12.1" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - } - ], - "time": "2023-11-29T23:19:16+00:00" - }, - { - "name": "carbonphp/carbon-doctrine-types", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", - "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", - "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", - "shasum": "" - }, - "require": { - "php": "^7.4 || ^8.0" - }, - "conflict": { - "doctrine/dbal": "<3.7.0 || >=4.0.0" - }, - "require-dev": { - "doctrine/dbal": "^3.7.0", - "nesbot/carbon": "^2.71.0 || ^3.0.0", - "phpunit/phpunit": "^10.3" - }, - "type": "library", - "autoload": { - "psr-4": { - "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "KyleKatarn", - "email": "kylekatarnls@gmail.com" - } - ], - "description": "Types to use Carbon in Doctrine", - "keywords": [ - "carbon", - "date", - "datetime", - "doctrine", - "time" - ], - "support": { - "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", - "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/2.1.0" - }, - "funding": [ - { - "url": "https://github.com/kylekatarnls", - "type": "github" - }, - { - "url": "https://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2023-12-11T17:09:12+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.3", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/a23a2bf4f31d3518f3ecb38660c95715dfead60f", - "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.42", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", - "scrutinizer/ocular": "1.6.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Dflydev\\DotAccessData\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Dragonfly Development Inc.", - "email": "info@dflydev.com", - "homepage": "http://dflydev.com" - }, - { - "name": "Beau Simensen", - "email": "beau@dflydev.com", - "homepage": "http://beausimensen.com" - }, - { - "name": "Carlos Frutos", - "email": "carlos@kiwing.it", - "homepage": "https://github.com/cfrutos" - }, - { - "name": "Colin O'Dell", - "email": "colinodell@gmail.com", - "homepage": "https://www.colinodell.com" - } - ], - "description": "Given a deep data structure, access data by dot notation.", - "homepage": "https://github.com/dflydev/dflydev-dot-access-data", - "keywords": [ - "access", - "data", - "dot", - "notation" - ], - "support": { - "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", - "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.3" - }, - "time": "2024-07-08T12:26:09+00:00" - }, - { - "name": "doctrine/cache", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/cache.git", - "reference": "1ca8f21980e770095a31456042471a57bc4c68fb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb", - "reference": "1ca8f21980e770095a31456042471a57bc4c68fb", - "shasum": "" - }, - "require": { - "php": "~7.1 || ^8.0" - }, - "conflict": { - "doctrine/common": ">2.2,<2.4" - }, - "require-dev": { - "cache/integration-tests": "dev-master", - "doctrine/coding-standard": "^9", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psr/cache": "^1.0 || ^2.0 || ^3.0", - "symfony/cache": "^4.4 || ^5.4 || ^6", - "symfony/var-exporter": "^4.4 || ^5.4 || ^6" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", - "homepage": "https://www.doctrine-project.org/projects/cache.html", - "keywords": [ - "abstraction", - "apcu", - "cache", - "caching", - "couchdb", - "memcached", - "php", - "redis", - "xcache" - ], - "support": { - "issues": "https://github.com/doctrine/cache/issues", - "source": "https://github.com/doctrine/cache/tree/2.2.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache", - "type": "tidelift" - } - ], - "time": "2022-05-20T20:07:39+00:00" - }, - { - "name": "doctrine/dbal", - "version": "3.9.3", - "source": { - "type": "git", - "url": "https://github.com/doctrine/dbal.git", - "reference": "61446f07fcb522414d6cfd8b1c3e5f9e18c579ba" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/61446f07fcb522414d6cfd8b1c3e5f9e18c579ba", - "reference": "61446f07fcb522414d6cfd8b1c3e5f9e18c579ba", - "shasum": "" - }, - "require": { - "composer-runtime-api": "^2", - "doctrine/cache": "^1.11|^2.0", - "doctrine/deprecations": "^0.5.3|^1", - "doctrine/event-manager": "^1|^2", - "php": "^7.4 || ^8.0", - "psr/cache": "^1|^2|^3", - "psr/log": "^1|^2|^3" - }, - "require-dev": { - "doctrine/coding-standard": "12.0.0", - "fig/log-test": "^1", - "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "1.12.6", - "phpstan/phpstan-strict-rules": "^1.6", - "phpunit/phpunit": "9.6.20", - "psalm/plugin-phpunit": "0.18.4", - "slevomat/coding-standard": "8.13.1", - "squizlabs/php_codesniffer": "3.10.2", - "symfony/cache": "^5.4|^6.0|^7.0", - "symfony/console": "^4.4|^5.4|^6.0|^7.0", - "vimeo/psalm": "4.30.0" - }, - "suggest": { - "symfony/console": "For helpful console commands such as SQL execution and import of files." - }, - "bin": [ - "bin/doctrine-dbal" - ], - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\DBAL\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - } - ], - "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", - "homepage": "https://www.doctrine-project.org/projects/dbal.html", - "keywords": [ - "abstraction", - "database", - "db2", - "dbal", - "mariadb", - "mssql", - "mysql", - "oci8", - "oracle", - "pdo", - "pgsql", - "postgresql", - "queryobject", - "sasql", - "sql", - "sqlite", - "sqlserver", - "sqlsrv" - ], - "support": { - "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.9.3" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal", - "type": "tidelift" - } - ], - "time": "2024-10-10T17:56:43+00:00" - }, - { - "name": "doctrine/deprecations", - "version": "1.1.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/deprecations.git", - "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/31610dbb31faa98e6b5447b62340826f54fbc4e9", - "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9 || ^12", - "phpstan/phpstan": "1.4.10 || 2.0.3", - "phpstan/phpstan-phpunit": "^1.0 || ^2", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psr/log": "^1 || ^2 || ^3" - }, - "suggest": { - "psr/log": "Allows logging deprecations via PSR-3 logger implementation" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Deprecations\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", - "homepage": "https://www.doctrine-project.org/", - "support": { - "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.4" - }, - "time": "2024-12-07T21:18:45+00:00" - }, - { - "name": "doctrine/event-manager", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/event-manager.git", - "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/b680156fa328f1dfd874fd48c7026c41570b9c6e", - "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "conflict": { - "doctrine/common": "<2.9" - }, - "require-dev": { - "doctrine/coding-standard": "^12", - "phpstan/phpstan": "^1.8.8", - "phpunit/phpunit": "^10.5", - "vimeo/psalm": "^5.24" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", - "homepage": "https://www.doctrine-project.org/projects/event-manager.html", - "keywords": [ - "event", - "event dispatcher", - "event manager", - "event system", - "events" - ], - "support": { - "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/2.0.1" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager", - "type": "tidelift" - } - ], - "time": "2024-05-22T20:47:39+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.10", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", - "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^11.0", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.3", - "phpunit/phpunit": "^8.5 || ^9.5", - "vimeo/psalm": "^4.25 || ^5.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", - "homepage": "https://www.doctrine-project.org/projects/inflector.html", - "keywords": [ - "inflection", - "inflector", - "lowercase", - "manipulation", - "php", - "plural", - "singular", - "strings", - "uppercase", - "words" - ], - "support": { - "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.10" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", - "type": "tidelift" - } - ], - "time": "2024-02-18T20:23:39+00:00" - }, - { - "name": "doctrine/lexer", - "version": "3.0.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", - "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "require-dev": { - "doctrine/coding-standard": "^12", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^10.5", - "psalm/plugin-phpunit": "^0.18.3", - "vimeo/psalm": "^5.21" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "https://www.doctrine-project.org/projects/lexer.html", - "keywords": [ - "annotations", - "docblock", - "lexer", - "parser", - "php" - ], - "support": { - "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/3.0.1" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", - "type": "tidelift" - } - ], - "time": "2024-02-05T11:56:58+00:00" - }, - { - "name": "dompdf/dompdf", - "version": "v2.0.8", - "source": { - "type": "git", - "url": "https://github.com/dompdf/dompdf.git", - "reference": "c20247574601700e1f7c8dab39310fca1964dc52" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dompdf/dompdf/zipball/c20247574601700e1f7c8dab39310fca1964dc52", - "reference": "c20247574601700e1f7c8dab39310fca1964dc52", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-mbstring": "*", - "masterminds/html5": "^2.0", - "phenx/php-font-lib": ">=0.5.4 <1.0.0", - "phenx/php-svg-lib": ">=0.5.2 <1.0.0", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "ext-json": "*", - "ext-zip": "*", - "mockery/mockery": "^1.3", - "phpunit/phpunit": "^7.5 || ^8 || ^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "suggest": { - "ext-gd": "Needed to process images", - "ext-gmagick": "Improves image processing performance", - "ext-imagick": "Improves image processing performance", - "ext-zlib": "Needed for pdf stream compression" - }, - "type": "library", - "autoload": { - "psr-4": { - "Dompdf\\": "src/" - }, - "classmap": [ - "lib/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1" - ], - "authors": [ - { - "name": "The Dompdf Community", - "homepage": "https://github.com/dompdf/dompdf/blob/master/AUTHORS.md" - } - ], - "description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter", - "homepage": "https://github.com/dompdf/dompdf", - "support": { - "issues": "https://github.com/dompdf/dompdf/issues", - "source": "https://github.com/dompdf/dompdf/tree/v2.0.8" - }, - "time": "2024-04-29T13:06:17+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.4.0", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "8c784d071debd117328803d86b2097615b457500" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/8c784d071debd117328803d86b2097615b457500", - "reference": "8c784d071debd117328803d86b2097615b457500", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "webmozart/assert": "^1.0" - }, - "replace": { - "mtdowling/cron-expression": "^1.0" - }, - "require-dev": { - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^7.0|^8.0|^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Cron\\": "src/Cron/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Chris Tankersley", - "email": "chris@ctankersley.com", - "homepage": "https://github.com/dragonmantank" - } - ], - "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", - "keywords": [ - "cron", - "schedule" - ], - "support": { - "issues": "https://github.com/dragonmantank/cron-expression/issues", - "source": "https://github.com/dragonmantank/cron-expression/tree/v3.4.0" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2024-10-09T13:47:03+00:00" - }, - { - "name": "egulias/email-validator", - "version": "4.0.3", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "b115554301161fa21467629f1e1391c1936de517" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/b115554301161fa21467629f1e1391c1936de517", - "reference": "b115554301161fa21467629f1e1391c1936de517", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^2.0 || ^3.0", - "php": ">=8.1", - "symfony/polyfill-intl-idn": "^1.26" - }, - "require-dev": { - "phpunit/phpunit": "^10.2", - "vimeo/psalm": "^5.12" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Egulias\\EmailValidator\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Eduardo Gulias Davis" - } - ], - "description": "A library for validating emails against several RFCs", - "homepage": "https://github.com/egulias/EmailValidator", - "keywords": [ - "email", - "emailvalidation", - "emailvalidator", - "validation", - "validator" - ], - "support": { - "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/4.0.3" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2024-12-27T00:36:43+00:00" - }, - { - "name": "fruitcake/php-cors", - "version": "v1.3.0", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/php-cors.git", - "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/3d158f36e7875e2f040f37bc0573956240a5a38b", - "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b", - "shasum": "" - }, - "require": { - "php": "^7.4|^8.0", - "symfony/http-foundation": "^4.4|^5.4|^6|^7" - }, - "require-dev": { - "phpstan/phpstan": "^1.4", - "phpunit/phpunit": "^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barryvdh", - "email": "barryvdh@gmail.com" - } - ], - "description": "Cross-origin resource sharing library for the Symfony HttpFoundation", - "homepage": "https://github.com/fruitcake/php-cors", - "keywords": [ - "cors", - "laravel", - "symfony" - ], - "support": { - "issues": "https://github.com/fruitcake/php-cors/issues", - "source": "https://github.com/fruitcake/php-cors/tree/v1.3.0" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2023-10-12T05:21:21+00:00" - }, - { - "name": "fx3costa/laravelchartjs", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/fxcosta/laravel-chartjs.git", - "reference": "255154a4a6b57fb146eba4fdedcef4d1fe075e68" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fxcosta/laravel-chartjs/zipball/255154a4a6b57fb146eba4fdedcef4d1fe075e68", - "reference": "255154a4a6b57fb146eba4fdedcef4d1fe075e68", - "shasum": "" - }, - "require": { - "illuminate/support": "^5.1|^6.0|^7.0|^8.0|^9.0|^10.0", - "php": ">=5.6.4" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Fx3costa\\LaravelChartJs\\Providers\\ChartjsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fx3costa\\LaravelChartJs\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Felix", - "email": "fx3costa@gmail.com" - } - ], - "description": "Simple package to facilitate and automate the use of charts in Laravel 5.x using Chartjs v2 library", - "keywords": [ - "chart", - "chartjs", - "fx3costa", - "graphics", - "laravel5", - "reports" - ], - "support": { - "issues": "https://github.com/fxcosta/laravel-chartjs/issues", - "source": "https://github.com/fxcosta/laravel-chartjs/tree/3.0.0" - }, - "time": "2023-02-23T12:23:49+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.1.3", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "3ba905c11371512af9d9bdd27d99b782216b6945" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/3ba905c11371512af9d9bdd27d99b782216b6945", - "reference": "3ba905c11371512af9d9bdd27d99b782216b6945", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.3" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" - }, - "type": "library", - "autoload": { - "psr-4": { - "GrahamCampbell\\ResultType\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - } - ], - "description": "An Implementation Of The Result Type", - "keywords": [ - "Graham Campbell", - "GrahamCampbell", - "Result Type", - "Result-Type", - "result" - ], - "support": { - "issues": "https://github.com/GrahamCampbell/Result-Type/issues", - "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.3" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2024-07-20T21:45:45+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.9.2", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "d281ed313b989f213357e3be1a179f02196ac99b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/d281ed313b989f213357e3be1a179f02196ac99b", - "reference": "d281ed313b989f213357e3be1a179f02196ac99b", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5.3 || ^2.0.3", - "guzzlehttp/psr7": "^2.7.0", - "php": "^7.2.5 || ^8.0", - "psr/http-client": "^1.0", - "symfony/deprecation-contracts": "^2.2 || ^3.0" - }, - "provide": { - "psr/http-client-implementation": "1.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "ext-curl": "*", - "guzzle/client-integration-tests": "3.0.2", - "php-http/message-factory": "^1.1", - "phpunit/phpunit": "^8.5.39 || ^9.6.20", - "psr/log": "^1.1 || ^2.0 || ^3.0" - }, - "suggest": { - "ext-curl": "Required for CURL handler support", - "ext-intl": "Required for Internationalized Domain Name (IDN) support", - "psr/log": "Required for using the Log middleware" - }, - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "GuzzleHttp\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Jeremy Lindblom", - "email": "jeremeamia@gmail.com", - "homepage": "https://github.com/jeremeamia" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - } - ], - "description": "Guzzle is a PHP HTTP client library", - "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "psr-18", - "psr-7", - "rest", - "web service" - ], - "support": { - "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.9.2" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", - "type": "tidelift" - } - ], - "time": "2024-07-24T11:22:20+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/f9c436286ab2892c7db7be8c8da4ef61ccf7b455", - "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.39 || ^9.6.20" - }, - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - } - ], - "description": "Guzzle promises library", - "keywords": [ - "promise" - ], - "support": { - "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2024-10-17T10:06:22+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.7.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/a70f5c95fb43bc83f07c9c948baa0dc1829bf201", - "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.1 || ^2.0", - "ralouphie/getallheaders": "^3.0" - }, - "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "http-interop/http-factory-tests": "0.9.0", - "phpunit/phpunit": "^8.5.39 || ^9.6.20" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://sagikazarmark.hu" - } - ], - "description": "PSR-7 message implementation that also provides common utility methods", - "keywords": [ - "http", - "message", - "psr-7", - "request", - "response", - "stream", - "uri", - "url" - ], - "support": { - "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.7.0" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", - "type": "tidelift" - } - ], - "time": "2024-07-18T11:15:46+00:00" - }, - { - "name": "guzzlehttp/uri-template", - "version": "v1.0.3", - "source": { - "type": "git", - "url": "https://github.com/guzzle/uri-template.git", - "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/uri-template/zipball/ecea8feef63bd4fef1f037ecb288386999ecc11c", - "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "symfony/polyfill-php80": "^1.24" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.36 || ^9.6.15", - "uri-template/tests": "1.0.0" - }, - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\UriTemplate\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - } - ], - "description": "A polyfill class for uri_template of PHP", - "keywords": [ - "guzzlehttp", - "uri-template" - ], - "support": { - "issues": "https://github.com/guzzle/uri-template/issues", - "source": "https://github.com/guzzle/uri-template/tree/v1.0.3" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/uri-template", - "type": "tidelift" - } - ], - "time": "2023-12-03T19:50:20+00:00" - }, - { - "name": "h4cc/wkhtmltoimage-amd64", - "version": "0.12.4", - "source": { - "type": "git", - "url": "https://github.com/h4cc/wkhtmltoimage-amd64.git", - "reference": "c4e33f635207af89a704205b8902fb5715ca88be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/h4cc/wkhtmltoimage-amd64/zipball/c4e33f635207af89a704205b8902fb5715ca88be", - "reference": "c4e33f635207af89a704205b8902fb5715ca88be", - "shasum": "" - }, - "bin": [ - "bin/wkhtmltoimage-amd64" - ], - "type": "library", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL Version 3" - ], - "authors": [ - { - "name": "Julius Beckmann", - "email": "github@h4cc.de" - } - ], - "description": "Convert html to image using webkit (qtwebkit). Static linked linux binary for amd64 systems.", - "homepage": "http://wkhtmltopdf.org/", - "keywords": [ - "binary", - "convert", - "image", - "snapshot", - "thumbnail", - "wkhtmltoimage" - ], - "support": { - "issues": "https://github.com/h4cc/wkhtmltoimage-amd64/issues", - "source": "https://github.com/h4cc/wkhtmltoimage-amd64/tree/master" - }, - "time": "2018-01-15T07:23:40+00:00" - }, - { - "name": "h4cc/wkhtmltopdf-amd64", - "version": "0.12.4", - "source": { - "type": "git", - "url": "https://github.com/h4cc/wkhtmltopdf-amd64.git", - "reference": "4e2ab2d032a5d7fbe2a741de8b10b8989523c95b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/h4cc/wkhtmltopdf-amd64/zipball/4e2ab2d032a5d7fbe2a741de8b10b8989523c95b", - "reference": "4e2ab2d032a5d7fbe2a741de8b10b8989523c95b", - "shasum": "" - }, - "bin": [ - "bin/wkhtmltopdf-amd64" - ], - "type": "library", - "autoload": { - "psr-4": { - "h4cc\\WKHTMLToPDF\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL Version 3" - ], - "authors": [ - { - "name": "Julius Beckmann", - "email": "github@h4cc.de" - } - ], - "description": "Convert html to pdf using webkit (qtwebkit). Static linked linux binary for amd64 systems.", - "homepage": "http://wkhtmltopdf.org/", - "keywords": [ - "binary", - "convert", - "pdf", - "snapshot", - "thumbnail", - "wkhtmltopdf" - ], - "support": { - "issues": "https://github.com/h4cc/wkhtmltopdf-amd64/issues", - "source": "https://github.com/h4cc/wkhtmltopdf-amd64/tree/master" - }, - "time": "2018-01-15T06:57:33+00:00" - }, - { - "name": "knplabs/knp-snappy", - "version": "v1.5.1", - "source": { - "type": "git", - "url": "https://github.com/KnpLabs/snappy.git", - "reference": "3dd138e9e47de91cd2e056c5e6e1a0dd72547ee7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/KnpLabs/snappy/zipball/3dd138e9e47de91cd2e056c5e6e1a0dd72547ee7", - "reference": "3dd138e9e47de91cd2e056c5e6e1a0dd72547ee7", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/log": "^2.0||^3.0", - "symfony/process": "^5.0||^6.0||^7.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.0", - "pedrotroller/php-cs-custom-fixer": "^2.19", - "phpstan/phpstan": "^1.0.0", - "phpstan/phpstan-phpunit": "^1.0.0", - "phpunit/phpunit": "^8.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Knp\\Snappy\\": "src/Knp/Snappy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "KNP Labs Team", - "homepage": "http://knplabs.com" - }, - { - "name": "Symfony Community", - "homepage": "http://github.com/KnpLabs/snappy/contributors" - } - ], - "description": "PHP library allowing thumbnail, snapshot or PDF generation from a url or a html page. Wrapper for wkhtmltopdf/wkhtmltoimage.", - "homepage": "http://github.com/KnpLabs/snappy", - "keywords": [ - "knp", - "knplabs", - "pdf", - "snapshot", - "thumbnail", - "wkhtmltopdf" - ], - "support": { - "issues": "https://github.com/KnpLabs/snappy/issues", - "source": "https://github.com/KnpLabs/snappy/tree/v1.5.1" - }, - "time": "2025-01-06T16:53:26+00:00" - }, - { - "name": "laracasts/flash", - "version": "3.2.3", - "source": { - "type": "git", - "url": "https://github.com/laracasts/flash.git", - "reference": "c2c4be1132f1bec3a689e84417a1c5787e6c71fd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laracasts/flash/zipball/c2c4be1132f1bec3a689e84417a1c5787e6c71fd", - "reference": "c2c4be1132f1bec3a689e84417a1c5787e6c71fd", - "shasum": "" - }, - "require": { - "illuminate/support": "~5.0|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", - "php": ">=5.4.0" - }, - "require-dev": { - "mockery/mockery": "dev-master", - "phpunit/phpunit": "^6.1|^9.5.10|^10.5" - }, - "type": "library", - "extra": { - "laravel": { - "aliases": { - "Flash": "Laracasts\\Flash\\Flash" - }, - "providers": [ - "Laracasts\\Flash\\FlashServiceProvider" - ] - } - }, - "autoload": { - "files": [ - "src/Laracasts/Flash/functions.php" - ], - "psr-0": { - "Laracasts\\Flash": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jeffrey Way", - "email": "jeffrey@laracasts.com" - } - ], - "description": "Easy flash notifications", - "support": { - "source": "https://github.com/laracasts/flash/tree/3.2.3" - }, - "time": "2024-03-03T16:51:25+00:00" - }, - { - "name": "laravel/framework", - "version": "v10.48.25", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "f132b23b13909cc22c615c01b0c5640541c3da0c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/f132b23b13909cc22c615c01b0c5640541c3da0c", - "reference": "f132b23b13909cc22c615c01b0c5640541c3da0c", - "shasum": "" - }, - "require": { - "brick/math": "^0.9.3|^0.10.2|^0.11|^0.12", - "composer-runtime-api": "^2.2", - "doctrine/inflector": "^2.0.5", - "dragonmantank/cron-expression": "^3.3.2", - "egulias/email-validator": "^3.2.1|^4.0", - "ext-ctype": "*", - "ext-filter": "*", - "ext-hash": "*", - "ext-mbstring": "*", - "ext-openssl": "*", - "ext-session": "*", - "ext-tokenizer": "*", - "fruitcake/php-cors": "^1.2", - "guzzlehttp/uri-template": "^1.0", - "laravel/prompts": "^0.1.9", - "laravel/serializable-closure": "^1.3", - "league/commonmark": "^2.2.1", - "league/flysystem": "^3.8.0", - "monolog/monolog": "^3.0", - "nesbot/carbon": "^2.67", - "nunomaduro/termwind": "^1.13", - "php": "^8.1", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.7", - "symfony/console": "^6.2", - "symfony/error-handler": "^6.2", - "symfony/finder": "^6.2", - "symfony/http-foundation": "^6.4", - "symfony/http-kernel": "^6.2", - "symfony/mailer": "^6.2", - "symfony/mime": "^6.2", - "symfony/process": "^6.2", - "symfony/routing": "^6.2", - "symfony/uid": "^6.2", - "symfony/var-dumper": "^6.2", - "tijsverkoyen/css-to-inline-styles": "^2.2.5", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "carbonphp/carbon-doctrine-types": ">=3.0", - "doctrine/dbal": ">=4.0", - "mockery/mockery": "1.6.8", - "phpunit/phpunit": ">=11.0.0", - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/process": "self.version", - "illuminate/queue": "self.version", - "illuminate/redis": "self.version", - "illuminate/routing": "self.version", - "illuminate/session": "self.version", - "illuminate/support": "self.version", - "illuminate/testing": "self.version", - "illuminate/translation": "self.version", - "illuminate/validation": "self.version", - "illuminate/view": "self.version" - }, - "require-dev": { - "ably/ably-php": "^1.0", - "aws/aws-sdk-php": "^3.235.5", - "doctrine/dbal": "^3.5.1", - "ext-gmp": "*", - "fakerphp/faker": "^1.21", - "guzzlehttp/guzzle": "^7.5", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-path-prefixing": "^3.3", - "league/flysystem-read-only": "^3.3", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.5.1", - "nyholm/psr7": "^1.2", - "orchestra/testbench-core": "^8.23.4", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "~1.11.11", - "phpunit/phpunit": "^10.0.7", - "predis/predis": "^2.0.2", - "symfony/cache": "^6.2", - "symfony/http-client": "^6.2.4", - "symfony/psr-http-message-bridge": "^2.0" - }, - "suggest": { - "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", - "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.235.5).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^3.5.1).", - "ext-apcu": "Required to use the APC cache driver.", - "ext-fileinfo": "Required to use the Filesystem class.", - "ext-ftp": "Required to use the Flysystem FTP driver.", - "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", - "ext-memcached": "Required to use the memcache cache driver.", - "ext-pcntl": "Required to use all features of the queue worker and console signal trapping.", - "ext-pdo": "Required to use all database features.", - "ext-posix": "Required to use all features of the queue worker.", - "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", - "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", - "filp/whoops": "Required for friendly error pages in development (^2.14.3).", - "guzzlehttp/guzzle": "Required to use the HTTP Client and the ping methods on schedules (^7.5).", - "laravel/tinker": "Required to use the tinker console command (^2.0).", - "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.0).", - "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.0).", - "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.3).", - "league/flysystem-read-only": "Required to use read-only disks (^3.3)", - "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.5.1).", - "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", - "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", - "phpunit/phpunit": "Required to use assertions and run tests (^9.5.8|^10.0.7).", - "predis/predis": "Required to use the predis connector (^2.0.2).", - "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", - "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).", - "symfony/cache": "Required to PSR-6 cache bridge (^6.2).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.2).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.2).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.2).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.2).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "10.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Filesystem/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2024-11-26T15:32:57+00:00" - }, - { - "name": "laravel/helpers", - "version": "v1.7.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/helpers.git", - "reference": "f28907033d7edf8a0525cfb781ab30ce6d531c35" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/helpers/zipball/f28907033d7edf8a0525cfb781ab30ce6d531c35", - "reference": "f28907033d7edf8a0525cfb781ab30ce6d531c35", - "shasum": "" - }, - "require": { - "illuminate/support": "~5.8.0|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", - "php": "^7.2.0|^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^7.0|^8.0|^9.0|^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "files": [ - "src/helpers.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - }, - { - "name": "Dries Vints", - "email": "dries@laravel.com" - } - ], - "description": "Provides backwards compatibility for helpers in the latest Laravel release.", - "keywords": [ - "helpers", - "laravel" - ], - "support": { - "source": "https://github.com/laravel/helpers/tree/v1.7.1" - }, - "time": "2024-11-26T14:56:25+00:00" - }, - { - "name": "laravel/prompts", - "version": "v0.1.25", - "source": { - "type": "git", - "url": "https://github.com/laravel/prompts.git", - "reference": "7b4029a84c37cb2725fc7f011586e2997040bc95" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/7b4029a84c37cb2725fc7f011586e2997040bc95", - "reference": "7b4029a84c37cb2725fc7f011586e2997040bc95", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "illuminate/collections": "^10.0|^11.0", - "php": "^8.1", - "symfony/console": "^6.2|^7.0" - }, - "conflict": { - "illuminate/console": ">=10.17.0 <10.25.0", - "laravel/framework": ">=10.17.0 <10.25.0" - }, - "require-dev": { - "mockery/mockery": "^1.5", - "pestphp/pest": "^2.3", - "phpstan/phpstan": "^1.11", - "phpstan/phpstan-mockery": "^1.1" - }, - "suggest": { - "ext-pcntl": "Required for the spinner to be animated." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.1.x-dev" - } - }, - "autoload": { - "files": [ - "src/helpers.php" - ], - "psr-4": { - "Laravel\\Prompts\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Add beautiful and user-friendly forms to your command-line applications.", - "support": { - "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.1.25" - }, - "time": "2024-08-12T22:06:33+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.3.7", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "4f48ade902b94323ca3be7646db16209ec76be3d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/4f48ade902b94323ca3be7646db16209ec76be3d", - "reference": "4f48ade902b94323ca3be7646db16209ec76be3d", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "illuminate/support": "^8.0|^9.0|^10.0|^11.0", - "nesbot/carbon": "^2.61|^3.0", - "pestphp/pest": "^1.21.3", - "phpstan/phpstan": "^1.8.2", - "symfony/var-dumper": "^5.4.11|^6.2.0|^7.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Laravel\\SerializableClosure\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - }, - { - "name": "Nuno Maduro", - "email": "nuno@laravel.com" - } - ], - "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", - "keywords": [ - "closure", - "laravel", - "serializable" - ], - "support": { - "issues": "https://github.com/laravel/serializable-closure/issues", - "source": "https://github.com/laravel/serializable-closure" - }, - "time": "2024-11-14T18:34:49+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.10.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "ba4d51eb56de7711b3a37d63aa0643e99a339ae5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/ba4d51eb56de7711b3a37d63aa0643e99a339ae5", - "reference": "ba4d51eb56de7711b3a37d63aa0643e99a339ae5", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", - "php": "^7.2.5|^8.0", - "psy/psysh": "^0.11.1|^0.12.0", - "symfony/var-dumper": "^4.3.4|^5.0|^6.0|^7.0" - }, - "require-dev": { - "mockery/mockery": "~1.3.3|^1.4.2", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0|^11.0)." - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Laravel\\Tinker\\TinkerServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Laravel\\Tinker\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Powerful REPL for the Laravel framework.", - "keywords": [ - "REPL", - "Tinker", - "laravel", - "psysh" - ], - "support": { - "issues": "https://github.com/laravel/tinker/issues", - "source": "https://github.com/laravel/tinker/tree/v2.10.0" - }, - "time": "2024-09-23T13:32:56+00:00" - }, - { - "name": "laravel/ui", - "version": "v4.6.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/ui.git", - "reference": "a34609b15ae0c0512a0cf47a21695a2729cb7f93" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/ui/zipball/a34609b15ae0c0512a0cf47a21695a2729cb7f93", - "reference": "a34609b15ae0c0512a0cf47a21695a2729cb7f93", - "shasum": "" - }, - "require": { - "illuminate/console": "^9.21|^10.0|^11.0", - "illuminate/filesystem": "^9.21|^10.0|^11.0", - "illuminate/support": "^9.21|^10.0|^11.0", - "illuminate/validation": "^9.21|^10.0|^11.0", - "php": "^8.0", - "symfony/console": "^6.0|^7.0" - }, - "require-dev": { - "orchestra/testbench": "^7.35|^8.15|^9.0", - "phpunit/phpunit": "^9.3|^10.4|^11.0" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Laravel\\Ui\\UiServiceProvider" - ] - }, - "branch-alias": { - "dev-master": "4.x-dev" - } - }, - "autoload": { - "psr-4": { - "Laravel\\Ui\\": "src/", - "Illuminate\\Foundation\\Auth\\": "auth-backend/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Laravel UI utilities and presets.", - "keywords": [ - "laravel", - "ui" - ], - "support": { - "source": "https://github.com/laravel/ui/tree/v4.6.0" - }, - "time": "2024-11-21T15:06:41+00:00" - }, - { - "name": "laravelcollective/html", - "version": "v6.4.1", - "source": { - "type": "git", - "url": "https://github.com/LaravelCollective/html.git", - "reference": "64ddfdcaeeb8d332bd98bef442bef81e39c3910b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/LaravelCollective/html/zipball/64ddfdcaeeb8d332bd98bef442bef81e39c3910b", - "reference": "64ddfdcaeeb8d332bd98bef442bef81e39c3910b", - "shasum": "" - }, - "require": { - "illuminate/http": "^6.0|^7.0|^8.0|^9.0|^10.0", - "illuminate/routing": "^6.0|^7.0|^8.0|^9.0|^10.0", - "illuminate/session": "^6.0|^7.0|^8.0|^9.0|^10.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0", - "illuminate/view": "^6.0|^7.0|^8.0|^9.0|^10.0", - "php": ">=7.2.5" - }, - "require-dev": { - "illuminate/database": "^6.0|^7.0|^8.0|^9.0|^10.0", - "mockery/mockery": "~1.0", - "phpunit/phpunit": "~8.5|^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.x-dev" - }, - "laravel": { - "providers": [ - "Collective\\Html\\HtmlServiceProvider" - ], - "aliases": { - "Form": "Collective\\Html\\FormFacade", - "Html": "Collective\\Html\\HtmlFacade" - } - } - }, - "autoload": { - "files": [ - "src/helpers.php" - ], - "psr-4": { - "Collective\\Html\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Adam Engebretson", - "email": "adam@laravelcollective.com" - }, - { - "name": "Taylor Otwell", - "email": "taylorotwell@gmail.com" - } - ], - "description": "HTML and Form Builders for the Laravel Framework", - "homepage": "https://laravelcollective.com", - "support": { - "issues": "https://github.com/LaravelCollective/html/issues", - "source": "https://github.com/LaravelCollective/html" - }, - "abandoned": "spatie/laravel-html", - "time": "2023-04-25T02:46:11+00:00" - }, - { - "name": "league/commonmark", - "version": "2.6.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "d990688c91cedfb69753ffc2512727ec646df2ad" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/d990688c91cedfb69753ffc2512727ec646df2ad", - "reference": "d990688c91cedfb69753ffc2512727ec646df2ad", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "league/config": "^1.1.1", - "php": "^7.4 || ^8.0", - "psr/event-dispatcher": "^1.0", - "symfony/deprecation-contracts": "^2.1 || ^3.0", - "symfony/polyfill-php80": "^1.16" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.31.1", - "commonmark/commonmark.js": "0.31.1", - "composer/package-versions-deprecated": "^1.8", - "embed/embed": "^4.4", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4 || ^2.0", - "nyholm/psr7": "^1.5", - "phpstan/phpstan": "^1.8.2", - "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3 | ^6.0 | ^7.0", - "symfony/process": "^5.4 | ^6.0 | ^7.0", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 | ^7.0", - "unleashedtech/php-coding-standard": "^3.1.1", - "vimeo/psalm": "^4.24.0 || ^5.0.0" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.7-dev" - } - }, - "autoload": { - "psr-4": { - "League\\CommonMark\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Colin O'Dell", - "email": "colinodell@gmail.com", - "homepage": "https://www.colinodell.com", - "role": "Lead Developer" - } - ], - "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)", - "homepage": "https://commonmark.thephpleague.com", - "keywords": [ - "commonmark", - "flavored", - "gfm", - "github", - "github-flavored", - "markdown", - "md", - "parser" - ], - "support": { - "docs": "https://commonmark.thephpleague.com/", - "forum": "https://github.com/thephpleague/commonmark/discussions", - "issues": "https://github.com/thephpleague/commonmark/issues", - "rss": "https://github.com/thephpleague/commonmark/releases.atom", - "source": "https://github.com/thephpleague/commonmark" - }, - "funding": [ - { - "url": "https://www.colinodell.com/sponsor", - "type": "custom" - }, - { - "url": "https://www.paypal.me/colinpodell/10.00", - "type": "custom" - }, - { - "url": "https://github.com/colinodell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/commonmark", - "type": "tidelift" - } - ], - "time": "2024-12-29T14:10:59+00:00" - }, - { - "name": "league/config", - "version": "v1.2.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", - "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.8.2", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.2-dev" - } - }, - "autoload": { - "psr-4": { - "League\\Config\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Colin O'Dell", - "email": "colinodell@gmail.com", - "homepage": "https://www.colinodell.com", - "role": "Lead Developer" - } - ], - "description": "Define configuration arrays with strict schemas and access values with dot notation", - "homepage": "https://config.thephpleague.com", - "keywords": [ - "array", - "config", - "configuration", - "dot", - "dot-access", - "nested", - "schema" - ], - "support": { - "docs": "https://config.thephpleague.com/", - "issues": "https://github.com/thephpleague/config/issues", - "rss": "https://github.com/thephpleague/config/releases.atom", - "source": "https://github.com/thephpleague/config" - }, - "funding": [ - { - "url": "https://www.colinodell.com/sponsor", - "type": "custom" - }, - { - "url": "https://www.paypal.me/colinpodell/10.00", - "type": "custom" - }, - { - "url": "https://github.com/colinodell", - "type": "github" - } - ], - "time": "2022-12-11T20:36:23+00:00" - }, - { - "name": "league/flysystem", - "version": "3.29.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "edc1bb7c86fab0776c3287dbd19b5fa278347319" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/edc1bb7c86fab0776c3287dbd19b5fa278347319", - "reference": "edc1bb7c86fab0776c3287dbd19b5fa278347319", - "shasum": "" - }, - "require": { - "league/flysystem-local": "^3.0.0", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "async-aws/core": "<1.19.0", - "async-aws/s3": "<1.14.0", - "aws/aws-sdk-php": "3.209.31 || 3.210.0", - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "phpseclib/phpseclib": "3.0.15", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5 || ^2.0", - "async-aws/simple-s3": "^1.1 || ^2.0", - "aws/aws-sdk-php": "^3.295.10", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-mongodb": "^1.3", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "guzzlehttp/psr7": "^2.6", - "microsoft/azure-storage-blob": "^1.1", - "mongodb/mongodb": "^1.2", - "phpseclib/phpseclib": "^3.0.36", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^9.5.11|^10.0", - "sabre/dav": "^4.6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "League\\Flysystem\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Frank de Jonge", - "email": "info@frankdejonge.nl" - } - ], - "description": "File storage abstraction for PHP", - "keywords": [ - "WebDAV", - "aws", - "cloud", - "file", - "files", - "filesystem", - "filesystems", - "ftp", - "s3", - "sftp", - "storage" - ], - "support": { - "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.29.1" - }, - "time": "2024-10-08T08:58:34+00:00" - }, - { - "name": "league/flysystem-local", - "version": "3.29.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem-local.git", - "reference": "e0e8d52ce4b2ed154148453d321e97c8e931bd27" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/e0e8d52ce4b2ed154148453d321e97c8e931bd27", - "reference": "e0e8d52ce4b2ed154148453d321e97c8e931bd27", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "league/flysystem": "^3.0.0", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "League\\Flysystem\\Local\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Frank de Jonge", - "email": "info@frankdejonge.nl" - } - ], - "description": "Local filesystem adapter for Flysystem.", - "keywords": [ - "Flysystem", - "file", - "files", - "filesystem", - "local" - ], - "support": { - "source": "https://github.com/thephpleague/flysystem-local/tree/3.29.0" - }, - "time": "2024-08-09T21:24:39+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.16.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "2d6702ff215bf922936ccc1ad31007edc76451b9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/2d6702ff215bf922936ccc1ad31007edc76451b9", - "reference": "2d6702ff215bf922936ccc1ad31007edc76451b9", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "League\\MimeTypeDetection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Frank de Jonge", - "email": "info@frankdejonge.nl" - } - ], - "description": "Mime-type detection for Flysystem", - "support": { - "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.16.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2024-09-21T08:32:55+00:00" - }, - { - "name": "masterminds/html5", - "version": "2.9.0", - "source": { - "type": "git", - "url": "https://github.com/Masterminds/html5-php.git", - "reference": "f5ac2c0b0a2eefca70b2ce32a5809992227e75a6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f5ac2c0b0a2eefca70b2ce32a5809992227e75a6", - "reference": "f5ac2c0b0a2eefca70b2ce32a5809992227e75a6", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8 || ^9" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev" - } - }, - "autoload": { - "psr-4": { - "Masterminds\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Matt Butcher", - "email": "technosophos@gmail.com" - }, - { - "name": "Matt Farina", - "email": "matt@mattfarina.com" - }, - { - "name": "Asmir Mustafic", - "email": "goetas@gmail.com" - } - ], - "description": "An HTML5 parser and serializer.", - "homepage": "http://masterminds.github.io/html5-php", - "keywords": [ - "HTML5", - "dom", - "html", - "parser", - "querypath", - "serializer", - "xml" - ], - "support": { - "issues": "https://github.com/Masterminds/html5-php/issues", - "source": "https://github.com/Masterminds/html5-php/tree/2.9.0" - }, - "time": "2024-03-31T07:05:07+00:00" - }, - { - "name": "milon/barcode", - "version": "v10.0.1", - "source": { - "type": "git", - "url": "https://github.com/milon/barcode.git", - "reference": "e643a713466f0109aa3ad7d29dae4900444187a5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/milon/barcode/zipball/e643a713466f0109aa3ad7d29dae4900444187a5", - "reference": "e643a713466f0109aa3ad7d29dae4900444187a5", - "shasum": "" - }, - "require": { - "illuminate/support": "^7.0|^8.0|^9.0|^10.0", - "php": "^7.3 | ^8.0" - }, - "type": "library", - "extra": { - "laravel": { - "aliases": { - "DNS1D": "Milon\\Barcode\\Facades\\DNS1DFacade", - "DNS2D": "Milon\\Barcode\\Facades\\DNS2DFacade" - }, - "providers": [ - "Milon\\Barcode\\BarcodeServiceProvider" - ] - } - }, - "autoload": { - "psr-0": { - "Milon\\Barcode": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0" - ], - "authors": [ - { - "name": "Nuruzzaman Milon", - "email": "contact@milon.im" - } - ], - "description": "Barcode generator like Qr Code, PDF417, C39, C39+, C39E, C39E+, C93, S25, S25+, I25, I25+, C128, C128A, C128B, C128C, 2-Digits UPC-Based Extention, 5-Digits UPC-Based Extention, EAN 8, EAN 13, UPC-A, UPC-E, MSI (Variation of Plessey code)", - "keywords": [ - "CODABAR", - "CODE 128", - "CODE 39", - "barcode", - "datamatrix", - "ean", - "laravel", - "pdf417", - "qr code", - "qrcode" - ], - "support": { - "issues": "https://github.com/milon/barcode/issues", - "source": "https://github.com/milon/barcode/tree/v10.0.1" - }, - "funding": [ - { - "url": "https://paypal.me/nuruzzamanmilon", - "type": "custom" - }, - { - "url": "https://github.com/milon", - "type": "github" - } - ], - "time": "2023-06-16T13:03:37+00:00" - }, - { - "name": "monolog/monolog", - "version": "3.8.1", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "aef6ee73a77a66e404dd6540934a9ef1b3c855b4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/aef6ee73a77a66e404dd6540934a9ef1b3c855b4", - "reference": "aef6ee73a77a66e404dd6540934a9ef1b3c855b4", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/log": "^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7 || ^8", - "ext-json": "*", - "graylog2/gelf-php": "^1.4.2 || ^2.0", - "guzzlehttp/guzzle": "^7.4.5", - "guzzlehttp/psr7": "^2.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.8", - "phpstan/phpstan": "^2", - "phpstan/phpstan-deprecation-rules": "^2", - "phpstan/phpstan-strict-rules": "^2", - "phpunit/phpunit": "^10.5.17 || ^11.0.7", - "predis/predis": "^1.1 || ^2", - "rollbar/rollbar": "^4.0", - "ruflin/elastica": "^7 || ^8", - "symfony/mailer": "^5.4 || ^6", - "symfony/mime": "^5.4 || ^6" - }, - "suggest": { - "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", - "doctrine/couchdb": "Allow sending log messages to a CouchDB server", - "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", - "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", - "ext-mbstring": "Allow to work properly with unicode symbols", - "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", - "ext-openssl": "Required to send log messages using SSL", - "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", - "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", - "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Monolog\\": "src/Monolog" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "https://seld.be" - } - ], - "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "https://github.com/Seldaek/monolog", - "keywords": [ - "log", - "logging", - "psr-3" - ], - "support": { - "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.8.1" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2024-12-05T17:15:07+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.72.6", - "source": { - "type": "git", - "url": "https://github.com/CarbonPHP/carbon.git", - "reference": "1e9d50601e7035a4c61441a208cb5bed73e108c5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/1e9d50601e7035a4c61441a208cb5bed73e108c5", - "reference": "1e9d50601e7035a4c61441a208cb5bed73e108c5", - "shasum": "" - }, - "require": { - "carbonphp/carbon-doctrine-types": "*", - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "psr/clock": "^1.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "provide": { - "psr/clock-implementation": "1.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.1.4 || ^4.0", - "doctrine/orm": "^2.7 || ^3.0", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "ondrejmirtes/better-reflection": "<6", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.99 || ^1.7.14", - "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6", - "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", - "squizlabs/php_codesniffer": "^3.4" - }, - "bin": [ - "bin/carbon" - ], - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Carbon\\Laravel\\ServiceProvider" - ] - }, - "phpstan": { - "includes": [ - "extension.neon" - ] - }, - "branch-alias": { - "dev-2.x": "2.x-dev", - "dev-master": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Carbon\\": "src/Carbon/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Brian Nesbitt", - "email": "brian@nesbot.com", - "homepage": "https://markido.com" - }, - { - "name": "kylekatarnls", - "homepage": "https://github.com/kylekatarnls" - } - ], - "description": "An API extension for DateTime that supports 281 different languages.", - "homepage": "https://carbon.nesbot.com", - "keywords": [ - "date", - "datetime", - "time" - ], - "support": { - "docs": "https://carbon.nesbot.com/docs", - "issues": "https://github.com/briannesbitt/Carbon/issues", - "source": "https://github.com/briannesbitt/Carbon" - }, - "funding": [ - { - "url": "https://github.com/sponsors/kylekatarnls", - "type": "github" - }, - { - "url": "https://opencollective.com/Carbon#sponsor", - "type": "opencollective" - }, - { - "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", - "type": "tidelift" - } - ], - "time": "2024-12-27T09:28:11+00:00" - }, - { - "name": "nette/schema", - "version": "v1.3.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "da801d52f0354f70a638673c4a0f04e16529431d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/da801d52f0354f70a638673c4a0f04e16529431d", - "reference": "da801d52f0354f70a638673c4a0f04e16529431d", - "shasum": "" - }, - "require": { - "nette/utils": "^4.0", - "php": "8.1 - 8.4" - }, - "require-dev": { - "nette/tester": "^2.5.2", - "phpstan/phpstan-nette": "^1.0", - "tracy/tracy": "^2.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0-only", - "GPL-3.0-only" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "📐 Nette Schema: validating data structures against a given Schema.", - "homepage": "https://nette.org", - "keywords": [ - "config", - "nette" - ], - "support": { - "issues": "https://github.com/nette/schema/issues", - "source": "https://github.com/nette/schema/tree/v1.3.2" - }, - "time": "2024-10-06T23:10:23+00:00" - }, - { - "name": "nette/utils", - "version": "v4.0.5", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "736c567e257dbe0fcf6ce81b4d6dbe05c6899f96" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/736c567e257dbe0fcf6ce81b4d6dbe05c6899f96", - "reference": "736c567e257dbe0fcf6ce81b4d6dbe05c6899f96", - "shasum": "" - }, - "require": { - "php": "8.0 - 8.4" - }, - "conflict": { - "nette/finder": "<3", - "nette/schema": "<1.2.2" - }, - "require-dev": { - "jetbrains/phpstorm-attributes": "dev-master", - "nette/tester": "^2.5", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.9" - }, - "suggest": { - "ext-gd": "to use Image", - "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", - "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", - "ext-json": "to use Nette\\Utils\\Json", - "ext-mbstring": "to use Strings::lower() etc...", - "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0-only", - "GPL-3.0-only" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", - "homepage": "https://nette.org", - "keywords": [ - "array", - "core", - "datetime", - "images", - "json", - "nette", - "paginator", - "password", - "slugify", - "string", - "unicode", - "utf-8", - "utility", - "validation" - ], - "support": { - "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.5" - }, - "time": "2024-08-07T15:39:19+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v5.4.0", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "447a020a1f875a434d62f2a401f53b82a396e494" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/447a020a1f875a434d62f2a401f53b82a396e494", - "reference": "447a020a1f875a434d62f2a401f53b82a396e494", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "ext-json": "*", - "ext-tokenizer": "*", - "php": ">=7.4" - }, - "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^9.0" - }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.4.0" - }, - "time": "2024-12-30T11:07:19+00:00" - }, - { - "name": "nunomaduro/termwind", - "version": "v1.17.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/termwind.git", - "reference": "5369ef84d8142c1d87e4ec278711d4ece3cbf301" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/5369ef84d8142c1d87e4ec278711d4ece3cbf301", - "reference": "5369ef84d8142c1d87e4ec278711d4ece3cbf301", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": "^8.1", - "symfony/console": "^6.4.15" - }, - "require-dev": { - "illuminate/console": "^10.48.24", - "illuminate/support": "^10.48.24", - "laravel/pint": "^1.18.2", - "pestphp/pest": "^2.36.0", - "pestphp/pest-plugin-mock": "2.0.0", - "phpstan/phpstan": "^1.12.11", - "phpstan/phpstan-strict-rules": "^1.6.1", - "symfony/var-dumper": "^6.4.15", - "thecodingmachine/phpstan-strict-rules": "^1.0.0" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Termwind\\Laravel\\TermwindServiceProvider" - ] - } - }, - "autoload": { - "files": [ - "src/Functions.php" - ], - "psr-4": { - "Termwind\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - } - ], - "description": "Its like Tailwind CSS, but for the console.", - "keywords": [ - "cli", - "console", - "css", - "package", - "php", - "style" - ], - "support": { - "issues": "https://github.com/nunomaduro/termwind/issues", - "source": "https://github.com/nunomaduro/termwind/tree/v1.17.0" - }, - "funding": [ - { - "url": "https://www.paypal.com/paypalme/enunomaduro", - "type": "custom" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - }, - { - "url": "https://github.com/xiCO2k", - "type": "github" - } - ], - "time": "2024-11-21T10:36:35+00:00" - }, - { - "name": "nwidart/laravel-modules", - "version": "10.0.6", - "source": { - "type": "git", - "url": "https://github.com/nWidart/laravel-modules.git", - "reference": "a6f2c8b53ae7945ef41d296735e963cee885ebde" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nWidart/laravel-modules/zipball/a6f2c8b53ae7945ef41d296735e963cee885ebde", - "reference": "a6f2c8b53ae7945ef41d296735e963cee885ebde", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": ">=8.1" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.6", - "laravel/framework": "^10.41", - "mockery/mockery": "^1.5", - "orchestra/testbench": "^8.0", - "phpstan/phpstan": "^1.4", - "phpunit/phpunit": "^10.0", - "spatie/phpunit-snapshot-assertions": "^5.0" - }, - "type": "library", - "extra": { - "laravel": { - "aliases": { - "Module": "Nwidart\\Modules\\Facades\\Module" - }, - "providers": [ - "Nwidart\\Modules\\LaravelModulesServiceProvider" - ] - }, - "branch-alias": { - "dev-master": "10.0-dev" - } - }, - "autoload": { - "files": [ - "src/helpers.php" - ], - "psr-4": { - "Nwidart\\Modules\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Widart", - "email": "n.widart@gmail.com", - "homepage": "https://nicolaswidart.com", - "role": "Developer" - } - ], - "description": "Laravel Module management", - "keywords": [ - "laravel", - "module", - "modules", - "nwidart", - "rad" - ], - "support": { - "issues": "https://github.com/nWidart/laravel-modules/issues", - "source": "https://github.com/nWidart/laravel-modules/tree/10.0.6" - }, - "funding": [ - { - "url": "https://github.com/dcblogdev", - "type": "github" - }, - { - "url": "https://github.com/nwidart", - "type": "github" - } - ], - "time": "2024-01-28T10:04:15+00:00" - }, - { - "name": "owen-it/laravel-auditing", - "version": "v13.6.9", - "source": { - "type": "git", - "url": "https://github.com/owen-it/laravel-auditing.git", - "reference": "559b391e2ebf46a734b3f82d4f18faf425107054" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/owen-it/laravel-auditing/zipball/559b391e2ebf46a734b3f82d4f18faf425107054", - "reference": "559b391e2ebf46a734b3f82d4f18faf425107054", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/console": "^7.0|^8.0|^9.0|^10.0|^11.0", - "illuminate/database": "^7.0|^8.0|^9.0|^10.0|^11.0", - "illuminate/filesystem": "^7.0|^8.0|^9.0|^10.0|^11.0", - "php": "^7.3|^8.0" - }, - "require-dev": { - "laravel/legacy-factories": "*", - "mockery/mockery": "^1.0", - "orchestra/testbench": "^5.0|^6.0|^7.0|^8.0|^9.0", - "phpunit/phpunit": "^9.6|^10.5|^11.0" - }, - "suggest": { - "irazasyed/larasupport": "Needed to publish the package configuration in Lumen" - }, - "type": "package", - "extra": { - "laravel": { - "providers": [ - "OwenIt\\Auditing\\AuditingServiceProvider" - ] - }, - "branch-alias": { - "dev-master": "v13-dev" - } - }, - "autoload": { - "psr-4": { - "OwenIt\\Auditing\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Antério Vieira", - "email": "anteriovieira@gmail.com" - }, - { - "name": "Raphael França", - "email": "raphaelfrancabsb@gmail.com" - }, - { - "name": "Morten D. Hansen", - "email": "morten@visia.dk" - } - ], - "description": "Audit changes of your Eloquent models in Laravel/Lumen", - "homepage": "https://laravel-auditing.com", - "keywords": [ - "Accountability", - "Audit", - "auditing", - "changes", - "eloquent", - "history", - "laravel", - "log", - "logging", - "lumen", - "observer", - "record", - "revision", - "tracking" - ], - "support": { - "issues": "https://github.com/owen-it/laravel-auditing/issues", - "source": "https://github.com/owen-it/laravel-auditing" - }, - "time": "2024-12-27T15:04:04+00:00" - }, - { - "name": "phenx/php-font-lib", - "version": "0.5.6", - "source": { - "type": "git", - "url": "https://github.com/dompdf/php-font-lib.git", - "reference": "a1681e9793040740a405ac5b189275059e2a9863" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/a1681e9793040740a405ac5b189275059e2a9863", - "reference": "a1681e9793040740a405ac5b189275059e2a9863", - "shasum": "" - }, - "require": { - "ext-mbstring": "*" - }, - "require-dev": { - "symfony/phpunit-bridge": "^3 || ^4 || ^5 || ^6" - }, - "type": "library", - "autoload": { - "psr-4": { - "FontLib\\": "src/FontLib" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1-or-later" - ], - "authors": [ - { - "name": "Fabien Ménager", - "email": "fabien.menager@gmail.com" - } - ], - "description": "A library to read, parse, export and make subsets of different types of font files.", - "homepage": "https://github.com/PhenX/php-font-lib", - "support": { - "issues": "https://github.com/dompdf/php-font-lib/issues", - "source": "https://github.com/dompdf/php-font-lib/tree/0.5.6" - }, - "time": "2024-01-29T14:45:26+00:00" - }, - { - "name": "phenx/php-svg-lib", - "version": "0.5.4", - "source": { - "type": "git", - "url": "https://github.com/dompdf/php-svg-lib.git", - "reference": "46b25da81613a9cf43c83b2a8c2c1bdab27df691" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dompdf/php-svg-lib/zipball/46b25da81613a9cf43c83b2a8c2c1bdab27df691", - "reference": "46b25da81613a9cf43c83b2a8c2c1bdab27df691", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": "^7.1 || ^8.0", - "sabberworm/php-css-parser": "^8.4" - }, - "require-dev": { - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "Svg\\": "src/Svg" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0-or-later" - ], - "authors": [ - { - "name": "Fabien Ménager", - "email": "fabien.menager@gmail.com" - } - ], - "description": "A library to read, parse and export to PDF SVG files.", - "homepage": "https://github.com/PhenX/php-svg-lib", - "support": { - "issues": "https://github.com/dompdf/php-svg-lib/issues", - "source": "https://github.com/dompdf/php-svg-lib/tree/0.5.4" - }, - "time": "2024-04-08T12:52:34+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.9.3", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/e3fac8b24f56113f7cb96af14958c0dd16330f54", - "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" - }, - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - }, - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "autoload": { - "psr-4": { - "PhpOption\\": "src/PhpOption/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Johannes M. Schmitt", - "email": "schmittjoh@gmail.com", - "homepage": "https://github.com/schmittjoh" - }, - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - } - ], - "description": "Option Type for PHP", - "keywords": [ - "language", - "option", - "php", - "type" - ], - "support": { - "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.9.3" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2024-07-20T21:41:07+00:00" - }, - { - "name": "psr/cache", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", - "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Cache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for caching libraries", - "keywords": [ - "cache", - "psr", - "psr-6" - ], - "support": { - "source": "https://github.com/php-fig/cache/tree/3.0.0" - }, - "time": "2021-02-03T23:26:27+00:00" - }, - { - "name": "psr/clock", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/clock.git", - "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", - "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Psr\\Clock\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for reading the clock.", - "homepage": "https://github.com/php-fig/clock", - "keywords": [ - "clock", - "now", - "psr", - "psr-20", - "time" - ], - "support": { - "issues": "https://github.com/php-fig/clock/issues", - "source": "https://github.com/php-fig/clock/tree/1.0.0" - }, - "time": "2022-11-25T14:36:26+00:00" - }, - { - "name": "psr/container", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "shasum": "" - }, - "require": { - "php": ">=7.4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ], - "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/2.0.2" - }, - "time": "2021-11-05T16:47:00+00:00" - }, - { - "name": "psr/event-dispatcher", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/event-dispatcher.git", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", - "shasum": "" - }, - "require": { - "php": ">=7.2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\EventDispatcher\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Standard interfaces for event handling.", - "keywords": [ - "events", - "psr", - "psr-14" - ], - "support": { - "issues": "https://github.com/php-fig/event-dispatcher/issues", - "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" - }, - "time": "2019-01-08T18:20:26+00:00" - }, - { - "name": "psr/http-client", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", - "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.0 || ^2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP clients", - "homepage": "https://github.com/php-fig/http-client", - "keywords": [ - "http", - "http-client", - "psr", - "psr-18" - ], - "support": { - "source": "https://github.com/php-fig/http-client" - }, - "time": "2023-09-23T14:17:50+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", - "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", - "shasum": "" - }, - "require": { - "php": ">=7.1", - "psr/http-message": "^1.0 || ^2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", - "keywords": [ - "factory", - "http", - "message", - "psr", - "psr-17", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-factory" - }, - "time": "2024-04-15T12:06:14+00:00" - }, - { - "name": "psr/http-message", - "version": "2.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", - "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-message/tree/2.0" - }, - "time": "2023-04-04T09:54:51+00:00" - }, - { - "name": "psr/log", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", - "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "support": { - "source": "https://github.com/php-fig/log/tree/3.0.2" - }, - "time": "2024-09-11T13:17:53+00:00" - }, - { - "name": "psr/simple-cache", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/simple-cache.git", - "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", - "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\SimpleCache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interfaces for simple caching", - "keywords": [ - "cache", - "caching", - "psr", - "psr-16", - "simple-cache" - ], - "support": { - "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" - }, - "time": "2021-10-29T13:26:27+00:00" - }, - { - "name": "psy/psysh", - "version": "v0.12.7", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "d73fa3c74918ef4522bb8a3bf9cab39161c4b57c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/d73fa3c74918ef4522bb8a3bf9cab39161c4b57c", - "reference": "d73fa3c74918ef4522bb8a3bf9cab39161c4b57c", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-tokenizer": "*", - "nikic/php-parser": "^5.0 || ^4.0", - "php": "^8.0 || ^7.4", - "symfony/console": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4", - "symfony/var-dumper": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4" - }, - "conflict": { - "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2" - }, - "suggest": { - "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", - "ext-pdo-sqlite": "The doc command requires SQLite to work.", - "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": false, - "forward-command": false - }, - "branch-alias": { - "dev-main": "0.12.x-dev" - } - }, - "autoload": { - "files": [ - "src/functions.php" - ], - "psr-4": { - "Psy\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Justin Hileman", - "email": "justin@justinhileman.info", - "homepage": "http://justinhileman.com" - } - ], - "description": "An interactive shell for modern PHP.", - "homepage": "http://psysh.org", - "keywords": [ - "REPL", - "console", - "interactive", - "shell" - ], - "support": { - "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.12.7" - }, - "time": "2024-12-10T01:58:33+00:00" - }, - { - "name": "ralouphie/getallheaders", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" - }, - "type": "library", - "autoload": { - "files": [ - "src/getallheaders.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" - } - ], - "description": "A polyfill for getallheaders.", - "support": { - "issues": "https://github.com/ralouphie/getallheaders/issues", - "source": "https://github.com/ralouphie/getallheaders/tree/develop" - }, - "time": "2019-03-08T08:55:37+00:00" - }, - { - "name": "ramsey/collection", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", - "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "require-dev": { - "captainhook/plugin-composer": "^5.3", - "ergebnis/composer-normalize": "^2.28.3", - "fakerphp/faker": "^1.21", - "hamcrest/hamcrest-php": "^2.0", - "jangregor/phpstan-prophecy": "^1.0", - "mockery/mockery": "^1.5", - "php-parallel-lint/php-console-highlighter": "^1.0", - "php-parallel-lint/php-parallel-lint": "^1.3", - "phpcsstandards/phpcsutils": "^1.0.0-rc1", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1.2", - "phpstan/phpstan": "^1.9", - "phpstan/phpstan-mockery": "^1.1", - "phpstan/phpstan-phpunit": "^1.3", - "phpunit/phpunit": "^9.5", - "psalm/plugin-mockery": "^1.1", - "psalm/plugin-phpunit": "^0.18.4", - "ramsey/coding-standard": "^2.0.3", - "ramsey/conventional-commits": "^1.3", - "vimeo/psalm": "^5.4" - }, - "type": "library", - "extra": { - "captainhook": { - "force-install": true - }, - "ramsey/conventional-commits": { - "configFile": "conventional-commits.json" - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Collection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ben Ramsey", - "email": "ben@benramsey.com", - "homepage": "https://benramsey.com" - } - ], - "description": "A PHP library for representing and manipulating collections.", - "keywords": [ - "array", - "collection", - "hash", - "map", - "queue", - "set" - ], - "support": { - "issues": "https://github.com/ramsey/collection/issues", - "source": "https://github.com/ramsey/collection/tree/2.0.0" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2022-12-31T21:50:55+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.7.6", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "91039bc1faa45ba123c4328958e620d382ec7088" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/91039bc1faa45ba123c4328958e620d382ec7088", - "reference": "91039bc1faa45ba123c4328958e620d382ec7088", - "shasum": "" - }, - "require": { - "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12", - "ext-json": "*", - "php": "^8.0", - "ramsey/collection": "^1.2 || ^2.0" - }, - "replace": { - "rhumsaa/uuid": "self.version" - }, - "require-dev": { - "captainhook/captainhook": "^5.10", - "captainhook/plugin-composer": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "doctrine/annotations": "^1.8", - "ergebnis/composer-normalize": "^2.15", - "mockery/mockery": "^1.3", - "paragonie/random-lib": "^2", - "php-mock/php-mock": "^2.2", - "php-mock/php-mock-mockery": "^1.3", - "php-parallel-lint/php-parallel-lint": "^1.1", - "phpbench/phpbench": "^1.0", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-mockery": "^1.1", - "phpstan/phpstan-phpunit": "^1.1", - "phpunit/phpunit": "^8.5 || ^9", - "ramsey/composer-repl": "^1.4", - "slevomat/coding-standard": "^8.4", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", - "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", - "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", - "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." - }, - "type": "library", - "extra": { - "captainhook": { - "force-install": true - } - }, - "autoload": { - "files": [ - "src/functions.php" - ], - "psr-4": { - "Ramsey\\Uuid\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", - "keywords": [ - "guid", - "identifier", - "uuid" - ], - "support": { - "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.7.6" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2024-04-27T21:32:50+00:00" - }, - { - "name": "sabberworm/php-css-parser", - "version": "v8.7.0", - "source": { - "type": "git", - "url": "https://github.com/MyIntervals/PHP-CSS-Parser.git", - "reference": "f414ff953002a9b18e3a116f5e462c56f21237cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/f414ff953002a9b18e3a116f5e462c56f21237cf", - "reference": "f414ff953002a9b18e3a116f5e462c56f21237cf", - "shasum": "" - }, - "require": { - "ext-iconv": "*", - "php": "^5.6.20 || ^7.0.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" - }, - "require-dev": { - "phpunit/phpunit": "5.7.27 || 6.5.14 || 7.5.20 || 8.5.40" - }, - "suggest": { - "ext-mbstring": "for parsing UTF-8 CSS" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "9.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Sabberworm\\CSS\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Raphael Schweikert" - }, - { - "name": "Oliver Klee", - "email": "github@oliverklee.de" - }, - { - "name": "Jake Hotson", - "email": "jake.github@qzdesign.co.uk" - } - ], - "description": "Parser for CSS Files written in PHP", - "homepage": "https://www.sabberworm.com/blog/2010/6/10/php-css-parser", - "keywords": [ - "css", - "parser", - "stylesheet" - ], - "support": { - "issues": "https://github.com/MyIntervals/PHP-CSS-Parser/issues", - "source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/v8.7.0" - }, - "time": "2024-10-27T17:38:32+00:00" - }, - { - "name": "spatie/laravel-permission", - "version": "5.11.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-permission.git", - "reference": "7090824cca57e693b880ce3aaf7ef78362e28bbd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-permission/zipball/7090824cca57e693b880ce3aaf7ef78362e28bbd", - "reference": "7090824cca57e693b880ce3aaf7ef78362e28bbd", - "shasum": "" - }, - "require": { - "illuminate/auth": "^7.0|^8.0|^9.0|^10.0", - "illuminate/container": "^7.0|^8.0|^9.0|^10.0", - "illuminate/contracts": "^7.0|^8.0|^9.0|^10.0", - "illuminate/database": "^7.0|^8.0|^9.0|^10.0", - "php": "^7.3|^8.0" - }, - "require-dev": { - "orchestra/testbench": "^5.0|^6.0|^7.0|^8.0", - "phpunit/phpunit": "^9.4", - "predis/predis": "^1.1" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\Permission\\PermissionServiceProvider" - ] - }, - "branch-alias": { - "dev-main": "5.x-dev", - "dev-master": "5.x-dev" - } - }, - "autoload": { - "files": [ - "src/helpers.php" - ], - "psr-4": { - "Spatie\\Permission\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - } - ], - "description": "Permission handling for Laravel 6.0 and up", - "homepage": "https://github.com/spatie/laravel-permission", - "keywords": [ - "acl", - "laravel", - "permission", - "permissions", - "rbac", - "roles", - "security", - "spatie" - ], - "support": { - "issues": "https://github.com/spatie/laravel-permission/issues", - "source": "https://github.com/spatie/laravel-permission/tree/5.11.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2023-10-25T05:12:01+00:00" - }, - { - "name": "symfony/console", - "version": "v6.4.17", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "799445db3f15768ecc382ac5699e6da0520a0a04" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/799445db3f15768ecc382ac5699e6da0520a0a04", - "reference": "799445db3f15768ecc382ac5699e6da0520a0a04", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^5.4|^6.0|^7.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/lock": "^5.4|^6.0|^7.0", - "symfony/messenger": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/var-dumper": "^5.4|^6.0|^7.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Eases the creation of beautiful and testable command line interfaces", - "homepage": "https://symfony.com", - "keywords": [ - "cli", - "command-line", - "console", - "terminal" - ], - "support": { - "source": "https://github.com/symfony/console/tree/v6.4.17" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-12-07T12:07:30+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v7.2.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "601a5ce9aaad7bf10797e3663faefce9e26c24e2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/601a5ce9aaad7bf10797e3663faefce9e26c24e2", - "reference": "601a5ce9aaad7bf10797e3663faefce9e26c24e2", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\CssSelector\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Jean-François Simon", - "email": "jeanfrancois.simon@sensiolabs.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Converts CSS selectors to XPath expressions", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/css-selector/tree/v7.2.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-25T14:21:43+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.5.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", - "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/contracts", - "name": "symfony/contracts" - }, - "branch-alias": { - "dev-main": "3.5-dev" - } - }, - "autoload": { - "files": [ - "function.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-25T14:20:29+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.4.17", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "37ad2380e8c1a8cf62a1200a5c10080b679b446c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/37ad2380e8c1a8cf62a1200a5c10080b679b446c", - "reference": "37ad2380e8c1a8cf62a1200a5c10080b679b446c", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0|^7.0" - }, - "conflict": { - "symfony/deprecation-contracts": "<2.5", - "symfony/http-kernel": "<6.4" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/serializer": "^5.4|^6.0|^7.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.4.17" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-12-06T13:30:51+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v7.2.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "910c5db85a5356d0fea57680defec4e99eb9c8c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/910c5db85a5356d0fea57680defec4e99eb9c8c1", - "reference": "910c5db85a5356d0fea57680defec4e99eb9c8c1", - "shasum": "" - }, - "require": { - "php": ">=8.2", - "symfony/event-dispatcher-contracts": "^2.5|^3" - }, - "conflict": { - "symfony/dependency-injection": "<6.4", - "symfony/service-contracts": "<2.5" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/error-handler": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^6.4|^7.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.2.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-25T14:21:43+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.5.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7642f5e970b672283b7823222ae8ef8bbc160b9f", - "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/event-dispatcher": "^1" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/contracts", - "name": "symfony/contracts" - }, - "branch-alias": { - "dev-main": "3.5-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to dispatching event", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-25T14:20:29+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.4.17", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7", - "reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "symfony/filesystem": "^6.0|^7.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Finds files and directories via an intuitive fluent interface", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/finder/tree/v6.4.17" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-12-29T13:51:37+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.4.16", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "431771b7a6f662f1575b3cfc8fd7617aa9864d57" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/431771b7a6f662f1575b3cfc8fd7617aa9864d57", - "reference": "431771b7a6f662f1575b3cfc8fd7617aa9864d57", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php83": "^1.27" - }, - "conflict": { - "symfony/cache": "<6.4.12|>=7.0,<7.1.5" - }, - "require-dev": { - "doctrine/dbal": "^2.13.1|^3|^4", - "predis/predis": "^1.1|^2.0", - "symfony/cache": "^6.4.12|^7.1.5", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0", - "symfony/mime": "^5.4|^6.0|^7.0", - "symfony/rate-limiter": "^5.4|^6.0|^7.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Defines an object-oriented layer for the HTTP specification", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.4.16" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-11-13T18:58:10+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.4.17", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "c5647393c5ce11833d13e4b70fff4b571d4ac710" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/c5647393c5ce11833d13e4b70fff4b571d4ac710", - "reference": "c5647393c5ce11833d13e4b70fff4b571d4ac710", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/error-handler": "^6.4|^7.0", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<6.1", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<6.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/http-client-contracts": "<2.5", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/translation-contracts": "<2.5", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<6.4", - "symfony/var-dumper": "<6.3", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0|^7.0", - "symfony/clock": "^6.2|^7.0", - "symfony/config": "^6.1|^7.0", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/css-selector": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/dom-crawler": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", - "symfony/http-client-contracts": "^2.5|^3", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/property-access": "^5.4.5|^6.0.5|^7.0", - "symfony/routing": "^5.4|^6.0|^7.0", - "symfony/serializer": "^6.4.4|^7.0.4", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/translation": "^5.4|^6.0|^7.0", - "symfony/translation-contracts": "^2.5|^3", - "symfony/uid": "^5.4|^6.0|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/var-dumper": "^5.4|^6.4|^7.0", - "symfony/var-exporter": "^6.2|^7.0", - "twig/twig": "^2.13|^3.0.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpKernel\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides a structured process for converting a Request into a Response", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.4.17" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-12-31T14:49:31+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.4.13", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "c2f7e0d8d7ac8fe25faccf5d8cac462805db2663" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/c2f7e0d8d7ac8fe25faccf5d8cac462805db2663", - "reference": "c2f7e0d8d7ac8fe25faccf5d8cac462805db2663", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3|^4", - "php": ">=8.1", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/mime": "^6.2|^7.0", - "symfony/service-contracts": "^2.5|^3" - }, - "conflict": { - "symfony/http-client-contracts": "<2.5", - "symfony/http-kernel": "<5.4", - "symfony/messenger": "<6.2", - "symfony/mime": "<6.2", - "symfony/twig-bridge": "<6.2.1" - }, - "require-dev": { - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/http-client": "^5.4|^6.0|^7.0", - "symfony/messenger": "^6.2|^7.0", - "symfony/twig-bridge": "^6.2|^7.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Mailer\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Helps sending emails", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/mailer/tree/v6.4.13" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-25T14:18:03+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.4.17", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "ea87c8850a54ff039d3e0ab4ae5586dd4e6c0232" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/ea87c8850a54ff039d3e0ab4ae5586dd4e6c0232", - "reference": "ea87c8850a54ff039d3e0ab4ae5586dd4e6c0232", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0" - }, - "conflict": { - "egulias/email-validator": "~3.0.0", - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<5.4", - "symfony/serializer": "<6.4.3|>7.0,<7.0.3" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1|^4", - "league/html-to-markdown": "^5.0", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|^6.4|^7.0", - "symfony/property-access": "^5.4|^6.0|^7.0", - "symfony/property-info": "^5.4|^6.0|^7.0", - "symfony/serializer": "^6.4.3|^7.0.3" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Mime\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Allows manipulating MIME messages", - "homepage": "https://symfony.com", - "keywords": [ - "mime", - "mime-type" - ], - "support": { - "source": "https://github.com/symfony/mime/tree/v6.4.17" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-12-02T11:09:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.31.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", - "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-09T11:45:10+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.31.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", - "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's grapheme_* functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "grapheme", - "intl", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-09T11:45:10+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.31.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/c36586dcf89a12315939e00ec9b4474adcb1d773", - "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "symfony/polyfill-intl-normalizer": "^1.10" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Laurent Bassin", - "email": "laurent@bassin.info" - }, - { - "name": "Trevor Rowbotham", - "email": "trevor.rowbotham@pm.me" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "idn", - "intl", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.31.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-09T11:45:10+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.31.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "3833d7255cc303546435cb650316bff708a1c75c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", - "reference": "3833d7255cc303546435cb650316bff708a1c75c", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-09T11:45:10+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.31.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", - "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-09T11:45:10+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.31.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", - "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-09T11:45:10+00:00" - }, - { - "name": "symfony/polyfill-php83", - "version": "v1.31.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/2fb86d65e2d424369ad2905e83b236a8805ba491", - "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php83\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.31.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-09T11:45:10+00:00" - }, - { - "name": "symfony/polyfill-uuid", - "version": "v1.31.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-uuid.git", - "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/21533be36c24be3f4b1669c4725c7d1d2bab4ae2", - "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "provide": { - "ext-uuid": "*" - }, - "suggest": { - "ext-uuid": "For best performance" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Uuid\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Grégoire Pineau", - "email": "lyrixx@lyrixx.info" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for uuid functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "uuid" - ], - "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.31.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-09T11:45:10+00:00" - }, - { - "name": "symfony/process", - "version": "v6.4.15", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "3cb242f059c14ae08591c5c4087d1fe443564392" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/3cb242f059c14ae08591c5c4087d1fe443564392", - "reference": "3cb242f059c14ae08591c5c4087d1fe443564392", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Executes commands in sub-processes", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/process/tree/v6.4.15" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-11-06T14:19:14+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.4.16", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "91e02e606b4b705c2f4fb42f7e7708b7923a3220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/91e02e606b4b705c2f4fb42f7e7708b7923a3220", - "reference": "91e02e606b4b705c2f4fb42f7e7708b7923a3220", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<6.2", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12|^2", - "psr/log": "^1|^2|^3", - "symfony/config": "^6.2|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", - "symfony/yaml": "^5.4|^6.0|^7.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Routing\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Maps an HTTP request to a set of configuration variables", - "homepage": "https://symfony.com", - "keywords": [ - "router", - "routing", - "uri", - "url" - ], - "support": { - "source": "https://github.com/symfony/routing/tree/v6.4.16" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-11-13T15:31:34+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.5.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0", - "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/container": "^1.1|^2.0", - "symfony/deprecation-contracts": "^2.5|^3" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/contracts", - "name": "symfony/contracts" - }, - "branch-alias": { - "dev-main": "3.5-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - }, - "exclude-from-classmap": [ - "/Test/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to writing services", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.5.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-25T14:20:29+00:00" - }, - { - "name": "symfony/string", - "version": "v7.2.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/446e0d146f991dde3e73f45f2c97a9faad773c82", - "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82", - "shasum": "" - }, - "require": { - "php": ">=8.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.5" - }, - "require-dev": { - "symfony/emoji": "^7.1", - "symfony/error-handler": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", - "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^6.4|^7.0" - }, - "type": "library", - "autoload": { - "files": [ - "Resources/functions.php" - ], - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v7.2.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-11-13T13:31:26+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.4.13", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "bee9bfabfa8b4045a66bf82520e492cddbaffa66" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/bee9bfabfa8b4045a66bf82520e492cddbaffa66", - "reference": "bee9bfabfa8b4045a66bf82520e492cddbaffa66", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.5|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-client-contracts": "<2.5", - "symfony/http-kernel": "<5.4", - "symfony/service-contracts": "<2.5", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "nikic/php-parser": "^4.18|^5.0", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", - "symfony/http-client-contracts": "^2.5|^3.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", - "symfony/intl": "^5.4|^6.0|^7.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/routing": "^5.4|^6.0|^7.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^5.4|^6.0|^7.0" - }, - "type": "library", - "autoload": { - "files": [ - "Resources/functions.php" - ], - "psr-4": { - "Symfony\\Component\\Translation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to internationalize your application", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/translation/tree/v6.4.13" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-27T18:14:25+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.5.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "4667ff3bd513750603a09c8dedbea942487fb07c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/4667ff3bd513750603a09c8dedbea942487fb07c", - "reference": "4667ff3bd513750603a09c8dedbea942487fb07c", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/contracts", - "name": "symfony/contracts" - }, - "branch-alias": { - "dev-main": "3.5-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - }, - "exclude-from-classmap": [ - "/Test/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to translation", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.5.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-25T14:20:29+00:00" - }, - { - "name": "symfony/uid", - "version": "v6.4.13", - "source": { - "type": "git", - "url": "https://github.com/symfony/uid.git", - "reference": "18eb207f0436a993fffbdd811b5b8fa35fa5e007" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/18eb207f0436a993fffbdd811b5b8fa35fa5e007", - "reference": "18eb207f0436a993fffbdd811b5b8fa35fa5e007", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/polyfill-uuid": "^1.15" - }, - "require-dev": { - "symfony/console": "^5.4|^6.0|^7.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Uid\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Grégoire Pineau", - "email": "lyrixx@lyrixx.info" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides an object-oriented API to generate and represent UIDs", - "homepage": "https://symfony.com", - "keywords": [ - "UID", - "ulid", - "uuid" - ], - "support": { - "source": "https://github.com/symfony/uid/tree/v6.4.13" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-25T14:18:03+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.4.15", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "38254d5a5ac2e61f2b52f9caf54e7aa3c9d36b80" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/38254d5a5ac2e61f2b52f9caf54e7aa3c9d36b80", - "reference": "38254d5a5ac2e61f2b52f9caf54e7aa3c9d36b80", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/error-handler": "^6.3|^7.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/uid": "^5.4|^6.0|^7.0", - "twig/twig": "^2.13|^3.0.4" - }, - "bin": [ - "Resources/bin/var-dump-server" - ], - "type": "library", - "autoload": { - "files": [ - "Resources/functions/dump.php" - ], - "psr-4": { - "Symfony\\Component\\VarDumper\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides mechanisms for walking through any arbitrary PHP variable", - "homepage": "https://symfony.com", - "keywords": [ - "debug", - "dump" - ], - "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.4.15" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-11-08T15:28:48+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "v2.3.0", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "0d72ac1c00084279c1816675284073c5a337c20d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0d72ac1c00084279c1816675284073c5a337c20d", - "reference": "0d72ac1c00084279c1816675284073c5a337c20d", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^7.4 || ^8.0", - "symfony/css-selector": "^5.4 || ^6.0 || ^7.0" - }, - "require-dev": { - "phpstan/phpstan": "^2.0", - "phpstan/phpstan-phpunit": "^2.0", - "phpunit/phpunit": "^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.3.0" - }, - "time": "2024-12-21T16:25:41+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.6.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "a59a13791077fe3d44f90e7133eb68e7d22eaff2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/a59a13791077fe3d44f90e7133eb68e7d22eaff2", - "reference": "a59a13791077fe3d44f90e7133eb68e7d22eaff2", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.1.3", - "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.3", - "symfony/polyfill-ctype": "^1.24", - "symfony/polyfill-mbstring": "^1.24", - "symfony/polyfill-php80": "^1.24" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "ext-filter": "*", - "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - }, - "branch-alias": { - "dev-master": "5.6-dev" - } - }, - "autoload": { - "psr-4": { - "Dotenv\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Vance Lucas", - "email": "vance@vancelucas.com", - "homepage": "https://github.com/vlucas" - } - ], - "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", - "keywords": [ - "dotenv", - "env", - "environment" - ], - "support": { - "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2024-07-20T21:52:34+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b1d923f88091c6bf09699efcd7c8a1b1bfd7351d", - "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d", - "shasum": "" - }, - "require": { - "php": ">=7.0.0" - }, - "require-dev": { - "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" - }, - "suggest": { - "ext-intl": "Use Intl for transliterator_transliterate() support" - }, - "type": "library", - "autoload": { - "psr-4": { - "voku\\": "src/voku/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Lars Moelleken", - "homepage": "https://www.moelleken.org/" - } - ], - "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", - "homepage": "https://github.com/voku/portable-ascii", - "keywords": [ - "ascii", - "clean", - "php" - ], - "support": { - "issues": "https://github.com/voku/portable-ascii/issues", - "source": "https://github.com/voku/portable-ascii/tree/2.0.3" - }, - "funding": [ - { - "url": "https://www.paypal.me/moelleken", - "type": "custom" - }, - { - "url": "https://github.com/voku", - "type": "github" - }, - { - "url": "https://opencollective.com/portable-ascii", - "type": "open_collective" - }, - { - "url": "https://www.patreon.com/voku", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", - "type": "tidelift" - } - ], - "time": "2024-11-21T01:49:47+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.11.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "php": "^7.2 || ^8.0" - }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.13" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "support": { - "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.11.0" - }, - "time": "2022-06-03T18:03:27+00:00" - } - ], - "packages-dev": [ - { - "name": "fakerphp/faker", - "version": "v1.24.1", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", - "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", - "shasum": "" - }, - "require": { - "php": "^7.4 || ^8.0", - "psr/container": "^1.0 || ^2.0", - "symfony/deprecation-contracts": "^2.2 || ^3.0" - }, - "conflict": { - "fzaninotto/faker": "*" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "doctrine/persistence": "^1.3 || ^2.0", - "ext-intl": "*", - "phpunit/phpunit": "^9.5.26", - "symfony/phpunit-bridge": "^5.4.16" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.24.1" - }, - "time": "2024-11-21T13:46:39+00:00" - }, - { - "name": "filp/whoops", - "version": "2.16.0", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "befcdc0e5dce67252aa6322d82424be928214fa2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/befcdc0e5dce67252aa6322d82424be928214fa2", - "reference": "befcdc0e5dce67252aa6322d82424be928214fa2", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.3", - "symfony/var-dumper": "^4.0 || ^5.0" - }, - "suggest": { - "symfony/var-dumper": "Pretty print complex values better with var-dumper available", - "whoops/soap": "Formats errors as SOAP responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev" - } - }, - "autoload": { - "psr-4": { - "Whoops\\": "src/Whoops/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Filipe Dobreira", - "homepage": "https://github.com/filp", - "role": "Developer" - } - ], - "description": "php error handling for cool kids", - "homepage": "https://filp.github.io/whoops/", - "keywords": [ - "error", - "exception", - "handling", - "library", - "throwable", - "whoops" - ], - "support": { - "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.16.0" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2024-09-25T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "larastan/larastan", - "version": "v2.9.12", - "source": { - "type": "git", - "url": "https://github.com/larastan/larastan.git", - "reference": "19012b39fbe4dede43dbe0c126d9681827a5e908" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/larastan/larastan/zipball/19012b39fbe4dede43dbe0c126d9681827a5e908", - "reference": "19012b39fbe4dede43dbe0c126d9681827a5e908", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/console": "^9.52.16 || ^10.28.0 || ^11.16", - "illuminate/container": "^9.52.16 || ^10.28.0 || ^11.16", - "illuminate/contracts": "^9.52.16 || ^10.28.0 || ^11.16", - "illuminate/database": "^9.52.16 || ^10.28.0 || ^11.16", - "illuminate/http": "^9.52.16 || ^10.28.0 || ^11.16", - "illuminate/pipeline": "^9.52.16 || ^10.28.0 || ^11.16", - "illuminate/support": "^9.52.16 || ^10.28.0 || ^11.16", - "php": "^8.0.2", - "phpmyadmin/sql-parser": "^5.9.0", - "phpstan/phpstan": "^1.12.11" - }, - "require-dev": { - "doctrine/coding-standard": "^12.0", - "laravel/framework": "^9.52.16 || ^10.28.0 || ^11.16", - "mockery/mockery": "^1.5.1", - "nikic/php-parser": "^4.19.1", - "orchestra/canvas": "^7.11.1 || ^8.11.0 || ^9.0.2", - "orchestra/testbench-core": "^7.33.0 || ^8.13.0 || ^9.0.9", - "phpstan/phpstan-deprecation-rules": "^1.2", - "phpunit/phpunit": "^9.6.13 || ^10.5.16" - }, - "suggest": { - "orchestra/testbench": "Using Larastan for analysing a package needs Testbench" - }, - "type": "phpstan-extension", - "extra": { - "phpstan": { - "includes": [ - "extension.neon" - ] - }, - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "psr-4": { - "Larastan\\Larastan\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Can Vural", - "email": "can9119@gmail.com" - }, - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - } - ], - "description": "Larastan - Discover bugs in your code without running it. A phpstan/phpstan extension for Laravel", - "keywords": [ - "PHPStan", - "code analyse", - "code analysis", - "larastan", - "laravel", - "package", - "php", - "static analysis" - ], - "support": { - "issues": "https://github.com/larastan/larastan/issues", - "source": "https://github.com/larastan/larastan/tree/v2.9.12" - }, - "funding": [ - { - "url": "https://github.com/canvural", - "type": "github" - } - ], - "time": "2024-11-26T23:09:02+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.6.12", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/1f4efdd7d3beafe9807b08156dfcb176d18f1699", - "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": ">=7.3" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.6.17", - "symplify/easy-coding-standard": "^12.1.14" - }, - "type": "library", - "autoload": { - "files": [ - "library/helpers.php", - "library/Mockery.php" - ], - "psr-4": { - "Mockery\\": "library/Mockery" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "https://github.com/padraic", - "role": "Author" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "https://davedevelopment.co.uk", - "role": "Developer" - }, - { - "name": "Nathanael Esayeas", - "email": "nathanael.esayeas@protonmail.com", - "homepage": "https://github.com/ghostwriter", - "role": "Lead Developer" - } - ], - "description": "Mockery is a simple yet flexible PHP mock object framework", - "homepage": "https://github.com/mockery/mockery", - "keywords": [ - "BDD", - "TDD", - "library", - "mock", - "mock objects", - "mockery", - "stub", - "test", - "test double", - "testing" - ], - "support": { - "docs": "https://docs.mockery.io/", - "issues": "https://github.com/mockery/mockery/issues", - "rss": "https://github.com/mockery/mockery/releases.atom", - "security": "https://github.com/mockery/mockery/security/advisories", - "source": "https://github.com/mockery/mockery" - }, - "time": "2024-05-16T03:13:13+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.12.1", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/123267b2c49fbf30d78a7b2d333f6be754b94845", - "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "conflict": { - "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3 <3.2.2" - }, - "require-dev": { - "doctrine/collections": "^1.6.8", - "doctrine/common": "^2.13.3 || ^3.2.2", - "phpspec/prophecy": "^1.10", - "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" - }, - "type": "library", - "autoload": { - "files": [ - "src/DeepCopy/deep_copy.php" - ], - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.12.1" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2024-11-08T17:47:46+00:00" - }, - { - "name": "phar-io/manifest", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "54750ef60c58e43759730615a392c31c80e23176" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", - "reference": "54750ef60c58e43759730615a392c31c80e23176", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-phar": "*", - "ext-xmlwriter": "*", - "phar-io/version": "^3.0.1", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "support": { - "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2024-03-03T12:33:53+00:00" - }, - { - "name": "phar-io/version", - "version": "3.2.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Library for handling version information and constraints", - "support": { - "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.2.1" - }, - "time": "2022-02-21T01:04:05+00:00" - }, - { - "name": "phpmyadmin/sql-parser", - "version": "5.10.2", - "source": { - "type": "git", - "url": "https://github.com/phpmyadmin/sql-parser.git", - "reference": "72afbce7e4b421593b60d2eb7281e37a50734df8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpmyadmin/sql-parser/zipball/72afbce7e4b421593b60d2eb7281e37a50734df8", - "reference": "72afbce7e4b421593b60d2eb7281e37a50734df8", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-mbstring": "^1.3", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "phpmyadmin/motranslator": "<3.0" - }, - "require-dev": { - "phpbench/phpbench": "^1.1", - "phpmyadmin/coding-standard": "^3.0", - "phpmyadmin/motranslator": "^4.0 || ^5.0", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.9.12", - "phpstan/phpstan-phpunit": "^1.3.3", - "phpunit/phpunit": "^8.5 || ^9.6", - "psalm/plugin-phpunit": "^0.16.1", - "vimeo/psalm": "^4.11", - "zumba/json-serializer": "~3.0.2" - }, - "suggest": { - "ext-mbstring": "For best performance", - "phpmyadmin/motranslator": "Translate messages to your favorite locale" - }, - "bin": [ - "bin/highlight-query", - "bin/lint-query", - "bin/sql-parser", - "bin/tokenize-query" - ], - "type": "library", - "autoload": { - "psr-4": { - "PhpMyAdmin\\SqlParser\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "The phpMyAdmin Team", - "email": "developers@phpmyadmin.net", - "homepage": "https://www.phpmyadmin.net/team/" - } - ], - "description": "A validating SQL lexer and parser with a focus on MySQL dialect.", - "homepage": "https://github.com/phpmyadmin/sql-parser", - "keywords": [ - "analysis", - "lexer", - "parser", - "query linter", - "sql", - "sql lexer", - "sql linter", - "sql parser", - "sql syntax highlighter", - "sql tokenizer" - ], - "support": { - "issues": "https://github.com/phpmyadmin/sql-parser/issues", - "source": "https://github.com/phpmyadmin/sql-parser" - }, - "funding": [ - { - "url": "https://www.phpmyadmin.net/donate/", - "type": "other" - } - ], - "time": "2024-12-05T15:04:09+00:00" - }, - { - "name": "phpstan/phpstan", - "version": "1.12.15", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan.git", - "reference": "c91d4e8bc056f46cf653656e6f71004b254574d1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/c91d4e8bc056f46cf653656e6f71004b254574d1", - "reference": "c91d4e8bc056f46cf653656e6f71004b254574d1", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0" - }, - "conflict": { - "phpstan/phpstan-shim": "*" - }, - "bin": [ - "phpstan", - "phpstan.phar" - ], - "type": "library", - "autoload": { - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPStan - PHP Static Analysis Tool", - "keywords": [ - "dev", - "static analysis" - ], - "support": { - "docs": "https://phpstan.org/user-guide/getting-started", - "forum": "https://github.com/phpstan/phpstan/discussions", - "issues": "https://github.com/phpstan/phpstan/issues", - "security": "https://github.com/phpstan/phpstan/security/policy", - "source": "https://github.com/phpstan/phpstan-src" - }, - "funding": [ - { - "url": "https://github.com/ondrejmirtes", - "type": "github" - }, - { - "url": "https://github.com/phpstan", - "type": "github" - } - ], - "time": "2025-01-05T16:40:22+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "10.1.16", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "7e308268858ed6baedc8704a304727d20bc07c77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7e308268858ed6baedc8704a304727d20bc07c77", - "reference": "7e308268858ed6baedc8704a304727d20bc07c77", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.19.1 || ^5.1.0", - "php": ">=8.1", - "phpunit/php-file-iterator": "^4.1.0", - "phpunit/php-text-template": "^3.0.1", - "sebastian/code-unit-reverse-lookup": "^3.0.0", - "sebastian/complexity": "^3.2.0", - "sebastian/environment": "^6.1.0", - "sebastian/lines-of-code": "^2.0.2", - "sebastian/version": "^4.0.1", - "theseer/tokenizer": "^1.2.3" - }, - "require-dev": { - "phpunit/phpunit": "^10.1" - }, - "suggest": { - "ext-pcov": "PHP extension that provides line coverage", - "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "10.1.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.16" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-08-22T04:31:57+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "4.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", - "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-08-31T06:24:48+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "4.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", - "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^10.0" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Invoke callables with a timeout", - "homepage": "https://github.com/sebastianbergmann/php-invoker/", - "keywords": [ - "process" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:56:09+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "3.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", - "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-08-31T14:07:24+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "6.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", - "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:57:52+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "10.5.40", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "e6ddda95af52f69c1e0c7b4f977cccb58048798c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e6ddda95af52f69c1e0c7b4f977cccb58048798c", - "reference": "e6ddda95af52f69c1e0c7b4f977cccb58048798c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.12.1", - "phar-io/manifest": "^2.0.4", - "phar-io/version": "^3.2.1", - "php": ">=8.1", - "phpunit/php-code-coverage": "^10.1.16", - "phpunit/php-file-iterator": "^4.1.0", - "phpunit/php-invoker": "^4.0.0", - "phpunit/php-text-template": "^3.0.1", - "phpunit/php-timer": "^6.0.0", - "sebastian/cli-parser": "^2.0.1", - "sebastian/code-unit": "^2.0.0", - "sebastian/comparator": "^5.0.3", - "sebastian/diff": "^5.1.1", - "sebastian/environment": "^6.1.0", - "sebastian/exporter": "^5.1.2", - "sebastian/global-state": "^6.0.2", - "sebastian/object-enumerator": "^5.0.0", - "sebastian/recursion-context": "^5.0.0", - "sebastian/type": "^4.0.0", - "sebastian/version": "^4.0.1" - }, - "suggest": { - "ext-soap": "To be able to generate mocks based on WSDL files" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "10.5-dev" - } - }, - "autoload": { - "files": [ - "src/Framework/Assert/Functions.php" - ], - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.40" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", - "type": "tidelift" - } - ], - "time": "2024-12-21T05:49:06+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/c34583b87e7b7a8055bf6c450c2c77ce32a24084", - "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for parsing CLI options", - "homepage": "https://github.com/sebastianbergmann/cli-parser", - "support": { - "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-02T07:12:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", - "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the PHP code units", - "homepage": "https://github.com/sebastianbergmann/code-unit", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:58:43+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", - "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:59:15+00:00" - }, - { - "name": "sebastian/comparator", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", - "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-mbstring": "*", - "php": ">=8.1", - "sebastian/diff": "^5.0", - "sebastian/exporter": "^5.0" - }, - "require-dev": { - "phpunit/phpunit": "^10.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/comparator/issues", - "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-10-18T14:56:07+00:00" - }, - { - "name": "sebastian/complexity", - "version": "3.2.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "68ff824baeae169ec9f2137158ee529584553799" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", - "reference": "68ff824baeae169ec9f2137158ee529584553799", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.2-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "security": "https://github.com/sebastianbergmann/complexity/security/policy", - "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-12-21T08:37:17+00:00" - }, - { - "name": "sebastian/diff", - "version": "5.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e", - "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0", - "symfony/process": "^6.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/5.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-02T07:15:17+00:00" - }, - { - "name": "sebastian/environment", - "version": "6.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "8074dbcd93529b357029f5cc5058fd3e43666984" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/8074dbcd93529b357029f5cc5058fd3e43666984", - "reference": "8074dbcd93529b357029f5cc5058fd3e43666984", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "https://github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "security": "https://github.com/sebastianbergmann/environment/security/policy", - "source": "https://github.com/sebastianbergmann/environment/tree/6.1.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-23T08:47:14+00:00" - }, - { - "name": "sebastian/exporter", - "version": "5.1.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "955288482d97c19a372d3f31006ab3f37da47adf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/955288482d97c19a372d3f31006ab3f37da47adf", - "reference": "955288482d97c19a372d3f31006ab3f37da47adf", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": ">=8.1", - "sebastian/recursion-context": "^5.0" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "https://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/exporter/issues", - "security": "https://github.com/sebastianbergmann/exporter/security/policy", - "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-02T07:17:12+00:00" - }, - { - "name": "sebastian/global-state", - "version": "6.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", - "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "sebastian/object-reflector": "^3.0", - "sebastian/recursion-context": "^5.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "https://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "security": "https://github.com/sebastianbergmann/global-state/security/policy", - "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-02T07:19:19+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", - "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for counting the lines of code in PHP source code", - "homepage": "https://github.com/sebastianbergmann/lines-of-code", - "support": { - "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-12-21T08:38:20+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "5.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", - "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "sebastian/object-reflector": "^3.0", - "sebastian/recursion-context": "^5.0" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T07:08:32+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", - "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T07:06:18+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "5.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "05909fb5bc7df4c52992396d0116aed689f93712" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", - "reference": "05909fb5bc7df4c52992396d0116aed689f93712", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "https://github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T07:05:40+00:00" - }, - { - "name": "sebastian/type", - "version": "4.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", - "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the types of the PHP type system", - "homepage": "https://github.com/sebastianbergmann/type", - "support": { - "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T07:10:45+00:00" - }, - { - "name": "sebastian/version", - "version": "4.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", - "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "support": { - "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-07T11:34:05+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.11.2", - "source": { - "type": "git", - "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "1368f4a58c3c52114b86b1abe8f4098869cb0079" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/1368f4a58c3c52114b86b1abe8f4098869cb0079", - "reference": "1368f4a58c3c52114b86b1abe8f4098869cb0079", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" - }, - "bin": [ - "bin/phpcbf", - "bin/phpcs" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Greg Sherwood", - "role": "Former lead" - }, - { - "name": "Juliette Reinders Folmer", - "role": "Current lead" - }, - { - "name": "Contributors", - "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards", - "static analysis" - ], - "support": { - "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues", - "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy", - "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer", - "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki" - }, - "funding": [ - { - "url": "https://github.com/PHPCSStandards", - "type": "github" - }, - { - "url": "https://github.com/jrfnl", - "type": "github" - }, - { - "url": "https://opencollective.com/php_codesniffer", - "type": "open_collective" - } - ], - "time": "2024-12-11T16:04:26+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.3", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.3" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2024-03-03T12:36:25+00:00" - } - ], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": {}, - "prefer-stable": false, - "prefer-lowest": false, - "platform": { - "php": "^8.1", - "ext-json": "*" - }, - "platform-dev": {}, - "plugin-api-version": "2.6.0" -} diff --git a/docker/streamline-src/config/app.php b/docker/streamline-src/config/app.php deleted file mode 100755 index ca1f8881..00000000 --- a/docker/streamline-src/config/app.php +++ /dev/null @@ -1,259 +0,0 @@ - env('APP_NAME', 'Stre@mline'), - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services your application utilizes. Set this in your ".env" file. - | - */ - 'env' => env('APP_ENV', 'production'), - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - 'debug' => env('APP_DEBUG', true), - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - 'url' => env('APP_URL', 'http://localhost'), - /* - |-------------------------------------------------------------------------- - | Application Timezone - |-------------------------------------------------------------------------- - | - | Here you may specify the default timezone for your application, which - | will be used by the PHP date and date-time functions. We have gone - | ahead and set this to a sensible default for you out of the box. - | - */ - 'timezone' => 'Africa/Kampala', - /* - |-------------------------------------------------------------------------- - | Application Locale Configuration - |-------------------------------------------------------------------------- - | - | The application locale determines the default locale that will be used - | by the translation service provider. You are free to set this value - | to any of the locales which will be supported by the application. - | - */ - 'locale' => 'en', - /* - |-------------------------------------------------------------------------- - | Application Fallback Locale - |-------------------------------------------------------------------------- - | - | The fallback locale determines the locale to use when the current one - | is not available. You may change the value to correspond to any of - | the language folders that are provided through your application. - | - */ - 'fallback_locale' => 'en', - /* - |-------------------------------------------------------------------------- - | Encryption Key - |-------------------------------------------------------------------------- - | - | This key is used by the Illuminate encrypter service and should be set - | to a random, 32 character string, otherwise these encrypted strings - | will not be safe. Please do this before deploying an application! - | - */ - 'key' => env('APP_KEY'), - 'cipher' => 'AES-256-CBC', - /* - |-------------------------------------------------------------------------- - | Logging Configuration - |-------------------------------------------------------------------------- - | - | Here you may configure the log settings for your application. Out of - | the box, Laravel uses the Monolog PHP logging library. This gives - | you a variety of powerful log handlers / formatters to utilize. - | - | Available Settings: "single", "daily", "syslog", "errorlog" - | - */ - 'log' => env('APP_LOG', 'single'), - 'log_level' => env('APP_LOG_LEVEL', 'debug'), - - //hide the stre@mline server sensitive details when it is in dev mode - 'debug_blacklist' => [ - '_ENV' => [ - 'APP_KEY', - 'DB_PASSWORD', - 'DB_DATABASE', - 'DB_USERNAME', - 'DB_CONNECTION', - 'DB_HOST', - 'DB_PORT', - 'REDIS_PASSWORD', - 'MAIL_PASSWORD', - 'PUSHER_APP_KEY', - 'PUSHER_APP_SECRET', - ], - '_SERVER' => [ - 'APP_KEY', - 'DB_PASSWORD', - 'DB_DATABASE', - 'DB_USERNAME', - 'DB_CONNECTION', - 'DB_HOST', - 'DB_PORT', - 'DOCUMENT_ROOT', - 'REMOTE_PORT', - 'SCRIPT_FILENAME', - 'SERVER_SOFTWARE', - 'SERVER_PROTOCOL', - 'SERVER_NAME', - 'SERVER_SOFTWARE', - 'SERVER_PROTOCOL', - 'REMOTE_ADDR', - 'MAIL_PASSWORD', - 'PUSHER_APP_KEY', - 'PUSHER_APP_SECRET', - ], - '_POST' => [ - 'password', - ], - ], - /* - |-------------------------------------------------------------------------- - | Autoloaded Service Providers - |-------------------------------------------------------------------------- - | - | The service providers listed here will be automatically loaded on the - | request to your application. Feel free to add your own services to - | this array to grant expanded functionality to your applications. - | - */ - 'providers' => [ - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - /* - * Package Service Providers... - */ - Laravel\Tinker\TinkerServiceProvider::class, - /* - * Application Service Providers... - */ - Streamline\Providers\AppServiceProvider::class, - Streamline\Providers\AuthServiceProvider::class, - // Streamline\Providers\BroadcastServiceProvider::class, - Streamline\Providers\EventServiceProvider::class, - Streamline\Providers\RouteServiceProvider::class, - /* - * Third party - */ - Laracasts\Flash\FlashServiceProvider::class, - Collective\Html\HtmlServiceProvider::class, - Spatie\Permission\PermissionServiceProvider::class, - OwenIt\Auditing\AuditingServiceProvider::class, - Barryvdh\Snappy\ServiceProvider::class, - Milon\Barcode\BarcodeServiceProvider::class, - Barryvdh\DomPDF\ServiceProvider::class, - ], - /* - |-------------------------------------------------------------------------- - | Class Aliases - |-------------------------------------------------------------------------- - | - | This array of class aliases will be registered when this application - | is started. However, feel free to register as many as you wish as - | the aliases are "lazy" loaded so they don't hinder performance. - | - */ - 'aliases' => [ - 'App' => Illuminate\Support\Facades\App::class, - 'Artisan' => Illuminate\Support\Facades\Artisan::class, - 'Auth' => Illuminate\Support\Facades\Auth::class, - 'Blade' => Illuminate\Support\Facades\Blade::class, - 'Broadcast' => Illuminate\Support\Facades\Broadcast::class, - 'Bus' => Illuminate\Support\Facades\Bus::class, - 'Cache' => Illuminate\Support\Facades\Cache::class, - 'Config' => Illuminate\Support\Facades\Config::class, - 'Cookie' => Illuminate\Support\Facades\Cookie::class, - 'Crypt' => Illuminate\Support\Facades\Crypt::class, - 'DB' => Illuminate\Support\Facades\DB::class, - 'DNS1D' => Milon\Barcode\Facades\DNS1DFacade::class, - 'DNS2D' => Milon\Barcode\Facades\DNS2DFacade::class, - 'Eloquent' => Illuminate\Database\Eloquent\Model::class, - 'Event' => Illuminate\Support\Facades\Event::class, - 'File' => Illuminate\Support\Facades\File::class, - 'Gate' => Illuminate\Support\Facades\Gate::class, - 'Hash' => Illuminate\Support\Facades\Hash::class, - 'Lang' => Illuminate\Support\Facades\Lang::class, - 'Log' => Illuminate\Support\Facades\Log::class, - 'Mail' => Illuminate\Support\Facades\Mail::class, - 'Notification' => Illuminate\Support\Facades\Notification::class, - 'Password' => Illuminate\Support\Facades\Password::class, - 'Queue' => Illuminate\Support\Facades\Queue::class, - 'Redirect' => Illuminate\Support\Facades\Redirect::class, - 'Redis' => Illuminate\Support\Facades\Redis::class, - 'Request' => Illuminate\Support\Facades\Request::class, - 'Response' => Illuminate\Support\Facades\Response::class, - 'Route' => Illuminate\Support\Facades\Route::class, - 'Schema' => Illuminate\Support\Facades\Schema::class, - 'Session' => Illuminate\Support\Facades\Session::class, - 'Storage' => Illuminate\Support\Facades\Storage::class, - 'URL' => Illuminate\Support\Facades\URL::class, - 'Validator' => Illuminate\Support\Facades\Validator::class, - 'View' => Illuminate\Support\Facades\View::class, - 'Form' => Collective\Html\FormFacade::class, - 'Html' => Collective\Html\HtmlFacade::class, - 'SnappyPDF' => Barryvdh\Snappy\Facades\SnappyPdf::class, - 'SnappyImage' => Barryvdh\Snappy\Facades\SnappyImage::class, - 'DomPDF' => Barryvdh\DomPDF\Facade\Pdf::class, - ], -]; diff --git a/docker/streamline-src/config/session.php b/docker/streamline-src/config/session.php deleted file mode 100755 index f015e949..00000000 --- a/docker/streamline-src/config/session.php +++ /dev/null @@ -1,179 +0,0 @@ - env('SESSION_DRIVER', 'file'), - - /* - |-------------------------------------------------------------------------- - | Session Lifetime - |-------------------------------------------------------------------------- - | - | Here you may specify the number of minutes that you wish the session - | to be allowed to remain idle before it expires. If you want them - | to immediately expire on the browser closing, set that option. - | - */ - - 'lifetime' => env('SESSION_LIFETIME', 20), - - 'expire_on_close' => true, - - /* - |-------------------------------------------------------------------------- - | Session Encryption - |-------------------------------------------------------------------------- - | - | This option allows you to easily specify that all of your session data - | should be encrypted before it is stored. All encryption will be run - | automatically by Laravel and you can use the Session like normal. - | - */ - - 'encrypt' => false, - - /* - |-------------------------------------------------------------------------- - | Session File Location - |-------------------------------------------------------------------------- - | - | When using the native session driver, we need a location where session - | files may be stored. A default has been set for you but a different - | location may be specified. This is only needed for file sessions. - | - */ - - 'files' => storage_path('framework/sessions'), - - /* - |-------------------------------------------------------------------------- - | Session Database Connection - |-------------------------------------------------------------------------- - | - | When using the "database" or "redis" session drivers, you may specify a - | connection that should be used to manage these sessions. This should - | correspond to a connection in your database configuration options. - | - */ - - 'connection' => null, - - /* - |-------------------------------------------------------------------------- - | Session Database Table - |-------------------------------------------------------------------------- - | - | When using the "database" session driver, you may specify the table we - | should use to manage the sessions. Of course, a sensible default is - | provided for you; however, you are free to change this as needed. - | - */ - - 'table' => 'sessions', - - /* - |-------------------------------------------------------------------------- - | Session Cache Store - |-------------------------------------------------------------------------- - | - | When using the "apc" or "memcached" session drivers, you may specify a - | cache store that should be used for these sessions. This value must - | correspond with one of the application's configured cache stores. - | - */ - - 'store' => null, - - /* - |-------------------------------------------------------------------------- - | Session Sweeping Lottery - |-------------------------------------------------------------------------- - | - | Some session drivers must manually sweep their storage location to get - | rid of old sessions from storage. Here are the chances that it will - | happen on a given request. By default, the odds are 2 out of 100. - | - */ - - 'lottery' => [2, 100], - - /* - |-------------------------------------------------------------------------- - | Session Cookie Name - |-------------------------------------------------------------------------- - | - | Here you may change the name of the cookie used to identify a session - | instance by ID. The name specified here will get used every time a - | new session cookie is created by the framework for every driver. - | - */ - - 'cookie' => 'laravel_session', - - /* - |-------------------------------------------------------------------------- - | Session Cookie Path - |-------------------------------------------------------------------------- - | - | The session cookie path determines the path for which the cookie will - | be regarded as available. Typically, this will be the root path of - | your application but you are free to change this when necessary. - | - */ - - 'path' => '/', - - /* - |-------------------------------------------------------------------------- - | Session Cookie Domain - |-------------------------------------------------------------------------- - | - | Here you may change the domain of the cookie used to identify a session - | in your application. This will determine which domains the cookie is - | available to in your application. A sensible default has been set. - | - */ - - 'domain' => env('SESSION_DOMAIN', null), - - /* - |-------------------------------------------------------------------------- - | HTTPS Only Cookies - |-------------------------------------------------------------------------- - | - | By setting this option to true, session cookies will only be sent back - | to the server if the browser has a HTTPS connection. This will keep - | the cookie from being sent to you if it can not be done securely. - | - */ - - 'secure' => env('SESSION_SECURE_COOKIE', false), - - /* - |-------------------------------------------------------------------------- - | HTTP Access Only - |-------------------------------------------------------------------------- - | - | Setting this value to true will prevent JavaScript from accessing the - | value of the cookie and the cookie will only be accessible through - | the HTTP protocol. You are free to modify this option if needed. - | - */ - - 'http_only' => true, - -]; diff --git a/docker/streamline-src/database/migrations/2023_09_21_132920_create_cancer_protocols_table.php b/docker/streamline-src/database/migrations/2023_09_21_132920_create_cancer_protocols_table.php deleted file mode 100644 index 8936b373..00000000 --- a/docker/streamline-src/database/migrations/2023_09_21_132920_create_cancer_protocols_table.php +++ /dev/null @@ -1,37 +0,0 @@ -id(); - $table->string('name'); - $table->integer('protocol_billing_type'); - $table->integer('protocol_cost')->default(0)->nullable(); - $table->text('pre_chemo_comments'); - $table->longText('pre_chemo_drugs'); - $table->text('chemo_comments'); - $table->longText('chemo_drugs'); - $table->text('post_chemo_comments'); - $table->longText('post_chemo_drugs'); - $table->integer('created_by'); - $table->integer('updated_by')->nullable(); - $table->timestamps(); - $table->softDeletes(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void { - Schema::dropIfExists('cancer_protocols'); - } -}; diff --git a/docker/streamline-src/database/migrations/2024_03_29_060516_restructure_debtors_table.php b/docker/streamline-src/database/migrations/2024_03_29_060516_restructure_debtors_table.php deleted file mode 100644 index f70ed259..00000000 --- a/docker/streamline-src/database/migrations/2024_03_29_060516_restructure_debtors_table.php +++ /dev/null @@ -1,101 +0,0 @@ -get(); - - DB::beginTransaction(); - - try { - Schema::table('debtor_payments', function (Blueprint $table) { - $table->integer('received_id')->nullable(); - $table->integer('received_amount')->nullable(); - $table->integer('banked_id')->nullable(); - $table->date('date_paid')->nullable(); - $table->string('comment')->nullable(); - $table->string('receipt_number')->nullable(); - $table->integer('amount_written_off')->nullable()->change(); - - $table->dropColumn([ - 'banked', 'received_amount_history', 'received_id_history', 'receipt_no', 'date', - 'banked_history', 'amount_paid_history', 'date_paid_history', 'staff_in_charge_history', - 'comment_history', 'receipt_history', 'balance_history', 'amount_owed', 'amount_written_off_history', - 'amount_written_off_by_history', 'amount_written_off_at_history', 'patient_id' - ]); - }); - - foreach ($debtors as $debtor) { - if (!is_null($debtor->amount_paid_history)) { - $amount_paid_history_arr = unserialize($debtor->amount_paid_history); - $comment_history_arr = unserialize($debtor->comment_history); - $staff_in_charge_history_arr = unserialize($debtor->staff_in_charge_history); - $receipt_history_arr = unserialize($debtor->receipt_history); - $balance_history_arr = unserialize($debtor->balance_history); - $date_paid_history_arr = unserialize($debtor->date_paid_history); - $amount_paid_history_arr = is_array($amount_paid_history_arr) ? array_values($amount_paid_history_arr) : []; - $comment_history_arr = is_array($comment_history_arr) ? array_values($comment_history_arr) : []; - $staff_in_charge_history_arr = is_array($staff_in_charge_history_arr) ? array_values($staff_in_charge_history_arr) : []; - $receipt_history_arr = is_array($receipt_history_arr) ? array_values($receipt_history_arr) : []; - $balance_history_arr = is_array($balance_history_arr) ? array_values($balance_history_arr) : []; - $date_paid_history_arr = is_array($date_paid_history_arr) ? array_values($date_paid_history_arr) : []; - - $received_amount_history_arr = is_null($debtor->received_amount_history) ? [] : array_values(unserialize($debtor->received_amount_history)); - $received_id_history_arr = is_null($debtor->received_id_history) ? [] : array_values(unserialize($debtor->received_id_history)); - $banked_history_arr = is_null($debtor->banked_history) ? [] : array_values(unserialize($debtor->banked_history)); - - for ($i = 0; $i < count($amount_paid_history_arr); $i++) { - DB::table('debtor_payments')->insert([ - 'debt_id' => $debtor->debt_id, 'created_by' => $staff_in_charge_history_arr[$i] ?? $debtor->created_by, 'created_at' => $debtor->created_at, - 'updated_at' => $debtor->updated_at, 'amount_paid' => $amount_paid_history_arr[$i] ?? 0, - 'receipt_number' => $receipt_history_arr[$i] ?? '', 'banked_id' => $banked_history_arr[$i] ?? null, - 'balance' => $balance_history_arr[$i] ?? 0, 'comment' => $comment_history_arr[$i] ?? '', - 'date_paid' => $date_paid_history_arr[$i] ? Carbon::parse($date_paid_history_arr[$i])->toDateString() : Carbon::parse($debtor->created_at)->toDateString(), - 'received_id' => $received_id_history_arr[$i] ?? null, 'received_amount' => $received_amount_history_arr[$i] ?? null, - ]); - } - } - - if (!is_null($debtor->amount_written_off_history)) { - $amount_written_off = json_decode($debtor->amount_written_off_history); - $amount_written_off_by = json_decode($debtor->amount_written_off_by_history); - $amount_written_off_at = json_decode($debtor->amount_written_off_at_history); - - for ($i = 0; $i < count($amount_written_off); $i++) { - DB::table('debtor_payments')->insert([ - 'debt_id' => $debtor->debt_id, 'created_by' => $amount_written_off_by[$i], 'created_at' => $amount_written_off_at[$i], - 'updated_at' => $debtor->updated_at, 'amount_paid' => $amount_written_off[$i], - 'balance' => 0, 'amount_written_off' => $amount_written_off[$i], - 'date_paid' => Carbon::parse($amount_written_off_at[$i])->toDateString(), - ]); - } - } - - DB::table('debtor_payments')->where('id', $debtor->id)->delete(); - } - - DB::commit(); - } catch (\Exception $e) { - echo $e->getMessage(); - DB::rollback(); - } - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - // - } -}; diff --git a/docker/streamline-src/database/seeders/DatabaseSeeder.php b/docker/streamline-src/database/seeders/DatabaseSeeder.php deleted file mode 100755 index 99f4a345..00000000 --- a/docker/streamline-src/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,210 +0,0 @@ -call(AccountTypesTableSeeder::class); - $this->call(AgeGroupsTableSeeder::class); - $this->call(AnaesthesiaAirwaysTableSeeder::class); - $this->call(AnaesthesiaEttsTableSeeder::class); - $this->call(AnaesthesiaInductionsTableSeeder::class); - $this->call(AnaestheticAgentsTableSeeder::class); - $this->call(AnaestheticTechniquesTableSeeder::class); - $this->call(AnalgesicsTableSeeder::class); - $this->call(AnteNatalClinicAccuraciesTableSeeder::class); - $this->call(AnteNatalClinicEngagementsTableSeeder::class); - $this->call(AnteNatalClinicLiesTableSeeder::class); - $this->call(AnteNatalClinicOutcomesTableSeeder::class); - $this->call(AnteNatalClinicPositionTableSeeder::class); - $this->call(AnteNatalClinicPresentationTableSeeder::class); - $this->call(BloodGroupsSeeder::class); - $this->call(ChartOfAccountsTableSeeder::class); - //$this->call(ClinicsSeeder::class); - $this->call(CountiesSeeder::class); - $this->call(DebtPlanArrangementsTableSeeder::class); - $this->call(DiagnosesTableSeeder::class); - $this->call(DistrictsTableSeeder::class); - $this->call(DosageFrequenciesClassTableSeeder::class); - $this->call(DrugCategoriesTableSeeder::class); - $this->call(DrugFormsTableSeeder::class); - //$this->call(DrugsTableSeeder::class); - $this->call(DrugUnitsTableSeeder::class); - $this->call(FamilyPlanningMethodsTableSeeder::class); - $this->call(FamilyRelationshipsTableSeeder::class); - $this->call(HeartRegularitiesTableSeeder::class); - $this->call(HmisCategoriesTableSeeder::class); - $this->call(HmisCategoryOptionsSeeder::class); - //$this->call(HospitalInformationTableSeeder::class); - $this->call(InvestigationCategoriesTableSeeder::class); - //$this->call(InvestigationSeeder::class); - $this->call(IvFluidsTableSeeder::class); - $this->call(LicenceCouncilsSeeder::class); - $this->call(LocationOfDeliveryTableSeeder::class); - $this->call(MaritalStatusSeeder::class); - $this->call(MaternityProgressTableSeeder::class); - $this->call(MessageBoardTableSeeder::class); - $this->call(ModeOfDeliveryTableSeeder::class); - $this->call(MuscleRelaxantsTableSeeder::class); - $this->call(NeedleTypesTableSeeder::class); - $this->call(ObservationsTableSeeder::class); - $this->call(OccupationsTableSeeder::class); - $this->call(OutcomesTableSeeder::class); - $this->call(ParishesSeeder::class); - $this->call(PatientCategorySeeder::class); - $this->call(PatientsTableSeeder::class); - $this->call(PayrollDefaultsSeeder::class); - $this->call(PermissionTableSeeder::class); - $this->call(ProcedureCategoriesTableSeeder::class); - //$this->call(ProceduresTableSeeder::class); - $this->call(QuotationTypesTableSeeder::class); - $this->call(ReferralHospitalsSeeder::class); - $this->call(ReligionsTableSeeder::class); - $this->call(ResourceCategoriesTableSeeder::class); - $this->call(ResourcesTableSeeder::class); - $this->call(RolesTableSeeder::class); - //$this->call(ServicesTableSeeder::class); - $this->call(SpecialitiesTableSeeder::class); - $this->call(SpontaneousRegularRespirationInMinuteTableSeeder::class); - $this->call(StaffPositionsSeeder::class); - $this->call(SubcountiesSeeder::class); - //$this->call(SundriesTableSeeder::class); - $this->call(SuppliersTableSeeder::class); - $this->call(SymptomsSeeder::class); - $this->call(UnitOfMeasureTableSeeder::class); - $this->call(UsersTableSeeder::class); - $this->call(VillagesTableSeeder::class); - //$this->call(WardsTableSeeder::class); - $this->call(PermissionsCategoryTableSeeder::class); - $this->call(FinancePointTagTableSeeder::class); - $this->call(PaymentItemsTableSeeder::class); - - $this->call(DentalsTableSeeder::class); - $this->call(RadiologiesTableSeeder::class); - $this->call(LabsTableSeeder::class); - $this->call(SecurityQuestionsTableSeeder::class); - $this->call(CareEntryPointsTableSeeder::class); - $this->call(ArtCardFamilyPlanningMethodsTableSeeder::class); - $this->call(TuberclosisStatusTableSeeder::class); - $this->call(ArtPotentialSideEffectsTableSeeder::class); - $this->call(ArtOiTableSeeder::class); - $this->call(NutritionTableSeeder::class); - $this->call(ArvAdherenceReasonTableSeeder::class); - $this->call(TheatreLocationsTableSeeder::class); - $this->call(CountriesTableSeeder::class); - $this->call(LaboratorySpecimenTableSeeder::class); - $this->call(InvestigationSuperCategoriesSeeder::class); - $this->call(SpecializedInvestigationVariablesSeeder::class); - $this->call(HmisInvestigationCategoriesInpatientTableSeeder::class); - $this->call(PasswordExpirationForExistingUsersSeeder::class); - $this->call(AccountTypeTableUpdateSeeder::class); - $this->call(DefaultBedCategoryIncomeAccount::class); - $this->call(VolatileLiquidAnaestheticsTableSeeder::class); - $this->call(AnaesthesiaTypesSeeder::class); - $this->call(ChartOfAccountSlugTableSeeder::class); - $this->call(PersonTitlesTableSeeder::class); - $this->call(HmisWardSeeder::class); - $this->call(SlitLampTestAreaValueSeeder::class); - $this->call(SlitLampTestAreaSeeder::class); - $this->call(DiagnosisCategorySeeder::class); - } - -} diff --git a/docker/streamline-src/database/seeders/HmisCategoriesTableSeeder.php b/docker/streamline-src/database/seeders/HmisCategoriesTableSeeder.php deleted file mode 100755 index 9ca6ab7b..00000000 --- a/docker/streamline-src/database/seeders/HmisCategoriesTableSeeder.php +++ /dev/null @@ -1,118 +0,0 @@ - '1','name' => 'Epidemic-Prone Diseases', 'number' => '1.3.1', 'type' => '1', 'section_number' => null], - ['id' => '2','name' => 'Other Infectious/Communicable Diseases', 'number' => '1.3.2','type' => '1', 'section_number' => null], - ['id' => '4','name' => 'None Communicable Diseases/Conditions', 'number' => '1.3.4', 'type' => '1', 'section_number' => null], - ['id' => '13','name' => 'Malnutrition', 'number' => '', 'type' => '1', 'section_number' => null], - ['id' => '15','name' => 'Minor Operations in OPD', 'number' => '1.3.5', 'type' => '1', 'section_number' => null], - ['id' => '18','name' => 'Other OPD Conditions', 'number' => '1.3.8', 'type' => '1', 'section_number' => null], - ['id' => '10046','name' => 'Obstetrics/Gynaecology', 'number' => '3.1', 'type' => '1', 'section_number' => '3'], - ['id' => '10047','name' => 'Cardiothoracic Surgery', 'number' => '3.2', 'type' => '1', 'section_number' => '3'], - ['id' => '10048','name' => 'Plastic/ reconstructive surgery', 'number' => '3.3', 'type' => '1', 'section_number' => '3'], - ['id' => '10049','name' => 'Paediatric Surgery', 'number' => '3.4', 'type' => '1', 'section_number' => '3'], - ['id' => '10050','name' => 'Ocular surgery', 'number' => '3.5', 'type' => '1', 'section_number' => '3'], - ['id' => '10051','name' => 'Orthopaedics', 'number' => '3.6', 'type' => '1', 'section_number' => '3'], - ['id' => '10052','name' => 'Neuro Surgery', 'number' => '3.7', 'type' => '1', 'section_number' => '3'], - ['id' => '10053','name' => 'ENT Surgery', 'number' => '3.8', 'type' => '1', 'section_number' => '3'], - ['id' => '10054','name' => 'Endocrine Surgery', 'number' => '3.9', 'type' => '1', 'section_number' => '3'], - ['id' => '10055','name' => 'Urology', 'number' => '3.10', 'type' => '1', 'section_number' => '3'], - ['id' => '10056','name' => 'Gastro-intestinal tract', 'number' => '3.11', 'type' => '1', 'section_number' => '3'], - ['id' => '10057','name' => 'Oral surgery', 'number' => '3.12', 'type' => '1', 'section_number' => '3'], - ['id' => '10058','name' => 'Other Un-classified Surgical Procedures', 'number' => '3.13', 'type' => '1', 'section_number' => '3'], - ['id' => '10059','name' => 'X-Ray', 'number' => '5.1', 'type' => '1', 'section_number' => '5'], - ['id' => '10060','name' => 'Fluoroscopy Gastrointestinal tract', 'number' => '5.2', 'type' => '1', 'section_number' => '5'], - ['id' => '10061','name' => 'Water soluble contrast examination', 'number' => '5.3', 'type' => '1', 'section_number' => '5'], - ['id' => '10062','name' => 'Urinary tract', 'number' => '5.4', 'type' => '1', 'section_number' => '5'], - ['id' => '10063','name' => 'Micturating cystourethrography', 'number' => '5.5', 'type' => '1', 'section_number' => '5'], - ['id' => '10064','name' => 'Computed tomography', 'number' => '5.6', 'type' => '1', 'section_number' => '5'], - ['id' => '10065','name' => 'Mammography', 'number' => '5.7', 'type' => '1', 'section_number' => '5'], - ['id' => '10066','name' => 'Magnetic Resonance Imaging (MRI)', 'number' => '5.8', 'type' => '1', 'section_number' => '5'], - ['id' => '10067','name' => 'Ultrasound', 'number' => '5.9', 'type' => '1', 'section_number' => '5'], - ['id' => '10068','name' => 'Intervention procedure Types', 'number' => '5.10', 'type' => '1', 'section_number' => '5'], - ['id' => '10069','name' => 'Imaging modality', 'number' => '5.11', 'type' => '1', 'section_number' => '5'], - ['id' => '10070','name' => 'Epidemic-Prone Diseases/Notifiable Diseases', 'number' => '6.1.1', 'type' => '1', 'section_number' => '6'], - ['id' => '10071','name' => 'Haemorragic Fevers', 'number' => '6.1.2', 'type' => '1', 'section_number' => '6'], - ['id' => '10072','name' => 'Hepatitis', 'number' => '6.1.3', 'type' => '1', 'section_number' => '6'], - ['id' => '10073','name' => 'Meningitis', 'number' => '6.1.4', 'type' => '1', 'section_number' => '6'], - ['id' => '10074','name' => "Neglected Tropical Diseases (NTD's)", 'number' => '6.1.5', 'type' => '1', 'section_number' => '6'], - ['id' => '10075','name' => 'Neonatal Diseases', 'number' => '6.1.6', 'type' => '1', 'section_number' => '6'], - ['id' => '10076','name' => 'Other Infectious /communicable diseases', 'number' => '6.1.7', 'type' => '1', 'section_number' => '6'], - ['id' => '10077','name' => 'Oral Diseases', 'number' => '6.2.1', 'type' => '1', 'section_number' => '6'], - ['id' => '10078','name' => 'Cardiovascular Diseases', 'number' => '6.2.2', 'type' => '1', 'section_number' => '6'], - ['id' => '10079','name' => 'Chronic respiratory diseases', 'number' => '6.2.3', 'type' => '1', 'section_number' => '6'], - ['id' => '10080','name' => 'Cancers', 'number' => '6.2.4', 'type' => '1', 'section_number' => '6'], - ['id' => '10081','name' => 'Gastro-Intestinal Disorders (non-Infective)', 'number' => '6.2.5', 'type' => '1', 'section_number' => '6'], - ['id' => '10082','name' => 'Rheumatologically and Musculoskeletal diseases', 'number' => '6.2.6', 'type' => '1', 'section_number' => '6'], - ['id' => '10083','name' => 'ENT conditions', 'number' => '6.2.7', 'type' => '1', 'section_number' => '6'], - ['id' => '10084','name' => 'Eye Conditions', 'number' => '6.2.8', 'type' => '1', 'section_number' => '6'], - ['id' => '10085','name' => 'Endocrine and metabolic disorders', 'number' => '6.2.9', 'type' => '1', 'section_number' => '6'], - ['id' => '10086','name' => 'Injuries', 'number' => '6.2.10', 'type' => '1', 'section_number' => '6'], - ['id' => '10087','name' => 'Toxicology', 'number' => '6.2.11', 'type' => '1', 'section_number' => '6'], - ['id' => '10088','name' => 'Renal Diseases', 'number' => '6.2.12', 'type' => '1', 'section_number' => '6'], - ['id' => '10089','name' => 'Neurology', 'number' => '6.2.13', 'type' => '1', 'section_number' => '6'], - ['id' => '10090','name' => 'Other Diagnosis', 'number' => '6.2.14', 'type' => '1', 'section_number' => '6'], - ['id' => '10091','name' => 'Medical Emergencies', 'number' => '6.2.15', 'type' => '1', 'section_number' => '6'], - ['id' => '10092','name' => 'Maternal conditions', 'number' => '6.2.16', 'type' => '1', 'section_number' => '6'], - ['id' => '10093','name' => 'Gynaecological conditions', 'number' => '6.2.17', 'type' => '1', 'section_number' => '6'], - ['id' => '10094','name' => 'Other non-communicable diseases', 'number' => '6.2.18', 'type' => '1', 'section_number' => '6'], - ['id' => '10095','name' => 'Mental Health', 'number' => '7', 'type' => '1', 'section_number' => '7'], - ['id' => '10096','name' => 'Epidemic-Prone Diseases', 'number' => '1.3.1', 'type' => '0', 'section_number' => '1.3'], - ['id' => '10097','name' => 'Other Infectious / Communicable Diseases', 'number' => '1.3.2', 'type' => '0', 'section_number' => '1.3'], - ['id' => '10098','name' => 'Neonatal Diseases', 'number' => '1.3.3', 'type' => '0', 'section_number' => '1.3'], - ['id' => '10099','name' => 'Non Communicable Diseases/Conditions', 'number' => '1.3.4', 'type' => '0', 'section_number' => '1.3'], - ['id' => '10100','name' => 'Oral diseases', 'number' => '1.3.5', 'type' => '0', 'section_number' => '1.3'], - ['id' => '10101','name' => 'ENT conditions', 'number' => '1.3.6', 'type' => '0', 'section_number' => '1.3'], - ['id' => '10102','name' => 'Eye conditions', 'number' => '1.3.7', 'type' => '0', 'section_number' => '1.3'], - ['id' => '10103','name' => 'Mental Health', 'number' => '1.3.8', 'type' => '0', 'section_number' => '1.3'], - ['id' => '10104','name' => 'Neurological Disorders', 'number' => '1.3.9', 'type' => '0', 'section_number' => '1.3'], - ['id' => '10105','name' => 'Chronic respiratory diseases', 'number' => '1.3.10', 'type' => '0', 'section_number' => '1.3'], - ['id' => '10106','name' => 'Cancers', 'number' => '1.3.11', 'type' => '0', 'section_number' => '1.3'], - ['id' => '10107','name' => 'Physiotherapy', 'number' => '1.3.12', 'type' => '0', 'section_number' => '1.3'], - ['id' => '10108','name' => 'Occupational therapy conditions', 'number' => '1.3.13', 'type' => '0', 'section_number' => '1.3'], - ['id' => '10109','name' => 'Speech and Language Therapy', 'number' => '1.3.14', 'type' => '0', 'section_number' => '1.3'], - ['id' => '10110','name' => 'Disabilities', 'number' => '1.3.15', 'type' => '0', 'section_number' => '1.3'], - ['id' => '10111','name' => 'Cardiovascular diseases', 'number' => '1.3.16', 'type' => '0', 'section_number' => '1.3'], - ['id' => '10112','name' => 'Endocrine and Metabolic Disorders', 'number' => '1.3.17', 'type' => '0', 'section_number' => '1.3'], - ['id' => '10113','name' => 'Injuries', 'number' => '1.3.18', 'type' => '0', 'section_number' => '1.3'], - ['id' => '10114','name' => 'Minor Operations in OPD', 'number' => '1.3.19', 'type' => '0', 'section_number' => '1.3'], - ['id' => '10115','name' => 'Neglected Tropical Diseases (NTDs)', 'number' => '1.3.20', 'type' => '0', 'section_number' => '1.3'], - ['id' => '10116','name' => 'Maternal conditions', 'number' => '1.3.21', 'type' => '0', 'section_number' => '1.3'], - ['id' => '10117','name' => 'Other OPD conditions', 'number' => '1.3.22', 'type' => '0', 'section_number' => '1.3'], - ['id' => '10118','name' => 'Risky Behaviours', 'number' => '1.3.23', 'type' => '0', 'section_number' => '1.3'], - ['id' => '10119','name' => 'Emergency Medical Services', 'number' => '1.3.24', 'type' => '0', 'section_number' => '1.3'], - ); - - foreach ($titles as $title) { - - // Prevent re-seeding the same data - HmisCategory::updateOrCreate( - ['id' => $title['id']], - [ - 'number' => $title['number'], - 'title' => $title['name'], - 'type' => $title['type'], - 'editable' => '0', - 'section_number' => $title['section_number'], - 'created_by' => 1 - ] - ); - } - } - -} diff --git a/docker/streamline-src/database/seeders/HmisCategoryOptionsSeeder.php b/docker/streamline-src/database/seeders/HmisCategoryOptionsSeeder.php deleted file mode 100644 index 7a1a6452..00000000 --- a/docker/streamline-src/database/seeders/HmisCategoryOptionsSeeder.php +++ /dev/null @@ -1,712 +0,0 @@ - '1','name' => 'Caesarean sections','number' => 'SP01','hmis_category_id' => '10046'], - ['id' => '2','name' => 'Obstetric fistula repair (RVF, VVF, RVVF)','number' => 'SP02','hmis_category_id' => '10046'], - ['id' => '3','name' => 'Evacuations (incomplete abortion)','number' => 'SP03','hmis_category_id' => '10046'], - ['id' => '4','name' => 'Laparotomy','number' => 'SP04','hmis_category_id' => '10046'], - ['id' => '5','name' => 'Hysterectomy','number' => 'SP05','hmis_category_id' => '10046'], - ['id' => '6','name' => 'Thoracotomy','number' => 'CS01','hmis_category_id' => '10047'], - ['id' => '7','name' => 'Skin grafting','number' => 'PR01','hmis_category_id' => '10048'], - ['id' => '8','name' => 'Ramsteidts Procedure','number' => 'PS01','hmis_category_id' => '10049'], - ['id' => '9','name' => 'PSARP (Posterior Saggital Anorectoplasty)','number' => 'PS03','hmis_category_id' => '10049'], - ['id' => '10','name' => 'Pull through','number' => 'PS04','hmis_category_id' => '10049'], - ['id' => '11','name' => 'Kasai Procedure','number' => 'PS05','hmis_category_id' => '10049'], - ['id' => '12','name' => 'Gastroschisis repair','number' => 'PS06','hmis_category_id' => '10049'], - ['id' => '13','name' => 'Diaphragmatic hernia repair','number' => 'PS07','hmis_category_id' => '10049'], - ['id' => '14','name' => 'Tracheal-eosophageal fistula repair','number' => 'PS08','hmis_category_id' => '10049'], - ['id' => '15','name' => 'Congenital cyst excision','number' => 'PS09','hmis_category_id' => '10049'], - ['id' => '16','name' => 'Congenital hernia repair','number' => 'PS10','hmis_category_id' => '10049'], - ['id' => '17','name' => 'Cut down','number' => 'PS11','hmis_category_id' => '10049'], - ['id' => '18','name' => 'Cataract Surgery','number' => 'OC01','hmis_category_id' => '10050'], - ['id' => '19','name' => 'Glaucoma Surgery','number' => 'OC02','hmis_category_id' => '10050'], - ['id' => '20','name' => 'Orbital Surgery','number' => 'OC03','hmis_category_id' => '10050'], - ['id' => '21','name' => 'Oculoplasty','number' => 'OC04','hmis_category_id' => '10050'], - ['id' => '22','name' => 'Eye lid Operation','number' => 'OC05','hmis_category_id' => '10050'], - ['id' => '23','name' => 'Opthalmic laser Interventions','number' => 'OC06','hmis_category_id' => '10050'], - ['id' => '24','name' => 'Strabismus Surgery','number' => 'OC07','hmis_category_id' => '10050'], - ['id' => '25','name' => 'Trachoma surgery for TT','number' => 'OC08','hmis_category_id' => '10050'], - ['id' => '26','name' => 'Other Extra Ocular Surgeries','number' => 'OC09','hmis_category_id' => '10050'], - ['id' => '27','name' => 'Sequestrectomy','number' => 'OR01','hmis_category_id' => '10051'], - ['id' => '28','name' => 'Spine surgery','number' => 'OR02','hmis_category_id' => '10051'], - ['id' => '29','name' => 'Arthroplasty','number' => 'OR03','hmis_category_id' => '10051'], - ['id' => '30','name' => 'Arthrotomy','number' => 'OR04','hmis_category_id' => '10051'], - ['id' => '31','name' => 'Limb disarticulation','number' => 'OR05','hmis_category_id' => '10051'], - ['id' => '32','name' => 'Bone reconstruction','number' => 'OR06','hmis_category_id' => '10051'], - ['id' => '33','name' => 'Amputation','number' => 'OR07','hmis_category_id' => '10051'], - ['id' => '34','name' => 'Corrective osteotomies','number' => 'OR08','hmis_category_id' => '10051'], - ['id' => '35','name' => 'Arthrodesis','number' => 'OR09','hmis_category_id' => '10051'], - ['id' => '36','name' => 'Arthroscopy','number' => 'OR10','hmis_category_id' => '10051'], - ['id' => '37','name' => 'Internal fixation','number' => 'OR11','hmis_category_id' => '10051'], - ['id' => '38','name' => 'Soft tissue releases','number' => 'OR12','hmis_category_id' => '10051'], - ['id' => '39','name' => 'Craniotomy','number' => 'NS01','hmis_category_id' => '10052'], - ['id' => '40','name' => 'Burr Hole','number' => 'NS02','hmis_category_id' => '10052'], - ['id' => '41','name' => 'Cranioplasty','number' => 'NS03','hmis_category_id' => '10052'], - ['id' => '42','name' => 'Microdiscectomy','number' => 'NS04','hmis_category_id' => '10052'], - ['id' => '43','name' => 'ETV/CPC (Endoscopic 3rd Ventriculostomy/choroid plexus cauterization)','number' => 'NS05','hmis_category_id' => '10052'], - ['id' => '44','name' => 'Spina-bifida surgery','number' => 'NS06','hmis_category_id' => '10052'], - ['id' => '45','name' => 'EVD (External Ventricular Drainage)','number' => 'NS07','hmis_category_id' => '10052'], - ['id' => '46','name' => 'Elevation of depressed skull fracture','number' => 'NS08','hmis_category_id' => '10052'], - ['id' => '47','name' => 'VP shunts','number' => 'NS09','hmis_category_id' => '10052'], - ['id' => '48','name' => 'Tracheostomy','number' => 'TS01','hmis_category_id' => '10053'], - ['id' => '49','name' => 'Adenotonsillectomy','number' => 'TS02','hmis_category_id' => '10053'], - ['id' => '50','name' => 'Nasal surgery','number' => 'TS03','hmis_category_id' => '10053'], - ['id' => '51','name' => 'Laryngological surgery','number' => 'TS04','hmis_category_id' => '10053'], - ['id' => '52','name' => 'Otological surgery','number' => 'TS05','hmis_category_id' => '10053'], - ['id' => '53','name' => 'ENT endoscopic surgery','number' => 'TS06','hmis_category_id' => '10053'], - ['id' => '54','name' => 'Other ENT surgeries','number' => 'TS07','hmis_category_id' => '10053'], - ['id' => '55','name' => 'Thyroidectomy','number' => 'ES01','hmis_category_id' => '10054'], - ['id' => '56','name' => 'Mastectomy','number' => 'ES02','hmis_category_id' => '10054'], - ['id' => '57','name' => 'Adrenalectomy','number' => 'ES03','hmis_category_id' => '10054'], - ['id' => '58','name' => 'Open Prostatectomy','number' => 'UR01','hmis_category_id' => '10055'], - ['id' => '59','name' => 'Radical prostatectomy','number' => 'UR02','hmis_category_id' => '10055'], - ['id' => '60','name' => 'Endo-urology','number' => 'UR03','hmis_category_id' => '10055'], - ['id' => '61','name' => 'Renal surgery (Nephrectomy etc.)','number' => 'UR04','hmis_category_id' => '10055'], - ['id' => '62','name' => 'Urinary stone Surgery','number' => 'UR05','hmis_category_id' => '10055'], - ['id' => '63','name' => 'Pyeloplasty','number' => 'UR06','hmis_category_id' => '10055'], - ['id' => '64','name' => 'Ureteric surgery','number' => 'UR07','hmis_category_id' => '10055'], - ['id' => '65','name' => 'Radical cystectomy','number' => 'UR08','hmis_category_id' => '10055'], - ['id' => '66','name' => 'Testicular Surgery (Orchidopexy, Ochidectomy, BSO)','number' => 'UR09','hmis_category_id' => '10055'], - ['id' => '67','name' => 'Urine diversion (SPC, Nephrostomy)','number' => 'UR010','hmis_category_id' => '10055'], - ['id' => '68','name' => 'Urethroplasty','number' => 'UR11','hmis_category_id' => '10055'], - ['id' => '69','name' => 'Penectomy','number' => 'UR12','hmis_category_id' => '10055'], - ['id' => '70','name' => 'Genitoplasty','number' => 'UR13','hmis_category_id' => '10055'], - ['id' => '71','name' => 'Varicocoelectomy','number' => 'UR14','hmis_category_id' => '10055'], - ['id' => '72','name' => 'Hypospadias repair','number' => 'UR15','hmis_category_id' => '10055'], - ['id' => '73','name' => 'Epispadias repair','number' => 'UR16','hmis_category_id' => '10055'], - ['id' => '74','name' => 'Bladder exstropy','number' => 'UR17','hmis_category_id' => '10055'], - ['id' => '75','name' => 'Kidney transplant','number' => 'UR18','hmis_category_id' => '10055'], - ['id' => '76','name' => 'Cholecystectomy','number' => 'GI01','hmis_category_id' => '10056'], - ['id' => '77','name' => 'Gastric Surgery','number' => 'GI02','hmis_category_id' => '10056'], - ['id' => '78','name' => 'Pancreatic Surgery','number' => 'GI03','hmis_category_id' => '10056'], - ['id' => '79','name' => 'Splenic Surgery','number' => 'GI04','hmis_category_id' => '10056'], - ['id' => '80','name' => 'Liver Surgery','number' => 'GI05','hmis_category_id' => '10056'], - ['id' => '81','name' => 'Liver transplant','number' => 'GI06','hmis_category_id' => '10056'], - ['id' => '82','name' => 'Colectomy','number' => 'GI07','hmis_category_id' => '10056'], - ['id' => '83','name' => 'Laproscopic Surgery','number' => 'GI08','hmis_category_id' => '10056'], - ['id' => '84','name' => 'Endoscopic Surgery','number' => 'GI09','hmis_category_id' => '10056'], - ['id' => '85','name' => 'Colostomy','number' => 'GI10','hmis_category_id' => '10056'], - ['id' => '86','name' => 'Herniorrhaphy','number' => 'GI12','hmis_category_id' => '10056'], - ['id' => '87','name' => 'Appendicectomy','number' => 'GI13','hmis_category_id' => '10056'], - ['id' => '88','name' => 'Hemi-Mandibulectomy','number' => 'OS01','hmis_category_id' => '10057'], - ['id' => '89','name' => 'Total Mandibulectomy','number' => 'OS02','hmis_category_id' => '10057'], - ['id' => '90','name' => 'Segmental Resection of Mandible','number' => 'OS03','hmis_category_id' => '10057'], - ['id' => '91','name' => 'Salivary gland Surgery','number' => 'OS04','hmis_category_id' => '10057'], - ['id' => '92','name' => 'Neck dissection','number' => 'OS05','hmis_category_id' => '10057'], - ['id' => '93','name' => 'Partial-glossectomy','number' => 'OS06','hmis_category_id' => '10057'], - ['id' => '94','name' => 'Excision biopsy of tumour','number' => 'OS07','hmis_category_id' => '10057'], - ['id' => '95','name' => 'Debridement','number' => 'OT01','hmis_category_id' => '10058'], - ['id' => '96','name' => 'Incision and drainage of abscesses','number' => 'OT02','hmis_category_id' => '10058'], - ['id' => '97','name' => 'Safe Male Circumcision','number' => 'OT03','hmis_category_id' => '10058'], - ['id' => '98','name' => 'Others','number' => 'OT04','hmis_category_id' => '10058'], - ['id' => '99','name' => 'Excision of Sacro-coccygeal teratome','number' => 'PS02','hmis_category_id' => '10049'], - ['id' => '100','name' => 'Plain radiography (X-ray)','number' => 'RA01','hmis_category_id' => '10059'], - ['id' => '101','name' => 'CXR (chest x-ray)','number' => 'RA02','hmis_category_id' => '10059'], - ['id' => '102','name' => 'Plain abdomen','number' => 'RA03','hmis_category_id' => '10059'], - ['id' => '103','name' => 'Spine','number' => 'RA04','hmis_category_id' => '10059'], - ['id' => '104','name' => 'Upper limbs','number' => 'RA05','hmis_category_id' => '10059'], - ['id' => '105','name' => 'Lower limbs','number' => 'RA06','hmis_category_id' => '10059'], - ['id' => '106','name' => 'Skull','number' => 'RA07','hmis_category_id' => '10059'], - ['id' => '107','name' => 'Pelvis','number' => 'RA08','hmis_category_id' => '10059'], - ['id' => '108','name' => 'Barium swallow','number' => 'FG01','hmis_category_id' => '10060'], - ['id' => '109','name' => 'Barium meal','number' => 'FG02','hmis_category_id' => '10060'], - ['id' => '110','name' => 'Barium follow-through','number' => 'FG03','hmis_category_id' => '10060'], - ['id' => '111','name' => 'Small bowel enema','number' => 'FG04','hmis_category_id' => '10060'], - ['id' => '112','name' => 'Barium enema','number' => 'FG05','hmis_category_id' => '10060'], - ['id' => '113','name' => 'The "instant" enema','number' => 'FG06','hmis_category_id' => '10060'], - ['id' => '114','name' => 'Sonogram/ Fistulogram','number' => 'FG07','hmis_category_id' => '10060'], - ['id' => '115','name' => 'Loopogram/ Colostogram','number' => 'FG08','hmis_category_id' => '10060'], - ['id' => '116','name' => 'Other specify (e.g. Balloon dialatation of Oesophageal strictures, Intussusception reduction)','number' => 'FG09','hmis_category_id' => '10060'], - ['id' => '117','name' => 'Pre-operative cholangiography','number' => 'WS01','hmis_category_id' => '10061'], - ['id' => '118','name' => 'Postoperative (T-tube) cholangiography','number' => 'WS02','hmis_category_id' => '10061'], - ['id' => '119','name' => 'Percutaneous extraction of retained biliary calculi','number' => 'WS03','hmis_category_id' => '10061'], - ['id' => '120','name' => 'Endoscopic retrograde cholangio pancreatography (ERCP)','number' => 'WS04','hmis_category_id' => '10061'], - ['id' => '121','name' => 'Percutaneous transhepatic cholangiography (PTCH)','number' => 'WS05','hmis_category_id' => '10061'], - ['id' => '122','name' => 'Excretion urography','number' => 'TR01','hmis_category_id' => '10062'], - ['id' => '123','name' => 'Percutaneous renal puncture','number' => 'TR02','hmis_category_id' => '10062'], - ['id' => '124','name' => 'Percutaneous nephrostomy','number' => 'TR03','hmis_category_id' => '10062'], - ['id' => '125','name' => 'Percutaneous nephrolithotomy','number' => 'TR04','hmis_category_id' => '10062'], - ['id' => '126','name' => 'Retrograde pyeloureterography','number' => 'TR05','hmis_category_id' => '10062'], - ['id' => '127','name' => 'Reproductive system','number' => 'MC01','hmis_category_id' => '10063'], - ['id' => '128','name' => 'Hysterosalpingography','number' => 'MC02','hmis_category_id' => '10063'], - ['id' => '129','name' => 'Sialography','number' => 'MC03','hmis_category_id' => '10063'], - ['id' => '130','name' => 'Fistulography','number' => 'MC04','hmis_category_id' => '10063'], - ['id' => '131','name' => 'Brain','number' => 'CT01','hmis_category_id' => '10064'], - ['id' => '132','name' => 'Orbits /paranasal sinuses','number' => 'CT02','hmis_category_id' => '10064'], - ['id' => '133','name' => 'Neck','number' => 'CT03','hmis_category_id' => '10064'], - ['id' => '134','name' => 'Chest','number' => 'CT04','hmis_category_id' => '10064'], - ['id' => '135','name' => 'Abdomen and pelvis','number' => 'CT05','hmis_category_id' => '10064'], - ['id' => '136','name' => 'Spine','number' => 'CT06','hmis_category_id' => '10064'], - ['id' => '137','name' => 'Limbs','number' => 'CT07','hmis_category_id' => '10064'], - ['id' => '138','name' => 'Angiography','number' => 'CT08','hmis_category_id' => '10064'], - ['id' => '139','name' => 'Diagnostic','number' => 'MA01','hmis_category_id' => '10065'], - ['id' => '140','name' => 'Screening','number' => 'MA02','hmis_category_id' => '10065'], - ['id' => '141','name' => 'Galactography','number' => 'MA03','hmis_category_id' => '10065'], - ['id' => '142','name' => 'Brain','number' => 'MR01','hmis_category_id' => '10066'], - ['id' => '143','name' => 'Spine','number' => 'MR02','hmis_category_id' => '10066'], - ['id' => '144','name' => 'Angiography','number' => 'MR04','hmis_category_id' => '10066'], - ['id' => '145','name' => 'Musculoskeletal','number' => 'MR05','hmis_category_id' => '10066'], - ['id' => '146','name' => 'Abdomen and pelvis','number' => 'UL01','hmis_category_id' => '10067'], - ['id' => '147','name' => 'Obstetrics','number' => 'UL02','hmis_category_id' => '10067'], - ['id' => '148','name' => 'Gynecology','number' => 'UL03','hmis_category_id' => '10067'], - ['id' => '149','name' => 'Small parts','number' => 'UL04','hmis_category_id' => '10067'], - ['id' => '150','name' => 'Musculoskeletal','number' => 'UL05','hmis_category_id' => '10067'], - ['id' => '151','name' => 'Cranial','number' => 'UL06','hmis_category_id' => '10067'], - ['id' => '152','name' => 'Endocavitary ultrasound (transvaginal, transrectal, transesophageal )','number' => 'UL07','hmis_category_id' => '10067'], - ['id' => '153','name' => 'Vascular','number' => 'UL08','hmis_category_id' => '10067'], - ['id' => '154','name' => 'Diagnostic','number' => 'IP01','hmis_category_id' => '10068'], - ['id' => '155','name' => 'Therapeutic','number' => 'IP02','hmis_category_id' => '10068'], - ['id' => '156','name' => 'Ultrasound guided','number' => 'IM01','hmis_category_id' => '10069'], - ['id' => '157','name' => 'CT guided','number' => 'IM02','hmis_category_id' => '10069'], - ['id' => '158','name' => 'Fluoroscopy','number' => 'IM03','hmis_category_id' => '10069'], - ['id' => '159','name' => 'MRI guided','number' => 'IM04','hmis_category_id' => '10069'], - ['id' => '160','name' => 'Stereotactic biopsy','number' => 'IM05','hmis_category_id' => '10069'], - ['id' => '161','name' => 'Malaria','number' => 'EP01','hmis_category_id' => '10070'], - ['id' => '162','name' => 'Acute Flaccid Paralysis','number' => 'EP02','hmis_category_id' => '10070'], - ['id' => '163','name' => 'Animal Bites (suspected rabies)','number' => 'EP03','hmis_category_id' => '10070'], - ['id' => '164','name' => 'Cholera','number' => 'EP04','hmis_category_id' => '10070'], - ['id' => '165','name' => 'Dysentery','number' => 'EP05','hmis_category_id' => '10070'], - ['id' => '166','name' => 'Guinea Worm','number' => 'EP06','hmis_category_id' => '10070'], - ['id' => '167','name' => 'Measles','number' => 'EP07','hmis_category_id' => '10070'], - ['id' => '168','name' => 'Neonatal tetanus','number' => 'EP08','hmis_category_id' => '10070'], - ['id' => '169','name' => 'Plague','number' => 'EP09','hmis_category_id' => '10070'], - ['id' => '170','name' => 'Yellow Fever','number' => 'EP10','hmis_category_id' => '10070'], - ['id' => '171','name' => 'Ebola','number' => 'HF01','hmis_category_id' => '10071'], - ['id' => '172','name' => 'Marburg','number' => 'HF02','hmis_category_id' => '10071'], - ['id' => '173','name' => 'Crimean-Congo Haemorrhagic Fever','number' => 'HF03','hmis_category_id' => '10071'], - ['id' => '174','name' => 'Other Viral Haemorrhagic Fevers (Specify)','number' => 'HF04','hmis_category_id' => '10071'], - ['id' => '175','name' => 'Severe Acute Respiratory Infection (SARI)','number' => 'HF05','hmis_category_id' => '10071'], - ['id' => '176','name' => 'Adverse Events Following Immunization (AEFI)','number' => 'HF06','hmis_category_id' => '10071'], - ['id' => '177','name' => 'Typhoid Fever','number' => 'HF07','hmis_category_id' => '10071'], - ['id' => '178','name' => 'Presumptive MDR TB Cases','number' => 'HF08','hmis_category_id' => '10071'], - ['id' => '179','name' => 'Other Emerging infectious Diseases,specify(e.g. Influenza like illness (ILI), SARS','number' => 'HF09','hmis_category_id' => '10071'], - ['id' => '180','name' => 'Liver cirrhosis related to HBV', 'number' => 'HP01','hmis_category_id' => '10072'], - ['id' => '181','name' => 'Liver cirrhosis related to HCV', 'number' => 'HP02','hmis_category_id' => '10072'], - ['id' => '182','name' => 'Hepatocellular carcinoma related to HBV','number' => 'HP03','hmis_category_id' => '10072'], - ['id' => '183','name' => 'Hepatocellular carcinoma related to HCV', 'number' => 'HP04','hmis_category_id' => '10072'], - ['id' => '185','name' => 'Acute Hepatitis', 'number' => 'HP05','hmis_category_id' => '10072'], - ['id' => '186','name' => 'Bacterial Meningitis', 'number' => 'MG01','hmis_category_id' => '10073'], - ['id' => '187','name' => 'Viral Meningitis', 'number' => 'MG02','hmis_category_id' => '10073'], - ['id' => '188','name' => 'Cryptoccocal Meningitis', 'number' => 'MG03','hmis_category_id' => '10073'], - ['id' => '189','name' => 'Other types of meningitis', 'number' => 'MG04','hmis_category_id' => '10073'], - ['id' => '190','name' => 'Leishmaniasis', 'number' => 'NT01','hmis_category_id' => '10074'], - ['id' => '191','name' => 'Lymphatic Filariasis (hydrocele)', 'number' => 'NT02','hmis_category_id' => '10074'], - ['id' => '192','name' => 'Lymphatic Filariasis (Lympoedema)', 'number' => 'NT03','hmis_category_id' => '10074'], - ['id' => '193','name' => 'Urinary Schistosomiasis', 'number' => 'NT04','hmis_category_id' => '10074'], - ['id' => '194','name' => 'Intestinal Schistosomiasis', 'number' => 'NT05','hmis_category_id' => '10074'], - ['id' => '196','name' => 'Onchocerciasis', 'number' => 'NT06','hmis_category_id' => '10074'], - ['id' => '197','name' => 'Nodding Syndrome', 'number' => 'NT07','hmis_category_id' => '10074'], - ['id' => '198','name' => 'Neonatal Sepsis (0-7 days)', 'number' => 'ND01','hmis_category_id' => '10075'], - ['id' => '199','name' => 'Neonatal Sepsis (8-28 days)', 'number' => 'ND02','hmis_category_id' => '10075'], - ['id' => '200','name' => 'Neonatal Pneumonia', 'number' => 'ND03','hmis_category_id' => '10075'], - ['id' => '201','name' => 'Neonatal Meningitis', 'number' => 'ND04','hmis_category_id' => '10075'], - ['id' => '203','name' => 'Neonatal Jaundice', 'number' => 'ND05','hmis_category_id' => '10075'], - ['id' => '204','name' => 'Premature baby (as condition that requires mgt)', 'number' => 'ND06','hmis_category_id' => '10075'], - ['id' => '205','name' => 'Other Neonatal Conditions', 'number' => 'ND07','hmis_category_id' => '10075'], - ['id' => '206','name' => 'Diarrhea – Acute', 'number' => 'CD01','hmis_category_id' => '10076'], - ['id' => '207','name' => 'Diarrhea – Persistent', 'number' => 'CD02','hmis_category_id' => '10076'], - ['id' => '208','name' => 'Genital Ulcers', 'number' => 'CD03','hmis_category_id' => '10076'], - ['id' => '209','name' => 'Septicemia', 'number' => 'CD04','hmis_category_id' => '10076'], - ['id' => '210','name' => 'Peritonitis', 'number' => 'CD05','hmis_category_id' => '10076'], - ['id' => '211','name' => 'Pneumonia', 'number' => 'CD06','hmis_category_id' => '10076'], - ['id' => '212','name' => 'No Pneumonia – Cough and cold', 'number' => 'CD07','hmis_category_id' => '10076'], - ['id' => '213','name' => 'Pyrexia of unknown origin (PUO)', 'number' => 'CD08','hmis_category_id' => '10076'], - ['id' => '214','name' => 'Tuberculosis', 'number' => 'CD09','hmis_category_id' => '10076'], - ['id' => '215','name' => 'Leprosy', 'number' => 'CD10','hmis_category_id' => '10076'], - ['id' => '216','name' => 'Osteomyelitis', 'number' => 'CD11','hmis_category_id' => '10076'], - ['id' => '217','name' => 'Urinary Tract Infections (UTI)', 'number' => 'CD12','hmis_category_id' => '10076'], - ['id' => '218','name' => 'Tetanus (over 28 days age)', 'number' => 'CD13','hmis_category_id' => '10076'], - ['id' => '219','name' => 'Sleeping sickness', 'number' => 'CD14','hmis_category_id' => '10076'], - ['id' => '220','name' => 'Dental Caries', 'number' => 'OD01','hmis_category_id' => '10077'], - ['id' => '221','name' => 'Gingivitis', 'number' => 'OD02','hmis_category_id' => '10077'], - ['id' => '222','name' => 'Jaw injuries', 'number' => 'OD03','hmis_category_id' => '10077'], - ['id' => '223','name' => 'Other oral diseases and conditions', 'number' => 'OD04','hmis_category_id' => '10077'], - ['id' => '224','name' => 'HIV-Oral lesions', 'number' => 'OD05','hmis_category_id' => '10077'], - ['id' => '225','name' => 'Oral Cancers', 'number' => 'OD06','hmis_category_id' => '10077'], - ['id' => '226','name' => 'Hypertension (newly diagnosed cases)', 'number' => 'CV01','hmis_category_id' => '10078'], - ['id' => '227','name' => 'Hypertension (old cases)', 'number' => 'CV02','hmis_category_id' => '10078'], - ['id' => '228','name' => 'Stroke/Cardiovascular Accident(CVA)', 'number' => 'CV03','hmis_category_id' => '10078'], - ['id' => '229','name' => 'Heart failure', 'number' => 'CV04','hmis_category_id' => '10078'], - ['id' => '230','name' => 'Ischemic Heart Diseases', 'number' => 'CV05','hmis_category_id' => '10078'], - ['id' => '231','name' => 'Rheumatic Heart Diseases', 'number' => 'CV06','hmis_category_id' => '10078'], - ['id' => '232','name' => 'Chronic Heart Diseases', 'number' => 'CV07','hmis_category_id' => '10078'], - ['id' => '233','name' => 'Other Cardiovascular Diseases', 'number' => 'CV08','hmis_category_id' => '10078'], - ['id' => '234','name' => 'Asthma', 'number' => 'CR01','hmis_category_id' => '10079'], - ['id' => '235','name' => 'Chronic Obstructive Pulmonary Diseases (COPD)', 'number' => 'CR02','hmis_category_id' => '10079'], - ['id' => '236','name' => 'Pulmonary Fibrosis', 'number' => 'CR03','hmis_category_id' => '10079'], - ['id' => '237','name' => 'Post TB Lung disease', 'number' => 'CR04','hmis_category_id' => '10079'], - ['id' => '238','name' => 'Kidney Cancer', 'number' => 'CA01','hmis_category_id' => '10080'], - ['id' => '239','name' => 'Breast Cancer', 'number' => 'CA02','hmis_category_id' => '10080'], - ['id' => '240','name' => 'Prostate Cancer', 'number' => 'CA03','hmis_category_id' => '10080'], - ['id' => '241','name' => 'Lung Cancer', 'number' => 'CA04','hmis_category_id' => '10080'], - ['id' => '242','name' => 'Liver Cancer', 'number' => 'CA05','hmis_category_id' => '10080'], - ['id' => '243','name' => 'Colon Cancer', 'number' => 'CA06','hmis_category_id' => '10080'], - ['id' => '244','name' => 'Kaposis Sarcoma', 'number' => 'CA07','hmis_category_id' => '10080'], - ['id' => '245','name' => 'Hepatocellular carcinoma', 'number' => 'CA08','hmis_category_id' => '10080'], - ['id' => '246','name' => 'Malignant neoplasm of Haemopoietin tissue e.g. leukaemia', 'number' => 'CA09','hmis_category_id' => '10080'], - ['id' => '247','name' => 'Other Cancers', 'number' => 'CA10','hmis_category_id' => '10080'], - ['id' => '248','name' => 'Abdominal Pain', 'number' => 'GD01','hmis_category_id' => '10081'], - ['id' => '249','name' => 'Intususception', 'number' => 'GD02','hmis_category_id' => '10081'], - ['id' => '250','name' => 'Peptic Ulcer Disease', 'number' => 'GD03','hmis_category_id' => '10081'], - ['id' => '251','name' => 'Gastro-esophageal reflux disease (GERD)', 'number' => 'GD04','hmis_category_id' => '10081'], - ['id' => '252','name' => 'Chronic Liver Disease', 'number' => 'GD05','hmis_category_id' => '10081'], - ['id' => '253','name' => 'Acute Hepatitis', 'number' => 'GD06','hmis_category_id' => '10081'], - ['id' => '254','name' => 'Irritable Bowel Syndrome', 'number' => 'GD07','hmis_category_id' => '10081'], - ['id' => '255','name' => 'Liver Cirrhosis', 'number' => 'GD08','hmis_category_id' => '10081'], - ['id' => '256','name' => 'Varices (oesophageal or gastric)', 'number' => 'GD09','hmis_category_id' => '10081'], - ['id' => '257','name' => 'Colorectal and anal disorder', 'number' => 'GD10','hmis_category_id' => '10081'], - ['id' => '258','name' => 'Multiple Myeloma', 'number' => 'GD11','hmis_category_id' => '10081'], - ['id' => '259','name' => 'Aplastic Anaemia', 'number' => 'GD12','hmis_category_id' => '10081'], - ['id' => '260','name' => 'Others (specify)', 'number' => 'GD13','hmis_category_id' => '10081'], - ['id' => '261','name' => 'Rheumatoid Arthritis', 'number' => 'RM01','hmis_category_id' => '10082'], - ['id' => '262','name' => 'Septic Arthritis', 'number' => 'RM02','hmis_category_id' => '10082'], - ['id' => '263','name' => 'Osteoarthritis', 'number' => 'RM03','hmis_category_id' => '10082'], - ['id' => '264','name' => 'Gout', 'number' => 'RM04','hmis_category_id' => '10082'], - ['id' => '265','name' => 'Systemic Lupus Erythematous (SLE)', 'number' => 'RM05','hmis_category_id' => '10082'], - ['id' => '266','name' => 'Polyarthritis unspecified', 'number' => 'RM06','hmis_category_id' => '10082'], - ['id' => '267','name' => 'Monoarthritis unspecified', 'number' => 'RM07','hmis_category_id' => '10082'], - ['id' => '268','name' => 'Myalgia', 'number' => 'RM08','hmis_category_id' => '10082'], - ['id' => '269','name' => 'Others (please specify)', 'number' => 'RM09','hmis_category_id' => '10082'], - ['id' => '270','name' => 'Otitis media', 'number' => 'EN01','hmis_category_id' => '10083'], - ['id' => '271','name' => 'Hearing loss', 'number' => 'EN02','hmis_category_id' => '10083'], - ['id' => '272','name' => 'Other ENT conditions', 'number' => 'EN03','hmis_category_id' => '10083'], - ['id' => '273','name' => 'Ophthalmic Neonatorum', 'number' => 'EC01','hmis_category_id' => '10084'], - ['id' => '274','name' => 'Cataracts', 'number' => 'EC02','hmis_category_id' => '10084'], - ['id' => '275','name' => 'Refractive errors', 'number' => 'EC03','hmis_category_id' => '10084'], - ['id' => '276','name' => 'Glaucoma', 'number' => 'EC04','hmis_category_id' => '10084'], - ['id' => '277','name' => 'Trachoma', 'number' => 'EC05','hmis_category_id' => '10084'], - ['id' => '278','name' => 'Tumours', 'number' => 'EC06','hmis_category_id' => '10084'], - ['id' => '279','name' => 'Blindness', 'number' => 'EC07','hmis_category_id' => '10084'], - ['id' => '280','name' => 'Diabetic Retinopathy', 'number' => 'EC08','hmis_category_id' => '10084'], - ['id' => '281','name' => 'Other eye conditions', 'number' => 'EC09','hmis_category_id' => '10084'], - ['id' => '282','name' => 'Diabetes mellitus', 'number' => 'EM01','hmis_category_id' => '10085'], - ['id' => '283','name' => 'Thyroid disease', 'number' => 'EM02','hmis_category_id' => '10085'], - ['id' => '284','name' => 'Other Endocrine and metabolic disorders', 'number' => 'EM03','hmis_category_id' => '10085'], - ['id' => '285','name' => 'Injuries - Road traffic Accidents', 'number' => 'IN01','hmis_category_id' => '10086'], - ['id' => '286','name' => 'Jaw injuries', 'number' => 'IN02','hmis_category_id' => '10086'], - ['id' => '287','name' => 'Injuries - Trauma due to other causes', 'number' => 'IN03','hmis_category_id' => '10086'], - ['id' => '288','name' => 'Animal Bites', 'number' => 'IN04','hmis_category_id' => '10086'], - ['id' => '289','name' => 'Snake Bites', 'number' => 'IN05','hmis_category_id' => '10086'], - ['id' => '290','name' => 'Organophosphate poisoning', 'number' => 'TX01','hmis_category_id' => '10087'], - ['id' => '291','name' => 'Drug overdose', 'number' => 'TX02','hmis_category_id' => '10087'], - ['id' => '292','name' => 'Rat Poisoning', 'number' => 'TX03','hmis_category_id' => '10087'], - ['id' => '293','name' => 'Snake poison', 'number' => 'TX04','hmis_category_id' => '10087'], - ['id' => '294','name' => 'Poison of unknown etiology', 'number' => 'TX05','hmis_category_id' => '10087'], - ['id' => '295','name' => 'Nephrotic syndrome', 'number' => 'RD01','hmis_category_id' => '10088'], - ['id' => '296','name' => 'End stage renal diseases (for those who need dialysis)', 'number' => 'RD02','hmis_category_id' => '10088'], - ['id' => '297','name' => 'Chronic Kidney Diseases', 'number' => 'RD03','hmis_category_id' => '10088'], - ['id' => '298','name' => 'Acute Kidney Injury', 'number' => 'RD04','hmis_category_id' => '10088'], - ['id' => '299','name' => 'HIV nephropathy', 'number' => 'RD05','hmis_category_id' => '10088'], - ['id' => '300','name' => 'Headache', 'number' => 'NR01','hmis_category_id' => '10089'], - ['id' => '301','name' => 'Epilepsy', 'number' => 'NR02','hmis_category_id' => '10089'], - ['id' => '302','name' => 'Cerebral Vascular disease', 'number' => 'NR03','hmis_category_id' => '10089'], - ['id' => '303','name' => 'Neuropathies', 'number' => 'NR04','hmis_category_id' => '10089'], - ['id' => '304','name' => "Parkinson's disease", 'number' => 'NR05','hmis_category_id' => '10089'], - ['id' => '305','name' => 'Other movement disorders', 'number' => 'NR06','hmis_category_id' => '10089'], - ['id' => '306','name' => 'Spinal Cord disorders', 'number' => 'NR07','hmis_category_id' => '10089'], - ['id' => '307','name' => 'Hernias', 'number' => 'LD01','hmis_category_id' => '10090'], - ['id' => '308','name' => 'Diseases of the appendix', 'number' => 'LD02','hmis_category_id' => '10090'], - ['id' => '309','name' => 'Diseases of the skin', 'number' => 'LD03','hmis_category_id' => '10090'], - ['id' => '310','name' => 'Muscular skeletal and connective tissue diseases', 'number' => 'LD04','hmis_category_id' => '10090'], - ['id' => '311','name' => 'Genital urinary system diseases (non-infective)', 'number' => 'LD05','hmis_category_id' => '10090'], - ['id' => '312','name' => 'Congenital malformations and chromosome abnormalities', 'number' => 'LD06','hmis_category_id' => '10090'], - ['id' => '313','name' => 'Complications of medical and surgical care', 'number' => 'LD07','hmis_category_id' => '10090'], - ['id' => '314','name' => "Benign neoplasm's (all types)", 'number' => 'LD08','hmis_category_id' => '10090'], - ['id' => '315','name' => 'Coetaneous ulcers', 'number' => 'LD09','hmis_category_id' => '10090'], - ['id' => '316','name' => 'Cerebro-vascular events', 'number' => 'ME01','hmis_category_id' => '10091'], - ['id' => '317','name' => 'Cardiac arrest', 'number' => 'ME02','hmis_category_id' => '10091'], - ['id' => '318','name' => 'Gastro-intestinal bleeding', 'number' => 'ME03','hmis_category_id' => '10091'], - ['id' => '319','name' => 'Respiratory distress', 'number' => 'ME04','hmis_category_id' => '10091'], - ['id' => '320','name' => 'Acute renal failure', 'number' => 'ME05','hmis_category_id' => '10091'], - ['id' => '321','name' => 'Acute sepsis', 'number' => 'ME06','hmis_category_id' => '10091'], - ['id' => '322','name' => 'All others', 'number' => 'ME07','hmis_category_id' => '10091'], - ['id' => '323','name' => 'Abortions due to Gender Based Violence GBV)', 'number' => 'MC01','hmis_category_id' => '10092'], - ['id' => '324','name' => 'Abortions due to other causes', 'number' => 'MC02','hmis_category_id' => '10092'], - ['id' => '325','name' => 'Malaria in pregnancy', 'number' => 'MC03','hmis_category_id' => '10092'], - ['id' => '326','name' => 'High blood pressure in pregnancy', 'number' => 'MC04','hmis_category_id' => '10092'], - ['id' => '327','name' => 'Obstructed labour', 'number' => 'MC05','hmis_category_id' => '10092'], - ['id' => '328','name' => 'Haemorrhage related to pregnancy (APH or PPH)', 'number' => 'MC06','hmis_category_id' => '10092'], - ['id' => '329','name' => 'Sepsis related to pregnancy e.g. puerperal sepsis, abortion sepsis etc', 'number' => 'MC07','hmis_category_id' => '10092'], - ['id' => '330','name' => 'Obstetric Fistula', 'number' => 'MC08','hmis_category_id' => '10092'], - ['id' => '331','name' => 'Number of women diagnosed with fistula and treated by catheter', 'number' => 'MC09','hmis_category_id' => '10092'], - ['id' => '332','name' => 'Number of fistulas closed and dry at discharge', 'number' => 'MC10','hmis_category_id' => '10092'], - ['id' => '333','name' => 'Number of Women repaired for Fistula who receive a modern contraceptive Method', 'number' => 'MC11','hmis_category_id' => '10092'], - ['id' => '334','name' => 'Other Complications of pregnancy', 'number' => 'MC12','hmis_category_id' => '10092'], - ['id' => '335','name' => 'Cancer of the cervix(newly diagnosed cases)', 'number' => 'GC01','hmis_category_id' => '10093'], - ['id' => '336','name' => 'Cancer of the cervix (re-attendance)', 'number' => 'GC02','hmis_category_id' => '10093'], - ['id' => '337','name' => 'Cancer of the breast', 'number' => 'GC03','hmis_category_id' => '10093'], - ['id' => '338','name' => 'Tubal Ovarian mass/cancer', 'number' => 'GC04','hmis_category_id' => '10093'], - ['id' => '339','name' => 'Pelvic Inflammatory Disease (PID)', 'number' => 'GC05','hmis_category_id' => '10093'], - ['id' => '340','name' => 'Uterine Fibroids', 'number' => 'GC06','hmis_category_id' => '10093'], - ['id' => '341','name' => 'Other Gynaecological conditions', 'number' => 'GC07','hmis_category_id' => '10093'], - ['id' => '342','name' => 'Haematological Diseases', 'number' => 'NC01','hmis_category_id' => '10094'], - ['id' => '343','name' => 'Anaemia', 'number' => 'NC02','hmis_category_id' => '10094'], - ['id' => '344','name' => 'Sickle cell disease', 'number' => 'NC03','hmis_category_id' => '10094'], - ['id' => '345','name' => 'Deep Vein Thrombosis', 'number' => 'NC04','hmis_category_id' => '10094'], - ['id' => '346','name' => 'Lymphoma', 'number' => 'NC05','hmis_category_id' => '10094'], - ['id' => '347','name' => 'Multiple Myeloma', 'number' => 'NC06','hmis_category_id' => '10094'], - ['id' => '348','name' => 'Pain Requiring Palliative Care', 'number' => 'NC07','hmis_category_id' => '10094'], - ['id' => '349','name' => 'Liver cirrhosis related to alcohol', 'number' => 'NC08','hmis_category_id' => '10094'], - ['id' => '350','name' => 'Liver cirrhosis related to other causes', 'number' => 'NC09','hmis_category_id' => '10094'], - ['id' => '351','name' => 'Total Hysterectomy', 'number' => 'SP05a','hmis_category_id' => '0','parent_option'=>'5'], - ['id' => '352','name' => 'Sub-Total Hysterectomy', 'number' => 'SP05b','hmis_category_id' => '0','parent_option'=>'5'], - ['id' => '353','name' => 'Total', 'number' => 'EP01a','hmis_category_id' => '0','parent_option'=>'161'], - ['id' => '354','name' => 'Confirmed (Microscopic & RDT)', 'number' => 'EP01b','hmis_category_id' => '0','parent_option'=>'161'], - ['id' => '355','name' => 'Serious', 'number' => 'HF06a','hmis_category_id' => '0','parent_option'=>'176'], - ['id' => '356','name' => 'Non - Serious', 'number' => 'HF06b','hmis_category_id' => '0','parent_option'=>'176'], - ['id' => '357','name' => 'Newly diagnosed cases', 'number' => 'EM01a','hmis_category_id' => '0','parent_option'=>'282'], - ['id' => '358','name' => 'Re-attendances', 'number' => 'EM01b','hmis_category_id' => '0','parent_option'=>'282'], - ['id' => '359','name' => 'Motor Vehicle', 'number' => 'IN01a','hmis_category_id' => '0','parent_option'=>'285'], - ['id' => '360','name' => 'Motor Cycle', 'number' => 'IN01b','hmis_category_id' => '0','parent_option'=>'285'], - ['id' => '361','name' => 'Bicycles', 'number' => 'IN01c','hmis_category_id' => '0','parent_option'=>'285'], - ['id' => '362','name' => 'Others', 'number' => 'IN01d','hmis_category_id' => '0','parent_option'=>'285'], - ['id' => '363','name' => 'Domestic', 'number' => 'IN04a','hmis_category_id' => '0','parent_option'=>'288'], - ['id' => '364','name' => 'Wild', 'number' => 'IN04b','hmis_category_id' => '0','parent_option'=>'288'], - ['id' => '365','name' => 'Insects', 'number' => 'IN04c','hmis_category_id' => '0','parent_option'=>'288'], - ['id' => '366','name' => 'Totals', 'number' => 'ME06a','hmis_category_id' => '0','parent_option'=>'321'], - ['id' => '367','name' => 'Given Oxygen', 'number' => 'ME06b','hmis_category_id' => '0','parent_option'=>'321'], - ['id' => '368','name' => 'Anxiety Disorders', 'number' => 'MH01','hmis_category_id' => '10095'], - ['id' => '369','name' => 'Unipolar Depressive Disorder', 'number' => 'MH02','hmis_category_id' => '10095'], - ['id' => '370','name' => 'Bipolar disorder', 'number' => 'MH03','hmis_category_id' => '10095'], - ['id' => '371','name' => 'Schizophrenia', 'number' => 'MH04','hmis_category_id' => '10095'], - ['id' => '372','name' => 'Post-Traumatic Stress Disorder', 'number' => 'MH05','hmis_category_id' => '10095'], - ['id' => '373','name' => 'Epilepsy', 'number' => 'MH06','hmis_category_id' => '10095'], - ['id' => '374','name' => 'HIV related psychosis', 'number' => 'MH07','hmis_category_id' => '10095'], - ['id' => '375','name' => "Alzheimer's disease", 'number' => 'MH08','hmis_category_id' => '10095'], - ['id' => '376','name' => 'HIV related dementia', 'number' => 'MH09','hmis_category_id' => '10095'], - ['id' => '377','name' => 'Alcohol related Dementia', 'number' => 'MH10','hmis_category_id' => '10095'], - ['id' => '378','name' => 'Dementia due to Cerebral Vascular Disease (Diabetes, Hypertension)', 'number' => 'MH11','hmis_category_id' => '10095'], - ['id' => '379','name' => 'Other form of Dementia', 'number' => 'MH12','hmis_category_id' => '10095'], - ['id' => '380','name' => 'Other Adult Mental Health Conditions', 'number' => 'MH13','hmis_category_id' => '10095'], - ['id' => '381','name' => 'Internet addiction', 'number' => 'MH14','hmis_category_id' => '10095'], - ['id' => '382','name' => 'Alcohol Use Disorder', 'number' => 'MH15','hmis_category_id' => '10095'], - ['id' => '383','name' => 'Substance (Drug) use Disorder', 'number' => 'MH16','hmis_category_id' => '10095'], - ['id' => '384','name' => 'Delirium', 'number' => 'MH17','hmis_category_id' => '10095'], - ['id' => '385','name' => 'Intellectual disability', 'number' => 'MH18','hmis_category_id' => '10095'], - ['id' => '386','name' => 'Autism spectrum disorders', 'number' => 'MH19','hmis_category_id' => '10095'], - ['id' => '387','name' => 'Child abuse and Neglect', 'number' => 'MH20','hmis_category_id' => '10095'], - ['id' => '388','name' => 'Attention Deficit Hyperactivity Disorder(ADHD)', 'number' => 'MH21','hmis_category_id' => '10095'], - ['id' => '389','name' => 'Learning Disability', 'number' => 'MH22','hmis_category_id' => '10095'], - ['id' => '390','name' => 'Conduct disorders', 'number' => 'MH23','hmis_category_id' => '10095'], - ['id' => '391','name' => 'Eating disorders (Anorexia, Bulimia, other feeding disorders', 'number' => 'MH24','hmis_category_id' => '10095'], - ['id' => '392','name' => 'Somatoform disorders', 'number' => 'MH25','hmis_category_id' => '10095'], - ['id' => '393','name' => 'Sleep Disorders', 'number' => 'MH26','hmis_category_id' => '10095'], - ['id' => '394','name' => 'Enuresis/Encopresis', 'number' => 'MH27','hmis_category_id' => '10095'], - ['id' => '395','name' => 'Other Childhood Mental Disorders', 'number' => 'MH28','hmis_category_id' => '10095'], - ['id' => '396','name' => 'Mental Illness due other Medical/surgical conditions', 'number' => 'MH29','hmis_category_id' => '10095'], - ['id' => '397','name' => 'Attempted Suicide/Self-harm', 'number' => 'MH30','hmis_category_id' => '10095'], - ['id' => '398','name' => 'Malaria', 'number' => 'EP01','hmis_category_id' => '10096'], - ['id' => '399','name' => 'Suspected fever', 'number' => 'EP01a','hmis_category_id' => '0','parent_option'=>'398'], - ['id' => '400','name' => 'Malaria Total', 'number' => 'EP01b','hmis_category_id' => '0','parent_option'=>'398'], - ['id' => '401','name' => 'Malaria confirmed (B/s and RDT Positive)', 'number' => 'EP01c','hmis_category_id' => '0','parent_option'=>'398'], - ['id' => '402','name' => 'Malaria cases treated', 'number' => 'EP01d','hmis_category_id' => '0','parent_option'=>'398'], - ['id' => '403','name' => 'Acute Flaccid Paralysis', 'number' => 'EP02','hmis_category_id' => '10096'], - ['id' => '404','name' => 'Animal Bites (suspected rabies)', 'number' => 'EP03','hmis_category_id' => '10096'], - ['id' => '405','name' => 'Cholera', 'number' => 'EP04','hmis_category_id' => '10096'], - ['id' => '406','name' => 'Dysentery', 'number' => 'EP05','hmis_category_id' => '10096'], - ['id' => '407','name' => 'Guinea Worm', 'number' => 'EP06','hmis_category_id' => '10096'], - ['id' => '408','name' => 'Measles', 'number' => 'EP07','hmis_category_id' => '10096'], - ['id' => '409','name' => 'Bacterial Meningitis', 'number' => 'EP08','hmis_category_id' => '10096'], - ['id' => '410','name' => 'Neonatal tetanus', 'number' => 'EP09','hmis_category_id' => '10096'], - ['id' => '411','name' => 'Plague', 'number' => 'EP10','hmis_category_id' => '10096'], - ['id' => '412','name' => 'Yellow Fever', 'number' => 'EP11','hmis_category_id' => '10096'], - ['id' => '412','name' => 'Other Viral Haemorrhagic Fevers', 'number' => 'EP12','hmis_category_id' => '10096'], - ['id' => '413','name' => 'Severe Acute Respiratory Infection (SARI)', 'number' => 'EP13','hmis_category_id' => '10096'], - ['id' => '414','name' => 'Adverse Events Following Immunization (AEFI)', 'number' => 'EP14','hmis_category_id' => '10096'], - ['id' => '415','name' => 'Serious', 'number' => 'EP14a','hmis_category_id' => '0','parent_option'=>'414'], - ['id' => '416','name' => 'Non-Serious', 'number' => 'EP14b','hmis_category_id' => '0','parent_option'=>'414'], - ['id' => '417','name' => 'Typhoid Fever', 'number' => 'EP15','hmis_category_id' => '10096'], - ['id' => '418','name' => 'Presumptive MDR TB cases', 'number' => 'EP16','hmis_category_id' => '10096'], - ['id' => '419','name' => 'Other Emerging infectious Diseases e.g. Influenza like illness (ILI), SARS', 'number' => 'EP17','hmis_category_id' => '10096'], - ['id' => '420','name' => 'Diarrhoea - Acute', 'number' => 'CD01','hmis_category_id' => '10097'], - ['id' => '421','name' => 'Diarrhoea - Persistent', 'number' => 'CD02','hmis_category_id' => '10097'], - ['id' => '422','name' => 'Urethral discharges', 'number' => 'CD03','hmis_category_id' => '10097'], - ['id' => '423','name' => 'Genital ulcers', 'number' => 'CD04','hmis_category_id' => '10097'], - ['id' => '424','name' => 'Sexually Transmitted Infection due to Sexual Gender Based Violence', 'number' => 'CD05','hmis_category_id' => '10097'], - ['id' => '425','name' => 'Other Sexually Transmitted Infections', 'number' => 'CD06','hmis_category_id' => '10097'], - ['id' => '426','name' => 'Urinary Tract Infections (UTI)', 'number' => 'CD07','hmis_category_id' => '10097'], - ['id' => '427','name' => 'Intestinal Worms', 'number' => 'CD08','hmis_category_id' => '10097'], - ['id' => '428','name' => 'Haematological Meningitis', 'number' => 'CD09','hmis_category_id' => '10097'], - ['id' => '429','name' => 'Other types of meningitis', 'number' => 'CD10','hmis_category_id' => '10097'], - ['id' => '430','name' => 'Cough or cold - No pneumonia', 'number' => 'CD11','hmis_category_id' => '10097'], - ['id' => '431','name' => 'Pneumonia', 'number' => 'CD12','hmis_category_id' => '10097'], - ['id' => '432','name' => 'Severe Pneumonia', 'number' => 'CD13','hmis_category_id' => '10097'], - ['id' => '433','name' => 'Skin Diseases', 'number' => 'CD14','hmis_category_id' => '10097'], - ['id' => '434','name' => 'Tetanus (over 28 days)', 'number' => 'CD15','hmis_category_id' => '10097'], - ['id' => '434','name' => 'Sleeping sickness', 'number' => 'CD16','hmis_category_id' => '10097'], - ['id' => '435','name' => 'Pelvic Inflammatory Disease (PID)', 'number' => 'CD17','hmis_category_id' => '10097'], - ['id' => '436','name' => 'Brucellosis', 'number' => 'CD18','hmis_category_id' => '10097'], - ['id' => '437','name' => 'Neonatal Sepsis (0-7days)', 'number' => 'ND01','hmis_category_id' => '10098'], - ['id' => '438','name' => 'Neonatal Sepsis (8-28days)', 'number' => 'ND02','hmis_category_id' => '10098'], - ['id' => '439','name' => 'Neonatal Pneumonia (0-7days)', 'number' => 'ND03','hmis_category_id' => '10098'], - ['id' => '440','name' => 'Neonatal Pneumonia(8-28days)', 'number' => 'ND04','hmis_category_id' => '10098'], - ['id' => '441','name' => 'Neonatal Meningitis', 'number' => 'ND05','hmis_category_id' => '10098'], - ['id' => '442','name' => 'Neonatal Jaundice', 'number' => 'ND06','hmis_category_id' => '10098'], - ['id' => '443','name' => 'Premature baby (as a Condition for management)', 'number' => 'ND07','hmis_category_id' => '10098'], - ['id' => '445','name' => 'Other Neonatal Conditions', 'number' => 'ND08','hmis_category_id' => '10098'], - ['id' => '446','name' => 'Sickle Cell Anaemia', 'number' => 'NC01','hmis_category_id' => '10099'], - ['id' => '447','name' => 'Other types of Anaemia', 'number' => 'NC02','hmis_category_id' => '10099'], - ['id' => '448','name' => 'Gastro-Intestinal Disorders (non-Infective)', 'number' => 'NC03','hmis_category_id' => '10099'], - ['id' => '449','name' => 'Pain Requiring Palliative Care', 'number' => 'NC04','hmis_category_id' => '10099'], - ['id' => '450','name' => 'Dental Caries', 'number' => 'OD01','hmis_category_id' => '10100'], - ['id' => '451','name' => 'Gingivitis', 'number' => 'OD02','hmis_category_id' => '10100'], - ['id' => '452','name' => 'HIV-Oral lesions', 'number' => 'OD03','hmis_category_id' => '10100'], - ['id' => '453','name' => 'Oral Cancers', 'number' => 'OD04','hmis_category_id' => '10100'], - ['id' => '454','name' => 'Other Oral Conditions', 'number' => 'OD05','hmis_category_id' => '10100'], - ['id' => '455','name' => 'Otitis media acute and chronic', 'number' => 'EN01','hmis_category_id' => '10101'], - ['id' => '456','name' => 'Mastoiditis', 'number' => 'EN02','hmis_category_id' => '10101'], - ['id' => '457','name' => 'Hearing loss', 'number' => 'EN03','hmis_category_id' => '10101'], - ['id' => '458','name' => 'Rhinitis', 'number' => 'EN04','hmis_category_id' => '10101'], - ['id' => '459','name' => 'Sinusitis', 'number' => 'EN05','hmis_category_id' => '10101'], - ['id' => '460','name' => 'Epixtasis', 'number' => 'EN06','hmis_category_id' => '10101'], - ['id' => '461','name' => 'Adenoid Hypertrophy', 'number' => 'EN07','hmis_category_id' => '10101'], - ['id' => '462','name' => 'Foreign Body in nose ear and aero- digestive system', 'number' => 'EN08','hmis_category_id' => '10101'], - ['id' => '463','name' => 'Infected pre -auricular sinuses and abscess', 'number' => 'EN09','hmis_category_id' => '10101'], - ['id' => '464','name' => 'Otitis external', 'number' => 'EN10','hmis_category_id' => '10101'], - ['id' => '465','name' => 'Mastoid abscess', 'number' => 'EN11','hmis_category_id' => '10101'], - ['id' => '466','name' => 'Vertigo', 'number' => 'EN12','hmis_category_id' => '10101'], - ['id' => '467','name' => 'Tonsillitis', 'number' => 'EN13','hmis_category_id' => '10101'], - ['id' => '468','name' => 'Tonsillar hypertrophy', 'number' => 'EN14','hmis_category_id' => '10101'], - ['id' => '469','name' => 'Tinnitus', 'number' => 'EN15','hmis_category_id' => '10101'], - ['id' => '470','name' => 'Head and neck cancers', 'number' => 'EN16','hmis_category_id' => '10101'], - ['id' => '471','name' => 'Other ENT conditions', 'number' => 'EN17','hmis_category_id' => '10101'], - ['id' => '472','name' => 'Allergic conjunctivitis', 'number' => 'EC01','hmis_category_id' => '10102'], - ['id' => '473','name' => 'Bacterial Conjunctivitis', 'number' => 'EC02','hmis_category_id' => '10102'], - ['id' => '474','name' => 'Ophthalmia neonatorum', 'number' => 'EC03','hmis_category_id' => '10102'], - ['id' => '475','name' => 'Other Forms of Conjunctivitis', 'number' => 'EC04','hmis_category_id' => '10102'], - ['id' => '476','name' => 'Corneal Ulcers/ Keratitis', 'number' => 'EC05','hmis_category_id' => '10102'], - ['id' => '477','name' => 'Un Operable Cataract (>6/60)', 'number' => 'EC06','hmis_category_id' => '10102'], - ['id' => '478','name' => 'Operable Cataract (< 6/60)', 'number' => 'EC07','hmis_category_id' => '10102'], - ['id' => '479','name' => 'Refractive errors', 'number' => 'EC08','hmis_category_id' => '10102'], - ['id' => '480','name' => 'Glaucoma', 'number' => 'EC09','hmis_category_id' => '10102'], - ['id' => '481','name' => 'Trachoma', 'number' => 'EC10','hmis_category_id' => '10102'], - ['id' => '482','name' => 'Vitamin A Deficiency', 'number' => 'EC11','hmis_category_id' => '10102'], - ['id' => '483','name' => 'Ocular trauma and Burns', 'number' => 'EC12','hmis_category_id' => '10102'], - ['id' => '484','name' => 'Diabetic Retinopathy (All stages)', 'number' => 'EC13','hmis_category_id' => '10102'], - ['id' => '485','name' => 'Chorioretinal, Macular & Vitreous Disorders', 'number' => 'EC14','hmis_category_id' => '10102'], - ['id' => '486','name' => 'Uveitis', 'number' => 'EC15','hmis_category_id' => '10102'], - ['id' => '487','name' => 'Endophthalmitis', 'number' => 'EC16','hmis_category_id' => '10102'], - ['id' => '488','name' => 'Corneal scars (Non trachomatous)', 'number' => 'EC17','hmis_category_id' => '10102'], - ['id' => '489','name' => 'Tumours', 'number' => 'EC18','hmis_category_id' => '10102'], - ['id' => '490','name' => 'Strabismus ( All types)', 'number' => 'EC19','hmis_category_id' => '10102'], - ['id' => '491','name' => 'Ptosis and other lid Disorders', 'number' => 'EC20','hmis_category_id' => '10102'], - ['id' => '492','name' => 'Squamous Cell Carcinoma of Conjunctiva', 'number' => 'EC21','hmis_category_id' => '10102'], - ['id' => '494','name' => 'Retinoblastoma', 'number' => 'EC22','hmis_category_id' => '10102'], - ['id' => '495','name' => 'Other Malignant Tumours', 'number' => 'EC23','hmis_category_id' => '10102'], - ['id' => '496','name' => 'Other Benign Tumours/Growths', 'number' => 'EC24','hmis_category_id' => '10102'], - ['id' => '497','name' => 'Other Eye Disorders', 'number' => 'EC25','hmis_category_id' => '10102'], - ['id' => '498','name' => 'Blindness', 'number' => 'EC26','hmis_category_id' => '10102'], - ['id' => '499','name' => 'Other eye conditions', 'number' => 'EC27','hmis_category_id' => '10102'], - ['id' => '500','name' => 'Spectacles Dispensed', 'number' => 'EC28','hmis_category_id' => '10102'], - ['id' => '501','name' => 'Anxiety Disorders', 'number' => 'MH01','hmis_category_id' => '10103'], - ['id' => '502','name' => 'Anxiety Disorders due to gender based violence', 'number' => 'MH02','hmis_category_id' => '10103'], - ['id' => '503','name' => 'Unipolar Depressive Disorder', 'number' => 'MH03','hmis_category_id' => '10103'], - ['id' => '504','name' => 'Bipolar disorder', 'number' => 'MH04','hmis_category_id' => '10103'], - ['id' => '505','name' => 'Schizophrenia', 'number' => 'MH05','hmis_category_id' => '10103'], - ['id' => '506','name' => 'Post -Traumatic Stress Disorder', 'number' => 'MH06','hmis_category_id' => '10103'], - ['id' => '507','name' => 'Epilepsy', 'number' => 'MH07','hmis_category_id' => '10103'], - ['id' => '508','name' => 'HIV related psychosis', 'number' => 'MH08','hmis_category_id' => '10103'], - ['id' => '509','name' => "Alzheimer's disease", 'number' => 'MH09','hmis_category_id' => '10103'], - ['id' => '510','name' => 'HIV related dementia', 'number' => 'MH10','hmis_category_id' => '10103'], - ['id' => '511','name' => 'Alcohol related Dementia', 'number' => 'MH11','hmis_category_id' => '10103'], - ['id' => '512','name' => 'Dementia due to stroke (Diabetes, Hypertension)', 'number' => 'MH12','hmis_category_id' => '10103'], - ['id' => '513','name' => 'Other form of Dementia', 'number' => 'MH13','hmis_category_id' => '10103'], - ['id' => '514','name' => 'Other Adult Mental Health Conditions', 'number' => 'MH14','hmis_category_id' => '10103'], - ['id' => '515','name' => 'Internet addiction', 'number' => 'MH15','hmis_category_id' => '10103'], - ['id' => '516','name' => 'Alcohol Use Disorder', 'number' => 'MH16','hmis_category_id' => '10103'], - ['id' => '517','name' => 'Substance (Drug) use Disorder', 'number' => 'MH17','hmis_category_id' => '10103'], - ['id' => '518','name' => 'Delirium', 'number' => 'MH18','hmis_category_id' => '10103'], - ['id' => '519','name' => 'Intellectual disability', 'number' => 'MH19','hmis_category_id' => '10103'], - ['id' => '520','name' => 'Autism spectrum disorders', 'number' => 'MH20','hmis_category_id' => '10103'], - ['id' => '521','name' => 'Aphasia or Loss of Language due to Stroke', 'number' => 'NE01','hmis_category_id' => '10104'], - ['id' => '522','name' => 'Dysarthria or Speech Disorder due to Stroke', 'number' => 'NE02','hmis_category_id' => '10104'], - ['id' => '523','name' => "Parkinson's disease", 'number' => 'NE03','hmis_category_id' => '10104'], - ['id' => '524','name' => 'Dementia or excessive forgetfulness due to advanced age', 'number' => 'NE04','hmis_category_id' => '10104'], - ['id' => '525','name' => 'Amyotrophic Lateral Sclerosis(ALS)', 'number' => 'NE05','hmis_category_id' => '10104'], - ['id' => '526','name' => 'Speech disorders due to Head Injuries(penetrating or closed)', 'number' => 'NE06','hmis_category_id' => '10104'], - ['id' => '527','name' => 'Persons in Coma / Emergency Care', 'number' => 'NE07','hmis_category_id' => '10104'], - ['id' => '528','name' => 'Alzheimer Disease', 'number' => 'NE08','hmis_category_id' => '10104'], - ['id' => '529','name' => 'Down Syndrome (DS)', 'number' => 'NE09','hmis_category_id' => '10104'], - ['id' => '530','name' => 'CP / PMLD', 'number' => 'NE10','hmis_category_id' => '10104'], - ['id' => '531','name' => 'Child abuse and Neglect', 'number' => 'NE11','hmis_category_id' => '10104'], - ['id' => '532','name' => 'Attention Deficit Hyperactivity disorder (ADHD)', 'number' => 'NE12','hmis_category_id' => '10104'], - ['id' => '533','name' => 'Learning Disability', 'number' => 'NE13','hmis_category_id' => '10104'], - ['id' => '534','name' => 'Conduct disorders', 'number' => 'NE14','hmis_category_id' => '10104'], - ['id' => '535','name' => 'Eating disorders (anorexia, Bulimia, other feeding)', 'number' => 'NE15','hmis_category_id' => '10104'], - ['id' => '536','name' => 'Somatoform disorders', 'number' => 'NE16','hmis_category_id' => '10104'], - ['id' => '537','name' => 'Sleeping Disorders', 'number' => 'NE17','hmis_category_id' => '10104'], - ['id' => '538','name' => 'Enuresis / Encopresis', 'number' => 'NE18','hmis_category_id' => '10104'], - ['id' => '539','name' => 'Other Childhood Mental Disorders', 'number' => 'NE19','hmis_category_id' => '10104'], - ['id' => '540','name' => 'Mental illness due other Medical/surgical conditions', 'number' => 'NE20','hmis_category_id' => '10104'], - ['id' => '541','name' => 'Attempted Suicide/Self-harm', 'number' => 'NE21','hmis_category_id' => '10104'], - ['id' => '542','name' => 'Asthma', 'number' => 'CR01','hmis_category_id' => '10105'], - ['id' => '543','name' => 'Chronic Obstructive Pulmonary Disease (COPD)', 'number' => 'CR02','hmis_category_id' => '10105'], - ['id' => '544','name' => 'Cervical Cancer', 'number' => 'CA01','hmis_category_id' => '10106'], - ['id' => '545','name' => 'Prostate Cancer', 'number' => 'CA02','hmis_category_id' => '10106'], - ['id' => '546','name' => 'Breast Cancer', 'number' => 'CA03','hmis_category_id' => '10106'], - ['id' => '547','name' => 'Lung Cancer', 'number' => 'CA04','hmis_category_id' => '10106'], - ['id' => '548','name' => 'Liver Cancer', 'number' => 'CA05','hmis_category_id' => '10106'], - ['id' => '549','name' => 'Colon Cancer', 'number' => 'CA06','hmis_category_id' => '10106'], - ['id' => '550','name' => 'Kaposis Sarcoma', 'number' => 'CA07','hmis_category_id' => '10106'], - ['id' => '551','name' => 'Other Cancers', 'number' => 'CA08','hmis_category_id' => '10106'], - ['id' => '552','name' => 'Muscular disorders', 'number' => 'PT01','hmis_category_id' => '10107'], - ['id' => '553','name' => 'Joint dysfunction', 'number' => 'PT02','hmis_category_id' => '10107'], - ['id' => '554','name' => 'Soft tissue injuries', 'number' => 'PT03','hmis_category_id' => '10107'], - ['id' => '555','name' => 'Chronic respiratory diseases', 'number' => 'PT04','hmis_category_id' => '10107'], - ['id' => '556','name' => 'Chest trauma / Injury', 'number' => 'PT05','hmis_category_id' => '10107'], - ['id' => '557','name' => 'Paralysis due to spinal cord injury and other diseases', 'number' => 'PT06','hmis_category_id' => '10107'], - ['id' => '558','name' => 'Cerebral Palsy/Delayed motor or sensory developmental milestones(CP)', 'number' => 'PT07','hmis_category_id' => '10107'], - ['id' => '559','name' => 'Upper Motor Neuron lesions (UMN)', 'number' => 'PT08','hmis_category_id' => '10107'], - ['id' => '560','name' => 'Facial palsy', 'number' => 'PT09','hmis_category_id' => '10107'], - ['id' => '561','name' => 'Lower motor neuron lesions (LMN)', 'number' => 'PT10','hmis_category_id' => '10107'], - ['id' => '562','name' => 'Gynaecological, obstetric and urogenital conditions', 'number' => 'PT11','hmis_category_id' => '10107'], - ['id' => '563','name' => 'Amputee', 'number' => 'PT12','hmis_category_id' => '10107'], - ['id' => '564','name' => 'Altered Posture and gait', 'number' => 'PT13','hmis_category_id' => '10107'], - ['id' => '565','name' => 'Injection neuritis/Acute flaccid paralysis', 'number' => 'PT14','hmis_category_id' => '10107'], - ['id' => '566','name' => 'Congenital abnormalities', 'number' => 'PT15','hmis_category_id' => '10107'], - ['id' => '567','name' => 'Spine disorders e.g neck, thoracic, lumber, coccygeal pains', 'number' => 'PT16','hmis_category_id' => '10107'], - ['id' => '568','name' => 'Lymph oedema', 'number' => 'PT17','hmis_category_id' => '10107'], - ['id' => '569','name' => 'Patients prescribed with assistive devices', 'number' => 'PT18','hmis_category_id' => '10107'], - ['id' => '570','name' => 'Others', 'number' => 'PT19','hmis_category_id' => '10107'], - ['id' => '571','name' => 'Neuro-developmental Disorders', 'number' => 'OT01','hmis_category_id' => '10108'], - ['id' => '572','name' => 'Sensory Integration disorders', 'number' => 'OT02','hmis_category_id' => '10108'], - ['id' => '573','name' => 'Adult Neurological Disorders', 'number' => 'OT03','hmis_category_id' => '10108'], - ['id' => '574','name' => 'Burn injuries', 'number' => 'OT04','hmis_category_id' => '10108'], - ['id' => '575','name' => 'Post-burns contractures', 'number' => 'OT05','hmis_category_id' => '10108'], - ['id' => '576','name' => 'Orthopaedic Conditions', 'number' => 'OT06','hmis_category_id' => '10108'], - ['id' => '577','name' => 'Mental Health Conditions', 'number' => 'OT07','hmis_category_id' => '10108'], - ['id' => '578','name' => 'Birth Defects and Trauma', 'number' => 'OT08','hmis_category_id' => '10108'], - ['id' => '579','name' => 'Arthrogryposis', 'number' => 'OT09','hmis_category_id' => '10108'], - ['id' => '580','name' => 'HIV / AIDS', 'number' => 'OT10','hmis_category_id' => '10108'], - ['id' => '581','name' => 'Diabetes', 'number' => 'OT11','hmis_category_id' => '10108'], - ['id' => '582','name' => 'Cancer', 'number' => 'OT12','hmis_category_id' => '10108'], - ['id' => '583','name' => 'Other chronic conditions', 'number' => 'OT13','hmis_category_id' => '10108'], - ['id' => '584','name' => 'Cardiac Conditions', 'number' => 'OT14','hmis_category_id' => '10108'], - ['id' => '585','name' => 'Patients prescribed with assistive devices', 'number' => 'OT15','hmis_category_id' => '10108'], - ['id' => '586','name' => 'Speech and language delay/disorder', 'number' => 'SL01','hmis_category_id' => '10109'], - ['id' => '587','name' => 'Motor speech disorders', 'number' => 'SL02','hmis_category_id' => '10109'], - ['id' => '588','name' => 'Hearing impairments', 'number' => 'SL03','hmis_category_id' => '10109'], - ['id' => '589','name' => 'Voice disorders', 'number' => 'SL04','hmis_category_id' => '10109'], - ['id' => '590','name' => 'Dysfluency / stammering', 'number' => 'SL05','hmis_category_id' => '10109'], - ['id' => '591','name' => 'Acquired neurological disorders', 'number' => 'SL06','hmis_category_id' => '10109'], - ['id' => '592','name' => 'Cleft lip and palate', 'number' => 'SL07','hmis_category_id' => '10109'], - ['id' => '593','name' => 'Others', 'number' => 'SL08','hmis_category_id' => '10109'], - ['id' => '594','name' => 'Individuals with Difficulty in seeing', 'number' => 'DS01','hmis_category_id' => '10110'], - ['id' => '595','name' => 'Individuals with Albinism', 'number' => 'DS02','hmis_category_id' => '10110'], - ['id' => '596','name' => 'Individuals with Difficulty in hearing', 'number' => 'DS03','hmis_category_id' => '10110'], - ['id' => '597','name' => 'Individuals with Speech Difficulties', 'number' => 'DS04','hmis_category_id' => '10110'], - ['id' => '598','name' => 'Individuals with delayed age specific motor development', 'number' => 'DS05','hmis_category_id' => '10110'], - ['id' => '599','name' => 'Individuals with Dwarfism', 'number' => 'DS06','hmis_category_id' => '10110'], - ['id' => '600','name' => 'Individuals with Difficulty understanding', 'number' => 'DS07','hmis_category_id' => '10110'], - ['id' => '601','name' => 'Individuals with Difficulty in remembering', 'number' => 'DS08','hmis_category_id' => '10110'], - ['id' => '602','name' => 'Individuals with Difficulty in reading', 'number' => 'DS09','hmis_category_id' => '10110'], - ['id' => '603','name' => 'Individuals with Difficulty in writing', 'number' => 'DS10','hmis_category_id' => '10110'], - ['id' => '604','name' => 'Individuals with Difficulty in self-care', 'number' => 'DS11','hmis_category_id' => '10110'], - ['id' => '605','name' => 'Individuals with Mentally impairment', 'number' => 'DS12','hmis_category_id' => '10110'], - ['id' => '606','name' => 'Individuals with Emotionally impairment', 'number' => 'DS13','hmis_category_id' => '10110'], - ['id' => '607','name' => 'Stroke/ Cardiovascular Accident(CVA)', 'number' => 'CV01','hmis_category_id' => '10111'], - ['id' => '608','name' => 'Hypertension', 'number' => 'CV02','hmis_category_id' => '10111'], - ['id' => '609','name' => 'Heart failure', 'number' => 'CV03','hmis_category_id' => '10111'], - ['id' => '610','name' => 'Ischemic Heart Diseases', 'number' => 'CV04','hmis_category_id' => '10111'], - ['id' => '611','name' => 'Rheumatic Heart Diseases', 'number' => 'CV05','hmis_category_id' => '10111'], - ['id' => '612','name' => 'Chronic Heart Diseases', 'number' => 'CV06','hmis_category_id' => '10111'], - ['id' => '613','name' => 'Other Cardiovascular Diseases', 'number' => 'CV07','hmis_category_id' => '10111'], - ['id' => '614','name' => 'Diabetes mellitus', 'number' => 'EM01','hmis_category_id' => '10112'], - ['id' => '615','name' => 'Thyroid Disease', 'number' => 'EM02','hmis_category_id' => '10112'], - ['id' => '616','name' => 'Other Endocrine and Metabolic Diseases', 'number' => 'EM03','hmis_category_id' => '10112'], - ['id' => '617','name' => 'Jaw injuries', 'number' => 'IN01','hmis_category_id' => '10113'], - ['id' => '618','name' => 'Road Traffic Injuries', 'number' => 'IN02','hmis_category_id' => '10113'], - ['id' => '619','name' => 'Motor Vehicle', 'number' => 'IN02a','hmis_category_id' => '0','parent_option'=>'618'], - ['id' => '620','name' => 'Motor Cycle', 'number' => 'IN02b','hmis_category_id' => '0','parent_option'=>'618'], - ['id' => '621','name' => 'Bicycles', 'number' => 'IN02c','hmis_category_id' => '0','parent_option'=>'618'], - ['id' => '622','name' => 'Others', 'number' => 'IN02d','hmis_category_id' => '0','parent_option'=>'618'], - ['id' => '623','name' => 'Injuries due to Gender based violence', 'number' => 'IN03','hmis_category_id' => '10113'], - ['id' => '624','name' => 'Injuries (Trauma due to other causes)', 'number' => 'IN04','hmis_category_id' => '10113'], - ['id' => '625','name' => 'Animal bites', 'number' => 'IN05','hmis_category_id' => '10113'], - ['id' => '626','name' => 'Domestic', 'number' => 'IN05a','hmis_category_id' => '0','parent_option'=>'625'], - ['id' => '627','name' => 'Wild', 'number' => 'IN05b','hmis_category_id' => '0','parent_option'=>'625'], - ['id' => '628','name' => 'Snake bites', 'number' => 'IN06','hmis_category_id' => '10113'], - ['id' => '629','name' => 'Insect bites', 'number' => 'IN07','hmis_category_id' => '10113'], - ['id' => '630','name' => 'Tooth extractions', 'number' => 'MN01','hmis_category_id' => '10114'], - ['id' => '631','name' => 'Dental Fillings', 'number' => 'MN02','hmis_category_id' => '10114'], - ['id' => '632','name' => 'Other Minor Operations', 'number' => 'MN03','hmis_category_id' => '10114'], - ['id' => '633','name' => 'Leishmaniasis', 'number' => 'NT01','hmis_category_id' => '10115'], - ['id' => '634','name' => 'Lymphatic Filariasis (hydrocele)', 'number' => 'NT02','hmis_category_id' => '10115'], - ['id' => '635','name' => 'Lymphatic Filariasis(Lympoedema)', 'number' => 'NT03','hmis_category_id' => '10115'], - ['id' => '636','name' => 'Urinary Schistosomiasis', 'number' => 'NT04','hmis_category_id' => '10115'], - ['id' => '637','name' => 'Intestinal Schistosomiasis', 'number' => 'NT05','hmis_category_id' => '10115'], - ['id' => '638','name' => 'Onchocerciasis', 'number' => 'NT06','hmis_category_id' => '10115'], - ['id' => '639','name' => 'Abortions due to Gender-Based Violence (GBV)', 'number' => 'MC01','hmis_category_id' => '10116'], - ['id' => '640','name' => 'Abortions due to other causes', 'number' => 'MC02','hmis_category_id' => '10116'], - ['id' => '641','name' => 'Number of Post Abortion women who received FP', 'number' => 'MC03','hmis_category_id' => '10116'], - ['id' => '642','name' => 'Malaria in pregnancy', 'number' => 'MC04','hmis_category_id' => '10116'], - ['id' => '643','name' => 'High blood pressure in pregnancy', 'number' => 'MC05','hmis_category_id' => '10116'], - ['id' => '644','name' => 'Obstructed labour', 'number' => 'MC06','hmis_category_id' => '10116'], - ['id' => '645','name' => 'Puerperal sepsis', 'number' => 'MC07','hmis_category_id' => '10116'], - ['id' => '646','name' => 'Haemorrhage related to pregnancy (APH)', 'number' => 'MC08','hmis_category_id' => '10116'], - ['id' => '647','name' => 'Haemorrhage related to pregnancy (PPH)', 'number' => 'MC09','hmis_category_id' => '10116'], - ['id' => '648','name' => 'Breast cancer', 'number' => 'MC10','hmis_category_id' => '10116'], - ['id' => '649','name' => 'Total Screened', 'number' => 'MC10a','hmis_category_id' => '0','parent_option'=>'648'], - ['id' => '650','name' => 'Number with breast cancer', 'number' => 'MC10b','hmis_category_id' => '0','parent_option'=>'648'], - ['id' => '651','name' => 'Cervical cancer', 'number' => 'MC11','hmis_category_id' => '10116'], - ['id' => '652','name' => 'Total Screened', 'number' => 'MC11a','hmis_category_id' => '0','parent_option'=>'651'], - ['id' => '653','name' => 'Number with cervical cancer', 'number' => 'MC11b','hmis_category_id' => '0','parent_option'=>'651'], - ['id' => '654','name' => 'All others', 'number' => 'OP01','hmis_category_id' => '10117'], - ['id' => '655','name' => 'Other diagnoses (specify priority diseases for District)', 'number' => 'OP02','hmis_category_id' => '10117'], - ['id' => '656','name' => 'Deaths in OPD', 'number' => 'OP03','hmis_category_id' => '10117'], - ['id' => '657','name' => 'Number of emergency cases at the facility', 'number' => 'ES01','hmis_category_id' => '10119'], - ['id' => '658','name' => 'Patients that receive care at the scene of emergency', 'number' => 'ES02','hmis_category_id' => '10119'], - ['id' => '659','name' => 'Emergency cases that arrive at the facility using an Ambulance', 'number' => 'ES03','hmis_category_id' => '10119'], - ['id' => '660','name' => 'Number of patients assessed for level of consciousness using GCS/ other comma score', 'number' => 'ES04','hmis_category_id' => '10119'], - ['id' => '661','name' => 'Number of patients accessing care within 1hr in an emergency unit', 'number' => 'ES05','hmis_category_id' => '10119'], - ['id' => '662','name' => 'Number of patients who develop complications within 24 hours after management/care', 'number' => 'ES06','hmis_category_id' => '10119'], - ['id' => '663','name' => 'Number of patients with hypoxemia administered with oxygen', 'number' => 'ES07','hmis_category_id' => '10119'], - ['id' => '664','name' => 'Number of patients with external haemorrhages controlled', 'number' => 'ES08','hmis_category_id' => '10119'], - ['id' => '665','name' => 'Number of death at emergency unit', 'number' => 'ES09','hmis_category_id' => '10119'], - ['id' => '666','name' => 'Medical emergencies', 'number' => 'ES09a','hmis_category_id' => '0','parent_option'=>'665'], - ['id' => '667','name' => 'Obstetrics gynaecology emergencies', 'number' => 'ES09b','hmis_category_id' => '0','parent_option'=>'665'], - ['id' => '668','name' => 'Paediatric emergencies', 'number' => 'ES09c','hmis_category_id' => '0','parent_option'=>'665'], - ['id' => '669','name' => 'Surgical emergencies', 'number' => 'ES09d','hmis_category_id' => '0','parent_option'=>'665'], - ['id' => '670','name' => 'Road traffic Injuries', 'number' => 'ES09e','hmis_category_id' => '0','parent_option'=>'665'], - ['id' => '671','name' => 'Burns', 'number' => 'ES09f','hmis_category_id' => '0','parent_option'=>'665'], - ['id' => '672','name' => 'Poisoning', 'number' => 'ES09g','hmis_category_id' => '0','parent_option'=>'665'], - ['id' => '673','name' => 'Total number of Death in Emergency Unit', 'number' => 'ES10','hmis_category_id' => '10119'], - ['id' => '674','name' => 'Tetanus', 'number' => 'ES11a','hmis_category_id' => '0','parent_option'=>'677'], - ['id' => '675','name' => 'Rabies', 'number' => 'ES11b','hmis_category_id' => '0','parent_option'=>'677'], - ['id' => '676','name' => 'Others', 'number' => 'ES11c','hmis_category_id' => '0','parent_option'=>'677'], - ['id' => '677','name' => 'Number of Patients receiving vaccination for', 'number' => 'ES11','hmis_category_id' => '10119'], - ['id' => '678','name' => 'Alcohol use ', 'number' => 'RB01','hmis_category_id' => '10118'], - ['id' => '679','name' => 'Tobacco use', 'number' => 'RB02','hmis_category_id' => '10118'], - ['id' => '680','name' => 'Tobacco exposure', 'number' => 'RB03','hmis_category_id' => '10118'], - ['id' => '681','name' => 'All Others', 'number' => 'LD10','hmis_category_id' => '10090'], - ); - - foreach ($hmis_category_options as $hmis_category_option) { - - // Prevent re-seeding the same data - HmisCategoryOptions::updateOrCreate(['id' => $hmis_category_option['id']],[ - 'id'=>$hmis_category_option['id'], - 'name' => $hmis_category_option['name'], - 'number' => $hmis_category_option['number'], - 'hmis_category_id' => $hmis_category_option['hmis_category_id'], - 'editable' => '0', - 'parent_option' => $hmis_category_option['parent_option'] ?? null, - 'created_by' => 1 - ]); - } - } -} diff --git a/docker/streamline-src/database/seeders/ObservationsTableSeeder.php b/docker/streamline-src/database/seeders/ObservationsTableSeeder.php deleted file mode 100755 index af9132fc..00000000 --- a/docker/streamline-src/database/seeders/ObservationsTableSeeder.php +++ /dev/null @@ -1,71 +0,0 @@ -'Temperature','name'=>'Temperature','measurement'=>' °C','lower_limit'=>36.0,'upper_limit'=>37.7,'options'=>'','option_for_normal'=>'','compulsory'=>'1','age_group'=>'5'], - ['system_name'=>'Temperature','name'=>'Temperature','measurement'=>' °C','lower_limit'=>36.7,'upper_limit'=>37.2,'options'=>'','option_for_normal'=>'','compulsory'=>'1','age_group'=>'1'], - ['system_name'=>'Temperature','name'=>'Temperature','measurement'=>' °C','lower_limit'=>36.5,'upper_limit'=>37.4,'options'=>'','option_for_normal'=>'','compulsory'=>'1','age_group'=>'2,3,4'], - ['system_name' => 'Pulse','name' => 'Pulse','measurement'=>'','lower_limit'=>51,'upper_limit'=>100,'options'=>'','option_for_normal'=>'','compulsory'=>'1','age_group'=>'5'], - ['system_name' => 'Pulse','name' => 'Pulse','measurement'=>'','lower_limit'=>110,'upper_limit'=>160,'options'=>'','option_for_normal'=>'','compulsory'=>'1','age_group'=>'1'], - ['system_name' => 'Pulse','name' => 'Pulse','measurement'=>'','lower_limit'=>121,'upper_limit'=>160,'options'=>'','option_for_normal'=>'','compulsory'=>'1','age_group'=>'2'], - ['system_name' => 'Pulse','name' => 'Pulse','measurement'=>'','lower_limit'=>76,'upper_limit'=>130,'options'=>'','option_for_normal'=>'','compulsory'=>'1','age_group'=>'3'], - ['system_name' => 'Pulse','name' => 'Pulse','measurement'=>'','lower_limit'=>76,'upper_limit'=>130,'options'=>'','option_for_normal'=>'','compulsory'=>'1','age_group'=>'4'], - ['system_name' => 'Respirations','name' => 'Respirations','measurement'=>'','lower_limit'=>9,'upper_limit'=>18,'options'=>'','option_for_normal'=>'','compulsory'=>'1','age_group'=>'5'], - ['system_name' => 'Respirations','name' => 'Respirations','measurement'=>'','lower_limit'=>30,'upper_limit'=>60,'options'=>'','option_for_normal'=>'','compulsory'=>'1','age_group'=>'1'], - ['system_name' => 'Respirations','name' => 'Respirations','measurement'=>'','lower_limit'=>31,'upper_limit'=>55,'options'=>'','option_for_normal'=>'','compulsory'=>'1','age_group'=>'2'], - ['system_name' => 'Respirations','name' => 'Respirations','measurement'=>'','lower_limit'=>21,'upper_limit'=>40,'options'=>'','option_for_normal'=>'','compulsory'=>'1','age_group'=>'3'], - ['system_name' => 'Respirations','name' => 'Respirations','measurement'=>'','lower_limit'=>18,'upper_limit'=>30,'options'=>'','option_for_normal'=>'','compulsory'=>'1','age_group'=>'4'], - ['system_name' => 'SaO2','name' => 'SaO2','measurement'=>'%','lower_limit'=>null,'upper_limit'=>null,'options'=>'','option_for_normal'=>'>94','compulsory'=>'0','age_group'=>'5,4,3,2'], - ['system_name' => 'SaO2','name' => 'SaO2','measurement'=>'%','lower_limit'=>95,'upper_limit'=>1000,'options'=>'','option_for_normal'=>'','compulsory'=>'0','age_group'=>'1,'], - ['system_name' => 'Systolic bp','name' => 'Systolic bp','measurement'=>'','lower_limit'=>101,'upper_limit'=>159,'options'=>'','option_for_normal'=>'','compulsory'=>'1','age_group'=>'5'], - ['system_name' => 'Diastolic bp','name' => 'Diastolic bp','measurement'=>'','lower_limit'=>null,'upper_limit'=>null,'options'=>'','option_for_normal'=>'<95','compulsory'=>'1','age_group'=>'1,2,3,4,5'], - ['system_name' => 'Respiratory Distress','name' => 'Respiratory Distress','measurement'=>'','lower_limit'=>null,'upper_limit'=>null,'options'=>'None,Mild,Severe','option_for_normal'=>'None','compulsory'=>'1','age_group'=>'2,3,4'], - ['system_name' => 'Conscious level','name' => 'Conscious level','measurement'=>'','lower_limit'=>null,'upper_limit'=>null,'options'=>'alert,responds to voice/irritated,responds to pain,unresponsive','option_for_normal'=>'alert','compulsory'=>'1','age_group'=>'5'], - ['system_name' => 'Conscious level','name' => 'Conscious level','measurement'=>'','lower_limit'=>null,'upper_limit'=>null,'options'=>'alert and feeding,irritable,floppy, difficult to rouse,convulsing','option_for_normal'=>'alert and feeding','compulsory'=>'1','age_group'=>'1'], - ['system_name' => 'Feeding','name' => 'Feeding','measurement'=>'','lower_limit'=>null,'upper_limit'=>null,'options'=>'Normal,Drinks poorly,Unable to drink','option_for_normal'=>'Normal','compulsory'=>'1','age_group'=>'2,3,4'], - ['system_name' => 'Vomiting','name' => 'Vomiting','measurement'=>'','lower_limit'=>null,'upper_limit'=>null,'options'=>'None,Ocassional,Vomits everything','option_for_normal'=>'None','compulsory'=>'1','age_group'=>'2','3','4'], - ['system_name' => 'Convulsions','name' => 'Convulsions','measurement'=>'','lower_limit'=>null,'upper_limit'=>null,'options'=>'None,Occasional Reported,Frequent Reported,Convulsing','option_for_normal'=>'None','compulsory'=>'1','age_group'=>'1,2,3,4'], - ['system_name' => 'Urine Output','name' => 'Urine Output','measurement'=>'','lower_limit'=>null,'upper_limit'=>null,'options'=>'normal,reduced,none for 24 hours','option_for_normal'=>'normal','compulsory'=>'1','age_group'=>'5'], - ['system_name' => 'MUAC','name' => 'MUAC','measurement'=>'cm','lower_limit'=>null,'upper_limit'=>null,'options'=>'','option_for_normal'=>'>12.5','compulsory'=>'1','age_group'=>'5'], - ['system_name' => 'MUAC','name' => 'MUAC','measurement'=>'cm','lower_limit'=>12.5,'upper_limit'=>50,'options'=>'','option_for_normal'=>'','compulsory'=>'1','age_group'=>'1,2,3,4'], - ['system_name' => 'Supplementary Oxygen?','name' => 'Supplementary Oxygen?','measurement'=>'','lower_limit'=>null,'upper_limit'=>null,'options'=>'yes,no','option_for_normal'=>'','compulsory'=>'1','age_group'=>'1,2,3,4,5'], - ['system_name' => 'Blood Pressure','name' => 'Blood Pressure','measurement'=>'bp','lower_limit'=>null,'upper_limit'=>null,'options'=>'','option_for_normal'=>'','compulsory'=>'0','age_group'=>'1,2'], - ['system_name' => 'Blood Glucose','name' => 'Blood Glucose','measurement'=>'','lower_limit'=>null,'upper_limit'=>null,'options'=>'','option_for_normal'=>'','compulsory'=>'0','age_group'=>'1,2'], - ['system_name' => 'Height','name' => 'Height','measurement'=>'m','lower_limit'=>null,'upper_limit'=>null,'options'=>'','option_for_normal'=>'','compulsory'=>'1','age_group'=>'4,5'], - ['system_name' => 'Weight','name' => 'Weight','measurement'=>'kg','lower_limit'=>null,'upper_limit'=>null,'options'=>'','option_for_normal'=>'','compulsory'=>'1','age_group'=>'1,2,3,4,5'], - ['system_name' => 'Alcohol use','name' => 'Alcohol use','measurement'=>'','lower_limit'=>null,'upper_limit'=>null,'options'=>'High,Moderate,Low,Nil','option_for_normal'=>'','compulsory'=>'0','age_group'=>'5'], - ['system_name' => 'Tobacco use','name' => 'Tobacco use','measurement'=>'','lower_limit'=>null,'upper_limit'=>null,'options'=>'High,Moderate,Low,Nil','option_for_normal'=>'','compulsory'=>'0','age_group'=>'5'], - ['system_name' => 'Parent Concern','name' => 'Parent Concern','measurement'=>'','lower_limit'=>null,'upper_limit'=>null,'options'=>'Child should be admitted,Child should not be admitted','option_for_normal'=>'','compulsory'=>'0','age_group'=>'1,2,3,4'] - ]; - - foreach ($observations as $observation) { - // Prevent re-seeding the same data - Observation::firstOrCreate([ - 'system_name' => $observation['system_name'], - 'name' => $observation['name'], - 'slug' => strtolower(str_replace(' ', '_', $observation['name'])), - 'measurement' => $observation['measurement'], - 'lower_limit' => $observation['lower_limit'], - 'upper_limit' => $observation['upper_limit'], - 'options' => $observation['options'], - 'option_for_normal' => $observation['option_for_normal'], - 'compulsory' => $observation['compulsory'], - 'age_group' => $observation['age_group'], - 'created_by' => 1, - 'updated_by' => 1 - ]); - } - } -} diff --git a/docker/streamline-src/database/seeders/PermissionTableSeeder.php b/docker/streamline-src/database/seeders/PermissionTableSeeder.php deleted file mode 100755 index 93331747..00000000 --- a/docker/streamline-src/database/seeders/PermissionTableSeeder.php +++ /dev/null @@ -1,892 +0,0 @@ -forgetCachedPermissions(); - // PermissionRegistrar::forgetCachedPermissions(); - - $permissions = array( - array('name' => 'clinics-list', 'permission_category_id' => '12', 'description' => 'View clinics', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'clinics-create', 'permission_category_id' => '12', 'description' => 'Create Clinics', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'clinics-edit', 'permission_category_id' => '12', 'description' => 'Edit Clinics', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'clinics-delete', 'permission_category_id' => '12', 'description' => 'Deactivate Clinics', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'investigations-historical-list', 'permission_category_id' => '10', 'description' => 'View historical investigations', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'investigation-results-list', 'permission_category_id' => '10', 'description' => 'View investigation results', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'investigation-results-alter', 'permission_category_id' => '10', 'description' => 'Alter investigation results', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'investigations-authenticate', 'permission_category_id' => '10', 'description' => 'Authenticate investigation results', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'investigations-incoming', 'permission_category_id' => '10', 'description' => 'View incoming investigation results', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'messageboard-list', 'permission_category_id' => '11', 'description' => 'View messages', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'messageboard-create', 'permission_category_id' => '11', 'description' => 'Create message', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'messageboard-edit', 'permission_category_id' => '11', 'description' => 'Edit message', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'messageboard-delete', 'permission_category_id' => '11', 'description' => 'Delete message', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'messageboard-inactive-list', 'permission_category_id' => '11', 'description' => 'View inactive messages', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'messageboard-activate', 'permission_category_id' => '11', 'description' => 'Activate message', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'users-list', 'permission_category_id' => '1', 'description' => 'View users', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'users-create', 'permission_category_id' => '1', 'description' => 'Create user', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'users-edit', 'permission_category_id' => '1', 'description' => 'Edit user', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'users-delete', 'permission_category_id' => '1', 'description' => 'Delete user', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'role-list', 'permission_category_id' => '16', 'description' => 'View roles', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'role-create', 'permission_category_id' => '16', 'description' => 'Create role', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'role-edit', 'permission_category_id' => '16', 'description' => 'Edit role', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'role-delete', 'permission_category_id' => '16', 'description' => 'Delete role', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'procedures-delete', 'permission_category_id' => '12', 'description' => 'Delete procedure', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'procedures-edit', 'permission_category_id' => '12', 'description' => 'Edit procedure', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'procedures-create', 'permission_category_id' => '12', 'description' => 'Create procedure', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'procedures-list', 'permission_category_id' => '12', 'description' => 'View procedures', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'patient-list', 'permission_category_id' => '4', 'description' => 'View patients', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'patient-create', 'permission_category_id' => '4', 'description' => 'Create patient', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'patient-edit', 'permission_category_id' => '4', 'description' => 'Edit patient', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'patient-detail', 'permission_category_id' => '4', 'description' => 'Show patient', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'patient-delete', 'permission_category_id' => '4', 'description' => 'Delete patient', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'list-patient-registration-fields', 'permission_category_id' => '4', 'description' => 'View Patient Registration Fields', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'create-patient-registration-field', 'permission_category_id' => '4', 'description' => 'Create Patient Registration Fields', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'edit-patient-registration-field', 'permission_category_id' => '4', 'description' => 'Edit Patient Registration Fields', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'detail-patient-registration-field', 'permission_category_id' => '4', 'description' => 'Show Patient Registration Field', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'delete-patient-registration-field', 'permission_category_id' => '4', 'description' => 'Delete Patient Registration Fields', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'pharmacy-incoming-prescriptions', 'permission_category_id' => '13', 'description' => 'View pharmacy incoming prescriptions', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'pharmacy-ward-dispensing', 'permission_category_id' => '13', 'description' => 'View pharmacy ward dispensing', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'pharmacy-stock-sheet', 'permission_category_id' => '13', 'description' => 'View pharmacy stock sheet', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'pharmacy-drug-requisition', 'permission_category_id' => '13', 'description' => 'View pharmacy drug requisition', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'pharmacy-saved-requisitions', 'permission_category_id' => '13', 'description' => 'View pharmacy saved requisitions', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'pharmacy-previous-requisitions', 'permission_category_id' => '13', 'description' => 'View requisitions made previously', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'family-head-list', 'permission_category_id' => '2', 'description' => 'View insurance family heads', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'family-head-create', 'permission_category_id' => '2', 'description' => 'Create insurance family head', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'family-head-edit', 'permission_category_id' => '2', 'description' => 'Edit insurance family head', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'family-head-delete', 'permission_category_id' => '2', 'description' => 'Delete insurance family head', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'insurance-home', 'permission_category_id' => '2', 'description' => 'Insurance Home Page', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'insurance-risk-list', 'permission_category_id' => '2', 'description' => 'Insurance Risk List', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'insurance-risk-create', 'permission_category_id' => '2', 'description' => 'Insurance Risk Creation', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'insurance-risk-edit', 'permission_category_id' => '2', 'description' => 'Insurance Risk Editing', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'insurance-risk-delete', 'permission_category_id' => '2', 'description' => 'Insurance Risk Deletion', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'insurance-scheme-administration', 'permission_category_id' => '2', 'description' => 'Insurance Scheme Home Page', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View the dashboard required to manage Insurance Schemes'), - array('name' => 'insurance-product-setup', 'permission_category_id' => '2', 'description' => 'Insurance Product Setup', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View the dashboard required to setup insurance plans, benefits and items'), - array('name' => 'insurance-group-list', 'permission_category_id' => '2', 'description' => 'View insurance groups', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'insurance-group-create', 'permission_category_id' => '2', 'description' => 'Create insurance group', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'insurance-group-edit', 'permission_category_id' => '2', 'description' => 'Edit insurance group', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'insurance-group-delete', 'permission_category_id' => '2', 'description' => 'Delete insurance group', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'insurance-member-list', 'permission_category_id' => '2', 'description' => 'View insurance members', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'insurance-member-create', 'permission_category_id' => '2', 'description' => 'Create insurance member', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'insurance-member-edit', 'permission_category_id' => '2', 'description' => 'Edit insurance member', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'insurance-member-delete', 'permission_category_id' => '2', 'description' => 'Delete insurance members', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'insurance-almost-expiring', 'permission_category_id' => '3', 'description' => 'View insurance almost expiring', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'expired-insurance', 'permission_category_id' => '3', 'description' => 'View expired insurance report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'insurance-premiums-report', 'permission_category_id' => '3', 'description' => 'View insurance premiums report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'insurance-cumulative-premiums-report', 'permission_category_id' => '3', 'description' => 'View cumulative insurance premiums report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'insurance-income-received', 'permission_category_id' => '3', 'description' => 'View insurance income received report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'insurance-income-vs-expenditure', 'permission_category_id' => '3', 'description' => 'View insurance income vs expenditure report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'insurance-expenditure', 'permission_category_id' => '3', 'description' => 'view insurance expenditure report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'insurance-group-income-vs-expenditure', 'permission_category_id' => '3', 'description' => 'View group income vs expenditure report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'insurance-reports', 'permission_category_id' => '3', 'description' => 'View insurance reports', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'premium-renew', 'permission_category_id' => '2', 'description' => 'Renew premiums', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'premium-receipt-list', 'permission_category_id' => '2', 'description' => 'View paid premiums', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'premium-create', 'permission_category_id' => '2', 'description' => 'Create new premium', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'finance-patient-search', 'permission_category_id' => '7', 'description' => 'Patient finance home', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'make-sundries-deposits', 'permission_category_id' => '7', 'description' => 'Make sundries deposit', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'make-procedures-deposits', 'permission_category_id' => '7', 'description' => 'Make procedures deposit', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'make-investigations-deposits', 'permission_category_id' => '7', 'description' => 'Make investigation deposit', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'make-treatment-deposits', 'permission_category_id' => '7', 'description' => 'Make treatment deposit', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'make-co-payments-deposits', 'permission_category_id' => '7', 'description' => 'Make co-payment deposit', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'make-other-services-deposits', 'permission_category_id' => '7', 'description' => 'Make other service deposit', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'make-consultation-deposits', 'permission_category_id' => '7', 'description' => 'Make consultations deposit', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'make-central-billing', 'permission_category_id' => '7', 'description' => 'Make central billing deposit', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'make-patient-refund', 'permission_category_id' => '7', 'description' => 'Make refund for a patient bill', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'chart-of-accounts-list', 'permission_category_id' => '7', 'description' => 'View chart of accounts', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'create-chart-of-accounts', 'permission_category_id' => '7', 'description' => 'Create a chart of account', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'view-chart-of-account-details', 'permission_category_id' => '7', 'description' => 'View details of a chart of account', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'activate-chart-of-accounts', 'permission_category_id' => '7', 'description' => 'Activate a chart of account', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'de-activate-chart-of-accounts', 'permission_category_id' => '7', 'description' => 'De-activate a chart of account', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'account-types-list', 'permission_category_id' => '7', 'description' => 'View account type', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'create-account-types', 'permission_category_id' => '7', 'description' => 'Create account type', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'view-account-type-details', 'permission_category_id' => '7', 'description' => 'View details of an account type', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'activate-account-types', 'permission_category_id' => '7', 'description' => 'Activate an account type', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'de-activate-account-types', 'permission_category_id' => '7', 'description' => 'De-activate an account type', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'fixed-assets-list', 'permission_category_id' => '7', 'description' => 'View a list of fixed assets', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'create-fixed-assets', 'permission_category_id' => '7', 'description' => 'Create a new fixed asset', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'edit-fixed-assets', 'permission_category_id' => '7', 'description' => 'Edit fixed assets', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'find-a-donor', 'permission_category_id' => '9', 'description' => 'Find a donor', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'resources-list', 'permission_category_id' => '9', 'description' => 'List Resources', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'resources-create', 'permission_category_id' => '9', 'description' => 'Create Resources', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'resources-edit', 'permission_category_id' => '9', 'description' => 'Edit Resources', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'resources-detail', 'permission_category_id' => '9', 'description' => 'Get Details about Resources', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'resources-delete', 'permission_category_id' => '9', 'description' => 'Delete resources', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'resources-status', 'permission_category_id' => '9', 'description' => 'Activate or Deactivate Resources', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'audit_trail-list', 'permission_category_id' => '9', 'description' => 'List and Search Resources', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'suppliers-list', 'permission_category_id' => '9', 'description' => 'List Suppliers', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'suppliers-create', 'permission_category_id' => '9', 'description' => 'Create Suppliers', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'suppliers-edit', 'permission_category_id' => '9', 'description' => 'Edit Suppliers', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'suppliers-detail', 'permission_category_id' => '9', 'description' => 'Get Details about Suppliers', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'suppliers-delete', 'permission_category_id' => '9', 'description' => 'Delete Suppliers', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'suppliers-status', 'permission_category_id' => '9', 'description' => 'Activate or Deactivate Suppliers', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'bank-list', 'permission_category_id' => '9', 'description' => 'List Banks', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'bank-create', 'permission_category_id' => '9', 'description' => 'Create Banks', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'bank-edit', 'permission_category_id' => '9', 'description' => 'Edit Banks', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'bank-detail', 'permission_category_id' => '9', 'description' => 'Get Details about Banks', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'bank-delete', 'permission_category_id' => '9', 'description' => 'Delete Banks', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'bank-status', 'permission_category_id' => '9', 'description' => 'Activate or Deactivate Banks', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'donors-list', 'permission_category_id' => '9', 'description' => 'List Donors', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'donors-create', 'permission_category_id' => '9', 'description' => 'Create Donors', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'donors-edit', 'permission_category_id' => '9', 'description' => 'Edit Donors', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'donors-detail', 'permission_category_id' => '9', 'description' => 'Get Details about Donors', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'donors-delete', 'permission_category_id' => '9', 'description' => 'Delete Donors', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'donors-status', 'permission_category_id' => '9', 'description' => 'Activate or Deactivate Donors', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'staff_positions-list', 'permission_category_id' => '9', 'description' => 'List Staff Positions', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'staff_positions-create', 'permission_category_id' => '9', 'description' => 'Create Staff Positions', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'staff_positions-edit', 'permission_category_id' => '9', 'description' => 'Edit Staff Positions', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'staff_positions-detail', 'permission_category_id' => '9', 'description' => 'Get Details about Staff Positions', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'staff_positions-delete', 'permission_category_id' => '9', 'description' => 'Delete Staff Positions', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'staff_positions-status', 'permission_category_id' => '9', 'description' => 'Activate or Deactivate Staff Positions', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'occupation-list', 'permission_category_id' => '9', 'description' => 'List Occupations', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'occupation-create', 'permission_category_id' => '9', 'description' => 'Create Occupations', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'occupation-edit', 'permission_category_id' => '9', 'description' => 'Edit Occupations', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'occupation-detail', 'permission_category_id' => '9', 'description' => 'Get Details about Occupations', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'occupation-delete', 'permission_category_id' => '9', 'description' => 'Delete Occupations', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'occupation-status', 'permission_category_id' => '9', 'description' => 'Activate or Deactivate Occupations', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - - array('name' => 'countries-list', 'permission_category_id' => '9', 'description' => 'List countries', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'countries-create', 'permission_category_id' => '9', 'description' => 'Create countries', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'countries-edit', 'permission_category_id' => '9', 'description' => 'Edit countries', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'countries-detail', 'permission_category_id' => '9', 'description' => 'Get Details about countries', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'countries-delete', 'permission_category_id' => '9', 'description' => 'Delete countries', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'countries-status', 'permission_category_id' => '9', 'description' => 'Activate or Deactivate countries', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - - array('name' => 'resource_category-list', 'permission_category_id' => '9', 'description' => 'List Resource Categories', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'resource_category-create', 'permission_category_id' => '9', 'description' => 'Create Resource Categories', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'resource_category-edit', 'permission_category_id' => '9', 'description' => 'Edit Resource Categories', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'resource_category-detail', 'permission_category_id' => '9', 'description' => 'Get Details about Resource Categories', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'resource_category-delete', 'permission_category_id' => '9', 'description' => 'Delete Resource Categories', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'resource_category-status', 'permission_category_id' => '9', 'description' => 'Activate or Deactivate Resource Categories', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'hospital_information-edit', 'permission_category_id' => '9', 'description' => 'Edit And Update Hospital Information', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'patient_category-list', 'permission_category_id' => '9', 'description' => 'List Patient Categories', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'patient_category-create', 'permission_category_id' => '9', 'description' => 'Create Patient Categories', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'patient_category-edit', 'permission_category_id' => '9', 'description' => 'Edit Patient Categories', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'patient_category-detail', 'permission_category_id' => '9', 'description' => 'Get Details about Patient Categories', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'patient_category-delete', 'permission_category_id' => '9', 'description' => 'Delete Staff Patient Categories', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'patient_category-status', 'permission_category_id' => '9', 'description' => 'Activate or Deactivate Patient Categories', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'departments-list', 'permission_category_id' => '9', 'description' => 'List Departments', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'departments-create', 'permission_category_id' => '9', 'description' => 'Create Departments', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'departments-edit', 'permission_category_id' => '9', 'description' => 'Edit Departments', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'departments-detail', 'permission_category_id' => '9', 'description' => 'Get Details about Departments', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'departments-delete', 'permission_category_id' => '9', 'description' => 'Delete Departments', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'departments-status', 'permission_category_id' => '9', 'description' => 'Activate or Deactivate Departments', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'bed_categories-list', 'permission_category_id' => '9', 'description' => 'List Bed Categories', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'bed_categories-create', 'permission_category_id' => '9', 'description' => 'Create Bed Categories', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'bed_categories-edit', 'permission_category_id' => '9', 'description' => 'Edit Bed Categories', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'bed_categories-detail', 'permission_category_id' => '9', 'description' => 'Get Details about Bed Categories', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'bed_categories-delete', 'permission_category_id' => '9', 'description' => 'Delete Bed Categories', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'bed_categories-status', 'permission_category_id' => '9', 'description' => 'Activate or Deactivate Bed Categories', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'imaging-incoming-radiology', 'permission_category_id' => '10', 'description' => 'Incoming radiology requests', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'imaging-incoming-ultrasound', 'permission_category_id' => '10', 'description' => 'Incoming ultrasound requests', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'imaging-incoming-ultrasound-obstetric', 'permission_category_id' => '10', 'description' => 'Incoming ultrasound obstetric requests', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'imaging-radiology-results', 'permission_category_id' => '10', 'description' => 'View radiology results', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'imaging-ultrasound-results', 'permission_category_id' => '10', 'description' => 'View ultrasound results', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'imaging-ultrasound-obstetric-results', 'permission_category_id' => '10', 'description' => 'View obstetric ultrasound results', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'imaging-alter-investigation-results', 'permission_category_id' => '10', 'description' => 'Alter investigation results (imaging)', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'imaging-view-historical-results', 'permission_category_id' => '10', 'description' => 'View Historical investigation results (imaging)', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'district-create', 'permission_category_id' => '14', 'description' => 'Add a district', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'district-list', 'permission_category_id' => '14', 'description' => 'View districts', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'district-edit', 'permission_category_id' => '14', 'description' => 'Edit a district', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'district-delete', 'permission_category_id' => '14', 'description' => 'Deactivate a district', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'district-inactive-list', 'permission_category_id' => '14', 'description' => 'View inactive districts', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'county-create', 'permission_category_id' => '14', 'description' => 'Add a county', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'county-list', 'permission_category_id' => '14', 'description' => 'View counties', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'county-edit', 'permission_category_id' => '14', 'description' => 'Edit a county', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'county-delete', 'permission_category_id' => '14', 'description' => 'Deactivate a county', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'county-inactive-list', 'permission_category_id' => '14', 'description' => 'View inactive counties', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'subcounty-create', 'permission_category_id' => '14', 'description' => 'Add a subcounty', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'subcounty-list', 'permission_category_id' => '14', 'description' => 'View subcounties', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'subcounty-edit', 'permission_category_id' => '14', 'description' => 'Edit a subcounty', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'subcounty-delete', 'permission_category_id' => '14', 'description' => 'Deactivate a subcounty', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'subcounty-inactive-list', 'permission_category_id' => '14', 'description' => 'View inactive subcounties', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'parish-create', 'permission_category_id' => '14', 'description' => 'Add a parish', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'parish-list', 'permission_category_id' => '14', 'description' => 'View parishes', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'parish-edit', 'permission_category_id' => '14', 'description' => 'Edit a parish', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'parish-delete', 'permission_category_id' => '14', 'description' => 'Deactivate a parish', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'parish-inactive-list', 'permission_category_id' => '14', 'description' => 'View inactive parishes', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'village-create', 'permission_category_id' => '14', 'description' => 'Add a village', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'village-list', 'permission_category_id' => '14', 'description' => 'View villages', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'village-edit', 'permission_category_id' => '14', 'description' => 'Edit a village', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'village-delete', 'permission_category_id' => '14', 'description' => 'Deactivate a village', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'village-inactive-list', 'permission_category_id' => '14', 'description' => 'View inactive villages', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'stores-home', 'permission_category_id' => '15', 'description' => 'Home page for stores module', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'stores-request-quotation', 'permission_category_id' => '15', 'description' => 'Request for a quotation', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'stores-bill-items', 'permission_category_id' => '15', 'description' => 'Update billing for quotation items', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'stores-approve-purchase', 'permission_category_id' => '15', 'description' => 'Approve purchase of items', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'stores-receive-items', 'permission_category_id' => '15', 'description' => 'Received purchased items', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'stores-issue-drugs', 'permission_category_id' => '15', 'description' => 'Issue out drugs to pharmacy', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'stores-stock-sheet', 'permission_category_id' => '15', 'description' => 'View the store stock sheet', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'stores-saved-quotations', 'permission_category_id' => '15', 'description' => 'View saved quotations', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'stores-previous-received-items', 'permission_category_id' => '15', 'description' => 'View previously received items', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'stores-previous-issued-drugs', 'permission_category_id' => '15', 'description' => 'View previously issued drugs', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'stores-previous-quotations', 'permission_category_id' => '15', 'description' => 'View previous quotations', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'stores-previous-purchase-orders', 'permission_category_id' => '15', 'description' => 'View previous purchase orders', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'drug-form-delete', 'permission_category_id' => '12', 'description' => 'Deactivate and reactivate drug forms', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'drug-form-edit', 'permission_category_id' => '12', 'description' => 'Edit drug form', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'drug-form-create', 'permission_category_id' => '12', 'description' => 'Create drug form', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'drug-form-list', 'permission_category_id' => '12', 'description' => 'View drug forms', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'drug-unit-list', 'permission_category_id' => '12', 'description' => 'View drug units', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'drug-unit-create', 'permission_category_id' => '12', 'description' => 'Create drug unit', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'drug-unit-edit', 'permission_category_id' => '12', 'description' => 'Edit drug unit', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'drug-unit-delete', 'permission_category_id' => '12', 'description' => 'Deactivate and reactivate drug units', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'drug-category-list', 'permission_category_id' => '12', 'description' => 'View drug categories', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'drug-category-create', 'permission_category_id' => '12', 'description' => 'Create drug category', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'drug-category-edit', 'permission_category_id' => '12', 'description' => 'Edit drug category', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'drug-category-delete', 'permission_category_id' => '12', 'description' => 'Deactivate and reactivate drug categories', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'symptom-list', 'permission_category_id' => '12', 'description' => 'View symptoms', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'symptom-create', 'permission_category_id' => '12', 'description' => 'Create symptom', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'symptom-edit', 'permission_category_id' => '12', 'description' => 'Edit symptom', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'symptom-delete', 'permission_category_id' => '12', 'description' => 'Deactivate and reactivate symptom', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'diagnosis-list', 'permission_category_id' => '12', 'description' => 'View diagnoses', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'diagnosis-create', 'permission_category_id' => '12', 'description' => 'Create diagnosis', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'diagnosis-edit', 'permission_category_id' => '12', 'description' => 'Edit diagnosis', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'diagnosis-delete', 'permission_category_id' => '12', 'description' => 'Deactivate and reactivate diagnoses', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'investigations-list', 'permission_category_id' => '12', 'description' => 'View investigations', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'investigations-create', 'permission_category_id' => '12', 'description' => 'Create investigation', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'investigations-edit', 'permission_category_id' => '12', 'description' => 'Edit investigation', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'investigations-delete', 'permission_category_id' => '12', 'description' => 'Deactivate and reactivate investigations', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'ward-list', 'permission_category_id' => '23', 'description' => 'View wards', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'ward-create', 'permission_category_id' => '23', 'description' => 'Create ward', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'ward-edit', 'permission_category_id' => '23', 'description' => 'Edit ward', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'ward-delete', 'permission_category_id' => '23', 'description' => 'Deactivate and reactivate wards', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'clinic-list', 'permission_category_id' => '12', 'description' => 'View clinics', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'hmis-ward-list', 'permission_category_id' => '23', 'description' => 'View Hmis wards', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'hmis-ward-create', 'permission_category_id' => '23', 'description' => 'Create Hmis ward', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'hmis-ward-edit', 'permission_category_id' => '23', 'description' => 'Edit Hmis ward', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'hmis-ward-delete', 'permission_category_id' => '23', 'description' => 'Deactivate and reactivate Hmis wards', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - - array('name' => 'clinic-create', 'permission_category_id' => '12', 'description' => 'Create clinic', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'clinic-edit', 'permission_category_id' => '12', 'description' => 'Edit clinic', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'clinic-delete', 'permission_category_id' => '12', 'description' => 'Deactivate and reactivate clinics', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'procedure-list', 'permission_category_id' => '12', 'description' => 'View procedures', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'procedure-create', 'permission_category_id' => '12', 'description' => 'Create procedure', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'procedure-edit', 'permission_category_id' => '12', 'description' => 'Edit procedure', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'procedure-delete', 'permission_category_id' => '12', 'description' => 'Deactivate and reactivate procedures', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'procedure-category-list', 'permission_category_id' => '12', 'description' => 'View procedure categories', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'procedure-category-create', 'permission_category_id' => '12', 'description' => 'Create procedure category', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'procedure-category-edit', 'permission_category_id' => '12', 'description' => 'Edit procedure category', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'procedure-category-delete', 'permission_category_id' => '12', 'description' => 'Deactivate and reactivate procedure categories', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'sundry-list', 'permission_category_id' => '12', 'description' => 'View sundries', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'sundry-create', 'permission_category_id' => '12', 'description' => 'Create sundry', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'sundry-edit', 'permission_category_id' => '12', 'description' => 'Edit sundry', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'sundry-delete', 'permission_category_id' => '12', 'description' => 'Deactivate and reactivate sundries', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'investigations-category-list', 'permission_category_id' => '12', 'description' => 'View investigations categories', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'investigations-category-create', 'permission_category_id' => '12', 'description' => 'Create investigation category', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'investigations-category-edit', 'permission_category_id' => '12', 'description' => 'Edit investigation category', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'investigations-category-delete', 'permission_category_id' => '12', 'description' => 'Deactivate and reactivate investigations categories', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'observation-list', 'permission_category_id' => '12', 'description' => 'View observations', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'observation-create', 'permission_category_id' => '12', 'description' => 'Create observation', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'observation-edit', 'permission_category_id' => '12', 'description' => 'Edit observation', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'observation-delete', 'permission_category_id' => '12', 'description' => 'Deactivate and reactivate observations', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'dosage-frequency-list', 'permission_category_id' => '12', 'description' => 'View dosage frequencies', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'dosage-frequency-create', 'permission_category_id' => '12', 'description' => 'Create dosage frequency', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'dosage-frequency-edit', 'permission_category_id' => '12', 'description' => 'Edit dosage frequency', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'dosage-frequency-delete', 'permission_category_id' => '12', 'description' => 'Deactivate and reactivate dosage frequencies', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'referral-hospital-list', 'permission_category_id' => '12', 'description' => 'View referral hospitals', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'referral-hospital-create', 'permission_category_id' => '12', 'description' => 'Create referral hospital', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'referral-hospital-edit', 'permission_category_id' => '12', 'description' => 'Edit referral hospital', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'referral-hospital-delete', 'permission_category_id' => '12', 'description' => 'Deactivate and reactivate referral hospitals', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'age-group-list', 'permission_category_id' => '12', 'description' => 'View age groups', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'age-group-create', 'permission_category_id' => '12', 'description' => 'Create age group', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'age-group-edit', 'permission_category_id' => '12', 'description' => 'Edit age group', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'age-group-delete', 'permission_category_id' => '12', 'description' => 'Deactivate and reactivate age groups', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'hmis-category-list', 'permission_category_id' => '12', 'description' => 'View hmis categories', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'hmis-category-create', 'permission_category_id' => '12', 'description' => 'Create hmis category', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'hmis-category-edit', 'permission_category_id' => '12', 'description' => 'Edit hmis category', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'hmis-category-delete', 'permission_category_id' => '12', 'description' => 'Deactivate and reactivate hmis categories', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'hmis-category-option-list', 'permission_category_id' => '12', 'description' => 'View hmis category options', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'hmis-category-option-create', 'permission_category_id' => '12', 'description' => 'Create hmis category options', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'hmis-category-option-edit', 'permission_category_id' => '12', 'description' => 'Edit hmis category option', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'hmis-category-option-delete', 'permission_category_id' => '12', 'description' => 'Deactivate and reactivate hmis category options', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'unit-of-measure-list', 'permission_category_id' => '12', 'description' => 'View units of measure', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'unit-of-measure-create', 'permission_category_id' => '12', 'description' => 'Create unit of measure', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'unit-of-measure-edit', 'permission_category_id' => '12', 'description' => 'Edit unit of measure', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'unit-of-measure-delete', 'permission_category_id' => '12', 'description' => 'Deactivate and reactivate unit of measure', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'specialty-list', 'permission_category_id' => '12', 'description' => 'View specialties', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'specialty-create', 'permission_category_id' => '12', 'description' => 'Create specialties', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'specialty-edit', 'permission_category_id' => '12', 'description' => 'Edit specialties', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'specialty-delete', 'permission_category_id' => '12', 'description' => 'Deactivate and reactivate specialties', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'nssf-rate-edit', 'permission_category_id' => '7', 'description' => 'Edit payroll nssf rate', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'payroll-list', 'permission_category_id' => '7', 'description' => 'View payrolls', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'payroll-create', 'permission_category_id' => '7', 'description' => 'Create payrolls', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'payroll-edit', 'permission_category_id' => '7', 'description' => 'Edit payroll', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'payroll-delete', 'permission_category_id' => '7', 'description' => 'Deactivate and reactivate payroll', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'discount-list', 'permission_category_id' => '7', 'description' => 'View patient category discounts', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'discount-create', 'permission_category_id' => '7', 'description' => 'Create patient category discount', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'discount-edit', 'permission_category_id' => '7', 'description' => 'Edit patient category discounts', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'discount-category-list', 'permission_category_id' => '7', 'description' => 'View patient category discount categories', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'discount-category-create', 'permission_category_id' => '7', 'description' => 'Create patient category discount category', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'discount-category-edit', 'permission_category_id' => '7', 'description' => 'Edit patient category discount category', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'discount-category-delete', 'permission_category_id' => '7', 'description' => 'Deactivate and reactivate patient category discount categories', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'streamline-reports-list', 'permission_category_id' => '5', 'description' => 'View streamline reports', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'expired-drugs-report', 'permission_category_id' => '5', 'description' => 'View expired drugs report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'drug-stock-level', 'permission_category_id' => '5', 'description' => 'View drug stock levels', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'incoming-inpatient-bills', 'permission_category_id' => '7', 'description' => 'View incoming inpatient bills', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'finance-reports-activate', 'permission_category_id' => '8', 'description' => 'Activate Finance Reports', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'finance-reports-income-cash', 'permission_category_id' => '8', 'description' => 'View The Income Cash Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'finance-reports-income-accrual', 'permission_category_id' => '8', 'description' => 'View The Income Accrual Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'finance-reports-received-cash', 'permission_category_id' => '8', 'description' => 'View The Received Cash Reports', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'finance-debtors-report', 'permission_category_id' => '8', 'description' => 'View The Debtors Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'finance-discrepancy-report', 'permission_category_id' => '8', 'description' => 'View The Discrepancy Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'finance-donor-discount-report', 'permission_category_id' => '8', 'description' => 'View The Discounts From Donors', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'finance-discount-report', 'permission_category_id' => '8', 'description' => 'View Discount Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'finance-hospital-discount-report', 'permission_category_id' => '8', 'description' => 'View Hospital Discounts', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'finance-patient-debtors', 'permission_category_id' => '8', 'description' => 'View Patient Debtors', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'finance-staff-guarantors', 'permission_category_id' => '8', 'description' => 'View Staff Guarantors Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'finance-debt-plan-payments', 'permission_category_id' => '8', 'description' => 'View Debt Plan Payments', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'finance-balance-sheet', 'permission_category_id' => '8', 'description' => 'Generate Balance Sheet', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'finance-profit-or-loss-state', 'permission_category_id' => '8', 'description' => 'View Staff Guarantors Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'finance-patient-refunds-report', 'permission_category_id' => '8', 'description' => 'View Patient Refund Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'Payments-create-payment-item', 'permission_category_id' => '17', 'description' => 'Add Payment Item', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'Payments-edit-payment-item', 'permission_category_id' => '17', 'description' => 'Edit Payment Item', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'Payments-list-payment-items', 'permission_category_id' => '17', 'description' => 'View Payment Items', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'Payments-delete-payment-item', 'permission_category_id' => '17', 'description' => 'Delete Payment Item', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'Payments-activate-payment-item', 'permission_category_id' => '17', 'description' => 'Activate Payment Item', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'Payments-make-payment', 'permission_category_id' => '17', 'description' => 'Make Payment', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'Payments-view-payments-history', 'permission_category_id' => '17', 'description' => 'View Payments History', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'Payments-make-bulk-bill-payments', 'permission_category_id' => '17', 'description' => 'Make Bulk Bill Payments', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'banking-make-deposit', 'permission_category_id' => '18', 'description' => 'Make Bank Deposits', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'banking-make-transfers', 'permission_category_id' => '18', 'description' => 'Make Bank Transfers', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'banking-view-history', 'permission_category_id' => '18', 'description' => 'View Banking History Reports', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'banking-reverse', 'permission_category_id' => '18', 'description' => 'Reverse Banking Transactions', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'banking-reconciliation', 'permission_category_id' => '18', 'description' => 'Reconcile Bank Transactions', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'banking-register', 'permission_category_id' => '18', 'description' => 'View Banking Register', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'Invoices-generate', 'permission_category_id' => '19', 'description' => 'Generate Invoices', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'Invoices-receive-payments', 'permission_category_id' => '19', 'description' => 'Receive Invoice Payments', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'Invoices-view-payments-history', 'permission_category_id' => '19', 'description' => 'View Invoice Payments', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'patient-flow-monitoring', 'permission_category_id' => '4', 'description' => 'View patient flow in hospital system', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'drug-list', 'permission_category_id' => '13', 'description' => 'View drugs', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'drug-create', 'permission_category_id' => '13', 'description' => 'Create drug', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'drug-edit', 'permission_category_id' => '13', 'description' => 'Edit drug', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'drug-delete', 'permission_category_id' => '13', 'description' => 'Delete drug', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'services-list', 'permission_category_id' => '12', 'description' => 'View Services', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'services-create', 'permission_category_id' => '12', 'description' => 'Create Services', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'services-edit', 'permission_category_id' => '12', 'description' => 'Edit Services', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'services-delete', 'permission_category_id' => '12', 'description' => 'Deactivate Services', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'edit-patient-consultation', 'permission_category_id' => '4', 'description' => 'Edit patient consultation', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'edit-patient-inpatient', 'permission_category_id' => '4', 'description' => 'Edit patient in-patient information', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'view-prescription-errors', 'permission_category_id' => '9', 'description' => 'View prescription errors', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'change-general-settings', 'permission_category_id' => '9', 'description' => 'Change general settings for the Stre@mline system', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'price-list-category-create', 'description' => 'Create new price list category', 'permission_category_id' => '7', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'price-list-category-view', 'description' => 'View price list categories', 'permission_category_id' => '7', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'price-list-category-delete', 'description' => 'Delete price list category', 'permission_category_id' => '7', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'price-list-category-edit-pricing', 'description' => 'Edit price list category prices', 'permission_category_id' => '7', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'price-list-category-change-billing', 'description' => 'Change price list category during billing', 'permission_category_id' => '7', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'streamline-bills-create', 'description' => 'Generate Streamline Bills', 'permission_category_id' => '20', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'streamline-bills-index', 'description' => 'View Streamline Bills', 'permission_category_id' => '20', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'nira-birth-report', 'permission_category_id' => '21', 'description' => 'NIRA Birth Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-tb-screening-report', 'permission_category_id' => '21', 'description' => 'View TB Screening Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-disease-prevalence-over-a-period-of-time-report', 'permission_category_id' => '21', 'description' => 'View Disease Prevalence Over a Period of Time Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-family-planning-report', 'permission_category_id' => '21', 'description' => 'View Family Planning Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-streamline-outpatient-report', 'permission_category_id' => '21', 'description' => 'View Streamline Out-Patient Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-procedures-report', 'permission_category_id' => '21', 'description' => 'View Procedures Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-charge-book', 'permission_category_id' => '21', 'description' => 'View Charge Book', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-rdt-report', 'permission_category_id' => '21', 'description' => 'View RDT Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-drug-stock-levels-report', 'permission_category_id' => '21', 'description' => 'View Drug Stock Levels Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-drug-consumption-report', 'permission_category_id' => '21', 'description' => 'View Drug Consumption Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-expired-drugs-report', 'permission_category_id' => '21', 'description' => 'View Expired Drugs Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-drug-consumption-analysis-report', 'permission_category_id' => '21', 'description' => 'View Drug Consumption Analysis Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-anaesthesia-report', 'permission_category_id' => '21', 'description' => 'View Anaesthesia Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-surgeries-report', 'permission_category_id' => '21', 'description' => 'View Surgeries Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-ward-deposits-report', 'permission_category_id' => '21', 'description' => 'View Ward Deposits Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-ward-re-admittance-report', 'permission_category_id' => '21', 'description' => 'View Ward Re-Admittance Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-patients-lost-to-follow-up-report', 'permission_category_id' => '21', 'description' => 'View Patients Lost To Follow Up Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-days-when-drugs-were-out-of-stock-report', 'permission_category_id' => '21', 'description' => 'View Days When Drugs Were Out of Stock Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-patients-diagnosed-with-severe-mental-disorders', 'permission_category_id' => '21', 'description' => 'View Patients diagnosed with severe mental disorders', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-persons-taking-psychotropic-drugs', 'permission_category_id' => '21', 'description' => 'View Persons Taking Psychotropic Drugs', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-diagnosed-patients-who-received-treatment', 'permission_category_id' => '21', 'description' => 'View Diagnosed Patients Who Received Treatment', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-patients-receiving-mental-health-care-lost-to-follow-up', 'permission_category_id' => '21', 'description' => 'View Patients Receiving Mental Health Care Lost To Follow Up', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-number-of-days-psychotropic-drugs-were-out-of-stock', 'permission_category_id' => '21', 'description' => 'View Number of Days Psychotropic Drugs Were Out of Stock', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'stores-daily-stock-value-report', 'permission_category_id' => '15', 'description' => 'View the stores daily stock value report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'dispensing-prescriptions', 'permission_category_id' => '13', 'description' => 'Dispense Prescriptions', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'confirm-prescriptions', 'permission_category_id' => '13', 'description' => 'Confirm Prescriptions', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'lab_specimen-list', 'permission_category_id' => '10', 'description' => 'List Lab Specimen', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'lab_specimen-create', 'permission_category_id' => '10', 'description' => 'Create Lab Specimen', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'lab_specimen-edit', 'permission_category_id' => '10', 'description' => 'Edit Lab Specimen', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'lab_specimen-detail', 'permission_category_id' => '10', 'description' => 'Get Details about Lab Specimen', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'lab_specimen-delete', 'permission_category_id' => '10', 'description' => 'Delete Lab Specimen', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'lab_specimen-status', 'permission_category_id' => '10', 'description' => 'Activate or Deactivate Lab Specimen', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'view-clinical-data', 'permission_category_id' => '12', 'description' => 'Interact With Clinical Data', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'investigations-statistics', 'permission_category_id' => '10', 'description' => 'View Investigation Statistics', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'drug-route-delete', 'permission_category_id' => '12', 'description' => 'Deactivate and reactivate drug routes', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'drug-route-edit', 'permission_category_id' => '12', 'description' => 'Edit drug route', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'drug-route-create', 'permission_category_id' => '12', 'description' => 'Create drug route', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'drug-route-list', 'permission_category_id' => '12', 'description' => 'View drug routes', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'streamline-home-patient-search', 'permission_category_id' => '4', 'description' => 'Streamline Home Patient Search', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'view-bed-categories', 'permission_category_id' => '9', 'description' => 'View Bed Categories', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'view-departments', 'permission_category_id' => '9', 'description' => 'View Departments', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'view-hospital-information', 'permission_category_id' => '9', 'description' => 'View Hospital Information', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'view-patient-categories', 'permission_category_id' => '9', 'description' => 'View Patient Categories', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'view-occupations', 'permission_category_id' => '9', 'description' => 'View Occupations', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'view-resource-categories', 'permission_category_id' => '9', 'description' => 'View Resource Categories', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'view-staff-positions', 'permission_category_id' => '9', 'description' => 'View Staff Positions', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'view-audit-trail', 'permission_category_id' => '9', 'description' => 'View Audit Trail', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'view-donors', 'permission_category_id' => '9', 'description' => 'View Donors (Hospital Scheme)', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'view-suppliers', 'permission_category_id' => '9', 'description' => 'View Suppliers', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'view-resources', 'permission_category_id' => '9', 'description' => 'View Resources', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'imaging-incoming-cardiology', 'permission_category_id' => '10', 'description' => 'View Incoming Cardiology Requests', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'imaging-cardiology-results', 'permission_category_id' => '10', 'description' => 'View Cardiology Results', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-family-account', 'permission_category_id' => '7', 'description' => 'View Family Account', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'create-family-account', 'permission_category_id' => '7', 'description' => 'Create Family Account', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'create-core-chart-of-account', 'permission_category_id' => '7', 'description' => 'Create Or Edit Core Chart Of Accounts', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'cancel-investigation-order', 'permission_category_id' => '10', 'description' => 'Cancel Ordered Investigations', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'restore-cancelled-investigation-order', 'permission_category_id' => '10', 'description' => 'View Cancelled Ordered Investigations', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'receive-items-directly-pharmacy', 'permission_category_id' => '15', 'description' => 'Receive items directly into pharmacy', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'receive-items-directly-store', 'permission_category_id' => '15', 'description' => 'Receive items directly into store', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'pharmacy-ward-dispensing-per-chart', 'permission_category_id' => '13', 'description' => 'Ward Dispensing Per Chart', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'investigations-codes-create', 'permission_category_id' => '10', 'description' => 'Create Investigation Test Codes For Lab Machines', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'investigations-codes-list', 'permission_category_id' => '10', 'description' => 'View Investigation Test Codes For Lab Machines', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'investigations-codes-delete', 'permission_category_id' => '10', 'description' => 'Delete Investigation Test Codes For Lab Machines', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'manage-frequently-asked-questions', 'permission_category_id' => '16', 'description' => 'Manage frequently asked questions.', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'edit-patient-triage', 'permission_category_id' => '4', 'description' => 'Edit patient triage', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'lab-instruments-create', 'permission_category_id' => '10', 'description' => 'Create Lab Instruments', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'lab-instruments-list', 'permission_category_id' => '10', 'description' => 'View Lab Instruments', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'lab-instruments-delete', 'permission_category_id' => '10', 'description' => 'Delete Lab Instruments', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'create-patient-episode', 'permission_category_id' => '4', 'description' => 'Create new patient episode', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'create-patient-episode-with-clinic', 'permission_category_id' => '4', 'description' => 'Create patient episode with clinic', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'create-patient-episode-with-admission', 'permission_category_id' => '4', 'description' => 'Create patient episode with Admission', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'create-maternity-admission', 'permission_category_id' => '4', 'description' => 'Maternity admission from patient Home', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'create-ward-admission', 'permission_category_id' => '4', 'description' => 'Ward admission from patient home', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'ward-discounts-report', 'permission_category_id' => '8', 'description' => 'View ward discounts report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'drug-refill', 'permission_category_id' => '4', 'description' => 'Drug refill of given treatments', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'patient-follow-up', 'permission_category_id' => '4', 'description' => 'Patient Follow-ups', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'view-sms-reports', 'permission_category_id' => '9', 'description' => 'Send SMS to Staff and Patients', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'send-sms', 'permission_category_id' => '9', 'description' => 'View Reports about sent SMS', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'staff-payments-configuration', 'permission_category_id' => '4', 'description' => 'Staff Payment Configurations', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'create-patient-episode-with-doctor', 'permission_category_id' => '4', 'description' => 'Create patient episode with doctor', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'create-patient-episode-with-doctor-and-clinic', 'permission_category_id' => '4', 'description' => 'Create patient episode with doctor and clinic', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'view-patient-episode-primary-diagnoses', 'permission_category_id' => '4', 'description' => 'View episode primary diagnoses', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'view-patient-episode-other-diagnoses', 'permission_category_id' => '4', 'description' => 'View episode other diagnoses', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'view-patient-episode-clinic-from-patient-home', 'permission_category_id' => '4', 'description' => 'View episode clinic from patient home', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'confirm-prescriptions', 'permission_category_id' => '13', 'description' => 'Confirm prescriptions', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-theatre-management', 'permission_category_id' => '12', 'description' => 'View theatre management', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'view-theatre-drugs-stock-sheet', 'permission_category_id' => '12', 'description' => 'View theatre drugs stock sheet', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'view-theatre-sundries-stock-sheet', 'permission_category_id' => '12', 'description' => 'View theatre sundries stock sheet', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'view-theatre-requisitions', 'permission_category_id' => '12', 'description' => 'View theatre requisitions', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'view-incoming-ward-dispensing-per-chart', 'permission_category_id' => '13', 'description' => 'View Incoming Ward Dispensing Per Chart Requests', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'approve-ward-dispensings-per-chart', 'permission_category_id' => '13', 'description' => 'Approve Ward Dispensing Per Chart Request', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'view-ward-dispensings-per-chart-report', 'permission_category_id' => '13', 'description' => 'View Ward Dispensing Per Chart Report', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'create-patient-episode-with-self-lab-request', 'permission_category_id' => '4', 'description' => 'Create patient episode with lab self request', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'create-ward-item-request', 'permission_category_id' => '13', 'description' => 'Create ward item request', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'view-incoming-ward-item-requests', 'permission_category_id' => '13', 'description' => 'View incoming ward item request', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'approve-ward-request', 'permission_category_id' => '13', 'description' => 'Approve incoming ward item request', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'dispense-ward-request', 'permission_category_id' => '13', 'description' => 'Dispense incoming ward item request', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'view-companies', 'permission_category_id' => '9', 'description' => 'View Companies', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'order-for-services-from-patient-home', 'permission_category_id' => '4', 'description' => 'Order for services from patient home', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'remove-items-from-inpatient-sheet', 'permission_category_id' => '4', 'description' => 'Remove saved items from inpatient sheet', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'perform-triage', 'permission_category_id' => '4', 'description' => 'Perform Triage', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'create-consultation', 'permission_category_id' => '4', 'description' => 'Create Consultation', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'create-theatre-surgery', 'permission_category_id' => '4', 'description' => 'Create theatre surgery', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'create-theatre-anaesthesia', 'permission_category_id' => '4', 'description' => 'Create theatre anaesthesia', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'create-prescription', 'permission_category_id' => '4', 'description' => 'Create prescription', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'order-for-investigations', 'permission_category_id' => '4', 'description' => 'Order for investigations', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'view-episode-summary', 'permission_category_id' => '4', 'description' => 'View episode summary', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'order-for-procedures', 'permission_category_id' => '4', 'description' => 'Order for procedures', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'order-for-sundries', 'permission_category_id' => '4', 'description' => 'Order for Sundries', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'edit-users-role', 'permission_category_id' => '1', 'description' => 'Edit user role', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'pharmacy-stock-reconciliation', 'permission_category_id' => '13', 'description' => 'Pharmacy stock reconciliation', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'pharmacy-stock-reconciliation-report', 'permission_category_id' => '13', 'description' => 'View pharmacy stock reconciliation report', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'imaging-echo-cardio-template', 'permission_category_id' => '10', 'description' => 'Edit template for echo cardiology', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-patient-payment-methods', 'permission_category_id' => '7', 'description' => 'View Patients Payments Methods', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'journals-view', 'permission_category_id' => '22', 'description' => 'View Journals', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-patient-payment-methods-reports', 'permission_category_id' => '7', 'description' => 'View Patients Payments Methods Reports', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'admit-patient-from-patient-home', 'permission_category_id' => '4', 'description' => 'Admit patient from the patient home', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'add-ward-treatments-on-inpatient-sheet', 'permission_category_id' => '4', 'description' => 'Add and view ward treatment on inpatient sheet', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'add-to-take-home-drugs-on-inpatient-sheet', 'permission_category_id' => '4', 'description' => 'Add and view take home drugs on inpatient sheet', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'add-sundries-on-inpatient-sheet', 'permission_category_id' => '4', 'description' => 'Add sundries on inpatient sheet', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'add-extras-on-inpatient-sheet', 'permission_category_id' => '4', 'description' => 'Add extras on inpatient sheet', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'add-consultation-and-services-on-inpatient-sheet', 'permission_category_id' => '4', 'description' => 'Add consultation and services on inpatient sheet', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'add-comments-on-inpatient-sheet', 'permission_category_id' => '4', 'description' => 'Add comments on inpatient sheet', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'add-procedures-on-inpatient-sheet', 'permission_category_id' => '4', 'description' => 'Add procedures on inpatient sheet', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'add-ward-procedures-fees', 'permission_category_id' => '4', 'description' => 'Add ward procedure fees', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'add-inpatient-sheet-outcome', 'permission_category_id' => '4', 'description' => 'Add inpatient sheet outcome', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'save-inpatient-sheet', 'permission_category_id' => '4', 'description' => 'Save inpatient sheet', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'requisition-for-lab-sundries', 'permission_category_id' => '10', 'description' => 'Requisition For Lab Sundries', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-lab-sundries-stock-sheet', 'permission_category_id' => '10', 'description' => 'View Lab Sundries Stock Sheet', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-pharmacy-dispensation-report', 'permission_category_id' => '13', 'description' => 'View Pharmacy Dispensation Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'delete-received-store-items', 'permission_category_id' => '15', 'description' => 'Remove received items from stores', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'cancel-patient-transaction', 'permission_category_id' => '7', 'description' => 'Cancel a patient finance transaction', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-customer-statement', 'permission_category_id' => '7', 'description' => 'View customer statement', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'delete-hospital-bills', 'permission_category_id' => '7', 'description' => 'Delete Generated Hospital Bills', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'edit-hospital-bills', 'permission_category_id' => '7', 'description' => 'Edit Generated Hospital Bills', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'remove-investigation-with-no-result', 'permission_category_id' => '10', 'description' => 'Remove investigation with no result', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'delete-empty-episode', 'permission_category_id' => '4', 'description' => 'Delete empty episode from patient home', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'edit-payment-record', 'permission_category_id' => '17', 'description' => 'Edit Payments', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'delete-payment-record', 'permission_category_id' => '17', 'description' => 'Delete Payments', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'pay-hospital-bills', 'permission_category_id' => '7', 'description' => 'Pay Generated Hospital Bills', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'give-one-off-discounts', 'permission_category_id' => '7', 'description' => 'Give special discounts per patient and view report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-dashboard-reports', 'permission_category_id' => '4', 'description' => 'View dashboard reports', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'undo-banking', 'permission_category_id' => '18', 'description' => 'Undo Banking', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'cancel-prescription', 'permission_category_id' => '13', 'description' => 'Cancel Ordered Prescriptions', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'restore-cancelled-prescription', 'permission_category_id' => '13', 'description' => 'Restore Cancelled Ordered Prescriptions', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'merge-patient-episodes', 'permission_category_id' => '4', 'description' => 'Merge patient episodes', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'edit-performed-by', 'permission_category_id' => '4', 'description' => 'Edit and delete performed by services', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'pay-all-patient-bills', 'permission_category_id' => '7', 'description' => 'Pay all patient bills across episodes', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'record-staff-service-performance', 'permission_category_id' => '7', 'description' => 'Record staff that has performed service e.g performed procedures, investigations etc', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'cancel-ordered-procedures', 'permission_category_id' => '4', 'description' => 'Cancel ordered procedures', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'cancel-ordered-sundries', 'permission_category_id' => '4', 'description' => 'Cancel ordered sundries', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'cancel-ordered-services', 'permission_category_id' => '4', 'description' => 'Cancel ordered services', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'import-data-csv', 'permission_category_id' => '12', 'description' => 'Import clinical data via CSV', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'journals-delete', 'permission_category_id' => '22', 'description' => 'Delete Journals', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'delete-fixed-assets', 'permission_category_id' => '7', 'description' => 'Delete fixed assets', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'add-nurse-comments-on-inpatient-sheet', 'permission_category_id' => '4', 'description' => 'Add nurse comments on inpatient sheet', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'lab-management', 'permission_category_id' => '10', 'description' => 'Management of lab items including requisitioning', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-progressive-prescriptions', 'permission_category_id' => '13', 'description' => 'View progressive prescription orders and dispense them', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'change-drugs-covered-by-category', 'permission_category_id' => '7', 'description' => 'Select which drugs are covered by which patient category / corporate insurance', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'patient-category-sales', 'permission_category_id' => '7', 'description' => 'View report showing how much money each patient category brought in', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'view-accounts-payable-aging-summary', 'permission_category_id' => '8', 'description' => 'View Accounts Payable Aging Summary', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-accounts-payable-aging-detail', 'permission_category_id' => '8', 'description' => 'View Accounts Payable Aging Detail', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-accounts-receivable-aging-summary', 'permission_category_id' => '8', 'description' => 'View Accounts Receivable Aging Summary', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-accounts-receivable-aging-detail', 'permission_category_id' => '8', 'description' => 'View Accounts Receivable Aging Detail', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-cashflow-statement', 'permission_category_id' => '8', 'description' => 'View Cashflow Statement', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'general_items-delete', 'permission_category_id' => '12', 'description' => 'Delete general item routes', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'general_items-edit', 'permission_category_id' => '12', 'description' => 'Edit general item route', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'general_items-create', 'permission_category_id' => '12', 'description' => 'Create general item route', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'general_items-list', 'permission_category_id' => '12', 'description' => 'View general routes', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'cancel-family-account-deposit', 'permission_category_id' => '7', 'description' => 'Cancel family account deposit', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'add-transaction-date-patient-invoices', 'permission_category_id' => '7', 'description' => 'Add transaction date to the patient category invoices', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'finance-trial-balance', 'permission_category_id' => '8', 'description' => 'Generate Trial Balance Report', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'finance-staff-payments', 'permission_category_id' => '8', 'description' => 'Generate Staff Payments Report', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'finance-cost-centre-performance', 'permission_category_id' => '8', 'description' => 'Generate Cost Center Performance Report', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'finance-lab-performance', 'permission_category_id' => '8', 'description' => 'Generate Lab Performance Report', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'finance-top-performing-investigations', 'permission_category_id' => '8', 'description' => 'Generate Top Performing Report', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'finance-reverse-debtor-payment', 'permission_category_id' => '8', 'description' => 'Reverse payments made by a patient towards clearing their hospital debt', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'view-inpatient-sheet', 'permission_category_id' => '4', 'description' => 'View patient\'s inpatient sheet', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'view-inpatient-billing', 'permission_category_id' => '4', 'description' => 'View patient\'s inpatient billing', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'view-maternity-admission', 'permission_category_id' => '4', 'description' => 'View patient\'s maternity admission', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'edit-maternity-admission', 'permission_category_id' => '4', 'description' => 'Edit patient\'s maternity admission', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'print-maternity-admission', 'permission_category_id' => '4', 'description' => 'Print patient\'s maternity admission', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'view-delivery-record', 'permission_category_id' => '4', 'description' => 'View patient\'s delivery record', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'add-family-account-credit-limit', 'permission_category_id' => '7', 'description' => 'Add family account credit limit', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-pharmacy-overview', 'permission_category_id' => '4', 'description' => 'View Pharmacy Overview Graph', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-top-performing-stuff', 'permission_category_id' => '4', 'description' => 'View Top Performing Staff Graph', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-wait-patient-time', 'permission_category_id' => '4', 'description' => 'View Patient Wait Time Graph', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-top-diagnoses-overview', 'permission_category_id' => '4', 'description' => 'View Top Diagnoses Graph', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-inpatient-statistics-overview', 'permission_category_id' => '4', 'description' => 'View Inpatient Statistics Graph', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-top-investigations-overview', 'permission_category_id' => '4', 'description' => 'View Top Investigations Graph', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-top-supplier-overview', 'permission_category_id' => '4', 'description' => 'View Top Suppliers Graph', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-attendance-overview', 'permission_category_id' => '4', 'description' => 'View Attendance Overview Graph', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'add-chart-of-account-slug', 'permission_category_id' => '7', 'description' => 'Add Slug To Chart Of Account', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-patient-dependants-consumption-report', 'permission_category_id' => '7', 'description' => 'View patient dependants consumption report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'add-dependants-to-patient', 'permission_category_id' => '7', 'description' => 'Add dependants to a patient', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-dependants-to-patient', 'permission_category_id' => '7', 'description' => 'View dependants to a patient', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-hmis-reports', 'permission_category_id' => '5', 'description' => 'View HMIS Reports', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-hmis-form-105-health-unit-outpatient-monthly-report', 'permission_category_id' => '5', 'description' => 'View HMIS Form 105: Health Unit Outpatient Monthly Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-risky-behaviors', 'permission_category_id' => '5', 'description' => 'View Risky Behaviors', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-body-mass-index', 'permission_category_id' => '5', 'description' => 'View Body Mass index', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-form-108-inpatient-monthly-report', 'permission_category_id' => '5', 'description' => 'View HMIS Form 108-Inpatient Monthly Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-hmis-form-031-outpatient-register', 'permission_category_id' => '5', 'description' => 'View HMIS Form 031-Outpatient Register ', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-hmis-form-002-opd-outpatient-register', 'permission_category_id' => '5', 'description' => 'View HMIS Form 002-OPD Outpatient Register', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-hmis-form-106a-health-unit-quarterly-report', 'permission_category_id' => '5', 'description' => 'View HMIS Form 106a-Health Unit Quarterly Report ', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-hmis-form-weekly-epidimeological-surveillance', 'permission_category_id' => '5', 'description' => 'View HMIS Form - Weekly Epidimeological Surveillance ', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-hmis-form-essential-medicines-and-health-supplies', 'permission_category_id' => '5', 'description' => 'View HMIS Form - Essential Medicines and Health Supplies ', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-hmis-form-033b', 'permission_category_id' => '5', 'description' => 'View HMIS 033b: Health Unit Weekly Epidemiological Surveillance Report ', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-memorised-reports', 'permission_category_id' => '5', 'description' => 'View memorised reports', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'remove-batch-during-stock-reconciliation', 'permission_category_id' => '15', 'description' => 'Remove item batch during stock reconciliation', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'approve-opd-requisitions', 'permission_category_id' => '15', 'description' => 'Approve OPD items requisitions', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'approve-and-issue-out-opd-requisitions', 'permission_category_id' => '15', 'description' => 'Approve and issue out OPD items requisitions', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'issue-out-opd-requisitions', 'permission_category_id' => '15', 'description' => 'Issue out OPD items requisitions', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'edit-ward-item-request', 'permission_category_id' => '13', 'description' => 'Edit ward item request', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'delete-ward-item-request', 'permission_category_id' => '13', 'description' => 'Delete ward item request', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'edit-batch-during-stock-reconciliation', 'permission_category_id' => '15', 'description' => 'Edit item batch during stock reconciliation', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-lab-machine-results', 'permission_category_id' => '10', 'description' => 'View investigation results from lab instrument', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-ward-drug-stock-sheet', 'permission_category_id' => '23', 'description' => 'View drugs ward stock sheet', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'edit-ward-drug-stock-sheet', 'permission_category_id' => '23', 'description' => 'Edit drug ward stock sheet', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'view-ward-sundry-stock-sheet', 'permission_category_id' => '23', 'description' => 'View sundries ward stock sheet', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'edit-ward-sundry-stock-sheet', 'permission_category_id' => '23', 'description' => 'Edit sundry ward stock sheet', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'patient-appointments-report', 'permission_category_id' => '4', 'description' => 'View patient appointments report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'patient-flow-monitoring-inpatient-admission', 'permission_category_id' => '4', 'description' => 'Admit patient from platient flow monitoring', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'edit-services-prices-on-inpatient-sheet', 'permission_category_id' => '4', 'description' => 'Edit services price on inpatient sheet', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'edit-investigation-prices-on-inpatient-bill', 'permission_category_id' => '4', 'description' => 'Edit investigation price on inpatient bill', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'cancel-ward-prescription', 'permission_category_id' => '4', 'description' => 'Cancel ward prescription', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'result-templates-list', 'permission_category_id' => '12', 'description' => 'View investigations Result Templates', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'result-templates-create', 'permission_category_id' => '12', 'description' => 'Create investigation Result Templates', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'result-templates-edit', 'permission_category_id' => '12', 'description' => 'Edit investigation Result Templates', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'result-templates-delete', 'permission_category_id' => '12', 'description' => 'Deactivate and reactivate investigations Result Templates', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'cancel-family-account-deposit', 'permission_category_id' => '7', 'description' => 'Cancel family account deposit', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-patient-accounts-deposits', 'permission_category_id' => '7', 'description' => 'Make and view patient account deposits', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-patient-accounts-refunds', 'permission_category_id' => '7', 'description' => 'Make and view patient account refunds', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-patient-accounts-consumptions', 'permission_category_id' => '7', 'description' => 'View patient account consumptions', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'cancel-patient-accounts-deposits', 'permission_category_id' => '7', 'description' => 'Cancel patient account deposits and refunds', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'issue-inpatient-attendant-pass', 'permission_category_id' => '4', 'description' => 'Issue inpatient attendant pass', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'pay-inpatient-bill-from-inpatient-billing-page', 'permission_category_id' => '7', 'description' => 'Pay inpatient bill from inpatient billing page', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'delete-store-requisition', 'permission_category_id' => '13', 'description' => 'Delete store requisition', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'You can delete a requisition which has not yet been issued out'), - array('name' => 'view-patient-diagnosis-at-pharmacy', 'permission_category_id' => '4', 'description' => 'View patient diagnosis at pharmacy', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => 'Allow person dispensing drugs to view the patient diagnosis'), - array('name' => 'view-closed-inpatient-sheet', 'permission_category_id' => '4', 'description' => 'View closed inpatient sheet', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => "The permission for users to view details of closed inpatient sheets to protect patients' privacy"), - array('name' => 'view-patient-diagnosis-at-lab', 'permission_category_id' => '4', 'description' => 'View patient diagnosis at Lab', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => 'Allow person in the lab to view the patient diagnosis'), - array('name' => 'create-consultation-with-notes', 'permission_category_id' => '4', 'description' => 'Create Consultation with notes', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'Create Consultation with notes'), - array('name' => 'perform-triage-without-etat', 'permission_category_id' => '4', 'description' => 'Perform Triage Without ETAT', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'Perform Triage Without ETAT'), - array('name' => 'delete-doctor-ward-notes-from-inpatient-sheet', 'permission_category_id' => '4', 'description' => 'Delete doctor ward notes from inpatient', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'Delete ward progress notes that were added by the doctor'), - array('name' => 'edit-inpatient-detailed-notes', 'permission_category_id' => '4', 'description' => 'Edit inpatient detailed notes', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'Edit inpatient detailed notes'), - array('name' => 'delete-inpatient-detailed-notes', 'permission_category_id' => '4', 'description' => 'Delete inpatient detailed notes', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'Delete inpatient detailed notes'), - array('name' => 'delete-nurse-ward-notes-from-inpatient-sheet', 'permission_category_id' => '4', 'description' => 'Delete nurse ward notes from inpatient', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'Delete ward progress notes that were added by the nurse'), - array('name' => 'edit-nurse-ward-notes-from-inpatient-sheet', 'permission_category_id' => '4', 'description' => 'Edit nurse ward notes from inpatient', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'Edit ward progress notes that were added by the nurse'), - array('name' => 'edit-doctor-ward-notes-from-inpatient-sheet', 'permission_category_id' => '4', 'description' => 'Edit doctor ward notes from inpatient', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'Edit doctor progress notes that were added by the doctor'), - - array('name' => 'view-theatre-notes-from-the-inpatient-sheet', 'permission_category_id' => '4', 'description' => 'View theatre notes from the inpatient sheet', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'View theatre notes from the inpatient sheet'), - array('name' => 'view-investigation-staff-overview', 'permission_category_id' => '4', 'description' => 'View Staff Performance By Investigations', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View how many staff performed investigations and which investigations they performed'), - array('name' => 'view-performed-services-report', 'permission_category_id' => '21', 'description' => 'View Performed Services Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'outcome-list', 'permission_category_id' => '12', 'description' => 'View outcomes', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'outcome-create', 'permission_category_id' => '12', 'description' => 'Create outcome', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'outcome-edit', 'permission_category_id' => '12', 'description' => 'Edit outcome', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'outcome-delete', 'permission_category_id' => '12', 'description' => 'Deactivate and reactivate outcome', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'view-point-of-sale', 'permission_category_id' => '4', 'description' => 'View Point of Sale', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View Point of Sale'), - array('name' => 'view-finance-home', 'permission_category_id' => '7', 'description' => 'View Finance Home', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View Finance Home'), - array('name' => 'view-eye-clinic', 'permission_category_id' => '4', 'description' => 'View Eye Clinic', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View Eye Clinic'), - array('name' => 'transfer-patient-internally', 'permission_category_id' => '4', 'description' => 'Transfer patient internally', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'Transfer patient internally'), - array('name' => 'view-death-report', 'permission_category_id' => '4', 'description' => 'View patient death report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View patient death report'), - array('name' => 'view-birth-report', 'permission_category_id' => '4', 'description' => 'View patient birth report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View patient birth report'), - array('name' => 'view-surgery', 'permission_category_id' => '4', 'description' => 'View patient surgery', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View patient surgery'), - array('name' => 'create-surgery', 'permission_category_id' => '4', 'description' => 'Create patient surgery record', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => 'Create patient surgery record'), - array('name' => 'view-anaesthetics-history', 'permission_category_id' => '4', 'description' => 'View anaesthetics history', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View anaesthetics history'), - array('name' => 'create-anaesthetics', 'permission_category_id' => '4', 'description' => 'Create patient anaesthetics', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => 'Create patient anaesthetics'), - array('name' => 'view-patient-file', 'permission_category_id' => '4', 'description' => 'View patient file', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View patient file'), - array('name' => 'view-maternity-report', 'permission_category_id' => '21', 'description' => 'View Maternity Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View Report on Maternity'), - array('name' => 'budget-create', 'permission_category_id' => '24', 'description' => 'Create budget', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'budget-list', 'permission_category_id' => '24', 'description' => 'View a list of budgets', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'budget-view', 'permission_category_id' => '24', 'description' => 'View details of a budget', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'budget-edit', 'permission_category_id' => '24', 'description' => 'Edit budget', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'budget-delete', 'permission_category_id' => '24', 'description' => 'Deactivate and reactivate budget', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'budget-performance-report', 'permission_category_id' => '24', 'description' => 'View budget summary Performance', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'Budget Vs Actual Summary -this looks at the total for the budget period only'), - array('name' => 'budget-detail-performance-report', 'permission_category_id' => '24', 'description' => 'View budget detail Performance', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'Budget Vs Actual detail: compares each period and then the total for whole the period'), - array('name' => 'dental-list', 'permission_category_id' => '12', 'description' => 'View dentals', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'dental-create', 'permission_category_id' => '12', 'description' => 'Create dental', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'dental-edit', 'permission_category_id' => '12', 'description' => 'Edit dental', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'dental-delete', 'permission_category_id' => '12', 'description' => 'Deactivate and Activate dental', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'radiology-list', 'permission_category_id' => '12', 'description' => 'View radiologies', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'radiology-create', 'permission_category_id' => '12', 'description' => 'Create radiology', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'radiology-edit', 'permission_category_id' => '12', 'description' => 'Edit radiologies', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'radiology-delete', 'permission_category_id' => '12', 'description' => 'Deactivate and Activate radiology', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'order-for-eye-glasses', 'permission_category_id' => '4', 'description' => 'Order For Eye Glasses', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'eye_glasses-list', 'description' => 'View eye glasses', 'permission_category_id' => '25', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'eye_glasses-create', 'description' => 'Create eye glasses', 'permission_category_id' => '25', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'eye_glasses-edit', 'description' => 'Edit eye glasses', 'permission_category_id' => '25', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'eye_glasses-delete', 'description' => 'Delete eye glasses', 'permission_category_id' => '25', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'test_areas-list', 'description' => 'View Test Areas', 'permission_category_id' => '12', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'test_areas-create', 'description' => 'Create Test Areas', 'permission_category_id' => '12', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'test_areas-edit', 'description' => 'Edit Test Areas', 'permission_category_id' => '12', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'test_areas-delete', 'description' => 'Delete Test Areas', 'permission_category_id' => '12', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'test_area_values-list', 'description' => 'View Test Area Values', 'permission_category_id' => '12', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'test_area_values-create', 'description' => 'Create Test Area Values', 'permission_category_id' => '12', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'test_area_values-edit', 'description' => 'Edit Test Area Values', 'permission_category_id' => '12', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'test_area_values-delete', 'description' => 'Delete Test Area Values', 'permission_category_id' => '12', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'cancel-ordered-eye-glasses', 'permission_category_id' => '4', 'description' => 'Cancel ordered eye glasses', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'radiologies-management', 'permission_category_id' => '12', 'description' => 'Radiologies management', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => 'Link to radiologies management under imaging'), - array('name' => 'dentals-management', 'permission_category_id' => '12', 'description' => 'Dentals management', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => 'Link to dentals management under imaging'), - array('name' => 'dental-requisitions', 'permission_category_id' => '12', 'description' => 'View Dental Requisitions', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'dental-usage-report', 'permission_category_id' => '12', 'description' => 'View Dental Usage Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'dental-usage-listing', 'permission_category_id' => '12', 'description' => 'View Dental Usage listing', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'pharmacy-sundries-stock-reconciliation', 'permission_category_id' => '13', 'description' => 'Perform pharmacy sundry reconciliations', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'pharmacy-sundries-stock-reconciliation-report', 'permission_category_id' => '13', 'description' => 'View pharmacy sundry reconciliations', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'change-personal-settings', 'permission_category_id' => '9', 'description' => 'Edit personal settings', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => 'Edit personal settings e.g which language a user wants the system in'), - array('name' => 'view-smart-triage', 'permission_category_id' => '4', 'description' => 'View smart triage reports', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-investigation-specimen-reports', 'permission_category_id' => '10', 'description' => 'View investigation specimen reports', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View investigation specimen reports'), - array('name' => 'view-recalculate-inpatient-bill', 'permission_category_id' => '4', 'description' => 'View re-calculate inpatient bill button', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'View the Recalculate inpatient bill button'), - array('name' => 'streamline-reports-diagnosis', 'permission_category_id' => '5', 'description' => 'View Diagnosis Streamline Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View Diagnosis Streamline Report'), - array('name' => 'streamline-reports-treatment', 'permission_category_id' => '5', 'description' => 'View Treatments Streamline Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View Treatments Streamline Report'), - array('name' => 'streamline-reports-investigations', 'permission_category_id' => '5', 'description' => 'View Investigations Streamline Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View Investigations Streamline Report'), - array('name' => 'streamline-reports-patient-visits', 'permission_category_id' => '5', 'description' => 'View Patient Visits Streamline Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View Patient Visits Streamline Report'), - array('name' => 'streamline-reports-symptoms', 'permission_category_id' => '5', 'description' => 'View Symptoms Streamline Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View Symptoms Streamline Report'), - array('name' => 'streamline-reports-doctors', 'permission_category_id' => '5', 'description' => 'View Doctors Streamline Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View Doctors Streamline Report'), - array('name' => 'view-patients-home', 'permission_category_id' => '4', 'description' => 'View Patient Home', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View Patient Home'), - array('name' => 'add-ward-discount', 'permission_category_id' => '7', 'description' => 'Add ward discounts', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'Add a discount amount on making inpatient payment'), - array('name' => 'view-smart-discharge', 'permission_category_id' => '4', 'description' => 'View smart discharge reports', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View smart discharge reports'), - array('name' => 'view-inactive-patients', 'permission_category_id' => '4', 'description' => 'View inactive patients', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View inactive patients'), - array('name' => 'delete-items-quotation', 'permission_category_id' => '15', 'description' => 'Delete Items Quotation', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => 'Delete Items Quotation'), - array('name' => 'payroll-category-create', 'description' => 'Create new payroll category', 'permission_category_id' => '7', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'payroll-category-view', 'description' => 'View payroll categories', 'permission_category_id' => '7', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'payroll-category-delete', 'description' => 'Delete payroll category', 'permission_category_id' => '7', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'tax-rate-edit', 'permission_category_id' => '7', 'description' => 'Edit payroll tax rate', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'add-new-diagnosis-from-consultation', 'permission_category_id' => '4', 'description' => 'Add new diagnosis from consultation', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => 'Add new system diagnosis from the consultation page'), - array('name' => 'view-inpatient-bill-saving-history', 'permission_category_id' => '7', 'description' => 'View history of users that have saved an inpatient bill', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View a history or audit trail of users that have saved an inpatient bill'), - array('name' => 'delete-direct-bank-deposit', 'permission_category_id' => '7', 'description' => 'Delete a direct bank deposit', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'Delete a direct bank deposit'), - array('name' => 'unreceive-direct-bank-deposit', 'permission_category_id' => '7', 'description' => 'Unreceive a direct bank deposit', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'Unreceive a direct bank deposit so that it can be received again from the income cash report'), - array('name' => 'chi_plan-list-delete', 'permission_category_id' => '2', 'description' => 'Deactivate and reactivate C.H.I Plan', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'chi-to-pay-edit', 'permission_category_id' => '2', 'description' => 'Edit the C.H.I to pay amounts on inpatient sheet', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => 'Enable the user to edit the amounts to be paid by C.H.I plan patient is on.'), - array('name' => 'chi_plan-list-edit', 'permission_category_id' => '2', 'description' => 'Edit C.H.I Plan', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'chi_plan-list-create', 'permission_category_id' => '2', 'description' => 'Create C.H.I Plan', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'chi_plan-list-list', 'permission_category_id' => '2', 'description' => 'View C.H.I Plan', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'insurance-benefits-view', 'permission_category_id' => '2', 'description' => 'View insurance benefits', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View insurance benefits'), - array('name' => 'insurance-benefits-create', 'permission_category_id' => '2', 'description' => 'Create insurance benefits', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'Create insurance benefits'), - array('name' => 'insurance-benefits-inactive', 'permission_category_id' => '2', 'description' => 'View inactive insurance benefits', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View inactive insurance benefits'), - array('name' => 'insurance-items-view', 'permission_category_id' => '2', 'description' => 'View insurance items', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View insurance items'), - array('name' => 'insurance-items-create', 'permission_category_id' => '2', 'description' => 'Create insurance items', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'Create insurance items'), - array('name' => 'insurance-benefits-view-details', 'permission_category_id' => '2', 'description' => 'View insurance benefit details', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View insurance benefit details'), - array('name' => 'insurance-benefits-edit', 'permission_category_id' => '2', 'description' => 'Edit insurance benefits', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'Edit insurance benefits'), - array('name' => 'insurance-items-edit', 'permission_category_id' => '2', 'description' => 'Edit insurance items', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'Edit insurance items'), - array('name' => 'insurance-items-remove', 'permission_category_id' => '2', 'description' => 'Remove insurance items from benefit', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'Remove insurance items from benefit'), - array('name' => 'insurance-tariffs-create', 'permission_category_id' => '2', 'description' => 'Create insurance tariffs for items', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'Create insurance tariffs for items'), - array('name' => 'insurance-tariffs-edit', 'permission_category_id' => '2', 'description' => 'Edit insurance tariffs for items', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'Edit insurance tariffs for items'), - array('name' => 'insurance-tariffs-delete', 'permission_category_id' => '2', 'description' => 'Delete insurance tariffs for items', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'Delete insurance tariffs for items'), - array('name' => 'view-item-prices', 'permission_category_id' => '7', 'description' => 'View individual item prices on patient payments', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View individual item prices on patient payments'), - array('name' => 'make-bulk-invoice-payments', 'permission_category_id' => '7', 'description' => 'Perform bulk invoice payments for patient categories', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'Perform bulk invoice payments for a paylater patient category'), - array('name' => 'insurance-disease-groups-view', 'permission_category_id' => '2', 'description' => 'View insurance disease groups', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View insurance disease groups'), - array('name' => 'insurance-disease-groups-edit', 'permission_category_id' => '2', 'description' => 'Edit insurance disease groups', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'Edit insurance disease groups'), - array('name' => 'insurance-disease-groups-delete', 'permission_category_id' => '2', 'description' => 'Delete insurance disease groups', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'Delete insurance disease groups'), - array('name' => 'insurance-disease-groups-create', 'permission_category_id' => '2', 'description' => 'Create insurance disease groups', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'Create insurance disease groups'), - array('name' => 'add-medical-detailed-notes-on-inpatient-sheet', 'permission_category_id' => '4', 'description' => 'Add medical detailed notes on inpatient sheet e.g vitals, plan etc', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'Add medical detailed notes on inpatient sheet e.g vitals, plan, impressions, history etc'), - array('name' => 'authorize-inpatient-bill', 'permission_category_id' => '7', 'description' => 'Authorize inpatient bill', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'add-row-on-prescription', 'permission_category_id' => '13', 'description' => 'View the add row button on the prescription page', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-medical-detailed-notes-on-inpatient-sheet', 'permission_category_id' => '4', 'description' => 'View medical detailed notes on inpatient sheet e.g vitals, plan etc', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'View medical detailed notes on inpatient sheet e.g vitals, plan, impressions, history etc'), - array('name' => 'add-medical-history-on-inpatient-sheet', 'permission_category_id' => '4', 'description' => 'Add history notes on inpatient sheet e.g vitals, plan etc', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'Add history notes on inpatient sheet'), - array('name' => 'add-medical-results-on-inpatient-sheet', 'permission_category_id' => '4', 'description' => 'Add results notes on inpatient sheet e.g vitals, plan etc', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'Add results notes on inpatient sheet'), - array('name' => 'add-vitals-and-examination-on-inpatient-sheet', 'permission_category_id' => '4', 'description' => 'Add vitals and examination notes on inpatient sheet e.g vitals, plan etc', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'Add vitals and examination notes on inpatient sheet'), - array('name' => 'add-impression-on-inpatient-sheet', 'permission_category_id' => '4', 'description' => 'Add impression notes on inpatient sheet e.g vitals, plan etc', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'Add vitals and examination notes on inpatient sheet'), - array('name' => 'add-plan-on-inpatient-sheet', 'permission_category_id' => '4', 'description' => 'Add plan notes on inpatient sheet e.g vitals, plan etc', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'Add plan notes on inpatient sheet'), - array('name' => 'insurance-tariffs-view', 'permission_category_id' => '2', 'description' => 'View insurance tariffs for items', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View insurance tariffs for items'), - array('name' => 'authorise-insurance-claims', 'permission_category_id' => '2', 'description' => 'Manage authorisations for insurance claims', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'Manage authorisations for insurance claims'), - array('name' => 'make-chi-deposits', 'permission_category_id' => '7', 'description' => 'Handle CHI co-payments and co-insurance by patients', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'Handle CHI co-payments and co-insurance by patients'), - array('name' => 'override-claim-adjudication-errors', 'permission_category_id' => '2', 'description' => 'Override Claim Adjudication Errors', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'Override Claim Adjudication Errors'), - array('name' => 'register-chi-members-with-pre-existing-premiums', 'permission_category_id' => '2', 'description' => 'Register CHI members with pre-existing premiums', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'Add new CHI members whose premiums have already been received i.e activate CHI members whose premiums were not previously received through Stre@mline'), - array('name' => 'members-with-pre-existing-premiums-report', 'permission_category_id' => '2', 'description' => 'View added CHI members with pre-existing premiums report', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'View new CHI members whose premiums have already been received report i.e activate CHI members whose premiums were not previously received through Stre@mline'), - array('name' => 'cancel-insurance-member-premiums', 'permission_category_id' => '2', 'description' => 'Cancel insurance member premiums', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'Cancel premiums paid by members if the premium has no consumptions on it'), - array('name' => 'change-expense-account-on-make-payment', 'permission_category_id' => '7', 'description' => 'Change expense account on make new payment', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'Allow user to change expense accounts on making new payment'), - array('name' => 'view-previous-patient-prescriptions', 'permission_category_id' => '4', 'description' => 'View previous patient prescriptions', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'View previous patient prescriptions from other episodes'), - array('name' => 'person-title-list', 'permission_category_id' => '9', 'description' => 'List person titles', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'person-title-create', 'permission_category_id' => '9', 'description' => 'Create person titles', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'person-title-edit', 'permission_category_id' => '9', 'description' => 'Edit person titles', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'person-title-detail', 'permission_category_id' => '9', 'description' => 'Get Details about person titles', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'person-title-delete', 'permission_category_id' => '9', 'description' => 'Delete person titles', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'person-title-status', 'permission_category_id' => '9', 'description' => 'Activate or Deactivate person titles', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'return-drugs-per-chart', 'permission_category_id' => '13', 'description' => 'Return drugs to pharmacy given through ward dispensing per chart', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'Return drugs to pharmacy given through ward dispensing per chart'), - array('name' => 'hide-performed-by-on-lab-results-print-out', 'permission_category_id' => '10', 'description' => 'Hide performed by on investigation results print out', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'Hide person on performed by on investigation results print out'), - array('name' => 'cancer-protocol-list', 'permission_category_id' => '9', 'description' => 'List cancer protocols', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'cancer-protocol-create', 'permission_category_id' => '9', 'description' => 'Create cancer protocols', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'cancer-protocol-edit', 'permission_category_id' => '9', 'description' => 'Edit cancer protocols', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'cancer-protocol-delete', 'permission_category_id' => '9', 'description' => 'Delete cancer protocols', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'drug-route-delete', 'permission_category_id' => '12', 'description' => 'Deactivate and reactivate drug routes', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'drug-route-edit', 'permission_category_id' => '12', 'description' => 'Edit drug route', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'drug-route-create', 'permission_category_id' => '12', 'description' => 'Create drug route', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'drug-route-list', 'permission_category_id' => '12', 'description' => 'View drug routes', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'add-vitals-on-inpatient-sheet', 'permission_category_id' => '4', 'description' => 'Add vitals on inpatient sheet', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'view-vitals-on-inpatient-sheet', 'permission_category_id' => '4', 'description' => 'View vitals on inpatient sheet', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'alter-cancer-protocol-chart-dispensing', 'permission_category_id' => '13', 'description' => 'Alter cancer protocol drugs before dispensing on the ward charts', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => ''), - array('name' => 'save-inpatient-bill', 'permission_category_id' => '4', 'description' => 'Save Inpatient Bills', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'Save Inpatient Bills For a Patient'), - array('name' => 'save-and-close-inpatient-bill', 'permission_category_id' => '4', 'description' => 'Save and Close Inpatient Bills', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'Save and Close Inpatient Bills For a Patient so that they cannot be edited'), - array('name' => 'open-inpatient-bill', 'permission_category_id' => '4', 'description' => 'Open an inpatient bill for editing', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'Open an inpatient bill for editing'), - array('name' => 'edit-name-of-lab-doctor', 'permission_category_id' => '10', 'description' => 'Allow editing the name of the doctor who performed a lab investigation', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => 'Allow editing the name of the doctor who performed a lab investigation'), - array('name' => 'view-expiring-sundries', 'permission_category_id' => '15', 'description' => 'View Expiring Sundries', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'average-monthly-consumption', 'permission_category_id' => '15', 'description' => 'View Average Monthly Consumption', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'drugs-issued-to-pharmacy-report', 'permission_category_id' => '15', 'description' => 'View Drugs Issued to pharmacy report', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'view-ward-consumption', 'permission_category_id' => '15', 'description' => 'View ward consumption report', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'view-general-items-stock-reconciliation-report', 'permission_category_id' => '15', 'description' => 'View General items stock reconciliation report', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'view-sundries-stock-reconciliation-report', 'permission_category_id' => '15', 'description' => 'View sundries stock reconciliation report', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'view-drugs-stock-reconciliation-report', 'permission_category_id' => '15', 'description' => 'View Drug stock reconciliation report', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'resume-drug-physical-stock-count', 'permission_category_id' => '15', 'description' => 'Resume drug stock reconciliation', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'resume-sundries-physical-stock-count', 'permission_category_id' => '15', 'description' => 'Resume sundries stock reconciliation', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'general-items-stock-reconciliation', 'permission_category_id' => '15', 'description' => 'General Items stock reconciliation', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'optical-stock-reconciliation', 'permission_category_id' => '15', 'description' => 'Optical Items stock reconciliation', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'sundries-stock-reconciliation', 'permission_category_id' => '15', 'description' => 'Sundries stock reconciliation', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'drugs-stock-reconciliation', 'permission_category_id' => '15', 'description' => 'Drugs stock reconciliation', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'view-package-units', 'permission_category_id' => '15', 'description' => 'Manage Package Units', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'view-eye-clinic-report', 'permission_category_id' => '5', 'description' => 'View eye clinic reports', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'add-batch-during-lab-stock-reconciliation', 'permission_category_id' => '15', 'description' => 'add item batch during lab stock reconciliation', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'radiologies-items-stock-reconciliation', 'permission_category_id' => '15', 'description' => 'Radiologies stock reconciliation', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'lab-items-stock-reconciliation', 'permission_category_id' => '15', 'description' => 'Labs stock reconciliation', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'view-labs-stock-reconciliation-report', 'permission_category_id' => '15', 'description' => 'View Labs stock reconciliation report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-radiologies-stock-reconciliation-report', 'permission_category_id' => '15', 'description' => 'View Radiologies stock reconciliation report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'edit-radiologies-stock-sheet', 'permission_category_id' => '10', 'description' => 'Edit Imaging stock sheet', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'edit-labs-stock-sheet', 'permission_category_id' => '10', 'description' => 'Edit Labs stock sheet', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'labs-create', 'permission_category_id' => '10', 'description' => 'Create Lab Items', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'labs-bulk-create', 'permission_category_id' => '10', 'description' => 'Create Multiple Lab Items', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'labs-bulk-edit', 'permission_category_id' => '10', 'description' => 'Edit Multiple Lab Items', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'labs-edit', 'permission_category_id' => '10', 'description' => 'Edit a Lab Item', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'labs-delete', 'permission_category_id' => '10', 'description' => 'Delete a Lab Item', 'guard_name' => 'web', 'crud' => 'list', 'long_description' => ''), - array('name' => 'labs-usage-listing', 'permission_category_id' => '10', 'description' => 'List all Labs that have been used', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'labs-report-usage', 'permission_category_id' => '10', 'description' => 'A report showing usage of Lab Items', 'guard_name' => 'web', 'crud' => 'list', 'long_description' => ''), - array('name' => 'requisition-for-labs', 'permission_category_id' => '10', 'description' => 'Make Requisitions for Lab Items', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'labs-stock-sheet', 'permission_category_id' => '10', 'description' => 'View and Edit Lab stock sheet', 'guard_name' => 'web', 'crud' => 'list', 'long_description' => ''), - array('name' => 'labs-bulk-delete', 'permission_category_id' => '10', 'description' => 'Delete Multiple Lab Items', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'print-patient-cards', 'permission_category_id' => '4', 'description' => 'Print Patient Cards', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'view-patient-cards', 'permission_category_id' => '4', 'description' => 'View Patient Cards', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'radiologies-create', 'permission_category_id' => '10', 'description' => 'Create Radiology Items', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'radiologies-edit', 'permission_category_id' => '10', 'description' => 'Edit a Radiology Item', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'radiologies-delete', 'permission_category_id' => '10', 'description' => 'Delete a Radiology Item', 'guard_name' => 'web', 'crud' => 'list', 'long_description' => ''), - array('name' => 'radiologies-usage-listing', 'permission_category_id' => '10', 'description' => 'List all Radiology that have been used', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'radiologies-report-usage', 'permission_category_id' => '10', 'description' => 'A report showing usage of Radiology Items', 'guard_name' => 'web', 'crud' => 'list', 'long_description' => ''), - array('name' => 'requisition-for-radiologies', 'permission_category_id' => '10', 'description' => 'Make Requisitions for Radiology Items', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'radiologies-stock-sheet', 'permission_category_id' => '10', 'description' => 'View Radiology stock sheet', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'requisition-for-radiology-sundries', 'permission_category_id' => '15', 'description' => 'Make Requisitions for Imaging Sundries', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'view-radiology-sundries-stock-sheet', 'permission_category_id' => '15', 'description' => 'View Imaging Sundries stock sheet', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => ''), - array('name' => 'edit-quantity-to-issue', 'permission_category_id' => '15', 'description' => 'Edit Quantity on Stores Issue Out ', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'add-new-batch-to-issue-out', 'permission_category_id' => '15', 'description' => 'Add Batch on Stores Issue Out ', 'guard_name' => 'web', 'crud' => 'add', 'long_description' => ''), - array('name' => 'view-electronic-stock-card', 'permission_category_id' => '15', 'description' => 'View Item Inventory Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View Item Inventory Report'), - array('name' => 'view-details-electronic-stock-card', 'permission_category_id' => '15', 'description' => 'View Details Item Inventory Report', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View Details Item Inventory Report'), - array('name' => 'view-details-received-drill-down', 'permission_category_id' => '15', 'description' => 'View Received Stock drill down details', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View Received Stock drill down details'), - array('name' => 'view-details-issued-drill-down', 'permission_category_id' => '15', 'description' => 'View Issued Stock drill down details', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View Issued Stock drill down details'), - array('name' => 'view-details-adjusted-stock', 'permission_category_id' => '15', 'description' => 'View Adjusted Stock drill down details', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'View Adjusted Stock drill down details'), - array('name' => 'sundry-form-create', 'permission_category_id' => '12', 'description' => 'Add Sundry Form ', 'guard_name' => 'web', 'crud' => 'add', 'long_description' => ''), - array('name' => 'sundry-form-list', 'permission_category_id' => '12', 'description' => 'View Sundry Forms ', 'guard_name' => 'web', 'crud' => 'read', 'long_description' => ''), - array('name' => 'sundry-form-delete', 'permission_category_id' => '12', 'description' => 'Deactivate and reactivate Sundry Form ', 'guard_name' => 'web', 'crud' => 'delete', 'long_description' => ''), - array('name' => 'sundry-form-edit', 'permission_category_id' => '12', 'description' => 'Edit Sundry Form ', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'edit-unit-cost-during-pharmacy-drugs-stock-reconciliation','permission_category_id' => '13', 'description' => 'Edit unit cost on pharmacy drugs reconciliation', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'Edit unit cost on pharmacy drugs reconciliation'), - array('name' => 'edit-unit-cost-during-pharmacy-sundries-stock-reconciliation','permission_category_id' => '13', 'description' => 'Edit unit cost on pharmacy sundries reconciliation', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'Edit unit cost on pharmacy sundries reconciliation'), - array('name' => 'edit-unit-cost-during-stores-drugs-stock-reconciliation','permission_category_id' => '15', 'description' => 'Edit unit cost on stores drugs reconciliation', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'Edit unit cost on stores drugs reconciliation'), - array('name' => 'edit-unit-cost-during-stores-sundries-stock-reconciliation','permission_category_id' => '15', 'description' => 'Edit unit cost on stores sundries reconciliation', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'Edit unit cost on stores sundries reconciliation'), - array('name' => 'edit-unit-cost-during-stores-labs-stock-reconciliation','permission_category_id' => '15', 'description' => 'Edit unit cost on stores labs reconciliation', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'Edit unit cost on stores labs reconciliation'), - array('name' => 'edit-unit-cost-during-stores-radiologies-stock-reconciliation','permission_category_id' => '15', 'description' => 'Edit unit cost on stores radiologies reconciliation', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'Edit unit cost on stores radiologies reconciliation'), - array('name' => 'edit-unit-cost-during-stores-general-stock-reconciliation','permission_category_id' => '15', 'description' => 'Edit unit cost on stores general items reconciliation', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'Edit unit cost on stores general items reconciliation'), - array('name' => 'cancel-ward-chart-dispensing', 'permission_category_id' => '13', 'description' => 'Cancel ward chart request', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'Cancel ward chart request'), - array('name' => 'renew-patient-dependants-subscription', 'permission_category_id' => '8', 'description' => 'Renew patient dependants subscription', 'guard_name' => 'web', 'crud' => 'view', 'long_description' => 'User to be able to activate renewal of subscriptions for patient dependants'), - array('name' => 'prescribe-cancer-protocol', 'permission_category_id' => '4', 'description' => 'Prescribe cancer protocols', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'Prescribe cancer protocols'), - array('name' => 'labour-ward-admission', 'permission_category_id' => '4', 'description' => 'Labour Ward Admission', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'safe-delivery', 'permission_category_id' => '4', 'description' => 'Safe Delivery', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'partogram', 'permission_category_id' => '4', 'description' => 'Partogram', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'labour-ward-overview', 'permission_category_id' => '4', 'description' => 'Labour Ward Overview', 'guard_name' => 'web', 'crud' => 'create', 'long_description' => ''), - array('name' => 'edit-consultation-note', 'permission_category_id' => '4', 'description' => 'Edit Consultation Note', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'delete-consultation-note', 'permission_category_id' => '4', 'description' => 'Delete Consultation Note', 'guard_name' => 'web', 'crud' => 'edit', 'long_description' => ''), - array('name' => 'pharmacy-optical-stock-sheet','permission_category_id' => '13', 'description' => 'View Pharmacy Opticals Stock Sheet', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'View Pharmacy Opticals Stock Sheet'), - array('name' => 'edit-unit-cost-during-pharmacy-opticals-stock-reconciliation','permission_category_id' => '13', 'description' => 'Edit unit cost on pharmacy opticals reconciliation', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'Edit unit cost on pharmacy opticals reconciliation'), - array('name' => 'edit-unit-cost-during-stores-opticals-stock-reconciliation','permission_category_id' => '15', 'description' => 'Edit unit cost on stores opticals reconciliation', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'Edit unit cost on stores opticals reconciliation'), - array('name' => 'edit-bill-per-package-unit','permission_category_id' => '15', 'description' => 'Edit Bill per package unit on receiving items', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'Edit Bill per package unit when receiving items'), - array('name' => 'edit-quatity-per-package-unit','permission_category_id' => '15', 'description' => 'Edit Quantity per package unit on receiving items', 'guard_name' => 'web', 'crud' => 'other', 'long_description' => 'Edit Quantity per package unit on receiving items'), - ); - - foreach ($permissions as $permission) { - $record = DB::table('permissions') - ->where('name', '=', $permission['name']) - ->first(); - - if (!$record) { - Permission::firstOrCreate([ - 'name' => $permission['name'], - 'description' => $permission['description'], - 'long_description' => ($permission['long_description'] == '') ? $permission['description'] : $permission['long_description'], - 'permission_category_id' => $permission['permission_category_id'], - 'guard_name' => $permission['guard_name'], - 'crud' => $permission['crud'] - ]); - } else { - if (str_contains($permission['name'], 'budget')) { - if ($record->permission_category_id != 24) { - Permission::where('name', $permission['name'])->delete(); - - Permission::firstOrCreate([ - 'name' => $permission['name'], - 'description' => $permission['description'], - 'long_description' => ($permission['long_description'] == '') ? $permission['description'] : $permission['long_description'], - 'permission_category_id' => $permission['permission_category_id'], - 'guard_name' => $permission['guard_name'], - 'crud' => $permission['crud'] - ]); - } - } - } - } - } -} diff --git a/docker/streamline-src/database/seeders/RolesTableSeeder.php b/docker/streamline-src/database/seeders/RolesTableSeeder.php deleted file mode 100755 index af8a6bda..00000000 --- a/docker/streamline-src/database/seeders/RolesTableSeeder.php +++ /dev/null @@ -1,117 +0,0 @@ - $role]); - } - - /* - * Assign ADMIN role all permissions - */ - - $adminRole = Role::firstOrCreate(['name' => 'Admin']); - $adminRole->givePermissionTo(Permission::all()); - - $superAdminRole = Role::firstOrCreate(['name' => 'Super Admin']); - $superAdminRole->givePermissionTo(Permission::all()); - - $dataEntrant = Role::firstOrCreate(['name' => 'Data Entrants']); - $dataEntrant->givePermissionTo(Permission::where(['permission_category_id' => 1])->where(['permission_category_id' => 4])->get()); - $dataEntrant->givePermissionTo(Permission::where(['permission_category_id' => 4])->get()); - - $doctors = Role::firstOrCreate(['name' => 'Doctors']); - $doctors->givePermissionTo(Permission::where(['permission_category_id' => 1])->get()); - $doctors->givePermissionTo(Permission::where(['permission_category_id' => 4])->get()); - $doctors->givePermissionTo(Permission::where(['permission_category_id' => 2])->get()); - - $insurance_manager = Role::firstOrCreate(['name' => 'Insurance Manager']); - $insurance_manager->givePermissionTo(Permission::where(['permission_category_id' => 1])->get()); - $insurance_manager->givePermissionTo(Permission::where(['permission_category_id' => 2])->get()); - $insurance_manager->givePermissionTo(Permission::where(['permission_category_id' => 3])->get()); - - $pharmacy_technicians_senior = Role::firstOrCreate(['name' => 'Pharmacy Technicians - Senior']); - $pharmacy_technicians_senior->givePermissionTo(Permission::where(['permission_category_id' => 1])->get()); - $pharmacy_technicians_senior->givePermissionTo(Permission::where(['permission_category_id' => 2])->get()); - $pharmacy_technicians_senior->givePermissionTo(Permission::where(['permission_category_id' => 3])->get()); - - $hospital_administrator = Role::firstOrCreate(['name' => 'Hospital Administrator']); - $hospital_administrator->givePermissionTo(Permission::where(['permission_category_id' => 1])->get()); - $hospital_administrator->givePermissionTo(Permission::where(['permission_category_id' => 2])->get()); - $hospital_administrator->givePermissionTo(Permission::where(['permission_category_id' => 3])->get()); - - $finance_manager = Role::firstOrCreate(['name' => 'Finance Manager']); - $finance_manager->givePermissionTo(Permission::where(['permission_category_id' => 2])->get()); - $finance_manager->givePermissionTo(Permission::where(['permission_category_id' => 3])->get()); - $finance_manager->givePermissionTo(Permission::where(['permission_category_id' => 7])->get()); - $finance_manager->givePermissionTo(Permission::where(['permission_category_id' => 8])->get()); - - $human_resource_manager = Role::firstOrCreate(['name' => 'Human Resource Manager']); - $human_resource_manager->givePermissionTo(Permission::where(['permission_category_id' => 1])->get()); - $human_resource_manager->givePermissionTo(Permission::where(['permission_category_id' => 9])->get()); - - $triage_nurses = Role::firstOrCreate(['name' => 'Triage Nurses']); - $triage_nurses->givePermissionTo(Permission::where(['permission_category_id' => 1])->get()); - $triage_nurses->givePermissionTo(Permission::where(['permission_category_id' => 4])->get()); - - $specialist_nurses = Role::firstOrCreate(['name' => 'Specialist Nurses']); - $specialist_nurses->givePermissionTo(Permission::where(['permission_category_id' => 1])->get()); - $specialist_nurses->givePermissionTo(Permission::where(['permission_category_id' => 4])->get()); - - $IT_cordinator = Role::firstOrCreate(['name' => 'IT Coordinator']); - $IT_cordinator->givePermissionTo(Permission::where(['permission_category_id' => 1])->get()); - $IT_cordinator->givePermissionTo(Permission::where(['permission_category_id' => 11])->get()); - $IT_cordinator->givePermissionTo(Permission::where(['permission_category_id' => 9])->get()); - $IT_cordinator->givePermissionTo(Permission::where(['permission_category_id' => 5])->get()); - - $nursing = Role::firstOrCreate(['name' => 'Nursing']); - $nursing->givePermissionTo(Permission::where(['permission_category_id' => 1])->get()); - $nursing->givePermissionTo(Permission::where(['permission_category_id' => 2])->get()); - $nursing->givePermissionTo(Permission::where(['permission_category_id' => 4])->get()); - - $reception_clerks = Role::firstOrCreate(['name' => 'Patient Receiption Clerks']); - $reception_clerks->givePermissionTo(Permission::where(['permission_category_id' => 1])->get()); - $reception_clerks->givePermissionTo(Permission::where(['permission_category_id' => 2])->get()); - $reception_clerks->givePermissionTo(Permission::where(['permission_category_id' => 4])->get()); - - $lab_technicians = Role::firstOrCreate(['name' => 'Lab Technician']); - $lab_technicians->givePermissionTo(Permission::where(['permission_category_id' => 1])->get()); - $lab_technicians->givePermissionTo(Permission::where(['permission_category_id' => 4])->get()); - $lab_technicians->givePermissionTo(Permission::where(['permission_category_id' => 10])->get()); - - $lab_assistants = Role::firstOrCreate(['name' => 'Lab Assistant']); - $lab_assistants->givePermissionTo(Permission::where(['permission_category_id' => 1])->get()); - $lab_assistants->givePermissionTo(Permission::where(['permission_category_id' => 4])->get()); - $lab_assistants->givePermissionTo(Permission::where(['permission_category_id' => 10])->get()); - - $lab_clerk = Role::firstOrCreate(['name' => 'Lab Clerk']); - $lab_clerk->givePermissionTo(Permission::where(['permission_category_id' => 1])->get()); - $lab_clerk->givePermissionTo(Permission::where(['permission_category_id' => 4])->get()); - $lab_clerk->givePermissionTo(Permission::where(['permission_category_id' => 10])->get()); - - $lab_clerk = Role::firstOrCreate(['name' => 'Midwives']); - $lab_clerk->givePermissionTo(Permission::where(['permission_category_id' => 4])->get()); - $lab_clerk->givePermissionTo(Permission::where(['permission_category_id' => 10])->get()); - } - -} diff --git a/docker/streamline-src/database/seeders/UsersTableSeeder.php b/docker/streamline-src/database/seeders/UsersTableSeeder.php deleted file mode 100755 index 2b19f486..00000000 --- a/docker/streamline-src/database/seeders/UsersTableSeeder.php +++ /dev/null @@ -1,39 +0,0 @@ - 'Demo', - 'last_name' => 'User Admin', - 'username' => 'sysadmin', - 'phone' => '0788989898', - 'email' => 'admin@streamline.com', - 'position_id' => 1, - 'blood_group_id' => 1, - 'photo' => 'placeholder.png', - 'pin' => '12345', - 'password' => Hash::make('sys@dm1n6789'), - ]); - - /* - * Assigning this user the admin role - */ - $user->assignRole('Admin'); - $user->assignRole('Super Admin'); - } -} diff --git a/docker/streamline-src/modules_statuses.json b/docker/streamline-src/modules_statuses.json deleted file mode 100644 index 9b768298..00000000 --- a/docker/streamline-src/modules_statuses.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "Reports": true, - "WardManagement": true, - "PatientDiscounts": true, - "Banking": true, - "Payroll": true, - "PatientFinance": true, - "Investigations": true, - "Expenses": true, - "Invoices": true, - "Journals": true, - "Budgets": true, - "Antenatal": true, - "Insurance": true, - "Maternity": true, - "Hiv": true, - "Diabetes": true, - "Theatre": true, - "EyeClinic": true, - "ClinicalData": true, - "Patients": true, - "Stores": true, - "Pharmacy": true, - "Finance": true, - "FinanceReports": true, - "Cancer": true -} \ No newline at end of file diff --git a/docker/streamline-src/public/css/streamline-custom.css b/docker/streamline-src/public/css/streamline-custom.css deleted file mode 100755 index 59138da7..00000000 --- a/docker/streamline-src/public/css/streamline-custom.css +++ /dev/null @@ -1,315 +0,0 @@ -/* - Created on : Aug 24, 2017, 4:14:20 PM - Author : Davis -*/ -select.compulsory, -input.compulsory, -textarea.compulsory { - border-left: 3px solid #F08080; - /*border-right:3px solid #F08080;*/ -} - -/* trying to make original grey background of old streamline */ -body>.container_fluid { - background: #708090 !important; -} - -/*.btn{ - margin-bottom: 0; - font-size: 14px; - line-height: 20px; - vertical-align: middle; - cursor: pointer; - border-radius: 4px; - font-weight: 600; - border-radius: 4px; -}*/ - -/*.btn:hover{ - text-decoration: none; - transition: background-position 0.1s linear; -} - -.btn-success{ - background-color: #9dce6e; - background-image: linear-gradient(to bottom, #79ae69, #609450); - background-repeat: repeat-x; - border: 1px solid #609450; - -webkit-box-shadow: 0 1px 0 0 rgba(255, 255, 255, 0.3) inset, 0 0 0 1px #74af3b; - color: #fff; - text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5); -}*/ - -/*.btn-success:hover { - color: #fff; - background-color: #609450; - border-color: #4b733e; -} - -.btn-success.disabled { - background: #8ec657; - border: 1px solid #8ec657; -} - -.btn-success.disabled:hover { - background: #8ec657; - border: 1px solid #8ec657; -} - -.btn-info{ - background: #93B9D8; - border: 1px solid #93B9D8; - color: #fff; - text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5); -} - -.btn-info:hover{ - background: #93B9D8; -}*/ - -/*.color-bordered-table.success-bordered-table thead th { - background-color: #8ec657; - reduce table header height - height: 15px; - line-height: 15px; -} - -.color-bordered-table.success-bordered-table { - border: 2px solid #8ec657; -} - -.color-table.success-table thead th { - border-color: #8ec657; - background-color: #8ec657; - color: #fff; - font-size: 14px; - reduce table header height - height: 8px; - line-height: 8px; -}*/ - -/*.alert { - border-radius: 4px; -}*/ - -/*.alert-warning { - border-color: #ab7a4b; - background: #ab7a4b; -}*/ - -.position-relative { - position: relative !important; -} - -.position-absolute { - position: absolute; -} - -.right-0 { - right: 0 !important; -} - -.top-0 { - top: 0 !important; -} - -.left-0 { - left: 0 !important; -} - -.label { - border-radius: 3px; - padding: 4px 5px; -} - -.label-info { - background-color: #2d6987; -} - -.alert.alert-info { - background: #dff3f8; - color: #7399b9; - border-color: #93b9d8; -} - -.alert-danger, -.alert-error { - background-color: #f2dede; - border-color: #eed3d7; - color: #b94a48; - font-size: 13px; -} - - -.android-input { - border-top: none; - border-left: none; - border-right: none; - border-bottom: 2px solid #dddddd; - - box-sizing: border-box; - outline: none; - - font-size: 1em; - padding: 0.2em 0.2em; - width: 100%; -} - -.android-input { - position: relative; -} - -.android-input:before, -.android-input:after { - content: ''; - display: block; - - position: absolute; - bottom: 2px; - - height: 6px; - border-left: 2px solid #0099CC; -} - -.android-input:before { - left: 0; -} - -.android-input:after { - right: 0; -} - -.android-input-select { - border-top: none; - border-left: none; - border-right: none; - border-bottom: 2px solid #dddddd; - - box-sizing: border-box; - outline: none; - - font-size: 1em; - color: #7c7c7c; - padding: 0em 0em; - width: 100%; -} - -.android-input-select { - position: relative; -} - -.android-input-select:before, -.android-input:after { - content: ''; - display: block; - - position: absolute; - bottom: 2px; - - height: 6px; - border-left: 2px solid #0099CC; -} - -.android-input-select:before { - left: 0; -} - -.android-input-select:after { - right: 0; -} - -.total { - background-color: #34394D !important; - color: #fff !important; -} - -/* CUSTOM STYLES */ -div.consultation-pat { - border-radius: 5px; -} - -.consultation-pat-table { - display: flex; - align-items: stretch; - margin: 0; - border-radius: 5px; -} - -.consultation-pat-table .card { - border-radius: 0; -} - -.consultation-pat-table .col:first-child .card { - border-radius: 5px 0 0 5px; -} - -.consultation-pat-table .col:last-child .card { - border-radius: 0 5px 5px 0; -} - -.consultation-pat-table .card-header { - min-height: 50%; - display: flex; - align-items: end; - font-weight: bold; - font-size: initial; -} - -.consultation-pat-table .card-body { - border-radius: 0; - padding: 1rem; -} - -.br-5 { - border-radius: 5px; -} - -.tt-none { - text-transform: none; -} - -.clinic-buttons a.btn { - white-space: normal; - border-radius: 5px; - display: flex; - align-items: center; - justify-content: center; - font-size: larger !important; - box-shadow: 0px 5px 10px 13px rgba(229, 229, 229, 0.68); - -webkit-box-shadow: 0px 5px 10px 13px rgba(229, 229, 229, 0.68); - -moz-box-shadow: 0px 5px 10px 13px rgba(229, 229, 229, 0.68); -} - - -/* -.consultation-pat-table tr th, -.consultation-pat-table tr td { - min-width: 125px; - white-space: normal; -} */ - -@media screen and (min-width: 991px) { - .img-pat-profile { - background-position: left !important; - } -} - -@media screen and (max-width: 990px) { - .consultation-pat-row { - margin: 0; - padding: 0; - } - - .consultation-pat-table .card-header { - padding: .5rem; - font-size: 12px; - } - - .consultation-pat-table .card-body { - padding: .5rem; - } - - .img-pat-profile { - min-height: 200px !important; - } -} \ No newline at end of file diff --git a/docker/streamline-src/public/elite/css/style.css b/docker/streamline-src/public/elite/css/style.css deleted file mode 100755 index 796835e0..00000000 --- a/docker/streamline-src/public/elite/css/style.css +++ /dev/null @@ -1,20268 +0,0 @@ -@charset "UTF-8"; -@import "poppins_font.css"; -/*@import url(https://fonts.googleapis.com/css?family=Poppins:400,500,300,600,700);*/ -@import "spinners.css"; - -.preloader { - width: 100%; - height: 100%; - top: 0; - position: fixed; - z-index: 99999; - background: #fff -} - -.preloader .cssload-speeding-wheel { - position: absolute; - top: calc(50% - 3.5px); - left: calc(50% - 3.5px); -} - -@font-face { - font-family: Poppins; - font-style: normal; - font-weight: 400; - /*src:url(https://fonts.gstatic.com/s/poppins/v1/2fCJtbhSlhNNa6S2xlh9GyEAvth_LlrfE80CYdSH47w.woff2) format('woff2');*/ - unicode-range: U+02BC, U+0900097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200B-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB -} - -@font-face { - font-family: Poppins; - font-style: normal; - font-weight: 400; - /*src:url(https://fonts.gstatic.com/s/poppins/v1/UGh2YG8gx86rRGiAZYIbVyEAvth_LlrfE80CYdSH47w.woff2) format('woff2');*/ - unicode-range: U+0100024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF -} - -@font-face { - font-family: Poppins; - font-style: normal; - font-weight: 400; - /*src:url(https://fonts.gstatic.com/s/poppins/v1/yQWaOD4iNU5NTY0apN-qj_k_vArhqVIZ0nv9q090hN8.woff2) format('woff2');*/ - unicode-range: U+000000FF, U+0131, U+01520153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000; -} - -********** { - outline: 0 !important; -} - -body { - background: #4f5467; - /*font-family:Poppins,sans-serif; Davis*/ - font-family: Verdana, sans-serif; - margin: 0; - overflow-x: hidden; - /*color:#686868; Davis*/ - color: #383737; - font-weight: 300; -} - -html { - position: relative; - min-height: 100%; - background: #fff -} - -h1, -h2, -h3, -h4, -h5, -h6 { - color: #2b2b2b; - /*font-family:Poppins,sans-serif; Davis*/ - font-family: Verdana, sans-serif; - margin: 10px 0; - font-weight: 300; -} - -h1 { - line-height: 48px; - font-size: 36px; -} - -h2 { - line-height: 36px; - font-size: 24px; -} - -h3 { - line-height: 30px; - font-size: 21px; -} - -h4 { - line-height: 22px; - font-size: 18px; -} - -h5 { - font-size: 16px; - font-size: 14px; -} - -.dn { - display: none; -} - -.db { - display: block -} - -.light_op_text { - color: rgba(255, 255, 255, .5); -} -.blink { - animation: blinker 4s linear infinite !important; - } - - @keyframes blinker { - 50% { - opacity: 0; - } - } -blockquote { - border-left: 5px solid #ff6849 !important; - border: 1px solid rgba(120, 130, 140, .13); -} - -p { - line-height: 1.6 -} - -b { - font-weight: 600; -} - -a:active, -a:focus, -a:hover { - outline: 0; - text-decoration: none; -} - -.clear { - clear: both -} - -.font-12 { - font-size: 12px; -} - -hr { - border-color: rgba(120, 130, 140, .13); -} - -.b-t { - border-top: 1px solid rgba(120, 130, 140, .13); -} - -.b-b { - border-bottom: 1px solid rgba(120, 130, 140, .13); -} - -.b-l { - border-left: 1px solid rgba(120, 130, 140, .13); -} - -.b-r { - border-right: 1px solid rgba(120, 130, 140, .13); -} - -.b-all { - border: 1px solid rgba(120, 130, 140, .13); -} - -.b-none { - border: 0 !important; -} - -.max-height { - height: 310px; - overflow: auto -} - -.t-a-c { - text-align: center !important; -} - -.p-0 { - padding: 0 !important; -} - -.p-10 { - padding: 10px !important; -} - -.p-20 { - padding: 20px !important; -} - -.p-30 { - padding: 30px !important; -} - -.p-l-0 { - padding-left: 0 !important; -} - -.p-l-10 { - padding-left: 10px !important; -} - -.p-l-20 { - padding-left: 20px !important; -} - -.p-r-0 { - padding-right: 0 !important; -} - -.p-r-10 { - padding-right: 10px !important; -} - -.p-r-20 { - padding-right: 20px !important; -} - -.p-r-30 { - padding-right: 30px !important; -} - -.p-r-40 { - padding-right: 40px !important; -} - -.p-t-0 { - padding-top: 0 !important; -} - -.p-t-10 { - padding-top: 10px !important; -} - -.p-t-20 { - padding-top: 20px !important; -} - -.p-t-30 { - padding-top: 30px !important; -} - -.p-b-0 { - padding-bottom: 0 !important; -} - -.p-b-5 { - padding-bottom: 5px !important; -} - -.p-b-10 { - padding-bottom: 10px !important; -} - -.p-b-20 { - padding-bottom: 20px !important; -} - -.p-b-30 { - padding-bottom: 30px !important; -} - -.p-b-40 { - padding-bottom: 40px !important; -} - -.m-0 { - margin: 0 !important; -} - -.m-l-5 { - margin-left: 5px !important; -} - -.m-l-10 { - margin-left: 10px !important; -} - -.m-l-15 { - margin-left: 15px !important; -} - -.m-l-20 { - margin-left: 20px !important; -} - -.m-l-30 { - margin-left: 30px !important; -} - -.m-l-40 { - margin-left: 40px !important; -} - -.m-r-5 { - margin-right: 5px !important; -} - -.m-r-10 { - margin-right: 10px !important; -} - -.m-r-15 { - margin-right: 15px !important; -} - -.m-r-20 { - margin-right: 20px !important; -} - -.m-r-30 { - margin-right: 30px !important; -} - -.m-r-40 { - margin-right: 40px !important; -} - -.m-t-5 { - margin-top: 5px !important; -} - -.m-t-0 { - margin-top: 0 !important; -} - -.m-t-10 { - margin-top: 10px !important; -} - -.m-t-15 { - margin-top: 15px !important; -} - -.m-t-20 { - margin-top: 20px !important; -} - -.m-t-30 { - margin-top: 30px !important; -} - -.m-t-40 { - margin-top: 40px !important; -} - -.m-b-0 { - margin-bottom: 0 !important; -} - -.m-b-5 { - margin-bottom: 5px !important; -} - -.m-b-10 { - margin-bottom: 10px !important; -} - -.m-b-15 { - margin-bottom: 15px !important; -} - -.m-b-20 { - margin-bottom: 20px !important; -} - -.m-b-30 { - margin-bottom: 30px !important; -} - -.m-b-40 { - margin-bottom: 40px !important; -} - -.vt { - vertical-align: top -} - -.vb { - vertical-align: bottom -} - -.font-bold { - font-weight: 700; -} - -.font-normal { - font-weight: 400; -} - -.font-light { - font-weight: 300; -} - -.pull-in { - margin-left: -15px; - margin-right: -15px; -} - -.b-0 { - border: none !important; -} - -.vertical-middle { - vertical-align: middle; -} - -.bx-shadow { - -moz-box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .1); - -webkit-box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .1); - box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .1); -} - -.mx-box { - max-height: 380px; - min-height: 380px; -} - -.thumb-sm { - height: 32px; - width: 32px; -} - -.thumb-md { - height: 48px; - width: 48px; -} - -.thumb-lg { - height: 88px; - width: 88px; -} - -.txt-oflo { - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap -} - -.get-code { - color: #2b2b2b; - cursor: pointer; - border-radius: 100%; - background: #fff; - padding: 4px 5px; - font-size: 10px; - margin: 0 5px; - vertical-align: middle; -} - -.badge { - text-transform: uppercase; - font-weight: 600; - padding: 4px 5px 2px; - font-size: 12px; - margin-top: 1px; - background-color: #fec107 -} - -.badge-xs { - font-size: 9px; -} - -.badge-sm, -.badge-xs { - -webkit-transform: translate(0, -2px); - -ms-transform: translate(0, -2px); - -o-transform: translate(0, -2px); - transform: translate(0, -2px); -} - -.badge-success { - background-color: #00c292; -} - -.badge-info { - background-color: #03a9f3; -} - -.badge-warning { - background-color: #fec107 -} - -.badge-danger { - background-color: #fb9678; -} - -.badge-purple { - background-color: #9675ce; -} - -.badge-red { - background-color: #fb3a3a -} - -.badge-inverse { - background-color: #4c5667 -} - -.notify { - position: relative; - margin-top: -30px; -} - -.notify .heartbit { - position: absolute; - top: -20px; - right: -16px; - height: 25px; - width: 25px; - z-index: 10; - border: 5px solid #fb9678; - border-radius: 70px; - -moz-animation: heartbit 1s ease-out; - -moz-animation-iteration-count: infinite; - -o-animation: heartbit 1s ease-out; - -o-animation-iteration-count: infinite; - -webkit-animation: heartbit 1s ease-out; - -webkit-animation-iteration-count: infinite; - animation-iteration-count: infinite; -} - -.notify .point { - width: 6px; - height: 6px; - -webkit-border-radius: 30px; - -moz-border-radius: 30px; - border-radius: 30px; - background-color: #fb9678; - position: absolute; - right: -6px; - top: -10px; -} - -@-moz-keyframes heartbit { - 0% { - -moz-transform: scale(0); - opacity: 0 - } - - 25% { - -moz-transform: scale(.1); - opacity: .1 - } - - 50% { - -moz-transform: scale(.5); - opacity: .3 - } - - 75% { - -moz-transform: scale(.8); - opacity: .5 - } - - 100% { - -moz-transform: scale(1); - opacity: 0 - } -} - -@-webkit-keyframes heartbit { - 0% { - -webkit-transform: scale(0); - opacity: 0 - } - - 25% { - -webkit-transform: scale(.1); - opacity: .1 - } - - 50% { - -webkit-transform: scale(.5); - opacity: .3 - } - - 75% { - -webkit-transform: scale(.8); - opacity: .5 - } - - 100% { - -webkit-transform: scale(1); - opacity: 0 - } -} - -.text-white { - color: #fff !important; -} - -.text-danger { - color: #fb9678 !important; -} - -.text-muted { - color: #8d9ea7 !important; -} - -.text-warning { - color: #fec107 !important; -} - -.text-success { - color: #00c292 !important; -} - -.text-info { - color: #03a9f3 !important; -} - -.text-inverse { - color: #4c5667 !important; -} - -.text-blue { - color: #02bec9 !important; -} - -.text-purple { - color: #9675ce !important; -} - -.text-primary { - color: #ab8ce4 !important; -} - -.text-megna { - color: #01c0c8 !important; -} - -.text-dark { - color: #686868 !important; -} - -.bg-primary { - background-color: #ab8ce4 !important; -} - -.bg-success { - background-color: #00c292 !important; -} - -.bg-info { - background-color: #03a9f3 !important; -} - -.bg-warning { - background-color: #fec107 !important; -} - -.bg-danger { - background-color: #fb9678 !important; -} - -.bg-theme { - background-color: #ff6849 !important; -} - -.bg-theme-dark { - background-color: #4f5467 !important; -} - -.bg-inverse { - background-color: #4c5667 !important; -} - -.bg-purple { - background-color: #9675ce !important; -} - -.bg-white { - background-color: #fff !important; -} - -.label { - letter-spacing: .05em; - border-radius: 60px; - padding: 4px 16px 3px; - font-weight: 500; -} - -.label-rouded, -.label-rounded { - border-radius: 60px; - padding: 4px 16px 3px; - font-weight: 500; -} - -.label-custom { - background-color: #01c0c8; -} - -.label-success { - background-color: #00c292; -} - -.label-info { - background-color: #03a9f3; -} - -.label-warning { - background-color: #fec107 -} - -.label-danger { - background-color: #fb9678; -} - -.label-megna { - background-color: #01c0c8; -} - -.label-primary { - background-color: #ab8ce4 -} - -.label-purple { - background-color: #9675ce; -} - -.label-red { - background-color: #fb3a3a -} - -.label-inverse { - background-color: #4c5667 -} - -.label-default { - background-color: #e4e7ea -} - -.label-white { - background-color: #fff -} - -.dropdown-menu { - border: 1px solid rgba(120, 130, 140, .13); - border-radius: 0; - box-shadow: 0 3px 12px rgba(0, 0, 0, .05) !important; - -webkit-box-shadow: 0 !important; - -moz-box-shadow: 0 !important; - padding-bottom: 8px; - margin-top: 0; -} - -.dropdown-menu>li>a { - padding: 9px 20px; -} - -.dropdown-menu>li>a:focus, -.dropdown-menu>li>a:hover { - background: #f7fafc -} - -.navbar-top-links .progress { - margin-bottom: 6px; -} - -label { - font-weight: 500; -} - -.btn { - border-radius: 0; -} - -.form-control { - background-color: #fff; - border: 1px solid #e4e7ea; - border-radius: 0; - box-shadow: none; - color: #565656; - height: 38px; - max-width: 100%; - padding: 7px 12px; - transition: all 300ms linear 0s -} - -.form-control:focus { - box-shadow: none; - border-color: #2b2b2b -} - -.input-sm { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5 -} - -.input-lg { - height: 44px; - padding: 5px 10px; - font-size: 18px; -} - -.bootstrap-tagsinput { - border: 1px solid #e4e7ea; - border-radius: 0; - box-shadow: none; - display: block; - padding: 7px 12px; -} - -.bootstrap-touchspin .input-group-btn-vertical>.btn { - padding: 9px 10px; -} - -.bootstrap-touchspin .input-group-btn-vertical .bootstrap-touchspin-down, -.bootstrap-touchspin .input-group-btn-vertical .bootstrap-touchspin-up { - border-radius: 0; -} - -.input-group-btn .btn { - padding: 8px 12px; -} - -.form-horizontal .form-group { - margin-left: -7.5px; - margin-right: -7.5px; - margin-bottom: 25px; -} - -.form-group { - margin-bottom: 25px; -} - -.list-group-item, -.list-group-item:first-child, -.list-group-item:last-child { - border-radius: 0; - border-color: rgba(120, 130, 140, .13); -} - -.list-group-item.active, -.list-group-item.active:focus, -.list-group-item.active:hover { - background: #03a9f3; - border-color: #03a9f3; -} - -.list-task .list-group-item, -.list-task .list-group-item:first-child { - border-radius: 0; - border: 0; -} - -.list-task .list-group-item:last-child { - border-radius: 0; - border: 0; -} - -.media { - border: 1px solid rgba(120, 130, 140, .13); - margin-bottom: 10px; - padding: 15px; -} - -.media .media-heading { - font-weight: 500; -} - -.well, -pre { - background: #fff; - border-radius: 0; -} - -.nav-tabs>li>a { - border-radius: 0; - color: #2b2b2b -} - -.nav-tabs>li>a:focus, -.nav-tabs>li>a:hover { - background: #fff -} - -.modal-content { - border-radius: 0; - box-shadow: 0 5px 15px rgba(0, 0, 0, .1); -} - -.alert { - border-radius: 0; -} - -.carousel-control { - width: 8%; -} - -.carousel-control span { - position: absolute; - top: 50%; - z-index: 5; - display: inline-block; - font-size: 30px; -} - -.popover { - border-radius: 0; -} - -.popover-title { - padding: 5px 14px; -} - -.container-fluid { - padding-left: 25px; - padding-right: 25px; - padding-bottom: 15px; -} - -.col-lg-1, -.col-lg-10, -.col-lg-11, -.col-lg-12, -.col-lg-2, -.col-lg-3, -.col-lg-4, -.col-lg-5, -.col-lg-6, -.col-lg-7, -.col-lg-8, -.col-lg-9, -.col-md-1, -.col-md-10, -.col-md-11, -.col-md-12, -.col-md-2, -.col-md-3, -.col-md-4, -.col-md-5, -.col-md-6, -.col-md-7, -.col-md-8, -.col-md-9, -.col-sm-1, -.col-sm-10, -.col-sm-11, -.col-sm-12, -.col-sm-2, -.col-sm-3, -.col-sm-4, -.col-sm-5, -.col-sm-6, -.col-sm-7, -.col-sm-8, -.col-sm-9, -.col-xs-1, -.col-xs-10, -.col-xs-11, -.col-xs-12, -.col-xs-2, -.col-xs-3, -.col-xs-4, -.col-xs-5, -.col-xs-6, -.col-xs-7, -.col-xs-8, -.col-xs-9 { - padding-left: 7.5px; - padding-right: 7.5px; -} - -.row { - margin-right: -7.5px; - margin-left: -7.5px; -} - -.btn-group-vertical>.btn:first-child:not(:last-child), -.btn-group-vertical>.btn:last-child:not(:first-child) { - border-radius: 0; -} - -.table-responsive { - overflow-y: hidden -} - -.pagination>li:first-child>a, -.pagination>li:first-child>span { - border-bottom-left-radius: 0; - border-top-left-radius: 0; -} - -.pagination>li:last-child>a, -.pagination>li:last-child>span { - border-bottom-right-radius: 0; - border-top-right-radius: 0; -} - -.pagination>li>a, -.pagination>li>span { - color: #2b2b2b -} - -.pagination>li>a:focus, -.pagination>li>a:hover, -.pagination>li>span:focus, -.pagination>li>span:hover { - background-color: #e4e7ea -} - -.pagination-split li { - margin-left: 5px; - display: inline-block; - float: left; -} - -.pagination-split li:first-child { - margin-left: 0; -} - -.pagination-split li a { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} - -.pagination>.active>a, -.pagination>.active>a:focus, -.pagination>.active>a:hover, -.pagination>.active>span, -.pagination>.active>span:focus, -.pagination>.active>span:hover { - background-color: #ff6849; - border-color: #ff6849; -} - -.pager li>a, -.pager li>span { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - color: #2b2b2b -} - -.table-box { - display: table; - width: 100%; -} - -.cell { - display: table-cell; - vertical-align: middle; -} - -.jqstooltip { - width: auto !important; - height: auto !important; -} - -#wrapper { - width: 100%; -} - -#page-wrapper { - padding: 0 0 60px; - min-height: 568px; - background: #edf1f5 -} - -.footer { - bottom: 0; - color: #58666e; - left: 0; - padding: 20px 30px; - position: absolute; - right: 0; - background: #fff -} - -.bg-title { - background: #fff; - overflow: hidden; - padding: 15px 15px 10px; - margin-bottom: 25px; - margin-left: -25.5px; - margin-right: -25.5px; -} - -.bg-title h4 { - color: rgba(0, 0, 0, .5); - font-weight: 600; - margin-top: 6px; -} - -.bg-title .breadcrumb { - background: 0 0; - margin-bottom: 0; - float: right; - padding: 0; - margin-top: 8px; -} - -.bg-title .breadcrumb a { - color: rgba(0, 0, 0, .5); -} - -.bg-title .breadcrumb a:hover { - color: #000; -} - -.bg-title .breadcrumb .active { - color: #ff6849; -} - -.logo b { - height: 60px; - display: inline-block; - width: 60px; - line-height: 60px; - text-align: center -} - -.logo i { - color: #fff -} - -.top-left-part { - width: 220px; - float: left; -} - -.top-left-part a { - color: #fff; - font-size: 18px; - padding-left: 0; -} - -.navbar-header { - width: 100%; - background: #3c4451; - border: 0; -} - -.navbar-default { - border: 0; -} - -.navbar-top-links { - margin-right: 0; -} - -.navbar-top-links .badge { - position: absolute; - right: 6px; - top: 15px; -} - -.navbar-top-links>li { - float: left; -} - -.navbar-top-links>li>a { - color: #fff; - padding: 0 12px; - line-height: 60px; - min-height: 60px; -} - -.navbar-top-links>li>a:hover { - background: rgba(0, 0, 0, .1); -} - -.navbar-top-links>li>a:focus { - background: rgba(0, 0, 0, 0); -} - -.nav .open>a, -.nav .open>a:focus, -.nav .open>a:hover { - background: rgba(255, 255, 255, .2); -} - -.navbar-top-links .dropdown-menu li { - display: block -} - -.navbar-top-links .dropdown-menu li:last-child { - margin-right: 0; -} - -.navbar-top-links .dropdown-menu li a div { - white-space: normal -} - -.navbar-top-links .dropdown-alerts, -.navbar-top-links .dropdown-messages, -.navbar-top-links .dropdown-tasks { - width: 310px; - min-width: 0; -} - -.navbar-top-links .dropdown-messages { - margin-left: 5px; -} - -.navbar-top-links .dropdown-tasks { - margin-left: -59px; -} - -.navbar-top-links .dropdown-alerts { - margin-left: -123px; -} - -.navbar-top-links .dropdown-user { - right: 0; - left: auto -} - -.navbar-header .navbar-toggle { - float: none; - padding: 0 15px; - line-height: 60px; - border: 0; - color: rgba(255, 255, 255, .5); - margin: 0; - display: inline-block; - border-radius: 0; -} - -.navbar-header .navbar-toggle:focus, -.navbar-header .navbar-toggle:hover { - background: rgba(0, 0, 0, .3); - color: #fff -} - -.app-search { - position: relative; - margin: 0; -} - -.app-search a { - position: absolute; - top: 20px; - right: 10px; - color: #4c5667 -} - -.app-search .form-control, -.app-search .form-control:focus { - border: none; - font-size: 13px; - color: #4c5667; - padding-left: 20px; - padding-right: 40px; - background: rgba(255, 255, 255, .9); - box-shadow: none; - height: 30px; - font-weight: 600; - width: 180px; - display: inline-block; - line-height: 30px; - margin-top: 15px; - border-radius: 40px; - transition: .5s ease-out; -} - -.app-search .form-control::-moz-placeholder { - color: #4c5667; - opacity: .5 -} - -.app-search .form-control::-webkit-input-placeholder { - color: #4c5667; - opacity: .5 -} - -.app-search .form-control::-ms-placeholder { - color: #4c5667; - opacity: .5 -} - -.nav-small-cap { - color: #a6afbb; - cursor: default; - font-weight: 500; - text-transform: uppercase; - font-size: 13px; - letter-spacing: .035em; - padding: 12px 15px !important; - pointer-events: none; - margin: 20px 0 0 -15px; -} - -.profile-pic { - padding: 0 20px; - line-height: 50px; -} - -.profile-pic img { - margin-right: 10px; -} - -.drop-title { - border-bottom: 1px solid rgba(0, 0, 0, .1); - color: #2b2b2b; - font-size: 15px; - font-weight: 600; - padding: 11px 20px 15px; -} - -.btn-outline { - color: inherit; - background-color: transparent; - transition: all .5s -} - -.btn-rounded { - border-radius: 60px; -} - -.btn-custom, -.btn-custom.disabled { - background: #ff6849; - border: 1px solid #ff6849; - color: #fff -} - -.btn-custom.disabled.focus, -.btn-custom.disabled:focus, -.btn-custom.disabled:hover, -.btn-custom.focus, -.btn-custom:focus, -.btn-custom:hover { - background: #ff6849; - opacity: .8; - color: #fff; - border: 1px solid #ff6849; -} - -.btn-primary, -.btn-primary.disabled { - /*background:#ab8ce4; Davis*/ - background: #7d47e0; - border: 1px solid #7d47e0; -} - -.btn-primary.disabled.focus, -.btn-primary.disabled:focus, -.btn-primary.disabled:hover, -.btn-primary.focus, -.btn-primary:focus, -.btn-primary:hover { - background: #ab8ce4; - opacity: .8; - border: 1px solid #ab8ce4 -} - -.btn-success, -.btn-success.disabled { - /*background:#00c292; Davis*/ - background: #059672; - border: 1px solid #059672; -} - -.btn-success.disabled.focus, -.btn-success.disabled:focus, -.btn-success.disabled:hover, -.btn-success.focus, -.btn-success:focus, -.btn-success:hover { - background: #00c292; - opacity: .8; - border: 1px solid #00c292; -} - -.btn-info, -.btn-info.disabled { - background: #03a9f3; - border: 1px solid #03a9f3; -} - -.btn-info.disabled.focus, -.btn-info.disabled:focus, -.btn-info.disabled:hover, -.btn-info.focus, -.btn-info:focus, -.btn-info:hover { - background: #03a9f3; - opacity: .8; - border: 1px solid #03a9f3; -} - -.btn-warning, -.btn-warning.disabled { - background: #fec107; - border: 1px solid #fec107 -} - -.btn-warning.disabled.focus, -.btn-warning.disabled:focus, -.btn-warning.disabled:hover, -.btn-warning.focus, -.btn-warning:focus, -.btn-warning:hover { - background: #fec107; - opacity: .8; - border: 1px solid #fec107 -} - -.btn-danger, -.btn-danger.disabled { - /*background:#fb9678; Davis*/ - background: #e03f3f; - border: 1px solid #fb9678; -} - -.btn-danger.disabled.focus, -.btn-danger.disabled:focus, -.btn-danger.disabled:hover, -.btn-danger.focus, -.btn-danger:focus, -.btn-danger:hover { - background: #fb9678; - opacity: .8; - border: 1px solid #fb9678; -} - -.btn-default, -.btn-default.disabled { - background: #e4e7ea; - border: 1px solid #e4e7ea -} - -.btn-default.disabled.focus, -.btn-default.disabled:focus, -.btn-default.disabled:hover, -.btn-default.focus, -.btn-default:focus, -.btn-default:hover { - opacity: .8; - border: 1px solid #e4e7ea; - background: #e4e7ea -} - -.btn-default.btn-outline { - background-color: #fff -} - -.btn-default.btn-outline.focus, -.btn-default.btn-outline:focus, -.btn-default.btn-outline:hover { - background: #e4e7ea -} - -.btn-primary.btn-outline { - color: #ab8ce4; - background-color: #fff -} - -.btn-primary.btn-outline.focus, -.btn-primary.btn-outline:focus, -.btn-primary.btn-outline:hover { - background: #ab8ce4; - color: #fff -} - -.btn-success.btn-outline { - color: #00c292; - background-color: transparent; -} - -.btn-success.btn-outline.focus, -.btn-success.btn-outline:focus, -.btn-success.btn-outline:hover { - background: #00c292; - color: #fff -} - -.btn-info.btn-outline { - color: #03a9f3; - background-color: transparent; -} - -.btn-info.btn-outline.focus, -.btn-info.btn-outline:focus, -.btn-info.btn-outline:hover { - background: #03a9f3; - color: #fff -} - -.btn-warning.btn-outline { - color: #fec107; - background-color: transparent; -} - -.btn-warning.btn-outline.focus, -.btn-warning.btn-outline:focus, -.btn-warning.btn-outline:hover { - background: #fec107; - color: #fff -} - -.btn-danger.btn-outline { - color: #fb9678; - background-color: transparent; -} - -.btn-danger.btn-outline.focus, -.btn-danger.btn-outline:focus, -.btn-danger.btn-outline:hover { - background: #fb9678; - color: #fff -} - -.button-box .btn { - margin: 0 8px 8px 0; -} - -.btn-danger.btn-outline:hover, -.btn-info.btn-outline:hover, -.btn-primary.btn-outline:hover, -.btn-success.btn-outline:hover, -.btn-warning.btn-outline:hover { - color: #fff -} - -.btn-label { - background: rgba(0, 0, 0, .05); - display: inline-block; - margin: -6px 12px -6px -14px; - padding: 7px 15px; -} - -.btn-facebook { - color: #fff !important; - background-color: #3b5998 !important; -} - -.btn-twitter { - color: #fff !important; - background-color: #55acee !important; -} - -.btn-linkedin { - color: #fff !important; - background-color: #007bb6 !important; -} - -.btn-dribbble { - color: #fff !important; - background-color: #ea4c89 !important; -} - -.btn-googleplus { - color: #fff !important; - background-color: #dd4b39 !important; -} - -.btn-instagram { - color: #fff !important; - background-color: #3f729b !important; -} - -.btn-pinterest { - color: #fff !important; - background-color: #cb2027 !important; -} - -.btn-dropbox { - color: #fff !important; - background-color: #007ee5 !important; -} - -.btn-flickr { - color: #fff !important; - background-color: #ff0084 !important; -} - -.btn-tumblr { - color: #fff !important; - background-color: #32506d !important; -} - -.btn-skype { - color: #fff !important; - background-color: #00aff0 !important; -} - -.btn-youtube { - color: #fff !important; - background-color: #b00 !important; -} - -.btn-github { - color: #fff !important; - background-color: #171515 !important; -} - -.btn-primary.active.focus, -.btn-primary.active:focus, -.btn-primary.active:hover, -.btn-primary.focus, -.btn-primary.focus:active, -.btn-primary:active:focus, -.btn-primary:active:hover, -.btn-primary:focus, -.open>.dropdown-toggle.btn-primary.focus, -.open>.dropdown-toggle.btn-primary:focus, -.open>.dropdown-toggle.btn-primary:hover { - background-color: #ab8ce4; - border: 1px solid #ab8ce4 -} - -.btn-success.active.focus, -.btn-success.active:focus, -.btn-success.active:hover, -.btn-success.focus, -.btn-success.focus:active, -.btn-success:active:focus, -.btn-success:active:hover, -.btn-success:focus, -.open>.dropdown-toggle.btn-success.focus, -.open>.dropdown-toggle.btn-success:focus, -.open>.dropdown-toggle.btn-success:hover { - background-color: #00c292; - border: 1px solid #00c292; -} - -.btn-info.active.focus, -.btn-info.active:focus, -.btn-info.active:hover, -.btn-info.focus, -.btn-info.focus:active, -.btn-info:active:focus, -.btn-info:active:hover, -.btn-info:focus, -.open>.dropdown-toggle.btn-info.focus, -.open>.dropdown-toggle.btn-info:focus, -.open>.dropdown-toggle.btn-info:hover { - background-color: #03a9f3; - border: 1px solid #03a9f3; -} - -.btn-warning.active.focus, -.btn-warning.active:focus, -.btn-warning.active:hover, -.btn-warning.focus, -.btn-warning.focus:active, -.btn-warning:active:focus, -.btn-warning:active:hover, -.btn-warning:focus, -.open>.dropdown-toggle.btn-warning.focus, -.open>.dropdown-toggle.btn-warning:focus, -.open>.dropdown-toggle.btn-warning:hover { - background-color: #fec107; - border: 1px solid #fec107 -} - -.btn-danger.active.focus, -.btn-danger.active:focus, -.btn-danger.active:hover, -.btn-danger.focus, -.btn-danger.focus:active, -.btn-danger:active:focus, -.btn-danger:active:hover, -.btn-danger:focus, -.open>.dropdown-toggle.btn-danger.focus, -.open>.dropdown-toggle.btn-danger:focus, -.open>.dropdown-toggle.btn-danger:hover { - background-color: #fb9678; - border: 1px solid #fb9678; -} - -.btn-inverse, -.btn-inverse.active, -.btn-inverse.focus, -.btn-inverse:active, -.btn-inverse:focus, -.btn-inverse:hover, -.open>.dropdown-toggle.btn-inverse { - background-color: #4c5667; - border: 1px solid #4c5667; - color: #fff -} - -.chat { - margin: 0; - padding: 0; - list-style: none; -} - -.chat li { - margin-bottom: 10px; - padding-bottom: 5px; - border-bottom: 1px dotted rgba(120, 130, 140, .13); -} - -.chat li.left .chat-body { - margin-left: 60px; -} - -.chat li.right .chat-body { - margin-right: 60px; -} - -.chat li .chat-body p { - margin: 0; -} - -.chat .glyphicon, -.panel .slidedown .glyphicon { - margin-right: 5px; -} - -.chat-panel .panel-body { - height: 350px; - overflow-y: scroll -} - -.login-panel { - margin-top: 25%; -} - -.flot-chart { - display: block; - height: 400px; -} - -.flot-chart-content { - width: 100%; - height: 100%; -} - -table.dataTable thead .sorting, -table.dataTable thead .sorting_asc, -table.dataTable thead .sorting_asc_disabled, -table.dataTable thead .sorting_desc, -table.dataTable thead .sorting_desc_disabled { - background: 0 0; -} - -table.dataTable thead .sorting_asc:after { - content: "\f0de"; - float: right; - font-family: fontawesome; -} - -table.dataTable thead .sorting_desc:after { - content: "\f0dd"; - float: right; - font-family: fontawesome; -} - -table.dataTable thead .sorting:after { - content: "\f0dc"; - float: right; - font-family: fontawesome; - color: rgba(50, 50, 50, .5); -} - -.btn-circle { - width: 30px; - height: 30px; - border-radius: 15px; - text-align: center; - font-size: 12px; - line-height: 1.428571429; -} - -.btn-circle.btn-lg { - width: 50px; - height: 50px; - padding: 10px 16px; - border-radius: 25px; - font-size: 18px; - line-height: 1.33; -} - -.btn-circle.btn-xl { - width: 70px; - height: 70px; - padding: 10px 16px; - border-radius: 35px; - font-size: 24px; - line-height: 1.33; -} - -.show-grid [class^=col-] { - padding-top: 10px; - padding-bottom: 10px; - border: 1px solid rgba(120, 130, 140, .13); - background-color: #f7fafc -} - -.show-grid { - margin: 15px 0; -} - -.huge { - font-size: 40px; -} - -.white-box { - background: #fff; - padding: 25px; - margin-bottom: 15px; -} - -.white-box .box-title { - margin: 0 0 12px; - font-weight: 500; - text-transform: uppercase; - font-size: 14px; -} - -.panel { - border-radius: 0; - margin-bottom: 15px; - border: 0; -} - -.panel .panel-heading { - border-radius: 0; - font-weight: 600; - text-transform: uppercase; - padding: 20px 25px; -} - -.panel .panel-heading .panel-title { - font-size: 14px; - color: #2b2b2b -} - -.panel .panel-heading a i { - font-size: 12px; - margin-left: 8px; -} - -.panel .panel-action { - float: right; -} - -.panel .panel-action a { - opacity: .5 -} - -.panel .panel-action a:hover { - opacity: 1 -} - -.panel .panel-body { - padding: 25px; -} - -.panel .panel-body:first-child h3 { - margin-top: 0; - font-weight: 600; - font-family: Poppins, sans-serif; - font-size: 14px; - text-transform: uppercase; -} - -.panel .panel-footer { - background: #fff; - border-radius: 0; - padding: 20px 25px; -} - -.panel-green, -.panel-success { - border-color: #00c292; -} - -.panel-green .panel-heading, -.panel-success .panel-heading { - border-color: #00c292; - color: #fff; - background-color: #00c292; -} - -.panel-green .panel-heading a, -.panel-success .panel-heading a { - color: #fff -} - -.panel-green .panel-heading a:hover, -.panel-success .panel-heading a:hover { - color: rgba(255, 255, 255, .5); -} - -.panel-green a, -.panel-success a { - color: #00c292; -} - -.panel-green a:hover, -.panel-success a:hover { - color: #007658; -} - -.panel-black, -.panel-inverse { - border-color: #4c5667 -} - -.panel-black .panel-heading, -.panel-inverse .panel-heading { - border-color: #4c5667; - color: #fff; - background-color: #4c5667 -} - -.panel-black .panel-heading a, -.panel-inverse .panel-heading a { - color: #fff -} - -.panel-black .panel-heading a:hover, -.panel-inverse .panel-heading a:hover { - color: rgba(255, 255, 255, .5); -} - -.panel-black a, -.panel-inverse a { - color: #4c5667 -} - -.panel-black a:hover, -.panel-inverse a:hover { - color: #2c313b -} - -.panel-darkblue, -.panel-primary { - border-color: #ab8ce4 -} - -.panel-darkblue .panel-heading, -.panel-primary .panel-heading { - border-color: #ab8ce4; - color: #fff; - background-color: #ab8ce4 -} - -.panel-darkblue .panel-heading a, -.panel-primary .panel-heading a { - color: #fff -} - -.panel-darkblue .panel-heading a:hover, -.panel-primary .panel-heading a:hover { - color: rgba(255, 255, 255, .5); -} - -.panel-darkblue a, -.panel-primary a { - color: #ab8ce4 -} - -.panel-darkblue a:hover, -.panel-primary a:hover { - color: #7e4ed5 -} - -.panel-blue, -.panel-info { - border-color: #03a9f3; -} - -.panel-blue .panel-heading, -.panel-info .panel-heading { - border-color: #03a9f3; - color: #fff; - background-color: #03a9f3; -} - -.panel-blue .panel-heading a, -.panel-info .panel-heading a { - color: #fff -} - -.panel-blue .panel-heading a:hover, -.panel-info .panel-heading a:hover { - color: rgba(255, 255, 255, .5); -} - -.panel-blue a, -.panel-info a { - color: #03a9f3; -} - -.panel-blue a:hover, -.panel-info a:hover { - color: #0274a7 -} - -.panel-danger, -.panel-red { - border-color: #fb9678; -} - -.panel-danger .panel-heading, -.panel-red .panel-heading { - border-color: #fb9678; - color: #fff; - background-color: #fb9678; -} - -.panel-danger .panel-heading a, -.panel-red .panel-heading a { - color: #fff -} - -.panel-danger .panel-heading a:hover, -.panel-red .panel-heading a:hover { - color: rgba(255, 255, 255, .5); -} - -.panel-danger a, -.panel-red a { - color: #fb9678; -} - -.panel-danger a:hover, -.panel-red a:hover { - color: #f95c2e; -} - -.panel-warning, -.panel-yellow { - border-color: #fec107 -} - -.panel-warning .panel-heading, -.panel-yellow .panel-heading { - border-color: #fec107; - color: #fff; - background-color: #fec107 -} - -.panel-warning .panel-heading a, -.panel-yellow .panel-heading a { - color: #fff -} - -.panel-warning .panel-heading a:hover, -.panel-yellow .panel-heading a:hover { - color: rgba(255, 255, 255, .5); -} - -.panel-warning a, -.panel-yellow a { - color: #fec107 -} - -.panel-warning a:hover, -.panel-yellow a:hover { - color: #b88b01 -} - -.panel-default, -.panel-white { - border-color: rgba(120, 130, 140, .13); -} - -.panel-default .panel-heading, -.panel-white .panel-heading { - color: #2b2b2b; - background-color: #fff; - border-bottom: 1px solid rgba(120, 130, 140, .13); -} - -.panel-default .panel-body, -.panel-white .panel-body { - color: #2b2b2b -} - -.panel-default .panel-action a, -.panel-white .panel-action a { - color: #2b2b2b; - opacity: .5 -} - -.panel-default .panel-action a:hover, -.panel-white .panel-action a:hover { - opacity: 1; - color: #2b2b2b -} - -.panel-default .panel-footer, -.panel-white .panel-footer { - background: #fff; - color: #2b2b2b; - border-top: 1px solid rgba(120, 130, 140, .13); -} - -.full-panel-info { - border-color: #03a9f3; -} - -.full-panel-info .panel-heading { - border-color: #03a9f3; - color: #fff; - background-color: #03a9f3; - border-bottom: 1px solid rgba(120, 130, 140, .13); -} - -.full-panel-info .panel-body { - background: #03a9f3; - color: #fff -} - -.full-panel-info .panel-footer { - background: #03a9f3; - color: #fff; - border-top: 1px solid rgba(120, 130, 140, .13); -} - -.full-panel-info a { - color: #03a9f3; -} - -.full-panel-info a:hover { - color: #0274a7 -} - -.full-panel-warning { - border-color: #fec107 -} - -.full-panel-warning .panel-heading { - border-color: #fec107; - color: #fff; - background-color: #fec107; - border-bottom: 1px solid rgba(120, 130, 140, .13); -} - -.full-panel-warning .panel-body { - background: #fec107; - color: #fff -} - -.full-panel-warning .panel-footer { - background: #fec107; - color: #fff; - border-top: 1px solid rgba(120, 130, 140, .13); -} - -.full-panel-warning a { - color: #fec107 -} - -.full-panel-warning a:hover { - color: #b88b01 -} - -.full-panel-success { - border-color: #00c292; -} - -.full-panel-success .panel-heading { - border-color: #00c292; - color: #fff; - background-color: #00c292; - border-bottom: 1px solid rgba(120, 130, 140, .13); -} - -.full-panel-success .panel-body { - background: #00c292; - color: #fff -} - -.full-panel-success .panel-footer { - background: #00c292; - color: #fff; - border-top: 1px solid rgba(120, 130, 140, .13); -} - -.full-panel-success a { - color: #00c292; -} - -.full-panel-success a:hover { - color: #007658; -} - -.full-panel-purple { - border-color: #9675ce; -} - -.full-panel-purple .panel-heading { - color: #fff; - background-color: #9675ce; - border-bottom: 1px solid rgba(120, 130, 140, .13); -} - -.full-panel-purple .panel-body { - background: #9675ce; - color: #fff -} - -.full-panel-purple .panel-footer { - background: #9675ce; - color: #fff; - border-top: 1px solid rgba(120, 130, 140, .13); -} - -.full-panel-purple a { - color: #9675ce; -} - -.full-panel-purple a:hover { - color: #6c41b6 -} - -.full-panel-danger { - border-color: #fb9678; -} - -.full-panel-danger .panel-heading { - border-color: #fb9678; - color: #fff; - background-color: #fb9678; - border-bottom: 1px solid rgba(120, 130, 140, .13); -} - -.full-panel-danger .panel-body { - background: #fb9678; - color: #fff -} - -.full-panel-danger .panel-footer { - background: #fb9678; - color: #fff; - border-top: 1px solid rgba(120, 130, 140, .13); -} - -.full-panel-danger a { - color: #fb9678; -} - -.full-panel-danger a:hover { - color: #f95c2e; -} - -.full-panel-inverse { - border-color: #4c5667 -} - -.full-panel-inverse .panel-heading { - border-color: #4c5667; - color: #fff; - background-color: #4c5667; - border-bottom: 1px solid rgba(120, 130, 140, .13); -} - -.full-panel-inverse .panel-body { - background: #4c5667; - color: #fff -} - -.full-panel-inverse .panel-footer { - background: #4c5667; - color: #fff; - border-top: 1px solid rgba(120, 130, 140, .13); -} - -.full-panel-inverse a { - color: #4c5667 -} - -.full-panel-inverse a:hover { - color: #2c313b -} - -.full-panel-default { - border-color: rgba(120, 130, 140, .13); -} - -.full-panel-default .panel-heading { - color: #2b2b2b; - background-color: #fff; - border-bottom: 1px solid rgba(120, 130, 140, .13); -} - -.full-panel-default .panel-body { - color: #2b2b2b -} - -.full-panel-default .panel-footer { - background: #fff; - color: #2b2b2b; - border-top: 1px solid rgba(120, 130, 140, .13); -} - -.full-panel-default a { - color: #2b2b2b -} - -.full-panel-default a:hover { - color: #2c313b -} - -.panel-opcl { - float: right; -} - -.panel-opcl i { - margin-left: 8px; - font-size: 10px; - cursor: pointer -} - -.fa-fw { - width: 20px !important; - display: inline-block !important; - text-align: left !important; -} - -.waves-effect { - position: relative; - cursor: pointer; - display: inline-block; - overflow: hidden; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-tap-highlight-color: transparent; -} - -.waves-effect .waves-ripple { - position: absolute; - border-radius: 50%; - width: 20px; - height: 20px; - margin-top: -10px; - margin-left: -10px; - opacity: 0; - background: rgba(0, 0, 0, .08); - -webkit-transition: all .5s ease-out; - -moz-transition: all .5s ease-out; - -o-transition: all .5s ease-out; - transition: all .5s ease-out; - -webkit-transition-property: -webkit-transform, opacity; - -moz-transition-property: -moz-transform, opacity; - -o-transition-property: -o-transform, opacity; - transition-property: transform, opacity; - -webkit-transform: scale(0); - -moz-transform: scale(0); - -ms-transform: scale(0); - -o-transform: scale(0); - transform: scale(0); - pointer-events: none; -} - -.waves-effect.waves-light .waves-ripple { - background: rgba(255, 255, 255, .4); - background: -webkit-radial-gradient(rgba(255, 255, 255, .2) 0, rgba(255, 255, 255, .3) 40%, rgba(255, 255, 255, .4) 50%, rgba(255, 255, 255, .5) 60%, rgba(255, 255, 255, 0) 70%); - background: -o-radial-gradient(rgba(255, 255, 255, .2) 0, rgba(255, 255, 255, .3) 40%, rgba(255, 255, 255, .4) 50%, rgba(255, 255, 255, .5) 60%, rgba(255, 255, 255, 0) 70%); - background: -moz-radial-gradient(rgba(255, 255, 255, .2) 0, rgba(255, 255, 255, .3) 40%, rgba(255, 255, 255, .4) 50%, rgba(255, 255, 255, .5) 60%, rgba(255, 255, 255, 0) 70%); - background: radial-gradient(rgba(255, 255, 255, .2) 0, rgba(255, 255, 255, .3) 40%, rgba(255, 255, 255, .4) 50%, rgba(255, 255, 255, .5) 60%, rgba(255, 255, 255, 0) 70%); -} - -.waves-effect.waves-classic .waves-ripple { - background: rgba(0, 0, 0, .2); -} - -.waves-effect.waves-classic.waves-light .waves-ripple { - background: rgba(255, 255, 255, .4); -} - -.waves-notransition { - -webkit-transition: none !important; - -moz-transition: none !important; - -o-transition: none !important; - transition: none !important; -} - -.waves-button, -.waves-circle { - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -ms-transform: translateZ(0); - -o-transform: translateZ(0); - transform: translateZ(0); - -webkit-mask-image: -webkit-radial-gradient(circle, #fff 100%, #000 100%); -} - -.waves-button, -.waves-button-input, -.waves-button:hover, -.waves-button:visited { - white-space: nowrap; - vertical-align: middle; - cursor: pointer; - border: none; - outline: 0; - color: inherit; - background-color: rgba(0, 0, 0, 0); - font-size: 1em; - line-height: 1em; - text-align: center; - text-decoration: none; - z-index: 1 -} - -.waves-button { - padding: .85em 1.1em; - border-radius: .2em -} - -.waves-button-input { - margin: 0; - padding: .85em 1.1em -} - -.waves-input-wrapper { - border-radius: .2em; - vertical-align: bottom -} - -.waves-input-wrapper.waves-button { - padding: 0; -} - -.waves-input-wrapper .waves-button-input { - position: relative; - top: 0; - left: 0; - z-index: 1 -} - -.waves-circle { - text-align: center; - width: 2.5em; - height: 2.5em; - line-height: 2.5em; - border-radius: 50%; -} - -.waves-float { - -webkit-mask-image: none; - -webkit-box-shadow: 0 1px 1.5px 1px rgba(0, 0, 0, .12); - box-shadow: 0 1px 1.5px 1px rgba(0, 0, 0, .12); - -webkit-transition: all 300ms; - -moz-transition: all 300ms; - -o-transition: all 300ms; - transition: all 300ms -} - -.waves-float:active { - -webkit-box-shadow: 0 8px 20px 1px rgba(0, 0, 0, .3); - box-shadow: 0 8px 20px 1px rgba(0, 0, 0, .3); -} - -.waves-block { - display: block -} - -.checkbox { - padding-left: 20px; -} - -.checkbox label { - display: inline-block; - padding-left: 5px; - position: relative; -} - -.checkbox label::before { - -o-transition: .3s ease-in-out; - -webkit-transition: .3s ease-in-out; - background-color: #fff; - border-radius: 1px; - border: 1px solid rgba(120, 130, 140, .13); - content: ""; - display: inline-block; - height: 17px; - left: 0; - margin-left: -20px; - position: absolute; - transition: .3s ease-in-out; - width: 17px; - outline: 0 !important; -} - -.checkbox label::after { - color: #2b2b2b; - display: inline-block; - font-size: 11px; - height: 16px; - left: 0; - margin-left: -20px; - padding-left: 3px; - padding-top: 1px; - position: absolute; - top: 0; - width: 16px; -} - -.checkbox input[type=checkbox] { - cursor: pointer; - opacity: 0; - z-index: 1; - outline: 0 !important; -} - -.checkbox input[type=checkbox]:disabled+label { - opacity: .65 -} - -.checkbox input[type=checkbox]:focus+label::before { - outline-offset: -2px; - outline: 0; - outline: dotted thin -} - -.checkbox input[type=checkbox]:checked+label::after { - content: "\f00c"; - font-family: FontAwesome; -} - -.checkbox input[type=checkbox]:disabled+label::before { - background-color: #e4e7ea; - cursor: not-allowed -} - -.checkbox.checkbox-circle label::before { - border-radius: 50%; -} - -.checkbox.checkbox-inline { - margin-top: 0; -} - -.checkbox.checkbox-single label { - height: 17px; -} - -.checkbox-primary input[type=checkbox]:checked+label::before { - background-color: #ab8ce4; - border-color: #ab8ce4 -} - -.checkbox-primary input[type=checkbox]:checked+label::after { - color: #fff -} - -.checkbox-danger input[type=checkbox]:checked+label::before { - background-color: #fb9678; - border-color: #fb9678; -} - -.checkbox-danger input[type=checkbox]:checked+label::after { - color: #fff -} - -.checkbox-info input[type=checkbox]:checked+label::before { - background-color: #03a9f3; - border-color: #03a9f3; -} - -.checkbox-info input[type=checkbox]:checked+label::after { - color: #fff -} - -.checkbox-warning input[type=checkbox]:checked+label::before { - background-color: #fec107; - border-color: #fec107 -} - -.checkbox-warning input[type=checkbox]:checked+label::after { - color: #fff -} - -.checkbox-success input[type=checkbox]:checked+label::before { - background-color: #00c292; - border-color: #00c292; -} - -.checkbox-success input[type=checkbox]:checked+label::after { - color: #fff -} - -.checkbox-purple input[type=checkbox]:checked+label::before { - background-color: #9675ce; - border-color: #9675ce; -} - -.checkbox-purple input[type=checkbox]:checked+label::after { - color: #fff -} - -.checkbox-red input[type=checkbox]:checked+label::before { - background-color: #fb9678; - border-color: #fb9678; -} - -.checkbox-red input[type=checkbox]:checked+label::after { - color: #fff -} - -.checkbox-inverse input[type=checkbox]:checked+label::before { - background-color: #4c5667; - border-color: #4c5667 -} - -.checkbox-inverse input[type=checkbox]:checked+label::after { - color: #fff -} - -.radio { - padding-left: 20px; -} - -.radio label { - display: inline-block; - padding-left: 5px; - position: relative; -} - -.radio label::before { - -o-transition: border .5s ease-in-out; - -webkit-transition: border .5s ease-in-out; - background-color: #fff; - border-radius: 50%; - border: 1px solid rgba(120, 130, 140, .13); - content: ""; - display: inline-block; - height: 17px; - left: 0; - margin-left: -20px; - position: absolute; - transition: border .5s ease-in-out; - width: 17px; - outline: 0 !important; -} - -.radio label::after { - -moz-transition: -moz-transform .3s cubic-bezier(.8, -.33, .2, 1.33); - -ms-transform: scale(0, 0); - -o-transform: scale(0, 0); - -o-transition: -o-transform .3s cubic-bezier(.8, -.33, .2, 1.33); - -webkit-transform: scale(0, 0); - -webkit-transition: -webkit-transform .3s cubic-bezier(.8, -.33, .2, 1.33); - background-color: #2b2b2b; - border-radius: 50%; - content: " "; - display: inline-block; - height: 7px; - left: 5px; - margin-left: -20px; - position: absolute; - top: 5px; - transform: scale(0, 0); - transition: transform .3s cubic-bezier(.8, -.33, .2, 1.33); - width: 7px; -} - -.radio input[type=radio] { - cursor: pointer; - opacity: 0; - z-index: 1; - outline: 0 !important; -} - -.radio input[type=radio]:disabled+label { - opacity: .65 -} - -.radio input[type=radio]:focus+label::before { - outline-offset: -2px; - outline: -webkit-focus-ring-color auto 5px; - outline: dotted thin -} - -.radio input[type=radio]:checked+label::after { - -ms-transform: scale(1, 1); - -o-transform: scale(1, 1); - -webkit-transform: scale(1, 1); - transform: scale(1, 1); -} - -.radio input[type=radio]:disabled+label::before { - cursor: not-allowed -} - -.radio.radio-inline { - margin-top: 0; -} - -.radio.radio-single label { - height: 17px; -} - -.radio-primary input[type=radio]+label::after { - background-color: #ab8ce4 -} - -.radio-primary input[type=radio]:checked+label::before { - border-color: #ab8ce4 -} - -.radio-primary input[type=radio]:checked+label::after { - background-color: #ab8ce4 -} - -.radio-danger input[type=radio]+label::after { - background-color: #fb9678; -} - -.radio-danger input[type=radio]:checked+label::before { - border-color: #fb9678; -} - -.radio-danger input[type=radio]:checked+label::after { - background-color: #fb9678; -} - -.radio-info input[type=radio]+label::after { - background-color: #03a9f3; -} - -.radio-info input[type=radio]:checked+label::before { - border-color: #03a9f3; -} - -.radio-info input[type=radio]:checked+label::after { - background-color: #03a9f3; -} - -.radio-warning input[type=radio]+label::after { - background-color: #fec107 -} - -.radio-warning input[type=radio]:checked+label::before { - border-color: #fec107 -} - -.radio-warning input[type=radio]:checked+label::after { - background-color: #fec107 -} - -.radio-success input[type=radio]+label::after { - background-color: #00c292; -} - -.radio-success input[type=radio]:checked+label::before { - border-color: #00c292; -} - -.radio-success input[type=radio]:checked+label::after { - background-color: #00c292; -} - -.radio-purple input[type=radio]+label::after { - background-color: #9675ce; -} - -.radio-purple input[type=radio]:checked+label::before { - border-color: #9675ce; -} - -.radio-purple input[type=radio]:checked+label::after { - background-color: #9675ce; -} - -.radio-red input[type=radio]+label::after { - background-color: #fb9678; -} - -.radio-red input[type=radio]:checked+label::before { - border-color: #fb9678; -} - -.radio-red input[type=radio]:checked+label::after { - background-color: #fb9678; -} - -.fileupload { - overflow: hidden; - position: relative; -} - -.fileupload input.upload { - cursor: pointer; - filter: alpha(opacity=0); - font-size: 20px; - margin: 0; - opacity: 0; - padding: 0; - position: absolute; - right: 0; - top: 0; -} - -.model_img { - cursor: pointer -} - -.myadmin-dd .dd-list .dd-item .dd-handle { - background: #fff; - border: 1px solid rgba(120, 130, 140, .13); - padding: 8px 16px; - height: auto; - font-weight: 600; - border-radius: 0; -} - -.myadmin-dd .dd-list .dd-item .dd-handle:hover { - color: #03a9f3; -} - -.myadmin-dd .dd-list .dd-item button { - height: auto; - font-size: 17px; - margin: 8px auto; - color: #2b2b2b; - width: 30px; -} - -.myadmin-dd-empty .dd-list .dd3-handle { - border: 1px solid rgba(120, 130, 140, .13); - border-bottom: 0; - background: #fff; - height: 36px; - width: 36px; -} - -.myadmin-dd-empty .dd-list .dd3-handle:before { - color: inherit; - top: 7px; -} - -.myadmin-dd-empty .dd-list .dd3-handle:hover { - color: #03a9f3; -} - -.myadmin-dd-empty .dd-list .dd3-content { - height: auto; - border: 1px solid rgba(120, 130, 140, .13); - padding: 8px 16px 8px 46px; - background: #fff; - font-weight: 600; -} - -.myadmin-dd-empty .dd-list .dd3-content:hover { - color: #03a9f3; -} - -.myadmin-dd-empty .dd-list button { - width: 26px; - height: 26px; - font-size: 16px; - font-weight: 600; -} - -.settings_box { - position: absolute; - top: 75px; - right: 0; - z-index: 100; -} - -.settings_box a { - background: #fff; - padding: 15px; - display: inline-block; - vertical-align: top -} - -.settings_box a i { - display: block; - -webkit-animation-name: rotate; - -webkit-animation-duration: 2s; - -moz-animation-name: rotate; - -moz-animation-duration: 2s; - -moz-animation-iteration-count: infinite; - -moz-animation-timing-function: linear; - animation-name: rotate; - font-size: 16px; - animation-duration: 1s; - animation-iteration-count: infinite; - animation-timing-function: linear -} - -@-webkit-keyframes rotate { - from { - -webkit-transform: rotate(0deg) - } - - to { - -webkit-transform: rotate(360deg) - } -} - -@-moz-keyframes rotate { - from { - -moz-transform: rotate(0deg) - } - - to { - -moz-transform: rotate(360deg) - } -} - -@keyframes rotate { - from { - transform: rotate(0deg) - } - - to { - transform: rotate(360deg) - } -} - -.theme_color { - margin: 0; - padding: 0; - display: inline-block; - overflow: hidden; - width: 0; - transition: .5s ease-out; - background: #fff -} - -.theme_color li { - list-style: none; - width: 30%; - float: left; - margin: 0 1.5%; -} - -.theme_color li a { - padding: 5px; - height: 50px; - display: block -} - -.theme_color li a.theme-green { - background: #00c292; -} - -.theme_color li a.theme-red { - background: #fb9678; -} - -.theme_color li a.theme-dark { - background: #4c5667 -} - -.theme_block { - width: 200px; - padding: 30px; -} - -ul.common li { - display: inline-block; - line-height: 40px; - list-style: none none; - width: 48%; -} - -ul.common li a { - color: #686868; -} - -ul.common li a:hover { - color: #03a9f3; -} - -.card-primary { - background-color: #ab8ce4; - border-color: #ab8ce4 -} - -.card-success { - background-color: #00c292; - border-color: #00c292; -} - -.card-info { - background-color: #03a9f3; - border-color: #03a9f3; -} - -.card-warning { - background-color: #fec107; - border-color: #fec107 -} - -.card-danger { - background-color: #fb9678; - border-color: #fb9678; -} - -.card-secondary { - background-color: #4c5667; - border-color: #4c5667 -} - -.card-red { - background-color: #fb3a3a; - border-color: #fb3a3a -} - -.card-blue { - background-color: #02bec9; - border-color: #02bec9; -} - -.card-purple { - background-color: #9675ce; - border-color: #9675ce; -} - -.card-megna { - background-color: #01c0c8; - border-color: #01c0c8; -} - -.card-outline-primary { - border-color: #ab8ce4 -} - -.card-outline-success { - border-color: #00c292; -} - -.card-outline-info { - border-color: #03a9f3; -} - -.card-outline-warning { - border-color: #fec107 -} - -.card-outline-danger { - border-color: #fb9678; -} - -.card-outline-secondary { - border-color: #4c5667 -} - -.card-outline-red { - border-color: #fb3a3a -} - -.card-outline-blue { - border-color: #02bec9; -} - -.card-outline-purple { - border-color: #9675ce; -} - -.card-outline-megna { - border-color: #01c0c8; -} - -.row-in i { - font-size: 24px; -} - -.mailbox { - width: 280px; - overflow: auto; - padding-bottom: 0; -} - -.message-center a { - border-bottom: 1px solid rgba(120, 130, 140, .13); - display: block; - padding: 9px 15px; -} - -.message-center a:hover { - background: #f7fafc -} - -.message-center .user-img { - width: 40px; - float: left; - position: relative; - margin: 0 10px 15px 0; -} - -.message-center .user-img img { - width: 100%; -} - -.message-center .user-img .profile-status { - border: 2px solid #fff; - border-radius: 50%; - display: inline-block; - height: 10px; - left: 30px; - position: absolute; - top: 1px; - width: 10px; -} - -.message-center .user-img .online { - background: #00c292; -} - -.message-center .user-img .busy { - background: #fb9678; -} - -.message-center .user-img .away, -.message-center .user-img .offline { - background: #fec107 -} - -.message-center .mail-contnet h5 { - margin: 0; - font-weight: 400; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap -} - -.message-center .mail-contnet .mail-desc { - font-size: 12px; - display: block; - margin: 5px 0; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; - color: #2b2b2b -} - -.message-center .mail-contnet .time { - display: block; - font-size: 10px; - color: #2b2b2b -} - -.mail-contnet a.action { - margin-left: 10px; - font-size: 12px; - visibility: hidden -} - -.mail-contnet:hover a.action { - visibility: visible; -} - -.inbox-center .unread td { - font-weight: 600; -} - -.inbox-center a { - color: #686868; - padding: 2px 0 3px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - display: inline-block -} - -.comment-center { - margin: 0 -25px; -} - -.comment-center .comment-body { - border-bottom: 1px solid rgba(120, 130, 140, .13); - display: table; - padding: 20px 25px; -} - -.comment-center .comment-body:hover { - background: #f7fafc -} - -.comment-center .user-img { - width: 40px; - display: table-cell; - position: relative; - margin: 0 10px 0 0; -} - -.comment-center .user-img img { - width: 100%; -} - -.comment-center .mail-contnet { - display: table-cell; - padding-left: 15px; - vertical-align: top -} - -.comment-center .mail-contnet h5 { - margin: 0; - font-weight: 400; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap -} - -.comment-center .mail-contnet .mail-desc { - font-size: 14px; - display: block; - margin: 8px 0; - line-height: 25px; - color: #848a96; - height: 50px; - overflow: hidden -} - -.comment-center .mail-contnet .time { - display: block; - font-size: 10px; - color: #2b2b2b -} - -.sales-report { - background: #f7fafc; - margin: 12px -25px; - padding: 15px; -} - -.dropdown-alerts, -.dropdown-tasks { - padding: 0; -} - -.dropdown-alerts li a, -.dropdown-tasks li a, -.mailbox li>a { - padding: 15px 20px; -} - -.dropdown-alerts li.divider, -.dropdown-tasks li.divider { - margin: 0; -} - -.row-in-br { - border-right: 1px solid rgba(120, 130, 140, .13); -} - -.col-in { - padding: 20px; -} - -.col-in h3 { - font-size: 48px; - font-weight: 100; -} - -.basic-list { - padding: 0; -} - -.basic-list li { - display: block; - padding: 15px 0; - border-bottom: 1px solid rgba(120, 130, 140, .13); - line-height: 27px; -} - -.basic-list li:last-child { - border-bottom: 0; -} - -.steamline { - position: relative; - border-left: 1px solid rgba(120, 130, 140, .13); - margin-left: 20px; -} - -.steamline .sl-left { - float: left; - margin-left: -20px; - z-index: 1; - margin-right: 15px; -} - -.steamline .sl-left img { - max-width: 40px; -} - -.steamline .sl-right { - padding-left: 35px; -} - -.steamline .sl-item { - margin-top: 8px; - margin-bottom: 30px; -} - -.sl-date { - font-size: 10px; - color: #98a6ad -} - -.time-item { - border-color: rgba(120, 130, 140, .13); - padding-bottom: 1px; - position: relative; -} - -.time-item:before { - content: " "; - display: table; -} - -.time-item:after { - background-color: #fff; - border-color: rgba(120, 130, 140, .13); - border-radius: 10px; - border-style: solid; - border-width: 2px; - bottom: 0; - content: ''; - height: 14px; - left: 0; - margin-left: -8px; - position: absolute; - top: 5px; - width: 14px; -} - -.time-item-item:after { - content: " "; - display: table; -} - -.item-info { - margin-bottom: 15px; - margin-left: 15px; -} - -.item-info p { - margin-bottom: 10px !important; -} - -.user-bg { - margin: -25px; - height: 230px; - overflow: hidden; - position: relative; -} - -.user-bg .overlay-box { - background: #9675ce; - opacity: .9; - position: absolute; - top: 0; - left: 0; - right: 0; - height: 100%; - text-align: center -} - -.user-bg .overlay-box .user-content { - padding: 15px; - margin-top: 30px; -} - -.user-btm-box { - padding: 40px 0 10px; - clear: both; - overflow: hidden -} - -.vertical .carousel-inner { - height: 100%; - position: relative; -} - -.carousel.vertical .item { - -webkit-transition: .6s ease-in-out top; - -moz-transition: .6s ease-in-out top; - -ms-transition: .6s ease-in-out top; - -o-transition: .6s ease-in-out top; - transition: .6s ease-in-out top -} - -.carousel.vertical .active { - top: 0; -} - -.carousel.vertical .next { - top: 400px; -} - -.carousel.vertical .prev { - top: -400px; -} - -.carousel.vertical .next.left, -.carousel.vertical .prev.right { - top: 0; -} - -.carousel.vertical .active.left { - top: -400px; -} - -.carousel.vertical .active.right { - top: 400px; -} - -.carousel.vertical .item { - left: 0; -} - -.twi-user img { - margin-right: 20px; - width: 50px; -} - -.twi-user { - margin: 18px 0; -} - -.carousel-inner h3 { - height: 112px; - overflow: hidden -} - -.chart-box { - margin: 25px -15px -17px -17px; -} - -.list-task .task-done span { - text-decoration: line-through -} - -.chat-list { - list-style: none; - max-height: 332px; - padding: 0 20px; -} - -.chat-list li { - margin-bottom: 24px; - overflow: auto -} - -.chat-list .chat-image { - display: inline-block; - float: left; - text-align: center; - width: 50px; -} - -.chat-list .chat-image img { - border-radius: 100%; - width: 100%; -} - -.chat-list .chat-text { - background: #f7fafc; - border-radius: 0; - display: inline-block; - padding: 15px; - position: relative; -} - -.chat-list .chat-text h4 { - color: #1a2942; - display: block; - font-size: 12px; - font-style: normal; - font-weight: 700; - margin: 0; - line-height: 15px; - position: relative; -} - -.chat-list .chat-text p { - margin: 0; - padding-top: 3px; -} - -.chat-list .chat-text b { - font-size: 10px; - opacity: .8; -} - -.chat-list .chat-body { - display: inline-block; - float: left; - font-size: 12px; - margin-left: 12px; - width: 65%; -} - -.chat-list .odd .chat-image { - float: right !important; -} - -.chat-list .odd .chat-body { - float: right !important; - margin-right: 12px; - text-align: right; - color: #fff -} - -.chat-list .odd .chat-text { - background: #ff6849; -} - -.chat-list .odd .chat-text h4 { - color: #fff -} - -.chat-send { - padding-left: 0; - padding-right: 30px; -} - -.chat-send button { - width: 100%; -} - -.weather-box .weather-top { - overflow: hidden; - padding: 10px 25px; - margin: 0 -25px; - background: #f7fafc -} - -.weather-box .weather-top h2 { - line-height: 24px; -} - -.weather-box .weather-top h2 small { - font-size: 13px; -} - -.weather-box .weather-top .today_crnt { - font-size: 45px; - font-weight: 100; -} - -.weather-box .weather-top .today_crnt canvas { - display: inline-block; - margin-right: 10px; - vertical-align: middle; -} - -.weather-box .weather-info { - padding: 10px 0; -} - -.weather-box .weather-time { - overflow: hidden; - text-align: center; - padding-top: 15px; -} - -.weather-box .weather-time li span { - display: block -} - -.weather-box .weather-time li canvas { - font-size: 20px; - margin: 10px 0; -} - -.demo-container { - width: 100%; - height: 350px; -} - -.demo-placeholder { - width: 100%; - height: 100%; - font-size: 14px; - line-height: 1.2em -} - -.myadmin-alert { - border-radius: 0; - color: #fff; - padding: 12px 30px 12px 12px; - position: relative; - text-align: left; -} - -.myadmin-alert a { - color: inherit; - font-weight: 600; - text-decoration: underline; -} - -.myadmin-alert h4 { - color: inherit; - font-size: 14px; - font-weight: 600; - line-height: normal; - margin: 0; -} - -.myadmin-alert .img { - border-radius: 3px; - height: 40px; - left: 12px; - position: absolute; - top: 12px; - width: 40px; -} - -.myadmin-alert-img { - min-height: 64px; - padding-left: 65px; -} - -.myadmin-alert-icon { - padding-left: 20px; -} - -.myadmin-alert-icon i { - padding-right: 10px; -} - -.myadmin-alert .closed { - color: rgba(255, 255, 255, .5); - font-size: 20px; - font-weight: 700; - padding: 4px; - position: absolute; - right: 3px; - text-decoration: none; - top: 0; -} - -.myadmin-alert .closed:hover { - color: #fff -} - -.myadmin-alert-click { - cursor: pointer; - padding-right: 12px; -} - -.myadmin-alert .primary { - background: rgba(0, 0, 0, .4); - border: none; - border-radius: 3px; - color: inherit; - outline: 0; - padding: 4px 10px; -} - -.myadmin-alert .cancel { - background: rgba(255, 255, 255, .4); - border: none; - border-radius: 3px; - color: rgba(0, 0, 0, .8); - outline: 0; - padding: 4px 10px; -} - -.myadmin-alert .cancel:hover, -.myadmin-alert .primary:hover { - opacity: .9; -} - -.myadmin-alert-bottom, -.myadmin-alert-bottom-left, -.myadmin-alert-bottom-right, -.myadmin-alert-fullscreen, -.myadmin-alert-top, -.myadmin-alert-top-left, -.myadmin-alert-top-right { - box-shadow: 2px 2px 2px rgba(0, 0, 0, .1); - display: none; - position: fixed; - z-index: 1000; -} - -.myadmin-alert-top { - left: 0; - right: 0; - top: 0; -} - -.myadmin-alert-bottom { - bottom: 0; - left: 0; - right: 0; -} - -.myadmin-alert-top-left { - left: 20px; - top: 80px; -} - -.myadmin-alert-top-right { - right: 20px; - top: 80px; -} - -.myadmin-alert-bottom-left { - bottom: 20px; - left: 20px; -} - -.myadmin-alert-bottom-right { - bottom: 20px; - right: 20px; -} - -.myadmin-alert-fullsize { - left: 50%; - margin: -20px; - top: 50%; -} - -.alert-custom { - background: #ff6849; - color: #fff; - border-color: #ff6849; -} - -.alert-inverse { - background: #4c5667; - color: #fff; - border-color: #4c5667 -} - -.alert-success { - background: #00c292; - color: #fff; - border-color: #00c292; -} - -.alert-dark { - background: #686868; - color: #fff; - border-color: #686868; -} - -.alert-warning { - background: #fec107; - color: #fff; - border-color: #fec107 -} - -.alert-danger { - background: #fb9678; - color: #fff; - border-color: #fb9678; -} - -.alert-primary { - background: #9675ce; - color: #fff; - border-color: #9675ce; -} - -.alert-info { - background: #03a9f3; - color: #fff; - border-color: #03a9f3; -} - -.alert-info .closed, -.alert-info a.closed:hover { - color: inherit; -} - -.tab-content { - margin-top: 30px; -} - -.customtab { - border-bottom: 2px solid #f7fafc -} - -.customtab li.active a, -.customtab li.active a:focus, -.customtab li.active a:hover { - background: #fff; - border: 0; - border-bottom: 2px solid #ff6849; - margin-bottom: -1px; - color: #ff6849; -} - -.customtab li a, -.customtab li a:focus, -.customtab li a:hover { - border: 0; -} - -.customtab2 { - border-bottom: 1px solid #f7fafc; - border-top: 1px solid #f7fafc; - padding: 10px 0; -} - -.customtab2 li.active a, -.customtab2 li.active a:focus, -.customtab2 li.active a:hover { - background: #ff6849; - border: 1px solid #ff6849; - color: #fff -} - -.customtab2 li a, -.customtab2 li a:focus, -.customtab2 li a:hover { - border: 0; -} - -.vtabs { - display: table; -} - -.vtabs .tabs-vertical { - width: 150px; - border-right: 1px solid rgba(120, 130, 140, .13); - display: table-cell; - vertical-align: top -} - -.vtabs .tabs-vertical li a { - color: #2b2b2b; - margin-bottom: 10px; -} - -.vtabs .tab-content { - display: table-cell; - padding: 20px; - vertical-align: top -} - -.tabs-vertical li.active a, -.tabs-vertical li.active a:focus, -.tabs-vertical li.active a:hover { - background: #ff6849; - border: 0; - border-right: 2px solid #ff6849; - margin-right: -1px; - color: #fff -} - -.customvtab .tabs-vertical li.active a, -.customvtab .tabs-vertical li.active a:focus, -.customvtab .tabs-vertical li.active a:hover { - background: #fff; - border: 0; - border-right: 2px solid #ff6849; - margin-right: -1px; - color: #2b2b2b -} - -.nav-pills>li.active>a, -.nav-pills>li.active>a:focus, -.nav-pills>li.active>a:hover { - background: #ff6849; - color: #fff -} - -.nav-pills>li>a { - color: #2b2b2b; - border-radius: 0; -} - -.panel-group .panel .panel-heading .accordion-toggle.collapsed:before, -.panel-group .panel .panel-heading a[data-toggle=collapse].collapsed:before { - content: '\e64b' -} - -.panel-group .panel .panel-heading a[data-toggle=collapse] { - display: block -} - -.panel-group .panel .panel-heading a[data-toggle=collapse]:before { - content: '\e648'; - display: block; - float: right; - font-family: themify; - font-size: 14px; - text-align: right; - width: 25px; -} - -.panel-group .panel .panel-heading .accordion-toggle { - display: block -} - -.panel-group .panel .panel-heading .accordion-toggle:before { - content: '\e648'; - display: block; - float: right; - font-family: themify; - font-size: 14px; - text-align: right; - width: 25px; -} - -.panel-group .panel .panel-heading+.panel-collapse .panel-body { - border-top: none; -} - -.panel-group .panel-heading { - padding: 12px 20px; -} - -.progress { - -webkit-box-shadow: none !important; - background-color: rgba(120, 130, 140, .13); - box-shadow: none !important; - height: 4px; - border-radius: 0; - margin-bottom: 18px; - overflow: hidden -} - -.progress-bar { - box-shadow: none; - font-size: 8px; - font-weight: 600; - line-height: 12px; -} - -.progress.progress-sm { - height: 8px !important; -} - -.progress.progress-sm .progress-bar { - font-size: 8px; - line-height: 5px; -} - -.progress.progress-md { - height: 15px !important; -} - -.progress.progress-md .progress-bar { - font-size: 10.8px; - line-height: 14.4px; -} - -.progress.progress-lg { - height: 20px !important; -} - -.progress.progress-lg .progress-bar { - font-size: 12px; - line-height: 20px; -} - -.progress-bar-primary { - background-color: #ab8ce4 -} - -.progress-bar-success { - background-color: #00c292; -} - -.progress-bar-info { - background-color: #03a9f3; -} - -.progress-bar-megna { - background-color: #01c0c8; -} - -.progress-bar-warning { - background-color: #fec107 -} - -.progress-bar-danger { - background-color: #fb9678; -} - -.progress-bar-inverse { - background-color: #4c5667 -} - -.progress-bar-purple { - background-color: #9675ce; -} - -.progress-bar-custom { - background-color: #03a9f3; -} - -.progress-animated { - -webkit-animation-duration: 5s; - -webkit-animation-name: myanimation; - -webkit-transition: 5s all; - animation-duration: 5s; - animation-name: myanimation; - transition: 5s all -} - -@-webkit-keyframes myanimation { - from { - width: 0 - } -} - -@keyframes myanimation { - from { - width: 0 - } -} - -.progress-vertical { - min-height: 250px; - height: 250px; - width: 4px; - position: relative; - display: inline-block; - margin-bottom: 0; - margin-right: 20px; -} - -.progress-vertical .progress-bar { - width: 100%; -} - -.progress-vertical-bottom { - min-height: 250px; - height: 250px; - position: relative; - width: 4px; - display: inline-block; - margin-bottom: 0; - margin-right: 20px; -} - -.progress-vertical-bottom .progress-bar { - width: 100%; - position: absolute; - bottom: 0; -} - -.progress-vertical-bottom.progress-sm, -.progress-vertical.progress-sm { - width: 8px !important; -} - -.progress-vertical-bottom.progress-sm .progress-bar, -.progress-vertical.progress-sm .progress-bar { - font-size: 8px; - line-height: 5px; -} - -.progress-vertical-bottom.progress-md, -.progress-vertical.progress-md { - width: 15px !important; -} - -.progress-vertical-bottom.progress-md .progress-bar, -.progress-vertical.progress-md .progress-bar { - font-size: 10.8px; - line-height: 14.4px; -} - -.progress-vertical-bottom.progress-lg, -.progress-vertical.progress-lg { - width: 20px !important; -} - -.progress-vertical-bottom.progress-lg .progress-bar, -.progress-vertical.progress-lg .progress-bar { - font-size: 12px; - line-height: 20px; -} - -.timeline { - position: relative; - padding: 20px 0; - list-style: none; - max-width: 1200px; - margin: 0 auto -} - -.timeline:before { - content: " "; - position: absolute; - top: 0; - bottom: 0; - left: 50%; - width: 3px; - margin-left: -1.5px; - background-color: #eee; -} - -.timeline>li { - position: relative; - margin-bottom: 20px; -} - -.timeline>li:after, -.timeline>li:before { - content: " "; - display: table; -} - -.timeline>li:after { - clear: both -} - -.timeline>li>.timeline-panel { - float: left; - position: relative; - width: 46%; - padding: 20px; - border: 1px solid rgba(120, 130, 140, .13); - border-radius: 0; - -webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, .05); - box-shadow: 0 1px 6px rgba(0, 0, 0, .05); -} - -.timeline>li>.timeline-panel:before { - content: " "; - display: inline-block; - position: absolute; - top: 26px; - right: -8px; - border-top: 8px solid transparent; - border-right: 0 solid rgba(120, 130, 140, .13); - border-bottom: 8px solid transparent; - border-left: 8px solid rgba(120, 130, 140, .13); -} - -.timeline>li>.timeline-panel:after { - content: " "; - display: inline-block; - position: absolute; - top: 27px; - right: -7px; - border-top: 7px solid transparent; - border-right: 0 solid #fff; - border-bottom: 7px solid transparent; - border-left: 7px solid #fff -} - -.timeline>li>.timeline-badge { - z-index: 100; - position: absolute; - top: 16px; - left: 50%; - width: 50px; - height: 50px; - margin-left: -25px; - border-radius: 50%; - text-align: center; - font-size: 1.4em; - line-height: 50px; - color: #fff; - overflow: hidden; - background-color: #4c5667 -} - -.timeline>li.timeline-inverted>.timeline-panel { - float: right; -} - -.timeline>li.timeline-inverted>.timeline-panel:before { - right: auto; - left: -8px; - border-right-width: 8px; - border-left-width: 0; -} - -.timeline>li.timeline-inverted>.timeline-panel:after { - right: auto; - left: -7px; - border-right-width: 7px; - border-left-width: 0; -} - -.timeline-badge.primary { - background-color: #ab8ce4 !important; -} - -.timeline-badge.success { - background-color: #00c292 !important; -} - -.timeline-badge.warning { - background-color: #fec107 !important; -} - -.timeline-badge.danger { - background-color: #fb9678 !important; -} - -.timeline-badge.info { - background-color: #03a9f3 !important; -} - -.timeline-title { - margin-top: 0; - color: inherit; - font-weight: 400; -} - -.timeline-body>p, -.timeline-body>ul { - margin-bottom: 0; -} - -.timeline-body>p+p { - margin-top: 5px; -} - -.chart { - position: relative; - display: inline-block; - width: 100px; - height: 100px; - margin-top: 20px; - margin-bottom: 20px; - text-align: center -} - -.chart canvas { - position: absolute; - top: 0; - left: 0; -} - -.chart.chart-widget-pie { - margin-top: 5px; - margin-bottom: 5px; -} - -.pie-chart>span { - left: 0; - margin-top: -2px; - position: absolute; - right: 0; - text-align: center; - top: 50%; - transform: translateY(-50%); -} - -.chart>span>img { - left: 0; - position: absolute; - right: 0; - text-align: center; - top: 50%; - width: 60%; - height: 60%; - transform: translateY(-50%); - margin: 0 auto -} - -.percent { - display: inline-block; - line-height: 100px; - z-index: 2; - font-weight: 600; - font-size: 18px; - color: #2b2b2b -} - -.percent:after { - content: '%'; - margin-left: .1em; - font-size: .8em -} - -.table { - margin-bottom: 10px; -} - -.table-hover>tbody>tr:hover, -.table-striped>tbody>tr:nth-of-type(odd), -.table>tbody>tr.active>td, -.table>tbody>tr.active>th, -.table>tbody>tr>td.active, -.table>tbody>tr>th.active, -.table>tfoot>tr.active>td, -.table>tfoot>tr.active>th, -.table>tfoot>tr>td.active, -.table>tfoot>tr>th.active, -.table>thead>tr.active>td, -.table>thead>tr.active>th, -.table>thead>tr>td.active, -.table>thead>tr>th.active { - background-color: #f7fafc !important; -} - -.table-bordered, -.table>tbody>tr>td, -.table>tbody>tr>th, -.table>tfoot>tr>td, -.table>tfoot>tr>th, -.table>thead>tr>td, -.table>thead>tr>th { - border-top: 1px solid #e4e7ea -} - -.table>tbody>tr>td, -.table>tbody>tr>th, -.table>tfoot>tr>td, -.table>tfoot>tr>th, -.table>thead>tr>td, -.table>thead>tr>th { - /*padding:15px 8px; Davis*/ - padding: 10px 5px; -} - -.table-bordered>tbody>tr>td, -.table-bordered>tbody>tr>th, -.table-bordered>tfoot>tr>td, -.table-bordered>tfoot>tr>th, -.table-bordered>thead>tr>td, -.table-bordered>thead>tr>th { - border: 1px solid #e4e7ea -} - -.table>thead>tr>th { - vertical-align: bottom; - border-bottom: 1px solid #e4e7ea -} - -tbody { - color: #797979; -} - -th { - color: #666; - font-weight: 500; -} - -.table-bordered { - border: 1px solid #e4e7ea -} - -table.focus-on tbody tr.focused td, -table.focus-on tbody tr.focused th { - background-color: #ff6849; - color: #fff -} - -.table-rep-plugin .table-responsive { - border: none !important; -} - -.table-rep-plugin tbody th { - font-size: 14px; - font-weight: 400; -} - -.jsgrid .jsgrid-table { - margin-bottom: 0; -} - -.jsgrid-selected-row>td { - background: #f7fafc; - border-color: #f7fafc -} - -.jsgrid-header-row>th { - background: #fff -} - -.footable-odd { - background-color: #f7fafc -} - -.form-control-line { - border-left: 0 none; - border-radius: 0; - border-right: 0 none; - border-top: 0 none; - box-shadow: none; - padding-left: 0; -} - -.has-success .form-control { - border-color: #00c292; - box-shadow: none !important; -} - -.has-warning .form-control { - border-color: #fec107; - box-shadow: none !important; -} - -.has-error .form-control { - border-color: #fb9678; - box-shadow: none !important; -} - -.input-group-addon { - border-radius: 2px; - border: 1px solid rgba(120, 130, 140, .13); -} - -.input-daterange input:first-child, -.input-daterange input:last-child { - border-radius: 0; -} - -.form-material .form-group { - overflow: hidden -} - -.form-material .form-control { - background-color: rgba(0, 0, 0, 0); - background-position: center bottom, center calc(99%); - background-repeat: no-repeat; - background-size: 0 2px, 100% 1px; - padding: 0; - transition: background 0s ease-out 0s -} - -.form-material .form-control, -.form-material .form-control.focus, -.form-material .form-control:focus { - background-image: linear-gradient(#9675ce, #9675ce), linear-gradient(rgba(120, 130, 140, .13), rgba(120, 130, 140, .13)); - border: 0; - border-radius: 0; - box-shadow: none; - float: none; -} - -.form-material .form-control.focus, -.form-material .form-control:focus { - background-size: 100% 2px, 100% 1px; - outline: 0; - transition-duration: .3s -} - -.form-bordered .form-group { - border-bottom: 1px solid rgba(120, 130, 140, .13); - padding-bottom: 20px; -} - -.select2-container .select2-choice { - background-image: none !important; - border: none !important; - height: auto !important; - padding: 0 !important; - line-height: 22px !important; - background-color: transparent !important; - box-shadow: none !important; -} - -.select2-container .select2-choice .select2-arrow { - background-image: none !important; - background: 0 0; - border: none; - width: 14px; - top: -2px; -} - -.select2-container .select2-container-multi.form-control { - height: auto -} - -.select2-results .select2-highlighted { - color: #fff; - background-color: #03a9f3; -} - -.select2-drop-active { - border: 1px solid #e3e3e3 !important; - padding-top: 5px; -} - -.select2-search input { - border: 1px solid rgba(120, 130, 140, .13); -} - -.select2-container-multi { - width: 100%; -} - -.select2-container-multi .select2-choices { - border: 1px solid #border !important; - box-shadow: none !important; - background-image: none !important; - border-radius: 0 !important; - min-height: 38px; -} - -.select2-container-multi .select2-choices .select2-search-choice { - padding: 4px 7px 4px 18px; - margin: 5px 0 3px 5px; - color: #555; - background: #f5f5f5; - border-color: rgba(120, 130, 140, .13); - -webkit-box-shadow: none; - box-shadow: none; -} - -.select2-container-multi .select2-choices .select2-search-field input { - padding: 7px 7px 7px 10px; - font-family: inherit; -} - -.icon-list-demo div { - cursor: pointer; - line-height: 60px; - white-space: nowrap; - color: #686868; -} - -.icon-list-demo div:hover { - color: #2b2b2b -} - -.icon-list-demo div p { - margin: 10px 0; - padding: 5px 0; -} - -.icon-list-demo i { - -webkit-transition: all .2s; - -webkit-transition: font-size .2s; - display: inline-block; - font-size: 18px; - margin: 0 15px 0 10px; - text-align: left; - vertical-align: middle; - width: auto; - transition: all .3s ease 0s -} - -.icon-list-demo .col-md-4 { - border-radius: 0; -} - -.icon-list-demo .col-md-4:hover { - background-color: #f7fafc -} - -.icon-list-demo .col-md-4:hover i { - font-size: 2em -} - -.gmaps, -.gmaps-panaroma { - height: 300px; - background: #e4e7ea; - border-radius: 3px; -} - -.gmaps-overlay { - display: block; - text-align: center; - color: #fff; - font-size: 16px; - line-height: 40px; - background: #ab8ce4; - border-radius: 4px; - padding: 10px 20px; -} - -.gmaps-overlay_arrow { - left: 50%; - margin-left: -16px; - width: 0; - height: 0; - position: absolute; -} - -.gmaps-overlay_arrow.above { - bottom: -15px; - border-left: 16px solid transparent; - border-right: 16px solid transparent; - border-top: 16px solid #ab8ce4 -} - -.gmaps-overlay_arrow.below { - top: -15px; - border-left: 16px solid transparent; - border-right: 16px solid transparent; - border-bottom: 16px solid #ab8ce4 -} - -.jvectormap-zoomin, -.jvectormap-zoomout { - width: 10px; - height: 10px; - line-height: 10px; -} - -.jvectormap-zoomout { - top: 40px; -} - -.error-box { - height: 100%; - position: fixed; - background: url(../images/error-bg.jpg) center center no-repeat #fff !important; - width: 100%; -} - -.error-box .footer { - width: 100%; - left: 0; - right: 0; -} - -.error-body { - padding-top: 5%; -} - -.error-body h1 { - font-size: 210px; - font-weight: 900; - line-height: 210px; -} - -.login-register { - height: 100%; - position: fixed -} - -.login-box { - background: #fff; - width: 400px; - margin: 10% auto 0; -} - -.login-box .footer { - width: 100%; - left: 0; - right: 0; -} - -.login-box .social { - display: block; - margin-bottom: 30px; -} - -#recoverform { - display: none; -} - -.pricing-box { - position: relative; - text-align: center; - margin-top: 30px; -} - -.featured-plan { - margin-top: 0; -} - -.featured-plan .pricing-body { - padding: 60px 0; - background: #f7fafc; - border: 1px solid #ddd -} - -.featured-plan .price-table-content .price-row { - border-top: 1px solid rgba(120, 130, 140, .13); -} - -.pricing-body { - border-radius: 0; - border-top: 1px solid rgba(120, 130, 140, .13); - border-bottom: 5px solid rgba(120, 130, 140, .13); - vertical-align: middle; - padding: 30px 0; - position: relative; -} - -.pricing-body h2 { - position: relative; - font-size: 56px; - margin: 20px 0 10px; - font-weight: 700; -} - -.pricing-body h2 span { - position: absolute; - font-size: 15px; - top: -10px; - margin-left: -10px; -} - -.price-table-content .price-row { - padding: 20px 0; - border-top: 1px solid rgba(120, 130, 140, .13); -} - -.pricing-plan { - padding: 0 15px; -} - -.pricing-plan .no-padding { - padding: 0; -} - -.price-lable { - position: absolute; - top: -10px; - padding: 5px 10px; - margin: 0 auto; - display: inline-block; - width: 100px; - left: 0; - right: 0; -} - -.mails a { - color: #2b2b2b -} - -.mails td { - vertical-align: middle !important; - position: relative; -} - -.mails td:last-of-type { - width: 100px; - padding-right: 20px; -} - -.mails tr:hover .text-white { - display: none; -} - -.mails .mail-select { - padding: 12px 20px; - min-width: 134px; -} - -.mails .checkbox { - margin-bottom: 0; - margin-top: 0; - vertical-align: middle; - display: inline-block; - height: 17px; -} - -.mails .checkbox label { - min-height: 16px; -} - -.mail-list .list-group-item { - background-color: transparent; - border: 0; - border-left: 3px solid #fff; - border-radius: 0; -} - -.mail-list .list-group-item:hover { - background: #f7fafc; - border-left: 3px solid #f7fafc -} - -.mail-list .list-group-item:focus { - border-left: 3px solid #f7fafc -} - -.mail-list .list-group-item.active:focus { - background: #f7fafc; - border-left: 3px solid #fb9678; -} - -.mail-list .list-group-item.active { - border-left: 3px solid #fb9678; - border-radius: 0; - color: #2b2b2b !important; -} - -.mail_listing { - min-height: 500px; -} - -.inbox_listing .inbox-item:hover { - background: #f7fafc -} - -.inbox_listing .inbox-item { - padding-left: 20px; -} - -.inbox-widget.inbox_listing .inbox-item .inbox-item-text { - height: 19px; - overflow: hidden -} - -.message-center .unread .mail-contnet .mail-desc, -.message-center .unread .mail-contnet h5 { - font-weight: 600; - color: #2b2b2b !important; -} - -.calendar { - float: left; - margin-bottom: 0; -} - -.fc-view { - margin-top: 30px; -} - -.none-border .modal-footer { - border-top: none; -} - -.fc-toolbar { - margin-bottom: 5px; - margin-top: 15px; -} - -.fc-toolbar h2 { - font-size: 18px; - font-weight: 600; - line-height: 30px; - text-transform: uppercase; -} - -.fc-day { - background: #fff -} - -.fc-toolbar .fc-state-active, -.fc-toolbar .ui-state-active, -.fc-toolbar .ui-state-hover, -.fc-toolbar button:focus, -.fc-toolbar button:hover { - z-index: 0; -} - -.fc-widget-header { - border: 0 !important; -} - -.fc-widget-content { - border-color: rgba(120, 130, 140, .13) !important; -} - -.fc th.fc-widget-header { - background: #9675ce; - color: #fff; - font-size: 14px; - line-height: 20px; - padding: 7px 0; - text-transform: uppercase; -} - -.fc-button { - background: #fff; - border: 1px solid rgba(120, 130, 140, .13); - color: #555; - text-transform: capitalize; -} - -.fc-text-arrow { - font-family: inherit; - font-size: 16px; -} - -.fc-state-hover { - background: #F5F5F5 -} - -.fc-unthemed .fc-today { - border: 1px solid #fb9678; - background: #fcf8e3 !important; -} - -.fc-cell-overlay, -.fc-state-highlight { - background: #f0f0f0; -} - -.fc-event { - border-radius: 0; - border: none; - cursor: move; - font-size: 13px; - margin: 1px -1px 0; - padding: 5px; - text-align: center; - background: #03a9f3; -} - -.calendar-event { - cursor: move; - margin: 10px 5px 0 0; - padding: 6px 10px; - display: inline-block; - color: #fff; - min-width: 140px; - text-align: center; - background: #03a9f3; -} - -.calendar-event a { - float: right; - opacity: .6; - font-size: 10px; - margin: 4px 0 0 10px; - color: #fff -} - -.fc-basic-view td.fc-day-number, -.fc-basic-view td.fc-week-number span { - padding-right: 5px; -} - -.weather h1 { - color: #fff; - font-size: 50px; - font-weight: 100; -} - -.weather i { - color: #fff; - font-size: 40px; -} - -.weather .w-title-sub { - color: rgba(255, 255, 255, .6); -} - -.navbar-top-links>li.right-side-toggle a:focus { - background: #4f5467 -} - -.right-sidebar { - position: fixed; - right: -240px; - width: 240px; - display: none; - z-index: 1000; - background: #fff; - top: 0; - height: 100%; - box-shadow: 5px 1px 40px rgba(0, 0, 0, .1); - transition: all .3s ease; -} - -.right-sidebar .rpanel-title { - display: block; - padding: 21px; - color: #fff; - text-transform: uppercase; - font-size: 13px; - background: #ff6849; -} - -.right-sidebar .rpanel-title span { - float: right; - cursor: pointer; - font-size: 11px; -} - -.right-sidebar .rpanel-title span:hover { - color: #2b2b2b -} - -.right-sidebar .r-panel-body { - padding: 20px; -} - -.right-sidebar .r-panel-body ul { - margin: 0; - padding: 0; -} - -.right-sidebar .r-panel-body ul li { - list-style: none; - padding: 5px 0; -} - -.shw-rside { - right: 0; - width: 240px; - display: block -} - -.chatonline img { - margin-right: 10px; - float: left; - width: 30px; -} - -.chatonline li a { - padding: 15px 0; - float: left; - width: 100%; -} - -.chatonline li a span { - color: #686868; -} - -.chatonline li a span small { - display: block; - font-size: 10px; -} - -ul#themecolors { - display: block -} - -ul#themecolors li { - display: inline-block -} - -ul#themecolors li:first-child { - display: block -} - -#themecolors li a { - width: 50px; - height: 50px; - display: inline-block; - margin: 5px; - color: transparent; - position: relative; -} - -#themecolors li a.working:before { - content: "\f00c"; - font-family: FontAwesome; - font-size: 18px; - line-height: 50px; - width: 50px; - height: 50px; - position: absolute; - top: 0; - left: 0; - color: #fff; - text-align: center -} - -.default-theme { - background: #fb9678; -} - -.green-theme { - background: #00c292; -} - -.yellow-theme { - background: #a0aec4 -} - -.blue-theme { - background: #03a9f3; -} - -.purple-theme { - background: #9675ce; -} - -.megna-theme { - background: #01c0c8; -} - -.default-dark-theme { - background: #4f5467; - background: -moz-linear-gradient(left, #4f5467 0, #4f5467 23%, #fb9678 23%, #fb9678 99%); - background: -webkit-linear-gradient(left, #4f5467 0, #4f5467 23%, #fb9678 23%, #fb9678 99%); - background: linear-gradient(to right, #4f5467 0, #4f5467 23%, #fb9678 23%, #fb9678 99%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f5467', endColorstr='@danger', GradientType=1); -} - -.green-dark-theme { - background: #4f5467; - background: -moz-linear-gradient(left, #4f5467 0, #4f5467 23%, #00c292 23%, #00c292 99%); - background: -webkit-linear-gradient(left, #4f5467 0, #4f5467 23%, #00c292 23%, #00c292 99%); - background: linear-gradient(to right, #4f5467 0, #4f5467 23%, #00c292 23%, #00c292 99%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f5467', endColorstr='@success', GradientType=1); -} - -.yellow-dark-theme { - background: #4f5467; - background: -moz-linear-gradient(left, #4f5467 0, #4f5467 23%, #a0aec4 23%, #a0aec4 99%); - background: -webkit-linear-gradient(left, #4f5467 0, #4f5467 23%, #a0aec4 23%, #a0aec4 99%); - background: linear-gradient(to right, #4f5467 0, #4f5467 23%, #a0aec4 23%, #a0aec4 99%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f5467', endColorstr='@yellow', GradientType=1); -} - -.blue-dark-theme { - background: #4f5467; - background: -moz-linear-gradient(left, #4f5467 0, #4f5467 23%, #03a9f3 23%, #03a9f3 99%); - background: -webkit-linear-gradient(left, #4f5467 0, #4f5467 23%, #03a9f3 23%, #03a9f3 99%); - background: linear-gradient(to right, #4f5467 0, #4f5467 23%, #03a9f3 23%, #03a9f3 99%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f5467', endColorstr='@info', GradientType=1); -} - -.purple-dark-theme { - background: #4f5467; - background: -moz-linear-gradient(left, #4f5467 0, #4f5467 23%, #9675ce 23%, #9675ce 99%); - background: -webkit-linear-gradient(left, #4f5467 0, #4f5467 23%, #9675ce 23%, #9675ce 99%); - background: linear-gradient(to right, #4f5467 0, #4f5467 23%, #9675ce 23%, #9675ce 99%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f5467', endColorstr='@purple', GradientType=1); -} - -.megna-dark-theme { - background: #4f5467; - background: -moz-linear-gradient(left, #4f5467 0, #4f5467 23%, #01c0c8 23%, #01c0c8 99%); - background: -webkit-linear-gradient(left, #4f5467 0, #4f5467 23%, #01c0c8 23%, #01c0c8 99%); - background: linear-gradient(to right, #4f5467 0, #4f5467 23%, #01c0c8 23%, #01c0c8 99%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f5467', endColorstr='@megna', GradientType=1); -} - -.visited li a { - color: #686868; -} - -.visited li.active a { - color: #ff6849; -} - -.stats-row { - margin-bottom: 20px; -} - -.stat-item { - display: inline-block; - padding-right: 15px; -} - -.stat-item+.stat-item { - padding-left: 15px; - border-left: 1px solid #eee; -} - -.country-state { - list-style: none; - margin: 0; - padding: 0 0 0 10px; -} - -.country-state h2 { - margin: 0; -} - -.country-state .progress { - margin-top: 8px; -} - -.two-part li { - width: 48.8%; -} - -.two-part li i { - font-size: 50px; -} - -.two-part li span { - font-size: 50px; - font-weight: 100; - font-family: Poppins, sans-serif -} - -.news-slide { - position: relative; -} - -.news-slide .overlaybg { - height: 360px; - overflow: hidden -} - -.news-slide .overlaybg img { - width: 100%; - height: 100%; -} - -.news-slide .news-content { - position: absolute; - height: 360px; - background: rgba(0, 0, 0, .5); - z-index: 10; - width: 100%; - top: 0; - padding: 30px; -} - -.news-slide .news-content h2 { - height: 240px; - overflow: hidden; - color: #fff -} - -.news-slide .news-content a { - color: #fff; - opacity: .6; - text-transform: uppercase; -} - -.news-slide .news-content a:hover { - opacity: 1 -} - -.nav-pills-rounded li { - display: inline-block; - float: none; -} - -.nav-pills-rounded li a { - border-radius: 60px; - -moz-border-radius: 60px; - -webkit-border-radius: 60px; - color: #686868; - padding: 10px 25px; -} - -.nav-pills-rounded li.active a, -.nav-pills-rounded li.active a:focus, -.nav-pills-rounded li.active a:hover { - background: #ff6849; - color: #fff -} - -.analytics-info .list-inline { - margin-bottom: 0; -} - -.analytics-info .list-inline li { - vertical-align: middle; -} - -.analytics-info .list-inline li span { - font-size: 24px; -} - -.analytics-info .list-inline li i { - font-size: 20px; -} - -.feeds { - margin: 0; - padding: 0; -} - -.feeds li { - list-style: none; - padding: 10px; - display: block -} - -.feeds li:hover { - background: #f7fafc -} - -.feeds li>div { - width: 40px; - height: 40px; - margin-right: 5px; - display: inline-block; - text-align: center; - vertical-align: middle; - border-radius: 100%; -} - -.feeds li>div i { - line-height: 40px; -} - -.feeds li span { - float: right; - width: auto; - font-size: 12px; -} - -.jq-icon-info { - background-color: #01c0c8; - color: #fff -} - -.jq-icon-success { - background-color: #00c292; - color: #fff -} - -.jq-icon-error { - background-color: #fb9678; - color: #fff -} - -.jq-icon-warning { - background-color: #fec107; - color: #fff -} - -.dropzone { - border-style: dashed; - border-width: 1px; -} - -.weather h1 sup { - font-size: 20px; - top: -1.2em -} - -.fcbtn { - position: relative; - -webkit-transition: all .3s; - -moz-transition: all .3s; - transition: all .3s; - padding: 8px 20px; -} - -.fcbtn:after { - content: ''; - position: absolute; - z-index: -1; - -webkit-transition: all .3s; - -moz-transition: all .3s; - transition: all .3s -} - -.btn-1b:after { - width: 100%; - height: 0; - top: 0; - left: 0; -} - -.btn-1b:active, -.btn-1b:hover { - color: #fff -} - -.btn-1b:active:after, -.btn-1b:hover:after { - height: 100%; -} - -.btn-1b.btn-info:after, -.btn-1c.btn-info:after, -.btn-1d.btn-info:after, -.btn-1e.btn-info:after, -.btn-1f.btn-info:after { - background: #03a9f3; -} - -.btn-1b.btn-warning:after, -.btn-1c.btn-warning:after, -.btn-1d.btn-warning:after, -.btn-1e.btn-warning:after, -.btn-1f.btn-warning:after { - background: #fec107 -} - -.btn-1b.btn-danger:after, -.btn-1c.btn-danger:after, -.btn-1d.btn-danger:after, -.btn-1e.btn-danger:after, -.btn-1f.btn-danger:after { - background: #fb9678; -} - -.btn-1b.btn-primary:after, -.btn-1c.btn-primary:after, -.btn-1d.btn-primary:after, -.btn-1e.btn-primary:after, -.btn-1f.btn-primary:after { - background: #9675ce; -} - -.btn-1b.btn-success:after, -.btn-1c.btn-success:after, -.btn-1d.btn-success:after, -.btn-1e.btn-success:after, -.btn-1f.btn-success:after { - background: #00c292; -} - -.btn-1b.btn-inverse:after, -.btn-1c.btn-inverse:after, -.btn-1d.btn-inverse:after, -.btn-1e.btn-inverse:after, -.btn-1f.btn-inverse:after { - background: #4c5667 -} - -.btn-1c:after { - width: 0; - height: 100%; - top: 0; - left: 0; -} - -.btn-1c:active, -.btn-1c:hover { - color: #000; -} - -.btn-1c:active:after, -.btn-1c:hover:after { - width: 100%; -} - -.btn-1d { - overflow: hidden -} - -.btn-1d:after { - width: 0; - height: 103%; - top: 50%; - left: 50%; - opacity: 0; - -webkit-transform: translateX(-50%) translateY(-50%); - -moz-transform: translateX(-50%) translateY(-50%); - -ms-transform: translateX(-50%) translateY(-50%); - transform: translateX(-50%) translateY(-50%); -} - -.btn-1d:hover:after { - width: 100%; - opacity: 1 -} - -.btn-1e { - overflow: hidden -} - -.btn-1e:after { - width: 100%; - height: 0; - top: 50%; - left: 50%; - background: #fff; - opacity: 0; - -webkit-transform: translateX(-50%) translateY(-50%) rotate(45deg); - -moz-transform: translateX(-50%) translateY(-50%) rotate(45deg); - -ms-transform: translateX(-50%) translateY(-50%) rotate(45deg); - transform: translateX(-50%) translateY(-50%) rotate(45deg); -} - -.btn-1e:hover:after { - height: 260%; - opacity: 1 -} - -.btn-1e:active:after { - height: 400%; - opacity: 1 -} - -.btn-1f { - overflow: hidden -} - -.btn-1f:after { - width: 101%; - height: 0; - top: 50%; - left: 50%; - background: #fff; - opacity: 0; - -webkit-transform: translateX(-50%) translateY(-50%); - -moz-transform: translateX(-50%) translateY(-50%); - -ms-transform: translateX(-50%) translateY(-50%); - transform: translateX(-50%) translateY(-50%); -} - -.btn-1f:hover:after { - height: 100%; - opacity: 1 -} - -.btn-1f:active:after { - height: 130%; - opacity: 1 -} - -.sweet-alert { - padding: 25px; -} - -.sweet-alert h2 { - margin-top: 0; -} - -.sweet-alert p { - line-height: 30px; -} - -ul.list-icons { - margin: 0; - padding: 0; -} - -ul.list-icons li { - list-style: none; - line-height: 40px; -} - -ul.list-icons li i { - font-size: 12px; - margin-right: 5px; -} - -.demo-popover .popover, -.demo-tooltip .tooltip { - position: relative; - margin-right: 25px; - opacity: 1; - display: inline-block -} - -.tooltip-inner { - border-radius: 3px; - padding: 5px 10px; -} - -.tooltip.in { - opacity: 1 -} - -.tooltip-primary+.tooltip .tooltip-inner, -.tooltip-primary.tooltip .tooltip-inner { - color: #fff; - background-color: #ab8ce4 -} - -.tooltip-primary+.tooltip.top .tooltip-arrow, -.tooltip-primary.tooltip.top .tooltip-arrow { - border-top-color: #ab8ce4 -} - -.tooltip-primary+.tooltip.right .tooltip-arrow, -.tooltip-primary.tooltip.right .tooltip-arrow { - border-right-color: #ab8ce4 -} - -.tooltip-primary+.tooltip.bottom .tooltip-arrow, -.tooltip-primary.tooltip.bottom .tooltip-arrow { - border-bottom-color: #ab8ce4 -} - -.tooltip-primary+.tooltip.left .tooltip-arrow, -.tooltip-primary.tooltip.left .tooltip-arrow { - border-left-color: #ab8ce4 -} - -.tooltip-success+.tooltip .tooltip-inner, -.tooltip-success.tooltip .tooltip-inner { - color: #fff; - background-color: #00c292; -} - -.tooltip-success+.tooltip.top .tooltip-arrow, -.tooltip-success.tooltip.top .tooltip-arrow { - border-top-color: #00c292; -} - -.tooltip-success+.tooltip.right .tooltip-arrow, -.tooltip-success.tooltip.right .tooltip-arrow { - border-right-color: #00c292; -} - -.tooltip-success+.tooltip.bottom .tooltip-arrow, -.tooltip-success.tooltip.bottom .tooltip-arrow { - border-bottom-color: #00c292; -} - -.tooltip-success+.tooltip.left .tooltip-arrow, -.tooltip-success.tooltip.left .tooltip-arrow { - border-left-color: #00c292; -} - -.tooltip-warning+.tooltip .tooltip-inner, -.tooltip-warning.tooltip .tooltip-inner { - color: #fff; - background-color: #fec107 -} - -.tooltip-warning+.tooltip.top .tooltip-arrow, -.tooltip-warning.tooltip.top .tooltip-arrow { - border-top-color: #fec107 -} - -.tooltip-warning+.tooltip.right .tooltip-arrow, -.tooltip-warning.tooltip.right .tooltip-arrow { - border-right-color: #fec107 -} - -.tooltip-warning+.tooltip.bottom .tooltip-arrow, -.tooltip-warning.tooltip.bottom .tooltip-arrow { - border-bottom-color: #fec107 -} - -.tooltip-warning+.tooltip.left .tooltip-arrow, -.tooltip-warning.tooltip.left .tooltip-arrow { - border-left-color: #fec107 -} - -.tooltip-info+.tooltip .tooltip-inner, -.tooltip-info.tooltip .tooltip-inner { - color: #fff; - background-color: #03a9f3; -} - -.tooltip-info+.tooltip.top .tooltip-arrow, -.tooltip-info.tooltip.top .tooltip-arrow { - border-top-color: #03a9f3; -} - -.tooltip-info+.tooltip.right .tooltip-arrow, -.tooltip-info.tooltip.right .tooltip-arrow { - border-right-color: #03a9f3; -} - -.tooltip-info+tooltip.bottom .tooltip-arrow, -.tooltip-info.tooltip.bottom .tooltip-arrow { - border-bottom-color: #03a9f3; -} - -.tooltip-info+.tooltip.left .tooltip-arrow, -.tooltip-info.tooltip.left .tooltip-arrow { - border-left-color: #03a9f3; -} - -.tooltip-danger+.tooltip .tooltip-inner, -.tooltip-danger.tooltip .tooltip-inner { - color: #fff; - background-color: #fb9678; -} - -.tooltip-danger+.tooltip.top .tooltip-arrow, -.tooltip-danger.tooltip.top .tooltip-arrow { - border-top-color: #fb9678; -} - -.tooltip-danger+.tooltip.right .tooltip-arrow, -.tooltip-danger.tooltip.right .tooltip-arrow { - border-right-color: #fb9678; -} - -.tooltip-danger+.tooltip.bottom .tooltip-arrow, -.tooltip-danger.tooltip.bottom .tooltip-arrow { - border-bottom-color: #fb9678; -} - -.tooltip-danger+.tooltip.left .tooltip-arrow, -.tooltip-danger.tooltip.left .tooltip-arrow { - border-left-color: #fb9678; -} - -.flotTip { - padding: 8px 12px; - background-color: #2b2b2b; - z-index: 100; - color: #fff; - opacity: .9; - font-size: 13px; -} - -.popover { - -webkit-box-shadow: 0 2px 6px rgba(0, 0, 0, .05); - box-shadow: 0 2px 6px rgba(0, 0, 0, .05); -} - -.popover .popover-title { - border-radius: 0; -} - -.popover-primary+.popover .popover-title { - color: #fff; - background-color: #ab8ce4; - border-color: #ab8ce4 -} - -.popover-primary+.popover.bottom .arrow, -.popover-primary+.popover.bottom .arrow:after { - border-bottom-color: #ab8ce4 -} - -.popover-success+.popover .popover-title { - color: #fff; - background-color: #00c292; - border-color: #00c292; -} - -.popover-success+.popover.bottom .arrow, -.popover-success+.popover.bottom .arrow:after { - border-bottom-color: #00c292; -} - -.popover-info+.popover .popover-title { - color: #fff; - background-color: #03a9f3; - border-color: #03a9f3; -} - -.popover-info+.popover.bottom .arrow, -.popover-info+.popover.bottom .arrow:after { - border-bottom-color: #03a9f3; -} - -.popover-warning+.popover .popover-title { - color: #fff; - background-color: #fec107; - border-color: #fec107 -} - -.popover-warning+.popover.bottom .arrow, -.popover-warning+.popover.bottom .arrow:after { - border-bottom-color: #fec107 -} - -.popover-danger+.popover .popover-title { - color: #fff; - background-color: #fb9678; - border-color: #fb9678; -} - -.popover-danger+.popover.bottom .arrow, -.popover-danger+.popover.bottom .arrow:after { - border-bottom-color: #fb9678; -} - -.btn-file { - overflow: hidden; - position: relative; - vertical-align: middle; -} - -.btn-file>input { - position: absolute; - top: 0; - right: 0; - margin: 0; - opacity: 0; - filter: alpha(opacity=0); - font-size: 23px; - height: 100%; - width: 100%; - direction: ltr; - cursor: pointer; - border-radius: 0; -} - -.fileinput { - margin-bottom: 9px; - display: inline-block -} - -.fileinput .form-control { - padding-top: 7px; - padding-bottom: 5px; - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - cursor: text; -} - -.fileinput .thumbnail { - overflow: hidden; - display: inline-block; - margin-bottom: 5px; - vertical-align: middle; - text-align: center -} - -.fileinput .thumbnail>img { - max-height: 100%; -} - -.fileinput .btn { - vertical-align: middle; -} - -.fileinput-exists .fileinput-new, -.fileinput-new .fileinput-exists { - display: none; -} - -.fileinput-inline .fileinput-controls { - display: inline; -} - -.fileinput-filename { - vertical-align: middle; - display: inline-block; - overflow: hidden -} - -.form-control .fileinput-filename { - vertical-align: bottom -} - -.fileinput.input-group { - display: table; -} - -.fileinput.input-group>* { - position: relative; - z-index: 2; -} - -.fileinput.input-group>.btn-file { - z-index: 1 -} - -.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn) { - width: 100%; -} - -.ms-container .ms-list { - border-radius: 0; - box-shadow: none; -} - -.ms-container .ms-selectable li.ms-elem-selectable, -.ms-container .ms-selection li.ms-elem-selection { - padding: 6px 10px; -} - -.ms-container .ms-selectable li.ms-hover, -.ms-container .ms-selection li.ms-hover { - background: #03a9f3; -} - -.dropzone .dz-message { - text-align: center; - margin: 10% 0; -} - -.editable-input .form-control { - height: 30px; -} - -.asColorPicker-trigger { - position: absolute; - top: 0; - right: -35px; - height: 38px; - width: 37px; - border: 0; -} - -.asColorPicker-dropdown { - max-width: 260px; -} - -.asColorPicker-clear { - top: 7px; - right: 16px; -} - -.datepicker table tr td.today, -.datepicker table tr td.today.disabled, -.datepicker table tr td.today.disabled:hover, -.datepicker table tr td.today:hover { - background: #ff6849; - color: #fff -} - -.datepicker table tr td.active, -.datepicker table tr td.active.disabled, -.datepicker table tr td.active.disabled:hover, -.datepicker table tr td.active:hover { - background: #03a9f3; - color: #fff -} - -.editable-table+input.error { - border: 1px solid #danger; - outline: 0; - outline-offset: 0; -} - -#editable-datatable_wrapper+input:focus, -.editable-table+input, -.editable-table+input:focus { - border: 1px solid #03a9f3 !important; - outline: 0 !important; - outline-offset: 0 !important; -} - -.editable-table td:focus { - outline: 0; -} - -.wizard-steps { - display: table; - width: 100%; -} - -.wizard-steps>li { - display: table-cell; - padding: 10px 20px; - background: #f7fafc -} - -.wizard-steps>li span { - border-radius: 100%; - border: 1px solid rgba(120, 130, 140, .13); - width: 40px; - height: 40px; - display: inline-block; - vertical-align: middle; - padding-top: 9px; - margin-right: 8px; - text-align: center -} - -.wizard-content { - padding: 25px; - border-color: rgba(120, 130, 140, .13); - margin-bottom: 30px; -} - -.wizard-steps>li.current, -.wizard-steps>li.done { - background: #03a9f3; - color: #fff -} - -.wizard-steps>li.current span, -.wizard-steps>li.done span { - border-color: #fff; - color: #fff -} - -.wizard-steps>li.current h4, -.wizard-steps>li.done h4 { - color: #fff -} - -.wizard-steps>li.done { - background: #00c292; -} - -.wizard-steps>li.error { - background: #fb9678; -} - -.wiz-aco .pager { - margin: 0; -} - -.r-icon-stats i { - width: 66px; - height: 66px; - padding: 20px; - text-align: center; - color: #fff; - font-size: 24px; - display: inline-block; - border-radius: 100%; - vertical-align: top; - background: #01c0c8; -} - -.r-icon-stats .bodystate { - padding-left: 20px; - display: inline-block; - vertical-align: middle; -} - -.r-icon-stats .bodystate h4 { - margin-bottom: 0; -} - -.ecomm-donute svg text { - font-family: Poppins, sans-serif !important; - font-weight: 200 !important; - color: #686868 !important; -} - -.minus-mar { - margin: 40px -25px -27px; -} - -.sidebar { - overflow-y: auto -} - -.sidebar .sidebar-nav.navbar-collapse { - padding-left: 0; - padding-right: 0; -} - -.sidebar .fa-fw { - width: 20px; - text-align: left !important; - display: inline-block; - font-size: 16px; - vertical-align: middle; -} - -.sidebar .label { - font-size: 10px; - border-radius: 60px; - padding: 6px 8px; - min-width: 30px; - height: 20px; -} - -.sidebar #side-menu .user-pro a { - padding-left: 20px; -} - -.sidebar #side-menu .user-pro .nav-second-level a:hover { - color: #ff6849; -} - -.sidebar #side-menu .user-pro .arrow { - top: 23px; - right: 20px; -} - -.sidebar #side-menu .user-pro>a { - padding: 17px 7px 16px 15px !important; -} - -.sidebar #side-menu .user-pro .img-circle { - width: 30px; - margin-right: 10px; -} - -.sidebar #side-menu .user-pro .nav-second-level li i { - margin-right: 5px; -} - -.sidebar .sidebar-search { - padding: 15px; -} - -#side-menu li.active>a { - background: rgba(0, 0, 0, .02); -} - -#side-menu li a { - color: #54667a; - border-left: 3px solid #4f5467 -} - -#side-menu>li>a { - padding: 15px 30px 15px 15px; -} - -#side-menu>li>a:focus, -#side-menu>li>a:hover { - background: rgba(0, 0, 0, .1); -} - -#side-menu>li>a.active { - border-left: 3px solid #ff6849; - color: #fff; - background: rgba(0, 0, 0, 0); -} - -#side-menu ul>li>a:hover { - color: #ff6849; - background: 0 0; -} - -#side-menu ul>li>a.active { - color: #ff6849; -} - -.sidebar .arrow { - position: absolute; - right: 15px; - top: 18px; -} - -.sidebar .nav-second-level .arrow { - top: 12px; -} - -.sidebar .fa.arrow:before { - content: "\f105" -} - -.sidebar .active>a>span>.fa.arrow:before { - content: "\f107" -} - -.sidebar .nav-second-level li, -.sidebar .nav-third-level li { - border-bottom: none !important; -} - -.sidebar .nav-second-level li a { - padding-left: 43px; -} - -.sidebar .nav-third-level li a { - padding-left: 52px; -} - -.content-wrapper .nicescroll-rails { - display: none !important; -} - -.fix-sidebar .top-left-part { - background: #ff6849; -} - -/*! * Font Awesome 4.5.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) */ -@font-face { - font-family: FontAwesome; - src: url(../less/icons/font-awesome/fonts/fontawesome-webfont.eot?v=4.5.0); - src: url(../less/icons/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.5.0) format('embedded-opentype'), url(../less/icons/font-awesome/fonts/fontawesome-webfont.woff2?v=4.5.0) format('woff2'), url(../less/icons/font-awesome/fonts/fontawesome-webfont.woff?v=4.5.0) format('woff'), url(../less/icons/font-awesome/fonts/fontawesome-webfont.ttf?v=4.5.0) format('truetype'), url(../less/icons/font-awesome/fonts/fontawesome-webfont.svg?v=4.5.0#fontawesomeregular) format('svg'); - font-weight: 400; - font-style: normal -} - -.fa { - display: inline-block; - font: normal normal normal 14px/1 FontAwesome; - font-size: inherit; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.fa-lg { - font-size: 1.33333333em; - line-height: .75em; - vertical-align: -15%; -} - -.fa-2x { - font-size: 2em -} - -.fa-3x { - font-size: 3em -} - -.fa-4x { - font-size: 4em -} - -.fa-5x { - font-size: 5em -} - -.fa-fw { - text-align: center -} - -.fa-ul { - padding-left: 0; - margin-left: 2.14285714em; - list-style-type: none; -} - -.fa-ul>li { - position: relative; -} - -.fa-li { - position: absolute; - left: -2.14285714em; - width: 2.14285714em; - top: .14285714em; - text-align: center -} - -.fa-li.fa-lg { - left: -1.85714286em -} - -.fa-border { - padding: .2em .25em .15em; - border: .08em solid #eee; - border-radius: .1em -} - -.fa-pull-left { - float: left; -} - -.fa-pull-right { - float: right; -} - -.fa.fa-pull-left { - margin-right: .3em -} - -.fa.fa-pull-right { - margin-left: .3em -} - -.pull-right { - float: right; -} - -.pull-left { - float: left; -} - -.fa.pull-left { - margin-right: .3em -} - -.fa.pull-right { - margin-left: .3em -} - -.fa-spin { - -webkit-animation: fa-spin 2s infinite linear; - animation: fa-spin 2s infinite linear -} - -.fa-pulse { - -webkit-animation: fa-spin 1s infinite steps(8); - animation: fa-spin 1s infinite steps(8); -} - -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg) - } - - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg) - } -} - -@keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg) - } - - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg) - } -} - -.fa-rotate-90 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); -} - -.fa-rotate-180 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); - -webkit-transform: rotate(180deg); - -ms-transform: rotate(180deg); - transform: rotate(180deg); -} - -.fa-rotate-270 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); - -webkit-transform: rotate(270deg); - -ms-transform: rotate(270deg); - transform: rotate(270deg); -} - -.fa-flip-horizontal { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); - -webkit-transform: scale(-1, 1); - -ms-transform: scale(-1, 1); - transform: scale(-1, 1); -} - -.fa-flip-vertical { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); - -webkit-transform: scale(1, -1); - -ms-transform: scale(1, -1); - transform: scale(1, -1); -} - -:root .fa-flip-horizontal, -:root .fa-flip-vertical, -:root .fa-rotate-180, -:root .fa-rotate-270, -:root .fa-rotate-90 { - filter: none; -} - -.fa-stack { - position: relative; - display: inline-block; - width: 2em; - height: 2em; - line-height: 2em; - vertical-align: middle; -} - -.fa-stack-1x, -.fa-stack-2x { - position: absolute; - left: 0; - width: 100%; - text-align: center -} - -.fa-stack-1x { - line-height: inherit; -} - -.fa-stack-2x { - font-size: 2em -} - -.fa-inverse { - color: #fff -} - -.fa-glass:before { - content: "\f000" -} - -.fa-music:before { - content: "\f001" -} - -.fa-search:before { - content: "\f002" -} - -.fa-envelope-o:before { - content: "\f003" -} - -.fa-heart:before { - content: "\f004" -} - -.fa-star:before { - content: "\f005" -} - -.fa-star-o:before { - content: "\f006" -} - -.fa-user:before { - content: "\f007" -} - -.fa-film:before { - content: "\f008" -} - -.fa-th-large:before { - content: "\f009" -} - -.fa-th:before { - content: "\f00a" -} - -.fa-th-list:before { - content: "\f00b" -} - -.fa-check:before { - content: "\f00c" -} - -.fa-close:before, -.fa-remove:before, -.fa-times:before { - content: "\f00d" -} - -.fa-search-plus:before { - content: "\f00e" -} - -.fa-search-minus:before { - content: "\f010" -} - -.fa-power-off:before { - content: "\f011" -} - -.fa-signal:before { - content: "\f012" -} - -.fa-cog:before, -.fa-gear:before { - content: "\f013" -} - -.fa-trash-o:before { - content: "\f014" -} - -.fa-home:before { - content: "\f015" -} - -.fa-file-o:before { - content: "\f016" -} - -.fa-clock-o:before { - content: "\f017" -} - -.fa-road:before { - content: "\f018" -} - -.fa-download:before { - content: "\f019" -} - -.fa-arrow-circle-o-down:before { - content: "\f01a" -} - -.fa-arrow-circle-o-up:before { - content: "\f01b" -} - -.fa-inbox:before { - content: "\f01c" -} - -.fa-play-circle-o:before { - content: "\f01d" -} - -.fa-repeat:before, -.fa-rotate-right:before { - content: "\f01e" -} - -.fa-refresh:before { - content: "\f021" -} - -.fa-list-alt:before { - content: "\f022" -} - -.fa-lock:before { - content: "\f023" -} - -.fa-flag:before { - content: "\f024" -} - -.fa-headphones:before { - content: "\f025" -} - -.fa-volume-off:before { - content: "\f026" -} - -.fa-volume-down:before { - content: "\f027" -} - -.fa-volume-up:before { - content: "\f028" -} - -.fa-qrcode:before { - content: "\f029" -} - -.fa-barcode:before { - content: "\f02a" -} - -.fa-tag:before { - content: "\f02b" -} - -.fa-tags:before { - content: "\f02c" -} - -.fa-book:before { - content: "\f02d" -} - -.fa-bookmark:before { - content: "\f02e" -} - -.fa-print:before { - content: "\f02f" -} - -.fa-camera:before { - content: "\f030" -} - -.fa-font:before { - content: "\f031" -} - -.fa-bold:before { - content: "\f032" -} - -.fa-italic:before { - content: "\f033" -} - -.fa-text-height:before { - content: "\f034" -} - -.fa-text-width:before { - content: "\f035" -} - -.fa-align-left:before { - content: "\f036" -} - -.fa-align-center:before { - content: "\f037" -} - -.fa-align-right:before { - content: "\f038" -} - -.fa-align-justify:before { - content: "\f039" -} - -.fa-list:before { - content: "\f03a" -} - -.fa-dedent:before, -.fa-outdent:before { - content: "\f03b" -} - -.fa-indent:before { - content: "\f03c" -} - -.fa-video-camera:before { - content: "\f03d" -} - -.fa-image:before, -.fa-photo:before, -.fa-picture-o:before { - content: "\f03e" -} - -.fa-pencil:before { - content: "\f040" -} - -.fa-map-marker:before { - content: "\f041" -} - -.fa-adjust:before { - content: "\f042" -} - -.fa-tint:before { - content: "\f043" -} - -.fa-edit:before, -.fa-pencil-square-o:before { - content: "\f044" -} - -.fa-share-square-o:before { - content: "\f045" -} - -.fa-check-square-o:before { - content: "\f046" -} - -.fa-arrows:before { - content: "\f047" -} - -.fa-step-backward:before { - content: "\f048" -} - -.fa-fast-backward:before { - content: "\f049" -} - -.fa-backward:before { - content: "\f04a" -} - -.fa-play:before { - content: "\f04b" -} - -.fa-pause:before { - content: "\f04c" -} - -.fa-stop:before { - content: "\f04d" -} - -.fa-forward:before { - content: "\f04e" -} - -.fa-fast-forward:before { - content: "\f050" -} - -.fa-step-forward:before { - content: "\f051" -} - -.fa-eject:before { - content: "\f052" -} - -.fa-chevron-left:before { - content: "\f053" -} - -.fa-chevron-right:before { - content: "\f054" -} - -.fa-plus-circle:before { - content: "\f055" -} - -.fa-minus-circle:before { - content: "\f056" -} - -.fa-times-circle:before { - content: "\f057" -} - -.fa-check-circle:before { - content: "\f058" -} - -.fa-question-circle:before { - content: "\f059" -} - -.fa-info-circle:before { - content: "\f05a" -} - -.fa-crosshairs:before { - content: "\f05b" -} - -.fa-times-circle-o:before { - content: "\f05c" -} - -.fa-check-circle-o:before { - content: "\f05d" -} - -.fa-ban:before { - content: "\f05e" -} - -.fa-arrow-left:before { - content: "\f060" -} - -.fa-arrow-right:before { - content: "\f061" -} - -.fa-arrow-up:before { - content: "\f062" -} - -.fa-arrow-down:before { - content: "\f063" -} - -.fa-mail-forward:before, -.fa-share:before { - content: "\f064" -} - -.fa-expand:before { - content: "\f065" -} - -.fa-compress:before { - content: "\f066" -} - -.fa-plus:before { - content: "\f067" -} - -.fa-minus:before { - content: "\f068" -} - -.fa-asterisk:before { - content: "\f069" -} - -.fa-exclamation-circle:before { - content: "\f06a" -} - -.fa-gift:before { - content: "\f06b" -} - -.fa-leaf:before { - content: "\f06c" -} - -.fa-fire:before { - content: "\f06d" -} - -.fa-eye:before { - content: "\f06e" -} - -.fa-eye-slash:before { - content: "\f070" -} - -.fa-exclamation-triangle:before, -.fa-warning:before { - content: "\f071" -} - -.fa-plane:before { - content: "\f072" -} - -.fa-calendar:before { - content: "\f073" -} - -.fa-random:before { - content: "\f074" -} - -.fa-comment:before { - content: "\f075" -} - -.fa-magnet:before { - content: "\f076" -} - -.fa-chevron-up:before { - content: "\f077" -} - -.fa-chevron-down:before { - content: "\f078" -} - -.fa-retweet:before { - content: "\f079" -} - -.fa-shopping-cart:before { - content: "\f07a" -} - -.fa-folder:before { - content: "\f07b" -} - -.fa-folder-open:before { - content: "\f07c" -} - -.fa-arrows-v:before { - content: "\f07d" -} - -.fa-arrows-h:before { - content: "\f07e" -} - -.fa-bar-chart-o:before, -.fa-bar-chart:before { - content: "\f080" -} - -.fa-twitter-square:before { - content: "\f081" -} - -.fa-facebook-square:before { - content: "\f082" -} - -.fa-camera-retro:before { - content: "\f083" -} - -.fa-key:before { - content: "\f084" -} - -.fa-cogs:before, -.fa-gears:before { - content: "\f085" -} - -.fa-comments:before { - content: "\f086" -} - -.fa-thumbs-o-up:before { - content: "\f087" -} - -.fa-thumbs-o-down:before { - content: "\f088" -} - -.fa-star-half:before { - content: "\f089" -} - -.fa-heart-o:before { - content: "\f08a" -} - -.fa-sign-out:before { - content: "\f08b" -} - -.fa-linkedin-square:before { - content: "\f08c" -} - -.fa-thumb-tack:before { - content: "\f08d" -} - -.fa-external-link:before { - content: "\f08e" -} - -.fa-sign-in:before { - content: "\f090" -} - -.fa-trophy:before { - content: "\f091" -} - -.fa-github-square:before { - content: "\f092" -} - -.fa-upload:before { - content: "\f093" -} - -.fa-lemon-o:before { - content: "\f094" -} - -.fa-phone:before { - content: "\f095" -} - -.fa-square-o:before { - content: "\f096" -} - -.fa-bookmark-o:before { - content: "\f097" -} - -.fa-phone-square:before { - content: "\f098" -} - -.fa-twitter:before { - content: "\f099" -} - -.fa-facebook-f:before, -.fa-facebook:before { - content: "\f09a" -} - -.fa-github:before { - content: "\f09b" -} - -.fa-unlock:before { - content: "\f09c" -} - -.fa-credit-card:before { - content: "\f09d" -} - -.fa-feed:before, -.fa-rss:before { - content: "\f09e" -} - -.fa-hdd-o:before { - content: "\f0a0" -} - -.fa-bullhorn:before { - content: "\f0a1" -} - -.fa-bell:before { - content: "\f0f3" -} - -.fa-certificate:before { - content: "\f0a3" -} - -.fa-hand-o-right:before { - content: "\f0a4" -} - -.fa-hand-o-left:before { - content: "\f0a5" -} - -.fa-hand-o-up:before { - content: "\f0a6" -} - -.fa-hand-o-down:before { - content: "\f0a7" -} - -.fa-arrow-circle-left:before { - content: "\f0a8" -} - -.fa-arrow-circle-right:before { - content: "\f0a9" -} - -.fa-arrow-circle-up:before { - content: "\f0aa" -} - -.fa-arrow-circle-down:before { - content: "\f0ab" -} - -.fa-globe:before { - content: "\f0ac" -} - -.fa-wrench:before { - content: "\f0ad" -} - -.fa-tasks:before { - content: "\f0ae" -} - -.fa-filter:before { - content: "\f0b0" -} - -.fa-briefcase:before { - content: "\f0b1" -} - -.fa-arrows-alt:before { - content: "\f0b2" -} - -.fa-group:before, -.fa-users:before { - content: "\f0c0" -} - -.fa-chain:before, -.fa-link:before { - content: "\f0c1" -} - -.fa-cloud:before { - content: "\f0c2" -} - -.fa-flask:before { - content: "\f0c3" -} - -.fa-cut:before, -.fa-scissors:before { - content: "\f0c4" -} - -.fa-copy:before, -.fa-files-o:before { - content: "\f0c5" -} - -.fa-paperclip:before { - content: "\f0c6" -} - -.fa-floppy-o:before, -.fa-save:before { - content: "\f0c7" -} - -.fa-square:before { - content: "\f0c8" -} - -.fa-bars:before, -.fa-navicon:before, -.fa-reorder:before { - content: "\f0c9" -} - -.fa-list-ul:before { - content: "\f0ca" -} - -.fa-list-ol:before { - content: "\f0cb" -} - -.fa-strikethrough:before { - content: "\f0cc" -} - -.fa-underline:before { - content: "\f0cd" -} - -.fa-table:before { - content: "\f0ce" -} - -.fa-magic:before { - content: "\f0d0" -} - -.fa-truck:before { - content: "\f0d1" -} - -.fa-pinterest:before { - content: "\f0d2" -} - -.fa-pinterest-square:before { - content: "\f0d3" -} - -.fa-google-plus-square:before { - content: "\f0d4" -} - -.fa-google-plus:before { - content: "\f0d5" -} - -.fa-money:before { - content: "\f0d6" -} - -.fa-caret-down:before { - content: "\f0d7" -} - -.fa-caret-up:before { - content: "\f0d8" -} - -.fa-caret-left:before { - content: "\f0d9" -} - -.fa-caret-right:before { - content: "\f0da" -} - -.fa-columns:before { - content: "\f0db" -} - -.fa-sort:before, -.fa-unsorted:before { - content: "\f0dc" -} - -.fa-sort-desc:before, -.fa-sort-down:before { - content: "\f0dd" -} - -.fa-sort-asc:before, -.fa-sort-up:before { - content: "\f0de" -} - -.fa-envelope:before { - content: "\f0e0" -} - -.fa-linkedin:before { - content: "\f0e1" -} - -.fa-rotate-left:before, -.fa-undo:before { - content: "\f0e2" -} - -.fa-gavel:before, -.fa-legal:before { - content: "\f0e3" -} - -.fa-dashboard:before, -.fa-tachometer:before { - content: "\f0e4" -} - -.fa-comment-o:before { - content: "\f0e5" -} - -.fa-comments-o:before { - content: "\f0e6" -} - -.fa-bolt:before, -.fa-flash:before { - content: "\f0e7" -} - -.fa-sitemap:before { - content: "\f0e8" -} - -.fa-umbrella:before { - content: "\f0e9" -} - -.fa-clipboard:before, -.fa-paste:before { - content: "\f0ea" -} - -.fa-lightbulb-o:before { - content: "\f0eb" -} - -.fa-exchange:before { - content: "\f0ec" -} - -.fa-cloud-download:before { - content: "\f0ed" -} - -.fa-cloud-upload:before { - content: "\f0ee" -} - -.fa-user-md:before { - content: "\f0f0" -} - -.fa-stethoscope:before { - content: "\f0f1" -} - -.fa-suitcase:before { - content: "\f0f2" -} - -.fa-bell-o:before { - content: "\f0a2" -} - -.fa-coffee:before { - content: "\f0f4" -} - -.fa-cutlery:before { - content: "\f0f5" -} - -.fa-file-text-o:before { - content: "\f0f6" -} - -.fa-building-o:before { - content: "\f0f7" -} - -.fa-hospital-o:before { - content: "\f0f8" -} - -.fa-ambulance:before { - content: "\f0f9" -} - -.fa-medkit:before { - content: "\f0fa" -} - -.fa-fighter-jet:before { - content: "\f0fb" -} - -.fa-beer:before { - content: "\f0fc" -} - -.fa-h-square:before { - content: "\f0fd" -} - -.fa-plus-square:before { - content: "\f0fe" -} - -.fa-angle-double-left:before { - content: "\f100" -} - -.fa-angle-double-right:before { - content: "\f101" -} - -.fa-angle-double-up:before { - content: "\f102" -} - -.fa-angle-double-down:before { - content: "\f103" -} - -.fa-angle-left:before { - content: "\f104" -} - -.fa-angle-right:before { - content: "\f105" -} - -.fa-angle-up:before { - content: "\f106" -} - -.fa-angle-down:before { - content: "\f107" -} - -.fa-desktop:before { - content: "\f108" -} - -.fa-laptop:before { - content: "\f109" -} - -.fa-tablet:before { - content: "\f10a" -} - -.fa-mobile-phone:before, -.fa-mobile:before { - content: "\f10b" -} - -.fa-circle-o:before { - content: "\f10c" -} - -.fa-quote-left:before { - content: "\f10d" -} - -.fa-quote-right:before { - content: "\f10e" -} - -.fa-spinner:before { - content: "\f110" -} - -.fa-circle:before { - content: "\f111" -} - -.fa-mail-reply:before, -.fa-reply:before { - content: "\f112" -} - -.fa-github-alt:before { - content: "\f113" -} - -.fa-folder-o:before { - content: "\f114" -} - -.fa-folder-open-o:before { - content: "\f115" -} - -.fa-smile-o:before { - content: "\f118" -} - -.fa-frown-o:before { - content: "\f119" -} - -.fa-meh-o:before { - content: "\f11a" -} - -.fa-gamepad:before { - content: "\f11b" -} - -.fa-keyboard-o:before { - content: "\f11c" -} - -.fa-flag-o:before { - content: "\f11d" -} - -.fa-flag-checkered:before { - content: "\f11e" -} - -.fa-terminal:before { - content: "\f120" -} - -.fa-code:before { - content: "\f121" -} - -.fa-mail-reply-all:before, -.fa-reply-all:before { - content: "\f122" -} - -.fa-star-half-empty:before, -.fa-star-half-full:before, -.fa-star-half-o:before { - content: "\f123" -} - -.fa-location-arrow:before { - content: "\f124" -} - -.fa-crop:before { - content: "\f125" -} - -.fa-code-fork:before { - content: "\f126" -} - -.fa-chain-broken:before, -.fa-unlink:before { - content: "\f127" -} - -.fa-question:before { - content: "\f128" -} - -.fa-info:before { - content: "\f129" -} - -.fa-exclamation:before { - content: "\f12a" -} - -.fa-superscript:before { - content: "\f12b" -} - -.fa-subscript:before { - content: "\f12c" -} - -.fa-eraser:before { - content: "\f12d" -} - -.fa-puzzle-piece:before { - content: "\f12e" -} - -.fa-microphone:before { - content: "\f130" -} - -.fa-microphone-slash:before { - content: "\f131" -} - -.fa-shield:before { - content: "\f132" -} - -.fa-calendar-o:before { - content: "\f133" -} - -.fa-fire-extinguisher:before { - content: "\f134" -} - -.fa-rocket:before { - content: "\f135" -} - -.fa-maxcdn:before { - content: "\f136" -} - -.fa-chevron-circle-left:before { - content: "\f137" -} - -.fa-chevron-circle-right:before { - content: "\f138" -} - -.fa-chevron-circle-up:before { - content: "\f139" -} - -.fa-chevron-circle-down:before { - content: "\f13a" -} - -.fa-html5:before { - content: "\f13b" -} - -.fa-css3:before { - content: "\f13c" -} - -.fa-anchor:before { - content: "\f13d" -} - -.fa-unlock-alt:before { - content: "\f13e" -} - -.fa-bullseye:before { - content: "\f140" -} - -.fa-ellipsis-h:before { - content: "\f141" -} - -.fa-ellipsis-v:before { - content: "\f142" -} - -.fa-rss-square:before { - content: "\f143" -} - -.fa-play-circle:before { - content: "\f144" -} - -.fa-ticket:before { - content: "\f145" -} - -.fa-minus-square:before { - content: "\f146" -} - -.fa-minus-square-o:before { - content: "\f147" -} - -.fa-level-up:before { - content: "\f148" -} - -.fa-level-down:before { - content: "\f149" -} - -.fa-check-square:before { - content: "\f14a" -} - -.fa-pencil-square:before { - content: "\f14b" -} - -.fa-external-link-square:before { - content: "\f14c" -} - -.fa-share-square:before { - content: "\f14d" -} - -.fa-compass:before { - content: "\f14e" -} - -.fa-caret-square-o-down:before, -.fa-toggle-down:before { - content: "\f150" -} - -.fa-caret-square-o-up:before, -.fa-toggle-up:before { - content: "\f151" -} - -.fa-caret-square-o-right:before, -.fa-toggle-right:before { - content: "\f152" -} - -.fa-eur:before, -.fa-euro:before { - content: "\f153" -} - -.fa-gbp:before { - content: "\f154" -} - -.fa-dollar:before, -.fa-usd:before { - content: "\f155" -} - -.fa-inr:before, -.fa-rupee:before { - content: "\f156" -} - -.fa-cny:before, -.fa-jpy:before, -.fa-rmb:before, -.fa-yen:before { - content: "\f157" -} - -.fa-rouble:before, -.fa-rub:before, -.fa-ruble:before { - content: "\f158" -} - -.fa-krw:before, -.fa-won:before { - content: "\f159" -} - -.fa-bitcoin:before, -.fa-btc:before { - content: "\f15a" -} - -.fa-file:before { - content: "\f15b" -} - -.fa-file-text:before { - content: "\f15c" -} - -.fa-sort-alpha-asc:before { - content: "\f15d" -} - -.fa-sort-alpha-desc:before { - content: "\f15e" -} - -.fa-sort-amount-asc:before { - content: "\f160" -} - -.fa-sort-amount-desc:before { - content: "\f161" -} - -.fa-sort-numeric-asc:before { - content: "\f162" -} - -.fa-sort-numeric-desc:before { - content: "\f163" -} - -.fa-thumbs-up:before { - content: "\f164" -} - -.fa-thumbs-down:before { - content: "\f165" -} - -.fa-youtube-square:before { - content: "\f166" -} - -.fa-youtube:before { - content: "\f167" -} - -.fa-xing:before { - content: "\f168" -} - -.fa-xing-square:before { - content: "\f169" -} - -.fa-youtube-play:before { - content: "\f16a" -} - -.fa-dropbox:before { - content: "\f16b" -} - -.fa-stack-overflow:before { - content: "\f16c" -} - -.fa-instagram:before { - content: "\f16d" -} - -.fa-flickr:before { - content: "\f16e" -} - -.fa-adn:before { - content: "\f170" -} - -.fa-bitbucket:before { - content: "\f171" -} - -.fa-bitbucket-square:before { - content: "\f172" -} - -.fa-tumblr:before { - content: "\f173" -} - -.fa-tumblr-square:before { - content: "\f174" -} - -.fa-long-arrow-down:before { - content: "\f175" -} - -.fa-long-arrow-up:before { - content: "\f176" -} - -.fa-long-arrow-left:before { - content: "\f177" -} - -.fa-long-arrow-right:before { - content: "\f178" -} - -.fa-apple:before { - content: "\f179" -} - -.fa-windows:before { - content: "\f17a" -} - -.fa-android:before { - content: "\f17b" -} - -.fa-linux:before { - content: "\f17c" -} - -.fa-dribbble:before { - content: "\f17d" -} - -.fa-skype:before { - content: "\f17e" -} - -.fa-foursquare:before { - content: "\f180" -} - -.fa-trello:before { - content: "\f181" -} - -.fa-female:before { - content: "\f182" -} - -.fa-male:before { - content: "\f183" -} - -.fa-gittip:before, -.fa-gratipay:before { - content: "\f184" -} - -.fa-sun-o:before { - content: "\f185" -} - -.fa-moon-o:before { - content: "\f186" -} - -.fa-archive:before { - content: "\f187" -} - -.fa-bug:before { - content: "\f188" -} - -.fa-vk:before { - content: "\f189" -} - -.fa-weibo:before { - content: "\f18a" -} - -.fa-renren:before { - content: "\f18b" -} - -.fa-pagelines:before { - content: "\f18c" -} - -.fa-stack-exchange:before { - content: "\f18d" -} - -.fa-arrow-circle-o-right:before { - content: "\f18e" -} - -.fa-arrow-circle-o-left:before { - content: "\f190" -} - -.fa-caret-square-o-left:before, -.fa-toggle-left:before { - content: "\f191" -} - -.fa-dot-circle-o:before { - content: "\f192" -} - -.fa-wheelchair:before { - content: "\f193" -} - -.fa-vimeo-square:before { - content: "\f194" -} - -.fa-try:before, -.fa-turkish-lira:before { - content: "\f195" -} - -.fa-plus-square-o:before { - content: "\f196" -} - -.fa-space-shuttle:before { - content: "\f197" -} - -.fa-slack:before { - content: "\f198" -} - -.fa-envelope-square:before { - content: "\f199" -} - -.fa-wordpress:before { - content: "\f19a" -} - -.fa-openid:before { - content: "\f19b" -} - -.fa-bank:before, -.fa-institution:before, -.fa-university:before { - content: "\f19c" -} - -.fa-graduation-cap:before, -.fa-mortar-board:before { - content: "\f19d" -} - -.fa-yahoo:before { - content: "\f19e" -} - -.fa-google:before { - content: "\f1a0" -} - -.fa-reddit:before { - content: "\f1a1" -} - -.fa-reddit-square:before { - content: "\f1a2" -} - -.fa-stumbleupon-circle:before { - content: "\f1a3" -} - -.fa-stumbleupon:before { - content: "\f1a4" -} - -.fa-delicious:before { - content: "\f1a5" -} - -.fa-digg:before { - content: "\f1a6" -} - -.fa-pied-piper:before { - content: "\f1a7" -} - -.fa-pied-piper-alt:before { - content: "\f1a8" -} - -.fa-drupal:before { - content: "\f1a9" -} - -.fa-joomla:before { - content: "\f1aa" -} - -.fa-language:before { - content: "\f1ab" -} - -.fa-fax:before { - content: "\f1ac" -} - -.fa-building:before { - content: "\f1ad" -} - -.fa-child:before { - content: "\f1ae" -} - -.fa-paw:before { - content: "\f1b0" -} - -.fa-spoon:before { - content: "\f1b1" -} - -.fa-cube:before { - content: "\f1b2" -} - -.fa-cubes:before { - content: "\f1b3" -} - -.fa-behance:before { - content: "\f1b4" -} - -.fa-behance-square:before { - content: "\f1b5" -} - -.fa-steam:before { - content: "\f1b6" -} - -.fa-steam-square:before { - content: "\f1b7" -} - -.fa-recycle:before { - content: "\f1b8" -} - -.fa-automobile:before, -.fa-car:before { - content: "\f1b9" -} - -.fa-cab:before, -.fa-taxi:before { - content: "\f1ba" -} - -.fa-tree:before { - content: "\f1bb" -} - -.fa-spotify:before { - content: "\f1bc" -} - -.fa-deviantart:before { - content: "\f1bd" -} - -.fa-soundcloud:before { - content: "\f1be" -} - -.fa-database:before { - content: "\f1c0" -} - -.fa-file-pdf-o:before { - content: "\f1c1" -} - -.fa-file-word-o:before { - content: "\f1c2" -} - -.fa-file-excel-o:before { - content: "\f1c3" -} - -.fa-file-powerpoint-o:before { - content: "\f1c4" -} - -.fa-file-image-o:before, -.fa-file-photo-o:before, -.fa-file-picture-o:before { - content: "\f1c5" -} - -.fa-file-archive-o:before, -.fa-file-zip-o:before { - content: "\f1c6" -} - -.fa-file-audio-o:before, -.fa-file-sound-o:before { - content: "\f1c7" -} - -.fa-file-movie-o:before, -.fa-file-video-o:before { - content: "\f1c8" -} - -.fa-file-code-o:before { - content: "\f1c9" -} - -.fa-vine:before { - content: "\f1ca" -} - -.fa-codepen:before { - content: "\f1cb" -} - -.fa-jsfiddle:before { - content: "\f1cc" -} - -.fa-life-bouy:before, -.fa-life-buoy:before, -.fa-life-ring:before, -.fa-life-saver:before, -.fa-support:before { - content: "\f1cd" -} - -.fa-circle-o-notch:before { - content: "\f1ce" -} - -.fa-ra:before, -.fa-rebel:before { - content: "\f1d0" -} - -.fa-empire:before, -.fa-ge:before { - content: "\f1d1" -} - -.fa-git-square:before { - content: "\f1d2" -} - -.fa-git:before { - content: "\f1d3" -} - -.fa-hacker-news:before, -.fa-y-combinator-square:before, -.fa-yc-square:before { - content: "\f1d4" -} - -.fa-tencent-weibo:before { - content: "\f1d5" -} - -.fa-qq:before { - content: "\f1d6" -} - -.fa-wechat:before, -.fa-weixin:before { - content: "\f1d7" -} - -.fa-paper-plane:before, -.fa-send:before { - content: "\f1d8" -} - -.fa-paper-plane-o:before, -.fa-send-o:before { - content: "\f1d9" -} - -.fa-history:before { - content: "\f1da" -} - -.fa-circle-thin:before { - content: "\f1db" -} - -.fa-header:before { - content: "\f1dc" -} - -.fa-paragraph:before { - content: "\f1dd" -} - -.fa-sliders:before { - content: "\f1de" -} - -.fa-share-alt:before { - content: "\f1e0" -} - -.fa-share-alt-square:before { - content: "\f1e1" -} - -.fa-bomb:before { - content: "\f1e2" -} - -.fa-futbol-o:before, -.fa-soccer-ball-o:before { - content: "\f1e3" -} - -.fa-tty:before { - content: "\f1e4" -} - -.fa-binoculars:before { - content: "\f1e5" -} - -.fa-plug:before { - content: "\f1e6" -} - -.fa-slideshare:before { - content: "\f1e7" -} - -.fa-twitch:before { - content: "\f1e8" -} - -.fa-yelp:before { - content: "\f1e9" -} - -.fa-newspaper-o:before { - content: "\f1ea" -} - -.fa-wifi:before { - content: "\f1eb" -} - -.fa-calculator:before { - content: "\f1ec" -} - -.fa-paypal:before { - content: "\f1ed" -} - -.fa-google-wallet:before { - content: "\f1ee" -} - -.fa-cc-visa:before { - content: "\f1f0" -} - -.fa-cc-mastercard:before { - content: "\f1f1" -} - -.fa-cc-discover:before { - content: "\f1f2" -} - -.fa-cc-amex:before { - content: "\f1f3" -} - -.fa-cc-paypal:before { - content: "\f1f4" -} - -.fa-cc-stripe:before { - content: "\f1f5" -} - -.fa-bell-slash:before { - content: "\f1f6" -} - -.fa-bell-slash-o:before { - content: "\f1f7" -} - -.fa-trash:before { - content: "\f1f8" -} - -.fa-copyright:before { - content: "\f1f9" -} - -.fa-at:before { - content: "\f1fa" -} - -.fa-eyedropper:before { - content: "\f1fb" -} - -.fa-paint-brush:before { - content: "\f1fc" -} - -.fa-birthday-cake:before { - content: "\f1fd" -} - -.fa-area-chart:before { - content: "\f1fe" -} - -.fa-pie-chart:before { - content: "\f200" -} - -.fa-line-chart:before { - content: "\f201" -} - -.fa-lastfm:before { - content: "\f202" -} - -.fa-lastfm-square:before { - content: "\f203" -} - -.fa-toggle-off:before { - content: "\f204" -} - -.fa-toggle-on:before { - content: "\f205" -} - -.fa-bicycle:before { - content: "\f206" -} - -.fa-bus:before { - content: "\f207" -} - -.fa-ioxhost:before { - content: "\f208" -} - -.fa-angellist:before { - content: "\f209" -} - -.fa-cc:before { - content: "\f20a" -} - -.fa-ils:before, -.fa-shekel:before, -.fa-sheqel:before { - content: "\f20b" -} - -.fa-meanpath:before { - content: "\f20c" -} - -.fa-buysellads:before { - content: "\f20d" -} - -.fa-connectdevelop:before { - content: "\f20e" -} - -.fa-dashcube:before { - content: "\f210" -} - -.fa-forumbee:before { - content: "\f211" -} - -.fa-leanpub:before { - content: "\f212" -} - -.fa-sellsy:before { - content: "\f213" -} - -.fa-shirtsinbulk:before { - content: "\f214" -} - -.fa-simplybuilt:before { - content: "\f215" -} - -.fa-skyatlas:before { - content: "\f216" -} - -.fa-cart-plus:before { - content: "\f217" -} - -.fa-cart-arrow-down:before { - content: "\f218" -} - -.fa-diamond:before { - content: "\f219" -} - -.fa-ship:before { - content: "\f21a" -} - -.fa-user-secret:before { - content: "\f21b" -} - -.fa-motorcycle:before { - content: "\f21c" -} - -.fa-street-view:before { - content: "\f21d" -} - -.fa-heartbeat:before { - content: "\f21e" -} - -.fa-venus:before { - content: "\f221" -} - -.fa-mars:before { - content: "\f222" -} - -.fa-mercury:before { - content: "\f223" -} - -.fa-intersex:before, -.fa-transgender:before { - content: "\f224" -} - -.fa-transgender-alt:before { - content: "\f225" -} - -.fa-venus-double:before { - content: "\f226" -} - -.fa-mars-double:before { - content: "\f227" -} - -.fa-venus-mars:before { - content: "\f228" -} - -.fa-mars-stroke:before { - content: "\f229" -} - -.fa-mars-stroke-v:before { - content: "\f22a" -} - -.fa-mars-stroke-h:before { - content: "\f22b" -} - -.fa-neuter:before { - content: "\f22c" -} - -.fa-genderless:before { - content: "\f22d" -} - -.fa-facebook-official:before { - content: "\f230" -} - -.fa-pinterest-p:before { - content: "\f231" -} - -.fa-whatsapp:before { - content: "\f232" -} - -.fa-server:before { - content: "\f233" -} - -.fa-user-plus:before { - content: "\f234" -} - -.fa-user-times:before { - content: "\f235" -} - -.fa-bed:before, -.fa-hotel:before { - content: "\f236" -} - -.fa-viacoin:before { - content: "\f237" -} - -.fa-train:before { - content: "\f238" -} - -.fa-subway:before { - content: "\f239" -} - -.fa-medium:before { - content: "\f23a" -} - -.fa-y-combinator:before, -.fa-yc:before { - content: "\f23b" -} - -.fa-optin-monster:before { - content: "\f23c" -} - -.fa-opencart:before { - content: "\f23d" -} - -.fa-expeditedssl:before { - content: "\f23e" -} - -.fa-battery-4:before, -.fa-battery-full:before { - content: "\f240" -} - -.fa-battery-3:before, -.fa-battery-three-quarters:before { - content: "\f241" -} - -.fa-battery-2:before, -.fa-battery-half:before { - content: "\f242" -} - -.fa-battery-1:before, -.fa-battery-quarter:before { - content: "\f243" -} - -.fa-battery-0:before, -.fa-battery-empty:before { - content: "\f244" -} - -.fa-mouse-pointer:before { - content: "\f245" -} - -.fa-i-cursor:before { - content: "\f246" -} - -.fa-object-group:before { - content: "\f247" -} - -.fa-object-ungroup:before { - content: "\f248" -} - -.fa-sticky-note:before { - content: "\f249" -} - -.fa-sticky-note-o:before { - content: "\f24a" -} - -.fa-cc-jcb:before { - content: "\f24b" -} - -.fa-cc-diners-club:before { - content: "\f24c" -} - -.fa-clone:before { - content: "\f24d" -} - -.fa-balance-scale:before { - content: "\f24e" -} - -.fa-hourglass-o:before { - content: "\f250" -} - -.fa-hourglass-1:before, -.fa-hourglass-start:before { - content: "\f251" -} - -.fa-hourglass-2:before, -.fa-hourglass-half:before { - content: "\f252" -} - -.fa-hourglass-3:before, -.fa-hourglass-end:before { - content: "\f253" -} - -.fa-hourglass:before { - content: "\f254" -} - -.fa-hand-grab-o:before, -.fa-hand-rock-o:before { - content: "\f255" -} - -.fa-hand-paper-o:before, -.fa-hand-stop-o:before { - content: "\f256" -} - -.fa-hand-scissors-o:before { - content: "\f257" -} - -.fa-hand-lizard-o:before { - content: "\f258" -} - -.fa-hand-spock-o:before { - content: "\f259" -} - -.fa-hand-pointer-o:before { - content: "\f25a" -} - -.fa-hand-peace-o:before { - content: "\f25b" -} - -.fa-trademark:before { - content: "\f25c" -} - -.fa-registered:before { - content: "\f25d" -} - -.fa-creative-commons:before { - content: "\f25e" -} - -.fa-gg:before { - content: "\f260" -} - -.fa-gg-circle:before { - content: "\f261" -} - -.fa-tripadvisor:before { - content: "\f262" -} - -.fa-odnoklassniki:before { - content: "\f263" -} - -.fa-odnoklassniki-square:before { - content: "\f264" -} - -.fa-get-pocket:before { - content: "\f265" -} - -.fa-wikipedia-w:before { - content: "\f266" -} - -.fa-safari:before { - content: "\f267" -} - -.fa-chrome:before { - content: "\f268" -} - -.fa-firefox:before { - content: "\f269" -} - -.fa-opera:before { - content: "\f26a" -} - -.fa-internet-explorer:before { - content: "\f26b" -} - -.fa-television:before, -.fa-tv:before { - content: "\f26c" -} - -.fa-contao:before { - content: "\f26d" -} - -.fa-500px:before { - content: "\f26e" -} - -.fa-amazon:before { - content: "\f270" -} - -.fa-calendar-plus-o:before { - content: "\f271" -} - -.fa-calendar-minus-o:before { - content: "\f272" -} - -.fa-calendar-times-o:before { - content: "\f273" -} - -.fa-calendar-check-o:before { - content: "\f274" -} - -.fa-industry:before { - content: "\f275" -} - -.fa-map-pin:before { - content: "\f276" -} - -.fa-map-signs:before { - content: "\f277" -} - -.fa-map-o:before { - content: "\f278" -} - -.fa-map:before { - content: "\f279" -} - -.fa-commenting:before { - content: "\f27a" -} - -.fa-commenting-o:before { - content: "\f27b" -} - -.fa-houzz:before { - content: "\f27c" -} - -.fa-vimeo:before { - content: "\f27d" -} - -.fa-black-tie:before { - content: "\f27e" -} - -.fa-fonticons:before { - content: "\f280" -} - -.fa-reddit-alien:before { - content: "\f281" -} - -.fa-edge:before { - content: "\f282" -} - -.fa-credit-card-alt:before { - content: "\f283" -} - -.fa-codiepie:before { - content: "\f284" -} - -.fa-modx:before { - content: "\f285" -} - -.fa-fort-awesome:before { - content: "\f286" -} - -.fa-usb:before { - content: "\f287" -} - -.fa-product-hunt:before { - content: "\f288" -} - -.fa-mixcloud:before { - content: "\f289" -} - -.fa-scribd:before { - content: "\f28a" -} - -.fa-pause-circle:before { - content: "\f28b" -} - -.fa-pause-circle-o:before { - content: "\f28c" -} - -.fa-stop-circle:before { - content: "\f28d" -} - -.fa-stop-circle-o:before { - content: "\f28e" -} - -.fa-shopping-bag:before { - content: "\f290" -} - -.fa-shopping-basket:before { - content: "\f291" -} - -.fa-hashtag:before { - content: "\f292" -} - -.fa-bluetooth:before { - content: "\f293" -} - -.fa-bluetooth-b:before { - content: "\f294" -} - -.fa-percent:before { - content: "\f295" -} - -@font-face { - font-family: themify; - src: url(../less/icons/themify-icons/fonts/themify.eot?-fvbane); - src: url(../less/icons/themify-icons/fonts/themify.eot?#iefix-fvbane) format('embedded-opentype'), url(../less/icons/themify-icons/fonts/themify.woff?-fvbane) format('woff'), url(../less/icons/themify-icons/fonts/themify.ttf?-fvbane) format('truetype'), url(../less/icons/themify-icons/fonts/themify.svg?-fvbane#themify) format('svg'); - font-weight: 400; - font-style: normal -} - -[class*=" ti-"], -[class^=ti-] { - font-family: themify; - speak: none; - font-style: normal; - font-weight: 400; - font-variant: normal; - text-transform: none; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.ti-wand:before { - content: "\e600" -} - -.ti-volume:before { - content: "\e601" -} - -.ti-user:before { - content: "\e602" -} - -.ti-unlock:before { - content: "\e603" -} - -.ti-unlink:before { - content: "\e604" -} - -.ti-trash:before { - content: "\e605" -} - -.ti-thought:before { - content: "\e606" -} - -.ti-target:before { - content: "\e607" -} - -.ti-tag:before { - content: "\e608" -} - -.ti-tablet:before { - content: "\e609" -} - -.ti-star:before { - content: "\e60a" -} - -.ti-spray:before { - content: "\e60b" -} - -.ti-signal:before { - content: "\e60c" -} - -.ti-shopping-cart:before { - content: "\e60d" -} - -.ti-shopping-cart-full:before { - content: "\e60e" -} - -.ti-settings:before { - content: "\e60f" -} - -.ti-search:before { - content: "\e610" -} - -.ti-zoom-in:before { - content: "\e611" -} - -.ti-zoom-out:before { - content: "\e612" -} - -.ti-cut:before { - content: "\e613" -} - -.ti-ruler:before { - content: "\e614" -} - -.ti-ruler-pencil:before { - content: "\e615" -} - -.ti-ruler-alt:before { - content: "\e616" -} - -.ti-bookmark:before { - content: "\e617" -} - -.ti-bookmark-alt:before { - content: "\e618" -} - -.ti-reload:before { - content: "\e619" -} - -.ti-plus:before { - content: "\e61a" -} - -.ti-pin:before { - content: "\e61b" -} - -.ti-pencil:before { - content: "\e61c" -} - -.ti-pencil-alt:before { - content: "\e61d" -} - -.ti-paint-roller:before { - content: "\e61e" -} - -.ti-paint-bucket:before { - content: "\e61f" -} - -.ti-na:before { - content: "\e620" -} - -.ti-mobile:before { - content: "\e621" -} - -.ti-minus:before { - content: "\e622" -} - -.ti-medall:before { - content: "\e623" -} - -.ti-medall-alt:before { - content: "\e624" -} - -.ti-marker:before { - content: "\e625" -} - -.ti-marker-alt:before { - content: "\e626" -} - -.ti-arrow-up:before { - content: "\e627" -} - -.ti-arrow-right:before { - content: "\e628" -} - -.ti-arrow-left:before { - content: "\e629" -} - -.ti-arrow-down:before { - content: "\e62a" -} - -.ti-lock:before { - content: "\e62b" -} - -.ti-location-arrow:before { - content: "\e62c" -} - -.ti-link:before { - content: "\e62d" -} - -.ti-layout:before { - content: "\e62e" -} - -.ti-layers:before { - content: "\e62f" -} - -.ti-layers-alt:before { - content: "\e630" -} - -.ti-key:before { - content: "\e631" -} - -.ti-import:before { - content: "\e632" -} - -.ti-image:before { - content: "\e633" -} - -.ti-heart:before { - content: "\e634" -} - -.ti-heart-broken:before { - content: "\e635" -} - -.ti-hand-stop:before { - content: "\e636" -} - -.ti-hand-open:before { - content: "\e637" -} - -.ti-hand-drag:before { - content: "\e638" -} - -.ti-folder:before { - content: "\e639" -} - -.ti-flag:before { - content: "\e63a" -} - -.ti-flag-alt:before { - content: "\e63b" -} - -.ti-flag-alt-2:before { - content: "\e63c" -} - -.ti-eye:before { - content: "\e63d" -} - -.ti-export:before { - content: "\e63e" -} - -.ti-exchange-vertical:before { - content: "\e63f" -} - -.ti-desktop:before { - content: "\e640" -} - -.ti-cup:before { - content: "\e641" -} - -.ti-crown:before { - content: "\e642" -} - -.ti-comments:before { - content: "\e643" -} - -.ti-comment:before { - content: "\e644" -} - -.ti-comment-alt:before { - content: "\e645" -} - -.ti-close:before { - content: "\e646" -} - -.ti-clip:before { - content: "\e647" -} - -.ti-angle-up:before { - content: "\e648" -} - -.ti-angle-right:before { - content: "\e649" -} - -.ti-angle-left:before { - content: "\e64a" -} - -.ti-angle-down:before { - content: "\e64b" -} - -.ti-check:before { - content: "\e64c" -} - -.ti-check-box:before { - content: "\e64d" -} - -.ti-camera:before { - content: "\e64e" -} - -.ti-announcement:before { - content: "\e64f" -} - -.ti-brush:before { - content: "\e650" -} - -.ti-briefcase:before { - content: "\e651" -} - -.ti-bolt:before { - content: "\e652" -} - -.ti-bolt-alt:before { - content: "\e653" -} - -.ti-blackboard:before { - content: "\e654" -} - -.ti-bag:before { - content: "\e655" -} - -.ti-move:before { - content: "\e656" -} - -.ti-arrows-vertical:before { - content: "\e657" -} - -.ti-arrows-horizontal:before { - content: "\e658" -} - -.ti-fullscreen:before { - content: "\e659" -} - -.ti-arrow-top-right:before { - content: "\e65a" -} - -.ti-arrow-top-left:before { - content: "\e65b" -} - -.ti-arrow-circle-up:before { - content: "\e65c" -} - -.ti-arrow-circle-right:before { - content: "\e65d" -} - -.ti-arrow-circle-left:before { - content: "\e65e" -} - -.ti-arrow-circle-down:before { - content: "\e65f" -} - -.ti-angle-double-up:before { - content: "\e660" -} - -.ti-angle-double-right:before { - content: "\e661" -} - -.ti-angle-double-left:before { - content: "\e662" -} - -.ti-angle-double-down:before { - content: "\e663" -} - -.ti-zip:before { - content: "\e664" -} - -.ti-world:before { - content: "\e665" -} - -.ti-wheelchair:before { - content: "\e666" -} - -.ti-view-list:before { - content: "\e667" -} - -.ti-view-list-alt:before { - content: "\e668" -} - -.ti-view-grid:before { - content: "\e669" -} - -.ti-uppercase:before { - content: "\e66a" -} - -.ti-upload:before { - content: "\e66b" -} - -.ti-underline:before { - content: "\e66c" -} - -.ti-truck:before { - content: "\e66d" -} - -.ti-timer:before { - content: "\e66e" -} - -.ti-ticket:before { - content: "\e66f" -} - -.ti-thumb-up:before { - content: "\e670" -} - -.ti-thumb-down:before { - content: "\e671" -} - -.ti-text:before { - content: "\e672" -} - -.ti-stats-up:before { - content: "\e673" -} - -.ti-stats-down:before { - content: "\e674" -} - -.ti-split-v:before { - content: "\e675" -} - -.ti-split-h:before { - content: "\e676" -} - -.ti-smallcap:before { - content: "\e677" -} - -.ti-shine:before { - content: "\e678" -} - -.ti-shift-right:before { - content: "\e679" -} - -.ti-shift-left:before { - content: "\e67a" -} - -.ti-shield:before { - content: "\e67b" -} - -.ti-notepad:before { - content: "\e67c" -} - -.ti-server:before { - content: "\e67d" -} - -.ti-quote-right:before { - content: "\e67e" -} - -.ti-quote-left:before { - content: "\e67f" -} - -.ti-pulse:before { - content: "\e680" -} - -.ti-printer:before { - content: "\e681" -} - -.ti-power-off:before { - content: "\e682" -} - -.ti-plug:before { - content: "\e683" -} - -.ti-pie-chart:before { - content: "\e684" -} - -.ti-paragraph:before { - content: "\e685" -} - -.ti-panel:before { - content: "\e686" -} - -.ti-package:before { - content: "\e687" -} - -.ti-music:before { - content: "\e688" -} - -.ti-music-alt:before { - content: "\e689" -} - -.ti-mouse:before { - content: "\e68a" -} - -.ti-mouse-alt:before { - content: "\e68b" -} - -.ti-money:before { - content: "\e68c" -} - -.ti-microphone:before { - content: "\e68d" -} - -.ti-menu:before { - content: "\e68e" -} - -.ti-menu-alt:before { - content: "\e68f" -} - -.ti-map:before { - content: "\e690" -} - -.ti-map-alt:before { - content: "\e691" -} - -.ti-loop:before { - content: "\e692" -} - -.ti-location-pin:before { - content: "\e693" -} - -.ti-list:before { - content: "\e694" -} - -.ti-light-bulb:before { - content: "\e695" -} - -.ti-Italic:before { - content: "\e696" -} - -.ti-info:before { - content: "\e697" -} - -.ti-infinite:before { - content: "\e698" -} - -.ti-id-badge:before { - content: "\e699" -} - -.ti-hummer:before { - content: "\e69a" -} - -.ti-home:before { - content: "\e69b" -} - -.ti-help:before { - content: "\e69c" -} - -.ti-headphone:before { - content: "\e69d" -} - -.ti-harddrives:before { - content: "\e69e" -} - -.ti-harddrive:before { - content: "\e69f" -} - -.ti-gift:before { - content: "\e6a0" -} - -.ti-game:before { - content: "\e6a1" -} - -.ti-filter:before { - content: "\e6a2" -} - -.ti-files:before { - content: "\e6a3" -} - -.ti-file:before { - content: "\e6a4" -} - -.ti-eraser:before { - content: "\e6a5" -} - -.ti-envelope:before { - content: "\e6a6" -} - -.ti-download:before { - content: "\e6a7" -} - -.ti-direction:before { - content: "\e6a8" -} - -.ti-direction-alt:before { - content: "\e6a9" -} - -.ti-dashboard:before { - content: "\e6aa" -} - -.ti-control-stop:before { - content: "\e6ab" -} - -.ti-control-shuffle:before { - content: "\e6ac" -} - -.ti-control-play:before { - content: "\e6ad" -} - -.ti-control-pause:before { - content: "\e6ae" -} - -.ti-control-forward:before { - content: "\e6af" -} - -.ti-control-backward:before { - content: "\e6b0" -} - -.ti-cloud:before { - content: "\e6b1" -} - -.ti-cloud-up:before { - content: "\e6b2" -} - -.ti-cloud-down:before { - content: "\e6b3" -} - -.ti-clipboard:before { - content: "\e6b4" -} - -.ti-car:before { - content: "\e6b5" -} - -.ti-calendar:before { - content: "\e6b6" -} - -.ti-book:before { - content: "\e6b7" -} - -.ti-bell:before { - content: "\e6b8" -} - -.ti-basketball:before { - content: "\e6b9" -} - -.ti-bar-chart:before { - content: "\e6ba" -} - -.ti-bar-chart-alt:before { - content: "\e6bb" -} - -.ti-back-right:before { - content: "\e6bc" -} - -.ti-back-left:before { - content: "\e6bd" -} - -.ti-arrows-corner:before { - content: "\e6be" -} - -.ti-archive:before { - content: "\e6bf" -} - -.ti-anchor:before { - content: "\e6c0" -} - -.ti-align-right:before { - content: "\e6c1" -} - -.ti-align-left:before { - content: "\e6c2" -} - -.ti-align-justify:before { - content: "\e6c3" -} - -.ti-align-center:before { - content: "\e6c4" -} - -.ti-alert:before { - content: "\e6c5" -} - -.ti-alarm-clock:before { - content: "\e6c6" -} - -.ti-agenda:before { - content: "\e6c7" -} - -.ti-write:before { - content: "\e6c8" -} - -.ti-window:before { - content: "\e6c9" -} - -.ti-widgetized:before { - content: "\e6ca" -} - -.ti-widget:before { - content: "\e6cb" -} - -.ti-widget-alt:before { - content: "\e6cc" -} - -.ti-wallet:before { - content: "\e6cd" -} - -.ti-video-clapper:before { - content: "\e6ce" -} - -.ti-video-camera:before { - content: "\e6cf" -} - -.ti-vector:before { - content: "\e6d0" -} - -.ti-themify-logo:before { - content: "\e6d1" -} - -.ti-themify-favicon:before { - content: "\e6d2" -} - -.ti-themify-favicon-alt:before { - content: "\e6d3" -} - -.ti-support:before { - content: "\e6d4" -} - -.ti-stamp:before { - content: "\e6d5" -} - -.ti-split-v-alt:before { - content: "\e6d6" -} - -.ti-slice:before { - content: "\e6d7" -} - -.ti-shortcode:before { - content: "\e6d8" -} - -.ti-shift-right-alt:before { - content: "\e6d9" -} - -.ti-shift-left-alt:before { - content: "\e6da" -} - -.ti-ruler-alt-2:before { - content: "\e6db" -} - -.ti-receipt:before { - content: "\e6dc" -} - -.ti-pin2:before { - content: "\e6dd" -} - -.ti-pin-alt:before { - content: "\e6de" -} - -.ti-pencil-alt2:before { - content: "\e6df" -} - -.ti-palette:before { - content: "\e6e0" -} - -.ti-more:before { - content: "\e6e1" -} - -.ti-more-alt:before { - content: "\e6e2" -} - -.ti-microphone-alt:before { - content: "\e6e3" -} - -.ti-magnet:before { - content: "\e6e4" -} - -.ti-line-double:before { - content: "\e6e5" -} - -.ti-line-dotted:before { - content: "\e6e6" -} - -.ti-line-dashed:before { - content: "\e6e7" -} - -.ti-layout-width-full:before { - content: "\e6e8" -} - -.ti-layout-width-default:before { - content: "\e6e9" -} - -.ti-layout-width-default-alt:before { - content: "\e6ea" -} - -.ti-layout-tab:before { - content: "\e6eb" -} - -.ti-layout-tab-window:before { - content: "\e6ec" -} - -.ti-layout-tab-v:before { - content: "\e6ed" -} - -.ti-layout-tab-min:before { - content: "\e6ee" -} - -.ti-layout-slider:before { - content: "\e6ef" -} - -.ti-layout-slider-alt:before { - content: "\e6f0" -} - -.ti-layout-sidebar-right:before { - content: "\e6f1" -} - -.ti-layout-sidebar-none:before { - content: "\e6f2" -} - -.ti-layout-sidebar-left:before { - content: "\e6f3" -} - -.ti-layout-placeholder:before { - content: "\e6f4" -} - -.ti-layout-menu:before { - content: "\e6f5" -} - -.ti-layout-menu-v:before { - content: "\e6f6" -} - -.ti-layout-menu-separated:before { - content: "\e6f7" -} - -.ti-layout-menu-full:before { - content: "\e6f8" -} - -.ti-layout-media-right-alt:before { - content: "\e6f9" -} - -.ti-layout-media-right:before { - content: "\e6fa" -} - -.ti-layout-media-overlay:before { - content: "\e6fb" -} - -.ti-layout-media-overlay-alt:before { - content: "\e6fc" -} - -.ti-layout-media-overlay-alt-2:before { - content: "\e6fd" -} - -.ti-layout-media-left-alt:before { - content: "\e6fe" -} - -.ti-layout-media-left:before { - content: "\e6ff" -} - -.ti-layout-media-center-alt:before { - content: "\e700" -} - -.ti-layout-media-center:before { - content: "\e701" -} - -.ti-layout-list-thumb:before { - content: "\e702" -} - -.ti-layout-list-thumb-alt:before { - content: "\e703" -} - -.ti-layout-list-post:before { - content: "\e704" -} - -.ti-layout-list-large-image:before { - content: "\e705" -} - -.ti-layout-line-solid:before { - content: "\e706" -} - -.ti-layout-grid4:before { - content: "\e707" -} - -.ti-layout-grid3:before { - content: "\e708" -} - -.ti-layout-grid2:before { - content: "\e709" -} - -.ti-layout-grid2-thumb:before { - content: "\e70a" -} - -.ti-layout-cta-right:before { - content: "\e70b" -} - -.ti-layout-cta-left:before { - content: "\e70c" -} - -.ti-layout-cta-center:before { - content: "\e70d" -} - -.ti-layout-cta-btn-right:before { - content: "\e70e" -} - -.ti-layout-cta-btn-left:before { - content: "\e70f" -} - -.ti-layout-column4:before { - content: "\e710" -} - -.ti-layout-column3:before { - content: "\e711" -} - -.ti-layout-column2:before { - content: "\e712" -} - -.ti-layout-accordion-separated:before { - content: "\e713" -} - -.ti-layout-accordion-merged:before { - content: "\e714" -} - -.ti-layout-accordion-list:before { - content: "\e715" -} - -.ti-ink-pen:before { - content: "\e716" -} - -.ti-info-alt:before { - content: "\e717" -} - -.ti-help-alt:before { - content: "\e718" -} - -.ti-headphone-alt:before { - content: "\e719" -} - -.ti-hand-point-up:before { - content: "\e71a" -} - -.ti-hand-point-right:before { - content: "\e71b" -} - -.ti-hand-point-left:before { - content: "\e71c" -} - -.ti-hand-point-down:before { - content: "\e71d" -} - -.ti-gallery:before { - content: "\e71e" -} - -.ti-face-smile:before { - content: "\e71f" -} - -.ti-face-sad:before { - content: "\e720" -} - -.ti-credit-card:before { - content: "\e721" -} - -.ti-control-skip-forward:before { - content: "\e722" -} - -.ti-control-skip-backward:before { - content: "\e723" -} - -.ti-control-record:before { - content: "\e724" -} - -.ti-control-eject:before { - content: "\e725" -} - -.ti-comments-smiley:before { - content: "\e726" -} - -.ti-brush-alt:before { - content: "\e727" -} - -.ti-youtube:before { - content: "\e728" -} - -.ti-vimeo:before { - content: "\e729" -} - -.ti-twitter:before { - content: "\e72a" -} - -.ti-time:before { - content: "\e72b" -} - -.ti-tumblr:before { - content: "\e72c" -} - -.ti-skype:before { - content: "\e72d" -} - -.ti-share:before { - content: "\e72e" -} - -.ti-share-alt:before { - content: "\e72f" -} - -.ti-rocket:before { - content: "\e730" -} - -.ti-pinterest:before { - content: "\e731" -} - -.ti-new-window:before { - content: "\e732" -} - -.ti-microsoft:before { - content: "\e733" -} - -.ti-list-ol:before { - content: "\e734" -} - -.ti-linkedin:before { - content: "\e735" -} - -.ti-layout-sidebar-2:before { - content: "\e736" -} - -.ti-layout-grid4-alt:before { - content: "\e737" -} - -.ti-layout-grid3-alt:before { - content: "\e738" -} - -.ti-layout-grid2-alt:before { - content: "\e739" -} - -.ti-layout-column4-alt:before { - content: "\e73a" -} - -.ti-layout-column3-alt:before { - content: "\e73b" -} - -.ti-layout-column2-alt:before { - content: "\e73c" -} - -.ti-instagram:before { - content: "\e73d" -} - -.ti-google:before { - content: "\e73e" -} - -.ti-github:before { - content: "\e73f" -} - -.ti-flickr:before { - content: "\e740" -} - -.ti-facebook:before { - content: "\e741" -} - -.ti-dropbox:before { - content: "\e742" -} - -.ti-dribbble:before { - content: "\e743" -} - -.ti-apple:before { - content: "\e744" -} - -.ti-android:before { - content: "\e745" -} - -.ti-save:before { - content: "\e746" -} - -.ti-save-alt:before { - content: "\e747" -} - -.ti-yahoo:before { - content: "\e748" -} - -.ti-wordpress:before { - content: "\e749" -} - -.ti-vimeo-alt:before { - content: "\e74a" -} - -.ti-twitter-alt:before { - content: "\e74b" -} - -.ti-tumblr-alt:before { - content: "\e74c" -} - -.ti-trello:before { - content: "\e74d" -} - -.ti-stack-overflow:before { - content: "\e74e" -} - -.ti-soundcloud:before { - content: "\e74f" -} - -.ti-sharethis:before { - content: "\e750" -} - -.ti-sharethis-alt:before { - content: "\e751" -} - -.ti-reddit:before { - content: "\e752" -} - -.ti-pinterest-alt:before { - content: "\e753" -} - -.ti-microsoft-alt:before { - content: "\e754" -} - -.ti-linux:before { - content: "\e755" -} - -.ti-jsfiddle:before { - content: "\e756" -} - -.ti-joomla:before { - content: "\e757" -} - -.ti-html5:before { - content: "\e758" -} - -.ti-flickr-alt:before { - content: "\e759" -} - -.ti-email:before { - content: "\e75a" -} - -.ti-drupal:before { - content: "\e75b" -} - -.ti-dropbox-alt:before { - content: "\e75c" -} - -.ti-css3:before { - content: "\e75d" -} - -.ti-rss:before { - content: "\e75e" -} - -.ti-rss-alt:before { - content: "\e75f" -} - -@font-face { - font-family: simple-line-icons; - src: url(../less/icons/simple-line-icons/fonts/Simple-Line-Icons.eot?-i3a2kk); - src: url(../less/icons/simple-line-icons/fonts/Simple-Line-Icons.eot?#iefix-i3a2kk) format('embedded-opentype'), url(../less/icons/simple-line-icons/fonts/Simple-Line-Icons.ttf?-i3a2kk) format('truetype'), url(../less/icons/simple-line-icons/fonts/Simple-Line-Icons.woff2?-i3a2kk) format('woff2'), url(../less/icons/simple-line-icons/fonts/Simple-Line-Icons.woff?-i3a2kk) format('woff'), url(../less/icons/simple-line-icons/fonts/Simple-Line-Icons.svg?-i3a2kk#simple-line-icons) format('svg'); - font-weight: 400; - font-style: normal -} - -.icon-action-redo, -.icon-action-undo, -.icon-anchor, -.icon-arrow-down, -.icon-arrow-down-circle, -.icon-arrow-left, -.icon-arrow-left-circle, -.icon-arrow-right, -.icon-arrow-right-circle, -.icon-arrow-up, -.icon-arrow-up-circle, -.icon-badge, -.icon-bag, -.icon-ban, -.icon-basket, -.icon-basket-loaded, -.icon-bell, -.icon-book-open, -.icon-briefcase, -.icon-bubble, -.icon-bubbles, -.icon-bulb, -.icon-calculator, -.icon-calender, -.icon-call-end, -.icon-call-in, -.icon-call-out, -.icon-camera, -.icon-camrecorder, -.icon-chart, -.icon-check, -.icon-chemistry, -.icon-clock, -.icon-close, -.icon-cloud-download, -.icon-cloud-upload, -.icon-compass, -.icon-control-end, -.icon-control-forward, -.icon-control-pause, -.icon-control-play, -.icon-control-rewind, -.icon-control-start, -.icon-credit-card, -.icon-crop, -.icon-cup, -.icon-cursor, -.icon-cursor-move, -.icon-diamond, -.icon-direction, -.icon-directions, -.icon-disc, -.icon-dislike, -.icon-doc, -.icon-docs, -.icon-drawar, -.icon-drop, -.icon-earphones, -.icon-earphones-alt, -.icon-emotsmile, -.icon-energy, -.icon-envelope, -.icon-envelope-letter, -.icon-envelope-open, -.icon-equalizer, -.icon-eye, -.icon-eyeglass, -.icon-feed, -.icon-film, -.icon-fire, -.icon-flag, -.icon-folder, -.icon-folder-alt, -.icon-frame, -.icon-game-controller, -.icon-ghost, -.icon-globe, -.icon-globe-alt, -.icon-graduation, -.icon-graph, -.icon-grid, -.icon-handbag, -.icon-heart, -.icon-home, -.icon-hourglass, -.icon-info, -.icon-key, -.icon-layers, -.icon-like, -.icon-link, -.icon-list, -.icon-location-pin, -.icon-lock, -.icon-lock-open, -.icon-login, -.icon-logout, -.icon-loop, -.icon-magic-wand, -.icon-magnet, -.icon-magnifier, -.icon-magnifier-add, -.icon-magnifier-remove, -.icon-map, -.icon-menu, -.icon-microphone, -.icon-mouse, -.icon-music-tone, -.icon-music-tone-alt, -.icon-mustache, -.icon-note, -.icon-notebook, -.icon-options, -.icon-options-vertical, -.icon-paper-clip, -.icon-paper-plane, -.icon-paypal, -.icon-pencil, -.icon-people, -.icon-phone, -.icon-picture, -.icon-pie-chart, -.icon-pin, -.icon-plane, -.icon-playlist, -.icon-plus, -.icon-power, -.icon-present, -.icon-printer, -.icon-puzzle, -.icon-question, -.icon-refresh, -.icon-reload, -.icon-rocket, -.icon-screen-desktop, -.icon-screen-smartphone, -.icon-screen-tablet, -.icon-settings, -.icon-share, -.icon-share-alt, -.icon-shield, -.icon-shuffle, -.icon-size-actual, -.icon-size-fullscreen, -.icon-social-behance, -.icon-social-dribbble, -.icon-social-dropbox, -.icon-social-facebook, -.icon-social-foursqare, -.icon-social-github, -.icon-social-gplus, -.icon-social-instagram, -.icon-social-linkedin, -.icon-social-pintarest, -.icon-social-reddit, -.icon-social-skype, -.icon-social-soundcloud, -.icon-social-spotify, -.icon-social-stumbleupon, -.icon-social-tumblr, -.icon-social-twitter, -.icon-social-youtube, -.icon-speech, -.icon-speedometer, -.icon-star, -.icon-support, -.icon-symble-female, -.icon-symbol-male, -.icon-tag, -.icon-target, -.icon-trash, -.icon-trophy, -.icon-umbrella, -.icon-user, -.icon-user-female, -.icon-user-follow, -.icon-user-following, -.icon-user-unfollow, -.icon-vector, -.icon-volume-1, -.icon-volume-2, -.icon-volume-off, -.icon-wallet, -.icon-wrench { - font-family: simple-line-icons; - speak: none; - font-style: normal; - font-weight: 400; - font-variant: normal; - text-transform: none; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.icon-user:before { - content: "\e005" -} - -.icon-people:before { - content: "\e001" -} - -.icon-user-female:before { - content: "\e000" -} - -.icon-user-follow:before { - content: "\e002" -} - -.icon-user-following:before { - content: "\e003" -} - -.icon-user-unfollow:before { - content: "\e004" -} - -.icon-login:before { - content: "\e066" -} - -.icon-logout:before { - content: "\e065" -} - -.icon-emotsmile:before { - content: "\e021" -} - -.icon-phone:before { - content: "\e600" -} - -.icon-call-end:before { - content: "\e048" -} - -.icon-call-in:before { - content: "\e047" -} - -.icon-call-out:before { - content: "\e046" -} - -.icon-map:before { - content: "\e033" -} - -.icon-location-pin:before { - content: "\e096" -} - -.icon-direction:before { - content: "\e042" -} - -.icon-directions:before { - content: "\e041" -} - -.icon-compass:before { - content: "\e045" -} - -.icon-layers:before { - content: "\e034" -} - -.icon-menu:before { - content: "\e601" -} - -.icon-list:before { - content: "\e067" -} - -.icon-options-vertical:before { - content: "\e602" -} - -.icon-options:before { - content: "\e603" -} - -.icon-arrow-down:before { - content: "\e604" -} - -.icon-arrow-left:before { - content: "\e605" -} - -.icon-arrow-right:before { - content: "\e606" -} - -.icon-arrow-up:before { - content: "\e607" -} - -.icon-arrow-up-circle:before { - content: "\e078" -} - -.icon-arrow-left-circle:before { - content: "\e07a" -} - -.icon-arrow-right-circle:before { - content: "\e079" -} - -.icon-arrow-down-circle:before { - content: "\e07b" -} - -.icon-check:before { - content: "\e080" -} - -.icon-clock:before { - content: "\e081" -} - -.icon-plus:before { - content: "\e095" -} - -.icon-close:before { - content: "\e082" -} - -.icon-trophy:before { - content: "\e006" -} - -.icon-screen-smartphone:before { - content: "\e010" -} - -.icon-screen-desktop:before { - content: "\e011" -} - -.icon-plane:before { - content: "\e012" -} - -.icon-notebook:before { - content: "\e013" -} - -.icon-mustache:before { - content: "\e014" -} - -.icon-mouse:before { - content: "\e015" -} - -.icon-magnet:before { - content: "\e016" -} - -.icon-energy:before { - content: "\e020" -} - -.icon-disc:before { - content: "\e022" -} - -.icon-cursor:before { - content: "\e06e" -} - -.icon-cursor-move:before { - content: "\e023" -} - -.icon-crop:before { - content: "\e024" -} - -.icon-chemistry:before { - content: "\e026" -} - -.icon-speedometer:before { - content: "\e007" -} - -.icon-shield:before { - content: "\e00e" -} - -.icon-screen-tablet:before { - content: "\e00f" -} - -.icon-magic-wand:before { - content: "\e017" -} - -.icon-hourglass:before { - content: "\e018" -} - -.icon-graduation:before { - content: "\e019" -} - -.icon-ghost:before { - content: "\e01a" -} - -.icon-game-controller:before { - content: "\e01b" -} - -.icon-fire:before { - content: "\e01c" -} - -.icon-eyeglass:before { - content: "\e01d" -} - -.icon-envelope-open:before { - content: "\e01e" -} - -.icon-envelope-letter:before { - content: "\e01f" -} - -.icon-bell:before { - content: "\e027" -} - -.icon-badge:before { - content: "\e028" -} - -.icon-anchor:before { - content: "\e029" -} - -.icon-wallet:before { - content: "\e02a" -} - -.icon-vector:before { - content: "\e02b" -} - -.icon-speech:before { - content: "\e02c" -} - -.icon-puzzle:before { - content: "\e02d" -} - -.icon-printer:before { - content: "\e02e" -} - -.icon-present:before { - content: "\e02f" -} - -.icon-playlist:before { - content: "\e030" -} - -.icon-pin:before { - content: "\e031" -} - -.icon-picture:before { - content: "\e032" -} - -.icon-handbag:before { - content: "\e035" -} - -.icon-globe-alt:before { - content: "\e036" -} - -.icon-globe:before { - content: "\e037" -} - -.icon-folder-alt:before { - content: "\e039" -} - -.icon-folder:before { - content: "\e089" -} - -.icon-film:before { - content: "\e03a" -} - -.icon-feed:before { - content: "\e03b" -} - -.icon-drop:before { - content: "\e03e" -} - -.icon-drawar:before { - content: "\e03f" -} - -.icon-docs:before { - content: "\e040" -} - -.icon-doc:before { - content: "\e085" -} - -.icon-diamond:before { - content: "\e043" -} - -.icon-cup:before { - content: "\e044" -} - -.icon-calculator:before { - content: "\e049" -} - -.icon-bubbles:before { - content: "\e04a" -} - -.icon-briefcase:before { - content: "\e04b" -} - -.icon-book-open:before { - content: "\e04c" -} - -.icon-basket-loaded:before { - content: "\e04d" -} - -.icon-basket:before { - content: "\e04e" -} - -.icon-bag:before { - content: "\e04f" -} - -.icon-action-undo:before { - content: "\e050" -} - -.icon-action-redo:before { - content: "\e051" -} - -.icon-wrench:before { - content: "\e052" -} - -.icon-umbrella:before { - content: "\e053" -} - -.icon-trash:before { - content: "\e054" -} - -.icon-tag:before { - content: "\e055" -} - -.icon-support:before { - content: "\e056" -} - -.icon-frame:before { - content: "\e038" -} - -.icon-size-fullscreen:before { - content: "\e057" -} - -.icon-size-actual:before { - content: "\e058" -} - -.icon-shuffle:before { - content: "\e059" -} - -.icon-share-alt:before { - content: "\e05a" -} - -.icon-share:before { - content: "\e05b" -} - -.icon-rocket:before { - content: "\e05c" -} - -.icon-question:before { - content: "\e05d" -} - -.icon-pie-chart:before { - content: "\e05e" -} - -.icon-pencil:before { - content: "\e05f" -} - -.icon-note:before { - content: "\e060" -} - -.icon-loop:before { - content: "\e064" -} - -.icon-home:before { - content: "\e069" -} - -.icon-grid:before { - content: "\e06a" -} - -.icon-graph:before { - content: "\e06b" -} - -.icon-microphone:before { - content: "\e063" -} - -.icon-music-tone-alt:before { - content: "\e061" -} - -.icon-music-tone:before { - content: "\e062" -} - -.icon-earphones-alt:before { - content: "\e03c" -} - -.icon-earphones:before { - content: "\e03d" -} - -.icon-equalizer:before { - content: "\e06c" -} - -.icon-like:before { - content: "\e068" -} - -.icon-dislike:before { - content: "\e06d" -} - -.icon-control-start:before { - content: "\e06f" -} - -.icon-control-rewind:before { - content: "\e070" -} - -.icon-control-play:before { - content: "\e071" -} - -.icon-control-pause:before { - content: "\e072" -} - -.icon-control-forward:before { - content: "\e073" -} - -.icon-control-end:before { - content: "\e074" -} - -.icon-volume-1:before { - content: "\e09f" -} - -.icon-volume-2:before { - content: "\e0a0" -} - -.icon-volume-off:before { - content: "\e0a1" -} - -.icon-calender:before { - content: "\e075" -} - -.icon-bulb:before { - content: "\e076" -} - -.icon-chart:before { - content: "\e077" -} - -.icon-ban:before { - content: "\e07c" -} - -.icon-bubble:before { - content: "\e07d" -} - -.icon-camrecorder:before { - content: "\e07e" -} - -.icon-camera:before { - content: "\e07f" -} - -.icon-cloud-download:before { - content: "\e083" -} - -.icon-cloud-upload:before { - content: "\e084" -} - -.icon-envelope:before { - content: "\e086" -} - -.icon-eye:before { - content: "\e087" -} - -.icon-flag:before { - content: "\e088" -} - -.icon-heart:before { - content: "\e08a" -} - -.icon-info:before { - content: "\e08b" -} - -.icon-key:before { - content: "\e08c" -} - -.icon-link:before { - content: "\e08d" -} - -.icon-lock:before { - content: "\e08e" -} - -.icon-lock-open:before { - content: "\e08f" -} - -.icon-magnifier:before { - content: "\e090" -} - -.icon-magnifier-add:before { - content: "\e091" -} - -.icon-magnifier-remove:before { - content: "\e092" -} - -.icon-paper-clip:before { - content: "\e093" -} - -.icon-paper-plane:before { - content: "\e094" -} - -.icon-power:before { - content: "\e097" -} - -.icon-refresh:before { - content: "\e098" -} - -.icon-reload:before { - content: "\e099" -} - -.icon-settings:before { - content: "\e09a" -} - -.icon-star:before { - content: "\e09b" -} - -.icon-symble-female:before { - content: "\e09c" -} - -.icon-symbol-male:before { - content: "\e09d" -} - -.icon-target:before { - content: "\e09e" -} - -.icon-credit-card:before { - content: "\e025" -} - -.icon-paypal:before { - content: "\e608" -} - -.icon-social-tumblr:before { - content: "\e00a" -} - -.icon-social-twitter:before { - content: "\e009" -} - -.icon-social-facebook:before { - content: "\e00b" -} - -.icon-social-instagram:before { - content: "\e609" -} - -.icon-social-linkedin:before { - content: "\e60a" -} - -.icon-social-pintarest:before { - content: "\e60b" -} - -.icon-social-github:before { - content: "\e60c" -} - -.icon-social-gplus:before { - content: "\e60d" -} - -.icon-social-reddit:before { - content: "\e60e" -} - -.icon-social-skype:before { - content: "\e60f" -} - -.icon-social-dribbble:before { - content: "\e00d" -} - -.icon-social-behance:before { - content: "\e610" -} - -.icon-social-foursqare:before { - content: "\e611" -} - -.icon-social-soundcloud:before { - content: "\e612" -} - -.icon-social-spotify:before { - content: "\e613" -} - -.icon-social-stumbleupon:before { - content: "\e614" -} - -.icon-social-youtube:before { - content: "\e008" -} - -.icon-social-dropbox:before { - content: "\e00c" -} - -/*! * Weather Icons 2.0 * Updated August 1, 2015 * Weather themed icons for Bootstrap * Author - Erik Flowers - erik@helloerik.com * Email: erik@helloerik.com * Twitter: http://twitter.com/Erik_UX * ------------------------------------------------------------------------------ * Maintained at http://erikflowers.github.io/weather-icons * * License * ------------------------------------------------------------------------------ * - Font licensed under SIL OFL 1.1 - * http://scripts.sil.org/OFL * - CSS, SCSS and LESS are licensed under MIT License - * http://opensource.org/licenses/mit-license.html * - Documentation licensed under CC BY 3.0 - * http://creativecommons.org/licenses/by/3.0/ * - Inspired by and works great as a companion with Font Awesome * "Font Awesome by Dave Gandy - http://fontawesome.io" */ -@font-face { - font-family: weathericons; - src: url(../less/icons/weather-icons/font/weathericons-regular-webfont.eot); - src: url(../less/icons/weather-icons/font/weathericons-regular-webfont.eot?#iefix) format('embedded-opentype'), url(../less/icons/weather-icons/font/weathericons-regular-webfont.woff2) format('woff2'), url(../less/icons/weather-icons/font/weathericons-regular-webfont.woff) format('woff'), url(../less/icons/weather-icons/font/weathericons-regular-webfont.ttf) format('truetype'), url(../less/icons/weather-icons/font/weathericons-regular-webfont.svg#weather_iconsregular) format('svg'); - font-weight: 400; - font-style: normal -} - -.wi { - display: inline-block; - font-family: weathericons; - font-style: normal; - font-weight: 400; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.wi-fw { - text-align: center; - width: 1.4em -} - -.wi-rotate-90 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); -} - -.wi-rotate-180 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); - -webkit-transform: rotate(180deg); - -ms-transform: rotate(180deg); - transform: rotate(180deg); -} - -.wi-rotate-270 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); - -webkit-transform: rotate(270deg); - -ms-transform: rotate(270deg); - transform: rotate(270deg); -} - -.wi-flip-horizontal { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); - -webkit-transform: scale(-1, 1); - -ms-transform: scale(-1, 1); - transform: scale(-1, 1); -} - -.wi-flip-vertical { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); - -webkit-transform: scale(1, -1); - -ms-transform: scale(1, -1); - transform: scale(1, -1); -} - -.wi-day-sunny:before { - content: "\f00d" -} - -.wi-day-cloudy:before { - content: "\f002" -} - -.wi-day-cloudy-gusts:before { - content: "\f000" -} - -.wi-day-cloudy-windy:before { - content: "\f001" -} - -.wi-day-fog:before { - content: "\f003" -} - -.wi-day-hail:before { - content: "\f004" -} - -.wi-day-haze:before { - content: "\f0b6" -} - -.wi-day-lightning:before { - content: "\f005" -} - -.wi-day-rain:before { - content: "\f008" -} - -.wi-day-rain-mix:before { - content: "\f006" -} - -.wi-day-rain-wind:before { - content: "\f007" -} - -.wi-day-showers:before { - content: "\f009" -} - -.wi-day-sleet:before { - content: "\f0b2" -} - -.wi-day-sleet-storm:before { - content: "\f068" -} - -.wi-day-snow:before { - content: "\f00a" -} - -.wi-day-snow-thunderstorm:before { - content: "\f06b" -} - -.wi-day-snow-wind:before { - content: "\f065" -} - -.wi-day-sprinkle:before { - content: "\f00b" -} - -.wi-day-storm-showers:before { - content: "\f00e" -} - -.wi-day-sunny-overcast:before { - content: "\f00c" -} - -.wi-day-thunderstorm:before { - content: "\f010" -} - -.wi-day-windy:before { - content: "\f085" -} - -.wi-solar-eclipse:before { - content: "\f06e" -} - -.wi-hot:before { - content: "\f072" -} - -.wi-day-cloudy-high:before { - content: "\f07d" -} - -.wi-day-light-wind:before { - content: "\f0c4" -} - -.wi-night-clear:before { - content: "\f02e" -} - -.wi-night-alt-cloudy:before { - content: "\f086" -} - -.wi-night-alt-cloudy-gusts:before { - content: "\f022" -} - -.wi-night-alt-cloudy-windy:before { - content: "\f023" -} - -.wi-night-alt-hail:before { - content: "\f024" -} - -.wi-night-alt-lightning:before { - content: "\f025" -} - -.wi-night-alt-rain:before { - content: "\f028" -} - -.wi-night-alt-rain-mix:before { - content: "\f026" -} - -.wi-night-alt-rain-wind:before { - content: "\f027" -} - -.wi-night-alt-showers:before { - content: "\f029" -} - -.wi-night-alt-sleet:before { - content: "\f0b4" -} - -.wi-night-alt-sleet-storm:before { - content: "\f06a" -} - -.wi-night-alt-snow:before { - content: "\f02a" -} - -.wi-night-alt-snow-thunderstorm:before { - content: "\f06d" -} - -.wi-night-alt-snow-wind:before { - content: "\f067" -} - -.wi-night-alt-sprinkle:before { - content: "\f02b" -} - -.wi-night-alt-storm-showers:before { - content: "\f02c" -} - -.wi-night-alt-thunderstorm:before { - content: "\f02d" -} - -.wi-night-cloudy:before { - content: "\f031" -} - -.wi-night-cloudy-gusts:before { - content: "\f02f" -} - -.wi-night-cloudy-windy:before { - content: "\f030" -} - -.wi-night-fog:before { - content: "\f04a" -} - -.wi-night-hail:before { - content: "\f032" -} - -.wi-night-lightning:before { - content: "\f033" -} - -.wi-night-partly-cloudy:before { - content: "\f083" -} - -.wi-night-rain:before { - content: "\f036" -} - -.wi-night-rain-mix:before { - content: "\f034" -} - -.wi-night-rain-wind:before { - content: "\f035" -} - -.wi-night-showers:before { - content: "\f037" -} - -.wi-night-sleet:before { - content: "\f0b3" -} - -.wi-night-sleet-storm:before { - content: "\f069" -} - -.wi-night-snow:before { - content: "\f038" -} - -.wi-night-snow-thunderstorm:before { - content: "\f06c" -} - -.wi-night-snow-wind:before { - content: "\f066" -} - -.wi-night-sprinkle:before { - content: "\f039" -} - -.wi-night-storm-showers:before { - content: "\f03a" -} - -.wi-night-thunderstorm:before { - content: "\f03b" -} - -.wi-lunar-eclipse:before { - content: "\f070" -} - -.wi-stars:before { - content: "\f077" -} - -.wi-night-alt-cloudy-high:before { - content: "\f07e" -} - -.wi-night-cloudy-high:before { - content: "\f080" -} - -.wi-night-alt-partly-cloudy:before { - content: "\f081" -} - -.wi-cloud:before { - content: "\f041" -} - -.wi-cloudy:before { - content: "\f013" -} - -.wi-cloudy-gusts:before { - content: "\f011" -} - -.wi-cloudy-windy:before { - content: "\f012" -} - -.wi-fog:before { - content: "\f014" -} - -.wi-hail:before { - content: "\f015" -} - -.wi-rain:before { - content: "\f019" -} - -.wi-rain-mix:before { - content: "\f017" -} - -.wi-rain-wind:before { - content: "\f018" -} - -.wi-showers:before { - content: "\f01a" -} - -.wi-sleet:before { - content: "\f0b5" -} - -.wi-sprinkle:before { - content: "\f01c" -} - -.wi-storm-showers:before { - content: "\f01d" -} - -.wi-thunderstorm:before { - content: "\f01e" -} - -.wi-snow-wind:before { - content: "\f064" -} - -.wi-snow:before { - content: "\f01b" -} - -.wi-smog:before { - content: "\f074" -} - -.wi-smoke:before { - content: "\f062" -} - -.wi-lightning:before { - content: "\f016" -} - -.wi-raindrops:before { - content: "\f04e" -} - -.wi-raindrop:before { - content: "\f078" -} - -.wi-dust:before { - content: "\f063" -} - -.wi-snowflake-cold:before { - content: "\f076" -} - -.wi-windy:before { - content: "\f021" -} - -.wi-strong-wind:before { - content: "\f050" -} - -.wi-sandstorm:before { - content: "\f082" -} - -.wi-earthquake:before { - content: "\f0c6" -} - -.wi-fire:before { - content: "\f0c7" -} - -.wi-flood:before { - content: "\f07c" -} - -.wi-meteor:before { - content: "\f071" -} - -.wi-tsunami:before { - content: "\f0c5" -} - -.wi-volcano:before { - content: "\f0c8" -} - -.wi-hurricane:before { - content: "\f073" -} - -.wi-tornado:before { - content: "\f056" -} - -.wi-small-craft-advisory:before { - content: "\f0cc" -} - -.wi-gale-warning:before { - content: "\f0cd" -} - -.wi-storm-warning:before { - content: "\f0ce" -} - -.wi-hurricane-warning:before { - content: "\f0cf" -} - -.wi-wind-direction:before { - content: "\f0b1" -} - -.wi-alien:before { - content: "\f075" -} - -.wi-celsius:before { - content: "\f03c" -} - -.wi-fahrenheit:before { - content: "\f045" -} - -.wi-degrees:before { - content: "\f042" -} - -.wi-thermometer:before { - content: "\f055" -} - -.wi-thermometer-exterior:before { - content: "\f053" -} - -.wi-thermometer-internal:before { - content: "\f054" -} - -.wi-cloud-down:before { - content: "\f03d" -} - -.wi-cloud-up:before { - content: "\f040" -} - -.wi-cloud-refresh:before { - content: "\f03e" -} - -.wi-horizon:before { - content: "\f047" -} - -.wi-horizon-alt:before { - content: "\f046" -} - -.wi-sunrise:before { - content: "\f051" -} - -.wi-sunset:before { - content: "\f052" -} - -.wi-moonrise:before { - content: "\f0c9" -} - -.wi-moonset:before { - content: "\f0ca" -} - -.wi-refresh:before { - content: "\f04c" -} - -.wi-refresh-alt:before { - content: "\f04b" -} - -.wi-umbrella:before { - content: "\f084" -} - -.wi-barometer:before { - content: "\f079" -} - -.wi-humidity:before { - content: "\f07a" -} - -.wi-na:before { - content: "\f07b" -} - -.wi-train:before { - content: "\f0cb" -} - -.wi-moon-new:before { - content: "\f095" -} - -.wi-moon-waxing-cresent-1:before { - content: "\f096" -} - -.wi-moon-waxing-cresent-2:before { - content: "\f097" -} - -.wi-moon-waxing-cresent-3:before { - content: "\f098" -} - -.wi-moon-waxing-cresent-4:before { - content: "\f099" -} - -.wi-moon-waxing-cresent-5:before { - content: "\f09a" -} - -.wi-moon-waxing-cresent-6:before { - content: "\f09b" -} - -.wi-moon-first-quarter:before { - content: "\f09c" -} - -.wi-moon-waxing-gibbous-1:before { - content: "\f09d" -} - -.wi-moon-waxing-gibbous-2:before { - content: "\f09e" -} - -.wi-moon-waxing-gibbous-3:before { - content: "\f09f" -} - -.wi-moon-waxing-gibbous-4:before { - content: "\f0a0" -} - -.wi-moon-waxing-gibbous-5:before { - content: "\f0a1" -} - -.wi-moon-waxing-gibbous-6:before { - content: "\f0a2" -} - -.wi-moon-full:before { - content: "\f0a3" -} - -.wi-moon-waning-gibbous-1:before { - content: "\f0a4" -} - -.wi-moon-waning-gibbous-2:before { - content: "\f0a5" -} - -.wi-moon-waning-gibbous-3:before { - content: "\f0a6" -} - -.wi-moon-waning-gibbous-4:before { - content: "\f0a7" -} - -.wi-moon-waning-gibbous-5:before { - content: "\f0a8" -} - -.wi-moon-waning-gibbous-6:before { - content: "\f0a9" -} - -.wi-moon-third-quarter:before { - content: "\f0aa" -} - -.wi-moon-waning-crescent-1:before { - content: "\f0ab" -} - -.wi-moon-waning-crescent-2:before { - content: "\f0ac" -} - -.wi-moon-waning-crescent-3:before { - content: "\f0ad" -} - -.wi-moon-waning-crescent-4:before { - content: "\f0ae" -} - -.wi-moon-waning-crescent-5:before { - content: "\f0af" -} - -.wi-moon-waning-crescent-6:before { - content: "\f0b0" -} - -.wi-moon-alt-new:before { - content: "\f0eb" -} - -.wi-moon-alt-waxing-cresent-1:before { - content: "\f0d0" -} - -.wi-moon-alt-waxing-cresent-2:before { - content: "\f0d1" -} - -.wi-moon-alt-waxing-cresent-3:before { - content: "\f0d2" -} - -.wi-moon-alt-waxing-cresent-4:before { - content: "\f0d3" -} - -.wi-moon-alt-waxing-cresent-5:before { - content: "\f0d4" -} - -.wi-moon-alt-waxing-cresent-6:before { - content: "\f0d5" -} - -.wi-moon-alt-first-quarter:before { - content: "\f0d6" -} - -.wi-moon-alt-waxing-gibbous-1:before { - content: "\f0d7" -} - -.wi-moon-alt-waxing-gibbous-2:before { - content: "\f0d8" -} - -.wi-moon-alt-waxing-gibbous-3:before { - content: "\f0d9" -} - -.wi-moon-alt-waxing-gibbous-4:before { - content: "\f0da" -} - -.wi-moon-alt-waxing-gibbous-5:before { - content: "\f0db" -} - -.wi-moon-alt-waxing-gibbous-6:before { - content: "\f0dc" -} - -.wi-moon-alt-full:before { - content: "\f0dd" -} - -.wi-moon-alt-waning-gibbous-1:before { - content: "\f0de" -} - -.wi-moon-alt-waning-gibbous-2:before { - content: "\f0df" -} - -.wi-moon-alt-waning-gibbous-3:before { - content: "\f0e0" -} - -.wi-moon-alt-waning-gibbous-4:before { - content: "\f0e1" -} - -.wi-moon-alt-waning-gibbous-5:before { - content: "\f0e2" -} - -.wi-moon-alt-waning-gibbous-6:before { - content: "\f0e3" -} - -.wi-moon-alt-third-quarter:before { - content: "\f0e4" -} - -.wi-moon-alt-waning-crescent-1:before { - content: "\f0e5" -} - -.wi-moon-alt-waning-crescent-2:before { - content: "\f0e6" -} - -.wi-moon-alt-waning-crescent-3:before { - content: "\f0e7" -} - -.wi-moon-alt-waning-crescent-4:before { - content: "\f0e8" -} - -.wi-moon-alt-waning-crescent-5:before { - content: "\f0e9" -} - -.wi-moon-alt-waning-crescent-6:before { - content: "\f0ea" -} - -.wi-moon-0:before { - content: "\f095" -} - -.wi-moon-1:before { - content: "\f096" -} - -.wi-moon-2:before { - content: "\f097" -} - -.wi-moon-3:before { - content: "\f098" -} - -.wi-moon-4:before { - content: "\f099" -} - -.wi-moon-5:before { - content: "\f09a" -} - -.wi-moon-6:before { - content: "\f09b" -} - -.wi-moon-7:before { - content: "\f09c" -} - -.wi-moon-8:before { - content: "\f09d" -} - -.wi-moon-9:before { - content: "\f09e" -} - -.wi-moon-10:before { - content: "\f09f" -} - -.wi-moon-11:before { - content: "\f0a0" -} - -.wi-moon-12:before { - content: "\f0a1" -} - -.wi-moon-13:before { - content: "\f0a2" -} - -.wi-moon-14:before { - content: "\f0a3" -} - -.wi-moon-15:before { - content: "\f0a4" -} - -.wi-moon-16:before { - content: "\f0a5" -} - -.wi-moon-17:before { - content: "\f0a6" -} - -.wi-moon-18:before { - content: "\f0a7" -} - -.wi-moon-19:before { - content: "\f0a8" -} - -.wi-moon-20:before { - content: "\f0a9" -} - -.wi-moon-21:before { - content: "\f0aa" -} - -.wi-moon-22:before { - content: "\f0ab" -} - -.wi-moon-23:before { - content: "\f0ac" -} - -.wi-moon-24:before { - content: "\f0ad" -} - -.wi-moon-25:before { - content: "\f0ae" -} - -.wi-moon-26:before { - content: "\f0af" -} - -.wi-moon-27:before { - content: "\f0b0" -} - -.wi-time-1:before { - content: "\f08a" -} - -.wi-time-2:before { - content: "\f08b" -} - -.wi-time-3:before { - content: "\f08c" -} - -.wi-time-4:before { - content: "\f08d" -} - -.wi-time-5:before { - content: "\f08e" -} - -.wi-time-6:before { - content: "\f08f" -} - -.wi-time-7:before { - content: "\f090" -} - -.wi-time-8:before { - content: "\f091" -} - -.wi-time-9:before { - content: "\f092" -} - -.wi-time-10:before { - content: "\f093" -} - -.wi-time-11:before { - content: "\f094" -} - -.wi-time-12:before { - content: "\f089" -} - -.wi-direction-up:before { - content: "\f058" -} - -.wi-direction-up-right:before { - content: "\f057" -} - -.wi-direction-right:before { - content: "\f04d" -} - -.wi-direction-down-right:before { - content: "\f088" -} - -.wi-direction-down:before { - content: "\f044" -} - -.wi-direction-down-left:before { - content: "\f043" -} - -.wi-direction-left:before { - content: "\f048" -} - -.wi-direction-up-left:before { - content: "\f087" -} - -.wi-wind-beaufort-0:before { - content: "\f0b7" -} - -.wi-wind-beaufort-1:before { - content: "\f0b8" -} - -.wi-wind-beaufort-2:before { - content: "\f0b9" -} - -.wi-wind-beaufort-3:before { - content: "\f0ba" -} - -.wi-wind-beaufort-4:before { - content: "\f0bb" -} - -.wi-wind-beaufort-5:before { - content: "\f0bc" -} - -.wi-wind-beaufort-6:before { - content: "\f0bd" -} - -.wi-wind-beaufort-7:before { - content: "\f0be" -} - -.wi-wind-beaufort-8:before { - content: "\f0bf" -} - -.wi-wind-beaufort-9:before { - content: "\f0c0" -} - -.wi-wind-beaufort-10:before { - content: "\f0c1" -} - -.wi-wind-beaufort-11:before { - content: "\f0c2" -} - -.wi-wind-beaufort-12:before { - content: "\f0c3" -} - -.wi-yahoo-0:before { - content: "\f056" -} - -.wi-yahoo-1:before { - content: "\f00e" -} - -.wi-yahoo-2:before { - content: "\f073" -} - -.wi-yahoo-3:before, -.wi-yahoo-4:before { - content: "\f01e" -} - -.wi-yahoo-5:before, -.wi-yahoo-6:before, -.wi-yahoo-7:before { - content: "\f017" -} - -.wi-yahoo-8:before { - content: "\f015" -} - -.wi-yahoo-9:before { - content: "\f01a" -} - -.wi-yahoo-10:before { - content: "\f015" -} - -.wi-yahoo-11:before, -.wi-yahoo-12:before { - content: "\f01a" -} - -.wi-yahoo-13:before { - content: "\f01b" -} - -.wi-yahoo-14:before { - content: "\f00a" -} - -.wi-yahoo-15:before { - content: "\f064" -} - -.wi-yahoo-16:before { - content: "\f01b" -} - -.wi-yahoo-17:before { - content: "\f015" -} - -.wi-yahoo-18:before { - content: "\f017" -} - -.wi-yahoo-19:before { - content: "\f063" -} - -.wi-yahoo-20:before { - content: "\f014" -} - -.wi-yahoo-21:before { - content: "\f021" -} - -.wi-yahoo-22:before { - content: "\f062" -} - -.wi-yahoo-23:before, -.wi-yahoo-24:before { - content: "\f050" -} - -.wi-yahoo-25:before { - content: "\f076" -} - -.wi-yahoo-26:before { - content: "\f013" -} - -.wi-yahoo-27:before { - content: "\f031" -} - -.wi-yahoo-28:before { - content: "\f002" -} - -.wi-yahoo-29:before { - content: "\f031" -} - -.wi-yahoo-30:before { - content: "\f002" -} - -.wi-yahoo-31:before { - content: "\f02e" -} - -.wi-yahoo-32:before { - content: "\f00d" -} - -.wi-yahoo-33:before { - content: "\f083" -} - -.wi-yahoo-34:before { - content: "\f00c" -} - -.wi-yahoo-35:before { - content: "\f017" -} - -.wi-yahoo-36:before { - content: "\f072" -} - -.wi-yahoo-37:before, -.wi-yahoo-38:before, -.wi-yahoo-39:before { - content: "\f00e" -} - -.wi-yahoo-40:before { - content: "\f01a" -} - -.wi-yahoo-41:before { - content: "\f064" -} - -.wi-yahoo-42:before { - content: "\f01b" -} - -.wi-yahoo-43:before { - content: "\f064" -} - -.wi-yahoo-44:before { - content: "\f00c" -} - -.wi-yahoo-45:before { - content: "\f00e" -} - -.wi-yahoo-46:before { - content: "\f01b" -} - -.wi-yahoo-47:before { - content: "\f00e" -} - -.wi-yahoo-3200:before { - content: "\f077" -} - -.wi-forecast-io-clear-day:before { - content: "\f00d" -} - -.wi-forecast-io-clear-night:before { - content: "\f02e" -} - -.wi-forecast-io-rain:before { - content: "\f019" -} - -.wi-forecast-io-snow:before { - content: "\f01b" -} - -.wi-forecast-io-sleet:before { - content: "\f0b5" -} - -.wi-forecast-io-wind:before { - content: "\f050" -} - -.wi-forecast-io-fog:before { - content: "\f014" -} - -.wi-forecast-io-cloudy:before { - content: "\f013" -} - -.wi-forecast-io-partly-cloudy-day:before { - content: "\f002" -} - -.wi-forecast-io-partly-cloudy-night:before { - content: "\f031" -} - -.wi-forecast-io-hail:before { - content: "\f015" -} - -.wi-forecast-io-thunderstorm:before { - content: "\f01e" -} - -.wi-forecast-io-tornado:before { - content: "\f056" -} - -.wi-wmo4680-00:before, -.wi-wmo4680-0:before { - content: "\f055" -} - -.wi-wmo4680-01:before, -.wi-wmo4680-1:before { - content: "\f013" -} - -.wi-wmo4680-02:before, -.wi-wmo4680-2:before { - content: "\f055" -} - -.wi-wmo4680-03:before, -.wi-wmo4680-3:before { - content: "\f013" -} - -.wi-wmo4680-04:before, -.wi-wmo4680-05:before, -.wi-wmo4680-10:before, -.wi-wmo4680-11:before, -.wi-wmo4680-4:before, -.wi-wmo4680-5:before { - content: "\f014" -} - -.wi-wmo4680-12:before { - content: "\f016" -} - -.wi-wmo4680-18:before { - content: "\f050" -} - -.wi-wmo4680-20:before { - content: "\f014" -} - -.wi-wmo4680-21:before, -.wi-wmo4680-22:before { - content: "\f017" -} - -.wi-wmo4680-23:before { - content: "\f019" -} - -.wi-wmo4680-24:before { - content: "\f01b" -} - -.wi-wmo4680-25:before { - content: "\f015" -} - -.wi-wmo4680-26:before { - content: "\f01e" -} - -.wi-wmo4680-27:before, -.wi-wmo4680-28:before, -.wi-wmo4680-29:before { - content: "\f063" -} - -.wi-wmo4680-30:before, -.wi-wmo4680-31:before, -.wi-wmo4680-32:before, -.wi-wmo4680-33:before, -.wi-wmo4680-34:before, -.wi-wmo4680-35:before { - content: "\f014" -} - -.wi-wmo4680-40:before { - content: "\f017" -} - -.wi-wmo4680-41:before { - content: "\f01c" -} - -.wi-wmo4680-42:before { - content: "\f019" -} - -.wi-wmo4680-43:before { - content: "\f01c" -} - -.wi-wmo4680-44:before { - content: "\f019" -} - -.wi-wmo4680-45:before, -.wi-wmo4680-46:before { - content: "\f015" -} - -.wi-wmo4680-47:before, -.wi-wmo4680-48:before { - content: "\f01b" -} - -.wi-wmo4680-50:before, -.wi-wmo4680-51:before { - content: "\f01c" -} - -.wi-wmo4680-52:before, -.wi-wmo4680-53:before { - content: "\f019" -} - -.wi-wmo4680-54:before, -.wi-wmo4680-55:before, -.wi-wmo4680-56:before { - content: "\f076" -} - -.wi-wmo4680-57:before { - content: "\f01c" -} - -.wi-wmo4680-58:before { - content: "\f019" -} - -.wi-wmo4680-60:before, -.wi-wmo4680-61:before { - content: "\f01c" -} - -.wi-wmo4680-62:before, -.wi-wmo4680-63:before { - content: "\f019" -} - -.wi-wmo4680-64:before, -.wi-wmo4680-65:before, -.wi-wmo4680-66:before { - content: "\f015" -} - -.wi-wmo4680-67:before, -.wi-wmo4680-68:before { - content: "\f017" -} - -.wi-wmo4680-70:before, -.wi-wmo4680-71:before, -.wi-wmo4680-72:before, -.wi-wmo4680-73:before { - content: "\f01b" -} - -.wi-wmo4680-74:before, -.wi-wmo4680-75:before, -.wi-wmo4680-76:before { - content: "\f076" -} - -.wi-wmo4680-77:before { - content: "\f01b" -} - -.wi-wmo4680-78:before { - content: "\f076" -} - -.wi-wmo4680-80:before { - content: "\f019" -} - -.wi-wmo4680-81:before { - content: "\f01c" -} - -.wi-wmo4680-82:before, -.wi-wmo4680-83:before { - content: "\f019" -} - -.wi-wmo4680-84:before { - content: "\f01d" -} - -.wi-wmo4680-85:before, -.wi-wmo4680-86:before, -.wi-wmo4680-87:before { - content: "\f017" -} - -.wi-wmo4680-89:before { - content: "\f015" -} - -.wi-wmo4680-90:before { - content: "\f016" -} - -.wi-wmo4680-91:before { - content: "\f01d" -} - -.wi-wmo4680-92:before, -.wi-wmo4680-93:before { - content: "\f01e" -} - -.wi-wmo4680-94:before { - content: "\f016" -} - -.wi-wmo4680-95:before, -.wi-wmo4680-96:before { - content: "\f01e" -} - -.wi-wmo4680-99:before { - content: "\f056" -} - -.wi-owm-200:before, -.wi-owm-201:before, -.wi-owm-202:before { - content: "\f01e" -} - -.wi-owm-210:before, -.wi-owm-211:before, -.wi-owm-212:before, -.wi-owm-221:before { - content: "\f016" -} - -.wi-owm-230:before, -.wi-owm-231:before, -.wi-owm-232:before { - content: "\f01e" -} - -.wi-owm-300:before, -.wi-owm-301:before { - content: "\f01c" -} - -.wi-owm-302:before { - content: "\f019" -} - -.wi-owm-310:before { - content: "\f017" -} - -.wi-owm-311:before, -.wi-owm-312:before { - content: "\f019" -} - -.wi-owm-313:before { - content: "\f01a" -} - -.wi-owm-314:before { - content: "\f019" -} - -.wi-owm-321:before, -.wi-owm-500:before { - content: "\f01c" -} - -.wi-owm-501:before, -.wi-owm-502:before, -.wi-owm-503:before, -.wi-owm-504:before { - content: "\f019" -} - -.wi-owm-511:before { - content: "\f017" -} - -.wi-owm-520:before, -.wi-owm-521:before, -.wi-owm-522:before { - content: "\f01a" -} - -.wi-owm-531:before { - content: "\f01d" -} - -.wi-owm-600:before, -.wi-owm-601:before { - content: "\f01b" -} - -.wi-owm-602:before { - content: "\f0b5" -} - -.wi-owm-611:before, -.wi-owm-612:before, -.wi-owm-615:before, -.wi-owm-616:before, -.wi-owm-620:before { - content: "\f017" -} - -.wi-owm-621:before, -.wi-owm-622:before { - content: "\f01b" -} - -.wi-owm-701:before { - content: "\f01a" -} - -.wi-owm-711:before { - content: "\f062" -} - -.wi-owm-721:before { - content: "\f0b6" -} - -.wi-owm-731:before { - content: "\f063" -} - -.wi-owm-741:before { - content: "\f014" -} - -.wi-owm-761:before, -.wi-owm-762:before { - content: "\f063" -} - -.wi-owm-771:before { - content: "\f011" -} - -.wi-owm-781:before { - content: "\f056" -} - -.wi-owm-800:before { - content: "\f00d" -} - -.wi-owm-801:before, -.wi-owm-802:before, -.wi-owm-803:before { - content: "\f011" -} - -.wi-owm-803:before { - content: "\f012" -} - -.wi-owm-804:before { - content: "\f013" -} - -.wi-owm-900:before { - content: "\f056" -} - -.wi-owm-901:before { - content: "\f01d" -} - -.wi-owm-902:before { - content: "\f073" -} - -.wi-owm-903:before { - content: "\f076" -} - -.wi-owm-904:before { - content: "\f072" -} - -.wi-owm-905:before { - content: "\f021" -} - -.wi-owm-906:before { - content: "\f015" -} - -.wi-owm-957:before { - content: "\f050" -} - -.wi-owm-day-200:before, -.wi-owm-day-201:before, -.wi-owm-day-202:before { - content: "\f010" -} - -.wi-owm-day-210:before, -.wi-owm-day-211:before, -.wi-owm-day-212:before, -.wi-owm-day-221:before { - content: "\f005" -} - -.wi-owm-day-230:before, -.wi-owm-day-231:before, -.wi-owm-day-232:before { - content: "\f010" -} - -.wi-owm-day-300:before, -.wi-owm-day-301:before { - content: "\f00b" -} - -.wi-owm-day-302:before, -.wi-owm-day-310:before, -.wi-owm-day-311:before, -.wi-owm-day-312:before, -.wi-owm-day-313:before, -.wi-owm-day-314:before { - content: "\f008" -} - -.wi-owm-day-321:before, -.wi-owm-day-500:before { - content: "\f00b" -} - -.wi-owm-day-501:before, -.wi-owm-day-502:before, -.wi-owm-day-503:before, -.wi-owm-day-504:before { - content: "\f008" -} - -.wi-owm-day-511:before { - content: "\f006" -} - -.wi-owm-day-520:before, -.wi-owm-day-521:before, -.wi-owm-day-522:before { - content: "\f009" -} - -.wi-owm-day-531:before { - content: "\f00e" -} - -.wi-owm-day-600:before { - content: "\f00a" -} - -.wi-owm-day-601:before { - content: "\f0b2" -} - -.wi-owm-day-602:before { - content: "\f00a" -} - -.wi-owm-day-611:before, -.wi-owm-day-612:before, -.wi-owm-day-615:before, -.wi-owm-day-616:before, -.wi-owm-day-620:before { - content: "\f006" -} - -.wi-owm-day-621:before, -.wi-owm-day-622:before { - content: "\f00a" -} - -.wi-owm-day-701:before { - content: "\f009" -} - -.wi-owm-day-711:before { - content: "\f062" -} - -.wi-owm-day-721:before { - content: "\f0b6" -} - -.wi-owm-day-731:before { - content: "\f063" -} - -.wi-owm-day-741:before { - content: "\f003" -} - -.wi-owm-day-761:before, -.wi-owm-day-762:before { - content: "\f063" -} - -.wi-owm-day-781:before { - content: "\f056" -} - -.wi-owm-day-800:before { - content: "\f00d" -} - -.wi-owm-day-801:before, -.wi-owm-day-802:before, -.wi-owm-day-803:before { - content: "\f000" -} - -.wi-owm-day-804:before { - content: "\f00c" -} - -.wi-owm-day-900:before { - content: "\f056" -} - -.wi-owm-day-902:before { - content: "\f073" -} - -.wi-owm-day-903:before { - content: "\f076" -} - -.wi-owm-day-904:before { - content: "\f072" -} - -.wi-owm-day-906:before { - content: "\f004" -} - -.wi-owm-day-957:before { - content: "\f050" -} - -.wi-owm-night-200:before, -.wi-owm-night-201:before, -.wi-owm-night-202:before { - content: "\f02d" -} - -.wi-owm-night-210:before, -.wi-owm-night-211:before, -.wi-owm-night-212:before, -.wi-owm-night-221:before { - content: "\f025" -} - -.wi-owm-night-230:before, -.wi-owm-night-231:before, -.wi-owm-night-232:before { - content: "\f02d" -} - -.wi-owm-night-300:before, -.wi-owm-night-301:before { - content: "\f02b" -} - -.wi-owm-night-302:before, -.wi-owm-night-310:before, -.wi-owm-night-311:before, -.wi-owm-night-312:before, -.wi-owm-night-313:before, -.wi-owm-night-314:before { - content: "\f028" -} - -.wi-owm-night-321:before, -.wi-owm-night-500:before { - content: "\f02b" -} - -.wi-owm-night-501:before, -.wi-owm-night-502:before, -.wi-owm-night-503:before, -.wi-owm-night-504:before { - content: "\f028" -} - -.wi-owm-night-511:before { - content: "\f026" -} - -.wi-owm-night-520:before, -.wi-owm-night-521:before, -.wi-owm-night-522:before { - content: "\f029" -} - -.wi-owm-night-531:before { - content: "\f02c" -} - -.wi-owm-night-600:before { - content: "\f02a" -} - -.wi-owm-night-601:before { - content: "\f0b4" -} - -.wi-owm-night-602:before { - content: "\f02a" -} - -.wi-owm-night-611:before, -.wi-owm-night-612:before, -.wi-owm-night-615:before, -.wi-owm-night-616:before, -.wi-owm-night-620:before { - content: "\f026" -} - -.wi-owm-night-621:before, -.wi-owm-night-622:before { - content: "\f02a" -} - -.wi-owm-night-701:before { - content: "\f029" -} - -.wi-owm-night-711:before { - content: "\f062" -} - -.wi-owm-night-721:before { - content: "\f0b6" -} - -.wi-owm-night-731:before { - content: "\f063" -} - -.wi-owm-night-741:before { - content: "\f04a" -} - -.wi-owm-night-761:before, -.wi-owm-night-762:before { - content: "\f063" -} - -.wi-owm-night-781:before { - content: "\f056" -} - -.wi-owm-night-800:before { - content: "\f02e" -} - -.wi-owm-night-801:before, -.wi-owm-night-802:before, -.wi-owm-night-803:before { - content: "\f022" -} - -.wi-owm-night-804:before { - content: "\f086" -} - -.wi-owm-night-900:before { - content: "\f056" -} - -.wi-owm-night-902:before { - content: "\f073" -} - -.wi-owm-night-903:before { - content: "\f076" -} - -.wi-owm-night-904:before { - content: "\f072" -} - -.wi-owm-night-906:before { - content: "\f024" -} - -.wi-owm-night-957:before { - content: "\f050" -} - -.glyphs.character-mapping { - margin: 0 0 20px; - padding: 20px 0 20px 30px; - color: rgba(0, 0, 0, .5); - border: 1px solid #d8e0e5; - -webkit-border-radius: 3px; - border-radius: 3px; -} - -.glyphs.character-mapping li { - margin: 0 30px 20px 0; - display: inline-block; - width: 90px; - text-align: center; - font-size: 24px; - color: #2b2b2b -} - -.linea-icon { - position: relative; -} - -.linea-icon svg { - fill: #000; -} - -.glyphs.character-mapping input { - margin: 0; - padding: 5px 0; - line-height: 12px; - font-size: 12px; - display: block; - width: 100%; - border: 1px solid #d8e0e5; - text-align: center; - outline: 0; -} - -.glyphs.character-mapping input:focus { - border: 1px solid #fbde4a; - -webkit-box-shadow: inset 0 0 3px #fbde4a; - box-shadow: inset 0 0 3px #fbde4a -} - -.glyphs.character-mapping input:hover { - -webkit-box-shadow: inset 0 0 3px #fbde4a; - box-shadow: inset 0 0 3px #fbde4a -} - -@font-face { - font-family: linea-arrows-10; - src: url(../less/icons/linea-icons/fonts/linea-arrows-10.eot); - src: url(../less/icons/linea-icons/fonts/linea-arrows-10.eot?#iefix) format("embedded-opentype"), url(../less/icons/linea-icons/fonts/linea-arrows-10.woff) format("woff"), url(../less/icons/linea-icons/fonts/linea-arrows-10.ttf) format("truetype"), url(../less/icons/linea-icons/fonts/linea-arrows-10.svg#linea-arrows-10) format("svg"); - font-weight: 400; - font-style: normal -} - -.linea-aerrow[data-icon]:before { - font-family: linea-arrows-10 !important; - content: attr(data-icon); - font-style: normal !important; - font-weight: 400 !important; - font-variant: normal !important; - text-transform: none !important; - speak: none; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.icon-arrows-anticlockwise:before { - content: "\e000" -} - -.icon-arrows-anticlockwise-dashed:before { - content: "\e001" -} - -.icon-arrows-button-down:before { - content: "\e002" -} - -.icon-arrows-button-off:before { - content: "\e003" -} - -.icon-arrows-button-on:before { - content: "\e004" -} - -.icon-arrows-button-up:before { - content: "\e005" -} - -.icon-arrows-check:before { - content: "\e006" -} - -.icon-arrows-circle-check:before { - content: "\e007" -} - -.icon-arrows-circle-down:before { - content: "\e008" -} - -.icon-arrows-circle-downleft:before { - content: "\e009" -} - -.icon-arrows-circle-downright:before { - content: "\e00a" -} - -.icon-arrows-circle-left:before { - content: "\e00b" -} - -.icon-arrows-circle-minus:before { - content: "\e00c" -} - -.icon-arrows-circle-plus:before { - content: "\e00d" -} - -.icon-arrows-circle-remove:before { - content: "\e00e" -} - -.icon-arrows-circle-right:before { - content: "\e00f" -} - -.icon-arrows-circle-up:before { - content: "\e010" -} - -.icon-arrows-circle-upleft:before { - content: "\e011" -} - -.icon-arrows-circle-upright:before { - content: "\e012" -} - -.icon-arrows-clockwise:before { - content: "\e013" -} - -.icon-arrows-clockwise-dashed:before { - content: "\e014" -} - -.icon-arrows-compress:before { - content: "\e015" -} - -.icon-arrows-deny:before { - content: "\e016" -} - -.icon-arrows-diagonal:before { - content: "\e017" -} - -.icon-arrows-diagonal2:before { - content: "\e018" -} - -.icon-arrows-down:before { - content: "\e019" -} - -.icon-arrows-down-double:before { - content: "\e01a" -} - -.icon-arrows-downleft:before { - content: "\e01b" -} - -.icon-arrows-downright:before { - content: "\e01c" -} - -.icon-arrows-drag-down:before { - content: "\e01d" -} - -.icon-arrows-drag-down-dashed:before { - content: "\e01e" -} - -.icon-arrows-drag-horiz:before { - content: "\e01f" -} - -.icon-arrows-drag-left:before { - content: "\e020" -} - -.icon-arrows-drag-left-dashed:before { - content: "\e021" -} - -.icon-arrows-drag-right:before { - content: "\e022" -} - -.icon-arrows-drag-right-dashed:before { - content: "\e023" -} - -.icon-arrows-drag-up:before { - content: "\e024" -} - -.icon-arrows-drag-up-dashed:before { - content: "\e025" -} - -.icon-arrows-drag-vert:before { - content: "\e026" -} - -.icon-arrows-exclamation:before { - content: "\e027" -} - -.icon-arrows-expand:before { - content: "\e028" -} - -.icon-arrows-expand-diagonal1:before { - content: "\e029" -} - -.icon-arrows-expand-horizontal1:before { - content: "\e02a" -} - -.icon-arrows-expand-vertical1:before { - content: "\e02b" -} - -.icon-arrows-fit-horizontal:before { - content: "\e02c" -} - -.icon-arrows-fit-vertical:before { - content: "\e02d" -} - -.icon-arrows-glide:before { - content: "\e02e" -} - -.icon-arrows-glide-horizontal:before { - content: "\e02f" -} - -.icon-arrows-glide-vertical:before { - content: "\e030" -} - -.icon-arrows-hamburger1:before { - content: "\e031" -} - -.icon-arrows-hamburger-2:before { - content: "\e032" -} - -.icon-arrows-horizontal:before { - content: "\e033" -} - -.icon-arrows-info:before { - content: "\e034" -} - -.icon-arrows-keyboard-alt:before { - content: "\e035" -} - -.icon-arrows-keyboard-cmd:before { - content: "\e036" -} - -.icon-arrows-keyboard-delete:before { - content: "\e037" -} - -.icon-arrows-keyboard-down:before { - content: "\e038" -} - -.icon-arrows-keyboard-left:before { - content: "\e039" -} - -.icon-arrows-keyboard-return:before { - content: "\e03a" -} - -.icon-arrows-keyboard-right:before { - content: "\e03b" -} - -.icon-arrows-keyboard-shift:before { - content: "\e03c" -} - -.icon-arrows-keyboard-tab:before { - content: "\e03d" -} - -.icon-arrows-keyboard-up:before { - content: "\e03e" -} - -.icon-arrows-left:before { - content: "\e03f" -} - -.icon-arrows-left-double-32:before { - content: "\e040" -} - -.icon-arrows-minus:before { - content: "\e041" -} - -.icon-arrows-move:before { - content: "\e042" -} - -.icon-arrows-move2:before { - content: "\e043" -} - -.icon-arrows-move-bottom:before { - content: "\e044" -} - -.icon-arrows-move-left:before { - content: "\e045" -} - -.icon-arrows-move-right:before { - content: "\e046" -} - -.icon-arrows-move-top:before { - content: "\e047" -} - -.icon-arrows-plus:before { - content: "\e048" -} - -.icon-arrows-question:before { - content: "\e049" -} - -.icon-arrows-remove:before { - content: "\e04a" -} - -.icon-arrows-right:before { - content: "\e04b" -} - -.icon-arrows-right-double:before { - content: "\e04c" -} - -.icon-arrows-rotate:before { - content: "\e04d" -} - -.icon-arrows-rotate-anti:before { - content: "\e04e" -} - -.icon-arrows-rotate-anti-dashed:before { - content: "\e04f" -} - -.icon-arrows-rotate-dashed:before { - content: "\e050" -} - -.icon-arrows-shrink:before { - content: "\e051" -} - -.icon-arrows-shrink-diagonal1:before { - content: "\e052" -} - -.icon-arrows-shrink-diagonal2:before { - content: "\e053" -} - -.icon-arrows-shrink-horizonal2:before { - content: "\e054" -} - -.icon-arrows-shrink-horizontal1:before { - content: "\e055" -} - -.icon-arrows-shrink-vertical1:before { - content: "\e056" -} - -.icon-arrows-shrink-vertical2:before { - content: "\e057" -} - -.icon-arrows-sign-down:before { - content: "\e058" -} - -.icon-arrows-sign-left:before { - content: "\e059" -} - -.icon-arrows-sign-right:before { - content: "\e05a" -} - -.icon-arrows-sign-up:before { - content: "\e05b" -} - -.icon-arrows-slide-down1:before { - content: "\e05c" -} - -.icon-arrows-slide-down2:before { - content: "\e05d" -} - -.icon-arrows-slide-left1:before { - content: "\e05e" -} - -.icon-arrows-slide-left2:before { - content: "\e05f" -} - -.icon-arrows-slide-right1:before { - content: "\e060" -} - -.icon-arrows-slide-right2:before { - content: "\e061" -} - -.icon-arrows-slide-up1:before { - content: "\e062" -} - -.icon-arrows-slide-up2:before { - content: "\e063" -} - -.icon-arrows-slim-down:before { - content: "\e064" -} - -.icon-arrows-slim-down-dashed:before { - content: "\e065" -} - -.icon-arrows-slim-left:before { - content: "\e066" -} - -.icon-arrows-slim-left-dashed:before { - content: "\e067" -} - -.icon-arrows-slim-right:before { - content: "\e068" -} - -.icon-arrows-slim-right-dashed:before { - content: "\e069" -} - -.icon-arrows-slim-up:before { - content: "\e06a" -} - -.icon-arrows-slim-up-dashed:before { - content: "\e06b" -} - -.icon-arrows-square-check:before { - content: "\e06c" -} - -.icon-arrows-square-down:before { - content: "\e06d" -} - -.icon-arrows-square-downleft:before { - content: "\e06e" -} - -.icon-arrows-square-downright:before { - content: "\e06f" -} - -.icon-arrows-square-left:before { - content: "\e070" -} - -.icon-arrows-square-minus:before { - content: "\e071" -} - -.icon-arrows-square-plus:before { - content: "\e072" -} - -.icon-arrows-square-remove:before { - content: "\e073" -} - -.icon-arrows-square-right:before { - content: "\e074" -} - -.icon-arrows-square-up:before { - content: "\e075" -} - -.icon-arrows-square-upleft:before { - content: "\e076" -} - -.icon-arrows-square-upright:before { - content: "\e077" -} - -.icon-arrows-squares:before { - content: "\e078" -} - -.icon-arrows-stretch-diagonal1:before { - content: "\e079" -} - -.icon-arrows-stretch-diagonal2:before { - content: "\e07a" -} - -.icon-arrows-stretch-diagonal3:before { - content: "\e07b" -} - -.icon-arrows-stretch-diagonal4:before { - content: "\e07c" -} - -.icon-arrows-stretch-horizontal1:before { - content: "\e07d" -} - -.icon-arrows-stretch-horizontal2:before { - content: "\e07e" -} - -.icon-arrows-stretch-vertical1:before { - content: "\e07f" -} - -.icon-arrows-stretch-vertical2:before { - content: "\e080" -} - -.icon-arrows-switch-horizontal:before { - content: "\e081" -} - -.icon-arrows-switch-vertical:before { - content: "\e082" -} - -.icon-arrows-up:before { - content: "\e083" -} - -.icon-arrows-up-double-33:before { - content: "\e084" -} - -.icon-arrows-upleft:before { - content: "\e085" -} - -.icon-arrows-upright:before { - content: "\e086" -} - -.icon-arrows-vertical:before { - content: "\e087" -} - -@font-face { - font-family: linea-basic-10; - src: url(../less/icons/linea-icons/fonts/linea-basic-10.eot); - src: url(../less/icons/linea-icons/fonts/linea-basic-10.eot?#iefix) format("embedded-opentype"), url(../less/icons/linea-icons/fonts/linea-basic-10.woff) format("woff"), url(../less/icons/linea-icons/fonts/linea-basic-10.ttf) format("truetype"), url(../less/icons/linea-icons/fonts/linea-basic-10.svg#linea-basic-10) format("svg"); - font-weight: 400; - font-style: normal -} - -.linea-basic[data-icon]:before { - font-family: linea-basic-10 !important; - content: attr(data-icon); - font-style: normal !important; - font-weight: 400 !important; - font-variant: normal !important; - text-transform: none !important; - speak: none; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.icon-basic-accelerator:before { - content: "a" -} - -.icon-basic-alarm:before { - content: "b" -} - -.icon-basic-anchor:before { - content: "c" -} - -.icon-basic-anticlockwise:before { - content: "d" -} - -.icon-basic-archive:before { - content: "e" -} - -.icon-basic-archive-full:before { - content: "f" -} - -.icon-basic-ban:before { - content: "g" -} - -.icon-basic-battery-charge:before { - content: "h" -} - -.icon-basic-battery-empty:before { - content: "i" -} - -.icon-basic-battery-full:before { - content: "j" -} - -.icon-basic-battery-half:before { - content: "k" -} - -.icon-basic-bolt:before { - content: "l" -} - -.icon-basic-book:before { - content: "m" -} - -.icon-basic-book-pen:before { - content: "n" -} - -.icon-basic-book-pencil:before { - content: "o" -} - -.icon-basic-bookmark:before { - content: "p" -} - -.icon-basic-calculator:before { - content: "q" -} - -.icon-basic-calendar:before { - content: "r" -} - -.icon-basic-cards-diamonds:before { - content: "s" -} - -.icon-basic-cards-hearts:before { - content: "t" -} - -.icon-basic-case:before { - content: "u" -} - -.icon-basic-chronometer:before { - content: "v" -} - -.icon-basic-clessidre:before { - content: "w" -} - -.icon-basic-clock:before { - content: "x" -} - -.icon-basic-clockwise:before { - content: "y" -} - -.icon-basic-cloud:before { - content: "z" -} - -.icon-basic-clubs:before { - content: "A" -} - -.icon-basic-compass:before { - content: "B" -} - -.icon-basic-cup:before { - content: "C" -} - -.icon-basic-diamonds:before { - content: "D" -} - -.icon-basic-display:before { - content: "E" -} - -.icon-basic-download:before { - content: "F" -} - -.icon-basic-exclamation:before { - content: "G" -} - -.icon-basic-eye:before { - content: "H" -} - -.icon-basic-eye-closed:before { - content: "I" -} - -.icon-basic-female:before { - content: "J" -} - -.icon-basic-flag1:before { - content: "K" -} - -.icon-basic-flag2:before { - content: "L" -} - -.icon-basic-floppydisk:before { - content: "M" -} - -.icon-basic-folder:before { - content: "N" -} - -.icon-basic-folder-multiple:before { - content: "O" -} - -.icon-basic-gear:before { - content: "P" -} - -.icon-basic-geolocalize-01:before { - content: "Q" -} - -.icon-basic-geolocalize-05:before { - content: "R" -} - -.icon-basic-globe:before { - content: "S" -} - -.icon-basic-gunsight:before { - content: "T" -} - -.icon-basic-hammer:before { - content: "U" -} - -.icon-basic-headset:before { - content: "V" -} - -.icon-basic-heart:before { - content: "W" -} - -.icon-basic-heart-broken:before { - content: "X" -} - -.icon-basic-helm:before { - content: "Y" -} - -.icon-basic-home:before { - content: "Z" -} - -.icon-basic-info:before { - content: "0" -} - -.icon-basic-ipod:before { - content: "1" -} - -.icon-basic-joypad:before { - content: "2" -} - -.icon-basic-key:before { - content: "3" -} - -.icon-basic-keyboard:before { - content: "4" -} - -.icon-basic-laptop:before { - content: "5" -} - -.icon-basic-life-buoy:before { - content: "6" -} - -.icon-basic-lightbulb:before { - content: "7" -} - -.icon-basic-link:before { - content: "8" -} - -.icon-basic-lock:before { - content: "9" -} - -.icon-basic-lock-open:before { - content: "!" -} - -.icon-basic-magic-mouse:before { - content: "\"" -} - -.icon-basic-magnifier:before { - content: "#" -} - -.icon-basic-magnifier-minus:before { - content: "$" -} - -.icon-basic-magnifier-plus:before { - content: "%" -} - -.icon-basic-mail:before { - content: "&" -} - -.icon-basic-mail-multiple:before { - content: "'" -} - -.icon-basic-mail-open:before { - content: "(" -} - -.icon-basic-mail-open-text:before { - content: ")" -} - -.icon-basic-male:before { - content: "*" -} - -.icon-basic-map:before { - content: "+" -} - -.icon-basic-message:before { - content: "," -} - -.icon-basic-message-multiple:before { - content: "-" -} - -.icon-basic-message-txt:before { - content: "." -} - -.icon-basic-mixer2:before { - content: "/" -} - -.icon-basic-mouse:before { - content: ":" -} - -.icon-basic-notebook:before { - content: "; - " - -} - -.icon-basic-notebook-pen:before { - content: "<" -} - -.icon-basic-notebook-pencil:before { - content: "=" -} - -.icon-basic-paperplane:before { - content: ">" -} - -.icon-basic-pencil-ruler:before { - content: "?" -} - -.icon-basic-pencil-ruler-pen:before { - content: "@" -} - -.icon-basic-photo:before { - content: "[" -} - -.icon-basic-picture:before { - content: "]" -} - -.icon-basic-picture-multiple:before { - content: "^" -} - -.icon-basic-pin1:before { - content: "_" -} - -.icon-basic-pin2:before { - content: "`" -} - -.icon-basic-postcard:before { - content:"{ - " - -} - -.icon-basic-postcard-multiple:before { - content: "|" -} - -.icon-basic-printer:before { - content: " - -} - -" - -} - -.icon-basic-question:before { - content: "~" -} - -.icon-basic-rss:before { - content: "\\" -} - -.icon-basic-server:before { - content: "\e000" -} - -.icon-basic-server2:before { - content: "\e001" -} - -.icon-basic-server-cloud:before { - content: "\e002" -} - -.icon-basic-server-download:before { - content: "\e003" -} - -.icon-basic-server-upload:before { - content: "\e004" -} - -.icon-basic-settings:before { - content: "\e005" -} - -.icon-basic-share:before { - content: "\e006" -} - -.icon-basic-sheet:before { - content: "\e007" -} - -.icon-basic-sheet-multiple:before { - content: "\e008" -} - -.icon-basic-sheet-pen:before { - content: "\e009" -} - -.icon-basic-sheet-pencil:before { - content: "\e00a" -} - -.icon-basic-sheet-txt:before { - content: "\e00b" -} - -.icon-basic-signs:before { - content: "\e00c" -} - -.icon-basic-smartphone:before { - content: "\e00d" -} - -.icon-basic-spades:before { - content: "\e00e" -} - -.icon-basic-spread:before { - content: "\e00f" -} - -.icon-basic-spread-bookmark:before { - content: "\e010" -} - -.icon-basic-spread-text:before { - content: "\e011" -} - -.icon-basic-spread-text-bookmark:before { - content: "\e012" -} - -.icon-basic-star:before { - content: "\e013" -} - -.icon-basic-tablet:before { - content: "\e014" -} - -.icon-basic-target:before { - content: "\e015" -} - -.icon-basic-todo:before { - content: "\e016" -} - -.icon-basic-todo-pen:before { - content: "\e017" -} - -.icon-basic-todo-pencil:before { - content: "\e018" -} - -.icon-basic-todo-txt:before { - content: "\e019" -} - -.icon-basic-todolist-pen:before { - content: "\e01a" -} - -.icon-basic-todolist-pencil:before { - content: "\e01b" -} - -.icon-basic-trashcan:before { - content: "\e01c" -} - -.icon-basic-trashcan-full:before { - content: "\e01d" -} - -.icon-basic-trashcan-refresh:before { - content: "\e01e" -} - -.icon-basic-trashcan-remove:before { - content: "\e01f" -} - -.icon-basic-upload:before { - content: "\e020" -} - -.icon-basic-usb:before { - content: "\e021" -} - -.icon-basic-video:before { - content: "\e022" -} - -.icon-basic-watch:before { - content: "\e023" -} - -.icon-basic-webpage:before { - content: "\e024" -} - -.icon-basic-webpage-img-txt:before { - content: "\e025" -} - -.icon-basic-webpage-multiple:before { - content: "\e026" -} - -.icon-basic-webpage-txt:before { - content: "\e027" -} - -.icon-basic-world:before { - content: "\e028" -} - -@font-face { - font-family: linea-basic-elaboration-10; - src: url(../less/icons/linea-icons/fonts/linea-basic-elaboration-10.eot); - src: url(../less/icons/linea-icons/fonts/linea-basic-elaboration-10.eot?#iefix) format("embedded-opentype"), url(../less/icons/linea-icons/fonts/linea-basic-elaboration-10.woff) format("woff"), url(../less/icons/linea-icons/fonts/linea-basic-elaboration-10.ttf) format("truetype"), url(../less/icons/linea-icons/fonts/linea-basic-elaboration-10.svg#linea-basic-elaboration-10) format("svg"); - font-weight: 400; - font-style: normal -} - -.linea-elaborate[data-icon]:before { - font-family: linea-basic-elaboration-10 !important; - content: attr(data-icon); - font-style: normal !important; - font-weight: 400 !important; - font-variant: normal !important; - text-transform: none !important; - speak: none; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.icon-basic-elaboration-bookmark-checck:before { - content: "a" -} - -.icon-basic-elaboration-bookmark-minus:before { - content: "b" -} - -.icon-basic-elaboration-bookmark-plus:before { - content: "c" -} - -.icon-basic-elaboration-bookmark-remove:before { - content: "d" -} - -.icon-basic-elaboration-briefcase-check:before { - content: "e" -} - -.icon-basic-elaboration-briefcase-download:before { - content: "f" -} - -.icon-basic-elaboration-briefcase-flagged:before { - content: "g" -} - -.icon-basic-elaboration-briefcase-minus:before { - content: "h" -} - -.icon-basic-elaboration-briefcase-plus:before { - content: "i" -} - -.icon-basic-elaboration-briefcase-refresh:before { - content: "j" -} - -.icon-basic-elaboration-briefcase-remove:before { - content: "k" -} - -.icon-basic-elaboration-briefcase-search:before { - content: "l" -} - -.icon-basic-elaboration-briefcase-star:before { - content: "m" -} - -.icon-basic-elaboration-briefcase-upload:before { - content: "n" -} - -.icon-basic-elaboration-browser-check:before { - content: "o" -} - -.icon-basic-elaboration-browser-download:before { - content: "p" -} - -.icon-basic-elaboration-browser-minus:before { - content: "q" -} - -.icon-basic-elaboration-browser-plus:before { - content: "r" -} - -.icon-basic-elaboration-browser-refresh:before { - content: "s" -} - -.icon-basic-elaboration-browser-remove:before { - content: "t" -} - -.icon-basic-elaboration-browser-search:before { - content: "u" -} - -.icon-basic-elaboration-browser-star:before { - content: "v" -} - -.icon-basic-elaboration-browser-upload:before { - content: "w" -} - -.icon-basic-elaboration-calendar-check:before { - content: "x" -} - -.icon-basic-elaboration-calendar-cloud:before { - content: "y" -} - -.icon-basic-elaboration-calendar-download:before { - content: "z" -} - -.icon-basic-elaboration-calendar-empty:before { - content: "A" -} - -.icon-basic-elaboration-calendar-flagged:before { - content: "B" -} - -.icon-basic-elaboration-calendar-heart:before { - content: "C" -} - -.icon-basic-elaboration-calendar-minus:before { - content: "D" -} - -.icon-basic-elaboration-calendar-next:before { - content: "E" -} - -.icon-basic-elaboration-calendar-noaccess:before { - content: "F" -} - -.icon-basic-elaboration-calendar-pencil:before { - content: "G" -} - -.icon-basic-elaboration-calendar-plus:before { - content: "H" -} - -.icon-basic-elaboration-calendar-previous:before { - content: "I" -} - -.icon-basic-elaboration-calendar-refresh:before { - content: "J" -} - -.icon-basic-elaboration-calendar-remove:before { - content: "K" -} - -.icon-basic-elaboration-calendar-search:before { - content: "L" -} - -.icon-basic-elaboration-calendar-star:before { - content: "M" -} - -.icon-basic-elaboration-calendar-upload:before { - content: "N" -} - -.icon-basic-elaboration-cloud-check:before { - content: "O" -} - -.icon-basic-elaboration-cloud-download:before { - content: "P" -} - -.icon-basic-elaboration-cloud-minus:before { - content: "Q" -} - -.icon-basic-elaboration-cloud-noaccess:before { - content: "R" -} - -.icon-basic-elaboration-cloud-plus:before { - content: "S" -} - -.icon-basic-elaboration-cloud-refresh:before { - content: "T" -} - -.icon-basic-elaboration-cloud-remove:before { - content: "U" -} - -.icon-basic-elaboration-cloud-search:before { - content: "V" -} - -.icon-basic-elaboration-cloud-upload:before { - content: "W" -} - -.icon-basic-elaboration-document-check:before { - content: "X" -} - -.icon-basic-elaboration-document-cloud:before { - content: "Y" -} - -.icon-basic-elaboration-document-download:before { - content: "Z" -} - -.icon-basic-elaboration-document-flagged:before { - content: "0" -} - -.icon-basic-elaboration-document-graph:before { - content: "1" -} - -.icon-basic-elaboration-document-heart:before { - content: "2" -} - -.icon-basic-elaboration-document-minus:before { - content: "3" -} - -.icon-basic-elaboration-document-next:before { - content: "4" -} - -.icon-basic-elaboration-document-noaccess:before { - content: "5" -} - -.icon-basic-elaboration-document-note:before { - content: "6" -} - -.icon-basic-elaboration-document-pencil:before { - content: "7" -} - -.icon-basic-elaboration-document-picture:before { - content: "8" -} - -.icon-basic-elaboration-document-plus:before { - content: "9" -} - -.icon-basic-elaboration-document-previous:before { - content: "!" -} - -.icon-basic-elaboration-document-refresh:before { - content: "\"" -} - -.icon-basic-elaboration-document-remove:before { - content: "#" -} - -.icon-basic-elaboration-document-search:before { - content: "$" -} - -.icon-basic-elaboration-document-star:before { - content: "%" -} - -.icon-basic-elaboration-document-upload:before { - content: "&" -} - -.icon-basic-elaboration-folder-check:before { - content: "'" -} - -.icon-basic-elaboration-folder-cloud:before { - content: "(" -} - -.icon-basic-elaboration-folder-document:before { - content: ")" -} - -.icon-basic-elaboration-folder-download:before { - content: "*" -} - -.icon-basic-elaboration-folder-flagged:before { - content: "+" -} - -.icon-basic-elaboration-folder-graph:before { - content: "," -} - -.icon-basic-elaboration-folder-heart:before { - content: "-" -} - -.icon-basic-elaboration-folder-minus:before { - content: "." -} - -.icon-basic-elaboration-folder-next:before { - content: "/" -} - -.icon-basic-elaboration-folder-noaccess:before { - content: ":" -} - -.icon-basic-elaboration-folder-note:before { - content: "; - " - -} - -.icon-basic-elaboration-folder-pencil:before { - content: "<" -} - -.icon-basic-elaboration-folder-picture:before { - content: "=" -} - -.icon-basic-elaboration-folder-plus:before { - content: ">" -} - -.icon-basic-elaboration-folder-previous:before { - content: "?" -} - -.icon-basic-elaboration-folder-refresh:before { - content: "@" -} - -.icon-basic-elaboration-folder-remove:before { - content: "[" -} - -.icon-basic-elaboration-folder-search:before { - content: "]" -} - -.icon-basic-elaboration-folder-star:before { - content: "^" -} - -.icon-basic-elaboration-folder-upload:before { - content: "_" -} - -.icon-basic-elaboration-mail-check:before { - content: "`" -} - -.icon-basic-elaboration-mail-cloud:before { - content:"{ - " - -} - -.icon-basic-elaboration-mail-document:before { - content: "|" -} - -.icon-basic-elaboration-mail-download:before { - content: " - -} - -" - -} - -.icon-basic-elaboration-mail-flagged:before { - content: "~" -} - -.icon-basic-elaboration-mail-heart:before { - content: "\\" -} - -.icon-basic-elaboration-mail-next:before { - content: "\e000" -} - -.icon-basic-elaboration-mail-noaccess:before { - content: "\e001" -} - -.icon-basic-elaboration-mail-note:before { - content: "\e002" -} - -.icon-basic-elaboration-mail-pencil:before { - content: "\e003" -} - -.icon-basic-elaboration-mail-picture:before { - content: "\e004" -} - -.icon-basic-elaboration-mail-previous:before { - content: "\e005" -} - -.icon-basic-elaboration-mail-refresh:before { - content: "\e006" -} - -.icon-basic-elaboration-mail-remove:before { - content: "\e007" -} - -.icon-basic-elaboration-mail-search:before { - content: "\e008" -} - -.icon-basic-elaboration-mail-star:before { - content: "\e009" -} - -.icon-basic-elaboration-mail-upload:before { - content: "\e00a" -} - -.icon-basic-elaboration-message-check:before { - content: "\e00b" -} - -.icon-basic-elaboration-message-dots:before { - content: "\e00c" -} - -.icon-basic-elaboration-message-happy:before { - content: "\e00d" -} - -.icon-basic-elaboration-message-heart:before { - content: "\e00e" -} - -.icon-basic-elaboration-message-minus:before { - content: "\e00f" -} - -.icon-basic-elaboration-message-note:before { - content: "\e010" -} - -.icon-basic-elaboration-message-plus:before { - content: "\e011" -} - -.icon-basic-elaboration-message-refresh:before { - content: "\e012" -} - -.icon-basic-elaboration-message-remove:before { - content: "\e013" -} - -.icon-basic-elaboration-message-sad:before { - content: "\e014" -} - -.icon-basic-elaboration-smartphone-cloud:before { - content: "\e015" -} - -.icon-basic-elaboration-smartphone-heart:before { - content: "\e016" -} - -.icon-basic-elaboration-smartphone-noaccess:before { - content: "\e017" -} - -.icon-basic-elaboration-smartphone-note:before { - content: "\e018" -} - -.icon-basic-elaboration-smartphone-pencil:before { - content: "\e019" -} - -.icon-basic-elaboration-smartphone-picture:before { - content: "\e01a" -} - -.icon-basic-elaboration-smartphone-refresh:before { - content: "\e01b" -} - -.icon-basic-elaboration-smartphone-search:before { - content: "\e01c" -} - -.icon-basic-elaboration-tablet-cloud:before { - content: "\e01d" -} - -.icon-basic-elaboration-tablet-heart:before { - content: "\e01e" -} - -.icon-basic-elaboration-tablet-noaccess:before { - content: "\e01f" -} - -.icon-basic-elaboration-tablet-note:before { - content: "\e020" -} - -.icon-basic-elaboration-tablet-pencil:before { - content: "\e021" -} - -.icon-basic-elaboration-tablet-picture:before { - content: "\e022" -} - -.icon-basic-elaboration-tablet-refresh:before { - content: "\e023" -} - -.icon-basic-elaboration-tablet-search:before { - content: "\e024" -} - -.icon-basic-elaboration-todolist-2:before { - content: "\e025" -} - -.icon-basic-elaboration-todolist-check:before { - content: "\e026" -} - -.icon-basic-elaboration-todolist-cloud:before { - content: "\e027" -} - -.icon-basic-elaboration-todolist-download:before { - content: "\e028" -} - -.icon-basic-elaboration-todolist-flagged:before { - content: "\e029" -} - -.icon-basic-elaboration-todolist-minus:before { - content: "\e02a" -} - -.icon-basic-elaboration-todolist-noaccess:before { - content: "\e02b" -} - -.icon-basic-elaboration-todolist-pencil:before { - content: "\e02c" -} - -.icon-basic-elaboration-todolist-plus:before { - content: "\e02d" -} - -.icon-basic-elaboration-todolist-refresh:before { - content: "\e02e" -} - -.icon-basic-elaboration-todolist-remove:before { - content: "\e02f" -} - -.icon-basic-elaboration-todolist-search:before { - content: "\e030" -} - -.icon-basic-elaboration-todolist-star:before { - content: "\e031" -} - -.icon-basic-elaboration-todolist-upload:before { - content: "\e032" -} - -@font-face { - font-family: linea-ecommerce-10; - src: url(../less/icons/linea-icons/fonts/linea-ecommerce-10.eot); - src: url(../less/icons/linea-icons/fonts/linea-ecommerce-10.eot?#iefix) format("embedded-opentype"), url(../less/icons/linea-icons/fonts/linea-ecommerce-10.woff) format("woff"), url(../less/icons/linea-icons/fonts/linea-ecommerce-10.ttf) format("truetype"), url(../less/icons/linea-icons/fonts/linea-ecommerce-10.svg#linea-ecommerce-10) format("svg"); - font-weight: 400; - font-style: normal -} - -.linea-ecommerce[data-icon]:before { - font-family: linea-ecommerce-10 !important; - content: attr(data-icon); - font-style: normal !important; - font-weight: 400 !important; - font-variant: normal !important; - text-transform: none !important; - speak: none; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.icon-ecommerce-bag:before { - content: "a" -} - -.icon-ecommerce-bag-check:before { - content: "b" -} - -.icon-ecommerce-bag-cloud:before { - content: "c" -} - -.icon-ecommerce-bag-download:before { - content: "d" -} - -.icon-ecommerce-bag-minus:before { - content: "e" -} - -.icon-ecommerce-bag-plus:before { - content: "f" -} - -.icon-ecommerce-bag-refresh:before { - content: "g" -} - -.icon-ecommerce-bag-remove:before { - content: "h" -} - -.icon-ecommerce-bag-search:before { - content: "i" -} - -.icon-ecommerce-bag-upload:before { - content: "j" -} - -.icon-ecommerce-banknote:before { - content: "k" -} - -.icon-ecommerce-banknotes:before { - content: "l" -} - -.icon-ecommerce-basket:before { - content: "m" -} - -.icon-ecommerce-basket-check:before { - content: "n" -} - -.icon-ecommerce-basket-cloud:before { - content: "o" -} - -.icon-ecommerce-basket-download:before { - content: "p" -} - -.icon-ecommerce-basket-minus:before { - content: "q" -} - -.icon-ecommerce-basket-plus:before { - content: "r" -} - -.icon-ecommerce-basket-refresh:before { - content: "s" -} - -.icon-ecommerce-basket-remove:before { - content: "t" -} - -.icon-ecommerce-basket-search:before { - content: "u" -} - -.icon-ecommerce-basket-upload:before { - content: "v" -} - -.icon-ecommerce-bath:before { - content: "w" -} - -.icon-ecommerce-cart:before { - content: "x" -} - -.icon-ecommerce-cart-check:before { - content: "y" -} - -.icon-ecommerce-cart-cloud:before { - content: "z" -} - -.icon-ecommerce-cart-content:before { - content: "A" -} - -.icon-ecommerce-cart-download:before { - content: "B" -} - -.icon-ecommerce-cart-minus:before { - content: "C" -} - -.icon-ecommerce-cart-plus:before { - content: "D" -} - -.icon-ecommerce-cart-refresh:before { - content: "E" -} - -.icon-ecommerce-cart-remove:before { - content: "F" -} - -.icon-ecommerce-cart-search:before { - content: "G" -} - -.icon-ecommerce-cart-upload:before { - content: "H" -} - -.icon-ecommerce-cent:before { - content: "I" -} - -.icon-ecommerce-colon:before { - content: "J" -} - -.icon-ecommerce-creditcard:before { - content: "K" -} - -.icon-ecommerce-diamond:before { - content: "L" -} - -.icon-ecommerce-dollar:before { - content: "M" -} - -.icon-ecommerce-euro:before { - content: "N" -} - -.icon-ecommerce-franc:before { - content: "O" -} - -.icon-ecommerce-gift:before { - content: "P" -} - -.icon-ecommerce-graph1:before { - content: "Q" -} - -.icon-ecommerce-graph2:before { - content: "R" -} - -.icon-ecommerce-graph3:before { - content: "S" -} - -.icon-ecommerce-graph-decrease:before { - content: "T" -} - -.icon-ecommerce-graph-increase:before { - content: "U" -} - -.icon-ecommerce-guarani:before { - content: "V" -} - -.icon-ecommerce-kips:before { - content: "W" -} - -.icon-ecommerce-lira:before { - content: "X" -} - -.icon-ecommerce-megaphone:before { - content: "Y" -} - -.icon-ecommerce-money:before { - content: "Z" -} - -.icon-ecommerce-naira:before { - content: "0" -} - -.icon-ecommerce-pesos:before { - content: "1" -} - -.icon-ecommerce-pound:before { - content: "2" -} - -.icon-ecommerce-receipt:before { - content: "3" -} - -.icon-ecommerce-receipt-bath:before { - content: "4" -} - -.icon-ecommerce-receipt-cent:before { - content: "5" -} - -.icon-ecommerce-receipt-dollar:before { - content: "6" -} - -.icon-ecommerce-receipt-euro:before { - content: "7" -} - -.icon-ecommerce-receipt-franc:before { - content: "8" -} - -.icon-ecommerce-receipt-guarani:before { - content: "9" -} - -.icon-ecommerce-receipt-kips:before { - content: "!" -} - -.icon-ecommerce-receipt-lira:before { - content: "\"" -} - -.icon-ecommerce-receipt-naira:before { - content: "#" -} - -.icon-ecommerce-receipt-pesos:before { - content: "$" -} - -.icon-ecommerce-receipt-pound:before { - content: "%" -} - -.icon-ecommerce-receipt-rublo:before { - content: "&" -} - -.icon-ecommerce-receipt-rupee:before { - content: "'" -} - -.icon-ecommerce-receipt-tugrik:before { - content: "(" -} - -.icon-ecommerce-receipt-won:before { - content: ")" -} - -.icon-ecommerce-receipt-yen:before { - content: "*" -} - -.icon-ecommerce-receipt-yen2:before { - content: "+" -} - -.icon-ecommerce-recept-colon:before { - content: "," -} - -.icon-ecommerce-rublo:before { - content: "-" -} - -.icon-ecommerce-rupee:before { - content: "." -} - -.icon-ecommerce-safe:before { - content: "/" -} - -.icon-ecommerce-sale:before { - content: ":" -} - -.icon-ecommerce-sales:before { - content: "; - " - -} - -.icon-ecommerce-ticket:before { - content: "<" -} - -.icon-ecommerce-tugriks:before { - content: "=" -} - -.icon-ecommerce-wallet:before { - content: ">" -} - -.icon-ecommerce-won:before { - content: "?" -} - -.icon-ecommerce-yen:before { - content: "@" -} - -.icon-ecommerce-yen2:before { - content: "[" -} - -@font-face { - font-family: linea-music-10; - src: url(../less/icons/linea-icons/fonts/linea-music-10.eot); - src: url(../less/icons/linea-icons/fonts/linea-music-10.eot?#iefix) format("embedded-opentype"), url(../less/icons/linea-icons/fonts/linea-music-10.woff) format("woff"), url(../less/icons/linea-icons/fonts/linea-music-10.ttf) format("truetype"), url(../less/icons/linea-icons/fonts/linea-music-10.svg#linea-music-10) format("svg"); - font-weight: 400; - font-style: normal -} - -.linea-music[data-icon]:before { - font-family: linea-music-10 !important; - content: attr(data-icon); - font-style: normal !important; - font-weight: 400 !important; - font-variant: normal !important; - text-transform: none !important; - speak: none; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.icon-music-beginning-button:before { - content: "a" -} - -.icon-music-bell:before { - content: "b" -} - -.icon-music-cd:before { - content: "c" -} - -.icon-music-diapason:before { - content: "d" -} - -.icon-music-eject-button:before { - content: "e" -} - -.icon-music-end-button:before { - content: "f" -} - -.icon-music-fastforward-button:before { - content: "g" -} - -.icon-music-headphones:before { - content: "h" -} - -.icon-music-ipod:before { - content: "i" -} - -.icon-music-loudspeaker:before { - content: "j" -} - -.icon-music-microphone:before { - content: "k" -} - -.icon-music-microphone-old:before { - content: "l" -} - -.icon-music-mixer:before { - content: "m" -} - -.icon-music-mute:before { - content: "n" -} - -.icon-music-note-multiple:before { - content: "o" -} - -.icon-music-note-single:before { - content: "p" -} - -.icon-music-pause-button:before { - content: "q" -} - -.icon-music-play-button:before { - content: "r" -} - -.icon-music-playlist:before { - content: "s" -} - -.icon-music-radio-ghettoblaster:before { - content: "t" -} - -.icon-music-radio-portable:before { - content: "u" -} - -.icon-music-record:before { - content: "v" -} - -.icon-music-recordplayer:before { - content: "w" -} - -.icon-music-repeat-button:before { - content: "x" -} - -.icon-music-rewind-button:before { - content: "y" -} - -.icon-music-shuffle-button:before { - content: "z" -} - -.icon-music-stop-button:before { - content: "A" -} - -.icon-music-tape:before { - content: "B" -} - -.icon-music-volume-down:before { - content: "C" -} - -.icon-music-volume-up:before { - content: "D" -} - -@font-face { - font-family: linea-software-10; - src: url(../less/icons/linea-icons/fonts/linea-software-10.eot); - src: url(../less/icons/linea-icons/fonts/linea-software-10.eot?#iefix) format("embedded-opentype"), url(../less/icons/linea-icons/fonts/linea-software-10.woff) format("woff"), url(../less/icons/linea-icons/fonts/linea-software-10.ttf) format("truetype"), url(../less/icons/linea-icons/fonts/linea-software-10.svg#linea-software-10) format("svg"); - font-weight: 400; - font-style: normal -} - -.linea-software[data-icon]:before { - font-family: linea-software-10 !important; - content: attr(data-icon); - font-style: normal !important; - font-weight: 400 !important; - font-variant: normal !important; - text-transform: none !important; - speak: none; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.icon-software-add-vectorpoint:before { - content: "a" -} - -.icon-software-box-oval:before { - content: "b" -} - -.icon-software-box-polygon:before { - content: "c" -} - -.icon-software-box-rectangle:before { - content: "d" -} - -.icon-software-box-roundedrectangle:before { - content: "e" -} - -.icon-software-character:before { - content: "f" -} - -.icon-software-crop:before { - content: "g" -} - -.icon-software-eyedropper:before { - content: "h" -} - -.icon-software-font-allcaps:before { - content: "i" -} - -.icon-software-font-baseline-shift:before { - content: "j" -} - -.icon-software-font-horizontal-scale:before { - content: "k" -} - -.icon-software-font-kerning:before { - content: "l" -} - -.icon-software-font-leading:before { - content: "m" -} - -.icon-software-font-size:before { - content: "n" -} - -.icon-software-font-smallcapital:before { - content: "o" -} - -.icon-software-font-smallcaps:before { - content: "p" -} - -.icon-software-font-strikethrough:before { - content: "q" -} - -.icon-software-font-tracking:before { - content: "r" -} - -.icon-software-font-underline:before { - content: "s" -} - -.icon-software-font-vertical-scale:before { - content: "t" -} - -.icon-software-horizontal-align-center:before { - content: "u" -} - -.icon-software-horizontal-align-left:before { - content: "v" -} - -.icon-software-horizontal-align-right:before { - content: "w" -} - -.icon-software-horizontal-distribute-center:before { - content: "x" -} - -.icon-software-horizontal-distribute-left:before { - content: "y" -} - -.icon-software-horizontal-distribute-right:before { - content: "z" -} - -.icon-software-indent-firstline:before { - content: "A" -} - -.icon-software-indent-left:before { - content: "B" -} - -.icon-software-indent-right:before { - content: "C" -} - -.icon-software-lasso:before { - content: "D" -} - -.icon-software-layers1:before { - content: "E" -} - -.icon-software-layers2:before { - content: "F" -} - -.icon-software-layout:before { - content: "G" -} - -.icon-software-layout-2columns:before { - content: "H" -} - -.icon-software-layout-3columns:before { - content: "I" -} - -.icon-software-layout-4boxes:before { - content: "J" -} - -.icon-software-layout-4columns:before { - content: "K" -} - -.icon-software-layout-4lines:before { - content: "L" -} - -.icon-software-layout-8boxes:before { - content: "M" -} - -.icon-software-layout-header:before { - content: "N" -} - -.icon-software-layout-header-2columns:before { - content: "O" -} - -.icon-software-layout-header-3columns:before { - content: "P" -} - -.icon-software-layout-header-4boxes:before { - content: "Q" -} - -.icon-software-layout-header-4columns:before { - content: "R" -} - -.icon-software-layout-header-complex:before { - content: "S" -} - -.icon-software-layout-header-complex2:before { - content: "T" -} - -.icon-software-layout-header-complex3:before { - content: "U" -} - -.icon-software-layout-header-complex4:before { - content: "V" -} - -.icon-software-layout-header-sideleft:before { - content: "W" -} - -.icon-software-layout-header-sideright:before { - content: "X" -} - -.icon-software-layout-sidebar-left:before { - content: "Y" -} - -.icon-software-layout-sidebar-right:before { - content: "Z" -} - -.icon-software-magnete:before { - content: "0" -} - -.icon-software-pages:before { - content: "1" -} - -.icon-software-paintbrush:before { - content: "2" -} - -.icon-software-paintbucket:before { - content: "3" -} - -.icon-software-paintroller:before { - content: "4" -} - -.icon-software-paragraph:before { - content: "5" -} - -.icon-software-paragraph-align-left:before { - content: "6" -} - -.icon-software-paragraph-align-right:before { - content: "7" -} - -.icon-software-paragraph-center:before { - content: "8" -} - -.icon-software-paragraph-justify-all:before { - content: "9" -} - -.icon-software-paragraph-justify-center:before { - content: "!" -} - -.icon-software-paragraph-justify-left:before { - content: "\"" -} - -.icon-software-paragraph-justify-right:before { - content: "#" -} - -.icon-software-paragraph-space-after:before { - content: "$" -} - -.icon-software-paragraph-space-before:before { - content: "%" -} - -.icon-software-pathfinder-exclude:before { - content: "&" -} - -.icon-software-pathfinder-intersect:before { - content: "'" -} - -.icon-software-pathfinder-subtract:before { - content: "(" -} - -.icon-software-pathfinder-unite:before { - content: ")" -} - -.icon-software-pen:before { - content: "*" -} - -.icon-software-pen-add:before { - content: "+" -} - -.icon-software-pen-remove:before { - content: "," -} - -.icon-software-pencil:before { - content: "-" -} - -.icon-software-polygonallasso:before { - content: "." -} - -.icon-software-reflect-horizontal:before { - content: "/" -} - -.icon-software-reflect-vertical:before { - content: ":" -} - -.icon-software-remove-vectorpoint:before { - content: "; - " - -} - -.icon-software-scale-expand:before { - content: "<" -} - -.icon-software-scale-reduce:before { - content: "=" -} - -.icon-software-selection-oval:before { - content: ">" -} - -.icon-software-selection-polygon:before { - content: "?" -} - -.icon-software-selection-rectangle:before { - content: "@" -} - -.icon-software-selection-roundedrectangle:before { - content: "[" -} - -.icon-software-shape-oval:before { - content: "]" -} - -.icon-software-shape-polygon:before { - content: "^" -} - -.icon-software-shape-rectangle:before { - content: "_" -} - -.icon-software-shape-roundedrectangle:before { - content: "`" -} - -.icon-software-slice:before { - content:"{ - " - -} - -.icon-software-transform-bezier:before { - content: "|" -} - -.icon-software-vector-box:before { - content: " - -} - -" - -} - -.icon-software-vector-composite:before { - content: "~" -} - -.icon-software-vector-line:before { - content: "\\" -} - -.icon-software-vertical-align-bottom:before { - content: "\e000" -} - -.icon-software-vertical-align-center:before { - content: "\e001" -} - -.icon-software-vertical-align-top:before { - content: "\e002" -} - -.icon-software-vertical-distribute-bottom:before { - content: "\e003" -} - -.icon-software-vertical-distribute-center:before { - content: "\e004" -} - -.icon-software-vertical-distribute-top:before { - content: "\e005" -} - -@font-face { - font-family: linea-weather-10; - src: url(../less/icons/linea-icons/fonts/linea-weather-10.eot); - src: url(../less/icons/linea-icons/fonts/linea-weather-10.eot?#iefix) format("embedded-opentype"), url(../less/icons/linea-icons/fonts/linea-weather-10.woff) format("woff"), url(../less/icons/linea-icons/fonts/linea-weather-10.ttf) format("truetype"), url(../less/icons/linea-icons/fonts/linea-weather-10.svg#linea-weather-10) format("svg"); - font-weight: 400; - font-style: normal -} - -.linea-weather[data-icon]:before { - font-family: linea-weather-10 !important; - content: attr(data-icon); - font-style: normal !important; - font-weight: 400 !important; - font-variant: normal !important; - text-transform: none !important; - speak: none; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -[class*="linea- icon-"]:before, -[class^=linea-icon-]:before { - font-family: linea-weather-10 !important; - font-style: normal !important; - font-weight: 400 !important; - font-variant: normal !important; - text-transform: none !important; - speak: none; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.icon-weather-aquarius:before { - content: "\e000" -} - -.icon-weather-aries:before { - content: "\e001" -} - -.icon-weather-cancer:before { - content: "\e002" -} - -.icon-weather-capricorn:before { - content: "\e003" -} - -.icon-weather-cloud:before { - content: "\e004" -} - -.icon-weather-cloud-drop:before { - content: "\e005" -} - -.icon-weather-cloud-lightning:before { - content: "\e006" -} - -.icon-weather-cloud-snowflake:before { - content: "\e007" -} - -.icon-weather-downpour-fullmoon:before { - content: "\e008" -} - -.icon-weather-downpour-halfmoon:before { - content: "\e009" -} - -.icon-weather-downpour-sun:before { - content: "\e00a" -} - -.icon-weather-drop:before { - content: "\e00b" -} - -.icon-weather-first-quarter:before { - content: "\e00c" -} - -.icon-weather-fog:before { - content: "\e00d" -} - -.icon-weather-fog-fullmoon:before { - content: "\e00e" -} - -.icon-weather-fog-halfmoon:before { - content: "\e00f" -} - -.icon-weather-fog-sun:before { - content: "\e010" -} - -.icon-weather-fullmoon:before { - content: "\e011" -} - -.icon-weather-gemini:before { - content: "\e012" -} - -.icon-weather-hail:before { - content: "\e013" -} - -.icon-weather-hail-fullmoon:before { - content: "\e014" -} - -.icon-weather-hail-halfmoon:before { - content: "\e015" -} - -.icon-weather-hail-sun:before { - content: "\e016" -} - -.icon-weather-last-quarter:before { - content: "\e017" -} - -.icon-weather-leo:before { - content: "\e018" -} - -.icon-weather-libra:before { - content: "\e019" -} - -.icon-weather-lightning:before { - content: "\e01a" -} - -.icon-weather-mistyrain:before { - content: "\e01b" -} - -.icon-weather-mistyrain-fullmoon:before { - content: "\e01c" -} - -.icon-weather-mistyrain-halfmoon:before { - content: "\e01d" -} - -.icon-weather-mistyrain-sun:before { - content: "\e01e" -} - -.icon-weather-moon:before { - content: "\e01f" -} - -.icon-weather-moondown-full:before { - content: "\e020" -} - -.icon-weather-moondown-half:before { - content: "\e021" -} - -.icon-weather-moonset-full:before { - content: "\e022" -} - -.icon-weather-moonset-half:before { - content: "\e023" -} - -.icon-weather-move2:before { - content: "\e024" -} - -.icon-weather-newmoon:before { - content: "\e025" -} - -.icon-weather-pisces:before { - content: "\e026" -} - -.icon-weather-rain:before { - content: "\e027" -} - -.icon-weather-rain-fullmoon:before { - content: "\e028" -} - -.icon-weather-rain-halfmoon:before { - content: "\e029" -} - -.icon-weather-rain-sun:before { - content: "\e02a" -} - -.icon-weather-sagittarius:before { - content: "\e02b" -} - -.icon-weather-scorpio:before { - content: "\e02c" -} - -.icon-weather-snow:before { - content: "\e02d" -} - -.icon-weather-snow-fullmoon:before { - content: "\e02e" -} - -.icon-weather-snow-halfmoon:before { - content: "\e02f" -} - -.icon-weather-snow-sun:before { - content: "\e030" -} - -.icon-weather-snowflake:before { - content: "\e031" -} - -.icon-weather-star:before { - content: "\e032" -} - -.icon-weather-storm-11:before { - content: "\e033" -} - -.icon-weather-storm-32:before { - content: "\e034" -} - -.icon-weather-storm-fullmoon:before { - content: "\e035" -} - -.icon-weather-storm-halfmoon:before { - content: "\e036" -} - -.icon-weather-storm-sun:before { - content: "\e037" -} - -.icon-weather-sun:before { - content: "\e038" -} - -.icon-weather-sundown:before { - content: "\e039" -} - -.icon-weather-sunset:before { - content: "\e03a" -} - -.icon-weather-taurus:before { - content: "\e03b" -} - -.icon-weather-tempest:before { - content: "\e03c" -} - -.icon-weather-tempest-fullmoon:before { - content: "\e03d" -} - -.icon-weather-tempest-halfmoon:before { - content: "\e03e" -} - -.icon-weather-tempest-sun:before { - content: "\e03f" -} - -.icon-weather-variable-fullmoon:before { - content: "\e040" -} - -.icon-weather-variable-halfmoon:before { - content: "\e041" -} - -.icon-weather-variable-sun:before { - content: "\e042" -} - -.icon-weather-virgo:before { - content: "\e043" -} - -.icon-weather-waning-cresent:before { - content: "\e044" -} - -.icon-weather-waning-gibbous:before { - content: "\e045" -} - -.icon-weather-waxing-cresent:before { - content: "\e046" -} - -.icon-weather-waxing-gibbous:before { - content: "\e047" -} - -.icon-weather-wind:before { - content: "\e048" -} - -.icon-weather-wind-e:before { - content: "\e049" -} - -.icon-weather-wind-fullmoon:before { - content: "\e04a" -} - -.icon-weather-wind-halfmoon:before { - content: "\e04b" -} - -.icon-weather-wind-n:before { - content: "\e04c" -} - -.icon-weather-wind-ne:before { - content: "\e04d" -} - -.icon-weather-wind-nw:before { - content: "\e04e" -} - -.icon-weather-wind-s:before { - content: "\e04f" -} - -.icon-weather-wind-se:before { - content: "\e050" -} - -.icon-weather-wind-sun:before { - content: "\e051" -} - -.icon-weather-wind-sw:before { - content: "\e052" -} - -.icon-weather-wind-w:before { - content: "\e053" -} - -.icon-weather-windgust:before { - content: "\e054" -} - -.sttabs { - position: relative; - overflow: hidden; - margin: 0 auto; - width: 100%; - font-weight: 300; -} - -.sticon::before { - display: inline-block; - margin: 0 .4em 0 0; - vertical-align: middle; - font-size: 20px; - speak: none; - -webkit-backface-visibility: hidden; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.sttabs nav { - text-align: center -} - -.sttabs nav ul { - position: relative; - display: -ms-flexbox; - display: -webkit-flex; - display: -moz-flex; - display: -ms-flex; - display: flex; - margin: 0 auto; - padding: 0; - font-family: Poppins, sans-serif; - list-style: none; - -ms-box-orient: horizontal; - -ms-box-pack: center; - -webkit-flex-flow: row wrap; - -moz-flex-flow: row wrap; - -ms-flex-flow: row wrap; - flex-flow: row wrap; - -webkit-justify-content: center; - -moz-justify-content: center; - -ms-justify-content: center; - justify-content: center -} - -.sttabs nav ul li { - position: relative; - z-index: 1; - display: block; - margin: 0; - text-align: center; - -webkit-flex: 1; - -moz-flex: 1; - -ms-flex: 1; - flex: 1 -} - -.sttabs nav a { - position: relative; - display: block; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - line-height: 2.5 -} - -.sttabs nav a span { - vertical-align: middle; - font-wight: 500; - font-size: 14px; - font-family: Poppins, sans-serif -} - -.sttabs nav a:focus { - outline: 0; -} - -.sttabs nav li.tab-current a { - color: #fb9678; -} - -.tabs-style-bar nav ul li a { - margin: 0 2px; - background-color: #f7fafc; - color: #686868; - padding: 5px 0; - transition: background-color .2s, color .2s -} - -.tabs-style-bar nav ul li a:focus, -.tabs-style-bar nav ul li a:hover { - color: #fb9678; -} - -.tabs-style-bar nav ul li a span { - text-transform: uppercase; - letter-spacing: 1px; - font-size: 14px; - font-family: Poppins, sans-serif -} - -.tabs-style-bar nav ul li.tab-current a { - background: #fb9678; - color: #fff -} - -.tabs-style-iconbox nav { - background: #f7fafc -} - -.tabs-style-iconbox nav ul li a { - overflow: visible; - padding: 35px 0; - line-height: 1; - -webkit-transition: color .2s; - transition: color .2s; - color: #2b2b2b -} - -.tabs-style-iconbox nav ul li.tab-current { - z-index: 1 -} - -.tabs-style-iconbox nav ul li.tab-current a { - background: #fb9678; - color: #fff; - box-shadow: -1px 0 0 #fff -} - -.tabs-style-iconbox nav ul li.tab-current a::after { - position: absolute; - top: 100%; - left: 50%; - margin-left: -10px; - width: 0; - height: 0; - border: solid transparent; - border-width: 10px; - border-top-color: #fb9678; - content: ''; - pointer-events: none; -} - -.tabs-style-iconbox nav ul li::after, -.tabs-style-iconbox nav ul li:first-child::before { - position: absolute; - top: 20%; - right: 0; - z-index: -1; - width: 1px; - height: 60%; - content: '' -} - -.tabs-style-iconbox nav ul li:first-child::before { - right: auto; - left: 0; -} - -.tabs-style-iconbox .sticon::before { - display: block; - margin: 0 0 .25em -} - -.tabs-style-underline nav { - border: 1px solid rgba(120, 130, 140, .13); -} - -.tabs-style-underline nav a { - padding: 20px 0; - border-left: 1px solid rgba(120, 130, 140, .13); - -webkit-transition: color .2s; - transition: color .2s; - color: #2b2b2b -} - -.tabs-style-underline nav li:last-child a { - border-right: 1px solid rgba(120, 130, 140, .13); -} - -.tabs-style-underline nav li a::after { - position: absolute; - bottom: 0; - left: 0; - width: 100%; - height: 6px; - background: #fb9678; - content: ''; - -webkit-transition: -webkit-transform .3s; - transition: transform .3s; - -webkit-transform: translate3d(0, 150%, 0); - transform: translate3d(0, 150%, 0); -} - -.tabs-style-underline nav li.tab-current a::after { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); -} - -.tabs-style-linetriangle nav a { - overflow: visible; - border-bottom: 1px solid rgba(0, 0, 0, .2); - -webkit-transition: color .2s; - transition: color .2s -} - -.tabs-style-linetriangle nav a span { - display: block; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - font-size: 14px; - padding: 15px 0; - color: #2b2b2b -} - -.tabs-style-linetriangle nav li.tab-current a:after, -.tabs-style-linetriangle nav li.tab-current a:before { - position: absolute; - top: 100%; - left: 50%; - width: 0; - height: 0; - border: solid transparent; - content: ''; - pointer-events: none; -} - -.tabs-style-linetriangle nav li.tab-current a:after { - margin-left: -10px; - border-width: 10px; - border-top-color: #fff -} - -.tabs-style-linetriangle nav li.tab-current a span { - color: #fb9678; -} - -.tabs-style-linetriangle nav li.tab-current a:before { - margin-left: -11px; - border-width: 11px; - border-top-color: rgba(0, 0, 0, .2); -} - -.tabs-style-iconfall { - overflow: visible; -} - -.tabs-style-iconfall nav { - max-width: 1200px; - margin: 0 auto -} - -.tabs-style-iconfall nav a { - display: inline-block; - overflow: visible; - padding: 1em 0 2em; - color: #2b2b2b; - line-height: 1; - -webkit-transition: color .3s cubic-bezier(.7, 0, .3, 1); - transition: color .3s cubic-bezier(.7, 0, .3, 1); -} - -.tabs-style-iconfall nav a:focus, -.tabs-style-iconfall nav a:hover, -.tabs-style-iconfall nav li.tab-current a { - color: #fb9678; -} - -.tabs-style-iconfall nav li::before { - position: absolute; - bottom: 1em; - left: 50%; - margin-left: -20px; - width: 40px; - height: 4px; - background: #fb9678; - content: ''; - opacity: 0; - -webkit-transition: -webkit-transform .2s ease-in; - transition: transform .2s ease-in; - -webkit-transform: scale3d(0, 1, 1); - transform: scale3d(0, 1, 1); -} - -.tabs-style-iconfall nav li.tab-current::before { - opacity: 1; - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); -} - -.tabs-style-iconfall nav li.tab-current .sticon::before { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); -} - -.tabs-style-iconfall .sticon::before { - display: block; - margin: 0 0 .35em; - opacity: 0; - font-size: 24px; - -webkit-transition: -webkit-transform .2s, opacity .2s; - transition: transform .2s, opacity .2s; - -webkit-transform: translate3d(0, -100px, 0); - transform: translate3d(0, -100px, 0); - pointer-events: none; -} - -@media screen and (max-width:58em) { - .tabs-style-iconfall nav li .sticon::before { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0) - } -} - -.tabs-style-linemove nav { - background: #f7fafc -} - -.tabs-style-linemove nav li:last-child::before { - position: absolute; - bottom: 0; - left: 0; - width: 100%; - height: 4px; - background: #fb9678; - content: ''; - -webkit-transition: -webkit-transform .3s; - transition: transform .3s -} - -.tabs-style-linemove nav li:first-child.tab-current~li:last-child::before { - -webkit-transform: translate3d(-400%, 0, 0); - transform: translate3d(-400%, 0, 0); -} - -.tabs-style-linemove nav li:nth-child(2).tab-current~li:last-child::before { - -webkit-transform: translate3d(-300%, 0, 0); - transform: translate3d(-300%, 0, 0); -} - -.tabs-style-linemove nav li:nth-child(3).tab-current~li:last-child::before { - -webkit-transform: translate3d(-200%, 0, 0); - transform: translate3d(-200%, 0, 0); -} - -.tabs-style-linemove nav li:nth-child(4).tab-current~li:last-child::before { - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); -} - -.tabs-style-linemove nav a { - padding: 30px 0; - color: #2b2b2b; - line-height: 1; - -webkit-transition: color .3s, -webkit-transform .3s; - transition: color .3s, transform .3s -} - -.tabs-style-linemove nav li.tab-current a { - color: #fb9678; -} - -.tabs-style-line nav a { - padding: 20px 10px; - box-shadow: inset 0 -2px #d1d3d2; - color: #686868; - text-align: left; - text-transform: uppercase; - letter-spacing: 1px; - line-height: 1; - -webkit-transition: color .3s, box-shadow .3s; - transition: color .3s, box-shadow .3s -} - -.tabs-style-line nav a:focus, -.tabs-style-line nav a:hover { - box-shadow: inset 0 -2px #74777b -} - -.tabs-style-line nav li.tab-current a { - box-shadow: inset 0 -2px #fb9678; - color: #fb9678; -} - -@media screen and (max-width:58em) { - .tabs-style-line nav ul { - display: block; - box-shadow: none - } - - .tabs-style-line nav ul li { - display: block; - -webkit-flex: none; - flex: none - } -} - -.tabs-style-circle { - overflow: visible; -} - -.tabs-style-circle nav li { - margin-top: 60px !important; - margin-bottom: 60px !important; -} - -.tabs-style-circle nav li::before { - position: absolute; - top: 50%; - left: 50%; - margin: -60px 0 0 -60px; - width: 120px; - height: 120px; - border: 1px solid #fb9678; - border-radius: 50%; - content: ''; - opacity: 0; - -webkit-transition: -webkit-transform .2s, opacity .2s; - transition: transform .2s, opacity .2s; - -webkit-transition-timing-function: cubic-bezier(.7, 0, .3, 1); - transition-timing-function: cubic-bezier(.7, 0, .3, 1); -} - -.tabs-style-circle nav a { - overflow: visible; - color: #2b2b2b; - font-weight: 500; - font-size: 14; - line-height: 1.1; - -webkit-transition: color .3s cubic-bezier(.7, 0, .3, 1); - transition: color .3s cubic-bezier(.7, 0, .3, 1); -} - -.tabs-style-circle nav a span { - display: inline-block -} - -.tabs-style-circle nav a:focus, -.tabs-style-circle nav a:hover, -.tabs-style-circle nav li.tab-current a { - color: #fb9678; -} - -.tabs-style-circle nav li.tab-current a span { - -webkit-transform: translate3d(0, 4px, 0); - transform: translate3d(0, 4px, 0); -} - -@media screen and (max-width:58em) { - .tabs-style-circle nav li::before { - margin: -40px 0 0 -40px; - width: 80px; - height: 80px - } -} - -.tabs-style-circle nav li.tab-current::before { - opacity: 1; - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); -} - -.tabs-style-circle .icon::before, -.tabs-style-circle nav a span { - -webkit-transition: -webkit-transform .3s cubic-bezier(.7, 0, .3, 1); - transition: transform .3s cubic-bezier(.7, 0, .3, 1); -} - -.tabs-style-circle .sticon::before { - display: block; - margin: 0; - pointer-events: none; -} - -.tabs-style-circle nav li.tab-current .sticon::before { - -webkit-transform: translate3d(0, -4px, 0); - transform: translate3d(0, -4px, 0); -} - -.tabs-style-shape { - max-width: 1200px; - margin: 0 auto -} - -.tabs-style-shape nav ul li { - margin: 0 3em -} - -.tabs-style-shape nav ul li:first-child { - margin-left: 0; -} - -.tabs-style-shape nav ul li.tab-current { - z-index: 1 -} - -.tabs-style-shape nav li a { - overflow: visible; - margin: 0 -3em 0 0; - padding: 0; - color: #fff; - font-weight: 500; -} - -.tabs-style-shape nav li a svg { - position: absolute; - left: 100%; - margin: 0; - width: 3em; - height: 100%; - fill: #bdc2c9; -} - -.tabs-style-shape nav li:first-child a span { - padding-left: 2em; - border-radius: 30px 0 0; -} - -.tabs-style-shape nav li:last-child a span { - padding-right: 2em; - border-radius: 0 30px 0 0; -} - -.tabs-style-shape nav li a svg:nth-child(2), -.tabs-style-shape nav li:last-child a svg { - right: 100%; - left: auto; - -webkit-transform: scale3d(-1, 1, 1); - transform: scale3d(-1, 1, 1); -} - -.tabs-style-shape nav li a span { - display: block; - overflow: hidden; - padding: .65em 0; - background-color: #bdc2c9; - text-overflow: ellipsis; - white-space: nowrap -} - -.tabs-style-shape nav li a:hover span { - background-color: #fb9678; -} - -.tabs-style-shape nav li a:hover svg { - fill: #fb9678; -} - -.tabs-style-shape nav li a svg { - pointer-events: none; -} - -.tabs-style-shape nav li a svg use { - pointer-events: auto -} - -.tabs-style-shape nav li.tab-current a span, -.tabs-style-shape nav li.tab-current a svg { - -webkit-transition: none; - transition: none; -} - -.tabs-style-shape nav li.tab-current a span { - background: #f7fafc -} - -.tabs-style-shape nav li.tab-current a svg { - fill: #f7fafc -} - -.tabs-style-shape .content-wrap { - background: #f7fafc -} - -@media screen and (max-width:58em) { - .tabs-style-shape nav ul { - display: block; - padding-top: 1.5em - } - - .tabs-style-shape nav ul li { - display: block; - margin: -1.25em 0 0; - -webkit-flex: none; - flex: none - } - - .tabs-style-shape nav ul li a { - margin: 0 - } - - .tabs-style-shape nav ul li svg { - display: none - } - - .tabs-style-shape nav ul li a span { - padding: 1.25em 0 2em !important; - border-radius: 30px 30px 0 0 !important; - box-shadow: 0 -1px 2px rgba(0, 0, 0, .1); - line-height: 1 - } - - .tabs-style-shape nav ul li:last-child a span { - padding: 1.25em 0 !important - } - - .tabs-style-shape nav ul li.tab-current { - z-index: 1 - } -} - -.tabs-style-linebox nav ul li { - margin: 0 .5em; - -webkit-flex: none; - flex: none; -} - -.tabs-style-linebox nav a { - padding: 0 1.5em; - color: #2b2b2b; - font-weight: 500; - -webkit-transition: color .3s; - transition: color .3s -} - -.tabs-style-linebox nav a:focus, -.tabs-style-linebox nav a:hover { - color: #fb9678; -} - -.tabs-style-linebox nav li.tab-current a { - color: #fff -} - -.tabs-style-linebox nav a::after { - position: absolute; - top: 0; - left: 0; - z-index: -1; - width: 100%; - height: 100%; - background: #d2d8d6; - content: ''; - -webkit-transition: background-color .3s, -webkit-transform .3s; - transition: background-color .3s, transform .3s; - -webkit-transition-timing-function: ease, cubic-bezier(.7, 0, .3, 1); - transition-timing-function: ease, cubic-bezier(.7, 0, .3, 1); - -webkit-transform: translate3d(0, 100%, 0) translate3d(0, -3px, 0); - transform: translate3d(0, 100%, 0) translate3d(0, -3px, 0); -} - -.tabs-style-linebox nav li.tab-current a::after { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); -} - -.tabs-style-linebox nav a:focus::after, -.tabs-style-linebox nav a:hover::after, -.tabs-style-linebox nav li.tab-current a::after { - background: #fb9678; -} - -@media screen and (max-width:58em) { - .tabs-style-linebox nav ul { - display: block; - box-shadow: none - } - - .tabs-style-linebox nav ul li { - display: block; - -webkit-flex: none; - flex: none - } -} - -.tabs-style-flip { - max-width: 1200px; - margin: 0 auto -} - -.tabs-style-flip nav a { - padding: .5em 0; - color: #2b2b2b; - -webkit-transition: color .3s; - transition: color .3s -} - -.tabs-style-flip nav a:focus, -.tabs-style-flip nav a:hover { - color: #fb9678; -} - -.tabs-style-flip nav a span { - text-transform: uppercase; - letter-spacing: 1px; -} - -.tabs-style-flip nav a::after { - position: absolute; - top: 0; - left: 0; - z-index: -1; - width: 100%; - height: 100%; - background-color: #f0f0f0; - content: ''; - -webkit-transition: -webkit-transform .3s, background-color .3s; - transition: transform .3s, background-color .3s; - -webkit-transform: perspective(900px) rotate3d(1, 0, 0, 90deg); - transform: perspective(900px) rotate3d(1, 0, 0, 90deg); - -webkit-transform-origin: 50% 100%; - transform-origin: 50% 100%; - -webkit-perspective-origin: 50% 100%; - perspective-origin: 50% 100%; -} - -.tabs-style-flip nav li.tab-current a { - color: #fb9678; -} - -.tabs-style-flip nav li.tab-current a::after { - background-color: #f7fafc; - -webkit-transform: perspective(900px) rotate3d(1, 0, 0, 0deg); - transform: perspective(900px) rotate3d(1, 0, 0, 0deg); -} - -.tabs-style-flip .content-wrap { - background: #f7fafc -} - -.tabs-style-circlefill { - max-width: 800px; - border: 1px solid #fb9678; - margin: 0 auto -} - -.tabs-style-circlefill nav ul li { - overflow: hidden; - border-right: 1px solid #fb9678; -} - -.tabs-style-circlefill nav li a { - padding: 1.5em 0; - color: #fff; - font-size: 1.25em -} - -.tabs-style-circlefill nav li:first-child { - border-left: none; -} - -.tabs-style-circlefill nav li:last-child { - border: none; -} - -.tabs-style-circlefill nav li::before { - position: absolute; - top: 50%; - left: 50%; - margin: -40px 0 0 -40px; - width: 80px; - height: 80px; - border: 1px solid #fb9678; - border-radius: 50%; - background: #fb9678; - content: ''; - -webkit-transition: -webkit-transform .3s; - transition: transform .3s -} - -.tabs-style-circlefill nav li.tab-current::before { - -webkit-transform: scale3d(2.5, 2.5, 1); - transform: scale3d(2.5, 2.5, 1); -} - -.tabs-style-circlefill nav a { - -webkit-transition: color .3s; - transition: color .3s -} - -.tabs-style-circlefill nav a span { - display: none; -} - -.tabs-style-circlefill nav li.tab-current a { - color: #fff -} - -.tabs-style-circlefill .icon::before { - display: block; - margin: 0; - pointer-events: none; -} - -.tabs-style-circlefill .content-wrap { - border-top: 1px solid #fb9678; -} - -.content-wrap { - position: relative; -} - -.content-wrap section { - display: none; - margin: 0 auto; - padding: 25px; - min-height: 150px; -} - -.content-wrap section p { - margin: 0; - padding: .75em 0; -} - -.content-wrap section.content-current { - display: block -} - -.no-js .content-wrap section { - display: block; - padding-bottom: 2em; - border-bottom: 1px solid rgba(255, 255, 255, .6); -} - -.no-flexbox nav ul { - display: block -} - -.no-flexbox nav ul li { - min-width: 15%; - display: inline-block -} - -@media screen and (max-width:58em) { - .sttabs nav a span { - display: none - } - - .sttabs nav a:before { - margin-right: 0 - } -} - -.mytooltip { - display: inline; - position: relative; - z-index: 9999; -} - -.tooltip-item { - background: rgba(0, 0, 0, .1); - cursor: pointer; - display: inline-block; - font-weight: 500; - padding: 0 10px; -} - -.tooltip-item::after { - content: ''; - position: absolute; - width: 360px; - height: 20px; - bottom: 100%; - left: 50%; - pointer-events: none; - -webkit-transform: translateX(-50%); - transform: translateX(-50%); -} - -.mytooltip:hover .tooltip-item::after { - pointer-events: auto -} - -.tooltip-content { - position: absolute; - z-index: 9999; - width: 360px; - left: 50%; - margin: 0 0 20px -180px; - bottom: 100%; - text-align: left; - font-size: 14px; - line-height: 30px; - box-shadow: -5px -5px 15px rgba(48, 54, 61, .2); - background: #2b2b2b; - opacity: 0; - cursor: default; - pointer-events: none; -} - -.tooltip-effect-1 .tooltip-content { - -webkit-transform: translate3d(0, -10px, 0); - transform: translate3d(0, -10px, 0); - -webkit-transition: opacity .3s, -webkit-transform .3s; - transition: opacity .3s, transform .3s; - color: #fff -} - -.tooltip-effect-2 .tooltip-content { - -webkit-transform-origin: 50% calc(110%); - transform-origin: 50% calc(110%); - -webkit-transform: perspective(1000px) rotate3d(1, 0, 0, 45deg); - transform: perspective(1000px) rotate3d(1, 0, 0, 45deg); - -webkit-transition: opacity .2s, -webkit-transform .2s; - transition: opacity .2s, transform .2s -} - -.tooltip-effect-3 .tooltip-content { - -webkit-transform: translate3d(0, 10px, 0) rotate3d(1, 1, 0, 25deg); - transform: translate3d(0, 10px, 0) rotate3d(1, 1, 0, 25deg); - -webkit-transition: opacity .3s, -webkit-transform .3s; - transition: opacity .3s, transform .3s -} - -.tooltip-effect-4 .tooltip-content { - -webkit-transform-origin: 50% 100%; - transform-origin: 50% 100%; - -webkit-transform: scale3d(.7, .3, 1); - transform: scale3d(.7, .3, 1); - -webkit-transition: opacity .2s, -webkit-transform .2s; - transition: opacity .2s, transform .2s -} - -.tooltip-effect-5 .tooltip-content { - width: 180px; - margin-left: -90px; - -webkit-transform-origin: 50% calc(106%); - transform-origin: 50% calc(106%); - -webkit-transform: rotate3d(0, 0, 1, 15deg); - transform: rotate3d(0, 0, 1, 15deg); - -webkit-transition: opacity .2s, -webkit-transform .2s; - transition: opacity .2s, transform .2s; - -webkit-transition-timing-function: ease, cubic-bezier(.17, .67, .4, 1.39); - transition-timing-function: ease, cubic-bezier(.17, .67, .4, 1.39); -} - -.mytooltip:hover .tooltip-content { - pointer-events: auto; - opacity: 1; - -webkit-transform: translate3d(0, 0, 0) rotate3d(0, 0, 0, 0); - transform: translate3d(0, 0, 0) rotate3d(0, 0, 0, 0); -} - -.tooltip.tooltip-effect-2:hover .tooltip-content { - -webkit-transform: perspective(1000px) rotate3d(1, 0, 0, 0deg); - transform: perspective(1000px) rotate3d(1, 0, 0, 0deg); -} - -.tooltip-content::after { - content: ''; - top: 100%; - left: 50%; - border: solid transparent; - height: 0; - width: 0; - position: absolute; - pointer-events: none; - border-color: #2a3035 transparent transparent; - border-width: 10px; - margin-left: -10px; -} - -.tooltip-content img { - position: relative; - height: 140px; - display: block; - float: left; - margin-right: 1em -} - -.tooltip-text { - font-size: 14px; - line-height: 24px; - display: block; - padding: 1.31em 1.21em 1.21em 0; - color: #fff -} - -.tooltip-effect-5 .tooltip-text { - padding: 1.4em -} - -a.mytooltip { - font-weight: 500; - color: #fb9678; -} - -.tooltip-content2 { - position: absolute; - z-index: 9999; - width: 80px; - height: 80px; - padding-top: 25px; - left: 50%; - margin-left: -40px; - bottom: 100%; - border-radius: 50%; - text-align: center; - background: #fb9678; - color: #fff; - opacity: 0; - margin-bottom: 20px; - cursor: default; - pointer-events: none; -} - -.tooltip-content2 i { - opacity: 0; -} - -.mytooltip:hover .tooltip-content2, -.mytooltip:hover .tooltip-content2 i { - opacity: 1; - font-size: 18px; -} - -.tooltip-effect-6 .tooltip-content2 { - -webkit-transform: translate3d(0, 10px, 0) rotate3d(1, 1, 1, 45deg); - transform: translate3d(0, 10px, 0) rotate3d(1, 1, 1, 45deg); - -webkit-transform-origin: 50% 100%; - transform-origin: 50% 100%; - -webkit-transition: opacity .3s, -webkit-transform .3s; - transition: opacity .3s, transform .3s -} - -.tooltip-effect-6 .tooltip-content2 i { - -webkit-transform: scale3d(0, 0, 1); - transform: scale3d(0, 0, 1); - -webkit-transition: opacity .3s, -webkit-transform .3s; - transition: opacity .3s, transform .3s -} - -.tooltip-effect-7 .tooltip-content2 { - -webkit-transform: translate3d(0, 10px, 0); - transform: translate3d(0, 10px, 0); - -webkit-transition: opacity .3s, -webkit-transform .3s; - transition: opacity .3s, transform .3s -} - -.tooltip-effect-7 .tooltip-content2 i { - -webkit-transform: translate3d(0, 15px, 0); - transform: translate3d(0, 15px, 0); - -webkit-transition: opacity .3s, -webkit-transform .3s; - transition: opacity .3s, transform .3s -} - -.tooltip-effect-8 .tooltip-content2 { - -webkit-transform: translate3d(0, 10px, 0) rotate3d(0, 1, 0, 90deg); - transform: translate3d(0, 10px, 0) rotate3d(0, 1, 0, 90deg); - -webkit-transform-origin: 50% 100%; - transform-origin: 50% 100%; - -webkit-transition: opacity .3s, -webkit-transform .3s; - transition: opacity .3s, transform .3s -} - -.tooltip-effect-8 .tooltip-content2 i { - -webkit-transform: scale3d(0, 0, 1); - transform: scale3d(0, 0, 1); - -webkit-transition: opacity .3s, -webkit-transform .3s; - transition: opacity .3s, transform .3s -} - -.tooltip-effect-9 .tooltip-content2 { - -webkit-transform: translate3d(0, -20px, 0); - transform: translate3d(0, -20px, 0); - -webkit-transition: opacity .3s, -webkit-transform .3s; - transition: opacity .3s, transform .3s -} - -.tooltip-effect-9 .tooltip-content2 i { - -webkit-transform: translate3d(0, 20px, 0); - transform: translate3d(0, 20px, 0); - -webkit-transition: opacity .3s, -webkit-transform .3s; - transition: opacity .3s, transform .3s -} - -.mytooltip:hover .tooltip-content2, -.mytooltip:hover .tooltip-content2 i { - pointer-events: auto; - -webkit-transform: translate3d(0, 0, 0) scale3d(1, 1, 1); - transform: translate3d(0, 0, 0) scale3d(1, 1, 1); -} - -.tooltip-effect-6:hover .tooltip-content2 i { - -webkit-transform: rotate3d(1, 1, 1, 0); - transform: rotate3d(1, 1, 1, 0); -} - -.tooltip-content2::after { - content: ''; - position: absolute; - top: 100%; - left: 50%; - margin: -7px 0 0 -15px; - width: 30px; - height: 20px; - background: url(../images/tooltip/tooltip1.svg) center center no-repeat; - background-size: 100%; -} - -.tooltip-content3 { - position: absolute; - background: url(../images/tooltip/shape1.svg) center bottom no-repeat; - background-size: 100% 100%; - z-index: 9999; - width: 200px; - bottom: 100%; - left: 50%; - margin-left: -100px; - padding: 50px 30px; - text-align: center; - color: #fff; - opacity: 0; - cursor: default; - font-size: 14; - line-height: 27px; - pointer-events: none; - -webkit-transform: scale3d(.1, .2, 1); - transform: scale3d(.1, .2, 1); - -webkit-transform-origin: 50% 120%; - transform-origin: 50% 120%; - -webkit-transition: opacity .4s, -webkit-transform .4s; - transition: opacity .4s, transform .4s; - -webkit-transition-timing-function: ease, cubic-bezier(.6, 0, .4, 1); - transition-timing-function: ease, cubic-bezier(.6, 0, .4, 1); -} - -.mytooltip:hover .tooltip-content3 { - opacity: 1; - pointer-events: auto; - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); -} - -.tooltip-content3::after { - content: ''; - position: absolute; - width: 16px; - height: 16px; - left: 50%; - margin-left: -8px; - top: 100%; - background: #00AEEF; - -webkit-transform: translate3d(0, -60%, 0) rotate3d(0, 0, 1, 45deg); - transform: translate3d(0, -60%, 0) rotate3d(0, 0, 1, 45deg); -} - -.tooltip-item2 { - color: #03a9f3; - cursor: pointer; - z-index: 100; - position: relative; - display: inline-block; - font-weight: 500; - -webkit-transition: background-color .3s, color .3s, -webkit-transform .3s; - transition: background-color .3s, color .3s, transform .3s -} - -.mytooltip:hover .tooltip-item2 { - color: #fff; - -webkit-transform: translate3d(0, -.5em, 0); - transform: translate3d(0, -.5em, 0); -} - -.tooltip-content4 { - position: absolute; - z-index: 99; - width: 360px; - left: 50%; - margin-left: -180px; - bottom: -5px; - text-align: left; - background: #03a9f3; - opacity: 0; - font-size: 14px; - line-height: 27px; - padding: 1.5em; - color: #fff; - border-bottom: 55px solid #2b2b2b; - cursor: default; - pointer-events: none; - border-radius: 5px; - -webkit-transform: translate3d(0, -.5em, 0); - transform: translate3d(0, -.5em, 0); - -webkit-transition: opacity .3s, -webkit-transform .3s; - transition: opacity .3s, transform .3s -} - -.tooltip-content4 a { - color: #2b2b2b -} - -.tooltip-text2 { - opacity: 0; - -webkit-transform: translate3d(0, 1.5em, 0); - transform: translate3d(0, 1.5em, 0); - -webkit-transition: opacity .3s, -webkit-transform .3s; - transition: opacity .3s, transform .3s -} - -.mytooltip:hover .tooltip-content4, -.mytooltip:hover .tooltip-text2 { - pointer-events: auto; - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); -} - -.tooltip-content5 { - position: absolute; - z-index: 9999; - width: 300px; - left: 50%; - bottom: 100%; - font-size: 20px; - line-height: 1.4; - text-align: center; - font-weight: 400; - color: #fff; - background: 0 0; - opacity: 0; - margin: 0 0 20px -150px; - cursor: default; - pointer-events: none; - -webkit-font-smoothing: antialiased; - -webkit-transition: opacity .3s .3s; - transition: opacity .3s .3s -} - -.mytooltip:hover .tooltip-content5 { - opacity: 1; - pointer-events: auto; - -webkit-transition-delay: 0s; - transition-delay: 0s -} - -.tooltip-content5 span { - display: block -} - -.tooltip-text3 { - border-bottom: 10px solid #fb9678; - overflow: hidden; - -webkit-transform: scale3d(0, 1, 1); - transform: scale3d(0, 1, 1); - -webkit-transition: -webkit-transform .3s .3s; - transition: transform .3s .3s -} - -.mytooltip:hover .tooltip-text3 { - -webkit-transition-delay: 0s; - transition-delay: 0s; - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); -} - -.tooltip-inner2 { - background: #2b2b2b; - padding: 40px; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - webkit-transition: -webkit-transform .3s; - transition: transform .3s -} - -.mytooltip:hover .tooltip-inner2 { - -webkit-transition-delay: .3s; - transition-delay: .3s; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); -} - -.tooltip-content5::after { - content: ''; - bottom: -20px; - left: 50%; - border: solid transparent; - height: 0; - width: 0; - position: absolute; - pointer-events: none; - border-color: #fb9678 transparent transparent; - border-width: 10px; - margin-left: -10px; -} - -@media (max-width:1350px) { - .carousel .item h3 { - font-size: 17px; - height: 90px - } - - .inbox-center a { - width: 400px - } -} - -.search-listing { - padding: 0; - margin: 0; -} - -.search-listing li { - list-style: none; - padding: 15px 0; - border-bottom: 1px solid rgba(120, 130, 140, .13); -} - -.search-listing li h3 { - margin: 0; - font-size: 18px; -} - -.search-listing li h3 a { - color: #03a9f3; -} - -.search-listing li h3 a:hover { - text-decoration: underline; -} - -.search-listing li a { - color: #00c292; -} - -.megamenu { - left: 0; - right: 0; - width: 100%; -} - -.mega-dropdown { - position: static !important; -} - -.mega-dropdown-menu { - padding: 20px; - width: 100%; - -webkit-box-shadow: none; - border: 0; - box-shadow: 0 20px 40px rgba(0, 0, 0, .2) !important; -} - -.mega-dropdown-menu>li>ul { - padding: 0; - margin: 0; -} - -.mega-dropdown-menu>li>ul>li { - list-style: none; -} - -.mega-dropdown-menu>li>ul>li>a { - display: block; - padding: 8px 0; - clear: both; - line-height: 1.428571429; - color: #686868; - white-space: normal -} - -.mega-dropdown-menu>li>ul>li>a:focus, -.mega-dropdown-menu>li>ul>li>a:hover { - text-decoration: none; - color: #ff6849; -} - -.mega-dropdown-menu .dropdown-header { - font-size: 16px; - font-weight: 500; - padding: 8px 0; - margin-top: 12px; -} - -.mega-dropdown-menu li.demo-box a { - color: #fff; - display: block -} - -.mega-dropdown-menu li.demo-box a:hover { - opacity: .8; -} - -a.dt-button, -button.dt-button, -div.dt-button { - background: #03a9f3; - color: #fff; - border-color: #03a9f3; -} - -a.dt-button:hover, -button.dt-button:hover, -div.dt-button:hover { - background: #03a9f3; -} - -a.dt-button:hover:not(.disabled), -button.dt-button:hover:not(.disabled), -div.dt-button:hover:not(.disabled) { - background: #f7fafc; - color: #2b2b2b; - border-color: rgba(120, 130, 140, .13); -} - -.dataTables_filter input { - border: 1px solid rgba(120, 130, 140, .13); -} - -table.dataTable.display tbody tr.even>.sorting_1, -table.dataTable.display tbody tr.odd>.sorting_1, -table.dataTable.display tbody tr:hover>.sorting_1, -table.dataTable.order-column.hover tbody tr:hover>.sorting_1, -table.dataTable.order-column.stripe tbody tr.even>.sorting_1, -table.dataTable.order-column.stripe tbody tr.odd>.sorting_1 { - background: 0 0; -} - -.note-editor .panel-heading { - padding: 6px 10px 10px; -} - -.page-aside { - position: relative; -} - -.left-aside { - position: absolute; - background: #fff; - border-right: 1px solid rgba(120, 130, 140, .13); - padding: 20px; - width: 250px; - height: 100%; -} - -.right-aside { - padding: 20px; - margin-left: 250px; -} - -.right-aside .contact-list td { - vertical-align: middle; - padding: 25px 10px; -} - -.right-aside .contact-list td img { - width: 30px; -} - -.list-style-none { - margin: 0; - padding: 0; -} - -.list-style-none li { - list-style: none; - margin: 0; -} - -.list-style-none li.box-label a { - font-weight: 500; -} - -.list-style-none li.divider { - margin: 10px 0; - height: 1px; - background: rgba(120, 130, 140, .13); -} - -.list-style-none li a { - padding: 15px 10px; - display: block; - color: #686868; -} - -.list-style-none li a:hover { - color: #ff6849; -} - -.list-style-none li a span { - float: right; -} - -.chat-main-box { - position: relative; - background: #fff; - overflow: hidden -} - -.chat-main-box .chat-left-aside { - position: absolute; - width: 250px; - z-index: 9; - top: 0; - border-right: 1px solid rgba(120, 130, 140, .13); -} - -.chat-main-box .chat-left-aside .open-panel { - display: none; - cursor: pointer; - position: absolute; - left: -webkit-calc(99%); - top: 50%; - z-index: 100; - background-color: #fff; - -webkit-box-shadow: 1px 0 3px rgba(0, 0, 0, .2); - box-shadow: 1px 0 3px rgba(0, 0, 0, .2); - border-radius: 0 100px 100px 0; - line-height: 1; - padding: 15px 8px 15px 4px; -} - -.chat-main-box .chat-left-aside .chat-left-inner .form-control { - height: 60px; -} - -.chat-main-box .chat-left-aside .chat-left-inner .style-none { - padding: 0; -} - -.chat-main-box .chat-left-aside .chat-left-inner .style-none li { - list-style: none; - overflow: hidden -} - -.chat-main-box .chat-left-aside .chat-left-inner .style-none li a { - padding: 20px; -} - -.chat-main-box .chat-left-aside .chat-left-inner .style-none li a.active, -.chat-main-box .chat-left-aside .chat-left-inner .style-none li a:hover { - background: #f7fafc -} - -.chat-main-box .chat-right-aside { - margin-left: 250px; -} - -.chat-main-box .chat-right-aside .chat-list { - max-height: none; - height: 100%; - padding-top: 40px; -} - -.chat-main-box .chat-right-aside .chat-list .chat-text { - border-radius: 6px; -} - -.chat-main-box .chat-right-aside .send-chat-box { - position: relative; -} - -.chat-main-box .chat-right-aside .send-chat-box .form-control { - border: none; - border-top: 1px solid rgba(120, 130, 140, .13); - resize: none; - height: 80px; - padding-right: 180px; -} - -.chat-main-box .chat-right-aside .send-chat-box .form-control:focus { - border-color: rgba(120, 130, 140, .13); -} - -.chat-main-box .chat-right-aside .send-chat-box .custom-send { - position: absolute; - right: 20px; - bottom: 10px; -} - -.chat-main-box .chat-right-aside .send-chat-box .custom-send .cst-icon { - color: #686868; - margin-right: 10px; -} - -.el-element-overlay .white-box { - padding: 0; -} - -.el-element-overlay .el-card-item { - position: relative; - padding-bottom: 25px; -} - -.el-element-overlay .el-card-item .el-card-avatar { - margin-bottom: 15px; -} - -.el-element-overlay .el-card-item .el-card-content { - text-align: center -} - -.el-element-overlay .el-card-item .el-card-content h3 { - margin: 0; -} - -.el-element-overlay .el-card-item .el-card-content a { - color: #686868; -} - -.el-element-overlay .el-card-item .el-card-content a:hover { - color: #ff6849; -} - -.el-element-overlay .el-card-item .el-overlay-1 { - width: 100%; - height: 100%; - overflow: hidden; - position: relative; - text-align: center; - cursor: default; -} - -.el-element-overlay .el-card-item .el-overlay-1 img { - display: block; - position: relative; - -webkit-transition: all .4s linear; - transition: all .4s linear; - width: 100%; - height: auto -} - -.el-element-overlay .el-card-item .el-overlay-1:hover img { - -ms-transform: scale(1.2) translateZ(0); - -webkit-transform: scale(1.2) translateZ(0); -} - -.el-element-overlay .el-card-item .el-overlay-1 .el-info { - text-decoration: none; - display: inline-block; - text-transform: uppercase; - color: #fff; - background-color: transparent; - filter: alpha(opacity=0); - -webkit-transition: all .2s ease-in-out; - transition: all .2s ease-in-out; - padding: 0; - margin: auto; - position: absolute; - top: 50%; - left: 0; - right: 0; - transform: translateY(-50%) translateZ(0); - -webkit-transform: translateY(-50%) translateZ(0); - -ms-transform: translateY(-50%) translateZ(0); -} - -.el-element-overlay .el-card-item .el-overlay-1 .el-info>li { - list-style: none; - display: inline-block; - margin: 0 3px; -} - -.el-element-overlay .el-card-item .el-overlay-1 .el-info>li a { - border-color: #fff; - color: #fff; - padding: 12px 15px 10px; -} - -.el-element-overlay .el-card-item .el-overlay-1 .el-info>li a:hover { - background: #fb9678; - border-color: #fb9678; -} - -.el-element-overlay .el-card-item .el-overlay { - width: 100%; - height: 100%; - position: absolute; - overflow: hidden; - top: 0; - left: 0; - opacity: 0; - background-color: rgba(0, 0, 0, .7); - -webkit-transition: all .4s ease-in-out; - transition: all .4s ease-in-out; -} - -.el-element-overlay .el-card-item .el-overlay-1:hover .el-overlay { - opacity: 1; - filter: alpha(opacity=100); - -webkit-transform: translateZ(0); - -ms-transform: translateZ(0); - transform: translateZ(0); -} - -.el-element-overlay .el-card-item .el-overlay-1 .scrl-dwn { - top: -100%; -} - -.el-element-overlay .el-card-item .el-overlay-1 .scrl-up { - top: 100%; - height: 0; -} - -.el-element-overlay .el-card-item .el-overlay-1:hover .scrl-dwn { - top: 0; -} - -.el-element-overlay .el-card-item .el-overlay-1:hover .scrl-up { - top: 0; - height: 100%; -} - -.login-sidebar { - position: absolute; - right: 0; - margin-top: 0; - height: 100%; -} - -.common-list { - margin: 0; - padding: 0; -} - -.common-list li { - list-style: none; - display: block -} - -.common-list li a { - padding: 12px 0; - color: #686868; - display: block -} - -.common-list li a:hover { - color: #ff6849; -} - -.color-table.primary-table thead th { - background-color: #ab8ce4; - color: #fff -} - -.color-table.success-table thead th { - background-color: #00c292; - color: #fff -} - -.color-table.info-table thead th { - background-color: #03a9f3; - color: #fff -} - -.color-table.warning-table thead th { - background-color: #fec107; - color: #fff -} - -.color-table.danger-table thead th { - background-color: #fb9678; - color: #fff -} - -.color-table.inverse-table thead th { - background-color: #4c5667; - color: #fff -} - -.color-table.dark-table thead th { - background-color: #2b2b2b; - color: #fff -} - -.color-table.red-table thead th { - background-color: #fb3a3a; - color: #fff -} - -.color-table.purple-table thead th { - background-color: #9675ce; - color: #fff -} - -.color-table.muted-table thead th { - background-color: #98a6ad; - color: #fff -} - -.color-bordered-table.primary-bordered-table { - border: 2px solid #ab8ce4 -} - -.color-bordered-table.primary-bordered-table thead th { - background-color: #ab8ce4; - color: #fff -} - -.color-bordered-table.success-bordered-table { - border: 2px solid #00c292; -} - -.color-bordered-table.success-bordered-table thead th { - background-color: #00c292; - color: #fff -} - -.color-bordered-table.info-bordered-table { - border: 2px solid #03a9f3; -} - -.color-bordered-table.info-bordered-table thead th { - background-color: #03a9f3; - color: #fff -} - -.color-bordered-table.warning-bordered-table { - border: 2px solid #fec107 -} - -.color-bordered-table.warning-bordered-table thead th { - background-color: #fec107; - color: #fff -} - -.color-bordered-table.danger-bordered-table { - border: 2px solid #fb9678; -} - -.color-bordered-table.danger-bordered-table thead th { - background-color: #fb9678; - color: #fff -} - -.color-bordered-table.inverse-bordered-table { - border: 2px solid #4c5667 -} - -.color-bordered-table.inverse-bordered-table thead th { - background-color: #4c5667; - color: #fff -} - -.color-bordered-table.dark-bordered-table { - border: 2px solid #2b2b2b -} - -.color-bordered-table.dark-bordered-table thead th { - background-color: #2b2b2b; - color: #fff -} - -.color-bordered-table.red-bordered-table { - border: 2px solid #fb3a3a -} - -.color-bordered-table.red-bordered-table thead th { - background-color: #fb3a3a; - color: #fff -} - -.color-bordered-table.purple-bordered-table { - border: 2px solid #9675ce; -} - -.color-bordered-table.purple-bordered-table thead th { - background-color: #9675ce; - color: #fff -} - -.color-bordered-table.muted-bordered-table { - border: 2px solid #98a6ad -} - -.color-bordered-table.muted-bordered-table thead th { - background-color: #98a6ad; - color: #fff -} - -.full-color-table.full-primary-table { - background-color: rgba(171, 140, 228, .8); -} - -.full-color-table.full-primary-table thead th { - background-color: #ab8ce4; - border: 0 !important; - color: #fff -} - -.full-color-table.full-primary-table tbody td { - border: 0 !important; - color: #fff -} - -.full-color-table.full-primary-table tr:hover { - background-color: #ab8ce4 -} - -.full-color-table.full-success-table { - background-color: rgba(0, 194, 146, .8); -} - -.full-color-table.full-success-table thead th { - background-color: #00c292; - border: 0 !important; - color: #fff -} - -.full-color-table.full-success-table tbody td { - border: 0 !important; - color: #fff -} - -.full-color-table.full-success-table tr:hover { - background-color: #00c292; -} - -.full-color-table.full-info-table { - background-color: rgba(3, 169, 243, .8); -} - -.full-color-table.full-info-table thead th { - background-color: #03a9f3; - border: 0 !important; - color: #fff -} - -.full-color-table.full-info-table tbody td { - border: 0 !important; - color: #fff -} - -.full-color-table.full-info-table tr:hover { - background-color: #03a9f3; -} - -.full-color-table.full-warning-table { - background-color: rgba(254, 193, 7, .8); -} - -.full-color-table.full-warning-table thead th { - background-color: #fec107; - border: 0 !important; - color: #fff -} - -.full-color-table.full-warning-table tbody td { - border: 0 !important; - color: #fff -} - -.full-color-table.full-warning-table tr:hover { - background-color: #fec107 -} - -.full-color-table.full-danger-table { - background-color: rgba(251, 150, 120, .8); -} - -.full-color-table.full-danger-table thead th { - background-color: #fb9678; - border: 0 !important; - color: #fff -} - -.full-color-table.full-danger-table tbody td { - border: 0 !important; - color: #fff -} - -.full-color-table.full-danger-table tr:hover { - background-color: #fb9678; -} - -.full-color-table.full-inverse-table { - background-color: rgba(76, 86, 103, .8); -} - -.full-color-table.full-inverse-table thead th { - background-color: #4c5667; - border: 0 !important; - color: #fff -} - -.full-color-table.full-inverse-table tbody td { - border: 0 !important; - color: #fff -} - -.full-color-table.full-inverse-table tr:hover { - background-color: #4c5667 -} - -.full-color-table.full-dark-table { - background-color: rgba(43, 43, 43, .8); -} - -.full-color-table.full-dark-table thead th { - background-color: #2b2b2b; - border: 0 !important; - color: #fff -} - -.full-color-table.full-dark-table tbody td { - border: 0 !important; - color: #fff -} - -.full-color-table.full-dark-table tr:hover { - background-color: #2b2b2b -} - -.full-color-table.full-red-table { - background-color: rgba(251, 58, 58, .8); -} - -.full-color-table.full-red-table thead th { - background-color: #fb3a3a; - border: 0 !important; - color: #fff -} - -.full-color-table.full-red-table tbody td { - border: 0 !important; - color: #fff -} - -.full-color-table.full-red-table tr:hover { - background-color: #fb3a3a -} - -.full-color-table.full-purple-table { - background-color: rgba(150, 117, 206, .8); -} - -.full-color-table.full-purple-table thead th { - background-color: #9675ce; - border: 0 !important; - color: #fff -} - -.full-color-table.full-purple-table tbody td { - border: 0 !important; - color: #fff -} - -.full-color-table.full-purple-table tr:hover { - background-color: #9675ce; -} - -.full-color-table.full-muted-table { - background-color: rgba(152, 166, 173, .8); -} - -.full-color-table.full-muted-table thead th { - background-color: #98a6ad; - border: 0 !important; - color: #fff -} - -.full-color-table.full-muted-table tbody td { - border: 0 !important; - color: #fff -} - -.full-color-table.full-muted-table tr:hover { - background-color: #98a6ad -} - -.floating-labels .form-group { - position: relative; -} - -.floating-labels .form-control { - font-size: 20px; - padding: 10px 10px 10px 0; - display: block; - border: none; - border-bottom: 1px solid #e4e7ea -} - -.floating-labels select.form-control>option { - font-size: 14px; -} - -.has-error .form-control { - border-bottom: 1px solid #fb9678; -} - -.has-warning .form-control { - border-bottom: 1px solid #fec107 -} - -.has-success .form-control { - border-bottom: 1px solid #00c292; -} - -.floating-labels .form-control:focus { - outline: 0; - border: none; -} - -.floating-labels label { - color: #686868; - font-size: 16px; - position: absolute; - cursor: auto; - top: 10px; - transition: .2s ease all; - -moz-transition: .2s ease all; - -webkit-transition: .2s ease all -} - -.floating-labels .form-control:focus~label, -.floating-labels .form-control:valid~label { - top: -20px; - font-size: 12px; - color: #ab8ce4 -} - -.floating-labels .bar { - position: relative; - display: block -} - -.floating-labels .bar:after, -.floating-labels .bar:before { - content: ''; - height: 2px; - width: 0; - bottom: 1px; - position: absolute; - background: #ab8ce4; - transition: .2s ease all; - -moz-transition: .2s ease all; - -webkit-transition: .2s ease all -} - -.floating-labels .bar:before { - left: 50%; -} - -.floating-labels .bar:after { - right: 50%; -} - -.floating-labels .form-control:focus~.bar:after, -.floating-labels .form-control:focus~.bar:before { - width: 50%; -} - -.floating-labels .highlight { - position: absolute; - height: 60%; - width: 100px; - top: 25%; - left: 0; - pointer-events: none; - opacity: .5 -} - -.floating-labels .input-lg, -.floating-labels .input-lg~label { - font-size: 24px; -} - -.floating-labels .input-sm, -.floating-labels .input-sm~label { - font-size: 16px; -} - -.has-warning .bar:after, -.has-warning .bar:before { - background: #fec107 -} - -.has-success .bar:after, -.has-success .bar:before { - background: #00c292; -} - -.has-error .bar:after, -.has-error .bar:before { - background: #fb9678; -} - -.has-warning .form-control:focus~label, -.has-warning .form-control:valid~label { - color: #fec107 -} - -.has-success .form-control:focus~label, -.has-success .form-control:valid~label { - color: #00c292; -} - -.has-error .form-control:focus~label, -.has-error .form-control:valid~label { - color: #fb9678; -} - -.has-feedback label~.t-0 { - top: 0; -} - -.table.dataTable, -table.dataTable { - width: 99.8% !important; -} - -table.dataTable thead .sorting::after, -table.dataTable thead .sorting_asc::after, -table.dataTable thead .sorting_desc::after { - float: none; - padding-left: 10px; -} - -.re ul.two-part li i, -.re ul.two-part li span { - font-size: 36px; -} - -.bg-light h4 { - font-weight: 700; -} - -.agent-contact, -.pro-desc { - font-size: 12px; -} - -.form-agent-inq .form-group { - margin-bottom: 10px; -} - -.agent-info { - max-height: 358px; - height: 358px; - background: #f7fafc -} - -.pro-list { - margin-top: 15px; -} - -.pro-detail, -.pro-img { - display: table-cell; - vertical-align: top -} - -.pro-detail h5 a { - color: #686868; - line-height: 20px; - font-weight: 500; -} - -.pro-box .pro-list-img { - display: block; - height: 210px; - position: relative; - overflow: hidden -} - -.pro-box .pro-label { - position: absolute; - text-transform: uppercase; - top: 0; - right: 0; - border-radius: 2px; - padding: 5px; - font-size: 80%; -} - -.pro-col-label { - padding: 7px; - width: 26%; - display: block; - margin-top: -15px; - margin-left: 37%; - border: 1px solid rgba(120, 130, 140, .13); - text-transform: uppercase; -} - -.pro-box .pro-label-img { - position: absolute; - top: 30px; - right: 30px; -} - -.pro-box.pro-horizontal pro-content { - width: 100%; - height: 210px; -} - -.pro-content .pro-list-details { - height: 138px; - max-height: 142px; - border-bottom: 1px solid rgba(120, 130, 140, .13); - border-right: 1px solid rgba(120, 130, 140, .13); -} - -.pro-content .pro-list-info { - border-bottom: 1px solid rgba(120, 130, 140, .13); -} - -.pro-agent .agent-name h5, -.pro-agent .agent-name small, -.pro-agent-col-3 .agent-name h5, -.pro-agent-col-3 .agent-name small, -.pro-content .pro-list-details h3, -.pro-content .pro-list-details h4, -.pro-content-3-col .pro-list-details h3, -.pro-content-3-col .pro-list-details h4, -.pro-content-3-col .pro-list-details h4 small, -.pro-list-info ul.pro-info li, -.pro-list-info-3-col ul.pro-info li, -.pro-location span, -ul.pro-info li span.label { - font-weight: 500; -} - -.pro-list-info ul.pro-info, -.pro-list-info-3-col ul.pro-info { - padding: 16px 10px 10px; - list-style: none; -} - -.pro-list-info ul.pro-info li { - padding: 10px 0 10px 20px; - font-size: 12px; -} - -ul.pro-info li span.label { - width: 25px; - height: 25px; - padding: 8px; - border-radius: 50%; - margin-top: -4px; - margin-right: 15px; - font-size: 12px; -} - -ul.pro-amenities li span img, -ul.pro-info li span img { - margin-top: -8px; - padding-right: 12px; -} - -.pro-agent .agent-img a img, -.pro-agent-col-3 .agent-img a img { - border: 3px solid #fff; - box-shadow: 1px 1px 1px rgba(120, 130, 140, .13); -} - -.pro-agent .agent-img, -.pro-agent .agent-name, -.pro-agent-col-3 .agent-img, -.pro-agent-col-3 .agent-name { - float: left; -} - -.pro-agent .agent-img { - padding-top: 12px; -} - -.pro-agent .agent-name { - padding: 10px 0 0 15px; -} - -.pro-location span { - padding-top: 27px; -} - -.pro-content-3-col { - padding: 15px; - background: #f7fafc -} - -.pro-content-3-col .pro-list-details h4 small { - color: #fb9678; -} - -.pro-list-info-3-col ul.pro-info li { - padding: 10px 5px; -} - -.pro-agent-col-3 .agent-img { - padding: 15px; -} - -.pro-agent-col-3 .agent-name { - padding: 15px 15px 15px 5px; -} - -ul.pro-amenities { - list-style: none; - padding: 8px 0; -} - -ul.pro-amenities li { - padding: 10px 0; - font-size: 12px; -} - -ul.pro-amenities li span i { - padding-right: 12px; -} - -.pro-rd .table>tbody>tr>td:first-child { - font-weight: 500; -} - -.pro-rd .table>tbody>tr>td, -.pro-rd .table>tbody>tr>th { - border: none; - padding: 8px 8px 8px 0; - font-size: 12px; -} - -.pd-agent-info { - max-height: 200px; - height: 200px; - background: #f7fafc; - margin-top: 15px; -} - -.pd-agent-contact, -.pd-agent-inq { - padding: 25px; -} - -.pro-add-form .checkbox label, -.pro-add-form .radio label { - font-weight: 100; -} - -.register-box { - max-width: 600px; - margin: 0 auto; - padding-top: 2%; -} - -.step-register { - position: absolute; - height: 100%; -} - -.icheck-list, -.icolors { - padding: 0; - margin: 0; - list-style: none; -} - -.icolors>li { - padding: 0; - margin: 2px; - float: left; - display: inline-block; - height: 30px; - width: 30px; - background: #2b2b2b; - text-align: center -} - -.icolors>li.active:after { - content: "\2713 "; - color: #fff; - line-height: 30px; -} - -.icolors>li:first-child { - margin-left: 0; -} - -.icolors>li.orange { - background: #fb9678; -} - -.icolors>li.yellow { - background: #fec107 -} - -.icolors>li.info { - background: #03a9f3; -} - -.icolors>li.green { - background: #00c292; -} - -.icolors>li.red { - background: #fb3a3a -} - -.icolors>li.purple { - background: #9675ce; -} - -.icolors>li.blue { - background: #02bec9; -} - -.icheck-list { - float: left; - padding-right: 50px; - padding-top: 10px; -} - -.icheck-list li { - padding-bottom: 5px; -} - -.icheck-list li label { - padding-left: 10px; -} - -.default-steps .column-step { - padding-top: 30px; - padding-bottom: 30px; - text-align: center; - background: #edf1f5 -} - -.default-steps .column-step.active { - background: #03a9f3; -} - -.default-steps .column-step.active .step-number, -.default-steps .step-number { - font-size: 24px; - background: #03a9f3; - color: #fff; - border-radius: 50%; - display: inline-block; - margin: auto auto 10px; - height: 50px; - width: 50px; - text-align: center; - line-height: 50px; -} - -.default-steps .column-step.active .step-number { - background: #fff; - color: #686868; -} - -.default-steps .step-title { - font-size: 24px; - font-weight: 100; -} - -.default-steps .column-step.active .step-info, -.default-steps .column-step.active .step-title { - color: #fff -} - -.thin-steps .column-step { - padding: 20px; - background: #edf1f5 -} - -.thin-steps .column-step.active { - background: #fb9678; -} - -.thin-steps .column-step.active .step-number, -.thin-steps .step-number { - font-size: 20px; - background: #fb9678; - color: #fff; - border-radius: 50%; - float: left; - display: inline-block; - margin: auto; - padding-top: 2px; - height: 40px; - width: 40px; - text-align: center; - line-height: 40px; -} - -.thin-steps .column-step.active .step-number { - background: #fff; - color: #686868; -} - -.thin-steps .step-title { - font-size: 24px; - font-weight: 100; - padding-left: 60px; - margin-top: -2px; -} - -.thin-steps .column-step.active .step-info, -.thin-steps .column-step.active .step-title { - color: #fff -} - -.thin-steps .step-info { - padding-left: 60px; - margin-top: -5px; -} - -.steps-no-bg .column-step { - padding-top: 10px; - padding-bottom: 10px; - text-align: center -} - -.steps-no-bg .column-step.active .step-number, -.steps-no-bg .step-number { - font-size: 24px; - background: #fff; - color: #686868; - border: 1px solid #686868; - border-radius: 50%; - display: inline-block; - margin: auto auto 10px; - height: 50px; - width: 50px; - text-align: center; - line-height: 50px; -} - -.steps-no-bg .column-step.active .step-number { - background: #fff; - color: #03a9f3; - border: 1px solid #03a9f3; -} - -.steps-no-bg .step-title { - font-size: 24px; - font-weight: 100; -} - -.steps-no-bg .column-step.active .step-info, -.steps-no-bg .column-step.active .step-title { - color: #03a9f3; -} - -.thin-steps-no-bg .column-step { - padding: 20px; -} - -.thin-steps-no-bg .column-step.active .step-number, -.thin-steps-no-bg .step-number { - font-size: 20px; - background: #fff; - color: #686868; - border: 1px solid #686868; - border-radius: 50%; - float: left; - display: inline-block; - margin: auto; - padding-top: 1px; - height: 40px; - width: 40px; - text-align: center; - line-height: 40px; -} - -.thin-steps-no-bg .column-step.active .step-number { - background: #fff; - color: #fb9678; - border: 1px solid #fb9678; -} - -.thin-steps-no-bg .step-title { - font-size: 24px; - font-weight: 100; - padding-left: 60px; - margin-top: -2px; -} - -.thin-steps-no-bg .column-step.active .step-info, -.thin-steps-no-bg .column-step.active .step-title { - color: #fb9678; -} - -.thin-steps-no-bg .step-info { - padding-left: 60px; - margin-top: -5px; -} - -.numbered-bg .column-step { - padding-top: 30px; - padding-bottom: 30px; - text-align: center; - height: 160px; - background: #edf1f5 -} - -.numbered-bg .column-step.active { - background: #03a9f3; -} - -.numbered-bg .column-step.active .step-number, -.numbered-bg .step-number { - font-size: 200px; - position: absolute; - bottom: 0; - right: 0; - line-height: 120px; - color: #e4e7ea; - z-index: 1 -} - -.numbered-bg .column-step.active .step-number { - color: #0298da -} - -.numbered-bg .step-title { - font-size: 24px; - font-weight: 100; - padding-top: 18px; -} - -.numbered-bg .step-info, -.numbered-bg .step-title { - z-index: 3; - position: relative; -} - -.numbered-bg .column-step.active .step-info, -.numbered-bg .column-step.active .step-title { - color: #fff -} - -.thin-steps-numbered-bg .column-step { - padding: 20px; - text-align: center; - background: #edf1f5 -} - -.thin-steps-numbered-bg .column-step.active { - background: #03a9f3; -} - -.thin-steps-numbered-bg .column-step.active .step-number, -.thin-steps-numbered-bg .step-number { - font-size: 120px; - position: absolute; - bottom: 0; - right: 0; - line-height: 75px; - color: #e4e7ea; - z-index: 1 -} - -.thin-steps-numbered-bg .column-step.active .step-number { - color: #0298da -} - -.thin-steps-numbered-bg .step-title { - font-size: 24px; - font-weight: 100; -} - -.thin-steps-numbered-bg .step-info, -.thin-steps-numbered-bg .step-title { - z-index: 3; - position: relative; -} - -.thin-steps-numbered-bg .column-step.active .step-info, -.thin-steps-numbered-bg .column-step.active .step-title { - color: #fff -} - -.line-steps .column-step { - padding: 30px 0; - text-align: center -} - -.line-steps .step-number { - font-size: 20px; - background: #fff; - border-radius: 50% !important; - display: inline-block; - margin: auto auto 14px; - border: 3px solid #e4e7ea; - position: relative; - height: 40px; - width: 40px; - z-index: 3; - line-height: 37px; -} - -.line-steps .step-title { - font-size: 20px; - font-weight: 100; - position: relative; -} - -.line-steps .step-title:after, -.line-steps .step-title:before { - content: ''; - height: 3px; - width: 50%; - position: absolute; - background-color: #e4e7ea; - top: -32px; - z-index: 1; - transform: translateY(-100%); -} - -.line-steps .step-title:after { - left: 50%; -} - -.line-steps .step-title:before { - right: 50%; -} - -.line-steps .finish .step-title:after, -.line-steps .start .step-title:before { - content: none; -} - -.line-steps .start .step-title:after { - background-color: #03a9f3; -} - -.line-steps .start .step-number { - color: #03a9f3; - border-color: #03a9f3; -} - -.line-steps .start .step-info, -.line-steps .start .step-title { - color: #686868; -} - -.line-steps .active .step-title:after, -.line-steps .active .step-title:before { - background-color: #03a9f3; -} - -.line-steps .active .step-number { - color: #03a9f3; - border-color: #03a9f3; - webkit-transform: scale(1.3); - -ms-transform: scale(1.3); - -o-transform: scale(1.3); - transform: scale(1.3); -} - -.line-steps .active .step-info, -.line-steps .active .step-title { - color: #686868; -} - -.line-steps .upcoming .step-title:after, -.line-steps .upcoming .step-title:before { - background-color: #03a9f3; -} - -.line-steps .upcoming .step-number { - color: #03a9f3; - border-color: #03a9f3; -} - -.line-steps .upcoming .step-info, -.line-steps .upcoming .step-title { - color: #686868; -} - -.line-steps .finish .step-number { - color: #e4e7ea -} - -.line-steps .finish .step-info, -.line-steps .finish .step-title { - color: #686868; -} - -.ribbon-wrapper, -.ribbon-wrapper-bottom, -.ribbon-wrapper-reverse, -.ribbon-wrapper-right-bottom { - position: relative; - background: #edf1f5; - padding: 50px 15px 15px 50px; -} - -.ribbon-overflow { - overflow: hidden -} - -.ribbon-wrapper-reverse { - padding: 50px 50px 15px 15px; -} - -.ribbon-wrapper-bottom { - padding: 15px 15px 50px 50px; -} - -.ribbon-wrapper-right-bottom { - padding: 15px 50px 50px 15px; -} - -.ribbon { - padding: 0 20px; - height: 30px; - line-height: 30px; - clear: left; - position: absolute; - top: 12px; - left: -2px; - color: #fff -} - -.ribbon-bookmark:before { - position: absolute; - top: 0; - left: 100%; - display: block; - width: 0; - height: 0; - content: ''; - border: 15px solid #2b2b2b; - border-right: 10px solid transparent; -} - -.ribbon-right { - left: auto; - right: -2px; -} - -.ribbon-bookmark.ribbon-right:before { - right: 100%; - left: auto; - border-right: 15px solid #2b2b2b; - border-left: 10px solid transparent; -} - -.ribbon-vertical-l, -.ribbon-vertical-r { - clear: none; - padding: 0 5px; - height: 70px; - width: 30px; - line-height: 70px; - text-align: center; - left: 12px; - top: -2px; -} - -.ribbon-vertical-r { - left: auto; - right: 12px; -} - -.ribbon-bookmark.ribbon-vertical-l:before, -.ribbon-bookmark.ribbon-vertical-r:before { - top: 100%; - left: 0; - margin-top: -14px; - border-right: 15px solid #2b2b2b; - border-bottom: 10px solid transparent; -} - -.ribbon-badge { - top: 15px; - overflow: hidden; - left: -90px; - width: 100%; - text-align: center; - -webkit-transform: rotate(-45deg); - -ms-transform: rotate(-45deg); - -o-transform: rotate(-45deg); - transform: rotate(-45deg); -} - -.ribbon-badge.ribbon-right { - left: auto; - right: -90px; - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); - -o-transform: rotate(45deg); - transform: rotate(45deg); -} - -.ribbon-badge.ribbon-bottom { - top: auto; - bottom: 15px; - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); - -o-transform: rotate(45deg); - transform: rotate(45deg); -} - -.ribbon-badge.ribbon-right.ribbon-bottom { - -webkit-transform: rotate(-45deg); - -ms-transform: rotate(-45deg); - -o-transform: rotate(-45deg); - transform: rotate(-45deg); -} - -.ribbon-corner { - top: 0; - left: 0; - background-color: transparent !important; - padding: 6px 0 0 10px; -} - -.ribbon-corner i { - position: relative; -} - -.ribbon-corner:before { - position: absolute; - top: 0; - left: 0; - width: 0; - height: 0; - content: ''; - border: 30px solid transparent; - border-top-color: #ff6849; - border-left-color: #ff6849; -} - -.ribbon-corner.ribbon-right:before { - right: 0; - left: auto; - border-right-color: #526069; - border-left-color: transparent; -} - -.ribbon-corner.ribbon-right { - right: 0; - left: auto; - padding: 6px 10px 0 0; -} - -.ribbon-corner.ribbon-bottom:before { - top: auto; - bottom: 0; - border-top-color: transparent; - border-bottom-color: #526069; -} - -.ribbon-corner.ribbon-bottom { - bottom: 0; - top: auto; - padding: 0 10px 6px; -} - -.ribbon-custom { - background: #ff6849; -} - -.ribbon-bookmark.ribbon-right.ribbon-custom:before { - border-right-color: #ff6849; - border-left-color: transparent; -} - -.ribbon-bookmark.ribbon-vertical-l.ribbon-custom:before, -.ribbon-bookmark.ribbon-vertical-r.ribbon-custom:before { - border-right-color: #ff6849; - border-bottom-color: transparent; -} - -.ribbon-primary { - background: #ab8ce4 -} - -.ribbon-bookmark.ribbon-primary:before { - border-color: #ab8ce4 transparent #ab8ce4 #ab8ce4 -} - -.ribbon-bookmark.ribbon-right.ribbon-primary:before { - border-right-color: #ab8ce4; - border-left-color: transparent; -} - -.ribbon-bookmark.ribbon-vertical-l.ribbon-primary:before, -.ribbon-bookmark.ribbon-vertical-r.ribbon-primary:before { - border-right-color: #ab8ce4; - border-bottom-color: transparent; -} - -.ribbon-primary.ribbon-corner:before { - border-top-color: #ab8ce4; - border-left-color: #ab8ce4 -} - -.ribbon-primary.ribbon-corner.ribbon-right:before { - border-right-color: #ab8ce4; - border-left-color: transparent; -} - -.ribbon-primary.ribbon-corner.ribbon-bottom:before { - border-top-color: transparent; - border-bottom-color: #ab8ce4 -} - -.ribbon-success { - background: #00c292; -} - -.ribbon-bookmark.ribbon-success:before { - border-color: #00c292 transparent #00c292 #00c292; -} - -.ribbon-bookmark.ribbon-right.ribbon-success:before { - border-right-color: #00c292; - border-left-color: transparent; -} - -.ribbon-bookmark.ribbon-vertical-l.ribbon-success:before, -.ribbon-bookmark.ribbon-vertical-r.ribbon-success:before { - border-right-color: #00c292; - border-bottom-color: transparent; -} - -.ribbon-success.ribbon-corner:before { - border-top-color: #00c292; - border-left-color: #00c292; -} - -.ribbon-success.ribbon-corner.ribbon-right:before { - border-right-color: #00c292; - border-left-color: transparent; -} - -.ribbon-success.ribbon-corner.ribbon-bottom:before { - border-top-color: transparent; - border-bottom-color: #00c292; -} - -.ribbon-info { - background: #03a9f3; -} - -.ribbon-bookmark.ribbon-info:before { - border-color: #03a9f3 transparent #03a9f3 #03a9f3; -} - -.ribbon-bookmark.ribbon-right.ribbon-info:before { - border-right-color: #03a9f3; - border-left-color: transparent; -} - -.ribbon-bookmark.ribbon-vertical-l.ribbon-info:before, -.ribbon-bookmark.ribbon-vertical-r.ribbon-info:before { - border-right-color: #03a9f3; - border-bottom-color: transparent; -} - -.ribbon-info.ribbon-corner:before { - border-top-color: #03a9f3; - border-left-color: #03a9f3; -} - -.ribbon-info.ribbon-corner.ribbon-right:before { - border-right-color: #03a9f3; - border-left-color: transparent; -} - -.ribbon-info.ribbon-corner.ribbon-bottom:before { - border-top-color: transparent; - border-bottom-color: #03a9f3; -} - -.ribbon-warning { - background: #fec107 -} - -.ribbon-bookmark.ribbon-warning:before { - border-color: #fec107 transparent #fec107 #fec107 -} - -.ribbon-bookmark.ribbon-right.ribbon-warning:before { - border-right-color: #fec107; - border-left-color: transparent; -} - -.ribbon-bookmark.ribbon-vertical-l.ribbon-warning:before, -.ribbon-bookmark.ribbon-vertical-r.ribbon-warning:before { - border-right-color: #fec107; - border-bottom-color: transparent; -} - -.ribbon-warning.ribbon-corner:before { - border-top-color: #fec107; - border-left-color: #fec107 -} - -.ribbon-warning.ribbon-corner.ribbon-right:before { - border-right-color: #fec107; - border-left-color: transparent; -} - -.ribbon-warning.ribbon-corner.ribbon-bottom:before { - border-top-color: transparent; - border-bottom-color: #fec107 -} - -.ribbon-danger { - background: #fb9678; -} - -.ribbon-bookmark.ribbon-danger:before { - border-color: #fb9678 transparent #fb9678 #fb9678; -} - -.ribbon-bookmark.ribbon-right.ribbon-danger:before { - border-right-color: #fb9678; - border-left-color: transparent; -} - -.ribbon-bookmark.ribbon-vertical-l.ribbon-danger:before, -.ribbon-bookmark.ribbon-vertical-r.ribbon-danger:before { - border-right-color: #fb9678; - border-bottom-color: transparent; -} - -.ribbon-danger.ribbon-corner:before { - border-top-color: #fb9678; - border-left-color: #fb9678; -} - -.ribbon-danger.ribbon-corner.ribbon-right:before { - border-right-color: #fb9678; - border-left-color: transparent; -} - -.ribbon-danger.ribbon-corner.ribbon-bottom:before { - border-top-color: transparent; - border-bottom-color: #fb9678; -} - -.ribbon-default { - background: #2b2b2b -} - -.ribbon-bookmark.ribbon-default:before { - border-color: #2b2b2b transparent #2b2b2b #2b2b2b -} - -.ribbon-bookmark.ribbon-right.ribbon-default:before { - border-right-color: #2b2b2b; - border-left-color: transparent; -} - -.ribbon-bookmark.ribbon-vertical-l.ribbon-default:before, -.ribbon-bookmark.ribbon-vertical-r.ribbon-default:before { - border-right-color: #2b2b2b; - border-bottom-color: transparent; -} - -.ribbon-default.ribbon-corner:before { - border-top-color: #2b2b2b; - border-left-color: #2b2b2b -} - -.ribbon-default.ribbon-corner.ribbon-right:before { - border-right-color: #2b2b2b; - border-left-color: transparent; -} - -.ribbon-default.ribbon-corner.ribbon-bottom:before { - border-top-color: transparent; - border-bottom-color: #2b2b2b -} - -.bootstrap-switch, -.bootstrap-switch .bootstrap-switch-container { - border-radius: 2px; -} - -.bootstrap-switch .bootstrap-switch-handle-on { - border-bottom-left-radius: 2px; - border-top-left-radius: 2px; -} - -.bootstrap-switch .bootstrap-switch-handle-off { - border-bottom-right-radius: 2px; - border-top-right-radius: 2px; -} - -.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary, -.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary { - color: #fff; - background: #ab8ce4 -} - -.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info, -.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info { - color: #fff; - background: #03a9f3; -} - -.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success, -.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success { - color: #fff; - background: #00c292; -} - -.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning, -.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning { - color: #fff; - background: #fec107 -} - -.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger, -.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger { - color: #fff; - background: #fb9678; -} - -.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default, -.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default { - color: #2b2b2b; - background: #e4e7ea -} - -.lobipanel .panel-heading .dropdown .dropdown-menu>li>a .panel-control-icon, -.lobipanel>.panel-heading .dropdown .dropdown-toggle .panel-control-icon { - line-height: 1px; -} - -.lobipanel .panel-heading .dropdown .dropdown-menu>li>a { - color: #2b2b2b -} - -.lobipanel .panel-heading .dropdown .dropdown-menu { - box-shadow: none !important; -} - -.lobipanel .panel-heading .dropdown .dropdown-menu>li>a:focus:hover, -.lobipanel .panel-heading .dropdown .dropdown-menu>li>a:hover { - background: 0 0; - text-shadow: none; - opacity: .6 -} - -.lobipanel-placeholder { - background-color: #02bec9; - opacity: .1; - border: 1px dashed #2b2b2b -} - -.dp-selected[style] { - background-color: #01c0c8 !important; -} - -.grid-stack-item-content { - background: #fff; - color: #2b2b2b; - font-family: Poppins, sans-serif; - text-align: center; - font-size: 20px; -} - -.grid-stack-item-content .fa { - font-size: 64px; - display: block; - margin: 20px 0 10px; -} - -@media (max-width:1350px) { - .carousel .item h3 { - font-size: 17px; - height: 90px - } - - .inbox-center a { - width: 400px - } -} - -@media (min-width:1024px) { - .app-search .form-control:focus { - width: 300px - } -} - -@media (min-width:768px) { - #page-wrapper { - position: inherit; - margin: 0 0 0 220px - } - - .navbar-default { - position: relative; - width: 100%; - top: 0 - } - - .fix-header .navbar-static-top { - position: fixed - } - - .fix-header #page-wrapper { - margin-top: 60px - } - - .sidebar { - z-index: 10; - position: absolute; - width: 220px; - padding-top: 60px; - height: 100% - } - - .fix-sidebar .sidebar { - position: fixed; - overflow: hidden - } - - .fix-sidebar .top-left-part { - position: fixed; - width: 220px - } - - .fix-sidebar .navbar-left { - margin-left: 220px - } - - .footer { - left: 220px - } - - .content-wrapper #page-wrapper { - margin-left: 60px - } - - .content-wrapper .navbar-left { - margin-left: 0 - } - - .content-wrapper .footer { - left: 60px - } - - .content-wrapper .sidebar { - width: 60px - } - - .content-wrapper .sidebar .hide-menu { - display: none; - width: 180px; - left: 60px - } - - .content-wrapper .sidebar .sidebar-nav { - position: absolute; - overflow: hidden - } - - .content-wrapper .sidebar .sidebar-nav .nav-second-level { - position: absolute; - z-index: 999999 - } - - .content-wrapper .sidebar .nav-small-cap, - .content-wrapper .sidebar li span span { - display: none - } - - .content-wrapper .sidebar #side-menu>li:hover { - width: 300px; - background: #f7fafc - } - - .content-wrapper .sidebar li:hover .hide-menu { - display: inline - } - - .content-wrapper .sidebar #side-menu>li>a { - padding: 15px 17px 15px 20px - } - - .content-wrapper .sidebar li:hover .nav-second-level, - .content-wrapper .sidebar li:hover .nav-second-level.collapse li, - .content-wrapper .sidebar li:hover .nav-second-level.in { - display: block - } - - .content-wrapper .sidebar .nav-second-level { - position: absolute; - left: 60px; - background: #f7fafc; - width: 240px; - opacity: 1; - padding-bottom: 20px; - display: none - } - - .content-wrapper .sidebar .nav-second-level li { - background: #f7fafc - } - - .content-wrapper .top-left-part { - width: 60px - } - - .navbar-top-links .dropdown-alerts, - .navbar-top-links .dropdown-messages, - .navbar-top-links .dropdown-tasks { - margin-left: auto - } - - .mail_listing { - border-left: 1px solid rgba(120, 130, 140, .13); - padding-left: 20px - } - - .inbox-panel { - padding-right: 20px - } - - .top-minus { - margin-top: -62px; - float: right - } - - .content-wrapper.fix-sidebar .navbar-left, - .fix-sidebar.content-wrapper .navbar-left { - margin-left: 60px !important - } - - .content-wrapper.fix-sidebar .sidebar, - .fix-sidebar.content-wrapper .sidebar { - position: fixed - } - - .content-wrapper.fix-sidebar .sidebar .sidebar-nav, - .fix-sidebar.content-wrapper .sidebar .sidebar-nav { - position: absolute - } - - .content-wrapper.fix-sidebar .sidebar .sidebar-nav .nav-second-level, - .fix-sidebar.content-wrapper .sidebar .sidebar-nav .nav-second-level { - position: absolute; - z-index: 99999 - } - - .lobipanel .panel-heading .dropdown .dropdown-menu>li>a { - color: #fff - } -} - -@media (max-width:1024px) { - .b-r-none { - border-right: 0 - } - - .carousel-inner h3 { - height: 90px; - overflow: hidden - } - - .inbox-center a { - width: 300px - } -} - -@media (max-width:767px) { - .navbar-top-links { - display: inline-block - } - - .navbar-top-links .profile-pic img { - margin-right: 0 - } - - .top-left-part { - width: 60px - } - - .navbar-top-links li:last-child { - margin-right: 0 - } - - .navbar-top-links .dropdown-alerts, - .navbar-top-links .dropdown-messages, - .navbar-top-links .dropdown-tasks { - width: 260px - } - - .row-in-br { - border-right: 0; - border-bottom: 1px solid rgba(120, 130, 140, .13) - } - - .bg-title .breadcrumb { - float: left; - margin-top: 0; - margin-bottom: 10px - } - - ul.timeline:before { - left: 40px - } - - ul.timeline>li>.timeline-panel { - width: calc(100% - 90px) - } - - ul.timeline>li>.timeline-badge { - top: 16px; - left: 15px; - margin-left: 0 - } - - ul.timeline>li>.timeline-panel { - float: right - } - - ul.timeline>li>.timeline-panel:before { - right: auto; - left: -15px; - border-right-width: 15px; - border-left-width: 0 - } - - ul.timeline>li>.timeline-panel:after { - right: auto; - left: -14px; - border-right-width: 14px; - border-left-width: 0 - } - - .wizard-steps>li { - display: block - } - - .dropdown .dropdown-tasks, - .dropdown .mailbox { - left: -100px - } - - .fix-header .navbar-static-top { - position: fixed; - top: 0; - width: 100% - } - - .fix-header #page-wrapper { - margin-top: 60px - } - - .fix-header .sidebar { - position: fixed; - height: 350px; - top: 60px; - z-index: 100; - overflow: auto !important; - box-shadow: 0 10px 35px rgba(0, 0, 0, .2) - } - - .mega-dropdown-menu { - height: 340px; - overflow: auto - } - - .left-aside { - position: relative; - width: 100%; - border: 0 - } - - .right-aside { - margin-left: 0 - } - - .chat-main-box .chat-left-aside { - left: -250px; - transition: .5s ease-in; - background: #fff - } - - .chat-main-box .chat-left-aside.open-pnl { - left: 0 - } - - .chat-main-box .chat-left-aside .open-panel { - display: block - } - - .chat-main-box .chat-right-aside { - margin: 0 - } - - .table-responsive.pro-rd { - border: none - } - - #msform fieldset, - .login-register, - .step-register { - position: relative - } -} - -@media (max-width:480px) { - .vtabs .tabs-vertical { - width: auto - } - - .stat-item { - padding-right: 0 - } - - .login-box { - width: 100% - } - - .pro-content .pro-list-details { - height: 100px; - border-right: none - } - - .pro-list-info ul.pro-info li { - padding: 10px 0 - } - - .pro-list-info ul.pro-info { - padding-left: 0 - } - - .pro-agent .agent-img { - padding-top: 3px - } - - .pro-agent .agent-name { - padding: 2px 0 10px 15px - } -} - -.navbar-static-top { - padding: 0; -} - -.navbar-static-top .dropdown-toggle::after { - display: none; -} - -.mega-dropdown .mega-dropdown-menu>li { - float: left; - width: 100%; -} - -#side-menu { - display: block; - transition: .5 easy-out; -} - -#side-menu .nav { - flex-direction: column -} - -a.btn:not([href]):not([tabindex]) { - color: #fff; - font-size: 14px; - cursor: pointer; -} - -.col-sm-4 li a.btn:not([href]):not([tabindex]) { - white-space: inherit; -} - -.btn { - font-size: 14px; - padding: .8rem 1.2rem -} - -a.btn-default:not([href]):not([tabindex]) { - color: #686868; -} - -.btn-group.show { - display: inline-block !important; -} - -.btn-lg { - padding: 10px 16px; - font-size: 18px; -} - -.btn-sm { - padding: 5px 10px; - font-size: 12px; -} - -.btn-xs { - padding: 1px 8px; - font-size: 11px; -} - -.btn-circle { - padding: 6px 0; -} - -.btn-group-justified { - display: table; - width: 100%; - table-layout: fixed; - border-collapse: separate; -} - -.btn-group-justified .btn, -.btn-group-justified .btn-group { - display: table-cell; - float: none; - width: 1%; -} - -.grid-stack { - width: 100%; -} - -.mail_listing .media { - display: block -} - -.customtab.nav-tabs .nav-link { - border-left: 0; - border-top: 0; - border-right: 0; - border-bottom: 2px solid #f7fafc -} - -.customtab.nav-tabs .nav-link.active, -.customtab.nav-tabs .nav-link.active:focus, -.customtab.nav-tabs .nav-link:hover { - border-bottom: 2px solid #ff6849; - color: #ff6849; -} - -.vtabs .tabs-vertical li a.active, -.vtabs .tabs-vertical li a.active:focus, -.vtabs .tabs-vertical li a.active:hover { - background: #ff6849; - border: 0; - border-right: 2px solid #ff6849; - margin-right: -1px; - color: #fff -} - -.customvtab .tabs-vertical li a.active, -.customvtab .tabs-vertical li a.active:focus, -.customvtab .tabs-vertical li a.active:hover { - background: #fff; - border: 0; - border-right: 2px solid #ff6849; - margin-right: -1px; - color: #2b2b2b -} - -.customtab2 li .nav-link.active, -.customtab2 li .nav-link.active:focus, -.customtab2 li .nav-link.active:hover { - background: #ff6849; - border: 0 solid #ff6849; - color: #fff -} - -.customtab2.nav-tabs .nav-link { - border: 0; -} - -.nav-pills .nav-item.show .nav-link, -.nav-pills .nav-link.active { - background: #ff6849; -} - -span.caret { - display: none; -} - -blockquote { - padding: 10px 20px; - margin: 0 0 20px; - font-size: 17.5px; -} - -.list-inline>li { - display: inline-block -} - -.modal-header { - display: block -} - -.modal-header .modal-title { - margin-top: 0; -} - -.popover, -.popover-title, -.tooltip { - font-family: Poppins, sans-serif; - font-size: 13px; -} - -.popover-title { - margin-top: 0; -} - -.custom-select { - height: calc(4.25rem); -} - -.fileinput .form-control { - width: 100%; - position: relative; -} - -.fileinput-new .input-group-addon { - position: absolute; - right: 3px; - top: 3px; - z-index: 10 !important; -} - -.input-group-addon { - padding: 6px 12px; - font-size: 14px; -} - -.custom-control { - padding-left: 20px; -} - -.custom-control-indicator { - width: 15px; - height: 15px; -} - -.custom-file { - height: 30px; - width: 100%; -} - -.custom-file .custom-file-control, -.custom-file .custom-file-control::before { - height: 35px; -} - -select.form-control:not([size]):not([multiple]) { - height: calc(3.85rem); -} - -.datepicker td, -.datepicker th, -.table-condensed td, -.table-condensed th { - padding: 5px; -} - -.note-popover { - display: none; -} - -.note-editor { - border: 0; -} - -[type=reset], -[type=submit], -button, -html [type=button] { - -webkit-appearance: none; -} - -.modal-backdrop.in { - opacity: .5 -} - -a.fc-event:not([href]):not([tabindex]) { - color: #fff -} - -.dataTables_wrapper { - display: block -} - -.dataTables_wrapper label { - display: inline-block -} - -@media (min-width:992px) { - - .col-md-1, - .col-md-10, - .col-md-11, - .col-md-12, - .col-md-2, - .col-md-3, - .col-md-4, - .col-md-5, - .col-md-6, - .col-md-7, - .col-md-8, - .col-md-9 { - float: left - } -} \ No newline at end of file diff --git a/docker/streamline-src/public/js/consultation/create.js b/docker/streamline-src/public/js/consultation/create.js deleted file mode 100755 index 3c6d4db2..00000000 --- a/docker/streamline-src/public/js/consultation/create.js +++ /dev/null @@ -1,174 +0,0 @@ -$('#primary_diagnosis').on('change', function () { - var data = 'diagnosis_id=' + $(this).val(); - $.ajax({ - type: "get", - url: "/diagnoses/get_diagnosis", - data: data, - cache: false, - success: function (result) { - var prompt_and_references = result.split('&&'); - $('#primary_diagnosis_prompt').html(prompt_and_references[0]); - $('#primary_diagnosis_reference').html(prompt_and_references[1]); - } - }); -}); - -$('#wrapper').on( 'change', '[id^=left_eye_diagnosis_id_]', function () { - var data = 'diagnosis_id=' + $(this).val(); - var other_diagnosis_id = $(this).attr('id'); - var nth = other_diagnosis_id.substring(22); //remove "other_diagnosis_id_" from strg to remain with the no e.g 1003 - var prompt_id = parseInt(nth) - 1000; - var reference_id = prompt_id + 100; - $.ajax({ - type: "get", - url: "/diagnoses/get_diagnosis_categories", - data: data, - cache: false, - success: function (result) { console.log(result) - $('#right_diagnosis_category_'+prompt_id).html(""); - $('#other_diagnosis_id_'+reference_id).html(""); - } - }); -}); - -$('#wrapper').on( 'change', '[id^=other_diagnosis_id_]', function () { - var data = 'diagnosis_id=' + $(this).val(); - var other_diagnosis_id = $(this).attr('id'); - var nth = other_diagnosis_id.substring(19); //remove "other_diagnosis_id_" from strg to remain with the no e.g 1003 - var prompt_id = parseInt(nth) - 1000; - var reference_id = prompt_id + 100; - $.ajax({ - type: "get", - url: "/diagnoses/get_diagnosis", - data: data, - cache: false, - success: function (result) { - var prompt_and_references = result.split('&&'); - if (nth < 1000) { - $('#secondary_diagnosis_prompt1').html(prompt_and_references[0]); - $('#secondary_diagnosis_reference1').html(prompt_and_references[1]); - } - else{ - // this is for prompts and references added dynamically using the addrow button - $('#secondary_diagnosis_prompt'+prompt_id).html(prompt_and_references[0]); - $('#secondary_diagnosis_reference'+reference_id).html(prompt_and_references[1]); - } - } - }); -}); - -$("#outcome").change(function () { - var id = $(this).val(); - - switch (id) { - case "1": // Admitted - $('#admitted_div').show(); - $('#home_with_followup_div').hide(); - $('#referred_div').hide(); - break; - - case "3": // Home with follow up - $('#home_with_followup_div').show(); - $('#admitted_div').hide(); - $('#referred_div').hide(); - break; - - case "4": // Referred - $('#referred_div').show(); - $('#home_with_followup_div').hide(); - $('#admitted_div').hide(); - break; - - default: - $('#admitted_div').hide(); - $('#home_with_followup_div').hide(); - $('#referred_div').hide(); - break; - } -}); - -jQuery('.datepicker-autoclose').datepicker({ - autoclose: true, - format: 'yyyy-mm-dd', -}); - -function select2set(id) { - $('#'+id).select2(); -} - -function addRow(tableID) { - - var table = document.getElementById(tableID); - var rowCount = table.rows.length; - var row = table.insertRow(rowCount); - var colCount = table.rows[0].cells.length; - - for (var i = 0; i < colCount; i++) { - - var newcell = row.insertCell(i); - - newcell.innerHTML = table.rows[1].cells[i].innerHTML; - - /* set new id for the symptom select tag which is found in the first cell of every row - * this makes the symptom select tag id dynamic and different for each table row - * the id should be the rowCount +1000 to avoid a similar id with prompt div tag id set below - */ - if (i == 1) { - newcell.childNodes[1].id = 'other_diagnosis_id_'+(rowCount + 1000); - select2set('other_diagnosis_id_'+(rowCount + 1000)); - } - /* - * set new value for the prompt div tag - */ - if (i == 2) { - table.rows[rowCount].cells[2].innerHTML = ''; - table.rows[rowCount].cells[2].innerHTML = '
     
    '; - - } - - if (i == 3) { - - // var myid = (rowCount + 100); - table.rows[rowCount].cells[3].innerHTML = ''; - table.rows[rowCount].cells[3].innerHTML = '
     
    '; - - // alert(myid); - } - - switch (newcell.childNodes[0].type) { - case "text": -// newcell.childNodes[0].value = ""; - break; - case "checkbox": - newcell.childNodes[0].checked = false; - break; - case "select": - newcell.childNodes[0].selectedIndex = 0; - break; - } - } -} - -function deleteRow(tableID) { - try { - var table = document.getElementById(tableID); - var rowCount = table.rows.length; - - for (var i = 0; i < rowCount; i++) { - var row = table.rows[i]; - var chkbox = row.cells[0].childNodes[0]; - if (null != chkbox && true == chkbox.checked) { - if (rowCount <= 2) { - alert("Cannot delete all the rows."); - break; - } - table.deleteRow(i); - rowCount--; - i--; - } - } - } catch (e) { - alert(e); - } -} - diff --git a/docker/streamline-src/public/js/observations/over_12_years_news.js b/docker/streamline-src/public/js/observations/over_12_years_news.js deleted file mode 100755 index 33a4460a..00000000 --- a/docker/streamline-src/public/js/observations/over_12_years_news.js +++ /dev/null @@ -1,178 +0,0 @@ -//Validating the temperature values -$('#temperature').change(function () { - let tempValue = $('#temperature').val(); - if (between(tempValue, 36.1, 38.0)) { - $('#temperatureNewsText').css({ - "color": "green", - "font-size": "bold" - }).text('0'); - $('#temperatureNews').val('0'); - } else if (between(tempValue, 35.1, 36.0) || between(tempValue, 38.1, 39.0)) { - $('#temperatureNewsText').css({ - 'color': 'red' - }).text('1'); - $('#temperatureNews').val('1'); - } else if (tempValue >= 39.1) { - $('#temperatureNewsText').css({ - 'color': 'red' - }).text('2'); - $('#temperatureNews').val('2'); - } else if (tempValue <= 35.0) { - $('#temperatureNewsText').css({ - 'color': 'red' - }).text('3'); - $('#temperatureNews').text('3'); - } -}); - -//Validating the pulse value / heart rate -$('#pulse').change(function () { - let pulseValue = $('#4Value').val(); - if (between(pulseValue, 51, 90)) { - $('#pulseNewsText').css({ - "color": "green", - "font-weight": "thick" - }).text('0'); - $('#pulseNews').val('0'); - } else if (between(pulseValue, 41, 50) || between(pulseValue, 91, 110)) { - $('#pulseNewsText').css({ - "color": "red", - "font-size": "thick" - }).text('1'); - $('#pulseNews').val('1'); - } else if (between(pulseValue, 111, 130)) { - $('#pulseNewsText').css({ - "color": "red", - "font-size": "thick" - }).text('2'); - $('#pulseNews').val('2'); - } else if (pulseValue >= 131 || pulseValue <= 40) { - $('#pulseNewsText').css({ - "color": "red", - "font-size": "thick" - }).text('3'); - $('#pulseNews').val('3'); - } -}); - -//Validating the respirations -$('#respirations').change(function () { - let respValue = $('#respirations').val(); - if (between(respValue, 12, 20)) { - $('#respirationsNewsText').css({ - "color": "green" - }).text("0"); - $('#respirationsNews').val("0"); - } else if (between(respValue, 9, 11)) { - $('#respirationsNewsText').css({ - "color": "red" - }).text("1"); - $('#respirationsNews').val("1"); - } else if (between(respValue, 21, 24)) { - $('#respirationsNewsText').css({ - "color": "red" - }).text("2"); - $('#respirationsNews').val("2"); - } else if (respValue >= 25 || respValue <= 8) { - $('#respirationsNewsText').css({ - "color": "red" - }).text("3"); - $('#respirationsNews').val("3"); - } -}); - -//Validating the oxygen saturations (SaO2(%)) -$('#sao2').change(function () { - let saValue = $('#sao2').val(); - if (saValue >= 96) { - $('#sao2NewsText').css({ - "color": "green" - }).text("0"); - $('#sao2News').val("0"); - } else if (between(saValue, 94, 95)) { - $('#sao2NewsText').css({ - "color": "red" - }).text("1"); - $('#sao2News').val("1"); - } else if (between(saValue, 92, 93)) { - $('#sao2NewsText').css({ - "color": "red" - }).text("2"); - $('#sao2News').val("2"); - } else if (saValue <= 91) { - $('#sao2NewsText').css({ - "color": "red" - }).text("3"); - $('#sao2News').val("3"); - } -}); - -//Validating Systolic bp -$('#systolic_bp').change(function () { - let sysValue = $('#systolic_bp').val(); - if (between(sysValue, 111, 219)) { - $('#systolic_bpNewsText').css({ - "color": "green" - }).text('0'); - $('#systolic_bpNews').val('0'); - } else if (between(sysValue, 101, 110)) { - $('#systolic_bpNewsText').css({ - "color": "red" - }).text('1'); - $('#systolic_bpNews').val('1'); - } else if (between(sysValue, 91, 100)) { - $('#systolic_bpNewsText').css({ - "color": "red" - }).text('2'); - $('#systolic_bpNews').val('2'); - } else if (sysValue >= 220 || sysValue <= 90) { - $('#systolic_bpNewsText').css({ - "color": "red" - }).text('3'); - $('#systolic_bpNews').val('3'); - } -}); - -//Validating the concious level -$('#conscious_level').change(function () { - let conValue = $('#conscious_level').val(); - if (conValue === "alert") { - $('#conscious_levelNewsText').css({ - "color": "green" - }).text('0'); - $('#conscious_levelNews').val('0'); - } else if (conValue === "responds to voice/irritated" || conValue === "responds to pain" || conValue === "unresponsive") { - $('#conscious_levelNewsText').css({ - "color": "red", - "font-color": "red" - }).text('3'); - $('#conscious_levelNews').val('3'); - } -}); - -//Validating the supplementary oxygen -$('#supplementary_oxygen').change(function () { - let suOxValue = $('#supplementary_oxygen').val(); - if (suOxValue === "No") { - $('#supplementary_oxygenNewsText').css({ - "color": "green" - }).text('0'); - $('#supplementary_oxygenNews').val('0'); - } else if (suOxValue === "Yes") { - $('#supplementary_oxygenNewsText').css({ - "color": "red", - "font-color": "red" - }).text('2'); - $('#supplementary_oxygenNews').val('2'); - } -}); - -function between(currentValue, low, high) { - if (currentValue < low) { - return false; - } else if (currentValue > high) { - return false; - } else { - return true; - } -} \ No newline at end of file diff --git a/docker/streamline-src/public/uploads/lab_machine_scripts/kisiizi/main.py b/docker/streamline-src/public/uploads/lab_machine_scripts/kisiizi/main.py deleted file mode 100755 index 57c6f936..00000000 --- a/docker/streamline-src/public/uploads/lab_machine_scripts/kisiizi/main.py +++ /dev/null @@ -1,56 +0,0 @@ -import json -import socket - -import requests - -HOST = "192.168.1.215" # Standard loopback interface address (localhost) -PORT = 5100 # Port to listen on (non-privileged ports are > 1023) - -bytes_to_decode = b'' - -with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: - s.bind((HOST, PORT)) - s.listen() - conn, addr = s.accept() - - with conn: - # print(f"Connected by {addr}") - - while True: - data = conn.recv(1024) - - if data: - bytes_to_decode += data - - if 'END_RESULT' in data.decode(): - results_dict = {} - decoded_data = bytes_to_decode.decode() - - data_lists = [line.split(";") for line in decoded_data.split("\r\n")] - data_list = [] - - for row in data_lists: - if row[0] in ['SID', 'PID', 'ID']: - results_dict[row[0]] = row[1] - elif row[0] in ['WBC', 'LYMP', 'MONP', 'NEUP', 'EOSP', 'BASP', 'IMMP', 'ALYP', 'LYM', 'RDW-SD', - 'MON', 'NEU', 'EOS', 'BAS', 'IMM', 'ALY', 'RBC', 'HGB', 'HCT', 'MCV', 'MCH', - 'MCHC', 'RDW-CV', 'PLCR', 'PDW', 'PCT', 'MPV', 'PLT']: - try: - flag = row[3] - except: - flag = '' - - try: - result = row[1] - except: - result = '' - - data_list.append([row[0], result, flag]) - - results_dict["results"] = json.dumps(data_list) - results_dict["machine_id"] = '1' - - requests.post('http://192.168.1.215/lab_machines/receive_results_mispa', data=results_dict) - - bytes_to_decode = b'' - diff --git a/docker/streamline-src/public/uploads/logo/signature.png b/docker/streamline-src/public/uploads/logo/signature.png deleted file mode 100755 index 80b40674..00000000 Binary files a/docker/streamline-src/public/uploads/logo/signature.png and /dev/null differ diff --git a/docker/streamline-src/resources/lang/en/antenatal.php b/docker/streamline-src/resources/lang/en/antenatal.php deleted file mode 100755 index 02f50867..00000000 --- a/docker/streamline-src/resources/lang/en/antenatal.php +++ /dev/null @@ -1,360 +0,0 @@ - "Abortions", - "accuracy" => "Accuracy", - "add_new_referral" => "Add new Referral", - "add_row" => "Add Row", - "anc_menu" => "AnteNatal Menu", - "anc_registration_id" => "ANC registration id", - "anc_template" => "ANTE-NATAL CLINIC TEMPLATE", - "anc_visit_number" => "A.N.C Visit Number", - "antanatal_clinic" => "AnteNatal Clinic", - "antenatal_visit" => "Antenatal Visit", - "aph" => "A.P.H", - "select" => "-- Select --", - "child_birth_weight" => "Birth Weight(kg)", - "child_immunisation_status" => "Immunization Status", - "not_started" => "Not Started", - "ongoing" => "Ongoing", - "completed" => "Completed", - "health_condition" => "Health Condition", - "add_pregnancy_row" => "Add Another Pregnancy", - "add_child_row" => "Add Another Child", - "add_uterus_operations_row"=> "Add Another Uterus Operation", - "add_other_operations_row"=> "Add Another Operation", - "woa_weeks" =>"Weeks of Amenorrhea (WOA)", - "complications" => "Complications of pregnancy (if any):", - "pregnancy_complications" => "Pregnancy Complications", - "bleeding" => "Bleeding", - "eclampsia"=> "Eclampsia", - "excessive_vomiting" => "Excessive Vomiting", - "others" => "Others", - "pre_eclampsia" => "Pre-eclampsia", - "eclampsia" => "Pre-eclampsia", - "hospital_visits"=>"Recent hospital visits to other facilities", - "mother_history"=>"Mother's History", - "menses_length"=>"Length of menses", - "menses_length_info" => "Length of menstrual cycles", - "menses_amount"=>"Amount", - "heavy" => "Heavy", - "normal" => "Normal", - "family_planning" => "Family Planning Methods", - "medical_history" => "Medical History", - "menstrual_history" => "Menstrual and Contraceptive History", - "medical_presentations" => "Ever presented with the following:", - "any_medications" => "Are you on any medication?", - "arv" => "ARVs", - "sti" => "STIs/STDs", - 'asthma' => "Asthma", - 'cardiac_disease' => "Cardiac Disease", - 'sickel_cell' => "Sickle Cell", - 'kidney_disease' => "Kidney Disease", - 'diabetes' => "Diabetes", - 'hypertension' => "Hypertension", - 'epilepsy' => "Epilepsy (seizures)", - 'ted' => "Thromboembolic Disorder", - 'tb' => "Tuberculosis", - 'twins' => "Twins", - 'surgical_history' => "Surgical History", - 'operations' => "Operations", - 'operation_name' => "Operation name", - 'below_12' => "Below 12 weeks", - '12_and_above' => "After 11 Weeks", - - "classification" => "Classification", - "puerperium" => "Puerperium", - "date_discontinued" => "Date Discontinued", - "delivery_type" => "Type of Delivery", - "aph_details" => "A.P.H Details", - "art_clinic_record" => "A.R.T Clinic Record", - "art_treatment_center" => "A.R.T Treatment Center", - "art_treatment_number" => "A.R.T Treatment Number", - "bednet" => "Bed net", - "blood_group" => "Blood Group", - "blood_transfusion" => "Blood Transfusion", - "mental_illness"=> "Mental Illness", - "obs_gyn" => "OBS/GYN", - "d_c" => "Dilation & Curettage", - "pph" => "PPH", - "fractures" => "Fractures", - "pelvis" => "Pelvis", - "femur" => "Femur", - "spine" => "Spine", - "sgbv" => "Sexual and Gender Based Violence", - "sgbv_risk" => "Risk of SGBV", - "husband_health" => "Health of husband", - "ectopic_pregancy" => "Ectopic pregnancy", - "retained_placenta" => "Retained placenta", - "caesarian_section" => "Caesarian section", - "uterus_operations" => "Operations on the uterus", - - "family_history" => "Family History", - "abortion_date" => "Abortion had at", - "bmi" => "B.M.I", - "why_stop_family_planning" => "Why was Family Planning stopped?", - "premature" => "Pre-mature", - "fullterm" => "Full-term", - "vaginal_delivery" => "Vaginal delivery", - "vacuum_delivery" => "Assisted delivery - vacuum", - "forceps_delivery" => "Assisted delivery - forceps", - "c_section" => "C-section", - "vbac" => "VBAC (Vaginal Birth After Caeserian)", - "checklist" => "Checklist", - "comments" => "Comments", - "complete" => "Complete", - "completion_status" => "Completion status", - "current_gestation_from_dates" => "Current gestation from dates(+/-2weeks)", - "date" => "Date", - "facility_name"=>"Facility Name", - "days" => "Days", - "delete_row" => "Delete Row", - "details" => "Details", - "details_of_anc_visit_of_episode" => "DETAILS OF ANC VISIT FROM EPISODE STARTED ON", - "duration" => "Duration", - "edd" => "E.D.D", - "edit_anc_registration" => "EDIT ANTENATAL CLINIC / MATERNITY REGISTRATION", - "edit_pregnancy_registration" => "Edit Pregnancy Registration", - "engagement" => "Engagement", - "first_dose_ipt" => "First dose IPT", - "fits" => "Fits", - "fits_details" => "Fits Details", - "foetal_heart" => "Foetal Heart", - "foetal_heart_rate" => "Foetal heart rate", - "foetal_heart_regularity" => "Foetal heart regularity", - "fundal_height" => "Fundal height", - "gestation" => "Gestation", - "gestation_from_edd" => "Gestation from E.D.D", - "gestation_from_fundal_height" => "Current gestation from fundal height, +/-2weeks", - "gestation_from_scan" => "Current gestation from scan: +/-2weeks early scan, 4 weeks late", - "gravida" => "Gravida", - "scan" => "Scan", - "health_edu_or_info_given" => "Health Education/Information Given", - "height" => "height", - "Height" => "Height (m)", - "Weight" => "Weight (kg)", - "temperature" => "Temperature ( °C)", - "bp" => "BP (mmHg)", - "pulse" => "Pulse (bpm)", - "headache" => "Headache", - "oedema" => "Oedema", - "varicose" => "Varicose", - "blurred_vision" => "Blurred vision", - "proteinuria" => "Proteinuria", - "gait" => "Gait", - "nut_status" => "Nutritional Status", - "oral" => "Oral thrush", - "teeth" => "Teeth", - "neck" => "Neck", - "breasts" => "Breasts", - "legs" => "Legs", - "deformities" => "Deformities", - "lymph" => "Lymph nodes", - "herpes" => "Herpes zoster", - "anaemia" => "Anaemia", - "eyes" => "Eyes", - "nails" => "Nails", - "palms" => "Palms", - "jaundice" => "Jaundice", - "heart" => "Heart", - "lungs" => "Lungs", - "vaginal_discharge" => "Abnormal Vaginal Discharge", - "cervix" => "Cervix", - "vagina" => "Vagina", - "vulva" => "Vulva", - "live_in_support" => "Person you live with that can support you", - "emergency_support" => "Person to accompany you during labour or in case of an emerency", - "facility_stay" => "Person to stay at the facility during labour", - "transport_means" => "Means of transport to the facility", - "home_keeper" => "Person to look after home while you are away", - "delivery_method" => "Preferred delivery method", - "family_planning_method_before_next_pregnancy" => "Family planning method before next pregnancy", - "health_screening" => "Mother and partner screened for", - "syphillis" => "Syphillis", - "hiv" => "HIV", - 'disposal' => '"After-birth" disposal', - "hepatitis" => "Hepatitis", - "delivery_items" => "Mother should have the following to deliver", - "placenta_home" => "Take it home", - "placenta_dispose" => "Throw in placenta pit", - "history_of_aph" => "History of A.P.H?", - "history_of_fits" => "History of Fits?", - "hiv_status" => "HIV Status", - "hours" => "Hours", - "foot" => "Foot", - "car" => "Private Car", - "bike" => "Motorcycle", - "public_means" => "Public means", - "if_bp_above_160" => "If BP > 160/110, then escort patient to maternity urgently for stabilisation", - "if_bp_between_140_and_160" => "If BP 140/100 - 160/110, and patient has either oedema, proteinuria, headache, blurred vision or history of fits, then move urgently to Maternity for treatment", - "if_heart_beat_is_more_than_30" => "If >30 beats/minute variation from baseline, then foetal distress", - "if_in_labour_check_heart_rate" => "If in labour, check foetal heart immediatley post-contraction", - "if_patient_relentless" => "If patient restless, then check for SaO2 and call for help", - "indication" => "Indication", - "iron_or_folic" => "Iron/Folic", - "pp_brim" => "Relation PP/Brim", - "lie" => "Lie", - "lmp" => "L.M.P", - "location" => "Location", - "maternity_registration_details" => "ANTE-NATAL CLINIC / MATERNITY REGISTRATION DETAILS", - "previously_registered_pregnancies"=>"Previously Registered Pregnancies (Last 5)", - "previous_consultations"=>"Previous 5 Consultations with a Diagnosis", - "no_previously_registered_pregnancies"=>"No Previously Registered Pregnancies", - "last_five_anc_visits"=>"Previous Antenatal Visits (Last 5)", - "no_last_five_anc_visits"=>"No Previous Antenatal Visits", - "months" => "Months", - "name" => "Name", - "new_anc_registration_form_header" => "ANTE-NATAL CLINIC / MATERNITY REGISTRATION", - "new_pregnancy" => "New Pregnancy", - "save_pregnancy" => "Save Pregnancy", - "edit_pregnancy" => "Edit Pregnancy", - "new_pregnancy_registration" => "New Pregnancy Registration", - "ant_card" => "Antenatal Card", - "no" => "No", - "number" => "Number", - "antepartum" => "Antepartum", - "intrapartum" => "Intrapartum", - "stillbirth_type" => "Still birth type", - "number_of_units" => "No. of units", - "order_ultra_sound_scan" => "Order Ultra Sound Scan", - "other_comments" => "Other comments", - "outcome" => "Outcome", - "para" => "Para", - "past_obstetric_history" => "Past Obstetric History", - "patient_number" => "Patient Number", - "patients" => "Patients", - "please_make_sure_you_fill_new_pregnancy_details" => "Please make sure you fill in the New pregnancy details first", - "position" => "Position", - "postpartum" => "Post-partum", - "pregnancy_reg_details" => "Pregnancy registration details", - "presentation" => "Presentation", - "previous_anc_visits" => "PREVIOUS ANC VISITS FROM EPISODE STARTED ON", - "previous_pph" => "Previous PPH", - "previous_pph_details" => "Previous PPH Details", - "previous_scar" => "Previous Scar", - "previous_scar_indication" => "Previous Scar Indication", - "previous_scar_number" => "Previous Scar Number", - "prompt" => "Prompt", - "rate" => "Rate", - "reference" => "Reference", - "referral_from" => "Referral in from", - "register_anc_visit" => "Create Antenatal Visit", - "registered_on" => "registered on", - "registration_id" => "Registration id", - "regularity" => "Regularity", - "result" => "Result", - "scan_edd" => "Scan E.D.D", - "second_dose_ipt" => "Second dose IPT", - "select" => "Select", - "symptoms" => "Symptoms", - "tetanus_toxoid" => "Tetanus toxoid", - "third_dose_ipt" => "Third dose IPT", - "fourth_dose_ipt" => "Fourth dose IPT", - "save_visit" => "Save visit", - "this_pregnancy" => "This pregnancy", - "update_and_complete" => "Update & Complete", - "updated_by" => "Updated by:", - "us_scan_edd" => "U/S scan E.D.D", - "vdrl" => "VDRL", - "vdrl_status" => "VDRL/RPR Status", - "view_anc_visit_details" => "View Antanatal Visit Details", - "view_antenatal_visits" => "Antenatal Visits History", - "view_details" => "View Details", - "view_pregnancies" => "Registered Pregnancies", - "view_pregnancy_details" => "View pregnancy details", - "visit_date" => "Visit Date", - "visit_number" => "Visit number", - "weeks" => "Weeks", - "weight" => "weight", - "years" => "Years", - "yes" => "Yes", - "edit_details" => "Edit Details", - "generalized_l_glands" => "Generalized L glands", - "oral_thrush" => "Oral Thrush", - "dermatitis" => "Dermatitis", - "herpes_zoster" => "Herpes Zoster", - "herpes_simplex" => "Herpes simplex", - "gynacology_history" => "Gynaecological History", - "myomectomy" => "Myomectomy", - "operations_on_cervix" => "Operations on cervix", - "evacuation" => "Evacuation", - "std" => "STD", - "uterine_adnexa" => "Uterine adnexa", - "moniliasis" => "Moniliasis", - "diagonal_conjugate" => "Diagonal conjugate", - "ischial_spinces" => "Ischial Spinces", - "sub_pubic_angle" => "Sub pubic angle", - "ischial_tuberosities" => "Ischial tuberosities", - "pelvic_adequate" => "Pelvic adequate", - "sacrum" => "Sacrum", - "comment" => "Comment", - "post_partum_haemorrhaging" => "Post Partum Haemorrhaging", - "pelvic_examination_and_assessement" => "Pelvic Examination & Assessment", - "skeletal_deformities" => "Skeletal deformities", - "dematitis" => "Dermatitis", - "previous_surgical_procedure" => "Previous surgical procedure", - "dosage" => "Dosage", - "performed_by" => "Performed by", - "diagnosis" => "Diagnosis", - "id" => "#ID", - "operations_other_facilities" => "Operations performed at other facilities", - "operation_date" => "When", - "operation_facility" => "What facility", - "other_operations" => "Other Operations performed at other facilities", - "dilatation" => "Dilatation", - "sub_public_angle" => "Sub pubic angle", - "admitted_on" => "Admitted on", - "ward" => "Ward", - "primary_diagnosis" => "Primary diagnosis", - "other_diagnosis" => "Other diagnosis", - "discharged_on" => "Discharged on", - "discharged_by" => "Discharged by", - "consultation_note_history" => "Please ensure cannulas, giving sets, NGT's, catheters & bags, dressings etc are properly recorded und Sundries. - Also that all the Stat drugs and IV fluids have been included plus imaging tests & procedures. Thanks. - ", - "maternity_admission" => "MATERNITY ADMISSION", - "previous_admissions" => "Previous admissions ( up to 5 Admissions )", - "ward_treatments" => "Ward Treatments", - "ordered_investigations" => "Ordered investigations", - "symptom" => "Symptom", - "results" => "Results", - "investigation_name" => "Investigation name", - "reference_ranges" => "Reference ranges", - "drug_name" => "Drug name", - "quantity" => "Quantity", - "status" => "Status", - "blood_tranfusion_checkbox" => "Blood transfusion", - "why" =>"Why ?", - "observations" => "Observations", - "facility_name" => "Facility name", - "add_other_operations_row" => "Add other operation", - "add_uterus_operations_row" => "Add uterus operation", - "other_sgbv" => "Other sgbv", - "available" => "Available", - "others_presentations" => "Other presentations", - "facility" => "Facility", - "weight_loss" => "Weight loss", - "fever_one_month" => "Fever one month", - "diarrhoea_one_month" => "Diarrhoea one month", - "pruritus" => "Pruritus", - "vaginal_bleeding" => "Vaginal bleeding", - "draining" => "Draining", - "blood_tranfusion_details" => "Blood transfusion details", - "edit_anc_visit" => "Edit ANC Visit", - - "hiv"=> "HIV/AIDS", - "oral_thrush"=> "Oral thrush", - "l_glands"=> "Generalized L Glands", - "herpes_simplex"=> "Herpes Simplex", - "dermatitis"=> "Dermatitis", - "operations_other_facilities"=> "Operations performed at other Facilities", - "another_hiv_test" => "Please refer the mother for another HIV Test", - "allergy_alert" => "Please add any allergies the mother may have at the top of the page.", - "cycle_length" => "Cycle Length", - "cycle_length_info" => "Time from the first day of the period to the day before the next period", - "previous_medical_conditions" => "Previous Medical Conditions", - "no_blood_transfusion" => "No Blood Transfusions recorded.", - "modify_pregnancy_registration" => "Edit Pregnancy Registration", - - "no_previous_medical_conditions" => "No Previous Medical Conditions Recorded", - "pregnancy_complication" => "Complications", -]; diff --git a/docker/streamline-src/resources/lang/en/banking.php b/docker/streamline-src/resources/lang/en/banking.php deleted file mode 100755 index c2e2a37d..00000000 --- a/docker/streamline-src/resources/lang/en/banking.php +++ /dev/null @@ -1,67 +0,0 @@ - 'Home', - 'bank' => 'Bank', - 'finance_home' => 'Finance Home', - 'bank_deposits' => 'Bank Deposits', - 'new_bank_deposit' => 'New Bank Deposit', - 'details' => 'Details', - 'select_account' => 'Select Account', - 'current_balance' => 'Current Balance', - 'deposit_date' => 'Deposit Date', - 'memo' => 'Memo', - 'deposit_details' => 'Deposit Details', - 'deposit_from_account' => 'Deposit From Account :', - 'deposit_to_account' => 'Deposit To Account :', - 'balance' => 'Balance', - 'payment_method' => 'Payment Method', - 'total' => 'Total', - 'deposit' => 'Deposit', - 'bank_deposit_history' => 'Bank Deposit History', - 'deposit_by' => 'Deposited By :', - 'select' => '-select-', - 'all_staff' => 'ALL STAFF', - 'today' => 'TODAY', - 'yesterday' => 'YESTERDAY', - 'custom_date' => 'CUSTOM DATE', - 'date_range' => 'DATE RANGE', - 'date_on' => 'Date On', - 'end_date' => 'End Date', - 'deposit_history' => 'Deposit History', - 'staff_in_charge' => 'Staff In-charge', - 'deposit_from' => 'Deposit From', - 'deposit_to' => 'Deposit To', - 'date' => 'Date', - 'previous_balance_from_account' => 'Previous Balance(From Account)', - 'previous_balance_to_account' => 'Previous Balance(To Account)', - 'amount' => 'Amount', - 'bank_register_report' => 'Bank Register Report', - 'transaction_date' => 'Transaction Date :', - 'record_date' => 'Record Date :', - 'type' => 'Type', - 'account' => 'Account', - 'debit' => 'Debit', - 'ugx' => '.UGX', - 'credit' => 'Credit', - 'action' => 'Action', - 'account_balance' => 'Account Balance', - 'current_running_balance' => 'Current Running Balance', - 'bank_transfer' => 'Bank Transfer', - 'new_bank_transfer' => 'New Bank Transfer', - 'transfer_funds' => 'Transfer Funds', - 'transfer_from' => 'Transfer From :', - 'transfer_to' => 'Transfer To :', - 'account_balance_from_account' => 'Account Balance (From Account):', - 'account_balance_to_account' => 'Account Balance (To Account):', - 'bank_transfer_history' => 'Bank Transfer History', - 'transfer_by' => 'Transfer By :', - 'select_date' => 'Select Date :', - 'transfer_history' => 'Transfer History', - 'transfer_date' => 'Transfer Date', - 'transfer' => 'Transfer', - 'from_account' => 'From Account', - 'to_account' => 'To Account', - 'decrease' => 'Decrease', - 'increase' => 'Increase', -]; \ No newline at end of file diff --git a/docker/streamline-src/resources/lang/en/cancer_protocol.php b/docker/streamline-src/resources/lang/en/cancer_protocol.php deleted file mode 100644 index e560d203..00000000 --- a/docker/streamline-src/resources/lang/en/cancer_protocol.php +++ /dev/null @@ -1,12 +0,0 @@ - "Dashboard", - "cancer_protocols" => "Cancer Protocols", - "add_cancer_protocol" => "Add Cancer Protocol", - "view_cancer_protocols" => "View Cancer Protocols", - "inactive_cancer_protocols" => "Inactive Cancer Protocols", - "submit" => "Submit", - "cancel" => "Cancel", - "create" => "Create", -]; diff --git a/docker/streamline-src/resources/lang/en/clinical_data.php b/docker/streamline-src/resources/lang/en/clinical_data.php deleted file mode 100755 index 86ddfde8..00000000 --- a/docker/streamline-src/resources/lang/en/clinical_data.php +++ /dev/null @@ -1,181 +0,0 @@ - "Clinical Data", - "dashboard" => "Dashboard", - "home" => "Dashboard", - 'radiologies_stock_sheet'=>'Radiology Stock Sheet', - 'previous_requisition_radiologies'=>'Previous Radiologies Requisitions ', - 'imaging_stock'=>'Imaging Stock', - 'store_stock'=>'Store Stock', - "title_drug_forms" => "DRUG FORMS", - "add_drug_forms" => "Add Drug Form", - "view_drug_forms" => "View Drug Form", - "inactive_drug_forms" => "Inactive Drug Form", - "title_drug_routes" => "Drug routes", - "add_drug_routes" => "Add Drug route", - "view_drug_routes" => "View Drug routes", - "inactive_drug_routes" => "Inactive Drug routes", - "title_drug_units" => "DRUG UNITS", - "add_drug_units" => "Add Drug Unit", - "opticals"=> "Opticals", - 'add_opticals'=>"Add Opticals", - 'view_opticals'=>"View Opticals", - 'inactive_opticals'=>"Inactive Opticals", - "view_drug_units" => "View Drug Unit", - "inactive_drug_units" => "Inactive Drug Unit", - "title_drug_categories" => "DRUG CATEGORIES", - "add_drug_categories" => "Add Drug Categories", - "view_drug_categories" => "View Drug Categories", - "inactive_drug_categories" => "Inactive Drug Categories", - "title_symptoms" => "SYMPTOMS", - "general_items" => "GENERAL ITEMS", - "add_general_items" => "Add General Items", - "view_general_items" => "View General Items", - "edit_general_items" => "Edit General Items", - "inactive_general_items" => "Inactive General Item", - "add_symptoms" => "Add Symptoms", - "view_symptoms" => "View Symptoms", - "bulk_edit_symptoms" => "Edit Symptoms", - "inactive_symptoms" => "Inactive Symptoms", - "title_diagnoses" => "DIAGNOSES", - "add_diagnoses" => "Add Diagnoses", - "view_diagnoses" => "View Diagnoses", - "bulk_edit_diagnoses" => "Edit Diagnoses", - "inactive_diagnoses" => "Inactive Diagnoses", - "title_investigations" => "INVESTIGATIONS", - "add_investigations" => "Add Investigations", - "view_investigations" => "View Investigations", - "bulk_edit_investigations" => "Edit Investigations", - "inactive_investigations" => "Inactive Investigations", - "title_investigation_categories" => "INVESTIGATION CATEGORIES", - "add_investigation_categories" => "Add Investigation Categories", - "view_investigation_categories" => "View Investigation Categories", - "bulk_edit_investigation_categories" => "View Investigation Categories", - "inactive_investigation_categories" => "Inactive Investigation Categories", - "title_wards" => "WARDS", - "add_wards" => "Add Wards", - "view_wards" => "View Wards", - "inactive_wards" => "Inactive Wards", - "title_clinics" => "CLINICS", - "add_clinics" => "Add Clinics", - "view_clinics" => "View Clinics", - "inactive_clinics" => "Inactive Clinics", - "title_procedures" => "PROCEDURES", - "add_procedures" => "Add Procedures", - "view_procedures" => "View Procedures", - "inactive_procedures" => "Inactive Procedures", - "title_procedure_categories" => "PROCEDURE CATEGORIES", - "add_procedure_categories" => "Add Procedure Categories", - "view_procedure_categories" => "View Procedure Categories", - "inactive_procedure_categories" => "Inactive Procedure Categories", - "title_sundries" => "SUNDRIES", - "add_sundries" => "Add Sundries", - "view_sundries" => "View Sundries", - "inactive_sundries" => "Inactive Sundries", - "title_observations" => "OBSERVATIONS", - "add_observations" => "Add Observations", - "view_observations" => "View Observations", - "inactive_observations" => "Inactive Observations", - "title_dosage_frequencies" => "DOSAGE FREQUENCIES", - "add_dosage_frequencies" => "Add Dosage Frequencies", - "view_dosage_frequencies" => "View Dosage Frequencies", - "inactive_dosage_frequencies" => "Inactive Dosage Frequencies", - "title_referral_hospitals" => "REFERRAL HOSPITALS", - "add_referral_hospitals" => "Add Referral Hospitals", - "view_referral_hospitals" => "View Referral Hospitals", - "inactive_referral_hospitals" => "Inactive Referral Hospitals", - "title_age_groups" => "AGE GROUPS", - "add_age_groups" => "Add Age Groups", - "view_age_groups" => "View Age Groups", - "inactive_age_groups" => "Inactive Age Groups", - "title_hmis_categories" => "HMIS CATEGORIES", - "title_hmis_category_options" => "HMIS CATEGORY OPTIONS", - "add_hmis_categories" => "Add HMIS Categories", - "view_hmis_categories" => "View HMIS Categories", - "inactive_hmis_categories" => "Inactive HMIS Categories", - "title_units_of_measure" => "UNITS OF MEASURE", - "add_units_of_measure" => "Add Units Of Measure", - "view_units_of_measure" => "View Units Of Measure", - "inactive_units_of_measure" => "Inactive Units Of Measure", - "title_specialities" => "SPECIALITIES", - "add_specialities" => "Add Specialities", - "view_specialities" => "View Specialities", - "inactive_specialities" => "Inactive Specialities", - "title_services" => "SERVICES", - "add_services" => "Add Services", - "view_services" => "View Services", - "inactive_services" => "Inactive Services", - "title_specialised_variables" => "SPECIALISED VARIABLES", - "add_specialised_variables" => "Add Specialised Variables", - "view_specialised_variables" => "View Specialised Variables", - "inactive_specialised_variables" => "Inactive Specialised Variables", - "title_test_codes" => "INVESTIGATION TEST CODES", - "add_test_codes" => "Add Test Codes", - "view_test_codes" => "View Test Codes", - "inactive_test_codes" => "Inactive Test Codes", - "title_lab_instruments" => "LAB INSTRUMENTS", - "add_lab_instruments" => "Add Lab Instruments", - "view_lab_instruments" => "View Lab Instruments", - "inactive_lab_instruments" => "Inactive Lab Instruments", - "title_investigation_categories" => "INVESTIGATION CATEGORIES", - "title_outcomes" => "OUTCOMES", - "add_outcomes" => "Add Outcomes", - "view_outcomes" => "View Outcomes", - "bulk_edit_outcomes" => "Edit Outcomes", - "inactive_outcomes" => "Inactive Outcomes", - "title_dentals" => "DENTALS", - "add_dentals" => "Add dentals", - "view_dentals" => "View dentals", - "bulk_edit_dentals" => "Edit dentals", - "inactive_dentals" => "Inactive dentals", - "title_radiologies" => "RADIOLOGIES", - "add_radiology" => "Add radiology", - "view_radiologies" => "View radiologies", - "bulk_edit_radiologies" => "Edit radiologies", - "inactive_radiologies" => "Inactive radiologies", - "add_radiology" => "Add radiology", - "create" => "Create", - "name" => "Name", - "item_cost_price" => "Item cost price", - "payables_account" => "Payables account", - "expenses_account" => "Expenses account", - "submit" => "Submit", - "cancel" => "Cancel", - "activate_radiologies" => "Activate radiologies", - "radiologies" => "Radiologies", - "radiology" => "Radiology", - "cost_price" => "Cost price", - "expense_account" => "Expense account", - "payables_account" => "Payable account", - "edit" => "Edit", - "delete" => "Delete", - "edit_radiologies" => "Edit radiologies", - "activate" => "Activate", - "radiology_usage" => "Radiology Item usage", - "radiology_stock_sheet" => "Radiology stock sheet", - "pharmacy_stock" => "Pharmacy stock", - "radiologies_usage" => "Radiologies usage", - "radiology_stock" => "Radiology stock", - "previous_radiologies_usage" => "Previous radiologies usage", - "inactive_radiologies" => "Inactive radiologies", - "requisition_radiologies" => "Requsition radiologies", - "requisition_for_radiologies" => "Requisition for radiologies", - "previous_radiology_requisitions" => "previous radiology requisitions", - "radiology_usages_report" => "Radiology usages report", - "labs_usages_report" => "Labs Usages Report", - "labs" => "Labs", - "lab_stock" => "Lab stock", - "lab_usages_report" => "lab usages report", - "radiology_form_name"=>"Radiology Form Name", - "add_rad_form"=>"Add Radiology Form", - "view_rad_form"=>"View Radiology Form", - "rad_form"=>"Radiology Form", - "rad_form_name"=>"Radiology Form Name", - "inactive_rad_form"=>"Inactive Radiology Form", - 'form'=>'Form', - 'title_sundries_forms'=>'Sundry Forms', - 'add_sundry_form'=>'Add Sundry Form', - 'view_sundry_form'=>'View Sundry Forms', - 'inactive_sundry_form'=>'Inactive Sundry Forms' -]; -?> \ No newline at end of file diff --git a/docker/streamline-src/resources/lang/en/clinics.php b/docker/streamline-src/resources/lang/en/clinics.php deleted file mode 100755 index 1f941e6c..00000000 --- a/docker/streamline-src/resources/lang/en/clinics.php +++ /dev/null @@ -1,29 +0,0 @@ - "Please fill in all compulsory fields", - "cancel" => "Cancel", - "submit" => "Submit", - "clinic_name" => "Clinic name", - "skip" => "Skip", - "next" => "Next", - "select_any_from_list" => "Select any from list", - "add_another" => "Add Another", - "streamline_setup" => "Stre@mline setup (Step 4 of 12)", - "create" => "Create", - "clinics" => "Clinics", - "dashboard" => "Dashboard", - "add_clinic" => "Add clinic", - "edit_clinic" => "Edit clinic", - "edit" => "Edit", - "activate" => "Activate", - "activate_clinics" => "Activate clinics", - "are_you_sure" => "Are you sure?", - "view_clinics" => "View Clinics", - "view" => "View", - "delete" => "Delete", - "clinic_type" => "Clinic Type", - "is_clinic_available" => "Is the Clinic available?", - "yes"=>"Yes", - "no"=>"No" -]; diff --git a/docker/streamline-src/resources/lang/en/consultations.php b/docker/streamline-src/resources/lang/en/consultations.php deleted file mode 100755 index 869bff4c..00000000 --- a/docker/streamline-src/resources/lang/en/consultations.php +++ /dev/null @@ -1,146 +0,0 @@ - "DOSAGE", - "DRUG_NAME" => "DRUG NAME", - "DURATION" => "DURATION", - "INSTRUCTION" => "INSTRUCTION", - "Investigation" => "Investigation", - "NEGATIVE" => "NEGATIVE", - "OTHER_DIAGNOSIS" => "OTHER DIAGNOSIS", - "PERFORMED" => "PERFORMED", - "POSITIVE" => "POSITIVE", - "PRIMARY_DIAGNOSIS" => "PRIMARY DIAGNOSIS", - "PROCEDURE" => "PROCEDURE", - "PROMPT" => "PROMPT", - "Procedures" => "Procedures", - "QUANTITY" => "QUANTITY", - "REFERENCES" => "REFERENCES", - "STATUS" => "STATUS", - "SUNDRY" => "SUNDRY", - "Sundries" => "Sundries", - "Treatment" => "Treatment", - "abnormal_phychomotor_behaviour" => "Abnormal psychomotor behaviour", - "add_consultation" => "Add consultation", - "add_new" => "add new", - "add_row" => "Add row", - "admitted_on" => "Admitted on", - "died_on" => "Died on", - "alcohol_score" => "ALCOHOL SCREENING SCORE", - "alcohol_screening_score" => "Alcohol Screening Score", - "altered_and_dispensed" => "Altered and Dispensed", - "as_diagnosed_on" => "As diagnosed on", - "assign_incharge" => "Assign In-Charge", - "assigned_clinic" => "Assign Clinic", - "authenticated_by" => "Authenticated by", - "care_giver" => "Care giver", - "clinical_examination" => "Clinic Examination", - "comment" => "Comment", - "comments" => "Comments", - "consultation" => "Consultation", - "consultation_comments_on" => "Consultation comments on", - "consultation_completed_by" => "Consultation Completed By", - "consultation_done_by" => "Consultation done by", - "consultation_updated_by" => "Consultation Updated By", - "date" => "Date", - "delete_row" => "Delete row", - "delusions" => "Delusions", - "depression" => "Depression", - "details" => "Details", - "disorganised_speech" => "Disorganised speech", - "dispensed" => "Dispensed", - "dont_assign_incharge" => "Don't assign in-charge", - "duration" => "Duration", - "during_current_review" => "during current review", - "edit_consultation" => "Edit consultation", - "edit_clinical_note" => "Edit Note", - "green" => "GREEN", - "hallucinations" => "Hallucinations", - "hamilton_anxiety_score" => "Hamilton Anxiety Score", - "harmful_drinking" => "harmful drinking", - "history" => "History", - "general_comments" => "General Comments", - "impaired_cognition" => "Impaired Cognition", - "investigation" => "Investigation", - "investigation_and_mgt_plan" => "Investigation and Management Plan", - "investigation_for_episode_of" => "Investigations for episode of", - "investigation_for_review" => "Investigations for episode review", - "investigation_not_ordered" => "Investigations not ordered", - "likely_dependency" => "likely dependence", - "low_risk" => "low risk", - "mania" => "Mania", - "mental_health_consultation" => "Mental Health Clinic Consultation", - "modify_consultation" => "Modify Consultation", - "modify_maternity_inpatient" => "Modify Maternity Record", - "negative_symptoms" => "Negative Symptoms", - "no_observations_recorded" => "No observations recorded", - "no_patient_documents_available" => "No patient documents available", - "no_prescription_made_yet" => "No prescription made yet", - "no_procedure_has_been_ordered" => "No procedure has been ordered", - "no_sundries_ordered" => "No sundry has been ordered", - "no_symptom_recorded" => "No symptoms recorded", - "normal_range" => "Reference range", - "observation" => "Observation", - "observations" => "observations", - "ordered_investigations" => "Ordered Investigations", - "ordered_procedures" => "Ordered Procedures", - "ordered_sundries" => "Ordered Sundries", - "outcome" => "Outcome", - "patient" => "Patient", - "patient_documents" => "Patient Documents", - "pending" => "Pending", - "performed" => "Performed", - "not_performed" => "Not Performed", - "previous_value" => "Previous Value", - "procedures_for_episode_of" => "Procedures for episode of", - "procedures_for_episode_review" => "Procedures for episode review", - "psychosis_symptom_scores" => "PSYCHOSIS SYMPTOM SCORES", - "red" => "RED", - "referred_to" => "Referred to?", - "satisfaction_score" => "SATISFACTION SCORE", - "select_ward" => "Select the ward", - "sundries_for_episode_of" => "Sundries for episode of", - "sundries_for_episode_review" => "Sundries for episode review", - "symptom" => "Symptom", - "symptoms" => "Symptoms", - "total_score" => "Total score", - "treatment_for_episode_of" => "Treatment for episode of", - "treatment_for_episode_review" => "Treatment for episode review", - "treatment_given" => "Treatment Given", - "triage_details" => "Triage Details", - "triage_done_by" => "Triage done by", - "triage_grade" => "TRIAGE GRADE", - "triage_grade_not_determined" => "Triage grade not determined", - "update_and_complete_consultation" => "Update & Complete Consultation", - "value" => "Value", - "view_all" => "View All", - "view_consultation_details" => "View Consultation details", - "mental_health_consultations" => "Mental Health Consultation", - "when" => "When", - "yellow" => "YELLOW", - "save_consultation" => "Save Consultation", - "not_assigned" => "Not Assigned", - "appointment_time" => "Appointment Time", - "add_new_diagnosis" => "Add new diagnosis", - "diagnosis_name" => "Diagnosis Name", - "add_diagnosis" => "Add Diagnosis", - "cancel" => "Cancel", - "used_services" => "Used Services", - "no_used_services" => "No used services", - "service" => "Service", - "quantity" => "Quantity", - "payment_status" => "Payment Status", - "consultation_started_by" => "Consultation Started By", - "services" => "Services", - "for_episode_of" => "for episode of", - "consultation_for_episode_of" => "Consultation notes for episode of", - "ward_management" => "Ward management", - "patient_home" => "Patient home", - "patient_documentation" => "Patient Documentation", - "tb_screening" => "TB Screening", - "hiv_gbv_screening" => "HIV / GBV Screening", - "confirm_primary_diagnosis" => "Confirm Primary Diagnosis", - "previous_notes" => "Added Consultation Notes", - "no_previous_notes" => "No Consultation Notes available.", - "all_consultation_notes"=>"All Other Consultation Notes", - "view_more_notes"=>"View More Consultation Clinical Notes" -]; diff --git a/docker/streamline-src/resources/lang/en/diagnoses.php b/docker/streamline-src/resources/lang/en/diagnoses.php deleted file mode 100755 index e05c8074..00000000 --- a/docker/streamline-src/resources/lang/en/diagnoses.php +++ /dev/null @@ -1,46 +0,0 @@ - "Add diagnosis", - "dashboard" => "Dashboard", - "diagnosis" => "Diagnosis", - "create" => "Create", - "diagnosis_name" => "Diagnosis name", - "icd_10_code" => "Icd10 code", - "hmis_out_patient_number" => "HMIS-out-patient No.", - "hmis_inpatient_number" => "HMIS-in-patient No.", - "hmis_outpatient_category" => "HMIS Out-patient Category Option", - "hmis_inpatient_category" => "HMIS Inpatient Category Option", - "outpatient_hmis_category" => "Outpatient HMIS Category", - "inpatient_hmis_category" => "Inpatient HMIS Category", - "hmis_category" => "HMIS category", - "dependent_option" => "Dependent Option", - "diagnosis_prompt" => "Diagnosis prompt", - "chronic_status" => "Chronic status", - "yes" => "Yes", - "no" => "No", - "reference_areas" => "Reference areas", - "add_more" => "Add more", - "submit" => "Submit", - "cancel" => "Cancel", - "edit_diagnosis" => "Edit diagnosis", - "edit" => "Edit", - "view" => "View", - "number" => "Number", - "drug_name" => "Name of Drug", - "outpatient_number" => "Out-Patient No.", - "inpatient_number" => "In-Patient No.", - "delete" => "Delete", - "are_you_sure" => "Are you sure?", - "active_diagnoses" => "Activate diagnoses", - "activate" => "Activate", - "add_new_diagnosis" => "Add new diagnosis", - "edit_all_diagnoses" => "Edit all diagnoses", - "view_activate_diagnoses" => "View active diagnoses", - "view_inactivate_diagnoses" => "View inactive diagnoses", - "edit_all" => "Edit All", - "id" => "Id", - "reference_areas_seperate_with_commas" => "Reference areas (Separate with commas)", - "reference_names_seperate_with_commas" => "Reference names (Separate with commas)", - "is_diagnosis_available" => "Is the Diagnosis available?", - "diagnosis_category" => "Diagnosis Category", -]; \ No newline at end of file diff --git a/docker/streamline-src/resources/lang/en/drugs.php b/docker/streamline-src/resources/lang/en/drugs.php deleted file mode 100755 index d8812df4..00000000 --- a/docker/streamline-src/resources/lang/en/drugs.php +++ /dev/null @@ -1,123 +0,0 @@ - "Dashboard", - "view" => "View", - "export_data_to_csv_and_excel" => "Export data to Copy, CSV, Excel, PDF & Print", - "drug" => "Drug", - "drugs" => "Drugs", - "new_drug" => "New Drug", - "register" => "Register", - "edit" => "Edit", - "delete" => "Delete", - "create" => "Create", - "submit" => "Submit", - "cancel" => "Cancel", - "edit_drug" => "Edit Drug", - "edit" => "Edit", - "activate" => "Activate", - "streamline_setup_eigth_of_ten" => "Stre@mline setup (Step 8 of 12)", - "drug_name" => "Drug name", - "drug_form" => "Drug form", - "drug_category" => "Drug category", - "drug_unit" => "Drug unit", - "pack" => "Pack", - "strength" => "Strength", - "supplier" => "Supplier", - "drug_description" => "Drug description", - "drug_prompt" => "Drug prompt", - "current_store_stock" => "Current store stock", - "current_pharmacy_stock" => "Current pharmacy stock", - "re_order_level" => "Re-order level", - "cost_price" => "Cost price", - "income_account" => "Income Account", - "cost_of_goods_account" => "Cost Of Goods Account", - "inventory_asset_account" => "Inventory Asset Account", - "drug_expiry_date" => "Drug expiry date", - "insurance_coverage" => "Insurance coverage", - "non_insured_price" => "Cash Price", - "insured_price" => "Insured price", - "patient_info_in_english" => "Patient information in English", - "patient_info_in_vernacular" => "Patient information in Vernacular", - "select_from_list" => "Select any from list", - "next" => "Next", - "skip" => "Skip", - "submit" => "Submit", - "cancel" => "Cancel", - "prompts_and_references" => "Prompt and References", - "pharmacy" => "Pharmacy", - "store" => "Store", - "pharmacy" => "Pharmacy", - "vernacular_info" => "Vernacular Info", - "english_info" => "English Info", - "other_options" => "Other options", - "create_multiple_drugs" => "Create multiple drugs", - "drug_categories" => "Drug Categories", - "inventory_account" => "Inventory Account", - "description" => "Description", - "stock_level" => "Stock Level", - "expiry_date" => "Expiry Date", - "long_term" => "Long term (Will be marked as chronic)", - "hssip" => "H.S.S.I.P", - "activate_drugs" => "Activate drugs", - "selling" => "Selling", - "prompt" => "Prompt", - "pharmacy" => "Pharmacy", - "store" => "Store", - "are_you_sure" => "Are you sure?", - "expiring_drugs" => "Expiring drugs", - "expiring" => "Expiring", - "expiring_with_in" => "Expiring Within", - "1_week" => "1 Week", - "2_weeks" => "2 Weeks", - "1_month" => "1 Month", - "expired_drugs" => "Expired Drugs", - "store_stock" => "Store Stock", - "batch_details" => "Batch Details", - "quantity" => "Quantity", - "batch" => "Batch", - "expiry_date" => "Expiry Date", - "drugs_out_of_stock" => "Drugs out of stock", - "out_of_stock" => "Out of stock", - "add_bulk_drugs" => "Add Bulk Drugs", - "edit_all_drugs" => "Edit All Drugs", - "edit_all_prompts" => "Edit All Drug Prompts", - "edit_all_calculations" => "Edit All Drug Calculations", - "edit_all_pricing" => "Edit All Drug Pricing", - "edit_all" => "Edit all", - "id" => "Id", - "pharmacy_stock" => "Pharmacy Stock", - "edit_all_calculations" => "Edit all calculations", - "drug_pack" => "Drug Pack", - "drug_strength" => "Drug Strength", - "buying" => "Buying", - "pf_adult" => "P.F (Adult)", - "daily_cost_adult" => "Daily Cost (Adult)", - "daily_cost_adult_insured" => "Daily Cost (Adult Insured)", - "pf_children" => "P.F (Children)", - "daily_cost_children" => "Daily Cost (Children)", - "daily_cost_children_insured" => "Daily Cost (Children Insured)", - "pf_infant" => "P.F (Infant)", - "daily_cost_infant" => "Daily Cost (Infant)", - "daily_cost_infant_insured" => "Daily Cost (Infant Insured)", - "pharmacy_comment" => "Pharmacy comment", - "edit_calculation" => "Edit calculation", - "edit_drug_calculation" => "Edit drug calculation", - "edit_pricing" => "Edit pricing", - "edit_drug_pricing" => "Edit drug pricing", - "edit_drug_prompt" => "Edit drug prompt", - "edit_prompt" => "Edit prompt", - "purchasing_package_unit" => "Purchasing Package Unit", - "quantity_in_each_package_unit" => "Quantity in each purchasing package unit", - "does_package_unit_have_sub_packages" => "Does package unit have sub packages e.g smaller boxes", - "quantity_in_each_sub_package" => "Quantity in each sub package", - "number_of_sub_packages_in_main_package" => "Number of sub packages in one package unit", - "edit_package_units_details" => "Edit purchasing package details", - "yes" => "Yes", - "no" => "No", - "is_drug_available" => "Is Drug available?", - "edit_drug_calculations" => "Edit Drug Calculations", - "is_initial_stock_count" => "Do the values in store stock & pharmacy stock represent the actual initial stock count?", - "initial_stock_count_explanation" => "Is this current stock in store and pharmacy the initial opening stock (please select yes if you want this stock to appear as opening inventory equity in the balance sheet. Ask accountant if you are not sure)", - "stock" => "Stock", -]; \ No newline at end of file diff --git a/docker/streamline-src/resources/lang/en/finance.php b/docker/streamline-src/resources/lang/en/finance.php deleted file mode 100755 index 997108c6..00000000 --- a/docker/streamline-src/resources/lang/en/finance.php +++ /dev/null @@ -1,281 +0,0 @@ - "Finance", - "home" => "Home", - "finance_home" => "Finance Home", - "patient_finance" => "PATIENT FINANCE", - "select_patient" => "Select Patient", - "incoming_patient_payments" => "Incoming OPD Payments", - "expenses_or_payments" => "EXPENSES / PAYMENTS", - "export_data_to_copy_csv_pdf_print" => "Export data to Copy, CSV, Excel, PDF & Print", - "manage_bills_or_expenses" => "Manage Bills / Expenses", - "manage_payment_items" => "Manage Payment Items", - "view_expenses_report" => "View Cash Expenses Report", - "banking" => "BANKING", - "make_bank_transfer" => "Make Bank Transfer", - "make_bank_deposit" => "Make Bank Deposit", - "bank_transfer_history" => "Bank Transfer History", - "bank_deposit_history" => "Bank Deposit History", - "bank_register_report" => "Bank Register Report", - "bank_reconciliation" => "Bank Reconciliation", - "bank_reconciliation_reports" => "Bank Reconciliation Reports", - "price_list" => 'PRICE LIST', - "add_category" => 'Add Category', - "view_categories" => 'View Categories', - "inactive_categories" => 'Inactive Categories', - 'incoming_inpatient_bills' => 'INCOMING INPATIENT BILLS', - 'bills' => 'Bills', - 'streamline_bills' => 'STREAMLINE BILLS', - 'generate_bills' => 'Generate Bills', - 'view_generated_bills' => 'View Generated Bills', - 'discounts' => 'Discounts', - 'new_patient_discount' => 'New Patient Discount', - 'view_patient_discounts' => 'View Patient Discounts', - 'new_discount_category' => 'New Discount Category', - 'view_discount_categories' => 'View Discount Categories', - 'view_inactive_discount_categories' => ' View Inactive Discount Categories', - 'payrolls' => 'PAYROLLS', - 'add_payroll' => 'Add Payroll', - 'add_multiple_payrolls' => 'Add Multiple Payrolls', - 'view_payrolls' => 'View Payrolls', - 'inactive_payrolls' => 'Inactive Payrolls', - 'view_payslips' => 'View Payslips', - 'deleted_payslips' => 'Deleted Payslips', - 'payroll_defauls' => 'Payroll Defaults', - 'chart_of_accounts' => 'CHART OF ACCOUNTS', - 'add_account' => 'Add Account', - 'view_accounts' => 'View Accounts', - 'inactive_accounts' => 'Inactive Accounts', - 'account_types' => 'ACCOUNT TYPE', - 'add_account_type' => 'Add Account Type', - 'view_account_types' => 'View Account Types', - 'inactive_account_types' => 'Inactive Account Types', - 'items' => 'ITEMS', - 'items_and_categories' => 'Items And Categories', - 'equity_management' => 'Equity Management', - 'fixed_assets' => 'Fixed Assets', - 'family_accounts' => 'Family Accounts', - 'family_accounts_consumption_report' => 'Family Accounts Consumption Report', - 'family_accounts_deposit_report' => 'Family Account Deposit Report', - 'reports_title' => 'REPORTS', - 'reports' => 'Reports', - 'invoice_for' => 'INVOICE FOR', - 'invoices_title' => 'INVOICES', - 'invoices' => 'Invoices', - 'clinic' => 'Clinic', - 'date' => 'Date', - 'search_by' => 'Search By', - 'from' => 'From :', - 'to' => 'To :', - 'na' => 'N/A :', - 'search_criteria' => 'Search Criteria :', - 'patient_number' => 'Patient Number', - 'full_names' => 'Full Names', - 'age' => 'Age', - 'phone' => 'Phone', - 'category' => 'Category', - 'bill_to_pay' => 'Bill to pay', - 'consultations' => 'Consultations', - 'treatments' => 'Treatments', - 'investigations' => 'Investigations', - 'procedures' => 'Procedures', - 'sundries' => 'Sundries', - 'pay_for_all_items' => 'Pay For All Items', - 'select' => 'select', - 'no_records_found' => 'No Records Found', - 'invoice_detail' => 'Invoice Detail', - 'receipt_number' => 'Receipt Number', - 'patient_name' => 'Patient Name', - 'payment_voucher' => 'Payment Voucher', - 'create_or_register_bills' => 'Create / Register Bills', - 'print' => 'Print', - 'received_inventory_bills' => 'Received Inventory Bills', - 'account_to_pay_from' => 'Account To Pay From', - 'date_of_expense' => 'Date Of Expense', - 'payment_items_total' => 'Payment Item\'s Total', - 'make_new_payment' => 'Make New Payment', - 'paid_from_account' => 'Paid From Account', - 'transaction_id' => 'Transaction ID', - 'add_item' => 'Add Item', - 'item' => 'Item', - 'expense_by' => 'Expense By', - 'expenses_report' => 'Expenses Report', - 'payment' => 'Payment', - 'claim_number' => 'Claim Number', - 'item_type' => 'Item Type', - 'due_date' => 'Due Date', - 'invoice' => 'Invoice', - 'total' => 'total', - 'tel' => 'Tel', - 'email' => 'Email', - 'Cashier' => 'Cashier', - 'subtotal' => 'Sub-Total', - 'sub_total' => 'Sub-Total', - 'served_by' => 'Served By', - 'item_amounts' => 'Item Amounts', - 'item_quantity' => 'Item Quantity', - 'invoices_payments' => 'Invoice Payments', - 'patient_category_invoices' => 'Patient Category Invoices', - 'receive_invoice_payments' => 'Receive Invoice Payments', - 'patient_category_invoices_with_balance' => 'Patient Category Invoice With Balance', - 'donor_discount_invoice' => 'Donor Discount Invoice', - 'donor_discount_invoices' => 'Donor Discount Invoices', - 'donor_discount_invoice_with_balance' => 'Donor Discount Invoice With Balance', - 'payment_history' => 'Payment History', - 'receive_payment' => 'Receive Payment', - 'update_payment' => 'Update Payment', - 'item_quantities' => 'Item Quantities', - 'patient_amount_paid' => 'Patient Amount Paid', - 'last_payment_date' => 'Last Payment Date', - 'last_amount_paid' => 'Last Amount Paid', - 'reason' => 'Reason', - 'invoice_payments' => 'Invoice Payments', - 'description' => 'Description', - 'amount_paid' => 'Amount Paid', - 'amount_to_be_paid' => 'Amount To Be Paid', - 'total_amount' => 'Total Amount', - 'receipt' => 'Receipt', - 'donor' => 'Donor', - 'details' => 'Details', - 'amount' => 'Amount', - 'submit' => 'Submit', - 'invoice_number' => 'Invoice Number', - 'create_bill_for_received_inventory' => 'Create Bill For Received Inventory', - 'date_generated' => 'Date Generated', - 'action' => 'Action', - 'paid_by' => 'Paid By', - 'receipts' => 'Receipts', - 'staff_in_charge' => 'Staff In-Charge', - 'invoice_payments_trail' => 'Invoice Payments Trail', - 'payment_for' => 'Payment For', - 'print_invoice' => 'Print Invoice', - 'print_receipt' => 'Print Receipt', - 'received_by' => 'Received By', - 'received_on' => 'Received On', - 'approved_by' => 'Approved By', - 'received_from' => 'Received From', - 'date_on' => 'Date On', - 'discount_type' => 'Discount Type', - 'start_date' => 'Start Date', - 'end_date' => 'End Date', - 'invoice_date' => 'Invoice Date', - 'sign' => 'Sign', - 'today' => 'TODAY', - 'memo' => 'Memo', - 'cancel' => 'Cancel', - 'confirm' => 'Confirm', - 'payment_by' => 'Payment By', - 'payment_date' => 'Payment Date', - 'create_bills' => 'Create Bill', - 'delete_bill' => 'Delete Bill', - 'pay_balance' => 'Pay Balance', - 'status' => 'Status', - 'not_paid' => 'NOT PAID', - 'paid' => 'PAID', - 'all' => 'ALL', - 'cost' => 'Cost', - 'quote_approved_by' => 'Quotation Approved By', - 'quote_received_by' => 'Quotation Received By', - 'items_received_on' => 'Items Received On', - 'bill_per_item' => 'Bill per Item', - 'print_voucher' => 'Print Voucher', - 'create_inventory_bill' => 'Create Inventory Bill', - 'bill_payment_voucher' => 'Bill Payment Voucher', - 'all_staff' => 'ALL STAFF', - 'generated_by' => 'Generated By', - 'paid_with_balance' => 'PAID WITH BALANCE', - 'pay_bill' => 'Pay Bill', - 'bill_age' => 'Bill Age', - 'bill_date' => 'Bill Date', - 'bill_due_date' => 'Bill Due Date', - 'bill_memo' => 'Bill Memo', - 'payable_account' => 'Payable Account', - 'bill_balance' => 'Bill Balance', - 'update_bill_payment' => 'Update Bill Payment', - 'save_bill' => 'Save Bill', - 'view_payments' => 'View Payments', - 'vendor' => 'Vendor', - 'bill_total' => 'Bill Total', - 'payment_memo' => 'Payment Memo', - 'new_account_balance' => 'New Account Balance', - 'current_account_balance' => 'Current Account Balance', - 'are_you_sure' => 'Are you sure you wish to perform this action ?', - 'edit' => 'Edit', - 'bank_account' => 'Bank Account', - 'amount_to_pay' => 'Amount To Pay', - 'expense_account' => 'Expense Account', - 'quantity' => 'Quantity', - 'unit_cost' => 'Unit Cost', - 'delete' => 'Delete', - 'inactive_bills' => 'Inactive Bills', - 'activate' => 'Activate', - 'all_vendors_lc' => 'All Vendors', - 'all_vendors' => 'All VENDORS', - 'bill_number' => 'Bill Number', - 'payment_item' => 'Payment Item', - 'payment_items' => 'Payment Items', - 'create_payment_item' => 'Create Payment Item', - 'edit_payment_item' => 'Edit Payment Item', - 'inactive_payment_item' => 'Inactive Payment Items', - 'view_payment_vouchers' => 'View Payment Voucher', - 'authorised_by' => 'Authorised By', - 'yesterday' => 'YESTERDAY', - 'custom_date' => 'CUSTOM DATE', - 'date_range' => 'DATE RANGE', - 'for_period' => 'For Period', - 'payments' => 'Payments', - 'generate_invoice_for' => 'Generate Invoice For', - 'patient_category' => 'Patient Category', - 'no_records_available' => 'No Records Available', - 'generate_invoice' => 'Generate Invoice', - 'select_date' => 'Select Date', - 'payment_received_on' => 'Payment Received On', - 'generated_on' => 'Generated On', - 'previous_balance' => 'Previous Balance', - 'balance' => 'Balance', - 'receive_invoice_payment' => 'Receive Invoice Payments', - 'no_date' => 'No Data', - 'streamline' => '© Stre@mline', - 'select_valid_date' => 'SELECT A VALID DATE RANGE', - 'donor_name' => 'Donor Name', - 'select_patient_category' => 'Select A Patient Category', - 'payroll_defaults' => 'PAYROLL DEFAULTS', - 'journals_records' => 'Past Journal Records', - 'journals_title' => 'JOURNALS', - 'journals' => 'Journals', - 'invoices_home' => 'Invoices Home', - 'accounts_payable_aging_summary' => 'Accounts Payable Aging Summary', - 'accounts_payable_aging_detail' => 'Accounts Payable Aging Detail', - "title_budgets" => "BUDGETS", - 'budgets' => 'Budgets', - "add_budgets" => "Add Budgets", - "view_budgets" => "View Budgets", - "inactive_budgets" => "Inactive Budgets", - "past_records" => "Past Records", - "save_journal" => "Save Journal", - "patient_categories" => "Patient Categories", - "employee" => "Employee", - "supplier" => "Supplier", - "customer" => "Customer", - "name" => "Name", - "type" => "Type", - "credit" => "Credit", - "debits" => "Debits", - "account" => "Account", - "journal_number" => "Journal Number", - "journal_date" => "Journal Date", - "all_dates" => "ALL DATES", - "last_7_days" => "LAST 7 DAYS", - "last_30_days" => "LAST 30 DAYS", - "date_from" => "Date From", - "date_to" => "Date To", - "search" => "Search", - "created_by" => "Created By", - "date_and_time" => "Date And Time", - "staff_member" => "Staff Member", - "edit_tax_rate" => "Edit Tax Rate", - "social_security_rate" => "Social Security Rate", - "edit_payroll_defaults" => "Edit Payroll Defaults", - "edit_social_security_rate" => "Edit Social Security Rate", - "un-billed_items" => "Un-Billed Items" -]; diff --git a/docker/streamline-src/resources/lang/en/finance_reports.php b/docker/streamline-src/resources/lang/en/finance_reports.php deleted file mode 100755 index d01a6e85..00000000 --- a/docker/streamline-src/resources/lang/en/finance_reports.php +++ /dev/null @@ -1,381 +0,0 @@ - 'Finance Reports Dashboard', - 'current_asset_accounts' => 'Current Asset Accounts', - 'liability_accounts' => 'Liability Accounts', - 'fixed_asset_accounts' => 'Non-Current Assets', - 'cost_of_goods_accounts' => 'Cost Of Goods Accounts', - 'inventory_accounts' => 'Inventory Accounts', - 'equity_accounts' => 'Equity Accounts', - 'income_accounts' => 'Income Accounts', - 'reports_dashboard' => 'Reports Home', - 'finance_dashboard' => 'Finance Home', - 'current_running_balance' => 'Current Running Balance', - 'patient_category_invoices_uc' => 'PATIENT CATEGORY INVOICES', - 'patient_category_invoices' => 'Patient Category Invoices', - 'patient_debtors_uc' => 'PATIENT DEBTORS', - 'procedure_payments' => 'Procedure Payments Report', - 'cash_basis' => 'Cash Basis', - 'accrual_basis' => 'Accrual Basis', - 'print_statement' => 'Print Statement', - 'graphs' => 'GRAPHS', - 'summary' => 'Summary', - 'summary_uc' => 'SUMMARY', - 'expense_accounts' => 'Expense Accounts', - - "accounts_payable_aging_summary" => "Accounts Payable Aging Summary", - "accounts_payable_aging_detail" => "Accounts Payable Aging Detail", - "accounts_receivable_aging_summary" => "Accounts Receivable Aging Summary", - "accounts_receivable_aging_detail" => "Accounts Receivable Aging Detail", - "cash_flow_statement" => "Cash Flow Statement", - 'sales' => 'Sales', - 'point_of_sale' => 'Point Of Sale Report', - 'received_cash' => 'Received Cash Report', - 'discounts' => 'Discounts', - 'ward_discounts_report' => 'Ward Discounts Report', - 'debtors_and_discrepancies' => 'Debtors And Discrepancies', - 'company_and_financial' => 'Company And Financial', - 'cost_center_performance' => 'Cost Center Performance', - 'cost_center_performance_report' => 'Cost Center Performance Report', - 'debtors_and_discrepancies' => 'Debtors And Discrepancies', - 'discounts' => 'Discounts', - 'investigation_incomes' => 'Investigation Incomes Report', - 'patient_refunds' => 'Patient Refunds', - 'patient_refunds_report' => 'Patient Refunds Report', - 'point_of_sale' => 'Point Of Sale Report', - 'profit_or_loss_statement' => 'Profit Or Loss Statement', - 'received_cash' => 'Received Cash Report', - 'sales' => 'Sales', - 'staff_payments' => 'Staff Payments Report', - 'top_10_investigations' => 'Top 10 Investigations Report', - 'trial_balance' => 'Trial Balance', - 'view_patient_refunds' => 'View Patient Refunds', - 'deposit_date' => 'Deposit Date', - - 'all_fixed_assets' => 'All Non-Current Assets', - 'all_current_assets' => 'All Current Asset Accounts', - 'all_liabilities' => 'All Liability Accounts', - 'all_equity' => 'All Equity Accounts', - 'all_incomes' => 'All Income Accounts', - 'all_expenses' => 'All Expense Accounts', - 'all_cost_of_goods' => 'All Cost Of Goods Accounts', - - 'gross_loss' => 'Gross Loss', - 'gross_profit' => 'Gross Profit', - 'net_loss' => 'Net Loss', - 'net_profit' => 'Net Profit', - 'gross_profit_vs_total_expenses' => 'Gross Profit Vs Total Expenses', - - 'debt_plan_uc' => 'DEBT PLANS', - 'patient_amount' => 'Patient Amount', - 'patient_name' => 'Patient Name', - 'staff_member' => 'Staff Member', - 'patient_category_invoice' => 'Patient Category Invoice', - 'patient_category_invoice_payments' => 'Patient Category Invoice Payments', - 'donor_discount_invoice_payments' => 'Donor Discount Invoice Payments', - 'donor_discount_invoices' => 'Donor Discount Invoices', - 'receive_cashier_payments' => 'Receive Cashier Payments', - 'select_ward' => 'Select A Ward', - 'date' => 'Date', - 'detail' => 'Detail', - 'details' => 'Details', - 'receipt_number' => 'Receipt Number', - 'receipt_numbers' => 'Receipt Numbers', - 'item_name' => 'Item Name', - 'amount_to_be_paid' => 'Amount To Be Paid', - 'total' => 'Total', - 'patient_number' => 'Patient Number', - 'staff_guarantor' => 'Staff Guarantor', - 'staff_guarantors_report' => 'Staff Guarantor Report', - 'staff_guarantor_payments' => 'Staff Guarantor Payments', - 'authorised_by' => 'Authorised By', - 'comment' => 'Comment', - 'transaction_date' => 'Transaction Date :', - 'record_date' => 'Record Date :', - 'staff_in_charge' => 'Staff In-Charge :', - 'type' => 'Type', - 'account' => 'Account', - 'memo' => 'Memo', - 'debit' => 'Debit', - 'debits' => 'Debits', - 'credit' => 'Credit', - 'credits' => 'Credits', - 'balance' => 'Balance', - 'view_payments' => 'View Payments', - 'paid_in_full' => 'PAID IN FULL', - 'paid_but_with_balance' => 'PAID BUT WITH BALANCE', - 'item_quantities' => 'Item Quantities', - 'received_cash_for' => 'Received Cash For', - 'cost_price' => 'Cost Price', - 'subtotal' => 'Subtotal', - 'name' => 'Name', - 'number' => 'Number', - 'total_purchases_report' => 'Total Purchases Report', - 'dependants' => 'Dependants', - 'stock_status_report' => 'Stock Status Report', - 'amount_consumed' => 'Amount Consumed', - 'registered_by' => 'Registered By:', - 'registered_on' => 'Register On:', - 'amount' => 'Amount', - 'transaction_id' => 'Transaction ID', - 'paid_from_account' => 'Paid From Account', - 'staff_guarantor_report' => 'Staff Guarantor Report', - 'select_category' => 'Select Category', - 'action' => 'Action', - 'serial_number' => 'Serial Number', - 'acquisition_date' => 'Acquisition Date', - 'warranty_expiration_date' => 'Warranty Expiration Date', - 'supplier' => 'Supplier', - 'purchase_condition' => 'Purchase Condition', - 'guarantor_to_pay' => 'Guarantor To Pay', - 'expected_amount' => 'Expected Amount', - 'accounts_receivables_for' => 'Accounts Receivable For', - - 'item_quantity' => 'Item Quantity', - 'item_amounts' => 'Item Amounts', - 'patient_category_to_pay' => 'Patient Category to pay', - 'drug_name' => 'Drug Name', - 'pharmacy_stock' => 'Pharmacy Stock', - 'store_stock' => 'Store Stock', - 'pharmacy_stock_value' => 'Pharmacy Stock Value', - 'store_stock_value' => 'Store Stock Value', - 'sundry_name' => 'Sundry Name', - 'vendor' => 'Vendor', - 'bill_number' => 'Bill Number', - 'due_date' => 'Due Date', - 'items' => 'Items', - 'bills' => 'Bills', - 'bill_total' => 'Bill Total', - - 'status' => 'status', - 'start_date' => 'Start Date', - 'end_date' => 'End Date', - 'date_on' => 'Date On', - 'date_of_bill' => 'Date Of Bill', - - 'cashier' => 'Cashier', - 'reason' => 'Reason', - 'received_by' => 'Received By', - 'recorded_on' => 'Recorded On', - - 'quantities' => 'Quantities', - 'subtotals' => 'Subtotals', - 'patient_amount_paid' => 'Patient Amount Paid', - 'patient_category' => 'Patient Category', - - 'amount_owed' => 'Amount Owed', - 'amount_paid' => 'Amount Paid', - 'gsf_paid' => 'GSF Paid', - 'gsf_to_pay' => 'GSF To Pay', - 'patient_to_pay' => 'Patient To Pay', - 'arrangement_for_balance' => 'Arrangement For balance', - 'completion_date' => 'Completion Date', - - 'investigations' => 'Investigations', - 'drugs' => 'Drugs', - 'other_services' => 'Other Services', - 'procedures' => 'Procedures', - 'sundries' => 'Sundries', - 'treatments' => 'Treatments', - 'consultations' => 'Consultations', - 'co_payments' => 'Co-Payments', - - 'payment_arrangement' => 'Payment Arrangement', - 'amount_to_pay' => 'Amount To Pay', - - 'item' => 'Item', - 'debtors' => 'Debtors', - 'debtors_report' => 'Patient Debtors Report', - 'actual_consumed_amount' => 'Actual Consumed Amount', - 'debt_plan_payments_report' => 'Debt Plan Payments Report', - 'select_parish' => 'Select A Parish', - 'consultations_uc' => 'CONSULTATIONS', - 'drugs_uc' => 'DRUGS', - 'treatments_uc' => 'TREATMENTS', - 'sundries_uc' => 'SUNDRIES', - 'procedure_uc' => 'PROCEDURES', - 'investigations_uc' => 'INVESTIGATIONS', - 'other_services_uc' => 'OTHER SERVICES', - 'co_payments_uc' => 'CO-PAYMENTS', - 'donor_invoice_payments_uc' => 'DONOR INVOICE PAYMENTS', - 'patient_category_invoice_payments_uc' => 'PATIENT CATEGORY INVOICE PAYMENTS', - 'patient_debtor_payments_uc' => 'PATIENT DEBTOR PAYMENTS', - 'debt_plan_payments_uc' => 'DEBT PLAN PAYMENTS', - 'cashier_receipt' => 'Cashier Receipt', - 'debt_plan_payment_receipt' => 'Debt Plan Payment Receipt', - 'debt_plan_report' => 'Debt Plan Report', - 'print' => 'Print', - 'debt_plan' => 'Debt Plan', - 'received_from' => 'Received From', - 'all_staff' => 'ALL STAFF', - 'all_staff_guarantors' => 'ALL STAFF GUARANTORS', - 'income_accrual_report' => 'Income Accrual Report', - 'income_cash_report' => 'Income Cash Report', - 'receipt' => 'Receipt', - 'total_amount' => 'Total Amount', - 'clear_debt' => 'Clear Debt', - 'debt_cleared' => 'Debt Cleared', - 'debtor_report' => 'Debtor Report', - 'debtor_receipt' => 'Debtor Payment Receipt', - 'donor_receipt' => 'Donor Discount Receipt', - 'service_receipt' => 'Services Receipt', - 'inpatient_receipt' => 'Inpatient Receipt', - 'inpatient_deposit_receipt' => 'Inpatient Deposit Receipt', - 'investigation_receipt_reprint' => 'Investigation Receipt Reprint', - 'premiums_receipt_reprint' => 'Premiums Receipt Reprint', - 'procedures_receipt_reprint' => 'Procedures Receipt Reprint', - 'services_receipt_reprint' => 'Services Receipt Reprint', - 'sundries_receipt_reprint' => 'Sundries Receipt Reprint', - 'treatment_receipt_reprint' => 'Treatment Receipt Reprint', - 'services_receipt' => 'Services Receipt', - 'streamline' => '© Stre@mline', - 'clear_fully' => 'Clear Fully', - 'department' => 'Department', - 'viewed_by' => 'Viewed By', - 'print_all_receipts' => 'Print All Receipts', - 'discounts_applied' => 'Discounts Applied', - 'payment_for' => 'Payment For', - 'insurance_expiry_date' => 'Insurance Expiry Date', - 'insurance_amount' => 'Insurance Amount', - 'insurance_family_amount' => 'Insurance Family Amount', - 'patient' => 'Patient', - 'balance_sheet' => 'Balance Sheet', - 'guarantor_agreement' => 'Guarantor Agreement', - 'account_name' => 'Account Name', - 'received_income' => 'Received Income', - 'inpatient_bills' => 'Inpatient Bills', - 'inpatient_bill_payments' => 'Inpatient Bill Payments', - 'inpatient_deposit_details' => 'Inpatient Deposit Details', - 'accounts_receivables_invoices' => 'Accounts Receivables (invoices)', - 'accounts_receivables_debts' => 'Accounts Receivables (debts)', - 'paid_debts' => 'Paid Patient Debts', - 'paid_invoices' => 'Paid Invoices', - 'total_sales' => 'Total Sales', - 'family_account_total_sales' => 'Family Account Total Sales', - 'family_account_deposits' => 'Family Account Deposits', - 'total_cash_collected' => 'Total Cash Collected', - 'total_cash_not_received' => 'Total Cash (Not received)', - 'note' => 'Note', - 'total_string' => 'Total Cash Collected = Total Sales + Family Accounts Deposits - Family Accounts Total Sales', - 'and' => 'And', - 'all_money_on' => 'All Money On', - 'all_money_between' => 'All Money Between', - 'tel' => 'Tel', - 'premiums' => 'Premiums', - 'inpatient_deposits' => 'Inpatient Deposits', - 'email' => 'Email', - 'description' => 'Description', - 'ref' => 'REF', - 'no_records_available' => 'NO RECORDS AVAILABLE', - 'brought_by' => 'Brought By', - 'cashier_in_charge' => 'Cashier Incharge', - 'payments' => 'Payments', - 'home' => 'Home', - 'dashboard' => 'home', - 'reports_home' => 'Reports Home', - 'finance_home' => 'Finance Home', - 'received_cash_report' => 'Received Cash Report', - 'donor' => 'Donor', - 'payment_status' => 'Payment Status', - 'hospital_to_pay' => 'Hospital To Pay', - 'hospital_amount' => 'Hospital Amount', - 'donor_amount' => 'Donor Amount', - 'donor_to_pay' => 'Donor To Pay', - 'refund_date' => 'Refund Date', - 'refund_reason' => 'Refund Reason', - 'refunded_by' => 'Refunded By', - 'refund_amount' => 'Refund Amount', - 'patient_id' => 'Patient ID', - 'episode_id' => 'Episode ID', - - 'staff_guarantors' => 'Staff Guarantors', - 'staff_guarantor_to_pay' => 'Staff Guarantor To Pay', - 'contact_name' => 'Contact Name', - 'insurance_group' => 'Insurance Group', - 'insurance_duration' => 'Insurance Duration', - 'family_amount' => 'Family Amount', - 'expiration_date' => 'Expiration Date', - 'donor_discount_if_any' => 'Donor Discount if any', - 'general_discount_if_any' => 'General Discount if any', - 'insurance_amount_if_any' => 'Insurance Amount if any', - 'no_available_records' => 'No Records Available', - 'export_to_pdf' => 'Export data to Copy, CSV, Excel, PDF & Print', - 'select_date' => 'Select Date', - 'clear_search' => 'Clear Search', - 'select' => '-select-', - 'today' => 'TODAY', - 'yesterday' => 'YESTERDAY', - 'custom_date' => 'CUSTOM DATE', - 'date_range' => 'DATE RANGE', - - 'procedure_name' => 'Procedure Name', - 'unit_cost' => 'Unit Cost', - 'amount_received' => 'Amount Received', - 'paid' => 'Paid', - 'not_paid' => 'Not Paid', - 'date_paid' => 'Date Paid', - 'receive_donor_payment' => 'Receive Donor Payment', - 'purchase_number' => 'Purchase Number', - 'print_receipt' => 'Print Receipt', - - 'discounts_report' => 'Discounts Report', - 'hospital_discounts_report' => 'Hospital Discounts Report', - 'discrepancy_report' => 'Discrepancy Report', - 'donor_discounts_report' => 'Donor Discounts Report', - - 'receive_staff_guarantor_payment' => 'Receive Staff Guarantor Payments', - 'debt_plan_payment' => 'Debt Plan Payment', - 'all' => 'ALL', - 'banked' => 'BANKED', - 'delete' => 'Delete', - 'account_balance' => 'Account Balance', - 'bank_account' => 'Bank Account', - 'bank_deposit' => 'Bank Deposit', - 'bank_deposit_date' => 'Bank Deposit Date', - 'bank_deposit_memo' => 'Bank Deposit Memo', - 'deposit_by' => 'Deposit By', - 'deposit_amount' => 'Deposit Amount', - 'cancel_deposit' => 'Cancel Deposit', - 'confirm_deposit' => 'Confirm Deposit', - 'new_account_balance' => 'New Account Balance', - 'current_account_balance' => 'Current Account Balance', - 'bank_money' => 'Bank Money', - 'resolve' => 'Resolve', - 'all_cashiers' => 'All Cashiers', - 'discounts_report_for_all' => 'Discounts Report For ALL Donors', - 'discounts_report_for' => 'Discounts Report For', - 'cash_received_on' => 'Cash Received On', - 'cash_received_by' => 'Cash Received By', - 'cash_received_from' => 'Cash Received From', - 'clear_duplicate_receipts' => 'Clear Duplicate Receipts', - 'are_you_sure' => 'Are you sure you wish to perform this action ?', - 'select_patient_category' => 'Select A Patient Category', - 'select_valid_date' => 'Select A Valid date or date range', - 'select_donor' => 'Select A Donor', - 'payment_history' => 'Payment History', - 'receive_payment' => 'Receive Payment', - 'update_payment' => 'Update Payment', - 'view_receipts' => 'View Receipts', - 'full_payment' => 'Payment has been made in full', - 'payment_date' => 'Payment Date', - 'receive_debtor_payments' => 'Receive Debtor Payments', - 'debtor_payment' => 'Debt Payment', - 'debtor_payment_receipt' => 'Debt Payment Receipt', - 'actual_amount_consumed_reports' => 'Actual Amount Consumed Reports', - 'select_staff' => 'Select A Staff Member', - 'deposited_by' => 'Deposited By', - 'select_staff_guarantor' => 'Select A Staff Guarantor', - 'submit' => 'Submit', - 'total_to_pay' => 'Total To Pay', - 'sub_total' => 'Sub-Total', - 'payment_method' => 'Payment Method', - 'money_transferred_from' => 'Money Transferred From', - 'id' => 'ID', - 'selling_price' => 'Selling Price', - 'category' => 'Category', - 'expiry_date' => 'Expiry Date', - 'ward' => 'Ward', - 'debt_plans_uc' => 'DEBT PLANS', - 'bill_date' => 'Bill Date' -]; diff --git a/docker/streamline-src/resources/lang/en/general_items.php b/docker/streamline-src/resources/lang/en/general_items.php deleted file mode 100755 index 4252a792..00000000 --- a/docker/streamline-src/resources/lang/en/general_items.php +++ /dev/null @@ -1,121 +0,0 @@ - "Dashboard", - "drugs_stock_reconciliation" => "General Item Stock Reconciliation", - "view" => "View", - "export_data_to_csv_and_excel" => "Export data to Copy, CSV, Excel, PDF & Print", - "general_item" => "General Item", - "general_items" => "General Items", - "new_drug" => "New Drug", - "register" => "Register", - "edit" => "Edit", - "delete" => "Delete", - "create" => "Create", - "submit" => "Submit", - "cancel" => "Cancel", - "edit_drug" => "Edit General Item", - "activate" => "Activate", - "streamline_setup_six_of_ten" => "Stre@mline setup (Step 8 of 12)", - "general_items_name" => "General Item name", - "general_items_form" => "General Item form", - "general_items_category" => "General Item category", - "general_items_unit" => "General Item unit", - "pack" => "Pack", - "strength" => "Strength", - "supplier" => "Supplier", - "general_items_description" => "General Item description", - "general_items_prompt" => "General Item prompt", - "current_store_stock" => "Current store stock", - "current_pharmacy_stock" => "Current pharmacy stock", - "re_order_level" => "Re-order level", - "cost_price" => "Cost price", - "income_account" => "Income Account", - "cost_of_goods_account" => "Cost Of Goods Account", - "inventory_asset_account" => "Inventory Asset Account", - "drug_expiry_date" => "General Item expiry date", - "insurance_coverage" => "Insurance coverage", - "non_insured_price" => "Cash Price", - "insured_price" => "Insured price", - "patient_info_in_english" => "Patient information in English", - "patient_info_in_vernacular" => "Patient information in Vernacular", - "select_from_list" => "Select any from list", - "next" => "Next", - "skip" => "Skip", - "prompts_and_references" => "Prompt and References", - "pharmacy" => "Pharmacy", - "store" => "Store", - "vernacular_info" => "Vernacular Info", - "english_info" => "English Info", - "other_options" => "Other options", - "create_multiple_drugs" => "Create multiple drugs", - "drug_categories" => "Drug Categories", - "inventory_account" => "Inventory Account", - "description" => "Description", - "stock_level" => "Stock Level", - "expiry_date" => "Expiry Date", - "long_term" => "Long term", - "hssip" => "H.S.S.I.P", - "activate_drugs" => "Activate drugs", - "selling" => "Selling", - "prompt" => "Prompt", - "are_you_sure" => "Are you sure?", - "expiring_drugs" => "Expiring drugs", - "expiring" => "Expiring", - "expiring_with_in" => "Expiring Within", - "1_week" => "1 Week", - "2_weeks" => "2 Weeks", - "1_month" => "1 Month", - "expired_drugs" => "Expired Drugs", - "store_stock" => "Store Stock", - "batch_details" => "Batch Details", - "quantity" => "Quantity", - "batch" => "Batch", - "drugs_out_of_stock" => "Drugs out of stock", - "out_of_stock" => "Out of stock", - "add_bulk_drugs" => "Add Bulk Drugs", - "edit_all_drugs" => "Edit All Drugs", - "edit_all_prompts" => "Edit All Drug Prompts", - "edit_all_calculations" => "Edit All Drug Calculations", - "edit_all_pricing" => "Edit All Drug Pricing", - "edit_all" => "Edit all", - "id" => "Id", - "pharmacy_stock" => "Pharmacy Stock", - "drug_pack" => "Drug Pack", - "drug_strength" => "Drug Strength", - "buying" => "Buying", - "pf_adult" => "P.F (Adult)", - "daily_cost_adult" => "Daily Cost (Adult)", - "daily_cost_adult_insured" => "Daily Cost (Adult Insured)", - "pf_children" => "P.F (Children)", - "daily_cost_children" => "Daily Cost (Children)", - "daily_cost_children_insured" => "Daily Cost (Children Insured)", - "pf_infant" => "P.F (Infant)", - "daily_cost_infant" => "Daily Cost (Infant)", - "daily_cost_infant_insured" => "Daily Cost (Infant Insured)", - "pharmacy_comment" => "Pharmacy comment", - "edit_calculation" => "Edit calculation", - "edit_drug_calculation" => "Edit general item calculation", - "edit_pricing" => "Edit pricing", - "edit_drug_pricing" => "Edit general item pricing", - "edit_drug_prompt" => "Edit general item prompt", - "edit_prompt" => "Edit prompt", - "purchasing_package_unit" => "Purchasing Package Unit", - "quantity_in_each_package_unit" => "Quantity in each purchasing package unit", - "does_package_unit_have_sub_packages" => "Does package unit have sub packages e.g smaller boxes", - "quantity_in_each_sub_package" => "Quantity in each sub package", - "number_of_sub_packages_in_main_package" => "Number of sub packages in one package unit", - "edit_package_units_details" => "Edit purchasing package details", - "yes" => "Yes", - "no" => "No", - "edit_drug_calculations" => "Edit Drug Calculations", - "is_initial_stock_count" => "Do the values in store stock & pharmacy stock represent the actual initial stock count?", - "initial_stock_count_explanation" => "Is this current stock in store and pharmacy the initial opening stock (please select yes if you want this stock to appear as opening inventory equity in the balance sheet. Ask accountant if you are not sure)", - "activate_general_items" => "Activate General Items", - "view_general_items" => "View General Items", - "add_general_items" => "Add General Items", - "payables_account" => "Payables Account", - "expense_account" => "Expense Account", - "edit_general_items" => "Edit General Item", - "general_item_cost_price" => "General Item Cost Price", -]; \ No newline at end of file diff --git a/docker/streamline-src/resources/lang/en/general_settings.php b/docker/streamline-src/resources/lang/en/general_settings.php deleted file mode 100755 index df2faf9a..00000000 --- a/docker/streamline-src/resources/lang/en/general_settings.php +++ /dev/null @@ -1,254 +0,0 @@ - "Finish", - "save_settings" => "Save Settings", - "cancel" => "Cancel", - "yes" => "Yes", - "no" => "No", - "options" => "Options", - "description" => "Description", - 'subscription_tracking'=>'Subscription Tracking', - 'subscription_tracking_description'=>"Enable and Disable Subscription Tracking for Facility", - 'streamline_instance_description'=>'Enable and Disable Streamline Instance', - 'current_sub_start'=>"Current subscription start date", - 'set_interval_sub'=>'Set Interval For Expiry Date ( Years )', - 'sub_expiry_date'=>'Subscription Expiry Date ', - 'sub_suspension_date'=>'Suspension Date', - "show_drug_brand_name" => "Enabling this will display the drug brand name, if available, throughout the system and also engage the setting of the brand name when drugs have been requisitioned successfully and are being received", - "display_drug_brand_name" => "Display Drug Brand Name", - "allow" => "Allow", - "dont_allow" => "Do not allow", - "allow_over_consumption_label" => "Enabling this will allow family members to receive services that are worth more than the balance that is on their family accounts", - "allow_over_consumption" => "Allow over consumption on family accounts", - "enable_family_accounts" => "Enable the family accounts feature", - "dont_enable_family_accounts" => "Do not enable family accounts feature", - "disabled" => "Disabled", - "enabled" => "Enabled", - "disable" => "Disable", - "enable" => "Enable", - 'update_settings'=>'Update Settings', - 'renew_subscription'=>'Please Renew your Stre@mline EMR Subscription', - 'faciliate'=>'Facilitating clinical excellence', - 'lose_money'=>'Helping hospitals to stop losing money', - 'for_support'=>'For any Inquires please reach out our support channels:', - 'contact_hospital_admin' =>'Please contact the Hospital Administrator for help to access Stre@mline ', - 'warning_date'=>'Warning Notification Start Date ', - 'start_date'=>'Start Date', - 'create_new_subscription'=>'Create New Subscription', - 'update'=>"Update", - "item_batch_tracking" => "Item Batch Tracking", - "item_batch_tracking_label" => "Enabling this will allow Stre@mline to track received items like drugs, sundries etc using their batch numbers", - "user_password_expiration_days" => "User Password Expiration Days", - "user_password_expiration_days_label" => "Set the number of days before a user's password expires and require them to set a new one", - "currency_code" => "Currency Code", - "currency_code_label" => "Currency code to be displayed in monetary", - "donor_feature_label" => "Enabling this feature will mean being able to apply special discounts to patients during the billing process which may cap the amount to be paid by the patient", - "donor_feature" => "Donor Feature", - "normal_patient_prescriptions" => "Normal Patient Prescriptions", - "daily_pricing_factor" => "Daily Pricing Factor Prescriptions", - "ward_prescription_model" => "Ward Prescriptions Model", - "ward_prescription_model_label1" => "Using this will mean dispensing of drugs in the wards is the same as it would be for OPD patients and the patient is charged for how many drugs they took", - "ward_prescription_model_label2" => "Select how drugs will be dispensed to patients on the ward and how they will be paid for", - "ward_prescription_model_label3" => "Using this will mean having to set a daily pricing factor for the various age groups for each drug according to how often the patient will be receiving treatment day by day", - "settings_info" => "Please select a setting to change and remember to save", - "track_items_title" => "Track Items Using Their Batch Numbers", - "pwd_expire_title" => "Password Expiration Days", - "currency_code_title" => "Currency Code", - "display_drug_brand_title" => "Display Drug Brand Name", - "family_accounts_feature" => "Family Accounts Feature", - "donor_feature_title" => "Donor Feature", - "ward_prescription_model_title" => "Ward Prescriptions Model", - "hiv_screening_tool_and_gbv_screening_tool_title" => "HIV Screening Tool and GBV Screening Tool", - "hiv_screening_tool_title" => "HIV Screening Tool", - "gbv_screening_tool_title" => "GBV Screening Tool", - "streamline_setup" => "Stre@mline setup (Step 12 of 12)", - "streamline_setup_2" => "Stre@mline setup (Step 2 of 12)", - "streamline_setup_3" => "Stre@mline setup (Step 3 of 12)", - "edit_general_settings" => "Edit General Settings", - "general_settings" => "General Settings", - "dashboard" => "Dashboard", - "session_expiration_time_label" => "Set time taken for a user session to expire when idle (In minutes)", - "session_expiration_time_heading" => "Set session expiration time", - "in_minutes" => "(In minutes)", - "staff_payment_configuration" => "Staff Payment Configuration", - "select_staff" => "-- Select Staff --", - "select_procedure" => "Select Procedures", - "select_investigation" => "Select Investigations", - "set_staff_payments_info" => "Set payments of a staff per service rendered e.g money paid to them per procedure done, per investigation done, per consultation etc", - "treatment" => "Treatment", - "procedures" => "Set payments per procedures performed", - "investigations" => "Set payments per investigations performed", - "consultations_and_services" => "Set payments per consultation and services performed", - "sundries" => "Sundries", - "select" => "Select", - "fixed_amount" => "Fixed Amount", - "percentage" => "Percentage", - "payments_report" => "Payments Report", - "report_by" => "Report By", - "staff" => "Staff", - "services" => "Services", - "view_staff_payment_configurations" => "View Staff Payment Configurations", - "payments_report_details" => "Staff Payments Report Details", - "patient_name" => "Patient Name", - "patient_number" => "Patient Number", - "item_price" => "Item Price", - "amount_for_staff" => "Amount For Staff", - "staff_name" => "Staff Name", - "item_name" => "Item Name", - "incoming_prescription_confirmation" => "Incoming prescription confirmation", - "incoming_prescription_confirmation_label" => "Enable confirmation of incoming prescriptions before they are dispensed", - "incoming_prescription_confirmation_title" => "Enable incoming prescription confirmation", - "add_stamp_to_pdf" => "Add Stamp to Generated Pdf Confirmation", - "add_stamp_to_pdf_label" => "Confirmation of adding a stamp to generated pdf", - "add_stamp_to_pdf_title" => "Enable adding a stamp to generated pdf", - "add_lab_stamp_to_pdf" => "Add Laboratory Stamp to Lab Generated Pdf Confirmation", - "add_lab_stamp_to_pdf_label" => "Confirmation of adding a Laboratory stamp to authenticated Lab generated pdf", - "add_lab_stamp_to_pdf_title" => "Enable adding a Laboratory stamp to Lab generated pdf", - "add_lab_stamps_to_pdf_title" => "Hospital and Laboratory Stamp settings", - "add_attendance_to_consulations" => "Enable attendance at Consulation", - "add_inpatient_sheet_extras"=> "Enable addition of inpatien sheet extras", - "enable_dipensing_unpaid_prescription_title" => "Enable dispensing unpaid prescriptions", - "enable_dipensing_unpaid_prescription_label" => "Enabling this will allow prescriptions that have not been paid for, to be able to be dispensed for patients paying cash only", - "enable_dispensing_non_invoiced_prescription_label" => "Enabling this will allow prescriptions that have not been paid for, to be able to be dispensed for patients under a pay later scheme only", - "create_staff_payment_configuration" => "Create Staff Payment Configuration", - "cash" => "Cash", - "patient_category" => "Patient Category", - "date" => "Date", - "payment_status" => "Payment Status", - "staff_payment_status" => "Staff Payment Status", - "patient_payment_status" => "Patient Payment Status", - "batch_tracking_method" => "Batch Tracking Method", - "select_which_method_to_use_for_item_batch_tracking" => "Select which method to use for tracking item batches when being issued out", - "activate_streamline_modules" => "Activate Stre@mline Modules", - "ipd_only" => "For IPD patients only", - "all_patients" => "All Patients", - "show_procedure_prices" => "Show procedure price", - "hide_procedure_prices" => "Hide procedure price", - "show_drug_prices" => "Show drug price", - "hide_drug_prices" => "Hide drug price", - "show_investigation_prices" => "Show investigation price", - "hide_investigation_prices" => "Hide investigation price", - "show_sundry_prices" => "Show sundry price", - "hide_sundry_prices" => "Hide sundry price", - "show_service_prices" => "Show service price", - "hide_service_prices" => "Hide service price", - "set_personal_system_language" => "Set language you want to view the system in", - "set_language_explanation_with_example" => "Set the language of the sytem e.g English, Portuguese, French etc", - "manage_user_language" => "Manage user language", - "personal_settings" => "Personal Settings", - "Edit personal_settings" => "Edit personal settings", - "enable_smart_triage" => 'Enable Smart Triage Algorithm', - "select_smart_triage" => 'Select whether or not to enable smart triage algorithm at the triage', - "apply_triage_grade" => "Apply Generated Triage Grade", - 'apply_triage_grade_desc' => 'Apply the triage grade generated by smart triage to the triage grade selection', - "check_streamline_modules_to_activate" => "Check Stre@mline modules to activate", - "english" => "English", - "french" => "French", - "portuguese" => "Portuguese", - "set_system_language" => "Set the main language of the system", - "allow_bank_payments_lesser_balance" => "Allow payments from banks with lesser account balance", - "not_allow_bank_payments_lesser_balance" => "Do not allow payments from banks with lesser account balance", - "allow_bank_payments_by_balance_desc" => "Choose whether or not to allow payments from a bank account with less balance than the amount to pay", - "allow_bank_payments_by_balance" => "Allow or refuse payments from bank accounts with lesser account balance", - "enable_sms" => "Enable SMS Feature", - "enable_patient_debt_reminders" => "Enable patient debt reminders", - "enable_performing_unpaid_consultations" => "Enable performing unpaid consultations", - "enable_performing_unpaid_review_consultations" => "Enable performing unpaid review consultations", - "display_out_of_stock_drugs_message" => "Display out of stock drugs message", - "allow_prescribing_out_stock_drugs" => "Allow prescribing out of stock drugs", - "allow_prescribing_out_stock_drugs_desc" => "Allow doctors to prescribe drugs that are out of stock", - "enable_chi" => "Enable Community Health Insurance", - "add_service_patient_bill" => "Add service to patient total bill", - "add_service_patient_bill_desc" => "This will add a selected service to the total patient bill after consultation is completed by a doctor", - "enable_performing_unpaid_investigations" => "Enable performing unpaid investigations", - "enable_performing_unpaid_investigations_one" => "refuse performing unpaid investigations", - "enable_performing_unpaid_investigations_two" => "Enabled For Pay Later Patients (allow performing unpaid investigations for patients under a pay later category", - "enable_performing_unpaid_investigations_three" => "Enabled For All (allow performing unpaid investigations)", - "enable_performing_unpaid_investigations_desc" => "Enabling this will allow investigations that have not been paid for, to be able to be performed", - "cashier_receipts_print_type" => "Cashier Receipts Print Type", - "cashier_receipts_print_type_desc" => "Choose which types of printers the cashiers will use when printing receipts for the patients", - "enable_patient_accounts_feature" => "Enable patient accounts feature", - "inpatient_investigation_billing_mode" => "Inpatient investigation billing mode", - "inpatient_investigation_billing_mode_desc" => "Choose whether to bill a patient only investigations with results or bill any ordered investigations", - "enable_tb_module" => "Enable intensified Tuberculosis Screening module", - "set_inventory_reduction_point" => "Set the point at which hospital inventory should reduce when items have been given to a patient", - "view_item_prices_ordering" => "View item prices when ordering", - "manage_expenses" => "Manage expenses", - "manage_system_language" => "Manage system language", - "enable_sms_desc" => "Send SMS Alerts to patients and Staff about complete investigations, appointments remainders and other general communications", - "enable_performing_unpaid_consultations_desc" => "Enabling this will allow consultations that have not been paid for, to be able to be performed", - "enable_performing_unpaid_review_consultations_desc" => "Enabling this will allow review consultations that have not been paid for, to be able to be performed", - "pay_later" => "Pay Later", - "enable_patient_debt_reminders_desc" => "Whenever a patient has a debt on a previous episode, an alert will be displaced whenever they are paying for other items", - "display_out_of_stock_drugs_message_desc" => "This will show a message to prescribers as to whether a drug is out of stock", - "print_epos_printers" => "Print with E-POS Printers", - "print_full_size_printers" => "Print with full size Printers", - "bill_invs_ordered" => "Bill a patient all investigations that have been ordered", - "bill_invs_results" => "Bill a patient only investigations with results", - "enable_tb_screening" => "Enable Tuberculosis Screening", - "enable_tb_screening_desc" => "Select whether or not to enable tuberculosis screening at the triage", - "disable_tb_triage" => "Disable tuberculosis screening at triage", - "enable_tb_triage" => "Enable tuberculosis screening at triage", - "set_inventory_reduction_point_title" => "Set point of reducing inventory on dispensation to a patient", - "set_inventory_reduction_point_title_desc" => "Select at what point you want to reduce inventory when items have been given to a patient", - "set_inventory_reduction_point_title_one" => "Point of dispensation (e.g reduce stock when pharmacy dispenses, reduce stock when sundries are dispensed etc)", - "set_inventory_reduction_point_title_two" => "Point of patient payment (e.g reduce stock when patient pays for drugs, sundries etc)", - "view_item_prices_ordering_desc" => "Choose whether to allow users to view item prices when ordering e.g drug prices when ordering prescription etc", - "prescriptions" => "Prescriptions", - "enable_eye_module" => "Enable Eye Module", - "allow_issuing_out_stock_drugs" => "Allow issuing out of stock drugs", - "allow_issuing_out_stock_drugs_desc" => "Allow store personnel to issue out drugs that are out of stock", - "allow_dispense_out_stock_drugs_desc" => "Allow pharmacists to dispense drugs that are out of stock", - "allow_dispense_out_stock_drugs" => "Allow dispensing out of stock drugs", - "enable_smart_discharge" => "Enable Smart Discharge Feature", - "select_smart_discharge" => "Select whether or not to enable smart discharge algorithm for inpatient children", - "default_hospital_clinic" => "Default Hospital Clinic", - "default_hospital_clinic_description" => "Select a default clinic that will be assigned to all patients when a new episode is created", - "enable_fingerprint" => "Enable Fingerprint Feature", - "enable_biometric_feature" => "Enable Patients' Biometrics Feature", - "enable_biometric_feature_text" => "Select biometric feature to search for patient", - "enable_fingerprint_text" => "Enable fingerprint feature to search for patient", - "full_detail_receipt_print" => "Print full details on patient receipts", - "full_detail_receipt_print_details" => "Print full details on patient receipts or only print item category and the total cost of items", - "inpatient_settings" => "Inpatient Settings", - "enable_detailed_inpatient_sheet_with_history_results_vitals_and_plan" => "Enable detailed inpatient sheet that has history,results,vitals and examinations, impression and plan e.t.c", - "inpatient_sheet_with_detailed_medical_notes" => "Inpatient sheet with detailed medical notes", - "regular_inpatient_sheet" => "Regular inpatient sheet", - "show_symptoms_on_consultation" => "Show symptoms on the consultation page", - "show_symptoms_on_consultation_desc" => "Show symptoms on the consultation page for doctors to input instead of triage", - "hiv_screening_tool_and_gbv_screening_tool_desc" => "Show Screening Tool and GBV Screening Tool under triage", - "hiv_screening_tool_desc" => "Show HIV Screening Tool under triage", - "gbv_screening_tool_desc" => "Show GBV Screening Tool under triage", - "select_clinic_order_type" => "Patient order on the select clinic listing", - "select_clinic_order_type_desc" => "Choose what order patients will appear on the select clinic listing page", - "select_clinic_order_type_one" => "Order patients by time of arrival with patients with earliest time appearing first", - "select_clinic_order_type_two" => "Order patients by time of arrival with patients with latest time appearing first", - "select_clinic_order_type_three" => "Order patients by outcome with those pending consultation on top, then order by triage grade with red on top, then by patient arrival time with patients with earliest time appearing first", - "limit_number_of_active_users" => "Limit number of active users", - "number_of_active_users_limit" => "Number of active users", - "number_of_active_users_limit_label" => "Number of users that can be active in the system", - "unlimited_users_label" => "Unlimited", - "limited_users_label" => "Limited", - "stock_levels_to_consider" => "Stock Levels To Consider", - "stock_levels_to_consider_desc" => "Stock level to consider when displaying out of stock messages", - "both_store_and_pharmacy_stock" => "Both Store and Pharmacy Stock", - "only_pharmacy_stock" => "Only Pharmacy Stock", - "investigation_orders_settings" => "Investigation Ordering Settings", - "allow_lab_number_editing_desc" => "Allow editing the lab number when receiving lab requests", - "allow_editing_name_of_lab_doctor_desc" => "Allow editing the name of the doctor who performed a lab investigation", - "main_base_refraction_exam" => "Main and Base Refraction Exam Details", - "main_base_refraction_exam_label" => "Enabling this setting implies that Main and Base Refraction Exam Details SHALL NOT be printed on the Episode Summary.", - "stock_adjustment_account_tracking_setting" => "Stock adjustment account tracking setting", - "episode_summary" => "Episode Summary", - "select_episode_summary"=> "Select content to be included when printing the episode summary", - "episode_summary_content" => "Episode Summary Content", - "stock_adjustment_account" => "Stock adjustment account", - "track_stock_adjustment_in_incomes" => "Track stock adjustment account in incomes", - "track_stock_adjustment_in_cost_of_goods" => "Track stock adjustment account in cost of goods", - "show_family_members_on_deposit_receipt" => "Show family members on deposit receipt", - "show_family_members_on_deposit_receipt_label" => "Enable family members on deposit receipt", - "save_integrated_payment_description" => "Choose a patient payment method to attach to an integrated payment solution", - "integrated_payment_solution" => "Integrated Payment Solution", - "patient_payment_method" => "Patient Payment Method", -]; diff --git a/docker/streamline-src/resources/lang/en/heads_of_family.php b/docker/streamline-src/resources/lang/en/heads_of_family.php deleted file mode 100755 index 0cd2a6b6..00000000 --- a/docker/streamline-src/resources/lang/en/heads_of_family.php +++ /dev/null @@ -1,34 +0,0 @@ - "Create Head of Family", - "dashboard" => "Dashboard", - "heads_of_family" => "Heads of Family", - "register" => "Register", - "patient_search" => "Patient Search", - "patient_information" => "Patient Information", - "here" => "here", - "register_patient" => "Register a new patient", - "insurance_group" => "Insurance Group", - "profile_photo" => "Profile Photo", - "submit" => "Submit", - "cancel" => "Cancel", - "edit" => "Edit", - "edit_head_of_family" => "Edit Insurance Head Of Family", - "head_of_family_name" => "Head Of Family Name", - "activate" => "Activate", - "inactive_head_of_family" => "Inactive Heads Of Family", - "are_you_sure" => "Are you sure?", - "contact" => "Contact", - "action" => "Action", - "patient_number" => "Patient Number", - "name" => "Name", - "view_head_of_family" => "View Active Family Heads", - "insurance_status" => "Insurance Status", - "active" => "Active", - "inactive" => "Inactive", - "delete" => "Delete", - "all_family_heads"=>"All Family Heads", - "family_heads_with_active_insurance"=>"Family Heads With Active Insurance", - "family_heads_with_inactive_insurance"=>"Family Heads With Inactive Insurance", -]; diff --git a/docker/streamline-src/resources/lang/en/hmis_reports.php b/docker/streamline-src/resources/lang/en/hmis_reports.php deleted file mode 100755 index a2a8e162..00000000 --- a/docker/streamline-src/resources/lang/en/hmis_reports.php +++ /dev/null @@ -1,335 +0,0 @@ - "Anaesthesia Report", - "dashboard" => "Dashboard", - "memorised_reports" => "Memorised Reports", - "date" => "Date", - "last_24_hours" => "Last 24 hours", - "custom_date" => "Custom Date", - "custom_range" => "Custom Range", - "from" => "From", - "to" => "To", - "diagnosis" => "Diagnosis", - "surgical_operation" => "Surgical operation", - "anaesthetist" => "Anaesthetist", - "type_of_anaesthesia" => "Type of anaesthesia", - "search" => "Search", - "number" => "Number", - "names" => "Names", - "diagnoses" => "Diagnoses", - "operation" => "Operation", - "surgeon" => "Surgeon", - "ventilated" => "Ventilated", - "transfusion" => "Transfusion", - "alert_comment" => "Alert/comment", - "alert_comment_notes" => "Alert/Comment/Notes", - "view_details" => "View details", - "obese" => "Obese", - "overweight" => "Overweight", - "normal" => "Normal", - "underweight" => "Underweight", - "severely_underweight" => "Severely Underweight", - "years" => "Years", - "bmi" => "BODY MASS INDEX (BMI)", - "female" => "Female", - "male" => "Male", - "bmi_report" => "BODY MASS INDEX REPORT", - "showing_results_from" => "Showing results from", - "patients" => "patients", - "bmi_report_details" => "BMI REPORT DETAILS", - "patient_number" => "Patient Number", - "full_names" => "Full Names", - "gender" => "Gender", - "age" => "Age", - "phone" => "Phone", - "select" => "Select", - "no_records_found" => "No records found", - "presumptive_tb" => "Presumptive Multi Drug Resistance (MDR) TB", - "yellow_fever" => "Yellow Fever", - "typhoid_fever" => "Typhoid Fever", - "plague" => "Plague", - "other_viral_fevers" => "Other Viral Hemorrhagic Fevers", - "neonatal_tetanus" => "Neonatal tetanus", - "measles" => "Measles", - "guinea_worm" => "Guinea Worm", - "cholera" => "Cholera", - "bacteria_meningitis" => "Bacteria Meningitis", - "animal_bites" => "Animal Bites (suspected rabies)", - "adverse_immun" => "Adverse Events Following Immunization", - "acute_flaccid" => "Acute Flaccid Paralysis", - "sari" => "Severe Acute Respiratory Infection (SARI)", - "dysentery" => "Dysentery", - "malaria" => "Malaria(total diagnosed)", - "cases_this_week" => "Cases This Week", - "code" => "Code", - "cases" => "CASES", - "days_drugs_outta_stock" => "Days When Drugs Were Out Of Stock Report", - "view_investigation_specimen_report" => "View Investigation Specimen Report", - "drugs_outta_stock_report" => "Drugs Out Of Stock Reports", - "drug_name" => "Drug Name", - "num_days" => "Number of Days", - "no_drugs_outta_period" => "No drugs were out of stock in this period", - "deaths" => "DEATHS", - "deaths_this_week" => "Deaths This Week", - "streamline_reports" => "Streamline Reports", - "diagnosis_report" => "Diagnosis Report", - "totals" => "Totals", - "diagnosis_name" => "Diagnosis Name", - "symptom_name" => "Symptom Name", - "clear_search" => "Clear search", - "search_criteria" => "Search criteria", - "diagnosis_report_details" => "Diagnosis Report Details", - "disease_prevalence" => "Disease Prevalence", - "select_diagnosis" => "Select Diagnosis", - "submit" => "Submit", - "cancel" => "Cancel", - "disease_prevalence_time" => "DISEASE PREVALENCE OVER A PERIOD OF TIME", - "total" => "Total", - "drug_consumption_analysis" => "Drug Consumption Analysis", - "total_profit_value" => "Total Profit Value", - "total_sell_value" => "Total Sell Value", - "total_cost_value" => "Total Cost Value", - "profit_margin" => "Profit Margin", - "profit" => "Profit", - "sell_value" => "Sell Value", - "cost_value" => "Cost Value", - "consumption" => "Consumption", - "drug_consumption_report" => "Drug Consumption Report", - "total_stock_value" => "Total Stock Value", - "total_buying_price" => "Total Buying Price", - "pharmacy_stock" => "Pharmacy Stock", - "store_stock" => "Store Stock", - "total_stock" => "Total Stock", - "stock_value" => "Stock Value", - "drug_stock_levels_report" => "Drug Stock Levels Report", - "days_outta_stock" => "DAY(S) OUT OF STOCK", - "name_of_drug_items" => "NAME OF DRUG ITEMS", - "drugs_suffered_stock_out" => "OTHER DRUGS, VACCINES, CONTRACEPTIVES OR SUPPLIES THAT SUFFERED A STOCK OUT DURING THE MONTH", - "other_programmatic_items" => "OTHER PROGRAMMATIC ITEMS", - "hssip_indicator_items" => "HSSIP INDICATOR ITEMS", - "stock_on_hand" => "Stock on hand", - "quantity_consumed_units" => "Quantity Consumed (units)", - "unit" => "UNIT", - "essential_meds_supplies" => "ESSENTIAL MEDICINES AND HEALTH SUPPLIES", - "stock_status" => "STOCK STATUS (Out of stock means there was NONE left in your health unit STORE)", - "primary_data_sources" => "The primary data sources for this sub-section are the Stock books and Stock Cards", - "search_to_view_results" => "search to view results", - "date_of_report" => "Date of report", - "reporting_period" => "REPORTING PERIOD", - "date_opened" => "Date Opened", - "date_closed" => "Date Closed", - "health_sub_district" => "HEALTH SUB-DISTRICT", - "level" => "LEVEL", - "week_no" => "Week Number", - "district" => "District", - "parish" => "Parish", - "subcounty" => "Sub County", - "county" => "County", - "health_unit" => "HEALTH UNIT", - "health_unit_code" => "HEALTH UNIT CODE", - "hmis_105" => "HMIS FORM 105: HEALTH UNIT OUTPATIENT MONTHLY REPORT", - "print" => "Print", - "essential_medicines_report" => "Essential medicines report", - "expired_drugs_report" => "Expired Drugs Report", - "fp_clinic" => "FP Clinic", - "counseling" => "Counseling", - "family_planning_report" => "Family Planning Report", - "family_planning_report_details" => "FAMILY PLANNING REPORT DETAILS", - "investigations_report" => "Investigations Report", - "test_performed" => "Tests Performed", - "investigation_name" => "Investigation Name", - "investigations_report_details" => "Investigations Report Details", - "treatment_report" => "Treatment Report", - "quantity_dispensed" => "Quantity Dispensed", - "treatment_report_details" => "Treatment Report Details", - "hmis_reports" => "HMIS Reports", - "risky_behaviors" => "Risky Behaviors", - "surgical_procedures" => "Surgical Procedures", - "special_services" => "Utilization of Special Services", - "radiology"=>"Radiology and Imaging Section", - "admissions_deaths"=>"Admissions and Deaths by Diagnosis", - "monthly_outpatient_diagnoses" => "Outpatient Diagnoses", - "antenatal" => "Antenatal", - "mental_health"=>"Mental Health", - "other_sections"=>"Risk Behaviour, Tuberculosis and Nutrition Inpatient Services", - "hmis_108" => "HMIS 108 - Health Unit Inpatient Monthly Report", - "hmis_033b_title" => "HMIS 033b: Health Unit Weekly Epidemiological Surveillance Report", - "hmis_031" => "HMIS FORM 031 - OUTPATIENT REGISTER", - "hmis_002" => "HMIS FORM 002 - OPD OUTPATIENT REGISTER", - "new" => "New", - "hmis_106a" => "HMIS FORM 106a - HEALTH UNIT QUARTERLY REPORT", - "hmis_weekly" => "HMIS FORM - WEEKLY EPIDEMIOLOGICAL SURVEILLANCE", - "hmis_essential" => "HMIS FORM - ESSENTIAL MEDICINES and HEALTH SUPPLIES", - "follow_up_drop_out_report" => "Follow Up Drop Out Rate Report", - "follow_up_reports" => "Follow Up Reports", - "patient_name" => "Patient Name", - "date_created" => "Date Created", - "follow_up_date" => "Follow Up Date", - "patients_to_follow_up" => "Patients To Follow Up", - "patients_lost" => "Patients Lost", - "patients_followed_up" => "Patients Followed Up", - "drop_out_rate" => "Drop Out Rate", - "days_psych_drugs_outta_stock" => "Number of days psychotropic drugs were out of stock", - "mental_health_patients_lost_follow" => "Patients receiving mental health care lost to follow up", - "diagnosed_patients_treated" => "Diagnosed patients who received treatment", - "persons_taking_psych_drugs" => "Persons taking psychotropic drugs", - "severe_mental_patients" => "Patients diagnosed with severe mental disorders", - "mental_health_reports" => "Mental Health Reports", - "patients_lost_follow_up" => "Patients Lost To Follow Up", - "ward_readmittance_report" => "Ward re-admittance report", - "ward_deposits_report" => "Ward deposits report", - "surgeries_report" => "Surgeries report", - "rdt_report" => "RDT Report", - "charge_book" => "Charge book", - "streamline_outpatient_report" => "Streamline out-patient Report", - "memorised_streamline_reports" => "Memorised Stre@mline Reports", - "negative" => "Negative", - "positive" => "Positive", - "children" => "Children", - "adults" => "Adults", - "reports" => "Reports", - "results" => "Results", - "select_report_category" => "Select Report category", - "laboratory_tests" => "Investigations", - "treatment" => "Treatment", - "symptoms" => "Symptoms", - "select_drug_issued" => "Select Drug Issued", - "select_test_name" => "Select Test Name", - "village" => "Village", - "all" => "All", - "inpatient" => "Inpatient", - "outpatient" => "Outpatient", - "inpatient_outpatient" => "Inpatient/Outpatient", - "from_age" => "From Age", - "to_age" => "To Age", - "start_date" => "Start date", - "end_date" => "End date", - "total_cost" => "Total Costs", - "sundries_costs" => "Sundries Costs", - "procedure_costs" => "Procedure Costs", - "treatment_costs" => "Treatment Costs", - "investigation_costs" => "Investigation Costs", - "other_services_costs" => "Other Services Costs", - "consultation_costs" => "Consultation Costs", - "total_admitted" => "Total Admitted", - "total_seen" => "Total Seen", - "children_seen" => "Children Seen (<=12yrs)", - "male_children_seen" => "Male Children Seen (<=12yrs)", - "female_children_seen" => "Female Children Seen (<=12yrs)", - "adults_seen" => "Adults Seen (>12yrs)", - "males_seen" => "Males Seen (>12yrs)", - "females_seen" => "Females Seen (>12yrs)", - "clinic" => "Clinic", - "opd" => "OPD", - "insured_patients" => "Insured Patients", - "all_patients" => "All Patients", - "patient_details" => "Patient details", - "streamline_outpatient_report_details" => "Streamline outpatient report details", - "print_receipt" => "Print receipt", - "patient" => "Patient", - "patient_list" => "Streamline Patient List", - "outpatient_list" => "Streamline Outpatient List", - "staff" => "Staff", - "discount_if_any" => "Discount If Any", - "amount" => "Amount", - "item_name" => "Item Name", - "receipt_number" => "Receipt Number", - "income_received_from" => "Income received from", - "outcome" => "Outcome", - "wound" => "Wound", - "theatre" => "Theatre", - "hidden_date" => "Hidden date", - "surgery_report" => "Surgery Report", - "ward" => "Ward", - "primary_diagnosis" => "Primary Diagnosis", - "date_of_discharge" => "Date of Discharge", - "date_of_readmission" => "Date of readmission", - "comments" => "Comments", - "hmis_033b" => "WEEKLY EPIDEMIOLOGICAL SURVEILLANCE HMIS FORM", - "dose_combine" => "DC is Dose Combination", - "hiv_kits" => "HIV Screening Test Kits", - "hiv_kits_balance" => "HIV TESTING KITS & eMTCT Drugs - STOCK BALANCE", - "measles_vaccine" => "Measles Vaccine", - "sachets" => "Sachets", - "tables" => "Tables", - "tracer_medicines" => "TRACER MEDICINES - STOCK BALANCE", - "micro_positive_treated" => "Microscopy positive treated", - "micro_negative_treated" => "Microscopy negative treated", - "rdt_positive_treated" => "RDT Positive treated", - "rdt_negative_treated" => "RDT Negative treated", - "not_tested_treated" => "Not tested cases treated", - "micro_positive" => "Microscopy positive", - "micro_tested" => "Microscopy tested", - "rdt_positive" => "RDT positive", - "rdt_tested" => "RDT tested", - "suspected_malaria" => "Suspected Malaria (fever)", - "summary_malaria_tested" => "SUMMARY OF MALARIA CASES TESTED AND TREATED", - "missed_appointments" => "eMTCT Missed appointments", - "expected_mothers_appt" => "Expected eMTCT Mothers on appt", - "opd_total_attendance" => "OPD Total Attendance", - "opd_new_attendance" => "OPD New Attendees", - "opd_summary" => "OPD AND eMTCT SUMMARY", - "other_conditions_cases" => "OTHER CONDITIONS (IF ANY): CASES", - "name_1st_condition" => "Name Of 1st Condition", - "name_2nd_condition" => "Name Of 2nd Condition", - "name_3rd_condition" => "Name Of 3rd Condition", - "other_conditions_deaths" => "OTHER CONDITIONS (IF ANY): DEATH", - "weekly_form_details" => "WEEKLY EPIDEMIOLOGICAL SURVEILLANCE FORM DETAILS", - "details" => "Details", - "action" => "Action", - "consultation_comments" => "Consultation Comments", - "clinic_allocation" => "Clinic Allocation", - "other_diagnoses" => "Other Diagnoses", - "month" => "Month", - "year" => "Year", - "maternal_and_child_health_services" => "Maternal and Child Health Services", - "census_info" => "CENSUS INFORMATION: SEE INSTRUCTIONS FOR DEFINITIONS", - "report_type" => "Report Type", - "national" => "National", - "refugee" => "Refugee", - "foreigner" => "Foreigner", - "outpatient_attendance" => "OUTPATIENT ATTENDANCE", - "outpatient_referrals" => "OUTPATIENT REFERRALS", - "outpatient_diagnoses" => "OUTPATIENT DIAGNOSES", - "category" => "Category", - "date_of_birth" => "Date Of Birth", - "opd_attendance" => "OPD Attendance", - "census_drill" => "Census Information", - "hmis_105_report" => "HMIS 105 Report", - "hmis_108_report" => "HMIS 108 Report", - "hmis_033_report" => "HMIS 033b Report", - "hmis_108_report_census" => "HMIS 108 Report - Census and Referral Information", - "hmis_108_report_surgical_procedures" => "HMIS 108 Report - Surgical Procedures", - "hmis_108_report_radiology" => "HMIS 108 Report - Radiology and Imaging Section", - "hmis_108_report_special_services" => "HMIS 108 Report - Utilization of Special Services", - "hmis_108_report_admissions_deaths" => "HMIS 108 Report - Admissions and Deaths by Diagnosis", - "hmis_108_report_mental_health" => "HMIS 108 Report - Mental Health", - "hmis_108_report_other_sections" => "HMIS 108 Report - Risk Behaviour, Tuberculosis and Nutrition Inpatient Services", - "select_report_type" => "Select Report Type", - "selected_report_type" => "Selected Report Type", - "tb_screening_report" => "TB Screening Report", - "tb_screening_report_details" => "TB Screening Report Details", - "procedures_report" => "Procedures Report", - "procedures" => "Procedures", - "performed_by" => "Performed By", - "done_from" => "Done From", - "done_status" => "Done Status", - "view_patient" => "View Patient", - "performed_services_report" => "Performed Services Report", - "services" => "Services", - "service_price" => "Service Price", - "staff_fee" => "Staff Fee", - "quantity" => "Quantity", - "unit_price" => "Unit Price", - "maternity_report" => "Maternity Report", - "modes_of_delivery" => "Modes of delivery", - "maternity_report_details" => "Maternity report details", - "investigation_category" => "Investigation Category", - "investigation_super_category" => "Investigation Super Category", - "number_test_performed" => "Number of Test Performed", - "investigation_performed_at" => "Investigation Performed At", - "today" => "Today", - "next_of_kin" => "Next of Kin", - "custom_field" => "Custom Field" -]; diff --git a/docker/streamline-src/resources/lang/en/home.php b/docker/streamline-src/resources/lang/en/home.php deleted file mode 100755 index 23e3441d..00000000 --- a/docker/streamline-src/resources/lang/en/home.php +++ /dev/null @@ -1,15 +0,0 @@ - "Please ensure that all patient data is confidential", - "dashboard" => "Dashboard", - "reports_dashboard" => "Reports Dashboard", - "hospital_resources" => "Hospital resources", - "logout_warning" => "Logout at the end of your session", - "message_board" => "Message Board", - "new_patient" => "New Patient", - "reports" => "Reports", - "select_clinic" => "Select Clinic", - "select_patient" => "Select Patient", - "select_ward" => "Select Ward", - 'renew_subscription'=>'Please Renew your Stre@mline subscription', -]; diff --git a/docker/streamline-src/resources/lang/en/hospital_information.php b/docker/streamline-src/resources/lang/en/hospital_information.php deleted file mode 100755 index b5144e05..00000000 --- a/docker/streamline-src/resources/lang/en/hospital_information.php +++ /dev/null @@ -1,35 +0,0 @@ - "Address", - "app_name" => "App name", - "app_version" => "App version", - "cancel" => "Cancel", - "code" => "Code", - "country" => "Country", - "dashboard" => "Dashboard", - "district" => "District", - "edit" => "Edit", - "email" => "Email", - "health_sub_district" => "Health sub district", - "hospital_information" => "Hospital information", - "hospital_name" => "Hospital name", - "level" => "Level", - "next" => "Next", - "of" => "of", - "parish" => "Parish", - "patient_number_abbr" => "Patient Number Abbreviation", - "patient_number_year_prefix" => "Patient Number Year Prefix", - "enabled" => "Enabled", - "disabled" => "Disabled", - "phone_number" => "Phone number", - "setup" => "setup", - "step" => "Step", - "sub_county" => "Sub County", - "submit" => "Submit", - "system_logo" => "System logo", - "stamp" => "Hospital Stamp", - "lab_stamp" => "Laboratory Stamp", - "website" => "Website", - "print_header" => "Print banner to appear on top of PDF print-outs", - "print_footer" => "Print Footer To Appear At The Bottom Of PDF print-outs" -]; diff --git a/docker/streamline-src/resources/lang/en/inpatient.php b/docker/streamline-src/resources/lang/en/inpatient.php deleted file mode 100755 index 86b2548c..00000000 --- a/docker/streamline-src/resources/lang/en/inpatient.php +++ /dev/null @@ -1,387 +0,0 @@ - "In-patient sheet", - "dashboard" => "Dashboard", - "patients" => "Patients", - "inpatient_warning" => "Please ensure cannulas, giving sets, NGT's, catheters & bags, dressings etc are properly recorded under Sundries. Also that all Stat drugs and IV fluids have been included plus imaging tests & procedures. Thanks.", - "bed_category_warning" => "Please select a bed category for this patient to enable billing", - "admitted" => "Admitted", - "died_on" => "Date Patient Died", - "discharged" => "Discharged", - "specialty" => "Specialty", - "residence" => "Residence", - "bed_category" => "Bed category", - "bed_no" => "Bed Number", - "still_admitted" => "Still admitted", - "primary_diagnosis" => "PRIMARY DIAGNOSIS", - "prompt" => "PROMPT", - "references" => "REFERENCES", - "other_diagnosis" => "OTHER DIAGNOSIS", - "add_row" => "Add row", - "delete_row" => "Delete row", - "patient_documents" => "Patient Documents", - "no_documents_available" => "No patient documents available", - "add_new" => "Add new", - "symptoms_triage" => "Symptoms from triage", - "symptoms" => "Symptoms", - "duration" => "Duration", - "no_symptoms_triage" => "No symptoms available from triage", - "name" => "Name", - "value" => "Value", - "comment" => "Comment", - "no_opd_invs" => "No investigations ordered from OPD", - "no_ward_invs" => "No investigations ordered from ward", - "from" => "From", - "to" => "To", - "date_of_transfer" => "Date of transfer", - "complete_ward_transfer" => "Complete ward transfer", - "historical_investigations" => "Historical Investigations", - "order_investigations" => "Order investigations", - "procedures" => "Procedures", - "add_procedure" => "Add procedure", - "sundries" => "Sundries", - "days" => "days", - "remove" => "Remove", - "add_sundry" => "Add sundry", - "extras" => "Extras", - "cost" => "Cost", - "add_extras" => "Add extras", - "consultation_and_services" => "Consultation and Services", - "quantity" => "Quantity", - "add_service" => "Add Service", - "ward_prescription" => "Ward Prescription", - "dose" => "Dose", - "status" => "Status", - "ordered_on" => "Ordered on", - "by" => "by", - "dispensed" => "Dispensed", - "pending_dispensing" => "Pending dispensing", - "no_ward_drugs" => "No ward prescription ordered", - "order_ward_presc" => "Order ward prescriptions", - "ward_treatments" => "Ward Treatments", - "drug" => "Drug", - "quantity_given" => "Quantity given", - "quantity_given_so_far" => "Quantity given so far", - "quantity_to_give" => "Quantity to give", - "add_more" => "Add more", - "tta" => "To-Take-Home", - "no_tta_ordered" => "No To-Take-Home Ordered", - "order_tta" => "Order for To-Take-Home", - "comments" => "Comments", - "outcome" => "Outcome", - "when" => "When?", - "where" => "Where?", - "update" => "Update", - "referred_to" => "Referred to?", - "inpatient_billing" => "In-Patient Billing", - "save_inpatient_sheet" => "Save Inpatient Sheet", - "bed_number_saved" => "Bed number saved", - "error_msg" => "Oops, an error occurred", - "bed_category_saved" => "Bed Category Saved", - "services_warning" => "You cannot add more than 4 services", - "patient_referral_warning" => "Please fill in where the patient was referred to", - 'death_date_warning' => "Please add date when the Patient died", - "follow_up_date_warning" => "Please fill in the follow up date", - "discharge_date_warning" => "Please fill in the discharge date", - "drugs_warning" => "You cannot add more than 12 drugs", - "extras_warning" => "You cannot add more than 4 extras", - "sundries_warning" => "You cannot add more than 4 sundries", - "procedures_warning" => "You cannot add more than 4 procedures", - "delete_rows_warning" => "Cannot delete all the rows", - "ward_transfer_complete" => "Ward transfer completed successfully", - "select_transfer_date" => "Select the date of transfer.", - "select_new_ward" => "Select the new ward.", - "inpatient_sheet_history" => "In-patient sheet history", - "no_diagnosis_recorded" => "No other diagnoses recorded", - "opd_invs" => "OPD Investigations", - "ward_invs" => "Ward Investigations", - "internal_patient_transfer" => "Internal Patient Transfer", - "to_another_ward" => "to another ward", - "transfer" => "Transfer", - "no_sundries_recorded" => "No sundries recorded during patient stay", - "no_services_recorded" => "No services recorded during patient stay", - "no_extras_recorded" => "No extras recorded during hospital stay", - "inpatient_record_updated" => "Inpatient Record Last Updated By", - "discharged_by" => "Discharged By", - "on" => "on", - "maternity_admission" => "Maternity admission", - "modify_inpatient_info" => "Modify Inpatient Information", - "incoming_patient_bills" => "Incoming patient bills", - "finance_home" => "Finance Home", - "time" => "Time", - "patient_number" => "Patient Number", - "patient_names" => "Patient Names", - "category" => "Category", - "payment" => "Payment", - "action" => "Action", - "paid" => "Paid", - "not_paid" => "Not Paid", - "select" => "Select", - "no_records_found" => "No records found", - "price_list_category" => "Price List Category", - "default_pricing" => "Default Pricing", - "apply_changes" => "Apply Changes", - "select_bed_category_warning" => "Please select a bed category for this patient to enable billing", - "discharged_on" => "Discharged On", - "discount" => "Discount", - "patient_to_pay" => "Patient To Pay", - "insurance_to_pay" => "CHI To Pay", - "investigations" => "Investigations", - "no_investigations_ordered" => "No new investigations ordered", - "treatments" => "Treatments", - "treatment" => "Treatment", - "price" => "Price", - "subtotal" => "Subtotal", - "no_treatments_ordered" => "No treatment ordered", - "daily_cost_for" => "Daily Cost For", - "total_cost" => "Total Cost", - "no_procedures_ordered" => "No procedures ordered", - "anaesthetics" => "Anaesthetics", - "drug_name" => "Drug Name", - "total_amount_to_pay" => "Total Amount To Pay", - "patient_to_pay_total" => "Patient To Pay Total", - "insurance_to_pay_total" => "CHI To Pay Total", - "deposits_received" => "Deposits Received", - "deposit_receipt_number" => "Deposit receipt number", - "date_received" => "Date received", - "amount" => "Amount", - "no_deposits_made" => "No deposits made", - "total_deposits_made" => "Total Deposits Made", - "patient_balance_to_pay" => "Patient Balance To Pay", - "bill_checked_by" => "Bill Checked By", - "print" => "Print", - "save_bill" => "Save Bill", - "allow_pop_ups" => "Please allow pop-ups for this system", - "error_occurred" => "An error occurred. Contact the system administrator", - "age" => "Age", - "gender" => "Gender", - "male" => "Male", - "female" => "Female", - "admission_fees" => "Admission Fees", - "infant" => "Infant", - "child" => "Child", - "adult" => "Adult", - "to_day" => "To Pay", - "initial_total_bill" => "Initial Total Bill", - "invoice_number" => "Invoice Number", - "patient_category" => "Patient Category", - "invoices_created" => "Invoices Created", - "created_on" => "Created On", - "invoice_status" => "Invoice Status", - "invoice_paid" => "Invoice Paid", - "partially_paid" => "Partially Paid", - "invoice_not_cleared" => "Invoice Not Cleared", - "total_invoices_made" => "Total Invoices Amount", - "staff_in_charge" => "Staff in Charge", - "ward" => "Ward", - "Amount" => "Amount", - "ward_discount_amount" => "Ward Discount Amount", - "total_ward_discount_amount" => "Total Ward Discount Amount", - "no_invoices_made" => "No Invoices made", - "no_ward_discounts_given" => "No ward discounts given", - "results" => "Results", - "unit_cost" => "Unit Cost", - "performed_by" => "Performed by", - "add_extra" => "Add Extra", - "staff_fee" => "Staff fee", - "hospital_fee" => "Hospital fee", - "on_this_bed_from" => "On this bed from", - "on_this_bed_to" => "On this bed to", - "bed_admission" => "Bed Admission", - "bed_admission_history" => "Bed Admission History", - "accomodation" => "Accommodation", - "bed_rate" => "Bed Rate", - "normal_range" => "Normal Range", - "unpaid_opd_treatment" => "Unpaid OPD treatment", - "unpaid_opd_sundries" => "Unpaid OPD sundries", - "unpaid_opd_procedures" => "Unpaid OPD procedures", - "unpaid_opd_services" => "Unpaid OPD services", - "opd_prescription" => "Prescription at OPD", - "opd_ordered_procedures" => "Procedures ordered at OPD", - "opd_ordered_services" => "Services ordered at OPD", - "procedure" => "Procedure", - "service" => "Service", - "performed" => "Performed", - "payment_status" => "Payment status", - "pay_bill" => "Pay Bill", - "current_price" => "Current Price", - "incoming_inpatient_bills" => "Incoming In-Patient Bills", - "wards" => "Wards", - "inpatient_status" => "Inpatient Status", - "date" => "Date", - "today" => "Today", - "custom_date_range" => "Custom Date Range", - "custom_date" => "Custom Date", - "yesterday" => "Yesterday", - "submit" => "Submit", - "admission_day_ward_discharge" => "Admission Date/Days on Ward/Discharge date", - "admitted_by" => "Admitted By", - "total_saved_bill" => "Total Saved bill", - "amount_paid_and_invoiced" => "Amount paid and invoiced", - "balance" => "Balance", - "bill_last_updated" => "Bill Last Updated", - "days_on_ward" => "days on ward", - "total" => "Total", - "cancel" => "Cancel", - "issue_pass" => "Issue Pass", - "expire_after_how_many_days" => "Expire after how many days", - "no_patient_billing_generated" => "No patient billing generated for this patient", - "no_deposits_made_yet" => "No deposits made yet", - "deposits_made" => "Deposits Made", - "received_on" => "Received On", - "receipt_number" => "Receipt Number", - "received_by" => "Received By", - "amount_paid" => "Amount Paid", - "pay_later" => "Pay Later", - "patient_information" => "Patient Information", - "no" => "", - "yes" => "Yes", - "inpatient_attendant_pass" => "Inpatient Attendant Pass", - "issued_by" => "Issued By", - "patient_pass_expires" => "PATIENT PASS EXPIRES", - "department" => "Department", - "debt_plan_payments" => "Debt Plan Payments", - "services_total" => "Services total", - "procedures_total_chi" => "Procedures total (CHI)", - "procedures_total" => "Procedures total", - "investigation_total_chi" => "Investigation total (CHI)", - "investigation_total" => "Investigation total", - "accomodation_total" => "Accommodation total", - "accommodation_total_chi" => "Accommodation total (CHI)", - "extras_total" => "Extras total", - "sundries_total_chi" => "Sundries total (CHI)", - "sundries_total" => "Sundries total", - "opd_treatment_chi" => "OPD Treatment (CHI)", - "opd_treatment" => "OPD Treatment", - "treatment_total_chi" => "Treatment total (CHI)", - "treatment_total" => "Treatment total", - "tta_total_chi" => "To take home drugs total (CHI)", - "tta_total" => "To take home drugs total", - "inpatient_bill_summary" => "Inpatient Bill Summary", - "services_total_chi" => "Services total (CHI)", - "authenticated_by" => "Authenticated by", - "bed" => "Bed", - "stamp" => "Hospital Stamp", - "not_covered_by" => "Not covered by", - "purchased_from_elsewhere" => "Will Be Purchased From Elsewhere", - "inpatient_bill_details" => "Inpatient Bill Details", - "inpatient_consultation_and_services_details" => "Inpatient Consultation and Services Details", - "inpatient_extras_details" => "Inpatient Extras Details", - "total_cost_of_investigations" => "Total cost of investigations", - "recorded_by" => "Recorded By", - "inpatient_procedures_details" => "Inpatient Procedures Details", - "nurse_progress_notes" => "Nurse's Progress Notes", - "doctor_progress_notes" => "Doctor's Progress Notes", - "inpatient_progress_notes_details" => "Inpatient Progress Notes Details", - "total_cost_of_procedures" => "Total cost of procedures", - "printed_by" => "Printed By", - "referred_by" => "Referred By", - "referral_notes" => "Referral Notes", - "treatment_on_discharge" => "Treatment on discharge", - "refer_to_investigation_report" => "Refer to investigation report", - "investigations_done" => "Investigations done", - "clinical_summary" => "Clinical Summary", - "secondary_diagnosis" => "Secondary Diagnosis", - "inpatient_referral_notes" => "INPATIENT REFERRAL NOTE", - "inpatient_treatment_details" => "Inpatient Treatment Details", - "inpatient_sundries_details" => "Inpatient Sundries Details", - "view_bed_admission_details" => "View bed admission details", - "view_investigation_details" => "View investigation details", - "view_ward_treatment_details" => "View ward treatment details", - "treatments_not_confirmed" => "Treatments have not yet been confirmed in pharmacy", - "view_sundries_consumption_details" => "View sundries consumption details", - "view_consultation_and_services_details" => "View consultation and services details", - "view_procedures_details" => "View procedures details", - "ordered_by" => "Ordered By", - "view_extras_consumption_details" => "View extras consumption details", - "total_debt_plan_payments" => "Total Debt Plan Payments", - "print_bIll_summary" => "Print BIll Summary", - "print_detailed_bill" => "Print Detailed Bill", - "ward_dispensation_details_of" => "Ward Dispensation Details of", - "unit_price" => "Unit Price", - "sundries_consumption" => "Sundries consumption", - "extras_consumption" => "Extras consumption", - "procedure_details" => "Procedure details", - "bed_details" => "Bed details", - "total_cost_of_ward_stay" => "Total cost of ward stay", - "investigations_details" => "Investigations details", - "view_results" => "View Results", - "item" => "Item", - "item_cost" => "Item Cost", - "staff_fees" => "Staff fees", - "hospital_fees" => "Hospital fees", - "nurse_comments" => "Nurse's Comments", - "doctor_comments" => "Doctor's Comments", - "close" => "Close", - "investigation_results" => "Investigation Results", - "discharge_summary" => "Discharge Summary", - "view_all_comments" => "View all Comments", - "delete_notes" => "Delete notes", - "print_notes" => "Print Notes", - "theater_surgery_notes" => "Theater Surgery Notes", - "prescribed_by" => "Prescribed by", - "view_consultation_details" => "View consultation & services details", - "note_total_procedure_cost" => "Note: The total cost of the procedure will be hospital fee + staff fee (professional fee)", - "add_bed" => "Add Bed", - "select_date" => "Select Date", - "still_here" => "Still here", - "view_referral_notes" => "View referral notes", - "progress_notes" => "Progress Notes", - "at" => "At", - "printed_by_signature" => "Printed By Signature", - "doctor_to_see" => "Doctor to see", - "clinic" => "Clinic", - "appointment_date" => "Appointment date", - "appointment_details" => "Appointment Details", - "print_surgery_report" => "Print Surgery Report", - "re_calculate_bill" => "Re-Calculate Bill", - "continue" => "Continue", - "consumption_on_dependant_account" => "Consumption on dependant account", - "total_dependant_account_amount" => "Total Dependant Account Amount", - "dependant_consumptions" => "Dependant Consumptions", - "dependant_of" => "Dependant of: ", - "inpatient_consumption_on_dependant_account" => "Inpatient consumption on dependant account", - "opd_consultation_comments" => "OPD Consultation Comments", - "history" => "History", - "anc_consultation_comments" => "ANC Comments (Latest Visit)", - "bill_saving_trail" => "Bill Save History", - "view_all_histories" => "View all histories", - "view_all_results" => "View all results", - "view_all_vitals_and_exmination" => "View all vitals and examination", - "view_all_impressions" => "View all impressions", - "view_all_plans" => "View all plans", - "vitals_and_examination" => "Vitals and examination", - "vitals_and_examinations" => "Vitals and examinations", - "plan" => "Plan", - "impression" => "Impression", - "impressions" => "Impressions", - "print_history" => "Print History", - "print_results" => "Print Results", - "print_vitals_and_examinations" => "Print Vital and Examinations", - "print_impression" => "Print Impression", - "print_plan" => "Print Plans", - "inpatient_details" => "Inpatient details", - "authorize_bill" => "Authorise Bill", - "bill_authorized_by" => "Bill Authorised By", - "print_inpatient_detailed_notes" => "Print inpatient detailed notes", - "inpatient_detailed_notes" => "Inpatient detailed notes", - "delete" => "Delete", - "view_all_notes" => "View all notes", - "insurance_unit_price" => "CHI Unit Price", - "delivery_record_details" => "Delivery record details", - "foetal_number" => "Foetal number", - "view_details" => "View details", - "select_baby_home" => "Select baby", - "save_close_bill" => "Save & Close Bill", - "bed_rate_warning" => "If cost is structured, this value is cost of first night otherwise it is cost per night", - "quantity_dispensed" => "Quantity Dispensed", - "quantity_given_tooltip" => "Contains quantity ticked on the treatment sheet as given", - "quantity_dispensed_tooltip" => "Contains what Pharmacy has dispensed + the figures entered in quantity to give", - "ward_stock_dispensed" => "Ward stock dispensed", - "quantity_administered" => "Quantity Administered", - "bill_closed_by" => "Bill Closed By", - "open_bill" => "Modify Inpatient Bill", - "drug_stopped" => "Drug stopped", - "not_given" => "Not Given", -]; diff --git a/docker/streamline-src/resources/lang/en/insurance_groups.php b/docker/streamline-src/resources/lang/en/insurance_groups.php deleted file mode 100755 index 06e060a0..00000000 --- a/docker/streamline-src/resources/lang/en/insurance_groups.php +++ /dev/null @@ -1,44 +0,0 @@ - "Dashboard", - "view" => "View", - "export_data_to_csv_and_excel" => "Export data to Copy, CSV, Excel, PDF & Print", - "create_insurance_member" => "Create Insurance Member", - "insurance_members" => "Insurance Members", - "register" => "Register", - "new_insurance_group" => "New Insurance Group", - "insurance_groups" => "Insurance Groups", - "group_name" => "Group Name", - "contact_name" => "Contact Name", - "contact_phone_number" => "Contact Phone Number", - "submit" => "Submit", - "cancel" => "Cancel", - "edit_insurance_group" => "Edit Insurance Group", - "edit" => "Edit", - "contact_number" => "Contact Number", - "inactive_insurance_groups" => "Inactive Insurance Groups", - "activate" => "Activate", - "action" => "Action", - "are_you_sure" => "Are you sure ?", - "start_date" => "Start Date", - "end_date" => "End date", - "insurance_status" => "Insurance Status", - "active" => "Active", - "inactive" => "Inactive", - "details" => "Details", - "delete" => "Delete", - "insurance_group_details" => "Insurance Group Details", - "group_details" => "Group Details", - "number_of_members" => "Number of members", - "insurance_details" => "Insurance Details", - "group_members_details" => "Group Members' Details", - "patient_number" => "Patient Number", - "full_names" => "Full Names", - "family_head" => "Family Head", - "no_members_in_this_group" => "No members in this group", - "create_insurance_group" => "Create Insurance Group", - "view_insurance_groups" => "View Insurance groups", - "view_inactive_groups" => "View Inactive Groups", - "delete_family" => "Are you sure you want to DELETE this Family?", -]; \ No newline at end of file diff --git a/docker/streamline-src/resources/lang/en/insurance_members.php b/docker/streamline-src/resources/lang/en/insurance_members.php deleted file mode 100755 index 35b3dc4a..00000000 --- a/docker/streamline-src/resources/lang/en/insurance_members.php +++ /dev/null @@ -1,127 +0,0 @@ - "Dashboard", - "view" => "View", - "export_data_to_csv_and_excel" => "Export data to Copy, CSV, Excel, PDF & Print", - "create_insurance_member" => "Create Insurance Member", - "insurance_members" => "Insurance Members", - "register" => "Register", - "patient_bio_data" => "Patient's Biodata", - "insurance_member_registration" => "Insurance Member Registration", - "first_name" => "First Name", - "last_name" => "Last Name", - "gender" => "Gender", - "male" => "Male", - "female" => "Female", - "national_id_number" => "National ID Number", - "date_of_birth" => "Date of Birth", - "years" => "Years", - "months" => "Months", - "marital_status" => "Marital status", - "religion" => "Religion", - "occupation" => "Occupation", - "next_of_kin" => "Next of kin's name", - "relationship_to_next_of_kin" => "Relationship to next of kin", - "next_of_kins_phone" => "Next of kin's phone", - "phone_number" => "Phone Number", - "phone_owner" => "Phone number", - "self" => "Self", - "other" => "Other", - "phone_owners_name" => "Phone owner's name", - "name_of_lc1_chairman" => "Name of LC1 chairman", - "any_hospital_contact" => "Any hospital contact?", - "yes" => "Yes", - "no" => "No", - "name_of_contact_in" => "Name of the contact in", - "preferred_language" => "Preferred Language", - "district" => "District", - "county" => "County", - "select" => "-- select --", - "add_new_district" => "Add new district", - "add_new_county" => "Add new county", - "subcounty" => "Subcounty", - "add_new_subcounty" => "Add new subcounty", - "parish" => "Parish", - "add_new_parish" => "Add new parish", - "village" => "village", - "add_new_village" => "Add new village", - "is_member_head_of_family" => "Is Member Head of Family?", - "select_family" => "Select Family", - "insurance_group" => "Insurance Group", - "photo" => "Photo", - "submit" => "Submit", - "cancel" => "Cancel", - "register_a_new_occupation" => "Register a new occupation", - "register_a_new_district" => "Register a new district", - "register_a_new_county" => "Register a new county", - "register_a_new_sub_county" => "Register a new sub-county", - "register_a_new_parish" => "Register a new parish", - "register_a_new_village" => "Register a new village", - "please_fill_in_a_name" => "Please fill out a name", - "error_occured_occupation_not_added" => "Error occured. New occupation has not been added", - "new_district_has_been_added" => "new district has been added", - "district_already_exists" => "District already exists", - "county_already_exists" => "County already Exists", - "new_county_has_been_added" => "new county has been added", - "subcounty_already_exists" => "Sub county already exists", - "new_subcounty_has_been_added" => "new sub county has been added", - "parish_already_exists" => "Parish already Exists", - "new_parish_has_been_added" => "new parish has been added", - "village_already_exists" => "Village already Exists", - "new_village_has_been_added" => "new village has been added", - "search_by_patient_number" => "Search by patient number", - "search_by_first_name" => "Search with patient first name", - "search_by_last_name" => "Search with patient last name", - "save" => "Save", - "add_exisitng_patient" => "Add Existing Patient", - "view_active_members" => "View Insurance Members", - "view_inactive_members" => "View Deleted Members", - "patient_search" => "Patient Search", - "patient_information" => "Patient Information", - "insurance_member_details" => "Insurance Member Details", - "member_details" => "Member Details", - "member_details_bio" => "Member's Bio Data", - "full_names" => "Full Names", - "relationship_to_head_of_family" => "Relationship To Head Of Family", - "head_of_family_details" => "Head Of Family Details", - "group_details" => "Group Details", - "group_name" => "Group Name", - "start_of_insurance" => "Start Of Insurance", - "end_of_insurance" => "End Of Insurance", - "insurance_status" => "Insurance Status", - "active" => "Active", - "inactive" => "Inactive", - "member_picture" => "Member's Picture", - "head_of_family_picture" => "Head Of Family's Picture", - "patient_number" => "Patient Number", - "edit_insurance_details_for" => "Edit Insurance Details For ", - "edit" => "Edit", - "relationship_to_head" => "Relationship To Head", - "inactive_insurance_members" => "Deleted Insurance Members", - "activate" => "Restore", - "name" => "Name", - "patient_category" => "Patient Category", - "action" => "Action", - "family" => "Family", - "are_you_sure" => "Are you sure", - "you_have_registered" => "You have registered", - "currently_registered_members" => "Currently Registered Members", - "search_criteria" => "Search criteria", - "clear_search" => "Clear search", - "search" => "Search", - "delete" => "Delete", - "details" => "Details", - "add_new_occupation" => "Add new occupation", - "family_insurance_risk" => "Family insurance risk", - "edit_family_head_details" => "Edit family head details", - "does_member_have_existing_premium" => "Does member already have existing premiums", - "existing_premium_start_date" => "Existing premium start date", - "existing_premium_end_date" => "Existing premium end date", - "created_at" => "Created At", - "premium_amount" => "Premium Amount", - "created_by" => "Created By", - "members_with_active_insurance" => "Members With Active Insurance", - "members_with_expired_insurance" => "Members With Expired Insurance", - "family_members" => "Family Members", -]; \ No newline at end of file diff --git a/docker/streamline-src/resources/lang/en/labs.php b/docker/streamline-src/resources/lang/en/labs.php deleted file mode 100755 index 8b27110d..00000000 --- a/docker/streamline-src/resources/lang/en/labs.php +++ /dev/null @@ -1,95 +0,0 @@ - "Create Multiple Lab Items", - "home" => "Home", - "name" => "Name", - "cost" => "Cost", - "insurance_status" => "Insurance status", - "non_insured_price" => "Cash Price", - "insured_price" => "Insured Price", - "chart_of_account" => "Chart Of Account", - "stock" => "Stock", - "reorder_level" => "Re-Order Level", - "description" => "Description", - "form" => "Form", - "unit" => "Unit", - "expiry_date" => "Expiry Date", - "supplier" => "Supplier", - "yes" => "yes", - "no" => "no", - "select" => "select", - "create" => "Create", - "dashboard" => "Dashboard", - "labs" => "Lab Items", - "activate" => "Activate", - "are_you_sure" => "Are you sure?", - "action" => "Action", - "quantity" => "Quantity", - "current_batch" => "Current Batch", - "edit" => "Edit", - "delete" => "Delete", - "cost_value"=>"Cost Value", - "labs_stock_sheet"=>"Labs Stock Sheet", - "imaging_stock"=>"Imaging Stock", - "usage_period"=>"Usage Period", - "clear_stock" => "Clear Stock", - "delete_multiple_labs" => "Delete Multiple Lab Items", - "error_deleting_labs" => "Something happened when deleting the lab Items, please contact Streamline Support", - "sure_to_delete" => "Are Sure You Want To Delete These Lab Items?", - "select_lab_to_delete" => "Please Be Sure to Select A Lab Item That You Wish To Delete.", - "labs_usage" => "Lab Items Usage", - "previous_labs_usage" => "Previous Lab Items Usage", - 'edit_requistion'=>'Edit Requisition', - "date" => "Date", - "recorded_by" => "Recorded by", - 'recorded_on'=>'Recorded On', - 'usage_range'=>'Usage Range', - "enter_dates" => "Enter Dates", - "today" => "Today", - "date_range" => "DATE RANGE", - "date_on" => "Date On", - "end_date" => "End Date", - "lab_item_usage" => "Lab Item Usage", - "lab_item" => "Lab Item", - "available_quantity" => "Available Quantity", - "quantity_required" => "Quantity Used", - "unit_cost" => "Unit Cost", - "total_cost" => "Total Cost", - "add_item" => "Add Item", - "submit_usage" => "Submit Usage", - "lab_stock" => "Lab Stock", - "store_stock" => "Store stock", - "select_lab_item" => "Please select an lab Item please", - "amount_not_available" => "The required amount is greater than what is available, please re-stock and request again", - "sale_value" => "Sale value", - "lab_stock_sheet" => "Laboratory stock sheet", - "inactive_labs" => "Inactive Labs", - "edit_all_labs" => "Edit All Labs", - "view_lab_form" => "View Lab Form", - "view_all_labs" => "View All Labs", - "requisition_for_labs" => "Requisition For Labs", - "lab_usage" => "Lab Item Usage", - "add_lab_form" => "Add Lab Item Form", - "add_multiple_labs" => "Add Multiple Lab Items", - "add_lab" => "Add Lab Item", - "status" => "Status", - "date_requested" => "Date Requested", - "requisition" => "Requisition", - "search_records" => "Please search for records", - "details" => "Details", - "not_approved" => "Not Approved", - "approved" => "Approved", - "items" => "Items", - "previous_lab_requisitions" => "Previous Lab Items Requisitions", - "complete_request" => "Complete Request", - "quantity_requested" => "Quantity Requested", - "search_criteria" => "Search criteria", - "total_results" => "Total results", - "clear_search" => "Clear search", - "select_requisition_items" => "Select items to requisition", - "edit_stock" => "Edit stock", - "cancel" => "Cancel", - "income_account" => "Income Account", - "expense_account" => "Expense Account" -]; diff --git a/docker/streamline-src/resources/lang/en/layout.php b/docker/streamline-src/resources/lang/en/layout.php deleted file mode 100755 index bb1a19a2..00000000 --- a/docker/streamline-src/resources/lang/en/layout.php +++ /dev/null @@ -1,322 +0,0 @@ - "Demographics", - "cancel_appointment_failed" => "Cancelling appointment failed. Please try again.", - "new_episode" => "New Episode", - "sadr_report" => "Suspected Adverse Drug Reaction Report", - "maternity_admission" => "MATERNITY ADMISSION", - "date_of_maternity_admission" => "Date of Maternity Admission", - "continue_maternity_admission" => "Continue Maternity Admission", - "close" => "Close", - "patient_documents" => "Patient's Documents", - "documents_attached" => "Documents Attached", - "view_all" => "View all", - "patient_appointments" => "Patient Appointments", - "appointment_date" => "Appointment date", - "appointment_time" => "Appointment time", - "episode_started_on" => "Episode started on", - "clinic" => "Clinic", - "in_charge" => "In charge", - "imaging_sundries_stock_sheet"=>"Sundries Stock Sheet", - "comments" => "Comments", - "appointment_actions" => "Appointment actions", - "patient_details" => "Patient's Details", - "patient_number" => "Patient Number", - "patient_names" => "Patient Names", - "gender" => "Gender", - "male" => "Male", - "female" => "Female", - "date_of_birth" => "Date of Birth", - "age" => "Age", - "years" => "years", - "residence" => "Residence", - "marital_status" => "Marital Status", - "next_of_kin" => "Next of Kin", - "relationship" => "Relationship", - "phone_number" => "Phone Number", - "phone_name" => "Phone Name", - "insurance_status" => "Insurance Status", - "insured" => "Insured", - "not_insured" => "Not Insured", - "occupation" => "Occupation", - "patient_category" => "Patient Category", - "registered_by" => "Registered By", - "registered_on" => "Registered On", - "edit_patient" => "Edit Patient", - "begin_episode_for_patient" => "Are you sure you want to begin an episode for this patient?", - "cancel" => "Cancel", - "yes" => "Yes", - "select_actions" => "Select Actions", - "start_appointment" => "Start Appointment", - "reschedule_appointment" => "Reschedule Appointment", - "cancel_appointment" => "Cancel Appointment", - "reschedule_appointment_question" => "Are you sure you want to reschedule the appointment? This action can not be reversed", - "cancel_appointment_cancel" => "Are you sure you want to cancel the appointment? This action can not be reversed", - "appointment_cancelled" => "Appointment has been cancelled", - "sign_out" => "Sign Out", - "edit_profile" => "Edit my profile", - "view_profile" => "View my profile", - "finance_home" => "Finance Home", - "patient_home" => "Patient Home", - "and" => "and", - "subscription_tracking"=> 'Subcription Tracking', - "powered_by" => "Powered By", - "subscription_tracking"=> 'Subcription Tracking', - "insured_patient_photo" => "Insured Patient's photo", - "photo_not_available" => "Photo not available", - "manage_roles" => "Manage Roles", - "limit_number_of_active_users" => "Limit number of active users", - "new_role" => "New Role", - "manage_users" => "Manage Users", - "new_user" => "New User", - "general_settings" => "General Settings", - "settings" => "Settings", - 'super_settings'=>'Super Admin Settings', - "finance" => "Finance", - "add_village" => "Add Village", - "view_villages" => "View Villages", - "inactive_villages" => "Inactive Villages", - "villages" => "Villages", - "inactive_parishes" => "Inactive Parishes", - "view_parishes" => "View Parishes", - "add_parish" => "Add Parish", - "parishes" => "Parishes", - "inactive_sub_counties" => "Inactive Sub Counties", - "view_sub_county" => "View Sub Counties", - "add_sub_county" => "Add Sub County", - "sub_counties" => "Sub Counties", - "home" => "Home", - "patients" => "Patients", - "inactive_patients" => "Inactive Patients", - "view_patients" => "View Patients", - "view_patient_cards" => "View Patients' Cards", - "patient_cards" => "Patients' Cards", - "new_patient_with_episode" => "New Patient With Episode", - "new_patient" => "New Patient", - "insurance" => "Insurance", - "point_of_sale" => "Point Of Sale", - "incoming_investigations" => "Incoming Investigations", - "lab_results" => "Lab Results", - "authenticate_investigations" => "Authenticate Investigations", - "alter_investigations_results" => "Alter Investigations Results", - "historical_investigations" => "Historical Investigations", - "find_a_donor" => "Find A Donor", - "labs_management" => "Labs Management", - "labs_stock_sheet" => "Labs Stock Sheet", - "laboratory_specimens" => "Laboratory Specimens", - "cancel_ordered_investigation" => "Cancel Ordered Investigation", - "view_cancelled_ordered_investigations" => "View Cancelled Ordered Investigations", - "imaging" => "Imaging", - "radiology_requests" => "Radiology Requests + Results", - "cardiology_requests" => "Cardiology Requests + Results", - "ultrasound_requests" => "Ultrasound Requests + Results", - "obstetric_ultrasound_requests" => "Obstetric Ultrasound Requests + Results", - "incoming_obstetric_ultrasound_requests" => "Incoming Obstetric Ultrasound Requests", - "view_radiology_results" => "View Radiology Results", - "view_cardiology_results" => "View Cardiology Results", - "view_obstetric_ultrasound_results" => "View Obstetric Ultrasound Results", - "view_other_ultrasound_results" => "View Other Ultrasound Results", - "view_historical_results" => "View Historical Results", - "pharmacy" => "Pharmacy", - "incoming_prescriptions" => "Incoming Prescriptions", - "ward_dispensing" => "Ward Dispensing", - "ward_dispensing_per_chart" => "Ward Dispensing Per Chart Requests", - "view_ward_dispensing" => "View Ward Dispensing", - "pharmacy_stock_sheet" => "Pharmacy Stock Sheet", - "requisition_for_drugs" => "Requisition For Drugs", - "saved_requisitions" => "Saved Requisitions", - "previous_requisitions" => "Previous Requisitions", - "drugs" => "Drugs", - "new_drug" => "New Drug", - "add_multiple_drugs" => "Add Multiple Drugs", - "view_drugs" => "View Drugs", - "inactive_drugs" => "Inactive Drugs", - "expiring_drugs" => "Expiring Drugs", - "running_out_of_stock" => "Running Out Of Stock", - "stores" => "Stores", - "message_board" => "Message Board", - "clinical_data" => "Clinical Data", - "inactive_counties" => "Inactive Counties", - "view_counties" => "View Counties", - "add_county" => "Add County", - "counties" => "Counties", - "districts" => "Districts", - "inactive_districts" => "Inactive Districts", - "view_districts" => "View Districts", - "add_district" => "Add District", - "residences" => "Residences", - "bed_categories" => "Bed Categories", - "add_bed_category" => "Add Bed Category", - "view_bed_categories" => "View Bed Categories", - "activate_bed_categories" => "Activate Bed Categories", - "inactive_departments" => "Inactive Departments", - "bulk_edit" => "Bulk Edit", - "view_departments" => "View Departments", - "add_department" => "Add Department", - "departments" => "Departments", - "hospital_information" => "Hospital Information", - "inactive_categories" => "Inactive Categories", - "view_categories" => "View Categories", - "add_category" => "Add Category", - "patient_categories" => "Patient categories", - "admin_custom" => "Administration Customisation", - "prescription_errors" => "Prescription Errors", - "resources" => "Resources", - "add_resource" => "Add Resource", - "view_resources" => "View Resources", - "inactive_resources" => "Inactive Resources", - "suppliers" => "Suppliers", - "add_supplier" => "Add Supplier", - "view_suppliers" => "View Suppliers", - "inactive_suppliers" => "Inactive Suppliers", - "banks" => "Banks", - "add_bank" => "Add Bank", - "view_banks" => "View Banks", - "inactive_banks" => "Inactive Banks", - "donors" => "Donors", - "add_donor" => "Add Donor", - "view_donors" => "View Donors", - "inactive_donors" => "Inactive Donors", - "audit_trail" => "Audit Trail", - "staff_positions" => "Staff Positions", - "add_staff_position" => "Add Staff Position", - "view_staff_position" => "View Staff Position", - "inactive_staff_position" => "Inactive Staff Position", - "resource_categories" => "Resource Categories", - "add_occupation" => "Add Occupation", - "view_occupations" => "View Occupations", - "inactive_occupations" => "Inactive Occupations", - "triage" => "Triage", - "positive_call_for_help" => "If any sign positive, call for help urgently, move child to A&E critical care", - "children" => "Children", - "emergency_signs" => "EMERGENCY SIGNS", - "no" => "No", - "airway_breathing" => "Airway/Breathing", - "cyanosis" => "Cyanosis", - "stridor_breathing_choking" => "Stridor / obstructed breathing/ choking", - "severe_resp_distress" => "Severe respiratory distress", - "circulation" => "circulation", - "capillary_refill_seconds" => "Capillary refill > 3 seconds", - "severe_bleeding" => "Severe bleeding", - "weak_fast_pulse" => "Weak fast pulse", - "neurological" => "Neurological", - "coma" => "Coma", - "convulsing_now" => "Convulsing now", - "dehydration_children_diarrhoea" => "Dehydration(Only in child with diarrhoea)", - "diarrhoea_lethargy_sunken_eyes" => "Diarrhoea with Lethargy, sunken eyes or very slow skin pinch", - "adult_triage" => "Adult triage", - "family_planning_questions" => "FAMILY PLANNING QUESTIONS", - "too_sick" => "Too sick to answer", - "currently_pregnant" => "Are you currently pregnant?", - "had_menopause" => "Have you had menopause?", - "sexually_active" => "Are you sexually active or intending to be?", - "wish_to_have_child" => "Do you wish to have a child in the next two years?", - "action" => "Action", - "family_planning_method" => "Which method of family planning are you or your partner using?", - "none" => "None", - "counseling" => "Counseling", - "referral_to_fp" => "Referral to Family Planning clinic", - "select" => "Select", - "ensure_correct_dob" => "Please ensure the patient's date of birth is correct", - "positive_move_child_first" => "If any sign positive above, move child to front of queue & ensure seen promptly", - "burns_major" => "Burns (Major)", - "severe_pallor" => "Severe pallor", - "malnutrition_visible_wasting" => "Malnutrition: visible severe wasting", - "restless_irritable" => "Restless continuously irritable, lethargic", - "urgent_surgical_condition" => "Urgent surgical condition", - "oedema_both_feet" => "Oedema of both feet", - "severe_pain" => "Severe pain", - "significant_trauma" => "Significant trauma", - "priority_signs" => "Priority Signs", - "no_priority_signs" => "No Priority Signs were recorded", - "no_emergency_signs" => "No Emergency Signs were recorded", - "continue_ward_admission" => "Continue Ward Admission", - "are_you_sure_admit" => "Are you sure you want to admit this patient?", - "select_ward" => "Select Ward", - "admission_date" => "Admission Date", - "ward_admission" => "Ward Admission", - "are_you_sure_admit_maternity" => "Are you sure you want to admit this patient to Maternity?", - "are_you_sure_clinic" => "Are you sure you want to admit this patient to this special clinic?", - "continue_clinic_allocation" => "Continue Clinic Allocation", - "select_clinic" => "Select Clinic", - "clinic_allocation" => "Clinic Allocation", - "new_episode_clinic" => "New Episode With Clinic", - "staff_payments_configuration" => "Staff Payments Configuration", - "CHI_insurance" => "C.H.I Insurance", - "CHI_admin" => "C.H.I Administration", - "insurance_scheme_admin" => "Insurance Scheme Administration", - "patient_timeline" => "Patient Timeline", - "user_timeline" => "User Timeline", - "confirm_prescriptions" => "Confirm Precriptions", - "theatre_management" => "Theatre Management", - "theatre_drugs_stock_sheet" => "Drugs Stock Sheet", - "theatre_sundries_stock_sheet" => "Sundries Stock Sheet", - "theatre_requisitions" => "Requisitions", - "ward_item_request" => "Ward Item Request", - "incoming_ward_item_request" => "Incoming Ward Item Requests", - "mobile_number" => "Mobile Number", - "incoming_ward_charts" => "Incoming Ward Charts", - "anaesthesia_report" => "Anaesthesia report", - "surgery_report" => "Surgery report", - "start_appointment_with_clinic" => "Start appointment with clinic", - "drugs_stock_reconciliation" => "Drugs Stock Reconciliation", - "drugs_stock_reconciliation_report" => "Drugs Stock Reconciliation Report", - "patient_alert" => "Patient Alert", - "requisition_of_sundries" => "Requisition For Sundries", - "lab_sundries_stock_sheet" => "Lab Sundries Stock Sheet", - "dispensation_report" => "Dispensation Report", - "requisition_for_items" => "Requisition For Items", - "activate_streamline_modules" => "Activate stre@mline modules", - "patient_appointments_report" => "Appointments Report", - "radiologies_management" => "Radiologies Management", - "dentals_management" => "Dental Management", - "sundries_stock_reconciliation" => "Sundries Stock Reconciliation", - "sundries_stock_reconciliation_report" => "Sundries Stock Reconciliation Report", - "personal_settings" => "Personal Settings", - "create_new_episode" => "Create New Episode", - "new_episode_with_clinic" => "New Episode With Clinic", - "new_episode_with_doctor" => "New Episode With Doctor", - "new_episode_with_doctor_and_clinic" => "New Episode With Doctor and Clinic", - "new_episode_with_admission" => "New Episode With Admission", - "new_episode_with_inv_self_request" => "New Episode With Investigation Self Request", - "are_you_sure_inv_self_request" => "Are you sure you want to create a new episode with investigation self requests?", - "discharge_pat_continue" => "Discharge patient and continue", - "pat_still_admitted_discharge" => "Patient is still admitted in the system. You can press the discharge button and continue with this admission or cancel it", - "patient_finance_account" => "Patient Finance Account", - "more_details" => "More Details", - "customer_statement" => "Customer Statement", - "import_clinical_data" => "Import Clinical Data", - "send_sms" => "Send SMS", - "view_sms_reports" => "View SMS Reports", - "logged_in_users" => "Logged in users", - "failed_logins" => "Failed logins", - "inactive_companies" => "Inactive Companies", - "view_companies" => "View Companies", - "add_companies" => "Add Companies", - "companies_employers" => "Companies / Employers", - "patient_payment_methods" => "Patient Payment Methods", - "ward_management" => "Ward Management", - "view_cancelled_prescriptions" => "View Cancelled Prescriptions", - "cancel_prescriptions" => "Cancel Prescriptions", - "view_cancelled_progressive_treatments" => "View Cancelled Progressive Treatments", - "sundries_stock_sheet" => "Sundries Stock Sheet", - "progressive_treatments" => "Progressive Treatments", - "edit_echo_cardiology_templates" => "Edit Echo Cardiology Templates", - "view_lab_instrument_results" => "View Lab Instrument Results", - "has_possible_duplicates" => "Has possible duplicates", - "help" => "Help", - "frequently_asked_question" => "Frequently Asked Question", - "version_number" => "Version 24.0", - "streamline_support_system" => "Streamline Support System", - "view_point_of_sale_records" => "View Point of Sale Records", - "product_set_up" => "Product Set Up", - "scheme_administration" => "Scheme Administration", - "chi_report" => "CHI Reports", - "submit" => "Submit", - "optical_stock_reconciliation" => "Optical Stock Reconciliation", - "optical_stock_sheet" => "Opticals Stock Sheet", - 'optical_stock_reconciliation_report'=>"Optical Stock Reconciliation Report", - "tb_screening" =>"TB Screening", - "integrated_payment_solutions" => "Integrated Payment Solutions", -]; diff --git a/docker/streamline-src/resources/lang/en/maternity.php b/docker/streamline-src/resources/lang/en/maternity.php deleted file mode 100755 index 3584f27d..00000000 --- a/docker/streamline-src/resources/lang/en/maternity.php +++ /dev/null @@ -1,263 +0,0 @@ - "Dashboard", - "patient" => "Patient", - "maternity_admission_details" => "Maternity admission details", - "labour_ward_admission_details" => "Labour ward admission details", - "modify_maternity_admission_details" => "Modify maternity admission details", - "details_for_episode" => "Maternity admission details for Episode started on", - "details_for_labour_episode" => "Labour ward admission details for Episode started on", - "maternity_admission_details_for" => "Maternity admission details for", - "labour_ward_admission_details_for" => "Labour ward admission details for", - "current_obstetric_risk_factors" => "Current obstetric risk factors", - "patient_number" => "Patient Number", - "blood_group" => "Blood Group", - "blood_transfusion_date" => "Blood Transfusion Date", - "number_of_units" => "Number Of Units", - "comment" => "Comment", - "gravida" => "Gravida", - "para" => "Para", - "abortion" => "Abortion", - "postpartum" => "Postpartum", - "previous_pph" => "Previous Pph", - "previous_scar" => "Previous Scar", - "comments_from_pph" => "Other Comments From Pph", - "lmp" => "Last Menstrual Period", - "accuracy" => "Accuracy", - "edd" => "Expected Date of Delivery", - "referral_from" => "Referral From", - "progress" => "Progress", - "hiv_status" => "Hiv Status", - "negative" => "Negative", - "positive" => "Positive", - "unknown" => "Unknown", - "hiv_date" => "Hiv Date", - "scan_edd" => "Scan Expected Date of Delivery", - "gestation_from_scan" => "Gestation From Scan", - "history_of_fits" => "History Of Fits", - "history_of_aph" => "History of Aph", - "obstetric_date" => "Obstetric Date", - "gestation" => "Gestation", - "outcome" => "Outcome", - "outcome_name" => "Outcome Name", - "update_and_complete_form" => "Update and complete", - "comments" => "Comments", - "current_acute_problems" => "Current Acute Problems", - "obstetric_risk_factors" => "Obstetric Risk Factors", - "baby" => "BABY", - "received_by" => "Received By", - "select" => "select", - "sex" => "Sex", - "other" => "Other", - "female" => "Female", - "male" => "Male", - "ambigous" => "Ambigous", - "condition" => "Condition", - "alive" => "Alive", - "fresh_sb" => "Fresh SB", - "macerated_sb" => "Macerated SB", - "weight" => "Weight (Kg)", - "congenital_abnormalities_apparent" => "Congenital abnormalities apparent?", - "yes" => "Yes", - "no" => "No", - "date_of_birth" => "Date of birth", - "birth_order" => "Birth order?", - "delivery_date" => "Delivery Date", - "delivery_time" => "Delivery Time", - "duration_1st" => "Duration 1st Stage (hours)", - "duration_2nd" => "Duration 2nd Stage(hours:minutes)", - "duration_3rd" => "Duration 3rd Stage", - "hours" => "Hours", - "minutes" => "Minutes", - "delivered_by_cadre" => "Delivered By (Cadre)", - "staff" => "Staff", - "student" => "Student", - "delivered_by_name" => "Delivered By (Name)", - "save" => "Save", - "cancel" => "Cancel", - "register_location_delivery" => "Register a new location of delivery", - "location_of_delivery" => "Location of Delivery", - "indication_for_cs" => "Indication for CS", - "from_surgery_notes" => "from surgery notes", - "mode_of_delivery" => "Mode of Delivery", - "supervised_by" => "Supervised By", - "abortions_pregnancies" => "Abortions", - "ectopic_pregnancies" => "Ectopic pregnancies", - "post_partum" => "Post-partum", - "past_obstetric_history" => "Past Obstetric History", - "date" => "Date", - "name" => "Name", - "weeks" => "weeks", - "add_row" => "Add row", - "delete_row" => "Delete row", - "details" => "Details", - "number" => "Number", - "indication" => "Indication", - "other_comments" => "Other Comments", - "blood_transfusion" => "Blood Transfusion", - "vdrl_status" => "VDRL/RPR Status", - "result" => "Result", - "location" => "Location", - "hiv_past_3_months" => "IF NOT HAD HIV TEST WITHIN PAST 3 MONTHS SEND TEST SAMPLE", - "art_treatment_center" => "A.R.T. Treatment Center", - "art_treatment_number" => "A.R.T. Treatment Number", - "art_clinic_record" => "A.R.T. Clinic Record", - "this_pregnancy" => "This pregnancy", - "number_of_weeks_pregnant" => "Weeks Pregnant", - "us_scan_edd" => "U/S Scan Expected Date of Delivery", - "current_gestation_from_scan" => "Current gestation from scan: +/-2weeks early scan, 4 weeks late", - "referral_in_from" => "Referral in from", - "add_new_referral" => "Add new Referral", - "fits_details" => "Fits details", - "does_mother_cap" => "Does this mother have any current acute obstetric problems?", - "severe_eclampsia" => "Severe pre-eclampsia or eclampsia", - "premature_pprom" => "Premature rupture of membranes PROM / PPROM", - "aph" => "APH", - "pph" => "PPH", - "iufd" => "IUFD", - "save_and_complete" => "Save and complete", - "inform_medical_team_warning" => "Inform senior midwife and medical team, draw up plan of management, counsel and support parents", - "born_before_arrival" => "Born before arrival", - "mother_current_obstetric_risk" => "Does this mother have any current obstetric risk factors?", - "history_aph_pregnancy" => "History of APH in current pregnancy", - "history_convulsion_pregnancy" => "History of convulsions in this pregnancy", - "diabetes_mellitus" => "Diabetes mellitus", - "epilepsy" => "Epilepsy", - "cardiac_disease" => "Cardiac disease", - "polyhydramnios" => "Polyhydramnios", - "poor_obstetric_history" => "Poor obstetric history", - "multiple_pregnancy" => "Multiple pregnancy", - "previous_csections" => "Previous C-sections", - "malpresentation" => "Malpresentation", - "submit_form" => "Submit Form", - "cant_delete_rows" => "Cannot delete all the rows.", - "adding_referral_failed" => "Adding referral failed", - "adding_referral_success" => "new referral has been added", - "referral_name" => "Referral Name", - "perinatal_death_info" => "Perinatal death notification form filled in and sent within 24 hours (midwife delivering is responsible)", - "perinatal_audit_info" => "Full perinatal audit form filled in and submitted within 7 days (Maternity In-Charge responsible)", - "apgar_1" => "Apgar score at 1 minute", - "apgar_5" => "Apgar score at 5 minutes", - "apgar_10" => "Apgar score at 10 minutes", - "age_established_respiration" => "Age established spontaneous regular respiration (Minutes)", - "resuscitation_airway" => "Resuscitation- airway", - "nil" => "Nil", - "bag" => "Bag", - "mask" => "Mask", - "resuscitation_suction" => "Resuscitation- suction", - "advanced_resuscitation" => "Advanced Resuscitation", - "advanced_resuscitation_ett" => "Advanced Resuscitation – ETT", - "advanced_resuscitation_ecm" => "Advanced Resuscitation – ECM", - "advanced_resuscitation_drugs" => "Advanced Resuscitation – drugs given", - "vitamin_given" => "IM Vitamin K given (0.5mg preterm, 1mg term)", - "moved_to" => "Moved to", - "add_new_ward" => "Add new ward", - "tick_yes_vit_k" => "Only tick Yes if you are sure the baby has received Vit K. If not sure double check please", - "register_new_ward" => "Register a new ward", - "delivery_record" => "Delivery record", - "delivery_for_episode_started" => "Delivery for Episode started on", - "delivery_of_episode_started" => "Delivery Record of Episode started on", - "delivery" => "DELIVERY", - "foetal_number" => "Foetal Number", - "singleton" => "Singleton", - "twins" => "Twins", - "triplets" => "Triplets", - "blood_loss" => "Blood Loss", - "blood_loss_measurement" => "Blood Loss Measurement", - "measured" => "Measured", - "estimated" => "Estimated", - "vaginal_delivery" => "[> 500mls vaginal delivery or >1000mLs at C/S = PPH ].", - "delayed_cord_clamping" => "Delayed cord clamping 1 – 3 minutes for normal delivery, 30 sec – 1 min for CS", - "hospital_pph_protocol" => "Hospital PPH PROTOCOL", - "click_for_protocol" => "click for protocol", - "clear_airway" => "If not breathing, stimulate & clear airway", - "clamp_cut_cord" => "If still not breathing, clamp & cut cord, clean airway if necessary", - "ventilate_bag_mask" => "ventilate with bag & mask", - "shout_for_help" => "Shout for help", - "meconium_protocol" => "NOTE : follow protocol if thick meconium present to remove from airway before ventilating", - "submit" => "Submit", - "fill_out_name" => "Please fill out a name", - "ward_error" => "Error occured. Ward has not been added", - "new_ward_added" => "New ward has been added", - "delivery_location_error" => "Error occured. Delivery location has not been added", - "delivery_location_added" => "New delivery location has been added", - "triage_done_on" => "Triage Done On", - "baby_record_on" => "Baby Record on", - "add_new_location_of_delivery" => "Add new location of delivery", - "duration_third_stage" => "Duration 3rd Stage (hours:minutes)", - "classification" => "Classification", - "type_of_delivery" => "Type of delivery", - "puerperium" => "Puerperium", - "weight_loss" => "Weight Loss", - "fever_one_month" => "Fever one month", - "diarrhoea_one_month" => "Diarrhoea one month", - "pruritus" => "Pruritus", - "vaginal_bleeding" => "Vaginal bleeding", - "skeletal_deformities" => "Skeletal deformities", - "weeks_of_amenorrhea" => " Weeks of Amenorrhea", - "draining" => "Draining", - "recomendation_of_delivery" => "Recommendation of Delivery", - "severe_pre_eclampsia" => "Severe pre-eclampsia or eclampsia", - "premature_rupture_of_membranes" => "Premature rupture of membranes PROM / PPROM", - "diabetes_mellitus" => "Diabetes mellitus", - "asthma" => "Asthma", - "pre_term_labour" => " Pre-term Labour", - "sickle_cell_disease" => "Sickle Cell Disease", - "polio" => "Polio", - "group_b_streptococcus_colonization" => "Group B Streptococcus Colonization", - "woman_advanced_age" => "Woman's Advanced age", - "mental_illness" => "Mental Illness", - "adolescent_pregnancy" => "Adolescent Pregnancy", - "hypertension" => "Hypertension", - "kidney_disease" => "Kidney Disease", - "delivery_plan" => "Delivery Plan", - "person_you_live_with" => "Person you live with that can support you", - "person_to_accompany_you" => "Person to accompany you during labour or in case of an emergency", - "person_to_stay_at_facility" => "Person to stay at the facility during labour", - "means_of_transport_to_facility" => "Means of transport to use when heading to the facility", - "person_to_look_after_home" => "Person to look after the home while you're away", - "delivery_method" => "What is your preferred delivery method", - "backup_delivery_method" => "Backup delivery method", - "after_birth_disposal" => "After birth disposal", - "throw_in_placenta_pit" => "Throw in placenta pit", - "family_planning_before_next_pregnancy" => "Family planning before next pregnancy", - "syphillis" => "Syphillis", - "sickle_cell" => "Sickle Cell", - "hiv" => "HIV", - "hepatitis" => "Hepatitis", - "mother_partner_screened_for" => "Mother and partner screened for", - "take_it_home" => "Take it home", - "date_discontinued" => "Date discontinued", - "why" => "Why ?", - "family_planning_method" => "Family planning method", - "physical_examination" => "Physical examination", - "weeks_of_amenorrhoea" => "Weeks of amenorrhoea", - "update_form" => "Update Form", - "foot" => "Foot", - "motor_bike" => "Motor bike", - "private_car" => "Private car", - "public_means" => "Public means", - "na" => "N/A", - "aph_details" => "Aph details", - "left_cut" => "Left cut", - "right_cut" => "Right cut", - "other_complications" => "Other complications", - "heart_physical_examination_details" => "Heart details", - "other_physical_examinations" => "Other Physical examinations", - "other_obstetric_risk_factors" => "Other obstetric risk factors", - "mother_obstetric_risk" => "Mother's current obstetric factors", - "other_pregnancy_complications" => "Other pregnancy complications", - "labour_onset" => "Labour onset", - "spontaneous" => "Spontaneous", - "induced" => "Induced", - "active_labour_diagnosis_date" => "Active labour diagnosis date", - "membranes_raptured_at" => "Membranes raptured at", - "labour_ward_adminssion_section" => "LABOUR WARD ADMISSION (Section 1)", - "update_labour_ward_adminssion_section" => "UPDATE LABOUR WARD ADMISSION (Section 1)", - "update" => "Update", - "labour_ward_admission_heading_print" => "LABOUR WARD ADMISSION DETAILS", - "save_labour_ward_admission" => "Save Admission", - "submit_and_complete" => "Submit & Complete", - "save_draft" => "Save Draft", -]; diff --git a/docker/streamline-src/resources/lang/en/patient_accounts.php b/docker/streamline-src/resources/lang/en/patient_accounts.php deleted file mode 100644 index 17ea981f..00000000 --- a/docker/streamline-src/resources/lang/en/patient_accounts.php +++ /dev/null @@ -1,53 +0,0 @@ - "Refund Deposit", - "make_deposit" => "Make Deposit", - "add_deposit" => "Add Deposit", - "current_balance" => "Current Balance", - "patient_names" => "Patient Names", - "amount_consumed" => "Amount Consumed", - "date_consumed" => "Date Consumed", - "reason" => "Reason", - "consumption" => "Consumption", - "refund_amount" => "Refund Amount", - "refund_date" => "Refund Date", - "received_by" => "Received By", - "refunds" => "Refunds", - "deposit_amount" => "Deposit Amount", - "deposit_date" => "Deposit Date", - "deposits" => "Deposits", - "print_statement" => "Print Statement", - "last_24_hours" => "Last 24 hours", - "custom_date" => "Custom Date", - "custom_range" => "Custom Range", - "patient_account_statement" => "Patient Account Statement", - "statement" => "Statement", - "cancel_refund" => "Cancel refund", - "refund_record_date" => "Refund Record Date", - "refund_transaction_date" => "Refund Transaction Date", - "refunded_by" => "Refunded By", - "refunded_reason" => "Refunded Reason", - "to" => "To", - "reports" => "Reports", - "patient_accounts_refunds" => "Patient Accounts Refunds", - "account_balance" => "Account Balance", - "account_to_pay_from" => "Account To Pay From", - "refund_patient_accounts" => "Refund Patient Accounts", - "printed_on" => "Printed On", - "by" => "By", - "patient_paid_with" => "Patient Paid With", - "details" => "Details", - "amounts" => "Amounts", - "transaction_date" => "Transaction Date", - "years" => "Years", - "email" => "Email", - "phone_number" => "Phone Number", - "patient_accounts_consumption_reports" => "Patient Accounts Consumption Reports", - "patient_accounts_refunds_reports" => "Patient Accounts Refunds Reports", - "patient_accounts_deposits_reports" => "Patient Accounts Deposits Reports", - "cash_to_pay" => "Cash to Pay", - "add_payment_method" => "Add Payment Method", - "cancel_deposit" => "Cancel Deposit", - "patient_accounts_deposits" => "Patient Accounts Deposits", -]; diff --git a/docker/streamline-src/resources/lang/en/patient_episode.php b/docker/streamline-src/resources/lang/en/patient_episode.php deleted file mode 100755 index 68e8a51b..00000000 --- a/docker/streamline-src/resources/lang/en/patient_episode.php +++ /dev/null @@ -1,115 +0,0 @@ - "Add document", - "admitted" => "Admitted", - "anaesthesia_complete" => "Anaesthesia completed", - "anaesthesia_not_complete" => "Anaesthesia not completed", - "appointment_date" => "Appointment date", - "birth_report" => "Birth Report", - "clinic" => "Clinic", - "close" => "Close", - "comments" => "Comments", - "consultation" => "Consultation", - "consultation_with_notes" => "Consultation With Notes", - "current_clinic" => "Current Clinic", - "dashboard" => "Dashboard", - "date" => "Date", - "death_report" => "Death Report", - "delivery_record" => "Delivery Record", - "discharged" => "Discharged", - "episode_summary" => "Episode Summary", - "episodes" => "Episodes", - "eye_clinic" => "Eye Clinic", - "claim_number" => "Claim Number", - "follow_up" => "Follow Up", - "follow_up_complete" => "Follow up not completed", - "historical_anaesthetics" => "Historical Anaesthetics", - "historical_investigations" => "Historical Investigations", - "historical_surgeries" => "Historical Surgeries", - "in_charge" => "In charge", - "inpatient_billing" => "Inpatient Billing", - "inpatient_sheet" => "Inpatient Sheet", - "internal_transfer" => "Internal Transfer", - "investigations" => "Investigations", - "maternity_admission" => "Maternity Admission", - "maternity_summary" => "Maternity Summary", - "other_diagnosis" => "Other Diagnosis", - "outcome" => "Outcome", - "patient_episodes" => "Patient episodes", - "patient_transfer_failed" => "Patient transfer failed. Please try again", - "patient_transfer_successful" => "Patient transfer successful", - "patients" => "Patients", - "prescriptions" => "Prescriptions", - "primary_diagnosis" => "Primary Diagnosis", - "procedure" => "Procedure", - "procedures" => "Procedures", - "read_less" => "Read Less", - "review_from" => "Review from", - "select" => "Select", - "select_a_patient" => "Select a patient", - "select_new_clinic" => "Please select new clinic", - "select_patient_warning" => "Please select a patient or make sure the selected patient's age is specified", - "sundries" => "Sundries", - "surgery_complete" => "Surgery completed", - "surgery_not_complete" => "Surgery not completed", - "surgery_type" => "Surgery Type", - "template_preview" => "Template Preview", - "theatre" => "Theatre", - "quantity" => "Quantity", - "theatre_anaesthetics" => "Theatre module - Anaesthetics", - "theatre_surgery" => "Theatre module - Surgery", - "transfer_patient" => "Transfer Patient", - "transfer_to" => "Transfer to", - "triage" => "Triage", - "triage_not_performed" => "Triage not performed in this episode", - "triage_without" => "Triage Without", - "new_episode_with_doctor" => "New episode with doctor", - "doctor_allocation" => "Allocate Doctor", - "continue_doctor_allocation" => "Continue doctor allocation", - "are_you_sure_doctor" => "Are you sure you want to proceed with patient allocation to this doctor", - "new_episode_with_doctor_and_clinic" => "New episode with doctor and clinic", - "doctor_and_clinic_allocation" => "Allocate doctor and clinic", - "continue_allocation" => "Continue Allocation", - "are_you_sure_doctor_and_clinic" => "Are you sure you want to allocate the patient to this doctor and clinic", - "new_episode_option" => "New episode options", - "consultation_by" => "Consultation By", - "new_episode_with_self_lab_request" => "New Episode With Self Lab Request", - "are_you_sure" => "Are you sure", - "transfer_from_doctor" => "Transfer from doctor", - "transfer_to_doctor" => "Transfer to doctor", - "view_history" => "View Patient History", - "episode_date" => "Episode Date", - "right_eye_diagnosis" => "Right Eye Diagnosis", - "left_eye_diagnosis" => "Left Eye Diagnosis", - "merge_episodes" => "Merge Episodes", - "select_records_merge" => "select 2 records to merge at a time", - "episode_records" => "Episode records", - "started_by" => "Started by", - "other_diagnoses" => "Other Diagnoses", - "consultation_done_by" => "Consultation done by", - "select_information_to_keep" => "Select information to keep", - "complete" => "Complete", - "edit_claim_number" => "Edit Claim Number", - "okay" => "Okay", - "patient_not_paid_consultation" => "This patient has not yet paid for consultation", - "transfer_doctor" => "Transfer Doctor", - "inpatient_attendant_pass" => "Inpatient Attendant Pass", - "admit_patient" => "Admit Patient", - "order_multiple_items" => "Order multiple items", - "services" => "Services", - "drug_refill" => "Drug Refill", - "doctor_transfer" => "Doctor Transfer", - "clinic_transfer" => "Clinic Transfer", - "remove_episode" => "Remove Episode", - "procedure_name" => "Procedure Name", - "inv_manage_plan_comment" => "Investigation and Management Plan Comments", - "clinic_examination_comments" => "Clinic Examination Comments", - "history_comments" => "History Comments", - "labour_ward_admission" => "Labour Ward Admission", - "safe_delivery" => "Safe Delivery", - "partogram" => "Partogram", - "labour_ward_overview" => "Labour Ward Overview", - - "patient_diagnosis" => "Patient Diagnosis", - "treatment_sheet" => "Treatment Sheet", -]; diff --git a/docker/streamline-src/resources/lang/en/patient_finance.php b/docker/streamline-src/resources/lang/en/patient_finance.php deleted file mode 100755 index 37b8a118..00000000 --- a/docker/streamline-src/resources/lang/en/patient_finance.php +++ /dev/null @@ -1,350 +0,0 @@ - "Active", - "add_row" => "Add Row", - "amount_owed" => "Amount Owed", - "amount_paid" => "Amount Paid", - "apply_changes" => "Apply Changes", - "authorise_debt_plan" => "Authorise Debt Plan and Complete Payment", - "balance" => "Balance", - "balance_to_pay" => "Balance", - "calculate" => "Calculate", - "cannot_delete_all_warning" => "Cannot delete all the rows", - "cashier" => "Cashier", - "central_billing" => "Central Episode Billing", - "co_payment" => "Copayment", - "complete_payment" => "Complete Payment", - "complete_payment_warning" => "Are you sure you want to complete this payment", - "consultation" => "Consultation", - "dashboard" => "Dashboard", - "date" => "Date", - "agreed_completion_date" => "Agreed completion Date", - "agreement1" => "I hereby accept to act as guarantor for up to a limit of", - "agreement2" => "from the amount of", - "agreement3" => "that the patient", - "agreement4" => "was supposed to pay and i agree that if this bill has not been paid by", - "agreement5" => "then the amount may be taken off my salary in", - "agreement6" => "installments", - "arrangement_for_balance" => "Arrangement for Balance", - "authorised_by" => "Authorised by", - "cancel_button" => "Cancel Debt Plan", - "comment" => "Comment", - "date_of_bill" => "Date of Bill", - "debt_plan" => "Debt Plan", - "department" => "Department", - "grade" => "Grade", - "guarantor_to_pay" => "Guarantor to pay", - "name" => "Name", - "save_changes" => "Save changes", - "signed_by" => "Signed By", - "staff_guarantor" => "Guarantor", - "staff_guarantor_agreement" => "GUARANTOR AGREEMENT", - "print_guarantor_agreement" => "Print Guarantor Agreement", - "witnessed_by" => "Witnessed By", - "debt_plan_cancelled" => "Debt Plan canceled", - "debt_plan_warning" => "Are you sure you want to authorise a debt plan for this patient? This payment will be completed after debt plan has been authorised", - "debts" => "Debts", - "default" => "Default", - "default_pricing" => "Default Pricing", - "delete_row" => "Delete Row", - "deposits_made" => "Deposits Made", - "description" => "Description", - "discount" => "Discount", - "discounts_applied" => "Discounts Applied", - "donor_amount" => "Donor Amount", - "donor_to_pay" => "Donor to pay", - "email" => "Email", - "episode_is_review" => "This episode is a review from", - "extras" => "Extras", - "family_account_balance" => "Family Account Balance", - "family_account_of" => "Family Account Of", - "family_to_pay" => "Family To Pay", - "fill_in1" => "Please fill in agreed completion date", - "fill_in2" => "Please fill in payment arrangement", - "fill_in3" => "Please fill in the staff guarantor", - "finance_home" => "Finance Home", - "for_episode_started" => "for episode started on", - "hospital_to_pay" => "Hospital To Pay (General Discount)", - "hospital_to_pay_select" => "Hospital To Pay (Selected Discount)", - "inactive" => "inactive", - "patient_name" => "Patient's Name", - "inpatient_billing" => "In-Patient Billing", - "inpatient_deposit" => "Inpatient Cash Deposit", - "inpatient_deposits" => "Inpatient Deposits", - "inpatient_payment" => "Inpatient Payment", - "insurance_status" => "CHI Status", - "insurance_to_pay" => "CHI To Pay", - "insured" => "Insured", - "investigation_items" => "Investigation Items", - "investigation_original_episode" => "Investigations from original episode started on", - "investigation_payment" => "Investigation Payment", - "investigation_payments" => "Investigations Payments", - "investigation_prices" => "Investigation Prices", - "investigation_receipt" => "Investigation Receipt", - "investigation_title" => "Investigation for episode started on", - "investigations" => "Investigations", - "invoice_number" => "Invoice Number", - "no" => "no", - "no_consultation_in_period" => "No consultation services taken/paid during this episode", - "no_deposit_made" => "No deposits made yet", - "no_items_to_pay_for" => "There are no items to pay for", - "no_new_ordered_treatments" => "There are no new ordered treatments for this patient", - "no_ordered_investigations" => "There are no ordered investigations for this episode", - "no_ordered_procedures" => "There are no ordered procedures for this episode", - "no_ordered_sundries" => "There are no ordered sundries for this episode", - "no_ordered_optics" => "There are no ordered optical items for this episode", - "no_patient_billing_generated" => "No patient billing generated for this patient", - "no_patient_episode" => "No Patient Episodes Found", - "other_services" => "Other Services", - "paid" => "Paid", - "paid_consultations" => "Paid consultations", - "patient_amount" => "Patient Amount", - "patient_amount_paid" => "Patient Amount Paid", - "patient_amount_zero" => "Patient amount to pay is zero", - "patient_category" => "Patient Category", - "patient_category_to_pay" => "Patient Category To Pay", - "patient_discount" => "Patient Discount", - "patient_finance" => "Patient Finance", - "patient_information" => "Patient Information", - "patient_names" => "Patient Names", - "patient_number" => "Patient Number", - "patient_ran_away" => "Patient was labelled as 'Ran Away Without Paying'", - "patient_to_pay" => "Patient To Pay", - "services_patient_to_pay" => "Services Patient To Pay", - "procedures_patient_to_pay" => "Procedures Patient To Pay", - "investigation_patient_to_pay" => "Investigation Patient To Pay", - "sundries_patient_to_pay" => "Sundries Patient To Pay", - "optics_patient_to_pay" => "Optical Items Patient To Pay", - "treatment_patient_to_pay" => "Treatment Patient To Pay", - "services_total" => "Services Total", - "procedures_total" => "Procedures Total", - "investigation_total" => "Investigation Total", - "sundries_total" => "Sundries Total", - "optics_total" => "Optical Items Total", - "treatment_total" => "Treatment Total", - "pay_for_investigation" => "Pay for these investigations", - "pay_for_procedures" => "Pay for these procedures", - "pay_for_sundries" => "Pay for these sundries", - "pay_for_treatment" => "Pay for this treatment", - "pay_later" => "Pay Later", - "payment_date" => "Payment Date", - "price" => "Price", - "price_list_category" => "Price List Category", - "print" => "Print", - "print_receipt" => "Print Receipt", - "procedure_items" => "Procedure Items", - "procedure_payment" => "Procedure Payment", - "procedure_payments" => "Procedure Payments", - "procedure_prices" => "Procedure Prices", - "procedure_receipt" => "Procedure Receipt", - "procedures" => "Procedures", - "procedures_for_episode_started" => "Procedures for episode started on", - "procedures_original_episode" => "Procedures from original episode started on", - "quantity" => "Quantity", - "receipt_number" => "Receipt Number", - "amount" => "Amount", - "central_billing_title" => "Patient Bill for episode of", - "consultation_services" => "Consultation and other services", - "error_message" => "An error occurred. Please try again or consult the IT specialist if error persists", - "investigation_name" => "Investigation Name", - "item_name" => "Item Name", - "item_price" => "Item Price", - "item_quantity" => "Item Quantity", - "no_investigations" => "No new investigations ordered", - "no_procedures" => "No new procedures ordered", - "no_sundries" => "No new sundries ordered", - "no_optics" => "No new optical items ordered", - "no_treatment" => "No new treatments ordered", - "procedure_name" => "Procedure Name", - "select_service" => "Select Service", - "service" => "Service", - "subtotal" => "Subtotal", - "sundry_name" => "Sundry Name", - "unit_cost" => "Unit cost", - "received_by" => "Received By", - "received_on" => "Received On", - "records_in_the_system" => "records in the system", - "refund_patient" => "Refund Patient", - "search_results" => "Search Results", - "select" => "Select", - "service_items" => "Service Items", - "service_payment" => "Services Payment", - "service_prices" => "Service Prices", - "services_payment" => "Services Payment", - "services_receipt" => "Services Receipt", - "staff_guarantor_to_pay" => "Staff Guarantor To Pay", - "sundries" => "Sundries", - "sundries_for_episode" => "Sundries for episode started on", - "optics_for_episode" => "Optical Items for episode started on", - "optics_items" => "Optical Items", - "optics_item" => "Optical Item", - "optics_subtotals" => "Optical Items Subtotals", - "optics_quantities" => "Optical Items Quantities", - "sundries_items" => "Sundries Items", - "sundries_payment" => "Sundries Payment", - "sundries_quantities" => "Sundries Quantities", - "sundries_receipt" => "Sundries Receipt", - "optical_receipt" => "Optical Items Receipt", - "sundries_subtotals" => "Sundries Subtotals", - "sure_of_complete_payment" => "Are you sure you want to complete this payment", - "there_are_no_registered" => "There are no registered", - "to_pay" => "To Pay", - "total" => "Total", - "total_amount" => "Total Amount", - "treatment" => "Treatment", - "treatment_for_episode" => "Treatment for episode started on", - "treatment_items" => "Treatment Items", - "treatment_payment" => "Treatment Payment", - "treatment_quantities" => "Treatment Quantities", - "treatment_receipt" => "Treatment Receipt", - "treatment_subtotals" => "Treatment Subtotals", - "unpaid" => "Unpaid", - "unpaid_investigations" => "Unpaid investigations", - "unpaid_procedures" => "Unpaid procedures", - "unpaid_sundries" => "Unpaid sundries", - "unpaid_treatment" => "Unpaid treatment", - "valid_amount_warning" => "Please input a valid patient to pay amount", - "valid_patient_amount" => "Please input a valid patient to pay amount", - "was_refunded" => "was refunded", - "yes" => "yes", - "partial_payment" => 'Partial Payment', - "submit" => "Submit", - "cancel" => 'Cancel', - "ward_discount_amount" => "Ward Discount Amount", - "paid_amount_excess" => "Total amount paid exceeds amount to pay", - "ward_discount_deposits" => "Ward Discount Deposits", - "done_by" => "Done By", - "fee" => "Fee", - "staff_in_charge" => "Staff In Charge", - "patient_debts" => "Patient Debts", - "customer_episode_statement" => "Customer Episode Statement", - "paid_with_patient_account_wallet" => "Paid With Patient Account Wallet", - "paid_with_family_account_wallet" => "Paid With Family Account Wallet", - "eye_glasses" => "Optical Items", - "eye_glasses_payment" => "Optical Items Payment", - "this_patient_has_used_more_than_their_credit_limit_of" => "This patient has used more than their credit limit of", - "ok" => "O.K", - "customer_episode_statement_from" => "Customer Episode Statement From", - "consultation_and_services" => "Consultation and Services", - "invoiced_services" => "Invoiced Services", - "invoiced_on" => "Invoiced On", - "paid_services" => "Paid Services", - "billed_on" => "Billed On", - "unpaid_services" => "Unpaid Services", - "invoiced_sundries" => "Invoiced Sundries", - "paid_sundries" => "Paid Sundries", - "invoiced_investigations" => "Invoiced Investigations", - "paid_investigations" => "Paid Investigations", - "ordered_on" => "Ordered On", - "drugs" => "Drugs", - "drug_name" => "Drug Name", - "invoiced_drugs" => "Invoiced Drugs", - "paid_drugs" => "Paid Drugs", - "unpaid_drugs" => "Unpaid Drugs", - "unpaid_debt_plan" => "Unpaid Debt Plan", - "paid_debt_plan" => "Paid Debt Plan", - "purchased_from_else_where" => "Will Be Purchased From Elsewhere", - "invoiced_procedures" => "Invoiced Procedures", - "paid_procedures" => "Paid Procedures", - "payments" => "Payments", - "inpatient_bills" => "Inpatient Bills", - "chi_amount" => "CHI Amount", - "incurred_from" => "Incurred From", - "amount_to_pay" => "Amount To Pay", - "total_to_pay" => "Total To Pay", - "total_paid_by_the_patient" => "Total Paid by The Patient", - "total_amount_refunded" => "Total Amount Refunded", - "total_left_to_pay" => "Total Left To Pay", - "reviewed_from" => "Reviewed From", - "edit_claim_number" => "Edit Claim Number", - "patient_debt_plan" => "Patient Debt Plan", - "central_billing_payments" => "Central Billing Payments", - "items" => "Items", - "cancel_central_billing" => "Cancel Central Billing", - "services_co_payment" => "Services Co-Payment", - "services_one_off_discount_amount" => "Services One Off Discount Amount", - "procedures_co_payment" => "Procedures Co-Payment", - "procedures_one_off_discount_amount" => "Procedures One Off Discount Amount", - "investigation_co_payment" => "Investigation Co-Payment", - "investigation_one_off_discount_amount" => "Investigation One Off Discount Amount", - "not_covered_by" => "Not Covered By", - "treatments_have_not_yet_been_confirmed_by_pharmacy" => "Treatments have not yet been confirmed in pharmacy", - "treatment_co_payment" => "Treatment Co-Payment", - "treatment_one_off_discount_amount" => "Treatments One Off Discount Amount", - "sundries_co_payment" => "Sundries Co-Payment", - "sundries_one_off_discount_amount" => "Sundries One Off Discount Amount", - "patient_co_payment_share" => "Patient Co-Payment Share", - "patient_dependant_of" => "Patient Dependant Of", - "dependant_balance" => "Dependant's Balance", - "available_wallets" => "Available Wallets", - "family_account" => "Family Account", - "current_balance" => "Current Balance", - "amount_to_pay_from_family_account" => "Amount To Pay From Family Account", - "patient_account" => "Patient Account", - "amount_to_pay_from_patient_account" => "Amount To Pay From Patient Account", - "cash_to_pay" => "Cash To Pay", - "one_off_discount_amount" => "One Off Discount Amount", - "one_off_discount_memo" => "One Off Discount Memo", - "add_payment_method" => "Add Payment Method", - "add_one_off_discount" => "Add One Off Discount", - "progressive_treatment_balance" => "Progressive Treatment Balance", - "transaction_date" => "Transaction Date", - "central_billing_items" => "Central Billing Items", - "close" => "Close", - "cancel_receipt" => "Cancel Receipt", - "invoiced" => "Invoiced", - "print_invoice" => "Print Invoice", - "cancel_invoice" => "Cancel Invoice", - "over_due_fees" => "Overdue fees", - "This_patient_has_not_paid_for" => "This patient has not paid for", - "in_recent_episodes" => "in recent episodes", - "dismiss" => "Dismiss", - "add_to_current_bill" => "Add to current bill", - "unpaid_debts" => "Unpaid Debts", - "this_patient_not_paid_debts_of" => "This patient has not paid debts of", - "co_payment_share_slash_top_up" => "Co-Payment Share/Top up", - "patient_to_pay_debts" => "Patient To Pay Debts", - "patient_category_invoices" => "Patient Category Invoices", - "debt_plan_payments" => "Debt Plan Payments", - "pay_with" => "Pay With", - "patient_collective_bills" => "Patient Collective Bills", - "services" => "Services", - "treatments" => "Treatments", - "ordered" => "Ordered", - "generated_on" => "Generated On", - "first_name" => "First Name", - "last_name" => "Last Name", - "national_id" => "National ID", - "insurance_group" => "CHI Group", - "non_staff_guarantor" => "Non Staff Guarantor", - "first_installment_date" => "First Installment Date", - "second_installment_date" => "Second Installment Date", - "third_installment_date" => "Third Installment Date", - "fourth_installment_date" => "Fourth Installment Date", - "add_new" => "Add New", - "add_new_non_staff_guarantor" => "Add new non-staff guarantor", - "save" => "Save", - "tel" => "Telephone", - "original_print_date" => "Original Print Date", - "reprint_date" => "Reprint Date", - "patient_debts_paid" => "Patient Debts Paid", - "patient_paid_with" => "Patient Paid With", - "printed_on" => "Printed On", - "printed_by" => "Printed By", - "by" => "By", - "ref" => "REFERENCE", - "collective_bills_receipt" => "Collective Bills Receipt", - "central_billing_receipt" => "Central Billing Receipt", - "dependant_patient_category" => " (Dependant Patient Category)", - "chi_payments" => "CHI Payments", - "no_payment_items_found" => "No Payment Items Found", - "patient_co_payment" => "Patient Co-Payment", - "chi_to_pay" => "CHI To Pay", - "quantities" => "Quantities", - "chi_deposit_receipt" => "CHI Deposit Receipt", - "paid_by_chi" => "Paid By CHI", - "patient_debts_unpaid" => "Patient Debts Unpaid", - "order_created_by" => "Order Created By", - "order" => "Order", - "pos_order_number" => "POS", -]; diff --git a/docker/streamline-src/resources/lang/en/patient_payment_methods.php b/docker/streamline-src/resources/lang/en/patient_payment_methods.php deleted file mode 100644 index 495796df..00000000 --- a/docker/streamline-src/resources/lang/en/patient_payment_methods.php +++ /dev/null @@ -1,44 +0,0 @@ - "Active", - "add_row" => "Add Row", - "payment_methods" => "Payments Methods", - "name" => "Name", - "edit" => "Edit", - "delete" => "Delete", - "add_payment_method" => "Add Payment Method", - "view_payment_methods" => "View Payment Methods", - "activate_payment_methods" => "Activate Payment Methods", - "patient_payment_methods_report" => "Patient Payment Methods Report", - "report" => "Report", - "all_staff" => "ALL STAFF", - "collected_by" => "Collected By", - "payment_method" => "Payment Method", - "All" => "ALL", - "cash" => "Cash", - "TODAY" => "TODAY", - "YESTERDAY" => "YESTERDAY", - "CUSTOM_DATE" => "CUSTOM DATE", - "DATE_RANGE" => "DATE RANGE", - "patient_name" => "Patient Name", - "amount_paid" => "Amount Paid", - "receipt_number" => "Receipt Number", - "billing_point" => "Billing Point", - "billed_by" => "Billed By", - "date" => "Date", - "total" => "Total", - "all" => "All", - "activate" => "Activate", - "edit_patient_payment_methods" => "Edit Patient Payment Methods", - "patient_payment_methods" => "Patient Payment Methods", - "patient_payment_method_name" => "Patient Payment Method Name", - "deleted_at" => "Deleted At", - "is_ref_required" => "Is Reference Number Required", - "created_at" => "Created At", - "created_by" => "Created By", - "yes" => "Yes", - "no" => "No", - "ref_number" => "Reference Number", - "ref_number_by" => "Reference Number By", - "integrated_payment" => "Integrated Payment", -]; \ No newline at end of file diff --git a/docker/streamline-src/resources/lang/en/patients.php b/docker/streamline-src/resources/lang/en/patients.php deleted file mode 100755 index c6636181..00000000 --- a/docker/streamline-src/resources/lang/en/patients.php +++ /dev/null @@ -1,219 +0,0 @@ - "Activate", - "add_new_county" => "Add new county", - "add_new_district" => "Add new district", - "add_new_parish" => "Add new parish", - "add_new_subcounty" => "Add new sub county", - "add_new_village" => "Add new village", - "age" => "Age", - "all" => "All", - "all_staff" => "All Staff", - "any_hospital_contact" => "Any hospital contact?", - "appointment_cancelled" => "Appointment has been cancelled", - "appointment_date" => "Appointment Date", - "appointment_time" => "Appointment Time", - "appointments" => "Appointments", - "are_you_sure" => "Are you sure?", - "assign_clinic" => "Assign Clinic", - "assign_incharge" => "Assign Incharge", - "assigned_clinic" => "Assigned Clinic", - "assigned_incharge" => "Assigned In-Charge", - "cancel" => "Cancel", - "cancel_appointment_failed" => "Cancelling appointment failed. Please try again", - "cancel_appointment_warning" => "Are you sure you want to cancel the appointment? This action can not be reversed", - "category" => "Category", - "citizenship" => "Citizenship", - "clear_search" => "Clear search", - "clinic" => "Clinic", - "clinic_allocation" => "Clinic Allocation", - "comments" => "Comments", - "country_of_origin" => "Country of Origin", - - "county" => "County", - "county_exist" => "County already Exists", - "county_success" => "new county has been added", - "create" => "Create", - "create_new_appointment" => "Create new appointment", - "dashboard" => "Dashboard", - "date_of_birth" => "Date of Birth", - "date_registered" => "Date registered", - "deactivate_patient" => "Deactivate Patient", - "delete" => "Delete", - "details" => "Details", - "district" => "District", - "select_registered_date" => "Select Registered Date", - "today" => "TODAY", - "yesterday" => "YESTERDAY", - "custom_date" => "CUSTOM DATE", - "date_range" => "DATE RANGE", - "print_patients_cards" => "Print Patients' Cards", - "patients_registered_today" => "Patients Registered Today", - "select_patients" => "Select Patients", - "date_on" => "Date On", - "start_date" => "Start Date", - "end_date" => "End Date", - "district_exist" => "District already Exists", - "dont_assign_incharge" => "Don't assign in-charge", - "edit" => "Edit", - "edit_patient" => "Edit Patient", - "email" => "Email", - "female" => "Female", - "fill_name" => "Please fill out a name", - "first_name" => "First Name", - "full_names" => "Full Names", - "inactive_patients" => "Inactive Patients", - "add_patient" => "Add Patient", - "hash" => "#", - "gender" => "Gender", - "incharge" => "Incharge", - "insurance" => "Insurance", - "insurance_group" => "Insurance group", - "last_name" => "Last Name", - "last_patient_visit" => "Last patient visit", - "lc_one" => "Name of LC1 chairman", - "referred_from"=>"Referred From", - "main_details" => "Main Details", - "male" => "Male", - "marital_status" => "Marital status", - "months" => "Months", - "name_of_contact" => "Name of the contact in", - "national_id" => "National ID Number", - "foreigner_or_refugee" => "Select Foreigner / Refugee", - "add_new_country_of_origin" > "Add New Country", - "foreigner" => "Foreigner", - "refugee" => "Refugee", - "new_details" => "New Details", - "new_district_success" => "new district has been added", - "new_occupation_error" => "Error occured. New occupation has not been added", - "new_patient" => "New patient", - "next_of_kin" => "Next of kin's name", - "next_of_kin_phone" => "Next of kin's phone", - "next_of_kin_relationship" => "Relationship to next of kin", - "no_records_found" => "No records found", - "no_visit_yet" => "No visit yet", - "not_assigned" => "Not Assigned", - "occupation" => "Occupation", - "other_details" => "Other Details", - "other_names" => "Other Names", - "parish" => "Parish", - "parish_exist" => "Parish already Exists", - "parish_success" => "new parish has been added", - "patient_category" => "Patient category", - "patient_contact" => "Patient Contact", - "patient_information" => "Patient Information", - "patient_name" => "Patient Name", - "patient_number" => "Patient Number", - "print_cards" => "Print Cards", - "patient_search" => "Patient Search", - "patients" => "Patients", - "patients_registered" => "patients registered", - "phone" => "Phone number", - "phone_owner" => "Phone owner", - "phone_owner_name" => "Phone owner's name", - "preferred_language" => "Preferred Language", - "previous_details" => "Previous Details", - "primary_diagnosis" => "Primary Diagnosis", - "register" => "Register", - "register_county" => "Register a new county", - "register_district" => "Register a new district", - "register_occupation" => "Register a new occupation", - "register_parish" => "Register a new parish", - "register_subcounty" => "Register a new sub county", - "register_village" => "Register a new village", - "registered_patients" => "REGISTERED PATIENTS", - "religion" => "Religion", - "reschedule_appointment_warning" => "Are you sure you want to reschedule the appointment? This action can not be reversed", - "residence" => "Residence", - "save" => "Save", - "search" => "Search", - "search_criteria" => "Search Criteria", - "search_first_name" => "Search with patient first name", - "search_last_name" => "Search with patient last name", - "search_patient_number" => "Search by patient number", - "search_results" => "Search Results", - "select" => "select", - "select_patient_history" => "SELECT PATIENT HISTORY", - "self" => "Self", - "start_appointment" => "Start Appointment", - "sub_county" => "Sub county", - "sub_county_exists" => "Sub-County already Exists", - "subcounty_success" => "new sub county has been added", - "total_results" => "Total results", - "user" => "User", - "valid_number_years" => "Please enter valid number of years", - "view" => "View", - "view_patients" => "View patients", - "village" => "Village", - "village_exists" => "Village already Exists", - "village_success" => "new village has been added", - "years" => "Years", - "add_new_company" => "Add new company", - "company_slash_employer" => "Company / Employer", - "register_company" => "Register Company", - "company_name" => "Company Name", - "contact" => "Contact", - "identifier" => "Identifier", - "add_new_residence" => "Add new residence", - "phone_of_next_of_kin" => "Phone of next of kin", - "date" => "Date", - "mother_name" => "Name of mother", - "children" => "Children", - "is_test_patient" => "Is Patient Being Used For Test Purposes?", - "similar_patients" => "Similar Patients", - "close" => "Close", - "patient_appointments_report" => "Patient appointments report", - "patient_appointments" => "Patient appointments", - "clinics" => "Clinics", - "outcome" => "Outcome", - "from" => "From", - "to" => "To", - "submit" => "Submit", - "name" => "Name", - "number" => "Number", - "comment" => "Comment", - "comment_by" => "Comment By", - "appointment_actions" => "Appointment actions", - "select_actions" => "Select actions", - "reschedule_appointment" => "Reschedule Appointment", - "cancel_appointment" => "Cancel Appointment", - "other" => "Other", - "other_appointment_action" => "Other appointment action", - "patient_details" => "Patient Details", - "possible_patient_duplicates" => "Possible Patient Duplicates", - "patient_duplicates" => "Patient Duplicates", - "patient_record_created_on" => "Patient Record Created On", - "possible_duplicate_records" => "Possible duplicate record", - "merge_records" => "Merge Records", - "select_master_record_or_fields_to_keep" => "Select master record or fields to keep", - "select_which_values_to_keep" => "Select which values to keep", - "all_values_from" => "All values from", - "complete" => "Complete", - "confirm_appointment" => "Confirm Appointment", - "reason_for_deactivating_patient" => "Reason For De-activating Patient", - "view_appointment_requests" => "View Appointment Requests", - "reason_for_deactivation" => "Reason For Deactivation", - "deleted_by" => "Deleted By", - "deleted_on" => "Deleted On", - "add_new_occupation" => "Add new occupation", - "yes" => "Yes", - "no" => "No", - "created_by" => "Registered By", - "confirm_fingerprint" => "Confirm Fingerprint", - "capture_fingerprint" => "Capture Fingerprint", - "patient_fingerprint" => "Patient FingerPrint", - "phone_number" => "Phone Number", - "patient_registration_field_name" => "Registration Field Name", - "patient_registration_field_compulsory" => "Is Registration Field Compulsory?", - "patient_registration_field_options" => "Choose to set dropdown options for the Registration Field", - "patient_registration_fields" => "Patient Registration Fields", - "patient_registration_field" => "Patient Registration Field Options", - "create_patient_registration_fields" => "Create Patient Registration Fields", - "view_patient_registration_fields" => "View Patient Registration Fields", - "edit_patient_registration_fields" => "Edit Patient Registration Fields", - "inactive_patient_registration_fields" => "Inactive Patient Registration Fields", - "text"=>"Text", - "compulsory"=>"Compulsory", - "joined_chi_scheme" => "Joined Scheme", - "print_patient_card" => "Print Patient Card", -]; diff --git a/docker/streamline-src/resources/lang/en/payments.php b/docker/streamline-src/resources/lang/en/payments.php deleted file mode 100644 index 56b72f42..00000000 --- a/docker/streamline-src/resources/lang/en/payments.php +++ /dev/null @@ -1,124 +0,0 @@ - "Activate", - "create_payment_item" => "Create Payment Item", - "home" => "Home", - "finance_home" => "Finance Home", - "payments_voucher" => "Payments Voucher", - "memo" => "Memo", - "payment_made_on" => "Payment made on", - "item" => "Item", - "quantity" => "Quantity", - "unit_cost" => "Unit Cost", - "amount" => "Amount", - "total" => "Total", - "received_by" => "Received By", - "printed_by" => "Printed By", - "name" => "Name", - "signature" => "Signature", - "edit_payments" => "Edit Payments", - "payment_items" => "Payment Items", - "vendor_slash_supplier" => "Vendor / Supplier", - "expense_account" => "Expense Account", - "payment" => "Payment", - "update_payment" => "Update Payment", - "new_payment" => "New Payment", - "create_or_register_bill" => "Create / Register Bills", - "received_inventory_bills" => "Received Inventory Bills", - "bills" => "Bills", - "expenses_report" => "Expenses Report", - "make_payment" => "Make Payment", - "ADD_PAYMENT_ITEM" => "ADD PAYMENT ITEM", - "edit_unit_price" => "Edit unit price", - "add_item" => "Add Item", - "bank_account_details" => "Bank Account Details", - "account" => "Account", - "payment_items_total" => "Payment Items Total", - "submit_payment" => "Submit Payment", - "EDIT_PAYMENT_ITEM_PRICE" => "EDIT PAYMENT ITEM PRICE", - "new_unit_cost" => "New Unit Cost", - "confirm_edit" => "Confirm Edit", - "cancel" => "Cancel", - "payments" => "Payments", - "add_vendor" => "Add Vendor", - "services_receipt" => "Services Receipt", - "discounts_applied" => "Discounts Applied", - "patient_to_pay" => "Patient to pay", - "view_payments" => "View Payments", - "vendor" => "Vendor", - "bill_due_date" => "Bill Due Date", - "bill_number" => "Bill Number", - "payable_account" => "Payable Account", - "action" => "Action", - "bill_memo" => "Bill Memo", - "total_amount" => "Total Amount", - "add_new_supplier" => "Add new supplier", - "supplier_name" => "Supplier Name", - "company" => "Company", - "mobile_number" => "Mobile Number", - "address" => "Address", - "save_changes" => "Save Changes", - "close" => "Close", - "staff" => "Staff", - "inactive_bills" => "Inactive Bills", - "billing_number" => "Billing Number", - "due_date" => "Due Date", - "item_quantities" => "Item Quantities", - "item_amounts" => "Item Amounts", - "bill_total" => "Bill Total", - "bill_not_yet_verified" => "Bill not yet verified", - "perform_bulk_payment" => "Perform Bulk Payment", - "amount_to_be_paid" => "Amount To Be Paid", - "payment_date" => "Payment Date", - "bank_account" => "Bank Account", - "account_balance" => "Account Balance", - "make_bulk_payment" => "Make Bulk Payment", - "bill_payments_voucher" => "Bill Payments Voucher", - "payment_detail" => "Payment Detail", - "print_payments_voucher" => "Print Payments Voucher", - "items" => "Items", - "amount_paid" => "Amount Paid", - "paid_from_bank" => "Paid From Bank", - "transaction_date" => "Transaction Date", - "record_date" => "Record Date", - "undo_payment" => "Undo Payment", - "invoices_home" => "Invoices Home", - "generate_invoice" => "Generate Invoice", - "create_inventory_bill" => "Create Inventory Bill", - "item_name" => "Item Name", - "bill_per_item" => "Bill Per Item", - "cost" => "Cost", - "quotation_approved_by" => "Quotation Approved By", - "quotation_received_by" => "Quotation Received By", - "items_received_on" => "Items Received On", - "save_bill" => "Save Bill", - "create_bill_received_inventory" => "Create Bills (Received Inventory)", - "generated_by" => "Generated By", - "all_vendors" => "ALL VENDORS", - "select_date" => "Select Date", - "end_date" => "End Date", - "date_on" => "Date On", - "submit" => "Submit", - "item_type" => "Item Type", - "supplier" => "Supplier", - "approved_by" => "Approved By", - "received_on" => "Received on", - "details" => "Details", - "bill_already_reconciled_message" => "This bill can not be edited or deleted because it has a reconciled transaction", - "edit_bill" => "Edit Bill", - "edit" => "Edit", - "payment_already_reconciled_message" => "This payment can not be edited or deleted because it has a reconciled transaction", - "delete" => "Delete", - "ok" => "OK", - "item_memo" => "Item Memo", - "bill_already_paid_message" => "This bill can not be edited or deleted because it has a payment", - "please_note" => "Please Note", - "bill_date" => "Bill Date", - 'received_quantity'=>'Received Quantity', - 'received_bill_per_item'=>'Received Bill Per Item', - 'received_cost'=>'Received Cost', - 'approved_quantity'=>'Approved Quantity', - 'approved_bill_per_item'=> 'Approved Bill Per Item', - 'approved_cost'=>'Approved Cost', - 'approved_total_amount'=>'Approved Total Amount', -]; \ No newline at end of file diff --git a/docker/streamline-src/resources/lang/en/pharmacy.php b/docker/streamline-src/resources/lang/en/pharmacy.php deleted file mode 100755 index 1e71ae67..00000000 --- a/docker/streamline-src/resources/lang/en/pharmacy.php +++ /dev/null @@ -1,294 +0,0 @@ - "Actions", - "add_dose" => "Add dose", - "add_more_drugs" => "Add more drugs", - "address" => "Address", - "all_records" => "All records", - "already_dispensed" => "Already dispensed", - "alter" => "Alter", - "alter_prescriptions" => "Alter Prescriptions", - "amount" => "Amount", - "balance_on_ward" => "Balance On Ward", - "by" => "by", - "cancel" => "Cancel", - "clear_search" => "Clear search", - "comment" => "Comment", - "selling_value"=>"Selling Value", - 'previous_requisition_from'=>'Previous Requisition From', - "comments" => "Comments", - "company" => "Company", - "complete" => "Complete", - "complete_request" => "Complete request", - "confirm_dispensing" => "Confirm Dispensing", - "confirm_drugs" => "Confirm Drugs", - "cost_value" => "Cost value", - "custom_date" => "CUSTOM DATE", - "dashboard" => "Dashboard", - "date" => "Date", - "date_from" => "Date From", - "date_on" => "Date On", - "date_range" => "DATE RANGE", - "date_requested" => "Date Requested", - "date_started" => "Date Started", - "date_to" => "Date To", - "days" => "Days", - "department" => "Department", - "dispense" => "Dispense", - "dispensed" => "Dispensed", - "dispensed_by" => "Dispensed By", - "dispensing_receipt" => "Dispensing receipt", - "dose" => "Dose", - "drug" => "Drug", - "drug_name" => "Drug Name", - "duration" => "Duration", - "duration_in_days" => "Duration in days", - "edit_dispensing_details" => "Edit Dispensing details", - "edit_requisition" => "Edit requisition", - "edit_stock" => "Edit stock", - "email" => "Email", - "end" => "End", - "end_date" => "End Date", - "expected_date" => "Expected Date", - "expiry_date" => "Expiry Date", - "frequency" => "Frequency", - "inadequate_funds" => "Inadequate Funds", - "incoming_prescriptions" => "Incoming prescriptions", - "instruction" => "Instruction", - "instructions" => "Instructions", - "items" => "Items", - "last_24_hours" => "Last 24 hours", - "mild" => "Mild", - "mobile_number" => "Mobile Number", - "moderate" => "Moderate", - "name" => "Name", - "no_drug_search_yet" => "No drugs have been searched yet", - "no_incoming_prescriptions" => "There are no incoming prescriptions", - "no_records" => "No records", - "no_records_for_search" => "No records available for this search query", - "number" => "Number", - "other" => "Other", - "out_of_stock" => "Out of stock", - "paid_and_dispensed" => "PAID AND DISPENSED", - "paid_but_pending" => "PAID BUT PENDING", - "patient_category" => "Patient Category", - "patient_name" => "Patient Name", - "patient_number" => "Patient Number", - "payment" => "Payment", - "pharmacist" => "Pharmacist", - "pharmacy" => "Pharmacy", - "pharmacy_stock" => "Pharmacy Stock", - "pharmacy_stock_sheet" => "Pharmacy stock sheet", - "phone" => "Telephone", - "please_search_records" => "Please search for records", - "prescribed_by" => "Prescribed by", - "prescribed_on" => "Prescribed on", - "prescription_details_for" => "Prescription Details for", - "prescription_dispensed_warning" => "This prescription has already been dispensed and cannot be modified", - "previous_requisitions" => "Previous requisitions", - "price" => "Price", - "print" => "Print", - "print_all_receipts" => "Print all receipts", - "print_requisition" => "Print requisition", - "quantity" => "Quantity", - "quantity_dispensed" => "Quantity Dispensed", - "quantity_requested" => "Quantity Requested", - "quantity_returned" => "Quantity Returned", - "received_by" => "Received by", - "request_for_requisition" => "Requisition For ", - "request_from_requisition" => "Requisition From ", - "requested_by" => "Requested by", - "requisition_number" => "Requisition Number", - "requisition_receipt" => "Requisition receipt", - "requisition_type" => "Requisition type", - "requisitions" => "Requisitions", - "resume_requisition" => "Resume requisition", - "sale_value" => "Sale value", - "save_for_later" => "Save for later", - "saved_for_requisition" => "Saved for later requisitions", - "search" => "Search", - "search_criteria" => "Search criteria", - "search_name" => "Search Name", - "select_date" => "Select Date", - "select_drugs_ward_dispensing" => "SELECT DRUGS FOR WARD DISPENSING", - "select_type_of_error" => "Please select type of error", - "select_ward" => "Select Ward", - "selected" => "Selected", - "severe" => "Severe", - "severity_of_error" => "Severity of error", - "show_patients_all_wards" => "Showing patients from all wards", - "showing_results_from" => "Showing results from", - "start" => "Start", - "stock" => "Stock", - "submit" => "Submit", - "submit_requisition_type" => "Submit Requisition Type", - "supplier" => "Supplier", - "supplier_name" => "Supplier Name", - "take" => "Take", - "to" => "To", - "from" => "From", - "today" => "TODAY", - "total" => "Total", - "total_results" => "Total results", - "type_of_error" => "Type of error", - "units" => "Units", - "unpaid_and_pending" => "UNPAID AND PENDING", - "unpaid_but_dispensed" => "UNPAID BUT DISPENSED", - "update_requisition" => "Update Requisition", - "view" => "View", - "view_saved_for_later" => "View saved for later", - "view_ward_dispensing" => "View ward dispensing", - "ward" => "Ward", - "ward_allocation" => "WARD ALLOCATION", - "ward_dispensing_chart" => "Ward dispensing per chart", - "wards" => "Wards", - "wrong_dosage" => "Wrong Dosage", - "wrong_frequency" => "Wrong Frequency", - "yes" => "yes", - "yesterday" => "YESTERDAY", - "confirm_ward_dispensation_per_chart" => "Confirm Ward Dispensations Per Chart", - "admission_date" => "Admission Date", - "chart_date" => "Charts Date", - "dispensing_details" => "Dispensing Details", - "quantity_given" => "Quantity Given", - "view_inpatient_sheet" => "View Inpatient sheet", - "view_ward_prescription" => "View Ward Prescription", - "view_details" => "View details", - "quantity_total" => "Quantity Total", - "action" => "Action", - "details_for" => "Details For", - "details" => "Details", - "go_to_inpatient_sheet" => "Go to Inpatient Sheet", - "received_by_title" => "RECEIVED BY", - "approved_on_title" => "APPROVED ON", - "approved_by_title" => "APPROVED BY", - "approve" => "Approve", - "incoming_ward_chart" => "Incoming Ward Chart", - "approve_and_dispense" => "Approve And Dispense", - "edit_ward_dispensing_chart" => "Edit Ward Chart", - "create_chart_for_ward" => "Create ward chart for", - "approved_and_dispensed_on" => "Approved and dispensed on", - "pharmacy_drugs_stock_reconciliation" => "Pharmacy drugs stock reconciliation", - "pharmacy_system_stock" => "Pharmacy system stock", - "pharmacy_physical_stock" => "Pharmacy physical stock", - "drugs_stock_reconciliation_report" => "Drugs stock reconciliation report", - "drugs_stock_reconciliation_report_details" => "Drugs stock reconciliation report details", - "staff_in_charge" => "Staff In Charge", - "reconciliation_id" => "Reconciliation Id", - "reconciled_by" => "Reconciled By", - "performed_on" => "Performed on", - "pharmacy_drugs_stock_reconciliation_report" => "Pharmacy drugs stock reconciliation report", - "cost_price" => "Cost Price", - "selling_price" => "Selling Price", - "requisitioned_by" => "Requisitioned by", - "sundries_stock_reconciliation_report_details" => "Sundries Stock Reconciliation Report Details", - "pharmacy_sundries_stock_reconciliation_report" => "Sundries Stock Reconciliation Report", - "edit_chart" => "Edit Chart", - "confirm_prescription_details" => "Confirm Prescription Details", - "progressive_prescriptions" => "Progressive Prescription", - "first_dispense" => "First Dispense", - "to_be_purcharsed_elsewhere" => "To Be Purchased Elsewhere", - "confirm" => "Confirm", - "confirm_and_dispense_progressively" => "Confirm and Dispense Progressively", - "progressive_treatments" => "Progressive Treatments", - "search_by_patient" => "Search By Patient", - "date_first_ordered" => "Date First Ordered", - "date_last_updated" => "Date Last Updated", - "select" => "Select", - "there_are_no_unconfirmed_progessive_treatments" => "There are no unconfirmed Progressive Treatments", - "confirm_progressive_treatment" => "Confirm Progressive Treatment", - "original_prescription" => "Original Prescription", - "treatment_given" => "Treatment Given", - "drugs" => "Drugs", - "quantities_dispensed" => "Quantities Dispensed", - "created_on" => "Created On", - "not_dispensed" => "Not Dispensed", - "paid_comma" => "Paid, ", - "not_paid_comma" => "Not Paid, ", - "total_amount_prescribed_so_far" => "Total Amount Prescribed So Far", - "total_amount_remaining" => "Total Amount Remaining", - "prescibe_new_treatment" => "Prescribe New Treatment", - "quantity_prescribed" => "Quantity Prescribed", - "quantity_to_dispense" => "Quantity To Dispense", - "cancel_progressive_treatment" => "Cancel Progressive Treatment", - "search_by_drug" => "Search By Drug", - "dispensation_report_details" => "Dispensation Report Details", - "out_patient_department" => "Out Patient Department", - "patient" => "Patient", - "dispensed_on" => "Dispensed On", - "clinic" => "Clinic", - "in_patient_department" => "In Patient Department", - "select_items_to_reconcile" => "Select items to reconcile", - "note" => "Note", - "stock_differences_are_reflected_in" => "Stock diffferences are reflected in the", - "if_it_is_not_opening_stock" => "if is not the opening stock", - "if_it_is_the_opening_stock_then_the_affected_account" => "If it is the opening stock, the affected account is Opening Inventory Account", - "select_a_date_range" => "Select a date or date range", - "add_new_supplier" => "Add new supplier", - "close" => "Close", - "save_changes" => "Save changes", - "date_of_admission" => "Date Of Admission", - "drugs_given_so_far" => "Drugs Given So Far", - "drug_and_qty_given" => "Drug & Quantity Given", - "add_drug_small" => "add drug", - "update_chart" => "Update Chart", - "unconfirmed_prescriptions" => "Unconfirmed Prescriptions", - "confirmed_prescriptions" => "Confirmed Prescriptions", - "prescription_date" => "Prescription Date", - "unconfirmed_title" => "UNCONFIRMED", - "confirmed_title" => "CONFIRMED", - "category" => "Category", - "time_of_chart_submission" => "Time of chart submission", - "source_ward" => "Source ward", - "status" => "Status", - "dispensation_report_drugs" => "Dispensation Report Drugs", - "dispensation_report" => "Dispensation Report", - "search_by" => "Search By", - "dispensed_quantity_opd" => "Dispensed Quantity (OPD)", - "dispensed_quantity_ward" => "Dispensed Quantity (Wards)", - "dispensed_total" => "Dispensed Total", - "dispensation_report_patients" => "Dispensation Report Patients", - "drugs_dispensed" => "Drugs Dispensed", - "drugs_quantities" => "Drugs Quantities", - "time_dispensed" => "Time Dispensed", - "cancel_dispensation" => "Cancel Dispensation", - "requisitioned_between" => "Requisitioned between", - "date_given" => "Date Given", - "quantity_to_return" => "Quantity to return", - "return_drugs" => "Return Drugs", - "cancel_requisition" => "Cancel Requisition", - "add_general_comment" => "Add General Comment", - "pharmacy_sundries_stock_sheet" => "Pharmacy sundries stock sheet", - "export_data_to_copy_csv_pdf" => "Export data to Copy, CSV, Excel, PDF & Print", - "sundry_name" => "Sundry Name", - "cancalled_treatments" => "Cancelled Treatments", - "search_date" => "Search Date", - "date_cancelled" => "Date Cancelled", - "drugs_ordered" => "Drugs Ordered", - "restore_prescription" => "Restore Prescription", - "cancelled_progressive_treatments" => "Cancelled Progressive Treatments", - "primary_diagnosis" => "Primary Diagnosis", - "secondary_diagnosis" => "Secondary Diagnosis", - "treatment_order_comments" => "Treatment Order Comments", - "cancel_treatment" => "Cancel Treatment", - "cancel_prescription" => "Cancel Prescription", - "ward_dispensing_per_chart_request" => "Ward dispensing per chart request", - "incoming_ward_charts_requests" => "Incoming ward charts requests", - "ward_dispensing_per_chart_report" => "Ward dispensing per chart report", - "return_drugs_per_chart" => "Return drugs per chart", - "view_more" => "View More", - "submit_chart" => "Submit Chart", - "click" => "Click", - "to_confirm_dispensations_for_approval" => "to confirm dispensations for approval of the chart", - "eye" => "Eye", - "item_name" => "Item Name", - "store_stock" => "Store Stock", - "quantity_in_pharmacy" => "Quantity in Pharmacy", - 'pharmacy_opticals_stock_sheet'=>'Pharmacy opticals stock sheet', - 'opticals_stock_reconciliation_report_details'=>'Optical Stock Reconciliation Report Details', - 'pharmacy_optical_stock_reconciliation'=>'Pharmacy opticals stock reconciliation', - "total_variance"=>"Total Variance", - "general_comment"=>"General Comment", - "batch_to_return"=>"Batch to return", - 'confirm_return_drug'=>"Confirm Return Drugs", -]; diff --git a/docker/streamline-src/resources/lang/en/point_of_sale.php b/docker/streamline-src/resources/lang/en/point_of_sale.php deleted file mode 100755 index 21fb79bb..00000000 --- a/docker/streamline-src/resources/lang/en/point_of_sale.php +++ /dev/null @@ -1,88 +0,0 @@ - 'Point Of Sale', - 'home' => 'Home', - 'dashboard' => 'Dashboard', - 'sale_date' => 'Sale Date', - 'first_name' => 'First Name', - 'last_name' => 'Last Name', - 'patient_category' => 'Patient Category', - 'phone_number' => 'Phone Number', - 'patient_information' => 'Patient Information', - 'select' => 'Select', - 'select_items' => 'SELECT ITEMS', - 'quantity' => 'Quantity', - 'unit_cost' => 'Unit Cost', - 'duration_in_days' => 'Duration In Days', - 'cost' => 'Cost', - 'patient_is_allergic' => 'Patient is Allergic', - 'out_of_stock' => 'Out Of Stock', - 'eye_glass_total' => 'EYE GLASS TOTAL', - 'drug' => 'Drug', - 'dosage' => 'Dosage', - 'dispense' => 'Dispense', - 'price' => 'Price', - '_select' => '-select-', - '_frequency' => 'Frequency', - 'add_dose' => 'Add dose', - 'duration' => 'Duration', - 'close' => 'Close', - 'cancel' => 'Cancel', - 'sundry' => 'Sundry', - 'add_new' => 'Add New', - 'patient' => 'PATIENT', - 'add_referral' => 'Add Referral', - 'select_a_patient' => '-- select a patient --', - 'selected_sundries_orders' => 'Selected sundries orders', - 'ugx' => '.UGX', - 'quantity_to_dispense' => 'Quantity To Dispense', - 'selected' => 'Selected', - 'no_drugs_have_been_searched_yet' => 'No drugs have been searched yet', - 'drugs_total' => 'DRUGS TOTAL', - 'sundries_total' => 'SUNDRIES TOTAL', - 'selected_items' => 'SELECT ITEMS', - 'drug_with_quantity' => 'DRUGS WITH QUANTITY', - 'drug_with_prescription' => 'DRUGS WITH PRESCRIPTION', - 'eye_glasses' => 'EYE GLASSES', - 'sundries' => 'SUNDRIES', - 'all' => 'ALL', - 'items' => 'ITEMS', - 'drugs' => 'Drugs', - 'do_you_wish_to_proceed' => 'Do you Wish to Proceed ?', - 'proceed' => 'Proceed', - 'confirm_selection' => 'Confirm Selection', - 'patient_order_request' => 'Patient Order Request', - 'print' => 'Print', - 'tel' => 'Tel', - 'email' => 'Email', - 'cashier' => 'Cashier', - 'new_patient' => 'New Patient', - 'existing_patient' => 'Existing Patient', - 'date' => 'Date', - 'patient_name' => 'Patient Name', - 'patient_number' => 'Patient Number', - 'description' => 'Description', - 'insured' => '(Insured)', - 'total_cost' => 'Total Cost', - 'total_to_pay' => 'Total to pay', - 'approve_and_print_order' => 'Approve and Print Order', - 'insurance_to_pay' => 'Insurance to pay', - 'staff_guarantor_to_pay' => 'Staff guarantor to pay', - 'to_pay' => 'To Pay', - 'drugs_with_quantity' => 'DRUGS WITH QUANTITY', - 'drugs_with_prescription' => 'DRUGS WITH PRESCRIPTION', - 'balance_to_pay' => 'Balance to pay', - 'hospital_to_pay' => 'Hospital to pay', - 'patient_to_pay' => 'Patient to pay', - 'streamline' => '© Stre@mline', - 'services' => 'Services', - 'treatments' => 'Treatments', - 'record_created_on' => 'Record Created On', - 'record_created_by' => 'Record Created By', - 'patient_names' => 'Patient Name', - 'print_date' => 'Print Date', - 'record_date' => 'Record Date', - 'dispensed_by' => 'Dispensed By', - "totals" => "Totals", -]; \ No newline at end of file diff --git a/docker/streamline-src/resources/lang/en/prescriptions.php b/docker/streamline-src/resources/lang/en/prescriptions.php deleted file mode 100755 index 01e1a5df..00000000 --- a/docker/streamline-src/resources/lang/en/prescriptions.php +++ /dev/null @@ -1,61 +0,0 @@ - "Add dose", - "altered_and_dispensed" => "Altered and Dispensed", - "chronic_drugs" => "Chronic drugs", - "close" => "Close", - "complete_prescription" => "Complete Prescription", - "confirm_selection" => "Confirm Selection", - "confirm_treatment" => "Confirm Treatment", - "dashboard" => "Dashboard", - "date" => "Date", - "days" => "days", - "dispense" => "Dispense", - "dispensed" => "Dispensed", - "dosage" => "Dosage", - "drug" => "Drug", - "duration" => "Duration", - "duration_in_days" => "Duration in days", - "grand_total" => "Grand total", - "instruction_to_patient" => "Instruction to patient", - "instructions" => "Instructions", - "no_drugs_searched" => "No drugs have been searched yet", - "no_treatment_history" => "No treatment history for this episode", - "out_of_stock" => "Out of stock", - "patient_home" => "Patient Home", - "patient_is_allergic" => "Patient is Allergic", - "patient_treatment" => "Patient Treatment", - "pending" => "Pending", - "prescribe_drugs" => "Prescribe Drugs", - "prescription" => "Prescription", - "price" => "Price", - "print" => "Print", - "prompt" => "Prompt", - "quantity" => "Quantity", - "select" => "select", - "select_dosage_warning" => "Please fill out the Dosage and Duration of selected drugs", - "select_one_drug" => "Select atleast one drug", - "selected" => "Selected", - "status" => "Status", - "total" => "Total", - "total_cost" => "Total Cost", - "treatment_for_episode" => "Treatment for Episode started on", - "treatment_for_given_episode" => "Treatment Given For This Episode", - "ward_prescription" => "Ward prescription", - "yes" => "Yes", - "prescription_refill" => "Prescription refill", - "drug_refill_from" => "Drug refill from", - "drug_is_expired" => "Drug is expired", - "previous_prescriptions" => "Previous prescriptions", - "prescribed_by" => "Prescribed By", - "clinic" => "Clinic", - "primary_diagnosis" => "Primary diagnosis", - "other_diagnoses" => "Other diagnoses", - "view_details" => "View Details", - "dispensation_status" => "Dispensation status", - "order_comments" => "Order comments", - "instruction" => "Instruction", - "first_dispense_quantity" => "First Dispense Quantity", - 'optical_is_expired'=>"Optical is expired", - "first_dispense_duration" => "First Dispense Duration", -]; diff --git a/docker/streamline-src/resources/lang/en/procedures.php b/docker/streamline-src/resources/lang/en/procedures.php deleted file mode 100755 index 56dc75c4..00000000 --- a/docker/streamline-src/resources/lang/en/procedures.php +++ /dev/null @@ -1,56 +0,0 @@ - "Activate", - "activate_procedures" => "Activate Procedures", - "add_more" => "Add more", - "add_procedure" => "Add Procedure", - "are_you_sure" => "Are you sure?", - "cancel" => "Cancel", - "category" => "Category", - "chart_of_account_name" => "Chart of account name", - "compulsory_fields_warning" => "Please fill in all compulsory fields", - "confirm_procedures" => "Confirm Procedures", - "cost" => "Cost", - "create" => "Create", - "dashboard" => "Dashboard", - "delete" => "Delete", - 'is_diagnosis_available'=> 'Is Diagnosis Available', - "edit" => "Edit", - "edit_procedure" => "Edit procedure", - "episode_started_on" => "for Episode started on", - "insurance" => "Insurance", - "insurance_coverage" => "Insurance coverage", - "insured_price" => "Insured Price", - "next" => "Next", - "no" => "No", - "non_insured_price" => "Cash Price", - "of" => "of", - "order_procedures" => "Order procedures for", - "ordering_procedures" => "Ordering procedures", - "paid" => "Paid", - "pending_procedures" => "Pending procedures", - "performed" => "Performed", - "procedure_name" => "Procedure name", - "procedures" => "Procedures", - "prompt" => "Prompt", - "reference" => "Reference", - "select" => "Select", - "select_any_from_list" => "Select any from list", - "select_procedure" => "Select procedure", - "select_procedure_orders" => "Selected procedure orders", - "select_procedures" => "Select Procedures", - "select_procedures_above" => "Select procedures above", - "setup" => "setup", - "skip" => "Skip", - "step" => "Step", - "is_procedure_available" => "Is the Procedure available?", - "submit" => "Submit", - "submit_procedures" => "Submit Procedures", - "total" => "Total", - "un_checked_warning" => "Unchecked procedures will be removed from the list except those already performed. Continue?", - "view" => "view", - "view_procedures" => "View Procedures", - "yes" => "Yes", - "failed_options" => "Failed to load options.", - "patient_home" => "Patient Home" -]; diff --git a/docker/streamline-src/resources/lang/en/service_items.php b/docker/streamline-src/resources/lang/en/service_items.php deleted file mode 100755 index 09e5892f..00000000 --- a/docker/streamline-src/resources/lang/en/service_items.php +++ /dev/null @@ -1,53 +0,0 @@ - "Add Service", - "dashboard" => "Dashboard", - "services" => "Services", - "streamline_setup" => "Stre@mline setup (Step 6 of 12)", - "service_name" => "Service name", - "non_insured_price" => "Cash Price", - "chart_account_name" => "Chart of account name", - "chart_of_account" => "Chart of Account", - "insurance_coverage" => "Insurance coverage", - "yes" => "Yes", - "no" => "No", - "price" => "Price", - "insured_price" => "Insured Price", - "description" => "Description", - "type_of_service" => "Type of Service", - "consultation" => "Consultation", - "copayment" => "Co-Payment", - "service" => "Service", - "select_any_list" => "Select any from list", - "next" => "Next", - "skip" => "Skip", - "submit" => "Submit", - "cancel" => "Cancel", - "edit_service" => "Edit service", - "edit" => "Edit", - "activate_services" => "Activate Services", - "activate" => "Activate", - "are_you_sure" => "Are you sure?", - "delete" => "Delete", - "view_services" => "View Services", - "attach_staff_name" => "Attach Staff Name", - "patient_home" => "Patient Home", - "ordering_services" => "Ordering Services", - "select_services" => "Select Services", - "confirm_services" => "Confirm Services", - "select" => "select", - "service" => "Service", - "quantity" => "Quantity", - "unit_cost" => "Unit Cost", - "total_cost" => "Total Cost", - "selected_service_orders" => "Selected Service Orders", - "is_service_available" => "Is the service available?", - "pending_services" => "Pending Services", - "paid" => "Paid", - "select_services_above" => "Select services above", - "submit_services" => "Submit Services", - "for_episode" => "for episode", - "order_service" => "Order services", - "total" => "Total" -]; diff --git a/docker/streamline-src/resources/lang/en/stores.php b/docker/streamline-src/resources/lang/en/stores.php deleted file mode 100755 index b5a51c79..00000000 --- a/docker/streamline-src/resources/lang/en/stores.php +++ /dev/null @@ -1,511 +0,0 @@ - "CUSTOM DATE", - "DATE_RANGE" => "DATE RANGE", - "TODAY" => "TODAY", - "YESTERDAY" => "YESTERDAY", - "add_markup_on_drugs" => "Add markup on drugs", - "add_markup_on_sundries" => "Add markup on sundries", - "add_new_supplier" => "Add new supplier", - "add_supplier" => "add supplier", - "address" => "Address", - "approval_status" => "Approval Status", - "approve_for_purchase" => "Approve for purchase", - "approve_for_purchase_camel_case" => "Approve for purchase", - "approved_by" => "Approved by", - "approved_on" => "Approved on", - "authorised_by" => "Authorised by", - 'radiologies_stock_reconciliation'=>'Radiologies Stock Reconciliation', - "average_consumption_details" => "Average consumption details", - "average_monthly_drug_consumptions" => "Average monthly drug consumption", - "avg_drug_consumption_per_month" => "Average drug consumption per month", - "electronic_stock_card"=>"Item Inventory Report", - "received_stock" => "Received Stock", - "opening_stock" => "Opening Stock", - "cost_value" => "Opening Stock Cost", - "sale_value" => "Opening Stock Sale Value", - "received_cost_value" => "Received Stock Cost", - "received_sale_value" => "Received Stock Sale Value", - "issued_stock" => "Issued Stock", - 'issued'=>'Issued ', - 'from_stores_to'=>'From Stores to', - "issued_cost_value" => "Issued Stock Cost", - "issued_sale_value" => "Issued Stock Sale Value", - "closing_stock" => "Closing Stock", - "cost_unit" => "Unit Cost", - "bill" => "Bill", - "bill_for" => "Bill for", - "bill_for_items" => "Bill for items", - "bill_quotation" => "Bill Quotation", - "bill_per_item" => "Bill Per Item", - "brand_name" => "Brand Name", - "buying_price" => "Buying Price", - "cancel" => "Cancel", - "checked_by" => "Checked by", - "close" => "Close", - "company" => "Company", - "complete_request" => "Complete request", - "confirm_items_receipt" => "Confirm items receipt", - "confirm_receipt" => "Confirm Receipt", - "confirm_receipt_of" => "Confirm receipt of", - "consumption_for" => "Consumption for", - "cost_price" => "Cost Price", - "date_created" => "Date Created", - "date_from" => "Date From :", - "date_issued" => "Date Issued", - "date_on" => "Date On", - "date_ordered" => "Date ordered", - "date_requested" => "Date Requested", - "date_to" => "Date To :", - "details" => "Details", - "difference" => "Difference", - "drug" => "Drug", - "drug_name" => "Drug Name", - "drug_names" => "Drug Names", - "drugs_issued_to_pharmacy" => "Drugs issued to pharmacy report", - "drugs_issued_to_pharmacy_report" => "Drugs issued to pharmacy report", - "drugs_reconciliation_report" => "Drugs stock reconciliation report", - "drugs_stock_reconciliation" => "Drugs stock reconciliation", - "drugs_stock_sheet" => "Drugs stock sheet", - "drugs_total_value" => "Drugs Total Value", - "general_items_report" => "General Items Report", - "general_items_stock_reconciliation" => "General Items stock reconciliation", - "general_items_stock_reconciliation_report" => "General Items stock reconciliation report", - "general_items_stock_sheet" => "General Items stock sheet", - "general_items_total_value" => "General Items Total Value", - "optical_items_total_value" => "Optical Items Total Value", - "edit_a_temporary_quotation" => "Edit a temporary quotation", - "edit_quotation" => "Edit quotation", - "edit_stock" => "Edit stock", - "end" => "End", - "end_date" => "End Date", - "enter_bill" => "Enter Bill", - "expected_date" => "Expected Date", - "expiry_date" => "Expiry Date", - "export_data_to_csv_excel_pdf" => "Export data to Copy, CSV, Excel, PDF & Print", - "grand_total" => "Grand Total", - "issue_date" => "Issue Date", - "issue" => "Issue ", - "issue_drugs" => "Issue Drugs", - "issue_items" => "Issue items", - "issue_out" => "Issue Out", - "issue_out_to_lab" => "Issue Out To Lab", - "issue_out_to_pharmacy" => "Issue Out To Pharmacy", - "issued_by" => "Issued By", - "issued_drugs" => "Issued drugs", - "issued_drugs_from_store" => "Issued drugs from store", - "issued_items" => "Issued items", - "issued_labs" => "Issued Labs", - "issued_labs_from_store" => "Issued Labs from store", - "issued_on" => "Issued on", - "issued_sundries" => "Issued sundries", - "issued_sundries_from_store" => "Issued sundries from store", - "issued_to_pharmacy" => "Issued to pharmacy report", - "item_name" => "Item Name", - "item_type" => "Item Type", - "labs_stock_sheet" => "Labs stock sheet", - 'labs_reconciliation_report'=> "Labs Reconciliation Report", - 'labs_stock_reconciliation_report_details'=>"Lab Stock Reconciliation Report Details", - 'radiologies_stock_reconciliation_report_details'=>"Radiologies Stock Reconciliation Report Details", - 'radiologies_reconciliation_report'=>'Radiologies Reconciliation Report', - "radiology_stock_sheet" => "Radiology stock sheet", - "radiology_sundry_requisition"=>"Radiology Sundry Requisition", - "radiology_sundries_stock_sheet"=>"Radiology Sundries Stock Sheet", - "radiology_sundries_stock_sheet_details"=>"Radiology Sundries Stock Sheet Details", - "submit_request"=>"Submit Request", - "imaging_stock"=>"Imaging Stock", - "markup" => "MarkUp", - "mobile_number" => "Mobile Number", - "name" => "Name", - "net_price" => "Net Price", - "net_total" => "Net Total", - "no_pending_requisitions" => "No pending requisitions for items", - "no_records" => "No records", - "no_records_available_for_this_search" => "No records are available for this search", - "no_records_found" => "No records found", - "number_of_items" => "No. Of Items", - "requisition_source"=>"Requisition Source", - "number_items" => "Items", - "order_type" => "Order type", - "our_order_ref" => "Our Order reference", - "per_item" => "Per Item", - "pharmacy_stock" => "Pharmacy Stock", - "pharmacy_stock_value" => "Pharmacy Stock Value", - "pharmacy_value" => "Pharmacy Value", - "select_item" => "Select item", - "physical_stock" => "Physical stock", - "please_search_for_records" => "Please search for records", - "previous_issued_items" => "Previous issued items", - "previous_purchase_orders" => "Previous purchase orders", - "previous_item_order_history" => "Previous item order history", - "previous_order_history" => "Previous order history", - "issued_items_history" => "Issued Items history", - "previous_quotation_of" => "Previous quotation of", - "previous_quotations" => "Previous quotations", - "previous_received_items" => "Previous received items", - "previously_issued_items_details" => "Previously issued item details", - "previously_received_items" => "Previously received items", - "previously_received_items_details" => "Previously received item details", - "print" => "Print", - "print_details" => "Print Details", - "purchase_order" => "Purchase order", - "purchase_order_confirmation" => "Purchase order confirmation", - "labs_stock_reconciliation" => "Labs stock reconciliation", - "quantity" => "Quantity", - "quantity_consumed" => "Quantity consumed", - "quantity_issued" => "Quantity Issued", - "quantity_request" => "Quantity Request", - "quantity_requested" => "Quantity Requested", - "quantity_required" => "Quantity Required", - "quotation_by" => "Quotation By", - "quotation_number" => "Quotation Number", - "quotation_type" => "Quotation type", - "item_type"=> "Item Type", - "reason_for_difference" => "Reason for difference", - "receive_items" => "Receive items", - "received" => "Received", - "received_by" => "Received by", - "received_date" => "Received Date", - "received_on" => "Received On", - "report" => "Report", - "request_a_quotation" => "Request a quotation", - "request_a_quotation_camel_case" => "Request a quotation", - "request_for_quotation" => "Request for Quotation", - "requested_by" => "Requested By", - "requisition_number" => "Requisition #", - "requisitioned_by" => "Requisitioned By", - "resume_drugs_reconciliation" => "Resume drugs stock reconciliation", - "resume_sundries_reconciliation" => "Resume sundries stock count", - "resume_general_items_reconciliation" => "Resume general items stock count", - "general_items_reconciliation_report" => "General items stock reconciliation report", - "save_changes" => "Save changes", - "saved_quotations" => "Saved quotations", - "search" => "Search", - "select" => "select", - "select_item" => "Select Item", - "sell_value" => "Sell value", - "selling_price" => "Selling Price", - "set_markup_tag" => "Set markup tags", - "showing_consumptions_for_month_of" => "Showing consumption for the month of", - "shrinkage" => "Shrinkage", - "start" => "Start", - "start_date" => "Start Date", - "stock_card" => "Stock card", - "stock_reconciliation_report" => "Stock reconciliation report", - "stock_vale" => "Stock value", - "stock_value_report" => "Stock Value Report", - "store_stock" => "Store Stock", - "unit_stock" => "Unit Stock", - "stock"=> "Stock", - "store_stock_value" => "Store Stock Value", - "store_value" => "Store Value", - "stores" => "Stores", - "stores_home" => "Stores Home", - "streamline_powered_by_kisiizi" => "Stre@mline Powered By Kisiizi Hospital and Innovation Streams Ltd", - "submit" => "Submit", - "sundries_reconciliation_report" => "Sundries stock reconciliation report", - "sundries_stock_reconciliation" => "Sundries stock reconciliation", - "sundries_stock_sheet" => "Sundries stock sheet", - "sundries_total_value" => "Sundries Total Value", - "sundry_name" => "Sundry Name", - "supplier" => "Supplier", - "supplier_name" => "Supplier Name", - "system_stock" => "System stock", - "taxes" => "Taxes", - "total" => "Total", - "total_amount" => "Total amount", - "total_bill" => "Total Bill", - "total_stock_value" => "Total Stock Value", - "units" => "Units", - "update_quotation" => "Update Quotation", - "validated_by" => "Validated By", - "variance_in_stock" => "Variance in stock (Shs)", - "total_variance"=>"Total Variance", - "ward_consumption_report" => "Wards consumption report", - "your_order_ref" => "Your Order reference", - "items" => "Items", - "add_bill" => "Add Bill", - "total_price" => "Total Price", - "delete" => "Delete", - "receive" => "Receive", - "directly_into_streamline" => "directly into Stre@mline", - "receive_items_directly" => "Receive items directly", - "select_items_to_receive" => "Select items to receive", - "search_criteria" => "Search criteria :", - "total_results" => "Total results :", - "clear_search" => "Clear search", - "names" => "Names", - "receive_into_store" => "Receive Into Store", - "receive_into_labs" => "Receive Into Lab", - "receive_into_pharmacy" => "Receive Into Pharmacy", - "receive_items_option" => "Receive items option", - "batch_number" => "Batch Number", - "date" => "Date", - "stock_value" => "Stock Value", - "cost_value" => "Cost Value", - "select_items_to_requisition" => "Select Items to requisition", - "is_it_initial_stock" => "Is it initial stock count", - "select_all" => "Select all", - "save_for_later" => "Save for later", - "reconcile" => "Reconcile", - "procurement" => "Procurement", - "stock_management" => "Stock Management", - "requests_management" => "Requests Management", - "general_items" => "General Items", - "reports" => "Reports", - "select_chart_of_account_affected" => "Select account affected if stock isn't initial stock of drug", - "please_select_account" => "Please select account affected by variances for drugs whose stock isn't the opening stock", - "issuing_from_batch" => "Issuing from batch", - "approve_and_issue_out" => "Approve and issue out", - "approve_items_requisitions" => "Approve item requisitions", - "approve_requisitioned_items" => "Approve requisitioned items", - "approve" => "Approve", - "requisitioned_items" => "Requisitioned Items", - "supplier_reference" => "Supplier Reference", - "created_by" => "Created by", - "purchase_order_proposal" => "Purchase Order Proposal", - "affected_chart_of_account" => "Affected chart of account", - "general_comment" => "General comment", - "general_items_stock_sheet" => "General items stock sheet", - "package_units" => "Package units", - "general_items_stock_reconciliation" => "General items stock reconciliation", - "view_items" => "View Items", - "cancel_requisition" => "Cancel", - "note" => "Note", - "the_average_monthly_consumption_is_for_last_3_months" => "The Average monthly consumption is for the last 3 months", - "package_unit" => "Package Unit", - "no_of_package_units" => "No. of Package Units", - "quantity_in_each_package_unit" => "Quantity In Each Package Unit", - "bill_per_package_unit" => "Bill Per Package Unit", - "current_cost_price" => "Current Cost Price", - "in_pharmacy" => "in pharmacy", - "in_store" => "in store", - "average_monthly_consumption" => "Average Monthly Consmption", - "memo" => "Memo", - "approve" => "Approve", - "dashboard" => "Dashboard", - "stores" => "Stores", - "stock_card" => "Stock Card", - "average_monthly_drug_consumption" => "Average monthly drug consumption", - "show_consumption_for_the_month_of" => "Showing consumption for the month of", - "date_from" => "Date From", - "date_to" => "Date To", - "search" => "Search", - "consumption_for" => "Consumption for", - "total_value" => "Total value", - "average_monthly_consumption" => "Average monthly consumption", - "batch_no" => "Batch No.", - "add_batch_of" => "add batch of", - "receiver_comment" => "Receiver Comment", - "supplier_title" => "SUPPLIER", - "number_of_package_units" => "Number of Package Units", - "on" => "On", - "select_items_to_request" => "Select items to request", - "you_can_add_more_items_by_searching_from_above" => "You can add more items by searching from them from the above search box", - "quantity_per_package_unit" => "Quantity Per Package Unit", - "select_items_to_reconcile" => "Select the items to reconcile", - "if_not_goint_to_reconcile_all_first_filter" => "If you are not going to reconcile for all the items below, first filter out the items that you want to reconcile for by using the above search field", - "general_item_name" => "General item name", - "this_is_the_account_that_will_be_affected_explanation" => "This is the account that will be affected by the variances incase it is not the intial stock take of the general_item", - "select_a_date_range" => "Select a date or date range", - "staff_in_charge" => "Staff In Charge", - "reconciliation_id" => "Reconciliation ID", - "action" => "Action", - "details" => "Details", - "general_items_stock_reconciliation_details" => "General items stock reconciliation report details", - "reconciled_by" => "Reconciled by", - "performed_on" => "Performed on", - "general_item" => "General Item", - "save_stock" => "Save Stock", - "goods_received_note" => "Goods Received Note", - "print" => "Print", - "goods_received_note_title" => "GOODS RECEIVED NOTE", - "supplier_title" => "SUPPLIER", - "number_of_packages" => "Number of Packages", - "billed_by" => "Billed By", - "delivered_by" => "Delivered By", - "no_in_each_package_unit" => "No. in each package unit", - "add_batch_small" => "add batch", - "lab_sundry_requisition" => "Lab Sundry Requisition", - "lab_sundries_stock_sheet" => "Lab sundries stock sheet", - "lab_stock" => "Lab Stock", - "status" => "Status", - "unit_cost_price" => "Unit Cost Price", - "item" => "Item", - "rfq_no" => "RFQ No.", - "read_less" => "Read Less", - "printed_on" => "Printed On", - "if_not_going_to_reconcile_all_the_first_filter" => "If you are not going to reconcile for all the items below, first filter out the items that you want to reconcile for by using the above search field", - "batch_details_and_others" => "Batch Details(Batch, Quantity, Expiry Date)", - "edit_batch" => "Edit Batch", - "new_batch_number" => "New batch number", - "previous_item_order_history" => "Previous Item Order History", - "previous_item_order_history_details" => "Previous Item Order History Details", - "issued_items_history_details" => "Previously Issued Items History Details", - "not_received" => "Not Received", - "not_approved" => "Not Approved", - "approved_not_received" => "Approved & Not Received", - "see_order" => "See Order", - "number_short" => "No.", - "number" => "Number", - "selling_value"=>"Selling Value", - "receive_into_imaging"=>"Receive Into Imaging", - "batch" => "Batch", - "reconciliation_date" => "Reconciliation Date", - "approved_between" => "Approved between", - "received_status" => "Received Status", - "items" => "Items", - "unreceived" => "Unreceived", - "received_between" => "Received between", - "payment_status" => "Payment Status", - "record_date" => "Record Date", - "paid" => "Paid", - "balance" => "Balance", - "not_paid" => "Not Paid", - "package_unit" => "Package Unit", - "price_per_package_unit" => "Price Per Package Unit", - "delete_received_items" => "Delete Received Items", - "number_of_packages_units" => "Number of Package Units", - "bill_per_package_unit" => "Bill Per Package Unit", - "at" => "at", - "requisitioned_on" => "Requisitioned On", - "these_items_have_been_issued_from_batch" => "These items have been issued out from the following batch numbers", - "quantity_in_each_package" => "Quantity in Each Package", - "quotation_for" => "Quotation for", - "select_AMC_period" => "Select AMC Period", - "LAST_1_MONTH" => "LAST 1 MONTH", - "LAST_3_MONTHS" => "LAST 3 MONTHS", - "LAST_6_MONTHS"=> "LAST 6 MONTHS", - "first_filter_out_items_to_request_msg" => "If you are not going to request for all the items below, first filter out the - items that you want to request for by using the above search field", - "no_records_in_database" => "No records in the database", - "in_stores" => "in stores", - "in_pharmacy" => "in pharmacy", - "order_memo_slash_description" => "Order Memo/Description", - "resume_physical_stock_count" => "Resume physical stock count", - "batch_details" => "Batch details", - "approve_quotation" => "Approve quotation", - "quotation_no" => "Quotation No.", - "receive_from_lpo" => "Receive From LPO", - "receive_directly" => "Receive Directly", - "date" => "Date", - "all_records" => "All records", - "last_24_hours" => "Last 24 Hours", - "custom_date" => "CUSTOM DATE", - "date_range" => "DATE RANGE", - "from" => "From", - "to" => "To", - "search" => "Search", - "select_item_type" => "Select Item Type", - "request_a_temporary_quotation" => "Request a temporary quotation", - "temporary_quotation" => "Temporary quotation", - "stock_reconciliation_report" => "Stock reconciliation report", - "select_a_date_or_a_date_range" => "Select a date or a date range", - "receive_items_options" => "Receive Items Options", - "stock_reconciliation_report_details" => "Stock reconciliation report details", - "stores_stock_sheet" => "Stores stock sheet", - "insured_amount" => "Insured Amount", - "non_insured_amount" => "Non Insured Amount", - "sale_value" => "Sale Value", - "sundries_stock_reconciliation" => "Sundries stock reconciliation", - "select_items_to_reconcile" => "Select items to reconcile", - "add_batch" => "Add batch", - "add_general_comment" => "Add General Comment", - "new_batch_number" => "New Batch Number", - "sundries_stock_reconciliation_report" => "Sundries stock reconciliation report", - "sundries_stock_reconciliation_report_details" => "Sundries stock reconciliation report details", - "store_sundries_stock_sheet" => "Store sundries stock sheet", - "store_radiologies_stock_sheet"=>"Store radiologies stock sheet", - "view_a_list_of_requisitioned_items" => "Viewing a list of requisitioned items", - "temporary" => "Temporary", - "temporary_quotations" => "Temporary Quotations", - "quotations" => "quotations", - "date_started" => "Date Started", - "saved_by" => "Saved By", - "resume_request_for_quotation" => "Resume request for quotation", - "pharmacy_cost_value" => "Pharmacy Cost Value", - "pharmacy_selling_value" => "Pharmacy Selling Value", - "store_cost_value" => "Store Cost Value", - "store_selling_value" => "Store Selling Value", - "pharmacy_stock_selling_value" => "Pharmacy Stock Selling Value", - "store_stock_selling_value" => "Store Stock Selling Value", - "total_stock_selling_value" => "Total Stock Selling Value", - "pharmacy_stock_cost_value" => "Pharmacy Stock Cost Value", - "store_stock_cost_value" => "Store Stock Cost Value", - "total_stock_cost_value" => "Total Stock Cost Value", - "expiring_sundries" => "Expiring Sundries", - "edit_quotation_pricing" => "Edit Quotation Pricing", - "optical_stock_reconciliation" => "Optical items stock reconciliation", - "optical_reconciliation_report" => "Optical items stock reconciliation report", - "optical_name" => "Optical Name", - "unit_cost" => "Unit Cost", - "income_account" => "Income A/c", - "cog_account" => "Cost of Goods A/c", - "non_insured_price" => "Non insured price", - "unit_price" => "Unit Price", - "created_on" => "Created On", - "items_issued_to_pharmacy" => "Items issued to pharmacy", - "issue_optical_items" => 'Issue Optical Items', - "issued_optical_items" => "Issued Optical Items", - "quantity_to_issued" => "Quantity To Issue", - "store_batches" => "Store Batches", - "remove_small" => "Remove", - "cash_price" => "Cash Price", - "chi_price" => "CHI Price", - "lpo_no" => "LPO No", - "rfg_generated_by" => "RFQ Generated By", - "approve_requisition_from_pharmacy" => "Approve requisition from pharmacy", - "approve_from"=>"Approve requisition from ", - "issue_to"=> "Issue Out To", - "quantity_approved" => "Quantity Approved", - "cost_centre" => "Cost Centre", - "cost_center" => "Cost Center", - "item_consumption_report" => "Item consumption report", - 'drugs'=> "Drugs", - 'sundries'=> "Sundries", - 'labs'=>'Labs', - 'radiologies'=>'Radiologies', - 'lab_cost_value'=>'Lab Cost Value', - 'labs_total_value'=>"Labs Total Value", - 'imaging_stock_cost_value'=>"Imaging Stock Cost Value", - 'imaging_stock_selling_value'=>"Imaging Stock Selling Value", - 'radiologies_total_value'=>"Radiologies Total Value", - 'ward_stock'=>"Ward Stock", - 'ward_stock_cost_value'=>"Ward Stock Cost Value", - 'ward_stock_selling_value'=>"Ward Stock Selling Value", - 'ward_cost_value'=>"Ward Cost Value", - 'ward_selling_value'=>"Ward Selling Value", - "labs_stock_selling_value"=>"Lab Stock Selling Value", - "labs_stock_cost_value"=>"Lab Stock Cost Value", - "optical_stock_sheet"=>"Optical Items Stock Sheet", - "optical_stock_reconciliation_report_details"=>"Opticals Stock Reconciliation Report Details", - "optical_stock_reconciliation_report"=>"Opticals Stock Reconciliation Report", - "last_cost_price"=>'Last Cost Price', - "in_lab" =>"in lab", - "in_imaging"=>"in imaging", - "closing_cost_value"=> "Closing Stock Cost Value", - "financial"=>"Financial", - "total_cost_value"=> "Total Cost Value", - "total_sale_value"=> "Total Sale Value", - "closing_sale_value"=> "Closing Stock Sale Value", - "adjusted_stock"=> "Adjusted Stock", - "electronic_stock_card_details"=> "Stock Card Details", - "received_stock_card_details"=> "Received Stock Details", - "issued_stock_card_details"=>"Issued Out Stock Details", - "issued_to"=>"Issued To", - "amc"=>"AMC", - "stock_reorder"=>"Stock Re-order Level", - "to_or_from"=>"To/From", - "voucher_number"=>"Voucher Number", - "qty_in"=>"Qty In", - "qty_out"=>"Qty Out", - "adjustement"=>"Adjustements/Losses", - "balance_on_hand"=>"Balance On Hand", - "pdf_print"=>"PDF Print", - "adjusted_stock_card_details"=>"Adjusted Stock Card Details", - "performed_by"=>"Performed By", - 'reason'=>"Reason", - 'received_total'=>'Received Total' - - -]; diff --git a/docker/streamline-src/resources/lang/en/sundries.php b/docker/streamline-src/resources/lang/en/sundries.php deleted file mode 100755 index 70769c7a..00000000 --- a/docker/streamline-src/resources/lang/en/sundries.php +++ /dev/null @@ -1,55 +0,0 @@ - "Add sundry", - "dashboard" => "Dashboard", - "sundries" => "Sundries", - "create" => "Create", - "streamline_setup" => "Stre@mline setup (Step 10 of 12)", - "sundry_name" => "Sundry name", - "buying_price" => "Buying price", - "non_insured_price" => "Cash price", - "insurance_coverage" => "Insurance coverage", - "yes" => "Yes", - "no" => "No", - "insured_price" => "Insured price", - "income_account" => "Income Account", - "cost_of_goods" => "Cost Of Goods Account", - "inventory_asset_account" => "Inventory Asset Account", - "select_from_list" => "Select any from list", - "next" => "Next", - "skip" => "Skip", - "submit" => "Submit", - "cancel" => "Cancel", - "edit_sundry" => "Edit sundry", - "edit" => "Edit", - "activate" => "Activate", - "activate_sundries" => "Activate sundries", - "are_you_sure" => "Are you sure?", - "delete" => "Delete", - "submit_sundries" => "Submit Sundries", - "select_sundries_above" => "Select sundries above", - "total" => "Total", - "form"=>"Form", - "paid" => "Paid", - "is_sundry_available" => "Is the Sundry available?", - "pending_sundries" => "Pending sundries", - "selected_sundries_orders" => "Selected sundries orders", - "select" => "Select", - "sundry" => "Sundry", - "quantity" => "Quantity", - "unit_cost" => "Unit Cost", - "total_cost" => "Total Cost", - "confirm_sundries" => "Confirm Sundries", - "select_sundries" => "Select Sundries", - "patient_home" => "Patient Home", - "ordering_sundries" => "Ordering sundries", - "order_sundries" => "Order sundries for", - "for_episode" => "for Episode started on", - 'sundry_forms'=> "Sundry Forms", - "add_sundry_form"=>"Add Sundry Form", - "sundry_form"=>"Sundry Forms", - "activate_sundry_form"=>"Activate Sundry Form", - "sundry_form_name"=>"Sundry Form Name", - "edit_sundry_form"=>"Edit Sundry Form", -]; diff --git a/docker/streamline-src/resources/lang/en/users.php b/docker/streamline-src/resources/lang/en/users.php deleted file mode 100755 index f8fb4dab..00000000 --- a/docker/streamline-src/resources/lang/en/users.php +++ /dev/null @@ -1,61 +0,0 @@ - "Cancel", - "submit" => "Submit", - "security_answer" => "Security Answer", - "security_question" => "Security Question", - "secret_pin" => "Secret PIN (Exactly 5 characters long)", - "confirm_password" => "Confirm Password", - "password" => "Password (6 characters minimum)", - "username" => "Username", - "roles_on_streamline" => "Roles on stre@mline", - "when_last_donation" => "When was you last donation?", - "are_willing_to_donate" => "Are you willing to donate blood?", - "no" => "No", - "yes" => "Yes", - "blood_group" => "Blood Group", - "expiry_date" => "Expiry Date", - "registration_number" => "Registration Number", - "council_name" => "Council Name", - "any_council_registration" => "Any council registration?", - "photo" => "Photo", - "position" => "Position", - "email_address" => "Email Address", - "phone_number" => "Phone Number", - "last_name" => "Last Name", - "first_name" => "First Name", - "add_user_error" => "There were some problems with your input.", - "register" => "Register", - "users" => "Users", - "dashboard" => "Dashboard", - "new_user" => "New User", - "edit_user" => "Edit user", - "inactive_users" => "Inactive users", - "inactive" => "Inactive", - "activate" => "Activate", - "are_you_sure" => "Are you sure?", - "user_management" => "User management", - "list_of_users" => "LIST OF USERS", - "delete" => "Delete", - "edit" => "Edit", - "details" => "Details", - "roles" => "Roles", - "names" => "Names", - "view_users" => "View Users", - "change_password" => "Change Password", - "confirm_new_password" => "Confirm New Password", - "new_password" => "New Password", - "current_password" => "Current Password", - "password_expired" => "Password Expired", - "reset_password" => "Reset your password here", - "please_enter_pwd" => "Please enter a new password below", - "reset" => "Reset", - "user_details" => "User details", - "registered_on" => "Registered on", - "council_registration" => "Council registration", - "last_donation" => "Last donation", - "willing_to_donate" => "Willing to donate", - 'no_longer_deletes'=> "Cannot Delete", - 'delete_active_user'=>"The user has been reactivated three times and will now be considered an active user going forward. He/she can therefore no longer be deleted.", -]; diff --git a/docker/streamline-src/resources/lang/en/ward_consumption.php b/docker/streamline-src/resources/lang/en/ward_consumption.php deleted file mode 100755 index caf172a3..00000000 --- a/docker/streamline-src/resources/lang/en/ward_consumption.php +++ /dev/null @@ -1,36 +0,0 @@ - "Wards consumption report", - "report_by" => "Report by", - "select" => "Select", - "ward" => "Ward", - "drug" => "Drug", - "date" => "Date", - "last_24_hours" => "Last 24 hours", - "custom_date" => "Custom Date", - "custom_range" => "Custom Range", - "from" => "From", - "to" => "To", - "search" => "Search", - "results_for" => "Results for", - "quantity_issued_to_ward" => "Quantity issued to ward", - "money_value_quantity_issued" => "Money value(Quantity Issued)", - "quantity_dispensed_patients" => "Quantity dispensed to patients", - "money_value_quantity_dispensed" => "Money Value(Quantity Dispensed)", - "variance" => "Variance", - "details" => "Details", - "no_ward_consumptions" => "There is no ward consumptions in the database", - "total" => "Total", - "consumption_details" => "Consumption details", - "ward_consumption_report" => "WARD CONSUMPTION REPORT", - "wards_consumption_details" => "Wards consumption details", - "stores_home" => "Stores Home", - "details_for" => "Details for", - "dispensed_by" => "Dispensed By", - "quantity_dispensed" => "Quantity Dispensed", - "patient_name" => "Patient Name", - "patient_number" => "Patient Number", - "items_consumption_report" => "Items consumption report", - "unit" => "Unit", -]; diff --git a/docker/streamline-src/resources/lang/en/wards.php b/docker/streamline-src/resources/lang/en/wards.php deleted file mode 100755 index 6e0d58c9..00000000 --- a/docker/streamline-src/resources/lang/en/wards.php +++ /dev/null @@ -1,85 +0,0 @@ - "Add ward", - "dashboard" => "Dashboard", - "wards" => "Wards", - "create" => "Create", - "streamline_setup" => "Stre@mline setup (Step 5 of 12)", - "ward_name" => "Ward name", - "hmis_ward" => "HMIS Ward", - "hmis_wards" => "Hmis Wards", - "select_type" => "Select HMIS Ward", - "select_ward_type" => "Select Ward Type", - "slug" => "Slug", - "type" => "Type", - "ward_beds" => "Ward beds", - "add_another" => "Add Another", - "select_any" => "Select any from list", - "next" => "Next", - "skip" => "Skip", - "submit" => "Submit", - "cancel" => "Cancel", - "edit" => "Edit", - "edit_ward" => "Edit ward", - "activate_wards" => "Activate wards", - "activate" => "Activate", - "are_you_sure" => "Are you sure?", - "delete" => "Delete", - "list_of_wards" => "LIST OF WARDS", - "view_wards" => "View Wards", - "select" => "Select", - "select_ward" => "Select ward", - "error_occurred" => "An error occured. Contact the system administrator", - "bed_category_saved" => "Bed Category Saved", - "comments_saved" => "Comment has been saved", - "bed_no_saved" => "Bed Number Saved", - "historical_anaesthetics" => "Historical Anaesthetics", - "surgery" => "SURGERY", - "anaesthetics" => "ANAESTHETICS", - "theatre_module" => "Theatre Module", - "maternity_summary" => "MATERNITY SUMMARY", - "delivery_record" => "Delivery Record ", - "maternity_admission" => "Maternity Admission", - "inpatient_billing" => "In-Patient Billing", - "inpatient_sheet" => "In-Patient Sheet", - "consultation" => "Consultation", - "triage" => "Triage", - "female" => "Female", - "male" => "Male", - "comments" => "Comments", - "primary_diagnosis" => "Primary diagnosis", - "age" => "Age", - "sex" => "Sex", - "names" => "Names", - "admission" => "Admission", - "bed_category" => "Bed Category", - "bed" => "Bed", - "showing_results_from" => "Showing results from", - "no_ward_selected" => "No ward selected", - "all_records" => "All records", - "last_24_hours" => "Last 24 hours", - "custom_date" => "Custom Date", - "custom_range" => "Custom Range", - "date" => "Date", - "from" => "From", - "to" => "To", - "patient_management" => "PATIENT MANAGEMENT", - "wards_home" => "Wards Home", - "ward_patient_list" => "Ward Patient List", - "ward_list" => "Ward List", - "hmis_ward_list" => "Hmis Ward List", - "hmis_create_ward" => "Create Hmis ward", - "hmis_edit_ward" => "Edit Hmis ward", - "hmis_delete_ward" => "Delete Hmis ward", - "hmis_view_wards" => "View Hmis wards", - "hmis_inactive_wards" => "Deleted Hmis wards", - "create_ward" => "Create ward", - "yesterday" => "Yesterday", - "delete_ward" => "Delete ward", - "today" => "Today", - "inactive_wards" => "Deleted wards", - "is_ward_available" => "Is the Ward available?", - "yes"=>"Yes", - "no"=>"No" -]; diff --git a/docker/streamline-src/resources/lang/pt/antenatal.php b/docker/streamline-src/resources/lang/pt/antenatal.php deleted file mode 100755 index 4653eae5..00000000 --- a/docker/streamline-src/resources/lang/pt/antenatal.php +++ /dev/null @@ -1,127 +0,0 @@ - "Abortos / gravidez ectópica", - "accuracy" => "Precisão", - "add_new_referral" => "Adicionar nova referência", - "add_row" => "Adicionar linha", - "anc_menu" => "Menu AnteNatal", - "anc_registration_id" => "ID de registro ANC", - "anc_template" => "MODELO DE CLÍNICA ANTE-NATAL", - "anc_visit_number" => "Número de Visita A.N.C", - "antanatal_clinic" => "AnteNatal Clinic", - "antenatal_visit" => "Visita AnteNatal", - "aph" => "A.P.H", - "aph_details" => "Detalhes do A.P.H", - "art_clinic_record" => "A.R.T Clinic Record", - "art_treatment_center" => "Centro de Tratamento A.R.T", - "art_treatment_number" => "Número de tratamento A.R.T", - "bednet" => "Rede de cama", - "blood_group" => "Grupo sanguíneo", - "blood_transfusion" => "Transfusão de sangue", - "bmi" => "B.M.I", - "bp" => "B.P", - "checklist" => "Lista de controle", - "comments" => "Comentários", - "complete" => "Completo", - "completion_status" => "Status de conclusão", - "current_gestation_from_dates" => "Gestação atual a partir das datas (+/- 2 semanas)", - "date" => "Encontro", - "days" => "Dias", - "delete_row" => "Excluir linha", - "details" => "Detalhes", - "details_of_anc_visit_of_episode" => "DETALHES DA VISITA ANC DO EPISÓDIO INICIADO EM", - "duration" => "Duração", - "edd" => "E.D.D", - "edit_anc_registration" => "EDITAR CLÍNICA ANTENATAL / REGISTO DE MATERNIDADE", - "edit_pregnancy_registration" => "Editar Registro de Gravidez", - "engagement" => "noivado", - "first_dose_ipt" => "Primeira dose IPT", - "fits" => "Encaixa", - "fits_details" => "Serve para detalhes", - "foetal_heart" => "Coração fetal", - "foetal_heart_rate" => "Frequência cardíaca fetal", - "foetal_heart_regularity" => "Regularidade do coração fetal", - "fundal_height" => "Altura do fundo", - "gestation" => "Gestação", - "gestation_from_edd" => "Gestação de E.D.D", - "gestation_from_fundal_height" => "Gestação atual a partir da altura do fundo, +/- 2 semanas", - "gestation_from_scan" => "Gestação actual a partir da verificação: +/- 2 semanas de verificação precoce, 4 semanas de atraso", - "gravida" => "Grávida", - "health_edu_or_info_given" => "Educação em Saúde / Informação Dada", - "height" => "altura", - "history_of_aph" => "História da A.P.H?", - "history_of_fits" => "História dos ajustes?", - "hiv_status" => "Estado HIV", - "hours" => "horas", - "if_bp_above_160" => "Se a pressão arterial> 160/110, acompanhe urgentemente a paciente até a maternidade para estabilização", - "if_bp_between_140_and_160" => "Se BP 140/100 - 160/110, & pt tiver edema ou proteinúria ou dor de cabeça ou
    visão turva ou histórico de acessos, mude urgentemente para a Maternidade para tratamento", - "if_heart_beat_is_more_than_30" => "Se uma variação> 30 batimentos / minuto da linha de base, então o sofrimento fetal", - "if_in_labour_check_heart_rate" => "Em trabalho de parto, verifique o coração fetal imediatamente após a contração", - "if_patient_relentless" => "Se o paciente estiver inquieto, verifique a SaO2 e peça ajuda.", - "indication" => "Indicação", - "iron_or_folic" => "Ferro / Folic", - "lie" => "Mentira", - "lmp" => "L.M.P", - "location" => "Localização", - "maternity_registration_details" => "DETALHES DE REGISTRO DE CLÍNICA ANTE NATAL / MATERNIDADE", - "months" => "Meses", - "name" => "Nome", - "new_anc_registration_form_header" => "CLÍNICA ANTE-NATAL / REGISTRO DE MATERNIDADE", - "new_pregnancy" => "Nova gravidez", - "new_pregnancy_registration" => "Novo registro de gravidez", - "no" => "Não", - "number" => "número", - "number_of_units" => "N º de Unidades", - "order_ultra_sound_scan" => "Solicitar Exame Ultra Som", - "other_comments" => "Outros comentários", - "outcome" => "Resultado", - "para" => "Para", - "past_obstetric_history" => "História Obstéctrica Passada", - "patient_number" => "Número do paciente", - "patients" => "Pacientes", - "please_make_sure_you_fill_new_pregnancy_details" => "Certifique-se, por favor, de preencher primeiro os novos detalhes da gravidez", - "position" => "Posição", - "postpartum" => "Pós-parto", - "pregnancy_reg_details" => "Detalhes do registro da gravidez", - "presentation" => "Apresentação", - "previous_anc_visits" => "ANC VISITAS ANTERIORES DO EPISÓDIO INICIADO EM", - "previous_pph" => "PPH anterior", - "previous_pph_details" => "Detalhes anteriores do PPH", - "previous_scar" => "Cicatriz Anterior", - "previous_scar_indication" => "Indicação anterior da cicatriz", - "previous_scar_number" => "Número anterior da cicatriz", - "prompt" => "Pronto", - "rate" => "Taxa", - "reference" => "Referência", - "referral_from" => "Encaminhamento de", - "register_anc_visit" => "Criar visita pré-natal", - "registered_on" => "Registrado em", - "registration_id" => "ID do registro", - "regularity" => "Regularidade", - "result" => "Resultado", - "scan_edd" => "Digitalizar E.D.D", - "second_dose_ipt" => "Segunda dose IPT", - "select" => "Selecione", - "symptoms" => "Sintomas", - "tetanus_toxoid" => "Toxóide do tétano", - "third_dose_ipt" => "Terceira dose IPT", - "this_pregnancy" => "Esta gravidez", - "update_and_complete" => "Actualização completa", - "us_scan_edd" => "Digitalização U / S E.D.D", - "vdrl" => "VDRL", - "vdrl_status" => "Status VDRL / RPR", - "view_anc_visit_details" => "Exibir detalhes da visita antanatal", - "view_antenatal_visits" => "Ver visitas pré-natais", - "view_details" => "VER DETALHES", - "view_pregnancies" => "Ver gestações", - "view_pregnancy_details" => "Ver detalhes da gravidez", - "visit_date" => "Data da Visita", - "visit_number" => "Número da visita", - "weeks" => "Semanas", - "weight" => "Peso", - "years" => "Anos", - "yes" => "sim", - "family_history" => "Family History", - "surgical_history" => "Surgical history", - "modify" => "modify change" -]; diff --git a/docker/streamline-src/resources/lang/pt/maternity.php b/docker/streamline-src/resources/lang/pt/maternity.php deleted file mode 100755 index 0b43ede3..00000000 --- a/docker/streamline-src/resources/lang/pt/maternity.php +++ /dev/null @@ -1,178 +0,0 @@ - "Paínel", - "patient" => "Paciente", - "maternity_admission_details" => "Detalhes da admissão à maternidade", - "details_for_episode" => "Os detalhes de admissão de maternidade para o Episódio começaram em", - "maternity_admission_details_for" => "Detalhes de admissão de maternidade para", - "patient_number" => "Número do Paciente", - "blood_group" => "Grupo Sanguineo", - "blood_transfusion_date" => "Data de Transfusão Sanguínea", - "number_of_units" => "Número de unidades", - "comment" => "Comentário", - "gravida" => "Gravida", - "para" => "Para", - "abortion" => "Aborto", - "postpartum" => "Pós-partom", - "previous_pph" => "Hemorragia pós-parto anterior", - "previous_scar" => "Cicatriz Anterior", - "comments_from_pph" => "Outro comentário acerca de Hemorragia pós-parto", - "lmp" => "ültimo período mentrual", - "accuracy" => "Precisão", - "edd" => "Data prevista para o parto", - "referral_from" => "Encaminhamento de", - "progress" => "Progresso", - "hiv_status" => "Estado sobre HIV", - "negative" => "Negativo", - "positive" => "Positivo", - "unknown" => "Dsconhecido", - "hiv_date" => "Data sobre HIV", - "scan_edd" => "Data prevista do parto da digitalização", - "gestation_from_scan" => "Verificação da Gestão a partir do scan", - "history_of_fits" => "História dos Ajustes", - "history_of_aph" => "Histórico de Hemoragia Anteparto", - "obstetric_date" => "Data Obstétrica", - "gestation" => "Gestação", - "outcome" => "Resultado da Gravidez", - "outcome_name" => "Nome do resultado da gravidez", - "comments" => "Comentário", - "current_acute_problems" => "Problemas agudos actuais", - "obstetric_risk_factors" => "Factores de Risco Obstétricos", - "baby" => "BEBÉ", - "received_by" => "Recebido por", - "select" => "seleccione", - "sex" => "Sexo", - "other" => "Outro", - "female" => "Feminino", - "male" => "Masculino", - "ambigous" => "Âmbiguo", - "condition" => "Condição", - "alive" => "Vivo", - "fresh_sb" => "Serviço de parto recente", - "macerated_sb" => "Serviço de parto Macerado", - "weight" => "Peso (Kg)", - "congenital_abnormalities_apparent" => "Anormalidades congênitas aparentes?", - "yes" => "Sim", - "no" => "Não", - "date_of_birth" => "Data de nascimento", - "birth_order" => "Ordem de Nascimento?", - "delivery_date" => "Data do parto", - "delivery_time" => "Hora do parto", - "duration_1st" => "Duração 1ª Fase (horas)", - "duration_2nd" => "Duração 2ª Fase(horas:minutos)", - "duration_3rd" => "Duração 3ª Fase", - "hours" => "Horqs", - "minutes" => "Minutos", - "delivered_by_cadre" => "Entregue por (Cadre)", - "staff" => "Funcionário", - "student" => "Estudante", - "delivered_by_name" => "Entregue por (Nome)", - "save" => "Gravar", - "cancel" => "Cancelar", - "register_location_delivery" => "Registrar um novo local de parto", - "location_of_delivery" => "Local do Parto", - "indication_for_cs" => "Indicação do CS", - "from_surgery_notes" => "das notas da cirurgia", - "mode_of_delivery" => "Modo do parto", - "supervised_by" => "Supervisionado por", - "abortions_pregnancies" => "Abortos / gravidez ectópica", - "post_partum" => "Pós-parto", - "past_obstetric_history" => "História Obstétrica Passada", - "date" => "Data", - "name" => "Nome", - "weeks" => "semanas", - "add_row" => "Adicione linha", - "delete_row" => "Remova linha", - "details" => "Detalhes", - "number" => "Número", - "indication" => "Indicação", - "other_comments" => "Outros comentários", - "blood_transfusion" => "Transfusão sanguínea", - "vdrl_status" => "Estado VDRL/RPR", - "result" => "Resultado", - "location" => "Localização", - "hiv_past_3_months" => "SE NÃO TIVER O TESTE DE HIV NOS ÚLTIMOS 3 MESES ENVIE A AMOSTRA", - "art_treatment_center" => "Centro de Tratamento ART", - "art_treatment_number" => "Número de Tratamento ART", - "art_clinic_record" => "Registo Clínico ART", - "this_pregnancy" => "Esta gravidez", - "number_of_weeks_pregnant" => "Número de semanas de gravidez", - "us_scan_edd" => "Data prevista de verificação do parto do U / S", - "current_gestation_from_scan" => "Gestação actual a partir da verificação: +/- 2 semanas de verificação inicial, 4 semanas de atraso", - "referral_in_from" => "Encaminhamento de", - "add_new_referral" => "Adicionar nova referência", - "fits_details" => "Detalhes ajustados", - "does_mother_cap" => "Esta mãe tem algum problema obstétrico agudo actual??", - "severe_eclampsia" => "Pré-eclâmpsia grave ou eclâmpsia", - "premature_pprom" => "Ruptura prematura de membranas PROM / PPROM", - "aph" => "APH", - "pph" => "PPH", - "iufd" => "IUFD", - "inform_medical_team_warning" => "Informar parteira sênior e equipe médica, elaborar plano de gestão, aconselhar e apoiar os pais", - "born_before_arrival" => "Prématuro", - "mother_current_obstetric_risk" => "Essa mãe tem algum factor de risco obstétrico actual?", - "history_aph_pregnancy" => "História de APH na gravidez actual", - "history_convulsion_pregnancy" => "História de convulsões nesta gravidez", - "diabetes_mellitus" => "Diabetes mellitus", - "epilepsy" => "Epilepsia", - "cardiac_disease" => "Doença cardíaca", - "polyhydramnios" => "Polyhydramnios", - "poor_obstetric_history" => "História obstétrica ruim", - "multiple_pregnancy" => "Gravidez múltipla", - "previous_csections" => "Cesarianas anteriores", - "malpresentation" => "Malpresentação", - "submit_form" => "Submeter Formuário", - "cant_delete_rows" => "Não é possível remover todas as linhas.", - "adding_referral_failed" => "Falha ao adicionar referência", - "adding_referral_success" => "nova referência foi adicionada", - "referral_name" => "Nome de referência", - "perinatal_death_info" => "Formulário de notificação de morte perinatal preenchido e enviado dentro de 24 horas (a parteira é responsável)", - "perinatal_audit_info" => "Formulário de auditoria perinatal completo, preenchido e enviado no prazo de 7 dias (responsável pela maternidade)", - "apgar_1" => "Pontuação de Apgar aos 1 minuto", - "apgar_5" => "Pontuação de Apgar aos 5 minutos", - "apgar_10" => "Pontuação de Apgar aos 10 minutos", - "age_established_respiration" => "Idade estabelecida respiração espontânea regular (Minutos)", - "resuscitation_airway" => "Reanimação - vias aéreas", - "nil" => "Nada", - "bag" => "Bolsa", - "mask" => "Máscara", - "resuscitation_suction" => "Reanimação - sucção", - "advanced_resuscitation" => "Reanimação avançada", - "advanced_resuscitation_ett" => "Reanimação Avançada - ETT", - "advanced_resuscitation_ecm" => "Reanimação Avançada - ECM", - "advanced_resuscitation_drugs" => "Reanimação Avançada - medicamentos administrados", - "vitamin_given" => "Administração de vitamina K por via IM (0,5 mg de pré-termo, 1 mg de termo)", - "moved_to" => "Mudou-se para", - "add_new_ward" => "Adicine nova enfermaria", - "tick_yes_vit_k" => "Marque apenas Sim se tiver certeza de que o bebê recebeu Vit K. Se não tiver certeza, verifique novamente.", - "register_new_ward" => "Register a new ward", - "delivery_record" => "Registo do Parto", - "delivery_for_episode_started" => "O parto começou em", - "delivery" => "PARTO", - "foetal_number" => "Número fetal", - "singleton" => "Único", - "twins" => "Gêmeos", - "triplets" => "Trigêmeos", - "blood_loss" => "Perda de sangue", - "blood_loss_measurement" => "Medição de Perda de Sangue", - "measured" => "Medido", - "estimated" => "Estimado", - "vaginal_delivery" => "[> Parto vaginal de 500 ml ou> 1000 ml em C / S = PPH ].", - "delayed_cord_clamping" => "Fixação tardia do cordão 1-3 minutos para o parto normal, 30 seg - 1 min para CS", - "hospital_pph_protocol" => "PROTOCOLO PPH hospitalar", - "click_for_protocol" => "clique para protocolo", - "clear_airway" => "Se não estiver respirando, estimule e limpe as vias aéreas", - "clamp_cut_cord" => "Se ainda não estiver respirando, prenda e corte o cabo, limpe as vias aéreas, se necessário", - "ventilate_bag_mask" => "ventilar com bolsa e máscara", - "shout_for_help" => "Grite por ajuda", - "meconium_protocol" => "NOTA: siga o protocolo se houver mecônio espesso presente para remover as vias aéreas antes de ventilar", - "submit" => "Submeter", - "fill_out_name" => "Por favor, preencha o nome", - "ward_error" => "Ocorreu um erro. Enfermaria não foi adicionada", - "new_ward_added" => "Nova enfermaria foi adicionada", - "delivery_location_error" => "Ocorreu um erro. Localização do parto não foi adicoonada", - "delivery_location_added" => "Nova lozalização do parto fi adicionada", - "triage_done_on" => "Triagem concluída em", - -]; diff --git a/docker/streamline-src/resources/views/audit_trail/select_patient_and_episode.blade.php b/docker/streamline-src/resources/views/audit_trail/select_patient_and_episode.blade.php deleted file mode 100755 index 1ab940fd..00000000 --- a/docker/streamline-src/resources/views/audit_trail/select_patient_and_episode.blade.php +++ /dev/null @@ -1,115 +0,0 @@ -@extends('layouts.main') - -@push('styles') - -@endpush - -@section('content') -
    -
    -

    Select Patient and Episode

    -
    -
    - -
    -
    - -
    - {{ Form::open(['route' => 'audit_trail.select_patient_and_episode', 'method' => 'ANY', 'role' => 'search']) }} - - {{ Form::hidden('patient_id', 0, ['id' => 'patient_id']) }} - -
    -
    -
    - -
    -
    -
    - -
    -
    - - {{ Form::close() }} - -
    - - @if($patient_searched) -

    {{ $patient->first_name }} {{ $patient->last_name }} ({{ $patient->number }})

    -
    - - @if(count($patient_episodes_details) > 0) - @php - $current_column = 1; - $current_item = 1; - @endphp - - @foreach($patient_episodes_details as $episode) - @if($current_column == 1) -
    - @endif - - - - @if($current_column == 3 || $current_item == count($patient_episodes_details)) -

    - @php $current_column = 1; @endphp - @else - @php $current_column++; @endphp - @endif - - @php - $current_item++; - @endphp - @endforeach - @else -

    Patient has no episodes

    - @endif - @endif -
    -@endsection - -@push('scripts') - - - -@endpush diff --git a/docker/streamline-src/resources/views/general_settings/activate_streamline_modules.blade.php b/docker/streamline-src/resources/views/general_settings/activate_streamline_modules.blade.php deleted file mode 100755 index 651db6c3..00000000 --- a/docker/streamline-src/resources/views/general_settings/activate_streamline_modules.blade.php +++ /dev/null @@ -1,100 +0,0 @@ -@extends('layouts.main') - -@push('styles') - -@endpush - -@section('content') -
    -
    -

    {{ __('general_settings.general_settings') }}

    -
    -
    - -
    -
    - -
    -
    - @include('flash::message') -
    -

    {{ __('general_settings.activate_streamline_modules') }}

    - - {{ Form::open(['route' => 'streamline_modules.store_activated']) }} - -
    -
    -
    - - - - - - - - @foreach($permission_categories as $key => $category) - @if ($key % 2 == 0) - - @endif - - @if (($key + 1) % 2 == 0) - - @endif - @endforeach - @if(count($permission_categories) % 2!= 0) - - @endif - -
    {{ __('general_settings.check_streamline_modules_to_activate') }}
    - {{ Form::checkbox('permission_category[]', $category->id, $category->is_module_active == 1 ? true : false, ['class' => "permission_category form-check-input", 'id'=>'permission_category_'.$category->id,]) }} - -
    -
    -
    -
    - - {{ Form::submit(__('general_settings.activate_streamline_modules'), ["class" => "btn btn-success", 'id' => 'activate_streamline'])}} - - {{ Form::close() }} -
    -
    -
    -@endsection - -@push('scripts') - -@endpush \ No newline at end of file diff --git a/docker/streamline-src/resources/views/general_settings/edit.blade.php b/docker/streamline-src/resources/views/general_settings/edit.blade.php deleted file mode 100755 index d6ccd090..00000000 --- a/docker/streamline-src/resources/views/general_settings/edit.blade.php +++ /dev/null @@ -1,1881 +0,0 @@ -@extends('layouts.main') - -@push('styles') - - - -@endpush - -@section('content') -
    -
    -

    {{ __('general_settings.general_settings') }}

    -
    -
    - -
    -
    - - @include('flash::message') -
    - @if (session()->has('streamline_setup')) -

    - {{ __('general_settings.streamline_setup') }} -

    - @endif - - {{ Form::open(['route' => 'general_settings.save']) }} - -
    -
    -
    -
    -
      -
    • -
      - {{ __('general_settings.ward_prescription_model_title') }} -
    • -
    • -
      - {{ __('general_settings.donor_feature_title') }} -
    • -
    • -
      - {{ __('general_settings.family_accounts_feature') }} -
    • -
    • -
      - {{ __('general_settings.display_drug_brand_title') }} -
    • -
    • -
      - {{ __('general_settings.currency_code_title') }} -
    • -
    • -
      - {{ __('general_settings.pwd_expire_title') }} -
    • -
    • -
      - {{ __('general_settings.track_items_title') }} -
    • -
    • -
      - {{ __('general_settings.enable_sms') }} -
    • -
    • -
      - {{ __('general_settings.incoming_prescription_confirmation_title') }} -
    • -
    • -
      - {{ __('general_settings.main_base_refraction_exam') }} -
    • -
    • -
      - {{ __('general_settings.add_lab_stamps_to_pdf_title') }} -
    • -
    • -
      {{ __('general_settings.add_attendance_to_consulations') }} -
    • -
    • -
      {{ __('general_settings.add_inpatient_sheet_extras') }} -
    • -
    • -
      - {{ __('general_settings.enable_dipensing_unpaid_prescription_title') }} -
    • -
    • -
      - {{ __('general_settings.enable_patient_debt_reminders') }} -
    • -
    • -
      - {{ __('general_settings.enable_performing_unpaid_consultations') }} -
    • -
    • -
      - {{ __('general_settings.display_out_of_stock_drugs_message') }} -
    • -
    • -
      - {{ __('general_settings.allow_prescribing_out_stock_drugs') }} -
    • -
    • -
      - {{ __('general_settings.enable_chi') }} -
    • -
    • -
      - {{ __('general_settings.add_service_patient_bill') }} -
    • -
    • -
      - {{ __('general_settings.enable_performing_unpaid_investigations') }} -
    • -
    • -
      - {{ __('general_settings.cashier_receipts_print_type') }} -
    • -
    • -
      - {{ __('general_settings.enable_patient_accounts_feature') }} -
    • -
    • -
      - {{ __('general_settings.inpatient_investigation_billing_mode') }} -
    • -
    • -
      - {{ __('general_settings.enable_tb_module') }} -
    • -
    • -
      - {{ __('general_settings.set_inventory_reduction_point') }} -
    • -
    • -
      - {{ __('general_settings.view_item_prices_ordering') }} -
    • -
    • -
      - {{ __('general_settings.manage_expenses') }} -
    • -
    • -
      - {{ __('general_settings.manage_system_language') }} -
    • -
    • -
      - {{ __('general_settings.enable_smart_triage') }} -
    • -
    • -
      {{ __('general_settings.enable_eye_module') }} -
    • -
    • -
      - {{ __('general_settings.enable_smart_discharge') }} -
    • -
    • -
      {{ __('general_settings.default_hospital_clinic') }} -
    • -
    • -
      - {{ __('general_settings.enable_biometric_feature') }} -
    • -
    • -
      - {{ __('general_settings.full_detail_receipt_print') }} -
    • -
    • -
      - {{ __('general_settings.inpatient_settings') }} -
    • -
    • -
      - {{ __('general_settings.show_symptoms_on_consultation') }} -
    • -
    • -
      - {{ __('general_settings.select_clinic_order_type') }} -
    • - {{--
    • -
      - -
      - {{ __('general_settings.hiv_screening_tool_and_gbv_screening_tool_title') }} - -
    • --}} -
    • -
      {{ __('general_settings.investigation_orders_settings') }} -
    • -
    • -
      {{ __('general_settings.stock_adjustment_account_tracking_setting') }} -
    • - -
    • -
      {{ __('general_settings.episode_summary') }} -
    • - -
    -
    -
    -
    -
    -
    -
    -
    -

    {{ __('general_settings.settings_info') }}

    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - -

    - - @if (session()->has('streamline_setup')) - {{ Form::button(__('general_settings.finish'), ['type' => 'submit', 'class' => 'btn btn-success waves-effect waves-light m-r-10']) }} - @else - {{ Form::button(__('general_settings.save_settings'), ['type' => 'submit', 'class' => 'btn btn-success waves-effect waves-light m-r-10']) }} - {{ Form::button(__('general_settings.cancel'), ['type' => 'reset', 'class' => 'btn btn-default waves-effect waves-light']) }} - @endif - - {{ Form::close() }} -
    -@endsection - -@push('scripts') - - - - - - - // select all episode content checkboxes - - - -@endpush diff --git a/docker/streamline-src/resources/views/general_settings/number_of_active_users_settings_edit.blade.php b/docker/streamline-src/resources/views/general_settings/number_of_active_users_settings_edit.blade.php deleted file mode 100644 index afcf4535..00000000 --- a/docker/streamline-src/resources/views/general_settings/number_of_active_users_settings_edit.blade.php +++ /dev/null @@ -1,125 +0,0 @@ -@extends('layouts.main') - -@push('styles') - - - -@endpush - -@section('content') -
    -
    -

    {{ __('general_settings.limit_number_of_active_users') }}

    -
    -
    - -
    -
    - -
    -
    - @include('flash::message') -
    - @if (session()->has('streamline_setup')) -

    {{ __('general_settings.streamline_setup_3') }}

    - @endif - - {{ Form::open(['route' => 'general_settings.save_number_of_active_users_limit_settings']) }} - -
    -
    -
    -

    {{ __('general_settings.number_of_active_users_limit') }}

    - -

    {{ __('general_settings.description') }}

    -
    -
    -

    {{ __('general_settings.number_of_active_users_limit_label') }}

    -
    -
    - -

    {{ __('general_settings.options') }}

    - -
    -
    - {{ Form::radio('number_of_active_users_limit_option', 'unlimited', ($general_settings['number_of_active_users_limit'] == 'unlimited' ? true : false)) }} {{ __('general_settings.unlimited_users_label') }}   -
    - {{ Form::radio('number_of_active_users_limit_option', 'limited', ($general_settings['number_of_active_users_limit'] != 'unlimited' ? true : false)) }} {{ __('general_settings.limited_users_label') }} -
    -
    -
    - - - -
    -
    - -
    -
    - - @if (session()->has('streamline_setup')) - {{ Form::button(__('general_settings.save_settings'),['type'=>'submit','class'=>'btn btn-success waves-effect waves-light m-r-10']) }} - @else - {{ Form::button(__('general_settings.save_settings'),['type'=>'submit','class'=>'btn btn-success waves-effect waves-light m-r-10']) }} - {{ Form::button(__('general_settings.cancel'),['type'=>'reset','class'=>'btn btn-default waves-effect waves-light']) }} - @endif - - {{ Form::close() }} - -
    - - - - -
    -
    - -@endsection - -@push('scripts') - - - - -@endpush \ No newline at end of file diff --git a/docker/streamline-src/resources/views/home.blade.php b/docker/streamline-src/resources/views/home.blade.php deleted file mode 100755 index 3b76ddbc..00000000 --- a/docker/streamline-src/resources/views/home.blade.php +++ /dev/null @@ -1,112 +0,0 @@ -@extends('layouts.main') - -@section('content') -
    -
    -

    {{ __('home.dashboard') }}

    -

    - {{ __('home.confidentiality_warning') }} ----- - {{ __('home.logout_warning') }} -

    -
    -
    - -
    -
    - - @include('flash::message') -
    -
    -
    -

    {{ __('home.message_board') }}

    -
    - -
    - @foreach($messages as $message) -
    -
    - {{ Carbon\Carbon::parse($message->created_at)->format('jS M Y h:ia') }}
    - @if (file_exists(($message->photo))) - - @endif - body; ?> -
    -
    -
    - @endforeach - -
    -
    {{ $messages->links() }}
    -
    -
    - -
    -
    - @if(Module::has('Patients') && Module::isEnabled('Patients') && Auth::user()->can('patient-create')) - - @endif - - @if(Module::has('Patients') && Module::isEnabled('Patients') && Auth::user()->can('patient-list')) - - @endif - - @if(Module::has('WardManagement') && Module::isEnabled('WardManagement') &&Auth::user()->can('ward-list')) - - @endif - - @if(Module::has('Patients') && Module::isEnabled('Patients') && Auth::user()->can('patient-flow-monitoring')) - - @endif - - @if(Module::has('Reports') && Module::isEnabled('Reports') &&Auth::user()->can('streamline-reports-list')) - - @endif - - @if(Module::has('ClinicalData') && Module::isEnabled('ClinicalData')) - - @endif -
    -
    -
    - -
    -
    - -
    - -
    - platinum party -
    -
    -
    -
    -
    - - @include('general_settings.popup') - -@endsection \ No newline at end of file diff --git a/docker/streamline-src/resources/views/hospital_information/create.blade.php b/docker/streamline-src/resources/views/hospital_information/create.blade.php deleted file mode 100755 index eff9ee66..00000000 --- a/docker/streamline-src/resources/views/hospital_information/create.blade.php +++ /dev/null @@ -1,218 +0,0 @@ -@extends('layouts.main') - -@push('styles') - - -@endpush - -@section('content') -
    -
    -

    {{ __('hospital_information.hospital_information') }}

    -
    -
    - -
    -
    - -
    -
    - - @include('flash::message') -
    - @if (session()->has('streamline_setup')) -

    Stre@mline {{ __('hospital_information.setup') }} ({{ __('hospital_information.step') }} 1 {{ __('hospital_information.of') }} 10)

    - @endif - - {{ Form::open(['route' => 'hospital_information.store', 'data-toggle' => 'validator', 'files' => true]) }} - -
    -
    -
    - {{ Form::label('name', __('hospital_information.hospital_name')) }} - {{ Form::text('name', '', ['class' => 'form-control compulsory', 'required', 'data-error'=>'']) }} -
    -
    - -
    - {{ Form::label('level', __('hospital_information.level')) }} - {{ Form::text('level', '', ['class' => 'form-control compulsory', 'required']) }} -
    -
    - -
    - {{ Form::label('code', __('hospital_information.code')) }} - {{ Form::text('code', '', ['class' => 'form-control']) }} -
    - -
    - {{ Form::label('parish', __('hospital_information.parish')) }} - {{ Form::select('parish', $parishes, '', ['class' => 'form-control parish']) }} -
    -
    - -
    - {{ Form::label('sub_county', __('hospital_information.sub_county')) }} - {{ Form::select('sub_county', $subcounties, '', ['class' => 'form-control sub_county']) }} -
    -
    - -
    - {{ Form::label('sub_district', __('hospital_information.health_sub_district')) }} - {{ Form::text('sub_district', '', ['class' => 'form-control sub_district']) }} -
    - -
    - {{ Form::label('address', __('hospital_information.address')) }} - {{ Form::text('address', '', ['class' => 'form-control compulsory', 'required']) }} -
    -
    - -
    - {{ Form::label('website', __('hospital_information.website')) }} - {{ Form::text('website', '', ['class' => 'form-control']) }} -
    -
    - -
    -
    - {{ Form::label('phone_number', __('hospital_information.phone_number')) }} - {{ Form::text('phone_number', '', ['class' => 'form-control compulsory', 'required']) }} -
    -
    - -
    - {{ Form::label('email', __('hospital_information.email')) }} - {{ Form::email('email', '', ['class' => 'form-control compulsory', 'required']) }} -
    -
    - -
    - {{ Form::label('financial_year_start_date', 'Start of Financial Year') }} - {{-- {{ Form::date('financial_year_start_date', '', ['class' => 'form-control', 'required']) }} --}} - -
    -
    - -
    - {{ Form::label('back_date', 'Back Dating Cutoff Days') }} - {{ Form::number('back_date', '', ['class' => 'form-control compulsory', 'required','min' => 1]) }} -
    -
    - -
    - {{ Form::label('district', __('hospital_information.district')) }} - {{ Form::select('district', $districts, '', ['class' => 'form-control compulsory district']) }} -
    -
    - -
    - {{ Form::label('country', __('hospital_information.country')) }} - {{ Form::text('country', '', ['class' => 'form-control compulsory', 'required']) }} -
    -
    - - {{--
    - {{ Form::label('app_name', 'App name') }} - {{ Form::text('app_name', '', ['class' => 'form-control compulsory', 'required']) }} -
    -
    - -
    - {{ Form::label('app_version', 'App version') }} - {{ Form::number('app_version', '', ['class' => 'form-control compulsory', 'required', 'step' => 0.1]) }} -
    -
    --}} - -
    - {{ Form::label('patient_number_abbr', __('hospital_information.patient_number_abbr')) }} - {{ Form::text('patient_number_abbr', '', ['class' => 'form-control compulsory', 'required', 'max'=>'3']) }} -
    -
    - - @php - use Carbon\Carbon; - $currentYear = Carbon::now()->year; - $current_year_last_two_digits = substr($currentYear,-2); - @endphp - -
    - - ( ABC - {{$current_year_last_two_digits }} - 001 ) - -
    - -
    -
    - - -
    - - -
    -

    -
    - - -
    - {{ Form::label('logo', __('hospital_information.system_logo')) }} - {{ Form::file('logo', null) }} - {{ Form::text('current_logo', '', ['class' => 'form-control', 'hidden']) }} -
    -
    - {{ Form::label('stamp', __('hospital_information.stamp')) }} - {{ Form::file('stamp', null) }} - {{ Form::text('current_stamp', '', ['class' => 'form-control', 'hidden']) }} -
    -
    - {{ Form::label('lab_stamp', __('hospital_information.lab_stamp')) }} - {{ Form::file('lab_stamp', null) }} - {{ Form::text('current_lab_stamp', '', ['class' => 'form-control', 'hidden']) }} -
    -
    -
    - - {{ Form::button(__('hospital_information.next'),['type'=>'submit','class'=>'btn btn-success btn-lg waves-effect waves-light m-r-10']) }} - {{--{{ Form::button('Skip',['type'=>'reset','class'=>'btn btn-default btn-lg waves-effect waves-light']) }}--}} - - {{ Form::close() }} -
    -
    -
    -@endsection - -@push('scripts') - - - -@endpush diff --git a/docker/streamline-src/resources/views/hospital_information/edit.blade.php b/docker/streamline-src/resources/views/hospital_information/edit.blade.php deleted file mode 100755 index a207f5f2..00000000 --- a/docker/streamline-src/resources/views/hospital_information/edit.blade.php +++ /dev/null @@ -1,217 +0,0 @@ -@extends('layouts.main') - -@section('content') -
    -
    -

    {{ __('hospital_information.hospital_information') }}

    -
    -
    - -
    -
    - -
    -
    - - @include('flash::message') -
    - {{ Form::model($hospital_information, ['method' => 'PUT', 'route' => ['hospital_information.update',$hospital_information], 'data-toggle' => 'validator', 'files' => true]) }} - -
    -
    -
    - {{ Form::label('name', __('hospital_information.hospital_name')) }} - {{ Form::text('name', $hospital_information->name, ['class' => 'form-control compulsory', 'required', 'data-error'=>'']) }} -
    -
    - -
    - {{ Form::label('level', __('hospital_information.level')) }} - {{ Form::text('level', $hospital_information->level, ['class' => 'form-control compulsory', 'required']) }} -
    -
    - -
    - {{ Form::label('code', __('hospital_information.code')) }} - {{ Form::text('code', $hospital_information->code, ['class' => 'form-control']) }} -
    - -
    - {{ Form::label('parish', __('hospital_information.parish')) }} - {{ Form::select('parish', $parishes, $hospital_information->parish, ['class' => 'form-control compulsory', 'required']) }} -
    -
    - -
    - {{ Form::label('sub_county', __('hospital_information.sub_county')) }} - {{ Form::select('sub_county', $subcounties, $hospital_information->sub_county, ['class' => 'form-control compulsory', 'required']) }} -
    -
    - -
    - {{ Form::label('sub_district', __('hospital_information.health_sub_district')) }} - {{ Form::text('sub_district', $hospital_information->sub_district, ['class' => 'form-control']) }} -
    - -
    - {{ Form::label('address', __('hospital_information.address')) }} - {{ Form::text('address', $hospital_information->address, ['class' => 'form-control compulsory', 'required']) }} -
    -
    - -
    - {{ Form::label('website', __('hospital_information.website')) }} - {{ Form::text('website', $hospital_information->website, ['class' => 'form-control']) }} -
    - -
    - {{ Form::label('pdf_print_header', __('hospital_information.print_header')) }} - {{ Form::file('pdf_print_header', null) }} -
    - Remove current print banner -
    - -
    - {{ Form::label('print_footer', __('hospital_information.print_footer')) }} - {{ Form::text('print_footer', $hospital_information->print_footer, ['class' => 'form-control']) }} -
    -
    - -
    -
    - {{ Form::label('phone_number', __('hospital_information.phone_number')) }} - {{ Form::text('phone_number', $hospital_information->phone_number, ['class' => 'form-control', 'required']) }} -
    -
    - -
    - {{ Form::label('email', __('hospital_information.email')) }} - {{ Form::email('email', $hospital_information->email, ['class' => 'form-control compulsory', 'required']) }} -
    -
    - -
    - {{ Form::label('financial_year_start_date', 'Start Month Of Financial Year') }} - {{--{{ Form::month('financial_year_start_date', $hospital_information->financial_year_start_date, ['class' => 'form-control compulsory', 'required']) }}--}} - -
    -
    - -
    - {{ Form::label('back_date', 'Back Dating Cutoff Days') }} - {{ Form::number('back_date', $hospital_information->back_date, ['class' => 'form-control compulsory', 'required', 'min' => 1]) }} -
    -
    - -
    - {{ Form::label('district', __('hospital_information.district')) }} - {{ Form::select('district', $districts, $hospital_information->district, ['class' => 'form-control compulsory', 'required']) }} -
    -
    - -
    - {{ Form::label('country', __('hospital_information.country')) }} - {{ Form::text('country', $hospital_information->country, ['class' => 'form-control compulsory', 'required']) }} -
    -
    - -
    - {{ Form::label('app_name', __('hospital_information.app_name')) }} - {{ Form::text('app_name', $hospital_information->app_name, ['class' => 'form-control compulsory', 'required']) }} -
    -
    - -
    - {{ Form::label('app_version', __('hospital_information.app_version')) }} - {{ Form::number('app_version', $hospital_information->app_version, ['class' => 'form-control compulsory', 'required', 'step' => 0.1]) }} -
    -
    - -
    - {{ Form::label('patient_number_abbr', __('hospital_information.patient_number_abbr')) }} - {{ Form::text('patient_number_abbr', $hospital_information->patient_number_abbr, ['class' => 'form-control compulsory', 'required', 'max'=>'3']) }} -
    -
    - - @php - use Carbon\Carbon; - $currentYear = Carbon::now()->year; - $current_year_last_two_digits = substr($currentYear,-2); - @endphp - -
    - - ( {{ $hospital_information->patient_number_abbr . '-' .$current_year_last_two_digits .'-' . '001' }} ) - -
    - -
    - -
    - patient_number_year_prefix == 0) && isset($hospital_information->patient_number_year_prefix)) - checked - @endif - > - -
    - patient_number_year_prefix == 1) && ($hospital_information->patient_number_year_prefix != null)) - checked - @endif> - -
    -

    -
    - - - - -
    - {{ Form::label('logo', __('hospital_information.system_logo')) }} - {{ Form::file('logo', null) }} - {{ Form::text('current_logo', $hospital_information->logo, ['class' => 'form-control', 'hidden']) }} -
    -
    - {{ Form::label('stamp', __('hospital_information.stamp')) }} - {{ Form::file('stamp', null) }} - {{ Form::text('current_stamp', $hospital_information->stamp, ['class' => 'form-control', 'hidden']) }} -
    -
    - {{ Form::label('lab_stamp', __('hospital_information.lab_stamp')) }} - {{ Form::file('lab_stamp', null) }} - {{ Form::text('current_lab_stamp', $hospital_information->lab_stamp, ['class' => 'form-control', 'hidden']) }} -
    -
    -
    - - {{ Form::button(__('hospital_information.submit'),['type'=>'submit','class'=>'btn btn-success waves-effect waves-light m-r-10']) }} - {{ Form::button(__('hospital_information.cancel'),['type'=>'reset','class'=>'btn btn-default waves-effect waves-light']) }} - - {{ Form::close() }} -
    -
    -
    -@endsection - -@push('scripts') - -@endpush diff --git a/docker/streamline-src/resources/views/layouts/header_pdf_print.blade.php b/docker/streamline-src/resources/views/layouts/header_pdf_print.blade.php deleted file mode 100755 index 952428c7..00000000 --- a/docker/streamline-src/resources/views/layouts/header_pdf_print.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@php - $hospital_info = \Streamline\Models\HospitalInformation::find(1); -@endphp - -@if(is_null($hospital_info->pdf_print_header)) - Responsive image -
    -

    - {{ $hospital_info->name . ' | ' . $hospital_info->phone_number . ' | ' . $hospital_info->email . ' | ' . $hospital_info->address . ' ' . $hospital_info->country }} -

    -@else - Responsive image -@endif - -
    \ No newline at end of file diff --git a/docker/streamline-src/resources/views/layouts/main.blade.php b/docker/streamline-src/resources/views/layouts/main.blade.php deleted file mode 100755 index 09efc78c..00000000 --- a/docker/streamline-src/resources/views/layouts/main.blade.php +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - - - - - - - - {{ config('app.name', 'Streamline') }} - - - - - - - - - - - - - - - - - @stack('styles') - - - - -
    -
    -
    -
    - - @include('layouts.top') - - - - @if (session()->has('streamline_setup') == FALSE) - @include('layouts.nav') - @endif - -
    -
    - @include('general_settings.subscription_noti') - {{--
    --}} - - @yield('content') - - - @include('layouts.options') - -
    - -
    {{ date('Y')}} © Stre@mline {{ __('layout.powered_by') }} Kisiizi Hospital {{ __('layout.and') }} Streamline Health Ltd - {{ __('layout.version_number') }} -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - -@stack('scripts') - - - - diff --git a/docker/streamline-src/resources/views/layouts/nav.blade.php b/docker/streamline-src/resources/views/layouts/nav.blade.php deleted file mode 100755 index 5cec8d9a..00000000 --- a/docker/streamline-src/resources/views/layouts/nav.blade.php +++ /dev/null @@ -1,1083 +0,0 @@ - - -
    - - - - -
    @include('flash::message')
    - -@if ($message = Session::get('success')) -
    -

    {{ $message }}

    -
    -@endif - -@include('users.menu') - -
    - {{ Form::open(['route' => 'find_users_by_role']) }} - -
    -
    -
    -
    - {{ Form::label('role', __('Search by role')) }} - -
    -
    -
    -
    -
    - {{ Form::button(__('audit_trail.search'), ['type' => 'submit', 'class' => 'btn btn-success waves-effect - waves-light m-r-10']) }} -
    -
    - {{ Form::close() }} -
    - -
    - -
    - - - - {{-- --}} - - - - - - - - - - - - - - @foreach ($data as $key => $user) - @php - $last_seen = Carbon\Carbon::parse($user->last_seen); - @endphp - - {{-- --}} - - - - - - - - - - - - @endforeach - -
    #{{ __('users.names') }}{{ __('users.username') }}{{ __('users.phone_number') }}{{ __('users.position') }}{{ __('users.roles') }}Last Logged In/StatusCreated By
    {{ ++$i }}{{ $user->first_name }} {{ $user->last_name }}{{ $user->username }}{{ $user->phone }}{{ isset($positions[$user->position_id]) ? $positions[$user->position_id] : "N/A" }} - @if(!empty($user->getRoleNames())) - @foreach($user->getRoleNames() as $v) - {{ $v }} - @endforeach - @endif - - @if(Cache::has('user-is-online-' . $user->id)) - Online - @else - {{ $last_seen->diffForHumans() }} - Offline - @endif - {{ get_full_name($user->created_by, 'id', 'first_name', 'last_name', 'users') }} at {{ streamline_date_time($user->created_at) }} - {{ __('users.details') }} - - {{ __('users.edit') }} - - @if($type == 1 ) - @if ($user->inactive_counter < 3) - {!! Form::open(['method' => 'DELETE','route' => ['users.destroy', $user->id],'style'=>'display:inline']) !!} - {!! Form::submit(__('users.delete'), ['class' => 'btn btn-danger btn-sm']) !!} - {!! Form::close() !!} - @else - {{ __('users.no_longer_deletes') }}
    - - @endif - - @else - {!! Form::open(['method' => 'DELETE','route' => ['users.destroy', $user->id],'style'=>'display:inline']) !!} - {!! Form::submit(__('users.delete'), ['class' => 'btn btn-danger btn-sm']) !!} - {!! Form::close() !!} - @endif -
    -
    - -{{-- {!! $data->render() !!}--}} - -
    - - -@endsection - -@push('scripts') - - - - - - - - - - - -@endpush - diff --git a/docker/streamline-src/resources/views/users/show.blade.php b/docker/streamline-src/resources/views/users/show.blade.php deleted file mode 100755 index 8541b12e..00000000 --- a/docker/streamline-src/resources/views/users/show.blade.php +++ /dev/null @@ -1,188 +0,0 @@ -@extends('layouts.main') - -@push('styles') - - -@endpush - -@section('content') -
    -
    -

    {{ __('users.user_details') }}

    -
    -
    - -
    - -
    - - -
    -
    - -
    @include('flash::message')
    - -
    -
    -
    -
    -
    user
    -
    - -
    -
    {{ __('users.names') }} -

    {{ $user->first_name }} {{ $user->last_name }}

    -
    -
    {{ __('users.position') }} -

    {{ $positions[$user->position_id] ?? "" }}

    -
    -
    - -
    - -
    -
    {{ __('users.email_address') }} -

    {{ $user->email == NULL ? 'NA' : $user->email }}

    -
    -
    {{ __('users.phone_number') }} -

    {{ $user->phone }}

    -
    -
    - -
    - -
    -
    {{ __('users.roles_on_streamline') }} -

    @if(!empty($user->getRoleNames())) - @foreach($user->getRoleNames() as $v) - {{ $v }} - @endforeach - @endif -

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    {{ __('users.username') }} -
    -

    {{ $user->username }}

    -
    - -
    {{ __('users.blood_group') }} -
    -

    {{ $blood_groups[$user->blood_group_id] ?? "" }}

    -
    - -
    {{ __('users.willing_to_donate') }} -
    -

    {{ $user->willing_to_donate == 1 ? __('users.yes') : __('users.no') }}

    -
    -
    {{ __('users.last_donation') }} -
    -

    {{ $user->last_donation_date == NULL ? 'NA' : $user->last_donation_date }}

    -
    -
    -
    -
    -
    {{ __('users.council_registration') }} -
    -

    {{ $user->council_id == 0 ? 'NA' : $councils[$user->council_id] }}

    -
    -
    {{ __('users.registration_number') }} -
    -

    {{ $user->registration_number == NULL ? 'NA' : $user->registration_number }}

    -
    -
    {{ __('users.expiry_date') }} -
    -

    {{ $user->expiry_date == NULL ? 'NA' : $user->expiry_date }}

    -
    -
    -
    -
    -
    {{ __('users.security_question') }} -
    -

    {{ $user->security_question_id == NULL ? 'NA' : $security_questions[$user->security_question_id] }}

    -
    -
    {{ __('users.security_answer') }} -
    -

    ******

    -
    -
    {{ __('users.secret_pin') }} -
    -

    ******

    -
    -
    -
    -

    {{ __('users.registered_on') }} {{ $user->created_at }}

    - -
    -
    -
    - - - - -
    -
    -
    - -@endsection - -@push('scripts') - - -@endpush - diff --git a/docker/streamline-src/routes/web.php b/docker/streamline-src/routes/web.php deleted file mode 100755 index 1e2a9322..00000000 --- a/docker/streamline-src/routes/web.php +++ /dev/null @@ -1,153 +0,0 @@ -prepend('- select -', ''); - - if (Auth::user()) { - return redirect()->route('home'); - } - - return view('auth.login', compact('security_questions', 'hospital_information')); -}); -// ->withoutMiddleware([CheckSubscriptionStatus::class,Authenticate::class]); - -Auth::routes(); -Route::get('/auth', 'Auth\UserController@index')->name('auth.index'); -Route::get('/auth/register', 'Auth\UserController@create')->name('auth.register'); -Route::post('/auth/store', 'Auth\UserController@store')->name('auth.store'); - -Route::group(['middleware' => ['auth', 'disablebackbutton', 'user-locale','subscription-tracking', 'password-expiry']], function () { - - Route::get('/home', 'HomeController@index')->name('home'); - Route::get('/logged_in_users', 'HomeController@index')->name('logged_in_users'); - - /* Online Users */ - Route::get('online_users', 'UserController@onlineusers')->name('online_users'); - Route::get('failed_logins', 'UserController@failedlogins')->name('failed_logins'); - Route::any('/online_users/search', 'UserController@search')->name('online_users.search'); - Route::any('/users/find_users_by_role', 'UserController@find_users_by_role')->name('find_users_by_role'); - - Route::resource('permissions', 'PermissionController'); - - Route::get('/users/inactive', 'UserController@inactive')->name('users.inactive'); - Route::post('/users/search', 'UserController@search')->name('users.search'); - Route::post('/users/activate/{id}', 'UserController@activate')->name('users.activate'); - Route::any('/users/search_user_by_name', 'UserController@search_user_by_name')->name('users.search_user_by_name'); - Route::resource('users', 'UserController'); - - /* F.A.Qs Modules */ - Route::resource('modules', 'ModuleController'); - - /* F.A.Qs Routes */ - Route::any('/frequently_asked_questions/result', 'FrequentlyAskedQuestionController@result')->name('frequently_asked_questions.result'); - Route::get('/frequently_asked_questions/search', 'FrequentlyAskedQuestionController@search')->name('frequently_asked_questions.search'); - Route::any('/frequently_asked_questions/bulk_update', 'FrequentlyAskedQuestionController@bulk_update')->name('frequently_asked_questions.bulk_update'); - Route::get('/frequently_asked_questions/bulk_edit', 'FrequentlyAskedQuestionController@bulk_edit')->name('frequently_asked_questions.bulk_edit'); - Route::get('/frequently_asked_questions/inactive', 'FrequentlyAskedQuestionController@inactive')->name('frequently_asked_questions.inactive'); - Route::post('/frequently_asked_questions/activate{id}', 'FrequentlyAskedQuestionController@activate')->name('frequently_asked_questions.activate'); - Route::resource('frequently_asked_questions', 'FrequentlyAskedQuestionController'); - - /* Hospital Information Routes */ - Route::any('/hospital_information/remove_print_banner', 'HospitalInformationController@remove_print_banner')->name('hospital_information.remove_print_banner'); - Route::resource('hospital_information', 'HospitalInformationController'); - - /* Message Board Routes */ - Route::get('/messageboard/inactive', 'MessageBoardController@inactive')->name('messageboard.inactive'); - Route::post('/messageboard/activate{id}', 'MessageBoardController@activate')->name('messageboard.activate'); - Route::resource('messageboard', 'MessageBoardController'); - - /* Blood donations */ - Route::resource('blood_donations', 'BloodDonationsController'); - Route::any('select_blood_group', 'BloodDonationsController@select_blood_group')->name('select.blood_group'); - Route::post('blood_donations/create_donation', 'BloodDonationsController@create_donation')->name('blood_donations.create_donation'); - - Route::any('/roles/edit_permission_desc', 'RoleController@edit_permission_desc')->name('roles.edit_permission_desc'); - Route::resource('roles', 'RoleController'); - - /* Audit Trail */ - Route::any('/audit_trail/search', 'AuditTrailController@search')->name('audit_trail.search'); - Route::any('/failed_logins/online_users_search', 'UserController@online_users_search')->name('audit_trail.online_users_search'); - Route::any('/failed_logins/failed_logins_search', 'UserController@failed_logins_search')->name('audit_trail.failed_logins_search'); - Route::any('/audit_trail/audit_trail_details/{id}', 'AuditTrailController@audit_trail_details')->name('audit_trail.audit_trail_details'); - Route::any('/audit_trail/select_patient_and_episode', 'AuditTrailController@select_patient_and_episode')->name('audit_trail.select_patient_and_episode'); - Route::any('/audit_trail/patient_timeline/{patient_id}/{episode_id}', 'AuditTrailController@patient_timeline'); - Route::any('audit_trail_print', 'AuditTrailController@audit_trail_print')->name('audit_trail_print'); - Route::any('failed_login_print', 'AuditTrailController@failed_login_print')->name('failed_login_print'); - Route::any('online_user_print', 'AuditTrailController@online_user_print')->name('online_user_print'); - Route::resource('audit_trail', 'AuditTrailController'); - - /* Reset password */ - Route::post('/reset/check', 'UserController@check_reset')->name('reset.check'); - Route::post('/auth/reset', 'UserController@reset_password')->name('auth.reset'); - - /* General Settings */ - Route::get('general_settings/edit', 'GeneralSettingsController@edit_settings')->name('general_settings.edit'); - Route::post('general_settings/save', 'GeneralSettingsController@save_settings')->name('general_settings.save'); - Route::get('general_settings/integrated_payment', 'GeneralSettingsController@integratedPayment')->name('general_settings.integrated_payment'); - Route::post('general_settings/save_integrated_payment', 'GeneralSettingsController@saveIntegratedPayment')->name('general_settings.save_integrated_payment'); - - // sms routes - Route::any('sms/send_sms', 'SMSController@send_sms')->name('sms.send_sms'); - Route::any('sms/process_sms', 'SMSController@process_sms')->name('sms.process_sms'); - Route::any('sms/view_sms_reports', 'SMSController@view_sms_reports')->name('sms.view_sms_reports'); - Route::any('sms/send_investigation_alert/{patient_id}', 'SMSController@send_investigation_alert'); - - /* Data Extraction */ - Route::any('/data_extraction/import_csv/{id}', 'DataExtractionController@import_csv'); - Route::any('/data_extraction/import_csv_upload', 'DataExtractionController@import_csv_upload')->name('data_extraction.import_csv_upload'); - Route::any('/data_extraction/import_csv_progress/{id}', 'DataExtractionController@import_csv_progress'); - Route::any('/data_extraction/fetch_progress/{id}', 'DataExtractionController@fetch_progress'); - Route::any('/data_extraction/select_data_type', 'DataExtractionController@select_data_type')->name('data_extraction.select_data_type'); - Route::any('/data_extraction/import_price_list_csv/{id}', 'DataExtractionController@import_price_list_csv'); - Route::any('/data_extraction/import_price_list_csv_upload', 'DataExtractionController@import_price_list_csv_upload')->name('data_extraction.import_price_list_csv_upload'); - Route::any('/data_extraction/start_process/{id}', 'DataExtractionController@start_process'); - Route::any('/data_extraction/start_price_list_process/{id}', 'DataExtractionController@start_price_list_process'); - - // subscriptions tracking routes - Route::get('/subscriptions/track_subscriptions', 'SubscriptionController@index')->name('subscriptions.track_subscriptions')->withoutMiddleware([CheckSubscriptionStatus::class]); - Route::post('/subscriptions/track_subscriptions','SubscriptionController@save_subscription')->name('subscriptions.save_subscription_tracking')->withoutMiddleware([CheckSubscriptionStatus::class]); - Route::get('/subscriptions/create_track_subscriptions','SubscriptionController@create_subscription')->name('subscriptions.create_subscription_tracking')->withoutMiddleware([CheckSubscriptionStatus::class]); - Route::get('/subscriptions/track_subscriptions/{id}','SubscriptionController@edit_subscription')->name('subscriptions.edit_subscription_tracking')->withoutMiddleware([CheckSubscriptionStatus::class]); - Route::post('/subscriptions/update_track_subscriptions/{id}','SubscriptionController@update_subscription')->name('subscriptions.update_subscription_tracking')->withoutMiddleware([CheckSubscriptionStatus::class]); - - //stre@mline modules - Route::any('activate_streamline_modules', 'GeneralSettingsController@activate_streamline_modules')->name('streamline_modules.activate')->middleware('role:Super Admin'); - Route::any('store_activated_modules', 'GeneralSettingsController@store_activated_modules')->name('streamline_modules.store_activated')->middleware('role:Super Admin'); - - //Number of active users - Route::get('general_settings/active_users_limit_settings', 'GeneralSettingsController@edit_number_of_active_users_limit_settings')->name('general_settings.active_users_limit_settings')->middleware('role:Super Admin'); - Route::post('general_settings/save_number_of_active_users_limit_settings', 'GeneralSettingsController@save_number_of_active_users_limit_settings')->name('general_settings.save_number_of_active_users_limit_settings')->middleware('role:Super Admin'); - - /* Personal Settings */ - Route::any('personal_settings/edit', 'GeneralSettingsController@edit_personal_settings')->name('personal_settings.edit'); - Route::any('personal_settings/save', 'GeneralSettingsController@save_personal_settings')->name('personal_settings.save'); - - Route::any('analysis_reports', 'HomeController@quick_analysis_reports'); -}); - -/* password expiration */ -Route::get('/passwordExpiration', 'Auth\PwdExpirationController@showPasswordExpirationForm')->withoutMiddleware([CheckSubscriptionStatus::class]); -Route::get('/subscriptionExpiration', 'SubscriptionController@showExpirationForm')->name('subscription.expired')->withoutMiddleware([CheckSubscriptionStatus::class]); -Route::post('/passwordExpiration', 'Auth\PwdExpirationController@postPasswordExpiration')->name('passwordExpiration')->withoutMiddleware([CheckSubscriptionStatus::class]); diff --git a/docker/streamline-src/start_up.sh b/docker/streamline-src/start_up.sh deleted file mode 100755 index 9144e4bd..00000000 --- a/docker/streamline-src/start_up.sh +++ /dev/null @@ -1,60 +0,0 @@ -#! /bin/sh - -# Required script variables -APP_NAME=${APP_NAME:-'streamline'} -export MYSQL_DATABASE=${DB_DATABASE:-'streamline'} -export MYSQL_USER=${DB_USERNAME:-'root'} -export MYSQL_PASSWORD=${DB_PASSWORD:-'streamline'} -export MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD:-'streamline'} - -# execute run.sh script for MySQL initialisation -chmod +x .docker/mysql/mysql-init.sh - -# run the MariaDB initilisation script -./.docker/mysql/mysql-init.sh -if [ $? -eq 0 ]; then - - echo "[info] MySQL server started. checking for '$MYSQL_DATABASE' database. " - - mysql -u $MYSQL_USER -p$MYSQL_PASSWORD -e "use streamline;" - - # Guard condition to re-check existence of database schema - # If it doesnt exist, create it and import streamline_initial.sql file - if [ $? -eq 1 ]; then - - mysql -u $MYSQL_USER -p$MYSQL_PASSWORD -e "CREATE DATABASE $MYSQL_DATABASE;" - - if [ $? -eq 0 ]; then - echo "[info] Database: $MYSQL_DATABASE created." - - mysql -u $MYSQL_USER -p$MYSQL_PASSWORD $MYSQL_DATABASE < ./.docker/mysql/scripts/streamline_initial.sql - if [ $? -eq 0 ]; then - echo "[info] populated database." - else - echo "[error] database not populated." - fi - - else - echo "[error] database not created." - fi - - else - echo "[info] Database: $MYSQL_DATABASE exists. " - fi - - echo "[info] starting $APP_NAME ..." - - php /var/www/html/artisan migrate - - php /var/www/html/artisan db:seed --class=PermissionTableSeeder - - php /var/www/html/artisan db:seed --class=PermissionsCategoryTableSeeder - - php /var/www/html/artisan serve --host=0.0.0.0 --port=80 - -else - echo "[error] MariaDB server couldnt be started." - - # terminate script if database isnt running - exit 1; -fi \ No newline at end of file diff --git a/docker/streamline-src/tests/Feature/ExampleTest.php b/docker/streamline-src/tests/Feature/ExampleTest.php deleted file mode 100755 index ed0d1cef..00000000 --- a/docker/streamline-src/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,22 +0,0 @@ -get('/'); - $response->assertStatus(200); - } -} diff --git a/docker/streamline-src/vendor/africastalking/africastalking/README.md b/docker/streamline-src/vendor/africastalking/africastalking/README.md deleted file mode 100644 index cce84735..00000000 --- a/docker/streamline-src/vendor/africastalking/africastalking/README.md +++ /dev/null @@ -1,244 +0,0 @@ -# Africa's Talking PHP SDK - -[![Latest Stable Version](https://img.shields.io/packagist/v/africastalking/africastalking)](https://packagist.org/packages/africastalking/africastalking) - -> This SDK provides convenient access to the Africa's Talking API for applications written in PHP. - -## Documentation - -Take a look at the [API docs here](https://developers.africastalking.com). - -## Install - -You can install the PHP SDK via composer or by downloading the source - -#### Via Composer - -The recommended way to install the SDK is with [Composer](http://getcomposer.org/). - -```bash -composer require africastalking/africastalking -``` - -## Usage - -The SDK needs to be instantiated using your username and API key, which you can get from the [dashboard](https://account.africastalking.com). - -> You can use this SDK for either production or sandbox apps. For sandbox, the app username is **ALWAYS** `sandbox` - -```php -use AfricasTalking\SDK\AfricasTalking; - -$username = 'YOUR_USERNAME'; // use 'sandbox' for development in the test environment -$apiKey = 'YOUR_API_KEY'; // use your sandbox app API key for development in the test environment -$AT = new AfricasTalking($username, $apiKey); - -// Get one of the services -$sms = $AT->sms(); - -// Use the service -$result = $sms->send([ - 'to' => '+2XXYYYOOO', - 'message' => 'Hello World!' -]); - -print_r($result); -``` - -See [example](example/) for more usage examples. - -## Instantiation - -Instantiating the class will give you an object with available methods - -- `$AT = new AfricasTalking($username, $apiKey)`: Instantiate the class -- Get available service - - [SMS Service](#sms): `$sms = $AT->sms()` - - [Content Service](#content): `$content = $AT->content()` - - [Airtime Service](#airtime): `$airtime = $AT->airtime()` - - [Mobile Data Service](#mobiledata): `$mobileData = $AT->mobileData()` - - [Voice Service](#voice): `$voice = $AT->voice()` - - [Token Service](#token): `$token = $AT->token()` - - [Application Service](#application): `$application = $AT->application()` - -### Application - -- `fetchApplicationData()`: Get app information. e.g balance - -### Airtime - -- `send($parameters, $options)`: Send airtime - - - **$parameters:** associative array with the following keys: - - - `recipients`: An array of arrays containing the following keys - - `phoneNumber`: Recipient of airtime. `REQUIRED` - - `currencyCode`: 3-digit ISO format currency code (e.g `KES`, `USD`, `UGX` etc). `REQUIRED` - - `amount`: Amount to send. `REQUIRED` - - **$options:** optional associative array with the following keys: - - - `idempotencyKey`: Key to use when making idempotent requests - - `maxNumRetry`: Maximum number of retries in case of failed airtime deliveries due to telco unavailability or any other reason. - -### SMS - -- `send($options)`: Send a message - - - `message`: SMS content. `REQUIRED` - - `to`: An array of phone numbers. `REQUIRED` - - `from`: Shortcode or alphanumeric ID that is registered with your Africa's Talking account. - - `enqueue`: Set to `true` if you would like to deliver as many messages to the API without waiting for an acknowledgement from telcos. -- `fetchMessages($options)`: Fetch your messages - - - `lastReceivedId`: This is the id of the message you last processed. Defaults to `0` - -***The followoing methods have been moved to the content service, but, have been maintained on SMS for backwards compatibility:*** - -- `sendPremium($options)`: Send a premium SMS. Calls `$content->send($options)` -- `createSubscription($options)`: Create a premium subscription. Calls `$content->createSubscription($options)` -- `fetchSubscriptions($options)`: Fetch your premium subscription data. Calls `$content->fetchSubscriptions($options)` -- `deleteSubscription($options)`: Delete a phone number from a premium subscription. Calls `$content->$deleteSubscription($options)` - -### Content - -- `send($options)`: Send a premium SMS - - - `message`: SMS content. `REQUIRED` - - `to`: An array of phone numbers. `REQUIRED` - - `from`: Shortcode that is registered with your Africa's Talking account. `REQUIRED` - - `keyword`: Your premium product keyword - - `linkId`: "[...] We forward the `linkId` to your application when a user sends a message to your onDemand service" - - `retryDurationInHours`: "This specifies the number of hours your subscription message should be retried in case it's not delivered to the subscriber" -- `createSubscription($options)`: Create a premium subscription - - - `shortCode`: Premium short code mapped to your account. `REQUIRED` - - `keyword`: Premium keyword under the above short code and is also mapped to your account. `REQUIRED` - - `phoneNumber`: PhoneNumber to be subscribed `REQUIRED` -- `fetchSubscriptions($options)`: Fetch your premium subscription data - - - `shortCode`: Premium short code mapped to your account. `REQUIRED` - - `keyword`: Premium keyword under the above short code and mapped to your account. `REQUIRED` - - `lastReceivedId`: ID of the subscription you believe to be your last. Defaults to `0` -- `deleteSubscription($options)`: Delete a phone number from a premium subscription - - - `shortCode`: Premium short code mapped to your account. `REQUIRED` - - `keyword`: Premium keyword under the above short code and is also mapped to your account. `REQUIRED` - - `phoneNumber`: PhoneNumber to be subscribed `REQUIRED` - -### Mobile Data - -- `send($parameters, $options)`: Send mobile data to customers - - - **$parameters:** associative array with the following keys: - - - `productName`: Payment product on Africa's Talking. `REQUIRED` - - `recipients`: A list of recipients. Each recipient has: - - - `phoneNumber`: Customer phone number (in international format). `REQUIRED` - - `quantity`: Mobile data amount. `REQUIRED` - - `unit`: Mobile data unit. Can either be `MB` or `GB`. `REQUIRED` - - `validity`: How long the mobile data is valid for. Must be one of `Day`, `Week` and `Month`. `REQUIRED` - - `metadata`: Additional data to associate with the tranasction. `REQUIRED` - - - **$options:** optional associative array with the following keys: - - - `idempotencyKey`: Key to use when making idempotent requests - -- `findTransaction($parameters)`: Find a particular transaction - - - `transactionId`: ID of trancation to find. `REQUIRED` - -- `fetchWalletBalance()`: Fetch your payment wallet balance - -### Voice - -- `call($options)`: Initiate a phone call - - - `to`: Phone number that you wish to dial (in international format). `REQUIRED` - - `from`: Phone number on Africa's Talking (in international format). `REQUIRED` - - `clientRequestId`: Variable sent to your Events Callback URL that can be used to tag the call. `OPTIONAL` -- `fetchQueuedCalls($options)`: Fetch queued calls on a phone number - - - `phoneNumber`: Phone number mapped to your Africa's Talking account (in international format). `REQUIRED` - - `name`: Fetch calls for a specific queue. -- `uploadMediaFile($options)`: Upload a voice media file - - - `phoneNumber`: phone number mapped to your Africa's Talking account (in international format). `REQUIRED` - - `url`: The url of the file to upload. Should start with `http(s)://`. `REQUIRED` - -#### MessageBuilder - -Build voice xml when callback URL receives a POST from the voice API. Actions can be chained to create an XML string. - -```php -$voiceActions = $voice->messageBuilder(); -$xmlresponse = $voiceActions - ->getDigits($options) - ->say($text) - ->record() - ->build(); -``` - -- `say($text)`: Add a `Say` action -- `text`: Text (in English) that will be read out to the user. -- `play($url)`: Add a `Play` action - - - `url`: Public url to an audio file. This file will be played back to user. -- `getDigits($options)`: Add a `GetDigits` action - - - `numDigits`: Number of digits should be gotten from the user - - `timeout`: Timeout (in seconds) for getting digits from a user. - - `finishOnKey`: key which will terminate the action of getting digits. - - `callbackUrl`: URL to forward the results of the GetDigits action. -- `dial($options)`: Add a `Dial` action - - - `phoneNumbers`: An array of phone numbers (in international format) to call. `REQUIRED` - - `record`: Boolean - Whether to record the conversation. - - `sequenntial`: Boolean - If many numbers provided for `phoneNumbers`, determines whether the phone numbers will be dialed one after the other or at the same time. - - `callerId`: Africa's Talking number you want to dial out with. - - `ringBackTone`: URL location of a media playback you would want the user to listen to when the call has been placed before its picked up. - - `maxDuration`: maximum amount of time in seconds a call should take. -- `conference()`: Add a `Conference` action -- `record($options)`: Add a `Record` action - - - `finishOnKey`: Key which will terminate the action of recording. - - `maxLength`: Maximum amount of time in seconds a recording should take. - - `timeout`: Timeout (in seconds) for getting a recording from a user. - - `trimSilence`: Boolean - Specifies whether you want to remove the initial and final parts of a recording where user was silent. - - `playBeep`: Boolean - Specifies whether the API should play a beep when recording starts. - - `callbackUrl`: URL to forward the results of the Recording action. -- `enqueue($options)`: Add an `Enqueue` action - - - `holdMusic`: URL to the file to be played while the user is on hold. - - `name`: Name of queue to put call on. -- `deqeue($options)`: Add a `Dequeue` acton - - - `phoneNumber`: Phone number mapped to your Africa's Talking account which a user called to join the queue. `REQUIRED` - - `name`: Name of queue you want to dequeue from. -- `reject()`: Add a `Reject` action -- `redirect($url)`: Add a `Redirect` action - - - `url`: URL to transfer control of the call to -- `build()`: Build the xml after chaining some of the above actions - -### Token - -- `generateAuthToken()`: Generate an auth token to use for authenticating API requests instead of your API key. - -## Testing the SDK - -The SDK uses [PHPUnit](https://phpunit.de/manual/current/en/index.html) as the test runner. - -To run available tests, from the root of the project run: - -```bash -# Configure needed fixtures, e.g sandbox api key, Africa's Talking products -cp tests/Fixtures.php.tpl tests/Fixtures.php - -# Run tests -phpunit --testdox -``` - -## Issues - -If you find a bug, please file an issue on [our issue tracker on GitHub](https://github.com/AfricasTalkingLtd/africastalking-php/issues). diff --git a/docker/streamline-src/vendor/africastalking/africastalking/composer.json b/docker/streamline-src/vendor/africastalking/africastalking/composer.json deleted file mode 100755 index c09783e4..00000000 --- a/docker/streamline-src/vendor/africastalking/africastalking/composer.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "africastalking/africastalking", - "description": "Official Africa's Talking PHP SDK", - "keywords": ["sms", "voice", "ussd", "text message", "airtime", "api", "africastalking"], - "homepage": "http://github.com/AfricasTalkingLtd/africastalking-php", - "type": "library", - "license": "MIT", - "authors": [ - { - "name": "Africas's Talking", - "email": "support@africastalking.com", - "homepage": "https://www.africastalking.com" - } - ], - "require": { - "php": ">=7.1", - "guzzlehttp/guzzle": "^6.0 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "autoload": { - "psr-4": { - "AfricasTalking\\SDK\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "AfricasTalking\\SDK\\Tests\\": "tests" - } - } -} diff --git a/docker/streamline-src/vendor/africastalking/africastalking/src/AfricasTalking.php b/docker/streamline-src/vendor/africastalking/africastalking/src/AfricasTalking.php deleted file mode 100644 index c061790f..00000000 --- a/docker/streamline-src/vendor/africastalking/africastalking/src/AfricasTalking.php +++ /dev/null @@ -1,137 +0,0 @@ -baseDomain = self::BASE_SANDBOX_DOMAIN; - } else { - $this->baseDomain = self::BASE_DOMAIN; - } - - $this->baseUrl = "https://api." . $this->baseDomain . "/version1/"; - $this->voiceUrl = "https://voice." . $this->baseDomain . "/"; - $this->mobileDataUrl = "https://bundles." . $this->baseDomain . "/"; - $this->contentUrl = ($username === "sandbox") ? ($this->baseUrl) : ("https://content." . $this->baseDomain . "/version1/"); - $this->checkoutTokenUrl = "https://api." . $this->baseDomain . "/"; - - if ($username === 'sandbox') { - $this->contentUrl = $this->baseUrl; - } - - $this->username = $username; - $this->apiKey = $apiKey; - - $this->client = new Client([ - 'base_uri' => $this->baseUrl, - 'headers' => [ - 'apikey' => $this->apiKey, - 'Content-Type' => 'application/x-www-form-urlencoded', - 'Accept' => 'application/json' - ] - ]); - - $this->contentClient = new Client([ - 'base_uri' => $this->contentUrl, - 'headers' => [ - 'apikey' => $this->apiKey, - 'Content-Type' => 'application/x-www-form-urlencoded', - 'Accept' => 'application/json' - ] - ]); - - $this->voiceClient = new Client([ - 'base_uri' => $this->voiceUrl, - 'headers' => [ - 'apikey' => $this->apiKey, - 'Content-Type' => 'application/x-www-form-urlencoded', - 'Accept' => 'application/json' - ] - ]); - - $this->mobileDataClient = new Client([ - 'base_uri' => $this->mobileDataUrl, - 'headers' => [ - 'apikey' => $this->apiKey, - 'Content-Type' => 'application/json', - 'Accept' => 'application/json' - ] - ]); - - $this->tokenClient = new Client([ - 'base_uri' => $this->checkoutTokenUrl, - 'headers' => [ - 'apikey' => $this->apiKey, - 'Content-Type' => 'application/json', - 'Accept' => 'application/json' - ] - ]); - } - - public function sms() - { - $content = new Content($this->contentClient, $this->username, $this->apiKey); - $sms = new SMS($this->client, $this->username, $this->apiKey, $content); - return $sms; - } - - public function content() - { - $content = new Content($this->contentClient, $this->username, $this->apiKey); - return $content; - } - - public function airtime() - { - $airtime = new Airtime($this->client, $this->username, $this->apiKey); - return $airtime; - } - - public function voice() - { - $voice = new Voice($this->voiceClient, $this->username, $this->apiKey); - return $voice; - } - - public function application() - { - $application = new Application($this->client, $this->username, $this->apiKey); - return $application; - } - - public function mobileData() - { - $mobileData = new MobileData($this->mobileDataClient, $this->username, $this->apiKey); - return $mobileData; - } - - public function token() - { - $token = new Token($this->tokenClient, $this->username, $this->apiKey); - return $token; - } -} diff --git a/docker/streamline-src/vendor/africastalking/africastalking/src/Content.php b/docker/streamline-src/vendor/africastalking/africastalking/src/Content.php deleted file mode 100644 index 6e196cbb..00000000 --- a/docker/streamline-src/vendor/africastalking/africastalking/src/Content.php +++ /dev/null @@ -1,132 +0,0 @@ -error('recipient and message must be defined'); - } - - if (!is_array($options['to'])) { - $options['to'] = [$options['to']]; - } - - $data = [ - 'username' => $this->username, - 'to' => implode(",", $options['to']), - 'message' => $options['message'] - ]; - - if (array_key_exists('enqueue', $options) && $options['enqueue']) { - $data['enqueue'] = 1; - } - - if (empty($options['from'])) { - return [ - 'status' => 'error', - 'data' => 'from is required for premium SMS' - ]; - } else { - $data['from'] = $options['from']; - } - - if (!empty($options['keyword'])) { - $data['keyword'] = $options['keyword']; - } - - if (!empty($options['linkId'])) { - $data['linkId'] = $options['linkId']; - } - - if (!empty($options['retryDurationInHours'])) { - $data['retryDurationInHours'] = $options['retryDurationInHours']; - } - - // turn off bulk sms mode - $data['bulkSMSMode'] = 0; - - $response = $this->client->post('messaging', ['form_params' => $data ]); - - return $this->success($response); - } - - public function createSubscription ($options) - { - if (empty($options['phoneNumber']) || - empty($options['shortCode']) || - empty($options['keyword'])) { - return $this->error("phoneNumber, shortCode and keyword must be specified"); - } - - $data = [ - 'username' => $this->username, - 'phoneNumber' => $options['phoneNumber'], - 'shortCode' => $options['shortCode'], - 'keyword' => $options['keyword'] - ]; - - /** - * checkoutToken Key was removed in commit:339f7057d8ff640ffa9802b4d3a812848b1072a9. - * To prevent breaking applications in production, we conditionally add it to - * the request otherwise previous behaviour persists. - **/ - - if(array_key_exists('checkoutToken',$options)){ - $data['checkoutToken'] = $options['checkoutToken']; - } - - $response = $this->client->post('subscription/create', ['form_params' => $data ] ); - - return $this->success($response); - } - - public function deleteSubscription ($options) - { - if (empty($options['phoneNumber']) || - empty($options['shortCode']) || - empty($options['keyword'])) { - return $this->error("phoneNumber, shortCode and keyword must be specified"); - } - - $data = [ - 'username' => $this->username, - 'phoneNumber' => $options['phoneNumber'], - 'shortCode' => $options['shortCode'], - 'keyword' => $options['keyword'] - ]; - - $response = $this->client->post('subscription/delete', ['form_params' => $data ] ); - - return $this->success($response); - } - - public function fetchSubscriptions($options) - { - if(empty($options['shortCode']) || empty($options['keyword'])) { - return $this->error("shortCode and keyword must be specified"); - } - - if (empty($options['lastReceivedId'])) { - $options['lastReceivedId'] = 0; - } - - if (!is_numeric($options['lastReceivedId'])) { - return $this->error('lastReceivedId must be an integer'); - } - - $data = [ - 'username' => $this->username, - 'lastReceivedId' => $options['lastReceivedId'], - 'shortCode' => $options['shortCode'], - 'keyword' => $options['keyword'] - ]; - - $response = $this->client->get('subscription', ['query' => $data ] ); - - return $this->success($response); - - } -} diff --git a/docker/streamline-src/vendor/africastalking/africastalking/src/MobileData.php b/docker/streamline-src/vendor/africastalking/africastalking/src/MobileData.php deleted file mode 100644 index 0f727ac1..00000000 --- a/docker/streamline-src/vendor/africastalking/africastalking/src/MobileData.php +++ /dev/null @@ -1,104 +0,0 @@ - '']; - } - return $this->$func($args[0]); - } else { - return $this->error($method .' is an invalid Mobile Data SDK Method'); - } - } - - protected function doSend($parameters, $options = []) - { - // Check if productName is set - if (!isset($parameters['productName'])) { - return $this->error('productName must be defined'); - } - $productName = $parameters['productName']; - - // Check if recipients array is provided - if (!isset($parameters['recipients'])) { - return $this->error('recipients must be an array containing phoneNumber, unit, quatity, validity and metadata'); - } else if (isset($parameters['recipients']) && is_array($parameters['recipients'])) { - $recipients = $parameters['recipients']; - - foreach ($recipients as $r) { - if (!isset($r['phoneNumber']) || - !isset($r['quantity']) || - !isset($r['unit']) || - !isset($r['validity']) || - !isset($r['metadata'])) { - - return $this->error('recipients must be an array containing phoneNumber, quantity, unit, validity and metadata'); - } - - if (isset($r['validity'])) { - if (!in_array($r['validity'], ['Day', 'Month', 'Week'])) { - return $this->error('validity must be one of Day, Week, Month'); - } - } - - if (isset($r['unit'])) { - if (!in_array($r['unit'], ['MB', 'GB'])) { - return $this->error('unit must be one of MB, GB'); - } - } - } - } - - // Make request data array - $requestData = [ - 'username' => $this->username, - 'productName' => $productName, - 'recipients' => $recipients, - ]; - - $requestOptions = [ - 'json' => $requestData, - ]; - - if(isset($options['idempotencyKey'])) { - $requestOptions['headers'] = [ - 'Idempotency-Key' => $options['idempotencyKey'], - ]; - } - - $response = $this->client->post('mobile/data/request', $requestOptions); - return $this->success($response); - } - - protected function doFindTransaction($options) - { - if (!isset($options['transactionId'])) { - return $this->error('transactionId must be defined'); - } - - $requestData = [ - 'username' => $this->username, - 'transactionId' => $options['transactionId'] - ]; - - $response = $this->client->get('query/transaction/find', ['query' => $requestData]); - return $this->success($response); - } - - protected function doFetchWalletBalance() - { - $requestData = [ - 'username' => $this->username - ]; - - $response = $this->client->get('query/wallet/balance', ['query' => $requestData]); - return $this->success($response); - } -} diff --git a/docker/streamline-src/vendor/africastalking/africastalking/tests/AfricasTalkingTest.php b/docker/streamline-src/vendor/africastalking/africastalking/tests/AfricasTalkingTest.php deleted file mode 100644 index dd74e614..00000000 --- a/docker/streamline-src/vendor/africastalking/africastalking/tests/AfricasTalkingTest.php +++ /dev/null @@ -1,47 +0,0 @@ -username = Fixtures::$username; - $this->apiKey = Fixtures::$apiKey; - - $this->client = new AfricasTalking($this->username, $this->apiKey); - } - - public function testSMSClass() - { - $this->assertInstanceOf(\AfricasTalking\SDK\SMS::class, $this->client->sms()); - } - - public function testContentClass() - { - $this->assertInstanceOf(\AfricasTalking\SDK\Content::class, $this->client->content()); - } - - public function testAirtimeClass() - { - $this->assertInstanceOf(\AfricasTalking\SDK\Airtime::class, $this->client->airtime()); - } - - public function testVoiceClass() - { - $this->assertInstanceOf(\AfricasTalking\SDK\Voice::class, $this->client->voice()); - } - - public function testApplicationClass() - { - $this->assertInstanceOf(\AfricasTalking\SDK\Application::class, $this->client->application()); - } - - public function testMobileDataClass() - { - $this->assertInstanceOf(\AfricasTalking\SDK\MobileData::class, $this->client->mobileData()); - } -} diff --git a/docker/streamline-src/vendor/africastalking/africastalking/tests/AirtimeTest.php b/docker/streamline-src/vendor/africastalking/africastalking/tests/AirtimeTest.php deleted file mode 100644 index 03d318ec..00000000 --- a/docker/streamline-src/vendor/africastalking/africastalking/tests/AirtimeTest.php +++ /dev/null @@ -1,64 +0,0 @@ -username = Fixtures::$username; - $this->apiKey = Fixtures::$apiKey; - - $at = new AfricasTalking($this->username, $this->apiKey); - - $this->client = $at->airtime(); - } - - public function testSendAirtimeToOne() - { - $response = $this->client->send([ - 'recipients' => [[ - 'phoneNumber' => Fixtures::$phoneNumber, - 'currencyCode' => Fixtures::$currencyCode, - 'amount' => Fixtures::$amount - ]] - ]); - - $this->assertObjectHasProperty('responses', $response['data']); - } - - public function testSendAirtimeIdempotency() - { - $response = $this->client->send([ - 'recipients' => [[ - 'phoneNumber' => Fixtures::$phoneNumber, - 'currencyCode' => Fixtures::$currencyCode, - 'amount' => Fixtures::$amount - ]] - ], [ - 'idempotencyKey' => 'req-' . mt_rand(10, 100), - ]); - - $this->assertObjectHasProperty('responses', $response['data']); - } - - public function testSendAirtimeToMany() - { - $response = $this->client->send([ - 'recipients' => [[ - 'phoneNumber' => Fixtures::$phoneNumber, - 'currencyCode' => Fixtures::$currencyCode, - 'amount' => Fixtures::$amount - ], [ - 'phoneNumber' => '+2347038151149', - 'currencyCode' => 'NGN', - 'amount' => '10000' - ]] - ]); - - $this->assertObjectHasProperty('responses', $response['data']); - } -} diff --git a/docker/streamline-src/vendor/africastalking/africastalking/tests/ApplicationTest.php b/docker/streamline-src/vendor/africastalking/africastalking/tests/ApplicationTest.php deleted file mode 100644 index 4f8501b1..00000000 --- a/docker/streamline-src/vendor/africastalking/africastalking/tests/ApplicationTest.php +++ /dev/null @@ -1,25 +0,0 @@ -username = Fixtures::$username; - $this->apiKey = Fixtures::$apiKey; - - $at = new AfricasTalking($this->username, $this->apiKey); - - $this->client = $at->application(); - } - - public function testFetchAplication() - { - $response = $this->client->fetchApplicationData(); - $this->assertObjectHasProperty('UserData', $response['data']); - } -} diff --git a/docker/streamline-src/vendor/africastalking/africastalking/tests/ContentTest.php b/docker/streamline-src/vendor/africastalking/africastalking/tests/ContentTest.php deleted file mode 100644 index ae29cdf1..00000000 --- a/docker/streamline-src/vendor/africastalking/africastalking/tests/ContentTest.php +++ /dev/null @@ -1,67 +0,0 @@ -username = Fixtures::$username; - $this->apiKey = Fixtures::$apiKey; - - $at = new AfricasTalking($this->username, $this->apiKey); - - $this->client = $at->content(); - $this->tokenClient = $at->token(); - } - - public function send() - { - $response = $this->client->send([ - 'to' => Fixtures::$multiplePhoneNumbersSMS, - 'linkId' => 'messageLinkId', - 'keyword' => Fixtures::$keyword, - 'from' => Fixtures::$shortCode, - 'message' => 'Testing Premium...' - ]); - - $this->assertObjectHasProperty('SMSMessageData', $response['data']); - } - - public function testCreateSubscription() - { - $response = $this->client->createSubscription([ - 'phoneNumber' => Fixtures::$phoneNumber, - 'shortCode' => Fixtures::$shortCode, - 'keyword' => Fixtures::$keyword, - ]); - - $this->assertArrayHasKey('status',$response); - $this->assertEquals('success',$response['status']); - } - - public function testDeleteSubscription() - { - $response = $this->client->deleteSubscription([ - 'phoneNumber' => Fixtures::$phoneNumber, - 'shortCode' => Fixtures::$shortCode, - 'keyword' => Fixtures::$keyword - ]); - - $this->assertArrayHasKey('status',$response); - $this->assertEquals('success',$response['status']); - } - - public function testFetchSubscriptions() - { - $response = $this->client->fetchSubscriptions([ - 'shortCode' => Fixtures::$shortCode, - 'keyword' => Fixtures::$keyword - ]); - - $this->assertObjectHasProperty('responses', $response['data']); - } -} diff --git a/docker/streamline-src/vendor/africastalking/africastalking/tests/SMSTest.php b/docker/streamline-src/vendor/africastalking/africastalking/tests/SMSTest.php deleted file mode 100644 index 3fe6c9d7..00000000 --- a/docker/streamline-src/vendor/africastalking/africastalking/tests/SMSTest.php +++ /dev/null @@ -1,138 +0,0 @@ -username = Fixtures::$username; - $this->apiKey = Fixtures::$apiKey; - - $at = new AfricasTalking($this->username, $this->apiKey); - - $this->client = $at->sms(); - $this->tokenClient = $at->token(); - } - - public function testSMSWithEmptyMessage() - { - $response = $this->client->send([ - 'to' => Fixtures::$multiplePhoneNumbersSMS, - ]); - - $this->assertArrayHasKey('status',$response); - $this->assertEquals('error',$response['status']); - } - - public function testSMSWithEmptyRecipient() - { - $response = $this->client->send([ - 'message' => 'Testing...' - ]); - - $this->assertArrayHasKey('status',$response); - $this->assertEquals('error',$response['status']); - } - - public function testSingleSMSSending() - { - $response = $this->client->send([ - 'to' => Fixtures::$phoneNumber, - 'message' => 'Testing SMS...' - ]); - - $this->assertObjectHasProperty('SMSMessageData', $response['data']); - } - - public function testMultipleSMSSending() - { - $response = $this->client->send([ - 'to' => Fixtures::$multiplePhoneNumbersSMS, - 'message' => 'Testing multiple sending...' - ]); - - $this->assertObjectHasProperty('SMSMessageData', $response['data']); - } - - public function testSMSSendingWithShortcode() - { - $response = $this->client->send([ - 'to' => Fixtures::$multiplePhoneNumbersSMS, - 'message' => 'Testing with short code...', - 'from' => Fixtures::$shortCode - ]); - - $this->assertObjectHasProperty('SMSMessageData', $response['data']); - } - - public function testSMSSendingWithAlphanumeric() - { - $response = $this->client->send([ - 'to' => Fixtures::$multiplePhoneNumbersSMS, - 'message' => 'Testing with AlphaNumeric...', - 'from' => Fixtures::$alphanumeric - ]); - - $this->assertObjectHasProperty('SMSMessageData', $response['data']); - } - - public function testPremiumSMSSending() - { - $response = $this->client->sendPremium([ - 'to' => Fixtures::$multiplePhoneNumbersSMS, - 'linkId' => 'messageLinkId', - 'keyword' => Fixtures::$keyword, - 'from' => Fixtures::$shortCode, - 'message' => 'Testing Premium...' - ]); - - $this->assertObjectHasProperty('SMSMessageData', $response['data']); - } - - public function testFetchMessages() - { - $response = $this->client->fetchMessages(['lastReceivedId' => '8796']); - - $this->assertObjectHasProperty('SMSMessageData', $response['data']); - } - - public function testCreateSubscription() - { - $response = $this->client->createSubscription([ - 'phoneNumber' => Fixtures::$phoneNumber, - 'shortCode' => Fixtures::$shortCode, - 'keyword' => Fixtures::$keyword, - ]); - - $this->assertArrayHasKey('status',$response); - $this->assertArrayHasKey('data',$response); - $this->assertEquals('success',$response['status']); - $this->assertEquals('Success',$response['data']->status); - } - - public function testDeleteSubscription() - { - $response = $this->client->deleteSubscription([ - 'phoneNumber' => Fixtures::$phoneNumber, - 'shortCode' => Fixtures::$shortCode, - 'keyword' => Fixtures::$keyword - ]); - - $this->assertArrayHasKey('status',$response); - $this->assertEquals('success',$response['status']); - } - - public function testFetchSubscriptions() - { - $response = $this->client->fetchSubscriptions([ - 'shortCode' => Fixtures::$shortCode, - 'keyword' => Fixtures::$keyword - ]); - - $this->assertObjectHasProperty('responses', $response['data']); - } -} diff --git a/docker/streamline-src/vendor/africastalking/africastalking/tests/TokenTest.php b/docker/streamline-src/vendor/africastalking/africastalking/tests/TokenTest.php deleted file mode 100644 index 266b00e8..00000000 --- a/docker/streamline-src/vendor/africastalking/africastalking/tests/TokenTest.php +++ /dev/null @@ -1,25 +0,0 @@ -username = Fixtures::$username; - $this->apiKey = Fixtures::$apiKey; - - $at = new AfricasTalking($this->username, $this->apiKey); - - $this->client = $at->token(); - } - - public function testGenerateAuthToken() - { - $response = $this->client->generateAuthToken(); - $this->assertEquals(3600, $response['data']->lifetimeInSeconds); - } -} diff --git a/docker/streamline-src/vendor/africastalking/africastalking/tests/VoiceTest.php b/docker/streamline-src/vendor/africastalking/africastalking/tests/VoiceTest.php deleted file mode 100644 index 74162f6b..00000000 --- a/docker/streamline-src/vendor/africastalking/africastalking/tests/VoiceTest.php +++ /dev/null @@ -1,91 +0,0 @@ -username = Fixtures::$username; - $this->apiKey = Fixtures::$apiKey; - - $at = new AfricasTalking($this->username, $this->apiKey); - - $this->client = $at->voice(); - } - - public function testCall() - { - $response = $this->client->call([ - 'from' => Fixtures::$voicePhoneNumber, - 'to' => Fixtures::$voicePhoneNumber2 - ]); - $this->assertObjectHasProperty('entries', $response['data']); - - } - - public function testCallsMustHaveRequiredAttributes() - { - $response = $this->client->call([ - 'from' => Fixtures::$voicePhoneNumber - ]); - - $this->assertArrayHasKey('status',$response); - $this->assertEquals('error',$response['status']); - } - - public function testFetchQueuedCalls() - { - $response = $this->client->fetchQueuedCalls([ - 'phoneNumber' => Fixtures::$voicePhoneNumber, - 'name' => 'someQueueName' - ]); - - $this->assertArrayHasKey('status', $response); - } - - public function testFetchQueuedCallsMustHaveRequiredAttributes() - { - $response = $this->client->fetchQueuedCalls(); - - $this->assertArrayHasKey('status',$response); - $this->assertEquals('error',$response['status']); - } - - public function testUploadMediaFile() - { - $response = $this->client->uploadMediaFile([ - 'phoneNumber' => Fixtures::$voicePhoneNumber, - 'url' => Fixtures::$mediaUrl - ]); - - $this->assertArrayHasKey('status', $response); - } - - public function testuploadMediaFileMustHaveRequiredAttributes() - { - $response = $this->client->uploadMediaFile([ - 'url' => 'test@google' - ]); - - $this->assertArrayHasKey('status',$response); - $this->assertEquals('error',$response['status']); - } - - public function testuploadMediaFileCannotBeEmpty() - { - $response = $this->client->uploadMediaFile(); - - $this->assertArrayHasKey('status',$response); - $this->assertEquals('error',$response['status']); - } - - // public function testMessageBuilder() - // { - // // TODO - // } - -} diff --git a/docker/streamline-src/vendor/autoload.php b/docker/streamline-src/vendor/autoload.php deleted file mode 100644 index ac7b0306..00000000 --- a/docker/streamline-src/vendor/autoload.php +++ /dev/null @@ -1,25 +0,0 @@ -=7.2", - "illuminate/support": "^9|^10|^11.0", - "illuminate/filesystem": "^9|^10|^11.0", - "knplabs/knp-snappy": "^1.4.4" - }, - "require-dev": { - "orchestra/testbench": "^7|^8|^9.0" - }, - "autoload": { - "psr-4": { - "Barryvdh\\Snappy\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "Barryvdh\\Snappy\\Tests\\": "tests/" - } - }, - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - }, - "laravel": { - "providers": [ - "Barryvdh\\Snappy\\ServiceProvider" - ], - "aliases": { - "PDF": "Barryvdh\\Snappy\\Facades\\SnappyPdf", - "SnappyImage": "Barryvdh\\Snappy\\Facades\\SnappyImage" - } - } - }, - "scripts": { - "test": "phpunit" - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/docker/streamline-src/vendor/barryvdh/laravel-snappy/config/snappy.php b/docker/streamline-src/vendor/barryvdh/laravel-snappy/config/snappy.php deleted file mode 100644 index cc28fbc5..00000000 --- a/docker/streamline-src/vendor/barryvdh/laravel-snappy/config/snappy.php +++ /dev/null @@ -1,52 +0,0 @@ - [ - 'enabled' => true, - 'binary' => env('WKHTML_PDF_BINARY', '/usr/local/bin/wkhtmltopdf'), - 'timeout' => false, - 'options' => [], - 'env' => [], - ], - - 'image' => [ - 'enabled' => true, - 'binary' => env('WKHTML_IMG_BINARY', '/usr/local/bin/wkhtmltoimage'), - 'timeout' => false, - 'options' => [], - 'env' => [], - ], - -]; diff --git a/docker/streamline-src/vendor/barryvdh/laravel-snappy/src/IlluminateSnappyImage.php b/docker/streamline-src/vendor/barryvdh/laravel-snappy/src/IlluminateSnappyImage.php deleted file mode 100644 index 2a3d2a7c..00000000 --- a/docker/streamline-src/vendor/barryvdh/laravel-snappy/src/IlluminateSnappyImage.php +++ /dev/null @@ -1,108 +0,0 @@ -fs = $fs; - } - - /** - * Wrapper for the "file_get_contents" function - * - * @param string $filename - * - * @return string - */ - protected function getFileContents($filename) - { - return $this->fs->get($filename); - } - - /** - * Wrapper for the "file_exists" function - * - * @param string $filename - * - * @return boolean - */ - protected function fileExists($filename) - { - return $this->fs->exists($filename); - } - - /** - * Wrapper for the "is_file" method - * - * @param string $filename - * - * @return boolean - */ - protected function isFile($filename) - { - return $this->fs->isFile($filename); - } - - /** - * Wrapper for the "filesize" function - * - * @param string $filename - * - * @return integer or FALSE on failure - */ - protected function filesize($filename) - { - return $this->fs->size($filename); - } - - /** - * Wrapper for the "unlink" function - * - * @param string $filename - * - * @return boolean - */ - protected function unlink($filename) - { - return $this->fs->delete($filename); - } - - /** - * Wrapper for the "is_dir" function - * - * @param string $filename - * - * @return boolean - */ - protected function isDir($filename) - { - return $this->fs->isDirectory($filename); - } - - /** - * Wrapper for the mkdir function - * - * @param string $pathname - * - * @return boolean - */ - protected function mkdir($pathname) - { - return $this->fs->makeDirectory($pathname, 0777, true, true); - } - -} \ No newline at end of file diff --git a/docker/streamline-src/vendor/barryvdh/laravel-snappy/src/ImageWrapper.php b/docker/streamline-src/vendor/barryvdh/laravel-snappy/src/ImageWrapper.php deleted file mode 100644 index 28fe0d74..00000000 --- a/docker/streamline-src/vendor/barryvdh/laravel-snappy/src/ImageWrapper.php +++ /dev/null @@ -1,208 +0,0 @@ -snappy = $snappy; - } - - /** - * Get the Snappy instance. - * - * @return \Knp\Snappy\Image - */ - public function snappy() - { - return $this->snappy; - } - - public function setOption($name, $value) - { - $this->snappy->setOption($name, $value); - return $this; - } - - public function setOptions($options) - { - $this->snappy->setOptions($options); - return $this; - } - - /** - * Load a HTML string - * - * @param string $string - * @return static - */ - public function loadHTML($string) - { - $this->html = (string) $string; - $this->file = null; - return $this; - } - - /** - * Load a HTML file - * - * @param string $file - * @return static - */ - public function loadFile($file) - { - $this->html = null; - $this->file = $file; - return $this; - } - - public function loadView($view, $data = array(), $mergeData = array()) - { - $this->html = View::make($view, $data, $mergeData)->render(); - $this->file = null; - return $this; - } - - /** - * Output the PDF as a string. - * - * @return string The rendered PDF as string - * @throws \InvalidArgumentException - */ - public function output() - { - if ($this->html) - { - return $this->snappy->getOutputFromHtml($this->html, $this->options); - } - - if ($this->file) - { - return $this->snappy->getOutput($this->file, $this->options); - } - - throw new \InvalidArgumentException('Image Generator requires a html or file in order to produce output.'); - } - - /** - * Save the image to a file - * - * @param $filename - * @return static - */ - public function save($filename, $overwrite = false) - { - - if ($this->html) - { - $this->snappy->generateFromHtml($this->html, $filename, $this->options, $overwrite); - } - elseif ($this->file) - { - $this->snappy->generate($this->file, $filename, $this->options, $overwrite); - } - - return $this; - } - - /** - * Make the image downloadable by the user - * - * @param string $filename - * @return \Symfony\Component\HttpFoundation\Response - */ - public function download($filename = 'image.jpg') - { - return new Response($this->output(), 200, array( - 'Content-Type' => 'image/jpeg', - 'Content-Disposition' => 'attachment; filename="'.$filename.'"' - )); - } - - /** - * Return a response with the image to show in the browser - * - * @param string $filename - * @return \Illuminate\Http\Response - */ - public function inline($filename = 'image.jpg') - { - return new Response($this->output(), 200, array( - 'Content-Type' => 'image/jpeg', - 'Content-Disposition' => 'inline; filename="'.$filename.'"', - )); - } - - /** - * Return a response with the image to show in the browser - * - * @deprecated Use inline() instead - * @param string $filename - * @return \Symfony\Component\HttpFoundation\Response - */ - public function stream($filename = 'image.jpg') - { - return new StreamedResponse(function() { - echo $this->output(); - }, 200, array( - 'Content-Type' => 'image/jpeg', - 'Content-Disposition' => 'inline; filename="'.$filename.'"', - )); - } - - /** - * Call Snappy instance. - * - * Also shortcut's - * ->html => loadHtml - * ->view => loadView - * ->file => loadFile - * - * @param string $name - * @param array $arguments - * @return mixed - */ - public function __call($name, array $arguments) - { - $method = 'load' . ucfirst($name); - if (method_exists($this, $method)) - { - return call_user_func_array(array($this, $method), $arguments); - } - - return call_user_func_array (array($this->snappy, $name), $arguments); - } -} diff --git a/docker/streamline-src/vendor/bin/wkhtmltoimage-amd64 b/docker/streamline-src/vendor/bin/wkhtmltoimage-amd64 deleted file mode 100755 index 6692accb..00000000 --- a/docker/streamline-src/vendor/bin/wkhtmltoimage-amd64 +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/env sh - -# Support bash to support `source` with fallback on $0 if this does not run with bash -# https://stackoverflow.com/a/35006505/6512 -selfArg="$BASH_SOURCE" -if [ -z "$selfArg" ]; then - selfArg="$0" -fi - -self=$(realpath $selfArg 2> /dev/null) -if [ -z "$self" ]; then - self="$selfArg" -fi - -dir=$(cd "${self%[/\\]*}" > /dev/null; cd '../h4cc/wkhtmltoimage-amd64/bin' && pwd) - -if [ -d /proc/cygdrive ]; then - case $(which php) in - $(readlink -n /proc/cygdrive)/*) - # We are in Cygwin using Windows php, so the path must be translated - dir=$(cygpath -m "$dir"); - ;; - esac -fi - -export COMPOSER_RUNTIME_BIN_DIR="$(cd "${self%[/\\]*}" > /dev/null; pwd)" - -# If bash is sourcing this file, we have to source the target as well -bashSource="$BASH_SOURCE" -if [ -n "$bashSource" ]; then - if [ "$bashSource" != "$0" ]; then - source "${dir}/wkhtmltoimage-amd64" "$@" - return - fi -fi - -exec "${dir}/wkhtmltoimage-amd64" "$@" diff --git a/docker/streamline-src/vendor/bin/wkhtmltopdf-amd64 b/docker/streamline-src/vendor/bin/wkhtmltopdf-amd64 deleted file mode 100755 index de3ec41e..00000000 --- a/docker/streamline-src/vendor/bin/wkhtmltopdf-amd64 +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/env sh - -# Support bash to support `source` with fallback on $0 if this does not run with bash -# https://stackoverflow.com/a/35006505/6512 -selfArg="$BASH_SOURCE" -if [ -z "$selfArg" ]; then - selfArg="$0" -fi - -self=$(realpath $selfArg 2> /dev/null) -if [ -z "$self" ]; then - self="$selfArg" -fi - -dir=$(cd "${self%[/\\]*}" > /dev/null; cd '../h4cc/wkhtmltopdf-amd64/bin' && pwd) - -if [ -d /proc/cygdrive ]; then - case $(which php) in - $(readlink -n /proc/cygdrive)/*) - # We are in Cygwin using Windows php, so the path must be translated - dir=$(cygpath -m "$dir"); - ;; - esac -fi - -export COMPOSER_RUNTIME_BIN_DIR="$(cd "${self%[/\\]*}" > /dev/null; pwd)" - -# If bash is sourcing this file, we have to source the target as well -bashSource="$BASH_SOURCE" -if [ -n "$bashSource" ]; then - if [ "$bashSource" != "$0" ]; then - source "${dir}/wkhtmltopdf-amd64" "$@" - return - fi -fi - -exec "${dir}/wkhtmltopdf-amd64" "$@" diff --git a/docker/streamline-src/vendor/brick/math/CHANGELOG.md b/docker/streamline-src/vendor/brick/math/CHANGELOG.md deleted file mode 100644 index 680fa9ba..00000000 --- a/docker/streamline-src/vendor/brick/math/CHANGELOG.md +++ /dev/null @@ -1,463 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -## [0.12.1](https://github.com/brick/math/releases/tag/0.12.1) - 2023-11-29 - -⚡️ **Performance improvements** - -- `BigNumber::of()` is now faster, thanks to [@SebastienDug](https://github.com/SebastienDug) in [#77](https://github.com/brick/math/pull/77). - -## [0.12.0](https://github.com/brick/math/releases/tag/0.12.0) - 2023-11-26 - -💥 **Breaking changes** - -- Minimum PHP version is now 8.1 -- `RoundingMode` is now an `enum`; if you're type-hinting rounding modes, you need to type-hint against `RoundingMode` instead of `int` now -- `BigNumber` classes do not implement the `Serializable` interface anymore (they use the [new custom object serialization mechanism](https://wiki.php.net/rfc/custom_object_serialization)) -- The following breaking changes only affect you if you're creating your own `BigNumber` subclasses: - - the return type of `BigNumber::of()` is now `static` - - `BigNumber` has a new abstract method `from()` - - all `public` and `protected` functions of `BigNumber` are now `final` - -## [0.11.0](https://github.com/brick/math/releases/tag/0.11.0) - 2023-01-16 - -💥 **Breaking changes** - -- Minimum PHP version is now 8.0 -- Methods accepting a union of types are now strongly typed* -- `MathException` now extends `Exception` instead of `RuntimeException` - -* You may now run into type errors if you were passing `Stringable` objects to `of()` or any of the methods -internally calling `of()`, with `strict_types` enabled. You can fix this by casting `Stringable` objects to `string` -first. - -## [0.10.2](https://github.com/brick/math/releases/tag/0.10.2) - 2022-08-11 - -👌 **Improvements** - -- `BigRational::toFloat()` now simplifies the fraction before performing division (#73) thanks to @olsavmic - -## [0.10.1](https://github.com/brick/math/releases/tag/0.10.1) - 2022-08-02 - -✨ **New features** - -- `BigInteger::gcdMultiple()` returns the GCD of multiple `BigInteger` numbers - -## [0.10.0](https://github.com/brick/math/releases/tag/0.10.0) - 2022-06-18 - -💥 **Breaking changes** - -- Minimum PHP version is now 7.4 - -## [0.9.3](https://github.com/brick/math/releases/tag/0.9.3) - 2021-08-15 - -🚀 **Compatibility with PHP 8.1** - -- Support for custom object serialization; this removes a warning on PHP 8.1 due to the `Serializable` interface being deprecated (#60) thanks @TRowbotham - -## [0.9.2](https://github.com/brick/math/releases/tag/0.9.2) - 2021-01-20 - -🐛 **Bug fix** - -- Incorrect results could be returned when using the BCMath calculator, with a default scale set with `bcscale()`, on PHP >= 7.2 (#55). - -## [0.9.1](https://github.com/brick/math/releases/tag/0.9.1) - 2020-08-19 - -✨ **New features** - -- `BigInteger::not()` returns the bitwise `NOT` value - -🐛 **Bug fixes** - -- `BigInteger::toBytes()` could return an incorrect binary representation for some numbers -- The bitwise operations `and()`, `or()`, `xor()` on `BigInteger` could return an incorrect result when the GMP extension is not available - -## [0.9.0](https://github.com/brick/math/releases/tag/0.9.0) - 2020-08-18 - -👌 **Improvements** - -- `BigNumber::of()` now accepts `.123` and `123.` formats, both of which return a `BigDecimal` - -💥 **Breaking changes** - -- Deprecated method `BigInteger::powerMod()` has been removed - use `modPow()` instead -- Deprecated method `BigInteger::parse()` has been removed - use `fromBase()` instead - -## [0.8.17](https://github.com/brick/math/releases/tag/0.8.17) - 2020-08-19 - -🐛 **Bug fix** - -- `BigInteger::toBytes()` could return an incorrect binary representation for some numbers -- The bitwise operations `and()`, `or()`, `xor()` on `BigInteger` could return an incorrect result when the GMP extension is not available - -## [0.8.16](https://github.com/brick/math/releases/tag/0.8.16) - 2020-08-18 - -🚑 **Critical fix** - -- This version reintroduces the deprecated `BigInteger::parse()` method, that has been removed by mistake in version `0.8.9` and should have lasted for the whole `0.8` release cycle. - -✨ **New features** - -- `BigInteger::modInverse()` calculates a modular multiplicative inverse -- `BigInteger::fromBytes()` creates a `BigInteger` from a byte string -- `BigInteger::toBytes()` converts a `BigInteger` to a byte string -- `BigInteger::randomBits()` creates a pseudo-random `BigInteger` of a given bit length -- `BigInteger::randomRange()` creates a pseudo-random `BigInteger` between two bounds - -💩 **Deprecations** - -- `BigInteger::powerMod()` is now deprecated in favour of `modPow()` - -## [0.8.15](https://github.com/brick/math/releases/tag/0.8.15) - 2020-04-15 - -🐛 **Fixes** - -- added missing `ext-json` requirement, due to `BigNumber` implementing `JsonSerializable` - -⚡️ **Optimizations** - -- additional optimization in `BigInteger::remainder()` - -## [0.8.14](https://github.com/brick/math/releases/tag/0.8.14) - 2020-02-18 - -✨ **New features** - -- `BigInteger::getLowestSetBit()` returns the index of the rightmost one bit - -## [0.8.13](https://github.com/brick/math/releases/tag/0.8.13) - 2020-02-16 - -✨ **New features** - -- `BigInteger::isEven()` tests whether the number is even -- `BigInteger::isOdd()` tests whether the number is odd -- `BigInteger::testBit()` tests if a bit is set -- `BigInteger::getBitLength()` returns the number of bits in the minimal representation of the number - -## [0.8.12](https://github.com/brick/math/releases/tag/0.8.12) - 2020-02-03 - -🛠️ **Maintenance release** - -Classes are now annotated for better static analysis with [psalm](https://psalm.dev/). - -This is a maintenance release: no bug fixes, no new features, no breaking changes. - -## [0.8.11](https://github.com/brick/math/releases/tag/0.8.11) - 2020-01-23 - -✨ **New feature** - -`BigInteger::powerMod()` performs a power-with-modulo operation. Useful for crypto. - -## [0.8.10](https://github.com/brick/math/releases/tag/0.8.10) - 2020-01-21 - -✨ **New feature** - -`BigInteger::mod()` returns the **modulo** of two numbers. The *modulo* differs from the *remainder* when the signs of the operands are different. - -## [0.8.9](https://github.com/brick/math/releases/tag/0.8.9) - 2020-01-08 - -⚡️ **Performance improvements** - -A few additional optimizations in `BigInteger` and `BigDecimal` when one of the operands can be returned as is. Thanks to @tomtomsen in #24. - -## [0.8.8](https://github.com/brick/math/releases/tag/0.8.8) - 2019-04-25 - -🐛 **Bug fixes** - -- `BigInteger::toBase()` could return an empty string for zero values (BCMath & Native calculators only, GMP calculator unaffected) - -✨ **New features** - -- `BigInteger::toArbitraryBase()` converts a number to an arbitrary base, using a custom alphabet -- `BigInteger::fromArbitraryBase()` converts a string in an arbitrary base, using a custom alphabet, back to a number - -These methods can be used as the foundation to convert strings between different bases/alphabets, using BigInteger as an intermediate representation. - -💩 **Deprecations** - -- `BigInteger::parse()` is now deprecated in favour of `fromBase()` - -`BigInteger::fromBase()` works the same way as `parse()`, with 2 minor differences: - -- the `$base` parameter is required, it does not default to `10` -- it throws a `NumberFormatException` instead of an `InvalidArgumentException` when the number is malformed - -## [0.8.7](https://github.com/brick/math/releases/tag/0.8.7) - 2019-04-20 - -**Improvements** - -- Safer conversion from `float` when using custom locales -- **Much faster** `NativeCalculator` implementation 🚀 - -You can expect **at least a 3x performance improvement** for common arithmetic operations when using the library on systems without GMP or BCMath; it gets exponentially faster on multiplications with a high number of digits. This is due to calculations now being performed on whole blocks of digits (the block size depending on the platform, 32-bit or 64-bit) instead of digit-by-digit as before. - -## [0.8.6](https://github.com/brick/math/releases/tag/0.8.6) - 2019-04-11 - -**New method** - -`BigNumber::sum()` returns the sum of one or more numbers. - -## [0.8.5](https://github.com/brick/math/releases/tag/0.8.5) - 2019-02-12 - -**Bug fix**: `of()` factory methods could fail when passing a `float` in environments using a `LC_NUMERIC` locale with a decimal separator other than `'.'` (#20). - -Thanks @manowark 👍 - -## [0.8.4](https://github.com/brick/math/releases/tag/0.8.4) - 2018-12-07 - -**New method** - -`BigDecimal::sqrt()` calculates the square root of a decimal number, to a given scale. - -## [0.8.3](https://github.com/brick/math/releases/tag/0.8.3) - 2018-12-06 - -**New method** - -`BigInteger::sqrt()` calculates the square root of a number (thanks @peter279k). - -**New exception** - -`NegativeNumberException` is thrown when calling `sqrt()` on a negative number. - -## [0.8.2](https://github.com/brick/math/releases/tag/0.8.2) - 2018-11-08 - -**Performance update** - -- Further improvement of `toInt()` performance -- `NativeCalculator` can now perform some multiplications more efficiently - -## [0.8.1](https://github.com/brick/math/releases/tag/0.8.1) - 2018-11-07 - -Performance optimization of `toInt()` methods. - -## [0.8.0](https://github.com/brick/math/releases/tag/0.8.0) - 2018-10-13 - -**Breaking changes** - -The following deprecated methods have been removed. Use the new method name instead: - -| Method removed | Replacement method | -| --- | --- | -| `BigDecimal::getIntegral()` | `BigDecimal::getIntegralPart()` | -| `BigDecimal::getFraction()` | `BigDecimal::getFractionalPart()` | - ---- - -**New features** - -`BigInteger` has been augmented with 5 new methods for bitwise operations: - -| New method | Description | -| --- | --- | -| `and()` | performs a bitwise `AND` operation on two numbers | -| `or()` | performs a bitwise `OR` operation on two numbers | -| `xor()` | performs a bitwise `XOR` operation on two numbers | -| `shiftedLeft()` | returns the number shifted left by a number of bits | -| `shiftedRight()` | returns the number shifted right by a number of bits | - -Thanks to @DASPRiD 👍 - -## [0.7.3](https://github.com/brick/math/releases/tag/0.7.3) - 2018-08-20 - -**New method:** `BigDecimal::hasNonZeroFractionalPart()` - -**Renamed/deprecated methods:** - -- `BigDecimal::getIntegral()` has been renamed to `getIntegralPart()` and is now deprecated -- `BigDecimal::getFraction()` has been renamed to `getFractionalPart()` and is now deprecated - -## [0.7.2](https://github.com/brick/math/releases/tag/0.7.2) - 2018-07-21 - -**Performance update** - -`BigInteger::parse()` and `toBase()` now use GMP's built-in base conversion features when available. - -## [0.7.1](https://github.com/brick/math/releases/tag/0.7.1) - 2018-03-01 - -This is a maintenance release, no code has been changed. - -- When installed with `--no-dev`, the autoloader does not autoload tests anymore -- Tests and other files unnecessary for production are excluded from the dist package - -This will help make installations more compact. - -## [0.7.0](https://github.com/brick/math/releases/tag/0.7.0) - 2017-10-02 - -Methods renamed: - -- `BigNumber:sign()` has been renamed to `getSign()` -- `BigDecimal::unscaledValue()` has been renamed to `getUnscaledValue()` -- `BigDecimal::scale()` has been renamed to `getScale()` -- `BigDecimal::integral()` has been renamed to `getIntegral()` -- `BigDecimal::fraction()` has been renamed to `getFraction()` -- `BigRational::numerator()` has been renamed to `getNumerator()` -- `BigRational::denominator()` has been renamed to `getDenominator()` - -Classes renamed: - -- `ArithmeticException` has been renamed to `MathException` - -## [0.6.2](https://github.com/brick/math/releases/tag/0.6.2) - 2017-10-02 - -The base class for all exceptions is now `MathException`. -`ArithmeticException` has been deprecated, and will be removed in 0.7.0. - -## [0.6.1](https://github.com/brick/math/releases/tag/0.6.1) - 2017-10-02 - -A number of methods have been renamed: - -- `BigNumber:sign()` is deprecated; use `getSign()` instead -- `BigDecimal::unscaledValue()` is deprecated; use `getUnscaledValue()` instead -- `BigDecimal::scale()` is deprecated; use `getScale()` instead -- `BigDecimal::integral()` is deprecated; use `getIntegral()` instead -- `BigDecimal::fraction()` is deprecated; use `getFraction()` instead -- `BigRational::numerator()` is deprecated; use `getNumerator()` instead -- `BigRational::denominator()` is deprecated; use `getDenominator()` instead - -The old methods will be removed in version 0.7.0. - -## [0.6.0](https://github.com/brick/math/releases/tag/0.6.0) - 2017-08-25 - -- Minimum PHP version is now [7.1](https://gophp71.org/); for PHP 5.6 and PHP 7.0 support, use version `0.5` -- Deprecated method `BigDecimal::withScale()` has been removed; use `toScale()` instead -- Method `BigNumber::toInteger()` has been renamed to `toInt()` - -## [0.5.4](https://github.com/brick/math/releases/tag/0.5.4) - 2016-10-17 - -`BigNumber` classes now implement [JsonSerializable](http://php.net/manual/en/class.jsonserializable.php). -The JSON output is always a string. - -## [0.5.3](https://github.com/brick/math/releases/tag/0.5.3) - 2016-03-31 - -This is a bugfix release. Dividing by a negative power of 1 with the same scale as the dividend could trigger an incorrect optimization which resulted in a wrong result. See #6. - -## [0.5.2](https://github.com/brick/math/releases/tag/0.5.2) - 2015-08-06 - -The `$scale` parameter of `BigDecimal::dividedBy()` is now optional again. - -## [0.5.1](https://github.com/brick/math/releases/tag/0.5.1) - 2015-07-05 - -**New method: `BigNumber::toScale()`** - -This allows to convert any `BigNumber` to a `BigDecimal` with a given scale, using rounding if necessary. - -## [0.5.0](https://github.com/brick/math/releases/tag/0.5.0) - 2015-07-04 - -**New features** -- Common `BigNumber` interface for all classes, with the following methods: - - `sign()` and derived methods (`isZero()`, `isPositive()`, ...) - - `compareTo()` and derived methods (`isEqualTo()`, `isGreaterThan()`, ...) that work across different `BigNumber` types - - `toBigInteger()`, `toBigDecimal()`, `toBigRational`() conversion methods - - `toInteger()` and `toFloat()` conversion methods to native types -- Unified `of()` behaviour: every class now accepts any type of number, provided that it can be safely converted to the current type -- New method: `BigDecimal::exactlyDividedBy()`; this method automatically computes the scale of the result, provided that the division yields a finite number of digits -- New methods: `BigRational::quotient()` and `remainder()` -- Fine-grained exceptions: `DivisionByZeroException`, `RoundingNecessaryException`, `NumberFormatException` -- Factory methods `zero()`, `one()` and `ten()` available in all classes -- Rounding mode reintroduced in `BigInteger::dividedBy()` - -This release also comes with many performance improvements. - ---- - -**Breaking changes** -- `BigInteger`: - - `getSign()` is renamed to `sign()` - - `toString()` is renamed to `toBase()` - - `BigInteger::dividedBy()` now throws an exception by default if the remainder is not zero; use `quotient()` to get the previous behaviour -- `BigDecimal`: - - `getSign()` is renamed to `sign()` - - `getUnscaledValue()` is renamed to `unscaledValue()` - - `getScale()` is renamed to `scale()` - - `getIntegral()` is renamed to `integral()` - - `getFraction()` is renamed to `fraction()` - - `divideAndRemainder()` is renamed to `quotientAndRemainder()` - - `dividedBy()` now takes a **mandatory** `$scale` parameter **before** the rounding mode - - `toBigInteger()` does not accept a `$roundingMode` parameter anymore - - `toBigRational()` does not simplify the fraction anymore; explicitly add `->simplified()` to get the previous behaviour -- `BigRational`: - - `getSign()` is renamed to `sign()` - - `getNumerator()` is renamed to `numerator()` - - `getDenominator()` is renamed to `denominator()` - - `of()` is renamed to `nd()`, while `parse()` is renamed to `of()` -- Miscellaneous: - - `ArithmeticException` is moved to an `Exception\` sub-namespace - - `of()` factory methods now throw `NumberFormatException` instead of `InvalidArgumentException` - -## [0.4.3](https://github.com/brick/math/releases/tag/0.4.3) - 2016-03-31 - -Backport of two bug fixes from the 0.5 branch: -- `BigInteger::parse()` did not always throw `InvalidArgumentException` as expected -- Dividing by a negative power of 1 with the same scale as the dividend could trigger an incorrect optimization which resulted in a wrong result. See #6. - -## [0.4.2](https://github.com/brick/math/releases/tag/0.4.2) - 2015-06-16 - -New method: `BigDecimal::stripTrailingZeros()` - -## [0.4.1](https://github.com/brick/math/releases/tag/0.4.1) - 2015-06-12 - -Introducing a `BigRational` class, to perform calculations on fractions of any size. - -## [0.4.0](https://github.com/brick/math/releases/tag/0.4.0) - 2015-06-12 - -Rounding modes have been removed from `BigInteger`, and are now a concept specific to `BigDecimal`. - -`BigInteger::dividedBy()` now always returns the quotient of the division. - -## [0.3.5](https://github.com/brick/math/releases/tag/0.3.5) - 2016-03-31 - -Backport of two bug fixes from the 0.5 branch: - -- `BigInteger::parse()` did not always throw `InvalidArgumentException` as expected -- Dividing by a negative power of 1 with the same scale as the dividend could trigger an incorrect optimization which resulted in a wrong result. See #6. - -## [0.3.4](https://github.com/brick/math/releases/tag/0.3.4) - 2015-06-11 - -New methods: -- `BigInteger::remainder()` returns the remainder of a division only -- `BigInteger::gcd()` returns the greatest common divisor of two numbers - -## [0.3.3](https://github.com/brick/math/releases/tag/0.3.3) - 2015-06-07 - -Fix `toString()` not handling negative numbers. - -## [0.3.2](https://github.com/brick/math/releases/tag/0.3.2) - 2015-06-07 - -`BigInteger` and `BigDecimal` now have a `getSign()` method that returns: -- `-1` if the number is negative -- `0` if the number is zero -- `1` if the number is positive - -## [0.3.1](https://github.com/brick/math/releases/tag/0.3.1) - 2015-06-05 - -Minor performance improvements - -## [0.3.0](https://github.com/brick/math/releases/tag/0.3.0) - 2015-06-04 - -The `$roundingMode` and `$scale` parameters have been swapped in `BigDecimal::dividedBy()`. - -## [0.2.2](https://github.com/brick/math/releases/tag/0.2.2) - 2015-06-04 - -Stronger immutability guarantee for `BigInteger` and `BigDecimal`. - -So far, it would have been possible to break immutability of these classes by calling the `unserialize()` internal function. This release fixes that. - -## [0.2.1](https://github.com/brick/math/releases/tag/0.2.1) - 2015-06-02 - -Added `BigDecimal::divideAndRemainder()` - -## [0.2.0](https://github.com/brick/math/releases/tag/0.2.0) - 2015-05-22 - -- `min()` and `max()` do not accept an `array` anymore, but a variable number of parameters -- **minimum PHP version is now 5.6** -- continuous integration with PHP 7 - -## [0.1.1](https://github.com/brick/math/releases/tag/0.1.1) - 2014-09-01 - -- Added `BigInteger::power()` -- Added HHVM support - -## [0.1.0](https://github.com/brick/math/releases/tag/0.1.0) - 2014-08-31 - -First beta release. - diff --git a/docker/streamline-src/vendor/brick/math/composer.json b/docker/streamline-src/vendor/brick/math/composer.json deleted file mode 100644 index bd67343a..00000000 --- a/docker/streamline-src/vendor/brick/math/composer.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "brick/math", - "description": "Arbitrary-precision arithmetic library", - "type": "library", - "keywords": [ - "Brick", - "Math", - "Mathematics", - "Arbitrary-precision", - "Arithmetic", - "BigInteger", - "BigDecimal", - "BigRational", - "BigNumber", - "Bignum", - "Decimal", - "Rational", - "Integer" - ], - "license": "MIT", - "require": { - "php": "^8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.1", - "php-coveralls/php-coveralls": "^2.2", - "vimeo/psalm": "5.16.0" - }, - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "Brick\\Math\\Tests\\": "tests/" - } - } -} diff --git a/docker/streamline-src/vendor/brick/math/src/BigDecimal.php b/docker/streamline-src/vendor/brick/math/src/BigDecimal.php deleted file mode 100644 index 31d22ab3..00000000 --- a/docker/streamline-src/vendor/brick/math/src/BigDecimal.php +++ /dev/null @@ -1,754 +0,0 @@ -value = $value; - $this->scale = $scale; - } - - /** - * @psalm-pure - */ - protected static function from(BigNumber $number): static - { - return $number->toBigDecimal(); - } - - /** - * Creates a BigDecimal from an unscaled value and a scale. - * - * Example: `(12345, 3)` will result in the BigDecimal `12.345`. - * - * @param BigNumber|int|float|string $value The unscaled value. Must be convertible to a BigInteger. - * @param int $scale The scale of the number, positive or zero. - * - * @throws \InvalidArgumentException If the scale is negative. - * - * @psalm-pure - */ - public static function ofUnscaledValue(BigNumber|int|float|string $value, int $scale = 0) : BigDecimal - { - if ($scale < 0) { - throw new \InvalidArgumentException('The scale cannot be negative.'); - } - - return new BigDecimal((string) BigInteger::of($value), $scale); - } - - /** - * Returns a BigDecimal representing zero, with a scale of zero. - * - * @psalm-pure - */ - public static function zero() : BigDecimal - { - /** - * @psalm-suppress ImpureStaticVariable - * @var BigDecimal|null $zero - */ - static $zero; - - if ($zero === null) { - $zero = new BigDecimal('0'); - } - - return $zero; - } - - /** - * Returns a BigDecimal representing one, with a scale of zero. - * - * @psalm-pure - */ - public static function one() : BigDecimal - { - /** - * @psalm-suppress ImpureStaticVariable - * @var BigDecimal|null $one - */ - static $one; - - if ($one === null) { - $one = new BigDecimal('1'); - } - - return $one; - } - - /** - * Returns a BigDecimal representing ten, with a scale of zero. - * - * @psalm-pure - */ - public static function ten() : BigDecimal - { - /** - * @psalm-suppress ImpureStaticVariable - * @var BigDecimal|null $ten - */ - static $ten; - - if ($ten === null) { - $ten = new BigDecimal('10'); - } - - return $ten; - } - - /** - * Returns the sum of this number and the given one. - * - * The result has a scale of `max($this->scale, $that->scale)`. - * - * @param BigNumber|int|float|string $that The number to add. Must be convertible to a BigDecimal. - * - * @throws MathException If the number is not valid, or is not convertible to a BigDecimal. - */ - public function plus(BigNumber|int|float|string $that) : BigDecimal - { - $that = BigDecimal::of($that); - - if ($that->value === '0' && $that->scale <= $this->scale) { - return $this; - } - - if ($this->value === '0' && $this->scale <= $that->scale) { - return $that; - } - - [$a, $b] = $this->scaleValues($this, $that); - - $value = Calculator::get()->add($a, $b); - $scale = $this->scale > $that->scale ? $this->scale : $that->scale; - - return new BigDecimal($value, $scale); - } - - /** - * Returns the difference of this number and the given one. - * - * The result has a scale of `max($this->scale, $that->scale)`. - * - * @param BigNumber|int|float|string $that The number to subtract. Must be convertible to a BigDecimal. - * - * @throws MathException If the number is not valid, or is not convertible to a BigDecimal. - */ - public function minus(BigNumber|int|float|string $that) : BigDecimal - { - $that = BigDecimal::of($that); - - if ($that->value === '0' && $that->scale <= $this->scale) { - return $this; - } - - [$a, $b] = $this->scaleValues($this, $that); - - $value = Calculator::get()->sub($a, $b); - $scale = $this->scale > $that->scale ? $this->scale : $that->scale; - - return new BigDecimal($value, $scale); - } - - /** - * Returns the product of this number and the given one. - * - * The result has a scale of `$this->scale + $that->scale`. - * - * @param BigNumber|int|float|string $that The multiplier. Must be convertible to a BigDecimal. - * - * @throws MathException If the multiplier is not a valid number, or is not convertible to a BigDecimal. - */ - public function multipliedBy(BigNumber|int|float|string $that) : BigDecimal - { - $that = BigDecimal::of($that); - - if ($that->value === '1' && $that->scale === 0) { - return $this; - } - - if ($this->value === '1' && $this->scale === 0) { - return $that; - } - - $value = Calculator::get()->mul($this->value, $that->value); - $scale = $this->scale + $that->scale; - - return new BigDecimal($value, $scale); - } - - /** - * Returns the result of the division of this number by the given one, at the given scale. - * - * @param BigNumber|int|float|string $that The divisor. - * @param int|null $scale The desired scale, or null to use the scale of this number. - * @param RoundingMode $roundingMode An optional rounding mode, defaults to UNNECESSARY. - * - * @throws \InvalidArgumentException If the scale or rounding mode is invalid. - * @throws MathException If the number is invalid, is zero, or rounding was necessary. - */ - public function dividedBy(BigNumber|int|float|string $that, ?int $scale = null, RoundingMode $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal - { - $that = BigDecimal::of($that); - - if ($that->isZero()) { - throw DivisionByZeroException::divisionByZero(); - } - - if ($scale === null) { - $scale = $this->scale; - } elseif ($scale < 0) { - throw new \InvalidArgumentException('Scale cannot be negative.'); - } - - if ($that->value === '1' && $that->scale === 0 && $scale === $this->scale) { - return $this; - } - - $p = $this->valueWithMinScale($that->scale + $scale); - $q = $that->valueWithMinScale($this->scale - $scale); - - $result = Calculator::get()->divRound($p, $q, $roundingMode); - - return new BigDecimal($result, $scale); - } - - /** - * Returns the exact result of the division of this number by the given one. - * - * The scale of the result is automatically calculated to fit all the fraction digits. - * - * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigDecimal. - * - * @throws MathException If the divisor is not a valid number, is not convertible to a BigDecimal, is zero, - * or the result yields an infinite number of digits. - */ - public function exactlyDividedBy(BigNumber|int|float|string $that) : BigDecimal - { - $that = BigDecimal::of($that); - - if ($that->value === '0') { - throw DivisionByZeroException::divisionByZero(); - } - - [, $b] = $this->scaleValues($this, $that); - - $d = \rtrim($b, '0'); - $scale = \strlen($b) - \strlen($d); - - $calculator = Calculator::get(); - - foreach ([5, 2] as $prime) { - for (;;) { - $lastDigit = (int) $d[-1]; - - if ($lastDigit % $prime !== 0) { - break; - } - - $d = $calculator->divQ($d, (string) $prime); - $scale++; - } - } - - return $this->dividedBy($that, $scale)->stripTrailingZeros(); - } - - /** - * Returns this number exponentiated to the given value. - * - * The result has a scale of `$this->scale * $exponent`. - * - * @throws \InvalidArgumentException If the exponent is not in the range 0 to 1,000,000. - */ - public function power(int $exponent) : BigDecimal - { - if ($exponent === 0) { - return BigDecimal::one(); - } - - if ($exponent === 1) { - return $this; - } - - if ($exponent < 0 || $exponent > Calculator::MAX_POWER) { - throw new \InvalidArgumentException(\sprintf( - 'The exponent %d is not in the range 0 to %d.', - $exponent, - Calculator::MAX_POWER - )); - } - - return new BigDecimal(Calculator::get()->pow($this->value, $exponent), $this->scale * $exponent); - } - - /** - * Returns the quotient of the division of this number by the given one. - * - * The quotient has a scale of `0`. - * - * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigDecimal. - * - * @throws MathException If the divisor is not a valid decimal number, or is zero. - */ - public function quotient(BigNumber|int|float|string $that) : BigDecimal - { - $that = BigDecimal::of($that); - - if ($that->isZero()) { - throw DivisionByZeroException::divisionByZero(); - } - - $p = $this->valueWithMinScale($that->scale); - $q = $that->valueWithMinScale($this->scale); - - $quotient = Calculator::get()->divQ($p, $q); - - return new BigDecimal($quotient, 0); - } - - /** - * Returns the remainder of the division of this number by the given one. - * - * The remainder has a scale of `max($this->scale, $that->scale)`. - * - * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigDecimal. - * - * @throws MathException If the divisor is not a valid decimal number, or is zero. - */ - public function remainder(BigNumber|int|float|string $that) : BigDecimal - { - $that = BigDecimal::of($that); - - if ($that->isZero()) { - throw DivisionByZeroException::divisionByZero(); - } - - $p = $this->valueWithMinScale($that->scale); - $q = $that->valueWithMinScale($this->scale); - - $remainder = Calculator::get()->divR($p, $q); - - $scale = $this->scale > $that->scale ? $this->scale : $that->scale; - - return new BigDecimal($remainder, $scale); - } - - /** - * Returns the quotient and remainder of the division of this number by the given one. - * - * The quotient has a scale of `0`, and the remainder has a scale of `max($this->scale, $that->scale)`. - * - * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigDecimal. - * - * @return BigDecimal[] An array containing the quotient and the remainder. - * - * @psalm-return array{BigDecimal, BigDecimal} - * - * @throws MathException If the divisor is not a valid decimal number, or is zero. - */ - public function quotientAndRemainder(BigNumber|int|float|string $that) : array - { - $that = BigDecimal::of($that); - - if ($that->isZero()) { - throw DivisionByZeroException::divisionByZero(); - } - - $p = $this->valueWithMinScale($that->scale); - $q = $that->valueWithMinScale($this->scale); - - [$quotient, $remainder] = Calculator::get()->divQR($p, $q); - - $scale = $this->scale > $that->scale ? $this->scale : $that->scale; - - $quotient = new BigDecimal($quotient, 0); - $remainder = new BigDecimal($remainder, $scale); - - return [$quotient, $remainder]; - } - - /** - * Returns the square root of this number, rounded down to the given number of decimals. - * - * @throws \InvalidArgumentException If the scale is negative. - * @throws NegativeNumberException If this number is negative. - */ - public function sqrt(int $scale) : BigDecimal - { - if ($scale < 0) { - throw new \InvalidArgumentException('Scale cannot be negative.'); - } - - if ($this->value === '0') { - return new BigDecimal('0', $scale); - } - - if ($this->value[0] === '-') { - throw new NegativeNumberException('Cannot calculate the square root of a negative number.'); - } - - $value = $this->value; - $addDigits = 2 * $scale - $this->scale; - - if ($addDigits > 0) { - // add zeros - $value .= \str_repeat('0', $addDigits); - } elseif ($addDigits < 0) { - // trim digits - if (-$addDigits >= \strlen($this->value)) { - // requesting a scale too low, will always yield a zero result - return new BigDecimal('0', $scale); - } - - $value = \substr($value, 0, $addDigits); - } - - $value = Calculator::get()->sqrt($value); - - return new BigDecimal($value, $scale); - } - - /** - * Returns a copy of this BigDecimal with the decimal point moved $n places to the left. - */ - public function withPointMovedLeft(int $n) : BigDecimal - { - if ($n === 0) { - return $this; - } - - if ($n < 0) { - return $this->withPointMovedRight(-$n); - } - - return new BigDecimal($this->value, $this->scale + $n); - } - - /** - * Returns a copy of this BigDecimal with the decimal point moved $n places to the right. - */ - public function withPointMovedRight(int $n) : BigDecimal - { - if ($n === 0) { - return $this; - } - - if ($n < 0) { - return $this->withPointMovedLeft(-$n); - } - - $value = $this->value; - $scale = $this->scale - $n; - - if ($scale < 0) { - if ($value !== '0') { - $value .= \str_repeat('0', -$scale); - } - $scale = 0; - } - - return new BigDecimal($value, $scale); - } - - /** - * Returns a copy of this BigDecimal with any trailing zeros removed from the fractional part. - */ - public function stripTrailingZeros() : BigDecimal - { - if ($this->scale === 0) { - return $this; - } - - $trimmedValue = \rtrim($this->value, '0'); - - if ($trimmedValue === '') { - return BigDecimal::zero(); - } - - $trimmableZeros = \strlen($this->value) - \strlen($trimmedValue); - - if ($trimmableZeros === 0) { - return $this; - } - - if ($trimmableZeros > $this->scale) { - $trimmableZeros = $this->scale; - } - - $value = \substr($this->value, 0, -$trimmableZeros); - $scale = $this->scale - $trimmableZeros; - - return new BigDecimal($value, $scale); - } - - /** - * Returns the absolute value of this number. - */ - public function abs() : BigDecimal - { - return $this->isNegative() ? $this->negated() : $this; - } - - /** - * Returns the negated value of this number. - */ - public function negated() : BigDecimal - { - return new BigDecimal(Calculator::get()->neg($this->value), $this->scale); - } - - public function compareTo(BigNumber|int|float|string $that) : int - { - $that = BigNumber::of($that); - - if ($that instanceof BigInteger) { - $that = $that->toBigDecimal(); - } - - if ($that instanceof BigDecimal) { - [$a, $b] = $this->scaleValues($this, $that); - - return Calculator::get()->cmp($a, $b); - } - - return - $that->compareTo($this); - } - - public function getSign() : int - { - return ($this->value === '0') ? 0 : (($this->value[0] === '-') ? -1 : 1); - } - - public function getUnscaledValue() : BigInteger - { - return self::newBigInteger($this->value); - } - - public function getScale() : int - { - return $this->scale; - } - - /** - * Returns a string representing the integral part of this decimal number. - * - * Example: `-123.456` => `-123`. - */ - public function getIntegralPart() : string - { - if ($this->scale === 0) { - return $this->value; - } - - $value = $this->getUnscaledValueWithLeadingZeros(); - - return \substr($value, 0, -$this->scale); - } - - /** - * Returns a string representing the fractional part of this decimal number. - * - * If the scale is zero, an empty string is returned. - * - * Examples: `-123.456` => '456', `123` => ''. - */ - public function getFractionalPart() : string - { - if ($this->scale === 0) { - return ''; - } - - $value = $this->getUnscaledValueWithLeadingZeros(); - - return \substr($value, -$this->scale); - } - - /** - * Returns whether this decimal number has a non-zero fractional part. - */ - public function hasNonZeroFractionalPart() : bool - { - return $this->getFractionalPart() !== \str_repeat('0', $this->scale); - } - - public function toBigInteger() : BigInteger - { - $zeroScaleDecimal = $this->scale === 0 ? $this : $this->dividedBy(1, 0); - - return self::newBigInteger($zeroScaleDecimal->value); - } - - public function toBigDecimal() : BigDecimal - { - return $this; - } - - public function toBigRational() : BigRational - { - $numerator = self::newBigInteger($this->value); - $denominator = self::newBigInteger('1' . \str_repeat('0', $this->scale)); - - return self::newBigRational($numerator, $denominator, false); - } - - public function toScale(int $scale, RoundingMode $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal - { - if ($scale === $this->scale) { - return $this; - } - - return $this->dividedBy(BigDecimal::one(), $scale, $roundingMode); - } - - public function toInt() : int - { - return $this->toBigInteger()->toInt(); - } - - public function toFloat() : float - { - return (float) (string) $this; - } - - public function __toString() : string - { - if ($this->scale === 0) { - return $this->value; - } - - $value = $this->getUnscaledValueWithLeadingZeros(); - - return \substr($value, 0, -$this->scale) . '.' . \substr($value, -$this->scale); - } - - /** - * This method is required for serializing the object and SHOULD NOT be accessed directly. - * - * @internal - * - * @return array{value: string, scale: int} - */ - public function __serialize(): array - { - return ['value' => $this->value, 'scale' => $this->scale]; - } - - /** - * This method is only here to allow unserializing the object and cannot be accessed directly. - * - * @internal - * @psalm-suppress RedundantPropertyInitializationCheck - * - * @param array{value: string, scale: int} $data - * - * @throws \LogicException - */ - public function __unserialize(array $data): void - { - if (isset($this->value)) { - throw new \LogicException('__unserialize() is an internal function, it must not be called directly.'); - } - - $this->value = $data['value']; - $this->scale = $data['scale']; - } - - /** - * Puts the internal values of the given decimal numbers on the same scale. - * - * @return array{string, string} The scaled integer values of $x and $y. - */ - private function scaleValues(BigDecimal $x, BigDecimal $y) : array - { - $a = $x->value; - $b = $y->value; - - if ($b !== '0' && $x->scale > $y->scale) { - $b .= \str_repeat('0', $x->scale - $y->scale); - } elseif ($a !== '0' && $x->scale < $y->scale) { - $a .= \str_repeat('0', $y->scale - $x->scale); - } - - return [$a, $b]; - } - - private function valueWithMinScale(int $scale) : string - { - $value = $this->value; - - if ($this->value !== '0' && $scale > $this->scale) { - $value .= \str_repeat('0', $scale - $this->scale); - } - - return $value; - } - - /** - * Adds leading zeros if necessary to the unscaled value to represent the full decimal number. - */ - private function getUnscaledValueWithLeadingZeros() : string - { - $value = $this->value; - $targetLength = $this->scale + 1; - $negative = ($value[0] === '-'); - $length = \strlen($value); - - if ($negative) { - $length--; - } - - if ($length >= $targetLength) { - return $this->value; - } - - if ($negative) { - $value = \substr($value, 1); - } - - $value = \str_pad($value, $targetLength, '0', STR_PAD_LEFT); - - if ($negative) { - $value = '-' . $value; - } - - return $value; - } -} diff --git a/docker/streamline-src/vendor/brick/math/src/BigInteger.php b/docker/streamline-src/vendor/brick/math/src/BigInteger.php deleted file mode 100644 index 73dcc89a..00000000 --- a/docker/streamline-src/vendor/brick/math/src/BigInteger.php +++ /dev/null @@ -1,1051 +0,0 @@ -value = $value; - } - - /** - * @psalm-pure - */ - protected static function from(BigNumber $number): static - { - return $number->toBigInteger(); - } - - /** - * Creates a number from a string in a given base. - * - * The string can optionally be prefixed with the `+` or `-` sign. - * - * Bases greater than 36 are not supported by this method, as there is no clear consensus on which of the lowercase - * or uppercase characters should come first. Instead, this method accepts any base up to 36, and does not - * differentiate lowercase and uppercase characters, which are considered equal. - * - * For bases greater than 36, and/or custom alphabets, use the fromArbitraryBase() method. - * - * @param string $number The number to convert, in the given base. - * @param int $base The base of the number, between 2 and 36. - * - * @throws NumberFormatException If the number is empty, or contains invalid chars for the given base. - * @throws \InvalidArgumentException If the base is out of range. - * - * @psalm-pure - */ - public static function fromBase(string $number, int $base) : BigInteger - { - if ($number === '') { - throw new NumberFormatException('The number cannot be empty.'); - } - - if ($base < 2 || $base > 36) { - throw new \InvalidArgumentException(\sprintf('Base %d is not in range 2 to 36.', $base)); - } - - if ($number[0] === '-') { - $sign = '-'; - $number = \substr($number, 1); - } elseif ($number[0] === '+') { - $sign = ''; - $number = \substr($number, 1); - } else { - $sign = ''; - } - - if ($number === '') { - throw new NumberFormatException('The number cannot be empty.'); - } - - $number = \ltrim($number, '0'); - - if ($number === '') { - // The result will be the same in any base, avoid further calculation. - return BigInteger::zero(); - } - - if ($number === '1') { - // The result will be the same in any base, avoid further calculation. - return new BigInteger($sign . '1'); - } - - $pattern = '/[^' . \substr(Calculator::ALPHABET, 0, $base) . ']/'; - - if (\preg_match($pattern, \strtolower($number), $matches) === 1) { - throw new NumberFormatException(\sprintf('"%s" is not a valid character in base %d.', $matches[0], $base)); - } - - if ($base === 10) { - // The number is usable as is, avoid further calculation. - return new BigInteger($sign . $number); - } - - $result = Calculator::get()->fromBase($number, $base); - - return new BigInteger($sign . $result); - } - - /** - * Parses a string containing an integer in an arbitrary base, using a custom alphabet. - * - * Because this method accepts an alphabet with any character, including dash, it does not handle negative numbers. - * - * @param string $number The number to parse. - * @param string $alphabet The alphabet, for example '01' for base 2, or '01234567' for base 8. - * - * @throws NumberFormatException If the given number is empty or contains invalid chars for the given alphabet. - * @throws \InvalidArgumentException If the alphabet does not contain at least 2 chars. - * - * @psalm-pure - */ - public static function fromArbitraryBase(string $number, string $alphabet) : BigInteger - { - if ($number === '') { - throw new NumberFormatException('The number cannot be empty.'); - } - - $base = \strlen($alphabet); - - if ($base < 2) { - throw new \InvalidArgumentException('The alphabet must contain at least 2 chars.'); - } - - $pattern = '/[^' . \preg_quote($alphabet, '/') . ']/'; - - if (\preg_match($pattern, $number, $matches) === 1) { - throw NumberFormatException::charNotInAlphabet($matches[0]); - } - - $number = Calculator::get()->fromArbitraryBase($number, $alphabet, $base); - - return new BigInteger($number); - } - - /** - * Translates a string of bytes containing the binary representation of a BigInteger into a BigInteger. - * - * The input string is assumed to be in big-endian byte-order: the most significant byte is in the zeroth element. - * - * If `$signed` is true, the input is assumed to be in two's-complement representation, and the leading bit is - * interpreted as a sign bit. If `$signed` is false, the input is interpreted as an unsigned number, and the - * resulting BigInteger will always be positive or zero. - * - * This method can be used to retrieve a number exported by `toBytes()`, as long as the `$signed` flags match. - * - * @param string $value The byte string. - * @param bool $signed Whether to interpret as a signed number in two's-complement representation with a leading - * sign bit. - * - * @throws NumberFormatException If the string is empty. - */ - public static function fromBytes(string $value, bool $signed = true) : BigInteger - { - if ($value === '') { - throw new NumberFormatException('The byte string must not be empty.'); - } - - $twosComplement = false; - - if ($signed) { - $x = \ord($value[0]); - - if (($twosComplement = ($x >= 0x80))) { - $value = ~$value; - } - } - - $number = self::fromBase(\bin2hex($value), 16); - - if ($twosComplement) { - return $number->plus(1)->negated(); - } - - return $number; - } - - /** - * Generates a pseudo-random number in the range 0 to 2^numBits - 1. - * - * Using the default random bytes generator, this method is suitable for cryptographic use. - * - * @psalm-param (callable(int): string)|null $randomBytesGenerator - * - * @param int $numBits The number of bits. - * @param callable|null $randomBytesGenerator A function that accepts a number of bytes as an integer, and returns a - * string of random bytes of the given length. Defaults to the - * `random_bytes()` function. - * - * @throws \InvalidArgumentException If $numBits is negative. - */ - public static function randomBits(int $numBits, ?callable $randomBytesGenerator = null) : BigInteger - { - if ($numBits < 0) { - throw new \InvalidArgumentException('The number of bits cannot be negative.'); - } - - if ($numBits === 0) { - return BigInteger::zero(); - } - - if ($randomBytesGenerator === null) { - $randomBytesGenerator = random_bytes(...); - } - - /** @var int<1, max> $byteLength */ - $byteLength = \intdiv($numBits - 1, 8) + 1; - - $extraBits = ($byteLength * 8 - $numBits); - $bitmask = \chr(0xFF >> $extraBits); - - $randomBytes = $randomBytesGenerator($byteLength); - $randomBytes[0] = $randomBytes[0] & $bitmask; - - return self::fromBytes($randomBytes, false); - } - - /** - * Generates a pseudo-random number between `$min` and `$max`. - * - * Using the default random bytes generator, this method is suitable for cryptographic use. - * - * @psalm-param (callable(int): string)|null $randomBytesGenerator - * - * @param BigNumber|int|float|string $min The lower bound. Must be convertible to a BigInteger. - * @param BigNumber|int|float|string $max The upper bound. Must be convertible to a BigInteger. - * @param callable|null $randomBytesGenerator A function that accepts a number of bytes as an integer, - * and returns a string of random bytes of the given length. - * Defaults to the `random_bytes()` function. - * - * @throws MathException If one of the parameters cannot be converted to a BigInteger, - * or `$min` is greater than `$max`. - */ - public static function randomRange( - BigNumber|int|float|string $min, - BigNumber|int|float|string $max, - ?callable $randomBytesGenerator = null - ) : BigInteger { - $min = BigInteger::of($min); - $max = BigInteger::of($max); - - if ($min->isGreaterThan($max)) { - throw new MathException('$min cannot be greater than $max.'); - } - - if ($min->isEqualTo($max)) { - return $min; - } - - $diff = $max->minus($min); - $bitLength = $diff->getBitLength(); - - // try until the number is in range (50% to 100% chance of success) - do { - $randomNumber = self::randomBits($bitLength, $randomBytesGenerator); - } while ($randomNumber->isGreaterThan($diff)); - - return $randomNumber->plus($min); - } - - /** - * Returns a BigInteger representing zero. - * - * @psalm-pure - */ - public static function zero() : BigInteger - { - /** - * @psalm-suppress ImpureStaticVariable - * @var BigInteger|null $zero - */ - static $zero; - - if ($zero === null) { - $zero = new BigInteger('0'); - } - - return $zero; - } - - /** - * Returns a BigInteger representing one. - * - * @psalm-pure - */ - public static function one() : BigInteger - { - /** - * @psalm-suppress ImpureStaticVariable - * @var BigInteger|null $one - */ - static $one; - - if ($one === null) { - $one = new BigInteger('1'); - } - - return $one; - } - - /** - * Returns a BigInteger representing ten. - * - * @psalm-pure - */ - public static function ten() : BigInteger - { - /** - * @psalm-suppress ImpureStaticVariable - * @var BigInteger|null $ten - */ - static $ten; - - if ($ten === null) { - $ten = new BigInteger('10'); - } - - return $ten; - } - - public static function gcdMultiple(BigInteger $a, BigInteger ...$n): BigInteger - { - $result = $a; - - foreach ($n as $next) { - $result = $result->gcd($next); - - if ($result->isEqualTo(1)) { - return $result; - } - } - - return $result; - } - - /** - * Returns the sum of this number and the given one. - * - * @param BigNumber|int|float|string $that The number to add. Must be convertible to a BigInteger. - * - * @throws MathException If the number is not valid, or is not convertible to a BigInteger. - */ - public function plus(BigNumber|int|float|string $that) : BigInteger - { - $that = BigInteger::of($that); - - if ($that->value === '0') { - return $this; - } - - if ($this->value === '0') { - return $that; - } - - $value = Calculator::get()->add($this->value, $that->value); - - return new BigInteger($value); - } - - /** - * Returns the difference of this number and the given one. - * - * @param BigNumber|int|float|string $that The number to subtract. Must be convertible to a BigInteger. - * - * @throws MathException If the number is not valid, or is not convertible to a BigInteger. - */ - public function minus(BigNumber|int|float|string $that) : BigInteger - { - $that = BigInteger::of($that); - - if ($that->value === '0') { - return $this; - } - - $value = Calculator::get()->sub($this->value, $that->value); - - return new BigInteger($value); - } - - /** - * Returns the product of this number and the given one. - * - * @param BigNumber|int|float|string $that The multiplier. Must be convertible to a BigInteger. - * - * @throws MathException If the multiplier is not a valid number, or is not convertible to a BigInteger. - */ - public function multipliedBy(BigNumber|int|float|string $that) : BigInteger - { - $that = BigInteger::of($that); - - if ($that->value === '1') { - return $this; - } - - if ($this->value === '1') { - return $that; - } - - $value = Calculator::get()->mul($this->value, $that->value); - - return new BigInteger($value); - } - - /** - * Returns the result of the division of this number by the given one. - * - * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger. - * @param RoundingMode $roundingMode An optional rounding mode, defaults to UNNECESSARY. - * - * @throws MathException If the divisor is not a valid number, is not convertible to a BigInteger, is zero, - * or RoundingMode::UNNECESSARY is used and the remainder is not zero. - */ - public function dividedBy(BigNumber|int|float|string $that, RoundingMode $roundingMode = RoundingMode::UNNECESSARY) : BigInteger - { - $that = BigInteger::of($that); - - if ($that->value === '1') { - return $this; - } - - if ($that->value === '0') { - throw DivisionByZeroException::divisionByZero(); - } - - $result = Calculator::get()->divRound($this->value, $that->value, $roundingMode); - - return new BigInteger($result); - } - - /** - * Returns this number exponentiated to the given value. - * - * @throws \InvalidArgumentException If the exponent is not in the range 0 to 1,000,000. - */ - public function power(int $exponent) : BigInteger - { - if ($exponent === 0) { - return BigInteger::one(); - } - - if ($exponent === 1) { - return $this; - } - - if ($exponent < 0 || $exponent > Calculator::MAX_POWER) { - throw new \InvalidArgumentException(\sprintf( - 'The exponent %d is not in the range 0 to %d.', - $exponent, - Calculator::MAX_POWER - )); - } - - return new BigInteger(Calculator::get()->pow($this->value, $exponent)); - } - - /** - * Returns the quotient of the division of this number by the given one. - * - * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger. - * - * @throws DivisionByZeroException If the divisor is zero. - */ - public function quotient(BigNumber|int|float|string $that) : BigInteger - { - $that = BigInteger::of($that); - - if ($that->value === '1') { - return $this; - } - - if ($that->value === '0') { - throw DivisionByZeroException::divisionByZero(); - } - - $quotient = Calculator::get()->divQ($this->value, $that->value); - - return new BigInteger($quotient); - } - - /** - * Returns the remainder of the division of this number by the given one. - * - * The remainder, when non-zero, has the same sign as the dividend. - * - * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger. - * - * @throws DivisionByZeroException If the divisor is zero. - */ - public function remainder(BigNumber|int|float|string $that) : BigInteger - { - $that = BigInteger::of($that); - - if ($that->value === '1') { - return BigInteger::zero(); - } - - if ($that->value === '0') { - throw DivisionByZeroException::divisionByZero(); - } - - $remainder = Calculator::get()->divR($this->value, $that->value); - - return new BigInteger($remainder); - } - - /** - * Returns the quotient and remainder of the division of this number by the given one. - * - * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger. - * - * @return BigInteger[] An array containing the quotient and the remainder. - * - * @psalm-return array{BigInteger, BigInteger} - * - * @throws DivisionByZeroException If the divisor is zero. - */ - public function quotientAndRemainder(BigNumber|int|float|string $that) : array - { - $that = BigInteger::of($that); - - if ($that->value === '0') { - throw DivisionByZeroException::divisionByZero(); - } - - [$quotient, $remainder] = Calculator::get()->divQR($this->value, $that->value); - - return [ - new BigInteger($quotient), - new BigInteger($remainder) - ]; - } - - /** - * Returns the modulo of this number and the given one. - * - * The modulo operation yields the same result as the remainder operation when both operands are of the same sign, - * and may differ when signs are different. - * - * The result of the modulo operation, when non-zero, has the same sign as the divisor. - * - * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger. - * - * @throws DivisionByZeroException If the divisor is zero. - */ - public function mod(BigNumber|int|float|string $that) : BigInteger - { - $that = BigInteger::of($that); - - if ($that->value === '0') { - throw DivisionByZeroException::modulusMustNotBeZero(); - } - - $value = Calculator::get()->mod($this->value, $that->value); - - return new BigInteger($value); - } - - /** - * Returns the modular multiplicative inverse of this BigInteger modulo $m. - * - * @throws DivisionByZeroException If $m is zero. - * @throws NegativeNumberException If $m is negative. - * @throws MathException If this BigInteger has no multiplicative inverse mod m (that is, this BigInteger - * is not relatively prime to m). - */ - public function modInverse(BigInteger $m) : BigInteger - { - if ($m->value === '0') { - throw DivisionByZeroException::modulusMustNotBeZero(); - } - - if ($m->isNegative()) { - throw new NegativeNumberException('Modulus must not be negative.'); - } - - if ($m->value === '1') { - return BigInteger::zero(); - } - - $value = Calculator::get()->modInverse($this->value, $m->value); - - if ($value === null) { - throw new MathException('Unable to compute the modInverse for the given modulus.'); - } - - return new BigInteger($value); - } - - /** - * Returns this number raised into power with modulo. - * - * This operation only works on positive numbers. - * - * @param BigNumber|int|float|string $exp The exponent. Must be positive or zero. - * @param BigNumber|int|float|string $mod The modulus. Must be strictly positive. - * - * @throws NegativeNumberException If any of the operands is negative. - * @throws DivisionByZeroException If the modulus is zero. - */ - public function modPow(BigNumber|int|float|string $exp, BigNumber|int|float|string $mod) : BigInteger - { - $exp = BigInteger::of($exp); - $mod = BigInteger::of($mod); - - if ($this->isNegative() || $exp->isNegative() || $mod->isNegative()) { - throw new NegativeNumberException('The operands cannot be negative.'); - } - - if ($mod->isZero()) { - throw DivisionByZeroException::modulusMustNotBeZero(); - } - - $result = Calculator::get()->modPow($this->value, $exp->value, $mod->value); - - return new BigInteger($result); - } - - /** - * Returns the greatest common divisor of this number and the given one. - * - * The GCD is always positive, unless both operands are zero, in which case it is zero. - * - * @param BigNumber|int|float|string $that The operand. Must be convertible to an integer number. - */ - public function gcd(BigNumber|int|float|string $that) : BigInteger - { - $that = BigInteger::of($that); - - if ($that->value === '0' && $this->value[0] !== '-') { - return $this; - } - - if ($this->value === '0' && $that->value[0] !== '-') { - return $that; - } - - $value = Calculator::get()->gcd($this->value, $that->value); - - return new BigInteger($value); - } - - /** - * Returns the integer square root number of this number, rounded down. - * - * The result is the largest x such that x² ≤ n. - * - * @throws NegativeNumberException If this number is negative. - */ - public function sqrt() : BigInteger - { - if ($this->value[0] === '-') { - throw new NegativeNumberException('Cannot calculate the square root of a negative number.'); - } - - $value = Calculator::get()->sqrt($this->value); - - return new BigInteger($value); - } - - /** - * Returns the absolute value of this number. - */ - public function abs() : BigInteger - { - return $this->isNegative() ? $this->negated() : $this; - } - - /** - * Returns the inverse of this number. - */ - public function negated() : BigInteger - { - return new BigInteger(Calculator::get()->neg($this->value)); - } - - /** - * Returns the integer bitwise-and combined with another integer. - * - * This method returns a negative BigInteger if and only if both operands are negative. - * - * @param BigNumber|int|float|string $that The operand. Must be convertible to an integer number. - */ - public function and(BigNumber|int|float|string $that) : BigInteger - { - $that = BigInteger::of($that); - - return new BigInteger(Calculator::get()->and($this->value, $that->value)); - } - - /** - * Returns the integer bitwise-or combined with another integer. - * - * This method returns a negative BigInteger if and only if either of the operands is negative. - * - * @param BigNumber|int|float|string $that The operand. Must be convertible to an integer number. - */ - public function or(BigNumber|int|float|string $that) : BigInteger - { - $that = BigInteger::of($that); - - return new BigInteger(Calculator::get()->or($this->value, $that->value)); - } - - /** - * Returns the integer bitwise-xor combined with another integer. - * - * This method returns a negative BigInteger if and only if exactly one of the operands is negative. - * - * @param BigNumber|int|float|string $that The operand. Must be convertible to an integer number. - */ - public function xor(BigNumber|int|float|string $that) : BigInteger - { - $that = BigInteger::of($that); - - return new BigInteger(Calculator::get()->xor($this->value, $that->value)); - } - - /** - * Returns the bitwise-not of this BigInteger. - */ - public function not() : BigInteger - { - return $this->negated()->minus(1); - } - - /** - * Returns the integer left shifted by a given number of bits. - */ - public function shiftedLeft(int $distance) : BigInteger - { - if ($distance === 0) { - return $this; - } - - if ($distance < 0) { - return $this->shiftedRight(- $distance); - } - - return $this->multipliedBy(BigInteger::of(2)->power($distance)); - } - - /** - * Returns the integer right shifted by a given number of bits. - */ - public function shiftedRight(int $distance) : BigInteger - { - if ($distance === 0) { - return $this; - } - - if ($distance < 0) { - return $this->shiftedLeft(- $distance); - } - - $operand = BigInteger::of(2)->power($distance); - - if ($this->isPositiveOrZero()) { - return $this->quotient($operand); - } - - return $this->dividedBy($operand, RoundingMode::UP); - } - - /** - * Returns the number of bits in the minimal two's-complement representation of this BigInteger, excluding a sign bit. - * - * For positive BigIntegers, this is equivalent to the number of bits in the ordinary binary representation. - * Computes (ceil(log2(this < 0 ? -this : this+1))). - */ - public function getBitLength() : int - { - if ($this->value === '0') { - return 0; - } - - if ($this->isNegative()) { - return $this->abs()->minus(1)->getBitLength(); - } - - return \strlen($this->toBase(2)); - } - - /** - * Returns the index of the rightmost (lowest-order) one bit in this BigInteger. - * - * Returns -1 if this BigInteger contains no one bits. - */ - public function getLowestSetBit() : int - { - $n = $this; - $bitLength = $this->getBitLength(); - - for ($i = 0; $i <= $bitLength; $i++) { - if ($n->isOdd()) { - return $i; - } - - $n = $n->shiftedRight(1); - } - - return -1; - } - - /** - * Returns whether this number is even. - */ - public function isEven() : bool - { - return \in_array($this->value[-1], ['0', '2', '4', '6', '8'], true); - } - - /** - * Returns whether this number is odd. - */ - public function isOdd() : bool - { - return \in_array($this->value[-1], ['1', '3', '5', '7', '9'], true); - } - - /** - * Returns true if and only if the designated bit is set. - * - * Computes ((this & (1<shiftedRight($n)->isOdd(); - } - - public function compareTo(BigNumber|int|float|string $that) : int - { - $that = BigNumber::of($that); - - if ($that instanceof BigInteger) { - return Calculator::get()->cmp($this->value, $that->value); - } - - return - $that->compareTo($this); - } - - public function getSign() : int - { - return ($this->value === '0') ? 0 : (($this->value[0] === '-') ? -1 : 1); - } - - public function toBigInteger() : BigInteger - { - return $this; - } - - public function toBigDecimal() : BigDecimal - { - return self::newBigDecimal($this->value); - } - - public function toBigRational() : BigRational - { - return self::newBigRational($this, BigInteger::one(), false); - } - - public function toScale(int $scale, RoundingMode $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal - { - return $this->toBigDecimal()->toScale($scale, $roundingMode); - } - - public function toInt() : int - { - $intValue = (int) $this->value; - - if ($this->value !== (string) $intValue) { - throw IntegerOverflowException::toIntOverflow($this); - } - - return $intValue; - } - - public function toFloat() : float - { - return (float) $this->value; - } - - /** - * Returns a string representation of this number in the given base. - * - * The output will always be lowercase for bases greater than 10. - * - * @throws \InvalidArgumentException If the base is out of range. - */ - public function toBase(int $base) : string - { - if ($base === 10) { - return $this->value; - } - - if ($base < 2 || $base > 36) { - throw new \InvalidArgumentException(\sprintf('Base %d is out of range [2, 36]', $base)); - } - - return Calculator::get()->toBase($this->value, $base); - } - - /** - * Returns a string representation of this number in an arbitrary base with a custom alphabet. - * - * Because this method accepts an alphabet with any character, including dash, it does not handle negative numbers; - * a NegativeNumberException will be thrown when attempting to call this method on a negative number. - * - * @param string $alphabet The alphabet, for example '01' for base 2, or '01234567' for base 8. - * - * @throws NegativeNumberException If this number is negative. - * @throws \InvalidArgumentException If the given alphabet does not contain at least 2 chars. - */ - public function toArbitraryBase(string $alphabet) : string - { - $base = \strlen($alphabet); - - if ($base < 2) { - throw new \InvalidArgumentException('The alphabet must contain at least 2 chars.'); - } - - if ($this->value[0] === '-') { - throw new NegativeNumberException(__FUNCTION__ . '() does not support negative numbers.'); - } - - return Calculator::get()->toArbitraryBase($this->value, $alphabet, $base); - } - - /** - * Returns a string of bytes containing the binary representation of this BigInteger. - * - * The string is in big-endian byte-order: the most significant byte is in the zeroth element. - * - * If `$signed` is true, the output will be in two's-complement representation, and a sign bit will be prepended to - * the output. If `$signed` is false, no sign bit will be prepended, and this method will throw an exception if the - * number is negative. - * - * The string will contain the minimum number of bytes required to represent this BigInteger, including a sign bit - * if `$signed` is true. - * - * This representation is compatible with the `fromBytes()` factory method, as long as the `$signed` flags match. - * - * @param bool $signed Whether to output a signed number in two's-complement representation with a leading sign bit. - * - * @throws NegativeNumberException If $signed is false, and the number is negative. - */ - public function toBytes(bool $signed = true) : string - { - if (! $signed && $this->isNegative()) { - throw new NegativeNumberException('Cannot convert a negative number to a byte string when $signed is false.'); - } - - $hex = $this->abs()->toBase(16); - - if (\strlen($hex) % 2 !== 0) { - $hex = '0' . $hex; - } - - $baseHexLength = \strlen($hex); - - if ($signed) { - if ($this->isNegative()) { - $bin = \hex2bin($hex); - assert($bin !== false); - - $hex = \bin2hex(~$bin); - $hex = self::fromBase($hex, 16)->plus(1)->toBase(16); - - $hexLength = \strlen($hex); - - if ($hexLength < $baseHexLength) { - $hex = \str_repeat('0', $baseHexLength - $hexLength) . $hex; - } - - if ($hex[0] < '8') { - $hex = 'FF' . $hex; - } - } else { - if ($hex[0] >= '8') { - $hex = '00' . $hex; - } - } - } - - return \hex2bin($hex); - } - - public function __toString() : string - { - return $this->value; - } - - /** - * This method is required for serializing the object and SHOULD NOT be accessed directly. - * - * @internal - * - * @return array{value: string} - */ - public function __serialize(): array - { - return ['value' => $this->value]; - } - - /** - * This method is only here to allow unserializing the object and cannot be accessed directly. - * - * @internal - * @psalm-suppress RedundantPropertyInitializationCheck - * - * @param array{value: string} $data - * - * @throws \LogicException - */ - public function __unserialize(array $data): void - { - if (isset($this->value)) { - throw new \LogicException('__unserialize() is an internal function, it must not be called directly.'); - } - - $this->value = $data['value']; - } -} diff --git a/docker/streamline-src/vendor/brick/math/src/BigNumber.php b/docker/streamline-src/vendor/brick/math/src/BigNumber.php deleted file mode 100644 index 5a0df783..00000000 --- a/docker/streamline-src/vendor/brick/math/src/BigNumber.php +++ /dev/null @@ -1,509 +0,0 @@ -[\-\+])?' . - '(?[0-9]+)?' . - '(?\.)?' . - '(?[0-9]+)?' . - '(?:[eE](?[\-\+]?[0-9]+))?' . - '$/'; - - /** - * The regular expression used to parse rational numbers. - */ - private const PARSE_REGEXP_RATIONAL = - '/^' . - '(?[\-\+])?' . - '(?[0-9]+)' . - '\/?' . - '(?[0-9]+)' . - '$/'; - - /** - * Creates a BigNumber of the given value. - * - * The concrete return type is dependent on the given value, with the following rules: - * - * - BigNumber instances are returned as is - * - integer numbers are returned as BigInteger - * - floating point numbers are converted to a string then parsed as such - * - strings containing a `/` character are returned as BigRational - * - strings containing a `.` character or using an exponential notation are returned as BigDecimal - * - strings containing only digits with an optional leading `+` or `-` sign are returned as BigInteger - * - * @throws NumberFormatException If the format of the number is not valid. - * @throws DivisionByZeroException If the value represents a rational number with a denominator of zero. - * - * @psalm-pure - */ - final public static function of(BigNumber|int|float|string $value) : static - { - $value = self::_of($value); - - if (static::class === BigNumber::class) { - // https://github.com/vimeo/psalm/issues/10309 - assert($value instanceof static); - - return $value; - } - - return static::from($value); - } - - /** - * @psalm-pure - */ - private static function _of(BigNumber|int|float|string $value) : BigNumber - { - if ($value instanceof BigNumber) { - return $value; - } - - if (\is_int($value)) { - return new BigInteger((string) $value); - } - - if (is_float($value)) { - $value = (string) $value; - } - - if (str_contains($value, '/')) { - // Rational number - if (\preg_match(self::PARSE_REGEXP_RATIONAL, $value, $matches, PREG_UNMATCHED_AS_NULL) !== 1) { - throw NumberFormatException::invalidFormat($value); - } - - $sign = $matches['sign']; - $numerator = $matches['numerator']; - $denominator = $matches['denominator']; - - assert($numerator !== null); - assert($denominator !== null); - - $numerator = self::cleanUp($sign, $numerator); - $denominator = self::cleanUp(null, $denominator); - - if ($denominator === '0') { - throw DivisionByZeroException::denominatorMustNotBeZero(); - } - - return new BigRational( - new BigInteger($numerator), - new BigInteger($denominator), - false - ); - } else { - // Integer or decimal number - if (\preg_match(self::PARSE_REGEXP_NUMERICAL, $value, $matches, PREG_UNMATCHED_AS_NULL) !== 1) { - throw NumberFormatException::invalidFormat($value); - } - - $sign = $matches['sign']; - $point = $matches['point']; - $integral = $matches['integral']; - $fractional = $matches['fractional']; - $exponent = $matches['exponent']; - - if ($integral === null && $fractional === null) { - throw NumberFormatException::invalidFormat($value); - } - - if ($integral === null) { - $integral = '0'; - } - - if ($point !== null || $exponent !== null) { - $fractional = ($fractional ?? ''); - $exponent = ($exponent !== null) ? (int)$exponent : 0; - - if ($exponent === PHP_INT_MIN || $exponent === PHP_INT_MAX) { - throw new NumberFormatException('Exponent too large.'); - } - - $unscaledValue = self::cleanUp($sign, $integral . $fractional); - - $scale = \strlen($fractional) - $exponent; - - if ($scale < 0) { - if ($unscaledValue !== '0') { - $unscaledValue .= \str_repeat('0', -$scale); - } - $scale = 0; - } - - return new BigDecimal($unscaledValue, $scale); - } - - $integral = self::cleanUp($sign, $integral); - - return new BigInteger($integral); - } - } - - /** - * Overridden by subclasses to convert a BigNumber to an instance of the subclass. - * - * @throws MathException If the value cannot be converted. - * - * @psalm-pure - */ - abstract protected static function from(BigNumber $number): static; - - /** - * Proxy method to access BigInteger's protected constructor from sibling classes. - * - * @internal - * @psalm-pure - */ - final protected function newBigInteger(string $value) : BigInteger - { - return new BigInteger($value); - } - - /** - * Proxy method to access BigDecimal's protected constructor from sibling classes. - * - * @internal - * @psalm-pure - */ - final protected function newBigDecimal(string $value, int $scale = 0) : BigDecimal - { - return new BigDecimal($value, $scale); - } - - /** - * Proxy method to access BigRational's protected constructor from sibling classes. - * - * @internal - * @psalm-pure - */ - final protected function newBigRational(BigInteger $numerator, BigInteger $denominator, bool $checkDenominator) : BigRational - { - return new BigRational($numerator, $denominator, $checkDenominator); - } - - /** - * Returns the minimum of the given values. - * - * @param BigNumber|int|float|string ...$values The numbers to compare. All the numbers need to be convertible - * to an instance of the class this method is called on. - * - * @throws \InvalidArgumentException If no values are given. - * @throws MathException If an argument is not valid. - * - * @psalm-pure - */ - final public static function min(BigNumber|int|float|string ...$values) : static - { - $min = null; - - foreach ($values as $value) { - $value = static::of($value); - - if ($min === null || $value->isLessThan($min)) { - $min = $value; - } - } - - if ($min === null) { - throw new \InvalidArgumentException(__METHOD__ . '() expects at least one value.'); - } - - return $min; - } - - /** - * Returns the maximum of the given values. - * - * @param BigNumber|int|float|string ...$values The numbers to compare. All the numbers need to be convertible - * to an instance of the class this method is called on. - * - * @throws \InvalidArgumentException If no values are given. - * @throws MathException If an argument is not valid. - * - * @psalm-pure - */ - final public static function max(BigNumber|int|float|string ...$values) : static - { - $max = null; - - foreach ($values as $value) { - $value = static::of($value); - - if ($max === null || $value->isGreaterThan($max)) { - $max = $value; - } - } - - if ($max === null) { - throw new \InvalidArgumentException(__METHOD__ . '() expects at least one value.'); - } - - return $max; - } - - /** - * Returns the sum of the given values. - * - * @param BigNumber|int|float|string ...$values The numbers to add. All the numbers need to be convertible - * to an instance of the class this method is called on. - * - * @throws \InvalidArgumentException If no values are given. - * @throws MathException If an argument is not valid. - * - * @psalm-pure - */ - final public static function sum(BigNumber|int|float|string ...$values) : static - { - /** @var static|null $sum */ - $sum = null; - - foreach ($values as $value) { - $value = static::of($value); - - $sum = $sum === null ? $value : self::add($sum, $value); - } - - if ($sum === null) { - throw new \InvalidArgumentException(__METHOD__ . '() expects at least one value.'); - } - - return $sum; - } - - /** - * Adds two BigNumber instances in the correct order to avoid a RoundingNecessaryException. - * - * @todo This could be better resolved by creating an abstract protected method in BigNumber, and leaving to - * concrete classes the responsibility to perform the addition themselves or delegate it to the given number, - * depending on their ability to perform the operation. This will also require a version bump because we're - * potentially breaking custom BigNumber implementations (if any...) - * - * @psalm-pure - */ - private static function add(BigNumber $a, BigNumber $b) : BigNumber - { - if ($a instanceof BigRational) { - return $a->plus($b); - } - - if ($b instanceof BigRational) { - return $b->plus($a); - } - - if ($a instanceof BigDecimal) { - return $a->plus($b); - } - - if ($b instanceof BigDecimal) { - return $b->plus($a); - } - - /** @var BigInteger $a */ - - return $a->plus($b); - } - - /** - * Removes optional leading zeros and applies sign. - * - * @param string|null $sign The sign, '+' or '-', optional. Null is allowed for convenience and treated as '+'. - * @param string $number The number, validated as a non-empty string of digits. - * - * @psalm-pure - */ - private static function cleanUp(string|null $sign, string $number) : string - { - $number = \ltrim($number, '0'); - - if ($number === '') { - return '0'; - } - - return $sign === '-' ? '-' . $number : $number; - } - - /** - * Checks if this number is equal to the given one. - */ - final public function isEqualTo(BigNumber|int|float|string $that) : bool - { - return $this->compareTo($that) === 0; - } - - /** - * Checks if this number is strictly lower than the given one. - */ - final public function isLessThan(BigNumber|int|float|string $that) : bool - { - return $this->compareTo($that) < 0; - } - - /** - * Checks if this number is lower than or equal to the given one. - */ - final public function isLessThanOrEqualTo(BigNumber|int|float|string $that) : bool - { - return $this->compareTo($that) <= 0; - } - - /** - * Checks if this number is strictly greater than the given one. - */ - final public function isGreaterThan(BigNumber|int|float|string $that) : bool - { - return $this->compareTo($that) > 0; - } - - /** - * Checks if this number is greater than or equal to the given one. - */ - final public function isGreaterThanOrEqualTo(BigNumber|int|float|string $that) : bool - { - return $this->compareTo($that) >= 0; - } - - /** - * Checks if this number equals zero. - */ - final public function isZero() : bool - { - return $this->getSign() === 0; - } - - /** - * Checks if this number is strictly negative. - */ - final public function isNegative() : bool - { - return $this->getSign() < 0; - } - - /** - * Checks if this number is negative or zero. - */ - final public function isNegativeOrZero() : bool - { - return $this->getSign() <= 0; - } - - /** - * Checks if this number is strictly positive. - */ - final public function isPositive() : bool - { - return $this->getSign() > 0; - } - - /** - * Checks if this number is positive or zero. - */ - final public function isPositiveOrZero() : bool - { - return $this->getSign() >= 0; - } - - /** - * Returns the sign of this number. - * - * @psalm-return -1|0|1 - * - * @return int -1 if the number is negative, 0 if zero, 1 if positive. - */ - abstract public function getSign() : int; - - /** - * Compares this number to the given one. - * - * @psalm-return -1|0|1 - * - * @return int -1 if `$this` is lower than, 0 if equal to, 1 if greater than `$that`. - * - * @throws MathException If the number is not valid. - */ - abstract public function compareTo(BigNumber|int|float|string $that) : int; - - /** - * Converts this number to a BigInteger. - * - * @throws RoundingNecessaryException If this number cannot be converted to a BigInteger without rounding. - */ - abstract public function toBigInteger() : BigInteger; - - /** - * Converts this number to a BigDecimal. - * - * @throws RoundingNecessaryException If this number cannot be converted to a BigDecimal without rounding. - */ - abstract public function toBigDecimal() : BigDecimal; - - /** - * Converts this number to a BigRational. - */ - abstract public function toBigRational() : BigRational; - - /** - * Converts this number to a BigDecimal with the given scale, using rounding if necessary. - * - * @param int $scale The scale of the resulting `BigDecimal`. - * @param RoundingMode $roundingMode An optional rounding mode, defaults to UNNECESSARY. - * - * @throws RoundingNecessaryException If this number cannot be converted to the given scale without rounding. - * This only applies when RoundingMode::UNNECESSARY is used. - */ - abstract public function toScale(int $scale, RoundingMode $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal; - - /** - * Returns the exact value of this number as a native integer. - * - * If this number cannot be converted to a native integer without losing precision, an exception is thrown. - * Note that the acceptable range for an integer depends on the platform and differs for 32-bit and 64-bit. - * - * @throws MathException If this number cannot be exactly converted to a native integer. - */ - abstract public function toInt() : int; - - /** - * Returns an approximation of this number as a floating-point value. - * - * Note that this method can discard information as the precision of a floating-point value - * is inherently limited. - * - * If the number is greater than the largest representable floating point number, positive infinity is returned. - * If the number is less than the smallest representable floating point number, negative infinity is returned. - */ - abstract public function toFloat() : float; - - /** - * Returns a string representation of this number. - * - * The output of this method can be parsed by the `of()` factory method; - * this will yield an object equal to this one, without any information loss. - */ - abstract public function __toString() : string; - - final public function jsonSerialize() : string - { - return $this->__toString(); - } -} diff --git a/docker/streamline-src/vendor/brick/math/src/BigRational.php b/docker/streamline-src/vendor/brick/math/src/BigRational.php deleted file mode 100644 index fc3060ed..00000000 --- a/docker/streamline-src/vendor/brick/math/src/BigRational.php +++ /dev/null @@ -1,413 +0,0 @@ -isZero()) { - throw DivisionByZeroException::denominatorMustNotBeZero(); - } - - if ($denominator->isNegative()) { - $numerator = $numerator->negated(); - $denominator = $denominator->negated(); - } - } - - $this->numerator = $numerator; - $this->denominator = $denominator; - } - - /** - * @psalm-pure - */ - protected static function from(BigNumber $number): static - { - return $number->toBigRational(); - } - - /** - * Creates a BigRational out of a numerator and a denominator. - * - * If the denominator is negative, the signs of both the numerator and the denominator - * will be inverted to ensure that the denominator is always positive. - * - * @param BigNumber|int|float|string $numerator The numerator. Must be convertible to a BigInteger. - * @param BigNumber|int|float|string $denominator The denominator. Must be convertible to a BigInteger. - * - * @throws NumberFormatException If an argument does not represent a valid number. - * @throws RoundingNecessaryException If an argument represents a non-integer number. - * @throws DivisionByZeroException If the denominator is zero. - * - * @psalm-pure - */ - public static function nd( - BigNumber|int|float|string $numerator, - BigNumber|int|float|string $denominator, - ) : BigRational { - $numerator = BigInteger::of($numerator); - $denominator = BigInteger::of($denominator); - - return new BigRational($numerator, $denominator, true); - } - - /** - * Returns a BigRational representing zero. - * - * @psalm-pure - */ - public static function zero() : BigRational - { - /** - * @psalm-suppress ImpureStaticVariable - * @var BigRational|null $zero - */ - static $zero; - - if ($zero === null) { - $zero = new BigRational(BigInteger::zero(), BigInteger::one(), false); - } - - return $zero; - } - - /** - * Returns a BigRational representing one. - * - * @psalm-pure - */ - public static function one() : BigRational - { - /** - * @psalm-suppress ImpureStaticVariable - * @var BigRational|null $one - */ - static $one; - - if ($one === null) { - $one = new BigRational(BigInteger::one(), BigInteger::one(), false); - } - - return $one; - } - - /** - * Returns a BigRational representing ten. - * - * @psalm-pure - */ - public static function ten() : BigRational - { - /** - * @psalm-suppress ImpureStaticVariable - * @var BigRational|null $ten - */ - static $ten; - - if ($ten === null) { - $ten = new BigRational(BigInteger::ten(), BigInteger::one(), false); - } - - return $ten; - } - - public function getNumerator() : BigInteger - { - return $this->numerator; - } - - public function getDenominator() : BigInteger - { - return $this->denominator; - } - - /** - * Returns the quotient of the division of the numerator by the denominator. - */ - public function quotient() : BigInteger - { - return $this->numerator->quotient($this->denominator); - } - - /** - * Returns the remainder of the division of the numerator by the denominator. - */ - public function remainder() : BigInteger - { - return $this->numerator->remainder($this->denominator); - } - - /** - * Returns the quotient and remainder of the division of the numerator by the denominator. - * - * @return BigInteger[] - * - * @psalm-return array{BigInteger, BigInteger} - */ - public function quotientAndRemainder() : array - { - return $this->numerator->quotientAndRemainder($this->denominator); - } - - /** - * Returns the sum of this number and the given one. - * - * @param BigNumber|int|float|string $that The number to add. - * - * @throws MathException If the number is not valid. - */ - public function plus(BigNumber|int|float|string $that) : BigRational - { - $that = BigRational::of($that); - - $numerator = $this->numerator->multipliedBy($that->denominator); - $numerator = $numerator->plus($that->numerator->multipliedBy($this->denominator)); - $denominator = $this->denominator->multipliedBy($that->denominator); - - return new BigRational($numerator, $denominator, false); - } - - /** - * Returns the difference of this number and the given one. - * - * @param BigNumber|int|float|string $that The number to subtract. - * - * @throws MathException If the number is not valid. - */ - public function minus(BigNumber|int|float|string $that) : BigRational - { - $that = BigRational::of($that); - - $numerator = $this->numerator->multipliedBy($that->denominator); - $numerator = $numerator->minus($that->numerator->multipliedBy($this->denominator)); - $denominator = $this->denominator->multipliedBy($that->denominator); - - return new BigRational($numerator, $denominator, false); - } - - /** - * Returns the product of this number and the given one. - * - * @param BigNumber|int|float|string $that The multiplier. - * - * @throws MathException If the multiplier is not a valid number. - */ - public function multipliedBy(BigNumber|int|float|string $that) : BigRational - { - $that = BigRational::of($that); - - $numerator = $this->numerator->multipliedBy($that->numerator); - $denominator = $this->denominator->multipliedBy($that->denominator); - - return new BigRational($numerator, $denominator, false); - } - - /** - * Returns the result of the division of this number by the given one. - * - * @param BigNumber|int|float|string $that The divisor. - * - * @throws MathException If the divisor is not a valid number, or is zero. - */ - public function dividedBy(BigNumber|int|float|string $that) : BigRational - { - $that = BigRational::of($that); - - $numerator = $this->numerator->multipliedBy($that->denominator); - $denominator = $this->denominator->multipliedBy($that->numerator); - - return new BigRational($numerator, $denominator, true); - } - - /** - * Returns this number exponentiated to the given value. - * - * @throws \InvalidArgumentException If the exponent is not in the range 0 to 1,000,000. - */ - public function power(int $exponent) : BigRational - { - if ($exponent === 0) { - $one = BigInteger::one(); - - return new BigRational($one, $one, false); - } - - if ($exponent === 1) { - return $this; - } - - return new BigRational( - $this->numerator->power($exponent), - $this->denominator->power($exponent), - false - ); - } - - /** - * Returns the reciprocal of this BigRational. - * - * The reciprocal has the numerator and denominator swapped. - * - * @throws DivisionByZeroException If the numerator is zero. - */ - public function reciprocal() : BigRational - { - return new BigRational($this->denominator, $this->numerator, true); - } - - /** - * Returns the absolute value of this BigRational. - */ - public function abs() : BigRational - { - return new BigRational($this->numerator->abs(), $this->denominator, false); - } - - /** - * Returns the negated value of this BigRational. - */ - public function negated() : BigRational - { - return new BigRational($this->numerator->negated(), $this->denominator, false); - } - - /** - * Returns the simplified value of this BigRational. - */ - public function simplified() : BigRational - { - $gcd = $this->numerator->gcd($this->denominator); - - $numerator = $this->numerator->quotient($gcd); - $denominator = $this->denominator->quotient($gcd); - - return new BigRational($numerator, $denominator, false); - } - - public function compareTo(BigNumber|int|float|string $that) : int - { - return $this->minus($that)->getSign(); - } - - public function getSign() : int - { - return $this->numerator->getSign(); - } - - public function toBigInteger() : BigInteger - { - $simplified = $this->simplified(); - - if (! $simplified->denominator->isEqualTo(1)) { - throw new RoundingNecessaryException('This rational number cannot be represented as an integer value without rounding.'); - } - - return $simplified->numerator; - } - - public function toBigDecimal() : BigDecimal - { - return $this->numerator->toBigDecimal()->exactlyDividedBy($this->denominator); - } - - public function toBigRational() : BigRational - { - return $this; - } - - public function toScale(int $scale, RoundingMode $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal - { - return $this->numerator->toBigDecimal()->dividedBy($this->denominator, $scale, $roundingMode); - } - - public function toInt() : int - { - return $this->toBigInteger()->toInt(); - } - - public function toFloat() : float - { - $simplified = $this->simplified(); - return $simplified->numerator->toFloat() / $simplified->denominator->toFloat(); - } - - public function __toString() : string - { - $numerator = (string) $this->numerator; - $denominator = (string) $this->denominator; - - if ($denominator === '1') { - return $numerator; - } - - return $this->numerator . '/' . $this->denominator; - } - - /** - * This method is required for serializing the object and SHOULD NOT be accessed directly. - * - * @internal - * - * @return array{numerator: BigInteger, denominator: BigInteger} - */ - public function __serialize(): array - { - return ['numerator' => $this->numerator, 'denominator' => $this->denominator]; - } - - /** - * This method is only here to allow unserializing the object and cannot be accessed directly. - * - * @internal - * @psalm-suppress RedundantPropertyInitializationCheck - * - * @param array{numerator: BigInteger, denominator: BigInteger} $data - * - * @throws \LogicException - */ - public function __unserialize(array $data): void - { - if (isset($this->numerator)) { - throw new \LogicException('__unserialize() is an internal function, it must not be called directly.'); - } - - $this->numerator = $data['numerator']; - $this->denominator = $data['denominator']; - } -} diff --git a/docker/streamline-src/vendor/brick/math/src/Exception/NumberFormatException.php b/docker/streamline-src/vendor/brick/math/src/Exception/NumberFormatException.php deleted file mode 100644 index 119cadbb..00000000 --- a/docker/streamline-src/vendor/brick/math/src/Exception/NumberFormatException.php +++ /dev/null @@ -1,41 +0,0 @@ - 126) { - $char = \strtoupper(\dechex($ord)); - - if ($ord < 10) { - $char = '0' . $char; - } - } else { - $char = '"' . $char . '"'; - } - - return new self(\sprintf('Char %s is not a valid character in the given alphabet.', $char)); - } -} diff --git a/docker/streamline-src/vendor/brick/math/src/Internal/Calculator.php b/docker/streamline-src/vendor/brick/math/src/Internal/Calculator.php deleted file mode 100644 index 44dd6692..00000000 --- a/docker/streamline-src/vendor/brick/math/src/Internal/Calculator.php +++ /dev/null @@ -1,668 +0,0 @@ -init($a, $b); - - if ($aNeg && ! $bNeg) { - return -1; - } - - if ($bNeg && ! $aNeg) { - return 1; - } - - $aLen = \strlen($aDig); - $bLen = \strlen($bDig); - - if ($aLen < $bLen) { - $result = -1; - } elseif ($aLen > $bLen) { - $result = 1; - } else { - $result = $aDig <=> $bDig; - } - - return $aNeg ? -$result : $result; - } - - /** - * Adds two numbers. - */ - abstract public function add(string $a, string $b) : string; - - /** - * Subtracts two numbers. - */ - abstract public function sub(string $a, string $b) : string; - - /** - * Multiplies two numbers. - */ - abstract public function mul(string $a, string $b) : string; - - /** - * Returns the quotient of the division of two numbers. - * - * @param string $a The dividend. - * @param string $b The divisor, must not be zero. - * - * @return string The quotient. - */ - abstract public function divQ(string $a, string $b) : string; - - /** - * Returns the remainder of the division of two numbers. - * - * @param string $a The dividend. - * @param string $b The divisor, must not be zero. - * - * @return string The remainder. - */ - abstract public function divR(string $a, string $b) : string; - - /** - * Returns the quotient and remainder of the division of two numbers. - * - * @param string $a The dividend. - * @param string $b The divisor, must not be zero. - * - * @return array{string, string} An array containing the quotient and remainder. - */ - abstract public function divQR(string $a, string $b) : array; - - /** - * Exponentiates a number. - * - * @param string $a The base number. - * @param int $e The exponent, validated as an integer between 0 and MAX_POWER. - * - * @return string The power. - */ - abstract public function pow(string $a, int $e) : string; - - /** - * @param string $b The modulus; must not be zero. - */ - public function mod(string $a, string $b) : string - { - return $this->divR($this->add($this->divR($a, $b), $b), $b); - } - - /** - * Returns the modular multiplicative inverse of $x modulo $m. - * - * If $x has no multiplicative inverse mod m, this method must return null. - * - * This method can be overridden by the concrete implementation if the underlying library has built-in support. - * - * @param string $m The modulus; must not be negative or zero. - */ - public function modInverse(string $x, string $m) : ?string - { - if ($m === '1') { - return '0'; - } - - $modVal = $x; - - if ($x[0] === '-' || ($this->cmp($this->abs($x), $m) >= 0)) { - $modVal = $this->mod($x, $m); - } - - [$g, $x] = $this->gcdExtended($modVal, $m); - - if ($g !== '1') { - return null; - } - - return $this->mod($this->add($this->mod($x, $m), $m), $m); - } - - /** - * Raises a number into power with modulo. - * - * @param string $base The base number; must be positive or zero. - * @param string $exp The exponent; must be positive or zero. - * @param string $mod The modulus; must be strictly positive. - */ - abstract public function modPow(string $base, string $exp, string $mod) : string; - - /** - * Returns the greatest common divisor of the two numbers. - * - * This method can be overridden by the concrete implementation if the underlying library - * has built-in support for GCD calculations. - * - * @return string The GCD, always positive, or zero if both arguments are zero. - */ - public function gcd(string $a, string $b) : string - { - if ($a === '0') { - return $this->abs($b); - } - - if ($b === '0') { - return $this->abs($a); - } - - return $this->gcd($b, $this->divR($a, $b)); - } - - /** - * @return array{string, string, string} GCD, X, Y - */ - private function gcdExtended(string $a, string $b) : array - { - if ($a === '0') { - return [$b, '0', '1']; - } - - [$gcd, $x1, $y1] = $this->gcdExtended($this->mod($b, $a), $a); - - $x = $this->sub($y1, $this->mul($this->divQ($b, $a), $x1)); - $y = $x1; - - return [$gcd, $x, $y]; - } - - /** - * Returns the square root of the given number, rounded down. - * - * The result is the largest x such that x² ≤ n. - * The input MUST NOT be negative. - */ - abstract public function sqrt(string $n) : string; - - /** - * Converts a number from an arbitrary base. - * - * This method can be overridden by the concrete implementation if the underlying library - * has built-in support for base conversion. - * - * @param string $number The number, positive or zero, non-empty, case-insensitively validated for the given base. - * @param int $base The base of the number, validated from 2 to 36. - * - * @return string The converted number, following the Calculator conventions. - */ - public function fromBase(string $number, int $base) : string - { - return $this->fromArbitraryBase(\strtolower($number), self::ALPHABET, $base); - } - - /** - * Converts a number to an arbitrary base. - * - * This method can be overridden by the concrete implementation if the underlying library - * has built-in support for base conversion. - * - * @param string $number The number to convert, following the Calculator conventions. - * @param int $base The base to convert to, validated from 2 to 36. - * - * @return string The converted number, lowercase. - */ - public function toBase(string $number, int $base) : string - { - $negative = ($number[0] === '-'); - - if ($negative) { - $number = \substr($number, 1); - } - - $number = $this->toArbitraryBase($number, self::ALPHABET, $base); - - if ($negative) { - return '-' . $number; - } - - return $number; - } - - /** - * Converts a non-negative number in an arbitrary base using a custom alphabet, to base 10. - * - * @param string $number The number to convert, validated as a non-empty string, - * containing only chars in the given alphabet/base. - * @param string $alphabet The alphabet that contains every digit, validated as 2 chars minimum. - * @param int $base The base of the number, validated from 2 to alphabet length. - * - * @return string The number in base 10, following the Calculator conventions. - */ - final public function fromArbitraryBase(string $number, string $alphabet, int $base) : string - { - // remove leading "zeros" - $number = \ltrim($number, $alphabet[0]); - - if ($number === '') { - return '0'; - } - - // optimize for "one" - if ($number === $alphabet[1]) { - return '1'; - } - - $result = '0'; - $power = '1'; - - $base = (string) $base; - - for ($i = \strlen($number) - 1; $i >= 0; $i--) { - $index = \strpos($alphabet, $number[$i]); - - if ($index !== 0) { - $result = $this->add($result, ($index === 1) - ? $power - : $this->mul($power, (string) $index) - ); - } - - if ($i !== 0) { - $power = $this->mul($power, $base); - } - } - - return $result; - } - - /** - * Converts a non-negative number to an arbitrary base using a custom alphabet. - * - * @param string $number The number to convert, positive or zero, following the Calculator conventions. - * @param string $alphabet The alphabet that contains every digit, validated as 2 chars minimum. - * @param int $base The base to convert to, validated from 2 to alphabet length. - * - * @return string The converted number in the given alphabet. - */ - final public function toArbitraryBase(string $number, string $alphabet, int $base) : string - { - if ($number === '0') { - return $alphabet[0]; - } - - $base = (string) $base; - $result = ''; - - while ($number !== '0') { - [$number, $remainder] = $this->divQR($number, $base); - $remainder = (int) $remainder; - - $result .= $alphabet[$remainder]; - } - - return \strrev($result); - } - - /** - * Performs a rounded division. - * - * Rounding is performed when the remainder of the division is not zero. - * - * @param string $a The dividend. - * @param string $b The divisor, must not be zero. - * @param RoundingMode $roundingMode The rounding mode. - * - * @throws \InvalidArgumentException If the rounding mode is invalid. - * @throws RoundingNecessaryException If RoundingMode::UNNECESSARY is provided but rounding is necessary. - * - * @psalm-suppress ImpureFunctionCall - */ - final public function divRound(string $a, string $b, RoundingMode $roundingMode) : string - { - [$quotient, $remainder] = $this->divQR($a, $b); - - $hasDiscardedFraction = ($remainder !== '0'); - $isPositiveOrZero = ($a[0] === '-') === ($b[0] === '-'); - - $discardedFractionSign = function() use ($remainder, $b) : int { - $r = $this->abs($this->mul($remainder, '2')); - $b = $this->abs($b); - - return $this->cmp($r, $b); - }; - - $increment = false; - - switch ($roundingMode) { - case RoundingMode::UNNECESSARY: - if ($hasDiscardedFraction) { - throw RoundingNecessaryException::roundingNecessary(); - } - break; - - case RoundingMode::UP: - $increment = $hasDiscardedFraction; - break; - - case RoundingMode::DOWN: - break; - - case RoundingMode::CEILING: - $increment = $hasDiscardedFraction && $isPositiveOrZero; - break; - - case RoundingMode::FLOOR: - $increment = $hasDiscardedFraction && ! $isPositiveOrZero; - break; - - case RoundingMode::HALF_UP: - $increment = $discardedFractionSign() >= 0; - break; - - case RoundingMode::HALF_DOWN: - $increment = $discardedFractionSign() > 0; - break; - - case RoundingMode::HALF_CEILING: - $increment = $isPositiveOrZero ? $discardedFractionSign() >= 0 : $discardedFractionSign() > 0; - break; - - case RoundingMode::HALF_FLOOR: - $increment = $isPositiveOrZero ? $discardedFractionSign() > 0 : $discardedFractionSign() >= 0; - break; - - case RoundingMode::HALF_EVEN: - $lastDigit = (int) $quotient[-1]; - $lastDigitIsEven = ($lastDigit % 2 === 0); - $increment = $lastDigitIsEven ? $discardedFractionSign() > 0 : $discardedFractionSign() >= 0; - break; - - default: - throw new \InvalidArgumentException('Invalid rounding mode.'); - } - - if ($increment) { - return $this->add($quotient, $isPositiveOrZero ? '1' : '-1'); - } - - return $quotient; - } - - /** - * Calculates bitwise AND of two numbers. - * - * This method can be overridden by the concrete implementation if the underlying library - * has built-in support for bitwise operations. - */ - public function and(string $a, string $b) : string - { - return $this->bitwise('and', $a, $b); - } - - /** - * Calculates bitwise OR of two numbers. - * - * This method can be overridden by the concrete implementation if the underlying library - * has built-in support for bitwise operations. - */ - public function or(string $a, string $b) : string - { - return $this->bitwise('or', $a, $b); - } - - /** - * Calculates bitwise XOR of two numbers. - * - * This method can be overridden by the concrete implementation if the underlying library - * has built-in support for bitwise operations. - */ - public function xor(string $a, string $b) : string - { - return $this->bitwise('xor', $a, $b); - } - - /** - * Performs a bitwise operation on a decimal number. - * - * @param 'and'|'or'|'xor' $operator The operator to use. - * @param string $a The left operand. - * @param string $b The right operand. - */ - private function bitwise(string $operator, string $a, string $b) : string - { - [$aNeg, $bNeg, $aDig, $bDig] = $this->init($a, $b); - - $aBin = $this->toBinary($aDig); - $bBin = $this->toBinary($bDig); - - $aLen = \strlen($aBin); - $bLen = \strlen($bBin); - - if ($aLen > $bLen) { - $bBin = \str_repeat("\x00", $aLen - $bLen) . $bBin; - } elseif ($bLen > $aLen) { - $aBin = \str_repeat("\x00", $bLen - $aLen) . $aBin; - } - - if ($aNeg) { - $aBin = $this->twosComplement($aBin); - } - if ($bNeg) { - $bBin = $this->twosComplement($bBin); - } - - $value = match ($operator) { - 'and' => $aBin & $bBin, - 'or' => $aBin | $bBin, - 'xor' => $aBin ^ $bBin, - }; - - $negative = match ($operator) { - 'and' => $aNeg and $bNeg, - 'or' => $aNeg or $bNeg, - 'xor' => $aNeg xor $bNeg, - }; - - if ($negative) { - $value = $this->twosComplement($value); - } - - $result = $this->toDecimal($value); - - return $negative ? $this->neg($result) : $result; - } - - /** - * @param string $number A positive, binary number. - */ - private function twosComplement(string $number) : string - { - $xor = \str_repeat("\xff", \strlen($number)); - - $number ^= $xor; - - for ($i = \strlen($number) - 1; $i >= 0; $i--) { - $byte = \ord($number[$i]); - - if (++$byte !== 256) { - $number[$i] = \chr($byte); - break; - } - - $number[$i] = "\x00"; - - if ($i === 0) { - $number = "\x01" . $number; - } - } - - return $number; - } - - /** - * Converts a decimal number to a binary string. - * - * @param string $number The number to convert, positive or zero, only digits. - */ - private function toBinary(string $number) : string - { - $result = ''; - - while ($number !== '0') { - [$number, $remainder] = $this->divQR($number, '256'); - $result .= \chr((int) $remainder); - } - - return \strrev($result); - } - - /** - * Returns the positive decimal representation of a binary number. - * - * @param string $bytes The bytes representing the number. - */ - private function toDecimal(string $bytes) : string - { - $result = '0'; - $power = '1'; - - for ($i = \strlen($bytes) - 1; $i >= 0; $i--) { - $index = \ord($bytes[$i]); - - if ($index !== 0) { - $result = $this->add($result, ($index === 1) - ? $power - : $this->mul($power, (string) $index) - ); - } - - if ($i !== 0) { - $power = $this->mul($power, '256'); - } - } - - return $result; - } -} diff --git a/docker/streamline-src/vendor/brick/math/src/Internal/Calculator/BcMathCalculator.php b/docker/streamline-src/vendor/brick/math/src/Internal/Calculator/BcMathCalculator.php deleted file mode 100644 index 067085e2..00000000 --- a/docker/streamline-src/vendor/brick/math/src/Internal/Calculator/BcMathCalculator.php +++ /dev/null @@ -1,65 +0,0 @@ -maxDigits = match (PHP_INT_SIZE) { - 4 => 9, - 8 => 18, - default => throw new \RuntimeException('The platform is not 32-bit or 64-bit as expected.') - }; - } - - public function add(string $a, string $b) : string - { - /** - * @psalm-var numeric-string $a - * @psalm-var numeric-string $b - */ - $result = $a + $b; - - if (is_int($result)) { - return (string) $result; - } - - if ($a === '0') { - return $b; - } - - if ($b === '0') { - return $a; - } - - [$aNeg, $bNeg, $aDig, $bDig] = $this->init($a, $b); - - $result = $aNeg === $bNeg ? $this->doAdd($aDig, $bDig) : $this->doSub($aDig, $bDig); - - if ($aNeg) { - $result = $this->neg($result); - } - - return $result; - } - - public function sub(string $a, string $b) : string - { - return $this->add($a, $this->neg($b)); - } - - public function mul(string $a, string $b) : string - { - /** - * @psalm-var numeric-string $a - * @psalm-var numeric-string $b - */ - $result = $a * $b; - - if (is_int($result)) { - return (string) $result; - } - - if ($a === '0' || $b === '0') { - return '0'; - } - - if ($a === '1') { - return $b; - } - - if ($b === '1') { - return $a; - } - - if ($a === '-1') { - return $this->neg($b); - } - - if ($b === '-1') { - return $this->neg($a); - } - - [$aNeg, $bNeg, $aDig, $bDig] = $this->init($a, $b); - - $result = $this->doMul($aDig, $bDig); - - if ($aNeg !== $bNeg) { - $result = $this->neg($result); - } - - return $result; - } - - public function divQ(string $a, string $b) : string - { - return $this->divQR($a, $b)[0]; - } - - public function divR(string $a, string $b): string - { - return $this->divQR($a, $b)[1]; - } - - public function divQR(string $a, string $b) : array - { - if ($a === '0') { - return ['0', '0']; - } - - if ($a === $b) { - return ['1', '0']; - } - - if ($b === '1') { - return [$a, '0']; - } - - if ($b === '-1') { - return [$this->neg($a), '0']; - } - - /** @psalm-var numeric-string $a */ - $na = $a * 1; // cast to number - - if (is_int($na)) { - /** @psalm-var numeric-string $b */ - $nb = $b * 1; - - if (is_int($nb)) { - // the only division that may overflow is PHP_INT_MIN / -1, - // which cannot happen here as we've already handled a divisor of -1 above. - $q = intdiv($na, $nb); - $r = $na % $nb; - - return [ - (string) $q, - (string) $r - ]; - } - } - - [$aNeg, $bNeg, $aDig, $bDig] = $this->init($a, $b); - - [$q, $r] = $this->doDiv($aDig, $bDig); - - if ($aNeg !== $bNeg) { - $q = $this->neg($q); - } - - if ($aNeg) { - $r = $this->neg($r); - } - - return [$q, $r]; - } - - public function pow(string $a, int $e) : string - { - if ($e === 0) { - return '1'; - } - - if ($e === 1) { - return $a; - } - - $odd = $e % 2; - $e -= $odd; - - $aa = $this->mul($a, $a); - - /** @psalm-suppress PossiblyInvalidArgument We're sure that $e / 2 is an int now */ - $result = $this->pow($aa, $e / 2); - - if ($odd === 1) { - $result = $this->mul($result, $a); - } - - return $result; - } - - /** - * Algorithm from: https://www.geeksforgeeks.org/modular-exponentiation-power-in-modular-arithmetic/ - */ - public function modPow(string $base, string $exp, string $mod) : string - { - // special case: the algorithm below fails with 0 power 0 mod 1 (returns 1 instead of 0) - if ($base === '0' && $exp === '0' && $mod === '1') { - return '0'; - } - - // special case: the algorithm below fails with power 0 mod 1 (returns 1 instead of 0) - if ($exp === '0' && $mod === '1') { - return '0'; - } - - $x = $base; - - $res = '1'; - - // numbers are positive, so we can use remainder instead of modulo - $x = $this->divR($x, $mod); - - while ($exp !== '0') { - if (in_array($exp[-1], ['1', '3', '5', '7', '9'])) { // odd - $res = $this->divR($this->mul($res, $x), $mod); - } - - $exp = $this->divQ($exp, '2'); - $x = $this->divR($this->mul($x, $x), $mod); - } - - return $res; - } - - /** - * Adapted from https://cp-algorithms.com/num_methods/roots_newton.html - */ - public function sqrt(string $n) : string - { - if ($n === '0') { - return '0'; - } - - // initial approximation - $x = \str_repeat('9', \intdiv(\strlen($n), 2) ?: 1); - - $decreased = false; - - for (;;) { - $nx = $this->divQ($this->add($x, $this->divQ($n, $x)), '2'); - - if ($x === $nx || $this->cmp($nx, $x) > 0 && $decreased) { - break; - } - - $decreased = $this->cmp($nx, $x) < 0; - $x = $nx; - } - - return $x; - } - - /** - * Performs the addition of two non-signed large integers. - */ - private function doAdd(string $a, string $b) : string - { - [$a, $b, $length] = $this->pad($a, $b); - - $carry = 0; - $result = ''; - - for ($i = $length - $this->maxDigits;; $i -= $this->maxDigits) { - $blockLength = $this->maxDigits; - - if ($i < 0) { - $blockLength += $i; - /** @psalm-suppress LoopInvalidation */ - $i = 0; - } - - /** @psalm-var numeric-string $blockA */ - $blockA = \substr($a, $i, $blockLength); - - /** @psalm-var numeric-string $blockB */ - $blockB = \substr($b, $i, $blockLength); - - $sum = (string) ($blockA + $blockB + $carry); - $sumLength = \strlen($sum); - - if ($sumLength > $blockLength) { - $sum = \substr($sum, 1); - $carry = 1; - } else { - if ($sumLength < $blockLength) { - $sum = \str_repeat('0', $blockLength - $sumLength) . $sum; - } - $carry = 0; - } - - $result = $sum . $result; - - if ($i === 0) { - break; - } - } - - if ($carry === 1) { - $result = '1' . $result; - } - - return $result; - } - - /** - * Performs the subtraction of two non-signed large integers. - */ - private function doSub(string $a, string $b) : string - { - if ($a === $b) { - return '0'; - } - - // Ensure that we always subtract to a positive result: biggest minus smallest. - $cmp = $this->doCmp($a, $b); - - $invert = ($cmp === -1); - - if ($invert) { - $c = $a; - $a = $b; - $b = $c; - } - - [$a, $b, $length] = $this->pad($a, $b); - - $carry = 0; - $result = ''; - - $complement = 10 ** $this->maxDigits; - - for ($i = $length - $this->maxDigits;; $i -= $this->maxDigits) { - $blockLength = $this->maxDigits; - - if ($i < 0) { - $blockLength += $i; - /** @psalm-suppress LoopInvalidation */ - $i = 0; - } - - /** @psalm-var numeric-string $blockA */ - $blockA = \substr($a, $i, $blockLength); - - /** @psalm-var numeric-string $blockB */ - $blockB = \substr($b, $i, $blockLength); - - $sum = $blockA - $blockB - $carry; - - if ($sum < 0) { - $sum += $complement; - $carry = 1; - } else { - $carry = 0; - } - - $sum = (string) $sum; - $sumLength = \strlen($sum); - - if ($sumLength < $blockLength) { - $sum = \str_repeat('0', $blockLength - $sumLength) . $sum; - } - - $result = $sum . $result; - - if ($i === 0) { - break; - } - } - - // Carry cannot be 1 when the loop ends, as a > b - assert($carry === 0); - - $result = \ltrim($result, '0'); - - if ($invert) { - $result = $this->neg($result); - } - - return $result; - } - - /** - * Performs the multiplication of two non-signed large integers. - */ - private function doMul(string $a, string $b) : string - { - $x = \strlen($a); - $y = \strlen($b); - - $maxDigits = \intdiv($this->maxDigits, 2); - $complement = 10 ** $maxDigits; - - $result = '0'; - - for ($i = $x - $maxDigits;; $i -= $maxDigits) { - $blockALength = $maxDigits; - - if ($i < 0) { - $blockALength += $i; - /** @psalm-suppress LoopInvalidation */ - $i = 0; - } - - $blockA = (int) \substr($a, $i, $blockALength); - - $line = ''; - $carry = 0; - - for ($j = $y - $maxDigits;; $j -= $maxDigits) { - $blockBLength = $maxDigits; - - if ($j < 0) { - $blockBLength += $j; - /** @psalm-suppress LoopInvalidation */ - $j = 0; - } - - $blockB = (int) \substr($b, $j, $blockBLength); - - $mul = $blockA * $blockB + $carry; - $value = $mul % $complement; - $carry = ($mul - $value) / $complement; - - $value = (string) $value; - $value = \str_pad($value, $maxDigits, '0', STR_PAD_LEFT); - - $line = $value . $line; - - if ($j === 0) { - break; - } - } - - if ($carry !== 0) { - $line = $carry . $line; - } - - $line = \ltrim($line, '0'); - - if ($line !== '') { - $line .= \str_repeat('0', $x - $blockALength - $i); - $result = $this->add($result, $line); - } - - if ($i === 0) { - break; - } - } - - return $result; - } - - /** - * Performs the division of two non-signed large integers. - * - * @return string[] The quotient and remainder. - */ - private function doDiv(string $a, string $b) : array - { - $cmp = $this->doCmp($a, $b); - - if ($cmp === -1) { - return ['0', $a]; - } - - $x = \strlen($a); - $y = \strlen($b); - - // we now know that a >= b && x >= y - - $q = '0'; // quotient - $r = $a; // remainder - $z = $y; // focus length, always $y or $y+1 - - for (;;) { - $focus = \substr($a, 0, $z); - - $cmp = $this->doCmp($focus, $b); - - if ($cmp === -1) { - if ($z === $x) { // remainder < dividend - break; - } - - $z++; - } - - $zeros = \str_repeat('0', $x - $z); - - $q = $this->add($q, '1' . $zeros); - $a = $this->sub($a, $b . $zeros); - - $r = $a; - - if ($r === '0') { // remainder == 0 - break; - } - - $x = \strlen($a); - - if ($x < $y) { // remainder < dividend - break; - } - - $z = $y; - } - - return [$q, $r]; - } - - /** - * Compares two non-signed large numbers. - * - * @psalm-return -1|0|1 - */ - private function doCmp(string $a, string $b) : int - { - $x = \strlen($a); - $y = \strlen($b); - - $cmp = $x <=> $y; - - if ($cmp !== 0) { - return $cmp; - } - - return \strcmp($a, $b) <=> 0; // enforce -1|0|1 - } - - /** - * Pads the left of one of the given numbers with zeros if necessary to make both numbers the same length. - * - * The numbers must only consist of digits, without leading minus sign. - * - * @return array{string, string, int} - */ - private function pad(string $a, string $b) : array - { - $x = \strlen($a); - $y = \strlen($b); - - if ($x > $y) { - $b = \str_repeat('0', $x - $y) . $b; - - return [$a, $b, $x]; - } - - if ($x < $y) { - $a = \str_repeat('0', $y - $x) . $a; - - return [$a, $b, $y]; - } - - return [$a, $b, $x]; - } -} diff --git a/docker/streamline-src/vendor/brick/math/src/RoundingMode.php b/docker/streamline-src/vendor/brick/math/src/RoundingMode.php deleted file mode 100644 index e8ee6a8b..00000000 --- a/docker/streamline-src/vendor/brick/math/src/RoundingMode.php +++ /dev/null @@ -1,98 +0,0 @@ -= 0.5; otherwise, behaves as for DOWN. - * Note that this is the rounding mode commonly taught at school. - */ - case HALF_UP; - - /** - * Rounds towards "nearest neighbor" unless both neighbors are equidistant, in which case round down. - * - * Behaves as for UP if the discarded fraction is > 0.5; otherwise, behaves as for DOWN. - */ - case HALF_DOWN; - - /** - * Rounds towards "nearest neighbor" unless both neighbors are equidistant, in which case round towards positive infinity. - * - * If the result is positive, behaves as for HALF_UP; if negative, behaves as for HALF_DOWN. - */ - case HALF_CEILING; - - /** - * Rounds towards "nearest neighbor" unless both neighbors are equidistant, in which case round towards negative infinity. - * - * If the result is positive, behaves as for HALF_DOWN; if negative, behaves as for HALF_UP. - */ - case HALF_FLOOR; - - /** - * Rounds towards the "nearest neighbor" unless both neighbors are equidistant, in which case rounds towards the even neighbor. - * - * Behaves as for HALF_UP if the digit to the left of the discarded fraction is odd; - * behaves as for HALF_DOWN if it's even. - * - * Note that this is the rounding mode that statistically minimizes - * cumulative error when applied repeatedly over a sequence of calculations. - * It is sometimes known as "Banker's rounding", and is chiefly used in the USA. - */ - case HALF_EVEN; -} diff --git a/docker/streamline-src/vendor/composer/autoload_classmap.php b/docker/streamline-src/vendor/composer/autoload_classmap.php deleted file mode 100644 index dae66153..00000000 --- a/docker/streamline-src/vendor/composer/autoload_classmap.php +++ /dev/null @@ -1,7174 +0,0 @@ - $vendorDir . '/africastalking/africastalking/src/AfricasTalking.php', - 'AfricasTalking\\SDK\\Airtime' => $vendorDir . '/africastalking/africastalking/src/Airtime.php', - 'AfricasTalking\\SDK\\Application' => $vendorDir . '/africastalking/africastalking/src/Application.php', - 'AfricasTalking\\SDK\\Content' => $vendorDir . '/africastalking/africastalking/src/Content.php', - 'AfricasTalking\\SDK\\MobileData' => $vendorDir . '/africastalking/africastalking/src/MobileData.php', - 'AfricasTalking\\SDK\\SMS' => $vendorDir . '/africastalking/africastalking/src/SMS.php', - 'AfricasTalking\\SDK\\Service' => $vendorDir . '/africastalking/africastalking/src/Service.php', - 'AfricasTalking\\SDK\\Token' => $vendorDir . '/africastalking/africastalking/src/Token.php', - 'AfricasTalking\\SDK\\Voice' => $vendorDir . '/africastalking/africastalking/src/Voice.php', - 'Attribute' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php', - 'Barryvdh\\DomPDF\\Facade\\Pdf' => $vendorDir . '/barryvdh/laravel-dompdf/src/Facade/Pdf.php', - 'Barryvdh\\DomPDF\\PDF' => $vendorDir . '/barryvdh/laravel-dompdf/src/PDF.php', - 'Barryvdh\\DomPDF\\ServiceProvider' => $vendorDir . '/barryvdh/laravel-dompdf/src/ServiceProvider.php', - 'Barryvdh\\Snappy\\Facades\\SnappyImage' => $vendorDir . '/barryvdh/laravel-snappy/src/Facades/SnappyImage.php', - 'Barryvdh\\Snappy\\Facades\\SnappyPdf' => $vendorDir . '/barryvdh/laravel-snappy/src/Facades/SnappyPdf.php', - 'Barryvdh\\Snappy\\IlluminateSnappyImage' => $vendorDir . '/barryvdh/laravel-snappy/src/IlluminateSnappyImage.php', - 'Barryvdh\\Snappy\\IlluminateSnappyPdf' => $vendorDir . '/barryvdh/laravel-snappy/src/IlluminateSnappyPdf.php', - 'Barryvdh\\Snappy\\ImageWrapper' => $vendorDir . '/barryvdh/laravel-snappy/src/ImageWrapper.php', - 'Barryvdh\\Snappy\\LumenServiceProvider' => $vendorDir . '/barryvdh/laravel-snappy/src/LumenServiceProvider.php', - 'Barryvdh\\Snappy\\PdfFaker' => $vendorDir . '/barryvdh/laravel-snappy/src/PdfFaker.php', - 'Barryvdh\\Snappy\\PdfWrapper' => $vendorDir . '/barryvdh/laravel-snappy/src/PdfWrapper.php', - 'Barryvdh\\Snappy\\ServiceProvider' => $vendorDir . '/barryvdh/laravel-snappy/src/ServiceProvider.php', - 'Brick\\Math\\BigDecimal' => $vendorDir . '/brick/math/src/BigDecimal.php', - 'Brick\\Math\\BigInteger' => $vendorDir . '/brick/math/src/BigInteger.php', - 'Brick\\Math\\BigNumber' => $vendorDir . '/brick/math/src/BigNumber.php', - 'Brick\\Math\\BigRational' => $vendorDir . '/brick/math/src/BigRational.php', - 'Brick\\Math\\Exception\\DivisionByZeroException' => $vendorDir . '/brick/math/src/Exception/DivisionByZeroException.php', - 'Brick\\Math\\Exception\\IntegerOverflowException' => $vendorDir . '/brick/math/src/Exception/IntegerOverflowException.php', - 'Brick\\Math\\Exception\\MathException' => $vendorDir . '/brick/math/src/Exception/MathException.php', - 'Brick\\Math\\Exception\\NegativeNumberException' => $vendorDir . '/brick/math/src/Exception/NegativeNumberException.php', - 'Brick\\Math\\Exception\\NumberFormatException' => $vendorDir . '/brick/math/src/Exception/NumberFormatException.php', - 'Brick\\Math\\Exception\\RoundingNecessaryException' => $vendorDir . '/brick/math/src/Exception/RoundingNecessaryException.php', - 'Brick\\Math\\Internal\\Calculator' => $vendorDir . '/brick/math/src/Internal/Calculator.php', - 'Brick\\Math\\Internal\\Calculator\\BcMathCalculator' => $vendorDir . '/brick/math/src/Internal/Calculator/BcMathCalculator.php', - 'Brick\\Math\\Internal\\Calculator\\GmpCalculator' => $vendorDir . '/brick/math/src/Internal/Calculator/GmpCalculator.php', - 'Brick\\Math\\Internal\\Calculator\\NativeCalculator' => $vendorDir . '/brick/math/src/Internal/Calculator/NativeCalculator.php', - 'Brick\\Math\\RoundingMode' => $vendorDir . '/brick/math/src/RoundingMode.php', - 'Carbon\\AbstractTranslator' => $vendorDir . '/nesbot/carbon/src/Carbon/AbstractTranslator.php', - 'Carbon\\Carbon' => $vendorDir . '/nesbot/carbon/src/Carbon/Carbon.php', - 'Carbon\\CarbonConverterInterface' => $vendorDir . '/nesbot/carbon/src/Carbon/CarbonConverterInterface.php', - 'Carbon\\CarbonImmutable' => $vendorDir . '/nesbot/carbon/src/Carbon/CarbonImmutable.php', - 'Carbon\\CarbonInterface' => $vendorDir . '/nesbot/carbon/src/Carbon/CarbonInterface.php', - 'Carbon\\CarbonInterval' => $vendorDir . '/nesbot/carbon/src/Carbon/CarbonInterval.php', - 'Carbon\\CarbonPeriod' => $vendorDir . '/nesbot/carbon/src/Carbon/CarbonPeriod.php', - 'Carbon\\CarbonPeriodImmutable' => $vendorDir . '/nesbot/carbon/src/Carbon/CarbonPeriodImmutable.php', - 'Carbon\\CarbonTimeZone' => $vendorDir . '/nesbot/carbon/src/Carbon/CarbonTimeZone.php', - 'Carbon\\Cli\\Invoker' => $vendorDir . '/nesbot/carbon/src/Carbon/Cli/Invoker.php', - 'Carbon\\Doctrine\\CarbonDoctrineType' => $vendorDir . '/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/CarbonDoctrineType.php', - 'Carbon\\Doctrine\\CarbonImmutableType' => $vendorDir . '/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/CarbonImmutableType.php', - 'Carbon\\Doctrine\\CarbonType' => $vendorDir . '/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/CarbonType.php', - 'Carbon\\Doctrine\\CarbonTypeConverter' => $vendorDir . '/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/CarbonTypeConverter.php', - 'Carbon\\Doctrine\\DateTimeDefaultPrecision' => $vendorDir . '/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeDefaultPrecision.php', - 'Carbon\\Doctrine\\DateTimeImmutableType' => $vendorDir . '/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeImmutableType.php', - 'Carbon\\Doctrine\\DateTimeType' => $vendorDir . '/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeType.php', - 'Carbon\\Exceptions\\BadComparisonUnitException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/BadComparisonUnitException.php', - 'Carbon\\Exceptions\\BadFluentConstructorException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/BadFluentConstructorException.php', - 'Carbon\\Exceptions\\BadFluentSetterException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/BadFluentSetterException.php', - 'Carbon\\Exceptions\\BadMethodCallException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/BadMethodCallException.php', - 'Carbon\\Exceptions\\EndLessPeriodException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/EndLessPeriodException.php', - 'Carbon\\Exceptions\\Exception' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/Exception.php', - 'Carbon\\Exceptions\\ImmutableException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/ImmutableException.php', - 'Carbon\\Exceptions\\InvalidArgumentException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/InvalidArgumentException.php', - 'Carbon\\Exceptions\\InvalidCastException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/InvalidCastException.php', - 'Carbon\\Exceptions\\InvalidDateException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/InvalidDateException.php', - 'Carbon\\Exceptions\\InvalidFormatException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/InvalidFormatException.php', - 'Carbon\\Exceptions\\InvalidIntervalException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/InvalidIntervalException.php', - 'Carbon\\Exceptions\\InvalidPeriodDateException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/InvalidPeriodDateException.php', - 'Carbon\\Exceptions\\InvalidPeriodParameterException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/InvalidPeriodParameterException.php', - 'Carbon\\Exceptions\\InvalidTimeZoneException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/InvalidTimeZoneException.php', - 'Carbon\\Exceptions\\InvalidTypeException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/InvalidTypeException.php', - 'Carbon\\Exceptions\\NotACarbonClassException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/NotACarbonClassException.php', - 'Carbon\\Exceptions\\NotAPeriodException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/NotAPeriodException.php', - 'Carbon\\Exceptions\\NotLocaleAwareException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/NotLocaleAwareException.php', - 'Carbon\\Exceptions\\OutOfRangeException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/OutOfRangeException.php', - 'Carbon\\Exceptions\\ParseErrorException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/ParseErrorException.php', - 'Carbon\\Exceptions\\RuntimeException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/RuntimeException.php', - 'Carbon\\Exceptions\\UnitException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/UnitException.php', - 'Carbon\\Exceptions\\UnitNotConfiguredException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/UnitNotConfiguredException.php', - 'Carbon\\Exceptions\\UnknownGetterException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/UnknownGetterException.php', - 'Carbon\\Exceptions\\UnknownMethodException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/UnknownMethodException.php', - 'Carbon\\Exceptions\\UnknownSetterException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/UnknownSetterException.php', - 'Carbon\\Exceptions\\UnknownUnitException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/UnknownUnitException.php', - 'Carbon\\Exceptions\\UnreachableException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/UnreachableException.php', - 'Carbon\\Factory' => $vendorDir . '/nesbot/carbon/src/Carbon/Factory.php', - 'Carbon\\FactoryImmutable' => $vendorDir . '/nesbot/carbon/src/Carbon/FactoryImmutable.php', - 'Carbon\\Language' => $vendorDir . '/nesbot/carbon/src/Carbon/Language.php', - 'Carbon\\Laravel\\ServiceProvider' => $vendorDir . '/nesbot/carbon/src/Carbon/Laravel/ServiceProvider.php', - 'Carbon\\MessageFormatter\\MessageFormatterMapper' => $vendorDir . '/nesbot/carbon/src/Carbon/MessageFormatter/MessageFormatterMapper.php', - 'Carbon\\PHPStan\\AbstractMacro' => $vendorDir . '/nesbot/carbon/src/Carbon/PHPStan/AbstractMacro.php', - 'Carbon\\PHPStan\\Macro' => $vendorDir . '/nesbot/carbon/src/Carbon/PHPStan/Macro.php', - 'Carbon\\PHPStan\\MacroExtension' => $vendorDir . '/nesbot/carbon/src/Carbon/PHPStan/MacroExtension.php', - 'Carbon\\PHPStan\\MacroScanner' => $vendorDir . '/nesbot/carbon/src/Carbon/PHPStan/MacroScanner.php', - 'Carbon\\Traits\\Boundaries' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Boundaries.php', - 'Carbon\\Traits\\Cast' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Cast.php', - 'Carbon\\Traits\\Comparison' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Comparison.php', - 'Carbon\\Traits\\Converter' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Converter.php', - 'Carbon\\Traits\\Creator' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Creator.php', - 'Carbon\\Traits\\Date' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Date.php', - 'Carbon\\Traits\\DeprecatedProperties' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/DeprecatedProperties.php', - 'Carbon\\Traits\\Difference' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Difference.php', - 'Carbon\\Traits\\IntervalRounding' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/IntervalRounding.php', - 'Carbon\\Traits\\IntervalStep' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/IntervalStep.php', - 'Carbon\\Traits\\Localization' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Localization.php', - 'Carbon\\Traits\\Macro' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Macro.php', - 'Carbon\\Traits\\MagicParameter' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/MagicParameter.php', - 'Carbon\\Traits\\Mixin' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Mixin.php', - 'Carbon\\Traits\\Modifiers' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Modifiers.php', - 'Carbon\\Traits\\Mutability' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Mutability.php', - 'Carbon\\Traits\\ObjectInitialisation' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/ObjectInitialisation.php', - 'Carbon\\Traits\\Options' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Options.php', - 'Carbon\\Traits\\Rounding' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Rounding.php', - 'Carbon\\Traits\\Serialization' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Serialization.php', - 'Carbon\\Traits\\Test' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Test.php', - 'Carbon\\Traits\\Timestamp' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Timestamp.php', - 'Carbon\\Traits\\ToStringFormat' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/ToStringFormat.php', - 'Carbon\\Traits\\Units' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Units.php', - 'Carbon\\Traits\\Week' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Week.php', - 'Carbon\\Translator' => $vendorDir . '/nesbot/carbon/src/Carbon/Translator.php', - 'Carbon\\TranslatorImmutable' => $vendorDir . '/nesbot/carbon/src/Carbon/TranslatorImmutable.php', - 'Carbon\\TranslatorStrongTypeInterface' => $vendorDir . '/nesbot/carbon/src/Carbon/TranslatorStrongTypeInterface.php', - 'Collective\\Html\\Componentable' => $vendorDir . '/laravelcollective/html/src/Componentable.php', - 'Collective\\Html\\Eloquent\\FormAccessible' => $vendorDir . '/laravelcollective/html/src/Eloquent/FormAccessible.php', - 'Collective\\Html\\FormBuilder' => $vendorDir . '/laravelcollective/html/src/FormBuilder.php', - 'Collective\\Html\\FormFacade' => $vendorDir . '/laravelcollective/html/src/FormFacade.php', - 'Collective\\Html\\HtmlBuilder' => $vendorDir . '/laravelcollective/html/src/HtmlBuilder.php', - 'Collective\\Html\\HtmlFacade' => $vendorDir . '/laravelcollective/html/src/HtmlFacade.php', - 'Collective\\Html\\HtmlServiceProvider' => $vendorDir . '/laravelcollective/html/src/HtmlServiceProvider.php', - 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', - 'CostPriceSeeder' => $baseDir . '/database/seeders/CostPriceSeeder.php', - 'Cron\\AbstractField' => $vendorDir . '/dragonmantank/cron-expression/src/Cron/AbstractField.php', - 'Cron\\CronExpression' => $vendorDir . '/dragonmantank/cron-expression/src/Cron/CronExpression.php', - 'Cron\\DayOfMonthField' => $vendorDir . '/dragonmantank/cron-expression/src/Cron/DayOfMonthField.php', - 'Cron\\DayOfWeekField' => $vendorDir . '/dragonmantank/cron-expression/src/Cron/DayOfWeekField.php', - 'Cron\\FieldFactory' => $vendorDir . '/dragonmantank/cron-expression/src/Cron/FieldFactory.php', - 'Cron\\FieldFactoryInterface' => $vendorDir . '/dragonmantank/cron-expression/src/Cron/FieldFactoryInterface.php', - 'Cron\\FieldInterface' => $vendorDir . '/dragonmantank/cron-expression/src/Cron/FieldInterface.php', - 'Cron\\HoursField' => $vendorDir . '/dragonmantank/cron-expression/src/Cron/HoursField.php', - 'Cron\\MinutesField' => $vendorDir . '/dragonmantank/cron-expression/src/Cron/MinutesField.php', - 'Cron\\MonthField' => $vendorDir . '/dragonmantank/cron-expression/src/Cron/MonthField.php', - 'Database\\Seeders\\AccountTypeTableUpdateSeeder' => $baseDir . '/database/seeders/AccountTypeTableUpdateSeeder.php', - 'Database\\Seeders\\AccountTypesTableSeeder' => $baseDir . '/database/seeders/AccountTypesTableSeeder.php', - 'Database\\Seeders\\AgeGroupsTableSeeder' => $baseDir . '/database/seeders/AgeGroupsTableSeeder.php', - 'Database\\Seeders\\AnaesthesiaAirwaysTableSeeder' => $baseDir . '/database/seeders/AnaesthesiaAirwaysTableSeeder.php', - 'Database\\Seeders\\AnaesthesiaEttsTableSeeder' => $baseDir . '/database/seeders/AnaesthesiaEttsTableSeeder.php', - 'Database\\Seeders\\AnaesthesiaInductionsTableSeeder' => $baseDir . '/database/seeders/AnaesthesiaInductionsTableSeeder.php', - 'Database\\Seeders\\AnaesthesiaTypesSeeder' => $baseDir . '/database/seeders/AnaesthesiaTypesSeeder.php', - 'Database\\Seeders\\AnaestheticAgentsTableSeeder' => $baseDir . '/database/seeders/AnaestheticAgentsTableSeeder.php', - 'Database\\Seeders\\AnaestheticTechniquesTableSeeder' => $baseDir . '/database/seeders/AnaestheticTechniquesTableSeeder.php', - 'Database\\Seeders\\AnalgesicsTableSeeder' => $baseDir . '/database/seeders/AnalgesicsTableSeeder.php', - 'Database\\Seeders\\AnteNatalClinicAccuraciesTableSeeder' => $baseDir . '/database/seeders/AnteNatalClinicAccuraciesTableSeeder.php', - 'Database\\Seeders\\AnteNatalClinicEngagementsTableSeeder' => $baseDir . '/database/seeders/AnteNatalClinicEngagementsTableSeeder.php', - 'Database\\Seeders\\AnteNatalClinicLiesTableSeeder' => $baseDir . '/database/seeders/AnteNatalClinicLiesTableSeeder.php', - 'Database\\Seeders\\AnteNatalClinicOutcomesTableSeeder' => $baseDir . '/database/seeders/AnteNatalClinicOutcomesTableSeeder.php', - 'Database\\Seeders\\AnteNatalClinicPositionTableSeeder' => $baseDir . '/database/seeders/AnteNatalClinicPositionTableSeeder.php', - 'Database\\Seeders\\AnteNatalClinicPresentationTableSeeder' => $baseDir . '/database/seeders/AnteNatalClinicPresentationTableSeeder.php', - 'Database\\Seeders\\ArtCardFamilyPlanningMethodsTableSeeder' => $baseDir . '/database/seeders/ArtCardFamilyPlanningMethodsTableSeeder.php', - 'Database\\Seeders\\ArtOiTableSeeder' => $baseDir . '/database/seeders/ArtOiTableSeeder.php', - 'Database\\Seeders\\ArtPotentialSideEffectsTableSeeder' => $baseDir . '/database/seeders/ArtPotentialSideEffectsTableSeeder.php', - 'Database\\Seeders\\ArvAdherenceReasonTableSeeder' => $baseDir . '/database/seeders/ArvAdherenceReasonTableSeeder.php', - 'Database\\Seeders\\BankingSeeder' => $baseDir . '/database/seeders/BankingSeeder.php', - 'Database\\Seeders\\BloodGroupsSeeder' => $baseDir . '/database/seeders/BloodGroupsSeeder.php', - 'Database\\Seeders\\CaesarianSectionTableSeeder' => $baseDir . '/database/seeders/CaesarianSectionTableSeeder.php', - 'Database\\Seeders\\CareEntryPointsTableSeeder' => $baseDir . '/database/seeders/CareEntryPointsTableSeeder.php', - 'Database\\Seeders\\ChartOfAccountSlugTableSeeder' => $baseDir . '/database/seeders/ChartOfAccountSlugTableSeeder.php', - 'Database\\Seeders\\ChartOfAccountsTableSeeder' => $baseDir . '/database/seeders/ChartOfAccountsTableSeeder.php', - 'Database\\Seeders\\ClinicsSeeder' => $baseDir . '/database/seeders/ClinicsSeeder.php', - 'Database\\Seeders\\CountiesSeeder' => $baseDir . '/database/seeders/CountiesSeeder.php', - 'Database\\Seeders\\CountriesTableSeeder' => $baseDir . '/database/seeders/CountriesTableSeeder.php', - 'Database\\Seeders\\DatabaseSeeder' => $baseDir . '/database/seeders/DatabaseSeeder.php', - 'Database\\Seeders\\DebtPlanArrangementsTableSeeder' => $baseDir . '/database/seeders/DebtPlanArrangementsTableSeeder.php', - 'Database\\Seeders\\DefaultBedCategoryIncomeAccount' => $baseDir . '/database/seeders/DefaultBedCategoryIncomeAccount.php', - 'Database\\Seeders\\DentalsTableSeeder' => $baseDir . '/database/seeders/DentalsTableSeeder.php', - 'Database\\Seeders\\DiagnosesTableSeeder' => $baseDir . '/database/seeders/DiagnosesTableSeeder.php', - 'Database\\Seeders\\DiagnosisCategorySeeder' => $baseDir . '/database/seeders/DiagnosisCategorySeeder.php', - 'Database\\Seeders\\DistrictsTableSeeder' => $baseDir . '/database/seeders/DistrictsTableSeeder.php', - 'Database\\Seeders\\DosageFrequenciesClassTableSeeder' => $baseDir . '/database/seeders/DosageFrequenciesClassTableSeeder.php', - 'Database\\Seeders\\DrugCategoriesTableSeeder' => $baseDir . '/database/seeders/DrugCategoriesTableSeeder.php', - 'Database\\Seeders\\DrugFormsTableSeeder' => $baseDir . '/database/seeders/DrugFormsTableSeeder.php', - 'Database\\Seeders\\DrugUnitsTableSeeder' => $baseDir . '/database/seeders/DrugUnitsTableSeeder.php', - 'Database\\Seeders\\DrugsTableSeeder' => $baseDir . '/database/seeders/DrugsTableSeeder.php', - 'Database\\Seeders\\EyeClinicDiagnosisSeeder' => $baseDir . '/database/seeders/EyeClinicDiagnosisSeeder.php', - 'Database\\Seeders\\FamilyPlanningMethodsTableSeeder' => $baseDir . '/database/seeders/FamilyPlanningMethodsTableSeeder.php', - 'Database\\Seeders\\FamilyRelationshipsTableSeeder' => $baseDir . '/database/seeders/FamilyRelationshipsTableSeeder.php', - 'Database\\Seeders\\FinancePointTagTableSeeder' => $baseDir . '/database/seeders/FinancePointTagTableSeeder.php', - 'Database\\Seeders\\GenderBasedViolenceTableSeeder' => $baseDir . '/database/seeders/GenderBasedViolenceTableSeeder.php', - 'Database\\Seeders\\HeartRegularitiesTableSeeder' => $baseDir . '/database/seeders/HeartRegularitiesTableSeeder.php', - 'Database\\Seeders\\HmisCategoriesTableSeeder' => $baseDir . '/database/seeders/HmisCategoriesTableSeeder.php', - 'Database\\Seeders\\HmisCategoryOptionsSeeder' => $baseDir . '/database/seeders/HmisCategoryOptionsSeeder.php', - 'Database\\Seeders\\HmisInvestigationCategoriesInpatientTableSeeder' => $baseDir . '/database/seeders/HmisInvestigationCategoriesInpatientTableSeeder.php', - 'Database\\Seeders\\HmisWardSeeder' => $baseDir . '/database/seeders/HmisWardSeeder.php', - 'Database\\Seeders\\HospitalInformationTableSeeder' => $baseDir . '/database/seeders/HospitalInformationTableSeeder.php', - 'Database\\Seeders\\InvestigationCategoriesTableSeeder' => $baseDir . '/database/seeders/InvestigationCategoriesTableSeeder.php', - 'Database\\Seeders\\InvestigationSuperCategoriesSeeder' => $baseDir . '/database/seeders/InvestigationSuperCategoriesSeeder.php', - 'Database\\Seeders\\IvFluidsTableSeeder' => $baseDir . '/database/seeders/IvFluidsTableSeeder.php', - 'Database\\Seeders\\LaboratorySpecimenTableSeeder' => $baseDir . '/database/seeders/LaboratorySpecimenTableSeeder.php', - 'Database\\Seeders\\LabsTableSeeder' => $baseDir . '/database/seeders/LabsTableSeeder.php', - 'Database\\Seeders\\LicenceCouncilsSeeder' => $baseDir . '/database/seeders/LicenceCouncilsSeeder.php', - 'Database\\Seeders\\LocationOfDeliveryTableSeeder' => $baseDir . '/database/seeders/LocationOfDeliveryTableSeeder.php', - 'Database\\Seeders\\MaritalStatusSeeder' => $baseDir . '/database/seeders/MaritalStatusSeeder.php', - 'Database\\Seeders\\MaternityProgressTableSeeder' => $baseDir . '/database/seeders/MaternityProgressTableSeeder.php', - 'Database\\Seeders\\MessageBoardTableSeeder' => $baseDir . '/database/seeders/MessageBoardTableSeeder.php', - 'Database\\Seeders\\MissingMigrationsVineSeeder' => $baseDir . '/database/seeders/MissingMigrationsVineSeeder.php', - 'Database\\Seeders\\ModeOfDeliveryTableSeeder' => $baseDir . '/database/seeders/ModeOfDeliveryTableSeeder.php', - 'Database\\Seeders\\MuscleRelaxantsTableSeeder' => $baseDir . '/database/seeders/MuscleRelaxantsTableSeeder.php', - 'Database\\Seeders\\NeedleTypesTableSeeder' => $baseDir . '/database/seeders/NeedleTypesTableSeeder.php', - 'Database\\Seeders\\NutritionTableSeeder' => $baseDir . '/database/seeders/NutritionTableSeeder.php', - 'Database\\Seeders\\ObservationsTableSeeder' => $baseDir . '/database/seeders/ObservationsTableSeeder.php', - 'Database\\Seeders\\OccupationsTableSeeder' => $baseDir . '/database/seeders/OccupationsTableSeeder.php', - 'Database\\Seeders\\OutcomesTableSeeder' => $baseDir . '/database/seeders/OutcomesTableSeeder.php', - 'Database\\Seeders\\ParishesSeeder' => $baseDir . '/database/seeders/ParishesSeeder.php', - 'Database\\Seeders\\PasswordExpirationForExistingUsersSeeder' => $baseDir . '/database/seeders/PasswordExpirationForExistingUsersSeeder.php', - 'Database\\Seeders\\PatientCategorySeeder' => $baseDir . '/database/seeders/PatientCategorySeeder.php', - 'Database\\Seeders\\PatientsTableSeeder' => $baseDir . '/database/seeders/PatientsTableSeeder.php', - 'Database\\Seeders\\PaymentItemsTableSeeder' => $baseDir . '/database/seeders/PaymentItemsTableSeeder.php', - 'Database\\Seeders\\PayrollDefaultsSeeder' => $baseDir . '/database/seeders/PayrollDefaultsSeeder.php', - 'Database\\Seeders\\PermissionTableSeeder' => $baseDir . '/database/seeders/PermissionTableSeeder.php', - 'Database\\Seeders\\PermissionsCategoryTableSeeder' => $baseDir . '/database/seeders/PermissionsCategoryTableSeeder.php', - 'Database\\Seeders\\PersonTitlesTableSeeder' => $baseDir . '/database/seeders/PersonTitlesTableSeeder.php', - 'Database\\Seeders\\ProcedureCategoriesTableSeeder' => $baseDir . '/database/seeders/ProcedureCategoriesTableSeeder.php', - 'Database\\Seeders\\QuotationTypesTableSeeder' => $baseDir . '/database/seeders/QuotationTypesTableSeeder.php', - 'Database\\Seeders\\RadiologiesTableSeeder' => $baseDir . '/database/seeders/RadiologiesTableSeeder.php', - 'Database\\Seeders\\ReconcileReasonSeeder' => $baseDir . '/database/seeders/ReconcileReasonSeeder.php', - 'Database\\Seeders\\ReferralHospitalsSeeder' => $baseDir . '/database/seeders/ReferralHospitalsSeeder.php', - 'Database\\Seeders\\ReligionsTableSeeder' => $baseDir . '/database/seeders/ReligionsTableSeeder.php', - 'Database\\Seeders\\ResourceCategoriesTableSeeder' => $baseDir . '/database/seeders/ResourceCategoriesTableSeeder.php', - 'Database\\Seeders\\ResourcesTableSeeder' => $baseDir . '/database/seeders/ResourcesTableSeeder.php', - 'Database\\Seeders\\ReverseTagSeeder' => $baseDir . '/database/seeders/ReverseTagSeeder.php', - 'Database\\Seeders\\RolesTableSeeder' => $baseDir . '/database/seeders/RolesTableSeeder.php', - 'Database\\Seeders\\SecurityQuestionsTableSeeder' => $baseDir . '/database/seeders/SecurityQuestionsTableSeeder.php', - 'Database\\Seeders\\ServicesTableSeeder' => $baseDir . '/database/seeders/ServicesTableSeeder.php', - 'Database\\Seeders\\SlitLampTestAreaSeeder' => $baseDir . '/database/seeders/SlitLampTestAreaSeeder.php', - 'Database\\Seeders\\SlitLampTestAreaValueSeeder' => $baseDir . '/database/seeders/SlitLampTestAreaValueSeeder.php', - 'Database\\Seeders\\SpecialitiesTableSeeder' => $baseDir . '/database/seeders/SpecialitiesTableSeeder.php', - 'Database\\Seeders\\SpecializedInvestigationVariablesSeeder' => $baseDir . '/database/seeders/SpecializedInvestigationVariablesSeeder.php', - 'Database\\Seeders\\SpontaneousRegularRespirationInMinuteTableSeeder' => $baseDir . '/database/seeders/SpontaneousRegularRespirationInMinuteTableSeeder.php', - 'Database\\Seeders\\StaffPositionsSeeder' => $baseDir . '/database/seeders/StaffPositionsSeeder.php', - 'Database\\Seeders\\SubcountiesSeeder' => $baseDir . '/database/seeders/SubcountiesSeeder.php', - 'Database\\Seeders\\SundriesTableSeeder' => $baseDir . '/database/seeders/SundriesTableSeeder.php', - 'Database\\Seeders\\SundryTableSeeder' => $baseDir . '/database/seeders/SundryTableSeeder.php', - 'Database\\Seeders\\SuppliersTableSeeder' => $baseDir . '/database/seeders/SuppliersTableSeeder.php', - 'Database\\Seeders\\SymptomsSeeder' => $baseDir . '/database/seeders/SymptomsSeeder.php', - 'Database\\Seeders\\TheatreLocationsTableSeeder' => $baseDir . '/database/seeders/TheatreLocationsTableSeeder.php', - 'Database\\Seeders\\TuberclosisStatusTableSeeder' => $baseDir . '/database/seeders/TuberclosisStatusTableSeeder.php', - 'Database\\Seeders\\UnitOfMeasureTableSeeder' => $baseDir . '/database/seeders/UnitOfMeasureTableSeeder.php', - 'Database\\Seeders\\UsersTableSeeder' => $baseDir . '/database/seeders/UsersTableSeeder.php', - 'Database\\Seeders\\UterusOperationTableSeeder' => $baseDir . '/database/seeders/UterusOperationTableSeeder.php', - 'Database\\Seeders\\VillagesTableSeeder' => $baseDir . '/database/seeders/VillagesTableSeeder.php', - 'Database\\Seeders\\VolatileLiquidAnaestheticsTableSeeder' => $baseDir . '/database/seeders/VolatileLiquidAnaestheticsTableSeeder.php', - 'Database\\Seeders\\WardsTableSeeder' => $baseDir . '/database/seeders/WardsTableSeeder.php', - 'DateError' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateError.php', - 'DateException' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateException.php', - 'DateInvalidOperationException' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateInvalidOperationException.php', - 'DateInvalidTimeZoneException' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateInvalidTimeZoneException.php', - 'DateMalformedIntervalStringException' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateMalformedIntervalStringException.php', - 'DateMalformedPeriodStringException' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateMalformedPeriodStringException.php', - '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', - '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', - 'DeepCopy\\Filter\\ChainableFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/ChainableFilter.php', - 'DeepCopy\\Filter\\Doctrine\\DoctrineCollectionFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineCollectionFilter.php', - 'DeepCopy\\Filter\\Doctrine\\DoctrineEmptyCollectionFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php', - 'DeepCopy\\Filter\\Doctrine\\DoctrineProxyFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php', - 'DeepCopy\\Filter\\Filter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php', - 'DeepCopy\\Filter\\KeepFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/KeepFilter.php', - 'DeepCopy\\Filter\\ReplaceFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/ReplaceFilter.php', - 'DeepCopy\\Filter\\SetNullFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php', - 'DeepCopy\\Matcher\\Doctrine\\DoctrineProxyMatcher' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php', - 'DeepCopy\\Matcher\\Matcher' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Matcher/Matcher.php', - 'DeepCopy\\Matcher\\PropertyMatcher' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyMatcher.php', - 'DeepCopy\\Matcher\\PropertyNameMatcher' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php', - 'DeepCopy\\Matcher\\PropertyTypeMatcher' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php', - 'DeepCopy\\Reflection\\ReflectionHelper' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php', - 'DeepCopy\\TypeFilter\\Date\\DateIntervalFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DateIntervalFilter.php', - 'DeepCopy\\TypeFilter\\Date\\DatePeriodFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DatePeriodFilter.php', - 'DeepCopy\\TypeFilter\\ReplaceFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php', - 'DeepCopy\\TypeFilter\\ShallowCopyFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php', - 'DeepCopy\\TypeFilter\\Spl\\ArrayObjectFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/ArrayObjectFilter.php', - 'DeepCopy\\TypeFilter\\Spl\\SplDoublyLinkedList' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedList.php', - 'DeepCopy\\TypeFilter\\Spl\\SplDoublyLinkedListFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedListFilter.php', - 'DeepCopy\\TypeFilter\\TypeFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php', - 'DeepCopy\\TypeMatcher\\TypeMatcher' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeMatcher/TypeMatcher.php', - 'Dflydev\\DotAccessData\\Data' => $vendorDir . '/dflydev/dot-access-data/src/Data.php', - 'Dflydev\\DotAccessData\\DataInterface' => $vendorDir . '/dflydev/dot-access-data/src/DataInterface.php', - 'Dflydev\\DotAccessData\\Exception\\DataException' => $vendorDir . '/dflydev/dot-access-data/src/Exception/DataException.php', - 'Dflydev\\DotAccessData\\Exception\\InvalidPathException' => $vendorDir . '/dflydev/dot-access-data/src/Exception/InvalidPathException.php', - 'Dflydev\\DotAccessData\\Exception\\MissingPathException' => $vendorDir . '/dflydev/dot-access-data/src/Exception/MissingPathException.php', - 'Dflydev\\DotAccessData\\Util' => $vendorDir . '/dflydev/dot-access-data/src/Util.php', - 'Doctrine\\Common\\Cache\\Cache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/Cache.php', - 'Doctrine\\Common\\Cache\\CacheProvider' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/CacheProvider.php', - 'Doctrine\\Common\\Cache\\ClearableCache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/ClearableCache.php', - 'Doctrine\\Common\\Cache\\FlushableCache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/FlushableCache.php', - 'Doctrine\\Common\\Cache\\MultiDeleteCache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/MultiDeleteCache.php', - 'Doctrine\\Common\\Cache\\MultiGetCache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/MultiGetCache.php', - 'Doctrine\\Common\\Cache\\MultiOperationCache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/MultiOperationCache.php', - 'Doctrine\\Common\\Cache\\MultiPutCache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/MultiPutCache.php', - 'Doctrine\\Common\\Cache\\Psr6\\CacheAdapter' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/CacheAdapter.php', - 'Doctrine\\Common\\Cache\\Psr6\\CacheItem' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/CacheItem.php', - 'Doctrine\\Common\\Cache\\Psr6\\DoctrineProvider' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/DoctrineProvider.php', - 'Doctrine\\Common\\Cache\\Psr6\\InvalidArgument' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/InvalidArgument.php', - 'Doctrine\\Common\\Cache\\Psr6\\TypedCacheItem' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/TypedCacheItem.php', - 'Doctrine\\Common\\EventArgs' => $vendorDir . '/doctrine/event-manager/src/EventArgs.php', - 'Doctrine\\Common\\EventManager' => $vendorDir . '/doctrine/event-manager/src/EventManager.php', - 'Doctrine\\Common\\EventSubscriber' => $vendorDir . '/doctrine/event-manager/src/EventSubscriber.php', - 'Doctrine\\Common\\Lexer\\AbstractLexer' => $vendorDir . '/doctrine/lexer/src/AbstractLexer.php', - 'Doctrine\\Common\\Lexer\\Token' => $vendorDir . '/doctrine/lexer/src/Token.php', - 'Doctrine\\DBAL\\ArrayParameterType' => $vendorDir . '/doctrine/dbal/src/ArrayParameterType.php', - 'Doctrine\\DBAL\\ArrayParameters\\Exception' => $vendorDir . '/doctrine/dbal/src/ArrayParameters/Exception.php', - 'Doctrine\\DBAL\\ArrayParameters\\Exception\\MissingNamedParameter' => $vendorDir . '/doctrine/dbal/src/ArrayParameters/Exception/MissingNamedParameter.php', - 'Doctrine\\DBAL\\ArrayParameters\\Exception\\MissingPositionalParameter' => $vendorDir . '/doctrine/dbal/src/ArrayParameters/Exception/MissingPositionalParameter.php', - 'Doctrine\\DBAL\\Cache\\ArrayResult' => $vendorDir . '/doctrine/dbal/src/Cache/ArrayResult.php', - 'Doctrine\\DBAL\\Cache\\CacheException' => $vendorDir . '/doctrine/dbal/src/Cache/CacheException.php', - 'Doctrine\\DBAL\\Cache\\QueryCacheProfile' => $vendorDir . '/doctrine/dbal/src/Cache/QueryCacheProfile.php', - 'Doctrine\\DBAL\\ColumnCase' => $vendorDir . '/doctrine/dbal/src/ColumnCase.php', - 'Doctrine\\DBAL\\Configuration' => $vendorDir . '/doctrine/dbal/src/Configuration.php', - 'Doctrine\\DBAL\\Connection' => $vendorDir . '/doctrine/dbal/src/Connection.php', - 'Doctrine\\DBAL\\ConnectionException' => $vendorDir . '/doctrine/dbal/src/ConnectionException.php', - 'Doctrine\\DBAL\\Connections\\PrimaryReadReplicaConnection' => $vendorDir . '/doctrine/dbal/src/Connections/PrimaryReadReplicaConnection.php', - 'Doctrine\\DBAL\\Driver' => $vendorDir . '/doctrine/dbal/src/Driver.php', - 'Doctrine\\DBAL\\DriverManager' => $vendorDir . '/doctrine/dbal/src/DriverManager.php', - 'Doctrine\\DBAL\\Driver\\API\\ExceptionConverter' => $vendorDir . '/doctrine/dbal/src/Driver/API/ExceptionConverter.php', - 'Doctrine\\DBAL\\Driver\\API\\IBMDB2\\ExceptionConverter' => $vendorDir . '/doctrine/dbal/src/Driver/API/IBMDB2/ExceptionConverter.php', - 'Doctrine\\DBAL\\Driver\\API\\MySQL\\ExceptionConverter' => $vendorDir . '/doctrine/dbal/src/Driver/API/MySQL/ExceptionConverter.php', - 'Doctrine\\DBAL\\Driver\\API\\OCI\\ExceptionConverter' => $vendorDir . '/doctrine/dbal/src/Driver/API/OCI/ExceptionConverter.php', - 'Doctrine\\DBAL\\Driver\\API\\PostgreSQL\\ExceptionConverter' => $vendorDir . '/doctrine/dbal/src/Driver/API/PostgreSQL/ExceptionConverter.php', - 'Doctrine\\DBAL\\Driver\\API\\SQLSrv\\ExceptionConverter' => $vendorDir . '/doctrine/dbal/src/Driver/API/SQLSrv/ExceptionConverter.php', - 'Doctrine\\DBAL\\Driver\\API\\SQLite\\ExceptionConverter' => $vendorDir . '/doctrine/dbal/src/Driver/API/SQLite/ExceptionConverter.php', - 'Doctrine\\DBAL\\Driver\\API\\SQLite\\UserDefinedFunctions' => $vendorDir . '/doctrine/dbal/src/Driver/API/SQLite/UserDefinedFunctions.php', - 'Doctrine\\DBAL\\Driver\\AbstractDB2Driver' => $vendorDir . '/doctrine/dbal/src/Driver/AbstractDB2Driver.php', - 'Doctrine\\DBAL\\Driver\\AbstractException' => $vendorDir . '/doctrine/dbal/src/Driver/AbstractException.php', - 'Doctrine\\DBAL\\Driver\\AbstractMySQLDriver' => $vendorDir . '/doctrine/dbal/src/Driver/AbstractMySQLDriver.php', - 'Doctrine\\DBAL\\Driver\\AbstractOracleDriver' => $vendorDir . '/doctrine/dbal/src/Driver/AbstractOracleDriver.php', - 'Doctrine\\DBAL\\Driver\\AbstractOracleDriver\\EasyConnectString' => $vendorDir . '/doctrine/dbal/src/Driver/AbstractOracleDriver/EasyConnectString.php', - 'Doctrine\\DBAL\\Driver\\AbstractPostgreSQLDriver' => $vendorDir . '/doctrine/dbal/src/Driver/AbstractPostgreSQLDriver.php', - 'Doctrine\\DBAL\\Driver\\AbstractSQLServerDriver' => $vendorDir . '/doctrine/dbal/src/Driver/AbstractSQLServerDriver.php', - 'Doctrine\\DBAL\\Driver\\AbstractSQLServerDriver\\Exception\\PortWithoutHost' => $vendorDir . '/doctrine/dbal/src/Driver/AbstractSQLServerDriver/Exception/PortWithoutHost.php', - 'Doctrine\\DBAL\\Driver\\AbstractSQLiteDriver' => $vendorDir . '/doctrine/dbal/src/Driver/AbstractSQLiteDriver.php', - 'Doctrine\\DBAL\\Driver\\AbstractSQLiteDriver\\Middleware\\EnableForeignKeys' => $vendorDir . '/doctrine/dbal/src/Driver/AbstractSQLiteDriver/Middleware/EnableForeignKeys.php', - 'Doctrine\\DBAL\\Driver\\Connection' => $vendorDir . '/doctrine/dbal/src/Driver/Connection.php', - 'Doctrine\\DBAL\\Driver\\Exception' => $vendorDir . '/doctrine/dbal/src/Driver/Exception.php', - 'Doctrine\\DBAL\\Driver\\Exception\\UnknownParameterType' => $vendorDir . '/doctrine/dbal/src/Driver/Exception/UnknownParameterType.php', - 'Doctrine\\DBAL\\Driver\\FetchUtils' => $vendorDir . '/doctrine/dbal/src/Driver/FetchUtils.php', - 'Doctrine\\DBAL\\Driver\\IBMDB2\\Connection' => $vendorDir . '/doctrine/dbal/src/Driver/IBMDB2/Connection.php', - 'Doctrine\\DBAL\\Driver\\IBMDB2\\DataSourceName' => $vendorDir . '/doctrine/dbal/src/Driver/IBMDB2/DataSourceName.php', - 'Doctrine\\DBAL\\Driver\\IBMDB2\\Driver' => $vendorDir . '/doctrine/dbal/src/Driver/IBMDB2/Driver.php', - 'Doctrine\\DBAL\\Driver\\IBMDB2\\Exception\\CannotCopyStreamToStream' => $vendorDir . '/doctrine/dbal/src/Driver/IBMDB2/Exception/CannotCopyStreamToStream.php', - 'Doctrine\\DBAL\\Driver\\IBMDB2\\Exception\\CannotCreateTemporaryFile' => $vendorDir . '/doctrine/dbal/src/Driver/IBMDB2/Exception/CannotCreateTemporaryFile.php', - 'Doctrine\\DBAL\\Driver\\IBMDB2\\Exception\\ConnectionError' => $vendorDir . '/doctrine/dbal/src/Driver/IBMDB2/Exception/ConnectionError.php', - 'Doctrine\\DBAL\\Driver\\IBMDB2\\Exception\\ConnectionFailed' => $vendorDir . '/doctrine/dbal/src/Driver/IBMDB2/Exception/ConnectionFailed.php', - 'Doctrine\\DBAL\\Driver\\IBMDB2\\Exception\\Factory' => $vendorDir . '/doctrine/dbal/src/Driver/IBMDB2/Exception/Factory.php', - 'Doctrine\\DBAL\\Driver\\IBMDB2\\Exception\\PrepareFailed' => $vendorDir . '/doctrine/dbal/src/Driver/IBMDB2/Exception/PrepareFailed.php', - 'Doctrine\\DBAL\\Driver\\IBMDB2\\Exception\\StatementError' => $vendorDir . '/doctrine/dbal/src/Driver/IBMDB2/Exception/StatementError.php', - 'Doctrine\\DBAL\\Driver\\IBMDB2\\Result' => $vendorDir . '/doctrine/dbal/src/Driver/IBMDB2/Result.php', - 'Doctrine\\DBAL\\Driver\\IBMDB2\\Statement' => $vendorDir . '/doctrine/dbal/src/Driver/IBMDB2/Statement.php', - 'Doctrine\\DBAL\\Driver\\Middleware' => $vendorDir . '/doctrine/dbal/src/Driver/Middleware.php', - 'Doctrine\\DBAL\\Driver\\Middleware\\AbstractConnectionMiddleware' => $vendorDir . '/doctrine/dbal/src/Driver/Middleware/AbstractConnectionMiddleware.php', - 'Doctrine\\DBAL\\Driver\\Middleware\\AbstractDriverMiddleware' => $vendorDir . '/doctrine/dbal/src/Driver/Middleware/AbstractDriverMiddleware.php', - 'Doctrine\\DBAL\\Driver\\Middleware\\AbstractResultMiddleware' => $vendorDir . '/doctrine/dbal/src/Driver/Middleware/AbstractResultMiddleware.php', - 'Doctrine\\DBAL\\Driver\\Middleware\\AbstractStatementMiddleware' => $vendorDir . '/doctrine/dbal/src/Driver/Middleware/AbstractStatementMiddleware.php', - 'Doctrine\\DBAL\\Driver\\Mysqli\\Connection' => $vendorDir . '/doctrine/dbal/src/Driver/Mysqli/Connection.php', - 'Doctrine\\DBAL\\Driver\\Mysqli\\Driver' => $vendorDir . '/doctrine/dbal/src/Driver/Mysqli/Driver.php', - 'Doctrine\\DBAL\\Driver\\Mysqli\\Exception\\ConnectionError' => $vendorDir . '/doctrine/dbal/src/Driver/Mysqli/Exception/ConnectionError.php', - 'Doctrine\\DBAL\\Driver\\Mysqli\\Exception\\ConnectionFailed' => $vendorDir . '/doctrine/dbal/src/Driver/Mysqli/Exception/ConnectionFailed.php', - 'Doctrine\\DBAL\\Driver\\Mysqli\\Exception\\FailedReadingStreamOffset' => $vendorDir . '/doctrine/dbal/src/Driver/Mysqli/Exception/FailedReadingStreamOffset.php', - 'Doctrine\\DBAL\\Driver\\Mysqli\\Exception\\HostRequired' => $vendorDir . '/doctrine/dbal/src/Driver/Mysqli/Exception/HostRequired.php', - 'Doctrine\\DBAL\\Driver\\Mysqli\\Exception\\InvalidCharset' => $vendorDir . '/doctrine/dbal/src/Driver/Mysqli/Exception/InvalidCharset.php', - 'Doctrine\\DBAL\\Driver\\Mysqli\\Exception\\InvalidOption' => $vendorDir . '/doctrine/dbal/src/Driver/Mysqli/Exception/InvalidOption.php', - 'Doctrine\\DBAL\\Driver\\Mysqli\\Exception\\NonStreamResourceUsedAsLargeObject' => $vendorDir . '/doctrine/dbal/src/Driver/Mysqli/Exception/NonStreamResourceUsedAsLargeObject.php', - 'Doctrine\\DBAL\\Driver\\Mysqli\\Exception\\StatementError' => $vendorDir . '/doctrine/dbal/src/Driver/Mysqli/Exception/StatementError.php', - 'Doctrine\\DBAL\\Driver\\Mysqli\\Initializer' => $vendorDir . '/doctrine/dbal/src/Driver/Mysqli/Initializer.php', - 'Doctrine\\DBAL\\Driver\\Mysqli\\Initializer\\Charset' => $vendorDir . '/doctrine/dbal/src/Driver/Mysqli/Initializer/Charset.php', - 'Doctrine\\DBAL\\Driver\\Mysqli\\Initializer\\Options' => $vendorDir . '/doctrine/dbal/src/Driver/Mysqli/Initializer/Options.php', - 'Doctrine\\DBAL\\Driver\\Mysqli\\Initializer\\Secure' => $vendorDir . '/doctrine/dbal/src/Driver/Mysqli/Initializer/Secure.php', - 'Doctrine\\DBAL\\Driver\\Mysqli\\Result' => $vendorDir . '/doctrine/dbal/src/Driver/Mysqli/Result.php', - 'Doctrine\\DBAL\\Driver\\Mysqli\\Statement' => $vendorDir . '/doctrine/dbal/src/Driver/Mysqli/Statement.php', - 'Doctrine\\DBAL\\Driver\\OCI8\\Connection' => $vendorDir . '/doctrine/dbal/src/Driver/OCI8/Connection.php', - 'Doctrine\\DBAL\\Driver\\OCI8\\ConvertPositionalToNamedPlaceholders' => $vendorDir . '/doctrine/dbal/src/Driver/OCI8/ConvertPositionalToNamedPlaceholders.php', - 'Doctrine\\DBAL\\Driver\\OCI8\\Driver' => $vendorDir . '/doctrine/dbal/src/Driver/OCI8/Driver.php', - 'Doctrine\\DBAL\\Driver\\OCI8\\Exception\\ConnectionFailed' => $vendorDir . '/doctrine/dbal/src/Driver/OCI8/Exception/ConnectionFailed.php', - 'Doctrine\\DBAL\\Driver\\OCI8\\Exception\\Error' => $vendorDir . '/doctrine/dbal/src/Driver/OCI8/Exception/Error.php', - 'Doctrine\\DBAL\\Driver\\OCI8\\Exception\\InvalidConfiguration' => $vendorDir . '/doctrine/dbal/src/Driver/OCI8/Exception/InvalidConfiguration.php', - 'Doctrine\\DBAL\\Driver\\OCI8\\Exception\\NonTerminatedStringLiteral' => $vendorDir . '/doctrine/dbal/src/Driver/OCI8/Exception/NonTerminatedStringLiteral.php', - 'Doctrine\\DBAL\\Driver\\OCI8\\Exception\\SequenceDoesNotExist' => $vendorDir . '/doctrine/dbal/src/Driver/OCI8/Exception/SequenceDoesNotExist.php', - 'Doctrine\\DBAL\\Driver\\OCI8\\Exception\\UnknownParameterIndex' => $vendorDir . '/doctrine/dbal/src/Driver/OCI8/Exception/UnknownParameterIndex.php', - 'Doctrine\\DBAL\\Driver\\OCI8\\ExecutionMode' => $vendorDir . '/doctrine/dbal/src/Driver/OCI8/ExecutionMode.php', - 'Doctrine\\DBAL\\Driver\\OCI8\\Middleware\\InitializeSession' => $vendorDir . '/doctrine/dbal/src/Driver/OCI8/Middleware/InitializeSession.php', - 'Doctrine\\DBAL\\Driver\\OCI8\\Result' => $vendorDir . '/doctrine/dbal/src/Driver/OCI8/Result.php', - 'Doctrine\\DBAL\\Driver\\OCI8\\Statement' => $vendorDir . '/doctrine/dbal/src/Driver/OCI8/Statement.php', - 'Doctrine\\DBAL\\Driver\\PDO\\Connection' => $vendorDir . '/doctrine/dbal/src/Driver/PDO/Connection.php', - 'Doctrine\\DBAL\\Driver\\PDO\\Exception' => $vendorDir . '/doctrine/dbal/src/Driver/PDO/Exception.php', - 'Doctrine\\DBAL\\Driver\\PDO\\MySQL\\Driver' => $vendorDir . '/doctrine/dbal/src/Driver/PDO/MySQL/Driver.php', - 'Doctrine\\DBAL\\Driver\\PDO\\OCI\\Driver' => $vendorDir . '/doctrine/dbal/src/Driver/PDO/OCI/Driver.php', - 'Doctrine\\DBAL\\Driver\\PDO\\PDOException' => $vendorDir . '/doctrine/dbal/src/Driver/PDO/PDOException.php', - 'Doctrine\\DBAL\\Driver\\PDO\\ParameterTypeMap' => $vendorDir . '/doctrine/dbal/src/Driver/PDO/ParameterTypeMap.php', - 'Doctrine\\DBAL\\Driver\\PDO\\PgSQL\\Driver' => $vendorDir . '/doctrine/dbal/src/Driver/PDO/PgSQL/Driver.php', - 'Doctrine\\DBAL\\Driver\\PDO\\Result' => $vendorDir . '/doctrine/dbal/src/Driver/PDO/Result.php', - 'Doctrine\\DBAL\\Driver\\PDO\\SQLSrv\\Connection' => $vendorDir . '/doctrine/dbal/src/Driver/PDO/SQLSrv/Connection.php', - 'Doctrine\\DBAL\\Driver\\PDO\\SQLSrv\\Driver' => $vendorDir . '/doctrine/dbal/src/Driver/PDO/SQLSrv/Driver.php', - 'Doctrine\\DBAL\\Driver\\PDO\\SQLSrv\\Statement' => $vendorDir . '/doctrine/dbal/src/Driver/PDO/SQLSrv/Statement.php', - 'Doctrine\\DBAL\\Driver\\PDO\\SQLite\\Driver' => $vendorDir . '/doctrine/dbal/src/Driver/PDO/SQLite/Driver.php', - 'Doctrine\\DBAL\\Driver\\PDO\\Statement' => $vendorDir . '/doctrine/dbal/src/Driver/PDO/Statement.php', - 'Doctrine\\DBAL\\Driver\\PgSQL\\Connection' => $vendorDir . '/doctrine/dbal/src/Driver/PgSQL/Connection.php', - 'Doctrine\\DBAL\\Driver\\PgSQL\\ConvertParameters' => $vendorDir . '/doctrine/dbal/src/Driver/PgSQL/ConvertParameters.php', - 'Doctrine\\DBAL\\Driver\\PgSQL\\Driver' => $vendorDir . '/doctrine/dbal/src/Driver/PgSQL/Driver.php', - 'Doctrine\\DBAL\\Driver\\PgSQL\\Exception' => $vendorDir . '/doctrine/dbal/src/Driver/PgSQL/Exception.php', - 'Doctrine\\DBAL\\Driver\\PgSQL\\Exception\\UnexpectedValue' => $vendorDir . '/doctrine/dbal/src/Driver/PgSQL/Exception/UnexpectedValue.php', - 'Doctrine\\DBAL\\Driver\\PgSQL\\Exception\\UnknownParameter' => $vendorDir . '/doctrine/dbal/src/Driver/PgSQL/Exception/UnknownParameter.php', - 'Doctrine\\DBAL\\Driver\\PgSQL\\Result' => $vendorDir . '/doctrine/dbal/src/Driver/PgSQL/Result.php', - 'Doctrine\\DBAL\\Driver\\PgSQL\\Statement' => $vendorDir . '/doctrine/dbal/src/Driver/PgSQL/Statement.php', - 'Doctrine\\DBAL\\Driver\\Result' => $vendorDir . '/doctrine/dbal/src/Driver/Result.php', - 'Doctrine\\DBAL\\Driver\\SQLSrv\\Connection' => $vendorDir . '/doctrine/dbal/src/Driver/SQLSrv/Connection.php', - 'Doctrine\\DBAL\\Driver\\SQLSrv\\Driver' => $vendorDir . '/doctrine/dbal/src/Driver/SQLSrv/Driver.php', - 'Doctrine\\DBAL\\Driver\\SQLSrv\\Exception\\Error' => $vendorDir . '/doctrine/dbal/src/Driver/SQLSrv/Exception/Error.php', - 'Doctrine\\DBAL\\Driver\\SQLSrv\\Result' => $vendorDir . '/doctrine/dbal/src/Driver/SQLSrv/Result.php', - 'Doctrine\\DBAL\\Driver\\SQLSrv\\Statement' => $vendorDir . '/doctrine/dbal/src/Driver/SQLSrv/Statement.php', - 'Doctrine\\DBAL\\Driver\\SQLite3\\Connection' => $vendorDir . '/doctrine/dbal/src/Driver/SQLite3/Connection.php', - 'Doctrine\\DBAL\\Driver\\SQLite3\\Driver' => $vendorDir . '/doctrine/dbal/src/Driver/SQLite3/Driver.php', - 'Doctrine\\DBAL\\Driver\\SQLite3\\Exception' => $vendorDir . '/doctrine/dbal/src/Driver/SQLite3/Exception.php', - 'Doctrine\\DBAL\\Driver\\SQLite3\\Result' => $vendorDir . '/doctrine/dbal/src/Driver/SQLite3/Result.php', - 'Doctrine\\DBAL\\Driver\\SQLite3\\Statement' => $vendorDir . '/doctrine/dbal/src/Driver/SQLite3/Statement.php', - 'Doctrine\\DBAL\\Driver\\ServerInfoAwareConnection' => $vendorDir . '/doctrine/dbal/src/Driver/ServerInfoAwareConnection.php', - 'Doctrine\\DBAL\\Driver\\Statement' => $vendorDir . '/doctrine/dbal/src/Driver/Statement.php', - 'Doctrine\\DBAL\\Event\\ConnectionEventArgs' => $vendorDir . '/doctrine/dbal/src/Event/ConnectionEventArgs.php', - 'Doctrine\\DBAL\\Event\\Listeners\\OracleSessionInit' => $vendorDir . '/doctrine/dbal/src/Event/Listeners/OracleSessionInit.php', - 'Doctrine\\DBAL\\Event\\Listeners\\SQLSessionInit' => $vendorDir . '/doctrine/dbal/src/Event/Listeners/SQLSessionInit.php', - 'Doctrine\\DBAL\\Event\\Listeners\\SQLiteSessionInit' => $vendorDir . '/doctrine/dbal/src/Event/Listeners/SQLiteSessionInit.php', - 'Doctrine\\DBAL\\Event\\SchemaAlterTableAddColumnEventArgs' => $vendorDir . '/doctrine/dbal/src/Event/SchemaAlterTableAddColumnEventArgs.php', - 'Doctrine\\DBAL\\Event\\SchemaAlterTableChangeColumnEventArgs' => $vendorDir . '/doctrine/dbal/src/Event/SchemaAlterTableChangeColumnEventArgs.php', - 'Doctrine\\DBAL\\Event\\SchemaAlterTableEventArgs' => $vendorDir . '/doctrine/dbal/src/Event/SchemaAlterTableEventArgs.php', - 'Doctrine\\DBAL\\Event\\SchemaAlterTableRemoveColumnEventArgs' => $vendorDir . '/doctrine/dbal/src/Event/SchemaAlterTableRemoveColumnEventArgs.php', - 'Doctrine\\DBAL\\Event\\SchemaAlterTableRenameColumnEventArgs' => $vendorDir . '/doctrine/dbal/src/Event/SchemaAlterTableRenameColumnEventArgs.php', - 'Doctrine\\DBAL\\Event\\SchemaColumnDefinitionEventArgs' => $vendorDir . '/doctrine/dbal/src/Event/SchemaColumnDefinitionEventArgs.php', - 'Doctrine\\DBAL\\Event\\SchemaCreateTableColumnEventArgs' => $vendorDir . '/doctrine/dbal/src/Event/SchemaCreateTableColumnEventArgs.php', - 'Doctrine\\DBAL\\Event\\SchemaCreateTableEventArgs' => $vendorDir . '/doctrine/dbal/src/Event/SchemaCreateTableEventArgs.php', - 'Doctrine\\DBAL\\Event\\SchemaDropTableEventArgs' => $vendorDir . '/doctrine/dbal/src/Event/SchemaDropTableEventArgs.php', - 'Doctrine\\DBAL\\Event\\SchemaEventArgs' => $vendorDir . '/doctrine/dbal/src/Event/SchemaEventArgs.php', - 'Doctrine\\DBAL\\Event\\SchemaIndexDefinitionEventArgs' => $vendorDir . '/doctrine/dbal/src/Event/SchemaIndexDefinitionEventArgs.php', - 'Doctrine\\DBAL\\Event\\TransactionBeginEventArgs' => $vendorDir . '/doctrine/dbal/src/Event/TransactionBeginEventArgs.php', - 'Doctrine\\DBAL\\Event\\TransactionCommitEventArgs' => $vendorDir . '/doctrine/dbal/src/Event/TransactionCommitEventArgs.php', - 'Doctrine\\DBAL\\Event\\TransactionEventArgs' => $vendorDir . '/doctrine/dbal/src/Event/TransactionEventArgs.php', - 'Doctrine\\DBAL\\Event\\TransactionRollBackEventArgs' => $vendorDir . '/doctrine/dbal/src/Event/TransactionRollBackEventArgs.php', - 'Doctrine\\DBAL\\Events' => $vendorDir . '/doctrine/dbal/src/Events.php', - 'Doctrine\\DBAL\\Exception' => $vendorDir . '/doctrine/dbal/src/Exception.php', - 'Doctrine\\DBAL\\Exception\\ConnectionException' => $vendorDir . '/doctrine/dbal/src/Exception/ConnectionException.php', - 'Doctrine\\DBAL\\Exception\\ConnectionLost' => $vendorDir . '/doctrine/dbal/src/Exception/ConnectionLost.php', - 'Doctrine\\DBAL\\Exception\\ConstraintViolationException' => $vendorDir . '/doctrine/dbal/src/Exception/ConstraintViolationException.php', - 'Doctrine\\DBAL\\Exception\\DatabaseDoesNotExist' => $vendorDir . '/doctrine/dbal/src/Exception/DatabaseDoesNotExist.php', - 'Doctrine\\DBAL\\Exception\\DatabaseObjectExistsException' => $vendorDir . '/doctrine/dbal/src/Exception/DatabaseObjectExistsException.php', - 'Doctrine\\DBAL\\Exception\\DatabaseObjectNotFoundException' => $vendorDir . '/doctrine/dbal/src/Exception/DatabaseObjectNotFoundException.php', - 'Doctrine\\DBAL\\Exception\\DatabaseRequired' => $vendorDir . '/doctrine/dbal/src/Exception/DatabaseRequired.php', - 'Doctrine\\DBAL\\Exception\\DeadlockException' => $vendorDir . '/doctrine/dbal/src/Exception/DeadlockException.php', - 'Doctrine\\DBAL\\Exception\\DriverException' => $vendorDir . '/doctrine/dbal/src/Exception/DriverException.php', - 'Doctrine\\DBAL\\Exception\\ForeignKeyConstraintViolationException' => $vendorDir . '/doctrine/dbal/src/Exception/ForeignKeyConstraintViolationException.php', - 'Doctrine\\DBAL\\Exception\\InvalidArgumentException' => $vendorDir . '/doctrine/dbal/src/Exception/InvalidArgumentException.php', - 'Doctrine\\DBAL\\Exception\\InvalidFieldNameException' => $vendorDir . '/doctrine/dbal/src/Exception/InvalidFieldNameException.php', - 'Doctrine\\DBAL\\Exception\\InvalidLockMode' => $vendorDir . '/doctrine/dbal/src/Exception/InvalidLockMode.php', - 'Doctrine\\DBAL\\Exception\\LockWaitTimeoutException' => $vendorDir . '/doctrine/dbal/src/Exception/LockWaitTimeoutException.php', - 'Doctrine\\DBAL\\Exception\\MalformedDsnException' => $vendorDir . '/doctrine/dbal/src/Exception/MalformedDsnException.php', - 'Doctrine\\DBAL\\Exception\\NoKeyValue' => $vendorDir . '/doctrine/dbal/src/Exception/NoKeyValue.php', - 'Doctrine\\DBAL\\Exception\\NonUniqueFieldNameException' => $vendorDir . '/doctrine/dbal/src/Exception/NonUniqueFieldNameException.php', - 'Doctrine\\DBAL\\Exception\\NotNullConstraintViolationException' => $vendorDir . '/doctrine/dbal/src/Exception/NotNullConstraintViolationException.php', - 'Doctrine\\DBAL\\Exception\\ReadOnlyException' => $vendorDir . '/doctrine/dbal/src/Exception/ReadOnlyException.php', - 'Doctrine\\DBAL\\Exception\\RetryableException' => $vendorDir . '/doctrine/dbal/src/Exception/RetryableException.php', - 'Doctrine\\DBAL\\Exception\\SchemaDoesNotExist' => $vendorDir . '/doctrine/dbal/src/Exception/SchemaDoesNotExist.php', - 'Doctrine\\DBAL\\Exception\\ServerException' => $vendorDir . '/doctrine/dbal/src/Exception/ServerException.php', - 'Doctrine\\DBAL\\Exception\\SyntaxErrorException' => $vendorDir . '/doctrine/dbal/src/Exception/SyntaxErrorException.php', - 'Doctrine\\DBAL\\Exception\\TableExistsException' => $vendorDir . '/doctrine/dbal/src/Exception/TableExistsException.php', - 'Doctrine\\DBAL\\Exception\\TableNotFoundException' => $vendorDir . '/doctrine/dbal/src/Exception/TableNotFoundException.php', - 'Doctrine\\DBAL\\Exception\\UniqueConstraintViolationException' => $vendorDir . '/doctrine/dbal/src/Exception/UniqueConstraintViolationException.php', - 'Doctrine\\DBAL\\ExpandArrayParameters' => $vendorDir . '/doctrine/dbal/src/ExpandArrayParameters.php', - 'Doctrine\\DBAL\\FetchMode' => $vendorDir . '/doctrine/dbal/src/FetchMode.php', - 'Doctrine\\DBAL\\Id\\TableGenerator' => $vendorDir . '/doctrine/dbal/src/Id/TableGenerator.php', - 'Doctrine\\DBAL\\Id\\TableGeneratorSchemaVisitor' => $vendorDir . '/doctrine/dbal/src/Id/TableGeneratorSchemaVisitor.php', - 'Doctrine\\DBAL\\LockMode' => $vendorDir . '/doctrine/dbal/src/LockMode.php', - 'Doctrine\\DBAL\\Logging\\Connection' => $vendorDir . '/doctrine/dbal/src/Logging/Connection.php', - 'Doctrine\\DBAL\\Logging\\DebugStack' => $vendorDir . '/doctrine/dbal/src/Logging/DebugStack.php', - 'Doctrine\\DBAL\\Logging\\Driver' => $vendorDir . '/doctrine/dbal/src/Logging/Driver.php', - 'Doctrine\\DBAL\\Logging\\LoggerChain' => $vendorDir . '/doctrine/dbal/src/Logging/LoggerChain.php', - 'Doctrine\\DBAL\\Logging\\Middleware' => $vendorDir . '/doctrine/dbal/src/Logging/Middleware.php', - 'Doctrine\\DBAL\\Logging\\SQLLogger' => $vendorDir . '/doctrine/dbal/src/Logging/SQLLogger.php', - 'Doctrine\\DBAL\\Logging\\Statement' => $vendorDir . '/doctrine/dbal/src/Logging/Statement.php', - 'Doctrine\\DBAL\\ParameterType' => $vendorDir . '/doctrine/dbal/src/ParameterType.php', - 'Doctrine\\DBAL\\Platforms\\AbstractMySQLPlatform' => $vendorDir . '/doctrine/dbal/src/Platforms/AbstractMySQLPlatform.php', - 'Doctrine\\DBAL\\Platforms\\AbstractPlatform' => $vendorDir . '/doctrine/dbal/src/Platforms/AbstractPlatform.php', - 'Doctrine\\DBAL\\Platforms\\DB2111Platform' => $vendorDir . '/doctrine/dbal/src/Platforms/DB2111Platform.php', - 'Doctrine\\DBAL\\Platforms\\DB2Platform' => $vendorDir . '/doctrine/dbal/src/Platforms/DB2Platform.php', - 'Doctrine\\DBAL\\Platforms\\DateIntervalUnit' => $vendorDir . '/doctrine/dbal/src/Platforms/DateIntervalUnit.php', - 'Doctrine\\DBAL\\Platforms\\Keywords\\DB2Keywords' => $vendorDir . '/doctrine/dbal/src/Platforms/Keywords/DB2Keywords.php', - 'Doctrine\\DBAL\\Platforms\\Keywords\\KeywordList' => $vendorDir . '/doctrine/dbal/src/Platforms/Keywords/KeywordList.php', - 'Doctrine\\DBAL\\Platforms\\Keywords\\MariaDBKeywords' => $vendorDir . '/doctrine/dbal/src/Platforms/Keywords/MariaDBKeywords.php', - 'Doctrine\\DBAL\\Platforms\\Keywords\\MariaDb102Keywords' => $vendorDir . '/doctrine/dbal/src/Platforms/Keywords/MariaDb102Keywords.php', - 'Doctrine\\DBAL\\Platforms\\Keywords\\MySQL57Keywords' => $vendorDir . '/doctrine/dbal/src/Platforms/Keywords/MySQL57Keywords.php', - 'Doctrine\\DBAL\\Platforms\\Keywords\\MySQL80Keywords' => $vendorDir . '/doctrine/dbal/src/Platforms/Keywords/MySQL80Keywords.php', - 'Doctrine\\DBAL\\Platforms\\Keywords\\MySQL84Keywords' => $vendorDir . '/doctrine/dbal/src/Platforms/Keywords/MySQL84Keywords.php', - 'Doctrine\\DBAL\\Platforms\\Keywords\\MySQLKeywords' => $vendorDir . '/doctrine/dbal/src/Platforms/Keywords/MySQLKeywords.php', - 'Doctrine\\DBAL\\Platforms\\Keywords\\OracleKeywords' => $vendorDir . '/doctrine/dbal/src/Platforms/Keywords/OracleKeywords.php', - 'Doctrine\\DBAL\\Platforms\\Keywords\\PostgreSQL100Keywords' => $vendorDir . '/doctrine/dbal/src/Platforms/Keywords/PostgreSQL100Keywords.php', - 'Doctrine\\DBAL\\Platforms\\Keywords\\PostgreSQL94Keywords' => $vendorDir . '/doctrine/dbal/src/Platforms/Keywords/PostgreSQL94Keywords.php', - 'Doctrine\\DBAL\\Platforms\\Keywords\\PostgreSQLKeywords' => $vendorDir . '/doctrine/dbal/src/Platforms/Keywords/PostgreSQLKeywords.php', - 'Doctrine\\DBAL\\Platforms\\Keywords\\ReservedKeywordsValidator' => $vendorDir . '/doctrine/dbal/src/Platforms/Keywords/ReservedKeywordsValidator.php', - 'Doctrine\\DBAL\\Platforms\\Keywords\\SQLServer2012Keywords' => $vendorDir . '/doctrine/dbal/src/Platforms/Keywords/SQLServer2012Keywords.php', - 'Doctrine\\DBAL\\Platforms\\Keywords\\SQLServerKeywords' => $vendorDir . '/doctrine/dbal/src/Platforms/Keywords/SQLServerKeywords.php', - 'Doctrine\\DBAL\\Platforms\\Keywords\\SQLiteKeywords' => $vendorDir . '/doctrine/dbal/src/Platforms/Keywords/SQLiteKeywords.php', - 'Doctrine\\DBAL\\Platforms\\MariaDBPlatform' => $vendorDir . '/doctrine/dbal/src/Platforms/MariaDBPlatform.php', - 'Doctrine\\DBAL\\Platforms\\MariaDb1010Platform' => $vendorDir . '/doctrine/dbal/src/Platforms/MariaDb1010Platform.php', - 'Doctrine\\DBAL\\Platforms\\MariaDb1027Platform' => $vendorDir . '/doctrine/dbal/src/Platforms/MariaDb1027Platform.php', - 'Doctrine\\DBAL\\Platforms\\MariaDb1043Platform' => $vendorDir . '/doctrine/dbal/src/Platforms/MariaDb1043Platform.php', - 'Doctrine\\DBAL\\Platforms\\MariaDb1052Platform' => $vendorDir . '/doctrine/dbal/src/Platforms/MariaDb1052Platform.php', - 'Doctrine\\DBAL\\Platforms\\MariaDb1060Platform' => $vendorDir . '/doctrine/dbal/src/Platforms/MariaDb1060Platform.php', - 'Doctrine\\DBAL\\Platforms\\MySQL57Platform' => $vendorDir . '/doctrine/dbal/src/Platforms/MySQL57Platform.php', - 'Doctrine\\DBAL\\Platforms\\MySQL80Platform' => $vendorDir . '/doctrine/dbal/src/Platforms/MySQL80Platform.php', - 'Doctrine\\DBAL\\Platforms\\MySQL84Platform' => $vendorDir . '/doctrine/dbal/src/Platforms/MySQL84Platform.php', - 'Doctrine\\DBAL\\Platforms\\MySQLPlatform' => $vendorDir . '/doctrine/dbal/src/Platforms/MySQLPlatform.php', - 'Doctrine\\DBAL\\Platforms\\MySQL\\CollationMetadataProvider' => $vendorDir . '/doctrine/dbal/src/Platforms/MySQL/CollationMetadataProvider.php', - 'Doctrine\\DBAL\\Platforms\\MySQL\\CollationMetadataProvider\\CachingCollationMetadataProvider' => $vendorDir . '/doctrine/dbal/src/Platforms/MySQL/CollationMetadataProvider/CachingCollationMetadataProvider.php', - 'Doctrine\\DBAL\\Platforms\\MySQL\\CollationMetadataProvider\\ConnectionCollationMetadataProvider' => $vendorDir . '/doctrine/dbal/src/Platforms/MySQL/CollationMetadataProvider/ConnectionCollationMetadataProvider.php', - 'Doctrine\\DBAL\\Platforms\\MySQL\\Comparator' => $vendorDir . '/doctrine/dbal/src/Platforms/MySQL/Comparator.php', - 'Doctrine\\DBAL\\Platforms\\OraclePlatform' => $vendorDir . '/doctrine/dbal/src/Platforms/OraclePlatform.php', - 'Doctrine\\DBAL\\Platforms\\PostgreSQL100Platform' => $vendorDir . '/doctrine/dbal/src/Platforms/PostgreSQL100Platform.php', - 'Doctrine\\DBAL\\Platforms\\PostgreSQL120Platform' => $vendorDir . '/doctrine/dbal/src/Platforms/PostgreSQL120Platform.php', - 'Doctrine\\DBAL\\Platforms\\PostgreSQL94Platform' => $vendorDir . '/doctrine/dbal/src/Platforms/PostgreSQL94Platform.php', - 'Doctrine\\DBAL\\Platforms\\PostgreSQLPlatform' => $vendorDir . '/doctrine/dbal/src/Platforms/PostgreSQLPlatform.php', - 'Doctrine\\DBAL\\Platforms\\SQLServer2012Platform' => $vendorDir . '/doctrine/dbal/src/Platforms/SQLServer2012Platform.php', - 'Doctrine\\DBAL\\Platforms\\SQLServerPlatform' => $vendorDir . '/doctrine/dbal/src/Platforms/SQLServerPlatform.php', - 'Doctrine\\DBAL\\Platforms\\SQLServer\\Comparator' => $vendorDir . '/doctrine/dbal/src/Platforms/SQLServer/Comparator.php', - 'Doctrine\\DBAL\\Platforms\\SQLServer\\SQL\\Builder\\SQLServerSelectSQLBuilder' => $vendorDir . '/doctrine/dbal/src/Platforms/SQLServer/SQL/Builder/SQLServerSelectSQLBuilder.php', - 'Doctrine\\DBAL\\Platforms\\SQLite\\Comparator' => $vendorDir . '/doctrine/dbal/src/Platforms/SQLite/Comparator.php', - 'Doctrine\\DBAL\\Platforms\\SqlitePlatform' => $vendorDir . '/doctrine/dbal/src/Platforms/SqlitePlatform.php', - 'Doctrine\\DBAL\\Platforms\\TrimMode' => $vendorDir . '/doctrine/dbal/src/Platforms/TrimMode.php', - 'Doctrine\\DBAL\\Portability\\Connection' => $vendorDir . '/doctrine/dbal/src/Portability/Connection.php', - 'Doctrine\\DBAL\\Portability\\Converter' => $vendorDir . '/doctrine/dbal/src/Portability/Converter.php', - 'Doctrine\\DBAL\\Portability\\Driver' => $vendorDir . '/doctrine/dbal/src/Portability/Driver.php', - 'Doctrine\\DBAL\\Portability\\Middleware' => $vendorDir . '/doctrine/dbal/src/Portability/Middleware.php', - 'Doctrine\\DBAL\\Portability\\OptimizeFlags' => $vendorDir . '/doctrine/dbal/src/Portability/OptimizeFlags.php', - 'Doctrine\\DBAL\\Portability\\Result' => $vendorDir . '/doctrine/dbal/src/Portability/Result.php', - 'Doctrine\\DBAL\\Portability\\Statement' => $vendorDir . '/doctrine/dbal/src/Portability/Statement.php', - 'Doctrine\\DBAL\\Query' => $vendorDir . '/doctrine/dbal/src/Query.php', - 'Doctrine\\DBAL\\Query\\Expression\\CompositeExpression' => $vendorDir . '/doctrine/dbal/src/Query/Expression/CompositeExpression.php', - 'Doctrine\\DBAL\\Query\\Expression\\ExpressionBuilder' => $vendorDir . '/doctrine/dbal/src/Query/Expression/ExpressionBuilder.php', - 'Doctrine\\DBAL\\Query\\ForUpdate' => $vendorDir . '/doctrine/dbal/src/Query/ForUpdate.php', - 'Doctrine\\DBAL\\Query\\ForUpdate\\ConflictResolutionMode' => $vendorDir . '/doctrine/dbal/src/Query/ForUpdate/ConflictResolutionMode.php', - 'Doctrine\\DBAL\\Query\\Limit' => $vendorDir . '/doctrine/dbal/src/Query/Limit.php', - 'Doctrine\\DBAL\\Query\\QueryBuilder' => $vendorDir . '/doctrine/dbal/src/Query/QueryBuilder.php', - 'Doctrine\\DBAL\\Query\\QueryException' => $vendorDir . '/doctrine/dbal/src/Query/QueryException.php', - 'Doctrine\\DBAL\\Query\\SelectQuery' => $vendorDir . '/doctrine/dbal/src/Query/SelectQuery.php', - 'Doctrine\\DBAL\\Result' => $vendorDir . '/doctrine/dbal/src/Result.php', - 'Doctrine\\DBAL\\SQL\\Builder\\CreateSchemaObjectsSQLBuilder' => $vendorDir . '/doctrine/dbal/src/SQL/Builder/CreateSchemaObjectsSQLBuilder.php', - 'Doctrine\\DBAL\\SQL\\Builder\\DefaultSelectSQLBuilder' => $vendorDir . '/doctrine/dbal/src/SQL/Builder/DefaultSelectSQLBuilder.php', - 'Doctrine\\DBAL\\SQL\\Builder\\DropSchemaObjectsSQLBuilder' => $vendorDir . '/doctrine/dbal/src/SQL/Builder/DropSchemaObjectsSQLBuilder.php', - 'Doctrine\\DBAL\\SQL\\Builder\\SelectSQLBuilder' => $vendorDir . '/doctrine/dbal/src/SQL/Builder/SelectSQLBuilder.php', - 'Doctrine\\DBAL\\SQL\\Parser' => $vendorDir . '/doctrine/dbal/src/SQL/Parser.php', - 'Doctrine\\DBAL\\SQL\\Parser\\Exception' => $vendorDir . '/doctrine/dbal/src/SQL/Parser/Exception.php', - 'Doctrine\\DBAL\\SQL\\Parser\\Exception\\RegularExpressionError' => $vendorDir . '/doctrine/dbal/src/SQL/Parser/Exception/RegularExpressionError.php', - 'Doctrine\\DBAL\\SQL\\Parser\\Visitor' => $vendorDir . '/doctrine/dbal/src/SQL/Parser/Visitor.php', - 'Doctrine\\DBAL\\Schema\\AbstractAsset' => $vendorDir . '/doctrine/dbal/src/Schema/AbstractAsset.php', - 'Doctrine\\DBAL\\Schema\\AbstractSchemaManager' => $vendorDir . '/doctrine/dbal/src/Schema/AbstractSchemaManager.php', - 'Doctrine\\DBAL\\Schema\\Column' => $vendorDir . '/doctrine/dbal/src/Schema/Column.php', - 'Doctrine\\DBAL\\Schema\\ColumnDiff' => $vendorDir . '/doctrine/dbal/src/Schema/ColumnDiff.php', - 'Doctrine\\DBAL\\Schema\\Comparator' => $vendorDir . '/doctrine/dbal/src/Schema/Comparator.php', - 'Doctrine\\DBAL\\Schema\\Constraint' => $vendorDir . '/doctrine/dbal/src/Schema/Constraint.php', - 'Doctrine\\DBAL\\Schema\\DB2SchemaManager' => $vendorDir . '/doctrine/dbal/src/Schema/DB2SchemaManager.php', - 'Doctrine\\DBAL\\Schema\\DefaultSchemaManagerFactory' => $vendorDir . '/doctrine/dbal/src/Schema/DefaultSchemaManagerFactory.php', - 'Doctrine\\DBAL\\Schema\\Exception\\ColumnAlreadyExists' => $vendorDir . '/doctrine/dbal/src/Schema/Exception/ColumnAlreadyExists.php', - 'Doctrine\\DBAL\\Schema\\Exception\\ColumnDoesNotExist' => $vendorDir . '/doctrine/dbal/src/Schema/Exception/ColumnDoesNotExist.php', - 'Doctrine\\DBAL\\Schema\\Exception\\ForeignKeyDoesNotExist' => $vendorDir . '/doctrine/dbal/src/Schema/Exception/ForeignKeyDoesNotExist.php', - 'Doctrine\\DBAL\\Schema\\Exception\\IndexAlreadyExists' => $vendorDir . '/doctrine/dbal/src/Schema/Exception/IndexAlreadyExists.php', - 'Doctrine\\DBAL\\Schema\\Exception\\IndexDoesNotExist' => $vendorDir . '/doctrine/dbal/src/Schema/Exception/IndexDoesNotExist.php', - 'Doctrine\\DBAL\\Schema\\Exception\\IndexNameInvalid' => $vendorDir . '/doctrine/dbal/src/Schema/Exception/IndexNameInvalid.php', - 'Doctrine\\DBAL\\Schema\\Exception\\InvalidTableName' => $vendorDir . '/doctrine/dbal/src/Schema/Exception/InvalidTableName.php', - 'Doctrine\\DBAL\\Schema\\Exception\\NamedForeignKeyRequired' => $vendorDir . '/doctrine/dbal/src/Schema/Exception/NamedForeignKeyRequired.php', - 'Doctrine\\DBAL\\Schema\\Exception\\NamespaceAlreadyExists' => $vendorDir . '/doctrine/dbal/src/Schema/Exception/NamespaceAlreadyExists.php', - 'Doctrine\\DBAL\\Schema\\Exception\\SequenceAlreadyExists' => $vendorDir . '/doctrine/dbal/src/Schema/Exception/SequenceAlreadyExists.php', - 'Doctrine\\DBAL\\Schema\\Exception\\SequenceDoesNotExist' => $vendorDir . '/doctrine/dbal/src/Schema/Exception/SequenceDoesNotExist.php', - 'Doctrine\\DBAL\\Schema\\Exception\\TableAlreadyExists' => $vendorDir . '/doctrine/dbal/src/Schema/Exception/TableAlreadyExists.php', - 'Doctrine\\DBAL\\Schema\\Exception\\TableDoesNotExist' => $vendorDir . '/doctrine/dbal/src/Schema/Exception/TableDoesNotExist.php', - 'Doctrine\\DBAL\\Schema\\Exception\\UniqueConstraintDoesNotExist' => $vendorDir . '/doctrine/dbal/src/Schema/Exception/UniqueConstraintDoesNotExist.php', - 'Doctrine\\DBAL\\Schema\\Exception\\UnknownColumnOption' => $vendorDir . '/doctrine/dbal/src/Schema/Exception/UnknownColumnOption.php', - 'Doctrine\\DBAL\\Schema\\ForeignKeyConstraint' => $vendorDir . '/doctrine/dbal/src/Schema/ForeignKeyConstraint.php', - 'Doctrine\\DBAL\\Schema\\Identifier' => $vendorDir . '/doctrine/dbal/src/Schema/Identifier.php', - 'Doctrine\\DBAL\\Schema\\Index' => $vendorDir . '/doctrine/dbal/src/Schema/Index.php', - 'Doctrine\\DBAL\\Schema\\LegacySchemaManagerFactory' => $vendorDir . '/doctrine/dbal/src/Schema/LegacySchemaManagerFactory.php', - 'Doctrine\\DBAL\\Schema\\MySQLSchemaManager' => $vendorDir . '/doctrine/dbal/src/Schema/MySQLSchemaManager.php', - 'Doctrine\\DBAL\\Schema\\OracleSchemaManager' => $vendorDir . '/doctrine/dbal/src/Schema/OracleSchemaManager.php', - 'Doctrine\\DBAL\\Schema\\PostgreSQLSchemaManager' => $vendorDir . '/doctrine/dbal/src/Schema/PostgreSQLSchemaManager.php', - 'Doctrine\\DBAL\\Schema\\SQLServerSchemaManager' => $vendorDir . '/doctrine/dbal/src/Schema/SQLServerSchemaManager.php', - 'Doctrine\\DBAL\\Schema\\Schema' => $vendorDir . '/doctrine/dbal/src/Schema/Schema.php', - 'Doctrine\\DBAL\\Schema\\SchemaConfig' => $vendorDir . '/doctrine/dbal/src/Schema/SchemaConfig.php', - 'Doctrine\\DBAL\\Schema\\SchemaDiff' => $vendorDir . '/doctrine/dbal/src/Schema/SchemaDiff.php', - 'Doctrine\\DBAL\\Schema\\SchemaException' => $vendorDir . '/doctrine/dbal/src/Schema/SchemaException.php', - 'Doctrine\\DBAL\\Schema\\SchemaManagerFactory' => $vendorDir . '/doctrine/dbal/src/Schema/SchemaManagerFactory.php', - 'Doctrine\\DBAL\\Schema\\Sequence' => $vendorDir . '/doctrine/dbal/src/Schema/Sequence.php', - 'Doctrine\\DBAL\\Schema\\SqliteSchemaManager' => $vendorDir . '/doctrine/dbal/src/Schema/SqliteSchemaManager.php', - 'Doctrine\\DBAL\\Schema\\Table' => $vendorDir . '/doctrine/dbal/src/Schema/Table.php', - 'Doctrine\\DBAL\\Schema\\TableDiff' => $vendorDir . '/doctrine/dbal/src/Schema/TableDiff.php', - 'Doctrine\\DBAL\\Schema\\UniqueConstraint' => $vendorDir . '/doctrine/dbal/src/Schema/UniqueConstraint.php', - 'Doctrine\\DBAL\\Schema\\View' => $vendorDir . '/doctrine/dbal/src/Schema/View.php', - 'Doctrine\\DBAL\\Schema\\Visitor\\AbstractVisitor' => $vendorDir . '/doctrine/dbal/src/Schema/Visitor/AbstractVisitor.php', - 'Doctrine\\DBAL\\Schema\\Visitor\\CreateSchemaSqlCollector' => $vendorDir . '/doctrine/dbal/src/Schema/Visitor/CreateSchemaSqlCollector.php', - 'Doctrine\\DBAL\\Schema\\Visitor\\DropSchemaSqlCollector' => $vendorDir . '/doctrine/dbal/src/Schema/Visitor/DropSchemaSqlCollector.php', - 'Doctrine\\DBAL\\Schema\\Visitor\\Graphviz' => $vendorDir . '/doctrine/dbal/src/Schema/Visitor/Graphviz.php', - 'Doctrine\\DBAL\\Schema\\Visitor\\NamespaceVisitor' => $vendorDir . '/doctrine/dbal/src/Schema/Visitor/NamespaceVisitor.php', - 'Doctrine\\DBAL\\Schema\\Visitor\\RemoveNamespacedAssets' => $vendorDir . '/doctrine/dbal/src/Schema/Visitor/RemoveNamespacedAssets.php', - 'Doctrine\\DBAL\\Schema\\Visitor\\Visitor' => $vendorDir . '/doctrine/dbal/src/Schema/Visitor/Visitor.php', - 'Doctrine\\DBAL\\Statement' => $vendorDir . '/doctrine/dbal/src/Statement.php', - 'Doctrine\\DBAL\\Tools\\Console\\Command\\CommandCompatibility' => $vendorDir . '/doctrine/dbal/src/Tools/Console/Command/CommandCompatibility.php', - 'Doctrine\\DBAL\\Tools\\Console\\Command\\ReservedWordsCommand' => $vendorDir . '/doctrine/dbal/src/Tools/Console/Command/ReservedWordsCommand.php', - 'Doctrine\\DBAL\\Tools\\Console\\Command\\RunSqlCommand' => $vendorDir . '/doctrine/dbal/src/Tools/Console/Command/RunSqlCommand.php', - 'Doctrine\\DBAL\\Tools\\Console\\ConnectionNotFound' => $vendorDir . '/doctrine/dbal/src/Tools/Console/ConnectionNotFound.php', - 'Doctrine\\DBAL\\Tools\\Console\\ConnectionProvider' => $vendorDir . '/doctrine/dbal/src/Tools/Console/ConnectionProvider.php', - 'Doctrine\\DBAL\\Tools\\Console\\ConnectionProvider\\SingleConnectionProvider' => $vendorDir . '/doctrine/dbal/src/Tools/Console/ConnectionProvider/SingleConnectionProvider.php', - 'Doctrine\\DBAL\\Tools\\Console\\ConsoleRunner' => $vendorDir . '/doctrine/dbal/src/Tools/Console/ConsoleRunner.php', - 'Doctrine\\DBAL\\Tools\\DsnParser' => $vendorDir . '/doctrine/dbal/src/Tools/DsnParser.php', - 'Doctrine\\DBAL\\TransactionIsolationLevel' => $vendorDir . '/doctrine/dbal/src/TransactionIsolationLevel.php', - 'Doctrine\\DBAL\\Types\\ArrayType' => $vendorDir . '/doctrine/dbal/src/Types/ArrayType.php', - 'Doctrine\\DBAL\\Types\\AsciiStringType' => $vendorDir . '/doctrine/dbal/src/Types/AsciiStringType.php', - 'Doctrine\\DBAL\\Types\\BigIntType' => $vendorDir . '/doctrine/dbal/src/Types/BigIntType.php', - 'Doctrine\\DBAL\\Types\\BinaryType' => $vendorDir . '/doctrine/dbal/src/Types/BinaryType.php', - 'Doctrine\\DBAL\\Types\\BlobType' => $vendorDir . '/doctrine/dbal/src/Types/BlobType.php', - 'Doctrine\\DBAL\\Types\\BooleanType' => $vendorDir . '/doctrine/dbal/src/Types/BooleanType.php', - 'Doctrine\\DBAL\\Types\\ConversionException' => $vendorDir . '/doctrine/dbal/src/Types/ConversionException.php', - 'Doctrine\\DBAL\\Types\\DateImmutableType' => $vendorDir . '/doctrine/dbal/src/Types/DateImmutableType.php', - 'Doctrine\\DBAL\\Types\\DateIntervalType' => $vendorDir . '/doctrine/dbal/src/Types/DateIntervalType.php', - 'Doctrine\\DBAL\\Types\\DateTimeImmutableType' => $vendorDir . '/doctrine/dbal/src/Types/DateTimeImmutableType.php', - 'Doctrine\\DBAL\\Types\\DateTimeType' => $vendorDir . '/doctrine/dbal/src/Types/DateTimeType.php', - 'Doctrine\\DBAL\\Types\\DateTimeTzImmutableType' => $vendorDir . '/doctrine/dbal/src/Types/DateTimeTzImmutableType.php', - 'Doctrine\\DBAL\\Types\\DateTimeTzType' => $vendorDir . '/doctrine/dbal/src/Types/DateTimeTzType.php', - 'Doctrine\\DBAL\\Types\\DateType' => $vendorDir . '/doctrine/dbal/src/Types/DateType.php', - 'Doctrine\\DBAL\\Types\\DecimalType' => $vendorDir . '/doctrine/dbal/src/Types/DecimalType.php', - 'Doctrine\\DBAL\\Types\\FloatType' => $vendorDir . '/doctrine/dbal/src/Types/FloatType.php', - 'Doctrine\\DBAL\\Types\\GuidType' => $vendorDir . '/doctrine/dbal/src/Types/GuidType.php', - 'Doctrine\\DBAL\\Types\\IntegerType' => $vendorDir . '/doctrine/dbal/src/Types/IntegerType.php', - 'Doctrine\\DBAL\\Types\\JsonType' => $vendorDir . '/doctrine/dbal/src/Types/JsonType.php', - 'Doctrine\\DBAL\\Types\\ObjectType' => $vendorDir . '/doctrine/dbal/src/Types/ObjectType.php', - 'Doctrine\\DBAL\\Types\\PhpDateTimeMappingType' => $vendorDir . '/doctrine/dbal/src/Types/PhpDateTimeMappingType.php', - 'Doctrine\\DBAL\\Types\\PhpIntegerMappingType' => $vendorDir . '/doctrine/dbal/src/Types/PhpIntegerMappingType.php', - 'Doctrine\\DBAL\\Types\\SimpleArrayType' => $vendorDir . '/doctrine/dbal/src/Types/SimpleArrayType.php', - 'Doctrine\\DBAL\\Types\\SmallIntType' => $vendorDir . '/doctrine/dbal/src/Types/SmallIntType.php', - 'Doctrine\\DBAL\\Types\\StringType' => $vendorDir . '/doctrine/dbal/src/Types/StringType.php', - 'Doctrine\\DBAL\\Types\\TextType' => $vendorDir . '/doctrine/dbal/src/Types/TextType.php', - 'Doctrine\\DBAL\\Types\\TimeImmutableType' => $vendorDir . '/doctrine/dbal/src/Types/TimeImmutableType.php', - 'Doctrine\\DBAL\\Types\\TimeType' => $vendorDir . '/doctrine/dbal/src/Types/TimeType.php', - 'Doctrine\\DBAL\\Types\\Type' => $vendorDir . '/doctrine/dbal/src/Types/Type.php', - 'Doctrine\\DBAL\\Types\\TypeRegistry' => $vendorDir . '/doctrine/dbal/src/Types/TypeRegistry.php', - 'Doctrine\\DBAL\\Types\\Types' => $vendorDir . '/doctrine/dbal/src/Types/Types.php', - 'Doctrine\\DBAL\\Types\\VarDateTimeImmutableType' => $vendorDir . '/doctrine/dbal/src/Types/VarDateTimeImmutableType.php', - 'Doctrine\\DBAL\\Types\\VarDateTimeType' => $vendorDir . '/doctrine/dbal/src/Types/VarDateTimeType.php', - 'Doctrine\\DBAL\\VersionAwarePlatformDriver' => $vendorDir . '/doctrine/dbal/src/VersionAwarePlatformDriver.php', - 'Doctrine\\Deprecations\\Deprecation' => $vendorDir . '/doctrine/deprecations/src/Deprecation.php', - 'Doctrine\\Deprecations\\PHPUnit\\VerifyDeprecations' => $vendorDir . '/doctrine/deprecations/src/PHPUnit/VerifyDeprecations.php', - 'Doctrine\\Inflector\\CachedWordInflector' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/CachedWordInflector.php', - 'Doctrine\\Inflector\\GenericLanguageInflectorFactory' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/GenericLanguageInflectorFactory.php', - 'Doctrine\\Inflector\\Inflector' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Inflector.php', - 'Doctrine\\Inflector\\InflectorFactory' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/InflectorFactory.php', - 'Doctrine\\Inflector\\Language' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Language.php', - 'Doctrine\\Inflector\\LanguageInflectorFactory' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/LanguageInflectorFactory.php', - 'Doctrine\\Inflector\\NoopWordInflector' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/NoopWordInflector.php', - 'Doctrine\\Inflector\\Rules\\English\\Inflectible' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/Inflectible.php', - 'Doctrine\\Inflector\\Rules\\English\\InflectorFactory' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/InflectorFactory.php', - 'Doctrine\\Inflector\\Rules\\English\\Rules' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/Rules.php', - 'Doctrine\\Inflector\\Rules\\English\\Uninflected' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/Uninflected.php', - 'Doctrine\\Inflector\\Rules\\French\\Inflectible' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/Inflectible.php', - 'Doctrine\\Inflector\\Rules\\French\\InflectorFactory' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/InflectorFactory.php', - 'Doctrine\\Inflector\\Rules\\French\\Rules' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/Rules.php', - 'Doctrine\\Inflector\\Rules\\French\\Uninflected' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/Uninflected.php', - 'Doctrine\\Inflector\\Rules\\NorwegianBokmal\\Inflectible' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/Inflectible.php', - 'Doctrine\\Inflector\\Rules\\NorwegianBokmal\\InflectorFactory' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/InflectorFactory.php', - 'Doctrine\\Inflector\\Rules\\NorwegianBokmal\\Rules' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/Rules.php', - 'Doctrine\\Inflector\\Rules\\NorwegianBokmal\\Uninflected' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/Uninflected.php', - 'Doctrine\\Inflector\\Rules\\Pattern' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Pattern.php', - 'Doctrine\\Inflector\\Rules\\Patterns' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Patterns.php', - 'Doctrine\\Inflector\\Rules\\Portuguese\\Inflectible' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Inflectible.php', - 'Doctrine\\Inflector\\Rules\\Portuguese\\InflectorFactory' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/InflectorFactory.php', - 'Doctrine\\Inflector\\Rules\\Portuguese\\Rules' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Rules.php', - 'Doctrine\\Inflector\\Rules\\Portuguese\\Uninflected' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Uninflected.php', - 'Doctrine\\Inflector\\Rules\\Ruleset' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Ruleset.php', - 'Doctrine\\Inflector\\Rules\\Spanish\\Inflectible' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Inflectible.php', - 'Doctrine\\Inflector\\Rules\\Spanish\\InflectorFactory' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/InflectorFactory.php', - 'Doctrine\\Inflector\\Rules\\Spanish\\Rules' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Rules.php', - 'Doctrine\\Inflector\\Rules\\Spanish\\Uninflected' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Uninflected.php', - 'Doctrine\\Inflector\\Rules\\Substitution' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Substitution.php', - 'Doctrine\\Inflector\\Rules\\Substitutions' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Substitutions.php', - 'Doctrine\\Inflector\\Rules\\Transformation' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Transformation.php', - 'Doctrine\\Inflector\\Rules\\Transformations' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Transformations.php', - 'Doctrine\\Inflector\\Rules\\Turkish\\Inflectible' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Inflectible.php', - 'Doctrine\\Inflector\\Rules\\Turkish\\InflectorFactory' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/InflectorFactory.php', - 'Doctrine\\Inflector\\Rules\\Turkish\\Rules' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Rules.php', - 'Doctrine\\Inflector\\Rules\\Turkish\\Uninflected' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Uninflected.php', - 'Doctrine\\Inflector\\Rules\\Word' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Word.php', - 'Doctrine\\Inflector\\RulesetInflector' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/RulesetInflector.php', - 'Doctrine\\Inflector\\WordInflector' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/WordInflector.php', - 'Dompdf\\Adapter\\CPDF' => $vendorDir . '/dompdf/dompdf/src/Adapter/CPDF.php', - 'Dompdf\\Adapter\\GD' => $vendorDir . '/dompdf/dompdf/src/Adapter/GD.php', - 'Dompdf\\Adapter\\PDFLib' => $vendorDir . '/dompdf/dompdf/src/Adapter/PDFLib.php', - 'Dompdf\\Canvas' => $vendorDir . '/dompdf/dompdf/src/Canvas.php', - 'Dompdf\\CanvasFactory' => $vendorDir . '/dompdf/dompdf/src/CanvasFactory.php', - 'Dompdf\\Cellmap' => $vendorDir . '/dompdf/dompdf/src/Cellmap.php', - 'Dompdf\\Cpdf' => $vendorDir . '/dompdf/dompdf/lib/Cpdf.php', - 'Dompdf\\Css\\AttributeTranslator' => $vendorDir . '/dompdf/dompdf/src/Css/AttributeTranslator.php', - 'Dompdf\\Css\\Color' => $vendorDir . '/dompdf/dompdf/src/Css/Color.php', - 'Dompdf\\Css\\Style' => $vendorDir . '/dompdf/dompdf/src/Css/Style.php', - 'Dompdf\\Css\\Stylesheet' => $vendorDir . '/dompdf/dompdf/src/Css/Stylesheet.php', - 'Dompdf\\Dompdf' => $vendorDir . '/dompdf/dompdf/src/Dompdf.php', - 'Dompdf\\Exception' => $vendorDir . '/dompdf/dompdf/src/Exception.php', - 'Dompdf\\Exception\\ImageException' => $vendorDir . '/dompdf/dompdf/src/Exception/ImageException.php', - 'Dompdf\\FontMetrics' => $vendorDir . '/dompdf/dompdf/src/FontMetrics.php', - 'Dompdf\\Frame' => $vendorDir . '/dompdf/dompdf/src/Frame.php', - 'Dompdf\\FrameDecorator\\AbstractFrameDecorator' => $vendorDir . '/dompdf/dompdf/src/FrameDecorator/AbstractFrameDecorator.php', - 'Dompdf\\FrameDecorator\\Block' => $vendorDir . '/dompdf/dompdf/src/FrameDecorator/Block.php', - 'Dompdf\\FrameDecorator\\Image' => $vendorDir . '/dompdf/dompdf/src/FrameDecorator/Image.php', - 'Dompdf\\FrameDecorator\\Inline' => $vendorDir . '/dompdf/dompdf/src/FrameDecorator/Inline.php', - 'Dompdf\\FrameDecorator\\ListBullet' => $vendorDir . '/dompdf/dompdf/src/FrameDecorator/ListBullet.php', - 'Dompdf\\FrameDecorator\\ListBulletImage' => $vendorDir . '/dompdf/dompdf/src/FrameDecorator/ListBulletImage.php', - 'Dompdf\\FrameDecorator\\NullFrameDecorator' => $vendorDir . '/dompdf/dompdf/src/FrameDecorator/NullFrameDecorator.php', - 'Dompdf\\FrameDecorator\\Page' => $vendorDir . '/dompdf/dompdf/src/FrameDecorator/Page.php', - 'Dompdf\\FrameDecorator\\Table' => $vendorDir . '/dompdf/dompdf/src/FrameDecorator/Table.php', - 'Dompdf\\FrameDecorator\\TableCell' => $vendorDir . '/dompdf/dompdf/src/FrameDecorator/TableCell.php', - 'Dompdf\\FrameDecorator\\TableRow' => $vendorDir . '/dompdf/dompdf/src/FrameDecorator/TableRow.php', - 'Dompdf\\FrameDecorator\\TableRowGroup' => $vendorDir . '/dompdf/dompdf/src/FrameDecorator/TableRowGroup.php', - 'Dompdf\\FrameDecorator\\Text' => $vendorDir . '/dompdf/dompdf/src/FrameDecorator/Text.php', - 'Dompdf\\FrameReflower\\AbstractFrameReflower' => $vendorDir . '/dompdf/dompdf/src/FrameReflower/AbstractFrameReflower.php', - 'Dompdf\\FrameReflower\\Block' => $vendorDir . '/dompdf/dompdf/src/FrameReflower/Block.php', - 'Dompdf\\FrameReflower\\Image' => $vendorDir . '/dompdf/dompdf/src/FrameReflower/Image.php', - 'Dompdf\\FrameReflower\\Inline' => $vendorDir . '/dompdf/dompdf/src/FrameReflower/Inline.php', - 'Dompdf\\FrameReflower\\ListBullet' => $vendorDir . '/dompdf/dompdf/src/FrameReflower/ListBullet.php', - 'Dompdf\\FrameReflower\\NullFrameReflower' => $vendorDir . '/dompdf/dompdf/src/FrameReflower/NullFrameReflower.php', - 'Dompdf\\FrameReflower\\Page' => $vendorDir . '/dompdf/dompdf/src/FrameReflower/Page.php', - 'Dompdf\\FrameReflower\\Table' => $vendorDir . '/dompdf/dompdf/src/FrameReflower/Table.php', - 'Dompdf\\FrameReflower\\TableCell' => $vendorDir . '/dompdf/dompdf/src/FrameReflower/TableCell.php', - 'Dompdf\\FrameReflower\\TableRow' => $vendorDir . '/dompdf/dompdf/src/FrameReflower/TableRow.php', - 'Dompdf\\FrameReflower\\TableRowGroup' => $vendorDir . '/dompdf/dompdf/src/FrameReflower/TableRowGroup.php', - 'Dompdf\\FrameReflower\\Text' => $vendorDir . '/dompdf/dompdf/src/FrameReflower/Text.php', - 'Dompdf\\Frame\\Factory' => $vendorDir . '/dompdf/dompdf/src/Frame/Factory.php', - 'Dompdf\\Frame\\FrameListIterator' => $vendorDir . '/dompdf/dompdf/src/Frame/FrameListIterator.php', - 'Dompdf\\Frame\\FrameTree' => $vendorDir . '/dompdf/dompdf/src/Frame/FrameTree.php', - 'Dompdf\\Frame\\FrameTreeIterator' => $vendorDir . '/dompdf/dompdf/src/Frame/FrameTreeIterator.php', - 'Dompdf\\Helpers' => $vendorDir . '/dompdf/dompdf/src/Helpers.php', - 'Dompdf\\Image\\Cache' => $vendorDir . '/dompdf/dompdf/src/Image/Cache.php', - 'Dompdf\\JavascriptEmbedder' => $vendorDir . '/dompdf/dompdf/src/JavascriptEmbedder.php', - 'Dompdf\\LineBox' => $vendorDir . '/dompdf/dompdf/src/LineBox.php', - 'Dompdf\\Options' => $vendorDir . '/dompdf/dompdf/src/Options.php', - 'Dompdf\\PhpEvaluator' => $vendorDir . '/dompdf/dompdf/src/PhpEvaluator.php', - 'Dompdf\\Positioner\\Absolute' => $vendorDir . '/dompdf/dompdf/src/Positioner/Absolute.php', - 'Dompdf\\Positioner\\AbstractPositioner' => $vendorDir . '/dompdf/dompdf/src/Positioner/AbstractPositioner.php', - 'Dompdf\\Positioner\\Block' => $vendorDir . '/dompdf/dompdf/src/Positioner/Block.php', - 'Dompdf\\Positioner\\Fixed' => $vendorDir . '/dompdf/dompdf/src/Positioner/Fixed.php', - 'Dompdf\\Positioner\\Inline' => $vendorDir . '/dompdf/dompdf/src/Positioner/Inline.php', - 'Dompdf\\Positioner\\ListBullet' => $vendorDir . '/dompdf/dompdf/src/Positioner/ListBullet.php', - 'Dompdf\\Positioner\\NullPositioner' => $vendorDir . '/dompdf/dompdf/src/Positioner/NullPositioner.php', - 'Dompdf\\Positioner\\TableCell' => $vendorDir . '/dompdf/dompdf/src/Positioner/TableCell.php', - 'Dompdf\\Positioner\\TableRow' => $vendorDir . '/dompdf/dompdf/src/Positioner/TableRow.php', - 'Dompdf\\Renderer' => $vendorDir . '/dompdf/dompdf/src/Renderer.php', - 'Dompdf\\Renderer\\AbstractRenderer' => $vendorDir . '/dompdf/dompdf/src/Renderer/AbstractRenderer.php', - 'Dompdf\\Renderer\\Block' => $vendorDir . '/dompdf/dompdf/src/Renderer/Block.php', - 'Dompdf\\Renderer\\Image' => $vendorDir . '/dompdf/dompdf/src/Renderer/Image.php', - 'Dompdf\\Renderer\\Inline' => $vendorDir . '/dompdf/dompdf/src/Renderer/Inline.php', - 'Dompdf\\Renderer\\ListBullet' => $vendorDir . '/dompdf/dompdf/src/Renderer/ListBullet.php', - 'Dompdf\\Renderer\\TableCell' => $vendorDir . '/dompdf/dompdf/src/Renderer/TableCell.php', - 'Dompdf\\Renderer\\TableRowGroup' => $vendorDir . '/dompdf/dompdf/src/Renderer/TableRowGroup.php', - 'Dompdf\\Renderer\\Text' => $vendorDir . '/dompdf/dompdf/src/Renderer/Text.php', - 'Dotenv\\Dotenv' => $vendorDir . '/vlucas/phpdotenv/src/Dotenv.php', - 'Dotenv\\Exception\\ExceptionInterface' => $vendorDir . '/vlucas/phpdotenv/src/Exception/ExceptionInterface.php', - 'Dotenv\\Exception\\InvalidEncodingException' => $vendorDir . '/vlucas/phpdotenv/src/Exception/InvalidEncodingException.php', - 'Dotenv\\Exception\\InvalidFileException' => $vendorDir . '/vlucas/phpdotenv/src/Exception/InvalidFileException.php', - 'Dotenv\\Exception\\InvalidPathException' => $vendorDir . '/vlucas/phpdotenv/src/Exception/InvalidPathException.php', - 'Dotenv\\Exception\\ValidationException' => $vendorDir . '/vlucas/phpdotenv/src/Exception/ValidationException.php', - 'Dotenv\\Loader\\Loader' => $vendorDir . '/vlucas/phpdotenv/src/Loader/Loader.php', - 'Dotenv\\Loader\\LoaderInterface' => $vendorDir . '/vlucas/phpdotenv/src/Loader/LoaderInterface.php', - 'Dotenv\\Loader\\Resolver' => $vendorDir . '/vlucas/phpdotenv/src/Loader/Resolver.php', - 'Dotenv\\Parser\\Entry' => $vendorDir . '/vlucas/phpdotenv/src/Parser/Entry.php', - 'Dotenv\\Parser\\EntryParser' => $vendorDir . '/vlucas/phpdotenv/src/Parser/EntryParser.php', - 'Dotenv\\Parser\\Lexer' => $vendorDir . '/vlucas/phpdotenv/src/Parser/Lexer.php', - 'Dotenv\\Parser\\Lines' => $vendorDir . '/vlucas/phpdotenv/src/Parser/Lines.php', - 'Dotenv\\Parser\\Parser' => $vendorDir . '/vlucas/phpdotenv/src/Parser/Parser.php', - 'Dotenv\\Parser\\ParserInterface' => $vendorDir . '/vlucas/phpdotenv/src/Parser/ParserInterface.php', - 'Dotenv\\Parser\\Value' => $vendorDir . '/vlucas/phpdotenv/src/Parser/Value.php', - 'Dotenv\\Repository\\AdapterRepository' => $vendorDir . '/vlucas/phpdotenv/src/Repository/AdapterRepository.php', - 'Dotenv\\Repository\\Adapter\\AdapterInterface' => $vendorDir . '/vlucas/phpdotenv/src/Repository/Adapter/AdapterInterface.php', - 'Dotenv\\Repository\\Adapter\\ApacheAdapter' => $vendorDir . '/vlucas/phpdotenv/src/Repository/Adapter/ApacheAdapter.php', - 'Dotenv\\Repository\\Adapter\\ArrayAdapter' => $vendorDir . '/vlucas/phpdotenv/src/Repository/Adapter/ArrayAdapter.php', - 'Dotenv\\Repository\\Adapter\\EnvConstAdapter' => $vendorDir . '/vlucas/phpdotenv/src/Repository/Adapter/EnvConstAdapter.php', - 'Dotenv\\Repository\\Adapter\\GuardedWriter' => $vendorDir . '/vlucas/phpdotenv/src/Repository/Adapter/GuardedWriter.php', - 'Dotenv\\Repository\\Adapter\\ImmutableWriter' => $vendorDir . '/vlucas/phpdotenv/src/Repository/Adapter/ImmutableWriter.php', - 'Dotenv\\Repository\\Adapter\\MultiReader' => $vendorDir . '/vlucas/phpdotenv/src/Repository/Adapter/MultiReader.php', - 'Dotenv\\Repository\\Adapter\\MultiWriter' => $vendorDir . '/vlucas/phpdotenv/src/Repository/Adapter/MultiWriter.php', - 'Dotenv\\Repository\\Adapter\\PutenvAdapter' => $vendorDir . '/vlucas/phpdotenv/src/Repository/Adapter/PutenvAdapter.php', - 'Dotenv\\Repository\\Adapter\\ReaderInterface' => $vendorDir . '/vlucas/phpdotenv/src/Repository/Adapter/ReaderInterface.php', - 'Dotenv\\Repository\\Adapter\\ReplacingWriter' => $vendorDir . '/vlucas/phpdotenv/src/Repository/Adapter/ReplacingWriter.php', - 'Dotenv\\Repository\\Adapter\\ServerConstAdapter' => $vendorDir . '/vlucas/phpdotenv/src/Repository/Adapter/ServerConstAdapter.php', - 'Dotenv\\Repository\\Adapter\\WriterInterface' => $vendorDir . '/vlucas/phpdotenv/src/Repository/Adapter/WriterInterface.php', - 'Dotenv\\Repository\\RepositoryBuilder' => $vendorDir . '/vlucas/phpdotenv/src/Repository/RepositoryBuilder.php', - 'Dotenv\\Repository\\RepositoryInterface' => $vendorDir . '/vlucas/phpdotenv/src/Repository/RepositoryInterface.php', - 'Dotenv\\Store\\FileStore' => $vendorDir . '/vlucas/phpdotenv/src/Store/FileStore.php', - 'Dotenv\\Store\\File\\Paths' => $vendorDir . '/vlucas/phpdotenv/src/Store/File/Paths.php', - 'Dotenv\\Store\\File\\Reader' => $vendorDir . '/vlucas/phpdotenv/src/Store/File/Reader.php', - 'Dotenv\\Store\\StoreBuilder' => $vendorDir . '/vlucas/phpdotenv/src/Store/StoreBuilder.php', - 'Dotenv\\Store\\StoreInterface' => $vendorDir . '/vlucas/phpdotenv/src/Store/StoreInterface.php', - 'Dotenv\\Store\\StringStore' => $vendorDir . '/vlucas/phpdotenv/src/Store/StringStore.php', - 'Dotenv\\Util\\Regex' => $vendorDir . '/vlucas/phpdotenv/src/Util/Regex.php', - 'Dotenv\\Util\\Str' => $vendorDir . '/vlucas/phpdotenv/src/Util/Str.php', - 'Dotenv\\Validator' => $vendorDir . '/vlucas/phpdotenv/src/Validator.php', - 'DrugsCostOfGoodsSeeder' => $baseDir . '/database/seeders/DrugsCostOfGoodsSeeder.php', - 'Egulias\\EmailValidator\\EmailLexer' => $vendorDir . '/egulias/email-validator/src/EmailLexer.php', - 'Egulias\\EmailValidator\\EmailParser' => $vendorDir . '/egulias/email-validator/src/EmailParser.php', - 'Egulias\\EmailValidator\\EmailValidator' => $vendorDir . '/egulias/email-validator/src/EmailValidator.php', - 'Egulias\\EmailValidator\\MessageIDParser' => $vendorDir . '/egulias/email-validator/src/MessageIDParser.php', - 'Egulias\\EmailValidator\\Parser' => $vendorDir . '/egulias/email-validator/src/Parser.php', - 'Egulias\\EmailValidator\\Parser\\Comment' => $vendorDir . '/egulias/email-validator/src/Parser/Comment.php', - 'Egulias\\EmailValidator\\Parser\\CommentStrategy\\CommentStrategy' => $vendorDir . '/egulias/email-validator/src/Parser/CommentStrategy/CommentStrategy.php', - 'Egulias\\EmailValidator\\Parser\\CommentStrategy\\DomainComment' => $vendorDir . '/egulias/email-validator/src/Parser/CommentStrategy/DomainComment.php', - 'Egulias\\EmailValidator\\Parser\\CommentStrategy\\LocalComment' => $vendorDir . '/egulias/email-validator/src/Parser/CommentStrategy/LocalComment.php', - 'Egulias\\EmailValidator\\Parser\\DomainLiteral' => $vendorDir . '/egulias/email-validator/src/Parser/DomainLiteral.php', - 'Egulias\\EmailValidator\\Parser\\DomainPart' => $vendorDir . '/egulias/email-validator/src/Parser/DomainPart.php', - 'Egulias\\EmailValidator\\Parser\\DoubleQuote' => $vendorDir . '/egulias/email-validator/src/Parser/DoubleQuote.php', - 'Egulias\\EmailValidator\\Parser\\FoldingWhiteSpace' => $vendorDir . '/egulias/email-validator/src/Parser/FoldingWhiteSpace.php', - 'Egulias\\EmailValidator\\Parser\\IDLeftPart' => $vendorDir . '/egulias/email-validator/src/Parser/IDLeftPart.php', - 'Egulias\\EmailValidator\\Parser\\IDRightPart' => $vendorDir . '/egulias/email-validator/src/Parser/IDRightPart.php', - 'Egulias\\EmailValidator\\Parser\\LocalPart' => $vendorDir . '/egulias/email-validator/src/Parser/LocalPart.php', - 'Egulias\\EmailValidator\\Parser\\PartParser' => $vendorDir . '/egulias/email-validator/src/Parser/PartParser.php', - 'Egulias\\EmailValidator\\Result\\InvalidEmail' => $vendorDir . '/egulias/email-validator/src/Result/InvalidEmail.php', - 'Egulias\\EmailValidator\\Result\\MultipleErrors' => $vendorDir . '/egulias/email-validator/src/Result/MultipleErrors.php', - 'Egulias\\EmailValidator\\Result\\Reason\\AtextAfterCFWS' => $vendorDir . '/egulias/email-validator/src/Result/Reason/AtextAfterCFWS.php', - 'Egulias\\EmailValidator\\Result\\Reason\\CRLFAtTheEnd' => $vendorDir . '/egulias/email-validator/src/Result/Reason/CRLFAtTheEnd.php', - 'Egulias\\EmailValidator\\Result\\Reason\\CRLFX2' => $vendorDir . '/egulias/email-validator/src/Result/Reason/CRLFX2.php', - 'Egulias\\EmailValidator\\Result\\Reason\\CRNoLF' => $vendorDir . '/egulias/email-validator/src/Result/Reason/CRNoLF.php', - 'Egulias\\EmailValidator\\Result\\Reason\\CharNotAllowed' => $vendorDir . '/egulias/email-validator/src/Result/Reason/CharNotAllowed.php', - 'Egulias\\EmailValidator\\Result\\Reason\\CommaInDomain' => $vendorDir . '/egulias/email-validator/src/Result/Reason/CommaInDomain.php', - 'Egulias\\EmailValidator\\Result\\Reason\\CommentsInIDRight' => $vendorDir . '/egulias/email-validator/src/Result/Reason/CommentsInIDRight.php', - 'Egulias\\EmailValidator\\Result\\Reason\\ConsecutiveAt' => $vendorDir . '/egulias/email-validator/src/Result/Reason/ConsecutiveAt.php', - 'Egulias\\EmailValidator\\Result\\Reason\\ConsecutiveDot' => $vendorDir . '/egulias/email-validator/src/Result/Reason/ConsecutiveDot.php', - 'Egulias\\EmailValidator\\Result\\Reason\\DetailedReason' => $vendorDir . '/egulias/email-validator/src/Result/Reason/DetailedReason.php', - 'Egulias\\EmailValidator\\Result\\Reason\\DomainAcceptsNoMail' => $vendorDir . '/egulias/email-validator/src/Result/Reason/DomainAcceptsNoMail.php', - 'Egulias\\EmailValidator\\Result\\Reason\\DomainHyphened' => $vendorDir . '/egulias/email-validator/src/Result/Reason/DomainHyphened.php', - 'Egulias\\EmailValidator\\Result\\Reason\\DomainTooLong' => $vendorDir . '/egulias/email-validator/src/Result/Reason/DomainTooLong.php', - 'Egulias\\EmailValidator\\Result\\Reason\\DotAtEnd' => $vendorDir . '/egulias/email-validator/src/Result/Reason/DotAtEnd.php', - 'Egulias\\EmailValidator\\Result\\Reason\\DotAtStart' => $vendorDir . '/egulias/email-validator/src/Result/Reason/DotAtStart.php', - 'Egulias\\EmailValidator\\Result\\Reason\\EmptyReason' => $vendorDir . '/egulias/email-validator/src/Result/Reason/EmptyReason.php', - 'Egulias\\EmailValidator\\Result\\Reason\\ExceptionFound' => $vendorDir . '/egulias/email-validator/src/Result/Reason/ExceptionFound.php', - 'Egulias\\EmailValidator\\Result\\Reason\\ExpectingATEXT' => $vendorDir . '/egulias/email-validator/src/Result/Reason/ExpectingATEXT.php', - 'Egulias\\EmailValidator\\Result\\Reason\\ExpectingCTEXT' => $vendorDir . '/egulias/email-validator/src/Result/Reason/ExpectingCTEXT.php', - 'Egulias\\EmailValidator\\Result\\Reason\\ExpectingDTEXT' => $vendorDir . '/egulias/email-validator/src/Result/Reason/ExpectingDTEXT.php', - 'Egulias\\EmailValidator\\Result\\Reason\\ExpectingDomainLiteralClose' => $vendorDir . '/egulias/email-validator/src/Result/Reason/ExpectingDomainLiteralClose.php', - 'Egulias\\EmailValidator\\Result\\Reason\\LabelTooLong' => $vendorDir . '/egulias/email-validator/src/Result/Reason/LabelTooLong.php', - 'Egulias\\EmailValidator\\Result\\Reason\\LocalOrReservedDomain' => $vendorDir . '/egulias/email-validator/src/Result/Reason/LocalOrReservedDomain.php', - 'Egulias\\EmailValidator\\Result\\Reason\\NoDNSRecord' => $vendorDir . '/egulias/email-validator/src/Result/Reason/NoDNSRecord.php', - 'Egulias\\EmailValidator\\Result\\Reason\\NoDomainPart' => $vendorDir . '/egulias/email-validator/src/Result/Reason/NoDomainPart.php', - 'Egulias\\EmailValidator\\Result\\Reason\\NoLocalPart' => $vendorDir . '/egulias/email-validator/src/Result/Reason/NoLocalPart.php', - 'Egulias\\EmailValidator\\Result\\Reason\\RFCWarnings' => $vendorDir . '/egulias/email-validator/src/Result/Reason/RFCWarnings.php', - 'Egulias\\EmailValidator\\Result\\Reason\\Reason' => $vendorDir . '/egulias/email-validator/src/Result/Reason/Reason.php', - 'Egulias\\EmailValidator\\Result\\Reason\\SpoofEmail' => $vendorDir . '/egulias/email-validator/src/Result/Reason/SpoofEmail.php', - 'Egulias\\EmailValidator\\Result\\Reason\\UnOpenedComment' => $vendorDir . '/egulias/email-validator/src/Result/Reason/UnOpenedComment.php', - 'Egulias\\EmailValidator\\Result\\Reason\\UnableToGetDNSRecord' => $vendorDir . '/egulias/email-validator/src/Result/Reason/UnableToGetDNSRecord.php', - 'Egulias\\EmailValidator\\Result\\Reason\\UnclosedComment' => $vendorDir . '/egulias/email-validator/src/Result/Reason/UnclosedComment.php', - 'Egulias\\EmailValidator\\Result\\Reason\\UnclosedQuotedString' => $vendorDir . '/egulias/email-validator/src/Result/Reason/UnclosedQuotedString.php', - 'Egulias\\EmailValidator\\Result\\Reason\\UnusualElements' => $vendorDir . '/egulias/email-validator/src/Result/Reason/UnusualElements.php', - 'Egulias\\EmailValidator\\Result\\Result' => $vendorDir . '/egulias/email-validator/src/Result/Result.php', - 'Egulias\\EmailValidator\\Result\\SpoofEmail' => $vendorDir . '/egulias/email-validator/src/Result/SpoofEmail.php', - 'Egulias\\EmailValidator\\Result\\ValidEmail' => $vendorDir . '/egulias/email-validator/src/Result/ValidEmail.php', - 'Egulias\\EmailValidator\\Validation\\DNSCheckValidation' => $vendorDir . '/egulias/email-validator/src/Validation/DNSCheckValidation.php', - 'Egulias\\EmailValidator\\Validation\\DNSGetRecordWrapper' => $vendorDir . '/egulias/email-validator/src/Validation/DNSGetRecordWrapper.php', - 'Egulias\\EmailValidator\\Validation\\DNSRecords' => $vendorDir . '/egulias/email-validator/src/Validation/DNSRecords.php', - 'Egulias\\EmailValidator\\Validation\\EmailValidation' => $vendorDir . '/egulias/email-validator/src/Validation/EmailValidation.php', - 'Egulias\\EmailValidator\\Validation\\Exception\\EmptyValidationList' => $vendorDir . '/egulias/email-validator/src/Validation/Exception/EmptyValidationList.php', - 'Egulias\\EmailValidator\\Validation\\Extra\\SpoofCheckValidation' => $vendorDir . '/egulias/email-validator/src/Validation/Extra/SpoofCheckValidation.php', - 'Egulias\\EmailValidator\\Validation\\MessageIDValidation' => $vendorDir . '/egulias/email-validator/src/Validation/MessageIDValidation.php', - 'Egulias\\EmailValidator\\Validation\\MultipleValidationWithAnd' => $vendorDir . '/egulias/email-validator/src/Validation/MultipleValidationWithAnd.php', - 'Egulias\\EmailValidator\\Validation\\NoRFCWarningsValidation' => $vendorDir . '/egulias/email-validator/src/Validation/NoRFCWarningsValidation.php', - 'Egulias\\EmailValidator\\Validation\\RFCValidation' => $vendorDir . '/egulias/email-validator/src/Validation/RFCValidation.php', - 'Egulias\\EmailValidator\\Warning\\AddressLiteral' => $vendorDir . '/egulias/email-validator/src/Warning/AddressLiteral.php', - 'Egulias\\EmailValidator\\Warning\\CFWSNearAt' => $vendorDir . '/egulias/email-validator/src/Warning/CFWSNearAt.php', - 'Egulias\\EmailValidator\\Warning\\CFWSWithFWS' => $vendorDir . '/egulias/email-validator/src/Warning/CFWSWithFWS.php', - 'Egulias\\EmailValidator\\Warning\\Comment' => $vendorDir . '/egulias/email-validator/src/Warning/Comment.php', - 'Egulias\\EmailValidator\\Warning\\DeprecatedComment' => $vendorDir . '/egulias/email-validator/src/Warning/DeprecatedComment.php', - 'Egulias\\EmailValidator\\Warning\\DomainLiteral' => $vendorDir . '/egulias/email-validator/src/Warning/DomainLiteral.php', - 'Egulias\\EmailValidator\\Warning\\EmailTooLong' => $vendorDir . '/egulias/email-validator/src/Warning/EmailTooLong.php', - 'Egulias\\EmailValidator\\Warning\\IPV6BadChar' => $vendorDir . '/egulias/email-validator/src/Warning/IPV6BadChar.php', - 'Egulias\\EmailValidator\\Warning\\IPV6ColonEnd' => $vendorDir . '/egulias/email-validator/src/Warning/IPV6ColonEnd.php', - 'Egulias\\EmailValidator\\Warning\\IPV6ColonStart' => $vendorDir . '/egulias/email-validator/src/Warning/IPV6ColonStart.php', - 'Egulias\\EmailValidator\\Warning\\IPV6Deprecated' => $vendorDir . '/egulias/email-validator/src/Warning/IPV6Deprecated.php', - 'Egulias\\EmailValidator\\Warning\\IPV6DoubleColon' => $vendorDir . '/egulias/email-validator/src/Warning/IPV6DoubleColon.php', - 'Egulias\\EmailValidator\\Warning\\IPV6GroupCount' => $vendorDir . '/egulias/email-validator/src/Warning/IPV6GroupCount.php', - 'Egulias\\EmailValidator\\Warning\\IPV6MaxGroups' => $vendorDir . '/egulias/email-validator/src/Warning/IPV6MaxGroups.php', - 'Egulias\\EmailValidator\\Warning\\LocalTooLong' => $vendorDir . '/egulias/email-validator/src/Warning/LocalTooLong.php', - 'Egulias\\EmailValidator\\Warning\\NoDNSMXRecord' => $vendorDir . '/egulias/email-validator/src/Warning/NoDNSMXRecord.php', - 'Egulias\\EmailValidator\\Warning\\ObsoleteDTEXT' => $vendorDir . '/egulias/email-validator/src/Warning/ObsoleteDTEXT.php', - 'Egulias\\EmailValidator\\Warning\\QuotedPart' => $vendorDir . '/egulias/email-validator/src/Warning/QuotedPart.php', - 'Egulias\\EmailValidator\\Warning\\QuotedString' => $vendorDir . '/egulias/email-validator/src/Warning/QuotedString.php', - 'Egulias\\EmailValidator\\Warning\\TLD' => $vendorDir . '/egulias/email-validator/src/Warning/TLD.php', - 'Egulias\\EmailValidator\\Warning\\Warning' => $vendorDir . '/egulias/email-validator/src/Warning/Warning.php', - 'ExpenseAccountSeeder' => $baseDir . '/database/seeders/ExpenseAccountSeeder.php', - 'Faker\\Calculator\\Ean' => $vendorDir . '/fakerphp/faker/src/Faker/Calculator/Ean.php', - 'Faker\\Calculator\\Iban' => $vendorDir . '/fakerphp/faker/src/Faker/Calculator/Iban.php', - 'Faker\\Calculator\\Inn' => $vendorDir . '/fakerphp/faker/src/Faker/Calculator/Inn.php', - 'Faker\\Calculator\\Isbn' => $vendorDir . '/fakerphp/faker/src/Faker/Calculator/Isbn.php', - 'Faker\\Calculator\\Luhn' => $vendorDir . '/fakerphp/faker/src/Faker/Calculator/Luhn.php', - 'Faker\\Calculator\\TCNo' => $vendorDir . '/fakerphp/faker/src/Faker/Calculator/TCNo.php', - 'Faker\\ChanceGenerator' => $vendorDir . '/fakerphp/faker/src/Faker/ChanceGenerator.php', - 'Faker\\Container\\Container' => $vendorDir . '/fakerphp/faker/src/Faker/Container/Container.php', - 'Faker\\Container\\ContainerBuilder' => $vendorDir . '/fakerphp/faker/src/Faker/Container/ContainerBuilder.php', - 'Faker\\Container\\ContainerException' => $vendorDir . '/fakerphp/faker/src/Faker/Container/ContainerException.php', - 'Faker\\Container\\ContainerInterface' => $vendorDir . '/fakerphp/faker/src/Faker/Container/ContainerInterface.php', - 'Faker\\Container\\NotInContainerException' => $vendorDir . '/fakerphp/faker/src/Faker/Container/NotInContainerException.php', - 'Faker\\Core\\Barcode' => $vendorDir . '/fakerphp/faker/src/Faker/Core/Barcode.php', - 'Faker\\Core\\Blood' => $vendorDir . '/fakerphp/faker/src/Faker/Core/Blood.php', - 'Faker\\Core\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Core/Color.php', - 'Faker\\Core\\Coordinates' => $vendorDir . '/fakerphp/faker/src/Faker/Core/Coordinates.php', - 'Faker\\Core\\DateTime' => $vendorDir . '/fakerphp/faker/src/Faker/Core/DateTime.php', - 'Faker\\Core\\File' => $vendorDir . '/fakerphp/faker/src/Faker/Core/File.php', - 'Faker\\Core\\Number' => $vendorDir . '/fakerphp/faker/src/Faker/Core/Number.php', - 'Faker\\Core\\Uuid' => $vendorDir . '/fakerphp/faker/src/Faker/Core/Uuid.php', - 'Faker\\Core\\Version' => $vendorDir . '/fakerphp/faker/src/Faker/Core/Version.php', - 'Faker\\DefaultGenerator' => $vendorDir . '/fakerphp/faker/src/Faker/DefaultGenerator.php', - 'Faker\\Documentor' => $vendorDir . '/fakerphp/faker/src/Faker/Documentor.php', - 'Faker\\Extension\\AddressExtension' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/AddressExtension.php', - 'Faker\\Extension\\BarcodeExtension' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/BarcodeExtension.php', - 'Faker\\Extension\\BloodExtension' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/BloodExtension.php', - 'Faker\\Extension\\ColorExtension' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/ColorExtension.php', - 'Faker\\Extension\\CompanyExtension' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/CompanyExtension.php', - 'Faker\\Extension\\CountryExtension' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/CountryExtension.php', - 'Faker\\Extension\\DateTimeExtension' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/DateTimeExtension.php', - 'Faker\\Extension\\Extension' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/Extension.php', - 'Faker\\Extension\\ExtensionNotFound' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/ExtensionNotFound.php', - 'Faker\\Extension\\FileExtension' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/FileExtension.php', - 'Faker\\Extension\\GeneratorAwareExtension' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/GeneratorAwareExtension.php', - 'Faker\\Extension\\GeneratorAwareExtensionTrait' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/GeneratorAwareExtensionTrait.php', - 'Faker\\Extension\\Helper' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/Helper.php', - 'Faker\\Extension\\NumberExtension' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/NumberExtension.php', - 'Faker\\Extension\\PersonExtension' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/PersonExtension.php', - 'Faker\\Extension\\PhoneNumberExtension' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/PhoneNumberExtension.php', - 'Faker\\Extension\\UuidExtension' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/UuidExtension.php', - 'Faker\\Extension\\VersionExtension' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/VersionExtension.php', - 'Faker\\Factory' => $vendorDir . '/fakerphp/faker/src/Faker/Factory.php', - 'Faker\\Generator' => $vendorDir . '/fakerphp/faker/src/Faker/Generator.php', - 'Faker\\Guesser\\Name' => $vendorDir . '/fakerphp/faker/src/Faker/Guesser/Name.php', - 'Faker\\ORM\\CakePHP\\ColumnTypeGuesser' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/CakePHP/ColumnTypeGuesser.php', - 'Faker\\ORM\\CakePHP\\EntityPopulator' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/CakePHP/EntityPopulator.php', - 'Faker\\ORM\\CakePHP\\Populator' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/CakePHP/Populator.php', - 'Faker\\ORM\\Doctrine\\ColumnTypeGuesser' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/Doctrine/ColumnTypeGuesser.php', - 'Faker\\ORM\\Doctrine\\EntityPopulator' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/Doctrine/EntityPopulator.php', - 'Faker\\ORM\\Doctrine\\Populator' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/Doctrine/Populator.php', - 'Faker\\ORM\\Mandango\\ColumnTypeGuesser' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/Mandango/ColumnTypeGuesser.php', - 'Faker\\ORM\\Mandango\\EntityPopulator' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/Mandango/EntityPopulator.php', - 'Faker\\ORM\\Mandango\\Populator' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/Mandango/Populator.php', - 'Faker\\ORM\\Propel2\\ColumnTypeGuesser' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/Propel2/ColumnTypeGuesser.php', - 'Faker\\ORM\\Propel2\\EntityPopulator' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/Propel2/EntityPopulator.php', - 'Faker\\ORM\\Propel2\\Populator' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/Propel2/Populator.php', - 'Faker\\ORM\\Propel\\ColumnTypeGuesser' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/Propel/ColumnTypeGuesser.php', - 'Faker\\ORM\\Propel\\EntityPopulator' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/Propel/EntityPopulator.php', - 'Faker\\ORM\\Propel\\Populator' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/Propel/Populator.php', - 'Faker\\ORM\\Spot\\ColumnTypeGuesser' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/Spot/ColumnTypeGuesser.php', - 'Faker\\ORM\\Spot\\EntityPopulator' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/Spot/EntityPopulator.php', - 'Faker\\ORM\\Spot\\Populator' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/Spot/Populator.php', - 'Faker\\Provider\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/Address.php', - 'Faker\\Provider\\Barcode' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/Barcode.php', - 'Faker\\Provider\\Base' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/Base.php', - 'Faker\\Provider\\Biased' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/Biased.php', - 'Faker\\Provider\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/Color.php', - 'Faker\\Provider\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/Company.php', - 'Faker\\Provider\\DateTime' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/DateTime.php', - 'Faker\\Provider\\File' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/File.php', - 'Faker\\Provider\\HtmlLorem' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/HtmlLorem.php', - 'Faker\\Provider\\Image' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/Image.php', - 'Faker\\Provider\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/Internet.php', - 'Faker\\Provider\\Lorem' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/Lorem.php', - 'Faker\\Provider\\Medical' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/Medical.php', - 'Faker\\Provider\\Miscellaneous' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/Miscellaneous.php', - 'Faker\\Provider\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/Payment.php', - 'Faker\\Provider\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/Person.php', - 'Faker\\Provider\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/PhoneNumber.php', - 'Faker\\Provider\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/Text.php', - 'Faker\\Provider\\UserAgent' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/UserAgent.php', - 'Faker\\Provider\\Uuid' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/Uuid.php', - 'Faker\\Provider\\ar_EG\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_EG/Address.php', - 'Faker\\Provider\\ar_EG\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_EG/Color.php', - 'Faker\\Provider\\ar_EG\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_EG/Company.php', - 'Faker\\Provider\\ar_EG\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_EG/Internet.php', - 'Faker\\Provider\\ar_EG\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_EG/Payment.php', - 'Faker\\Provider\\ar_EG\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_EG/Person.php', - 'Faker\\Provider\\ar_EG\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_EG/Text.php', - 'Faker\\Provider\\ar_JO\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_JO/Address.php', - 'Faker\\Provider\\ar_JO\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_JO/Company.php', - 'Faker\\Provider\\ar_JO\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_JO/Internet.php', - 'Faker\\Provider\\ar_JO\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_JO/Person.php', - 'Faker\\Provider\\ar_JO\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_JO/Text.php', - 'Faker\\Provider\\ar_SA\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_SA/Address.php', - 'Faker\\Provider\\ar_SA\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_SA/Color.php', - 'Faker\\Provider\\ar_SA\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_SA/Company.php', - 'Faker\\Provider\\ar_SA\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_SA/Internet.php', - 'Faker\\Provider\\ar_SA\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_SA/Payment.php', - 'Faker\\Provider\\ar_SA\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_SA/Person.php', - 'Faker\\Provider\\ar_SA\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_SA/Text.php', - 'Faker\\Provider\\at_AT\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/at_AT/Payment.php', - 'Faker\\Provider\\bg_BG\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/bg_BG/Internet.php', - 'Faker\\Provider\\bg_BG\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/bg_BG/Payment.php', - 'Faker\\Provider\\bg_BG\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/bg_BG/Person.php', - 'Faker\\Provider\\bg_BG\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/bg_BG/PhoneNumber.php', - 'Faker\\Provider\\bn_BD\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/bn_BD/Address.php', - 'Faker\\Provider\\bn_BD\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/bn_BD/Company.php', - 'Faker\\Provider\\bn_BD\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/bn_BD/Person.php', - 'Faker\\Provider\\bn_BD\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/bn_BD/PhoneNumber.php', - 'Faker\\Provider\\bn_BD\\Utils' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/bn_BD/Utils.php', - 'Faker\\Provider\\cs_CZ\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/cs_CZ/Address.php', - 'Faker\\Provider\\cs_CZ\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/cs_CZ/Company.php', - 'Faker\\Provider\\cs_CZ\\DateTime' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/cs_CZ/DateTime.php', - 'Faker\\Provider\\cs_CZ\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/cs_CZ/Internet.php', - 'Faker\\Provider\\cs_CZ\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/cs_CZ/Payment.php', - 'Faker\\Provider\\cs_CZ\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/cs_CZ/Person.php', - 'Faker\\Provider\\cs_CZ\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/cs_CZ/PhoneNumber.php', - 'Faker\\Provider\\cs_CZ\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/cs_CZ/Text.php', - 'Faker\\Provider\\da_DK\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/da_DK/Address.php', - 'Faker\\Provider\\da_DK\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/da_DK/Company.php', - 'Faker\\Provider\\da_DK\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/da_DK/Internet.php', - 'Faker\\Provider\\da_DK\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/da_DK/Payment.php', - 'Faker\\Provider\\da_DK\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/da_DK/Person.php', - 'Faker\\Provider\\da_DK\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/da_DK/PhoneNumber.php', - 'Faker\\Provider\\de_AT\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_AT/Address.php', - 'Faker\\Provider\\de_AT\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_AT/Company.php', - 'Faker\\Provider\\de_AT\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_AT/Internet.php', - 'Faker\\Provider\\de_AT\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_AT/Payment.php', - 'Faker\\Provider\\de_AT\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_AT/Person.php', - 'Faker\\Provider\\de_AT\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_AT/PhoneNumber.php', - 'Faker\\Provider\\de_AT\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_AT/Text.php', - 'Faker\\Provider\\de_CH\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_CH/Address.php', - 'Faker\\Provider\\de_CH\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_CH/Company.php', - 'Faker\\Provider\\de_CH\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_CH/Internet.php', - 'Faker\\Provider\\de_CH\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_CH/Payment.php', - 'Faker\\Provider\\de_CH\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_CH/Person.php', - 'Faker\\Provider\\de_CH\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_CH/PhoneNumber.php', - 'Faker\\Provider\\de_CH\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_CH/Text.php', - 'Faker\\Provider\\de_DE\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_DE/Address.php', - 'Faker\\Provider\\de_DE\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_DE/Company.php', - 'Faker\\Provider\\de_DE\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_DE/Internet.php', - 'Faker\\Provider\\de_DE\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_DE/Payment.php', - 'Faker\\Provider\\de_DE\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_DE/Person.php', - 'Faker\\Provider\\de_DE\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_DE/PhoneNumber.php', - 'Faker\\Provider\\de_DE\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_DE/Text.php', - 'Faker\\Provider\\el_CY\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/el_CY/Address.php', - 'Faker\\Provider\\el_CY\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/el_CY/Company.php', - 'Faker\\Provider\\el_CY\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/el_CY/Internet.php', - 'Faker\\Provider\\el_CY\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/el_CY/Payment.php', - 'Faker\\Provider\\el_CY\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/el_CY/Person.php', - 'Faker\\Provider\\el_CY\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/el_CY/PhoneNumber.php', - 'Faker\\Provider\\el_GR\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/el_GR/Address.php', - 'Faker\\Provider\\el_GR\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/el_GR/Company.php', - 'Faker\\Provider\\el_GR\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/el_GR/Payment.php', - 'Faker\\Provider\\el_GR\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/el_GR/Person.php', - 'Faker\\Provider\\el_GR\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/el_GR/PhoneNumber.php', - 'Faker\\Provider\\el_GR\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/el_GR/Text.php', - 'Faker\\Provider\\en_AU\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_AU/Address.php', - 'Faker\\Provider\\en_AU\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_AU/Internet.php', - 'Faker\\Provider\\en_AU\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_AU/PhoneNumber.php', - 'Faker\\Provider\\en_CA\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_CA/Address.php', - 'Faker\\Provider\\en_CA\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_CA/PhoneNumber.php', - 'Faker\\Provider\\en_GB\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_GB/Address.php', - 'Faker\\Provider\\en_GB\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_GB/Company.php', - 'Faker\\Provider\\en_GB\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_GB/Internet.php', - 'Faker\\Provider\\en_GB\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_GB/Payment.php', - 'Faker\\Provider\\en_GB\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_GB/Person.php', - 'Faker\\Provider\\en_GB\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_GB/PhoneNumber.php', - 'Faker\\Provider\\en_HK\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_HK/Address.php', - 'Faker\\Provider\\en_HK\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_HK/Internet.php', - 'Faker\\Provider\\en_HK\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_HK/PhoneNumber.php', - 'Faker\\Provider\\en_IN\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_IN/Address.php', - 'Faker\\Provider\\en_IN\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_IN/Internet.php', - 'Faker\\Provider\\en_IN\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_IN/Person.php', - 'Faker\\Provider\\en_IN\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_IN/PhoneNumber.php', - 'Faker\\Provider\\en_NG\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_NG/Address.php', - 'Faker\\Provider\\en_NG\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_NG/Internet.php', - 'Faker\\Provider\\en_NG\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_NG/Person.php', - 'Faker\\Provider\\en_NG\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_NG/PhoneNumber.php', - 'Faker\\Provider\\en_NZ\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_NZ/Address.php', - 'Faker\\Provider\\en_NZ\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_NZ/Internet.php', - 'Faker\\Provider\\en_NZ\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_NZ/PhoneNumber.php', - 'Faker\\Provider\\en_PH\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_PH/Address.php', - 'Faker\\Provider\\en_PH\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_PH/PhoneNumber.php', - 'Faker\\Provider\\en_SG\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_SG/Address.php', - 'Faker\\Provider\\en_SG\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_SG/Person.php', - 'Faker\\Provider\\en_SG\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_SG/PhoneNumber.php', - 'Faker\\Provider\\en_UG\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_UG/Address.php', - 'Faker\\Provider\\en_UG\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_UG/Internet.php', - 'Faker\\Provider\\en_UG\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_UG/Person.php', - 'Faker\\Provider\\en_UG\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_UG/PhoneNumber.php', - 'Faker\\Provider\\en_US\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_US/Address.php', - 'Faker\\Provider\\en_US\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_US/Company.php', - 'Faker\\Provider\\en_US\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_US/Payment.php', - 'Faker\\Provider\\en_US\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_US/Person.php', - 'Faker\\Provider\\en_US\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_US/PhoneNumber.php', - 'Faker\\Provider\\en_US\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_US/Text.php', - 'Faker\\Provider\\en_ZA\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_ZA/Address.php', - 'Faker\\Provider\\en_ZA\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_ZA/Company.php', - 'Faker\\Provider\\en_ZA\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_ZA/Internet.php', - 'Faker\\Provider\\en_ZA\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_ZA/Person.php', - 'Faker\\Provider\\en_ZA\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_ZA/PhoneNumber.php', - 'Faker\\Provider\\es_AR\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_AR/Address.php', - 'Faker\\Provider\\es_AR\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_AR/Company.php', - 'Faker\\Provider\\es_AR\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_AR/Person.php', - 'Faker\\Provider\\es_AR\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_AR/PhoneNumber.php', - 'Faker\\Provider\\es_ES\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_ES/Address.php', - 'Faker\\Provider\\es_ES\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_ES/Color.php', - 'Faker\\Provider\\es_ES\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_ES/Company.php', - 'Faker\\Provider\\es_ES\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_ES/Internet.php', - 'Faker\\Provider\\es_ES\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_ES/Payment.php', - 'Faker\\Provider\\es_ES\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_ES/Person.php', - 'Faker\\Provider\\es_ES\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_ES/PhoneNumber.php', - 'Faker\\Provider\\es_ES\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_ES/Text.php', - 'Faker\\Provider\\es_PE\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_PE/Address.php', - 'Faker\\Provider\\es_PE\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_PE/Company.php', - 'Faker\\Provider\\es_PE\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_PE/Person.php', - 'Faker\\Provider\\es_PE\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_PE/PhoneNumber.php', - 'Faker\\Provider\\es_VE\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_VE/Address.php', - 'Faker\\Provider\\es_VE\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_VE/Company.php', - 'Faker\\Provider\\es_VE\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_VE/Internet.php', - 'Faker\\Provider\\es_VE\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_VE/Person.php', - 'Faker\\Provider\\es_VE\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_VE/PhoneNumber.php', - 'Faker\\Provider\\et_EE\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/et_EE/Person.php', - 'Faker\\Provider\\fa_IR\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fa_IR/Address.php', - 'Faker\\Provider\\fa_IR\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fa_IR/Company.php', - 'Faker\\Provider\\fa_IR\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fa_IR/Internet.php', - 'Faker\\Provider\\fa_IR\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fa_IR/Person.php', - 'Faker\\Provider\\fa_IR\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fa_IR/PhoneNumber.php', - 'Faker\\Provider\\fa_IR\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fa_IR/Text.php', - 'Faker\\Provider\\fi_FI\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fi_FI/Address.php', - 'Faker\\Provider\\fi_FI\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fi_FI/Company.php', - 'Faker\\Provider\\fi_FI\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fi_FI/Internet.php', - 'Faker\\Provider\\fi_FI\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fi_FI/Payment.php', - 'Faker\\Provider\\fi_FI\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fi_FI/Person.php', - 'Faker\\Provider\\fi_FI\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fi_FI/PhoneNumber.php', - 'Faker\\Provider\\fr_BE\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_BE/Address.php', - 'Faker\\Provider\\fr_BE\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_BE/Color.php', - 'Faker\\Provider\\fr_BE\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_BE/Company.php', - 'Faker\\Provider\\fr_BE\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_BE/Internet.php', - 'Faker\\Provider\\fr_BE\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_BE/Payment.php', - 'Faker\\Provider\\fr_BE\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_BE/Person.php', - 'Faker\\Provider\\fr_BE\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_BE/PhoneNumber.php', - 'Faker\\Provider\\fr_CA\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_CA/Address.php', - 'Faker\\Provider\\fr_CA\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_CA/Color.php', - 'Faker\\Provider\\fr_CA\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_CA/Company.php', - 'Faker\\Provider\\fr_CA\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_CA/Person.php', - 'Faker\\Provider\\fr_CA\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_CA/Text.php', - 'Faker\\Provider\\fr_CH\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_CH/Address.php', - 'Faker\\Provider\\fr_CH\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_CH/Color.php', - 'Faker\\Provider\\fr_CH\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_CH/Company.php', - 'Faker\\Provider\\fr_CH\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_CH/Internet.php', - 'Faker\\Provider\\fr_CH\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_CH/Payment.php', - 'Faker\\Provider\\fr_CH\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_CH/Person.php', - 'Faker\\Provider\\fr_CH\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_CH/PhoneNumber.php', - 'Faker\\Provider\\fr_CH\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_CH/Text.php', - 'Faker\\Provider\\fr_FR\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_FR/Address.php', - 'Faker\\Provider\\fr_FR\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_FR/Color.php', - 'Faker\\Provider\\fr_FR\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_FR/Company.php', - 'Faker\\Provider\\fr_FR\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_FR/Internet.php', - 'Faker\\Provider\\fr_FR\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_FR/Payment.php', - 'Faker\\Provider\\fr_FR\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_FR/Person.php', - 'Faker\\Provider\\fr_FR\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_FR/PhoneNumber.php', - 'Faker\\Provider\\fr_FR\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_FR/Text.php', - 'Faker\\Provider\\he_IL\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/he_IL/Address.php', - 'Faker\\Provider\\he_IL\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/he_IL/Company.php', - 'Faker\\Provider\\he_IL\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/he_IL/Payment.php', - 'Faker\\Provider\\he_IL\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/he_IL/Person.php', - 'Faker\\Provider\\he_IL\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/he_IL/PhoneNumber.php', - 'Faker\\Provider\\hr_HR\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/hr_HR/Address.php', - 'Faker\\Provider\\hr_HR\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/hr_HR/Company.php', - 'Faker\\Provider\\hr_HR\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/hr_HR/Payment.php', - 'Faker\\Provider\\hr_HR\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/hr_HR/Person.php', - 'Faker\\Provider\\hr_HR\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/hr_HR/PhoneNumber.php', - 'Faker\\Provider\\hu_HU\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/hu_HU/Address.php', - 'Faker\\Provider\\hu_HU\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/hu_HU/Company.php', - 'Faker\\Provider\\hu_HU\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/hu_HU/Payment.php', - 'Faker\\Provider\\hu_HU\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/hu_HU/Person.php', - 'Faker\\Provider\\hu_HU\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/hu_HU/PhoneNumber.php', - 'Faker\\Provider\\hu_HU\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/hu_HU/Text.php', - 'Faker\\Provider\\hy_AM\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/hy_AM/Address.php', - 'Faker\\Provider\\hy_AM\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/hy_AM/Color.php', - 'Faker\\Provider\\hy_AM\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/hy_AM/Company.php', - 'Faker\\Provider\\hy_AM\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/hy_AM/Internet.php', - 'Faker\\Provider\\hy_AM\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/hy_AM/Person.php', - 'Faker\\Provider\\hy_AM\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/hy_AM/PhoneNumber.php', - 'Faker\\Provider\\id_ID\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/id_ID/Address.php', - 'Faker\\Provider\\id_ID\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/id_ID/Color.php', - 'Faker\\Provider\\id_ID\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/id_ID/Company.php', - 'Faker\\Provider\\id_ID\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/id_ID/Internet.php', - 'Faker\\Provider\\id_ID\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/id_ID/Person.php', - 'Faker\\Provider\\id_ID\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/id_ID/PhoneNumber.php', - 'Faker\\Provider\\is_IS\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/is_IS/Address.php', - 'Faker\\Provider\\is_IS\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/is_IS/Company.php', - 'Faker\\Provider\\is_IS\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/is_IS/Internet.php', - 'Faker\\Provider\\is_IS\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/is_IS/Payment.php', - 'Faker\\Provider\\is_IS\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/is_IS/Person.php', - 'Faker\\Provider\\is_IS\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/is_IS/PhoneNumber.php', - 'Faker\\Provider\\it_CH\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/it_CH/Address.php', - 'Faker\\Provider\\it_CH\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/it_CH/Company.php', - 'Faker\\Provider\\it_CH\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/it_CH/Internet.php', - 'Faker\\Provider\\it_CH\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/it_CH/Payment.php', - 'Faker\\Provider\\it_CH\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/it_CH/Person.php', - 'Faker\\Provider\\it_CH\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/it_CH/PhoneNumber.php', - 'Faker\\Provider\\it_CH\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/it_CH/Text.php', - 'Faker\\Provider\\it_IT\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/it_IT/Address.php', - 'Faker\\Provider\\it_IT\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/it_IT/Company.php', - 'Faker\\Provider\\it_IT\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/it_IT/Internet.php', - 'Faker\\Provider\\it_IT\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/it_IT/Payment.php', - 'Faker\\Provider\\it_IT\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/it_IT/Person.php', - 'Faker\\Provider\\it_IT\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/it_IT/PhoneNumber.php', - 'Faker\\Provider\\it_IT\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/it_IT/Text.php', - 'Faker\\Provider\\ja_JP\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ja_JP/Address.php', - 'Faker\\Provider\\ja_JP\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ja_JP/Company.php', - 'Faker\\Provider\\ja_JP\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ja_JP/Internet.php', - 'Faker\\Provider\\ja_JP\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ja_JP/Person.php', - 'Faker\\Provider\\ja_JP\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ja_JP/PhoneNumber.php', - 'Faker\\Provider\\ja_JP\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ja_JP/Text.php', - 'Faker\\Provider\\ka_GE\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ka_GE/Address.php', - 'Faker\\Provider\\ka_GE\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ka_GE/Color.php', - 'Faker\\Provider\\ka_GE\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ka_GE/Company.php', - 'Faker\\Provider\\ka_GE\\DateTime' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ka_GE/DateTime.php', - 'Faker\\Provider\\ka_GE\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ka_GE/Internet.php', - 'Faker\\Provider\\ka_GE\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ka_GE/Payment.php', - 'Faker\\Provider\\ka_GE\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ka_GE/Person.php', - 'Faker\\Provider\\ka_GE\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ka_GE/PhoneNumber.php', - 'Faker\\Provider\\ka_GE\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ka_GE/Text.php', - 'Faker\\Provider\\kk_KZ\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/kk_KZ/Address.php', - 'Faker\\Provider\\kk_KZ\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/kk_KZ/Color.php', - 'Faker\\Provider\\kk_KZ\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/kk_KZ/Company.php', - 'Faker\\Provider\\kk_KZ\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/kk_KZ/Internet.php', - 'Faker\\Provider\\kk_KZ\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/kk_KZ/Payment.php', - 'Faker\\Provider\\kk_KZ\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/kk_KZ/Person.php', - 'Faker\\Provider\\kk_KZ\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/kk_KZ/PhoneNumber.php', - 'Faker\\Provider\\kk_KZ\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/kk_KZ/Text.php', - 'Faker\\Provider\\ko_KR\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ko_KR/Address.php', - 'Faker\\Provider\\ko_KR\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ko_KR/Company.php', - 'Faker\\Provider\\ko_KR\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ko_KR/Internet.php', - 'Faker\\Provider\\ko_KR\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ko_KR/Person.php', - 'Faker\\Provider\\ko_KR\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ko_KR/PhoneNumber.php', - 'Faker\\Provider\\ko_KR\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ko_KR/Text.php', - 'Faker\\Provider\\lt_LT\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/lt_LT/Address.php', - 'Faker\\Provider\\lt_LT\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/lt_LT/Company.php', - 'Faker\\Provider\\lt_LT\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/lt_LT/Internet.php', - 'Faker\\Provider\\lt_LT\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/lt_LT/Payment.php', - 'Faker\\Provider\\lt_LT\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/lt_LT/Person.php', - 'Faker\\Provider\\lt_LT\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/lt_LT/PhoneNumber.php', - 'Faker\\Provider\\lv_LV\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/lv_LV/Address.php', - 'Faker\\Provider\\lv_LV\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/lv_LV/Color.php', - 'Faker\\Provider\\lv_LV\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/lv_LV/Internet.php', - 'Faker\\Provider\\lv_LV\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/lv_LV/Payment.php', - 'Faker\\Provider\\lv_LV\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/lv_LV/Person.php', - 'Faker\\Provider\\lv_LV\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/lv_LV/PhoneNumber.php', - 'Faker\\Provider\\me_ME\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/me_ME/Address.php', - 'Faker\\Provider\\me_ME\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/me_ME/Company.php', - 'Faker\\Provider\\me_ME\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/me_ME/Payment.php', - 'Faker\\Provider\\me_ME\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/me_ME/Person.php', - 'Faker\\Provider\\me_ME\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/me_ME/PhoneNumber.php', - 'Faker\\Provider\\mn_MN\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/mn_MN/Person.php', - 'Faker\\Provider\\mn_MN\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/mn_MN/PhoneNumber.php', - 'Faker\\Provider\\ms_MY\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ms_MY/Address.php', - 'Faker\\Provider\\ms_MY\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ms_MY/Company.php', - 'Faker\\Provider\\ms_MY\\Miscellaneous' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ms_MY/Miscellaneous.php', - 'Faker\\Provider\\ms_MY\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ms_MY/Payment.php', - 'Faker\\Provider\\ms_MY\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ms_MY/Person.php', - 'Faker\\Provider\\ms_MY\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ms_MY/PhoneNumber.php', - 'Faker\\Provider\\nb_NO\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nb_NO/Address.php', - 'Faker\\Provider\\nb_NO\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nb_NO/Company.php', - 'Faker\\Provider\\nb_NO\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nb_NO/Payment.php', - 'Faker\\Provider\\nb_NO\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nb_NO/Person.php', - 'Faker\\Provider\\nb_NO\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nb_NO/PhoneNumber.php', - 'Faker\\Provider\\ne_NP\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ne_NP/Address.php', - 'Faker\\Provider\\ne_NP\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ne_NP/Internet.php', - 'Faker\\Provider\\ne_NP\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ne_NP/Payment.php', - 'Faker\\Provider\\ne_NP\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ne_NP/Person.php', - 'Faker\\Provider\\ne_NP\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ne_NP/PhoneNumber.php', - 'Faker\\Provider\\nl_BE\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nl_BE/Address.php', - 'Faker\\Provider\\nl_BE\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nl_BE/Company.php', - 'Faker\\Provider\\nl_BE\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nl_BE/Internet.php', - 'Faker\\Provider\\nl_BE\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nl_BE/Payment.php', - 'Faker\\Provider\\nl_BE\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nl_BE/Person.php', - 'Faker\\Provider\\nl_BE\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nl_BE/PhoneNumber.php', - 'Faker\\Provider\\nl_BE\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nl_BE/Text.php', - 'Faker\\Provider\\nl_NL\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nl_NL/Address.php', - 'Faker\\Provider\\nl_NL\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nl_NL/Color.php', - 'Faker\\Provider\\nl_NL\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nl_NL/Company.php', - 'Faker\\Provider\\nl_NL\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nl_NL/Internet.php', - 'Faker\\Provider\\nl_NL\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nl_NL/Payment.php', - 'Faker\\Provider\\nl_NL\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nl_NL/Person.php', - 'Faker\\Provider\\nl_NL\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nl_NL/PhoneNumber.php', - 'Faker\\Provider\\nl_NL\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nl_NL/Text.php', - 'Faker\\Provider\\pl_PL\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pl_PL/Address.php', - 'Faker\\Provider\\pl_PL\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pl_PL/Color.php', - 'Faker\\Provider\\pl_PL\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pl_PL/Company.php', - 'Faker\\Provider\\pl_PL\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pl_PL/Internet.php', - 'Faker\\Provider\\pl_PL\\LicensePlate' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pl_PL/LicensePlate.php', - 'Faker\\Provider\\pl_PL\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pl_PL/Payment.php', - 'Faker\\Provider\\pl_PL\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pl_PL/Person.php', - 'Faker\\Provider\\pl_PL\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pl_PL/PhoneNumber.php', - 'Faker\\Provider\\pl_PL\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pl_PL/Text.php', - 'Faker\\Provider\\pt_BR\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pt_BR/Address.php', - 'Faker\\Provider\\pt_BR\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pt_BR/Company.php', - 'Faker\\Provider\\pt_BR\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pt_BR/Internet.php', - 'Faker\\Provider\\pt_BR\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pt_BR/Payment.php', - 'Faker\\Provider\\pt_BR\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pt_BR/Person.php', - 'Faker\\Provider\\pt_BR\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pt_BR/PhoneNumber.php', - 'Faker\\Provider\\pt_BR\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pt_BR/Text.php', - 'Faker\\Provider\\pt_PT\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pt_PT/Address.php', - 'Faker\\Provider\\pt_PT\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pt_PT/Company.php', - 'Faker\\Provider\\pt_PT\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pt_PT/Internet.php', - 'Faker\\Provider\\pt_PT\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pt_PT/Payment.php', - 'Faker\\Provider\\pt_PT\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pt_PT/Person.php', - 'Faker\\Provider\\pt_PT\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pt_PT/PhoneNumber.php', - 'Faker\\Provider\\ro_MD\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ro_MD/Address.php', - 'Faker\\Provider\\ro_MD\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ro_MD/Payment.php', - 'Faker\\Provider\\ro_MD\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ro_MD/Person.php', - 'Faker\\Provider\\ro_MD\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ro_MD/PhoneNumber.php', - 'Faker\\Provider\\ro_MD\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ro_MD/Text.php', - 'Faker\\Provider\\ro_RO\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ro_RO/Address.php', - 'Faker\\Provider\\ro_RO\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ro_RO/Payment.php', - 'Faker\\Provider\\ro_RO\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ro_RO/Person.php', - 'Faker\\Provider\\ro_RO\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ro_RO/PhoneNumber.php', - 'Faker\\Provider\\ro_RO\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ro_RO/Text.php', - 'Faker\\Provider\\ru_RU\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ru_RU/Address.php', - 'Faker\\Provider\\ru_RU\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ru_RU/Color.php', - 'Faker\\Provider\\ru_RU\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ru_RU/Company.php', - 'Faker\\Provider\\ru_RU\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ru_RU/Internet.php', - 'Faker\\Provider\\ru_RU\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ru_RU/Payment.php', - 'Faker\\Provider\\ru_RU\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ru_RU/Person.php', - 'Faker\\Provider\\ru_RU\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ru_RU/PhoneNumber.php', - 'Faker\\Provider\\ru_RU\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ru_RU/Text.php', - 'Faker\\Provider\\sk_SK\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sk_SK/Address.php', - 'Faker\\Provider\\sk_SK\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sk_SK/Company.php', - 'Faker\\Provider\\sk_SK\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sk_SK/Internet.php', - 'Faker\\Provider\\sk_SK\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sk_SK/Payment.php', - 'Faker\\Provider\\sk_SK\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sk_SK/Person.php', - 'Faker\\Provider\\sk_SK\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sk_SK/PhoneNumber.php', - 'Faker\\Provider\\sl_SI\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sl_SI/Address.php', - 'Faker\\Provider\\sl_SI\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sl_SI/Company.php', - 'Faker\\Provider\\sl_SI\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sl_SI/Internet.php', - 'Faker\\Provider\\sl_SI\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sl_SI/Payment.php', - 'Faker\\Provider\\sl_SI\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sl_SI/Person.php', - 'Faker\\Provider\\sl_SI\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sl_SI/PhoneNumber.php', - 'Faker\\Provider\\sr_Cyrl_RS\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sr_Cyrl_RS/Address.php', - 'Faker\\Provider\\sr_Cyrl_RS\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sr_Cyrl_RS/Payment.php', - 'Faker\\Provider\\sr_Cyrl_RS\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sr_Cyrl_RS/Person.php', - 'Faker\\Provider\\sr_Latn_RS\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sr_Latn_RS/Address.php', - 'Faker\\Provider\\sr_Latn_RS\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sr_Latn_RS/Payment.php', - 'Faker\\Provider\\sr_Latn_RS\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sr_Latn_RS/Person.php', - 'Faker\\Provider\\sr_RS\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sr_RS/Address.php', - 'Faker\\Provider\\sr_RS\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sr_RS/Payment.php', - 'Faker\\Provider\\sr_RS\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sr_RS/Person.php', - 'Faker\\Provider\\sv_SE\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sv_SE/Address.php', - 'Faker\\Provider\\sv_SE\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sv_SE/Company.php', - 'Faker\\Provider\\sv_SE\\Municipality' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sv_SE/Municipality.php', - 'Faker\\Provider\\sv_SE\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sv_SE/Payment.php', - 'Faker\\Provider\\sv_SE\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sv_SE/Person.php', - 'Faker\\Provider\\sv_SE\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sv_SE/PhoneNumber.php', - 'Faker\\Provider\\th_TH\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/th_TH/Address.php', - 'Faker\\Provider\\th_TH\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/th_TH/Color.php', - 'Faker\\Provider\\th_TH\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/th_TH/Company.php', - 'Faker\\Provider\\th_TH\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/th_TH/Internet.php', - 'Faker\\Provider\\th_TH\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/th_TH/Payment.php', - 'Faker\\Provider\\th_TH\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/th_TH/Person.php', - 'Faker\\Provider\\th_TH\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/th_TH/PhoneNumber.php', - 'Faker\\Provider\\tr_TR\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/tr_TR/Address.php', - 'Faker\\Provider\\tr_TR\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/tr_TR/Color.php', - 'Faker\\Provider\\tr_TR\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/tr_TR/Company.php', - 'Faker\\Provider\\tr_TR\\DateTime' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/tr_TR/DateTime.php', - 'Faker\\Provider\\tr_TR\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/tr_TR/Internet.php', - 'Faker\\Provider\\tr_TR\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/tr_TR/Payment.php', - 'Faker\\Provider\\tr_TR\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/tr_TR/Person.php', - 'Faker\\Provider\\tr_TR\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/tr_TR/PhoneNumber.php', - 'Faker\\Provider\\uk_UA\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/uk_UA/Address.php', - 'Faker\\Provider\\uk_UA\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/uk_UA/Color.php', - 'Faker\\Provider\\uk_UA\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/uk_UA/Company.php', - 'Faker\\Provider\\uk_UA\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/uk_UA/Internet.php', - 'Faker\\Provider\\uk_UA\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/uk_UA/Payment.php', - 'Faker\\Provider\\uk_UA\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/uk_UA/Person.php', - 'Faker\\Provider\\uk_UA\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/uk_UA/PhoneNumber.php', - 'Faker\\Provider\\uk_UA\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/uk_UA/Text.php', - 'Faker\\Provider\\vi_VN\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/vi_VN/Address.php', - 'Faker\\Provider\\vi_VN\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/vi_VN/Color.php', - 'Faker\\Provider\\vi_VN\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/vi_VN/Internet.php', - 'Faker\\Provider\\vi_VN\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/vi_VN/Person.php', - 'Faker\\Provider\\vi_VN\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/vi_VN/PhoneNumber.php', - 'Faker\\Provider\\zh_CN\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_CN/Address.php', - 'Faker\\Provider\\zh_CN\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_CN/Color.php', - 'Faker\\Provider\\zh_CN\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_CN/Company.php', - 'Faker\\Provider\\zh_CN\\DateTime' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_CN/DateTime.php', - 'Faker\\Provider\\zh_CN\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_CN/Internet.php', - 'Faker\\Provider\\zh_CN\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_CN/Payment.php', - 'Faker\\Provider\\zh_CN\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_CN/Person.php', - 'Faker\\Provider\\zh_CN\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_CN/PhoneNumber.php', - 'Faker\\Provider\\zh_TW\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_TW/Address.php', - 'Faker\\Provider\\zh_TW\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_TW/Color.php', - 'Faker\\Provider\\zh_TW\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_TW/Company.php', - 'Faker\\Provider\\zh_TW\\DateTime' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_TW/DateTime.php', - 'Faker\\Provider\\zh_TW\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_TW/Internet.php', - 'Faker\\Provider\\zh_TW\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_TW/Payment.php', - 'Faker\\Provider\\zh_TW\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_TW/Person.php', - 'Faker\\Provider\\zh_TW\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_TW/PhoneNumber.php', - 'Faker\\Provider\\zh_TW\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_TW/Text.php', - 'Faker\\UniqueGenerator' => $vendorDir . '/fakerphp/faker/src/Faker/UniqueGenerator.php', - 'Faker\\ValidGenerator' => $vendorDir . '/fakerphp/faker/src/Faker/ValidGenerator.php', - 'FontLib\\AdobeFontMetrics' => $vendorDir . '/phenx/php-font-lib/src/FontLib/AdobeFontMetrics.php', - 'FontLib\\BinaryStream' => $vendorDir . '/phenx/php-font-lib/src/FontLib/BinaryStream.php', - 'FontLib\\EOT\\File' => $vendorDir . '/phenx/php-font-lib/src/FontLib/EOT/File.php', - 'FontLib\\EOT\\Header' => $vendorDir . '/phenx/php-font-lib/src/FontLib/EOT/Header.php', - 'FontLib\\EncodingMap' => $vendorDir . '/phenx/php-font-lib/src/FontLib/EncodingMap.php', - 'FontLib\\Exception\\FontNotFoundException' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Exception/FontNotFoundException.php', - 'FontLib\\Font' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Font.php', - 'FontLib\\Glyph\\Outline' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Glyph/Outline.php', - 'FontLib\\Glyph\\OutlineComponent' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Glyph/OutlineComponent.php', - 'FontLib\\Glyph\\OutlineComposite' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Glyph/OutlineComposite.php', - 'FontLib\\Glyph\\OutlineSimple' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Glyph/OutlineSimple.php', - 'FontLib\\Header' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Header.php', - 'FontLib\\OpenType\\File' => $vendorDir . '/phenx/php-font-lib/src/FontLib/OpenType/File.php', - 'FontLib\\OpenType\\TableDirectoryEntry' => $vendorDir . '/phenx/php-font-lib/src/FontLib/OpenType/TableDirectoryEntry.php', - 'FontLib\\Table\\DirectoryEntry' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Table/DirectoryEntry.php', - 'FontLib\\Table\\Table' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Table/Table.php', - 'FontLib\\Table\\Type\\cmap' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Table/Type/cmap.php', - 'FontLib\\Table\\Type\\cvt' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Table/Type/cvt.php', - 'FontLib\\Table\\Type\\fpgm' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Table/Type/fpgm.php', - 'FontLib\\Table\\Type\\glyf' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Table/Type/glyf.php', - 'FontLib\\Table\\Type\\head' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Table/Type/head.php', - 'FontLib\\Table\\Type\\hhea' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Table/Type/hhea.php', - 'FontLib\\Table\\Type\\hmtx' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Table/Type/hmtx.php', - 'FontLib\\Table\\Type\\kern' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Table/Type/kern.php', - 'FontLib\\Table\\Type\\loca' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Table/Type/loca.php', - 'FontLib\\Table\\Type\\maxp' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Table/Type/maxp.php', - 'FontLib\\Table\\Type\\name' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Table/Type/name.php', - 'FontLib\\Table\\Type\\nameRecord' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Table/Type/nameRecord.php', - 'FontLib\\Table\\Type\\os2' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Table/Type/os2.php', - 'FontLib\\Table\\Type\\post' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Table/Type/post.php', - 'FontLib\\Table\\Type\\prep' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Table/Type/prep.php', - 'FontLib\\TrueType\\Collection' => $vendorDir . '/phenx/php-font-lib/src/FontLib/TrueType/Collection.php', - 'FontLib\\TrueType\\File' => $vendorDir . '/phenx/php-font-lib/src/FontLib/TrueType/File.php', - 'FontLib\\TrueType\\Header' => $vendorDir . '/phenx/php-font-lib/src/FontLib/TrueType/Header.php', - 'FontLib\\TrueType\\TableDirectoryEntry' => $vendorDir . '/phenx/php-font-lib/src/FontLib/TrueType/TableDirectoryEntry.php', - 'FontLib\\WOFF\\File' => $vendorDir . '/phenx/php-font-lib/src/FontLib/WOFF/File.php', - 'FontLib\\WOFF\\Header' => $vendorDir . '/phenx/php-font-lib/src/FontLib/WOFF/Header.php', - 'FontLib\\WOFF\\TableDirectoryEntry' => $vendorDir . '/phenx/php-font-lib/src/FontLib/WOFF/TableDirectoryEntry.php', - 'FrequentlyAskedQuestionSeeder' => $baseDir . '/database/seeders/FrequentlyAskedQuestionSeeder.php', - 'Fruitcake\\Cors\\CorsService' => $vendorDir . '/fruitcake/php-cors/src/CorsService.php', - 'Fruitcake\\Cors\\Exceptions\\InvalidOptionException' => $vendorDir . '/fruitcake/php-cors/src/Exceptions/InvalidOptionException.php', - 'Fx3costa\\LaravelChartJs\\Builder' => $vendorDir . '/fx3costa/laravelchartjs/src/Builder.php', - 'Fx3costa\\LaravelChartJs\\Providers\\ChartjsServiceProvider' => $vendorDir . '/fx3costa/laravelchartjs/src/Providers/ChartjsServiceProvider.php', - 'GrahamCampbell\\ResultType\\Error' => $vendorDir . '/graham-campbell/result-type/src/Error.php', - 'GrahamCampbell\\ResultType\\Result' => $vendorDir . '/graham-campbell/result-type/src/Result.php', - 'GrahamCampbell\\ResultType\\Success' => $vendorDir . '/graham-campbell/result-type/src/Success.php', - 'GuzzleHttp\\BodySummarizer' => $vendorDir . '/guzzlehttp/guzzle/src/BodySummarizer.php', - 'GuzzleHttp\\BodySummarizerInterface' => $vendorDir . '/guzzlehttp/guzzle/src/BodySummarizerInterface.php', - 'GuzzleHttp\\Client' => $vendorDir . '/guzzlehttp/guzzle/src/Client.php', - 'GuzzleHttp\\ClientInterface' => $vendorDir . '/guzzlehttp/guzzle/src/ClientInterface.php', - 'GuzzleHttp\\ClientTrait' => $vendorDir . '/guzzlehttp/guzzle/src/ClientTrait.php', - 'GuzzleHttp\\Cookie\\CookieJar' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/CookieJar.php', - 'GuzzleHttp\\Cookie\\CookieJarInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php', - 'GuzzleHttp\\Cookie\\FileCookieJar' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php', - 'GuzzleHttp\\Cookie\\SessionCookieJar' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php', - 'GuzzleHttp\\Cookie\\SetCookie' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/SetCookie.php', - 'GuzzleHttp\\Exception\\BadResponseException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/BadResponseException.php', - 'GuzzleHttp\\Exception\\ClientException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/ClientException.php', - 'GuzzleHttp\\Exception\\ConnectException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/ConnectException.php', - 'GuzzleHttp\\Exception\\GuzzleException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/GuzzleException.php', - 'GuzzleHttp\\Exception\\InvalidArgumentException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/InvalidArgumentException.php', - 'GuzzleHttp\\Exception\\RequestException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/RequestException.php', - 'GuzzleHttp\\Exception\\ServerException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/ServerException.php', - 'GuzzleHttp\\Exception\\TooManyRedirectsException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php', - 'GuzzleHttp\\Exception\\TransferException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/TransferException.php', - 'GuzzleHttp\\HandlerStack' => $vendorDir . '/guzzlehttp/guzzle/src/HandlerStack.php', - 'GuzzleHttp\\Handler\\CurlFactory' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/CurlFactory.php', - 'GuzzleHttp\\Handler\\CurlFactoryInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php', - 'GuzzleHttp\\Handler\\CurlHandler' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/CurlHandler.php', - 'GuzzleHttp\\Handler\\CurlMultiHandler' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php', - 'GuzzleHttp\\Handler\\EasyHandle' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/EasyHandle.php', - 'GuzzleHttp\\Handler\\HeaderProcessor' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php', - 'GuzzleHttp\\Handler\\MockHandler' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/MockHandler.php', - 'GuzzleHttp\\Handler\\Proxy' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/Proxy.php', - 'GuzzleHttp\\Handler\\StreamHandler' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/StreamHandler.php', - 'GuzzleHttp\\MessageFormatter' => $vendorDir . '/guzzlehttp/guzzle/src/MessageFormatter.php', - 'GuzzleHttp\\MessageFormatterInterface' => $vendorDir . '/guzzlehttp/guzzle/src/MessageFormatterInterface.php', - 'GuzzleHttp\\Middleware' => $vendorDir . '/guzzlehttp/guzzle/src/Middleware.php', - 'GuzzleHttp\\Pool' => $vendorDir . '/guzzlehttp/guzzle/src/Pool.php', - 'GuzzleHttp\\PrepareBodyMiddleware' => $vendorDir . '/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php', - 'GuzzleHttp\\Promise\\AggregateException' => $vendorDir . '/guzzlehttp/promises/src/AggregateException.php', - 'GuzzleHttp\\Promise\\CancellationException' => $vendorDir . '/guzzlehttp/promises/src/CancellationException.php', - 'GuzzleHttp\\Promise\\Coroutine' => $vendorDir . '/guzzlehttp/promises/src/Coroutine.php', - 'GuzzleHttp\\Promise\\Create' => $vendorDir . '/guzzlehttp/promises/src/Create.php', - 'GuzzleHttp\\Promise\\Each' => $vendorDir . '/guzzlehttp/promises/src/Each.php', - 'GuzzleHttp\\Promise\\EachPromise' => $vendorDir . '/guzzlehttp/promises/src/EachPromise.php', - 'GuzzleHttp\\Promise\\FulfilledPromise' => $vendorDir . '/guzzlehttp/promises/src/FulfilledPromise.php', - 'GuzzleHttp\\Promise\\Is' => $vendorDir . '/guzzlehttp/promises/src/Is.php', - 'GuzzleHttp\\Promise\\Promise' => $vendorDir . '/guzzlehttp/promises/src/Promise.php', - 'GuzzleHttp\\Promise\\PromiseInterface' => $vendorDir . '/guzzlehttp/promises/src/PromiseInterface.php', - 'GuzzleHttp\\Promise\\PromisorInterface' => $vendorDir . '/guzzlehttp/promises/src/PromisorInterface.php', - 'GuzzleHttp\\Promise\\RejectedPromise' => $vendorDir . '/guzzlehttp/promises/src/RejectedPromise.php', - 'GuzzleHttp\\Promise\\RejectionException' => $vendorDir . '/guzzlehttp/promises/src/RejectionException.php', - 'GuzzleHttp\\Promise\\TaskQueue' => $vendorDir . '/guzzlehttp/promises/src/TaskQueue.php', - 'GuzzleHttp\\Promise\\TaskQueueInterface' => $vendorDir . '/guzzlehttp/promises/src/TaskQueueInterface.php', - 'GuzzleHttp\\Promise\\Utils' => $vendorDir . '/guzzlehttp/promises/src/Utils.php', - 'GuzzleHttp\\Psr7\\AppendStream' => $vendorDir . '/guzzlehttp/psr7/src/AppendStream.php', - 'GuzzleHttp\\Psr7\\BufferStream' => $vendorDir . '/guzzlehttp/psr7/src/BufferStream.php', - 'GuzzleHttp\\Psr7\\CachingStream' => $vendorDir . '/guzzlehttp/psr7/src/CachingStream.php', - 'GuzzleHttp\\Psr7\\DroppingStream' => $vendorDir . '/guzzlehttp/psr7/src/DroppingStream.php', - 'GuzzleHttp\\Psr7\\Exception\\MalformedUriException' => $vendorDir . '/guzzlehttp/psr7/src/Exception/MalformedUriException.php', - 'GuzzleHttp\\Psr7\\FnStream' => $vendorDir . '/guzzlehttp/psr7/src/FnStream.php', - 'GuzzleHttp\\Psr7\\Header' => $vendorDir . '/guzzlehttp/psr7/src/Header.php', - 'GuzzleHttp\\Psr7\\HttpFactory' => $vendorDir . '/guzzlehttp/psr7/src/HttpFactory.php', - 'GuzzleHttp\\Psr7\\InflateStream' => $vendorDir . '/guzzlehttp/psr7/src/InflateStream.php', - 'GuzzleHttp\\Psr7\\LazyOpenStream' => $vendorDir . '/guzzlehttp/psr7/src/LazyOpenStream.php', - 'GuzzleHttp\\Psr7\\LimitStream' => $vendorDir . '/guzzlehttp/psr7/src/LimitStream.php', - 'GuzzleHttp\\Psr7\\Message' => $vendorDir . '/guzzlehttp/psr7/src/Message.php', - 'GuzzleHttp\\Psr7\\MessageTrait' => $vendorDir . '/guzzlehttp/psr7/src/MessageTrait.php', - 'GuzzleHttp\\Psr7\\MimeType' => $vendorDir . '/guzzlehttp/psr7/src/MimeType.php', - 'GuzzleHttp\\Psr7\\MultipartStream' => $vendorDir . '/guzzlehttp/psr7/src/MultipartStream.php', - 'GuzzleHttp\\Psr7\\NoSeekStream' => $vendorDir . '/guzzlehttp/psr7/src/NoSeekStream.php', - 'GuzzleHttp\\Psr7\\PumpStream' => $vendorDir . '/guzzlehttp/psr7/src/PumpStream.php', - 'GuzzleHttp\\Psr7\\Query' => $vendorDir . '/guzzlehttp/psr7/src/Query.php', - 'GuzzleHttp\\Psr7\\Request' => $vendorDir . '/guzzlehttp/psr7/src/Request.php', - 'GuzzleHttp\\Psr7\\Response' => $vendorDir . '/guzzlehttp/psr7/src/Response.php', - 'GuzzleHttp\\Psr7\\Rfc7230' => $vendorDir . '/guzzlehttp/psr7/src/Rfc7230.php', - 'GuzzleHttp\\Psr7\\ServerRequest' => $vendorDir . '/guzzlehttp/psr7/src/ServerRequest.php', - 'GuzzleHttp\\Psr7\\Stream' => $vendorDir . '/guzzlehttp/psr7/src/Stream.php', - 'GuzzleHttp\\Psr7\\StreamDecoratorTrait' => $vendorDir . '/guzzlehttp/psr7/src/StreamDecoratorTrait.php', - 'GuzzleHttp\\Psr7\\StreamWrapper' => $vendorDir . '/guzzlehttp/psr7/src/StreamWrapper.php', - 'GuzzleHttp\\Psr7\\UploadedFile' => $vendorDir . '/guzzlehttp/psr7/src/UploadedFile.php', - 'GuzzleHttp\\Psr7\\Uri' => $vendorDir . '/guzzlehttp/psr7/src/Uri.php', - 'GuzzleHttp\\Psr7\\UriComparator' => $vendorDir . '/guzzlehttp/psr7/src/UriComparator.php', - 'GuzzleHttp\\Psr7\\UriNormalizer' => $vendorDir . '/guzzlehttp/psr7/src/UriNormalizer.php', - 'GuzzleHttp\\Psr7\\UriResolver' => $vendorDir . '/guzzlehttp/psr7/src/UriResolver.php', - 'GuzzleHttp\\Psr7\\Utils' => $vendorDir . '/guzzlehttp/psr7/src/Utils.php', - 'GuzzleHttp\\RedirectMiddleware' => $vendorDir . '/guzzlehttp/guzzle/src/RedirectMiddleware.php', - 'GuzzleHttp\\RequestOptions' => $vendorDir . '/guzzlehttp/guzzle/src/RequestOptions.php', - 'GuzzleHttp\\RetryMiddleware' => $vendorDir . '/guzzlehttp/guzzle/src/RetryMiddleware.php', - 'GuzzleHttp\\TransferStats' => $vendorDir . '/guzzlehttp/guzzle/src/TransferStats.php', - 'GuzzleHttp\\UriTemplate\\UriTemplate' => $vendorDir . '/guzzlehttp/uri-template/src/UriTemplate.php', - 'GuzzleHttp\\Utils' => $vendorDir . '/guzzlehttp/guzzle/src/Utils.php', - 'Hamcrest\\Arrays\\IsArray' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArray.php', - 'Hamcrest\\Arrays\\IsArrayContaining' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContaining.php', - 'Hamcrest\\Arrays\\IsArrayContainingInAnyOrder' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingInAnyOrder.php', - 'Hamcrest\\Arrays\\IsArrayContainingInOrder' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingInOrder.php', - 'Hamcrest\\Arrays\\IsArrayContainingKey' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingKey.php', - 'Hamcrest\\Arrays\\IsArrayContainingKeyValuePair' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingKeyValuePair.php', - 'Hamcrest\\Arrays\\IsArrayWithSize' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayWithSize.php', - 'Hamcrest\\Arrays\\MatchingOnce' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/MatchingOnce.php', - 'Hamcrest\\Arrays\\SeriesMatchingOnce' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/SeriesMatchingOnce.php', - 'Hamcrest\\AssertionError' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/AssertionError.php', - 'Hamcrest\\BaseDescription' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/BaseDescription.php', - 'Hamcrest\\BaseMatcher' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/BaseMatcher.php', - 'Hamcrest\\Collection\\IsEmptyTraversable' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Collection/IsEmptyTraversable.php', - 'Hamcrest\\Collection\\IsTraversableWithSize' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Collection/IsTraversableWithSize.php', - 'Hamcrest\\Core\\AllOf' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/AllOf.php', - 'Hamcrest\\Core\\AnyOf' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/AnyOf.php', - 'Hamcrest\\Core\\CombinableMatcher' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/CombinableMatcher.php', - 'Hamcrest\\Core\\DescribedAs' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/DescribedAs.php', - 'Hamcrest\\Core\\Every' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/Every.php', - 'Hamcrest\\Core\\HasToString' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/HasToString.php', - 'Hamcrest\\Core\\Is' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/Is.php', - 'Hamcrest\\Core\\IsAnything' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsAnything.php', - 'Hamcrest\\Core\\IsCollectionContaining' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsCollectionContaining.php', - 'Hamcrest\\Core\\IsEqual' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsEqual.php', - 'Hamcrest\\Core\\IsIdentical' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsIdentical.php', - 'Hamcrest\\Core\\IsInstanceOf' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsInstanceOf.php', - 'Hamcrest\\Core\\IsNot' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsNot.php', - 'Hamcrest\\Core\\IsNull' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsNull.php', - 'Hamcrest\\Core\\IsSame' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsSame.php', - 'Hamcrest\\Core\\IsTypeOf' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsTypeOf.php', - 'Hamcrest\\Core\\Set' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/Set.php', - 'Hamcrest\\Core\\ShortcutCombination' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/ShortcutCombination.php', - 'Hamcrest\\Description' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Description.php', - 'Hamcrest\\DiagnosingMatcher' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/DiagnosingMatcher.php', - 'Hamcrest\\FeatureMatcher' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/FeatureMatcher.php', - 'Hamcrest\\Internal\\SelfDescribingValue' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Internal/SelfDescribingValue.php', - 'Hamcrest\\Matcher' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Matcher.php', - 'Hamcrest\\MatcherAssert' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/MatcherAssert.php', - 'Hamcrest\\Matchers' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Matchers.php', - 'Hamcrest\\NullDescription' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/NullDescription.php', - 'Hamcrest\\Number\\IsCloseTo' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Number/IsCloseTo.php', - 'Hamcrest\\Number\\OrderingComparison' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Number/OrderingComparison.php', - 'Hamcrest\\SelfDescribing' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/SelfDescribing.php', - 'Hamcrest\\StringDescription' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/StringDescription.php', - 'Hamcrest\\Text\\IsEmptyString' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/IsEmptyString.php', - 'Hamcrest\\Text\\IsEqualIgnoringCase' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/IsEqualIgnoringCase.php', - 'Hamcrest\\Text\\IsEqualIgnoringWhiteSpace' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/IsEqualIgnoringWhiteSpace.php', - 'Hamcrest\\Text\\MatchesPattern' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/MatchesPattern.php', - 'Hamcrest\\Text\\StringContains' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringContains.php', - 'Hamcrest\\Text\\StringContainsIgnoringCase' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringContainsIgnoringCase.php', - 'Hamcrest\\Text\\StringContainsInOrder' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringContainsInOrder.php', - 'Hamcrest\\Text\\StringEndsWith' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringEndsWith.php', - 'Hamcrest\\Text\\StringStartsWith' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringStartsWith.php', - 'Hamcrest\\Text\\SubstringMatcher' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/SubstringMatcher.php', - 'Hamcrest\\TypeSafeDiagnosingMatcher' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/TypeSafeDiagnosingMatcher.php', - 'Hamcrest\\TypeSafeMatcher' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/TypeSafeMatcher.php', - 'Hamcrest\\Type\\IsArray' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsArray.php', - 'Hamcrest\\Type\\IsBoolean' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsBoolean.php', - 'Hamcrest\\Type\\IsCallable' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsCallable.php', - 'Hamcrest\\Type\\IsDouble' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsDouble.php', - 'Hamcrest\\Type\\IsInteger' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsInteger.php', - 'Hamcrest\\Type\\IsNumeric' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsNumeric.php', - 'Hamcrest\\Type\\IsObject' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsObject.php', - 'Hamcrest\\Type\\IsResource' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsResource.php', - 'Hamcrest\\Type\\IsScalar' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsScalar.php', - 'Hamcrest\\Type\\IsString' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsString.php', - 'Hamcrest\\Util' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Util.php', - 'Hamcrest\\Xml\\HasXPath' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Xml/HasXPath.php', - 'HmisInvestigationCategoryTableSeeder' => $baseDir . '/database/seeders/HmisInvestigationCategoryTableSeeder.php', - 'Illuminate\\Auth\\Access\\AuthorizationException' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Access/AuthorizationException.php', - 'Illuminate\\Auth\\Access\\Events\\GateEvaluated' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Access/Events/GateEvaluated.php', - 'Illuminate\\Auth\\Access\\Gate' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Access/Gate.php', - 'Illuminate\\Auth\\Access\\HandlesAuthorization' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Access/HandlesAuthorization.php', - 'Illuminate\\Auth\\Access\\Response' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Access/Response.php', - 'Illuminate\\Auth\\AuthManager' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/AuthManager.php', - 'Illuminate\\Auth\\AuthServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/AuthServiceProvider.php', - 'Illuminate\\Auth\\Authenticatable' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Authenticatable.php', - 'Illuminate\\Auth\\AuthenticationException' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/AuthenticationException.php', - 'Illuminate\\Auth\\Console\\ClearResetsCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Console/ClearResetsCommand.php', - 'Illuminate\\Auth\\CreatesUserProviders' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/CreatesUserProviders.php', - 'Illuminate\\Auth\\DatabaseUserProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/DatabaseUserProvider.php', - 'Illuminate\\Auth\\EloquentUserProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/EloquentUserProvider.php', - 'Illuminate\\Auth\\Events\\Attempting' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Events/Attempting.php', - 'Illuminate\\Auth\\Events\\Authenticated' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Events/Authenticated.php', - 'Illuminate\\Auth\\Events\\CurrentDeviceLogout' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Events/CurrentDeviceLogout.php', - 'Illuminate\\Auth\\Events\\Failed' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Events/Failed.php', - 'Illuminate\\Auth\\Events\\Lockout' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Events/Lockout.php', - 'Illuminate\\Auth\\Events\\Login' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Events/Login.php', - 'Illuminate\\Auth\\Events\\Logout' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Events/Logout.php', - 'Illuminate\\Auth\\Events\\OtherDeviceLogout' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Events/OtherDeviceLogout.php', - 'Illuminate\\Auth\\Events\\PasswordReset' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Events/PasswordReset.php', - 'Illuminate\\Auth\\Events\\Registered' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Events/Registered.php', - 'Illuminate\\Auth\\Events\\Validated' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Events/Validated.php', - 'Illuminate\\Auth\\Events\\Verified' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Events/Verified.php', - 'Illuminate\\Auth\\GenericUser' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/GenericUser.php', - 'Illuminate\\Auth\\GuardHelpers' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/GuardHelpers.php', - 'Illuminate\\Auth\\Listeners\\SendEmailVerificationNotification' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Listeners/SendEmailVerificationNotification.php', - 'Illuminate\\Auth\\Middleware\\Authenticate' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php', - 'Illuminate\\Auth\\Middleware\\AuthenticateWithBasicAuth' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Middleware/AuthenticateWithBasicAuth.php', - 'Illuminate\\Auth\\Middleware\\Authorize' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Middleware/Authorize.php', - 'Illuminate\\Auth\\Middleware\\EnsureEmailIsVerified' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Middleware/EnsureEmailIsVerified.php', - 'Illuminate\\Auth\\Middleware\\RequirePassword' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Middleware/RequirePassword.php', - 'Illuminate\\Auth\\MustVerifyEmail' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/MustVerifyEmail.php', - 'Illuminate\\Auth\\Notifications\\ResetPassword' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Notifications/ResetPassword.php', - 'Illuminate\\Auth\\Notifications\\VerifyEmail' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Notifications/VerifyEmail.php', - 'Illuminate\\Auth\\Passwords\\CanResetPassword' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Passwords/CanResetPassword.php', - 'Illuminate\\Auth\\Passwords\\DatabaseTokenRepository' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Passwords/DatabaseTokenRepository.php', - 'Illuminate\\Auth\\Passwords\\PasswordBroker' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBroker.php', - 'Illuminate\\Auth\\Passwords\\PasswordBrokerManager' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBrokerManager.php', - 'Illuminate\\Auth\\Passwords\\PasswordResetServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Passwords/PasswordResetServiceProvider.php', - 'Illuminate\\Auth\\Passwords\\TokenRepositoryInterface' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Passwords/TokenRepositoryInterface.php', - 'Illuminate\\Auth\\Recaller' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Recaller.php', - 'Illuminate\\Auth\\RequestGuard' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/RequestGuard.php', - 'Illuminate\\Auth\\SessionGuard' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/SessionGuard.php', - 'Illuminate\\Auth\\TokenGuard' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/TokenGuard.php', - 'Illuminate\\Broadcasting\\BroadcastController' => $vendorDir . '/laravel/framework/src/Illuminate/Broadcasting/BroadcastController.php', - 'Illuminate\\Broadcasting\\BroadcastEvent' => $vendorDir . '/laravel/framework/src/Illuminate/Broadcasting/BroadcastEvent.php', - 'Illuminate\\Broadcasting\\BroadcastException' => $vendorDir . '/laravel/framework/src/Illuminate/Broadcasting/BroadcastException.php', - 'Illuminate\\Broadcasting\\BroadcastManager' => $vendorDir . '/laravel/framework/src/Illuminate/Broadcasting/BroadcastManager.php', - 'Illuminate\\Broadcasting\\BroadcastServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Broadcasting/BroadcastServiceProvider.php', - 'Illuminate\\Broadcasting\\Broadcasters\\AblyBroadcaster' => $vendorDir . '/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/AblyBroadcaster.php', - 'Illuminate\\Broadcasting\\Broadcasters\\Broadcaster' => $vendorDir . '/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/Broadcaster.php', - 'Illuminate\\Broadcasting\\Broadcasters\\LogBroadcaster' => $vendorDir . '/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/LogBroadcaster.php', - 'Illuminate\\Broadcasting\\Broadcasters\\NullBroadcaster' => $vendorDir . '/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/NullBroadcaster.php', - 'Illuminate\\Broadcasting\\Broadcasters\\PusherBroadcaster' => $vendorDir . '/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/PusherBroadcaster.php', - 'Illuminate\\Broadcasting\\Broadcasters\\RedisBroadcaster' => $vendorDir . '/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/RedisBroadcaster.php', - 'Illuminate\\Broadcasting\\Broadcasters\\UsePusherChannelConventions' => $vendorDir . '/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/UsePusherChannelConventions.php', - 'Illuminate\\Broadcasting\\Channel' => $vendorDir . '/laravel/framework/src/Illuminate/Broadcasting/Channel.php', - 'Illuminate\\Broadcasting\\EncryptedPrivateChannel' => $vendorDir . '/laravel/framework/src/Illuminate/Broadcasting/EncryptedPrivateChannel.php', - 'Illuminate\\Broadcasting\\InteractsWithBroadcasting' => $vendorDir . '/laravel/framework/src/Illuminate/Broadcasting/InteractsWithBroadcasting.php', - 'Illuminate\\Broadcasting\\InteractsWithSockets' => $vendorDir . '/laravel/framework/src/Illuminate/Broadcasting/InteractsWithSockets.php', - 'Illuminate\\Broadcasting\\PendingBroadcast' => $vendorDir . '/laravel/framework/src/Illuminate/Broadcasting/PendingBroadcast.php', - 'Illuminate\\Broadcasting\\PresenceChannel' => $vendorDir . '/laravel/framework/src/Illuminate/Broadcasting/PresenceChannel.php', - 'Illuminate\\Broadcasting\\PrivateChannel' => $vendorDir . '/laravel/framework/src/Illuminate/Broadcasting/PrivateChannel.php', - 'Illuminate\\Broadcasting\\UniqueBroadcastEvent' => $vendorDir . '/laravel/framework/src/Illuminate/Broadcasting/UniqueBroadcastEvent.php', - 'Illuminate\\Bus\\Batch' => $vendorDir . '/laravel/framework/src/Illuminate/Bus/Batch.php', - 'Illuminate\\Bus\\BatchFactory' => $vendorDir . '/laravel/framework/src/Illuminate/Bus/BatchFactory.php', - 'Illuminate\\Bus\\BatchRepository' => $vendorDir . '/laravel/framework/src/Illuminate/Bus/BatchRepository.php', - 'Illuminate\\Bus\\Batchable' => $vendorDir . '/laravel/framework/src/Illuminate/Bus/Batchable.php', - 'Illuminate\\Bus\\BusServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Bus/BusServiceProvider.php', - 'Illuminate\\Bus\\ChainedBatch' => $vendorDir . '/laravel/framework/src/Illuminate/Bus/ChainedBatch.php', - 'Illuminate\\Bus\\DatabaseBatchRepository' => $vendorDir . '/laravel/framework/src/Illuminate/Bus/DatabaseBatchRepository.php', - 'Illuminate\\Bus\\Dispatcher' => $vendorDir . '/laravel/framework/src/Illuminate/Bus/Dispatcher.php', - 'Illuminate\\Bus\\DynamoBatchRepository' => $vendorDir . '/laravel/framework/src/Illuminate/Bus/DynamoBatchRepository.php', - 'Illuminate\\Bus\\Events\\BatchDispatched' => $vendorDir . '/laravel/framework/src/Illuminate/Bus/Events/BatchDispatched.php', - 'Illuminate\\Bus\\PendingBatch' => $vendorDir . '/laravel/framework/src/Illuminate/Bus/PendingBatch.php', - 'Illuminate\\Bus\\PrunableBatchRepository' => $vendorDir . '/laravel/framework/src/Illuminate/Bus/PrunableBatchRepository.php', - 'Illuminate\\Bus\\Queueable' => $vendorDir . '/laravel/framework/src/Illuminate/Bus/Queueable.php', - 'Illuminate\\Bus\\UniqueLock' => $vendorDir . '/laravel/framework/src/Illuminate/Bus/UniqueLock.php', - 'Illuminate\\Bus\\UpdatedBatchJobCounts' => $vendorDir . '/laravel/framework/src/Illuminate/Bus/UpdatedBatchJobCounts.php', - 'Illuminate\\Cache\\ApcStore' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/ApcStore.php', - 'Illuminate\\Cache\\ApcWrapper' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/ApcWrapper.php', - 'Illuminate\\Cache\\ArrayLock' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/ArrayLock.php', - 'Illuminate\\Cache\\ArrayStore' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/ArrayStore.php', - 'Illuminate\\Cache\\CacheLock' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/CacheLock.php', - 'Illuminate\\Cache\\CacheManager' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/CacheManager.php', - 'Illuminate\\Cache\\CacheServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/CacheServiceProvider.php', - 'Illuminate\\Cache\\Console\\CacheTableCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/Console/CacheTableCommand.php', - 'Illuminate\\Cache\\Console\\ClearCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/Console/ClearCommand.php', - 'Illuminate\\Cache\\Console\\ForgetCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/Console/ForgetCommand.php', - 'Illuminate\\Cache\\Console\\PruneStaleTagsCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/Console/PruneStaleTagsCommand.php', - 'Illuminate\\Cache\\DatabaseLock' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/DatabaseLock.php', - 'Illuminate\\Cache\\DatabaseStore' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/DatabaseStore.php', - 'Illuminate\\Cache\\DynamoDbLock' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/DynamoDbLock.php', - 'Illuminate\\Cache\\DynamoDbStore' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/DynamoDbStore.php', - 'Illuminate\\Cache\\Events\\CacheEvent' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/Events/CacheEvent.php', - 'Illuminate\\Cache\\Events\\CacheHit' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/Events/CacheHit.php', - 'Illuminate\\Cache\\Events\\CacheMissed' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/Events/CacheMissed.php', - 'Illuminate\\Cache\\Events\\KeyForgotten' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/Events/KeyForgotten.php', - 'Illuminate\\Cache\\Events\\KeyWritten' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/Events/KeyWritten.php', - 'Illuminate\\Cache\\FileLock' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/FileLock.php', - 'Illuminate\\Cache\\FileStore' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/FileStore.php', - 'Illuminate\\Cache\\HasCacheLock' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/HasCacheLock.php', - 'Illuminate\\Cache\\Lock' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/Lock.php', - 'Illuminate\\Cache\\LuaScripts' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/LuaScripts.php', - 'Illuminate\\Cache\\MemcachedConnector' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/MemcachedConnector.php', - 'Illuminate\\Cache\\MemcachedLock' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/MemcachedLock.php', - 'Illuminate\\Cache\\MemcachedStore' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/MemcachedStore.php', - 'Illuminate\\Cache\\NoLock' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/NoLock.php', - 'Illuminate\\Cache\\NullStore' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/NullStore.php', - 'Illuminate\\Cache\\PhpRedisLock' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/PhpRedisLock.php', - 'Illuminate\\Cache\\RateLimiter' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/RateLimiter.php', - 'Illuminate\\Cache\\RateLimiting\\GlobalLimit' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/RateLimiting/GlobalLimit.php', - 'Illuminate\\Cache\\RateLimiting\\Limit' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/RateLimiting/Limit.php', - 'Illuminate\\Cache\\RateLimiting\\Unlimited' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/RateLimiting/Unlimited.php', - 'Illuminate\\Cache\\RedisLock' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/RedisLock.php', - 'Illuminate\\Cache\\RedisStore' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/RedisStore.php', - 'Illuminate\\Cache\\RedisTagSet' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/RedisTagSet.php', - 'Illuminate\\Cache\\RedisTaggedCache' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/RedisTaggedCache.php', - 'Illuminate\\Cache\\Repository' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/Repository.php', - 'Illuminate\\Cache\\RetrievesMultipleKeys' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/RetrievesMultipleKeys.php', - 'Illuminate\\Cache\\TagSet' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/TagSet.php', - 'Illuminate\\Cache\\TaggableStore' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/TaggableStore.php', - 'Illuminate\\Cache\\TaggedCache' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/TaggedCache.php', - 'Illuminate\\Config\\Repository' => $vendorDir . '/laravel/framework/src/Illuminate/Config/Repository.php', - 'Illuminate\\Console\\Application' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Application.php', - 'Illuminate\\Console\\BufferedConsoleOutput' => $vendorDir . '/laravel/framework/src/Illuminate/Console/BufferedConsoleOutput.php', - 'Illuminate\\Console\\CacheCommandMutex' => $vendorDir . '/laravel/framework/src/Illuminate/Console/CacheCommandMutex.php', - 'Illuminate\\Console\\Command' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Command.php', - 'Illuminate\\Console\\CommandMutex' => $vendorDir . '/laravel/framework/src/Illuminate/Console/CommandMutex.php', - 'Illuminate\\Console\\Concerns\\CallsCommands' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Concerns/CallsCommands.php', - 'Illuminate\\Console\\Concerns\\ConfiguresPrompts' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Concerns/ConfiguresPrompts.php', - 'Illuminate\\Console\\Concerns\\CreatesMatchingTest' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Concerns/CreatesMatchingTest.php', - 'Illuminate\\Console\\Concerns\\HasParameters' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Concerns/HasParameters.php', - 'Illuminate\\Console\\Concerns\\InteractsWithIO' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Concerns/InteractsWithIO.php', - 'Illuminate\\Console\\Concerns\\InteractsWithSignals' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Concerns/InteractsWithSignals.php', - 'Illuminate\\Console\\Concerns\\PromptsForMissingInput' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Concerns/PromptsForMissingInput.php', - 'Illuminate\\Console\\ConfirmableTrait' => $vendorDir . '/laravel/framework/src/Illuminate/Console/ConfirmableTrait.php', - 'Illuminate\\Console\\ContainerCommandLoader' => $vendorDir . '/laravel/framework/src/Illuminate/Console/ContainerCommandLoader.php', - 'Illuminate\\Console\\Contracts\\NewLineAware' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Contracts/NewLineAware.php', - 'Illuminate\\Console\\Events\\ArtisanStarting' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Events/ArtisanStarting.php', - 'Illuminate\\Console\\Events\\CommandFinished' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Events/CommandFinished.php', - 'Illuminate\\Console\\Events\\CommandStarting' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Events/CommandStarting.php', - 'Illuminate\\Console\\Events\\ScheduledBackgroundTaskFinished' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Events/ScheduledBackgroundTaskFinished.php', - 'Illuminate\\Console\\Events\\ScheduledTaskFailed' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Events/ScheduledTaskFailed.php', - 'Illuminate\\Console\\Events\\ScheduledTaskFinished' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Events/ScheduledTaskFinished.php', - 'Illuminate\\Console\\Events\\ScheduledTaskSkipped' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Events/ScheduledTaskSkipped.php', - 'Illuminate\\Console\\Events\\ScheduledTaskStarting' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Events/ScheduledTaskStarting.php', - 'Illuminate\\Console\\GeneratorCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Console/GeneratorCommand.php', - 'Illuminate\\Console\\MigrationGeneratorCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Console/MigrationGeneratorCommand.php', - 'Illuminate\\Console\\OutputStyle' => $vendorDir . '/laravel/framework/src/Illuminate/Console/OutputStyle.php', - 'Illuminate\\Console\\Parser' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Parser.php', - 'Illuminate\\Console\\PromptValidationException' => $vendorDir . '/laravel/framework/src/Illuminate/Console/PromptValidationException.php', - 'Illuminate\\Console\\QuestionHelper' => $vendorDir . '/laravel/framework/src/Illuminate/Console/QuestionHelper.php', - 'Illuminate\\Console\\Scheduling\\CacheAware' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Scheduling/CacheAware.php', - 'Illuminate\\Console\\Scheduling\\CacheEventMutex' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Scheduling/CacheEventMutex.php', - 'Illuminate\\Console\\Scheduling\\CacheSchedulingMutex' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Scheduling/CacheSchedulingMutex.php', - 'Illuminate\\Console\\Scheduling\\CallbackEvent' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Scheduling/CallbackEvent.php', - 'Illuminate\\Console\\Scheduling\\CommandBuilder' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Scheduling/CommandBuilder.php', - 'Illuminate\\Console\\Scheduling\\Event' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Scheduling/Event.php', - 'Illuminate\\Console\\Scheduling\\EventMutex' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Scheduling/EventMutex.php', - 'Illuminate\\Console\\Scheduling\\ManagesFrequencies' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Scheduling/ManagesFrequencies.php', - 'Illuminate\\Console\\Scheduling\\Schedule' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Scheduling/Schedule.php', - 'Illuminate\\Console\\Scheduling\\ScheduleClearCacheCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Scheduling/ScheduleClearCacheCommand.php', - 'Illuminate\\Console\\Scheduling\\ScheduleFinishCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Scheduling/ScheduleFinishCommand.php', - 'Illuminate\\Console\\Scheduling\\ScheduleInterruptCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Scheduling/ScheduleInterruptCommand.php', - 'Illuminate\\Console\\Scheduling\\ScheduleListCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Scheduling/ScheduleListCommand.php', - 'Illuminate\\Console\\Scheduling\\ScheduleRunCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Scheduling/ScheduleRunCommand.php', - 'Illuminate\\Console\\Scheduling\\ScheduleTestCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Scheduling/ScheduleTestCommand.php', - 'Illuminate\\Console\\Scheduling\\ScheduleWorkCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Scheduling/ScheduleWorkCommand.php', - 'Illuminate\\Console\\Scheduling\\SchedulingMutex' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Scheduling/SchedulingMutex.php', - 'Illuminate\\Console\\Signals' => $vendorDir . '/laravel/framework/src/Illuminate/Console/Signals.php', - 'Illuminate\\Console\\View\\Components\\Alert' => $vendorDir . '/laravel/framework/src/Illuminate/Console/View/Components/Alert.php', - 'Illuminate\\Console\\View\\Components\\Ask' => $vendorDir . '/laravel/framework/src/Illuminate/Console/View/Components/Ask.php', - 'Illuminate\\Console\\View\\Components\\AskWithCompletion' => $vendorDir . '/laravel/framework/src/Illuminate/Console/View/Components/AskWithCompletion.php', - 'Illuminate\\Console\\View\\Components\\BulletList' => $vendorDir . '/laravel/framework/src/Illuminate/Console/View/Components/BulletList.php', - 'Illuminate\\Console\\View\\Components\\Choice' => $vendorDir . '/laravel/framework/src/Illuminate/Console/View/Components/Choice.php', - 'Illuminate\\Console\\View\\Components\\Component' => $vendorDir . '/laravel/framework/src/Illuminate/Console/View/Components/Component.php', - 'Illuminate\\Console\\View\\Components\\Confirm' => $vendorDir . '/laravel/framework/src/Illuminate/Console/View/Components/Confirm.php', - 'Illuminate\\Console\\View\\Components\\Error' => $vendorDir . '/laravel/framework/src/Illuminate/Console/View/Components/Error.php', - 'Illuminate\\Console\\View\\Components\\Factory' => $vendorDir . '/laravel/framework/src/Illuminate/Console/View/Components/Factory.php', - 'Illuminate\\Console\\View\\Components\\Info' => $vendorDir . '/laravel/framework/src/Illuminate/Console/View/Components/Info.php', - 'Illuminate\\Console\\View\\Components\\Line' => $vendorDir . '/laravel/framework/src/Illuminate/Console/View/Components/Line.php', - 'Illuminate\\Console\\View\\Components\\Mutators\\EnsureDynamicContentIsHighlighted' => $vendorDir . '/laravel/framework/src/Illuminate/Console/View/Components/Mutators/EnsureDynamicContentIsHighlighted.php', - 'Illuminate\\Console\\View\\Components\\Mutators\\EnsureNoPunctuation' => $vendorDir . '/laravel/framework/src/Illuminate/Console/View/Components/Mutators/EnsureNoPunctuation.php', - 'Illuminate\\Console\\View\\Components\\Mutators\\EnsurePunctuation' => $vendorDir . '/laravel/framework/src/Illuminate/Console/View/Components/Mutators/EnsurePunctuation.php', - 'Illuminate\\Console\\View\\Components\\Mutators\\EnsureRelativePaths' => $vendorDir . '/laravel/framework/src/Illuminate/Console/View/Components/Mutators/EnsureRelativePaths.php', - 'Illuminate\\Console\\View\\Components\\Secret' => $vendorDir . '/laravel/framework/src/Illuminate/Console/View/Components/Secret.php', - 'Illuminate\\Console\\View\\Components\\Task' => $vendorDir . '/laravel/framework/src/Illuminate/Console/View/Components/Task.php', - 'Illuminate\\Console\\View\\Components\\TwoColumnDetail' => $vendorDir . '/laravel/framework/src/Illuminate/Console/View/Components/TwoColumnDetail.php', - 'Illuminate\\Console\\View\\Components\\Warn' => $vendorDir . '/laravel/framework/src/Illuminate/Console/View/Components/Warn.php', - 'Illuminate\\Container\\BoundMethod' => $vendorDir . '/laravel/framework/src/Illuminate/Container/BoundMethod.php', - 'Illuminate\\Container\\Container' => $vendorDir . '/laravel/framework/src/Illuminate/Container/Container.php', - 'Illuminate\\Container\\ContextualBindingBuilder' => $vendorDir . '/laravel/framework/src/Illuminate/Container/ContextualBindingBuilder.php', - 'Illuminate\\Container\\EntryNotFoundException' => $vendorDir . '/laravel/framework/src/Illuminate/Container/EntryNotFoundException.php', - 'Illuminate\\Container\\RewindableGenerator' => $vendorDir . '/laravel/framework/src/Illuminate/Container/RewindableGenerator.php', - 'Illuminate\\Container\\Util' => $vendorDir . '/laravel/framework/src/Illuminate/Container/Util.php', - 'Illuminate\\Contracts\\Auth\\Access\\Authorizable' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Auth/Access/Authorizable.php', - 'Illuminate\\Contracts\\Auth\\Access\\Gate' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Auth/Access/Gate.php', - 'Illuminate\\Contracts\\Auth\\Authenticatable' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Auth/Authenticatable.php', - 'Illuminate\\Contracts\\Auth\\CanResetPassword' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Auth/CanResetPassword.php', - 'Illuminate\\Contracts\\Auth\\Factory' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Auth/Factory.php', - 'Illuminate\\Contracts\\Auth\\Guard' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Auth/Guard.php', - 'Illuminate\\Contracts\\Auth\\Middleware\\AuthenticatesRequests' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Auth/Middleware/AuthenticatesRequests.php', - 'Illuminate\\Contracts\\Auth\\MustVerifyEmail' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Auth/MustVerifyEmail.php', - 'Illuminate\\Contracts\\Auth\\PasswordBroker' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Auth/PasswordBroker.php', - 'Illuminate\\Contracts\\Auth\\PasswordBrokerFactory' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Auth/PasswordBrokerFactory.php', - 'Illuminate\\Contracts\\Auth\\StatefulGuard' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Auth/StatefulGuard.php', - 'Illuminate\\Contracts\\Auth\\SupportsBasicAuth' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Auth/SupportsBasicAuth.php', - 'Illuminate\\Contracts\\Auth\\UserProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Auth/UserProvider.php', - 'Illuminate\\Contracts\\Broadcasting\\Broadcaster' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Broadcasting/Broadcaster.php', - 'Illuminate\\Contracts\\Broadcasting\\Factory' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Broadcasting/Factory.php', - 'Illuminate\\Contracts\\Broadcasting\\HasBroadcastChannel' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Broadcasting/HasBroadcastChannel.php', - 'Illuminate\\Contracts\\Broadcasting\\ShouldBeUnique' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Broadcasting/ShouldBeUnique.php', - 'Illuminate\\Contracts\\Broadcasting\\ShouldBroadcast' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Broadcasting/ShouldBroadcast.php', - 'Illuminate\\Contracts\\Broadcasting\\ShouldBroadcastNow' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Broadcasting/ShouldBroadcastNow.php', - 'Illuminate\\Contracts\\Bus\\Dispatcher' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Bus/Dispatcher.php', - 'Illuminate\\Contracts\\Bus\\QueueingDispatcher' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Bus/QueueingDispatcher.php', - 'Illuminate\\Contracts\\Cache\\Factory' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Cache/Factory.php', - 'Illuminate\\Contracts\\Cache\\Lock' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Cache/Lock.php', - 'Illuminate\\Contracts\\Cache\\LockProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Cache/LockProvider.php', - 'Illuminate\\Contracts\\Cache\\LockTimeoutException' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Cache/LockTimeoutException.php', - 'Illuminate\\Contracts\\Cache\\Repository' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Cache/Repository.php', - 'Illuminate\\Contracts\\Cache\\Store' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Cache/Store.php', - 'Illuminate\\Contracts\\Config\\Repository' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Config/Repository.php', - 'Illuminate\\Contracts\\Console\\Application' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Console/Application.php', - 'Illuminate\\Contracts\\Console\\Isolatable' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Console/Isolatable.php', - 'Illuminate\\Contracts\\Console\\Kernel' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Console/Kernel.php', - 'Illuminate\\Contracts\\Console\\PromptsForMissingInput' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Console/PromptsForMissingInput.php', - 'Illuminate\\Contracts\\Container\\BindingResolutionException' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Container/BindingResolutionException.php', - 'Illuminate\\Contracts\\Container\\CircularDependencyException' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Container/CircularDependencyException.php', - 'Illuminate\\Contracts\\Container\\Container' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Container/Container.php', - 'Illuminate\\Contracts\\Container\\ContextualBindingBuilder' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Container/ContextualBindingBuilder.php', - 'Illuminate\\Contracts\\Cookie\\Factory' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Cookie/Factory.php', - 'Illuminate\\Contracts\\Cookie\\QueueingFactory' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Cookie/QueueingFactory.php', - 'Illuminate\\Contracts\\Database\\Eloquent\\Builder' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Database/Eloquent/Builder.php', - 'Illuminate\\Contracts\\Database\\Eloquent\\Castable' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Database/Eloquent/Castable.php', - 'Illuminate\\Contracts\\Database\\Eloquent\\CastsAttributes' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Database/Eloquent/CastsAttributes.php', - 'Illuminate\\Contracts\\Database\\Eloquent\\CastsInboundAttributes' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Database/Eloquent/CastsInboundAttributes.php', - 'Illuminate\\Contracts\\Database\\Eloquent\\DeviatesCastableAttributes' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Database/Eloquent/DeviatesCastableAttributes.php', - 'Illuminate\\Contracts\\Database\\Eloquent\\SerializesCastableAttributes' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Database/Eloquent/SerializesCastableAttributes.php', - 'Illuminate\\Contracts\\Database\\Eloquent\\SupportsPartialRelations' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Database/Eloquent/SupportsPartialRelations.php', - 'Illuminate\\Contracts\\Database\\Events\\MigrationEvent' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Database/Events/MigrationEvent.php', - 'Illuminate\\Contracts\\Database\\ModelIdentifier' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Database/ModelIdentifier.php', - 'Illuminate\\Contracts\\Database\\Query\\Builder' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Database/Query/Builder.php', - 'Illuminate\\Contracts\\Database\\Query\\ConditionExpression' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Database/Query/ConditionExpression.php', - 'Illuminate\\Contracts\\Database\\Query\\Expression' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Database/Query/Expression.php', - 'Illuminate\\Contracts\\Debug\\ExceptionHandler' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Debug/ExceptionHandler.php', - 'Illuminate\\Contracts\\Encryption\\DecryptException' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Encryption/DecryptException.php', - 'Illuminate\\Contracts\\Encryption\\EncryptException' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Encryption/EncryptException.php', - 'Illuminate\\Contracts\\Encryption\\Encrypter' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Encryption/Encrypter.php', - 'Illuminate\\Contracts\\Encryption\\StringEncrypter' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Encryption/StringEncrypter.php', - 'Illuminate\\Contracts\\Events\\Dispatcher' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Events/Dispatcher.php', - 'Illuminate\\Contracts\\Events\\ShouldDispatchAfterCommit' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Events/ShouldDispatchAfterCommit.php', - 'Illuminate\\Contracts\\Events\\ShouldHandleEventsAfterCommit' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Events/ShouldHandleEventsAfterCommit.php', - 'Illuminate\\Contracts\\Filesystem\\Cloud' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Filesystem/Cloud.php', - 'Illuminate\\Contracts\\Filesystem\\Factory' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Filesystem/Factory.php', - 'Illuminate\\Contracts\\Filesystem\\FileNotFoundException' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Filesystem/FileNotFoundException.php', - 'Illuminate\\Contracts\\Filesystem\\Filesystem' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Filesystem/Filesystem.php', - 'Illuminate\\Contracts\\Filesystem\\LockTimeoutException' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Filesystem/LockTimeoutException.php', - 'Illuminate\\Contracts\\Foundation\\Application' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Foundation/Application.php', - 'Illuminate\\Contracts\\Foundation\\CachesConfiguration' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Foundation/CachesConfiguration.php', - 'Illuminate\\Contracts\\Foundation\\CachesRoutes' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Foundation/CachesRoutes.php', - 'Illuminate\\Contracts\\Foundation\\ExceptionRenderer' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Foundation/ExceptionRenderer.php', - 'Illuminate\\Contracts\\Foundation\\MaintenanceMode' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Foundation/MaintenanceMode.php', - 'Illuminate\\Contracts\\Hashing\\Hasher' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Hashing/Hasher.php', - 'Illuminate\\Contracts\\Http\\Kernel' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Http/Kernel.php', - 'Illuminate\\Contracts\\Mail\\Attachable' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Mail/Attachable.php', - 'Illuminate\\Contracts\\Mail\\Factory' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Mail/Factory.php', - 'Illuminate\\Contracts\\Mail\\MailQueue' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Mail/MailQueue.php', - 'Illuminate\\Contracts\\Mail\\Mailable' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Mail/Mailable.php', - 'Illuminate\\Contracts\\Mail\\Mailer' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Mail/Mailer.php', - 'Illuminate\\Contracts\\Notifications\\Dispatcher' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Notifications/Dispatcher.php', - 'Illuminate\\Contracts\\Notifications\\Factory' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Notifications/Factory.php', - 'Illuminate\\Contracts\\Pagination\\CursorPaginator' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Pagination/CursorPaginator.php', - 'Illuminate\\Contracts\\Pagination\\LengthAwarePaginator' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Pagination/LengthAwarePaginator.php', - 'Illuminate\\Contracts\\Pagination\\Paginator' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Pagination/Paginator.php', - 'Illuminate\\Contracts\\Pipeline\\Hub' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Pipeline/Hub.php', - 'Illuminate\\Contracts\\Pipeline\\Pipeline' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Pipeline/Pipeline.php', - 'Illuminate\\Contracts\\Process\\InvokedProcess' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Process/InvokedProcess.php', - 'Illuminate\\Contracts\\Process\\ProcessResult' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Process/ProcessResult.php', - 'Illuminate\\Contracts\\Queue\\ClearableQueue' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Queue/ClearableQueue.php', - 'Illuminate\\Contracts\\Queue\\EntityNotFoundException' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Queue/EntityNotFoundException.php', - 'Illuminate\\Contracts\\Queue\\EntityResolver' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Queue/EntityResolver.php', - 'Illuminate\\Contracts\\Queue\\Factory' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Queue/Factory.php', - 'Illuminate\\Contracts\\Queue\\Job' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Queue/Job.php', - 'Illuminate\\Contracts\\Queue\\Monitor' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Queue/Monitor.php', - 'Illuminate\\Contracts\\Queue\\Queue' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Queue/Queue.php', - 'Illuminate\\Contracts\\Queue\\QueueableCollection' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Queue/QueueableCollection.php', - 'Illuminate\\Contracts\\Queue\\QueueableEntity' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Queue/QueueableEntity.php', - 'Illuminate\\Contracts\\Queue\\ShouldBeEncrypted' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Queue/ShouldBeEncrypted.php', - 'Illuminate\\Contracts\\Queue\\ShouldBeUnique' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Queue/ShouldBeUnique.php', - 'Illuminate\\Contracts\\Queue\\ShouldBeUniqueUntilProcessing' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Queue/ShouldBeUniqueUntilProcessing.php', - 'Illuminate\\Contracts\\Queue\\ShouldQueue' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Queue/ShouldQueue.php', - 'Illuminate\\Contracts\\Queue\\ShouldQueueAfterCommit' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Queue/ShouldQueueAfterCommit.php', - 'Illuminate\\Contracts\\Redis\\Connection' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Redis/Connection.php', - 'Illuminate\\Contracts\\Redis\\Connector' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Redis/Connector.php', - 'Illuminate\\Contracts\\Redis\\Factory' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Redis/Factory.php', - 'Illuminate\\Contracts\\Redis\\LimiterTimeoutException' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Redis/LimiterTimeoutException.php', - 'Illuminate\\Contracts\\Routing\\BindingRegistrar' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Routing/BindingRegistrar.php', - 'Illuminate\\Contracts\\Routing\\Registrar' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Routing/Registrar.php', - 'Illuminate\\Contracts\\Routing\\ResponseFactory' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Routing/ResponseFactory.php', - 'Illuminate\\Contracts\\Routing\\UrlGenerator' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Routing/UrlGenerator.php', - 'Illuminate\\Contracts\\Routing\\UrlRoutable' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Routing/UrlRoutable.php', - 'Illuminate\\Contracts\\Session\\Middleware\\AuthenticatesSessions' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Session/Middleware/AuthenticatesSessions.php', - 'Illuminate\\Contracts\\Session\\Session' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Session/Session.php', - 'Illuminate\\Contracts\\Support\\Arrayable' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Support/Arrayable.php', - 'Illuminate\\Contracts\\Support\\CanBeEscapedWhenCastToString' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Support/CanBeEscapedWhenCastToString.php', - 'Illuminate\\Contracts\\Support\\DeferrableProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Support/DeferrableProvider.php', - 'Illuminate\\Contracts\\Support\\DeferringDisplayableValue' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Support/DeferringDisplayableValue.php', - 'Illuminate\\Contracts\\Support\\Htmlable' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Support/Htmlable.php', - 'Illuminate\\Contracts\\Support\\Jsonable' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Support/Jsonable.php', - 'Illuminate\\Contracts\\Support\\MessageBag' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Support/MessageBag.php', - 'Illuminate\\Contracts\\Support\\MessageProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Support/MessageProvider.php', - 'Illuminate\\Contracts\\Support\\Renderable' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Support/Renderable.php', - 'Illuminate\\Contracts\\Support\\Responsable' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Support/Responsable.php', - 'Illuminate\\Contracts\\Support\\ValidatedData' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Support/ValidatedData.php', - 'Illuminate\\Contracts\\Translation\\HasLocalePreference' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Translation/HasLocalePreference.php', - 'Illuminate\\Contracts\\Translation\\Loader' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Translation/Loader.php', - 'Illuminate\\Contracts\\Translation\\Translator' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Translation/Translator.php', - 'Illuminate\\Contracts\\Validation\\DataAwareRule' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Validation/DataAwareRule.php', - 'Illuminate\\Contracts\\Validation\\Factory' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Validation/Factory.php', - 'Illuminate\\Contracts\\Validation\\ImplicitRule' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Validation/ImplicitRule.php', - 'Illuminate\\Contracts\\Validation\\InvokableRule' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Validation/InvokableRule.php', - 'Illuminate\\Contracts\\Validation\\Rule' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Validation/Rule.php', - 'Illuminate\\Contracts\\Validation\\UncompromisedVerifier' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Validation/UncompromisedVerifier.php', - 'Illuminate\\Contracts\\Validation\\ValidatesWhenResolved' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Validation/ValidatesWhenResolved.php', - 'Illuminate\\Contracts\\Validation\\ValidationRule' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Validation/ValidationRule.php', - 'Illuminate\\Contracts\\Validation\\Validator' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Validation/Validator.php', - 'Illuminate\\Contracts\\Validation\\ValidatorAwareRule' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Validation/ValidatorAwareRule.php', - 'Illuminate\\Contracts\\View\\Engine' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/View/Engine.php', - 'Illuminate\\Contracts\\View\\Factory' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/View/Factory.php', - 'Illuminate\\Contracts\\View\\View' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/View/View.php', - 'Illuminate\\Contracts\\View\\ViewCompilationException' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/View/ViewCompilationException.php', - 'Illuminate\\Cookie\\CookieJar' => $vendorDir . '/laravel/framework/src/Illuminate/Cookie/CookieJar.php', - 'Illuminate\\Cookie\\CookieServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Cookie/CookieServiceProvider.php', - 'Illuminate\\Cookie\\CookieValuePrefix' => $vendorDir . '/laravel/framework/src/Illuminate/Cookie/CookieValuePrefix.php', - 'Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse' => $vendorDir . '/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php', - 'Illuminate\\Cookie\\Middleware\\EncryptCookies' => $vendorDir . '/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php', - 'Illuminate\\Database\\Capsule\\Manager' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Capsule/Manager.php', - 'Illuminate\\Database\\ClassMorphViolationException' => $vendorDir . '/laravel/framework/src/Illuminate/Database/ClassMorphViolationException.php', - 'Illuminate\\Database\\Concerns\\BuildsQueries' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Concerns/BuildsQueries.php', - 'Illuminate\\Database\\Concerns\\CompilesJsonPaths' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Concerns/CompilesJsonPaths.php', - 'Illuminate\\Database\\Concerns\\ExplainsQueries' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Concerns/ExplainsQueries.php', - 'Illuminate\\Database\\Concerns\\ManagesTransactions' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Concerns/ManagesTransactions.php', - 'Illuminate\\Database\\Concerns\\ParsesSearchPath' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Concerns/ParsesSearchPath.php', - 'Illuminate\\Database\\ConfigurationUrlParser' => $vendorDir . '/laravel/framework/src/Illuminate/Database/ConfigurationUrlParser.php', - 'Illuminate\\Database\\Connection' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Connection.php', - 'Illuminate\\Database\\ConnectionInterface' => $vendorDir . '/laravel/framework/src/Illuminate/Database/ConnectionInterface.php', - 'Illuminate\\Database\\ConnectionResolver' => $vendorDir . '/laravel/framework/src/Illuminate/Database/ConnectionResolver.php', - 'Illuminate\\Database\\ConnectionResolverInterface' => $vendorDir . '/laravel/framework/src/Illuminate/Database/ConnectionResolverInterface.php', - 'Illuminate\\Database\\Connectors\\ConnectionFactory' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php', - 'Illuminate\\Database\\Connectors\\Connector' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Connectors/Connector.php', - 'Illuminate\\Database\\Connectors\\ConnectorInterface' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Connectors/ConnectorInterface.php', - 'Illuminate\\Database\\Connectors\\MySqlConnector' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Connectors/MySqlConnector.php', - 'Illuminate\\Database\\Connectors\\PostgresConnector' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Connectors/PostgresConnector.php', - 'Illuminate\\Database\\Connectors\\SQLiteConnector' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Connectors/SQLiteConnector.php', - 'Illuminate\\Database\\Connectors\\SqlServerConnector' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Connectors/SqlServerConnector.php', - 'Illuminate\\Database\\Console\\DatabaseInspectionCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Console/DatabaseInspectionCommand.php', - 'Illuminate\\Database\\Console\\DbCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Console/DbCommand.php', - 'Illuminate\\Database\\Console\\DumpCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Console/DumpCommand.php', - 'Illuminate\\Database\\Console\\Factories\\FactoryMakeCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Console/Factories/FactoryMakeCommand.php', - 'Illuminate\\Database\\Console\\Migrations\\BaseCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Console/Migrations/BaseCommand.php', - 'Illuminate\\Database\\Console\\Migrations\\FreshCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Console/Migrations/FreshCommand.php', - 'Illuminate\\Database\\Console\\Migrations\\InstallCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Console/Migrations/InstallCommand.php', - 'Illuminate\\Database\\Console\\Migrations\\MigrateCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php', - 'Illuminate\\Database\\Console\\Migrations\\MigrateMakeCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateMakeCommand.php', - 'Illuminate\\Database\\Console\\Migrations\\RefreshCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Console/Migrations/RefreshCommand.php', - 'Illuminate\\Database\\Console\\Migrations\\ResetCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Console/Migrations/ResetCommand.php', - 'Illuminate\\Database\\Console\\Migrations\\RollbackCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Console/Migrations/RollbackCommand.php', - 'Illuminate\\Database\\Console\\Migrations\\StatusCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Console/Migrations/StatusCommand.php', - 'Illuminate\\Database\\Console\\Migrations\\TableGuesser' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Console/Migrations/TableGuesser.php', - 'Illuminate\\Database\\Console\\MonitorCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Console/MonitorCommand.php', - 'Illuminate\\Database\\Console\\PruneCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Console/PruneCommand.php', - 'Illuminate\\Database\\Console\\Seeds\\SeedCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Console/Seeds/SeedCommand.php', - 'Illuminate\\Database\\Console\\Seeds\\SeederMakeCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Console/Seeds/SeederMakeCommand.php', - 'Illuminate\\Database\\Console\\Seeds\\WithoutModelEvents' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Console/Seeds/WithoutModelEvents.php', - 'Illuminate\\Database\\Console\\ShowCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Console/ShowCommand.php', - 'Illuminate\\Database\\Console\\ShowModelCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Console/ShowModelCommand.php', - 'Illuminate\\Database\\Console\\TableCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Console/TableCommand.php', - 'Illuminate\\Database\\Console\\WipeCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Console/WipeCommand.php', - 'Illuminate\\Database\\DBAL\\TimestampType' => $vendorDir . '/laravel/framework/src/Illuminate/Database/DBAL/TimestampType.php', - 'Illuminate\\Database\\DatabaseManager' => $vendorDir . '/laravel/framework/src/Illuminate/Database/DatabaseManager.php', - 'Illuminate\\Database\\DatabaseServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Database/DatabaseServiceProvider.php', - 'Illuminate\\Database\\DatabaseTransactionRecord' => $vendorDir . '/laravel/framework/src/Illuminate/Database/DatabaseTransactionRecord.php', - 'Illuminate\\Database\\DatabaseTransactionsManager' => $vendorDir . '/laravel/framework/src/Illuminate/Database/DatabaseTransactionsManager.php', - 'Illuminate\\Database\\DeadlockException' => $vendorDir . '/laravel/framework/src/Illuminate/Database/DeadlockException.php', - 'Illuminate\\Database\\DetectsConcurrencyErrors' => $vendorDir . '/laravel/framework/src/Illuminate/Database/DetectsConcurrencyErrors.php', - 'Illuminate\\Database\\DetectsLostConnections' => $vendorDir . '/laravel/framework/src/Illuminate/Database/DetectsLostConnections.php', - 'Illuminate\\Database\\Eloquent\\Attributes\\ObservedBy' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Attributes/ObservedBy.php', - 'Illuminate\\Database\\Eloquent\\Attributes\\ScopedBy' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Attributes/ScopedBy.php', - 'Illuminate\\Database\\Eloquent\\BroadcastableModelEventOccurred' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/BroadcastableModelEventOccurred.php', - 'Illuminate\\Database\\Eloquent\\BroadcastsEvents' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/BroadcastsEvents.php', - 'Illuminate\\Database\\Eloquent\\BroadcastsEventsAfterCommit' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/BroadcastsEventsAfterCommit.php', - 'Illuminate\\Database\\Eloquent\\Builder' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php', - 'Illuminate\\Database\\Eloquent\\Casts\\ArrayObject' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Casts/ArrayObject.php', - 'Illuminate\\Database\\Eloquent\\Casts\\AsArrayObject' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Casts/AsArrayObject.php', - 'Illuminate\\Database\\Eloquent\\Casts\\AsCollection' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Casts/AsCollection.php', - 'Illuminate\\Database\\Eloquent\\Casts\\AsEncryptedArrayObject' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Casts/AsEncryptedArrayObject.php', - 'Illuminate\\Database\\Eloquent\\Casts\\AsEncryptedCollection' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Casts/AsEncryptedCollection.php', - 'Illuminate\\Database\\Eloquent\\Casts\\AsEnumArrayObject' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Casts/AsEnumArrayObject.php', - 'Illuminate\\Database\\Eloquent\\Casts\\AsEnumCollection' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Casts/AsEnumCollection.php', - 'Illuminate\\Database\\Eloquent\\Casts\\AsStringable' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Casts/AsStringable.php', - 'Illuminate\\Database\\Eloquent\\Casts\\Attribute' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Casts/Attribute.php', - 'Illuminate\\Database\\Eloquent\\Casts\\Json' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Casts/Json.php', - 'Illuminate\\Database\\Eloquent\\Collection' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Collection.php', - 'Illuminate\\Database\\Eloquent\\Concerns\\GuardsAttributes' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/GuardsAttributes.php', - 'Illuminate\\Database\\Eloquent\\Concerns\\HasAttributes' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php', - 'Illuminate\\Database\\Eloquent\\Concerns\\HasEvents' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasEvents.php', - 'Illuminate\\Database\\Eloquent\\Concerns\\HasGlobalScopes' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasGlobalScopes.php', - 'Illuminate\\Database\\Eloquent\\Concerns\\HasRelationships' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasRelationships.php', - 'Illuminate\\Database\\Eloquent\\Concerns\\HasTimestamps' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasTimestamps.php', - 'Illuminate\\Database\\Eloquent\\Concerns\\HasUlids' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasUlids.php', - 'Illuminate\\Database\\Eloquent\\Concerns\\HasUniqueIds' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasUniqueIds.php', - 'Illuminate\\Database\\Eloquent\\Concerns\\HasUuids' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasUuids.php', - 'Illuminate\\Database\\Eloquent\\Concerns\\HidesAttributes' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HidesAttributes.php', - 'Illuminate\\Database\\Eloquent\\Concerns\\QueriesRelationships' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/QueriesRelationships.php', - 'Illuminate\\Database\\Eloquent\\Factories\\BelongsToManyRelationship' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Factories/BelongsToManyRelationship.php', - 'Illuminate\\Database\\Eloquent\\Factories\\BelongsToRelationship' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Factories/BelongsToRelationship.php', - 'Illuminate\\Database\\Eloquent\\Factories\\CrossJoinSequence' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Factories/CrossJoinSequence.php', - 'Illuminate\\Database\\Eloquent\\Factories\\Factory' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Factories/Factory.php', - 'Illuminate\\Database\\Eloquent\\Factories\\HasFactory' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Factories/HasFactory.php', - 'Illuminate\\Database\\Eloquent\\Factories\\Relationship' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Factories/Relationship.php', - 'Illuminate\\Database\\Eloquent\\Factories\\Sequence' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Factories/Sequence.php', - 'Illuminate\\Database\\Eloquent\\HigherOrderBuilderProxy' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/HigherOrderBuilderProxy.php', - 'Illuminate\\Database\\Eloquent\\InvalidCastException' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/InvalidCastException.php', - 'Illuminate\\Database\\Eloquent\\JsonEncodingException' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/JsonEncodingException.php', - 'Illuminate\\Database\\Eloquent\\MassAssignmentException' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/MassAssignmentException.php', - 'Illuminate\\Database\\Eloquent\\MassPrunable' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/MassPrunable.php', - 'Illuminate\\Database\\Eloquent\\MissingAttributeException' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/MissingAttributeException.php', - 'Illuminate\\Database\\Eloquent\\Model' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Model.php', - 'Illuminate\\Database\\Eloquent\\ModelNotFoundException' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/ModelNotFoundException.php', - 'Illuminate\\Database\\Eloquent\\PendingHasThroughRelationship' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/PendingHasThroughRelationship.php', - 'Illuminate\\Database\\Eloquent\\Prunable' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Prunable.php', - 'Illuminate\\Database\\Eloquent\\QueueEntityResolver' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/QueueEntityResolver.php', - 'Illuminate\\Database\\Eloquent\\RelationNotFoundException' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/RelationNotFoundException.php', - 'Illuminate\\Database\\Eloquent\\Relations\\BelongsTo' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/BelongsTo.php', - 'Illuminate\\Database\\Eloquent\\Relations\\BelongsToMany' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/BelongsToMany.php', - 'Illuminate\\Database\\Eloquent\\Relations\\Concerns\\AsPivot' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Concerns/AsPivot.php', - 'Illuminate\\Database\\Eloquent\\Relations\\Concerns\\CanBeOneOfMany' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Concerns/CanBeOneOfMany.php', - 'Illuminate\\Database\\Eloquent\\Relations\\Concerns\\ComparesRelatedModels' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Concerns/ComparesRelatedModels.php', - 'Illuminate\\Database\\Eloquent\\Relations\\Concerns\\InteractsWithDictionary' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Concerns/InteractsWithDictionary.php', - 'Illuminate\\Database\\Eloquent\\Relations\\Concerns\\InteractsWithPivotTable' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Concerns/InteractsWithPivotTable.php', - 'Illuminate\\Database\\Eloquent\\Relations\\Concerns\\SupportsDefaultModels' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Concerns/SupportsDefaultModels.php', - 'Illuminate\\Database\\Eloquent\\Relations\\HasMany' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasMany.php', - 'Illuminate\\Database\\Eloquent\\Relations\\HasManyThrough' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasManyThrough.php', - 'Illuminate\\Database\\Eloquent\\Relations\\HasOne' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasOne.php', - 'Illuminate\\Database\\Eloquent\\Relations\\HasOneOrMany' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasOneOrMany.php', - 'Illuminate\\Database\\Eloquent\\Relations\\HasOneThrough' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasOneThrough.php', - 'Illuminate\\Database\\Eloquent\\Relations\\MorphMany' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/MorphMany.php', - 'Illuminate\\Database\\Eloquent\\Relations\\MorphOne' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/MorphOne.php', - 'Illuminate\\Database\\Eloquent\\Relations\\MorphOneOrMany' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/MorphOneOrMany.php', - 'Illuminate\\Database\\Eloquent\\Relations\\MorphPivot' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/MorphPivot.php', - 'Illuminate\\Database\\Eloquent\\Relations\\MorphTo' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/MorphTo.php', - 'Illuminate\\Database\\Eloquent\\Relations\\MorphToMany' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/MorphToMany.php', - 'Illuminate\\Database\\Eloquent\\Relations\\Pivot' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Pivot.php', - 'Illuminate\\Database\\Eloquent\\Relations\\Relation' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Relation.php', - 'Illuminate\\Database\\Eloquent\\Scope' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Scope.php', - 'Illuminate\\Database\\Eloquent\\SoftDeletes' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/SoftDeletes.php', - 'Illuminate\\Database\\Eloquent\\SoftDeletingScope' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/SoftDeletingScope.php', - 'Illuminate\\Database\\Events\\ConnectionEstablished' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Events/ConnectionEstablished.php', - 'Illuminate\\Database\\Events\\ConnectionEvent' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Events/ConnectionEvent.php', - 'Illuminate\\Database\\Events\\DatabaseBusy' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Events/DatabaseBusy.php', - 'Illuminate\\Database\\Events\\DatabaseRefreshed' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Events/DatabaseRefreshed.php', - 'Illuminate\\Database\\Events\\MigrationEnded' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Events/MigrationEnded.php', - 'Illuminate\\Database\\Events\\MigrationEvent' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Events/MigrationEvent.php', - 'Illuminate\\Database\\Events\\MigrationStarted' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Events/MigrationStarted.php', - 'Illuminate\\Database\\Events\\MigrationsEnded' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Events/MigrationsEnded.php', - 'Illuminate\\Database\\Events\\MigrationsEvent' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Events/MigrationsEvent.php', - 'Illuminate\\Database\\Events\\MigrationsStarted' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Events/MigrationsStarted.php', - 'Illuminate\\Database\\Events\\ModelPruningFinished' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Events/ModelPruningFinished.php', - 'Illuminate\\Database\\Events\\ModelPruningStarting' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Events/ModelPruningStarting.php', - 'Illuminate\\Database\\Events\\ModelsPruned' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Events/ModelsPruned.php', - 'Illuminate\\Database\\Events\\NoPendingMigrations' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Events/NoPendingMigrations.php', - 'Illuminate\\Database\\Events\\QueryExecuted' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Events/QueryExecuted.php', - 'Illuminate\\Database\\Events\\SchemaDumped' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Events/SchemaDumped.php', - 'Illuminate\\Database\\Events\\SchemaLoaded' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Events/SchemaLoaded.php', - 'Illuminate\\Database\\Events\\StatementPrepared' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Events/StatementPrepared.php', - 'Illuminate\\Database\\Events\\TransactionBeginning' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Events/TransactionBeginning.php', - 'Illuminate\\Database\\Events\\TransactionCommitted' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Events/TransactionCommitted.php', - 'Illuminate\\Database\\Events\\TransactionCommitting' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Events/TransactionCommitting.php', - 'Illuminate\\Database\\Events\\TransactionRolledBack' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Events/TransactionRolledBack.php', - 'Illuminate\\Database\\Grammar' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Grammar.php', - 'Illuminate\\Database\\LazyLoadingViolationException' => $vendorDir . '/laravel/framework/src/Illuminate/Database/LazyLoadingViolationException.php', - 'Illuminate\\Database\\LostConnectionException' => $vendorDir . '/laravel/framework/src/Illuminate/Database/LostConnectionException.php', - 'Illuminate\\Database\\MigrationServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Database/MigrationServiceProvider.php', - 'Illuminate\\Database\\Migrations\\DatabaseMigrationRepository' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Migrations/DatabaseMigrationRepository.php', - 'Illuminate\\Database\\Migrations\\Migration' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Migrations/Migration.php', - 'Illuminate\\Database\\Migrations\\MigrationCreator' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Migrations/MigrationCreator.php', - 'Illuminate\\Database\\Migrations\\MigrationRepositoryInterface' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Migrations/MigrationRepositoryInterface.php', - 'Illuminate\\Database\\Migrations\\Migrator' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php', - 'Illuminate\\Database\\MultipleColumnsSelectedException' => $vendorDir . '/laravel/framework/src/Illuminate/Database/MultipleColumnsSelectedException.php', - 'Illuminate\\Database\\MultipleRecordsFoundException' => $vendorDir . '/laravel/framework/src/Illuminate/Database/MultipleRecordsFoundException.php', - 'Illuminate\\Database\\MySqlConnection' => $vendorDir . '/laravel/framework/src/Illuminate/Database/MySqlConnection.php', - 'Illuminate\\Database\\PDO\\Concerns\\ConnectsToDatabase' => $vendorDir . '/laravel/framework/src/Illuminate/Database/PDO/Concerns/ConnectsToDatabase.php', - 'Illuminate\\Database\\PDO\\Connection' => $vendorDir . '/laravel/framework/src/Illuminate/Database/PDO/Connection.php', - 'Illuminate\\Database\\PDO\\MySqlDriver' => $vendorDir . '/laravel/framework/src/Illuminate/Database/PDO/MySqlDriver.php', - 'Illuminate\\Database\\PDO\\PostgresDriver' => $vendorDir . '/laravel/framework/src/Illuminate/Database/PDO/PostgresDriver.php', - 'Illuminate\\Database\\PDO\\SQLiteDriver' => $vendorDir . '/laravel/framework/src/Illuminate/Database/PDO/SQLiteDriver.php', - 'Illuminate\\Database\\PDO\\SqlServerConnection' => $vendorDir . '/laravel/framework/src/Illuminate/Database/PDO/SqlServerConnection.php', - 'Illuminate\\Database\\PDO\\SqlServerDriver' => $vendorDir . '/laravel/framework/src/Illuminate/Database/PDO/SqlServerDriver.php', - 'Illuminate\\Database\\PostgresConnection' => $vendorDir . '/laravel/framework/src/Illuminate/Database/PostgresConnection.php', - 'Illuminate\\Database\\QueryException' => $vendorDir . '/laravel/framework/src/Illuminate/Database/QueryException.php', - 'Illuminate\\Database\\Query\\Builder' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Query/Builder.php', - 'Illuminate\\Database\\Query\\Expression' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Query/Expression.php', - 'Illuminate\\Database\\Query\\Grammars\\Grammar' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php', - 'Illuminate\\Database\\Query\\Grammars\\MySqlGrammar' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Query/Grammars/MySqlGrammar.php', - 'Illuminate\\Database\\Query\\Grammars\\PostgresGrammar' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Query/Grammars/PostgresGrammar.php', - 'Illuminate\\Database\\Query\\Grammars\\SQLiteGrammar' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Query/Grammars/SQLiteGrammar.php', - 'Illuminate\\Database\\Query\\Grammars\\SqlServerGrammar' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Query/Grammars/SqlServerGrammar.php', - 'Illuminate\\Database\\Query\\IndexHint' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Query/IndexHint.php', - 'Illuminate\\Database\\Query\\JoinClause' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Query/JoinClause.php', - 'Illuminate\\Database\\Query\\JoinLateralClause' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Query/JoinLateralClause.php', - 'Illuminate\\Database\\Query\\Processors\\MySqlProcessor' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Query/Processors/MySqlProcessor.php', - 'Illuminate\\Database\\Query\\Processors\\PostgresProcessor' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Query/Processors/PostgresProcessor.php', - 'Illuminate\\Database\\Query\\Processors\\Processor' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Query/Processors/Processor.php', - 'Illuminate\\Database\\Query\\Processors\\SQLiteProcessor' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Query/Processors/SQLiteProcessor.php', - 'Illuminate\\Database\\Query\\Processors\\SqlServerProcessor' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Query/Processors/SqlServerProcessor.php', - 'Illuminate\\Database\\RecordsNotFoundException' => $vendorDir . '/laravel/framework/src/Illuminate/Database/RecordsNotFoundException.php', - 'Illuminate\\Database\\SQLiteConnection' => $vendorDir . '/laravel/framework/src/Illuminate/Database/SQLiteConnection.php', - 'Illuminate\\Database\\SQLiteDatabaseDoesNotExistException' => $vendorDir . '/laravel/framework/src/Illuminate/Database/SQLiteDatabaseDoesNotExistException.php', - 'Illuminate\\Database\\Schema\\Blueprint' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Schema/Blueprint.php', - 'Illuminate\\Database\\Schema\\Builder' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Schema/Builder.php', - 'Illuminate\\Database\\Schema\\ColumnDefinition' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Schema/ColumnDefinition.php', - 'Illuminate\\Database\\Schema\\ForeignIdColumnDefinition' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Schema/ForeignIdColumnDefinition.php', - 'Illuminate\\Database\\Schema\\ForeignKeyDefinition' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Schema/ForeignKeyDefinition.php', - 'Illuminate\\Database\\Schema\\Grammars\\ChangeColumn' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Schema/Grammars/ChangeColumn.php', - 'Illuminate\\Database\\Schema\\Grammars\\Grammar' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Schema/Grammars/Grammar.php', - 'Illuminate\\Database\\Schema\\Grammars\\MySqlGrammar' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Schema/Grammars/MySqlGrammar.php', - 'Illuminate\\Database\\Schema\\Grammars\\PostgresGrammar' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Schema/Grammars/PostgresGrammar.php', - 'Illuminate\\Database\\Schema\\Grammars\\RenameColumn' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Schema/Grammars/RenameColumn.php', - 'Illuminate\\Database\\Schema\\Grammars\\SQLiteGrammar' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Schema/Grammars/SQLiteGrammar.php', - 'Illuminate\\Database\\Schema\\Grammars\\SqlServerGrammar' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Schema/Grammars/SqlServerGrammar.php', - 'Illuminate\\Database\\Schema\\IndexDefinition' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Schema/IndexDefinition.php', - 'Illuminate\\Database\\Schema\\MySqlBuilder' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Schema/MySqlBuilder.php', - 'Illuminate\\Database\\Schema\\MySqlSchemaState' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Schema/MySqlSchemaState.php', - 'Illuminate\\Database\\Schema\\PostgresBuilder' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Schema/PostgresBuilder.php', - 'Illuminate\\Database\\Schema\\PostgresSchemaState' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Schema/PostgresSchemaState.php', - 'Illuminate\\Database\\Schema\\SQLiteBuilder' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Schema/SQLiteBuilder.php', - 'Illuminate\\Database\\Schema\\SchemaState' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Schema/SchemaState.php', - 'Illuminate\\Database\\Schema\\SqlServerBuilder' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Schema/SqlServerBuilder.php', - 'Illuminate\\Database\\Schema\\SqliteSchemaState' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Schema/SqliteSchemaState.php', - 'Illuminate\\Database\\Seeder' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Seeder.php', - 'Illuminate\\Database\\SqlServerConnection' => $vendorDir . '/laravel/framework/src/Illuminate/Database/SqlServerConnection.php', - 'Illuminate\\Database\\UniqueConstraintViolationException' => $vendorDir . '/laravel/framework/src/Illuminate/Database/UniqueConstraintViolationException.php', - 'Illuminate\\Encryption\\Encrypter' => $vendorDir . '/laravel/framework/src/Illuminate/Encryption/Encrypter.php', - 'Illuminate\\Encryption\\EncryptionServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Encryption/EncryptionServiceProvider.php', - 'Illuminate\\Encryption\\MissingAppKeyException' => $vendorDir . '/laravel/framework/src/Illuminate/Encryption/MissingAppKeyException.php', - 'Illuminate\\Events\\CallQueuedListener' => $vendorDir . '/laravel/framework/src/Illuminate/Events/CallQueuedListener.php', - 'Illuminate\\Events\\Dispatcher' => $vendorDir . '/laravel/framework/src/Illuminate/Events/Dispatcher.php', - 'Illuminate\\Events\\EventServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Events/EventServiceProvider.php', - 'Illuminate\\Events\\InvokeQueuedClosure' => $vendorDir . '/laravel/framework/src/Illuminate/Events/InvokeQueuedClosure.php', - 'Illuminate\\Events\\NullDispatcher' => $vendorDir . '/laravel/framework/src/Illuminate/Events/NullDispatcher.php', - 'Illuminate\\Events\\QueuedClosure' => $vendorDir . '/laravel/framework/src/Illuminate/Events/QueuedClosure.php', - 'Illuminate\\Filesystem\\AwsS3V3Adapter' => $vendorDir . '/laravel/framework/src/Illuminate/Filesystem/AwsS3V3Adapter.php', - 'Illuminate\\Filesystem\\Filesystem' => $vendorDir . '/laravel/framework/src/Illuminate/Filesystem/Filesystem.php', - 'Illuminate\\Filesystem\\FilesystemAdapter' => $vendorDir . '/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php', - 'Illuminate\\Filesystem\\FilesystemManager' => $vendorDir . '/laravel/framework/src/Illuminate/Filesystem/FilesystemManager.php', - 'Illuminate\\Filesystem\\FilesystemServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Filesystem/FilesystemServiceProvider.php', - 'Illuminate\\Filesystem\\LockableFile' => $vendorDir . '/laravel/framework/src/Illuminate/Filesystem/LockableFile.php', - 'Illuminate\\Foundation\\AliasLoader' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/AliasLoader.php', - 'Illuminate\\Foundation\\Application' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Application.php', - 'Illuminate\\Foundation\\Auth\\Access\\Authorizable' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Auth/Access/Authorizable.php', - 'Illuminate\\Foundation\\Auth\\Access\\AuthorizesRequests' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Auth/Access/AuthorizesRequests.php', - 'Illuminate\\Foundation\\Auth\\AuthenticatesUsers' => $vendorDir . '/laravel/ui/auth-backend/AuthenticatesUsers.php', - 'Illuminate\\Foundation\\Auth\\ConfirmsPasswords' => $vendorDir . '/laravel/ui/auth-backend/ConfirmsPasswords.php', - 'Illuminate\\Foundation\\Auth\\EmailVerificationRequest' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Auth/EmailVerificationRequest.php', - 'Illuminate\\Foundation\\Auth\\RedirectsUsers' => $vendorDir . '/laravel/ui/auth-backend/RedirectsUsers.php', - 'Illuminate\\Foundation\\Auth\\RegistersUsers' => $vendorDir . '/laravel/ui/auth-backend/RegistersUsers.php', - 'Illuminate\\Foundation\\Auth\\ResetsPasswords' => $vendorDir . '/laravel/ui/auth-backend/ResetsPasswords.php', - 'Illuminate\\Foundation\\Auth\\SendsPasswordResetEmails' => $vendorDir . '/laravel/ui/auth-backend/SendsPasswordResetEmails.php', - 'Illuminate\\Foundation\\Auth\\ThrottlesLogins' => $vendorDir . '/laravel/ui/auth-backend/ThrottlesLogins.php', - 'Illuminate\\Foundation\\Auth\\User' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Auth/User.php', - 'Illuminate\\Foundation\\Auth\\VerifiesEmails' => $vendorDir . '/laravel/ui/auth-backend/VerifiesEmails.php', - 'Illuminate\\Foundation\\Bootstrap\\BootProviders' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Bootstrap/BootProviders.php', - 'Illuminate\\Foundation\\Bootstrap\\HandleExceptions' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php', - 'Illuminate\\Foundation\\Bootstrap\\LoadConfiguration' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Bootstrap/LoadConfiguration.php', - 'Illuminate\\Foundation\\Bootstrap\\LoadEnvironmentVariables' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Bootstrap/LoadEnvironmentVariables.php', - 'Illuminate\\Foundation\\Bootstrap\\RegisterFacades' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Bootstrap/RegisterFacades.php', - 'Illuminate\\Foundation\\Bootstrap\\RegisterProviders' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Bootstrap/RegisterProviders.php', - 'Illuminate\\Foundation\\Bootstrap\\SetRequestForConsole' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Bootstrap/SetRequestForConsole.php', - 'Illuminate\\Foundation\\Bus\\Dispatchable' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Bus/Dispatchable.php', - 'Illuminate\\Foundation\\Bus\\DispatchesJobs' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Bus/DispatchesJobs.php', - 'Illuminate\\Foundation\\Bus\\PendingChain' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Bus/PendingChain.php', - 'Illuminate\\Foundation\\Bus\\PendingClosureDispatch' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Bus/PendingClosureDispatch.php', - 'Illuminate\\Foundation\\Bus\\PendingDispatch' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Bus/PendingDispatch.php', - 'Illuminate\\Foundation\\CacheBasedMaintenanceMode' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/CacheBasedMaintenanceMode.php', - 'Illuminate\\Foundation\\ComposerScripts' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/ComposerScripts.php', - 'Illuminate\\Foundation\\Concerns\\ResolvesDumpSource' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Concerns/ResolvesDumpSource.php', - 'Illuminate\\Foundation\\Console\\AboutCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/AboutCommand.php', - 'Illuminate\\Foundation\\Console\\CastMakeCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/CastMakeCommand.php', - 'Illuminate\\Foundation\\Console\\ChannelListCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/ChannelListCommand.php', - 'Illuminate\\Foundation\\Console\\ChannelMakeCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/ChannelMakeCommand.php', - 'Illuminate\\Foundation\\Console\\ClearCompiledCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/ClearCompiledCommand.php', - 'Illuminate\\Foundation\\Console\\CliDumper' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/CliDumper.php', - 'Illuminate\\Foundation\\Console\\ClosureCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/ClosureCommand.php', - 'Illuminate\\Foundation\\Console\\ComponentMakeCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/ComponentMakeCommand.php', - 'Illuminate\\Foundation\\Console\\ConfigCacheCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/ConfigCacheCommand.php', - 'Illuminate\\Foundation\\Console\\ConfigClearCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/ConfigClearCommand.php', - 'Illuminate\\Foundation\\Console\\ConfigShowCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/ConfigShowCommand.php', - 'Illuminate\\Foundation\\Console\\ConsoleMakeCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/ConsoleMakeCommand.php', - 'Illuminate\\Foundation\\Console\\DocsCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/DocsCommand.php', - 'Illuminate\\Foundation\\Console\\DownCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/DownCommand.php', - 'Illuminate\\Foundation\\Console\\EnvironmentCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/EnvironmentCommand.php', - 'Illuminate\\Foundation\\Console\\EnvironmentDecryptCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/EnvironmentDecryptCommand.php', - 'Illuminate\\Foundation\\Console\\EnvironmentEncryptCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/EnvironmentEncryptCommand.php', - 'Illuminate\\Foundation\\Console\\EventCacheCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/EventCacheCommand.php', - 'Illuminate\\Foundation\\Console\\EventClearCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/EventClearCommand.php', - 'Illuminate\\Foundation\\Console\\EventGenerateCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/EventGenerateCommand.php', - 'Illuminate\\Foundation\\Console\\EventListCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/EventListCommand.php', - 'Illuminate\\Foundation\\Console\\EventMakeCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/EventMakeCommand.php', - 'Illuminate\\Foundation\\Console\\ExceptionMakeCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/ExceptionMakeCommand.php', - 'Illuminate\\Foundation\\Console\\JobMakeCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/JobMakeCommand.php', - 'Illuminate\\Foundation\\Console\\Kernel' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php', - 'Illuminate\\Foundation\\Console\\KeyGenerateCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/KeyGenerateCommand.php', - 'Illuminate\\Foundation\\Console\\LangPublishCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/LangPublishCommand.php', - 'Illuminate\\Foundation\\Console\\ListenerMakeCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/ListenerMakeCommand.php', - 'Illuminate\\Foundation\\Console\\MailMakeCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/MailMakeCommand.php', - 'Illuminate\\Foundation\\Console\\ModelMakeCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/ModelMakeCommand.php', - 'Illuminate\\Foundation\\Console\\NotificationMakeCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/NotificationMakeCommand.php', - 'Illuminate\\Foundation\\Console\\ObserverMakeCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/ObserverMakeCommand.php', - 'Illuminate\\Foundation\\Console\\OptimizeClearCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/OptimizeClearCommand.php', - 'Illuminate\\Foundation\\Console\\OptimizeCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/OptimizeCommand.php', - 'Illuminate\\Foundation\\Console\\PackageDiscoverCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/PackageDiscoverCommand.php', - 'Illuminate\\Foundation\\Console\\PolicyMakeCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/PolicyMakeCommand.php', - 'Illuminate\\Foundation\\Console\\ProviderMakeCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/ProviderMakeCommand.php', - 'Illuminate\\Foundation\\Console\\QueuedCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/QueuedCommand.php', - 'Illuminate\\Foundation\\Console\\RequestMakeCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/RequestMakeCommand.php', - 'Illuminate\\Foundation\\Console\\ResourceMakeCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/ResourceMakeCommand.php', - 'Illuminate\\Foundation\\Console\\RouteCacheCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/RouteCacheCommand.php', - 'Illuminate\\Foundation\\Console\\RouteClearCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/RouteClearCommand.php', - 'Illuminate\\Foundation\\Console\\RouteListCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/RouteListCommand.php', - 'Illuminate\\Foundation\\Console\\RuleMakeCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/RuleMakeCommand.php', - 'Illuminate\\Foundation\\Console\\ScopeMakeCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/ScopeMakeCommand.php', - 'Illuminate\\Foundation\\Console\\ServeCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/ServeCommand.php', - 'Illuminate\\Foundation\\Console\\StorageLinkCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/StorageLinkCommand.php', - 'Illuminate\\Foundation\\Console\\StorageUnlinkCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/StorageUnlinkCommand.php', - 'Illuminate\\Foundation\\Console\\StubPublishCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/StubPublishCommand.php', - 'Illuminate\\Foundation\\Console\\TestMakeCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/TestMakeCommand.php', - 'Illuminate\\Foundation\\Console\\UpCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/UpCommand.php', - 'Illuminate\\Foundation\\Console\\VendorPublishCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/VendorPublishCommand.php', - 'Illuminate\\Foundation\\Console\\ViewCacheCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/ViewCacheCommand.php', - 'Illuminate\\Foundation\\Console\\ViewClearCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/ViewClearCommand.php', - 'Illuminate\\Foundation\\Console\\ViewMakeCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/ViewMakeCommand.php', - 'Illuminate\\Foundation\\EnvironmentDetector' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/EnvironmentDetector.php', - 'Illuminate\\Foundation\\Events\\DiscoverEvents' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Events/DiscoverEvents.php', - 'Illuminate\\Foundation\\Events\\Dispatchable' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Events/Dispatchable.php', - 'Illuminate\\Foundation\\Events\\LocaleUpdated' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Events/LocaleUpdated.php', - 'Illuminate\\Foundation\\Events\\MaintenanceModeDisabled' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Events/MaintenanceModeDisabled.php', - 'Illuminate\\Foundation\\Events\\MaintenanceModeEnabled' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Events/MaintenanceModeEnabled.php', - 'Illuminate\\Foundation\\Events\\PublishingStubs' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Events/PublishingStubs.php', - 'Illuminate\\Foundation\\Events\\VendorTagPublished' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Events/VendorTagPublished.php', - 'Illuminate\\Foundation\\Exceptions\\Handler' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php', - 'Illuminate\\Foundation\\Exceptions\\RegisterErrorViewPaths' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Exceptions/RegisterErrorViewPaths.php', - 'Illuminate\\Foundation\\Exceptions\\ReportableHandler' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Exceptions/ReportableHandler.php', - 'Illuminate\\Foundation\\Exceptions\\Whoops\\WhoopsExceptionRenderer' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Exceptions/Whoops/WhoopsExceptionRenderer.php', - 'Illuminate\\Foundation\\Exceptions\\Whoops\\WhoopsHandler' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Exceptions/Whoops/WhoopsHandler.php', - 'Illuminate\\Foundation\\FileBasedMaintenanceMode' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/FileBasedMaintenanceMode.php', - 'Illuminate\\Foundation\\Http\\Events\\RequestHandled' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Http/Events/RequestHandled.php', - 'Illuminate\\Foundation\\Http\\FormRequest' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Http/FormRequest.php', - 'Illuminate\\Foundation\\Http\\HtmlDumper' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Http/HtmlDumper.php', - 'Illuminate\\Foundation\\Http\\Kernel' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php', - 'Illuminate\\Foundation\\Http\\MaintenanceModeBypassCookie' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Http/MaintenanceModeBypassCookie.php', - 'Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php', - 'Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php', - 'Illuminate\\Foundation\\Http\\Middleware\\HandlePrecognitiveRequests' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Http/Middleware/HandlePrecognitiveRequests.php', - 'Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php', - 'Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php', - 'Illuminate\\Foundation\\Http\\Middleware\\TrimStrings' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php', - 'Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php', - 'Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php', - 'Illuminate\\Foundation\\Inspiring' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Inspiring.php', - 'Illuminate\\Foundation\\MaintenanceModeManager' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/MaintenanceModeManager.php', - 'Illuminate\\Foundation\\Mix' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Mix.php', - 'Illuminate\\Foundation\\PackageManifest' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/PackageManifest.php', - 'Illuminate\\Foundation\\Precognition' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Precognition.php', - 'Illuminate\\Foundation\\ProviderRepository' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php', - 'Illuminate\\Foundation\\Providers\\ArtisanServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Providers/ArtisanServiceProvider.php', - 'Illuminate\\Foundation\\Providers\\ComposerServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Providers/ComposerServiceProvider.php', - 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Providers/ConsoleSupportServiceProvider.php', - 'Illuminate\\Foundation\\Providers\\FormRequestServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Providers/FormRequestServiceProvider.php', - 'Illuminate\\Foundation\\Providers\\FoundationServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Providers/FoundationServiceProvider.php', - 'Illuminate\\Foundation\\Routing\\PrecognitionCallableDispatcher' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Routing/PrecognitionCallableDispatcher.php', - 'Illuminate\\Foundation\\Routing\\PrecognitionControllerDispatcher' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Routing/PrecognitionControllerDispatcher.php', - 'Illuminate\\Foundation\\Support\\Providers\\AuthServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Support/Providers/AuthServiceProvider.php', - 'Illuminate\\Foundation\\Support\\Providers\\EventServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Support/Providers/EventServiceProvider.php', - 'Illuminate\\Foundation\\Support\\Providers\\RouteServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Support/Providers/RouteServiceProvider.php', - 'Illuminate\\Foundation\\Testing\\Concerns\\InteractsWithAuthentication' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithAuthentication.php', - 'Illuminate\\Foundation\\Testing\\Concerns\\InteractsWithConsole' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithConsole.php', - 'Illuminate\\Foundation\\Testing\\Concerns\\InteractsWithContainer' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithContainer.php', - 'Illuminate\\Foundation\\Testing\\Concerns\\InteractsWithDatabase' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithDatabase.php', - 'Illuminate\\Foundation\\Testing\\Concerns\\InteractsWithDeprecationHandling' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithDeprecationHandling.php', - 'Illuminate\\Foundation\\Testing\\Concerns\\InteractsWithExceptionHandling' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithExceptionHandling.php', - 'Illuminate\\Foundation\\Testing\\Concerns\\InteractsWithRedis' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithRedis.php', - 'Illuminate\\Foundation\\Testing\\Concerns\\InteractsWithSession' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithSession.php', - 'Illuminate\\Foundation\\Testing\\Concerns\\InteractsWithTestCaseLifecycle' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithTestCaseLifecycle.php', - 'Illuminate\\Foundation\\Testing\\Concerns\\InteractsWithTime' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithTime.php', - 'Illuminate\\Foundation\\Testing\\Concerns\\InteractsWithViews' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithViews.php', - 'Illuminate\\Foundation\\Testing\\Concerns\\MakesHttpRequests' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php', - 'Illuminate\\Foundation\\Testing\\DatabaseMigrations' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/DatabaseMigrations.php', - 'Illuminate\\Foundation\\Testing\\DatabaseTransactions' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/DatabaseTransactions.php', - 'Illuminate\\Foundation\\Testing\\DatabaseTransactionsManager' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/DatabaseTransactionsManager.php', - 'Illuminate\\Foundation\\Testing\\DatabaseTruncation' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/DatabaseTruncation.php', - 'Illuminate\\Foundation\\Testing\\LazilyRefreshDatabase' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/LazilyRefreshDatabase.php', - 'Illuminate\\Foundation\\Testing\\RefreshDatabase' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/RefreshDatabase.php', - 'Illuminate\\Foundation\\Testing\\RefreshDatabaseState' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/RefreshDatabaseState.php', - 'Illuminate\\Foundation\\Testing\\TestCase' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/TestCase.php', - 'Illuminate\\Foundation\\Testing\\Traits\\CanConfigureMigrationCommands' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/Traits/CanConfigureMigrationCommands.php', - 'Illuminate\\Foundation\\Testing\\WithConsoleEvents' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/WithConsoleEvents.php', - 'Illuminate\\Foundation\\Testing\\WithFaker' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/WithFaker.php', - 'Illuminate\\Foundation\\Testing\\WithoutEvents' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/WithoutEvents.php', - 'Illuminate\\Foundation\\Testing\\WithoutMiddleware' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/WithoutMiddleware.php', - 'Illuminate\\Foundation\\Testing\\Wormhole' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/Wormhole.php', - 'Illuminate\\Foundation\\Validation\\ValidatesRequests' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Validation/ValidatesRequests.php', - 'Illuminate\\Foundation\\Vite' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Vite.php', - 'Illuminate\\Foundation\\ViteManifestNotFoundException' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/ViteManifestNotFoundException.php', - 'Illuminate\\Hashing\\AbstractHasher' => $vendorDir . '/laravel/framework/src/Illuminate/Hashing/AbstractHasher.php', - 'Illuminate\\Hashing\\Argon2IdHasher' => $vendorDir . '/laravel/framework/src/Illuminate/Hashing/Argon2IdHasher.php', - 'Illuminate\\Hashing\\ArgonHasher' => $vendorDir . '/laravel/framework/src/Illuminate/Hashing/ArgonHasher.php', - 'Illuminate\\Hashing\\BcryptHasher' => $vendorDir . '/laravel/framework/src/Illuminate/Hashing/BcryptHasher.php', - 'Illuminate\\Hashing\\HashManager' => $vendorDir . '/laravel/framework/src/Illuminate/Hashing/HashManager.php', - 'Illuminate\\Hashing\\HashServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Hashing/HashServiceProvider.php', - 'Illuminate\\Http\\Client\\Concerns\\DeterminesStatusCode' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Client/Concerns/DeterminesStatusCode.php', - 'Illuminate\\Http\\Client\\ConnectionException' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Client/ConnectionException.php', - 'Illuminate\\Http\\Client\\Events\\ConnectionFailed' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Client/Events/ConnectionFailed.php', - 'Illuminate\\Http\\Client\\Events\\RequestSending' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Client/Events/RequestSending.php', - 'Illuminate\\Http\\Client\\Events\\ResponseReceived' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Client/Events/ResponseReceived.php', - 'Illuminate\\Http\\Client\\Factory' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Client/Factory.php', - 'Illuminate\\Http\\Client\\HttpClientException' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Client/HttpClientException.php', - 'Illuminate\\Http\\Client\\PendingRequest' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Client/PendingRequest.php', - 'Illuminate\\Http\\Client\\Pool' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Client/Pool.php', - 'Illuminate\\Http\\Client\\Request' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Client/Request.php', - 'Illuminate\\Http\\Client\\RequestException' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Client/RequestException.php', - 'Illuminate\\Http\\Client\\Response' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Client/Response.php', - 'Illuminate\\Http\\Client\\ResponseSequence' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Client/ResponseSequence.php', - 'Illuminate\\Http\\Concerns\\CanBePrecognitive' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Concerns/CanBePrecognitive.php', - 'Illuminate\\Http\\Concerns\\InteractsWithContentTypes' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Concerns/InteractsWithContentTypes.php', - 'Illuminate\\Http\\Concerns\\InteractsWithFlashData' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Concerns/InteractsWithFlashData.php', - 'Illuminate\\Http\\Concerns\\InteractsWithInput' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Concerns/InteractsWithInput.php', - 'Illuminate\\Http\\Exceptions\\HttpResponseException' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Exceptions/HttpResponseException.php', - 'Illuminate\\Http\\Exceptions\\PostTooLargeException' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Exceptions/PostTooLargeException.php', - 'Illuminate\\Http\\Exceptions\\ThrottleRequestsException' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Exceptions/ThrottleRequestsException.php', - 'Illuminate\\Http\\File' => $vendorDir . '/laravel/framework/src/Illuminate/Http/File.php', - 'Illuminate\\Http\\FileHelpers' => $vendorDir . '/laravel/framework/src/Illuminate/Http/FileHelpers.php', - 'Illuminate\\Http\\JsonResponse' => $vendorDir . '/laravel/framework/src/Illuminate/Http/JsonResponse.php', - 'Illuminate\\Http\\Middleware\\AddLinkHeadersForPreloadedAssets' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Middleware/AddLinkHeadersForPreloadedAssets.php', - 'Illuminate\\Http\\Middleware\\CheckResponseForModifications' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Middleware/CheckResponseForModifications.php', - 'Illuminate\\Http\\Middleware\\FrameGuard' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Middleware/FrameGuard.php', - 'Illuminate\\Http\\Middleware\\HandleCors' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php', - 'Illuminate\\Http\\Middleware\\SetCacheHeaders' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Middleware/SetCacheHeaders.php', - 'Illuminate\\Http\\Middleware\\TrustHosts' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Middleware/TrustHosts.php', - 'Illuminate\\Http\\Middleware\\TrustProxies' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php', - 'Illuminate\\Http\\RedirectResponse' => $vendorDir . '/laravel/framework/src/Illuminate/Http/RedirectResponse.php', - 'Illuminate\\Http\\Request' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Request.php', - 'Illuminate\\Http\\Resources\\CollectsResources' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Resources/CollectsResources.php', - 'Illuminate\\Http\\Resources\\ConditionallyLoadsAttributes' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Resources/ConditionallyLoadsAttributes.php', - 'Illuminate\\Http\\Resources\\DelegatesToResource' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Resources/DelegatesToResource.php', - 'Illuminate\\Http\\Resources\\Json\\AnonymousResourceCollection' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Resources/Json/AnonymousResourceCollection.php', - 'Illuminate\\Http\\Resources\\Json\\JsonResource' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Resources/Json/JsonResource.php', - 'Illuminate\\Http\\Resources\\Json\\PaginatedResourceResponse' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Resources/Json/PaginatedResourceResponse.php', - 'Illuminate\\Http\\Resources\\Json\\ResourceCollection' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Resources/Json/ResourceCollection.php', - 'Illuminate\\Http\\Resources\\Json\\ResourceResponse' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Resources/Json/ResourceResponse.php', - 'Illuminate\\Http\\Resources\\MergeValue' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Resources/MergeValue.php', - 'Illuminate\\Http\\Resources\\MissingValue' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Resources/MissingValue.php', - 'Illuminate\\Http\\Resources\\PotentiallyMissing' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Resources/PotentiallyMissing.php', - 'Illuminate\\Http\\Response' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Response.php', - 'Illuminate\\Http\\ResponseTrait' => $vendorDir . '/laravel/framework/src/Illuminate/Http/ResponseTrait.php', - 'Illuminate\\Http\\Testing\\File' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Testing/File.php', - 'Illuminate\\Http\\Testing\\FileFactory' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Testing/FileFactory.php', - 'Illuminate\\Http\\Testing\\MimeType' => $vendorDir . '/laravel/framework/src/Illuminate/Http/Testing/MimeType.php', - 'Illuminate\\Http\\UploadedFile' => $vendorDir . '/laravel/framework/src/Illuminate/Http/UploadedFile.php', - 'Illuminate\\Log\\Events\\MessageLogged' => $vendorDir . '/laravel/framework/src/Illuminate/Log/Events/MessageLogged.php', - 'Illuminate\\Log\\LogManager' => $vendorDir . '/laravel/framework/src/Illuminate/Log/LogManager.php', - 'Illuminate\\Log\\LogServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Log/LogServiceProvider.php', - 'Illuminate\\Log\\Logger' => $vendorDir . '/laravel/framework/src/Illuminate/Log/Logger.php', - 'Illuminate\\Log\\ParsesLogConfiguration' => $vendorDir . '/laravel/framework/src/Illuminate/Log/ParsesLogConfiguration.php', - 'Illuminate\\Mail\\Attachment' => $vendorDir . '/laravel/framework/src/Illuminate/Mail/Attachment.php', - 'Illuminate\\Mail\\Events\\MessageSending' => $vendorDir . '/laravel/framework/src/Illuminate/Mail/Events/MessageSending.php', - 'Illuminate\\Mail\\Events\\MessageSent' => $vendorDir . '/laravel/framework/src/Illuminate/Mail/Events/MessageSent.php', - 'Illuminate\\Mail\\MailManager' => $vendorDir . '/laravel/framework/src/Illuminate/Mail/MailManager.php', - 'Illuminate\\Mail\\MailServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Mail/MailServiceProvider.php', - 'Illuminate\\Mail\\Mailable' => $vendorDir . '/laravel/framework/src/Illuminate/Mail/Mailable.php', - 'Illuminate\\Mail\\Mailables\\Address' => $vendorDir . '/laravel/framework/src/Illuminate/Mail/Mailables/Address.php', - 'Illuminate\\Mail\\Mailables\\Attachment' => $vendorDir . '/laravel/framework/src/Illuminate/Mail/Mailables/Attachment.php', - 'Illuminate\\Mail\\Mailables\\Content' => $vendorDir . '/laravel/framework/src/Illuminate/Mail/Mailables/Content.php', - 'Illuminate\\Mail\\Mailables\\Envelope' => $vendorDir . '/laravel/framework/src/Illuminate/Mail/Mailables/Envelope.php', - 'Illuminate\\Mail\\Mailables\\Headers' => $vendorDir . '/laravel/framework/src/Illuminate/Mail/Mailables/Headers.php', - 'Illuminate\\Mail\\Mailer' => $vendorDir . '/laravel/framework/src/Illuminate/Mail/Mailer.php', - 'Illuminate\\Mail\\Markdown' => $vendorDir . '/laravel/framework/src/Illuminate/Mail/Markdown.php', - 'Illuminate\\Mail\\Message' => $vendorDir . '/laravel/framework/src/Illuminate/Mail/Message.php', - 'Illuminate\\Mail\\PendingMail' => $vendorDir . '/laravel/framework/src/Illuminate/Mail/PendingMail.php', - 'Illuminate\\Mail\\SendQueuedMailable' => $vendorDir . '/laravel/framework/src/Illuminate/Mail/SendQueuedMailable.php', - 'Illuminate\\Mail\\SentMessage' => $vendorDir . '/laravel/framework/src/Illuminate/Mail/SentMessage.php', - 'Illuminate\\Mail\\TextMessage' => $vendorDir . '/laravel/framework/src/Illuminate/Mail/TextMessage.php', - 'Illuminate\\Mail\\Transport\\ArrayTransport' => $vendorDir . '/laravel/framework/src/Illuminate/Mail/Transport/ArrayTransport.php', - 'Illuminate\\Mail\\Transport\\LogTransport' => $vendorDir . '/laravel/framework/src/Illuminate/Mail/Transport/LogTransport.php', - 'Illuminate\\Mail\\Transport\\SesTransport' => $vendorDir . '/laravel/framework/src/Illuminate/Mail/Transport/SesTransport.php', - 'Illuminate\\Mail\\Transport\\SesV2Transport' => $vendorDir . '/laravel/framework/src/Illuminate/Mail/Transport/SesV2Transport.php', - 'Illuminate\\Notifications\\Action' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/Action.php', - 'Illuminate\\Notifications\\AnonymousNotifiable' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/AnonymousNotifiable.php', - 'Illuminate\\Notifications\\ChannelManager' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/ChannelManager.php', - 'Illuminate\\Notifications\\Channels\\BroadcastChannel' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/Channels/BroadcastChannel.php', - 'Illuminate\\Notifications\\Channels\\DatabaseChannel' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/Channels/DatabaseChannel.php', - 'Illuminate\\Notifications\\Channels\\MailChannel' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/Channels/MailChannel.php', - 'Illuminate\\Notifications\\Console\\NotificationTableCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/Console/NotificationTableCommand.php', - 'Illuminate\\Notifications\\DatabaseNotification' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/DatabaseNotification.php', - 'Illuminate\\Notifications\\DatabaseNotificationCollection' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/DatabaseNotificationCollection.php', - 'Illuminate\\Notifications\\Events\\BroadcastNotificationCreated' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/Events/BroadcastNotificationCreated.php', - 'Illuminate\\Notifications\\Events\\NotificationFailed' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/Events/NotificationFailed.php', - 'Illuminate\\Notifications\\Events\\NotificationSending' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/Events/NotificationSending.php', - 'Illuminate\\Notifications\\Events\\NotificationSent' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/Events/NotificationSent.php', - 'Illuminate\\Notifications\\HasDatabaseNotifications' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/HasDatabaseNotifications.php', - 'Illuminate\\Notifications\\Messages\\BroadcastMessage' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/Messages/BroadcastMessage.php', - 'Illuminate\\Notifications\\Messages\\DatabaseMessage' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/Messages/DatabaseMessage.php', - 'Illuminate\\Notifications\\Messages\\MailMessage' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/Messages/MailMessage.php', - 'Illuminate\\Notifications\\Messages\\SimpleMessage' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/Messages/SimpleMessage.php', - 'Illuminate\\Notifications\\Notifiable' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/Notifiable.php', - 'Illuminate\\Notifications\\Notification' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/Notification.php', - 'Illuminate\\Notifications\\NotificationSender' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/NotificationSender.php', - 'Illuminate\\Notifications\\NotificationServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/NotificationServiceProvider.php', - 'Illuminate\\Notifications\\RoutesNotifications' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/RoutesNotifications.php', - 'Illuminate\\Notifications\\SendQueuedNotifications' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/SendQueuedNotifications.php', - 'Illuminate\\Pagination\\AbstractCursorPaginator' => $vendorDir . '/laravel/framework/src/Illuminate/Pagination/AbstractCursorPaginator.php', - 'Illuminate\\Pagination\\AbstractPaginator' => $vendorDir . '/laravel/framework/src/Illuminate/Pagination/AbstractPaginator.php', - 'Illuminate\\Pagination\\Cursor' => $vendorDir . '/laravel/framework/src/Illuminate/Pagination/Cursor.php', - 'Illuminate\\Pagination\\CursorPaginator' => $vendorDir . '/laravel/framework/src/Illuminate/Pagination/CursorPaginator.php', - 'Illuminate\\Pagination\\LengthAwarePaginator' => $vendorDir . '/laravel/framework/src/Illuminate/Pagination/LengthAwarePaginator.php', - 'Illuminate\\Pagination\\PaginationServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Pagination/PaginationServiceProvider.php', - 'Illuminate\\Pagination\\PaginationState' => $vendorDir . '/laravel/framework/src/Illuminate/Pagination/PaginationState.php', - 'Illuminate\\Pagination\\Paginator' => $vendorDir . '/laravel/framework/src/Illuminate/Pagination/Paginator.php', - 'Illuminate\\Pagination\\UrlWindow' => $vendorDir . '/laravel/framework/src/Illuminate/Pagination/UrlWindow.php', - 'Illuminate\\Pipeline\\Hub' => $vendorDir . '/laravel/framework/src/Illuminate/Pipeline/Hub.php', - 'Illuminate\\Pipeline\\Pipeline' => $vendorDir . '/laravel/framework/src/Illuminate/Pipeline/Pipeline.php', - 'Illuminate\\Pipeline\\PipelineServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Pipeline/PipelineServiceProvider.php', - 'Illuminate\\Process\\Exceptions\\ProcessFailedException' => $vendorDir . '/laravel/framework/src/Illuminate/Process/Exceptions/ProcessFailedException.php', - 'Illuminate\\Process\\Exceptions\\ProcessTimedOutException' => $vendorDir . '/laravel/framework/src/Illuminate/Process/Exceptions/ProcessTimedOutException.php', - 'Illuminate\\Process\\Factory' => $vendorDir . '/laravel/framework/src/Illuminate/Process/Factory.php', - 'Illuminate\\Process\\FakeInvokedProcess' => $vendorDir . '/laravel/framework/src/Illuminate/Process/FakeInvokedProcess.php', - 'Illuminate\\Process\\FakeProcessDescription' => $vendorDir . '/laravel/framework/src/Illuminate/Process/FakeProcessDescription.php', - 'Illuminate\\Process\\FakeProcessResult' => $vendorDir . '/laravel/framework/src/Illuminate/Process/FakeProcessResult.php', - 'Illuminate\\Process\\FakeProcessSequence' => $vendorDir . '/laravel/framework/src/Illuminate/Process/FakeProcessSequence.php', - 'Illuminate\\Process\\InvokedProcess' => $vendorDir . '/laravel/framework/src/Illuminate/Process/InvokedProcess.php', - 'Illuminate\\Process\\InvokedProcessPool' => $vendorDir . '/laravel/framework/src/Illuminate/Process/InvokedProcessPool.php', - 'Illuminate\\Process\\PendingProcess' => $vendorDir . '/laravel/framework/src/Illuminate/Process/PendingProcess.php', - 'Illuminate\\Process\\Pipe' => $vendorDir . '/laravel/framework/src/Illuminate/Process/Pipe.php', - 'Illuminate\\Process\\Pool' => $vendorDir . '/laravel/framework/src/Illuminate/Process/Pool.php', - 'Illuminate\\Process\\ProcessPoolResults' => $vendorDir . '/laravel/framework/src/Illuminate/Process/ProcessPoolResults.php', - 'Illuminate\\Process\\ProcessResult' => $vendorDir . '/laravel/framework/src/Illuminate/Process/ProcessResult.php', - 'Illuminate\\Queue\\Attributes\\WithoutRelations' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Attributes/WithoutRelations.php', - 'Illuminate\\Queue\\BeanstalkdQueue' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/BeanstalkdQueue.php', - 'Illuminate\\Queue\\CallQueuedClosure' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/CallQueuedClosure.php', - 'Illuminate\\Queue\\CallQueuedHandler' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php', - 'Illuminate\\Queue\\Capsule\\Manager' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Capsule/Manager.php', - 'Illuminate\\Queue\\Connectors\\BeanstalkdConnector' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Connectors/BeanstalkdConnector.php', - 'Illuminate\\Queue\\Connectors\\ConnectorInterface' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Connectors/ConnectorInterface.php', - 'Illuminate\\Queue\\Connectors\\DatabaseConnector' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Connectors/DatabaseConnector.php', - 'Illuminate\\Queue\\Connectors\\NullConnector' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Connectors/NullConnector.php', - 'Illuminate\\Queue\\Connectors\\RedisConnector' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Connectors/RedisConnector.php', - 'Illuminate\\Queue\\Connectors\\SqsConnector' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Connectors/SqsConnector.php', - 'Illuminate\\Queue\\Connectors\\SyncConnector' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Connectors/SyncConnector.php', - 'Illuminate\\Queue\\Console\\BatchesTableCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Console/BatchesTableCommand.php', - 'Illuminate\\Queue\\Console\\ClearCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Console/ClearCommand.php', - 'Illuminate\\Queue\\Console\\FailedTableCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Console/FailedTableCommand.php', - 'Illuminate\\Queue\\Console\\FlushFailedCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Console/FlushFailedCommand.php', - 'Illuminate\\Queue\\Console\\ForgetFailedCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Console/ForgetFailedCommand.php', - 'Illuminate\\Queue\\Console\\ListFailedCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Console/ListFailedCommand.php', - 'Illuminate\\Queue\\Console\\ListenCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Console/ListenCommand.php', - 'Illuminate\\Queue\\Console\\MonitorCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Console/MonitorCommand.php', - 'Illuminate\\Queue\\Console\\PruneBatchesCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Console/PruneBatchesCommand.php', - 'Illuminate\\Queue\\Console\\PruneFailedJobsCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Console/PruneFailedJobsCommand.php', - 'Illuminate\\Queue\\Console\\RestartCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Console/RestartCommand.php', - 'Illuminate\\Queue\\Console\\RetryBatchCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Console/RetryBatchCommand.php', - 'Illuminate\\Queue\\Console\\RetryCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Console/RetryCommand.php', - 'Illuminate\\Queue\\Console\\TableCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Console/TableCommand.php', - 'Illuminate\\Queue\\Console\\WorkCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php', - 'Illuminate\\Queue\\DatabaseQueue' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/DatabaseQueue.php', - 'Illuminate\\Queue\\Events\\JobExceptionOccurred' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Events/JobExceptionOccurred.php', - 'Illuminate\\Queue\\Events\\JobFailed' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Events/JobFailed.php', - 'Illuminate\\Queue\\Events\\JobPopped' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Events/JobPopped.php', - 'Illuminate\\Queue\\Events\\JobPopping' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Events/JobPopping.php', - 'Illuminate\\Queue\\Events\\JobProcessed' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Events/JobProcessed.php', - 'Illuminate\\Queue\\Events\\JobProcessing' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Events/JobProcessing.php', - 'Illuminate\\Queue\\Events\\JobQueued' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Events/JobQueued.php', - 'Illuminate\\Queue\\Events\\JobQueueing' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Events/JobQueueing.php', - 'Illuminate\\Queue\\Events\\JobReleasedAfterException' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Events/JobReleasedAfterException.php', - 'Illuminate\\Queue\\Events\\JobRetryRequested' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Events/JobRetryRequested.php', - 'Illuminate\\Queue\\Events\\JobTimedOut' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Events/JobTimedOut.php', - 'Illuminate\\Queue\\Events\\Looping' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Events/Looping.php', - 'Illuminate\\Queue\\Events\\QueueBusy' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Events/QueueBusy.php', - 'Illuminate\\Queue\\Events\\WorkerStopping' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Events/WorkerStopping.php', - 'Illuminate\\Queue\\Failed\\CountableFailedJobProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Failed/CountableFailedJobProvider.php', - 'Illuminate\\Queue\\Failed\\DatabaseFailedJobProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Failed/DatabaseFailedJobProvider.php', - 'Illuminate\\Queue\\Failed\\DatabaseUuidFailedJobProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Failed/DatabaseUuidFailedJobProvider.php', - 'Illuminate\\Queue\\Failed\\DynamoDbFailedJobProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Failed/DynamoDbFailedJobProvider.php', - 'Illuminate\\Queue\\Failed\\FailedJobProviderInterface' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Failed/FailedJobProviderInterface.php', - 'Illuminate\\Queue\\Failed\\FileFailedJobProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Failed/FileFailedJobProvider.php', - 'Illuminate\\Queue\\Failed\\NullFailedJobProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Failed/NullFailedJobProvider.php', - 'Illuminate\\Queue\\Failed\\PrunableFailedJobProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Failed/PrunableFailedJobProvider.php', - 'Illuminate\\Queue\\InteractsWithQueue' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/InteractsWithQueue.php', - 'Illuminate\\Queue\\InvalidPayloadException' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/InvalidPayloadException.php', - 'Illuminate\\Queue\\Jobs\\BeanstalkdJob' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Jobs/BeanstalkdJob.php', - 'Illuminate\\Queue\\Jobs\\DatabaseJob' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Jobs/DatabaseJob.php', - 'Illuminate\\Queue\\Jobs\\DatabaseJobRecord' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Jobs/DatabaseJobRecord.php', - 'Illuminate\\Queue\\Jobs\\Job' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Jobs/Job.php', - 'Illuminate\\Queue\\Jobs\\JobName' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Jobs/JobName.php', - 'Illuminate\\Queue\\Jobs\\RedisJob' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Jobs/RedisJob.php', - 'Illuminate\\Queue\\Jobs\\SqsJob' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Jobs/SqsJob.php', - 'Illuminate\\Queue\\Jobs\\SyncJob' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Jobs/SyncJob.php', - 'Illuminate\\Queue\\Listener' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Listener.php', - 'Illuminate\\Queue\\ListenerOptions' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/ListenerOptions.php', - 'Illuminate\\Queue\\LuaScripts' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/LuaScripts.php', - 'Illuminate\\Queue\\ManuallyFailedException' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/ManuallyFailedException.php', - 'Illuminate\\Queue\\MaxAttemptsExceededException' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/MaxAttemptsExceededException.php', - 'Illuminate\\Queue\\Middleware\\RateLimited' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Middleware/RateLimited.php', - 'Illuminate\\Queue\\Middleware\\RateLimitedWithRedis' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Middleware/RateLimitedWithRedis.php', - 'Illuminate\\Queue\\Middleware\\SkipIfBatchCancelled' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Middleware/SkipIfBatchCancelled.php', - 'Illuminate\\Queue\\Middleware\\ThrottlesExceptions' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Middleware/ThrottlesExceptions.php', - 'Illuminate\\Queue\\Middleware\\ThrottlesExceptionsWithRedis' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Middleware/ThrottlesExceptionsWithRedis.php', - 'Illuminate\\Queue\\Middleware\\WithoutOverlapping' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Middleware/WithoutOverlapping.php', - 'Illuminate\\Queue\\NullQueue' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/NullQueue.php', - 'Illuminate\\Queue\\Queue' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Queue.php', - 'Illuminate\\Queue\\QueueManager' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/QueueManager.php', - 'Illuminate\\Queue\\QueueServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/QueueServiceProvider.php', - 'Illuminate\\Queue\\RedisQueue' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/RedisQueue.php', - 'Illuminate\\Queue\\SerializesAndRestoresModelIdentifiers' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/SerializesAndRestoresModelIdentifiers.php', - 'Illuminate\\Queue\\SerializesModels' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/SerializesModels.php', - 'Illuminate\\Queue\\SqsQueue' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/SqsQueue.php', - 'Illuminate\\Queue\\SyncQueue' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/SyncQueue.php', - 'Illuminate\\Queue\\TimeoutExceededException' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/TimeoutExceededException.php', - 'Illuminate\\Queue\\Worker' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Worker.php', - 'Illuminate\\Queue\\WorkerOptions' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/WorkerOptions.php', - 'Illuminate\\Redis\\Connections\\Connection' => $vendorDir . '/laravel/framework/src/Illuminate/Redis/Connections/Connection.php', - 'Illuminate\\Redis\\Connections\\PacksPhpRedisValues' => $vendorDir . '/laravel/framework/src/Illuminate/Redis/Connections/PacksPhpRedisValues.php', - 'Illuminate\\Redis\\Connections\\PhpRedisClusterConnection' => $vendorDir . '/laravel/framework/src/Illuminate/Redis/Connections/PhpRedisClusterConnection.php', - 'Illuminate\\Redis\\Connections\\PhpRedisConnection' => $vendorDir . '/laravel/framework/src/Illuminate/Redis/Connections/PhpRedisConnection.php', - 'Illuminate\\Redis\\Connections\\PredisClusterConnection' => $vendorDir . '/laravel/framework/src/Illuminate/Redis/Connections/PredisClusterConnection.php', - 'Illuminate\\Redis\\Connections\\PredisConnection' => $vendorDir . '/laravel/framework/src/Illuminate/Redis/Connections/PredisConnection.php', - 'Illuminate\\Redis\\Connectors\\PhpRedisConnector' => $vendorDir . '/laravel/framework/src/Illuminate/Redis/Connectors/PhpRedisConnector.php', - 'Illuminate\\Redis\\Connectors\\PredisConnector' => $vendorDir . '/laravel/framework/src/Illuminate/Redis/Connectors/PredisConnector.php', - 'Illuminate\\Redis\\Events\\CommandExecuted' => $vendorDir . '/laravel/framework/src/Illuminate/Redis/Events/CommandExecuted.php', - 'Illuminate\\Redis\\Limiters\\ConcurrencyLimiter' => $vendorDir . '/laravel/framework/src/Illuminate/Redis/Limiters/ConcurrencyLimiter.php', - 'Illuminate\\Redis\\Limiters\\ConcurrencyLimiterBuilder' => $vendorDir . '/laravel/framework/src/Illuminate/Redis/Limiters/ConcurrencyLimiterBuilder.php', - 'Illuminate\\Redis\\Limiters\\DurationLimiter' => $vendorDir . '/laravel/framework/src/Illuminate/Redis/Limiters/DurationLimiter.php', - 'Illuminate\\Redis\\Limiters\\DurationLimiterBuilder' => $vendorDir . '/laravel/framework/src/Illuminate/Redis/Limiters/DurationLimiterBuilder.php', - 'Illuminate\\Redis\\RedisManager' => $vendorDir . '/laravel/framework/src/Illuminate/Redis/RedisManager.php', - 'Illuminate\\Redis\\RedisServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Redis/RedisServiceProvider.php', - 'Illuminate\\Routing\\AbstractRouteCollection' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/AbstractRouteCollection.php', - 'Illuminate\\Routing\\CallableDispatcher' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/CallableDispatcher.php', - 'Illuminate\\Routing\\CompiledRouteCollection' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/CompiledRouteCollection.php', - 'Illuminate\\Routing\\Console\\ControllerMakeCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/Console/ControllerMakeCommand.php', - 'Illuminate\\Routing\\Console\\MiddlewareMakeCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/Console/MiddlewareMakeCommand.php', - 'Illuminate\\Routing\\Contracts\\CallableDispatcher' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/Contracts/CallableDispatcher.php', - 'Illuminate\\Routing\\Contracts\\ControllerDispatcher' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/Contracts/ControllerDispatcher.php', - 'Illuminate\\Routing\\Controller' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/Controller.php', - 'Illuminate\\Routing\\ControllerDispatcher' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php', - 'Illuminate\\Routing\\ControllerMiddlewareOptions' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/ControllerMiddlewareOptions.php', - 'Illuminate\\Routing\\Controllers\\HasMiddleware' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/Controllers/HasMiddleware.php', - 'Illuminate\\Routing\\Controllers\\Middleware' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/Controllers/Middleware.php', - 'Illuminate\\Routing\\CreatesRegularExpressionRouteConstraints' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/CreatesRegularExpressionRouteConstraints.php', - 'Illuminate\\Routing\\Events\\PreparingResponse' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/Events/PreparingResponse.php', - 'Illuminate\\Routing\\Events\\ResponsePrepared' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/Events/ResponsePrepared.php', - 'Illuminate\\Routing\\Events\\RouteMatched' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/Events/RouteMatched.php', - 'Illuminate\\Routing\\Events\\Routing' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/Events/Routing.php', - 'Illuminate\\Routing\\Exceptions\\BackedEnumCaseNotFoundException' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/Exceptions/BackedEnumCaseNotFoundException.php', - 'Illuminate\\Routing\\Exceptions\\InvalidSignatureException' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/Exceptions/InvalidSignatureException.php', - 'Illuminate\\Routing\\Exceptions\\StreamedResponseException' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/Exceptions/StreamedResponseException.php', - 'Illuminate\\Routing\\Exceptions\\UrlGenerationException' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/Exceptions/UrlGenerationException.php', - 'Illuminate\\Routing\\FiltersControllerMiddleware' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/FiltersControllerMiddleware.php', - 'Illuminate\\Routing\\ImplicitRouteBinding' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/ImplicitRouteBinding.php', - 'Illuminate\\Routing\\Matching\\HostValidator' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/Matching/HostValidator.php', - 'Illuminate\\Routing\\Matching\\MethodValidator' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/Matching/MethodValidator.php', - 'Illuminate\\Routing\\Matching\\SchemeValidator' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/Matching/SchemeValidator.php', - 'Illuminate\\Routing\\Matching\\UriValidator' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/Matching/UriValidator.php', - 'Illuminate\\Routing\\Matching\\ValidatorInterface' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/Matching/ValidatorInterface.php', - 'Illuminate\\Routing\\MiddlewareNameResolver' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/MiddlewareNameResolver.php', - 'Illuminate\\Routing\\Middleware\\SubstituteBindings' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php', - 'Illuminate\\Routing\\Middleware\\ThrottleRequests' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php', - 'Illuminate\\Routing\\Middleware\\ThrottleRequestsWithRedis' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequestsWithRedis.php', - 'Illuminate\\Routing\\Middleware\\ValidateSignature' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/Middleware/ValidateSignature.php', - 'Illuminate\\Routing\\PendingResourceRegistration' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/PendingResourceRegistration.php', - 'Illuminate\\Routing\\PendingSingletonResourceRegistration' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/PendingSingletonResourceRegistration.php', - 'Illuminate\\Routing\\Pipeline' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/Pipeline.php', - 'Illuminate\\Routing\\RedirectController' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/RedirectController.php', - 'Illuminate\\Routing\\Redirector' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/Redirector.php', - 'Illuminate\\Routing\\ResolvesRouteDependencies' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/ResolvesRouteDependencies.php', - 'Illuminate\\Routing\\ResourceRegistrar' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/ResourceRegistrar.php', - 'Illuminate\\Routing\\ResponseFactory' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/ResponseFactory.php', - 'Illuminate\\Routing\\Route' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/Route.php', - 'Illuminate\\Routing\\RouteAction' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/RouteAction.php', - 'Illuminate\\Routing\\RouteBinding' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/RouteBinding.php', - 'Illuminate\\Routing\\RouteCollection' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/RouteCollection.php', - 'Illuminate\\Routing\\RouteCollectionInterface' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/RouteCollectionInterface.php', - 'Illuminate\\Routing\\RouteDependencyResolverTrait' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/RouteDependencyResolverTrait.php', - 'Illuminate\\Routing\\RouteFileRegistrar' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/RouteFileRegistrar.php', - 'Illuminate\\Routing\\RouteGroup' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/RouteGroup.php', - 'Illuminate\\Routing\\RouteParameterBinder' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/RouteParameterBinder.php', - 'Illuminate\\Routing\\RouteRegistrar' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/RouteRegistrar.php', - 'Illuminate\\Routing\\RouteSignatureParameters' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/RouteSignatureParameters.php', - 'Illuminate\\Routing\\RouteUri' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/RouteUri.php', - 'Illuminate\\Routing\\RouteUrlGenerator' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/RouteUrlGenerator.php', - 'Illuminate\\Routing\\Router' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/Router.php', - 'Illuminate\\Routing\\RoutingServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/RoutingServiceProvider.php', - 'Illuminate\\Routing\\SortedMiddleware' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/SortedMiddleware.php', - 'Illuminate\\Routing\\UrlGenerator' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/UrlGenerator.php', - 'Illuminate\\Routing\\ViewController' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/ViewController.php', - 'Illuminate\\Session\\ArraySessionHandler' => $vendorDir . '/laravel/framework/src/Illuminate/Session/ArraySessionHandler.php', - 'Illuminate\\Session\\CacheBasedSessionHandler' => $vendorDir . '/laravel/framework/src/Illuminate/Session/CacheBasedSessionHandler.php', - 'Illuminate\\Session\\Console\\SessionTableCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Session/Console/SessionTableCommand.php', - 'Illuminate\\Session\\CookieSessionHandler' => $vendorDir . '/laravel/framework/src/Illuminate/Session/CookieSessionHandler.php', - 'Illuminate\\Session\\DatabaseSessionHandler' => $vendorDir . '/laravel/framework/src/Illuminate/Session/DatabaseSessionHandler.php', - 'Illuminate\\Session\\EncryptedStore' => $vendorDir . '/laravel/framework/src/Illuminate/Session/EncryptedStore.php', - 'Illuminate\\Session\\ExistenceAwareInterface' => $vendorDir . '/laravel/framework/src/Illuminate/Session/ExistenceAwareInterface.php', - 'Illuminate\\Session\\FileSessionHandler' => $vendorDir . '/laravel/framework/src/Illuminate/Session/FileSessionHandler.php', - 'Illuminate\\Session\\Middleware\\AuthenticateSession' => $vendorDir . '/laravel/framework/src/Illuminate/Session/Middleware/AuthenticateSession.php', - 'Illuminate\\Session\\Middleware\\StartSession' => $vendorDir . '/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php', - 'Illuminate\\Session\\NullSessionHandler' => $vendorDir . '/laravel/framework/src/Illuminate/Session/NullSessionHandler.php', - 'Illuminate\\Session\\SessionManager' => $vendorDir . '/laravel/framework/src/Illuminate/Session/SessionManager.php', - 'Illuminate\\Session\\SessionServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Session/SessionServiceProvider.php', - 'Illuminate\\Session\\Store' => $vendorDir . '/laravel/framework/src/Illuminate/Session/Store.php', - 'Illuminate\\Session\\SymfonySessionDecorator' => $vendorDir . '/laravel/framework/src/Illuminate/Session/SymfonySessionDecorator.php', - 'Illuminate\\Session\\TokenMismatchException' => $vendorDir . '/laravel/framework/src/Illuminate/Session/TokenMismatchException.php', - 'Illuminate\\Support\\AggregateServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Support/AggregateServiceProvider.php', - 'Illuminate\\Support\\Arr' => $vendorDir . '/laravel/framework/src/Illuminate/Collections/Arr.php', - 'Illuminate\\Support\\Benchmark' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Benchmark.php', - 'Illuminate\\Support\\Carbon' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Carbon.php', - 'Illuminate\\Support\\Collection' => $vendorDir . '/laravel/framework/src/Illuminate/Collections/Collection.php', - 'Illuminate\\Support\\Composer' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Composer.php', - 'Illuminate\\Support\\ConfigurationUrlParser' => $vendorDir . '/laravel/framework/src/Illuminate/Support/ConfigurationUrlParser.php', - 'Illuminate\\Support\\DateFactory' => $vendorDir . '/laravel/framework/src/Illuminate/Support/DateFactory.php', - 'Illuminate\\Support\\DefaultProviders' => $vendorDir . '/laravel/framework/src/Illuminate/Support/DefaultProviders.php', - 'Illuminate\\Support\\Enumerable' => $vendorDir . '/laravel/framework/src/Illuminate/Collections/Enumerable.php', - 'Illuminate\\Support\\Env' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Env.php', - 'Illuminate\\Support\\Exceptions\\MathException' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Exceptions/MathException.php', - 'Illuminate\\Support\\Facades\\App' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/App.php', - 'Illuminate\\Support\\Facades\\Artisan' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Artisan.php', - 'Illuminate\\Support\\Facades\\Auth' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Auth.php', - 'Illuminate\\Support\\Facades\\Blade' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Blade.php', - 'Illuminate\\Support\\Facades\\Broadcast' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Broadcast.php', - 'Illuminate\\Support\\Facades\\Bus' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Bus.php', - 'Illuminate\\Support\\Facades\\Cache' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Cache.php', - 'Illuminate\\Support\\Facades\\Config' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Config.php', - 'Illuminate\\Support\\Facades\\Cookie' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Cookie.php', - 'Illuminate\\Support\\Facades\\Crypt' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Crypt.php', - 'Illuminate\\Support\\Facades\\DB' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/DB.php', - 'Illuminate\\Support\\Facades\\Date' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Date.php', - 'Illuminate\\Support\\Facades\\Event' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Event.php', - 'Illuminate\\Support\\Facades\\Facade' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Facade.php', - 'Illuminate\\Support\\Facades\\File' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/File.php', - 'Illuminate\\Support\\Facades\\Gate' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Gate.php', - 'Illuminate\\Support\\Facades\\Hash' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Hash.php', - 'Illuminate\\Support\\Facades\\Http' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Http.php', - 'Illuminate\\Support\\Facades\\Lang' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Lang.php', - 'Illuminate\\Support\\Facades\\Log' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Log.php', - 'Illuminate\\Support\\Facades\\Mail' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Mail.php', - 'Illuminate\\Support\\Facades\\Notification' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Notification.php', - 'Illuminate\\Support\\Facades\\ParallelTesting' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/ParallelTesting.php', - 'Illuminate\\Support\\Facades\\Password' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Password.php', - 'Illuminate\\Support\\Facades\\Pipeline' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Pipeline.php', - 'Illuminate\\Support\\Facades\\Process' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Process.php', - 'Illuminate\\Support\\Facades\\Queue' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Queue.php', - 'Illuminate\\Support\\Facades\\RateLimiter' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/RateLimiter.php', - 'Illuminate\\Support\\Facades\\Redirect' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Redirect.php', - 'Illuminate\\Support\\Facades\\Redis' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Redis.php', - 'Illuminate\\Support\\Facades\\Request' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Request.php', - 'Illuminate\\Support\\Facades\\Response' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Response.php', - 'Illuminate\\Support\\Facades\\Route' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Route.php', - 'Illuminate\\Support\\Facades\\Schema' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Schema.php', - 'Illuminate\\Support\\Facades\\Session' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Session.php', - 'Illuminate\\Support\\Facades\\Storage' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Storage.php', - 'Illuminate\\Support\\Facades\\URL' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/URL.php', - 'Illuminate\\Support\\Facades\\Validator' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Validator.php', - 'Illuminate\\Support\\Facades\\View' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/View.php', - 'Illuminate\\Support\\Facades\\Vite' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Vite.php', - 'Illuminate\\Support\\Fluent' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Fluent.php', - 'Illuminate\\Support\\HigherOrderCollectionProxy' => $vendorDir . '/laravel/framework/src/Illuminate/Collections/HigherOrderCollectionProxy.php', - 'Illuminate\\Support\\HigherOrderTapProxy' => $vendorDir . '/laravel/framework/src/Illuminate/Support/HigherOrderTapProxy.php', - 'Illuminate\\Support\\HigherOrderWhenProxy' => $vendorDir . '/laravel/framework/src/Illuminate/Conditionable/HigherOrderWhenProxy.php', - 'Illuminate\\Support\\HtmlString' => $vendorDir . '/laravel/framework/src/Illuminate/Support/HtmlString.php', - 'Illuminate\\Support\\InteractsWithTime' => $vendorDir . '/laravel/framework/src/Illuminate/Support/InteractsWithTime.php', - 'Illuminate\\Support\\ItemNotFoundException' => $vendorDir . '/laravel/framework/src/Illuminate/Collections/ItemNotFoundException.php', - 'Illuminate\\Support\\Js' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Js.php', - 'Illuminate\\Support\\LazyCollection' => $vendorDir . '/laravel/framework/src/Illuminate/Collections/LazyCollection.php', - 'Illuminate\\Support\\Lottery' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Lottery.php', - 'Illuminate\\Support\\Manager' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Manager.php', - 'Illuminate\\Support\\MessageBag' => $vendorDir . '/laravel/framework/src/Illuminate/Support/MessageBag.php', - 'Illuminate\\Support\\MultipleInstanceManager' => $vendorDir . '/laravel/framework/src/Illuminate/Support/MultipleInstanceManager.php', - 'Illuminate\\Support\\MultipleItemsFoundException' => $vendorDir . '/laravel/framework/src/Illuminate/Collections/MultipleItemsFoundException.php', - 'Illuminate\\Support\\NamespacedItemResolver' => $vendorDir . '/laravel/framework/src/Illuminate/Support/NamespacedItemResolver.php', - 'Illuminate\\Support\\Number' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Number.php', - 'Illuminate\\Support\\Optional' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Optional.php', - 'Illuminate\\Support\\Pluralizer' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Pluralizer.php', - 'Illuminate\\Support\\ProcessUtils' => $vendorDir . '/laravel/framework/src/Illuminate/Support/ProcessUtils.php', - 'Illuminate\\Support\\Reflector' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Reflector.php', - 'Illuminate\\Support\\ServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Support/ServiceProvider.php', - 'Illuminate\\Support\\Sleep' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Sleep.php', - 'Illuminate\\Support\\Str' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Str.php', - 'Illuminate\\Support\\Stringable' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Stringable.php', - 'Illuminate\\Support\\Testing\\Fakes\\BatchFake' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Testing/Fakes/BatchFake.php', - 'Illuminate\\Support\\Testing\\Fakes\\BatchRepositoryFake' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Testing/Fakes/BatchRepositoryFake.php', - 'Illuminate\\Support\\Testing\\Fakes\\BusFake' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Testing/Fakes/BusFake.php', - 'Illuminate\\Support\\Testing\\Fakes\\ChainedBatchTruthTest' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Testing/Fakes/ChainedBatchTruthTest.php', - 'Illuminate\\Support\\Testing\\Fakes\\EventFake' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Testing/Fakes/EventFake.php', - 'Illuminate\\Support\\Testing\\Fakes\\Fake' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Testing/Fakes/Fake.php', - 'Illuminate\\Support\\Testing\\Fakes\\MailFake' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Testing/Fakes/MailFake.php', - 'Illuminate\\Support\\Testing\\Fakes\\NotificationFake' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Testing/Fakes/NotificationFake.php', - 'Illuminate\\Support\\Testing\\Fakes\\PendingBatchFake' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Testing/Fakes/PendingBatchFake.php', - 'Illuminate\\Support\\Testing\\Fakes\\PendingChainFake' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Testing/Fakes/PendingChainFake.php', - 'Illuminate\\Support\\Testing\\Fakes\\PendingMailFake' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Testing/Fakes/PendingMailFake.php', - 'Illuminate\\Support\\Testing\\Fakes\\QueueFake' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Testing/Fakes/QueueFake.php', - 'Illuminate\\Support\\Timebox' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Timebox.php', - 'Illuminate\\Support\\Traits\\CapsuleManagerTrait' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Traits/CapsuleManagerTrait.php', - 'Illuminate\\Support\\Traits\\Conditionable' => $vendorDir . '/laravel/framework/src/Illuminate/Conditionable/Traits/Conditionable.php', - 'Illuminate\\Support\\Traits\\EnumeratesValues' => $vendorDir . '/laravel/framework/src/Illuminate/Collections/Traits/EnumeratesValues.php', - 'Illuminate\\Support\\Traits\\ForwardsCalls' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php', - 'Illuminate\\Support\\Traits\\Localizable' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Traits/Localizable.php', - 'Illuminate\\Support\\Traits\\Macroable' => $vendorDir . '/laravel/framework/src/Illuminate/Macroable/Traits/Macroable.php', - 'Illuminate\\Support\\Traits\\ReflectsClosures' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Traits/ReflectsClosures.php', - 'Illuminate\\Support\\Traits\\Tappable' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Traits/Tappable.php', - 'Illuminate\\Support\\ValidatedInput' => $vendorDir . '/laravel/framework/src/Illuminate/Support/ValidatedInput.php', - 'Illuminate\\Support\\ViewErrorBag' => $vendorDir . '/laravel/framework/src/Illuminate/Support/ViewErrorBag.php', - 'Illuminate\\Testing\\Assert' => $vendorDir . '/laravel/framework/src/Illuminate/Testing/Assert.php', - 'Illuminate\\Testing\\AssertableJsonString' => $vendorDir . '/laravel/framework/src/Illuminate/Testing/AssertableJsonString.php', - 'Illuminate\\Testing\\Concerns\\AssertsStatusCodes' => $vendorDir . '/laravel/framework/src/Illuminate/Testing/Concerns/AssertsStatusCodes.php', - 'Illuminate\\Testing\\Concerns\\RunsInParallel' => $vendorDir . '/laravel/framework/src/Illuminate/Testing/Concerns/RunsInParallel.php', - 'Illuminate\\Testing\\Concerns\\TestDatabases' => $vendorDir . '/laravel/framework/src/Illuminate/Testing/Concerns/TestDatabases.php', - 'Illuminate\\Testing\\Constraints\\ArraySubset' => $vendorDir . '/laravel/framework/src/Illuminate/Testing/Constraints/ArraySubset.php', - 'Illuminate\\Testing\\Constraints\\CountInDatabase' => $vendorDir . '/laravel/framework/src/Illuminate/Testing/Constraints/CountInDatabase.php', - 'Illuminate\\Testing\\Constraints\\HasInDatabase' => $vendorDir . '/laravel/framework/src/Illuminate/Testing/Constraints/HasInDatabase.php', - 'Illuminate\\Testing\\Constraints\\NotSoftDeletedInDatabase' => $vendorDir . '/laravel/framework/src/Illuminate/Testing/Constraints/NotSoftDeletedInDatabase.php', - 'Illuminate\\Testing\\Constraints\\SeeInOrder' => $vendorDir . '/laravel/framework/src/Illuminate/Testing/Constraints/SeeInOrder.php', - 'Illuminate\\Testing\\Constraints\\SoftDeletedInDatabase' => $vendorDir . '/laravel/framework/src/Illuminate/Testing/Constraints/SoftDeletedInDatabase.php', - 'Illuminate\\Testing\\Exceptions\\InvalidArgumentException' => $vendorDir . '/laravel/framework/src/Illuminate/Testing/Exceptions/InvalidArgumentException.php', - 'Illuminate\\Testing\\Fluent\\AssertableJson' => $vendorDir . '/laravel/framework/src/Illuminate/Testing/Fluent/AssertableJson.php', - 'Illuminate\\Testing\\Fluent\\Concerns\\Debugging' => $vendorDir . '/laravel/framework/src/Illuminate/Testing/Fluent/Concerns/Debugging.php', - 'Illuminate\\Testing\\Fluent\\Concerns\\Has' => $vendorDir . '/laravel/framework/src/Illuminate/Testing/Fluent/Concerns/Has.php', - 'Illuminate\\Testing\\Fluent\\Concerns\\Interaction' => $vendorDir . '/laravel/framework/src/Illuminate/Testing/Fluent/Concerns/Interaction.php', - 'Illuminate\\Testing\\Fluent\\Concerns\\Matching' => $vendorDir . '/laravel/framework/src/Illuminate/Testing/Fluent/Concerns/Matching.php', - 'Illuminate\\Testing\\LoggedExceptionCollection' => $vendorDir . '/laravel/framework/src/Illuminate/Testing/LoggedExceptionCollection.php', - 'Illuminate\\Testing\\ParallelConsoleOutput' => $vendorDir . '/laravel/framework/src/Illuminate/Testing/ParallelConsoleOutput.php', - 'Illuminate\\Testing\\ParallelRunner' => $vendorDir . '/laravel/framework/src/Illuminate/Testing/ParallelRunner.php', - 'Illuminate\\Testing\\ParallelTesting' => $vendorDir . '/laravel/framework/src/Illuminate/Testing/ParallelTesting.php', - 'Illuminate\\Testing\\ParallelTestingServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Testing/ParallelTestingServiceProvider.php', - 'Illuminate\\Testing\\PendingCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Testing/PendingCommand.php', - 'Illuminate\\Testing\\TestComponent' => $vendorDir . '/laravel/framework/src/Illuminate/Testing/TestComponent.php', - 'Illuminate\\Testing\\TestResponse' => $vendorDir . '/laravel/framework/src/Illuminate/Testing/TestResponse.php', - 'Illuminate\\Testing\\TestView' => $vendorDir . '/laravel/framework/src/Illuminate/Testing/TestView.php', - 'Illuminate\\Translation\\ArrayLoader' => $vendorDir . '/laravel/framework/src/Illuminate/Translation/ArrayLoader.php', - 'Illuminate\\Translation\\CreatesPotentiallyTranslatedStrings' => $vendorDir . '/laravel/framework/src/Illuminate/Translation/CreatesPotentiallyTranslatedStrings.php', - 'Illuminate\\Translation\\FileLoader' => $vendorDir . '/laravel/framework/src/Illuminate/Translation/FileLoader.php', - 'Illuminate\\Translation\\MessageSelector' => $vendorDir . '/laravel/framework/src/Illuminate/Translation/MessageSelector.php', - 'Illuminate\\Translation\\PotentiallyTranslatedString' => $vendorDir . '/laravel/framework/src/Illuminate/Translation/PotentiallyTranslatedString.php', - 'Illuminate\\Translation\\TranslationServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Translation/TranslationServiceProvider.php', - 'Illuminate\\Translation\\Translator' => $vendorDir . '/laravel/framework/src/Illuminate/Translation/Translator.php', - 'Illuminate\\Validation\\ClosureValidationRule' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/ClosureValidationRule.php', - 'Illuminate\\Validation\\Concerns\\FilterEmailValidation' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/Concerns/FilterEmailValidation.php', - 'Illuminate\\Validation\\Concerns\\FormatsMessages' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/Concerns/FormatsMessages.php', - 'Illuminate\\Validation\\Concerns\\ReplacesAttributes' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/Concerns/ReplacesAttributes.php', - 'Illuminate\\Validation\\Concerns\\ValidatesAttributes' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/Concerns/ValidatesAttributes.php', - 'Illuminate\\Validation\\ConditionalRules' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/ConditionalRules.php', - 'Illuminate\\Validation\\DatabasePresenceVerifier' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/DatabasePresenceVerifier.php', - 'Illuminate\\Validation\\DatabasePresenceVerifierInterface' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/DatabasePresenceVerifierInterface.php', - 'Illuminate\\Validation\\Factory' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/Factory.php', - 'Illuminate\\Validation\\InvokableValidationRule' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/InvokableValidationRule.php', - 'Illuminate\\Validation\\NestedRules' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/NestedRules.php', - 'Illuminate\\Validation\\NotPwnedVerifier' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/NotPwnedVerifier.php', - 'Illuminate\\Validation\\PresenceVerifierInterface' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/PresenceVerifierInterface.php', - 'Illuminate\\Validation\\Rule' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/Rule.php', - 'Illuminate\\Validation\\Rules\\Can' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/Rules/Can.php', - 'Illuminate\\Validation\\Rules\\DatabaseRule' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/Rules/DatabaseRule.php', - 'Illuminate\\Validation\\Rules\\Dimensions' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/Rules/Dimensions.php', - 'Illuminate\\Validation\\Rules\\Enum' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/Rules/Enum.php', - 'Illuminate\\Validation\\Rules\\ExcludeIf' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/Rules/ExcludeIf.php', - 'Illuminate\\Validation\\Rules\\Exists' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/Rules/Exists.php', - 'Illuminate\\Validation\\Rules\\File' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/Rules/File.php', - 'Illuminate\\Validation\\Rules\\ImageFile' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/Rules/ImageFile.php', - 'Illuminate\\Validation\\Rules\\In' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/Rules/In.php', - 'Illuminate\\Validation\\Rules\\NotIn' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/Rules/NotIn.php', - 'Illuminate\\Validation\\Rules\\Password' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/Rules/Password.php', - 'Illuminate\\Validation\\Rules\\ProhibitedIf' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/Rules/ProhibitedIf.php', - 'Illuminate\\Validation\\Rules\\RequiredIf' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/Rules/RequiredIf.php', - 'Illuminate\\Validation\\Rules\\Unique' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/Rules/Unique.php', - 'Illuminate\\Validation\\UnauthorizedException' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/UnauthorizedException.php', - 'Illuminate\\Validation\\ValidatesWhenResolvedTrait' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/ValidatesWhenResolvedTrait.php', - 'Illuminate\\Validation\\ValidationData' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/ValidationData.php', - 'Illuminate\\Validation\\ValidationException' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/ValidationException.php', - 'Illuminate\\Validation\\ValidationRuleParser' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/ValidationRuleParser.php', - 'Illuminate\\Validation\\ValidationServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/ValidationServiceProvider.php', - 'Illuminate\\Validation\\Validator' => $vendorDir . '/laravel/framework/src/Illuminate/Validation/Validator.php', - 'Illuminate\\View\\AnonymousComponent' => $vendorDir . '/laravel/framework/src/Illuminate/View/AnonymousComponent.php', - 'Illuminate\\View\\AppendableAttributeValue' => $vendorDir . '/laravel/framework/src/Illuminate/View/AppendableAttributeValue.php', - 'Illuminate\\View\\Compilers\\BladeCompiler' => $vendorDir . '/laravel/framework/src/Illuminate/View/Compilers/BladeCompiler.php', - 'Illuminate\\View\\Compilers\\Compiler' => $vendorDir . '/laravel/framework/src/Illuminate/View/Compilers/Compiler.php', - 'Illuminate\\View\\Compilers\\CompilerInterface' => $vendorDir . '/laravel/framework/src/Illuminate/View/Compilers/CompilerInterface.php', - 'Illuminate\\View\\Compilers\\ComponentTagCompiler' => $vendorDir . '/laravel/framework/src/Illuminate/View/Compilers/ComponentTagCompiler.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesAuthorizations' => $vendorDir . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesAuthorizations.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesClasses' => $vendorDir . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesClasses.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesComments' => $vendorDir . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesComments.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesComponents' => $vendorDir . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesComponents.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesConditionals' => $vendorDir . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesConditionals.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesEchos' => $vendorDir . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesEchos.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesErrors' => $vendorDir . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesErrors.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesFragments' => $vendorDir . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesFragments.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesHelpers' => $vendorDir . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesHelpers.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesIncludes' => $vendorDir . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesIncludes.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesInjections' => $vendorDir . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesInjections.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesJs' => $vendorDir . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesJs.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesJson' => $vendorDir . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesJson.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesLayouts' => $vendorDir . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesLayouts.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesLoops' => $vendorDir . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesLoops.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesRawPhp' => $vendorDir . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesRawPhp.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesSessions' => $vendorDir . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesSessions.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesStacks' => $vendorDir . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesStacks.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesStyles' => $vendorDir . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesStyles.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesTranslations' => $vendorDir . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesTranslations.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesUseStatements' => $vendorDir . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesUseStatements.php', - 'Illuminate\\View\\Component' => $vendorDir . '/laravel/framework/src/Illuminate/View/Component.php', - 'Illuminate\\View\\ComponentAttributeBag' => $vendorDir . '/laravel/framework/src/Illuminate/View/ComponentAttributeBag.php', - 'Illuminate\\View\\ComponentSlot' => $vendorDir . '/laravel/framework/src/Illuminate/View/ComponentSlot.php', - 'Illuminate\\View\\Concerns\\ManagesComponents' => $vendorDir . '/laravel/framework/src/Illuminate/View/Concerns/ManagesComponents.php', - 'Illuminate\\View\\Concerns\\ManagesEvents' => $vendorDir . '/laravel/framework/src/Illuminate/View/Concerns/ManagesEvents.php', - 'Illuminate\\View\\Concerns\\ManagesFragments' => $vendorDir . '/laravel/framework/src/Illuminate/View/Concerns/ManagesFragments.php', - 'Illuminate\\View\\Concerns\\ManagesLayouts' => $vendorDir . '/laravel/framework/src/Illuminate/View/Concerns/ManagesLayouts.php', - 'Illuminate\\View\\Concerns\\ManagesLoops' => $vendorDir . '/laravel/framework/src/Illuminate/View/Concerns/ManagesLoops.php', - 'Illuminate\\View\\Concerns\\ManagesStacks' => $vendorDir . '/laravel/framework/src/Illuminate/View/Concerns/ManagesStacks.php', - 'Illuminate\\View\\Concerns\\ManagesTranslations' => $vendorDir . '/laravel/framework/src/Illuminate/View/Concerns/ManagesTranslations.php', - 'Illuminate\\View\\DynamicComponent' => $vendorDir . '/laravel/framework/src/Illuminate/View/DynamicComponent.php', - 'Illuminate\\View\\Engines\\CompilerEngine' => $vendorDir . '/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php', - 'Illuminate\\View\\Engines\\Engine' => $vendorDir . '/laravel/framework/src/Illuminate/View/Engines/Engine.php', - 'Illuminate\\View\\Engines\\EngineResolver' => $vendorDir . '/laravel/framework/src/Illuminate/View/Engines/EngineResolver.php', - 'Illuminate\\View\\Engines\\FileEngine' => $vendorDir . '/laravel/framework/src/Illuminate/View/Engines/FileEngine.php', - 'Illuminate\\View\\Engines\\PhpEngine' => $vendorDir . '/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php', - 'Illuminate\\View\\Factory' => $vendorDir . '/laravel/framework/src/Illuminate/View/Factory.php', - 'Illuminate\\View\\FileViewFinder' => $vendorDir . '/laravel/framework/src/Illuminate/View/FileViewFinder.php', - 'Illuminate\\View\\InvokableComponentVariable' => $vendorDir . '/laravel/framework/src/Illuminate/View/InvokableComponentVariable.php', - 'Illuminate\\View\\Middleware\\ShareErrorsFromSession' => $vendorDir . '/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php', - 'Illuminate\\View\\View' => $vendorDir . '/laravel/framework/src/Illuminate/View/View.php', - 'Illuminate\\View\\ViewException' => $vendorDir . '/laravel/framework/src/Illuminate/View/ViewException.php', - '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', - 'InventoryItemsClassesTableSeeder' => $baseDir . '/database/seeders/InventoryItemsClassesTableSeeder.php', - 'InvestigationSeeder' => $baseDir . '/database/seeders/InvestigationSeeder.php', - 'Knp\\Snappy\\AbstractGenerator' => $vendorDir . '/knplabs/knp-snappy/src/Knp/Snappy/AbstractGenerator.php', - 'Knp\\Snappy\\Exception\\FileAlreadyExistsException' => $vendorDir . '/knplabs/knp-snappy/src/Knp/Snappy/Exception/FileAlreadyExistsException.php', - 'Knp\\Snappy\\GeneratorInterface' => $vendorDir . '/knplabs/knp-snappy/src/Knp/Snappy/GeneratorInterface.php', - 'Knp\\Snappy\\Image' => $vendorDir . '/knplabs/knp-snappy/src/Knp/Snappy/Image.php', - 'Knp\\Snappy\\Pdf' => $vendorDir . '/knplabs/knp-snappy/src/Knp/Snappy/Pdf.php', - 'Laracasts\\Flash\\Flash' => $vendorDir . '/laracasts/flash/src/Laracasts/Flash/Flash.php', - 'Laracasts\\Flash\\FlashNotifier' => $vendorDir . '/laracasts/flash/src/Laracasts/Flash/FlashNotifier.php', - 'Laracasts\\Flash\\FlashServiceProvider' => $vendorDir . '/laracasts/flash/src/Laracasts/Flash/FlashServiceProvider.php', - 'Laracasts\\Flash\\LaravelSessionStore' => $vendorDir . '/laracasts/flash/src/Laracasts/Flash/LaravelSessionStore.php', - 'Laracasts\\Flash\\Message' => $vendorDir . '/laracasts/flash/src/Laracasts/Flash/Message.php', - 'Laracasts\\Flash\\OverlayMessage' => $vendorDir . '/laracasts/flash/src/Laracasts/Flash/OverlayMessage.php', - 'Laracasts\\Flash\\SessionStore' => $vendorDir . '/laracasts/flash/src/Laracasts/Flash/SessionStore.php', - 'Larastan\\Larastan\\ApplicationResolver' => $vendorDir . '/larastan/larastan/src/ApplicationResolver.php', - 'Larastan\\Larastan\\Collectors\\UsedEmailViewCollector' => $vendorDir . '/larastan/larastan/src/Collectors/UsedEmailViewCollector.php', - 'Larastan\\Larastan\\Collectors\\UsedRouteFacadeViewCollector' => $vendorDir . '/larastan/larastan/src/Collectors/UsedRouteFacadeViewCollector.php', - 'Larastan\\Larastan\\Collectors\\UsedViewFacadeMakeCollector' => $vendorDir . '/larastan/larastan/src/Collectors/UsedViewFacadeMakeCollector.php', - 'Larastan\\Larastan\\Collectors\\UsedViewFunctionCollector' => $vendorDir . '/larastan/larastan/src/Collectors/UsedViewFunctionCollector.php', - 'Larastan\\Larastan\\Collectors\\UsedViewInAnotherViewCollector' => $vendorDir . '/larastan/larastan/src/Collectors/UsedViewInAnotherViewCollector.php', - 'Larastan\\Larastan\\Collectors\\UsedViewMakeCollector' => $vendorDir . '/larastan/larastan/src/Collectors/UsedViewMakeCollector.php', - 'Larastan\\Larastan\\Concerns\\HasContainer' => $vendorDir . '/larastan/larastan/src/Concerns/HasContainer.php', - 'Larastan\\Larastan\\Concerns\\LoadsAuthModel' => $vendorDir . '/larastan/larastan/src/Concerns/LoadsAuthModel.php', - 'Larastan\\Larastan\\Contracts\\Methods\\PassableContract' => $vendorDir . '/larastan/larastan/src/Contracts/Methods/PassableContract.php', - 'Larastan\\Larastan\\Contracts\\Methods\\Pipes\\PipeContract' => $vendorDir . '/larastan/larastan/src/Contracts/Methods/Pipes/PipeContract.php', - 'Larastan\\Larastan\\Contracts\\Types\\PassableContract' => $vendorDir . '/larastan/larastan/src/Contracts/Types/PassableContract.php', - 'Larastan\\Larastan\\Contracts\\Types\\Pipes\\PipeContract' => $vendorDir . '/larastan/larastan/src/Contracts/Types/Pipes/PipeContract.php', - 'Larastan\\Larastan\\Internal\\ComposerHelper' => $vendorDir . '/larastan/larastan/src/Internal/ComposerHelper.php', - 'Larastan\\Larastan\\Internal\\ConsoleApplicationHelper' => $vendorDir . '/larastan/larastan/src/Internal/ConsoleApplicationHelper.php', - 'Larastan\\Larastan\\Internal\\ConsoleApplicationResolver' => $vendorDir . '/larastan/larastan/src/Internal/ConsoleApplicationResolver.php', - 'Larastan\\Larastan\\Internal\\LaravelVersion' => $vendorDir . '/larastan/larastan/src/Internal/LaravelVersion.php', - 'Larastan\\Larastan\\LarastanStubFilesExtension' => $vendorDir . '/larastan/larastan/src/LarastanStubFilesExtension.php', - 'Larastan\\Larastan\\Methods\\BuilderHelper' => $vendorDir . '/larastan/larastan/src/Methods/BuilderHelper.php', - 'Larastan\\Larastan\\Methods\\EloquentBuilderForwardsCallsExtension' => $vendorDir . '/larastan/larastan/src/Methods/EloquentBuilderForwardsCallsExtension.php', - 'Larastan\\Larastan\\Methods\\Extension' => $vendorDir . '/larastan/larastan/src/Methods/Extension.php', - 'Larastan\\Larastan\\Methods\\HigherOrderCollectionProxyExtension' => $vendorDir . '/larastan/larastan/src/Methods/HigherOrderCollectionProxyExtension.php', - 'Larastan\\Larastan\\Methods\\HigherOrderTapProxyExtension' => $vendorDir . '/larastan/larastan/src/Methods/HigherOrderTapProxyExtension.php', - 'Larastan\\Larastan\\Methods\\Kernel' => $vendorDir . '/larastan/larastan/src/Methods/Kernel.php', - 'Larastan\\Larastan\\Methods\\Macro' => $vendorDir . '/larastan/larastan/src/Methods/Macro.php', - 'Larastan\\Larastan\\Methods\\MacroMethodsClassReflectionExtension' => $vendorDir . '/larastan/larastan/src/Methods/MacroMethodsClassReflectionExtension.php', - 'Larastan\\Larastan\\Methods\\ModelFactoryMethodsClassReflectionExtension' => $vendorDir . '/larastan/larastan/src/Methods/ModelFactoryMethodsClassReflectionExtension.php', - 'Larastan\\Larastan\\Methods\\ModelForwardsCallsExtension' => $vendorDir . '/larastan/larastan/src/Methods/ModelForwardsCallsExtension.php', - 'Larastan\\Larastan\\Methods\\ModelTypeHelper' => $vendorDir . '/larastan/larastan/src/Methods/ModelTypeHelper.php', - 'Larastan\\Larastan\\Methods\\Passable' => $vendorDir . '/larastan/larastan/src/Methods/Passable.php', - 'Larastan\\Larastan\\Methods\\Pipes\\Auths' => $vendorDir . '/larastan/larastan/src/Methods/Pipes/Auths.php', - 'Larastan\\Larastan\\Methods\\Pipes\\Contracts' => $vendorDir . '/larastan/larastan/src/Methods/Pipes/Contracts.php', - 'Larastan\\Larastan\\Methods\\Pipes\\Facades' => $vendorDir . '/larastan/larastan/src/Methods/Pipes/Facades.php', - 'Larastan\\Larastan\\Methods\\Pipes\\Managers' => $vendorDir . '/larastan/larastan/src/Methods/Pipes/Managers.php', - 'Larastan\\Larastan\\Methods\\Pipes\\SelfClass' => $vendorDir . '/larastan/larastan/src/Methods/Pipes/SelfClass.php', - 'Larastan\\Larastan\\Methods\\RedirectResponseMethodsClassReflectionExtension' => $vendorDir . '/larastan/larastan/src/Methods/RedirectResponseMethodsClassReflectionExtension.php', - 'Larastan\\Larastan\\Methods\\RelationForwardsCallsExtension' => $vendorDir . '/larastan/larastan/src/Methods/RelationForwardsCallsExtension.php', - 'Larastan\\Larastan\\Methods\\StorageMethodsClassReflectionExtension' => $vendorDir . '/larastan/larastan/src/Methods/StorageMethodsClassReflectionExtension.php', - 'Larastan\\Larastan\\Methods\\ViewWithMethodsClassReflectionExtension' => $vendorDir . '/larastan/larastan/src/Methods/ViewWithMethodsClassReflectionExtension.php', - 'Larastan\\Larastan\\Properties\\HigherOrderCollectionProxyPropertyExtension' => $vendorDir . '/larastan/larastan/src/Properties/HigherOrderCollectionProxyPropertyExtension.php', - 'Larastan\\Larastan\\Properties\\MigrationHelper' => $vendorDir . '/larastan/larastan/src/Properties/MigrationHelper.php', - 'Larastan\\Larastan\\Properties\\ModelAccessorExtension' => $vendorDir . '/larastan/larastan/src/Properties/ModelAccessorExtension.php', - 'Larastan\\Larastan\\Properties\\ModelCastHelper' => $vendorDir . '/larastan/larastan/src/Properties/ModelCastHelper.php', - 'Larastan\\Larastan\\Properties\\ModelProperty' => $vendorDir . '/larastan/larastan/src/Properties/ModelProperty.php', - 'Larastan\\Larastan\\Properties\\ModelPropertyExtension' => $vendorDir . '/larastan/larastan/src/Properties/ModelPropertyExtension.php', - 'Larastan\\Larastan\\Properties\\ModelPropertyHelper' => $vendorDir . '/larastan/larastan/src/Properties/ModelPropertyHelper.php', - 'Larastan\\Larastan\\Properties\\ModelRelationsExtension' => $vendorDir . '/larastan/larastan/src/Properties/ModelRelationsExtension.php', - 'Larastan\\Larastan\\Properties\\ReflectionTypeContainer' => $vendorDir . '/larastan/larastan/src/Properties/ReflectionTypeContainer.php', - 'Larastan\\Larastan\\Properties\\SchemaAggregator' => $vendorDir . '/larastan/larastan/src/Properties/SchemaAggregator.php', - 'Larastan\\Larastan\\Properties\\SchemaColumn' => $vendorDir . '/larastan/larastan/src/Properties/SchemaColumn.php', - 'Larastan\\Larastan\\Properties\\SchemaTable' => $vendorDir . '/larastan/larastan/src/Properties/SchemaTable.php', - 'Larastan\\Larastan\\Properties\\Schema\\PhpMyAdminDataTypeToPhpTypeConverter' => $vendorDir . '/larastan/larastan/src/Properties/Schema/PhpMyAdminDataTypeToPhpTypeConverter.php', - 'Larastan\\Larastan\\Properties\\SquashedMigrationHelper' => $vendorDir . '/larastan/larastan/src/Properties/SquashedMigrationHelper.php', - 'Larastan\\Larastan\\Reflection\\AnnotationScopeMethodParameterReflection' => $vendorDir . '/larastan/larastan/src/Reflection/AnnotationScopeMethodParameterReflection.php', - 'Larastan\\Larastan\\Reflection\\AnnotationScopeMethodReflection' => $vendorDir . '/larastan/larastan/src/Reflection/AnnotationScopeMethodReflection.php', - 'Larastan\\Larastan\\Reflection\\DynamicWhereMethodReflection' => $vendorDir . '/larastan/larastan/src/Reflection/DynamicWhereMethodReflection.php', - 'Larastan\\Larastan\\Reflection\\DynamicWhereParameterReflection' => $vendorDir . '/larastan/larastan/src/Reflection/DynamicWhereParameterReflection.php', - 'Larastan\\Larastan\\Reflection\\EloquentBuilderMethodReflection' => $vendorDir . '/larastan/larastan/src/Reflection/EloquentBuilderMethodReflection.php', - 'Larastan\\Larastan\\Reflection\\ModelScopeMethodReflection' => $vendorDir . '/larastan/larastan/src/Reflection/ModelScopeMethodReflection.php', - 'Larastan\\Larastan\\Reflection\\ReflectionHelper' => $vendorDir . '/larastan/larastan/src/Reflection/ReflectionHelper.php', - 'Larastan\\Larastan\\Reflection\\StaticMethodReflection' => $vendorDir . '/larastan/larastan/src/Reflection/StaticMethodReflection.php', - 'Larastan\\Larastan\\ReturnTypes\\AppEnvironmentReturnTypeExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/AppEnvironmentReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\AppMakeDynamicReturnTypeExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/AppMakeDynamicReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\AppMakeHelper' => $vendorDir . '/larastan/larastan/src/ReturnTypes/AppMakeHelper.php', - 'Larastan\\Larastan\\ReturnTypes\\ApplicationMakeDynamicReturnTypeExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/ApplicationMakeDynamicReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\AuthExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/AuthExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\AuthManagerExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/AuthManagerExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\BuilderModelFindExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/BuilderModelFindExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\CollectionFilterRejectDynamicReturnTypeExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/CollectionFilterRejectDynamicReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\CollectionWhereNotNullDynamicReturnTypeExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/CollectionWhereNotNullDynamicReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\ConsoleCommand\\ArgumentDynamicReturnTypeExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/ConsoleCommand/ArgumentDynamicReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\ConsoleCommand\\HasArgumentDynamicReturnTypeExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/ConsoleCommand/HasArgumentDynamicReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\ConsoleCommand\\HasOptionDynamicReturnTypeExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/ConsoleCommand/HasOptionDynamicReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\ConsoleCommand\\OptionDynamicReturnTypeExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/ConsoleCommand/OptionDynamicReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\ContainerArrayAccessDynamicMethodReturnTypeExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/ContainerArrayAccessDynamicMethodReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\ContainerMakeDynamicReturnTypeExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/ContainerMakeDynamicReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\DateExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/DateExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\DoubleUnderscoreHelperReturnTypeExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/DoubleUnderscoreHelperReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\EloquentBuilderExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/EloquentBuilderExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\EnumerableGenericStaticMethodDynamicMethodReturnTypeExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/EnumerableGenericStaticMethodDynamicMethodReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\EnumerableGenericStaticMethodDynamicStaticMethodReturnTypeExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/EnumerableGenericStaticMethodDynamicStaticMethodReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\FactoryDynamicMethodReturnTypeExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/FactoryDynamicMethodReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\GuardDynamicStaticMethodReturnTypeExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/GuardDynamicStaticMethodReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\GuardExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/GuardExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\Helpers\\AppExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/Helpers/AppExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\Helpers\\AuthExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/Helpers/AuthExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\Helpers\\CollectExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/Helpers/CollectExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\Helpers\\NowAndTodayExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/Helpers/NowAndTodayExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\Helpers\\ResponseExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/Helpers/ResponseExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\Helpers\\StrExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/Helpers/StrExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\Helpers\\TapExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/Helpers/TapExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\Helpers\\ValidatorExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/Helpers/ValidatorExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\Helpers\\ValueExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/Helpers/ValueExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\HigherOrderTapProxyExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/HigherOrderTapProxyExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\ModelDynamicStaticMethodReturnTypeExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/ModelDynamicStaticMethodReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\ModelFactoryDynamicStaticMethodReturnTypeExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/ModelFactoryDynamicStaticMethodReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\ModelFindExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/ModelFindExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\ModelOnlyDynamicMethodReturnTypeExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/ModelOnlyDynamicMethodReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\NewModelQueryDynamicMethodReturnTypeExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/NewModelQueryDynamicMethodReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\RelationCollectionExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/RelationCollectionExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\RequestFileExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/RequestFileExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\RequestRouteExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/RequestRouteExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\RequestUserExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/RequestUserExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\StorageDynamicStaticMethodReturnTypeExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/StorageDynamicStaticMethodReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\TestCaseExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/TestCaseExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\TransHelperReturnTypeExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/TransHelperReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\TranslatorGetReturnTypeExtension' => $vendorDir . '/larastan/larastan/src/ReturnTypes/TranslatorGetReturnTypeExtension.php', - 'Larastan\\Larastan\\Rules\\CheckDispatchArgumentTypesCompatibleWithClassConstructorRule' => $vendorDir . '/larastan/larastan/src/Rules/CheckDispatchArgumentTypesCompatibleWithClassConstructorRule.php', - 'Larastan\\Larastan\\Rules\\ConsoleCommand\\UndefinedArgumentOrOptionRule' => $vendorDir . '/larastan/larastan/src/Rules/ConsoleCommand/UndefinedArgumentOrOptionRule.php', - 'Larastan\\Larastan\\Rules\\DeferrableServiceProviderMissingProvidesRule' => $vendorDir . '/larastan/larastan/src/Rules/DeferrableServiceProviderMissingProvidesRule.php', - 'Larastan\\Larastan\\Rules\\ModelAppendsRule' => $vendorDir . '/larastan/larastan/src/Rules/ModelAppendsRule.php', - 'Larastan\\Larastan\\Rules\\ModelRuleHelper' => $vendorDir . '/larastan/larastan/src/Rules/ModelRuleHelper.php', - 'Larastan\\Larastan\\Rules\\NoEnvCallsOutsideOfConfigRule' => $vendorDir . '/larastan/larastan/src/Rules/NoEnvCallsOutsideOfConfigRule.php', - 'Larastan\\Larastan\\Rules\\NoModelMakeRule' => $vendorDir . '/larastan/larastan/src/Rules/NoModelMakeRule.php', - 'Larastan\\Larastan\\Rules\\NoUnnecessaryCollectionCallRule' => $vendorDir . '/larastan/larastan/src/Rules/NoUnnecessaryCollectionCallRule.php', - 'Larastan\\Larastan\\Rules\\OctaneCompatibilityRule' => $vendorDir . '/larastan/larastan/src/Rules/OctaneCompatibilityRule.php', - 'Larastan\\Larastan\\Rules\\RelationExistenceRule' => $vendorDir . '/larastan/larastan/src/Rules/RelationExistenceRule.php', - 'Larastan\\Larastan\\Rules\\UnusedViewsRule' => $vendorDir . '/larastan/larastan/src/Rules/UnusedViewsRule.php', - 'Larastan\\Larastan\\Rules\\UselessConstructs\\NoUselessValueFunctionCallsRule' => $vendorDir . '/larastan/larastan/src/Rules/UselessConstructs/NoUselessValueFunctionCallsRule.php', - 'Larastan\\Larastan\\Rules\\UselessConstructs\\NoUselessWithFunctionCallsRule' => $vendorDir . '/larastan/larastan/src/Rules/UselessConstructs/NoUselessWithFunctionCallsRule.php', - 'Larastan\\Larastan\\Support\\CollectionHelper' => $vendorDir . '/larastan/larastan/src/Support/CollectionHelper.php', - 'Larastan\\Larastan\\Support\\HigherOrderCollectionProxyHelper' => $vendorDir . '/larastan/larastan/src/Support/HigherOrderCollectionProxyHelper.php', - 'Larastan\\Larastan\\Support\\ViewFileHelper' => $vendorDir . '/larastan/larastan/src/Support/ViewFileHelper.php', - 'Larastan\\Larastan\\Types\\AbortIfFunctionTypeSpecifyingExtension' => $vendorDir . '/larastan/larastan/src/Types/AbortIfFunctionTypeSpecifyingExtension.php', - 'Larastan\\Larastan\\Types\\Factory\\ModelFactoryType' => $vendorDir . '/larastan/larastan/src/Types/Factory/ModelFactoryType.php', - 'Larastan\\Larastan\\Types\\GenericEloquentBuilderTypeNodeResolverExtension' => $vendorDir . '/larastan/larastan/src/Types/GenericEloquentBuilderTypeNodeResolverExtension.php', - 'Larastan\\Larastan\\Types\\GenericEloquentCollectionTypeNodeResolverExtension' => $vendorDir . '/larastan/larastan/src/Types/GenericEloquentCollectionTypeNodeResolverExtension.php', - 'Larastan\\Larastan\\Types\\ModelProperty\\GenericModelPropertyType' => $vendorDir . '/larastan/larastan/src/Types/ModelProperty/GenericModelPropertyType.php', - 'Larastan\\Larastan\\Types\\ModelProperty\\ModelPropertyTypeNodeResolverExtension' => $vendorDir . '/larastan/larastan/src/Types/ModelProperty/ModelPropertyTypeNodeResolverExtension.php', - 'Larastan\\Larastan\\Types\\ModelRelationsDynamicMethodReturnTypeExtension' => $vendorDir . '/larastan/larastan/src/Types/ModelRelationsDynamicMethodReturnTypeExtension.php', - 'Larastan\\Larastan\\Types\\Passable' => $vendorDir . '/larastan/larastan/src/Types/Passable.php', - 'Larastan\\Larastan\\Types\\RelationDynamicMethodReturnTypeExtension' => $vendorDir . '/larastan/larastan/src/Types/RelationDynamicMethodReturnTypeExtension.php', - 'Larastan\\Larastan\\Types\\RelationParserHelper' => $vendorDir . '/larastan/larastan/src/Types/RelationParserHelper.php', - 'Larastan\\Larastan\\Types\\ViewStringType' => $vendorDir . '/larastan/larastan/src/Types/ViewStringType.php', - 'Larastan\\Larastan\\Types\\ViewStringTypeNodeResolverExtension' => $vendorDir . '/larastan/larastan/src/Types/ViewStringTypeNodeResolverExtension.php', - 'Laravel\\Prompts\\Concerns\\Colors' => $vendorDir . '/laravel/prompts/src/Concerns/Colors.php', - 'Laravel\\Prompts\\Concerns\\Cursor' => $vendorDir . '/laravel/prompts/src/Concerns/Cursor.php', - 'Laravel\\Prompts\\Concerns\\Erase' => $vendorDir . '/laravel/prompts/src/Concerns/Erase.php', - 'Laravel\\Prompts\\Concerns\\Events' => $vendorDir . '/laravel/prompts/src/Concerns/Events.php', - 'Laravel\\Prompts\\Concerns\\FakesInputOutput' => $vendorDir . '/laravel/prompts/src/Concerns/FakesInputOutput.php', - 'Laravel\\Prompts\\Concerns\\Fallback' => $vendorDir . '/laravel/prompts/src/Concerns/Fallback.php', - 'Laravel\\Prompts\\Concerns\\Interactivity' => $vendorDir . '/laravel/prompts/src/Concerns/Interactivity.php', - 'Laravel\\Prompts\\Concerns\\Scrolling' => $vendorDir . '/laravel/prompts/src/Concerns/Scrolling.php', - 'Laravel\\Prompts\\Concerns\\Termwind' => $vendorDir . '/laravel/prompts/src/Concerns/Termwind.php', - 'Laravel\\Prompts\\Concerns\\Themes' => $vendorDir . '/laravel/prompts/src/Concerns/Themes.php', - 'Laravel\\Prompts\\Concerns\\Truncation' => $vendorDir . '/laravel/prompts/src/Concerns/Truncation.php', - 'Laravel\\Prompts\\Concerns\\TypedValue' => $vendorDir . '/laravel/prompts/src/Concerns/TypedValue.php', - 'Laravel\\Prompts\\ConfirmPrompt' => $vendorDir . '/laravel/prompts/src/ConfirmPrompt.php', - 'Laravel\\Prompts\\Exceptions\\FormRevertedException' => $vendorDir . '/laravel/prompts/src/Exceptions/FormRevertedException.php', - 'Laravel\\Prompts\\Exceptions\\NonInteractiveValidationException' => $vendorDir . '/laravel/prompts/src/Exceptions/NonInteractiveValidationException.php', - 'Laravel\\Prompts\\FormBuilder' => $vendorDir . '/laravel/prompts/src/FormBuilder.php', - 'Laravel\\Prompts\\FormStep' => $vendorDir . '/laravel/prompts/src/FormStep.php', - 'Laravel\\Prompts\\Key' => $vendorDir . '/laravel/prompts/src/Key.php', - 'Laravel\\Prompts\\MultiSearchPrompt' => $vendorDir . '/laravel/prompts/src/MultiSearchPrompt.php', - 'Laravel\\Prompts\\MultiSelectPrompt' => $vendorDir . '/laravel/prompts/src/MultiSelectPrompt.php', - 'Laravel\\Prompts\\Note' => $vendorDir . '/laravel/prompts/src/Note.php', - 'Laravel\\Prompts\\Output\\BufferedConsoleOutput' => $vendorDir . '/laravel/prompts/src/Output/BufferedConsoleOutput.php', - 'Laravel\\Prompts\\Output\\ConsoleOutput' => $vendorDir . '/laravel/prompts/src/Output/ConsoleOutput.php', - 'Laravel\\Prompts\\PasswordPrompt' => $vendorDir . '/laravel/prompts/src/PasswordPrompt.php', - 'Laravel\\Prompts\\PausePrompt' => $vendorDir . '/laravel/prompts/src/PausePrompt.php', - 'Laravel\\Prompts\\Progress' => $vendorDir . '/laravel/prompts/src/Progress.php', - 'Laravel\\Prompts\\Prompt' => $vendorDir . '/laravel/prompts/src/Prompt.php', - 'Laravel\\Prompts\\SearchPrompt' => $vendorDir . '/laravel/prompts/src/SearchPrompt.php', - 'Laravel\\Prompts\\SelectPrompt' => $vendorDir . '/laravel/prompts/src/SelectPrompt.php', - 'Laravel\\Prompts\\Spinner' => $vendorDir . '/laravel/prompts/src/Spinner.php', - 'Laravel\\Prompts\\SuggestPrompt' => $vendorDir . '/laravel/prompts/src/SuggestPrompt.php', - 'Laravel\\Prompts\\Table' => $vendorDir . '/laravel/prompts/src/Table.php', - 'Laravel\\Prompts\\Terminal' => $vendorDir . '/laravel/prompts/src/Terminal.php', - 'Laravel\\Prompts\\TextPrompt' => $vendorDir . '/laravel/prompts/src/TextPrompt.php', - 'Laravel\\Prompts\\TextareaPrompt' => $vendorDir . '/laravel/prompts/src/TextareaPrompt.php', - 'Laravel\\Prompts\\Themes\\Contracts\\Scrolling' => $vendorDir . '/laravel/prompts/src/Themes/Contracts/Scrolling.php', - 'Laravel\\Prompts\\Themes\\Default\\Concerns\\DrawsBoxes' => $vendorDir . '/laravel/prompts/src/Themes/Default/Concerns/DrawsBoxes.php', - 'Laravel\\Prompts\\Themes\\Default\\Concerns\\DrawsScrollbars' => $vendorDir . '/laravel/prompts/src/Themes/Default/Concerns/DrawsScrollbars.php', - 'Laravel\\Prompts\\Themes\\Default\\Concerns\\InteractsWithStrings' => $vendorDir . '/laravel/prompts/src/Themes/Default/Concerns/InteractsWithStrings.php', - 'Laravel\\Prompts\\Themes\\Default\\ConfirmPromptRenderer' => $vendorDir . '/laravel/prompts/src/Themes/Default/ConfirmPromptRenderer.php', - 'Laravel\\Prompts\\Themes\\Default\\MultiSearchPromptRenderer' => $vendorDir . '/laravel/prompts/src/Themes/Default/MultiSearchPromptRenderer.php', - 'Laravel\\Prompts\\Themes\\Default\\MultiSelectPromptRenderer' => $vendorDir . '/laravel/prompts/src/Themes/Default/MultiSelectPromptRenderer.php', - 'Laravel\\Prompts\\Themes\\Default\\NoteRenderer' => $vendorDir . '/laravel/prompts/src/Themes/Default/NoteRenderer.php', - 'Laravel\\Prompts\\Themes\\Default\\PasswordPromptRenderer' => $vendorDir . '/laravel/prompts/src/Themes/Default/PasswordPromptRenderer.php', - 'Laravel\\Prompts\\Themes\\Default\\PausePromptRenderer' => $vendorDir . '/laravel/prompts/src/Themes/Default/PausePromptRenderer.php', - 'Laravel\\Prompts\\Themes\\Default\\ProgressRenderer' => $vendorDir . '/laravel/prompts/src/Themes/Default/ProgressRenderer.php', - 'Laravel\\Prompts\\Themes\\Default\\Renderer' => $vendorDir . '/laravel/prompts/src/Themes/Default/Renderer.php', - 'Laravel\\Prompts\\Themes\\Default\\SearchPromptRenderer' => $vendorDir . '/laravel/prompts/src/Themes/Default/SearchPromptRenderer.php', - 'Laravel\\Prompts\\Themes\\Default\\SelectPromptRenderer' => $vendorDir . '/laravel/prompts/src/Themes/Default/SelectPromptRenderer.php', - 'Laravel\\Prompts\\Themes\\Default\\SpinnerRenderer' => $vendorDir . '/laravel/prompts/src/Themes/Default/SpinnerRenderer.php', - 'Laravel\\Prompts\\Themes\\Default\\SuggestPromptRenderer' => $vendorDir . '/laravel/prompts/src/Themes/Default/SuggestPromptRenderer.php', - 'Laravel\\Prompts\\Themes\\Default\\TableRenderer' => $vendorDir . '/laravel/prompts/src/Themes/Default/TableRenderer.php', - 'Laravel\\Prompts\\Themes\\Default\\TextPromptRenderer' => $vendorDir . '/laravel/prompts/src/Themes/Default/TextPromptRenderer.php', - 'Laravel\\Prompts\\Themes\\Default\\TextareaPromptRenderer' => $vendorDir . '/laravel/prompts/src/Themes/Default/TextareaPromptRenderer.php', - 'Laravel\\SerializableClosure\\Contracts\\Serializable' => $vendorDir . '/laravel/serializable-closure/src/Contracts/Serializable.php', - 'Laravel\\SerializableClosure\\Contracts\\Signer' => $vendorDir . '/laravel/serializable-closure/src/Contracts/Signer.php', - 'Laravel\\SerializableClosure\\Exceptions\\InvalidSignatureException' => $vendorDir . '/laravel/serializable-closure/src/Exceptions/InvalidSignatureException.php', - 'Laravel\\SerializableClosure\\Exceptions\\MissingSecretKeyException' => $vendorDir . '/laravel/serializable-closure/src/Exceptions/MissingSecretKeyException.php', - 'Laravel\\SerializableClosure\\Exceptions\\PhpVersionNotSupportedException' => $vendorDir . '/laravel/serializable-closure/src/Exceptions/PhpVersionNotSupportedException.php', - 'Laravel\\SerializableClosure\\SerializableClosure' => $vendorDir . '/laravel/serializable-closure/src/SerializableClosure.php', - 'Laravel\\SerializableClosure\\Serializers\\Native' => $vendorDir . '/laravel/serializable-closure/src/Serializers/Native.php', - 'Laravel\\SerializableClosure\\Serializers\\Signed' => $vendorDir . '/laravel/serializable-closure/src/Serializers/Signed.php', - 'Laravel\\SerializableClosure\\Signers\\Hmac' => $vendorDir . '/laravel/serializable-closure/src/Signers/Hmac.php', - 'Laravel\\SerializableClosure\\Support\\ClosureScope' => $vendorDir . '/laravel/serializable-closure/src/Support/ClosureScope.php', - 'Laravel\\SerializableClosure\\Support\\ClosureStream' => $vendorDir . '/laravel/serializable-closure/src/Support/ClosureStream.php', - 'Laravel\\SerializableClosure\\Support\\ReflectionClosure' => $vendorDir . '/laravel/serializable-closure/src/Support/ReflectionClosure.php', - 'Laravel\\SerializableClosure\\Support\\SelfReference' => $vendorDir . '/laravel/serializable-closure/src/Support/SelfReference.php', - 'Laravel\\SerializableClosure\\UnsignedSerializableClosure' => $vendorDir . '/laravel/serializable-closure/src/UnsignedSerializableClosure.php', - 'Laravel\\Tinker\\ClassAliasAutoloader' => $vendorDir . '/laravel/tinker/src/ClassAliasAutoloader.php', - 'Laravel\\Tinker\\Console\\TinkerCommand' => $vendorDir . '/laravel/tinker/src/Console/TinkerCommand.php', - 'Laravel\\Tinker\\TinkerCaster' => $vendorDir . '/laravel/tinker/src/TinkerCaster.php', - 'Laravel\\Tinker\\TinkerServiceProvider' => $vendorDir . '/laravel/tinker/src/TinkerServiceProvider.php', - 'Laravel\\Ui\\AuthCommand' => $vendorDir . '/laravel/ui/src/AuthCommand.php', - 'Laravel\\Ui\\AuthRouteMethods' => $vendorDir . '/laravel/ui/src/AuthRouteMethods.php', - 'Laravel\\Ui\\ControllersCommand' => $vendorDir . '/laravel/ui/src/ControllersCommand.php', - 'Laravel\\Ui\\Presets\\Bootstrap' => $vendorDir . '/laravel/ui/src/Presets/Bootstrap.php', - 'Laravel\\Ui\\Presets\\Preset' => $vendorDir . '/laravel/ui/src/Presets/Preset.php', - 'Laravel\\Ui\\Presets\\React' => $vendorDir . '/laravel/ui/src/Presets/React.php', - 'Laravel\\Ui\\Presets\\Vue' => $vendorDir . '/laravel/ui/src/Presets/Vue.php', - 'Laravel\\Ui\\UiCommand' => $vendorDir . '/laravel/ui/src/UiCommand.php', - 'Laravel\\Ui\\UiServiceProvider' => $vendorDir . '/laravel/ui/src/UiServiceProvider.php', - 'League\\CommonMark\\CommonMarkConverter' => $vendorDir . '/league/commonmark/src/CommonMarkConverter.php', - 'League\\CommonMark\\ConverterInterface' => $vendorDir . '/league/commonmark/src/ConverterInterface.php', - 'League\\CommonMark\\Delimiter\\Bracket' => $vendorDir . '/league/commonmark/src/Delimiter/Bracket.php', - 'League\\CommonMark\\Delimiter\\Delimiter' => $vendorDir . '/league/commonmark/src/Delimiter/Delimiter.php', - 'League\\CommonMark\\Delimiter\\DelimiterInterface' => $vendorDir . '/league/commonmark/src/Delimiter/DelimiterInterface.php', - 'League\\CommonMark\\Delimiter\\DelimiterParser' => $vendorDir . '/league/commonmark/src/Delimiter/DelimiterParser.php', - 'League\\CommonMark\\Delimiter\\DelimiterStack' => $vendorDir . '/league/commonmark/src/Delimiter/DelimiterStack.php', - 'League\\CommonMark\\Delimiter\\Processor\\CacheableDelimiterProcessorInterface' => $vendorDir . '/league/commonmark/src/Delimiter/Processor/CacheableDelimiterProcessorInterface.php', - 'League\\CommonMark\\Delimiter\\Processor\\DelimiterProcessorCollection' => $vendorDir . '/league/commonmark/src/Delimiter/Processor/DelimiterProcessorCollection.php', - 'League\\CommonMark\\Delimiter\\Processor\\DelimiterProcessorCollectionInterface' => $vendorDir . '/league/commonmark/src/Delimiter/Processor/DelimiterProcessorCollectionInterface.php', - 'League\\CommonMark\\Delimiter\\Processor\\DelimiterProcessorInterface' => $vendorDir . '/league/commonmark/src/Delimiter/Processor/DelimiterProcessorInterface.php', - 'League\\CommonMark\\Delimiter\\Processor\\StaggeredDelimiterProcessor' => $vendorDir . '/league/commonmark/src/Delimiter/Processor/StaggeredDelimiterProcessor.php', - 'League\\CommonMark\\Environment\\Environment' => $vendorDir . '/league/commonmark/src/Environment/Environment.php', - 'League\\CommonMark\\Environment\\EnvironmentAwareInterface' => $vendorDir . '/league/commonmark/src/Environment/EnvironmentAwareInterface.php', - 'League\\CommonMark\\Environment\\EnvironmentBuilderInterface' => $vendorDir . '/league/commonmark/src/Environment/EnvironmentBuilderInterface.php', - 'League\\CommonMark\\Environment\\EnvironmentInterface' => $vendorDir . '/league/commonmark/src/Environment/EnvironmentInterface.php', - 'League\\CommonMark\\Event\\AbstractEvent' => $vendorDir . '/league/commonmark/src/Event/AbstractEvent.php', - 'League\\CommonMark\\Event\\DocumentParsedEvent' => $vendorDir . '/league/commonmark/src/Event/DocumentParsedEvent.php', - 'League\\CommonMark\\Event\\DocumentPreParsedEvent' => $vendorDir . '/league/commonmark/src/Event/DocumentPreParsedEvent.php', - 'League\\CommonMark\\Event\\DocumentPreRenderEvent' => $vendorDir . '/league/commonmark/src/Event/DocumentPreRenderEvent.php', - 'League\\CommonMark\\Event\\DocumentRenderedEvent' => $vendorDir . '/league/commonmark/src/Event/DocumentRenderedEvent.php', - 'League\\CommonMark\\Event\\ListenerData' => $vendorDir . '/league/commonmark/src/Event/ListenerData.php', - 'League\\CommonMark\\Exception\\AlreadyInitializedException' => $vendorDir . '/league/commonmark/src/Exception/AlreadyInitializedException.php', - 'League\\CommonMark\\Exception\\CommonMarkException' => $vendorDir . '/league/commonmark/src/Exception/CommonMarkException.php', - 'League\\CommonMark\\Exception\\IOException' => $vendorDir . '/league/commonmark/src/Exception/IOException.php', - 'League\\CommonMark\\Exception\\InvalidArgumentException' => $vendorDir . '/league/commonmark/src/Exception/InvalidArgumentException.php', - 'League\\CommonMark\\Exception\\LogicException' => $vendorDir . '/league/commonmark/src/Exception/LogicException.php', - 'League\\CommonMark\\Exception\\MissingDependencyException' => $vendorDir . '/league/commonmark/src/Exception/MissingDependencyException.php', - 'League\\CommonMark\\Exception\\UnexpectedEncodingException' => $vendorDir . '/league/commonmark/src/Exception/UnexpectedEncodingException.php', - 'League\\CommonMark\\Extension\\Attributes\\AttributesExtension' => $vendorDir . '/league/commonmark/src/Extension/Attributes/AttributesExtension.php', - 'League\\CommonMark\\Extension\\Attributes\\Event\\AttributesListener' => $vendorDir . '/league/commonmark/src/Extension/Attributes/Event/AttributesListener.php', - 'League\\CommonMark\\Extension\\Attributes\\Node\\Attributes' => $vendorDir . '/league/commonmark/src/Extension/Attributes/Node/Attributes.php', - 'League\\CommonMark\\Extension\\Attributes\\Node\\AttributesInline' => $vendorDir . '/league/commonmark/src/Extension/Attributes/Node/AttributesInline.php', - 'League\\CommonMark\\Extension\\Attributes\\Parser\\AttributesBlockContinueParser' => $vendorDir . '/league/commonmark/src/Extension/Attributes/Parser/AttributesBlockContinueParser.php', - 'League\\CommonMark\\Extension\\Attributes\\Parser\\AttributesBlockStartParser' => $vendorDir . '/league/commonmark/src/Extension/Attributes/Parser/AttributesBlockStartParser.php', - 'League\\CommonMark\\Extension\\Attributes\\Parser\\AttributesInlineParser' => $vendorDir . '/league/commonmark/src/Extension/Attributes/Parser/AttributesInlineParser.php', - 'League\\CommonMark\\Extension\\Attributes\\Util\\AttributesHelper' => $vendorDir . '/league/commonmark/src/Extension/Attributes/Util/AttributesHelper.php', - 'League\\CommonMark\\Extension\\Autolink\\AutolinkExtension' => $vendorDir . '/league/commonmark/src/Extension/Autolink/AutolinkExtension.php', - 'League\\CommonMark\\Extension\\Autolink\\EmailAutolinkParser' => $vendorDir . '/league/commonmark/src/Extension/Autolink/EmailAutolinkParser.php', - 'League\\CommonMark\\Extension\\Autolink\\UrlAutolinkParser' => $vendorDir . '/league/commonmark/src/Extension/Autolink/UrlAutolinkParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\CommonMarkCoreExtension' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/CommonMarkCoreExtension.php', - 'League\\CommonMark\\Extension\\CommonMark\\Delimiter\\Processor\\EmphasisDelimiterProcessor' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Delimiter/Processor/EmphasisDelimiterProcessor.php', - 'League\\CommonMark\\Extension\\CommonMark\\Node\\Block\\BlockQuote' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Node/Block/BlockQuote.php', - 'League\\CommonMark\\Extension\\CommonMark\\Node\\Block\\FencedCode' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Node/Block/FencedCode.php', - 'League\\CommonMark\\Extension\\CommonMark\\Node\\Block\\Heading' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Node/Block/Heading.php', - 'League\\CommonMark\\Extension\\CommonMark\\Node\\Block\\HtmlBlock' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Node/Block/HtmlBlock.php', - 'League\\CommonMark\\Extension\\CommonMark\\Node\\Block\\IndentedCode' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Node/Block/IndentedCode.php', - 'League\\CommonMark\\Extension\\CommonMark\\Node\\Block\\ListBlock' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Node/Block/ListBlock.php', - 'League\\CommonMark\\Extension\\CommonMark\\Node\\Block\\ListData' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Node/Block/ListData.php', - 'League\\CommonMark\\Extension\\CommonMark\\Node\\Block\\ListItem' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Node/Block/ListItem.php', - 'League\\CommonMark\\Extension\\CommonMark\\Node\\Block\\ThematicBreak' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Node/Block/ThematicBreak.php', - 'League\\CommonMark\\Extension\\CommonMark\\Node\\Inline\\AbstractWebResource' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Node/Inline/AbstractWebResource.php', - 'League\\CommonMark\\Extension\\CommonMark\\Node\\Inline\\Code' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Node/Inline/Code.php', - 'League\\CommonMark\\Extension\\CommonMark\\Node\\Inline\\Emphasis' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Node/Inline/Emphasis.php', - 'League\\CommonMark\\Extension\\CommonMark\\Node\\Inline\\HtmlInline' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Node/Inline/HtmlInline.php', - 'League\\CommonMark\\Extension\\CommonMark\\Node\\Inline\\Image' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Node/Inline/Image.php', - 'League\\CommonMark\\Extension\\CommonMark\\Node\\Inline\\Link' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Node/Inline/Link.php', - 'League\\CommonMark\\Extension\\CommonMark\\Node\\Inline\\Strong' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Node/Inline/Strong.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Block\\BlockQuoteParser' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Parser/Block/BlockQuoteParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Block\\BlockQuoteStartParser' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Parser/Block/BlockQuoteStartParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Block\\FencedCodeParser' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Parser/Block/FencedCodeParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Block\\FencedCodeStartParser' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Parser/Block/FencedCodeStartParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Block\\HeadingParser' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Parser/Block/HeadingParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Block\\HeadingStartParser' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Parser/Block/HeadingStartParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Block\\HtmlBlockParser' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Parser/Block/HtmlBlockParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Block\\HtmlBlockStartParser' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Parser/Block/HtmlBlockStartParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Block\\IndentedCodeParser' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Parser/Block/IndentedCodeParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Block\\IndentedCodeStartParser' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Parser/Block/IndentedCodeStartParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Block\\ListBlockParser' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Parser/Block/ListBlockParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Block\\ListBlockStartParser' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Parser/Block/ListBlockStartParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Block\\ListItemParser' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Parser/Block/ListItemParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Block\\ThematicBreakParser' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Parser/Block/ThematicBreakParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Block\\ThematicBreakStartParser' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Parser/Block/ThematicBreakStartParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Inline\\AutolinkParser' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Parser/Inline/AutolinkParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Inline\\BacktickParser' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Parser/Inline/BacktickParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Inline\\BangParser' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Parser/Inline/BangParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Inline\\CloseBracketParser' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Parser/Inline/CloseBracketParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Inline\\EntityParser' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Parser/Inline/EntityParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Inline\\EscapableParser' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Parser/Inline/EscapableParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Inline\\HtmlInlineParser' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Parser/Inline/HtmlInlineParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Inline\\OpenBracketParser' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Parser/Inline/OpenBracketParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Renderer\\Block\\BlockQuoteRenderer' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Renderer/Block/BlockQuoteRenderer.php', - 'League\\CommonMark\\Extension\\CommonMark\\Renderer\\Block\\FencedCodeRenderer' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Renderer/Block/FencedCodeRenderer.php', - 'League\\CommonMark\\Extension\\CommonMark\\Renderer\\Block\\HeadingRenderer' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Renderer/Block/HeadingRenderer.php', - 'League\\CommonMark\\Extension\\CommonMark\\Renderer\\Block\\HtmlBlockRenderer' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Renderer/Block/HtmlBlockRenderer.php', - 'League\\CommonMark\\Extension\\CommonMark\\Renderer\\Block\\IndentedCodeRenderer' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Renderer/Block/IndentedCodeRenderer.php', - 'League\\CommonMark\\Extension\\CommonMark\\Renderer\\Block\\ListBlockRenderer' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Renderer/Block/ListBlockRenderer.php', - 'League\\CommonMark\\Extension\\CommonMark\\Renderer\\Block\\ListItemRenderer' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Renderer/Block/ListItemRenderer.php', - 'League\\CommonMark\\Extension\\CommonMark\\Renderer\\Block\\ThematicBreakRenderer' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Renderer/Block/ThematicBreakRenderer.php', - 'League\\CommonMark\\Extension\\CommonMark\\Renderer\\Inline\\CodeRenderer' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Renderer/Inline/CodeRenderer.php', - 'League\\CommonMark\\Extension\\CommonMark\\Renderer\\Inline\\EmphasisRenderer' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Renderer/Inline/EmphasisRenderer.php', - 'League\\CommonMark\\Extension\\CommonMark\\Renderer\\Inline\\HtmlInlineRenderer' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Renderer/Inline/HtmlInlineRenderer.php', - 'League\\CommonMark\\Extension\\CommonMark\\Renderer\\Inline\\ImageRenderer' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Renderer/Inline/ImageRenderer.php', - 'League\\CommonMark\\Extension\\CommonMark\\Renderer\\Inline\\LinkRenderer' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Renderer/Inline/LinkRenderer.php', - 'League\\CommonMark\\Extension\\CommonMark\\Renderer\\Inline\\StrongRenderer' => $vendorDir . '/league/commonmark/src/Extension/CommonMark/Renderer/Inline/StrongRenderer.php', - 'League\\CommonMark\\Extension\\ConfigurableExtensionInterface' => $vendorDir . '/league/commonmark/src/Extension/ConfigurableExtensionInterface.php', - 'League\\CommonMark\\Extension\\DefaultAttributes\\ApplyDefaultAttributesProcessor' => $vendorDir . '/league/commonmark/src/Extension/DefaultAttributes/ApplyDefaultAttributesProcessor.php', - 'League\\CommonMark\\Extension\\DefaultAttributes\\DefaultAttributesExtension' => $vendorDir . '/league/commonmark/src/Extension/DefaultAttributes/DefaultAttributesExtension.php', - 'League\\CommonMark\\Extension\\DescriptionList\\DescriptionListExtension' => $vendorDir . '/league/commonmark/src/Extension/DescriptionList/DescriptionListExtension.php', - 'League\\CommonMark\\Extension\\DescriptionList\\Event\\ConsecutiveDescriptionListMerger' => $vendorDir . '/league/commonmark/src/Extension/DescriptionList/Event/ConsecutiveDescriptionListMerger.php', - 'League\\CommonMark\\Extension\\DescriptionList\\Event\\LooseDescriptionHandler' => $vendorDir . '/league/commonmark/src/Extension/DescriptionList/Event/LooseDescriptionHandler.php', - 'League\\CommonMark\\Extension\\DescriptionList\\Node\\Description' => $vendorDir . '/league/commonmark/src/Extension/DescriptionList/Node/Description.php', - 'League\\CommonMark\\Extension\\DescriptionList\\Node\\DescriptionList' => $vendorDir . '/league/commonmark/src/Extension/DescriptionList/Node/DescriptionList.php', - 'League\\CommonMark\\Extension\\DescriptionList\\Node\\DescriptionTerm' => $vendorDir . '/league/commonmark/src/Extension/DescriptionList/Node/DescriptionTerm.php', - 'League\\CommonMark\\Extension\\DescriptionList\\Parser\\DescriptionContinueParser' => $vendorDir . '/league/commonmark/src/Extension/DescriptionList/Parser/DescriptionContinueParser.php', - 'League\\CommonMark\\Extension\\DescriptionList\\Parser\\DescriptionListContinueParser' => $vendorDir . '/league/commonmark/src/Extension/DescriptionList/Parser/DescriptionListContinueParser.php', - 'League\\CommonMark\\Extension\\DescriptionList\\Parser\\DescriptionStartParser' => $vendorDir . '/league/commonmark/src/Extension/DescriptionList/Parser/DescriptionStartParser.php', - 'League\\CommonMark\\Extension\\DescriptionList\\Parser\\DescriptionTermContinueParser' => $vendorDir . '/league/commonmark/src/Extension/DescriptionList/Parser/DescriptionTermContinueParser.php', - 'League\\CommonMark\\Extension\\DescriptionList\\Renderer\\DescriptionListRenderer' => $vendorDir . '/league/commonmark/src/Extension/DescriptionList/Renderer/DescriptionListRenderer.php', - 'League\\CommonMark\\Extension\\DescriptionList\\Renderer\\DescriptionRenderer' => $vendorDir . '/league/commonmark/src/Extension/DescriptionList/Renderer/DescriptionRenderer.php', - 'League\\CommonMark\\Extension\\DescriptionList\\Renderer\\DescriptionTermRenderer' => $vendorDir . '/league/commonmark/src/Extension/DescriptionList/Renderer/DescriptionTermRenderer.php', - 'League\\CommonMark\\Extension\\DisallowedRawHtml\\DisallowedRawHtmlExtension' => $vendorDir . '/league/commonmark/src/Extension/DisallowedRawHtml/DisallowedRawHtmlExtension.php', - 'League\\CommonMark\\Extension\\DisallowedRawHtml\\DisallowedRawHtmlRenderer' => $vendorDir . '/league/commonmark/src/Extension/DisallowedRawHtml/DisallowedRawHtmlRenderer.php', - 'League\\CommonMark\\Extension\\Embed\\Bridge\\OscaroteroEmbedAdapter' => $vendorDir . '/league/commonmark/src/Extension/Embed/Bridge/OscaroteroEmbedAdapter.php', - 'League\\CommonMark\\Extension\\Embed\\DomainFilteringAdapter' => $vendorDir . '/league/commonmark/src/Extension/Embed/DomainFilteringAdapter.php', - 'League\\CommonMark\\Extension\\Embed\\Embed' => $vendorDir . '/league/commonmark/src/Extension/Embed/Embed.php', - 'League\\CommonMark\\Extension\\Embed\\EmbedAdapterInterface' => $vendorDir . '/league/commonmark/src/Extension/Embed/EmbedAdapterInterface.php', - 'League\\CommonMark\\Extension\\Embed\\EmbedExtension' => $vendorDir . '/league/commonmark/src/Extension/Embed/EmbedExtension.php', - 'League\\CommonMark\\Extension\\Embed\\EmbedParser' => $vendorDir . '/league/commonmark/src/Extension/Embed/EmbedParser.php', - 'League\\CommonMark\\Extension\\Embed\\EmbedProcessor' => $vendorDir . '/league/commonmark/src/Extension/Embed/EmbedProcessor.php', - 'League\\CommonMark\\Extension\\Embed\\EmbedRenderer' => $vendorDir . '/league/commonmark/src/Extension/Embed/EmbedRenderer.php', - 'League\\CommonMark\\Extension\\Embed\\EmbedStartParser' => $vendorDir . '/league/commonmark/src/Extension/Embed/EmbedStartParser.php', - 'League\\CommonMark\\Extension\\ExtensionInterface' => $vendorDir . '/league/commonmark/src/Extension/ExtensionInterface.php', - 'League\\CommonMark\\Extension\\ExternalLink\\ExternalLinkExtension' => $vendorDir . '/league/commonmark/src/Extension/ExternalLink/ExternalLinkExtension.php', - 'League\\CommonMark\\Extension\\ExternalLink\\ExternalLinkProcessor' => $vendorDir . '/league/commonmark/src/Extension/ExternalLink/ExternalLinkProcessor.php', - 'League\\CommonMark\\Extension\\Footnote\\Event\\AnonymousFootnotesListener' => $vendorDir . '/league/commonmark/src/Extension/Footnote/Event/AnonymousFootnotesListener.php', - 'League\\CommonMark\\Extension\\Footnote\\Event\\FixOrphanedFootnotesAndRefsListener' => $vendorDir . '/league/commonmark/src/Extension/Footnote/Event/FixOrphanedFootnotesAndRefsListener.php', - 'League\\CommonMark\\Extension\\Footnote\\Event\\GatherFootnotesListener' => $vendorDir . '/league/commonmark/src/Extension/Footnote/Event/GatherFootnotesListener.php', - 'League\\CommonMark\\Extension\\Footnote\\Event\\NumberFootnotesListener' => $vendorDir . '/league/commonmark/src/Extension/Footnote/Event/NumberFootnotesListener.php', - 'League\\CommonMark\\Extension\\Footnote\\FootnoteExtension' => $vendorDir . '/league/commonmark/src/Extension/Footnote/FootnoteExtension.php', - 'League\\CommonMark\\Extension\\Footnote\\Node\\Footnote' => $vendorDir . '/league/commonmark/src/Extension/Footnote/Node/Footnote.php', - 'League\\CommonMark\\Extension\\Footnote\\Node\\FootnoteBackref' => $vendorDir . '/league/commonmark/src/Extension/Footnote/Node/FootnoteBackref.php', - 'League\\CommonMark\\Extension\\Footnote\\Node\\FootnoteContainer' => $vendorDir . '/league/commonmark/src/Extension/Footnote/Node/FootnoteContainer.php', - 'League\\CommonMark\\Extension\\Footnote\\Node\\FootnoteRef' => $vendorDir . '/league/commonmark/src/Extension/Footnote/Node/FootnoteRef.php', - 'League\\CommonMark\\Extension\\Footnote\\Parser\\AnonymousFootnoteRefParser' => $vendorDir . '/league/commonmark/src/Extension/Footnote/Parser/AnonymousFootnoteRefParser.php', - 'League\\CommonMark\\Extension\\Footnote\\Parser\\FootnoteParser' => $vendorDir . '/league/commonmark/src/Extension/Footnote/Parser/FootnoteParser.php', - 'League\\CommonMark\\Extension\\Footnote\\Parser\\FootnoteRefParser' => $vendorDir . '/league/commonmark/src/Extension/Footnote/Parser/FootnoteRefParser.php', - 'League\\CommonMark\\Extension\\Footnote\\Parser\\FootnoteStartParser' => $vendorDir . '/league/commonmark/src/Extension/Footnote/Parser/FootnoteStartParser.php', - 'League\\CommonMark\\Extension\\Footnote\\Renderer\\FootnoteBackrefRenderer' => $vendorDir . '/league/commonmark/src/Extension/Footnote/Renderer/FootnoteBackrefRenderer.php', - 'League\\CommonMark\\Extension\\Footnote\\Renderer\\FootnoteContainerRenderer' => $vendorDir . '/league/commonmark/src/Extension/Footnote/Renderer/FootnoteContainerRenderer.php', - 'League\\CommonMark\\Extension\\Footnote\\Renderer\\FootnoteRefRenderer' => $vendorDir . '/league/commonmark/src/Extension/Footnote/Renderer/FootnoteRefRenderer.php', - 'League\\CommonMark\\Extension\\Footnote\\Renderer\\FootnoteRenderer' => $vendorDir . '/league/commonmark/src/Extension/Footnote/Renderer/FootnoteRenderer.php', - 'League\\CommonMark\\Extension\\FrontMatter\\Data\\FrontMatterDataParserInterface' => $vendorDir . '/league/commonmark/src/Extension/FrontMatter/Data/FrontMatterDataParserInterface.php', - 'League\\CommonMark\\Extension\\FrontMatter\\Data\\LibYamlFrontMatterParser' => $vendorDir . '/league/commonmark/src/Extension/FrontMatter/Data/LibYamlFrontMatterParser.php', - 'League\\CommonMark\\Extension\\FrontMatter\\Data\\SymfonyYamlFrontMatterParser' => $vendorDir . '/league/commonmark/src/Extension/FrontMatter/Data/SymfonyYamlFrontMatterParser.php', - 'League\\CommonMark\\Extension\\FrontMatter\\Exception\\InvalidFrontMatterException' => $vendorDir . '/league/commonmark/src/Extension/FrontMatter/Exception/InvalidFrontMatterException.php', - 'League\\CommonMark\\Extension\\FrontMatter\\FrontMatterExtension' => $vendorDir . '/league/commonmark/src/Extension/FrontMatter/FrontMatterExtension.php', - 'League\\CommonMark\\Extension\\FrontMatter\\FrontMatterParser' => $vendorDir . '/league/commonmark/src/Extension/FrontMatter/FrontMatterParser.php', - 'League\\CommonMark\\Extension\\FrontMatter\\FrontMatterParserInterface' => $vendorDir . '/league/commonmark/src/Extension/FrontMatter/FrontMatterParserInterface.php', - 'League\\CommonMark\\Extension\\FrontMatter\\FrontMatterProviderInterface' => $vendorDir . '/league/commonmark/src/Extension/FrontMatter/FrontMatterProviderInterface.php', - 'League\\CommonMark\\Extension\\FrontMatter\\Input\\MarkdownInputWithFrontMatter' => $vendorDir . '/league/commonmark/src/Extension/FrontMatter/Input/MarkdownInputWithFrontMatter.php', - 'League\\CommonMark\\Extension\\FrontMatter\\Listener\\FrontMatterPostRenderListener' => $vendorDir . '/league/commonmark/src/Extension/FrontMatter/Listener/FrontMatterPostRenderListener.php', - 'League\\CommonMark\\Extension\\FrontMatter\\Listener\\FrontMatterPreParser' => $vendorDir . '/league/commonmark/src/Extension/FrontMatter/Listener/FrontMatterPreParser.php', - 'League\\CommonMark\\Extension\\FrontMatter\\Output\\RenderedContentWithFrontMatter' => $vendorDir . '/league/commonmark/src/Extension/FrontMatter/Output/RenderedContentWithFrontMatter.php', - 'League\\CommonMark\\Extension\\GithubFlavoredMarkdownExtension' => $vendorDir . '/league/commonmark/src/Extension/GithubFlavoredMarkdownExtension.php', - 'League\\CommonMark\\Extension\\HeadingPermalink\\HeadingPermalink' => $vendorDir . '/league/commonmark/src/Extension/HeadingPermalink/HeadingPermalink.php', - 'League\\CommonMark\\Extension\\HeadingPermalink\\HeadingPermalinkExtension' => $vendorDir . '/league/commonmark/src/Extension/HeadingPermalink/HeadingPermalinkExtension.php', - 'League\\CommonMark\\Extension\\HeadingPermalink\\HeadingPermalinkProcessor' => $vendorDir . '/league/commonmark/src/Extension/HeadingPermalink/HeadingPermalinkProcessor.php', - 'League\\CommonMark\\Extension\\HeadingPermalink\\HeadingPermalinkRenderer' => $vendorDir . '/league/commonmark/src/Extension/HeadingPermalink/HeadingPermalinkRenderer.php', - 'League\\CommonMark\\Extension\\InlinesOnly\\ChildRenderer' => $vendorDir . '/league/commonmark/src/Extension/InlinesOnly/ChildRenderer.php', - 'League\\CommonMark\\Extension\\InlinesOnly\\InlinesOnlyExtension' => $vendorDir . '/league/commonmark/src/Extension/InlinesOnly/InlinesOnlyExtension.php', - 'League\\CommonMark\\Extension\\Mention\\Generator\\CallbackGenerator' => $vendorDir . '/league/commonmark/src/Extension/Mention/Generator/CallbackGenerator.php', - 'League\\CommonMark\\Extension\\Mention\\Generator\\MentionGeneratorInterface' => $vendorDir . '/league/commonmark/src/Extension/Mention/Generator/MentionGeneratorInterface.php', - 'League\\CommonMark\\Extension\\Mention\\Generator\\StringTemplateLinkGenerator' => $vendorDir . '/league/commonmark/src/Extension/Mention/Generator/StringTemplateLinkGenerator.php', - 'League\\CommonMark\\Extension\\Mention\\Mention' => $vendorDir . '/league/commonmark/src/Extension/Mention/Mention.php', - 'League\\CommonMark\\Extension\\Mention\\MentionExtension' => $vendorDir . '/league/commonmark/src/Extension/Mention/MentionExtension.php', - 'League\\CommonMark\\Extension\\Mention\\MentionParser' => $vendorDir . '/league/commonmark/src/Extension/Mention/MentionParser.php', - 'League\\CommonMark\\Extension\\SmartPunct\\DashParser' => $vendorDir . '/league/commonmark/src/Extension/SmartPunct/DashParser.php', - 'League\\CommonMark\\Extension\\SmartPunct\\EllipsesParser' => $vendorDir . '/league/commonmark/src/Extension/SmartPunct/EllipsesParser.php', - 'League\\CommonMark\\Extension\\SmartPunct\\Quote' => $vendorDir . '/league/commonmark/src/Extension/SmartPunct/Quote.php', - 'League\\CommonMark\\Extension\\SmartPunct\\QuoteParser' => $vendorDir . '/league/commonmark/src/Extension/SmartPunct/QuoteParser.php', - 'League\\CommonMark\\Extension\\SmartPunct\\QuoteProcessor' => $vendorDir . '/league/commonmark/src/Extension/SmartPunct/QuoteProcessor.php', - 'League\\CommonMark\\Extension\\SmartPunct\\ReplaceUnpairedQuotesListener' => $vendorDir . '/league/commonmark/src/Extension/SmartPunct/ReplaceUnpairedQuotesListener.php', - 'League\\CommonMark\\Extension\\SmartPunct\\SmartPunctExtension' => $vendorDir . '/league/commonmark/src/Extension/SmartPunct/SmartPunctExtension.php', - 'League\\CommonMark\\Extension\\Strikethrough\\Strikethrough' => $vendorDir . '/league/commonmark/src/Extension/Strikethrough/Strikethrough.php', - 'League\\CommonMark\\Extension\\Strikethrough\\StrikethroughDelimiterProcessor' => $vendorDir . '/league/commonmark/src/Extension/Strikethrough/StrikethroughDelimiterProcessor.php', - 'League\\CommonMark\\Extension\\Strikethrough\\StrikethroughExtension' => $vendorDir . '/league/commonmark/src/Extension/Strikethrough/StrikethroughExtension.php', - 'League\\CommonMark\\Extension\\Strikethrough\\StrikethroughRenderer' => $vendorDir . '/league/commonmark/src/Extension/Strikethrough/StrikethroughRenderer.php', - 'League\\CommonMark\\Extension\\TableOfContents\\Node\\TableOfContents' => $vendorDir . '/league/commonmark/src/Extension/TableOfContents/Node/TableOfContents.php', - 'League\\CommonMark\\Extension\\TableOfContents\\Node\\TableOfContentsPlaceholder' => $vendorDir . '/league/commonmark/src/Extension/TableOfContents/Node/TableOfContentsPlaceholder.php', - 'League\\CommonMark\\Extension\\TableOfContents\\Normalizer\\AsIsNormalizerStrategy' => $vendorDir . '/league/commonmark/src/Extension/TableOfContents/Normalizer/AsIsNormalizerStrategy.php', - 'League\\CommonMark\\Extension\\TableOfContents\\Normalizer\\FlatNormalizerStrategy' => $vendorDir . '/league/commonmark/src/Extension/TableOfContents/Normalizer/FlatNormalizerStrategy.php', - 'League\\CommonMark\\Extension\\TableOfContents\\Normalizer\\NormalizerStrategyInterface' => $vendorDir . '/league/commonmark/src/Extension/TableOfContents/Normalizer/NormalizerStrategyInterface.php', - 'League\\CommonMark\\Extension\\TableOfContents\\Normalizer\\RelativeNormalizerStrategy' => $vendorDir . '/league/commonmark/src/Extension/TableOfContents/Normalizer/RelativeNormalizerStrategy.php', - 'League\\CommonMark\\Extension\\TableOfContents\\TableOfContentsBuilder' => $vendorDir . '/league/commonmark/src/Extension/TableOfContents/TableOfContentsBuilder.php', - 'League\\CommonMark\\Extension\\TableOfContents\\TableOfContentsExtension' => $vendorDir . '/league/commonmark/src/Extension/TableOfContents/TableOfContentsExtension.php', - 'League\\CommonMark\\Extension\\TableOfContents\\TableOfContentsGenerator' => $vendorDir . '/league/commonmark/src/Extension/TableOfContents/TableOfContentsGenerator.php', - 'League\\CommonMark\\Extension\\TableOfContents\\TableOfContentsGeneratorInterface' => $vendorDir . '/league/commonmark/src/Extension/TableOfContents/TableOfContentsGeneratorInterface.php', - 'League\\CommonMark\\Extension\\TableOfContents\\TableOfContentsPlaceholderParser' => $vendorDir . '/league/commonmark/src/Extension/TableOfContents/TableOfContentsPlaceholderParser.php', - 'League\\CommonMark\\Extension\\TableOfContents\\TableOfContentsPlaceholderRenderer' => $vendorDir . '/league/commonmark/src/Extension/TableOfContents/TableOfContentsPlaceholderRenderer.php', - 'League\\CommonMark\\Extension\\TableOfContents\\TableOfContentsRenderer' => $vendorDir . '/league/commonmark/src/Extension/TableOfContents/TableOfContentsRenderer.php', - 'League\\CommonMark\\Extension\\Table\\Table' => $vendorDir . '/league/commonmark/src/Extension/Table/Table.php', - 'League\\CommonMark\\Extension\\Table\\TableCell' => $vendorDir . '/league/commonmark/src/Extension/Table/TableCell.php', - 'League\\CommonMark\\Extension\\Table\\TableCellRenderer' => $vendorDir . '/league/commonmark/src/Extension/Table/TableCellRenderer.php', - 'League\\CommonMark\\Extension\\Table\\TableExtension' => $vendorDir . '/league/commonmark/src/Extension/Table/TableExtension.php', - 'League\\CommonMark\\Extension\\Table\\TableParser' => $vendorDir . '/league/commonmark/src/Extension/Table/TableParser.php', - 'League\\CommonMark\\Extension\\Table\\TableRenderer' => $vendorDir . '/league/commonmark/src/Extension/Table/TableRenderer.php', - 'League\\CommonMark\\Extension\\Table\\TableRow' => $vendorDir . '/league/commonmark/src/Extension/Table/TableRow.php', - 'League\\CommonMark\\Extension\\Table\\TableRowRenderer' => $vendorDir . '/league/commonmark/src/Extension/Table/TableRowRenderer.php', - 'League\\CommonMark\\Extension\\Table\\TableSection' => $vendorDir . '/league/commonmark/src/Extension/Table/TableSection.php', - 'League\\CommonMark\\Extension\\Table\\TableSectionRenderer' => $vendorDir . '/league/commonmark/src/Extension/Table/TableSectionRenderer.php', - 'League\\CommonMark\\Extension\\Table\\TableStartParser' => $vendorDir . '/league/commonmark/src/Extension/Table/TableStartParser.php', - 'League\\CommonMark\\Extension\\TaskList\\TaskListExtension' => $vendorDir . '/league/commonmark/src/Extension/TaskList/TaskListExtension.php', - 'League\\CommonMark\\Extension\\TaskList\\TaskListItemMarker' => $vendorDir . '/league/commonmark/src/Extension/TaskList/TaskListItemMarker.php', - 'League\\CommonMark\\Extension\\TaskList\\TaskListItemMarkerParser' => $vendorDir . '/league/commonmark/src/Extension/TaskList/TaskListItemMarkerParser.php', - 'League\\CommonMark\\Extension\\TaskList\\TaskListItemMarkerRenderer' => $vendorDir . '/league/commonmark/src/Extension/TaskList/TaskListItemMarkerRenderer.php', - 'League\\CommonMark\\GithubFlavoredMarkdownConverter' => $vendorDir . '/league/commonmark/src/GithubFlavoredMarkdownConverter.php', - 'League\\CommonMark\\Input\\MarkdownInput' => $vendorDir . '/league/commonmark/src/Input/MarkdownInput.php', - 'League\\CommonMark\\Input\\MarkdownInputInterface' => $vendorDir . '/league/commonmark/src/Input/MarkdownInputInterface.php', - 'League\\CommonMark\\MarkdownConverter' => $vendorDir . '/league/commonmark/src/MarkdownConverter.php', - 'League\\CommonMark\\MarkdownConverterInterface' => $vendorDir . '/league/commonmark/src/MarkdownConverterInterface.php', - 'League\\CommonMark\\Node\\Block\\AbstractBlock' => $vendorDir . '/league/commonmark/src/Node/Block/AbstractBlock.php', - 'League\\CommonMark\\Node\\Block\\Document' => $vendorDir . '/league/commonmark/src/Node/Block/Document.php', - 'League\\CommonMark\\Node\\Block\\Paragraph' => $vendorDir . '/league/commonmark/src/Node/Block/Paragraph.php', - 'League\\CommonMark\\Node\\Block\\TightBlockInterface' => $vendorDir . '/league/commonmark/src/Node/Block/TightBlockInterface.php', - 'League\\CommonMark\\Node\\Inline\\AbstractInline' => $vendorDir . '/league/commonmark/src/Node/Inline/AbstractInline.php', - 'League\\CommonMark\\Node\\Inline\\AbstractStringContainer' => $vendorDir . '/league/commonmark/src/Node/Inline/AbstractStringContainer.php', - 'League\\CommonMark\\Node\\Inline\\AdjacentTextMerger' => $vendorDir . '/league/commonmark/src/Node/Inline/AdjacentTextMerger.php', - 'League\\CommonMark\\Node\\Inline\\DelimitedInterface' => $vendorDir . '/league/commonmark/src/Node/Inline/DelimitedInterface.php', - 'League\\CommonMark\\Node\\Inline\\Newline' => $vendorDir . '/league/commonmark/src/Node/Inline/Newline.php', - 'League\\CommonMark\\Node\\Inline\\Text' => $vendorDir . '/league/commonmark/src/Node/Inline/Text.php', - 'League\\CommonMark\\Node\\Node' => $vendorDir . '/league/commonmark/src/Node/Node.php', - 'League\\CommonMark\\Node\\NodeIterator' => $vendorDir . '/league/commonmark/src/Node/NodeIterator.php', - 'League\\CommonMark\\Node\\NodeWalker' => $vendorDir . '/league/commonmark/src/Node/NodeWalker.php', - 'League\\CommonMark\\Node\\NodeWalkerEvent' => $vendorDir . '/league/commonmark/src/Node/NodeWalkerEvent.php', - 'League\\CommonMark\\Node\\Query' => $vendorDir . '/league/commonmark/src/Node/Query.php', - 'League\\CommonMark\\Node\\Query\\AndExpr' => $vendorDir . '/league/commonmark/src/Node/Query/AndExpr.php', - 'League\\CommonMark\\Node\\Query\\ExpressionInterface' => $vendorDir . '/league/commonmark/src/Node/Query/ExpressionInterface.php', - 'League\\CommonMark\\Node\\Query\\OrExpr' => $vendorDir . '/league/commonmark/src/Node/Query/OrExpr.php', - 'League\\CommonMark\\Node\\RawMarkupContainerInterface' => $vendorDir . '/league/commonmark/src/Node/RawMarkupContainerInterface.php', - 'League\\CommonMark\\Node\\StringContainerHelper' => $vendorDir . '/league/commonmark/src/Node/StringContainerHelper.php', - 'League\\CommonMark\\Node\\StringContainerInterface' => $vendorDir . '/league/commonmark/src/Node/StringContainerInterface.php', - 'League\\CommonMark\\Normalizer\\SlugNormalizer' => $vendorDir . '/league/commonmark/src/Normalizer/SlugNormalizer.php', - 'League\\CommonMark\\Normalizer\\TextNormalizer' => $vendorDir . '/league/commonmark/src/Normalizer/TextNormalizer.php', - 'League\\CommonMark\\Normalizer\\TextNormalizerInterface' => $vendorDir . '/league/commonmark/src/Normalizer/TextNormalizerInterface.php', - 'League\\CommonMark\\Normalizer\\UniqueSlugNormalizer' => $vendorDir . '/league/commonmark/src/Normalizer/UniqueSlugNormalizer.php', - 'League\\CommonMark\\Normalizer\\UniqueSlugNormalizerInterface' => $vendorDir . '/league/commonmark/src/Normalizer/UniqueSlugNormalizerInterface.php', - 'League\\CommonMark\\Output\\RenderedContent' => $vendorDir . '/league/commonmark/src/Output/RenderedContent.php', - 'League\\CommonMark\\Output\\RenderedContentInterface' => $vendorDir . '/league/commonmark/src/Output/RenderedContentInterface.php', - 'League\\CommonMark\\Parser\\Block\\AbstractBlockContinueParser' => $vendorDir . '/league/commonmark/src/Parser/Block/AbstractBlockContinueParser.php', - 'League\\CommonMark\\Parser\\Block\\BlockContinue' => $vendorDir . '/league/commonmark/src/Parser/Block/BlockContinue.php', - 'League\\CommonMark\\Parser\\Block\\BlockContinueParserInterface' => $vendorDir . '/league/commonmark/src/Parser/Block/BlockContinueParserInterface.php', - 'League\\CommonMark\\Parser\\Block\\BlockContinueParserWithInlinesInterface' => $vendorDir . '/league/commonmark/src/Parser/Block/BlockContinueParserWithInlinesInterface.php', - 'League\\CommonMark\\Parser\\Block\\BlockStart' => $vendorDir . '/league/commonmark/src/Parser/Block/BlockStart.php', - 'League\\CommonMark\\Parser\\Block\\BlockStartParserInterface' => $vendorDir . '/league/commonmark/src/Parser/Block/BlockStartParserInterface.php', - 'League\\CommonMark\\Parser\\Block\\DocumentBlockParser' => $vendorDir . '/league/commonmark/src/Parser/Block/DocumentBlockParser.php', - 'League\\CommonMark\\Parser\\Block\\ParagraphParser' => $vendorDir . '/league/commonmark/src/Parser/Block/ParagraphParser.php', - 'League\\CommonMark\\Parser\\Block\\SkipLinesStartingWithLettersParser' => $vendorDir . '/league/commonmark/src/Parser/Block/SkipLinesStartingWithLettersParser.php', - 'League\\CommonMark\\Parser\\Cursor' => $vendorDir . '/league/commonmark/src/Parser/Cursor.php', - 'League\\CommonMark\\Parser\\CursorState' => $vendorDir . '/league/commonmark/src/Parser/CursorState.php', - 'League\\CommonMark\\Parser\\InlineParserContext' => $vendorDir . '/league/commonmark/src/Parser/InlineParserContext.php', - 'League\\CommonMark\\Parser\\InlineParserEngine' => $vendorDir . '/league/commonmark/src/Parser/InlineParserEngine.php', - 'League\\CommonMark\\Parser\\InlineParserEngineInterface' => $vendorDir . '/league/commonmark/src/Parser/InlineParserEngineInterface.php', - 'League\\CommonMark\\Parser\\Inline\\InlineParserInterface' => $vendorDir . '/league/commonmark/src/Parser/Inline/InlineParserInterface.php', - 'League\\CommonMark\\Parser\\Inline\\InlineParserMatch' => $vendorDir . '/league/commonmark/src/Parser/Inline/InlineParserMatch.php', - 'League\\CommonMark\\Parser\\Inline\\NewlineParser' => $vendorDir . '/league/commonmark/src/Parser/Inline/NewlineParser.php', - 'League\\CommonMark\\Parser\\MarkdownParser' => $vendorDir . '/league/commonmark/src/Parser/MarkdownParser.php', - 'League\\CommonMark\\Parser\\MarkdownParserInterface' => $vendorDir . '/league/commonmark/src/Parser/MarkdownParserInterface.php', - 'League\\CommonMark\\Parser\\MarkdownParserState' => $vendorDir . '/league/commonmark/src/Parser/MarkdownParserState.php', - 'League\\CommonMark\\Parser\\MarkdownParserStateInterface' => $vendorDir . '/league/commonmark/src/Parser/MarkdownParserStateInterface.php', - 'League\\CommonMark\\Parser\\ParserLogicException' => $vendorDir . '/league/commonmark/src/Parser/ParserLogicException.php', - 'League\\CommonMark\\Reference\\MemoryLimitedReferenceMap' => $vendorDir . '/league/commonmark/src/Reference/MemoryLimitedReferenceMap.php', - 'League\\CommonMark\\Reference\\Reference' => $vendorDir . '/league/commonmark/src/Reference/Reference.php', - 'League\\CommonMark\\Reference\\ReferenceInterface' => $vendorDir . '/league/commonmark/src/Reference/ReferenceInterface.php', - 'League\\CommonMark\\Reference\\ReferenceMap' => $vendorDir . '/league/commonmark/src/Reference/ReferenceMap.php', - 'League\\CommonMark\\Reference\\ReferenceMapInterface' => $vendorDir . '/league/commonmark/src/Reference/ReferenceMapInterface.php', - 'League\\CommonMark\\Reference\\ReferenceParser' => $vendorDir . '/league/commonmark/src/Reference/ReferenceParser.php', - 'League\\CommonMark\\Reference\\ReferenceableInterface' => $vendorDir . '/league/commonmark/src/Reference/ReferenceableInterface.php', - 'League\\CommonMark\\Renderer\\Block\\DocumentRenderer' => $vendorDir . '/league/commonmark/src/Renderer/Block/DocumentRenderer.php', - 'League\\CommonMark\\Renderer\\Block\\ParagraphRenderer' => $vendorDir . '/league/commonmark/src/Renderer/Block/ParagraphRenderer.php', - 'League\\CommonMark\\Renderer\\ChildNodeRendererInterface' => $vendorDir . '/league/commonmark/src/Renderer/ChildNodeRendererInterface.php', - 'League\\CommonMark\\Renderer\\DocumentRendererInterface' => $vendorDir . '/league/commonmark/src/Renderer/DocumentRendererInterface.php', - 'League\\CommonMark\\Renderer\\HtmlDecorator' => $vendorDir . '/league/commonmark/src/Renderer/HtmlDecorator.php', - 'League\\CommonMark\\Renderer\\HtmlRenderer' => $vendorDir . '/league/commonmark/src/Renderer/HtmlRenderer.php', - 'League\\CommonMark\\Renderer\\Inline\\NewlineRenderer' => $vendorDir . '/league/commonmark/src/Renderer/Inline/NewlineRenderer.php', - 'League\\CommonMark\\Renderer\\Inline\\TextRenderer' => $vendorDir . '/league/commonmark/src/Renderer/Inline/TextRenderer.php', - 'League\\CommonMark\\Renderer\\MarkdownRendererInterface' => $vendorDir . '/league/commonmark/src/Renderer/MarkdownRendererInterface.php', - 'League\\CommonMark\\Renderer\\NoMatchingRendererException' => $vendorDir . '/league/commonmark/src/Renderer/NoMatchingRendererException.php', - 'League\\CommonMark\\Renderer\\NodeRendererInterface' => $vendorDir . '/league/commonmark/src/Renderer/NodeRendererInterface.php', - 'League\\CommonMark\\Util\\ArrayCollection' => $vendorDir . '/league/commonmark/src/Util/ArrayCollection.php', - 'League\\CommonMark\\Util\\Html5EntityDecoder' => $vendorDir . '/league/commonmark/src/Util/Html5EntityDecoder.php', - 'League\\CommonMark\\Util\\HtmlElement' => $vendorDir . '/league/commonmark/src/Util/HtmlElement.php', - 'League\\CommonMark\\Util\\HtmlFilter' => $vendorDir . '/league/commonmark/src/Util/HtmlFilter.php', - 'League\\CommonMark\\Util\\LinkParserHelper' => $vendorDir . '/league/commonmark/src/Util/LinkParserHelper.php', - 'League\\CommonMark\\Util\\PrioritizedList' => $vendorDir . '/league/commonmark/src/Util/PrioritizedList.php', - 'League\\CommonMark\\Util\\RegexHelper' => $vendorDir . '/league/commonmark/src/Util/RegexHelper.php', - 'League\\CommonMark\\Util\\SpecReader' => $vendorDir . '/league/commonmark/src/Util/SpecReader.php', - 'League\\CommonMark\\Util\\UrlEncoder' => $vendorDir . '/league/commonmark/src/Util/UrlEncoder.php', - 'League\\CommonMark\\Util\\Xml' => $vendorDir . '/league/commonmark/src/Util/Xml.php', - 'League\\CommonMark\\Xml\\FallbackNodeXmlRenderer' => $vendorDir . '/league/commonmark/src/Xml/FallbackNodeXmlRenderer.php', - 'League\\CommonMark\\Xml\\MarkdownToXmlConverter' => $vendorDir . '/league/commonmark/src/Xml/MarkdownToXmlConverter.php', - 'League\\CommonMark\\Xml\\XmlNodeRendererInterface' => $vendorDir . '/league/commonmark/src/Xml/XmlNodeRendererInterface.php', - 'League\\CommonMark\\Xml\\XmlRenderer' => $vendorDir . '/league/commonmark/src/Xml/XmlRenderer.php', - 'League\\Config\\Configuration' => $vendorDir . '/league/config/src/Configuration.php', - 'League\\Config\\ConfigurationAwareInterface' => $vendorDir . '/league/config/src/ConfigurationAwareInterface.php', - 'League\\Config\\ConfigurationBuilderInterface' => $vendorDir . '/league/config/src/ConfigurationBuilderInterface.php', - 'League\\Config\\ConfigurationInterface' => $vendorDir . '/league/config/src/ConfigurationInterface.php', - 'League\\Config\\ConfigurationProviderInterface' => $vendorDir . '/league/config/src/ConfigurationProviderInterface.php', - 'League\\Config\\Exception\\ConfigurationExceptionInterface' => $vendorDir . '/league/config/src/Exception/ConfigurationExceptionInterface.php', - 'League\\Config\\Exception\\InvalidConfigurationException' => $vendorDir . '/league/config/src/Exception/InvalidConfigurationException.php', - 'League\\Config\\Exception\\UnknownOptionException' => $vendorDir . '/league/config/src/Exception/UnknownOptionException.php', - 'League\\Config\\Exception\\ValidationException' => $vendorDir . '/league/config/src/Exception/ValidationException.php', - 'League\\Config\\MutableConfigurationInterface' => $vendorDir . '/league/config/src/MutableConfigurationInterface.php', - 'League\\Config\\ReadOnlyConfiguration' => $vendorDir . '/league/config/src/ReadOnlyConfiguration.php', - 'League\\Config\\SchemaBuilderInterface' => $vendorDir . '/league/config/src/SchemaBuilderInterface.php', - 'League\\Flysystem\\CalculateChecksumFromStream' => $vendorDir . '/league/flysystem/src/CalculateChecksumFromStream.php', - 'League\\Flysystem\\ChecksumAlgoIsNotSupported' => $vendorDir . '/league/flysystem/src/ChecksumAlgoIsNotSupported.php', - 'League\\Flysystem\\ChecksumProvider' => $vendorDir . '/league/flysystem/src/ChecksumProvider.php', - 'League\\Flysystem\\Config' => $vendorDir . '/league/flysystem/src/Config.php', - 'League\\Flysystem\\CorruptedPathDetected' => $vendorDir . '/league/flysystem/src/CorruptedPathDetected.php', - 'League\\Flysystem\\DecoratedAdapter' => $vendorDir . '/league/flysystem/src/DecoratedAdapter.php', - 'League\\Flysystem\\DirectoryAttributes' => $vendorDir . '/league/flysystem/src/DirectoryAttributes.php', - 'League\\Flysystem\\DirectoryListing' => $vendorDir . '/league/flysystem/src/DirectoryListing.php', - 'League\\Flysystem\\FileAttributes' => $vendorDir . '/league/flysystem/src/FileAttributes.php', - 'League\\Flysystem\\Filesystem' => $vendorDir . '/league/flysystem/src/Filesystem.php', - 'League\\Flysystem\\FilesystemAdapter' => $vendorDir . '/league/flysystem/src/FilesystemAdapter.php', - 'League\\Flysystem\\FilesystemException' => $vendorDir . '/league/flysystem/src/FilesystemException.php', - 'League\\Flysystem\\FilesystemOperationFailed' => $vendorDir . '/league/flysystem/src/FilesystemOperationFailed.php', - 'League\\Flysystem\\FilesystemOperator' => $vendorDir . '/league/flysystem/src/FilesystemOperator.php', - 'League\\Flysystem\\FilesystemReader' => $vendorDir . '/league/flysystem/src/FilesystemReader.php', - 'League\\Flysystem\\FilesystemWriter' => $vendorDir . '/league/flysystem/src/FilesystemWriter.php', - 'League\\Flysystem\\InvalidStreamProvided' => $vendorDir . '/league/flysystem/src/InvalidStreamProvided.php', - 'League\\Flysystem\\InvalidVisibilityProvided' => $vendorDir . '/league/flysystem/src/InvalidVisibilityProvided.php', - 'League\\Flysystem\\Local\\FallbackMimeTypeDetector' => $vendorDir . '/league/flysystem-local/FallbackMimeTypeDetector.php', - 'League\\Flysystem\\Local\\LocalFilesystemAdapter' => $vendorDir . '/league/flysystem-local/LocalFilesystemAdapter.php', - 'League\\Flysystem\\MountManager' => $vendorDir . '/league/flysystem/src/MountManager.php', - 'League\\Flysystem\\PathNormalizer' => $vendorDir . '/league/flysystem/src/PathNormalizer.php', - 'League\\Flysystem\\PathPrefixer' => $vendorDir . '/league/flysystem/src/PathPrefixer.php', - 'League\\Flysystem\\PathTraversalDetected' => $vendorDir . '/league/flysystem/src/PathTraversalDetected.php', - 'League\\Flysystem\\PortableVisibilityGuard' => $vendorDir . '/league/flysystem/src/PortableVisibilityGuard.php', - 'League\\Flysystem\\ProxyArrayAccessToProperties' => $vendorDir . '/league/flysystem/src/ProxyArrayAccessToProperties.php', - 'League\\Flysystem\\ResolveIdenticalPathConflict' => $vendorDir . '/league/flysystem/src/ResolveIdenticalPathConflict.php', - 'League\\Flysystem\\StorageAttributes' => $vendorDir . '/league/flysystem/src/StorageAttributes.php', - 'League\\Flysystem\\SymbolicLinkEncountered' => $vendorDir . '/league/flysystem/src/SymbolicLinkEncountered.php', - 'League\\Flysystem\\UnableToCheckDirectoryExistence' => $vendorDir . '/league/flysystem/src/UnableToCheckDirectoryExistence.php', - 'League\\Flysystem\\UnableToCheckExistence' => $vendorDir . '/league/flysystem/src/UnableToCheckExistence.php', - 'League\\Flysystem\\UnableToCheckFileExistence' => $vendorDir . '/league/flysystem/src/UnableToCheckFileExistence.php', - 'League\\Flysystem\\UnableToCopyFile' => $vendorDir . '/league/flysystem/src/UnableToCopyFile.php', - 'League\\Flysystem\\UnableToCreateDirectory' => $vendorDir . '/league/flysystem/src/UnableToCreateDirectory.php', - 'League\\Flysystem\\UnableToDeleteDirectory' => $vendorDir . '/league/flysystem/src/UnableToDeleteDirectory.php', - 'League\\Flysystem\\UnableToDeleteFile' => $vendorDir . '/league/flysystem/src/UnableToDeleteFile.php', - 'League\\Flysystem\\UnableToGeneratePublicUrl' => $vendorDir . '/league/flysystem/src/UnableToGeneratePublicUrl.php', - 'League\\Flysystem\\UnableToGenerateTemporaryUrl' => $vendorDir . '/league/flysystem/src/UnableToGenerateTemporaryUrl.php', - 'League\\Flysystem\\UnableToListContents' => $vendorDir . '/league/flysystem/src/UnableToListContents.php', - 'League\\Flysystem\\UnableToMountFilesystem' => $vendorDir . '/league/flysystem/src/UnableToMountFilesystem.php', - 'League\\Flysystem\\UnableToMoveFile' => $vendorDir . '/league/flysystem/src/UnableToMoveFile.php', - 'League\\Flysystem\\UnableToProvideChecksum' => $vendorDir . '/league/flysystem/src/UnableToProvideChecksum.php', - 'League\\Flysystem\\UnableToReadFile' => $vendorDir . '/league/flysystem/src/UnableToReadFile.php', - 'League\\Flysystem\\UnableToResolveFilesystemMount' => $vendorDir . '/league/flysystem/src/UnableToResolveFilesystemMount.php', - 'League\\Flysystem\\UnableToRetrieveMetadata' => $vendorDir . '/league/flysystem/src/UnableToRetrieveMetadata.php', - 'League\\Flysystem\\UnableToSetVisibility' => $vendorDir . '/league/flysystem/src/UnableToSetVisibility.php', - 'League\\Flysystem\\UnableToWriteFile' => $vendorDir . '/league/flysystem/src/UnableToWriteFile.php', - 'League\\Flysystem\\UnixVisibility\\PortableVisibilityConverter' => $vendorDir . '/league/flysystem/src/UnixVisibility/PortableVisibilityConverter.php', - 'League\\Flysystem\\UnixVisibility\\VisibilityConverter' => $vendorDir . '/league/flysystem/src/UnixVisibility/VisibilityConverter.php', - 'League\\Flysystem\\UnreadableFileEncountered' => $vendorDir . '/league/flysystem/src/UnreadableFileEncountered.php', - 'League\\Flysystem\\UrlGeneration\\ChainedPublicUrlGenerator' => $vendorDir . '/league/flysystem/src/UrlGeneration/ChainedPublicUrlGenerator.php', - 'League\\Flysystem\\UrlGeneration\\PrefixPublicUrlGenerator' => $vendorDir . '/league/flysystem/src/UrlGeneration/PrefixPublicUrlGenerator.php', - 'League\\Flysystem\\UrlGeneration\\PublicUrlGenerator' => $vendorDir . '/league/flysystem/src/UrlGeneration/PublicUrlGenerator.php', - 'League\\Flysystem\\UrlGeneration\\ShardedPrefixPublicUrlGenerator' => $vendorDir . '/league/flysystem/src/UrlGeneration/ShardedPrefixPublicUrlGenerator.php', - 'League\\Flysystem\\UrlGeneration\\TemporaryUrlGenerator' => $vendorDir . '/league/flysystem/src/UrlGeneration/TemporaryUrlGenerator.php', - 'League\\Flysystem\\Visibility' => $vendorDir . '/league/flysystem/src/Visibility.php', - 'League\\Flysystem\\WhitespacePathNormalizer' => $vendorDir . '/league/flysystem/src/WhitespacePathNormalizer.php', - 'League\\MimeTypeDetection\\EmptyExtensionToMimeTypeMap' => $vendorDir . '/league/mime-type-detection/src/EmptyExtensionToMimeTypeMap.php', - 'League\\MimeTypeDetection\\ExtensionLookup' => $vendorDir . '/league/mime-type-detection/src/ExtensionLookup.php', - 'League\\MimeTypeDetection\\ExtensionMimeTypeDetector' => $vendorDir . '/league/mime-type-detection/src/ExtensionMimeTypeDetector.php', - 'League\\MimeTypeDetection\\ExtensionToMimeTypeMap' => $vendorDir . '/league/mime-type-detection/src/ExtensionToMimeTypeMap.php', - 'League\\MimeTypeDetection\\FinfoMimeTypeDetector' => $vendorDir . '/league/mime-type-detection/src/FinfoMimeTypeDetector.php', - 'League\\MimeTypeDetection\\GeneratedExtensionToMimeTypeMap' => $vendorDir . '/league/mime-type-detection/src/GeneratedExtensionToMimeTypeMap.php', - 'League\\MimeTypeDetection\\MimeTypeDetector' => $vendorDir . '/league/mime-type-detection/src/MimeTypeDetector.php', - 'League\\MimeTypeDetection\\OverridingExtensionToMimeTypeMap' => $vendorDir . '/league/mime-type-detection/src/OverridingExtensionToMimeTypeMap.php', - 'Masterminds\\HTML5' => $vendorDir . '/masterminds/html5/src/HTML5.php', - 'Masterminds\\HTML5\\Elements' => $vendorDir . '/masterminds/html5/src/HTML5/Elements.php', - 'Masterminds\\HTML5\\Entities' => $vendorDir . '/masterminds/html5/src/HTML5/Entities.php', - 'Masterminds\\HTML5\\Exception' => $vendorDir . '/masterminds/html5/src/HTML5/Exception.php', - 'Masterminds\\HTML5\\InstructionProcessor' => $vendorDir . '/masterminds/html5/src/HTML5/InstructionProcessor.php', - 'Masterminds\\HTML5\\Parser\\CharacterReference' => $vendorDir . '/masterminds/html5/src/HTML5/Parser/CharacterReference.php', - 'Masterminds\\HTML5\\Parser\\DOMTreeBuilder' => $vendorDir . '/masterminds/html5/src/HTML5/Parser/DOMTreeBuilder.php', - 'Masterminds\\HTML5\\Parser\\EventHandler' => $vendorDir . '/masterminds/html5/src/HTML5/Parser/EventHandler.php', - 'Masterminds\\HTML5\\Parser\\FileInputStream' => $vendorDir . '/masterminds/html5/src/HTML5/Parser/FileInputStream.php', - 'Masterminds\\HTML5\\Parser\\InputStream' => $vendorDir . '/masterminds/html5/src/HTML5/Parser/InputStream.php', - 'Masterminds\\HTML5\\Parser\\ParseError' => $vendorDir . '/masterminds/html5/src/HTML5/Parser/ParseError.php', - 'Masterminds\\HTML5\\Parser\\Scanner' => $vendorDir . '/masterminds/html5/src/HTML5/Parser/Scanner.php', - 'Masterminds\\HTML5\\Parser\\StringInputStream' => $vendorDir . '/masterminds/html5/src/HTML5/Parser/StringInputStream.php', - 'Masterminds\\HTML5\\Parser\\Tokenizer' => $vendorDir . '/masterminds/html5/src/HTML5/Parser/Tokenizer.php', - 'Masterminds\\HTML5\\Parser\\TreeBuildingRules' => $vendorDir . '/masterminds/html5/src/HTML5/Parser/TreeBuildingRules.php', - 'Masterminds\\HTML5\\Parser\\UTF8Utils' => $vendorDir . '/masterminds/html5/src/HTML5/Parser/UTF8Utils.php', - 'Masterminds\\HTML5\\Serializer\\HTML5Entities' => $vendorDir . '/masterminds/html5/src/HTML5/Serializer/HTML5Entities.php', - 'Masterminds\\HTML5\\Serializer\\OutputRules' => $vendorDir . '/masterminds/html5/src/HTML5/Serializer/OutputRules.php', - 'Masterminds\\HTML5\\Serializer\\RulesInterface' => $vendorDir . '/masterminds/html5/src/HTML5/Serializer/RulesInterface.php', - 'Masterminds\\HTML5\\Serializer\\Traverser' => $vendorDir . '/masterminds/html5/src/HTML5/Serializer/Traverser.php', - 'Milon\\Barcode\\BarcodeServiceProvider' => $vendorDir . '/milon/barcode/src/Milon/Barcode/BarcodeServiceProvider.php', - 'Milon\\Barcode\\DNS1D' => $vendorDir . '/milon/barcode/src/Milon/Barcode/DNS1D.php', - 'Milon\\Barcode\\DNS2D' => $vendorDir . '/milon/barcode/src/Milon/Barcode/DNS2D.php', - 'Milon\\Barcode\\Datamatrix' => $vendorDir . '/milon/barcode/src/Milon/Barcode/Datamatrix.php', - 'Milon\\Barcode\\Facades\\DNS1DFacade' => $vendorDir . '/milon/barcode/src/Milon/Barcode/Facades/DNS1DFacade.php', - 'Milon\\Barcode\\Facades\\DNS2DFacade' => $vendorDir . '/milon/barcode/src/Milon/Barcode/Facades/DNS2DFacade.php', - 'Milon\\Barcode\\PDF417' => $vendorDir . '/milon/barcode/src/Milon/Barcode/PDF417.php', - 'Milon\\Barcode\\QRcode' => $vendorDir . '/milon/barcode/src/Milon/Barcode/QRcode.php', - 'Milon\\Barcode\\WrongCheckDigitException' => $vendorDir . '/milon/barcode/src/Milon/Barcode/WrongCheckDigitException.php', - 'Mockery\\Adapter\\Phpunit\\MockeryPHPUnitIntegration' => $vendorDir . '/mockery/mockery/library/Mockery/Adapter/Phpunit/MockeryPHPUnitIntegration.php', - 'Mockery\\Adapter\\Phpunit\\MockeryPHPUnitIntegrationAssertPostConditions' => $vendorDir . '/mockery/mockery/library/Mockery/Adapter/Phpunit/MockeryPHPUnitIntegrationAssertPostConditions.php', - 'Mockery\\Adapter\\Phpunit\\MockeryTestCase' => $vendorDir . '/mockery/mockery/library/Mockery/Adapter/Phpunit/MockeryTestCase.php', - 'Mockery\\Adapter\\Phpunit\\MockeryTestCaseSetUp' => $vendorDir . '/mockery/mockery/library/Mockery/Adapter/Phpunit/MockeryTestCaseSetUp.php', - 'Mockery\\Adapter\\Phpunit\\TestListener' => $vendorDir . '/mockery/mockery/library/Mockery/Adapter/Phpunit/TestListener.php', - 'Mockery\\Adapter\\Phpunit\\TestListenerTrait' => $vendorDir . '/mockery/mockery/library/Mockery/Adapter/Phpunit/TestListenerTrait.php', - 'Mockery\\ClosureWrapper' => $vendorDir . '/mockery/mockery/library/Mockery/ClosureWrapper.php', - 'Mockery\\CompositeExpectation' => $vendorDir . '/mockery/mockery/library/Mockery/CompositeExpectation.php', - 'Mockery\\Configuration' => $vendorDir . '/mockery/mockery/library/Mockery/Configuration.php', - 'Mockery\\Container' => $vendorDir . '/mockery/mockery/library/Mockery/Container.php', - 'Mockery\\CountValidator\\AtLeast' => $vendorDir . '/mockery/mockery/library/Mockery/CountValidator/AtLeast.php', - 'Mockery\\CountValidator\\AtMost' => $vendorDir . '/mockery/mockery/library/Mockery/CountValidator/AtMost.php', - 'Mockery\\CountValidator\\CountValidatorAbstract' => $vendorDir . '/mockery/mockery/library/Mockery/CountValidator/CountValidatorAbstract.php', - 'Mockery\\CountValidator\\CountValidatorInterface' => $vendorDir . '/mockery/mockery/library/Mockery/CountValidator/CountValidatorInterface.php', - 'Mockery\\CountValidator\\Exact' => $vendorDir . '/mockery/mockery/library/Mockery/CountValidator/Exact.php', - 'Mockery\\CountValidator\\Exception' => $vendorDir . '/mockery/mockery/library/Mockery/CountValidator/Exception.php', - 'Mockery\\Exception' => $vendorDir . '/mockery/mockery/library/Mockery/Exception.php', - 'Mockery\\Exception\\BadMethodCallException' => $vendorDir . '/mockery/mockery/library/Mockery/Exception/BadMethodCallException.php', - 'Mockery\\Exception\\InvalidArgumentException' => $vendorDir . '/mockery/mockery/library/Mockery/Exception/InvalidArgumentException.php', - 'Mockery\\Exception\\InvalidCountException' => $vendorDir . '/mockery/mockery/library/Mockery/Exception/InvalidCountException.php', - 'Mockery\\Exception\\InvalidOrderException' => $vendorDir . '/mockery/mockery/library/Mockery/Exception/InvalidOrderException.php', - 'Mockery\\Exception\\MockeryExceptionInterface' => $vendorDir . '/mockery/mockery/library/Mockery/Exception/MockeryExceptionInterface.php', - 'Mockery\\Exception\\NoMatchingExpectationException' => $vendorDir . '/mockery/mockery/library/Mockery/Exception/NoMatchingExpectationException.php', - 'Mockery\\Exception\\RuntimeException' => $vendorDir . '/mockery/mockery/library/Mockery/Exception/RuntimeException.php', - 'Mockery\\Expectation' => $vendorDir . '/mockery/mockery/library/Mockery/Expectation.php', - 'Mockery\\ExpectationDirector' => $vendorDir . '/mockery/mockery/library/Mockery/ExpectationDirector.php', - 'Mockery\\ExpectationInterface' => $vendorDir . '/mockery/mockery/library/Mockery/ExpectationInterface.php', - 'Mockery\\ExpectsHigherOrderMessage' => $vendorDir . '/mockery/mockery/library/Mockery/ExpectsHigherOrderMessage.php', - 'Mockery\\Generator\\CachingGenerator' => $vendorDir . '/mockery/mockery/library/Mockery/Generator/CachingGenerator.php', - 'Mockery\\Generator\\DefinedTargetClass' => $vendorDir . '/mockery/mockery/library/Mockery/Generator/DefinedTargetClass.php', - 'Mockery\\Generator\\Generator' => $vendorDir . '/mockery/mockery/library/Mockery/Generator/Generator.php', - 'Mockery\\Generator\\Method' => $vendorDir . '/mockery/mockery/library/Mockery/Generator/Method.php', - 'Mockery\\Generator\\MockConfiguration' => $vendorDir . '/mockery/mockery/library/Mockery/Generator/MockConfiguration.php', - 'Mockery\\Generator\\MockConfigurationBuilder' => $vendorDir . '/mockery/mockery/library/Mockery/Generator/MockConfigurationBuilder.php', - 'Mockery\\Generator\\MockDefinition' => $vendorDir . '/mockery/mockery/library/Mockery/Generator/MockDefinition.php', - 'Mockery\\Generator\\MockNameBuilder' => $vendorDir . '/mockery/mockery/library/Mockery/Generator/MockNameBuilder.php', - 'Mockery\\Generator\\Parameter' => $vendorDir . '/mockery/mockery/library/Mockery/Generator/Parameter.php', - 'Mockery\\Generator\\StringManipulationGenerator' => $vendorDir . '/mockery/mockery/library/Mockery/Generator/StringManipulationGenerator.php', - 'Mockery\\Generator\\StringManipulation\\Pass\\AvoidMethodClashPass' => $vendorDir . '/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/AvoidMethodClashPass.php', - 'Mockery\\Generator\\StringManipulation\\Pass\\CallTypeHintPass' => $vendorDir . '/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/CallTypeHintPass.php', - 'Mockery\\Generator\\StringManipulation\\Pass\\ClassAttributesPass' => $vendorDir . '/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/ClassAttributesPass.php', - 'Mockery\\Generator\\StringManipulation\\Pass\\ClassNamePass' => $vendorDir . '/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/ClassNamePass.php', - 'Mockery\\Generator\\StringManipulation\\Pass\\ClassPass' => $vendorDir . '/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/ClassPass.php', - 'Mockery\\Generator\\StringManipulation\\Pass\\ConstantsPass' => $vendorDir . '/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/ConstantsPass.php', - 'Mockery\\Generator\\StringManipulation\\Pass\\InstanceMockPass' => $vendorDir . '/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/InstanceMockPass.php', - 'Mockery\\Generator\\StringManipulation\\Pass\\InterfacePass' => $vendorDir . '/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/InterfacePass.php', - 'Mockery\\Generator\\StringManipulation\\Pass\\MagicMethodTypeHintsPass' => $vendorDir . '/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/MagicMethodTypeHintsPass.php', - 'Mockery\\Generator\\StringManipulation\\Pass\\MethodDefinitionPass' => $vendorDir . '/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/MethodDefinitionPass.php', - 'Mockery\\Generator\\StringManipulation\\Pass\\Pass' => $vendorDir . '/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/Pass.php', - 'Mockery\\Generator\\StringManipulation\\Pass\\RemoveBuiltinMethodsThatAreFinalPass' => $vendorDir . '/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/RemoveBuiltinMethodsThatAreFinalPass.php', - 'Mockery\\Generator\\StringManipulation\\Pass\\RemoveDestructorPass' => $vendorDir . '/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/RemoveDestructorPass.php', - 'Mockery\\Generator\\StringManipulation\\Pass\\RemoveUnserializeForInternalSerializableClassesPass' => $vendorDir . '/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/RemoveUnserializeForInternalSerializableClassesPass.php', - 'Mockery\\Generator\\StringManipulation\\Pass\\TraitPass' => $vendorDir . '/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/TraitPass.php', - 'Mockery\\Generator\\TargetClassInterface' => $vendorDir . '/mockery/mockery/library/Mockery/Generator/TargetClassInterface.php', - 'Mockery\\Generator\\UndefinedTargetClass' => $vendorDir . '/mockery/mockery/library/Mockery/Generator/UndefinedTargetClass.php', - 'Mockery\\HigherOrderMessage' => $vendorDir . '/mockery/mockery/library/Mockery/HigherOrderMessage.php', - 'Mockery\\Instantiator' => $vendorDir . '/mockery/mockery/library/Mockery/Instantiator.php', - 'Mockery\\LegacyMockInterface' => $vendorDir . '/mockery/mockery/library/Mockery/LegacyMockInterface.php', - 'Mockery\\Loader\\EvalLoader' => $vendorDir . '/mockery/mockery/library/Mockery/Loader/EvalLoader.php', - 'Mockery\\Loader\\Loader' => $vendorDir . '/mockery/mockery/library/Mockery/Loader/Loader.php', - 'Mockery\\Loader\\RequireLoader' => $vendorDir . '/mockery/mockery/library/Mockery/Loader/RequireLoader.php', - 'Mockery\\Matcher\\AndAnyOtherArgs' => $vendorDir . '/mockery/mockery/library/Mockery/Matcher/AndAnyOtherArgs.php', - 'Mockery\\Matcher\\Any' => $vendorDir . '/mockery/mockery/library/Mockery/Matcher/Any.php', - 'Mockery\\Matcher\\AnyArgs' => $vendorDir . '/mockery/mockery/library/Mockery/Matcher/AnyArgs.php', - 'Mockery\\Matcher\\AnyOf' => $vendorDir . '/mockery/mockery/library/Mockery/Matcher/AnyOf.php', - 'Mockery\\Matcher\\ArgumentListMatcher' => $vendorDir . '/mockery/mockery/library/Mockery/Matcher/ArgumentListMatcher.php', - 'Mockery\\Matcher\\Closure' => $vendorDir . '/mockery/mockery/library/Mockery/Matcher/Closure.php', - 'Mockery\\Matcher\\Contains' => $vendorDir . '/mockery/mockery/library/Mockery/Matcher/Contains.php', - 'Mockery\\Matcher\\Ducktype' => $vendorDir . '/mockery/mockery/library/Mockery/Matcher/Ducktype.php', - 'Mockery\\Matcher\\HasKey' => $vendorDir . '/mockery/mockery/library/Mockery/Matcher/HasKey.php', - 'Mockery\\Matcher\\HasValue' => $vendorDir . '/mockery/mockery/library/Mockery/Matcher/HasValue.php', - 'Mockery\\Matcher\\IsEqual' => $vendorDir . '/mockery/mockery/library/Mockery/Matcher/IsEqual.php', - 'Mockery\\Matcher\\IsSame' => $vendorDir . '/mockery/mockery/library/Mockery/Matcher/IsSame.php', - 'Mockery\\Matcher\\MatcherAbstract' => $vendorDir . '/mockery/mockery/library/Mockery/Matcher/MatcherAbstract.php', - 'Mockery\\Matcher\\MatcherInterface' => $vendorDir . '/mockery/mockery/library/Mockery/Matcher/MatcherInterface.php', - 'Mockery\\Matcher\\MultiArgumentClosure' => $vendorDir . '/mockery/mockery/library/Mockery/Matcher/MultiArgumentClosure.php', - 'Mockery\\Matcher\\MustBe' => $vendorDir . '/mockery/mockery/library/Mockery/Matcher/MustBe.php', - 'Mockery\\Matcher\\NoArgs' => $vendorDir . '/mockery/mockery/library/Mockery/Matcher/NoArgs.php', - 'Mockery\\Matcher\\Not' => $vendorDir . '/mockery/mockery/library/Mockery/Matcher/Not.php', - 'Mockery\\Matcher\\NotAnyOf' => $vendorDir . '/mockery/mockery/library/Mockery/Matcher/NotAnyOf.php', - 'Mockery\\Matcher\\Pattern' => $vendorDir . '/mockery/mockery/library/Mockery/Matcher/Pattern.php', - 'Mockery\\Matcher\\Subset' => $vendorDir . '/mockery/mockery/library/Mockery/Matcher/Subset.php', - 'Mockery\\Matcher\\Type' => $vendorDir . '/mockery/mockery/library/Mockery/Matcher/Type.php', - 'Mockery\\MethodCall' => $vendorDir . '/mockery/mockery/library/Mockery/MethodCall.php', - 'Mockery\\Mock' => $vendorDir . '/mockery/mockery/library/Mockery/Mock.php', - 'Mockery\\MockInterface' => $vendorDir . '/mockery/mockery/library/Mockery/MockInterface.php', - 'Mockery\\QuickDefinitionsConfiguration' => $vendorDir . '/mockery/mockery/library/Mockery/QuickDefinitionsConfiguration.php', - 'Mockery\\ReceivedMethodCalls' => $vendorDir . '/mockery/mockery/library/Mockery/ReceivedMethodCalls.php', - 'Mockery\\Reflector' => $vendorDir . '/mockery/mockery/library/Mockery/Reflector.php', - 'Mockery\\Undefined' => $vendorDir . '/mockery/mockery/library/Mockery/Undefined.php', - 'Mockery\\VerificationDirector' => $vendorDir . '/mockery/mockery/library/Mockery/VerificationDirector.php', - 'Mockery\\VerificationExpectation' => $vendorDir . '/mockery/mockery/library/Mockery/VerificationExpectation.php', - 'ModuleSeeder' => $baseDir . '/database/seeders/ModuleSeeder.php', - 'Modules\\Antenatal\\Http\\Controllers\\AnteNatalClinicController' => $baseDir . '/Modules/Antenatal/Http/Controllers/AnteNatalClinicController.php', - 'Modules\\Antenatal\\Http\\Controllers\\Controller' => $baseDir . '/Modules/Antenatal/Http/Controllers/Controller.php', - 'Modules\\Antenatal\\Providers\\AntenatalServiceProvider' => $baseDir . '/Modules/Antenatal/Providers/AntenatalServiceProvider.php', - 'Modules\\Antenatal\\Providers\\RouteServiceProvider' => $baseDir . '/Modules/Antenatal/Providers/RouteServiceProvider.php', - 'Modules\\Banking\\Http\\Controllers\\BankingController' => $baseDir . '/Modules/Banking/Http/Controllers/BankingController.php', - 'Modules\\Banking\\Http\\Controllers\\BankingRecordController' => $baseDir . '/Modules/Banking/Http/Controllers/BankingRecordController.php', - 'Modules\\Banking\\Http\\Controllers\\Controller' => $baseDir . '/Modules/Banking/Http/Controllers/Controller.php', - 'Modules\\Banking\\Providers\\BankingServiceProvider' => $baseDir . '/Modules/Banking/Providers/BankingServiceProvider.php', - 'Modules\\Banking\\Providers\\RouteServiceProvider' => $baseDir . '/Modules/Banking/Providers/RouteServiceProvider.php', - 'Modules\\Budgets\\Http\\Controllers\\BudgetController' => $baseDir . '/Modules/Budgets/Http/Controllers/BudgetController.php', - 'Modules\\Budgets\\Http\\Controllers\\Controller' => $baseDir . '/Modules/Budgets/Http/Controllers/Controller.php', - 'Modules\\Budgets\\Providers\\BudgetsServiceProvider' => $baseDir . '/Modules/Budgets/Providers/BudgetsServiceProvider.php', - 'Modules\\Budgets\\Providers\\RouteServiceProvider' => $baseDir . '/Modules/Budgets/Providers/RouteServiceProvider.php', - 'Modules\\Cancer\\Http\\Controllers\\CancerProtocolController' => $baseDir . '/Modules/Cancer/Http/Controllers/CancerProtocolController.php', - 'Modules\\Cancer\\Providers\\CancerServiceProvider' => $baseDir . '/Modules/Cancer/Providers/CancerServiceProvider.php', - 'Modules\\Cancer\\Providers\\RouteServiceProvider' => $baseDir . '/Modules/Cancer/Providers/RouteServiceProvider.php', - 'Modules\\ClinicalData\\Http\\Controllers\\AccountTypeController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/AccountTypeController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\AgeGroupController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/AgeGroupController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\BedCategoriesController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/BedCategoriesController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\ChartOfAccountController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/ChartOfAccountController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\ClinicController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/ClinicController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\ClinicalDataController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/ClinicalDataController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\CompanyController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/CompanyController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\Controller' => $baseDir . '/Modules/ClinicalData/Http/Controllers/Controller.php', - 'Modules\\ClinicalData\\Http\\Controllers\\CountriesController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/CountriesController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\CountyController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/CountyController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\DepartmentController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/DepartmentController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\DiagnosisController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/DiagnosisController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\DistrictController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/DistrictController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\DonorsController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/DonorsController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\DosageFrequencyController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/DosageFrequencyController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\DrugCategoryController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/DrugCategoryController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\DrugController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/DrugController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\DrugFormController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/DrugFormController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\DrugRouteController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/DrugRouteController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\DrugUnitController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/DrugUnitController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\EyeGlassesController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/EyeGlassesController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\GeneralItemsController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/GeneralItemsController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\HmisCategoryController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/HmisCategoryController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\HmisCategoryOptionsController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/HmisCategoryOptionsController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\ObservationController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/ObservationController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\OccupationController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/OccupationController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\OutcomeController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/OutcomeController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\PackageUnitController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/PackageUnitController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\ParishController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/ParishController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\PatientCategoryController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/PatientCategoryController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\PatientRegistrationFieldController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/PatientRegistrationFieldController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\ProcedureCategoriesController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/ProcedureCategoriesController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\ProcedureController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/ProcedureController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\ReferralHospitalController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/ReferralHospitalController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\ResidenceController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/ResidenceController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\ResourceCategoryController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/ResourceCategoryController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\ResourceController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/ResourceController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\ServicesController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/ServicesController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\SlitLampTestAreaController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/SlitLampTestAreaController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\SlitLampTestAreaValueController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/SlitLampTestAreaValueController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\SpecialityController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/SpecialityController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\StaffPositionsController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/StaffPositionsController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\SubcountyController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/SubcountyController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\SundryController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/SundryController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\SundryFormController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/SundryFormController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\SupplierController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/SupplierController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\SymptomController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/SymptomController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\UnitOfMeasureController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/UnitOfMeasureController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\VillageController' => $baseDir . '/Modules/ClinicalData/Http/Controllers/VillageController.php', - 'Modules\\ClinicalData\\Providers\\ClinicalDataServiceProvider' => $baseDir . '/Modules/ClinicalData/Providers/ClinicalDataServiceProvider.php', - 'Modules\\ClinicalData\\Providers\\RouteServiceProvider' => $baseDir . '/Modules/ClinicalData/Providers/RouteServiceProvider.php', - 'Modules\\ClinicalData\\Services\\Clinics\\ClinicsService' => $baseDir . '/Modules/ClinicalData/Services/Clinics/ClinicsService.php', - 'Modules\\ClinicalData\\Services\\Clinics\\ClinicsServiceInterface' => $baseDir . '/Modules/ClinicalData/Services/Clinics/ClinicsServiceInterface.php', - 'Modules\\ClinicalData\\Services\\Drugs\\DrugFormsService' => $baseDir . '/Modules/ClinicalData/Services/Drugs/DrugFormsService.php', - 'Modules\\ClinicalData\\Services\\Drugs\\DrugRoutesService' => $baseDir . '/Modules/ClinicalData/Services/Drugs/DrugRoutesService.php', - 'Modules\\ClinicalData\\Services\\Drugs\\DrugUnitsService' => $baseDir . '/Modules/ClinicalData/Services/Drugs/DrugUnitsService.php', - 'Modules\\ClinicalData\\Services\\Drugs\\DrugsService' => $baseDir . '/Modules/ClinicalData/Services/Drugs/DrugsService.php', - 'Modules\\ClinicalData\\Services\\Investigations\\InvestigationsService' => $baseDir . '/Modules/ClinicalData/Services/Investigations/InvestigationsService.php', - 'Modules\\Diabetes\\Http\\Controllers\\Controller' => $baseDir . '/Modules/Diabetes/Http/Controllers/Controller.php', - 'Modules\\Diabetes\\Http\\Controllers\\DiabetesClinicController' => $baseDir . '/Modules/Diabetes/Http/Controllers/DiabetesClinicController.php', - 'Modules\\Diabetes\\Providers\\DiabetesServiceProvider' => $baseDir . '/Modules/Diabetes/Providers/DiabetesServiceProvider.php', - 'Modules\\Diabetes\\Providers\\RouteServiceProvider' => $baseDir . '/Modules/Diabetes/Providers/RouteServiceProvider.php', - 'Modules\\Expenses\\Http\\Controllers\\Controller' => $baseDir . '/Modules/Expenses/Http/Controllers/Controller.php', - 'Modules\\Expenses\\Http\\Controllers\\PaymentController' => $baseDir . '/Modules/Expenses/Http/Controllers/PaymentController.php', - 'Modules\\Expenses\\Http\\Controllers\\PaymentItemController' => $baseDir . '/Modules/Expenses/Http/Controllers/PaymentItemController.php', - 'Modules\\Expenses\\Providers\\ExpensesServiceProvider' => $baseDir . '/Modules/Expenses/Providers/ExpensesServiceProvider.php', - 'Modules\\Expenses\\Providers\\RouteServiceProvider' => $baseDir . '/Modules/Expenses/Providers/RouteServiceProvider.php', - 'Modules\\EyeClinic\\Http\\Controllers\\Controller' => $baseDir . '/Modules/EyeClinic/Http/Controllers/Controller.php', - 'Modules\\EyeClinic\\Http\\Controllers\\EyeClinicController' => $baseDir . '/Modules/EyeClinic/Http/Controllers/EyeClinicController.php', - 'Modules\\EyeClinic\\Providers\\EyeClinicServiceProvider' => $baseDir . '/Modules/EyeClinic/Providers/EyeClinicServiceProvider.php', - 'Modules\\EyeClinic\\Providers\\RouteServiceProvider' => $baseDir . '/Modules/EyeClinic/Providers/RouteServiceProvider.php', - 'Modules\\FinanceReports\\Http\\Controllers\\Controller' => $baseDir . '/Modules/FinanceReports/Http/Controllers/Controller.php', - 'Modules\\FinanceReports\\Http\\Controllers\\FinanceReportsController' => $baseDir . '/Modules/FinanceReports/Http/Controllers/FinanceReportsController.php', - 'Modules\\FinanceReports\\Providers\\FinanceReportsServiceProvider' => $baseDir . '/Modules/FinanceReports/Providers/FinanceReportsServiceProvider.php', - 'Modules\\FinanceReports\\Providers\\RouteServiceProvider' => $baseDir . '/Modules/FinanceReports/Providers/RouteServiceProvider.php', - 'Modules\\Finance\\Http\\Controllers\\Controller' => $baseDir . '/Modules/Finance/Http/Controllers/Controller.php', - 'Modules\\Finance\\Http\\Controllers\\CostCenterController' => $baseDir . '/Modules/Finance/Http/Controllers/CostCenterController.php', - 'Modules\\Finance\\Http\\Controllers\\EquityController' => $baseDir . '/Modules/Finance/Http/Controllers/EquityController.php', - 'Modules\\Finance\\Http\\Controllers\\FinanceController' => $baseDir . '/Modules/Finance/Http/Controllers/FinanceController.php', - 'Modules\\Finance\\Http\\Controllers\\FixedAssetsController' => $baseDir . '/Modules/Finance/Http/Controllers/FixedAssetsController.php', - 'Modules\\Finance\\Http\\Controllers\\MarkupTagController' => $baseDir . '/Modules/Finance/Http/Controllers/MarkupTagController.php', - 'Modules\\Finance\\Http\\Controllers\\StaffPaymentsConfigurationController' => $baseDir . '/Modules/Finance/Http/Controllers/StaffPaymentsConfigurationController.php', - 'Modules\\Finance\\Http\\Controllers\\StreamlineBillsController' => $baseDir . '/Modules/Finance/Http/Controllers/StreamlineBillsController.php', - 'Modules\\Finance\\Providers\\FinanceServiceProvider' => $baseDir . '/Modules/Finance/Providers/FinanceServiceProvider.php', - 'Modules\\Finance\\Providers\\RouteServiceProvider' => $baseDir . '/Modules/Finance/Providers/RouteServiceProvider.php', - 'Modules\\Hiv\\Http\\Controllers\\AntiretralViralTherapyController' => $baseDir . '/Modules/Hiv/Http/Controllers/AntiretralViralTherapyController.php', - 'Modules\\Hiv\\Http\\Controllers\\Controller' => $baseDir . '/Modules/Hiv/Http/Controllers/Controller.php', - 'Modules\\Hiv\\Http\\Controllers\\HIVController' => $baseDir . '/Modules/Hiv/Http/Controllers/HIVController.php', - 'Modules\\Hiv\\Providers\\HivServiceProvider' => $baseDir . '/Modules/Hiv/Providers/HivServiceProvider.php', - 'Modules\\Hiv\\Providers\\RouteServiceProvider' => $baseDir . '/Modules/Hiv/Providers/RouteServiceProvider.php', - 'Modules\\Insurance\\Http\\Controllers\\CommunityHealthInsurancePlanController' => $baseDir . '/Modules/Insurance/Http/Controllers/CommunityHealthInsurancePlanController.php', - 'Modules\\Insurance\\Http\\Controllers\\Controller' => $baseDir . '/Modules/Insurance/Http/Controllers/Controller.php', - 'Modules\\Insurance\\Http\\Controllers\\HeadsOfFamilyController' => $baseDir . '/Modules/Insurance/Http/Controllers/HeadsOfFamilyController.php', - 'Modules\\Insurance\\Http\\Controllers\\InsuranceBenefitController' => $baseDir . '/Modules/Insurance/Http/Controllers/InsuranceBenefitController.php', - 'Modules\\Insurance\\Http\\Controllers\\InsuranceClaimsController' => $baseDir . '/Modules/Insurance/Http/Controllers/InsuranceClaimsController.php', - 'Modules\\Insurance\\Http\\Controllers\\InsuranceController' => $baseDir . '/Modules/Insurance/Http/Controllers/InsuranceController.php', - 'Modules\\Insurance\\Http\\Controllers\\InsuranceDiseaseGroupsController' => $baseDir . '/Modules/Insurance/Http/Controllers/InsuranceDiseaseGroupsController.php', - 'Modules\\Insurance\\Http\\Controllers\\InsuranceGroupController' => $baseDir . '/Modules/Insurance/Http/Controllers/InsuranceGroupController.php', - 'Modules\\Insurance\\Http\\Controllers\\InsuranceMembersController' => $baseDir . '/Modules/Insurance/Http/Controllers/InsuranceMembersController.php', - 'Modules\\Insurance\\Http\\Controllers\\InsurancePremiumsController' => $baseDir . '/Modules/Insurance/Http/Controllers/InsurancePremiumsController.php', - 'Modules\\Insurance\\Http\\Controllers\\InsuranceReportsController' => $baseDir . '/Modules/Insurance/Http/Controllers/InsuranceReportsController.php', - 'Modules\\Insurance\\Http\\Controllers\\InsuranceTariffsController' => $baseDir . '/Modules/Insurance/Http/Controllers/InsuranceTariffsController.php', - 'Modules\\Insurance\\Http\\Controllers\\PersonTitleController' => $baseDir . '/Modules/Insurance/Http/Controllers/PersonTitleController.php', - 'Modules\\Insurance\\Http\\Controllers\\RiskController' => $baseDir . '/Modules/Insurance/Http/Controllers/RiskController.php', - 'Modules\\Insurance\\Providers\\InsuranceServiceProvider' => $baseDir . '/Modules/Insurance/Providers/InsuranceServiceProvider.php', - 'Modules\\Insurance\\Providers\\RouteServiceProvider' => $baseDir . '/Modules/Insurance/Providers/RouteServiceProvider.php', - 'Modules\\Investigations\\Http\\Controllers\\Controller' => $baseDir . '/Modules/Investigations/Http/Controllers/Controller.php', - 'Modules\\Investigations\\Http\\Controllers\\DentalController' => $baseDir . '/Modules/Investigations/Http/Controllers/DentalController.php', - 'Modules\\Investigations\\Http\\Controllers\\InvestigationCategoryController' => $baseDir . '/Modules/Investigations/Http/Controllers/InvestigationCategoryController.php', - 'Modules\\Investigations\\Http\\Controllers\\InvestigationController' => $baseDir . '/Modules/Investigations/Http/Controllers/InvestigationController.php', - 'Modules\\Investigations\\Http\\Controllers\\InvestigationPrintController' => $baseDir . '/Modules/Investigations/Http/Controllers/InvestigationPrintController.php', - 'Modules\\Investigations\\Http\\Controllers\\InvestigationResultTemplateController' => $baseDir . '/Modules/Investigations/Http/Controllers/InvestigationResultTemplateController.php', - 'Modules\\Investigations\\Http\\Controllers\\InvestigationSpecialisedVariableController' => $baseDir . '/Modules/Investigations/Http/Controllers/InvestigationSpecialisedVariableController.php', - 'Modules\\Investigations\\Http\\Controllers\\InvestigationTestCodesController' => $baseDir . '/Modules/Investigations/Http/Controllers/InvestigationTestCodesController.php', - 'Modules\\Investigations\\Http\\Controllers\\LabController' => $baseDir . '/Modules/Investigations/Http/Controllers/LabController.php', - 'Modules\\Investigations\\Http\\Controllers\\LabFormController' => $baseDir . '/Modules/Investigations/Http/Controllers/LabFormController.php', - 'Modules\\Investigations\\Http\\Controllers\\LabInstrumentsController' => $baseDir . '/Modules/Investigations/Http/Controllers/LabInstrumentsController.php', - 'Modules\\Investigations\\Http\\Controllers\\LabMachinesController' => $baseDir . '/Modules/Investigations/Http/Controllers/LabMachinesController.php', - 'Modules\\Investigations\\Http\\Controllers\\LaboratorySpecimenController' => $baseDir . '/Modules/Investigations/Http/Controllers/LaboratorySpecimenController.php', - 'Modules\\Investigations\\Http\\Controllers\\RadiologyController' => $baseDir . '/Modules/Investigations/Http/Controllers/RadiologyController.php', - 'Modules\\Investigations\\Providers\\InvestigationsServiceProvider' => $baseDir . '/Modules/Investigations/Providers/InvestigationsServiceProvider.php', - 'Modules\\Investigations\\Providers\\RouteServiceProvider' => $baseDir . '/Modules/Investigations/Providers/RouteServiceProvider.php', - 'Modules\\Invoices\\Http\\Controllers\\Controller' => $baseDir . '/Modules/Invoices/Http/Controllers/Controller.php', - 'Modules\\Invoices\\Http\\Controllers\\InvoicesController' => $baseDir . '/Modules/Invoices/Http/Controllers/InvoicesController.php', - 'Modules\\Invoices\\Providers\\InvoicesServiceProvider' => $baseDir . '/Modules/Invoices/Providers/InvoicesServiceProvider.php', - 'Modules\\Invoices\\Providers\\RouteServiceProvider' => $baseDir . '/Modules/Invoices/Providers/RouteServiceProvider.php', - 'Modules\\Invoices\\Services\\InvoicesService' => $baseDir . '/Modules/Invoices/Services/InvoicesService.php', - 'Modules\\Journals\\Http\\Controllers\\Controller' => $baseDir . '/Modules/Journals/Http/Controllers/Controller.php', - 'Modules\\Journals\\Http\\Controllers\\JournalController' => $baseDir . '/Modules/Journals/Http/Controllers/JournalController.php', - 'Modules\\Journals\\Providers\\JournalsServiceProvider' => $baseDir . '/Modules/Journals/Providers/JournalsServiceProvider.php', - 'Modules\\Journals\\Providers\\RouteServiceProvider' => $baseDir . '/Modules/Journals/Providers/RouteServiceProvider.php', - 'Modules\\Maternity\\Http\\Controllers\\Controller' => $baseDir . '/Modules/Maternity/Http/Controllers/Controller.php', - 'Modules\\Maternity\\Http\\Controllers\\MaternityController' => $baseDir . '/Modules/Maternity/Http/Controllers/MaternityController.php', - 'Modules\\Maternity\\Providers\\MaternityServiceProvider' => $baseDir . '/Modules/Maternity/Providers/MaternityServiceProvider.php', - 'Modules\\Maternity\\Providers\\RouteServiceProvider' => $baseDir . '/Modules/Maternity/Providers/RouteServiceProvider.php', - 'Modules\\PatientDiscounts\\Http\\Controllers\\Controller' => $baseDir . '/Modules/PatientDiscounts/Http/Controllers/Controller.php', - 'Modules\\PatientDiscounts\\Http\\Controllers\\DiscountCategoryController' => $baseDir . '/Modules/PatientDiscounts/Http/Controllers/DiscountCategoryController.php', - 'Modules\\PatientDiscounts\\Http\\Controllers\\DiscountController' => $baseDir . '/Modules/PatientDiscounts/Http/Controllers/DiscountController.php', - 'Modules\\PatientDiscounts\\Http\\Controllers\\FamilyAccountsController' => $baseDir . '/Modules/PatientDiscounts/Http/Controllers/FamilyAccountsController.php', - 'Modules\\PatientDiscounts\\Http\\Controllers\\PatientAccountsController' => $baseDir . '/Modules/PatientDiscounts/Http/Controllers/PatientAccountsController.php', - 'Modules\\PatientDiscounts\\Http\\Controllers\\PatientDebtorsController' => $baseDir . '/Modules/PatientDiscounts/Http/Controllers/PatientDebtorsController.php', - 'Modules\\PatientDiscounts\\Http\\Controllers\\PriceListController' => $baseDir . '/Modules/PatientDiscounts/Http/Controllers/PriceListController.php', - 'Modules\\PatientDiscounts\\Providers\\PatientDiscountsServiceProvider' => $baseDir . '/Modules/PatientDiscounts/Providers/PatientDiscountsServiceProvider.php', - 'Modules\\PatientDiscounts\\Providers\\RouteServiceProvider' => $baseDir . '/Modules/PatientDiscounts/Providers/RouteServiceProvider.php', - 'Modules\\PatientFinance\\Http\\Controllers\\CancelPatientTransactionsController' => $baseDir . '/Modules/PatientFinance/Http/Controllers/CancelPatientTransactionsController.php', - 'Modules\\PatientFinance\\Http\\Controllers\\Controller' => $baseDir . '/Modules/PatientFinance/Http/Controllers/Controller.php', - 'Modules\\PatientFinance\\Http\\Controllers\\PatientFinanceController' => $baseDir . '/Modules/PatientFinance/Http/Controllers/PatientFinanceController.php', - 'Modules\\PatientFinance\\Http\\Controllers\\PatientPaymentMethodsController' => $baseDir . '/Modules/PatientFinance/Http/Controllers/PatientPaymentMethodsController.php', - 'Modules\\PatientFinance\\Http\\Controllers\\PatientRefundController' => $baseDir . '/Modules/PatientFinance/Http/Controllers/PatientRefundController.php', - 'Modules\\PatientFinance\\Providers\\PatientFinanceServiceProvider' => $baseDir . '/Modules/PatientFinance/Providers/PatientFinanceServiceProvider.php', - 'Modules\\PatientFinance\\Providers\\RouteServiceProvider' => $baseDir . '/Modules/PatientFinance/Providers/RouteServiceProvider.php', - 'Modules\\PatientFinance\\Services\\CHIDeposits' => $baseDir . '/Modules/PatientFinance/Services/CHIDeposits.php', - 'Modules\\PatientFinance\\Services\\CentralBillingDeposit' => $baseDir . '/Modules/PatientFinance/Services/CentralBillingDeposit.php', - 'Modules\\PatientFinance\\Services\\CollectiveBillsDeposit' => $baseDir . '/Modules/PatientFinance/Services/CollectiveBillsDeposit.php', - 'Modules\\PatientFinance\\Services\\DepositHelpers' => $baseDir . '/Modules/PatientFinance/Services/DepositHelpers.php', - 'Modules\\PatientFinance\\Services\\EyeGlassesDeposit' => $baseDir . '/Modules/PatientFinance/Services/EyeGlassesDeposit.php', - 'Modules\\PatientFinance\\Services\\InvestigationsDeposit' => $baseDir . '/Modules/PatientFinance/Services/InvestigationsDeposit.php', - 'Modules\\PatientFinance\\Services\\ProceduresDeposit' => $baseDir . '/Modules/PatientFinance/Services/ProceduresDeposit.php', - 'Modules\\PatientFinance\\Services\\ServicesDeposit' => $baseDir . '/Modules/PatientFinance/Services/ServicesDeposit.php', - 'Modules\\PatientFinance\\Services\\SundriesDeposit' => $baseDir . '/Modules/PatientFinance/Services/SundriesDeposit.php', - 'Modules\\PatientFinance\\Services\\TreatmentDeposit' => $baseDir . '/Modules/PatientFinance/Services/TreatmentDeposit.php', - 'Modules\\Patients\\Http\\Controllers\\AlertsController' => $baseDir . '/Modules/Patients/Http/Controllers/AlertsController.php', - 'Modules\\Patients\\Http\\Controllers\\AllergiesController' => $baseDir . '/Modules/Patients/Http/Controllers/AllergiesController.php', - 'Modules\\Patients\\Http\\Controllers\\ConsultationController' => $baseDir . '/Modules/Patients/Http/Controllers/ConsultationController.php', - 'Modules\\Patients\\Http\\Controllers\\Controller' => $baseDir . '/Modules/Patients/Http/Controllers/Controller.php', - 'Modules\\Patients\\Http\\Controllers\\NutritionController' => $baseDir . '/Modules/Patients/Http/Controllers/NutritionController.php', - 'Modules\\Patients\\Http\\Controllers\\PatientAppointmentsController' => $baseDir . '/Modules/Patients/Http/Controllers/PatientAppointmentsController.php', - 'Modules\\Patients\\Http\\Controllers\\PatientController' => $baseDir . '/Modules/Patients/Http/Controllers/PatientController.php', - 'Modules\\Patients\\Http\\Controllers\\PatientDocumentController' => $baseDir . '/Modules/Patients/Http/Controllers/PatientDocumentController.php', - 'Modules\\Patients\\Http\\Controllers\\PatientEpisodeController' => $baseDir . '/Modules/Patients/Http/Controllers/PatientEpisodeController.php', - 'Modules\\Patients\\Http\\Controllers\\PatientFlowMonitoringController' => $baseDir . '/Modules/Patients/Http/Controllers/PatientFlowMonitoringController.php', - 'Modules\\Patients\\Http\\Controllers\\PointOfSaleController' => $baseDir . '/Modules/Patients/Http/Controllers/PointOfSaleController.php', - 'Modules\\Patients\\Http\\Controllers\\PostDischargeRiskController' => $baseDir . '/Modules/Patients/Http/Controllers/PostDischargeRiskController.php', - 'Modules\\Patients\\Http\\Controllers\\TriageController' => $baseDir . '/Modules/Patients/Http/Controllers/TriageController.php', - 'Modules\\Patients\\Providers\\PatientsServiceProvider' => $baseDir . '/Modules/Patients/Providers/PatientsServiceProvider.php', - 'Modules\\Patients\\Providers\\RouteServiceProvider' => $baseDir . '/Modules/Patients/Providers/RouteServiceProvider.php', - 'Modules\\Payroll\\Http\\Controllers\\Controller' => $baseDir . '/Modules/Payroll/Http/Controllers/Controller.php', - 'Modules\\Payroll\\Http\\Controllers\\PayrollCategoriesController' => $baseDir . '/Modules/Payroll/Http/Controllers/PayrollCategoriesController.php', - 'Modules\\Payroll\\Http\\Controllers\\PayrollController' => $baseDir . '/Modules/Payroll/Http/Controllers/PayrollController.php', - 'Modules\\Payroll\\Http\\Controllers\\PayrollDefaultsController' => $baseDir . '/Modules/Payroll/Http/Controllers/PayrollDefaultsController.php', - 'Modules\\Payroll\\Http\\Controllers\\PayrollSalaryScaleController' => $baseDir . '/Modules/Payroll/Http/Controllers/PayrollSalaryScaleController.php', - 'Modules\\Payroll\\Http\\Controllers\\PayrollScheduleController' => $baseDir . '/Modules/Payroll/Http/Controllers/PayrollScheduleController.php', - 'Modules\\Payroll\\Providers\\PayrollServiceProvider' => $baseDir . '/Modules/Payroll/Providers/PayrollServiceProvider.php', - 'Modules\\Payroll\\Providers\\RouteServiceProvider' => $baseDir . '/Modules/Payroll/Providers/RouteServiceProvider.php', - 'Modules\\Pharmacy\\Http\\Controllers\\Controller' => $baseDir . '/Modules/Pharmacy/Http/Controllers/Controller.php', - 'Modules\\Pharmacy\\Http\\Controllers\\PharmacyController' => $baseDir . '/Modules/Pharmacy/Http/Controllers/PharmacyController.php', - 'Modules\\Pharmacy\\Http\\Controllers\\PrescriptionErrorsController' => $baseDir . '/Modules/Pharmacy/Http/Controllers/PrescriptionErrorsController.php', - 'Modules\\Pharmacy\\Http\\Controllers\\PrescriptionsController' => $baseDir . '/Modules/Pharmacy/Http/Controllers/PrescriptionsController.php', - 'Modules\\Pharmacy\\Providers\\PharmacyServiceProvider' => $baseDir . '/Modules/Pharmacy/Providers/PharmacyServiceProvider.php', - 'Modules\\Pharmacy\\Providers\\RouteServiceProvider' => $baseDir . '/Modules/Pharmacy/Providers/RouteServiceProvider.php', - 'Modules\\Reports\\Http\\Controllers\\Controller' => $baseDir . '/Modules/Reports/Http/Controllers/Controller.php', - 'Modules\\Reports\\Http\\Controllers\\HmisController' => $baseDir . '/Modules/Reports/Http/Controllers/HmisController.php', - 'Modules\\Reports\\Http\\Controllers\\HmisController002' => $baseDir . '/Modules/Reports/Http/Controllers/HmisController002.php', - 'Modules\\Reports\\Http\\Controllers\\HmisController105' => $baseDir . '/Modules/Reports/Http/Controllers/HmisController105.php', - 'Modules\\Reports\\Http\\Controllers\\MentalHealthReportsController' => $baseDir . '/Modules/Reports/Http/Controllers/MentalHealthReportsController.php', - 'Modules\\Reports\\Http\\Controllers\\NiraReportController' => $baseDir . '/Modules/Reports/Http/Controllers/NiraReportController.php', - 'Modules\\Reports\\Http\\Controllers\\ReportsDashboardController' => $baseDir . '/Modules/Reports/Http/Controllers/ReportsDashboardController.php', - 'Modules\\Reports\\Http\\Controllers\\StreamlineReportsController' => $baseDir . '/Modules/Reports/Http/Controllers/StreamlineReportsController.php', - 'Modules\\Reports\\Providers\\ReportsServiceProvider' => $baseDir . '/Modules/Reports/Providers/ReportsServiceProvider.php', - 'Modules\\Reports\\Providers\\RouteServiceProvider' => $baseDir . '/Modules/Reports/Providers/RouteServiceProvider.php', - 'Modules\\Stores\\Http\\Controllers\\Controller' => $baseDir . '/Modules/Stores/Http/Controllers/Controller.php', - 'Modules\\Stores\\Http\\Controllers\\StoresController' => $baseDir . '/Modules/Stores/Http/Controllers/StoresController.php', - 'Modules\\Stores\\Providers\\RouteServiceProvider' => $baseDir . '/Modules/Stores/Providers/RouteServiceProvider.php', - 'Modules\\Stores\\Providers\\StoresServiceProvider' => $baseDir . '/Modules/Stores/Providers/StoresServiceProvider.php', - 'Modules\\Stores\\Services\\StoresItemService' => $baseDir . '/Modules/Stores/Services/StoresItemService.php', - 'Modules\\Theatre\\Http\\Controllers\\Controller' => $baseDir . '/Modules/Theatre/Http/Controllers/Controller.php', - 'Modules\\Theatre\\Http\\Controllers\\TheatreAnaestheticsController' => $baseDir . '/Modules/Theatre/Http/Controllers/TheatreAnaestheticsController.php', - 'Modules\\Theatre\\Http\\Controllers\\TheatreSurgeryController' => $baseDir . '/Modules/Theatre/Http/Controllers/TheatreSurgeryController.php', - 'Modules\\Theatre\\Providers\\RouteServiceProvider' => $baseDir . '/Modules/Theatre/Providers/RouteServiceProvider.php', - 'Modules\\Theatre\\Providers\\TheatreServiceProvider' => $baseDir . '/Modules/Theatre/Providers/TheatreServiceProvider.php', - 'Modules\\WardManagement\\Http\\Controllers\\Controller' => $baseDir . '/Modules/WardManagement/Http/Controllers/Controller.php', - 'Modules\\WardManagement\\Http\\Controllers\\HmisWardController' => $baseDir . '/Modules/WardManagement/Http/Controllers/HmisWardController.php', - 'Modules\\WardManagement\\Http\\Controllers\\InpatientBillsController' => $baseDir . '/Modules/WardManagement/Http/Controllers/InpatientBillsController.php', - 'Modules\\WardManagement\\Http\\Controllers\\InpatientController' => $baseDir . '/Modules/WardManagement/Http/Controllers/InpatientController.php', - 'Modules\\WardManagement\\Http\\Controllers\\TreatmentSheetController' => $baseDir . '/Modules/WardManagement/Http/Controllers/TreatmentSheetController.php', - 'Modules\\WardManagement\\Http\\Controllers\\WardController' => $baseDir . '/Modules/WardManagement/Http/Controllers/WardController.php', - 'Modules\\WardManagement\\Http\\Controllers\\WardItemRequestController' => $baseDir . '/Modules/WardManagement/Http/Controllers/WardItemRequestController.php', - 'Modules\\WardManagement\\Http\\Controllers\\WardsConsumptionController' => $baseDir . '/Modules/WardManagement/Http/Controllers/WardsConsumptionController.php', - 'Modules\\WardManagement\\Providers\\RouteServiceProvider' => $baseDir . '/Modules/WardManagement/Providers/RouteServiceProvider.php', - 'Modules\\WardManagement\\Providers\\WardManagementServiceProvider' => $baseDir . '/Modules/WardManagement/Providers/WardManagementServiceProvider.php', - 'Modules\\WardManagement\\Services\\TreatmentSheetService' => $baseDir . '/Modules/WardManagement/Services/TreatmentSheetService.php', - 'Monolog\\Attribute\\AsMonologProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Attribute/AsMonologProcessor.php', - 'Monolog\\Attribute\\WithMonologChannel' => $vendorDir . '/monolog/monolog/src/Monolog/Attribute/WithMonologChannel.php', - 'Monolog\\DateTimeImmutable' => $vendorDir . '/monolog/monolog/src/Monolog/DateTimeImmutable.php', - 'Monolog\\ErrorHandler' => $vendorDir . '/monolog/monolog/src/Monolog/ErrorHandler.php', - 'Monolog\\Formatter\\ChromePHPFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php', - 'Monolog\\Formatter\\ElasticaFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php', - 'Monolog\\Formatter\\ElasticsearchFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/ElasticsearchFormatter.php', - 'Monolog\\Formatter\\FlowdockFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php', - 'Monolog\\Formatter\\FluentdFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php', - 'Monolog\\Formatter\\FormatterInterface' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php', - 'Monolog\\Formatter\\GelfMessageFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php', - 'Monolog\\Formatter\\GoogleCloudLoggingFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/GoogleCloudLoggingFormatter.php', - 'Monolog\\Formatter\\HtmlFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php', - 'Monolog\\Formatter\\JsonFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php', - 'Monolog\\Formatter\\LineFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/LineFormatter.php', - 'Monolog\\Formatter\\LogglyFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php', - 'Monolog\\Formatter\\LogmaticFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/LogmaticFormatter.php', - 'Monolog\\Formatter\\LogstashFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php', - 'Monolog\\Formatter\\MongoDBFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php', - 'Monolog\\Formatter\\NormalizerFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php', - 'Monolog\\Formatter\\ScalarFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php', - 'Monolog\\Formatter\\SyslogFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/SyslogFormatter.php', - 'Monolog\\Formatter\\WildfireFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php', - 'Monolog\\Handler\\AbstractHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/AbstractHandler.php', - 'Monolog\\Handler\\AbstractProcessingHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php', - 'Monolog\\Handler\\AbstractSyslogHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php', - 'Monolog\\Handler\\AmqpHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/AmqpHandler.php', - 'Monolog\\Handler\\BrowserConsoleHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php', - 'Monolog\\Handler\\BufferHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/BufferHandler.php', - 'Monolog\\Handler\\ChromePHPHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php', - 'Monolog\\Handler\\CouchDBHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php', - 'Monolog\\Handler\\CubeHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/CubeHandler.php', - 'Monolog\\Handler\\Curl\\Util' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/Curl/Util.php', - 'Monolog\\Handler\\DeduplicationHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php', - 'Monolog\\Handler\\DoctrineCouchDBHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php', - 'Monolog\\Handler\\DynamoDbHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php', - 'Monolog\\Handler\\ElasticaHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/ElasticaHandler.php', - 'Monolog\\Handler\\ElasticsearchHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/ElasticsearchHandler.php', - 'Monolog\\Handler\\ErrorLogHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php', - 'Monolog\\Handler\\FallbackGroupHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FallbackGroupHandler.php', - 'Monolog\\Handler\\FilterHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FilterHandler.php', - 'Monolog\\Handler\\FingersCrossedHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php', - 'Monolog\\Handler\\FingersCrossed\\ActivationStrategyInterface' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php', - 'Monolog\\Handler\\FingersCrossed\\ChannelLevelActivationStrategy' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php', - 'Monolog\\Handler\\FingersCrossed\\ErrorLevelActivationStrategy' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php', - 'Monolog\\Handler\\FirePHPHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php', - 'Monolog\\Handler\\FleepHookHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php', - 'Monolog\\Handler\\FlowdockHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php', - 'Monolog\\Handler\\FormattableHandlerInterface' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FormattableHandlerInterface.php', - 'Monolog\\Handler\\FormattableHandlerTrait' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FormattableHandlerTrait.php', - 'Monolog\\Handler\\GelfHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/GelfHandler.php', - 'Monolog\\Handler\\GroupHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/GroupHandler.php', - 'Monolog\\Handler\\Handler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/Handler.php', - 'Monolog\\Handler\\HandlerInterface' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/HandlerInterface.php', - 'Monolog\\Handler\\HandlerWrapper' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php', - 'Monolog\\Handler\\IFTTTHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php', - 'Monolog\\Handler\\InsightOpsHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/InsightOpsHandler.php', - 'Monolog\\Handler\\LogEntriesHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php', - 'Monolog\\Handler\\LogglyHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/LogglyHandler.php', - 'Monolog\\Handler\\LogmaticHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/LogmaticHandler.php', - 'Monolog\\Handler\\MailHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/MailHandler.php', - 'Monolog\\Handler\\MandrillHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/MandrillHandler.php', - 'Monolog\\Handler\\MissingExtensionException' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php', - 'Monolog\\Handler\\MongoDBHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php', - 'Monolog\\Handler\\NativeMailerHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php', - 'Monolog\\Handler\\NewRelicHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php', - 'Monolog\\Handler\\NoopHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/NoopHandler.php', - 'Monolog\\Handler\\NullHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/NullHandler.php', - 'Monolog\\Handler\\OverflowHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/OverflowHandler.php', - 'Monolog\\Handler\\PHPConsoleHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php', - 'Monolog\\Handler\\ProcessHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/ProcessHandler.php', - 'Monolog\\Handler\\ProcessableHandlerInterface' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/ProcessableHandlerInterface.php', - 'Monolog\\Handler\\ProcessableHandlerTrait' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/ProcessableHandlerTrait.php', - 'Monolog\\Handler\\PsrHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/PsrHandler.php', - 'Monolog\\Handler\\PushoverHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/PushoverHandler.php', - 'Monolog\\Handler\\RedisHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/RedisHandler.php', - 'Monolog\\Handler\\RedisPubSubHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/RedisPubSubHandler.php', - 'Monolog\\Handler\\RollbarHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/RollbarHandler.php', - 'Monolog\\Handler\\RotatingFileHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php', - 'Monolog\\Handler\\SamplingHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SamplingHandler.php', - 'Monolog\\Handler\\SendGridHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SendGridHandler.php', - 'Monolog\\Handler\\SlackHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SlackHandler.php', - 'Monolog\\Handler\\SlackWebhookHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php', - 'Monolog\\Handler\\Slack\\SlackRecord' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php', - 'Monolog\\Handler\\SocketHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SocketHandler.php', - 'Monolog\\Handler\\SqsHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SqsHandler.php', - 'Monolog\\Handler\\StreamHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/StreamHandler.php', - 'Monolog\\Handler\\SymfonyMailerHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SymfonyMailerHandler.php', - 'Monolog\\Handler\\SyslogHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SyslogHandler.php', - 'Monolog\\Handler\\SyslogUdpHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php', - 'Monolog\\Handler\\SyslogUdp\\UdpSocket' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php', - 'Monolog\\Handler\\TelegramBotHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/TelegramBotHandler.php', - 'Monolog\\Handler\\TestHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/TestHandler.php', - 'Monolog\\Handler\\WebRequestRecognizerTrait' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/WebRequestRecognizerTrait.php', - 'Monolog\\Handler\\WhatFailureGroupHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php', - 'Monolog\\Handler\\ZendMonitorHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php', - 'Monolog\\JsonSerializableDateTimeImmutable' => $vendorDir . '/monolog/monolog/src/Monolog/JsonSerializableDateTimeImmutable.php', - 'Monolog\\Level' => $vendorDir . '/monolog/monolog/src/Monolog/Level.php', - 'Monolog\\LogRecord' => $vendorDir . '/monolog/monolog/src/Monolog/LogRecord.php', - 'Monolog\\Logger' => $vendorDir . '/monolog/monolog/src/Monolog/Logger.php', - 'Monolog\\Processor\\ClosureContextProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/ClosureContextProcessor.php', - 'Monolog\\Processor\\GitProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/GitProcessor.php', - 'Monolog\\Processor\\HostnameProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/HostnameProcessor.php', - 'Monolog\\Processor\\IntrospectionProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php', - 'Monolog\\Processor\\LoadAverageProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/LoadAverageProcessor.php', - 'Monolog\\Processor\\MemoryPeakUsageProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php', - 'Monolog\\Processor\\MemoryProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php', - 'Monolog\\Processor\\MemoryUsageProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php', - 'Monolog\\Processor\\MercurialProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php', - 'Monolog\\Processor\\ProcessIdProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php', - 'Monolog\\Processor\\ProcessorInterface' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/ProcessorInterface.php', - 'Monolog\\Processor\\PsrLogMessageProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php', - 'Monolog\\Processor\\TagProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/TagProcessor.php', - 'Monolog\\Processor\\UidProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/UidProcessor.php', - 'Monolog\\Processor\\WebProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/WebProcessor.php', - 'Monolog\\Registry' => $vendorDir . '/monolog/monolog/src/Monolog/Registry.php', - 'Monolog\\ResettableInterface' => $vendorDir . '/monolog/monolog/src/Monolog/ResettableInterface.php', - 'Monolog\\SignalHandler' => $vendorDir . '/monolog/monolog/src/Monolog/SignalHandler.php', - 'Monolog\\Test\\TestCase' => $vendorDir . '/monolog/monolog/src/Monolog/Test/TestCase.php', - 'Monolog\\Utils' => $vendorDir . '/monolog/monolog/src/Monolog/Utils.php', - 'Nette\\ArgumentOutOfRangeException' => $vendorDir . '/nette/utils/src/exceptions.php', - 'Nette\\DeprecatedException' => $vendorDir . '/nette/utils/src/exceptions.php', - 'Nette\\DirectoryNotFoundException' => $vendorDir . '/nette/utils/src/exceptions.php', - 'Nette\\FileNotFoundException' => $vendorDir . '/nette/utils/src/exceptions.php', - 'Nette\\HtmlStringable' => $vendorDir . '/nette/utils/src/HtmlStringable.php', - 'Nette\\IOException' => $vendorDir . '/nette/utils/src/exceptions.php', - 'Nette\\InvalidArgumentException' => $vendorDir . '/nette/utils/src/exceptions.php', - 'Nette\\InvalidStateException' => $vendorDir . '/nette/utils/src/exceptions.php', - 'Nette\\Iterators\\CachingIterator' => $vendorDir . '/nette/utils/src/Iterators/CachingIterator.php', - 'Nette\\Iterators\\Mapper' => $vendorDir . '/nette/utils/src/Iterators/Mapper.php', - 'Nette\\Localization\\ITranslator' => $vendorDir . '/nette/utils/src/compatibility.php', - 'Nette\\Localization\\Translator' => $vendorDir . '/nette/utils/src/Translator.php', - 'Nette\\MemberAccessException' => $vendorDir . '/nette/utils/src/exceptions.php', - 'Nette\\NotImplementedException' => $vendorDir . '/nette/utils/src/exceptions.php', - 'Nette\\NotSupportedException' => $vendorDir . '/nette/utils/src/exceptions.php', - 'Nette\\OutOfRangeException' => $vendorDir . '/nette/utils/src/exceptions.php', - 'Nette\\Schema\\Context' => $vendorDir . '/nette/schema/src/Schema/Context.php', - 'Nette\\Schema\\DynamicParameter' => $vendorDir . '/nette/schema/src/Schema/DynamicParameter.php', - 'Nette\\Schema\\Elements\\AnyOf' => $vendorDir . '/nette/schema/src/Schema/Elements/AnyOf.php', - 'Nette\\Schema\\Elements\\Base' => $vendorDir . '/nette/schema/src/Schema/Elements/Base.php', - 'Nette\\Schema\\Elements\\Structure' => $vendorDir . '/nette/schema/src/Schema/Elements/Structure.php', - 'Nette\\Schema\\Elements\\Type' => $vendorDir . '/nette/schema/src/Schema/Elements/Type.php', - 'Nette\\Schema\\Expect' => $vendorDir . '/nette/schema/src/Schema/Expect.php', - 'Nette\\Schema\\Helpers' => $vendorDir . '/nette/schema/src/Schema/Helpers.php', - 'Nette\\Schema\\Message' => $vendorDir . '/nette/schema/src/Schema/Message.php', - 'Nette\\Schema\\Processor' => $vendorDir . '/nette/schema/src/Schema/Processor.php', - 'Nette\\Schema\\Schema' => $vendorDir . '/nette/schema/src/Schema/Schema.php', - 'Nette\\Schema\\ValidationException' => $vendorDir . '/nette/schema/src/Schema/ValidationException.php', - 'Nette\\SmartObject' => $vendorDir . '/nette/utils/src/SmartObject.php', - 'Nette\\StaticClass' => $vendorDir . '/nette/utils/src/StaticClass.php', - 'Nette\\UnexpectedValueException' => $vendorDir . '/nette/utils/src/exceptions.php', - 'Nette\\Utils\\ArrayHash' => $vendorDir . '/nette/utils/src/Utils/ArrayHash.php', - 'Nette\\Utils\\ArrayList' => $vendorDir . '/nette/utils/src/Utils/ArrayList.php', - 'Nette\\Utils\\Arrays' => $vendorDir . '/nette/utils/src/Utils/Arrays.php', - 'Nette\\Utils\\AssertionException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php', - 'Nette\\Utils\\Callback' => $vendorDir . '/nette/utils/src/Utils/Callback.php', - 'Nette\\Utils\\DateTime' => $vendorDir . '/nette/utils/src/Utils/DateTime.php', - 'Nette\\Utils\\FileInfo' => $vendorDir . '/nette/utils/src/Utils/FileInfo.php', - 'Nette\\Utils\\FileSystem' => $vendorDir . '/nette/utils/src/Utils/FileSystem.php', - 'Nette\\Utils\\Finder' => $vendorDir . '/nette/utils/src/Utils/Finder.php', - 'Nette\\Utils\\Floats' => $vendorDir . '/nette/utils/src/Utils/Floats.php', - 'Nette\\Utils\\Helpers' => $vendorDir . '/nette/utils/src/Utils/Helpers.php', - 'Nette\\Utils\\Html' => $vendorDir . '/nette/utils/src/Utils/Html.php', - 'Nette\\Utils\\IHtmlString' => $vendorDir . '/nette/utils/src/compatibility.php', - 'Nette\\Utils\\Image' => $vendorDir . '/nette/utils/src/Utils/Image.php', - 'Nette\\Utils\\ImageColor' => $vendorDir . '/nette/utils/src/Utils/ImageColor.php', - 'Nette\\Utils\\ImageException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php', - 'Nette\\Utils\\ImageType' => $vendorDir . '/nette/utils/src/Utils/ImageType.php', - 'Nette\\Utils\\Iterables' => $vendorDir . '/nette/utils/src/Utils/Iterables.php', - 'Nette\\Utils\\Json' => $vendorDir . '/nette/utils/src/Utils/Json.php', - 'Nette\\Utils\\JsonException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php', - 'Nette\\Utils\\ObjectHelpers' => $vendorDir . '/nette/utils/src/Utils/ObjectHelpers.php', - 'Nette\\Utils\\Paginator' => $vendorDir . '/nette/utils/src/Utils/Paginator.php', - 'Nette\\Utils\\Random' => $vendorDir . '/nette/utils/src/Utils/Random.php', - 'Nette\\Utils\\Reflection' => $vendorDir . '/nette/utils/src/Utils/Reflection.php', - 'Nette\\Utils\\ReflectionMethod' => $vendorDir . '/nette/utils/src/Utils/ReflectionMethod.php', - 'Nette\\Utils\\RegexpException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php', - 'Nette\\Utils\\Strings' => $vendorDir . '/nette/utils/src/Utils/Strings.php', - 'Nette\\Utils\\Type' => $vendorDir . '/nette/utils/src/Utils/Type.php', - 'Nette\\Utils\\UnknownImageFileException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php', - 'Nette\\Utils\\Validators' => $vendorDir . '/nette/utils/src/Utils/Validators.php', - 'Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php', - 'Nwidart\\Modules\\Activators\\FileActivator' => $vendorDir . '/nwidart/laravel-modules/src/Activators/FileActivator.php', - 'Nwidart\\Modules\\Collection' => $vendorDir . '/nwidart/laravel-modules/src/Collection.php', - 'Nwidart\\Modules\\Commands\\ChannelMakeCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/ChannelMakeCommand.php', - 'Nwidart\\Modules\\Commands\\CheckLangCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/CheckLangCommand.php', - 'Nwidart\\Modules\\Commands\\CommandMakeCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/CommandMakeCommand.php', - 'Nwidart\\Modules\\Commands\\ComponentClassMakeCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/ComponentClassMakeCommand.php', - 'Nwidart\\Modules\\Commands\\ComponentViewMakeCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/ComponentViewMakeCommand.php', - 'Nwidart\\Modules\\Commands\\ControllerMakeCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/ControllerMakeCommand.php', - 'Nwidart\\Modules\\Commands\\DisableCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/DisableCommand.php', - 'Nwidart\\Modules\\Commands\\DumpCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/DumpCommand.php', - 'Nwidart\\Modules\\Commands\\EnableCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/EnableCommand.php', - 'Nwidart\\Modules\\Commands\\EventMakeCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/EventMakeCommand.php', - 'Nwidart\\Modules\\Commands\\FactoryMakeCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/FactoryMakeCommand.php', - 'Nwidart\\Modules\\Commands\\GeneratorCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/GeneratorCommand.php', - 'Nwidart\\Modules\\Commands\\InstallCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/InstallCommand.php', - 'Nwidart\\Modules\\Commands\\JobMakeCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/JobMakeCommand.php', - 'Nwidart\\Modules\\Commands\\LaravelModulesV6Migrator' => $vendorDir . '/nwidart/laravel-modules/src/Commands/LaravelModulesV6Migrator.php', - 'Nwidart\\Modules\\Commands\\ListCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/ListCommand.php', - 'Nwidart\\Modules\\Commands\\ListenerMakeCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/ListenerMakeCommand.php', - 'Nwidart\\Modules\\Commands\\MailMakeCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/MailMakeCommand.php', - 'Nwidart\\Modules\\Commands\\MiddlewareMakeCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/MiddlewareMakeCommand.php', - 'Nwidart\\Modules\\Commands\\MigrateCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/MigrateCommand.php', - 'Nwidart\\Modules\\Commands\\MigrateFreshCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/MigrateFreshCommand.php', - 'Nwidart\\Modules\\Commands\\MigrateRefreshCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/MigrateRefreshCommand.php', - 'Nwidart\\Modules\\Commands\\MigrateResetCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/MigrateResetCommand.php', - 'Nwidart\\Modules\\Commands\\MigrateRollbackCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/MigrateRollbackCommand.php', - 'Nwidart\\Modules\\Commands\\MigrateStatusCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/MigrateStatusCommand.php', - 'Nwidart\\Modules\\Commands\\MigrationMakeCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/MigrationMakeCommand.php', - 'Nwidart\\Modules\\Commands\\ModelMakeCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/ModelMakeCommand.php', - 'Nwidart\\Modules\\Commands\\ModelPruneCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/ModelPruneCommand.php', - 'Nwidart\\Modules\\Commands\\ModelShowCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/ModelShowCommand.php', - 'Nwidart\\Modules\\Commands\\ModuleDeleteCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/ModuleDeleteCommand.php', - 'Nwidart\\Modules\\Commands\\ModuleMakeCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/ModuleMakeCommand.php', - 'Nwidart\\Modules\\Commands\\NotificationMakeCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/NotificationMakeCommand.php', - 'Nwidart\\Modules\\Commands\\ObserverMakeCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/ObserverMakeCommand.php', - 'Nwidart\\Modules\\Commands\\PolicyMakeCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/PolicyMakeCommand.php', - 'Nwidart\\Modules\\Commands\\ProviderMakeCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/ProviderMakeCommand.php', - 'Nwidart\\Modules\\Commands\\PublishCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/PublishCommand.php', - 'Nwidart\\Modules\\Commands\\PublishConfigurationCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/PublishConfigurationCommand.php', - 'Nwidart\\Modules\\Commands\\PublishMigrationCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/PublishMigrationCommand.php', - 'Nwidart\\Modules\\Commands\\PublishTranslationCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/PublishTranslationCommand.php', - 'Nwidart\\Modules\\Commands\\RequestMakeCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/RequestMakeCommand.php', - 'Nwidart\\Modules\\Commands\\ResourceMakeCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/ResourceMakeCommand.php', - 'Nwidart\\Modules\\Commands\\RouteProviderMakeCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/RouteProviderMakeCommand.php', - 'Nwidart\\Modules\\Commands\\RuleMakeCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/RuleMakeCommand.php', - 'Nwidart\\Modules\\Commands\\SeedCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/SeedCommand.php', - 'Nwidart\\Modules\\Commands\\SeedMakeCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/SeedMakeCommand.php', - 'Nwidart\\Modules\\Commands\\SetupCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/SetupCommand.php', - 'Nwidart\\Modules\\Commands\\TestMakeCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/TestMakeCommand.php', - 'Nwidart\\Modules\\Commands\\UnUseCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/UnUseCommand.php', - 'Nwidart\\Modules\\Commands\\UpdateCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/UpdateCommand.php', - 'Nwidart\\Modules\\Commands\\UseCommand' => $vendorDir . '/nwidart/laravel-modules/src/Commands/UseCommand.php', - 'Nwidart\\Modules\\Contracts\\ActivatorInterface' => $vendorDir . '/nwidart/laravel-modules/src/Contracts/ActivatorInterface.php', - 'Nwidart\\Modules\\Contracts\\PublisherInterface' => $vendorDir . '/nwidart/laravel-modules/src/Contracts/PublisherInterface.php', - 'Nwidart\\Modules\\Contracts\\RepositoryInterface' => $vendorDir . '/nwidart/laravel-modules/src/Contracts/RepositoryInterface.php', - 'Nwidart\\Modules\\Contracts\\RunableInterface' => $vendorDir . '/nwidart/laravel-modules/src/Contracts/RunableInterface.php', - 'Nwidart\\Modules\\Exceptions\\FileAlreadyExistException' => $vendorDir . '/nwidart/laravel-modules/src/Exceptions/FileAlreadyExistException.php', - 'Nwidart\\Modules\\Exceptions\\InvalidActivatorClass' => $vendorDir . '/nwidart/laravel-modules/src/Exceptions/InvalidActivatorClass.php', - 'Nwidart\\Modules\\Exceptions\\InvalidAssetPath' => $vendorDir . '/nwidart/laravel-modules/src/Exceptions/InvalidAssetPath.php', - 'Nwidart\\Modules\\Exceptions\\InvalidJsonException' => $vendorDir . '/nwidart/laravel-modules/src/Exceptions/InvalidJsonException.php', - 'Nwidart\\Modules\\Exceptions\\ModuleNotFoundException' => $vendorDir . '/nwidart/laravel-modules/src/Exceptions/ModuleNotFoundException.php', - 'Nwidart\\Modules\\Facades\\Module' => $vendorDir . '/nwidart/laravel-modules/src/Facades/Module.php', - 'Nwidart\\Modules\\FileRepository' => $vendorDir . '/nwidart/laravel-modules/src/FileRepository.php', - 'Nwidart\\Modules\\Generators\\FileGenerator' => $vendorDir . '/nwidart/laravel-modules/src/Generators/FileGenerator.php', - 'Nwidart\\Modules\\Generators\\Generator' => $vendorDir . '/nwidart/laravel-modules/src/Generators/Generator.php', - 'Nwidart\\Modules\\Generators\\ModuleGenerator' => $vendorDir . '/nwidart/laravel-modules/src/Generators/ModuleGenerator.php', - 'Nwidart\\Modules\\Json' => $vendorDir . '/nwidart/laravel-modules/src/Json.php', - 'Nwidart\\Modules\\LaravelModulesServiceProvider' => $vendorDir . '/nwidart/laravel-modules/src/LaravelModulesServiceProvider.php', - 'Nwidart\\Modules\\Laravel\\LaravelFileRepository' => $vendorDir . '/nwidart/laravel-modules/src/Laravel/LaravelFileRepository.php', - 'Nwidart\\Modules\\Laravel\\Module' => $vendorDir . '/nwidart/laravel-modules/src/Laravel/Module.php', - 'Nwidart\\Modules\\LumenModulesServiceProvider' => $vendorDir . '/nwidart/laravel-modules/src/LumenModulesServiceProvider.php', - 'Nwidart\\Modules\\Lumen\\LumenFileRepository' => $vendorDir . '/nwidart/laravel-modules/src/Lumen/LumenFileRepository.php', - 'Nwidart\\Modules\\Lumen\\Module' => $vendorDir . '/nwidart/laravel-modules/src/Lumen/Module.php', - 'Nwidart\\Modules\\Migrations\\Migrator' => $vendorDir . '/nwidart/laravel-modules/src/Migrations/Migrator.php', - 'Nwidart\\Modules\\Module' => $vendorDir . '/nwidart/laravel-modules/src/Module.php', - 'Nwidart\\Modules\\ModulesServiceProvider' => $vendorDir . '/nwidart/laravel-modules/src/ModulesServiceProvider.php', - 'Nwidart\\Modules\\Process\\Installer' => $vendorDir . '/nwidart/laravel-modules/src/Process/Installer.php', - 'Nwidart\\Modules\\Process\\Runner' => $vendorDir . '/nwidart/laravel-modules/src/Process/Runner.php', - 'Nwidart\\Modules\\Process\\Updater' => $vendorDir . '/nwidart/laravel-modules/src/Process/Updater.php', - 'Nwidart\\Modules\\Providers\\BootstrapServiceProvider' => $vendorDir . '/nwidart/laravel-modules/src/Providers/BootstrapServiceProvider.php', - 'Nwidart\\Modules\\Providers\\ConsoleServiceProvider' => $vendorDir . '/nwidart/laravel-modules/src/Providers/ConsoleServiceProvider.php', - 'Nwidart\\Modules\\Providers\\ContractsServiceProvider' => $vendorDir . '/nwidart/laravel-modules/src/Providers/ContractsServiceProvider.php', - 'Nwidart\\Modules\\Publishing\\AssetPublisher' => $vendorDir . '/nwidart/laravel-modules/src/Publishing/AssetPublisher.php', - 'Nwidart\\Modules\\Publishing\\LangPublisher' => $vendorDir . '/nwidart/laravel-modules/src/Publishing/LangPublisher.php', - 'Nwidart\\Modules\\Publishing\\MigrationPublisher' => $vendorDir . '/nwidart/laravel-modules/src/Publishing/MigrationPublisher.php', - 'Nwidart\\Modules\\Publishing\\Publisher' => $vendorDir . '/nwidart/laravel-modules/src/Publishing/Publisher.php', - 'Nwidart\\Modules\\Routing\\Controller' => $vendorDir . '/nwidart/laravel-modules/src/Routing/Controller.php', - 'Nwidart\\Modules\\Support\\Config\\GenerateConfigReader' => $vendorDir . '/nwidart/laravel-modules/src/Support/Config/GenerateConfigReader.php', - 'Nwidart\\Modules\\Support\\Config\\GeneratorPath' => $vendorDir . '/nwidart/laravel-modules/src/Support/Config/GeneratorPath.php', - 'Nwidart\\Modules\\Support\\Migrations\\NameParser' => $vendorDir . '/nwidart/laravel-modules/src/Support/Migrations/NameParser.php', - 'Nwidart\\Modules\\Support\\Migrations\\SchemaParser' => $vendorDir . '/nwidart/laravel-modules/src/Support/Migrations/SchemaParser.php', - 'Nwidart\\Modules\\Support\\Stub' => $vendorDir . '/nwidart/laravel-modules/src/Support/Stub.php', - 'Nwidart\\Modules\\Traits\\CanClearModulesCache' => $vendorDir . '/nwidart/laravel-modules/src/Traits/CanClearModulesCache.php', - 'Nwidart\\Modules\\Traits\\MigrationLoaderTrait' => $vendorDir . '/nwidart/laravel-modules/src/Traits/MigrationLoaderTrait.php', - 'Nwidart\\Modules\\Traits\\ModuleCommandTrait' => $vendorDir . '/nwidart/laravel-modules/src/Traits/ModuleCommandTrait.php', - 'Override' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/Override.php', - 'OwenIt\\Auditing\\Audit' => $vendorDir . '/owen-it/laravel-auditing/src/Audit.php', - 'OwenIt\\Auditing\\Auditable' => $vendorDir . '/owen-it/laravel-auditing/src/Auditable.php', - 'OwenIt\\Auditing\\AuditableObserver' => $vendorDir . '/owen-it/laravel-auditing/src/AuditableObserver.php', - 'OwenIt\\Auditing\\AuditingServiceProvider' => $vendorDir . '/owen-it/laravel-auditing/src/AuditingServiceProvider.php', - 'OwenIt\\Auditing\\Auditor' => $vendorDir . '/owen-it/laravel-auditing/src/Auditor.php', - 'OwenIt\\Auditing\\Console\\AuditDriverCommand' => $vendorDir . '/owen-it/laravel-auditing/src/Console/AuditDriverCommand.php', - 'OwenIt\\Auditing\\Console\\AuditResolverCommand' => $vendorDir . '/owen-it/laravel-auditing/src/Console/AuditResolverCommand.php', - 'OwenIt\\Auditing\\Console\\InstallCommand' => $vendorDir . '/owen-it/laravel-auditing/src/Console/InstallCommand.php', - 'OwenIt\\Auditing\\Contracts\\AttributeEncoder' => $vendorDir . '/owen-it/laravel-auditing/src/Contracts/AttributeEncoder.php', - 'OwenIt\\Auditing\\Contracts\\AttributeModifier' => $vendorDir . '/owen-it/laravel-auditing/src/Contracts/AttributeModifier.php', - 'OwenIt\\Auditing\\Contracts\\AttributeRedactor' => $vendorDir . '/owen-it/laravel-auditing/src/Contracts/AttributeRedactor.php', - 'OwenIt\\Auditing\\Contracts\\Audit' => $vendorDir . '/owen-it/laravel-auditing/src/Contracts/Audit.php', - 'OwenIt\\Auditing\\Contracts\\AuditDriver' => $vendorDir . '/owen-it/laravel-auditing/src/Contracts/AuditDriver.php', - 'OwenIt\\Auditing\\Contracts\\Auditable' => $vendorDir . '/owen-it/laravel-auditing/src/Contracts/Auditable.php', - 'OwenIt\\Auditing\\Contracts\\Auditor' => $vendorDir . '/owen-it/laravel-auditing/src/Contracts/Auditor.php', - 'OwenIt\\Auditing\\Contracts\\IpAddressResolver' => $vendorDir . '/owen-it/laravel-auditing/src/Contracts/IpAddressResolver.php', - 'OwenIt\\Auditing\\Contracts\\Resolver' => $vendorDir . '/owen-it/laravel-auditing/src/Contracts/Resolver.php', - 'OwenIt\\Auditing\\Contracts\\UrlResolver' => $vendorDir . '/owen-it/laravel-auditing/src/Contracts/UrlResolver.php', - 'OwenIt\\Auditing\\Contracts\\UserAgentResolver' => $vendorDir . '/owen-it/laravel-auditing/src/Contracts/UserAgentResolver.php', - 'OwenIt\\Auditing\\Contracts\\UserResolver' => $vendorDir . '/owen-it/laravel-auditing/src/Contracts/UserResolver.php', - 'OwenIt\\Auditing\\Drivers\\Database' => $vendorDir . '/owen-it/laravel-auditing/src/Drivers/Database.php', - 'OwenIt\\Auditing\\Encoders\\Base64Encoder' => $vendorDir . '/owen-it/laravel-auditing/src/Encoders/Base64Encoder.php', - 'OwenIt\\Auditing\\Events\\AuditCustom' => $vendorDir . '/owen-it/laravel-auditing/src/Events/AuditCustom.php', - 'OwenIt\\Auditing\\Events\\Audited' => $vendorDir . '/owen-it/laravel-auditing/src/Events/Audited.php', - 'OwenIt\\Auditing\\Events\\Auditing' => $vendorDir . '/owen-it/laravel-auditing/src/Events/Auditing.php', - 'OwenIt\\Auditing\\Events\\DispatchAudit' => $vendorDir . '/owen-it/laravel-auditing/src/Events/DispatchAudit.php', - 'OwenIt\\Auditing\\Events\\DispatchingAudit' => $vendorDir . '/owen-it/laravel-auditing/src/Events/DispatchingAudit.php', - 'OwenIt\\Auditing\\Exceptions\\AuditableTransitionException' => $vendorDir . '/owen-it/laravel-auditing/src/Exceptions/AuditableTransitionException.php', - 'OwenIt\\Auditing\\Exceptions\\AuditingException' => $vendorDir . '/owen-it/laravel-auditing/src/Exceptions/AuditingException.php', - 'OwenIt\\Auditing\\Facades\\Auditor' => $vendorDir . '/owen-it/laravel-auditing/src/Facades/Auditor.php', - 'OwenIt\\Auditing\\Listeners\\ProcessDispatchAudit' => $vendorDir . '/owen-it/laravel-auditing/src/Listeners/ProcessDispatchAudit.php', - 'OwenIt\\Auditing\\Listeners\\RecordCustomAudit' => $vendorDir . '/owen-it/laravel-auditing/src/Listeners/RecordCustomAudit.php', - 'OwenIt\\Auditing\\Models\\Audit' => $vendorDir . '/owen-it/laravel-auditing/src/Models/Audit.php', - 'OwenIt\\Auditing\\Redactors\\LeftRedactor' => $vendorDir . '/owen-it/laravel-auditing/src/Redactors/LeftRedactor.php', - 'OwenIt\\Auditing\\Redactors\\RightRedactor' => $vendorDir . '/owen-it/laravel-auditing/src/Redactors/RightRedactor.php', - 'OwenIt\\Auditing\\Resolvers\\DumpResolver' => $vendorDir . '/owen-it/laravel-auditing/src/Resolvers/DumpResolver.php', - 'OwenIt\\Auditing\\Resolvers\\IpAddressResolver' => $vendorDir . '/owen-it/laravel-auditing/src/Resolvers/IpAddressResolver.php', - 'OwenIt\\Auditing\\Resolvers\\UrlResolver' => $vendorDir . '/owen-it/laravel-auditing/src/Resolvers/UrlResolver.php', - 'OwenIt\\Auditing\\Resolvers\\UserAgentResolver' => $vendorDir . '/owen-it/laravel-auditing/src/Resolvers/UserAgentResolver.php', - 'OwenIt\\Auditing\\Resolvers\\UserResolver' => $vendorDir . '/owen-it/laravel-auditing/src/Resolvers/UserResolver.php', - 'PHPUnit\\Event\\Application\\Finished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Application/Finished.php', - 'PHPUnit\\Event\\Application\\FinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Application/FinishedSubscriber.php', - 'PHPUnit\\Event\\Application\\Started' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Application/Started.php', - 'PHPUnit\\Event\\Application\\StartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Application/StartedSubscriber.php', - 'PHPUnit\\Event\\Code\\ClassMethod' => $vendorDir . '/phpunit/phpunit/src/Event/Value/ClassMethod.php', - 'PHPUnit\\Event\\Code\\ComparisonFailure' => $vendorDir . '/phpunit/phpunit/src/Event/Value/ComparisonFailure.php', - 'PHPUnit\\Event\\Code\\ComparisonFailureBuilder' => $vendorDir . '/phpunit/phpunit/src/Event/Value/ComparisonFailureBuilder.php', - 'PHPUnit\\Event\\Code\\NoTestCaseObjectOnCallStackException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/NoTestCaseObjectOnCallStackException.php', - 'PHPUnit\\Event\\Code\\Phpt' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/Phpt.php', - 'PHPUnit\\Event\\Code\\Test' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/Test.php', - 'PHPUnit\\Event\\Code\\TestCollection' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/TestCollection.php', - 'PHPUnit\\Event\\Code\\TestCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/TestCollectionIterator.php', - 'PHPUnit\\Event\\Code\\TestDox' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/TestDox.php', - 'PHPUnit\\Event\\Code\\TestDoxBuilder' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/TestDoxBuilder.php', - 'PHPUnit\\Event\\Code\\TestMethod' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/TestMethod.php', - 'PHPUnit\\Event\\Code\\TestMethodBuilder' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/TestMethodBuilder.php', - 'PHPUnit\\Event\\Code\\Throwable' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Throwable.php', - 'PHPUnit\\Event\\Code\\ThrowableBuilder' => $vendorDir . '/phpunit/phpunit/src/Event/Value/ThrowableBuilder.php', - 'PHPUnit\\Event\\CollectingDispatcher' => $vendorDir . '/phpunit/phpunit/src/Event/Dispatcher/CollectingDispatcher.php', - 'PHPUnit\\Event\\DeferringDispatcher' => $vendorDir . '/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php', - 'PHPUnit\\Event\\DirectDispatcher' => $vendorDir . '/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php', - 'PHPUnit\\Event\\Dispatcher' => $vendorDir . '/phpunit/phpunit/src/Event/Dispatcher/Dispatcher.php', - 'PHPUnit\\Event\\DispatchingEmitter' => $vendorDir . '/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php', - 'PHPUnit\\Event\\Emitter' => $vendorDir . '/phpunit/phpunit/src/Event/Emitter/Emitter.php', - 'PHPUnit\\Event\\Event' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Event.php', - 'PHPUnit\\Event\\EventAlreadyAssignedException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/EventAlreadyAssignedException.php', - 'PHPUnit\\Event\\EventCollection' => $vendorDir . '/phpunit/phpunit/src/Event/Events/EventCollection.php', - 'PHPUnit\\Event\\EventCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/Event/Events/EventCollectionIterator.php', - 'PHPUnit\\Event\\EventFacadeIsSealedException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/EventFacadeIsSealedException.php', - 'PHPUnit\\Event\\Exception' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/Exception.php', - 'PHPUnit\\Event\\Facade' => $vendorDir . '/phpunit/phpunit/src/Event/Facade.php', - 'PHPUnit\\Event\\InvalidArgumentException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/InvalidArgumentException.php', - 'PHPUnit\\Event\\InvalidEventException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/InvalidEventException.php', - 'PHPUnit\\Event\\InvalidSubscriberException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/InvalidSubscriberException.php', - 'PHPUnit\\Event\\MapError' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/MapError.php', - 'PHPUnit\\Event\\NoPreviousThrowableException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/NoPreviousThrowableException.php', - 'PHPUnit\\Event\\RuntimeException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/RuntimeException.php', - 'PHPUnit\\Event\\Runtime\\OperatingSystem' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Runtime/OperatingSystem.php', - 'PHPUnit\\Event\\Runtime\\PHP' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Runtime/PHP.php', - 'PHPUnit\\Event\\Runtime\\PHPUnit' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Runtime/PHPUnit.php', - 'PHPUnit\\Event\\Runtime\\Runtime' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Runtime/Runtime.php', - 'PHPUnit\\Event\\SubscribableDispatcher' => $vendorDir . '/phpunit/phpunit/src/Event/Dispatcher/SubscribableDispatcher.php', - 'PHPUnit\\Event\\Subscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Subscriber.php', - 'PHPUnit\\Event\\SubscriberTypeAlreadyRegisteredException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/SubscriberTypeAlreadyRegisteredException.php', - 'PHPUnit\\Event\\Telemetry\\Duration' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/Duration.php', - 'PHPUnit\\Event\\Telemetry\\GarbageCollectorStatus' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/GarbageCollectorStatus.php', - 'PHPUnit\\Event\\Telemetry\\GarbageCollectorStatusProvider' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/GarbageCollectorStatusProvider.php', - 'PHPUnit\\Event\\Telemetry\\HRTime' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/HRTime.php', - 'PHPUnit\\Event\\Telemetry\\Info' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/Info.php', - 'PHPUnit\\Event\\Telemetry\\MemoryMeter' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/MemoryMeter.php', - 'PHPUnit\\Event\\Telemetry\\MemoryUsage' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/MemoryUsage.php', - 'PHPUnit\\Event\\Telemetry\\Php81GarbageCollectorStatusProvider' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/Php81GarbageCollectorStatusProvider.php', - 'PHPUnit\\Event\\Telemetry\\Php83GarbageCollectorStatusProvider' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/Php83GarbageCollectorStatusProvider.php', - 'PHPUnit\\Event\\Telemetry\\Snapshot' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/Snapshot.php', - 'PHPUnit\\Event\\Telemetry\\StopWatch' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/StopWatch.php', - 'PHPUnit\\Event\\Telemetry\\System' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/System.php', - 'PHPUnit\\Event\\Telemetry\\SystemMemoryMeter' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/SystemMemoryMeter.php', - 'PHPUnit\\Event\\Telemetry\\SystemStopWatch' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/SystemStopWatch.php', - 'PHPUnit\\Event\\Telemetry\\SystemStopWatchWithOffset' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/SystemStopWatchWithOffset.php', - 'PHPUnit\\Event\\TestData\\DataFromDataProvider' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/TestData/DataFromDataProvider.php', - 'PHPUnit\\Event\\TestData\\DataFromTestDependency' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/TestData/DataFromTestDependency.php', - 'PHPUnit\\Event\\TestData\\MoreThanOneDataSetFromDataProviderException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/MoreThanOneDataSetFromDataProviderException.php', - 'PHPUnit\\Event\\TestData\\NoDataSetFromDataProviderException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/NoDataSetFromDataProviderException.php', - 'PHPUnit\\Event\\TestData\\TestData' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/TestData/TestData.php', - 'PHPUnit\\Event\\TestData\\TestDataCollection' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/TestData/TestDataCollection.php', - 'PHPUnit\\Event\\TestData\\TestDataCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/TestData/TestDataCollectionIterator.php', - 'PHPUnit\\Event\\TestRunner\\BootstrapFinished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/BootstrapFinished.php', - 'PHPUnit\\Event\\TestRunner\\BootstrapFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/BootstrapFinishedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\Configured' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/Configured.php', - 'PHPUnit\\Event\\TestRunner\\ConfiguredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ConfiguredSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\DeprecationTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/DeprecationTriggered.php', - 'PHPUnit\\Event\\TestRunner\\DeprecationTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/DeprecationTriggeredSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\EventFacadeSealed' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/EventFacadeSealed.php', - 'PHPUnit\\Event\\TestRunner\\EventFacadeSealedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/EventFacadeSealedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\ExecutionAborted' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionAborted.php', - 'PHPUnit\\Event\\TestRunner\\ExecutionAbortedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionAbortedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\ExecutionFinished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionFinished.php', - 'PHPUnit\\Event\\TestRunner\\ExecutionFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionFinishedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\ExecutionStarted' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionStarted.php', - 'PHPUnit\\Event\\TestRunner\\ExecutionStartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionStartedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\ExtensionBootstrapped' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ExtensionBootstrapped.php', - 'PHPUnit\\Event\\TestRunner\\ExtensionBootstrappedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ExtensionBootstrappedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\ExtensionLoadedFromPhar' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ExtensionLoadedFromPhar.php', - 'PHPUnit\\Event\\TestRunner\\ExtensionLoadedFromPharSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ExtensionLoadedFromPharSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\Finished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/Finished.php', - 'PHPUnit\\Event\\TestRunner\\FinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/FinishedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\GarbageCollectionDisabled' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionDisabled.php', - 'PHPUnit\\Event\\TestRunner\\GarbageCollectionDisabledSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionDisabledSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\GarbageCollectionEnabled' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionEnabled.php', - 'PHPUnit\\Event\\TestRunner\\GarbageCollectionEnabledSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionEnabledSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\GarbageCollectionTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionTriggered.php', - 'PHPUnit\\Event\\TestRunner\\GarbageCollectionTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionTriggeredSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\Started' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/Started.php', - 'PHPUnit\\Event\\TestRunner\\StartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/StartedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\WarningTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/WarningTriggered.php', - 'PHPUnit\\Event\\TestRunner\\WarningTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/WarningTriggeredSubscriber.php', - 'PHPUnit\\Event\\TestSuite\\Filtered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestSuite/Filtered.php', - 'PHPUnit\\Event\\TestSuite\\FilteredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestSuite/FilteredSubscriber.php', - 'PHPUnit\\Event\\TestSuite\\Finished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestSuite/Finished.php', - 'PHPUnit\\Event\\TestSuite\\FinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestSuite/FinishedSubscriber.php', - 'PHPUnit\\Event\\TestSuite\\Loaded' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestSuite/Loaded.php', - 'PHPUnit\\Event\\TestSuite\\LoadedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestSuite/LoadedSubscriber.php', - 'PHPUnit\\Event\\TestSuite\\Skipped' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestSuite/Skipped.php', - 'PHPUnit\\Event\\TestSuite\\SkippedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestSuite/SkippedSubscriber.php', - 'PHPUnit\\Event\\TestSuite\\Sorted' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestSuite/Sorted.php', - 'PHPUnit\\Event\\TestSuite\\SortedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestSuite/SortedSubscriber.php', - 'PHPUnit\\Event\\TestSuite\\Started' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestSuite/Started.php', - 'PHPUnit\\Event\\TestSuite\\StartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestSuite/StartedSubscriber.php', - 'PHPUnit\\Event\\TestSuite\\TestSuite' => $vendorDir . '/phpunit/phpunit/src/Event/Value/TestSuite/TestSuite.php', - 'PHPUnit\\Event\\TestSuite\\TestSuiteBuilder' => $vendorDir . '/phpunit/phpunit/src/Event/Value/TestSuite/TestSuiteBuilder.php', - 'PHPUnit\\Event\\TestSuite\\TestSuiteForTestClass' => $vendorDir . '/phpunit/phpunit/src/Event/Value/TestSuite/TestSuiteForTestClass.php', - 'PHPUnit\\Event\\TestSuite\\TestSuiteForTestMethodWithDataProvider' => $vendorDir . '/phpunit/phpunit/src/Event/Value/TestSuite/TestSuiteForTestMethodWithDataProvider.php', - 'PHPUnit\\Event\\TestSuite\\TestSuiteWithName' => $vendorDir . '/phpunit/phpunit/src/Event/Value/TestSuite/TestSuiteWithName.php', - 'PHPUnit\\Event\\Test\\AfterLastTestMethodCalled' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodCalled.php', - 'PHPUnit\\Event\\Test\\AfterLastTestMethodCalledSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodCalledSubscriber.php', - 'PHPUnit\\Event\\Test\\AfterLastTestMethodFinished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodFinished.php', - 'PHPUnit\\Event\\Test\\AfterLastTestMethodFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodFinishedSubscriber.php', - 'PHPUnit\\Event\\Test\\AfterTestMethodCalled' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodCalled.php', - 'PHPUnit\\Event\\Test\\AfterTestMethodCalledSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodCalledSubscriber.php', - 'PHPUnit\\Event\\Test\\AfterTestMethodFinished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodFinished.php', - 'PHPUnit\\Event\\Test\\AfterTestMethodFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodFinishedSubscriber.php', - 'PHPUnit\\Event\\Test\\AssertionFailed' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Assertion/AssertionFailed.php', - 'PHPUnit\\Event\\Test\\AssertionFailedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Assertion/AssertionFailedSubscriber.php', - 'PHPUnit\\Event\\Test\\AssertionSucceeded' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Assertion/AssertionSucceeded.php', - 'PHPUnit\\Event\\Test\\AssertionSucceededSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Assertion/AssertionSucceededSubscriber.php', - 'PHPUnit\\Event\\Test\\BeforeFirstTestMethodCalled' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodCalled.php', - 'PHPUnit\\Event\\Test\\BeforeFirstTestMethodCalledSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodCalledSubscriber.php', - 'PHPUnit\\Event\\Test\\BeforeFirstTestMethodErrored' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodErrored.php', - 'PHPUnit\\Event\\Test\\BeforeFirstTestMethodErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodErroredSubscriber.php', - 'PHPUnit\\Event\\Test\\BeforeFirstTestMethodFinished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodFinished.php', - 'PHPUnit\\Event\\Test\\BeforeFirstTestMethodFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodFinishedSubscriber.php', - 'PHPUnit\\Event\\Test\\BeforeTestMethodCalled' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodCalled.php', - 'PHPUnit\\Event\\Test\\BeforeTestMethodCalledSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodCalledSubscriber.php', - 'PHPUnit\\Event\\Test\\BeforeTestMethodFinished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodFinished.php', - 'PHPUnit\\Event\\Test\\BeforeTestMethodFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodFinishedSubscriber.php', - 'PHPUnit\\Event\\Test\\ComparatorRegistered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/ComparatorRegistered.php', - 'PHPUnit\\Event\\Test\\ComparatorRegisteredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/ComparatorRegisteredSubscriber.php', - 'PHPUnit\\Event\\Test\\ConsideredRisky' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/ConsideredRisky.php', - 'PHPUnit\\Event\\Test\\ConsideredRiskySubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/ConsideredRiskySubscriber.php', - 'PHPUnit\\Event\\Test\\DataProviderMethodCalled' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodCalled.php', - 'PHPUnit\\Event\\Test\\DataProviderMethodCalledSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodCalledSubscriber.php', - 'PHPUnit\\Event\\Test\\DataProviderMethodFinished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodFinished.php', - 'PHPUnit\\Event\\Test\\DataProviderMethodFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodFinishedSubscriber.php', - 'PHPUnit\\Event\\Test\\DeprecationTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/DeprecationTriggered.php', - 'PHPUnit\\Event\\Test\\DeprecationTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/DeprecationTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\ErrorTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/ErrorTriggered.php', - 'PHPUnit\\Event\\Test\\ErrorTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/ErrorTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\Errored' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Outcome/Errored.php', - 'PHPUnit\\Event\\Test\\ErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Outcome/ErroredSubscriber.php', - 'PHPUnit\\Event\\Test\\Failed' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Outcome/Failed.php', - 'PHPUnit\\Event\\Test\\FailedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Outcome/FailedSubscriber.php', - 'PHPUnit\\Event\\Test\\Finished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/Finished.php', - 'PHPUnit\\Event\\Test\\FinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/FinishedSubscriber.php', - 'PHPUnit\\Event\\Test\\MarkedIncomplete' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Outcome/MarkedIncomplete.php', - 'PHPUnit\\Event\\Test\\MarkedIncompleteSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Outcome/MarkedIncompleteSubscriber.php', - 'PHPUnit\\Event\\Test\\MockObjectCreated' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectCreated.php', - 'PHPUnit\\Event\\Test\\MockObjectCreatedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\MockObjectForAbstractClassCreated' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForAbstractClassCreated.php', - 'PHPUnit\\Event\\Test\\MockObjectForAbstractClassCreatedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForAbstractClassCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\MockObjectForIntersectionOfInterfacesCreated' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForIntersectionOfInterfacesCreated.php', - 'PHPUnit\\Event\\Test\\MockObjectForIntersectionOfInterfacesCreatedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForIntersectionOfInterfacesCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\MockObjectForTraitCreated' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForTraitCreated.php', - 'PHPUnit\\Event\\Test\\MockObjectForTraitCreatedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForTraitCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\MockObjectFromWsdlCreated' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectFromWsdlCreated.php', - 'PHPUnit\\Event\\Test\\MockObjectFromWsdlCreatedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectFromWsdlCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\NoComparisonFailureException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/NoComparisonFailureException.php', - 'PHPUnit\\Event\\Test\\NoticeTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/NoticeTriggered.php', - 'PHPUnit\\Event\\Test\\NoticeTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/NoticeTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\PartialMockObjectCreated' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/PartialMockObjectCreated.php', - 'PHPUnit\\Event\\Test\\PartialMockObjectCreatedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/PartialMockObjectCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\Passed' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Outcome/Passed.php', - 'PHPUnit\\Event\\Test\\PassedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Outcome/PassedSubscriber.php', - 'PHPUnit\\Event\\Test\\PhpDeprecationTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpDeprecationTriggered.php', - 'PHPUnit\\Event\\Test\\PhpDeprecationTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpDeprecationTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\PhpNoticeTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpNoticeTriggered.php', - 'PHPUnit\\Event\\Test\\PhpNoticeTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpNoticeTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\PhpWarningTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpWarningTriggered.php', - 'PHPUnit\\Event\\Test\\PhpWarningTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpWarningTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\PhpunitDeprecationTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitDeprecationTriggered.php', - 'PHPUnit\\Event\\Test\\PhpunitDeprecationTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitDeprecationTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\PhpunitErrorTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitErrorTriggered.php', - 'PHPUnit\\Event\\Test\\PhpunitErrorTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitErrorTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\PhpunitWarningTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitWarningTriggered.php', - 'PHPUnit\\Event\\Test\\PhpunitWarningTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitWarningTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\PostConditionCalled' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionCalled.php', - 'PHPUnit\\Event\\Test\\PostConditionCalledSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionCalledSubscriber.php', - 'PHPUnit\\Event\\Test\\PostConditionFinished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionFinished.php', - 'PHPUnit\\Event\\Test\\PostConditionFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionFinishedSubscriber.php', - 'PHPUnit\\Event\\Test\\PreConditionCalled' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionCalled.php', - 'PHPUnit\\Event\\Test\\PreConditionCalledSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionCalledSubscriber.php', - 'PHPUnit\\Event\\Test\\PreConditionFinished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionFinished.php', - 'PHPUnit\\Event\\Test\\PreConditionFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionFinishedSubscriber.php', - 'PHPUnit\\Event\\Test\\PreparationFailed' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/PreparationFailed.php', - 'PHPUnit\\Event\\Test\\PreparationFailedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/PreparationFailedSubscriber.php', - 'PHPUnit\\Event\\Test\\PreparationStarted' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/PreparationStarted.php', - 'PHPUnit\\Event\\Test\\PreparationStartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/PreparationStartedSubscriber.php', - 'PHPUnit\\Event\\Test\\Prepared' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/Prepared.php', - 'PHPUnit\\Event\\Test\\PreparedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/PreparedSubscriber.php', - 'PHPUnit\\Event\\Test\\PrintedUnexpectedOutput' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/PrintedUnexpectedOutput.php', - 'PHPUnit\\Event\\Test\\PrintedUnexpectedOutputSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/PrintedUnexpectedOutputSubscriber.php', - 'PHPUnit\\Event\\Test\\Skipped' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Outcome/Skipped.php', - 'PHPUnit\\Event\\Test\\SkippedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Outcome/SkippedSubscriber.php', - 'PHPUnit\\Event\\Test\\TestProxyCreated' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestProxyCreated.php', - 'PHPUnit\\Event\\Test\\TestProxyCreatedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestProxyCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\TestStubCreated' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubCreated.php', - 'PHPUnit\\Event\\Test\\TestStubCreatedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\TestStubForIntersectionOfInterfacesCreated' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubForIntersectionOfInterfacesCreated.php', - 'PHPUnit\\Event\\Test\\TestStubForIntersectionOfInterfacesCreatedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubForIntersectionOfInterfacesCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\WarningTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/WarningTriggered.php', - 'PHPUnit\\Event\\Test\\WarningTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/WarningTriggeredSubscriber.php', - 'PHPUnit\\Event\\Tracer\\Tracer' => $vendorDir . '/phpunit/phpunit/src/Event/Tracer.php', - 'PHPUnit\\Event\\TypeMap' => $vendorDir . '/phpunit/phpunit/src/Event/TypeMap.php', - 'PHPUnit\\Event\\UnknownEventException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/UnknownEventException.php', - 'PHPUnit\\Event\\UnknownEventTypeException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/UnknownEventTypeException.php', - 'PHPUnit\\Event\\UnknownSubscriberException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/UnknownSubscriberException.php', - 'PHPUnit\\Event\\UnknownSubscriberTypeException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/UnknownSubscriberTypeException.php', - 'PHPUnit\\Exception' => $vendorDir . '/phpunit/phpunit/src/Exception.php', - 'PHPUnit\\Framework\\ActualValueIsNotAnObjectException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ActualValueIsNotAnObjectException.php', - 'PHPUnit\\Framework\\Assert' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert.php', - 'PHPUnit\\Framework\\AssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/AssertionFailedError.php', - 'PHPUnit\\Framework\\Attributes\\After' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/After.php', - 'PHPUnit\\Framework\\Attributes\\AfterClass' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/AfterClass.php', - 'PHPUnit\\Framework\\Attributes\\BackupGlobals' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/BackupGlobals.php', - 'PHPUnit\\Framework\\Attributes\\BackupStaticProperties' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/BackupStaticProperties.php', - 'PHPUnit\\Framework\\Attributes\\Before' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/Before.php', - 'PHPUnit\\Framework\\Attributes\\BeforeClass' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/BeforeClass.php', - 'PHPUnit\\Framework\\Attributes\\CodeCoverageIgnore' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/CodeCoverageIgnore.php', - 'PHPUnit\\Framework\\Attributes\\CoversClass' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/CoversClass.php', - 'PHPUnit\\Framework\\Attributes\\CoversFunction' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/CoversFunction.php', - 'PHPUnit\\Framework\\Attributes\\CoversNothing' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/CoversNothing.php', - 'PHPUnit\\Framework\\Attributes\\DataProvider' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/DataProvider.php', - 'PHPUnit\\Framework\\Attributes\\DataProviderExternal' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/DataProviderExternal.php', - 'PHPUnit\\Framework\\Attributes\\Depends' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/Depends.php', - 'PHPUnit\\Framework\\Attributes\\DependsExternal' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/DependsExternal.php', - 'PHPUnit\\Framework\\Attributes\\DependsExternalUsingDeepClone' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/DependsExternalUsingDeepClone.php', - 'PHPUnit\\Framework\\Attributes\\DependsExternalUsingShallowClone' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/DependsExternalUsingShallowClone.php', - 'PHPUnit\\Framework\\Attributes\\DependsOnClass' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/DependsOnClass.php', - 'PHPUnit\\Framework\\Attributes\\DependsOnClassUsingDeepClone' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/DependsOnClassUsingDeepClone.php', - 'PHPUnit\\Framework\\Attributes\\DependsOnClassUsingShallowClone' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/DependsOnClassUsingShallowClone.php', - 'PHPUnit\\Framework\\Attributes\\DependsUsingDeepClone' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/DependsUsingDeepClone.php', - 'PHPUnit\\Framework\\Attributes\\DependsUsingShallowClone' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/DependsUsingShallowClone.php', - 'PHPUnit\\Framework\\Attributes\\DoesNotPerformAssertions' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/DoesNotPerformAssertions.php', - 'PHPUnit\\Framework\\Attributes\\ExcludeGlobalVariableFromBackup' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/ExcludeGlobalVariableFromBackup.php', - 'PHPUnit\\Framework\\Attributes\\ExcludeStaticPropertyFromBackup' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/ExcludeStaticPropertyFromBackup.php', - 'PHPUnit\\Framework\\Attributes\\Group' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/Group.php', - 'PHPUnit\\Framework\\Attributes\\IgnoreClassForCodeCoverage' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/IgnoreClassForCodeCoverage.php', - 'PHPUnit\\Framework\\Attributes\\IgnoreDeprecations' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/IgnoreDeprecations.php', - 'PHPUnit\\Framework\\Attributes\\IgnoreFunctionForCodeCoverage' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/IgnoreFunctionForCodeCoverage.php', - 'PHPUnit\\Framework\\Attributes\\IgnoreMethodForCodeCoverage' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/IgnoreMethodForCodeCoverage.php', - 'PHPUnit\\Framework\\Attributes\\Large' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/Large.php', - 'PHPUnit\\Framework\\Attributes\\Medium' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/Medium.php', - 'PHPUnit\\Framework\\Attributes\\PostCondition' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/PostCondition.php', - 'PHPUnit\\Framework\\Attributes\\PreCondition' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/PreCondition.php', - 'PHPUnit\\Framework\\Attributes\\PreserveGlobalState' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/PreserveGlobalState.php', - 'PHPUnit\\Framework\\Attributes\\RequiresFunction' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/RequiresFunction.php', - 'PHPUnit\\Framework\\Attributes\\RequiresMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/RequiresMethod.php', - 'PHPUnit\\Framework\\Attributes\\RequiresOperatingSystem' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/RequiresOperatingSystem.php', - 'PHPUnit\\Framework\\Attributes\\RequiresOperatingSystemFamily' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/RequiresOperatingSystemFamily.php', - 'PHPUnit\\Framework\\Attributes\\RequiresPhp' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/RequiresPhp.php', - 'PHPUnit\\Framework\\Attributes\\RequiresPhpExtension' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/RequiresPhpExtension.php', - 'PHPUnit\\Framework\\Attributes\\RequiresPhpunit' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/RequiresPhpunit.php', - 'PHPUnit\\Framework\\Attributes\\RequiresSetting' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/RequiresSetting.php', - 'PHPUnit\\Framework\\Attributes\\RunClassInSeparateProcess' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/RunClassInSeparateProcess.php', - 'PHPUnit\\Framework\\Attributes\\RunInSeparateProcess' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/RunInSeparateProcess.php', - 'PHPUnit\\Framework\\Attributes\\RunTestsInSeparateProcesses' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/RunTestsInSeparateProcesses.php', - 'PHPUnit\\Framework\\Attributes\\Small' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/Small.php', - 'PHPUnit\\Framework\\Attributes\\Test' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/Test.php', - 'PHPUnit\\Framework\\Attributes\\TestDox' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/TestDox.php', - 'PHPUnit\\Framework\\Attributes\\TestWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/TestWith.php', - 'PHPUnit\\Framework\\Attributes\\TestWithJson' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/TestWithJson.php', - 'PHPUnit\\Framework\\Attributes\\Ticket' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/Ticket.php', - 'PHPUnit\\Framework\\Attributes\\UsesClass' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/UsesClass.php', - 'PHPUnit\\Framework\\Attributes\\UsesFunction' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/UsesFunction.php', - 'PHPUnit\\Framework\\Attributes\\WithoutErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/WithoutErrorHandler.php', - 'PHPUnit\\Framework\\CodeCoverageException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/CodeCoverageException.php', - 'PHPUnit\\Framework\\ComparisonMethodDoesNotAcceptParameterTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotAcceptParameterTypeException.php', - 'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareBoolReturnTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareBoolReturnTypeException.php', - 'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareExactlyOneParameterException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareExactlyOneParameterException.php', - 'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareParameterTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareParameterTypeException.php', - 'PHPUnit\\Framework\\ComparisonMethodDoesNotExistException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotExistException.php', - 'PHPUnit\\Framework\\Constraint\\ArrayHasKey' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Traversable/ArrayHasKey.php', - 'PHPUnit\\Framework\\Constraint\\BinaryOperator' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/BinaryOperator.php', - 'PHPUnit\\Framework\\Constraint\\Callback' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Callback.php', - 'PHPUnit\\Framework\\Constraint\\Constraint' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Constraint.php', - 'PHPUnit\\Framework\\Constraint\\Count' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/Count.php', - 'PHPUnit\\Framework\\Constraint\\DirectoryExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/DirectoryExists.php', - 'PHPUnit\\Framework\\Constraint\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception/Exception.php', - 'PHPUnit\\Framework\\Constraint\\ExceptionCode' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionCode.php', - 'PHPUnit\\Framework\\Constraint\\ExceptionMessageIsOrContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageIsOrContains.php', - 'PHPUnit\\Framework\\Constraint\\ExceptionMessageMatchesRegularExpression' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageMatchesRegularExpression.php', - 'PHPUnit\\Framework\\Constraint\\FileExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/FileExists.php', - 'PHPUnit\\Framework\\Constraint\\GreaterThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/GreaterThan.php', - 'PHPUnit\\Framework\\Constraint\\IsAnything' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php', - 'PHPUnit\\Framework\\Constraint\\IsEmpty' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/IsEmpty.php', - 'PHPUnit\\Framework\\Constraint\\IsEqual' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqual.php', - 'PHPUnit\\Framework\\Constraint\\IsEqualCanonicalizing' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualCanonicalizing.php', - 'PHPUnit\\Framework\\Constraint\\IsEqualIgnoringCase' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualIgnoringCase.php', - 'PHPUnit\\Framework\\Constraint\\IsEqualWithDelta' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualWithDelta.php', - 'PHPUnit\\Framework\\Constraint\\IsFalse' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Boolean/IsFalse.php', - 'PHPUnit\\Framework\\Constraint\\IsFinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Math/IsFinite.php', - 'PHPUnit\\Framework\\Constraint\\IsIdentical' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php', - 'PHPUnit\\Framework\\Constraint\\IsInfinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Math/IsInfinite.php', - 'PHPUnit\\Framework\\Constraint\\IsInstanceOf' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Type/IsInstanceOf.php', - 'PHPUnit\\Framework\\Constraint\\IsJson' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/IsJson.php', - 'PHPUnit\\Framework\\Constraint\\IsList' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Traversable/IsList.php', - 'PHPUnit\\Framework\\Constraint\\IsNan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Math/IsNan.php', - 'PHPUnit\\Framework\\Constraint\\IsNull' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Type/IsNull.php', - 'PHPUnit\\Framework\\Constraint\\IsReadable' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsReadable.php', - 'PHPUnit\\Framework\\Constraint\\IsTrue' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Boolean/IsTrue.php', - 'PHPUnit\\Framework\\Constraint\\IsType' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Type/IsType.php', - 'PHPUnit\\Framework\\Constraint\\IsWritable' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsWritable.php', - 'PHPUnit\\Framework\\Constraint\\JsonMatches' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php', - 'PHPUnit\\Framework\\Constraint\\LessThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/LessThan.php', - 'PHPUnit\\Framework\\Constraint\\LogicalAnd' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalAnd.php', - 'PHPUnit\\Framework\\Constraint\\LogicalNot' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalNot.php', - 'PHPUnit\\Framework\\Constraint\\LogicalOr' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalOr.php', - 'PHPUnit\\Framework\\Constraint\\LogicalXor' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalXor.php', - 'PHPUnit\\Framework\\Constraint\\ObjectEquals' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Object/ObjectEquals.php', - 'PHPUnit\\Framework\\Constraint\\ObjectHasProperty' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Object/ObjectHasProperty.php', - 'PHPUnit\\Framework\\Constraint\\Operator' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/Operator.php', - 'PHPUnit\\Framework\\Constraint\\RegularExpression' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/RegularExpression.php', - 'PHPUnit\\Framework\\Constraint\\SameSize' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/SameSize.php', - 'PHPUnit\\Framework\\Constraint\\StringContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/StringContains.php', - 'PHPUnit\\Framework\\Constraint\\StringEndsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/StringEndsWith.php', - 'PHPUnit\\Framework\\Constraint\\StringEqualsStringIgnoringLineEndings' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/StringEqualsStringIgnoringLineEndings.php', - 'PHPUnit\\Framework\\Constraint\\StringMatchesFormatDescription' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/StringMatchesFormatDescription.php', - 'PHPUnit\\Framework\\Constraint\\StringStartsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/StringStartsWith.php', - 'PHPUnit\\Framework\\Constraint\\TraversableContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContains.php', - 'PHPUnit\\Framework\\Constraint\\TraversableContainsEqual' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsEqual.php', - 'PHPUnit\\Framework\\Constraint\\TraversableContainsIdentical' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsIdentical.php', - 'PHPUnit\\Framework\\Constraint\\TraversableContainsOnly' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsOnly.php', - 'PHPUnit\\Framework\\Constraint\\UnaryOperator' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/UnaryOperator.php', - 'PHPUnit\\Framework\\DataProviderTestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/DataProviderTestSuite.php', - 'PHPUnit\\Framework\\EmptyStringException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/EmptyStringException.php', - 'PHPUnit\\Framework\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/Exception.php', - 'PHPUnit\\Framework\\ExecutionOrderDependency' => $vendorDir . '/phpunit/phpunit/src/Framework/ExecutionOrderDependency.php', - 'PHPUnit\\Framework\\ExpectationFailedException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ExpectationFailedException.php', - 'PHPUnit\\Framework\\GeneratorNotSupportedException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/GeneratorNotSupportedException.php', - 'PHPUnit\\Framework\\IncompleteTest' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/Incomplete/IncompleteTest.php', - 'PHPUnit\\Framework\\IncompleteTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/Incomplete/IncompleteTestError.php', - 'PHPUnit\\Framework\\InvalidArgumentException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/InvalidArgumentException.php', - 'PHPUnit\\Framework\\InvalidCoversTargetException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/InvalidCoversTargetException.php', - 'PHPUnit\\Framework\\InvalidDataProviderException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/InvalidDataProviderException.php', - 'PHPUnit\\Framework\\InvalidDependencyException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/InvalidDependencyException.php', - 'PHPUnit\\Framework\\MockObject\\BadMethodCallException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/BadMethodCallException.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\Identity' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/Identity.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\InvocationMocker' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/InvocationMocker.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\InvocationStubber' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/InvocationStubber.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\MethodNameMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/MethodNameMatch.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\ParametersMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/ParametersMatch.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\Stub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/Stub.php', - 'PHPUnit\\Framework\\MockObject\\CannotUseOnlyMethodsException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php', - 'PHPUnit\\Framework\\MockObject\\ConfigurableMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/ConfigurableMethod.php', - 'PHPUnit\\Framework\\MockObject\\DoubledCloneMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/DoubledCloneMethod.php', - 'PHPUnit\\Framework\\MockObject\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/Exception.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\CannotUseAddMethodsException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/CannotUseAddMethodsException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\ClassIsEnumerationException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ClassIsEnumerationException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\ClassIsFinalException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ClassIsFinalException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\ClassIsReadonlyException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ClassIsReadonlyException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\DuplicateMethodException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/DuplicateMethodException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/Exception.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\Generator' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Generator.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\InvalidMethodNameException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/InvalidMethodNameException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\MockClass' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockClass.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\MockMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockMethod.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\MockMethodSet' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockMethodSet.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\MockTrait' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockTrait.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\MockType' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockType.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\NameAlreadyInUseException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/NameAlreadyInUseException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\OriginalConstructorInvocationRequiredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/OriginalConstructorInvocationRequiredException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\ReflectionException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ReflectionException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\RuntimeException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/RuntimeException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\SoapExtensionNotAvailableException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/SoapExtensionNotAvailableException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\TemplateLoader' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/TemplateLoader.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\UnknownClassException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownClassException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\UnknownTraitException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownTraitException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\UnknownTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownTypeException.php', - 'PHPUnit\\Framework\\MockObject\\IncompatibleReturnValueException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php', - 'PHPUnit\\Framework\\MockObject\\Invocation' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Invocation.php', - 'PHPUnit\\Framework\\MockObject\\InvocationHandler' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/InvocationHandler.php', - 'PHPUnit\\Framework\\MockObject\\MatchBuilderNotFoundException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MatchBuilderNotFoundException.php', - 'PHPUnit\\Framework\\MockObject\\Matcher' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Matcher.php', - 'PHPUnit\\Framework\\MockObject\\MatcherAlreadyRegisteredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MatcherAlreadyRegisteredException.php', - 'PHPUnit\\Framework\\MockObject\\Method' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/Method.php', - 'PHPUnit\\Framework\\MockObject\\MethodCannotBeConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodCannotBeConfiguredException.php', - 'PHPUnit\\Framework\\MockObject\\MethodNameAlreadyConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameAlreadyConfiguredException.php', - 'PHPUnit\\Framework\\MockObject\\MethodNameConstraint' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/MethodNameConstraint.php', - 'PHPUnit\\Framework\\MockObject\\MethodNameNotConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameNotConfiguredException.php', - 'PHPUnit\\Framework\\MockObject\\MethodParametersAlreadyConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodParametersAlreadyConfiguredException.php', - 'PHPUnit\\Framework\\MockObject\\MockBuilder' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php', - 'PHPUnit\\Framework\\MockObject\\MockObject' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/MockObject.php', - 'PHPUnit\\Framework\\MockObject\\MockObjectApi' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/MockObjectApi.php', - 'PHPUnit\\Framework\\MockObject\\MockObjectInternal' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/MockObjectInternal.php', - 'PHPUnit\\Framework\\MockObject\\NeverReturningMethodException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/NeverReturningMethodException.php', - 'PHPUnit\\Framework\\MockObject\\NoMoreReturnValuesConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/NoMoreReturnValuesConfiguredException.php', - 'PHPUnit\\Framework\\MockObject\\ProxiedCloneMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/ProxiedCloneMethod.php', - 'PHPUnit\\Framework\\MockObject\\ReturnValueGenerator' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/ReturnValueGenerator.php', - 'PHPUnit\\Framework\\MockObject\\ReturnValueNotConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\AnyInvokedCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/AnyInvokedCount.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\AnyParameters' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/AnyParameters.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\InvocationOrder' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvocationOrder.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtLeastCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedAtLeastCount.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtLeastOnce' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedAtLeastOnce.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtMostCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedAtMostCount.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedCount.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\MethodName' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/MethodName.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\Parameters' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/Parameters.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\ParametersRule' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/ParametersRule.php', - 'PHPUnit\\Framework\\MockObject\\RuntimeException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/RuntimeException.php', - 'PHPUnit\\Framework\\MockObject\\Stub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/Stub.php', - 'PHPUnit\\Framework\\MockObject\\StubApi' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/StubApi.php', - 'PHPUnit\\Framework\\MockObject\\StubInternal' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/StubInternal.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ConsecutiveCalls' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ConsecutiveCalls.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/Exception.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnArgument' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnArgument.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnCallback' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnCallback.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnReference' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnReference.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnSelf' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnSelf.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnStub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnStub.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnValueMap' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnValueMap.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\Stub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/Stub.php', - 'PHPUnit\\Framework\\NoChildTestSuiteException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/NoChildTestSuiteException.php', - 'PHPUnit\\Framework\\PhptAssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/PhptAssertionFailedError.php', - 'PHPUnit\\Framework\\ProcessIsolationException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ProcessIsolationException.php', - 'PHPUnit\\Framework\\Reorderable' => $vendorDir . '/phpunit/phpunit/src/Framework/Reorderable.php', - 'PHPUnit\\Framework\\SelfDescribing' => $vendorDir . '/phpunit/phpunit/src/Framework/SelfDescribing.php', - 'PHPUnit\\Framework\\SkippedTest' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/Skipped/SkippedTest.php', - 'PHPUnit\\Framework\\SkippedTestSuiteError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/Skipped/SkippedTestSuiteError.php', - 'PHPUnit\\Framework\\SkippedWithMessageException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/Skipped/SkippedWithMessageException.php', - 'PHPUnit\\Framework\\Test' => $vendorDir . '/phpunit/phpunit/src/Framework/Test.php', - 'PHPUnit\\Framework\\TestBuilder' => $vendorDir . '/phpunit/phpunit/src/Framework/TestBuilder.php', - 'PHPUnit\\Framework\\TestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/TestCase.php', - 'PHPUnit\\Framework\\TestRunner' => $vendorDir . '/phpunit/phpunit/src/Framework/TestRunner.php', - 'PHPUnit\\Framework\\TestSize\\Known' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSize/Known.php', - 'PHPUnit\\Framework\\TestSize\\Large' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSize/Large.php', - 'PHPUnit\\Framework\\TestSize\\Medium' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSize/Medium.php', - 'PHPUnit\\Framework\\TestSize\\Small' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSize/Small.php', - 'PHPUnit\\Framework\\TestSize\\TestSize' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSize/TestSize.php', - 'PHPUnit\\Framework\\TestSize\\Unknown' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSize/Unknown.php', - 'PHPUnit\\Framework\\TestStatus\\Deprecation' => $vendorDir . '/phpunit/phpunit/src/Framework/TestStatus/Deprecation.php', - 'PHPUnit\\Framework\\TestStatus\\Error' => $vendorDir . '/phpunit/phpunit/src/Framework/TestStatus/Error.php', - 'PHPUnit\\Framework\\TestStatus\\Failure' => $vendorDir . '/phpunit/phpunit/src/Framework/TestStatus/Failure.php', - 'PHPUnit\\Framework\\TestStatus\\Incomplete' => $vendorDir . '/phpunit/phpunit/src/Framework/TestStatus/Incomplete.php', - 'PHPUnit\\Framework\\TestStatus\\Known' => $vendorDir . '/phpunit/phpunit/src/Framework/TestStatus/Known.php', - 'PHPUnit\\Framework\\TestStatus\\Notice' => $vendorDir . '/phpunit/phpunit/src/Framework/TestStatus/Notice.php', - 'PHPUnit\\Framework\\TestStatus\\Risky' => $vendorDir . '/phpunit/phpunit/src/Framework/TestStatus/Risky.php', - 'PHPUnit\\Framework\\TestStatus\\Skipped' => $vendorDir . '/phpunit/phpunit/src/Framework/TestStatus/Skipped.php', - 'PHPUnit\\Framework\\TestStatus\\Success' => $vendorDir . '/phpunit/phpunit/src/Framework/TestStatus/Success.php', - 'PHPUnit\\Framework\\TestStatus\\TestStatus' => $vendorDir . '/phpunit/phpunit/src/Framework/TestStatus/TestStatus.php', - 'PHPUnit\\Framework\\TestStatus\\Unknown' => $vendorDir . '/phpunit/phpunit/src/Framework/TestStatus/Unknown.php', - 'PHPUnit\\Framework\\TestStatus\\Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/TestStatus/Warning.php', - 'PHPUnit\\Framework\\TestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite.php', - 'PHPUnit\\Framework\\TestSuiteIterator' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuiteIterator.php', - 'PHPUnit\\Framework\\UnknownClassOrInterfaceException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/UnknownClassOrInterfaceException.php', - 'PHPUnit\\Framework\\UnknownTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/UnknownTypeException.php', - 'PHPUnit\\Logging\\EventLogger' => $vendorDir . '/phpunit/phpunit/src/Logging/EventLogger.php', - 'PHPUnit\\Logging\\JUnit\\JunitXmlLogger' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/JunitXmlLogger.php', - 'PHPUnit\\Logging\\JUnit\\Subscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/Subscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestErroredSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestFailedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestFailedSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestFinishedSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestMarkedIncompleteSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestMarkedIncompleteSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestPreparationFailedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestPreparationFailedSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestPreparationStartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestPreparationStartedSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestPreparedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestPreparedSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestRunnerExecutionFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestRunnerExecutionFinishedSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestSkippedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestSkippedSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestSuiteFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestSuiteFinishedSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestSuiteStartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestSuiteStartedSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\Subscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/Subscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TeamCityLogger' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/TeamCityLogger.php', - 'PHPUnit\\Logging\\TeamCity\\TestConsideredRiskySubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestConsideredRiskySubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestErroredSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestFailedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestFailedSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestFinishedSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestMarkedIncompleteSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestMarkedIncompleteSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestPreparedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestPreparedSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestRunnerExecutionFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestRunnerExecutionFinishedSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestSkippedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSkippedSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestSuiteBeforeFirstTestMethodErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSuiteBeforeFirstTestMethodErroredSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestSuiteFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSuiteFinishedSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestSuiteSkippedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSuiteSkippedSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestSuiteStartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSuiteStartedSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\HtmlRenderer' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/HtmlRenderer.php', - 'PHPUnit\\Logging\\TestDox\\NamePrettifier' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/NamePrettifier.php', - 'PHPUnit\\Logging\\TestDox\\PlainTextRenderer' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/PlainTextRenderer.php', - 'PHPUnit\\Logging\\TestDox\\Subscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/Subscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestConsideredRiskySubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestConsideredRiskySubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestErroredSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestFailedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestFailedSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestFinishedSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestMarkedIncompleteSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestMarkedIncompleteSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestPassedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestPassedSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestPreparedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestPreparedSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestResult' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResult.php', - 'PHPUnit\\Logging\\TestDox\\TestResultCollection' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollection.php', - 'PHPUnit\\Logging\\TestDox\\TestResultCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollectionIterator.php', - 'PHPUnit\\Logging\\TestDox\\TestResultCollector' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollector.php', - 'PHPUnit\\Logging\\TestDox\\TestSkippedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestSkippedSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredDeprecationSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredNoticeSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredNoticeSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpDeprecationSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpNoticeSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpNoticeSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpWarningSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpunitDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpunitErrorSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitErrorSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpunitWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitWarningSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredWarningSubscriber.php', - 'PHPUnit\\Metadata\\After' => $vendorDir . '/phpunit/phpunit/src/Metadata/After.php', - 'PHPUnit\\Metadata\\AfterClass' => $vendorDir . '/phpunit/phpunit/src/Metadata/AfterClass.php', - 'PHPUnit\\Metadata\\Annotation\\Parser\\DocBlock' => $vendorDir . '/phpunit/phpunit/src/Metadata/Parser/Annotation/DocBlock.php', - 'PHPUnit\\Metadata\\Annotation\\Parser\\Registry' => $vendorDir . '/phpunit/phpunit/src/Metadata/Parser/Annotation/Registry.php', - 'PHPUnit\\Metadata\\AnnotationsAreNotSupportedForInternalClassesException' => $vendorDir . '/phpunit/phpunit/src/Metadata/Exception/AnnotationsAreNotSupportedForInternalClassesException.php', - 'PHPUnit\\Metadata\\Api\\CodeCoverage' => $vendorDir . '/phpunit/phpunit/src/Metadata/Api/CodeCoverage.php', - 'PHPUnit\\Metadata\\Api\\DataProvider' => $vendorDir . '/phpunit/phpunit/src/Metadata/Api/DataProvider.php', - 'PHPUnit\\Metadata\\Api\\Dependencies' => $vendorDir . '/phpunit/phpunit/src/Metadata/Api/Dependencies.php', - 'PHPUnit\\Metadata\\Api\\Groups' => $vendorDir . '/phpunit/phpunit/src/Metadata/Api/Groups.php', - 'PHPUnit\\Metadata\\Api\\HookMethods' => $vendorDir . '/phpunit/phpunit/src/Metadata/Api/HookMethods.php', - 'PHPUnit\\Metadata\\Api\\Requirements' => $vendorDir . '/phpunit/phpunit/src/Metadata/Api/Requirements.php', - 'PHPUnit\\Metadata\\BackupGlobals' => $vendorDir . '/phpunit/phpunit/src/Metadata/BackupGlobals.php', - 'PHPUnit\\Metadata\\BackupStaticProperties' => $vendorDir . '/phpunit/phpunit/src/Metadata/BackupStaticProperties.php', - 'PHPUnit\\Metadata\\Before' => $vendorDir . '/phpunit/phpunit/src/Metadata/Before.php', - 'PHPUnit\\Metadata\\BeforeClass' => $vendorDir . '/phpunit/phpunit/src/Metadata/BeforeClass.php', - 'PHPUnit\\Metadata\\Covers' => $vendorDir . '/phpunit/phpunit/src/Metadata/Covers.php', - 'PHPUnit\\Metadata\\CoversClass' => $vendorDir . '/phpunit/phpunit/src/Metadata/CoversClass.php', - 'PHPUnit\\Metadata\\CoversDefaultClass' => $vendorDir . '/phpunit/phpunit/src/Metadata/CoversDefaultClass.php', - 'PHPUnit\\Metadata\\CoversFunction' => $vendorDir . '/phpunit/phpunit/src/Metadata/CoversFunction.php', - 'PHPUnit\\Metadata\\CoversNothing' => $vendorDir . '/phpunit/phpunit/src/Metadata/CoversNothing.php', - 'PHPUnit\\Metadata\\DataProvider' => $vendorDir . '/phpunit/phpunit/src/Metadata/DataProvider.php', - 'PHPUnit\\Metadata\\DependsOnClass' => $vendorDir . '/phpunit/phpunit/src/Metadata/DependsOnClass.php', - 'PHPUnit\\Metadata\\DependsOnMethod' => $vendorDir . '/phpunit/phpunit/src/Metadata/DependsOnMethod.php', - 'PHPUnit\\Metadata\\DoesNotPerformAssertions' => $vendorDir . '/phpunit/phpunit/src/Metadata/DoesNotPerformAssertions.php', - 'PHPUnit\\Metadata\\Exception' => $vendorDir . '/phpunit/phpunit/src/Metadata/Exception/Exception.php', - 'PHPUnit\\Metadata\\ExcludeGlobalVariableFromBackup' => $vendorDir . '/phpunit/phpunit/src/Metadata/ExcludeGlobalVariableFromBackup.php', - 'PHPUnit\\Metadata\\ExcludeStaticPropertyFromBackup' => $vendorDir . '/phpunit/phpunit/src/Metadata/ExcludeStaticPropertyFromBackup.php', - 'PHPUnit\\Metadata\\Group' => $vendorDir . '/phpunit/phpunit/src/Metadata/Group.php', - 'PHPUnit\\Metadata\\IgnoreClassForCodeCoverage' => $vendorDir . '/phpunit/phpunit/src/Metadata/IgnoreClassForCodeCoverage.php', - 'PHPUnit\\Metadata\\IgnoreDeprecations' => $vendorDir . '/phpunit/phpunit/src/Metadata/IgnoreDeprecations.php', - 'PHPUnit\\Metadata\\IgnoreFunctionForCodeCoverage' => $vendorDir . '/phpunit/phpunit/src/Metadata/IgnoreFunctionForCodeCoverage.php', - 'PHPUnit\\Metadata\\IgnoreMethodForCodeCoverage' => $vendorDir . '/phpunit/phpunit/src/Metadata/IgnoreMethodForCodeCoverage.php', - 'PHPUnit\\Metadata\\InvalidVersionRequirementException' => $vendorDir . '/phpunit/phpunit/src/Metadata/Exception/InvalidVersionRequirementException.php', - 'PHPUnit\\Metadata\\Metadata' => $vendorDir . '/phpunit/phpunit/src/Metadata/Metadata.php', - 'PHPUnit\\Metadata\\MetadataCollection' => $vendorDir . '/phpunit/phpunit/src/Metadata/MetadataCollection.php', - 'PHPUnit\\Metadata\\MetadataCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/Metadata/MetadataCollectionIterator.php', - 'PHPUnit\\Metadata\\NoVersionRequirementException' => $vendorDir . '/phpunit/phpunit/src/Metadata/Exception/NoVersionRequirementException.php', - 'PHPUnit\\Metadata\\Parser\\AnnotationParser' => $vendorDir . '/phpunit/phpunit/src/Metadata/Parser/AnnotationParser.php', - 'PHPUnit\\Metadata\\Parser\\AttributeParser' => $vendorDir . '/phpunit/phpunit/src/Metadata/Parser/AttributeParser.php', - 'PHPUnit\\Metadata\\Parser\\CachingParser' => $vendorDir . '/phpunit/phpunit/src/Metadata/Parser/CachingParser.php', - 'PHPUnit\\Metadata\\Parser\\Parser' => $vendorDir . '/phpunit/phpunit/src/Metadata/Parser/Parser.php', - 'PHPUnit\\Metadata\\Parser\\ParserChain' => $vendorDir . '/phpunit/phpunit/src/Metadata/Parser/ParserChain.php', - 'PHPUnit\\Metadata\\Parser\\Registry' => $vendorDir . '/phpunit/phpunit/src/Metadata/Parser/Registry.php', - 'PHPUnit\\Metadata\\PostCondition' => $vendorDir . '/phpunit/phpunit/src/Metadata/PostCondition.php', - 'PHPUnit\\Metadata\\PreCondition' => $vendorDir . '/phpunit/phpunit/src/Metadata/PreCondition.php', - 'PHPUnit\\Metadata\\PreserveGlobalState' => $vendorDir . '/phpunit/phpunit/src/Metadata/PreserveGlobalState.php', - 'PHPUnit\\Metadata\\ReflectionException' => $vendorDir . '/phpunit/phpunit/src/Metadata/Exception/ReflectionException.php', - 'PHPUnit\\Metadata\\RequiresFunction' => $vendorDir . '/phpunit/phpunit/src/Metadata/RequiresFunction.php', - 'PHPUnit\\Metadata\\RequiresMethod' => $vendorDir . '/phpunit/phpunit/src/Metadata/RequiresMethod.php', - 'PHPUnit\\Metadata\\RequiresOperatingSystem' => $vendorDir . '/phpunit/phpunit/src/Metadata/RequiresOperatingSystem.php', - 'PHPUnit\\Metadata\\RequiresOperatingSystemFamily' => $vendorDir . '/phpunit/phpunit/src/Metadata/RequiresOperatingSystemFamily.php', - 'PHPUnit\\Metadata\\RequiresPhp' => $vendorDir . '/phpunit/phpunit/src/Metadata/RequiresPhp.php', - 'PHPUnit\\Metadata\\RequiresPhpExtension' => $vendorDir . '/phpunit/phpunit/src/Metadata/RequiresPhpExtension.php', - 'PHPUnit\\Metadata\\RequiresPhpunit' => $vendorDir . '/phpunit/phpunit/src/Metadata/RequiresPhpunit.php', - 'PHPUnit\\Metadata\\RequiresSetting' => $vendorDir . '/phpunit/phpunit/src/Metadata/RequiresSetting.php', - 'PHPUnit\\Metadata\\RunClassInSeparateProcess' => $vendorDir . '/phpunit/phpunit/src/Metadata/RunClassInSeparateProcess.php', - 'PHPUnit\\Metadata\\RunInSeparateProcess' => $vendorDir . '/phpunit/phpunit/src/Metadata/RunInSeparateProcess.php', - 'PHPUnit\\Metadata\\RunTestsInSeparateProcesses' => $vendorDir . '/phpunit/phpunit/src/Metadata/RunTestsInSeparateProcesses.php', - 'PHPUnit\\Metadata\\Test' => $vendorDir . '/phpunit/phpunit/src/Metadata/Test.php', - 'PHPUnit\\Metadata\\TestDox' => $vendorDir . '/phpunit/phpunit/src/Metadata/TestDox.php', - 'PHPUnit\\Metadata\\TestWith' => $vendorDir . '/phpunit/phpunit/src/Metadata/TestWith.php', - 'PHPUnit\\Metadata\\Uses' => $vendorDir . '/phpunit/phpunit/src/Metadata/Uses.php', - 'PHPUnit\\Metadata\\UsesClass' => $vendorDir . '/phpunit/phpunit/src/Metadata/UsesClass.php', - 'PHPUnit\\Metadata\\UsesDefaultClass' => $vendorDir . '/phpunit/phpunit/src/Metadata/UsesDefaultClass.php', - 'PHPUnit\\Metadata\\UsesFunction' => $vendorDir . '/phpunit/phpunit/src/Metadata/UsesFunction.php', - 'PHPUnit\\Metadata\\Version\\ComparisonRequirement' => $vendorDir . '/phpunit/phpunit/src/Metadata/Version/ComparisonRequirement.php', - 'PHPUnit\\Metadata\\Version\\ConstraintRequirement' => $vendorDir . '/phpunit/phpunit/src/Metadata/Version/ConstraintRequirement.php', - 'PHPUnit\\Metadata\\Version\\Requirement' => $vendorDir . '/phpunit/phpunit/src/Metadata/Version/Requirement.php', - 'PHPUnit\\Metadata\\WithoutErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Metadata/WithoutErrorHandler.php', - 'PHPUnit\\Runner\\Baseline\\Baseline' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Baseline.php', - 'PHPUnit\\Runner\\Baseline\\CannotLoadBaselineException' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Exception/CannotLoadBaselineException.php', - 'PHPUnit\\Runner\\Baseline\\FileDoesNotHaveLineException' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Exception/FileDoesNotHaveLineException.php', - 'PHPUnit\\Runner\\Baseline\\Generator' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Generator.php', - 'PHPUnit\\Runner\\Baseline\\Issue' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Issue.php', - 'PHPUnit\\Runner\\Baseline\\Reader' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Reader.php', - 'PHPUnit\\Runner\\Baseline\\RelativePathCalculator' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/RelativePathCalculator.php', - 'PHPUnit\\Runner\\Baseline\\Subscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/Subscriber.php', - 'PHPUnit\\Runner\\Baseline\\TestTriggeredDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredDeprecationSubscriber.php', - 'PHPUnit\\Runner\\Baseline\\TestTriggeredNoticeSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredNoticeSubscriber.php', - 'PHPUnit\\Runner\\Baseline\\TestTriggeredPhpDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpDeprecationSubscriber.php', - 'PHPUnit\\Runner\\Baseline\\TestTriggeredPhpNoticeSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpNoticeSubscriber.php', - 'PHPUnit\\Runner\\Baseline\\TestTriggeredPhpWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpWarningSubscriber.php', - 'PHPUnit\\Runner\\Baseline\\TestTriggeredWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredWarningSubscriber.php', - 'PHPUnit\\Runner\\Baseline\\Writer' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Writer.php', - 'PHPUnit\\Runner\\ClassCannotBeFoundException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/ClassCannotBeFoundException.php', - 'PHPUnit\\Runner\\ClassDoesNotExtendTestCaseException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/ClassDoesNotExtendTestCaseException.php', - 'PHPUnit\\Runner\\ClassIsAbstractException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/ClassIsAbstractException.php', - 'PHPUnit\\Runner\\CodeCoverage' => $vendorDir . '/phpunit/phpunit/src/Runner/CodeCoverage.php', - 'PHPUnit\\Runner\\DirectoryDoesNotExistException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/DirectoryDoesNotExistException.php', - 'PHPUnit\\Runner\\ErrorException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/ErrorException.php', - 'PHPUnit\\Runner\\ErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Runner/ErrorHandler.php', - 'PHPUnit\\Runner\\Exception' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/Exception.php', - 'PHPUnit\\Runner\\Extension\\Extension' => $vendorDir . '/phpunit/phpunit/src/Runner/Extension/Extension.php', - 'PHPUnit\\Runner\\Extension\\ExtensionBootstrapper' => $vendorDir . '/phpunit/phpunit/src/Runner/Extension/ExtensionBootstrapper.php', - 'PHPUnit\\Runner\\Extension\\Facade' => $vendorDir . '/phpunit/phpunit/src/Runner/Extension/Facade.php', - 'PHPUnit\\Runner\\Extension\\ParameterCollection' => $vendorDir . '/phpunit/phpunit/src/Runner/Extension/ParameterCollection.php', - 'PHPUnit\\Runner\\Extension\\PharLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/Extension/PharLoader.php', - 'PHPUnit\\Runner\\FileDoesNotExistException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/FileDoesNotExistException.php', - 'PHPUnit\\Runner\\Filter\\ExcludeGroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php', - 'PHPUnit\\Runner\\Filter\\Factory' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Factory.php', - 'PHPUnit\\Runner\\Filter\\GroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php', - 'PHPUnit\\Runner\\Filter\\IncludeGroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php', - 'PHPUnit\\Runner\\Filter\\NameFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php', - 'PHPUnit\\Runner\\Filter\\TestIdFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/TestIdFilterIterator.php', - 'PHPUnit\\Runner\\GarbageCollection\\ExecutionFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/ExecutionFinishedSubscriber.php', - 'PHPUnit\\Runner\\GarbageCollection\\ExecutionStartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/ExecutionStartedSubscriber.php', - 'PHPUnit\\Runner\\GarbageCollection\\GarbageCollectionHandler' => $vendorDir . '/phpunit/phpunit/src/Runner/GarbageCollection/GarbageCollectionHandler.php', - 'PHPUnit\\Runner\\GarbageCollection\\Subscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/Subscriber.php', - 'PHPUnit\\Runner\\GarbageCollection\\TestFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/TestFinishedSubscriber.php', - 'PHPUnit\\Runner\\InvalidOrderException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/InvalidOrderException.php', - 'PHPUnit\\Runner\\InvalidPhptFileException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/InvalidPhptFileException.php', - 'PHPUnit\\Runner\\ParameterDoesNotExistException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/ParameterDoesNotExistException.php', - 'PHPUnit\\Runner\\PhptExternalFileCannotBeLoadedException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/PhptExternalFileCannotBeLoadedException.php', - 'PHPUnit\\Runner\\PhptTestCase' => $vendorDir . '/phpunit/phpunit/src/Runner/PhptTestCase.php', - 'PHPUnit\\Runner\\ResultCache\\DefaultResultCache' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/DefaultResultCache.php', - 'PHPUnit\\Runner\\ResultCache\\NullResultCache' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/NullResultCache.php', - 'PHPUnit\\Runner\\ResultCache\\ResultCache' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/ResultCache.php', - 'PHPUnit\\Runner\\ResultCache\\ResultCacheHandler' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/ResultCacheHandler.php', - 'PHPUnit\\Runner\\ResultCache\\Subscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/Subscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestConsideredRiskySubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestConsideredRiskySubscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestErroredSubscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestFailedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestFailedSubscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestFinishedSubscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestMarkedIncompleteSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestMarkedIncompleteSubscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestPreparedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestPreparedSubscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestSkippedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestSkippedSubscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestSuiteFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestSuiteFinishedSubscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestSuiteStartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestSuiteStartedSubscriber.php', - 'PHPUnit\\Runner\\TestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php', - 'PHPUnit\\Runner\\TestSuiteSorter' => $vendorDir . '/phpunit/phpunit/src/Runner/TestSuiteSorter.php', - 'PHPUnit\\Runner\\UnsupportedPhptSectionException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/UnsupportedPhptSectionException.php', - 'PHPUnit\\Runner\\Version' => $vendorDir . '/phpunit/phpunit/src/Runner/Version.php', - 'PHPUnit\\TestRunner\\TestResult\\BeforeTestClassMethodErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/BeforeTestClassMethodErroredSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\Collector' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Collector.php', - 'PHPUnit\\TestRunner\\TestResult\\ExecutionStartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/ExecutionStartedSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\Facade' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Facade.php', - 'PHPUnit\\TestRunner\\TestResult\\Issues\\Issue' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Issue.php', - 'PHPUnit\\TestRunner\\TestResult\\PassedTests' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/PassedTests.php', - 'PHPUnit\\TestRunner\\TestResult\\Subscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/Subscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestConsideredRiskySubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestConsideredRiskySubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestErroredSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestFailedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestFailedSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestFinishedSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestMarkedIncompleteSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestMarkedIncompleteSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestPreparedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestPreparedSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestResult' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/TestResult.php', - 'PHPUnit\\TestRunner\\TestResult\\TestRunnerTriggeredDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestRunnerTriggeredDeprecationSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestRunnerTriggeredWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestRunnerTriggeredWarningSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestSkippedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSkippedSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestSuiteFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSuiteFinishedSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestSuiteSkippedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSuiteSkippedSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestSuiteStartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSuiteStartedSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredDeprecationSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredErrorSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredErrorSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredNoticeSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredNoticeSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredPhpDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpDeprecationSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredPhpNoticeSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpNoticeSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredPhpWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpWarningSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredPhpunitDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredPhpunitErrorSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpunitErrorSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredPhpunitWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpunitWarningSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredWarningSubscriber.php', - 'PHPUnit\\TextUI\\Application' => $vendorDir . '/phpunit/phpunit/src/TextUI/Application.php', - 'PHPUnit\\TextUI\\CannotOpenSocketException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/CannotOpenSocketException.php', - 'PHPUnit\\TextUI\\CliArguments\\Builder' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Cli/Builder.php', - 'PHPUnit\\TextUI\\CliArguments\\Configuration' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Cli/Configuration.php', - 'PHPUnit\\TextUI\\CliArguments\\Exception' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Cli/Exception.php', - 'PHPUnit\\TextUI\\CliArguments\\XmlConfigurationFileFinder' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Cli/XmlConfigurationFileFinder.php', - 'PHPUnit\\TextUI\\Command\\AtLeastVersionCommand' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Commands/AtLeastVersionCommand.php', - 'PHPUnit\\TextUI\\Command\\Command' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Command.php', - 'PHPUnit\\TextUI\\Command\\GenerateConfigurationCommand' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Commands/GenerateConfigurationCommand.php', - 'PHPUnit\\TextUI\\Command\\ListGroupsCommand' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Commands/ListGroupsCommand.php', - 'PHPUnit\\TextUI\\Command\\ListTestSuitesCommand' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Commands/ListTestSuitesCommand.php', - 'PHPUnit\\TextUI\\Command\\ListTestsAsTextCommand' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Commands/ListTestsAsTextCommand.php', - 'PHPUnit\\TextUI\\Command\\ListTestsAsXmlCommand' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Commands/ListTestsAsXmlCommand.php', - 'PHPUnit\\TextUI\\Command\\MigrateConfigurationCommand' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Commands/MigrateConfigurationCommand.php', - 'PHPUnit\\TextUI\\Command\\Result' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Result.php', - 'PHPUnit\\TextUI\\Command\\ShowHelpCommand' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Commands/ShowHelpCommand.php', - 'PHPUnit\\TextUI\\Command\\ShowVersionCommand' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Commands/ShowVersionCommand.php', - 'PHPUnit\\TextUI\\Command\\VersionCheckCommand' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Commands/VersionCheckCommand.php', - 'PHPUnit\\TextUI\\Command\\WarmCodeCoverageCacheCommand' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Commands/WarmCodeCoverageCacheCommand.php', - 'PHPUnit\\TextUI\\Configuration\\Builder' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Builder.php', - 'PHPUnit\\TextUI\\Configuration\\CodeCoverageFilterRegistry' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/CodeCoverageFilterRegistry.php', - 'PHPUnit\\TextUI\\Configuration\\CodeCoverageReportNotConfiguredException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/CodeCoverageReportNotConfiguredException.php', - 'PHPUnit\\TextUI\\Configuration\\Configuration' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Configuration.php', - 'PHPUnit\\TextUI\\Configuration\\ConfigurationCannotBeBuiltException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/ConfigurationCannotBeBuiltException.php', - 'PHPUnit\\TextUI\\Configuration\\Constant' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/Constant.php', - 'PHPUnit\\TextUI\\Configuration\\ConstantCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/ConstantCollection.php', - 'PHPUnit\\TextUI\\Configuration\\ConstantCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/ConstantCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\Directory' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/Directory.php', - 'PHPUnit\\TextUI\\Configuration\\DirectoryCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/DirectoryCollection.php', - 'PHPUnit\\TextUI\\Configuration\\DirectoryCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/DirectoryCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\Exception' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/Exception.php', - 'PHPUnit\\TextUI\\Configuration\\ExtensionBootstrap' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/ExtensionBootstrap.php', - 'PHPUnit\\TextUI\\Configuration\\ExtensionBootstrapCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/ExtensionBootstrapCollection.php', - 'PHPUnit\\TextUI\\Configuration\\ExtensionBootstrapCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/ExtensionBootstrapCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\File' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/File.php', - 'PHPUnit\\TextUI\\Configuration\\FileCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/FileCollection.php', - 'PHPUnit\\TextUI\\Configuration\\FileCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/FileCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\FilterDirectory' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/FilterDirectory.php', - 'PHPUnit\\TextUI\\Configuration\\FilterDirectoryCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/FilterDirectoryCollection.php', - 'PHPUnit\\TextUI\\Configuration\\FilterDirectoryCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/FilterDirectoryCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\FilterNotConfiguredException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/FilterNotConfiguredException.php', - 'PHPUnit\\TextUI\\Configuration\\Group' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/Group.php', - 'PHPUnit\\TextUI\\Configuration\\GroupCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/GroupCollection.php', - 'PHPUnit\\TextUI\\Configuration\\GroupCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/GroupCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\IniSetting' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/IniSetting.php', - 'PHPUnit\\TextUI\\Configuration\\IniSettingCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/IniSettingCollection.php', - 'PHPUnit\\TextUI\\Configuration\\IniSettingCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/IniSettingCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\LoggingNotConfiguredException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/LoggingNotConfiguredException.php', - 'PHPUnit\\TextUI\\Configuration\\Merger' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Merger.php', - 'PHPUnit\\TextUI\\Configuration\\NoBaselineException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoBaselineException.php', - 'PHPUnit\\TextUI\\Configuration\\NoBootstrapException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoBootstrapException.php', - 'PHPUnit\\TextUI\\Configuration\\NoCacheDirectoryException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCacheDirectoryException.php', - 'PHPUnit\\TextUI\\Configuration\\NoCliArgumentException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCliArgumentException.php', - 'PHPUnit\\TextUI\\Configuration\\NoConfigurationFileException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoConfigurationFileException.php', - 'PHPUnit\\TextUI\\Configuration\\NoCoverageCacheDirectoryException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCoverageCacheDirectoryException.php', - 'PHPUnit\\TextUI\\Configuration\\NoCustomCssFileException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCustomCssFileException.php', - 'PHPUnit\\TextUI\\Configuration\\NoDefaultTestSuiteException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoDefaultTestSuiteException.php', - 'PHPUnit\\TextUI\\Configuration\\NoPharExtensionDirectoryException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoPharExtensionDirectoryException.php', - 'PHPUnit\\TextUI\\Configuration\\Php' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/Php.php', - 'PHPUnit\\TextUI\\Configuration\\PhpHandler' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/PhpHandler.php', - 'PHPUnit\\TextUI\\Configuration\\Registry' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Registry.php', - 'PHPUnit\\TextUI\\Configuration\\Source' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/Source.php', - 'PHPUnit\\TextUI\\Configuration\\SourceFilter' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/SourceFilter.php', - 'PHPUnit\\TextUI\\Configuration\\SourceMapper' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/SourceMapper.php', - 'PHPUnit\\TextUI\\Configuration\\TestDirectory' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestDirectory.php', - 'PHPUnit\\TextUI\\Configuration\\TestDirectoryCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestDirectoryCollection.php', - 'PHPUnit\\TextUI\\Configuration\\TestDirectoryCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestDirectoryCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\TestFile' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestFile.php', - 'PHPUnit\\TextUI\\Configuration\\TestFileCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestFileCollection.php', - 'PHPUnit\\TextUI\\Configuration\\TestFileCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestFileCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\TestSuite' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestSuite.php', - 'PHPUnit\\TextUI\\Configuration\\TestSuiteBuilder' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/TestSuiteBuilder.php', - 'PHPUnit\\TextUI\\Configuration\\TestSuiteCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestSuiteCollection.php', - 'PHPUnit\\TextUI\\Configuration\\TestSuiteCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestSuiteCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\Variable' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/Variable.php', - 'PHPUnit\\TextUI\\Configuration\\VariableCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/VariableCollection.php', - 'PHPUnit\\TextUI\\Configuration\\VariableCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/VariableCollectionIterator.php', - 'PHPUnit\\TextUI\\Exception' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/Exception.php', - 'PHPUnit\\TextUI\\Help' => $vendorDir . '/phpunit/phpunit/src/TextUI/Help.php', - 'PHPUnit\\TextUI\\InvalidSocketException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/InvalidSocketException.php', - 'PHPUnit\\TextUI\\Output\\DefaultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Printer/DefaultPrinter.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\BeforeTestClassMethodErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/BeforeTestClassMethodErroredSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\ProgressPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/ProgressPrinter.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\Subscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/Subscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestConsideredRiskySubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestConsideredRiskySubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestErroredSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestFailedSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestFailedSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestFinishedSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestMarkedIncompleteSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestMarkedIncompleteSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestPreparedSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestPreparedSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestRunnerExecutionStartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestRunnerExecutionStartedSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestSkippedSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestSkippedSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredDeprecationSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredErrorSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredErrorSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredNoticeSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredNoticeSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpDeprecationSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpNoticeSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpNoticeSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpWarningSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpunitDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpunitWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpunitWarningSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredWarningSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ResultPrinter.php', - 'PHPUnit\\TextUI\\Output\\Default\\UnexpectedOutputPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/UnexpectedOutputPrinter.php', - 'PHPUnit\\TextUI\\Output\\Facade' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Facade.php', - 'PHPUnit\\TextUI\\Output\\NullPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Printer/NullPrinter.php', - 'PHPUnit\\TextUI\\Output\\Printer' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Printer/Printer.php', - 'PHPUnit\\TextUI\\Output\\SummaryPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/SummaryPrinter.php', - 'PHPUnit\\TextUI\\Output\\TestDox\\ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/TestDox/ResultPrinter.php', - 'PHPUnit\\TextUI\\RuntimeException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/RuntimeException.php', - 'PHPUnit\\TextUI\\ShellExitCodeCalculator' => $vendorDir . '/phpunit/phpunit/src/TextUI/ShellExitCodeCalculator.php', - 'PHPUnit\\TextUI\\TestDirectoryNotFoundException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/TestDirectoryNotFoundException.php', - 'PHPUnit\\TextUI\\TestFileNotFoundException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/TestFileNotFoundException.php', - 'PHPUnit\\TextUI\\TestRunner' => $vendorDir . '/phpunit/phpunit/src/TextUI/TestRunner.php', - 'PHPUnit\\TextUI\\TestSuiteFilterProcessor' => $vendorDir . '/phpunit/phpunit/src/TextUI/TestSuiteFilterProcessor.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CannotFindSchemaException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/CannotFindSchemaException.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\CodeCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/CodeCoverage.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Clover' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Clover.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Cobertura' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Cobertura.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Crap4j' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Crap4j.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Html' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Html.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Php' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Php.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Text' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Text.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Xml' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Xml.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Configuration' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Configuration.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\ConvertLogTypes' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/ConvertLogTypes.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageCloverToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageCloverToReport.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageCrap4jToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageCrap4jToReport.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageHtmlToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageHtmlToReport.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CoveragePhpToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoveragePhpToReport.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageTextToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageTextToReport.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageXmlToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageXmlToReport.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\DefaultConfiguration' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/DefaultConfiguration.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Exception' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Exception.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\FailedSchemaDetectionResult' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/FailedSchemaDetectionResult.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Generator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Generator.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Groups' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Groups.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\IntroduceCacheDirectoryAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/IntroduceCacheDirectoryAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\IntroduceCoverageElement' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/IntroduceCoverageElement.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\LoadedFromFileConfiguration' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/LoadedFromFileConfiguration.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Loader' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Loader.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\LogToReportMigration' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/LogToReportMigration.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Junit' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/Junit.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Logging' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/Logging.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TeamCity' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/TeamCity.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Html' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/TestDox/Html.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Text' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/TestDox/Text.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Migration' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/Migration.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\MigrationBuilder' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/MigrationBuilder.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\MigrationException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/MigrationException.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Migrator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrator.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromFilterWhitelistToCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromRootToCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveAttributesFromRootToCoverage.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\MoveCoverageDirectoriesToSource' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveCoverageDirectoriesToSource.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistExcludesToCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveWhitelistExcludesToCoverage.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistIncludesToCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveWhitelistIncludesToCoverage.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\PHPUnit' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/PHPUnit.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveBeStrictAboutResourceUsageDuringSmallTestsAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveBeStrictAboutResourceUsageDuringSmallTestsAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveBeStrictAboutTodoAnnotatedTestsAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveBeStrictAboutTodoAnnotatedTestsAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveCacheResultFileAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCacheResultFileAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveCacheTokensAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCacheTokensAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveConversionToExceptionsAttributes' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveConversionToExceptionsAttributes.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveCoverageElementCacheDirectoryAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCoverageElementCacheDirectoryAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveCoverageElementProcessUncoveredFilesAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCoverageElementProcessUncoveredFilesAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveEmptyFilter' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveEmptyFilter.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveListeners' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveListeners.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveLogTypes' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveLogTypes.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveLoggingElements' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveLoggingElements.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveNoInteractionAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveNoInteractionAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemovePrinterAttributes' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemovePrinterAttributes.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveTestDoxGroupsElement' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveTestDoxGroupsElement.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveTestSuiteLoaderAttributes' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveTestSuiteLoaderAttributes.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveVerboseAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveVerboseAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RenameBackupStaticAttributesAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameBackupStaticAttributesAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RenameBeStrictAboutCoversAnnotationAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameBeStrictAboutCoversAnnotationAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RenameForceCoversAnnotationAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameForceCoversAnnotationAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\SchemaDetectionResult' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SchemaDetectionResult.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\SchemaDetector' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SchemaDetector.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\SchemaFinder' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaFinder.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\SnapshotNodeList' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/SnapshotNodeList.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\SuccessfulSchemaDetectionResult' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SuccessfulSchemaDetectionResult.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\TestSuiteMapper' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/TestSuiteMapper.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\UpdateSchemaLocation' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/UpdateSchemaLocation.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\ValidationResult' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Validator/ValidationResult.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Validator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Validator/Validator.php', - 'PHPUnit\\Util\\Cloner' => $vendorDir . '/phpunit/phpunit/src/Util/Cloner.php', - 'PHPUnit\\Util\\Color' => $vendorDir . '/phpunit/phpunit/src/Util/Color.php', - 'PHPUnit\\Util\\Exception' => $vendorDir . '/phpunit/phpunit/src/Util/Exception/Exception.php', - 'PHPUnit\\Util\\ExcludeList' => $vendorDir . '/phpunit/phpunit/src/Util/ExcludeList.php', - 'PHPUnit\\Util\\Exporter' => $vendorDir . '/phpunit/phpunit/src/Util/Exporter.php', - 'PHPUnit\\Util\\Filesystem' => $vendorDir . '/phpunit/phpunit/src/Util/Filesystem.php', - 'PHPUnit\\Util\\Filter' => $vendorDir . '/phpunit/phpunit/src/Util/Filter.php', - 'PHPUnit\\Util\\GlobalState' => $vendorDir . '/phpunit/phpunit/src/Util/GlobalState.php', - 'PHPUnit\\Util\\Http\\Downloader' => $vendorDir . '/phpunit/phpunit/src/Util/Http/Downloader.php', - 'PHPUnit\\Util\\Http\\PhpDownloader' => $vendorDir . '/phpunit/phpunit/src/Util/Http/PhpDownloader.php', - 'PHPUnit\\Util\\InvalidDirectoryException' => $vendorDir . '/phpunit/phpunit/src/Util/Exception/InvalidDirectoryException.php', - 'PHPUnit\\Util\\InvalidJsonException' => $vendorDir . '/phpunit/phpunit/src/Util/Exception/InvalidJsonException.php', - 'PHPUnit\\Util\\InvalidVersionOperatorException' => $vendorDir . '/phpunit/phpunit/src/Util/Exception/InvalidVersionOperatorException.php', - 'PHPUnit\\Util\\Json' => $vendorDir . '/phpunit/phpunit/src/Util/Json.php', - 'PHPUnit\\Util\\PHP\\AbstractPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php', - 'PHPUnit\\Util\\PHP\\DefaultPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php', - 'PHPUnit\\Util\\PHP\\PhpProcessException' => $vendorDir . '/phpunit/phpunit/src/Util/Exception/PhpProcessException.php', - 'PHPUnit\\Util\\Reflection' => $vendorDir . '/phpunit/phpunit/src/Util/Reflection.php', - 'PHPUnit\\Util\\Test' => $vendorDir . '/phpunit/phpunit/src/Util/Test.php', - 'PHPUnit\\Util\\ThrowableToStringMapper' => $vendorDir . '/phpunit/phpunit/src/Util/ThrowableToStringMapper.php', - 'PHPUnit\\Util\\VersionComparisonOperator' => $vendorDir . '/phpunit/phpunit/src/Util/VersionComparisonOperator.php', - 'PHPUnit\\Util\\Xml' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/Xml.php', - 'PHPUnit\\Util\\Xml\\Loader' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/Loader.php', - 'PHPUnit\\Util\\Xml\\XmlException' => $vendorDir . '/phpunit/phpunit/src/Util/Exception/XmlException.php', - 'PatientCategoryInvoiceAccountSeeder' => $baseDir . '/database/seeders/PatientCategoryInvoiceAccountSeeder.php', - 'PharIo\\Manifest\\Application' => $vendorDir . '/phar-io/manifest/src/values/Application.php', - 'PharIo\\Manifest\\ApplicationName' => $vendorDir . '/phar-io/manifest/src/values/ApplicationName.php', - 'PharIo\\Manifest\\Author' => $vendorDir . '/phar-io/manifest/src/values/Author.php', - 'PharIo\\Manifest\\AuthorCollection' => $vendorDir . '/phar-io/manifest/src/values/AuthorCollection.php', - 'PharIo\\Manifest\\AuthorCollectionIterator' => $vendorDir . '/phar-io/manifest/src/values/AuthorCollectionIterator.php', - 'PharIo\\Manifest\\AuthorElement' => $vendorDir . '/phar-io/manifest/src/xml/AuthorElement.php', - 'PharIo\\Manifest\\AuthorElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/AuthorElementCollection.php', - 'PharIo\\Manifest\\BundledComponent' => $vendorDir . '/phar-io/manifest/src/values/BundledComponent.php', - 'PharIo\\Manifest\\BundledComponentCollection' => $vendorDir . '/phar-io/manifest/src/values/BundledComponentCollection.php', - 'PharIo\\Manifest\\BundledComponentCollectionIterator' => $vendorDir . '/phar-io/manifest/src/values/BundledComponentCollectionIterator.php', - 'PharIo\\Manifest\\BundlesElement' => $vendorDir . '/phar-io/manifest/src/xml/BundlesElement.php', - 'PharIo\\Manifest\\ComponentElement' => $vendorDir . '/phar-io/manifest/src/xml/ComponentElement.php', - 'PharIo\\Manifest\\ComponentElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/ComponentElementCollection.php', - 'PharIo\\Manifest\\ContainsElement' => $vendorDir . '/phar-io/manifest/src/xml/ContainsElement.php', - 'PharIo\\Manifest\\CopyrightElement' => $vendorDir . '/phar-io/manifest/src/xml/CopyrightElement.php', - 'PharIo\\Manifest\\CopyrightInformation' => $vendorDir . '/phar-io/manifest/src/values/CopyrightInformation.php', - 'PharIo\\Manifest\\ElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/ElementCollection.php', - 'PharIo\\Manifest\\ElementCollectionException' => $vendorDir . '/phar-io/manifest/src/exceptions/ElementCollectionException.php', - 'PharIo\\Manifest\\Email' => $vendorDir . '/phar-io/manifest/src/values/Email.php', - 'PharIo\\Manifest\\Exception' => $vendorDir . '/phar-io/manifest/src/exceptions/Exception.php', - 'PharIo\\Manifest\\ExtElement' => $vendorDir . '/phar-io/manifest/src/xml/ExtElement.php', - 'PharIo\\Manifest\\ExtElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/ExtElementCollection.php', - 'PharIo\\Manifest\\Extension' => $vendorDir . '/phar-io/manifest/src/values/Extension.php', - 'PharIo\\Manifest\\ExtensionElement' => $vendorDir . '/phar-io/manifest/src/xml/ExtensionElement.php', - 'PharIo\\Manifest\\InvalidApplicationNameException' => $vendorDir . '/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php', - 'PharIo\\Manifest\\InvalidEmailException' => $vendorDir . '/phar-io/manifest/src/exceptions/InvalidEmailException.php', - 'PharIo\\Manifest\\InvalidUrlException' => $vendorDir . '/phar-io/manifest/src/exceptions/InvalidUrlException.php', - 'PharIo\\Manifest\\Library' => $vendorDir . '/phar-io/manifest/src/values/Library.php', - 'PharIo\\Manifest\\License' => $vendorDir . '/phar-io/manifest/src/values/License.php', - 'PharIo\\Manifest\\LicenseElement' => $vendorDir . '/phar-io/manifest/src/xml/LicenseElement.php', - 'PharIo\\Manifest\\Manifest' => $vendorDir . '/phar-io/manifest/src/values/Manifest.php', - 'PharIo\\Manifest\\ManifestDocument' => $vendorDir . '/phar-io/manifest/src/xml/ManifestDocument.php', - 'PharIo\\Manifest\\ManifestDocumentException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestDocumentException.php', - 'PharIo\\Manifest\\ManifestDocumentLoadingException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestDocumentLoadingException.php', - 'PharIo\\Manifest\\ManifestDocumentMapper' => $vendorDir . '/phar-io/manifest/src/ManifestDocumentMapper.php', - 'PharIo\\Manifest\\ManifestDocumentMapperException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestDocumentMapperException.php', - 'PharIo\\Manifest\\ManifestElement' => $vendorDir . '/phar-io/manifest/src/xml/ManifestElement.php', - 'PharIo\\Manifest\\ManifestElementException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestElementException.php', - 'PharIo\\Manifest\\ManifestLoader' => $vendorDir . '/phar-io/manifest/src/ManifestLoader.php', - 'PharIo\\Manifest\\ManifestLoaderException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestLoaderException.php', - 'PharIo\\Manifest\\ManifestSerializer' => $vendorDir . '/phar-io/manifest/src/ManifestSerializer.php', - 'PharIo\\Manifest\\NoEmailAddressException' => $vendorDir . '/phar-io/manifest/src/exceptions/NoEmailAddressException.php', - 'PharIo\\Manifest\\PhpElement' => $vendorDir . '/phar-io/manifest/src/xml/PhpElement.php', - 'PharIo\\Manifest\\PhpExtensionRequirement' => $vendorDir . '/phar-io/manifest/src/values/PhpExtensionRequirement.php', - 'PharIo\\Manifest\\PhpVersionRequirement' => $vendorDir . '/phar-io/manifest/src/values/PhpVersionRequirement.php', - 'PharIo\\Manifest\\Requirement' => $vendorDir . '/phar-io/manifest/src/values/Requirement.php', - 'PharIo\\Manifest\\RequirementCollection' => $vendorDir . '/phar-io/manifest/src/values/RequirementCollection.php', - 'PharIo\\Manifest\\RequirementCollectionIterator' => $vendorDir . '/phar-io/manifest/src/values/RequirementCollectionIterator.php', - 'PharIo\\Manifest\\RequiresElement' => $vendorDir . '/phar-io/manifest/src/xml/RequiresElement.php', - 'PharIo\\Manifest\\Type' => $vendorDir . '/phar-io/manifest/src/values/Type.php', - 'PharIo\\Manifest\\Url' => $vendorDir . '/phar-io/manifest/src/values/Url.php', - 'PharIo\\Version\\AbstractVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/AbstractVersionConstraint.php', - 'PharIo\\Version\\AndVersionConstraintGroup' => $vendorDir . '/phar-io/version/src/constraints/AndVersionConstraintGroup.php', - 'PharIo\\Version\\AnyVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/AnyVersionConstraint.php', - 'PharIo\\Version\\BuildMetaData' => $vendorDir . '/phar-io/version/src/BuildMetaData.php', - 'PharIo\\Version\\ExactVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/ExactVersionConstraint.php', - 'PharIo\\Version\\Exception' => $vendorDir . '/phar-io/version/src/exceptions/Exception.php', - 'PharIo\\Version\\GreaterThanOrEqualToVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/GreaterThanOrEqualToVersionConstraint.php', - 'PharIo\\Version\\InvalidPreReleaseSuffixException' => $vendorDir . '/phar-io/version/src/exceptions/InvalidPreReleaseSuffixException.php', - 'PharIo\\Version\\InvalidVersionException' => $vendorDir . '/phar-io/version/src/exceptions/InvalidVersionException.php', - 'PharIo\\Version\\NoBuildMetaDataException' => $vendorDir . '/phar-io/version/src/exceptions/NoBuildMetaDataException.php', - 'PharIo\\Version\\NoPreReleaseSuffixException' => $vendorDir . '/phar-io/version/src/exceptions/NoPreReleaseSuffixException.php', - 'PharIo\\Version\\OrVersionConstraintGroup' => $vendorDir . '/phar-io/version/src/constraints/OrVersionConstraintGroup.php', - 'PharIo\\Version\\PreReleaseSuffix' => $vendorDir . '/phar-io/version/src/PreReleaseSuffix.php', - 'PharIo\\Version\\SpecificMajorAndMinorVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/SpecificMajorAndMinorVersionConstraint.php', - 'PharIo\\Version\\SpecificMajorVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/SpecificMajorVersionConstraint.php', - 'PharIo\\Version\\UnsupportedVersionConstraintException' => $vendorDir . '/phar-io/version/src/exceptions/UnsupportedVersionConstraintException.php', - 'PharIo\\Version\\Version' => $vendorDir . '/phar-io/version/src/Version.php', - 'PharIo\\Version\\VersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/VersionConstraint.php', - 'PharIo\\Version\\VersionConstraintParser' => $vendorDir . '/phar-io/version/src/VersionConstraintParser.php', - 'PharIo\\Version\\VersionConstraintValue' => $vendorDir . '/phar-io/version/src/VersionConstraintValue.php', - 'PharIo\\Version\\VersionNumber' => $vendorDir . '/phar-io/version/src/VersionNumber.php', - 'PhpMyAdmin\\SqlParser\\Component' => $vendorDir . '/phpmyadmin/sql-parser/src/Component.php', - 'PhpMyAdmin\\SqlParser\\Components\\AlterOperation' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/AlterOperation.php', - 'PhpMyAdmin\\SqlParser\\Components\\Array2d' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/Array2d.php', - 'PhpMyAdmin\\SqlParser\\Components\\ArrayObj' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/ArrayObj.php', - 'PhpMyAdmin\\SqlParser\\Components\\CaseExpression' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/CaseExpression.php', - 'PhpMyAdmin\\SqlParser\\Components\\Condition' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/Condition.php', - 'PhpMyAdmin\\SqlParser\\Components\\CreateDefinition' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/CreateDefinition.php', - 'PhpMyAdmin\\SqlParser\\Components\\DataType' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/DataType.php', - 'PhpMyAdmin\\SqlParser\\Components\\Expression' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/Expression.php', - 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/ExpressionArray.php', - 'PhpMyAdmin\\SqlParser\\Components\\FunctionCall' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/FunctionCall.php', - 'PhpMyAdmin\\SqlParser\\Components\\GroupKeyword' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/GroupKeyword.php', - 'PhpMyAdmin\\SqlParser\\Components\\IndexHint' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/IndexHint.php', - 'PhpMyAdmin\\SqlParser\\Components\\IntoKeyword' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/IntoKeyword.php', - 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/JoinKeyword.php', - 'PhpMyAdmin\\SqlParser\\Components\\Key' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/Key.php', - 'PhpMyAdmin\\SqlParser\\Components\\Limit' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/Limit.php', - 'PhpMyAdmin\\SqlParser\\Components\\LockExpression' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/LockExpression.php', - 'PhpMyAdmin\\SqlParser\\Components\\OptionsArray' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/OptionsArray.php', - 'PhpMyAdmin\\SqlParser\\Components\\OrderKeyword' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/OrderKeyword.php', - 'PhpMyAdmin\\SqlParser\\Components\\ParameterDefinition' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/ParameterDefinition.php', - 'PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/PartitionDefinition.php', - 'PhpMyAdmin\\SqlParser\\Components\\Reference' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/Reference.php', - 'PhpMyAdmin\\SqlParser\\Components\\RenameOperation' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/RenameOperation.php', - 'PhpMyAdmin\\SqlParser\\Components\\SetOperation' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/SetOperation.php', - 'PhpMyAdmin\\SqlParser\\Components\\UnionKeyword' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/UnionKeyword.php', - 'PhpMyAdmin\\SqlParser\\Components\\WithKeyword' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/WithKeyword.php', - 'PhpMyAdmin\\SqlParser\\Context' => $vendorDir . '/phpmyadmin/sql-parser/src/Context.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb100000' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100000.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb100100' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100100.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb100200' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100200.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb100300' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100300.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb100400' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100400.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb100500' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100500.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb100600' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100600.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb100700' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100700.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb100800' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100800.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb100900' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100900.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb101000' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb101000.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb101100' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb101100.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb110000' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb110000.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb110100' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb110100.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb110200' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb110200.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb110300' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb110300.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb110400' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb110400.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb110500' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb110500.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb110600' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb110600.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb110700' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb110700.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql50000' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql50000.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql50100' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql50100.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql50500' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql50500.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql50600' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql50600.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql50700' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql50700.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql80000' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql80000.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql80100' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql80100.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql80200' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql80200.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql80300' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql80300.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql80400' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql80400.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql90000' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql90000.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql90100' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql90100.php', - 'PhpMyAdmin\\SqlParser\\Core' => $vendorDir . '/phpmyadmin/sql-parser/src/Core.php', - 'PhpMyAdmin\\SqlParser\\Exceptions\\LexerException' => $vendorDir . '/phpmyadmin/sql-parser/src/Exceptions/LexerException.php', - 'PhpMyAdmin\\SqlParser\\Exceptions\\LoaderException' => $vendorDir . '/phpmyadmin/sql-parser/src/Exceptions/LoaderException.php', - 'PhpMyAdmin\\SqlParser\\Exceptions\\ParserException' => $vendorDir . '/phpmyadmin/sql-parser/src/Exceptions/ParserException.php', - 'PhpMyAdmin\\SqlParser\\Lexer' => $vendorDir . '/phpmyadmin/sql-parser/src/Lexer.php', - 'PhpMyAdmin\\SqlParser\\Parser' => $vendorDir . '/phpmyadmin/sql-parser/src/Parser.php', - 'PhpMyAdmin\\SqlParser\\Statement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\AlterStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/AlterStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/AnalyzeStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\BackupStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/BackupStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\CallStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/CallStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\CheckStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/CheckStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/ChecksumStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\CreateStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/CreateStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/DeleteStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\DropStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/DropStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/ExplainStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\InsertStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/InsertStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\KillStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/KillStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\LoadStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/LoadStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\LockStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/LockStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\MaintenanceStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/MaintenanceStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\NotImplementedStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/NotImplementedStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/OptimizeStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/PurgeStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\RenameStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/RenameStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\RepairStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/RepairStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/ReplaceStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/RestoreStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\SelectStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/SelectStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\SetStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/SetStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\ShowStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/ShowStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/TransactionStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/TruncateStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/UpdateStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\WithStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/WithStatement.php', - 'PhpMyAdmin\\SqlParser\\Token' => $vendorDir . '/phpmyadmin/sql-parser/src/Token.php', - 'PhpMyAdmin\\SqlParser\\TokensList' => $vendorDir . '/phpmyadmin/sql-parser/src/TokensList.php', - 'PhpMyAdmin\\SqlParser\\Tools\\ContextGenerator' => $vendorDir . '/phpmyadmin/sql-parser/src/Tools/ContextGenerator.php', - 'PhpMyAdmin\\SqlParser\\Tools\\CustomJsonSerializer' => $vendorDir . '/phpmyadmin/sql-parser/src/Tools/CustomJsonSerializer.php', - 'PhpMyAdmin\\SqlParser\\Tools\\TestGenerator' => $vendorDir . '/phpmyadmin/sql-parser/src/Tools/TestGenerator.php', - 'PhpMyAdmin\\SqlParser\\Translator' => $vendorDir . '/phpmyadmin/sql-parser/src/Translator.php', - 'PhpMyAdmin\\SqlParser\\UtfString' => $vendorDir . '/phpmyadmin/sql-parser/src/UtfString.php', - 'PhpMyAdmin\\SqlParser\\Utils\\BufferedQuery' => $vendorDir . '/phpmyadmin/sql-parser/src/Utils/BufferedQuery.php', - 'PhpMyAdmin\\SqlParser\\Utils\\CLI' => $vendorDir . '/phpmyadmin/sql-parser/src/Utils/CLI.php', - 'PhpMyAdmin\\SqlParser\\Utils\\Error' => $vendorDir . '/phpmyadmin/sql-parser/src/Utils/Error.php', - 'PhpMyAdmin\\SqlParser\\Utils\\Formatter' => $vendorDir . '/phpmyadmin/sql-parser/src/Utils/Formatter.php', - 'PhpMyAdmin\\SqlParser\\Utils\\Misc' => $vendorDir . '/phpmyadmin/sql-parser/src/Utils/Misc.php', - 'PhpMyAdmin\\SqlParser\\Utils\\Query' => $vendorDir . '/phpmyadmin/sql-parser/src/Utils/Query.php', - 'PhpMyAdmin\\SqlParser\\Utils\\Routine' => $vendorDir . '/phpmyadmin/sql-parser/src/Utils/Routine.php', - 'PhpMyAdmin\\SqlParser\\Utils\\Table' => $vendorDir . '/phpmyadmin/sql-parser/src/Utils/Table.php', - 'PhpMyAdmin\\SqlParser\\Utils\\Tokens' => $vendorDir . '/phpmyadmin/sql-parser/src/Utils/Tokens.php', - 'PhpOption\\LazyOption' => $vendorDir . '/phpoption/phpoption/src/PhpOption/LazyOption.php', - 'PhpOption\\None' => $vendorDir . '/phpoption/phpoption/src/PhpOption/None.php', - 'PhpOption\\Option' => $vendorDir . '/phpoption/phpoption/src/PhpOption/Option.php', - 'PhpOption\\Some' => $vendorDir . '/phpoption/phpoption/src/PhpOption/Some.php', - 'PhpParser\\Builder' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder.php', - 'PhpParser\\BuilderFactory' => $vendorDir . '/nikic/php-parser/lib/PhpParser/BuilderFactory.php', - 'PhpParser\\BuilderHelpers' => $vendorDir . '/nikic/php-parser/lib/PhpParser/BuilderHelpers.php', - 'PhpParser\\Builder\\ClassConst' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php', - 'PhpParser\\Builder\\Class_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Class_.php', - 'PhpParser\\Builder\\Declaration' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Declaration.php', - 'PhpParser\\Builder\\EnumCase' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php', - 'PhpParser\\Builder\\Enum_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Enum_.php', - 'PhpParser\\Builder\\FunctionLike' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php', - 'PhpParser\\Builder\\Function_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Function_.php', - 'PhpParser\\Builder\\Interface_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Interface_.php', - 'PhpParser\\Builder\\Method' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Method.php', - 'PhpParser\\Builder\\Namespace_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php', - 'PhpParser\\Builder\\Param' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Param.php', - 'PhpParser\\Builder\\Property' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Property.php', - 'PhpParser\\Builder\\TraitUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php', - 'PhpParser\\Builder\\TraitUseAdaptation' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php', - 'PhpParser\\Builder\\Trait_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Trait_.php', - 'PhpParser\\Builder\\Use_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Use_.php', - 'PhpParser\\Comment' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Comment.php', - 'PhpParser\\Comment\\Doc' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Comment/Doc.php', - 'PhpParser\\ConstExprEvaluationException' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php', - 'PhpParser\\ConstExprEvaluator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php', - 'PhpParser\\Error' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Error.php', - 'PhpParser\\ErrorHandler' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ErrorHandler.php', - 'PhpParser\\ErrorHandler\\Collecting' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php', - 'PhpParser\\ErrorHandler\\Throwing' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php', - 'PhpParser\\Internal\\DiffElem' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php', - 'PhpParser\\Internal\\Differ' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Internal/Differ.php', - 'PhpParser\\Internal\\PrintableNewAnonClassNode' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php', - 'PhpParser\\Internal\\TokenPolyfill' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Internal/TokenPolyfill.php', - 'PhpParser\\Internal\\TokenStream' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php', - 'PhpParser\\JsonDecoder' => $vendorDir . '/nikic/php-parser/lib/PhpParser/JsonDecoder.php', - 'PhpParser\\Lexer' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer.php', - 'PhpParser\\Lexer\\Emulative' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php', - 'PhpParser\\Lexer\\TokenEmulator\\AsymmetricVisibilityTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AsymmetricVisibilityTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\AttributeEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\EnumTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\ExplicitOctalEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\KeywordEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\MatchTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\NullsafeTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\PropertyTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/PropertyTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\ReadonlyFunctionTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\ReadonlyTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\ReverseEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\TokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php', - 'PhpParser\\Modifiers' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Modifiers.php', - 'PhpParser\\NameContext' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NameContext.php', - 'PhpParser\\Node' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node.php', - 'PhpParser\\NodeAbstract' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeAbstract.php', - 'PhpParser\\NodeDumper' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeDumper.php', - 'PhpParser\\NodeFinder' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeFinder.php', - 'PhpParser\\NodeTraverser' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeTraverser.php', - 'PhpParser\\NodeTraverserInterface' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php', - 'PhpParser\\NodeVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor.php', - 'PhpParser\\NodeVisitorAbstract' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php', - 'PhpParser\\NodeVisitor\\CloningVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php', - 'PhpParser\\NodeVisitor\\CommentAnnotatingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/CommentAnnotatingVisitor.php', - 'PhpParser\\NodeVisitor\\FindingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php', - 'PhpParser\\NodeVisitor\\FirstFindingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php', - 'PhpParser\\NodeVisitor\\NameResolver' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php', - 'PhpParser\\NodeVisitor\\NodeConnectingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php', - 'PhpParser\\NodeVisitor\\ParentConnectingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php', - 'PhpParser\\Node\\Arg' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Arg.php', - 'PhpParser\\Node\\ArrayItem' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/ArrayItem.php', - 'PhpParser\\Node\\Attribute' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Attribute.php', - 'PhpParser\\Node\\AttributeGroup' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php', - 'PhpParser\\Node\\ClosureUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/ClosureUse.php', - 'PhpParser\\Node\\ComplexType' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/ComplexType.php', - 'PhpParser\\Node\\Const_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Const_.php', - 'PhpParser\\Node\\DeclareItem' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/DeclareItem.php', - 'PhpParser\\Node\\Expr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr.php', - 'PhpParser\\Node\\Expr\\ArrayDimFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php', - 'PhpParser\\Node\\Expr\\ArrayItem' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php', - 'PhpParser\\Node\\Expr\\Array_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php', - 'PhpParser\\Node\\Expr\\ArrowFunction' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php', - 'PhpParser\\Node\\Expr\\Assign' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php', - 'PhpParser\\Node\\Expr\\AssignOp' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php', - 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseAnd' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php', - 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseOr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php', - 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseXor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Coalesce' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Concat' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Div' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Minus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Mod' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Mul' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Plus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Pow' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php', - 'PhpParser\\Node\\Expr\\AssignOp\\ShiftLeft' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php', - 'PhpParser\\Node\\Expr\\AssignOp\\ShiftRight' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php', - 'PhpParser\\Node\\Expr\\AssignRef' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php', - 'PhpParser\\Node\\Expr\\BinaryOp' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseAnd' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseOr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseXor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\BooleanAnd' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\BooleanOr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Coalesce' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Concat' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Div' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Equal' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Greater' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\GreaterOrEqual' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Identical' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalAnd' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalOr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalXor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Minus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Mod' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Mul' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\NotEqual' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\NotIdentical' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Plus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Pow' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\ShiftLeft' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\ShiftRight' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Smaller' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\SmallerOrEqual' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Spaceship' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php', - 'PhpParser\\Node\\Expr\\BitwiseNot' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php', - 'PhpParser\\Node\\Expr\\BooleanNot' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php', - 'PhpParser\\Node\\Expr\\CallLike' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php', - 'PhpParser\\Node\\Expr\\Cast' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php', - 'PhpParser\\Node\\Expr\\Cast\\Array_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php', - 'PhpParser\\Node\\Expr\\Cast\\Bool_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php', - 'PhpParser\\Node\\Expr\\Cast\\Double' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php', - 'PhpParser\\Node\\Expr\\Cast\\Int_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php', - 'PhpParser\\Node\\Expr\\Cast\\Object_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php', - 'PhpParser\\Node\\Expr\\Cast\\String_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php', - 'PhpParser\\Node\\Expr\\Cast\\Unset_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php', - 'PhpParser\\Node\\Expr\\ClassConstFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php', - 'PhpParser\\Node\\Expr\\Clone_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php', - 'PhpParser\\Node\\Expr\\Closure' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php', - 'PhpParser\\Node\\Expr\\ClosureUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php', - 'PhpParser\\Node\\Expr\\ConstFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php', - 'PhpParser\\Node\\Expr\\Empty_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php', - 'PhpParser\\Node\\Expr\\Error' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php', - 'PhpParser\\Node\\Expr\\ErrorSuppress' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php', - 'PhpParser\\Node\\Expr\\Eval_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php', - 'PhpParser\\Node\\Expr\\Exit_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php', - 'PhpParser\\Node\\Expr\\FuncCall' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php', - 'PhpParser\\Node\\Expr\\Include_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php', - 'PhpParser\\Node\\Expr\\Instanceof_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php', - 'PhpParser\\Node\\Expr\\Isset_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php', - 'PhpParser\\Node\\Expr\\List_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php', - 'PhpParser\\Node\\Expr\\Match_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php', - 'PhpParser\\Node\\Expr\\MethodCall' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php', - 'PhpParser\\Node\\Expr\\New_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php', - 'PhpParser\\Node\\Expr\\NullsafeMethodCall' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php', - 'PhpParser\\Node\\Expr\\NullsafePropertyFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php', - 'PhpParser\\Node\\Expr\\PostDec' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php', - 'PhpParser\\Node\\Expr\\PostInc' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php', - 'PhpParser\\Node\\Expr\\PreDec' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php', - 'PhpParser\\Node\\Expr\\PreInc' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php', - 'PhpParser\\Node\\Expr\\Print_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php', - 'PhpParser\\Node\\Expr\\PropertyFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php', - 'PhpParser\\Node\\Expr\\ShellExec' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php', - 'PhpParser\\Node\\Expr\\StaticCall' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php', - 'PhpParser\\Node\\Expr\\StaticPropertyFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php', - 'PhpParser\\Node\\Expr\\Ternary' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php', - 'PhpParser\\Node\\Expr\\Throw_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php', - 'PhpParser\\Node\\Expr\\UnaryMinus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php', - 'PhpParser\\Node\\Expr\\UnaryPlus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php', - 'PhpParser\\Node\\Expr\\Variable' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php', - 'PhpParser\\Node\\Expr\\YieldFrom' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php', - 'PhpParser\\Node\\Expr\\Yield_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php', - 'PhpParser\\Node\\FunctionLike' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php', - 'PhpParser\\Node\\Identifier' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Identifier.php', - 'PhpParser\\Node\\InterpolatedStringPart' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/InterpolatedStringPart.php', - 'PhpParser\\Node\\IntersectionType' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php', - 'PhpParser\\Node\\MatchArm' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/MatchArm.php', - 'PhpParser\\Node\\Name' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Name.php', - 'PhpParser\\Node\\Name\\FullyQualified' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php', - 'PhpParser\\Node\\Name\\Relative' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php', - 'PhpParser\\Node\\NullableType' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/NullableType.php', - 'PhpParser\\Node\\Param' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Param.php', - 'PhpParser\\Node\\PropertyHook' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/PropertyHook.php', - 'PhpParser\\Node\\PropertyItem' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/PropertyItem.php', - 'PhpParser\\Node\\Scalar' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar.php', - 'PhpParser\\Node\\Scalar\\DNumber' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php', - 'PhpParser\\Node\\Scalar\\Encapsed' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php', - 'PhpParser\\Node\\Scalar\\EncapsedStringPart' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php', - 'PhpParser\\Node\\Scalar\\Float_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/Float_.php', - 'PhpParser\\Node\\Scalar\\Int_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/Int_.php', - 'PhpParser\\Node\\Scalar\\InterpolatedString' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/InterpolatedString.php', - 'PhpParser\\Node\\Scalar\\LNumber' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php', - 'PhpParser\\Node\\Scalar\\MagicConst' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Class_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Dir' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\File' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Function_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Line' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Method' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Namespace_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Property' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Property.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Trait_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php', - 'PhpParser\\Node\\Scalar\\String_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php', - 'PhpParser\\Node\\StaticVar' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/StaticVar.php', - 'PhpParser\\Node\\Stmt' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt.php', - 'PhpParser\\Node\\Stmt\\Block' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Block.php', - 'PhpParser\\Node\\Stmt\\Break_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php', - 'PhpParser\\Node\\Stmt\\Case_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php', - 'PhpParser\\Node\\Stmt\\Catch_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php', - 'PhpParser\\Node\\Stmt\\ClassConst' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php', - 'PhpParser\\Node\\Stmt\\ClassLike' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php', - 'PhpParser\\Node\\Stmt\\ClassMethod' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php', - 'PhpParser\\Node\\Stmt\\Class_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php', - 'PhpParser\\Node\\Stmt\\Const_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php', - 'PhpParser\\Node\\Stmt\\Continue_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php', - 'PhpParser\\Node\\Stmt\\DeclareDeclare' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php', - 'PhpParser\\Node\\Stmt\\Declare_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php', - 'PhpParser\\Node\\Stmt\\Do_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php', - 'PhpParser\\Node\\Stmt\\Echo_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php', - 'PhpParser\\Node\\Stmt\\ElseIf_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php', - 'PhpParser\\Node\\Stmt\\Else_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php', - 'PhpParser\\Node\\Stmt\\EnumCase' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php', - 'PhpParser\\Node\\Stmt\\Enum_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php', - 'PhpParser\\Node\\Stmt\\Expression' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php', - 'PhpParser\\Node\\Stmt\\Finally_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php', - 'PhpParser\\Node\\Stmt\\For_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php', - 'PhpParser\\Node\\Stmt\\Foreach_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php', - 'PhpParser\\Node\\Stmt\\Function_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php', - 'PhpParser\\Node\\Stmt\\Global_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php', - 'PhpParser\\Node\\Stmt\\Goto_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php', - 'PhpParser\\Node\\Stmt\\GroupUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php', - 'PhpParser\\Node\\Stmt\\HaltCompiler' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php', - 'PhpParser\\Node\\Stmt\\If_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php', - 'PhpParser\\Node\\Stmt\\InlineHTML' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php', - 'PhpParser\\Node\\Stmt\\Interface_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php', - 'PhpParser\\Node\\Stmt\\Label' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php', - 'PhpParser\\Node\\Stmt\\Namespace_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php', - 'PhpParser\\Node\\Stmt\\Nop' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php', - 'PhpParser\\Node\\Stmt\\Property' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php', - 'PhpParser\\Node\\Stmt\\PropertyProperty' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php', - 'PhpParser\\Node\\Stmt\\Return_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php', - 'PhpParser\\Node\\Stmt\\StaticVar' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php', - 'PhpParser\\Node\\Stmt\\Static_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php', - 'PhpParser\\Node\\Stmt\\Switch_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php', - 'PhpParser\\Node\\Stmt\\TraitUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php', - 'PhpParser\\Node\\Stmt\\TraitUseAdaptation' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php', - 'PhpParser\\Node\\Stmt\\TraitUseAdaptation\\Alias' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php', - 'PhpParser\\Node\\Stmt\\TraitUseAdaptation\\Precedence' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php', - 'PhpParser\\Node\\Stmt\\Trait_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php', - 'PhpParser\\Node\\Stmt\\TryCatch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php', - 'PhpParser\\Node\\Stmt\\Unset_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php', - 'PhpParser\\Node\\Stmt\\UseUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php', - 'PhpParser\\Node\\Stmt\\Use_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php', - 'PhpParser\\Node\\Stmt\\While_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php', - 'PhpParser\\Node\\UnionType' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/UnionType.php', - 'PhpParser\\Node\\UseItem' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/UseItem.php', - 'PhpParser\\Node\\VarLikeIdentifier' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php', - 'PhpParser\\Node\\VariadicPlaceholder' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php', - 'PhpParser\\Parser' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Parser.php', - 'PhpParser\\ParserAbstract' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ParserAbstract.php', - 'PhpParser\\ParserFactory' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ParserFactory.php', - 'PhpParser\\Parser\\Php7' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Parser/Php7.php', - 'PhpParser\\Parser\\Php8' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Parser/Php8.php', - 'PhpParser\\PhpVersion' => $vendorDir . '/nikic/php-parser/lib/PhpParser/PhpVersion.php', - 'PhpParser\\PrettyPrinter' => $vendorDir . '/nikic/php-parser/lib/PhpParser/PrettyPrinter.php', - 'PhpParser\\PrettyPrinterAbstract' => $vendorDir . '/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php', - 'PhpParser\\PrettyPrinter\\Standard' => $vendorDir . '/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php', - 'PhpParser\\Token' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Token.php', - 'PhpToken' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', - 'PointOfSaleSeeder' => $baseDir . '/database/seeders/PointOfSaleSeeder.php', - 'ProceduresTableSeeder' => $baseDir . '/database/seeders/ProceduresTableSeeder.php', - 'Psr\\Cache\\CacheException' => $vendorDir . '/psr/cache/src/CacheException.php', - 'Psr\\Cache\\CacheItemInterface' => $vendorDir . '/psr/cache/src/CacheItemInterface.php', - 'Psr\\Cache\\CacheItemPoolInterface' => $vendorDir . '/psr/cache/src/CacheItemPoolInterface.php', - 'Psr\\Cache\\InvalidArgumentException' => $vendorDir . '/psr/cache/src/InvalidArgumentException.php', - 'Psr\\Clock\\ClockInterface' => $vendorDir . '/psr/clock/src/ClockInterface.php', - 'Psr\\Container\\ContainerExceptionInterface' => $vendorDir . '/psr/container/src/ContainerExceptionInterface.php', - 'Psr\\Container\\ContainerInterface' => $vendorDir . '/psr/container/src/ContainerInterface.php', - 'Psr\\Container\\NotFoundExceptionInterface' => $vendorDir . '/psr/container/src/NotFoundExceptionInterface.php', - 'Psr\\EventDispatcher\\EventDispatcherInterface' => $vendorDir . '/psr/event-dispatcher/src/EventDispatcherInterface.php', - 'Psr\\EventDispatcher\\ListenerProviderInterface' => $vendorDir . '/psr/event-dispatcher/src/ListenerProviderInterface.php', - 'Psr\\EventDispatcher\\StoppableEventInterface' => $vendorDir . '/psr/event-dispatcher/src/StoppableEventInterface.php', - 'Psr\\Http\\Client\\ClientExceptionInterface' => $vendorDir . '/psr/http-client/src/ClientExceptionInterface.php', - 'Psr\\Http\\Client\\ClientInterface' => $vendorDir . '/psr/http-client/src/ClientInterface.php', - 'Psr\\Http\\Client\\NetworkExceptionInterface' => $vendorDir . '/psr/http-client/src/NetworkExceptionInterface.php', - 'Psr\\Http\\Client\\RequestExceptionInterface' => $vendorDir . '/psr/http-client/src/RequestExceptionInterface.php', - 'Psr\\Http\\Message\\MessageInterface' => $vendorDir . '/psr/http-message/src/MessageInterface.php', - 'Psr\\Http\\Message\\RequestFactoryInterface' => $vendorDir . '/psr/http-factory/src/RequestFactoryInterface.php', - 'Psr\\Http\\Message\\RequestInterface' => $vendorDir . '/psr/http-message/src/RequestInterface.php', - 'Psr\\Http\\Message\\ResponseFactoryInterface' => $vendorDir . '/psr/http-factory/src/ResponseFactoryInterface.php', - 'Psr\\Http\\Message\\ResponseInterface' => $vendorDir . '/psr/http-message/src/ResponseInterface.php', - 'Psr\\Http\\Message\\ServerRequestFactoryInterface' => $vendorDir . '/psr/http-factory/src/ServerRequestFactoryInterface.php', - 'Psr\\Http\\Message\\ServerRequestInterface' => $vendorDir . '/psr/http-message/src/ServerRequestInterface.php', - 'Psr\\Http\\Message\\StreamFactoryInterface' => $vendorDir . '/psr/http-factory/src/StreamFactoryInterface.php', - 'Psr\\Http\\Message\\StreamInterface' => $vendorDir . '/psr/http-message/src/StreamInterface.php', - 'Psr\\Http\\Message\\UploadedFileFactoryInterface' => $vendorDir . '/psr/http-factory/src/UploadedFileFactoryInterface.php', - 'Psr\\Http\\Message\\UploadedFileInterface' => $vendorDir . '/psr/http-message/src/UploadedFileInterface.php', - 'Psr\\Http\\Message\\UriFactoryInterface' => $vendorDir . '/psr/http-factory/src/UriFactoryInterface.php', - 'Psr\\Http\\Message\\UriInterface' => $vendorDir . '/psr/http-message/src/UriInterface.php', - 'Psr\\Log\\AbstractLogger' => $vendorDir . '/psr/log/src/AbstractLogger.php', - 'Psr\\Log\\InvalidArgumentException' => $vendorDir . '/psr/log/src/InvalidArgumentException.php', - 'Psr\\Log\\LogLevel' => $vendorDir . '/psr/log/src/LogLevel.php', - 'Psr\\Log\\LoggerAwareInterface' => $vendorDir . '/psr/log/src/LoggerAwareInterface.php', - 'Psr\\Log\\LoggerAwareTrait' => $vendorDir . '/psr/log/src/LoggerAwareTrait.php', - 'Psr\\Log\\LoggerInterface' => $vendorDir . '/psr/log/src/LoggerInterface.php', - 'Psr\\Log\\LoggerTrait' => $vendorDir . '/psr/log/src/LoggerTrait.php', - 'Psr\\Log\\NullLogger' => $vendorDir . '/psr/log/src/NullLogger.php', - 'Psr\\SimpleCache\\CacheException' => $vendorDir . '/psr/simple-cache/src/CacheException.php', - 'Psr\\SimpleCache\\CacheInterface' => $vendorDir . '/psr/simple-cache/src/CacheInterface.php', - 'Psr\\SimpleCache\\InvalidArgumentException' => $vendorDir . '/psr/simple-cache/src/InvalidArgumentException.php', - 'Psy\\CodeCleaner' => $vendorDir . '/psy/psysh/src/CodeCleaner.php', - 'Psy\\CodeCleaner\\AbstractClassPass' => $vendorDir . '/psy/psysh/src/CodeCleaner/AbstractClassPass.php', - 'Psy\\CodeCleaner\\AssignThisVariablePass' => $vendorDir . '/psy/psysh/src/CodeCleaner/AssignThisVariablePass.php', - 'Psy\\CodeCleaner\\CallTimePassByReferencePass' => $vendorDir . '/psy/psysh/src/CodeCleaner/CallTimePassByReferencePass.php', - 'Psy\\CodeCleaner\\CalledClassPass' => $vendorDir . '/psy/psysh/src/CodeCleaner/CalledClassPass.php', - 'Psy\\CodeCleaner\\CodeCleanerPass' => $vendorDir . '/psy/psysh/src/CodeCleaner/CodeCleanerPass.php', - 'Psy\\CodeCleaner\\EmptyArrayDimFetchPass' => $vendorDir . '/psy/psysh/src/CodeCleaner/EmptyArrayDimFetchPass.php', - 'Psy\\CodeCleaner\\ExitPass' => $vendorDir . '/psy/psysh/src/CodeCleaner/ExitPass.php', - 'Psy\\CodeCleaner\\FinalClassPass' => $vendorDir . '/psy/psysh/src/CodeCleaner/FinalClassPass.php', - 'Psy\\CodeCleaner\\FunctionContextPass' => $vendorDir . '/psy/psysh/src/CodeCleaner/FunctionContextPass.php', - 'Psy\\CodeCleaner\\FunctionReturnInWriteContextPass' => $vendorDir . '/psy/psysh/src/CodeCleaner/FunctionReturnInWriteContextPass.php', - 'Psy\\CodeCleaner\\ImplicitReturnPass' => $vendorDir . '/psy/psysh/src/CodeCleaner/ImplicitReturnPass.php', - 'Psy\\CodeCleaner\\IssetPass' => $vendorDir . '/psy/psysh/src/CodeCleaner/IssetPass.php', - 'Psy\\CodeCleaner\\LabelContextPass' => $vendorDir . '/psy/psysh/src/CodeCleaner/LabelContextPass.php', - 'Psy\\CodeCleaner\\LeavePsyshAlonePass' => $vendorDir . '/psy/psysh/src/CodeCleaner/LeavePsyshAlonePass.php', - 'Psy\\CodeCleaner\\ListPass' => $vendorDir . '/psy/psysh/src/CodeCleaner/ListPass.php', - 'Psy\\CodeCleaner\\LoopContextPass' => $vendorDir . '/psy/psysh/src/CodeCleaner/LoopContextPass.php', - 'Psy\\CodeCleaner\\MagicConstantsPass' => $vendorDir . '/psy/psysh/src/CodeCleaner/MagicConstantsPass.php', - 'Psy\\CodeCleaner\\NamespaceAwarePass' => $vendorDir . '/psy/psysh/src/CodeCleaner/NamespaceAwarePass.php', - 'Psy\\CodeCleaner\\NamespacePass' => $vendorDir . '/psy/psysh/src/CodeCleaner/NamespacePass.php', - 'Psy\\CodeCleaner\\NoReturnValue' => $vendorDir . '/psy/psysh/src/CodeCleaner/NoReturnValue.php', - 'Psy\\CodeCleaner\\PassableByReferencePass' => $vendorDir . '/psy/psysh/src/CodeCleaner/PassableByReferencePass.php', - 'Psy\\CodeCleaner\\RequirePass' => $vendorDir . '/psy/psysh/src/CodeCleaner/RequirePass.php', - 'Psy\\CodeCleaner\\ReturnTypePass' => $vendorDir . '/psy/psysh/src/CodeCleaner/ReturnTypePass.php', - 'Psy\\CodeCleaner\\StrictTypesPass' => $vendorDir . '/psy/psysh/src/CodeCleaner/StrictTypesPass.php', - 'Psy\\CodeCleaner\\UseStatementPass' => $vendorDir . '/psy/psysh/src/CodeCleaner/UseStatementPass.php', - 'Psy\\CodeCleaner\\ValidClassNamePass' => $vendorDir . '/psy/psysh/src/CodeCleaner/ValidClassNamePass.php', - 'Psy\\CodeCleaner\\ValidConstructorPass' => $vendorDir . '/psy/psysh/src/CodeCleaner/ValidConstructorPass.php', - 'Psy\\CodeCleaner\\ValidFunctionNamePass' => $vendorDir . '/psy/psysh/src/CodeCleaner/ValidFunctionNamePass.php', - 'Psy\\Command\\BufferCommand' => $vendorDir . '/psy/psysh/src/Command/BufferCommand.php', - 'Psy\\Command\\ClearCommand' => $vendorDir . '/psy/psysh/src/Command/ClearCommand.php', - 'Psy\\Command\\CodeArgumentParser' => $vendorDir . '/psy/psysh/src/Command/CodeArgumentParser.php', - 'Psy\\Command\\Command' => $vendorDir . '/psy/psysh/src/Command/Command.php', - 'Psy\\Command\\DocCommand' => $vendorDir . '/psy/psysh/src/Command/DocCommand.php', - 'Psy\\Command\\DumpCommand' => $vendorDir . '/psy/psysh/src/Command/DumpCommand.php', - 'Psy\\Command\\EditCommand' => $vendorDir . '/psy/psysh/src/Command/EditCommand.php', - 'Psy\\Command\\ExitCommand' => $vendorDir . '/psy/psysh/src/Command/ExitCommand.php', - 'Psy\\Command\\HelpCommand' => $vendorDir . '/psy/psysh/src/Command/HelpCommand.php', - 'Psy\\Command\\HistoryCommand' => $vendorDir . '/psy/psysh/src/Command/HistoryCommand.php', - 'Psy\\Command\\ListCommand' => $vendorDir . '/psy/psysh/src/Command/ListCommand.php', - 'Psy\\Command\\ListCommand\\ClassConstantEnumerator' => $vendorDir . '/psy/psysh/src/Command/ListCommand/ClassConstantEnumerator.php', - 'Psy\\Command\\ListCommand\\ClassEnumerator' => $vendorDir . '/psy/psysh/src/Command/ListCommand/ClassEnumerator.php', - 'Psy\\Command\\ListCommand\\ConstantEnumerator' => $vendorDir . '/psy/psysh/src/Command/ListCommand/ConstantEnumerator.php', - 'Psy\\Command\\ListCommand\\Enumerator' => $vendorDir . '/psy/psysh/src/Command/ListCommand/Enumerator.php', - 'Psy\\Command\\ListCommand\\FunctionEnumerator' => $vendorDir . '/psy/psysh/src/Command/ListCommand/FunctionEnumerator.php', - 'Psy\\Command\\ListCommand\\GlobalVariableEnumerator' => $vendorDir . '/psy/psysh/src/Command/ListCommand/GlobalVariableEnumerator.php', - 'Psy\\Command\\ListCommand\\MethodEnumerator' => $vendorDir . '/psy/psysh/src/Command/ListCommand/MethodEnumerator.php', - 'Psy\\Command\\ListCommand\\PropertyEnumerator' => $vendorDir . '/psy/psysh/src/Command/ListCommand/PropertyEnumerator.php', - 'Psy\\Command\\ListCommand\\VariableEnumerator' => $vendorDir . '/psy/psysh/src/Command/ListCommand/VariableEnumerator.php', - 'Psy\\Command\\ParseCommand' => $vendorDir . '/psy/psysh/src/Command/ParseCommand.php', - 'Psy\\Command\\PsyVersionCommand' => $vendorDir . '/psy/psysh/src/Command/PsyVersionCommand.php', - 'Psy\\Command\\ReflectingCommand' => $vendorDir . '/psy/psysh/src/Command/ReflectingCommand.php', - 'Psy\\Command\\ShowCommand' => $vendorDir . '/psy/psysh/src/Command/ShowCommand.php', - 'Psy\\Command\\SudoCommand' => $vendorDir . '/psy/psysh/src/Command/SudoCommand.php', - 'Psy\\Command\\ThrowUpCommand' => $vendorDir . '/psy/psysh/src/Command/ThrowUpCommand.php', - 'Psy\\Command\\TimeitCommand' => $vendorDir . '/psy/psysh/src/Command/TimeitCommand.php', - 'Psy\\Command\\TimeitCommand\\TimeitVisitor' => $vendorDir . '/psy/psysh/src/Command/TimeitCommand/TimeitVisitor.php', - 'Psy\\Command\\TraceCommand' => $vendorDir . '/psy/psysh/src/Command/TraceCommand.php', - 'Psy\\Command\\WhereamiCommand' => $vendorDir . '/psy/psysh/src/Command/WhereamiCommand.php', - 'Psy\\Command\\WtfCommand' => $vendorDir . '/psy/psysh/src/Command/WtfCommand.php', - 'Psy\\ConfigPaths' => $vendorDir . '/psy/psysh/src/ConfigPaths.php', - 'Psy\\Configuration' => $vendorDir . '/psy/psysh/src/Configuration.php', - 'Psy\\Context' => $vendorDir . '/psy/psysh/src/Context.php', - 'Psy\\ContextAware' => $vendorDir . '/psy/psysh/src/ContextAware.php', - 'Psy\\EnvInterface' => $vendorDir . '/psy/psysh/src/EnvInterface.php', - 'Psy\\Exception\\BreakException' => $vendorDir . '/psy/psysh/src/Exception/BreakException.php', - 'Psy\\Exception\\DeprecatedException' => $vendorDir . '/psy/psysh/src/Exception/DeprecatedException.php', - 'Psy\\Exception\\ErrorException' => $vendorDir . '/psy/psysh/src/Exception/ErrorException.php', - 'Psy\\Exception\\Exception' => $vendorDir . '/psy/psysh/src/Exception/Exception.php', - 'Psy\\Exception\\FatalErrorException' => $vendorDir . '/psy/psysh/src/Exception/FatalErrorException.php', - 'Psy\\Exception\\ParseErrorException' => $vendorDir . '/psy/psysh/src/Exception/ParseErrorException.php', - 'Psy\\Exception\\RuntimeException' => $vendorDir . '/psy/psysh/src/Exception/RuntimeException.php', - 'Psy\\Exception\\ThrowUpException' => $vendorDir . '/psy/psysh/src/Exception/ThrowUpException.php', - 'Psy\\Exception\\UnexpectedTargetException' => $vendorDir . '/psy/psysh/src/Exception/UnexpectedTargetException.php', - 'Psy\\ExecutionClosure' => $vendorDir . '/psy/psysh/src/ExecutionClosure.php', - 'Psy\\ExecutionLoopClosure' => $vendorDir . '/psy/psysh/src/ExecutionLoopClosure.php', - 'Psy\\ExecutionLoop\\AbstractListener' => $vendorDir . '/psy/psysh/src/ExecutionLoop/AbstractListener.php', - 'Psy\\ExecutionLoop\\Listener' => $vendorDir . '/psy/psysh/src/ExecutionLoop/Listener.php', - 'Psy\\ExecutionLoop\\ProcessForker' => $vendorDir . '/psy/psysh/src/ExecutionLoop/ProcessForker.php', - 'Psy\\ExecutionLoop\\RunkitReloader' => $vendorDir . '/psy/psysh/src/ExecutionLoop/RunkitReloader.php', - 'Psy\\Formatter\\CodeFormatter' => $vendorDir . '/psy/psysh/src/Formatter/CodeFormatter.php', - 'Psy\\Formatter\\DocblockFormatter' => $vendorDir . '/psy/psysh/src/Formatter/DocblockFormatter.php', - 'Psy\\Formatter\\ReflectorFormatter' => $vendorDir . '/psy/psysh/src/Formatter/ReflectorFormatter.php', - 'Psy\\Formatter\\SignatureFormatter' => $vendorDir . '/psy/psysh/src/Formatter/SignatureFormatter.php', - 'Psy\\Formatter\\TraceFormatter' => $vendorDir . '/psy/psysh/src/Formatter/TraceFormatter.php', - 'Psy\\Input\\CodeArgument' => $vendorDir . '/psy/psysh/src/Input/CodeArgument.php', - 'Psy\\Input\\FilterOptions' => $vendorDir . '/psy/psysh/src/Input/FilterOptions.php', - 'Psy\\Input\\ShellInput' => $vendorDir . '/psy/psysh/src/Input/ShellInput.php', - 'Psy\\Input\\SilentInput' => $vendorDir . '/psy/psysh/src/Input/SilentInput.php', - 'Psy\\Output\\OutputPager' => $vendorDir . '/psy/psysh/src/Output/OutputPager.php', - 'Psy\\Output\\PassthruPager' => $vendorDir . '/psy/psysh/src/Output/PassthruPager.php', - 'Psy\\Output\\ProcOutputPager' => $vendorDir . '/psy/psysh/src/Output/ProcOutputPager.php', - 'Psy\\Output\\ShellOutput' => $vendorDir . '/psy/psysh/src/Output/ShellOutput.php', - 'Psy\\Output\\Theme' => $vendorDir . '/psy/psysh/src/Output/Theme.php', - 'Psy\\ParserFactory' => $vendorDir . '/psy/psysh/src/ParserFactory.php', - 'Psy\\Readline\\GNUReadline' => $vendorDir . '/psy/psysh/src/Readline/GNUReadline.php', - 'Psy\\Readline\\Hoa\\Autocompleter' => $vendorDir . '/psy/psysh/src/Readline/Hoa/Autocompleter.php', - 'Psy\\Readline\\Hoa\\AutocompleterAggregate' => $vendorDir . '/psy/psysh/src/Readline/Hoa/AutocompleterAggregate.php', - 'Psy\\Readline\\Hoa\\AutocompleterPath' => $vendorDir . '/psy/psysh/src/Readline/Hoa/AutocompleterPath.php', - 'Psy\\Readline\\Hoa\\AutocompleterWord' => $vendorDir . '/psy/psysh/src/Readline/Hoa/AutocompleterWord.php', - 'Psy\\Readline\\Hoa\\Console' => $vendorDir . '/psy/psysh/src/Readline/Hoa/Console.php', - 'Psy\\Readline\\Hoa\\ConsoleCursor' => $vendorDir . '/psy/psysh/src/Readline/Hoa/ConsoleCursor.php', - 'Psy\\Readline\\Hoa\\ConsoleException' => $vendorDir . '/psy/psysh/src/Readline/Hoa/ConsoleException.php', - 'Psy\\Readline\\Hoa\\ConsoleInput' => $vendorDir . '/psy/psysh/src/Readline/Hoa/ConsoleInput.php', - 'Psy\\Readline\\Hoa\\ConsoleOutput' => $vendorDir . '/psy/psysh/src/Readline/Hoa/ConsoleOutput.php', - 'Psy\\Readline\\Hoa\\ConsoleProcessus' => $vendorDir . '/psy/psysh/src/Readline/Hoa/ConsoleProcessus.php', - 'Psy\\Readline\\Hoa\\ConsoleTput' => $vendorDir . '/psy/psysh/src/Readline/Hoa/ConsoleTput.php', - 'Psy\\Readline\\Hoa\\ConsoleWindow' => $vendorDir . '/psy/psysh/src/Readline/Hoa/ConsoleWindow.php', - 'Psy\\Readline\\Hoa\\Event' => $vendorDir . '/psy/psysh/src/Readline/Hoa/Event.php', - 'Psy\\Readline\\Hoa\\EventBucket' => $vendorDir . '/psy/psysh/src/Readline/Hoa/EventBucket.php', - 'Psy\\Readline\\Hoa\\EventException' => $vendorDir . '/psy/psysh/src/Readline/Hoa/EventException.php', - 'Psy\\Readline\\Hoa\\EventListenable' => $vendorDir . '/psy/psysh/src/Readline/Hoa/EventListenable.php', - 'Psy\\Readline\\Hoa\\EventListener' => $vendorDir . '/psy/psysh/src/Readline/Hoa/EventListener.php', - 'Psy\\Readline\\Hoa\\EventListens' => $vendorDir . '/psy/psysh/src/Readline/Hoa/EventListens.php', - 'Psy\\Readline\\Hoa\\EventSource' => $vendorDir . '/psy/psysh/src/Readline/Hoa/EventSource.php', - 'Psy\\Readline\\Hoa\\Exception' => $vendorDir . '/psy/psysh/src/Readline/Hoa/Exception.php', - 'Psy\\Readline\\Hoa\\ExceptionIdle' => $vendorDir . '/psy/psysh/src/Readline/Hoa/ExceptionIdle.php', - 'Psy\\Readline\\Hoa\\File' => $vendorDir . '/psy/psysh/src/Readline/Hoa/File.php', - 'Psy\\Readline\\Hoa\\FileDirectory' => $vendorDir . '/psy/psysh/src/Readline/Hoa/FileDirectory.php', - 'Psy\\Readline\\Hoa\\FileDoesNotExistException' => $vendorDir . '/psy/psysh/src/Readline/Hoa/FileDoesNotExistException.php', - 'Psy\\Readline\\Hoa\\FileException' => $vendorDir . '/psy/psysh/src/Readline/Hoa/FileException.php', - 'Psy\\Readline\\Hoa\\FileFinder' => $vendorDir . '/psy/psysh/src/Readline/Hoa/FileFinder.php', - 'Psy\\Readline\\Hoa\\FileGeneric' => $vendorDir . '/psy/psysh/src/Readline/Hoa/FileGeneric.php', - 'Psy\\Readline\\Hoa\\FileLink' => $vendorDir . '/psy/psysh/src/Readline/Hoa/FileLink.php', - 'Psy\\Readline\\Hoa\\FileLinkRead' => $vendorDir . '/psy/psysh/src/Readline/Hoa/FileLinkRead.php', - 'Psy\\Readline\\Hoa\\FileLinkReadWrite' => $vendorDir . '/psy/psysh/src/Readline/Hoa/FileLinkReadWrite.php', - 'Psy\\Readline\\Hoa\\FileRead' => $vendorDir . '/psy/psysh/src/Readline/Hoa/FileRead.php', - 'Psy\\Readline\\Hoa\\FileReadWrite' => $vendorDir . '/psy/psysh/src/Readline/Hoa/FileReadWrite.php', - 'Psy\\Readline\\Hoa\\IStream' => $vendorDir . '/psy/psysh/src/Readline/Hoa/IStream.php', - 'Psy\\Readline\\Hoa\\IteratorFileSystem' => $vendorDir . '/psy/psysh/src/Readline/Hoa/IteratorFileSystem.php', - 'Psy\\Readline\\Hoa\\IteratorRecursiveDirectory' => $vendorDir . '/psy/psysh/src/Readline/Hoa/IteratorRecursiveDirectory.php', - 'Psy\\Readline\\Hoa\\IteratorSplFileInfo' => $vendorDir . '/psy/psysh/src/Readline/Hoa/IteratorSplFileInfo.php', - 'Psy\\Readline\\Hoa\\Protocol' => $vendorDir . '/psy/psysh/src/Readline/Hoa/Protocol.php', - 'Psy\\Readline\\Hoa\\ProtocolException' => $vendorDir . '/psy/psysh/src/Readline/Hoa/ProtocolException.php', - 'Psy\\Readline\\Hoa\\ProtocolNode' => $vendorDir . '/psy/psysh/src/Readline/Hoa/ProtocolNode.php', - 'Psy\\Readline\\Hoa\\ProtocolNodeLibrary' => $vendorDir . '/psy/psysh/src/Readline/Hoa/ProtocolNodeLibrary.php', - 'Psy\\Readline\\Hoa\\ProtocolWrapper' => $vendorDir . '/psy/psysh/src/Readline/Hoa/ProtocolWrapper.php', - 'Psy\\Readline\\Hoa\\Readline' => $vendorDir . '/psy/psysh/src/Readline/Hoa/Readline.php', - 'Psy\\Readline\\Hoa\\Stream' => $vendorDir . '/psy/psysh/src/Readline/Hoa/Stream.php', - 'Psy\\Readline\\Hoa\\StreamBufferable' => $vendorDir . '/psy/psysh/src/Readline/Hoa/StreamBufferable.php', - 'Psy\\Readline\\Hoa\\StreamContext' => $vendorDir . '/psy/psysh/src/Readline/Hoa/StreamContext.php', - 'Psy\\Readline\\Hoa\\StreamException' => $vendorDir . '/psy/psysh/src/Readline/Hoa/StreamException.php', - 'Psy\\Readline\\Hoa\\StreamIn' => $vendorDir . '/psy/psysh/src/Readline/Hoa/StreamIn.php', - 'Psy\\Readline\\Hoa\\StreamLockable' => $vendorDir . '/psy/psysh/src/Readline/Hoa/StreamLockable.php', - 'Psy\\Readline\\Hoa\\StreamOut' => $vendorDir . '/psy/psysh/src/Readline/Hoa/StreamOut.php', - 'Psy\\Readline\\Hoa\\StreamPathable' => $vendorDir . '/psy/psysh/src/Readline/Hoa/StreamPathable.php', - 'Psy\\Readline\\Hoa\\StreamPointable' => $vendorDir . '/psy/psysh/src/Readline/Hoa/StreamPointable.php', - 'Psy\\Readline\\Hoa\\StreamStatable' => $vendorDir . '/psy/psysh/src/Readline/Hoa/StreamStatable.php', - 'Psy\\Readline\\Hoa\\StreamTouchable' => $vendorDir . '/psy/psysh/src/Readline/Hoa/StreamTouchable.php', - 'Psy\\Readline\\Hoa\\Ustring' => $vendorDir . '/psy/psysh/src/Readline/Hoa/Ustring.php', - 'Psy\\Readline\\Hoa\\Xcallable' => $vendorDir . '/psy/psysh/src/Readline/Hoa/Xcallable.php', - 'Psy\\Readline\\Libedit' => $vendorDir . '/psy/psysh/src/Readline/Libedit.php', - 'Psy\\Readline\\Readline' => $vendorDir . '/psy/psysh/src/Readline/Readline.php', - 'Psy\\Readline\\Transient' => $vendorDir . '/psy/psysh/src/Readline/Transient.php', - 'Psy\\Readline\\Userland' => $vendorDir . '/psy/psysh/src/Readline/Userland.php', - 'Psy\\Reflection\\ReflectionConstant' => $vendorDir . '/psy/psysh/src/Reflection/ReflectionConstant.php', - 'Psy\\Reflection\\ReflectionLanguageConstruct' => $vendorDir . '/psy/psysh/src/Reflection/ReflectionLanguageConstruct.php', - 'Psy\\Reflection\\ReflectionLanguageConstructParameter' => $vendorDir . '/psy/psysh/src/Reflection/ReflectionLanguageConstructParameter.php', - 'Psy\\Reflection\\ReflectionNamespace' => $vendorDir . '/psy/psysh/src/Reflection/ReflectionNamespace.php', - 'Psy\\Shell' => $vendorDir . '/psy/psysh/src/Shell.php', - 'Psy\\Sudo' => $vendorDir . '/psy/psysh/src/Sudo.php', - 'Psy\\Sudo\\SudoVisitor' => $vendorDir . '/psy/psysh/src/Sudo/SudoVisitor.php', - 'Psy\\SuperglobalsEnv' => $vendorDir . '/psy/psysh/src/SuperglobalsEnv.php', - 'Psy\\SystemEnv' => $vendorDir . '/psy/psysh/src/SystemEnv.php', - 'Psy\\TabCompletion\\AutoCompleter' => $vendorDir . '/psy/psysh/src/TabCompletion/AutoCompleter.php', - 'Psy\\TabCompletion\\Matcher\\AbstractContextAwareMatcher' => $vendorDir . '/psy/psysh/src/TabCompletion/Matcher/AbstractContextAwareMatcher.php', - 'Psy\\TabCompletion\\Matcher\\AbstractDefaultParametersMatcher' => $vendorDir . '/psy/psysh/src/TabCompletion/Matcher/AbstractDefaultParametersMatcher.php', - 'Psy\\TabCompletion\\Matcher\\AbstractMatcher' => $vendorDir . '/psy/psysh/src/TabCompletion/Matcher/AbstractMatcher.php', - 'Psy\\TabCompletion\\Matcher\\ClassAttributesMatcher' => $vendorDir . '/psy/psysh/src/TabCompletion/Matcher/ClassAttributesMatcher.php', - 'Psy\\TabCompletion\\Matcher\\ClassMethodDefaultParametersMatcher' => $vendorDir . '/psy/psysh/src/TabCompletion/Matcher/ClassMethodDefaultParametersMatcher.php', - 'Psy\\TabCompletion\\Matcher\\ClassMethodsMatcher' => $vendorDir . '/psy/psysh/src/TabCompletion/Matcher/ClassMethodsMatcher.php', - 'Psy\\TabCompletion\\Matcher\\ClassNamesMatcher' => $vendorDir . '/psy/psysh/src/TabCompletion/Matcher/ClassNamesMatcher.php', - 'Psy\\TabCompletion\\Matcher\\CommandsMatcher' => $vendorDir . '/psy/psysh/src/TabCompletion/Matcher/CommandsMatcher.php', - 'Psy\\TabCompletion\\Matcher\\ConstantsMatcher' => $vendorDir . '/psy/psysh/src/TabCompletion/Matcher/ConstantsMatcher.php', - 'Psy\\TabCompletion\\Matcher\\FunctionDefaultParametersMatcher' => $vendorDir . '/psy/psysh/src/TabCompletion/Matcher/FunctionDefaultParametersMatcher.php', - 'Psy\\TabCompletion\\Matcher\\FunctionsMatcher' => $vendorDir . '/psy/psysh/src/TabCompletion/Matcher/FunctionsMatcher.php', - 'Psy\\TabCompletion\\Matcher\\KeywordsMatcher' => $vendorDir . '/psy/psysh/src/TabCompletion/Matcher/KeywordsMatcher.php', - 'Psy\\TabCompletion\\Matcher\\MongoClientMatcher' => $vendorDir . '/psy/psysh/src/TabCompletion/Matcher/MongoClientMatcher.php', - 'Psy\\TabCompletion\\Matcher\\MongoDatabaseMatcher' => $vendorDir . '/psy/psysh/src/TabCompletion/Matcher/MongoDatabaseMatcher.php', - 'Psy\\TabCompletion\\Matcher\\ObjectAttributesMatcher' => $vendorDir . '/psy/psysh/src/TabCompletion/Matcher/ObjectAttributesMatcher.php', - 'Psy\\TabCompletion\\Matcher\\ObjectMethodDefaultParametersMatcher' => $vendorDir . '/psy/psysh/src/TabCompletion/Matcher/ObjectMethodDefaultParametersMatcher.php', - 'Psy\\TabCompletion\\Matcher\\ObjectMethodsMatcher' => $vendorDir . '/psy/psysh/src/TabCompletion/Matcher/ObjectMethodsMatcher.php', - 'Psy\\TabCompletion\\Matcher\\VariablesMatcher' => $vendorDir . '/psy/psysh/src/TabCompletion/Matcher/VariablesMatcher.php', - 'Psy\\Util\\Docblock' => $vendorDir . '/psy/psysh/src/Util/Docblock.php', - 'Psy\\Util\\Json' => $vendorDir . '/psy/psysh/src/Util/Json.php', - 'Psy\\Util\\Mirror' => $vendorDir . '/psy/psysh/src/Util/Mirror.php', - 'Psy\\Util\\Str' => $vendorDir . '/psy/psysh/src/Util/Str.php', - 'Psy\\VarDumper\\Cloner' => $vendorDir . '/psy/psysh/src/VarDumper/Cloner.php', - 'Psy\\VarDumper\\Dumper' => $vendorDir . '/psy/psysh/src/VarDumper/Dumper.php', - 'Psy\\VarDumper\\Presenter' => $vendorDir . '/psy/psysh/src/VarDumper/Presenter.php', - 'Psy\\VarDumper\\PresenterAware' => $vendorDir . '/psy/psysh/src/VarDumper/PresenterAware.php', - 'Psy\\VersionUpdater\\Checker' => $vendorDir . '/psy/psysh/src/VersionUpdater/Checker.php', - 'Psy\\VersionUpdater\\Downloader' => $vendorDir . '/psy/psysh/src/VersionUpdater/Downloader.php', - 'Psy\\VersionUpdater\\Downloader\\CurlDownloader' => $vendorDir . '/psy/psysh/src/VersionUpdater/Downloader/CurlDownloader.php', - 'Psy\\VersionUpdater\\Downloader\\Factory' => $vendorDir . '/psy/psysh/src/VersionUpdater/Downloader/Factory.php', - 'Psy\\VersionUpdater\\Downloader\\FileDownloader' => $vendorDir . '/psy/psysh/src/VersionUpdater/Downloader/FileDownloader.php', - 'Psy\\VersionUpdater\\GitHubChecker' => $vendorDir . '/psy/psysh/src/VersionUpdater/GitHubChecker.php', - 'Psy\\VersionUpdater\\Installer' => $vendorDir . '/psy/psysh/src/VersionUpdater/Installer.php', - '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', - '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', - 'Ramsey\\Collection\\ArrayInterface' => $vendorDir . '/ramsey/collection/src/ArrayInterface.php', - 'Ramsey\\Collection\\Collection' => $vendorDir . '/ramsey/collection/src/Collection.php', - 'Ramsey\\Collection\\CollectionInterface' => $vendorDir . '/ramsey/collection/src/CollectionInterface.php', - 'Ramsey\\Collection\\DoubleEndedQueue' => $vendorDir . '/ramsey/collection/src/DoubleEndedQueue.php', - 'Ramsey\\Collection\\DoubleEndedQueueInterface' => $vendorDir . '/ramsey/collection/src/DoubleEndedQueueInterface.php', - 'Ramsey\\Collection\\Exception\\CollectionException' => $vendorDir . '/ramsey/collection/src/Exception/CollectionException.php', - 'Ramsey\\Collection\\Exception\\CollectionMismatchException' => $vendorDir . '/ramsey/collection/src/Exception/CollectionMismatchException.php', - 'Ramsey\\Collection\\Exception\\InvalidArgumentException' => $vendorDir . '/ramsey/collection/src/Exception/InvalidArgumentException.php', - 'Ramsey\\Collection\\Exception\\InvalidPropertyOrMethod' => $vendorDir . '/ramsey/collection/src/Exception/InvalidPropertyOrMethod.php', - 'Ramsey\\Collection\\Exception\\NoSuchElementException' => $vendorDir . '/ramsey/collection/src/Exception/NoSuchElementException.php', - 'Ramsey\\Collection\\Exception\\OutOfBoundsException' => $vendorDir . '/ramsey/collection/src/Exception/OutOfBoundsException.php', - 'Ramsey\\Collection\\Exception\\UnsupportedOperationException' => $vendorDir . '/ramsey/collection/src/Exception/UnsupportedOperationException.php', - 'Ramsey\\Collection\\GenericArray' => $vendorDir . '/ramsey/collection/src/GenericArray.php', - 'Ramsey\\Collection\\Map\\AbstractMap' => $vendorDir . '/ramsey/collection/src/Map/AbstractMap.php', - 'Ramsey\\Collection\\Map\\AbstractTypedMap' => $vendorDir . '/ramsey/collection/src/Map/AbstractTypedMap.php', - 'Ramsey\\Collection\\Map\\AssociativeArrayMap' => $vendorDir . '/ramsey/collection/src/Map/AssociativeArrayMap.php', - 'Ramsey\\Collection\\Map\\MapInterface' => $vendorDir . '/ramsey/collection/src/Map/MapInterface.php', - 'Ramsey\\Collection\\Map\\NamedParameterMap' => $vendorDir . '/ramsey/collection/src/Map/NamedParameterMap.php', - 'Ramsey\\Collection\\Map\\TypedMap' => $vendorDir . '/ramsey/collection/src/Map/TypedMap.php', - 'Ramsey\\Collection\\Map\\TypedMapInterface' => $vendorDir . '/ramsey/collection/src/Map/TypedMapInterface.php', - 'Ramsey\\Collection\\Queue' => $vendorDir . '/ramsey/collection/src/Queue.php', - 'Ramsey\\Collection\\QueueInterface' => $vendorDir . '/ramsey/collection/src/QueueInterface.php', - 'Ramsey\\Collection\\Set' => $vendorDir . '/ramsey/collection/src/Set.php', - 'Ramsey\\Collection\\Sort' => $vendorDir . '/ramsey/collection/src/Sort.php', - 'Ramsey\\Collection\\Tool\\TypeTrait' => $vendorDir . '/ramsey/collection/src/Tool/TypeTrait.php', - 'Ramsey\\Collection\\Tool\\ValueExtractorTrait' => $vendorDir . '/ramsey/collection/src/Tool/ValueExtractorTrait.php', - 'Ramsey\\Collection\\Tool\\ValueToStringTrait' => $vendorDir . '/ramsey/collection/src/Tool/ValueToStringTrait.php', - 'Ramsey\\Uuid\\BinaryUtils' => $vendorDir . '/ramsey/uuid/src/BinaryUtils.php', - 'Ramsey\\Uuid\\Builder\\BuilderCollection' => $vendorDir . '/ramsey/uuid/src/Builder/BuilderCollection.php', - 'Ramsey\\Uuid\\Builder\\DefaultUuidBuilder' => $vendorDir . '/ramsey/uuid/src/Builder/DefaultUuidBuilder.php', - 'Ramsey\\Uuid\\Builder\\DegradedUuidBuilder' => $vendorDir . '/ramsey/uuid/src/Builder/DegradedUuidBuilder.php', - 'Ramsey\\Uuid\\Builder\\FallbackBuilder' => $vendorDir . '/ramsey/uuid/src/Builder/FallbackBuilder.php', - 'Ramsey\\Uuid\\Builder\\UuidBuilderInterface' => $vendorDir . '/ramsey/uuid/src/Builder/UuidBuilderInterface.php', - 'Ramsey\\Uuid\\Codec\\CodecInterface' => $vendorDir . '/ramsey/uuid/src/Codec/CodecInterface.php', - 'Ramsey\\Uuid\\Codec\\GuidStringCodec' => $vendorDir . '/ramsey/uuid/src/Codec/GuidStringCodec.php', - 'Ramsey\\Uuid\\Codec\\OrderedTimeCodec' => $vendorDir . '/ramsey/uuid/src/Codec/OrderedTimeCodec.php', - 'Ramsey\\Uuid\\Codec\\StringCodec' => $vendorDir . '/ramsey/uuid/src/Codec/StringCodec.php', - 'Ramsey\\Uuid\\Codec\\TimestampFirstCombCodec' => $vendorDir . '/ramsey/uuid/src/Codec/TimestampFirstCombCodec.php', - 'Ramsey\\Uuid\\Codec\\TimestampLastCombCodec' => $vendorDir . '/ramsey/uuid/src/Codec/TimestampLastCombCodec.php', - 'Ramsey\\Uuid\\Converter\\NumberConverterInterface' => $vendorDir . '/ramsey/uuid/src/Converter/NumberConverterInterface.php', - 'Ramsey\\Uuid\\Converter\\Number\\BigNumberConverter' => $vendorDir . '/ramsey/uuid/src/Converter/Number/BigNumberConverter.php', - 'Ramsey\\Uuid\\Converter\\Number\\DegradedNumberConverter' => $vendorDir . '/ramsey/uuid/src/Converter/Number/DegradedNumberConverter.php', - 'Ramsey\\Uuid\\Converter\\Number\\GenericNumberConverter' => $vendorDir . '/ramsey/uuid/src/Converter/Number/GenericNumberConverter.php', - 'Ramsey\\Uuid\\Converter\\TimeConverterInterface' => $vendorDir . '/ramsey/uuid/src/Converter/TimeConverterInterface.php', - 'Ramsey\\Uuid\\Converter\\Time\\BigNumberTimeConverter' => $vendorDir . '/ramsey/uuid/src/Converter/Time/BigNumberTimeConverter.php', - 'Ramsey\\Uuid\\Converter\\Time\\DegradedTimeConverter' => $vendorDir . '/ramsey/uuid/src/Converter/Time/DegradedTimeConverter.php', - 'Ramsey\\Uuid\\Converter\\Time\\GenericTimeConverter' => $vendorDir . '/ramsey/uuid/src/Converter/Time/GenericTimeConverter.php', - 'Ramsey\\Uuid\\Converter\\Time\\PhpTimeConverter' => $vendorDir . '/ramsey/uuid/src/Converter/Time/PhpTimeConverter.php', - 'Ramsey\\Uuid\\Converter\\Time\\UnixTimeConverter' => $vendorDir . '/ramsey/uuid/src/Converter/Time/UnixTimeConverter.php', - 'Ramsey\\Uuid\\DegradedUuid' => $vendorDir . '/ramsey/uuid/src/DegradedUuid.php', - 'Ramsey\\Uuid\\DeprecatedUuidInterface' => $vendorDir . '/ramsey/uuid/src/DeprecatedUuidInterface.php', - 'Ramsey\\Uuid\\DeprecatedUuidMethodsTrait' => $vendorDir . '/ramsey/uuid/src/DeprecatedUuidMethodsTrait.php', - 'Ramsey\\Uuid\\Exception\\BuilderNotFoundException' => $vendorDir . '/ramsey/uuid/src/Exception/BuilderNotFoundException.php', - 'Ramsey\\Uuid\\Exception\\DateTimeException' => $vendorDir . '/ramsey/uuid/src/Exception/DateTimeException.php', - 'Ramsey\\Uuid\\Exception\\DceSecurityException' => $vendorDir . '/ramsey/uuid/src/Exception/DceSecurityException.php', - 'Ramsey\\Uuid\\Exception\\InvalidArgumentException' => $vendorDir . '/ramsey/uuid/src/Exception/InvalidArgumentException.php', - 'Ramsey\\Uuid\\Exception\\InvalidBytesException' => $vendorDir . '/ramsey/uuid/src/Exception/InvalidBytesException.php', - 'Ramsey\\Uuid\\Exception\\InvalidUuidStringException' => $vendorDir . '/ramsey/uuid/src/Exception/InvalidUuidStringException.php', - 'Ramsey\\Uuid\\Exception\\NameException' => $vendorDir . '/ramsey/uuid/src/Exception/NameException.php', - 'Ramsey\\Uuid\\Exception\\NodeException' => $vendorDir . '/ramsey/uuid/src/Exception/NodeException.php', - 'Ramsey\\Uuid\\Exception\\RandomSourceException' => $vendorDir . '/ramsey/uuid/src/Exception/RandomSourceException.php', - 'Ramsey\\Uuid\\Exception\\TimeSourceException' => $vendorDir . '/ramsey/uuid/src/Exception/TimeSourceException.php', - 'Ramsey\\Uuid\\Exception\\UnableToBuildUuidException' => $vendorDir . '/ramsey/uuid/src/Exception/UnableToBuildUuidException.php', - 'Ramsey\\Uuid\\Exception\\UnsupportedOperationException' => $vendorDir . '/ramsey/uuid/src/Exception/UnsupportedOperationException.php', - 'Ramsey\\Uuid\\Exception\\UuidExceptionInterface' => $vendorDir . '/ramsey/uuid/src/Exception/UuidExceptionInterface.php', - 'Ramsey\\Uuid\\FeatureSet' => $vendorDir . '/ramsey/uuid/src/FeatureSet.php', - 'Ramsey\\Uuid\\Fields\\FieldsInterface' => $vendorDir . '/ramsey/uuid/src/Fields/FieldsInterface.php', - 'Ramsey\\Uuid\\Fields\\SerializableFieldsTrait' => $vendorDir . '/ramsey/uuid/src/Fields/SerializableFieldsTrait.php', - 'Ramsey\\Uuid\\Generator\\CombGenerator' => $vendorDir . '/ramsey/uuid/src/Generator/CombGenerator.php', - 'Ramsey\\Uuid\\Generator\\DceSecurityGenerator' => $vendorDir . '/ramsey/uuid/src/Generator/DceSecurityGenerator.php', - 'Ramsey\\Uuid\\Generator\\DceSecurityGeneratorInterface' => $vendorDir . '/ramsey/uuid/src/Generator/DceSecurityGeneratorInterface.php', - 'Ramsey\\Uuid\\Generator\\DefaultNameGenerator' => $vendorDir . '/ramsey/uuid/src/Generator/DefaultNameGenerator.php', - 'Ramsey\\Uuid\\Generator\\DefaultTimeGenerator' => $vendorDir . '/ramsey/uuid/src/Generator/DefaultTimeGenerator.php', - 'Ramsey\\Uuid\\Generator\\NameGeneratorFactory' => $vendorDir . '/ramsey/uuid/src/Generator/NameGeneratorFactory.php', - 'Ramsey\\Uuid\\Generator\\NameGeneratorInterface' => $vendorDir . '/ramsey/uuid/src/Generator/NameGeneratorInterface.php', - 'Ramsey\\Uuid\\Generator\\PeclUuidNameGenerator' => $vendorDir . '/ramsey/uuid/src/Generator/PeclUuidNameGenerator.php', - 'Ramsey\\Uuid\\Generator\\PeclUuidRandomGenerator' => $vendorDir . '/ramsey/uuid/src/Generator/PeclUuidRandomGenerator.php', - 'Ramsey\\Uuid\\Generator\\PeclUuidTimeGenerator' => $vendorDir . '/ramsey/uuid/src/Generator/PeclUuidTimeGenerator.php', - 'Ramsey\\Uuid\\Generator\\RandomBytesGenerator' => $vendorDir . '/ramsey/uuid/src/Generator/RandomBytesGenerator.php', - 'Ramsey\\Uuid\\Generator\\RandomGeneratorFactory' => $vendorDir . '/ramsey/uuid/src/Generator/RandomGeneratorFactory.php', - 'Ramsey\\Uuid\\Generator\\RandomGeneratorInterface' => $vendorDir . '/ramsey/uuid/src/Generator/RandomGeneratorInterface.php', - 'Ramsey\\Uuid\\Generator\\RandomLibAdapter' => $vendorDir . '/ramsey/uuid/src/Generator/RandomLibAdapter.php', - 'Ramsey\\Uuid\\Generator\\TimeGeneratorFactory' => $vendorDir . '/ramsey/uuid/src/Generator/TimeGeneratorFactory.php', - 'Ramsey\\Uuid\\Generator\\TimeGeneratorInterface' => $vendorDir . '/ramsey/uuid/src/Generator/TimeGeneratorInterface.php', - 'Ramsey\\Uuid\\Generator\\UnixTimeGenerator' => $vendorDir . '/ramsey/uuid/src/Generator/UnixTimeGenerator.php', - 'Ramsey\\Uuid\\Guid\\Fields' => $vendorDir . '/ramsey/uuid/src/Guid/Fields.php', - 'Ramsey\\Uuid\\Guid\\Guid' => $vendorDir . '/ramsey/uuid/src/Guid/Guid.php', - 'Ramsey\\Uuid\\Guid\\GuidBuilder' => $vendorDir . '/ramsey/uuid/src/Guid/GuidBuilder.php', - 'Ramsey\\Uuid\\Lazy\\LazyUuidFromString' => $vendorDir . '/ramsey/uuid/src/Lazy/LazyUuidFromString.php', - 'Ramsey\\Uuid\\Math\\BrickMathCalculator' => $vendorDir . '/ramsey/uuid/src/Math/BrickMathCalculator.php', - 'Ramsey\\Uuid\\Math\\CalculatorInterface' => $vendorDir . '/ramsey/uuid/src/Math/CalculatorInterface.php', - 'Ramsey\\Uuid\\Math\\RoundingMode' => $vendorDir . '/ramsey/uuid/src/Math/RoundingMode.php', - 'Ramsey\\Uuid\\Nonstandard\\Fields' => $vendorDir . '/ramsey/uuid/src/Nonstandard/Fields.php', - 'Ramsey\\Uuid\\Nonstandard\\Uuid' => $vendorDir . '/ramsey/uuid/src/Nonstandard/Uuid.php', - 'Ramsey\\Uuid\\Nonstandard\\UuidBuilder' => $vendorDir . '/ramsey/uuid/src/Nonstandard/UuidBuilder.php', - 'Ramsey\\Uuid\\Nonstandard\\UuidV6' => $vendorDir . '/ramsey/uuid/src/Nonstandard/UuidV6.php', - 'Ramsey\\Uuid\\Provider\\DceSecurityProviderInterface' => $vendorDir . '/ramsey/uuid/src/Provider/DceSecurityProviderInterface.php', - 'Ramsey\\Uuid\\Provider\\Dce\\SystemDceSecurityProvider' => $vendorDir . '/ramsey/uuid/src/Provider/Dce/SystemDceSecurityProvider.php', - 'Ramsey\\Uuid\\Provider\\NodeProviderInterface' => $vendorDir . '/ramsey/uuid/src/Provider/NodeProviderInterface.php', - 'Ramsey\\Uuid\\Provider\\Node\\FallbackNodeProvider' => $vendorDir . '/ramsey/uuid/src/Provider/Node/FallbackNodeProvider.php', - 'Ramsey\\Uuid\\Provider\\Node\\NodeProviderCollection' => $vendorDir . '/ramsey/uuid/src/Provider/Node/NodeProviderCollection.php', - 'Ramsey\\Uuid\\Provider\\Node\\RandomNodeProvider' => $vendorDir . '/ramsey/uuid/src/Provider/Node/RandomNodeProvider.php', - 'Ramsey\\Uuid\\Provider\\Node\\StaticNodeProvider' => $vendorDir . '/ramsey/uuid/src/Provider/Node/StaticNodeProvider.php', - 'Ramsey\\Uuid\\Provider\\Node\\SystemNodeProvider' => $vendorDir . '/ramsey/uuid/src/Provider/Node/SystemNodeProvider.php', - 'Ramsey\\Uuid\\Provider\\TimeProviderInterface' => $vendorDir . '/ramsey/uuid/src/Provider/TimeProviderInterface.php', - 'Ramsey\\Uuid\\Provider\\Time\\FixedTimeProvider' => $vendorDir . '/ramsey/uuid/src/Provider/Time/FixedTimeProvider.php', - 'Ramsey\\Uuid\\Provider\\Time\\SystemTimeProvider' => $vendorDir . '/ramsey/uuid/src/Provider/Time/SystemTimeProvider.php', - 'Ramsey\\Uuid\\Rfc4122\\Fields' => $vendorDir . '/ramsey/uuid/src/Rfc4122/Fields.php', - 'Ramsey\\Uuid\\Rfc4122\\FieldsInterface' => $vendorDir . '/ramsey/uuid/src/Rfc4122/FieldsInterface.php', - 'Ramsey\\Uuid\\Rfc4122\\MaxTrait' => $vendorDir . '/ramsey/uuid/src/Rfc4122/MaxTrait.php', - 'Ramsey\\Uuid\\Rfc4122\\MaxUuid' => $vendorDir . '/ramsey/uuid/src/Rfc4122/MaxUuid.php', - 'Ramsey\\Uuid\\Rfc4122\\NilTrait' => $vendorDir . '/ramsey/uuid/src/Rfc4122/NilTrait.php', - 'Ramsey\\Uuid\\Rfc4122\\NilUuid' => $vendorDir . '/ramsey/uuid/src/Rfc4122/NilUuid.php', - 'Ramsey\\Uuid\\Rfc4122\\TimeTrait' => $vendorDir . '/ramsey/uuid/src/Rfc4122/TimeTrait.php', - 'Ramsey\\Uuid\\Rfc4122\\UuidBuilder' => $vendorDir . '/ramsey/uuid/src/Rfc4122/UuidBuilder.php', - 'Ramsey\\Uuid\\Rfc4122\\UuidInterface' => $vendorDir . '/ramsey/uuid/src/Rfc4122/UuidInterface.php', - 'Ramsey\\Uuid\\Rfc4122\\UuidV1' => $vendorDir . '/ramsey/uuid/src/Rfc4122/UuidV1.php', - 'Ramsey\\Uuid\\Rfc4122\\UuidV2' => $vendorDir . '/ramsey/uuid/src/Rfc4122/UuidV2.php', - 'Ramsey\\Uuid\\Rfc4122\\UuidV3' => $vendorDir . '/ramsey/uuid/src/Rfc4122/UuidV3.php', - 'Ramsey\\Uuid\\Rfc4122\\UuidV4' => $vendorDir . '/ramsey/uuid/src/Rfc4122/UuidV4.php', - 'Ramsey\\Uuid\\Rfc4122\\UuidV5' => $vendorDir . '/ramsey/uuid/src/Rfc4122/UuidV5.php', - 'Ramsey\\Uuid\\Rfc4122\\UuidV6' => $vendorDir . '/ramsey/uuid/src/Rfc4122/UuidV6.php', - 'Ramsey\\Uuid\\Rfc4122\\UuidV7' => $vendorDir . '/ramsey/uuid/src/Rfc4122/UuidV7.php', - 'Ramsey\\Uuid\\Rfc4122\\UuidV8' => $vendorDir . '/ramsey/uuid/src/Rfc4122/UuidV8.php', - 'Ramsey\\Uuid\\Rfc4122\\Validator' => $vendorDir . '/ramsey/uuid/src/Rfc4122/Validator.php', - 'Ramsey\\Uuid\\Rfc4122\\VariantTrait' => $vendorDir . '/ramsey/uuid/src/Rfc4122/VariantTrait.php', - 'Ramsey\\Uuid\\Rfc4122\\VersionTrait' => $vendorDir . '/ramsey/uuid/src/Rfc4122/VersionTrait.php', - 'Ramsey\\Uuid\\Type\\Decimal' => $vendorDir . '/ramsey/uuid/src/Type/Decimal.php', - 'Ramsey\\Uuid\\Type\\Hexadecimal' => $vendorDir . '/ramsey/uuid/src/Type/Hexadecimal.php', - 'Ramsey\\Uuid\\Type\\Integer' => $vendorDir . '/ramsey/uuid/src/Type/Integer.php', - 'Ramsey\\Uuid\\Type\\NumberInterface' => $vendorDir . '/ramsey/uuid/src/Type/NumberInterface.php', - 'Ramsey\\Uuid\\Type\\Time' => $vendorDir . '/ramsey/uuid/src/Type/Time.php', - 'Ramsey\\Uuid\\Type\\TypeInterface' => $vendorDir . '/ramsey/uuid/src/Type/TypeInterface.php', - 'Ramsey\\Uuid\\Uuid' => $vendorDir . '/ramsey/uuid/src/Uuid.php', - 'Ramsey\\Uuid\\UuidFactory' => $vendorDir . '/ramsey/uuid/src/UuidFactory.php', - 'Ramsey\\Uuid\\UuidFactoryInterface' => $vendorDir . '/ramsey/uuid/src/UuidFactoryInterface.php', - 'Ramsey\\Uuid\\UuidInterface' => $vendorDir . '/ramsey/uuid/src/UuidInterface.php', - 'Ramsey\\Uuid\\Validator\\GenericValidator' => $vendorDir . '/ramsey/uuid/src/Validator/GenericValidator.php', - 'Ramsey\\Uuid\\Validator\\ValidatorInterface' => $vendorDir . '/ramsey/uuid/src/Validator/ValidatorInterface.php', - 'SQLite3Exception' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/SQLite3Exception.php', - 'Sabberworm\\CSS\\CSSList\\AtRuleBlockList' => $vendorDir . '/sabberworm/php-css-parser/src/CSSList/AtRuleBlockList.php', - 'Sabberworm\\CSS\\CSSList\\CSSBlockList' => $vendorDir . '/sabberworm/php-css-parser/src/CSSList/CSSBlockList.php', - 'Sabberworm\\CSS\\CSSList\\CSSList' => $vendorDir . '/sabberworm/php-css-parser/src/CSSList/CSSList.php', - 'Sabberworm\\CSS\\CSSList\\Document' => $vendorDir . '/sabberworm/php-css-parser/src/CSSList/Document.php', - 'Sabberworm\\CSS\\CSSList\\KeyFrame' => $vendorDir . '/sabberworm/php-css-parser/src/CSSList/KeyFrame.php', - 'Sabberworm\\CSS\\Comment\\Comment' => $vendorDir . '/sabberworm/php-css-parser/src/Comment/Comment.php', - 'Sabberworm\\CSS\\Comment\\Commentable' => $vendorDir . '/sabberworm/php-css-parser/src/Comment/Commentable.php', - 'Sabberworm\\CSS\\OutputFormat' => $vendorDir . '/sabberworm/php-css-parser/src/OutputFormat.php', - 'Sabberworm\\CSS\\OutputFormatter' => $vendorDir . '/sabberworm/php-css-parser/src/OutputFormatter.php', - 'Sabberworm\\CSS\\Parser' => $vendorDir . '/sabberworm/php-css-parser/src/Parser.php', - 'Sabberworm\\CSS\\Parsing\\Anchor' => $vendorDir . '/sabberworm/php-css-parser/src/Parsing/Anchor.php', - 'Sabberworm\\CSS\\Parsing\\OutputException' => $vendorDir . '/sabberworm/php-css-parser/src/Parsing/OutputException.php', - 'Sabberworm\\CSS\\Parsing\\ParserState' => $vendorDir . '/sabberworm/php-css-parser/src/Parsing/ParserState.php', - 'Sabberworm\\CSS\\Parsing\\SourceException' => $vendorDir . '/sabberworm/php-css-parser/src/Parsing/SourceException.php', - 'Sabberworm\\CSS\\Parsing\\UnexpectedEOFException' => $vendorDir . '/sabberworm/php-css-parser/src/Parsing/UnexpectedEOFException.php', - 'Sabberworm\\CSS\\Parsing\\UnexpectedTokenException' => $vendorDir . '/sabberworm/php-css-parser/src/Parsing/UnexpectedTokenException.php', - 'Sabberworm\\CSS\\Property\\AtRule' => $vendorDir . '/sabberworm/php-css-parser/src/Property/AtRule.php', - 'Sabberworm\\CSS\\Property\\CSSNamespace' => $vendorDir . '/sabberworm/php-css-parser/src/Property/CSSNamespace.php', - 'Sabberworm\\CSS\\Property\\Charset' => $vendorDir . '/sabberworm/php-css-parser/src/Property/Charset.php', - 'Sabberworm\\CSS\\Property\\Import' => $vendorDir . '/sabberworm/php-css-parser/src/Property/Import.php', - 'Sabberworm\\CSS\\Property\\KeyframeSelector' => $vendorDir . '/sabberworm/php-css-parser/src/Property/KeyframeSelector.php', - 'Sabberworm\\CSS\\Property\\Selector' => $vendorDir . '/sabberworm/php-css-parser/src/Property/Selector.php', - 'Sabberworm\\CSS\\Renderable' => $vendorDir . '/sabberworm/php-css-parser/src/Renderable.php', - 'Sabberworm\\CSS\\RuleSet\\AtRuleSet' => $vendorDir . '/sabberworm/php-css-parser/src/RuleSet/AtRuleSet.php', - 'Sabberworm\\CSS\\RuleSet\\DeclarationBlock' => $vendorDir . '/sabberworm/php-css-parser/src/RuleSet/DeclarationBlock.php', - 'Sabberworm\\CSS\\RuleSet\\RuleSet' => $vendorDir . '/sabberworm/php-css-parser/src/RuleSet/RuleSet.php', - 'Sabberworm\\CSS\\Rule\\Rule' => $vendorDir . '/sabberworm/php-css-parser/src/Rule/Rule.php', - 'Sabberworm\\CSS\\Settings' => $vendorDir . '/sabberworm/php-css-parser/src/Settings.php', - 'Sabberworm\\CSS\\Value\\CSSFunction' => $vendorDir . '/sabberworm/php-css-parser/src/Value/CSSFunction.php', - 'Sabberworm\\CSS\\Value\\CSSString' => $vendorDir . '/sabberworm/php-css-parser/src/Value/CSSString.php', - 'Sabberworm\\CSS\\Value\\CalcFunction' => $vendorDir . '/sabberworm/php-css-parser/src/Value/CalcFunction.php', - 'Sabberworm\\CSS\\Value\\CalcRuleValueList' => $vendorDir . '/sabberworm/php-css-parser/src/Value/CalcRuleValueList.php', - 'Sabberworm\\CSS\\Value\\Color' => $vendorDir . '/sabberworm/php-css-parser/src/Value/Color.php', - 'Sabberworm\\CSS\\Value\\LineName' => $vendorDir . '/sabberworm/php-css-parser/src/Value/LineName.php', - 'Sabberworm\\CSS\\Value\\PrimitiveValue' => $vendorDir . '/sabberworm/php-css-parser/src/Value/PrimitiveValue.php', - 'Sabberworm\\CSS\\Value\\RuleValueList' => $vendorDir . '/sabberworm/php-css-parser/src/Value/RuleValueList.php', - 'Sabberworm\\CSS\\Value\\Size' => $vendorDir . '/sabberworm/php-css-parser/src/Value/Size.php', - 'Sabberworm\\CSS\\Value\\URL' => $vendorDir . '/sabberworm/php-css-parser/src/Value/URL.php', - 'Sabberworm\\CSS\\Value\\Value' => $vendorDir . '/sabberworm/php-css-parser/src/Value/Value.php', - 'Sabberworm\\CSS\\Value\\ValueList' => $vendorDir . '/sabberworm/php-css-parser/src/Value/ValueList.php', - 'SebastianBergmann\\CliParser\\AmbiguousOptionException' => $vendorDir . '/sebastian/cli-parser/src/exceptions/AmbiguousOptionException.php', - 'SebastianBergmann\\CliParser\\Exception' => $vendorDir . '/sebastian/cli-parser/src/exceptions/Exception.php', - 'SebastianBergmann\\CliParser\\OptionDoesNotAllowArgumentException' => $vendorDir . '/sebastian/cli-parser/src/exceptions/OptionDoesNotAllowArgumentException.php', - 'SebastianBergmann\\CliParser\\Parser' => $vendorDir . '/sebastian/cli-parser/src/Parser.php', - 'SebastianBergmann\\CliParser\\RequiredOptionArgumentMissingException' => $vendorDir . '/sebastian/cli-parser/src/exceptions/RequiredOptionArgumentMissingException.php', - 'SebastianBergmann\\CliParser\\UnknownOptionException' => $vendorDir . '/sebastian/cli-parser/src/exceptions/UnknownOptionException.php', - 'SebastianBergmann\\CodeCoverage\\BranchAndPathCoverageNotSupportedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/BranchAndPathCoverageNotSupportedException.php', - 'SebastianBergmann\\CodeCoverage\\CodeCoverage' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage.php', - 'SebastianBergmann\\CodeCoverage\\Data\\ProcessedCodeCoverageData' => $vendorDir . '/phpunit/php-code-coverage/src/Data/ProcessedCodeCoverageData.php', - 'SebastianBergmann\\CodeCoverage\\Data\\RawCodeCoverageData' => $vendorDir . '/phpunit/php-code-coverage/src/Data/RawCodeCoverageData.php', - 'SebastianBergmann\\CodeCoverage\\DeadCodeDetectionNotSupportedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/DeadCodeDetectionNotSupportedException.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\Driver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Driver.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\PathExistsButIsNotDirectoryException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/PathExistsButIsNotDirectoryException.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\PcovDriver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/PcovDriver.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\PcovNotAvailableException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/PcovNotAvailableException.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\Selector' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Selector.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\WriteOperationFailedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/WriteOperationFailedException.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\XdebugDriver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/XdebugDriver.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\XdebugNotAvailableException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/XdebugNotAvailableException.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\XdebugNotEnabledException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/XdebugNotEnabledException.php', - 'SebastianBergmann\\CodeCoverage\\Exception' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/Exception.php', - 'SebastianBergmann\\CodeCoverage\\FileCouldNotBeWrittenException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/FileCouldNotBeWrittenException.php', - 'SebastianBergmann\\CodeCoverage\\Filter' => $vendorDir . '/phpunit/php-code-coverage/src/Filter.php', - 'SebastianBergmann\\CodeCoverage\\InvalidArgumentException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php', - 'SebastianBergmann\\CodeCoverage\\NoCodeCoverageDriverAvailableException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/NoCodeCoverageDriverAvailableException.php', - 'SebastianBergmann\\CodeCoverage\\NoCodeCoverageDriverWithPathCoverageSupportAvailableException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/NoCodeCoverageDriverWithPathCoverageSupportAvailableException.php', - 'SebastianBergmann\\CodeCoverage\\Node\\AbstractNode' => $vendorDir . '/phpunit/php-code-coverage/src/Node/AbstractNode.php', - 'SebastianBergmann\\CodeCoverage\\Node\\Builder' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Builder.php', - 'SebastianBergmann\\CodeCoverage\\Node\\CrapIndex' => $vendorDir . '/phpunit/php-code-coverage/src/Node/CrapIndex.php', - 'SebastianBergmann\\CodeCoverage\\Node\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Directory.php', - 'SebastianBergmann\\CodeCoverage\\Node\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Node/File.php', - 'SebastianBergmann\\CodeCoverage\\Node\\Iterator' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Iterator.php', - 'SebastianBergmann\\CodeCoverage\\ParserException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/ParserException.php', - 'SebastianBergmann\\CodeCoverage\\ReflectionException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/ReflectionException.php', - 'SebastianBergmann\\CodeCoverage\\ReportAlreadyFinalizedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/ReportAlreadyFinalizedException.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Clover' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Clover.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Cobertura' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Cobertura.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Crap4j' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Crap4j.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Colors' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Colors.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\CustomCssFile' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/CustomCssFile.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Dashboard' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Facade' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Facade.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Renderer' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer.php', - 'SebastianBergmann\\CodeCoverage\\Report\\PHP' => $vendorDir . '/phpunit/php-code-coverage/src/Report/PHP.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Text' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Text.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Thresholds' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Thresholds.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\BuildInformation' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/BuildInformation.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Coverage' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Coverage.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Directory.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Facade' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Facade.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/File.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Method' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Method.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Node' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Node.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Project' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Project.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Report' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Report.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Source' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Source.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Tests' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Tests.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Totals' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Totals.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Unit' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Unit.php', - 'SebastianBergmann\\CodeCoverage\\StaticAnalysisCacheNotConfiguredException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/StaticAnalysisCacheNotConfiguredException.php', - 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CacheWarmer' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/CacheWarmer.php', - 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CachingFileAnalyser' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/CachingFileAnalyser.php', - 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CodeUnitFindingVisitor' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/CodeUnitFindingVisitor.php', - 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\ExecutableLinesFindingVisitor' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/ExecutableLinesFindingVisitor.php', - 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\FileAnalyser' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/FileAnalyser.php', - 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\IgnoredLinesFindingVisitor' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/IgnoredLinesFindingVisitor.php', - 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\ParsingFileAnalyser' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/ParsingFileAnalyser.php', - 'SebastianBergmann\\CodeCoverage\\TestIdMissingException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/TestIdMissingException.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\Known' => $vendorDir . '/phpunit/php-code-coverage/src/TestSize/Known.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\Large' => $vendorDir . '/phpunit/php-code-coverage/src/TestSize/Large.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\Medium' => $vendorDir . '/phpunit/php-code-coverage/src/TestSize/Medium.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\Small' => $vendorDir . '/phpunit/php-code-coverage/src/TestSize/Small.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\TestSize' => $vendorDir . '/phpunit/php-code-coverage/src/TestSize/TestSize.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\Unknown' => $vendorDir . '/phpunit/php-code-coverage/src/TestSize/Unknown.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestStatus\\Failure' => $vendorDir . '/phpunit/php-code-coverage/src/TestStatus/Failure.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestStatus\\Known' => $vendorDir . '/phpunit/php-code-coverage/src/TestStatus/Known.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestStatus\\Success' => $vendorDir . '/phpunit/php-code-coverage/src/TestStatus/Success.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestStatus\\TestStatus' => $vendorDir . '/phpunit/php-code-coverage/src/TestStatus/TestStatus.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestStatus\\Unknown' => $vendorDir . '/phpunit/php-code-coverage/src/TestStatus/Unknown.php', - 'SebastianBergmann\\CodeCoverage\\UnintentionallyCoveredCodeException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php', - 'SebastianBergmann\\CodeCoverage\\Util\\DirectoryCouldNotBeCreatedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/DirectoryCouldNotBeCreatedException.php', - 'SebastianBergmann\\CodeCoverage\\Util\\Filesystem' => $vendorDir . '/phpunit/php-code-coverage/src/Util/Filesystem.php', - 'SebastianBergmann\\CodeCoverage\\Util\\Percentage' => $vendorDir . '/phpunit/php-code-coverage/src/Util/Percentage.php', - 'SebastianBergmann\\CodeCoverage\\Version' => $vendorDir . '/phpunit/php-code-coverage/src/Version.php', - 'SebastianBergmann\\CodeCoverage\\XmlException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/XmlException.php', - 'SebastianBergmann\\CodeUnitReverseLookup\\Wizard' => $vendorDir . '/sebastian/code-unit-reverse-lookup/src/Wizard.php', - 'SebastianBergmann\\CodeUnit\\ClassMethodUnit' => $vendorDir . '/sebastian/code-unit/src/ClassMethodUnit.php', - 'SebastianBergmann\\CodeUnit\\ClassUnit' => $vendorDir . '/sebastian/code-unit/src/ClassUnit.php', - 'SebastianBergmann\\CodeUnit\\CodeUnit' => $vendorDir . '/sebastian/code-unit/src/CodeUnit.php', - 'SebastianBergmann\\CodeUnit\\CodeUnitCollection' => $vendorDir . '/sebastian/code-unit/src/CodeUnitCollection.php', - 'SebastianBergmann\\CodeUnit\\CodeUnitCollectionIterator' => $vendorDir . '/sebastian/code-unit/src/CodeUnitCollectionIterator.php', - 'SebastianBergmann\\CodeUnit\\Exception' => $vendorDir . '/sebastian/code-unit/src/exceptions/Exception.php', - 'SebastianBergmann\\CodeUnit\\FileUnit' => $vendorDir . '/sebastian/code-unit/src/FileUnit.php', - 'SebastianBergmann\\CodeUnit\\FunctionUnit' => $vendorDir . '/sebastian/code-unit/src/FunctionUnit.php', - 'SebastianBergmann\\CodeUnit\\InterfaceMethodUnit' => $vendorDir . '/sebastian/code-unit/src/InterfaceMethodUnit.php', - 'SebastianBergmann\\CodeUnit\\InterfaceUnit' => $vendorDir . '/sebastian/code-unit/src/InterfaceUnit.php', - 'SebastianBergmann\\CodeUnit\\InvalidCodeUnitException' => $vendorDir . '/sebastian/code-unit/src/exceptions/InvalidCodeUnitException.php', - 'SebastianBergmann\\CodeUnit\\Mapper' => $vendorDir . '/sebastian/code-unit/src/Mapper.php', - 'SebastianBergmann\\CodeUnit\\NoTraitException' => $vendorDir . '/sebastian/code-unit/src/exceptions/NoTraitException.php', - 'SebastianBergmann\\CodeUnit\\ReflectionException' => $vendorDir . '/sebastian/code-unit/src/exceptions/ReflectionException.php', - 'SebastianBergmann\\CodeUnit\\TraitMethodUnit' => $vendorDir . '/sebastian/code-unit/src/TraitMethodUnit.php', - 'SebastianBergmann\\CodeUnit\\TraitUnit' => $vendorDir . '/sebastian/code-unit/src/TraitUnit.php', - 'SebastianBergmann\\Comparator\\ArrayComparator' => $vendorDir . '/sebastian/comparator/src/ArrayComparator.php', - 'SebastianBergmann\\Comparator\\Comparator' => $vendorDir . '/sebastian/comparator/src/Comparator.php', - 'SebastianBergmann\\Comparator\\ComparisonFailure' => $vendorDir . '/sebastian/comparator/src/ComparisonFailure.php', - 'SebastianBergmann\\Comparator\\DOMNodeComparator' => $vendorDir . '/sebastian/comparator/src/DOMNodeComparator.php', - 'SebastianBergmann\\Comparator\\DateTimeComparator' => $vendorDir . '/sebastian/comparator/src/DateTimeComparator.php', - 'SebastianBergmann\\Comparator\\Exception' => $vendorDir . '/sebastian/comparator/src/exceptions/Exception.php', - 'SebastianBergmann\\Comparator\\ExceptionComparator' => $vendorDir . '/sebastian/comparator/src/ExceptionComparator.php', - 'SebastianBergmann\\Comparator\\Factory' => $vendorDir . '/sebastian/comparator/src/Factory.php', - 'SebastianBergmann\\Comparator\\MockObjectComparator' => $vendorDir . '/sebastian/comparator/src/MockObjectComparator.php', - 'SebastianBergmann\\Comparator\\NumericComparator' => $vendorDir . '/sebastian/comparator/src/NumericComparator.php', - 'SebastianBergmann\\Comparator\\ObjectComparator' => $vendorDir . '/sebastian/comparator/src/ObjectComparator.php', - 'SebastianBergmann\\Comparator\\ResourceComparator' => $vendorDir . '/sebastian/comparator/src/ResourceComparator.php', - 'SebastianBergmann\\Comparator\\RuntimeException' => $vendorDir . '/sebastian/comparator/src/exceptions/RuntimeException.php', - 'SebastianBergmann\\Comparator\\ScalarComparator' => $vendorDir . '/sebastian/comparator/src/ScalarComparator.php', - 'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => $vendorDir . '/sebastian/comparator/src/SplObjectStorageComparator.php', - 'SebastianBergmann\\Comparator\\TypeComparator' => $vendorDir . '/sebastian/comparator/src/TypeComparator.php', - 'SebastianBergmann\\Complexity\\Calculator' => $vendorDir . '/sebastian/complexity/src/Calculator.php', - 'SebastianBergmann\\Complexity\\Complexity' => $vendorDir . '/sebastian/complexity/src/Complexity/Complexity.php', - 'SebastianBergmann\\Complexity\\ComplexityCalculatingVisitor' => $vendorDir . '/sebastian/complexity/src/Visitor/ComplexityCalculatingVisitor.php', - 'SebastianBergmann\\Complexity\\ComplexityCollection' => $vendorDir . '/sebastian/complexity/src/Complexity/ComplexityCollection.php', - 'SebastianBergmann\\Complexity\\ComplexityCollectionIterator' => $vendorDir . '/sebastian/complexity/src/Complexity/ComplexityCollectionIterator.php', - 'SebastianBergmann\\Complexity\\CyclomaticComplexityCalculatingVisitor' => $vendorDir . '/sebastian/complexity/src/Visitor/CyclomaticComplexityCalculatingVisitor.php', - 'SebastianBergmann\\Complexity\\Exception' => $vendorDir . '/sebastian/complexity/src/Exception/Exception.php', - 'SebastianBergmann\\Complexity\\RuntimeException' => $vendorDir . '/sebastian/complexity/src/Exception/RuntimeException.php', - 'SebastianBergmann\\Diff\\Chunk' => $vendorDir . '/sebastian/diff/src/Chunk.php', - 'SebastianBergmann\\Diff\\ConfigurationException' => $vendorDir . '/sebastian/diff/src/Exception/ConfigurationException.php', - 'SebastianBergmann\\Diff\\Diff' => $vendorDir . '/sebastian/diff/src/Diff.php', - 'SebastianBergmann\\Diff\\Differ' => $vendorDir . '/sebastian/diff/src/Differ.php', - 'SebastianBergmann\\Diff\\Exception' => $vendorDir . '/sebastian/diff/src/Exception/Exception.php', - 'SebastianBergmann\\Diff\\InvalidArgumentException' => $vendorDir . '/sebastian/diff/src/Exception/InvalidArgumentException.php', - 'SebastianBergmann\\Diff\\Line' => $vendorDir . '/sebastian/diff/src/Line.php', - 'SebastianBergmann\\Diff\\LongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/LongestCommonSubsequenceCalculator.php', - 'SebastianBergmann\\Diff\\MemoryEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php', - 'SebastianBergmann\\Diff\\Output\\AbstractChunkOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php', - 'SebastianBergmann\\Diff\\Output\\DiffOnlyOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php', - 'SebastianBergmann\\Diff\\Output\\DiffOutputBuilderInterface' => $vendorDir . '/sebastian/diff/src/Output/DiffOutputBuilderInterface.php', - 'SebastianBergmann\\Diff\\Output\\StrictUnifiedDiffOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php', - 'SebastianBergmann\\Diff\\Output\\UnifiedDiffOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php', - 'SebastianBergmann\\Diff\\Parser' => $vendorDir . '/sebastian/diff/src/Parser.php', - 'SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php', - 'SebastianBergmann\\Environment\\Console' => $vendorDir . '/sebastian/environment/src/Console.php', - 'SebastianBergmann\\Environment\\Runtime' => $vendorDir . '/sebastian/environment/src/Runtime.php', - 'SebastianBergmann\\Exporter\\Exporter' => $vendorDir . '/sebastian/exporter/src/Exporter.php', - 'SebastianBergmann\\FileIterator\\ExcludeIterator' => $vendorDir . '/phpunit/php-file-iterator/src/ExcludeIterator.php', - 'SebastianBergmann\\FileIterator\\Facade' => $vendorDir . '/phpunit/php-file-iterator/src/Facade.php', - 'SebastianBergmann\\FileIterator\\Factory' => $vendorDir . '/phpunit/php-file-iterator/src/Factory.php', - 'SebastianBergmann\\FileIterator\\Iterator' => $vendorDir . '/phpunit/php-file-iterator/src/Iterator.php', - 'SebastianBergmann\\GlobalState\\CodeExporter' => $vendorDir . '/sebastian/global-state/src/CodeExporter.php', - 'SebastianBergmann\\GlobalState\\Exception' => $vendorDir . '/sebastian/global-state/src/exceptions/Exception.php', - 'SebastianBergmann\\GlobalState\\ExcludeList' => $vendorDir . '/sebastian/global-state/src/ExcludeList.php', - 'SebastianBergmann\\GlobalState\\Restorer' => $vendorDir . '/sebastian/global-state/src/Restorer.php', - 'SebastianBergmann\\GlobalState\\RuntimeException' => $vendorDir . '/sebastian/global-state/src/exceptions/RuntimeException.php', - 'SebastianBergmann\\GlobalState\\Snapshot' => $vendorDir . '/sebastian/global-state/src/Snapshot.php', - 'SebastianBergmann\\Invoker\\Exception' => $vendorDir . '/phpunit/php-invoker/src/exceptions/Exception.php', - 'SebastianBergmann\\Invoker\\Invoker' => $vendorDir . '/phpunit/php-invoker/src/Invoker.php', - 'SebastianBergmann\\Invoker\\ProcessControlExtensionNotLoadedException' => $vendorDir . '/phpunit/php-invoker/src/exceptions/ProcessControlExtensionNotLoadedException.php', - 'SebastianBergmann\\Invoker\\TimeoutException' => $vendorDir . '/phpunit/php-invoker/src/exceptions/TimeoutException.php', - 'SebastianBergmann\\LinesOfCode\\Counter' => $vendorDir . '/sebastian/lines-of-code/src/Counter.php', - 'SebastianBergmann\\LinesOfCode\\Exception' => $vendorDir . '/sebastian/lines-of-code/src/Exception/Exception.php', - 'SebastianBergmann\\LinesOfCode\\IllogicalValuesException' => $vendorDir . '/sebastian/lines-of-code/src/Exception/IllogicalValuesException.php', - 'SebastianBergmann\\LinesOfCode\\LineCountingVisitor' => $vendorDir . '/sebastian/lines-of-code/src/LineCountingVisitor.php', - 'SebastianBergmann\\LinesOfCode\\LinesOfCode' => $vendorDir . '/sebastian/lines-of-code/src/LinesOfCode.php', - 'SebastianBergmann\\LinesOfCode\\NegativeValueException' => $vendorDir . '/sebastian/lines-of-code/src/Exception/NegativeValueException.php', - 'SebastianBergmann\\LinesOfCode\\RuntimeException' => $vendorDir . '/sebastian/lines-of-code/src/Exception/RuntimeException.php', - 'SebastianBergmann\\ObjectEnumerator\\Enumerator' => $vendorDir . '/sebastian/object-enumerator/src/Enumerator.php', - 'SebastianBergmann\\ObjectReflector\\ObjectReflector' => $vendorDir . '/sebastian/object-reflector/src/ObjectReflector.php', - 'SebastianBergmann\\RecursionContext\\Context' => $vendorDir . '/sebastian/recursion-context/src/Context.php', - 'SebastianBergmann\\Template\\Exception' => $vendorDir . '/phpunit/php-text-template/src/exceptions/Exception.php', - 'SebastianBergmann\\Template\\InvalidArgumentException' => $vendorDir . '/phpunit/php-text-template/src/exceptions/InvalidArgumentException.php', - 'SebastianBergmann\\Template\\RuntimeException' => $vendorDir . '/phpunit/php-text-template/src/exceptions/RuntimeException.php', - 'SebastianBergmann\\Template\\Template' => $vendorDir . '/phpunit/php-text-template/src/Template.php', - 'SebastianBergmann\\Timer\\Duration' => $vendorDir . '/phpunit/php-timer/src/Duration.php', - 'SebastianBergmann\\Timer\\Exception' => $vendorDir . '/phpunit/php-timer/src/exceptions/Exception.php', - 'SebastianBergmann\\Timer\\NoActiveTimerException' => $vendorDir . '/phpunit/php-timer/src/exceptions/NoActiveTimerException.php', - 'SebastianBergmann\\Timer\\ResourceUsageFormatter' => $vendorDir . '/phpunit/php-timer/src/ResourceUsageFormatter.php', - 'SebastianBergmann\\Timer\\TimeSinceStartOfRequestNotAvailableException' => $vendorDir . '/phpunit/php-timer/src/exceptions/TimeSinceStartOfRequestNotAvailableException.php', - 'SebastianBergmann\\Timer\\Timer' => $vendorDir . '/phpunit/php-timer/src/Timer.php', - 'SebastianBergmann\\Type\\CallableType' => $vendorDir . '/sebastian/type/src/type/CallableType.php', - 'SebastianBergmann\\Type\\Exception' => $vendorDir . '/sebastian/type/src/exception/Exception.php', - 'SebastianBergmann\\Type\\FalseType' => $vendorDir . '/sebastian/type/src/type/FalseType.php', - 'SebastianBergmann\\Type\\GenericObjectType' => $vendorDir . '/sebastian/type/src/type/GenericObjectType.php', - 'SebastianBergmann\\Type\\IntersectionType' => $vendorDir . '/sebastian/type/src/type/IntersectionType.php', - 'SebastianBergmann\\Type\\IterableType' => $vendorDir . '/sebastian/type/src/type/IterableType.php', - 'SebastianBergmann\\Type\\MixedType' => $vendorDir . '/sebastian/type/src/type/MixedType.php', - 'SebastianBergmann\\Type\\NeverType' => $vendorDir . '/sebastian/type/src/type/NeverType.php', - 'SebastianBergmann\\Type\\NullType' => $vendorDir . '/sebastian/type/src/type/NullType.php', - 'SebastianBergmann\\Type\\ObjectType' => $vendorDir . '/sebastian/type/src/type/ObjectType.php', - 'SebastianBergmann\\Type\\Parameter' => $vendorDir . '/sebastian/type/src/Parameter.php', - 'SebastianBergmann\\Type\\ReflectionMapper' => $vendorDir . '/sebastian/type/src/ReflectionMapper.php', - 'SebastianBergmann\\Type\\RuntimeException' => $vendorDir . '/sebastian/type/src/exception/RuntimeException.php', - 'SebastianBergmann\\Type\\SimpleType' => $vendorDir . '/sebastian/type/src/type/SimpleType.php', - 'SebastianBergmann\\Type\\StaticType' => $vendorDir . '/sebastian/type/src/type/StaticType.php', - 'SebastianBergmann\\Type\\TrueType' => $vendorDir . '/sebastian/type/src/type/TrueType.php', - 'SebastianBergmann\\Type\\Type' => $vendorDir . '/sebastian/type/src/type/Type.php', - 'SebastianBergmann\\Type\\TypeName' => $vendorDir . '/sebastian/type/src/TypeName.php', - 'SebastianBergmann\\Type\\UnionType' => $vendorDir . '/sebastian/type/src/type/UnionType.php', - '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\\Permission\\Commands\\CacheReset' => $vendorDir . '/spatie/laravel-permission/src/Commands/CacheReset.php', - 'Spatie\\Permission\\Commands\\CreatePermission' => $vendorDir . '/spatie/laravel-permission/src/Commands/CreatePermission.php', - 'Spatie\\Permission\\Commands\\CreateRole' => $vendorDir . '/spatie/laravel-permission/src/Commands/CreateRole.php', - 'Spatie\\Permission\\Commands\\Show' => $vendorDir . '/spatie/laravel-permission/src/Commands/Show.php', - 'Spatie\\Permission\\Commands\\UpgradeForTeams' => $vendorDir . '/spatie/laravel-permission/src/Commands/UpgradeForTeams.php', - 'Spatie\\Permission\\Contracts\\Permission' => $vendorDir . '/spatie/laravel-permission/src/Contracts/Permission.php', - 'Spatie\\Permission\\Contracts\\Role' => $vendorDir . '/spatie/laravel-permission/src/Contracts/Role.php', - 'Spatie\\Permission\\Contracts\\Wildcard' => $vendorDir . '/spatie/laravel-permission/src/Contracts/Wildcard.php', - 'Spatie\\Permission\\Exceptions\\GuardDoesNotMatch' => $vendorDir . '/spatie/laravel-permission/src/Exceptions/GuardDoesNotMatch.php', - 'Spatie\\Permission\\Exceptions\\PermissionAlreadyExists' => $vendorDir . '/spatie/laravel-permission/src/Exceptions/PermissionAlreadyExists.php', - 'Spatie\\Permission\\Exceptions\\PermissionDoesNotExist' => $vendorDir . '/spatie/laravel-permission/src/Exceptions/PermissionDoesNotExist.php', - 'Spatie\\Permission\\Exceptions\\RoleAlreadyExists' => $vendorDir . '/spatie/laravel-permission/src/Exceptions/RoleAlreadyExists.php', - 'Spatie\\Permission\\Exceptions\\RoleDoesNotExist' => $vendorDir . '/spatie/laravel-permission/src/Exceptions/RoleDoesNotExist.php', - 'Spatie\\Permission\\Exceptions\\UnauthorizedException' => $vendorDir . '/spatie/laravel-permission/src/Exceptions/UnauthorizedException.php', - 'Spatie\\Permission\\Exceptions\\WildcardPermissionInvalidArgument' => $vendorDir . '/spatie/laravel-permission/src/Exceptions/WildcardPermissionInvalidArgument.php', - 'Spatie\\Permission\\Exceptions\\WildcardPermissionNotImplementsContract' => $vendorDir . '/spatie/laravel-permission/src/Exceptions/WildcardPermissionNotImplementsContract.php', - 'Spatie\\Permission\\Exceptions\\WildcardPermissionNotProperlyFormatted' => $vendorDir . '/spatie/laravel-permission/src/Exceptions/WildcardPermissionNotProperlyFormatted.php', - 'Spatie\\Permission\\Guard' => $vendorDir . '/spatie/laravel-permission/src/Guard.php', - 'Spatie\\Permission\\Middlewares\\PermissionMiddleware' => $vendorDir . '/spatie/laravel-permission/src/Middlewares/PermissionMiddleware.php', - 'Spatie\\Permission\\Middlewares\\RoleMiddleware' => $vendorDir . '/spatie/laravel-permission/src/Middlewares/RoleMiddleware.php', - 'Spatie\\Permission\\Middlewares\\RoleOrPermissionMiddleware' => $vendorDir . '/spatie/laravel-permission/src/Middlewares/RoleOrPermissionMiddleware.php', - 'Spatie\\Permission\\Models\\Permission' => $vendorDir . '/spatie/laravel-permission/src/Models/Permission.php', - 'Spatie\\Permission\\Models\\Role' => $vendorDir . '/spatie/laravel-permission/src/Models/Role.php', - 'Spatie\\Permission\\PermissionRegistrar' => $vendorDir . '/spatie/laravel-permission/src/PermissionRegistrar.php', - 'Spatie\\Permission\\PermissionServiceProvider' => $vendorDir . '/spatie/laravel-permission/src/PermissionServiceProvider.php', - 'Spatie\\Permission\\Traits\\HasPermissions' => $vendorDir . '/spatie/laravel-permission/src/Traits/HasPermissions.php', - 'Spatie\\Permission\\Traits\\HasRoles' => $vendorDir . '/spatie/laravel-permission/src/Traits/HasRoles.php', - 'Spatie\\Permission\\Traits\\RefreshesPermissionCache' => $vendorDir . '/spatie/laravel-permission/src/Traits/RefreshesPermissionCache.php', - 'Spatie\\Permission\\WildcardPermission' => $vendorDir . '/spatie/laravel-permission/src/WildcardPermission.php', - 'Streamline\\Services\\WardManagement\\WardTreatmentDispensationService' => $baseDir . '/app/Services/WardManagement/WardTreatmentDispensationService.php', - 'Stringable' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Stringable.php', - 'Svg\\CssLength' => $vendorDir . '/phenx/php-svg-lib/src/Svg/CssLength.php', - 'Svg\\DefaultStyle' => $vendorDir . '/phenx/php-svg-lib/src/Svg/DefaultStyle.php', - 'Svg\\Document' => $vendorDir . '/phenx/php-svg-lib/src/Svg/Document.php', - 'Svg\\Gradient\\Stop' => $vendorDir . '/phenx/php-svg-lib/src/Svg/Gradient/Stop.php', - 'Svg\\Style' => $vendorDir . '/phenx/php-svg-lib/src/Svg/Style.php', - 'Svg\\Surface\\CPdf' => $vendorDir . '/phenx/php-svg-lib/src/Svg/Surface/CPdf.php', - 'Svg\\Surface\\SurfaceCpdf' => $vendorDir . '/phenx/php-svg-lib/src/Svg/Surface/SurfaceCpdf.php', - 'Svg\\Surface\\SurfaceInterface' => $vendorDir . '/phenx/php-svg-lib/src/Svg/Surface/SurfaceInterface.php', - 'Svg\\Surface\\SurfacePDFLib' => $vendorDir . '/phenx/php-svg-lib/src/Svg/Surface/SurfacePDFLib.php', - 'Svg\\Tag\\AbstractTag' => $vendorDir . '/phenx/php-svg-lib/src/Svg/Tag/AbstractTag.php', - 'Svg\\Tag\\Anchor' => $vendorDir . '/phenx/php-svg-lib/src/Svg/Tag/Anchor.php', - 'Svg\\Tag\\Circle' => $vendorDir . '/phenx/php-svg-lib/src/Svg/Tag/Circle.php', - 'Svg\\Tag\\ClipPath' => $vendorDir . '/phenx/php-svg-lib/src/Svg/Tag/ClipPath.php', - 'Svg\\Tag\\Ellipse' => $vendorDir . '/phenx/php-svg-lib/src/Svg/Tag/Ellipse.php', - 'Svg\\Tag\\Group' => $vendorDir . '/phenx/php-svg-lib/src/Svg/Tag/Group.php', - 'Svg\\Tag\\Image' => $vendorDir . '/phenx/php-svg-lib/src/Svg/Tag/Image.php', - 'Svg\\Tag\\Line' => $vendorDir . '/phenx/php-svg-lib/src/Svg/Tag/Line.php', - 'Svg\\Tag\\LinearGradient' => $vendorDir . '/phenx/php-svg-lib/src/Svg/Tag/LinearGradient.php', - 'Svg\\Tag\\Path' => $vendorDir . '/phenx/php-svg-lib/src/Svg/Tag/Path.php', - 'Svg\\Tag\\Polygon' => $vendorDir . '/phenx/php-svg-lib/src/Svg/Tag/Polygon.php', - 'Svg\\Tag\\Polyline' => $vendorDir . '/phenx/php-svg-lib/src/Svg/Tag/Polyline.php', - 'Svg\\Tag\\RadialGradient' => $vendorDir . '/phenx/php-svg-lib/src/Svg/Tag/RadialGradient.php', - 'Svg\\Tag\\Rect' => $vendorDir . '/phenx/php-svg-lib/src/Svg/Tag/Rect.php', - 'Svg\\Tag\\Shape' => $vendorDir . '/phenx/php-svg-lib/src/Svg/Tag/Shape.php', - 'Svg\\Tag\\Stop' => $vendorDir . '/phenx/php-svg-lib/src/Svg/Tag/Stop.php', - 'Svg\\Tag\\StyleTag' => $vendorDir . '/phenx/php-svg-lib/src/Svg/Tag/StyleTag.php', - 'Svg\\Tag\\Symbol' => $vendorDir . '/phenx/php-svg-lib/src/Svg/Tag/Symbol.php', - 'Svg\\Tag\\Text' => $vendorDir . '/phenx/php-svg-lib/src/Svg/Tag/Text.php', - 'Svg\\Tag\\UseTag' => $vendorDir . '/phenx/php-svg-lib/src/Svg/Tag/UseTag.php', - 'Symfony\\Component\\Console\\Application' => $vendorDir . '/symfony/console/Application.php', - 'Symfony\\Component\\Console\\Attribute\\AsCommand' => $vendorDir . '/symfony/console/Attribute/AsCommand.php', - 'Symfony\\Component\\Console\\CI\\GithubActionReporter' => $vendorDir . '/symfony/console/CI/GithubActionReporter.php', - 'Symfony\\Component\\Console\\Color' => $vendorDir . '/symfony/console/Color.php', - 'Symfony\\Component\\Console\\CommandLoader\\CommandLoaderInterface' => $vendorDir . '/symfony/console/CommandLoader/CommandLoaderInterface.php', - 'Symfony\\Component\\Console\\CommandLoader\\ContainerCommandLoader' => $vendorDir . '/symfony/console/CommandLoader/ContainerCommandLoader.php', - 'Symfony\\Component\\Console\\CommandLoader\\FactoryCommandLoader' => $vendorDir . '/symfony/console/CommandLoader/FactoryCommandLoader.php', - 'Symfony\\Component\\Console\\Command\\Command' => $vendorDir . '/symfony/console/Command/Command.php', - 'Symfony\\Component\\Console\\Command\\CompleteCommand' => $vendorDir . '/symfony/console/Command/CompleteCommand.php', - 'Symfony\\Component\\Console\\Command\\DumpCompletionCommand' => $vendorDir . '/symfony/console/Command/DumpCompletionCommand.php', - 'Symfony\\Component\\Console\\Command\\HelpCommand' => $vendorDir . '/symfony/console/Command/HelpCommand.php', - 'Symfony\\Component\\Console\\Command\\LazyCommand' => $vendorDir . '/symfony/console/Command/LazyCommand.php', - 'Symfony\\Component\\Console\\Command\\ListCommand' => $vendorDir . '/symfony/console/Command/ListCommand.php', - 'Symfony\\Component\\Console\\Command\\LockableTrait' => $vendorDir . '/symfony/console/Command/LockableTrait.php', - 'Symfony\\Component\\Console\\Command\\SignalableCommandInterface' => $vendorDir . '/symfony/console/Command/SignalableCommandInterface.php', - 'Symfony\\Component\\Console\\Command\\TraceableCommand' => $vendorDir . '/symfony/console/Command/TraceableCommand.php', - 'Symfony\\Component\\Console\\Completion\\CompletionInput' => $vendorDir . '/symfony/console/Completion/CompletionInput.php', - 'Symfony\\Component\\Console\\Completion\\CompletionSuggestions' => $vendorDir . '/symfony/console/Completion/CompletionSuggestions.php', - 'Symfony\\Component\\Console\\Completion\\Output\\BashCompletionOutput' => $vendorDir . '/symfony/console/Completion/Output/BashCompletionOutput.php', - 'Symfony\\Component\\Console\\Completion\\Output\\CompletionOutputInterface' => $vendorDir . '/symfony/console/Completion/Output/CompletionOutputInterface.php', - 'Symfony\\Component\\Console\\Completion\\Output\\FishCompletionOutput' => $vendorDir . '/symfony/console/Completion/Output/FishCompletionOutput.php', - 'Symfony\\Component\\Console\\Completion\\Output\\ZshCompletionOutput' => $vendorDir . '/symfony/console/Completion/Output/ZshCompletionOutput.php', - 'Symfony\\Component\\Console\\Completion\\Suggestion' => $vendorDir . '/symfony/console/Completion/Suggestion.php', - 'Symfony\\Component\\Console\\ConsoleEvents' => $vendorDir . '/symfony/console/ConsoleEvents.php', - 'Symfony\\Component\\Console\\Cursor' => $vendorDir . '/symfony/console/Cursor.php', - 'Symfony\\Component\\Console\\DataCollector\\CommandDataCollector' => $vendorDir . '/symfony/console/DataCollector/CommandDataCollector.php', - 'Symfony\\Component\\Console\\Debug\\CliRequest' => $vendorDir . '/symfony/console/Debug/CliRequest.php', - 'Symfony\\Component\\Console\\DependencyInjection\\AddConsoleCommandPass' => $vendorDir . '/symfony/console/DependencyInjection/AddConsoleCommandPass.php', - 'Symfony\\Component\\Console\\Descriptor\\ApplicationDescription' => $vendorDir . '/symfony/console/Descriptor/ApplicationDescription.php', - 'Symfony\\Component\\Console\\Descriptor\\Descriptor' => $vendorDir . '/symfony/console/Descriptor/Descriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\DescriptorInterface' => $vendorDir . '/symfony/console/Descriptor/DescriptorInterface.php', - 'Symfony\\Component\\Console\\Descriptor\\JsonDescriptor' => $vendorDir . '/symfony/console/Descriptor/JsonDescriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\MarkdownDescriptor' => $vendorDir . '/symfony/console/Descriptor/MarkdownDescriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\ReStructuredTextDescriptor' => $vendorDir . '/symfony/console/Descriptor/ReStructuredTextDescriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\TextDescriptor' => $vendorDir . '/symfony/console/Descriptor/TextDescriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\XmlDescriptor' => $vendorDir . '/symfony/console/Descriptor/XmlDescriptor.php', - 'Symfony\\Component\\Console\\EventListener\\ErrorListener' => $vendorDir . '/symfony/console/EventListener/ErrorListener.php', - 'Symfony\\Component\\Console\\Event\\ConsoleCommandEvent' => $vendorDir . '/symfony/console/Event/ConsoleCommandEvent.php', - 'Symfony\\Component\\Console\\Event\\ConsoleErrorEvent' => $vendorDir . '/symfony/console/Event/ConsoleErrorEvent.php', - 'Symfony\\Component\\Console\\Event\\ConsoleEvent' => $vendorDir . '/symfony/console/Event/ConsoleEvent.php', - 'Symfony\\Component\\Console\\Event\\ConsoleSignalEvent' => $vendorDir . '/symfony/console/Event/ConsoleSignalEvent.php', - 'Symfony\\Component\\Console\\Event\\ConsoleTerminateEvent' => $vendorDir . '/symfony/console/Event/ConsoleTerminateEvent.php', - 'Symfony\\Component\\Console\\Exception\\CommandNotFoundException' => $vendorDir . '/symfony/console/Exception/CommandNotFoundException.php', - 'Symfony\\Component\\Console\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/console/Exception/ExceptionInterface.php', - 'Symfony\\Component\\Console\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/console/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\Console\\Exception\\InvalidOptionException' => $vendorDir . '/symfony/console/Exception/InvalidOptionException.php', - 'Symfony\\Component\\Console\\Exception\\LogicException' => $vendorDir . '/symfony/console/Exception/LogicException.php', - 'Symfony\\Component\\Console\\Exception\\MissingInputException' => $vendorDir . '/symfony/console/Exception/MissingInputException.php', - 'Symfony\\Component\\Console\\Exception\\NamespaceNotFoundException' => $vendorDir . '/symfony/console/Exception/NamespaceNotFoundException.php', - 'Symfony\\Component\\Console\\Exception\\RunCommandFailedException' => $vendorDir . '/symfony/console/Exception/RunCommandFailedException.php', - 'Symfony\\Component\\Console\\Exception\\RuntimeException' => $vendorDir . '/symfony/console/Exception/RuntimeException.php', - 'Symfony\\Component\\Console\\Formatter\\NullOutputFormatter' => $vendorDir . '/symfony/console/Formatter/NullOutputFormatter.php', - 'Symfony\\Component\\Console\\Formatter\\NullOutputFormatterStyle' => $vendorDir . '/symfony/console/Formatter/NullOutputFormatterStyle.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatter' => $vendorDir . '/symfony/console/Formatter/OutputFormatter.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatterInterface' => $vendorDir . '/symfony/console/Formatter/OutputFormatterInterface.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyle' => $vendorDir . '/symfony/console/Formatter/OutputFormatterStyle.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleInterface' => $vendorDir . '/symfony/console/Formatter/OutputFormatterStyleInterface.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleStack' => $vendorDir . '/symfony/console/Formatter/OutputFormatterStyleStack.php', - 'Symfony\\Component\\Console\\Formatter\\WrappableOutputFormatterInterface' => $vendorDir . '/symfony/console/Formatter/WrappableOutputFormatterInterface.php', - 'Symfony\\Component\\Console\\Helper\\DebugFormatterHelper' => $vendorDir . '/symfony/console/Helper/DebugFormatterHelper.php', - 'Symfony\\Component\\Console\\Helper\\DescriptorHelper' => $vendorDir . '/symfony/console/Helper/DescriptorHelper.php', - 'Symfony\\Component\\Console\\Helper\\Dumper' => $vendorDir . '/symfony/console/Helper/Dumper.php', - 'Symfony\\Component\\Console\\Helper\\FormatterHelper' => $vendorDir . '/symfony/console/Helper/FormatterHelper.php', - 'Symfony\\Component\\Console\\Helper\\Helper' => $vendorDir . '/symfony/console/Helper/Helper.php', - 'Symfony\\Component\\Console\\Helper\\HelperInterface' => $vendorDir . '/symfony/console/Helper/HelperInterface.php', - 'Symfony\\Component\\Console\\Helper\\HelperSet' => $vendorDir . '/symfony/console/Helper/HelperSet.php', - 'Symfony\\Component\\Console\\Helper\\InputAwareHelper' => $vendorDir . '/symfony/console/Helper/InputAwareHelper.php', - 'Symfony\\Component\\Console\\Helper\\OutputWrapper' => $vendorDir . '/symfony/console/Helper/OutputWrapper.php', - 'Symfony\\Component\\Console\\Helper\\ProcessHelper' => $vendorDir . '/symfony/console/Helper/ProcessHelper.php', - 'Symfony\\Component\\Console\\Helper\\ProgressBar' => $vendorDir . '/symfony/console/Helper/ProgressBar.php', - 'Symfony\\Component\\Console\\Helper\\ProgressIndicator' => $vendorDir . '/symfony/console/Helper/ProgressIndicator.php', - 'Symfony\\Component\\Console\\Helper\\QuestionHelper' => $vendorDir . '/symfony/console/Helper/QuestionHelper.php', - 'Symfony\\Component\\Console\\Helper\\SymfonyQuestionHelper' => $vendorDir . '/symfony/console/Helper/SymfonyQuestionHelper.php', - 'Symfony\\Component\\Console\\Helper\\Table' => $vendorDir . '/symfony/console/Helper/Table.php', - 'Symfony\\Component\\Console\\Helper\\TableCell' => $vendorDir . '/symfony/console/Helper/TableCell.php', - 'Symfony\\Component\\Console\\Helper\\TableCellStyle' => $vendorDir . '/symfony/console/Helper/TableCellStyle.php', - 'Symfony\\Component\\Console\\Helper\\TableRows' => $vendorDir . '/symfony/console/Helper/TableRows.php', - 'Symfony\\Component\\Console\\Helper\\TableSeparator' => $vendorDir . '/symfony/console/Helper/TableSeparator.php', - 'Symfony\\Component\\Console\\Helper\\TableStyle' => $vendorDir . '/symfony/console/Helper/TableStyle.php', - 'Symfony\\Component\\Console\\Input\\ArgvInput' => $vendorDir . '/symfony/console/Input/ArgvInput.php', - 'Symfony\\Component\\Console\\Input\\ArrayInput' => $vendorDir . '/symfony/console/Input/ArrayInput.php', - 'Symfony\\Component\\Console\\Input\\Input' => $vendorDir . '/symfony/console/Input/Input.php', - 'Symfony\\Component\\Console\\Input\\InputArgument' => $vendorDir . '/symfony/console/Input/InputArgument.php', - 'Symfony\\Component\\Console\\Input\\InputAwareInterface' => $vendorDir . '/symfony/console/Input/InputAwareInterface.php', - 'Symfony\\Component\\Console\\Input\\InputDefinition' => $vendorDir . '/symfony/console/Input/InputDefinition.php', - 'Symfony\\Component\\Console\\Input\\InputInterface' => $vendorDir . '/symfony/console/Input/InputInterface.php', - 'Symfony\\Component\\Console\\Input\\InputOption' => $vendorDir . '/symfony/console/Input/InputOption.php', - 'Symfony\\Component\\Console\\Input\\StreamableInputInterface' => $vendorDir . '/symfony/console/Input/StreamableInputInterface.php', - 'Symfony\\Component\\Console\\Input\\StringInput' => $vendorDir . '/symfony/console/Input/StringInput.php', - 'Symfony\\Component\\Console\\Logger\\ConsoleLogger' => $vendorDir . '/symfony/console/Logger/ConsoleLogger.php', - 'Symfony\\Component\\Console\\Messenger\\RunCommandContext' => $vendorDir . '/symfony/console/Messenger/RunCommandContext.php', - 'Symfony\\Component\\Console\\Messenger\\RunCommandMessage' => $vendorDir . '/symfony/console/Messenger/RunCommandMessage.php', - 'Symfony\\Component\\Console\\Messenger\\RunCommandMessageHandler' => $vendorDir . '/symfony/console/Messenger/RunCommandMessageHandler.php', - 'Symfony\\Component\\Console\\Output\\AnsiColorMode' => $vendorDir . '/symfony/console/Output/AnsiColorMode.php', - 'Symfony\\Component\\Console\\Output\\BufferedOutput' => $vendorDir . '/symfony/console/Output/BufferedOutput.php', - 'Symfony\\Component\\Console\\Output\\ConsoleOutput' => $vendorDir . '/symfony/console/Output/ConsoleOutput.php', - 'Symfony\\Component\\Console\\Output\\ConsoleOutputInterface' => $vendorDir . '/symfony/console/Output/ConsoleOutputInterface.php', - 'Symfony\\Component\\Console\\Output\\ConsoleSectionOutput' => $vendorDir . '/symfony/console/Output/ConsoleSectionOutput.php', - 'Symfony\\Component\\Console\\Output\\NullOutput' => $vendorDir . '/symfony/console/Output/NullOutput.php', - 'Symfony\\Component\\Console\\Output\\Output' => $vendorDir . '/symfony/console/Output/Output.php', - 'Symfony\\Component\\Console\\Output\\OutputInterface' => $vendorDir . '/symfony/console/Output/OutputInterface.php', - 'Symfony\\Component\\Console\\Output\\StreamOutput' => $vendorDir . '/symfony/console/Output/StreamOutput.php', - 'Symfony\\Component\\Console\\Output\\TrimmedBufferOutput' => $vendorDir . '/symfony/console/Output/TrimmedBufferOutput.php', - 'Symfony\\Component\\Console\\Question\\ChoiceQuestion' => $vendorDir . '/symfony/console/Question/ChoiceQuestion.php', - 'Symfony\\Component\\Console\\Question\\ConfirmationQuestion' => $vendorDir . '/symfony/console/Question/ConfirmationQuestion.php', - 'Symfony\\Component\\Console\\Question\\Question' => $vendorDir . '/symfony/console/Question/Question.php', - 'Symfony\\Component\\Console\\SignalRegistry\\SignalMap' => $vendorDir . '/symfony/console/SignalRegistry/SignalMap.php', - 'Symfony\\Component\\Console\\SignalRegistry\\SignalRegistry' => $vendorDir . '/symfony/console/SignalRegistry/SignalRegistry.php', - 'Symfony\\Component\\Console\\SingleCommandApplication' => $vendorDir . '/symfony/console/SingleCommandApplication.php', - 'Symfony\\Component\\Console\\Style\\OutputStyle' => $vendorDir . '/symfony/console/Style/OutputStyle.php', - 'Symfony\\Component\\Console\\Style\\StyleInterface' => $vendorDir . '/symfony/console/Style/StyleInterface.php', - 'Symfony\\Component\\Console\\Style\\SymfonyStyle' => $vendorDir . '/symfony/console/Style/SymfonyStyle.php', - 'Symfony\\Component\\Console\\Terminal' => $vendorDir . '/symfony/console/Terminal.php', - 'Symfony\\Component\\Console\\Tester\\ApplicationTester' => $vendorDir . '/symfony/console/Tester/ApplicationTester.php', - 'Symfony\\Component\\Console\\Tester\\CommandCompletionTester' => $vendorDir . '/symfony/console/Tester/CommandCompletionTester.php', - 'Symfony\\Component\\Console\\Tester\\CommandTester' => $vendorDir . '/symfony/console/Tester/CommandTester.php', - 'Symfony\\Component\\Console\\Tester\\Constraint\\CommandIsSuccessful' => $vendorDir . '/symfony/console/Tester/Constraint/CommandIsSuccessful.php', - 'Symfony\\Component\\Console\\Tester\\TesterTrait' => $vendorDir . '/symfony/console/Tester/TesterTrait.php', - 'Symfony\\Component\\CssSelector\\CssSelectorConverter' => $vendorDir . '/symfony/css-selector/CssSelectorConverter.php', - 'Symfony\\Component\\CssSelector\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/css-selector/Exception/ExceptionInterface.php', - 'Symfony\\Component\\CssSelector\\Exception\\ExpressionErrorException' => $vendorDir . '/symfony/css-selector/Exception/ExpressionErrorException.php', - 'Symfony\\Component\\CssSelector\\Exception\\InternalErrorException' => $vendorDir . '/symfony/css-selector/Exception/InternalErrorException.php', - 'Symfony\\Component\\CssSelector\\Exception\\ParseException' => $vendorDir . '/symfony/css-selector/Exception/ParseException.php', - 'Symfony\\Component\\CssSelector\\Exception\\SyntaxErrorException' => $vendorDir . '/symfony/css-selector/Exception/SyntaxErrorException.php', - 'Symfony\\Component\\CssSelector\\Node\\AbstractNode' => $vendorDir . '/symfony/css-selector/Node/AbstractNode.php', - 'Symfony\\Component\\CssSelector\\Node\\AttributeNode' => $vendorDir . '/symfony/css-selector/Node/AttributeNode.php', - 'Symfony\\Component\\CssSelector\\Node\\ClassNode' => $vendorDir . '/symfony/css-selector/Node/ClassNode.php', - 'Symfony\\Component\\CssSelector\\Node\\CombinedSelectorNode' => $vendorDir . '/symfony/css-selector/Node/CombinedSelectorNode.php', - 'Symfony\\Component\\CssSelector\\Node\\ElementNode' => $vendorDir . '/symfony/css-selector/Node/ElementNode.php', - 'Symfony\\Component\\CssSelector\\Node\\FunctionNode' => $vendorDir . '/symfony/css-selector/Node/FunctionNode.php', - 'Symfony\\Component\\CssSelector\\Node\\HashNode' => $vendorDir . '/symfony/css-selector/Node/HashNode.php', - 'Symfony\\Component\\CssSelector\\Node\\MatchingNode' => $vendorDir . '/symfony/css-selector/Node/MatchingNode.php', - 'Symfony\\Component\\CssSelector\\Node\\NegationNode' => $vendorDir . '/symfony/css-selector/Node/NegationNode.php', - 'Symfony\\Component\\CssSelector\\Node\\NodeInterface' => $vendorDir . '/symfony/css-selector/Node/NodeInterface.php', - 'Symfony\\Component\\CssSelector\\Node\\PseudoNode' => $vendorDir . '/symfony/css-selector/Node/PseudoNode.php', - 'Symfony\\Component\\CssSelector\\Node\\SelectorNode' => $vendorDir . '/symfony/css-selector/Node/SelectorNode.php', - 'Symfony\\Component\\CssSelector\\Node\\Specificity' => $vendorDir . '/symfony/css-selector/Node/Specificity.php', - 'Symfony\\Component\\CssSelector\\Node\\SpecificityAdjustmentNode' => $vendorDir . '/symfony/css-selector/Node/SpecificityAdjustmentNode.php', - 'Symfony\\Component\\CssSelector\\Parser\\Handler\\CommentHandler' => $vendorDir . '/symfony/css-selector/Parser/Handler/CommentHandler.php', - 'Symfony\\Component\\CssSelector\\Parser\\Handler\\HandlerInterface' => $vendorDir . '/symfony/css-selector/Parser/Handler/HandlerInterface.php', - 'Symfony\\Component\\CssSelector\\Parser\\Handler\\HashHandler' => $vendorDir . '/symfony/css-selector/Parser/Handler/HashHandler.php', - 'Symfony\\Component\\CssSelector\\Parser\\Handler\\IdentifierHandler' => $vendorDir . '/symfony/css-selector/Parser/Handler/IdentifierHandler.php', - 'Symfony\\Component\\CssSelector\\Parser\\Handler\\NumberHandler' => $vendorDir . '/symfony/css-selector/Parser/Handler/NumberHandler.php', - 'Symfony\\Component\\CssSelector\\Parser\\Handler\\StringHandler' => $vendorDir . '/symfony/css-selector/Parser/Handler/StringHandler.php', - 'Symfony\\Component\\CssSelector\\Parser\\Handler\\WhitespaceHandler' => $vendorDir . '/symfony/css-selector/Parser/Handler/WhitespaceHandler.php', - 'Symfony\\Component\\CssSelector\\Parser\\Parser' => $vendorDir . '/symfony/css-selector/Parser/Parser.php', - 'Symfony\\Component\\CssSelector\\Parser\\ParserInterface' => $vendorDir . '/symfony/css-selector/Parser/ParserInterface.php', - 'Symfony\\Component\\CssSelector\\Parser\\Reader' => $vendorDir . '/symfony/css-selector/Parser/Reader.php', - 'Symfony\\Component\\CssSelector\\Parser\\Shortcut\\ClassParser' => $vendorDir . '/symfony/css-selector/Parser/Shortcut/ClassParser.php', - 'Symfony\\Component\\CssSelector\\Parser\\Shortcut\\ElementParser' => $vendorDir . '/symfony/css-selector/Parser/Shortcut/ElementParser.php', - 'Symfony\\Component\\CssSelector\\Parser\\Shortcut\\EmptyStringParser' => $vendorDir . '/symfony/css-selector/Parser/Shortcut/EmptyStringParser.php', - 'Symfony\\Component\\CssSelector\\Parser\\Shortcut\\HashParser' => $vendorDir . '/symfony/css-selector/Parser/Shortcut/HashParser.php', - 'Symfony\\Component\\CssSelector\\Parser\\Token' => $vendorDir . '/symfony/css-selector/Parser/Token.php', - 'Symfony\\Component\\CssSelector\\Parser\\TokenStream' => $vendorDir . '/symfony/css-selector/Parser/TokenStream.php', - 'Symfony\\Component\\CssSelector\\Parser\\Tokenizer\\Tokenizer' => $vendorDir . '/symfony/css-selector/Parser/Tokenizer/Tokenizer.php', - 'Symfony\\Component\\CssSelector\\Parser\\Tokenizer\\TokenizerEscaping' => $vendorDir . '/symfony/css-selector/Parser/Tokenizer/TokenizerEscaping.php', - 'Symfony\\Component\\CssSelector\\Parser\\Tokenizer\\TokenizerPatterns' => $vendorDir . '/symfony/css-selector/Parser/Tokenizer/TokenizerPatterns.php', - 'Symfony\\Component\\CssSelector\\XPath\\Extension\\AbstractExtension' => $vendorDir . '/symfony/css-selector/XPath/Extension/AbstractExtension.php', - 'Symfony\\Component\\CssSelector\\XPath\\Extension\\AttributeMatchingExtension' => $vendorDir . '/symfony/css-selector/XPath/Extension/AttributeMatchingExtension.php', - 'Symfony\\Component\\CssSelector\\XPath\\Extension\\CombinationExtension' => $vendorDir . '/symfony/css-selector/XPath/Extension/CombinationExtension.php', - 'Symfony\\Component\\CssSelector\\XPath\\Extension\\ExtensionInterface' => $vendorDir . '/symfony/css-selector/XPath/Extension/ExtensionInterface.php', - 'Symfony\\Component\\CssSelector\\XPath\\Extension\\FunctionExtension' => $vendorDir . '/symfony/css-selector/XPath/Extension/FunctionExtension.php', - 'Symfony\\Component\\CssSelector\\XPath\\Extension\\HtmlExtension' => $vendorDir . '/symfony/css-selector/XPath/Extension/HtmlExtension.php', - 'Symfony\\Component\\CssSelector\\XPath\\Extension\\NodeExtension' => $vendorDir . '/symfony/css-selector/XPath/Extension/NodeExtension.php', - 'Symfony\\Component\\CssSelector\\XPath\\Extension\\PseudoClassExtension' => $vendorDir . '/symfony/css-selector/XPath/Extension/PseudoClassExtension.php', - 'Symfony\\Component\\CssSelector\\XPath\\Translator' => $vendorDir . '/symfony/css-selector/XPath/Translator.php', - 'Symfony\\Component\\CssSelector\\XPath\\TranslatorInterface' => $vendorDir . '/symfony/css-selector/XPath/TranslatorInterface.php', - 'Symfony\\Component\\CssSelector\\XPath\\XPathExpr' => $vendorDir . '/symfony/css-selector/XPath/XPathExpr.php', - 'Symfony\\Component\\ErrorHandler\\BufferingLogger' => $vendorDir . '/symfony/error-handler/BufferingLogger.php', - 'Symfony\\Component\\ErrorHandler\\Debug' => $vendorDir . '/symfony/error-handler/Debug.php', - 'Symfony\\Component\\ErrorHandler\\DebugClassLoader' => $vendorDir . '/symfony/error-handler/DebugClassLoader.php', - 'Symfony\\Component\\ErrorHandler\\ErrorEnhancer\\ClassNotFoundErrorEnhancer' => $vendorDir . '/symfony/error-handler/ErrorEnhancer/ClassNotFoundErrorEnhancer.php', - 'Symfony\\Component\\ErrorHandler\\ErrorEnhancer\\ErrorEnhancerInterface' => $vendorDir . '/symfony/error-handler/ErrorEnhancer/ErrorEnhancerInterface.php', - 'Symfony\\Component\\ErrorHandler\\ErrorEnhancer\\UndefinedFunctionErrorEnhancer' => $vendorDir . '/symfony/error-handler/ErrorEnhancer/UndefinedFunctionErrorEnhancer.php', - 'Symfony\\Component\\ErrorHandler\\ErrorEnhancer\\UndefinedMethodErrorEnhancer' => $vendorDir . '/symfony/error-handler/ErrorEnhancer/UndefinedMethodErrorEnhancer.php', - 'Symfony\\Component\\ErrorHandler\\ErrorHandler' => $vendorDir . '/symfony/error-handler/ErrorHandler.php', - 'Symfony\\Component\\ErrorHandler\\ErrorRenderer\\CliErrorRenderer' => $vendorDir . '/symfony/error-handler/ErrorRenderer/CliErrorRenderer.php', - 'Symfony\\Component\\ErrorHandler\\ErrorRenderer\\ErrorRendererInterface' => $vendorDir . '/symfony/error-handler/ErrorRenderer/ErrorRendererInterface.php', - 'Symfony\\Component\\ErrorHandler\\ErrorRenderer\\FileLinkFormatter' => $vendorDir . '/symfony/error-handler/ErrorRenderer/FileLinkFormatter.php', - 'Symfony\\Component\\ErrorHandler\\ErrorRenderer\\HtmlErrorRenderer' => $vendorDir . '/symfony/error-handler/ErrorRenderer/HtmlErrorRenderer.php', - 'Symfony\\Component\\ErrorHandler\\ErrorRenderer\\SerializerErrorRenderer' => $vendorDir . '/symfony/error-handler/ErrorRenderer/SerializerErrorRenderer.php', - 'Symfony\\Component\\ErrorHandler\\Error\\ClassNotFoundError' => $vendorDir . '/symfony/error-handler/Error/ClassNotFoundError.php', - 'Symfony\\Component\\ErrorHandler\\Error\\FatalError' => $vendorDir . '/symfony/error-handler/Error/FatalError.php', - 'Symfony\\Component\\ErrorHandler\\Error\\OutOfMemoryError' => $vendorDir . '/symfony/error-handler/Error/OutOfMemoryError.php', - 'Symfony\\Component\\ErrorHandler\\Error\\UndefinedFunctionError' => $vendorDir . '/symfony/error-handler/Error/UndefinedFunctionError.php', - 'Symfony\\Component\\ErrorHandler\\Error\\UndefinedMethodError' => $vendorDir . '/symfony/error-handler/Error/UndefinedMethodError.php', - 'Symfony\\Component\\ErrorHandler\\Exception\\FlattenException' => $vendorDir . '/symfony/error-handler/Exception/FlattenException.php', - 'Symfony\\Component\\ErrorHandler\\Exception\\SilencedErrorContext' => $vendorDir . '/symfony/error-handler/Exception/SilencedErrorContext.php', - 'Symfony\\Component\\ErrorHandler\\Internal\\TentativeTypes' => $vendorDir . '/symfony/error-handler/Internal/TentativeTypes.php', - 'Symfony\\Component\\ErrorHandler\\ThrowableUtils' => $vendorDir . '/symfony/error-handler/ThrowableUtils.php', - 'Symfony\\Component\\EventDispatcher\\Attribute\\AsEventListener' => $vendorDir . '/symfony/event-dispatcher/Attribute/AsEventListener.php', - 'Symfony\\Component\\EventDispatcher\\Debug\\TraceableEventDispatcher' => $vendorDir . '/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php', - 'Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener' => $vendorDir . '/symfony/event-dispatcher/Debug/WrappedListener.php', - 'Symfony\\Component\\EventDispatcher\\DependencyInjection\\AddEventAliasesPass' => $vendorDir . '/symfony/event-dispatcher/DependencyInjection/AddEventAliasesPass.php', - 'Symfony\\Component\\EventDispatcher\\DependencyInjection\\RegisterListenersPass' => $vendorDir . '/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php', - 'Symfony\\Component\\EventDispatcher\\EventDispatcher' => $vendorDir . '/symfony/event-dispatcher/EventDispatcher.php', - 'Symfony\\Component\\EventDispatcher\\EventDispatcherInterface' => $vendorDir . '/symfony/event-dispatcher/EventDispatcherInterface.php', - 'Symfony\\Component\\EventDispatcher\\EventSubscriberInterface' => $vendorDir . '/symfony/event-dispatcher/EventSubscriberInterface.php', - 'Symfony\\Component\\EventDispatcher\\GenericEvent' => $vendorDir . '/symfony/event-dispatcher/GenericEvent.php', - 'Symfony\\Component\\EventDispatcher\\ImmutableEventDispatcher' => $vendorDir . '/symfony/event-dispatcher/ImmutableEventDispatcher.php', - 'Symfony\\Component\\Finder\\Comparator\\Comparator' => $vendorDir . '/symfony/finder/Comparator/Comparator.php', - 'Symfony\\Component\\Finder\\Comparator\\DateComparator' => $vendorDir . '/symfony/finder/Comparator/DateComparator.php', - 'Symfony\\Component\\Finder\\Comparator\\NumberComparator' => $vendorDir . '/symfony/finder/Comparator/NumberComparator.php', - 'Symfony\\Component\\Finder\\Exception\\AccessDeniedException' => $vendorDir . '/symfony/finder/Exception/AccessDeniedException.php', - 'Symfony\\Component\\Finder\\Exception\\DirectoryNotFoundException' => $vendorDir . '/symfony/finder/Exception/DirectoryNotFoundException.php', - 'Symfony\\Component\\Finder\\Finder' => $vendorDir . '/symfony/finder/Finder.php', - 'Symfony\\Component\\Finder\\Gitignore' => $vendorDir . '/symfony/finder/Gitignore.php', - 'Symfony\\Component\\Finder\\Glob' => $vendorDir . '/symfony/finder/Glob.php', - 'Symfony\\Component\\Finder\\Iterator\\CustomFilterIterator' => $vendorDir . '/symfony/finder/Iterator/CustomFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\DateRangeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/DateRangeFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\DepthRangeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/DepthRangeFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\ExcludeDirectoryFilterIterator' => $vendorDir . '/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\FileTypeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FileTypeFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\FilecontentFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FilecontentFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\FilenameFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FilenameFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\LazyIterator' => $vendorDir . '/symfony/finder/Iterator/LazyIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\MultiplePcreFilterIterator' => $vendorDir . '/symfony/finder/Iterator/MultiplePcreFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\PathFilterIterator' => $vendorDir . '/symfony/finder/Iterator/PathFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\RecursiveDirectoryIterator' => $vendorDir . '/symfony/finder/Iterator/RecursiveDirectoryIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\SizeRangeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/SizeRangeFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\SortableIterator' => $vendorDir . '/symfony/finder/Iterator/SortableIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\VcsIgnoredFilterIterator' => $vendorDir . '/symfony/finder/Iterator/VcsIgnoredFilterIterator.php', - 'Symfony\\Component\\Finder\\SplFileInfo' => $vendorDir . '/symfony/finder/SplFileInfo.php', - 'Symfony\\Component\\HttpFoundation\\AcceptHeader' => $vendorDir . '/symfony/http-foundation/AcceptHeader.php', - 'Symfony\\Component\\HttpFoundation\\AcceptHeaderItem' => $vendorDir . '/symfony/http-foundation/AcceptHeaderItem.php', - 'Symfony\\Component\\HttpFoundation\\BinaryFileResponse' => $vendorDir . '/symfony/http-foundation/BinaryFileResponse.php', - 'Symfony\\Component\\HttpFoundation\\ChainRequestMatcher' => $vendorDir . '/symfony/http-foundation/ChainRequestMatcher.php', - 'Symfony\\Component\\HttpFoundation\\Cookie' => $vendorDir . '/symfony/http-foundation/Cookie.php', - 'Symfony\\Component\\HttpFoundation\\Exception\\BadRequestException' => $vendorDir . '/symfony/http-foundation/Exception/BadRequestException.php', - 'Symfony\\Component\\HttpFoundation\\Exception\\ConflictingHeadersException' => $vendorDir . '/symfony/http-foundation/Exception/ConflictingHeadersException.php', - 'Symfony\\Component\\HttpFoundation\\Exception\\JsonException' => $vendorDir . '/symfony/http-foundation/Exception/JsonException.php', - 'Symfony\\Component\\HttpFoundation\\Exception\\RequestExceptionInterface' => $vendorDir . '/symfony/http-foundation/Exception/RequestExceptionInterface.php', - 'Symfony\\Component\\HttpFoundation\\Exception\\SessionNotFoundException' => $vendorDir . '/symfony/http-foundation/Exception/SessionNotFoundException.php', - 'Symfony\\Component\\HttpFoundation\\Exception\\SuspiciousOperationException' => $vendorDir . '/symfony/http-foundation/Exception/SuspiciousOperationException.php', - 'Symfony\\Component\\HttpFoundation\\Exception\\UnexpectedValueException' => $vendorDir . '/symfony/http-foundation/Exception/UnexpectedValueException.php', - 'Symfony\\Component\\HttpFoundation\\ExpressionRequestMatcher' => $vendorDir . '/symfony/http-foundation/ExpressionRequestMatcher.php', - 'Symfony\\Component\\HttpFoundation\\FileBag' => $vendorDir . '/symfony/http-foundation/FileBag.php', - 'Symfony\\Component\\HttpFoundation\\File\\Exception\\AccessDeniedException' => $vendorDir . '/symfony/http-foundation/File/Exception/AccessDeniedException.php', - 'Symfony\\Component\\HttpFoundation\\File\\Exception\\CannotWriteFileException' => $vendorDir . '/symfony/http-foundation/File/Exception/CannotWriteFileException.php', - 'Symfony\\Component\\HttpFoundation\\File\\Exception\\ExtensionFileException' => $vendorDir . '/symfony/http-foundation/File/Exception/ExtensionFileException.php', - 'Symfony\\Component\\HttpFoundation\\File\\Exception\\FileException' => $vendorDir . '/symfony/http-foundation/File/Exception/FileException.php', - 'Symfony\\Component\\HttpFoundation\\File\\Exception\\FileNotFoundException' => $vendorDir . '/symfony/http-foundation/File/Exception/FileNotFoundException.php', - 'Symfony\\Component\\HttpFoundation\\File\\Exception\\FormSizeFileException' => $vendorDir . '/symfony/http-foundation/File/Exception/FormSizeFileException.php', - 'Symfony\\Component\\HttpFoundation\\File\\Exception\\IniSizeFileException' => $vendorDir . '/symfony/http-foundation/File/Exception/IniSizeFileException.php', - 'Symfony\\Component\\HttpFoundation\\File\\Exception\\NoFileException' => $vendorDir . '/symfony/http-foundation/File/Exception/NoFileException.php', - 'Symfony\\Component\\HttpFoundation\\File\\Exception\\NoTmpDirFileException' => $vendorDir . '/symfony/http-foundation/File/Exception/NoTmpDirFileException.php', - 'Symfony\\Component\\HttpFoundation\\File\\Exception\\PartialFileException' => $vendorDir . '/symfony/http-foundation/File/Exception/PartialFileException.php', - 'Symfony\\Component\\HttpFoundation\\File\\Exception\\UnexpectedTypeException' => $vendorDir . '/symfony/http-foundation/File/Exception/UnexpectedTypeException.php', - 'Symfony\\Component\\HttpFoundation\\File\\Exception\\UploadException' => $vendorDir . '/symfony/http-foundation/File/Exception/UploadException.php', - 'Symfony\\Component\\HttpFoundation\\File\\File' => $vendorDir . '/symfony/http-foundation/File/File.php', - 'Symfony\\Component\\HttpFoundation\\File\\Stream' => $vendorDir . '/symfony/http-foundation/File/Stream.php', - 'Symfony\\Component\\HttpFoundation\\File\\UploadedFile' => $vendorDir . '/symfony/http-foundation/File/UploadedFile.php', - 'Symfony\\Component\\HttpFoundation\\HeaderBag' => $vendorDir . '/symfony/http-foundation/HeaderBag.php', - 'Symfony\\Component\\HttpFoundation\\HeaderUtils' => $vendorDir . '/symfony/http-foundation/HeaderUtils.php', - 'Symfony\\Component\\HttpFoundation\\InputBag' => $vendorDir . '/symfony/http-foundation/InputBag.php', - 'Symfony\\Component\\HttpFoundation\\IpUtils' => $vendorDir . '/symfony/http-foundation/IpUtils.php', - 'Symfony\\Component\\HttpFoundation\\JsonResponse' => $vendorDir . '/symfony/http-foundation/JsonResponse.php', - 'Symfony\\Component\\HttpFoundation\\ParameterBag' => $vendorDir . '/symfony/http-foundation/ParameterBag.php', - 'Symfony\\Component\\HttpFoundation\\RateLimiter\\AbstractRequestRateLimiter' => $vendorDir . '/symfony/http-foundation/RateLimiter/AbstractRequestRateLimiter.php', - 'Symfony\\Component\\HttpFoundation\\RateLimiter\\PeekableRequestRateLimiterInterface' => $vendorDir . '/symfony/http-foundation/RateLimiter/PeekableRequestRateLimiterInterface.php', - 'Symfony\\Component\\HttpFoundation\\RateLimiter\\RequestRateLimiterInterface' => $vendorDir . '/symfony/http-foundation/RateLimiter/RequestRateLimiterInterface.php', - 'Symfony\\Component\\HttpFoundation\\RedirectResponse' => $vendorDir . '/symfony/http-foundation/RedirectResponse.php', - 'Symfony\\Component\\HttpFoundation\\Request' => $vendorDir . '/symfony/http-foundation/Request.php', - 'Symfony\\Component\\HttpFoundation\\RequestMatcher' => $vendorDir . '/symfony/http-foundation/RequestMatcher.php', - 'Symfony\\Component\\HttpFoundation\\RequestMatcherInterface' => $vendorDir . '/symfony/http-foundation/RequestMatcherInterface.php', - 'Symfony\\Component\\HttpFoundation\\RequestMatcher\\AttributesRequestMatcher' => $vendorDir . '/symfony/http-foundation/RequestMatcher/AttributesRequestMatcher.php', - 'Symfony\\Component\\HttpFoundation\\RequestMatcher\\ExpressionRequestMatcher' => $vendorDir . '/symfony/http-foundation/RequestMatcher/ExpressionRequestMatcher.php', - 'Symfony\\Component\\HttpFoundation\\RequestMatcher\\HostRequestMatcher' => $vendorDir . '/symfony/http-foundation/RequestMatcher/HostRequestMatcher.php', - 'Symfony\\Component\\HttpFoundation\\RequestMatcher\\IpsRequestMatcher' => $vendorDir . '/symfony/http-foundation/RequestMatcher/IpsRequestMatcher.php', - 'Symfony\\Component\\HttpFoundation\\RequestMatcher\\IsJsonRequestMatcher' => $vendorDir . '/symfony/http-foundation/RequestMatcher/IsJsonRequestMatcher.php', - 'Symfony\\Component\\HttpFoundation\\RequestMatcher\\MethodRequestMatcher' => $vendorDir . '/symfony/http-foundation/RequestMatcher/MethodRequestMatcher.php', - 'Symfony\\Component\\HttpFoundation\\RequestMatcher\\PathRequestMatcher' => $vendorDir . '/symfony/http-foundation/RequestMatcher/PathRequestMatcher.php', - 'Symfony\\Component\\HttpFoundation\\RequestMatcher\\PortRequestMatcher' => $vendorDir . '/symfony/http-foundation/RequestMatcher/PortRequestMatcher.php', - 'Symfony\\Component\\HttpFoundation\\RequestMatcher\\SchemeRequestMatcher' => $vendorDir . '/symfony/http-foundation/RequestMatcher/SchemeRequestMatcher.php', - 'Symfony\\Component\\HttpFoundation\\RequestStack' => $vendorDir . '/symfony/http-foundation/RequestStack.php', - 'Symfony\\Component\\HttpFoundation\\Response' => $vendorDir . '/symfony/http-foundation/Response.php', - 'Symfony\\Component\\HttpFoundation\\ResponseHeaderBag' => $vendorDir . '/symfony/http-foundation/ResponseHeaderBag.php', - 'Symfony\\Component\\HttpFoundation\\ServerBag' => $vendorDir . '/symfony/http-foundation/ServerBag.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Attribute\\AttributeBag' => $vendorDir . '/symfony/http-foundation/Session/Attribute/AttributeBag.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Attribute\\AttributeBagInterface' => $vendorDir . '/symfony/http-foundation/Session/Attribute/AttributeBagInterface.php', - 'Symfony\\Component\\HttpFoundation\\Session\\FlashBagAwareSessionInterface' => $vendorDir . '/symfony/http-foundation/Session/FlashBagAwareSessionInterface.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Flash\\AutoExpireFlashBag' => $vendorDir . '/symfony/http-foundation/Session/Flash/AutoExpireFlashBag.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Flash\\FlashBag' => $vendorDir . '/symfony/http-foundation/Session/Flash/FlashBag.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Flash\\FlashBagInterface' => $vendorDir . '/symfony/http-foundation/Session/Flash/FlashBagInterface.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Session' => $vendorDir . '/symfony/http-foundation/Session/Session.php', - 'Symfony\\Component\\HttpFoundation\\Session\\SessionBagInterface' => $vendorDir . '/symfony/http-foundation/Session/SessionBagInterface.php', - 'Symfony\\Component\\HttpFoundation\\Session\\SessionBagProxy' => $vendorDir . '/symfony/http-foundation/Session/SessionBagProxy.php', - 'Symfony\\Component\\HttpFoundation\\Session\\SessionFactory' => $vendorDir . '/symfony/http-foundation/Session/SessionFactory.php', - 'Symfony\\Component\\HttpFoundation\\Session\\SessionFactoryInterface' => $vendorDir . '/symfony/http-foundation/Session/SessionFactoryInterface.php', - 'Symfony\\Component\\HttpFoundation\\Session\\SessionInterface' => $vendorDir . '/symfony/http-foundation/Session/SessionInterface.php', - 'Symfony\\Component\\HttpFoundation\\Session\\SessionUtils' => $vendorDir . '/symfony/http-foundation/Session/SessionUtils.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Handler\\AbstractSessionHandler' => $vendorDir . '/symfony/http-foundation/Session/Storage/Handler/AbstractSessionHandler.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Handler\\IdentityMarshaller' => $vendorDir . '/symfony/http-foundation/Session/Storage/Handler/IdentityMarshaller.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Handler\\MarshallingSessionHandler' => $vendorDir . '/symfony/http-foundation/Session/Storage/Handler/MarshallingSessionHandler.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Handler\\MemcachedSessionHandler' => $vendorDir . '/symfony/http-foundation/Session/Storage/Handler/MemcachedSessionHandler.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Handler\\MigratingSessionHandler' => $vendorDir . '/symfony/http-foundation/Session/Storage/Handler/MigratingSessionHandler.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Handler\\MongoDbSessionHandler' => $vendorDir . '/symfony/http-foundation/Session/Storage/Handler/MongoDbSessionHandler.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Handler\\NativeFileSessionHandler' => $vendorDir . '/symfony/http-foundation/Session/Storage/Handler/NativeFileSessionHandler.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Handler\\NullSessionHandler' => $vendorDir . '/symfony/http-foundation/Session/Storage/Handler/NullSessionHandler.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Handler\\PdoSessionHandler' => $vendorDir . '/symfony/http-foundation/Session/Storage/Handler/PdoSessionHandler.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Handler\\RedisSessionHandler' => $vendorDir . '/symfony/http-foundation/Session/Storage/Handler/RedisSessionHandler.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Handler\\SessionHandlerFactory' => $vendorDir . '/symfony/http-foundation/Session/Storage/Handler/SessionHandlerFactory.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Handler\\StrictSessionHandler' => $vendorDir . '/symfony/http-foundation/Session/Storage/Handler/StrictSessionHandler.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\MetadataBag' => $vendorDir . '/symfony/http-foundation/Session/Storage/MetadataBag.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\MockArraySessionStorage' => $vendorDir . '/symfony/http-foundation/Session/Storage/MockArraySessionStorage.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\MockFileSessionStorage' => $vendorDir . '/symfony/http-foundation/Session/Storage/MockFileSessionStorage.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\MockFileSessionStorageFactory' => $vendorDir . '/symfony/http-foundation/Session/Storage/MockFileSessionStorageFactory.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\NativeSessionStorage' => $vendorDir . '/symfony/http-foundation/Session/Storage/NativeSessionStorage.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\NativeSessionStorageFactory' => $vendorDir . '/symfony/http-foundation/Session/Storage/NativeSessionStorageFactory.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\PhpBridgeSessionStorage' => $vendorDir . '/symfony/http-foundation/Session/Storage/PhpBridgeSessionStorage.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\PhpBridgeSessionStorageFactory' => $vendorDir . '/symfony/http-foundation/Session/Storage/PhpBridgeSessionStorageFactory.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Proxy\\AbstractProxy' => $vendorDir . '/symfony/http-foundation/Session/Storage/Proxy/AbstractProxy.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Proxy\\SessionHandlerProxy' => $vendorDir . '/symfony/http-foundation/Session/Storage/Proxy/SessionHandlerProxy.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\SessionStorageFactoryInterface' => $vendorDir . '/symfony/http-foundation/Session/Storage/SessionStorageFactoryInterface.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\SessionStorageInterface' => $vendorDir . '/symfony/http-foundation/Session/Storage/SessionStorageInterface.php', - 'Symfony\\Component\\HttpFoundation\\StreamedJsonResponse' => $vendorDir . '/symfony/http-foundation/StreamedJsonResponse.php', - 'Symfony\\Component\\HttpFoundation\\StreamedResponse' => $vendorDir . '/symfony/http-foundation/StreamedResponse.php', - 'Symfony\\Component\\HttpFoundation\\Test\\Constraint\\RequestAttributeValueSame' => $vendorDir . '/symfony/http-foundation/Test/Constraint/RequestAttributeValueSame.php', - 'Symfony\\Component\\HttpFoundation\\Test\\Constraint\\ResponseCookieValueSame' => $vendorDir . '/symfony/http-foundation/Test/Constraint/ResponseCookieValueSame.php', - 'Symfony\\Component\\HttpFoundation\\Test\\Constraint\\ResponseFormatSame' => $vendorDir . '/symfony/http-foundation/Test/Constraint/ResponseFormatSame.php', - 'Symfony\\Component\\HttpFoundation\\Test\\Constraint\\ResponseHasCookie' => $vendorDir . '/symfony/http-foundation/Test/Constraint/ResponseHasCookie.php', - 'Symfony\\Component\\HttpFoundation\\Test\\Constraint\\ResponseHasHeader' => $vendorDir . '/symfony/http-foundation/Test/Constraint/ResponseHasHeader.php', - 'Symfony\\Component\\HttpFoundation\\Test\\Constraint\\ResponseHeaderLocationSame' => $vendorDir . '/symfony/http-foundation/Test/Constraint/ResponseHeaderLocationSame.php', - 'Symfony\\Component\\HttpFoundation\\Test\\Constraint\\ResponseHeaderSame' => $vendorDir . '/symfony/http-foundation/Test/Constraint/ResponseHeaderSame.php', - 'Symfony\\Component\\HttpFoundation\\Test\\Constraint\\ResponseIsRedirected' => $vendorDir . '/symfony/http-foundation/Test/Constraint/ResponseIsRedirected.php', - 'Symfony\\Component\\HttpFoundation\\Test\\Constraint\\ResponseIsSuccessful' => $vendorDir . '/symfony/http-foundation/Test/Constraint/ResponseIsSuccessful.php', - 'Symfony\\Component\\HttpFoundation\\Test\\Constraint\\ResponseIsUnprocessable' => $vendorDir . '/symfony/http-foundation/Test/Constraint/ResponseIsUnprocessable.php', - 'Symfony\\Component\\HttpFoundation\\Test\\Constraint\\ResponseStatusCodeSame' => $vendorDir . '/symfony/http-foundation/Test/Constraint/ResponseStatusCodeSame.php', - 'Symfony\\Component\\HttpFoundation\\UriSigner' => $vendorDir . '/symfony/http-foundation/UriSigner.php', - 'Symfony\\Component\\HttpFoundation\\UrlHelper' => $vendorDir . '/symfony/http-foundation/UrlHelper.php', - 'Symfony\\Component\\HttpKernel\\Attribute\\AsController' => $vendorDir . '/symfony/http-kernel/Attribute/AsController.php', - 'Symfony\\Component\\HttpKernel\\Attribute\\AsTargetedValueResolver' => $vendorDir . '/symfony/http-kernel/Attribute/AsTargetedValueResolver.php', - 'Symfony\\Component\\HttpKernel\\Attribute\\Cache' => $vendorDir . '/symfony/http-kernel/Attribute/Cache.php', - 'Symfony\\Component\\HttpKernel\\Attribute\\MapDateTime' => $vendorDir . '/symfony/http-kernel/Attribute/MapDateTime.php', - 'Symfony\\Component\\HttpKernel\\Attribute\\MapQueryParameter' => $vendorDir . '/symfony/http-kernel/Attribute/MapQueryParameter.php', - 'Symfony\\Component\\HttpKernel\\Attribute\\MapQueryString' => $vendorDir . '/symfony/http-kernel/Attribute/MapQueryString.php', - 'Symfony\\Component\\HttpKernel\\Attribute\\MapRequestPayload' => $vendorDir . '/symfony/http-kernel/Attribute/MapRequestPayload.php', - 'Symfony\\Component\\HttpKernel\\Attribute\\ValueResolver' => $vendorDir . '/symfony/http-kernel/Attribute/ValueResolver.php', - 'Symfony\\Component\\HttpKernel\\Attribute\\WithHttpStatus' => $vendorDir . '/symfony/http-kernel/Attribute/WithHttpStatus.php', - 'Symfony\\Component\\HttpKernel\\Attribute\\WithLogLevel' => $vendorDir . '/symfony/http-kernel/Attribute/WithLogLevel.php', - 'Symfony\\Component\\HttpKernel\\Bundle\\AbstractBundle' => $vendorDir . '/symfony/http-kernel/Bundle/AbstractBundle.php', - 'Symfony\\Component\\HttpKernel\\Bundle\\Bundle' => $vendorDir . '/symfony/http-kernel/Bundle/Bundle.php', - 'Symfony\\Component\\HttpKernel\\Bundle\\BundleExtension' => $vendorDir . '/symfony/http-kernel/Bundle/BundleExtension.php', - 'Symfony\\Component\\HttpKernel\\Bundle\\BundleInterface' => $vendorDir . '/symfony/http-kernel/Bundle/BundleInterface.php', - 'Symfony\\Component\\HttpKernel\\CacheClearer\\CacheClearerInterface' => $vendorDir . '/symfony/http-kernel/CacheClearer/CacheClearerInterface.php', - 'Symfony\\Component\\HttpKernel\\CacheClearer\\ChainCacheClearer' => $vendorDir . '/symfony/http-kernel/CacheClearer/ChainCacheClearer.php', - 'Symfony\\Component\\HttpKernel\\CacheClearer\\Psr6CacheClearer' => $vendorDir . '/symfony/http-kernel/CacheClearer/Psr6CacheClearer.php', - 'Symfony\\Component\\HttpKernel\\CacheWarmer\\CacheWarmer' => $vendorDir . '/symfony/http-kernel/CacheWarmer/CacheWarmer.php', - 'Symfony\\Component\\HttpKernel\\CacheWarmer\\CacheWarmerAggregate' => $vendorDir . '/symfony/http-kernel/CacheWarmer/CacheWarmerAggregate.php', - 'Symfony\\Component\\HttpKernel\\CacheWarmer\\CacheWarmerInterface' => $vendorDir . '/symfony/http-kernel/CacheWarmer/CacheWarmerInterface.php', - 'Symfony\\Component\\HttpKernel\\CacheWarmer\\WarmableInterface' => $vendorDir . '/symfony/http-kernel/CacheWarmer/WarmableInterface.php', - 'Symfony\\Component\\HttpKernel\\Config\\FileLocator' => $vendorDir . '/symfony/http-kernel/Config/FileLocator.php', - 'Symfony\\Component\\HttpKernel\\ControllerMetadata\\ArgumentMetadata' => $vendorDir . '/symfony/http-kernel/ControllerMetadata/ArgumentMetadata.php', - 'Symfony\\Component\\HttpKernel\\ControllerMetadata\\ArgumentMetadataFactory' => $vendorDir . '/symfony/http-kernel/ControllerMetadata/ArgumentMetadataFactory.php', - 'Symfony\\Component\\HttpKernel\\ControllerMetadata\\ArgumentMetadataFactoryInterface' => $vendorDir . '/symfony/http-kernel/ControllerMetadata/ArgumentMetadataFactoryInterface.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver' => $vendorDir . '/symfony/http-kernel/Controller/ArgumentResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolverInterface' => $vendorDir . '/symfony/http-kernel/Controller/ArgumentResolverInterface.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver\\BackedEnumValueResolver' => $vendorDir . '/symfony/http-kernel/Controller/ArgumentResolver/BackedEnumValueResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver\\DateTimeValueResolver' => $vendorDir . '/symfony/http-kernel/Controller/ArgumentResolver/DateTimeValueResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver\\DefaultValueResolver' => $vendorDir . '/symfony/http-kernel/Controller/ArgumentResolver/DefaultValueResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver\\NotTaggedControllerValueResolver' => $vendorDir . '/symfony/http-kernel/Controller/ArgumentResolver/NotTaggedControllerValueResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver\\QueryParameterValueResolver' => $vendorDir . '/symfony/http-kernel/Controller/ArgumentResolver/QueryParameterValueResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver\\RequestAttributeValueResolver' => $vendorDir . '/symfony/http-kernel/Controller/ArgumentResolver/RequestAttributeValueResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver\\RequestPayloadValueResolver' => $vendorDir . '/symfony/http-kernel/Controller/ArgumentResolver/RequestPayloadValueResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver\\RequestValueResolver' => $vendorDir . '/symfony/http-kernel/Controller/ArgumentResolver/RequestValueResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver\\ServiceValueResolver' => $vendorDir . '/symfony/http-kernel/Controller/ArgumentResolver/ServiceValueResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver\\SessionValueResolver' => $vendorDir . '/symfony/http-kernel/Controller/ArgumentResolver/SessionValueResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver\\TraceableValueResolver' => $vendorDir . '/symfony/http-kernel/Controller/ArgumentResolver/TraceableValueResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver\\UidValueResolver' => $vendorDir . '/symfony/http-kernel/Controller/ArgumentResolver/UidValueResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver\\VariadicValueResolver' => $vendorDir . '/symfony/http-kernel/Controller/ArgumentResolver/VariadicValueResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentValueResolverInterface' => $vendorDir . '/symfony/http-kernel/Controller/ArgumentValueResolverInterface.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ContainerControllerResolver' => $vendorDir . '/symfony/http-kernel/Controller/ContainerControllerResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ControllerReference' => $vendorDir . '/symfony/http-kernel/Controller/ControllerReference.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ControllerResolver' => $vendorDir . '/symfony/http-kernel/Controller/ControllerResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ControllerResolverInterface' => $vendorDir . '/symfony/http-kernel/Controller/ControllerResolverInterface.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ErrorController' => $vendorDir . '/symfony/http-kernel/Controller/ErrorController.php', - 'Symfony\\Component\\HttpKernel\\Controller\\TraceableArgumentResolver' => $vendorDir . '/symfony/http-kernel/Controller/TraceableArgumentResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\TraceableControllerResolver' => $vendorDir . '/symfony/http-kernel/Controller/TraceableControllerResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ValueResolverInterface' => $vendorDir . '/symfony/http-kernel/Controller/ValueResolverInterface.php', - 'Symfony\\Component\\HttpKernel\\DataCollector\\AjaxDataCollector' => $vendorDir . '/symfony/http-kernel/DataCollector/AjaxDataCollector.php', - 'Symfony\\Component\\HttpKernel\\DataCollector\\ConfigDataCollector' => $vendorDir . '/symfony/http-kernel/DataCollector/ConfigDataCollector.php', - 'Symfony\\Component\\HttpKernel\\DataCollector\\DataCollector' => $vendorDir . '/symfony/http-kernel/DataCollector/DataCollector.php', - 'Symfony\\Component\\HttpKernel\\DataCollector\\DataCollectorInterface' => $vendorDir . '/symfony/http-kernel/DataCollector/DataCollectorInterface.php', - 'Symfony\\Component\\HttpKernel\\DataCollector\\DumpDataCollector' => $vendorDir . '/symfony/http-kernel/DataCollector/DumpDataCollector.php', - 'Symfony\\Component\\HttpKernel\\DataCollector\\EventDataCollector' => $vendorDir . '/symfony/http-kernel/DataCollector/EventDataCollector.php', - 'Symfony\\Component\\HttpKernel\\DataCollector\\ExceptionDataCollector' => $vendorDir . '/symfony/http-kernel/DataCollector/ExceptionDataCollector.php', - 'Symfony\\Component\\HttpKernel\\DataCollector\\LateDataCollectorInterface' => $vendorDir . '/symfony/http-kernel/DataCollector/LateDataCollectorInterface.php', - 'Symfony\\Component\\HttpKernel\\DataCollector\\LoggerDataCollector' => $vendorDir . '/symfony/http-kernel/DataCollector/LoggerDataCollector.php', - 'Symfony\\Component\\HttpKernel\\DataCollector\\MemoryDataCollector' => $vendorDir . '/symfony/http-kernel/DataCollector/MemoryDataCollector.php', - 'Symfony\\Component\\HttpKernel\\DataCollector\\RequestDataCollector' => $vendorDir . '/symfony/http-kernel/DataCollector/RequestDataCollector.php', - 'Symfony\\Component\\HttpKernel\\DataCollector\\RouterDataCollector' => $vendorDir . '/symfony/http-kernel/DataCollector/RouterDataCollector.php', - 'Symfony\\Component\\HttpKernel\\DataCollector\\TimeDataCollector' => $vendorDir . '/symfony/http-kernel/DataCollector/TimeDataCollector.php', - 'Symfony\\Component\\HttpKernel\\Debug\\ErrorHandlerConfigurator' => $vendorDir . '/symfony/http-kernel/Debug/ErrorHandlerConfigurator.php', - 'Symfony\\Component\\HttpKernel\\Debug\\FileLinkFormatter' => $vendorDir . '/symfony/http-kernel/Debug/FileLinkFormatter.php', - 'Symfony\\Component\\HttpKernel\\Debug\\TraceableEventDispatcher' => $vendorDir . '/symfony/http-kernel/Debug/TraceableEventDispatcher.php', - 'Symfony\\Component\\HttpKernel\\Debug\\VirtualRequestStack' => $vendorDir . '/symfony/http-kernel/Debug/VirtualRequestStack.php', - 'Symfony\\Component\\HttpKernel\\DependencyInjection\\AddAnnotatedClassesToCachePass' => $vendorDir . '/symfony/http-kernel/DependencyInjection/AddAnnotatedClassesToCachePass.php', - 'Symfony\\Component\\HttpKernel\\DependencyInjection\\ConfigurableExtension' => $vendorDir . '/symfony/http-kernel/DependencyInjection/ConfigurableExtension.php', - 'Symfony\\Component\\HttpKernel\\DependencyInjection\\ControllerArgumentValueResolverPass' => $vendorDir . '/symfony/http-kernel/DependencyInjection/ControllerArgumentValueResolverPass.php', - 'Symfony\\Component\\HttpKernel\\DependencyInjection\\Extension' => $vendorDir . '/symfony/http-kernel/DependencyInjection/Extension.php', - 'Symfony\\Component\\HttpKernel\\DependencyInjection\\FragmentRendererPass' => $vendorDir . '/symfony/http-kernel/DependencyInjection/FragmentRendererPass.php', - 'Symfony\\Component\\HttpKernel\\DependencyInjection\\LazyLoadingFragmentHandler' => $vendorDir . '/symfony/http-kernel/DependencyInjection/LazyLoadingFragmentHandler.php', - 'Symfony\\Component\\HttpKernel\\DependencyInjection\\LoggerPass' => $vendorDir . '/symfony/http-kernel/DependencyInjection/LoggerPass.php', - 'Symfony\\Component\\HttpKernel\\DependencyInjection\\MergeExtensionConfigurationPass' => $vendorDir . '/symfony/http-kernel/DependencyInjection/MergeExtensionConfigurationPass.php', - 'Symfony\\Component\\HttpKernel\\DependencyInjection\\RegisterControllerArgumentLocatorsPass' => $vendorDir . '/symfony/http-kernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php', - 'Symfony\\Component\\HttpKernel\\DependencyInjection\\RegisterLocaleAwareServicesPass' => $vendorDir . '/symfony/http-kernel/DependencyInjection/RegisterLocaleAwareServicesPass.php', - 'Symfony\\Component\\HttpKernel\\DependencyInjection\\RemoveEmptyControllerArgumentLocatorsPass' => $vendorDir . '/symfony/http-kernel/DependencyInjection/RemoveEmptyControllerArgumentLocatorsPass.php', - 'Symfony\\Component\\HttpKernel\\DependencyInjection\\ResettableServicePass' => $vendorDir . '/symfony/http-kernel/DependencyInjection/ResettableServicePass.php', - 'Symfony\\Component\\HttpKernel\\DependencyInjection\\ServicesResetter' => $vendorDir . '/symfony/http-kernel/DependencyInjection/ServicesResetter.php', - 'Symfony\\Component\\HttpKernel\\EventListener\\AbstractSessionListener' => $vendorDir . '/symfony/http-kernel/EventListener/AbstractSessionListener.php', - 'Symfony\\Component\\HttpKernel\\EventListener\\AddRequestFormatsListener' => $vendorDir . '/symfony/http-kernel/EventListener/AddRequestFormatsListener.php', - 'Symfony\\Component\\HttpKernel\\EventListener\\CacheAttributeListener' => $vendorDir . '/symfony/http-kernel/EventListener/CacheAttributeListener.php', - 'Symfony\\Component\\HttpKernel\\EventListener\\DebugHandlersListener' => $vendorDir . '/symfony/http-kernel/EventListener/DebugHandlersListener.php', - 'Symfony\\Component\\HttpKernel\\EventListener\\DisallowRobotsIndexingListener' => $vendorDir . '/symfony/http-kernel/EventListener/DisallowRobotsIndexingListener.php', - 'Symfony\\Component\\HttpKernel\\EventListener\\DumpListener' => $vendorDir . '/symfony/http-kernel/EventListener/DumpListener.php', - 'Symfony\\Component\\HttpKernel\\EventListener\\ErrorListener' => $vendorDir . '/symfony/http-kernel/EventListener/ErrorListener.php', - 'Symfony\\Component\\HttpKernel\\EventListener\\FragmentListener' => $vendorDir . '/symfony/http-kernel/EventListener/FragmentListener.php', - 'Symfony\\Component\\HttpKernel\\EventListener\\LocaleAwareListener' => $vendorDir . '/symfony/http-kernel/EventListener/LocaleAwareListener.php', - 'Symfony\\Component\\HttpKernel\\EventListener\\LocaleListener' => $vendorDir . '/symfony/http-kernel/EventListener/LocaleListener.php', - 'Symfony\\Component\\HttpKernel\\EventListener\\ProfilerListener' => $vendorDir . '/symfony/http-kernel/EventListener/ProfilerListener.php', - 'Symfony\\Component\\HttpKernel\\EventListener\\ResponseListener' => $vendorDir . '/symfony/http-kernel/EventListener/ResponseListener.php', - 'Symfony\\Component\\HttpKernel\\EventListener\\RouterListener' => $vendorDir . '/symfony/http-kernel/EventListener/RouterListener.php', - 'Symfony\\Component\\HttpKernel\\EventListener\\SessionListener' => $vendorDir . '/symfony/http-kernel/EventListener/SessionListener.php', - 'Symfony\\Component\\HttpKernel\\EventListener\\StreamedResponseListener' => $vendorDir . '/symfony/http-kernel/EventListener/StreamedResponseListener.php', - 'Symfony\\Component\\HttpKernel\\EventListener\\SurrogateListener' => $vendorDir . '/symfony/http-kernel/EventListener/SurrogateListener.php', - 'Symfony\\Component\\HttpKernel\\EventListener\\ValidateRequestListener' => $vendorDir . '/symfony/http-kernel/EventListener/ValidateRequestListener.php', - 'Symfony\\Component\\HttpKernel\\Event\\ControllerArgumentsEvent' => $vendorDir . '/symfony/http-kernel/Event/ControllerArgumentsEvent.php', - 'Symfony\\Component\\HttpKernel\\Event\\ControllerEvent' => $vendorDir . '/symfony/http-kernel/Event/ControllerEvent.php', - 'Symfony\\Component\\HttpKernel\\Event\\ExceptionEvent' => $vendorDir . '/symfony/http-kernel/Event/ExceptionEvent.php', - 'Symfony\\Component\\HttpKernel\\Event\\FinishRequestEvent' => $vendorDir . '/symfony/http-kernel/Event/FinishRequestEvent.php', - 'Symfony\\Component\\HttpKernel\\Event\\KernelEvent' => $vendorDir . '/symfony/http-kernel/Event/KernelEvent.php', - 'Symfony\\Component\\HttpKernel\\Event\\RequestEvent' => $vendorDir . '/symfony/http-kernel/Event/RequestEvent.php', - 'Symfony\\Component\\HttpKernel\\Event\\ResponseEvent' => $vendorDir . '/symfony/http-kernel/Event/ResponseEvent.php', - 'Symfony\\Component\\HttpKernel\\Event\\TerminateEvent' => $vendorDir . '/symfony/http-kernel/Event/TerminateEvent.php', - 'Symfony\\Component\\HttpKernel\\Event\\ViewEvent' => $vendorDir . '/symfony/http-kernel/Event/ViewEvent.php', - 'Symfony\\Component\\HttpKernel\\Exception\\AccessDeniedHttpException' => $vendorDir . '/symfony/http-kernel/Exception/AccessDeniedHttpException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\BadRequestHttpException' => $vendorDir . '/symfony/http-kernel/Exception/BadRequestHttpException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\ConflictHttpException' => $vendorDir . '/symfony/http-kernel/Exception/ConflictHttpException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\ControllerDoesNotReturnResponseException' => $vendorDir . '/symfony/http-kernel/Exception/ControllerDoesNotReturnResponseException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\GoneHttpException' => $vendorDir . '/symfony/http-kernel/Exception/GoneHttpException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\HttpException' => $vendorDir . '/symfony/http-kernel/Exception/HttpException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\HttpExceptionInterface' => $vendorDir . '/symfony/http-kernel/Exception/HttpExceptionInterface.php', - 'Symfony\\Component\\HttpKernel\\Exception\\InvalidMetadataException' => $vendorDir . '/symfony/http-kernel/Exception/InvalidMetadataException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\LengthRequiredHttpException' => $vendorDir . '/symfony/http-kernel/Exception/LengthRequiredHttpException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\LockedHttpException' => $vendorDir . '/symfony/http-kernel/Exception/LockedHttpException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\MethodNotAllowedHttpException' => $vendorDir . '/symfony/http-kernel/Exception/MethodNotAllowedHttpException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\NotAcceptableHttpException' => $vendorDir . '/symfony/http-kernel/Exception/NotAcceptableHttpException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException' => $vendorDir . '/symfony/http-kernel/Exception/NotFoundHttpException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\PreconditionFailedHttpException' => $vendorDir . '/symfony/http-kernel/Exception/PreconditionFailedHttpException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\PreconditionRequiredHttpException' => $vendorDir . '/symfony/http-kernel/Exception/PreconditionRequiredHttpException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\ResolverNotFoundException' => $vendorDir . '/symfony/http-kernel/Exception/ResolverNotFoundException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\ServiceUnavailableHttpException' => $vendorDir . '/symfony/http-kernel/Exception/ServiceUnavailableHttpException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\TooManyRequestsHttpException' => $vendorDir . '/symfony/http-kernel/Exception/TooManyRequestsHttpException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\UnauthorizedHttpException' => $vendorDir . '/symfony/http-kernel/Exception/UnauthorizedHttpException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\UnexpectedSessionUsageException' => $vendorDir . '/symfony/http-kernel/Exception/UnexpectedSessionUsageException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\UnprocessableEntityHttpException' => $vendorDir . '/symfony/http-kernel/Exception/UnprocessableEntityHttpException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\UnsupportedMediaTypeHttpException' => $vendorDir . '/symfony/http-kernel/Exception/UnsupportedMediaTypeHttpException.php', - 'Symfony\\Component\\HttpKernel\\Fragment\\AbstractSurrogateFragmentRenderer' => $vendorDir . '/symfony/http-kernel/Fragment/AbstractSurrogateFragmentRenderer.php', - 'Symfony\\Component\\HttpKernel\\Fragment\\EsiFragmentRenderer' => $vendorDir . '/symfony/http-kernel/Fragment/EsiFragmentRenderer.php', - 'Symfony\\Component\\HttpKernel\\Fragment\\FragmentHandler' => $vendorDir . '/symfony/http-kernel/Fragment/FragmentHandler.php', - 'Symfony\\Component\\HttpKernel\\Fragment\\FragmentRendererInterface' => $vendorDir . '/symfony/http-kernel/Fragment/FragmentRendererInterface.php', - 'Symfony\\Component\\HttpKernel\\Fragment\\FragmentUriGenerator' => $vendorDir . '/symfony/http-kernel/Fragment/FragmentUriGenerator.php', - 'Symfony\\Component\\HttpKernel\\Fragment\\FragmentUriGeneratorInterface' => $vendorDir . '/symfony/http-kernel/Fragment/FragmentUriGeneratorInterface.php', - 'Symfony\\Component\\HttpKernel\\Fragment\\HIncludeFragmentRenderer' => $vendorDir . '/symfony/http-kernel/Fragment/HIncludeFragmentRenderer.php', - 'Symfony\\Component\\HttpKernel\\Fragment\\InlineFragmentRenderer' => $vendorDir . '/symfony/http-kernel/Fragment/InlineFragmentRenderer.php', - 'Symfony\\Component\\HttpKernel\\Fragment\\RoutableFragmentRenderer' => $vendorDir . '/symfony/http-kernel/Fragment/RoutableFragmentRenderer.php', - 'Symfony\\Component\\HttpKernel\\Fragment\\SsiFragmentRenderer' => $vendorDir . '/symfony/http-kernel/Fragment/SsiFragmentRenderer.php', - 'Symfony\\Component\\HttpKernel\\HttpCache\\AbstractSurrogate' => $vendorDir . '/symfony/http-kernel/HttpCache/AbstractSurrogate.php', - 'Symfony\\Component\\HttpKernel\\HttpCache\\Esi' => $vendorDir . '/symfony/http-kernel/HttpCache/Esi.php', - 'Symfony\\Component\\HttpKernel\\HttpCache\\HttpCache' => $vendorDir . '/symfony/http-kernel/HttpCache/HttpCache.php', - 'Symfony\\Component\\HttpKernel\\HttpCache\\ResponseCacheStrategy' => $vendorDir . '/symfony/http-kernel/HttpCache/ResponseCacheStrategy.php', - 'Symfony\\Component\\HttpKernel\\HttpCache\\ResponseCacheStrategyInterface' => $vendorDir . '/symfony/http-kernel/HttpCache/ResponseCacheStrategyInterface.php', - 'Symfony\\Component\\HttpKernel\\HttpCache\\Ssi' => $vendorDir . '/symfony/http-kernel/HttpCache/Ssi.php', - 'Symfony\\Component\\HttpKernel\\HttpCache\\Store' => $vendorDir . '/symfony/http-kernel/HttpCache/Store.php', - 'Symfony\\Component\\HttpKernel\\HttpCache\\StoreInterface' => $vendorDir . '/symfony/http-kernel/HttpCache/StoreInterface.php', - 'Symfony\\Component\\HttpKernel\\HttpCache\\SubRequestHandler' => $vendorDir . '/symfony/http-kernel/HttpCache/SubRequestHandler.php', - 'Symfony\\Component\\HttpKernel\\HttpCache\\SurrogateInterface' => $vendorDir . '/symfony/http-kernel/HttpCache/SurrogateInterface.php', - 'Symfony\\Component\\HttpKernel\\HttpClientKernel' => $vendorDir . '/symfony/http-kernel/HttpClientKernel.php', - 'Symfony\\Component\\HttpKernel\\HttpKernel' => $vendorDir . '/symfony/http-kernel/HttpKernel.php', - 'Symfony\\Component\\HttpKernel\\HttpKernelBrowser' => $vendorDir . '/symfony/http-kernel/HttpKernelBrowser.php', - 'Symfony\\Component\\HttpKernel\\HttpKernelInterface' => $vendorDir . '/symfony/http-kernel/HttpKernelInterface.php', - 'Symfony\\Component\\HttpKernel\\Kernel' => $vendorDir . '/symfony/http-kernel/Kernel.php', - 'Symfony\\Component\\HttpKernel\\KernelEvents' => $vendorDir . '/symfony/http-kernel/KernelEvents.php', - 'Symfony\\Component\\HttpKernel\\KernelInterface' => $vendorDir . '/symfony/http-kernel/KernelInterface.php', - 'Symfony\\Component\\HttpKernel\\Log\\DebugLoggerConfigurator' => $vendorDir . '/symfony/http-kernel/Log/DebugLoggerConfigurator.php', - 'Symfony\\Component\\HttpKernel\\Log\\DebugLoggerInterface' => $vendorDir . '/symfony/http-kernel/Log/DebugLoggerInterface.php', - 'Symfony\\Component\\HttpKernel\\Log\\Logger' => $vendorDir . '/symfony/http-kernel/Log/Logger.php', - 'Symfony\\Component\\HttpKernel\\Profiler\\FileProfilerStorage' => $vendorDir . '/symfony/http-kernel/Profiler/FileProfilerStorage.php', - 'Symfony\\Component\\HttpKernel\\Profiler\\Profile' => $vendorDir . '/symfony/http-kernel/Profiler/Profile.php', - 'Symfony\\Component\\HttpKernel\\Profiler\\Profiler' => $vendorDir . '/symfony/http-kernel/Profiler/Profiler.php', - 'Symfony\\Component\\HttpKernel\\Profiler\\ProfilerStorageInterface' => $vendorDir . '/symfony/http-kernel/Profiler/ProfilerStorageInterface.php', - 'Symfony\\Component\\HttpKernel\\RebootableInterface' => $vendorDir . '/symfony/http-kernel/RebootableInterface.php', - 'Symfony\\Component\\HttpKernel\\TerminableInterface' => $vendorDir . '/symfony/http-kernel/TerminableInterface.php', - 'Symfony\\Component\\HttpKernel\\UriSigner' => $vendorDir . '/symfony/http-kernel/UriSigner.php', - 'Symfony\\Component\\Mailer\\Command\\MailerTestCommand' => $vendorDir . '/symfony/mailer/Command/MailerTestCommand.php', - 'Symfony\\Component\\Mailer\\DataCollector\\MessageDataCollector' => $vendorDir . '/symfony/mailer/DataCollector/MessageDataCollector.php', - 'Symfony\\Component\\Mailer\\DelayedEnvelope' => $vendorDir . '/symfony/mailer/DelayedEnvelope.php', - 'Symfony\\Component\\Mailer\\Envelope' => $vendorDir . '/symfony/mailer/Envelope.php', - 'Symfony\\Component\\Mailer\\EventListener\\EnvelopeListener' => $vendorDir . '/symfony/mailer/EventListener/EnvelopeListener.php', - 'Symfony\\Component\\Mailer\\EventListener\\MessageListener' => $vendorDir . '/symfony/mailer/EventListener/MessageListener.php', - 'Symfony\\Component\\Mailer\\EventListener\\MessageLoggerListener' => $vendorDir . '/symfony/mailer/EventListener/MessageLoggerListener.php', - 'Symfony\\Component\\Mailer\\EventListener\\MessengerTransportListener' => $vendorDir . '/symfony/mailer/EventListener/MessengerTransportListener.php', - 'Symfony\\Component\\Mailer\\Event\\FailedMessageEvent' => $vendorDir . '/symfony/mailer/Event/FailedMessageEvent.php', - 'Symfony\\Component\\Mailer\\Event\\MessageEvent' => $vendorDir . '/symfony/mailer/Event/MessageEvent.php', - 'Symfony\\Component\\Mailer\\Event\\MessageEvents' => $vendorDir . '/symfony/mailer/Event/MessageEvents.php', - 'Symfony\\Component\\Mailer\\Event\\SentMessageEvent' => $vendorDir . '/symfony/mailer/Event/SentMessageEvent.php', - 'Symfony\\Component\\Mailer\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/mailer/Exception/ExceptionInterface.php', - 'Symfony\\Component\\Mailer\\Exception\\HttpTransportException' => $vendorDir . '/symfony/mailer/Exception/HttpTransportException.php', - 'Symfony\\Component\\Mailer\\Exception\\IncompleteDsnException' => $vendorDir . '/symfony/mailer/Exception/IncompleteDsnException.php', - 'Symfony\\Component\\Mailer\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/mailer/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\Mailer\\Exception\\LogicException' => $vendorDir . '/symfony/mailer/Exception/LogicException.php', - 'Symfony\\Component\\Mailer\\Exception\\RuntimeException' => $vendorDir . '/symfony/mailer/Exception/RuntimeException.php', - 'Symfony\\Component\\Mailer\\Exception\\TransportException' => $vendorDir . '/symfony/mailer/Exception/TransportException.php', - 'Symfony\\Component\\Mailer\\Exception\\TransportExceptionInterface' => $vendorDir . '/symfony/mailer/Exception/TransportExceptionInterface.php', - 'Symfony\\Component\\Mailer\\Exception\\UnexpectedResponseException' => $vendorDir . '/symfony/mailer/Exception/UnexpectedResponseException.php', - 'Symfony\\Component\\Mailer\\Exception\\UnsupportedSchemeException' => $vendorDir . '/symfony/mailer/Exception/UnsupportedSchemeException.php', - 'Symfony\\Component\\Mailer\\Header\\MetadataHeader' => $vendorDir . '/symfony/mailer/Header/MetadataHeader.php', - 'Symfony\\Component\\Mailer\\Header\\TagHeader' => $vendorDir . '/symfony/mailer/Header/TagHeader.php', - 'Symfony\\Component\\Mailer\\Mailer' => $vendorDir . '/symfony/mailer/Mailer.php', - 'Symfony\\Component\\Mailer\\MailerInterface' => $vendorDir . '/symfony/mailer/MailerInterface.php', - 'Symfony\\Component\\Mailer\\Messenger\\MessageHandler' => $vendorDir . '/symfony/mailer/Messenger/MessageHandler.php', - 'Symfony\\Component\\Mailer\\Messenger\\SendEmailMessage' => $vendorDir . '/symfony/mailer/Messenger/SendEmailMessage.php', - 'Symfony\\Component\\Mailer\\SentMessage' => $vendorDir . '/symfony/mailer/SentMessage.php', - 'Symfony\\Component\\Mailer\\Test\\Constraint\\EmailCount' => $vendorDir . '/symfony/mailer/Test/Constraint/EmailCount.php', - 'Symfony\\Component\\Mailer\\Test\\Constraint\\EmailIsQueued' => $vendorDir . '/symfony/mailer/Test/Constraint/EmailIsQueued.php', - 'Symfony\\Component\\Mailer\\Test\\TransportFactoryTestCase' => $vendorDir . '/symfony/mailer/Test/TransportFactoryTestCase.php', - 'Symfony\\Component\\Mailer\\Transport' => $vendorDir . '/symfony/mailer/Transport.php', - 'Symfony\\Component\\Mailer\\Transport\\AbstractApiTransport' => $vendorDir . '/symfony/mailer/Transport/AbstractApiTransport.php', - 'Symfony\\Component\\Mailer\\Transport\\AbstractHttpTransport' => $vendorDir . '/symfony/mailer/Transport/AbstractHttpTransport.php', - 'Symfony\\Component\\Mailer\\Transport\\AbstractTransport' => $vendorDir . '/symfony/mailer/Transport/AbstractTransport.php', - 'Symfony\\Component\\Mailer\\Transport\\AbstractTransportFactory' => $vendorDir . '/symfony/mailer/Transport/AbstractTransportFactory.php', - 'Symfony\\Component\\Mailer\\Transport\\Dsn' => $vendorDir . '/symfony/mailer/Transport/Dsn.php', - 'Symfony\\Component\\Mailer\\Transport\\FailoverTransport' => $vendorDir . '/symfony/mailer/Transport/FailoverTransport.php', - 'Symfony\\Component\\Mailer\\Transport\\NativeTransportFactory' => $vendorDir . '/symfony/mailer/Transport/NativeTransportFactory.php', - 'Symfony\\Component\\Mailer\\Transport\\NullTransport' => $vendorDir . '/symfony/mailer/Transport/NullTransport.php', - 'Symfony\\Component\\Mailer\\Transport\\NullTransportFactory' => $vendorDir . '/symfony/mailer/Transport/NullTransportFactory.php', - 'Symfony\\Component\\Mailer\\Transport\\RoundRobinTransport' => $vendorDir . '/symfony/mailer/Transport/RoundRobinTransport.php', - 'Symfony\\Component\\Mailer\\Transport\\SendmailTransport' => $vendorDir . '/symfony/mailer/Transport/SendmailTransport.php', - 'Symfony\\Component\\Mailer\\Transport\\SendmailTransportFactory' => $vendorDir . '/symfony/mailer/Transport/SendmailTransportFactory.php', - 'Symfony\\Component\\Mailer\\Transport\\Smtp\\Auth\\AuthenticatorInterface' => $vendorDir . '/symfony/mailer/Transport/Smtp/Auth/AuthenticatorInterface.php', - 'Symfony\\Component\\Mailer\\Transport\\Smtp\\Auth\\CramMd5Authenticator' => $vendorDir . '/symfony/mailer/Transport/Smtp/Auth/CramMd5Authenticator.php', - 'Symfony\\Component\\Mailer\\Transport\\Smtp\\Auth\\LoginAuthenticator' => $vendorDir . '/symfony/mailer/Transport/Smtp/Auth/LoginAuthenticator.php', - 'Symfony\\Component\\Mailer\\Transport\\Smtp\\Auth\\PlainAuthenticator' => $vendorDir . '/symfony/mailer/Transport/Smtp/Auth/PlainAuthenticator.php', - 'Symfony\\Component\\Mailer\\Transport\\Smtp\\Auth\\XOAuth2Authenticator' => $vendorDir . '/symfony/mailer/Transport/Smtp/Auth/XOAuth2Authenticator.php', - 'Symfony\\Component\\Mailer\\Transport\\Smtp\\EsmtpTransport' => $vendorDir . '/symfony/mailer/Transport/Smtp/EsmtpTransport.php', - 'Symfony\\Component\\Mailer\\Transport\\Smtp\\EsmtpTransportFactory' => $vendorDir . '/symfony/mailer/Transport/Smtp/EsmtpTransportFactory.php', - 'Symfony\\Component\\Mailer\\Transport\\Smtp\\SmtpTransport' => $vendorDir . '/symfony/mailer/Transport/Smtp/SmtpTransport.php', - 'Symfony\\Component\\Mailer\\Transport\\Smtp\\Stream\\AbstractStream' => $vendorDir . '/symfony/mailer/Transport/Smtp/Stream/AbstractStream.php', - 'Symfony\\Component\\Mailer\\Transport\\Smtp\\Stream\\ProcessStream' => $vendorDir . '/symfony/mailer/Transport/Smtp/Stream/ProcessStream.php', - 'Symfony\\Component\\Mailer\\Transport\\Smtp\\Stream\\SocketStream' => $vendorDir . '/symfony/mailer/Transport/Smtp/Stream/SocketStream.php', - 'Symfony\\Component\\Mailer\\Transport\\TransportFactoryInterface' => $vendorDir . '/symfony/mailer/Transport/TransportFactoryInterface.php', - 'Symfony\\Component\\Mailer\\Transport\\TransportInterface' => $vendorDir . '/symfony/mailer/Transport/TransportInterface.php', - 'Symfony\\Component\\Mailer\\Transport\\Transports' => $vendorDir . '/symfony/mailer/Transport/Transports.php', - 'Symfony\\Component\\Mime\\Address' => $vendorDir . '/symfony/mime/Address.php', - 'Symfony\\Component\\Mime\\BodyRendererInterface' => $vendorDir . '/symfony/mime/BodyRendererInterface.php', - 'Symfony\\Component\\Mime\\CharacterStream' => $vendorDir . '/symfony/mime/CharacterStream.php', - 'Symfony\\Component\\Mime\\Crypto\\DkimOptions' => $vendorDir . '/symfony/mime/Crypto/DkimOptions.php', - 'Symfony\\Component\\Mime\\Crypto\\DkimSigner' => $vendorDir . '/symfony/mime/Crypto/DkimSigner.php', - 'Symfony\\Component\\Mime\\Crypto\\SMime' => $vendorDir . '/symfony/mime/Crypto/SMime.php', - 'Symfony\\Component\\Mime\\Crypto\\SMimeEncrypter' => $vendorDir . '/symfony/mime/Crypto/SMimeEncrypter.php', - 'Symfony\\Component\\Mime\\Crypto\\SMimeSigner' => $vendorDir . '/symfony/mime/Crypto/SMimeSigner.php', - 'Symfony\\Component\\Mime\\DependencyInjection\\AddMimeTypeGuesserPass' => $vendorDir . '/symfony/mime/DependencyInjection/AddMimeTypeGuesserPass.php', - 'Symfony\\Component\\Mime\\DraftEmail' => $vendorDir . '/symfony/mime/DraftEmail.php', - 'Symfony\\Component\\Mime\\Email' => $vendorDir . '/symfony/mime/Email.php', - 'Symfony\\Component\\Mime\\Encoder\\AddressEncoderInterface' => $vendorDir . '/symfony/mime/Encoder/AddressEncoderInterface.php', - 'Symfony\\Component\\Mime\\Encoder\\Base64ContentEncoder' => $vendorDir . '/symfony/mime/Encoder/Base64ContentEncoder.php', - 'Symfony\\Component\\Mime\\Encoder\\Base64Encoder' => $vendorDir . '/symfony/mime/Encoder/Base64Encoder.php', - 'Symfony\\Component\\Mime\\Encoder\\Base64MimeHeaderEncoder' => $vendorDir . '/symfony/mime/Encoder/Base64MimeHeaderEncoder.php', - 'Symfony\\Component\\Mime\\Encoder\\ContentEncoderInterface' => $vendorDir . '/symfony/mime/Encoder/ContentEncoderInterface.php', - 'Symfony\\Component\\Mime\\Encoder\\EightBitContentEncoder' => $vendorDir . '/symfony/mime/Encoder/EightBitContentEncoder.php', - 'Symfony\\Component\\Mime\\Encoder\\EncoderInterface' => $vendorDir . '/symfony/mime/Encoder/EncoderInterface.php', - 'Symfony\\Component\\Mime\\Encoder\\IdnAddressEncoder' => $vendorDir . '/symfony/mime/Encoder/IdnAddressEncoder.php', - 'Symfony\\Component\\Mime\\Encoder\\MimeHeaderEncoderInterface' => $vendorDir . '/symfony/mime/Encoder/MimeHeaderEncoderInterface.php', - 'Symfony\\Component\\Mime\\Encoder\\QpContentEncoder' => $vendorDir . '/symfony/mime/Encoder/QpContentEncoder.php', - 'Symfony\\Component\\Mime\\Encoder\\QpEncoder' => $vendorDir . '/symfony/mime/Encoder/QpEncoder.php', - 'Symfony\\Component\\Mime\\Encoder\\QpMimeHeaderEncoder' => $vendorDir . '/symfony/mime/Encoder/QpMimeHeaderEncoder.php', - 'Symfony\\Component\\Mime\\Encoder\\Rfc2231Encoder' => $vendorDir . '/symfony/mime/Encoder/Rfc2231Encoder.php', - 'Symfony\\Component\\Mime\\Exception\\AddressEncoderException' => $vendorDir . '/symfony/mime/Exception/AddressEncoderException.php', - 'Symfony\\Component\\Mime\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/mime/Exception/ExceptionInterface.php', - 'Symfony\\Component\\Mime\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/mime/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\Mime\\Exception\\LogicException' => $vendorDir . '/symfony/mime/Exception/LogicException.php', - 'Symfony\\Component\\Mime\\Exception\\RfcComplianceException' => $vendorDir . '/symfony/mime/Exception/RfcComplianceException.php', - 'Symfony\\Component\\Mime\\Exception\\RuntimeException' => $vendorDir . '/symfony/mime/Exception/RuntimeException.php', - 'Symfony\\Component\\Mime\\FileBinaryMimeTypeGuesser' => $vendorDir . '/symfony/mime/FileBinaryMimeTypeGuesser.php', - 'Symfony\\Component\\Mime\\FileinfoMimeTypeGuesser' => $vendorDir . '/symfony/mime/FileinfoMimeTypeGuesser.php', - 'Symfony\\Component\\Mime\\Header\\AbstractHeader' => $vendorDir . '/symfony/mime/Header/AbstractHeader.php', - 'Symfony\\Component\\Mime\\Header\\DateHeader' => $vendorDir . '/symfony/mime/Header/DateHeader.php', - 'Symfony\\Component\\Mime\\Header\\HeaderInterface' => $vendorDir . '/symfony/mime/Header/HeaderInterface.php', - 'Symfony\\Component\\Mime\\Header\\Headers' => $vendorDir . '/symfony/mime/Header/Headers.php', - 'Symfony\\Component\\Mime\\Header\\IdentificationHeader' => $vendorDir . '/symfony/mime/Header/IdentificationHeader.php', - 'Symfony\\Component\\Mime\\Header\\MailboxHeader' => $vendorDir . '/symfony/mime/Header/MailboxHeader.php', - 'Symfony\\Component\\Mime\\Header\\MailboxListHeader' => $vendorDir . '/symfony/mime/Header/MailboxListHeader.php', - 'Symfony\\Component\\Mime\\Header\\ParameterizedHeader' => $vendorDir . '/symfony/mime/Header/ParameterizedHeader.php', - 'Symfony\\Component\\Mime\\Header\\PathHeader' => $vendorDir . '/symfony/mime/Header/PathHeader.php', - 'Symfony\\Component\\Mime\\Header\\UnstructuredHeader' => $vendorDir . '/symfony/mime/Header/UnstructuredHeader.php', - 'Symfony\\Component\\Mime\\HtmlToTextConverter\\DefaultHtmlToTextConverter' => $vendorDir . '/symfony/mime/HtmlToTextConverter/DefaultHtmlToTextConverter.php', - 'Symfony\\Component\\Mime\\HtmlToTextConverter\\HtmlToTextConverterInterface' => $vendorDir . '/symfony/mime/HtmlToTextConverter/HtmlToTextConverterInterface.php', - 'Symfony\\Component\\Mime\\HtmlToTextConverter\\LeagueHtmlToMarkdownConverter' => $vendorDir . '/symfony/mime/HtmlToTextConverter/LeagueHtmlToMarkdownConverter.php', - 'Symfony\\Component\\Mime\\Message' => $vendorDir . '/symfony/mime/Message.php', - 'Symfony\\Component\\Mime\\MessageConverter' => $vendorDir . '/symfony/mime/MessageConverter.php', - 'Symfony\\Component\\Mime\\MimeTypeGuesserInterface' => $vendorDir . '/symfony/mime/MimeTypeGuesserInterface.php', - 'Symfony\\Component\\Mime\\MimeTypes' => $vendorDir . '/symfony/mime/MimeTypes.php', - 'Symfony\\Component\\Mime\\MimeTypesInterface' => $vendorDir . '/symfony/mime/MimeTypesInterface.php', - 'Symfony\\Component\\Mime\\Part\\AbstractMultipartPart' => $vendorDir . '/symfony/mime/Part/AbstractMultipartPart.php', - 'Symfony\\Component\\Mime\\Part\\AbstractPart' => $vendorDir . '/symfony/mime/Part/AbstractPart.php', - 'Symfony\\Component\\Mime\\Part\\DataPart' => $vendorDir . '/symfony/mime/Part/DataPart.php', - 'Symfony\\Component\\Mime\\Part\\File' => $vendorDir . '/symfony/mime/Part/File.php', - 'Symfony\\Component\\Mime\\Part\\MessagePart' => $vendorDir . '/symfony/mime/Part/MessagePart.php', - 'Symfony\\Component\\Mime\\Part\\Multipart\\AlternativePart' => $vendorDir . '/symfony/mime/Part/Multipart/AlternativePart.php', - 'Symfony\\Component\\Mime\\Part\\Multipart\\DigestPart' => $vendorDir . '/symfony/mime/Part/Multipart/DigestPart.php', - 'Symfony\\Component\\Mime\\Part\\Multipart\\FormDataPart' => $vendorDir . '/symfony/mime/Part/Multipart/FormDataPart.php', - 'Symfony\\Component\\Mime\\Part\\Multipart\\MixedPart' => $vendorDir . '/symfony/mime/Part/Multipart/MixedPart.php', - 'Symfony\\Component\\Mime\\Part\\Multipart\\RelatedPart' => $vendorDir . '/symfony/mime/Part/Multipart/RelatedPart.php', - 'Symfony\\Component\\Mime\\Part\\SMimePart' => $vendorDir . '/symfony/mime/Part/SMimePart.php', - 'Symfony\\Component\\Mime\\Part\\TextPart' => $vendorDir . '/symfony/mime/Part/TextPart.php', - 'Symfony\\Component\\Mime\\RawMessage' => $vendorDir . '/symfony/mime/RawMessage.php', - 'Symfony\\Component\\Mime\\Test\\Constraint\\EmailAddressContains' => $vendorDir . '/symfony/mime/Test/Constraint/EmailAddressContains.php', - 'Symfony\\Component\\Mime\\Test\\Constraint\\EmailAttachmentCount' => $vendorDir . '/symfony/mime/Test/Constraint/EmailAttachmentCount.php', - 'Symfony\\Component\\Mime\\Test\\Constraint\\EmailHasHeader' => $vendorDir . '/symfony/mime/Test/Constraint/EmailHasHeader.php', - 'Symfony\\Component\\Mime\\Test\\Constraint\\EmailHeaderSame' => $vendorDir . '/symfony/mime/Test/Constraint/EmailHeaderSame.php', - 'Symfony\\Component\\Mime\\Test\\Constraint\\EmailHtmlBodyContains' => $vendorDir . '/symfony/mime/Test/Constraint/EmailHtmlBodyContains.php', - 'Symfony\\Component\\Mime\\Test\\Constraint\\EmailSubjectContains' => $vendorDir . '/symfony/mime/Test/Constraint/EmailSubjectContains.php', - 'Symfony\\Component\\Mime\\Test\\Constraint\\EmailTextBodyContains' => $vendorDir . '/symfony/mime/Test/Constraint/EmailTextBodyContains.php', - 'Symfony\\Component\\Process\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/process/Exception/ExceptionInterface.php', - 'Symfony\\Component\\Process\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/process/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\Process\\Exception\\LogicException' => $vendorDir . '/symfony/process/Exception/LogicException.php', - 'Symfony\\Component\\Process\\Exception\\ProcessFailedException' => $vendorDir . '/symfony/process/Exception/ProcessFailedException.php', - 'Symfony\\Component\\Process\\Exception\\ProcessSignaledException' => $vendorDir . '/symfony/process/Exception/ProcessSignaledException.php', - 'Symfony\\Component\\Process\\Exception\\ProcessTimedOutException' => $vendorDir . '/symfony/process/Exception/ProcessTimedOutException.php', - 'Symfony\\Component\\Process\\Exception\\RunProcessFailedException' => $vendorDir . '/symfony/process/Exception/RunProcessFailedException.php', - 'Symfony\\Component\\Process\\Exception\\RuntimeException' => $vendorDir . '/symfony/process/Exception/RuntimeException.php', - 'Symfony\\Component\\Process\\ExecutableFinder' => $vendorDir . '/symfony/process/ExecutableFinder.php', - 'Symfony\\Component\\Process\\InputStream' => $vendorDir . '/symfony/process/InputStream.php', - 'Symfony\\Component\\Process\\Messenger\\RunProcessContext' => $vendorDir . '/symfony/process/Messenger/RunProcessContext.php', - 'Symfony\\Component\\Process\\Messenger\\RunProcessMessage' => $vendorDir . '/symfony/process/Messenger/RunProcessMessage.php', - 'Symfony\\Component\\Process\\Messenger\\RunProcessMessageHandler' => $vendorDir . '/symfony/process/Messenger/RunProcessMessageHandler.php', - 'Symfony\\Component\\Process\\PhpExecutableFinder' => $vendorDir . '/symfony/process/PhpExecutableFinder.php', - 'Symfony\\Component\\Process\\PhpProcess' => $vendorDir . '/symfony/process/PhpProcess.php', - 'Symfony\\Component\\Process\\PhpSubprocess' => $vendorDir . '/symfony/process/PhpSubprocess.php', - 'Symfony\\Component\\Process\\Pipes\\AbstractPipes' => $vendorDir . '/symfony/process/Pipes/AbstractPipes.php', - 'Symfony\\Component\\Process\\Pipes\\PipesInterface' => $vendorDir . '/symfony/process/Pipes/PipesInterface.php', - 'Symfony\\Component\\Process\\Pipes\\UnixPipes' => $vendorDir . '/symfony/process/Pipes/UnixPipes.php', - 'Symfony\\Component\\Process\\Pipes\\WindowsPipes' => $vendorDir . '/symfony/process/Pipes/WindowsPipes.php', - 'Symfony\\Component\\Process\\Process' => $vendorDir . '/symfony/process/Process.php', - 'Symfony\\Component\\Process\\ProcessUtils' => $vendorDir . '/symfony/process/ProcessUtils.php', - 'Symfony\\Component\\Routing\\Alias' => $vendorDir . '/symfony/routing/Alias.php', - 'Symfony\\Component\\Routing\\Annotation\\Route' => $vendorDir . '/symfony/routing/Annotation/Route.php', - 'Symfony\\Component\\Routing\\Attribute\\Route' => $vendorDir . '/symfony/routing/Attribute/Route.php', - 'Symfony\\Component\\Routing\\CompiledRoute' => $vendorDir . '/symfony/routing/CompiledRoute.php', - 'Symfony\\Component\\Routing\\DependencyInjection\\AddExpressionLanguageProvidersPass' => $vendorDir . '/symfony/routing/DependencyInjection/AddExpressionLanguageProvidersPass.php', - 'Symfony\\Component\\Routing\\DependencyInjection\\RoutingResolverPass' => $vendorDir . '/symfony/routing/DependencyInjection/RoutingResolverPass.php', - 'Symfony\\Component\\Routing\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/routing/Exception/ExceptionInterface.php', - 'Symfony\\Component\\Routing\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/routing/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\Routing\\Exception\\InvalidParameterException' => $vendorDir . '/symfony/routing/Exception/InvalidParameterException.php', - 'Symfony\\Component\\Routing\\Exception\\MethodNotAllowedException' => $vendorDir . '/symfony/routing/Exception/MethodNotAllowedException.php', - 'Symfony\\Component\\Routing\\Exception\\MissingMandatoryParametersException' => $vendorDir . '/symfony/routing/Exception/MissingMandatoryParametersException.php', - 'Symfony\\Component\\Routing\\Exception\\NoConfigurationException' => $vendorDir . '/symfony/routing/Exception/NoConfigurationException.php', - 'Symfony\\Component\\Routing\\Exception\\ResourceNotFoundException' => $vendorDir . '/symfony/routing/Exception/ResourceNotFoundException.php', - 'Symfony\\Component\\Routing\\Exception\\RouteCircularReferenceException' => $vendorDir . '/symfony/routing/Exception/RouteCircularReferenceException.php', - 'Symfony\\Component\\Routing\\Exception\\RouteNotFoundException' => $vendorDir . '/symfony/routing/Exception/RouteNotFoundException.php', - 'Symfony\\Component\\Routing\\Exception\\RuntimeException' => $vendorDir . '/symfony/routing/Exception/RuntimeException.php', - 'Symfony\\Component\\Routing\\Generator\\CompiledUrlGenerator' => $vendorDir . '/symfony/routing/Generator/CompiledUrlGenerator.php', - 'Symfony\\Component\\Routing\\Generator\\ConfigurableRequirementsInterface' => $vendorDir . '/symfony/routing/Generator/ConfigurableRequirementsInterface.php', - 'Symfony\\Component\\Routing\\Generator\\Dumper\\CompiledUrlGeneratorDumper' => $vendorDir . '/symfony/routing/Generator/Dumper/CompiledUrlGeneratorDumper.php', - 'Symfony\\Component\\Routing\\Generator\\Dumper\\GeneratorDumper' => $vendorDir . '/symfony/routing/Generator/Dumper/GeneratorDumper.php', - 'Symfony\\Component\\Routing\\Generator\\Dumper\\GeneratorDumperInterface' => $vendorDir . '/symfony/routing/Generator/Dumper/GeneratorDumperInterface.php', - 'Symfony\\Component\\Routing\\Generator\\UrlGenerator' => $vendorDir . '/symfony/routing/Generator/UrlGenerator.php', - 'Symfony\\Component\\Routing\\Generator\\UrlGeneratorInterface' => $vendorDir . '/symfony/routing/Generator/UrlGeneratorInterface.php', - 'Symfony\\Component\\Routing\\Loader\\AnnotationClassLoader' => $vendorDir . '/symfony/routing/Loader/AnnotationClassLoader.php', - 'Symfony\\Component\\Routing\\Loader\\AnnotationDirectoryLoader' => $vendorDir . '/symfony/routing/Loader/AnnotationDirectoryLoader.php', - 'Symfony\\Component\\Routing\\Loader\\AnnotationFileLoader' => $vendorDir . '/symfony/routing/Loader/AnnotationFileLoader.php', - 'Symfony\\Component\\Routing\\Loader\\AttributeClassLoader' => $vendorDir . '/symfony/routing/Loader/AttributeClassLoader.php', - 'Symfony\\Component\\Routing\\Loader\\AttributeDirectoryLoader' => $vendorDir . '/symfony/routing/Loader/AttributeDirectoryLoader.php', - 'Symfony\\Component\\Routing\\Loader\\AttributeFileLoader' => $vendorDir . '/symfony/routing/Loader/AttributeFileLoader.php', - 'Symfony\\Component\\Routing\\Loader\\ClosureLoader' => $vendorDir . '/symfony/routing/Loader/ClosureLoader.php', - 'Symfony\\Component\\Routing\\Loader\\Configurator\\AliasConfigurator' => $vendorDir . '/symfony/routing/Loader/Configurator/AliasConfigurator.php', - 'Symfony\\Component\\Routing\\Loader\\Configurator\\CollectionConfigurator' => $vendorDir . '/symfony/routing/Loader/Configurator/CollectionConfigurator.php', - 'Symfony\\Component\\Routing\\Loader\\Configurator\\ImportConfigurator' => $vendorDir . '/symfony/routing/Loader/Configurator/ImportConfigurator.php', - 'Symfony\\Component\\Routing\\Loader\\Configurator\\RouteConfigurator' => $vendorDir . '/symfony/routing/Loader/Configurator/RouteConfigurator.php', - 'Symfony\\Component\\Routing\\Loader\\Configurator\\RoutingConfigurator' => $vendorDir . '/symfony/routing/Loader/Configurator/RoutingConfigurator.php', - 'Symfony\\Component\\Routing\\Loader\\Configurator\\Traits\\AddTrait' => $vendorDir . '/symfony/routing/Loader/Configurator/Traits/AddTrait.php', - 'Symfony\\Component\\Routing\\Loader\\Configurator\\Traits\\HostTrait' => $vendorDir . '/symfony/routing/Loader/Configurator/Traits/HostTrait.php', - 'Symfony\\Component\\Routing\\Loader\\Configurator\\Traits\\LocalizedRouteTrait' => $vendorDir . '/symfony/routing/Loader/Configurator/Traits/LocalizedRouteTrait.php', - 'Symfony\\Component\\Routing\\Loader\\Configurator\\Traits\\PrefixTrait' => $vendorDir . '/symfony/routing/Loader/Configurator/Traits/PrefixTrait.php', - 'Symfony\\Component\\Routing\\Loader\\Configurator\\Traits\\RouteTrait' => $vendorDir . '/symfony/routing/Loader/Configurator/Traits/RouteTrait.php', - 'Symfony\\Component\\Routing\\Loader\\ContainerLoader' => $vendorDir . '/symfony/routing/Loader/ContainerLoader.php', - 'Symfony\\Component\\Routing\\Loader\\DirectoryLoader' => $vendorDir . '/symfony/routing/Loader/DirectoryLoader.php', - 'Symfony\\Component\\Routing\\Loader\\GlobFileLoader' => $vendorDir . '/symfony/routing/Loader/GlobFileLoader.php', - 'Symfony\\Component\\Routing\\Loader\\ObjectLoader' => $vendorDir . '/symfony/routing/Loader/ObjectLoader.php', - 'Symfony\\Component\\Routing\\Loader\\PhpFileLoader' => $vendorDir . '/symfony/routing/Loader/PhpFileLoader.php', - 'Symfony\\Component\\Routing\\Loader\\Psr4DirectoryLoader' => $vendorDir . '/symfony/routing/Loader/Psr4DirectoryLoader.php', - 'Symfony\\Component\\Routing\\Loader\\XmlFileLoader' => $vendorDir . '/symfony/routing/Loader/XmlFileLoader.php', - 'Symfony\\Component\\Routing\\Loader\\YamlFileLoader' => $vendorDir . '/symfony/routing/Loader/YamlFileLoader.php', - 'Symfony\\Component\\Routing\\Matcher\\CompiledUrlMatcher' => $vendorDir . '/symfony/routing/Matcher/CompiledUrlMatcher.php', - 'Symfony\\Component\\Routing\\Matcher\\Dumper\\CompiledUrlMatcherDumper' => $vendorDir . '/symfony/routing/Matcher/Dumper/CompiledUrlMatcherDumper.php', - 'Symfony\\Component\\Routing\\Matcher\\Dumper\\CompiledUrlMatcherTrait' => $vendorDir . '/symfony/routing/Matcher/Dumper/CompiledUrlMatcherTrait.php', - 'Symfony\\Component\\Routing\\Matcher\\Dumper\\MatcherDumper' => $vendorDir . '/symfony/routing/Matcher/Dumper/MatcherDumper.php', - 'Symfony\\Component\\Routing\\Matcher\\Dumper\\MatcherDumperInterface' => $vendorDir . '/symfony/routing/Matcher/Dumper/MatcherDumperInterface.php', - 'Symfony\\Component\\Routing\\Matcher\\Dumper\\StaticPrefixCollection' => $vendorDir . '/symfony/routing/Matcher/Dumper/StaticPrefixCollection.php', - 'Symfony\\Component\\Routing\\Matcher\\ExpressionLanguageProvider' => $vendorDir . '/symfony/routing/Matcher/ExpressionLanguageProvider.php', - 'Symfony\\Component\\Routing\\Matcher\\RedirectableUrlMatcher' => $vendorDir . '/symfony/routing/Matcher/RedirectableUrlMatcher.php', - 'Symfony\\Component\\Routing\\Matcher\\RedirectableUrlMatcherInterface' => $vendorDir . '/symfony/routing/Matcher/RedirectableUrlMatcherInterface.php', - 'Symfony\\Component\\Routing\\Matcher\\RequestMatcherInterface' => $vendorDir . '/symfony/routing/Matcher/RequestMatcherInterface.php', - 'Symfony\\Component\\Routing\\Matcher\\TraceableUrlMatcher' => $vendorDir . '/symfony/routing/Matcher/TraceableUrlMatcher.php', - 'Symfony\\Component\\Routing\\Matcher\\UrlMatcher' => $vendorDir . '/symfony/routing/Matcher/UrlMatcher.php', - 'Symfony\\Component\\Routing\\Matcher\\UrlMatcherInterface' => $vendorDir . '/symfony/routing/Matcher/UrlMatcherInterface.php', - 'Symfony\\Component\\Routing\\RequestContext' => $vendorDir . '/symfony/routing/RequestContext.php', - 'Symfony\\Component\\Routing\\RequestContextAwareInterface' => $vendorDir . '/symfony/routing/RequestContextAwareInterface.php', - 'Symfony\\Component\\Routing\\Requirement\\EnumRequirement' => $vendorDir . '/symfony/routing/Requirement/EnumRequirement.php', - 'Symfony\\Component\\Routing\\Requirement\\Requirement' => $vendorDir . '/symfony/routing/Requirement/Requirement.php', - 'Symfony\\Component\\Routing\\Route' => $vendorDir . '/symfony/routing/Route.php', - 'Symfony\\Component\\Routing\\RouteCollection' => $vendorDir . '/symfony/routing/RouteCollection.php', - 'Symfony\\Component\\Routing\\RouteCompiler' => $vendorDir . '/symfony/routing/RouteCompiler.php', - 'Symfony\\Component\\Routing\\RouteCompilerInterface' => $vendorDir . '/symfony/routing/RouteCompilerInterface.php', - 'Symfony\\Component\\Routing\\Router' => $vendorDir . '/symfony/routing/Router.php', - 'Symfony\\Component\\Routing\\RouterInterface' => $vendorDir . '/symfony/routing/RouterInterface.php', - 'Symfony\\Component\\String\\AbstractString' => $vendorDir . '/symfony/string/AbstractString.php', - 'Symfony\\Component\\String\\AbstractUnicodeString' => $vendorDir . '/symfony/string/AbstractUnicodeString.php', - 'Symfony\\Component\\String\\ByteString' => $vendorDir . '/symfony/string/ByteString.php', - 'Symfony\\Component\\String\\CodePointString' => $vendorDir . '/symfony/string/CodePointString.php', - 'Symfony\\Component\\String\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/string/Exception/ExceptionInterface.php', - 'Symfony\\Component\\String\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/string/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\String\\Exception\\RuntimeException' => $vendorDir . '/symfony/string/Exception/RuntimeException.php', - 'Symfony\\Component\\String\\Inflector\\EnglishInflector' => $vendorDir . '/symfony/string/Inflector/EnglishInflector.php', - 'Symfony\\Component\\String\\Inflector\\FrenchInflector' => $vendorDir . '/symfony/string/Inflector/FrenchInflector.php', - 'Symfony\\Component\\String\\Inflector\\InflectorInterface' => $vendorDir . '/symfony/string/Inflector/InflectorInterface.php', - 'Symfony\\Component\\String\\Inflector\\SpanishInflector' => $vendorDir . '/symfony/string/Inflector/SpanishInflector.php', - 'Symfony\\Component\\String\\LazyString' => $vendorDir . '/symfony/string/LazyString.php', - 'Symfony\\Component\\String\\Slugger\\AsciiSlugger' => $vendorDir . '/symfony/string/Slugger/AsciiSlugger.php', - 'Symfony\\Component\\String\\Slugger\\SluggerInterface' => $vendorDir . '/symfony/string/Slugger/SluggerInterface.php', - 'Symfony\\Component\\String\\TruncateMode' => $vendorDir . '/symfony/string/TruncateMode.php', - 'Symfony\\Component\\String\\UnicodeString' => $vendorDir . '/symfony/string/UnicodeString.php', - 'Symfony\\Component\\Translation\\CatalogueMetadataAwareInterface' => $vendorDir . '/symfony/translation/CatalogueMetadataAwareInterface.php', - 'Symfony\\Component\\Translation\\Catalogue\\AbstractOperation' => $vendorDir . '/symfony/translation/Catalogue/AbstractOperation.php', - 'Symfony\\Component\\Translation\\Catalogue\\MergeOperation' => $vendorDir . '/symfony/translation/Catalogue/MergeOperation.php', - 'Symfony\\Component\\Translation\\Catalogue\\OperationInterface' => $vendorDir . '/symfony/translation/Catalogue/OperationInterface.php', - 'Symfony\\Component\\Translation\\Catalogue\\TargetOperation' => $vendorDir . '/symfony/translation/Catalogue/TargetOperation.php', - 'Symfony\\Component\\Translation\\Command\\TranslationPullCommand' => $vendorDir . '/symfony/translation/Command/TranslationPullCommand.php', - 'Symfony\\Component\\Translation\\Command\\TranslationPushCommand' => $vendorDir . '/symfony/translation/Command/TranslationPushCommand.php', - 'Symfony\\Component\\Translation\\Command\\TranslationTrait' => $vendorDir . '/symfony/translation/Command/TranslationTrait.php', - 'Symfony\\Component\\Translation\\Command\\XliffLintCommand' => $vendorDir . '/symfony/translation/Command/XliffLintCommand.php', - 'Symfony\\Component\\Translation\\DataCollectorTranslator' => $vendorDir . '/symfony/translation/DataCollectorTranslator.php', - 'Symfony\\Component\\Translation\\DataCollector\\TranslationDataCollector' => $vendorDir . '/symfony/translation/DataCollector/TranslationDataCollector.php', - 'Symfony\\Component\\Translation\\DependencyInjection\\DataCollectorTranslatorPass' => $vendorDir . '/symfony/translation/DependencyInjection/DataCollectorTranslatorPass.php', - 'Symfony\\Component\\Translation\\DependencyInjection\\LoggingTranslatorPass' => $vendorDir . '/symfony/translation/DependencyInjection/LoggingTranslatorPass.php', - 'Symfony\\Component\\Translation\\DependencyInjection\\TranslationDumperPass' => $vendorDir . '/symfony/translation/DependencyInjection/TranslationDumperPass.php', - 'Symfony\\Component\\Translation\\DependencyInjection\\TranslationExtractorPass' => $vendorDir . '/symfony/translation/DependencyInjection/TranslationExtractorPass.php', - 'Symfony\\Component\\Translation\\DependencyInjection\\TranslatorPass' => $vendorDir . '/symfony/translation/DependencyInjection/TranslatorPass.php', - 'Symfony\\Component\\Translation\\DependencyInjection\\TranslatorPathsPass' => $vendorDir . '/symfony/translation/DependencyInjection/TranslatorPathsPass.php', - 'Symfony\\Component\\Translation\\Dumper\\CsvFileDumper' => $vendorDir . '/symfony/translation/Dumper/CsvFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\DumperInterface' => $vendorDir . '/symfony/translation/Dumper/DumperInterface.php', - 'Symfony\\Component\\Translation\\Dumper\\FileDumper' => $vendorDir . '/symfony/translation/Dumper/FileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\IcuResFileDumper' => $vendorDir . '/symfony/translation/Dumper/IcuResFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\IniFileDumper' => $vendorDir . '/symfony/translation/Dumper/IniFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\JsonFileDumper' => $vendorDir . '/symfony/translation/Dumper/JsonFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\MoFileDumper' => $vendorDir . '/symfony/translation/Dumper/MoFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\PhpFileDumper' => $vendorDir . '/symfony/translation/Dumper/PhpFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\PoFileDumper' => $vendorDir . '/symfony/translation/Dumper/PoFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\QtFileDumper' => $vendorDir . '/symfony/translation/Dumper/QtFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\XliffFileDumper' => $vendorDir . '/symfony/translation/Dumper/XliffFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\YamlFileDumper' => $vendorDir . '/symfony/translation/Dumper/YamlFileDumper.php', - 'Symfony\\Component\\Translation\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/translation/Exception/ExceptionInterface.php', - 'Symfony\\Component\\Translation\\Exception\\IncompleteDsnException' => $vendorDir . '/symfony/translation/Exception/IncompleteDsnException.php', - 'Symfony\\Component\\Translation\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/translation/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\Translation\\Exception\\InvalidResourceException' => $vendorDir . '/symfony/translation/Exception/InvalidResourceException.php', - 'Symfony\\Component\\Translation\\Exception\\LogicException' => $vendorDir . '/symfony/translation/Exception/LogicException.php', - 'Symfony\\Component\\Translation\\Exception\\MissingRequiredOptionException' => $vendorDir . '/symfony/translation/Exception/MissingRequiredOptionException.php', - 'Symfony\\Component\\Translation\\Exception\\NotFoundResourceException' => $vendorDir . '/symfony/translation/Exception/NotFoundResourceException.php', - 'Symfony\\Component\\Translation\\Exception\\ProviderException' => $vendorDir . '/symfony/translation/Exception/ProviderException.php', - 'Symfony\\Component\\Translation\\Exception\\ProviderExceptionInterface' => $vendorDir . '/symfony/translation/Exception/ProviderExceptionInterface.php', - 'Symfony\\Component\\Translation\\Exception\\RuntimeException' => $vendorDir . '/symfony/translation/Exception/RuntimeException.php', - 'Symfony\\Component\\Translation\\Exception\\UnsupportedSchemeException' => $vendorDir . '/symfony/translation/Exception/UnsupportedSchemeException.php', - 'Symfony\\Component\\Translation\\Extractor\\AbstractFileExtractor' => $vendorDir . '/symfony/translation/Extractor/AbstractFileExtractor.php', - 'Symfony\\Component\\Translation\\Extractor\\ChainExtractor' => $vendorDir . '/symfony/translation/Extractor/ChainExtractor.php', - 'Symfony\\Component\\Translation\\Extractor\\ExtractorInterface' => $vendorDir . '/symfony/translation/Extractor/ExtractorInterface.php', - 'Symfony\\Component\\Translation\\Extractor\\PhpAstExtractor' => $vendorDir . '/symfony/translation/Extractor/PhpAstExtractor.php', - 'Symfony\\Component\\Translation\\Extractor\\PhpExtractor' => $vendorDir . '/symfony/translation/Extractor/PhpExtractor.php', - 'Symfony\\Component\\Translation\\Extractor\\PhpStringTokenParser' => $vendorDir . '/symfony/translation/Extractor/PhpStringTokenParser.php', - 'Symfony\\Component\\Translation\\Extractor\\Visitor\\AbstractVisitor' => $vendorDir . '/symfony/translation/Extractor/Visitor/AbstractVisitor.php', - 'Symfony\\Component\\Translation\\Extractor\\Visitor\\ConstraintVisitor' => $vendorDir . '/symfony/translation/Extractor/Visitor/ConstraintVisitor.php', - 'Symfony\\Component\\Translation\\Extractor\\Visitor\\TransMethodVisitor' => $vendorDir . '/symfony/translation/Extractor/Visitor/TransMethodVisitor.php', - 'Symfony\\Component\\Translation\\Extractor\\Visitor\\TranslatableMessageVisitor' => $vendorDir . '/symfony/translation/Extractor/Visitor/TranslatableMessageVisitor.php', - 'Symfony\\Component\\Translation\\Formatter\\IntlFormatter' => $vendorDir . '/symfony/translation/Formatter/IntlFormatter.php', - 'Symfony\\Component\\Translation\\Formatter\\IntlFormatterInterface' => $vendorDir . '/symfony/translation/Formatter/IntlFormatterInterface.php', - 'Symfony\\Component\\Translation\\Formatter\\MessageFormatter' => $vendorDir . '/symfony/translation/Formatter/MessageFormatter.php', - 'Symfony\\Component\\Translation\\Formatter\\MessageFormatterInterface' => $vendorDir . '/symfony/translation/Formatter/MessageFormatterInterface.php', - 'Symfony\\Component\\Translation\\IdentityTranslator' => $vendorDir . '/symfony/translation/IdentityTranslator.php', - 'Symfony\\Component\\Translation\\Loader\\ArrayLoader' => $vendorDir . '/symfony/translation/Loader/ArrayLoader.php', - 'Symfony\\Component\\Translation\\Loader\\CsvFileLoader' => $vendorDir . '/symfony/translation/Loader/CsvFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\FileLoader' => $vendorDir . '/symfony/translation/Loader/FileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\IcuDatFileLoader' => $vendorDir . '/symfony/translation/Loader/IcuDatFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\IcuResFileLoader' => $vendorDir . '/symfony/translation/Loader/IcuResFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\IniFileLoader' => $vendorDir . '/symfony/translation/Loader/IniFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\JsonFileLoader' => $vendorDir . '/symfony/translation/Loader/JsonFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\LoaderInterface' => $vendorDir . '/symfony/translation/Loader/LoaderInterface.php', - 'Symfony\\Component\\Translation\\Loader\\MoFileLoader' => $vendorDir . '/symfony/translation/Loader/MoFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\PhpFileLoader' => $vendorDir . '/symfony/translation/Loader/PhpFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\PoFileLoader' => $vendorDir . '/symfony/translation/Loader/PoFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\QtFileLoader' => $vendorDir . '/symfony/translation/Loader/QtFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\XliffFileLoader' => $vendorDir . '/symfony/translation/Loader/XliffFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\YamlFileLoader' => $vendorDir . '/symfony/translation/Loader/YamlFileLoader.php', - 'Symfony\\Component\\Translation\\LocaleSwitcher' => $vendorDir . '/symfony/translation/LocaleSwitcher.php', - 'Symfony\\Component\\Translation\\LoggingTranslator' => $vendorDir . '/symfony/translation/LoggingTranslator.php', - 'Symfony\\Component\\Translation\\MessageCatalogue' => $vendorDir . '/symfony/translation/MessageCatalogue.php', - 'Symfony\\Component\\Translation\\MessageCatalogueInterface' => $vendorDir . '/symfony/translation/MessageCatalogueInterface.php', - 'Symfony\\Component\\Translation\\MetadataAwareInterface' => $vendorDir . '/symfony/translation/MetadataAwareInterface.php', - 'Symfony\\Component\\Translation\\Provider\\AbstractProviderFactory' => $vendorDir . '/symfony/translation/Provider/AbstractProviderFactory.php', - 'Symfony\\Component\\Translation\\Provider\\Dsn' => $vendorDir . '/symfony/translation/Provider/Dsn.php', - 'Symfony\\Component\\Translation\\Provider\\FilteringProvider' => $vendorDir . '/symfony/translation/Provider/FilteringProvider.php', - 'Symfony\\Component\\Translation\\Provider\\NullProvider' => $vendorDir . '/symfony/translation/Provider/NullProvider.php', - 'Symfony\\Component\\Translation\\Provider\\NullProviderFactory' => $vendorDir . '/symfony/translation/Provider/NullProviderFactory.php', - 'Symfony\\Component\\Translation\\Provider\\ProviderFactoryInterface' => $vendorDir . '/symfony/translation/Provider/ProviderFactoryInterface.php', - 'Symfony\\Component\\Translation\\Provider\\ProviderInterface' => $vendorDir . '/symfony/translation/Provider/ProviderInterface.php', - 'Symfony\\Component\\Translation\\Provider\\TranslationProviderCollection' => $vendorDir . '/symfony/translation/Provider/TranslationProviderCollection.php', - 'Symfony\\Component\\Translation\\Provider\\TranslationProviderCollectionFactory' => $vendorDir . '/symfony/translation/Provider/TranslationProviderCollectionFactory.php', - 'Symfony\\Component\\Translation\\PseudoLocalizationTranslator' => $vendorDir . '/symfony/translation/PseudoLocalizationTranslator.php', - 'Symfony\\Component\\Translation\\Reader\\TranslationReader' => $vendorDir . '/symfony/translation/Reader/TranslationReader.php', - 'Symfony\\Component\\Translation\\Reader\\TranslationReaderInterface' => $vendorDir . '/symfony/translation/Reader/TranslationReaderInterface.php', - 'Symfony\\Component\\Translation\\Test\\ProviderFactoryTestCase' => $vendorDir . '/symfony/translation/Test/ProviderFactoryTestCase.php', - 'Symfony\\Component\\Translation\\Test\\ProviderTestCase' => $vendorDir . '/symfony/translation/Test/ProviderTestCase.php', - 'Symfony\\Component\\Translation\\TranslatableMessage' => $vendorDir . '/symfony/translation/TranslatableMessage.php', - 'Symfony\\Component\\Translation\\Translator' => $vendorDir . '/symfony/translation/Translator.php', - 'Symfony\\Component\\Translation\\TranslatorBag' => $vendorDir . '/symfony/translation/TranslatorBag.php', - 'Symfony\\Component\\Translation\\TranslatorBagInterface' => $vendorDir . '/symfony/translation/TranslatorBagInterface.php', - 'Symfony\\Component\\Translation\\Util\\ArrayConverter' => $vendorDir . '/symfony/translation/Util/ArrayConverter.php', - '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\\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', - 'Symfony\\Component\\Uid\\Command\\GenerateUuidCommand' => $vendorDir . '/symfony/uid/Command/GenerateUuidCommand.php', - 'Symfony\\Component\\Uid\\Command\\InspectUlidCommand' => $vendorDir . '/symfony/uid/Command/InspectUlidCommand.php', - 'Symfony\\Component\\Uid\\Command\\InspectUuidCommand' => $vendorDir . '/symfony/uid/Command/InspectUuidCommand.php', - 'Symfony\\Component\\Uid\\Factory\\NameBasedUuidFactory' => $vendorDir . '/symfony/uid/Factory/NameBasedUuidFactory.php', - 'Symfony\\Component\\Uid\\Factory\\RandomBasedUuidFactory' => $vendorDir . '/symfony/uid/Factory/RandomBasedUuidFactory.php', - 'Symfony\\Component\\Uid\\Factory\\TimeBasedUuidFactory' => $vendorDir . '/symfony/uid/Factory/TimeBasedUuidFactory.php', - 'Symfony\\Component\\Uid\\Factory\\UlidFactory' => $vendorDir . '/symfony/uid/Factory/UlidFactory.php', - 'Symfony\\Component\\Uid\\Factory\\UuidFactory' => $vendorDir . '/symfony/uid/Factory/UuidFactory.php', - 'Symfony\\Component\\Uid\\MaxUlid' => $vendorDir . '/symfony/uid/MaxUlid.php', - 'Symfony\\Component\\Uid\\MaxUuid' => $vendorDir . '/symfony/uid/MaxUuid.php', - 'Symfony\\Component\\Uid\\NilUlid' => $vendorDir . '/symfony/uid/NilUlid.php', - 'Symfony\\Component\\Uid\\NilUuid' => $vendorDir . '/symfony/uid/NilUuid.php', - 'Symfony\\Component\\Uid\\TimeBasedUidInterface' => $vendorDir . '/symfony/uid/TimeBasedUidInterface.php', - 'Symfony\\Component\\Uid\\Ulid' => $vendorDir . '/symfony/uid/Ulid.php', - 'Symfony\\Component\\Uid\\Uuid' => $vendorDir . '/symfony/uid/Uuid.php', - 'Symfony\\Component\\Uid\\UuidV1' => $vendorDir . '/symfony/uid/UuidV1.php', - 'Symfony\\Component\\Uid\\UuidV3' => $vendorDir . '/symfony/uid/UuidV3.php', - 'Symfony\\Component\\Uid\\UuidV4' => $vendorDir . '/symfony/uid/UuidV4.php', - 'Symfony\\Component\\Uid\\UuidV5' => $vendorDir . '/symfony/uid/UuidV5.php', - 'Symfony\\Component\\Uid\\UuidV6' => $vendorDir . '/symfony/uid/UuidV6.php', - 'Symfony\\Component\\Uid\\UuidV7' => $vendorDir . '/symfony/uid/UuidV7.php', - 'Symfony\\Component\\Uid\\UuidV8' => $vendorDir . '/symfony/uid/UuidV8.php', - 'Symfony\\Component\\VarDumper\\Caster\\AmqpCaster' => $vendorDir . '/symfony/var-dumper/Caster/AmqpCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\ArgsStub' => $vendorDir . '/symfony/var-dumper/Caster/ArgsStub.php', - 'Symfony\\Component\\VarDumper\\Caster\\Caster' => $vendorDir . '/symfony/var-dumper/Caster/Caster.php', - 'Symfony\\Component\\VarDumper\\Caster\\ClassStub' => $vendorDir . '/symfony/var-dumper/Caster/ClassStub.php', - 'Symfony\\Component\\VarDumper\\Caster\\ConstStub' => $vendorDir . '/symfony/var-dumper/Caster/ConstStub.php', - 'Symfony\\Component\\VarDumper\\Caster\\CutArrayStub' => $vendorDir . '/symfony/var-dumper/Caster/CutArrayStub.php', - 'Symfony\\Component\\VarDumper\\Caster\\CutStub' => $vendorDir . '/symfony/var-dumper/Caster/CutStub.php', - 'Symfony\\Component\\VarDumper\\Caster\\DOMCaster' => $vendorDir . '/symfony/var-dumper/Caster/DOMCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\DateCaster' => $vendorDir . '/symfony/var-dumper/Caster/DateCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\DoctrineCaster' => $vendorDir . '/symfony/var-dumper/Caster/DoctrineCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\DsCaster' => $vendorDir . '/symfony/var-dumper/Caster/DsCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\DsPairStub' => $vendorDir . '/symfony/var-dumper/Caster/DsPairStub.php', - 'Symfony\\Component\\VarDumper\\Caster\\EnumStub' => $vendorDir . '/symfony/var-dumper/Caster/EnumStub.php', - 'Symfony\\Component\\VarDumper\\Caster\\ExceptionCaster' => $vendorDir . '/symfony/var-dumper/Caster/ExceptionCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\FFICaster' => $vendorDir . '/symfony/var-dumper/Caster/FFICaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\FiberCaster' => $vendorDir . '/symfony/var-dumper/Caster/FiberCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\FrameStub' => $vendorDir . '/symfony/var-dumper/Caster/FrameStub.php', - 'Symfony\\Component\\VarDumper\\Caster\\GmpCaster' => $vendorDir . '/symfony/var-dumper/Caster/GmpCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\ImagineCaster' => $vendorDir . '/symfony/var-dumper/Caster/ImagineCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\ImgStub' => $vendorDir . '/symfony/var-dumper/Caster/ImgStub.php', - 'Symfony\\Component\\VarDumper\\Caster\\IntlCaster' => $vendorDir . '/symfony/var-dumper/Caster/IntlCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\LinkStub' => $vendorDir . '/symfony/var-dumper/Caster/LinkStub.php', - 'Symfony\\Component\\VarDumper\\Caster\\MemcachedCaster' => $vendorDir . '/symfony/var-dumper/Caster/MemcachedCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\MysqliCaster' => $vendorDir . '/symfony/var-dumper/Caster/MysqliCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\PdoCaster' => $vendorDir . '/symfony/var-dumper/Caster/PdoCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\PgSqlCaster' => $vendorDir . '/symfony/var-dumper/Caster/PgSqlCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\ProxyManagerCaster' => $vendorDir . '/symfony/var-dumper/Caster/ProxyManagerCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\RdKafkaCaster' => $vendorDir . '/symfony/var-dumper/Caster/RdKafkaCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\RedisCaster' => $vendorDir . '/symfony/var-dumper/Caster/RedisCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\ReflectionCaster' => $vendorDir . '/symfony/var-dumper/Caster/ReflectionCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\ResourceCaster' => $vendorDir . '/symfony/var-dumper/Caster/ResourceCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\ScalarStub' => $vendorDir . '/symfony/var-dumper/Caster/ScalarStub.php', - 'Symfony\\Component\\VarDumper\\Caster\\SplCaster' => $vendorDir . '/symfony/var-dumper/Caster/SplCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\StubCaster' => $vendorDir . '/symfony/var-dumper/Caster/StubCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\SymfonyCaster' => $vendorDir . '/symfony/var-dumper/Caster/SymfonyCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\TraceStub' => $vendorDir . '/symfony/var-dumper/Caster/TraceStub.php', - 'Symfony\\Component\\VarDumper\\Caster\\UninitializedStub' => $vendorDir . '/symfony/var-dumper/Caster/UninitializedStub.php', - 'Symfony\\Component\\VarDumper\\Caster\\UuidCaster' => $vendorDir . '/symfony/var-dumper/Caster/UuidCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\XmlReaderCaster' => $vendorDir . '/symfony/var-dumper/Caster/XmlReaderCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\XmlResourceCaster' => $vendorDir . '/symfony/var-dumper/Caster/XmlResourceCaster.php', - 'Symfony\\Component\\VarDumper\\Cloner\\AbstractCloner' => $vendorDir . '/symfony/var-dumper/Cloner/AbstractCloner.php', - 'Symfony\\Component\\VarDumper\\Cloner\\ClonerInterface' => $vendorDir . '/symfony/var-dumper/Cloner/ClonerInterface.php', - 'Symfony\\Component\\VarDumper\\Cloner\\Cursor' => $vendorDir . '/symfony/var-dumper/Cloner/Cursor.php', - 'Symfony\\Component\\VarDumper\\Cloner\\Data' => $vendorDir . '/symfony/var-dumper/Cloner/Data.php', - 'Symfony\\Component\\VarDumper\\Cloner\\DumperInterface' => $vendorDir . '/symfony/var-dumper/Cloner/DumperInterface.php', - 'Symfony\\Component\\VarDumper\\Cloner\\Internal\\NoDefault' => $vendorDir . '/symfony/var-dumper/Cloner/Internal/NoDefault.php', - 'Symfony\\Component\\VarDumper\\Cloner\\Stub' => $vendorDir . '/symfony/var-dumper/Cloner/Stub.php', - 'Symfony\\Component\\VarDumper\\Cloner\\VarCloner' => $vendorDir . '/symfony/var-dumper/Cloner/VarCloner.php', - 'Symfony\\Component\\VarDumper\\Command\\Descriptor\\CliDescriptor' => $vendorDir . '/symfony/var-dumper/Command/Descriptor/CliDescriptor.php', - 'Symfony\\Component\\VarDumper\\Command\\Descriptor\\DumpDescriptorInterface' => $vendorDir . '/symfony/var-dumper/Command/Descriptor/DumpDescriptorInterface.php', - 'Symfony\\Component\\VarDumper\\Command\\Descriptor\\HtmlDescriptor' => $vendorDir . '/symfony/var-dumper/Command/Descriptor/HtmlDescriptor.php', - 'Symfony\\Component\\VarDumper\\Command\\ServerDumpCommand' => $vendorDir . '/symfony/var-dumper/Command/ServerDumpCommand.php', - 'Symfony\\Component\\VarDumper\\Dumper\\AbstractDumper' => $vendorDir . '/symfony/var-dumper/Dumper/AbstractDumper.php', - 'Symfony\\Component\\VarDumper\\Dumper\\CliDumper' => $vendorDir . '/symfony/var-dumper/Dumper/CliDumper.php', - 'Symfony\\Component\\VarDumper\\Dumper\\ContextProvider\\CliContextProvider' => $vendorDir . '/symfony/var-dumper/Dumper/ContextProvider/CliContextProvider.php', - 'Symfony\\Component\\VarDumper\\Dumper\\ContextProvider\\ContextProviderInterface' => $vendorDir . '/symfony/var-dumper/Dumper/ContextProvider/ContextProviderInterface.php', - 'Symfony\\Component\\VarDumper\\Dumper\\ContextProvider\\RequestContextProvider' => $vendorDir . '/symfony/var-dumper/Dumper/ContextProvider/RequestContextProvider.php', - 'Symfony\\Component\\VarDumper\\Dumper\\ContextProvider\\SourceContextProvider' => $vendorDir . '/symfony/var-dumper/Dumper/ContextProvider/SourceContextProvider.php', - 'Symfony\\Component\\VarDumper\\Dumper\\ContextualizedDumper' => $vendorDir . '/symfony/var-dumper/Dumper/ContextualizedDumper.php', - 'Symfony\\Component\\VarDumper\\Dumper\\DataDumperInterface' => $vendorDir . '/symfony/var-dumper/Dumper/DataDumperInterface.php', - 'Symfony\\Component\\VarDumper\\Dumper\\HtmlDumper' => $vendorDir . '/symfony/var-dumper/Dumper/HtmlDumper.php', - 'Symfony\\Component\\VarDumper\\Dumper\\ServerDumper' => $vendorDir . '/symfony/var-dumper/Dumper/ServerDumper.php', - 'Symfony\\Component\\VarDumper\\Exception\\ThrowingCasterException' => $vendorDir . '/symfony/var-dumper/Exception/ThrowingCasterException.php', - 'Symfony\\Component\\VarDumper\\Server\\Connection' => $vendorDir . '/symfony/var-dumper/Server/Connection.php', - 'Symfony\\Component\\VarDumper\\Server\\DumpServer' => $vendorDir . '/symfony/var-dumper/Server/DumpServer.php', - 'Symfony\\Component\\VarDumper\\Test\\VarDumperTestTrait' => $vendorDir . '/symfony/var-dumper/Test/VarDumperTestTrait.php', - 'Symfony\\Component\\VarDumper\\VarDumper' => $vendorDir . '/symfony/var-dumper/VarDumper.php', - 'Symfony\\Contracts\\EventDispatcher\\Event' => $vendorDir . '/symfony/event-dispatcher-contracts/Event.php', - 'Symfony\\Contracts\\EventDispatcher\\EventDispatcherInterface' => $vendorDir . '/symfony/event-dispatcher-contracts/EventDispatcherInterface.php', - 'Symfony\\Contracts\\Service\\Attribute\\Required' => $vendorDir . '/symfony/service-contracts/Attribute/Required.php', - 'Symfony\\Contracts\\Service\\Attribute\\SubscribedService' => $vendorDir . '/symfony/service-contracts/Attribute/SubscribedService.php', - 'Symfony\\Contracts\\Service\\ResetInterface' => $vendorDir . '/symfony/service-contracts/ResetInterface.php', - 'Symfony\\Contracts\\Service\\ServiceCollectionInterface' => $vendorDir . '/symfony/service-contracts/ServiceCollectionInterface.php', - 'Symfony\\Contracts\\Service\\ServiceLocatorTrait' => $vendorDir . '/symfony/service-contracts/ServiceLocatorTrait.php', - 'Symfony\\Contracts\\Service\\ServiceMethodsSubscriberTrait' => $vendorDir . '/symfony/service-contracts/ServiceMethodsSubscriberTrait.php', - 'Symfony\\Contracts\\Service\\ServiceProviderInterface' => $vendorDir . '/symfony/service-contracts/ServiceProviderInterface.php', - 'Symfony\\Contracts\\Service\\ServiceSubscriberInterface' => $vendorDir . '/symfony/service-contracts/ServiceSubscriberInterface.php', - 'Symfony\\Contracts\\Service\\ServiceSubscriberTrait' => $vendorDir . '/symfony/service-contracts/ServiceSubscriberTrait.php', - 'Symfony\\Contracts\\Translation\\LocaleAwareInterface' => $vendorDir . '/symfony/translation-contracts/LocaleAwareInterface.php', - 'Symfony\\Contracts\\Translation\\TranslatableInterface' => $vendorDir . '/symfony/translation-contracts/TranslatableInterface.php', - 'Symfony\\Contracts\\Translation\\TranslatorInterface' => $vendorDir . '/symfony/translation-contracts/TranslatorInterface.php', - 'Symfony\\Contracts\\Translation\\TranslatorTrait' => $vendorDir . '/symfony/translation-contracts/TranslatorTrait.php', - 'Symfony\\Polyfill\\Ctype\\Ctype' => $vendorDir . '/symfony/polyfill-ctype/Ctype.php', - 'Symfony\\Polyfill\\Intl\\Grapheme\\Grapheme' => $vendorDir . '/symfony/polyfill-intl-grapheme/Grapheme.php', - 'Symfony\\Polyfill\\Intl\\Idn\\Idn' => $vendorDir . '/symfony/polyfill-intl-idn/Idn.php', - 'Symfony\\Polyfill\\Intl\\Idn\\Info' => $vendorDir . '/symfony/polyfill-intl-idn/Info.php', - 'Symfony\\Polyfill\\Intl\\Idn\\Resources\\unidata\\DisallowedRanges' => $vendorDir . '/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php', - 'Symfony\\Polyfill\\Intl\\Idn\\Resources\\unidata\\Regex' => $vendorDir . '/symfony/polyfill-intl-idn/Resources/unidata/Regex.php', - 'Symfony\\Polyfill\\Intl\\Normalizer\\Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Normalizer.php', - 'Symfony\\Polyfill\\Mbstring\\Mbstring' => $vendorDir . '/symfony/polyfill-mbstring/Mbstring.php', - 'Symfony\\Polyfill\\Php80\\Php80' => $vendorDir . '/symfony/polyfill-php80/Php80.php', - 'Symfony\\Polyfill\\Php80\\PhpToken' => $vendorDir . '/symfony/polyfill-php80/PhpToken.php', - 'Symfony\\Polyfill\\Php83\\Php83' => $vendorDir . '/symfony/polyfill-php83/Php83.php', - 'Symfony\\Polyfill\\Uuid\\Uuid' => $vendorDir . '/symfony/polyfill-uuid/Uuid.php', - 'Termwind\\Actions\\StyleToMethod' => $vendorDir . '/nunomaduro/termwind/src/Actions/StyleToMethod.php', - 'Termwind\\Components\\Anchor' => $vendorDir . '/nunomaduro/termwind/src/Components/Anchor.php', - 'Termwind\\Components\\BreakLine' => $vendorDir . '/nunomaduro/termwind/src/Components/BreakLine.php', - 'Termwind\\Components\\Dd' => $vendorDir . '/nunomaduro/termwind/src/Components/Dd.php', - 'Termwind\\Components\\Div' => $vendorDir . '/nunomaduro/termwind/src/Components/Div.php', - 'Termwind\\Components\\Dl' => $vendorDir . '/nunomaduro/termwind/src/Components/Dl.php', - 'Termwind\\Components\\Dt' => $vendorDir . '/nunomaduro/termwind/src/Components/Dt.php', - 'Termwind\\Components\\Element' => $vendorDir . '/nunomaduro/termwind/src/Components/Element.php', - 'Termwind\\Components\\Hr' => $vendorDir . '/nunomaduro/termwind/src/Components/Hr.php', - 'Termwind\\Components\\Li' => $vendorDir . '/nunomaduro/termwind/src/Components/Li.php', - 'Termwind\\Components\\Ol' => $vendorDir . '/nunomaduro/termwind/src/Components/Ol.php', - 'Termwind\\Components\\Paragraph' => $vendorDir . '/nunomaduro/termwind/src/Components/Paragraph.php', - 'Termwind\\Components\\Raw' => $vendorDir . '/nunomaduro/termwind/src/Components/Raw.php', - 'Termwind\\Components\\Span' => $vendorDir . '/nunomaduro/termwind/src/Components/Span.php', - 'Termwind\\Components\\Ul' => $vendorDir . '/nunomaduro/termwind/src/Components/Ul.php', - 'Termwind\\Enums\\Color' => $vendorDir . '/nunomaduro/termwind/src/Enums/Color.php', - 'Termwind\\Exceptions\\ColorNotFound' => $vendorDir . '/nunomaduro/termwind/src/Exceptions/ColorNotFound.php', - 'Termwind\\Exceptions\\InvalidChild' => $vendorDir . '/nunomaduro/termwind/src/Exceptions/InvalidChild.php', - 'Termwind\\Exceptions\\InvalidColor' => $vendorDir . '/nunomaduro/termwind/src/Exceptions/InvalidColor.php', - 'Termwind\\Exceptions\\InvalidStyle' => $vendorDir . '/nunomaduro/termwind/src/Exceptions/InvalidStyle.php', - 'Termwind\\Exceptions\\StyleNotFound' => $vendorDir . '/nunomaduro/termwind/src/Exceptions/StyleNotFound.php', - 'Termwind\\Helpers\\QuestionHelper' => $vendorDir . '/nunomaduro/termwind/src/Helpers/QuestionHelper.php', - 'Termwind\\HtmlRenderer' => $vendorDir . '/nunomaduro/termwind/src/HtmlRenderer.php', - 'Termwind\\Html\\CodeRenderer' => $vendorDir . '/nunomaduro/termwind/src/Html/CodeRenderer.php', - 'Termwind\\Html\\InheritStyles' => $vendorDir . '/nunomaduro/termwind/src/Html/InheritStyles.php', - 'Termwind\\Html\\PreRenderer' => $vendorDir . '/nunomaduro/termwind/src/Html/PreRenderer.php', - 'Termwind\\Html\\TableRenderer' => $vendorDir . '/nunomaduro/termwind/src/Html/TableRenderer.php', - 'Termwind\\Laravel\\TermwindServiceProvider' => $vendorDir . '/nunomaduro/termwind/src/Laravel/TermwindServiceProvider.php', - 'Termwind\\Question' => $vendorDir . '/nunomaduro/termwind/src/Question.php', - 'Termwind\\Repositories\\Styles' => $vendorDir . '/nunomaduro/termwind/src/Repositories/Styles.php', - 'Termwind\\Terminal' => $vendorDir . '/nunomaduro/termwind/src/Terminal.php', - 'Termwind\\Termwind' => $vendorDir . '/nunomaduro/termwind/src/Termwind.php', - 'Termwind\\ValueObjects\\Node' => $vendorDir . '/nunomaduro/termwind/src/ValueObjects/Node.php', - 'Termwind\\ValueObjects\\Style' => $vendorDir . '/nunomaduro/termwind/src/ValueObjects/Style.php', - 'Termwind\\ValueObjects\\Styles' => $vendorDir . '/nunomaduro/termwind/src/ValueObjects/Styles.php', - 'Tests\\CreatesApplication' => $baseDir . '/tests/CreatesApplication.php', - 'Tests\\Feature\\ExampleTest' => $baseDir . '/tests/Feature/ExampleTest.php', - 'Tests\\TestCase' => $baseDir . '/tests/TestCase.php', - 'Tests\\Unit\\ExampleTest' => $baseDir . '/tests/Unit/ExampleTest.php', - 'TheSeer\\Tokenizer\\Exception' => $vendorDir . '/theseer/tokenizer/src/Exception.php', - 'TheSeer\\Tokenizer\\NamespaceUri' => $vendorDir . '/theseer/tokenizer/src/NamespaceUri.php', - 'TheSeer\\Tokenizer\\NamespaceUriException' => $vendorDir . '/theseer/tokenizer/src/NamespaceUriException.php', - 'TheSeer\\Tokenizer\\Token' => $vendorDir . '/theseer/tokenizer/src/Token.php', - 'TheSeer\\Tokenizer\\TokenCollection' => $vendorDir . '/theseer/tokenizer/src/TokenCollection.php', - 'TheSeer\\Tokenizer\\TokenCollectionException' => $vendorDir . '/theseer/tokenizer/src/TokenCollectionException.php', - 'TheSeer\\Tokenizer\\Tokenizer' => $vendorDir . '/theseer/tokenizer/src/Tokenizer.php', - 'TheSeer\\Tokenizer\\XMLSerializer' => $vendorDir . '/theseer/tokenizer/src/XMLSerializer.php', - 'TijsVerkoyen\\CssToInlineStyles\\CssToInlineStyles' => $vendorDir . '/tijsverkoyen/css-to-inline-styles/src/CssToInlineStyles.php', - 'TijsVerkoyen\\CssToInlineStyles\\Css\\Processor' => $vendorDir . '/tijsverkoyen/css-to-inline-styles/src/Css/Processor.php', - 'TijsVerkoyen\\CssToInlineStyles\\Css\\Property\\Processor' => $vendorDir . '/tijsverkoyen/css-to-inline-styles/src/Css/Property/Processor.php', - 'TijsVerkoyen\\CssToInlineStyles\\Css\\Property\\Property' => $vendorDir . '/tijsverkoyen/css-to-inline-styles/src/Css/Property/Property.php', - 'TijsVerkoyen\\CssToInlineStyles\\Css\\Rule\\Processor' => $vendorDir . '/tijsverkoyen/css-to-inline-styles/src/Css/Rule/Processor.php', - 'TijsVerkoyen\\CssToInlineStyles\\Css\\Rule\\Rule' => $vendorDir . '/tijsverkoyen/css-to-inline-styles/src/Css/Rule/Rule.php', - 'UnhandledMatchError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', - 'ValueError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/ValueError.php', - 'Webmozart\\Assert\\Assert' => $vendorDir . '/webmozart/assert/src/Assert.php', - 'Webmozart\\Assert\\InvalidArgumentException' => $vendorDir . '/webmozart/assert/src/InvalidArgumentException.php', - 'Webmozart\\Assert\\Mixin' => $vendorDir . '/webmozart/assert/src/Mixin.php', - 'Whoops\\Exception\\ErrorException' => $vendorDir . '/filp/whoops/src/Whoops/Exception/ErrorException.php', - 'Whoops\\Exception\\Formatter' => $vendorDir . '/filp/whoops/src/Whoops/Exception/Formatter.php', - 'Whoops\\Exception\\Frame' => $vendorDir . '/filp/whoops/src/Whoops/Exception/Frame.php', - 'Whoops\\Exception\\FrameCollection' => $vendorDir . '/filp/whoops/src/Whoops/Exception/FrameCollection.php', - 'Whoops\\Exception\\Inspector' => $vendorDir . '/filp/whoops/src/Whoops/Exception/Inspector.php', - 'Whoops\\Handler\\CallbackHandler' => $vendorDir . '/filp/whoops/src/Whoops/Handler/CallbackHandler.php', - 'Whoops\\Handler\\Handler' => $vendorDir . '/filp/whoops/src/Whoops/Handler/Handler.php', - 'Whoops\\Handler\\HandlerInterface' => $vendorDir . '/filp/whoops/src/Whoops/Handler/HandlerInterface.php', - 'Whoops\\Handler\\JsonResponseHandler' => $vendorDir . '/filp/whoops/src/Whoops/Handler/JsonResponseHandler.php', - 'Whoops\\Handler\\PlainTextHandler' => $vendorDir . '/filp/whoops/src/Whoops/Handler/PlainTextHandler.php', - 'Whoops\\Handler\\PrettyPageHandler' => $vendorDir . '/filp/whoops/src/Whoops/Handler/PrettyPageHandler.php', - 'Whoops\\Handler\\XmlResponseHandler' => $vendorDir . '/filp/whoops/src/Whoops/Handler/XmlResponseHandler.php', - 'Whoops\\Inspector\\InspectorFactory' => $vendorDir . '/filp/whoops/src/Whoops/Inspector/InspectorFactory.php', - 'Whoops\\Inspector\\InspectorFactoryInterface' => $vendorDir . '/filp/whoops/src/Whoops/Inspector/InspectorFactoryInterface.php', - 'Whoops\\Inspector\\InspectorInterface' => $vendorDir . '/filp/whoops/src/Whoops/Inspector/InspectorInterface.php', - 'Whoops\\Run' => $vendorDir . '/filp/whoops/src/Whoops/Run.php', - 'Whoops\\RunInterface' => $vendorDir . '/filp/whoops/src/Whoops/RunInterface.php', - 'Whoops\\Util\\HtmlDumperOutput' => $vendorDir . '/filp/whoops/src/Whoops/Util/HtmlDumperOutput.php', - 'Whoops\\Util\\Misc' => $vendorDir . '/filp/whoops/src/Whoops/Util/Misc.php', - 'Whoops\\Util\\SystemFacade' => $vendorDir . '/filp/whoops/src/Whoops/Util/SystemFacade.php', - 'Whoops\\Util\\TemplateHelper' => $vendorDir . '/filp/whoops/src/Whoops/Util/TemplateHelper.php', - 'h4cc\\WKHTMLToPDF\\WKHTMLToPDF' => $vendorDir . '/h4cc/wkhtmltopdf-amd64/WKHTMLToPDF.php', - 'voku\\helper\\ASCII' => $vendorDir . '/voku/portable-ascii/src/voku/helper/ASCII.php', -); diff --git a/docker/streamline-src/vendor/composer/autoload_files.php b/docker/streamline-src/vendor/composer/autoload_files.php deleted file mode 100644 index 63b29d4d..00000000 --- a/docker/streamline-src/vendor/composer/autoload_files.php +++ /dev/null @@ -1,44 +0,0 @@ - $vendorDir . '/symfony/deprecation-contracts/function.php', - '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', - 'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php', - '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php', - '8825ede83f2f289127722d4e842cf7e8' => $vendorDir . '/symfony/polyfill-intl-grapheme/bootstrap.php', - 'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php', - 'b6b991a57620e2fb6b2f66f03fe9ddc2' => $vendorDir . '/symfony/string/Resources/functions.php', - 'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php', - '667aeda72477189d0494fecd327c3641' => $vendorDir . '/symfony/var-dumper/Resources/functions/dump.php', - '662a729f963d39afe703c9d9b7ab4a8c' => $vendorDir . '/symfony/polyfill-php83/bootstrap.php', - '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.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', - '6124b4c8570aa390c21fafd04a26c69f' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php', - '35a6ad97d21e794e7e22a17d806652e4' => $vendorDir . '/nunomaduro/termwind/src/Functions.php', - '9b38cf48e83f5d8f60375221cd213eee' => $vendorDir . '/phpstan/phpstan/bootstrap.php', - '801c31d8ed748cfa537fa45402288c95' => $vendorDir . '/psy/psysh/src/functions.php', - 'e39a8b23c42d4e1452234d762b03835a' => $vendorDir . '/ramsey/uuid/src/functions.php', - 'e23faeee409e941dc9b4c80386209c39' => $vendorDir . '/laracasts/flash/src/Laracasts/Flash/functions.php', - '265b4faa2b3a9766332744949e83bf97' => $vendorDir . '/laravel/framework/src/Illuminate/Collections/helpers.php', - 'c7a3c339e7e14b60e06a2d7fcce9476b' => $vendorDir . '/laravel/framework/src/Illuminate/Events/functions.php', - 'f57d353b41eb2e234b26064d63d8c5dd' => $vendorDir . '/laravel/framework/src/Illuminate/Filesystem/functions.php', - 'f0906e6318348a765ffb6eb24e0d0938' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/helpers.php', - '58571171fd5812e6e447dce228f52f4d' => $vendorDir . '/laravel/framework/src/Illuminate/Support/helpers.php', - '17d016dc52a631c1e74d2eb8fdd57342' => $vendorDir . '/laravel/helpers/src/helpers.php', - 'f18cc91337d49233e5754e93f3ed9ec3' => $vendorDir . '/laravelcollective/html/src/helpers.php', - 'c72349b1fe8d0deeedd3a52e8aa814d8' => $vendorDir . '/mockery/mockery/library/helpers.php', - 'ce9671a430e4846b44e1c68c7611f9f5' => $vendorDir . '/mockery/mockery/library/Mockery.php', - '9f394da3192a168c4633675768d80428' => $vendorDir . '/nwidart/laravel-modules/src/helpers.php', - 'ec07570ca5a812141189b1fa81503674' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert/Functions.php', - '377b22b161c09ed6e5152de788ca020a' => $vendorDir . '/spatie/laravel-permission/src/helpers.php', - '646961a8eab48144f6c03fc7c3185753' => $baseDir . '/app/Http/Helpers/Functions.php', - 'e3d6ff15e3a00433920bff18fbed7a52' => $baseDir . '/app/Http/Helpers/Finance.php', -); diff --git a/docker/streamline-src/vendor/composer/autoload_psr4.php b/docker/streamline-src/vendor/composer/autoload_psr4.php deleted file mode 100644 index 5ac1e2a3..00000000 --- a/docker/streamline-src/vendor/composer/autoload_psr4.php +++ /dev/null @@ -1,108 +0,0 @@ - array($vendorDir . '/voku/portable-ascii/src/voku'), - 'h4cc\\WKHTMLToPDF\\' => array($vendorDir . '/h4cc/wkhtmltopdf-amd64'), - 'Whoops\\' => array($vendorDir . '/filp/whoops/src/Whoops'), - 'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'), - 'TijsVerkoyen\\CssToInlineStyles\\' => array($vendorDir . '/tijsverkoyen/css-to-inline-styles/src'), - 'Tests\\' => array($baseDir . '/tests'), - 'Termwind\\' => array($vendorDir . '/nunomaduro/termwind/src'), - 'Symfony\\Polyfill\\Uuid\\' => array($vendorDir . '/symfony/polyfill-uuid'), - 'Symfony\\Polyfill\\Php83\\' => array($vendorDir . '/symfony/polyfill-php83'), - 'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'), - 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'), - 'Symfony\\Polyfill\\Intl\\Normalizer\\' => array($vendorDir . '/symfony/polyfill-intl-normalizer'), - 'Symfony\\Polyfill\\Intl\\Idn\\' => array($vendorDir . '/symfony/polyfill-intl-idn'), - 'Symfony\\Polyfill\\Intl\\Grapheme\\' => array($vendorDir . '/symfony/polyfill-intl-grapheme'), - 'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'), - 'Symfony\\Contracts\\Translation\\' => array($vendorDir . '/symfony/translation-contracts'), - 'Symfony\\Contracts\\Service\\' => array($vendorDir . '/symfony/service-contracts'), - 'Symfony\\Contracts\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher-contracts'), - 'Symfony\\Component\\VarDumper\\' => array($vendorDir . '/symfony/var-dumper'), - 'Symfony\\Component\\Uid\\' => array($vendorDir . '/symfony/uid'), - 'Symfony\\Component\\Translation\\' => array($vendorDir . '/symfony/translation'), - 'Symfony\\Component\\String\\' => array($vendorDir . '/symfony/string'), - 'Symfony\\Component\\Routing\\' => array($vendorDir . '/symfony/routing'), - 'Symfony\\Component\\Process\\' => array($vendorDir . '/symfony/process'), - 'Symfony\\Component\\Mime\\' => array($vendorDir . '/symfony/mime'), - 'Symfony\\Component\\Mailer\\' => array($vendorDir . '/symfony/mailer'), - 'Symfony\\Component\\HttpKernel\\' => array($vendorDir . '/symfony/http-kernel'), - 'Symfony\\Component\\HttpFoundation\\' => array($vendorDir . '/symfony/http-foundation'), - 'Symfony\\Component\\Finder\\' => array($vendorDir . '/symfony/finder'), - 'Symfony\\Component\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher'), - 'Symfony\\Component\\ErrorHandler\\' => array($vendorDir . '/symfony/error-handler'), - 'Symfony\\Component\\CssSelector\\' => array($vendorDir . '/symfony/css-selector'), - 'Symfony\\Component\\Console\\' => array($vendorDir . '/symfony/console'), - 'Svg\\' => array($vendorDir . '/phenx/php-svg-lib/src/Svg'), - 'Streamline\\' => array($baseDir . '/app'), - 'Spatie\\Permission\\' => array($vendorDir . '/spatie/laravel-permission/src'), - 'Sabberworm\\CSS\\' => array($vendorDir . '/sabberworm/php-css-parser/src'), - 'Ramsey\\Uuid\\' => array($vendorDir . '/ramsey/uuid/src'), - 'Ramsey\\Collection\\' => array($vendorDir . '/ramsey/collection/src'), - 'Psy\\' => array($vendorDir . '/psy/psysh/src'), - 'Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'), - 'Psr\\Log\\' => array($vendorDir . '/psr/log/src'), - 'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src', $vendorDir . '/psr/http-factory/src'), - 'Psr\\Http\\Client\\' => array($vendorDir . '/psr/http-client/src'), - 'Psr\\EventDispatcher\\' => array($vendorDir . '/psr/event-dispatcher/src'), - 'Psr\\Container\\' => array($vendorDir . '/psr/container/src'), - 'Psr\\Clock\\' => array($vendorDir . '/psr/clock/src'), - 'Psr\\Cache\\' => array($vendorDir . '/psr/cache/src'), - 'PhpParser\\' => array($vendorDir . '/nikic/php-parser/lib/PhpParser'), - 'PhpOption\\' => array($vendorDir . '/phpoption/phpoption/src/PhpOption'), - 'PhpMyAdmin\\SqlParser\\' => array($vendorDir . '/phpmyadmin/sql-parser/src'), - 'OwenIt\\Auditing\\' => array($vendorDir . '/owen-it/laravel-auditing/src'), - 'Nwidart\\Modules\\' => array($vendorDir . '/nwidart/laravel-modules/src'), - 'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'), - 'Modules\\' => array($baseDir . '/Modules'), - 'Mockery\\' => array($vendorDir . '/mockery/mockery/library/Mockery'), - 'Masterminds\\' => array($vendorDir . '/masterminds/html5/src'), - 'League\\MimeTypeDetection\\' => array($vendorDir . '/league/mime-type-detection/src'), - 'League\\Flysystem\\Local\\' => array($vendorDir . '/league/flysystem-local'), - 'League\\Flysystem\\' => array($vendorDir . '/league/flysystem/src'), - 'League\\Config\\' => array($vendorDir . '/league/config/src'), - 'League\\CommonMark\\' => array($vendorDir . '/league/commonmark/src'), - 'Laravel\\Ui\\' => array($vendorDir . '/laravel/ui/src'), - 'Laravel\\Tinker\\' => array($vendorDir . '/laravel/tinker/src'), - 'Laravel\\SerializableClosure\\' => array($vendorDir . '/laravel/serializable-closure/src'), - 'Laravel\\Prompts\\' => array($vendorDir . '/laravel/prompts/src'), - 'Larastan\\Larastan\\' => array($vendorDir . '/larastan/larastan/src'), - 'Knp\\Snappy\\' => array($vendorDir . '/knplabs/knp-snappy/src/Knp/Snappy'), - 'Illuminate\\Support\\' => array($vendorDir . '/laravel/framework/src/Illuminate/Macroable', $vendorDir . '/laravel/framework/src/Illuminate/Collections', $vendorDir . '/laravel/framework/src/Illuminate/Conditionable'), - 'Illuminate\\Foundation\\Auth\\' => array($vendorDir . '/laravel/ui/auth-backend'), - 'Illuminate\\' => array($vendorDir . '/laravel/framework/src/Illuminate'), - 'GuzzleHttp\\UriTemplate\\' => array($vendorDir . '/guzzlehttp/uri-template/src'), - 'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'), - 'GuzzleHttp\\Promise\\' => array($vendorDir . '/guzzlehttp/promises/src'), - 'GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'), - 'GrahamCampbell\\ResultType\\' => array($vendorDir . '/graham-campbell/result-type/src'), - 'Fx3costa\\LaravelChartJs\\' => array($vendorDir . '/fx3costa/laravelchartjs/src'), - 'Fruitcake\\Cors\\' => array($vendorDir . '/fruitcake/php-cors/src'), - 'FontLib\\' => array($vendorDir . '/phenx/php-font-lib/src/FontLib'), - 'Faker\\' => array($vendorDir . '/fakerphp/faker/src/Faker'), - 'Egulias\\EmailValidator\\' => array($vendorDir . '/egulias/email-validator/src'), - 'Dotenv\\' => array($vendorDir . '/vlucas/phpdotenv/src'), - 'Dompdf\\' => array($vendorDir . '/dompdf/dompdf/src'), - 'Doctrine\\Inflector\\' => array($vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector'), - 'Doctrine\\Deprecations\\' => array($vendorDir . '/doctrine/deprecations/src'), - 'Doctrine\\DBAL\\' => array($vendorDir . '/doctrine/dbal/src'), - 'Doctrine\\Common\\Lexer\\' => array($vendorDir . '/doctrine/lexer/src'), - 'Doctrine\\Common\\Cache\\' => array($vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache'), - 'Doctrine\\Common\\' => array($vendorDir . '/doctrine/event-manager/src'), - 'Dflydev\\DotAccessData\\' => array($vendorDir . '/dflydev/dot-access-data/src'), - 'DeepCopy\\' => array($vendorDir . '/myclabs/deep-copy/src/DeepCopy'), - 'Cron\\' => array($vendorDir . '/dragonmantank/cron-expression/src/Cron'), - 'Collective\\Html\\' => array($vendorDir . '/laravelcollective/html/src'), - 'Carbon\\Doctrine\\' => array($vendorDir . '/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine'), - 'Carbon\\' => array($vendorDir . '/nesbot/carbon/src/Carbon'), - 'Brick\\Math\\' => array($vendorDir . '/brick/math/src'), - 'Barryvdh\\Snappy\\' => array($vendorDir . '/barryvdh/laravel-snappy/src'), - 'Barryvdh\\DomPDF\\' => array($vendorDir . '/barryvdh/laravel-dompdf/src'), - 'AfricasTalking\\SDK\\' => array($vendorDir . '/africastalking/africastalking/src'), -); diff --git a/docker/streamline-src/vendor/composer/autoload_real.php b/docker/streamline-src/vendor/composer/autoload_real.php deleted file mode 100644 index 014e1d8e..00000000 --- a/docker/streamline-src/vendor/composer/autoload_real.php +++ /dev/null @@ -1,50 +0,0 @@ -register(true); - - $filesToLoad = \Composer\Autoload\ComposerStaticInit69a41de4ce3c76c7865a7de0eec12ccc::$files; - $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { - if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { - $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; - - require $file; - } - }, null, null); - foreach ($filesToLoad as $fileIdentifier => $file) { - $requireFile($fileIdentifier, $file); - } - - return $loader; - } -} diff --git a/docker/streamline-src/vendor/composer/autoload_static.php b/docker/streamline-src/vendor/composer/autoload_static.php deleted file mode 100644 index 8aa90018..00000000 --- a/docker/streamline-src/vendor/composer/autoload_static.php +++ /dev/null @@ -1,7806 +0,0 @@ - __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php', - '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', - 'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php', - '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php', - '8825ede83f2f289127722d4e842cf7e8' => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme/bootstrap.php', - 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php', - 'b6b991a57620e2fb6b2f66f03fe9ddc2' => __DIR__ . '/..' . '/symfony/string/Resources/functions.php', - 'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php', - '667aeda72477189d0494fecd327c3641' => __DIR__ . '/..' . '/symfony/var-dumper/Resources/functions/dump.php', - '662a729f963d39afe703c9d9b7ab4a8c' => __DIR__ . '/..' . '/symfony/polyfill-php83/bootstrap.php', - '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.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', - '6124b4c8570aa390c21fafd04a26c69f' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php', - '35a6ad97d21e794e7e22a17d806652e4' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Functions.php', - '9b38cf48e83f5d8f60375221cd213eee' => __DIR__ . '/..' . '/phpstan/phpstan/bootstrap.php', - '801c31d8ed748cfa537fa45402288c95' => __DIR__ . '/..' . '/psy/psysh/src/functions.php', - 'e39a8b23c42d4e1452234d762b03835a' => __DIR__ . '/..' . '/ramsey/uuid/src/functions.php', - 'e23faeee409e941dc9b4c80386209c39' => __DIR__ . '/..' . '/laracasts/flash/src/Laracasts/Flash/functions.php', - '265b4faa2b3a9766332744949e83bf97' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Collections/helpers.php', - 'c7a3c339e7e14b60e06a2d7fcce9476b' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Events/functions.php', - 'f57d353b41eb2e234b26064d63d8c5dd' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Filesystem/functions.php', - 'f0906e6318348a765ffb6eb24e0d0938' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/helpers.php', - '58571171fd5812e6e447dce228f52f4d' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/helpers.php', - '17d016dc52a631c1e74d2eb8fdd57342' => __DIR__ . '/..' . '/laravel/helpers/src/helpers.php', - 'f18cc91337d49233e5754e93f3ed9ec3' => __DIR__ . '/..' . '/laravelcollective/html/src/helpers.php', - 'c72349b1fe8d0deeedd3a52e8aa814d8' => __DIR__ . '/..' . '/mockery/mockery/library/helpers.php', - 'ce9671a430e4846b44e1c68c7611f9f5' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery.php', - '9f394da3192a168c4633675768d80428' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/helpers.php', - 'ec07570ca5a812141189b1fa81503674' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert/Functions.php', - '377b22b161c09ed6e5152de788ca020a' => __DIR__ . '/..' . '/spatie/laravel-permission/src/helpers.php', - '646961a8eab48144f6c03fc7c3185753' => __DIR__ . '/../..' . '/app/Http/Helpers/Functions.php', - 'e3d6ff15e3a00433920bff18fbed7a52' => __DIR__ . '/../..' . '/app/Http/Helpers/Finance.php', - ); - - public static $prefixLengthsPsr4 = array ( - 'v' => - array ( - 'voku\\' => 5, - ), - 'h' => - array ( - 'h4cc\\WKHTMLToPDF\\' => 17, - ), - 'W' => - array ( - 'Whoops\\' => 7, - 'Webmozart\\Assert\\' => 17, - ), - 'T' => - array ( - 'TijsVerkoyen\\CssToInlineStyles\\' => 31, - 'Tests\\' => 6, - 'Termwind\\' => 9, - ), - 'S' => - array ( - 'Symfony\\Polyfill\\Uuid\\' => 22, - 'Symfony\\Polyfill\\Php83\\' => 23, - 'Symfony\\Polyfill\\Php80\\' => 23, - 'Symfony\\Polyfill\\Mbstring\\' => 26, - 'Symfony\\Polyfill\\Intl\\Normalizer\\' => 33, - 'Symfony\\Polyfill\\Intl\\Idn\\' => 26, - 'Symfony\\Polyfill\\Intl\\Grapheme\\' => 31, - 'Symfony\\Polyfill\\Ctype\\' => 23, - 'Symfony\\Contracts\\Translation\\' => 30, - 'Symfony\\Contracts\\Service\\' => 26, - 'Symfony\\Contracts\\EventDispatcher\\' => 34, - 'Symfony\\Component\\VarDumper\\' => 28, - 'Symfony\\Component\\Uid\\' => 22, - 'Symfony\\Component\\Translation\\' => 30, - 'Symfony\\Component\\String\\' => 25, - 'Symfony\\Component\\Routing\\' => 26, - 'Symfony\\Component\\Process\\' => 26, - 'Symfony\\Component\\Mime\\' => 23, - 'Symfony\\Component\\Mailer\\' => 25, - 'Symfony\\Component\\HttpKernel\\' => 29, - 'Symfony\\Component\\HttpFoundation\\' => 33, - 'Symfony\\Component\\Finder\\' => 25, - 'Symfony\\Component\\EventDispatcher\\' => 34, - 'Symfony\\Component\\ErrorHandler\\' => 31, - 'Symfony\\Component\\CssSelector\\' => 30, - 'Symfony\\Component\\Console\\' => 26, - 'Svg\\' => 4, - 'Streamline\\' => 11, - 'Spatie\\Permission\\' => 18, - 'Sabberworm\\CSS\\' => 15, - ), - 'R' => - array ( - 'Ramsey\\Uuid\\' => 12, - 'Ramsey\\Collection\\' => 18, - ), - 'P' => - array ( - 'Psy\\' => 4, - 'Psr\\SimpleCache\\' => 16, - 'Psr\\Log\\' => 8, - 'Psr\\Http\\Message\\' => 17, - 'Psr\\Http\\Client\\' => 16, - 'Psr\\EventDispatcher\\' => 20, - 'Psr\\Container\\' => 14, - 'Psr\\Clock\\' => 10, - 'Psr\\Cache\\' => 10, - 'PhpParser\\' => 10, - 'PhpOption\\' => 10, - 'PhpMyAdmin\\SqlParser\\' => 21, - ), - 'O' => - array ( - 'OwenIt\\Auditing\\' => 16, - ), - 'N' => - array ( - 'Nwidart\\Modules\\' => 16, - ), - 'M' => - array ( - 'Monolog\\' => 8, - 'Modules\\' => 8, - 'Mockery\\' => 8, - 'Masterminds\\' => 12, - ), - 'L' => - array ( - 'League\\MimeTypeDetection\\' => 25, - 'League\\Flysystem\\Local\\' => 23, - 'League\\Flysystem\\' => 17, - 'League\\Config\\' => 14, - 'League\\CommonMark\\' => 18, - 'Laravel\\Ui\\' => 11, - 'Laravel\\Tinker\\' => 15, - 'Laravel\\SerializableClosure\\' => 28, - 'Laravel\\Prompts\\' => 16, - 'Larastan\\Larastan\\' => 18, - ), - 'K' => - array ( - 'Knp\\Snappy\\' => 11, - ), - 'I' => - array ( - 'Illuminate\\Support\\' => 19, - 'Illuminate\\Foundation\\Auth\\' => 27, - 'Illuminate\\' => 11, - ), - 'G' => - array ( - 'GuzzleHttp\\UriTemplate\\' => 23, - 'GuzzleHttp\\Psr7\\' => 16, - 'GuzzleHttp\\Promise\\' => 19, - 'GuzzleHttp\\' => 11, - 'GrahamCampbell\\ResultType\\' => 26, - ), - 'F' => - array ( - 'Fx3costa\\LaravelChartJs\\' => 24, - 'Fruitcake\\Cors\\' => 15, - 'FontLib\\' => 8, - 'Faker\\' => 6, - ), - 'E' => - array ( - 'Egulias\\EmailValidator\\' => 23, - ), - 'D' => - array ( - 'Dotenv\\' => 7, - 'Dompdf\\' => 7, - 'Doctrine\\Inflector\\' => 19, - 'Doctrine\\Deprecations\\' => 22, - 'Doctrine\\DBAL\\' => 14, - 'Doctrine\\Common\\Lexer\\' => 22, - 'Doctrine\\Common\\Cache\\' => 22, - 'Doctrine\\Common\\' => 16, - 'Dflydev\\DotAccessData\\' => 22, - 'DeepCopy\\' => 9, - ), - 'C' => - array ( - 'Cron\\' => 5, - 'Collective\\Html\\' => 16, - 'Carbon\\Doctrine\\' => 16, - 'Carbon\\' => 7, - ), - 'B' => - array ( - 'Brick\\Math\\' => 11, - 'Barryvdh\\Snappy\\' => 16, - 'Barryvdh\\DomPDF\\' => 16, - ), - 'A' => - array ( - 'AfricasTalking\\SDK\\' => 19, - ), - ); - - public static $prefixDirsPsr4 = array ( - 'voku\\' => - array ( - 0 => __DIR__ . '/..' . '/voku/portable-ascii/src/voku', - ), - 'h4cc\\WKHTMLToPDF\\' => - array ( - 0 => __DIR__ . '/..' . '/h4cc/wkhtmltopdf-amd64', - ), - 'Whoops\\' => - array ( - 0 => __DIR__ . '/..' . '/filp/whoops/src/Whoops', - ), - 'Webmozart\\Assert\\' => - array ( - 0 => __DIR__ . '/..' . '/webmozart/assert/src', - ), - 'TijsVerkoyen\\CssToInlineStyles\\' => - array ( - 0 => __DIR__ . '/..' . '/tijsverkoyen/css-to-inline-styles/src', - ), - 'Tests\\' => - array ( - 0 => __DIR__ . '/../..' . '/tests', - ), - 'Termwind\\' => - array ( - 0 => __DIR__ . '/..' . '/nunomaduro/termwind/src', - ), - 'Symfony\\Polyfill\\Uuid\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-uuid', - ), - 'Symfony\\Polyfill\\Php83\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-php83', - ), - 'Symfony\\Polyfill\\Php80\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-php80', - ), - 'Symfony\\Polyfill\\Mbstring\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring', - ), - 'Symfony\\Polyfill\\Intl\\Normalizer\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer', - ), - 'Symfony\\Polyfill\\Intl\\Idn\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-idn', - ), - 'Symfony\\Polyfill\\Intl\\Grapheme\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme', - ), - 'Symfony\\Polyfill\\Ctype\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-ctype', - ), - 'Symfony\\Contracts\\Translation\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/translation-contracts', - ), - 'Symfony\\Contracts\\Service\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/service-contracts', - ), - 'Symfony\\Contracts\\EventDispatcher\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/event-dispatcher-contracts', - ), - 'Symfony\\Component\\VarDumper\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/var-dumper', - ), - 'Symfony\\Component\\Uid\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/uid', - ), - 'Symfony\\Component\\Translation\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/translation', - ), - 'Symfony\\Component\\String\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/string', - ), - 'Symfony\\Component\\Routing\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/routing', - ), - 'Symfony\\Component\\Process\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/process', - ), - 'Symfony\\Component\\Mime\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/mime', - ), - 'Symfony\\Component\\Mailer\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/mailer', - ), - 'Symfony\\Component\\HttpKernel\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/http-kernel', - ), - 'Symfony\\Component\\HttpFoundation\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/http-foundation', - ), - 'Symfony\\Component\\Finder\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/finder', - ), - 'Symfony\\Component\\EventDispatcher\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/event-dispatcher', - ), - 'Symfony\\Component\\ErrorHandler\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/error-handler', - ), - 'Symfony\\Component\\CssSelector\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/css-selector', - ), - 'Symfony\\Component\\Console\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/console', - ), - 'Svg\\' => - array ( - 0 => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg', - ), - 'Streamline\\' => - array ( - 0 => __DIR__ . '/../..' . '/app', - ), - 'Spatie\\Permission\\' => - array ( - 0 => __DIR__ . '/..' . '/spatie/laravel-permission/src', - ), - 'Sabberworm\\CSS\\' => - array ( - 0 => __DIR__ . '/..' . '/sabberworm/php-css-parser/src', - ), - 'Ramsey\\Uuid\\' => - array ( - 0 => __DIR__ . '/..' . '/ramsey/uuid/src', - ), - 'Ramsey\\Collection\\' => - array ( - 0 => __DIR__ . '/..' . '/ramsey/collection/src', - ), - 'Psy\\' => - array ( - 0 => __DIR__ . '/..' . '/psy/psysh/src', - ), - 'Psr\\SimpleCache\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/simple-cache/src', - ), - 'Psr\\Log\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/log/src', - ), - 'Psr\\Http\\Message\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/http-message/src', - 1 => __DIR__ . '/..' . '/psr/http-factory/src', - ), - 'Psr\\Http\\Client\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/http-client/src', - ), - 'Psr\\EventDispatcher\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/event-dispatcher/src', - ), - 'Psr\\Container\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/container/src', - ), - 'Psr\\Clock\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/clock/src', - ), - 'Psr\\Cache\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/cache/src', - ), - 'PhpParser\\' => - array ( - 0 => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser', - ), - 'PhpOption\\' => - array ( - 0 => __DIR__ . '/..' . '/phpoption/phpoption/src/PhpOption', - ), - 'PhpMyAdmin\\SqlParser\\' => - array ( - 0 => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src', - ), - 'OwenIt\\Auditing\\' => - array ( - 0 => __DIR__ . '/..' . '/owen-it/laravel-auditing/src', - ), - 'Nwidart\\Modules\\' => - array ( - 0 => __DIR__ . '/..' . '/nwidart/laravel-modules/src', - ), - 'Monolog\\' => - array ( - 0 => __DIR__ . '/..' . '/monolog/monolog/src/Monolog', - ), - 'Modules\\' => - array ( - 0 => __DIR__ . '/../..' . '/Modules', - ), - 'Mockery\\' => - array ( - 0 => __DIR__ . '/..' . '/mockery/mockery/library/Mockery', - ), - 'Masterminds\\' => - array ( - 0 => __DIR__ . '/..' . '/masterminds/html5/src', - ), - 'League\\MimeTypeDetection\\' => - array ( - 0 => __DIR__ . '/..' . '/league/mime-type-detection/src', - ), - 'League\\Flysystem\\Local\\' => - array ( - 0 => __DIR__ . '/..' . '/league/flysystem-local', - ), - 'League\\Flysystem\\' => - array ( - 0 => __DIR__ . '/..' . '/league/flysystem/src', - ), - 'League\\Config\\' => - array ( - 0 => __DIR__ . '/..' . '/league/config/src', - ), - 'League\\CommonMark\\' => - array ( - 0 => __DIR__ . '/..' . '/league/commonmark/src', - ), - 'Laravel\\Ui\\' => - array ( - 0 => __DIR__ . '/..' . '/laravel/ui/src', - ), - 'Laravel\\Tinker\\' => - array ( - 0 => __DIR__ . '/..' . '/laravel/tinker/src', - ), - 'Laravel\\SerializableClosure\\' => - array ( - 0 => __DIR__ . '/..' . '/laravel/serializable-closure/src', - ), - 'Laravel\\Prompts\\' => - array ( - 0 => __DIR__ . '/..' . '/laravel/prompts/src', - ), - 'Larastan\\Larastan\\' => - array ( - 0 => __DIR__ . '/..' . '/larastan/larastan/src', - ), - 'Knp\\Snappy\\' => - array ( - 0 => __DIR__ . '/..' . '/knplabs/knp-snappy/src/Knp/Snappy', - ), - 'Illuminate\\Support\\' => - array ( - 0 => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Macroable', - 1 => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Collections', - 2 => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Conditionable', - ), - 'Illuminate\\Foundation\\Auth\\' => - array ( - 0 => __DIR__ . '/..' . '/laravel/ui/auth-backend', - ), - 'Illuminate\\' => - array ( - 0 => __DIR__ . '/..' . '/laravel/framework/src/Illuminate', - ), - 'GuzzleHttp\\UriTemplate\\' => - array ( - 0 => __DIR__ . '/..' . '/guzzlehttp/uri-template/src', - ), - 'GuzzleHttp\\Psr7\\' => - array ( - 0 => __DIR__ . '/..' . '/guzzlehttp/psr7/src', - ), - 'GuzzleHttp\\Promise\\' => - array ( - 0 => __DIR__ . '/..' . '/guzzlehttp/promises/src', - ), - 'GuzzleHttp\\' => - array ( - 0 => __DIR__ . '/..' . '/guzzlehttp/guzzle/src', - ), - 'GrahamCampbell\\ResultType\\' => - array ( - 0 => __DIR__ . '/..' . '/graham-campbell/result-type/src', - ), - 'Fx3costa\\LaravelChartJs\\' => - array ( - 0 => __DIR__ . '/..' . '/fx3costa/laravelchartjs/src', - ), - 'Fruitcake\\Cors\\' => - array ( - 0 => __DIR__ . '/..' . '/fruitcake/php-cors/src', - ), - 'FontLib\\' => - array ( - 0 => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib', - ), - 'Faker\\' => - array ( - 0 => __DIR__ . '/..' . '/fakerphp/faker/src/Faker', - ), - 'Egulias\\EmailValidator\\' => - array ( - 0 => __DIR__ . '/..' . '/egulias/email-validator/src', - ), - 'Dotenv\\' => - array ( - 0 => __DIR__ . '/..' . '/vlucas/phpdotenv/src', - ), - 'Dompdf\\' => - array ( - 0 => __DIR__ . '/..' . '/dompdf/dompdf/src', - ), - 'Doctrine\\Inflector\\' => - array ( - 0 => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector', - ), - 'Doctrine\\Deprecations\\' => - array ( - 0 => __DIR__ . '/..' . '/doctrine/deprecations/src', - ), - 'Doctrine\\DBAL\\' => - array ( - 0 => __DIR__ . '/..' . '/doctrine/dbal/src', - ), - 'Doctrine\\Common\\Lexer\\' => - array ( - 0 => __DIR__ . '/..' . '/doctrine/lexer/src', - ), - 'Doctrine\\Common\\Cache\\' => - array ( - 0 => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache', - ), - 'Doctrine\\Common\\' => - array ( - 0 => __DIR__ . '/..' . '/doctrine/event-manager/src', - ), - 'Dflydev\\DotAccessData\\' => - array ( - 0 => __DIR__ . '/..' . '/dflydev/dot-access-data/src', - ), - 'DeepCopy\\' => - array ( - 0 => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy', - ), - 'Cron\\' => - array ( - 0 => __DIR__ . '/..' . '/dragonmantank/cron-expression/src/Cron', - ), - 'Collective\\Html\\' => - array ( - 0 => __DIR__ . '/..' . '/laravelcollective/html/src', - ), - 'Carbon\\Doctrine\\' => - array ( - 0 => __DIR__ . '/..' . '/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine', - ), - 'Carbon\\' => - array ( - 0 => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon', - ), - 'Brick\\Math\\' => - array ( - 0 => __DIR__ . '/..' . '/brick/math/src', - ), - 'Barryvdh\\Snappy\\' => - array ( - 0 => __DIR__ . '/..' . '/barryvdh/laravel-snappy/src', - ), - 'Barryvdh\\DomPDF\\' => - array ( - 0 => __DIR__ . '/..' . '/barryvdh/laravel-dompdf/src', - ), - 'AfricasTalking\\SDK\\' => - array ( - 0 => __DIR__ . '/..' . '/africastalking/africastalking/src', - ), - ); - - public static $prefixesPsr0 = array ( - 'M' => - array ( - 'Milon\\Barcode' => - array ( - 0 => __DIR__ . '/..' . '/milon/barcode/src', - ), - ), - 'L' => - array ( - 'Laracasts\\Flash' => - array ( - 0 => __DIR__ . '/..' . '/laracasts/flash/src', - ), - ), - ); - - public static $classMap = array ( - 'AfricasTalking\\SDK\\AfricasTalking' => __DIR__ . '/..' . '/africastalking/africastalking/src/AfricasTalking.php', - 'AfricasTalking\\SDK\\Airtime' => __DIR__ . '/..' . '/africastalking/africastalking/src/Airtime.php', - 'AfricasTalking\\SDK\\Application' => __DIR__ . '/..' . '/africastalking/africastalking/src/Application.php', - 'AfricasTalking\\SDK\\Content' => __DIR__ . '/..' . '/africastalking/africastalking/src/Content.php', - 'AfricasTalking\\SDK\\MobileData' => __DIR__ . '/..' . '/africastalking/africastalking/src/MobileData.php', - 'AfricasTalking\\SDK\\SMS' => __DIR__ . '/..' . '/africastalking/africastalking/src/SMS.php', - 'AfricasTalking\\SDK\\Service' => __DIR__ . '/..' . '/africastalking/africastalking/src/Service.php', - 'AfricasTalking\\SDK\\Token' => __DIR__ . '/..' . '/africastalking/africastalking/src/Token.php', - 'AfricasTalking\\SDK\\Voice' => __DIR__ . '/..' . '/africastalking/africastalking/src/Voice.php', - 'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php', - 'Barryvdh\\DomPDF\\Facade\\Pdf' => __DIR__ . '/..' . '/barryvdh/laravel-dompdf/src/Facade/Pdf.php', - 'Barryvdh\\DomPDF\\PDF' => __DIR__ . '/..' . '/barryvdh/laravel-dompdf/src/PDF.php', - 'Barryvdh\\DomPDF\\ServiceProvider' => __DIR__ . '/..' . '/barryvdh/laravel-dompdf/src/ServiceProvider.php', - 'Barryvdh\\Snappy\\Facades\\SnappyImage' => __DIR__ . '/..' . '/barryvdh/laravel-snappy/src/Facades/SnappyImage.php', - 'Barryvdh\\Snappy\\Facades\\SnappyPdf' => __DIR__ . '/..' . '/barryvdh/laravel-snappy/src/Facades/SnappyPdf.php', - 'Barryvdh\\Snappy\\IlluminateSnappyImage' => __DIR__ . '/..' . '/barryvdh/laravel-snappy/src/IlluminateSnappyImage.php', - 'Barryvdh\\Snappy\\IlluminateSnappyPdf' => __DIR__ . '/..' . '/barryvdh/laravel-snappy/src/IlluminateSnappyPdf.php', - 'Barryvdh\\Snappy\\ImageWrapper' => __DIR__ . '/..' . '/barryvdh/laravel-snappy/src/ImageWrapper.php', - 'Barryvdh\\Snappy\\LumenServiceProvider' => __DIR__ . '/..' . '/barryvdh/laravel-snappy/src/LumenServiceProvider.php', - 'Barryvdh\\Snappy\\PdfFaker' => __DIR__ . '/..' . '/barryvdh/laravel-snappy/src/PdfFaker.php', - 'Barryvdh\\Snappy\\PdfWrapper' => __DIR__ . '/..' . '/barryvdh/laravel-snappy/src/PdfWrapper.php', - 'Barryvdh\\Snappy\\ServiceProvider' => __DIR__ . '/..' . '/barryvdh/laravel-snappy/src/ServiceProvider.php', - 'Brick\\Math\\BigDecimal' => __DIR__ . '/..' . '/brick/math/src/BigDecimal.php', - 'Brick\\Math\\BigInteger' => __DIR__ . '/..' . '/brick/math/src/BigInteger.php', - 'Brick\\Math\\BigNumber' => __DIR__ . '/..' . '/brick/math/src/BigNumber.php', - 'Brick\\Math\\BigRational' => __DIR__ . '/..' . '/brick/math/src/BigRational.php', - 'Brick\\Math\\Exception\\DivisionByZeroException' => __DIR__ . '/..' . '/brick/math/src/Exception/DivisionByZeroException.php', - 'Brick\\Math\\Exception\\IntegerOverflowException' => __DIR__ . '/..' . '/brick/math/src/Exception/IntegerOverflowException.php', - 'Brick\\Math\\Exception\\MathException' => __DIR__ . '/..' . '/brick/math/src/Exception/MathException.php', - 'Brick\\Math\\Exception\\NegativeNumberException' => __DIR__ . '/..' . '/brick/math/src/Exception/NegativeNumberException.php', - 'Brick\\Math\\Exception\\NumberFormatException' => __DIR__ . '/..' . '/brick/math/src/Exception/NumberFormatException.php', - 'Brick\\Math\\Exception\\RoundingNecessaryException' => __DIR__ . '/..' . '/brick/math/src/Exception/RoundingNecessaryException.php', - 'Brick\\Math\\Internal\\Calculator' => __DIR__ . '/..' . '/brick/math/src/Internal/Calculator.php', - 'Brick\\Math\\Internal\\Calculator\\BcMathCalculator' => __DIR__ . '/..' . '/brick/math/src/Internal/Calculator/BcMathCalculator.php', - 'Brick\\Math\\Internal\\Calculator\\GmpCalculator' => __DIR__ . '/..' . '/brick/math/src/Internal/Calculator/GmpCalculator.php', - 'Brick\\Math\\Internal\\Calculator\\NativeCalculator' => __DIR__ . '/..' . '/brick/math/src/Internal/Calculator/NativeCalculator.php', - 'Brick\\Math\\RoundingMode' => __DIR__ . '/..' . '/brick/math/src/RoundingMode.php', - 'Carbon\\AbstractTranslator' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/AbstractTranslator.php', - 'Carbon\\Carbon' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Carbon.php', - 'Carbon\\CarbonConverterInterface' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/CarbonConverterInterface.php', - 'Carbon\\CarbonImmutable' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/CarbonImmutable.php', - 'Carbon\\CarbonInterface' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/CarbonInterface.php', - 'Carbon\\CarbonInterval' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/CarbonInterval.php', - 'Carbon\\CarbonPeriod' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/CarbonPeriod.php', - 'Carbon\\CarbonPeriodImmutable' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/CarbonPeriodImmutable.php', - 'Carbon\\CarbonTimeZone' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/CarbonTimeZone.php', - 'Carbon\\Cli\\Invoker' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Cli/Invoker.php', - 'Carbon\\Doctrine\\CarbonDoctrineType' => __DIR__ . '/..' . '/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/CarbonDoctrineType.php', - 'Carbon\\Doctrine\\CarbonImmutableType' => __DIR__ . '/..' . '/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/CarbonImmutableType.php', - 'Carbon\\Doctrine\\CarbonType' => __DIR__ . '/..' . '/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/CarbonType.php', - 'Carbon\\Doctrine\\CarbonTypeConverter' => __DIR__ . '/..' . '/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/CarbonTypeConverter.php', - 'Carbon\\Doctrine\\DateTimeDefaultPrecision' => __DIR__ . '/..' . '/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeDefaultPrecision.php', - 'Carbon\\Doctrine\\DateTimeImmutableType' => __DIR__ . '/..' . '/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeImmutableType.php', - 'Carbon\\Doctrine\\DateTimeType' => __DIR__ . '/..' . '/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeType.php', - 'Carbon\\Exceptions\\BadComparisonUnitException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/BadComparisonUnitException.php', - 'Carbon\\Exceptions\\BadFluentConstructorException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/BadFluentConstructorException.php', - 'Carbon\\Exceptions\\BadFluentSetterException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/BadFluentSetterException.php', - 'Carbon\\Exceptions\\BadMethodCallException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/BadMethodCallException.php', - 'Carbon\\Exceptions\\EndLessPeriodException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/EndLessPeriodException.php', - 'Carbon\\Exceptions\\Exception' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/Exception.php', - 'Carbon\\Exceptions\\ImmutableException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/ImmutableException.php', - 'Carbon\\Exceptions\\InvalidArgumentException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/InvalidArgumentException.php', - 'Carbon\\Exceptions\\InvalidCastException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/InvalidCastException.php', - 'Carbon\\Exceptions\\InvalidDateException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/InvalidDateException.php', - 'Carbon\\Exceptions\\InvalidFormatException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/InvalidFormatException.php', - 'Carbon\\Exceptions\\InvalidIntervalException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/InvalidIntervalException.php', - 'Carbon\\Exceptions\\InvalidPeriodDateException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/InvalidPeriodDateException.php', - 'Carbon\\Exceptions\\InvalidPeriodParameterException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/InvalidPeriodParameterException.php', - 'Carbon\\Exceptions\\InvalidTimeZoneException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/InvalidTimeZoneException.php', - 'Carbon\\Exceptions\\InvalidTypeException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/InvalidTypeException.php', - 'Carbon\\Exceptions\\NotACarbonClassException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/NotACarbonClassException.php', - 'Carbon\\Exceptions\\NotAPeriodException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/NotAPeriodException.php', - 'Carbon\\Exceptions\\NotLocaleAwareException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/NotLocaleAwareException.php', - 'Carbon\\Exceptions\\OutOfRangeException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/OutOfRangeException.php', - 'Carbon\\Exceptions\\ParseErrorException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/ParseErrorException.php', - 'Carbon\\Exceptions\\RuntimeException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/RuntimeException.php', - 'Carbon\\Exceptions\\UnitException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/UnitException.php', - 'Carbon\\Exceptions\\UnitNotConfiguredException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/UnitNotConfiguredException.php', - 'Carbon\\Exceptions\\UnknownGetterException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/UnknownGetterException.php', - 'Carbon\\Exceptions\\UnknownMethodException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/UnknownMethodException.php', - 'Carbon\\Exceptions\\UnknownSetterException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/UnknownSetterException.php', - 'Carbon\\Exceptions\\UnknownUnitException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/UnknownUnitException.php', - 'Carbon\\Exceptions\\UnreachableException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/UnreachableException.php', - 'Carbon\\Factory' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Factory.php', - 'Carbon\\FactoryImmutable' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/FactoryImmutable.php', - 'Carbon\\Language' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Language.php', - 'Carbon\\Laravel\\ServiceProvider' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Laravel/ServiceProvider.php', - 'Carbon\\MessageFormatter\\MessageFormatterMapper' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/MessageFormatter/MessageFormatterMapper.php', - 'Carbon\\PHPStan\\AbstractMacro' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/PHPStan/AbstractMacro.php', - 'Carbon\\PHPStan\\Macro' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/PHPStan/Macro.php', - 'Carbon\\PHPStan\\MacroExtension' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/PHPStan/MacroExtension.php', - 'Carbon\\PHPStan\\MacroScanner' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/PHPStan/MacroScanner.php', - 'Carbon\\Traits\\Boundaries' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Boundaries.php', - 'Carbon\\Traits\\Cast' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Cast.php', - 'Carbon\\Traits\\Comparison' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Comparison.php', - 'Carbon\\Traits\\Converter' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Converter.php', - 'Carbon\\Traits\\Creator' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Creator.php', - 'Carbon\\Traits\\Date' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Date.php', - 'Carbon\\Traits\\DeprecatedProperties' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/DeprecatedProperties.php', - 'Carbon\\Traits\\Difference' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Difference.php', - 'Carbon\\Traits\\IntervalRounding' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/IntervalRounding.php', - 'Carbon\\Traits\\IntervalStep' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/IntervalStep.php', - 'Carbon\\Traits\\Localization' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Localization.php', - 'Carbon\\Traits\\Macro' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Macro.php', - 'Carbon\\Traits\\MagicParameter' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/MagicParameter.php', - 'Carbon\\Traits\\Mixin' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Mixin.php', - 'Carbon\\Traits\\Modifiers' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Modifiers.php', - 'Carbon\\Traits\\Mutability' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Mutability.php', - 'Carbon\\Traits\\ObjectInitialisation' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/ObjectInitialisation.php', - 'Carbon\\Traits\\Options' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Options.php', - 'Carbon\\Traits\\Rounding' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Rounding.php', - 'Carbon\\Traits\\Serialization' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Serialization.php', - 'Carbon\\Traits\\Test' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Test.php', - 'Carbon\\Traits\\Timestamp' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Timestamp.php', - 'Carbon\\Traits\\ToStringFormat' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/ToStringFormat.php', - 'Carbon\\Traits\\Units' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Units.php', - 'Carbon\\Traits\\Week' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Week.php', - 'Carbon\\Translator' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Translator.php', - 'Carbon\\TranslatorImmutable' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/TranslatorImmutable.php', - 'Carbon\\TranslatorStrongTypeInterface' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/TranslatorStrongTypeInterface.php', - 'Collective\\Html\\Componentable' => __DIR__ . '/..' . '/laravelcollective/html/src/Componentable.php', - 'Collective\\Html\\Eloquent\\FormAccessible' => __DIR__ . '/..' . '/laravelcollective/html/src/Eloquent/FormAccessible.php', - 'Collective\\Html\\FormBuilder' => __DIR__ . '/..' . '/laravelcollective/html/src/FormBuilder.php', - 'Collective\\Html\\FormFacade' => __DIR__ . '/..' . '/laravelcollective/html/src/FormFacade.php', - 'Collective\\Html\\HtmlBuilder' => __DIR__ . '/..' . '/laravelcollective/html/src/HtmlBuilder.php', - 'Collective\\Html\\HtmlFacade' => __DIR__ . '/..' . '/laravelcollective/html/src/HtmlFacade.php', - 'Collective\\Html\\HtmlServiceProvider' => __DIR__ . '/..' . '/laravelcollective/html/src/HtmlServiceProvider.php', - 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', - 'CostPriceSeeder' => __DIR__ . '/../..' . '/database/seeders/CostPriceSeeder.php', - 'Cron\\AbstractField' => __DIR__ . '/..' . '/dragonmantank/cron-expression/src/Cron/AbstractField.php', - 'Cron\\CronExpression' => __DIR__ . '/..' . '/dragonmantank/cron-expression/src/Cron/CronExpression.php', - 'Cron\\DayOfMonthField' => __DIR__ . '/..' . '/dragonmantank/cron-expression/src/Cron/DayOfMonthField.php', - 'Cron\\DayOfWeekField' => __DIR__ . '/..' . '/dragonmantank/cron-expression/src/Cron/DayOfWeekField.php', - 'Cron\\FieldFactory' => __DIR__ . '/..' . '/dragonmantank/cron-expression/src/Cron/FieldFactory.php', - 'Cron\\FieldFactoryInterface' => __DIR__ . '/..' . '/dragonmantank/cron-expression/src/Cron/FieldFactoryInterface.php', - 'Cron\\FieldInterface' => __DIR__ . '/..' . '/dragonmantank/cron-expression/src/Cron/FieldInterface.php', - 'Cron\\HoursField' => __DIR__ . '/..' . '/dragonmantank/cron-expression/src/Cron/HoursField.php', - 'Cron\\MinutesField' => __DIR__ . '/..' . '/dragonmantank/cron-expression/src/Cron/MinutesField.php', - 'Cron\\MonthField' => __DIR__ . '/..' . '/dragonmantank/cron-expression/src/Cron/MonthField.php', - 'Database\\Seeders\\AccountTypeTableUpdateSeeder' => __DIR__ . '/../..' . '/database/seeders/AccountTypeTableUpdateSeeder.php', - 'Database\\Seeders\\AccountTypesTableSeeder' => __DIR__ . '/../..' . '/database/seeders/AccountTypesTableSeeder.php', - 'Database\\Seeders\\AgeGroupsTableSeeder' => __DIR__ . '/../..' . '/database/seeders/AgeGroupsTableSeeder.php', - 'Database\\Seeders\\AnaesthesiaAirwaysTableSeeder' => __DIR__ . '/../..' . '/database/seeders/AnaesthesiaAirwaysTableSeeder.php', - 'Database\\Seeders\\AnaesthesiaEttsTableSeeder' => __DIR__ . '/../..' . '/database/seeders/AnaesthesiaEttsTableSeeder.php', - 'Database\\Seeders\\AnaesthesiaInductionsTableSeeder' => __DIR__ . '/../..' . '/database/seeders/AnaesthesiaInductionsTableSeeder.php', - 'Database\\Seeders\\AnaesthesiaTypesSeeder' => __DIR__ . '/../..' . '/database/seeders/AnaesthesiaTypesSeeder.php', - 'Database\\Seeders\\AnaestheticAgentsTableSeeder' => __DIR__ . '/../..' . '/database/seeders/AnaestheticAgentsTableSeeder.php', - 'Database\\Seeders\\AnaestheticTechniquesTableSeeder' => __DIR__ . '/../..' . '/database/seeders/AnaestheticTechniquesTableSeeder.php', - 'Database\\Seeders\\AnalgesicsTableSeeder' => __DIR__ . '/../..' . '/database/seeders/AnalgesicsTableSeeder.php', - 'Database\\Seeders\\AnteNatalClinicAccuraciesTableSeeder' => __DIR__ . '/../..' . '/database/seeders/AnteNatalClinicAccuraciesTableSeeder.php', - 'Database\\Seeders\\AnteNatalClinicEngagementsTableSeeder' => __DIR__ . '/../..' . '/database/seeders/AnteNatalClinicEngagementsTableSeeder.php', - 'Database\\Seeders\\AnteNatalClinicLiesTableSeeder' => __DIR__ . '/../..' . '/database/seeders/AnteNatalClinicLiesTableSeeder.php', - 'Database\\Seeders\\AnteNatalClinicOutcomesTableSeeder' => __DIR__ . '/../..' . '/database/seeders/AnteNatalClinicOutcomesTableSeeder.php', - 'Database\\Seeders\\AnteNatalClinicPositionTableSeeder' => __DIR__ . '/../..' . '/database/seeders/AnteNatalClinicPositionTableSeeder.php', - 'Database\\Seeders\\AnteNatalClinicPresentationTableSeeder' => __DIR__ . '/../..' . '/database/seeders/AnteNatalClinicPresentationTableSeeder.php', - 'Database\\Seeders\\ArtCardFamilyPlanningMethodsTableSeeder' => __DIR__ . '/../..' . '/database/seeders/ArtCardFamilyPlanningMethodsTableSeeder.php', - 'Database\\Seeders\\ArtOiTableSeeder' => __DIR__ . '/../..' . '/database/seeders/ArtOiTableSeeder.php', - 'Database\\Seeders\\ArtPotentialSideEffectsTableSeeder' => __DIR__ . '/../..' . '/database/seeders/ArtPotentialSideEffectsTableSeeder.php', - 'Database\\Seeders\\ArvAdherenceReasonTableSeeder' => __DIR__ . '/../..' . '/database/seeders/ArvAdherenceReasonTableSeeder.php', - 'Database\\Seeders\\BankingSeeder' => __DIR__ . '/../..' . '/database/seeders/BankingSeeder.php', - 'Database\\Seeders\\BloodGroupsSeeder' => __DIR__ . '/../..' . '/database/seeders/BloodGroupsSeeder.php', - 'Database\\Seeders\\CaesarianSectionTableSeeder' => __DIR__ . '/../..' . '/database/seeders/CaesarianSectionTableSeeder.php', - 'Database\\Seeders\\CareEntryPointsTableSeeder' => __DIR__ . '/../..' . '/database/seeders/CareEntryPointsTableSeeder.php', - 'Database\\Seeders\\ChartOfAccountSlugTableSeeder' => __DIR__ . '/../..' . '/database/seeders/ChartOfAccountSlugTableSeeder.php', - 'Database\\Seeders\\ChartOfAccountsTableSeeder' => __DIR__ . '/../..' . '/database/seeders/ChartOfAccountsTableSeeder.php', - 'Database\\Seeders\\ClinicsSeeder' => __DIR__ . '/../..' . '/database/seeders/ClinicsSeeder.php', - 'Database\\Seeders\\CountiesSeeder' => __DIR__ . '/../..' . '/database/seeders/CountiesSeeder.php', - 'Database\\Seeders\\CountriesTableSeeder' => __DIR__ . '/../..' . '/database/seeders/CountriesTableSeeder.php', - 'Database\\Seeders\\DatabaseSeeder' => __DIR__ . '/../..' . '/database/seeders/DatabaseSeeder.php', - 'Database\\Seeders\\DebtPlanArrangementsTableSeeder' => __DIR__ . '/../..' . '/database/seeders/DebtPlanArrangementsTableSeeder.php', - 'Database\\Seeders\\DefaultBedCategoryIncomeAccount' => __DIR__ . '/../..' . '/database/seeders/DefaultBedCategoryIncomeAccount.php', - 'Database\\Seeders\\DentalsTableSeeder' => __DIR__ . '/../..' . '/database/seeders/DentalsTableSeeder.php', - 'Database\\Seeders\\DiagnosesTableSeeder' => __DIR__ . '/../..' . '/database/seeders/DiagnosesTableSeeder.php', - 'Database\\Seeders\\DiagnosisCategorySeeder' => __DIR__ . '/../..' . '/database/seeders/DiagnosisCategorySeeder.php', - 'Database\\Seeders\\DistrictsTableSeeder' => __DIR__ . '/../..' . '/database/seeders/DistrictsTableSeeder.php', - 'Database\\Seeders\\DosageFrequenciesClassTableSeeder' => __DIR__ . '/../..' . '/database/seeders/DosageFrequenciesClassTableSeeder.php', - 'Database\\Seeders\\DrugCategoriesTableSeeder' => __DIR__ . '/../..' . '/database/seeders/DrugCategoriesTableSeeder.php', - 'Database\\Seeders\\DrugFormsTableSeeder' => __DIR__ . '/../..' . '/database/seeders/DrugFormsTableSeeder.php', - 'Database\\Seeders\\DrugUnitsTableSeeder' => __DIR__ . '/../..' . '/database/seeders/DrugUnitsTableSeeder.php', - 'Database\\Seeders\\DrugsTableSeeder' => __DIR__ . '/../..' . '/database/seeders/DrugsTableSeeder.php', - 'Database\\Seeders\\EyeClinicDiagnosisSeeder' => __DIR__ . '/../..' . '/database/seeders/EyeClinicDiagnosisSeeder.php', - 'Database\\Seeders\\FamilyPlanningMethodsTableSeeder' => __DIR__ . '/../..' . '/database/seeders/FamilyPlanningMethodsTableSeeder.php', - 'Database\\Seeders\\FamilyRelationshipsTableSeeder' => __DIR__ . '/../..' . '/database/seeders/FamilyRelationshipsTableSeeder.php', - 'Database\\Seeders\\FinancePointTagTableSeeder' => __DIR__ . '/../..' . '/database/seeders/FinancePointTagTableSeeder.php', - 'Database\\Seeders\\GenderBasedViolenceTableSeeder' => __DIR__ . '/../..' . '/database/seeders/GenderBasedViolenceTableSeeder.php', - 'Database\\Seeders\\HeartRegularitiesTableSeeder' => __DIR__ . '/../..' . '/database/seeders/HeartRegularitiesTableSeeder.php', - 'Database\\Seeders\\HmisCategoriesTableSeeder' => __DIR__ . '/../..' . '/database/seeders/HmisCategoriesTableSeeder.php', - 'Database\\Seeders\\HmisCategoryOptionsSeeder' => __DIR__ . '/../..' . '/database/seeders/HmisCategoryOptionsSeeder.php', - 'Database\\Seeders\\HmisInvestigationCategoriesInpatientTableSeeder' => __DIR__ . '/../..' . '/database/seeders/HmisInvestigationCategoriesInpatientTableSeeder.php', - 'Database\\Seeders\\HmisWardSeeder' => __DIR__ . '/../..' . '/database/seeders/HmisWardSeeder.php', - 'Database\\Seeders\\HospitalInformationTableSeeder' => __DIR__ . '/../..' . '/database/seeders/HospitalInformationTableSeeder.php', - 'Database\\Seeders\\InvestigationCategoriesTableSeeder' => __DIR__ . '/../..' . '/database/seeders/InvestigationCategoriesTableSeeder.php', - 'Database\\Seeders\\InvestigationSuperCategoriesSeeder' => __DIR__ . '/../..' . '/database/seeders/InvestigationSuperCategoriesSeeder.php', - 'Database\\Seeders\\IvFluidsTableSeeder' => __DIR__ . '/../..' . '/database/seeders/IvFluidsTableSeeder.php', - 'Database\\Seeders\\LaboratorySpecimenTableSeeder' => __DIR__ . '/../..' . '/database/seeders/LaboratorySpecimenTableSeeder.php', - 'Database\\Seeders\\LabsTableSeeder' => __DIR__ . '/../..' . '/database/seeders/LabsTableSeeder.php', - 'Database\\Seeders\\LicenceCouncilsSeeder' => __DIR__ . '/../..' . '/database/seeders/LicenceCouncilsSeeder.php', - 'Database\\Seeders\\LocationOfDeliveryTableSeeder' => __DIR__ . '/../..' . '/database/seeders/LocationOfDeliveryTableSeeder.php', - 'Database\\Seeders\\MaritalStatusSeeder' => __DIR__ . '/../..' . '/database/seeders/MaritalStatusSeeder.php', - 'Database\\Seeders\\MaternityProgressTableSeeder' => __DIR__ . '/../..' . '/database/seeders/MaternityProgressTableSeeder.php', - 'Database\\Seeders\\MessageBoardTableSeeder' => __DIR__ . '/../..' . '/database/seeders/MessageBoardTableSeeder.php', - 'Database\\Seeders\\MissingMigrationsVineSeeder' => __DIR__ . '/../..' . '/database/seeders/MissingMigrationsVineSeeder.php', - 'Database\\Seeders\\ModeOfDeliveryTableSeeder' => __DIR__ . '/../..' . '/database/seeders/ModeOfDeliveryTableSeeder.php', - 'Database\\Seeders\\MuscleRelaxantsTableSeeder' => __DIR__ . '/../..' . '/database/seeders/MuscleRelaxantsTableSeeder.php', - 'Database\\Seeders\\NeedleTypesTableSeeder' => __DIR__ . '/../..' . '/database/seeders/NeedleTypesTableSeeder.php', - 'Database\\Seeders\\NutritionTableSeeder' => __DIR__ . '/../..' . '/database/seeders/NutritionTableSeeder.php', - 'Database\\Seeders\\ObservationsTableSeeder' => __DIR__ . '/../..' . '/database/seeders/ObservationsTableSeeder.php', - 'Database\\Seeders\\OccupationsTableSeeder' => __DIR__ . '/../..' . '/database/seeders/OccupationsTableSeeder.php', - 'Database\\Seeders\\OutcomesTableSeeder' => __DIR__ . '/../..' . '/database/seeders/OutcomesTableSeeder.php', - 'Database\\Seeders\\ParishesSeeder' => __DIR__ . '/../..' . '/database/seeders/ParishesSeeder.php', - 'Database\\Seeders\\PasswordExpirationForExistingUsersSeeder' => __DIR__ . '/../..' . '/database/seeders/PasswordExpirationForExistingUsersSeeder.php', - 'Database\\Seeders\\PatientCategorySeeder' => __DIR__ . '/../..' . '/database/seeders/PatientCategorySeeder.php', - 'Database\\Seeders\\PatientsTableSeeder' => __DIR__ . '/../..' . '/database/seeders/PatientsTableSeeder.php', - 'Database\\Seeders\\PaymentItemsTableSeeder' => __DIR__ . '/../..' . '/database/seeders/PaymentItemsTableSeeder.php', - 'Database\\Seeders\\PayrollDefaultsSeeder' => __DIR__ . '/../..' . '/database/seeders/PayrollDefaultsSeeder.php', - 'Database\\Seeders\\PermissionTableSeeder' => __DIR__ . '/../..' . '/database/seeders/PermissionTableSeeder.php', - 'Database\\Seeders\\PermissionsCategoryTableSeeder' => __DIR__ . '/../..' . '/database/seeders/PermissionsCategoryTableSeeder.php', - 'Database\\Seeders\\PersonTitlesTableSeeder' => __DIR__ . '/../..' . '/database/seeders/PersonTitlesTableSeeder.php', - 'Database\\Seeders\\ProcedureCategoriesTableSeeder' => __DIR__ . '/../..' . '/database/seeders/ProcedureCategoriesTableSeeder.php', - 'Database\\Seeders\\QuotationTypesTableSeeder' => __DIR__ . '/../..' . '/database/seeders/QuotationTypesTableSeeder.php', - 'Database\\Seeders\\RadiologiesTableSeeder' => __DIR__ . '/../..' . '/database/seeders/RadiologiesTableSeeder.php', - 'Database\\Seeders\\ReconcileReasonSeeder' => __DIR__ . '/../..' . '/database/seeders/ReconcileReasonSeeder.php', - 'Database\\Seeders\\ReferralHospitalsSeeder' => __DIR__ . '/../..' . '/database/seeders/ReferralHospitalsSeeder.php', - 'Database\\Seeders\\ReligionsTableSeeder' => __DIR__ . '/../..' . '/database/seeders/ReligionsTableSeeder.php', - 'Database\\Seeders\\ResourceCategoriesTableSeeder' => __DIR__ . '/../..' . '/database/seeders/ResourceCategoriesTableSeeder.php', - 'Database\\Seeders\\ResourcesTableSeeder' => __DIR__ . '/../..' . '/database/seeders/ResourcesTableSeeder.php', - 'Database\\Seeders\\ReverseTagSeeder' => __DIR__ . '/../..' . '/database/seeders/ReverseTagSeeder.php', - 'Database\\Seeders\\RolesTableSeeder' => __DIR__ . '/../..' . '/database/seeders/RolesTableSeeder.php', - 'Database\\Seeders\\SecurityQuestionsTableSeeder' => __DIR__ . '/../..' . '/database/seeders/SecurityQuestionsTableSeeder.php', - 'Database\\Seeders\\ServicesTableSeeder' => __DIR__ . '/../..' . '/database/seeders/ServicesTableSeeder.php', - 'Database\\Seeders\\SlitLampTestAreaSeeder' => __DIR__ . '/../..' . '/database/seeders/SlitLampTestAreaSeeder.php', - 'Database\\Seeders\\SlitLampTestAreaValueSeeder' => __DIR__ . '/../..' . '/database/seeders/SlitLampTestAreaValueSeeder.php', - 'Database\\Seeders\\SpecialitiesTableSeeder' => __DIR__ . '/../..' . '/database/seeders/SpecialitiesTableSeeder.php', - 'Database\\Seeders\\SpecializedInvestigationVariablesSeeder' => __DIR__ . '/../..' . '/database/seeders/SpecializedInvestigationVariablesSeeder.php', - 'Database\\Seeders\\SpontaneousRegularRespirationInMinuteTableSeeder' => __DIR__ . '/../..' . '/database/seeders/SpontaneousRegularRespirationInMinuteTableSeeder.php', - 'Database\\Seeders\\StaffPositionsSeeder' => __DIR__ . '/../..' . '/database/seeders/StaffPositionsSeeder.php', - 'Database\\Seeders\\SubcountiesSeeder' => __DIR__ . '/../..' . '/database/seeders/SubcountiesSeeder.php', - 'Database\\Seeders\\SundriesTableSeeder' => __DIR__ . '/../..' . '/database/seeders/SundriesTableSeeder.php', - 'Database\\Seeders\\SundryTableSeeder' => __DIR__ . '/../..' . '/database/seeders/SundryTableSeeder.php', - 'Database\\Seeders\\SuppliersTableSeeder' => __DIR__ . '/../..' . '/database/seeders/SuppliersTableSeeder.php', - 'Database\\Seeders\\SymptomsSeeder' => __DIR__ . '/../..' . '/database/seeders/SymptomsSeeder.php', - 'Database\\Seeders\\TheatreLocationsTableSeeder' => __DIR__ . '/../..' . '/database/seeders/TheatreLocationsTableSeeder.php', - 'Database\\Seeders\\TuberclosisStatusTableSeeder' => __DIR__ . '/../..' . '/database/seeders/TuberclosisStatusTableSeeder.php', - 'Database\\Seeders\\UnitOfMeasureTableSeeder' => __DIR__ . '/../..' . '/database/seeders/UnitOfMeasureTableSeeder.php', - 'Database\\Seeders\\UsersTableSeeder' => __DIR__ . '/../..' . '/database/seeders/UsersTableSeeder.php', - 'Database\\Seeders\\UterusOperationTableSeeder' => __DIR__ . '/../..' . '/database/seeders/UterusOperationTableSeeder.php', - 'Database\\Seeders\\VillagesTableSeeder' => __DIR__ . '/../..' . '/database/seeders/VillagesTableSeeder.php', - 'Database\\Seeders\\VolatileLiquidAnaestheticsTableSeeder' => __DIR__ . '/../..' . '/database/seeders/VolatileLiquidAnaestheticsTableSeeder.php', - 'Database\\Seeders\\WardsTableSeeder' => __DIR__ . '/../..' . '/database/seeders/WardsTableSeeder.php', - 'DateError' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateError.php', - 'DateException' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateException.php', - 'DateInvalidOperationException' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateInvalidOperationException.php', - 'DateInvalidTimeZoneException' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateInvalidTimeZoneException.php', - 'DateMalformedIntervalStringException' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateMalformedIntervalStringException.php', - 'DateMalformedPeriodStringException' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateMalformedPeriodStringException.php', - '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', - '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', - 'DeepCopy\\Filter\\ChainableFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/ChainableFilter.php', - 'DeepCopy\\Filter\\Doctrine\\DoctrineCollectionFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineCollectionFilter.php', - 'DeepCopy\\Filter\\Doctrine\\DoctrineEmptyCollectionFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php', - 'DeepCopy\\Filter\\Doctrine\\DoctrineProxyFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php', - 'DeepCopy\\Filter\\Filter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php', - 'DeepCopy\\Filter\\KeepFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/KeepFilter.php', - 'DeepCopy\\Filter\\ReplaceFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/ReplaceFilter.php', - 'DeepCopy\\Filter\\SetNullFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php', - 'DeepCopy\\Matcher\\Doctrine\\DoctrineProxyMatcher' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php', - 'DeepCopy\\Matcher\\Matcher' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Matcher/Matcher.php', - 'DeepCopy\\Matcher\\PropertyMatcher' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyMatcher.php', - 'DeepCopy\\Matcher\\PropertyNameMatcher' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php', - 'DeepCopy\\Matcher\\PropertyTypeMatcher' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php', - 'DeepCopy\\Reflection\\ReflectionHelper' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php', - 'DeepCopy\\TypeFilter\\Date\\DateIntervalFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DateIntervalFilter.php', - 'DeepCopy\\TypeFilter\\Date\\DatePeriodFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DatePeriodFilter.php', - 'DeepCopy\\TypeFilter\\ReplaceFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php', - 'DeepCopy\\TypeFilter\\ShallowCopyFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php', - 'DeepCopy\\TypeFilter\\Spl\\ArrayObjectFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/ArrayObjectFilter.php', - 'DeepCopy\\TypeFilter\\Spl\\SplDoublyLinkedList' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedList.php', - 'DeepCopy\\TypeFilter\\Spl\\SplDoublyLinkedListFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedListFilter.php', - 'DeepCopy\\TypeFilter\\TypeFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php', - 'DeepCopy\\TypeMatcher\\TypeMatcher' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeMatcher/TypeMatcher.php', - 'Dflydev\\DotAccessData\\Data' => __DIR__ . '/..' . '/dflydev/dot-access-data/src/Data.php', - 'Dflydev\\DotAccessData\\DataInterface' => __DIR__ . '/..' . '/dflydev/dot-access-data/src/DataInterface.php', - 'Dflydev\\DotAccessData\\Exception\\DataException' => __DIR__ . '/..' . '/dflydev/dot-access-data/src/Exception/DataException.php', - 'Dflydev\\DotAccessData\\Exception\\InvalidPathException' => __DIR__ . '/..' . '/dflydev/dot-access-data/src/Exception/InvalidPathException.php', - 'Dflydev\\DotAccessData\\Exception\\MissingPathException' => __DIR__ . '/..' . '/dflydev/dot-access-data/src/Exception/MissingPathException.php', - 'Dflydev\\DotAccessData\\Util' => __DIR__ . '/..' . '/dflydev/dot-access-data/src/Util.php', - 'Doctrine\\Common\\Cache\\Cache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/Cache.php', - 'Doctrine\\Common\\Cache\\CacheProvider' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/CacheProvider.php', - 'Doctrine\\Common\\Cache\\ClearableCache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/ClearableCache.php', - 'Doctrine\\Common\\Cache\\FlushableCache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/FlushableCache.php', - 'Doctrine\\Common\\Cache\\MultiDeleteCache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/MultiDeleteCache.php', - 'Doctrine\\Common\\Cache\\MultiGetCache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/MultiGetCache.php', - 'Doctrine\\Common\\Cache\\MultiOperationCache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/MultiOperationCache.php', - 'Doctrine\\Common\\Cache\\MultiPutCache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/MultiPutCache.php', - 'Doctrine\\Common\\Cache\\Psr6\\CacheAdapter' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/CacheAdapter.php', - 'Doctrine\\Common\\Cache\\Psr6\\CacheItem' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/CacheItem.php', - 'Doctrine\\Common\\Cache\\Psr6\\DoctrineProvider' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/DoctrineProvider.php', - 'Doctrine\\Common\\Cache\\Psr6\\InvalidArgument' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/InvalidArgument.php', - 'Doctrine\\Common\\Cache\\Psr6\\TypedCacheItem' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/TypedCacheItem.php', - 'Doctrine\\Common\\EventArgs' => __DIR__ . '/..' . '/doctrine/event-manager/src/EventArgs.php', - 'Doctrine\\Common\\EventManager' => __DIR__ . '/..' . '/doctrine/event-manager/src/EventManager.php', - 'Doctrine\\Common\\EventSubscriber' => __DIR__ . '/..' . '/doctrine/event-manager/src/EventSubscriber.php', - 'Doctrine\\Common\\Lexer\\AbstractLexer' => __DIR__ . '/..' . '/doctrine/lexer/src/AbstractLexer.php', - 'Doctrine\\Common\\Lexer\\Token' => __DIR__ . '/..' . '/doctrine/lexer/src/Token.php', - 'Doctrine\\DBAL\\ArrayParameterType' => __DIR__ . '/..' . '/doctrine/dbal/src/ArrayParameterType.php', - 'Doctrine\\DBAL\\ArrayParameters\\Exception' => __DIR__ . '/..' . '/doctrine/dbal/src/ArrayParameters/Exception.php', - 'Doctrine\\DBAL\\ArrayParameters\\Exception\\MissingNamedParameter' => __DIR__ . '/..' . '/doctrine/dbal/src/ArrayParameters/Exception/MissingNamedParameter.php', - 'Doctrine\\DBAL\\ArrayParameters\\Exception\\MissingPositionalParameter' => __DIR__ . '/..' . '/doctrine/dbal/src/ArrayParameters/Exception/MissingPositionalParameter.php', - 'Doctrine\\DBAL\\Cache\\ArrayResult' => __DIR__ . '/..' . '/doctrine/dbal/src/Cache/ArrayResult.php', - 'Doctrine\\DBAL\\Cache\\CacheException' => __DIR__ . '/..' . '/doctrine/dbal/src/Cache/CacheException.php', - 'Doctrine\\DBAL\\Cache\\QueryCacheProfile' => __DIR__ . '/..' . '/doctrine/dbal/src/Cache/QueryCacheProfile.php', - 'Doctrine\\DBAL\\ColumnCase' => __DIR__ . '/..' . '/doctrine/dbal/src/ColumnCase.php', - 'Doctrine\\DBAL\\Configuration' => __DIR__ . '/..' . '/doctrine/dbal/src/Configuration.php', - 'Doctrine\\DBAL\\Connection' => __DIR__ . '/..' . '/doctrine/dbal/src/Connection.php', - 'Doctrine\\DBAL\\ConnectionException' => __DIR__ . '/..' . '/doctrine/dbal/src/ConnectionException.php', - 'Doctrine\\DBAL\\Connections\\PrimaryReadReplicaConnection' => __DIR__ . '/..' . '/doctrine/dbal/src/Connections/PrimaryReadReplicaConnection.php', - 'Doctrine\\DBAL\\Driver' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver.php', - 'Doctrine\\DBAL\\DriverManager' => __DIR__ . '/..' . '/doctrine/dbal/src/DriverManager.php', - 'Doctrine\\DBAL\\Driver\\API\\ExceptionConverter' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/API/ExceptionConverter.php', - 'Doctrine\\DBAL\\Driver\\API\\IBMDB2\\ExceptionConverter' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/API/IBMDB2/ExceptionConverter.php', - 'Doctrine\\DBAL\\Driver\\API\\MySQL\\ExceptionConverter' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/API/MySQL/ExceptionConverter.php', - 'Doctrine\\DBAL\\Driver\\API\\OCI\\ExceptionConverter' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/API/OCI/ExceptionConverter.php', - 'Doctrine\\DBAL\\Driver\\API\\PostgreSQL\\ExceptionConverter' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/API/PostgreSQL/ExceptionConverter.php', - 'Doctrine\\DBAL\\Driver\\API\\SQLSrv\\ExceptionConverter' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/API/SQLSrv/ExceptionConverter.php', - 'Doctrine\\DBAL\\Driver\\API\\SQLite\\ExceptionConverter' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/API/SQLite/ExceptionConverter.php', - 'Doctrine\\DBAL\\Driver\\API\\SQLite\\UserDefinedFunctions' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/API/SQLite/UserDefinedFunctions.php', - 'Doctrine\\DBAL\\Driver\\AbstractDB2Driver' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/AbstractDB2Driver.php', - 'Doctrine\\DBAL\\Driver\\AbstractException' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/AbstractException.php', - 'Doctrine\\DBAL\\Driver\\AbstractMySQLDriver' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/AbstractMySQLDriver.php', - 'Doctrine\\DBAL\\Driver\\AbstractOracleDriver' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/AbstractOracleDriver.php', - 'Doctrine\\DBAL\\Driver\\AbstractOracleDriver\\EasyConnectString' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/AbstractOracleDriver/EasyConnectString.php', - 'Doctrine\\DBAL\\Driver\\AbstractPostgreSQLDriver' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/AbstractPostgreSQLDriver.php', - 'Doctrine\\DBAL\\Driver\\AbstractSQLServerDriver' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/AbstractSQLServerDriver.php', - 'Doctrine\\DBAL\\Driver\\AbstractSQLServerDriver\\Exception\\PortWithoutHost' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/AbstractSQLServerDriver/Exception/PortWithoutHost.php', - 'Doctrine\\DBAL\\Driver\\AbstractSQLiteDriver' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/AbstractSQLiteDriver.php', - 'Doctrine\\DBAL\\Driver\\AbstractSQLiteDriver\\Middleware\\EnableForeignKeys' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/AbstractSQLiteDriver/Middleware/EnableForeignKeys.php', - 'Doctrine\\DBAL\\Driver\\Connection' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/Connection.php', - 'Doctrine\\DBAL\\Driver\\Exception' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/Exception.php', - 'Doctrine\\DBAL\\Driver\\Exception\\UnknownParameterType' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/Exception/UnknownParameterType.php', - 'Doctrine\\DBAL\\Driver\\FetchUtils' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/FetchUtils.php', - 'Doctrine\\DBAL\\Driver\\IBMDB2\\Connection' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/IBMDB2/Connection.php', - 'Doctrine\\DBAL\\Driver\\IBMDB2\\DataSourceName' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/IBMDB2/DataSourceName.php', - 'Doctrine\\DBAL\\Driver\\IBMDB2\\Driver' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/IBMDB2/Driver.php', - 'Doctrine\\DBAL\\Driver\\IBMDB2\\Exception\\CannotCopyStreamToStream' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/IBMDB2/Exception/CannotCopyStreamToStream.php', - 'Doctrine\\DBAL\\Driver\\IBMDB2\\Exception\\CannotCreateTemporaryFile' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/IBMDB2/Exception/CannotCreateTemporaryFile.php', - 'Doctrine\\DBAL\\Driver\\IBMDB2\\Exception\\ConnectionError' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/IBMDB2/Exception/ConnectionError.php', - 'Doctrine\\DBAL\\Driver\\IBMDB2\\Exception\\ConnectionFailed' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/IBMDB2/Exception/ConnectionFailed.php', - 'Doctrine\\DBAL\\Driver\\IBMDB2\\Exception\\Factory' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/IBMDB2/Exception/Factory.php', - 'Doctrine\\DBAL\\Driver\\IBMDB2\\Exception\\PrepareFailed' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/IBMDB2/Exception/PrepareFailed.php', - 'Doctrine\\DBAL\\Driver\\IBMDB2\\Exception\\StatementError' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/IBMDB2/Exception/StatementError.php', - 'Doctrine\\DBAL\\Driver\\IBMDB2\\Result' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/IBMDB2/Result.php', - 'Doctrine\\DBAL\\Driver\\IBMDB2\\Statement' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/IBMDB2/Statement.php', - 'Doctrine\\DBAL\\Driver\\Middleware' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/Middleware.php', - 'Doctrine\\DBAL\\Driver\\Middleware\\AbstractConnectionMiddleware' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/Middleware/AbstractConnectionMiddleware.php', - 'Doctrine\\DBAL\\Driver\\Middleware\\AbstractDriverMiddleware' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/Middleware/AbstractDriverMiddleware.php', - 'Doctrine\\DBAL\\Driver\\Middleware\\AbstractResultMiddleware' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/Middleware/AbstractResultMiddleware.php', - 'Doctrine\\DBAL\\Driver\\Middleware\\AbstractStatementMiddleware' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/Middleware/AbstractStatementMiddleware.php', - 'Doctrine\\DBAL\\Driver\\Mysqli\\Connection' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/Mysqli/Connection.php', - 'Doctrine\\DBAL\\Driver\\Mysqli\\Driver' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/Mysqli/Driver.php', - 'Doctrine\\DBAL\\Driver\\Mysqli\\Exception\\ConnectionError' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/Mysqli/Exception/ConnectionError.php', - 'Doctrine\\DBAL\\Driver\\Mysqli\\Exception\\ConnectionFailed' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/Mysqli/Exception/ConnectionFailed.php', - 'Doctrine\\DBAL\\Driver\\Mysqli\\Exception\\FailedReadingStreamOffset' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/Mysqli/Exception/FailedReadingStreamOffset.php', - 'Doctrine\\DBAL\\Driver\\Mysqli\\Exception\\HostRequired' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/Mysqli/Exception/HostRequired.php', - 'Doctrine\\DBAL\\Driver\\Mysqli\\Exception\\InvalidCharset' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/Mysqli/Exception/InvalidCharset.php', - 'Doctrine\\DBAL\\Driver\\Mysqli\\Exception\\InvalidOption' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/Mysqli/Exception/InvalidOption.php', - 'Doctrine\\DBAL\\Driver\\Mysqli\\Exception\\NonStreamResourceUsedAsLargeObject' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/Mysqli/Exception/NonStreamResourceUsedAsLargeObject.php', - 'Doctrine\\DBAL\\Driver\\Mysqli\\Exception\\StatementError' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/Mysqli/Exception/StatementError.php', - 'Doctrine\\DBAL\\Driver\\Mysqli\\Initializer' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/Mysqli/Initializer.php', - 'Doctrine\\DBAL\\Driver\\Mysqli\\Initializer\\Charset' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/Mysqli/Initializer/Charset.php', - 'Doctrine\\DBAL\\Driver\\Mysqli\\Initializer\\Options' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/Mysqli/Initializer/Options.php', - 'Doctrine\\DBAL\\Driver\\Mysqli\\Initializer\\Secure' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/Mysqli/Initializer/Secure.php', - 'Doctrine\\DBAL\\Driver\\Mysqli\\Result' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/Mysqli/Result.php', - 'Doctrine\\DBAL\\Driver\\Mysqli\\Statement' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/Mysqli/Statement.php', - 'Doctrine\\DBAL\\Driver\\OCI8\\Connection' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/OCI8/Connection.php', - 'Doctrine\\DBAL\\Driver\\OCI8\\ConvertPositionalToNamedPlaceholders' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/OCI8/ConvertPositionalToNamedPlaceholders.php', - 'Doctrine\\DBAL\\Driver\\OCI8\\Driver' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/OCI8/Driver.php', - 'Doctrine\\DBAL\\Driver\\OCI8\\Exception\\ConnectionFailed' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/OCI8/Exception/ConnectionFailed.php', - 'Doctrine\\DBAL\\Driver\\OCI8\\Exception\\Error' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/OCI8/Exception/Error.php', - 'Doctrine\\DBAL\\Driver\\OCI8\\Exception\\InvalidConfiguration' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/OCI8/Exception/InvalidConfiguration.php', - 'Doctrine\\DBAL\\Driver\\OCI8\\Exception\\NonTerminatedStringLiteral' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/OCI8/Exception/NonTerminatedStringLiteral.php', - 'Doctrine\\DBAL\\Driver\\OCI8\\Exception\\SequenceDoesNotExist' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/OCI8/Exception/SequenceDoesNotExist.php', - 'Doctrine\\DBAL\\Driver\\OCI8\\Exception\\UnknownParameterIndex' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/OCI8/Exception/UnknownParameterIndex.php', - 'Doctrine\\DBAL\\Driver\\OCI8\\ExecutionMode' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/OCI8/ExecutionMode.php', - 'Doctrine\\DBAL\\Driver\\OCI8\\Middleware\\InitializeSession' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/OCI8/Middleware/InitializeSession.php', - 'Doctrine\\DBAL\\Driver\\OCI8\\Result' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/OCI8/Result.php', - 'Doctrine\\DBAL\\Driver\\OCI8\\Statement' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/OCI8/Statement.php', - 'Doctrine\\DBAL\\Driver\\PDO\\Connection' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/PDO/Connection.php', - 'Doctrine\\DBAL\\Driver\\PDO\\Exception' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/PDO/Exception.php', - 'Doctrine\\DBAL\\Driver\\PDO\\MySQL\\Driver' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/PDO/MySQL/Driver.php', - 'Doctrine\\DBAL\\Driver\\PDO\\OCI\\Driver' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/PDO/OCI/Driver.php', - 'Doctrine\\DBAL\\Driver\\PDO\\PDOException' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/PDO/PDOException.php', - 'Doctrine\\DBAL\\Driver\\PDO\\ParameterTypeMap' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/PDO/ParameterTypeMap.php', - 'Doctrine\\DBAL\\Driver\\PDO\\PgSQL\\Driver' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/PDO/PgSQL/Driver.php', - 'Doctrine\\DBAL\\Driver\\PDO\\Result' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/PDO/Result.php', - 'Doctrine\\DBAL\\Driver\\PDO\\SQLSrv\\Connection' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/PDO/SQLSrv/Connection.php', - 'Doctrine\\DBAL\\Driver\\PDO\\SQLSrv\\Driver' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/PDO/SQLSrv/Driver.php', - 'Doctrine\\DBAL\\Driver\\PDO\\SQLSrv\\Statement' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/PDO/SQLSrv/Statement.php', - 'Doctrine\\DBAL\\Driver\\PDO\\SQLite\\Driver' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/PDO/SQLite/Driver.php', - 'Doctrine\\DBAL\\Driver\\PDO\\Statement' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/PDO/Statement.php', - 'Doctrine\\DBAL\\Driver\\PgSQL\\Connection' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/PgSQL/Connection.php', - 'Doctrine\\DBAL\\Driver\\PgSQL\\ConvertParameters' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/PgSQL/ConvertParameters.php', - 'Doctrine\\DBAL\\Driver\\PgSQL\\Driver' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/PgSQL/Driver.php', - 'Doctrine\\DBAL\\Driver\\PgSQL\\Exception' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/PgSQL/Exception.php', - 'Doctrine\\DBAL\\Driver\\PgSQL\\Exception\\UnexpectedValue' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/PgSQL/Exception/UnexpectedValue.php', - 'Doctrine\\DBAL\\Driver\\PgSQL\\Exception\\UnknownParameter' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/PgSQL/Exception/UnknownParameter.php', - 'Doctrine\\DBAL\\Driver\\PgSQL\\Result' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/PgSQL/Result.php', - 'Doctrine\\DBAL\\Driver\\PgSQL\\Statement' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/PgSQL/Statement.php', - 'Doctrine\\DBAL\\Driver\\Result' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/Result.php', - 'Doctrine\\DBAL\\Driver\\SQLSrv\\Connection' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/SQLSrv/Connection.php', - 'Doctrine\\DBAL\\Driver\\SQLSrv\\Driver' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/SQLSrv/Driver.php', - 'Doctrine\\DBAL\\Driver\\SQLSrv\\Exception\\Error' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/SQLSrv/Exception/Error.php', - 'Doctrine\\DBAL\\Driver\\SQLSrv\\Result' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/SQLSrv/Result.php', - 'Doctrine\\DBAL\\Driver\\SQLSrv\\Statement' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/SQLSrv/Statement.php', - 'Doctrine\\DBAL\\Driver\\SQLite3\\Connection' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/SQLite3/Connection.php', - 'Doctrine\\DBAL\\Driver\\SQLite3\\Driver' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/SQLite3/Driver.php', - 'Doctrine\\DBAL\\Driver\\SQLite3\\Exception' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/SQLite3/Exception.php', - 'Doctrine\\DBAL\\Driver\\SQLite3\\Result' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/SQLite3/Result.php', - 'Doctrine\\DBAL\\Driver\\SQLite3\\Statement' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/SQLite3/Statement.php', - 'Doctrine\\DBAL\\Driver\\ServerInfoAwareConnection' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/ServerInfoAwareConnection.php', - 'Doctrine\\DBAL\\Driver\\Statement' => __DIR__ . '/..' . '/doctrine/dbal/src/Driver/Statement.php', - 'Doctrine\\DBAL\\Event\\ConnectionEventArgs' => __DIR__ . '/..' . '/doctrine/dbal/src/Event/ConnectionEventArgs.php', - 'Doctrine\\DBAL\\Event\\Listeners\\OracleSessionInit' => __DIR__ . '/..' . '/doctrine/dbal/src/Event/Listeners/OracleSessionInit.php', - 'Doctrine\\DBAL\\Event\\Listeners\\SQLSessionInit' => __DIR__ . '/..' . '/doctrine/dbal/src/Event/Listeners/SQLSessionInit.php', - 'Doctrine\\DBAL\\Event\\Listeners\\SQLiteSessionInit' => __DIR__ . '/..' . '/doctrine/dbal/src/Event/Listeners/SQLiteSessionInit.php', - 'Doctrine\\DBAL\\Event\\SchemaAlterTableAddColumnEventArgs' => __DIR__ . '/..' . '/doctrine/dbal/src/Event/SchemaAlterTableAddColumnEventArgs.php', - 'Doctrine\\DBAL\\Event\\SchemaAlterTableChangeColumnEventArgs' => __DIR__ . '/..' . '/doctrine/dbal/src/Event/SchemaAlterTableChangeColumnEventArgs.php', - 'Doctrine\\DBAL\\Event\\SchemaAlterTableEventArgs' => __DIR__ . '/..' . '/doctrine/dbal/src/Event/SchemaAlterTableEventArgs.php', - 'Doctrine\\DBAL\\Event\\SchemaAlterTableRemoveColumnEventArgs' => __DIR__ . '/..' . '/doctrine/dbal/src/Event/SchemaAlterTableRemoveColumnEventArgs.php', - 'Doctrine\\DBAL\\Event\\SchemaAlterTableRenameColumnEventArgs' => __DIR__ . '/..' . '/doctrine/dbal/src/Event/SchemaAlterTableRenameColumnEventArgs.php', - 'Doctrine\\DBAL\\Event\\SchemaColumnDefinitionEventArgs' => __DIR__ . '/..' . '/doctrine/dbal/src/Event/SchemaColumnDefinitionEventArgs.php', - 'Doctrine\\DBAL\\Event\\SchemaCreateTableColumnEventArgs' => __DIR__ . '/..' . '/doctrine/dbal/src/Event/SchemaCreateTableColumnEventArgs.php', - 'Doctrine\\DBAL\\Event\\SchemaCreateTableEventArgs' => __DIR__ . '/..' . '/doctrine/dbal/src/Event/SchemaCreateTableEventArgs.php', - 'Doctrine\\DBAL\\Event\\SchemaDropTableEventArgs' => __DIR__ . '/..' . '/doctrine/dbal/src/Event/SchemaDropTableEventArgs.php', - 'Doctrine\\DBAL\\Event\\SchemaEventArgs' => __DIR__ . '/..' . '/doctrine/dbal/src/Event/SchemaEventArgs.php', - 'Doctrine\\DBAL\\Event\\SchemaIndexDefinitionEventArgs' => __DIR__ . '/..' . '/doctrine/dbal/src/Event/SchemaIndexDefinitionEventArgs.php', - 'Doctrine\\DBAL\\Event\\TransactionBeginEventArgs' => __DIR__ . '/..' . '/doctrine/dbal/src/Event/TransactionBeginEventArgs.php', - 'Doctrine\\DBAL\\Event\\TransactionCommitEventArgs' => __DIR__ . '/..' . '/doctrine/dbal/src/Event/TransactionCommitEventArgs.php', - 'Doctrine\\DBAL\\Event\\TransactionEventArgs' => __DIR__ . '/..' . '/doctrine/dbal/src/Event/TransactionEventArgs.php', - 'Doctrine\\DBAL\\Event\\TransactionRollBackEventArgs' => __DIR__ . '/..' . '/doctrine/dbal/src/Event/TransactionRollBackEventArgs.php', - 'Doctrine\\DBAL\\Events' => __DIR__ . '/..' . '/doctrine/dbal/src/Events.php', - 'Doctrine\\DBAL\\Exception' => __DIR__ . '/..' . '/doctrine/dbal/src/Exception.php', - 'Doctrine\\DBAL\\Exception\\ConnectionException' => __DIR__ . '/..' . '/doctrine/dbal/src/Exception/ConnectionException.php', - 'Doctrine\\DBAL\\Exception\\ConnectionLost' => __DIR__ . '/..' . '/doctrine/dbal/src/Exception/ConnectionLost.php', - 'Doctrine\\DBAL\\Exception\\ConstraintViolationException' => __DIR__ . '/..' . '/doctrine/dbal/src/Exception/ConstraintViolationException.php', - 'Doctrine\\DBAL\\Exception\\DatabaseDoesNotExist' => __DIR__ . '/..' . '/doctrine/dbal/src/Exception/DatabaseDoesNotExist.php', - 'Doctrine\\DBAL\\Exception\\DatabaseObjectExistsException' => __DIR__ . '/..' . '/doctrine/dbal/src/Exception/DatabaseObjectExistsException.php', - 'Doctrine\\DBAL\\Exception\\DatabaseObjectNotFoundException' => __DIR__ . '/..' . '/doctrine/dbal/src/Exception/DatabaseObjectNotFoundException.php', - 'Doctrine\\DBAL\\Exception\\DatabaseRequired' => __DIR__ . '/..' . '/doctrine/dbal/src/Exception/DatabaseRequired.php', - 'Doctrine\\DBAL\\Exception\\DeadlockException' => __DIR__ . '/..' . '/doctrine/dbal/src/Exception/DeadlockException.php', - 'Doctrine\\DBAL\\Exception\\DriverException' => __DIR__ . '/..' . '/doctrine/dbal/src/Exception/DriverException.php', - 'Doctrine\\DBAL\\Exception\\ForeignKeyConstraintViolationException' => __DIR__ . '/..' . '/doctrine/dbal/src/Exception/ForeignKeyConstraintViolationException.php', - 'Doctrine\\DBAL\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/doctrine/dbal/src/Exception/InvalidArgumentException.php', - 'Doctrine\\DBAL\\Exception\\InvalidFieldNameException' => __DIR__ . '/..' . '/doctrine/dbal/src/Exception/InvalidFieldNameException.php', - 'Doctrine\\DBAL\\Exception\\InvalidLockMode' => __DIR__ . '/..' . '/doctrine/dbal/src/Exception/InvalidLockMode.php', - 'Doctrine\\DBAL\\Exception\\LockWaitTimeoutException' => __DIR__ . '/..' . '/doctrine/dbal/src/Exception/LockWaitTimeoutException.php', - 'Doctrine\\DBAL\\Exception\\MalformedDsnException' => __DIR__ . '/..' . '/doctrine/dbal/src/Exception/MalformedDsnException.php', - 'Doctrine\\DBAL\\Exception\\NoKeyValue' => __DIR__ . '/..' . '/doctrine/dbal/src/Exception/NoKeyValue.php', - 'Doctrine\\DBAL\\Exception\\NonUniqueFieldNameException' => __DIR__ . '/..' . '/doctrine/dbal/src/Exception/NonUniqueFieldNameException.php', - 'Doctrine\\DBAL\\Exception\\NotNullConstraintViolationException' => __DIR__ . '/..' . '/doctrine/dbal/src/Exception/NotNullConstraintViolationException.php', - 'Doctrine\\DBAL\\Exception\\ReadOnlyException' => __DIR__ . '/..' . '/doctrine/dbal/src/Exception/ReadOnlyException.php', - 'Doctrine\\DBAL\\Exception\\RetryableException' => __DIR__ . '/..' . '/doctrine/dbal/src/Exception/RetryableException.php', - 'Doctrine\\DBAL\\Exception\\SchemaDoesNotExist' => __DIR__ . '/..' . '/doctrine/dbal/src/Exception/SchemaDoesNotExist.php', - 'Doctrine\\DBAL\\Exception\\ServerException' => __DIR__ . '/..' . '/doctrine/dbal/src/Exception/ServerException.php', - 'Doctrine\\DBAL\\Exception\\SyntaxErrorException' => __DIR__ . '/..' . '/doctrine/dbal/src/Exception/SyntaxErrorException.php', - 'Doctrine\\DBAL\\Exception\\TableExistsException' => __DIR__ . '/..' . '/doctrine/dbal/src/Exception/TableExistsException.php', - 'Doctrine\\DBAL\\Exception\\TableNotFoundException' => __DIR__ . '/..' . '/doctrine/dbal/src/Exception/TableNotFoundException.php', - 'Doctrine\\DBAL\\Exception\\UniqueConstraintViolationException' => __DIR__ . '/..' . '/doctrine/dbal/src/Exception/UniqueConstraintViolationException.php', - 'Doctrine\\DBAL\\ExpandArrayParameters' => __DIR__ . '/..' . '/doctrine/dbal/src/ExpandArrayParameters.php', - 'Doctrine\\DBAL\\FetchMode' => __DIR__ . '/..' . '/doctrine/dbal/src/FetchMode.php', - 'Doctrine\\DBAL\\Id\\TableGenerator' => __DIR__ . '/..' . '/doctrine/dbal/src/Id/TableGenerator.php', - 'Doctrine\\DBAL\\Id\\TableGeneratorSchemaVisitor' => __DIR__ . '/..' . '/doctrine/dbal/src/Id/TableGeneratorSchemaVisitor.php', - 'Doctrine\\DBAL\\LockMode' => __DIR__ . '/..' . '/doctrine/dbal/src/LockMode.php', - 'Doctrine\\DBAL\\Logging\\Connection' => __DIR__ . '/..' . '/doctrine/dbal/src/Logging/Connection.php', - 'Doctrine\\DBAL\\Logging\\DebugStack' => __DIR__ . '/..' . '/doctrine/dbal/src/Logging/DebugStack.php', - 'Doctrine\\DBAL\\Logging\\Driver' => __DIR__ . '/..' . '/doctrine/dbal/src/Logging/Driver.php', - 'Doctrine\\DBAL\\Logging\\LoggerChain' => __DIR__ . '/..' . '/doctrine/dbal/src/Logging/LoggerChain.php', - 'Doctrine\\DBAL\\Logging\\Middleware' => __DIR__ . '/..' . '/doctrine/dbal/src/Logging/Middleware.php', - 'Doctrine\\DBAL\\Logging\\SQLLogger' => __DIR__ . '/..' . '/doctrine/dbal/src/Logging/SQLLogger.php', - 'Doctrine\\DBAL\\Logging\\Statement' => __DIR__ . '/..' . '/doctrine/dbal/src/Logging/Statement.php', - 'Doctrine\\DBAL\\ParameterType' => __DIR__ . '/..' . '/doctrine/dbal/src/ParameterType.php', - 'Doctrine\\DBAL\\Platforms\\AbstractMySQLPlatform' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/AbstractMySQLPlatform.php', - 'Doctrine\\DBAL\\Platforms\\AbstractPlatform' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/AbstractPlatform.php', - 'Doctrine\\DBAL\\Platforms\\DB2111Platform' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/DB2111Platform.php', - 'Doctrine\\DBAL\\Platforms\\DB2Platform' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/DB2Platform.php', - 'Doctrine\\DBAL\\Platforms\\DateIntervalUnit' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/DateIntervalUnit.php', - 'Doctrine\\DBAL\\Platforms\\Keywords\\DB2Keywords' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/Keywords/DB2Keywords.php', - 'Doctrine\\DBAL\\Platforms\\Keywords\\KeywordList' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/Keywords/KeywordList.php', - 'Doctrine\\DBAL\\Platforms\\Keywords\\MariaDBKeywords' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/Keywords/MariaDBKeywords.php', - 'Doctrine\\DBAL\\Platforms\\Keywords\\MariaDb102Keywords' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/Keywords/MariaDb102Keywords.php', - 'Doctrine\\DBAL\\Platforms\\Keywords\\MySQL57Keywords' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/Keywords/MySQL57Keywords.php', - 'Doctrine\\DBAL\\Platforms\\Keywords\\MySQL80Keywords' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/Keywords/MySQL80Keywords.php', - 'Doctrine\\DBAL\\Platforms\\Keywords\\MySQL84Keywords' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/Keywords/MySQL84Keywords.php', - 'Doctrine\\DBAL\\Platforms\\Keywords\\MySQLKeywords' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/Keywords/MySQLKeywords.php', - 'Doctrine\\DBAL\\Platforms\\Keywords\\OracleKeywords' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/Keywords/OracleKeywords.php', - 'Doctrine\\DBAL\\Platforms\\Keywords\\PostgreSQL100Keywords' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/Keywords/PostgreSQL100Keywords.php', - 'Doctrine\\DBAL\\Platforms\\Keywords\\PostgreSQL94Keywords' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/Keywords/PostgreSQL94Keywords.php', - 'Doctrine\\DBAL\\Platforms\\Keywords\\PostgreSQLKeywords' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/Keywords/PostgreSQLKeywords.php', - 'Doctrine\\DBAL\\Platforms\\Keywords\\ReservedKeywordsValidator' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/Keywords/ReservedKeywordsValidator.php', - 'Doctrine\\DBAL\\Platforms\\Keywords\\SQLServer2012Keywords' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/Keywords/SQLServer2012Keywords.php', - 'Doctrine\\DBAL\\Platforms\\Keywords\\SQLServerKeywords' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/Keywords/SQLServerKeywords.php', - 'Doctrine\\DBAL\\Platforms\\Keywords\\SQLiteKeywords' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/Keywords/SQLiteKeywords.php', - 'Doctrine\\DBAL\\Platforms\\MariaDBPlatform' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/MariaDBPlatform.php', - 'Doctrine\\DBAL\\Platforms\\MariaDb1010Platform' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/MariaDb1010Platform.php', - 'Doctrine\\DBAL\\Platforms\\MariaDb1027Platform' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/MariaDb1027Platform.php', - 'Doctrine\\DBAL\\Platforms\\MariaDb1043Platform' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/MariaDb1043Platform.php', - 'Doctrine\\DBAL\\Platforms\\MariaDb1052Platform' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/MariaDb1052Platform.php', - 'Doctrine\\DBAL\\Platforms\\MariaDb1060Platform' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/MariaDb1060Platform.php', - 'Doctrine\\DBAL\\Platforms\\MySQL57Platform' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/MySQL57Platform.php', - 'Doctrine\\DBAL\\Platforms\\MySQL80Platform' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/MySQL80Platform.php', - 'Doctrine\\DBAL\\Platforms\\MySQL84Platform' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/MySQL84Platform.php', - 'Doctrine\\DBAL\\Platforms\\MySQLPlatform' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/MySQLPlatform.php', - 'Doctrine\\DBAL\\Platforms\\MySQL\\CollationMetadataProvider' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/MySQL/CollationMetadataProvider.php', - 'Doctrine\\DBAL\\Platforms\\MySQL\\CollationMetadataProvider\\CachingCollationMetadataProvider' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/MySQL/CollationMetadataProvider/CachingCollationMetadataProvider.php', - 'Doctrine\\DBAL\\Platforms\\MySQL\\CollationMetadataProvider\\ConnectionCollationMetadataProvider' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/MySQL/CollationMetadataProvider/ConnectionCollationMetadataProvider.php', - 'Doctrine\\DBAL\\Platforms\\MySQL\\Comparator' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/MySQL/Comparator.php', - 'Doctrine\\DBAL\\Platforms\\OraclePlatform' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/OraclePlatform.php', - 'Doctrine\\DBAL\\Platforms\\PostgreSQL100Platform' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/PostgreSQL100Platform.php', - 'Doctrine\\DBAL\\Platforms\\PostgreSQL120Platform' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/PostgreSQL120Platform.php', - 'Doctrine\\DBAL\\Platforms\\PostgreSQL94Platform' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/PostgreSQL94Platform.php', - 'Doctrine\\DBAL\\Platforms\\PostgreSQLPlatform' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/PostgreSQLPlatform.php', - 'Doctrine\\DBAL\\Platforms\\SQLServer2012Platform' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/SQLServer2012Platform.php', - 'Doctrine\\DBAL\\Platforms\\SQLServerPlatform' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/SQLServerPlatform.php', - 'Doctrine\\DBAL\\Platforms\\SQLServer\\Comparator' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/SQLServer/Comparator.php', - 'Doctrine\\DBAL\\Platforms\\SQLServer\\SQL\\Builder\\SQLServerSelectSQLBuilder' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/SQLServer/SQL/Builder/SQLServerSelectSQLBuilder.php', - 'Doctrine\\DBAL\\Platforms\\SQLite\\Comparator' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/SQLite/Comparator.php', - 'Doctrine\\DBAL\\Platforms\\SqlitePlatform' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/SqlitePlatform.php', - 'Doctrine\\DBAL\\Platforms\\TrimMode' => __DIR__ . '/..' . '/doctrine/dbal/src/Platforms/TrimMode.php', - 'Doctrine\\DBAL\\Portability\\Connection' => __DIR__ . '/..' . '/doctrine/dbal/src/Portability/Connection.php', - 'Doctrine\\DBAL\\Portability\\Converter' => __DIR__ . '/..' . '/doctrine/dbal/src/Portability/Converter.php', - 'Doctrine\\DBAL\\Portability\\Driver' => __DIR__ . '/..' . '/doctrine/dbal/src/Portability/Driver.php', - 'Doctrine\\DBAL\\Portability\\Middleware' => __DIR__ . '/..' . '/doctrine/dbal/src/Portability/Middleware.php', - 'Doctrine\\DBAL\\Portability\\OptimizeFlags' => __DIR__ . '/..' . '/doctrine/dbal/src/Portability/OptimizeFlags.php', - 'Doctrine\\DBAL\\Portability\\Result' => __DIR__ . '/..' . '/doctrine/dbal/src/Portability/Result.php', - 'Doctrine\\DBAL\\Portability\\Statement' => __DIR__ . '/..' . '/doctrine/dbal/src/Portability/Statement.php', - 'Doctrine\\DBAL\\Query' => __DIR__ . '/..' . '/doctrine/dbal/src/Query.php', - 'Doctrine\\DBAL\\Query\\Expression\\CompositeExpression' => __DIR__ . '/..' . '/doctrine/dbal/src/Query/Expression/CompositeExpression.php', - 'Doctrine\\DBAL\\Query\\Expression\\ExpressionBuilder' => __DIR__ . '/..' . '/doctrine/dbal/src/Query/Expression/ExpressionBuilder.php', - 'Doctrine\\DBAL\\Query\\ForUpdate' => __DIR__ . '/..' . '/doctrine/dbal/src/Query/ForUpdate.php', - 'Doctrine\\DBAL\\Query\\ForUpdate\\ConflictResolutionMode' => __DIR__ . '/..' . '/doctrine/dbal/src/Query/ForUpdate/ConflictResolutionMode.php', - 'Doctrine\\DBAL\\Query\\Limit' => __DIR__ . '/..' . '/doctrine/dbal/src/Query/Limit.php', - 'Doctrine\\DBAL\\Query\\QueryBuilder' => __DIR__ . '/..' . '/doctrine/dbal/src/Query/QueryBuilder.php', - 'Doctrine\\DBAL\\Query\\QueryException' => __DIR__ . '/..' . '/doctrine/dbal/src/Query/QueryException.php', - 'Doctrine\\DBAL\\Query\\SelectQuery' => __DIR__ . '/..' . '/doctrine/dbal/src/Query/SelectQuery.php', - 'Doctrine\\DBAL\\Result' => __DIR__ . '/..' . '/doctrine/dbal/src/Result.php', - 'Doctrine\\DBAL\\SQL\\Builder\\CreateSchemaObjectsSQLBuilder' => __DIR__ . '/..' . '/doctrine/dbal/src/SQL/Builder/CreateSchemaObjectsSQLBuilder.php', - 'Doctrine\\DBAL\\SQL\\Builder\\DefaultSelectSQLBuilder' => __DIR__ . '/..' . '/doctrine/dbal/src/SQL/Builder/DefaultSelectSQLBuilder.php', - 'Doctrine\\DBAL\\SQL\\Builder\\DropSchemaObjectsSQLBuilder' => __DIR__ . '/..' . '/doctrine/dbal/src/SQL/Builder/DropSchemaObjectsSQLBuilder.php', - 'Doctrine\\DBAL\\SQL\\Builder\\SelectSQLBuilder' => __DIR__ . '/..' . '/doctrine/dbal/src/SQL/Builder/SelectSQLBuilder.php', - 'Doctrine\\DBAL\\SQL\\Parser' => __DIR__ . '/..' . '/doctrine/dbal/src/SQL/Parser.php', - 'Doctrine\\DBAL\\SQL\\Parser\\Exception' => __DIR__ . '/..' . '/doctrine/dbal/src/SQL/Parser/Exception.php', - 'Doctrine\\DBAL\\SQL\\Parser\\Exception\\RegularExpressionError' => __DIR__ . '/..' . '/doctrine/dbal/src/SQL/Parser/Exception/RegularExpressionError.php', - 'Doctrine\\DBAL\\SQL\\Parser\\Visitor' => __DIR__ . '/..' . '/doctrine/dbal/src/SQL/Parser/Visitor.php', - 'Doctrine\\DBAL\\Schema\\AbstractAsset' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/AbstractAsset.php', - 'Doctrine\\DBAL\\Schema\\AbstractSchemaManager' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/AbstractSchemaManager.php', - 'Doctrine\\DBAL\\Schema\\Column' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/Column.php', - 'Doctrine\\DBAL\\Schema\\ColumnDiff' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/ColumnDiff.php', - 'Doctrine\\DBAL\\Schema\\Comparator' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/Comparator.php', - 'Doctrine\\DBAL\\Schema\\Constraint' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/Constraint.php', - 'Doctrine\\DBAL\\Schema\\DB2SchemaManager' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/DB2SchemaManager.php', - 'Doctrine\\DBAL\\Schema\\DefaultSchemaManagerFactory' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/DefaultSchemaManagerFactory.php', - 'Doctrine\\DBAL\\Schema\\Exception\\ColumnAlreadyExists' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/Exception/ColumnAlreadyExists.php', - 'Doctrine\\DBAL\\Schema\\Exception\\ColumnDoesNotExist' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/Exception/ColumnDoesNotExist.php', - 'Doctrine\\DBAL\\Schema\\Exception\\ForeignKeyDoesNotExist' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/Exception/ForeignKeyDoesNotExist.php', - 'Doctrine\\DBAL\\Schema\\Exception\\IndexAlreadyExists' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/Exception/IndexAlreadyExists.php', - 'Doctrine\\DBAL\\Schema\\Exception\\IndexDoesNotExist' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/Exception/IndexDoesNotExist.php', - 'Doctrine\\DBAL\\Schema\\Exception\\IndexNameInvalid' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/Exception/IndexNameInvalid.php', - 'Doctrine\\DBAL\\Schema\\Exception\\InvalidTableName' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/Exception/InvalidTableName.php', - 'Doctrine\\DBAL\\Schema\\Exception\\NamedForeignKeyRequired' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/Exception/NamedForeignKeyRequired.php', - 'Doctrine\\DBAL\\Schema\\Exception\\NamespaceAlreadyExists' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/Exception/NamespaceAlreadyExists.php', - 'Doctrine\\DBAL\\Schema\\Exception\\SequenceAlreadyExists' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/Exception/SequenceAlreadyExists.php', - 'Doctrine\\DBAL\\Schema\\Exception\\SequenceDoesNotExist' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/Exception/SequenceDoesNotExist.php', - 'Doctrine\\DBAL\\Schema\\Exception\\TableAlreadyExists' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/Exception/TableAlreadyExists.php', - 'Doctrine\\DBAL\\Schema\\Exception\\TableDoesNotExist' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/Exception/TableDoesNotExist.php', - 'Doctrine\\DBAL\\Schema\\Exception\\UniqueConstraintDoesNotExist' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/Exception/UniqueConstraintDoesNotExist.php', - 'Doctrine\\DBAL\\Schema\\Exception\\UnknownColumnOption' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/Exception/UnknownColumnOption.php', - 'Doctrine\\DBAL\\Schema\\ForeignKeyConstraint' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/ForeignKeyConstraint.php', - 'Doctrine\\DBAL\\Schema\\Identifier' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/Identifier.php', - 'Doctrine\\DBAL\\Schema\\Index' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/Index.php', - 'Doctrine\\DBAL\\Schema\\LegacySchemaManagerFactory' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/LegacySchemaManagerFactory.php', - 'Doctrine\\DBAL\\Schema\\MySQLSchemaManager' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/MySQLSchemaManager.php', - 'Doctrine\\DBAL\\Schema\\OracleSchemaManager' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/OracleSchemaManager.php', - 'Doctrine\\DBAL\\Schema\\PostgreSQLSchemaManager' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/PostgreSQLSchemaManager.php', - 'Doctrine\\DBAL\\Schema\\SQLServerSchemaManager' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/SQLServerSchemaManager.php', - 'Doctrine\\DBAL\\Schema\\Schema' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/Schema.php', - 'Doctrine\\DBAL\\Schema\\SchemaConfig' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/SchemaConfig.php', - 'Doctrine\\DBAL\\Schema\\SchemaDiff' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/SchemaDiff.php', - 'Doctrine\\DBAL\\Schema\\SchemaException' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/SchemaException.php', - 'Doctrine\\DBAL\\Schema\\SchemaManagerFactory' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/SchemaManagerFactory.php', - 'Doctrine\\DBAL\\Schema\\Sequence' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/Sequence.php', - 'Doctrine\\DBAL\\Schema\\SqliteSchemaManager' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/SqliteSchemaManager.php', - 'Doctrine\\DBAL\\Schema\\Table' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/Table.php', - 'Doctrine\\DBAL\\Schema\\TableDiff' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/TableDiff.php', - 'Doctrine\\DBAL\\Schema\\UniqueConstraint' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/UniqueConstraint.php', - 'Doctrine\\DBAL\\Schema\\View' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/View.php', - 'Doctrine\\DBAL\\Schema\\Visitor\\AbstractVisitor' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/Visitor/AbstractVisitor.php', - 'Doctrine\\DBAL\\Schema\\Visitor\\CreateSchemaSqlCollector' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/Visitor/CreateSchemaSqlCollector.php', - 'Doctrine\\DBAL\\Schema\\Visitor\\DropSchemaSqlCollector' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/Visitor/DropSchemaSqlCollector.php', - 'Doctrine\\DBAL\\Schema\\Visitor\\Graphviz' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/Visitor/Graphviz.php', - 'Doctrine\\DBAL\\Schema\\Visitor\\NamespaceVisitor' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/Visitor/NamespaceVisitor.php', - 'Doctrine\\DBAL\\Schema\\Visitor\\RemoveNamespacedAssets' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/Visitor/RemoveNamespacedAssets.php', - 'Doctrine\\DBAL\\Schema\\Visitor\\Visitor' => __DIR__ . '/..' . '/doctrine/dbal/src/Schema/Visitor/Visitor.php', - 'Doctrine\\DBAL\\Statement' => __DIR__ . '/..' . '/doctrine/dbal/src/Statement.php', - 'Doctrine\\DBAL\\Tools\\Console\\Command\\CommandCompatibility' => __DIR__ . '/..' . '/doctrine/dbal/src/Tools/Console/Command/CommandCompatibility.php', - 'Doctrine\\DBAL\\Tools\\Console\\Command\\ReservedWordsCommand' => __DIR__ . '/..' . '/doctrine/dbal/src/Tools/Console/Command/ReservedWordsCommand.php', - 'Doctrine\\DBAL\\Tools\\Console\\Command\\RunSqlCommand' => __DIR__ . '/..' . '/doctrine/dbal/src/Tools/Console/Command/RunSqlCommand.php', - 'Doctrine\\DBAL\\Tools\\Console\\ConnectionNotFound' => __DIR__ . '/..' . '/doctrine/dbal/src/Tools/Console/ConnectionNotFound.php', - 'Doctrine\\DBAL\\Tools\\Console\\ConnectionProvider' => __DIR__ . '/..' . '/doctrine/dbal/src/Tools/Console/ConnectionProvider.php', - 'Doctrine\\DBAL\\Tools\\Console\\ConnectionProvider\\SingleConnectionProvider' => __DIR__ . '/..' . '/doctrine/dbal/src/Tools/Console/ConnectionProvider/SingleConnectionProvider.php', - 'Doctrine\\DBAL\\Tools\\Console\\ConsoleRunner' => __DIR__ . '/..' . '/doctrine/dbal/src/Tools/Console/ConsoleRunner.php', - 'Doctrine\\DBAL\\Tools\\DsnParser' => __DIR__ . '/..' . '/doctrine/dbal/src/Tools/DsnParser.php', - 'Doctrine\\DBAL\\TransactionIsolationLevel' => __DIR__ . '/..' . '/doctrine/dbal/src/TransactionIsolationLevel.php', - 'Doctrine\\DBAL\\Types\\ArrayType' => __DIR__ . '/..' . '/doctrine/dbal/src/Types/ArrayType.php', - 'Doctrine\\DBAL\\Types\\AsciiStringType' => __DIR__ . '/..' . '/doctrine/dbal/src/Types/AsciiStringType.php', - 'Doctrine\\DBAL\\Types\\BigIntType' => __DIR__ . '/..' . '/doctrine/dbal/src/Types/BigIntType.php', - 'Doctrine\\DBAL\\Types\\BinaryType' => __DIR__ . '/..' . '/doctrine/dbal/src/Types/BinaryType.php', - 'Doctrine\\DBAL\\Types\\BlobType' => __DIR__ . '/..' . '/doctrine/dbal/src/Types/BlobType.php', - 'Doctrine\\DBAL\\Types\\BooleanType' => __DIR__ . '/..' . '/doctrine/dbal/src/Types/BooleanType.php', - 'Doctrine\\DBAL\\Types\\ConversionException' => __DIR__ . '/..' . '/doctrine/dbal/src/Types/ConversionException.php', - 'Doctrine\\DBAL\\Types\\DateImmutableType' => __DIR__ . '/..' . '/doctrine/dbal/src/Types/DateImmutableType.php', - 'Doctrine\\DBAL\\Types\\DateIntervalType' => __DIR__ . '/..' . '/doctrine/dbal/src/Types/DateIntervalType.php', - 'Doctrine\\DBAL\\Types\\DateTimeImmutableType' => __DIR__ . '/..' . '/doctrine/dbal/src/Types/DateTimeImmutableType.php', - 'Doctrine\\DBAL\\Types\\DateTimeType' => __DIR__ . '/..' . '/doctrine/dbal/src/Types/DateTimeType.php', - 'Doctrine\\DBAL\\Types\\DateTimeTzImmutableType' => __DIR__ . '/..' . '/doctrine/dbal/src/Types/DateTimeTzImmutableType.php', - 'Doctrine\\DBAL\\Types\\DateTimeTzType' => __DIR__ . '/..' . '/doctrine/dbal/src/Types/DateTimeTzType.php', - 'Doctrine\\DBAL\\Types\\DateType' => __DIR__ . '/..' . '/doctrine/dbal/src/Types/DateType.php', - 'Doctrine\\DBAL\\Types\\DecimalType' => __DIR__ . '/..' . '/doctrine/dbal/src/Types/DecimalType.php', - 'Doctrine\\DBAL\\Types\\FloatType' => __DIR__ . '/..' . '/doctrine/dbal/src/Types/FloatType.php', - 'Doctrine\\DBAL\\Types\\GuidType' => __DIR__ . '/..' . '/doctrine/dbal/src/Types/GuidType.php', - 'Doctrine\\DBAL\\Types\\IntegerType' => __DIR__ . '/..' . '/doctrine/dbal/src/Types/IntegerType.php', - 'Doctrine\\DBAL\\Types\\JsonType' => __DIR__ . '/..' . '/doctrine/dbal/src/Types/JsonType.php', - 'Doctrine\\DBAL\\Types\\ObjectType' => __DIR__ . '/..' . '/doctrine/dbal/src/Types/ObjectType.php', - 'Doctrine\\DBAL\\Types\\PhpDateTimeMappingType' => __DIR__ . '/..' . '/doctrine/dbal/src/Types/PhpDateTimeMappingType.php', - 'Doctrine\\DBAL\\Types\\PhpIntegerMappingType' => __DIR__ . '/..' . '/doctrine/dbal/src/Types/PhpIntegerMappingType.php', - 'Doctrine\\DBAL\\Types\\SimpleArrayType' => __DIR__ . '/..' . '/doctrine/dbal/src/Types/SimpleArrayType.php', - 'Doctrine\\DBAL\\Types\\SmallIntType' => __DIR__ . '/..' . '/doctrine/dbal/src/Types/SmallIntType.php', - 'Doctrine\\DBAL\\Types\\StringType' => __DIR__ . '/..' . '/doctrine/dbal/src/Types/StringType.php', - 'Doctrine\\DBAL\\Types\\TextType' => __DIR__ . '/..' . '/doctrine/dbal/src/Types/TextType.php', - 'Doctrine\\DBAL\\Types\\TimeImmutableType' => __DIR__ . '/..' . '/doctrine/dbal/src/Types/TimeImmutableType.php', - 'Doctrine\\DBAL\\Types\\TimeType' => __DIR__ . '/..' . '/doctrine/dbal/src/Types/TimeType.php', - 'Doctrine\\DBAL\\Types\\Type' => __DIR__ . '/..' . '/doctrine/dbal/src/Types/Type.php', - 'Doctrine\\DBAL\\Types\\TypeRegistry' => __DIR__ . '/..' . '/doctrine/dbal/src/Types/TypeRegistry.php', - 'Doctrine\\DBAL\\Types\\Types' => __DIR__ . '/..' . '/doctrine/dbal/src/Types/Types.php', - 'Doctrine\\DBAL\\Types\\VarDateTimeImmutableType' => __DIR__ . '/..' . '/doctrine/dbal/src/Types/VarDateTimeImmutableType.php', - 'Doctrine\\DBAL\\Types\\VarDateTimeType' => __DIR__ . '/..' . '/doctrine/dbal/src/Types/VarDateTimeType.php', - 'Doctrine\\DBAL\\VersionAwarePlatformDriver' => __DIR__ . '/..' . '/doctrine/dbal/src/VersionAwarePlatformDriver.php', - 'Doctrine\\Deprecations\\Deprecation' => __DIR__ . '/..' . '/doctrine/deprecations/src/Deprecation.php', - 'Doctrine\\Deprecations\\PHPUnit\\VerifyDeprecations' => __DIR__ . '/..' . '/doctrine/deprecations/src/PHPUnit/VerifyDeprecations.php', - 'Doctrine\\Inflector\\CachedWordInflector' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/CachedWordInflector.php', - 'Doctrine\\Inflector\\GenericLanguageInflectorFactory' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/GenericLanguageInflectorFactory.php', - 'Doctrine\\Inflector\\Inflector' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Inflector.php', - 'Doctrine\\Inflector\\InflectorFactory' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/InflectorFactory.php', - 'Doctrine\\Inflector\\Language' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Language.php', - 'Doctrine\\Inflector\\LanguageInflectorFactory' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/LanguageInflectorFactory.php', - 'Doctrine\\Inflector\\NoopWordInflector' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/NoopWordInflector.php', - 'Doctrine\\Inflector\\Rules\\English\\Inflectible' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/Inflectible.php', - 'Doctrine\\Inflector\\Rules\\English\\InflectorFactory' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/InflectorFactory.php', - 'Doctrine\\Inflector\\Rules\\English\\Rules' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/Rules.php', - 'Doctrine\\Inflector\\Rules\\English\\Uninflected' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/Uninflected.php', - 'Doctrine\\Inflector\\Rules\\French\\Inflectible' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/Inflectible.php', - 'Doctrine\\Inflector\\Rules\\French\\InflectorFactory' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/InflectorFactory.php', - 'Doctrine\\Inflector\\Rules\\French\\Rules' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/Rules.php', - 'Doctrine\\Inflector\\Rules\\French\\Uninflected' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/Uninflected.php', - 'Doctrine\\Inflector\\Rules\\NorwegianBokmal\\Inflectible' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/Inflectible.php', - 'Doctrine\\Inflector\\Rules\\NorwegianBokmal\\InflectorFactory' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/InflectorFactory.php', - 'Doctrine\\Inflector\\Rules\\NorwegianBokmal\\Rules' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/Rules.php', - 'Doctrine\\Inflector\\Rules\\NorwegianBokmal\\Uninflected' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/Uninflected.php', - 'Doctrine\\Inflector\\Rules\\Pattern' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Pattern.php', - 'Doctrine\\Inflector\\Rules\\Patterns' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Patterns.php', - 'Doctrine\\Inflector\\Rules\\Portuguese\\Inflectible' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Inflectible.php', - 'Doctrine\\Inflector\\Rules\\Portuguese\\InflectorFactory' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/InflectorFactory.php', - 'Doctrine\\Inflector\\Rules\\Portuguese\\Rules' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Rules.php', - 'Doctrine\\Inflector\\Rules\\Portuguese\\Uninflected' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Uninflected.php', - 'Doctrine\\Inflector\\Rules\\Ruleset' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Ruleset.php', - 'Doctrine\\Inflector\\Rules\\Spanish\\Inflectible' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Inflectible.php', - 'Doctrine\\Inflector\\Rules\\Spanish\\InflectorFactory' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/InflectorFactory.php', - 'Doctrine\\Inflector\\Rules\\Spanish\\Rules' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Rules.php', - 'Doctrine\\Inflector\\Rules\\Spanish\\Uninflected' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Uninflected.php', - 'Doctrine\\Inflector\\Rules\\Substitution' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Substitution.php', - 'Doctrine\\Inflector\\Rules\\Substitutions' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Substitutions.php', - 'Doctrine\\Inflector\\Rules\\Transformation' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Transformation.php', - 'Doctrine\\Inflector\\Rules\\Transformations' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Transformations.php', - 'Doctrine\\Inflector\\Rules\\Turkish\\Inflectible' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Inflectible.php', - 'Doctrine\\Inflector\\Rules\\Turkish\\InflectorFactory' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/InflectorFactory.php', - 'Doctrine\\Inflector\\Rules\\Turkish\\Rules' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Rules.php', - 'Doctrine\\Inflector\\Rules\\Turkish\\Uninflected' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Uninflected.php', - 'Doctrine\\Inflector\\Rules\\Word' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Word.php', - 'Doctrine\\Inflector\\RulesetInflector' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/RulesetInflector.php', - 'Doctrine\\Inflector\\WordInflector' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/WordInflector.php', - 'Dompdf\\Adapter\\CPDF' => __DIR__ . '/..' . '/dompdf/dompdf/src/Adapter/CPDF.php', - 'Dompdf\\Adapter\\GD' => __DIR__ . '/..' . '/dompdf/dompdf/src/Adapter/GD.php', - 'Dompdf\\Adapter\\PDFLib' => __DIR__ . '/..' . '/dompdf/dompdf/src/Adapter/PDFLib.php', - 'Dompdf\\Canvas' => __DIR__ . '/..' . '/dompdf/dompdf/src/Canvas.php', - 'Dompdf\\CanvasFactory' => __DIR__ . '/..' . '/dompdf/dompdf/src/CanvasFactory.php', - 'Dompdf\\Cellmap' => __DIR__ . '/..' . '/dompdf/dompdf/src/Cellmap.php', - 'Dompdf\\Cpdf' => __DIR__ . '/..' . '/dompdf/dompdf/lib/Cpdf.php', - 'Dompdf\\Css\\AttributeTranslator' => __DIR__ . '/..' . '/dompdf/dompdf/src/Css/AttributeTranslator.php', - 'Dompdf\\Css\\Color' => __DIR__ . '/..' . '/dompdf/dompdf/src/Css/Color.php', - 'Dompdf\\Css\\Style' => __DIR__ . '/..' . '/dompdf/dompdf/src/Css/Style.php', - 'Dompdf\\Css\\Stylesheet' => __DIR__ . '/..' . '/dompdf/dompdf/src/Css/Stylesheet.php', - 'Dompdf\\Dompdf' => __DIR__ . '/..' . '/dompdf/dompdf/src/Dompdf.php', - 'Dompdf\\Exception' => __DIR__ . '/..' . '/dompdf/dompdf/src/Exception.php', - 'Dompdf\\Exception\\ImageException' => __DIR__ . '/..' . '/dompdf/dompdf/src/Exception/ImageException.php', - 'Dompdf\\FontMetrics' => __DIR__ . '/..' . '/dompdf/dompdf/src/FontMetrics.php', - 'Dompdf\\Frame' => __DIR__ . '/..' . '/dompdf/dompdf/src/Frame.php', - 'Dompdf\\FrameDecorator\\AbstractFrameDecorator' => __DIR__ . '/..' . '/dompdf/dompdf/src/FrameDecorator/AbstractFrameDecorator.php', - 'Dompdf\\FrameDecorator\\Block' => __DIR__ . '/..' . '/dompdf/dompdf/src/FrameDecorator/Block.php', - 'Dompdf\\FrameDecorator\\Image' => __DIR__ . '/..' . '/dompdf/dompdf/src/FrameDecorator/Image.php', - 'Dompdf\\FrameDecorator\\Inline' => __DIR__ . '/..' . '/dompdf/dompdf/src/FrameDecorator/Inline.php', - 'Dompdf\\FrameDecorator\\ListBullet' => __DIR__ . '/..' . '/dompdf/dompdf/src/FrameDecorator/ListBullet.php', - 'Dompdf\\FrameDecorator\\ListBulletImage' => __DIR__ . '/..' . '/dompdf/dompdf/src/FrameDecorator/ListBulletImage.php', - 'Dompdf\\FrameDecorator\\NullFrameDecorator' => __DIR__ . '/..' . '/dompdf/dompdf/src/FrameDecorator/NullFrameDecorator.php', - 'Dompdf\\FrameDecorator\\Page' => __DIR__ . '/..' . '/dompdf/dompdf/src/FrameDecorator/Page.php', - 'Dompdf\\FrameDecorator\\Table' => __DIR__ . '/..' . '/dompdf/dompdf/src/FrameDecorator/Table.php', - 'Dompdf\\FrameDecorator\\TableCell' => __DIR__ . '/..' . '/dompdf/dompdf/src/FrameDecorator/TableCell.php', - 'Dompdf\\FrameDecorator\\TableRow' => __DIR__ . '/..' . '/dompdf/dompdf/src/FrameDecorator/TableRow.php', - 'Dompdf\\FrameDecorator\\TableRowGroup' => __DIR__ . '/..' . '/dompdf/dompdf/src/FrameDecorator/TableRowGroup.php', - 'Dompdf\\FrameDecorator\\Text' => __DIR__ . '/..' . '/dompdf/dompdf/src/FrameDecorator/Text.php', - 'Dompdf\\FrameReflower\\AbstractFrameReflower' => __DIR__ . '/..' . '/dompdf/dompdf/src/FrameReflower/AbstractFrameReflower.php', - 'Dompdf\\FrameReflower\\Block' => __DIR__ . '/..' . '/dompdf/dompdf/src/FrameReflower/Block.php', - 'Dompdf\\FrameReflower\\Image' => __DIR__ . '/..' . '/dompdf/dompdf/src/FrameReflower/Image.php', - 'Dompdf\\FrameReflower\\Inline' => __DIR__ . '/..' . '/dompdf/dompdf/src/FrameReflower/Inline.php', - 'Dompdf\\FrameReflower\\ListBullet' => __DIR__ . '/..' . '/dompdf/dompdf/src/FrameReflower/ListBullet.php', - 'Dompdf\\FrameReflower\\NullFrameReflower' => __DIR__ . '/..' . '/dompdf/dompdf/src/FrameReflower/NullFrameReflower.php', - 'Dompdf\\FrameReflower\\Page' => __DIR__ . '/..' . '/dompdf/dompdf/src/FrameReflower/Page.php', - 'Dompdf\\FrameReflower\\Table' => __DIR__ . '/..' . '/dompdf/dompdf/src/FrameReflower/Table.php', - 'Dompdf\\FrameReflower\\TableCell' => __DIR__ . '/..' . '/dompdf/dompdf/src/FrameReflower/TableCell.php', - 'Dompdf\\FrameReflower\\TableRow' => __DIR__ . '/..' . '/dompdf/dompdf/src/FrameReflower/TableRow.php', - 'Dompdf\\FrameReflower\\TableRowGroup' => __DIR__ . '/..' . '/dompdf/dompdf/src/FrameReflower/TableRowGroup.php', - 'Dompdf\\FrameReflower\\Text' => __DIR__ . '/..' . '/dompdf/dompdf/src/FrameReflower/Text.php', - 'Dompdf\\Frame\\Factory' => __DIR__ . '/..' . '/dompdf/dompdf/src/Frame/Factory.php', - 'Dompdf\\Frame\\FrameListIterator' => __DIR__ . '/..' . '/dompdf/dompdf/src/Frame/FrameListIterator.php', - 'Dompdf\\Frame\\FrameTree' => __DIR__ . '/..' . '/dompdf/dompdf/src/Frame/FrameTree.php', - 'Dompdf\\Frame\\FrameTreeIterator' => __DIR__ . '/..' . '/dompdf/dompdf/src/Frame/FrameTreeIterator.php', - 'Dompdf\\Helpers' => __DIR__ . '/..' . '/dompdf/dompdf/src/Helpers.php', - 'Dompdf\\Image\\Cache' => __DIR__ . '/..' . '/dompdf/dompdf/src/Image/Cache.php', - 'Dompdf\\JavascriptEmbedder' => __DIR__ . '/..' . '/dompdf/dompdf/src/JavascriptEmbedder.php', - 'Dompdf\\LineBox' => __DIR__ . '/..' . '/dompdf/dompdf/src/LineBox.php', - 'Dompdf\\Options' => __DIR__ . '/..' . '/dompdf/dompdf/src/Options.php', - 'Dompdf\\PhpEvaluator' => __DIR__ . '/..' . '/dompdf/dompdf/src/PhpEvaluator.php', - 'Dompdf\\Positioner\\Absolute' => __DIR__ . '/..' . '/dompdf/dompdf/src/Positioner/Absolute.php', - 'Dompdf\\Positioner\\AbstractPositioner' => __DIR__ . '/..' . '/dompdf/dompdf/src/Positioner/AbstractPositioner.php', - 'Dompdf\\Positioner\\Block' => __DIR__ . '/..' . '/dompdf/dompdf/src/Positioner/Block.php', - 'Dompdf\\Positioner\\Fixed' => __DIR__ . '/..' . '/dompdf/dompdf/src/Positioner/Fixed.php', - 'Dompdf\\Positioner\\Inline' => __DIR__ . '/..' . '/dompdf/dompdf/src/Positioner/Inline.php', - 'Dompdf\\Positioner\\ListBullet' => __DIR__ . '/..' . '/dompdf/dompdf/src/Positioner/ListBullet.php', - 'Dompdf\\Positioner\\NullPositioner' => __DIR__ . '/..' . '/dompdf/dompdf/src/Positioner/NullPositioner.php', - 'Dompdf\\Positioner\\TableCell' => __DIR__ . '/..' . '/dompdf/dompdf/src/Positioner/TableCell.php', - 'Dompdf\\Positioner\\TableRow' => __DIR__ . '/..' . '/dompdf/dompdf/src/Positioner/TableRow.php', - 'Dompdf\\Renderer' => __DIR__ . '/..' . '/dompdf/dompdf/src/Renderer.php', - 'Dompdf\\Renderer\\AbstractRenderer' => __DIR__ . '/..' . '/dompdf/dompdf/src/Renderer/AbstractRenderer.php', - 'Dompdf\\Renderer\\Block' => __DIR__ . '/..' . '/dompdf/dompdf/src/Renderer/Block.php', - 'Dompdf\\Renderer\\Image' => __DIR__ . '/..' . '/dompdf/dompdf/src/Renderer/Image.php', - 'Dompdf\\Renderer\\Inline' => __DIR__ . '/..' . '/dompdf/dompdf/src/Renderer/Inline.php', - 'Dompdf\\Renderer\\ListBullet' => __DIR__ . '/..' . '/dompdf/dompdf/src/Renderer/ListBullet.php', - 'Dompdf\\Renderer\\TableCell' => __DIR__ . '/..' . '/dompdf/dompdf/src/Renderer/TableCell.php', - 'Dompdf\\Renderer\\TableRowGroup' => __DIR__ . '/..' . '/dompdf/dompdf/src/Renderer/TableRowGroup.php', - 'Dompdf\\Renderer\\Text' => __DIR__ . '/..' . '/dompdf/dompdf/src/Renderer/Text.php', - 'Dotenv\\Dotenv' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Dotenv.php', - 'Dotenv\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Exception/ExceptionInterface.php', - 'Dotenv\\Exception\\InvalidEncodingException' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Exception/InvalidEncodingException.php', - 'Dotenv\\Exception\\InvalidFileException' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Exception/InvalidFileException.php', - 'Dotenv\\Exception\\InvalidPathException' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Exception/InvalidPathException.php', - 'Dotenv\\Exception\\ValidationException' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Exception/ValidationException.php', - 'Dotenv\\Loader\\Loader' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Loader/Loader.php', - 'Dotenv\\Loader\\LoaderInterface' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Loader/LoaderInterface.php', - 'Dotenv\\Loader\\Resolver' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Loader/Resolver.php', - 'Dotenv\\Parser\\Entry' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Parser/Entry.php', - 'Dotenv\\Parser\\EntryParser' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Parser/EntryParser.php', - 'Dotenv\\Parser\\Lexer' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Parser/Lexer.php', - 'Dotenv\\Parser\\Lines' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Parser/Lines.php', - 'Dotenv\\Parser\\Parser' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Parser/Parser.php', - 'Dotenv\\Parser\\ParserInterface' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Parser/ParserInterface.php', - 'Dotenv\\Parser\\Value' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Parser/Value.php', - 'Dotenv\\Repository\\AdapterRepository' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Repository/AdapterRepository.php', - 'Dotenv\\Repository\\Adapter\\AdapterInterface' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Repository/Adapter/AdapterInterface.php', - 'Dotenv\\Repository\\Adapter\\ApacheAdapter' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Repository/Adapter/ApacheAdapter.php', - 'Dotenv\\Repository\\Adapter\\ArrayAdapter' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Repository/Adapter/ArrayAdapter.php', - 'Dotenv\\Repository\\Adapter\\EnvConstAdapter' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Repository/Adapter/EnvConstAdapter.php', - 'Dotenv\\Repository\\Adapter\\GuardedWriter' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Repository/Adapter/GuardedWriter.php', - 'Dotenv\\Repository\\Adapter\\ImmutableWriter' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Repository/Adapter/ImmutableWriter.php', - 'Dotenv\\Repository\\Adapter\\MultiReader' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Repository/Adapter/MultiReader.php', - 'Dotenv\\Repository\\Adapter\\MultiWriter' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Repository/Adapter/MultiWriter.php', - 'Dotenv\\Repository\\Adapter\\PutenvAdapter' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Repository/Adapter/PutenvAdapter.php', - 'Dotenv\\Repository\\Adapter\\ReaderInterface' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Repository/Adapter/ReaderInterface.php', - 'Dotenv\\Repository\\Adapter\\ReplacingWriter' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Repository/Adapter/ReplacingWriter.php', - 'Dotenv\\Repository\\Adapter\\ServerConstAdapter' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Repository/Adapter/ServerConstAdapter.php', - 'Dotenv\\Repository\\Adapter\\WriterInterface' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Repository/Adapter/WriterInterface.php', - 'Dotenv\\Repository\\RepositoryBuilder' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Repository/RepositoryBuilder.php', - 'Dotenv\\Repository\\RepositoryInterface' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Repository/RepositoryInterface.php', - 'Dotenv\\Store\\FileStore' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Store/FileStore.php', - 'Dotenv\\Store\\File\\Paths' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Store/File/Paths.php', - 'Dotenv\\Store\\File\\Reader' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Store/File/Reader.php', - 'Dotenv\\Store\\StoreBuilder' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Store/StoreBuilder.php', - 'Dotenv\\Store\\StoreInterface' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Store/StoreInterface.php', - 'Dotenv\\Store\\StringStore' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Store/StringStore.php', - 'Dotenv\\Util\\Regex' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Util/Regex.php', - 'Dotenv\\Util\\Str' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Util/Str.php', - 'Dotenv\\Validator' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Validator.php', - 'DrugsCostOfGoodsSeeder' => __DIR__ . '/../..' . '/database/seeders/DrugsCostOfGoodsSeeder.php', - 'Egulias\\EmailValidator\\EmailLexer' => __DIR__ . '/..' . '/egulias/email-validator/src/EmailLexer.php', - 'Egulias\\EmailValidator\\EmailParser' => __DIR__ . '/..' . '/egulias/email-validator/src/EmailParser.php', - 'Egulias\\EmailValidator\\EmailValidator' => __DIR__ . '/..' . '/egulias/email-validator/src/EmailValidator.php', - 'Egulias\\EmailValidator\\MessageIDParser' => __DIR__ . '/..' . '/egulias/email-validator/src/MessageIDParser.php', - 'Egulias\\EmailValidator\\Parser' => __DIR__ . '/..' . '/egulias/email-validator/src/Parser.php', - 'Egulias\\EmailValidator\\Parser\\Comment' => __DIR__ . '/..' . '/egulias/email-validator/src/Parser/Comment.php', - 'Egulias\\EmailValidator\\Parser\\CommentStrategy\\CommentStrategy' => __DIR__ . '/..' . '/egulias/email-validator/src/Parser/CommentStrategy/CommentStrategy.php', - 'Egulias\\EmailValidator\\Parser\\CommentStrategy\\DomainComment' => __DIR__ . '/..' . '/egulias/email-validator/src/Parser/CommentStrategy/DomainComment.php', - 'Egulias\\EmailValidator\\Parser\\CommentStrategy\\LocalComment' => __DIR__ . '/..' . '/egulias/email-validator/src/Parser/CommentStrategy/LocalComment.php', - 'Egulias\\EmailValidator\\Parser\\DomainLiteral' => __DIR__ . '/..' . '/egulias/email-validator/src/Parser/DomainLiteral.php', - 'Egulias\\EmailValidator\\Parser\\DomainPart' => __DIR__ . '/..' . '/egulias/email-validator/src/Parser/DomainPart.php', - 'Egulias\\EmailValidator\\Parser\\DoubleQuote' => __DIR__ . '/..' . '/egulias/email-validator/src/Parser/DoubleQuote.php', - 'Egulias\\EmailValidator\\Parser\\FoldingWhiteSpace' => __DIR__ . '/..' . '/egulias/email-validator/src/Parser/FoldingWhiteSpace.php', - 'Egulias\\EmailValidator\\Parser\\IDLeftPart' => __DIR__ . '/..' . '/egulias/email-validator/src/Parser/IDLeftPart.php', - 'Egulias\\EmailValidator\\Parser\\IDRightPart' => __DIR__ . '/..' . '/egulias/email-validator/src/Parser/IDRightPart.php', - 'Egulias\\EmailValidator\\Parser\\LocalPart' => __DIR__ . '/..' . '/egulias/email-validator/src/Parser/LocalPart.php', - 'Egulias\\EmailValidator\\Parser\\PartParser' => __DIR__ . '/..' . '/egulias/email-validator/src/Parser/PartParser.php', - 'Egulias\\EmailValidator\\Result\\InvalidEmail' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/InvalidEmail.php', - 'Egulias\\EmailValidator\\Result\\MultipleErrors' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/MultipleErrors.php', - 'Egulias\\EmailValidator\\Result\\Reason\\AtextAfterCFWS' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Reason/AtextAfterCFWS.php', - 'Egulias\\EmailValidator\\Result\\Reason\\CRLFAtTheEnd' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Reason/CRLFAtTheEnd.php', - 'Egulias\\EmailValidator\\Result\\Reason\\CRLFX2' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Reason/CRLFX2.php', - 'Egulias\\EmailValidator\\Result\\Reason\\CRNoLF' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Reason/CRNoLF.php', - 'Egulias\\EmailValidator\\Result\\Reason\\CharNotAllowed' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Reason/CharNotAllowed.php', - 'Egulias\\EmailValidator\\Result\\Reason\\CommaInDomain' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Reason/CommaInDomain.php', - 'Egulias\\EmailValidator\\Result\\Reason\\CommentsInIDRight' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Reason/CommentsInIDRight.php', - 'Egulias\\EmailValidator\\Result\\Reason\\ConsecutiveAt' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Reason/ConsecutiveAt.php', - 'Egulias\\EmailValidator\\Result\\Reason\\ConsecutiveDot' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Reason/ConsecutiveDot.php', - 'Egulias\\EmailValidator\\Result\\Reason\\DetailedReason' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Reason/DetailedReason.php', - 'Egulias\\EmailValidator\\Result\\Reason\\DomainAcceptsNoMail' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Reason/DomainAcceptsNoMail.php', - 'Egulias\\EmailValidator\\Result\\Reason\\DomainHyphened' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Reason/DomainHyphened.php', - 'Egulias\\EmailValidator\\Result\\Reason\\DomainTooLong' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Reason/DomainTooLong.php', - 'Egulias\\EmailValidator\\Result\\Reason\\DotAtEnd' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Reason/DotAtEnd.php', - 'Egulias\\EmailValidator\\Result\\Reason\\DotAtStart' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Reason/DotAtStart.php', - 'Egulias\\EmailValidator\\Result\\Reason\\EmptyReason' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Reason/EmptyReason.php', - 'Egulias\\EmailValidator\\Result\\Reason\\ExceptionFound' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Reason/ExceptionFound.php', - 'Egulias\\EmailValidator\\Result\\Reason\\ExpectingATEXT' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Reason/ExpectingATEXT.php', - 'Egulias\\EmailValidator\\Result\\Reason\\ExpectingCTEXT' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Reason/ExpectingCTEXT.php', - 'Egulias\\EmailValidator\\Result\\Reason\\ExpectingDTEXT' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Reason/ExpectingDTEXT.php', - 'Egulias\\EmailValidator\\Result\\Reason\\ExpectingDomainLiteralClose' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Reason/ExpectingDomainLiteralClose.php', - 'Egulias\\EmailValidator\\Result\\Reason\\LabelTooLong' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Reason/LabelTooLong.php', - 'Egulias\\EmailValidator\\Result\\Reason\\LocalOrReservedDomain' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Reason/LocalOrReservedDomain.php', - 'Egulias\\EmailValidator\\Result\\Reason\\NoDNSRecord' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Reason/NoDNSRecord.php', - 'Egulias\\EmailValidator\\Result\\Reason\\NoDomainPart' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Reason/NoDomainPart.php', - 'Egulias\\EmailValidator\\Result\\Reason\\NoLocalPart' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Reason/NoLocalPart.php', - 'Egulias\\EmailValidator\\Result\\Reason\\RFCWarnings' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Reason/RFCWarnings.php', - 'Egulias\\EmailValidator\\Result\\Reason\\Reason' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Reason/Reason.php', - 'Egulias\\EmailValidator\\Result\\Reason\\SpoofEmail' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Reason/SpoofEmail.php', - 'Egulias\\EmailValidator\\Result\\Reason\\UnOpenedComment' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Reason/UnOpenedComment.php', - 'Egulias\\EmailValidator\\Result\\Reason\\UnableToGetDNSRecord' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Reason/UnableToGetDNSRecord.php', - 'Egulias\\EmailValidator\\Result\\Reason\\UnclosedComment' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Reason/UnclosedComment.php', - 'Egulias\\EmailValidator\\Result\\Reason\\UnclosedQuotedString' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Reason/UnclosedQuotedString.php', - 'Egulias\\EmailValidator\\Result\\Reason\\UnusualElements' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Reason/UnusualElements.php', - 'Egulias\\EmailValidator\\Result\\Result' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/Result.php', - 'Egulias\\EmailValidator\\Result\\SpoofEmail' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/SpoofEmail.php', - 'Egulias\\EmailValidator\\Result\\ValidEmail' => __DIR__ . '/..' . '/egulias/email-validator/src/Result/ValidEmail.php', - 'Egulias\\EmailValidator\\Validation\\DNSCheckValidation' => __DIR__ . '/..' . '/egulias/email-validator/src/Validation/DNSCheckValidation.php', - 'Egulias\\EmailValidator\\Validation\\DNSGetRecordWrapper' => __DIR__ . '/..' . '/egulias/email-validator/src/Validation/DNSGetRecordWrapper.php', - 'Egulias\\EmailValidator\\Validation\\DNSRecords' => __DIR__ . '/..' . '/egulias/email-validator/src/Validation/DNSRecords.php', - 'Egulias\\EmailValidator\\Validation\\EmailValidation' => __DIR__ . '/..' . '/egulias/email-validator/src/Validation/EmailValidation.php', - 'Egulias\\EmailValidator\\Validation\\Exception\\EmptyValidationList' => __DIR__ . '/..' . '/egulias/email-validator/src/Validation/Exception/EmptyValidationList.php', - 'Egulias\\EmailValidator\\Validation\\Extra\\SpoofCheckValidation' => __DIR__ . '/..' . '/egulias/email-validator/src/Validation/Extra/SpoofCheckValidation.php', - 'Egulias\\EmailValidator\\Validation\\MessageIDValidation' => __DIR__ . '/..' . '/egulias/email-validator/src/Validation/MessageIDValidation.php', - 'Egulias\\EmailValidator\\Validation\\MultipleValidationWithAnd' => __DIR__ . '/..' . '/egulias/email-validator/src/Validation/MultipleValidationWithAnd.php', - 'Egulias\\EmailValidator\\Validation\\NoRFCWarningsValidation' => __DIR__ . '/..' . '/egulias/email-validator/src/Validation/NoRFCWarningsValidation.php', - 'Egulias\\EmailValidator\\Validation\\RFCValidation' => __DIR__ . '/..' . '/egulias/email-validator/src/Validation/RFCValidation.php', - 'Egulias\\EmailValidator\\Warning\\AddressLiteral' => __DIR__ . '/..' . '/egulias/email-validator/src/Warning/AddressLiteral.php', - 'Egulias\\EmailValidator\\Warning\\CFWSNearAt' => __DIR__ . '/..' . '/egulias/email-validator/src/Warning/CFWSNearAt.php', - 'Egulias\\EmailValidator\\Warning\\CFWSWithFWS' => __DIR__ . '/..' . '/egulias/email-validator/src/Warning/CFWSWithFWS.php', - 'Egulias\\EmailValidator\\Warning\\Comment' => __DIR__ . '/..' . '/egulias/email-validator/src/Warning/Comment.php', - 'Egulias\\EmailValidator\\Warning\\DeprecatedComment' => __DIR__ . '/..' . '/egulias/email-validator/src/Warning/DeprecatedComment.php', - 'Egulias\\EmailValidator\\Warning\\DomainLiteral' => __DIR__ . '/..' . '/egulias/email-validator/src/Warning/DomainLiteral.php', - 'Egulias\\EmailValidator\\Warning\\EmailTooLong' => __DIR__ . '/..' . '/egulias/email-validator/src/Warning/EmailTooLong.php', - 'Egulias\\EmailValidator\\Warning\\IPV6BadChar' => __DIR__ . '/..' . '/egulias/email-validator/src/Warning/IPV6BadChar.php', - 'Egulias\\EmailValidator\\Warning\\IPV6ColonEnd' => __DIR__ . '/..' . '/egulias/email-validator/src/Warning/IPV6ColonEnd.php', - 'Egulias\\EmailValidator\\Warning\\IPV6ColonStart' => __DIR__ . '/..' . '/egulias/email-validator/src/Warning/IPV6ColonStart.php', - 'Egulias\\EmailValidator\\Warning\\IPV6Deprecated' => __DIR__ . '/..' . '/egulias/email-validator/src/Warning/IPV6Deprecated.php', - 'Egulias\\EmailValidator\\Warning\\IPV6DoubleColon' => __DIR__ . '/..' . '/egulias/email-validator/src/Warning/IPV6DoubleColon.php', - 'Egulias\\EmailValidator\\Warning\\IPV6GroupCount' => __DIR__ . '/..' . '/egulias/email-validator/src/Warning/IPV6GroupCount.php', - 'Egulias\\EmailValidator\\Warning\\IPV6MaxGroups' => __DIR__ . '/..' . '/egulias/email-validator/src/Warning/IPV6MaxGroups.php', - 'Egulias\\EmailValidator\\Warning\\LocalTooLong' => __DIR__ . '/..' . '/egulias/email-validator/src/Warning/LocalTooLong.php', - 'Egulias\\EmailValidator\\Warning\\NoDNSMXRecord' => __DIR__ . '/..' . '/egulias/email-validator/src/Warning/NoDNSMXRecord.php', - 'Egulias\\EmailValidator\\Warning\\ObsoleteDTEXT' => __DIR__ . '/..' . '/egulias/email-validator/src/Warning/ObsoleteDTEXT.php', - 'Egulias\\EmailValidator\\Warning\\QuotedPart' => __DIR__ . '/..' . '/egulias/email-validator/src/Warning/QuotedPart.php', - 'Egulias\\EmailValidator\\Warning\\QuotedString' => __DIR__ . '/..' . '/egulias/email-validator/src/Warning/QuotedString.php', - 'Egulias\\EmailValidator\\Warning\\TLD' => __DIR__ . '/..' . '/egulias/email-validator/src/Warning/TLD.php', - 'Egulias\\EmailValidator\\Warning\\Warning' => __DIR__ . '/..' . '/egulias/email-validator/src/Warning/Warning.php', - 'ExpenseAccountSeeder' => __DIR__ . '/../..' . '/database/seeders/ExpenseAccountSeeder.php', - 'Faker\\Calculator\\Ean' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Calculator/Ean.php', - 'Faker\\Calculator\\Iban' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Calculator/Iban.php', - 'Faker\\Calculator\\Inn' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Calculator/Inn.php', - 'Faker\\Calculator\\Isbn' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Calculator/Isbn.php', - 'Faker\\Calculator\\Luhn' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Calculator/Luhn.php', - 'Faker\\Calculator\\TCNo' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Calculator/TCNo.php', - 'Faker\\ChanceGenerator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ChanceGenerator.php', - 'Faker\\Container\\Container' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Container/Container.php', - 'Faker\\Container\\ContainerBuilder' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Container/ContainerBuilder.php', - 'Faker\\Container\\ContainerException' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Container/ContainerException.php', - 'Faker\\Container\\ContainerInterface' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Container/ContainerInterface.php', - 'Faker\\Container\\NotInContainerException' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Container/NotInContainerException.php', - 'Faker\\Core\\Barcode' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Core/Barcode.php', - 'Faker\\Core\\Blood' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Core/Blood.php', - 'Faker\\Core\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Core/Color.php', - 'Faker\\Core\\Coordinates' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Core/Coordinates.php', - 'Faker\\Core\\DateTime' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Core/DateTime.php', - 'Faker\\Core\\File' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Core/File.php', - 'Faker\\Core\\Number' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Core/Number.php', - 'Faker\\Core\\Uuid' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Core/Uuid.php', - 'Faker\\Core\\Version' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Core/Version.php', - 'Faker\\DefaultGenerator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/DefaultGenerator.php', - 'Faker\\Documentor' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Documentor.php', - 'Faker\\Extension\\AddressExtension' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/AddressExtension.php', - 'Faker\\Extension\\BarcodeExtension' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/BarcodeExtension.php', - 'Faker\\Extension\\BloodExtension' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/BloodExtension.php', - 'Faker\\Extension\\ColorExtension' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/ColorExtension.php', - 'Faker\\Extension\\CompanyExtension' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/CompanyExtension.php', - 'Faker\\Extension\\CountryExtension' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/CountryExtension.php', - 'Faker\\Extension\\DateTimeExtension' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/DateTimeExtension.php', - 'Faker\\Extension\\Extension' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/Extension.php', - 'Faker\\Extension\\ExtensionNotFound' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/ExtensionNotFound.php', - 'Faker\\Extension\\FileExtension' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/FileExtension.php', - 'Faker\\Extension\\GeneratorAwareExtension' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/GeneratorAwareExtension.php', - 'Faker\\Extension\\GeneratorAwareExtensionTrait' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/GeneratorAwareExtensionTrait.php', - 'Faker\\Extension\\Helper' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/Helper.php', - 'Faker\\Extension\\NumberExtension' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/NumberExtension.php', - 'Faker\\Extension\\PersonExtension' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/PersonExtension.php', - 'Faker\\Extension\\PhoneNumberExtension' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/PhoneNumberExtension.php', - 'Faker\\Extension\\UuidExtension' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/UuidExtension.php', - 'Faker\\Extension\\VersionExtension' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/VersionExtension.php', - 'Faker\\Factory' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Factory.php', - 'Faker\\Generator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Generator.php', - 'Faker\\Guesser\\Name' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Guesser/Name.php', - 'Faker\\ORM\\CakePHP\\ColumnTypeGuesser' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/CakePHP/ColumnTypeGuesser.php', - 'Faker\\ORM\\CakePHP\\EntityPopulator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/CakePHP/EntityPopulator.php', - 'Faker\\ORM\\CakePHP\\Populator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/CakePHP/Populator.php', - 'Faker\\ORM\\Doctrine\\ColumnTypeGuesser' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/Doctrine/ColumnTypeGuesser.php', - 'Faker\\ORM\\Doctrine\\EntityPopulator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/Doctrine/EntityPopulator.php', - 'Faker\\ORM\\Doctrine\\Populator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/Doctrine/Populator.php', - 'Faker\\ORM\\Mandango\\ColumnTypeGuesser' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/Mandango/ColumnTypeGuesser.php', - 'Faker\\ORM\\Mandango\\EntityPopulator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/Mandango/EntityPopulator.php', - 'Faker\\ORM\\Mandango\\Populator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/Mandango/Populator.php', - 'Faker\\ORM\\Propel2\\ColumnTypeGuesser' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/Propel2/ColumnTypeGuesser.php', - 'Faker\\ORM\\Propel2\\EntityPopulator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/Propel2/EntityPopulator.php', - 'Faker\\ORM\\Propel2\\Populator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/Propel2/Populator.php', - 'Faker\\ORM\\Propel\\ColumnTypeGuesser' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/Propel/ColumnTypeGuesser.php', - 'Faker\\ORM\\Propel\\EntityPopulator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/Propel/EntityPopulator.php', - 'Faker\\ORM\\Propel\\Populator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/Propel/Populator.php', - 'Faker\\ORM\\Spot\\ColumnTypeGuesser' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/Spot/ColumnTypeGuesser.php', - 'Faker\\ORM\\Spot\\EntityPopulator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/Spot/EntityPopulator.php', - 'Faker\\ORM\\Spot\\Populator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/Spot/Populator.php', - 'Faker\\Provider\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/Address.php', - 'Faker\\Provider\\Barcode' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/Barcode.php', - 'Faker\\Provider\\Base' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/Base.php', - 'Faker\\Provider\\Biased' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/Biased.php', - 'Faker\\Provider\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/Color.php', - 'Faker\\Provider\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/Company.php', - 'Faker\\Provider\\DateTime' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/DateTime.php', - 'Faker\\Provider\\File' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/File.php', - 'Faker\\Provider\\HtmlLorem' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/HtmlLorem.php', - 'Faker\\Provider\\Image' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/Image.php', - 'Faker\\Provider\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/Internet.php', - 'Faker\\Provider\\Lorem' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/Lorem.php', - 'Faker\\Provider\\Medical' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/Medical.php', - 'Faker\\Provider\\Miscellaneous' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/Miscellaneous.php', - 'Faker\\Provider\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/Payment.php', - 'Faker\\Provider\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/Person.php', - 'Faker\\Provider\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/PhoneNumber.php', - 'Faker\\Provider\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/Text.php', - 'Faker\\Provider\\UserAgent' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/UserAgent.php', - 'Faker\\Provider\\Uuid' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/Uuid.php', - 'Faker\\Provider\\ar_EG\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_EG/Address.php', - 'Faker\\Provider\\ar_EG\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_EG/Color.php', - 'Faker\\Provider\\ar_EG\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_EG/Company.php', - 'Faker\\Provider\\ar_EG\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_EG/Internet.php', - 'Faker\\Provider\\ar_EG\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_EG/Payment.php', - 'Faker\\Provider\\ar_EG\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_EG/Person.php', - 'Faker\\Provider\\ar_EG\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_EG/Text.php', - 'Faker\\Provider\\ar_JO\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_JO/Address.php', - 'Faker\\Provider\\ar_JO\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_JO/Company.php', - 'Faker\\Provider\\ar_JO\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_JO/Internet.php', - 'Faker\\Provider\\ar_JO\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_JO/Person.php', - 'Faker\\Provider\\ar_JO\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_JO/Text.php', - 'Faker\\Provider\\ar_SA\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_SA/Address.php', - 'Faker\\Provider\\ar_SA\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_SA/Color.php', - 'Faker\\Provider\\ar_SA\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_SA/Company.php', - 'Faker\\Provider\\ar_SA\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_SA/Internet.php', - 'Faker\\Provider\\ar_SA\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_SA/Payment.php', - 'Faker\\Provider\\ar_SA\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_SA/Person.php', - 'Faker\\Provider\\ar_SA\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_SA/Text.php', - 'Faker\\Provider\\at_AT\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/at_AT/Payment.php', - 'Faker\\Provider\\bg_BG\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/bg_BG/Internet.php', - 'Faker\\Provider\\bg_BG\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/bg_BG/Payment.php', - 'Faker\\Provider\\bg_BG\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/bg_BG/Person.php', - 'Faker\\Provider\\bg_BG\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/bg_BG/PhoneNumber.php', - 'Faker\\Provider\\bn_BD\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/bn_BD/Address.php', - 'Faker\\Provider\\bn_BD\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/bn_BD/Company.php', - 'Faker\\Provider\\bn_BD\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/bn_BD/Person.php', - 'Faker\\Provider\\bn_BD\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/bn_BD/PhoneNumber.php', - 'Faker\\Provider\\bn_BD\\Utils' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/bn_BD/Utils.php', - 'Faker\\Provider\\cs_CZ\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/cs_CZ/Address.php', - 'Faker\\Provider\\cs_CZ\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/cs_CZ/Company.php', - 'Faker\\Provider\\cs_CZ\\DateTime' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/cs_CZ/DateTime.php', - 'Faker\\Provider\\cs_CZ\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/cs_CZ/Internet.php', - 'Faker\\Provider\\cs_CZ\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/cs_CZ/Payment.php', - 'Faker\\Provider\\cs_CZ\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/cs_CZ/Person.php', - 'Faker\\Provider\\cs_CZ\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/cs_CZ/PhoneNumber.php', - 'Faker\\Provider\\cs_CZ\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/cs_CZ/Text.php', - 'Faker\\Provider\\da_DK\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/da_DK/Address.php', - 'Faker\\Provider\\da_DK\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/da_DK/Company.php', - 'Faker\\Provider\\da_DK\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/da_DK/Internet.php', - 'Faker\\Provider\\da_DK\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/da_DK/Payment.php', - 'Faker\\Provider\\da_DK\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/da_DK/Person.php', - 'Faker\\Provider\\da_DK\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/da_DK/PhoneNumber.php', - 'Faker\\Provider\\de_AT\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_AT/Address.php', - 'Faker\\Provider\\de_AT\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_AT/Company.php', - 'Faker\\Provider\\de_AT\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_AT/Internet.php', - 'Faker\\Provider\\de_AT\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_AT/Payment.php', - 'Faker\\Provider\\de_AT\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_AT/Person.php', - 'Faker\\Provider\\de_AT\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_AT/PhoneNumber.php', - 'Faker\\Provider\\de_AT\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_AT/Text.php', - 'Faker\\Provider\\de_CH\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_CH/Address.php', - 'Faker\\Provider\\de_CH\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_CH/Company.php', - 'Faker\\Provider\\de_CH\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_CH/Internet.php', - 'Faker\\Provider\\de_CH\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_CH/Payment.php', - 'Faker\\Provider\\de_CH\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_CH/Person.php', - 'Faker\\Provider\\de_CH\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_CH/PhoneNumber.php', - 'Faker\\Provider\\de_CH\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_CH/Text.php', - 'Faker\\Provider\\de_DE\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_DE/Address.php', - 'Faker\\Provider\\de_DE\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_DE/Company.php', - 'Faker\\Provider\\de_DE\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_DE/Internet.php', - 'Faker\\Provider\\de_DE\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_DE/Payment.php', - 'Faker\\Provider\\de_DE\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_DE/Person.php', - 'Faker\\Provider\\de_DE\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_DE/PhoneNumber.php', - 'Faker\\Provider\\de_DE\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_DE/Text.php', - 'Faker\\Provider\\el_CY\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/el_CY/Address.php', - 'Faker\\Provider\\el_CY\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/el_CY/Company.php', - 'Faker\\Provider\\el_CY\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/el_CY/Internet.php', - 'Faker\\Provider\\el_CY\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/el_CY/Payment.php', - 'Faker\\Provider\\el_CY\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/el_CY/Person.php', - 'Faker\\Provider\\el_CY\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/el_CY/PhoneNumber.php', - 'Faker\\Provider\\el_GR\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/el_GR/Address.php', - 'Faker\\Provider\\el_GR\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/el_GR/Company.php', - 'Faker\\Provider\\el_GR\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/el_GR/Payment.php', - 'Faker\\Provider\\el_GR\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/el_GR/Person.php', - 'Faker\\Provider\\el_GR\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/el_GR/PhoneNumber.php', - 'Faker\\Provider\\el_GR\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/el_GR/Text.php', - 'Faker\\Provider\\en_AU\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_AU/Address.php', - 'Faker\\Provider\\en_AU\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_AU/Internet.php', - 'Faker\\Provider\\en_AU\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_AU/PhoneNumber.php', - 'Faker\\Provider\\en_CA\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_CA/Address.php', - 'Faker\\Provider\\en_CA\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_CA/PhoneNumber.php', - 'Faker\\Provider\\en_GB\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_GB/Address.php', - 'Faker\\Provider\\en_GB\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_GB/Company.php', - 'Faker\\Provider\\en_GB\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_GB/Internet.php', - 'Faker\\Provider\\en_GB\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_GB/Payment.php', - 'Faker\\Provider\\en_GB\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_GB/Person.php', - 'Faker\\Provider\\en_GB\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_GB/PhoneNumber.php', - 'Faker\\Provider\\en_HK\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_HK/Address.php', - 'Faker\\Provider\\en_HK\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_HK/Internet.php', - 'Faker\\Provider\\en_HK\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_HK/PhoneNumber.php', - 'Faker\\Provider\\en_IN\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_IN/Address.php', - 'Faker\\Provider\\en_IN\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_IN/Internet.php', - 'Faker\\Provider\\en_IN\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_IN/Person.php', - 'Faker\\Provider\\en_IN\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_IN/PhoneNumber.php', - 'Faker\\Provider\\en_NG\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_NG/Address.php', - 'Faker\\Provider\\en_NG\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_NG/Internet.php', - 'Faker\\Provider\\en_NG\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_NG/Person.php', - 'Faker\\Provider\\en_NG\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_NG/PhoneNumber.php', - 'Faker\\Provider\\en_NZ\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_NZ/Address.php', - 'Faker\\Provider\\en_NZ\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_NZ/Internet.php', - 'Faker\\Provider\\en_NZ\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_NZ/PhoneNumber.php', - 'Faker\\Provider\\en_PH\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_PH/Address.php', - 'Faker\\Provider\\en_PH\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_PH/PhoneNumber.php', - 'Faker\\Provider\\en_SG\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_SG/Address.php', - 'Faker\\Provider\\en_SG\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_SG/Person.php', - 'Faker\\Provider\\en_SG\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_SG/PhoneNumber.php', - 'Faker\\Provider\\en_UG\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_UG/Address.php', - 'Faker\\Provider\\en_UG\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_UG/Internet.php', - 'Faker\\Provider\\en_UG\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_UG/Person.php', - 'Faker\\Provider\\en_UG\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_UG/PhoneNumber.php', - 'Faker\\Provider\\en_US\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_US/Address.php', - 'Faker\\Provider\\en_US\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_US/Company.php', - 'Faker\\Provider\\en_US\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_US/Payment.php', - 'Faker\\Provider\\en_US\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_US/Person.php', - 'Faker\\Provider\\en_US\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_US/PhoneNumber.php', - 'Faker\\Provider\\en_US\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_US/Text.php', - 'Faker\\Provider\\en_ZA\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_ZA/Address.php', - 'Faker\\Provider\\en_ZA\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_ZA/Company.php', - 'Faker\\Provider\\en_ZA\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_ZA/Internet.php', - 'Faker\\Provider\\en_ZA\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_ZA/Person.php', - 'Faker\\Provider\\en_ZA\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_ZA/PhoneNumber.php', - 'Faker\\Provider\\es_AR\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_AR/Address.php', - 'Faker\\Provider\\es_AR\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_AR/Company.php', - 'Faker\\Provider\\es_AR\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_AR/Person.php', - 'Faker\\Provider\\es_AR\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_AR/PhoneNumber.php', - 'Faker\\Provider\\es_ES\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_ES/Address.php', - 'Faker\\Provider\\es_ES\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_ES/Color.php', - 'Faker\\Provider\\es_ES\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_ES/Company.php', - 'Faker\\Provider\\es_ES\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_ES/Internet.php', - 'Faker\\Provider\\es_ES\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_ES/Payment.php', - 'Faker\\Provider\\es_ES\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_ES/Person.php', - 'Faker\\Provider\\es_ES\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_ES/PhoneNumber.php', - 'Faker\\Provider\\es_ES\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_ES/Text.php', - 'Faker\\Provider\\es_PE\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_PE/Address.php', - 'Faker\\Provider\\es_PE\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_PE/Company.php', - 'Faker\\Provider\\es_PE\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_PE/Person.php', - 'Faker\\Provider\\es_PE\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_PE/PhoneNumber.php', - 'Faker\\Provider\\es_VE\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_VE/Address.php', - 'Faker\\Provider\\es_VE\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_VE/Company.php', - 'Faker\\Provider\\es_VE\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_VE/Internet.php', - 'Faker\\Provider\\es_VE\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_VE/Person.php', - 'Faker\\Provider\\es_VE\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_VE/PhoneNumber.php', - 'Faker\\Provider\\et_EE\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/et_EE/Person.php', - 'Faker\\Provider\\fa_IR\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fa_IR/Address.php', - 'Faker\\Provider\\fa_IR\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fa_IR/Company.php', - 'Faker\\Provider\\fa_IR\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fa_IR/Internet.php', - 'Faker\\Provider\\fa_IR\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fa_IR/Person.php', - 'Faker\\Provider\\fa_IR\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fa_IR/PhoneNumber.php', - 'Faker\\Provider\\fa_IR\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fa_IR/Text.php', - 'Faker\\Provider\\fi_FI\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fi_FI/Address.php', - 'Faker\\Provider\\fi_FI\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fi_FI/Company.php', - 'Faker\\Provider\\fi_FI\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fi_FI/Internet.php', - 'Faker\\Provider\\fi_FI\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fi_FI/Payment.php', - 'Faker\\Provider\\fi_FI\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fi_FI/Person.php', - 'Faker\\Provider\\fi_FI\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fi_FI/PhoneNumber.php', - 'Faker\\Provider\\fr_BE\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_BE/Address.php', - 'Faker\\Provider\\fr_BE\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_BE/Color.php', - 'Faker\\Provider\\fr_BE\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_BE/Company.php', - 'Faker\\Provider\\fr_BE\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_BE/Internet.php', - 'Faker\\Provider\\fr_BE\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_BE/Payment.php', - 'Faker\\Provider\\fr_BE\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_BE/Person.php', - 'Faker\\Provider\\fr_BE\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_BE/PhoneNumber.php', - 'Faker\\Provider\\fr_CA\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_CA/Address.php', - 'Faker\\Provider\\fr_CA\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_CA/Color.php', - 'Faker\\Provider\\fr_CA\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_CA/Company.php', - 'Faker\\Provider\\fr_CA\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_CA/Person.php', - 'Faker\\Provider\\fr_CA\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_CA/Text.php', - 'Faker\\Provider\\fr_CH\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_CH/Address.php', - 'Faker\\Provider\\fr_CH\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_CH/Color.php', - 'Faker\\Provider\\fr_CH\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_CH/Company.php', - 'Faker\\Provider\\fr_CH\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_CH/Internet.php', - 'Faker\\Provider\\fr_CH\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_CH/Payment.php', - 'Faker\\Provider\\fr_CH\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_CH/Person.php', - 'Faker\\Provider\\fr_CH\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_CH/PhoneNumber.php', - 'Faker\\Provider\\fr_CH\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_CH/Text.php', - 'Faker\\Provider\\fr_FR\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_FR/Address.php', - 'Faker\\Provider\\fr_FR\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_FR/Color.php', - 'Faker\\Provider\\fr_FR\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_FR/Company.php', - 'Faker\\Provider\\fr_FR\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_FR/Internet.php', - 'Faker\\Provider\\fr_FR\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_FR/Payment.php', - 'Faker\\Provider\\fr_FR\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_FR/Person.php', - 'Faker\\Provider\\fr_FR\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_FR/PhoneNumber.php', - 'Faker\\Provider\\fr_FR\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_FR/Text.php', - 'Faker\\Provider\\he_IL\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/he_IL/Address.php', - 'Faker\\Provider\\he_IL\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/he_IL/Company.php', - 'Faker\\Provider\\he_IL\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/he_IL/Payment.php', - 'Faker\\Provider\\he_IL\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/he_IL/Person.php', - 'Faker\\Provider\\he_IL\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/he_IL/PhoneNumber.php', - 'Faker\\Provider\\hr_HR\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/hr_HR/Address.php', - 'Faker\\Provider\\hr_HR\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/hr_HR/Company.php', - 'Faker\\Provider\\hr_HR\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/hr_HR/Payment.php', - 'Faker\\Provider\\hr_HR\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/hr_HR/Person.php', - 'Faker\\Provider\\hr_HR\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/hr_HR/PhoneNumber.php', - 'Faker\\Provider\\hu_HU\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/hu_HU/Address.php', - 'Faker\\Provider\\hu_HU\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/hu_HU/Company.php', - 'Faker\\Provider\\hu_HU\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/hu_HU/Payment.php', - 'Faker\\Provider\\hu_HU\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/hu_HU/Person.php', - 'Faker\\Provider\\hu_HU\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/hu_HU/PhoneNumber.php', - 'Faker\\Provider\\hu_HU\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/hu_HU/Text.php', - 'Faker\\Provider\\hy_AM\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/hy_AM/Address.php', - 'Faker\\Provider\\hy_AM\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/hy_AM/Color.php', - 'Faker\\Provider\\hy_AM\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/hy_AM/Company.php', - 'Faker\\Provider\\hy_AM\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/hy_AM/Internet.php', - 'Faker\\Provider\\hy_AM\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/hy_AM/Person.php', - 'Faker\\Provider\\hy_AM\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/hy_AM/PhoneNumber.php', - 'Faker\\Provider\\id_ID\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/id_ID/Address.php', - 'Faker\\Provider\\id_ID\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/id_ID/Color.php', - 'Faker\\Provider\\id_ID\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/id_ID/Company.php', - 'Faker\\Provider\\id_ID\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/id_ID/Internet.php', - 'Faker\\Provider\\id_ID\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/id_ID/Person.php', - 'Faker\\Provider\\id_ID\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/id_ID/PhoneNumber.php', - 'Faker\\Provider\\is_IS\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/is_IS/Address.php', - 'Faker\\Provider\\is_IS\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/is_IS/Company.php', - 'Faker\\Provider\\is_IS\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/is_IS/Internet.php', - 'Faker\\Provider\\is_IS\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/is_IS/Payment.php', - 'Faker\\Provider\\is_IS\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/is_IS/Person.php', - 'Faker\\Provider\\is_IS\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/is_IS/PhoneNumber.php', - 'Faker\\Provider\\it_CH\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/it_CH/Address.php', - 'Faker\\Provider\\it_CH\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/it_CH/Company.php', - 'Faker\\Provider\\it_CH\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/it_CH/Internet.php', - 'Faker\\Provider\\it_CH\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/it_CH/Payment.php', - 'Faker\\Provider\\it_CH\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/it_CH/Person.php', - 'Faker\\Provider\\it_CH\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/it_CH/PhoneNumber.php', - 'Faker\\Provider\\it_CH\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/it_CH/Text.php', - 'Faker\\Provider\\it_IT\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/it_IT/Address.php', - 'Faker\\Provider\\it_IT\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/it_IT/Company.php', - 'Faker\\Provider\\it_IT\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/it_IT/Internet.php', - 'Faker\\Provider\\it_IT\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/it_IT/Payment.php', - 'Faker\\Provider\\it_IT\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/it_IT/Person.php', - 'Faker\\Provider\\it_IT\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/it_IT/PhoneNumber.php', - 'Faker\\Provider\\it_IT\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/it_IT/Text.php', - 'Faker\\Provider\\ja_JP\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ja_JP/Address.php', - 'Faker\\Provider\\ja_JP\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ja_JP/Company.php', - 'Faker\\Provider\\ja_JP\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ja_JP/Internet.php', - 'Faker\\Provider\\ja_JP\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ja_JP/Person.php', - 'Faker\\Provider\\ja_JP\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ja_JP/PhoneNumber.php', - 'Faker\\Provider\\ja_JP\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ja_JP/Text.php', - 'Faker\\Provider\\ka_GE\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ka_GE/Address.php', - 'Faker\\Provider\\ka_GE\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ka_GE/Color.php', - 'Faker\\Provider\\ka_GE\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ka_GE/Company.php', - 'Faker\\Provider\\ka_GE\\DateTime' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ka_GE/DateTime.php', - 'Faker\\Provider\\ka_GE\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ka_GE/Internet.php', - 'Faker\\Provider\\ka_GE\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ka_GE/Payment.php', - 'Faker\\Provider\\ka_GE\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ka_GE/Person.php', - 'Faker\\Provider\\ka_GE\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ka_GE/PhoneNumber.php', - 'Faker\\Provider\\ka_GE\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ka_GE/Text.php', - 'Faker\\Provider\\kk_KZ\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/kk_KZ/Address.php', - 'Faker\\Provider\\kk_KZ\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/kk_KZ/Color.php', - 'Faker\\Provider\\kk_KZ\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/kk_KZ/Company.php', - 'Faker\\Provider\\kk_KZ\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/kk_KZ/Internet.php', - 'Faker\\Provider\\kk_KZ\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/kk_KZ/Payment.php', - 'Faker\\Provider\\kk_KZ\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/kk_KZ/Person.php', - 'Faker\\Provider\\kk_KZ\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/kk_KZ/PhoneNumber.php', - 'Faker\\Provider\\kk_KZ\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/kk_KZ/Text.php', - 'Faker\\Provider\\ko_KR\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ko_KR/Address.php', - 'Faker\\Provider\\ko_KR\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ko_KR/Company.php', - 'Faker\\Provider\\ko_KR\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ko_KR/Internet.php', - 'Faker\\Provider\\ko_KR\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ko_KR/Person.php', - 'Faker\\Provider\\ko_KR\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ko_KR/PhoneNumber.php', - 'Faker\\Provider\\ko_KR\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ko_KR/Text.php', - 'Faker\\Provider\\lt_LT\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/lt_LT/Address.php', - 'Faker\\Provider\\lt_LT\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/lt_LT/Company.php', - 'Faker\\Provider\\lt_LT\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/lt_LT/Internet.php', - 'Faker\\Provider\\lt_LT\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/lt_LT/Payment.php', - 'Faker\\Provider\\lt_LT\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/lt_LT/Person.php', - 'Faker\\Provider\\lt_LT\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/lt_LT/PhoneNumber.php', - 'Faker\\Provider\\lv_LV\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/lv_LV/Address.php', - 'Faker\\Provider\\lv_LV\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/lv_LV/Color.php', - 'Faker\\Provider\\lv_LV\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/lv_LV/Internet.php', - 'Faker\\Provider\\lv_LV\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/lv_LV/Payment.php', - 'Faker\\Provider\\lv_LV\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/lv_LV/Person.php', - 'Faker\\Provider\\lv_LV\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/lv_LV/PhoneNumber.php', - 'Faker\\Provider\\me_ME\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/me_ME/Address.php', - 'Faker\\Provider\\me_ME\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/me_ME/Company.php', - 'Faker\\Provider\\me_ME\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/me_ME/Payment.php', - 'Faker\\Provider\\me_ME\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/me_ME/Person.php', - 'Faker\\Provider\\me_ME\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/me_ME/PhoneNumber.php', - 'Faker\\Provider\\mn_MN\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/mn_MN/Person.php', - 'Faker\\Provider\\mn_MN\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/mn_MN/PhoneNumber.php', - 'Faker\\Provider\\ms_MY\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ms_MY/Address.php', - 'Faker\\Provider\\ms_MY\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ms_MY/Company.php', - 'Faker\\Provider\\ms_MY\\Miscellaneous' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ms_MY/Miscellaneous.php', - 'Faker\\Provider\\ms_MY\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ms_MY/Payment.php', - 'Faker\\Provider\\ms_MY\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ms_MY/Person.php', - 'Faker\\Provider\\ms_MY\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ms_MY/PhoneNumber.php', - 'Faker\\Provider\\nb_NO\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nb_NO/Address.php', - 'Faker\\Provider\\nb_NO\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nb_NO/Company.php', - 'Faker\\Provider\\nb_NO\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nb_NO/Payment.php', - 'Faker\\Provider\\nb_NO\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nb_NO/Person.php', - 'Faker\\Provider\\nb_NO\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nb_NO/PhoneNumber.php', - 'Faker\\Provider\\ne_NP\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ne_NP/Address.php', - 'Faker\\Provider\\ne_NP\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ne_NP/Internet.php', - 'Faker\\Provider\\ne_NP\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ne_NP/Payment.php', - 'Faker\\Provider\\ne_NP\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ne_NP/Person.php', - 'Faker\\Provider\\ne_NP\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ne_NP/PhoneNumber.php', - 'Faker\\Provider\\nl_BE\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nl_BE/Address.php', - 'Faker\\Provider\\nl_BE\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nl_BE/Company.php', - 'Faker\\Provider\\nl_BE\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nl_BE/Internet.php', - 'Faker\\Provider\\nl_BE\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nl_BE/Payment.php', - 'Faker\\Provider\\nl_BE\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nl_BE/Person.php', - 'Faker\\Provider\\nl_BE\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nl_BE/PhoneNumber.php', - 'Faker\\Provider\\nl_BE\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nl_BE/Text.php', - 'Faker\\Provider\\nl_NL\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nl_NL/Address.php', - 'Faker\\Provider\\nl_NL\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nl_NL/Color.php', - 'Faker\\Provider\\nl_NL\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nl_NL/Company.php', - 'Faker\\Provider\\nl_NL\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nl_NL/Internet.php', - 'Faker\\Provider\\nl_NL\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nl_NL/Payment.php', - 'Faker\\Provider\\nl_NL\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nl_NL/Person.php', - 'Faker\\Provider\\nl_NL\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nl_NL/PhoneNumber.php', - 'Faker\\Provider\\nl_NL\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nl_NL/Text.php', - 'Faker\\Provider\\pl_PL\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pl_PL/Address.php', - 'Faker\\Provider\\pl_PL\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pl_PL/Color.php', - 'Faker\\Provider\\pl_PL\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pl_PL/Company.php', - 'Faker\\Provider\\pl_PL\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pl_PL/Internet.php', - 'Faker\\Provider\\pl_PL\\LicensePlate' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pl_PL/LicensePlate.php', - 'Faker\\Provider\\pl_PL\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pl_PL/Payment.php', - 'Faker\\Provider\\pl_PL\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pl_PL/Person.php', - 'Faker\\Provider\\pl_PL\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pl_PL/PhoneNumber.php', - 'Faker\\Provider\\pl_PL\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pl_PL/Text.php', - 'Faker\\Provider\\pt_BR\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pt_BR/Address.php', - 'Faker\\Provider\\pt_BR\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pt_BR/Company.php', - 'Faker\\Provider\\pt_BR\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pt_BR/Internet.php', - 'Faker\\Provider\\pt_BR\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pt_BR/Payment.php', - 'Faker\\Provider\\pt_BR\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pt_BR/Person.php', - 'Faker\\Provider\\pt_BR\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pt_BR/PhoneNumber.php', - 'Faker\\Provider\\pt_BR\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pt_BR/Text.php', - 'Faker\\Provider\\pt_PT\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pt_PT/Address.php', - 'Faker\\Provider\\pt_PT\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pt_PT/Company.php', - 'Faker\\Provider\\pt_PT\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pt_PT/Internet.php', - 'Faker\\Provider\\pt_PT\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pt_PT/Payment.php', - 'Faker\\Provider\\pt_PT\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pt_PT/Person.php', - 'Faker\\Provider\\pt_PT\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pt_PT/PhoneNumber.php', - 'Faker\\Provider\\ro_MD\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ro_MD/Address.php', - 'Faker\\Provider\\ro_MD\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ro_MD/Payment.php', - 'Faker\\Provider\\ro_MD\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ro_MD/Person.php', - 'Faker\\Provider\\ro_MD\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ro_MD/PhoneNumber.php', - 'Faker\\Provider\\ro_MD\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ro_MD/Text.php', - 'Faker\\Provider\\ro_RO\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ro_RO/Address.php', - 'Faker\\Provider\\ro_RO\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ro_RO/Payment.php', - 'Faker\\Provider\\ro_RO\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ro_RO/Person.php', - 'Faker\\Provider\\ro_RO\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ro_RO/PhoneNumber.php', - 'Faker\\Provider\\ro_RO\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ro_RO/Text.php', - 'Faker\\Provider\\ru_RU\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ru_RU/Address.php', - 'Faker\\Provider\\ru_RU\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ru_RU/Color.php', - 'Faker\\Provider\\ru_RU\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ru_RU/Company.php', - 'Faker\\Provider\\ru_RU\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ru_RU/Internet.php', - 'Faker\\Provider\\ru_RU\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ru_RU/Payment.php', - 'Faker\\Provider\\ru_RU\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ru_RU/Person.php', - 'Faker\\Provider\\ru_RU\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ru_RU/PhoneNumber.php', - 'Faker\\Provider\\ru_RU\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ru_RU/Text.php', - 'Faker\\Provider\\sk_SK\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sk_SK/Address.php', - 'Faker\\Provider\\sk_SK\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sk_SK/Company.php', - 'Faker\\Provider\\sk_SK\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sk_SK/Internet.php', - 'Faker\\Provider\\sk_SK\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sk_SK/Payment.php', - 'Faker\\Provider\\sk_SK\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sk_SK/Person.php', - 'Faker\\Provider\\sk_SK\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sk_SK/PhoneNumber.php', - 'Faker\\Provider\\sl_SI\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sl_SI/Address.php', - 'Faker\\Provider\\sl_SI\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sl_SI/Company.php', - 'Faker\\Provider\\sl_SI\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sl_SI/Internet.php', - 'Faker\\Provider\\sl_SI\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sl_SI/Payment.php', - 'Faker\\Provider\\sl_SI\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sl_SI/Person.php', - 'Faker\\Provider\\sl_SI\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sl_SI/PhoneNumber.php', - 'Faker\\Provider\\sr_Cyrl_RS\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sr_Cyrl_RS/Address.php', - 'Faker\\Provider\\sr_Cyrl_RS\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sr_Cyrl_RS/Payment.php', - 'Faker\\Provider\\sr_Cyrl_RS\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sr_Cyrl_RS/Person.php', - 'Faker\\Provider\\sr_Latn_RS\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sr_Latn_RS/Address.php', - 'Faker\\Provider\\sr_Latn_RS\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sr_Latn_RS/Payment.php', - 'Faker\\Provider\\sr_Latn_RS\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sr_Latn_RS/Person.php', - 'Faker\\Provider\\sr_RS\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sr_RS/Address.php', - 'Faker\\Provider\\sr_RS\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sr_RS/Payment.php', - 'Faker\\Provider\\sr_RS\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sr_RS/Person.php', - 'Faker\\Provider\\sv_SE\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sv_SE/Address.php', - 'Faker\\Provider\\sv_SE\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sv_SE/Company.php', - 'Faker\\Provider\\sv_SE\\Municipality' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sv_SE/Municipality.php', - 'Faker\\Provider\\sv_SE\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sv_SE/Payment.php', - 'Faker\\Provider\\sv_SE\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sv_SE/Person.php', - 'Faker\\Provider\\sv_SE\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sv_SE/PhoneNumber.php', - 'Faker\\Provider\\th_TH\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/th_TH/Address.php', - 'Faker\\Provider\\th_TH\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/th_TH/Color.php', - 'Faker\\Provider\\th_TH\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/th_TH/Company.php', - 'Faker\\Provider\\th_TH\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/th_TH/Internet.php', - 'Faker\\Provider\\th_TH\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/th_TH/Payment.php', - 'Faker\\Provider\\th_TH\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/th_TH/Person.php', - 'Faker\\Provider\\th_TH\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/th_TH/PhoneNumber.php', - 'Faker\\Provider\\tr_TR\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/tr_TR/Address.php', - 'Faker\\Provider\\tr_TR\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/tr_TR/Color.php', - 'Faker\\Provider\\tr_TR\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/tr_TR/Company.php', - 'Faker\\Provider\\tr_TR\\DateTime' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/tr_TR/DateTime.php', - 'Faker\\Provider\\tr_TR\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/tr_TR/Internet.php', - 'Faker\\Provider\\tr_TR\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/tr_TR/Payment.php', - 'Faker\\Provider\\tr_TR\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/tr_TR/Person.php', - 'Faker\\Provider\\tr_TR\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/tr_TR/PhoneNumber.php', - 'Faker\\Provider\\uk_UA\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/uk_UA/Address.php', - 'Faker\\Provider\\uk_UA\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/uk_UA/Color.php', - 'Faker\\Provider\\uk_UA\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/uk_UA/Company.php', - 'Faker\\Provider\\uk_UA\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/uk_UA/Internet.php', - 'Faker\\Provider\\uk_UA\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/uk_UA/Payment.php', - 'Faker\\Provider\\uk_UA\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/uk_UA/Person.php', - 'Faker\\Provider\\uk_UA\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/uk_UA/PhoneNumber.php', - 'Faker\\Provider\\uk_UA\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/uk_UA/Text.php', - 'Faker\\Provider\\vi_VN\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/vi_VN/Address.php', - 'Faker\\Provider\\vi_VN\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/vi_VN/Color.php', - 'Faker\\Provider\\vi_VN\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/vi_VN/Internet.php', - 'Faker\\Provider\\vi_VN\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/vi_VN/Person.php', - 'Faker\\Provider\\vi_VN\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/vi_VN/PhoneNumber.php', - 'Faker\\Provider\\zh_CN\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_CN/Address.php', - 'Faker\\Provider\\zh_CN\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_CN/Color.php', - 'Faker\\Provider\\zh_CN\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_CN/Company.php', - 'Faker\\Provider\\zh_CN\\DateTime' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_CN/DateTime.php', - 'Faker\\Provider\\zh_CN\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_CN/Internet.php', - 'Faker\\Provider\\zh_CN\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_CN/Payment.php', - 'Faker\\Provider\\zh_CN\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_CN/Person.php', - 'Faker\\Provider\\zh_CN\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_CN/PhoneNumber.php', - 'Faker\\Provider\\zh_TW\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_TW/Address.php', - 'Faker\\Provider\\zh_TW\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_TW/Color.php', - 'Faker\\Provider\\zh_TW\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_TW/Company.php', - 'Faker\\Provider\\zh_TW\\DateTime' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_TW/DateTime.php', - 'Faker\\Provider\\zh_TW\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_TW/Internet.php', - 'Faker\\Provider\\zh_TW\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_TW/Payment.php', - 'Faker\\Provider\\zh_TW\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_TW/Person.php', - 'Faker\\Provider\\zh_TW\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_TW/PhoneNumber.php', - 'Faker\\Provider\\zh_TW\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_TW/Text.php', - 'Faker\\UniqueGenerator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/UniqueGenerator.php', - 'Faker\\ValidGenerator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ValidGenerator.php', - 'FontLib\\AdobeFontMetrics' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/AdobeFontMetrics.php', - 'FontLib\\BinaryStream' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/BinaryStream.php', - 'FontLib\\EOT\\File' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/EOT/File.php', - 'FontLib\\EOT\\Header' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/EOT/Header.php', - 'FontLib\\EncodingMap' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/EncodingMap.php', - 'FontLib\\Exception\\FontNotFoundException' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Exception/FontNotFoundException.php', - 'FontLib\\Font' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Font.php', - 'FontLib\\Glyph\\Outline' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Glyph/Outline.php', - 'FontLib\\Glyph\\OutlineComponent' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Glyph/OutlineComponent.php', - 'FontLib\\Glyph\\OutlineComposite' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Glyph/OutlineComposite.php', - 'FontLib\\Glyph\\OutlineSimple' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Glyph/OutlineSimple.php', - 'FontLib\\Header' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Header.php', - 'FontLib\\OpenType\\File' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/OpenType/File.php', - 'FontLib\\OpenType\\TableDirectoryEntry' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/OpenType/TableDirectoryEntry.php', - 'FontLib\\Table\\DirectoryEntry' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Table/DirectoryEntry.php', - 'FontLib\\Table\\Table' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Table/Table.php', - 'FontLib\\Table\\Type\\cmap' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Table/Type/cmap.php', - 'FontLib\\Table\\Type\\cvt' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Table/Type/cvt.php', - 'FontLib\\Table\\Type\\fpgm' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Table/Type/fpgm.php', - 'FontLib\\Table\\Type\\glyf' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Table/Type/glyf.php', - 'FontLib\\Table\\Type\\head' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Table/Type/head.php', - 'FontLib\\Table\\Type\\hhea' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Table/Type/hhea.php', - 'FontLib\\Table\\Type\\hmtx' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Table/Type/hmtx.php', - 'FontLib\\Table\\Type\\kern' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Table/Type/kern.php', - 'FontLib\\Table\\Type\\loca' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Table/Type/loca.php', - 'FontLib\\Table\\Type\\maxp' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Table/Type/maxp.php', - 'FontLib\\Table\\Type\\name' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Table/Type/name.php', - 'FontLib\\Table\\Type\\nameRecord' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Table/Type/nameRecord.php', - 'FontLib\\Table\\Type\\os2' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Table/Type/os2.php', - 'FontLib\\Table\\Type\\post' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Table/Type/post.php', - 'FontLib\\Table\\Type\\prep' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Table/Type/prep.php', - 'FontLib\\TrueType\\Collection' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/TrueType/Collection.php', - 'FontLib\\TrueType\\File' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/TrueType/File.php', - 'FontLib\\TrueType\\Header' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/TrueType/Header.php', - 'FontLib\\TrueType\\TableDirectoryEntry' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/TrueType/TableDirectoryEntry.php', - 'FontLib\\WOFF\\File' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/WOFF/File.php', - 'FontLib\\WOFF\\Header' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/WOFF/Header.php', - 'FontLib\\WOFF\\TableDirectoryEntry' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/WOFF/TableDirectoryEntry.php', - 'FrequentlyAskedQuestionSeeder' => __DIR__ . '/../..' . '/database/seeders/FrequentlyAskedQuestionSeeder.php', - 'Fruitcake\\Cors\\CorsService' => __DIR__ . '/..' . '/fruitcake/php-cors/src/CorsService.php', - 'Fruitcake\\Cors\\Exceptions\\InvalidOptionException' => __DIR__ . '/..' . '/fruitcake/php-cors/src/Exceptions/InvalidOptionException.php', - 'Fx3costa\\LaravelChartJs\\Builder' => __DIR__ . '/..' . '/fx3costa/laravelchartjs/src/Builder.php', - 'Fx3costa\\LaravelChartJs\\Providers\\ChartjsServiceProvider' => __DIR__ . '/..' . '/fx3costa/laravelchartjs/src/Providers/ChartjsServiceProvider.php', - 'GrahamCampbell\\ResultType\\Error' => __DIR__ . '/..' . '/graham-campbell/result-type/src/Error.php', - 'GrahamCampbell\\ResultType\\Result' => __DIR__ . '/..' . '/graham-campbell/result-type/src/Result.php', - 'GrahamCampbell\\ResultType\\Success' => __DIR__ . '/..' . '/graham-campbell/result-type/src/Success.php', - 'GuzzleHttp\\BodySummarizer' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/BodySummarizer.php', - 'GuzzleHttp\\BodySummarizerInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/BodySummarizerInterface.php', - 'GuzzleHttp\\Client' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Client.php', - 'GuzzleHttp\\ClientInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/ClientInterface.php', - 'GuzzleHttp\\ClientTrait' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/ClientTrait.php', - 'GuzzleHttp\\Cookie\\CookieJar' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/CookieJar.php', - 'GuzzleHttp\\Cookie\\CookieJarInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php', - 'GuzzleHttp\\Cookie\\FileCookieJar' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php', - 'GuzzleHttp\\Cookie\\SessionCookieJar' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php', - 'GuzzleHttp\\Cookie\\SetCookie' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/SetCookie.php', - 'GuzzleHttp\\Exception\\BadResponseException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/BadResponseException.php', - 'GuzzleHttp\\Exception\\ClientException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/ClientException.php', - 'GuzzleHttp\\Exception\\ConnectException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/ConnectException.php', - 'GuzzleHttp\\Exception\\GuzzleException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/GuzzleException.php', - 'GuzzleHttp\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/InvalidArgumentException.php', - 'GuzzleHttp\\Exception\\RequestException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/RequestException.php', - 'GuzzleHttp\\Exception\\ServerException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/ServerException.php', - 'GuzzleHttp\\Exception\\TooManyRedirectsException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php', - 'GuzzleHttp\\Exception\\TransferException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/TransferException.php', - 'GuzzleHttp\\HandlerStack' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/HandlerStack.php', - 'GuzzleHttp\\Handler\\CurlFactory' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/CurlFactory.php', - 'GuzzleHttp\\Handler\\CurlFactoryInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php', - 'GuzzleHttp\\Handler\\CurlHandler' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/CurlHandler.php', - 'GuzzleHttp\\Handler\\CurlMultiHandler' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php', - 'GuzzleHttp\\Handler\\EasyHandle' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/EasyHandle.php', - 'GuzzleHttp\\Handler\\HeaderProcessor' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php', - 'GuzzleHttp\\Handler\\MockHandler' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/MockHandler.php', - 'GuzzleHttp\\Handler\\Proxy' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/Proxy.php', - 'GuzzleHttp\\Handler\\StreamHandler' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/StreamHandler.php', - 'GuzzleHttp\\MessageFormatter' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/MessageFormatter.php', - 'GuzzleHttp\\MessageFormatterInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/MessageFormatterInterface.php', - 'GuzzleHttp\\Middleware' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Middleware.php', - 'GuzzleHttp\\Pool' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Pool.php', - 'GuzzleHttp\\PrepareBodyMiddleware' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php', - 'GuzzleHttp\\Promise\\AggregateException' => __DIR__ . '/..' . '/guzzlehttp/promises/src/AggregateException.php', - 'GuzzleHttp\\Promise\\CancellationException' => __DIR__ . '/..' . '/guzzlehttp/promises/src/CancellationException.php', - 'GuzzleHttp\\Promise\\Coroutine' => __DIR__ . '/..' . '/guzzlehttp/promises/src/Coroutine.php', - 'GuzzleHttp\\Promise\\Create' => __DIR__ . '/..' . '/guzzlehttp/promises/src/Create.php', - 'GuzzleHttp\\Promise\\Each' => __DIR__ . '/..' . '/guzzlehttp/promises/src/Each.php', - 'GuzzleHttp\\Promise\\EachPromise' => __DIR__ . '/..' . '/guzzlehttp/promises/src/EachPromise.php', - 'GuzzleHttp\\Promise\\FulfilledPromise' => __DIR__ . '/..' . '/guzzlehttp/promises/src/FulfilledPromise.php', - 'GuzzleHttp\\Promise\\Is' => __DIR__ . '/..' . '/guzzlehttp/promises/src/Is.php', - 'GuzzleHttp\\Promise\\Promise' => __DIR__ . '/..' . '/guzzlehttp/promises/src/Promise.php', - 'GuzzleHttp\\Promise\\PromiseInterface' => __DIR__ . '/..' . '/guzzlehttp/promises/src/PromiseInterface.php', - 'GuzzleHttp\\Promise\\PromisorInterface' => __DIR__ . '/..' . '/guzzlehttp/promises/src/PromisorInterface.php', - 'GuzzleHttp\\Promise\\RejectedPromise' => __DIR__ . '/..' . '/guzzlehttp/promises/src/RejectedPromise.php', - 'GuzzleHttp\\Promise\\RejectionException' => __DIR__ . '/..' . '/guzzlehttp/promises/src/RejectionException.php', - 'GuzzleHttp\\Promise\\TaskQueue' => __DIR__ . '/..' . '/guzzlehttp/promises/src/TaskQueue.php', - 'GuzzleHttp\\Promise\\TaskQueueInterface' => __DIR__ . '/..' . '/guzzlehttp/promises/src/TaskQueueInterface.php', - 'GuzzleHttp\\Promise\\Utils' => __DIR__ . '/..' . '/guzzlehttp/promises/src/Utils.php', - 'GuzzleHttp\\Psr7\\AppendStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/AppendStream.php', - 'GuzzleHttp\\Psr7\\BufferStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/BufferStream.php', - 'GuzzleHttp\\Psr7\\CachingStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/CachingStream.php', - 'GuzzleHttp\\Psr7\\DroppingStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/DroppingStream.php', - 'GuzzleHttp\\Psr7\\Exception\\MalformedUriException' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Exception/MalformedUriException.php', - 'GuzzleHttp\\Psr7\\FnStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/FnStream.php', - 'GuzzleHttp\\Psr7\\Header' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Header.php', - 'GuzzleHttp\\Psr7\\HttpFactory' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/HttpFactory.php', - 'GuzzleHttp\\Psr7\\InflateStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/InflateStream.php', - 'GuzzleHttp\\Psr7\\LazyOpenStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/LazyOpenStream.php', - 'GuzzleHttp\\Psr7\\LimitStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/LimitStream.php', - 'GuzzleHttp\\Psr7\\Message' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Message.php', - 'GuzzleHttp\\Psr7\\MessageTrait' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/MessageTrait.php', - 'GuzzleHttp\\Psr7\\MimeType' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/MimeType.php', - 'GuzzleHttp\\Psr7\\MultipartStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/MultipartStream.php', - 'GuzzleHttp\\Psr7\\NoSeekStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/NoSeekStream.php', - 'GuzzleHttp\\Psr7\\PumpStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/PumpStream.php', - 'GuzzleHttp\\Psr7\\Query' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Query.php', - 'GuzzleHttp\\Psr7\\Request' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Request.php', - 'GuzzleHttp\\Psr7\\Response' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Response.php', - 'GuzzleHttp\\Psr7\\Rfc7230' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Rfc7230.php', - 'GuzzleHttp\\Psr7\\ServerRequest' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/ServerRequest.php', - 'GuzzleHttp\\Psr7\\Stream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Stream.php', - 'GuzzleHttp\\Psr7\\StreamDecoratorTrait' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/StreamDecoratorTrait.php', - 'GuzzleHttp\\Psr7\\StreamWrapper' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/StreamWrapper.php', - 'GuzzleHttp\\Psr7\\UploadedFile' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UploadedFile.php', - 'GuzzleHttp\\Psr7\\Uri' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Uri.php', - 'GuzzleHttp\\Psr7\\UriComparator' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UriComparator.php', - 'GuzzleHttp\\Psr7\\UriNormalizer' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UriNormalizer.php', - 'GuzzleHttp\\Psr7\\UriResolver' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UriResolver.php', - 'GuzzleHttp\\Psr7\\Utils' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Utils.php', - 'GuzzleHttp\\RedirectMiddleware' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/RedirectMiddleware.php', - 'GuzzleHttp\\RequestOptions' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/RequestOptions.php', - 'GuzzleHttp\\RetryMiddleware' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/RetryMiddleware.php', - 'GuzzleHttp\\TransferStats' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/TransferStats.php', - 'GuzzleHttp\\UriTemplate\\UriTemplate' => __DIR__ . '/..' . '/guzzlehttp/uri-template/src/UriTemplate.php', - 'GuzzleHttp\\Utils' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Utils.php', - 'Hamcrest\\Arrays\\IsArray' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArray.php', - 'Hamcrest\\Arrays\\IsArrayContaining' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContaining.php', - 'Hamcrest\\Arrays\\IsArrayContainingInAnyOrder' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingInAnyOrder.php', - 'Hamcrest\\Arrays\\IsArrayContainingInOrder' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingInOrder.php', - 'Hamcrest\\Arrays\\IsArrayContainingKey' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingKey.php', - 'Hamcrest\\Arrays\\IsArrayContainingKeyValuePair' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingKeyValuePair.php', - 'Hamcrest\\Arrays\\IsArrayWithSize' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayWithSize.php', - 'Hamcrest\\Arrays\\MatchingOnce' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/MatchingOnce.php', - 'Hamcrest\\Arrays\\SeriesMatchingOnce' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/SeriesMatchingOnce.php', - 'Hamcrest\\AssertionError' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/AssertionError.php', - 'Hamcrest\\BaseDescription' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/BaseDescription.php', - 'Hamcrest\\BaseMatcher' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/BaseMatcher.php', - 'Hamcrest\\Collection\\IsEmptyTraversable' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Collection/IsEmptyTraversable.php', - 'Hamcrest\\Collection\\IsTraversableWithSize' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Collection/IsTraversableWithSize.php', - 'Hamcrest\\Core\\AllOf' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/AllOf.php', - 'Hamcrest\\Core\\AnyOf' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/AnyOf.php', - 'Hamcrest\\Core\\CombinableMatcher' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/CombinableMatcher.php', - 'Hamcrest\\Core\\DescribedAs' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/DescribedAs.php', - 'Hamcrest\\Core\\Every' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/Every.php', - 'Hamcrest\\Core\\HasToString' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/HasToString.php', - 'Hamcrest\\Core\\Is' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/Is.php', - 'Hamcrest\\Core\\IsAnything' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsAnything.php', - 'Hamcrest\\Core\\IsCollectionContaining' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsCollectionContaining.php', - 'Hamcrest\\Core\\IsEqual' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsEqual.php', - 'Hamcrest\\Core\\IsIdentical' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsIdentical.php', - 'Hamcrest\\Core\\IsInstanceOf' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsInstanceOf.php', - 'Hamcrest\\Core\\IsNot' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsNot.php', - 'Hamcrest\\Core\\IsNull' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsNull.php', - 'Hamcrest\\Core\\IsSame' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsSame.php', - 'Hamcrest\\Core\\IsTypeOf' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsTypeOf.php', - 'Hamcrest\\Core\\Set' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/Set.php', - 'Hamcrest\\Core\\ShortcutCombination' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/ShortcutCombination.php', - 'Hamcrest\\Description' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Description.php', - 'Hamcrest\\DiagnosingMatcher' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/DiagnosingMatcher.php', - 'Hamcrest\\FeatureMatcher' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/FeatureMatcher.php', - 'Hamcrest\\Internal\\SelfDescribingValue' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Internal/SelfDescribingValue.php', - 'Hamcrest\\Matcher' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Matcher.php', - 'Hamcrest\\MatcherAssert' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/MatcherAssert.php', - 'Hamcrest\\Matchers' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Matchers.php', - 'Hamcrest\\NullDescription' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/NullDescription.php', - 'Hamcrest\\Number\\IsCloseTo' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Number/IsCloseTo.php', - 'Hamcrest\\Number\\OrderingComparison' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Number/OrderingComparison.php', - 'Hamcrest\\SelfDescribing' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/SelfDescribing.php', - 'Hamcrest\\StringDescription' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/StringDescription.php', - 'Hamcrest\\Text\\IsEmptyString' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/IsEmptyString.php', - 'Hamcrest\\Text\\IsEqualIgnoringCase' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/IsEqualIgnoringCase.php', - 'Hamcrest\\Text\\IsEqualIgnoringWhiteSpace' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/IsEqualIgnoringWhiteSpace.php', - 'Hamcrest\\Text\\MatchesPattern' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/MatchesPattern.php', - 'Hamcrest\\Text\\StringContains' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringContains.php', - 'Hamcrest\\Text\\StringContainsIgnoringCase' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringContainsIgnoringCase.php', - 'Hamcrest\\Text\\StringContainsInOrder' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringContainsInOrder.php', - 'Hamcrest\\Text\\StringEndsWith' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringEndsWith.php', - 'Hamcrest\\Text\\StringStartsWith' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringStartsWith.php', - 'Hamcrest\\Text\\SubstringMatcher' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/SubstringMatcher.php', - 'Hamcrest\\TypeSafeDiagnosingMatcher' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/TypeSafeDiagnosingMatcher.php', - 'Hamcrest\\TypeSafeMatcher' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/TypeSafeMatcher.php', - 'Hamcrest\\Type\\IsArray' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsArray.php', - 'Hamcrest\\Type\\IsBoolean' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsBoolean.php', - 'Hamcrest\\Type\\IsCallable' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsCallable.php', - 'Hamcrest\\Type\\IsDouble' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsDouble.php', - 'Hamcrest\\Type\\IsInteger' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsInteger.php', - 'Hamcrest\\Type\\IsNumeric' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsNumeric.php', - 'Hamcrest\\Type\\IsObject' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsObject.php', - 'Hamcrest\\Type\\IsResource' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsResource.php', - 'Hamcrest\\Type\\IsScalar' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsScalar.php', - 'Hamcrest\\Type\\IsString' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsString.php', - 'Hamcrest\\Util' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Util.php', - 'Hamcrest\\Xml\\HasXPath' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Xml/HasXPath.php', - 'HmisInvestigationCategoryTableSeeder' => __DIR__ . '/../..' . '/database/seeders/HmisInvestigationCategoryTableSeeder.php', - 'Illuminate\\Auth\\Access\\AuthorizationException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Access/AuthorizationException.php', - 'Illuminate\\Auth\\Access\\Events\\GateEvaluated' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Access/Events/GateEvaluated.php', - 'Illuminate\\Auth\\Access\\Gate' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Access/Gate.php', - 'Illuminate\\Auth\\Access\\HandlesAuthorization' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Access/HandlesAuthorization.php', - 'Illuminate\\Auth\\Access\\Response' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Access/Response.php', - 'Illuminate\\Auth\\AuthManager' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/AuthManager.php', - 'Illuminate\\Auth\\AuthServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/AuthServiceProvider.php', - 'Illuminate\\Auth\\Authenticatable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Authenticatable.php', - 'Illuminate\\Auth\\AuthenticationException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/AuthenticationException.php', - 'Illuminate\\Auth\\Console\\ClearResetsCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Console/ClearResetsCommand.php', - 'Illuminate\\Auth\\CreatesUserProviders' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/CreatesUserProviders.php', - 'Illuminate\\Auth\\DatabaseUserProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/DatabaseUserProvider.php', - 'Illuminate\\Auth\\EloquentUserProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/EloquentUserProvider.php', - 'Illuminate\\Auth\\Events\\Attempting' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Events/Attempting.php', - 'Illuminate\\Auth\\Events\\Authenticated' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Events/Authenticated.php', - 'Illuminate\\Auth\\Events\\CurrentDeviceLogout' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Events/CurrentDeviceLogout.php', - 'Illuminate\\Auth\\Events\\Failed' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Events/Failed.php', - 'Illuminate\\Auth\\Events\\Lockout' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Events/Lockout.php', - 'Illuminate\\Auth\\Events\\Login' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Events/Login.php', - 'Illuminate\\Auth\\Events\\Logout' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Events/Logout.php', - 'Illuminate\\Auth\\Events\\OtherDeviceLogout' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Events/OtherDeviceLogout.php', - 'Illuminate\\Auth\\Events\\PasswordReset' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Events/PasswordReset.php', - 'Illuminate\\Auth\\Events\\Registered' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Events/Registered.php', - 'Illuminate\\Auth\\Events\\Validated' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Events/Validated.php', - 'Illuminate\\Auth\\Events\\Verified' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Events/Verified.php', - 'Illuminate\\Auth\\GenericUser' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/GenericUser.php', - 'Illuminate\\Auth\\GuardHelpers' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/GuardHelpers.php', - 'Illuminate\\Auth\\Listeners\\SendEmailVerificationNotification' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Listeners/SendEmailVerificationNotification.php', - 'Illuminate\\Auth\\Middleware\\Authenticate' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php', - 'Illuminate\\Auth\\Middleware\\AuthenticateWithBasicAuth' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Middleware/AuthenticateWithBasicAuth.php', - 'Illuminate\\Auth\\Middleware\\Authorize' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Middleware/Authorize.php', - 'Illuminate\\Auth\\Middleware\\EnsureEmailIsVerified' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Middleware/EnsureEmailIsVerified.php', - 'Illuminate\\Auth\\Middleware\\RequirePassword' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Middleware/RequirePassword.php', - 'Illuminate\\Auth\\MustVerifyEmail' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/MustVerifyEmail.php', - 'Illuminate\\Auth\\Notifications\\ResetPassword' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Notifications/ResetPassword.php', - 'Illuminate\\Auth\\Notifications\\VerifyEmail' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Notifications/VerifyEmail.php', - 'Illuminate\\Auth\\Passwords\\CanResetPassword' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Passwords/CanResetPassword.php', - 'Illuminate\\Auth\\Passwords\\DatabaseTokenRepository' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Passwords/DatabaseTokenRepository.php', - 'Illuminate\\Auth\\Passwords\\PasswordBroker' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBroker.php', - 'Illuminate\\Auth\\Passwords\\PasswordBrokerManager' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBrokerManager.php', - 'Illuminate\\Auth\\Passwords\\PasswordResetServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Passwords/PasswordResetServiceProvider.php', - 'Illuminate\\Auth\\Passwords\\TokenRepositoryInterface' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Passwords/TokenRepositoryInterface.php', - 'Illuminate\\Auth\\Recaller' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Recaller.php', - 'Illuminate\\Auth\\RequestGuard' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/RequestGuard.php', - 'Illuminate\\Auth\\SessionGuard' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/SessionGuard.php', - 'Illuminate\\Auth\\TokenGuard' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/TokenGuard.php', - 'Illuminate\\Broadcasting\\BroadcastController' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Broadcasting/BroadcastController.php', - 'Illuminate\\Broadcasting\\BroadcastEvent' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Broadcasting/BroadcastEvent.php', - 'Illuminate\\Broadcasting\\BroadcastException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Broadcasting/BroadcastException.php', - 'Illuminate\\Broadcasting\\BroadcastManager' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Broadcasting/BroadcastManager.php', - 'Illuminate\\Broadcasting\\BroadcastServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Broadcasting/BroadcastServiceProvider.php', - 'Illuminate\\Broadcasting\\Broadcasters\\AblyBroadcaster' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/AblyBroadcaster.php', - 'Illuminate\\Broadcasting\\Broadcasters\\Broadcaster' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/Broadcaster.php', - 'Illuminate\\Broadcasting\\Broadcasters\\LogBroadcaster' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/LogBroadcaster.php', - 'Illuminate\\Broadcasting\\Broadcasters\\NullBroadcaster' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/NullBroadcaster.php', - 'Illuminate\\Broadcasting\\Broadcasters\\PusherBroadcaster' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/PusherBroadcaster.php', - 'Illuminate\\Broadcasting\\Broadcasters\\RedisBroadcaster' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/RedisBroadcaster.php', - 'Illuminate\\Broadcasting\\Broadcasters\\UsePusherChannelConventions' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/UsePusherChannelConventions.php', - 'Illuminate\\Broadcasting\\Channel' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Broadcasting/Channel.php', - 'Illuminate\\Broadcasting\\EncryptedPrivateChannel' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Broadcasting/EncryptedPrivateChannel.php', - 'Illuminate\\Broadcasting\\InteractsWithBroadcasting' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Broadcasting/InteractsWithBroadcasting.php', - 'Illuminate\\Broadcasting\\InteractsWithSockets' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Broadcasting/InteractsWithSockets.php', - 'Illuminate\\Broadcasting\\PendingBroadcast' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Broadcasting/PendingBroadcast.php', - 'Illuminate\\Broadcasting\\PresenceChannel' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Broadcasting/PresenceChannel.php', - 'Illuminate\\Broadcasting\\PrivateChannel' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Broadcasting/PrivateChannel.php', - 'Illuminate\\Broadcasting\\UniqueBroadcastEvent' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Broadcasting/UniqueBroadcastEvent.php', - 'Illuminate\\Bus\\Batch' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Bus/Batch.php', - 'Illuminate\\Bus\\BatchFactory' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Bus/BatchFactory.php', - 'Illuminate\\Bus\\BatchRepository' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Bus/BatchRepository.php', - 'Illuminate\\Bus\\Batchable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Bus/Batchable.php', - 'Illuminate\\Bus\\BusServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Bus/BusServiceProvider.php', - 'Illuminate\\Bus\\ChainedBatch' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Bus/ChainedBatch.php', - 'Illuminate\\Bus\\DatabaseBatchRepository' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Bus/DatabaseBatchRepository.php', - 'Illuminate\\Bus\\Dispatcher' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Bus/Dispatcher.php', - 'Illuminate\\Bus\\DynamoBatchRepository' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Bus/DynamoBatchRepository.php', - 'Illuminate\\Bus\\Events\\BatchDispatched' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Bus/Events/BatchDispatched.php', - 'Illuminate\\Bus\\PendingBatch' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Bus/PendingBatch.php', - 'Illuminate\\Bus\\PrunableBatchRepository' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Bus/PrunableBatchRepository.php', - 'Illuminate\\Bus\\Queueable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Bus/Queueable.php', - 'Illuminate\\Bus\\UniqueLock' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Bus/UniqueLock.php', - 'Illuminate\\Bus\\UpdatedBatchJobCounts' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Bus/UpdatedBatchJobCounts.php', - 'Illuminate\\Cache\\ApcStore' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/ApcStore.php', - 'Illuminate\\Cache\\ApcWrapper' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/ApcWrapper.php', - 'Illuminate\\Cache\\ArrayLock' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/ArrayLock.php', - 'Illuminate\\Cache\\ArrayStore' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/ArrayStore.php', - 'Illuminate\\Cache\\CacheLock' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/CacheLock.php', - 'Illuminate\\Cache\\CacheManager' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/CacheManager.php', - 'Illuminate\\Cache\\CacheServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/CacheServiceProvider.php', - 'Illuminate\\Cache\\Console\\CacheTableCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/Console/CacheTableCommand.php', - 'Illuminate\\Cache\\Console\\ClearCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/Console/ClearCommand.php', - 'Illuminate\\Cache\\Console\\ForgetCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/Console/ForgetCommand.php', - 'Illuminate\\Cache\\Console\\PruneStaleTagsCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/Console/PruneStaleTagsCommand.php', - 'Illuminate\\Cache\\DatabaseLock' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/DatabaseLock.php', - 'Illuminate\\Cache\\DatabaseStore' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/DatabaseStore.php', - 'Illuminate\\Cache\\DynamoDbLock' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/DynamoDbLock.php', - 'Illuminate\\Cache\\DynamoDbStore' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/DynamoDbStore.php', - 'Illuminate\\Cache\\Events\\CacheEvent' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/Events/CacheEvent.php', - 'Illuminate\\Cache\\Events\\CacheHit' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/Events/CacheHit.php', - 'Illuminate\\Cache\\Events\\CacheMissed' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/Events/CacheMissed.php', - 'Illuminate\\Cache\\Events\\KeyForgotten' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/Events/KeyForgotten.php', - 'Illuminate\\Cache\\Events\\KeyWritten' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/Events/KeyWritten.php', - 'Illuminate\\Cache\\FileLock' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/FileLock.php', - 'Illuminate\\Cache\\FileStore' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/FileStore.php', - 'Illuminate\\Cache\\HasCacheLock' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/HasCacheLock.php', - 'Illuminate\\Cache\\Lock' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/Lock.php', - 'Illuminate\\Cache\\LuaScripts' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/LuaScripts.php', - 'Illuminate\\Cache\\MemcachedConnector' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/MemcachedConnector.php', - 'Illuminate\\Cache\\MemcachedLock' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/MemcachedLock.php', - 'Illuminate\\Cache\\MemcachedStore' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/MemcachedStore.php', - 'Illuminate\\Cache\\NoLock' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/NoLock.php', - 'Illuminate\\Cache\\NullStore' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/NullStore.php', - 'Illuminate\\Cache\\PhpRedisLock' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/PhpRedisLock.php', - 'Illuminate\\Cache\\RateLimiter' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/RateLimiter.php', - 'Illuminate\\Cache\\RateLimiting\\GlobalLimit' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/RateLimiting/GlobalLimit.php', - 'Illuminate\\Cache\\RateLimiting\\Limit' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/RateLimiting/Limit.php', - 'Illuminate\\Cache\\RateLimiting\\Unlimited' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/RateLimiting/Unlimited.php', - 'Illuminate\\Cache\\RedisLock' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/RedisLock.php', - 'Illuminate\\Cache\\RedisStore' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/RedisStore.php', - 'Illuminate\\Cache\\RedisTagSet' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/RedisTagSet.php', - 'Illuminate\\Cache\\RedisTaggedCache' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/RedisTaggedCache.php', - 'Illuminate\\Cache\\Repository' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/Repository.php', - 'Illuminate\\Cache\\RetrievesMultipleKeys' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/RetrievesMultipleKeys.php', - 'Illuminate\\Cache\\TagSet' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/TagSet.php', - 'Illuminate\\Cache\\TaggableStore' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/TaggableStore.php', - 'Illuminate\\Cache\\TaggedCache' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/TaggedCache.php', - 'Illuminate\\Config\\Repository' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Config/Repository.php', - 'Illuminate\\Console\\Application' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Application.php', - 'Illuminate\\Console\\BufferedConsoleOutput' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/BufferedConsoleOutput.php', - 'Illuminate\\Console\\CacheCommandMutex' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/CacheCommandMutex.php', - 'Illuminate\\Console\\Command' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Command.php', - 'Illuminate\\Console\\CommandMutex' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/CommandMutex.php', - 'Illuminate\\Console\\Concerns\\CallsCommands' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Concerns/CallsCommands.php', - 'Illuminate\\Console\\Concerns\\ConfiguresPrompts' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Concerns/ConfiguresPrompts.php', - 'Illuminate\\Console\\Concerns\\CreatesMatchingTest' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Concerns/CreatesMatchingTest.php', - 'Illuminate\\Console\\Concerns\\HasParameters' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Concerns/HasParameters.php', - 'Illuminate\\Console\\Concerns\\InteractsWithIO' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Concerns/InteractsWithIO.php', - 'Illuminate\\Console\\Concerns\\InteractsWithSignals' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Concerns/InteractsWithSignals.php', - 'Illuminate\\Console\\Concerns\\PromptsForMissingInput' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Concerns/PromptsForMissingInput.php', - 'Illuminate\\Console\\ConfirmableTrait' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/ConfirmableTrait.php', - 'Illuminate\\Console\\ContainerCommandLoader' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/ContainerCommandLoader.php', - 'Illuminate\\Console\\Contracts\\NewLineAware' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Contracts/NewLineAware.php', - 'Illuminate\\Console\\Events\\ArtisanStarting' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Events/ArtisanStarting.php', - 'Illuminate\\Console\\Events\\CommandFinished' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Events/CommandFinished.php', - 'Illuminate\\Console\\Events\\CommandStarting' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Events/CommandStarting.php', - 'Illuminate\\Console\\Events\\ScheduledBackgroundTaskFinished' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Events/ScheduledBackgroundTaskFinished.php', - 'Illuminate\\Console\\Events\\ScheduledTaskFailed' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Events/ScheduledTaskFailed.php', - 'Illuminate\\Console\\Events\\ScheduledTaskFinished' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Events/ScheduledTaskFinished.php', - 'Illuminate\\Console\\Events\\ScheduledTaskSkipped' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Events/ScheduledTaskSkipped.php', - 'Illuminate\\Console\\Events\\ScheduledTaskStarting' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Events/ScheduledTaskStarting.php', - 'Illuminate\\Console\\GeneratorCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/GeneratorCommand.php', - 'Illuminate\\Console\\MigrationGeneratorCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/MigrationGeneratorCommand.php', - 'Illuminate\\Console\\OutputStyle' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/OutputStyle.php', - 'Illuminate\\Console\\Parser' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Parser.php', - 'Illuminate\\Console\\PromptValidationException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/PromptValidationException.php', - 'Illuminate\\Console\\QuestionHelper' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/QuestionHelper.php', - 'Illuminate\\Console\\Scheduling\\CacheAware' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Scheduling/CacheAware.php', - 'Illuminate\\Console\\Scheduling\\CacheEventMutex' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Scheduling/CacheEventMutex.php', - 'Illuminate\\Console\\Scheduling\\CacheSchedulingMutex' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Scheduling/CacheSchedulingMutex.php', - 'Illuminate\\Console\\Scheduling\\CallbackEvent' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Scheduling/CallbackEvent.php', - 'Illuminate\\Console\\Scheduling\\CommandBuilder' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Scheduling/CommandBuilder.php', - 'Illuminate\\Console\\Scheduling\\Event' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Scheduling/Event.php', - 'Illuminate\\Console\\Scheduling\\EventMutex' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Scheduling/EventMutex.php', - 'Illuminate\\Console\\Scheduling\\ManagesFrequencies' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Scheduling/ManagesFrequencies.php', - 'Illuminate\\Console\\Scheduling\\Schedule' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Scheduling/Schedule.php', - 'Illuminate\\Console\\Scheduling\\ScheduleClearCacheCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Scheduling/ScheduleClearCacheCommand.php', - 'Illuminate\\Console\\Scheduling\\ScheduleFinishCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Scheduling/ScheduleFinishCommand.php', - 'Illuminate\\Console\\Scheduling\\ScheduleInterruptCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Scheduling/ScheduleInterruptCommand.php', - 'Illuminate\\Console\\Scheduling\\ScheduleListCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Scheduling/ScheduleListCommand.php', - 'Illuminate\\Console\\Scheduling\\ScheduleRunCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Scheduling/ScheduleRunCommand.php', - 'Illuminate\\Console\\Scheduling\\ScheduleTestCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Scheduling/ScheduleTestCommand.php', - 'Illuminate\\Console\\Scheduling\\ScheduleWorkCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Scheduling/ScheduleWorkCommand.php', - 'Illuminate\\Console\\Scheduling\\SchedulingMutex' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Scheduling/SchedulingMutex.php', - 'Illuminate\\Console\\Signals' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/Signals.php', - 'Illuminate\\Console\\View\\Components\\Alert' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/View/Components/Alert.php', - 'Illuminate\\Console\\View\\Components\\Ask' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/View/Components/Ask.php', - 'Illuminate\\Console\\View\\Components\\AskWithCompletion' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/View/Components/AskWithCompletion.php', - 'Illuminate\\Console\\View\\Components\\BulletList' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/View/Components/BulletList.php', - 'Illuminate\\Console\\View\\Components\\Choice' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/View/Components/Choice.php', - 'Illuminate\\Console\\View\\Components\\Component' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/View/Components/Component.php', - 'Illuminate\\Console\\View\\Components\\Confirm' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/View/Components/Confirm.php', - 'Illuminate\\Console\\View\\Components\\Error' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/View/Components/Error.php', - 'Illuminate\\Console\\View\\Components\\Factory' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/View/Components/Factory.php', - 'Illuminate\\Console\\View\\Components\\Info' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/View/Components/Info.php', - 'Illuminate\\Console\\View\\Components\\Line' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/View/Components/Line.php', - 'Illuminate\\Console\\View\\Components\\Mutators\\EnsureDynamicContentIsHighlighted' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/View/Components/Mutators/EnsureDynamicContentIsHighlighted.php', - 'Illuminate\\Console\\View\\Components\\Mutators\\EnsureNoPunctuation' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/View/Components/Mutators/EnsureNoPunctuation.php', - 'Illuminate\\Console\\View\\Components\\Mutators\\EnsurePunctuation' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/View/Components/Mutators/EnsurePunctuation.php', - 'Illuminate\\Console\\View\\Components\\Mutators\\EnsureRelativePaths' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/View/Components/Mutators/EnsureRelativePaths.php', - 'Illuminate\\Console\\View\\Components\\Secret' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/View/Components/Secret.php', - 'Illuminate\\Console\\View\\Components\\Task' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/View/Components/Task.php', - 'Illuminate\\Console\\View\\Components\\TwoColumnDetail' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/View/Components/TwoColumnDetail.php', - 'Illuminate\\Console\\View\\Components\\Warn' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Console/View/Components/Warn.php', - 'Illuminate\\Container\\BoundMethod' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Container/BoundMethod.php', - 'Illuminate\\Container\\Container' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Container/Container.php', - 'Illuminate\\Container\\ContextualBindingBuilder' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Container/ContextualBindingBuilder.php', - 'Illuminate\\Container\\EntryNotFoundException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Container/EntryNotFoundException.php', - 'Illuminate\\Container\\RewindableGenerator' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Container/RewindableGenerator.php', - 'Illuminate\\Container\\Util' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Container/Util.php', - 'Illuminate\\Contracts\\Auth\\Access\\Authorizable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Auth/Access/Authorizable.php', - 'Illuminate\\Contracts\\Auth\\Access\\Gate' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Auth/Access/Gate.php', - 'Illuminate\\Contracts\\Auth\\Authenticatable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Auth/Authenticatable.php', - 'Illuminate\\Contracts\\Auth\\CanResetPassword' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Auth/CanResetPassword.php', - 'Illuminate\\Contracts\\Auth\\Factory' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Auth/Factory.php', - 'Illuminate\\Contracts\\Auth\\Guard' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Auth/Guard.php', - 'Illuminate\\Contracts\\Auth\\Middleware\\AuthenticatesRequests' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Auth/Middleware/AuthenticatesRequests.php', - 'Illuminate\\Contracts\\Auth\\MustVerifyEmail' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Auth/MustVerifyEmail.php', - 'Illuminate\\Contracts\\Auth\\PasswordBroker' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Auth/PasswordBroker.php', - 'Illuminate\\Contracts\\Auth\\PasswordBrokerFactory' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Auth/PasswordBrokerFactory.php', - 'Illuminate\\Contracts\\Auth\\StatefulGuard' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Auth/StatefulGuard.php', - 'Illuminate\\Contracts\\Auth\\SupportsBasicAuth' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Auth/SupportsBasicAuth.php', - 'Illuminate\\Contracts\\Auth\\UserProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Auth/UserProvider.php', - 'Illuminate\\Contracts\\Broadcasting\\Broadcaster' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Broadcasting/Broadcaster.php', - 'Illuminate\\Contracts\\Broadcasting\\Factory' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Broadcasting/Factory.php', - 'Illuminate\\Contracts\\Broadcasting\\HasBroadcastChannel' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Broadcasting/HasBroadcastChannel.php', - 'Illuminate\\Contracts\\Broadcasting\\ShouldBeUnique' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Broadcasting/ShouldBeUnique.php', - 'Illuminate\\Contracts\\Broadcasting\\ShouldBroadcast' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Broadcasting/ShouldBroadcast.php', - 'Illuminate\\Contracts\\Broadcasting\\ShouldBroadcastNow' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Broadcasting/ShouldBroadcastNow.php', - 'Illuminate\\Contracts\\Bus\\Dispatcher' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Bus/Dispatcher.php', - 'Illuminate\\Contracts\\Bus\\QueueingDispatcher' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Bus/QueueingDispatcher.php', - 'Illuminate\\Contracts\\Cache\\Factory' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Cache/Factory.php', - 'Illuminate\\Contracts\\Cache\\Lock' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Cache/Lock.php', - 'Illuminate\\Contracts\\Cache\\LockProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Cache/LockProvider.php', - 'Illuminate\\Contracts\\Cache\\LockTimeoutException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Cache/LockTimeoutException.php', - 'Illuminate\\Contracts\\Cache\\Repository' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Cache/Repository.php', - 'Illuminate\\Contracts\\Cache\\Store' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Cache/Store.php', - 'Illuminate\\Contracts\\Config\\Repository' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Config/Repository.php', - 'Illuminate\\Contracts\\Console\\Application' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Console/Application.php', - 'Illuminate\\Contracts\\Console\\Isolatable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Console/Isolatable.php', - 'Illuminate\\Contracts\\Console\\Kernel' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Console/Kernel.php', - 'Illuminate\\Contracts\\Console\\PromptsForMissingInput' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Console/PromptsForMissingInput.php', - 'Illuminate\\Contracts\\Container\\BindingResolutionException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Container/BindingResolutionException.php', - 'Illuminate\\Contracts\\Container\\CircularDependencyException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Container/CircularDependencyException.php', - 'Illuminate\\Contracts\\Container\\Container' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Container/Container.php', - 'Illuminate\\Contracts\\Container\\ContextualBindingBuilder' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Container/ContextualBindingBuilder.php', - 'Illuminate\\Contracts\\Cookie\\Factory' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Cookie/Factory.php', - 'Illuminate\\Contracts\\Cookie\\QueueingFactory' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Cookie/QueueingFactory.php', - 'Illuminate\\Contracts\\Database\\Eloquent\\Builder' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Database/Eloquent/Builder.php', - 'Illuminate\\Contracts\\Database\\Eloquent\\Castable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Database/Eloquent/Castable.php', - 'Illuminate\\Contracts\\Database\\Eloquent\\CastsAttributes' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Database/Eloquent/CastsAttributes.php', - 'Illuminate\\Contracts\\Database\\Eloquent\\CastsInboundAttributes' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Database/Eloquent/CastsInboundAttributes.php', - 'Illuminate\\Contracts\\Database\\Eloquent\\DeviatesCastableAttributes' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Database/Eloquent/DeviatesCastableAttributes.php', - 'Illuminate\\Contracts\\Database\\Eloquent\\SerializesCastableAttributes' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Database/Eloquent/SerializesCastableAttributes.php', - 'Illuminate\\Contracts\\Database\\Eloquent\\SupportsPartialRelations' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Database/Eloquent/SupportsPartialRelations.php', - 'Illuminate\\Contracts\\Database\\Events\\MigrationEvent' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Database/Events/MigrationEvent.php', - 'Illuminate\\Contracts\\Database\\ModelIdentifier' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Database/ModelIdentifier.php', - 'Illuminate\\Contracts\\Database\\Query\\Builder' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Database/Query/Builder.php', - 'Illuminate\\Contracts\\Database\\Query\\ConditionExpression' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Database/Query/ConditionExpression.php', - 'Illuminate\\Contracts\\Database\\Query\\Expression' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Database/Query/Expression.php', - 'Illuminate\\Contracts\\Debug\\ExceptionHandler' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Debug/ExceptionHandler.php', - 'Illuminate\\Contracts\\Encryption\\DecryptException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Encryption/DecryptException.php', - 'Illuminate\\Contracts\\Encryption\\EncryptException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Encryption/EncryptException.php', - 'Illuminate\\Contracts\\Encryption\\Encrypter' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Encryption/Encrypter.php', - 'Illuminate\\Contracts\\Encryption\\StringEncrypter' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Encryption/StringEncrypter.php', - 'Illuminate\\Contracts\\Events\\Dispatcher' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Events/Dispatcher.php', - 'Illuminate\\Contracts\\Events\\ShouldDispatchAfterCommit' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Events/ShouldDispatchAfterCommit.php', - 'Illuminate\\Contracts\\Events\\ShouldHandleEventsAfterCommit' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Events/ShouldHandleEventsAfterCommit.php', - 'Illuminate\\Contracts\\Filesystem\\Cloud' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Filesystem/Cloud.php', - 'Illuminate\\Contracts\\Filesystem\\Factory' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Filesystem/Factory.php', - 'Illuminate\\Contracts\\Filesystem\\FileNotFoundException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Filesystem/FileNotFoundException.php', - 'Illuminate\\Contracts\\Filesystem\\Filesystem' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Filesystem/Filesystem.php', - 'Illuminate\\Contracts\\Filesystem\\LockTimeoutException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Filesystem/LockTimeoutException.php', - 'Illuminate\\Contracts\\Foundation\\Application' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Foundation/Application.php', - 'Illuminate\\Contracts\\Foundation\\CachesConfiguration' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Foundation/CachesConfiguration.php', - 'Illuminate\\Contracts\\Foundation\\CachesRoutes' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Foundation/CachesRoutes.php', - 'Illuminate\\Contracts\\Foundation\\ExceptionRenderer' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Foundation/ExceptionRenderer.php', - 'Illuminate\\Contracts\\Foundation\\MaintenanceMode' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Foundation/MaintenanceMode.php', - 'Illuminate\\Contracts\\Hashing\\Hasher' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Hashing/Hasher.php', - 'Illuminate\\Contracts\\Http\\Kernel' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Http/Kernel.php', - 'Illuminate\\Contracts\\Mail\\Attachable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Mail/Attachable.php', - 'Illuminate\\Contracts\\Mail\\Factory' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Mail/Factory.php', - 'Illuminate\\Contracts\\Mail\\MailQueue' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Mail/MailQueue.php', - 'Illuminate\\Contracts\\Mail\\Mailable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Mail/Mailable.php', - 'Illuminate\\Contracts\\Mail\\Mailer' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Mail/Mailer.php', - 'Illuminate\\Contracts\\Notifications\\Dispatcher' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Notifications/Dispatcher.php', - 'Illuminate\\Contracts\\Notifications\\Factory' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Notifications/Factory.php', - 'Illuminate\\Contracts\\Pagination\\CursorPaginator' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Pagination/CursorPaginator.php', - 'Illuminate\\Contracts\\Pagination\\LengthAwarePaginator' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Pagination/LengthAwarePaginator.php', - 'Illuminate\\Contracts\\Pagination\\Paginator' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Pagination/Paginator.php', - 'Illuminate\\Contracts\\Pipeline\\Hub' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Pipeline/Hub.php', - 'Illuminate\\Contracts\\Pipeline\\Pipeline' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Pipeline/Pipeline.php', - 'Illuminate\\Contracts\\Process\\InvokedProcess' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Process/InvokedProcess.php', - 'Illuminate\\Contracts\\Process\\ProcessResult' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Process/ProcessResult.php', - 'Illuminate\\Contracts\\Queue\\ClearableQueue' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Queue/ClearableQueue.php', - 'Illuminate\\Contracts\\Queue\\EntityNotFoundException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Queue/EntityNotFoundException.php', - 'Illuminate\\Contracts\\Queue\\EntityResolver' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Queue/EntityResolver.php', - 'Illuminate\\Contracts\\Queue\\Factory' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Queue/Factory.php', - 'Illuminate\\Contracts\\Queue\\Job' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Queue/Job.php', - 'Illuminate\\Contracts\\Queue\\Monitor' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Queue/Monitor.php', - 'Illuminate\\Contracts\\Queue\\Queue' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Queue/Queue.php', - 'Illuminate\\Contracts\\Queue\\QueueableCollection' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Queue/QueueableCollection.php', - 'Illuminate\\Contracts\\Queue\\QueueableEntity' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Queue/QueueableEntity.php', - 'Illuminate\\Contracts\\Queue\\ShouldBeEncrypted' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Queue/ShouldBeEncrypted.php', - 'Illuminate\\Contracts\\Queue\\ShouldBeUnique' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Queue/ShouldBeUnique.php', - 'Illuminate\\Contracts\\Queue\\ShouldBeUniqueUntilProcessing' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Queue/ShouldBeUniqueUntilProcessing.php', - 'Illuminate\\Contracts\\Queue\\ShouldQueue' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Queue/ShouldQueue.php', - 'Illuminate\\Contracts\\Queue\\ShouldQueueAfterCommit' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Queue/ShouldQueueAfterCommit.php', - 'Illuminate\\Contracts\\Redis\\Connection' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Redis/Connection.php', - 'Illuminate\\Contracts\\Redis\\Connector' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Redis/Connector.php', - 'Illuminate\\Contracts\\Redis\\Factory' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Redis/Factory.php', - 'Illuminate\\Contracts\\Redis\\LimiterTimeoutException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Redis/LimiterTimeoutException.php', - 'Illuminate\\Contracts\\Routing\\BindingRegistrar' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Routing/BindingRegistrar.php', - 'Illuminate\\Contracts\\Routing\\Registrar' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Routing/Registrar.php', - 'Illuminate\\Contracts\\Routing\\ResponseFactory' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Routing/ResponseFactory.php', - 'Illuminate\\Contracts\\Routing\\UrlGenerator' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Routing/UrlGenerator.php', - 'Illuminate\\Contracts\\Routing\\UrlRoutable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Routing/UrlRoutable.php', - 'Illuminate\\Contracts\\Session\\Middleware\\AuthenticatesSessions' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Session/Middleware/AuthenticatesSessions.php', - 'Illuminate\\Contracts\\Session\\Session' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Session/Session.php', - 'Illuminate\\Contracts\\Support\\Arrayable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Support/Arrayable.php', - 'Illuminate\\Contracts\\Support\\CanBeEscapedWhenCastToString' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Support/CanBeEscapedWhenCastToString.php', - 'Illuminate\\Contracts\\Support\\DeferrableProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Support/DeferrableProvider.php', - 'Illuminate\\Contracts\\Support\\DeferringDisplayableValue' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Support/DeferringDisplayableValue.php', - 'Illuminate\\Contracts\\Support\\Htmlable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Support/Htmlable.php', - 'Illuminate\\Contracts\\Support\\Jsonable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Support/Jsonable.php', - 'Illuminate\\Contracts\\Support\\MessageBag' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Support/MessageBag.php', - 'Illuminate\\Contracts\\Support\\MessageProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Support/MessageProvider.php', - 'Illuminate\\Contracts\\Support\\Renderable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Support/Renderable.php', - 'Illuminate\\Contracts\\Support\\Responsable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Support/Responsable.php', - 'Illuminate\\Contracts\\Support\\ValidatedData' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Support/ValidatedData.php', - 'Illuminate\\Contracts\\Translation\\HasLocalePreference' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Translation/HasLocalePreference.php', - 'Illuminate\\Contracts\\Translation\\Loader' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Translation/Loader.php', - 'Illuminate\\Contracts\\Translation\\Translator' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Translation/Translator.php', - 'Illuminate\\Contracts\\Validation\\DataAwareRule' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Validation/DataAwareRule.php', - 'Illuminate\\Contracts\\Validation\\Factory' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Validation/Factory.php', - 'Illuminate\\Contracts\\Validation\\ImplicitRule' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Validation/ImplicitRule.php', - 'Illuminate\\Contracts\\Validation\\InvokableRule' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Validation/InvokableRule.php', - 'Illuminate\\Contracts\\Validation\\Rule' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Validation/Rule.php', - 'Illuminate\\Contracts\\Validation\\UncompromisedVerifier' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Validation/UncompromisedVerifier.php', - 'Illuminate\\Contracts\\Validation\\ValidatesWhenResolved' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Validation/ValidatesWhenResolved.php', - 'Illuminate\\Contracts\\Validation\\ValidationRule' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Validation/ValidationRule.php', - 'Illuminate\\Contracts\\Validation\\Validator' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Validation/Validator.php', - 'Illuminate\\Contracts\\Validation\\ValidatorAwareRule' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Validation/ValidatorAwareRule.php', - 'Illuminate\\Contracts\\View\\Engine' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/View/Engine.php', - 'Illuminate\\Contracts\\View\\Factory' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/View/Factory.php', - 'Illuminate\\Contracts\\View\\View' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/View/View.php', - 'Illuminate\\Contracts\\View\\ViewCompilationException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/View/ViewCompilationException.php', - 'Illuminate\\Cookie\\CookieJar' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cookie/CookieJar.php', - 'Illuminate\\Cookie\\CookieServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cookie/CookieServiceProvider.php', - 'Illuminate\\Cookie\\CookieValuePrefix' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cookie/CookieValuePrefix.php', - 'Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php', - 'Illuminate\\Cookie\\Middleware\\EncryptCookies' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php', - 'Illuminate\\Database\\Capsule\\Manager' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Capsule/Manager.php', - 'Illuminate\\Database\\ClassMorphViolationException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/ClassMorphViolationException.php', - 'Illuminate\\Database\\Concerns\\BuildsQueries' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Concerns/BuildsQueries.php', - 'Illuminate\\Database\\Concerns\\CompilesJsonPaths' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Concerns/CompilesJsonPaths.php', - 'Illuminate\\Database\\Concerns\\ExplainsQueries' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Concerns/ExplainsQueries.php', - 'Illuminate\\Database\\Concerns\\ManagesTransactions' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Concerns/ManagesTransactions.php', - 'Illuminate\\Database\\Concerns\\ParsesSearchPath' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Concerns/ParsesSearchPath.php', - 'Illuminate\\Database\\ConfigurationUrlParser' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/ConfigurationUrlParser.php', - 'Illuminate\\Database\\Connection' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Connection.php', - 'Illuminate\\Database\\ConnectionInterface' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/ConnectionInterface.php', - 'Illuminate\\Database\\ConnectionResolver' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/ConnectionResolver.php', - 'Illuminate\\Database\\ConnectionResolverInterface' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/ConnectionResolverInterface.php', - 'Illuminate\\Database\\Connectors\\ConnectionFactory' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php', - 'Illuminate\\Database\\Connectors\\Connector' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Connectors/Connector.php', - 'Illuminate\\Database\\Connectors\\ConnectorInterface' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Connectors/ConnectorInterface.php', - 'Illuminate\\Database\\Connectors\\MySqlConnector' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Connectors/MySqlConnector.php', - 'Illuminate\\Database\\Connectors\\PostgresConnector' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Connectors/PostgresConnector.php', - 'Illuminate\\Database\\Connectors\\SQLiteConnector' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Connectors/SQLiteConnector.php', - 'Illuminate\\Database\\Connectors\\SqlServerConnector' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Connectors/SqlServerConnector.php', - 'Illuminate\\Database\\Console\\DatabaseInspectionCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Console/DatabaseInspectionCommand.php', - 'Illuminate\\Database\\Console\\DbCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Console/DbCommand.php', - 'Illuminate\\Database\\Console\\DumpCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Console/DumpCommand.php', - 'Illuminate\\Database\\Console\\Factories\\FactoryMakeCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Console/Factories/FactoryMakeCommand.php', - 'Illuminate\\Database\\Console\\Migrations\\BaseCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Console/Migrations/BaseCommand.php', - 'Illuminate\\Database\\Console\\Migrations\\FreshCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Console/Migrations/FreshCommand.php', - 'Illuminate\\Database\\Console\\Migrations\\InstallCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Console/Migrations/InstallCommand.php', - 'Illuminate\\Database\\Console\\Migrations\\MigrateCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php', - 'Illuminate\\Database\\Console\\Migrations\\MigrateMakeCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateMakeCommand.php', - 'Illuminate\\Database\\Console\\Migrations\\RefreshCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Console/Migrations/RefreshCommand.php', - 'Illuminate\\Database\\Console\\Migrations\\ResetCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Console/Migrations/ResetCommand.php', - 'Illuminate\\Database\\Console\\Migrations\\RollbackCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Console/Migrations/RollbackCommand.php', - 'Illuminate\\Database\\Console\\Migrations\\StatusCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Console/Migrations/StatusCommand.php', - 'Illuminate\\Database\\Console\\Migrations\\TableGuesser' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Console/Migrations/TableGuesser.php', - 'Illuminate\\Database\\Console\\MonitorCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Console/MonitorCommand.php', - 'Illuminate\\Database\\Console\\PruneCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Console/PruneCommand.php', - 'Illuminate\\Database\\Console\\Seeds\\SeedCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Console/Seeds/SeedCommand.php', - 'Illuminate\\Database\\Console\\Seeds\\SeederMakeCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Console/Seeds/SeederMakeCommand.php', - 'Illuminate\\Database\\Console\\Seeds\\WithoutModelEvents' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Console/Seeds/WithoutModelEvents.php', - 'Illuminate\\Database\\Console\\ShowCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Console/ShowCommand.php', - 'Illuminate\\Database\\Console\\ShowModelCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Console/ShowModelCommand.php', - 'Illuminate\\Database\\Console\\TableCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Console/TableCommand.php', - 'Illuminate\\Database\\Console\\WipeCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Console/WipeCommand.php', - 'Illuminate\\Database\\DBAL\\TimestampType' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/DBAL/TimestampType.php', - 'Illuminate\\Database\\DatabaseManager' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/DatabaseManager.php', - 'Illuminate\\Database\\DatabaseServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/DatabaseServiceProvider.php', - 'Illuminate\\Database\\DatabaseTransactionRecord' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/DatabaseTransactionRecord.php', - 'Illuminate\\Database\\DatabaseTransactionsManager' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/DatabaseTransactionsManager.php', - 'Illuminate\\Database\\DeadlockException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/DeadlockException.php', - 'Illuminate\\Database\\DetectsConcurrencyErrors' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/DetectsConcurrencyErrors.php', - 'Illuminate\\Database\\DetectsLostConnections' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/DetectsLostConnections.php', - 'Illuminate\\Database\\Eloquent\\Attributes\\ObservedBy' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Attributes/ObservedBy.php', - 'Illuminate\\Database\\Eloquent\\Attributes\\ScopedBy' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Attributes/ScopedBy.php', - 'Illuminate\\Database\\Eloquent\\BroadcastableModelEventOccurred' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/BroadcastableModelEventOccurred.php', - 'Illuminate\\Database\\Eloquent\\BroadcastsEvents' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/BroadcastsEvents.php', - 'Illuminate\\Database\\Eloquent\\BroadcastsEventsAfterCommit' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/BroadcastsEventsAfterCommit.php', - 'Illuminate\\Database\\Eloquent\\Builder' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php', - 'Illuminate\\Database\\Eloquent\\Casts\\ArrayObject' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Casts/ArrayObject.php', - 'Illuminate\\Database\\Eloquent\\Casts\\AsArrayObject' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Casts/AsArrayObject.php', - 'Illuminate\\Database\\Eloquent\\Casts\\AsCollection' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Casts/AsCollection.php', - 'Illuminate\\Database\\Eloquent\\Casts\\AsEncryptedArrayObject' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Casts/AsEncryptedArrayObject.php', - 'Illuminate\\Database\\Eloquent\\Casts\\AsEncryptedCollection' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Casts/AsEncryptedCollection.php', - 'Illuminate\\Database\\Eloquent\\Casts\\AsEnumArrayObject' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Casts/AsEnumArrayObject.php', - 'Illuminate\\Database\\Eloquent\\Casts\\AsEnumCollection' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Casts/AsEnumCollection.php', - 'Illuminate\\Database\\Eloquent\\Casts\\AsStringable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Casts/AsStringable.php', - 'Illuminate\\Database\\Eloquent\\Casts\\Attribute' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Casts/Attribute.php', - 'Illuminate\\Database\\Eloquent\\Casts\\Json' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Casts/Json.php', - 'Illuminate\\Database\\Eloquent\\Collection' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Collection.php', - 'Illuminate\\Database\\Eloquent\\Concerns\\GuardsAttributes' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/GuardsAttributes.php', - 'Illuminate\\Database\\Eloquent\\Concerns\\HasAttributes' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php', - 'Illuminate\\Database\\Eloquent\\Concerns\\HasEvents' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasEvents.php', - 'Illuminate\\Database\\Eloquent\\Concerns\\HasGlobalScopes' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasGlobalScopes.php', - 'Illuminate\\Database\\Eloquent\\Concerns\\HasRelationships' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasRelationships.php', - 'Illuminate\\Database\\Eloquent\\Concerns\\HasTimestamps' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasTimestamps.php', - 'Illuminate\\Database\\Eloquent\\Concerns\\HasUlids' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasUlids.php', - 'Illuminate\\Database\\Eloquent\\Concerns\\HasUniqueIds' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasUniqueIds.php', - 'Illuminate\\Database\\Eloquent\\Concerns\\HasUuids' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasUuids.php', - 'Illuminate\\Database\\Eloquent\\Concerns\\HidesAttributes' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HidesAttributes.php', - 'Illuminate\\Database\\Eloquent\\Concerns\\QueriesRelationships' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/QueriesRelationships.php', - 'Illuminate\\Database\\Eloquent\\Factories\\BelongsToManyRelationship' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Factories/BelongsToManyRelationship.php', - 'Illuminate\\Database\\Eloquent\\Factories\\BelongsToRelationship' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Factories/BelongsToRelationship.php', - 'Illuminate\\Database\\Eloquent\\Factories\\CrossJoinSequence' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Factories/CrossJoinSequence.php', - 'Illuminate\\Database\\Eloquent\\Factories\\Factory' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Factories/Factory.php', - 'Illuminate\\Database\\Eloquent\\Factories\\HasFactory' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Factories/HasFactory.php', - 'Illuminate\\Database\\Eloquent\\Factories\\Relationship' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Factories/Relationship.php', - 'Illuminate\\Database\\Eloquent\\Factories\\Sequence' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Factories/Sequence.php', - 'Illuminate\\Database\\Eloquent\\HigherOrderBuilderProxy' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/HigherOrderBuilderProxy.php', - 'Illuminate\\Database\\Eloquent\\InvalidCastException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/InvalidCastException.php', - 'Illuminate\\Database\\Eloquent\\JsonEncodingException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/JsonEncodingException.php', - 'Illuminate\\Database\\Eloquent\\MassAssignmentException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/MassAssignmentException.php', - 'Illuminate\\Database\\Eloquent\\MassPrunable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/MassPrunable.php', - 'Illuminate\\Database\\Eloquent\\MissingAttributeException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/MissingAttributeException.php', - 'Illuminate\\Database\\Eloquent\\Model' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Model.php', - 'Illuminate\\Database\\Eloquent\\ModelNotFoundException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/ModelNotFoundException.php', - 'Illuminate\\Database\\Eloquent\\PendingHasThroughRelationship' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/PendingHasThroughRelationship.php', - 'Illuminate\\Database\\Eloquent\\Prunable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Prunable.php', - 'Illuminate\\Database\\Eloquent\\QueueEntityResolver' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/QueueEntityResolver.php', - 'Illuminate\\Database\\Eloquent\\RelationNotFoundException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/RelationNotFoundException.php', - 'Illuminate\\Database\\Eloquent\\Relations\\BelongsTo' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/BelongsTo.php', - 'Illuminate\\Database\\Eloquent\\Relations\\BelongsToMany' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/BelongsToMany.php', - 'Illuminate\\Database\\Eloquent\\Relations\\Concerns\\AsPivot' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Concerns/AsPivot.php', - 'Illuminate\\Database\\Eloquent\\Relations\\Concerns\\CanBeOneOfMany' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Concerns/CanBeOneOfMany.php', - 'Illuminate\\Database\\Eloquent\\Relations\\Concerns\\ComparesRelatedModels' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Concerns/ComparesRelatedModels.php', - 'Illuminate\\Database\\Eloquent\\Relations\\Concerns\\InteractsWithDictionary' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Concerns/InteractsWithDictionary.php', - 'Illuminate\\Database\\Eloquent\\Relations\\Concerns\\InteractsWithPivotTable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Concerns/InteractsWithPivotTable.php', - 'Illuminate\\Database\\Eloquent\\Relations\\Concerns\\SupportsDefaultModels' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Concerns/SupportsDefaultModels.php', - 'Illuminate\\Database\\Eloquent\\Relations\\HasMany' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasMany.php', - 'Illuminate\\Database\\Eloquent\\Relations\\HasManyThrough' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasManyThrough.php', - 'Illuminate\\Database\\Eloquent\\Relations\\HasOne' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasOne.php', - 'Illuminate\\Database\\Eloquent\\Relations\\HasOneOrMany' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasOneOrMany.php', - 'Illuminate\\Database\\Eloquent\\Relations\\HasOneThrough' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasOneThrough.php', - 'Illuminate\\Database\\Eloquent\\Relations\\MorphMany' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/MorphMany.php', - 'Illuminate\\Database\\Eloquent\\Relations\\MorphOne' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/MorphOne.php', - 'Illuminate\\Database\\Eloquent\\Relations\\MorphOneOrMany' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/MorphOneOrMany.php', - 'Illuminate\\Database\\Eloquent\\Relations\\MorphPivot' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/MorphPivot.php', - 'Illuminate\\Database\\Eloquent\\Relations\\MorphTo' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/MorphTo.php', - 'Illuminate\\Database\\Eloquent\\Relations\\MorphToMany' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/MorphToMany.php', - 'Illuminate\\Database\\Eloquent\\Relations\\Pivot' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Pivot.php', - 'Illuminate\\Database\\Eloquent\\Relations\\Relation' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Relation.php', - 'Illuminate\\Database\\Eloquent\\Scope' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Scope.php', - 'Illuminate\\Database\\Eloquent\\SoftDeletes' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/SoftDeletes.php', - 'Illuminate\\Database\\Eloquent\\SoftDeletingScope' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/SoftDeletingScope.php', - 'Illuminate\\Database\\Events\\ConnectionEstablished' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Events/ConnectionEstablished.php', - 'Illuminate\\Database\\Events\\ConnectionEvent' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Events/ConnectionEvent.php', - 'Illuminate\\Database\\Events\\DatabaseBusy' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Events/DatabaseBusy.php', - 'Illuminate\\Database\\Events\\DatabaseRefreshed' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Events/DatabaseRefreshed.php', - 'Illuminate\\Database\\Events\\MigrationEnded' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Events/MigrationEnded.php', - 'Illuminate\\Database\\Events\\MigrationEvent' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Events/MigrationEvent.php', - 'Illuminate\\Database\\Events\\MigrationStarted' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Events/MigrationStarted.php', - 'Illuminate\\Database\\Events\\MigrationsEnded' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Events/MigrationsEnded.php', - 'Illuminate\\Database\\Events\\MigrationsEvent' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Events/MigrationsEvent.php', - 'Illuminate\\Database\\Events\\MigrationsStarted' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Events/MigrationsStarted.php', - 'Illuminate\\Database\\Events\\ModelPruningFinished' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Events/ModelPruningFinished.php', - 'Illuminate\\Database\\Events\\ModelPruningStarting' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Events/ModelPruningStarting.php', - 'Illuminate\\Database\\Events\\ModelsPruned' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Events/ModelsPruned.php', - 'Illuminate\\Database\\Events\\NoPendingMigrations' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Events/NoPendingMigrations.php', - 'Illuminate\\Database\\Events\\QueryExecuted' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Events/QueryExecuted.php', - 'Illuminate\\Database\\Events\\SchemaDumped' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Events/SchemaDumped.php', - 'Illuminate\\Database\\Events\\SchemaLoaded' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Events/SchemaLoaded.php', - 'Illuminate\\Database\\Events\\StatementPrepared' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Events/StatementPrepared.php', - 'Illuminate\\Database\\Events\\TransactionBeginning' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Events/TransactionBeginning.php', - 'Illuminate\\Database\\Events\\TransactionCommitted' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Events/TransactionCommitted.php', - 'Illuminate\\Database\\Events\\TransactionCommitting' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Events/TransactionCommitting.php', - 'Illuminate\\Database\\Events\\TransactionRolledBack' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Events/TransactionRolledBack.php', - 'Illuminate\\Database\\Grammar' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Grammar.php', - 'Illuminate\\Database\\LazyLoadingViolationException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/LazyLoadingViolationException.php', - 'Illuminate\\Database\\LostConnectionException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/LostConnectionException.php', - 'Illuminate\\Database\\MigrationServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/MigrationServiceProvider.php', - 'Illuminate\\Database\\Migrations\\DatabaseMigrationRepository' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Migrations/DatabaseMigrationRepository.php', - 'Illuminate\\Database\\Migrations\\Migration' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Migrations/Migration.php', - 'Illuminate\\Database\\Migrations\\MigrationCreator' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Migrations/MigrationCreator.php', - 'Illuminate\\Database\\Migrations\\MigrationRepositoryInterface' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Migrations/MigrationRepositoryInterface.php', - 'Illuminate\\Database\\Migrations\\Migrator' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php', - 'Illuminate\\Database\\MultipleColumnsSelectedException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/MultipleColumnsSelectedException.php', - 'Illuminate\\Database\\MultipleRecordsFoundException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/MultipleRecordsFoundException.php', - 'Illuminate\\Database\\MySqlConnection' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/MySqlConnection.php', - 'Illuminate\\Database\\PDO\\Concerns\\ConnectsToDatabase' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/PDO/Concerns/ConnectsToDatabase.php', - 'Illuminate\\Database\\PDO\\Connection' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/PDO/Connection.php', - 'Illuminate\\Database\\PDO\\MySqlDriver' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/PDO/MySqlDriver.php', - 'Illuminate\\Database\\PDO\\PostgresDriver' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/PDO/PostgresDriver.php', - 'Illuminate\\Database\\PDO\\SQLiteDriver' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/PDO/SQLiteDriver.php', - 'Illuminate\\Database\\PDO\\SqlServerConnection' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/PDO/SqlServerConnection.php', - 'Illuminate\\Database\\PDO\\SqlServerDriver' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/PDO/SqlServerDriver.php', - 'Illuminate\\Database\\PostgresConnection' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/PostgresConnection.php', - 'Illuminate\\Database\\QueryException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/QueryException.php', - 'Illuminate\\Database\\Query\\Builder' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Query/Builder.php', - 'Illuminate\\Database\\Query\\Expression' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Query/Expression.php', - 'Illuminate\\Database\\Query\\Grammars\\Grammar' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php', - 'Illuminate\\Database\\Query\\Grammars\\MySqlGrammar' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Query/Grammars/MySqlGrammar.php', - 'Illuminate\\Database\\Query\\Grammars\\PostgresGrammar' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Query/Grammars/PostgresGrammar.php', - 'Illuminate\\Database\\Query\\Grammars\\SQLiteGrammar' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Query/Grammars/SQLiteGrammar.php', - 'Illuminate\\Database\\Query\\Grammars\\SqlServerGrammar' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Query/Grammars/SqlServerGrammar.php', - 'Illuminate\\Database\\Query\\IndexHint' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Query/IndexHint.php', - 'Illuminate\\Database\\Query\\JoinClause' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Query/JoinClause.php', - 'Illuminate\\Database\\Query\\JoinLateralClause' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Query/JoinLateralClause.php', - 'Illuminate\\Database\\Query\\Processors\\MySqlProcessor' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Query/Processors/MySqlProcessor.php', - 'Illuminate\\Database\\Query\\Processors\\PostgresProcessor' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Query/Processors/PostgresProcessor.php', - 'Illuminate\\Database\\Query\\Processors\\Processor' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Query/Processors/Processor.php', - 'Illuminate\\Database\\Query\\Processors\\SQLiteProcessor' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Query/Processors/SQLiteProcessor.php', - 'Illuminate\\Database\\Query\\Processors\\SqlServerProcessor' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Query/Processors/SqlServerProcessor.php', - 'Illuminate\\Database\\RecordsNotFoundException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/RecordsNotFoundException.php', - 'Illuminate\\Database\\SQLiteConnection' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/SQLiteConnection.php', - 'Illuminate\\Database\\SQLiteDatabaseDoesNotExistException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/SQLiteDatabaseDoesNotExistException.php', - 'Illuminate\\Database\\Schema\\Blueprint' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Schema/Blueprint.php', - 'Illuminate\\Database\\Schema\\Builder' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Schema/Builder.php', - 'Illuminate\\Database\\Schema\\ColumnDefinition' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Schema/ColumnDefinition.php', - 'Illuminate\\Database\\Schema\\ForeignIdColumnDefinition' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Schema/ForeignIdColumnDefinition.php', - 'Illuminate\\Database\\Schema\\ForeignKeyDefinition' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Schema/ForeignKeyDefinition.php', - 'Illuminate\\Database\\Schema\\Grammars\\ChangeColumn' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Schema/Grammars/ChangeColumn.php', - 'Illuminate\\Database\\Schema\\Grammars\\Grammar' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Schema/Grammars/Grammar.php', - 'Illuminate\\Database\\Schema\\Grammars\\MySqlGrammar' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Schema/Grammars/MySqlGrammar.php', - 'Illuminate\\Database\\Schema\\Grammars\\PostgresGrammar' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Schema/Grammars/PostgresGrammar.php', - 'Illuminate\\Database\\Schema\\Grammars\\RenameColumn' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Schema/Grammars/RenameColumn.php', - 'Illuminate\\Database\\Schema\\Grammars\\SQLiteGrammar' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Schema/Grammars/SQLiteGrammar.php', - 'Illuminate\\Database\\Schema\\Grammars\\SqlServerGrammar' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Schema/Grammars/SqlServerGrammar.php', - 'Illuminate\\Database\\Schema\\IndexDefinition' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Schema/IndexDefinition.php', - 'Illuminate\\Database\\Schema\\MySqlBuilder' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Schema/MySqlBuilder.php', - 'Illuminate\\Database\\Schema\\MySqlSchemaState' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Schema/MySqlSchemaState.php', - 'Illuminate\\Database\\Schema\\PostgresBuilder' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Schema/PostgresBuilder.php', - 'Illuminate\\Database\\Schema\\PostgresSchemaState' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Schema/PostgresSchemaState.php', - 'Illuminate\\Database\\Schema\\SQLiteBuilder' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Schema/SQLiteBuilder.php', - 'Illuminate\\Database\\Schema\\SchemaState' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Schema/SchemaState.php', - 'Illuminate\\Database\\Schema\\SqlServerBuilder' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Schema/SqlServerBuilder.php', - 'Illuminate\\Database\\Schema\\SqliteSchemaState' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Schema/SqliteSchemaState.php', - 'Illuminate\\Database\\Seeder' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Seeder.php', - 'Illuminate\\Database\\SqlServerConnection' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/SqlServerConnection.php', - 'Illuminate\\Database\\UniqueConstraintViolationException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/UniqueConstraintViolationException.php', - 'Illuminate\\Encryption\\Encrypter' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Encryption/Encrypter.php', - 'Illuminate\\Encryption\\EncryptionServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Encryption/EncryptionServiceProvider.php', - 'Illuminate\\Encryption\\MissingAppKeyException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Encryption/MissingAppKeyException.php', - 'Illuminate\\Events\\CallQueuedListener' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Events/CallQueuedListener.php', - 'Illuminate\\Events\\Dispatcher' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Events/Dispatcher.php', - 'Illuminate\\Events\\EventServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Events/EventServiceProvider.php', - 'Illuminate\\Events\\InvokeQueuedClosure' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Events/InvokeQueuedClosure.php', - 'Illuminate\\Events\\NullDispatcher' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Events/NullDispatcher.php', - 'Illuminate\\Events\\QueuedClosure' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Events/QueuedClosure.php', - 'Illuminate\\Filesystem\\AwsS3V3Adapter' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Filesystem/AwsS3V3Adapter.php', - 'Illuminate\\Filesystem\\Filesystem' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Filesystem/Filesystem.php', - 'Illuminate\\Filesystem\\FilesystemAdapter' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php', - 'Illuminate\\Filesystem\\FilesystemManager' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Filesystem/FilesystemManager.php', - 'Illuminate\\Filesystem\\FilesystemServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Filesystem/FilesystemServiceProvider.php', - 'Illuminate\\Filesystem\\LockableFile' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Filesystem/LockableFile.php', - 'Illuminate\\Foundation\\AliasLoader' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/AliasLoader.php', - 'Illuminate\\Foundation\\Application' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Application.php', - 'Illuminate\\Foundation\\Auth\\Access\\Authorizable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Auth/Access/Authorizable.php', - 'Illuminate\\Foundation\\Auth\\Access\\AuthorizesRequests' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Auth/Access/AuthorizesRequests.php', - 'Illuminate\\Foundation\\Auth\\AuthenticatesUsers' => __DIR__ . '/..' . '/laravel/ui/auth-backend/AuthenticatesUsers.php', - 'Illuminate\\Foundation\\Auth\\ConfirmsPasswords' => __DIR__ . '/..' . '/laravel/ui/auth-backend/ConfirmsPasswords.php', - 'Illuminate\\Foundation\\Auth\\EmailVerificationRequest' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Auth/EmailVerificationRequest.php', - 'Illuminate\\Foundation\\Auth\\RedirectsUsers' => __DIR__ . '/..' . '/laravel/ui/auth-backend/RedirectsUsers.php', - 'Illuminate\\Foundation\\Auth\\RegistersUsers' => __DIR__ . '/..' . '/laravel/ui/auth-backend/RegistersUsers.php', - 'Illuminate\\Foundation\\Auth\\ResetsPasswords' => __DIR__ . '/..' . '/laravel/ui/auth-backend/ResetsPasswords.php', - 'Illuminate\\Foundation\\Auth\\SendsPasswordResetEmails' => __DIR__ . '/..' . '/laravel/ui/auth-backend/SendsPasswordResetEmails.php', - 'Illuminate\\Foundation\\Auth\\ThrottlesLogins' => __DIR__ . '/..' . '/laravel/ui/auth-backend/ThrottlesLogins.php', - 'Illuminate\\Foundation\\Auth\\User' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Auth/User.php', - 'Illuminate\\Foundation\\Auth\\VerifiesEmails' => __DIR__ . '/..' . '/laravel/ui/auth-backend/VerifiesEmails.php', - 'Illuminate\\Foundation\\Bootstrap\\BootProviders' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Bootstrap/BootProviders.php', - 'Illuminate\\Foundation\\Bootstrap\\HandleExceptions' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php', - 'Illuminate\\Foundation\\Bootstrap\\LoadConfiguration' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Bootstrap/LoadConfiguration.php', - 'Illuminate\\Foundation\\Bootstrap\\LoadEnvironmentVariables' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Bootstrap/LoadEnvironmentVariables.php', - 'Illuminate\\Foundation\\Bootstrap\\RegisterFacades' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Bootstrap/RegisterFacades.php', - 'Illuminate\\Foundation\\Bootstrap\\RegisterProviders' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Bootstrap/RegisterProviders.php', - 'Illuminate\\Foundation\\Bootstrap\\SetRequestForConsole' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Bootstrap/SetRequestForConsole.php', - 'Illuminate\\Foundation\\Bus\\Dispatchable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Bus/Dispatchable.php', - 'Illuminate\\Foundation\\Bus\\DispatchesJobs' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Bus/DispatchesJobs.php', - 'Illuminate\\Foundation\\Bus\\PendingChain' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Bus/PendingChain.php', - 'Illuminate\\Foundation\\Bus\\PendingClosureDispatch' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Bus/PendingClosureDispatch.php', - 'Illuminate\\Foundation\\Bus\\PendingDispatch' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Bus/PendingDispatch.php', - 'Illuminate\\Foundation\\CacheBasedMaintenanceMode' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/CacheBasedMaintenanceMode.php', - 'Illuminate\\Foundation\\ComposerScripts' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/ComposerScripts.php', - 'Illuminate\\Foundation\\Concerns\\ResolvesDumpSource' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Concerns/ResolvesDumpSource.php', - 'Illuminate\\Foundation\\Console\\AboutCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/AboutCommand.php', - 'Illuminate\\Foundation\\Console\\CastMakeCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/CastMakeCommand.php', - 'Illuminate\\Foundation\\Console\\ChannelListCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/ChannelListCommand.php', - 'Illuminate\\Foundation\\Console\\ChannelMakeCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/ChannelMakeCommand.php', - 'Illuminate\\Foundation\\Console\\ClearCompiledCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/ClearCompiledCommand.php', - 'Illuminate\\Foundation\\Console\\CliDumper' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/CliDumper.php', - 'Illuminate\\Foundation\\Console\\ClosureCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/ClosureCommand.php', - 'Illuminate\\Foundation\\Console\\ComponentMakeCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/ComponentMakeCommand.php', - 'Illuminate\\Foundation\\Console\\ConfigCacheCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/ConfigCacheCommand.php', - 'Illuminate\\Foundation\\Console\\ConfigClearCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/ConfigClearCommand.php', - 'Illuminate\\Foundation\\Console\\ConfigShowCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/ConfigShowCommand.php', - 'Illuminate\\Foundation\\Console\\ConsoleMakeCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/ConsoleMakeCommand.php', - 'Illuminate\\Foundation\\Console\\DocsCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/DocsCommand.php', - 'Illuminate\\Foundation\\Console\\DownCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/DownCommand.php', - 'Illuminate\\Foundation\\Console\\EnvironmentCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/EnvironmentCommand.php', - 'Illuminate\\Foundation\\Console\\EnvironmentDecryptCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/EnvironmentDecryptCommand.php', - 'Illuminate\\Foundation\\Console\\EnvironmentEncryptCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/EnvironmentEncryptCommand.php', - 'Illuminate\\Foundation\\Console\\EventCacheCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/EventCacheCommand.php', - 'Illuminate\\Foundation\\Console\\EventClearCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/EventClearCommand.php', - 'Illuminate\\Foundation\\Console\\EventGenerateCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/EventGenerateCommand.php', - 'Illuminate\\Foundation\\Console\\EventListCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/EventListCommand.php', - 'Illuminate\\Foundation\\Console\\EventMakeCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/EventMakeCommand.php', - 'Illuminate\\Foundation\\Console\\ExceptionMakeCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/ExceptionMakeCommand.php', - 'Illuminate\\Foundation\\Console\\JobMakeCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/JobMakeCommand.php', - 'Illuminate\\Foundation\\Console\\Kernel' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php', - 'Illuminate\\Foundation\\Console\\KeyGenerateCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/KeyGenerateCommand.php', - 'Illuminate\\Foundation\\Console\\LangPublishCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/LangPublishCommand.php', - 'Illuminate\\Foundation\\Console\\ListenerMakeCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/ListenerMakeCommand.php', - 'Illuminate\\Foundation\\Console\\MailMakeCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/MailMakeCommand.php', - 'Illuminate\\Foundation\\Console\\ModelMakeCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/ModelMakeCommand.php', - 'Illuminate\\Foundation\\Console\\NotificationMakeCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/NotificationMakeCommand.php', - 'Illuminate\\Foundation\\Console\\ObserverMakeCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/ObserverMakeCommand.php', - 'Illuminate\\Foundation\\Console\\OptimizeClearCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/OptimizeClearCommand.php', - 'Illuminate\\Foundation\\Console\\OptimizeCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/OptimizeCommand.php', - 'Illuminate\\Foundation\\Console\\PackageDiscoverCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/PackageDiscoverCommand.php', - 'Illuminate\\Foundation\\Console\\PolicyMakeCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/PolicyMakeCommand.php', - 'Illuminate\\Foundation\\Console\\ProviderMakeCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/ProviderMakeCommand.php', - 'Illuminate\\Foundation\\Console\\QueuedCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/QueuedCommand.php', - 'Illuminate\\Foundation\\Console\\RequestMakeCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/RequestMakeCommand.php', - 'Illuminate\\Foundation\\Console\\ResourceMakeCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/ResourceMakeCommand.php', - 'Illuminate\\Foundation\\Console\\RouteCacheCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/RouteCacheCommand.php', - 'Illuminate\\Foundation\\Console\\RouteClearCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/RouteClearCommand.php', - 'Illuminate\\Foundation\\Console\\RouteListCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/RouteListCommand.php', - 'Illuminate\\Foundation\\Console\\RuleMakeCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/RuleMakeCommand.php', - 'Illuminate\\Foundation\\Console\\ScopeMakeCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/ScopeMakeCommand.php', - 'Illuminate\\Foundation\\Console\\ServeCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/ServeCommand.php', - 'Illuminate\\Foundation\\Console\\StorageLinkCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/StorageLinkCommand.php', - 'Illuminate\\Foundation\\Console\\StorageUnlinkCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/StorageUnlinkCommand.php', - 'Illuminate\\Foundation\\Console\\StubPublishCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/StubPublishCommand.php', - 'Illuminate\\Foundation\\Console\\TestMakeCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/TestMakeCommand.php', - 'Illuminate\\Foundation\\Console\\UpCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/UpCommand.php', - 'Illuminate\\Foundation\\Console\\VendorPublishCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/VendorPublishCommand.php', - 'Illuminate\\Foundation\\Console\\ViewCacheCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/ViewCacheCommand.php', - 'Illuminate\\Foundation\\Console\\ViewClearCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/ViewClearCommand.php', - 'Illuminate\\Foundation\\Console\\ViewMakeCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/ViewMakeCommand.php', - 'Illuminate\\Foundation\\EnvironmentDetector' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/EnvironmentDetector.php', - 'Illuminate\\Foundation\\Events\\DiscoverEvents' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Events/DiscoverEvents.php', - 'Illuminate\\Foundation\\Events\\Dispatchable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Events/Dispatchable.php', - 'Illuminate\\Foundation\\Events\\LocaleUpdated' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Events/LocaleUpdated.php', - 'Illuminate\\Foundation\\Events\\MaintenanceModeDisabled' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Events/MaintenanceModeDisabled.php', - 'Illuminate\\Foundation\\Events\\MaintenanceModeEnabled' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Events/MaintenanceModeEnabled.php', - 'Illuminate\\Foundation\\Events\\PublishingStubs' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Events/PublishingStubs.php', - 'Illuminate\\Foundation\\Events\\VendorTagPublished' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Events/VendorTagPublished.php', - 'Illuminate\\Foundation\\Exceptions\\Handler' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php', - 'Illuminate\\Foundation\\Exceptions\\RegisterErrorViewPaths' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Exceptions/RegisterErrorViewPaths.php', - 'Illuminate\\Foundation\\Exceptions\\ReportableHandler' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Exceptions/ReportableHandler.php', - 'Illuminate\\Foundation\\Exceptions\\Whoops\\WhoopsExceptionRenderer' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Exceptions/Whoops/WhoopsExceptionRenderer.php', - 'Illuminate\\Foundation\\Exceptions\\Whoops\\WhoopsHandler' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Exceptions/Whoops/WhoopsHandler.php', - 'Illuminate\\Foundation\\FileBasedMaintenanceMode' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/FileBasedMaintenanceMode.php', - 'Illuminate\\Foundation\\Http\\Events\\RequestHandled' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Http/Events/RequestHandled.php', - 'Illuminate\\Foundation\\Http\\FormRequest' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Http/FormRequest.php', - 'Illuminate\\Foundation\\Http\\HtmlDumper' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Http/HtmlDumper.php', - 'Illuminate\\Foundation\\Http\\Kernel' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php', - 'Illuminate\\Foundation\\Http\\MaintenanceModeBypassCookie' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Http/MaintenanceModeBypassCookie.php', - 'Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php', - 'Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php', - 'Illuminate\\Foundation\\Http\\Middleware\\HandlePrecognitiveRequests' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Http/Middleware/HandlePrecognitiveRequests.php', - 'Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php', - 'Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php', - 'Illuminate\\Foundation\\Http\\Middleware\\TrimStrings' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php', - 'Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php', - 'Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php', - 'Illuminate\\Foundation\\Inspiring' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Inspiring.php', - 'Illuminate\\Foundation\\MaintenanceModeManager' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/MaintenanceModeManager.php', - 'Illuminate\\Foundation\\Mix' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Mix.php', - 'Illuminate\\Foundation\\PackageManifest' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/PackageManifest.php', - 'Illuminate\\Foundation\\Precognition' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Precognition.php', - 'Illuminate\\Foundation\\ProviderRepository' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php', - 'Illuminate\\Foundation\\Providers\\ArtisanServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Providers/ArtisanServiceProvider.php', - 'Illuminate\\Foundation\\Providers\\ComposerServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Providers/ComposerServiceProvider.php', - 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Providers/ConsoleSupportServiceProvider.php', - 'Illuminate\\Foundation\\Providers\\FormRequestServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Providers/FormRequestServiceProvider.php', - 'Illuminate\\Foundation\\Providers\\FoundationServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Providers/FoundationServiceProvider.php', - 'Illuminate\\Foundation\\Routing\\PrecognitionCallableDispatcher' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Routing/PrecognitionCallableDispatcher.php', - 'Illuminate\\Foundation\\Routing\\PrecognitionControllerDispatcher' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Routing/PrecognitionControllerDispatcher.php', - 'Illuminate\\Foundation\\Support\\Providers\\AuthServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Support/Providers/AuthServiceProvider.php', - 'Illuminate\\Foundation\\Support\\Providers\\EventServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Support/Providers/EventServiceProvider.php', - 'Illuminate\\Foundation\\Support\\Providers\\RouteServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Support/Providers/RouteServiceProvider.php', - 'Illuminate\\Foundation\\Testing\\Concerns\\InteractsWithAuthentication' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithAuthentication.php', - 'Illuminate\\Foundation\\Testing\\Concerns\\InteractsWithConsole' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithConsole.php', - 'Illuminate\\Foundation\\Testing\\Concerns\\InteractsWithContainer' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithContainer.php', - 'Illuminate\\Foundation\\Testing\\Concerns\\InteractsWithDatabase' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithDatabase.php', - 'Illuminate\\Foundation\\Testing\\Concerns\\InteractsWithDeprecationHandling' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithDeprecationHandling.php', - 'Illuminate\\Foundation\\Testing\\Concerns\\InteractsWithExceptionHandling' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithExceptionHandling.php', - 'Illuminate\\Foundation\\Testing\\Concerns\\InteractsWithRedis' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithRedis.php', - 'Illuminate\\Foundation\\Testing\\Concerns\\InteractsWithSession' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithSession.php', - 'Illuminate\\Foundation\\Testing\\Concerns\\InteractsWithTestCaseLifecycle' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithTestCaseLifecycle.php', - 'Illuminate\\Foundation\\Testing\\Concerns\\InteractsWithTime' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithTime.php', - 'Illuminate\\Foundation\\Testing\\Concerns\\InteractsWithViews' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithViews.php', - 'Illuminate\\Foundation\\Testing\\Concerns\\MakesHttpRequests' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php', - 'Illuminate\\Foundation\\Testing\\DatabaseMigrations' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/DatabaseMigrations.php', - 'Illuminate\\Foundation\\Testing\\DatabaseTransactions' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/DatabaseTransactions.php', - 'Illuminate\\Foundation\\Testing\\DatabaseTransactionsManager' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/DatabaseTransactionsManager.php', - 'Illuminate\\Foundation\\Testing\\DatabaseTruncation' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/DatabaseTruncation.php', - 'Illuminate\\Foundation\\Testing\\LazilyRefreshDatabase' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/LazilyRefreshDatabase.php', - 'Illuminate\\Foundation\\Testing\\RefreshDatabase' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/RefreshDatabase.php', - 'Illuminate\\Foundation\\Testing\\RefreshDatabaseState' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/RefreshDatabaseState.php', - 'Illuminate\\Foundation\\Testing\\TestCase' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/TestCase.php', - 'Illuminate\\Foundation\\Testing\\Traits\\CanConfigureMigrationCommands' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/Traits/CanConfigureMigrationCommands.php', - 'Illuminate\\Foundation\\Testing\\WithConsoleEvents' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/WithConsoleEvents.php', - 'Illuminate\\Foundation\\Testing\\WithFaker' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/WithFaker.php', - 'Illuminate\\Foundation\\Testing\\WithoutEvents' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/WithoutEvents.php', - 'Illuminate\\Foundation\\Testing\\WithoutMiddleware' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/WithoutMiddleware.php', - 'Illuminate\\Foundation\\Testing\\Wormhole' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/Wormhole.php', - 'Illuminate\\Foundation\\Validation\\ValidatesRequests' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Validation/ValidatesRequests.php', - 'Illuminate\\Foundation\\Vite' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Vite.php', - 'Illuminate\\Foundation\\ViteManifestNotFoundException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/ViteManifestNotFoundException.php', - 'Illuminate\\Hashing\\AbstractHasher' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Hashing/AbstractHasher.php', - 'Illuminate\\Hashing\\Argon2IdHasher' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Hashing/Argon2IdHasher.php', - 'Illuminate\\Hashing\\ArgonHasher' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Hashing/ArgonHasher.php', - 'Illuminate\\Hashing\\BcryptHasher' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Hashing/BcryptHasher.php', - 'Illuminate\\Hashing\\HashManager' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Hashing/HashManager.php', - 'Illuminate\\Hashing\\HashServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Hashing/HashServiceProvider.php', - 'Illuminate\\Http\\Client\\Concerns\\DeterminesStatusCode' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Client/Concerns/DeterminesStatusCode.php', - 'Illuminate\\Http\\Client\\ConnectionException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Client/ConnectionException.php', - 'Illuminate\\Http\\Client\\Events\\ConnectionFailed' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Client/Events/ConnectionFailed.php', - 'Illuminate\\Http\\Client\\Events\\RequestSending' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Client/Events/RequestSending.php', - 'Illuminate\\Http\\Client\\Events\\ResponseReceived' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Client/Events/ResponseReceived.php', - 'Illuminate\\Http\\Client\\Factory' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Client/Factory.php', - 'Illuminate\\Http\\Client\\HttpClientException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Client/HttpClientException.php', - 'Illuminate\\Http\\Client\\PendingRequest' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Client/PendingRequest.php', - 'Illuminate\\Http\\Client\\Pool' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Client/Pool.php', - 'Illuminate\\Http\\Client\\Request' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Client/Request.php', - 'Illuminate\\Http\\Client\\RequestException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Client/RequestException.php', - 'Illuminate\\Http\\Client\\Response' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Client/Response.php', - 'Illuminate\\Http\\Client\\ResponseSequence' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Client/ResponseSequence.php', - 'Illuminate\\Http\\Concerns\\CanBePrecognitive' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Concerns/CanBePrecognitive.php', - 'Illuminate\\Http\\Concerns\\InteractsWithContentTypes' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Concerns/InteractsWithContentTypes.php', - 'Illuminate\\Http\\Concerns\\InteractsWithFlashData' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Concerns/InteractsWithFlashData.php', - 'Illuminate\\Http\\Concerns\\InteractsWithInput' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Concerns/InteractsWithInput.php', - 'Illuminate\\Http\\Exceptions\\HttpResponseException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Exceptions/HttpResponseException.php', - 'Illuminate\\Http\\Exceptions\\PostTooLargeException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Exceptions/PostTooLargeException.php', - 'Illuminate\\Http\\Exceptions\\ThrottleRequestsException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Exceptions/ThrottleRequestsException.php', - 'Illuminate\\Http\\File' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/File.php', - 'Illuminate\\Http\\FileHelpers' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/FileHelpers.php', - 'Illuminate\\Http\\JsonResponse' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/JsonResponse.php', - 'Illuminate\\Http\\Middleware\\AddLinkHeadersForPreloadedAssets' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Middleware/AddLinkHeadersForPreloadedAssets.php', - 'Illuminate\\Http\\Middleware\\CheckResponseForModifications' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Middleware/CheckResponseForModifications.php', - 'Illuminate\\Http\\Middleware\\FrameGuard' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Middleware/FrameGuard.php', - 'Illuminate\\Http\\Middleware\\HandleCors' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php', - 'Illuminate\\Http\\Middleware\\SetCacheHeaders' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Middleware/SetCacheHeaders.php', - 'Illuminate\\Http\\Middleware\\TrustHosts' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Middleware/TrustHosts.php', - 'Illuminate\\Http\\Middleware\\TrustProxies' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php', - 'Illuminate\\Http\\RedirectResponse' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/RedirectResponse.php', - 'Illuminate\\Http\\Request' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Request.php', - 'Illuminate\\Http\\Resources\\CollectsResources' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Resources/CollectsResources.php', - 'Illuminate\\Http\\Resources\\ConditionallyLoadsAttributes' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Resources/ConditionallyLoadsAttributes.php', - 'Illuminate\\Http\\Resources\\DelegatesToResource' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Resources/DelegatesToResource.php', - 'Illuminate\\Http\\Resources\\Json\\AnonymousResourceCollection' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Resources/Json/AnonymousResourceCollection.php', - 'Illuminate\\Http\\Resources\\Json\\JsonResource' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Resources/Json/JsonResource.php', - 'Illuminate\\Http\\Resources\\Json\\PaginatedResourceResponse' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Resources/Json/PaginatedResourceResponse.php', - 'Illuminate\\Http\\Resources\\Json\\ResourceCollection' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Resources/Json/ResourceCollection.php', - 'Illuminate\\Http\\Resources\\Json\\ResourceResponse' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Resources/Json/ResourceResponse.php', - 'Illuminate\\Http\\Resources\\MergeValue' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Resources/MergeValue.php', - 'Illuminate\\Http\\Resources\\MissingValue' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Resources/MissingValue.php', - 'Illuminate\\Http\\Resources\\PotentiallyMissing' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Resources/PotentiallyMissing.php', - 'Illuminate\\Http\\Response' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Response.php', - 'Illuminate\\Http\\ResponseTrait' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/ResponseTrait.php', - 'Illuminate\\Http\\Testing\\File' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Testing/File.php', - 'Illuminate\\Http\\Testing\\FileFactory' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Testing/FileFactory.php', - 'Illuminate\\Http\\Testing\\MimeType' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/Testing/MimeType.php', - 'Illuminate\\Http\\UploadedFile' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Http/UploadedFile.php', - 'Illuminate\\Log\\Events\\MessageLogged' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Log/Events/MessageLogged.php', - 'Illuminate\\Log\\LogManager' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Log/LogManager.php', - 'Illuminate\\Log\\LogServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Log/LogServiceProvider.php', - 'Illuminate\\Log\\Logger' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Log/Logger.php', - 'Illuminate\\Log\\ParsesLogConfiguration' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Log/ParsesLogConfiguration.php', - 'Illuminate\\Mail\\Attachment' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Mail/Attachment.php', - 'Illuminate\\Mail\\Events\\MessageSending' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Mail/Events/MessageSending.php', - 'Illuminate\\Mail\\Events\\MessageSent' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Mail/Events/MessageSent.php', - 'Illuminate\\Mail\\MailManager' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Mail/MailManager.php', - 'Illuminate\\Mail\\MailServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Mail/MailServiceProvider.php', - 'Illuminate\\Mail\\Mailable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Mail/Mailable.php', - 'Illuminate\\Mail\\Mailables\\Address' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Mail/Mailables/Address.php', - 'Illuminate\\Mail\\Mailables\\Attachment' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Mail/Mailables/Attachment.php', - 'Illuminate\\Mail\\Mailables\\Content' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Mail/Mailables/Content.php', - 'Illuminate\\Mail\\Mailables\\Envelope' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Mail/Mailables/Envelope.php', - 'Illuminate\\Mail\\Mailables\\Headers' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Mail/Mailables/Headers.php', - 'Illuminate\\Mail\\Mailer' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Mail/Mailer.php', - 'Illuminate\\Mail\\Markdown' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Mail/Markdown.php', - 'Illuminate\\Mail\\Message' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Mail/Message.php', - 'Illuminate\\Mail\\PendingMail' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Mail/PendingMail.php', - 'Illuminate\\Mail\\SendQueuedMailable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Mail/SendQueuedMailable.php', - 'Illuminate\\Mail\\SentMessage' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Mail/SentMessage.php', - 'Illuminate\\Mail\\TextMessage' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Mail/TextMessage.php', - 'Illuminate\\Mail\\Transport\\ArrayTransport' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Mail/Transport/ArrayTransport.php', - 'Illuminate\\Mail\\Transport\\LogTransport' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Mail/Transport/LogTransport.php', - 'Illuminate\\Mail\\Transport\\SesTransport' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Mail/Transport/SesTransport.php', - 'Illuminate\\Mail\\Transport\\SesV2Transport' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Mail/Transport/SesV2Transport.php', - 'Illuminate\\Notifications\\Action' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/Action.php', - 'Illuminate\\Notifications\\AnonymousNotifiable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/AnonymousNotifiable.php', - 'Illuminate\\Notifications\\ChannelManager' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/ChannelManager.php', - 'Illuminate\\Notifications\\Channels\\BroadcastChannel' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/Channels/BroadcastChannel.php', - 'Illuminate\\Notifications\\Channels\\DatabaseChannel' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/Channels/DatabaseChannel.php', - 'Illuminate\\Notifications\\Channels\\MailChannel' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/Channels/MailChannel.php', - 'Illuminate\\Notifications\\Console\\NotificationTableCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/Console/NotificationTableCommand.php', - 'Illuminate\\Notifications\\DatabaseNotification' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/DatabaseNotification.php', - 'Illuminate\\Notifications\\DatabaseNotificationCollection' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/DatabaseNotificationCollection.php', - 'Illuminate\\Notifications\\Events\\BroadcastNotificationCreated' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/Events/BroadcastNotificationCreated.php', - 'Illuminate\\Notifications\\Events\\NotificationFailed' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/Events/NotificationFailed.php', - 'Illuminate\\Notifications\\Events\\NotificationSending' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/Events/NotificationSending.php', - 'Illuminate\\Notifications\\Events\\NotificationSent' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/Events/NotificationSent.php', - 'Illuminate\\Notifications\\HasDatabaseNotifications' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/HasDatabaseNotifications.php', - 'Illuminate\\Notifications\\Messages\\BroadcastMessage' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/Messages/BroadcastMessage.php', - 'Illuminate\\Notifications\\Messages\\DatabaseMessage' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/Messages/DatabaseMessage.php', - 'Illuminate\\Notifications\\Messages\\MailMessage' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/Messages/MailMessage.php', - 'Illuminate\\Notifications\\Messages\\SimpleMessage' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/Messages/SimpleMessage.php', - 'Illuminate\\Notifications\\Notifiable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/Notifiable.php', - 'Illuminate\\Notifications\\Notification' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/Notification.php', - 'Illuminate\\Notifications\\NotificationSender' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/NotificationSender.php', - 'Illuminate\\Notifications\\NotificationServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/NotificationServiceProvider.php', - 'Illuminate\\Notifications\\RoutesNotifications' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/RoutesNotifications.php', - 'Illuminate\\Notifications\\SendQueuedNotifications' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/SendQueuedNotifications.php', - 'Illuminate\\Pagination\\AbstractCursorPaginator' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Pagination/AbstractCursorPaginator.php', - 'Illuminate\\Pagination\\AbstractPaginator' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Pagination/AbstractPaginator.php', - 'Illuminate\\Pagination\\Cursor' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Pagination/Cursor.php', - 'Illuminate\\Pagination\\CursorPaginator' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Pagination/CursorPaginator.php', - 'Illuminate\\Pagination\\LengthAwarePaginator' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Pagination/LengthAwarePaginator.php', - 'Illuminate\\Pagination\\PaginationServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Pagination/PaginationServiceProvider.php', - 'Illuminate\\Pagination\\PaginationState' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Pagination/PaginationState.php', - 'Illuminate\\Pagination\\Paginator' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Pagination/Paginator.php', - 'Illuminate\\Pagination\\UrlWindow' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Pagination/UrlWindow.php', - 'Illuminate\\Pipeline\\Hub' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Pipeline/Hub.php', - 'Illuminate\\Pipeline\\Pipeline' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Pipeline/Pipeline.php', - 'Illuminate\\Pipeline\\PipelineServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Pipeline/PipelineServiceProvider.php', - 'Illuminate\\Process\\Exceptions\\ProcessFailedException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Process/Exceptions/ProcessFailedException.php', - 'Illuminate\\Process\\Exceptions\\ProcessTimedOutException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Process/Exceptions/ProcessTimedOutException.php', - 'Illuminate\\Process\\Factory' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Process/Factory.php', - 'Illuminate\\Process\\FakeInvokedProcess' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Process/FakeInvokedProcess.php', - 'Illuminate\\Process\\FakeProcessDescription' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Process/FakeProcessDescription.php', - 'Illuminate\\Process\\FakeProcessResult' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Process/FakeProcessResult.php', - 'Illuminate\\Process\\FakeProcessSequence' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Process/FakeProcessSequence.php', - 'Illuminate\\Process\\InvokedProcess' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Process/InvokedProcess.php', - 'Illuminate\\Process\\InvokedProcessPool' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Process/InvokedProcessPool.php', - 'Illuminate\\Process\\PendingProcess' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Process/PendingProcess.php', - 'Illuminate\\Process\\Pipe' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Process/Pipe.php', - 'Illuminate\\Process\\Pool' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Process/Pool.php', - 'Illuminate\\Process\\ProcessPoolResults' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Process/ProcessPoolResults.php', - 'Illuminate\\Process\\ProcessResult' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Process/ProcessResult.php', - 'Illuminate\\Queue\\Attributes\\WithoutRelations' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Attributes/WithoutRelations.php', - 'Illuminate\\Queue\\BeanstalkdQueue' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/BeanstalkdQueue.php', - 'Illuminate\\Queue\\CallQueuedClosure' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/CallQueuedClosure.php', - 'Illuminate\\Queue\\CallQueuedHandler' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php', - 'Illuminate\\Queue\\Capsule\\Manager' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Capsule/Manager.php', - 'Illuminate\\Queue\\Connectors\\BeanstalkdConnector' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Connectors/BeanstalkdConnector.php', - 'Illuminate\\Queue\\Connectors\\ConnectorInterface' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Connectors/ConnectorInterface.php', - 'Illuminate\\Queue\\Connectors\\DatabaseConnector' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Connectors/DatabaseConnector.php', - 'Illuminate\\Queue\\Connectors\\NullConnector' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Connectors/NullConnector.php', - 'Illuminate\\Queue\\Connectors\\RedisConnector' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Connectors/RedisConnector.php', - 'Illuminate\\Queue\\Connectors\\SqsConnector' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Connectors/SqsConnector.php', - 'Illuminate\\Queue\\Connectors\\SyncConnector' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Connectors/SyncConnector.php', - 'Illuminate\\Queue\\Console\\BatchesTableCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Console/BatchesTableCommand.php', - 'Illuminate\\Queue\\Console\\ClearCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Console/ClearCommand.php', - 'Illuminate\\Queue\\Console\\FailedTableCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Console/FailedTableCommand.php', - 'Illuminate\\Queue\\Console\\FlushFailedCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Console/FlushFailedCommand.php', - 'Illuminate\\Queue\\Console\\ForgetFailedCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Console/ForgetFailedCommand.php', - 'Illuminate\\Queue\\Console\\ListFailedCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Console/ListFailedCommand.php', - 'Illuminate\\Queue\\Console\\ListenCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Console/ListenCommand.php', - 'Illuminate\\Queue\\Console\\MonitorCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Console/MonitorCommand.php', - 'Illuminate\\Queue\\Console\\PruneBatchesCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Console/PruneBatchesCommand.php', - 'Illuminate\\Queue\\Console\\PruneFailedJobsCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Console/PruneFailedJobsCommand.php', - 'Illuminate\\Queue\\Console\\RestartCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Console/RestartCommand.php', - 'Illuminate\\Queue\\Console\\RetryBatchCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Console/RetryBatchCommand.php', - 'Illuminate\\Queue\\Console\\RetryCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Console/RetryCommand.php', - 'Illuminate\\Queue\\Console\\TableCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Console/TableCommand.php', - 'Illuminate\\Queue\\Console\\WorkCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php', - 'Illuminate\\Queue\\DatabaseQueue' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/DatabaseQueue.php', - 'Illuminate\\Queue\\Events\\JobExceptionOccurred' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Events/JobExceptionOccurred.php', - 'Illuminate\\Queue\\Events\\JobFailed' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Events/JobFailed.php', - 'Illuminate\\Queue\\Events\\JobPopped' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Events/JobPopped.php', - 'Illuminate\\Queue\\Events\\JobPopping' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Events/JobPopping.php', - 'Illuminate\\Queue\\Events\\JobProcessed' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Events/JobProcessed.php', - 'Illuminate\\Queue\\Events\\JobProcessing' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Events/JobProcessing.php', - 'Illuminate\\Queue\\Events\\JobQueued' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Events/JobQueued.php', - 'Illuminate\\Queue\\Events\\JobQueueing' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Events/JobQueueing.php', - 'Illuminate\\Queue\\Events\\JobReleasedAfterException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Events/JobReleasedAfterException.php', - 'Illuminate\\Queue\\Events\\JobRetryRequested' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Events/JobRetryRequested.php', - 'Illuminate\\Queue\\Events\\JobTimedOut' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Events/JobTimedOut.php', - 'Illuminate\\Queue\\Events\\Looping' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Events/Looping.php', - 'Illuminate\\Queue\\Events\\QueueBusy' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Events/QueueBusy.php', - 'Illuminate\\Queue\\Events\\WorkerStopping' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Events/WorkerStopping.php', - 'Illuminate\\Queue\\Failed\\CountableFailedJobProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Failed/CountableFailedJobProvider.php', - 'Illuminate\\Queue\\Failed\\DatabaseFailedJobProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Failed/DatabaseFailedJobProvider.php', - 'Illuminate\\Queue\\Failed\\DatabaseUuidFailedJobProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Failed/DatabaseUuidFailedJobProvider.php', - 'Illuminate\\Queue\\Failed\\DynamoDbFailedJobProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Failed/DynamoDbFailedJobProvider.php', - 'Illuminate\\Queue\\Failed\\FailedJobProviderInterface' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Failed/FailedJobProviderInterface.php', - 'Illuminate\\Queue\\Failed\\FileFailedJobProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Failed/FileFailedJobProvider.php', - 'Illuminate\\Queue\\Failed\\NullFailedJobProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Failed/NullFailedJobProvider.php', - 'Illuminate\\Queue\\Failed\\PrunableFailedJobProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Failed/PrunableFailedJobProvider.php', - 'Illuminate\\Queue\\InteractsWithQueue' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/InteractsWithQueue.php', - 'Illuminate\\Queue\\InvalidPayloadException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/InvalidPayloadException.php', - 'Illuminate\\Queue\\Jobs\\BeanstalkdJob' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Jobs/BeanstalkdJob.php', - 'Illuminate\\Queue\\Jobs\\DatabaseJob' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Jobs/DatabaseJob.php', - 'Illuminate\\Queue\\Jobs\\DatabaseJobRecord' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Jobs/DatabaseJobRecord.php', - 'Illuminate\\Queue\\Jobs\\Job' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Jobs/Job.php', - 'Illuminate\\Queue\\Jobs\\JobName' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Jobs/JobName.php', - 'Illuminate\\Queue\\Jobs\\RedisJob' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Jobs/RedisJob.php', - 'Illuminate\\Queue\\Jobs\\SqsJob' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Jobs/SqsJob.php', - 'Illuminate\\Queue\\Jobs\\SyncJob' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Jobs/SyncJob.php', - 'Illuminate\\Queue\\Listener' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Listener.php', - 'Illuminate\\Queue\\ListenerOptions' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/ListenerOptions.php', - 'Illuminate\\Queue\\LuaScripts' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/LuaScripts.php', - 'Illuminate\\Queue\\ManuallyFailedException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/ManuallyFailedException.php', - 'Illuminate\\Queue\\MaxAttemptsExceededException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/MaxAttemptsExceededException.php', - 'Illuminate\\Queue\\Middleware\\RateLimited' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Middleware/RateLimited.php', - 'Illuminate\\Queue\\Middleware\\RateLimitedWithRedis' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Middleware/RateLimitedWithRedis.php', - 'Illuminate\\Queue\\Middleware\\SkipIfBatchCancelled' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Middleware/SkipIfBatchCancelled.php', - 'Illuminate\\Queue\\Middleware\\ThrottlesExceptions' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Middleware/ThrottlesExceptions.php', - 'Illuminate\\Queue\\Middleware\\ThrottlesExceptionsWithRedis' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Middleware/ThrottlesExceptionsWithRedis.php', - 'Illuminate\\Queue\\Middleware\\WithoutOverlapping' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Middleware/WithoutOverlapping.php', - 'Illuminate\\Queue\\NullQueue' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/NullQueue.php', - 'Illuminate\\Queue\\Queue' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Queue.php', - 'Illuminate\\Queue\\QueueManager' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/QueueManager.php', - 'Illuminate\\Queue\\QueueServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/QueueServiceProvider.php', - 'Illuminate\\Queue\\RedisQueue' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/RedisQueue.php', - 'Illuminate\\Queue\\SerializesAndRestoresModelIdentifiers' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/SerializesAndRestoresModelIdentifiers.php', - 'Illuminate\\Queue\\SerializesModels' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/SerializesModels.php', - 'Illuminate\\Queue\\SqsQueue' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/SqsQueue.php', - 'Illuminate\\Queue\\SyncQueue' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/SyncQueue.php', - 'Illuminate\\Queue\\TimeoutExceededException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/TimeoutExceededException.php', - 'Illuminate\\Queue\\Worker' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Worker.php', - 'Illuminate\\Queue\\WorkerOptions' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/WorkerOptions.php', - 'Illuminate\\Redis\\Connections\\Connection' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Redis/Connections/Connection.php', - 'Illuminate\\Redis\\Connections\\PacksPhpRedisValues' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Redis/Connections/PacksPhpRedisValues.php', - 'Illuminate\\Redis\\Connections\\PhpRedisClusterConnection' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Redis/Connections/PhpRedisClusterConnection.php', - 'Illuminate\\Redis\\Connections\\PhpRedisConnection' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Redis/Connections/PhpRedisConnection.php', - 'Illuminate\\Redis\\Connections\\PredisClusterConnection' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Redis/Connections/PredisClusterConnection.php', - 'Illuminate\\Redis\\Connections\\PredisConnection' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Redis/Connections/PredisConnection.php', - 'Illuminate\\Redis\\Connectors\\PhpRedisConnector' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Redis/Connectors/PhpRedisConnector.php', - 'Illuminate\\Redis\\Connectors\\PredisConnector' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Redis/Connectors/PredisConnector.php', - 'Illuminate\\Redis\\Events\\CommandExecuted' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Redis/Events/CommandExecuted.php', - 'Illuminate\\Redis\\Limiters\\ConcurrencyLimiter' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Redis/Limiters/ConcurrencyLimiter.php', - 'Illuminate\\Redis\\Limiters\\ConcurrencyLimiterBuilder' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Redis/Limiters/ConcurrencyLimiterBuilder.php', - 'Illuminate\\Redis\\Limiters\\DurationLimiter' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Redis/Limiters/DurationLimiter.php', - 'Illuminate\\Redis\\Limiters\\DurationLimiterBuilder' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Redis/Limiters/DurationLimiterBuilder.php', - 'Illuminate\\Redis\\RedisManager' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Redis/RedisManager.php', - 'Illuminate\\Redis\\RedisServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Redis/RedisServiceProvider.php', - 'Illuminate\\Routing\\AbstractRouteCollection' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/AbstractRouteCollection.php', - 'Illuminate\\Routing\\CallableDispatcher' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/CallableDispatcher.php', - 'Illuminate\\Routing\\CompiledRouteCollection' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/CompiledRouteCollection.php', - 'Illuminate\\Routing\\Console\\ControllerMakeCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/Console/ControllerMakeCommand.php', - 'Illuminate\\Routing\\Console\\MiddlewareMakeCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/Console/MiddlewareMakeCommand.php', - 'Illuminate\\Routing\\Contracts\\CallableDispatcher' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/Contracts/CallableDispatcher.php', - 'Illuminate\\Routing\\Contracts\\ControllerDispatcher' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/Contracts/ControllerDispatcher.php', - 'Illuminate\\Routing\\Controller' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/Controller.php', - 'Illuminate\\Routing\\ControllerDispatcher' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php', - 'Illuminate\\Routing\\ControllerMiddlewareOptions' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/ControllerMiddlewareOptions.php', - 'Illuminate\\Routing\\Controllers\\HasMiddleware' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/Controllers/HasMiddleware.php', - 'Illuminate\\Routing\\Controllers\\Middleware' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/Controllers/Middleware.php', - 'Illuminate\\Routing\\CreatesRegularExpressionRouteConstraints' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/CreatesRegularExpressionRouteConstraints.php', - 'Illuminate\\Routing\\Events\\PreparingResponse' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/Events/PreparingResponse.php', - 'Illuminate\\Routing\\Events\\ResponsePrepared' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/Events/ResponsePrepared.php', - 'Illuminate\\Routing\\Events\\RouteMatched' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/Events/RouteMatched.php', - 'Illuminate\\Routing\\Events\\Routing' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/Events/Routing.php', - 'Illuminate\\Routing\\Exceptions\\BackedEnumCaseNotFoundException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/Exceptions/BackedEnumCaseNotFoundException.php', - 'Illuminate\\Routing\\Exceptions\\InvalidSignatureException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/Exceptions/InvalidSignatureException.php', - 'Illuminate\\Routing\\Exceptions\\StreamedResponseException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/Exceptions/StreamedResponseException.php', - 'Illuminate\\Routing\\Exceptions\\UrlGenerationException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/Exceptions/UrlGenerationException.php', - 'Illuminate\\Routing\\FiltersControllerMiddleware' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/FiltersControllerMiddleware.php', - 'Illuminate\\Routing\\ImplicitRouteBinding' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/ImplicitRouteBinding.php', - 'Illuminate\\Routing\\Matching\\HostValidator' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/Matching/HostValidator.php', - 'Illuminate\\Routing\\Matching\\MethodValidator' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/Matching/MethodValidator.php', - 'Illuminate\\Routing\\Matching\\SchemeValidator' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/Matching/SchemeValidator.php', - 'Illuminate\\Routing\\Matching\\UriValidator' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/Matching/UriValidator.php', - 'Illuminate\\Routing\\Matching\\ValidatorInterface' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/Matching/ValidatorInterface.php', - 'Illuminate\\Routing\\MiddlewareNameResolver' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/MiddlewareNameResolver.php', - 'Illuminate\\Routing\\Middleware\\SubstituteBindings' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php', - 'Illuminate\\Routing\\Middleware\\ThrottleRequests' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php', - 'Illuminate\\Routing\\Middleware\\ThrottleRequestsWithRedis' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequestsWithRedis.php', - 'Illuminate\\Routing\\Middleware\\ValidateSignature' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/Middleware/ValidateSignature.php', - 'Illuminate\\Routing\\PendingResourceRegistration' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/PendingResourceRegistration.php', - 'Illuminate\\Routing\\PendingSingletonResourceRegistration' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/PendingSingletonResourceRegistration.php', - 'Illuminate\\Routing\\Pipeline' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/Pipeline.php', - 'Illuminate\\Routing\\RedirectController' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/RedirectController.php', - 'Illuminate\\Routing\\Redirector' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/Redirector.php', - 'Illuminate\\Routing\\ResolvesRouteDependencies' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/ResolvesRouteDependencies.php', - 'Illuminate\\Routing\\ResourceRegistrar' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/ResourceRegistrar.php', - 'Illuminate\\Routing\\ResponseFactory' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/ResponseFactory.php', - 'Illuminate\\Routing\\Route' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/Route.php', - 'Illuminate\\Routing\\RouteAction' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/RouteAction.php', - 'Illuminate\\Routing\\RouteBinding' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/RouteBinding.php', - 'Illuminate\\Routing\\RouteCollection' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/RouteCollection.php', - 'Illuminate\\Routing\\RouteCollectionInterface' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/RouteCollectionInterface.php', - 'Illuminate\\Routing\\RouteDependencyResolverTrait' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/RouteDependencyResolverTrait.php', - 'Illuminate\\Routing\\RouteFileRegistrar' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/RouteFileRegistrar.php', - 'Illuminate\\Routing\\RouteGroup' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/RouteGroup.php', - 'Illuminate\\Routing\\RouteParameterBinder' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/RouteParameterBinder.php', - 'Illuminate\\Routing\\RouteRegistrar' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/RouteRegistrar.php', - 'Illuminate\\Routing\\RouteSignatureParameters' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/RouteSignatureParameters.php', - 'Illuminate\\Routing\\RouteUri' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/RouteUri.php', - 'Illuminate\\Routing\\RouteUrlGenerator' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/RouteUrlGenerator.php', - 'Illuminate\\Routing\\Router' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/Router.php', - 'Illuminate\\Routing\\RoutingServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/RoutingServiceProvider.php', - 'Illuminate\\Routing\\SortedMiddleware' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/SortedMiddleware.php', - 'Illuminate\\Routing\\UrlGenerator' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/UrlGenerator.php', - 'Illuminate\\Routing\\ViewController' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/ViewController.php', - 'Illuminate\\Session\\ArraySessionHandler' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Session/ArraySessionHandler.php', - 'Illuminate\\Session\\CacheBasedSessionHandler' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Session/CacheBasedSessionHandler.php', - 'Illuminate\\Session\\Console\\SessionTableCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Session/Console/SessionTableCommand.php', - 'Illuminate\\Session\\CookieSessionHandler' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Session/CookieSessionHandler.php', - 'Illuminate\\Session\\DatabaseSessionHandler' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Session/DatabaseSessionHandler.php', - 'Illuminate\\Session\\EncryptedStore' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Session/EncryptedStore.php', - 'Illuminate\\Session\\ExistenceAwareInterface' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Session/ExistenceAwareInterface.php', - 'Illuminate\\Session\\FileSessionHandler' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Session/FileSessionHandler.php', - 'Illuminate\\Session\\Middleware\\AuthenticateSession' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Session/Middleware/AuthenticateSession.php', - 'Illuminate\\Session\\Middleware\\StartSession' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php', - 'Illuminate\\Session\\NullSessionHandler' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Session/NullSessionHandler.php', - 'Illuminate\\Session\\SessionManager' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Session/SessionManager.php', - 'Illuminate\\Session\\SessionServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Session/SessionServiceProvider.php', - 'Illuminate\\Session\\Store' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Session/Store.php', - 'Illuminate\\Session\\SymfonySessionDecorator' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Session/SymfonySessionDecorator.php', - 'Illuminate\\Session\\TokenMismatchException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Session/TokenMismatchException.php', - 'Illuminate\\Support\\AggregateServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/AggregateServiceProvider.php', - 'Illuminate\\Support\\Arr' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Collections/Arr.php', - 'Illuminate\\Support\\Benchmark' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Benchmark.php', - 'Illuminate\\Support\\Carbon' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Carbon.php', - 'Illuminate\\Support\\Collection' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Collections/Collection.php', - 'Illuminate\\Support\\Composer' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Composer.php', - 'Illuminate\\Support\\ConfigurationUrlParser' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/ConfigurationUrlParser.php', - 'Illuminate\\Support\\DateFactory' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/DateFactory.php', - 'Illuminate\\Support\\DefaultProviders' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/DefaultProviders.php', - 'Illuminate\\Support\\Enumerable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Collections/Enumerable.php', - 'Illuminate\\Support\\Env' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Env.php', - 'Illuminate\\Support\\Exceptions\\MathException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Exceptions/MathException.php', - 'Illuminate\\Support\\Facades\\App' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/App.php', - 'Illuminate\\Support\\Facades\\Artisan' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Artisan.php', - 'Illuminate\\Support\\Facades\\Auth' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Auth.php', - 'Illuminate\\Support\\Facades\\Blade' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Blade.php', - 'Illuminate\\Support\\Facades\\Broadcast' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Broadcast.php', - 'Illuminate\\Support\\Facades\\Bus' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Bus.php', - 'Illuminate\\Support\\Facades\\Cache' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Cache.php', - 'Illuminate\\Support\\Facades\\Config' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Config.php', - 'Illuminate\\Support\\Facades\\Cookie' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Cookie.php', - 'Illuminate\\Support\\Facades\\Crypt' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Crypt.php', - 'Illuminate\\Support\\Facades\\DB' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/DB.php', - 'Illuminate\\Support\\Facades\\Date' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Date.php', - 'Illuminate\\Support\\Facades\\Event' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Event.php', - 'Illuminate\\Support\\Facades\\Facade' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Facade.php', - 'Illuminate\\Support\\Facades\\File' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/File.php', - 'Illuminate\\Support\\Facades\\Gate' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Gate.php', - 'Illuminate\\Support\\Facades\\Hash' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Hash.php', - 'Illuminate\\Support\\Facades\\Http' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Http.php', - 'Illuminate\\Support\\Facades\\Lang' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Lang.php', - 'Illuminate\\Support\\Facades\\Log' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Log.php', - 'Illuminate\\Support\\Facades\\Mail' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Mail.php', - 'Illuminate\\Support\\Facades\\Notification' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Notification.php', - 'Illuminate\\Support\\Facades\\ParallelTesting' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/ParallelTesting.php', - 'Illuminate\\Support\\Facades\\Password' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Password.php', - 'Illuminate\\Support\\Facades\\Pipeline' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Pipeline.php', - 'Illuminate\\Support\\Facades\\Process' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Process.php', - 'Illuminate\\Support\\Facades\\Queue' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Queue.php', - 'Illuminate\\Support\\Facades\\RateLimiter' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/RateLimiter.php', - 'Illuminate\\Support\\Facades\\Redirect' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Redirect.php', - 'Illuminate\\Support\\Facades\\Redis' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Redis.php', - 'Illuminate\\Support\\Facades\\Request' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Request.php', - 'Illuminate\\Support\\Facades\\Response' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Response.php', - 'Illuminate\\Support\\Facades\\Route' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Route.php', - 'Illuminate\\Support\\Facades\\Schema' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Schema.php', - 'Illuminate\\Support\\Facades\\Session' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Session.php', - 'Illuminate\\Support\\Facades\\Storage' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Storage.php', - 'Illuminate\\Support\\Facades\\URL' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/URL.php', - 'Illuminate\\Support\\Facades\\Validator' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Validator.php', - 'Illuminate\\Support\\Facades\\View' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/View.php', - 'Illuminate\\Support\\Facades\\Vite' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Vite.php', - 'Illuminate\\Support\\Fluent' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Fluent.php', - 'Illuminate\\Support\\HigherOrderCollectionProxy' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Collections/HigherOrderCollectionProxy.php', - 'Illuminate\\Support\\HigherOrderTapProxy' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/HigherOrderTapProxy.php', - 'Illuminate\\Support\\HigherOrderWhenProxy' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Conditionable/HigherOrderWhenProxy.php', - 'Illuminate\\Support\\HtmlString' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/HtmlString.php', - 'Illuminate\\Support\\InteractsWithTime' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/InteractsWithTime.php', - 'Illuminate\\Support\\ItemNotFoundException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Collections/ItemNotFoundException.php', - 'Illuminate\\Support\\Js' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Js.php', - 'Illuminate\\Support\\LazyCollection' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Collections/LazyCollection.php', - 'Illuminate\\Support\\Lottery' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Lottery.php', - 'Illuminate\\Support\\Manager' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Manager.php', - 'Illuminate\\Support\\MessageBag' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/MessageBag.php', - 'Illuminate\\Support\\MultipleInstanceManager' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/MultipleInstanceManager.php', - 'Illuminate\\Support\\MultipleItemsFoundException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Collections/MultipleItemsFoundException.php', - 'Illuminate\\Support\\NamespacedItemResolver' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/NamespacedItemResolver.php', - 'Illuminate\\Support\\Number' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Number.php', - 'Illuminate\\Support\\Optional' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Optional.php', - 'Illuminate\\Support\\Pluralizer' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Pluralizer.php', - 'Illuminate\\Support\\ProcessUtils' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/ProcessUtils.php', - 'Illuminate\\Support\\Reflector' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Reflector.php', - 'Illuminate\\Support\\ServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/ServiceProvider.php', - 'Illuminate\\Support\\Sleep' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Sleep.php', - 'Illuminate\\Support\\Str' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Str.php', - 'Illuminate\\Support\\Stringable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Stringable.php', - 'Illuminate\\Support\\Testing\\Fakes\\BatchFake' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Testing/Fakes/BatchFake.php', - 'Illuminate\\Support\\Testing\\Fakes\\BatchRepositoryFake' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Testing/Fakes/BatchRepositoryFake.php', - 'Illuminate\\Support\\Testing\\Fakes\\BusFake' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Testing/Fakes/BusFake.php', - 'Illuminate\\Support\\Testing\\Fakes\\ChainedBatchTruthTest' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Testing/Fakes/ChainedBatchTruthTest.php', - 'Illuminate\\Support\\Testing\\Fakes\\EventFake' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Testing/Fakes/EventFake.php', - 'Illuminate\\Support\\Testing\\Fakes\\Fake' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Testing/Fakes/Fake.php', - 'Illuminate\\Support\\Testing\\Fakes\\MailFake' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Testing/Fakes/MailFake.php', - 'Illuminate\\Support\\Testing\\Fakes\\NotificationFake' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Testing/Fakes/NotificationFake.php', - 'Illuminate\\Support\\Testing\\Fakes\\PendingBatchFake' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Testing/Fakes/PendingBatchFake.php', - 'Illuminate\\Support\\Testing\\Fakes\\PendingChainFake' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Testing/Fakes/PendingChainFake.php', - 'Illuminate\\Support\\Testing\\Fakes\\PendingMailFake' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Testing/Fakes/PendingMailFake.php', - 'Illuminate\\Support\\Testing\\Fakes\\QueueFake' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Testing/Fakes/QueueFake.php', - 'Illuminate\\Support\\Timebox' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Timebox.php', - 'Illuminate\\Support\\Traits\\CapsuleManagerTrait' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Traits/CapsuleManagerTrait.php', - 'Illuminate\\Support\\Traits\\Conditionable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Conditionable/Traits/Conditionable.php', - 'Illuminate\\Support\\Traits\\EnumeratesValues' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Collections/Traits/EnumeratesValues.php', - 'Illuminate\\Support\\Traits\\ForwardsCalls' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php', - 'Illuminate\\Support\\Traits\\Localizable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Traits/Localizable.php', - 'Illuminate\\Support\\Traits\\Macroable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Macroable/Traits/Macroable.php', - 'Illuminate\\Support\\Traits\\ReflectsClosures' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Traits/ReflectsClosures.php', - 'Illuminate\\Support\\Traits\\Tappable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Traits/Tappable.php', - 'Illuminate\\Support\\ValidatedInput' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/ValidatedInput.php', - 'Illuminate\\Support\\ViewErrorBag' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/ViewErrorBag.php', - 'Illuminate\\Testing\\Assert' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Testing/Assert.php', - 'Illuminate\\Testing\\AssertableJsonString' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Testing/AssertableJsonString.php', - 'Illuminate\\Testing\\Concerns\\AssertsStatusCodes' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Testing/Concerns/AssertsStatusCodes.php', - 'Illuminate\\Testing\\Concerns\\RunsInParallel' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Testing/Concerns/RunsInParallel.php', - 'Illuminate\\Testing\\Concerns\\TestDatabases' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Testing/Concerns/TestDatabases.php', - 'Illuminate\\Testing\\Constraints\\ArraySubset' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Testing/Constraints/ArraySubset.php', - 'Illuminate\\Testing\\Constraints\\CountInDatabase' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Testing/Constraints/CountInDatabase.php', - 'Illuminate\\Testing\\Constraints\\HasInDatabase' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Testing/Constraints/HasInDatabase.php', - 'Illuminate\\Testing\\Constraints\\NotSoftDeletedInDatabase' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Testing/Constraints/NotSoftDeletedInDatabase.php', - 'Illuminate\\Testing\\Constraints\\SeeInOrder' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Testing/Constraints/SeeInOrder.php', - 'Illuminate\\Testing\\Constraints\\SoftDeletedInDatabase' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Testing/Constraints/SoftDeletedInDatabase.php', - 'Illuminate\\Testing\\Exceptions\\InvalidArgumentException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Testing/Exceptions/InvalidArgumentException.php', - 'Illuminate\\Testing\\Fluent\\AssertableJson' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Testing/Fluent/AssertableJson.php', - 'Illuminate\\Testing\\Fluent\\Concerns\\Debugging' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Testing/Fluent/Concerns/Debugging.php', - 'Illuminate\\Testing\\Fluent\\Concerns\\Has' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Testing/Fluent/Concerns/Has.php', - 'Illuminate\\Testing\\Fluent\\Concerns\\Interaction' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Testing/Fluent/Concerns/Interaction.php', - 'Illuminate\\Testing\\Fluent\\Concerns\\Matching' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Testing/Fluent/Concerns/Matching.php', - 'Illuminate\\Testing\\LoggedExceptionCollection' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Testing/LoggedExceptionCollection.php', - 'Illuminate\\Testing\\ParallelConsoleOutput' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Testing/ParallelConsoleOutput.php', - 'Illuminate\\Testing\\ParallelRunner' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Testing/ParallelRunner.php', - 'Illuminate\\Testing\\ParallelTesting' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Testing/ParallelTesting.php', - 'Illuminate\\Testing\\ParallelTestingServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Testing/ParallelTestingServiceProvider.php', - 'Illuminate\\Testing\\PendingCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Testing/PendingCommand.php', - 'Illuminate\\Testing\\TestComponent' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Testing/TestComponent.php', - 'Illuminate\\Testing\\TestResponse' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Testing/TestResponse.php', - 'Illuminate\\Testing\\TestView' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Testing/TestView.php', - 'Illuminate\\Translation\\ArrayLoader' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Translation/ArrayLoader.php', - 'Illuminate\\Translation\\CreatesPotentiallyTranslatedStrings' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Translation/CreatesPotentiallyTranslatedStrings.php', - 'Illuminate\\Translation\\FileLoader' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Translation/FileLoader.php', - 'Illuminate\\Translation\\MessageSelector' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Translation/MessageSelector.php', - 'Illuminate\\Translation\\PotentiallyTranslatedString' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Translation/PotentiallyTranslatedString.php', - 'Illuminate\\Translation\\TranslationServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Translation/TranslationServiceProvider.php', - 'Illuminate\\Translation\\Translator' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Translation/Translator.php', - 'Illuminate\\Validation\\ClosureValidationRule' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/ClosureValidationRule.php', - 'Illuminate\\Validation\\Concerns\\FilterEmailValidation' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/Concerns/FilterEmailValidation.php', - 'Illuminate\\Validation\\Concerns\\FormatsMessages' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/Concerns/FormatsMessages.php', - 'Illuminate\\Validation\\Concerns\\ReplacesAttributes' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/Concerns/ReplacesAttributes.php', - 'Illuminate\\Validation\\Concerns\\ValidatesAttributes' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/Concerns/ValidatesAttributes.php', - 'Illuminate\\Validation\\ConditionalRules' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/ConditionalRules.php', - 'Illuminate\\Validation\\DatabasePresenceVerifier' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/DatabasePresenceVerifier.php', - 'Illuminate\\Validation\\DatabasePresenceVerifierInterface' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/DatabasePresenceVerifierInterface.php', - 'Illuminate\\Validation\\Factory' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/Factory.php', - 'Illuminate\\Validation\\InvokableValidationRule' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/InvokableValidationRule.php', - 'Illuminate\\Validation\\NestedRules' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/NestedRules.php', - 'Illuminate\\Validation\\NotPwnedVerifier' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/NotPwnedVerifier.php', - 'Illuminate\\Validation\\PresenceVerifierInterface' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/PresenceVerifierInterface.php', - 'Illuminate\\Validation\\Rule' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/Rule.php', - 'Illuminate\\Validation\\Rules\\Can' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/Rules/Can.php', - 'Illuminate\\Validation\\Rules\\DatabaseRule' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/Rules/DatabaseRule.php', - 'Illuminate\\Validation\\Rules\\Dimensions' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/Rules/Dimensions.php', - 'Illuminate\\Validation\\Rules\\Enum' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/Rules/Enum.php', - 'Illuminate\\Validation\\Rules\\ExcludeIf' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/Rules/ExcludeIf.php', - 'Illuminate\\Validation\\Rules\\Exists' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/Rules/Exists.php', - 'Illuminate\\Validation\\Rules\\File' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/Rules/File.php', - 'Illuminate\\Validation\\Rules\\ImageFile' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/Rules/ImageFile.php', - 'Illuminate\\Validation\\Rules\\In' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/Rules/In.php', - 'Illuminate\\Validation\\Rules\\NotIn' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/Rules/NotIn.php', - 'Illuminate\\Validation\\Rules\\Password' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/Rules/Password.php', - 'Illuminate\\Validation\\Rules\\ProhibitedIf' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/Rules/ProhibitedIf.php', - 'Illuminate\\Validation\\Rules\\RequiredIf' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/Rules/RequiredIf.php', - 'Illuminate\\Validation\\Rules\\Unique' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/Rules/Unique.php', - 'Illuminate\\Validation\\UnauthorizedException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/UnauthorizedException.php', - 'Illuminate\\Validation\\ValidatesWhenResolvedTrait' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/ValidatesWhenResolvedTrait.php', - 'Illuminate\\Validation\\ValidationData' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/ValidationData.php', - 'Illuminate\\Validation\\ValidationException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/ValidationException.php', - 'Illuminate\\Validation\\ValidationRuleParser' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/ValidationRuleParser.php', - 'Illuminate\\Validation\\ValidationServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/ValidationServiceProvider.php', - 'Illuminate\\Validation\\Validator' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Validation/Validator.php', - 'Illuminate\\View\\AnonymousComponent' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/AnonymousComponent.php', - 'Illuminate\\View\\AppendableAttributeValue' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/AppendableAttributeValue.php', - 'Illuminate\\View\\Compilers\\BladeCompiler' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Compilers/BladeCompiler.php', - 'Illuminate\\View\\Compilers\\Compiler' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Compilers/Compiler.php', - 'Illuminate\\View\\Compilers\\CompilerInterface' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Compilers/CompilerInterface.php', - 'Illuminate\\View\\Compilers\\ComponentTagCompiler' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Compilers/ComponentTagCompiler.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesAuthorizations' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesAuthorizations.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesClasses' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesClasses.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesComments' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesComments.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesComponents' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesComponents.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesConditionals' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesConditionals.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesEchos' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesEchos.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesErrors' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesErrors.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesFragments' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesFragments.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesHelpers' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesHelpers.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesIncludes' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesIncludes.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesInjections' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesInjections.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesJs' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesJs.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesJson' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesJson.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesLayouts' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesLayouts.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesLoops' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesLoops.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesRawPhp' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesRawPhp.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesSessions' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesSessions.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesStacks' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesStacks.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesStyles' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesStyles.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesTranslations' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesTranslations.php', - 'Illuminate\\View\\Compilers\\Concerns\\CompilesUseStatements' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesUseStatements.php', - 'Illuminate\\View\\Component' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Component.php', - 'Illuminate\\View\\ComponentAttributeBag' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/ComponentAttributeBag.php', - 'Illuminate\\View\\ComponentSlot' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/ComponentSlot.php', - 'Illuminate\\View\\Concerns\\ManagesComponents' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Concerns/ManagesComponents.php', - 'Illuminate\\View\\Concerns\\ManagesEvents' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Concerns/ManagesEvents.php', - 'Illuminate\\View\\Concerns\\ManagesFragments' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Concerns/ManagesFragments.php', - 'Illuminate\\View\\Concerns\\ManagesLayouts' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Concerns/ManagesLayouts.php', - 'Illuminate\\View\\Concerns\\ManagesLoops' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Concerns/ManagesLoops.php', - 'Illuminate\\View\\Concerns\\ManagesStacks' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Concerns/ManagesStacks.php', - 'Illuminate\\View\\Concerns\\ManagesTranslations' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Concerns/ManagesTranslations.php', - 'Illuminate\\View\\DynamicComponent' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/DynamicComponent.php', - 'Illuminate\\View\\Engines\\CompilerEngine' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php', - 'Illuminate\\View\\Engines\\Engine' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Engines/Engine.php', - 'Illuminate\\View\\Engines\\EngineResolver' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Engines/EngineResolver.php', - 'Illuminate\\View\\Engines\\FileEngine' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Engines/FileEngine.php', - 'Illuminate\\View\\Engines\\PhpEngine' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php', - 'Illuminate\\View\\Factory' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Factory.php', - 'Illuminate\\View\\FileViewFinder' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/FileViewFinder.php', - 'Illuminate\\View\\InvokableComponentVariable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/InvokableComponentVariable.php', - 'Illuminate\\View\\Middleware\\ShareErrorsFromSession' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php', - 'Illuminate\\View\\View' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/View.php', - 'Illuminate\\View\\ViewException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/ViewException.php', - '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', - 'InventoryItemsClassesTableSeeder' => __DIR__ . '/../..' . '/database/seeders/InventoryItemsClassesTableSeeder.php', - 'InvestigationSeeder' => __DIR__ . '/../..' . '/database/seeders/InvestigationSeeder.php', - 'Knp\\Snappy\\AbstractGenerator' => __DIR__ . '/..' . '/knplabs/knp-snappy/src/Knp/Snappy/AbstractGenerator.php', - 'Knp\\Snappy\\Exception\\FileAlreadyExistsException' => __DIR__ . '/..' . '/knplabs/knp-snappy/src/Knp/Snappy/Exception/FileAlreadyExistsException.php', - 'Knp\\Snappy\\GeneratorInterface' => __DIR__ . '/..' . '/knplabs/knp-snappy/src/Knp/Snappy/GeneratorInterface.php', - 'Knp\\Snappy\\Image' => __DIR__ . '/..' . '/knplabs/knp-snappy/src/Knp/Snappy/Image.php', - 'Knp\\Snappy\\Pdf' => __DIR__ . '/..' . '/knplabs/knp-snappy/src/Knp/Snappy/Pdf.php', - 'Laracasts\\Flash\\Flash' => __DIR__ . '/..' . '/laracasts/flash/src/Laracasts/Flash/Flash.php', - 'Laracasts\\Flash\\FlashNotifier' => __DIR__ . '/..' . '/laracasts/flash/src/Laracasts/Flash/FlashNotifier.php', - 'Laracasts\\Flash\\FlashServiceProvider' => __DIR__ . '/..' . '/laracasts/flash/src/Laracasts/Flash/FlashServiceProvider.php', - 'Laracasts\\Flash\\LaravelSessionStore' => __DIR__ . '/..' . '/laracasts/flash/src/Laracasts/Flash/LaravelSessionStore.php', - 'Laracasts\\Flash\\Message' => __DIR__ . '/..' . '/laracasts/flash/src/Laracasts/Flash/Message.php', - 'Laracasts\\Flash\\OverlayMessage' => __DIR__ . '/..' . '/laracasts/flash/src/Laracasts/Flash/OverlayMessage.php', - 'Laracasts\\Flash\\SessionStore' => __DIR__ . '/..' . '/laracasts/flash/src/Laracasts/Flash/SessionStore.php', - 'Larastan\\Larastan\\ApplicationResolver' => __DIR__ . '/..' . '/larastan/larastan/src/ApplicationResolver.php', - 'Larastan\\Larastan\\Collectors\\UsedEmailViewCollector' => __DIR__ . '/..' . '/larastan/larastan/src/Collectors/UsedEmailViewCollector.php', - 'Larastan\\Larastan\\Collectors\\UsedRouteFacadeViewCollector' => __DIR__ . '/..' . '/larastan/larastan/src/Collectors/UsedRouteFacadeViewCollector.php', - 'Larastan\\Larastan\\Collectors\\UsedViewFacadeMakeCollector' => __DIR__ . '/..' . '/larastan/larastan/src/Collectors/UsedViewFacadeMakeCollector.php', - 'Larastan\\Larastan\\Collectors\\UsedViewFunctionCollector' => __DIR__ . '/..' . '/larastan/larastan/src/Collectors/UsedViewFunctionCollector.php', - 'Larastan\\Larastan\\Collectors\\UsedViewInAnotherViewCollector' => __DIR__ . '/..' . '/larastan/larastan/src/Collectors/UsedViewInAnotherViewCollector.php', - 'Larastan\\Larastan\\Collectors\\UsedViewMakeCollector' => __DIR__ . '/..' . '/larastan/larastan/src/Collectors/UsedViewMakeCollector.php', - 'Larastan\\Larastan\\Concerns\\HasContainer' => __DIR__ . '/..' . '/larastan/larastan/src/Concerns/HasContainer.php', - 'Larastan\\Larastan\\Concerns\\LoadsAuthModel' => __DIR__ . '/..' . '/larastan/larastan/src/Concerns/LoadsAuthModel.php', - 'Larastan\\Larastan\\Contracts\\Methods\\PassableContract' => __DIR__ . '/..' . '/larastan/larastan/src/Contracts/Methods/PassableContract.php', - 'Larastan\\Larastan\\Contracts\\Methods\\Pipes\\PipeContract' => __DIR__ . '/..' . '/larastan/larastan/src/Contracts/Methods/Pipes/PipeContract.php', - 'Larastan\\Larastan\\Contracts\\Types\\PassableContract' => __DIR__ . '/..' . '/larastan/larastan/src/Contracts/Types/PassableContract.php', - 'Larastan\\Larastan\\Contracts\\Types\\Pipes\\PipeContract' => __DIR__ . '/..' . '/larastan/larastan/src/Contracts/Types/Pipes/PipeContract.php', - 'Larastan\\Larastan\\Internal\\ComposerHelper' => __DIR__ . '/..' . '/larastan/larastan/src/Internal/ComposerHelper.php', - 'Larastan\\Larastan\\Internal\\ConsoleApplicationHelper' => __DIR__ . '/..' . '/larastan/larastan/src/Internal/ConsoleApplicationHelper.php', - 'Larastan\\Larastan\\Internal\\ConsoleApplicationResolver' => __DIR__ . '/..' . '/larastan/larastan/src/Internal/ConsoleApplicationResolver.php', - 'Larastan\\Larastan\\Internal\\LaravelVersion' => __DIR__ . '/..' . '/larastan/larastan/src/Internal/LaravelVersion.php', - 'Larastan\\Larastan\\LarastanStubFilesExtension' => __DIR__ . '/..' . '/larastan/larastan/src/LarastanStubFilesExtension.php', - 'Larastan\\Larastan\\Methods\\BuilderHelper' => __DIR__ . '/..' . '/larastan/larastan/src/Methods/BuilderHelper.php', - 'Larastan\\Larastan\\Methods\\EloquentBuilderForwardsCallsExtension' => __DIR__ . '/..' . '/larastan/larastan/src/Methods/EloquentBuilderForwardsCallsExtension.php', - 'Larastan\\Larastan\\Methods\\Extension' => __DIR__ . '/..' . '/larastan/larastan/src/Methods/Extension.php', - 'Larastan\\Larastan\\Methods\\HigherOrderCollectionProxyExtension' => __DIR__ . '/..' . '/larastan/larastan/src/Methods/HigherOrderCollectionProxyExtension.php', - 'Larastan\\Larastan\\Methods\\HigherOrderTapProxyExtension' => __DIR__ . '/..' . '/larastan/larastan/src/Methods/HigherOrderTapProxyExtension.php', - 'Larastan\\Larastan\\Methods\\Kernel' => __DIR__ . '/..' . '/larastan/larastan/src/Methods/Kernel.php', - 'Larastan\\Larastan\\Methods\\Macro' => __DIR__ . '/..' . '/larastan/larastan/src/Methods/Macro.php', - 'Larastan\\Larastan\\Methods\\MacroMethodsClassReflectionExtension' => __DIR__ . '/..' . '/larastan/larastan/src/Methods/MacroMethodsClassReflectionExtension.php', - 'Larastan\\Larastan\\Methods\\ModelFactoryMethodsClassReflectionExtension' => __DIR__ . '/..' . '/larastan/larastan/src/Methods/ModelFactoryMethodsClassReflectionExtension.php', - 'Larastan\\Larastan\\Methods\\ModelForwardsCallsExtension' => __DIR__ . '/..' . '/larastan/larastan/src/Methods/ModelForwardsCallsExtension.php', - 'Larastan\\Larastan\\Methods\\ModelTypeHelper' => __DIR__ . '/..' . '/larastan/larastan/src/Methods/ModelTypeHelper.php', - 'Larastan\\Larastan\\Methods\\Passable' => __DIR__ . '/..' . '/larastan/larastan/src/Methods/Passable.php', - 'Larastan\\Larastan\\Methods\\Pipes\\Auths' => __DIR__ . '/..' . '/larastan/larastan/src/Methods/Pipes/Auths.php', - 'Larastan\\Larastan\\Methods\\Pipes\\Contracts' => __DIR__ . '/..' . '/larastan/larastan/src/Methods/Pipes/Contracts.php', - 'Larastan\\Larastan\\Methods\\Pipes\\Facades' => __DIR__ . '/..' . '/larastan/larastan/src/Methods/Pipes/Facades.php', - 'Larastan\\Larastan\\Methods\\Pipes\\Managers' => __DIR__ . '/..' . '/larastan/larastan/src/Methods/Pipes/Managers.php', - 'Larastan\\Larastan\\Methods\\Pipes\\SelfClass' => __DIR__ . '/..' . '/larastan/larastan/src/Methods/Pipes/SelfClass.php', - 'Larastan\\Larastan\\Methods\\RedirectResponseMethodsClassReflectionExtension' => __DIR__ . '/..' . '/larastan/larastan/src/Methods/RedirectResponseMethodsClassReflectionExtension.php', - 'Larastan\\Larastan\\Methods\\RelationForwardsCallsExtension' => __DIR__ . '/..' . '/larastan/larastan/src/Methods/RelationForwardsCallsExtension.php', - 'Larastan\\Larastan\\Methods\\StorageMethodsClassReflectionExtension' => __DIR__ . '/..' . '/larastan/larastan/src/Methods/StorageMethodsClassReflectionExtension.php', - 'Larastan\\Larastan\\Methods\\ViewWithMethodsClassReflectionExtension' => __DIR__ . '/..' . '/larastan/larastan/src/Methods/ViewWithMethodsClassReflectionExtension.php', - 'Larastan\\Larastan\\Properties\\HigherOrderCollectionProxyPropertyExtension' => __DIR__ . '/..' . '/larastan/larastan/src/Properties/HigherOrderCollectionProxyPropertyExtension.php', - 'Larastan\\Larastan\\Properties\\MigrationHelper' => __DIR__ . '/..' . '/larastan/larastan/src/Properties/MigrationHelper.php', - 'Larastan\\Larastan\\Properties\\ModelAccessorExtension' => __DIR__ . '/..' . '/larastan/larastan/src/Properties/ModelAccessorExtension.php', - 'Larastan\\Larastan\\Properties\\ModelCastHelper' => __DIR__ . '/..' . '/larastan/larastan/src/Properties/ModelCastHelper.php', - 'Larastan\\Larastan\\Properties\\ModelProperty' => __DIR__ . '/..' . '/larastan/larastan/src/Properties/ModelProperty.php', - 'Larastan\\Larastan\\Properties\\ModelPropertyExtension' => __DIR__ . '/..' . '/larastan/larastan/src/Properties/ModelPropertyExtension.php', - 'Larastan\\Larastan\\Properties\\ModelPropertyHelper' => __DIR__ . '/..' . '/larastan/larastan/src/Properties/ModelPropertyHelper.php', - 'Larastan\\Larastan\\Properties\\ModelRelationsExtension' => __DIR__ . '/..' . '/larastan/larastan/src/Properties/ModelRelationsExtension.php', - 'Larastan\\Larastan\\Properties\\ReflectionTypeContainer' => __DIR__ . '/..' . '/larastan/larastan/src/Properties/ReflectionTypeContainer.php', - 'Larastan\\Larastan\\Properties\\SchemaAggregator' => __DIR__ . '/..' . '/larastan/larastan/src/Properties/SchemaAggregator.php', - 'Larastan\\Larastan\\Properties\\SchemaColumn' => __DIR__ . '/..' . '/larastan/larastan/src/Properties/SchemaColumn.php', - 'Larastan\\Larastan\\Properties\\SchemaTable' => __DIR__ . '/..' . '/larastan/larastan/src/Properties/SchemaTable.php', - 'Larastan\\Larastan\\Properties\\Schema\\PhpMyAdminDataTypeToPhpTypeConverter' => __DIR__ . '/..' . '/larastan/larastan/src/Properties/Schema/PhpMyAdminDataTypeToPhpTypeConverter.php', - 'Larastan\\Larastan\\Properties\\SquashedMigrationHelper' => __DIR__ . '/..' . '/larastan/larastan/src/Properties/SquashedMigrationHelper.php', - 'Larastan\\Larastan\\Reflection\\AnnotationScopeMethodParameterReflection' => __DIR__ . '/..' . '/larastan/larastan/src/Reflection/AnnotationScopeMethodParameterReflection.php', - 'Larastan\\Larastan\\Reflection\\AnnotationScopeMethodReflection' => __DIR__ . '/..' . '/larastan/larastan/src/Reflection/AnnotationScopeMethodReflection.php', - 'Larastan\\Larastan\\Reflection\\DynamicWhereMethodReflection' => __DIR__ . '/..' . '/larastan/larastan/src/Reflection/DynamicWhereMethodReflection.php', - 'Larastan\\Larastan\\Reflection\\DynamicWhereParameterReflection' => __DIR__ . '/..' . '/larastan/larastan/src/Reflection/DynamicWhereParameterReflection.php', - 'Larastan\\Larastan\\Reflection\\EloquentBuilderMethodReflection' => __DIR__ . '/..' . '/larastan/larastan/src/Reflection/EloquentBuilderMethodReflection.php', - 'Larastan\\Larastan\\Reflection\\ModelScopeMethodReflection' => __DIR__ . '/..' . '/larastan/larastan/src/Reflection/ModelScopeMethodReflection.php', - 'Larastan\\Larastan\\Reflection\\ReflectionHelper' => __DIR__ . '/..' . '/larastan/larastan/src/Reflection/ReflectionHelper.php', - 'Larastan\\Larastan\\Reflection\\StaticMethodReflection' => __DIR__ . '/..' . '/larastan/larastan/src/Reflection/StaticMethodReflection.php', - 'Larastan\\Larastan\\ReturnTypes\\AppEnvironmentReturnTypeExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/AppEnvironmentReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\AppMakeDynamicReturnTypeExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/AppMakeDynamicReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\AppMakeHelper' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/AppMakeHelper.php', - 'Larastan\\Larastan\\ReturnTypes\\ApplicationMakeDynamicReturnTypeExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/ApplicationMakeDynamicReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\AuthExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/AuthExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\AuthManagerExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/AuthManagerExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\BuilderModelFindExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/BuilderModelFindExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\CollectionFilterRejectDynamicReturnTypeExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/CollectionFilterRejectDynamicReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\CollectionWhereNotNullDynamicReturnTypeExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/CollectionWhereNotNullDynamicReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\ConsoleCommand\\ArgumentDynamicReturnTypeExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/ConsoleCommand/ArgumentDynamicReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\ConsoleCommand\\HasArgumentDynamicReturnTypeExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/ConsoleCommand/HasArgumentDynamicReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\ConsoleCommand\\HasOptionDynamicReturnTypeExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/ConsoleCommand/HasOptionDynamicReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\ConsoleCommand\\OptionDynamicReturnTypeExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/ConsoleCommand/OptionDynamicReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\ContainerArrayAccessDynamicMethodReturnTypeExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/ContainerArrayAccessDynamicMethodReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\ContainerMakeDynamicReturnTypeExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/ContainerMakeDynamicReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\DateExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/DateExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\DoubleUnderscoreHelperReturnTypeExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/DoubleUnderscoreHelperReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\EloquentBuilderExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/EloquentBuilderExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\EnumerableGenericStaticMethodDynamicMethodReturnTypeExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/EnumerableGenericStaticMethodDynamicMethodReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\EnumerableGenericStaticMethodDynamicStaticMethodReturnTypeExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/EnumerableGenericStaticMethodDynamicStaticMethodReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\FactoryDynamicMethodReturnTypeExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/FactoryDynamicMethodReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\GuardDynamicStaticMethodReturnTypeExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/GuardDynamicStaticMethodReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\GuardExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/GuardExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\Helpers\\AppExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/Helpers/AppExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\Helpers\\AuthExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/Helpers/AuthExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\Helpers\\CollectExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/Helpers/CollectExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\Helpers\\NowAndTodayExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/Helpers/NowAndTodayExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\Helpers\\ResponseExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/Helpers/ResponseExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\Helpers\\StrExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/Helpers/StrExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\Helpers\\TapExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/Helpers/TapExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\Helpers\\ValidatorExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/Helpers/ValidatorExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\Helpers\\ValueExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/Helpers/ValueExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\HigherOrderTapProxyExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/HigherOrderTapProxyExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\ModelDynamicStaticMethodReturnTypeExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/ModelDynamicStaticMethodReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\ModelFactoryDynamicStaticMethodReturnTypeExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/ModelFactoryDynamicStaticMethodReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\ModelFindExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/ModelFindExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\ModelOnlyDynamicMethodReturnTypeExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/ModelOnlyDynamicMethodReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\NewModelQueryDynamicMethodReturnTypeExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/NewModelQueryDynamicMethodReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\RelationCollectionExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/RelationCollectionExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\RequestFileExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/RequestFileExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\RequestRouteExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/RequestRouteExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\RequestUserExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/RequestUserExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\StorageDynamicStaticMethodReturnTypeExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/StorageDynamicStaticMethodReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\TestCaseExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/TestCaseExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\TransHelperReturnTypeExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/TransHelperReturnTypeExtension.php', - 'Larastan\\Larastan\\ReturnTypes\\TranslatorGetReturnTypeExtension' => __DIR__ . '/..' . '/larastan/larastan/src/ReturnTypes/TranslatorGetReturnTypeExtension.php', - 'Larastan\\Larastan\\Rules\\CheckDispatchArgumentTypesCompatibleWithClassConstructorRule' => __DIR__ . '/..' . '/larastan/larastan/src/Rules/CheckDispatchArgumentTypesCompatibleWithClassConstructorRule.php', - 'Larastan\\Larastan\\Rules\\ConsoleCommand\\UndefinedArgumentOrOptionRule' => __DIR__ . '/..' . '/larastan/larastan/src/Rules/ConsoleCommand/UndefinedArgumentOrOptionRule.php', - 'Larastan\\Larastan\\Rules\\DeferrableServiceProviderMissingProvidesRule' => __DIR__ . '/..' . '/larastan/larastan/src/Rules/DeferrableServiceProviderMissingProvidesRule.php', - 'Larastan\\Larastan\\Rules\\ModelAppendsRule' => __DIR__ . '/..' . '/larastan/larastan/src/Rules/ModelAppendsRule.php', - 'Larastan\\Larastan\\Rules\\ModelRuleHelper' => __DIR__ . '/..' . '/larastan/larastan/src/Rules/ModelRuleHelper.php', - 'Larastan\\Larastan\\Rules\\NoEnvCallsOutsideOfConfigRule' => __DIR__ . '/..' . '/larastan/larastan/src/Rules/NoEnvCallsOutsideOfConfigRule.php', - 'Larastan\\Larastan\\Rules\\NoModelMakeRule' => __DIR__ . '/..' . '/larastan/larastan/src/Rules/NoModelMakeRule.php', - 'Larastan\\Larastan\\Rules\\NoUnnecessaryCollectionCallRule' => __DIR__ . '/..' . '/larastan/larastan/src/Rules/NoUnnecessaryCollectionCallRule.php', - 'Larastan\\Larastan\\Rules\\OctaneCompatibilityRule' => __DIR__ . '/..' . '/larastan/larastan/src/Rules/OctaneCompatibilityRule.php', - 'Larastan\\Larastan\\Rules\\RelationExistenceRule' => __DIR__ . '/..' . '/larastan/larastan/src/Rules/RelationExistenceRule.php', - 'Larastan\\Larastan\\Rules\\UnusedViewsRule' => __DIR__ . '/..' . '/larastan/larastan/src/Rules/UnusedViewsRule.php', - 'Larastan\\Larastan\\Rules\\UselessConstructs\\NoUselessValueFunctionCallsRule' => __DIR__ . '/..' . '/larastan/larastan/src/Rules/UselessConstructs/NoUselessValueFunctionCallsRule.php', - 'Larastan\\Larastan\\Rules\\UselessConstructs\\NoUselessWithFunctionCallsRule' => __DIR__ . '/..' . '/larastan/larastan/src/Rules/UselessConstructs/NoUselessWithFunctionCallsRule.php', - 'Larastan\\Larastan\\Support\\CollectionHelper' => __DIR__ . '/..' . '/larastan/larastan/src/Support/CollectionHelper.php', - 'Larastan\\Larastan\\Support\\HigherOrderCollectionProxyHelper' => __DIR__ . '/..' . '/larastan/larastan/src/Support/HigherOrderCollectionProxyHelper.php', - 'Larastan\\Larastan\\Support\\ViewFileHelper' => __DIR__ . '/..' . '/larastan/larastan/src/Support/ViewFileHelper.php', - 'Larastan\\Larastan\\Types\\AbortIfFunctionTypeSpecifyingExtension' => __DIR__ . '/..' . '/larastan/larastan/src/Types/AbortIfFunctionTypeSpecifyingExtension.php', - 'Larastan\\Larastan\\Types\\Factory\\ModelFactoryType' => __DIR__ . '/..' . '/larastan/larastan/src/Types/Factory/ModelFactoryType.php', - 'Larastan\\Larastan\\Types\\GenericEloquentBuilderTypeNodeResolverExtension' => __DIR__ . '/..' . '/larastan/larastan/src/Types/GenericEloquentBuilderTypeNodeResolverExtension.php', - 'Larastan\\Larastan\\Types\\GenericEloquentCollectionTypeNodeResolverExtension' => __DIR__ . '/..' . '/larastan/larastan/src/Types/GenericEloquentCollectionTypeNodeResolverExtension.php', - 'Larastan\\Larastan\\Types\\ModelProperty\\GenericModelPropertyType' => __DIR__ . '/..' . '/larastan/larastan/src/Types/ModelProperty/GenericModelPropertyType.php', - 'Larastan\\Larastan\\Types\\ModelProperty\\ModelPropertyTypeNodeResolverExtension' => __DIR__ . '/..' . '/larastan/larastan/src/Types/ModelProperty/ModelPropertyTypeNodeResolverExtension.php', - 'Larastan\\Larastan\\Types\\ModelRelationsDynamicMethodReturnTypeExtension' => __DIR__ . '/..' . '/larastan/larastan/src/Types/ModelRelationsDynamicMethodReturnTypeExtension.php', - 'Larastan\\Larastan\\Types\\Passable' => __DIR__ . '/..' . '/larastan/larastan/src/Types/Passable.php', - 'Larastan\\Larastan\\Types\\RelationDynamicMethodReturnTypeExtension' => __DIR__ . '/..' . '/larastan/larastan/src/Types/RelationDynamicMethodReturnTypeExtension.php', - 'Larastan\\Larastan\\Types\\RelationParserHelper' => __DIR__ . '/..' . '/larastan/larastan/src/Types/RelationParserHelper.php', - 'Larastan\\Larastan\\Types\\ViewStringType' => __DIR__ . '/..' . '/larastan/larastan/src/Types/ViewStringType.php', - 'Larastan\\Larastan\\Types\\ViewStringTypeNodeResolverExtension' => __DIR__ . '/..' . '/larastan/larastan/src/Types/ViewStringTypeNodeResolverExtension.php', - 'Laravel\\Prompts\\Concerns\\Colors' => __DIR__ . '/..' . '/laravel/prompts/src/Concerns/Colors.php', - 'Laravel\\Prompts\\Concerns\\Cursor' => __DIR__ . '/..' . '/laravel/prompts/src/Concerns/Cursor.php', - 'Laravel\\Prompts\\Concerns\\Erase' => __DIR__ . '/..' . '/laravel/prompts/src/Concerns/Erase.php', - 'Laravel\\Prompts\\Concerns\\Events' => __DIR__ . '/..' . '/laravel/prompts/src/Concerns/Events.php', - 'Laravel\\Prompts\\Concerns\\FakesInputOutput' => __DIR__ . '/..' . '/laravel/prompts/src/Concerns/FakesInputOutput.php', - 'Laravel\\Prompts\\Concerns\\Fallback' => __DIR__ . '/..' . '/laravel/prompts/src/Concerns/Fallback.php', - 'Laravel\\Prompts\\Concerns\\Interactivity' => __DIR__ . '/..' . '/laravel/prompts/src/Concerns/Interactivity.php', - 'Laravel\\Prompts\\Concerns\\Scrolling' => __DIR__ . '/..' . '/laravel/prompts/src/Concerns/Scrolling.php', - 'Laravel\\Prompts\\Concerns\\Termwind' => __DIR__ . '/..' . '/laravel/prompts/src/Concerns/Termwind.php', - 'Laravel\\Prompts\\Concerns\\Themes' => __DIR__ . '/..' . '/laravel/prompts/src/Concerns/Themes.php', - 'Laravel\\Prompts\\Concerns\\Truncation' => __DIR__ . '/..' . '/laravel/prompts/src/Concerns/Truncation.php', - 'Laravel\\Prompts\\Concerns\\TypedValue' => __DIR__ . '/..' . '/laravel/prompts/src/Concerns/TypedValue.php', - 'Laravel\\Prompts\\ConfirmPrompt' => __DIR__ . '/..' . '/laravel/prompts/src/ConfirmPrompt.php', - 'Laravel\\Prompts\\Exceptions\\FormRevertedException' => __DIR__ . '/..' . '/laravel/prompts/src/Exceptions/FormRevertedException.php', - 'Laravel\\Prompts\\Exceptions\\NonInteractiveValidationException' => __DIR__ . '/..' . '/laravel/prompts/src/Exceptions/NonInteractiveValidationException.php', - 'Laravel\\Prompts\\FormBuilder' => __DIR__ . '/..' . '/laravel/prompts/src/FormBuilder.php', - 'Laravel\\Prompts\\FormStep' => __DIR__ . '/..' . '/laravel/prompts/src/FormStep.php', - 'Laravel\\Prompts\\Key' => __DIR__ . '/..' . '/laravel/prompts/src/Key.php', - 'Laravel\\Prompts\\MultiSearchPrompt' => __DIR__ . '/..' . '/laravel/prompts/src/MultiSearchPrompt.php', - 'Laravel\\Prompts\\MultiSelectPrompt' => __DIR__ . '/..' . '/laravel/prompts/src/MultiSelectPrompt.php', - 'Laravel\\Prompts\\Note' => __DIR__ . '/..' . '/laravel/prompts/src/Note.php', - 'Laravel\\Prompts\\Output\\BufferedConsoleOutput' => __DIR__ . '/..' . '/laravel/prompts/src/Output/BufferedConsoleOutput.php', - 'Laravel\\Prompts\\Output\\ConsoleOutput' => __DIR__ . '/..' . '/laravel/prompts/src/Output/ConsoleOutput.php', - 'Laravel\\Prompts\\PasswordPrompt' => __DIR__ . '/..' . '/laravel/prompts/src/PasswordPrompt.php', - 'Laravel\\Prompts\\PausePrompt' => __DIR__ . '/..' . '/laravel/prompts/src/PausePrompt.php', - 'Laravel\\Prompts\\Progress' => __DIR__ . '/..' . '/laravel/prompts/src/Progress.php', - 'Laravel\\Prompts\\Prompt' => __DIR__ . '/..' . '/laravel/prompts/src/Prompt.php', - 'Laravel\\Prompts\\SearchPrompt' => __DIR__ . '/..' . '/laravel/prompts/src/SearchPrompt.php', - 'Laravel\\Prompts\\SelectPrompt' => __DIR__ . '/..' . '/laravel/prompts/src/SelectPrompt.php', - 'Laravel\\Prompts\\Spinner' => __DIR__ . '/..' . '/laravel/prompts/src/Spinner.php', - 'Laravel\\Prompts\\SuggestPrompt' => __DIR__ . '/..' . '/laravel/prompts/src/SuggestPrompt.php', - 'Laravel\\Prompts\\Table' => __DIR__ . '/..' . '/laravel/prompts/src/Table.php', - 'Laravel\\Prompts\\Terminal' => __DIR__ . '/..' . '/laravel/prompts/src/Terminal.php', - 'Laravel\\Prompts\\TextPrompt' => __DIR__ . '/..' . '/laravel/prompts/src/TextPrompt.php', - 'Laravel\\Prompts\\TextareaPrompt' => __DIR__ . '/..' . '/laravel/prompts/src/TextareaPrompt.php', - 'Laravel\\Prompts\\Themes\\Contracts\\Scrolling' => __DIR__ . '/..' . '/laravel/prompts/src/Themes/Contracts/Scrolling.php', - 'Laravel\\Prompts\\Themes\\Default\\Concerns\\DrawsBoxes' => __DIR__ . '/..' . '/laravel/prompts/src/Themes/Default/Concerns/DrawsBoxes.php', - 'Laravel\\Prompts\\Themes\\Default\\Concerns\\DrawsScrollbars' => __DIR__ . '/..' . '/laravel/prompts/src/Themes/Default/Concerns/DrawsScrollbars.php', - 'Laravel\\Prompts\\Themes\\Default\\Concerns\\InteractsWithStrings' => __DIR__ . '/..' . '/laravel/prompts/src/Themes/Default/Concerns/InteractsWithStrings.php', - 'Laravel\\Prompts\\Themes\\Default\\ConfirmPromptRenderer' => __DIR__ . '/..' . '/laravel/prompts/src/Themes/Default/ConfirmPromptRenderer.php', - 'Laravel\\Prompts\\Themes\\Default\\MultiSearchPromptRenderer' => __DIR__ . '/..' . '/laravel/prompts/src/Themes/Default/MultiSearchPromptRenderer.php', - 'Laravel\\Prompts\\Themes\\Default\\MultiSelectPromptRenderer' => __DIR__ . '/..' . '/laravel/prompts/src/Themes/Default/MultiSelectPromptRenderer.php', - 'Laravel\\Prompts\\Themes\\Default\\NoteRenderer' => __DIR__ . '/..' . '/laravel/prompts/src/Themes/Default/NoteRenderer.php', - 'Laravel\\Prompts\\Themes\\Default\\PasswordPromptRenderer' => __DIR__ . '/..' . '/laravel/prompts/src/Themes/Default/PasswordPromptRenderer.php', - 'Laravel\\Prompts\\Themes\\Default\\PausePromptRenderer' => __DIR__ . '/..' . '/laravel/prompts/src/Themes/Default/PausePromptRenderer.php', - 'Laravel\\Prompts\\Themes\\Default\\ProgressRenderer' => __DIR__ . '/..' . '/laravel/prompts/src/Themes/Default/ProgressRenderer.php', - 'Laravel\\Prompts\\Themes\\Default\\Renderer' => __DIR__ . '/..' . '/laravel/prompts/src/Themes/Default/Renderer.php', - 'Laravel\\Prompts\\Themes\\Default\\SearchPromptRenderer' => __DIR__ . '/..' . '/laravel/prompts/src/Themes/Default/SearchPromptRenderer.php', - 'Laravel\\Prompts\\Themes\\Default\\SelectPromptRenderer' => __DIR__ . '/..' . '/laravel/prompts/src/Themes/Default/SelectPromptRenderer.php', - 'Laravel\\Prompts\\Themes\\Default\\SpinnerRenderer' => __DIR__ . '/..' . '/laravel/prompts/src/Themes/Default/SpinnerRenderer.php', - 'Laravel\\Prompts\\Themes\\Default\\SuggestPromptRenderer' => __DIR__ . '/..' . '/laravel/prompts/src/Themes/Default/SuggestPromptRenderer.php', - 'Laravel\\Prompts\\Themes\\Default\\TableRenderer' => __DIR__ . '/..' . '/laravel/prompts/src/Themes/Default/TableRenderer.php', - 'Laravel\\Prompts\\Themes\\Default\\TextPromptRenderer' => __DIR__ . '/..' . '/laravel/prompts/src/Themes/Default/TextPromptRenderer.php', - 'Laravel\\Prompts\\Themes\\Default\\TextareaPromptRenderer' => __DIR__ . '/..' . '/laravel/prompts/src/Themes/Default/TextareaPromptRenderer.php', - 'Laravel\\SerializableClosure\\Contracts\\Serializable' => __DIR__ . '/..' . '/laravel/serializable-closure/src/Contracts/Serializable.php', - 'Laravel\\SerializableClosure\\Contracts\\Signer' => __DIR__ . '/..' . '/laravel/serializable-closure/src/Contracts/Signer.php', - 'Laravel\\SerializableClosure\\Exceptions\\InvalidSignatureException' => __DIR__ . '/..' . '/laravel/serializable-closure/src/Exceptions/InvalidSignatureException.php', - 'Laravel\\SerializableClosure\\Exceptions\\MissingSecretKeyException' => __DIR__ . '/..' . '/laravel/serializable-closure/src/Exceptions/MissingSecretKeyException.php', - 'Laravel\\SerializableClosure\\Exceptions\\PhpVersionNotSupportedException' => __DIR__ . '/..' . '/laravel/serializable-closure/src/Exceptions/PhpVersionNotSupportedException.php', - 'Laravel\\SerializableClosure\\SerializableClosure' => __DIR__ . '/..' . '/laravel/serializable-closure/src/SerializableClosure.php', - 'Laravel\\SerializableClosure\\Serializers\\Native' => __DIR__ . '/..' . '/laravel/serializable-closure/src/Serializers/Native.php', - 'Laravel\\SerializableClosure\\Serializers\\Signed' => __DIR__ . '/..' . '/laravel/serializable-closure/src/Serializers/Signed.php', - 'Laravel\\SerializableClosure\\Signers\\Hmac' => __DIR__ . '/..' . '/laravel/serializable-closure/src/Signers/Hmac.php', - 'Laravel\\SerializableClosure\\Support\\ClosureScope' => __DIR__ . '/..' . '/laravel/serializable-closure/src/Support/ClosureScope.php', - 'Laravel\\SerializableClosure\\Support\\ClosureStream' => __DIR__ . '/..' . '/laravel/serializable-closure/src/Support/ClosureStream.php', - 'Laravel\\SerializableClosure\\Support\\ReflectionClosure' => __DIR__ . '/..' . '/laravel/serializable-closure/src/Support/ReflectionClosure.php', - 'Laravel\\SerializableClosure\\Support\\SelfReference' => __DIR__ . '/..' . '/laravel/serializable-closure/src/Support/SelfReference.php', - 'Laravel\\SerializableClosure\\UnsignedSerializableClosure' => __DIR__ . '/..' . '/laravel/serializable-closure/src/UnsignedSerializableClosure.php', - 'Laravel\\Tinker\\ClassAliasAutoloader' => __DIR__ . '/..' . '/laravel/tinker/src/ClassAliasAutoloader.php', - 'Laravel\\Tinker\\Console\\TinkerCommand' => __DIR__ . '/..' . '/laravel/tinker/src/Console/TinkerCommand.php', - 'Laravel\\Tinker\\TinkerCaster' => __DIR__ . '/..' . '/laravel/tinker/src/TinkerCaster.php', - 'Laravel\\Tinker\\TinkerServiceProvider' => __DIR__ . '/..' . '/laravel/tinker/src/TinkerServiceProvider.php', - 'Laravel\\Ui\\AuthCommand' => __DIR__ . '/..' . '/laravel/ui/src/AuthCommand.php', - 'Laravel\\Ui\\AuthRouteMethods' => __DIR__ . '/..' . '/laravel/ui/src/AuthRouteMethods.php', - 'Laravel\\Ui\\ControllersCommand' => __DIR__ . '/..' . '/laravel/ui/src/ControllersCommand.php', - 'Laravel\\Ui\\Presets\\Bootstrap' => __DIR__ . '/..' . '/laravel/ui/src/Presets/Bootstrap.php', - 'Laravel\\Ui\\Presets\\Preset' => __DIR__ . '/..' . '/laravel/ui/src/Presets/Preset.php', - 'Laravel\\Ui\\Presets\\React' => __DIR__ . '/..' . '/laravel/ui/src/Presets/React.php', - 'Laravel\\Ui\\Presets\\Vue' => __DIR__ . '/..' . '/laravel/ui/src/Presets/Vue.php', - 'Laravel\\Ui\\UiCommand' => __DIR__ . '/..' . '/laravel/ui/src/UiCommand.php', - 'Laravel\\Ui\\UiServiceProvider' => __DIR__ . '/..' . '/laravel/ui/src/UiServiceProvider.php', - 'League\\CommonMark\\CommonMarkConverter' => __DIR__ . '/..' . '/league/commonmark/src/CommonMarkConverter.php', - 'League\\CommonMark\\ConverterInterface' => __DIR__ . '/..' . '/league/commonmark/src/ConverterInterface.php', - 'League\\CommonMark\\Delimiter\\Bracket' => __DIR__ . '/..' . '/league/commonmark/src/Delimiter/Bracket.php', - 'League\\CommonMark\\Delimiter\\Delimiter' => __DIR__ . '/..' . '/league/commonmark/src/Delimiter/Delimiter.php', - 'League\\CommonMark\\Delimiter\\DelimiterInterface' => __DIR__ . '/..' . '/league/commonmark/src/Delimiter/DelimiterInterface.php', - 'League\\CommonMark\\Delimiter\\DelimiterParser' => __DIR__ . '/..' . '/league/commonmark/src/Delimiter/DelimiterParser.php', - 'League\\CommonMark\\Delimiter\\DelimiterStack' => __DIR__ . '/..' . '/league/commonmark/src/Delimiter/DelimiterStack.php', - 'League\\CommonMark\\Delimiter\\Processor\\CacheableDelimiterProcessorInterface' => __DIR__ . '/..' . '/league/commonmark/src/Delimiter/Processor/CacheableDelimiterProcessorInterface.php', - 'League\\CommonMark\\Delimiter\\Processor\\DelimiterProcessorCollection' => __DIR__ . '/..' . '/league/commonmark/src/Delimiter/Processor/DelimiterProcessorCollection.php', - 'League\\CommonMark\\Delimiter\\Processor\\DelimiterProcessorCollectionInterface' => __DIR__ . '/..' . '/league/commonmark/src/Delimiter/Processor/DelimiterProcessorCollectionInterface.php', - 'League\\CommonMark\\Delimiter\\Processor\\DelimiterProcessorInterface' => __DIR__ . '/..' . '/league/commonmark/src/Delimiter/Processor/DelimiterProcessorInterface.php', - 'League\\CommonMark\\Delimiter\\Processor\\StaggeredDelimiterProcessor' => __DIR__ . '/..' . '/league/commonmark/src/Delimiter/Processor/StaggeredDelimiterProcessor.php', - 'League\\CommonMark\\Environment\\Environment' => __DIR__ . '/..' . '/league/commonmark/src/Environment/Environment.php', - 'League\\CommonMark\\Environment\\EnvironmentAwareInterface' => __DIR__ . '/..' . '/league/commonmark/src/Environment/EnvironmentAwareInterface.php', - 'League\\CommonMark\\Environment\\EnvironmentBuilderInterface' => __DIR__ . '/..' . '/league/commonmark/src/Environment/EnvironmentBuilderInterface.php', - 'League\\CommonMark\\Environment\\EnvironmentInterface' => __DIR__ . '/..' . '/league/commonmark/src/Environment/EnvironmentInterface.php', - 'League\\CommonMark\\Event\\AbstractEvent' => __DIR__ . '/..' . '/league/commonmark/src/Event/AbstractEvent.php', - 'League\\CommonMark\\Event\\DocumentParsedEvent' => __DIR__ . '/..' . '/league/commonmark/src/Event/DocumentParsedEvent.php', - 'League\\CommonMark\\Event\\DocumentPreParsedEvent' => __DIR__ . '/..' . '/league/commonmark/src/Event/DocumentPreParsedEvent.php', - 'League\\CommonMark\\Event\\DocumentPreRenderEvent' => __DIR__ . '/..' . '/league/commonmark/src/Event/DocumentPreRenderEvent.php', - 'League\\CommonMark\\Event\\DocumentRenderedEvent' => __DIR__ . '/..' . '/league/commonmark/src/Event/DocumentRenderedEvent.php', - 'League\\CommonMark\\Event\\ListenerData' => __DIR__ . '/..' . '/league/commonmark/src/Event/ListenerData.php', - 'League\\CommonMark\\Exception\\AlreadyInitializedException' => __DIR__ . '/..' . '/league/commonmark/src/Exception/AlreadyInitializedException.php', - 'League\\CommonMark\\Exception\\CommonMarkException' => __DIR__ . '/..' . '/league/commonmark/src/Exception/CommonMarkException.php', - 'League\\CommonMark\\Exception\\IOException' => __DIR__ . '/..' . '/league/commonmark/src/Exception/IOException.php', - 'League\\CommonMark\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/league/commonmark/src/Exception/InvalidArgumentException.php', - 'League\\CommonMark\\Exception\\LogicException' => __DIR__ . '/..' . '/league/commonmark/src/Exception/LogicException.php', - 'League\\CommonMark\\Exception\\MissingDependencyException' => __DIR__ . '/..' . '/league/commonmark/src/Exception/MissingDependencyException.php', - 'League\\CommonMark\\Exception\\UnexpectedEncodingException' => __DIR__ . '/..' . '/league/commonmark/src/Exception/UnexpectedEncodingException.php', - 'League\\CommonMark\\Extension\\Attributes\\AttributesExtension' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Attributes/AttributesExtension.php', - 'League\\CommonMark\\Extension\\Attributes\\Event\\AttributesListener' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Attributes/Event/AttributesListener.php', - 'League\\CommonMark\\Extension\\Attributes\\Node\\Attributes' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Attributes/Node/Attributes.php', - 'League\\CommonMark\\Extension\\Attributes\\Node\\AttributesInline' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Attributes/Node/AttributesInline.php', - 'League\\CommonMark\\Extension\\Attributes\\Parser\\AttributesBlockContinueParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Attributes/Parser/AttributesBlockContinueParser.php', - 'League\\CommonMark\\Extension\\Attributes\\Parser\\AttributesBlockStartParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Attributes/Parser/AttributesBlockStartParser.php', - 'League\\CommonMark\\Extension\\Attributes\\Parser\\AttributesInlineParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Attributes/Parser/AttributesInlineParser.php', - 'League\\CommonMark\\Extension\\Attributes\\Util\\AttributesHelper' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Attributes/Util/AttributesHelper.php', - 'League\\CommonMark\\Extension\\Autolink\\AutolinkExtension' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Autolink/AutolinkExtension.php', - 'League\\CommonMark\\Extension\\Autolink\\EmailAutolinkParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Autolink/EmailAutolinkParser.php', - 'League\\CommonMark\\Extension\\Autolink\\UrlAutolinkParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Autolink/UrlAutolinkParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\CommonMarkCoreExtension' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/CommonMarkCoreExtension.php', - 'League\\CommonMark\\Extension\\CommonMark\\Delimiter\\Processor\\EmphasisDelimiterProcessor' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Delimiter/Processor/EmphasisDelimiterProcessor.php', - 'League\\CommonMark\\Extension\\CommonMark\\Node\\Block\\BlockQuote' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Node/Block/BlockQuote.php', - 'League\\CommonMark\\Extension\\CommonMark\\Node\\Block\\FencedCode' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Node/Block/FencedCode.php', - 'League\\CommonMark\\Extension\\CommonMark\\Node\\Block\\Heading' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Node/Block/Heading.php', - 'League\\CommonMark\\Extension\\CommonMark\\Node\\Block\\HtmlBlock' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Node/Block/HtmlBlock.php', - 'League\\CommonMark\\Extension\\CommonMark\\Node\\Block\\IndentedCode' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Node/Block/IndentedCode.php', - 'League\\CommonMark\\Extension\\CommonMark\\Node\\Block\\ListBlock' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Node/Block/ListBlock.php', - 'League\\CommonMark\\Extension\\CommonMark\\Node\\Block\\ListData' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Node/Block/ListData.php', - 'League\\CommonMark\\Extension\\CommonMark\\Node\\Block\\ListItem' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Node/Block/ListItem.php', - 'League\\CommonMark\\Extension\\CommonMark\\Node\\Block\\ThematicBreak' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Node/Block/ThematicBreak.php', - 'League\\CommonMark\\Extension\\CommonMark\\Node\\Inline\\AbstractWebResource' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Node/Inline/AbstractWebResource.php', - 'League\\CommonMark\\Extension\\CommonMark\\Node\\Inline\\Code' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Node/Inline/Code.php', - 'League\\CommonMark\\Extension\\CommonMark\\Node\\Inline\\Emphasis' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Node/Inline/Emphasis.php', - 'League\\CommonMark\\Extension\\CommonMark\\Node\\Inline\\HtmlInline' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Node/Inline/HtmlInline.php', - 'League\\CommonMark\\Extension\\CommonMark\\Node\\Inline\\Image' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Node/Inline/Image.php', - 'League\\CommonMark\\Extension\\CommonMark\\Node\\Inline\\Link' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Node/Inline/Link.php', - 'League\\CommonMark\\Extension\\CommonMark\\Node\\Inline\\Strong' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Node/Inline/Strong.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Block\\BlockQuoteParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Parser/Block/BlockQuoteParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Block\\BlockQuoteStartParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Parser/Block/BlockQuoteStartParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Block\\FencedCodeParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Parser/Block/FencedCodeParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Block\\FencedCodeStartParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Parser/Block/FencedCodeStartParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Block\\HeadingParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Parser/Block/HeadingParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Block\\HeadingStartParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Parser/Block/HeadingStartParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Block\\HtmlBlockParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Parser/Block/HtmlBlockParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Block\\HtmlBlockStartParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Parser/Block/HtmlBlockStartParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Block\\IndentedCodeParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Parser/Block/IndentedCodeParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Block\\IndentedCodeStartParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Parser/Block/IndentedCodeStartParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Block\\ListBlockParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Parser/Block/ListBlockParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Block\\ListBlockStartParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Parser/Block/ListBlockStartParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Block\\ListItemParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Parser/Block/ListItemParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Block\\ThematicBreakParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Parser/Block/ThematicBreakParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Block\\ThematicBreakStartParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Parser/Block/ThematicBreakStartParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Inline\\AutolinkParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Parser/Inline/AutolinkParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Inline\\BacktickParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Parser/Inline/BacktickParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Inline\\BangParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Parser/Inline/BangParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Inline\\CloseBracketParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Parser/Inline/CloseBracketParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Inline\\EntityParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Parser/Inline/EntityParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Inline\\EscapableParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Parser/Inline/EscapableParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Inline\\HtmlInlineParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Parser/Inline/HtmlInlineParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Parser\\Inline\\OpenBracketParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Parser/Inline/OpenBracketParser.php', - 'League\\CommonMark\\Extension\\CommonMark\\Renderer\\Block\\BlockQuoteRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Renderer/Block/BlockQuoteRenderer.php', - 'League\\CommonMark\\Extension\\CommonMark\\Renderer\\Block\\FencedCodeRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Renderer/Block/FencedCodeRenderer.php', - 'League\\CommonMark\\Extension\\CommonMark\\Renderer\\Block\\HeadingRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Renderer/Block/HeadingRenderer.php', - 'League\\CommonMark\\Extension\\CommonMark\\Renderer\\Block\\HtmlBlockRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Renderer/Block/HtmlBlockRenderer.php', - 'League\\CommonMark\\Extension\\CommonMark\\Renderer\\Block\\IndentedCodeRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Renderer/Block/IndentedCodeRenderer.php', - 'League\\CommonMark\\Extension\\CommonMark\\Renderer\\Block\\ListBlockRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Renderer/Block/ListBlockRenderer.php', - 'League\\CommonMark\\Extension\\CommonMark\\Renderer\\Block\\ListItemRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Renderer/Block/ListItemRenderer.php', - 'League\\CommonMark\\Extension\\CommonMark\\Renderer\\Block\\ThematicBreakRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Renderer/Block/ThematicBreakRenderer.php', - 'League\\CommonMark\\Extension\\CommonMark\\Renderer\\Inline\\CodeRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Renderer/Inline/CodeRenderer.php', - 'League\\CommonMark\\Extension\\CommonMark\\Renderer\\Inline\\EmphasisRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Renderer/Inline/EmphasisRenderer.php', - 'League\\CommonMark\\Extension\\CommonMark\\Renderer\\Inline\\HtmlInlineRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Renderer/Inline/HtmlInlineRenderer.php', - 'League\\CommonMark\\Extension\\CommonMark\\Renderer\\Inline\\ImageRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Renderer/Inline/ImageRenderer.php', - 'League\\CommonMark\\Extension\\CommonMark\\Renderer\\Inline\\LinkRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Renderer/Inline/LinkRenderer.php', - 'League\\CommonMark\\Extension\\CommonMark\\Renderer\\Inline\\StrongRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Extension/CommonMark/Renderer/Inline/StrongRenderer.php', - 'League\\CommonMark\\Extension\\ConfigurableExtensionInterface' => __DIR__ . '/..' . '/league/commonmark/src/Extension/ConfigurableExtensionInterface.php', - 'League\\CommonMark\\Extension\\DefaultAttributes\\ApplyDefaultAttributesProcessor' => __DIR__ . '/..' . '/league/commonmark/src/Extension/DefaultAttributes/ApplyDefaultAttributesProcessor.php', - 'League\\CommonMark\\Extension\\DefaultAttributes\\DefaultAttributesExtension' => __DIR__ . '/..' . '/league/commonmark/src/Extension/DefaultAttributes/DefaultAttributesExtension.php', - 'League\\CommonMark\\Extension\\DescriptionList\\DescriptionListExtension' => __DIR__ . '/..' . '/league/commonmark/src/Extension/DescriptionList/DescriptionListExtension.php', - 'League\\CommonMark\\Extension\\DescriptionList\\Event\\ConsecutiveDescriptionListMerger' => __DIR__ . '/..' . '/league/commonmark/src/Extension/DescriptionList/Event/ConsecutiveDescriptionListMerger.php', - 'League\\CommonMark\\Extension\\DescriptionList\\Event\\LooseDescriptionHandler' => __DIR__ . '/..' . '/league/commonmark/src/Extension/DescriptionList/Event/LooseDescriptionHandler.php', - 'League\\CommonMark\\Extension\\DescriptionList\\Node\\Description' => __DIR__ . '/..' . '/league/commonmark/src/Extension/DescriptionList/Node/Description.php', - 'League\\CommonMark\\Extension\\DescriptionList\\Node\\DescriptionList' => __DIR__ . '/..' . '/league/commonmark/src/Extension/DescriptionList/Node/DescriptionList.php', - 'League\\CommonMark\\Extension\\DescriptionList\\Node\\DescriptionTerm' => __DIR__ . '/..' . '/league/commonmark/src/Extension/DescriptionList/Node/DescriptionTerm.php', - 'League\\CommonMark\\Extension\\DescriptionList\\Parser\\DescriptionContinueParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/DescriptionList/Parser/DescriptionContinueParser.php', - 'League\\CommonMark\\Extension\\DescriptionList\\Parser\\DescriptionListContinueParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/DescriptionList/Parser/DescriptionListContinueParser.php', - 'League\\CommonMark\\Extension\\DescriptionList\\Parser\\DescriptionStartParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/DescriptionList/Parser/DescriptionStartParser.php', - 'League\\CommonMark\\Extension\\DescriptionList\\Parser\\DescriptionTermContinueParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/DescriptionList/Parser/DescriptionTermContinueParser.php', - 'League\\CommonMark\\Extension\\DescriptionList\\Renderer\\DescriptionListRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Extension/DescriptionList/Renderer/DescriptionListRenderer.php', - 'League\\CommonMark\\Extension\\DescriptionList\\Renderer\\DescriptionRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Extension/DescriptionList/Renderer/DescriptionRenderer.php', - 'League\\CommonMark\\Extension\\DescriptionList\\Renderer\\DescriptionTermRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Extension/DescriptionList/Renderer/DescriptionTermRenderer.php', - 'League\\CommonMark\\Extension\\DisallowedRawHtml\\DisallowedRawHtmlExtension' => __DIR__ . '/..' . '/league/commonmark/src/Extension/DisallowedRawHtml/DisallowedRawHtmlExtension.php', - 'League\\CommonMark\\Extension\\DisallowedRawHtml\\DisallowedRawHtmlRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Extension/DisallowedRawHtml/DisallowedRawHtmlRenderer.php', - 'League\\CommonMark\\Extension\\Embed\\Bridge\\OscaroteroEmbedAdapter' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Embed/Bridge/OscaroteroEmbedAdapter.php', - 'League\\CommonMark\\Extension\\Embed\\DomainFilteringAdapter' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Embed/DomainFilteringAdapter.php', - 'League\\CommonMark\\Extension\\Embed\\Embed' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Embed/Embed.php', - 'League\\CommonMark\\Extension\\Embed\\EmbedAdapterInterface' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Embed/EmbedAdapterInterface.php', - 'League\\CommonMark\\Extension\\Embed\\EmbedExtension' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Embed/EmbedExtension.php', - 'League\\CommonMark\\Extension\\Embed\\EmbedParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Embed/EmbedParser.php', - 'League\\CommonMark\\Extension\\Embed\\EmbedProcessor' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Embed/EmbedProcessor.php', - 'League\\CommonMark\\Extension\\Embed\\EmbedRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Embed/EmbedRenderer.php', - 'League\\CommonMark\\Extension\\Embed\\EmbedStartParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Embed/EmbedStartParser.php', - 'League\\CommonMark\\Extension\\ExtensionInterface' => __DIR__ . '/..' . '/league/commonmark/src/Extension/ExtensionInterface.php', - 'League\\CommonMark\\Extension\\ExternalLink\\ExternalLinkExtension' => __DIR__ . '/..' . '/league/commonmark/src/Extension/ExternalLink/ExternalLinkExtension.php', - 'League\\CommonMark\\Extension\\ExternalLink\\ExternalLinkProcessor' => __DIR__ . '/..' . '/league/commonmark/src/Extension/ExternalLink/ExternalLinkProcessor.php', - 'League\\CommonMark\\Extension\\Footnote\\Event\\AnonymousFootnotesListener' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Footnote/Event/AnonymousFootnotesListener.php', - 'League\\CommonMark\\Extension\\Footnote\\Event\\FixOrphanedFootnotesAndRefsListener' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Footnote/Event/FixOrphanedFootnotesAndRefsListener.php', - 'League\\CommonMark\\Extension\\Footnote\\Event\\GatherFootnotesListener' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Footnote/Event/GatherFootnotesListener.php', - 'League\\CommonMark\\Extension\\Footnote\\Event\\NumberFootnotesListener' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Footnote/Event/NumberFootnotesListener.php', - 'League\\CommonMark\\Extension\\Footnote\\FootnoteExtension' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Footnote/FootnoteExtension.php', - 'League\\CommonMark\\Extension\\Footnote\\Node\\Footnote' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Footnote/Node/Footnote.php', - 'League\\CommonMark\\Extension\\Footnote\\Node\\FootnoteBackref' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Footnote/Node/FootnoteBackref.php', - 'League\\CommonMark\\Extension\\Footnote\\Node\\FootnoteContainer' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Footnote/Node/FootnoteContainer.php', - 'League\\CommonMark\\Extension\\Footnote\\Node\\FootnoteRef' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Footnote/Node/FootnoteRef.php', - 'League\\CommonMark\\Extension\\Footnote\\Parser\\AnonymousFootnoteRefParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Footnote/Parser/AnonymousFootnoteRefParser.php', - 'League\\CommonMark\\Extension\\Footnote\\Parser\\FootnoteParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Footnote/Parser/FootnoteParser.php', - 'League\\CommonMark\\Extension\\Footnote\\Parser\\FootnoteRefParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Footnote/Parser/FootnoteRefParser.php', - 'League\\CommonMark\\Extension\\Footnote\\Parser\\FootnoteStartParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Footnote/Parser/FootnoteStartParser.php', - 'League\\CommonMark\\Extension\\Footnote\\Renderer\\FootnoteBackrefRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Footnote/Renderer/FootnoteBackrefRenderer.php', - 'League\\CommonMark\\Extension\\Footnote\\Renderer\\FootnoteContainerRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Footnote/Renderer/FootnoteContainerRenderer.php', - 'League\\CommonMark\\Extension\\Footnote\\Renderer\\FootnoteRefRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Footnote/Renderer/FootnoteRefRenderer.php', - 'League\\CommonMark\\Extension\\Footnote\\Renderer\\FootnoteRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Footnote/Renderer/FootnoteRenderer.php', - 'League\\CommonMark\\Extension\\FrontMatter\\Data\\FrontMatterDataParserInterface' => __DIR__ . '/..' . '/league/commonmark/src/Extension/FrontMatter/Data/FrontMatterDataParserInterface.php', - 'League\\CommonMark\\Extension\\FrontMatter\\Data\\LibYamlFrontMatterParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/FrontMatter/Data/LibYamlFrontMatterParser.php', - 'League\\CommonMark\\Extension\\FrontMatter\\Data\\SymfonyYamlFrontMatterParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/FrontMatter/Data/SymfonyYamlFrontMatterParser.php', - 'League\\CommonMark\\Extension\\FrontMatter\\Exception\\InvalidFrontMatterException' => __DIR__ . '/..' . '/league/commonmark/src/Extension/FrontMatter/Exception/InvalidFrontMatterException.php', - 'League\\CommonMark\\Extension\\FrontMatter\\FrontMatterExtension' => __DIR__ . '/..' . '/league/commonmark/src/Extension/FrontMatter/FrontMatterExtension.php', - 'League\\CommonMark\\Extension\\FrontMatter\\FrontMatterParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/FrontMatter/FrontMatterParser.php', - 'League\\CommonMark\\Extension\\FrontMatter\\FrontMatterParserInterface' => __DIR__ . '/..' . '/league/commonmark/src/Extension/FrontMatter/FrontMatterParserInterface.php', - 'League\\CommonMark\\Extension\\FrontMatter\\FrontMatterProviderInterface' => __DIR__ . '/..' . '/league/commonmark/src/Extension/FrontMatter/FrontMatterProviderInterface.php', - 'League\\CommonMark\\Extension\\FrontMatter\\Input\\MarkdownInputWithFrontMatter' => __DIR__ . '/..' . '/league/commonmark/src/Extension/FrontMatter/Input/MarkdownInputWithFrontMatter.php', - 'League\\CommonMark\\Extension\\FrontMatter\\Listener\\FrontMatterPostRenderListener' => __DIR__ . '/..' . '/league/commonmark/src/Extension/FrontMatter/Listener/FrontMatterPostRenderListener.php', - 'League\\CommonMark\\Extension\\FrontMatter\\Listener\\FrontMatterPreParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/FrontMatter/Listener/FrontMatterPreParser.php', - 'League\\CommonMark\\Extension\\FrontMatter\\Output\\RenderedContentWithFrontMatter' => __DIR__ . '/..' . '/league/commonmark/src/Extension/FrontMatter/Output/RenderedContentWithFrontMatter.php', - 'League\\CommonMark\\Extension\\GithubFlavoredMarkdownExtension' => __DIR__ . '/..' . '/league/commonmark/src/Extension/GithubFlavoredMarkdownExtension.php', - 'League\\CommonMark\\Extension\\HeadingPermalink\\HeadingPermalink' => __DIR__ . '/..' . '/league/commonmark/src/Extension/HeadingPermalink/HeadingPermalink.php', - 'League\\CommonMark\\Extension\\HeadingPermalink\\HeadingPermalinkExtension' => __DIR__ . '/..' . '/league/commonmark/src/Extension/HeadingPermalink/HeadingPermalinkExtension.php', - 'League\\CommonMark\\Extension\\HeadingPermalink\\HeadingPermalinkProcessor' => __DIR__ . '/..' . '/league/commonmark/src/Extension/HeadingPermalink/HeadingPermalinkProcessor.php', - 'League\\CommonMark\\Extension\\HeadingPermalink\\HeadingPermalinkRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Extension/HeadingPermalink/HeadingPermalinkRenderer.php', - 'League\\CommonMark\\Extension\\InlinesOnly\\ChildRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Extension/InlinesOnly/ChildRenderer.php', - 'League\\CommonMark\\Extension\\InlinesOnly\\InlinesOnlyExtension' => __DIR__ . '/..' . '/league/commonmark/src/Extension/InlinesOnly/InlinesOnlyExtension.php', - 'League\\CommonMark\\Extension\\Mention\\Generator\\CallbackGenerator' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Mention/Generator/CallbackGenerator.php', - 'League\\CommonMark\\Extension\\Mention\\Generator\\MentionGeneratorInterface' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Mention/Generator/MentionGeneratorInterface.php', - 'League\\CommonMark\\Extension\\Mention\\Generator\\StringTemplateLinkGenerator' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Mention/Generator/StringTemplateLinkGenerator.php', - 'League\\CommonMark\\Extension\\Mention\\Mention' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Mention/Mention.php', - 'League\\CommonMark\\Extension\\Mention\\MentionExtension' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Mention/MentionExtension.php', - 'League\\CommonMark\\Extension\\Mention\\MentionParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Mention/MentionParser.php', - 'League\\CommonMark\\Extension\\SmartPunct\\DashParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/SmartPunct/DashParser.php', - 'League\\CommonMark\\Extension\\SmartPunct\\EllipsesParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/SmartPunct/EllipsesParser.php', - 'League\\CommonMark\\Extension\\SmartPunct\\Quote' => __DIR__ . '/..' . '/league/commonmark/src/Extension/SmartPunct/Quote.php', - 'League\\CommonMark\\Extension\\SmartPunct\\QuoteParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/SmartPunct/QuoteParser.php', - 'League\\CommonMark\\Extension\\SmartPunct\\QuoteProcessor' => __DIR__ . '/..' . '/league/commonmark/src/Extension/SmartPunct/QuoteProcessor.php', - 'League\\CommonMark\\Extension\\SmartPunct\\ReplaceUnpairedQuotesListener' => __DIR__ . '/..' . '/league/commonmark/src/Extension/SmartPunct/ReplaceUnpairedQuotesListener.php', - 'League\\CommonMark\\Extension\\SmartPunct\\SmartPunctExtension' => __DIR__ . '/..' . '/league/commonmark/src/Extension/SmartPunct/SmartPunctExtension.php', - 'League\\CommonMark\\Extension\\Strikethrough\\Strikethrough' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Strikethrough/Strikethrough.php', - 'League\\CommonMark\\Extension\\Strikethrough\\StrikethroughDelimiterProcessor' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Strikethrough/StrikethroughDelimiterProcessor.php', - 'League\\CommonMark\\Extension\\Strikethrough\\StrikethroughExtension' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Strikethrough/StrikethroughExtension.php', - 'League\\CommonMark\\Extension\\Strikethrough\\StrikethroughRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Strikethrough/StrikethroughRenderer.php', - 'League\\CommonMark\\Extension\\TableOfContents\\Node\\TableOfContents' => __DIR__ . '/..' . '/league/commonmark/src/Extension/TableOfContents/Node/TableOfContents.php', - 'League\\CommonMark\\Extension\\TableOfContents\\Node\\TableOfContentsPlaceholder' => __DIR__ . '/..' . '/league/commonmark/src/Extension/TableOfContents/Node/TableOfContentsPlaceholder.php', - 'League\\CommonMark\\Extension\\TableOfContents\\Normalizer\\AsIsNormalizerStrategy' => __DIR__ . '/..' . '/league/commonmark/src/Extension/TableOfContents/Normalizer/AsIsNormalizerStrategy.php', - 'League\\CommonMark\\Extension\\TableOfContents\\Normalizer\\FlatNormalizerStrategy' => __DIR__ . '/..' . '/league/commonmark/src/Extension/TableOfContents/Normalizer/FlatNormalizerStrategy.php', - 'League\\CommonMark\\Extension\\TableOfContents\\Normalizer\\NormalizerStrategyInterface' => __DIR__ . '/..' . '/league/commonmark/src/Extension/TableOfContents/Normalizer/NormalizerStrategyInterface.php', - 'League\\CommonMark\\Extension\\TableOfContents\\Normalizer\\RelativeNormalizerStrategy' => __DIR__ . '/..' . '/league/commonmark/src/Extension/TableOfContents/Normalizer/RelativeNormalizerStrategy.php', - 'League\\CommonMark\\Extension\\TableOfContents\\TableOfContentsBuilder' => __DIR__ . '/..' . '/league/commonmark/src/Extension/TableOfContents/TableOfContentsBuilder.php', - 'League\\CommonMark\\Extension\\TableOfContents\\TableOfContentsExtension' => __DIR__ . '/..' . '/league/commonmark/src/Extension/TableOfContents/TableOfContentsExtension.php', - 'League\\CommonMark\\Extension\\TableOfContents\\TableOfContentsGenerator' => __DIR__ . '/..' . '/league/commonmark/src/Extension/TableOfContents/TableOfContentsGenerator.php', - 'League\\CommonMark\\Extension\\TableOfContents\\TableOfContentsGeneratorInterface' => __DIR__ . '/..' . '/league/commonmark/src/Extension/TableOfContents/TableOfContentsGeneratorInterface.php', - 'League\\CommonMark\\Extension\\TableOfContents\\TableOfContentsPlaceholderParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/TableOfContents/TableOfContentsPlaceholderParser.php', - 'League\\CommonMark\\Extension\\TableOfContents\\TableOfContentsPlaceholderRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Extension/TableOfContents/TableOfContentsPlaceholderRenderer.php', - 'League\\CommonMark\\Extension\\TableOfContents\\TableOfContentsRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Extension/TableOfContents/TableOfContentsRenderer.php', - 'League\\CommonMark\\Extension\\Table\\Table' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Table/Table.php', - 'League\\CommonMark\\Extension\\Table\\TableCell' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Table/TableCell.php', - 'League\\CommonMark\\Extension\\Table\\TableCellRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Table/TableCellRenderer.php', - 'League\\CommonMark\\Extension\\Table\\TableExtension' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Table/TableExtension.php', - 'League\\CommonMark\\Extension\\Table\\TableParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Table/TableParser.php', - 'League\\CommonMark\\Extension\\Table\\TableRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Table/TableRenderer.php', - 'League\\CommonMark\\Extension\\Table\\TableRow' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Table/TableRow.php', - 'League\\CommonMark\\Extension\\Table\\TableRowRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Table/TableRowRenderer.php', - 'League\\CommonMark\\Extension\\Table\\TableSection' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Table/TableSection.php', - 'League\\CommonMark\\Extension\\Table\\TableSectionRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Table/TableSectionRenderer.php', - 'League\\CommonMark\\Extension\\Table\\TableStartParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/Table/TableStartParser.php', - 'League\\CommonMark\\Extension\\TaskList\\TaskListExtension' => __DIR__ . '/..' . '/league/commonmark/src/Extension/TaskList/TaskListExtension.php', - 'League\\CommonMark\\Extension\\TaskList\\TaskListItemMarker' => __DIR__ . '/..' . '/league/commonmark/src/Extension/TaskList/TaskListItemMarker.php', - 'League\\CommonMark\\Extension\\TaskList\\TaskListItemMarkerParser' => __DIR__ . '/..' . '/league/commonmark/src/Extension/TaskList/TaskListItemMarkerParser.php', - 'League\\CommonMark\\Extension\\TaskList\\TaskListItemMarkerRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Extension/TaskList/TaskListItemMarkerRenderer.php', - 'League\\CommonMark\\GithubFlavoredMarkdownConverter' => __DIR__ . '/..' . '/league/commonmark/src/GithubFlavoredMarkdownConverter.php', - 'League\\CommonMark\\Input\\MarkdownInput' => __DIR__ . '/..' . '/league/commonmark/src/Input/MarkdownInput.php', - 'League\\CommonMark\\Input\\MarkdownInputInterface' => __DIR__ . '/..' . '/league/commonmark/src/Input/MarkdownInputInterface.php', - 'League\\CommonMark\\MarkdownConverter' => __DIR__ . '/..' . '/league/commonmark/src/MarkdownConverter.php', - 'League\\CommonMark\\MarkdownConverterInterface' => __DIR__ . '/..' . '/league/commonmark/src/MarkdownConverterInterface.php', - 'League\\CommonMark\\Node\\Block\\AbstractBlock' => __DIR__ . '/..' . '/league/commonmark/src/Node/Block/AbstractBlock.php', - 'League\\CommonMark\\Node\\Block\\Document' => __DIR__ . '/..' . '/league/commonmark/src/Node/Block/Document.php', - 'League\\CommonMark\\Node\\Block\\Paragraph' => __DIR__ . '/..' . '/league/commonmark/src/Node/Block/Paragraph.php', - 'League\\CommonMark\\Node\\Block\\TightBlockInterface' => __DIR__ . '/..' . '/league/commonmark/src/Node/Block/TightBlockInterface.php', - 'League\\CommonMark\\Node\\Inline\\AbstractInline' => __DIR__ . '/..' . '/league/commonmark/src/Node/Inline/AbstractInline.php', - 'League\\CommonMark\\Node\\Inline\\AbstractStringContainer' => __DIR__ . '/..' . '/league/commonmark/src/Node/Inline/AbstractStringContainer.php', - 'League\\CommonMark\\Node\\Inline\\AdjacentTextMerger' => __DIR__ . '/..' . '/league/commonmark/src/Node/Inline/AdjacentTextMerger.php', - 'League\\CommonMark\\Node\\Inline\\DelimitedInterface' => __DIR__ . '/..' . '/league/commonmark/src/Node/Inline/DelimitedInterface.php', - 'League\\CommonMark\\Node\\Inline\\Newline' => __DIR__ . '/..' . '/league/commonmark/src/Node/Inline/Newline.php', - 'League\\CommonMark\\Node\\Inline\\Text' => __DIR__ . '/..' . '/league/commonmark/src/Node/Inline/Text.php', - 'League\\CommonMark\\Node\\Node' => __DIR__ . '/..' . '/league/commonmark/src/Node/Node.php', - 'League\\CommonMark\\Node\\NodeIterator' => __DIR__ . '/..' . '/league/commonmark/src/Node/NodeIterator.php', - 'League\\CommonMark\\Node\\NodeWalker' => __DIR__ . '/..' . '/league/commonmark/src/Node/NodeWalker.php', - 'League\\CommonMark\\Node\\NodeWalkerEvent' => __DIR__ . '/..' . '/league/commonmark/src/Node/NodeWalkerEvent.php', - 'League\\CommonMark\\Node\\Query' => __DIR__ . '/..' . '/league/commonmark/src/Node/Query.php', - 'League\\CommonMark\\Node\\Query\\AndExpr' => __DIR__ . '/..' . '/league/commonmark/src/Node/Query/AndExpr.php', - 'League\\CommonMark\\Node\\Query\\ExpressionInterface' => __DIR__ . '/..' . '/league/commonmark/src/Node/Query/ExpressionInterface.php', - 'League\\CommonMark\\Node\\Query\\OrExpr' => __DIR__ . '/..' . '/league/commonmark/src/Node/Query/OrExpr.php', - 'League\\CommonMark\\Node\\RawMarkupContainerInterface' => __DIR__ . '/..' . '/league/commonmark/src/Node/RawMarkupContainerInterface.php', - 'League\\CommonMark\\Node\\StringContainerHelper' => __DIR__ . '/..' . '/league/commonmark/src/Node/StringContainerHelper.php', - 'League\\CommonMark\\Node\\StringContainerInterface' => __DIR__ . '/..' . '/league/commonmark/src/Node/StringContainerInterface.php', - 'League\\CommonMark\\Normalizer\\SlugNormalizer' => __DIR__ . '/..' . '/league/commonmark/src/Normalizer/SlugNormalizer.php', - 'League\\CommonMark\\Normalizer\\TextNormalizer' => __DIR__ . '/..' . '/league/commonmark/src/Normalizer/TextNormalizer.php', - 'League\\CommonMark\\Normalizer\\TextNormalizerInterface' => __DIR__ . '/..' . '/league/commonmark/src/Normalizer/TextNormalizerInterface.php', - 'League\\CommonMark\\Normalizer\\UniqueSlugNormalizer' => __DIR__ . '/..' . '/league/commonmark/src/Normalizer/UniqueSlugNormalizer.php', - 'League\\CommonMark\\Normalizer\\UniqueSlugNormalizerInterface' => __DIR__ . '/..' . '/league/commonmark/src/Normalizer/UniqueSlugNormalizerInterface.php', - 'League\\CommonMark\\Output\\RenderedContent' => __DIR__ . '/..' . '/league/commonmark/src/Output/RenderedContent.php', - 'League\\CommonMark\\Output\\RenderedContentInterface' => __DIR__ . '/..' . '/league/commonmark/src/Output/RenderedContentInterface.php', - 'League\\CommonMark\\Parser\\Block\\AbstractBlockContinueParser' => __DIR__ . '/..' . '/league/commonmark/src/Parser/Block/AbstractBlockContinueParser.php', - 'League\\CommonMark\\Parser\\Block\\BlockContinue' => __DIR__ . '/..' . '/league/commonmark/src/Parser/Block/BlockContinue.php', - 'League\\CommonMark\\Parser\\Block\\BlockContinueParserInterface' => __DIR__ . '/..' . '/league/commonmark/src/Parser/Block/BlockContinueParserInterface.php', - 'League\\CommonMark\\Parser\\Block\\BlockContinueParserWithInlinesInterface' => __DIR__ . '/..' . '/league/commonmark/src/Parser/Block/BlockContinueParserWithInlinesInterface.php', - 'League\\CommonMark\\Parser\\Block\\BlockStart' => __DIR__ . '/..' . '/league/commonmark/src/Parser/Block/BlockStart.php', - 'League\\CommonMark\\Parser\\Block\\BlockStartParserInterface' => __DIR__ . '/..' . '/league/commonmark/src/Parser/Block/BlockStartParserInterface.php', - 'League\\CommonMark\\Parser\\Block\\DocumentBlockParser' => __DIR__ . '/..' . '/league/commonmark/src/Parser/Block/DocumentBlockParser.php', - 'League\\CommonMark\\Parser\\Block\\ParagraphParser' => __DIR__ . '/..' . '/league/commonmark/src/Parser/Block/ParagraphParser.php', - 'League\\CommonMark\\Parser\\Block\\SkipLinesStartingWithLettersParser' => __DIR__ . '/..' . '/league/commonmark/src/Parser/Block/SkipLinesStartingWithLettersParser.php', - 'League\\CommonMark\\Parser\\Cursor' => __DIR__ . '/..' . '/league/commonmark/src/Parser/Cursor.php', - 'League\\CommonMark\\Parser\\CursorState' => __DIR__ . '/..' . '/league/commonmark/src/Parser/CursorState.php', - 'League\\CommonMark\\Parser\\InlineParserContext' => __DIR__ . '/..' . '/league/commonmark/src/Parser/InlineParserContext.php', - 'League\\CommonMark\\Parser\\InlineParserEngine' => __DIR__ . '/..' . '/league/commonmark/src/Parser/InlineParserEngine.php', - 'League\\CommonMark\\Parser\\InlineParserEngineInterface' => __DIR__ . '/..' . '/league/commonmark/src/Parser/InlineParserEngineInterface.php', - 'League\\CommonMark\\Parser\\Inline\\InlineParserInterface' => __DIR__ . '/..' . '/league/commonmark/src/Parser/Inline/InlineParserInterface.php', - 'League\\CommonMark\\Parser\\Inline\\InlineParserMatch' => __DIR__ . '/..' . '/league/commonmark/src/Parser/Inline/InlineParserMatch.php', - 'League\\CommonMark\\Parser\\Inline\\NewlineParser' => __DIR__ . '/..' . '/league/commonmark/src/Parser/Inline/NewlineParser.php', - 'League\\CommonMark\\Parser\\MarkdownParser' => __DIR__ . '/..' . '/league/commonmark/src/Parser/MarkdownParser.php', - 'League\\CommonMark\\Parser\\MarkdownParserInterface' => __DIR__ . '/..' . '/league/commonmark/src/Parser/MarkdownParserInterface.php', - 'League\\CommonMark\\Parser\\MarkdownParserState' => __DIR__ . '/..' . '/league/commonmark/src/Parser/MarkdownParserState.php', - 'League\\CommonMark\\Parser\\MarkdownParserStateInterface' => __DIR__ . '/..' . '/league/commonmark/src/Parser/MarkdownParserStateInterface.php', - 'League\\CommonMark\\Parser\\ParserLogicException' => __DIR__ . '/..' . '/league/commonmark/src/Parser/ParserLogicException.php', - 'League\\CommonMark\\Reference\\MemoryLimitedReferenceMap' => __DIR__ . '/..' . '/league/commonmark/src/Reference/MemoryLimitedReferenceMap.php', - 'League\\CommonMark\\Reference\\Reference' => __DIR__ . '/..' . '/league/commonmark/src/Reference/Reference.php', - 'League\\CommonMark\\Reference\\ReferenceInterface' => __DIR__ . '/..' . '/league/commonmark/src/Reference/ReferenceInterface.php', - 'League\\CommonMark\\Reference\\ReferenceMap' => __DIR__ . '/..' . '/league/commonmark/src/Reference/ReferenceMap.php', - 'League\\CommonMark\\Reference\\ReferenceMapInterface' => __DIR__ . '/..' . '/league/commonmark/src/Reference/ReferenceMapInterface.php', - 'League\\CommonMark\\Reference\\ReferenceParser' => __DIR__ . '/..' . '/league/commonmark/src/Reference/ReferenceParser.php', - 'League\\CommonMark\\Reference\\ReferenceableInterface' => __DIR__ . '/..' . '/league/commonmark/src/Reference/ReferenceableInterface.php', - 'League\\CommonMark\\Renderer\\Block\\DocumentRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Renderer/Block/DocumentRenderer.php', - 'League\\CommonMark\\Renderer\\Block\\ParagraphRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Renderer/Block/ParagraphRenderer.php', - 'League\\CommonMark\\Renderer\\ChildNodeRendererInterface' => __DIR__ . '/..' . '/league/commonmark/src/Renderer/ChildNodeRendererInterface.php', - 'League\\CommonMark\\Renderer\\DocumentRendererInterface' => __DIR__ . '/..' . '/league/commonmark/src/Renderer/DocumentRendererInterface.php', - 'League\\CommonMark\\Renderer\\HtmlDecorator' => __DIR__ . '/..' . '/league/commonmark/src/Renderer/HtmlDecorator.php', - 'League\\CommonMark\\Renderer\\HtmlRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Renderer/HtmlRenderer.php', - 'League\\CommonMark\\Renderer\\Inline\\NewlineRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Renderer/Inline/NewlineRenderer.php', - 'League\\CommonMark\\Renderer\\Inline\\TextRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Renderer/Inline/TextRenderer.php', - 'League\\CommonMark\\Renderer\\MarkdownRendererInterface' => __DIR__ . '/..' . '/league/commonmark/src/Renderer/MarkdownRendererInterface.php', - 'League\\CommonMark\\Renderer\\NoMatchingRendererException' => __DIR__ . '/..' . '/league/commonmark/src/Renderer/NoMatchingRendererException.php', - 'League\\CommonMark\\Renderer\\NodeRendererInterface' => __DIR__ . '/..' . '/league/commonmark/src/Renderer/NodeRendererInterface.php', - 'League\\CommonMark\\Util\\ArrayCollection' => __DIR__ . '/..' . '/league/commonmark/src/Util/ArrayCollection.php', - 'League\\CommonMark\\Util\\Html5EntityDecoder' => __DIR__ . '/..' . '/league/commonmark/src/Util/Html5EntityDecoder.php', - 'League\\CommonMark\\Util\\HtmlElement' => __DIR__ . '/..' . '/league/commonmark/src/Util/HtmlElement.php', - 'League\\CommonMark\\Util\\HtmlFilter' => __DIR__ . '/..' . '/league/commonmark/src/Util/HtmlFilter.php', - 'League\\CommonMark\\Util\\LinkParserHelper' => __DIR__ . '/..' . '/league/commonmark/src/Util/LinkParserHelper.php', - 'League\\CommonMark\\Util\\PrioritizedList' => __DIR__ . '/..' . '/league/commonmark/src/Util/PrioritizedList.php', - 'League\\CommonMark\\Util\\RegexHelper' => __DIR__ . '/..' . '/league/commonmark/src/Util/RegexHelper.php', - 'League\\CommonMark\\Util\\SpecReader' => __DIR__ . '/..' . '/league/commonmark/src/Util/SpecReader.php', - 'League\\CommonMark\\Util\\UrlEncoder' => __DIR__ . '/..' . '/league/commonmark/src/Util/UrlEncoder.php', - 'League\\CommonMark\\Util\\Xml' => __DIR__ . '/..' . '/league/commonmark/src/Util/Xml.php', - 'League\\CommonMark\\Xml\\FallbackNodeXmlRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Xml/FallbackNodeXmlRenderer.php', - 'League\\CommonMark\\Xml\\MarkdownToXmlConverter' => __DIR__ . '/..' . '/league/commonmark/src/Xml/MarkdownToXmlConverter.php', - 'League\\CommonMark\\Xml\\XmlNodeRendererInterface' => __DIR__ . '/..' . '/league/commonmark/src/Xml/XmlNodeRendererInterface.php', - 'League\\CommonMark\\Xml\\XmlRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Xml/XmlRenderer.php', - 'League\\Config\\Configuration' => __DIR__ . '/..' . '/league/config/src/Configuration.php', - 'League\\Config\\ConfigurationAwareInterface' => __DIR__ . '/..' . '/league/config/src/ConfigurationAwareInterface.php', - 'League\\Config\\ConfigurationBuilderInterface' => __DIR__ . '/..' . '/league/config/src/ConfigurationBuilderInterface.php', - 'League\\Config\\ConfigurationInterface' => __DIR__ . '/..' . '/league/config/src/ConfigurationInterface.php', - 'League\\Config\\ConfigurationProviderInterface' => __DIR__ . '/..' . '/league/config/src/ConfigurationProviderInterface.php', - 'League\\Config\\Exception\\ConfigurationExceptionInterface' => __DIR__ . '/..' . '/league/config/src/Exception/ConfigurationExceptionInterface.php', - 'League\\Config\\Exception\\InvalidConfigurationException' => __DIR__ . '/..' . '/league/config/src/Exception/InvalidConfigurationException.php', - 'League\\Config\\Exception\\UnknownOptionException' => __DIR__ . '/..' . '/league/config/src/Exception/UnknownOptionException.php', - 'League\\Config\\Exception\\ValidationException' => __DIR__ . '/..' . '/league/config/src/Exception/ValidationException.php', - 'League\\Config\\MutableConfigurationInterface' => __DIR__ . '/..' . '/league/config/src/MutableConfigurationInterface.php', - 'League\\Config\\ReadOnlyConfiguration' => __DIR__ . '/..' . '/league/config/src/ReadOnlyConfiguration.php', - 'League\\Config\\SchemaBuilderInterface' => __DIR__ . '/..' . '/league/config/src/SchemaBuilderInterface.php', - 'League\\Flysystem\\CalculateChecksumFromStream' => __DIR__ . '/..' . '/league/flysystem/src/CalculateChecksumFromStream.php', - 'League\\Flysystem\\ChecksumAlgoIsNotSupported' => __DIR__ . '/..' . '/league/flysystem/src/ChecksumAlgoIsNotSupported.php', - 'League\\Flysystem\\ChecksumProvider' => __DIR__ . '/..' . '/league/flysystem/src/ChecksumProvider.php', - 'League\\Flysystem\\Config' => __DIR__ . '/..' . '/league/flysystem/src/Config.php', - 'League\\Flysystem\\CorruptedPathDetected' => __DIR__ . '/..' . '/league/flysystem/src/CorruptedPathDetected.php', - 'League\\Flysystem\\DecoratedAdapter' => __DIR__ . '/..' . '/league/flysystem/src/DecoratedAdapter.php', - 'League\\Flysystem\\DirectoryAttributes' => __DIR__ . '/..' . '/league/flysystem/src/DirectoryAttributes.php', - 'League\\Flysystem\\DirectoryListing' => __DIR__ . '/..' . '/league/flysystem/src/DirectoryListing.php', - 'League\\Flysystem\\FileAttributes' => __DIR__ . '/..' . '/league/flysystem/src/FileAttributes.php', - 'League\\Flysystem\\Filesystem' => __DIR__ . '/..' . '/league/flysystem/src/Filesystem.php', - 'League\\Flysystem\\FilesystemAdapter' => __DIR__ . '/..' . '/league/flysystem/src/FilesystemAdapter.php', - 'League\\Flysystem\\FilesystemException' => __DIR__ . '/..' . '/league/flysystem/src/FilesystemException.php', - 'League\\Flysystem\\FilesystemOperationFailed' => __DIR__ . '/..' . '/league/flysystem/src/FilesystemOperationFailed.php', - 'League\\Flysystem\\FilesystemOperator' => __DIR__ . '/..' . '/league/flysystem/src/FilesystemOperator.php', - 'League\\Flysystem\\FilesystemReader' => __DIR__ . '/..' . '/league/flysystem/src/FilesystemReader.php', - 'League\\Flysystem\\FilesystemWriter' => __DIR__ . '/..' . '/league/flysystem/src/FilesystemWriter.php', - 'League\\Flysystem\\InvalidStreamProvided' => __DIR__ . '/..' . '/league/flysystem/src/InvalidStreamProvided.php', - 'League\\Flysystem\\InvalidVisibilityProvided' => __DIR__ . '/..' . '/league/flysystem/src/InvalidVisibilityProvided.php', - 'League\\Flysystem\\Local\\FallbackMimeTypeDetector' => __DIR__ . '/..' . '/league/flysystem-local/FallbackMimeTypeDetector.php', - 'League\\Flysystem\\Local\\LocalFilesystemAdapter' => __DIR__ . '/..' . '/league/flysystem-local/LocalFilesystemAdapter.php', - 'League\\Flysystem\\MountManager' => __DIR__ . '/..' . '/league/flysystem/src/MountManager.php', - 'League\\Flysystem\\PathNormalizer' => __DIR__ . '/..' . '/league/flysystem/src/PathNormalizer.php', - 'League\\Flysystem\\PathPrefixer' => __DIR__ . '/..' . '/league/flysystem/src/PathPrefixer.php', - 'League\\Flysystem\\PathTraversalDetected' => __DIR__ . '/..' . '/league/flysystem/src/PathTraversalDetected.php', - 'League\\Flysystem\\PortableVisibilityGuard' => __DIR__ . '/..' . '/league/flysystem/src/PortableVisibilityGuard.php', - 'League\\Flysystem\\ProxyArrayAccessToProperties' => __DIR__ . '/..' . '/league/flysystem/src/ProxyArrayAccessToProperties.php', - 'League\\Flysystem\\ResolveIdenticalPathConflict' => __DIR__ . '/..' . '/league/flysystem/src/ResolveIdenticalPathConflict.php', - 'League\\Flysystem\\StorageAttributes' => __DIR__ . '/..' . '/league/flysystem/src/StorageAttributes.php', - 'League\\Flysystem\\SymbolicLinkEncountered' => __DIR__ . '/..' . '/league/flysystem/src/SymbolicLinkEncountered.php', - 'League\\Flysystem\\UnableToCheckDirectoryExistence' => __DIR__ . '/..' . '/league/flysystem/src/UnableToCheckDirectoryExistence.php', - 'League\\Flysystem\\UnableToCheckExistence' => __DIR__ . '/..' . '/league/flysystem/src/UnableToCheckExistence.php', - 'League\\Flysystem\\UnableToCheckFileExistence' => __DIR__ . '/..' . '/league/flysystem/src/UnableToCheckFileExistence.php', - 'League\\Flysystem\\UnableToCopyFile' => __DIR__ . '/..' . '/league/flysystem/src/UnableToCopyFile.php', - 'League\\Flysystem\\UnableToCreateDirectory' => __DIR__ . '/..' . '/league/flysystem/src/UnableToCreateDirectory.php', - 'League\\Flysystem\\UnableToDeleteDirectory' => __DIR__ . '/..' . '/league/flysystem/src/UnableToDeleteDirectory.php', - 'League\\Flysystem\\UnableToDeleteFile' => __DIR__ . '/..' . '/league/flysystem/src/UnableToDeleteFile.php', - 'League\\Flysystem\\UnableToGeneratePublicUrl' => __DIR__ . '/..' . '/league/flysystem/src/UnableToGeneratePublicUrl.php', - 'League\\Flysystem\\UnableToGenerateTemporaryUrl' => __DIR__ . '/..' . '/league/flysystem/src/UnableToGenerateTemporaryUrl.php', - 'League\\Flysystem\\UnableToListContents' => __DIR__ . '/..' . '/league/flysystem/src/UnableToListContents.php', - 'League\\Flysystem\\UnableToMountFilesystem' => __DIR__ . '/..' . '/league/flysystem/src/UnableToMountFilesystem.php', - 'League\\Flysystem\\UnableToMoveFile' => __DIR__ . '/..' . '/league/flysystem/src/UnableToMoveFile.php', - 'League\\Flysystem\\UnableToProvideChecksum' => __DIR__ . '/..' . '/league/flysystem/src/UnableToProvideChecksum.php', - 'League\\Flysystem\\UnableToReadFile' => __DIR__ . '/..' . '/league/flysystem/src/UnableToReadFile.php', - 'League\\Flysystem\\UnableToResolveFilesystemMount' => __DIR__ . '/..' . '/league/flysystem/src/UnableToResolveFilesystemMount.php', - 'League\\Flysystem\\UnableToRetrieveMetadata' => __DIR__ . '/..' . '/league/flysystem/src/UnableToRetrieveMetadata.php', - 'League\\Flysystem\\UnableToSetVisibility' => __DIR__ . '/..' . '/league/flysystem/src/UnableToSetVisibility.php', - 'League\\Flysystem\\UnableToWriteFile' => __DIR__ . '/..' . '/league/flysystem/src/UnableToWriteFile.php', - 'League\\Flysystem\\UnixVisibility\\PortableVisibilityConverter' => __DIR__ . '/..' . '/league/flysystem/src/UnixVisibility/PortableVisibilityConverter.php', - 'League\\Flysystem\\UnixVisibility\\VisibilityConverter' => __DIR__ . '/..' . '/league/flysystem/src/UnixVisibility/VisibilityConverter.php', - 'League\\Flysystem\\UnreadableFileEncountered' => __DIR__ . '/..' . '/league/flysystem/src/UnreadableFileEncountered.php', - 'League\\Flysystem\\UrlGeneration\\ChainedPublicUrlGenerator' => __DIR__ . '/..' . '/league/flysystem/src/UrlGeneration/ChainedPublicUrlGenerator.php', - 'League\\Flysystem\\UrlGeneration\\PrefixPublicUrlGenerator' => __DIR__ . '/..' . '/league/flysystem/src/UrlGeneration/PrefixPublicUrlGenerator.php', - 'League\\Flysystem\\UrlGeneration\\PublicUrlGenerator' => __DIR__ . '/..' . '/league/flysystem/src/UrlGeneration/PublicUrlGenerator.php', - 'League\\Flysystem\\UrlGeneration\\ShardedPrefixPublicUrlGenerator' => __DIR__ . '/..' . '/league/flysystem/src/UrlGeneration/ShardedPrefixPublicUrlGenerator.php', - 'League\\Flysystem\\UrlGeneration\\TemporaryUrlGenerator' => __DIR__ . '/..' . '/league/flysystem/src/UrlGeneration/TemporaryUrlGenerator.php', - 'League\\Flysystem\\Visibility' => __DIR__ . '/..' . '/league/flysystem/src/Visibility.php', - 'League\\Flysystem\\WhitespacePathNormalizer' => __DIR__ . '/..' . '/league/flysystem/src/WhitespacePathNormalizer.php', - 'League\\MimeTypeDetection\\EmptyExtensionToMimeTypeMap' => __DIR__ . '/..' . '/league/mime-type-detection/src/EmptyExtensionToMimeTypeMap.php', - 'League\\MimeTypeDetection\\ExtensionLookup' => __DIR__ . '/..' . '/league/mime-type-detection/src/ExtensionLookup.php', - 'League\\MimeTypeDetection\\ExtensionMimeTypeDetector' => __DIR__ . '/..' . '/league/mime-type-detection/src/ExtensionMimeTypeDetector.php', - 'League\\MimeTypeDetection\\ExtensionToMimeTypeMap' => __DIR__ . '/..' . '/league/mime-type-detection/src/ExtensionToMimeTypeMap.php', - 'League\\MimeTypeDetection\\FinfoMimeTypeDetector' => __DIR__ . '/..' . '/league/mime-type-detection/src/FinfoMimeTypeDetector.php', - 'League\\MimeTypeDetection\\GeneratedExtensionToMimeTypeMap' => __DIR__ . '/..' . '/league/mime-type-detection/src/GeneratedExtensionToMimeTypeMap.php', - 'League\\MimeTypeDetection\\MimeTypeDetector' => __DIR__ . '/..' . '/league/mime-type-detection/src/MimeTypeDetector.php', - 'League\\MimeTypeDetection\\OverridingExtensionToMimeTypeMap' => __DIR__ . '/..' . '/league/mime-type-detection/src/OverridingExtensionToMimeTypeMap.php', - 'Masterminds\\HTML5' => __DIR__ . '/..' . '/masterminds/html5/src/HTML5.php', - 'Masterminds\\HTML5\\Elements' => __DIR__ . '/..' . '/masterminds/html5/src/HTML5/Elements.php', - 'Masterminds\\HTML5\\Entities' => __DIR__ . '/..' . '/masterminds/html5/src/HTML5/Entities.php', - 'Masterminds\\HTML5\\Exception' => __DIR__ . '/..' . '/masterminds/html5/src/HTML5/Exception.php', - 'Masterminds\\HTML5\\InstructionProcessor' => __DIR__ . '/..' . '/masterminds/html5/src/HTML5/InstructionProcessor.php', - 'Masterminds\\HTML5\\Parser\\CharacterReference' => __DIR__ . '/..' . '/masterminds/html5/src/HTML5/Parser/CharacterReference.php', - 'Masterminds\\HTML5\\Parser\\DOMTreeBuilder' => __DIR__ . '/..' . '/masterminds/html5/src/HTML5/Parser/DOMTreeBuilder.php', - 'Masterminds\\HTML5\\Parser\\EventHandler' => __DIR__ . '/..' . '/masterminds/html5/src/HTML5/Parser/EventHandler.php', - 'Masterminds\\HTML5\\Parser\\FileInputStream' => __DIR__ . '/..' . '/masterminds/html5/src/HTML5/Parser/FileInputStream.php', - 'Masterminds\\HTML5\\Parser\\InputStream' => __DIR__ . '/..' . '/masterminds/html5/src/HTML5/Parser/InputStream.php', - 'Masterminds\\HTML5\\Parser\\ParseError' => __DIR__ . '/..' . '/masterminds/html5/src/HTML5/Parser/ParseError.php', - 'Masterminds\\HTML5\\Parser\\Scanner' => __DIR__ . '/..' . '/masterminds/html5/src/HTML5/Parser/Scanner.php', - 'Masterminds\\HTML5\\Parser\\StringInputStream' => __DIR__ . '/..' . '/masterminds/html5/src/HTML5/Parser/StringInputStream.php', - 'Masterminds\\HTML5\\Parser\\Tokenizer' => __DIR__ . '/..' . '/masterminds/html5/src/HTML5/Parser/Tokenizer.php', - 'Masterminds\\HTML5\\Parser\\TreeBuildingRules' => __DIR__ . '/..' . '/masterminds/html5/src/HTML5/Parser/TreeBuildingRules.php', - 'Masterminds\\HTML5\\Parser\\UTF8Utils' => __DIR__ . '/..' . '/masterminds/html5/src/HTML5/Parser/UTF8Utils.php', - 'Masterminds\\HTML5\\Serializer\\HTML5Entities' => __DIR__ . '/..' . '/masterminds/html5/src/HTML5/Serializer/HTML5Entities.php', - 'Masterminds\\HTML5\\Serializer\\OutputRules' => __DIR__ . '/..' . '/masterminds/html5/src/HTML5/Serializer/OutputRules.php', - 'Masterminds\\HTML5\\Serializer\\RulesInterface' => __DIR__ . '/..' . '/masterminds/html5/src/HTML5/Serializer/RulesInterface.php', - 'Masterminds\\HTML5\\Serializer\\Traverser' => __DIR__ . '/..' . '/masterminds/html5/src/HTML5/Serializer/Traverser.php', - 'Milon\\Barcode\\BarcodeServiceProvider' => __DIR__ . '/..' . '/milon/barcode/src/Milon/Barcode/BarcodeServiceProvider.php', - 'Milon\\Barcode\\DNS1D' => __DIR__ . '/..' . '/milon/barcode/src/Milon/Barcode/DNS1D.php', - 'Milon\\Barcode\\DNS2D' => __DIR__ . '/..' . '/milon/barcode/src/Milon/Barcode/DNS2D.php', - 'Milon\\Barcode\\Datamatrix' => __DIR__ . '/..' . '/milon/barcode/src/Milon/Barcode/Datamatrix.php', - 'Milon\\Barcode\\Facades\\DNS1DFacade' => __DIR__ . '/..' . '/milon/barcode/src/Milon/Barcode/Facades/DNS1DFacade.php', - 'Milon\\Barcode\\Facades\\DNS2DFacade' => __DIR__ . '/..' . '/milon/barcode/src/Milon/Barcode/Facades/DNS2DFacade.php', - 'Milon\\Barcode\\PDF417' => __DIR__ . '/..' . '/milon/barcode/src/Milon/Barcode/PDF417.php', - 'Milon\\Barcode\\QRcode' => __DIR__ . '/..' . '/milon/barcode/src/Milon/Barcode/QRcode.php', - 'Milon\\Barcode\\WrongCheckDigitException' => __DIR__ . '/..' . '/milon/barcode/src/Milon/Barcode/WrongCheckDigitException.php', - 'Mockery\\Adapter\\Phpunit\\MockeryPHPUnitIntegration' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Adapter/Phpunit/MockeryPHPUnitIntegration.php', - 'Mockery\\Adapter\\Phpunit\\MockeryPHPUnitIntegrationAssertPostConditions' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Adapter/Phpunit/MockeryPHPUnitIntegrationAssertPostConditions.php', - 'Mockery\\Adapter\\Phpunit\\MockeryTestCase' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Adapter/Phpunit/MockeryTestCase.php', - 'Mockery\\Adapter\\Phpunit\\MockeryTestCaseSetUp' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Adapter/Phpunit/MockeryTestCaseSetUp.php', - 'Mockery\\Adapter\\Phpunit\\TestListener' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Adapter/Phpunit/TestListener.php', - 'Mockery\\Adapter\\Phpunit\\TestListenerTrait' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Adapter/Phpunit/TestListenerTrait.php', - 'Mockery\\ClosureWrapper' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/ClosureWrapper.php', - 'Mockery\\CompositeExpectation' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/CompositeExpectation.php', - 'Mockery\\Configuration' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Configuration.php', - 'Mockery\\Container' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Container.php', - 'Mockery\\CountValidator\\AtLeast' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/CountValidator/AtLeast.php', - 'Mockery\\CountValidator\\AtMost' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/CountValidator/AtMost.php', - 'Mockery\\CountValidator\\CountValidatorAbstract' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/CountValidator/CountValidatorAbstract.php', - 'Mockery\\CountValidator\\CountValidatorInterface' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/CountValidator/CountValidatorInterface.php', - 'Mockery\\CountValidator\\Exact' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/CountValidator/Exact.php', - 'Mockery\\CountValidator\\Exception' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/CountValidator/Exception.php', - 'Mockery\\Exception' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Exception.php', - 'Mockery\\Exception\\BadMethodCallException' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Exception/BadMethodCallException.php', - 'Mockery\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Exception/InvalidArgumentException.php', - 'Mockery\\Exception\\InvalidCountException' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Exception/InvalidCountException.php', - 'Mockery\\Exception\\InvalidOrderException' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Exception/InvalidOrderException.php', - 'Mockery\\Exception\\MockeryExceptionInterface' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Exception/MockeryExceptionInterface.php', - 'Mockery\\Exception\\NoMatchingExpectationException' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Exception/NoMatchingExpectationException.php', - 'Mockery\\Exception\\RuntimeException' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Exception/RuntimeException.php', - 'Mockery\\Expectation' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Expectation.php', - 'Mockery\\ExpectationDirector' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/ExpectationDirector.php', - 'Mockery\\ExpectationInterface' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/ExpectationInterface.php', - 'Mockery\\ExpectsHigherOrderMessage' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/ExpectsHigherOrderMessage.php', - 'Mockery\\Generator\\CachingGenerator' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Generator/CachingGenerator.php', - 'Mockery\\Generator\\DefinedTargetClass' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Generator/DefinedTargetClass.php', - 'Mockery\\Generator\\Generator' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Generator/Generator.php', - 'Mockery\\Generator\\Method' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Generator/Method.php', - 'Mockery\\Generator\\MockConfiguration' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Generator/MockConfiguration.php', - 'Mockery\\Generator\\MockConfigurationBuilder' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Generator/MockConfigurationBuilder.php', - 'Mockery\\Generator\\MockDefinition' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Generator/MockDefinition.php', - 'Mockery\\Generator\\MockNameBuilder' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Generator/MockNameBuilder.php', - 'Mockery\\Generator\\Parameter' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Generator/Parameter.php', - 'Mockery\\Generator\\StringManipulationGenerator' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Generator/StringManipulationGenerator.php', - 'Mockery\\Generator\\StringManipulation\\Pass\\AvoidMethodClashPass' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/AvoidMethodClashPass.php', - 'Mockery\\Generator\\StringManipulation\\Pass\\CallTypeHintPass' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/CallTypeHintPass.php', - 'Mockery\\Generator\\StringManipulation\\Pass\\ClassAttributesPass' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/ClassAttributesPass.php', - 'Mockery\\Generator\\StringManipulation\\Pass\\ClassNamePass' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/ClassNamePass.php', - 'Mockery\\Generator\\StringManipulation\\Pass\\ClassPass' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/ClassPass.php', - 'Mockery\\Generator\\StringManipulation\\Pass\\ConstantsPass' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/ConstantsPass.php', - 'Mockery\\Generator\\StringManipulation\\Pass\\InstanceMockPass' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/InstanceMockPass.php', - 'Mockery\\Generator\\StringManipulation\\Pass\\InterfacePass' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/InterfacePass.php', - 'Mockery\\Generator\\StringManipulation\\Pass\\MagicMethodTypeHintsPass' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/MagicMethodTypeHintsPass.php', - 'Mockery\\Generator\\StringManipulation\\Pass\\MethodDefinitionPass' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/MethodDefinitionPass.php', - 'Mockery\\Generator\\StringManipulation\\Pass\\Pass' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/Pass.php', - 'Mockery\\Generator\\StringManipulation\\Pass\\RemoveBuiltinMethodsThatAreFinalPass' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/RemoveBuiltinMethodsThatAreFinalPass.php', - 'Mockery\\Generator\\StringManipulation\\Pass\\RemoveDestructorPass' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/RemoveDestructorPass.php', - 'Mockery\\Generator\\StringManipulation\\Pass\\RemoveUnserializeForInternalSerializableClassesPass' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/RemoveUnserializeForInternalSerializableClassesPass.php', - 'Mockery\\Generator\\StringManipulation\\Pass\\TraitPass' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/TraitPass.php', - 'Mockery\\Generator\\TargetClassInterface' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Generator/TargetClassInterface.php', - 'Mockery\\Generator\\UndefinedTargetClass' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Generator/UndefinedTargetClass.php', - 'Mockery\\HigherOrderMessage' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/HigherOrderMessage.php', - 'Mockery\\Instantiator' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Instantiator.php', - 'Mockery\\LegacyMockInterface' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/LegacyMockInterface.php', - 'Mockery\\Loader\\EvalLoader' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Loader/EvalLoader.php', - 'Mockery\\Loader\\Loader' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Loader/Loader.php', - 'Mockery\\Loader\\RequireLoader' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Loader/RequireLoader.php', - 'Mockery\\Matcher\\AndAnyOtherArgs' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Matcher/AndAnyOtherArgs.php', - 'Mockery\\Matcher\\Any' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Matcher/Any.php', - 'Mockery\\Matcher\\AnyArgs' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Matcher/AnyArgs.php', - 'Mockery\\Matcher\\AnyOf' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Matcher/AnyOf.php', - 'Mockery\\Matcher\\ArgumentListMatcher' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Matcher/ArgumentListMatcher.php', - 'Mockery\\Matcher\\Closure' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Matcher/Closure.php', - 'Mockery\\Matcher\\Contains' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Matcher/Contains.php', - 'Mockery\\Matcher\\Ducktype' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Matcher/Ducktype.php', - 'Mockery\\Matcher\\HasKey' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Matcher/HasKey.php', - 'Mockery\\Matcher\\HasValue' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Matcher/HasValue.php', - 'Mockery\\Matcher\\IsEqual' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Matcher/IsEqual.php', - 'Mockery\\Matcher\\IsSame' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Matcher/IsSame.php', - 'Mockery\\Matcher\\MatcherAbstract' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Matcher/MatcherAbstract.php', - 'Mockery\\Matcher\\MatcherInterface' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Matcher/MatcherInterface.php', - 'Mockery\\Matcher\\MultiArgumentClosure' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Matcher/MultiArgumentClosure.php', - 'Mockery\\Matcher\\MustBe' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Matcher/MustBe.php', - 'Mockery\\Matcher\\NoArgs' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Matcher/NoArgs.php', - 'Mockery\\Matcher\\Not' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Matcher/Not.php', - 'Mockery\\Matcher\\NotAnyOf' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Matcher/NotAnyOf.php', - 'Mockery\\Matcher\\Pattern' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Matcher/Pattern.php', - 'Mockery\\Matcher\\Subset' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Matcher/Subset.php', - 'Mockery\\Matcher\\Type' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Matcher/Type.php', - 'Mockery\\MethodCall' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/MethodCall.php', - 'Mockery\\Mock' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Mock.php', - 'Mockery\\MockInterface' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/MockInterface.php', - 'Mockery\\QuickDefinitionsConfiguration' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/QuickDefinitionsConfiguration.php', - 'Mockery\\ReceivedMethodCalls' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/ReceivedMethodCalls.php', - 'Mockery\\Reflector' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Reflector.php', - 'Mockery\\Undefined' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Undefined.php', - 'Mockery\\VerificationDirector' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/VerificationDirector.php', - 'Mockery\\VerificationExpectation' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/VerificationExpectation.php', - 'ModuleSeeder' => __DIR__ . '/../..' . '/database/seeders/ModuleSeeder.php', - 'Modules\\Antenatal\\Http\\Controllers\\AnteNatalClinicController' => __DIR__ . '/../..' . '/Modules/Antenatal/Http/Controllers/AnteNatalClinicController.php', - 'Modules\\Antenatal\\Http\\Controllers\\Controller' => __DIR__ . '/../..' . '/Modules/Antenatal/Http/Controllers/Controller.php', - 'Modules\\Antenatal\\Providers\\AntenatalServiceProvider' => __DIR__ . '/../..' . '/Modules/Antenatal/Providers/AntenatalServiceProvider.php', - 'Modules\\Antenatal\\Providers\\RouteServiceProvider' => __DIR__ . '/../..' . '/Modules/Antenatal/Providers/RouteServiceProvider.php', - 'Modules\\Banking\\Http\\Controllers\\BankingController' => __DIR__ . '/../..' . '/Modules/Banking/Http/Controllers/BankingController.php', - 'Modules\\Banking\\Http\\Controllers\\BankingRecordController' => __DIR__ . '/../..' . '/Modules/Banking/Http/Controllers/BankingRecordController.php', - 'Modules\\Banking\\Http\\Controllers\\Controller' => __DIR__ . '/../..' . '/Modules/Banking/Http/Controllers/Controller.php', - 'Modules\\Banking\\Providers\\BankingServiceProvider' => __DIR__ . '/../..' . '/Modules/Banking/Providers/BankingServiceProvider.php', - 'Modules\\Banking\\Providers\\RouteServiceProvider' => __DIR__ . '/../..' . '/Modules/Banking/Providers/RouteServiceProvider.php', - 'Modules\\Budgets\\Http\\Controllers\\BudgetController' => __DIR__ . '/../..' . '/Modules/Budgets/Http/Controllers/BudgetController.php', - 'Modules\\Budgets\\Http\\Controllers\\Controller' => __DIR__ . '/../..' . '/Modules/Budgets/Http/Controllers/Controller.php', - 'Modules\\Budgets\\Providers\\BudgetsServiceProvider' => __DIR__ . '/../..' . '/Modules/Budgets/Providers/BudgetsServiceProvider.php', - 'Modules\\Budgets\\Providers\\RouteServiceProvider' => __DIR__ . '/../..' . '/Modules/Budgets/Providers/RouteServiceProvider.php', - 'Modules\\Cancer\\Http\\Controllers\\CancerProtocolController' => __DIR__ . '/../..' . '/Modules/Cancer/Http/Controllers/CancerProtocolController.php', - 'Modules\\Cancer\\Providers\\CancerServiceProvider' => __DIR__ . '/../..' . '/Modules/Cancer/Providers/CancerServiceProvider.php', - 'Modules\\Cancer\\Providers\\RouteServiceProvider' => __DIR__ . '/../..' . '/Modules/Cancer/Providers/RouteServiceProvider.php', - 'Modules\\ClinicalData\\Http\\Controllers\\AccountTypeController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/AccountTypeController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\AgeGroupController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/AgeGroupController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\BedCategoriesController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/BedCategoriesController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\ChartOfAccountController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/ChartOfAccountController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\ClinicController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/ClinicController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\ClinicalDataController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/ClinicalDataController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\CompanyController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/CompanyController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\Controller' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/Controller.php', - 'Modules\\ClinicalData\\Http\\Controllers\\CountriesController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/CountriesController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\CountyController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/CountyController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\DepartmentController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/DepartmentController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\DiagnosisController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/DiagnosisController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\DistrictController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/DistrictController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\DonorsController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/DonorsController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\DosageFrequencyController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/DosageFrequencyController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\DrugCategoryController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/DrugCategoryController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\DrugController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/DrugController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\DrugFormController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/DrugFormController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\DrugRouteController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/DrugRouteController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\DrugUnitController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/DrugUnitController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\EyeGlassesController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/EyeGlassesController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\GeneralItemsController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/GeneralItemsController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\HmisCategoryController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/HmisCategoryController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\HmisCategoryOptionsController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/HmisCategoryOptionsController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\ObservationController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/ObservationController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\OccupationController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/OccupationController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\OutcomeController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/OutcomeController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\PackageUnitController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/PackageUnitController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\ParishController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/ParishController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\PatientCategoryController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/PatientCategoryController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\PatientRegistrationFieldController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/PatientRegistrationFieldController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\ProcedureCategoriesController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/ProcedureCategoriesController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\ProcedureController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/ProcedureController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\ReferralHospitalController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/ReferralHospitalController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\ResidenceController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/ResidenceController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\ResourceCategoryController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/ResourceCategoryController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\ResourceController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/ResourceController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\ServicesController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/ServicesController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\SlitLampTestAreaController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/SlitLampTestAreaController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\SlitLampTestAreaValueController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/SlitLampTestAreaValueController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\SpecialityController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/SpecialityController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\StaffPositionsController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/StaffPositionsController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\SubcountyController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/SubcountyController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\SundryController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/SundryController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\SundryFormController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/SundryFormController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\SupplierController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/SupplierController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\SymptomController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/SymptomController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\UnitOfMeasureController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/UnitOfMeasureController.php', - 'Modules\\ClinicalData\\Http\\Controllers\\VillageController' => __DIR__ . '/../..' . '/Modules/ClinicalData/Http/Controllers/VillageController.php', - 'Modules\\ClinicalData\\Providers\\ClinicalDataServiceProvider' => __DIR__ . '/../..' . '/Modules/ClinicalData/Providers/ClinicalDataServiceProvider.php', - 'Modules\\ClinicalData\\Providers\\RouteServiceProvider' => __DIR__ . '/../..' . '/Modules/ClinicalData/Providers/RouteServiceProvider.php', - 'Modules\\ClinicalData\\Services\\Clinics\\ClinicsService' => __DIR__ . '/../..' . '/Modules/ClinicalData/Services/Clinics/ClinicsService.php', - 'Modules\\ClinicalData\\Services\\Clinics\\ClinicsServiceInterface' => __DIR__ . '/../..' . '/Modules/ClinicalData/Services/Clinics/ClinicsServiceInterface.php', - 'Modules\\ClinicalData\\Services\\Drugs\\DrugFormsService' => __DIR__ . '/../..' . '/Modules/ClinicalData/Services/Drugs/DrugFormsService.php', - 'Modules\\ClinicalData\\Services\\Drugs\\DrugRoutesService' => __DIR__ . '/../..' . '/Modules/ClinicalData/Services/Drugs/DrugRoutesService.php', - 'Modules\\ClinicalData\\Services\\Drugs\\DrugUnitsService' => __DIR__ . '/../..' . '/Modules/ClinicalData/Services/Drugs/DrugUnitsService.php', - 'Modules\\ClinicalData\\Services\\Drugs\\DrugsService' => __DIR__ . '/../..' . '/Modules/ClinicalData/Services/Drugs/DrugsService.php', - 'Modules\\ClinicalData\\Services\\Investigations\\InvestigationsService' => __DIR__ . '/../..' . '/Modules/ClinicalData/Services/Investigations/InvestigationsService.php', - 'Modules\\Diabetes\\Http\\Controllers\\Controller' => __DIR__ . '/../..' . '/Modules/Diabetes/Http/Controllers/Controller.php', - 'Modules\\Diabetes\\Http\\Controllers\\DiabetesClinicController' => __DIR__ . '/../..' . '/Modules/Diabetes/Http/Controllers/DiabetesClinicController.php', - 'Modules\\Diabetes\\Providers\\DiabetesServiceProvider' => __DIR__ . '/../..' . '/Modules/Diabetes/Providers/DiabetesServiceProvider.php', - 'Modules\\Diabetes\\Providers\\RouteServiceProvider' => __DIR__ . '/../..' . '/Modules/Diabetes/Providers/RouteServiceProvider.php', - 'Modules\\Expenses\\Http\\Controllers\\Controller' => __DIR__ . '/../..' . '/Modules/Expenses/Http/Controllers/Controller.php', - 'Modules\\Expenses\\Http\\Controllers\\PaymentController' => __DIR__ . '/../..' . '/Modules/Expenses/Http/Controllers/PaymentController.php', - 'Modules\\Expenses\\Http\\Controllers\\PaymentItemController' => __DIR__ . '/../..' . '/Modules/Expenses/Http/Controllers/PaymentItemController.php', - 'Modules\\Expenses\\Providers\\ExpensesServiceProvider' => __DIR__ . '/../..' . '/Modules/Expenses/Providers/ExpensesServiceProvider.php', - 'Modules\\Expenses\\Providers\\RouteServiceProvider' => __DIR__ . '/../..' . '/Modules/Expenses/Providers/RouteServiceProvider.php', - 'Modules\\EyeClinic\\Http\\Controllers\\Controller' => __DIR__ . '/../..' . '/Modules/EyeClinic/Http/Controllers/Controller.php', - 'Modules\\EyeClinic\\Http\\Controllers\\EyeClinicController' => __DIR__ . '/../..' . '/Modules/EyeClinic/Http/Controllers/EyeClinicController.php', - 'Modules\\EyeClinic\\Providers\\EyeClinicServiceProvider' => __DIR__ . '/../..' . '/Modules/EyeClinic/Providers/EyeClinicServiceProvider.php', - 'Modules\\EyeClinic\\Providers\\RouteServiceProvider' => __DIR__ . '/../..' . '/Modules/EyeClinic/Providers/RouteServiceProvider.php', - 'Modules\\FinanceReports\\Http\\Controllers\\Controller' => __DIR__ . '/../..' . '/Modules/FinanceReports/Http/Controllers/Controller.php', - 'Modules\\FinanceReports\\Http\\Controllers\\FinanceReportsController' => __DIR__ . '/../..' . '/Modules/FinanceReports/Http/Controllers/FinanceReportsController.php', - 'Modules\\FinanceReports\\Providers\\FinanceReportsServiceProvider' => __DIR__ . '/../..' . '/Modules/FinanceReports/Providers/FinanceReportsServiceProvider.php', - 'Modules\\FinanceReports\\Providers\\RouteServiceProvider' => __DIR__ . '/../..' . '/Modules/FinanceReports/Providers/RouteServiceProvider.php', - 'Modules\\Finance\\Http\\Controllers\\Controller' => __DIR__ . '/../..' . '/Modules/Finance/Http/Controllers/Controller.php', - 'Modules\\Finance\\Http\\Controllers\\CostCenterController' => __DIR__ . '/../..' . '/Modules/Finance/Http/Controllers/CostCenterController.php', - 'Modules\\Finance\\Http\\Controllers\\EquityController' => __DIR__ . '/../..' . '/Modules/Finance/Http/Controllers/EquityController.php', - 'Modules\\Finance\\Http\\Controllers\\FinanceController' => __DIR__ . '/../..' . '/Modules/Finance/Http/Controllers/FinanceController.php', - 'Modules\\Finance\\Http\\Controllers\\FixedAssetsController' => __DIR__ . '/../..' . '/Modules/Finance/Http/Controllers/FixedAssetsController.php', - 'Modules\\Finance\\Http\\Controllers\\MarkupTagController' => __DIR__ . '/../..' . '/Modules/Finance/Http/Controllers/MarkupTagController.php', - 'Modules\\Finance\\Http\\Controllers\\StaffPaymentsConfigurationController' => __DIR__ . '/../..' . '/Modules/Finance/Http/Controllers/StaffPaymentsConfigurationController.php', - 'Modules\\Finance\\Http\\Controllers\\StreamlineBillsController' => __DIR__ . '/../..' . '/Modules/Finance/Http/Controllers/StreamlineBillsController.php', - 'Modules\\Finance\\Providers\\FinanceServiceProvider' => __DIR__ . '/../..' . '/Modules/Finance/Providers/FinanceServiceProvider.php', - 'Modules\\Finance\\Providers\\RouteServiceProvider' => __DIR__ . '/../..' . '/Modules/Finance/Providers/RouteServiceProvider.php', - 'Modules\\Hiv\\Http\\Controllers\\AntiretralViralTherapyController' => __DIR__ . '/../..' . '/Modules/Hiv/Http/Controllers/AntiretralViralTherapyController.php', - 'Modules\\Hiv\\Http\\Controllers\\Controller' => __DIR__ . '/../..' . '/Modules/Hiv/Http/Controllers/Controller.php', - 'Modules\\Hiv\\Http\\Controllers\\HIVController' => __DIR__ . '/../..' . '/Modules/Hiv/Http/Controllers/HIVController.php', - 'Modules\\Hiv\\Providers\\HivServiceProvider' => __DIR__ . '/../..' . '/Modules/Hiv/Providers/HivServiceProvider.php', - 'Modules\\Hiv\\Providers\\RouteServiceProvider' => __DIR__ . '/../..' . '/Modules/Hiv/Providers/RouteServiceProvider.php', - 'Modules\\Insurance\\Http\\Controllers\\CommunityHealthInsurancePlanController' => __DIR__ . '/../..' . '/Modules/Insurance/Http/Controllers/CommunityHealthInsurancePlanController.php', - 'Modules\\Insurance\\Http\\Controllers\\Controller' => __DIR__ . '/../..' . '/Modules/Insurance/Http/Controllers/Controller.php', - 'Modules\\Insurance\\Http\\Controllers\\HeadsOfFamilyController' => __DIR__ . '/../..' . '/Modules/Insurance/Http/Controllers/HeadsOfFamilyController.php', - 'Modules\\Insurance\\Http\\Controllers\\InsuranceBenefitController' => __DIR__ . '/../..' . '/Modules/Insurance/Http/Controllers/InsuranceBenefitController.php', - 'Modules\\Insurance\\Http\\Controllers\\InsuranceClaimsController' => __DIR__ . '/../..' . '/Modules/Insurance/Http/Controllers/InsuranceClaimsController.php', - 'Modules\\Insurance\\Http\\Controllers\\InsuranceController' => __DIR__ . '/../..' . '/Modules/Insurance/Http/Controllers/InsuranceController.php', - 'Modules\\Insurance\\Http\\Controllers\\InsuranceDiseaseGroupsController' => __DIR__ . '/../..' . '/Modules/Insurance/Http/Controllers/InsuranceDiseaseGroupsController.php', - 'Modules\\Insurance\\Http\\Controllers\\InsuranceGroupController' => __DIR__ . '/../..' . '/Modules/Insurance/Http/Controllers/InsuranceGroupController.php', - 'Modules\\Insurance\\Http\\Controllers\\InsuranceMembersController' => __DIR__ . '/../..' . '/Modules/Insurance/Http/Controllers/InsuranceMembersController.php', - 'Modules\\Insurance\\Http\\Controllers\\InsurancePremiumsController' => __DIR__ . '/../..' . '/Modules/Insurance/Http/Controllers/InsurancePremiumsController.php', - 'Modules\\Insurance\\Http\\Controllers\\InsuranceReportsController' => __DIR__ . '/../..' . '/Modules/Insurance/Http/Controllers/InsuranceReportsController.php', - 'Modules\\Insurance\\Http\\Controllers\\InsuranceTariffsController' => __DIR__ . '/../..' . '/Modules/Insurance/Http/Controllers/InsuranceTariffsController.php', - 'Modules\\Insurance\\Http\\Controllers\\PersonTitleController' => __DIR__ . '/../..' . '/Modules/Insurance/Http/Controllers/PersonTitleController.php', - 'Modules\\Insurance\\Http\\Controllers\\RiskController' => __DIR__ . '/../..' . '/Modules/Insurance/Http/Controllers/RiskController.php', - 'Modules\\Insurance\\Providers\\InsuranceServiceProvider' => __DIR__ . '/../..' . '/Modules/Insurance/Providers/InsuranceServiceProvider.php', - 'Modules\\Insurance\\Providers\\RouteServiceProvider' => __DIR__ . '/../..' . '/Modules/Insurance/Providers/RouteServiceProvider.php', - 'Modules\\Investigations\\Http\\Controllers\\Controller' => __DIR__ . '/../..' . '/Modules/Investigations/Http/Controllers/Controller.php', - 'Modules\\Investigations\\Http\\Controllers\\DentalController' => __DIR__ . '/../..' . '/Modules/Investigations/Http/Controllers/DentalController.php', - 'Modules\\Investigations\\Http\\Controllers\\InvestigationCategoryController' => __DIR__ . '/../..' . '/Modules/Investigations/Http/Controllers/InvestigationCategoryController.php', - 'Modules\\Investigations\\Http\\Controllers\\InvestigationController' => __DIR__ . '/../..' . '/Modules/Investigations/Http/Controllers/InvestigationController.php', - 'Modules\\Investigations\\Http\\Controllers\\InvestigationPrintController' => __DIR__ . '/../..' . '/Modules/Investigations/Http/Controllers/InvestigationPrintController.php', - 'Modules\\Investigations\\Http\\Controllers\\InvestigationResultTemplateController' => __DIR__ . '/../..' . '/Modules/Investigations/Http/Controllers/InvestigationResultTemplateController.php', - 'Modules\\Investigations\\Http\\Controllers\\InvestigationSpecialisedVariableController' => __DIR__ . '/../..' . '/Modules/Investigations/Http/Controllers/InvestigationSpecialisedVariableController.php', - 'Modules\\Investigations\\Http\\Controllers\\InvestigationTestCodesController' => __DIR__ . '/../..' . '/Modules/Investigations/Http/Controllers/InvestigationTestCodesController.php', - 'Modules\\Investigations\\Http\\Controllers\\LabController' => __DIR__ . '/../..' . '/Modules/Investigations/Http/Controllers/LabController.php', - 'Modules\\Investigations\\Http\\Controllers\\LabFormController' => __DIR__ . '/../..' . '/Modules/Investigations/Http/Controllers/LabFormController.php', - 'Modules\\Investigations\\Http\\Controllers\\LabInstrumentsController' => __DIR__ . '/../..' . '/Modules/Investigations/Http/Controllers/LabInstrumentsController.php', - 'Modules\\Investigations\\Http\\Controllers\\LabMachinesController' => __DIR__ . '/../..' . '/Modules/Investigations/Http/Controllers/LabMachinesController.php', - 'Modules\\Investigations\\Http\\Controllers\\LaboratorySpecimenController' => __DIR__ . '/../..' . '/Modules/Investigations/Http/Controllers/LaboratorySpecimenController.php', - 'Modules\\Investigations\\Http\\Controllers\\RadiologyController' => __DIR__ . '/../..' . '/Modules/Investigations/Http/Controllers/RadiologyController.php', - 'Modules\\Investigations\\Providers\\InvestigationsServiceProvider' => __DIR__ . '/../..' . '/Modules/Investigations/Providers/InvestigationsServiceProvider.php', - 'Modules\\Investigations\\Providers\\RouteServiceProvider' => __DIR__ . '/../..' . '/Modules/Investigations/Providers/RouteServiceProvider.php', - 'Modules\\Invoices\\Http\\Controllers\\Controller' => __DIR__ . '/../..' . '/Modules/Invoices/Http/Controllers/Controller.php', - 'Modules\\Invoices\\Http\\Controllers\\InvoicesController' => __DIR__ . '/../..' . '/Modules/Invoices/Http/Controllers/InvoicesController.php', - 'Modules\\Invoices\\Providers\\InvoicesServiceProvider' => __DIR__ . '/../..' . '/Modules/Invoices/Providers/InvoicesServiceProvider.php', - 'Modules\\Invoices\\Providers\\RouteServiceProvider' => __DIR__ . '/../..' . '/Modules/Invoices/Providers/RouteServiceProvider.php', - 'Modules\\Invoices\\Services\\InvoicesService' => __DIR__ . '/../..' . '/Modules/Invoices/Services/InvoicesService.php', - 'Modules\\Journals\\Http\\Controllers\\Controller' => __DIR__ . '/../..' . '/Modules/Journals/Http/Controllers/Controller.php', - 'Modules\\Journals\\Http\\Controllers\\JournalController' => __DIR__ . '/../..' . '/Modules/Journals/Http/Controllers/JournalController.php', - 'Modules\\Journals\\Providers\\JournalsServiceProvider' => __DIR__ . '/../..' . '/Modules/Journals/Providers/JournalsServiceProvider.php', - 'Modules\\Journals\\Providers\\RouteServiceProvider' => __DIR__ . '/../..' . '/Modules/Journals/Providers/RouteServiceProvider.php', - 'Modules\\Maternity\\Http\\Controllers\\Controller' => __DIR__ . '/../..' . '/Modules/Maternity/Http/Controllers/Controller.php', - 'Modules\\Maternity\\Http\\Controllers\\MaternityController' => __DIR__ . '/../..' . '/Modules/Maternity/Http/Controllers/MaternityController.php', - 'Modules\\Maternity\\Providers\\MaternityServiceProvider' => __DIR__ . '/../..' . '/Modules/Maternity/Providers/MaternityServiceProvider.php', - 'Modules\\Maternity\\Providers\\RouteServiceProvider' => __DIR__ . '/../..' . '/Modules/Maternity/Providers/RouteServiceProvider.php', - 'Modules\\PatientDiscounts\\Http\\Controllers\\Controller' => __DIR__ . '/../..' . '/Modules/PatientDiscounts/Http/Controllers/Controller.php', - 'Modules\\PatientDiscounts\\Http\\Controllers\\DiscountCategoryController' => __DIR__ . '/../..' . '/Modules/PatientDiscounts/Http/Controllers/DiscountCategoryController.php', - 'Modules\\PatientDiscounts\\Http\\Controllers\\DiscountController' => __DIR__ . '/../..' . '/Modules/PatientDiscounts/Http/Controllers/DiscountController.php', - 'Modules\\PatientDiscounts\\Http\\Controllers\\FamilyAccountsController' => __DIR__ . '/../..' . '/Modules/PatientDiscounts/Http/Controllers/FamilyAccountsController.php', - 'Modules\\PatientDiscounts\\Http\\Controllers\\PatientAccountsController' => __DIR__ . '/../..' . '/Modules/PatientDiscounts/Http/Controllers/PatientAccountsController.php', - 'Modules\\PatientDiscounts\\Http\\Controllers\\PatientDebtorsController' => __DIR__ . '/../..' . '/Modules/PatientDiscounts/Http/Controllers/PatientDebtorsController.php', - 'Modules\\PatientDiscounts\\Http\\Controllers\\PriceListController' => __DIR__ . '/../..' . '/Modules/PatientDiscounts/Http/Controllers/PriceListController.php', - 'Modules\\PatientDiscounts\\Providers\\PatientDiscountsServiceProvider' => __DIR__ . '/../..' . '/Modules/PatientDiscounts/Providers/PatientDiscountsServiceProvider.php', - 'Modules\\PatientDiscounts\\Providers\\RouteServiceProvider' => __DIR__ . '/../..' . '/Modules/PatientDiscounts/Providers/RouteServiceProvider.php', - 'Modules\\PatientFinance\\Http\\Controllers\\CancelPatientTransactionsController' => __DIR__ . '/../..' . '/Modules/PatientFinance/Http/Controllers/CancelPatientTransactionsController.php', - 'Modules\\PatientFinance\\Http\\Controllers\\Controller' => __DIR__ . '/../..' . '/Modules/PatientFinance/Http/Controllers/Controller.php', - 'Modules\\PatientFinance\\Http\\Controllers\\PatientFinanceController' => __DIR__ . '/../..' . '/Modules/PatientFinance/Http/Controllers/PatientFinanceController.php', - 'Modules\\PatientFinance\\Http\\Controllers\\PatientPaymentMethodsController' => __DIR__ . '/../..' . '/Modules/PatientFinance/Http/Controllers/PatientPaymentMethodsController.php', - 'Modules\\PatientFinance\\Http\\Controllers\\PatientRefundController' => __DIR__ . '/../..' . '/Modules/PatientFinance/Http/Controllers/PatientRefundController.php', - 'Modules\\PatientFinance\\Providers\\PatientFinanceServiceProvider' => __DIR__ . '/../..' . '/Modules/PatientFinance/Providers/PatientFinanceServiceProvider.php', - 'Modules\\PatientFinance\\Providers\\RouteServiceProvider' => __DIR__ . '/../..' . '/Modules/PatientFinance/Providers/RouteServiceProvider.php', - 'Modules\\PatientFinance\\Services\\CHIDeposits' => __DIR__ . '/../..' . '/Modules/PatientFinance/Services/CHIDeposits.php', - 'Modules\\PatientFinance\\Services\\CentralBillingDeposit' => __DIR__ . '/../..' . '/Modules/PatientFinance/Services/CentralBillingDeposit.php', - 'Modules\\PatientFinance\\Services\\CollectiveBillsDeposit' => __DIR__ . '/../..' . '/Modules/PatientFinance/Services/CollectiveBillsDeposit.php', - 'Modules\\PatientFinance\\Services\\DepositHelpers' => __DIR__ . '/../..' . '/Modules/PatientFinance/Services/DepositHelpers.php', - 'Modules\\PatientFinance\\Services\\EyeGlassesDeposit' => __DIR__ . '/../..' . '/Modules/PatientFinance/Services/EyeGlassesDeposit.php', - 'Modules\\PatientFinance\\Services\\InvestigationsDeposit' => __DIR__ . '/../..' . '/Modules/PatientFinance/Services/InvestigationsDeposit.php', - 'Modules\\PatientFinance\\Services\\ProceduresDeposit' => __DIR__ . '/../..' . '/Modules/PatientFinance/Services/ProceduresDeposit.php', - 'Modules\\PatientFinance\\Services\\ServicesDeposit' => __DIR__ . '/../..' . '/Modules/PatientFinance/Services/ServicesDeposit.php', - 'Modules\\PatientFinance\\Services\\SundriesDeposit' => __DIR__ . '/../..' . '/Modules/PatientFinance/Services/SundriesDeposit.php', - 'Modules\\PatientFinance\\Services\\TreatmentDeposit' => __DIR__ . '/../..' . '/Modules/PatientFinance/Services/TreatmentDeposit.php', - 'Modules\\Patients\\Http\\Controllers\\AlertsController' => __DIR__ . '/../..' . '/Modules/Patients/Http/Controllers/AlertsController.php', - 'Modules\\Patients\\Http\\Controllers\\AllergiesController' => __DIR__ . '/../..' . '/Modules/Patients/Http/Controllers/AllergiesController.php', - 'Modules\\Patients\\Http\\Controllers\\ConsultationController' => __DIR__ . '/../..' . '/Modules/Patients/Http/Controllers/ConsultationController.php', - 'Modules\\Patients\\Http\\Controllers\\Controller' => __DIR__ . '/../..' . '/Modules/Patients/Http/Controllers/Controller.php', - 'Modules\\Patients\\Http\\Controllers\\NutritionController' => __DIR__ . '/../..' . '/Modules/Patients/Http/Controllers/NutritionController.php', - 'Modules\\Patients\\Http\\Controllers\\PatientAppointmentsController' => __DIR__ . '/../..' . '/Modules/Patients/Http/Controllers/PatientAppointmentsController.php', - 'Modules\\Patients\\Http\\Controllers\\PatientController' => __DIR__ . '/../..' . '/Modules/Patients/Http/Controllers/PatientController.php', - 'Modules\\Patients\\Http\\Controllers\\PatientDocumentController' => __DIR__ . '/../..' . '/Modules/Patients/Http/Controllers/PatientDocumentController.php', - 'Modules\\Patients\\Http\\Controllers\\PatientEpisodeController' => __DIR__ . '/../..' . '/Modules/Patients/Http/Controllers/PatientEpisodeController.php', - 'Modules\\Patients\\Http\\Controllers\\PatientFlowMonitoringController' => __DIR__ . '/../..' . '/Modules/Patients/Http/Controllers/PatientFlowMonitoringController.php', - 'Modules\\Patients\\Http\\Controllers\\PointOfSaleController' => __DIR__ . '/../..' . '/Modules/Patients/Http/Controllers/PointOfSaleController.php', - 'Modules\\Patients\\Http\\Controllers\\PostDischargeRiskController' => __DIR__ . '/../..' . '/Modules/Patients/Http/Controllers/PostDischargeRiskController.php', - 'Modules\\Patients\\Http\\Controllers\\TriageController' => __DIR__ . '/../..' . '/Modules/Patients/Http/Controllers/TriageController.php', - 'Modules\\Patients\\Providers\\PatientsServiceProvider' => __DIR__ . '/../..' . '/Modules/Patients/Providers/PatientsServiceProvider.php', - 'Modules\\Patients\\Providers\\RouteServiceProvider' => __DIR__ . '/../..' . '/Modules/Patients/Providers/RouteServiceProvider.php', - 'Modules\\Payroll\\Http\\Controllers\\Controller' => __DIR__ . '/../..' . '/Modules/Payroll/Http/Controllers/Controller.php', - 'Modules\\Payroll\\Http\\Controllers\\PayrollCategoriesController' => __DIR__ . '/../..' . '/Modules/Payroll/Http/Controllers/PayrollCategoriesController.php', - 'Modules\\Payroll\\Http\\Controllers\\PayrollController' => __DIR__ . '/../..' . '/Modules/Payroll/Http/Controllers/PayrollController.php', - 'Modules\\Payroll\\Http\\Controllers\\PayrollDefaultsController' => __DIR__ . '/../..' . '/Modules/Payroll/Http/Controllers/PayrollDefaultsController.php', - 'Modules\\Payroll\\Http\\Controllers\\PayrollSalaryScaleController' => __DIR__ . '/../..' . '/Modules/Payroll/Http/Controllers/PayrollSalaryScaleController.php', - 'Modules\\Payroll\\Http\\Controllers\\PayrollScheduleController' => __DIR__ . '/../..' . '/Modules/Payroll/Http/Controllers/PayrollScheduleController.php', - 'Modules\\Payroll\\Providers\\PayrollServiceProvider' => __DIR__ . '/../..' . '/Modules/Payroll/Providers/PayrollServiceProvider.php', - 'Modules\\Payroll\\Providers\\RouteServiceProvider' => __DIR__ . '/../..' . '/Modules/Payroll/Providers/RouteServiceProvider.php', - 'Modules\\Pharmacy\\Http\\Controllers\\Controller' => __DIR__ . '/../..' . '/Modules/Pharmacy/Http/Controllers/Controller.php', - 'Modules\\Pharmacy\\Http\\Controllers\\PharmacyController' => __DIR__ . '/../..' . '/Modules/Pharmacy/Http/Controllers/PharmacyController.php', - 'Modules\\Pharmacy\\Http\\Controllers\\PrescriptionErrorsController' => __DIR__ . '/../..' . '/Modules/Pharmacy/Http/Controllers/PrescriptionErrorsController.php', - 'Modules\\Pharmacy\\Http\\Controllers\\PrescriptionsController' => __DIR__ . '/../..' . '/Modules/Pharmacy/Http/Controllers/PrescriptionsController.php', - 'Modules\\Pharmacy\\Providers\\PharmacyServiceProvider' => __DIR__ . '/../..' . '/Modules/Pharmacy/Providers/PharmacyServiceProvider.php', - 'Modules\\Pharmacy\\Providers\\RouteServiceProvider' => __DIR__ . '/../..' . '/Modules/Pharmacy/Providers/RouteServiceProvider.php', - 'Modules\\Reports\\Http\\Controllers\\Controller' => __DIR__ . '/../..' . '/Modules/Reports/Http/Controllers/Controller.php', - 'Modules\\Reports\\Http\\Controllers\\HmisController' => __DIR__ . '/../..' . '/Modules/Reports/Http/Controllers/HmisController.php', - 'Modules\\Reports\\Http\\Controllers\\HmisController002' => __DIR__ . '/../..' . '/Modules/Reports/Http/Controllers/HmisController002.php', - 'Modules\\Reports\\Http\\Controllers\\HmisController105' => __DIR__ . '/../..' . '/Modules/Reports/Http/Controllers/HmisController105.php', - 'Modules\\Reports\\Http\\Controllers\\MentalHealthReportsController' => __DIR__ . '/../..' . '/Modules/Reports/Http/Controllers/MentalHealthReportsController.php', - 'Modules\\Reports\\Http\\Controllers\\NiraReportController' => __DIR__ . '/../..' . '/Modules/Reports/Http/Controllers/NiraReportController.php', - 'Modules\\Reports\\Http\\Controllers\\ReportsDashboardController' => __DIR__ . '/../..' . '/Modules/Reports/Http/Controllers/ReportsDashboardController.php', - 'Modules\\Reports\\Http\\Controllers\\StreamlineReportsController' => __DIR__ . '/../..' . '/Modules/Reports/Http/Controllers/StreamlineReportsController.php', - 'Modules\\Reports\\Providers\\ReportsServiceProvider' => __DIR__ . '/../..' . '/Modules/Reports/Providers/ReportsServiceProvider.php', - 'Modules\\Reports\\Providers\\RouteServiceProvider' => __DIR__ . '/../..' . '/Modules/Reports/Providers/RouteServiceProvider.php', - 'Modules\\Stores\\Http\\Controllers\\Controller' => __DIR__ . '/../..' . '/Modules/Stores/Http/Controllers/Controller.php', - 'Modules\\Stores\\Http\\Controllers\\StoresController' => __DIR__ . '/../..' . '/Modules/Stores/Http/Controllers/StoresController.php', - 'Modules\\Stores\\Providers\\RouteServiceProvider' => __DIR__ . '/../..' . '/Modules/Stores/Providers/RouteServiceProvider.php', - 'Modules\\Stores\\Providers\\StoresServiceProvider' => __DIR__ . '/../..' . '/Modules/Stores/Providers/StoresServiceProvider.php', - 'Modules\\Stores\\Services\\StoresItemService' => __DIR__ . '/../..' . '/Modules/Stores/Services/StoresItemService.php', - 'Modules\\Theatre\\Http\\Controllers\\Controller' => __DIR__ . '/../..' . '/Modules/Theatre/Http/Controllers/Controller.php', - 'Modules\\Theatre\\Http\\Controllers\\TheatreAnaestheticsController' => __DIR__ . '/../..' . '/Modules/Theatre/Http/Controllers/TheatreAnaestheticsController.php', - 'Modules\\Theatre\\Http\\Controllers\\TheatreSurgeryController' => __DIR__ . '/../..' . '/Modules/Theatre/Http/Controllers/TheatreSurgeryController.php', - 'Modules\\Theatre\\Providers\\RouteServiceProvider' => __DIR__ . '/../..' . '/Modules/Theatre/Providers/RouteServiceProvider.php', - 'Modules\\Theatre\\Providers\\TheatreServiceProvider' => __DIR__ . '/../..' . '/Modules/Theatre/Providers/TheatreServiceProvider.php', - 'Modules\\WardManagement\\Http\\Controllers\\Controller' => __DIR__ . '/../..' . '/Modules/WardManagement/Http/Controllers/Controller.php', - 'Modules\\WardManagement\\Http\\Controllers\\HmisWardController' => __DIR__ . '/../..' . '/Modules/WardManagement/Http/Controllers/HmisWardController.php', - 'Modules\\WardManagement\\Http\\Controllers\\InpatientBillsController' => __DIR__ . '/../..' . '/Modules/WardManagement/Http/Controllers/InpatientBillsController.php', - 'Modules\\WardManagement\\Http\\Controllers\\InpatientController' => __DIR__ . '/../..' . '/Modules/WardManagement/Http/Controllers/InpatientController.php', - 'Modules\\WardManagement\\Http\\Controllers\\TreatmentSheetController' => __DIR__ . '/../..' . '/Modules/WardManagement/Http/Controllers/TreatmentSheetController.php', - 'Modules\\WardManagement\\Http\\Controllers\\WardController' => __DIR__ . '/../..' . '/Modules/WardManagement/Http/Controllers/WardController.php', - 'Modules\\WardManagement\\Http\\Controllers\\WardItemRequestController' => __DIR__ . '/../..' . '/Modules/WardManagement/Http/Controllers/WardItemRequestController.php', - 'Modules\\WardManagement\\Http\\Controllers\\WardsConsumptionController' => __DIR__ . '/../..' . '/Modules/WardManagement/Http/Controllers/WardsConsumptionController.php', - 'Modules\\WardManagement\\Providers\\RouteServiceProvider' => __DIR__ . '/../..' . '/Modules/WardManagement/Providers/RouteServiceProvider.php', - 'Modules\\WardManagement\\Providers\\WardManagementServiceProvider' => __DIR__ . '/../..' . '/Modules/WardManagement/Providers/WardManagementServiceProvider.php', - 'Modules\\WardManagement\\Services\\TreatmentSheetService' => __DIR__ . '/../..' . '/Modules/WardManagement/Services/TreatmentSheetService.php', - 'Monolog\\Attribute\\AsMonologProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Attribute/AsMonologProcessor.php', - 'Monolog\\Attribute\\WithMonologChannel' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Attribute/WithMonologChannel.php', - 'Monolog\\DateTimeImmutable' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/DateTimeImmutable.php', - 'Monolog\\ErrorHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/ErrorHandler.php', - 'Monolog\\Formatter\\ChromePHPFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php', - 'Monolog\\Formatter\\ElasticaFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php', - 'Monolog\\Formatter\\ElasticsearchFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/ElasticsearchFormatter.php', - 'Monolog\\Formatter\\FlowdockFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php', - 'Monolog\\Formatter\\FluentdFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php', - 'Monolog\\Formatter\\FormatterInterface' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php', - 'Monolog\\Formatter\\GelfMessageFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php', - 'Monolog\\Formatter\\GoogleCloudLoggingFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/GoogleCloudLoggingFormatter.php', - 'Monolog\\Formatter\\HtmlFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php', - 'Monolog\\Formatter\\JsonFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php', - 'Monolog\\Formatter\\LineFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/LineFormatter.php', - 'Monolog\\Formatter\\LogglyFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php', - 'Monolog\\Formatter\\LogmaticFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/LogmaticFormatter.php', - 'Monolog\\Formatter\\LogstashFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php', - 'Monolog\\Formatter\\MongoDBFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php', - 'Monolog\\Formatter\\NormalizerFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php', - 'Monolog\\Formatter\\ScalarFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php', - 'Monolog\\Formatter\\SyslogFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/SyslogFormatter.php', - 'Monolog\\Formatter\\WildfireFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php', - 'Monolog\\Handler\\AbstractHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/AbstractHandler.php', - 'Monolog\\Handler\\AbstractProcessingHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php', - 'Monolog\\Handler\\AbstractSyslogHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php', - 'Monolog\\Handler\\AmqpHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/AmqpHandler.php', - 'Monolog\\Handler\\BrowserConsoleHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php', - 'Monolog\\Handler\\BufferHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/BufferHandler.php', - 'Monolog\\Handler\\ChromePHPHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php', - 'Monolog\\Handler\\CouchDBHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php', - 'Monolog\\Handler\\CubeHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/CubeHandler.php', - 'Monolog\\Handler\\Curl\\Util' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/Curl/Util.php', - 'Monolog\\Handler\\DeduplicationHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php', - 'Monolog\\Handler\\DoctrineCouchDBHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php', - 'Monolog\\Handler\\DynamoDbHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php', - 'Monolog\\Handler\\ElasticaHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/ElasticaHandler.php', - 'Monolog\\Handler\\ElasticsearchHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/ElasticsearchHandler.php', - 'Monolog\\Handler\\ErrorLogHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php', - 'Monolog\\Handler\\FallbackGroupHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FallbackGroupHandler.php', - 'Monolog\\Handler\\FilterHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FilterHandler.php', - 'Monolog\\Handler\\FingersCrossedHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php', - 'Monolog\\Handler\\FingersCrossed\\ActivationStrategyInterface' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php', - 'Monolog\\Handler\\FingersCrossed\\ChannelLevelActivationStrategy' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php', - 'Monolog\\Handler\\FingersCrossed\\ErrorLevelActivationStrategy' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php', - 'Monolog\\Handler\\FirePHPHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php', - 'Monolog\\Handler\\FleepHookHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php', - 'Monolog\\Handler\\FlowdockHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php', - 'Monolog\\Handler\\FormattableHandlerInterface' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FormattableHandlerInterface.php', - 'Monolog\\Handler\\FormattableHandlerTrait' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FormattableHandlerTrait.php', - 'Monolog\\Handler\\GelfHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/GelfHandler.php', - 'Monolog\\Handler\\GroupHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/GroupHandler.php', - 'Monolog\\Handler\\Handler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/Handler.php', - 'Monolog\\Handler\\HandlerInterface' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/HandlerInterface.php', - 'Monolog\\Handler\\HandlerWrapper' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php', - 'Monolog\\Handler\\IFTTTHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php', - 'Monolog\\Handler\\InsightOpsHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/InsightOpsHandler.php', - 'Monolog\\Handler\\LogEntriesHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php', - 'Monolog\\Handler\\LogglyHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/LogglyHandler.php', - 'Monolog\\Handler\\LogmaticHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/LogmaticHandler.php', - 'Monolog\\Handler\\MailHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/MailHandler.php', - 'Monolog\\Handler\\MandrillHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/MandrillHandler.php', - 'Monolog\\Handler\\MissingExtensionException' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php', - 'Monolog\\Handler\\MongoDBHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php', - 'Monolog\\Handler\\NativeMailerHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php', - 'Monolog\\Handler\\NewRelicHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php', - 'Monolog\\Handler\\NoopHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/NoopHandler.php', - 'Monolog\\Handler\\NullHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/NullHandler.php', - 'Monolog\\Handler\\OverflowHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/OverflowHandler.php', - 'Monolog\\Handler\\PHPConsoleHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php', - 'Monolog\\Handler\\ProcessHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/ProcessHandler.php', - 'Monolog\\Handler\\ProcessableHandlerInterface' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/ProcessableHandlerInterface.php', - 'Monolog\\Handler\\ProcessableHandlerTrait' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/ProcessableHandlerTrait.php', - 'Monolog\\Handler\\PsrHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/PsrHandler.php', - 'Monolog\\Handler\\PushoverHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/PushoverHandler.php', - 'Monolog\\Handler\\RedisHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/RedisHandler.php', - 'Monolog\\Handler\\RedisPubSubHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/RedisPubSubHandler.php', - 'Monolog\\Handler\\RollbarHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/RollbarHandler.php', - 'Monolog\\Handler\\RotatingFileHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php', - 'Monolog\\Handler\\SamplingHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SamplingHandler.php', - 'Monolog\\Handler\\SendGridHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SendGridHandler.php', - 'Monolog\\Handler\\SlackHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SlackHandler.php', - 'Monolog\\Handler\\SlackWebhookHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php', - 'Monolog\\Handler\\Slack\\SlackRecord' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php', - 'Monolog\\Handler\\SocketHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SocketHandler.php', - 'Monolog\\Handler\\SqsHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SqsHandler.php', - 'Monolog\\Handler\\StreamHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/StreamHandler.php', - 'Monolog\\Handler\\SymfonyMailerHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SymfonyMailerHandler.php', - 'Monolog\\Handler\\SyslogHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SyslogHandler.php', - 'Monolog\\Handler\\SyslogUdpHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php', - 'Monolog\\Handler\\SyslogUdp\\UdpSocket' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php', - 'Monolog\\Handler\\TelegramBotHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/TelegramBotHandler.php', - 'Monolog\\Handler\\TestHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/TestHandler.php', - 'Monolog\\Handler\\WebRequestRecognizerTrait' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/WebRequestRecognizerTrait.php', - 'Monolog\\Handler\\WhatFailureGroupHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php', - 'Monolog\\Handler\\ZendMonitorHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php', - 'Monolog\\JsonSerializableDateTimeImmutable' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/JsonSerializableDateTimeImmutable.php', - 'Monolog\\Level' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Level.php', - 'Monolog\\LogRecord' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/LogRecord.php', - 'Monolog\\Logger' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Logger.php', - 'Monolog\\Processor\\ClosureContextProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/ClosureContextProcessor.php', - 'Monolog\\Processor\\GitProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/GitProcessor.php', - 'Monolog\\Processor\\HostnameProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/HostnameProcessor.php', - 'Monolog\\Processor\\IntrospectionProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php', - 'Monolog\\Processor\\LoadAverageProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/LoadAverageProcessor.php', - 'Monolog\\Processor\\MemoryPeakUsageProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php', - 'Monolog\\Processor\\MemoryProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php', - 'Monolog\\Processor\\MemoryUsageProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php', - 'Monolog\\Processor\\MercurialProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php', - 'Monolog\\Processor\\ProcessIdProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php', - 'Monolog\\Processor\\ProcessorInterface' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/ProcessorInterface.php', - 'Monolog\\Processor\\PsrLogMessageProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php', - 'Monolog\\Processor\\TagProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/TagProcessor.php', - 'Monolog\\Processor\\UidProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/UidProcessor.php', - 'Monolog\\Processor\\WebProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/WebProcessor.php', - 'Monolog\\Registry' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Registry.php', - 'Monolog\\ResettableInterface' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/ResettableInterface.php', - 'Monolog\\SignalHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/SignalHandler.php', - 'Monolog\\Test\\TestCase' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Test/TestCase.php', - 'Monolog\\Utils' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Utils.php', - 'Nette\\ArgumentOutOfRangeException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', - 'Nette\\DeprecatedException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', - 'Nette\\DirectoryNotFoundException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', - 'Nette\\FileNotFoundException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', - 'Nette\\HtmlStringable' => __DIR__ . '/..' . '/nette/utils/src/HtmlStringable.php', - 'Nette\\IOException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', - 'Nette\\InvalidArgumentException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', - 'Nette\\InvalidStateException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', - 'Nette\\Iterators\\CachingIterator' => __DIR__ . '/..' . '/nette/utils/src/Iterators/CachingIterator.php', - 'Nette\\Iterators\\Mapper' => __DIR__ . '/..' . '/nette/utils/src/Iterators/Mapper.php', - 'Nette\\Localization\\ITranslator' => __DIR__ . '/..' . '/nette/utils/src/compatibility.php', - 'Nette\\Localization\\Translator' => __DIR__ . '/..' . '/nette/utils/src/Translator.php', - 'Nette\\MemberAccessException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', - 'Nette\\NotImplementedException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', - 'Nette\\NotSupportedException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', - 'Nette\\OutOfRangeException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', - 'Nette\\Schema\\Context' => __DIR__ . '/..' . '/nette/schema/src/Schema/Context.php', - 'Nette\\Schema\\DynamicParameter' => __DIR__ . '/..' . '/nette/schema/src/Schema/DynamicParameter.php', - 'Nette\\Schema\\Elements\\AnyOf' => __DIR__ . '/..' . '/nette/schema/src/Schema/Elements/AnyOf.php', - 'Nette\\Schema\\Elements\\Base' => __DIR__ . '/..' . '/nette/schema/src/Schema/Elements/Base.php', - 'Nette\\Schema\\Elements\\Structure' => __DIR__ . '/..' . '/nette/schema/src/Schema/Elements/Structure.php', - 'Nette\\Schema\\Elements\\Type' => __DIR__ . '/..' . '/nette/schema/src/Schema/Elements/Type.php', - 'Nette\\Schema\\Expect' => __DIR__ . '/..' . '/nette/schema/src/Schema/Expect.php', - 'Nette\\Schema\\Helpers' => __DIR__ . '/..' . '/nette/schema/src/Schema/Helpers.php', - 'Nette\\Schema\\Message' => __DIR__ . '/..' . '/nette/schema/src/Schema/Message.php', - 'Nette\\Schema\\Processor' => __DIR__ . '/..' . '/nette/schema/src/Schema/Processor.php', - 'Nette\\Schema\\Schema' => __DIR__ . '/..' . '/nette/schema/src/Schema/Schema.php', - 'Nette\\Schema\\ValidationException' => __DIR__ . '/..' . '/nette/schema/src/Schema/ValidationException.php', - 'Nette\\SmartObject' => __DIR__ . '/..' . '/nette/utils/src/SmartObject.php', - 'Nette\\StaticClass' => __DIR__ . '/..' . '/nette/utils/src/StaticClass.php', - 'Nette\\UnexpectedValueException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', - 'Nette\\Utils\\ArrayHash' => __DIR__ . '/..' . '/nette/utils/src/Utils/ArrayHash.php', - 'Nette\\Utils\\ArrayList' => __DIR__ . '/..' . '/nette/utils/src/Utils/ArrayList.php', - 'Nette\\Utils\\Arrays' => __DIR__ . '/..' . '/nette/utils/src/Utils/Arrays.php', - 'Nette\\Utils\\AssertionException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php', - 'Nette\\Utils\\Callback' => __DIR__ . '/..' . '/nette/utils/src/Utils/Callback.php', - 'Nette\\Utils\\DateTime' => __DIR__ . '/..' . '/nette/utils/src/Utils/DateTime.php', - 'Nette\\Utils\\FileInfo' => __DIR__ . '/..' . '/nette/utils/src/Utils/FileInfo.php', - 'Nette\\Utils\\FileSystem' => __DIR__ . '/..' . '/nette/utils/src/Utils/FileSystem.php', - 'Nette\\Utils\\Finder' => __DIR__ . '/..' . '/nette/utils/src/Utils/Finder.php', - 'Nette\\Utils\\Floats' => __DIR__ . '/..' . '/nette/utils/src/Utils/Floats.php', - 'Nette\\Utils\\Helpers' => __DIR__ . '/..' . '/nette/utils/src/Utils/Helpers.php', - 'Nette\\Utils\\Html' => __DIR__ . '/..' . '/nette/utils/src/Utils/Html.php', - 'Nette\\Utils\\IHtmlString' => __DIR__ . '/..' . '/nette/utils/src/compatibility.php', - 'Nette\\Utils\\Image' => __DIR__ . '/..' . '/nette/utils/src/Utils/Image.php', - 'Nette\\Utils\\ImageColor' => __DIR__ . '/..' . '/nette/utils/src/Utils/ImageColor.php', - 'Nette\\Utils\\ImageException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php', - 'Nette\\Utils\\ImageType' => __DIR__ . '/..' . '/nette/utils/src/Utils/ImageType.php', - 'Nette\\Utils\\Iterables' => __DIR__ . '/..' . '/nette/utils/src/Utils/Iterables.php', - 'Nette\\Utils\\Json' => __DIR__ . '/..' . '/nette/utils/src/Utils/Json.php', - 'Nette\\Utils\\JsonException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php', - 'Nette\\Utils\\ObjectHelpers' => __DIR__ . '/..' . '/nette/utils/src/Utils/ObjectHelpers.php', - 'Nette\\Utils\\Paginator' => __DIR__ . '/..' . '/nette/utils/src/Utils/Paginator.php', - 'Nette\\Utils\\Random' => __DIR__ . '/..' . '/nette/utils/src/Utils/Random.php', - 'Nette\\Utils\\Reflection' => __DIR__ . '/..' . '/nette/utils/src/Utils/Reflection.php', - 'Nette\\Utils\\ReflectionMethod' => __DIR__ . '/..' . '/nette/utils/src/Utils/ReflectionMethod.php', - 'Nette\\Utils\\RegexpException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php', - 'Nette\\Utils\\Strings' => __DIR__ . '/..' . '/nette/utils/src/Utils/Strings.php', - 'Nette\\Utils\\Type' => __DIR__ . '/..' . '/nette/utils/src/Utils/Type.php', - 'Nette\\Utils\\UnknownImageFileException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php', - 'Nette\\Utils\\Validators' => __DIR__ . '/..' . '/nette/utils/src/Utils/Validators.php', - 'Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php', - 'Nwidart\\Modules\\Activators\\FileActivator' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Activators/FileActivator.php', - 'Nwidart\\Modules\\Collection' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Collection.php', - 'Nwidart\\Modules\\Commands\\ChannelMakeCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/ChannelMakeCommand.php', - 'Nwidart\\Modules\\Commands\\CheckLangCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/CheckLangCommand.php', - 'Nwidart\\Modules\\Commands\\CommandMakeCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/CommandMakeCommand.php', - 'Nwidart\\Modules\\Commands\\ComponentClassMakeCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/ComponentClassMakeCommand.php', - 'Nwidart\\Modules\\Commands\\ComponentViewMakeCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/ComponentViewMakeCommand.php', - 'Nwidart\\Modules\\Commands\\ControllerMakeCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/ControllerMakeCommand.php', - 'Nwidart\\Modules\\Commands\\DisableCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/DisableCommand.php', - 'Nwidart\\Modules\\Commands\\DumpCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/DumpCommand.php', - 'Nwidart\\Modules\\Commands\\EnableCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/EnableCommand.php', - 'Nwidart\\Modules\\Commands\\EventMakeCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/EventMakeCommand.php', - 'Nwidart\\Modules\\Commands\\FactoryMakeCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/FactoryMakeCommand.php', - 'Nwidart\\Modules\\Commands\\GeneratorCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/GeneratorCommand.php', - 'Nwidart\\Modules\\Commands\\InstallCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/InstallCommand.php', - 'Nwidart\\Modules\\Commands\\JobMakeCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/JobMakeCommand.php', - 'Nwidart\\Modules\\Commands\\LaravelModulesV6Migrator' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/LaravelModulesV6Migrator.php', - 'Nwidart\\Modules\\Commands\\ListCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/ListCommand.php', - 'Nwidart\\Modules\\Commands\\ListenerMakeCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/ListenerMakeCommand.php', - 'Nwidart\\Modules\\Commands\\MailMakeCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/MailMakeCommand.php', - 'Nwidart\\Modules\\Commands\\MiddlewareMakeCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/MiddlewareMakeCommand.php', - 'Nwidart\\Modules\\Commands\\MigrateCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/MigrateCommand.php', - 'Nwidart\\Modules\\Commands\\MigrateFreshCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/MigrateFreshCommand.php', - 'Nwidart\\Modules\\Commands\\MigrateRefreshCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/MigrateRefreshCommand.php', - 'Nwidart\\Modules\\Commands\\MigrateResetCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/MigrateResetCommand.php', - 'Nwidart\\Modules\\Commands\\MigrateRollbackCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/MigrateRollbackCommand.php', - 'Nwidart\\Modules\\Commands\\MigrateStatusCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/MigrateStatusCommand.php', - 'Nwidart\\Modules\\Commands\\MigrationMakeCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/MigrationMakeCommand.php', - 'Nwidart\\Modules\\Commands\\ModelMakeCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/ModelMakeCommand.php', - 'Nwidart\\Modules\\Commands\\ModelPruneCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/ModelPruneCommand.php', - 'Nwidart\\Modules\\Commands\\ModelShowCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/ModelShowCommand.php', - 'Nwidart\\Modules\\Commands\\ModuleDeleteCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/ModuleDeleteCommand.php', - 'Nwidart\\Modules\\Commands\\ModuleMakeCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/ModuleMakeCommand.php', - 'Nwidart\\Modules\\Commands\\NotificationMakeCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/NotificationMakeCommand.php', - 'Nwidart\\Modules\\Commands\\ObserverMakeCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/ObserverMakeCommand.php', - 'Nwidart\\Modules\\Commands\\PolicyMakeCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/PolicyMakeCommand.php', - 'Nwidart\\Modules\\Commands\\ProviderMakeCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/ProviderMakeCommand.php', - 'Nwidart\\Modules\\Commands\\PublishCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/PublishCommand.php', - 'Nwidart\\Modules\\Commands\\PublishConfigurationCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/PublishConfigurationCommand.php', - 'Nwidart\\Modules\\Commands\\PublishMigrationCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/PublishMigrationCommand.php', - 'Nwidart\\Modules\\Commands\\PublishTranslationCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/PublishTranslationCommand.php', - 'Nwidart\\Modules\\Commands\\RequestMakeCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/RequestMakeCommand.php', - 'Nwidart\\Modules\\Commands\\ResourceMakeCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/ResourceMakeCommand.php', - 'Nwidart\\Modules\\Commands\\RouteProviderMakeCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/RouteProviderMakeCommand.php', - 'Nwidart\\Modules\\Commands\\RuleMakeCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/RuleMakeCommand.php', - 'Nwidart\\Modules\\Commands\\SeedCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/SeedCommand.php', - 'Nwidart\\Modules\\Commands\\SeedMakeCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/SeedMakeCommand.php', - 'Nwidart\\Modules\\Commands\\SetupCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/SetupCommand.php', - 'Nwidart\\Modules\\Commands\\TestMakeCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/TestMakeCommand.php', - 'Nwidart\\Modules\\Commands\\UnUseCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/UnUseCommand.php', - 'Nwidart\\Modules\\Commands\\UpdateCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/UpdateCommand.php', - 'Nwidart\\Modules\\Commands\\UseCommand' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Commands/UseCommand.php', - 'Nwidart\\Modules\\Contracts\\ActivatorInterface' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Contracts/ActivatorInterface.php', - 'Nwidart\\Modules\\Contracts\\PublisherInterface' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Contracts/PublisherInterface.php', - 'Nwidart\\Modules\\Contracts\\RepositoryInterface' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Contracts/RepositoryInterface.php', - 'Nwidart\\Modules\\Contracts\\RunableInterface' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Contracts/RunableInterface.php', - 'Nwidart\\Modules\\Exceptions\\FileAlreadyExistException' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Exceptions/FileAlreadyExistException.php', - 'Nwidart\\Modules\\Exceptions\\InvalidActivatorClass' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Exceptions/InvalidActivatorClass.php', - 'Nwidart\\Modules\\Exceptions\\InvalidAssetPath' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Exceptions/InvalidAssetPath.php', - 'Nwidart\\Modules\\Exceptions\\InvalidJsonException' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Exceptions/InvalidJsonException.php', - 'Nwidart\\Modules\\Exceptions\\ModuleNotFoundException' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Exceptions/ModuleNotFoundException.php', - 'Nwidart\\Modules\\Facades\\Module' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Facades/Module.php', - 'Nwidart\\Modules\\FileRepository' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/FileRepository.php', - 'Nwidart\\Modules\\Generators\\FileGenerator' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Generators/FileGenerator.php', - 'Nwidart\\Modules\\Generators\\Generator' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Generators/Generator.php', - 'Nwidart\\Modules\\Generators\\ModuleGenerator' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Generators/ModuleGenerator.php', - 'Nwidart\\Modules\\Json' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Json.php', - 'Nwidart\\Modules\\LaravelModulesServiceProvider' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/LaravelModulesServiceProvider.php', - 'Nwidart\\Modules\\Laravel\\LaravelFileRepository' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Laravel/LaravelFileRepository.php', - 'Nwidart\\Modules\\Laravel\\Module' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Laravel/Module.php', - 'Nwidart\\Modules\\LumenModulesServiceProvider' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/LumenModulesServiceProvider.php', - 'Nwidart\\Modules\\Lumen\\LumenFileRepository' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Lumen/LumenFileRepository.php', - 'Nwidart\\Modules\\Lumen\\Module' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Lumen/Module.php', - 'Nwidart\\Modules\\Migrations\\Migrator' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Migrations/Migrator.php', - 'Nwidart\\Modules\\Module' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Module.php', - 'Nwidart\\Modules\\ModulesServiceProvider' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/ModulesServiceProvider.php', - 'Nwidart\\Modules\\Process\\Installer' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Process/Installer.php', - 'Nwidart\\Modules\\Process\\Runner' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Process/Runner.php', - 'Nwidart\\Modules\\Process\\Updater' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Process/Updater.php', - 'Nwidart\\Modules\\Providers\\BootstrapServiceProvider' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Providers/BootstrapServiceProvider.php', - 'Nwidart\\Modules\\Providers\\ConsoleServiceProvider' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Providers/ConsoleServiceProvider.php', - 'Nwidart\\Modules\\Providers\\ContractsServiceProvider' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Providers/ContractsServiceProvider.php', - 'Nwidart\\Modules\\Publishing\\AssetPublisher' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Publishing/AssetPublisher.php', - 'Nwidart\\Modules\\Publishing\\LangPublisher' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Publishing/LangPublisher.php', - 'Nwidart\\Modules\\Publishing\\MigrationPublisher' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Publishing/MigrationPublisher.php', - 'Nwidart\\Modules\\Publishing\\Publisher' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Publishing/Publisher.php', - 'Nwidart\\Modules\\Routing\\Controller' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Routing/Controller.php', - 'Nwidart\\Modules\\Support\\Config\\GenerateConfigReader' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Support/Config/GenerateConfigReader.php', - 'Nwidart\\Modules\\Support\\Config\\GeneratorPath' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Support/Config/GeneratorPath.php', - 'Nwidart\\Modules\\Support\\Migrations\\NameParser' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Support/Migrations/NameParser.php', - 'Nwidart\\Modules\\Support\\Migrations\\SchemaParser' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Support/Migrations/SchemaParser.php', - 'Nwidart\\Modules\\Support\\Stub' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Support/Stub.php', - 'Nwidart\\Modules\\Traits\\CanClearModulesCache' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Traits/CanClearModulesCache.php', - 'Nwidart\\Modules\\Traits\\MigrationLoaderTrait' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Traits/MigrationLoaderTrait.php', - 'Nwidart\\Modules\\Traits\\ModuleCommandTrait' => __DIR__ . '/..' . '/nwidart/laravel-modules/src/Traits/ModuleCommandTrait.php', - 'Override' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/Override.php', - 'OwenIt\\Auditing\\Audit' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Audit.php', - 'OwenIt\\Auditing\\Auditable' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Auditable.php', - 'OwenIt\\Auditing\\AuditableObserver' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/AuditableObserver.php', - 'OwenIt\\Auditing\\AuditingServiceProvider' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/AuditingServiceProvider.php', - 'OwenIt\\Auditing\\Auditor' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Auditor.php', - 'OwenIt\\Auditing\\Console\\AuditDriverCommand' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Console/AuditDriverCommand.php', - 'OwenIt\\Auditing\\Console\\AuditResolverCommand' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Console/AuditResolverCommand.php', - 'OwenIt\\Auditing\\Console\\InstallCommand' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Console/InstallCommand.php', - 'OwenIt\\Auditing\\Contracts\\AttributeEncoder' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Contracts/AttributeEncoder.php', - 'OwenIt\\Auditing\\Contracts\\AttributeModifier' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Contracts/AttributeModifier.php', - 'OwenIt\\Auditing\\Contracts\\AttributeRedactor' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Contracts/AttributeRedactor.php', - 'OwenIt\\Auditing\\Contracts\\Audit' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Contracts/Audit.php', - 'OwenIt\\Auditing\\Contracts\\AuditDriver' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Contracts/AuditDriver.php', - 'OwenIt\\Auditing\\Contracts\\Auditable' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Contracts/Auditable.php', - 'OwenIt\\Auditing\\Contracts\\Auditor' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Contracts/Auditor.php', - 'OwenIt\\Auditing\\Contracts\\IpAddressResolver' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Contracts/IpAddressResolver.php', - 'OwenIt\\Auditing\\Contracts\\Resolver' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Contracts/Resolver.php', - 'OwenIt\\Auditing\\Contracts\\UrlResolver' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Contracts/UrlResolver.php', - 'OwenIt\\Auditing\\Contracts\\UserAgentResolver' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Contracts/UserAgentResolver.php', - 'OwenIt\\Auditing\\Contracts\\UserResolver' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Contracts/UserResolver.php', - 'OwenIt\\Auditing\\Drivers\\Database' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Drivers/Database.php', - 'OwenIt\\Auditing\\Encoders\\Base64Encoder' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Encoders/Base64Encoder.php', - 'OwenIt\\Auditing\\Events\\AuditCustom' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Events/AuditCustom.php', - 'OwenIt\\Auditing\\Events\\Audited' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Events/Audited.php', - 'OwenIt\\Auditing\\Events\\Auditing' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Events/Auditing.php', - 'OwenIt\\Auditing\\Events\\DispatchAudit' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Events/DispatchAudit.php', - 'OwenIt\\Auditing\\Events\\DispatchingAudit' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Events/DispatchingAudit.php', - 'OwenIt\\Auditing\\Exceptions\\AuditableTransitionException' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Exceptions/AuditableTransitionException.php', - 'OwenIt\\Auditing\\Exceptions\\AuditingException' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Exceptions/AuditingException.php', - 'OwenIt\\Auditing\\Facades\\Auditor' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Facades/Auditor.php', - 'OwenIt\\Auditing\\Listeners\\ProcessDispatchAudit' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Listeners/ProcessDispatchAudit.php', - 'OwenIt\\Auditing\\Listeners\\RecordCustomAudit' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Listeners/RecordCustomAudit.php', - 'OwenIt\\Auditing\\Models\\Audit' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Models/Audit.php', - 'OwenIt\\Auditing\\Redactors\\LeftRedactor' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Redactors/LeftRedactor.php', - 'OwenIt\\Auditing\\Redactors\\RightRedactor' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Redactors/RightRedactor.php', - 'OwenIt\\Auditing\\Resolvers\\DumpResolver' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Resolvers/DumpResolver.php', - 'OwenIt\\Auditing\\Resolvers\\IpAddressResolver' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Resolvers/IpAddressResolver.php', - 'OwenIt\\Auditing\\Resolvers\\UrlResolver' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Resolvers/UrlResolver.php', - 'OwenIt\\Auditing\\Resolvers\\UserAgentResolver' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Resolvers/UserAgentResolver.php', - 'OwenIt\\Auditing\\Resolvers\\UserResolver' => __DIR__ . '/..' . '/owen-it/laravel-auditing/src/Resolvers/UserResolver.php', - 'PHPUnit\\Event\\Application\\Finished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Application/Finished.php', - 'PHPUnit\\Event\\Application\\FinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Application/FinishedSubscriber.php', - 'PHPUnit\\Event\\Application\\Started' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Application/Started.php', - 'PHPUnit\\Event\\Application\\StartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Application/StartedSubscriber.php', - 'PHPUnit\\Event\\Code\\ClassMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/ClassMethod.php', - 'PHPUnit\\Event\\Code\\ComparisonFailure' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/ComparisonFailure.php', - 'PHPUnit\\Event\\Code\\ComparisonFailureBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/ComparisonFailureBuilder.php', - 'PHPUnit\\Event\\Code\\NoTestCaseObjectOnCallStackException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/NoTestCaseObjectOnCallStackException.php', - 'PHPUnit\\Event\\Code\\Phpt' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/Phpt.php', - 'PHPUnit\\Event\\Code\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/Test.php', - 'PHPUnit\\Event\\Code\\TestCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/TestCollection.php', - 'PHPUnit\\Event\\Code\\TestCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/TestCollectionIterator.php', - 'PHPUnit\\Event\\Code\\TestDox' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/TestDox.php', - 'PHPUnit\\Event\\Code\\TestDoxBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/TestDoxBuilder.php', - 'PHPUnit\\Event\\Code\\TestMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/TestMethod.php', - 'PHPUnit\\Event\\Code\\TestMethodBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/TestMethodBuilder.php', - 'PHPUnit\\Event\\Code\\Throwable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Throwable.php', - 'PHPUnit\\Event\\Code\\ThrowableBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/ThrowableBuilder.php', - 'PHPUnit\\Event\\CollectingDispatcher' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Dispatcher/CollectingDispatcher.php', - 'PHPUnit\\Event\\DeferringDispatcher' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php', - 'PHPUnit\\Event\\DirectDispatcher' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php', - 'PHPUnit\\Event\\Dispatcher' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Dispatcher/Dispatcher.php', - 'PHPUnit\\Event\\DispatchingEmitter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php', - 'PHPUnit\\Event\\Emitter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Emitter/Emitter.php', - 'PHPUnit\\Event\\Event' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Event.php', - 'PHPUnit\\Event\\EventAlreadyAssignedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/EventAlreadyAssignedException.php', - 'PHPUnit\\Event\\EventCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/EventCollection.php', - 'PHPUnit\\Event\\EventCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/EventCollectionIterator.php', - 'PHPUnit\\Event\\EventFacadeIsSealedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/EventFacadeIsSealedException.php', - 'PHPUnit\\Event\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/Exception.php', - 'PHPUnit\\Event\\Facade' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Facade.php', - 'PHPUnit\\Event\\InvalidArgumentException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/InvalidArgumentException.php', - 'PHPUnit\\Event\\InvalidEventException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/InvalidEventException.php', - 'PHPUnit\\Event\\InvalidSubscriberException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/InvalidSubscriberException.php', - 'PHPUnit\\Event\\MapError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/MapError.php', - 'PHPUnit\\Event\\NoPreviousThrowableException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/NoPreviousThrowableException.php', - 'PHPUnit\\Event\\RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/RuntimeException.php', - 'PHPUnit\\Event\\Runtime\\OperatingSystem' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Runtime/OperatingSystem.php', - 'PHPUnit\\Event\\Runtime\\PHP' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Runtime/PHP.php', - 'PHPUnit\\Event\\Runtime\\PHPUnit' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Runtime/PHPUnit.php', - 'PHPUnit\\Event\\Runtime\\Runtime' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Runtime/Runtime.php', - 'PHPUnit\\Event\\SubscribableDispatcher' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Dispatcher/SubscribableDispatcher.php', - 'PHPUnit\\Event\\Subscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Subscriber.php', - 'PHPUnit\\Event\\SubscriberTypeAlreadyRegisteredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/SubscriberTypeAlreadyRegisteredException.php', - 'PHPUnit\\Event\\Telemetry\\Duration' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/Duration.php', - 'PHPUnit\\Event\\Telemetry\\GarbageCollectorStatus' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/GarbageCollectorStatus.php', - 'PHPUnit\\Event\\Telemetry\\GarbageCollectorStatusProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/GarbageCollectorStatusProvider.php', - 'PHPUnit\\Event\\Telemetry\\HRTime' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/HRTime.php', - 'PHPUnit\\Event\\Telemetry\\Info' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/Info.php', - 'PHPUnit\\Event\\Telemetry\\MemoryMeter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/MemoryMeter.php', - 'PHPUnit\\Event\\Telemetry\\MemoryUsage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/MemoryUsage.php', - 'PHPUnit\\Event\\Telemetry\\Php81GarbageCollectorStatusProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/Php81GarbageCollectorStatusProvider.php', - 'PHPUnit\\Event\\Telemetry\\Php83GarbageCollectorStatusProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/Php83GarbageCollectorStatusProvider.php', - 'PHPUnit\\Event\\Telemetry\\Snapshot' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/Snapshot.php', - 'PHPUnit\\Event\\Telemetry\\StopWatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/StopWatch.php', - 'PHPUnit\\Event\\Telemetry\\System' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/System.php', - 'PHPUnit\\Event\\Telemetry\\SystemMemoryMeter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/SystemMemoryMeter.php', - 'PHPUnit\\Event\\Telemetry\\SystemStopWatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/SystemStopWatch.php', - 'PHPUnit\\Event\\Telemetry\\SystemStopWatchWithOffset' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/SystemStopWatchWithOffset.php', - 'PHPUnit\\Event\\TestData\\DataFromDataProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/TestData/DataFromDataProvider.php', - 'PHPUnit\\Event\\TestData\\DataFromTestDependency' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/TestData/DataFromTestDependency.php', - 'PHPUnit\\Event\\TestData\\MoreThanOneDataSetFromDataProviderException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/MoreThanOneDataSetFromDataProviderException.php', - 'PHPUnit\\Event\\TestData\\NoDataSetFromDataProviderException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/NoDataSetFromDataProviderException.php', - 'PHPUnit\\Event\\TestData\\TestData' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/TestData/TestData.php', - 'PHPUnit\\Event\\TestData\\TestDataCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/TestData/TestDataCollection.php', - 'PHPUnit\\Event\\TestData\\TestDataCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/TestData/TestDataCollectionIterator.php', - 'PHPUnit\\Event\\TestRunner\\BootstrapFinished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/BootstrapFinished.php', - 'PHPUnit\\Event\\TestRunner\\BootstrapFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/BootstrapFinishedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\Configured' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/Configured.php', - 'PHPUnit\\Event\\TestRunner\\ConfiguredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ConfiguredSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\DeprecationTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/DeprecationTriggered.php', - 'PHPUnit\\Event\\TestRunner\\DeprecationTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/DeprecationTriggeredSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\EventFacadeSealed' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/EventFacadeSealed.php', - 'PHPUnit\\Event\\TestRunner\\EventFacadeSealedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/EventFacadeSealedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\ExecutionAborted' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionAborted.php', - 'PHPUnit\\Event\\TestRunner\\ExecutionAbortedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionAbortedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\ExecutionFinished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionFinished.php', - 'PHPUnit\\Event\\TestRunner\\ExecutionFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionFinishedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\ExecutionStarted' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionStarted.php', - 'PHPUnit\\Event\\TestRunner\\ExecutionStartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionStartedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\ExtensionBootstrapped' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ExtensionBootstrapped.php', - 'PHPUnit\\Event\\TestRunner\\ExtensionBootstrappedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ExtensionBootstrappedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\ExtensionLoadedFromPhar' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ExtensionLoadedFromPhar.php', - 'PHPUnit\\Event\\TestRunner\\ExtensionLoadedFromPharSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ExtensionLoadedFromPharSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\Finished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/Finished.php', - 'PHPUnit\\Event\\TestRunner\\FinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/FinishedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\GarbageCollectionDisabled' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionDisabled.php', - 'PHPUnit\\Event\\TestRunner\\GarbageCollectionDisabledSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionDisabledSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\GarbageCollectionEnabled' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionEnabled.php', - 'PHPUnit\\Event\\TestRunner\\GarbageCollectionEnabledSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionEnabledSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\GarbageCollectionTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionTriggered.php', - 'PHPUnit\\Event\\TestRunner\\GarbageCollectionTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionTriggeredSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\Started' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/Started.php', - 'PHPUnit\\Event\\TestRunner\\StartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/StartedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\WarningTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/WarningTriggered.php', - 'PHPUnit\\Event\\TestRunner\\WarningTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/WarningTriggeredSubscriber.php', - 'PHPUnit\\Event\\TestSuite\\Filtered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestSuite/Filtered.php', - 'PHPUnit\\Event\\TestSuite\\FilteredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestSuite/FilteredSubscriber.php', - 'PHPUnit\\Event\\TestSuite\\Finished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestSuite/Finished.php', - 'PHPUnit\\Event\\TestSuite\\FinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestSuite/FinishedSubscriber.php', - 'PHPUnit\\Event\\TestSuite\\Loaded' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestSuite/Loaded.php', - 'PHPUnit\\Event\\TestSuite\\LoadedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestSuite/LoadedSubscriber.php', - 'PHPUnit\\Event\\TestSuite\\Skipped' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestSuite/Skipped.php', - 'PHPUnit\\Event\\TestSuite\\SkippedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestSuite/SkippedSubscriber.php', - 'PHPUnit\\Event\\TestSuite\\Sorted' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestSuite/Sorted.php', - 'PHPUnit\\Event\\TestSuite\\SortedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestSuite/SortedSubscriber.php', - 'PHPUnit\\Event\\TestSuite\\Started' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestSuite/Started.php', - 'PHPUnit\\Event\\TestSuite\\StartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestSuite/StartedSubscriber.php', - 'PHPUnit\\Event\\TestSuite\\TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/TestSuite/TestSuite.php', - 'PHPUnit\\Event\\TestSuite\\TestSuiteBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/TestSuite/TestSuiteBuilder.php', - 'PHPUnit\\Event\\TestSuite\\TestSuiteForTestClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/TestSuite/TestSuiteForTestClass.php', - 'PHPUnit\\Event\\TestSuite\\TestSuiteForTestMethodWithDataProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/TestSuite/TestSuiteForTestMethodWithDataProvider.php', - 'PHPUnit\\Event\\TestSuite\\TestSuiteWithName' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/TestSuite/TestSuiteWithName.php', - 'PHPUnit\\Event\\Test\\AfterLastTestMethodCalled' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodCalled.php', - 'PHPUnit\\Event\\Test\\AfterLastTestMethodCalledSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodCalledSubscriber.php', - 'PHPUnit\\Event\\Test\\AfterLastTestMethodFinished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodFinished.php', - 'PHPUnit\\Event\\Test\\AfterLastTestMethodFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodFinishedSubscriber.php', - 'PHPUnit\\Event\\Test\\AfterTestMethodCalled' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodCalled.php', - 'PHPUnit\\Event\\Test\\AfterTestMethodCalledSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodCalledSubscriber.php', - 'PHPUnit\\Event\\Test\\AfterTestMethodFinished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodFinished.php', - 'PHPUnit\\Event\\Test\\AfterTestMethodFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodFinishedSubscriber.php', - 'PHPUnit\\Event\\Test\\AssertionFailed' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Assertion/AssertionFailed.php', - 'PHPUnit\\Event\\Test\\AssertionFailedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Assertion/AssertionFailedSubscriber.php', - 'PHPUnit\\Event\\Test\\AssertionSucceeded' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Assertion/AssertionSucceeded.php', - 'PHPUnit\\Event\\Test\\AssertionSucceededSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Assertion/AssertionSucceededSubscriber.php', - 'PHPUnit\\Event\\Test\\BeforeFirstTestMethodCalled' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodCalled.php', - 'PHPUnit\\Event\\Test\\BeforeFirstTestMethodCalledSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodCalledSubscriber.php', - 'PHPUnit\\Event\\Test\\BeforeFirstTestMethodErrored' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodErrored.php', - 'PHPUnit\\Event\\Test\\BeforeFirstTestMethodErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodErroredSubscriber.php', - 'PHPUnit\\Event\\Test\\BeforeFirstTestMethodFinished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodFinished.php', - 'PHPUnit\\Event\\Test\\BeforeFirstTestMethodFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodFinishedSubscriber.php', - 'PHPUnit\\Event\\Test\\BeforeTestMethodCalled' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodCalled.php', - 'PHPUnit\\Event\\Test\\BeforeTestMethodCalledSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodCalledSubscriber.php', - 'PHPUnit\\Event\\Test\\BeforeTestMethodFinished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodFinished.php', - 'PHPUnit\\Event\\Test\\BeforeTestMethodFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodFinishedSubscriber.php', - 'PHPUnit\\Event\\Test\\ComparatorRegistered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/ComparatorRegistered.php', - 'PHPUnit\\Event\\Test\\ComparatorRegisteredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/ComparatorRegisteredSubscriber.php', - 'PHPUnit\\Event\\Test\\ConsideredRisky' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/ConsideredRisky.php', - 'PHPUnit\\Event\\Test\\ConsideredRiskySubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/ConsideredRiskySubscriber.php', - 'PHPUnit\\Event\\Test\\DataProviderMethodCalled' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodCalled.php', - 'PHPUnit\\Event\\Test\\DataProviderMethodCalledSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodCalledSubscriber.php', - 'PHPUnit\\Event\\Test\\DataProviderMethodFinished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodFinished.php', - 'PHPUnit\\Event\\Test\\DataProviderMethodFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodFinishedSubscriber.php', - 'PHPUnit\\Event\\Test\\DeprecationTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/DeprecationTriggered.php', - 'PHPUnit\\Event\\Test\\DeprecationTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/DeprecationTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\ErrorTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/ErrorTriggered.php', - 'PHPUnit\\Event\\Test\\ErrorTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/ErrorTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\Errored' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Outcome/Errored.php', - 'PHPUnit\\Event\\Test\\ErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Outcome/ErroredSubscriber.php', - 'PHPUnit\\Event\\Test\\Failed' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Outcome/Failed.php', - 'PHPUnit\\Event\\Test\\FailedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Outcome/FailedSubscriber.php', - 'PHPUnit\\Event\\Test\\Finished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/Finished.php', - 'PHPUnit\\Event\\Test\\FinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/FinishedSubscriber.php', - 'PHPUnit\\Event\\Test\\MarkedIncomplete' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Outcome/MarkedIncomplete.php', - 'PHPUnit\\Event\\Test\\MarkedIncompleteSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Outcome/MarkedIncompleteSubscriber.php', - 'PHPUnit\\Event\\Test\\MockObjectCreated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectCreated.php', - 'PHPUnit\\Event\\Test\\MockObjectCreatedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\MockObjectForAbstractClassCreated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForAbstractClassCreated.php', - 'PHPUnit\\Event\\Test\\MockObjectForAbstractClassCreatedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForAbstractClassCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\MockObjectForIntersectionOfInterfacesCreated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForIntersectionOfInterfacesCreated.php', - 'PHPUnit\\Event\\Test\\MockObjectForIntersectionOfInterfacesCreatedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForIntersectionOfInterfacesCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\MockObjectForTraitCreated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForTraitCreated.php', - 'PHPUnit\\Event\\Test\\MockObjectForTraitCreatedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForTraitCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\MockObjectFromWsdlCreated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectFromWsdlCreated.php', - 'PHPUnit\\Event\\Test\\MockObjectFromWsdlCreatedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectFromWsdlCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\NoComparisonFailureException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/NoComparisonFailureException.php', - 'PHPUnit\\Event\\Test\\NoticeTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/NoticeTriggered.php', - 'PHPUnit\\Event\\Test\\NoticeTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/NoticeTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\PartialMockObjectCreated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/PartialMockObjectCreated.php', - 'PHPUnit\\Event\\Test\\PartialMockObjectCreatedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/PartialMockObjectCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\Passed' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Outcome/Passed.php', - 'PHPUnit\\Event\\Test\\PassedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Outcome/PassedSubscriber.php', - 'PHPUnit\\Event\\Test\\PhpDeprecationTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpDeprecationTriggered.php', - 'PHPUnit\\Event\\Test\\PhpDeprecationTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpDeprecationTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\PhpNoticeTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpNoticeTriggered.php', - 'PHPUnit\\Event\\Test\\PhpNoticeTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpNoticeTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\PhpWarningTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpWarningTriggered.php', - 'PHPUnit\\Event\\Test\\PhpWarningTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpWarningTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\PhpunitDeprecationTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitDeprecationTriggered.php', - 'PHPUnit\\Event\\Test\\PhpunitDeprecationTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitDeprecationTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\PhpunitErrorTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitErrorTriggered.php', - 'PHPUnit\\Event\\Test\\PhpunitErrorTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitErrorTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\PhpunitWarningTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitWarningTriggered.php', - 'PHPUnit\\Event\\Test\\PhpunitWarningTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitWarningTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\PostConditionCalled' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionCalled.php', - 'PHPUnit\\Event\\Test\\PostConditionCalledSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionCalledSubscriber.php', - 'PHPUnit\\Event\\Test\\PostConditionFinished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionFinished.php', - 'PHPUnit\\Event\\Test\\PostConditionFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionFinishedSubscriber.php', - 'PHPUnit\\Event\\Test\\PreConditionCalled' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionCalled.php', - 'PHPUnit\\Event\\Test\\PreConditionCalledSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionCalledSubscriber.php', - 'PHPUnit\\Event\\Test\\PreConditionFinished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionFinished.php', - 'PHPUnit\\Event\\Test\\PreConditionFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionFinishedSubscriber.php', - 'PHPUnit\\Event\\Test\\PreparationFailed' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/PreparationFailed.php', - 'PHPUnit\\Event\\Test\\PreparationFailedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/PreparationFailedSubscriber.php', - 'PHPUnit\\Event\\Test\\PreparationStarted' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/PreparationStarted.php', - 'PHPUnit\\Event\\Test\\PreparationStartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/PreparationStartedSubscriber.php', - 'PHPUnit\\Event\\Test\\Prepared' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/Prepared.php', - 'PHPUnit\\Event\\Test\\PreparedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/PreparedSubscriber.php', - 'PHPUnit\\Event\\Test\\PrintedUnexpectedOutput' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/PrintedUnexpectedOutput.php', - 'PHPUnit\\Event\\Test\\PrintedUnexpectedOutputSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/PrintedUnexpectedOutputSubscriber.php', - 'PHPUnit\\Event\\Test\\Skipped' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Outcome/Skipped.php', - 'PHPUnit\\Event\\Test\\SkippedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Outcome/SkippedSubscriber.php', - 'PHPUnit\\Event\\Test\\TestProxyCreated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestProxyCreated.php', - 'PHPUnit\\Event\\Test\\TestProxyCreatedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestProxyCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\TestStubCreated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubCreated.php', - 'PHPUnit\\Event\\Test\\TestStubCreatedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\TestStubForIntersectionOfInterfacesCreated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubForIntersectionOfInterfacesCreated.php', - 'PHPUnit\\Event\\Test\\TestStubForIntersectionOfInterfacesCreatedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubForIntersectionOfInterfacesCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\WarningTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/WarningTriggered.php', - 'PHPUnit\\Event\\Test\\WarningTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/WarningTriggeredSubscriber.php', - 'PHPUnit\\Event\\Tracer\\Tracer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Tracer.php', - 'PHPUnit\\Event\\TypeMap' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/TypeMap.php', - 'PHPUnit\\Event\\UnknownEventException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/UnknownEventException.php', - 'PHPUnit\\Event\\UnknownEventTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/UnknownEventTypeException.php', - 'PHPUnit\\Event\\UnknownSubscriberException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/UnknownSubscriberException.php', - 'PHPUnit\\Event\\UnknownSubscriberTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/UnknownSubscriberTypeException.php', - 'PHPUnit\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Exception.php', - 'PHPUnit\\Framework\\ActualValueIsNotAnObjectException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ActualValueIsNotAnObjectException.php', - 'PHPUnit\\Framework\\Assert' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert.php', - 'PHPUnit\\Framework\\AssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/AssertionFailedError.php', - 'PHPUnit\\Framework\\Attributes\\After' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/After.php', - 'PHPUnit\\Framework\\Attributes\\AfterClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/AfterClass.php', - 'PHPUnit\\Framework\\Attributes\\BackupGlobals' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/BackupGlobals.php', - 'PHPUnit\\Framework\\Attributes\\BackupStaticProperties' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/BackupStaticProperties.php', - 'PHPUnit\\Framework\\Attributes\\Before' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/Before.php', - 'PHPUnit\\Framework\\Attributes\\BeforeClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/BeforeClass.php', - 'PHPUnit\\Framework\\Attributes\\CodeCoverageIgnore' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/CodeCoverageIgnore.php', - 'PHPUnit\\Framework\\Attributes\\CoversClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/CoversClass.php', - 'PHPUnit\\Framework\\Attributes\\CoversFunction' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/CoversFunction.php', - 'PHPUnit\\Framework\\Attributes\\CoversNothing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/CoversNothing.php', - 'PHPUnit\\Framework\\Attributes\\DataProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/DataProvider.php', - 'PHPUnit\\Framework\\Attributes\\DataProviderExternal' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/DataProviderExternal.php', - 'PHPUnit\\Framework\\Attributes\\Depends' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/Depends.php', - 'PHPUnit\\Framework\\Attributes\\DependsExternal' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/DependsExternal.php', - 'PHPUnit\\Framework\\Attributes\\DependsExternalUsingDeepClone' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/DependsExternalUsingDeepClone.php', - 'PHPUnit\\Framework\\Attributes\\DependsExternalUsingShallowClone' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/DependsExternalUsingShallowClone.php', - 'PHPUnit\\Framework\\Attributes\\DependsOnClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/DependsOnClass.php', - 'PHPUnit\\Framework\\Attributes\\DependsOnClassUsingDeepClone' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/DependsOnClassUsingDeepClone.php', - 'PHPUnit\\Framework\\Attributes\\DependsOnClassUsingShallowClone' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/DependsOnClassUsingShallowClone.php', - 'PHPUnit\\Framework\\Attributes\\DependsUsingDeepClone' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/DependsUsingDeepClone.php', - 'PHPUnit\\Framework\\Attributes\\DependsUsingShallowClone' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/DependsUsingShallowClone.php', - 'PHPUnit\\Framework\\Attributes\\DoesNotPerformAssertions' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/DoesNotPerformAssertions.php', - 'PHPUnit\\Framework\\Attributes\\ExcludeGlobalVariableFromBackup' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/ExcludeGlobalVariableFromBackup.php', - 'PHPUnit\\Framework\\Attributes\\ExcludeStaticPropertyFromBackup' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/ExcludeStaticPropertyFromBackup.php', - 'PHPUnit\\Framework\\Attributes\\Group' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/Group.php', - 'PHPUnit\\Framework\\Attributes\\IgnoreClassForCodeCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/IgnoreClassForCodeCoverage.php', - 'PHPUnit\\Framework\\Attributes\\IgnoreDeprecations' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/IgnoreDeprecations.php', - 'PHPUnit\\Framework\\Attributes\\IgnoreFunctionForCodeCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/IgnoreFunctionForCodeCoverage.php', - 'PHPUnit\\Framework\\Attributes\\IgnoreMethodForCodeCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/IgnoreMethodForCodeCoverage.php', - 'PHPUnit\\Framework\\Attributes\\Large' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/Large.php', - 'PHPUnit\\Framework\\Attributes\\Medium' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/Medium.php', - 'PHPUnit\\Framework\\Attributes\\PostCondition' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/PostCondition.php', - 'PHPUnit\\Framework\\Attributes\\PreCondition' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/PreCondition.php', - 'PHPUnit\\Framework\\Attributes\\PreserveGlobalState' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/PreserveGlobalState.php', - 'PHPUnit\\Framework\\Attributes\\RequiresFunction' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/RequiresFunction.php', - 'PHPUnit\\Framework\\Attributes\\RequiresMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/RequiresMethod.php', - 'PHPUnit\\Framework\\Attributes\\RequiresOperatingSystem' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/RequiresOperatingSystem.php', - 'PHPUnit\\Framework\\Attributes\\RequiresOperatingSystemFamily' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/RequiresOperatingSystemFamily.php', - 'PHPUnit\\Framework\\Attributes\\RequiresPhp' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/RequiresPhp.php', - 'PHPUnit\\Framework\\Attributes\\RequiresPhpExtension' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/RequiresPhpExtension.php', - 'PHPUnit\\Framework\\Attributes\\RequiresPhpunit' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/RequiresPhpunit.php', - 'PHPUnit\\Framework\\Attributes\\RequiresSetting' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/RequiresSetting.php', - 'PHPUnit\\Framework\\Attributes\\RunClassInSeparateProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/RunClassInSeparateProcess.php', - 'PHPUnit\\Framework\\Attributes\\RunInSeparateProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/RunInSeparateProcess.php', - 'PHPUnit\\Framework\\Attributes\\RunTestsInSeparateProcesses' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/RunTestsInSeparateProcesses.php', - 'PHPUnit\\Framework\\Attributes\\Small' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/Small.php', - 'PHPUnit\\Framework\\Attributes\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/Test.php', - 'PHPUnit\\Framework\\Attributes\\TestDox' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/TestDox.php', - 'PHPUnit\\Framework\\Attributes\\TestWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/TestWith.php', - 'PHPUnit\\Framework\\Attributes\\TestWithJson' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/TestWithJson.php', - 'PHPUnit\\Framework\\Attributes\\Ticket' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/Ticket.php', - 'PHPUnit\\Framework\\Attributes\\UsesClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/UsesClass.php', - 'PHPUnit\\Framework\\Attributes\\UsesFunction' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/UsesFunction.php', - 'PHPUnit\\Framework\\Attributes\\WithoutErrorHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/WithoutErrorHandler.php', - 'PHPUnit\\Framework\\CodeCoverageException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/CodeCoverageException.php', - 'PHPUnit\\Framework\\ComparisonMethodDoesNotAcceptParameterTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotAcceptParameterTypeException.php', - 'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareBoolReturnTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareBoolReturnTypeException.php', - 'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareExactlyOneParameterException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareExactlyOneParameterException.php', - 'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareParameterTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareParameterTypeException.php', - 'PHPUnit\\Framework\\ComparisonMethodDoesNotExistException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotExistException.php', - 'PHPUnit\\Framework\\Constraint\\ArrayHasKey' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Traversable/ArrayHasKey.php', - 'PHPUnit\\Framework\\Constraint\\BinaryOperator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/BinaryOperator.php', - 'PHPUnit\\Framework\\Constraint\\Callback' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Callback.php', - 'PHPUnit\\Framework\\Constraint\\Constraint' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Constraint.php', - 'PHPUnit\\Framework\\Constraint\\Count' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/Count.php', - 'PHPUnit\\Framework\\Constraint\\DirectoryExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/DirectoryExists.php', - 'PHPUnit\\Framework\\Constraint\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception/Exception.php', - 'PHPUnit\\Framework\\Constraint\\ExceptionCode' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionCode.php', - 'PHPUnit\\Framework\\Constraint\\ExceptionMessageIsOrContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageIsOrContains.php', - 'PHPUnit\\Framework\\Constraint\\ExceptionMessageMatchesRegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageMatchesRegularExpression.php', - 'PHPUnit\\Framework\\Constraint\\FileExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/FileExists.php', - 'PHPUnit\\Framework\\Constraint\\GreaterThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/GreaterThan.php', - 'PHPUnit\\Framework\\Constraint\\IsAnything' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php', - 'PHPUnit\\Framework\\Constraint\\IsEmpty' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/IsEmpty.php', - 'PHPUnit\\Framework\\Constraint\\IsEqual' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqual.php', - 'PHPUnit\\Framework\\Constraint\\IsEqualCanonicalizing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualCanonicalizing.php', - 'PHPUnit\\Framework\\Constraint\\IsEqualIgnoringCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualIgnoringCase.php', - 'PHPUnit\\Framework\\Constraint\\IsEqualWithDelta' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualWithDelta.php', - 'PHPUnit\\Framework\\Constraint\\IsFalse' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Boolean/IsFalse.php', - 'PHPUnit\\Framework\\Constraint\\IsFinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Math/IsFinite.php', - 'PHPUnit\\Framework\\Constraint\\IsIdentical' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php', - 'PHPUnit\\Framework\\Constraint\\IsInfinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Math/IsInfinite.php', - 'PHPUnit\\Framework\\Constraint\\IsInstanceOf' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Type/IsInstanceOf.php', - 'PHPUnit\\Framework\\Constraint\\IsJson' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/IsJson.php', - 'PHPUnit\\Framework\\Constraint\\IsList' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Traversable/IsList.php', - 'PHPUnit\\Framework\\Constraint\\IsNan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Math/IsNan.php', - 'PHPUnit\\Framework\\Constraint\\IsNull' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Type/IsNull.php', - 'PHPUnit\\Framework\\Constraint\\IsReadable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsReadable.php', - 'PHPUnit\\Framework\\Constraint\\IsTrue' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Boolean/IsTrue.php', - 'PHPUnit\\Framework\\Constraint\\IsType' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Type/IsType.php', - 'PHPUnit\\Framework\\Constraint\\IsWritable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsWritable.php', - 'PHPUnit\\Framework\\Constraint\\JsonMatches' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php', - 'PHPUnit\\Framework\\Constraint\\LessThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/LessThan.php', - 'PHPUnit\\Framework\\Constraint\\LogicalAnd' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalAnd.php', - 'PHPUnit\\Framework\\Constraint\\LogicalNot' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalNot.php', - 'PHPUnit\\Framework\\Constraint\\LogicalOr' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalOr.php', - 'PHPUnit\\Framework\\Constraint\\LogicalXor' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalXor.php', - 'PHPUnit\\Framework\\Constraint\\ObjectEquals' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Object/ObjectEquals.php', - 'PHPUnit\\Framework\\Constraint\\ObjectHasProperty' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Object/ObjectHasProperty.php', - 'PHPUnit\\Framework\\Constraint\\Operator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/Operator.php', - 'PHPUnit\\Framework\\Constraint\\RegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/RegularExpression.php', - 'PHPUnit\\Framework\\Constraint\\SameSize' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/SameSize.php', - 'PHPUnit\\Framework\\Constraint\\StringContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/StringContains.php', - 'PHPUnit\\Framework\\Constraint\\StringEndsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/StringEndsWith.php', - 'PHPUnit\\Framework\\Constraint\\StringEqualsStringIgnoringLineEndings' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/StringEqualsStringIgnoringLineEndings.php', - 'PHPUnit\\Framework\\Constraint\\StringMatchesFormatDescription' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/StringMatchesFormatDescription.php', - 'PHPUnit\\Framework\\Constraint\\StringStartsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/StringStartsWith.php', - 'PHPUnit\\Framework\\Constraint\\TraversableContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContains.php', - 'PHPUnit\\Framework\\Constraint\\TraversableContainsEqual' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsEqual.php', - 'PHPUnit\\Framework\\Constraint\\TraversableContainsIdentical' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsIdentical.php', - 'PHPUnit\\Framework\\Constraint\\TraversableContainsOnly' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsOnly.php', - 'PHPUnit\\Framework\\Constraint\\UnaryOperator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/UnaryOperator.php', - 'PHPUnit\\Framework\\DataProviderTestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/DataProviderTestSuite.php', - 'PHPUnit\\Framework\\EmptyStringException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/EmptyStringException.php', - 'PHPUnit\\Framework\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/Exception.php', - 'PHPUnit\\Framework\\ExecutionOrderDependency' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExecutionOrderDependency.php', - 'PHPUnit\\Framework\\ExpectationFailedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ExpectationFailedException.php', - 'PHPUnit\\Framework\\GeneratorNotSupportedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/GeneratorNotSupportedException.php', - 'PHPUnit\\Framework\\IncompleteTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/Incomplete/IncompleteTest.php', - 'PHPUnit\\Framework\\IncompleteTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/Incomplete/IncompleteTestError.php', - 'PHPUnit\\Framework\\InvalidArgumentException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/InvalidArgumentException.php', - 'PHPUnit\\Framework\\InvalidCoversTargetException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/InvalidCoversTargetException.php', - 'PHPUnit\\Framework\\InvalidDataProviderException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/InvalidDataProviderException.php', - 'PHPUnit\\Framework\\InvalidDependencyException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/InvalidDependencyException.php', - 'PHPUnit\\Framework\\MockObject\\BadMethodCallException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/BadMethodCallException.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\Identity' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/Identity.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/InvocationMocker.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\InvocationStubber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/InvocationStubber.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\MethodNameMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/MethodNameMatch.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\ParametersMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/ParametersMatch.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/Stub.php', - 'PHPUnit\\Framework\\MockObject\\CannotUseOnlyMethodsException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php', - 'PHPUnit\\Framework\\MockObject\\ConfigurableMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/ConfigurableMethod.php', - 'PHPUnit\\Framework\\MockObject\\DoubledCloneMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/DoubledCloneMethod.php', - 'PHPUnit\\Framework\\MockObject\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/Exception.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\CannotUseAddMethodsException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/CannotUseAddMethodsException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\ClassIsEnumerationException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ClassIsEnumerationException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\ClassIsFinalException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ClassIsFinalException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\ClassIsReadonlyException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ClassIsReadonlyException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\DuplicateMethodException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/DuplicateMethodException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/Exception.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\Generator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Generator.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\InvalidMethodNameException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/InvalidMethodNameException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\MockClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockClass.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\MockMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockMethod.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\MockMethodSet' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockMethodSet.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\MockTrait' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockTrait.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\MockType' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockType.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\NameAlreadyInUseException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/NameAlreadyInUseException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\OriginalConstructorInvocationRequiredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/OriginalConstructorInvocationRequiredException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\ReflectionException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ReflectionException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/RuntimeException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\SoapExtensionNotAvailableException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/SoapExtensionNotAvailableException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\TemplateLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/TemplateLoader.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\UnknownClassException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownClassException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\UnknownTraitException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownTraitException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\UnknownTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownTypeException.php', - 'PHPUnit\\Framework\\MockObject\\IncompatibleReturnValueException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php', - 'PHPUnit\\Framework\\MockObject\\Invocation' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Invocation.php', - 'PHPUnit\\Framework\\MockObject\\InvocationHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/InvocationHandler.php', - 'PHPUnit\\Framework\\MockObject\\MatchBuilderNotFoundException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MatchBuilderNotFoundException.php', - 'PHPUnit\\Framework\\MockObject\\Matcher' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Matcher.php', - 'PHPUnit\\Framework\\MockObject\\MatcherAlreadyRegisteredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MatcherAlreadyRegisteredException.php', - 'PHPUnit\\Framework\\MockObject\\Method' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/Method.php', - 'PHPUnit\\Framework\\MockObject\\MethodCannotBeConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodCannotBeConfiguredException.php', - 'PHPUnit\\Framework\\MockObject\\MethodNameAlreadyConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameAlreadyConfiguredException.php', - 'PHPUnit\\Framework\\MockObject\\MethodNameConstraint' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/MethodNameConstraint.php', - 'PHPUnit\\Framework\\MockObject\\MethodNameNotConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameNotConfiguredException.php', - 'PHPUnit\\Framework\\MockObject\\MethodParametersAlreadyConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodParametersAlreadyConfiguredException.php', - 'PHPUnit\\Framework\\MockObject\\MockBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php', - 'PHPUnit\\Framework\\MockObject\\MockObject' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/MockObject.php', - 'PHPUnit\\Framework\\MockObject\\MockObjectApi' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/MockObjectApi.php', - 'PHPUnit\\Framework\\MockObject\\MockObjectInternal' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/MockObjectInternal.php', - 'PHPUnit\\Framework\\MockObject\\NeverReturningMethodException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/NeverReturningMethodException.php', - 'PHPUnit\\Framework\\MockObject\\NoMoreReturnValuesConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/NoMoreReturnValuesConfiguredException.php', - 'PHPUnit\\Framework\\MockObject\\ProxiedCloneMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/ProxiedCloneMethod.php', - 'PHPUnit\\Framework\\MockObject\\ReturnValueGenerator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/ReturnValueGenerator.php', - 'PHPUnit\\Framework\\MockObject\\ReturnValueNotConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\AnyInvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/AnyInvokedCount.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\AnyParameters' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/AnyParameters.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\InvocationOrder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvocationOrder.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtLeastCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedAtLeastCount.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtLeastOnce' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedAtLeastOnce.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtMostCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedAtMostCount.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedCount.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\MethodName' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/MethodName.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\Parameters' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/Parameters.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\ParametersRule' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/ParametersRule.php', - 'PHPUnit\\Framework\\MockObject\\RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/RuntimeException.php', - 'PHPUnit\\Framework\\MockObject\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/Stub.php', - 'PHPUnit\\Framework\\MockObject\\StubApi' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/StubApi.php', - 'PHPUnit\\Framework\\MockObject\\StubInternal' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/StubInternal.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ConsecutiveCalls' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ConsecutiveCalls.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/Exception.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnArgument' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnArgument.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnCallback' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnCallback.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnReference' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnReference.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnSelf' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnSelf.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnStub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnStub.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnValueMap' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnValueMap.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/Stub.php', - 'PHPUnit\\Framework\\NoChildTestSuiteException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/NoChildTestSuiteException.php', - 'PHPUnit\\Framework\\PhptAssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/PhptAssertionFailedError.php', - 'PHPUnit\\Framework\\ProcessIsolationException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ProcessIsolationException.php', - 'PHPUnit\\Framework\\Reorderable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Reorderable.php', - 'PHPUnit\\Framework\\SelfDescribing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SelfDescribing.php', - 'PHPUnit\\Framework\\SkippedTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/Skipped/SkippedTest.php', - 'PHPUnit\\Framework\\SkippedTestSuiteError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/Skipped/SkippedTestSuiteError.php', - 'PHPUnit\\Framework\\SkippedWithMessageException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/Skipped/SkippedWithMessageException.php', - 'PHPUnit\\Framework\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Test.php', - 'PHPUnit\\Framework\\TestBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestBuilder.php', - 'PHPUnit\\Framework\\TestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestCase.php', - 'PHPUnit\\Framework\\TestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestRunner.php', - 'PHPUnit\\Framework\\TestSize\\Known' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSize/Known.php', - 'PHPUnit\\Framework\\TestSize\\Large' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSize/Large.php', - 'PHPUnit\\Framework\\TestSize\\Medium' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSize/Medium.php', - 'PHPUnit\\Framework\\TestSize\\Small' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSize/Small.php', - 'PHPUnit\\Framework\\TestSize\\TestSize' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSize/TestSize.php', - 'PHPUnit\\Framework\\TestSize\\Unknown' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSize/Unknown.php', - 'PHPUnit\\Framework\\TestStatus\\Deprecation' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestStatus/Deprecation.php', - 'PHPUnit\\Framework\\TestStatus\\Error' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestStatus/Error.php', - 'PHPUnit\\Framework\\TestStatus\\Failure' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestStatus/Failure.php', - 'PHPUnit\\Framework\\TestStatus\\Incomplete' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestStatus/Incomplete.php', - 'PHPUnit\\Framework\\TestStatus\\Known' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestStatus/Known.php', - 'PHPUnit\\Framework\\TestStatus\\Notice' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestStatus/Notice.php', - 'PHPUnit\\Framework\\TestStatus\\Risky' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestStatus/Risky.php', - 'PHPUnit\\Framework\\TestStatus\\Skipped' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestStatus/Skipped.php', - 'PHPUnit\\Framework\\TestStatus\\Success' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestStatus/Success.php', - 'PHPUnit\\Framework\\TestStatus\\TestStatus' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestStatus/TestStatus.php', - 'PHPUnit\\Framework\\TestStatus\\Unknown' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestStatus/Unknown.php', - 'PHPUnit\\Framework\\TestStatus\\Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestStatus/Warning.php', - 'PHPUnit\\Framework\\TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuite.php', - 'PHPUnit\\Framework\\TestSuiteIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuiteIterator.php', - 'PHPUnit\\Framework\\UnknownClassOrInterfaceException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/UnknownClassOrInterfaceException.php', - 'PHPUnit\\Framework\\UnknownTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/UnknownTypeException.php', - 'PHPUnit\\Logging\\EventLogger' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/EventLogger.php', - 'PHPUnit\\Logging\\JUnit\\JunitXmlLogger' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/JunitXmlLogger.php', - 'PHPUnit\\Logging\\JUnit\\Subscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/Subscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestErroredSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestFailedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestFailedSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestFinishedSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestMarkedIncompleteSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestMarkedIncompleteSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestPreparationFailedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestPreparationFailedSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestPreparationStartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestPreparationStartedSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestPreparedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestPreparedSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestRunnerExecutionFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestRunnerExecutionFinishedSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestSkippedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestSkippedSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestSuiteFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestSuiteFinishedSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestSuiteStartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestSuiteStartedSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\Subscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/Subscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TeamCityLogger' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/TeamCityLogger.php', - 'PHPUnit\\Logging\\TeamCity\\TestConsideredRiskySubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestConsideredRiskySubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestErroredSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestFailedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestFailedSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestFinishedSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestMarkedIncompleteSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestMarkedIncompleteSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestPreparedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestPreparedSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestRunnerExecutionFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestRunnerExecutionFinishedSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestSkippedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSkippedSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestSuiteBeforeFirstTestMethodErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSuiteBeforeFirstTestMethodErroredSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestSuiteFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSuiteFinishedSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestSuiteSkippedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSuiteSkippedSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestSuiteStartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSuiteStartedSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\HtmlRenderer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/HtmlRenderer.php', - 'PHPUnit\\Logging\\TestDox\\NamePrettifier' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/NamePrettifier.php', - 'PHPUnit\\Logging\\TestDox\\PlainTextRenderer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/PlainTextRenderer.php', - 'PHPUnit\\Logging\\TestDox\\Subscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/Subscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestConsideredRiskySubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestConsideredRiskySubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestErroredSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestFailedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestFailedSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestFinishedSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestMarkedIncompleteSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestMarkedIncompleteSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestPassedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestPassedSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestPreparedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestPreparedSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResult.php', - 'PHPUnit\\Logging\\TestDox\\TestResultCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollection.php', - 'PHPUnit\\Logging\\TestDox\\TestResultCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollectionIterator.php', - 'PHPUnit\\Logging\\TestDox\\TestResultCollector' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollector.php', - 'PHPUnit\\Logging\\TestDox\\TestSkippedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestSkippedSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredDeprecationSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredNoticeSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredNoticeSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpDeprecationSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpNoticeSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpNoticeSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpWarningSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpunitDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpunitErrorSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitErrorSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpunitWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitWarningSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredWarningSubscriber.php', - 'PHPUnit\\Metadata\\After' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/After.php', - 'PHPUnit\\Metadata\\AfterClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/AfterClass.php', - 'PHPUnit\\Metadata\\Annotation\\Parser\\DocBlock' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Parser/Annotation/DocBlock.php', - 'PHPUnit\\Metadata\\Annotation\\Parser\\Registry' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Parser/Annotation/Registry.php', - 'PHPUnit\\Metadata\\AnnotationsAreNotSupportedForInternalClassesException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Exception/AnnotationsAreNotSupportedForInternalClassesException.php', - 'PHPUnit\\Metadata\\Api\\CodeCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Api/CodeCoverage.php', - 'PHPUnit\\Metadata\\Api\\DataProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Api/DataProvider.php', - 'PHPUnit\\Metadata\\Api\\Dependencies' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Api/Dependencies.php', - 'PHPUnit\\Metadata\\Api\\Groups' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Api/Groups.php', - 'PHPUnit\\Metadata\\Api\\HookMethods' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Api/HookMethods.php', - 'PHPUnit\\Metadata\\Api\\Requirements' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Api/Requirements.php', - 'PHPUnit\\Metadata\\BackupGlobals' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/BackupGlobals.php', - 'PHPUnit\\Metadata\\BackupStaticProperties' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/BackupStaticProperties.php', - 'PHPUnit\\Metadata\\Before' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Before.php', - 'PHPUnit\\Metadata\\BeforeClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/BeforeClass.php', - 'PHPUnit\\Metadata\\Covers' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Covers.php', - 'PHPUnit\\Metadata\\CoversClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/CoversClass.php', - 'PHPUnit\\Metadata\\CoversDefaultClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/CoversDefaultClass.php', - 'PHPUnit\\Metadata\\CoversFunction' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/CoversFunction.php', - 'PHPUnit\\Metadata\\CoversNothing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/CoversNothing.php', - 'PHPUnit\\Metadata\\DataProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/DataProvider.php', - 'PHPUnit\\Metadata\\DependsOnClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/DependsOnClass.php', - 'PHPUnit\\Metadata\\DependsOnMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/DependsOnMethod.php', - 'PHPUnit\\Metadata\\DoesNotPerformAssertions' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/DoesNotPerformAssertions.php', - 'PHPUnit\\Metadata\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Exception/Exception.php', - 'PHPUnit\\Metadata\\ExcludeGlobalVariableFromBackup' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/ExcludeGlobalVariableFromBackup.php', - 'PHPUnit\\Metadata\\ExcludeStaticPropertyFromBackup' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/ExcludeStaticPropertyFromBackup.php', - 'PHPUnit\\Metadata\\Group' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Group.php', - 'PHPUnit\\Metadata\\IgnoreClassForCodeCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/IgnoreClassForCodeCoverage.php', - 'PHPUnit\\Metadata\\IgnoreDeprecations' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/IgnoreDeprecations.php', - 'PHPUnit\\Metadata\\IgnoreFunctionForCodeCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/IgnoreFunctionForCodeCoverage.php', - 'PHPUnit\\Metadata\\IgnoreMethodForCodeCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/IgnoreMethodForCodeCoverage.php', - 'PHPUnit\\Metadata\\InvalidVersionRequirementException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Exception/InvalidVersionRequirementException.php', - 'PHPUnit\\Metadata\\Metadata' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Metadata.php', - 'PHPUnit\\Metadata\\MetadataCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/MetadataCollection.php', - 'PHPUnit\\Metadata\\MetadataCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/MetadataCollectionIterator.php', - 'PHPUnit\\Metadata\\NoVersionRequirementException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Exception/NoVersionRequirementException.php', - 'PHPUnit\\Metadata\\Parser\\AnnotationParser' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Parser/AnnotationParser.php', - 'PHPUnit\\Metadata\\Parser\\AttributeParser' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Parser/AttributeParser.php', - 'PHPUnit\\Metadata\\Parser\\CachingParser' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Parser/CachingParser.php', - 'PHPUnit\\Metadata\\Parser\\Parser' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Parser/Parser.php', - 'PHPUnit\\Metadata\\Parser\\ParserChain' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Parser/ParserChain.php', - 'PHPUnit\\Metadata\\Parser\\Registry' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Parser/Registry.php', - 'PHPUnit\\Metadata\\PostCondition' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/PostCondition.php', - 'PHPUnit\\Metadata\\PreCondition' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/PreCondition.php', - 'PHPUnit\\Metadata\\PreserveGlobalState' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/PreserveGlobalState.php', - 'PHPUnit\\Metadata\\ReflectionException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Exception/ReflectionException.php', - 'PHPUnit\\Metadata\\RequiresFunction' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/RequiresFunction.php', - 'PHPUnit\\Metadata\\RequiresMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/RequiresMethod.php', - 'PHPUnit\\Metadata\\RequiresOperatingSystem' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/RequiresOperatingSystem.php', - 'PHPUnit\\Metadata\\RequiresOperatingSystemFamily' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/RequiresOperatingSystemFamily.php', - 'PHPUnit\\Metadata\\RequiresPhp' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/RequiresPhp.php', - 'PHPUnit\\Metadata\\RequiresPhpExtension' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/RequiresPhpExtension.php', - 'PHPUnit\\Metadata\\RequiresPhpunit' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/RequiresPhpunit.php', - 'PHPUnit\\Metadata\\RequiresSetting' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/RequiresSetting.php', - 'PHPUnit\\Metadata\\RunClassInSeparateProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/RunClassInSeparateProcess.php', - 'PHPUnit\\Metadata\\RunInSeparateProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/RunInSeparateProcess.php', - 'PHPUnit\\Metadata\\RunTestsInSeparateProcesses' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/RunTestsInSeparateProcesses.php', - 'PHPUnit\\Metadata\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Test.php', - 'PHPUnit\\Metadata\\TestDox' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/TestDox.php', - 'PHPUnit\\Metadata\\TestWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/TestWith.php', - 'PHPUnit\\Metadata\\Uses' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Uses.php', - 'PHPUnit\\Metadata\\UsesClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/UsesClass.php', - 'PHPUnit\\Metadata\\UsesDefaultClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/UsesDefaultClass.php', - 'PHPUnit\\Metadata\\UsesFunction' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/UsesFunction.php', - 'PHPUnit\\Metadata\\Version\\ComparisonRequirement' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Version/ComparisonRequirement.php', - 'PHPUnit\\Metadata\\Version\\ConstraintRequirement' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Version/ConstraintRequirement.php', - 'PHPUnit\\Metadata\\Version\\Requirement' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Version/Requirement.php', - 'PHPUnit\\Metadata\\WithoutErrorHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/WithoutErrorHandler.php', - 'PHPUnit\\Runner\\Baseline\\Baseline' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Baseline.php', - 'PHPUnit\\Runner\\Baseline\\CannotLoadBaselineException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Exception/CannotLoadBaselineException.php', - 'PHPUnit\\Runner\\Baseline\\FileDoesNotHaveLineException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Exception/FileDoesNotHaveLineException.php', - 'PHPUnit\\Runner\\Baseline\\Generator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Generator.php', - 'PHPUnit\\Runner\\Baseline\\Issue' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Issue.php', - 'PHPUnit\\Runner\\Baseline\\Reader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Reader.php', - 'PHPUnit\\Runner\\Baseline\\RelativePathCalculator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/RelativePathCalculator.php', - 'PHPUnit\\Runner\\Baseline\\Subscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/Subscriber.php', - 'PHPUnit\\Runner\\Baseline\\TestTriggeredDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredDeprecationSubscriber.php', - 'PHPUnit\\Runner\\Baseline\\TestTriggeredNoticeSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredNoticeSubscriber.php', - 'PHPUnit\\Runner\\Baseline\\TestTriggeredPhpDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpDeprecationSubscriber.php', - 'PHPUnit\\Runner\\Baseline\\TestTriggeredPhpNoticeSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpNoticeSubscriber.php', - 'PHPUnit\\Runner\\Baseline\\TestTriggeredPhpWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpWarningSubscriber.php', - 'PHPUnit\\Runner\\Baseline\\TestTriggeredWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredWarningSubscriber.php', - 'PHPUnit\\Runner\\Baseline\\Writer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Writer.php', - 'PHPUnit\\Runner\\ClassCannotBeFoundException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/ClassCannotBeFoundException.php', - 'PHPUnit\\Runner\\ClassDoesNotExtendTestCaseException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/ClassDoesNotExtendTestCaseException.php', - 'PHPUnit\\Runner\\ClassIsAbstractException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/ClassIsAbstractException.php', - 'PHPUnit\\Runner\\CodeCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/CodeCoverage.php', - 'PHPUnit\\Runner\\DirectoryDoesNotExistException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/DirectoryDoesNotExistException.php', - 'PHPUnit\\Runner\\ErrorException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/ErrorException.php', - 'PHPUnit\\Runner\\ErrorHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ErrorHandler.php', - 'PHPUnit\\Runner\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/Exception.php', - 'PHPUnit\\Runner\\Extension\\Extension' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Extension/Extension.php', - 'PHPUnit\\Runner\\Extension\\ExtensionBootstrapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Extension/ExtensionBootstrapper.php', - 'PHPUnit\\Runner\\Extension\\Facade' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Extension/Facade.php', - 'PHPUnit\\Runner\\Extension\\ParameterCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Extension/ParameterCollection.php', - 'PHPUnit\\Runner\\Extension\\PharLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Extension/PharLoader.php', - 'PHPUnit\\Runner\\FileDoesNotExistException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/FileDoesNotExistException.php', - 'PHPUnit\\Runner\\Filter\\ExcludeGroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php', - 'PHPUnit\\Runner\\Filter\\Factory' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Factory.php', - 'PHPUnit\\Runner\\Filter\\GroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php', - 'PHPUnit\\Runner\\Filter\\IncludeGroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php', - 'PHPUnit\\Runner\\Filter\\NameFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php', - 'PHPUnit\\Runner\\Filter\\TestIdFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/TestIdFilterIterator.php', - 'PHPUnit\\Runner\\GarbageCollection\\ExecutionFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/ExecutionFinishedSubscriber.php', - 'PHPUnit\\Runner\\GarbageCollection\\ExecutionStartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/ExecutionStartedSubscriber.php', - 'PHPUnit\\Runner\\GarbageCollection\\GarbageCollectionHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/GarbageCollection/GarbageCollectionHandler.php', - 'PHPUnit\\Runner\\GarbageCollection\\Subscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/Subscriber.php', - 'PHPUnit\\Runner\\GarbageCollection\\TestFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/TestFinishedSubscriber.php', - 'PHPUnit\\Runner\\InvalidOrderException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/InvalidOrderException.php', - 'PHPUnit\\Runner\\InvalidPhptFileException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/InvalidPhptFileException.php', - 'PHPUnit\\Runner\\ParameterDoesNotExistException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/ParameterDoesNotExistException.php', - 'PHPUnit\\Runner\\PhptExternalFileCannotBeLoadedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/PhptExternalFileCannotBeLoadedException.php', - 'PHPUnit\\Runner\\PhptTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/PhptTestCase.php', - 'PHPUnit\\Runner\\ResultCache\\DefaultResultCache' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/DefaultResultCache.php', - 'PHPUnit\\Runner\\ResultCache\\NullResultCache' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/NullResultCache.php', - 'PHPUnit\\Runner\\ResultCache\\ResultCache' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/ResultCache.php', - 'PHPUnit\\Runner\\ResultCache\\ResultCacheHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/ResultCacheHandler.php', - 'PHPUnit\\Runner\\ResultCache\\Subscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/Subscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestConsideredRiskySubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestConsideredRiskySubscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestErroredSubscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestFailedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestFailedSubscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestFinishedSubscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestMarkedIncompleteSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestMarkedIncompleteSubscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestPreparedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestPreparedSubscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestSkippedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestSkippedSubscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestSuiteFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestSuiteFinishedSubscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestSuiteStartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestSuiteStartedSubscriber.php', - 'PHPUnit\\Runner\\TestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php', - 'PHPUnit\\Runner\\TestSuiteSorter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestSuiteSorter.php', - 'PHPUnit\\Runner\\UnsupportedPhptSectionException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/UnsupportedPhptSectionException.php', - 'PHPUnit\\Runner\\Version' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Version.php', - 'PHPUnit\\TestRunner\\TestResult\\BeforeTestClassMethodErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/BeforeTestClassMethodErroredSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\Collector' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Collector.php', - 'PHPUnit\\TestRunner\\TestResult\\ExecutionStartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/ExecutionStartedSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\Facade' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Facade.php', - 'PHPUnit\\TestRunner\\TestResult\\Issues\\Issue' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Issue.php', - 'PHPUnit\\TestRunner\\TestResult\\PassedTests' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/PassedTests.php', - 'PHPUnit\\TestRunner\\TestResult\\Subscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/Subscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestConsideredRiskySubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestConsideredRiskySubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestErroredSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestFailedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestFailedSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestFinishedSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestMarkedIncompleteSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestMarkedIncompleteSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestPreparedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestPreparedSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/TestResult.php', - 'PHPUnit\\TestRunner\\TestResult\\TestRunnerTriggeredDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestRunnerTriggeredDeprecationSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestRunnerTriggeredWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestRunnerTriggeredWarningSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestSkippedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSkippedSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestSuiteFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSuiteFinishedSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestSuiteSkippedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSuiteSkippedSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestSuiteStartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSuiteStartedSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredDeprecationSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredErrorSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredErrorSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredNoticeSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredNoticeSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredPhpDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpDeprecationSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredPhpNoticeSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpNoticeSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredPhpWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpWarningSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredPhpunitDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredPhpunitErrorSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpunitErrorSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredPhpunitWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpunitWarningSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredWarningSubscriber.php', - 'PHPUnit\\TextUI\\Application' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Application.php', - 'PHPUnit\\TextUI\\CannotOpenSocketException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/CannotOpenSocketException.php', - 'PHPUnit\\TextUI\\CliArguments\\Builder' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Cli/Builder.php', - 'PHPUnit\\TextUI\\CliArguments\\Configuration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Cli/Configuration.php', - 'PHPUnit\\TextUI\\CliArguments\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Cli/Exception.php', - 'PHPUnit\\TextUI\\CliArguments\\XmlConfigurationFileFinder' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Cli/XmlConfigurationFileFinder.php', - 'PHPUnit\\TextUI\\Command\\AtLeastVersionCommand' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Commands/AtLeastVersionCommand.php', - 'PHPUnit\\TextUI\\Command\\Command' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Command.php', - 'PHPUnit\\TextUI\\Command\\GenerateConfigurationCommand' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Commands/GenerateConfigurationCommand.php', - 'PHPUnit\\TextUI\\Command\\ListGroupsCommand' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Commands/ListGroupsCommand.php', - 'PHPUnit\\TextUI\\Command\\ListTestSuitesCommand' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Commands/ListTestSuitesCommand.php', - 'PHPUnit\\TextUI\\Command\\ListTestsAsTextCommand' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Commands/ListTestsAsTextCommand.php', - 'PHPUnit\\TextUI\\Command\\ListTestsAsXmlCommand' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Commands/ListTestsAsXmlCommand.php', - 'PHPUnit\\TextUI\\Command\\MigrateConfigurationCommand' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Commands/MigrateConfigurationCommand.php', - 'PHPUnit\\TextUI\\Command\\Result' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Result.php', - 'PHPUnit\\TextUI\\Command\\ShowHelpCommand' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Commands/ShowHelpCommand.php', - 'PHPUnit\\TextUI\\Command\\ShowVersionCommand' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Commands/ShowVersionCommand.php', - 'PHPUnit\\TextUI\\Command\\VersionCheckCommand' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Commands/VersionCheckCommand.php', - 'PHPUnit\\TextUI\\Command\\WarmCodeCoverageCacheCommand' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Commands/WarmCodeCoverageCacheCommand.php', - 'PHPUnit\\TextUI\\Configuration\\Builder' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Builder.php', - 'PHPUnit\\TextUI\\Configuration\\CodeCoverageFilterRegistry' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/CodeCoverageFilterRegistry.php', - 'PHPUnit\\TextUI\\Configuration\\CodeCoverageReportNotConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/CodeCoverageReportNotConfiguredException.php', - 'PHPUnit\\TextUI\\Configuration\\Configuration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Configuration.php', - 'PHPUnit\\TextUI\\Configuration\\ConfigurationCannotBeBuiltException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/ConfigurationCannotBeBuiltException.php', - 'PHPUnit\\TextUI\\Configuration\\Constant' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/Constant.php', - 'PHPUnit\\TextUI\\Configuration\\ConstantCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/ConstantCollection.php', - 'PHPUnit\\TextUI\\Configuration\\ConstantCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/ConstantCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\Directory' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/Directory.php', - 'PHPUnit\\TextUI\\Configuration\\DirectoryCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/DirectoryCollection.php', - 'PHPUnit\\TextUI\\Configuration\\DirectoryCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/DirectoryCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/Exception.php', - 'PHPUnit\\TextUI\\Configuration\\ExtensionBootstrap' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/ExtensionBootstrap.php', - 'PHPUnit\\TextUI\\Configuration\\ExtensionBootstrapCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/ExtensionBootstrapCollection.php', - 'PHPUnit\\TextUI\\Configuration\\ExtensionBootstrapCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/ExtensionBootstrapCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\File' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/File.php', - 'PHPUnit\\TextUI\\Configuration\\FileCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/FileCollection.php', - 'PHPUnit\\TextUI\\Configuration\\FileCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/FileCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\FilterDirectory' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/FilterDirectory.php', - 'PHPUnit\\TextUI\\Configuration\\FilterDirectoryCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/FilterDirectoryCollection.php', - 'PHPUnit\\TextUI\\Configuration\\FilterDirectoryCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/FilterDirectoryCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\FilterNotConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/FilterNotConfiguredException.php', - 'PHPUnit\\TextUI\\Configuration\\Group' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/Group.php', - 'PHPUnit\\TextUI\\Configuration\\GroupCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/GroupCollection.php', - 'PHPUnit\\TextUI\\Configuration\\GroupCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/GroupCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\IniSetting' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/IniSetting.php', - 'PHPUnit\\TextUI\\Configuration\\IniSettingCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/IniSettingCollection.php', - 'PHPUnit\\TextUI\\Configuration\\IniSettingCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/IniSettingCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\LoggingNotConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/LoggingNotConfiguredException.php', - 'PHPUnit\\TextUI\\Configuration\\Merger' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Merger.php', - 'PHPUnit\\TextUI\\Configuration\\NoBaselineException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoBaselineException.php', - 'PHPUnit\\TextUI\\Configuration\\NoBootstrapException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoBootstrapException.php', - 'PHPUnit\\TextUI\\Configuration\\NoCacheDirectoryException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCacheDirectoryException.php', - 'PHPUnit\\TextUI\\Configuration\\NoCliArgumentException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCliArgumentException.php', - 'PHPUnit\\TextUI\\Configuration\\NoConfigurationFileException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoConfigurationFileException.php', - 'PHPUnit\\TextUI\\Configuration\\NoCoverageCacheDirectoryException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCoverageCacheDirectoryException.php', - 'PHPUnit\\TextUI\\Configuration\\NoCustomCssFileException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCustomCssFileException.php', - 'PHPUnit\\TextUI\\Configuration\\NoDefaultTestSuiteException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoDefaultTestSuiteException.php', - 'PHPUnit\\TextUI\\Configuration\\NoPharExtensionDirectoryException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoPharExtensionDirectoryException.php', - 'PHPUnit\\TextUI\\Configuration\\Php' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/Php.php', - 'PHPUnit\\TextUI\\Configuration\\PhpHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/PhpHandler.php', - 'PHPUnit\\TextUI\\Configuration\\Registry' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Registry.php', - 'PHPUnit\\TextUI\\Configuration\\Source' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/Source.php', - 'PHPUnit\\TextUI\\Configuration\\SourceFilter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/SourceFilter.php', - 'PHPUnit\\TextUI\\Configuration\\SourceMapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/SourceMapper.php', - 'PHPUnit\\TextUI\\Configuration\\TestDirectory' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestDirectory.php', - 'PHPUnit\\TextUI\\Configuration\\TestDirectoryCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestDirectoryCollection.php', - 'PHPUnit\\TextUI\\Configuration\\TestDirectoryCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestDirectoryCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\TestFile' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestFile.php', - 'PHPUnit\\TextUI\\Configuration\\TestFileCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestFileCollection.php', - 'PHPUnit\\TextUI\\Configuration\\TestFileCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestFileCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestSuite.php', - 'PHPUnit\\TextUI\\Configuration\\TestSuiteBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/TestSuiteBuilder.php', - 'PHPUnit\\TextUI\\Configuration\\TestSuiteCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestSuiteCollection.php', - 'PHPUnit\\TextUI\\Configuration\\TestSuiteCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestSuiteCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\Variable' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/Variable.php', - 'PHPUnit\\TextUI\\Configuration\\VariableCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/VariableCollection.php', - 'PHPUnit\\TextUI\\Configuration\\VariableCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/VariableCollectionIterator.php', - 'PHPUnit\\TextUI\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/Exception.php', - 'PHPUnit\\TextUI\\Help' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Help.php', - 'PHPUnit\\TextUI\\InvalidSocketException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/InvalidSocketException.php', - 'PHPUnit\\TextUI\\Output\\DefaultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Printer/DefaultPrinter.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\BeforeTestClassMethodErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/BeforeTestClassMethodErroredSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\ProgressPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/ProgressPrinter.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\Subscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/Subscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestConsideredRiskySubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestConsideredRiskySubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestErroredSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestFailedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestFailedSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestFinishedSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestMarkedIncompleteSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestMarkedIncompleteSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestPreparedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestPreparedSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestRunnerExecutionStartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestRunnerExecutionStartedSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestSkippedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestSkippedSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredDeprecationSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredErrorSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredErrorSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredNoticeSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredNoticeSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpDeprecationSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpNoticeSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpNoticeSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpWarningSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpunitDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpunitWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpunitWarningSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredWarningSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ResultPrinter.php', - 'PHPUnit\\TextUI\\Output\\Default\\UnexpectedOutputPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/UnexpectedOutputPrinter.php', - 'PHPUnit\\TextUI\\Output\\Facade' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Facade.php', - 'PHPUnit\\TextUI\\Output\\NullPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Printer/NullPrinter.php', - 'PHPUnit\\TextUI\\Output\\Printer' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Printer/Printer.php', - 'PHPUnit\\TextUI\\Output\\SummaryPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/SummaryPrinter.php', - 'PHPUnit\\TextUI\\Output\\TestDox\\ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/TestDox/ResultPrinter.php', - 'PHPUnit\\TextUI\\RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/RuntimeException.php', - 'PHPUnit\\TextUI\\ShellExitCodeCalculator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/ShellExitCodeCalculator.php', - 'PHPUnit\\TextUI\\TestDirectoryNotFoundException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/TestDirectoryNotFoundException.php', - 'PHPUnit\\TextUI\\TestFileNotFoundException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/TestFileNotFoundException.php', - 'PHPUnit\\TextUI\\TestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/TestRunner.php', - 'PHPUnit\\TextUI\\TestSuiteFilterProcessor' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/TestSuiteFilterProcessor.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CannotFindSchemaException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/CannotFindSchemaException.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\CodeCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/CodeCoverage.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Clover' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Clover.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Cobertura' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Cobertura.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Crap4j' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Crap4j.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Html' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Html.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Php' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Php.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Text' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Text.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Xml' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Xml.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Configuration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Configuration.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\ConvertLogTypes' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/ConvertLogTypes.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageCloverToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageCloverToReport.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageCrap4jToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageCrap4jToReport.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageHtmlToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageHtmlToReport.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CoveragePhpToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoveragePhpToReport.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageTextToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageTextToReport.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageXmlToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageXmlToReport.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\DefaultConfiguration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/DefaultConfiguration.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Exception.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\FailedSchemaDetectionResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/FailedSchemaDetectionResult.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Generator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Generator.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Groups' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Groups.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\IntroduceCacheDirectoryAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/IntroduceCacheDirectoryAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\IntroduceCoverageElement' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/IntroduceCoverageElement.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\LoadedFromFileConfiguration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/LoadedFromFileConfiguration.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Loader' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Loader.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\LogToReportMigration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/LogToReportMigration.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Junit' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/Junit.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Logging' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/Logging.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TeamCity' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/TeamCity.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Html' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/TestDox/Html.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Text' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/TestDox/Text.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Migration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/Migration.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\MigrationBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/MigrationBuilder.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\MigrationException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/MigrationException.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Migrator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrator.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromFilterWhitelistToCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromRootToCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveAttributesFromRootToCoverage.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\MoveCoverageDirectoriesToSource' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveCoverageDirectoriesToSource.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistExcludesToCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveWhitelistExcludesToCoverage.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistIncludesToCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveWhitelistIncludesToCoverage.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\PHPUnit' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/PHPUnit.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveBeStrictAboutResourceUsageDuringSmallTestsAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveBeStrictAboutResourceUsageDuringSmallTestsAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveBeStrictAboutTodoAnnotatedTestsAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveBeStrictAboutTodoAnnotatedTestsAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveCacheResultFileAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCacheResultFileAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveCacheTokensAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCacheTokensAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveConversionToExceptionsAttributes' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveConversionToExceptionsAttributes.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveCoverageElementCacheDirectoryAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCoverageElementCacheDirectoryAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveCoverageElementProcessUncoveredFilesAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCoverageElementProcessUncoveredFilesAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveEmptyFilter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveEmptyFilter.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveListeners' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveListeners.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveLogTypes' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveLogTypes.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveLoggingElements' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveLoggingElements.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveNoInteractionAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveNoInteractionAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemovePrinterAttributes' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemovePrinterAttributes.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveTestDoxGroupsElement' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveTestDoxGroupsElement.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveTestSuiteLoaderAttributes' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveTestSuiteLoaderAttributes.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveVerboseAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveVerboseAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RenameBackupStaticAttributesAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameBackupStaticAttributesAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RenameBeStrictAboutCoversAnnotationAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameBeStrictAboutCoversAnnotationAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RenameForceCoversAnnotationAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameForceCoversAnnotationAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\SchemaDetectionResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SchemaDetectionResult.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\SchemaDetector' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SchemaDetector.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\SchemaFinder' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaFinder.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\SnapshotNodeList' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/SnapshotNodeList.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\SuccessfulSchemaDetectionResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SuccessfulSchemaDetectionResult.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\TestSuiteMapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/TestSuiteMapper.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\UpdateSchemaLocation' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/UpdateSchemaLocation.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\ValidationResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Validator/ValidationResult.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Validator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Validator/Validator.php', - 'PHPUnit\\Util\\Cloner' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Cloner.php', - 'PHPUnit\\Util\\Color' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Color.php', - 'PHPUnit\\Util\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception/Exception.php', - 'PHPUnit\\Util\\ExcludeList' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ExcludeList.php', - 'PHPUnit\\Util\\Exporter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exporter.php', - 'PHPUnit\\Util\\Filesystem' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filesystem.php', - 'PHPUnit\\Util\\Filter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filter.php', - 'PHPUnit\\Util\\GlobalState' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/GlobalState.php', - 'PHPUnit\\Util\\Http\\Downloader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Http/Downloader.php', - 'PHPUnit\\Util\\Http\\PhpDownloader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Http/PhpDownloader.php', - 'PHPUnit\\Util\\InvalidDirectoryException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception/InvalidDirectoryException.php', - 'PHPUnit\\Util\\InvalidJsonException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception/InvalidJsonException.php', - 'PHPUnit\\Util\\InvalidVersionOperatorException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception/InvalidVersionOperatorException.php', - 'PHPUnit\\Util\\Json' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Json.php', - 'PHPUnit\\Util\\PHP\\AbstractPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php', - 'PHPUnit\\Util\\PHP\\DefaultPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php', - 'PHPUnit\\Util\\PHP\\PhpProcessException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception/PhpProcessException.php', - 'PHPUnit\\Util\\Reflection' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Reflection.php', - 'PHPUnit\\Util\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Test.php', - 'PHPUnit\\Util\\ThrowableToStringMapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ThrowableToStringMapper.php', - 'PHPUnit\\Util\\VersionComparisonOperator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/VersionComparisonOperator.php', - 'PHPUnit\\Util\\Xml' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/Xml.php', - 'PHPUnit\\Util\\Xml\\Loader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/Loader.php', - 'PHPUnit\\Util\\Xml\\XmlException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception/XmlException.php', - 'PatientCategoryInvoiceAccountSeeder' => __DIR__ . '/../..' . '/database/seeders/PatientCategoryInvoiceAccountSeeder.php', - 'PharIo\\Manifest\\Application' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Application.php', - 'PharIo\\Manifest\\ApplicationName' => __DIR__ . '/..' . '/phar-io/manifest/src/values/ApplicationName.php', - 'PharIo\\Manifest\\Author' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Author.php', - 'PharIo\\Manifest\\AuthorCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/values/AuthorCollection.php', - 'PharIo\\Manifest\\AuthorCollectionIterator' => __DIR__ . '/..' . '/phar-io/manifest/src/values/AuthorCollectionIterator.php', - 'PharIo\\Manifest\\AuthorElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/AuthorElement.php', - 'PharIo\\Manifest\\AuthorElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/AuthorElementCollection.php', - 'PharIo\\Manifest\\BundledComponent' => __DIR__ . '/..' . '/phar-io/manifest/src/values/BundledComponent.php', - 'PharIo\\Manifest\\BundledComponentCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/values/BundledComponentCollection.php', - 'PharIo\\Manifest\\BundledComponentCollectionIterator' => __DIR__ . '/..' . '/phar-io/manifest/src/values/BundledComponentCollectionIterator.php', - 'PharIo\\Manifest\\BundlesElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/BundlesElement.php', - 'PharIo\\Manifest\\ComponentElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ComponentElement.php', - 'PharIo\\Manifest\\ComponentElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ComponentElementCollection.php', - 'PharIo\\Manifest\\ContainsElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ContainsElement.php', - 'PharIo\\Manifest\\CopyrightElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/CopyrightElement.php', - 'PharIo\\Manifest\\CopyrightInformation' => __DIR__ . '/..' . '/phar-io/manifest/src/values/CopyrightInformation.php', - 'PharIo\\Manifest\\ElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ElementCollection.php', - 'PharIo\\Manifest\\ElementCollectionException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ElementCollectionException.php', - 'PharIo\\Manifest\\Email' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Email.php', - 'PharIo\\Manifest\\Exception' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/Exception.php', - 'PharIo\\Manifest\\ExtElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ExtElement.php', - 'PharIo\\Manifest\\ExtElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ExtElementCollection.php', - 'PharIo\\Manifest\\Extension' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Extension.php', - 'PharIo\\Manifest\\ExtensionElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ExtensionElement.php', - 'PharIo\\Manifest\\InvalidApplicationNameException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php', - 'PharIo\\Manifest\\InvalidEmailException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/InvalidEmailException.php', - 'PharIo\\Manifest\\InvalidUrlException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/InvalidUrlException.php', - 'PharIo\\Manifest\\Library' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Library.php', - 'PharIo\\Manifest\\License' => __DIR__ . '/..' . '/phar-io/manifest/src/values/License.php', - 'PharIo\\Manifest\\LicenseElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/LicenseElement.php', - 'PharIo\\Manifest\\Manifest' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Manifest.php', - 'PharIo\\Manifest\\ManifestDocument' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ManifestDocument.php', - 'PharIo\\Manifest\\ManifestDocumentException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestDocumentException.php', - 'PharIo\\Manifest\\ManifestDocumentLoadingException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestDocumentLoadingException.php', - 'PharIo\\Manifest\\ManifestDocumentMapper' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestDocumentMapper.php', - 'PharIo\\Manifest\\ManifestDocumentMapperException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestDocumentMapperException.php', - 'PharIo\\Manifest\\ManifestElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ManifestElement.php', - 'PharIo\\Manifest\\ManifestElementException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestElementException.php', - 'PharIo\\Manifest\\ManifestLoader' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestLoader.php', - 'PharIo\\Manifest\\ManifestLoaderException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestLoaderException.php', - 'PharIo\\Manifest\\ManifestSerializer' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestSerializer.php', - 'PharIo\\Manifest\\NoEmailAddressException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/NoEmailAddressException.php', - 'PharIo\\Manifest\\PhpElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/PhpElement.php', - 'PharIo\\Manifest\\PhpExtensionRequirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/PhpExtensionRequirement.php', - 'PharIo\\Manifest\\PhpVersionRequirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/PhpVersionRequirement.php', - 'PharIo\\Manifest\\Requirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Requirement.php', - 'PharIo\\Manifest\\RequirementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/values/RequirementCollection.php', - 'PharIo\\Manifest\\RequirementCollectionIterator' => __DIR__ . '/..' . '/phar-io/manifest/src/values/RequirementCollectionIterator.php', - 'PharIo\\Manifest\\RequiresElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/RequiresElement.php', - 'PharIo\\Manifest\\Type' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Type.php', - 'PharIo\\Manifest\\Url' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Url.php', - 'PharIo\\Version\\AbstractVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/AbstractVersionConstraint.php', - 'PharIo\\Version\\AndVersionConstraintGroup' => __DIR__ . '/..' . '/phar-io/version/src/constraints/AndVersionConstraintGroup.php', - 'PharIo\\Version\\AnyVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/AnyVersionConstraint.php', - 'PharIo\\Version\\BuildMetaData' => __DIR__ . '/..' . '/phar-io/version/src/BuildMetaData.php', - 'PharIo\\Version\\ExactVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/ExactVersionConstraint.php', - 'PharIo\\Version\\Exception' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/Exception.php', - 'PharIo\\Version\\GreaterThanOrEqualToVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/GreaterThanOrEqualToVersionConstraint.php', - 'PharIo\\Version\\InvalidPreReleaseSuffixException' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/InvalidPreReleaseSuffixException.php', - 'PharIo\\Version\\InvalidVersionException' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/InvalidVersionException.php', - 'PharIo\\Version\\NoBuildMetaDataException' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/NoBuildMetaDataException.php', - 'PharIo\\Version\\NoPreReleaseSuffixException' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/NoPreReleaseSuffixException.php', - 'PharIo\\Version\\OrVersionConstraintGroup' => __DIR__ . '/..' . '/phar-io/version/src/constraints/OrVersionConstraintGroup.php', - 'PharIo\\Version\\PreReleaseSuffix' => __DIR__ . '/..' . '/phar-io/version/src/PreReleaseSuffix.php', - 'PharIo\\Version\\SpecificMajorAndMinorVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/SpecificMajorAndMinorVersionConstraint.php', - 'PharIo\\Version\\SpecificMajorVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/SpecificMajorVersionConstraint.php', - 'PharIo\\Version\\UnsupportedVersionConstraintException' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/UnsupportedVersionConstraintException.php', - 'PharIo\\Version\\Version' => __DIR__ . '/..' . '/phar-io/version/src/Version.php', - 'PharIo\\Version\\VersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/VersionConstraint.php', - 'PharIo\\Version\\VersionConstraintParser' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintParser.php', - 'PharIo\\Version\\VersionConstraintValue' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintValue.php', - 'PharIo\\Version\\VersionNumber' => __DIR__ . '/..' . '/phar-io/version/src/VersionNumber.php', - 'PhpMyAdmin\\SqlParser\\Component' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Component.php', - 'PhpMyAdmin\\SqlParser\\Components\\AlterOperation' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/AlterOperation.php', - 'PhpMyAdmin\\SqlParser\\Components\\Array2d' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/Array2d.php', - 'PhpMyAdmin\\SqlParser\\Components\\ArrayObj' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/ArrayObj.php', - 'PhpMyAdmin\\SqlParser\\Components\\CaseExpression' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/CaseExpression.php', - 'PhpMyAdmin\\SqlParser\\Components\\Condition' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/Condition.php', - 'PhpMyAdmin\\SqlParser\\Components\\CreateDefinition' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/CreateDefinition.php', - 'PhpMyAdmin\\SqlParser\\Components\\DataType' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/DataType.php', - 'PhpMyAdmin\\SqlParser\\Components\\Expression' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/Expression.php', - 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/ExpressionArray.php', - 'PhpMyAdmin\\SqlParser\\Components\\FunctionCall' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/FunctionCall.php', - 'PhpMyAdmin\\SqlParser\\Components\\GroupKeyword' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/GroupKeyword.php', - 'PhpMyAdmin\\SqlParser\\Components\\IndexHint' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/IndexHint.php', - 'PhpMyAdmin\\SqlParser\\Components\\IntoKeyword' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/IntoKeyword.php', - 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/JoinKeyword.php', - 'PhpMyAdmin\\SqlParser\\Components\\Key' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/Key.php', - 'PhpMyAdmin\\SqlParser\\Components\\Limit' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/Limit.php', - 'PhpMyAdmin\\SqlParser\\Components\\LockExpression' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/LockExpression.php', - 'PhpMyAdmin\\SqlParser\\Components\\OptionsArray' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/OptionsArray.php', - 'PhpMyAdmin\\SqlParser\\Components\\OrderKeyword' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/OrderKeyword.php', - 'PhpMyAdmin\\SqlParser\\Components\\ParameterDefinition' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/ParameterDefinition.php', - 'PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/PartitionDefinition.php', - 'PhpMyAdmin\\SqlParser\\Components\\Reference' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/Reference.php', - 'PhpMyAdmin\\SqlParser\\Components\\RenameOperation' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/RenameOperation.php', - 'PhpMyAdmin\\SqlParser\\Components\\SetOperation' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/SetOperation.php', - 'PhpMyAdmin\\SqlParser\\Components\\UnionKeyword' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/UnionKeyword.php', - 'PhpMyAdmin\\SqlParser\\Components\\WithKeyword' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/WithKeyword.php', - 'PhpMyAdmin\\SqlParser\\Context' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Context.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb100000' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100000.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb100100' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100100.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb100200' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100200.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb100300' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100300.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb100400' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100400.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb100500' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100500.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb100600' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100600.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb100700' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100700.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb100800' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100800.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb100900' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100900.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb101000' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb101000.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb101100' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb101100.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb110000' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb110000.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb110100' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb110100.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb110200' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb110200.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb110300' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb110300.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb110400' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb110400.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb110500' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb110500.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb110600' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb110600.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb110700' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb110700.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql50000' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql50000.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql50100' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql50100.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql50500' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql50500.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql50600' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql50600.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql50700' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql50700.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql80000' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql80000.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql80100' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql80100.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql80200' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql80200.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql80300' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql80300.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql80400' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql80400.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql90000' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql90000.php', - 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql90100' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql90100.php', - 'PhpMyAdmin\\SqlParser\\Core' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Core.php', - 'PhpMyAdmin\\SqlParser\\Exceptions\\LexerException' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Exceptions/LexerException.php', - 'PhpMyAdmin\\SqlParser\\Exceptions\\LoaderException' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Exceptions/LoaderException.php', - 'PhpMyAdmin\\SqlParser\\Exceptions\\ParserException' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Exceptions/ParserException.php', - 'PhpMyAdmin\\SqlParser\\Lexer' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Lexer.php', - 'PhpMyAdmin\\SqlParser\\Parser' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Parser.php', - 'PhpMyAdmin\\SqlParser\\Statement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\AlterStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/AlterStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/AnalyzeStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\BackupStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/BackupStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\CallStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/CallStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\CheckStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/CheckStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/ChecksumStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\CreateStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/CreateStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/DeleteStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\DropStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/DropStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/ExplainStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\InsertStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/InsertStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\KillStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/KillStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\LoadStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/LoadStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\LockStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/LockStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\MaintenanceStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/MaintenanceStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\NotImplementedStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/NotImplementedStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/OptimizeStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/PurgeStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\RenameStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/RenameStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\RepairStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/RepairStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/ReplaceStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/RestoreStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\SelectStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/SelectStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\SetStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/SetStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\ShowStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/ShowStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/TransactionStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/TruncateStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/UpdateStatement.php', - 'PhpMyAdmin\\SqlParser\\Statements\\WithStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/WithStatement.php', - 'PhpMyAdmin\\SqlParser\\Token' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Token.php', - 'PhpMyAdmin\\SqlParser\\TokensList' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/TokensList.php', - 'PhpMyAdmin\\SqlParser\\Tools\\ContextGenerator' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Tools/ContextGenerator.php', - 'PhpMyAdmin\\SqlParser\\Tools\\CustomJsonSerializer' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Tools/CustomJsonSerializer.php', - 'PhpMyAdmin\\SqlParser\\Tools\\TestGenerator' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Tools/TestGenerator.php', - 'PhpMyAdmin\\SqlParser\\Translator' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Translator.php', - 'PhpMyAdmin\\SqlParser\\UtfString' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/UtfString.php', - 'PhpMyAdmin\\SqlParser\\Utils\\BufferedQuery' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Utils/BufferedQuery.php', - 'PhpMyAdmin\\SqlParser\\Utils\\CLI' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Utils/CLI.php', - 'PhpMyAdmin\\SqlParser\\Utils\\Error' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Utils/Error.php', - 'PhpMyAdmin\\SqlParser\\Utils\\Formatter' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Utils/Formatter.php', - 'PhpMyAdmin\\SqlParser\\Utils\\Misc' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Utils/Misc.php', - 'PhpMyAdmin\\SqlParser\\Utils\\Query' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Utils/Query.php', - 'PhpMyAdmin\\SqlParser\\Utils\\Routine' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Utils/Routine.php', - 'PhpMyAdmin\\SqlParser\\Utils\\Table' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Utils/Table.php', - 'PhpMyAdmin\\SqlParser\\Utils\\Tokens' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Utils/Tokens.php', - 'PhpOption\\LazyOption' => __DIR__ . '/..' . '/phpoption/phpoption/src/PhpOption/LazyOption.php', - 'PhpOption\\None' => __DIR__ . '/..' . '/phpoption/phpoption/src/PhpOption/None.php', - 'PhpOption\\Option' => __DIR__ . '/..' . '/phpoption/phpoption/src/PhpOption/Option.php', - 'PhpOption\\Some' => __DIR__ . '/..' . '/phpoption/phpoption/src/PhpOption/Some.php', - 'PhpParser\\Builder' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder.php', - 'PhpParser\\BuilderFactory' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/BuilderFactory.php', - 'PhpParser\\BuilderHelpers' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/BuilderHelpers.php', - 'PhpParser\\Builder\\ClassConst' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php', - 'PhpParser\\Builder\\Class_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Class_.php', - 'PhpParser\\Builder\\Declaration' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Declaration.php', - 'PhpParser\\Builder\\EnumCase' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php', - 'PhpParser\\Builder\\Enum_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Enum_.php', - 'PhpParser\\Builder\\FunctionLike' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php', - 'PhpParser\\Builder\\Function_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Function_.php', - 'PhpParser\\Builder\\Interface_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Interface_.php', - 'PhpParser\\Builder\\Method' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Method.php', - 'PhpParser\\Builder\\Namespace_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php', - 'PhpParser\\Builder\\Param' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Param.php', - 'PhpParser\\Builder\\Property' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Property.php', - 'PhpParser\\Builder\\TraitUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php', - 'PhpParser\\Builder\\TraitUseAdaptation' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php', - 'PhpParser\\Builder\\Trait_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Trait_.php', - 'PhpParser\\Builder\\Use_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Use_.php', - 'PhpParser\\Comment' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Comment.php', - 'PhpParser\\Comment\\Doc' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Comment/Doc.php', - 'PhpParser\\ConstExprEvaluationException' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php', - 'PhpParser\\ConstExprEvaluator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php', - 'PhpParser\\Error' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Error.php', - 'PhpParser\\ErrorHandler' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ErrorHandler.php', - 'PhpParser\\ErrorHandler\\Collecting' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php', - 'PhpParser\\ErrorHandler\\Throwing' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php', - 'PhpParser\\Internal\\DiffElem' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php', - 'PhpParser\\Internal\\Differ' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Internal/Differ.php', - 'PhpParser\\Internal\\PrintableNewAnonClassNode' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php', - 'PhpParser\\Internal\\TokenPolyfill' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Internal/TokenPolyfill.php', - 'PhpParser\\Internal\\TokenStream' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php', - 'PhpParser\\JsonDecoder' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/JsonDecoder.php', - 'PhpParser\\Lexer' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer.php', - 'PhpParser\\Lexer\\Emulative' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php', - 'PhpParser\\Lexer\\TokenEmulator\\AsymmetricVisibilityTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AsymmetricVisibilityTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\AttributeEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\EnumTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\ExplicitOctalEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\KeywordEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\MatchTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\NullsafeTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\PropertyTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/PropertyTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\ReadonlyFunctionTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\ReadonlyTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\ReverseEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\TokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php', - 'PhpParser\\Modifiers' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Modifiers.php', - 'PhpParser\\NameContext' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NameContext.php', - 'PhpParser\\Node' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node.php', - 'PhpParser\\NodeAbstract' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeAbstract.php', - 'PhpParser\\NodeDumper' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeDumper.php', - 'PhpParser\\NodeFinder' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeFinder.php', - 'PhpParser\\NodeTraverser' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeTraverser.php', - 'PhpParser\\NodeTraverserInterface' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php', - 'PhpParser\\NodeVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor.php', - 'PhpParser\\NodeVisitorAbstract' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php', - 'PhpParser\\NodeVisitor\\CloningVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php', - 'PhpParser\\NodeVisitor\\CommentAnnotatingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/CommentAnnotatingVisitor.php', - 'PhpParser\\NodeVisitor\\FindingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php', - 'PhpParser\\NodeVisitor\\FirstFindingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php', - 'PhpParser\\NodeVisitor\\NameResolver' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php', - 'PhpParser\\NodeVisitor\\NodeConnectingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php', - 'PhpParser\\NodeVisitor\\ParentConnectingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php', - 'PhpParser\\Node\\Arg' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Arg.php', - 'PhpParser\\Node\\ArrayItem' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/ArrayItem.php', - 'PhpParser\\Node\\Attribute' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Attribute.php', - 'PhpParser\\Node\\AttributeGroup' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php', - 'PhpParser\\Node\\ClosureUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/ClosureUse.php', - 'PhpParser\\Node\\ComplexType' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/ComplexType.php', - 'PhpParser\\Node\\Const_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Const_.php', - 'PhpParser\\Node\\DeclareItem' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/DeclareItem.php', - 'PhpParser\\Node\\Expr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr.php', - 'PhpParser\\Node\\Expr\\ArrayDimFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php', - 'PhpParser\\Node\\Expr\\ArrayItem' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php', - 'PhpParser\\Node\\Expr\\Array_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php', - 'PhpParser\\Node\\Expr\\ArrowFunction' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php', - 'PhpParser\\Node\\Expr\\Assign' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php', - 'PhpParser\\Node\\Expr\\AssignOp' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php', - 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseAnd' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php', - 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseOr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php', - 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseXor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Coalesce' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Concat' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Div' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Minus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Mod' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Mul' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Plus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Pow' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php', - 'PhpParser\\Node\\Expr\\AssignOp\\ShiftLeft' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php', - 'PhpParser\\Node\\Expr\\AssignOp\\ShiftRight' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php', - 'PhpParser\\Node\\Expr\\AssignRef' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php', - 'PhpParser\\Node\\Expr\\BinaryOp' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseAnd' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseOr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseXor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\BooleanAnd' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\BooleanOr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Coalesce' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Concat' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Div' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Equal' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Greater' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\GreaterOrEqual' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Identical' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalAnd' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalOr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalXor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Minus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Mod' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Mul' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\NotEqual' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\NotIdentical' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Plus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Pow' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\ShiftLeft' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\ShiftRight' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Smaller' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\SmallerOrEqual' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Spaceship' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php', - 'PhpParser\\Node\\Expr\\BitwiseNot' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php', - 'PhpParser\\Node\\Expr\\BooleanNot' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php', - 'PhpParser\\Node\\Expr\\CallLike' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php', - 'PhpParser\\Node\\Expr\\Cast' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php', - 'PhpParser\\Node\\Expr\\Cast\\Array_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php', - 'PhpParser\\Node\\Expr\\Cast\\Bool_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php', - 'PhpParser\\Node\\Expr\\Cast\\Double' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php', - 'PhpParser\\Node\\Expr\\Cast\\Int_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php', - 'PhpParser\\Node\\Expr\\Cast\\Object_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php', - 'PhpParser\\Node\\Expr\\Cast\\String_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php', - 'PhpParser\\Node\\Expr\\Cast\\Unset_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php', - 'PhpParser\\Node\\Expr\\ClassConstFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php', - 'PhpParser\\Node\\Expr\\Clone_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php', - 'PhpParser\\Node\\Expr\\Closure' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php', - 'PhpParser\\Node\\Expr\\ClosureUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php', - 'PhpParser\\Node\\Expr\\ConstFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php', - 'PhpParser\\Node\\Expr\\Empty_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php', - 'PhpParser\\Node\\Expr\\Error' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php', - 'PhpParser\\Node\\Expr\\ErrorSuppress' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php', - 'PhpParser\\Node\\Expr\\Eval_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php', - 'PhpParser\\Node\\Expr\\Exit_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php', - 'PhpParser\\Node\\Expr\\FuncCall' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php', - 'PhpParser\\Node\\Expr\\Include_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php', - 'PhpParser\\Node\\Expr\\Instanceof_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php', - 'PhpParser\\Node\\Expr\\Isset_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php', - 'PhpParser\\Node\\Expr\\List_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php', - 'PhpParser\\Node\\Expr\\Match_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php', - 'PhpParser\\Node\\Expr\\MethodCall' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php', - 'PhpParser\\Node\\Expr\\New_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php', - 'PhpParser\\Node\\Expr\\NullsafeMethodCall' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php', - 'PhpParser\\Node\\Expr\\NullsafePropertyFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php', - 'PhpParser\\Node\\Expr\\PostDec' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php', - 'PhpParser\\Node\\Expr\\PostInc' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php', - 'PhpParser\\Node\\Expr\\PreDec' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php', - 'PhpParser\\Node\\Expr\\PreInc' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php', - 'PhpParser\\Node\\Expr\\Print_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php', - 'PhpParser\\Node\\Expr\\PropertyFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php', - 'PhpParser\\Node\\Expr\\ShellExec' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php', - 'PhpParser\\Node\\Expr\\StaticCall' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php', - 'PhpParser\\Node\\Expr\\StaticPropertyFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php', - 'PhpParser\\Node\\Expr\\Ternary' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php', - 'PhpParser\\Node\\Expr\\Throw_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php', - 'PhpParser\\Node\\Expr\\UnaryMinus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php', - 'PhpParser\\Node\\Expr\\UnaryPlus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php', - 'PhpParser\\Node\\Expr\\Variable' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php', - 'PhpParser\\Node\\Expr\\YieldFrom' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php', - 'PhpParser\\Node\\Expr\\Yield_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php', - 'PhpParser\\Node\\FunctionLike' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php', - 'PhpParser\\Node\\Identifier' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Identifier.php', - 'PhpParser\\Node\\InterpolatedStringPart' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/InterpolatedStringPart.php', - 'PhpParser\\Node\\IntersectionType' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php', - 'PhpParser\\Node\\MatchArm' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/MatchArm.php', - 'PhpParser\\Node\\Name' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Name.php', - 'PhpParser\\Node\\Name\\FullyQualified' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php', - 'PhpParser\\Node\\Name\\Relative' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php', - 'PhpParser\\Node\\NullableType' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/NullableType.php', - 'PhpParser\\Node\\Param' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Param.php', - 'PhpParser\\Node\\PropertyHook' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/PropertyHook.php', - 'PhpParser\\Node\\PropertyItem' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/PropertyItem.php', - 'PhpParser\\Node\\Scalar' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar.php', - 'PhpParser\\Node\\Scalar\\DNumber' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php', - 'PhpParser\\Node\\Scalar\\Encapsed' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php', - 'PhpParser\\Node\\Scalar\\EncapsedStringPart' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php', - 'PhpParser\\Node\\Scalar\\Float_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/Float_.php', - 'PhpParser\\Node\\Scalar\\Int_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/Int_.php', - 'PhpParser\\Node\\Scalar\\InterpolatedString' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/InterpolatedString.php', - 'PhpParser\\Node\\Scalar\\LNumber' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php', - 'PhpParser\\Node\\Scalar\\MagicConst' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Class_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Dir' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\File' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Function_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Line' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Method' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Namespace_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Property' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Property.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Trait_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php', - 'PhpParser\\Node\\Scalar\\String_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php', - 'PhpParser\\Node\\StaticVar' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/StaticVar.php', - 'PhpParser\\Node\\Stmt' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt.php', - 'PhpParser\\Node\\Stmt\\Block' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Block.php', - 'PhpParser\\Node\\Stmt\\Break_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php', - 'PhpParser\\Node\\Stmt\\Case_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php', - 'PhpParser\\Node\\Stmt\\Catch_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php', - 'PhpParser\\Node\\Stmt\\ClassConst' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php', - 'PhpParser\\Node\\Stmt\\ClassLike' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php', - 'PhpParser\\Node\\Stmt\\ClassMethod' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php', - 'PhpParser\\Node\\Stmt\\Class_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php', - 'PhpParser\\Node\\Stmt\\Const_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php', - 'PhpParser\\Node\\Stmt\\Continue_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php', - 'PhpParser\\Node\\Stmt\\DeclareDeclare' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php', - 'PhpParser\\Node\\Stmt\\Declare_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php', - 'PhpParser\\Node\\Stmt\\Do_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php', - 'PhpParser\\Node\\Stmt\\Echo_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php', - 'PhpParser\\Node\\Stmt\\ElseIf_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php', - 'PhpParser\\Node\\Stmt\\Else_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php', - 'PhpParser\\Node\\Stmt\\EnumCase' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php', - 'PhpParser\\Node\\Stmt\\Enum_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php', - 'PhpParser\\Node\\Stmt\\Expression' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php', - 'PhpParser\\Node\\Stmt\\Finally_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php', - 'PhpParser\\Node\\Stmt\\For_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php', - 'PhpParser\\Node\\Stmt\\Foreach_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php', - 'PhpParser\\Node\\Stmt\\Function_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php', - 'PhpParser\\Node\\Stmt\\Global_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php', - 'PhpParser\\Node\\Stmt\\Goto_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php', - 'PhpParser\\Node\\Stmt\\GroupUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php', - 'PhpParser\\Node\\Stmt\\HaltCompiler' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php', - 'PhpParser\\Node\\Stmt\\If_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php', - 'PhpParser\\Node\\Stmt\\InlineHTML' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php', - 'PhpParser\\Node\\Stmt\\Interface_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php', - 'PhpParser\\Node\\Stmt\\Label' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php', - 'PhpParser\\Node\\Stmt\\Namespace_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php', - 'PhpParser\\Node\\Stmt\\Nop' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php', - 'PhpParser\\Node\\Stmt\\Property' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php', - 'PhpParser\\Node\\Stmt\\PropertyProperty' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php', - 'PhpParser\\Node\\Stmt\\Return_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php', - 'PhpParser\\Node\\Stmt\\StaticVar' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php', - 'PhpParser\\Node\\Stmt\\Static_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php', - 'PhpParser\\Node\\Stmt\\Switch_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php', - 'PhpParser\\Node\\Stmt\\TraitUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php', - 'PhpParser\\Node\\Stmt\\TraitUseAdaptation' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php', - 'PhpParser\\Node\\Stmt\\TraitUseAdaptation\\Alias' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php', - 'PhpParser\\Node\\Stmt\\TraitUseAdaptation\\Precedence' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php', - 'PhpParser\\Node\\Stmt\\Trait_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php', - 'PhpParser\\Node\\Stmt\\TryCatch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php', - 'PhpParser\\Node\\Stmt\\Unset_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php', - 'PhpParser\\Node\\Stmt\\UseUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php', - 'PhpParser\\Node\\Stmt\\Use_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php', - 'PhpParser\\Node\\Stmt\\While_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php', - 'PhpParser\\Node\\UnionType' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/UnionType.php', - 'PhpParser\\Node\\UseItem' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/UseItem.php', - 'PhpParser\\Node\\VarLikeIdentifier' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php', - 'PhpParser\\Node\\VariadicPlaceholder' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php', - 'PhpParser\\Parser' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Parser.php', - 'PhpParser\\ParserAbstract' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ParserAbstract.php', - 'PhpParser\\ParserFactory' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ParserFactory.php', - 'PhpParser\\Parser\\Php7' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Parser/Php7.php', - 'PhpParser\\Parser\\Php8' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Parser/Php8.php', - 'PhpParser\\PhpVersion' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/PhpVersion.php', - 'PhpParser\\PrettyPrinter' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/PrettyPrinter.php', - 'PhpParser\\PrettyPrinterAbstract' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php', - 'PhpParser\\PrettyPrinter\\Standard' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php', - 'PhpParser\\Token' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Token.php', - 'PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', - 'PointOfSaleSeeder' => __DIR__ . '/../..' . '/database/seeders/PointOfSaleSeeder.php', - 'ProceduresTableSeeder' => __DIR__ . '/../..' . '/database/seeders/ProceduresTableSeeder.php', - 'Psr\\Cache\\CacheException' => __DIR__ . '/..' . '/psr/cache/src/CacheException.php', - 'Psr\\Cache\\CacheItemInterface' => __DIR__ . '/..' . '/psr/cache/src/CacheItemInterface.php', - 'Psr\\Cache\\CacheItemPoolInterface' => __DIR__ . '/..' . '/psr/cache/src/CacheItemPoolInterface.php', - 'Psr\\Cache\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/cache/src/InvalidArgumentException.php', - 'Psr\\Clock\\ClockInterface' => __DIR__ . '/..' . '/psr/clock/src/ClockInterface.php', - 'Psr\\Container\\ContainerExceptionInterface' => __DIR__ . '/..' . '/psr/container/src/ContainerExceptionInterface.php', - 'Psr\\Container\\ContainerInterface' => __DIR__ . '/..' . '/psr/container/src/ContainerInterface.php', - 'Psr\\Container\\NotFoundExceptionInterface' => __DIR__ . '/..' . '/psr/container/src/NotFoundExceptionInterface.php', - 'Psr\\EventDispatcher\\EventDispatcherInterface' => __DIR__ . '/..' . '/psr/event-dispatcher/src/EventDispatcherInterface.php', - 'Psr\\EventDispatcher\\ListenerProviderInterface' => __DIR__ . '/..' . '/psr/event-dispatcher/src/ListenerProviderInterface.php', - 'Psr\\EventDispatcher\\StoppableEventInterface' => __DIR__ . '/..' . '/psr/event-dispatcher/src/StoppableEventInterface.php', - 'Psr\\Http\\Client\\ClientExceptionInterface' => __DIR__ . '/..' . '/psr/http-client/src/ClientExceptionInterface.php', - 'Psr\\Http\\Client\\ClientInterface' => __DIR__ . '/..' . '/psr/http-client/src/ClientInterface.php', - 'Psr\\Http\\Client\\NetworkExceptionInterface' => __DIR__ . '/..' . '/psr/http-client/src/NetworkExceptionInterface.php', - 'Psr\\Http\\Client\\RequestExceptionInterface' => __DIR__ . '/..' . '/psr/http-client/src/RequestExceptionInterface.php', - 'Psr\\Http\\Message\\MessageInterface' => __DIR__ . '/..' . '/psr/http-message/src/MessageInterface.php', - 'Psr\\Http\\Message\\RequestFactoryInterface' => __DIR__ . '/..' . '/psr/http-factory/src/RequestFactoryInterface.php', - 'Psr\\Http\\Message\\RequestInterface' => __DIR__ . '/..' . '/psr/http-message/src/RequestInterface.php', - 'Psr\\Http\\Message\\ResponseFactoryInterface' => __DIR__ . '/..' . '/psr/http-factory/src/ResponseFactoryInterface.php', - 'Psr\\Http\\Message\\ResponseInterface' => __DIR__ . '/..' . '/psr/http-message/src/ResponseInterface.php', - 'Psr\\Http\\Message\\ServerRequestFactoryInterface' => __DIR__ . '/..' . '/psr/http-factory/src/ServerRequestFactoryInterface.php', - 'Psr\\Http\\Message\\ServerRequestInterface' => __DIR__ . '/..' . '/psr/http-message/src/ServerRequestInterface.php', - 'Psr\\Http\\Message\\StreamFactoryInterface' => __DIR__ . '/..' . '/psr/http-factory/src/StreamFactoryInterface.php', - 'Psr\\Http\\Message\\StreamInterface' => __DIR__ . '/..' . '/psr/http-message/src/StreamInterface.php', - 'Psr\\Http\\Message\\UploadedFileFactoryInterface' => __DIR__ . '/..' . '/psr/http-factory/src/UploadedFileFactoryInterface.php', - 'Psr\\Http\\Message\\UploadedFileInterface' => __DIR__ . '/..' . '/psr/http-message/src/UploadedFileInterface.php', - 'Psr\\Http\\Message\\UriFactoryInterface' => __DIR__ . '/..' . '/psr/http-factory/src/UriFactoryInterface.php', - 'Psr\\Http\\Message\\UriInterface' => __DIR__ . '/..' . '/psr/http-message/src/UriInterface.php', - 'Psr\\Log\\AbstractLogger' => __DIR__ . '/..' . '/psr/log/src/AbstractLogger.php', - 'Psr\\Log\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/log/src/InvalidArgumentException.php', - 'Psr\\Log\\LogLevel' => __DIR__ . '/..' . '/psr/log/src/LogLevel.php', - 'Psr\\Log\\LoggerAwareInterface' => __DIR__ . '/..' . '/psr/log/src/LoggerAwareInterface.php', - 'Psr\\Log\\LoggerAwareTrait' => __DIR__ . '/..' . '/psr/log/src/LoggerAwareTrait.php', - 'Psr\\Log\\LoggerInterface' => __DIR__ . '/..' . '/psr/log/src/LoggerInterface.php', - 'Psr\\Log\\LoggerTrait' => __DIR__ . '/..' . '/psr/log/src/LoggerTrait.php', - 'Psr\\Log\\NullLogger' => __DIR__ . '/..' . '/psr/log/src/NullLogger.php', - 'Psr\\SimpleCache\\CacheException' => __DIR__ . '/..' . '/psr/simple-cache/src/CacheException.php', - 'Psr\\SimpleCache\\CacheInterface' => __DIR__ . '/..' . '/psr/simple-cache/src/CacheInterface.php', - 'Psr\\SimpleCache\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/simple-cache/src/InvalidArgumentException.php', - 'Psy\\CodeCleaner' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner.php', - 'Psy\\CodeCleaner\\AbstractClassPass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/AbstractClassPass.php', - 'Psy\\CodeCleaner\\AssignThisVariablePass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/AssignThisVariablePass.php', - 'Psy\\CodeCleaner\\CallTimePassByReferencePass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/CallTimePassByReferencePass.php', - 'Psy\\CodeCleaner\\CalledClassPass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/CalledClassPass.php', - 'Psy\\CodeCleaner\\CodeCleanerPass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/CodeCleanerPass.php', - 'Psy\\CodeCleaner\\EmptyArrayDimFetchPass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/EmptyArrayDimFetchPass.php', - 'Psy\\CodeCleaner\\ExitPass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/ExitPass.php', - 'Psy\\CodeCleaner\\FinalClassPass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/FinalClassPass.php', - 'Psy\\CodeCleaner\\FunctionContextPass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/FunctionContextPass.php', - 'Psy\\CodeCleaner\\FunctionReturnInWriteContextPass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/FunctionReturnInWriteContextPass.php', - 'Psy\\CodeCleaner\\ImplicitReturnPass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/ImplicitReturnPass.php', - 'Psy\\CodeCleaner\\IssetPass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/IssetPass.php', - 'Psy\\CodeCleaner\\LabelContextPass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/LabelContextPass.php', - 'Psy\\CodeCleaner\\LeavePsyshAlonePass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/LeavePsyshAlonePass.php', - 'Psy\\CodeCleaner\\ListPass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/ListPass.php', - 'Psy\\CodeCleaner\\LoopContextPass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/LoopContextPass.php', - 'Psy\\CodeCleaner\\MagicConstantsPass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/MagicConstantsPass.php', - 'Psy\\CodeCleaner\\NamespaceAwarePass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/NamespaceAwarePass.php', - 'Psy\\CodeCleaner\\NamespacePass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/NamespacePass.php', - 'Psy\\CodeCleaner\\NoReturnValue' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/NoReturnValue.php', - 'Psy\\CodeCleaner\\PassableByReferencePass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/PassableByReferencePass.php', - 'Psy\\CodeCleaner\\RequirePass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/RequirePass.php', - 'Psy\\CodeCleaner\\ReturnTypePass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/ReturnTypePass.php', - 'Psy\\CodeCleaner\\StrictTypesPass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/StrictTypesPass.php', - 'Psy\\CodeCleaner\\UseStatementPass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/UseStatementPass.php', - 'Psy\\CodeCleaner\\ValidClassNamePass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/ValidClassNamePass.php', - 'Psy\\CodeCleaner\\ValidConstructorPass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/ValidConstructorPass.php', - 'Psy\\CodeCleaner\\ValidFunctionNamePass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/ValidFunctionNamePass.php', - 'Psy\\Command\\BufferCommand' => __DIR__ . '/..' . '/psy/psysh/src/Command/BufferCommand.php', - 'Psy\\Command\\ClearCommand' => __DIR__ . '/..' . '/psy/psysh/src/Command/ClearCommand.php', - 'Psy\\Command\\CodeArgumentParser' => __DIR__ . '/..' . '/psy/psysh/src/Command/CodeArgumentParser.php', - 'Psy\\Command\\Command' => __DIR__ . '/..' . '/psy/psysh/src/Command/Command.php', - 'Psy\\Command\\DocCommand' => __DIR__ . '/..' . '/psy/psysh/src/Command/DocCommand.php', - 'Psy\\Command\\DumpCommand' => __DIR__ . '/..' . '/psy/psysh/src/Command/DumpCommand.php', - 'Psy\\Command\\EditCommand' => __DIR__ . '/..' . '/psy/psysh/src/Command/EditCommand.php', - 'Psy\\Command\\ExitCommand' => __DIR__ . '/..' . '/psy/psysh/src/Command/ExitCommand.php', - 'Psy\\Command\\HelpCommand' => __DIR__ . '/..' . '/psy/psysh/src/Command/HelpCommand.php', - 'Psy\\Command\\HistoryCommand' => __DIR__ . '/..' . '/psy/psysh/src/Command/HistoryCommand.php', - 'Psy\\Command\\ListCommand' => __DIR__ . '/..' . '/psy/psysh/src/Command/ListCommand.php', - 'Psy\\Command\\ListCommand\\ClassConstantEnumerator' => __DIR__ . '/..' . '/psy/psysh/src/Command/ListCommand/ClassConstantEnumerator.php', - 'Psy\\Command\\ListCommand\\ClassEnumerator' => __DIR__ . '/..' . '/psy/psysh/src/Command/ListCommand/ClassEnumerator.php', - 'Psy\\Command\\ListCommand\\ConstantEnumerator' => __DIR__ . '/..' . '/psy/psysh/src/Command/ListCommand/ConstantEnumerator.php', - 'Psy\\Command\\ListCommand\\Enumerator' => __DIR__ . '/..' . '/psy/psysh/src/Command/ListCommand/Enumerator.php', - 'Psy\\Command\\ListCommand\\FunctionEnumerator' => __DIR__ . '/..' . '/psy/psysh/src/Command/ListCommand/FunctionEnumerator.php', - 'Psy\\Command\\ListCommand\\GlobalVariableEnumerator' => __DIR__ . '/..' . '/psy/psysh/src/Command/ListCommand/GlobalVariableEnumerator.php', - 'Psy\\Command\\ListCommand\\MethodEnumerator' => __DIR__ . '/..' . '/psy/psysh/src/Command/ListCommand/MethodEnumerator.php', - 'Psy\\Command\\ListCommand\\PropertyEnumerator' => __DIR__ . '/..' . '/psy/psysh/src/Command/ListCommand/PropertyEnumerator.php', - 'Psy\\Command\\ListCommand\\VariableEnumerator' => __DIR__ . '/..' . '/psy/psysh/src/Command/ListCommand/VariableEnumerator.php', - 'Psy\\Command\\ParseCommand' => __DIR__ . '/..' . '/psy/psysh/src/Command/ParseCommand.php', - 'Psy\\Command\\PsyVersionCommand' => __DIR__ . '/..' . '/psy/psysh/src/Command/PsyVersionCommand.php', - 'Psy\\Command\\ReflectingCommand' => __DIR__ . '/..' . '/psy/psysh/src/Command/ReflectingCommand.php', - 'Psy\\Command\\ShowCommand' => __DIR__ . '/..' . '/psy/psysh/src/Command/ShowCommand.php', - 'Psy\\Command\\SudoCommand' => __DIR__ . '/..' . '/psy/psysh/src/Command/SudoCommand.php', - 'Psy\\Command\\ThrowUpCommand' => __DIR__ . '/..' . '/psy/psysh/src/Command/ThrowUpCommand.php', - 'Psy\\Command\\TimeitCommand' => __DIR__ . '/..' . '/psy/psysh/src/Command/TimeitCommand.php', - 'Psy\\Command\\TimeitCommand\\TimeitVisitor' => __DIR__ . '/..' . '/psy/psysh/src/Command/TimeitCommand/TimeitVisitor.php', - 'Psy\\Command\\TraceCommand' => __DIR__ . '/..' . '/psy/psysh/src/Command/TraceCommand.php', - 'Psy\\Command\\WhereamiCommand' => __DIR__ . '/..' . '/psy/psysh/src/Command/WhereamiCommand.php', - 'Psy\\Command\\WtfCommand' => __DIR__ . '/..' . '/psy/psysh/src/Command/WtfCommand.php', - 'Psy\\ConfigPaths' => __DIR__ . '/..' . '/psy/psysh/src/ConfigPaths.php', - 'Psy\\Configuration' => __DIR__ . '/..' . '/psy/psysh/src/Configuration.php', - 'Psy\\Context' => __DIR__ . '/..' . '/psy/psysh/src/Context.php', - 'Psy\\ContextAware' => __DIR__ . '/..' . '/psy/psysh/src/ContextAware.php', - 'Psy\\EnvInterface' => __DIR__ . '/..' . '/psy/psysh/src/EnvInterface.php', - 'Psy\\Exception\\BreakException' => __DIR__ . '/..' . '/psy/psysh/src/Exception/BreakException.php', - 'Psy\\Exception\\DeprecatedException' => __DIR__ . '/..' . '/psy/psysh/src/Exception/DeprecatedException.php', - 'Psy\\Exception\\ErrorException' => __DIR__ . '/..' . '/psy/psysh/src/Exception/ErrorException.php', - 'Psy\\Exception\\Exception' => __DIR__ . '/..' . '/psy/psysh/src/Exception/Exception.php', - 'Psy\\Exception\\FatalErrorException' => __DIR__ . '/..' . '/psy/psysh/src/Exception/FatalErrorException.php', - 'Psy\\Exception\\ParseErrorException' => __DIR__ . '/..' . '/psy/psysh/src/Exception/ParseErrorException.php', - 'Psy\\Exception\\RuntimeException' => __DIR__ . '/..' . '/psy/psysh/src/Exception/RuntimeException.php', - 'Psy\\Exception\\ThrowUpException' => __DIR__ . '/..' . '/psy/psysh/src/Exception/ThrowUpException.php', - 'Psy\\Exception\\UnexpectedTargetException' => __DIR__ . '/..' . '/psy/psysh/src/Exception/UnexpectedTargetException.php', - 'Psy\\ExecutionClosure' => __DIR__ . '/..' . '/psy/psysh/src/ExecutionClosure.php', - 'Psy\\ExecutionLoopClosure' => __DIR__ . '/..' . '/psy/psysh/src/ExecutionLoopClosure.php', - 'Psy\\ExecutionLoop\\AbstractListener' => __DIR__ . '/..' . '/psy/psysh/src/ExecutionLoop/AbstractListener.php', - 'Psy\\ExecutionLoop\\Listener' => __DIR__ . '/..' . '/psy/psysh/src/ExecutionLoop/Listener.php', - 'Psy\\ExecutionLoop\\ProcessForker' => __DIR__ . '/..' . '/psy/psysh/src/ExecutionLoop/ProcessForker.php', - 'Psy\\ExecutionLoop\\RunkitReloader' => __DIR__ . '/..' . '/psy/psysh/src/ExecutionLoop/RunkitReloader.php', - 'Psy\\Formatter\\CodeFormatter' => __DIR__ . '/..' . '/psy/psysh/src/Formatter/CodeFormatter.php', - 'Psy\\Formatter\\DocblockFormatter' => __DIR__ . '/..' . '/psy/psysh/src/Formatter/DocblockFormatter.php', - 'Psy\\Formatter\\ReflectorFormatter' => __DIR__ . '/..' . '/psy/psysh/src/Formatter/ReflectorFormatter.php', - 'Psy\\Formatter\\SignatureFormatter' => __DIR__ . '/..' . '/psy/psysh/src/Formatter/SignatureFormatter.php', - 'Psy\\Formatter\\TraceFormatter' => __DIR__ . '/..' . '/psy/psysh/src/Formatter/TraceFormatter.php', - 'Psy\\Input\\CodeArgument' => __DIR__ . '/..' . '/psy/psysh/src/Input/CodeArgument.php', - 'Psy\\Input\\FilterOptions' => __DIR__ . '/..' . '/psy/psysh/src/Input/FilterOptions.php', - 'Psy\\Input\\ShellInput' => __DIR__ . '/..' . '/psy/psysh/src/Input/ShellInput.php', - 'Psy\\Input\\SilentInput' => __DIR__ . '/..' . '/psy/psysh/src/Input/SilentInput.php', - 'Psy\\Output\\OutputPager' => __DIR__ . '/..' . '/psy/psysh/src/Output/OutputPager.php', - 'Psy\\Output\\PassthruPager' => __DIR__ . '/..' . '/psy/psysh/src/Output/PassthruPager.php', - 'Psy\\Output\\ProcOutputPager' => __DIR__ . '/..' . '/psy/psysh/src/Output/ProcOutputPager.php', - 'Psy\\Output\\ShellOutput' => __DIR__ . '/..' . '/psy/psysh/src/Output/ShellOutput.php', - 'Psy\\Output\\Theme' => __DIR__ . '/..' . '/psy/psysh/src/Output/Theme.php', - 'Psy\\ParserFactory' => __DIR__ . '/..' . '/psy/psysh/src/ParserFactory.php', - 'Psy\\Readline\\GNUReadline' => __DIR__ . '/..' . '/psy/psysh/src/Readline/GNUReadline.php', - 'Psy\\Readline\\Hoa\\Autocompleter' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/Autocompleter.php', - 'Psy\\Readline\\Hoa\\AutocompleterAggregate' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/AutocompleterAggregate.php', - 'Psy\\Readline\\Hoa\\AutocompleterPath' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/AutocompleterPath.php', - 'Psy\\Readline\\Hoa\\AutocompleterWord' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/AutocompleterWord.php', - 'Psy\\Readline\\Hoa\\Console' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/Console.php', - 'Psy\\Readline\\Hoa\\ConsoleCursor' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/ConsoleCursor.php', - 'Psy\\Readline\\Hoa\\ConsoleException' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/ConsoleException.php', - 'Psy\\Readline\\Hoa\\ConsoleInput' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/ConsoleInput.php', - 'Psy\\Readline\\Hoa\\ConsoleOutput' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/ConsoleOutput.php', - 'Psy\\Readline\\Hoa\\ConsoleProcessus' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/ConsoleProcessus.php', - 'Psy\\Readline\\Hoa\\ConsoleTput' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/ConsoleTput.php', - 'Psy\\Readline\\Hoa\\ConsoleWindow' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/ConsoleWindow.php', - 'Psy\\Readline\\Hoa\\Event' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/Event.php', - 'Psy\\Readline\\Hoa\\EventBucket' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/EventBucket.php', - 'Psy\\Readline\\Hoa\\EventException' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/EventException.php', - 'Psy\\Readline\\Hoa\\EventListenable' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/EventListenable.php', - 'Psy\\Readline\\Hoa\\EventListener' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/EventListener.php', - 'Psy\\Readline\\Hoa\\EventListens' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/EventListens.php', - 'Psy\\Readline\\Hoa\\EventSource' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/EventSource.php', - 'Psy\\Readline\\Hoa\\Exception' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/Exception.php', - 'Psy\\Readline\\Hoa\\ExceptionIdle' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/ExceptionIdle.php', - 'Psy\\Readline\\Hoa\\File' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/File.php', - 'Psy\\Readline\\Hoa\\FileDirectory' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/FileDirectory.php', - 'Psy\\Readline\\Hoa\\FileDoesNotExistException' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/FileDoesNotExistException.php', - 'Psy\\Readline\\Hoa\\FileException' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/FileException.php', - 'Psy\\Readline\\Hoa\\FileFinder' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/FileFinder.php', - 'Psy\\Readline\\Hoa\\FileGeneric' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/FileGeneric.php', - 'Psy\\Readline\\Hoa\\FileLink' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/FileLink.php', - 'Psy\\Readline\\Hoa\\FileLinkRead' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/FileLinkRead.php', - 'Psy\\Readline\\Hoa\\FileLinkReadWrite' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/FileLinkReadWrite.php', - 'Psy\\Readline\\Hoa\\FileRead' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/FileRead.php', - 'Psy\\Readline\\Hoa\\FileReadWrite' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/FileReadWrite.php', - 'Psy\\Readline\\Hoa\\IStream' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/IStream.php', - 'Psy\\Readline\\Hoa\\IteratorFileSystem' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/IteratorFileSystem.php', - 'Psy\\Readline\\Hoa\\IteratorRecursiveDirectory' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/IteratorRecursiveDirectory.php', - 'Psy\\Readline\\Hoa\\IteratorSplFileInfo' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/IteratorSplFileInfo.php', - 'Psy\\Readline\\Hoa\\Protocol' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/Protocol.php', - 'Psy\\Readline\\Hoa\\ProtocolException' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/ProtocolException.php', - 'Psy\\Readline\\Hoa\\ProtocolNode' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/ProtocolNode.php', - 'Psy\\Readline\\Hoa\\ProtocolNodeLibrary' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/ProtocolNodeLibrary.php', - 'Psy\\Readline\\Hoa\\ProtocolWrapper' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/ProtocolWrapper.php', - 'Psy\\Readline\\Hoa\\Readline' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/Readline.php', - 'Psy\\Readline\\Hoa\\Stream' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/Stream.php', - 'Psy\\Readline\\Hoa\\StreamBufferable' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/StreamBufferable.php', - 'Psy\\Readline\\Hoa\\StreamContext' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/StreamContext.php', - 'Psy\\Readline\\Hoa\\StreamException' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/StreamException.php', - 'Psy\\Readline\\Hoa\\StreamIn' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/StreamIn.php', - 'Psy\\Readline\\Hoa\\StreamLockable' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/StreamLockable.php', - 'Psy\\Readline\\Hoa\\StreamOut' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/StreamOut.php', - 'Psy\\Readline\\Hoa\\StreamPathable' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/StreamPathable.php', - 'Psy\\Readline\\Hoa\\StreamPointable' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/StreamPointable.php', - 'Psy\\Readline\\Hoa\\StreamStatable' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/StreamStatable.php', - 'Psy\\Readline\\Hoa\\StreamTouchable' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/StreamTouchable.php', - 'Psy\\Readline\\Hoa\\Ustring' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/Ustring.php', - 'Psy\\Readline\\Hoa\\Xcallable' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Hoa/Xcallable.php', - 'Psy\\Readline\\Libedit' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Libedit.php', - 'Psy\\Readline\\Readline' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Readline.php', - 'Psy\\Readline\\Transient' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Transient.php', - 'Psy\\Readline\\Userland' => __DIR__ . '/..' . '/psy/psysh/src/Readline/Userland.php', - 'Psy\\Reflection\\ReflectionConstant' => __DIR__ . '/..' . '/psy/psysh/src/Reflection/ReflectionConstant.php', - 'Psy\\Reflection\\ReflectionLanguageConstruct' => __DIR__ . '/..' . '/psy/psysh/src/Reflection/ReflectionLanguageConstruct.php', - 'Psy\\Reflection\\ReflectionLanguageConstructParameter' => __DIR__ . '/..' . '/psy/psysh/src/Reflection/ReflectionLanguageConstructParameter.php', - 'Psy\\Reflection\\ReflectionNamespace' => __DIR__ . '/..' . '/psy/psysh/src/Reflection/ReflectionNamespace.php', - 'Psy\\Shell' => __DIR__ . '/..' . '/psy/psysh/src/Shell.php', - 'Psy\\Sudo' => __DIR__ . '/..' . '/psy/psysh/src/Sudo.php', - 'Psy\\Sudo\\SudoVisitor' => __DIR__ . '/..' . '/psy/psysh/src/Sudo/SudoVisitor.php', - 'Psy\\SuperglobalsEnv' => __DIR__ . '/..' . '/psy/psysh/src/SuperglobalsEnv.php', - 'Psy\\SystemEnv' => __DIR__ . '/..' . '/psy/psysh/src/SystemEnv.php', - 'Psy\\TabCompletion\\AutoCompleter' => __DIR__ . '/..' . '/psy/psysh/src/TabCompletion/AutoCompleter.php', - 'Psy\\TabCompletion\\Matcher\\AbstractContextAwareMatcher' => __DIR__ . '/..' . '/psy/psysh/src/TabCompletion/Matcher/AbstractContextAwareMatcher.php', - 'Psy\\TabCompletion\\Matcher\\AbstractDefaultParametersMatcher' => __DIR__ . '/..' . '/psy/psysh/src/TabCompletion/Matcher/AbstractDefaultParametersMatcher.php', - 'Psy\\TabCompletion\\Matcher\\AbstractMatcher' => __DIR__ . '/..' . '/psy/psysh/src/TabCompletion/Matcher/AbstractMatcher.php', - 'Psy\\TabCompletion\\Matcher\\ClassAttributesMatcher' => __DIR__ . '/..' . '/psy/psysh/src/TabCompletion/Matcher/ClassAttributesMatcher.php', - 'Psy\\TabCompletion\\Matcher\\ClassMethodDefaultParametersMatcher' => __DIR__ . '/..' . '/psy/psysh/src/TabCompletion/Matcher/ClassMethodDefaultParametersMatcher.php', - 'Psy\\TabCompletion\\Matcher\\ClassMethodsMatcher' => __DIR__ . '/..' . '/psy/psysh/src/TabCompletion/Matcher/ClassMethodsMatcher.php', - 'Psy\\TabCompletion\\Matcher\\ClassNamesMatcher' => __DIR__ . '/..' . '/psy/psysh/src/TabCompletion/Matcher/ClassNamesMatcher.php', - 'Psy\\TabCompletion\\Matcher\\CommandsMatcher' => __DIR__ . '/..' . '/psy/psysh/src/TabCompletion/Matcher/CommandsMatcher.php', - 'Psy\\TabCompletion\\Matcher\\ConstantsMatcher' => __DIR__ . '/..' . '/psy/psysh/src/TabCompletion/Matcher/ConstantsMatcher.php', - 'Psy\\TabCompletion\\Matcher\\FunctionDefaultParametersMatcher' => __DIR__ . '/..' . '/psy/psysh/src/TabCompletion/Matcher/FunctionDefaultParametersMatcher.php', - 'Psy\\TabCompletion\\Matcher\\FunctionsMatcher' => __DIR__ . '/..' . '/psy/psysh/src/TabCompletion/Matcher/FunctionsMatcher.php', - 'Psy\\TabCompletion\\Matcher\\KeywordsMatcher' => __DIR__ . '/..' . '/psy/psysh/src/TabCompletion/Matcher/KeywordsMatcher.php', - 'Psy\\TabCompletion\\Matcher\\MongoClientMatcher' => __DIR__ . '/..' . '/psy/psysh/src/TabCompletion/Matcher/MongoClientMatcher.php', - 'Psy\\TabCompletion\\Matcher\\MongoDatabaseMatcher' => __DIR__ . '/..' . '/psy/psysh/src/TabCompletion/Matcher/MongoDatabaseMatcher.php', - 'Psy\\TabCompletion\\Matcher\\ObjectAttributesMatcher' => __DIR__ . '/..' . '/psy/psysh/src/TabCompletion/Matcher/ObjectAttributesMatcher.php', - 'Psy\\TabCompletion\\Matcher\\ObjectMethodDefaultParametersMatcher' => __DIR__ . '/..' . '/psy/psysh/src/TabCompletion/Matcher/ObjectMethodDefaultParametersMatcher.php', - 'Psy\\TabCompletion\\Matcher\\ObjectMethodsMatcher' => __DIR__ . '/..' . '/psy/psysh/src/TabCompletion/Matcher/ObjectMethodsMatcher.php', - 'Psy\\TabCompletion\\Matcher\\VariablesMatcher' => __DIR__ . '/..' . '/psy/psysh/src/TabCompletion/Matcher/VariablesMatcher.php', - 'Psy\\Util\\Docblock' => __DIR__ . '/..' . '/psy/psysh/src/Util/Docblock.php', - 'Psy\\Util\\Json' => __DIR__ . '/..' . '/psy/psysh/src/Util/Json.php', - 'Psy\\Util\\Mirror' => __DIR__ . '/..' . '/psy/psysh/src/Util/Mirror.php', - 'Psy\\Util\\Str' => __DIR__ . '/..' . '/psy/psysh/src/Util/Str.php', - 'Psy\\VarDumper\\Cloner' => __DIR__ . '/..' . '/psy/psysh/src/VarDumper/Cloner.php', - 'Psy\\VarDumper\\Dumper' => __DIR__ . '/..' . '/psy/psysh/src/VarDumper/Dumper.php', - 'Psy\\VarDumper\\Presenter' => __DIR__ . '/..' . '/psy/psysh/src/VarDumper/Presenter.php', - 'Psy\\VarDumper\\PresenterAware' => __DIR__ . '/..' . '/psy/psysh/src/VarDumper/PresenterAware.php', - 'Psy\\VersionUpdater\\Checker' => __DIR__ . '/..' . '/psy/psysh/src/VersionUpdater/Checker.php', - 'Psy\\VersionUpdater\\Downloader' => __DIR__ . '/..' . '/psy/psysh/src/VersionUpdater/Downloader.php', - 'Psy\\VersionUpdater\\Downloader\\CurlDownloader' => __DIR__ . '/..' . '/psy/psysh/src/VersionUpdater/Downloader/CurlDownloader.php', - 'Psy\\VersionUpdater\\Downloader\\Factory' => __DIR__ . '/..' . '/psy/psysh/src/VersionUpdater/Downloader/Factory.php', - 'Psy\\VersionUpdater\\Downloader\\FileDownloader' => __DIR__ . '/..' . '/psy/psysh/src/VersionUpdater/Downloader/FileDownloader.php', - 'Psy\\VersionUpdater\\GitHubChecker' => __DIR__ . '/..' . '/psy/psysh/src/VersionUpdater/GitHubChecker.php', - 'Psy\\VersionUpdater\\Installer' => __DIR__ . '/..' . '/psy/psysh/src/VersionUpdater/Installer.php', - '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', - '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', - 'Ramsey\\Collection\\ArrayInterface' => __DIR__ . '/..' . '/ramsey/collection/src/ArrayInterface.php', - 'Ramsey\\Collection\\Collection' => __DIR__ . '/..' . '/ramsey/collection/src/Collection.php', - 'Ramsey\\Collection\\CollectionInterface' => __DIR__ . '/..' . '/ramsey/collection/src/CollectionInterface.php', - 'Ramsey\\Collection\\DoubleEndedQueue' => __DIR__ . '/..' . '/ramsey/collection/src/DoubleEndedQueue.php', - 'Ramsey\\Collection\\DoubleEndedQueueInterface' => __DIR__ . '/..' . '/ramsey/collection/src/DoubleEndedQueueInterface.php', - 'Ramsey\\Collection\\Exception\\CollectionException' => __DIR__ . '/..' . '/ramsey/collection/src/Exception/CollectionException.php', - 'Ramsey\\Collection\\Exception\\CollectionMismatchException' => __DIR__ . '/..' . '/ramsey/collection/src/Exception/CollectionMismatchException.php', - 'Ramsey\\Collection\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/ramsey/collection/src/Exception/InvalidArgumentException.php', - 'Ramsey\\Collection\\Exception\\InvalidPropertyOrMethod' => __DIR__ . '/..' . '/ramsey/collection/src/Exception/InvalidPropertyOrMethod.php', - 'Ramsey\\Collection\\Exception\\NoSuchElementException' => __DIR__ . '/..' . '/ramsey/collection/src/Exception/NoSuchElementException.php', - 'Ramsey\\Collection\\Exception\\OutOfBoundsException' => __DIR__ . '/..' . '/ramsey/collection/src/Exception/OutOfBoundsException.php', - 'Ramsey\\Collection\\Exception\\UnsupportedOperationException' => __DIR__ . '/..' . '/ramsey/collection/src/Exception/UnsupportedOperationException.php', - 'Ramsey\\Collection\\GenericArray' => __DIR__ . '/..' . '/ramsey/collection/src/GenericArray.php', - 'Ramsey\\Collection\\Map\\AbstractMap' => __DIR__ . '/..' . '/ramsey/collection/src/Map/AbstractMap.php', - 'Ramsey\\Collection\\Map\\AbstractTypedMap' => __DIR__ . '/..' . '/ramsey/collection/src/Map/AbstractTypedMap.php', - 'Ramsey\\Collection\\Map\\AssociativeArrayMap' => __DIR__ . '/..' . '/ramsey/collection/src/Map/AssociativeArrayMap.php', - 'Ramsey\\Collection\\Map\\MapInterface' => __DIR__ . '/..' . '/ramsey/collection/src/Map/MapInterface.php', - 'Ramsey\\Collection\\Map\\NamedParameterMap' => __DIR__ . '/..' . '/ramsey/collection/src/Map/NamedParameterMap.php', - 'Ramsey\\Collection\\Map\\TypedMap' => __DIR__ . '/..' . '/ramsey/collection/src/Map/TypedMap.php', - 'Ramsey\\Collection\\Map\\TypedMapInterface' => __DIR__ . '/..' . '/ramsey/collection/src/Map/TypedMapInterface.php', - 'Ramsey\\Collection\\Queue' => __DIR__ . '/..' . '/ramsey/collection/src/Queue.php', - 'Ramsey\\Collection\\QueueInterface' => __DIR__ . '/..' . '/ramsey/collection/src/QueueInterface.php', - 'Ramsey\\Collection\\Set' => __DIR__ . '/..' . '/ramsey/collection/src/Set.php', - 'Ramsey\\Collection\\Sort' => __DIR__ . '/..' . '/ramsey/collection/src/Sort.php', - 'Ramsey\\Collection\\Tool\\TypeTrait' => __DIR__ . '/..' . '/ramsey/collection/src/Tool/TypeTrait.php', - 'Ramsey\\Collection\\Tool\\ValueExtractorTrait' => __DIR__ . '/..' . '/ramsey/collection/src/Tool/ValueExtractorTrait.php', - 'Ramsey\\Collection\\Tool\\ValueToStringTrait' => __DIR__ . '/..' . '/ramsey/collection/src/Tool/ValueToStringTrait.php', - 'Ramsey\\Uuid\\BinaryUtils' => __DIR__ . '/..' . '/ramsey/uuid/src/BinaryUtils.php', - 'Ramsey\\Uuid\\Builder\\BuilderCollection' => __DIR__ . '/..' . '/ramsey/uuid/src/Builder/BuilderCollection.php', - 'Ramsey\\Uuid\\Builder\\DefaultUuidBuilder' => __DIR__ . '/..' . '/ramsey/uuid/src/Builder/DefaultUuidBuilder.php', - 'Ramsey\\Uuid\\Builder\\DegradedUuidBuilder' => __DIR__ . '/..' . '/ramsey/uuid/src/Builder/DegradedUuidBuilder.php', - 'Ramsey\\Uuid\\Builder\\FallbackBuilder' => __DIR__ . '/..' . '/ramsey/uuid/src/Builder/FallbackBuilder.php', - 'Ramsey\\Uuid\\Builder\\UuidBuilderInterface' => __DIR__ . '/..' . '/ramsey/uuid/src/Builder/UuidBuilderInterface.php', - 'Ramsey\\Uuid\\Codec\\CodecInterface' => __DIR__ . '/..' . '/ramsey/uuid/src/Codec/CodecInterface.php', - 'Ramsey\\Uuid\\Codec\\GuidStringCodec' => __DIR__ . '/..' . '/ramsey/uuid/src/Codec/GuidStringCodec.php', - 'Ramsey\\Uuid\\Codec\\OrderedTimeCodec' => __DIR__ . '/..' . '/ramsey/uuid/src/Codec/OrderedTimeCodec.php', - 'Ramsey\\Uuid\\Codec\\StringCodec' => __DIR__ . '/..' . '/ramsey/uuid/src/Codec/StringCodec.php', - 'Ramsey\\Uuid\\Codec\\TimestampFirstCombCodec' => __DIR__ . '/..' . '/ramsey/uuid/src/Codec/TimestampFirstCombCodec.php', - 'Ramsey\\Uuid\\Codec\\TimestampLastCombCodec' => __DIR__ . '/..' . '/ramsey/uuid/src/Codec/TimestampLastCombCodec.php', - 'Ramsey\\Uuid\\Converter\\NumberConverterInterface' => __DIR__ . '/..' . '/ramsey/uuid/src/Converter/NumberConverterInterface.php', - 'Ramsey\\Uuid\\Converter\\Number\\BigNumberConverter' => __DIR__ . '/..' . '/ramsey/uuid/src/Converter/Number/BigNumberConverter.php', - 'Ramsey\\Uuid\\Converter\\Number\\DegradedNumberConverter' => __DIR__ . '/..' . '/ramsey/uuid/src/Converter/Number/DegradedNumberConverter.php', - 'Ramsey\\Uuid\\Converter\\Number\\GenericNumberConverter' => __DIR__ . '/..' . '/ramsey/uuid/src/Converter/Number/GenericNumberConverter.php', - 'Ramsey\\Uuid\\Converter\\TimeConverterInterface' => __DIR__ . '/..' . '/ramsey/uuid/src/Converter/TimeConverterInterface.php', - 'Ramsey\\Uuid\\Converter\\Time\\BigNumberTimeConverter' => __DIR__ . '/..' . '/ramsey/uuid/src/Converter/Time/BigNumberTimeConverter.php', - 'Ramsey\\Uuid\\Converter\\Time\\DegradedTimeConverter' => __DIR__ . '/..' . '/ramsey/uuid/src/Converter/Time/DegradedTimeConverter.php', - 'Ramsey\\Uuid\\Converter\\Time\\GenericTimeConverter' => __DIR__ . '/..' . '/ramsey/uuid/src/Converter/Time/GenericTimeConverter.php', - 'Ramsey\\Uuid\\Converter\\Time\\PhpTimeConverter' => __DIR__ . '/..' . '/ramsey/uuid/src/Converter/Time/PhpTimeConverter.php', - 'Ramsey\\Uuid\\Converter\\Time\\UnixTimeConverter' => __DIR__ . '/..' . '/ramsey/uuid/src/Converter/Time/UnixTimeConverter.php', - 'Ramsey\\Uuid\\DegradedUuid' => __DIR__ . '/..' . '/ramsey/uuid/src/DegradedUuid.php', - 'Ramsey\\Uuid\\DeprecatedUuidInterface' => __DIR__ . '/..' . '/ramsey/uuid/src/DeprecatedUuidInterface.php', - 'Ramsey\\Uuid\\DeprecatedUuidMethodsTrait' => __DIR__ . '/..' . '/ramsey/uuid/src/DeprecatedUuidMethodsTrait.php', - 'Ramsey\\Uuid\\Exception\\BuilderNotFoundException' => __DIR__ . '/..' . '/ramsey/uuid/src/Exception/BuilderNotFoundException.php', - 'Ramsey\\Uuid\\Exception\\DateTimeException' => __DIR__ . '/..' . '/ramsey/uuid/src/Exception/DateTimeException.php', - 'Ramsey\\Uuid\\Exception\\DceSecurityException' => __DIR__ . '/..' . '/ramsey/uuid/src/Exception/DceSecurityException.php', - 'Ramsey\\Uuid\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/ramsey/uuid/src/Exception/InvalidArgumentException.php', - 'Ramsey\\Uuid\\Exception\\InvalidBytesException' => __DIR__ . '/..' . '/ramsey/uuid/src/Exception/InvalidBytesException.php', - 'Ramsey\\Uuid\\Exception\\InvalidUuidStringException' => __DIR__ . '/..' . '/ramsey/uuid/src/Exception/InvalidUuidStringException.php', - 'Ramsey\\Uuid\\Exception\\NameException' => __DIR__ . '/..' . '/ramsey/uuid/src/Exception/NameException.php', - 'Ramsey\\Uuid\\Exception\\NodeException' => __DIR__ . '/..' . '/ramsey/uuid/src/Exception/NodeException.php', - 'Ramsey\\Uuid\\Exception\\RandomSourceException' => __DIR__ . '/..' . '/ramsey/uuid/src/Exception/RandomSourceException.php', - 'Ramsey\\Uuid\\Exception\\TimeSourceException' => __DIR__ . '/..' . '/ramsey/uuid/src/Exception/TimeSourceException.php', - 'Ramsey\\Uuid\\Exception\\UnableToBuildUuidException' => __DIR__ . '/..' . '/ramsey/uuid/src/Exception/UnableToBuildUuidException.php', - 'Ramsey\\Uuid\\Exception\\UnsupportedOperationException' => __DIR__ . '/..' . '/ramsey/uuid/src/Exception/UnsupportedOperationException.php', - 'Ramsey\\Uuid\\Exception\\UuidExceptionInterface' => __DIR__ . '/..' . '/ramsey/uuid/src/Exception/UuidExceptionInterface.php', - 'Ramsey\\Uuid\\FeatureSet' => __DIR__ . '/..' . '/ramsey/uuid/src/FeatureSet.php', - 'Ramsey\\Uuid\\Fields\\FieldsInterface' => __DIR__ . '/..' . '/ramsey/uuid/src/Fields/FieldsInterface.php', - 'Ramsey\\Uuid\\Fields\\SerializableFieldsTrait' => __DIR__ . '/..' . '/ramsey/uuid/src/Fields/SerializableFieldsTrait.php', - 'Ramsey\\Uuid\\Generator\\CombGenerator' => __DIR__ . '/..' . '/ramsey/uuid/src/Generator/CombGenerator.php', - 'Ramsey\\Uuid\\Generator\\DceSecurityGenerator' => __DIR__ . '/..' . '/ramsey/uuid/src/Generator/DceSecurityGenerator.php', - 'Ramsey\\Uuid\\Generator\\DceSecurityGeneratorInterface' => __DIR__ . '/..' . '/ramsey/uuid/src/Generator/DceSecurityGeneratorInterface.php', - 'Ramsey\\Uuid\\Generator\\DefaultNameGenerator' => __DIR__ . '/..' . '/ramsey/uuid/src/Generator/DefaultNameGenerator.php', - 'Ramsey\\Uuid\\Generator\\DefaultTimeGenerator' => __DIR__ . '/..' . '/ramsey/uuid/src/Generator/DefaultTimeGenerator.php', - 'Ramsey\\Uuid\\Generator\\NameGeneratorFactory' => __DIR__ . '/..' . '/ramsey/uuid/src/Generator/NameGeneratorFactory.php', - 'Ramsey\\Uuid\\Generator\\NameGeneratorInterface' => __DIR__ . '/..' . '/ramsey/uuid/src/Generator/NameGeneratorInterface.php', - 'Ramsey\\Uuid\\Generator\\PeclUuidNameGenerator' => __DIR__ . '/..' . '/ramsey/uuid/src/Generator/PeclUuidNameGenerator.php', - 'Ramsey\\Uuid\\Generator\\PeclUuidRandomGenerator' => __DIR__ . '/..' . '/ramsey/uuid/src/Generator/PeclUuidRandomGenerator.php', - 'Ramsey\\Uuid\\Generator\\PeclUuidTimeGenerator' => __DIR__ . '/..' . '/ramsey/uuid/src/Generator/PeclUuidTimeGenerator.php', - 'Ramsey\\Uuid\\Generator\\RandomBytesGenerator' => __DIR__ . '/..' . '/ramsey/uuid/src/Generator/RandomBytesGenerator.php', - 'Ramsey\\Uuid\\Generator\\RandomGeneratorFactory' => __DIR__ . '/..' . '/ramsey/uuid/src/Generator/RandomGeneratorFactory.php', - 'Ramsey\\Uuid\\Generator\\RandomGeneratorInterface' => __DIR__ . '/..' . '/ramsey/uuid/src/Generator/RandomGeneratorInterface.php', - 'Ramsey\\Uuid\\Generator\\RandomLibAdapter' => __DIR__ . '/..' . '/ramsey/uuid/src/Generator/RandomLibAdapter.php', - 'Ramsey\\Uuid\\Generator\\TimeGeneratorFactory' => __DIR__ . '/..' . '/ramsey/uuid/src/Generator/TimeGeneratorFactory.php', - 'Ramsey\\Uuid\\Generator\\TimeGeneratorInterface' => __DIR__ . '/..' . '/ramsey/uuid/src/Generator/TimeGeneratorInterface.php', - 'Ramsey\\Uuid\\Generator\\UnixTimeGenerator' => __DIR__ . '/..' . '/ramsey/uuid/src/Generator/UnixTimeGenerator.php', - 'Ramsey\\Uuid\\Guid\\Fields' => __DIR__ . '/..' . '/ramsey/uuid/src/Guid/Fields.php', - 'Ramsey\\Uuid\\Guid\\Guid' => __DIR__ . '/..' . '/ramsey/uuid/src/Guid/Guid.php', - 'Ramsey\\Uuid\\Guid\\GuidBuilder' => __DIR__ . '/..' . '/ramsey/uuid/src/Guid/GuidBuilder.php', - 'Ramsey\\Uuid\\Lazy\\LazyUuidFromString' => __DIR__ . '/..' . '/ramsey/uuid/src/Lazy/LazyUuidFromString.php', - 'Ramsey\\Uuid\\Math\\BrickMathCalculator' => __DIR__ . '/..' . '/ramsey/uuid/src/Math/BrickMathCalculator.php', - 'Ramsey\\Uuid\\Math\\CalculatorInterface' => __DIR__ . '/..' . '/ramsey/uuid/src/Math/CalculatorInterface.php', - 'Ramsey\\Uuid\\Math\\RoundingMode' => __DIR__ . '/..' . '/ramsey/uuid/src/Math/RoundingMode.php', - 'Ramsey\\Uuid\\Nonstandard\\Fields' => __DIR__ . '/..' . '/ramsey/uuid/src/Nonstandard/Fields.php', - 'Ramsey\\Uuid\\Nonstandard\\Uuid' => __DIR__ . '/..' . '/ramsey/uuid/src/Nonstandard/Uuid.php', - 'Ramsey\\Uuid\\Nonstandard\\UuidBuilder' => __DIR__ . '/..' . '/ramsey/uuid/src/Nonstandard/UuidBuilder.php', - 'Ramsey\\Uuid\\Nonstandard\\UuidV6' => __DIR__ . '/..' . '/ramsey/uuid/src/Nonstandard/UuidV6.php', - 'Ramsey\\Uuid\\Provider\\DceSecurityProviderInterface' => __DIR__ . '/..' . '/ramsey/uuid/src/Provider/DceSecurityProviderInterface.php', - 'Ramsey\\Uuid\\Provider\\Dce\\SystemDceSecurityProvider' => __DIR__ . '/..' . '/ramsey/uuid/src/Provider/Dce/SystemDceSecurityProvider.php', - 'Ramsey\\Uuid\\Provider\\NodeProviderInterface' => __DIR__ . '/..' . '/ramsey/uuid/src/Provider/NodeProviderInterface.php', - 'Ramsey\\Uuid\\Provider\\Node\\FallbackNodeProvider' => __DIR__ . '/..' . '/ramsey/uuid/src/Provider/Node/FallbackNodeProvider.php', - 'Ramsey\\Uuid\\Provider\\Node\\NodeProviderCollection' => __DIR__ . '/..' . '/ramsey/uuid/src/Provider/Node/NodeProviderCollection.php', - 'Ramsey\\Uuid\\Provider\\Node\\RandomNodeProvider' => __DIR__ . '/..' . '/ramsey/uuid/src/Provider/Node/RandomNodeProvider.php', - 'Ramsey\\Uuid\\Provider\\Node\\StaticNodeProvider' => __DIR__ . '/..' . '/ramsey/uuid/src/Provider/Node/StaticNodeProvider.php', - 'Ramsey\\Uuid\\Provider\\Node\\SystemNodeProvider' => __DIR__ . '/..' . '/ramsey/uuid/src/Provider/Node/SystemNodeProvider.php', - 'Ramsey\\Uuid\\Provider\\TimeProviderInterface' => __DIR__ . '/..' . '/ramsey/uuid/src/Provider/TimeProviderInterface.php', - 'Ramsey\\Uuid\\Provider\\Time\\FixedTimeProvider' => __DIR__ . '/..' . '/ramsey/uuid/src/Provider/Time/FixedTimeProvider.php', - 'Ramsey\\Uuid\\Provider\\Time\\SystemTimeProvider' => __DIR__ . '/..' . '/ramsey/uuid/src/Provider/Time/SystemTimeProvider.php', - 'Ramsey\\Uuid\\Rfc4122\\Fields' => __DIR__ . '/..' . '/ramsey/uuid/src/Rfc4122/Fields.php', - 'Ramsey\\Uuid\\Rfc4122\\FieldsInterface' => __DIR__ . '/..' . '/ramsey/uuid/src/Rfc4122/FieldsInterface.php', - 'Ramsey\\Uuid\\Rfc4122\\MaxTrait' => __DIR__ . '/..' . '/ramsey/uuid/src/Rfc4122/MaxTrait.php', - 'Ramsey\\Uuid\\Rfc4122\\MaxUuid' => __DIR__ . '/..' . '/ramsey/uuid/src/Rfc4122/MaxUuid.php', - 'Ramsey\\Uuid\\Rfc4122\\NilTrait' => __DIR__ . '/..' . '/ramsey/uuid/src/Rfc4122/NilTrait.php', - 'Ramsey\\Uuid\\Rfc4122\\NilUuid' => __DIR__ . '/..' . '/ramsey/uuid/src/Rfc4122/NilUuid.php', - 'Ramsey\\Uuid\\Rfc4122\\TimeTrait' => __DIR__ . '/..' . '/ramsey/uuid/src/Rfc4122/TimeTrait.php', - 'Ramsey\\Uuid\\Rfc4122\\UuidBuilder' => __DIR__ . '/..' . '/ramsey/uuid/src/Rfc4122/UuidBuilder.php', - 'Ramsey\\Uuid\\Rfc4122\\UuidInterface' => __DIR__ . '/..' . '/ramsey/uuid/src/Rfc4122/UuidInterface.php', - 'Ramsey\\Uuid\\Rfc4122\\UuidV1' => __DIR__ . '/..' . '/ramsey/uuid/src/Rfc4122/UuidV1.php', - 'Ramsey\\Uuid\\Rfc4122\\UuidV2' => __DIR__ . '/..' . '/ramsey/uuid/src/Rfc4122/UuidV2.php', - 'Ramsey\\Uuid\\Rfc4122\\UuidV3' => __DIR__ . '/..' . '/ramsey/uuid/src/Rfc4122/UuidV3.php', - 'Ramsey\\Uuid\\Rfc4122\\UuidV4' => __DIR__ . '/..' . '/ramsey/uuid/src/Rfc4122/UuidV4.php', - 'Ramsey\\Uuid\\Rfc4122\\UuidV5' => __DIR__ . '/..' . '/ramsey/uuid/src/Rfc4122/UuidV5.php', - 'Ramsey\\Uuid\\Rfc4122\\UuidV6' => __DIR__ . '/..' . '/ramsey/uuid/src/Rfc4122/UuidV6.php', - 'Ramsey\\Uuid\\Rfc4122\\UuidV7' => __DIR__ . '/..' . '/ramsey/uuid/src/Rfc4122/UuidV7.php', - 'Ramsey\\Uuid\\Rfc4122\\UuidV8' => __DIR__ . '/..' . '/ramsey/uuid/src/Rfc4122/UuidV8.php', - 'Ramsey\\Uuid\\Rfc4122\\Validator' => __DIR__ . '/..' . '/ramsey/uuid/src/Rfc4122/Validator.php', - 'Ramsey\\Uuid\\Rfc4122\\VariantTrait' => __DIR__ . '/..' . '/ramsey/uuid/src/Rfc4122/VariantTrait.php', - 'Ramsey\\Uuid\\Rfc4122\\VersionTrait' => __DIR__ . '/..' . '/ramsey/uuid/src/Rfc4122/VersionTrait.php', - 'Ramsey\\Uuid\\Type\\Decimal' => __DIR__ . '/..' . '/ramsey/uuid/src/Type/Decimal.php', - 'Ramsey\\Uuid\\Type\\Hexadecimal' => __DIR__ . '/..' . '/ramsey/uuid/src/Type/Hexadecimal.php', - 'Ramsey\\Uuid\\Type\\Integer' => __DIR__ . '/..' . '/ramsey/uuid/src/Type/Integer.php', - 'Ramsey\\Uuid\\Type\\NumberInterface' => __DIR__ . '/..' . '/ramsey/uuid/src/Type/NumberInterface.php', - 'Ramsey\\Uuid\\Type\\Time' => __DIR__ . '/..' . '/ramsey/uuid/src/Type/Time.php', - 'Ramsey\\Uuid\\Type\\TypeInterface' => __DIR__ . '/..' . '/ramsey/uuid/src/Type/TypeInterface.php', - 'Ramsey\\Uuid\\Uuid' => __DIR__ . '/..' . '/ramsey/uuid/src/Uuid.php', - 'Ramsey\\Uuid\\UuidFactory' => __DIR__ . '/..' . '/ramsey/uuid/src/UuidFactory.php', - 'Ramsey\\Uuid\\UuidFactoryInterface' => __DIR__ . '/..' . '/ramsey/uuid/src/UuidFactoryInterface.php', - 'Ramsey\\Uuid\\UuidInterface' => __DIR__ . '/..' . '/ramsey/uuid/src/UuidInterface.php', - 'Ramsey\\Uuid\\Validator\\GenericValidator' => __DIR__ . '/..' . '/ramsey/uuid/src/Validator/GenericValidator.php', - 'Ramsey\\Uuid\\Validator\\ValidatorInterface' => __DIR__ . '/..' . '/ramsey/uuid/src/Validator/ValidatorInterface.php', - 'SQLite3Exception' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/SQLite3Exception.php', - 'Sabberworm\\CSS\\CSSList\\AtRuleBlockList' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/CSSList/AtRuleBlockList.php', - 'Sabberworm\\CSS\\CSSList\\CSSBlockList' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/CSSList/CSSBlockList.php', - 'Sabberworm\\CSS\\CSSList\\CSSList' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/CSSList/CSSList.php', - 'Sabberworm\\CSS\\CSSList\\Document' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/CSSList/Document.php', - 'Sabberworm\\CSS\\CSSList\\KeyFrame' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/CSSList/KeyFrame.php', - 'Sabberworm\\CSS\\Comment\\Comment' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/Comment/Comment.php', - 'Sabberworm\\CSS\\Comment\\Commentable' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/Comment/Commentable.php', - 'Sabberworm\\CSS\\OutputFormat' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/OutputFormat.php', - 'Sabberworm\\CSS\\OutputFormatter' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/OutputFormatter.php', - 'Sabberworm\\CSS\\Parser' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/Parser.php', - 'Sabberworm\\CSS\\Parsing\\Anchor' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/Parsing/Anchor.php', - 'Sabberworm\\CSS\\Parsing\\OutputException' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/Parsing/OutputException.php', - 'Sabberworm\\CSS\\Parsing\\ParserState' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/Parsing/ParserState.php', - 'Sabberworm\\CSS\\Parsing\\SourceException' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/Parsing/SourceException.php', - 'Sabberworm\\CSS\\Parsing\\UnexpectedEOFException' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/Parsing/UnexpectedEOFException.php', - 'Sabberworm\\CSS\\Parsing\\UnexpectedTokenException' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/Parsing/UnexpectedTokenException.php', - 'Sabberworm\\CSS\\Property\\AtRule' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/Property/AtRule.php', - 'Sabberworm\\CSS\\Property\\CSSNamespace' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/Property/CSSNamespace.php', - 'Sabberworm\\CSS\\Property\\Charset' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/Property/Charset.php', - 'Sabberworm\\CSS\\Property\\Import' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/Property/Import.php', - 'Sabberworm\\CSS\\Property\\KeyframeSelector' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/Property/KeyframeSelector.php', - 'Sabberworm\\CSS\\Property\\Selector' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/Property/Selector.php', - 'Sabberworm\\CSS\\Renderable' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/Renderable.php', - 'Sabberworm\\CSS\\RuleSet\\AtRuleSet' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/RuleSet/AtRuleSet.php', - 'Sabberworm\\CSS\\RuleSet\\DeclarationBlock' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/RuleSet/DeclarationBlock.php', - 'Sabberworm\\CSS\\RuleSet\\RuleSet' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/RuleSet/RuleSet.php', - 'Sabberworm\\CSS\\Rule\\Rule' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/Rule/Rule.php', - 'Sabberworm\\CSS\\Settings' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/Settings.php', - 'Sabberworm\\CSS\\Value\\CSSFunction' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/Value/CSSFunction.php', - 'Sabberworm\\CSS\\Value\\CSSString' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/Value/CSSString.php', - 'Sabberworm\\CSS\\Value\\CalcFunction' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/Value/CalcFunction.php', - 'Sabberworm\\CSS\\Value\\CalcRuleValueList' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/Value/CalcRuleValueList.php', - 'Sabberworm\\CSS\\Value\\Color' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/Value/Color.php', - 'Sabberworm\\CSS\\Value\\LineName' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/Value/LineName.php', - 'Sabberworm\\CSS\\Value\\PrimitiveValue' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/Value/PrimitiveValue.php', - 'Sabberworm\\CSS\\Value\\RuleValueList' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/Value/RuleValueList.php', - 'Sabberworm\\CSS\\Value\\Size' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/Value/Size.php', - 'Sabberworm\\CSS\\Value\\URL' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/Value/URL.php', - 'Sabberworm\\CSS\\Value\\Value' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/Value/Value.php', - 'Sabberworm\\CSS\\Value\\ValueList' => __DIR__ . '/..' . '/sabberworm/php-css-parser/src/Value/ValueList.php', - 'SebastianBergmann\\CliParser\\AmbiguousOptionException' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/AmbiguousOptionException.php', - 'SebastianBergmann\\CliParser\\Exception' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/Exception.php', - 'SebastianBergmann\\CliParser\\OptionDoesNotAllowArgumentException' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/OptionDoesNotAllowArgumentException.php', - 'SebastianBergmann\\CliParser\\Parser' => __DIR__ . '/..' . '/sebastian/cli-parser/src/Parser.php', - 'SebastianBergmann\\CliParser\\RequiredOptionArgumentMissingException' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/RequiredOptionArgumentMissingException.php', - 'SebastianBergmann\\CliParser\\UnknownOptionException' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/UnknownOptionException.php', - 'SebastianBergmann\\CodeCoverage\\BranchAndPathCoverageNotSupportedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/BranchAndPathCoverageNotSupportedException.php', - 'SebastianBergmann\\CodeCoverage\\CodeCoverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage.php', - 'SebastianBergmann\\CodeCoverage\\Data\\ProcessedCodeCoverageData' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Data/ProcessedCodeCoverageData.php', - 'SebastianBergmann\\CodeCoverage\\Data\\RawCodeCoverageData' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Data/RawCodeCoverageData.php', - 'SebastianBergmann\\CodeCoverage\\DeadCodeDetectionNotSupportedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/DeadCodeDetectionNotSupportedException.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\Driver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Driver.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\PathExistsButIsNotDirectoryException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/PathExistsButIsNotDirectoryException.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\PcovDriver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/PcovDriver.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\PcovNotAvailableException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/PcovNotAvailableException.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\Selector' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Selector.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\WriteOperationFailedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/WriteOperationFailedException.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\XdebugDriver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/XdebugDriver.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\XdebugNotAvailableException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/XdebugNotAvailableException.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\XdebugNotEnabledException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/XdebugNotEnabledException.php', - 'SebastianBergmann\\CodeCoverage\\Exception' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/Exception.php', - 'SebastianBergmann\\CodeCoverage\\FileCouldNotBeWrittenException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/FileCouldNotBeWrittenException.php', - 'SebastianBergmann\\CodeCoverage\\Filter' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Filter.php', - 'SebastianBergmann\\CodeCoverage\\InvalidArgumentException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php', - 'SebastianBergmann\\CodeCoverage\\NoCodeCoverageDriverAvailableException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/NoCodeCoverageDriverAvailableException.php', - 'SebastianBergmann\\CodeCoverage\\NoCodeCoverageDriverWithPathCoverageSupportAvailableException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/NoCodeCoverageDriverWithPathCoverageSupportAvailableException.php', - 'SebastianBergmann\\CodeCoverage\\Node\\AbstractNode' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/AbstractNode.php', - 'SebastianBergmann\\CodeCoverage\\Node\\Builder' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Builder.php', - 'SebastianBergmann\\CodeCoverage\\Node\\CrapIndex' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/CrapIndex.php', - 'SebastianBergmann\\CodeCoverage\\Node\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Directory.php', - 'SebastianBergmann\\CodeCoverage\\Node\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/File.php', - 'SebastianBergmann\\CodeCoverage\\Node\\Iterator' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Iterator.php', - 'SebastianBergmann\\CodeCoverage\\ParserException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/ParserException.php', - 'SebastianBergmann\\CodeCoverage\\ReflectionException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/ReflectionException.php', - 'SebastianBergmann\\CodeCoverage\\ReportAlreadyFinalizedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/ReportAlreadyFinalizedException.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Clover' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Clover.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Cobertura' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Cobertura.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Crap4j' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Crap4j.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Colors' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Colors.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\CustomCssFile' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/CustomCssFile.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Dashboard' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Facade' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Facade.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Renderer' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer.php', - 'SebastianBergmann\\CodeCoverage\\Report\\PHP' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/PHP.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Text' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Text.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Thresholds' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Thresholds.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\BuildInformation' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/BuildInformation.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Coverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Coverage.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Directory.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Facade' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Facade.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/File.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Method' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Method.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Node' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Node.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Project' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Project.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Report' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Report.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Source' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Source.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Tests' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Tests.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Totals' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Totals.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Unit' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Unit.php', - 'SebastianBergmann\\CodeCoverage\\StaticAnalysisCacheNotConfiguredException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/StaticAnalysisCacheNotConfiguredException.php', - 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CacheWarmer' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/CacheWarmer.php', - 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CachingFileAnalyser' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/CachingFileAnalyser.php', - 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CodeUnitFindingVisitor' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/CodeUnitFindingVisitor.php', - 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\ExecutableLinesFindingVisitor' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/ExecutableLinesFindingVisitor.php', - 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\FileAnalyser' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/FileAnalyser.php', - 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\IgnoredLinesFindingVisitor' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/IgnoredLinesFindingVisitor.php', - 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\ParsingFileAnalyser' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/ParsingFileAnalyser.php', - 'SebastianBergmann\\CodeCoverage\\TestIdMissingException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/TestIdMissingException.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\Known' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/TestSize/Known.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\Large' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/TestSize/Large.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\Medium' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/TestSize/Medium.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\Small' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/TestSize/Small.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\TestSize' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/TestSize/TestSize.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\Unknown' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/TestSize/Unknown.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestStatus\\Failure' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/TestStatus/Failure.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestStatus\\Known' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/TestStatus/Known.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestStatus\\Success' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/TestStatus/Success.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestStatus\\TestStatus' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/TestStatus/TestStatus.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestStatus\\Unknown' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/TestStatus/Unknown.php', - 'SebastianBergmann\\CodeCoverage\\UnintentionallyCoveredCodeException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php', - 'SebastianBergmann\\CodeCoverage\\Util\\DirectoryCouldNotBeCreatedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/DirectoryCouldNotBeCreatedException.php', - 'SebastianBergmann\\CodeCoverage\\Util\\Filesystem' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Util/Filesystem.php', - 'SebastianBergmann\\CodeCoverage\\Util\\Percentage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Util/Percentage.php', - 'SebastianBergmann\\CodeCoverage\\Version' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Version.php', - 'SebastianBergmann\\CodeCoverage\\XmlException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/XmlException.php', - 'SebastianBergmann\\CodeUnitReverseLookup\\Wizard' => __DIR__ . '/..' . '/sebastian/code-unit-reverse-lookup/src/Wizard.php', - 'SebastianBergmann\\CodeUnit\\ClassMethodUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/ClassMethodUnit.php', - 'SebastianBergmann\\CodeUnit\\ClassUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/ClassUnit.php', - 'SebastianBergmann\\CodeUnit\\CodeUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/CodeUnit.php', - 'SebastianBergmann\\CodeUnit\\CodeUnitCollection' => __DIR__ . '/..' . '/sebastian/code-unit/src/CodeUnitCollection.php', - 'SebastianBergmann\\CodeUnit\\CodeUnitCollectionIterator' => __DIR__ . '/..' . '/sebastian/code-unit/src/CodeUnitCollectionIterator.php', - 'SebastianBergmann\\CodeUnit\\Exception' => __DIR__ . '/..' . '/sebastian/code-unit/src/exceptions/Exception.php', - 'SebastianBergmann\\CodeUnit\\FileUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/FileUnit.php', - 'SebastianBergmann\\CodeUnit\\FunctionUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/FunctionUnit.php', - 'SebastianBergmann\\CodeUnit\\InterfaceMethodUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/InterfaceMethodUnit.php', - 'SebastianBergmann\\CodeUnit\\InterfaceUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/InterfaceUnit.php', - 'SebastianBergmann\\CodeUnit\\InvalidCodeUnitException' => __DIR__ . '/..' . '/sebastian/code-unit/src/exceptions/InvalidCodeUnitException.php', - 'SebastianBergmann\\CodeUnit\\Mapper' => __DIR__ . '/..' . '/sebastian/code-unit/src/Mapper.php', - 'SebastianBergmann\\CodeUnit\\NoTraitException' => __DIR__ . '/..' . '/sebastian/code-unit/src/exceptions/NoTraitException.php', - 'SebastianBergmann\\CodeUnit\\ReflectionException' => __DIR__ . '/..' . '/sebastian/code-unit/src/exceptions/ReflectionException.php', - 'SebastianBergmann\\CodeUnit\\TraitMethodUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/TraitMethodUnit.php', - 'SebastianBergmann\\CodeUnit\\TraitUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/TraitUnit.php', - 'SebastianBergmann\\Comparator\\ArrayComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ArrayComparator.php', - 'SebastianBergmann\\Comparator\\Comparator' => __DIR__ . '/..' . '/sebastian/comparator/src/Comparator.php', - 'SebastianBergmann\\Comparator\\ComparisonFailure' => __DIR__ . '/..' . '/sebastian/comparator/src/ComparisonFailure.php', - 'SebastianBergmann\\Comparator\\DOMNodeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DOMNodeComparator.php', - 'SebastianBergmann\\Comparator\\DateTimeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DateTimeComparator.php', - 'SebastianBergmann\\Comparator\\Exception' => __DIR__ . '/..' . '/sebastian/comparator/src/exceptions/Exception.php', - 'SebastianBergmann\\Comparator\\ExceptionComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ExceptionComparator.php', - 'SebastianBergmann\\Comparator\\Factory' => __DIR__ . '/..' . '/sebastian/comparator/src/Factory.php', - 'SebastianBergmann\\Comparator\\MockObjectComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/MockObjectComparator.php', - 'SebastianBergmann\\Comparator\\NumericComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/NumericComparator.php', - 'SebastianBergmann\\Comparator\\ObjectComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ObjectComparator.php', - 'SebastianBergmann\\Comparator\\ResourceComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ResourceComparator.php', - 'SebastianBergmann\\Comparator\\RuntimeException' => __DIR__ . '/..' . '/sebastian/comparator/src/exceptions/RuntimeException.php', - 'SebastianBergmann\\Comparator\\ScalarComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ScalarComparator.php', - 'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/SplObjectStorageComparator.php', - 'SebastianBergmann\\Comparator\\TypeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/TypeComparator.php', - 'SebastianBergmann\\Complexity\\Calculator' => __DIR__ . '/..' . '/sebastian/complexity/src/Calculator.php', - 'SebastianBergmann\\Complexity\\Complexity' => __DIR__ . '/..' . '/sebastian/complexity/src/Complexity/Complexity.php', - 'SebastianBergmann\\Complexity\\ComplexityCalculatingVisitor' => __DIR__ . '/..' . '/sebastian/complexity/src/Visitor/ComplexityCalculatingVisitor.php', - 'SebastianBergmann\\Complexity\\ComplexityCollection' => __DIR__ . '/..' . '/sebastian/complexity/src/Complexity/ComplexityCollection.php', - 'SebastianBergmann\\Complexity\\ComplexityCollectionIterator' => __DIR__ . '/..' . '/sebastian/complexity/src/Complexity/ComplexityCollectionIterator.php', - 'SebastianBergmann\\Complexity\\CyclomaticComplexityCalculatingVisitor' => __DIR__ . '/..' . '/sebastian/complexity/src/Visitor/CyclomaticComplexityCalculatingVisitor.php', - 'SebastianBergmann\\Complexity\\Exception' => __DIR__ . '/..' . '/sebastian/complexity/src/Exception/Exception.php', - 'SebastianBergmann\\Complexity\\RuntimeException' => __DIR__ . '/..' . '/sebastian/complexity/src/Exception/RuntimeException.php', - 'SebastianBergmann\\Diff\\Chunk' => __DIR__ . '/..' . '/sebastian/diff/src/Chunk.php', - 'SebastianBergmann\\Diff\\ConfigurationException' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/ConfigurationException.php', - 'SebastianBergmann\\Diff\\Diff' => __DIR__ . '/..' . '/sebastian/diff/src/Diff.php', - 'SebastianBergmann\\Diff\\Differ' => __DIR__ . '/..' . '/sebastian/diff/src/Differ.php', - 'SebastianBergmann\\Diff\\Exception' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/Exception.php', - 'SebastianBergmann\\Diff\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/InvalidArgumentException.php', - 'SebastianBergmann\\Diff\\Line' => __DIR__ . '/..' . '/sebastian/diff/src/Line.php', - 'SebastianBergmann\\Diff\\LongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/LongestCommonSubsequenceCalculator.php', - 'SebastianBergmann\\Diff\\MemoryEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php', - 'SebastianBergmann\\Diff\\Output\\AbstractChunkOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php', - 'SebastianBergmann\\Diff\\Output\\DiffOnlyOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php', - 'SebastianBergmann\\Diff\\Output\\DiffOutputBuilderInterface' => __DIR__ . '/..' . '/sebastian/diff/src/Output/DiffOutputBuilderInterface.php', - 'SebastianBergmann\\Diff\\Output\\StrictUnifiedDiffOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php', - 'SebastianBergmann\\Diff\\Output\\UnifiedDiffOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php', - 'SebastianBergmann\\Diff\\Parser' => __DIR__ . '/..' . '/sebastian/diff/src/Parser.php', - 'SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php', - 'SebastianBergmann\\Environment\\Console' => __DIR__ . '/..' . '/sebastian/environment/src/Console.php', - 'SebastianBergmann\\Environment\\Runtime' => __DIR__ . '/..' . '/sebastian/environment/src/Runtime.php', - 'SebastianBergmann\\Exporter\\Exporter' => __DIR__ . '/..' . '/sebastian/exporter/src/Exporter.php', - 'SebastianBergmann\\FileIterator\\ExcludeIterator' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/ExcludeIterator.php', - 'SebastianBergmann\\FileIterator\\Facade' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Facade.php', - 'SebastianBergmann\\FileIterator\\Factory' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Factory.php', - 'SebastianBergmann\\FileIterator\\Iterator' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Iterator.php', - 'SebastianBergmann\\GlobalState\\CodeExporter' => __DIR__ . '/..' . '/sebastian/global-state/src/CodeExporter.php', - 'SebastianBergmann\\GlobalState\\Exception' => __DIR__ . '/..' . '/sebastian/global-state/src/exceptions/Exception.php', - 'SebastianBergmann\\GlobalState\\ExcludeList' => __DIR__ . '/..' . '/sebastian/global-state/src/ExcludeList.php', - 'SebastianBergmann\\GlobalState\\Restorer' => __DIR__ . '/..' . '/sebastian/global-state/src/Restorer.php', - 'SebastianBergmann\\GlobalState\\RuntimeException' => __DIR__ . '/..' . '/sebastian/global-state/src/exceptions/RuntimeException.php', - 'SebastianBergmann\\GlobalState\\Snapshot' => __DIR__ . '/..' . '/sebastian/global-state/src/Snapshot.php', - 'SebastianBergmann\\Invoker\\Exception' => __DIR__ . '/..' . '/phpunit/php-invoker/src/exceptions/Exception.php', - 'SebastianBergmann\\Invoker\\Invoker' => __DIR__ . '/..' . '/phpunit/php-invoker/src/Invoker.php', - 'SebastianBergmann\\Invoker\\ProcessControlExtensionNotLoadedException' => __DIR__ . '/..' . '/phpunit/php-invoker/src/exceptions/ProcessControlExtensionNotLoadedException.php', - 'SebastianBergmann\\Invoker\\TimeoutException' => __DIR__ . '/..' . '/phpunit/php-invoker/src/exceptions/TimeoutException.php', - 'SebastianBergmann\\LinesOfCode\\Counter' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/Counter.php', - 'SebastianBergmann\\LinesOfCode\\Exception' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/Exception/Exception.php', - 'SebastianBergmann\\LinesOfCode\\IllogicalValuesException' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/Exception/IllogicalValuesException.php', - 'SebastianBergmann\\LinesOfCode\\LineCountingVisitor' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/LineCountingVisitor.php', - 'SebastianBergmann\\LinesOfCode\\LinesOfCode' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/LinesOfCode.php', - 'SebastianBergmann\\LinesOfCode\\NegativeValueException' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/Exception/NegativeValueException.php', - 'SebastianBergmann\\LinesOfCode\\RuntimeException' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/Exception/RuntimeException.php', - 'SebastianBergmann\\ObjectEnumerator\\Enumerator' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/Enumerator.php', - 'SebastianBergmann\\ObjectReflector\\ObjectReflector' => __DIR__ . '/..' . '/sebastian/object-reflector/src/ObjectReflector.php', - 'SebastianBergmann\\RecursionContext\\Context' => __DIR__ . '/..' . '/sebastian/recursion-context/src/Context.php', - 'SebastianBergmann\\Template\\Exception' => __DIR__ . '/..' . '/phpunit/php-text-template/src/exceptions/Exception.php', - 'SebastianBergmann\\Template\\InvalidArgumentException' => __DIR__ . '/..' . '/phpunit/php-text-template/src/exceptions/InvalidArgumentException.php', - 'SebastianBergmann\\Template\\RuntimeException' => __DIR__ . '/..' . '/phpunit/php-text-template/src/exceptions/RuntimeException.php', - 'SebastianBergmann\\Template\\Template' => __DIR__ . '/..' . '/phpunit/php-text-template/src/Template.php', - 'SebastianBergmann\\Timer\\Duration' => __DIR__ . '/..' . '/phpunit/php-timer/src/Duration.php', - 'SebastianBergmann\\Timer\\Exception' => __DIR__ . '/..' . '/phpunit/php-timer/src/exceptions/Exception.php', - 'SebastianBergmann\\Timer\\NoActiveTimerException' => __DIR__ . '/..' . '/phpunit/php-timer/src/exceptions/NoActiveTimerException.php', - 'SebastianBergmann\\Timer\\ResourceUsageFormatter' => __DIR__ . '/..' . '/phpunit/php-timer/src/ResourceUsageFormatter.php', - 'SebastianBergmann\\Timer\\TimeSinceStartOfRequestNotAvailableException' => __DIR__ . '/..' . '/phpunit/php-timer/src/exceptions/TimeSinceStartOfRequestNotAvailableException.php', - 'SebastianBergmann\\Timer\\Timer' => __DIR__ . '/..' . '/phpunit/php-timer/src/Timer.php', - 'SebastianBergmann\\Type\\CallableType' => __DIR__ . '/..' . '/sebastian/type/src/type/CallableType.php', - 'SebastianBergmann\\Type\\Exception' => __DIR__ . '/..' . '/sebastian/type/src/exception/Exception.php', - 'SebastianBergmann\\Type\\FalseType' => __DIR__ . '/..' . '/sebastian/type/src/type/FalseType.php', - 'SebastianBergmann\\Type\\GenericObjectType' => __DIR__ . '/..' . '/sebastian/type/src/type/GenericObjectType.php', - 'SebastianBergmann\\Type\\IntersectionType' => __DIR__ . '/..' . '/sebastian/type/src/type/IntersectionType.php', - 'SebastianBergmann\\Type\\IterableType' => __DIR__ . '/..' . '/sebastian/type/src/type/IterableType.php', - 'SebastianBergmann\\Type\\MixedType' => __DIR__ . '/..' . '/sebastian/type/src/type/MixedType.php', - 'SebastianBergmann\\Type\\NeverType' => __DIR__ . '/..' . '/sebastian/type/src/type/NeverType.php', - 'SebastianBergmann\\Type\\NullType' => __DIR__ . '/..' . '/sebastian/type/src/type/NullType.php', - 'SebastianBergmann\\Type\\ObjectType' => __DIR__ . '/..' . '/sebastian/type/src/type/ObjectType.php', - 'SebastianBergmann\\Type\\Parameter' => __DIR__ . '/..' . '/sebastian/type/src/Parameter.php', - 'SebastianBergmann\\Type\\ReflectionMapper' => __DIR__ . '/..' . '/sebastian/type/src/ReflectionMapper.php', - 'SebastianBergmann\\Type\\RuntimeException' => __DIR__ . '/..' . '/sebastian/type/src/exception/RuntimeException.php', - 'SebastianBergmann\\Type\\SimpleType' => __DIR__ . '/..' . '/sebastian/type/src/type/SimpleType.php', - 'SebastianBergmann\\Type\\StaticType' => __DIR__ . '/..' . '/sebastian/type/src/type/StaticType.php', - 'SebastianBergmann\\Type\\TrueType' => __DIR__ . '/..' . '/sebastian/type/src/type/TrueType.php', - 'SebastianBergmann\\Type\\Type' => __DIR__ . '/..' . '/sebastian/type/src/type/Type.php', - 'SebastianBergmann\\Type\\TypeName' => __DIR__ . '/..' . '/sebastian/type/src/TypeName.php', - 'SebastianBergmann\\Type\\UnionType' => __DIR__ . '/..' . '/sebastian/type/src/type/UnionType.php', - '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\\Permission\\Commands\\CacheReset' => __DIR__ . '/..' . '/spatie/laravel-permission/src/Commands/CacheReset.php', - 'Spatie\\Permission\\Commands\\CreatePermission' => __DIR__ . '/..' . '/spatie/laravel-permission/src/Commands/CreatePermission.php', - 'Spatie\\Permission\\Commands\\CreateRole' => __DIR__ . '/..' . '/spatie/laravel-permission/src/Commands/CreateRole.php', - 'Spatie\\Permission\\Commands\\Show' => __DIR__ . '/..' . '/spatie/laravel-permission/src/Commands/Show.php', - 'Spatie\\Permission\\Commands\\UpgradeForTeams' => __DIR__ . '/..' . '/spatie/laravel-permission/src/Commands/UpgradeForTeams.php', - 'Spatie\\Permission\\Contracts\\Permission' => __DIR__ . '/..' . '/spatie/laravel-permission/src/Contracts/Permission.php', - 'Spatie\\Permission\\Contracts\\Role' => __DIR__ . '/..' . '/spatie/laravel-permission/src/Contracts/Role.php', - 'Spatie\\Permission\\Contracts\\Wildcard' => __DIR__ . '/..' . '/spatie/laravel-permission/src/Contracts/Wildcard.php', - 'Spatie\\Permission\\Exceptions\\GuardDoesNotMatch' => __DIR__ . '/..' . '/spatie/laravel-permission/src/Exceptions/GuardDoesNotMatch.php', - 'Spatie\\Permission\\Exceptions\\PermissionAlreadyExists' => __DIR__ . '/..' . '/spatie/laravel-permission/src/Exceptions/PermissionAlreadyExists.php', - 'Spatie\\Permission\\Exceptions\\PermissionDoesNotExist' => __DIR__ . '/..' . '/spatie/laravel-permission/src/Exceptions/PermissionDoesNotExist.php', - 'Spatie\\Permission\\Exceptions\\RoleAlreadyExists' => __DIR__ . '/..' . '/spatie/laravel-permission/src/Exceptions/RoleAlreadyExists.php', - 'Spatie\\Permission\\Exceptions\\RoleDoesNotExist' => __DIR__ . '/..' . '/spatie/laravel-permission/src/Exceptions/RoleDoesNotExist.php', - 'Spatie\\Permission\\Exceptions\\UnauthorizedException' => __DIR__ . '/..' . '/spatie/laravel-permission/src/Exceptions/UnauthorizedException.php', - 'Spatie\\Permission\\Exceptions\\WildcardPermissionInvalidArgument' => __DIR__ . '/..' . '/spatie/laravel-permission/src/Exceptions/WildcardPermissionInvalidArgument.php', - 'Spatie\\Permission\\Exceptions\\WildcardPermissionNotImplementsContract' => __DIR__ . '/..' . '/spatie/laravel-permission/src/Exceptions/WildcardPermissionNotImplementsContract.php', - 'Spatie\\Permission\\Exceptions\\WildcardPermissionNotProperlyFormatted' => __DIR__ . '/..' . '/spatie/laravel-permission/src/Exceptions/WildcardPermissionNotProperlyFormatted.php', - 'Spatie\\Permission\\Guard' => __DIR__ . '/..' . '/spatie/laravel-permission/src/Guard.php', - 'Spatie\\Permission\\Middlewares\\PermissionMiddleware' => __DIR__ . '/..' . '/spatie/laravel-permission/src/Middlewares/PermissionMiddleware.php', - 'Spatie\\Permission\\Middlewares\\RoleMiddleware' => __DIR__ . '/..' . '/spatie/laravel-permission/src/Middlewares/RoleMiddleware.php', - 'Spatie\\Permission\\Middlewares\\RoleOrPermissionMiddleware' => __DIR__ . '/..' . '/spatie/laravel-permission/src/Middlewares/RoleOrPermissionMiddleware.php', - 'Spatie\\Permission\\Models\\Permission' => __DIR__ . '/..' . '/spatie/laravel-permission/src/Models/Permission.php', - 'Spatie\\Permission\\Models\\Role' => __DIR__ . '/..' . '/spatie/laravel-permission/src/Models/Role.php', - 'Spatie\\Permission\\PermissionRegistrar' => __DIR__ . '/..' . '/spatie/laravel-permission/src/PermissionRegistrar.php', - 'Spatie\\Permission\\PermissionServiceProvider' => __DIR__ . '/..' . '/spatie/laravel-permission/src/PermissionServiceProvider.php', - 'Spatie\\Permission\\Traits\\HasPermissions' => __DIR__ . '/..' . '/spatie/laravel-permission/src/Traits/HasPermissions.php', - 'Spatie\\Permission\\Traits\\HasRoles' => __DIR__ . '/..' . '/spatie/laravel-permission/src/Traits/HasRoles.php', - 'Spatie\\Permission\\Traits\\RefreshesPermissionCache' => __DIR__ . '/..' . '/spatie/laravel-permission/src/Traits/RefreshesPermissionCache.php', - 'Spatie\\Permission\\WildcardPermission' => __DIR__ . '/..' . '/spatie/laravel-permission/src/WildcardPermission.php', - 'Streamline\\Services\\WardManagement\\WardTreatmentDispensationService' => __DIR__ . '/../..' . '/app/Services/WardManagement/WardTreatmentDispensationService.php', - 'Stringable' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Stringable.php', - 'Svg\\CssLength' => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg/CssLength.php', - 'Svg\\DefaultStyle' => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg/DefaultStyle.php', - 'Svg\\Document' => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg/Document.php', - 'Svg\\Gradient\\Stop' => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg/Gradient/Stop.php', - 'Svg\\Style' => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg/Style.php', - 'Svg\\Surface\\CPdf' => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg/Surface/CPdf.php', - 'Svg\\Surface\\SurfaceCpdf' => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg/Surface/SurfaceCpdf.php', - 'Svg\\Surface\\SurfaceInterface' => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg/Surface/SurfaceInterface.php', - 'Svg\\Surface\\SurfacePDFLib' => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg/Surface/SurfacePDFLib.php', - 'Svg\\Tag\\AbstractTag' => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg/Tag/AbstractTag.php', - 'Svg\\Tag\\Anchor' => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg/Tag/Anchor.php', - 'Svg\\Tag\\Circle' => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg/Tag/Circle.php', - 'Svg\\Tag\\ClipPath' => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg/Tag/ClipPath.php', - 'Svg\\Tag\\Ellipse' => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg/Tag/Ellipse.php', - 'Svg\\Tag\\Group' => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg/Tag/Group.php', - 'Svg\\Tag\\Image' => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg/Tag/Image.php', - 'Svg\\Tag\\Line' => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg/Tag/Line.php', - 'Svg\\Tag\\LinearGradient' => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg/Tag/LinearGradient.php', - 'Svg\\Tag\\Path' => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg/Tag/Path.php', - 'Svg\\Tag\\Polygon' => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg/Tag/Polygon.php', - 'Svg\\Tag\\Polyline' => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg/Tag/Polyline.php', - 'Svg\\Tag\\RadialGradient' => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg/Tag/RadialGradient.php', - 'Svg\\Tag\\Rect' => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg/Tag/Rect.php', - 'Svg\\Tag\\Shape' => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg/Tag/Shape.php', - 'Svg\\Tag\\Stop' => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg/Tag/Stop.php', - 'Svg\\Tag\\StyleTag' => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg/Tag/StyleTag.php', - 'Svg\\Tag\\Symbol' => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg/Tag/Symbol.php', - 'Svg\\Tag\\Text' => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg/Tag/Text.php', - 'Svg\\Tag\\UseTag' => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg/Tag/UseTag.php', - 'Symfony\\Component\\Console\\Application' => __DIR__ . '/..' . '/symfony/console/Application.php', - 'Symfony\\Component\\Console\\Attribute\\AsCommand' => __DIR__ . '/..' . '/symfony/console/Attribute/AsCommand.php', - 'Symfony\\Component\\Console\\CI\\GithubActionReporter' => __DIR__ . '/..' . '/symfony/console/CI/GithubActionReporter.php', - 'Symfony\\Component\\Console\\Color' => __DIR__ . '/..' . '/symfony/console/Color.php', - 'Symfony\\Component\\Console\\CommandLoader\\CommandLoaderInterface' => __DIR__ . '/..' . '/symfony/console/CommandLoader/CommandLoaderInterface.php', - 'Symfony\\Component\\Console\\CommandLoader\\ContainerCommandLoader' => __DIR__ . '/..' . '/symfony/console/CommandLoader/ContainerCommandLoader.php', - 'Symfony\\Component\\Console\\CommandLoader\\FactoryCommandLoader' => __DIR__ . '/..' . '/symfony/console/CommandLoader/FactoryCommandLoader.php', - 'Symfony\\Component\\Console\\Command\\Command' => __DIR__ . '/..' . '/symfony/console/Command/Command.php', - 'Symfony\\Component\\Console\\Command\\CompleteCommand' => __DIR__ . '/..' . '/symfony/console/Command/CompleteCommand.php', - 'Symfony\\Component\\Console\\Command\\DumpCompletionCommand' => __DIR__ . '/..' . '/symfony/console/Command/DumpCompletionCommand.php', - 'Symfony\\Component\\Console\\Command\\HelpCommand' => __DIR__ . '/..' . '/symfony/console/Command/HelpCommand.php', - 'Symfony\\Component\\Console\\Command\\LazyCommand' => __DIR__ . '/..' . '/symfony/console/Command/LazyCommand.php', - 'Symfony\\Component\\Console\\Command\\ListCommand' => __DIR__ . '/..' . '/symfony/console/Command/ListCommand.php', - 'Symfony\\Component\\Console\\Command\\LockableTrait' => __DIR__ . '/..' . '/symfony/console/Command/LockableTrait.php', - 'Symfony\\Component\\Console\\Command\\SignalableCommandInterface' => __DIR__ . '/..' . '/symfony/console/Command/SignalableCommandInterface.php', - 'Symfony\\Component\\Console\\Command\\TraceableCommand' => __DIR__ . '/..' . '/symfony/console/Command/TraceableCommand.php', - 'Symfony\\Component\\Console\\Completion\\CompletionInput' => __DIR__ . '/..' . '/symfony/console/Completion/CompletionInput.php', - 'Symfony\\Component\\Console\\Completion\\CompletionSuggestions' => __DIR__ . '/..' . '/symfony/console/Completion/CompletionSuggestions.php', - 'Symfony\\Component\\Console\\Completion\\Output\\BashCompletionOutput' => __DIR__ . '/..' . '/symfony/console/Completion/Output/BashCompletionOutput.php', - 'Symfony\\Component\\Console\\Completion\\Output\\CompletionOutputInterface' => __DIR__ . '/..' . '/symfony/console/Completion/Output/CompletionOutputInterface.php', - 'Symfony\\Component\\Console\\Completion\\Output\\FishCompletionOutput' => __DIR__ . '/..' . '/symfony/console/Completion/Output/FishCompletionOutput.php', - 'Symfony\\Component\\Console\\Completion\\Output\\ZshCompletionOutput' => __DIR__ . '/..' . '/symfony/console/Completion/Output/ZshCompletionOutput.php', - 'Symfony\\Component\\Console\\Completion\\Suggestion' => __DIR__ . '/..' . '/symfony/console/Completion/Suggestion.php', - 'Symfony\\Component\\Console\\ConsoleEvents' => __DIR__ . '/..' . '/symfony/console/ConsoleEvents.php', - 'Symfony\\Component\\Console\\Cursor' => __DIR__ . '/..' . '/symfony/console/Cursor.php', - 'Symfony\\Component\\Console\\DataCollector\\CommandDataCollector' => __DIR__ . '/..' . '/symfony/console/DataCollector/CommandDataCollector.php', - 'Symfony\\Component\\Console\\Debug\\CliRequest' => __DIR__ . '/..' . '/symfony/console/Debug/CliRequest.php', - 'Symfony\\Component\\Console\\DependencyInjection\\AddConsoleCommandPass' => __DIR__ . '/..' . '/symfony/console/DependencyInjection/AddConsoleCommandPass.php', - 'Symfony\\Component\\Console\\Descriptor\\ApplicationDescription' => __DIR__ . '/..' . '/symfony/console/Descriptor/ApplicationDescription.php', - 'Symfony\\Component\\Console\\Descriptor\\Descriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/Descriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\DescriptorInterface' => __DIR__ . '/..' . '/symfony/console/Descriptor/DescriptorInterface.php', - 'Symfony\\Component\\Console\\Descriptor\\JsonDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/JsonDescriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\MarkdownDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/MarkdownDescriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\ReStructuredTextDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/ReStructuredTextDescriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\TextDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/TextDescriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\XmlDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/XmlDescriptor.php', - 'Symfony\\Component\\Console\\EventListener\\ErrorListener' => __DIR__ . '/..' . '/symfony/console/EventListener/ErrorListener.php', - 'Symfony\\Component\\Console\\Event\\ConsoleCommandEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleCommandEvent.php', - 'Symfony\\Component\\Console\\Event\\ConsoleErrorEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleErrorEvent.php', - 'Symfony\\Component\\Console\\Event\\ConsoleEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleEvent.php', - 'Symfony\\Component\\Console\\Event\\ConsoleSignalEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleSignalEvent.php', - 'Symfony\\Component\\Console\\Event\\ConsoleTerminateEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleTerminateEvent.php', - 'Symfony\\Component\\Console\\Exception\\CommandNotFoundException' => __DIR__ . '/..' . '/symfony/console/Exception/CommandNotFoundException.php', - 'Symfony\\Component\\Console\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/console/Exception/ExceptionInterface.php', - 'Symfony\\Component\\Console\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/console/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\Console\\Exception\\InvalidOptionException' => __DIR__ . '/..' . '/symfony/console/Exception/InvalidOptionException.php', - 'Symfony\\Component\\Console\\Exception\\LogicException' => __DIR__ . '/..' . '/symfony/console/Exception/LogicException.php', - 'Symfony\\Component\\Console\\Exception\\MissingInputException' => __DIR__ . '/..' . '/symfony/console/Exception/MissingInputException.php', - 'Symfony\\Component\\Console\\Exception\\NamespaceNotFoundException' => __DIR__ . '/..' . '/symfony/console/Exception/NamespaceNotFoundException.php', - 'Symfony\\Component\\Console\\Exception\\RunCommandFailedException' => __DIR__ . '/..' . '/symfony/console/Exception/RunCommandFailedException.php', - 'Symfony\\Component\\Console\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/console/Exception/RuntimeException.php', - 'Symfony\\Component\\Console\\Formatter\\NullOutputFormatter' => __DIR__ . '/..' . '/symfony/console/Formatter/NullOutputFormatter.php', - 'Symfony\\Component\\Console\\Formatter\\NullOutputFormatterStyle' => __DIR__ . '/..' . '/symfony/console/Formatter/NullOutputFormatterStyle.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatter' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatter.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatterInterface' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterInterface.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyle' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterStyle.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleInterface' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterStyleInterface.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleStack' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterStyleStack.php', - 'Symfony\\Component\\Console\\Formatter\\WrappableOutputFormatterInterface' => __DIR__ . '/..' . '/symfony/console/Formatter/WrappableOutputFormatterInterface.php', - 'Symfony\\Component\\Console\\Helper\\DebugFormatterHelper' => __DIR__ . '/..' . '/symfony/console/Helper/DebugFormatterHelper.php', - 'Symfony\\Component\\Console\\Helper\\DescriptorHelper' => __DIR__ . '/..' . '/symfony/console/Helper/DescriptorHelper.php', - 'Symfony\\Component\\Console\\Helper\\Dumper' => __DIR__ . '/..' . '/symfony/console/Helper/Dumper.php', - 'Symfony\\Component\\Console\\Helper\\FormatterHelper' => __DIR__ . '/..' . '/symfony/console/Helper/FormatterHelper.php', - 'Symfony\\Component\\Console\\Helper\\Helper' => __DIR__ . '/..' . '/symfony/console/Helper/Helper.php', - 'Symfony\\Component\\Console\\Helper\\HelperInterface' => __DIR__ . '/..' . '/symfony/console/Helper/HelperInterface.php', - 'Symfony\\Component\\Console\\Helper\\HelperSet' => __DIR__ . '/..' . '/symfony/console/Helper/HelperSet.php', - 'Symfony\\Component\\Console\\Helper\\InputAwareHelper' => __DIR__ . '/..' . '/symfony/console/Helper/InputAwareHelper.php', - 'Symfony\\Component\\Console\\Helper\\OutputWrapper' => __DIR__ . '/..' . '/symfony/console/Helper/OutputWrapper.php', - 'Symfony\\Component\\Console\\Helper\\ProcessHelper' => __DIR__ . '/..' . '/symfony/console/Helper/ProcessHelper.php', - 'Symfony\\Component\\Console\\Helper\\ProgressBar' => __DIR__ . '/..' . '/symfony/console/Helper/ProgressBar.php', - 'Symfony\\Component\\Console\\Helper\\ProgressIndicator' => __DIR__ . '/..' . '/symfony/console/Helper/ProgressIndicator.php', - 'Symfony\\Component\\Console\\Helper\\QuestionHelper' => __DIR__ . '/..' . '/symfony/console/Helper/QuestionHelper.php', - 'Symfony\\Component\\Console\\Helper\\SymfonyQuestionHelper' => __DIR__ . '/..' . '/symfony/console/Helper/SymfonyQuestionHelper.php', - 'Symfony\\Component\\Console\\Helper\\Table' => __DIR__ . '/..' . '/symfony/console/Helper/Table.php', - 'Symfony\\Component\\Console\\Helper\\TableCell' => __DIR__ . '/..' . '/symfony/console/Helper/TableCell.php', - 'Symfony\\Component\\Console\\Helper\\TableCellStyle' => __DIR__ . '/..' . '/symfony/console/Helper/TableCellStyle.php', - 'Symfony\\Component\\Console\\Helper\\TableRows' => __DIR__ . '/..' . '/symfony/console/Helper/TableRows.php', - 'Symfony\\Component\\Console\\Helper\\TableSeparator' => __DIR__ . '/..' . '/symfony/console/Helper/TableSeparator.php', - 'Symfony\\Component\\Console\\Helper\\TableStyle' => __DIR__ . '/..' . '/symfony/console/Helper/TableStyle.php', - 'Symfony\\Component\\Console\\Input\\ArgvInput' => __DIR__ . '/..' . '/symfony/console/Input/ArgvInput.php', - 'Symfony\\Component\\Console\\Input\\ArrayInput' => __DIR__ . '/..' . '/symfony/console/Input/ArrayInput.php', - 'Symfony\\Component\\Console\\Input\\Input' => __DIR__ . '/..' . '/symfony/console/Input/Input.php', - 'Symfony\\Component\\Console\\Input\\InputArgument' => __DIR__ . '/..' . '/symfony/console/Input/InputArgument.php', - 'Symfony\\Component\\Console\\Input\\InputAwareInterface' => __DIR__ . '/..' . '/symfony/console/Input/InputAwareInterface.php', - 'Symfony\\Component\\Console\\Input\\InputDefinition' => __DIR__ . '/..' . '/symfony/console/Input/InputDefinition.php', - 'Symfony\\Component\\Console\\Input\\InputInterface' => __DIR__ . '/..' . '/symfony/console/Input/InputInterface.php', - 'Symfony\\Component\\Console\\Input\\InputOption' => __DIR__ . '/..' . '/symfony/console/Input/InputOption.php', - 'Symfony\\Component\\Console\\Input\\StreamableInputInterface' => __DIR__ . '/..' . '/symfony/console/Input/StreamableInputInterface.php', - 'Symfony\\Component\\Console\\Input\\StringInput' => __DIR__ . '/..' . '/symfony/console/Input/StringInput.php', - 'Symfony\\Component\\Console\\Logger\\ConsoleLogger' => __DIR__ . '/..' . '/symfony/console/Logger/ConsoleLogger.php', - 'Symfony\\Component\\Console\\Messenger\\RunCommandContext' => __DIR__ . '/..' . '/symfony/console/Messenger/RunCommandContext.php', - 'Symfony\\Component\\Console\\Messenger\\RunCommandMessage' => __DIR__ . '/..' . '/symfony/console/Messenger/RunCommandMessage.php', - 'Symfony\\Component\\Console\\Messenger\\RunCommandMessageHandler' => __DIR__ . '/..' . '/symfony/console/Messenger/RunCommandMessageHandler.php', - 'Symfony\\Component\\Console\\Output\\AnsiColorMode' => __DIR__ . '/..' . '/symfony/console/Output/AnsiColorMode.php', - 'Symfony\\Component\\Console\\Output\\BufferedOutput' => __DIR__ . '/..' . '/symfony/console/Output/BufferedOutput.php', - 'Symfony\\Component\\Console\\Output\\ConsoleOutput' => __DIR__ . '/..' . '/symfony/console/Output/ConsoleOutput.php', - 'Symfony\\Component\\Console\\Output\\ConsoleOutputInterface' => __DIR__ . '/..' . '/symfony/console/Output/ConsoleOutputInterface.php', - 'Symfony\\Component\\Console\\Output\\ConsoleSectionOutput' => __DIR__ . '/..' . '/symfony/console/Output/ConsoleSectionOutput.php', - 'Symfony\\Component\\Console\\Output\\NullOutput' => __DIR__ . '/..' . '/symfony/console/Output/NullOutput.php', - 'Symfony\\Component\\Console\\Output\\Output' => __DIR__ . '/..' . '/symfony/console/Output/Output.php', - 'Symfony\\Component\\Console\\Output\\OutputInterface' => __DIR__ . '/..' . '/symfony/console/Output/OutputInterface.php', - 'Symfony\\Component\\Console\\Output\\StreamOutput' => __DIR__ . '/..' . '/symfony/console/Output/StreamOutput.php', - 'Symfony\\Component\\Console\\Output\\TrimmedBufferOutput' => __DIR__ . '/..' . '/symfony/console/Output/TrimmedBufferOutput.php', - 'Symfony\\Component\\Console\\Question\\ChoiceQuestion' => __DIR__ . '/..' . '/symfony/console/Question/ChoiceQuestion.php', - 'Symfony\\Component\\Console\\Question\\ConfirmationQuestion' => __DIR__ . '/..' . '/symfony/console/Question/ConfirmationQuestion.php', - 'Symfony\\Component\\Console\\Question\\Question' => __DIR__ . '/..' . '/symfony/console/Question/Question.php', - 'Symfony\\Component\\Console\\SignalRegistry\\SignalMap' => __DIR__ . '/..' . '/symfony/console/SignalRegistry/SignalMap.php', - 'Symfony\\Component\\Console\\SignalRegistry\\SignalRegistry' => __DIR__ . '/..' . '/symfony/console/SignalRegistry/SignalRegistry.php', - 'Symfony\\Component\\Console\\SingleCommandApplication' => __DIR__ . '/..' . '/symfony/console/SingleCommandApplication.php', - 'Symfony\\Component\\Console\\Style\\OutputStyle' => __DIR__ . '/..' . '/symfony/console/Style/OutputStyle.php', - 'Symfony\\Component\\Console\\Style\\StyleInterface' => __DIR__ . '/..' . '/symfony/console/Style/StyleInterface.php', - 'Symfony\\Component\\Console\\Style\\SymfonyStyle' => __DIR__ . '/..' . '/symfony/console/Style/SymfonyStyle.php', - 'Symfony\\Component\\Console\\Terminal' => __DIR__ . '/..' . '/symfony/console/Terminal.php', - 'Symfony\\Component\\Console\\Tester\\ApplicationTester' => __DIR__ . '/..' . '/symfony/console/Tester/ApplicationTester.php', - 'Symfony\\Component\\Console\\Tester\\CommandCompletionTester' => __DIR__ . '/..' . '/symfony/console/Tester/CommandCompletionTester.php', - 'Symfony\\Component\\Console\\Tester\\CommandTester' => __DIR__ . '/..' . '/symfony/console/Tester/CommandTester.php', - 'Symfony\\Component\\Console\\Tester\\Constraint\\CommandIsSuccessful' => __DIR__ . '/..' . '/symfony/console/Tester/Constraint/CommandIsSuccessful.php', - 'Symfony\\Component\\Console\\Tester\\TesterTrait' => __DIR__ . '/..' . '/symfony/console/Tester/TesterTrait.php', - 'Symfony\\Component\\CssSelector\\CssSelectorConverter' => __DIR__ . '/..' . '/symfony/css-selector/CssSelectorConverter.php', - 'Symfony\\Component\\CssSelector\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/css-selector/Exception/ExceptionInterface.php', - 'Symfony\\Component\\CssSelector\\Exception\\ExpressionErrorException' => __DIR__ . '/..' . '/symfony/css-selector/Exception/ExpressionErrorException.php', - 'Symfony\\Component\\CssSelector\\Exception\\InternalErrorException' => __DIR__ . '/..' . '/symfony/css-selector/Exception/InternalErrorException.php', - 'Symfony\\Component\\CssSelector\\Exception\\ParseException' => __DIR__ . '/..' . '/symfony/css-selector/Exception/ParseException.php', - 'Symfony\\Component\\CssSelector\\Exception\\SyntaxErrorException' => __DIR__ . '/..' . '/symfony/css-selector/Exception/SyntaxErrorException.php', - 'Symfony\\Component\\CssSelector\\Node\\AbstractNode' => __DIR__ . '/..' . '/symfony/css-selector/Node/AbstractNode.php', - 'Symfony\\Component\\CssSelector\\Node\\AttributeNode' => __DIR__ . '/..' . '/symfony/css-selector/Node/AttributeNode.php', - 'Symfony\\Component\\CssSelector\\Node\\ClassNode' => __DIR__ . '/..' . '/symfony/css-selector/Node/ClassNode.php', - 'Symfony\\Component\\CssSelector\\Node\\CombinedSelectorNode' => __DIR__ . '/..' . '/symfony/css-selector/Node/CombinedSelectorNode.php', - 'Symfony\\Component\\CssSelector\\Node\\ElementNode' => __DIR__ . '/..' . '/symfony/css-selector/Node/ElementNode.php', - 'Symfony\\Component\\CssSelector\\Node\\FunctionNode' => __DIR__ . '/..' . '/symfony/css-selector/Node/FunctionNode.php', - 'Symfony\\Component\\CssSelector\\Node\\HashNode' => __DIR__ . '/..' . '/symfony/css-selector/Node/HashNode.php', - 'Symfony\\Component\\CssSelector\\Node\\MatchingNode' => __DIR__ . '/..' . '/symfony/css-selector/Node/MatchingNode.php', - 'Symfony\\Component\\CssSelector\\Node\\NegationNode' => __DIR__ . '/..' . '/symfony/css-selector/Node/NegationNode.php', - 'Symfony\\Component\\CssSelector\\Node\\NodeInterface' => __DIR__ . '/..' . '/symfony/css-selector/Node/NodeInterface.php', - 'Symfony\\Component\\CssSelector\\Node\\PseudoNode' => __DIR__ . '/..' . '/symfony/css-selector/Node/PseudoNode.php', - 'Symfony\\Component\\CssSelector\\Node\\SelectorNode' => __DIR__ . '/..' . '/symfony/css-selector/Node/SelectorNode.php', - 'Symfony\\Component\\CssSelector\\Node\\Specificity' => __DIR__ . '/..' . '/symfony/css-selector/Node/Specificity.php', - 'Symfony\\Component\\CssSelector\\Node\\SpecificityAdjustmentNode' => __DIR__ . '/..' . '/symfony/css-selector/Node/SpecificityAdjustmentNode.php', - 'Symfony\\Component\\CssSelector\\Parser\\Handler\\CommentHandler' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Handler/CommentHandler.php', - 'Symfony\\Component\\CssSelector\\Parser\\Handler\\HandlerInterface' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Handler/HandlerInterface.php', - 'Symfony\\Component\\CssSelector\\Parser\\Handler\\HashHandler' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Handler/HashHandler.php', - 'Symfony\\Component\\CssSelector\\Parser\\Handler\\IdentifierHandler' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Handler/IdentifierHandler.php', - 'Symfony\\Component\\CssSelector\\Parser\\Handler\\NumberHandler' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Handler/NumberHandler.php', - 'Symfony\\Component\\CssSelector\\Parser\\Handler\\StringHandler' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Handler/StringHandler.php', - 'Symfony\\Component\\CssSelector\\Parser\\Handler\\WhitespaceHandler' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Handler/WhitespaceHandler.php', - 'Symfony\\Component\\CssSelector\\Parser\\Parser' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Parser.php', - 'Symfony\\Component\\CssSelector\\Parser\\ParserInterface' => __DIR__ . '/..' . '/symfony/css-selector/Parser/ParserInterface.php', - 'Symfony\\Component\\CssSelector\\Parser\\Reader' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Reader.php', - 'Symfony\\Component\\CssSelector\\Parser\\Shortcut\\ClassParser' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Shortcut/ClassParser.php', - 'Symfony\\Component\\CssSelector\\Parser\\Shortcut\\ElementParser' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Shortcut/ElementParser.php', - 'Symfony\\Component\\CssSelector\\Parser\\Shortcut\\EmptyStringParser' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Shortcut/EmptyStringParser.php', - 'Symfony\\Component\\CssSelector\\Parser\\Shortcut\\HashParser' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Shortcut/HashParser.php', - 'Symfony\\Component\\CssSelector\\Parser\\Token' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Token.php', - 'Symfony\\Component\\CssSelector\\Parser\\TokenStream' => __DIR__ . '/..' . '/symfony/css-selector/Parser/TokenStream.php', - 'Symfony\\Component\\CssSelector\\Parser\\Tokenizer\\Tokenizer' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Tokenizer/Tokenizer.php', - 'Symfony\\Component\\CssSelector\\Parser\\Tokenizer\\TokenizerEscaping' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Tokenizer/TokenizerEscaping.php', - 'Symfony\\Component\\CssSelector\\Parser\\Tokenizer\\TokenizerPatterns' => __DIR__ . '/..' . '/symfony/css-selector/Parser/Tokenizer/TokenizerPatterns.php', - 'Symfony\\Component\\CssSelector\\XPath\\Extension\\AbstractExtension' => __DIR__ . '/..' . '/symfony/css-selector/XPath/Extension/AbstractExtension.php', - 'Symfony\\Component\\CssSelector\\XPath\\Extension\\AttributeMatchingExtension' => __DIR__ . '/..' . '/symfony/css-selector/XPath/Extension/AttributeMatchingExtension.php', - 'Symfony\\Component\\CssSelector\\XPath\\Extension\\CombinationExtension' => __DIR__ . '/..' . '/symfony/css-selector/XPath/Extension/CombinationExtension.php', - 'Symfony\\Component\\CssSelector\\XPath\\Extension\\ExtensionInterface' => __DIR__ . '/..' . '/symfony/css-selector/XPath/Extension/ExtensionInterface.php', - 'Symfony\\Component\\CssSelector\\XPath\\Extension\\FunctionExtension' => __DIR__ . '/..' . '/symfony/css-selector/XPath/Extension/FunctionExtension.php', - 'Symfony\\Component\\CssSelector\\XPath\\Extension\\HtmlExtension' => __DIR__ . '/..' . '/symfony/css-selector/XPath/Extension/HtmlExtension.php', - 'Symfony\\Component\\CssSelector\\XPath\\Extension\\NodeExtension' => __DIR__ . '/..' . '/symfony/css-selector/XPath/Extension/NodeExtension.php', - 'Symfony\\Component\\CssSelector\\XPath\\Extension\\PseudoClassExtension' => __DIR__ . '/..' . '/symfony/css-selector/XPath/Extension/PseudoClassExtension.php', - 'Symfony\\Component\\CssSelector\\XPath\\Translator' => __DIR__ . '/..' . '/symfony/css-selector/XPath/Translator.php', - 'Symfony\\Component\\CssSelector\\XPath\\TranslatorInterface' => __DIR__ . '/..' . '/symfony/css-selector/XPath/TranslatorInterface.php', - 'Symfony\\Component\\CssSelector\\XPath\\XPathExpr' => __DIR__ . '/..' . '/symfony/css-selector/XPath/XPathExpr.php', - 'Symfony\\Component\\ErrorHandler\\BufferingLogger' => __DIR__ . '/..' . '/symfony/error-handler/BufferingLogger.php', - 'Symfony\\Component\\ErrorHandler\\Debug' => __DIR__ . '/..' . '/symfony/error-handler/Debug.php', - 'Symfony\\Component\\ErrorHandler\\DebugClassLoader' => __DIR__ . '/..' . '/symfony/error-handler/DebugClassLoader.php', - 'Symfony\\Component\\ErrorHandler\\ErrorEnhancer\\ClassNotFoundErrorEnhancer' => __DIR__ . '/..' . '/symfony/error-handler/ErrorEnhancer/ClassNotFoundErrorEnhancer.php', - 'Symfony\\Component\\ErrorHandler\\ErrorEnhancer\\ErrorEnhancerInterface' => __DIR__ . '/..' . '/symfony/error-handler/ErrorEnhancer/ErrorEnhancerInterface.php', - 'Symfony\\Component\\ErrorHandler\\ErrorEnhancer\\UndefinedFunctionErrorEnhancer' => __DIR__ . '/..' . '/symfony/error-handler/ErrorEnhancer/UndefinedFunctionErrorEnhancer.php', - 'Symfony\\Component\\ErrorHandler\\ErrorEnhancer\\UndefinedMethodErrorEnhancer' => __DIR__ . '/..' . '/symfony/error-handler/ErrorEnhancer/UndefinedMethodErrorEnhancer.php', - 'Symfony\\Component\\ErrorHandler\\ErrorHandler' => __DIR__ . '/..' . '/symfony/error-handler/ErrorHandler.php', - 'Symfony\\Component\\ErrorHandler\\ErrorRenderer\\CliErrorRenderer' => __DIR__ . '/..' . '/symfony/error-handler/ErrorRenderer/CliErrorRenderer.php', - 'Symfony\\Component\\ErrorHandler\\ErrorRenderer\\ErrorRendererInterface' => __DIR__ . '/..' . '/symfony/error-handler/ErrorRenderer/ErrorRendererInterface.php', - 'Symfony\\Component\\ErrorHandler\\ErrorRenderer\\FileLinkFormatter' => __DIR__ . '/..' . '/symfony/error-handler/ErrorRenderer/FileLinkFormatter.php', - 'Symfony\\Component\\ErrorHandler\\ErrorRenderer\\HtmlErrorRenderer' => __DIR__ . '/..' . '/symfony/error-handler/ErrorRenderer/HtmlErrorRenderer.php', - 'Symfony\\Component\\ErrorHandler\\ErrorRenderer\\SerializerErrorRenderer' => __DIR__ . '/..' . '/symfony/error-handler/ErrorRenderer/SerializerErrorRenderer.php', - 'Symfony\\Component\\ErrorHandler\\Error\\ClassNotFoundError' => __DIR__ . '/..' . '/symfony/error-handler/Error/ClassNotFoundError.php', - 'Symfony\\Component\\ErrorHandler\\Error\\FatalError' => __DIR__ . '/..' . '/symfony/error-handler/Error/FatalError.php', - 'Symfony\\Component\\ErrorHandler\\Error\\OutOfMemoryError' => __DIR__ . '/..' . '/symfony/error-handler/Error/OutOfMemoryError.php', - 'Symfony\\Component\\ErrorHandler\\Error\\UndefinedFunctionError' => __DIR__ . '/..' . '/symfony/error-handler/Error/UndefinedFunctionError.php', - 'Symfony\\Component\\ErrorHandler\\Error\\UndefinedMethodError' => __DIR__ . '/..' . '/symfony/error-handler/Error/UndefinedMethodError.php', - 'Symfony\\Component\\ErrorHandler\\Exception\\FlattenException' => __DIR__ . '/..' . '/symfony/error-handler/Exception/FlattenException.php', - 'Symfony\\Component\\ErrorHandler\\Exception\\SilencedErrorContext' => __DIR__ . '/..' . '/symfony/error-handler/Exception/SilencedErrorContext.php', - 'Symfony\\Component\\ErrorHandler\\Internal\\TentativeTypes' => __DIR__ . '/..' . '/symfony/error-handler/Internal/TentativeTypes.php', - 'Symfony\\Component\\ErrorHandler\\ThrowableUtils' => __DIR__ . '/..' . '/symfony/error-handler/ThrowableUtils.php', - 'Symfony\\Component\\EventDispatcher\\Attribute\\AsEventListener' => __DIR__ . '/..' . '/symfony/event-dispatcher/Attribute/AsEventListener.php', - 'Symfony\\Component\\EventDispatcher\\Debug\\TraceableEventDispatcher' => __DIR__ . '/..' . '/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php', - 'Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener' => __DIR__ . '/..' . '/symfony/event-dispatcher/Debug/WrappedListener.php', - 'Symfony\\Component\\EventDispatcher\\DependencyInjection\\AddEventAliasesPass' => __DIR__ . '/..' . '/symfony/event-dispatcher/DependencyInjection/AddEventAliasesPass.php', - 'Symfony\\Component\\EventDispatcher\\DependencyInjection\\RegisterListenersPass' => __DIR__ . '/..' . '/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php', - 'Symfony\\Component\\EventDispatcher\\EventDispatcher' => __DIR__ . '/..' . '/symfony/event-dispatcher/EventDispatcher.php', - 'Symfony\\Component\\EventDispatcher\\EventDispatcherInterface' => __DIR__ . '/..' . '/symfony/event-dispatcher/EventDispatcherInterface.php', - 'Symfony\\Component\\EventDispatcher\\EventSubscriberInterface' => __DIR__ . '/..' . '/symfony/event-dispatcher/EventSubscriberInterface.php', - 'Symfony\\Component\\EventDispatcher\\GenericEvent' => __DIR__ . '/..' . '/symfony/event-dispatcher/GenericEvent.php', - 'Symfony\\Component\\EventDispatcher\\ImmutableEventDispatcher' => __DIR__ . '/..' . '/symfony/event-dispatcher/ImmutableEventDispatcher.php', - 'Symfony\\Component\\Finder\\Comparator\\Comparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/Comparator.php', - 'Symfony\\Component\\Finder\\Comparator\\DateComparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/DateComparator.php', - 'Symfony\\Component\\Finder\\Comparator\\NumberComparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/NumberComparator.php', - 'Symfony\\Component\\Finder\\Exception\\AccessDeniedException' => __DIR__ . '/..' . '/symfony/finder/Exception/AccessDeniedException.php', - 'Symfony\\Component\\Finder\\Exception\\DirectoryNotFoundException' => __DIR__ . '/..' . '/symfony/finder/Exception/DirectoryNotFoundException.php', - 'Symfony\\Component\\Finder\\Finder' => __DIR__ . '/..' . '/symfony/finder/Finder.php', - 'Symfony\\Component\\Finder\\Gitignore' => __DIR__ . '/..' . '/symfony/finder/Gitignore.php', - 'Symfony\\Component\\Finder\\Glob' => __DIR__ . '/..' . '/symfony/finder/Glob.php', - 'Symfony\\Component\\Finder\\Iterator\\CustomFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/CustomFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\DateRangeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/DateRangeFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\DepthRangeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/DepthRangeFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\ExcludeDirectoryFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\FileTypeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FileTypeFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\FilecontentFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FilecontentFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\FilenameFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FilenameFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\LazyIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/LazyIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\MultiplePcreFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/MultiplePcreFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\PathFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/PathFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\RecursiveDirectoryIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/RecursiveDirectoryIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\SizeRangeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/SizeRangeFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\SortableIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/SortableIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\VcsIgnoredFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/VcsIgnoredFilterIterator.php', - 'Symfony\\Component\\Finder\\SplFileInfo' => __DIR__ . '/..' . '/symfony/finder/SplFileInfo.php', - 'Symfony\\Component\\HttpFoundation\\AcceptHeader' => __DIR__ . '/..' . '/symfony/http-foundation/AcceptHeader.php', - 'Symfony\\Component\\HttpFoundation\\AcceptHeaderItem' => __DIR__ . '/..' . '/symfony/http-foundation/AcceptHeaderItem.php', - 'Symfony\\Component\\HttpFoundation\\BinaryFileResponse' => __DIR__ . '/..' . '/symfony/http-foundation/BinaryFileResponse.php', - 'Symfony\\Component\\HttpFoundation\\ChainRequestMatcher' => __DIR__ . '/..' . '/symfony/http-foundation/ChainRequestMatcher.php', - 'Symfony\\Component\\HttpFoundation\\Cookie' => __DIR__ . '/..' . '/symfony/http-foundation/Cookie.php', - 'Symfony\\Component\\HttpFoundation\\Exception\\BadRequestException' => __DIR__ . '/..' . '/symfony/http-foundation/Exception/BadRequestException.php', - 'Symfony\\Component\\HttpFoundation\\Exception\\ConflictingHeadersException' => __DIR__ . '/..' . '/symfony/http-foundation/Exception/ConflictingHeadersException.php', - 'Symfony\\Component\\HttpFoundation\\Exception\\JsonException' => __DIR__ . '/..' . '/symfony/http-foundation/Exception/JsonException.php', - 'Symfony\\Component\\HttpFoundation\\Exception\\RequestExceptionInterface' => __DIR__ . '/..' . '/symfony/http-foundation/Exception/RequestExceptionInterface.php', - 'Symfony\\Component\\HttpFoundation\\Exception\\SessionNotFoundException' => __DIR__ . '/..' . '/symfony/http-foundation/Exception/SessionNotFoundException.php', - 'Symfony\\Component\\HttpFoundation\\Exception\\SuspiciousOperationException' => __DIR__ . '/..' . '/symfony/http-foundation/Exception/SuspiciousOperationException.php', - 'Symfony\\Component\\HttpFoundation\\Exception\\UnexpectedValueException' => __DIR__ . '/..' . '/symfony/http-foundation/Exception/UnexpectedValueException.php', - 'Symfony\\Component\\HttpFoundation\\ExpressionRequestMatcher' => __DIR__ . '/..' . '/symfony/http-foundation/ExpressionRequestMatcher.php', - 'Symfony\\Component\\HttpFoundation\\FileBag' => __DIR__ . '/..' . '/symfony/http-foundation/FileBag.php', - 'Symfony\\Component\\HttpFoundation\\File\\Exception\\AccessDeniedException' => __DIR__ . '/..' . '/symfony/http-foundation/File/Exception/AccessDeniedException.php', - 'Symfony\\Component\\HttpFoundation\\File\\Exception\\CannotWriteFileException' => __DIR__ . '/..' . '/symfony/http-foundation/File/Exception/CannotWriteFileException.php', - 'Symfony\\Component\\HttpFoundation\\File\\Exception\\ExtensionFileException' => __DIR__ . '/..' . '/symfony/http-foundation/File/Exception/ExtensionFileException.php', - 'Symfony\\Component\\HttpFoundation\\File\\Exception\\FileException' => __DIR__ . '/..' . '/symfony/http-foundation/File/Exception/FileException.php', - 'Symfony\\Component\\HttpFoundation\\File\\Exception\\FileNotFoundException' => __DIR__ . '/..' . '/symfony/http-foundation/File/Exception/FileNotFoundException.php', - 'Symfony\\Component\\HttpFoundation\\File\\Exception\\FormSizeFileException' => __DIR__ . '/..' . '/symfony/http-foundation/File/Exception/FormSizeFileException.php', - 'Symfony\\Component\\HttpFoundation\\File\\Exception\\IniSizeFileException' => __DIR__ . '/..' . '/symfony/http-foundation/File/Exception/IniSizeFileException.php', - 'Symfony\\Component\\HttpFoundation\\File\\Exception\\NoFileException' => __DIR__ . '/..' . '/symfony/http-foundation/File/Exception/NoFileException.php', - 'Symfony\\Component\\HttpFoundation\\File\\Exception\\NoTmpDirFileException' => __DIR__ . '/..' . '/symfony/http-foundation/File/Exception/NoTmpDirFileException.php', - 'Symfony\\Component\\HttpFoundation\\File\\Exception\\PartialFileException' => __DIR__ . '/..' . '/symfony/http-foundation/File/Exception/PartialFileException.php', - 'Symfony\\Component\\HttpFoundation\\File\\Exception\\UnexpectedTypeException' => __DIR__ . '/..' . '/symfony/http-foundation/File/Exception/UnexpectedTypeException.php', - 'Symfony\\Component\\HttpFoundation\\File\\Exception\\UploadException' => __DIR__ . '/..' . '/symfony/http-foundation/File/Exception/UploadException.php', - 'Symfony\\Component\\HttpFoundation\\File\\File' => __DIR__ . '/..' . '/symfony/http-foundation/File/File.php', - 'Symfony\\Component\\HttpFoundation\\File\\Stream' => __DIR__ . '/..' . '/symfony/http-foundation/File/Stream.php', - 'Symfony\\Component\\HttpFoundation\\File\\UploadedFile' => __DIR__ . '/..' . '/symfony/http-foundation/File/UploadedFile.php', - 'Symfony\\Component\\HttpFoundation\\HeaderBag' => __DIR__ . '/..' . '/symfony/http-foundation/HeaderBag.php', - 'Symfony\\Component\\HttpFoundation\\HeaderUtils' => __DIR__ . '/..' . '/symfony/http-foundation/HeaderUtils.php', - 'Symfony\\Component\\HttpFoundation\\InputBag' => __DIR__ . '/..' . '/symfony/http-foundation/InputBag.php', - 'Symfony\\Component\\HttpFoundation\\IpUtils' => __DIR__ . '/..' . '/symfony/http-foundation/IpUtils.php', - 'Symfony\\Component\\HttpFoundation\\JsonResponse' => __DIR__ . '/..' . '/symfony/http-foundation/JsonResponse.php', - 'Symfony\\Component\\HttpFoundation\\ParameterBag' => __DIR__ . '/..' . '/symfony/http-foundation/ParameterBag.php', - 'Symfony\\Component\\HttpFoundation\\RateLimiter\\AbstractRequestRateLimiter' => __DIR__ . '/..' . '/symfony/http-foundation/RateLimiter/AbstractRequestRateLimiter.php', - 'Symfony\\Component\\HttpFoundation\\RateLimiter\\PeekableRequestRateLimiterInterface' => __DIR__ . '/..' . '/symfony/http-foundation/RateLimiter/PeekableRequestRateLimiterInterface.php', - 'Symfony\\Component\\HttpFoundation\\RateLimiter\\RequestRateLimiterInterface' => __DIR__ . '/..' . '/symfony/http-foundation/RateLimiter/RequestRateLimiterInterface.php', - 'Symfony\\Component\\HttpFoundation\\RedirectResponse' => __DIR__ . '/..' . '/symfony/http-foundation/RedirectResponse.php', - 'Symfony\\Component\\HttpFoundation\\Request' => __DIR__ . '/..' . '/symfony/http-foundation/Request.php', - 'Symfony\\Component\\HttpFoundation\\RequestMatcher' => __DIR__ . '/..' . '/symfony/http-foundation/RequestMatcher.php', - 'Symfony\\Component\\HttpFoundation\\RequestMatcherInterface' => __DIR__ . '/..' . '/symfony/http-foundation/RequestMatcherInterface.php', - 'Symfony\\Component\\HttpFoundation\\RequestMatcher\\AttributesRequestMatcher' => __DIR__ . '/..' . '/symfony/http-foundation/RequestMatcher/AttributesRequestMatcher.php', - 'Symfony\\Component\\HttpFoundation\\RequestMatcher\\ExpressionRequestMatcher' => __DIR__ . '/..' . '/symfony/http-foundation/RequestMatcher/ExpressionRequestMatcher.php', - 'Symfony\\Component\\HttpFoundation\\RequestMatcher\\HostRequestMatcher' => __DIR__ . '/..' . '/symfony/http-foundation/RequestMatcher/HostRequestMatcher.php', - 'Symfony\\Component\\HttpFoundation\\RequestMatcher\\IpsRequestMatcher' => __DIR__ . '/..' . '/symfony/http-foundation/RequestMatcher/IpsRequestMatcher.php', - 'Symfony\\Component\\HttpFoundation\\RequestMatcher\\IsJsonRequestMatcher' => __DIR__ . '/..' . '/symfony/http-foundation/RequestMatcher/IsJsonRequestMatcher.php', - 'Symfony\\Component\\HttpFoundation\\RequestMatcher\\MethodRequestMatcher' => __DIR__ . '/..' . '/symfony/http-foundation/RequestMatcher/MethodRequestMatcher.php', - 'Symfony\\Component\\HttpFoundation\\RequestMatcher\\PathRequestMatcher' => __DIR__ . '/..' . '/symfony/http-foundation/RequestMatcher/PathRequestMatcher.php', - 'Symfony\\Component\\HttpFoundation\\RequestMatcher\\PortRequestMatcher' => __DIR__ . '/..' . '/symfony/http-foundation/RequestMatcher/PortRequestMatcher.php', - 'Symfony\\Component\\HttpFoundation\\RequestMatcher\\SchemeRequestMatcher' => __DIR__ . '/..' . '/symfony/http-foundation/RequestMatcher/SchemeRequestMatcher.php', - 'Symfony\\Component\\HttpFoundation\\RequestStack' => __DIR__ . '/..' . '/symfony/http-foundation/RequestStack.php', - 'Symfony\\Component\\HttpFoundation\\Response' => __DIR__ . '/..' . '/symfony/http-foundation/Response.php', - 'Symfony\\Component\\HttpFoundation\\ResponseHeaderBag' => __DIR__ . '/..' . '/symfony/http-foundation/ResponseHeaderBag.php', - 'Symfony\\Component\\HttpFoundation\\ServerBag' => __DIR__ . '/..' . '/symfony/http-foundation/ServerBag.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Attribute\\AttributeBag' => __DIR__ . '/..' . '/symfony/http-foundation/Session/Attribute/AttributeBag.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Attribute\\AttributeBagInterface' => __DIR__ . '/..' . '/symfony/http-foundation/Session/Attribute/AttributeBagInterface.php', - 'Symfony\\Component\\HttpFoundation\\Session\\FlashBagAwareSessionInterface' => __DIR__ . '/..' . '/symfony/http-foundation/Session/FlashBagAwareSessionInterface.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Flash\\AutoExpireFlashBag' => __DIR__ . '/..' . '/symfony/http-foundation/Session/Flash/AutoExpireFlashBag.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Flash\\FlashBag' => __DIR__ . '/..' . '/symfony/http-foundation/Session/Flash/FlashBag.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Flash\\FlashBagInterface' => __DIR__ . '/..' . '/symfony/http-foundation/Session/Flash/FlashBagInterface.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Session' => __DIR__ . '/..' . '/symfony/http-foundation/Session/Session.php', - 'Symfony\\Component\\HttpFoundation\\Session\\SessionBagInterface' => __DIR__ . '/..' . '/symfony/http-foundation/Session/SessionBagInterface.php', - 'Symfony\\Component\\HttpFoundation\\Session\\SessionBagProxy' => __DIR__ . '/..' . '/symfony/http-foundation/Session/SessionBagProxy.php', - 'Symfony\\Component\\HttpFoundation\\Session\\SessionFactory' => __DIR__ . '/..' . '/symfony/http-foundation/Session/SessionFactory.php', - 'Symfony\\Component\\HttpFoundation\\Session\\SessionFactoryInterface' => __DIR__ . '/..' . '/symfony/http-foundation/Session/SessionFactoryInterface.php', - 'Symfony\\Component\\HttpFoundation\\Session\\SessionInterface' => __DIR__ . '/..' . '/symfony/http-foundation/Session/SessionInterface.php', - 'Symfony\\Component\\HttpFoundation\\Session\\SessionUtils' => __DIR__ . '/..' . '/symfony/http-foundation/Session/SessionUtils.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Handler\\AbstractSessionHandler' => __DIR__ . '/..' . '/symfony/http-foundation/Session/Storage/Handler/AbstractSessionHandler.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Handler\\IdentityMarshaller' => __DIR__ . '/..' . '/symfony/http-foundation/Session/Storage/Handler/IdentityMarshaller.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Handler\\MarshallingSessionHandler' => __DIR__ . '/..' . '/symfony/http-foundation/Session/Storage/Handler/MarshallingSessionHandler.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Handler\\MemcachedSessionHandler' => __DIR__ . '/..' . '/symfony/http-foundation/Session/Storage/Handler/MemcachedSessionHandler.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Handler\\MigratingSessionHandler' => __DIR__ . '/..' . '/symfony/http-foundation/Session/Storage/Handler/MigratingSessionHandler.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Handler\\MongoDbSessionHandler' => __DIR__ . '/..' . '/symfony/http-foundation/Session/Storage/Handler/MongoDbSessionHandler.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Handler\\NativeFileSessionHandler' => __DIR__ . '/..' . '/symfony/http-foundation/Session/Storage/Handler/NativeFileSessionHandler.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Handler\\NullSessionHandler' => __DIR__ . '/..' . '/symfony/http-foundation/Session/Storage/Handler/NullSessionHandler.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Handler\\PdoSessionHandler' => __DIR__ . '/..' . '/symfony/http-foundation/Session/Storage/Handler/PdoSessionHandler.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Handler\\RedisSessionHandler' => __DIR__ . '/..' . '/symfony/http-foundation/Session/Storage/Handler/RedisSessionHandler.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Handler\\SessionHandlerFactory' => __DIR__ . '/..' . '/symfony/http-foundation/Session/Storage/Handler/SessionHandlerFactory.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Handler\\StrictSessionHandler' => __DIR__ . '/..' . '/symfony/http-foundation/Session/Storage/Handler/StrictSessionHandler.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\MetadataBag' => __DIR__ . '/..' . '/symfony/http-foundation/Session/Storage/MetadataBag.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\MockArraySessionStorage' => __DIR__ . '/..' . '/symfony/http-foundation/Session/Storage/MockArraySessionStorage.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\MockFileSessionStorage' => __DIR__ . '/..' . '/symfony/http-foundation/Session/Storage/MockFileSessionStorage.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\MockFileSessionStorageFactory' => __DIR__ . '/..' . '/symfony/http-foundation/Session/Storage/MockFileSessionStorageFactory.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\NativeSessionStorage' => __DIR__ . '/..' . '/symfony/http-foundation/Session/Storage/NativeSessionStorage.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\NativeSessionStorageFactory' => __DIR__ . '/..' . '/symfony/http-foundation/Session/Storage/NativeSessionStorageFactory.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\PhpBridgeSessionStorage' => __DIR__ . '/..' . '/symfony/http-foundation/Session/Storage/PhpBridgeSessionStorage.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\PhpBridgeSessionStorageFactory' => __DIR__ . '/..' . '/symfony/http-foundation/Session/Storage/PhpBridgeSessionStorageFactory.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Proxy\\AbstractProxy' => __DIR__ . '/..' . '/symfony/http-foundation/Session/Storage/Proxy/AbstractProxy.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Proxy\\SessionHandlerProxy' => __DIR__ . '/..' . '/symfony/http-foundation/Session/Storage/Proxy/SessionHandlerProxy.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\SessionStorageFactoryInterface' => __DIR__ . '/..' . '/symfony/http-foundation/Session/Storage/SessionStorageFactoryInterface.php', - 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\SessionStorageInterface' => __DIR__ . '/..' . '/symfony/http-foundation/Session/Storage/SessionStorageInterface.php', - 'Symfony\\Component\\HttpFoundation\\StreamedJsonResponse' => __DIR__ . '/..' . '/symfony/http-foundation/StreamedJsonResponse.php', - 'Symfony\\Component\\HttpFoundation\\StreamedResponse' => __DIR__ . '/..' . '/symfony/http-foundation/StreamedResponse.php', - 'Symfony\\Component\\HttpFoundation\\Test\\Constraint\\RequestAttributeValueSame' => __DIR__ . '/..' . '/symfony/http-foundation/Test/Constraint/RequestAttributeValueSame.php', - 'Symfony\\Component\\HttpFoundation\\Test\\Constraint\\ResponseCookieValueSame' => __DIR__ . '/..' . '/symfony/http-foundation/Test/Constraint/ResponseCookieValueSame.php', - 'Symfony\\Component\\HttpFoundation\\Test\\Constraint\\ResponseFormatSame' => __DIR__ . '/..' . '/symfony/http-foundation/Test/Constraint/ResponseFormatSame.php', - 'Symfony\\Component\\HttpFoundation\\Test\\Constraint\\ResponseHasCookie' => __DIR__ . '/..' . '/symfony/http-foundation/Test/Constraint/ResponseHasCookie.php', - 'Symfony\\Component\\HttpFoundation\\Test\\Constraint\\ResponseHasHeader' => __DIR__ . '/..' . '/symfony/http-foundation/Test/Constraint/ResponseHasHeader.php', - 'Symfony\\Component\\HttpFoundation\\Test\\Constraint\\ResponseHeaderLocationSame' => __DIR__ . '/..' . '/symfony/http-foundation/Test/Constraint/ResponseHeaderLocationSame.php', - 'Symfony\\Component\\HttpFoundation\\Test\\Constraint\\ResponseHeaderSame' => __DIR__ . '/..' . '/symfony/http-foundation/Test/Constraint/ResponseHeaderSame.php', - 'Symfony\\Component\\HttpFoundation\\Test\\Constraint\\ResponseIsRedirected' => __DIR__ . '/..' . '/symfony/http-foundation/Test/Constraint/ResponseIsRedirected.php', - 'Symfony\\Component\\HttpFoundation\\Test\\Constraint\\ResponseIsSuccessful' => __DIR__ . '/..' . '/symfony/http-foundation/Test/Constraint/ResponseIsSuccessful.php', - 'Symfony\\Component\\HttpFoundation\\Test\\Constraint\\ResponseIsUnprocessable' => __DIR__ . '/..' . '/symfony/http-foundation/Test/Constraint/ResponseIsUnprocessable.php', - 'Symfony\\Component\\HttpFoundation\\Test\\Constraint\\ResponseStatusCodeSame' => __DIR__ . '/..' . '/symfony/http-foundation/Test/Constraint/ResponseStatusCodeSame.php', - 'Symfony\\Component\\HttpFoundation\\UriSigner' => __DIR__ . '/..' . '/symfony/http-foundation/UriSigner.php', - 'Symfony\\Component\\HttpFoundation\\UrlHelper' => __DIR__ . '/..' . '/symfony/http-foundation/UrlHelper.php', - 'Symfony\\Component\\HttpKernel\\Attribute\\AsController' => __DIR__ . '/..' . '/symfony/http-kernel/Attribute/AsController.php', - 'Symfony\\Component\\HttpKernel\\Attribute\\AsTargetedValueResolver' => __DIR__ . '/..' . '/symfony/http-kernel/Attribute/AsTargetedValueResolver.php', - 'Symfony\\Component\\HttpKernel\\Attribute\\Cache' => __DIR__ . '/..' . '/symfony/http-kernel/Attribute/Cache.php', - 'Symfony\\Component\\HttpKernel\\Attribute\\MapDateTime' => __DIR__ . '/..' . '/symfony/http-kernel/Attribute/MapDateTime.php', - 'Symfony\\Component\\HttpKernel\\Attribute\\MapQueryParameter' => __DIR__ . '/..' . '/symfony/http-kernel/Attribute/MapQueryParameter.php', - 'Symfony\\Component\\HttpKernel\\Attribute\\MapQueryString' => __DIR__ . '/..' . '/symfony/http-kernel/Attribute/MapQueryString.php', - 'Symfony\\Component\\HttpKernel\\Attribute\\MapRequestPayload' => __DIR__ . '/..' . '/symfony/http-kernel/Attribute/MapRequestPayload.php', - 'Symfony\\Component\\HttpKernel\\Attribute\\ValueResolver' => __DIR__ . '/..' . '/symfony/http-kernel/Attribute/ValueResolver.php', - 'Symfony\\Component\\HttpKernel\\Attribute\\WithHttpStatus' => __DIR__ . '/..' . '/symfony/http-kernel/Attribute/WithHttpStatus.php', - 'Symfony\\Component\\HttpKernel\\Attribute\\WithLogLevel' => __DIR__ . '/..' . '/symfony/http-kernel/Attribute/WithLogLevel.php', - 'Symfony\\Component\\HttpKernel\\Bundle\\AbstractBundle' => __DIR__ . '/..' . '/symfony/http-kernel/Bundle/AbstractBundle.php', - 'Symfony\\Component\\HttpKernel\\Bundle\\Bundle' => __DIR__ . '/..' . '/symfony/http-kernel/Bundle/Bundle.php', - 'Symfony\\Component\\HttpKernel\\Bundle\\BundleExtension' => __DIR__ . '/..' . '/symfony/http-kernel/Bundle/BundleExtension.php', - 'Symfony\\Component\\HttpKernel\\Bundle\\BundleInterface' => __DIR__ . '/..' . '/symfony/http-kernel/Bundle/BundleInterface.php', - 'Symfony\\Component\\HttpKernel\\CacheClearer\\CacheClearerInterface' => __DIR__ . '/..' . '/symfony/http-kernel/CacheClearer/CacheClearerInterface.php', - 'Symfony\\Component\\HttpKernel\\CacheClearer\\ChainCacheClearer' => __DIR__ . '/..' . '/symfony/http-kernel/CacheClearer/ChainCacheClearer.php', - 'Symfony\\Component\\HttpKernel\\CacheClearer\\Psr6CacheClearer' => __DIR__ . '/..' . '/symfony/http-kernel/CacheClearer/Psr6CacheClearer.php', - 'Symfony\\Component\\HttpKernel\\CacheWarmer\\CacheWarmer' => __DIR__ . '/..' . '/symfony/http-kernel/CacheWarmer/CacheWarmer.php', - 'Symfony\\Component\\HttpKernel\\CacheWarmer\\CacheWarmerAggregate' => __DIR__ . '/..' . '/symfony/http-kernel/CacheWarmer/CacheWarmerAggregate.php', - 'Symfony\\Component\\HttpKernel\\CacheWarmer\\CacheWarmerInterface' => __DIR__ . '/..' . '/symfony/http-kernel/CacheWarmer/CacheWarmerInterface.php', - 'Symfony\\Component\\HttpKernel\\CacheWarmer\\WarmableInterface' => __DIR__ . '/..' . '/symfony/http-kernel/CacheWarmer/WarmableInterface.php', - 'Symfony\\Component\\HttpKernel\\Config\\FileLocator' => __DIR__ . '/..' . '/symfony/http-kernel/Config/FileLocator.php', - 'Symfony\\Component\\HttpKernel\\ControllerMetadata\\ArgumentMetadata' => __DIR__ . '/..' . '/symfony/http-kernel/ControllerMetadata/ArgumentMetadata.php', - 'Symfony\\Component\\HttpKernel\\ControllerMetadata\\ArgumentMetadataFactory' => __DIR__ . '/..' . '/symfony/http-kernel/ControllerMetadata/ArgumentMetadataFactory.php', - 'Symfony\\Component\\HttpKernel\\ControllerMetadata\\ArgumentMetadataFactoryInterface' => __DIR__ . '/..' . '/symfony/http-kernel/ControllerMetadata/ArgumentMetadataFactoryInterface.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver' => __DIR__ . '/..' . '/symfony/http-kernel/Controller/ArgumentResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolverInterface' => __DIR__ . '/..' . '/symfony/http-kernel/Controller/ArgumentResolverInterface.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver\\BackedEnumValueResolver' => __DIR__ . '/..' . '/symfony/http-kernel/Controller/ArgumentResolver/BackedEnumValueResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver\\DateTimeValueResolver' => __DIR__ . '/..' . '/symfony/http-kernel/Controller/ArgumentResolver/DateTimeValueResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver\\DefaultValueResolver' => __DIR__ . '/..' . '/symfony/http-kernel/Controller/ArgumentResolver/DefaultValueResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver\\NotTaggedControllerValueResolver' => __DIR__ . '/..' . '/symfony/http-kernel/Controller/ArgumentResolver/NotTaggedControllerValueResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver\\QueryParameterValueResolver' => __DIR__ . '/..' . '/symfony/http-kernel/Controller/ArgumentResolver/QueryParameterValueResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver\\RequestAttributeValueResolver' => __DIR__ . '/..' . '/symfony/http-kernel/Controller/ArgumentResolver/RequestAttributeValueResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver\\RequestPayloadValueResolver' => __DIR__ . '/..' . '/symfony/http-kernel/Controller/ArgumentResolver/RequestPayloadValueResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver\\RequestValueResolver' => __DIR__ . '/..' . '/symfony/http-kernel/Controller/ArgumentResolver/RequestValueResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver\\ServiceValueResolver' => __DIR__ . '/..' . '/symfony/http-kernel/Controller/ArgumentResolver/ServiceValueResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver\\SessionValueResolver' => __DIR__ . '/..' . '/symfony/http-kernel/Controller/ArgumentResolver/SessionValueResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver\\TraceableValueResolver' => __DIR__ . '/..' . '/symfony/http-kernel/Controller/ArgumentResolver/TraceableValueResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver\\UidValueResolver' => __DIR__ . '/..' . '/symfony/http-kernel/Controller/ArgumentResolver/UidValueResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver\\VariadicValueResolver' => __DIR__ . '/..' . '/symfony/http-kernel/Controller/ArgumentResolver/VariadicValueResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentValueResolverInterface' => __DIR__ . '/..' . '/symfony/http-kernel/Controller/ArgumentValueResolverInterface.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ContainerControllerResolver' => __DIR__ . '/..' . '/symfony/http-kernel/Controller/ContainerControllerResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ControllerReference' => __DIR__ . '/..' . '/symfony/http-kernel/Controller/ControllerReference.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ControllerResolver' => __DIR__ . '/..' . '/symfony/http-kernel/Controller/ControllerResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ControllerResolverInterface' => __DIR__ . '/..' . '/symfony/http-kernel/Controller/ControllerResolverInterface.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ErrorController' => __DIR__ . '/..' . '/symfony/http-kernel/Controller/ErrorController.php', - 'Symfony\\Component\\HttpKernel\\Controller\\TraceableArgumentResolver' => __DIR__ . '/..' . '/symfony/http-kernel/Controller/TraceableArgumentResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\TraceableControllerResolver' => __DIR__ . '/..' . '/symfony/http-kernel/Controller/TraceableControllerResolver.php', - 'Symfony\\Component\\HttpKernel\\Controller\\ValueResolverInterface' => __DIR__ . '/..' . '/symfony/http-kernel/Controller/ValueResolverInterface.php', - 'Symfony\\Component\\HttpKernel\\DataCollector\\AjaxDataCollector' => __DIR__ . '/..' . '/symfony/http-kernel/DataCollector/AjaxDataCollector.php', - 'Symfony\\Component\\HttpKernel\\DataCollector\\ConfigDataCollector' => __DIR__ . '/..' . '/symfony/http-kernel/DataCollector/ConfigDataCollector.php', - 'Symfony\\Component\\HttpKernel\\DataCollector\\DataCollector' => __DIR__ . '/..' . '/symfony/http-kernel/DataCollector/DataCollector.php', - 'Symfony\\Component\\HttpKernel\\DataCollector\\DataCollectorInterface' => __DIR__ . '/..' . '/symfony/http-kernel/DataCollector/DataCollectorInterface.php', - 'Symfony\\Component\\HttpKernel\\DataCollector\\DumpDataCollector' => __DIR__ . '/..' . '/symfony/http-kernel/DataCollector/DumpDataCollector.php', - 'Symfony\\Component\\HttpKernel\\DataCollector\\EventDataCollector' => __DIR__ . '/..' . '/symfony/http-kernel/DataCollector/EventDataCollector.php', - 'Symfony\\Component\\HttpKernel\\DataCollector\\ExceptionDataCollector' => __DIR__ . '/..' . '/symfony/http-kernel/DataCollector/ExceptionDataCollector.php', - 'Symfony\\Component\\HttpKernel\\DataCollector\\LateDataCollectorInterface' => __DIR__ . '/..' . '/symfony/http-kernel/DataCollector/LateDataCollectorInterface.php', - 'Symfony\\Component\\HttpKernel\\DataCollector\\LoggerDataCollector' => __DIR__ . '/..' . '/symfony/http-kernel/DataCollector/LoggerDataCollector.php', - 'Symfony\\Component\\HttpKernel\\DataCollector\\MemoryDataCollector' => __DIR__ . '/..' . '/symfony/http-kernel/DataCollector/MemoryDataCollector.php', - 'Symfony\\Component\\HttpKernel\\DataCollector\\RequestDataCollector' => __DIR__ . '/..' . '/symfony/http-kernel/DataCollector/RequestDataCollector.php', - 'Symfony\\Component\\HttpKernel\\DataCollector\\RouterDataCollector' => __DIR__ . '/..' . '/symfony/http-kernel/DataCollector/RouterDataCollector.php', - 'Symfony\\Component\\HttpKernel\\DataCollector\\TimeDataCollector' => __DIR__ . '/..' . '/symfony/http-kernel/DataCollector/TimeDataCollector.php', - 'Symfony\\Component\\HttpKernel\\Debug\\ErrorHandlerConfigurator' => __DIR__ . '/..' . '/symfony/http-kernel/Debug/ErrorHandlerConfigurator.php', - 'Symfony\\Component\\HttpKernel\\Debug\\FileLinkFormatter' => __DIR__ . '/..' . '/symfony/http-kernel/Debug/FileLinkFormatter.php', - 'Symfony\\Component\\HttpKernel\\Debug\\TraceableEventDispatcher' => __DIR__ . '/..' . '/symfony/http-kernel/Debug/TraceableEventDispatcher.php', - 'Symfony\\Component\\HttpKernel\\Debug\\VirtualRequestStack' => __DIR__ . '/..' . '/symfony/http-kernel/Debug/VirtualRequestStack.php', - 'Symfony\\Component\\HttpKernel\\DependencyInjection\\AddAnnotatedClassesToCachePass' => __DIR__ . '/..' . '/symfony/http-kernel/DependencyInjection/AddAnnotatedClassesToCachePass.php', - 'Symfony\\Component\\HttpKernel\\DependencyInjection\\ConfigurableExtension' => __DIR__ . '/..' . '/symfony/http-kernel/DependencyInjection/ConfigurableExtension.php', - 'Symfony\\Component\\HttpKernel\\DependencyInjection\\ControllerArgumentValueResolverPass' => __DIR__ . '/..' . '/symfony/http-kernel/DependencyInjection/ControllerArgumentValueResolverPass.php', - 'Symfony\\Component\\HttpKernel\\DependencyInjection\\Extension' => __DIR__ . '/..' . '/symfony/http-kernel/DependencyInjection/Extension.php', - 'Symfony\\Component\\HttpKernel\\DependencyInjection\\FragmentRendererPass' => __DIR__ . '/..' . '/symfony/http-kernel/DependencyInjection/FragmentRendererPass.php', - 'Symfony\\Component\\HttpKernel\\DependencyInjection\\LazyLoadingFragmentHandler' => __DIR__ . '/..' . '/symfony/http-kernel/DependencyInjection/LazyLoadingFragmentHandler.php', - 'Symfony\\Component\\HttpKernel\\DependencyInjection\\LoggerPass' => __DIR__ . '/..' . '/symfony/http-kernel/DependencyInjection/LoggerPass.php', - 'Symfony\\Component\\HttpKernel\\DependencyInjection\\MergeExtensionConfigurationPass' => __DIR__ . '/..' . '/symfony/http-kernel/DependencyInjection/MergeExtensionConfigurationPass.php', - 'Symfony\\Component\\HttpKernel\\DependencyInjection\\RegisterControllerArgumentLocatorsPass' => __DIR__ . '/..' . '/symfony/http-kernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php', - 'Symfony\\Component\\HttpKernel\\DependencyInjection\\RegisterLocaleAwareServicesPass' => __DIR__ . '/..' . '/symfony/http-kernel/DependencyInjection/RegisterLocaleAwareServicesPass.php', - 'Symfony\\Component\\HttpKernel\\DependencyInjection\\RemoveEmptyControllerArgumentLocatorsPass' => __DIR__ . '/..' . '/symfony/http-kernel/DependencyInjection/RemoveEmptyControllerArgumentLocatorsPass.php', - 'Symfony\\Component\\HttpKernel\\DependencyInjection\\ResettableServicePass' => __DIR__ . '/..' . '/symfony/http-kernel/DependencyInjection/ResettableServicePass.php', - 'Symfony\\Component\\HttpKernel\\DependencyInjection\\ServicesResetter' => __DIR__ . '/..' . '/symfony/http-kernel/DependencyInjection/ServicesResetter.php', - 'Symfony\\Component\\HttpKernel\\EventListener\\AbstractSessionListener' => __DIR__ . '/..' . '/symfony/http-kernel/EventListener/AbstractSessionListener.php', - 'Symfony\\Component\\HttpKernel\\EventListener\\AddRequestFormatsListener' => __DIR__ . '/..' . '/symfony/http-kernel/EventListener/AddRequestFormatsListener.php', - 'Symfony\\Component\\HttpKernel\\EventListener\\CacheAttributeListener' => __DIR__ . '/..' . '/symfony/http-kernel/EventListener/CacheAttributeListener.php', - 'Symfony\\Component\\HttpKernel\\EventListener\\DebugHandlersListener' => __DIR__ . '/..' . '/symfony/http-kernel/EventListener/DebugHandlersListener.php', - 'Symfony\\Component\\HttpKernel\\EventListener\\DisallowRobotsIndexingListener' => __DIR__ . '/..' . '/symfony/http-kernel/EventListener/DisallowRobotsIndexingListener.php', - 'Symfony\\Component\\HttpKernel\\EventListener\\DumpListener' => __DIR__ . '/..' . '/symfony/http-kernel/EventListener/DumpListener.php', - 'Symfony\\Component\\HttpKernel\\EventListener\\ErrorListener' => __DIR__ . '/..' . '/symfony/http-kernel/EventListener/ErrorListener.php', - 'Symfony\\Component\\HttpKernel\\EventListener\\FragmentListener' => __DIR__ . '/..' . '/symfony/http-kernel/EventListener/FragmentListener.php', - 'Symfony\\Component\\HttpKernel\\EventListener\\LocaleAwareListener' => __DIR__ . '/..' . '/symfony/http-kernel/EventListener/LocaleAwareListener.php', - 'Symfony\\Component\\HttpKernel\\EventListener\\LocaleListener' => __DIR__ . '/..' . '/symfony/http-kernel/EventListener/LocaleListener.php', - 'Symfony\\Component\\HttpKernel\\EventListener\\ProfilerListener' => __DIR__ . '/..' . '/symfony/http-kernel/EventListener/ProfilerListener.php', - 'Symfony\\Component\\HttpKernel\\EventListener\\ResponseListener' => __DIR__ . '/..' . '/symfony/http-kernel/EventListener/ResponseListener.php', - 'Symfony\\Component\\HttpKernel\\EventListener\\RouterListener' => __DIR__ . '/..' . '/symfony/http-kernel/EventListener/RouterListener.php', - 'Symfony\\Component\\HttpKernel\\EventListener\\SessionListener' => __DIR__ . '/..' . '/symfony/http-kernel/EventListener/SessionListener.php', - 'Symfony\\Component\\HttpKernel\\EventListener\\StreamedResponseListener' => __DIR__ . '/..' . '/symfony/http-kernel/EventListener/StreamedResponseListener.php', - 'Symfony\\Component\\HttpKernel\\EventListener\\SurrogateListener' => __DIR__ . '/..' . '/symfony/http-kernel/EventListener/SurrogateListener.php', - 'Symfony\\Component\\HttpKernel\\EventListener\\ValidateRequestListener' => __DIR__ . '/..' . '/symfony/http-kernel/EventListener/ValidateRequestListener.php', - 'Symfony\\Component\\HttpKernel\\Event\\ControllerArgumentsEvent' => __DIR__ . '/..' . '/symfony/http-kernel/Event/ControllerArgumentsEvent.php', - 'Symfony\\Component\\HttpKernel\\Event\\ControllerEvent' => __DIR__ . '/..' . '/symfony/http-kernel/Event/ControllerEvent.php', - 'Symfony\\Component\\HttpKernel\\Event\\ExceptionEvent' => __DIR__ . '/..' . '/symfony/http-kernel/Event/ExceptionEvent.php', - 'Symfony\\Component\\HttpKernel\\Event\\FinishRequestEvent' => __DIR__ . '/..' . '/symfony/http-kernel/Event/FinishRequestEvent.php', - 'Symfony\\Component\\HttpKernel\\Event\\KernelEvent' => __DIR__ . '/..' . '/symfony/http-kernel/Event/KernelEvent.php', - 'Symfony\\Component\\HttpKernel\\Event\\RequestEvent' => __DIR__ . '/..' . '/symfony/http-kernel/Event/RequestEvent.php', - 'Symfony\\Component\\HttpKernel\\Event\\ResponseEvent' => __DIR__ . '/..' . '/symfony/http-kernel/Event/ResponseEvent.php', - 'Symfony\\Component\\HttpKernel\\Event\\TerminateEvent' => __DIR__ . '/..' . '/symfony/http-kernel/Event/TerminateEvent.php', - 'Symfony\\Component\\HttpKernel\\Event\\ViewEvent' => __DIR__ . '/..' . '/symfony/http-kernel/Event/ViewEvent.php', - 'Symfony\\Component\\HttpKernel\\Exception\\AccessDeniedHttpException' => __DIR__ . '/..' . '/symfony/http-kernel/Exception/AccessDeniedHttpException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\BadRequestHttpException' => __DIR__ . '/..' . '/symfony/http-kernel/Exception/BadRequestHttpException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\ConflictHttpException' => __DIR__ . '/..' . '/symfony/http-kernel/Exception/ConflictHttpException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\ControllerDoesNotReturnResponseException' => __DIR__ . '/..' . '/symfony/http-kernel/Exception/ControllerDoesNotReturnResponseException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\GoneHttpException' => __DIR__ . '/..' . '/symfony/http-kernel/Exception/GoneHttpException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\HttpException' => __DIR__ . '/..' . '/symfony/http-kernel/Exception/HttpException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\HttpExceptionInterface' => __DIR__ . '/..' . '/symfony/http-kernel/Exception/HttpExceptionInterface.php', - 'Symfony\\Component\\HttpKernel\\Exception\\InvalidMetadataException' => __DIR__ . '/..' . '/symfony/http-kernel/Exception/InvalidMetadataException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\LengthRequiredHttpException' => __DIR__ . '/..' . '/symfony/http-kernel/Exception/LengthRequiredHttpException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\LockedHttpException' => __DIR__ . '/..' . '/symfony/http-kernel/Exception/LockedHttpException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\MethodNotAllowedHttpException' => __DIR__ . '/..' . '/symfony/http-kernel/Exception/MethodNotAllowedHttpException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\NotAcceptableHttpException' => __DIR__ . '/..' . '/symfony/http-kernel/Exception/NotAcceptableHttpException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException' => __DIR__ . '/..' . '/symfony/http-kernel/Exception/NotFoundHttpException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\PreconditionFailedHttpException' => __DIR__ . '/..' . '/symfony/http-kernel/Exception/PreconditionFailedHttpException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\PreconditionRequiredHttpException' => __DIR__ . '/..' . '/symfony/http-kernel/Exception/PreconditionRequiredHttpException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\ResolverNotFoundException' => __DIR__ . '/..' . '/symfony/http-kernel/Exception/ResolverNotFoundException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\ServiceUnavailableHttpException' => __DIR__ . '/..' . '/symfony/http-kernel/Exception/ServiceUnavailableHttpException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\TooManyRequestsHttpException' => __DIR__ . '/..' . '/symfony/http-kernel/Exception/TooManyRequestsHttpException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\UnauthorizedHttpException' => __DIR__ . '/..' . '/symfony/http-kernel/Exception/UnauthorizedHttpException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\UnexpectedSessionUsageException' => __DIR__ . '/..' . '/symfony/http-kernel/Exception/UnexpectedSessionUsageException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\UnprocessableEntityHttpException' => __DIR__ . '/..' . '/symfony/http-kernel/Exception/UnprocessableEntityHttpException.php', - 'Symfony\\Component\\HttpKernel\\Exception\\UnsupportedMediaTypeHttpException' => __DIR__ . '/..' . '/symfony/http-kernel/Exception/UnsupportedMediaTypeHttpException.php', - 'Symfony\\Component\\HttpKernel\\Fragment\\AbstractSurrogateFragmentRenderer' => __DIR__ . '/..' . '/symfony/http-kernel/Fragment/AbstractSurrogateFragmentRenderer.php', - 'Symfony\\Component\\HttpKernel\\Fragment\\EsiFragmentRenderer' => __DIR__ . '/..' . '/symfony/http-kernel/Fragment/EsiFragmentRenderer.php', - 'Symfony\\Component\\HttpKernel\\Fragment\\FragmentHandler' => __DIR__ . '/..' . '/symfony/http-kernel/Fragment/FragmentHandler.php', - 'Symfony\\Component\\HttpKernel\\Fragment\\FragmentRendererInterface' => __DIR__ . '/..' . '/symfony/http-kernel/Fragment/FragmentRendererInterface.php', - 'Symfony\\Component\\HttpKernel\\Fragment\\FragmentUriGenerator' => __DIR__ . '/..' . '/symfony/http-kernel/Fragment/FragmentUriGenerator.php', - 'Symfony\\Component\\HttpKernel\\Fragment\\FragmentUriGeneratorInterface' => __DIR__ . '/..' . '/symfony/http-kernel/Fragment/FragmentUriGeneratorInterface.php', - 'Symfony\\Component\\HttpKernel\\Fragment\\HIncludeFragmentRenderer' => __DIR__ . '/..' . '/symfony/http-kernel/Fragment/HIncludeFragmentRenderer.php', - 'Symfony\\Component\\HttpKernel\\Fragment\\InlineFragmentRenderer' => __DIR__ . '/..' . '/symfony/http-kernel/Fragment/InlineFragmentRenderer.php', - 'Symfony\\Component\\HttpKernel\\Fragment\\RoutableFragmentRenderer' => __DIR__ . '/..' . '/symfony/http-kernel/Fragment/RoutableFragmentRenderer.php', - 'Symfony\\Component\\HttpKernel\\Fragment\\SsiFragmentRenderer' => __DIR__ . '/..' . '/symfony/http-kernel/Fragment/SsiFragmentRenderer.php', - 'Symfony\\Component\\HttpKernel\\HttpCache\\AbstractSurrogate' => __DIR__ . '/..' . '/symfony/http-kernel/HttpCache/AbstractSurrogate.php', - 'Symfony\\Component\\HttpKernel\\HttpCache\\Esi' => __DIR__ . '/..' . '/symfony/http-kernel/HttpCache/Esi.php', - 'Symfony\\Component\\HttpKernel\\HttpCache\\HttpCache' => __DIR__ . '/..' . '/symfony/http-kernel/HttpCache/HttpCache.php', - 'Symfony\\Component\\HttpKernel\\HttpCache\\ResponseCacheStrategy' => __DIR__ . '/..' . '/symfony/http-kernel/HttpCache/ResponseCacheStrategy.php', - 'Symfony\\Component\\HttpKernel\\HttpCache\\ResponseCacheStrategyInterface' => __DIR__ . '/..' . '/symfony/http-kernel/HttpCache/ResponseCacheStrategyInterface.php', - 'Symfony\\Component\\HttpKernel\\HttpCache\\Ssi' => __DIR__ . '/..' . '/symfony/http-kernel/HttpCache/Ssi.php', - 'Symfony\\Component\\HttpKernel\\HttpCache\\Store' => __DIR__ . '/..' . '/symfony/http-kernel/HttpCache/Store.php', - 'Symfony\\Component\\HttpKernel\\HttpCache\\StoreInterface' => __DIR__ . '/..' . '/symfony/http-kernel/HttpCache/StoreInterface.php', - 'Symfony\\Component\\HttpKernel\\HttpCache\\SubRequestHandler' => __DIR__ . '/..' . '/symfony/http-kernel/HttpCache/SubRequestHandler.php', - 'Symfony\\Component\\HttpKernel\\HttpCache\\SurrogateInterface' => __DIR__ . '/..' . '/symfony/http-kernel/HttpCache/SurrogateInterface.php', - 'Symfony\\Component\\HttpKernel\\HttpClientKernel' => __DIR__ . '/..' . '/symfony/http-kernel/HttpClientKernel.php', - 'Symfony\\Component\\HttpKernel\\HttpKernel' => __DIR__ . '/..' . '/symfony/http-kernel/HttpKernel.php', - 'Symfony\\Component\\HttpKernel\\HttpKernelBrowser' => __DIR__ . '/..' . '/symfony/http-kernel/HttpKernelBrowser.php', - 'Symfony\\Component\\HttpKernel\\HttpKernelInterface' => __DIR__ . '/..' . '/symfony/http-kernel/HttpKernelInterface.php', - 'Symfony\\Component\\HttpKernel\\Kernel' => __DIR__ . '/..' . '/symfony/http-kernel/Kernel.php', - 'Symfony\\Component\\HttpKernel\\KernelEvents' => __DIR__ . '/..' . '/symfony/http-kernel/KernelEvents.php', - 'Symfony\\Component\\HttpKernel\\KernelInterface' => __DIR__ . '/..' . '/symfony/http-kernel/KernelInterface.php', - 'Symfony\\Component\\HttpKernel\\Log\\DebugLoggerConfigurator' => __DIR__ . '/..' . '/symfony/http-kernel/Log/DebugLoggerConfigurator.php', - 'Symfony\\Component\\HttpKernel\\Log\\DebugLoggerInterface' => __DIR__ . '/..' . '/symfony/http-kernel/Log/DebugLoggerInterface.php', - 'Symfony\\Component\\HttpKernel\\Log\\Logger' => __DIR__ . '/..' . '/symfony/http-kernel/Log/Logger.php', - 'Symfony\\Component\\HttpKernel\\Profiler\\FileProfilerStorage' => __DIR__ . '/..' . '/symfony/http-kernel/Profiler/FileProfilerStorage.php', - 'Symfony\\Component\\HttpKernel\\Profiler\\Profile' => __DIR__ . '/..' . '/symfony/http-kernel/Profiler/Profile.php', - 'Symfony\\Component\\HttpKernel\\Profiler\\Profiler' => __DIR__ . '/..' . '/symfony/http-kernel/Profiler/Profiler.php', - 'Symfony\\Component\\HttpKernel\\Profiler\\ProfilerStorageInterface' => __DIR__ . '/..' . '/symfony/http-kernel/Profiler/ProfilerStorageInterface.php', - 'Symfony\\Component\\HttpKernel\\RebootableInterface' => __DIR__ . '/..' . '/symfony/http-kernel/RebootableInterface.php', - 'Symfony\\Component\\HttpKernel\\TerminableInterface' => __DIR__ . '/..' . '/symfony/http-kernel/TerminableInterface.php', - 'Symfony\\Component\\HttpKernel\\UriSigner' => __DIR__ . '/..' . '/symfony/http-kernel/UriSigner.php', - 'Symfony\\Component\\Mailer\\Command\\MailerTestCommand' => __DIR__ . '/..' . '/symfony/mailer/Command/MailerTestCommand.php', - 'Symfony\\Component\\Mailer\\DataCollector\\MessageDataCollector' => __DIR__ . '/..' . '/symfony/mailer/DataCollector/MessageDataCollector.php', - 'Symfony\\Component\\Mailer\\DelayedEnvelope' => __DIR__ . '/..' . '/symfony/mailer/DelayedEnvelope.php', - 'Symfony\\Component\\Mailer\\Envelope' => __DIR__ . '/..' . '/symfony/mailer/Envelope.php', - 'Symfony\\Component\\Mailer\\EventListener\\EnvelopeListener' => __DIR__ . '/..' . '/symfony/mailer/EventListener/EnvelopeListener.php', - 'Symfony\\Component\\Mailer\\EventListener\\MessageListener' => __DIR__ . '/..' . '/symfony/mailer/EventListener/MessageListener.php', - 'Symfony\\Component\\Mailer\\EventListener\\MessageLoggerListener' => __DIR__ . '/..' . '/symfony/mailer/EventListener/MessageLoggerListener.php', - 'Symfony\\Component\\Mailer\\EventListener\\MessengerTransportListener' => __DIR__ . '/..' . '/symfony/mailer/EventListener/MessengerTransportListener.php', - 'Symfony\\Component\\Mailer\\Event\\FailedMessageEvent' => __DIR__ . '/..' . '/symfony/mailer/Event/FailedMessageEvent.php', - 'Symfony\\Component\\Mailer\\Event\\MessageEvent' => __DIR__ . '/..' . '/symfony/mailer/Event/MessageEvent.php', - 'Symfony\\Component\\Mailer\\Event\\MessageEvents' => __DIR__ . '/..' . '/symfony/mailer/Event/MessageEvents.php', - 'Symfony\\Component\\Mailer\\Event\\SentMessageEvent' => __DIR__ . '/..' . '/symfony/mailer/Event/SentMessageEvent.php', - 'Symfony\\Component\\Mailer\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/mailer/Exception/ExceptionInterface.php', - 'Symfony\\Component\\Mailer\\Exception\\HttpTransportException' => __DIR__ . '/..' . '/symfony/mailer/Exception/HttpTransportException.php', - 'Symfony\\Component\\Mailer\\Exception\\IncompleteDsnException' => __DIR__ . '/..' . '/symfony/mailer/Exception/IncompleteDsnException.php', - 'Symfony\\Component\\Mailer\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/mailer/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\Mailer\\Exception\\LogicException' => __DIR__ . '/..' . '/symfony/mailer/Exception/LogicException.php', - 'Symfony\\Component\\Mailer\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/mailer/Exception/RuntimeException.php', - 'Symfony\\Component\\Mailer\\Exception\\TransportException' => __DIR__ . '/..' . '/symfony/mailer/Exception/TransportException.php', - 'Symfony\\Component\\Mailer\\Exception\\TransportExceptionInterface' => __DIR__ . '/..' . '/symfony/mailer/Exception/TransportExceptionInterface.php', - 'Symfony\\Component\\Mailer\\Exception\\UnexpectedResponseException' => __DIR__ . '/..' . '/symfony/mailer/Exception/UnexpectedResponseException.php', - 'Symfony\\Component\\Mailer\\Exception\\UnsupportedSchemeException' => __DIR__ . '/..' . '/symfony/mailer/Exception/UnsupportedSchemeException.php', - 'Symfony\\Component\\Mailer\\Header\\MetadataHeader' => __DIR__ . '/..' . '/symfony/mailer/Header/MetadataHeader.php', - 'Symfony\\Component\\Mailer\\Header\\TagHeader' => __DIR__ . '/..' . '/symfony/mailer/Header/TagHeader.php', - 'Symfony\\Component\\Mailer\\Mailer' => __DIR__ . '/..' . '/symfony/mailer/Mailer.php', - 'Symfony\\Component\\Mailer\\MailerInterface' => __DIR__ . '/..' . '/symfony/mailer/MailerInterface.php', - 'Symfony\\Component\\Mailer\\Messenger\\MessageHandler' => __DIR__ . '/..' . '/symfony/mailer/Messenger/MessageHandler.php', - 'Symfony\\Component\\Mailer\\Messenger\\SendEmailMessage' => __DIR__ . '/..' . '/symfony/mailer/Messenger/SendEmailMessage.php', - 'Symfony\\Component\\Mailer\\SentMessage' => __DIR__ . '/..' . '/symfony/mailer/SentMessage.php', - 'Symfony\\Component\\Mailer\\Test\\Constraint\\EmailCount' => __DIR__ . '/..' . '/symfony/mailer/Test/Constraint/EmailCount.php', - 'Symfony\\Component\\Mailer\\Test\\Constraint\\EmailIsQueued' => __DIR__ . '/..' . '/symfony/mailer/Test/Constraint/EmailIsQueued.php', - 'Symfony\\Component\\Mailer\\Test\\TransportFactoryTestCase' => __DIR__ . '/..' . '/symfony/mailer/Test/TransportFactoryTestCase.php', - 'Symfony\\Component\\Mailer\\Transport' => __DIR__ . '/..' . '/symfony/mailer/Transport.php', - 'Symfony\\Component\\Mailer\\Transport\\AbstractApiTransport' => __DIR__ . '/..' . '/symfony/mailer/Transport/AbstractApiTransport.php', - 'Symfony\\Component\\Mailer\\Transport\\AbstractHttpTransport' => __DIR__ . '/..' . '/symfony/mailer/Transport/AbstractHttpTransport.php', - 'Symfony\\Component\\Mailer\\Transport\\AbstractTransport' => __DIR__ . '/..' . '/symfony/mailer/Transport/AbstractTransport.php', - 'Symfony\\Component\\Mailer\\Transport\\AbstractTransportFactory' => __DIR__ . '/..' . '/symfony/mailer/Transport/AbstractTransportFactory.php', - 'Symfony\\Component\\Mailer\\Transport\\Dsn' => __DIR__ . '/..' . '/symfony/mailer/Transport/Dsn.php', - 'Symfony\\Component\\Mailer\\Transport\\FailoverTransport' => __DIR__ . '/..' . '/symfony/mailer/Transport/FailoverTransport.php', - 'Symfony\\Component\\Mailer\\Transport\\NativeTransportFactory' => __DIR__ . '/..' . '/symfony/mailer/Transport/NativeTransportFactory.php', - 'Symfony\\Component\\Mailer\\Transport\\NullTransport' => __DIR__ . '/..' . '/symfony/mailer/Transport/NullTransport.php', - 'Symfony\\Component\\Mailer\\Transport\\NullTransportFactory' => __DIR__ . '/..' . '/symfony/mailer/Transport/NullTransportFactory.php', - 'Symfony\\Component\\Mailer\\Transport\\RoundRobinTransport' => __DIR__ . '/..' . '/symfony/mailer/Transport/RoundRobinTransport.php', - 'Symfony\\Component\\Mailer\\Transport\\SendmailTransport' => __DIR__ . '/..' . '/symfony/mailer/Transport/SendmailTransport.php', - 'Symfony\\Component\\Mailer\\Transport\\SendmailTransportFactory' => __DIR__ . '/..' . '/symfony/mailer/Transport/SendmailTransportFactory.php', - 'Symfony\\Component\\Mailer\\Transport\\Smtp\\Auth\\AuthenticatorInterface' => __DIR__ . '/..' . '/symfony/mailer/Transport/Smtp/Auth/AuthenticatorInterface.php', - 'Symfony\\Component\\Mailer\\Transport\\Smtp\\Auth\\CramMd5Authenticator' => __DIR__ . '/..' . '/symfony/mailer/Transport/Smtp/Auth/CramMd5Authenticator.php', - 'Symfony\\Component\\Mailer\\Transport\\Smtp\\Auth\\LoginAuthenticator' => __DIR__ . '/..' . '/symfony/mailer/Transport/Smtp/Auth/LoginAuthenticator.php', - 'Symfony\\Component\\Mailer\\Transport\\Smtp\\Auth\\PlainAuthenticator' => __DIR__ . '/..' . '/symfony/mailer/Transport/Smtp/Auth/PlainAuthenticator.php', - 'Symfony\\Component\\Mailer\\Transport\\Smtp\\Auth\\XOAuth2Authenticator' => __DIR__ . '/..' . '/symfony/mailer/Transport/Smtp/Auth/XOAuth2Authenticator.php', - 'Symfony\\Component\\Mailer\\Transport\\Smtp\\EsmtpTransport' => __DIR__ . '/..' . '/symfony/mailer/Transport/Smtp/EsmtpTransport.php', - 'Symfony\\Component\\Mailer\\Transport\\Smtp\\EsmtpTransportFactory' => __DIR__ . '/..' . '/symfony/mailer/Transport/Smtp/EsmtpTransportFactory.php', - 'Symfony\\Component\\Mailer\\Transport\\Smtp\\SmtpTransport' => __DIR__ . '/..' . '/symfony/mailer/Transport/Smtp/SmtpTransport.php', - 'Symfony\\Component\\Mailer\\Transport\\Smtp\\Stream\\AbstractStream' => __DIR__ . '/..' . '/symfony/mailer/Transport/Smtp/Stream/AbstractStream.php', - 'Symfony\\Component\\Mailer\\Transport\\Smtp\\Stream\\ProcessStream' => __DIR__ . '/..' . '/symfony/mailer/Transport/Smtp/Stream/ProcessStream.php', - 'Symfony\\Component\\Mailer\\Transport\\Smtp\\Stream\\SocketStream' => __DIR__ . '/..' . '/symfony/mailer/Transport/Smtp/Stream/SocketStream.php', - 'Symfony\\Component\\Mailer\\Transport\\TransportFactoryInterface' => __DIR__ . '/..' . '/symfony/mailer/Transport/TransportFactoryInterface.php', - 'Symfony\\Component\\Mailer\\Transport\\TransportInterface' => __DIR__ . '/..' . '/symfony/mailer/Transport/TransportInterface.php', - 'Symfony\\Component\\Mailer\\Transport\\Transports' => __DIR__ . '/..' . '/symfony/mailer/Transport/Transports.php', - 'Symfony\\Component\\Mime\\Address' => __DIR__ . '/..' . '/symfony/mime/Address.php', - 'Symfony\\Component\\Mime\\BodyRendererInterface' => __DIR__ . '/..' . '/symfony/mime/BodyRendererInterface.php', - 'Symfony\\Component\\Mime\\CharacterStream' => __DIR__ . '/..' . '/symfony/mime/CharacterStream.php', - 'Symfony\\Component\\Mime\\Crypto\\DkimOptions' => __DIR__ . '/..' . '/symfony/mime/Crypto/DkimOptions.php', - 'Symfony\\Component\\Mime\\Crypto\\DkimSigner' => __DIR__ . '/..' . '/symfony/mime/Crypto/DkimSigner.php', - 'Symfony\\Component\\Mime\\Crypto\\SMime' => __DIR__ . '/..' . '/symfony/mime/Crypto/SMime.php', - 'Symfony\\Component\\Mime\\Crypto\\SMimeEncrypter' => __DIR__ . '/..' . '/symfony/mime/Crypto/SMimeEncrypter.php', - 'Symfony\\Component\\Mime\\Crypto\\SMimeSigner' => __DIR__ . '/..' . '/symfony/mime/Crypto/SMimeSigner.php', - 'Symfony\\Component\\Mime\\DependencyInjection\\AddMimeTypeGuesserPass' => __DIR__ . '/..' . '/symfony/mime/DependencyInjection/AddMimeTypeGuesserPass.php', - 'Symfony\\Component\\Mime\\DraftEmail' => __DIR__ . '/..' . '/symfony/mime/DraftEmail.php', - 'Symfony\\Component\\Mime\\Email' => __DIR__ . '/..' . '/symfony/mime/Email.php', - 'Symfony\\Component\\Mime\\Encoder\\AddressEncoderInterface' => __DIR__ . '/..' . '/symfony/mime/Encoder/AddressEncoderInterface.php', - 'Symfony\\Component\\Mime\\Encoder\\Base64ContentEncoder' => __DIR__ . '/..' . '/symfony/mime/Encoder/Base64ContentEncoder.php', - 'Symfony\\Component\\Mime\\Encoder\\Base64Encoder' => __DIR__ . '/..' . '/symfony/mime/Encoder/Base64Encoder.php', - 'Symfony\\Component\\Mime\\Encoder\\Base64MimeHeaderEncoder' => __DIR__ . '/..' . '/symfony/mime/Encoder/Base64MimeHeaderEncoder.php', - 'Symfony\\Component\\Mime\\Encoder\\ContentEncoderInterface' => __DIR__ . '/..' . '/symfony/mime/Encoder/ContentEncoderInterface.php', - 'Symfony\\Component\\Mime\\Encoder\\EightBitContentEncoder' => __DIR__ . '/..' . '/symfony/mime/Encoder/EightBitContentEncoder.php', - 'Symfony\\Component\\Mime\\Encoder\\EncoderInterface' => __DIR__ . '/..' . '/symfony/mime/Encoder/EncoderInterface.php', - 'Symfony\\Component\\Mime\\Encoder\\IdnAddressEncoder' => __DIR__ . '/..' . '/symfony/mime/Encoder/IdnAddressEncoder.php', - 'Symfony\\Component\\Mime\\Encoder\\MimeHeaderEncoderInterface' => __DIR__ . '/..' . '/symfony/mime/Encoder/MimeHeaderEncoderInterface.php', - 'Symfony\\Component\\Mime\\Encoder\\QpContentEncoder' => __DIR__ . '/..' . '/symfony/mime/Encoder/QpContentEncoder.php', - 'Symfony\\Component\\Mime\\Encoder\\QpEncoder' => __DIR__ . '/..' . '/symfony/mime/Encoder/QpEncoder.php', - 'Symfony\\Component\\Mime\\Encoder\\QpMimeHeaderEncoder' => __DIR__ . '/..' . '/symfony/mime/Encoder/QpMimeHeaderEncoder.php', - 'Symfony\\Component\\Mime\\Encoder\\Rfc2231Encoder' => __DIR__ . '/..' . '/symfony/mime/Encoder/Rfc2231Encoder.php', - 'Symfony\\Component\\Mime\\Exception\\AddressEncoderException' => __DIR__ . '/..' . '/symfony/mime/Exception/AddressEncoderException.php', - 'Symfony\\Component\\Mime\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/mime/Exception/ExceptionInterface.php', - 'Symfony\\Component\\Mime\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/mime/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\Mime\\Exception\\LogicException' => __DIR__ . '/..' . '/symfony/mime/Exception/LogicException.php', - 'Symfony\\Component\\Mime\\Exception\\RfcComplianceException' => __DIR__ . '/..' . '/symfony/mime/Exception/RfcComplianceException.php', - 'Symfony\\Component\\Mime\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/mime/Exception/RuntimeException.php', - 'Symfony\\Component\\Mime\\FileBinaryMimeTypeGuesser' => __DIR__ . '/..' . '/symfony/mime/FileBinaryMimeTypeGuesser.php', - 'Symfony\\Component\\Mime\\FileinfoMimeTypeGuesser' => __DIR__ . '/..' . '/symfony/mime/FileinfoMimeTypeGuesser.php', - 'Symfony\\Component\\Mime\\Header\\AbstractHeader' => __DIR__ . '/..' . '/symfony/mime/Header/AbstractHeader.php', - 'Symfony\\Component\\Mime\\Header\\DateHeader' => __DIR__ . '/..' . '/symfony/mime/Header/DateHeader.php', - 'Symfony\\Component\\Mime\\Header\\HeaderInterface' => __DIR__ . '/..' . '/symfony/mime/Header/HeaderInterface.php', - 'Symfony\\Component\\Mime\\Header\\Headers' => __DIR__ . '/..' . '/symfony/mime/Header/Headers.php', - 'Symfony\\Component\\Mime\\Header\\IdentificationHeader' => __DIR__ . '/..' . '/symfony/mime/Header/IdentificationHeader.php', - 'Symfony\\Component\\Mime\\Header\\MailboxHeader' => __DIR__ . '/..' . '/symfony/mime/Header/MailboxHeader.php', - 'Symfony\\Component\\Mime\\Header\\MailboxListHeader' => __DIR__ . '/..' . '/symfony/mime/Header/MailboxListHeader.php', - 'Symfony\\Component\\Mime\\Header\\ParameterizedHeader' => __DIR__ . '/..' . '/symfony/mime/Header/ParameterizedHeader.php', - 'Symfony\\Component\\Mime\\Header\\PathHeader' => __DIR__ . '/..' . '/symfony/mime/Header/PathHeader.php', - 'Symfony\\Component\\Mime\\Header\\UnstructuredHeader' => __DIR__ . '/..' . '/symfony/mime/Header/UnstructuredHeader.php', - 'Symfony\\Component\\Mime\\HtmlToTextConverter\\DefaultHtmlToTextConverter' => __DIR__ . '/..' . '/symfony/mime/HtmlToTextConverter/DefaultHtmlToTextConverter.php', - 'Symfony\\Component\\Mime\\HtmlToTextConverter\\HtmlToTextConverterInterface' => __DIR__ . '/..' . '/symfony/mime/HtmlToTextConverter/HtmlToTextConverterInterface.php', - 'Symfony\\Component\\Mime\\HtmlToTextConverter\\LeagueHtmlToMarkdownConverter' => __DIR__ . '/..' . '/symfony/mime/HtmlToTextConverter/LeagueHtmlToMarkdownConverter.php', - 'Symfony\\Component\\Mime\\Message' => __DIR__ . '/..' . '/symfony/mime/Message.php', - 'Symfony\\Component\\Mime\\MessageConverter' => __DIR__ . '/..' . '/symfony/mime/MessageConverter.php', - 'Symfony\\Component\\Mime\\MimeTypeGuesserInterface' => __DIR__ . '/..' . '/symfony/mime/MimeTypeGuesserInterface.php', - 'Symfony\\Component\\Mime\\MimeTypes' => __DIR__ . '/..' . '/symfony/mime/MimeTypes.php', - 'Symfony\\Component\\Mime\\MimeTypesInterface' => __DIR__ . '/..' . '/symfony/mime/MimeTypesInterface.php', - 'Symfony\\Component\\Mime\\Part\\AbstractMultipartPart' => __DIR__ . '/..' . '/symfony/mime/Part/AbstractMultipartPart.php', - 'Symfony\\Component\\Mime\\Part\\AbstractPart' => __DIR__ . '/..' . '/symfony/mime/Part/AbstractPart.php', - 'Symfony\\Component\\Mime\\Part\\DataPart' => __DIR__ . '/..' . '/symfony/mime/Part/DataPart.php', - 'Symfony\\Component\\Mime\\Part\\File' => __DIR__ . '/..' . '/symfony/mime/Part/File.php', - 'Symfony\\Component\\Mime\\Part\\MessagePart' => __DIR__ . '/..' . '/symfony/mime/Part/MessagePart.php', - 'Symfony\\Component\\Mime\\Part\\Multipart\\AlternativePart' => __DIR__ . '/..' . '/symfony/mime/Part/Multipart/AlternativePart.php', - 'Symfony\\Component\\Mime\\Part\\Multipart\\DigestPart' => __DIR__ . '/..' . '/symfony/mime/Part/Multipart/DigestPart.php', - 'Symfony\\Component\\Mime\\Part\\Multipart\\FormDataPart' => __DIR__ . '/..' . '/symfony/mime/Part/Multipart/FormDataPart.php', - 'Symfony\\Component\\Mime\\Part\\Multipart\\MixedPart' => __DIR__ . '/..' . '/symfony/mime/Part/Multipart/MixedPart.php', - 'Symfony\\Component\\Mime\\Part\\Multipart\\RelatedPart' => __DIR__ . '/..' . '/symfony/mime/Part/Multipart/RelatedPart.php', - 'Symfony\\Component\\Mime\\Part\\SMimePart' => __DIR__ . '/..' . '/symfony/mime/Part/SMimePart.php', - 'Symfony\\Component\\Mime\\Part\\TextPart' => __DIR__ . '/..' . '/symfony/mime/Part/TextPart.php', - 'Symfony\\Component\\Mime\\RawMessage' => __DIR__ . '/..' . '/symfony/mime/RawMessage.php', - 'Symfony\\Component\\Mime\\Test\\Constraint\\EmailAddressContains' => __DIR__ . '/..' . '/symfony/mime/Test/Constraint/EmailAddressContains.php', - 'Symfony\\Component\\Mime\\Test\\Constraint\\EmailAttachmentCount' => __DIR__ . '/..' . '/symfony/mime/Test/Constraint/EmailAttachmentCount.php', - 'Symfony\\Component\\Mime\\Test\\Constraint\\EmailHasHeader' => __DIR__ . '/..' . '/symfony/mime/Test/Constraint/EmailHasHeader.php', - 'Symfony\\Component\\Mime\\Test\\Constraint\\EmailHeaderSame' => __DIR__ . '/..' . '/symfony/mime/Test/Constraint/EmailHeaderSame.php', - 'Symfony\\Component\\Mime\\Test\\Constraint\\EmailHtmlBodyContains' => __DIR__ . '/..' . '/symfony/mime/Test/Constraint/EmailHtmlBodyContains.php', - 'Symfony\\Component\\Mime\\Test\\Constraint\\EmailSubjectContains' => __DIR__ . '/..' . '/symfony/mime/Test/Constraint/EmailSubjectContains.php', - 'Symfony\\Component\\Mime\\Test\\Constraint\\EmailTextBodyContains' => __DIR__ . '/..' . '/symfony/mime/Test/Constraint/EmailTextBodyContains.php', - 'Symfony\\Component\\Process\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/process/Exception/ExceptionInterface.php', - 'Symfony\\Component\\Process\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/process/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\Process\\Exception\\LogicException' => __DIR__ . '/..' . '/symfony/process/Exception/LogicException.php', - 'Symfony\\Component\\Process\\Exception\\ProcessFailedException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessFailedException.php', - 'Symfony\\Component\\Process\\Exception\\ProcessSignaledException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessSignaledException.php', - 'Symfony\\Component\\Process\\Exception\\ProcessTimedOutException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessTimedOutException.php', - 'Symfony\\Component\\Process\\Exception\\RunProcessFailedException' => __DIR__ . '/..' . '/symfony/process/Exception/RunProcessFailedException.php', - 'Symfony\\Component\\Process\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/process/Exception/RuntimeException.php', - 'Symfony\\Component\\Process\\ExecutableFinder' => __DIR__ . '/..' . '/symfony/process/ExecutableFinder.php', - 'Symfony\\Component\\Process\\InputStream' => __DIR__ . '/..' . '/symfony/process/InputStream.php', - 'Symfony\\Component\\Process\\Messenger\\RunProcessContext' => __DIR__ . '/..' . '/symfony/process/Messenger/RunProcessContext.php', - 'Symfony\\Component\\Process\\Messenger\\RunProcessMessage' => __DIR__ . '/..' . '/symfony/process/Messenger/RunProcessMessage.php', - 'Symfony\\Component\\Process\\Messenger\\RunProcessMessageHandler' => __DIR__ . '/..' . '/symfony/process/Messenger/RunProcessMessageHandler.php', - 'Symfony\\Component\\Process\\PhpExecutableFinder' => __DIR__ . '/..' . '/symfony/process/PhpExecutableFinder.php', - 'Symfony\\Component\\Process\\PhpProcess' => __DIR__ . '/..' . '/symfony/process/PhpProcess.php', - 'Symfony\\Component\\Process\\PhpSubprocess' => __DIR__ . '/..' . '/symfony/process/PhpSubprocess.php', - 'Symfony\\Component\\Process\\Pipes\\AbstractPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/AbstractPipes.php', - 'Symfony\\Component\\Process\\Pipes\\PipesInterface' => __DIR__ . '/..' . '/symfony/process/Pipes/PipesInterface.php', - 'Symfony\\Component\\Process\\Pipes\\UnixPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/UnixPipes.php', - 'Symfony\\Component\\Process\\Pipes\\WindowsPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/WindowsPipes.php', - 'Symfony\\Component\\Process\\Process' => __DIR__ . '/..' . '/symfony/process/Process.php', - 'Symfony\\Component\\Process\\ProcessUtils' => __DIR__ . '/..' . '/symfony/process/ProcessUtils.php', - 'Symfony\\Component\\Routing\\Alias' => __DIR__ . '/..' . '/symfony/routing/Alias.php', - 'Symfony\\Component\\Routing\\Annotation\\Route' => __DIR__ . '/..' . '/symfony/routing/Annotation/Route.php', - 'Symfony\\Component\\Routing\\Attribute\\Route' => __DIR__ . '/..' . '/symfony/routing/Attribute/Route.php', - 'Symfony\\Component\\Routing\\CompiledRoute' => __DIR__ . '/..' . '/symfony/routing/CompiledRoute.php', - 'Symfony\\Component\\Routing\\DependencyInjection\\AddExpressionLanguageProvidersPass' => __DIR__ . '/..' . '/symfony/routing/DependencyInjection/AddExpressionLanguageProvidersPass.php', - 'Symfony\\Component\\Routing\\DependencyInjection\\RoutingResolverPass' => __DIR__ . '/..' . '/symfony/routing/DependencyInjection/RoutingResolverPass.php', - 'Symfony\\Component\\Routing\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/routing/Exception/ExceptionInterface.php', - 'Symfony\\Component\\Routing\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/routing/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\Routing\\Exception\\InvalidParameterException' => __DIR__ . '/..' . '/symfony/routing/Exception/InvalidParameterException.php', - 'Symfony\\Component\\Routing\\Exception\\MethodNotAllowedException' => __DIR__ . '/..' . '/symfony/routing/Exception/MethodNotAllowedException.php', - 'Symfony\\Component\\Routing\\Exception\\MissingMandatoryParametersException' => __DIR__ . '/..' . '/symfony/routing/Exception/MissingMandatoryParametersException.php', - 'Symfony\\Component\\Routing\\Exception\\NoConfigurationException' => __DIR__ . '/..' . '/symfony/routing/Exception/NoConfigurationException.php', - 'Symfony\\Component\\Routing\\Exception\\ResourceNotFoundException' => __DIR__ . '/..' . '/symfony/routing/Exception/ResourceNotFoundException.php', - 'Symfony\\Component\\Routing\\Exception\\RouteCircularReferenceException' => __DIR__ . '/..' . '/symfony/routing/Exception/RouteCircularReferenceException.php', - 'Symfony\\Component\\Routing\\Exception\\RouteNotFoundException' => __DIR__ . '/..' . '/symfony/routing/Exception/RouteNotFoundException.php', - 'Symfony\\Component\\Routing\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/routing/Exception/RuntimeException.php', - 'Symfony\\Component\\Routing\\Generator\\CompiledUrlGenerator' => __DIR__ . '/..' . '/symfony/routing/Generator/CompiledUrlGenerator.php', - 'Symfony\\Component\\Routing\\Generator\\ConfigurableRequirementsInterface' => __DIR__ . '/..' . '/symfony/routing/Generator/ConfigurableRequirementsInterface.php', - 'Symfony\\Component\\Routing\\Generator\\Dumper\\CompiledUrlGeneratorDumper' => __DIR__ . '/..' . '/symfony/routing/Generator/Dumper/CompiledUrlGeneratorDumper.php', - 'Symfony\\Component\\Routing\\Generator\\Dumper\\GeneratorDumper' => __DIR__ . '/..' . '/symfony/routing/Generator/Dumper/GeneratorDumper.php', - 'Symfony\\Component\\Routing\\Generator\\Dumper\\GeneratorDumperInterface' => __DIR__ . '/..' . '/symfony/routing/Generator/Dumper/GeneratorDumperInterface.php', - 'Symfony\\Component\\Routing\\Generator\\UrlGenerator' => __DIR__ . '/..' . '/symfony/routing/Generator/UrlGenerator.php', - 'Symfony\\Component\\Routing\\Generator\\UrlGeneratorInterface' => __DIR__ . '/..' . '/symfony/routing/Generator/UrlGeneratorInterface.php', - 'Symfony\\Component\\Routing\\Loader\\AnnotationClassLoader' => __DIR__ . '/..' . '/symfony/routing/Loader/AnnotationClassLoader.php', - 'Symfony\\Component\\Routing\\Loader\\AnnotationDirectoryLoader' => __DIR__ . '/..' . '/symfony/routing/Loader/AnnotationDirectoryLoader.php', - 'Symfony\\Component\\Routing\\Loader\\AnnotationFileLoader' => __DIR__ . '/..' . '/symfony/routing/Loader/AnnotationFileLoader.php', - 'Symfony\\Component\\Routing\\Loader\\AttributeClassLoader' => __DIR__ . '/..' . '/symfony/routing/Loader/AttributeClassLoader.php', - 'Symfony\\Component\\Routing\\Loader\\AttributeDirectoryLoader' => __DIR__ . '/..' . '/symfony/routing/Loader/AttributeDirectoryLoader.php', - 'Symfony\\Component\\Routing\\Loader\\AttributeFileLoader' => __DIR__ . '/..' . '/symfony/routing/Loader/AttributeFileLoader.php', - 'Symfony\\Component\\Routing\\Loader\\ClosureLoader' => __DIR__ . '/..' . '/symfony/routing/Loader/ClosureLoader.php', - 'Symfony\\Component\\Routing\\Loader\\Configurator\\AliasConfigurator' => __DIR__ . '/..' . '/symfony/routing/Loader/Configurator/AliasConfigurator.php', - 'Symfony\\Component\\Routing\\Loader\\Configurator\\CollectionConfigurator' => __DIR__ . '/..' . '/symfony/routing/Loader/Configurator/CollectionConfigurator.php', - 'Symfony\\Component\\Routing\\Loader\\Configurator\\ImportConfigurator' => __DIR__ . '/..' . '/symfony/routing/Loader/Configurator/ImportConfigurator.php', - 'Symfony\\Component\\Routing\\Loader\\Configurator\\RouteConfigurator' => __DIR__ . '/..' . '/symfony/routing/Loader/Configurator/RouteConfigurator.php', - 'Symfony\\Component\\Routing\\Loader\\Configurator\\RoutingConfigurator' => __DIR__ . '/..' . '/symfony/routing/Loader/Configurator/RoutingConfigurator.php', - 'Symfony\\Component\\Routing\\Loader\\Configurator\\Traits\\AddTrait' => __DIR__ . '/..' . '/symfony/routing/Loader/Configurator/Traits/AddTrait.php', - 'Symfony\\Component\\Routing\\Loader\\Configurator\\Traits\\HostTrait' => __DIR__ . '/..' . '/symfony/routing/Loader/Configurator/Traits/HostTrait.php', - 'Symfony\\Component\\Routing\\Loader\\Configurator\\Traits\\LocalizedRouteTrait' => __DIR__ . '/..' . '/symfony/routing/Loader/Configurator/Traits/LocalizedRouteTrait.php', - 'Symfony\\Component\\Routing\\Loader\\Configurator\\Traits\\PrefixTrait' => __DIR__ . '/..' . '/symfony/routing/Loader/Configurator/Traits/PrefixTrait.php', - 'Symfony\\Component\\Routing\\Loader\\Configurator\\Traits\\RouteTrait' => __DIR__ . '/..' . '/symfony/routing/Loader/Configurator/Traits/RouteTrait.php', - 'Symfony\\Component\\Routing\\Loader\\ContainerLoader' => __DIR__ . '/..' . '/symfony/routing/Loader/ContainerLoader.php', - 'Symfony\\Component\\Routing\\Loader\\DirectoryLoader' => __DIR__ . '/..' . '/symfony/routing/Loader/DirectoryLoader.php', - 'Symfony\\Component\\Routing\\Loader\\GlobFileLoader' => __DIR__ . '/..' . '/symfony/routing/Loader/GlobFileLoader.php', - 'Symfony\\Component\\Routing\\Loader\\ObjectLoader' => __DIR__ . '/..' . '/symfony/routing/Loader/ObjectLoader.php', - 'Symfony\\Component\\Routing\\Loader\\PhpFileLoader' => __DIR__ . '/..' . '/symfony/routing/Loader/PhpFileLoader.php', - 'Symfony\\Component\\Routing\\Loader\\Psr4DirectoryLoader' => __DIR__ . '/..' . '/symfony/routing/Loader/Psr4DirectoryLoader.php', - 'Symfony\\Component\\Routing\\Loader\\XmlFileLoader' => __DIR__ . '/..' . '/symfony/routing/Loader/XmlFileLoader.php', - 'Symfony\\Component\\Routing\\Loader\\YamlFileLoader' => __DIR__ . '/..' . '/symfony/routing/Loader/YamlFileLoader.php', - 'Symfony\\Component\\Routing\\Matcher\\CompiledUrlMatcher' => __DIR__ . '/..' . '/symfony/routing/Matcher/CompiledUrlMatcher.php', - 'Symfony\\Component\\Routing\\Matcher\\Dumper\\CompiledUrlMatcherDumper' => __DIR__ . '/..' . '/symfony/routing/Matcher/Dumper/CompiledUrlMatcherDumper.php', - 'Symfony\\Component\\Routing\\Matcher\\Dumper\\CompiledUrlMatcherTrait' => __DIR__ . '/..' . '/symfony/routing/Matcher/Dumper/CompiledUrlMatcherTrait.php', - 'Symfony\\Component\\Routing\\Matcher\\Dumper\\MatcherDumper' => __DIR__ . '/..' . '/symfony/routing/Matcher/Dumper/MatcherDumper.php', - 'Symfony\\Component\\Routing\\Matcher\\Dumper\\MatcherDumperInterface' => __DIR__ . '/..' . '/symfony/routing/Matcher/Dumper/MatcherDumperInterface.php', - 'Symfony\\Component\\Routing\\Matcher\\Dumper\\StaticPrefixCollection' => __DIR__ . '/..' . '/symfony/routing/Matcher/Dumper/StaticPrefixCollection.php', - 'Symfony\\Component\\Routing\\Matcher\\ExpressionLanguageProvider' => __DIR__ . '/..' . '/symfony/routing/Matcher/ExpressionLanguageProvider.php', - 'Symfony\\Component\\Routing\\Matcher\\RedirectableUrlMatcher' => __DIR__ . '/..' . '/symfony/routing/Matcher/RedirectableUrlMatcher.php', - 'Symfony\\Component\\Routing\\Matcher\\RedirectableUrlMatcherInterface' => __DIR__ . '/..' . '/symfony/routing/Matcher/RedirectableUrlMatcherInterface.php', - 'Symfony\\Component\\Routing\\Matcher\\RequestMatcherInterface' => __DIR__ . '/..' . '/symfony/routing/Matcher/RequestMatcherInterface.php', - 'Symfony\\Component\\Routing\\Matcher\\TraceableUrlMatcher' => __DIR__ . '/..' . '/symfony/routing/Matcher/TraceableUrlMatcher.php', - 'Symfony\\Component\\Routing\\Matcher\\UrlMatcher' => __DIR__ . '/..' . '/symfony/routing/Matcher/UrlMatcher.php', - 'Symfony\\Component\\Routing\\Matcher\\UrlMatcherInterface' => __DIR__ . '/..' . '/symfony/routing/Matcher/UrlMatcherInterface.php', - 'Symfony\\Component\\Routing\\RequestContext' => __DIR__ . '/..' . '/symfony/routing/RequestContext.php', - 'Symfony\\Component\\Routing\\RequestContextAwareInterface' => __DIR__ . '/..' . '/symfony/routing/RequestContextAwareInterface.php', - 'Symfony\\Component\\Routing\\Requirement\\EnumRequirement' => __DIR__ . '/..' . '/symfony/routing/Requirement/EnumRequirement.php', - 'Symfony\\Component\\Routing\\Requirement\\Requirement' => __DIR__ . '/..' . '/symfony/routing/Requirement/Requirement.php', - 'Symfony\\Component\\Routing\\Route' => __DIR__ . '/..' . '/symfony/routing/Route.php', - 'Symfony\\Component\\Routing\\RouteCollection' => __DIR__ . '/..' . '/symfony/routing/RouteCollection.php', - 'Symfony\\Component\\Routing\\RouteCompiler' => __DIR__ . '/..' . '/symfony/routing/RouteCompiler.php', - 'Symfony\\Component\\Routing\\RouteCompilerInterface' => __DIR__ . '/..' . '/symfony/routing/RouteCompilerInterface.php', - 'Symfony\\Component\\Routing\\Router' => __DIR__ . '/..' . '/symfony/routing/Router.php', - 'Symfony\\Component\\Routing\\RouterInterface' => __DIR__ . '/..' . '/symfony/routing/RouterInterface.php', - 'Symfony\\Component\\String\\AbstractString' => __DIR__ . '/..' . '/symfony/string/AbstractString.php', - 'Symfony\\Component\\String\\AbstractUnicodeString' => __DIR__ . '/..' . '/symfony/string/AbstractUnicodeString.php', - 'Symfony\\Component\\String\\ByteString' => __DIR__ . '/..' . '/symfony/string/ByteString.php', - 'Symfony\\Component\\String\\CodePointString' => __DIR__ . '/..' . '/symfony/string/CodePointString.php', - 'Symfony\\Component\\String\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/string/Exception/ExceptionInterface.php', - 'Symfony\\Component\\String\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/string/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\String\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/string/Exception/RuntimeException.php', - 'Symfony\\Component\\String\\Inflector\\EnglishInflector' => __DIR__ . '/..' . '/symfony/string/Inflector/EnglishInflector.php', - 'Symfony\\Component\\String\\Inflector\\FrenchInflector' => __DIR__ . '/..' . '/symfony/string/Inflector/FrenchInflector.php', - 'Symfony\\Component\\String\\Inflector\\InflectorInterface' => __DIR__ . '/..' . '/symfony/string/Inflector/InflectorInterface.php', - 'Symfony\\Component\\String\\Inflector\\SpanishInflector' => __DIR__ . '/..' . '/symfony/string/Inflector/SpanishInflector.php', - 'Symfony\\Component\\String\\LazyString' => __DIR__ . '/..' . '/symfony/string/LazyString.php', - 'Symfony\\Component\\String\\Slugger\\AsciiSlugger' => __DIR__ . '/..' . '/symfony/string/Slugger/AsciiSlugger.php', - 'Symfony\\Component\\String\\Slugger\\SluggerInterface' => __DIR__ . '/..' . '/symfony/string/Slugger/SluggerInterface.php', - 'Symfony\\Component\\String\\TruncateMode' => __DIR__ . '/..' . '/symfony/string/TruncateMode.php', - 'Symfony\\Component\\String\\UnicodeString' => __DIR__ . '/..' . '/symfony/string/UnicodeString.php', - 'Symfony\\Component\\Translation\\CatalogueMetadataAwareInterface' => __DIR__ . '/..' . '/symfony/translation/CatalogueMetadataAwareInterface.php', - 'Symfony\\Component\\Translation\\Catalogue\\AbstractOperation' => __DIR__ . '/..' . '/symfony/translation/Catalogue/AbstractOperation.php', - 'Symfony\\Component\\Translation\\Catalogue\\MergeOperation' => __DIR__ . '/..' . '/symfony/translation/Catalogue/MergeOperation.php', - 'Symfony\\Component\\Translation\\Catalogue\\OperationInterface' => __DIR__ . '/..' . '/symfony/translation/Catalogue/OperationInterface.php', - 'Symfony\\Component\\Translation\\Catalogue\\TargetOperation' => __DIR__ . '/..' . '/symfony/translation/Catalogue/TargetOperation.php', - 'Symfony\\Component\\Translation\\Command\\TranslationPullCommand' => __DIR__ . '/..' . '/symfony/translation/Command/TranslationPullCommand.php', - 'Symfony\\Component\\Translation\\Command\\TranslationPushCommand' => __DIR__ . '/..' . '/symfony/translation/Command/TranslationPushCommand.php', - 'Symfony\\Component\\Translation\\Command\\TranslationTrait' => __DIR__ . '/..' . '/symfony/translation/Command/TranslationTrait.php', - 'Symfony\\Component\\Translation\\Command\\XliffLintCommand' => __DIR__ . '/..' . '/symfony/translation/Command/XliffLintCommand.php', - 'Symfony\\Component\\Translation\\DataCollectorTranslator' => __DIR__ . '/..' . '/symfony/translation/DataCollectorTranslator.php', - 'Symfony\\Component\\Translation\\DataCollector\\TranslationDataCollector' => __DIR__ . '/..' . '/symfony/translation/DataCollector/TranslationDataCollector.php', - 'Symfony\\Component\\Translation\\DependencyInjection\\DataCollectorTranslatorPass' => __DIR__ . '/..' . '/symfony/translation/DependencyInjection/DataCollectorTranslatorPass.php', - 'Symfony\\Component\\Translation\\DependencyInjection\\LoggingTranslatorPass' => __DIR__ . '/..' . '/symfony/translation/DependencyInjection/LoggingTranslatorPass.php', - 'Symfony\\Component\\Translation\\DependencyInjection\\TranslationDumperPass' => __DIR__ . '/..' . '/symfony/translation/DependencyInjection/TranslationDumperPass.php', - 'Symfony\\Component\\Translation\\DependencyInjection\\TranslationExtractorPass' => __DIR__ . '/..' . '/symfony/translation/DependencyInjection/TranslationExtractorPass.php', - 'Symfony\\Component\\Translation\\DependencyInjection\\TranslatorPass' => __DIR__ . '/..' . '/symfony/translation/DependencyInjection/TranslatorPass.php', - 'Symfony\\Component\\Translation\\DependencyInjection\\TranslatorPathsPass' => __DIR__ . '/..' . '/symfony/translation/DependencyInjection/TranslatorPathsPass.php', - 'Symfony\\Component\\Translation\\Dumper\\CsvFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/CsvFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\DumperInterface' => __DIR__ . '/..' . '/symfony/translation/Dumper/DumperInterface.php', - 'Symfony\\Component\\Translation\\Dumper\\FileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/FileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\IcuResFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/IcuResFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\IniFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/IniFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\JsonFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/JsonFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\MoFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/MoFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\PhpFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/PhpFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\PoFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/PoFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\QtFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/QtFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\XliffFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/XliffFileDumper.php', - 'Symfony\\Component\\Translation\\Dumper\\YamlFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/YamlFileDumper.php', - 'Symfony\\Component\\Translation\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/translation/Exception/ExceptionInterface.php', - 'Symfony\\Component\\Translation\\Exception\\IncompleteDsnException' => __DIR__ . '/..' . '/symfony/translation/Exception/IncompleteDsnException.php', - 'Symfony\\Component\\Translation\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/translation/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\Translation\\Exception\\InvalidResourceException' => __DIR__ . '/..' . '/symfony/translation/Exception/InvalidResourceException.php', - 'Symfony\\Component\\Translation\\Exception\\LogicException' => __DIR__ . '/..' . '/symfony/translation/Exception/LogicException.php', - 'Symfony\\Component\\Translation\\Exception\\MissingRequiredOptionException' => __DIR__ . '/..' . '/symfony/translation/Exception/MissingRequiredOptionException.php', - 'Symfony\\Component\\Translation\\Exception\\NotFoundResourceException' => __DIR__ . '/..' . '/symfony/translation/Exception/NotFoundResourceException.php', - 'Symfony\\Component\\Translation\\Exception\\ProviderException' => __DIR__ . '/..' . '/symfony/translation/Exception/ProviderException.php', - 'Symfony\\Component\\Translation\\Exception\\ProviderExceptionInterface' => __DIR__ . '/..' . '/symfony/translation/Exception/ProviderExceptionInterface.php', - 'Symfony\\Component\\Translation\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/translation/Exception/RuntimeException.php', - 'Symfony\\Component\\Translation\\Exception\\UnsupportedSchemeException' => __DIR__ . '/..' . '/symfony/translation/Exception/UnsupportedSchemeException.php', - 'Symfony\\Component\\Translation\\Extractor\\AbstractFileExtractor' => __DIR__ . '/..' . '/symfony/translation/Extractor/AbstractFileExtractor.php', - 'Symfony\\Component\\Translation\\Extractor\\ChainExtractor' => __DIR__ . '/..' . '/symfony/translation/Extractor/ChainExtractor.php', - 'Symfony\\Component\\Translation\\Extractor\\ExtractorInterface' => __DIR__ . '/..' . '/symfony/translation/Extractor/ExtractorInterface.php', - 'Symfony\\Component\\Translation\\Extractor\\PhpAstExtractor' => __DIR__ . '/..' . '/symfony/translation/Extractor/PhpAstExtractor.php', - 'Symfony\\Component\\Translation\\Extractor\\PhpExtractor' => __DIR__ . '/..' . '/symfony/translation/Extractor/PhpExtractor.php', - 'Symfony\\Component\\Translation\\Extractor\\PhpStringTokenParser' => __DIR__ . '/..' . '/symfony/translation/Extractor/PhpStringTokenParser.php', - 'Symfony\\Component\\Translation\\Extractor\\Visitor\\AbstractVisitor' => __DIR__ . '/..' . '/symfony/translation/Extractor/Visitor/AbstractVisitor.php', - 'Symfony\\Component\\Translation\\Extractor\\Visitor\\ConstraintVisitor' => __DIR__ . '/..' . '/symfony/translation/Extractor/Visitor/ConstraintVisitor.php', - 'Symfony\\Component\\Translation\\Extractor\\Visitor\\TransMethodVisitor' => __DIR__ . '/..' . '/symfony/translation/Extractor/Visitor/TransMethodVisitor.php', - 'Symfony\\Component\\Translation\\Extractor\\Visitor\\TranslatableMessageVisitor' => __DIR__ . '/..' . '/symfony/translation/Extractor/Visitor/TranslatableMessageVisitor.php', - 'Symfony\\Component\\Translation\\Formatter\\IntlFormatter' => __DIR__ . '/..' . '/symfony/translation/Formatter/IntlFormatter.php', - 'Symfony\\Component\\Translation\\Formatter\\IntlFormatterInterface' => __DIR__ . '/..' . '/symfony/translation/Formatter/IntlFormatterInterface.php', - 'Symfony\\Component\\Translation\\Formatter\\MessageFormatter' => __DIR__ . '/..' . '/symfony/translation/Formatter/MessageFormatter.php', - 'Symfony\\Component\\Translation\\Formatter\\MessageFormatterInterface' => __DIR__ . '/..' . '/symfony/translation/Formatter/MessageFormatterInterface.php', - 'Symfony\\Component\\Translation\\IdentityTranslator' => __DIR__ . '/..' . '/symfony/translation/IdentityTranslator.php', - 'Symfony\\Component\\Translation\\Loader\\ArrayLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/ArrayLoader.php', - 'Symfony\\Component\\Translation\\Loader\\CsvFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/CsvFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\FileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/FileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\IcuDatFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/IcuDatFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\IcuResFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/IcuResFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\IniFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/IniFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\JsonFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/JsonFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\LoaderInterface' => __DIR__ . '/..' . '/symfony/translation/Loader/LoaderInterface.php', - 'Symfony\\Component\\Translation\\Loader\\MoFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/MoFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\PhpFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/PhpFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\PoFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/PoFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\QtFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/QtFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\XliffFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/XliffFileLoader.php', - 'Symfony\\Component\\Translation\\Loader\\YamlFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/YamlFileLoader.php', - 'Symfony\\Component\\Translation\\LocaleSwitcher' => __DIR__ . '/..' . '/symfony/translation/LocaleSwitcher.php', - 'Symfony\\Component\\Translation\\LoggingTranslator' => __DIR__ . '/..' . '/symfony/translation/LoggingTranslator.php', - 'Symfony\\Component\\Translation\\MessageCatalogue' => __DIR__ . '/..' . '/symfony/translation/MessageCatalogue.php', - 'Symfony\\Component\\Translation\\MessageCatalogueInterface' => __DIR__ . '/..' . '/symfony/translation/MessageCatalogueInterface.php', - 'Symfony\\Component\\Translation\\MetadataAwareInterface' => __DIR__ . '/..' . '/symfony/translation/MetadataAwareInterface.php', - 'Symfony\\Component\\Translation\\Provider\\AbstractProviderFactory' => __DIR__ . '/..' . '/symfony/translation/Provider/AbstractProviderFactory.php', - 'Symfony\\Component\\Translation\\Provider\\Dsn' => __DIR__ . '/..' . '/symfony/translation/Provider/Dsn.php', - 'Symfony\\Component\\Translation\\Provider\\FilteringProvider' => __DIR__ . '/..' . '/symfony/translation/Provider/FilteringProvider.php', - 'Symfony\\Component\\Translation\\Provider\\NullProvider' => __DIR__ . '/..' . '/symfony/translation/Provider/NullProvider.php', - 'Symfony\\Component\\Translation\\Provider\\NullProviderFactory' => __DIR__ . '/..' . '/symfony/translation/Provider/NullProviderFactory.php', - 'Symfony\\Component\\Translation\\Provider\\ProviderFactoryInterface' => __DIR__ . '/..' . '/symfony/translation/Provider/ProviderFactoryInterface.php', - 'Symfony\\Component\\Translation\\Provider\\ProviderInterface' => __DIR__ . '/..' . '/symfony/translation/Provider/ProviderInterface.php', - 'Symfony\\Component\\Translation\\Provider\\TranslationProviderCollection' => __DIR__ . '/..' . '/symfony/translation/Provider/TranslationProviderCollection.php', - 'Symfony\\Component\\Translation\\Provider\\TranslationProviderCollectionFactory' => __DIR__ . '/..' . '/symfony/translation/Provider/TranslationProviderCollectionFactory.php', - 'Symfony\\Component\\Translation\\PseudoLocalizationTranslator' => __DIR__ . '/..' . '/symfony/translation/PseudoLocalizationTranslator.php', - 'Symfony\\Component\\Translation\\Reader\\TranslationReader' => __DIR__ . '/..' . '/symfony/translation/Reader/TranslationReader.php', - 'Symfony\\Component\\Translation\\Reader\\TranslationReaderInterface' => __DIR__ . '/..' . '/symfony/translation/Reader/TranslationReaderInterface.php', - 'Symfony\\Component\\Translation\\Test\\ProviderFactoryTestCase' => __DIR__ . '/..' . '/symfony/translation/Test/ProviderFactoryTestCase.php', - 'Symfony\\Component\\Translation\\Test\\ProviderTestCase' => __DIR__ . '/..' . '/symfony/translation/Test/ProviderTestCase.php', - 'Symfony\\Component\\Translation\\TranslatableMessage' => __DIR__ . '/..' . '/symfony/translation/TranslatableMessage.php', - 'Symfony\\Component\\Translation\\Translator' => __DIR__ . '/..' . '/symfony/translation/Translator.php', - 'Symfony\\Component\\Translation\\TranslatorBag' => __DIR__ . '/..' . '/symfony/translation/TranslatorBag.php', - 'Symfony\\Component\\Translation\\TranslatorBagInterface' => __DIR__ . '/..' . '/symfony/translation/TranslatorBagInterface.php', - 'Symfony\\Component\\Translation\\Util\\ArrayConverter' => __DIR__ . '/..' . '/symfony/translation/Util/ArrayConverter.php', - '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\\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', - 'Symfony\\Component\\Uid\\Command\\GenerateUuidCommand' => __DIR__ . '/..' . '/symfony/uid/Command/GenerateUuidCommand.php', - 'Symfony\\Component\\Uid\\Command\\InspectUlidCommand' => __DIR__ . '/..' . '/symfony/uid/Command/InspectUlidCommand.php', - 'Symfony\\Component\\Uid\\Command\\InspectUuidCommand' => __DIR__ . '/..' . '/symfony/uid/Command/InspectUuidCommand.php', - 'Symfony\\Component\\Uid\\Factory\\NameBasedUuidFactory' => __DIR__ . '/..' . '/symfony/uid/Factory/NameBasedUuidFactory.php', - 'Symfony\\Component\\Uid\\Factory\\RandomBasedUuidFactory' => __DIR__ . '/..' . '/symfony/uid/Factory/RandomBasedUuidFactory.php', - 'Symfony\\Component\\Uid\\Factory\\TimeBasedUuidFactory' => __DIR__ . '/..' . '/symfony/uid/Factory/TimeBasedUuidFactory.php', - 'Symfony\\Component\\Uid\\Factory\\UlidFactory' => __DIR__ . '/..' . '/symfony/uid/Factory/UlidFactory.php', - 'Symfony\\Component\\Uid\\Factory\\UuidFactory' => __DIR__ . '/..' . '/symfony/uid/Factory/UuidFactory.php', - 'Symfony\\Component\\Uid\\MaxUlid' => __DIR__ . '/..' . '/symfony/uid/MaxUlid.php', - 'Symfony\\Component\\Uid\\MaxUuid' => __DIR__ . '/..' . '/symfony/uid/MaxUuid.php', - 'Symfony\\Component\\Uid\\NilUlid' => __DIR__ . '/..' . '/symfony/uid/NilUlid.php', - 'Symfony\\Component\\Uid\\NilUuid' => __DIR__ . '/..' . '/symfony/uid/NilUuid.php', - 'Symfony\\Component\\Uid\\TimeBasedUidInterface' => __DIR__ . '/..' . '/symfony/uid/TimeBasedUidInterface.php', - 'Symfony\\Component\\Uid\\Ulid' => __DIR__ . '/..' . '/symfony/uid/Ulid.php', - 'Symfony\\Component\\Uid\\Uuid' => __DIR__ . '/..' . '/symfony/uid/Uuid.php', - 'Symfony\\Component\\Uid\\UuidV1' => __DIR__ . '/..' . '/symfony/uid/UuidV1.php', - 'Symfony\\Component\\Uid\\UuidV3' => __DIR__ . '/..' . '/symfony/uid/UuidV3.php', - 'Symfony\\Component\\Uid\\UuidV4' => __DIR__ . '/..' . '/symfony/uid/UuidV4.php', - 'Symfony\\Component\\Uid\\UuidV5' => __DIR__ . '/..' . '/symfony/uid/UuidV5.php', - 'Symfony\\Component\\Uid\\UuidV6' => __DIR__ . '/..' . '/symfony/uid/UuidV6.php', - 'Symfony\\Component\\Uid\\UuidV7' => __DIR__ . '/..' . '/symfony/uid/UuidV7.php', - 'Symfony\\Component\\Uid\\UuidV8' => __DIR__ . '/..' . '/symfony/uid/UuidV8.php', - 'Symfony\\Component\\VarDumper\\Caster\\AmqpCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/AmqpCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\ArgsStub' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/ArgsStub.php', - 'Symfony\\Component\\VarDumper\\Caster\\Caster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/Caster.php', - 'Symfony\\Component\\VarDumper\\Caster\\ClassStub' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/ClassStub.php', - 'Symfony\\Component\\VarDumper\\Caster\\ConstStub' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/ConstStub.php', - 'Symfony\\Component\\VarDumper\\Caster\\CutArrayStub' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/CutArrayStub.php', - 'Symfony\\Component\\VarDumper\\Caster\\CutStub' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/CutStub.php', - 'Symfony\\Component\\VarDumper\\Caster\\DOMCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/DOMCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\DateCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/DateCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\DoctrineCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/DoctrineCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\DsCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/DsCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\DsPairStub' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/DsPairStub.php', - 'Symfony\\Component\\VarDumper\\Caster\\EnumStub' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/EnumStub.php', - 'Symfony\\Component\\VarDumper\\Caster\\ExceptionCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/ExceptionCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\FFICaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/FFICaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\FiberCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/FiberCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\FrameStub' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/FrameStub.php', - 'Symfony\\Component\\VarDumper\\Caster\\GmpCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/GmpCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\ImagineCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/ImagineCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\ImgStub' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/ImgStub.php', - 'Symfony\\Component\\VarDumper\\Caster\\IntlCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/IntlCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\LinkStub' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/LinkStub.php', - 'Symfony\\Component\\VarDumper\\Caster\\MemcachedCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/MemcachedCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\MysqliCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/MysqliCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\PdoCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/PdoCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\PgSqlCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/PgSqlCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\ProxyManagerCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/ProxyManagerCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\RdKafkaCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/RdKafkaCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\RedisCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/RedisCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\ReflectionCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/ReflectionCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\ResourceCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/ResourceCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\ScalarStub' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/ScalarStub.php', - 'Symfony\\Component\\VarDumper\\Caster\\SplCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/SplCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\StubCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/StubCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\SymfonyCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/SymfonyCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\TraceStub' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/TraceStub.php', - 'Symfony\\Component\\VarDumper\\Caster\\UninitializedStub' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/UninitializedStub.php', - 'Symfony\\Component\\VarDumper\\Caster\\UuidCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/UuidCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\XmlReaderCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/XmlReaderCaster.php', - 'Symfony\\Component\\VarDumper\\Caster\\XmlResourceCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/XmlResourceCaster.php', - 'Symfony\\Component\\VarDumper\\Cloner\\AbstractCloner' => __DIR__ . '/..' . '/symfony/var-dumper/Cloner/AbstractCloner.php', - 'Symfony\\Component\\VarDumper\\Cloner\\ClonerInterface' => __DIR__ . '/..' . '/symfony/var-dumper/Cloner/ClonerInterface.php', - 'Symfony\\Component\\VarDumper\\Cloner\\Cursor' => __DIR__ . '/..' . '/symfony/var-dumper/Cloner/Cursor.php', - 'Symfony\\Component\\VarDumper\\Cloner\\Data' => __DIR__ . '/..' . '/symfony/var-dumper/Cloner/Data.php', - 'Symfony\\Component\\VarDumper\\Cloner\\DumperInterface' => __DIR__ . '/..' . '/symfony/var-dumper/Cloner/DumperInterface.php', - 'Symfony\\Component\\VarDumper\\Cloner\\Internal\\NoDefault' => __DIR__ . '/..' . '/symfony/var-dumper/Cloner/Internal/NoDefault.php', - 'Symfony\\Component\\VarDumper\\Cloner\\Stub' => __DIR__ . '/..' . '/symfony/var-dumper/Cloner/Stub.php', - 'Symfony\\Component\\VarDumper\\Cloner\\VarCloner' => __DIR__ . '/..' . '/symfony/var-dumper/Cloner/VarCloner.php', - 'Symfony\\Component\\VarDumper\\Command\\Descriptor\\CliDescriptor' => __DIR__ . '/..' . '/symfony/var-dumper/Command/Descriptor/CliDescriptor.php', - 'Symfony\\Component\\VarDumper\\Command\\Descriptor\\DumpDescriptorInterface' => __DIR__ . '/..' . '/symfony/var-dumper/Command/Descriptor/DumpDescriptorInterface.php', - 'Symfony\\Component\\VarDumper\\Command\\Descriptor\\HtmlDescriptor' => __DIR__ . '/..' . '/symfony/var-dumper/Command/Descriptor/HtmlDescriptor.php', - 'Symfony\\Component\\VarDumper\\Command\\ServerDumpCommand' => __DIR__ . '/..' . '/symfony/var-dumper/Command/ServerDumpCommand.php', - 'Symfony\\Component\\VarDumper\\Dumper\\AbstractDumper' => __DIR__ . '/..' . '/symfony/var-dumper/Dumper/AbstractDumper.php', - 'Symfony\\Component\\VarDumper\\Dumper\\CliDumper' => __DIR__ . '/..' . '/symfony/var-dumper/Dumper/CliDumper.php', - 'Symfony\\Component\\VarDumper\\Dumper\\ContextProvider\\CliContextProvider' => __DIR__ . '/..' . '/symfony/var-dumper/Dumper/ContextProvider/CliContextProvider.php', - 'Symfony\\Component\\VarDumper\\Dumper\\ContextProvider\\ContextProviderInterface' => __DIR__ . '/..' . '/symfony/var-dumper/Dumper/ContextProvider/ContextProviderInterface.php', - 'Symfony\\Component\\VarDumper\\Dumper\\ContextProvider\\RequestContextProvider' => __DIR__ . '/..' . '/symfony/var-dumper/Dumper/ContextProvider/RequestContextProvider.php', - 'Symfony\\Component\\VarDumper\\Dumper\\ContextProvider\\SourceContextProvider' => __DIR__ . '/..' . '/symfony/var-dumper/Dumper/ContextProvider/SourceContextProvider.php', - 'Symfony\\Component\\VarDumper\\Dumper\\ContextualizedDumper' => __DIR__ . '/..' . '/symfony/var-dumper/Dumper/ContextualizedDumper.php', - 'Symfony\\Component\\VarDumper\\Dumper\\DataDumperInterface' => __DIR__ . '/..' . '/symfony/var-dumper/Dumper/DataDumperInterface.php', - 'Symfony\\Component\\VarDumper\\Dumper\\HtmlDumper' => __DIR__ . '/..' . '/symfony/var-dumper/Dumper/HtmlDumper.php', - 'Symfony\\Component\\VarDumper\\Dumper\\ServerDumper' => __DIR__ . '/..' . '/symfony/var-dumper/Dumper/ServerDumper.php', - 'Symfony\\Component\\VarDumper\\Exception\\ThrowingCasterException' => __DIR__ . '/..' . '/symfony/var-dumper/Exception/ThrowingCasterException.php', - 'Symfony\\Component\\VarDumper\\Server\\Connection' => __DIR__ . '/..' . '/symfony/var-dumper/Server/Connection.php', - 'Symfony\\Component\\VarDumper\\Server\\DumpServer' => __DIR__ . '/..' . '/symfony/var-dumper/Server/DumpServer.php', - 'Symfony\\Component\\VarDumper\\Test\\VarDumperTestTrait' => __DIR__ . '/..' . '/symfony/var-dumper/Test/VarDumperTestTrait.php', - 'Symfony\\Component\\VarDumper\\VarDumper' => __DIR__ . '/..' . '/symfony/var-dumper/VarDumper.php', - 'Symfony\\Contracts\\EventDispatcher\\Event' => __DIR__ . '/..' . '/symfony/event-dispatcher-contracts/Event.php', - 'Symfony\\Contracts\\EventDispatcher\\EventDispatcherInterface' => __DIR__ . '/..' . '/symfony/event-dispatcher-contracts/EventDispatcherInterface.php', - 'Symfony\\Contracts\\Service\\Attribute\\Required' => __DIR__ . '/..' . '/symfony/service-contracts/Attribute/Required.php', - 'Symfony\\Contracts\\Service\\Attribute\\SubscribedService' => __DIR__ . '/..' . '/symfony/service-contracts/Attribute/SubscribedService.php', - 'Symfony\\Contracts\\Service\\ResetInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ResetInterface.php', - 'Symfony\\Contracts\\Service\\ServiceCollectionInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceCollectionInterface.php', - 'Symfony\\Contracts\\Service\\ServiceLocatorTrait' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceLocatorTrait.php', - 'Symfony\\Contracts\\Service\\ServiceMethodsSubscriberTrait' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceMethodsSubscriberTrait.php', - 'Symfony\\Contracts\\Service\\ServiceProviderInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceProviderInterface.php', - 'Symfony\\Contracts\\Service\\ServiceSubscriberInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceSubscriberInterface.php', - 'Symfony\\Contracts\\Service\\ServiceSubscriberTrait' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceSubscriberTrait.php', - 'Symfony\\Contracts\\Translation\\LocaleAwareInterface' => __DIR__ . '/..' . '/symfony/translation-contracts/LocaleAwareInterface.php', - 'Symfony\\Contracts\\Translation\\TranslatableInterface' => __DIR__ . '/..' . '/symfony/translation-contracts/TranslatableInterface.php', - 'Symfony\\Contracts\\Translation\\TranslatorInterface' => __DIR__ . '/..' . '/symfony/translation-contracts/TranslatorInterface.php', - 'Symfony\\Contracts\\Translation\\TranslatorTrait' => __DIR__ . '/..' . '/symfony/translation-contracts/TranslatorTrait.php', - 'Symfony\\Polyfill\\Ctype\\Ctype' => __DIR__ . '/..' . '/symfony/polyfill-ctype/Ctype.php', - 'Symfony\\Polyfill\\Intl\\Grapheme\\Grapheme' => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme/Grapheme.php', - 'Symfony\\Polyfill\\Intl\\Idn\\Idn' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/Idn.php', - 'Symfony\\Polyfill\\Intl\\Idn\\Info' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/Info.php', - 'Symfony\\Polyfill\\Intl\\Idn\\Resources\\unidata\\DisallowedRanges' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php', - 'Symfony\\Polyfill\\Intl\\Idn\\Resources\\unidata\\Regex' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/Resources/unidata/Regex.php', - 'Symfony\\Polyfill\\Intl\\Normalizer\\Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Normalizer.php', - 'Symfony\\Polyfill\\Mbstring\\Mbstring' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/Mbstring.php', - 'Symfony\\Polyfill\\Php80\\Php80' => __DIR__ . '/..' . '/symfony/polyfill-php80/Php80.php', - 'Symfony\\Polyfill\\Php80\\PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/PhpToken.php', - 'Symfony\\Polyfill\\Php83\\Php83' => __DIR__ . '/..' . '/symfony/polyfill-php83/Php83.php', - 'Symfony\\Polyfill\\Uuid\\Uuid' => __DIR__ . '/..' . '/symfony/polyfill-uuid/Uuid.php', - 'Termwind\\Actions\\StyleToMethod' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Actions/StyleToMethod.php', - 'Termwind\\Components\\Anchor' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Components/Anchor.php', - 'Termwind\\Components\\BreakLine' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Components/BreakLine.php', - 'Termwind\\Components\\Dd' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Components/Dd.php', - 'Termwind\\Components\\Div' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Components/Div.php', - 'Termwind\\Components\\Dl' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Components/Dl.php', - 'Termwind\\Components\\Dt' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Components/Dt.php', - 'Termwind\\Components\\Element' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Components/Element.php', - 'Termwind\\Components\\Hr' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Components/Hr.php', - 'Termwind\\Components\\Li' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Components/Li.php', - 'Termwind\\Components\\Ol' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Components/Ol.php', - 'Termwind\\Components\\Paragraph' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Components/Paragraph.php', - 'Termwind\\Components\\Raw' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Components/Raw.php', - 'Termwind\\Components\\Span' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Components/Span.php', - 'Termwind\\Components\\Ul' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Components/Ul.php', - 'Termwind\\Enums\\Color' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Enums/Color.php', - 'Termwind\\Exceptions\\ColorNotFound' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Exceptions/ColorNotFound.php', - 'Termwind\\Exceptions\\InvalidChild' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Exceptions/InvalidChild.php', - 'Termwind\\Exceptions\\InvalidColor' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Exceptions/InvalidColor.php', - 'Termwind\\Exceptions\\InvalidStyle' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Exceptions/InvalidStyle.php', - 'Termwind\\Exceptions\\StyleNotFound' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Exceptions/StyleNotFound.php', - 'Termwind\\Helpers\\QuestionHelper' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Helpers/QuestionHelper.php', - 'Termwind\\HtmlRenderer' => __DIR__ . '/..' . '/nunomaduro/termwind/src/HtmlRenderer.php', - 'Termwind\\Html\\CodeRenderer' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Html/CodeRenderer.php', - 'Termwind\\Html\\InheritStyles' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Html/InheritStyles.php', - 'Termwind\\Html\\PreRenderer' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Html/PreRenderer.php', - 'Termwind\\Html\\TableRenderer' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Html/TableRenderer.php', - 'Termwind\\Laravel\\TermwindServiceProvider' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Laravel/TermwindServiceProvider.php', - 'Termwind\\Question' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Question.php', - 'Termwind\\Repositories\\Styles' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Repositories/Styles.php', - 'Termwind\\Terminal' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Terminal.php', - 'Termwind\\Termwind' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Termwind.php', - 'Termwind\\ValueObjects\\Node' => __DIR__ . '/..' . '/nunomaduro/termwind/src/ValueObjects/Node.php', - 'Termwind\\ValueObjects\\Style' => __DIR__ . '/..' . '/nunomaduro/termwind/src/ValueObjects/Style.php', - 'Termwind\\ValueObjects\\Styles' => __DIR__ . '/..' . '/nunomaduro/termwind/src/ValueObjects/Styles.php', - 'Tests\\CreatesApplication' => __DIR__ . '/../..' . '/tests/CreatesApplication.php', - 'Tests\\Feature\\ExampleTest' => __DIR__ . '/../..' . '/tests/Feature/ExampleTest.php', - 'Tests\\TestCase' => __DIR__ . '/../..' . '/tests/TestCase.php', - 'Tests\\Unit\\ExampleTest' => __DIR__ . '/../..' . '/tests/Unit/ExampleTest.php', - 'TheSeer\\Tokenizer\\Exception' => __DIR__ . '/..' . '/theseer/tokenizer/src/Exception.php', - 'TheSeer\\Tokenizer\\NamespaceUri' => __DIR__ . '/..' . '/theseer/tokenizer/src/NamespaceUri.php', - 'TheSeer\\Tokenizer\\NamespaceUriException' => __DIR__ . '/..' . '/theseer/tokenizer/src/NamespaceUriException.php', - 'TheSeer\\Tokenizer\\Token' => __DIR__ . '/..' . '/theseer/tokenizer/src/Token.php', - 'TheSeer\\Tokenizer\\TokenCollection' => __DIR__ . '/..' . '/theseer/tokenizer/src/TokenCollection.php', - 'TheSeer\\Tokenizer\\TokenCollectionException' => __DIR__ . '/..' . '/theseer/tokenizer/src/TokenCollectionException.php', - 'TheSeer\\Tokenizer\\Tokenizer' => __DIR__ . '/..' . '/theseer/tokenizer/src/Tokenizer.php', - 'TheSeer\\Tokenizer\\XMLSerializer' => __DIR__ . '/..' . '/theseer/tokenizer/src/XMLSerializer.php', - 'TijsVerkoyen\\CssToInlineStyles\\CssToInlineStyles' => __DIR__ . '/..' . '/tijsverkoyen/css-to-inline-styles/src/CssToInlineStyles.php', - 'TijsVerkoyen\\CssToInlineStyles\\Css\\Processor' => __DIR__ . '/..' . '/tijsverkoyen/css-to-inline-styles/src/Css/Processor.php', - 'TijsVerkoyen\\CssToInlineStyles\\Css\\Property\\Processor' => __DIR__ . '/..' . '/tijsverkoyen/css-to-inline-styles/src/Css/Property/Processor.php', - 'TijsVerkoyen\\CssToInlineStyles\\Css\\Property\\Property' => __DIR__ . '/..' . '/tijsverkoyen/css-to-inline-styles/src/Css/Property/Property.php', - 'TijsVerkoyen\\CssToInlineStyles\\Css\\Rule\\Processor' => __DIR__ . '/..' . '/tijsverkoyen/css-to-inline-styles/src/Css/Rule/Processor.php', - 'TijsVerkoyen\\CssToInlineStyles\\Css\\Rule\\Rule' => __DIR__ . '/..' . '/tijsverkoyen/css-to-inline-styles/src/Css/Rule/Rule.php', - 'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', - 'ValueError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/ValueError.php', - 'Webmozart\\Assert\\Assert' => __DIR__ . '/..' . '/webmozart/assert/src/Assert.php', - 'Webmozart\\Assert\\InvalidArgumentException' => __DIR__ . '/..' . '/webmozart/assert/src/InvalidArgumentException.php', - 'Webmozart\\Assert\\Mixin' => __DIR__ . '/..' . '/webmozart/assert/src/Mixin.php', - 'Whoops\\Exception\\ErrorException' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Exception/ErrorException.php', - 'Whoops\\Exception\\Formatter' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Exception/Formatter.php', - 'Whoops\\Exception\\Frame' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Exception/Frame.php', - 'Whoops\\Exception\\FrameCollection' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Exception/FrameCollection.php', - 'Whoops\\Exception\\Inspector' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Exception/Inspector.php', - 'Whoops\\Handler\\CallbackHandler' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Handler/CallbackHandler.php', - 'Whoops\\Handler\\Handler' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Handler/Handler.php', - 'Whoops\\Handler\\HandlerInterface' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Handler/HandlerInterface.php', - 'Whoops\\Handler\\JsonResponseHandler' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Handler/JsonResponseHandler.php', - 'Whoops\\Handler\\PlainTextHandler' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Handler/PlainTextHandler.php', - 'Whoops\\Handler\\PrettyPageHandler' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Handler/PrettyPageHandler.php', - 'Whoops\\Handler\\XmlResponseHandler' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Handler/XmlResponseHandler.php', - 'Whoops\\Inspector\\InspectorFactory' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Inspector/InspectorFactory.php', - 'Whoops\\Inspector\\InspectorFactoryInterface' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Inspector/InspectorFactoryInterface.php', - 'Whoops\\Inspector\\InspectorInterface' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Inspector/InspectorInterface.php', - 'Whoops\\Run' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Run.php', - 'Whoops\\RunInterface' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/RunInterface.php', - 'Whoops\\Util\\HtmlDumperOutput' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Util/HtmlDumperOutput.php', - 'Whoops\\Util\\Misc' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Util/Misc.php', - 'Whoops\\Util\\SystemFacade' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Util/SystemFacade.php', - 'Whoops\\Util\\TemplateHelper' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Util/TemplateHelper.php', - 'h4cc\\WKHTMLToPDF\\WKHTMLToPDF' => __DIR__ . '/..' . '/h4cc/wkhtmltopdf-amd64/WKHTMLToPDF.php', - 'voku\\helper\\ASCII' => __DIR__ . '/..' . '/voku/portable-ascii/src/voku/helper/ASCII.php', - ); - - public static function getInitializer(ClassLoader $loader) - { - return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit69a41de4ce3c76c7865a7de0eec12ccc::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit69a41de4ce3c76c7865a7de0eec12ccc::$prefixDirsPsr4; - $loader->prefixesPsr0 = ComposerStaticInit69a41de4ce3c76c7865a7de0eec12ccc::$prefixesPsr0; - $loader->classMap = ComposerStaticInit69a41de4ce3c76c7865a7de0eec12ccc::$classMap; - - }, null, ClassLoader::class); - } -} diff --git a/docker/streamline-src/vendor/composer/installed.json b/docker/streamline-src/vendor/composer/installed.json deleted file mode 100644 index 884a5332..00000000 --- a/docker/streamline-src/vendor/composer/installed.json +++ /dev/null @@ -1,9801 +0,0 @@ -{ - "packages": [ - { - "name": "africastalking/africastalking", - "version": "v3.0.2", - "version_normalized": "3.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/AfricasTalkingLtd/africastalking-php.git", - "reference": "8345423ee70b07b36cedcce61c85c9bc679e3666" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/AfricasTalkingLtd/africastalking-php/zipball/8345423ee70b07b36cedcce61c85c9bc679e3666", - "reference": "8345423ee70b07b36cedcce61c85c9bc679e3666", - "shasum": "" - }, - "require": { - "guzzlehttp/guzzle": "^6.0 || ^7.0", - "php": ">=7.1" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "time": "2024-03-07T12:27:18+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "AfricasTalking\\SDK\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Africas's Talking", - "email": "support@africastalking.com", - "homepage": "https://www.africastalking.com" - } - ], - "description": "Official Africa's Talking PHP SDK", - "homepage": "http://github.com/AfricasTalkingLtd/africastalking-php", - "keywords": [ - "Africastalking", - "airtime", - "api", - "sms", - "text message", - "ussd", - "voice" - ], - "support": { - "issues": "https://github.com/AfricasTalkingLtd/africastalking-php/issues", - "source": "https://github.com/AfricasTalkingLtd/africastalking-php/tree/v3.0.2" - }, - "install-path": "../africastalking/africastalking" - }, - { - "name": "barryvdh/laravel-dompdf", - "version": "v2.2.0", - "version_normalized": "2.2.0.0", - "source": { - "type": "git", - "url": "https://github.com/barryvdh/laravel-dompdf.git", - "reference": "c96f90c97666cebec154ca1ffb67afed372114d8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/c96f90c97666cebec154ca1ffb67afed372114d8", - "reference": "c96f90c97666cebec154ca1ffb67afed372114d8", - "shasum": "" - }, - "require": { - "dompdf/dompdf": "^2.0.7", - "illuminate/support": "^6|^7|^8|^9|^10|^11", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "larastan/larastan": "^1.0|^2.7.0", - "orchestra/testbench": "^4|^5|^6|^7|^8|^9", - "phpro/grumphp": "^1 || ^2.5", - "squizlabs/php_codesniffer": "^3.5" - }, - "time": "2024-04-25T13:16:04+00:00", - "type": "library", - "extra": { - "laravel": { - "aliases": { - "PDF": "Barryvdh\\DomPDF\\Facade\\Pdf", - "Pdf": "Barryvdh\\DomPDF\\Facade\\Pdf" - }, - "providers": [ - "Barryvdh\\DomPDF\\ServiceProvider" - ] - }, - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Barryvdh\\DomPDF\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "A DOMPDF Wrapper for Laravel", - "keywords": [ - "dompdf", - "laravel", - "pdf" - ], - "support": { - "issues": "https://github.com/barryvdh/laravel-dompdf/issues", - "source": "https://github.com/barryvdh/laravel-dompdf/tree/v2.2.0" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "install-path": "../barryvdh/laravel-dompdf" - }, - { - "name": "barryvdh/laravel-snappy", - "version": "v1.0.3", - "version_normalized": "1.0.3.0", - "source": { - "type": "git", - "url": "https://github.com/barryvdh/laravel-snappy.git", - "reference": "716dcb6db24de4ce8e6ae5941cfab152af337ea0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-snappy/zipball/716dcb6db24de4ce8e6ae5941cfab152af337ea0", - "reference": "716dcb6db24de4ce8e6ae5941cfab152af337ea0", - "shasum": "" - }, - "require": { - "illuminate/filesystem": "^9|^10|^11.0", - "illuminate/support": "^9|^10|^11.0", - "knplabs/knp-snappy": "^1.4.4", - "php": ">=7.2" - }, - "require-dev": { - "orchestra/testbench": "^7|^8|^9.0" - }, - "time": "2024-03-09T19:20:39+00:00", - "type": "library", - "extra": { - "laravel": { - "aliases": { - "PDF": "Barryvdh\\Snappy\\Facades\\SnappyPdf", - "SnappyImage": "Barryvdh\\Snappy\\Facades\\SnappyImage" - }, - "providers": [ - "Barryvdh\\Snappy\\ServiceProvider" - ] - }, - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Barryvdh\\Snappy\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Snappy PDF/Image for Laravel", - "keywords": [ - "image", - "laravel", - "pdf", - "snappy", - "wkhtmltoimage", - "wkhtmltopdf" - ], - "support": { - "issues": "https://github.com/barryvdh/laravel-snappy/issues", - "source": "https://github.com/barryvdh/laravel-snappy/tree/v1.0.3" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "install-path": "../barryvdh/laravel-snappy" - }, - { - "name": "brick/math", - "version": "0.12.1", - "version_normalized": "0.12.1.0", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "f510c0a40911935b77b86859eb5223d58d660df1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/f510c0a40911935b77b86859eb5223d58d660df1", - "reference": "f510c0a40911935b77b86859eb5223d58d660df1", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^10.1", - "vimeo/psalm": "5.16.0" - }, - "time": "2023-11-29T23:19:16+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "bignumber", - "brick", - "decimal", - "integer", - "math", - "mathematics", - "rational" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.12.1" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - } - ], - "install-path": "../brick/math" - }, - { - "name": "carbonphp/carbon-doctrine-types", - "version": "2.1.0", - "version_normalized": "2.1.0.0", - "source": { - "type": "git", - "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", - "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", - "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", - "shasum": "" - }, - "require": { - "php": "^7.4 || ^8.0" - }, - "conflict": { - "doctrine/dbal": "<3.7.0 || >=4.0.0" - }, - "require-dev": { - "doctrine/dbal": "^3.7.0", - "nesbot/carbon": "^2.71.0 || ^3.0.0", - "phpunit/phpunit": "^10.3" - }, - "time": "2023-12-11T17:09:12+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "KyleKatarn", - "email": "kylekatarnls@gmail.com" - } - ], - "description": "Types to use Carbon in Doctrine", - "keywords": [ - "carbon", - "date", - "datetime", - "doctrine", - "time" - ], - "support": { - "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", - "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/2.1.0" - }, - "funding": [ - { - "url": "https://github.com/kylekatarnls", - "type": "github" - }, - { - "url": "https://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "install-path": "../carbonphp/carbon-doctrine-types" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.3", - "version_normalized": "3.0.3.0", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/a23a2bf4f31d3518f3ecb38660c95715dfead60f", - "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.42", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", - "scrutinizer/ocular": "1.6.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.0.0" - }, - "time": "2024-07-08T12:26:09+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Dflydev\\DotAccessData\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Dragonfly Development Inc.", - "email": "info@dflydev.com", - "homepage": "http://dflydev.com" - }, - { - "name": "Beau Simensen", - "email": "beau@dflydev.com", - "homepage": "http://beausimensen.com" - }, - { - "name": "Carlos Frutos", - "email": "carlos@kiwing.it", - "homepage": "https://github.com/cfrutos" - }, - { - "name": "Colin O'Dell", - "email": "colinodell@gmail.com", - "homepage": "https://www.colinodell.com" - } - ], - "description": "Given a deep data structure, access data by dot notation.", - "homepage": "https://github.com/dflydev/dflydev-dot-access-data", - "keywords": [ - "access", - "data", - "dot", - "notation" - ], - "support": { - "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", - "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.3" - }, - "install-path": "../dflydev/dot-access-data" - }, - { - "name": "doctrine/cache", - "version": "2.2.0", - "version_normalized": "2.2.0.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/cache.git", - "reference": "1ca8f21980e770095a31456042471a57bc4c68fb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb", - "reference": "1ca8f21980e770095a31456042471a57bc4c68fb", - "shasum": "" - }, - "require": { - "php": "~7.1 || ^8.0" - }, - "conflict": { - "doctrine/common": ">2.2,<2.4" - }, - "require-dev": { - "cache/integration-tests": "dev-master", - "doctrine/coding-standard": "^9", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psr/cache": "^1.0 || ^2.0 || ^3.0", - "symfony/cache": "^4.4 || ^5.4 || ^6", - "symfony/var-exporter": "^4.4 || ^5.4 || ^6" - }, - "time": "2022-05-20T20:07:39+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", - "homepage": "https://www.doctrine-project.org/projects/cache.html", - "keywords": [ - "abstraction", - "apcu", - "cache", - "caching", - "couchdb", - "memcached", - "php", - "redis", - "xcache" - ], - "support": { - "issues": "https://github.com/doctrine/cache/issues", - "source": "https://github.com/doctrine/cache/tree/2.2.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache", - "type": "tidelift" - } - ], - "install-path": "../doctrine/cache" - }, - { - "name": "doctrine/dbal", - "version": "3.9.3", - "version_normalized": "3.9.3.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/dbal.git", - "reference": "61446f07fcb522414d6cfd8b1c3e5f9e18c579ba" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/61446f07fcb522414d6cfd8b1c3e5f9e18c579ba", - "reference": "61446f07fcb522414d6cfd8b1c3e5f9e18c579ba", - "shasum": "" - }, - "require": { - "composer-runtime-api": "^2", - "doctrine/cache": "^1.11|^2.0", - "doctrine/deprecations": "^0.5.3|^1", - "doctrine/event-manager": "^1|^2", - "php": "^7.4 || ^8.0", - "psr/cache": "^1|^2|^3", - "psr/log": "^1|^2|^3" - }, - "require-dev": { - "doctrine/coding-standard": "12.0.0", - "fig/log-test": "^1", - "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "1.12.6", - "phpstan/phpstan-strict-rules": "^1.6", - "phpunit/phpunit": "9.6.20", - "psalm/plugin-phpunit": "0.18.4", - "slevomat/coding-standard": "8.13.1", - "squizlabs/php_codesniffer": "3.10.2", - "symfony/cache": "^5.4|^6.0|^7.0", - "symfony/console": "^4.4|^5.4|^6.0|^7.0", - "vimeo/psalm": "4.30.0" - }, - "suggest": { - "symfony/console": "For helpful console commands such as SQL execution and import of files." - }, - "time": "2024-10-10T17:56:43+00:00", - "bin": [ - "bin/doctrine-dbal" - ], - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Doctrine\\DBAL\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - } - ], - "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", - "homepage": "https://www.doctrine-project.org/projects/dbal.html", - "keywords": [ - "abstraction", - "database", - "db2", - "dbal", - "mariadb", - "mssql", - "mysql", - "oci8", - "oracle", - "pdo", - "pgsql", - "postgresql", - "queryobject", - "sasql", - "sql", - "sqlite", - "sqlserver", - "sqlsrv" - ], - "support": { - "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.9.3" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal", - "type": "tidelift" - } - ], - "install-path": "../doctrine/dbal" - }, - { - "name": "doctrine/deprecations", - "version": "1.1.4", - "version_normalized": "1.1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/deprecations.git", - "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/31610dbb31faa98e6b5447b62340826f54fbc4e9", - "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9 || ^12", - "phpstan/phpstan": "1.4.10 || 2.0.3", - "phpstan/phpstan-phpunit": "^1.0 || ^2", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psr/log": "^1 || ^2 || ^3" - }, - "suggest": { - "psr/log": "Allows logging deprecations via PSR-3 logger implementation" - }, - "time": "2024-12-07T21:18:45+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Doctrine\\Deprecations\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", - "homepage": "https://www.doctrine-project.org/", - "support": { - "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.4" - }, - "install-path": "../doctrine/deprecations" - }, - { - "name": "doctrine/event-manager", - "version": "2.0.1", - "version_normalized": "2.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/event-manager.git", - "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/b680156fa328f1dfd874fd48c7026c41570b9c6e", - "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "conflict": { - "doctrine/common": "<2.9" - }, - "require-dev": { - "doctrine/coding-standard": "^12", - "phpstan/phpstan": "^1.8.8", - "phpunit/phpunit": "^10.5", - "vimeo/psalm": "^5.24" - }, - "time": "2024-05-22T20:47:39+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", - "homepage": "https://www.doctrine-project.org/projects/event-manager.html", - "keywords": [ - "event", - "event dispatcher", - "event manager", - "event system", - "events" - ], - "support": { - "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/2.0.1" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager", - "type": "tidelift" - } - ], - "install-path": "../doctrine/event-manager" - }, - { - "name": "doctrine/inflector", - "version": "2.0.10", - "version_normalized": "2.0.10.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", - "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^11.0", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.3", - "phpunit/phpunit": "^8.5 || ^9.5", - "vimeo/psalm": "^4.25 || ^5.4" - }, - "time": "2024-02-18T20:23:39+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", - "homepage": "https://www.doctrine-project.org/projects/inflector.html", - "keywords": [ - "inflection", - "inflector", - "lowercase", - "manipulation", - "php", - "plural", - "singular", - "strings", - "uppercase", - "words" - ], - "support": { - "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.10" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", - "type": "tidelift" - } - ], - "install-path": "../doctrine/inflector" - }, - { - "name": "doctrine/lexer", - "version": "3.0.1", - "version_normalized": "3.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", - "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "require-dev": { - "doctrine/coding-standard": "^12", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^10.5", - "psalm/plugin-phpunit": "^0.18.3", - "vimeo/psalm": "^5.21" - }, - "time": "2024-02-05T11:56:58+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "https://www.doctrine-project.org/projects/lexer.html", - "keywords": [ - "annotations", - "docblock", - "lexer", - "parser", - "php" - ], - "support": { - "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/3.0.1" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", - "type": "tidelift" - } - ], - "install-path": "../doctrine/lexer" - }, - { - "name": "dompdf/dompdf", - "version": "v2.0.8", - "version_normalized": "2.0.8.0", - "source": { - "type": "git", - "url": "https://github.com/dompdf/dompdf.git", - "reference": "c20247574601700e1f7c8dab39310fca1964dc52" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dompdf/dompdf/zipball/c20247574601700e1f7c8dab39310fca1964dc52", - "reference": "c20247574601700e1f7c8dab39310fca1964dc52", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-mbstring": "*", - "masterminds/html5": "^2.0", - "phenx/php-font-lib": ">=0.5.4 <1.0.0", - "phenx/php-svg-lib": ">=0.5.2 <1.0.0", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "ext-json": "*", - "ext-zip": "*", - "mockery/mockery": "^1.3", - "phpunit/phpunit": "^7.5 || ^8 || ^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "suggest": { - "ext-gd": "Needed to process images", - "ext-gmagick": "Improves image processing performance", - "ext-imagick": "Improves image processing performance", - "ext-zlib": "Needed for pdf stream compression" - }, - "time": "2024-04-29T13:06:17+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Dompdf\\": "src/" - }, - "classmap": [ - "lib/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1" - ], - "authors": [ - { - "name": "The Dompdf Community", - "homepage": "https://github.com/dompdf/dompdf/blob/master/AUTHORS.md" - } - ], - "description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter", - "homepage": "https://github.com/dompdf/dompdf", - "support": { - "issues": "https://github.com/dompdf/dompdf/issues", - "source": "https://github.com/dompdf/dompdf/tree/v2.0.8" - }, - "install-path": "../dompdf/dompdf" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.4.0", - "version_normalized": "3.4.0.0", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "8c784d071debd117328803d86b2097615b457500" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/8c784d071debd117328803d86b2097615b457500", - "reference": "8c784d071debd117328803d86b2097615b457500", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "webmozart/assert": "^1.0" - }, - "replace": { - "mtdowling/cron-expression": "^1.0" - }, - "require-dev": { - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^7.0|^8.0|^9.0" - }, - "time": "2024-10-09T13:47:03+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Cron\\": "src/Cron/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Chris Tankersley", - "email": "chris@ctankersley.com", - "homepage": "https://github.com/dragonmantank" - } - ], - "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", - "keywords": [ - "cron", - "schedule" - ], - "support": { - "issues": "https://github.com/dragonmantank/cron-expression/issues", - "source": "https://github.com/dragonmantank/cron-expression/tree/v3.4.0" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "install-path": "../dragonmantank/cron-expression" - }, - { - "name": "egulias/email-validator", - "version": "4.0.3", - "version_normalized": "4.0.3.0", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "b115554301161fa21467629f1e1391c1936de517" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/b115554301161fa21467629f1e1391c1936de517", - "reference": "b115554301161fa21467629f1e1391c1936de517", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^2.0 || ^3.0", - "php": ">=8.1", - "symfony/polyfill-intl-idn": "^1.26" - }, - "require-dev": { - "phpunit/phpunit": "^10.2", - "vimeo/psalm": "^5.12" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "time": "2024-12-27T00:36:43+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Egulias\\EmailValidator\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Eduardo Gulias Davis" - } - ], - "description": "A library for validating emails against several RFCs", - "homepage": "https://github.com/egulias/EmailValidator", - "keywords": [ - "email", - "emailvalidation", - "emailvalidator", - "validation", - "validator" - ], - "support": { - "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/4.0.3" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "install-path": "../egulias/email-validator" - }, - { - "name": "fakerphp/faker", - "version": "v1.24.1", - "version_normalized": "1.24.1.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", - "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", - "shasum": "" - }, - "require": { - "php": "^7.4 || ^8.0", - "psr/container": "^1.0 || ^2.0", - "symfony/deprecation-contracts": "^2.2 || ^3.0" - }, - "conflict": { - "fzaninotto/faker": "*" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "doctrine/persistence": "^1.3 || ^2.0", - "ext-intl": "*", - "phpunit/phpunit": "^9.5.26", - "symfony/phpunit-bridge": "^5.4.16" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "time": "2024-11-21T13:46:39+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.24.1" - }, - "install-path": "../fakerphp/faker" - }, - { - "name": "filp/whoops", - "version": "2.16.0", - "version_normalized": "2.16.0.0", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "befcdc0e5dce67252aa6322d82424be928214fa2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/befcdc0e5dce67252aa6322d82424be928214fa2", - "reference": "befcdc0e5dce67252aa6322d82424be928214fa2", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.3", - "symfony/var-dumper": "^4.0 || ^5.0" - }, - "suggest": { - "symfony/var-dumper": "Pretty print complex values better with var-dumper available", - "whoops/soap": "Formats errors as SOAP responses" - }, - "time": "2024-09-25T12:00:00+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Whoops\\": "src/Whoops/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Filipe Dobreira", - "homepage": "https://github.com/filp", - "role": "Developer" - } - ], - "description": "php error handling for cool kids", - "homepage": "https://filp.github.io/whoops/", - "keywords": [ - "error", - "exception", - "handling", - "library", - "throwable", - "whoops" - ], - "support": { - "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.16.0" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "install-path": "../filp/whoops" - }, - { - "name": "fruitcake/php-cors", - "version": "v1.3.0", - "version_normalized": "1.3.0.0", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/php-cors.git", - "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/3d158f36e7875e2f040f37bc0573956240a5a38b", - "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b", - "shasum": "" - }, - "require": { - "php": "^7.4|^8.0", - "symfony/http-foundation": "^4.4|^5.4|^6|^7" - }, - "require-dev": { - "phpstan/phpstan": "^1.4", - "phpunit/phpunit": "^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "time": "2023-10-12T05:21:21+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barryvdh", - "email": "barryvdh@gmail.com" - } - ], - "description": "Cross-origin resource sharing library for the Symfony HttpFoundation", - "homepage": "https://github.com/fruitcake/php-cors", - "keywords": [ - "cors", - "laravel", - "symfony" - ], - "support": { - "issues": "https://github.com/fruitcake/php-cors/issues", - "source": "https://github.com/fruitcake/php-cors/tree/v1.3.0" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "install-path": "../fruitcake/php-cors" - }, - { - "name": "fx3costa/laravelchartjs", - "version": "3.0.0", - "version_normalized": "3.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/fxcosta/laravel-chartjs.git", - "reference": "255154a4a6b57fb146eba4fdedcef4d1fe075e68" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fxcosta/laravel-chartjs/zipball/255154a4a6b57fb146eba4fdedcef4d1fe075e68", - "reference": "255154a4a6b57fb146eba4fdedcef4d1fe075e68", - "shasum": "" - }, - "require": { - "illuminate/support": "^5.1|^6.0|^7.0|^8.0|^9.0|^10.0", - "php": ">=5.6.4" - }, - "time": "2023-02-23T12:23:49+00:00", - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Fx3costa\\LaravelChartJs\\Providers\\ChartjsServiceProvider" - ] - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Fx3costa\\LaravelChartJs\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Felix", - "email": "fx3costa@gmail.com" - } - ], - "description": "Simple package to facilitate and automate the use of charts in Laravel 5.x using Chartjs v2 library", - "keywords": [ - "chart", - "chartjs", - "fx3costa", - "graphics", - "laravel5", - "reports" - ], - "support": { - "issues": "https://github.com/fxcosta/laravel-chartjs/issues", - "source": "https://github.com/fxcosta/laravel-chartjs/tree/3.0.0" - }, - "install-path": "../fx3costa/laravelchartjs" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.1.3", - "version_normalized": "1.1.3.0", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "3ba905c11371512af9d9bdd27d99b782216b6945" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/3ba905c11371512af9d9bdd27d99b782216b6945", - "reference": "3ba905c11371512af9d9bdd27d99b782216b6945", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.3" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" - }, - "time": "2024-07-20T21:45:45+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "GrahamCampbell\\ResultType\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - } - ], - "description": "An Implementation Of The Result Type", - "keywords": [ - "Graham Campbell", - "GrahamCampbell", - "Result Type", - "Result-Type", - "result" - ], - "support": { - "issues": "https://github.com/GrahamCampbell/Result-Type/issues", - "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.3" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "install-path": "../graham-campbell/result-type" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.9.2", - "version_normalized": "7.9.2.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "d281ed313b989f213357e3be1a179f02196ac99b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/d281ed313b989f213357e3be1a179f02196ac99b", - "reference": "d281ed313b989f213357e3be1a179f02196ac99b", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5.3 || ^2.0.3", - "guzzlehttp/psr7": "^2.7.0", - "php": "^7.2.5 || ^8.0", - "psr/http-client": "^1.0", - "symfony/deprecation-contracts": "^2.2 || ^3.0" - }, - "provide": { - "psr/http-client-implementation": "1.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "ext-curl": "*", - "guzzle/client-integration-tests": "3.0.2", - "php-http/message-factory": "^1.1", - "phpunit/phpunit": "^8.5.39 || ^9.6.20", - "psr/log": "^1.1 || ^2.0 || ^3.0" - }, - "suggest": { - "ext-curl": "Required for CURL handler support", - "ext-intl": "Required for Internationalized Domain Name (IDN) support", - "psr/log": "Required for using the Log middleware" - }, - "time": "2024-07-24T11:22:20+00:00", - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "GuzzleHttp\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Jeremy Lindblom", - "email": "jeremeamia@gmail.com", - "homepage": "https://github.com/jeremeamia" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - } - ], - "description": "Guzzle is a PHP HTTP client library", - "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "psr-18", - "psr-7", - "rest", - "web service" - ], - "support": { - "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.9.2" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", - "type": "tidelift" - } - ], - "install-path": "../guzzlehttp/guzzle" - }, - { - "name": "guzzlehttp/promises", - "version": "2.0.4", - "version_normalized": "2.0.4.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/f9c436286ab2892c7db7be8c8da4ef61ccf7b455", - "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.39 || ^9.6.20" - }, - "time": "2024-10-17T10:06:22+00:00", - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - } - ], - "description": "Guzzle promises library", - "keywords": [ - "promise" - ], - "support": { - "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "install-path": "../guzzlehttp/promises" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.7.0", - "version_normalized": "2.7.0.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/a70f5c95fb43bc83f07c9c948baa0dc1829bf201", - "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.1 || ^2.0", - "ralouphie/getallheaders": "^3.0" - }, - "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "http-interop/http-factory-tests": "0.9.0", - "phpunit/phpunit": "^8.5.39 || ^9.6.20" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "time": "2024-07-18T11:15:46+00:00", - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://sagikazarmark.hu" - } - ], - "description": "PSR-7 message implementation that also provides common utility methods", - "keywords": [ - "http", - "message", - "psr-7", - "request", - "response", - "stream", - "uri", - "url" - ], - "support": { - "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.7.0" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", - "type": "tidelift" - } - ], - "install-path": "../guzzlehttp/psr7" - }, - { - "name": "guzzlehttp/uri-template", - "version": "v1.0.3", - "version_normalized": "1.0.3.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/uri-template.git", - "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/uri-template/zipball/ecea8feef63bd4fef1f037ecb288386999ecc11c", - "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "symfony/polyfill-php80": "^1.24" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.36 || ^9.6.15", - "uri-template/tests": "1.0.0" - }, - "time": "2023-12-03T19:50:20+00:00", - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "GuzzleHttp\\UriTemplate\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - } - ], - "description": "A polyfill class for uri_template of PHP", - "keywords": [ - "guzzlehttp", - "uri-template" - ], - "support": { - "issues": "https://github.com/guzzle/uri-template/issues", - "source": "https://github.com/guzzle/uri-template/tree/v1.0.3" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/uri-template", - "type": "tidelift" - } - ], - "install-path": "../guzzlehttp/uri-template" - }, - { - "name": "h4cc/wkhtmltoimage-amd64", - "version": "0.12.4", - "version_normalized": "0.12.4.0", - "source": { - "type": "git", - "url": "https://github.com/h4cc/wkhtmltoimage-amd64.git", - "reference": "c4e33f635207af89a704205b8902fb5715ca88be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/h4cc/wkhtmltoimage-amd64/zipball/c4e33f635207af89a704205b8902fb5715ca88be", - "reference": "c4e33f635207af89a704205b8902fb5715ca88be", - "shasum": "" - }, - "time": "2018-01-15T07:23:40+00:00", - "bin": [ - "bin/wkhtmltoimage-amd64" - ], - "type": "library", - "installation-source": "dist", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL Version 3" - ], - "authors": [ - { - "name": "Julius Beckmann", - "email": "github@h4cc.de" - } - ], - "description": "Convert html to image using webkit (qtwebkit). Static linked linux binary for amd64 systems.", - "homepage": "http://wkhtmltopdf.org/", - "keywords": [ - "binary", - "convert", - "image", - "snapshot", - "thumbnail", - "wkhtmltoimage" - ], - "support": { - "issues": "https://github.com/h4cc/wkhtmltoimage-amd64/issues", - "source": "https://github.com/h4cc/wkhtmltoimage-amd64/tree/master" - }, - "install-path": "../h4cc/wkhtmltoimage-amd64" - }, - { - "name": "h4cc/wkhtmltopdf-amd64", - "version": "0.12.4", - "version_normalized": "0.12.4.0", - "source": { - "type": "git", - "url": "https://github.com/h4cc/wkhtmltopdf-amd64.git", - "reference": "4e2ab2d032a5d7fbe2a741de8b10b8989523c95b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/h4cc/wkhtmltopdf-amd64/zipball/4e2ab2d032a5d7fbe2a741de8b10b8989523c95b", - "reference": "4e2ab2d032a5d7fbe2a741de8b10b8989523c95b", - "shasum": "" - }, - "time": "2018-01-15T06:57:33+00:00", - "bin": [ - "bin/wkhtmltopdf-amd64" - ], - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "h4cc\\WKHTMLToPDF\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL Version 3" - ], - "authors": [ - { - "name": "Julius Beckmann", - "email": "github@h4cc.de" - } - ], - "description": "Convert html to pdf using webkit (qtwebkit). Static linked linux binary for amd64 systems.", - "homepage": "http://wkhtmltopdf.org/", - "keywords": [ - "binary", - "convert", - "pdf", - "snapshot", - "thumbnail", - "wkhtmltopdf" - ], - "support": { - "issues": "https://github.com/h4cc/wkhtmltopdf-amd64/issues", - "source": "https://github.com/h4cc/wkhtmltopdf-amd64/tree/master" - }, - "install-path": "../h4cc/wkhtmltopdf-amd64" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "version_normalized": "2.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "time": "2020-07-09T08:09:16+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "install-path": "../hamcrest/hamcrest-php" - }, - { - "name": "knplabs/knp-snappy", - "version": "v1.5.1", - "version_normalized": "1.5.1.0", - "source": { - "type": "git", - "url": "https://github.com/KnpLabs/snappy.git", - "reference": "3dd138e9e47de91cd2e056c5e6e1a0dd72547ee7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/KnpLabs/snappy/zipball/3dd138e9e47de91cd2e056c5e6e1a0dd72547ee7", - "reference": "3dd138e9e47de91cd2e056c5e6e1a0dd72547ee7", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/log": "^2.0||^3.0", - "symfony/process": "^5.0||^6.0||^7.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.0", - "pedrotroller/php-cs-custom-fixer": "^2.19", - "phpstan/phpstan": "^1.0.0", - "phpstan/phpstan-phpunit": "^1.0.0", - "phpunit/phpunit": "^8.5" - }, - "time": "2025-01-06T16:53:26+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Knp\\Snappy\\": "src/Knp/Snappy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "KNP Labs Team", - "homepage": "http://knplabs.com" - }, - { - "name": "Symfony Community", - "homepage": "http://github.com/KnpLabs/snappy/contributors" - } - ], - "description": "PHP library allowing thumbnail, snapshot or PDF generation from a url or a html page. Wrapper for wkhtmltopdf/wkhtmltoimage.", - "homepage": "http://github.com/KnpLabs/snappy", - "keywords": [ - "knp", - "knplabs", - "pdf", - "snapshot", - "thumbnail", - "wkhtmltopdf" - ], - "support": { - "issues": "https://github.com/KnpLabs/snappy/issues", - "source": "https://github.com/KnpLabs/snappy/tree/v1.5.1" - }, - "install-path": "../knplabs/knp-snappy" - }, - { - "name": "laracasts/flash", - "version": "3.2.3", - "version_normalized": "3.2.3.0", - "source": { - "type": "git", - "url": "https://github.com/laracasts/flash.git", - "reference": "c2c4be1132f1bec3a689e84417a1c5787e6c71fd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laracasts/flash/zipball/c2c4be1132f1bec3a689e84417a1c5787e6c71fd", - "reference": "c2c4be1132f1bec3a689e84417a1c5787e6c71fd", - "shasum": "" - }, - "require": { - "illuminate/support": "~5.0|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", - "php": ">=5.4.0" - }, - "require-dev": { - "mockery/mockery": "dev-master", - "phpunit/phpunit": "^6.1|^9.5.10|^10.5" - }, - "time": "2024-03-03T16:51:25+00:00", - "type": "library", - "extra": { - "laravel": { - "aliases": { - "Flash": "Laracasts\\Flash\\Flash" - }, - "providers": [ - "Laracasts\\Flash\\FlashServiceProvider" - ] - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "src/Laracasts/Flash/functions.php" - ], - "psr-0": { - "Laracasts\\Flash": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jeffrey Way", - "email": "jeffrey@laracasts.com" - } - ], - "description": "Easy flash notifications", - "support": { - "source": "https://github.com/laracasts/flash/tree/3.2.3" - }, - "install-path": "../laracasts/flash" - }, - { - "name": "larastan/larastan", - "version": "v2.9.12", - "version_normalized": "2.9.12.0", - "source": { - "type": "git", - "url": "https://github.com/larastan/larastan.git", - "reference": "19012b39fbe4dede43dbe0c126d9681827a5e908" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/larastan/larastan/zipball/19012b39fbe4dede43dbe0c126d9681827a5e908", - "reference": "19012b39fbe4dede43dbe0c126d9681827a5e908", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/console": "^9.52.16 || ^10.28.0 || ^11.16", - "illuminate/container": "^9.52.16 || ^10.28.0 || ^11.16", - "illuminate/contracts": "^9.52.16 || ^10.28.0 || ^11.16", - "illuminate/database": "^9.52.16 || ^10.28.0 || ^11.16", - "illuminate/http": "^9.52.16 || ^10.28.0 || ^11.16", - "illuminate/pipeline": "^9.52.16 || ^10.28.0 || ^11.16", - "illuminate/support": "^9.52.16 || ^10.28.0 || ^11.16", - "php": "^8.0.2", - "phpmyadmin/sql-parser": "^5.9.0", - "phpstan/phpstan": "^1.12.11" - }, - "require-dev": { - "doctrine/coding-standard": "^12.0", - "laravel/framework": "^9.52.16 || ^10.28.0 || ^11.16", - "mockery/mockery": "^1.5.1", - "nikic/php-parser": "^4.19.1", - "orchestra/canvas": "^7.11.1 || ^8.11.0 || ^9.0.2", - "orchestra/testbench-core": "^7.33.0 || ^8.13.0 || ^9.0.9", - "phpstan/phpstan-deprecation-rules": "^1.2", - "phpunit/phpunit": "^9.6.13 || ^10.5.16" - }, - "suggest": { - "orchestra/testbench": "Using Larastan for analysing a package needs Testbench" - }, - "time": "2024-11-26T23:09:02+00:00", - "type": "phpstan-extension", - "extra": { - "phpstan": { - "includes": [ - "extension.neon" - ] - }, - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Larastan\\Larastan\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Can Vural", - "email": "can9119@gmail.com" - }, - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - } - ], - "description": "Larastan - Discover bugs in your code without running it. A phpstan/phpstan extension for Laravel", - "keywords": [ - "PHPStan", - "code analyse", - "code analysis", - "larastan", - "laravel", - "package", - "php", - "static analysis" - ], - "support": { - "issues": "https://github.com/larastan/larastan/issues", - "source": "https://github.com/larastan/larastan/tree/v2.9.12" - }, - "funding": [ - { - "url": "https://github.com/canvural", - "type": "github" - } - ], - "install-path": "../larastan/larastan" - }, - { - "name": "laravel/framework", - "version": "v10.48.25", - "version_normalized": "10.48.25.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "f132b23b13909cc22c615c01b0c5640541c3da0c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/f132b23b13909cc22c615c01b0c5640541c3da0c", - "reference": "f132b23b13909cc22c615c01b0c5640541c3da0c", - "shasum": "" - }, - "require": { - "brick/math": "^0.9.3|^0.10.2|^0.11|^0.12", - "composer-runtime-api": "^2.2", - "doctrine/inflector": "^2.0.5", - "dragonmantank/cron-expression": "^3.3.2", - "egulias/email-validator": "^3.2.1|^4.0", - "ext-ctype": "*", - "ext-filter": "*", - "ext-hash": "*", - "ext-mbstring": "*", - "ext-openssl": "*", - "ext-session": "*", - "ext-tokenizer": "*", - "fruitcake/php-cors": "^1.2", - "guzzlehttp/uri-template": "^1.0", - "laravel/prompts": "^0.1.9", - "laravel/serializable-closure": "^1.3", - "league/commonmark": "^2.2.1", - "league/flysystem": "^3.8.0", - "monolog/monolog": "^3.0", - "nesbot/carbon": "^2.67", - "nunomaduro/termwind": "^1.13", - "php": "^8.1", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.7", - "symfony/console": "^6.2", - "symfony/error-handler": "^6.2", - "symfony/finder": "^6.2", - "symfony/http-foundation": "^6.4", - "symfony/http-kernel": "^6.2", - "symfony/mailer": "^6.2", - "symfony/mime": "^6.2", - "symfony/process": "^6.2", - "symfony/routing": "^6.2", - "symfony/uid": "^6.2", - "symfony/var-dumper": "^6.2", - "tijsverkoyen/css-to-inline-styles": "^2.2.5", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "carbonphp/carbon-doctrine-types": ">=3.0", - "doctrine/dbal": ">=4.0", - "mockery/mockery": "1.6.8", - "phpunit/phpunit": ">=11.0.0", - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/process": "self.version", - "illuminate/queue": "self.version", - "illuminate/redis": "self.version", - "illuminate/routing": "self.version", - "illuminate/session": "self.version", - "illuminate/support": "self.version", - "illuminate/testing": "self.version", - "illuminate/translation": "self.version", - "illuminate/validation": "self.version", - "illuminate/view": "self.version" - }, - "require-dev": { - "ably/ably-php": "^1.0", - "aws/aws-sdk-php": "^3.235.5", - "doctrine/dbal": "^3.5.1", - "ext-gmp": "*", - "fakerphp/faker": "^1.21", - "guzzlehttp/guzzle": "^7.5", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-path-prefixing": "^3.3", - "league/flysystem-read-only": "^3.3", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.5.1", - "nyholm/psr7": "^1.2", - "orchestra/testbench-core": "^8.23.4", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "~1.11.11", - "phpunit/phpunit": "^10.0.7", - "predis/predis": "^2.0.2", - "symfony/cache": "^6.2", - "symfony/http-client": "^6.2.4", - "symfony/psr-http-message-bridge": "^2.0" - }, - "suggest": { - "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", - "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.235.5).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^3.5.1).", - "ext-apcu": "Required to use the APC cache driver.", - "ext-fileinfo": "Required to use the Filesystem class.", - "ext-ftp": "Required to use the Flysystem FTP driver.", - "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", - "ext-memcached": "Required to use the memcache cache driver.", - "ext-pcntl": "Required to use all features of the queue worker and console signal trapping.", - "ext-pdo": "Required to use all database features.", - "ext-posix": "Required to use all features of the queue worker.", - "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", - "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", - "filp/whoops": "Required for friendly error pages in development (^2.14.3).", - "guzzlehttp/guzzle": "Required to use the HTTP Client and the ping methods on schedules (^7.5).", - "laravel/tinker": "Required to use the tinker console command (^2.0).", - "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.0).", - "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.0).", - "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.3).", - "league/flysystem-read-only": "Required to use read-only disks (^3.3)", - "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.5.1).", - "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", - "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", - "phpunit/phpunit": "Required to use assertions and run tests (^9.5.8|^10.0.7).", - "predis/predis": "Required to use the predis connector (^2.0.2).", - "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", - "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).", - "symfony/cache": "Required to PSR-6 cache bridge (^6.2).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.2).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.2).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.2).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.2).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "time": "2024-11-26T15:32:57+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "10.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Filesystem/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "install-path": "../laravel/framework" - }, - { - "name": "laravel/helpers", - "version": "v1.7.1", - "version_normalized": "1.7.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/helpers.git", - "reference": "f28907033d7edf8a0525cfb781ab30ce6d531c35" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/helpers/zipball/f28907033d7edf8a0525cfb781ab30ce6d531c35", - "reference": "f28907033d7edf8a0525cfb781ab30ce6d531c35", - "shasum": "" - }, - "require": { - "illuminate/support": "~5.8.0|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", - "php": "^7.2.0|^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^7.0|^8.0|^9.0|^10.0" - }, - "time": "2024-11-26T14:56:25+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "src/helpers.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - }, - { - "name": "Dries Vints", - "email": "dries@laravel.com" - } - ], - "description": "Provides backwards compatibility for helpers in the latest Laravel release.", - "keywords": [ - "helpers", - "laravel" - ], - "support": { - "source": "https://github.com/laravel/helpers/tree/v1.7.1" - }, - "install-path": "../laravel/helpers" - }, - { - "name": "laravel/prompts", - "version": "v0.1.25", - "version_normalized": "0.1.25.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/prompts.git", - "reference": "7b4029a84c37cb2725fc7f011586e2997040bc95" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/7b4029a84c37cb2725fc7f011586e2997040bc95", - "reference": "7b4029a84c37cb2725fc7f011586e2997040bc95", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "illuminate/collections": "^10.0|^11.0", - "php": "^8.1", - "symfony/console": "^6.2|^7.0" - }, - "conflict": { - "illuminate/console": ">=10.17.0 <10.25.0", - "laravel/framework": ">=10.17.0 <10.25.0" - }, - "require-dev": { - "mockery/mockery": "^1.5", - "pestphp/pest": "^2.3", - "phpstan/phpstan": "^1.11", - "phpstan/phpstan-mockery": "^1.1" - }, - "suggest": { - "ext-pcntl": "Required for the spinner to be animated." - }, - "time": "2024-08-12T22:06:33+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.1.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "src/helpers.php" - ], - "psr-4": { - "Laravel\\Prompts\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Add beautiful and user-friendly forms to your command-line applications.", - "support": { - "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.1.25" - }, - "install-path": "../laravel/prompts" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.3.7", - "version_normalized": "1.3.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "4f48ade902b94323ca3be7646db16209ec76be3d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/4f48ade902b94323ca3be7646db16209ec76be3d", - "reference": "4f48ade902b94323ca3be7646db16209ec76be3d", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "illuminate/support": "^8.0|^9.0|^10.0|^11.0", - "nesbot/carbon": "^2.61|^3.0", - "pestphp/pest": "^1.21.3", - "phpstan/phpstan": "^1.8.2", - "symfony/var-dumper": "^5.4.11|^6.2.0|^7.0.0" - }, - "time": "2024-11-14T18:34:49+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Laravel\\SerializableClosure\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - }, - { - "name": "Nuno Maduro", - "email": "nuno@laravel.com" - } - ], - "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", - "keywords": [ - "closure", - "laravel", - "serializable" - ], - "support": { - "issues": "https://github.com/laravel/serializable-closure/issues", - "source": "https://github.com/laravel/serializable-closure" - }, - "install-path": "../laravel/serializable-closure" - }, - { - "name": "laravel/tinker", - "version": "v2.10.0", - "version_normalized": "2.10.0.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "ba4d51eb56de7711b3a37d63aa0643e99a339ae5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/ba4d51eb56de7711b3a37d63aa0643e99a339ae5", - "reference": "ba4d51eb56de7711b3a37d63aa0643e99a339ae5", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", - "php": "^7.2.5|^8.0", - "psy/psysh": "^0.11.1|^0.12.0", - "symfony/var-dumper": "^4.3.4|^5.0|^6.0|^7.0" - }, - "require-dev": { - "mockery/mockery": "~1.3.3|^1.4.2", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0|^11.0)." - }, - "time": "2024-09-23T13:32:56+00:00", - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Laravel\\Tinker\\TinkerServiceProvider" - ] - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Laravel\\Tinker\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Powerful REPL for the Laravel framework.", - "keywords": [ - "REPL", - "Tinker", - "laravel", - "psysh" - ], - "support": { - "issues": "https://github.com/laravel/tinker/issues", - "source": "https://github.com/laravel/tinker/tree/v2.10.0" - }, - "install-path": "../laravel/tinker" - }, - { - "name": "laravel/ui", - "version": "v4.6.0", - "version_normalized": "4.6.0.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/ui.git", - "reference": "a34609b15ae0c0512a0cf47a21695a2729cb7f93" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/ui/zipball/a34609b15ae0c0512a0cf47a21695a2729cb7f93", - "reference": "a34609b15ae0c0512a0cf47a21695a2729cb7f93", - "shasum": "" - }, - "require": { - "illuminate/console": "^9.21|^10.0|^11.0", - "illuminate/filesystem": "^9.21|^10.0|^11.0", - "illuminate/support": "^9.21|^10.0|^11.0", - "illuminate/validation": "^9.21|^10.0|^11.0", - "php": "^8.0", - "symfony/console": "^6.0|^7.0" - }, - "require-dev": { - "orchestra/testbench": "^7.35|^8.15|^9.0", - "phpunit/phpunit": "^9.3|^10.4|^11.0" - }, - "time": "2024-11-21T15:06:41+00:00", - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Laravel\\Ui\\UiServiceProvider" - ] - }, - "branch-alias": { - "dev-master": "4.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Laravel\\Ui\\": "src/", - "Illuminate\\Foundation\\Auth\\": "auth-backend/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Laravel UI utilities and presets.", - "keywords": [ - "laravel", - "ui" - ], - "support": { - "source": "https://github.com/laravel/ui/tree/v4.6.0" - }, - "install-path": "../laravel/ui" - }, - { - "name": "laravelcollective/html", - "version": "v6.4.1", - "version_normalized": "6.4.1.0", - "source": { - "type": "git", - "url": "https://github.com/LaravelCollective/html.git", - "reference": "64ddfdcaeeb8d332bd98bef442bef81e39c3910b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/LaravelCollective/html/zipball/64ddfdcaeeb8d332bd98bef442bef81e39c3910b", - "reference": "64ddfdcaeeb8d332bd98bef442bef81e39c3910b", - "shasum": "" - }, - "require": { - "illuminate/http": "^6.0|^7.0|^8.0|^9.0|^10.0", - "illuminate/routing": "^6.0|^7.0|^8.0|^9.0|^10.0", - "illuminate/session": "^6.0|^7.0|^8.0|^9.0|^10.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0", - "illuminate/view": "^6.0|^7.0|^8.0|^9.0|^10.0", - "php": ">=7.2.5" - }, - "require-dev": { - "illuminate/database": "^6.0|^7.0|^8.0|^9.0|^10.0", - "mockery/mockery": "~1.0", - "phpunit/phpunit": "~8.5|^9.5.10" - }, - "time": "2023-04-25T02:46:11+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.x-dev" - }, - "laravel": { - "providers": [ - "Collective\\Html\\HtmlServiceProvider" - ], - "aliases": { - "Form": "Collective\\Html\\FormFacade", - "Html": "Collective\\Html\\HtmlFacade" - } - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "src/helpers.php" - ], - "psr-4": { - "Collective\\Html\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Adam Engebretson", - "email": "adam@laravelcollective.com" - }, - { - "name": "Taylor Otwell", - "email": "taylorotwell@gmail.com" - } - ], - "description": "HTML and Form Builders for the Laravel Framework", - "homepage": "https://laravelcollective.com", - "support": { - "issues": "https://github.com/LaravelCollective/html/issues", - "source": "https://github.com/LaravelCollective/html" - }, - "abandoned": "spatie/laravel-html", - "install-path": "../laravelcollective/html" - }, - { - "name": "league/commonmark", - "version": "2.6.1", - "version_normalized": "2.6.1.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "d990688c91cedfb69753ffc2512727ec646df2ad" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/d990688c91cedfb69753ffc2512727ec646df2ad", - "reference": "d990688c91cedfb69753ffc2512727ec646df2ad", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "league/config": "^1.1.1", - "php": "^7.4 || ^8.0", - "psr/event-dispatcher": "^1.0", - "symfony/deprecation-contracts": "^2.1 || ^3.0", - "symfony/polyfill-php80": "^1.16" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.31.1", - "commonmark/commonmark.js": "0.31.1", - "composer/package-versions-deprecated": "^1.8", - "embed/embed": "^4.4", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4 || ^2.0", - "nyholm/psr7": "^1.5", - "phpstan/phpstan": "^1.8.2", - "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3 | ^6.0 | ^7.0", - "symfony/process": "^5.4 | ^6.0 | ^7.0", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 | ^7.0", - "unleashedtech/php-coding-standard": "^3.1.1", - "vimeo/psalm": "^4.24.0 || ^5.0.0" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "time": "2024-12-29T14:10:59+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.7-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "League\\CommonMark\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Colin O'Dell", - "email": "colinodell@gmail.com", - "homepage": "https://www.colinodell.com", - "role": "Lead Developer" - } - ], - "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)", - "homepage": "https://commonmark.thephpleague.com", - "keywords": [ - "commonmark", - "flavored", - "gfm", - "github", - "github-flavored", - "markdown", - "md", - "parser" - ], - "support": { - "docs": "https://commonmark.thephpleague.com/", - "forum": "https://github.com/thephpleague/commonmark/discussions", - "issues": "https://github.com/thephpleague/commonmark/issues", - "rss": "https://github.com/thephpleague/commonmark/releases.atom", - "source": "https://github.com/thephpleague/commonmark" - }, - "funding": [ - { - "url": "https://www.colinodell.com/sponsor", - "type": "custom" - }, - { - "url": "https://www.paypal.me/colinpodell/10.00", - "type": "custom" - }, - { - "url": "https://github.com/colinodell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/commonmark", - "type": "tidelift" - } - ], - "install-path": "../league/commonmark" - }, - { - "name": "league/config", - "version": "v1.2.0", - "version_normalized": "1.2.0.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", - "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.8.2", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "time": "2022-12-11T20:36:23+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.2-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "League\\Config\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Colin O'Dell", - "email": "colinodell@gmail.com", - "homepage": "https://www.colinodell.com", - "role": "Lead Developer" - } - ], - "description": "Define configuration arrays with strict schemas and access values with dot notation", - "homepage": "https://config.thephpleague.com", - "keywords": [ - "array", - "config", - "configuration", - "dot", - "dot-access", - "nested", - "schema" - ], - "support": { - "docs": "https://config.thephpleague.com/", - "issues": "https://github.com/thephpleague/config/issues", - "rss": "https://github.com/thephpleague/config/releases.atom", - "source": "https://github.com/thephpleague/config" - }, - "funding": [ - { - "url": "https://www.colinodell.com/sponsor", - "type": "custom" - }, - { - "url": "https://www.paypal.me/colinpodell/10.00", - "type": "custom" - }, - { - "url": "https://github.com/colinodell", - "type": "github" - } - ], - "install-path": "../league/config" - }, - { - "name": "league/flysystem", - "version": "3.29.1", - "version_normalized": "3.29.1.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "edc1bb7c86fab0776c3287dbd19b5fa278347319" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/edc1bb7c86fab0776c3287dbd19b5fa278347319", - "reference": "edc1bb7c86fab0776c3287dbd19b5fa278347319", - "shasum": "" - }, - "require": { - "league/flysystem-local": "^3.0.0", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "async-aws/core": "<1.19.0", - "async-aws/s3": "<1.14.0", - "aws/aws-sdk-php": "3.209.31 || 3.210.0", - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "phpseclib/phpseclib": "3.0.15", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5 || ^2.0", - "async-aws/simple-s3": "^1.1 || ^2.0", - "aws/aws-sdk-php": "^3.295.10", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-mongodb": "^1.3", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "guzzlehttp/psr7": "^2.6", - "microsoft/azure-storage-blob": "^1.1", - "mongodb/mongodb": "^1.2", - "phpseclib/phpseclib": "^3.0.36", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^9.5.11|^10.0", - "sabre/dav": "^4.6.0" - }, - "time": "2024-10-08T08:58:34+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "League\\Flysystem\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Frank de Jonge", - "email": "info@frankdejonge.nl" - } - ], - "description": "File storage abstraction for PHP", - "keywords": [ - "WebDAV", - "aws", - "cloud", - "file", - "files", - "filesystem", - "filesystems", - "ftp", - "s3", - "sftp", - "storage" - ], - "support": { - "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.29.1" - }, - "install-path": "../league/flysystem" - }, - { - "name": "league/flysystem-local", - "version": "3.29.0", - "version_normalized": "3.29.0.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem-local.git", - "reference": "e0e8d52ce4b2ed154148453d321e97c8e931bd27" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/e0e8d52ce4b2ed154148453d321e97c8e931bd27", - "reference": "e0e8d52ce4b2ed154148453d321e97c8e931bd27", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "league/flysystem": "^3.0.0", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "time": "2024-08-09T21:24:39+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "League\\Flysystem\\Local\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Frank de Jonge", - "email": "info@frankdejonge.nl" - } - ], - "description": "Local filesystem adapter for Flysystem.", - "keywords": [ - "Flysystem", - "file", - "files", - "filesystem", - "local" - ], - "support": { - "source": "https://github.com/thephpleague/flysystem-local/tree/3.29.0" - }, - "install-path": "../league/flysystem-local" - }, - { - "name": "league/mime-type-detection", - "version": "1.16.0", - "version_normalized": "1.16.0.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "2d6702ff215bf922936ccc1ad31007edc76451b9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/2d6702ff215bf922936ccc1ad31007edc76451b9", - "reference": "2d6702ff215bf922936ccc1ad31007edc76451b9", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0" - }, - "time": "2024-09-21T08:32:55+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "League\\MimeTypeDetection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Frank de Jonge", - "email": "info@frankdejonge.nl" - } - ], - "description": "Mime-type detection for Flysystem", - "support": { - "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.16.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "install-path": "../league/mime-type-detection" - }, - { - "name": "masterminds/html5", - "version": "2.9.0", - "version_normalized": "2.9.0.0", - "source": { - "type": "git", - "url": "https://github.com/Masterminds/html5-php.git", - "reference": "f5ac2c0b0a2eefca70b2ce32a5809992227e75a6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f5ac2c0b0a2eefca70b2ce32a5809992227e75a6", - "reference": "f5ac2c0b0a2eefca70b2ce32a5809992227e75a6", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8 || ^9" - }, - "time": "2024-03-31T07:05:07+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Masterminds\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Matt Butcher", - "email": "technosophos@gmail.com" - }, - { - "name": "Matt Farina", - "email": "matt@mattfarina.com" - }, - { - "name": "Asmir Mustafic", - "email": "goetas@gmail.com" - } - ], - "description": "An HTML5 parser and serializer.", - "homepage": "http://masterminds.github.io/html5-php", - "keywords": [ - "HTML5", - "dom", - "html", - "parser", - "querypath", - "serializer", - "xml" - ], - "support": { - "issues": "https://github.com/Masterminds/html5-php/issues", - "source": "https://github.com/Masterminds/html5-php/tree/2.9.0" - }, - "install-path": "../masterminds/html5" - }, - { - "name": "milon/barcode", - "version": "v10.0.1", - "version_normalized": "10.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/milon/barcode.git", - "reference": "e643a713466f0109aa3ad7d29dae4900444187a5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/milon/barcode/zipball/e643a713466f0109aa3ad7d29dae4900444187a5", - "reference": "e643a713466f0109aa3ad7d29dae4900444187a5", - "shasum": "" - }, - "require": { - "illuminate/support": "^7.0|^8.0|^9.0|^10.0", - "php": "^7.3 | ^8.0" - }, - "time": "2023-06-16T13:03:37+00:00", - "type": "library", - "extra": { - "laravel": { - "aliases": { - "DNS1D": "Milon\\Barcode\\Facades\\DNS1DFacade", - "DNS2D": "Milon\\Barcode\\Facades\\DNS2DFacade" - }, - "providers": [ - "Milon\\Barcode\\BarcodeServiceProvider" - ] - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "Milon\\Barcode": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0" - ], - "authors": [ - { - "name": "Nuruzzaman Milon", - "email": "contact@milon.im" - } - ], - "description": "Barcode generator like Qr Code, PDF417, C39, C39+, C39E, C39E+, C93, S25, S25+, I25, I25+, C128, C128A, C128B, C128C, 2-Digits UPC-Based Extention, 5-Digits UPC-Based Extention, EAN 8, EAN 13, UPC-A, UPC-E, MSI (Variation of Plessey code)", - "keywords": [ - "CODABAR", - "CODE 128", - "CODE 39", - "barcode", - "datamatrix", - "ean", - "laravel", - "pdf417", - "qr code", - "qrcode" - ], - "support": { - "issues": "https://github.com/milon/barcode/issues", - "source": "https://github.com/milon/barcode/tree/v10.0.1" - }, - "funding": [ - { - "url": "https://paypal.me/nuruzzamanmilon", - "type": "custom" - }, - { - "url": "https://github.com/milon", - "type": "github" - } - ], - "install-path": "../milon/barcode" - }, - { - "name": "mockery/mockery", - "version": "1.6.12", - "version_normalized": "1.6.12.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/1f4efdd7d3beafe9807b08156dfcb176d18f1699", - "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": ">=7.3" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.6.17", - "symplify/easy-coding-standard": "^12.1.14" - }, - "time": "2024-05-16T03:13:13+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "library/helpers.php", - "library/Mockery.php" - ], - "psr-4": { - "Mockery\\": "library/Mockery" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "https://github.com/padraic", - "role": "Author" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "https://davedevelopment.co.uk", - "role": "Developer" - }, - { - "name": "Nathanael Esayeas", - "email": "nathanael.esayeas@protonmail.com", - "homepage": "https://github.com/ghostwriter", - "role": "Lead Developer" - } - ], - "description": "Mockery is a simple yet flexible PHP mock object framework", - "homepage": "https://github.com/mockery/mockery", - "keywords": [ - "BDD", - "TDD", - "library", - "mock", - "mock objects", - "mockery", - "stub", - "test", - "test double", - "testing" - ], - "support": { - "docs": "https://docs.mockery.io/", - "issues": "https://github.com/mockery/mockery/issues", - "rss": "https://github.com/mockery/mockery/releases.atom", - "security": "https://github.com/mockery/mockery/security/advisories", - "source": "https://github.com/mockery/mockery" - }, - "install-path": "../mockery/mockery" - }, - { - "name": "monolog/monolog", - "version": "3.8.1", - "version_normalized": "3.8.1.0", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "aef6ee73a77a66e404dd6540934a9ef1b3c855b4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/aef6ee73a77a66e404dd6540934a9ef1b3c855b4", - "reference": "aef6ee73a77a66e404dd6540934a9ef1b3c855b4", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/log": "^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7 || ^8", - "ext-json": "*", - "graylog2/gelf-php": "^1.4.2 || ^2.0", - "guzzlehttp/guzzle": "^7.4.5", - "guzzlehttp/psr7": "^2.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.8", - "phpstan/phpstan": "^2", - "phpstan/phpstan-deprecation-rules": "^2", - "phpstan/phpstan-strict-rules": "^2", - "phpunit/phpunit": "^10.5.17 || ^11.0.7", - "predis/predis": "^1.1 || ^2", - "rollbar/rollbar": "^4.0", - "ruflin/elastica": "^7 || ^8", - "symfony/mailer": "^5.4 || ^6", - "symfony/mime": "^5.4 || ^6" - }, - "suggest": { - "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", - "doctrine/couchdb": "Allow sending log messages to a CouchDB server", - "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", - "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", - "ext-mbstring": "Allow to work properly with unicode symbols", - "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", - "ext-openssl": "Required to send log messages using SSL", - "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", - "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", - "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server" - }, - "time": "2024-12-05T17:15:07+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Monolog\\": "src/Monolog" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "https://seld.be" - } - ], - "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "https://github.com/Seldaek/monolog", - "keywords": [ - "log", - "logging", - "psr-3" - ], - "support": { - "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.8.1" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "install-path": "../monolog/monolog" - }, - { - "name": "myclabs/deep-copy", - "version": "1.12.1", - "version_normalized": "1.12.1.0", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/123267b2c49fbf30d78a7b2d333f6be754b94845", - "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "conflict": { - "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3 <3.2.2" - }, - "require-dev": { - "doctrine/collections": "^1.6.8", - "doctrine/common": "^2.13.3 || ^3.2.2", - "phpspec/prophecy": "^1.10", - "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" - }, - "time": "2024-11-08T17:47:46+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "src/DeepCopy/deep_copy.php" - ], - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.12.1" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "install-path": "../myclabs/deep-copy" - }, - { - "name": "nesbot/carbon", - "version": "2.72.6", - "version_normalized": "2.72.6.0", - "source": { - "type": "git", - "url": "https://github.com/CarbonPHP/carbon.git", - "reference": "1e9d50601e7035a4c61441a208cb5bed73e108c5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/1e9d50601e7035a4c61441a208cb5bed73e108c5", - "reference": "1e9d50601e7035a4c61441a208cb5bed73e108c5", - "shasum": "" - }, - "require": { - "carbonphp/carbon-doctrine-types": "*", - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "psr/clock": "^1.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "provide": { - "psr/clock-implementation": "1.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.1.4 || ^4.0", - "doctrine/orm": "^2.7 || ^3.0", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "ondrejmirtes/better-reflection": "<6", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.99 || ^1.7.14", - "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6", - "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", - "squizlabs/php_codesniffer": "^3.4" - }, - "time": "2024-12-27T09:28:11+00:00", - "bin": [ - "bin/carbon" - ], - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Carbon\\Laravel\\ServiceProvider" - ] - }, - "phpstan": { - "includes": [ - "extension.neon" - ] - }, - "branch-alias": { - "dev-2.x": "2.x-dev", - "dev-master": "3.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Carbon\\": "src/Carbon/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Brian Nesbitt", - "email": "brian@nesbot.com", - "homepage": "https://markido.com" - }, - { - "name": "kylekatarnls", - "homepage": "https://github.com/kylekatarnls" - } - ], - "description": "An API extension for DateTime that supports 281 different languages.", - "homepage": "https://carbon.nesbot.com", - "keywords": [ - "date", - "datetime", - "time" - ], - "support": { - "docs": "https://carbon.nesbot.com/docs", - "issues": "https://github.com/briannesbitt/Carbon/issues", - "source": "https://github.com/briannesbitt/Carbon" - }, - "funding": [ - { - "url": "https://github.com/sponsors/kylekatarnls", - "type": "github" - }, - { - "url": "https://opencollective.com/Carbon#sponsor", - "type": "opencollective" - }, - { - "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", - "type": "tidelift" - } - ], - "install-path": "../nesbot/carbon" - }, - { - "name": "nette/schema", - "version": "v1.3.2", - "version_normalized": "1.3.2.0", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "da801d52f0354f70a638673c4a0f04e16529431d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/da801d52f0354f70a638673c4a0f04e16529431d", - "reference": "da801d52f0354f70a638673c4a0f04e16529431d", - "shasum": "" - }, - "require": { - "nette/utils": "^4.0", - "php": "8.1 - 8.4" - }, - "require-dev": { - "nette/tester": "^2.5.2", - "phpstan/phpstan-nette": "^1.0", - "tracy/tracy": "^2.8" - }, - "time": "2024-10-06T23:10:23+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0-only", - "GPL-3.0-only" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "📐 Nette Schema: validating data structures against a given Schema.", - "homepage": "https://nette.org", - "keywords": [ - "config", - "nette" - ], - "support": { - "issues": "https://github.com/nette/schema/issues", - "source": "https://github.com/nette/schema/tree/v1.3.2" - }, - "install-path": "../nette/schema" - }, - { - "name": "nette/utils", - "version": "v4.0.5", - "version_normalized": "4.0.5.0", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "736c567e257dbe0fcf6ce81b4d6dbe05c6899f96" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/736c567e257dbe0fcf6ce81b4d6dbe05c6899f96", - "reference": "736c567e257dbe0fcf6ce81b4d6dbe05c6899f96", - "shasum": "" - }, - "require": { - "php": "8.0 - 8.4" - }, - "conflict": { - "nette/finder": "<3", - "nette/schema": "<1.2.2" - }, - "require-dev": { - "jetbrains/phpstorm-attributes": "dev-master", - "nette/tester": "^2.5", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.9" - }, - "suggest": { - "ext-gd": "to use Image", - "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", - "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", - "ext-json": "to use Nette\\Utils\\Json", - "ext-mbstring": "to use Strings::lower() etc...", - "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()" - }, - "time": "2024-08-07T15:39:19+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0-only", - "GPL-3.0-only" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", - "homepage": "https://nette.org", - "keywords": [ - "array", - "core", - "datetime", - "images", - "json", - "nette", - "paginator", - "password", - "slugify", - "string", - "unicode", - "utf-8", - "utility", - "validation" - ], - "support": { - "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.5" - }, - "install-path": "../nette/utils" - }, - { - "name": "nikic/php-parser", - "version": "v5.4.0", - "version_normalized": "5.4.0.0", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "447a020a1f875a434d62f2a401f53b82a396e494" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/447a020a1f875a434d62f2a401f53b82a396e494", - "reference": "447a020a1f875a434d62f2a401f53b82a396e494", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "ext-json": "*", - "ext-tokenizer": "*", - "php": ">=7.4" - }, - "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^9.0" - }, - "time": "2024-12-30T11:07:19+00:00", - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.4.0" - }, - "install-path": "../nikic/php-parser" - }, - { - "name": "nunomaduro/termwind", - "version": "v1.17.0", - "version_normalized": "1.17.0.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/termwind.git", - "reference": "5369ef84d8142c1d87e4ec278711d4ece3cbf301" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/5369ef84d8142c1d87e4ec278711d4ece3cbf301", - "reference": "5369ef84d8142c1d87e4ec278711d4ece3cbf301", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": "^8.1", - "symfony/console": "^6.4.15" - }, - "require-dev": { - "illuminate/console": "^10.48.24", - "illuminate/support": "^10.48.24", - "laravel/pint": "^1.18.2", - "pestphp/pest": "^2.36.0", - "pestphp/pest-plugin-mock": "2.0.0", - "phpstan/phpstan": "^1.12.11", - "phpstan/phpstan-strict-rules": "^1.6.1", - "symfony/var-dumper": "^6.4.15", - "thecodingmachine/phpstan-strict-rules": "^1.0.0" - }, - "time": "2024-11-21T10:36:35+00:00", - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Termwind\\Laravel\\TermwindServiceProvider" - ] - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "src/Functions.php" - ], - "psr-4": { - "Termwind\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - } - ], - "description": "Its like Tailwind CSS, but for the console.", - "keywords": [ - "cli", - "console", - "css", - "package", - "php", - "style" - ], - "support": { - "issues": "https://github.com/nunomaduro/termwind/issues", - "source": "https://github.com/nunomaduro/termwind/tree/v1.17.0" - }, - "funding": [ - { - "url": "https://www.paypal.com/paypalme/enunomaduro", - "type": "custom" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - }, - { - "url": "https://github.com/xiCO2k", - "type": "github" - } - ], - "install-path": "../nunomaduro/termwind" - }, - { - "name": "nwidart/laravel-modules", - "version": "10.0.6", - "version_normalized": "10.0.6.0", - "source": { - "type": "git", - "url": "https://github.com/nWidart/laravel-modules.git", - "reference": "a6f2c8b53ae7945ef41d296735e963cee885ebde" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nWidart/laravel-modules/zipball/a6f2c8b53ae7945ef41d296735e963cee885ebde", - "reference": "a6f2c8b53ae7945ef41d296735e963cee885ebde", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": ">=8.1" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.6", - "laravel/framework": "^10.41", - "mockery/mockery": "^1.5", - "orchestra/testbench": "^8.0", - "phpstan/phpstan": "^1.4", - "phpunit/phpunit": "^10.0", - "spatie/phpunit-snapshot-assertions": "^5.0" - }, - "time": "2024-01-28T10:04:15+00:00", - "type": "library", - "extra": { - "laravel": { - "aliases": { - "Module": "Nwidart\\Modules\\Facades\\Module" - }, - "providers": [ - "Nwidart\\Modules\\LaravelModulesServiceProvider" - ] - }, - "branch-alias": { - "dev-master": "10.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "src/helpers.php" - ], - "psr-4": { - "Nwidart\\Modules\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Widart", - "email": "n.widart@gmail.com", - "homepage": "https://nicolaswidart.com", - "role": "Developer" - } - ], - "description": "Laravel Module management", - "keywords": [ - "laravel", - "module", - "modules", - "nwidart", - "rad" - ], - "support": { - "issues": "https://github.com/nWidart/laravel-modules/issues", - "source": "https://github.com/nWidart/laravel-modules/tree/10.0.6" - }, - "funding": [ - { - "url": "https://github.com/dcblogdev", - "type": "github" - }, - { - "url": "https://github.com/nwidart", - "type": "github" - } - ], - "install-path": "../nwidart/laravel-modules" - }, - { - "name": "owen-it/laravel-auditing", - "version": "v13.6.9", - "version_normalized": "13.6.9.0", - "source": { - "type": "git", - "url": "https://github.com/owen-it/laravel-auditing.git", - "reference": "559b391e2ebf46a734b3f82d4f18faf425107054" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/owen-it/laravel-auditing/zipball/559b391e2ebf46a734b3f82d4f18faf425107054", - "reference": "559b391e2ebf46a734b3f82d4f18faf425107054", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/console": "^7.0|^8.0|^9.0|^10.0|^11.0", - "illuminate/database": "^7.0|^8.0|^9.0|^10.0|^11.0", - "illuminate/filesystem": "^7.0|^8.0|^9.0|^10.0|^11.0", - "php": "^7.3|^8.0" - }, - "require-dev": { - "laravel/legacy-factories": "*", - "mockery/mockery": "^1.0", - "orchestra/testbench": "^5.0|^6.0|^7.0|^8.0|^9.0", - "phpunit/phpunit": "^9.6|^10.5|^11.0" - }, - "suggest": { - "irazasyed/larasupport": "Needed to publish the package configuration in Lumen" - }, - "time": "2024-12-27T15:04:04+00:00", - "type": "package", - "extra": { - "laravel": { - "providers": [ - "OwenIt\\Auditing\\AuditingServiceProvider" - ] - }, - "branch-alias": { - "dev-master": "v13-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "OwenIt\\Auditing\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Antério Vieira", - "email": "anteriovieira@gmail.com" - }, - { - "name": "Raphael França", - "email": "raphaelfrancabsb@gmail.com" - }, - { - "name": "Morten D. Hansen", - "email": "morten@visia.dk" - } - ], - "description": "Audit changes of your Eloquent models in Laravel/Lumen", - "homepage": "https://laravel-auditing.com", - "keywords": [ - "Accountability", - "Audit", - "auditing", - "changes", - "eloquent", - "history", - "laravel", - "log", - "logging", - "lumen", - "observer", - "record", - "revision", - "tracking" - ], - "support": { - "issues": "https://github.com/owen-it/laravel-auditing/issues", - "source": "https://github.com/owen-it/laravel-auditing" - }, - "install-path": "../owen-it/laravel-auditing" - }, - { - "name": "phar-io/manifest", - "version": "2.0.4", - "version_normalized": "2.0.4.0", - "source": { - "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "54750ef60c58e43759730615a392c31c80e23176" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", - "reference": "54750ef60c58e43759730615a392c31c80e23176", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-phar": "*", - "ext-xmlwriter": "*", - "phar-io/version": "^3.0.1", - "php": "^7.2 || ^8.0" - }, - "time": "2024-03-03T12:33:53+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "support": { - "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "install-path": "../phar-io/manifest" - }, - { - "name": "phar-io/version", - "version": "3.2.1", - "version_normalized": "3.2.1.0", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "time": "2022-02-21T01:04:05+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Library for handling version information and constraints", - "support": { - "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.2.1" - }, - "install-path": "../phar-io/version" - }, - { - "name": "phenx/php-font-lib", - "version": "0.5.6", - "version_normalized": "0.5.6.0", - "source": { - "type": "git", - "url": "https://github.com/dompdf/php-font-lib.git", - "reference": "a1681e9793040740a405ac5b189275059e2a9863" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/a1681e9793040740a405ac5b189275059e2a9863", - "reference": "a1681e9793040740a405ac5b189275059e2a9863", - "shasum": "" - }, - "require": { - "ext-mbstring": "*" - }, - "require-dev": { - "symfony/phpunit-bridge": "^3 || ^4 || ^5 || ^6" - }, - "time": "2024-01-29T14:45:26+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "FontLib\\": "src/FontLib" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1-or-later" - ], - "authors": [ - { - "name": "Fabien Ménager", - "email": "fabien.menager@gmail.com" - } - ], - "description": "A library to read, parse, export and make subsets of different types of font files.", - "homepage": "https://github.com/PhenX/php-font-lib", - "support": { - "issues": "https://github.com/dompdf/php-font-lib/issues", - "source": "https://github.com/dompdf/php-font-lib/tree/0.5.6" - }, - "install-path": "../phenx/php-font-lib" - }, - { - "name": "phenx/php-svg-lib", - "version": "0.5.4", - "version_normalized": "0.5.4.0", - "source": { - "type": "git", - "url": "https://github.com/dompdf/php-svg-lib.git", - "reference": "46b25da81613a9cf43c83b2a8c2c1bdab27df691" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dompdf/php-svg-lib/zipball/46b25da81613a9cf43c83b2a8c2c1bdab27df691", - "reference": "46b25da81613a9cf43c83b2a8c2c1bdab27df691", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": "^7.1 || ^8.0", - "sabberworm/php-css-parser": "^8.4" - }, - "require-dev": { - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5" - }, - "time": "2024-04-08T12:52:34+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Svg\\": "src/Svg" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0-or-later" - ], - "authors": [ - { - "name": "Fabien Ménager", - "email": "fabien.menager@gmail.com" - } - ], - "description": "A library to read, parse and export to PDF SVG files.", - "homepage": "https://github.com/PhenX/php-svg-lib", - "support": { - "issues": "https://github.com/dompdf/php-svg-lib/issues", - "source": "https://github.com/dompdf/php-svg-lib/tree/0.5.4" - }, - "install-path": "../phenx/php-svg-lib" - }, - { - "name": "phpmyadmin/sql-parser", - "version": "5.10.2", - "version_normalized": "5.10.2.0", - "source": { - "type": "git", - "url": "https://github.com/phpmyadmin/sql-parser.git", - "reference": "72afbce7e4b421593b60d2eb7281e37a50734df8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpmyadmin/sql-parser/zipball/72afbce7e4b421593b60d2eb7281e37a50734df8", - "reference": "72afbce7e4b421593b60d2eb7281e37a50734df8", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-mbstring": "^1.3", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "phpmyadmin/motranslator": "<3.0" - }, - "require-dev": { - "phpbench/phpbench": "^1.1", - "phpmyadmin/coding-standard": "^3.0", - "phpmyadmin/motranslator": "^4.0 || ^5.0", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.9.12", - "phpstan/phpstan-phpunit": "^1.3.3", - "phpunit/phpunit": "^8.5 || ^9.6", - "psalm/plugin-phpunit": "^0.16.1", - "vimeo/psalm": "^4.11", - "zumba/json-serializer": "~3.0.2" - }, - "suggest": { - "ext-mbstring": "For best performance", - "phpmyadmin/motranslator": "Translate messages to your favorite locale" - }, - "time": "2024-12-05T15:04:09+00:00", - "bin": [ - "bin/highlight-query", - "bin/lint-query", - "bin/sql-parser", - "bin/tokenize-query" - ], - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "PhpMyAdmin\\SqlParser\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "The phpMyAdmin Team", - "email": "developers@phpmyadmin.net", - "homepage": "https://www.phpmyadmin.net/team/" - } - ], - "description": "A validating SQL lexer and parser with a focus on MySQL dialect.", - "homepage": "https://github.com/phpmyadmin/sql-parser", - "keywords": [ - "analysis", - "lexer", - "parser", - "query linter", - "sql", - "sql lexer", - "sql linter", - "sql parser", - "sql syntax highlighter", - "sql tokenizer" - ], - "support": { - "issues": "https://github.com/phpmyadmin/sql-parser/issues", - "source": "https://github.com/phpmyadmin/sql-parser" - }, - "funding": [ - { - "url": "https://www.phpmyadmin.net/donate/", - "type": "other" - } - ], - "install-path": "../phpmyadmin/sql-parser" - }, - { - "name": "phpoption/phpoption", - "version": "1.9.3", - "version_normalized": "1.9.3.0", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/e3fac8b24f56113f7cb96af14958c0dd16330f54", - "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" - }, - "time": "2024-07-20T21:41:07+00:00", - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - }, - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "PhpOption\\": "src/PhpOption/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Johannes M. Schmitt", - "email": "schmittjoh@gmail.com", - "homepage": "https://github.com/schmittjoh" - }, - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - } - ], - "description": "Option Type for PHP", - "keywords": [ - "language", - "option", - "php", - "type" - ], - "support": { - "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.9.3" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "install-path": "../phpoption/phpoption" - }, - { - "name": "phpstan/phpstan", - "version": "1.12.15", - "version_normalized": "1.12.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan.git", - "reference": "c91d4e8bc056f46cf653656e6f71004b254574d1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/c91d4e8bc056f46cf653656e6f71004b254574d1", - "reference": "c91d4e8bc056f46cf653656e6f71004b254574d1", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0" - }, - "conflict": { - "phpstan/phpstan-shim": "*" - }, - "time": "2025-01-05T16:40:22+00:00", - "bin": [ - "phpstan", - "phpstan.phar" - ], - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPStan - PHP Static Analysis Tool", - "keywords": [ - "dev", - "static analysis" - ], - "support": { - "docs": "https://phpstan.org/user-guide/getting-started", - "forum": "https://github.com/phpstan/phpstan/discussions", - "issues": "https://github.com/phpstan/phpstan/issues", - "security": "https://github.com/phpstan/phpstan/security/policy", - "source": "https://github.com/phpstan/phpstan-src" - }, - "funding": [ - { - "url": "https://github.com/ondrejmirtes", - "type": "github" - }, - { - "url": "https://github.com/phpstan", - "type": "github" - } - ], - "install-path": "../phpstan/phpstan" - }, - { - "name": "phpunit/php-code-coverage", - "version": "10.1.16", - "version_normalized": "10.1.16.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "7e308268858ed6baedc8704a304727d20bc07c77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7e308268858ed6baedc8704a304727d20bc07c77", - "reference": "7e308268858ed6baedc8704a304727d20bc07c77", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.19.1 || ^5.1.0", - "php": ">=8.1", - "phpunit/php-file-iterator": "^4.1.0", - "phpunit/php-text-template": "^3.0.1", - "sebastian/code-unit-reverse-lookup": "^3.0.0", - "sebastian/complexity": "^3.2.0", - "sebastian/environment": "^6.1.0", - "sebastian/lines-of-code": "^2.0.2", - "sebastian/version": "^4.0.1", - "theseer/tokenizer": "^1.2.3" - }, - "require-dev": { - "phpunit/phpunit": "^10.1" - }, - "suggest": { - "ext-pcov": "PHP extension that provides line coverage", - "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" - }, - "time": "2024-08-22T04:31:57+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "10.1.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.16" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "install-path": "../phpunit/php-code-coverage" - }, - { - "name": "phpunit/php-file-iterator", - "version": "4.1.0", - "version_normalized": "4.1.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", - "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "time": "2023-08-31T06:24:48+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "install-path": "../phpunit/php-file-iterator" - }, - { - "name": "phpunit/php-invoker", - "version": "4.0.0", - "version_normalized": "4.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", - "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^10.0" - }, - "suggest": { - "ext-pcntl": "*" - }, - "time": "2023-02-03T06:56:09+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Invoke callables with a timeout", - "homepage": "https://github.com/sebastianbergmann/php-invoker/", - "keywords": [ - "process" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "install-path": "../phpunit/php-invoker" - }, - { - "name": "phpunit/php-text-template", - "version": "3.0.1", - "version_normalized": "3.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", - "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "time": "2023-08-31T14:07:24+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "install-path": "../phpunit/php-text-template" - }, - { - "name": "phpunit/php-timer", - "version": "6.0.0", - "version_normalized": "6.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", - "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "time": "2023-02-03T06:57:52+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "install-path": "../phpunit/php-timer" - }, - { - "name": "phpunit/phpunit", - "version": "10.5.40", - "version_normalized": "10.5.40.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "e6ddda95af52f69c1e0c7b4f977cccb58048798c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e6ddda95af52f69c1e0c7b4f977cccb58048798c", - "reference": "e6ddda95af52f69c1e0c7b4f977cccb58048798c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.12.1", - "phar-io/manifest": "^2.0.4", - "phar-io/version": "^3.2.1", - "php": ">=8.1", - "phpunit/php-code-coverage": "^10.1.16", - "phpunit/php-file-iterator": "^4.1.0", - "phpunit/php-invoker": "^4.0.0", - "phpunit/php-text-template": "^3.0.1", - "phpunit/php-timer": "^6.0.0", - "sebastian/cli-parser": "^2.0.1", - "sebastian/code-unit": "^2.0.0", - "sebastian/comparator": "^5.0.3", - "sebastian/diff": "^5.1.1", - "sebastian/environment": "^6.1.0", - "sebastian/exporter": "^5.1.2", - "sebastian/global-state": "^6.0.2", - "sebastian/object-enumerator": "^5.0.0", - "sebastian/recursion-context": "^5.0.0", - "sebastian/type": "^4.0.0", - "sebastian/version": "^4.0.1" - }, - "suggest": { - "ext-soap": "To be able to generate mocks based on WSDL files" - }, - "time": "2024-12-21T05:49:06+00:00", - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "10.5-dev" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "src/Framework/Assert/Functions.php" - ], - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.40" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", - "type": "tidelift" - } - ], - "install-path": "../phpunit/phpunit" - }, - { - "name": "psr/cache", - "version": "3.0.0", - "version_normalized": "3.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", - "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "time": "2021-02-03T23:26:27+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\Cache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for caching libraries", - "keywords": [ - "cache", - "psr", - "psr-6" - ], - "support": { - "source": "https://github.com/php-fig/cache/tree/3.0.0" - }, - "install-path": "../psr/cache" - }, - { - "name": "psr/clock", - "version": "1.0.0", - "version_normalized": "1.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/clock.git", - "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", - "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "time": "2022-11-25T14:36:26+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\Clock\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for reading the clock.", - "homepage": "https://github.com/php-fig/clock", - "keywords": [ - "clock", - "now", - "psr", - "psr-20", - "time" - ], - "support": { - "issues": "https://github.com/php-fig/clock/issues", - "source": "https://github.com/php-fig/clock/tree/1.0.0" - }, - "install-path": "../psr/clock" - }, - { - "name": "psr/container", - "version": "2.0.2", - "version_normalized": "2.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "shasum": "" - }, - "require": { - "php": ">=7.4.0" - }, - "time": "2021-11-05T16:47:00+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ], - "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/2.0.2" - }, - "install-path": "../psr/container" - }, - { - "name": "psr/event-dispatcher", - "version": "1.0.0", - "version_normalized": "1.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/event-dispatcher.git", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", - "shasum": "" - }, - "require": { - "php": ">=7.2.0" - }, - "time": "2019-01-08T18:20:26+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\EventDispatcher\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Standard interfaces for event handling.", - "keywords": [ - "events", - "psr", - "psr-14" - ], - "support": { - "issues": "https://github.com/php-fig/event-dispatcher/issues", - "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" - }, - "install-path": "../psr/event-dispatcher" - }, - { - "name": "psr/http-client", - "version": "1.0.3", - "version_normalized": "1.0.3.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", - "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.0 || ^2.0" - }, - "time": "2023-09-23T14:17:50+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\Http\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP clients", - "homepage": "https://github.com/php-fig/http-client", - "keywords": [ - "http", - "http-client", - "psr", - "psr-18" - ], - "support": { - "source": "https://github.com/php-fig/http-client" - }, - "install-path": "../psr/http-client" - }, - { - "name": "psr/http-factory", - "version": "1.1.0", - "version_normalized": "1.1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", - "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", - "shasum": "" - }, - "require": { - "php": ">=7.1", - "psr/http-message": "^1.0 || ^2.0" - }, - "time": "2024-04-15T12:06:14+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", - "keywords": [ - "factory", - "http", - "message", - "psr", - "psr-17", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-factory" - }, - "install-path": "../psr/http-factory" - }, - { - "name": "psr/http-message", - "version": "2.0", - "version_normalized": "2.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", - "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "time": "2023-04-04T09:54:51+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-message/tree/2.0" - }, - "install-path": "../psr/http-message" - }, - { - "name": "psr/log", - "version": "3.0.2", - "version_normalized": "3.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", - "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "time": "2024-09-11T13:17:53+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\Log\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "support": { - "source": "https://github.com/php-fig/log/tree/3.0.2" - }, - "install-path": "../psr/log" - }, - { - "name": "psr/simple-cache", - "version": "3.0.0", - "version_normalized": "3.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/simple-cache.git", - "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", - "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "time": "2021-10-29T13:26:27+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\SimpleCache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interfaces for simple caching", - "keywords": [ - "cache", - "caching", - "psr", - "psr-16", - "simple-cache" - ], - "support": { - "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" - }, - "install-path": "../psr/simple-cache" - }, - { - "name": "psy/psysh", - "version": "v0.12.7", - "version_normalized": "0.12.7.0", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "d73fa3c74918ef4522bb8a3bf9cab39161c4b57c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/d73fa3c74918ef4522bb8a3bf9cab39161c4b57c", - "reference": "d73fa3c74918ef4522bb8a3bf9cab39161c4b57c", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-tokenizer": "*", - "nikic/php-parser": "^5.0 || ^4.0", - "php": "^8.0 || ^7.4", - "symfony/console": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4", - "symfony/var-dumper": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4" - }, - "conflict": { - "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2" - }, - "suggest": { - "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", - "ext-pdo-sqlite": "The doc command requires SQLite to work.", - "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well." - }, - "time": "2024-12-10T01:58:33+00:00", - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": false, - "forward-command": false - }, - "branch-alias": { - "dev-main": "0.12.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "src/functions.php" - ], - "psr-4": { - "Psy\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Justin Hileman", - "email": "justin@justinhileman.info", - "homepage": "http://justinhileman.com" - } - ], - "description": "An interactive shell for modern PHP.", - "homepage": "http://psysh.org", - "keywords": [ - "REPL", - "console", - "interactive", - "shell" - ], - "support": { - "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.12.7" - }, - "install-path": "../psy/psysh" - }, - { - "name": "ralouphie/getallheaders", - "version": "3.0.3", - "version_normalized": "3.0.3.0", - "source": { - "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" - }, - "time": "2019-03-08T08:55:37+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "src/getallheaders.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" - } - ], - "description": "A polyfill for getallheaders.", - "support": { - "issues": "https://github.com/ralouphie/getallheaders/issues", - "source": "https://github.com/ralouphie/getallheaders/tree/develop" - }, - "install-path": "../ralouphie/getallheaders" - }, - { - "name": "ramsey/collection", - "version": "2.0.0", - "version_normalized": "2.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", - "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "require-dev": { - "captainhook/plugin-composer": "^5.3", - "ergebnis/composer-normalize": "^2.28.3", - "fakerphp/faker": "^1.21", - "hamcrest/hamcrest-php": "^2.0", - "jangregor/phpstan-prophecy": "^1.0", - "mockery/mockery": "^1.5", - "php-parallel-lint/php-console-highlighter": "^1.0", - "php-parallel-lint/php-parallel-lint": "^1.3", - "phpcsstandards/phpcsutils": "^1.0.0-rc1", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1.2", - "phpstan/phpstan": "^1.9", - "phpstan/phpstan-mockery": "^1.1", - "phpstan/phpstan-phpunit": "^1.3", - "phpunit/phpunit": "^9.5", - "psalm/plugin-mockery": "^1.1", - "psalm/plugin-phpunit": "^0.18.4", - "ramsey/coding-standard": "^2.0.3", - "ramsey/conventional-commits": "^1.3", - "vimeo/psalm": "^5.4" - }, - "time": "2022-12-31T21:50:55+00:00", - "type": "library", - "extra": { - "captainhook": { - "force-install": true - }, - "ramsey/conventional-commits": { - "configFile": "conventional-commits.json" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Ramsey\\Collection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ben Ramsey", - "email": "ben@benramsey.com", - "homepage": "https://benramsey.com" - } - ], - "description": "A PHP library for representing and manipulating collections.", - "keywords": [ - "array", - "collection", - "hash", - "map", - "queue", - "set" - ], - "support": { - "issues": "https://github.com/ramsey/collection/issues", - "source": "https://github.com/ramsey/collection/tree/2.0.0" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "install-path": "../ramsey/collection" - }, - { - "name": "ramsey/uuid", - "version": "4.7.6", - "version_normalized": "4.7.6.0", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "91039bc1faa45ba123c4328958e620d382ec7088" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/91039bc1faa45ba123c4328958e620d382ec7088", - "reference": "91039bc1faa45ba123c4328958e620d382ec7088", - "shasum": "" - }, - "require": { - "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12", - "ext-json": "*", - "php": "^8.0", - "ramsey/collection": "^1.2 || ^2.0" - }, - "replace": { - "rhumsaa/uuid": "self.version" - }, - "require-dev": { - "captainhook/captainhook": "^5.10", - "captainhook/plugin-composer": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "doctrine/annotations": "^1.8", - "ergebnis/composer-normalize": "^2.15", - "mockery/mockery": "^1.3", - "paragonie/random-lib": "^2", - "php-mock/php-mock": "^2.2", - "php-mock/php-mock-mockery": "^1.3", - "php-parallel-lint/php-parallel-lint": "^1.1", - "phpbench/phpbench": "^1.0", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-mockery": "^1.1", - "phpstan/phpstan-phpunit": "^1.1", - "phpunit/phpunit": "^8.5 || ^9", - "ramsey/composer-repl": "^1.4", - "slevomat/coding-standard": "^8.4", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", - "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", - "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", - "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." - }, - "time": "2024-04-27T21:32:50+00:00", - "type": "library", - "extra": { - "captainhook": { - "force-install": true - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "src/functions.php" - ], - "psr-4": { - "Ramsey\\Uuid\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", - "keywords": [ - "guid", - "identifier", - "uuid" - ], - "support": { - "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.7.6" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "install-path": "../ramsey/uuid" - }, - { - "name": "sabberworm/php-css-parser", - "version": "v8.7.0", - "version_normalized": "8.7.0.0", - "source": { - "type": "git", - "url": "https://github.com/MyIntervals/PHP-CSS-Parser.git", - "reference": "f414ff953002a9b18e3a116f5e462c56f21237cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/f414ff953002a9b18e3a116f5e462c56f21237cf", - "reference": "f414ff953002a9b18e3a116f5e462c56f21237cf", - "shasum": "" - }, - "require": { - "ext-iconv": "*", - "php": "^5.6.20 || ^7.0.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" - }, - "require-dev": { - "phpunit/phpunit": "5.7.27 || 6.5.14 || 7.5.20 || 8.5.40" - }, - "suggest": { - "ext-mbstring": "for parsing UTF-8 CSS" - }, - "time": "2024-10-27T17:38:32+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "9.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Sabberworm\\CSS\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Raphael Schweikert" - }, - { - "name": "Oliver Klee", - "email": "github@oliverklee.de" - }, - { - "name": "Jake Hotson", - "email": "jake.github@qzdesign.co.uk" - } - ], - "description": "Parser for CSS Files written in PHP", - "homepage": "https://www.sabberworm.com/blog/2010/6/10/php-css-parser", - "keywords": [ - "css", - "parser", - "stylesheet" - ], - "support": { - "issues": "https://github.com/MyIntervals/PHP-CSS-Parser/issues", - "source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/v8.7.0" - }, - "install-path": "../sabberworm/php-css-parser" - }, - { - "name": "sebastian/cli-parser", - "version": "2.0.1", - "version_normalized": "2.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/c34583b87e7b7a8055bf6c450c2c77ce32a24084", - "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "time": "2024-03-02T07:12:49+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for parsing CLI options", - "homepage": "https://github.com/sebastianbergmann/cli-parser", - "support": { - "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "install-path": "../sebastian/cli-parser" - }, - { - "name": "sebastian/code-unit", - "version": "2.0.0", - "version_normalized": "2.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", - "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "time": "2023-02-03T06:58:43+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the PHP code units", - "homepage": "https://github.com/sebastianbergmann/code-unit", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "install-path": "../sebastian/code-unit" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "3.0.0", - "version_normalized": "3.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", - "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "time": "2023-02-03T06:59:15+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "install-path": "../sebastian/code-unit-reverse-lookup" - }, - { - "name": "sebastian/comparator", - "version": "5.0.3", - "version_normalized": "5.0.3.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", - "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-mbstring": "*", - "php": ">=8.1", - "sebastian/diff": "^5.0", - "sebastian/exporter": "^5.0" - }, - "require-dev": { - "phpunit/phpunit": "^10.5" - }, - "time": "2024-10-18T14:56:07+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/comparator/issues", - "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "install-path": "../sebastian/comparator" - }, - { - "name": "sebastian/complexity", - "version": "3.2.0", - "version_normalized": "3.2.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "68ff824baeae169ec9f2137158ee529584553799" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", - "reference": "68ff824baeae169ec9f2137158ee529584553799", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "time": "2023-12-21T08:37:17+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.2-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "security": "https://github.com/sebastianbergmann/complexity/security/policy", - "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "install-path": "../sebastian/complexity" - }, - { - "name": "sebastian/diff", - "version": "5.1.1", - "version_normalized": "5.1.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e", - "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0", - "symfony/process": "^6.4" - }, - "time": "2024-03-02T07:15:17+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.1-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/5.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "install-path": "../sebastian/diff" - }, - { - "name": "sebastian/environment", - "version": "6.1.0", - "version_normalized": "6.1.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "8074dbcd93529b357029f5cc5058fd3e43666984" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/8074dbcd93529b357029f5cc5058fd3e43666984", - "reference": "8074dbcd93529b357029f5cc5058fd3e43666984", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "suggest": { - "ext-posix": "*" - }, - "time": "2024-03-23T08:47:14+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.1-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "https://github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "security": "https://github.com/sebastianbergmann/environment/security/policy", - "source": "https://github.com/sebastianbergmann/environment/tree/6.1.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "install-path": "../sebastian/environment" - }, - { - "name": "sebastian/exporter", - "version": "5.1.2", - "version_normalized": "5.1.2.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "955288482d97c19a372d3f31006ab3f37da47adf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/955288482d97c19a372d3f31006ab3f37da47adf", - "reference": "955288482d97c19a372d3f31006ab3f37da47adf", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": ">=8.1", - "sebastian/recursion-context": "^5.0" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "time": "2024-03-02T07:17:12+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.1-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "https://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/exporter/issues", - "security": "https://github.com/sebastianbergmann/exporter/security/policy", - "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "install-path": "../sebastian/exporter" - }, - { - "name": "sebastian/global-state", - "version": "6.0.2", - "version_normalized": "6.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", - "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "sebastian/object-reflector": "^3.0", - "sebastian/recursion-context": "^5.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^10.0" - }, - "time": "2024-03-02T07:19:19+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "https://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "security": "https://github.com/sebastianbergmann/global-state/security/policy", - "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "install-path": "../sebastian/global-state" - }, - { - "name": "sebastian/lines-of-code", - "version": "2.0.2", - "version_normalized": "2.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", - "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "time": "2023-12-21T08:38:20+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for counting the lines of code in PHP source code", - "homepage": "https://github.com/sebastianbergmann/lines-of-code", - "support": { - "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "install-path": "../sebastian/lines-of-code" - }, - { - "name": "sebastian/object-enumerator", - "version": "5.0.0", - "version_normalized": "5.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", - "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "sebastian/object-reflector": "^3.0", - "sebastian/recursion-context": "^5.0" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "time": "2023-02-03T07:08:32+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "install-path": "../sebastian/object-enumerator" - }, - { - "name": "sebastian/object-reflector", - "version": "3.0.0", - "version_normalized": "3.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", - "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "time": "2023-02-03T07:06:18+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "install-path": "../sebastian/object-reflector" - }, - { - "name": "sebastian/recursion-context", - "version": "5.0.0", - "version_normalized": "5.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "05909fb5bc7df4c52992396d0116aed689f93712" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", - "reference": "05909fb5bc7df4c52992396d0116aed689f93712", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "time": "2023-02-03T07:05:40+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "https://github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "install-path": "../sebastian/recursion-context" - }, - { - "name": "sebastian/type", - "version": "4.0.0", - "version_normalized": "4.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", - "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "time": "2023-02-03T07:10:45+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the types of the PHP type system", - "homepage": "https://github.com/sebastianbergmann/type", - "support": { - "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "install-path": "../sebastian/type" - }, - { - "name": "sebastian/version", - "version": "4.0.1", - "version_normalized": "4.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", - "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "time": "2023-02-07T11:34:05+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "support": { - "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "install-path": "../sebastian/version" - }, - { - "name": "spatie/laravel-permission", - "version": "5.11.1", - "version_normalized": "5.11.1.0", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-permission.git", - "reference": "7090824cca57e693b880ce3aaf7ef78362e28bbd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-permission/zipball/7090824cca57e693b880ce3aaf7ef78362e28bbd", - "reference": "7090824cca57e693b880ce3aaf7ef78362e28bbd", - "shasum": "" - }, - "require": { - "illuminate/auth": "^7.0|^8.0|^9.0|^10.0", - "illuminate/container": "^7.0|^8.0|^9.0|^10.0", - "illuminate/contracts": "^7.0|^8.0|^9.0|^10.0", - "illuminate/database": "^7.0|^8.0|^9.0|^10.0", - "php": "^7.3|^8.0" - }, - "require-dev": { - "orchestra/testbench": "^5.0|^6.0|^7.0|^8.0", - "phpunit/phpunit": "^9.4", - "predis/predis": "^1.1" - }, - "time": "2023-10-25T05:12:01+00:00", - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\Permission\\PermissionServiceProvider" - ] - }, - "branch-alias": { - "dev-main": "5.x-dev", - "dev-master": "5.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "src/helpers.php" - ], - "psr-4": { - "Spatie\\Permission\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - } - ], - "description": "Permission handling for Laravel 6.0 and up", - "homepage": "https://github.com/spatie/laravel-permission", - "keywords": [ - "acl", - "laravel", - "permission", - "permissions", - "rbac", - "roles", - "security", - "spatie" - ], - "support": { - "issues": "https://github.com/spatie/laravel-permission/issues", - "source": "https://github.com/spatie/laravel-permission/tree/5.11.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "install-path": "../spatie/laravel-permission" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.11.2", - "version_normalized": "3.11.2.0", - "source": { - "type": "git", - "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "1368f4a58c3c52114b86b1abe8f4098869cb0079" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/1368f4a58c3c52114b86b1abe8f4098869cb0079", - "reference": "1368f4a58c3c52114b86b1abe8f4098869cb0079", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" - }, - "time": "2024-12-11T16:04:26+00:00", - "bin": [ - "bin/phpcbf", - "bin/phpcs" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "installation-source": "dist", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Greg Sherwood", - "role": "Former lead" - }, - { - "name": "Juliette Reinders Folmer", - "role": "Current lead" - }, - { - "name": "Contributors", - "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards", - "static analysis" - ], - "support": { - "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues", - "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy", - "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer", - "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki" - }, - "funding": [ - { - "url": "https://github.com/PHPCSStandards", - "type": "github" - }, - { - "url": "https://github.com/jrfnl", - "type": "github" - }, - { - "url": "https://opencollective.com/php_codesniffer", - "type": "open_collective" - } - ], - "install-path": "../squizlabs/php_codesniffer" - }, - { - "name": "symfony/console", - "version": "v6.4.17", - "version_normalized": "6.4.17.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "799445db3f15768ecc382ac5699e6da0520a0a04" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/799445db3f15768ecc382ac5699e6da0520a0a04", - "reference": "799445db3f15768ecc382ac5699e6da0520a0a04", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^5.4|^6.0|^7.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/lock": "^5.4|^6.0|^7.0", - "symfony/messenger": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/var-dumper": "^5.4|^6.0|^7.0" - }, - "time": "2024-12-07T12:07:30+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Eases the creation of beautiful and testable command line interfaces", - "homepage": "https://symfony.com", - "keywords": [ - "cli", - "command-line", - "console", - "terminal" - ], - "support": { - "source": "https://github.com/symfony/console/tree/v6.4.17" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/console" - }, - { - "name": "symfony/css-selector", - "version": "v7.2.0", - "version_normalized": "7.2.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "601a5ce9aaad7bf10797e3663faefce9e26c24e2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/601a5ce9aaad7bf10797e3663faefce9e26c24e2", - "reference": "601a5ce9aaad7bf10797e3663faefce9e26c24e2", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "time": "2024-09-25T14:21:43+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\CssSelector\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Jean-François Simon", - "email": "jeanfrancois.simon@sensiolabs.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Converts CSS selectors to XPath expressions", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/css-selector/tree/v7.2.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/css-selector" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.5.1", - "version_normalized": "3.5.1.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", - "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "time": "2024-09-25T14:20:29+00:00", - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/contracts", - "name": "symfony/contracts" - }, - "branch-alias": { - "dev-main": "3.5-dev" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "function.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/deprecation-contracts" - }, - { - "name": "symfony/error-handler", - "version": "v6.4.17", - "version_normalized": "6.4.17.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "37ad2380e8c1a8cf62a1200a5c10080b679b446c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/37ad2380e8c1a8cf62a1200a5c10080b679b446c", - "reference": "37ad2380e8c1a8cf62a1200a5c10080b679b446c", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0|^7.0" - }, - "conflict": { - "symfony/deprecation-contracts": "<2.5", - "symfony/http-kernel": "<6.4" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/serializer": "^5.4|^6.0|^7.0" - }, - "time": "2024-12-06T13:30:51+00:00", - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.4.17" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/error-handler" - }, - { - "name": "symfony/event-dispatcher", - "version": "v7.2.0", - "version_normalized": "7.2.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "910c5db85a5356d0fea57680defec4e99eb9c8c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/910c5db85a5356d0fea57680defec4e99eb9c8c1", - "reference": "910c5db85a5356d0fea57680defec4e99eb9c8c1", - "shasum": "" - }, - "require": { - "php": ">=8.2", - "symfony/event-dispatcher-contracts": "^2.5|^3" - }, - "conflict": { - "symfony/dependency-injection": "<6.4", - "symfony/service-contracts": "<2.5" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/error-handler": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^6.4|^7.0" - }, - "time": "2024-09-25T14:21:43+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.2.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/event-dispatcher" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.5.1", - "version_normalized": "3.5.1.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7642f5e970b672283b7823222ae8ef8bbc160b9f", - "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/event-dispatcher": "^1" - }, - "time": "2024-09-25T14:20:29+00:00", - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/contracts", - "name": "symfony/contracts" - }, - "branch-alias": { - "dev-main": "3.5-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to dispatching event", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/event-dispatcher-contracts" - }, - { - "name": "symfony/finder", - "version": "v6.4.17", - "version_normalized": "6.4.17.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7", - "reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "symfony/filesystem": "^6.0|^7.0" - }, - "time": "2024-12-29T13:51:37+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Finds files and directories via an intuitive fluent interface", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/finder/tree/v6.4.17" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/finder" - }, - { - "name": "symfony/http-foundation", - "version": "v6.4.16", - "version_normalized": "6.4.16.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "431771b7a6f662f1575b3cfc8fd7617aa9864d57" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/431771b7a6f662f1575b3cfc8fd7617aa9864d57", - "reference": "431771b7a6f662f1575b3cfc8fd7617aa9864d57", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php83": "^1.27" - }, - "conflict": { - "symfony/cache": "<6.4.12|>=7.0,<7.1.5" - }, - "require-dev": { - "doctrine/dbal": "^2.13.1|^3|^4", - "predis/predis": "^1.1|^2.0", - "symfony/cache": "^6.4.12|^7.1.5", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0", - "symfony/mime": "^5.4|^6.0|^7.0", - "symfony/rate-limiter": "^5.4|^6.0|^7.0" - }, - "time": "2024-11-13T18:58:10+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Defines an object-oriented layer for the HTTP specification", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.4.16" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/http-foundation" - }, - { - "name": "symfony/http-kernel", - "version": "v6.4.17", - "version_normalized": "6.4.17.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "c5647393c5ce11833d13e4b70fff4b571d4ac710" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/c5647393c5ce11833d13e4b70fff4b571d4ac710", - "reference": "c5647393c5ce11833d13e4b70fff4b571d4ac710", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/error-handler": "^6.4|^7.0", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<6.1", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<6.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/http-client-contracts": "<2.5", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/translation-contracts": "<2.5", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<6.4", - "symfony/var-dumper": "<6.3", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0|^7.0", - "symfony/clock": "^6.2|^7.0", - "symfony/config": "^6.1|^7.0", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/css-selector": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/dom-crawler": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", - "symfony/http-client-contracts": "^2.5|^3", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/property-access": "^5.4.5|^6.0.5|^7.0", - "symfony/routing": "^5.4|^6.0|^7.0", - "symfony/serializer": "^6.4.4|^7.0.4", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/translation": "^5.4|^6.0|^7.0", - "symfony/translation-contracts": "^2.5|^3", - "symfony/uid": "^5.4|^6.0|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/var-dumper": "^5.4|^6.4|^7.0", - "symfony/var-exporter": "^6.2|^7.0", - "twig/twig": "^2.13|^3.0.4" - }, - "time": "2024-12-31T14:49:31+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpKernel\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides a structured process for converting a Request into a Response", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.4.17" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/http-kernel" - }, - { - "name": "symfony/mailer", - "version": "v6.4.13", - "version_normalized": "6.4.13.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "c2f7e0d8d7ac8fe25faccf5d8cac462805db2663" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/c2f7e0d8d7ac8fe25faccf5d8cac462805db2663", - "reference": "c2f7e0d8d7ac8fe25faccf5d8cac462805db2663", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3|^4", - "php": ">=8.1", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/mime": "^6.2|^7.0", - "symfony/service-contracts": "^2.5|^3" - }, - "conflict": { - "symfony/http-client-contracts": "<2.5", - "symfony/http-kernel": "<5.4", - "symfony/messenger": "<6.2", - "symfony/mime": "<6.2", - "symfony/twig-bridge": "<6.2.1" - }, - "require-dev": { - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/http-client": "^5.4|^6.0|^7.0", - "symfony/messenger": "^6.2|^7.0", - "symfony/twig-bridge": "^6.2|^7.0" - }, - "time": "2024-09-25T14:18:03+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Mailer\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Helps sending emails", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/mailer/tree/v6.4.13" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/mailer" - }, - { - "name": "symfony/mime", - "version": "v6.4.17", - "version_normalized": "6.4.17.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "ea87c8850a54ff039d3e0ab4ae5586dd4e6c0232" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/ea87c8850a54ff039d3e0ab4ae5586dd4e6c0232", - "reference": "ea87c8850a54ff039d3e0ab4ae5586dd4e6c0232", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0" - }, - "conflict": { - "egulias/email-validator": "~3.0.0", - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<5.4", - "symfony/serializer": "<6.4.3|>7.0,<7.0.3" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1|^4", - "league/html-to-markdown": "^5.0", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|^6.4|^7.0", - "symfony/property-access": "^5.4|^6.0|^7.0", - "symfony/property-info": "^5.4|^6.0|^7.0", - "symfony/serializer": "^6.4.3|^7.0.3" - }, - "time": "2024-12-02T11:09:41+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Mime\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Allows manipulating MIME messages", - "homepage": "https://symfony.com", - "keywords": [ - "mime", - "mime-type" - ], - "support": { - "source": "https://github.com/symfony/mime/tree/v6.4.17" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/mime" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.31.0", - "version_normalized": "1.31.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", - "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "time": "2024-09-09T11:45:10+00:00", - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/polyfill-ctype" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.31.0", - "version_normalized": "1.31.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", - "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "time": "2024-09-09T11:45:10+00:00", - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's grapheme_* functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "grapheme", - "intl", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/polyfill-intl-grapheme" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.31.0", - "version_normalized": "1.31.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/c36586dcf89a12315939e00ec9b4474adcb1d773", - "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "symfony/polyfill-intl-normalizer": "^1.10" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "time": "2024-09-09T11:45:10+00:00", - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Laurent Bassin", - "email": "laurent@bassin.info" - }, - { - "name": "Trevor Rowbotham", - "email": "trevor.rowbotham@pm.me" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "idn", - "intl", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.31.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/polyfill-intl-idn" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.31.0", - "version_normalized": "1.31.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "3833d7255cc303546435cb650316bff708a1c75c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", - "reference": "3833d7255cc303546435cb650316bff708a1c75c", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "time": "2024-09-09T11:45:10+00:00", - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/polyfill-intl-normalizer" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.31.0", - "version_normalized": "1.31.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", - "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "time": "2024-09-09T11:45:10+00:00", - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/polyfill-mbstring" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.31.0", - "version_normalized": "1.31.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", - "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "time": "2024-09-09T11:45:10+00:00", - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/polyfill-php80" - }, - { - "name": "symfony/polyfill-php83", - "version": "v1.31.0", - "version_normalized": "1.31.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/2fb86d65e2d424369ad2905e83b236a8805ba491", - "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "time": "2024-09-09T11:45:10+00:00", - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php83\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.31.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/polyfill-php83" - }, - { - "name": "symfony/polyfill-uuid", - "version": "v1.31.0", - "version_normalized": "1.31.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-uuid.git", - "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/21533be36c24be3f4b1669c4725c7d1d2bab4ae2", - "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "provide": { - "ext-uuid": "*" - }, - "suggest": { - "ext-uuid": "For best performance" - }, - "time": "2024-09-09T11:45:10+00:00", - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Uuid\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Grégoire Pineau", - "email": "lyrixx@lyrixx.info" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for uuid functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "uuid" - ], - "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.31.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/polyfill-uuid" - }, - { - "name": "symfony/process", - "version": "v6.4.15", - "version_normalized": "6.4.15.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "3cb242f059c14ae08591c5c4087d1fe443564392" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/3cb242f059c14ae08591c5c4087d1fe443564392", - "reference": "3cb242f059c14ae08591c5c4087d1fe443564392", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "time": "2024-11-06T14:19:14+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Executes commands in sub-processes", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/process/tree/v6.4.15" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/process" - }, - { - "name": "symfony/routing", - "version": "v6.4.16", - "version_normalized": "6.4.16.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "91e02e606b4b705c2f4fb42f7e7708b7923a3220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/91e02e606b4b705c2f4fb42f7e7708b7923a3220", - "reference": "91e02e606b4b705c2f4fb42f7e7708b7923a3220", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<6.2", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12|^2", - "psr/log": "^1|^2|^3", - "symfony/config": "^6.2|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", - "symfony/yaml": "^5.4|^6.0|^7.0" - }, - "time": "2024-11-13T15:31:34+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Routing\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Maps an HTTP request to a set of configuration variables", - "homepage": "https://symfony.com", - "keywords": [ - "router", - "routing", - "uri", - "url" - ], - "support": { - "source": "https://github.com/symfony/routing/tree/v6.4.16" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/routing" - }, - { - "name": "symfony/service-contracts", - "version": "v3.5.1", - "version_normalized": "3.5.1.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0", - "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/container": "^1.1|^2.0", - "symfony/deprecation-contracts": "^2.5|^3" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "time": "2024-09-25T14:20:29+00:00", - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/contracts", - "name": "symfony/contracts" - }, - "branch-alias": { - "dev-main": "3.5-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - }, - "exclude-from-classmap": [ - "/Test/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to writing services", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.5.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/service-contracts" - }, - { - "name": "symfony/string", - "version": "v7.2.0", - "version_normalized": "7.2.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/446e0d146f991dde3e73f45f2c97a9faad773c82", - "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82", - "shasum": "" - }, - "require": { - "php": ">=8.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.5" - }, - "require-dev": { - "symfony/emoji": "^7.1", - "symfony/error-handler": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", - "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^6.4|^7.0" - }, - "time": "2024-11-13T13:31:26+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "Resources/functions.php" - ], - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v7.2.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/string" - }, - { - "name": "symfony/translation", - "version": "v6.4.13", - "version_normalized": "6.4.13.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "bee9bfabfa8b4045a66bf82520e492cddbaffa66" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/bee9bfabfa8b4045a66bf82520e492cddbaffa66", - "reference": "bee9bfabfa8b4045a66bf82520e492cddbaffa66", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.5|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-client-contracts": "<2.5", - "symfony/http-kernel": "<5.4", - "symfony/service-contracts": "<2.5", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "nikic/php-parser": "^4.18|^5.0", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", - "symfony/http-client-contracts": "^2.5|^3.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", - "symfony/intl": "^5.4|^6.0|^7.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/routing": "^5.4|^6.0|^7.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^5.4|^6.0|^7.0" - }, - "time": "2024-09-27T18:14:25+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "Resources/functions.php" - ], - "psr-4": { - "Symfony\\Component\\Translation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to internationalize your application", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/translation/tree/v6.4.13" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/translation" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.5.1", - "version_normalized": "3.5.1.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "4667ff3bd513750603a09c8dedbea942487fb07c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/4667ff3bd513750603a09c8dedbea942487fb07c", - "reference": "4667ff3bd513750603a09c8dedbea942487fb07c", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "time": "2024-09-25T14:20:29+00:00", - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/contracts", - "name": "symfony/contracts" - }, - "branch-alias": { - "dev-main": "3.5-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - }, - "exclude-from-classmap": [ - "/Test/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to translation", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.5.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/translation-contracts" - }, - { - "name": "symfony/uid", - "version": "v6.4.13", - "version_normalized": "6.4.13.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/uid.git", - "reference": "18eb207f0436a993fffbdd811b5b8fa35fa5e007" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/18eb207f0436a993fffbdd811b5b8fa35fa5e007", - "reference": "18eb207f0436a993fffbdd811b5b8fa35fa5e007", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/polyfill-uuid": "^1.15" - }, - "require-dev": { - "symfony/console": "^5.4|^6.0|^7.0" - }, - "time": "2024-09-25T14:18:03+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Uid\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Grégoire Pineau", - "email": "lyrixx@lyrixx.info" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides an object-oriented API to generate and represent UIDs", - "homepage": "https://symfony.com", - "keywords": [ - "UID", - "ulid", - "uuid" - ], - "support": { - "source": "https://github.com/symfony/uid/tree/v6.4.13" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/uid" - }, - { - "name": "symfony/var-dumper", - "version": "v6.4.15", - "version_normalized": "6.4.15.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "38254d5a5ac2e61f2b52f9caf54e7aa3c9d36b80" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/38254d5a5ac2e61f2b52f9caf54e7aa3c9d36b80", - "reference": "38254d5a5ac2e61f2b52f9caf54e7aa3c9d36b80", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/error-handler": "^6.3|^7.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/uid": "^5.4|^6.0|^7.0", - "twig/twig": "^2.13|^3.0.4" - }, - "time": "2024-11-08T15:28:48+00:00", - "bin": [ - "Resources/bin/var-dump-server" - ], - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "Resources/functions/dump.php" - ], - "psr-4": { - "Symfony\\Component\\VarDumper\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides mechanisms for walking through any arbitrary PHP variable", - "homepage": "https://symfony.com", - "keywords": [ - "debug", - "dump" - ], - "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.4.15" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/var-dumper" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.3", - "version_normalized": "1.2.3.0", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "time": "2024-03-03T12:36:25+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.3" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "install-path": "../theseer/tokenizer" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "v2.3.0", - "version_normalized": "2.3.0.0", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "0d72ac1c00084279c1816675284073c5a337c20d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0d72ac1c00084279c1816675284073c5a337c20d", - "reference": "0d72ac1c00084279c1816675284073c5a337c20d", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^7.4 || ^8.0", - "symfony/css-selector": "^5.4 || ^6.0 || ^7.0" - }, - "require-dev": { - "phpstan/phpstan": "^2.0", - "phpstan/phpstan-phpunit": "^2.0", - "phpunit/phpunit": "^8.5.21 || ^9.5.10" - }, - "time": "2024-12-21T16:25:41+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.3.0" - }, - "install-path": "../tijsverkoyen/css-to-inline-styles" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.6.1", - "version_normalized": "5.6.1.0", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "a59a13791077fe3d44f90e7133eb68e7d22eaff2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/a59a13791077fe3d44f90e7133eb68e7d22eaff2", - "reference": "a59a13791077fe3d44f90e7133eb68e7d22eaff2", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.1.3", - "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.3", - "symfony/polyfill-ctype": "^1.24", - "symfony/polyfill-mbstring": "^1.24", - "symfony/polyfill-php80": "^1.24" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "ext-filter": "*", - "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "time": "2024-07-20T21:52:34+00:00", - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - }, - "branch-alias": { - "dev-master": "5.6-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Dotenv\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Vance Lucas", - "email": "vance@vancelucas.com", - "homepage": "https://github.com/vlucas" - } - ], - "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", - "keywords": [ - "dotenv", - "env", - "environment" - ], - "support": { - "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "install-path": "../vlucas/phpdotenv" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.3", - "version_normalized": "2.0.3.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b1d923f88091c6bf09699efcd7c8a1b1bfd7351d", - "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d", - "shasum": "" - }, - "require": { - "php": ">=7.0.0" - }, - "require-dev": { - "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" - }, - "suggest": { - "ext-intl": "Use Intl for transliterator_transliterate() support" - }, - "time": "2024-11-21T01:49:47+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "voku\\": "src/voku/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Lars Moelleken", - "homepage": "https://www.moelleken.org/" - } - ], - "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", - "homepage": "https://github.com/voku/portable-ascii", - "keywords": [ - "ascii", - "clean", - "php" - ], - "support": { - "issues": "https://github.com/voku/portable-ascii/issues", - "source": "https://github.com/voku/portable-ascii/tree/2.0.3" - }, - "funding": [ - { - "url": "https://www.paypal.me/moelleken", - "type": "custom" - }, - { - "url": "https://github.com/voku", - "type": "github" - }, - { - "url": "https://opencollective.com/portable-ascii", - "type": "open_collective" - }, - { - "url": "https://www.patreon.com/voku", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", - "type": "tidelift" - } - ], - "install-path": "../voku/portable-ascii" - }, - { - "name": "webmozart/assert", - "version": "1.11.0", - "version_normalized": "1.11.0.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "php": "^7.2 || ^8.0" - }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.13" - }, - "time": "2022-06-03T18:03:27+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "support": { - "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.11.0" - }, - "install-path": "../webmozart/assert" - } - ], - "dev": true, - "dev-package-names": [ - "fakerphp/faker", - "filp/whoops", - "hamcrest/hamcrest-php", - "larastan/larastan", - "mockery/mockery", - "myclabs/deep-copy", - "phar-io/manifest", - "phar-io/version", - "phpmyadmin/sql-parser", - "phpstan/phpstan", - "phpunit/php-code-coverage", - "phpunit/php-file-iterator", - "phpunit/php-invoker", - "phpunit/php-text-template", - "phpunit/php-timer", - "phpunit/phpunit", - "sebastian/cli-parser", - "sebastian/code-unit", - "sebastian/code-unit-reverse-lookup", - "sebastian/comparator", - "sebastian/complexity", - "sebastian/diff", - "sebastian/environment", - "sebastian/exporter", - "sebastian/global-state", - "sebastian/lines-of-code", - "sebastian/object-enumerator", - "sebastian/object-reflector", - "sebastian/recursion-context", - "sebastian/type", - "sebastian/version", - "squizlabs/php_codesniffer", - "theseer/tokenizer" - ] -} diff --git a/docker/streamline-src/vendor/composer/installed.php b/docker/streamline-src/vendor/composer/installed.php deleted file mode 100644 index ee90b7d3..00000000 --- a/docker/streamline-src/vendor/composer/installed.php +++ /dev/null @@ -1,1482 +0,0 @@ - array( - 'name' => 'laravel/laravel', - 'pretty_version' => '1.0.0+no-version-set', - 'version' => '1.0.0.0', - 'reference' => null, - 'type' => 'project', - 'install_path' => __DIR__ . '/../../', - 'aliases' => array(), - 'dev' => true, - ), - 'versions' => array( - 'africastalking/africastalking' => array( - 'pretty_version' => 'v3.0.2', - 'version' => '3.0.2.0', - 'reference' => '8345423ee70b07b36cedcce61c85c9bc679e3666', - 'type' => 'library', - 'install_path' => __DIR__ . '/../africastalking/africastalking', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'barryvdh/laravel-dompdf' => array( - 'pretty_version' => 'v2.2.0', - 'version' => '2.2.0.0', - 'reference' => 'c96f90c97666cebec154ca1ffb67afed372114d8', - 'type' => 'library', - 'install_path' => __DIR__ . '/../barryvdh/laravel-dompdf', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'barryvdh/laravel-snappy' => array( - 'pretty_version' => 'v1.0.3', - 'version' => '1.0.3.0', - 'reference' => '716dcb6db24de4ce8e6ae5941cfab152af337ea0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../barryvdh/laravel-snappy', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'brick/math' => array( - 'pretty_version' => '0.12.1', - 'version' => '0.12.1.0', - 'reference' => 'f510c0a40911935b77b86859eb5223d58d660df1', - 'type' => 'library', - 'install_path' => __DIR__ . '/../brick/math', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'carbonphp/carbon-doctrine-types' => array( - 'pretty_version' => '2.1.0', - 'version' => '2.1.0.0', - 'reference' => '99f76ffa36cce3b70a4a6abce41dba15ca2e84cb', - 'type' => 'library', - 'install_path' => __DIR__ . '/../carbonphp/carbon-doctrine-types', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'cordoval/hamcrest-php' => array( - 'dev_requirement' => true, - 'replaced' => array( - 0 => '*', - ), - ), - 'davedevelopment/hamcrest-php' => array( - 'dev_requirement' => true, - 'replaced' => array( - 0 => '*', - ), - ), - 'dflydev/dot-access-data' => array( - 'pretty_version' => 'v3.0.3', - 'version' => '3.0.3.0', - 'reference' => 'a23a2bf4f31d3518f3ecb38660c95715dfead60f', - 'type' => 'library', - 'install_path' => __DIR__ . '/../dflydev/dot-access-data', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'doctrine/cache' => array( - 'pretty_version' => '2.2.0', - 'version' => '2.2.0.0', - 'reference' => '1ca8f21980e770095a31456042471a57bc4c68fb', - 'type' => 'library', - 'install_path' => __DIR__ . '/../doctrine/cache', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'doctrine/dbal' => array( - 'pretty_version' => '3.9.3', - 'version' => '3.9.3.0', - 'reference' => '61446f07fcb522414d6cfd8b1c3e5f9e18c579ba', - 'type' => 'library', - 'install_path' => __DIR__ . '/../doctrine/dbal', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'doctrine/deprecations' => array( - 'pretty_version' => '1.1.4', - 'version' => '1.1.4.0', - 'reference' => '31610dbb31faa98e6b5447b62340826f54fbc4e9', - 'type' => 'library', - 'install_path' => __DIR__ . '/../doctrine/deprecations', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'doctrine/event-manager' => array( - 'pretty_version' => '2.0.1', - 'version' => '2.0.1.0', - 'reference' => 'b680156fa328f1dfd874fd48c7026c41570b9c6e', - 'type' => 'library', - 'install_path' => __DIR__ . '/../doctrine/event-manager', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'doctrine/inflector' => array( - 'pretty_version' => '2.0.10', - 'version' => '2.0.10.0', - 'reference' => '5817d0659c5b50c9b950feb9af7b9668e2c436bc', - 'type' => 'library', - 'install_path' => __DIR__ . '/../doctrine/inflector', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'doctrine/lexer' => array( - 'pretty_version' => '3.0.1', - 'version' => '3.0.1.0', - 'reference' => '31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd', - 'type' => 'library', - 'install_path' => __DIR__ . '/../doctrine/lexer', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'dompdf/dompdf' => array( - 'pretty_version' => 'v2.0.8', - 'version' => '2.0.8.0', - 'reference' => 'c20247574601700e1f7c8dab39310fca1964dc52', - 'type' => 'library', - 'install_path' => __DIR__ . '/../dompdf/dompdf', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'dragonmantank/cron-expression' => array( - 'pretty_version' => 'v3.4.0', - 'version' => '3.4.0.0', - 'reference' => '8c784d071debd117328803d86b2097615b457500', - 'type' => 'library', - 'install_path' => __DIR__ . '/../dragonmantank/cron-expression', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'egulias/email-validator' => array( - 'pretty_version' => '4.0.3', - 'version' => '4.0.3.0', - 'reference' => 'b115554301161fa21467629f1e1391c1936de517', - 'type' => 'library', - 'install_path' => __DIR__ . '/../egulias/email-validator', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'fakerphp/faker' => array( - 'pretty_version' => 'v1.24.1', - 'version' => '1.24.1.0', - 'reference' => 'e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5', - 'type' => 'library', - 'install_path' => __DIR__ . '/../fakerphp/faker', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'filp/whoops' => array( - 'pretty_version' => '2.16.0', - 'version' => '2.16.0.0', - 'reference' => 'befcdc0e5dce67252aa6322d82424be928214fa2', - 'type' => 'library', - 'install_path' => __DIR__ . '/../filp/whoops', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'fruitcake/php-cors' => array( - 'pretty_version' => 'v1.3.0', - 'version' => '1.3.0.0', - 'reference' => '3d158f36e7875e2f040f37bc0573956240a5a38b', - 'type' => 'library', - 'install_path' => __DIR__ . '/../fruitcake/php-cors', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'fx3costa/laravelchartjs' => array( - 'pretty_version' => '3.0.0', - 'version' => '3.0.0.0', - 'reference' => '255154a4a6b57fb146eba4fdedcef4d1fe075e68', - 'type' => 'library', - 'install_path' => __DIR__ . '/../fx3costa/laravelchartjs', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'graham-campbell/result-type' => array( - 'pretty_version' => 'v1.1.3', - 'version' => '1.1.3.0', - 'reference' => '3ba905c11371512af9d9bdd27d99b782216b6945', - 'type' => 'library', - 'install_path' => __DIR__ . '/../graham-campbell/result-type', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'guzzlehttp/guzzle' => array( - 'pretty_version' => '7.9.2', - 'version' => '7.9.2.0', - 'reference' => 'd281ed313b989f213357e3be1a179f02196ac99b', - 'type' => 'library', - 'install_path' => __DIR__ . '/../guzzlehttp/guzzle', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'guzzlehttp/promises' => array( - 'pretty_version' => '2.0.4', - 'version' => '2.0.4.0', - 'reference' => 'f9c436286ab2892c7db7be8c8da4ef61ccf7b455', - 'type' => 'library', - 'install_path' => __DIR__ . '/../guzzlehttp/promises', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'guzzlehttp/psr7' => array( - 'pretty_version' => '2.7.0', - 'version' => '2.7.0.0', - 'reference' => 'a70f5c95fb43bc83f07c9c948baa0dc1829bf201', - 'type' => 'library', - 'install_path' => __DIR__ . '/../guzzlehttp/psr7', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'guzzlehttp/uri-template' => array( - 'pretty_version' => 'v1.0.3', - 'version' => '1.0.3.0', - 'reference' => 'ecea8feef63bd4fef1f037ecb288386999ecc11c', - 'type' => 'library', - 'install_path' => __DIR__ . '/../guzzlehttp/uri-template', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'h4cc/wkhtmltoimage-amd64' => array( - 'pretty_version' => '0.12.4', - 'version' => '0.12.4.0', - 'reference' => 'c4e33f635207af89a704205b8902fb5715ca88be', - 'type' => 'library', - 'install_path' => __DIR__ . '/../h4cc/wkhtmltoimage-amd64', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'h4cc/wkhtmltopdf-amd64' => array( - 'pretty_version' => '0.12.4', - 'version' => '0.12.4.0', - 'reference' => '4e2ab2d032a5d7fbe2a741de8b10b8989523c95b', - 'type' => 'library', - 'install_path' => __DIR__ . '/../h4cc/wkhtmltopdf-amd64', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'hamcrest/hamcrest-php' => array( - 'pretty_version' => 'v2.0.1', - 'version' => '2.0.1.0', - 'reference' => '8c3d0a3f6af734494ad8f6fbbee0ba92422859f3', - 'type' => 'library', - 'install_path' => __DIR__ . '/../hamcrest/hamcrest-php', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'illuminate/auth' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.48.25', - ), - ), - 'illuminate/broadcasting' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.48.25', - ), - ), - 'illuminate/bus' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.48.25', - ), - ), - 'illuminate/cache' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.48.25', - ), - ), - 'illuminate/collections' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.48.25', - ), - ), - 'illuminate/conditionable' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.48.25', - ), - ), - 'illuminate/config' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.48.25', - ), - ), - 'illuminate/console' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.48.25', - ), - ), - 'illuminate/container' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.48.25', - ), - ), - 'illuminate/contracts' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.48.25', - ), - ), - 'illuminate/cookie' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.48.25', - ), - ), - 'illuminate/database' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.48.25', - ), - ), - 'illuminate/encryption' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.48.25', - ), - ), - 'illuminate/events' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.48.25', - ), - ), - 'illuminate/filesystem' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.48.25', - ), - ), - 'illuminate/hashing' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.48.25', - ), - ), - 'illuminate/http' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.48.25', - ), - ), - 'illuminate/log' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.48.25', - ), - ), - 'illuminate/macroable' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.48.25', - ), - ), - 'illuminate/mail' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.48.25', - ), - ), - 'illuminate/notifications' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.48.25', - ), - ), - 'illuminate/pagination' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.48.25', - ), - ), - 'illuminate/pipeline' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.48.25', - ), - ), - 'illuminate/process' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.48.25', - ), - ), - 'illuminate/queue' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.48.25', - ), - ), - 'illuminate/redis' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.48.25', - ), - ), - 'illuminate/routing' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.48.25', - ), - ), - 'illuminate/session' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.48.25', - ), - ), - 'illuminate/support' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.48.25', - ), - ), - 'illuminate/testing' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.48.25', - ), - ), - 'illuminate/translation' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.48.25', - ), - ), - 'illuminate/validation' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.48.25', - ), - ), - 'illuminate/view' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.48.25', - ), - ), - 'knplabs/knp-snappy' => array( - 'pretty_version' => 'v1.5.1', - 'version' => '1.5.1.0', - 'reference' => '3dd138e9e47de91cd2e056c5e6e1a0dd72547ee7', - 'type' => 'library', - 'install_path' => __DIR__ . '/../knplabs/knp-snappy', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'kodova/hamcrest-php' => array( - 'dev_requirement' => true, - 'replaced' => array( - 0 => '*', - ), - ), - 'laracasts/flash' => array( - 'pretty_version' => '3.2.3', - 'version' => '3.2.3.0', - 'reference' => 'c2c4be1132f1bec3a689e84417a1c5787e6c71fd', - 'type' => 'library', - 'install_path' => __DIR__ . '/../laracasts/flash', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'larastan/larastan' => array( - 'pretty_version' => 'v2.9.12', - 'version' => '2.9.12.0', - 'reference' => '19012b39fbe4dede43dbe0c126d9681827a5e908', - 'type' => 'phpstan-extension', - 'install_path' => __DIR__ . '/../larastan/larastan', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'laravel/framework' => array( - 'pretty_version' => 'v10.48.25', - 'version' => '10.48.25.0', - 'reference' => 'f132b23b13909cc22c615c01b0c5640541c3da0c', - 'type' => 'library', - 'install_path' => __DIR__ . '/../laravel/framework', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'laravel/helpers' => array( - 'pretty_version' => 'v1.7.1', - 'version' => '1.7.1.0', - 'reference' => 'f28907033d7edf8a0525cfb781ab30ce6d531c35', - 'type' => 'library', - 'install_path' => __DIR__ . '/../laravel/helpers', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'laravel/laravel' => array( - 'pretty_version' => '1.0.0+no-version-set', - 'version' => '1.0.0.0', - 'reference' => null, - 'type' => 'project', - 'install_path' => __DIR__ . '/../../', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'laravel/prompts' => array( - 'pretty_version' => 'v0.1.25', - 'version' => '0.1.25.0', - 'reference' => '7b4029a84c37cb2725fc7f011586e2997040bc95', - 'type' => 'library', - 'install_path' => __DIR__ . '/../laravel/prompts', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'laravel/serializable-closure' => array( - 'pretty_version' => 'v1.3.7', - 'version' => '1.3.7.0', - 'reference' => '4f48ade902b94323ca3be7646db16209ec76be3d', - 'type' => 'library', - 'install_path' => __DIR__ . '/../laravel/serializable-closure', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'laravel/tinker' => array( - 'pretty_version' => 'v2.10.0', - 'version' => '2.10.0.0', - 'reference' => 'ba4d51eb56de7711b3a37d63aa0643e99a339ae5', - 'type' => 'library', - 'install_path' => __DIR__ . '/../laravel/tinker', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'laravel/ui' => array( - 'pretty_version' => 'v4.6.0', - 'version' => '4.6.0.0', - 'reference' => 'a34609b15ae0c0512a0cf47a21695a2729cb7f93', - 'type' => 'library', - 'install_path' => __DIR__ . '/../laravel/ui', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'laravelcollective/html' => array( - 'pretty_version' => 'v6.4.1', - 'version' => '6.4.1.0', - 'reference' => '64ddfdcaeeb8d332bd98bef442bef81e39c3910b', - 'type' => 'library', - 'install_path' => __DIR__ . '/../laravelcollective/html', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'league/commonmark' => array( - 'pretty_version' => '2.6.1', - 'version' => '2.6.1.0', - 'reference' => 'd990688c91cedfb69753ffc2512727ec646df2ad', - 'type' => 'library', - 'install_path' => __DIR__ . '/../league/commonmark', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'league/config' => array( - 'pretty_version' => 'v1.2.0', - 'version' => '1.2.0.0', - 'reference' => '754b3604fb2984c71f4af4a9cbe7b57f346ec1f3', - 'type' => 'library', - 'install_path' => __DIR__ . '/../league/config', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'league/flysystem' => array( - 'pretty_version' => '3.29.1', - 'version' => '3.29.1.0', - 'reference' => 'edc1bb7c86fab0776c3287dbd19b5fa278347319', - 'type' => 'library', - 'install_path' => __DIR__ . '/../league/flysystem', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'league/flysystem-local' => array( - 'pretty_version' => '3.29.0', - 'version' => '3.29.0.0', - 'reference' => 'e0e8d52ce4b2ed154148453d321e97c8e931bd27', - 'type' => 'library', - 'install_path' => __DIR__ . '/../league/flysystem-local', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'league/mime-type-detection' => array( - 'pretty_version' => '1.16.0', - 'version' => '1.16.0.0', - 'reference' => '2d6702ff215bf922936ccc1ad31007edc76451b9', - 'type' => 'library', - 'install_path' => __DIR__ . '/../league/mime-type-detection', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'masterminds/html5' => array( - 'pretty_version' => '2.9.0', - 'version' => '2.9.0.0', - 'reference' => 'f5ac2c0b0a2eefca70b2ce32a5809992227e75a6', - 'type' => 'library', - 'install_path' => __DIR__ . '/../masterminds/html5', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'milon/barcode' => array( - 'pretty_version' => 'v10.0.1', - 'version' => '10.0.1.0', - 'reference' => 'e643a713466f0109aa3ad7d29dae4900444187a5', - 'type' => 'library', - 'install_path' => __DIR__ . '/../milon/barcode', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'mockery/mockery' => array( - 'pretty_version' => '1.6.12', - 'version' => '1.6.12.0', - 'reference' => '1f4efdd7d3beafe9807b08156dfcb176d18f1699', - 'type' => 'library', - 'install_path' => __DIR__ . '/../mockery/mockery', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'monolog/monolog' => array( - 'pretty_version' => '3.8.1', - 'version' => '3.8.1.0', - 'reference' => 'aef6ee73a77a66e404dd6540934a9ef1b3c855b4', - 'type' => 'library', - 'install_path' => __DIR__ . '/../monolog/monolog', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'mtdowling/cron-expression' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => '^1.0', - ), - ), - 'myclabs/deep-copy' => array( - 'pretty_version' => '1.12.1', - 'version' => '1.12.1.0', - 'reference' => '123267b2c49fbf30d78a7b2d333f6be754b94845', - 'type' => 'library', - 'install_path' => __DIR__ . '/../myclabs/deep-copy', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'nesbot/carbon' => array( - 'pretty_version' => '2.72.6', - 'version' => '2.72.6.0', - 'reference' => '1e9d50601e7035a4c61441a208cb5bed73e108c5', - 'type' => 'library', - 'install_path' => __DIR__ . '/../nesbot/carbon', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'nette/schema' => array( - 'pretty_version' => 'v1.3.2', - 'version' => '1.3.2.0', - 'reference' => 'da801d52f0354f70a638673c4a0f04e16529431d', - 'type' => 'library', - 'install_path' => __DIR__ . '/../nette/schema', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'nette/utils' => array( - 'pretty_version' => 'v4.0.5', - 'version' => '4.0.5.0', - 'reference' => '736c567e257dbe0fcf6ce81b4d6dbe05c6899f96', - 'type' => 'library', - 'install_path' => __DIR__ . '/../nette/utils', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'nikic/php-parser' => array( - 'pretty_version' => 'v5.4.0', - 'version' => '5.4.0.0', - 'reference' => '447a020a1f875a434d62f2a401f53b82a396e494', - 'type' => 'library', - 'install_path' => __DIR__ . '/../nikic/php-parser', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'nunomaduro/termwind' => array( - 'pretty_version' => 'v1.17.0', - 'version' => '1.17.0.0', - 'reference' => '5369ef84d8142c1d87e4ec278711d4ece3cbf301', - 'type' => 'library', - 'install_path' => __DIR__ . '/../nunomaduro/termwind', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'nwidart/laravel-modules' => array( - 'pretty_version' => '10.0.6', - 'version' => '10.0.6.0', - 'reference' => 'a6f2c8b53ae7945ef41d296735e963cee885ebde', - 'type' => 'library', - 'install_path' => __DIR__ . '/../nwidart/laravel-modules', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'owen-it/laravel-auditing' => array( - 'pretty_version' => 'v13.6.9', - 'version' => '13.6.9.0', - 'reference' => '559b391e2ebf46a734b3f82d4f18faf425107054', - 'type' => 'package', - 'install_path' => __DIR__ . '/../owen-it/laravel-auditing', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'phar-io/manifest' => array( - 'pretty_version' => '2.0.4', - 'version' => '2.0.4.0', - 'reference' => '54750ef60c58e43759730615a392c31c80e23176', - 'type' => 'library', - 'install_path' => __DIR__ . '/../phar-io/manifest', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'phar-io/version' => array( - 'pretty_version' => '3.2.1', - 'version' => '3.2.1.0', - 'reference' => '4f7fd7836c6f332bb2933569e566a0d6c4cbed74', - 'type' => 'library', - 'install_path' => __DIR__ . '/../phar-io/version', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'phenx/php-font-lib' => array( - 'pretty_version' => '0.5.6', - 'version' => '0.5.6.0', - 'reference' => 'a1681e9793040740a405ac5b189275059e2a9863', - 'type' => 'library', - 'install_path' => __DIR__ . '/../phenx/php-font-lib', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'phenx/php-svg-lib' => array( - 'pretty_version' => '0.5.4', - 'version' => '0.5.4.0', - 'reference' => '46b25da81613a9cf43c83b2a8c2c1bdab27df691', - 'type' => 'library', - 'install_path' => __DIR__ . '/../phenx/php-svg-lib', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'phpmyadmin/sql-parser' => array( - 'pretty_version' => '5.10.2', - 'version' => '5.10.2.0', - 'reference' => '72afbce7e4b421593b60d2eb7281e37a50734df8', - 'type' => 'library', - 'install_path' => __DIR__ . '/../phpmyadmin/sql-parser', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'phpoption/phpoption' => array( - 'pretty_version' => '1.9.3', - 'version' => '1.9.3.0', - 'reference' => 'e3fac8b24f56113f7cb96af14958c0dd16330f54', - 'type' => 'library', - 'install_path' => __DIR__ . '/../phpoption/phpoption', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'phpstan/phpstan' => array( - 'pretty_version' => '1.12.15', - 'version' => '1.12.15.0', - 'reference' => 'c91d4e8bc056f46cf653656e6f71004b254574d1', - 'type' => 'library', - 'install_path' => __DIR__ . '/../phpstan/phpstan', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'phpunit/php-code-coverage' => array( - 'pretty_version' => '10.1.16', - 'version' => '10.1.16.0', - 'reference' => '7e308268858ed6baedc8704a304727d20bc07c77', - 'type' => 'library', - 'install_path' => __DIR__ . '/../phpunit/php-code-coverage', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'phpunit/php-file-iterator' => array( - 'pretty_version' => '4.1.0', - 'version' => '4.1.0.0', - 'reference' => 'a95037b6d9e608ba092da1b23931e537cadc3c3c', - 'type' => 'library', - 'install_path' => __DIR__ . '/../phpunit/php-file-iterator', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'phpunit/php-invoker' => array( - 'pretty_version' => '4.0.0', - 'version' => '4.0.0.0', - 'reference' => 'f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7', - 'type' => 'library', - 'install_path' => __DIR__ . '/../phpunit/php-invoker', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'phpunit/php-text-template' => array( - 'pretty_version' => '3.0.1', - 'version' => '3.0.1.0', - 'reference' => '0c7b06ff49e3d5072f057eb1fa59258bf287a748', - 'type' => 'library', - 'install_path' => __DIR__ . '/../phpunit/php-text-template', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'phpunit/php-timer' => array( - 'pretty_version' => '6.0.0', - 'version' => '6.0.0.0', - 'reference' => 'e2a2d67966e740530f4a3343fe2e030ffdc1161d', - 'type' => 'library', - 'install_path' => __DIR__ . '/../phpunit/php-timer', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'phpunit/phpunit' => array( - 'pretty_version' => '10.5.40', - 'version' => '10.5.40.0', - 'reference' => 'e6ddda95af52f69c1e0c7b4f977cccb58048798c', - 'type' => 'library', - 'install_path' => __DIR__ . '/../phpunit/phpunit', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'psr/cache' => array( - 'pretty_version' => '3.0.0', - 'version' => '3.0.0.0', - 'reference' => 'aa5030cfa5405eccfdcb1083ce040c2cb8d253bf', - 'type' => 'library', - 'install_path' => __DIR__ . '/../psr/cache', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'psr/clock' => array( - 'pretty_version' => '1.0.0', - 'version' => '1.0.0.0', - 'reference' => 'e41a24703d4560fd0acb709162f73b8adfc3aa0d', - 'type' => 'library', - 'install_path' => __DIR__ . '/../psr/clock', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'psr/clock-implementation' => array( - 'dev_requirement' => false, - 'provided' => array( - 0 => '1.0', - ), - ), - 'psr/container' => array( - 'pretty_version' => '2.0.2', - 'version' => '2.0.2.0', - 'reference' => 'c71ecc56dfe541dbd90c5360474fbc405f8d5963', - 'type' => 'library', - 'install_path' => __DIR__ . '/../psr/container', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'psr/container-implementation' => array( - 'dev_requirement' => false, - 'provided' => array( - 0 => '1.1|2.0', - ), - ), - 'psr/event-dispatcher' => array( - 'pretty_version' => '1.0.0', - 'version' => '1.0.0.0', - 'reference' => 'dbefd12671e8a14ec7f180cab83036ed26714bb0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../psr/event-dispatcher', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'psr/event-dispatcher-implementation' => array( - 'dev_requirement' => false, - 'provided' => array( - 0 => '1.0', - ), - ), - 'psr/http-client' => array( - 'pretty_version' => '1.0.3', - 'version' => '1.0.3.0', - 'reference' => 'bb5906edc1c324c9a05aa0873d40117941e5fa90', - 'type' => 'library', - 'install_path' => __DIR__ . '/../psr/http-client', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'psr/http-client-implementation' => array( - 'dev_requirement' => false, - 'provided' => array( - 0 => '1.0', - ), - ), - 'psr/http-factory' => array( - 'pretty_version' => '1.1.0', - 'version' => '1.1.0.0', - 'reference' => '2b4765fddfe3b508ac62f829e852b1501d3f6e8a', - 'type' => 'library', - 'install_path' => __DIR__ . '/../psr/http-factory', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'psr/http-factory-implementation' => array( - 'dev_requirement' => false, - 'provided' => array( - 0 => '1.0', - ), - ), - 'psr/http-message' => array( - 'pretty_version' => '2.0', - 'version' => '2.0.0.0', - 'reference' => '402d35bcb92c70c026d1a6a9883f06b2ead23d71', - 'type' => 'library', - 'install_path' => __DIR__ . '/../psr/http-message', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'psr/http-message-implementation' => array( - 'dev_requirement' => false, - 'provided' => array( - 0 => '1.0', - ), - ), - 'psr/log' => array( - 'pretty_version' => '3.0.2', - 'version' => '3.0.2.0', - 'reference' => 'f16e1d5863e37f8d8c2a01719f5b34baa2b714d3', - 'type' => 'library', - 'install_path' => __DIR__ . '/../psr/log', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'psr/log-implementation' => array( - 'dev_requirement' => false, - 'provided' => array( - 0 => '1.0|2.0|3.0', - 1 => '3.0.0', - ), - ), - 'psr/simple-cache' => array( - 'pretty_version' => '3.0.0', - 'version' => '3.0.0.0', - 'reference' => '764e0b3939f5ca87cb904f570ef9be2d78a07865', - 'type' => 'library', - 'install_path' => __DIR__ . '/../psr/simple-cache', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'psr/simple-cache-implementation' => array( - 'dev_requirement' => false, - 'provided' => array( - 0 => '1.0|2.0|3.0', - ), - ), - 'psy/psysh' => array( - 'pretty_version' => 'v0.12.7', - 'version' => '0.12.7.0', - 'reference' => 'd73fa3c74918ef4522bb8a3bf9cab39161c4b57c', - 'type' => 'library', - 'install_path' => __DIR__ . '/../psy/psysh', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'ralouphie/getallheaders' => array( - 'pretty_version' => '3.0.3', - 'version' => '3.0.3.0', - 'reference' => '120b605dfeb996808c31b6477290a714d356e822', - 'type' => 'library', - 'install_path' => __DIR__ . '/../ralouphie/getallheaders', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'ramsey/collection' => array( - 'pretty_version' => '2.0.0', - 'version' => '2.0.0.0', - 'reference' => 'a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5', - 'type' => 'library', - 'install_path' => __DIR__ . '/../ramsey/collection', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'ramsey/uuid' => array( - 'pretty_version' => '4.7.6', - 'version' => '4.7.6.0', - 'reference' => '91039bc1faa45ba123c4328958e620d382ec7088', - 'type' => 'library', - 'install_path' => __DIR__ . '/../ramsey/uuid', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'rhumsaa/uuid' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => '4.7.6', - ), - ), - 'sabberworm/php-css-parser' => array( - 'pretty_version' => 'v8.7.0', - 'version' => '8.7.0.0', - 'reference' => 'f414ff953002a9b18e3a116f5e462c56f21237cf', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sabberworm/php-css-parser', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'sebastian/cli-parser' => array( - 'pretty_version' => '2.0.1', - 'version' => '2.0.1.0', - 'reference' => 'c34583b87e7b7a8055bf6c450c2c77ce32a24084', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/cli-parser', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'sebastian/code-unit' => array( - 'pretty_version' => '2.0.0', - 'version' => '2.0.0.0', - 'reference' => 'a81fee9eef0b7a76af11d121767abc44c104e503', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/code-unit', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'sebastian/code-unit-reverse-lookup' => array( - 'pretty_version' => '3.0.0', - 'version' => '3.0.0.0', - 'reference' => '5e3a687f7d8ae33fb362c5c0743794bbb2420a1d', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/code-unit-reverse-lookup', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'sebastian/comparator' => array( - 'pretty_version' => '5.0.3', - 'version' => '5.0.3.0', - 'reference' => 'a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/comparator', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'sebastian/complexity' => array( - 'pretty_version' => '3.2.0', - 'version' => '3.2.0.0', - 'reference' => '68ff824baeae169ec9f2137158ee529584553799', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/complexity', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'sebastian/diff' => array( - 'pretty_version' => '5.1.1', - 'version' => '5.1.1.0', - 'reference' => 'c41e007b4b62af48218231d6c2275e4c9b975b2e', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/diff', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'sebastian/environment' => array( - 'pretty_version' => '6.1.0', - 'version' => '6.1.0.0', - 'reference' => '8074dbcd93529b357029f5cc5058fd3e43666984', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/environment', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'sebastian/exporter' => array( - 'pretty_version' => '5.1.2', - 'version' => '5.1.2.0', - 'reference' => '955288482d97c19a372d3f31006ab3f37da47adf', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/exporter', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'sebastian/global-state' => array( - 'pretty_version' => '6.0.2', - 'version' => '6.0.2.0', - 'reference' => '987bafff24ecc4c9ac418cab1145b96dd6e9cbd9', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/global-state', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'sebastian/lines-of-code' => array( - 'pretty_version' => '2.0.2', - 'version' => '2.0.2.0', - 'reference' => '856e7f6a75a84e339195d48c556f23be2ebf75d0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/lines-of-code', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'sebastian/object-enumerator' => array( - 'pretty_version' => '5.0.0', - 'version' => '5.0.0.0', - 'reference' => '202d0e344a580d7f7d04b3fafce6933e59dae906', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/object-enumerator', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'sebastian/object-reflector' => array( - 'pretty_version' => '3.0.0', - 'version' => '3.0.0.0', - 'reference' => '24ed13d98130f0e7122df55d06c5c4942a577957', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/object-reflector', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'sebastian/recursion-context' => array( - 'pretty_version' => '5.0.0', - 'version' => '5.0.0.0', - 'reference' => '05909fb5bc7df4c52992396d0116aed689f93712', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/recursion-context', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'sebastian/type' => array( - 'pretty_version' => '4.0.0', - 'version' => '4.0.0.0', - 'reference' => '462699a16464c3944eefc02ebdd77882bd3925bf', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/type', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'sebastian/version' => array( - 'pretty_version' => '4.0.1', - 'version' => '4.0.1.0', - 'reference' => 'c51fa83a5d8f43f1402e3f32a005e6262244ef17', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/version', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'spatie/laravel-permission' => array( - 'pretty_version' => '5.11.1', - 'version' => '5.11.1.0', - 'reference' => '7090824cca57e693b880ce3aaf7ef78362e28bbd', - 'type' => 'library', - 'install_path' => __DIR__ . '/../spatie/laravel-permission', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'squizlabs/php_codesniffer' => array( - 'pretty_version' => '3.11.2', - 'version' => '3.11.2.0', - 'reference' => '1368f4a58c3c52114b86b1abe8f4098869cb0079', - 'type' => 'library', - 'install_path' => __DIR__ . '/../squizlabs/php_codesniffer', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'symfony/console' => array( - 'pretty_version' => 'v6.4.17', - 'version' => '6.4.17.0', - 'reference' => '799445db3f15768ecc382ac5699e6da0520a0a04', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/console', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/css-selector' => array( - 'pretty_version' => 'v7.2.0', - 'version' => '7.2.0.0', - 'reference' => '601a5ce9aaad7bf10797e3663faefce9e26c24e2', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/css-selector', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/deprecation-contracts' => array( - 'pretty_version' => 'v3.5.1', - 'version' => '3.5.1.0', - 'reference' => '74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/deprecation-contracts', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/error-handler' => array( - 'pretty_version' => 'v6.4.17', - 'version' => '6.4.17.0', - 'reference' => '37ad2380e8c1a8cf62a1200a5c10080b679b446c', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/error-handler', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/event-dispatcher' => array( - 'pretty_version' => 'v7.2.0', - 'version' => '7.2.0.0', - 'reference' => '910c5db85a5356d0fea57680defec4e99eb9c8c1', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/event-dispatcher', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/event-dispatcher-contracts' => array( - 'pretty_version' => 'v3.5.1', - 'version' => '3.5.1.0', - 'reference' => '7642f5e970b672283b7823222ae8ef8bbc160b9f', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/event-dispatcher-contracts', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/event-dispatcher-implementation' => array( - 'dev_requirement' => false, - 'provided' => array( - 0 => '2.0|3.0', - ), - ), - 'symfony/finder' => array( - 'pretty_version' => 'v6.4.17', - 'version' => '6.4.17.0', - 'reference' => '1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/finder', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/http-foundation' => array( - 'pretty_version' => 'v6.4.16', - 'version' => '6.4.16.0', - 'reference' => '431771b7a6f662f1575b3cfc8fd7617aa9864d57', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/http-foundation', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/http-kernel' => array( - 'pretty_version' => 'v6.4.17', - 'version' => '6.4.17.0', - 'reference' => 'c5647393c5ce11833d13e4b70fff4b571d4ac710', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/http-kernel', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/mailer' => array( - 'pretty_version' => 'v6.4.13', - 'version' => '6.4.13.0', - 'reference' => 'c2f7e0d8d7ac8fe25faccf5d8cac462805db2663', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/mailer', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/mime' => array( - 'pretty_version' => 'v6.4.17', - 'version' => '6.4.17.0', - 'reference' => 'ea87c8850a54ff039d3e0ab4ae5586dd4e6c0232', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/mime', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/polyfill-ctype' => array( - 'pretty_version' => 'v1.31.0', - 'version' => '1.31.0.0', - 'reference' => 'a3cc8b044a6ea513310cbd48ef7333b384945638', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/polyfill-ctype', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/polyfill-intl-grapheme' => array( - 'pretty_version' => 'v1.31.0', - 'version' => '1.31.0.0', - 'reference' => 'b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/polyfill-intl-grapheme', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/polyfill-intl-idn' => array( - 'pretty_version' => 'v1.31.0', - 'version' => '1.31.0.0', - 'reference' => 'c36586dcf89a12315939e00ec9b4474adcb1d773', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/polyfill-intl-idn', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/polyfill-intl-normalizer' => array( - 'pretty_version' => 'v1.31.0', - 'version' => '1.31.0.0', - 'reference' => '3833d7255cc303546435cb650316bff708a1c75c', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/polyfill-intl-normalizer', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/polyfill-mbstring' => array( - 'pretty_version' => 'v1.31.0', - 'version' => '1.31.0.0', - 'reference' => '85181ba99b2345b0ef10ce42ecac37612d9fd341', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/polyfill-php80' => array( - 'pretty_version' => 'v1.31.0', - 'version' => '1.31.0.0', - 'reference' => '60328e362d4c2c802a54fcbf04f9d3fb892b4cf8', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/polyfill-php80', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/polyfill-php83' => array( - 'pretty_version' => 'v1.31.0', - 'version' => '1.31.0.0', - 'reference' => '2fb86d65e2d424369ad2905e83b236a8805ba491', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/polyfill-php83', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/polyfill-uuid' => array( - 'pretty_version' => 'v1.31.0', - 'version' => '1.31.0.0', - 'reference' => '21533be36c24be3f4b1669c4725c7d1d2bab4ae2', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/polyfill-uuid', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/process' => array( - 'pretty_version' => 'v6.4.15', - 'version' => '6.4.15.0', - 'reference' => '3cb242f059c14ae08591c5c4087d1fe443564392', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/process', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/routing' => array( - 'pretty_version' => 'v6.4.16', - 'version' => '6.4.16.0', - 'reference' => '91e02e606b4b705c2f4fb42f7e7708b7923a3220', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/routing', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/service-contracts' => array( - 'pretty_version' => 'v3.5.1', - 'version' => '3.5.1.0', - 'reference' => 'e53260aabf78fb3d63f8d79d69ece59f80d5eda0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/service-contracts', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/string' => array( - 'pretty_version' => 'v7.2.0', - 'version' => '7.2.0.0', - 'reference' => '446e0d146f991dde3e73f45f2c97a9faad773c82', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/string', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/translation' => array( - 'pretty_version' => 'v6.4.13', - 'version' => '6.4.13.0', - 'reference' => 'bee9bfabfa8b4045a66bf82520e492cddbaffa66', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/translation', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/translation-contracts' => array( - 'pretty_version' => 'v3.5.1', - 'version' => '3.5.1.0', - 'reference' => '4667ff3bd513750603a09c8dedbea942487fb07c', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/translation-contracts', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/translation-implementation' => array( - 'dev_requirement' => false, - 'provided' => array( - 0 => '2.3|3.0', - ), - ), - 'symfony/uid' => array( - 'pretty_version' => 'v6.4.13', - 'version' => '6.4.13.0', - 'reference' => '18eb207f0436a993fffbdd811b5b8fa35fa5e007', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/uid', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/var-dumper' => array( - 'pretty_version' => 'v6.4.15', - 'version' => '6.4.15.0', - 'reference' => '38254d5a5ac2e61f2b52f9caf54e7aa3c9d36b80', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/var-dumper', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'theseer/tokenizer' => array( - 'pretty_version' => '1.2.3', - 'version' => '1.2.3.0', - 'reference' => '737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2', - 'type' => 'library', - 'install_path' => __DIR__ . '/../theseer/tokenizer', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'tijsverkoyen/css-to-inline-styles' => array( - 'pretty_version' => 'v2.3.0', - 'version' => '2.3.0.0', - 'reference' => '0d72ac1c00084279c1816675284073c5a337c20d', - 'type' => 'library', - 'install_path' => __DIR__ . '/../tijsverkoyen/css-to-inline-styles', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'vlucas/phpdotenv' => array( - 'pretty_version' => 'v5.6.1', - 'version' => '5.6.1.0', - 'reference' => 'a59a13791077fe3d44f90e7133eb68e7d22eaff2', - 'type' => 'library', - 'install_path' => __DIR__ . '/../vlucas/phpdotenv', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'voku/portable-ascii' => array( - 'pretty_version' => '2.0.3', - 'version' => '2.0.3.0', - 'reference' => 'b1d923f88091c6bf09699efcd7c8a1b1bfd7351d', - 'type' => 'library', - 'install_path' => __DIR__ . '/../voku/portable-ascii', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'webmozart/assert' => array( - 'pretty_version' => '1.11.0', - 'version' => '1.11.0.0', - 'reference' => '11cb2199493b2f8a3b53e7f19068fc6aac760991', - 'type' => 'library', - 'install_path' => __DIR__ . '/../webmozart/assert', - 'aliases' => array(), - 'dev_requirement' => false, - ), - ), -); diff --git a/docker/streamline-src/vendor/dflydev/dot-access-data/CHANGELOG.md b/docker/streamline-src/vendor/dflydev/dot-access-data/CHANGELOG.md deleted file mode 100644 index b8b468d7..00000000 --- a/docker/streamline-src/vendor/dflydev/dot-access-data/CHANGELOG.md +++ /dev/null @@ -1,74 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [Unreleased] - -## [3.0.3] - 2024-07-08 - -### Fixed - - - Fixed PHP 8.4 deprecation notices (#47) - -## [3.0.2] - 2022-10-27 - -### Fixed - - - Added missing return types to docblocks (#44, #45) - -## [3.0.1] - 2021-08-13 - -### Added - - - Adds ReturnTypeWillChange to suppress PHP 8.1 warnings (#40) - -## [3.0.0] - 2021-01-01 - -### Added - - Added support for both `.` and `/`-delimited key paths (#24) - - Added parameter and return types to everything; enabled strict type checks (#18) - - Added new exception classes to better identify certain types of errors (#20) - - `Data` now implements `ArrayAccess` (#17) - - Added ability to merge non-associative array values (#31, #32) - -### Changed - - All thrown exceptions are now instances or subclasses of `DataException` (#20) - - Calling `get()` on a missing key path without providing a default will throw a `MissingPathException` instead of returning `null` (#29) - - Bumped supported PHP versions to 7.1 - 8.x (#18) - -### Fixed - - Fixed incorrect merging of array values into string values (#32) - - Fixed `get()` method behaving as if keys with `null` values didn't exist - -## [2.0.0] - 2017-12-21 - -### Changed - - Bumped supported PHP versions to 7.0 - 7.4 (#12) - - Switched to PSR-4 autoloading - -## [1.1.0] - 2017-01-20 - -### Added - - Added new `has()` method to check for the existence of the given key (#4, #7) - -## [1.0.1] - 2015-08-12 - -### Added - - Added new optional `$default` parameter to the `get()` method (#2) - -## [1.0.0] - 2012-07-17 - -**Initial release!** - -[Unreleased]: https://github.com/dflydev/dflydev-dot-access-data/compare/v3.0.3...main -[3.0.3]: https://github.com/dflydev/dflydev-dot-access-data/compare/v3.0.2...v3.0.3 -[3.0.2]: https://github.com/dflydev/dflydev-dot-access-data/compare/v3.0.1...v3.0.2 -[3.0.1]: https://github.com/dflydev/dflydev-dot-access-data/compare/v3.0.0...v3.0.1 -[3.0.0]: https://github.com/dflydev/dflydev-dot-access-data/compare/v2.0.0...v3.0.0 -[2.0.0]: https://github.com/dflydev/dflydev-dot-access-data/compare/v1.1.0...v2.0.0 -[1.1.0]: https://github.com/dflydev/dflydev-dot-access-data/compare/v1.0.1...v1.1.0 -[1.0.1]: https://github.com/dflydev/dflydev-dot-access-data/compare/v1.0.0...v1.0.1 -[1.0.0]: https://github.com/dflydev/dflydev-dot-access-data/releases/tag/v1.0.0 diff --git a/docker/streamline-src/vendor/dflydev/dot-access-data/src/Exception/MissingPathException.php b/docker/streamline-src/vendor/dflydev/dot-access-data/src/Exception/MissingPathException.php deleted file mode 100644 index 92577e78..00000000 --- a/docker/streamline-src/vendor/dflydev/dot-access-data/src/Exception/MissingPathException.php +++ /dev/null @@ -1,37 +0,0 @@ -path = $path; - - parent::__construct($message, $code, $previous); - } - - public function getPath(): string - { - return $this->path; - } -} diff --git a/docker/streamline-src/vendor/doctrine/dbal/README.md b/docker/streamline-src/vendor/doctrine/dbal/README.md deleted file mode 100644 index 8d68192e..00000000 --- a/docker/streamline-src/vendor/doctrine/dbal/README.md +++ /dev/null @@ -1,50 +0,0 @@ -# Doctrine DBAL - -| [5.0-dev][5.0] | [4.3-dev][4.3] | [4.2][4.2] | [3.9][3.9] | -|:---------------------------------------------------:|:---------------------------------------------------:|:---------------------------------------------------:|:---------------------------------------------------:| -| [![GitHub Actions][GA 5.0 image]][GA 5.0] | [![GitHub Actions][GA 4.3 image]][GA 4.3] | [![GitHub Actions][GA 4.2 image]][GA 4.2] | [![GitHub Actions][GA 3.9 image]][GA 3.9] | -| [![AppVeyor][AppVeyor 5.0 image]][AppVeyor 5.0] | [![AppVeyor][AppVeyor 4.3 image]][AppVeyor 4.3] | [![AppVeyor][AppVeyor 4.2 image]][AppVeyor 4.2] | [![AppVeyor][AppVeyor 3.9 image]][AppVeyor 3.9] | -| [![Code Coverage][Coverage 5.0 image]][CodeCov 5.0] | [![Code Coverage][Coverage 4.3 image]][CodeCov 4.3] | [![Code Coverage][Coverage 4.2 image]][CodeCov 4.2] | [![Code Coverage][Coverage 3.9 image]][CodeCov 3.9] | -| N/A | N/A | [![Type Coverage][TypeCov image]][TypeCov] | N/A | - -Powerful ***D***ata***B***ase ***A***bstraction ***L***ayer with many features for database schema introspection and schema management. - -## More resources: - -* [Website](http://www.doctrine-project.org/projects/dbal.html) -* [Documentation](http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/) -* [Issue Tracker](https://github.com/doctrine/dbal/issues) - - [Coverage 5.0 image]: https://codecov.io/gh/doctrine/dbal/branch/5.0.x/graph/badge.svg - [5.0]: https://github.com/doctrine/dbal/tree/5.0.x - [CodeCov 5.0]: https://codecov.io/gh/doctrine/dbal/branch/5.0.x - [AppVeyor 5.0]: https://ci.appveyor.com/project/doctrine/dbal/branch/5.0.x - [AppVeyor 5.0 image]: https://ci.appveyor.com/api/projects/status/i88kitq8qpbm0vie/branch/5.0.x?svg=true - [GA 5.0]: https://github.com/doctrine/dbal/actions?query=workflow%3A%22Continuous+Integration%22+branch%3A5.0.x - [GA 5.0 image]: https://github.com/doctrine/dbal/workflows/Continuous%20Integration/badge.svg?branch=5.0.x - - [Coverage 4.3 image]: https://codecov.io/gh/doctrine/dbal/branch/4.3.x/graph/badge.svg - [4.3]: https://github.com/doctrine/dbal/tree/4.3.x - [CodeCov 4.3]: https://codecov.io/gh/doctrine/dbal/branch/4.3.x - [AppVeyor 4.3]: https://ci.appveyor.com/project/doctrine/dbal/branch/4.3.x - [AppVeyor 4.3 image]: https://ci.appveyor.com/api/projects/status/i88kitq8qpbm0vie/branch/4.3.x?svg=true - [GA 4.3]: https://github.com/doctrine/dbal/actions?query=workflow%3A%22Continuous+Integration%22+branch%3A4.3.x - [GA 4.3 image]: https://github.com/doctrine/dbal/workflows/Continuous%20Integration/badge.svg?branch=4.3.x - - [Coverage 4.2 image]: https://codecov.io/gh/doctrine/dbal/branch/4.2.x/graph/badge.svg - [4.2]: https://github.com/doctrine/dbal/tree/4.2.x - [CodeCov 4.2]: https://codecov.io/gh/doctrine/dbal/branch/4.2.x - [AppVeyor 4.2]: https://ci.appveyor.com/project/doctrine/dbal/branch/4.2.x - [AppVeyor 4.2 image]: https://ci.appveyor.com/api/projects/status/i88kitq8qpbm0vie/branch/4.2.x?svg=true - [GA 4.2]: https://github.com/doctrine/dbal/actions?query=workflow%3A%22Continuous+Integration%22+branch%3A4.2.x - [GA 4.2 image]: https://github.com/doctrine/dbal/workflows/Continuous%20Integration/badge.svg?branch=4.2.x - [TypeCov]: https://shepherd.dev/github/doctrine/dbal - [TypeCov image]: https://shepherd.dev/github/doctrine/dbal/coverage.svg - - [Coverage 3.9 image]: https://codecov.io/gh/doctrine/dbal/branch/3.9.x/graph/badge.svg - [3.9]: https://github.com/doctrine/dbal/tree/3.9.x - [CodeCov 3.9]: https://codecov.io/gh/doctrine/dbal/branch/3.9.x - [AppVeyor 3.9]: https://ci.appveyor.com/project/doctrine/dbal/branch/3.9.x - [AppVeyor 3.9 image]: https://ci.appveyor.com/api/projects/status/i88kitq8qpbm0vie/branch/3.9.x?svg=true - [GA 3.9]: https://github.com/doctrine/dbal/actions?query=workflow%3A%22Continuous+Integration%22+branch%3A3.9.x - [GA 3.9 image]: https://github.com/doctrine/dbal/workflows/Continuous%20Integration/badge.svg?branch=3.9.x diff --git a/docker/streamline-src/vendor/doctrine/dbal/composer.json b/docker/streamline-src/vendor/doctrine/dbal/composer.json deleted file mode 100644 index 4680845e..00000000 --- a/docker/streamline-src/vendor/doctrine/dbal/composer.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "name": "doctrine/dbal", - "type": "library", - "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", - "keywords": [ - "abstraction", - "database", - "dbal", - "db2", - "mariadb", - "mssql", - "mysql", - "pgsql", - "postgresql", - "oci8", - "oracle", - "pdo", - "queryobject", - "sasql", - "sql", - "sqlite", - "sqlserver", - "sqlsrv" - ], - "homepage": "https://www.doctrine-project.org/projects/dbal.html", - "license": "MIT", - "authors": [ - {"name": "Guilherme Blanco", "email": "guilhermeblanco@gmail.com"}, - {"name": "Roman Borschel", "email": "roman@code-factory.org"}, - {"name": "Benjamin Eberlei", "email": "kontakt@beberlei.de"}, - {"name": "Jonathan Wage", "email": "jonwage@gmail.com"} - ], - "require": { - "php": "^7.4 || ^8.0", - "composer-runtime-api": "^2", - "doctrine/cache": "^1.11|^2.0", - "doctrine/deprecations": "^0.5.3|^1", - "doctrine/event-manager": "^1|^2", - "psr/cache": "^1|^2|^3", - "psr/log": "^1|^2|^3" - }, - "require-dev": { - "doctrine/coding-standard": "12.0.0", - "fig/log-test": "^1", - "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "1.12.6", - "phpstan/phpstan-strict-rules": "^1.6", - "phpunit/phpunit": "9.6.20", - "psalm/plugin-phpunit": "0.18.4", - "slevomat/coding-standard": "8.13.1", - "squizlabs/php_codesniffer": "3.10.2", - "symfony/cache": "^5.4|^6.0|^7.0", - "symfony/console": "^4.4|^5.4|^6.0|^7.0", - "vimeo/psalm": "4.30.0" - }, - "suggest": { - "symfony/console": "For helpful console commands such as SQL execution and import of files." - }, - "bin": ["bin/doctrine-dbal"], - "config": { - "sort-packages": true, - "allow-plugins": { - "dealerdirect/phpcodesniffer-composer-installer": true, - "composer/package-versions-deprecated": true - } - }, - "autoload": { - "psr-4": { "Doctrine\\DBAL\\": "src" } - }, - "autoload-dev": { - "psr-4": { "Doctrine\\DBAL\\Tests\\": "tests" } - } -} diff --git a/docker/streamline-src/vendor/doctrine/dbal/src/Connection.php b/docker/streamline-src/vendor/doctrine/dbal/src/Connection.php deleted file mode 100644 index b9756706..00000000 --- a/docker/streamline-src/vendor/doctrine/dbal/src/Connection.php +++ /dev/null @@ -1,2001 +0,0 @@ - - * @psalm-var Params - */ - private array $params; - - /** - * The database platform object used by the connection or NULL before it's initialized. - */ - private ?AbstractPlatform $platform = null; - - private ?ExceptionConverter $exceptionConverter = null; - private ?Parser $parser = null; - - /** - * The schema manager. - * - * @deprecated Use {@see createSchemaManager()} instead. - * - * @var AbstractSchemaManager|null - */ - protected $_schemaManager; - - /** - * The used DBAL driver. - * - * @var Driver - */ - protected $_driver; - - /** - * Flag that indicates whether the current transaction is marked for rollback only. - */ - private bool $isRollbackOnly = false; - - private SchemaManagerFactory $schemaManagerFactory; - - /** - * Initializes a new instance of the Connection class. - * - * @internal The connection can be only instantiated by the driver manager. - * - * @param array $params The connection parameters. - * @param Driver $driver The driver to use. - * @param Configuration|null $config The configuration, optional. - * @param EventManager|null $eventManager The event manager, optional. - * @psalm-param Params $params - * - * @throws Exception - */ - public function __construct( - #[SensitiveParameter] - array $params, - Driver $driver, - ?Configuration $config = null, - ?EventManager $eventManager = null - ) { - $this->_driver = $driver; - $this->params = $params; - - // Create default config and event manager if none given - $config ??= new Configuration(); - $eventManager ??= new EventManager(); - - $this->_config = $config; - $this->_eventManager = $eventManager; - - if (isset($params['platform'])) { - if (! $params['platform'] instanceof Platforms\AbstractPlatform) { - throw Exception::invalidPlatformType($params['platform']); - } - - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5699', - 'The "platform" connection parameter is deprecated.' - . ' Use a driver middleware that would instantiate the platform instead.', - ); - - $this->platform = $params['platform']; - $this->platform->setEventManager($this->_eventManager); - $this->platform->setDisableTypeComments($config->getDisableTypeComments()); - } - - $this->_expr = $this->createExpressionBuilder(); - - $this->autoCommit = $config->getAutoCommit(); - - $schemaManagerFactory = $config->getSchemaManagerFactory(); - if ($schemaManagerFactory === null) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5812', - 'Not configuring a schema manager factory is deprecated.' - . ' Use %s which is going to be the default in DBAL 4.', - DefaultSchemaManagerFactory::class, - ); - - $schemaManagerFactory = new LegacySchemaManagerFactory(); - } - - $this->schemaManagerFactory = $schemaManagerFactory; - } - - /** - * Gets the parameters used during instantiation. - * - * @internal - * - * @return array - * @psalm-return Params - */ - public function getParams() - { - return $this->params; - } - - /** - * Gets the name of the currently selected database. - * - * @return string|null The name of the database or NULL if a database is not selected. - * The platforms which don't support the concept of a database (e.g. embedded databases) - * must always return a string as an indicator of an implicitly selected database. - * - * @throws Exception - */ - public function getDatabase() - { - $platform = $this->getDatabasePlatform(); - $query = $platform->getDummySelectSQL($platform->getCurrentDatabaseExpression()); - $database = $this->fetchOne($query); - - assert(is_string($database) || $database === null); - - return $database; - } - - /** - * Gets the DBAL driver instance. - * - * @return Driver - */ - public function getDriver() - { - return $this->_driver; - } - - /** - * Gets the Configuration used by the Connection. - * - * @return Configuration - */ - public function getConfiguration() - { - return $this->_config; - } - - /** - * Gets the EventManager used by the Connection. - * - * @deprecated - * - * @return EventManager - */ - public function getEventManager() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - '%s is deprecated.', - __METHOD__, - ); - - return $this->_eventManager; - } - - /** - * Gets the DatabasePlatform for the connection. - * - * @return AbstractPlatform - * - * @throws Exception - */ - public function getDatabasePlatform() - { - if ($this->platform === null) { - $this->platform = $this->detectDatabasePlatform(); - $this->platform->setEventManager($this->_eventManager); - $this->platform->setDisableTypeComments($this->_config->getDisableTypeComments()); - } - - return $this->platform; - } - - /** - * Creates an expression builder for the connection. - */ - public function createExpressionBuilder(): ExpressionBuilder - { - return new ExpressionBuilder($this); - } - - /** - * Gets the ExpressionBuilder for the connection. - * - * @deprecated Use {@see createExpressionBuilder()} instead. - * - * @return ExpressionBuilder - */ - public function getExpressionBuilder() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4515', - 'Connection::getExpressionBuilder() is deprecated,' - . ' use Connection::createExpressionBuilder() instead.', - ); - - return $this->_expr; - } - - /** - * Establishes the connection with the database. - * - * @internal This method will be made protected in DBAL 4.0. - * - * @return bool TRUE if the connection was successfully established, FALSE if - * the connection is already open. - * - * @throws Exception - * - * @psalm-assert !null $this->_conn - */ - public function connect() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4966', - 'Public access to Connection::connect() is deprecated.', - ); - - if ($this->_conn !== null) { - return false; - } - - try { - $this->_conn = $this->_driver->connect($this->params); - } catch (Driver\Exception $e) { - throw $this->convertException($e); - } - - if ($this->autoCommit === false) { - $this->beginTransaction(); - } - - if ($this->_eventManager->hasListeners(Events::postConnect)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - 'Subscribing to %s events is deprecated. Implement a middleware instead.', - Events::postConnect, - ); - - $eventArgs = new Event\ConnectionEventArgs($this); - $this->_eventManager->dispatchEvent(Events::postConnect, $eventArgs); - } - - return true; - } - - /** - * Detects and sets the database platform. - * - * Evaluates custom platform class and version in order to set the correct platform. - * - * @throws Exception If an invalid platform was specified for this connection. - */ - private function detectDatabasePlatform(): AbstractPlatform - { - $version = $this->getDatabasePlatformVersion(); - - if ($version !== null) { - assert($this->_driver instanceof VersionAwarePlatformDriver); - - return $this->_driver->createDatabasePlatformForVersion($version); - } - - return $this->_driver->getDatabasePlatform(); - } - - /** - * Returns the version of the related platform if applicable. - * - * Returns null if either the driver is not capable to create version - * specific platform instances, no explicit server version was specified - * or the underlying driver connection cannot determine the platform - * version without having to query it (performance reasons). - * - * @return string|null - * - * @throws Throwable - */ - private function getDatabasePlatformVersion() - { - // Driver does not support version specific platforms. - if (! $this->_driver instanceof VersionAwarePlatformDriver) { - return null; - } - - // Explicit platform version requested (supersedes auto-detection). - if (isset($this->params['serverVersion'])) { - return $this->params['serverVersion']; - } - - if (isset($this->params['primary']) && isset($this->params['primary']['serverVersion'])) { - return $this->params['primary']['serverVersion']; - } - - // If not connected, we need to connect now to determine the platform version. - if ($this->_conn === null) { - try { - $this->connect(); - } catch (Exception $originalException) { - if (! isset($this->params['dbname'])) { - throw $originalException; - } - - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5707', - 'Relying on a fallback connection used to determine the database platform while connecting' - . ' to a non-existing database is deprecated. Either use an existing database name in' - . ' connection parameters or omit the database name if the platform' - . ' and the server configuration allow that.', - ); - - // The database to connect to might not yet exist. - // Retry detection without database name connection parameter. - $params = $this->params; - - unset($this->params['dbname']); - - try { - $this->connect(); - } catch (Exception $fallbackException) { - // Either the platform does not support database-less connections - // or something else went wrong. - throw $originalException; - } finally { - $this->params = $params; - } - - $serverVersion = $this->getServerVersion(); - - // Close "temporary" connection to allow connecting to the real database again. - $this->close(); - - return $serverVersion; - } - } - - return $this->getServerVersion(); - } - - /** - * Returns the database server version if the underlying driver supports it. - * - * @return string|null - * - * @throws Exception - */ - private function getServerVersion() - { - $connection = $this->getWrappedConnection(); - - // Automatic platform version detection. - if ($connection instanceof ServerInfoAwareConnection) { - try { - return $connection->getServerVersion(); - } catch (Driver\Exception $e) { - throw $this->convertException($e); - } - } - - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4750', - 'Not implementing the ServerInfoAwareConnection interface in %s is deprecated', - get_class($connection), - ); - - // Unable to detect platform version. - return null; - } - - /** - * Returns the current auto-commit mode for this connection. - * - * @see setAutoCommit - * - * @return bool True if auto-commit mode is currently enabled for this connection, false otherwise. - */ - public function isAutoCommit() - { - return $this->autoCommit === true; - } - - /** - * Sets auto-commit mode for this connection. - * - * If a connection is in auto-commit mode, then all its SQL statements will be executed and committed as individual - * transactions. Otherwise, its SQL statements are grouped into transactions that are terminated by a call to either - * the method commit or the method rollback. By default, new connections are in auto-commit mode. - * - * NOTE: If this method is called during a transaction and the auto-commit mode is changed, the transaction is - * committed. If this method is called and the auto-commit mode is not changed, the call is a no-op. - * - * @see isAutoCommit - * - * @param bool $autoCommit True to enable auto-commit mode; false to disable it. - * - * @return void - */ - public function setAutoCommit($autoCommit) - { - $autoCommit = (bool) $autoCommit; - - // Mode not changed, no-op. - if ($autoCommit === $this->autoCommit) { - return; - } - - $this->autoCommit = $autoCommit; - - // Commit all currently active transactions if any when switching auto-commit mode. - if ($this->_conn === null || $this->transactionNestingLevel === 0) { - return; - } - - $this->commitAll(); - } - - /** - * Prepares and executes an SQL query and returns the first row of the result - * as an associative array. - * - * @param string $query SQL query - * @param list|array $params Query parameters - * @param array|array $types Parameter types - * - * @return array|false False is returned if no rows are found. - * - * @throws Exception - */ - public function fetchAssociative(string $query, array $params = [], array $types = []) - { - return $this->executeQuery($query, $params, $types)->fetchAssociative(); - } - - /** - * Prepares and executes an SQL query and returns the first row of the result - * as a numerically indexed array. - * - * @param string $query SQL query - * @param list|array $params Query parameters - * @param array|array $types Parameter types - * - * @return list|false False is returned if no rows are found. - * - * @throws Exception - */ - public function fetchNumeric(string $query, array $params = [], array $types = []) - { - return $this->executeQuery($query, $params, $types)->fetchNumeric(); - } - - /** - * Prepares and executes an SQL query and returns the value of a single column - * of the first row of the result. - * - * @param string $query SQL query - * @param list|array $params Query parameters - * @param array|array $types Parameter types - * - * @return mixed|false False is returned if no rows are found. - * - * @throws Exception - */ - public function fetchOne(string $query, array $params = [], array $types = []) - { - return $this->executeQuery($query, $params, $types)->fetchOne(); - } - - /** - * Whether an actual connection to the database is established. - * - * @return bool - */ - public function isConnected() - { - return $this->_conn !== null; - } - - /** - * Checks whether a transaction is currently active. - * - * @return bool TRUE if a transaction is currently active, FALSE otherwise. - */ - public function isTransactionActive() - { - return $this->transactionNestingLevel > 0; - } - - /** - * Adds condition based on the criteria to the query components - * - * @param array $criteria Map of key columns to their values - * @param string[] $columns Column names - * @param mixed[] $values Column values - * @param string[] $conditions Key conditions - * - * @throws Exception - */ - private function addCriteriaCondition( - array $criteria, - array &$columns, - array &$values, - array &$conditions - ): void { - $platform = $this->getDatabasePlatform(); - - foreach ($criteria as $columnName => $value) { - if ($value === null) { - $conditions[] = $platform->getIsNullExpression($columnName); - continue; - } - - $columns[] = $columnName; - $values[] = $value; - $conditions[] = $columnName . ' = ?'; - } - } - - /** - * Executes an SQL DELETE statement on a table. - * - * Table expression and columns are not escaped and are not safe for user-input. - * - * @param string $table Table name - * @param array $criteria Deletion criteria - * @param array|array $types Parameter types - * - * @return int|string The number of affected rows. - * - * @throws Exception - */ - public function delete($table, array $criteria, array $types = []) - { - if (count($criteria) === 0) { - throw InvalidArgumentException::fromEmptyCriteria(); - } - - $columns = $values = $conditions = []; - - $this->addCriteriaCondition($criteria, $columns, $values, $conditions); - - return $this->executeStatement( - 'DELETE FROM ' . $table . ' WHERE ' . implode(' AND ', $conditions), - $values, - is_string(key($types)) ? $this->extractTypeValues($columns, $types) : $types, - ); - } - - /** - * Closes the connection. - * - * @return void - */ - public function close() - { - $this->_conn = null; - $this->transactionNestingLevel = 0; - } - - /** - * Sets the transaction isolation level. - * - * @param TransactionIsolationLevel::* $level The level to set. - * - * @return int|string - * - * @throws Exception - */ - public function setTransactionIsolation($level) - { - $this->transactionIsolationLevel = $level; - - return $this->executeStatement($this->getDatabasePlatform()->getSetTransactionIsolationSQL($level)); - } - - /** - * Gets the currently active transaction isolation level. - * - * @return TransactionIsolationLevel::* The current transaction isolation level. - * - * @throws Exception - */ - public function getTransactionIsolation() - { - return $this->transactionIsolationLevel ??= $this->getDatabasePlatform()->getDefaultTransactionIsolationLevel(); - } - - /** - * Executes an SQL UPDATE statement on a table. - * - * Table expression and columns are not escaped and are not safe for user-input. - * - * @param string $table Table name - * @param array $data Column-value pairs - * @param array $criteria Update criteria - * @param array|array $types Parameter types - * - * @return int|string The number of affected rows. - * - * @throws Exception - */ - public function update($table, array $data, array $criteria, array $types = []) - { - $columns = $values = $conditions = $set = []; - - foreach ($data as $columnName => $value) { - $columns[] = $columnName; - $values[] = $value; - $set[] = $columnName . ' = ?'; - } - - $this->addCriteriaCondition($criteria, $columns, $values, $conditions); - - if (is_string(key($types))) { - $types = $this->extractTypeValues($columns, $types); - } - - $sql = 'UPDATE ' . $table . ' SET ' . implode(', ', $set) - . ' WHERE ' . implode(' AND ', $conditions); - - return $this->executeStatement($sql, $values, $types); - } - - /** - * Inserts a table row with specified data. - * - * Table expression and columns are not escaped and are not safe for user-input. - * - * @param string $table Table name - * @param array $data Column-value pairs - * @param array|array $types Parameter types - * - * @return int|string The number of affected rows. - * - * @throws Exception - */ - public function insert($table, array $data, array $types = []) - { - if (count($data) === 0) { - return $this->executeStatement('INSERT INTO ' . $table . ' () VALUES ()'); - } - - $columns = []; - $values = []; - $set = []; - - foreach ($data as $columnName => $value) { - $columns[] = $columnName; - $values[] = $value; - $set[] = '?'; - } - - return $this->executeStatement( - 'INSERT INTO ' . $table . ' (' . implode(', ', $columns) . ')' . - ' VALUES (' . implode(', ', $set) . ')', - $values, - is_string(key($types)) ? $this->extractTypeValues($columns, $types) : $types, - ); - } - - /** - * Extract ordered type list from an ordered column list and type map. - * - * @param array $columnList - * @param array|array $types - * - * @return array|array - */ - private function extractTypeValues(array $columnList, array $types): array - { - $typeValues = []; - - foreach ($columnList as $columnName) { - $typeValues[] = $types[$columnName] ?? ParameterType::STRING; - } - - return $typeValues; - } - - /** - * Quotes a string so it can be safely used as a table or column name, even if - * it is a reserved name. - * - * Delimiting style depends on the underlying database platform that is being used. - * - * NOTE: Just because you CAN use quoted identifiers does not mean - * you SHOULD use them. In general, they end up causing way more - * problems than they solve. - * - * @param string $str The name to be quoted. - * - * @return string The quoted name. - */ - public function quoteIdentifier($str) - { - return $this->getDatabasePlatform()->quoteIdentifier($str); - } - - /** - * The usage of this method is discouraged. Use prepared statements - * or {@see AbstractPlatform::quoteStringLiteral()} instead. - * - * @param mixed $value - * @param int|string|Type|null $type - * - * @return mixed - */ - public function quote($value, $type = ParameterType::STRING) - { - $connection = $this->getWrappedConnection(); - - [$value, $bindingType] = $this->getBindingInfo($value, $type); - - return $connection->quote($value, $bindingType); - } - - /** - * Prepares and executes an SQL query and returns the result as an array of numeric arrays. - * - * @param string $query SQL query - * @param list|array $params Query parameters - * @param array|array $types Parameter types - * - * @return list> - * - * @throws Exception - */ - public function fetchAllNumeric(string $query, array $params = [], array $types = []): array - { - return $this->executeQuery($query, $params, $types)->fetchAllNumeric(); - } - - /** - * Prepares and executes an SQL query and returns the result as an array of associative arrays. - * - * @param string $query SQL query - * @param list|array $params Query parameters - * @param array|array $types Parameter types - * - * @return list> - * - * @throws Exception - */ - public function fetchAllAssociative(string $query, array $params = [], array $types = []): array - { - return $this->executeQuery($query, $params, $types)->fetchAllAssociative(); - } - - /** - * Prepares and executes an SQL query and returns the result as an associative array with the keys - * mapped to the first column and the values mapped to the second column. - * - * @param string $query SQL query - * @param list|array $params Query parameters - * @param array|array $types Parameter types - * - * @return array - * - * @throws Exception - */ - public function fetchAllKeyValue(string $query, array $params = [], array $types = []): array - { - return $this->executeQuery($query, $params, $types)->fetchAllKeyValue(); - } - - /** - * Prepares and executes an SQL query and returns the result as an associative array with the keys mapped - * to the first column and the values being an associative array representing the rest of the columns - * and their values. - * - * @param string $query SQL query - * @param list|array $params Query parameters - * @param array|array $types Parameter types - * - * @return array> - * - * @throws Exception - */ - public function fetchAllAssociativeIndexed(string $query, array $params = [], array $types = []): array - { - return $this->executeQuery($query, $params, $types)->fetchAllAssociativeIndexed(); - } - - /** - * Prepares and executes an SQL query and returns the result as an array of the first column values. - * - * @param string $query SQL query - * @param list|array $params Query parameters - * @param array|array $types Parameter types - * - * @return list - * - * @throws Exception - */ - public function fetchFirstColumn(string $query, array $params = [], array $types = []): array - { - return $this->executeQuery($query, $params, $types)->fetchFirstColumn(); - } - - /** - * Prepares and executes an SQL query and returns the result as an iterator over rows represented as numeric arrays. - * - * @param string $query SQL query - * @param list|array $params Query parameters - * @param array|array $types Parameter types - * - * @return Traversable> - * - * @throws Exception - */ - public function iterateNumeric(string $query, array $params = [], array $types = []): Traversable - { - return $this->executeQuery($query, $params, $types)->iterateNumeric(); - } - - /** - * Prepares and executes an SQL query and returns the result as an iterator over rows represented - * as associative arrays. - * - * @param string $query SQL query - * @param list|array $params Query parameters - * @param array|array $types Parameter types - * - * @return Traversable> - * - * @throws Exception - */ - public function iterateAssociative(string $query, array $params = [], array $types = []): Traversable - { - return $this->executeQuery($query, $params, $types)->iterateAssociative(); - } - - /** - * Prepares and executes an SQL query and returns the result as an iterator with the keys - * mapped to the first column and the values mapped to the second column. - * - * @param string $query SQL query - * @param list|array $params Query parameters - * @param array|array $types Parameter types - * - * @return Traversable - * - * @throws Exception - */ - public function iterateKeyValue(string $query, array $params = [], array $types = []): Traversable - { - return $this->executeQuery($query, $params, $types)->iterateKeyValue(); - } - - /** - * Prepares and executes an SQL query and returns the result as an iterator with the keys mapped - * to the first column and the values being an associative array representing the rest of the columns - * and their values. - * - * @param string $query SQL query - * @param list|array $params Query parameters - * @param array|array $types Parameter types - * - * @return Traversable> - * - * @throws Exception - */ - public function iterateAssociativeIndexed(string $query, array $params = [], array $types = []): Traversable - { - return $this->executeQuery($query, $params, $types)->iterateAssociativeIndexed(); - } - - /** - * Prepares and executes an SQL query and returns the result as an iterator over the first column values. - * - * @param string $query SQL query - * @param list|array $params Query parameters - * @param array|array $types Parameter types - * - * @return Traversable - * - * @throws Exception - */ - public function iterateColumn(string $query, array $params = [], array $types = []): Traversable - { - return $this->executeQuery($query, $params, $types)->iterateColumn(); - } - - /** - * Prepares an SQL statement. - * - * @param string $sql The SQL statement to prepare. - * - * @throws Exception - */ - public function prepare(string $sql): Statement - { - $connection = $this->getWrappedConnection(); - - try { - $statement = $connection->prepare($sql); - } catch (Driver\Exception $e) { - throw $this->convertExceptionDuringQuery($e, $sql); - } - - return new Statement($this, $statement, $sql); - } - - /** - * Executes an, optionally parameterized, SQL query. - * - * If the query is parametrized, a prepared statement is used. - * If an SQLLogger is configured, the execution is logged. - * - * @param string $sql SQL query - * @param list|array $params Query parameters - * @param array|array $types Parameter types - * - * @throws Exception - */ - public function executeQuery( - string $sql, - array $params = [], - $types = [], - ?QueryCacheProfile $qcp = null - ): Result { - if ($qcp !== null) { - return $this->executeCacheQuery($sql, $params, $types, $qcp); - } - - $connection = $this->getWrappedConnection(); - - $logger = $this->_config->getSQLLogger(); - if ($logger !== null) { - $logger->startQuery($sql, $params, $types); - } - - try { - if (count($params) > 0) { - if ($this->needsArrayParameterConversion($params, $types)) { - [$sql, $params, $types] = $this->expandArrayParameters($sql, $params, $types); - } - - $stmt = $connection->prepare($sql); - - $this->bindParameters($stmt, $params, $types); - - $result = $stmt->execute(); - } else { - $result = $connection->query($sql); - } - - return new Result($result, $this); - } catch (Driver\Exception $e) { - throw $this->convertExceptionDuringQuery($e, $sql, $params, $types); - } finally { - if ($logger !== null) { - $logger->stopQuery(); - } - } - } - - /** - * Executes a caching query. - * - * @param string $sql SQL query - * @param list|array $params Query parameters - * @param array|array $types Parameter types - * - * @throws CacheException - * @throws Exception - */ - public function executeCacheQuery($sql, $params, $types, QueryCacheProfile $qcp): Result - { - $resultCache = $qcp->getResultCache() ?? $this->_config->getResultCache(); - - if ($resultCache === null) { - throw CacheException::noResultDriverConfigured(); - } - - $connectionParams = $this->params; - unset($connectionParams['platform'], $connectionParams['password'], $connectionParams['url']); - - [$cacheKey, $realKey] = $qcp->generateCacheKeys($sql, $params, $types, $connectionParams); - - $item = $resultCache->getItem($cacheKey); - - if ($item->isHit()) { - $value = $item->get(); - if (! is_array($value)) { - $value = []; - } - - if (isset($value[$realKey])) { - return new Result(new ArrayResult($value[$realKey]), $this); - } - } else { - $value = []; - } - - $data = $this->fetchAllAssociative($sql, $params, $types); - - $value[$realKey] = $data; - - $item->set($value); - - $lifetime = $qcp->getLifetime(); - if ($lifetime > 0) { - $item->expiresAfter($lifetime); - } - - $resultCache->save($item); - - return new Result(new ArrayResult($data), $this); - } - - /** - * Executes an SQL statement with the given parameters and returns the number of affected rows. - * - * Could be used for: - * - DML statements: INSERT, UPDATE, DELETE, etc. - * - DDL statements: CREATE, DROP, ALTER, etc. - * - DCL statements: GRANT, REVOKE, etc. - * - Session control statements: ALTER SESSION, SET, DECLARE, etc. - * - Other statements that don't yield a row set. - * - * This method supports PDO binding types as well as DBAL mapping types. - * - * @param string $sql SQL statement - * @param list|array $params Statement parameters - * @param array|array $types Parameter types - * - * @return int|string The number of affected rows. - * - * @throws Exception - */ - public function executeStatement($sql, array $params = [], array $types = []) - { - $connection = $this->getWrappedConnection(); - - $logger = $this->_config->getSQLLogger(); - if ($logger !== null) { - $logger->startQuery($sql, $params, $types); - } - - try { - if (count($params) > 0) { - if ($this->needsArrayParameterConversion($params, $types)) { - [$sql, $params, $types] = $this->expandArrayParameters($sql, $params, $types); - } - - $stmt = $connection->prepare($sql); - - $this->bindParameters($stmt, $params, $types); - - return $stmt->execute() - ->rowCount(); - } - - return $connection->exec($sql); - } catch (Driver\Exception $e) { - throw $this->convertExceptionDuringQuery($e, $sql, $params, $types); - } finally { - if ($logger !== null) { - $logger->stopQuery(); - } - } - } - - /** - * Returns the current transaction nesting level. - * - * @return int The nesting level. A value of 0 means there's no active transaction. - */ - public function getTransactionNestingLevel() - { - return $this->transactionNestingLevel; - } - - /** - * Returns the ID of the last inserted row, or the last value from a sequence object, - * depending on the underlying driver. - * - * Note: This method may not return a meaningful or consistent result across different drivers, - * because the underlying database may not even support the notion of AUTO_INCREMENT/IDENTITY - * columns or sequences. - * - * @param string|null $name Name of the sequence object from which the ID should be returned. - * - * @return string|int|false A string representation of the last inserted ID. - * - * @throws Exception - */ - public function lastInsertId($name = null) - { - if ($name !== null) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4687', - 'The usage of Connection::lastInsertId() with a sequence name is deprecated.', - ); - } - - try { - return $this->getWrappedConnection()->lastInsertId($name); - } catch (Driver\Exception $e) { - throw $this->convertException($e); - } - } - - /** - * Executes a function in a transaction. - * - * The function gets passed this Connection instance as an (optional) parameter. - * - * If an exception occurs during execution of the function or transaction commit, - * the transaction is rolled back and the exception re-thrown. - * - * @param Closure(self):T $func The function to execute transactionally. - * - * @return T The value returned by $func - * - * @throws Throwable - * - * @template T - */ - public function transactional(Closure $func) - { - $this->beginTransaction(); - try { - $res = $func($this); - $this->commit(); - - return $res; - } catch (Throwable $e) { - $this->rollBack(); - - throw $e; - } - } - - /** - * Sets if nested transactions should use savepoints. - * - * @param bool $nestTransactionsWithSavepoints - * - * @return void - * - * @throws Exception - */ - public function setNestTransactionsWithSavepoints($nestTransactionsWithSavepoints) - { - if (! $nestTransactionsWithSavepoints) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5383', - <<<'DEPRECATION' - Nesting transactions without enabling savepoints is deprecated. - Call %s::setNestTransactionsWithSavepoints(true) to enable savepoints. - DEPRECATION, - self::class, - ); - } - - if ($this->transactionNestingLevel > 0) { - throw ConnectionException::mayNotAlterNestedTransactionWithSavepointsInTransaction(); - } - - $this->nestTransactionsWithSavepoints = (bool) $nestTransactionsWithSavepoints; - } - - /** - * Gets if nested transactions should use savepoints. - * - * @return bool - */ - public function getNestTransactionsWithSavepoints() - { - return $this->nestTransactionsWithSavepoints; - } - - /** - * Returns the savepoint name to use for nested transactions. - * - * @return string - */ - protected function _getNestedTransactionSavePointName() - { - return 'DOCTRINE_' . $this->transactionNestingLevel; - } - - /** - * @return bool - * - * @throws Exception - */ - public function beginTransaction() - { - $connection = $this->getWrappedConnection(); - - ++$this->transactionNestingLevel; - - $logger = $this->_config->getSQLLogger(); - - if ($this->transactionNestingLevel === 1) { - if ($logger !== null) { - $logger->startQuery('"START TRANSACTION"'); - } - - $connection->beginTransaction(); - - if ($logger !== null) { - $logger->stopQuery(); - } - } elseif ($this->nestTransactionsWithSavepoints) { - if ($logger !== null) { - $logger->startQuery('"SAVEPOINT"'); - } - - $this->createSavepoint($this->_getNestedTransactionSavePointName()); - if ($logger !== null) { - $logger->stopQuery(); - } - } else { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5383', - <<<'DEPRECATION' - Nesting transactions without enabling savepoints is deprecated. - Call %s::setNestTransactionsWithSavepoints(true) to enable savepoints. - DEPRECATION, - self::class, - ); - } - - $eventManager = $this->getEventManager(); - - if ($eventManager->hasListeners(Events::onTransactionBegin)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - 'Subscribing to %s events is deprecated.', - Events::onTransactionBegin, - ); - - $eventManager->dispatchEvent(Events::onTransactionBegin, new TransactionBeginEventArgs($this)); - } - - return true; - } - - /** - * @return bool - * - * @throws Exception - */ - public function commit() - { - if ($this->transactionNestingLevel === 0) { - throw ConnectionException::noActiveTransaction(); - } - - if ($this->isRollbackOnly) { - throw ConnectionException::commitFailedRollbackOnly(); - } - - $result = true; - - $connection = $this->getWrappedConnection(); - - if ($this->transactionNestingLevel === 1) { - $result = $this->doCommit($connection); - } elseif ($this->nestTransactionsWithSavepoints) { - $this->releaseSavepoint($this->_getNestedTransactionSavePointName()); - } - - --$this->transactionNestingLevel; - - $eventManager = $this->getEventManager(); - - if ($eventManager->hasListeners(Events::onTransactionCommit)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - 'Subscribing to %s events is deprecated.', - Events::onTransactionCommit, - ); - - $eventManager->dispatchEvent(Events::onTransactionCommit, new TransactionCommitEventArgs($this)); - } - - if ($this->autoCommit !== false || $this->transactionNestingLevel !== 0) { - return $result; - } - - $this->beginTransaction(); - - return $result; - } - - /** - * @return bool - * - * @throws DriverException - */ - private function doCommit(DriverConnection $connection) - { - $logger = $this->_config->getSQLLogger(); - - if ($logger !== null) { - $logger->startQuery('"COMMIT"'); - } - - $result = $connection->commit(); - - if ($logger !== null) { - $logger->stopQuery(); - } - - return $result; - } - - /** - * Commits all current nesting transactions. - * - * @throws Exception - */ - private function commitAll(): void - { - while ($this->transactionNestingLevel !== 0) { - if ($this->autoCommit === false && $this->transactionNestingLevel === 1) { - // When in no auto-commit mode, the last nesting commit immediately starts a new transaction. - // Therefore we need to do the final commit here and then leave to avoid an infinite loop. - $this->commit(); - - return; - } - - $this->commit(); - } - } - - /** - * Cancels any database changes done during the current transaction. - * - * @return bool - * - * @throws Exception - */ - public function rollBack() - { - if ($this->transactionNestingLevel === 0) { - throw ConnectionException::noActiveTransaction(); - } - - $connection = $this->getWrappedConnection(); - - $logger = $this->_config->getSQLLogger(); - - if ($this->transactionNestingLevel === 1) { - if ($logger !== null) { - $logger->startQuery('"ROLLBACK"'); - } - - $this->transactionNestingLevel = 0; - $connection->rollBack(); - $this->isRollbackOnly = false; - if ($logger !== null) { - $logger->stopQuery(); - } - - if ($this->autoCommit === false) { - $this->beginTransaction(); - } - } elseif ($this->nestTransactionsWithSavepoints) { - if ($logger !== null) { - $logger->startQuery('"ROLLBACK TO SAVEPOINT"'); - } - - $this->rollbackSavepoint($this->_getNestedTransactionSavePointName()); - --$this->transactionNestingLevel; - if ($logger !== null) { - $logger->stopQuery(); - } - } else { - $this->isRollbackOnly = true; - --$this->transactionNestingLevel; - } - - $eventManager = $this->getEventManager(); - - if ($eventManager->hasListeners(Events::onTransactionRollBack)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - 'Subscribing to %s events is deprecated.', - Events::onTransactionRollBack, - ); - - $eventManager->dispatchEvent(Events::onTransactionRollBack, new TransactionRollBackEventArgs($this)); - } - - return true; - } - - /** - * Creates a new savepoint. - * - * @param string $savepoint The name of the savepoint to create. - * - * @return void - * - * @throws Exception - */ - public function createSavepoint($savepoint) - { - $platform = $this->getDatabasePlatform(); - - if (! $platform->supportsSavepoints()) { - throw ConnectionException::savepointsNotSupported(); - } - - $this->executeStatement($platform->createSavePoint($savepoint)); - } - - /** - * Releases the given savepoint. - * - * @param string $savepoint The name of the savepoint to release. - * - * @return void - * - * @throws Exception - */ - public function releaseSavepoint($savepoint) - { - $logger = $this->_config->getSQLLogger(); - - $platform = $this->getDatabasePlatform(); - - if (! $platform->supportsSavepoints()) { - throw ConnectionException::savepointsNotSupported(); - } - - if (! $platform->supportsReleaseSavepoints()) { - if ($logger !== null) { - $logger->stopQuery(); - } - - return; - } - - if ($logger !== null) { - $logger->startQuery('"RELEASE SAVEPOINT"'); - } - - $this->executeStatement($platform->releaseSavePoint($savepoint)); - - if ($logger === null) { - return; - } - - $logger->stopQuery(); - } - - /** - * Rolls back to the given savepoint. - * - * @param string $savepoint The name of the savepoint to rollback to. - * - * @return void - * - * @throws Exception - */ - public function rollbackSavepoint($savepoint) - { - $platform = $this->getDatabasePlatform(); - - if (! $platform->supportsSavepoints()) { - throw ConnectionException::savepointsNotSupported(); - } - - $this->executeStatement($platform->rollbackSavePoint($savepoint)); - } - - /** - * Gets the wrapped driver connection. - * - * @deprecated Use {@link getNativeConnection()} to access the native connection. - * - * @return DriverConnection - * - * @throws Exception - */ - public function getWrappedConnection() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4966', - 'Connection::getWrappedConnection() is deprecated.' - . ' Use Connection::getNativeConnection() to access the native connection.', - ); - - $this->connect(); - - return $this->_conn; - } - - /** @return resource|object */ - public function getNativeConnection() - { - $this->connect(); - - if (! method_exists($this->_conn, 'getNativeConnection')) { - throw new LogicException(sprintf( - 'The driver connection %s does not support accessing the native connection.', - get_class($this->_conn), - )); - } - - return $this->_conn->getNativeConnection(); - } - - /** - * Creates a SchemaManager that can be used to inspect or change the - * database schema through the connection. - * - * @throws Exception - */ - public function createSchemaManager(): AbstractSchemaManager - { - return $this->schemaManagerFactory->createSchemaManager($this); - } - - /** - * Gets the SchemaManager that can be used to inspect or change the - * database schema through the connection. - * - * @deprecated Use {@see createSchemaManager()} instead. - * - * @return AbstractSchemaManager - * - * @throws Exception - */ - public function getSchemaManager() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4515', - 'Connection::getSchemaManager() is deprecated, use Connection::createSchemaManager() instead.', - ); - - return $this->_schemaManager ??= $this->createSchemaManager(); - } - - /** - * Marks the current transaction so that the only possible - * outcome for the transaction to be rolled back. - * - * @return void - * - * @throws ConnectionException If no transaction is active. - */ - public function setRollbackOnly() - { - if ($this->transactionNestingLevel === 0) { - throw ConnectionException::noActiveTransaction(); - } - - $this->isRollbackOnly = true; - } - - /** - * Checks whether the current transaction is marked for rollback only. - * - * @return bool - * - * @throws ConnectionException If no transaction is active. - */ - public function isRollbackOnly() - { - if ($this->transactionNestingLevel === 0) { - throw ConnectionException::noActiveTransaction(); - } - - return $this->isRollbackOnly; - } - - /** - * Converts a given value to its database representation according to the conversion - * rules of a specific DBAL mapping type. - * - * @param mixed $value The value to convert. - * @param string $type The name of the DBAL mapping type. - * - * @return mixed The converted value. - * - * @throws Exception - */ - public function convertToDatabaseValue($value, $type) - { - return Type::getType($type)->convertToDatabaseValue($value, $this->getDatabasePlatform()); - } - - /** - * Converts a given value to its PHP representation according to the conversion - * rules of a specific DBAL mapping type. - * - * @param mixed $value The value to convert. - * @param string $type The name of the DBAL mapping type. - * - * @return mixed The converted type. - * - * @throws Exception - */ - public function convertToPHPValue($value, $type) - { - return Type::getType($type)->convertToPHPValue($value, $this->getDatabasePlatform()); - } - - /** - * Binds a set of parameters, some or all of which are typed with a PDO binding type - * or DBAL mapping type, to a given statement. - * - * @param DriverStatement $stmt Prepared statement - * @param list|array $params Statement parameters - * @param array|array $types Parameter types - * - * @throws Exception - */ - private function bindParameters(DriverStatement $stmt, array $params, array $types): void - { - // Check whether parameters are positional or named. Mixing is not allowed. - if (is_int(key($params))) { - $bindIndex = 1; - - foreach ($params as $key => $value) { - if (isset($types[$key])) { - $type = $types[$key]; - [$value, $bindingType] = $this->getBindingInfo($value, $type); - } else { - if (array_key_exists($key, $types)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5550', - 'Using NULL as prepared statement parameter type is deprecated.' - . 'Omit or use ParameterType::STRING instead', - ); - } - - $bindingType = ParameterType::STRING; - } - - $stmt->bindValue($bindIndex, $value, $bindingType); - - ++$bindIndex; - } - } else { - // Named parameters - foreach ($params as $name => $value) { - if (isset($types[$name])) { - $type = $types[$name]; - [$value, $bindingType] = $this->getBindingInfo($value, $type); - } else { - if (array_key_exists($name, $types)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5550', - 'Using NULL as prepared statement parameter type is deprecated.' - . 'Omit or use ParameterType::STRING instead', - ); - } - - $bindingType = ParameterType::STRING; - } - - $stmt->bindValue($name, $value, $bindingType); - } - } - } - - /** - * Gets the binding type of a given type. - * - * @param mixed $value The value to bind. - * @param int|string|Type|null $type The type to bind (PDO or DBAL). - * - * @return array{mixed, int} [0] => the (escaped) value, [1] => the binding type. - * - * @throws Exception - */ - private function getBindingInfo($value, $type): array - { - if (is_string($type)) { - $type = Type::getType($type); - } - - if ($type instanceof Type) { - $value = $type->convertToDatabaseValue($value, $this->getDatabasePlatform()); - $bindingType = $type->getBindingType(); - } else { - $bindingType = $type ?? ParameterType::STRING; - } - - return [$value, $bindingType]; - } - - /** - * Creates a new instance of a SQL query builder. - * - * @return QueryBuilder - */ - public function createQueryBuilder() - { - return new Query\QueryBuilder($this); - } - - /** - * @internal - * - * @param list|array $params - * @param array|array $types - */ - final public function convertExceptionDuringQuery( - Driver\Exception $e, - string $sql, - array $params = [], - array $types = [] - ): DriverException { - return $this->handleDriverException($e, new Query($sql, $params, $types)); - } - - /** @internal */ - final public function convertException(Driver\Exception $e): DriverException - { - return $this->handleDriverException($e, null); - } - - /** - * @param array|array $params - * @param array|array $types - * - * @return array{string, list, array} - */ - private function expandArrayParameters(string $sql, array $params, array $types): array - { - $this->parser ??= $this->getDatabasePlatform()->createSQLParser(); - $visitor = new ExpandArrayParameters($params, $types); - - $this->parser->parse($sql, $visitor); - - return [ - $visitor->getSQL(), - $visitor->getParameters(), - $visitor->getTypes(), - ]; - } - - /** - * @param array|array $params - * @param array|array $types - */ - private function needsArrayParameterConversion(array $params, array $types): bool - { - if (is_string(key($params))) { - return true; - } - - foreach ($types as $type) { - if ( - $type === ArrayParameterType::INTEGER - || $type === ArrayParameterType::STRING - || $type === ArrayParameterType::ASCII - || $type === ArrayParameterType::BINARY - ) { - return true; - } - } - - return false; - } - - private function handleDriverException( - Driver\Exception $driverException, - ?Query $query - ): DriverException { - $this->exceptionConverter ??= $this->_driver->getExceptionConverter(); - $exception = $this->exceptionConverter->convert($driverException, $query); - - if ($exception instanceof ConnectionLost) { - $this->close(); - } - - return $exception; - } - - /** - * BC layer for a wide-spread use-case of old DBAL APIs - * - * @deprecated Use {@see executeStatement()} instead - * - * @param array $params The query parameters - * @param array $types The parameter types - */ - public function executeUpdate(string $sql, array $params = [], array $types = []): int - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4163', - '%s is deprecated, please use executeStatement() instead.', - __METHOD__, - ); - - return $this->executeStatement($sql, $params, $types); - } - - /** - * BC layer for a wide-spread use-case of old DBAL APIs - * - * @deprecated Use {@see executeQuery()} instead - */ - public function query(string $sql): Result - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4163', - '%s is deprecated, please use executeQuery() instead.', - __METHOD__, - ); - - return $this->executeQuery($sql); - } - - /** - * BC layer for a wide-spread use-case of old DBAL APIs - * - * @deprecated please use {@see executeStatement()} instead - */ - public function exec(string $sql): int - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4163', - '%s is deprecated, please use executeStatement() instead.', - __METHOD__, - ); - - return $this->executeStatement($sql); - } -} diff --git a/docker/streamline-src/vendor/doctrine/dbal/src/Driver/API/MySQL/ExceptionConverter.php b/docker/streamline-src/vendor/doctrine/dbal/src/Driver/API/MySQL/ExceptionConverter.php deleted file mode 100644 index fdfc75a7..00000000 --- a/docker/streamline-src/vendor/doctrine/dbal/src/Driver/API/MySQL/ExceptionConverter.php +++ /dev/null @@ -1,120 +0,0 @@ -getCode()) { - case 1008: - return new DatabaseDoesNotExist($exception, $query); - - case 1213: - return new DeadlockException($exception, $query); - - case 1205: - return new LockWaitTimeoutException($exception, $query); - - case 1050: - return new TableExistsException($exception, $query); - - case 1051: - case 1146: - return new TableNotFoundException($exception, $query); - - case 1216: - case 1217: - case 1451: - case 1452: - case 1701: - return new ForeignKeyConstraintViolationException($exception, $query); - - case 1062: - case 1557: - case 1569: - case 1586: - return new UniqueConstraintViolationException($exception, $query); - - case 1054: - case 1166: - case 1611: - return new InvalidFieldNameException($exception, $query); - - case 1052: - case 1060: - case 1110: - return new NonUniqueFieldNameException($exception, $query); - - case 1064: - case 1149: - case 1287: - case 1341: - case 1342: - case 1343: - case 1344: - case 1382: - case 1479: - case 1541: - case 1554: - case 1626: - return new SyntaxErrorException($exception, $query); - - case 1044: - case 1045: - case 1046: - case 1049: - case 1095: - case 1142: - case 1143: - case 1227: - case 1370: - case 1429: - case 2002: - case 2005: - case 2054: - return new ConnectionException($exception, $query); - - case 2006: - case 4031: - return new ConnectionLost($exception, $query); - - case 1048: - case 1121: - case 1138: - case 1171: - case 1252: - case 1263: - case 1364: - case 1566: - return new NotNullConstraintViolationException($exception, $query); - } - - return new DriverException($exception, $query); - } -} diff --git a/docker/streamline-src/vendor/doctrine/dbal/src/Driver/AbstractDB2Driver.php b/docker/streamline-src/vendor/doctrine/dbal/src/Driver/AbstractDB2Driver.php deleted file mode 100644 index 81d84328..00000000 --- a/docker/streamline-src/vendor/doctrine/dbal/src/Driver/AbstractDB2Driver.php +++ /dev/null @@ -1,100 +0,0 @@ -getVersionNumber($version), '11.1', '>=')) { - return new DB2111Platform(); - } - - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5156', - 'IBM DB2 < 11.1 support is deprecated and will be removed in DBAL 4.' - . ' Consider upgrading to IBM DB2 11.1 or later.', - ); - - return $this->getDatabasePlatform(); - } - - /** - * Detects IBM DB2 server version - * - * @param string $versionString Version string as returned by IBM DB2 server, i.e. 'DB2/LINUXX8664 11.5.8.0' - * - * @throws DBALException - */ - private function getVersionNumber(string $versionString): string - { - if ( - preg_match( - '/^(?:[^\s]+\s)?(?P\d+)\.(?P\d+)\.(?P\d+)/i', - $versionString, - $versionParts, - ) !== 1 - ) { - throw DBALException::invalidPlatformVersionSpecified( - $versionString, - '^(?:[^\s]+\s)?..', - ); - } - - return $versionParts['major'] . '.' . $versionParts['minor'] . '.' . $versionParts['patch']; - } -} diff --git a/docker/streamline-src/vendor/doctrine/dbal/src/Driver/AbstractMySQLDriver.php b/docker/streamline-src/vendor/doctrine/dbal/src/Driver/AbstractMySQLDriver.php deleted file mode 100644 index f8c3b399..00000000 --- a/docker/streamline-src/vendor/doctrine/dbal/src/Driver/AbstractMySQLDriver.php +++ /dev/null @@ -1,231 +0,0 @@ -getMariaDbMysqlVersionNumber($version); - if (version_compare($mariaDbVersion, '10.10.0', '>=')) { - return new MariaDb1010Platform(); - } - - if (version_compare($mariaDbVersion, '10.6.0', '>=')) { - return new MariaDb1060Platform(); - } - - if (version_compare($mariaDbVersion, '10.5.2', '>=')) { - return new MariaDb1052Platform(); - } - - if (version_compare($mariaDbVersion, '10.4.3', '>=')) { - return new MariaDb1043Platform(); - } - - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6110', - 'Support for MariaDB < 10.4 is deprecated and will be removed in DBAL 4.' - . ' Consider upgrading to a more recent version of MariaDB.', - ); - - if (version_compare($mariaDbVersion, '10.2.7', '>=')) { - return new MariaDb1027Platform(); - } - } else { - $oracleMysqlVersion = $this->getOracleMysqlVersionNumber($version); - - if (version_compare($oracleMysqlVersion, '8.4.0', '>=')) { - if (! version_compare($version, '8.4.0', '>=')) { - Deprecation::trigger( - 'doctrine/orm', - 'https://github.com/doctrine/dbal/pull/5779', - 'Version detection logic for MySQL will change in DBAL 4. ' - . 'Please specify the version as the server reports it, e.g. "8.4.0" instead of "8.4".', - ); - } - - return new MySQL84Platform(); - } - - if (version_compare($oracleMysqlVersion, '8', '>=')) { - if (! version_compare($version, '8.0.0', '>=')) { - Deprecation::trigger( - 'doctrine/orm', - 'https://github.com/doctrine/dbal/pull/5779', - 'Version detection logic for MySQL will change in DBAL 4. ' - . 'Please specify the version as the server reports it, e.g. "8.0.31" instead of "8".', - ); - } - - return new MySQL80Platform(); - } - - if (version_compare($oracleMysqlVersion, '5.7.9', '>=')) { - if (! version_compare($version, '5.7.9', '>=')) { - Deprecation::trigger( - 'doctrine/orm', - 'https://github.com/doctrine/dbal/pull/5779', - 'Version detection logic for MySQL will change in DBAL 4. ' - . 'Please specify the version as the server reports it, e.g. "5.7.40" instead of "5.7".', - ); - } - - return new MySQL57Platform(); - } - - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5072', - 'MySQL 5.6 support is deprecated and will be removed in DBAL 4.' - . ' Consider upgrading to MySQL 5.7 or later.', - ); - } - - return $this->getDatabasePlatform(); - } - - /** - * Get a normalized 'version number' from the server string - * returned by Oracle MySQL servers. - * - * @param string $versionString Version string returned by the driver, i.e. '5.7.10' - * - * @throws Exception - */ - private function getOracleMysqlVersionNumber(string $versionString): string - { - if ( - preg_match( - '/^(?P\d+)(?:\.(?P\d+)(?:\.(?P\d+))?)?/', - $versionString, - $versionParts, - ) !== 1 - ) { - throw Exception::invalidPlatformVersionSpecified( - $versionString, - '..', - ); - } - - $majorVersion = $versionParts['major']; - $minorVersion = $versionParts['minor'] ?? 0; - $patchVersion = $versionParts['patch'] ?? null; - - if ($majorVersion === '5' && $minorVersion === '7') { - $patchVersion ??= '9'; - } else { - $patchVersion ??= '0'; - } - - return $majorVersion . '.' . $minorVersion . '.' . $patchVersion; - } - - /** - * Detect MariaDB server version, including hack for some mariadb distributions - * that starts with the prefix '5.5.5-' - * - * @param string $versionString Version string as returned by mariadb server, i.e. '5.5.5-Mariadb-10.0.8-xenial' - * - * @throws Exception - */ - private function getMariaDbMysqlVersionNumber(string $versionString): string - { - if (stripos($versionString, 'MariaDB') === 0) { - Deprecation::trigger( - 'doctrine/orm', - 'https://github.com/doctrine/dbal/pull/5779', - 'Version detection logic for MySQL will change in DBAL 4. ' - . 'Please specify the version as the server reports it, ' - . 'e.g. "10.9.3-MariaDB" instead of "mariadb-10.9".', - ); - } - - if ( - preg_match( - '/^(?:5\.5\.5-)?(mariadb-)?(?P\d+)\.(?P\d+)\.(?P\d+)/i', - $versionString, - $versionParts, - ) !== 1 - ) { - throw Exception::invalidPlatformVersionSpecified( - $versionString, - '^(?:5\.5\.5-)?(mariadb-)?..', - ); - } - - return $versionParts['major'] . '.' . $versionParts['minor'] . '.' . $versionParts['patch']; - } - - /** - * {@inheritDoc} - * - * @return AbstractMySQLPlatform - */ - public function getDatabasePlatform() - { - return new MySQLPlatform(); - } - - /** - * {@inheritDoc} - * - * @deprecated Use {@link AbstractMySQLPlatform::createSchemaManager()} instead. - * - * @return MySQLSchemaManager - */ - public function getSchemaManager(Connection $conn, AbstractPlatform $platform) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5458', - 'AbstractMySQLDriver::getSchemaManager() is deprecated.' - . ' Use MySQLPlatform::createSchemaManager() instead.', - ); - - assert($platform instanceof AbstractMySQLPlatform); - - return new MySQLSchemaManager($conn, $platform); - } - - public function getExceptionConverter(): ExceptionConverter - { - return new MySQL\ExceptionConverter(); - } -} diff --git a/docker/streamline-src/vendor/doctrine/dbal/src/Driver/AbstractPostgreSQLDriver.php b/docker/streamline-src/vendor/doctrine/dbal/src/Driver/AbstractPostgreSQLDriver.php deleted file mode 100644 index eba309da..00000000 --- a/docker/streamline-src/vendor/doctrine/dbal/src/Driver/AbstractPostgreSQLDriver.php +++ /dev/null @@ -1,93 +0,0 @@ -\d+)(?:\.(?P\d+)(?:\.(?P\d+))?)?/', $version, $versionParts) !== 1) { - throw Exception::invalidPlatformVersionSpecified( - $version, - '..', - ); - } - - $majorVersion = $versionParts['major']; - $minorVersion = $versionParts['minor'] ?? 0; - $patchVersion = $versionParts['patch'] ?? 0; - $version = $majorVersion . '.' . $minorVersion . '.' . $patchVersion; - - if (version_compare($version, '12.0', '>=')) { - return new PostgreSQL120Platform(); - } - - if (version_compare($version, '10.0', '>=')) { - return new PostgreSQL100Platform(); - } - - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5060', - 'PostgreSQL 9 support is deprecated and will be removed in DBAL 4.' - . ' Consider upgrading to Postgres 10 or later.', - ); - - return new PostgreSQL94Platform(); - } - - /** - * {@inheritDoc} - */ - public function getDatabasePlatform() - { - return new PostgreSQL94Platform(); - } - - /** - * {@inheritDoc} - * - * @deprecated Use {@link PostgreSQLPlatform::createSchemaManager()} instead. - */ - public function getSchemaManager(Connection $conn, AbstractPlatform $platform) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5458', - 'AbstractPostgreSQLDriver::getSchemaManager() is deprecated.' - . ' Use PostgreSQLPlatform::createSchemaManager() instead.', - ); - - assert($platform instanceof PostgreSQLPlatform); - - return new PostgreSQLSchemaManager($conn, $platform); - } - - public function getExceptionConverter(): ExceptionConverter - { - return new PostgreSQL\ExceptionConverter(); - } -} diff --git a/docker/streamline-src/vendor/doctrine/dbal/src/Driver/OCI8/Middleware/InitializeSession.php b/docker/streamline-src/vendor/doctrine/dbal/src/Driver/OCI8/Middleware/InitializeSession.php deleted file mode 100644 index 3a356fb3..00000000 --- a/docker/streamline-src/vendor/doctrine/dbal/src/Driver/OCI8/Middleware/InitializeSession.php +++ /dev/null @@ -1,38 +0,0 @@ -exec( - 'ALTER SESSION SET' - . " NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS'" - . " NLS_TIME_FORMAT = 'HH24:MI:SS'" - . " NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH24:MI:SS'" - . " NLS_TIMESTAMP_TZ_FORMAT = 'YYYY-MM-DD HH24:MI:SS TZH:TZM'" - . " NLS_NUMERIC_CHARACTERS = '.,'", - ); - - return $connection; - } - }; - } -} diff --git a/docker/streamline-src/vendor/doctrine/dbal/src/Driver/PDO/PgSQL/Driver.php b/docker/streamline-src/vendor/doctrine/dbal/src/Driver/PDO/PgSQL/Driver.php deleted file mode 100644 index 5bfcd730..00000000 --- a/docker/streamline-src/vendor/doctrine/dbal/src/Driver/PDO/PgSQL/Driver.php +++ /dev/null @@ -1,135 +0,0 @@ -constructPdoDsn($safeParams), - $params['user'] ?? '', - $params['password'] ?? '', - $driverOptions, - ); - } catch (PDOException $exception) { - throw Exception::new($exception); - } - - if ( - ! isset($driverOptions[PDO::PGSQL_ATTR_DISABLE_PREPARES]) - || $driverOptions[PDO::PGSQL_ATTR_DISABLE_PREPARES] === true - ) { - $pdo->setAttribute(PDO::PGSQL_ATTR_DISABLE_PREPARES, true); - } - - $connection = new Connection($pdo); - - /* defining client_encoding via SET NAMES to avoid inconsistent DSN support - * - passing client_encoding via the 'options' param breaks pgbouncer support - */ - if (isset($params['charset'])) { - $connection->exec('SET NAMES \'' . $params['charset'] . '\''); - } - - return $connection; - } - - /** - * Constructs the Postgres PDO DSN. - * - * @param array $params - */ - private function constructPdoDsn(array $params): string - { - $dsn = 'pgsql:'; - - if (isset($params['host']) && $params['host'] !== '') { - $dsn .= 'host=' . $params['host'] . ';'; - } - - if (isset($params['port']) && $params['port'] !== '') { - $dsn .= 'port=' . $params['port'] . ';'; - } - - if (isset($params['dbname'])) { - $dsn .= 'dbname=' . $params['dbname'] . ';'; - } elseif (isset($params['default_dbname'])) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5705', - 'The "default_dbname" connection parameter is deprecated. Use "dbname" instead.', - ); - - $dsn .= 'dbname=' . $params['default_dbname'] . ';'; - } else { - if (isset($params['user']) && $params['user'] !== 'postgres') { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5705', - 'Relying on the DBAL connecting to the "postgres" database by default is deprecated.' - . ' Unless you want to have the server determine the default database for the connection,' - . ' specify the database name explicitly.', - ); - } - - // Used for temporary connections to allow operations like dropping the database currently connected to. - $dsn .= 'dbname=postgres;'; - } - - if (isset($params['sslmode'])) { - $dsn .= 'sslmode=' . $params['sslmode'] . ';'; - } - - if (isset($params['sslrootcert'])) { - $dsn .= 'sslrootcert=' . $params['sslrootcert'] . ';'; - } - - if (isset($params['sslcert'])) { - $dsn .= 'sslcert=' . $params['sslcert'] . ';'; - } - - if (isset($params['sslkey'])) { - $dsn .= 'sslkey=' . $params['sslkey'] . ';'; - } - - if (isset($params['sslcrl'])) { - $dsn .= 'sslcrl=' . $params['sslcrl'] . ';'; - } - - if (isset($params['application_name'])) { - $dsn .= 'application_name=' . $params['application_name'] . ';'; - } - - if (isset($params['gssencmode'])) { - $dsn .= 'gssencmode=' . $params['gssencmode'] . ';'; - } - - return $dsn; - } -} diff --git a/docker/streamline-src/vendor/doctrine/dbal/src/Driver/PgSQL/Driver.php b/docker/streamline-src/vendor/doctrine/dbal/src/Driver/PgSQL/Driver.php deleted file mode 100644 index 6377499a..00000000 --- a/docker/streamline-src/vendor/doctrine/dbal/src/Driver/PgSQL/Driver.php +++ /dev/null @@ -1,86 +0,0 @@ -constructConnectionString($params), PGSQL_CONNECT_FORCE_NEW); - } catch (ErrorException $e) { - throw new Exception($e->getMessage(), '08006', 0, $e); - } finally { - restore_error_handler(); - } - - if ($connection === false) { - throw new Exception('Unable to connect to Postgres server.'); - } - - $driverConnection = new Connection($connection); - - if (isset($params['application_name'])) { - $driverConnection->exec('SET application_name = ' . $driverConnection->quote($params['application_name'])); - } - - return $driverConnection; - } - - /** - * Constructs the Postgres connection string - * - * @param array $params - */ - private function constructConnectionString( - #[SensitiveParameter] - array $params - ): string { - $components = array_filter( - [ - 'host' => $params['host'] ?? null, - 'port' => $params['port'] ?? null, - 'dbname' => $params['dbname'] ?? 'postgres', - 'user' => $params['user'] ?? null, - 'password' => $params['password'] ?? null, - 'sslmode' => $params['sslmode'] ?? null, - 'gssencmode' => $params['gssencmode'] ?? null, - ], - static fn ($value) => $value !== '' && $value !== null, - ); - - return implode(' ', array_map( - static fn ($value, string $key) => sprintf("%s='%s'", $key, addslashes($value)), - array_values($components), - array_keys($components), - )); - } -} diff --git a/docker/streamline-src/vendor/doctrine/dbal/src/Platforms/AbstractMySQLPlatform.php b/docker/streamline-src/vendor/doctrine/dbal/src/Platforms/AbstractMySQLPlatform.php deleted file mode 100644 index 88b45ab2..00000000 --- a/docker/streamline-src/vendor/doctrine/dbal/src/Platforms/AbstractMySQLPlatform.php +++ /dev/null @@ -1,1497 +0,0 @@ - 0) { - $query .= sprintf(' OFFSET %d', $offset); - } - } elseif ($offset > 0) { - // 2^64-1 is the maximum of unsigned BIGINT, the biggest limit possible - $query .= sprintf(' LIMIT 18446744073709551615 OFFSET %d', $offset); - } - - return $query; - } - - /** - * {@inheritDoc} - * - * @deprecated Use {@see quoteIdentifier()} to quote identifiers instead. - */ - public function getIdentifierQuoteCharacter() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5388', - 'AbstractMySQLPlatform::getIdentifierQuoteCharacter() is deprecated. Use quoteIdentifier() instead.', - ); - - return '`'; - } - - /** - * {@inheritDoc} - */ - public function getRegexpExpression() - { - return 'RLIKE'; - } - - /** - * {@inheritDoc} - */ - public function getLocateExpression($str, $substr, $startPos = false) - { - if ($startPos === false) { - return 'LOCATE(' . $substr . ', ' . $str . ')'; - } - - return 'LOCATE(' . $substr . ', ' . $str . ', ' . $startPos . ')'; - } - - /** - * {@inheritDoc} - */ - public function getConcatExpression() - { - return sprintf('CONCAT(%s)', implode(', ', func_get_args())); - } - - /** - * {@inheritDoc} - */ - protected function getDateArithmeticIntervalExpression($date, $operator, $interval, $unit) - { - $function = $operator === '+' ? 'DATE_ADD' : 'DATE_SUB'; - - return $function . '(' . $date . ', INTERVAL ' . $interval . ' ' . $unit . ')'; - } - - /** - * {@inheritDoc} - */ - public function getDateDiffExpression($date1, $date2) - { - return 'DATEDIFF(' . $date1 . ', ' . $date2 . ')'; - } - - public function getCurrentDatabaseExpression(): string - { - return 'DATABASE()'; - } - - /** - * {@inheritDoc} - */ - public function getLengthExpression($column) - { - return 'CHAR_LENGTH(' . $column . ')'; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractSchemaManager} class hierarchy. - */ - public function getListDatabasesSQL() - { - return 'SHOW DATABASES'; - } - - /** - * @deprecated - * - * {@inheritDoc} - */ - public function getListTableConstraintsSQL($table) - { - return 'SHOW INDEX FROM ' . $table; - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - * - * Two approaches to listing the table indexes. The information_schema is - * preferred, because it doesn't cause problems with SQL keywords such as "order" or "table". - */ - public function getListTableIndexesSQL($table, $database = null) - { - if ($database !== null) { - return 'SELECT NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, COLUMN_NAME AS Column_Name,' . - ' SUB_PART AS Sub_Part, INDEX_TYPE AS Index_Type' . - ' FROM information_schema.STATISTICS WHERE TABLE_NAME = ' . $this->quoteStringLiteral($table) . - ' AND TABLE_SCHEMA = ' . $this->quoteStringLiteral($database) . - ' ORDER BY SEQ_IN_INDEX ASC'; - } - - return 'SHOW INDEX FROM ' . $table; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractSchemaManager} class hierarchy. - */ - public function getListViewsSQL($database) - { - return 'SELECT * FROM information_schema.VIEWS WHERE TABLE_SCHEMA = ' . $this->quoteStringLiteral($database); - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * @param string $table - * @param string|null $database - * - * @return string - */ - public function getListTableForeignKeysSQL($table, $database = null) - { - // The schema name is passed multiple times as a literal in the WHERE clause instead of using a JOIN condition - // in order to avoid performance issues on MySQL older than 8.0 and the corresponding MariaDB versions - // caused by https://bugs.mysql.com/bug.php?id=81347 - return 'SELECT k.CONSTRAINT_NAME, k.COLUMN_NAME, k.REFERENCED_TABLE_NAME, ' . - 'k.REFERENCED_COLUMN_NAME /*!50116 , c.UPDATE_RULE, c.DELETE_RULE */ ' . - 'FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE k /*!50116 ' . - 'INNER JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS c ON ' . - 'c.CONSTRAINT_NAME = k.CONSTRAINT_NAME AND ' . - 'c.TABLE_NAME = k.TABLE_NAME */ ' . - 'WHERE k.TABLE_NAME = ' . $this->quoteStringLiteral($table) . ' ' . - 'AND k.TABLE_SCHEMA = ' . $this->getDatabaseNameSQL($database) . ' /*!50116 ' . - 'AND c.CONSTRAINT_SCHEMA = ' . $this->getDatabaseNameSQL($database) . ' */' . - 'ORDER BY k.ORDINAL_POSITION'; - } - - /** - * {@inheritDoc} - */ - protected function getVarcharTypeDeclarationSQLSnippet($length, $fixed/*, $lengthOmitted = false*/) - { - if ($length <= 0 || (func_num_args() > 2 && func_get_arg(2))) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'Relying on the default string column length on MySQL is deprecated' - . ', specify the length explicitly.', - ); - } - - return $fixed ? ($length > 0 ? 'CHAR(' . $length . ')' : 'CHAR(255)') - : ($length > 0 ? 'VARCHAR(' . $length . ')' : 'VARCHAR(255)'); - } - - /** - * {@inheritDoc} - */ - protected function getBinaryTypeDeclarationSQLSnippet($length, $fixed/*, $lengthOmitted = false*/) - { - if ($length <= 0 || (func_num_args() > 2 && func_get_arg(2))) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'Relying on the default binary column length on MySQL is deprecated' - . ', specify the length explicitly.', - ); - } - - return $fixed - ? 'BINARY(' . ($length > 0 ? $length : 255) . ')' - : 'VARBINARY(' . ($length > 0 ? $length : 255) . ')'; - } - - /** - * Gets the SQL snippet used to declare a CLOB column type. - * TINYTEXT : 2 ^ 8 - 1 = 255 - * TEXT : 2 ^ 16 - 1 = 65535 - * MEDIUMTEXT : 2 ^ 24 - 1 = 16777215 - * LONGTEXT : 2 ^ 32 - 1 = 4294967295 - * - * {@inheritDoc} - */ - public function getClobTypeDeclarationSQL(array $column) - { - if (! empty($column['length']) && is_numeric($column['length'])) { - $length = $column['length']; - - if ($length <= static::LENGTH_LIMIT_TINYTEXT) { - return 'TINYTEXT'; - } - - if ($length <= static::LENGTH_LIMIT_TEXT) { - return 'TEXT'; - } - - if ($length <= static::LENGTH_LIMIT_MEDIUMTEXT) { - return 'MEDIUMTEXT'; - } - } - - return 'LONGTEXT'; - } - - /** - * {@inheritDoc} - */ - public function getDateTimeTypeDeclarationSQL(array $column) - { - if (isset($column['version']) && $column['version'] === true) { - return 'TIMESTAMP'; - } - - return 'DATETIME'; - } - - /** - * {@inheritDoc} - */ - public function getDateTypeDeclarationSQL(array $column) - { - return 'DATE'; - } - - /** - * {@inheritDoc} - */ - public function getTimeTypeDeclarationSQL(array $column) - { - return 'TIME'; - } - - /** - * {@inheritDoc} - */ - public function getBooleanTypeDeclarationSQL(array $column) - { - return 'TINYINT(1)'; - } - - /** - * {@inheritDoc} - * - * @deprecated - * - * MySQL prefers "autoincrement" identity columns since sequences can only - * be emulated with a table. - */ - public function prefersIdentityColumns() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/1519', - 'AbstractMySQLPlatform::prefersIdentityColumns() is deprecated.', - ); - - return true; - } - - /** - * {@inheritDoc} - * - * MySQL supports this through AUTO_INCREMENT columns. - */ - public function supportsIdentityColumns() - { - return true; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function supportsInlineColumnComments() - { - return true; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function supportsColumnCollation() - { - return true; - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - */ - public function getListTablesSQL() - { - return "SHOW FULL TABLES WHERE Table_type = 'BASE TABLE'"; - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - */ - public function getListTableColumnsSQL($table, $database = null) - { - return 'SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, ' . - 'COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, ' . - 'CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation ' . - 'FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = ' . $this->getDatabaseNameSQL($database) . - ' AND TABLE_NAME = ' . $this->quoteStringLiteral($table) . - ' ORDER BY ORDINAL_POSITION ASC'; - } - - /** - * @deprecated Use {@see getColumnTypeSQLSnippet()} instead. - * - * The SQL snippets required to elucidate a column type - * - * Returns an array of the form [column type SELECT snippet, additional JOIN statement snippet] - * - * @return array{string, string} - */ - public function getColumnTypeSQLSnippets(string $tableAlias = 'c'): array - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6202', - 'AbstractMySQLPlatform::getColumnTypeSQLSnippets() is deprecated. ' - . 'Use AbstractMySQLPlatform::getColumnTypeSQLSnippet() instead.', - ); - - return [$this->getColumnTypeSQLSnippet(...func_get_args()), '']; - } - - /** - * The SQL snippet required to elucidate a column type - * - * Returns a column type SELECT snippet string - */ - public function getColumnTypeSQLSnippet(string $tableAlias = 'c', ?string $databaseName = null): string - { - return $tableAlias . '.COLUMN_TYPE'; - } - - /** @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. */ - public function getListTableMetadataSQL(string $table, ?string $database = null): string - { - return sprintf( - <<<'SQL' -SELECT t.ENGINE, - t.AUTO_INCREMENT, - t.TABLE_COMMENT, - t.CREATE_OPTIONS, - t.TABLE_COLLATION, - ccsa.CHARACTER_SET_NAME -FROM information_schema.TABLES t - INNER JOIN information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` ccsa - ON ccsa.COLLATION_NAME = t.TABLE_COLLATION -WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_SCHEMA = %s AND TABLE_NAME = %s -SQL - , - $this->getDatabaseNameSQL($database), - $this->quoteStringLiteral($table), - ); - } - - /** - * {@inheritDoc} - */ - public function getCreateTablesSQL(array $tables): array - { - $sql = []; - - foreach ($tables as $table) { - $sql = array_merge($sql, $this->getCreateTableWithoutForeignKeysSQL($table)); - } - - foreach ($tables as $table) { - if (! $table->hasOption('engine') || $this->engineSupportsForeignKeys($table->getOption('engine'))) { - foreach ($table->getForeignKeys() as $foreignKey) { - $sql[] = $this->getCreateForeignKeySQL( - $foreignKey, - $table->getQuotedName($this), - ); - } - } elseif (count($table->getForeignKeys()) > 0) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5414', - 'Relying on the DBAL not generating DDL for foreign keys on MySQL engines' - . ' other than InnoDB is deprecated.' - . ' Define foreign key constraints only if they are necessary.', - ); - } - } - - return $sql; - } - - /** - * {@inheritDoc} - */ - protected function _getCreateTableSQL($name, array $columns, array $options = []) - { - $queryFields = $this->getColumnDeclarationListSQL($columns); - - if (isset($options['uniqueConstraints']) && ! empty($options['uniqueConstraints'])) { - foreach ($options['uniqueConstraints'] as $constraintName => $definition) { - $queryFields .= ', ' . $this->getUniqueConstraintDeclarationSQL($constraintName, $definition); - } - } - - // add all indexes - if (isset($options['indexes']) && ! empty($options['indexes'])) { - foreach ($options['indexes'] as $indexName => $definition) { - $queryFields .= ', ' . $this->getIndexDeclarationSQL($indexName, $definition); - } - } - - // attach all primary keys - if (isset($options['primary']) && ! empty($options['primary'])) { - $keyColumns = array_unique(array_values($options['primary'])); - $queryFields .= ', PRIMARY KEY(' . implode(', ', $keyColumns) . ')'; - } - - $query = 'CREATE '; - - if (! empty($options['temporary'])) { - $query .= 'TEMPORARY '; - } - - $query .= 'TABLE ' . $name . ' (' . $queryFields . ') '; - $query .= $this->buildTableOptions($options); - $query .= $this->buildPartitionOptions($options); - - $sql = [$query]; - - // Propagate foreign key constraints only for InnoDB. - if (isset($options['foreignKeys'])) { - if (! isset($options['engine']) || $this->engineSupportsForeignKeys($options['engine'])) { - foreach ($options['foreignKeys'] as $definition) { - $sql[] = $this->getCreateForeignKeySQL($definition, $name); - } - } elseif (count($options['foreignKeys']) > 0) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5414', - 'Relying on the DBAL not generating DDL for foreign keys on MySQL engines' - . ' other than InnoDB is deprecated.' - . ' Define foreign key constraints only if they are necessary.', - ); - } - } - - return $sql; - } - - public function createSelectSQLBuilder(): SelectSQLBuilder - { - return new DefaultSelectSQLBuilder($this, 'FOR UPDATE', null); - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function getDefaultValueDeclarationSQL($column) - { - // Unset the default value if the given column definition does not allow default values. - if ($column['type'] instanceof TextType || $column['type'] instanceof BlobType) { - $column['default'] = null; - } - - return parent::getDefaultValueDeclarationSQL($column); - } - - /** - * Build SQL for table options - * - * @param mixed[] $options - */ - private function buildTableOptions(array $options): string - { - if (isset($options['table_options'])) { - return $options['table_options']; - } - - $tableOptions = []; - - // Charset - if (! isset($options['charset'])) { - $options['charset'] = 'utf8'; - } - - $tableOptions[] = sprintf('DEFAULT CHARACTER SET %s', $options['charset']); - - if (isset($options['collate'])) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5214', - 'The "collate" option is deprecated in favor of "collation" and will be removed in 4.0.', - ); - $options['collation'] = $options['collate']; - } - - // Collation - if (! isset($options['collation'])) { - $options['collation'] = $options['charset'] . '_unicode_ci'; - } - - $tableOptions[] = $this->getColumnCollationDeclarationSQL($options['collation']); - - // Engine - if (! isset($options['engine'])) { - $options['engine'] = 'InnoDB'; - } - - $tableOptions[] = sprintf('ENGINE = %s', $options['engine']); - - // Auto increment - if (isset($options['auto_increment'])) { - $tableOptions[] = sprintf('AUTO_INCREMENT = %s', $options['auto_increment']); - } - - // Comment - if (isset($options['comment'])) { - $tableOptions[] = sprintf('COMMENT = %s ', $this->quoteStringLiteral($options['comment'])); - } - - // Row format - if (isset($options['row_format'])) { - $tableOptions[] = sprintf('ROW_FORMAT = %s', $options['row_format']); - } - - return implode(' ', $tableOptions); - } - - /** - * Build SQL for partition options. - * - * @param mixed[] $options - */ - private function buildPartitionOptions(array $options): string - { - return isset($options['partition_options']) - ? ' ' . $options['partition_options'] - : ''; - } - - private function engineSupportsForeignKeys(string $engine): bool - { - return strcasecmp(trim($engine), 'InnoDB') === 0; - } - - /** - * {@inheritDoc} - */ - public function getAlterTableSQL(TableDiff $diff) - { - $columnSql = []; - $queryParts = []; - $newName = $diff->getNewName(); - - if ($newName !== false) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5663', - 'Generation of SQL that renames a table using %s is deprecated. Use getRenameTableSQL() instead.', - __METHOD__, - ); - - $queryParts[] = 'RENAME TO ' . $newName->getQuotedName($this); - } - - foreach ($diff->getAddedColumns() as $column) { - if ($this->onSchemaAlterTableAddColumn($column, $diff, $columnSql)) { - continue; - } - - $columnProperties = array_merge($column->toArray(), [ - 'comment' => $this->getColumnComment($column), - ]); - - $queryParts[] = 'ADD ' . $this->getColumnDeclarationSQL( - $column->getQuotedName($this), - $columnProperties, - ); - } - - foreach ($diff->getDroppedColumns() as $column) { - if ($this->onSchemaAlterTableRemoveColumn($column, $diff, $columnSql)) { - continue; - } - - $queryParts[] = 'DROP ' . $column->getQuotedName($this); - } - - foreach ($diff->getModifiedColumns() as $columnDiff) { - if ($this->onSchemaAlterTableChangeColumn($columnDiff, $diff, $columnSql)) { - continue; - } - - $newColumn = $columnDiff->getNewColumn(); - - $newColumnProperties = array_merge($newColumn->toArray(), [ - 'comment' => $this->getColumnComment($newColumn), - ]); - - $oldColumn = $columnDiff->getOldColumn() ?? $columnDiff->getOldColumnName(); - - $queryParts[] = 'CHANGE ' . $oldColumn->getQuotedName($this) . ' ' - . $this->getColumnDeclarationSQL($newColumn->getQuotedName($this), $newColumnProperties); - } - - foreach ($diff->getRenamedColumns() as $oldColumnName => $column) { - if ($this->onSchemaAlterTableRenameColumn($oldColumnName, $column, $diff, $columnSql)) { - continue; - } - - $oldColumnName = new Identifier($oldColumnName); - - $columnProperties = array_merge($column->toArray(), [ - 'comment' => $this->getColumnComment($column), - ]); - - $queryParts[] = 'CHANGE ' . $oldColumnName->getQuotedName($this) . ' ' - . $this->getColumnDeclarationSQL($column->getQuotedName($this), $columnProperties); - } - - $addedIndexes = $this->indexAssetsByLowerCaseName($diff->getAddedIndexes()); - $modifiedIndexes = $this->indexAssetsByLowerCaseName($diff->getModifiedIndexes()); - $diffModified = false; - - if (isset($addedIndexes['primary'])) { - $keyColumns = array_unique(array_values($addedIndexes['primary']->getColumns())); - $queryParts[] = 'ADD PRIMARY KEY (' . implode(', ', $keyColumns) . ')'; - unset($addedIndexes['primary']); - $diffModified = true; - } elseif (isset($modifiedIndexes['primary'])) { - $addedColumns = $this->indexAssetsByLowerCaseName($diff->getAddedColumns()); - - // Necessary in case the new primary key includes a new auto_increment column - foreach ($modifiedIndexes['primary']->getColumns() as $columnName) { - if (isset($addedColumns[$columnName]) && $addedColumns[$columnName]->getAutoincrement()) { - $keyColumns = array_unique(array_values($modifiedIndexes['primary']->getColumns())); - $queryParts[] = 'DROP PRIMARY KEY'; - $queryParts[] = 'ADD PRIMARY KEY (' . implode(', ', $keyColumns) . ')'; - unset($modifiedIndexes['primary']); - $diffModified = true; - break; - } - } - } - - if ($diffModified) { - $diff = new TableDiff( - $diff->name, - $diff->getAddedColumns(), - $diff->getModifiedColumns(), - $diff->getDroppedColumns(), - array_values($addedIndexes), - array_values($modifiedIndexes), - $diff->getDroppedIndexes(), - $diff->getOldTable(), - $diff->getAddedForeignKeys(), - $diff->getModifiedForeignKeys(), - $diff->getDroppedForeignKeys(), - $diff->getRenamedColumns(), - $diff->getRenamedIndexes(), - ); - } - - $sql = []; - $tableSql = []; - - if (! $this->onSchemaAlterTable($diff, $tableSql)) { - if (count($queryParts) > 0) { - $sql[] = 'ALTER TABLE ' . ($diff->getOldTable() ?? $diff->getName($this))->getQuotedName($this) . ' ' - . implode(', ', $queryParts); - } - - $sql = array_merge( - $this->getPreAlterTableIndexForeignKeySQL($diff), - $sql, - $this->getPostAlterTableIndexForeignKeySQL($diff), - ); - } - - return array_merge($sql, $tableSql, $columnSql); - } - - /** - * {@inheritDoc} - */ - protected function getPreAlterTableIndexForeignKeySQL(TableDiff $diff) - { - $sql = []; - - $tableNameSQL = ($diff->getOldTable() ?? $diff->getName($this))->getQuotedName($this); - - foreach ($diff->getModifiedIndexes() as $changedIndex) { - $sql = array_merge($sql, $this->getPreAlterTableAlterPrimaryKeySQL($diff, $changedIndex)); - } - - foreach ($diff->getDroppedIndexes() as $droppedIndex) { - $sql = array_merge($sql, $this->getPreAlterTableAlterPrimaryKeySQL($diff, $droppedIndex)); - - foreach ($diff->getAddedIndexes() as $addedIndex) { - if ($droppedIndex->getColumns() !== $addedIndex->getColumns()) { - continue; - } - - $indexClause = 'INDEX ' . $addedIndex->getName(); - - if ($addedIndex->isPrimary()) { - $indexClause = 'PRIMARY KEY'; - } elseif ($addedIndex->isUnique()) { - $indexClause = 'UNIQUE INDEX ' . $addedIndex->getName(); - } - - $query = 'ALTER TABLE ' . $tableNameSQL . ' DROP INDEX ' . $droppedIndex->getName() . ', '; - $query .= 'ADD ' . $indexClause; - $query .= ' (' . $this->getIndexFieldDeclarationListSQL($addedIndex) . ')'; - - $sql[] = $query; - - $diff->unsetAddedIndex($addedIndex); - $diff->unsetDroppedIndex($droppedIndex); - - break; - } - } - - $engine = 'INNODB'; - - $table = $diff->getOldTable(); - - if ($table !== null && $table->hasOption('engine')) { - $engine = strtoupper(trim($table->getOption('engine'))); - } - - // Suppress foreign key constraint propagation on non-supporting engines. - if ($engine !== 'INNODB') { - $diff->addedForeignKeys = []; - $diff->changedForeignKeys = []; - $diff->removedForeignKeys = []; - } - - $sql = array_merge( - $sql, - $this->getPreAlterTableAlterIndexForeignKeySQL($diff), - parent::getPreAlterTableIndexForeignKeySQL($diff), - $this->getPreAlterTableRenameIndexForeignKeySQL($diff), - ); - - return $sql; - } - - /** - * @return string[] - * - * @throws Exception - */ - private function getPreAlterTableAlterPrimaryKeySQL(TableDiff $diff, Index $index): array - { - if (! $index->isPrimary()) { - return []; - } - - $table = $diff->getOldTable(); - - if ($table === null) { - return []; - } - - $sql = []; - - $tableNameSQL = ($diff->getOldTable() ?? $diff->getName($this))->getQuotedName($this); - - // Dropping primary keys requires to unset autoincrement attribute on the particular column first. - foreach ($index->getColumns() as $columnName) { - if (! $table->hasColumn($columnName)) { - continue; - } - - $column = $table->getColumn($columnName); - - if ($column->getAutoincrement() !== true) { - continue; - } - - $column->setAutoincrement(false); - - $sql[] = 'ALTER TABLE ' . $tableNameSQL . ' MODIFY ' . - $this->getColumnDeclarationSQL($column->getQuotedName($this), $column->toArray()); - - // original autoincrement information might be needed later on by other parts of the table alteration - $column->setAutoincrement(true); - } - - return $sql; - } - - /** - * @param TableDiff $diff The table diff to gather the SQL for. - * - * @return string[] - * - * @throws Exception - */ - private function getPreAlterTableAlterIndexForeignKeySQL(TableDiff $diff): array - { - $table = $diff->getOldTable(); - - if ($table === null) { - return []; - } - - $primaryKey = $table->getPrimaryKey(); - - if ($primaryKey === null) { - return []; - } - - $primaryKeyColumns = []; - - foreach ($primaryKey->getColumns() as $columnName) { - if (! $table->hasColumn($columnName)) { - continue; - } - - $primaryKeyColumns[] = $table->getColumn($columnName); - } - - if (count($primaryKeyColumns) === 0) { - return []; - } - - $sql = []; - - $tableNameSQL = $table->getQuotedName($this); - - foreach ($diff->getModifiedIndexes() as $changedIndex) { - // Changed primary key - if (! $changedIndex->isPrimary()) { - continue; - } - - foreach ($primaryKeyColumns as $column) { - // Check if an autoincrement column was dropped from the primary key. - if (! $column->getAutoincrement() || in_array($column->getName(), $changedIndex->getColumns(), true)) { - continue; - } - - // The autoincrement attribute needs to be removed from the dropped column - // before we can drop and recreate the primary key. - $column->setAutoincrement(false); - - $sql[] = 'ALTER TABLE ' . $tableNameSQL . ' MODIFY ' . - $this->getColumnDeclarationSQL($column->getQuotedName($this), $column->toArray()); - - // Restore the autoincrement attribute as it might be needed later on - // by other parts of the table alteration. - $column->setAutoincrement(true); - } - } - - return $sql; - } - - /** - * @param TableDiff $diff The table diff to gather the SQL for. - * - * @return string[] - */ - protected function getPreAlterTableRenameIndexForeignKeySQL(TableDiff $diff) - { - $sql = []; - - $tableNameSQL = ($diff->getOldTable() ?? $diff->getName($this))->getQuotedName($this); - - foreach ($this->getRemainingForeignKeyConstraintsRequiringRenamedIndexes($diff) as $foreignKey) { - if (in_array($foreignKey, $diff->getModifiedForeignKeys(), true)) { - continue; - } - - $sql[] = $this->getDropForeignKeySQL($foreignKey->getQuotedName($this), $tableNameSQL); - } - - return $sql; - } - - /** - * Returns the remaining foreign key constraints that require one of the renamed indexes. - * - * "Remaining" here refers to the diff between the foreign keys currently defined in the associated - * table and the foreign keys to be removed. - * - * @param TableDiff $diff The table diff to evaluate. - * - * @return ForeignKeyConstraint[] - */ - private function getRemainingForeignKeyConstraintsRequiringRenamedIndexes(TableDiff $diff): array - { - if (count($diff->getRenamedIndexes()) === 0) { - return []; - } - - $table = $diff->getOldTable(); - - if ($table === null) { - return []; - } - - $foreignKeys = []; - /** @var ForeignKeyConstraint[] $remainingForeignKeys */ - $remainingForeignKeys = array_diff_key( - $table->getForeignKeys(), - $diff->getDroppedForeignKeys(), - ); - - foreach ($remainingForeignKeys as $foreignKey) { - foreach ($diff->getRenamedIndexes() as $index) { - if ($foreignKey->intersectsIndexColumns($index)) { - $foreignKeys[] = $foreignKey; - - break; - } - } - } - - return $foreignKeys; - } - - /** - * {@inheritDoc} - */ - protected function getPostAlterTableIndexForeignKeySQL(TableDiff $diff) - { - return array_merge( - parent::getPostAlterTableIndexForeignKeySQL($diff), - $this->getPostAlterTableRenameIndexForeignKeySQL($diff), - ); - } - - /** - * @param TableDiff $diff The table diff to gather the SQL for. - * - * @return string[] - */ - protected function getPostAlterTableRenameIndexForeignKeySQL(TableDiff $diff) - { - $sql = []; - $newName = $diff->getNewName(); - - if ($newName !== false) { - $tableNameSQL = $newName->getQuotedName($this); - } else { - $tableNameSQL = ($diff->getOldTable() ?? $diff->getName($this))->getQuotedName($this); - } - - foreach ($this->getRemainingForeignKeyConstraintsRequiringRenamedIndexes($diff) as $foreignKey) { - if (in_array($foreignKey, $diff->getModifiedForeignKeys(), true)) { - continue; - } - - $sql[] = $this->getCreateForeignKeySQL($foreignKey, $tableNameSQL); - } - - return $sql; - } - - /** - * {@inheritDoc} - */ - protected function getCreateIndexSQLFlags(Index $index) - { - $type = ''; - if ($index->isUnique()) { - $type .= 'UNIQUE '; - } elseif ($index->hasFlag('fulltext')) { - $type .= 'FULLTEXT '; - } elseif ($index->hasFlag('spatial')) { - $type .= 'SPATIAL '; - } - - return $type; - } - - /** - * {@inheritDoc} - */ - public function getIntegerTypeDeclarationSQL(array $column) - { - return 'INT' . $this->_getCommonIntegerTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - */ - public function getBigIntTypeDeclarationSQL(array $column) - { - return 'BIGINT' . $this->_getCommonIntegerTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - */ - public function getSmallIntTypeDeclarationSQL(array $column) - { - return 'SMALLINT' . $this->_getCommonIntegerTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - */ - public function getFloatDeclarationSQL(array $column) - { - return 'DOUBLE PRECISION' . $this->getUnsignedDeclaration($column); - } - - /** - * {@inheritDoc} - */ - public function getDecimalTypeDeclarationSQL(array $column) - { - return parent::getDecimalTypeDeclarationSQL($column) . $this->getUnsignedDeclaration($column); - } - - /** - * Get unsigned declaration for a column. - * - * @param mixed[] $columnDef - */ - private function getUnsignedDeclaration(array $columnDef): string - { - return ! empty($columnDef['unsigned']) ? ' UNSIGNED' : ''; - } - - /** - * {@inheritDoc} - */ - protected function _getCommonIntegerTypeDeclarationSQL(array $column) - { - $autoinc = ''; - if (! empty($column['autoincrement'])) { - $autoinc = ' AUTO_INCREMENT'; - } - - return $this->getUnsignedDeclaration($column) . $autoinc; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function getColumnCharsetDeclarationSQL($charset) - { - return 'CHARACTER SET ' . $charset; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function getAdvancedForeignKeyOptionsSQL(ForeignKeyConstraint $foreignKey) - { - $query = ''; - if ($foreignKey->hasOption('match')) { - $query .= ' MATCH ' . $foreignKey->getOption('match'); - } - - $query .= parent::getAdvancedForeignKeyOptionsSQL($foreignKey); - - return $query; - } - - /** - * {@inheritDoc} - */ - public function getDropIndexSQL($index, $table = null) - { - if ($index instanceof Index) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $index as an Index object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $indexName = $index->getQuotedName($this); - } elseif (is_string($index)) { - $indexName = $index; - } else { - throw new InvalidArgumentException( - __METHOD__ . '() expects $index parameter to be string or ' . Index::class . '.', - ); - } - - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as a Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $table = $table->getQuotedName($this); - } elseif (! is_string($table)) { - throw new InvalidArgumentException( - __METHOD__ . '() expects $table parameter to be string or ' . Table::class . '.', - ); - } - - if ($index instanceof Index && $index->isPrimary()) { - // MySQL primary keys are always named "PRIMARY", - // so we cannot use them in statements because of them being keyword. - return $this->getDropPrimaryKeySQL($table); - } - - return 'DROP INDEX ' . $indexName . ' ON ' . $table; - } - - /** - * @param string $table - * - * @return string - */ - protected function getDropPrimaryKeySQL($table) - { - return 'ALTER TABLE ' . $table . ' DROP PRIMARY KEY'; - } - - /** - * The `ALTER TABLE ... DROP CONSTRAINT` syntax is only available as of MySQL 8.0.19. - * - * @link https://dev.mysql.com/doc/refman/8.0/en/alter-table.html - */ - public function getDropUniqueConstraintSQL(string $name, string $tableName): string - { - return $this->getDropIndexSQL($name, $tableName); - } - - /** - * {@inheritDoc} - */ - public function getSetTransactionIsolationSQL($level) - { - return 'SET SESSION TRANSACTION ISOLATION LEVEL ' . $this->_getTransactionIsolationLevelSQL($level); - } - - /** - * {@inheritDoc} - */ - public function getName() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4749', - 'AbstractMySQLPlatform::getName() is deprecated. Identify platforms by their class.', - ); - - return 'mysql'; - } - - /** - * {@inheritDoc} - */ - public function getReadLockSQL() - { - return 'LOCK IN SHARE MODE'; - } - - /** - * {@inheritDoc} - */ - protected function initializeDoctrineTypeMappings() - { - $this->doctrineTypeMapping = [ - 'bigint' => Types::BIGINT, - 'binary' => Types::BINARY, - 'blob' => Types::BLOB, - 'char' => Types::STRING, - 'date' => Types::DATE_MUTABLE, - 'datetime' => Types::DATETIME_MUTABLE, - 'decimal' => Types::DECIMAL, - 'double' => Types::FLOAT, - 'float' => Types::FLOAT, - 'int' => Types::INTEGER, - 'integer' => Types::INTEGER, - 'longblob' => Types::BLOB, - 'longtext' => Types::TEXT, - 'mediumblob' => Types::BLOB, - 'mediumint' => Types::INTEGER, - 'mediumtext' => Types::TEXT, - 'numeric' => Types::DECIMAL, - 'real' => Types::FLOAT, - 'set' => Types::SIMPLE_ARRAY, - 'smallint' => Types::SMALLINT, - 'string' => Types::STRING, - 'text' => Types::TEXT, - 'time' => Types::TIME_MUTABLE, - 'timestamp' => Types::DATETIME_MUTABLE, - 'tinyblob' => Types::BLOB, - 'tinyint' => Types::BOOLEAN, - 'tinytext' => Types::TEXT, - 'varbinary' => Types::BINARY, - 'varchar' => Types::STRING, - 'year' => Types::DATE_MUTABLE, - ]; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function getVarcharMaxLength() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'AbstractMySQLPlatform::getVarcharMaxLength() is deprecated.', - ); - - return 65535; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function getBinaryMaxLength() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'AbstractMySQLPlatform::getBinaryMaxLength() is deprecated.', - ); - - return 65535; - } - - /** - * {@inheritDoc} - * - * @deprecated Implement {@see createReservedKeywordsList()} instead. - */ - protected function getReservedKeywordsClass() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4510', - 'AbstractMySQLPlatform::getReservedKeywordsClass() is deprecated,' - . ' use AbstractMySQLPlatform::createReservedKeywordsList() instead.', - ); - - return Keywords\MySQLKeywords::class; - } - - /** - * {@inheritDoc} - * - * MySQL commits a transaction implicitly when DROP TABLE is executed, however not - * if DROP TEMPORARY TABLE is executed. - */ - public function getDropTemporaryTableSQL($table) - { - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as a Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $table = $table->getQuotedName($this); - } elseif (! is_string($table)) { - throw new InvalidArgumentException( - __METHOD__ . '() expects $table parameter to be string or ' . Table::class . '.', - ); - } - - return 'DROP TEMPORARY TABLE ' . $table; - } - - /** - * Gets the SQL Snippet used to declare a BLOB column type. - * TINYBLOB : 2 ^ 8 - 1 = 255 - * BLOB : 2 ^ 16 - 1 = 65535 - * MEDIUMBLOB : 2 ^ 24 - 1 = 16777215 - * LONGBLOB : 2 ^ 32 - 1 = 4294967295 - * - * {@inheritDoc} - */ - public function getBlobTypeDeclarationSQL(array $column) - { - if (! empty($column['length']) && is_numeric($column['length'])) { - $length = $column['length']; - - if ($length <= static::LENGTH_LIMIT_TINYBLOB) { - return 'TINYBLOB'; - } - - if ($length <= static::LENGTH_LIMIT_BLOB) { - return 'BLOB'; - } - - if ($length <= static::LENGTH_LIMIT_MEDIUMBLOB) { - return 'MEDIUMBLOB'; - } - } - - return 'LONGBLOB'; - } - - /** - * {@inheritDoc} - */ - public function quoteStringLiteral($str) - { - $str = str_replace('\\', '\\\\', $str); // MySQL requires backslashes to be escaped - - return parent::quoteStringLiteral($str); - } - - /** - * {@inheritDoc} - */ - public function getDefaultTransactionIsolationLevel() - { - return TransactionIsolationLevel::REPEATABLE_READ; - } - - public function supportsColumnLengthIndexes(): bool - { - return true; - } - - /** @deprecated Will be removed without replacement. */ - protected function getDatabaseNameSQL(?string $databaseName): string - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6215', - '%s is deprecated without replacement.', - __METHOD__, - ); - - if ($databaseName !== null) { - return $this->quoteStringLiteral($databaseName); - } - - return $this->getCurrentDatabaseExpression(); - } - - public function createSchemaManager(Connection $connection): MySQLSchemaManager - { - return new MySQLSchemaManager($connection, $this); - } - - /** - * @param list $assets - * - * @return array - * - * @template T of AbstractAsset - */ - private function indexAssetsByLowerCaseName(array $assets): array - { - $result = []; - - foreach ($assets as $asset) { - $result[strtolower($asset->getName())] = $asset; - } - - return $result; - } - - public function fetchTableOptionsByTable(bool $includeTableName): string - { - $sql = <<<'SQL' - SELECT t.TABLE_NAME, - t.ENGINE, - t.AUTO_INCREMENT, - t.TABLE_COMMENT, - t.CREATE_OPTIONS, - t.TABLE_COLLATION, - ccsa.CHARACTER_SET_NAME - FROM information_schema.TABLES t - INNER JOIN information_schema.COLLATION_CHARACTER_SET_APPLICABILITY ccsa - ON ccsa.COLLATION_NAME = t.TABLE_COLLATION -SQL; - - $conditions = ['t.TABLE_SCHEMA = ?']; - - if ($includeTableName) { - $conditions[] = 't.TABLE_NAME = ?'; - } - - $conditions[] = "t.TABLE_TYPE = 'BASE TABLE'"; - - return $sql . ' WHERE ' . implode(' AND ', $conditions); - } -} diff --git a/docker/streamline-src/vendor/doctrine/dbal/src/Platforms/AbstractPlatform.php b/docker/streamline-src/vendor/doctrine/dbal/src/Platforms/AbstractPlatform.php deleted file mode 100644 index 928a5a02..00000000 --- a/docker/streamline-src/vendor/doctrine/dbal/src/Platforms/AbstractPlatform.php +++ /dev/null @@ -1,4727 +0,0 @@ -disableTypeComments = $value; - } - - /** - * Sets the EventManager used by the Platform. - * - * @deprecated - * - * @return void - */ - public function setEventManager(EventManager $eventManager) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - '%s is deprecated.', - __METHOD__, - ); - - $this->_eventManager = $eventManager; - } - - /** - * Gets the EventManager used by the Platform. - * - * @deprecated - * - * @return EventManager|null - */ - public function getEventManager() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - '%s is deprecated.', - __METHOD__, - ); - - return $this->_eventManager; - } - - /** - * Returns the SQL snippet that declares a boolean column. - * - * @param mixed[] $column - * - * @return string - */ - abstract public function getBooleanTypeDeclarationSQL(array $column); - - /** - * Returns the SQL snippet that declares a 4 byte integer column. - * - * @param mixed[] $column - * - * @return string - */ - abstract public function getIntegerTypeDeclarationSQL(array $column); - - /** - * Returns the SQL snippet that declares an 8 byte integer column. - * - * @param mixed[] $column - * - * @return string - */ - abstract public function getBigIntTypeDeclarationSQL(array $column); - - /** - * Returns the SQL snippet that declares a 2 byte integer column. - * - * @param mixed[] $column - * - * @return string - */ - abstract public function getSmallIntTypeDeclarationSQL(array $column); - - /** - * Returns the SQL snippet that declares common properties of an integer column. - * - * @param mixed[] $column - * - * @return string - */ - abstract protected function _getCommonIntegerTypeDeclarationSQL(array $column); - - /** - * Lazy load Doctrine Type Mappings. - * - * @return void - */ - abstract protected function initializeDoctrineTypeMappings(); - - /** - * Initializes Doctrine Type Mappings with the platform defaults - * and with all additional type mappings. - */ - private function initializeAllDoctrineTypeMappings(): void - { - $this->initializeDoctrineTypeMappings(); - - foreach (Type::getTypesMap() as $typeName => $className) { - foreach (Type::getType($typeName)->getMappedDatabaseTypes($this) as $dbType) { - $dbType = strtolower($dbType); - $this->doctrineTypeMapping[$dbType] = $typeName; - } - } - } - - /** - * Returns the SQL snippet used to declare a column that can - * store characters in the ASCII character set - * - * @param mixed[] $column - */ - public function getAsciiStringTypeDeclarationSQL(array $column): string - { - return $this->getStringTypeDeclarationSQL($column); - } - - /** - * Returns the SQL snippet used to declare a VARCHAR column type. - * - * @deprecated Use {@link getStringTypeDeclarationSQL()} instead. - * - * @param mixed[] $column - * - * @return string - */ - public function getVarcharTypeDeclarationSQL(array $column) - { - if (isset($column['length'])) { - $lengthOmitted = false; - } else { - $column['length'] = $this->getVarcharDefaultLength(); - $lengthOmitted = true; - } - - $fixed = $column['fixed'] ?? false; - - $maxLength = $fixed - ? $this->getCharMaxLength() - : $this->getVarcharMaxLength(); - - if ($column['length'] > $maxLength) { - return $this->getClobTypeDeclarationSQL($column); - } - - return $this->getVarcharTypeDeclarationSQLSnippet($column['length'], $fixed, $lengthOmitted); - } - - /** - * Returns the SQL snippet used to declare a string column type. - * - * @param mixed[] $column - * - * @return string - */ - public function getStringTypeDeclarationSQL(array $column) - { - return $this->getVarcharTypeDeclarationSQL($column); - } - - /** - * Returns the SQL snippet used to declare a BINARY/VARBINARY column type. - * - * @param mixed[] $column The column definition. - * - * @return string - */ - public function getBinaryTypeDeclarationSQL(array $column) - { - if (isset($column['length'])) { - $lengthOmitted = false; - } else { - $column['length'] = $this->getBinaryDefaultLength(); - $lengthOmitted = true; - } - - $fixed = $column['fixed'] ?? false; - - $maxLength = $this->getBinaryMaxLength(); - - if ($column['length'] > $maxLength) { - if ($maxLength > 0) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3187', - 'Binary column length %d is greater than supported by the platform (%d).' - . ' Reduce the column length or use a BLOB column instead.', - $column['length'], - $maxLength, - ); - } - - return $this->getBlobTypeDeclarationSQL($column); - } - - return $this->getBinaryTypeDeclarationSQLSnippet($column['length'], $fixed, $lengthOmitted); - } - - /** - * Returns the SQL snippet to declare a GUID/UUID column. - * - * By default this maps directly to a CHAR(36) and only maps to more - * special datatypes when the underlying databases support this datatype. - * - * @param mixed[] $column - * - * @return string - */ - public function getGuidTypeDeclarationSQL(array $column) - { - $column['length'] = 36; - $column['fixed'] = true; - - return $this->getStringTypeDeclarationSQL($column); - } - - /** - * Returns the SQL snippet to declare a JSON column. - * - * By default this maps directly to a CLOB and only maps to more - * special datatypes when the underlying databases support this datatype. - * - * @param mixed[] $column - * - * @return string - */ - public function getJsonTypeDeclarationSQL(array $column) - { - return $this->getClobTypeDeclarationSQL($column); - } - - /** - * @param int|false $length - * @param bool $fixed - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - protected function getVarcharTypeDeclarationSQLSnippet($length, $fixed/*, $lengthOmitted = false*/) - { - throw Exception::notSupported('VARCHARs not supported by Platform.'); - } - - /** - * Returns the SQL snippet used to declare a BINARY/VARBINARY column type. - * - * @param int|false $length The length of the column. - * @param bool $fixed Whether the column length is fixed. - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - protected function getBinaryTypeDeclarationSQLSnippet($length, $fixed/*, $lengthOmitted = false*/) - { - throw Exception::notSupported('BINARY/VARBINARY column types are not supported by this platform.'); - } - - /** - * Returns the SQL snippet used to declare a CLOB column type. - * - * @param mixed[] $column - * - * @return string - */ - abstract public function getClobTypeDeclarationSQL(array $column); - - /** - * Returns the SQL Snippet used to declare a BLOB column type. - * - * @param mixed[] $column - * - * @return string - */ - abstract public function getBlobTypeDeclarationSQL(array $column); - - /** - * Gets the name of the platform. - * - * @deprecated Identify platforms by their class. - * - * @return string - */ - abstract public function getName(); - - /** - * Registers a doctrine type to be used in conjunction with a column type of this platform. - * - * @param string $dbType - * @param string $doctrineType - * - * @return void - * - * @throws Exception If the type is not found. - */ - public function registerDoctrineTypeMapping($dbType, $doctrineType) - { - if ($this->doctrineTypeMapping === null) { - $this->initializeAllDoctrineTypeMappings(); - } - - if (! Types\Type::hasType($doctrineType)) { - throw Exception::typeNotFound($doctrineType); - } - - $dbType = strtolower($dbType); - $this->doctrineTypeMapping[$dbType] = $doctrineType; - - $doctrineType = Type::getType($doctrineType); - - if (! $doctrineType->requiresSQLCommentHint($this)) { - return; - } - - $this->markDoctrineTypeCommented($doctrineType); - } - - /** - * Gets the Doctrine type that is mapped for the given database column type. - * - * @param string $dbType - * - * @return string - * - * @throws Exception - */ - public function getDoctrineTypeMapping($dbType) - { - if ($this->doctrineTypeMapping === null) { - $this->initializeAllDoctrineTypeMappings(); - } - - $dbType = strtolower($dbType); - - if (! isset($this->doctrineTypeMapping[$dbType])) { - throw new Exception( - 'Unknown database type ' . $dbType . ' requested, ' . static::class . ' may not support it.', - ); - } - - return $this->doctrineTypeMapping[$dbType]; - } - - /** - * Checks if a database type is currently supported by this platform. - * - * @param string $dbType - * - * @return bool - */ - public function hasDoctrineTypeMappingFor($dbType) - { - if ($this->doctrineTypeMapping === null) { - $this->initializeAllDoctrineTypeMappings(); - } - - $dbType = strtolower($dbType); - - return isset($this->doctrineTypeMapping[$dbType]); - } - - /** - * Initializes the Doctrine Type comments instance variable for in_array() checks. - * - * @deprecated This API will be removed in Doctrine DBAL 4.0. - * - * @return void - */ - protected function initializeCommentedDoctrineTypes() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5058', - '%s is deprecated and will be removed in Doctrine DBAL 4.0.', - __METHOD__, - ); - - $this->doctrineTypeComments = []; - - foreach (Type::getTypesMap() as $typeName => $className) { - $type = Type::getType($typeName); - - if (! $type->requiresSQLCommentHint($this)) { - continue; - } - - $this->doctrineTypeComments[] = $typeName; - } - } - - /** - * Is it necessary for the platform to add a parsable type comment to allow reverse engineering the given type? - * - * @deprecated Use {@link Type::requiresSQLCommentHint()} instead. - * - * @return bool - */ - public function isCommentedDoctrineType(Type $doctrineType) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5058', - '%s is deprecated and will be removed in Doctrine DBAL 4.0. Use Type::requiresSQLCommentHint() instead.', - __METHOD__, - ); - - if ($this->doctrineTypeComments === null) { - $this->initializeCommentedDoctrineTypes(); - } - - return $doctrineType->requiresSQLCommentHint($this); - } - - /** - * Marks this type as to be commented in ALTER TABLE and CREATE TABLE statements. - * - * @param string|Type $doctrineType - * - * @return void - */ - public function markDoctrineTypeCommented($doctrineType) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5058', - '%s is deprecated and will be removed in Doctrine DBAL 4.0. Use Type::requiresSQLCommentHint() instead.', - __METHOD__, - ); - - if ($this->doctrineTypeComments === null) { - $this->initializeCommentedDoctrineTypes(); - } - - assert(is_array($this->doctrineTypeComments)); - - $this->doctrineTypeComments[] = $doctrineType instanceof Type ? $doctrineType->getName() : $doctrineType; - } - - /** - * Gets the comment to append to a column comment that helps parsing this type in reverse engineering. - * - * @deprecated This method will be removed without replacement. - * - * @return string - */ - public function getDoctrineTypeComment(Type $doctrineType) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5107', - '%s is deprecated and will be removed in Doctrine DBAL 4.0.', - __METHOD__, - ); - - return '(DC2Type:' . $doctrineType->getName() . ')'; - } - - /** - * Gets the comment of a passed column modified by potential doctrine type comment hints. - * - * @deprecated This method will be removed without replacement. - * - * @return string|null - */ - protected function getColumnComment(Column $column) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5107', - '%s is deprecated and will be removed in Doctrine DBAL 4.0.', - __METHOD__, - ); - - $comment = $column->getComment(); - - if (! $this->disableTypeComments && $column->getType()->requiresSQLCommentHint($this)) { - $comment .= $this->getDoctrineTypeComment($column->getType()); - } - - return $comment; - } - - /** - * Gets the character used for identifier quoting. - * - * @deprecated Use {@see quoteIdentifier()} to quote identifiers instead. - * - * @return string - */ - public function getIdentifierQuoteCharacter() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5388', - 'AbstractPlatform::getIdentifierQuoteCharacter() is deprecated. Use quoteIdentifier() instead.', - ); - - return '"'; - } - - /** - * Gets the string portion that starts an SQL comment. - * - * @deprecated - * - * @return string - */ - public function getSqlCommentStartString() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getSqlCommentStartString() is deprecated.', - ); - - return '--'; - } - - /** - * Gets the string portion that ends an SQL comment. - * - * @deprecated - * - * @return string - */ - public function getSqlCommentEndString() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getSqlCommentEndString() is deprecated.', - ); - - return "\n"; - } - - /** - * Gets the maximum length of a char column. - * - * @deprecated - */ - public function getCharMaxLength(): int - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'AbstractPlatform::getCharMaxLength() is deprecated.', - ); - - return $this->getVarcharMaxLength(); - } - - /** - * Gets the maximum length of a varchar column. - * - * @deprecated - * - * @return int - */ - public function getVarcharMaxLength() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'AbstractPlatform::getVarcharMaxLength() is deprecated.', - ); - - return 4000; - } - - /** - * Gets the default length of a varchar column. - * - * @deprecated - * - * @return int - */ - public function getVarcharDefaultLength() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'Relying on the default varchar column length is deprecated, specify the length explicitly.', - ); - - return 255; - } - - /** - * Gets the maximum length of a binary column. - * - * @deprecated - * - * @return int - */ - public function getBinaryMaxLength() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'AbstractPlatform::getBinaryMaxLength() is deprecated.', - ); - - return 4000; - } - - /** - * Gets the default length of a binary column. - * - * @deprecated - * - * @return int - */ - public function getBinaryDefaultLength() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'Relying on the default binary column length is deprecated, specify the length explicitly.', - ); - - return 255; - } - - /** - * Gets all SQL wildcard characters of the platform. - * - * @deprecated Use {@see AbstractPlatform::getLikeWildcardCharacters()} instead. - * - * @return string[] - */ - public function getWildcards() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getWildcards() is deprecated.' - . ' Use AbstractPlatform::getLikeWildcardCharacters() instead.', - ); - - return ['%', '_']; - } - - /** - * Returns the regular expression operator. - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getRegexpExpression() - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Returns the SQL snippet to get the average value of a column. - * - * @deprecated Use AVG() in SQL instead. - * - * @param string $column The column to use. - * - * @return string Generated SQL including an AVG aggregate function. - */ - public function getAvgExpression($column) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getAvgExpression() is deprecated. Use AVG() in SQL instead.', - ); - - return 'AVG(' . $column . ')'; - } - - /** - * Returns the SQL snippet to get the number of rows (without a NULL value) of a column. - * - * If a '*' is used instead of a column the number of selected rows is returned. - * - * @deprecated Use COUNT() in SQL instead. - * - * @param string|int $column The column to use. - * - * @return string Generated SQL including a COUNT aggregate function. - */ - public function getCountExpression($column) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getCountExpression() is deprecated. Use COUNT() in SQL instead.', - ); - - return 'COUNT(' . $column . ')'; - } - - /** - * Returns the SQL snippet to get the highest value of a column. - * - * @deprecated Use MAX() in SQL instead. - * - * @param string $column The column to use. - * - * @return string Generated SQL including a MAX aggregate function. - */ - public function getMaxExpression($column) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getMaxExpression() is deprecated. Use MAX() in SQL instead.', - ); - - return 'MAX(' . $column . ')'; - } - - /** - * Returns the SQL snippet to get the lowest value of a column. - * - * @deprecated Use MIN() in SQL instead. - * - * @param string $column The column to use. - * - * @return string Generated SQL including a MIN aggregate function. - */ - public function getMinExpression($column) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getMinExpression() is deprecated. Use MIN() in SQL instead.', - ); - - return 'MIN(' . $column . ')'; - } - - /** - * Returns the SQL snippet to get the total sum of a column. - * - * @deprecated Use SUM() in SQL instead. - * - * @param string $column The column to use. - * - * @return string Generated SQL including a SUM aggregate function. - */ - public function getSumExpression($column) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getSumExpression() is deprecated. Use SUM() in SQL instead.', - ); - - return 'SUM(' . $column . ')'; - } - - // scalar functions - - /** - * Returns the SQL snippet to get the md5 sum of a column. - * - * Note: Not SQL92, but common functionality. - * - * @deprecated - * - * @param string $column - * - * @return string - */ - public function getMd5Expression($column) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getMd5Expression() is deprecated.', - ); - - return 'MD5(' . $column . ')'; - } - - /** - * Returns the SQL snippet to get the length of a text column in characters. - * - * @param string $column - * - * @return string - */ - public function getLengthExpression($column) - { - return 'LENGTH(' . $column . ')'; - } - - /** - * Returns the SQL snippet to get the squared value of a column. - * - * @deprecated Use SQRT() in SQL instead. - * - * @param string $column The column to use. - * - * @return string Generated SQL including an SQRT aggregate function. - */ - public function getSqrtExpression($column) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getSqrtExpression() is deprecated. Use SQRT() in SQL instead.', - ); - - return 'SQRT(' . $column . ')'; - } - - /** - * Returns the SQL snippet to round a numeric column to the number of decimals specified. - * - * @deprecated Use ROUND() in SQL instead. - * - * @param string $column - * @param string|int $decimals - * - * @return string - */ - public function getRoundExpression($column, $decimals = 0) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getRoundExpression() is deprecated. Use ROUND() in SQL instead.', - ); - - return 'ROUND(' . $column . ', ' . $decimals . ')'; - } - - /** - * Returns the SQL snippet to get the remainder of the division operation $expression1 / $expression2. - * - * @param string $expression1 - * @param string $expression2 - * - * @return string - */ - public function getModExpression($expression1, $expression2) - { - return 'MOD(' . $expression1 . ', ' . $expression2 . ')'; - } - - /** - * Returns the SQL snippet to trim a string. - * - * @param string $str The expression to apply the trim to. - * @param int $mode The position of the trim (leading/trailing/both). - * @param string|bool $char The char to trim, has to be quoted already. Defaults to space. - * - * @return string - */ - public function getTrimExpression($str, $mode = TrimMode::UNSPECIFIED, $char = false) - { - $expression = ''; - - switch ($mode) { - case TrimMode::LEADING: - $expression = 'LEADING '; - break; - - case TrimMode::TRAILING: - $expression = 'TRAILING '; - break; - - case TrimMode::BOTH: - $expression = 'BOTH '; - break; - } - - if ($char !== false) { - $expression .= $char . ' '; - } - - if ($mode !== TrimMode::UNSPECIFIED || $char !== false) { - $expression .= 'FROM '; - } - - return 'TRIM(' . $expression . $str . ')'; - } - - /** - * Returns the SQL snippet to trim trailing space characters from the expression. - * - * @deprecated Use RTRIM() in SQL instead. - * - * @param string $str Literal string or column name. - * - * @return string - */ - public function getRtrimExpression($str) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getRtrimExpression() is deprecated. Use RTRIM() in SQL instead.', - ); - - return 'RTRIM(' . $str . ')'; - } - - /** - * Returns the SQL snippet to trim leading space characters from the expression. - * - * @deprecated Use LTRIM() in SQL instead. - * - * @param string $str Literal string or column name. - * - * @return string - */ - public function getLtrimExpression($str) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getLtrimExpression() is deprecated. Use LTRIM() in SQL instead.', - ); - - return 'LTRIM(' . $str . ')'; - } - - /** - * Returns the SQL snippet to change all characters from the expression to uppercase, - * according to the current character set mapping. - * - * @deprecated Use UPPER() in SQL instead. - * - * @param string $str Literal string or column name. - * - * @return string - */ - public function getUpperExpression($str) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getUpperExpression() is deprecated. Use UPPER() in SQL instead.', - ); - - return 'UPPER(' . $str . ')'; - } - - /** - * Returns the SQL snippet to change all characters from the expression to lowercase, - * according to the current character set mapping. - * - * @deprecated Use LOWER() in SQL instead. - * - * @param string $str Literal string or column name. - * - * @return string - */ - public function getLowerExpression($str) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getLowerExpression() is deprecated. Use LOWER() in SQL instead.', - ); - - return 'LOWER(' . $str . ')'; - } - - /** - * Returns the SQL snippet to get the position of the first occurrence of substring $substr in string $str. - * - * @param string $str Literal string. - * @param string $substr Literal string to find. - * @param string|int|false $startPos Position to start at, beginning of string by default. - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getLocateExpression($str, $substr, $startPos = false) - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Returns the SQL snippet to get the current system date. - * - * @deprecated Generate dates within the application. - * - * @return string - */ - public function getNowExpression() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4753', - 'AbstractPlatform::getNowExpression() is deprecated. Generate dates within the application.', - ); - - return 'NOW()'; - } - - /** - * Returns a SQL snippet to get a substring inside an SQL statement. - * - * Note: Not SQL92, but common functionality. - * - * SQLite only supports the 2 parameter variant of this function. - * - * @param string $string An sql string literal or column name/alias. - * @param string|int $start Where to start the substring portion. - * @param string|int|null $length The substring portion length. - * - * @return string - */ - public function getSubstringExpression($string, $start, $length = null) - { - if ($length === null) { - return 'SUBSTRING(' . $string . ' FROM ' . $start . ')'; - } - - return 'SUBSTRING(' . $string . ' FROM ' . $start . ' FOR ' . $length . ')'; - } - - /** - * Returns a SQL snippet to concatenate the given expressions. - * - * Accepts an arbitrary number of string parameters. Each parameter must contain an expression. - * - * @return string - */ - public function getConcatExpression() - { - return implode(' || ', func_get_args()); - } - - /** - * Returns the SQL for a logical not. - * - * Example: - * - * $q = new Doctrine_Query(); - * $e = $q->expr; - * $q->select('*')->from('table') - * ->where($e->eq('id', $e->not('null')); - * - * - * @deprecated Use NOT() in SQL instead. - * - * @param string $expression - * - * @return string The logical expression. - */ - public function getNotExpression($expression) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getNotExpression() is deprecated. Use NOT() in SQL instead.', - ); - - return 'NOT(' . $expression . ')'; - } - - /** - * Returns the SQL that checks if an expression is null. - * - * @deprecated Use IS NULL in SQL instead. - * - * @param string $expression The expression that should be compared to null. - * - * @return string The logical expression. - */ - public function getIsNullExpression($expression) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getIsNullExpression() is deprecated. Use IS NULL in SQL instead.', - ); - - return $expression . ' IS NULL'; - } - - /** - * Returns the SQL that checks if an expression is not null. - * - * @deprecated Use IS NOT NULL in SQL instead. - * - * @param string $expression The expression that should be compared to null. - * - * @return string The logical expression. - */ - public function getIsNotNullExpression($expression) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getIsNotNullExpression() is deprecated. Use IS NOT NULL in SQL instead.', - ); - - return $expression . ' IS NOT NULL'; - } - - /** - * Returns the SQL that checks if an expression evaluates to a value between two values. - * - * The parameter $expression is checked if it is between $value1 and $value2. - * - * Note: There is a slight difference in the way BETWEEN works on some databases. - * http://www.w3schools.com/sql/sql_between.asp. If you want complete database - * independence you should avoid using between(). - * - * @deprecated Use BETWEEN in SQL instead. - * - * @param string $expression The value to compare to. - * @param string $value1 The lower value to compare with. - * @param string $value2 The higher value to compare with. - * - * @return string The logical expression. - */ - public function getBetweenExpression($expression, $value1, $value2) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getBetweenExpression() is deprecated. Use BETWEEN in SQL instead.', - ); - - return $expression . ' BETWEEN ' . $value1 . ' AND ' . $value2; - } - - /** - * Returns the SQL to get the arccosine of a value. - * - * @deprecated Use ACOS() in SQL instead. - * - * @param string $value - * - * @return string - */ - public function getAcosExpression($value) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getAcosExpression() is deprecated. Use ACOS() in SQL instead.', - ); - - return 'ACOS(' . $value . ')'; - } - - /** - * Returns the SQL to get the sine of a value. - * - * @deprecated Use SIN() in SQL instead. - * - * @param string $value - * - * @return string - */ - public function getSinExpression($value) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getSinExpression() is deprecated. Use SIN() in SQL instead.', - ); - - return 'SIN(' . $value . ')'; - } - - /** - * Returns the SQL to get the PI value. - * - * @deprecated Use PI() in SQL instead. - * - * @return string - */ - public function getPiExpression() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getPiExpression() is deprecated. Use PI() in SQL instead.', - ); - - return 'PI()'; - } - - /** - * Returns the SQL to get the cosine of a value. - * - * @deprecated Use COS() in SQL instead. - * - * @param string $value - * - * @return string - */ - public function getCosExpression($value) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getCosExpression() is deprecated. Use COS() in SQL instead.', - ); - - return 'COS(' . $value . ')'; - } - - /** - * Returns the SQL to calculate the difference in days between the two passed dates. - * - * Computes diff = date1 - date2. - * - * @param string $date1 - * @param string $date2 - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateDiffExpression($date1, $date2) - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Returns the SQL to add the number of given seconds to a date. - * - * @param string $date - * @param int|string $seconds - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateAddSecondsExpression($date, $seconds) - { - if (is_int($seconds)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3498', - 'Passing $seconds as an integer is deprecated. Pass it as a numeric string instead.', - ); - } - - return $this->getDateArithmeticIntervalExpression($date, '+', $seconds, DateIntervalUnit::SECOND); - } - - /** - * Returns the SQL to subtract the number of given seconds from a date. - * - * @param string $date - * @param int|string $seconds - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateSubSecondsExpression($date, $seconds) - { - if (is_int($seconds)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3498', - 'Passing $seconds as an integer is deprecated. Pass it as a numeric string instead.', - ); - } - - return $this->getDateArithmeticIntervalExpression($date, '-', $seconds, DateIntervalUnit::SECOND); - } - - /** - * Returns the SQL to add the number of given minutes to a date. - * - * @param string $date - * @param int|string $minutes - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateAddMinutesExpression($date, $minutes) - { - if (is_int($minutes)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3498', - 'Passing $minutes as an integer is deprecated. Pass it as a numeric string instead.', - ); - } - - return $this->getDateArithmeticIntervalExpression($date, '+', $minutes, DateIntervalUnit::MINUTE); - } - - /** - * Returns the SQL to subtract the number of given minutes from a date. - * - * @param string $date - * @param int|string $minutes - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateSubMinutesExpression($date, $minutes) - { - if (is_int($minutes)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3498', - 'Passing $minutes as an integer is deprecated. Pass it as a numeric string instead.', - ); - } - - return $this->getDateArithmeticIntervalExpression($date, '-', $minutes, DateIntervalUnit::MINUTE); - } - - /** - * Returns the SQL to add the number of given hours to a date. - * - * @param string $date - * @param int|string $hours - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateAddHourExpression($date, $hours) - { - if (is_int($hours)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3498', - 'Passing $hours as an integer is deprecated. Pass it as a numeric string instead.', - ); - } - - return $this->getDateArithmeticIntervalExpression($date, '+', $hours, DateIntervalUnit::HOUR); - } - - /** - * Returns the SQL to subtract the number of given hours to a date. - * - * @param string $date - * @param int|string $hours - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateSubHourExpression($date, $hours) - { - if (is_int($hours)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3498', - 'Passing $hours as an integer is deprecated. Pass it as a numeric string instead.', - ); - } - - return $this->getDateArithmeticIntervalExpression($date, '-', $hours, DateIntervalUnit::HOUR); - } - - /** - * Returns the SQL to add the number of given days to a date. - * - * @param string $date - * @param int|string $days - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateAddDaysExpression($date, $days) - { - if (is_int($days)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3498', - 'Passing $days as an integer is deprecated. Pass it as a numeric string instead.', - ); - } - - return $this->getDateArithmeticIntervalExpression($date, '+', $days, DateIntervalUnit::DAY); - } - - /** - * Returns the SQL to subtract the number of given days to a date. - * - * @param string $date - * @param int|string $days - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateSubDaysExpression($date, $days) - { - if (is_int($days)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3498', - 'Passing $days as an integer is deprecated. Pass it as a numeric string instead.', - ); - } - - return $this->getDateArithmeticIntervalExpression($date, '-', $days, DateIntervalUnit::DAY); - } - - /** - * Returns the SQL to add the number of given weeks to a date. - * - * @param string $date - * @param int|string $weeks - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateAddWeeksExpression($date, $weeks) - { - if (is_int($weeks)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3498', - 'Passing $weeks as an integer is deprecated. Pass it as a numeric string instead.', - ); - } - - return $this->getDateArithmeticIntervalExpression($date, '+', $weeks, DateIntervalUnit::WEEK); - } - - /** - * Returns the SQL to subtract the number of given weeks from a date. - * - * @param string $date - * @param int|string $weeks - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateSubWeeksExpression($date, $weeks) - { - if (is_int($weeks)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3498', - 'Passing $weeks as an integer is deprecated. Pass it as a numeric string instead.', - ); - } - - return $this->getDateArithmeticIntervalExpression($date, '-', $weeks, DateIntervalUnit::WEEK); - } - - /** - * Returns the SQL to add the number of given months to a date. - * - * @param string $date - * @param int|string $months - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateAddMonthExpression($date, $months) - { - if (is_int($months)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3498', - 'Passing $months as an integer is deprecated. Pass it as a numeric string instead.', - ); - } - - return $this->getDateArithmeticIntervalExpression($date, '+', $months, DateIntervalUnit::MONTH); - } - - /** - * Returns the SQL to subtract the number of given months to a date. - * - * @param string $date - * @param int|string $months - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateSubMonthExpression($date, $months) - { - if (is_int($months)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3498', - 'Passing $months as an integer is deprecated. Pass it as a numeric string instead.', - ); - } - - return $this->getDateArithmeticIntervalExpression($date, '-', $months, DateIntervalUnit::MONTH); - } - - /** - * Returns the SQL to add the number of given quarters to a date. - * - * @param string $date - * @param int|string $quarters - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateAddQuartersExpression($date, $quarters) - { - if (is_int($quarters)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3498', - 'Passing $quarters as an integer is deprecated. Pass it as a numeric string instead.', - ); - } - - return $this->getDateArithmeticIntervalExpression($date, '+', $quarters, DateIntervalUnit::QUARTER); - } - - /** - * Returns the SQL to subtract the number of given quarters from a date. - * - * @param string $date - * @param int|string $quarters - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateSubQuartersExpression($date, $quarters) - { - if (is_int($quarters)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3498', - 'Passing $quarters as an integer is deprecated. Pass it as a numeric string instead.', - ); - } - - return $this->getDateArithmeticIntervalExpression($date, '-', $quarters, DateIntervalUnit::QUARTER); - } - - /** - * Returns the SQL to add the number of given years to a date. - * - * @param string $date - * @param int|string $years - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateAddYearsExpression($date, $years) - { - if (is_int($years)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3498', - 'Passing $years as an integer is deprecated. Pass it as a numeric string instead.', - ); - } - - return $this->getDateArithmeticIntervalExpression($date, '+', $years, DateIntervalUnit::YEAR); - } - - /** - * Returns the SQL to subtract the number of given years from a date. - * - * @param string $date - * @param int|string $years - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateSubYearsExpression($date, $years) - { - if (is_int($years)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3498', - 'Passing $years as an integer is deprecated. Pass it as a numeric string instead.', - ); - } - - return $this->getDateArithmeticIntervalExpression($date, '-', $years, DateIntervalUnit::YEAR); - } - - /** - * Returns the SQL for a date arithmetic expression. - * - * @param string $date The column or literal representing a date - * to perform the arithmetic operation on. - * @param string $operator The arithmetic operator (+ or -). - * @param int|string $interval The interval that shall be calculated into the date. - * @param string $unit The unit of the interval that shall be calculated into the date. - * One of the {@see DateIntervalUnit} constants. - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - protected function getDateArithmeticIntervalExpression($date, $operator, $interval, $unit) - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Generates the SQL expression which represents the given date interval multiplied by a number - * - * @param string $interval SQL expression describing the interval value - * @param int $multiplier Interval multiplier - */ - protected function multiplyInterval(string $interval, int $multiplier): string - { - return sprintf('(%s * %d)', $interval, $multiplier); - } - - /** - * Returns the SQL bit AND comparison expression. - * - * @param string $value1 - * @param string $value2 - * - * @return string - */ - public function getBitAndComparisonExpression($value1, $value2) - { - return '(' . $value1 . ' & ' . $value2 . ')'; - } - - /** - * Returns the SQL bit OR comparison expression. - * - * @param string $value1 - * @param string $value2 - * - * @return string - */ - public function getBitOrComparisonExpression($value1, $value2) - { - return '(' . $value1 . ' | ' . $value2 . ')'; - } - - /** - * Returns the SQL expression which represents the currently selected database. - */ - abstract public function getCurrentDatabaseExpression(): string; - - /** - * Returns the FOR UPDATE expression. - * - * @deprecated This API is not portable. Use {@link QueryBuilder::forUpdate()}` instead. - * - * @return string - */ - public function getForUpdateSQL() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6191', - '%s is deprecated as non-portable.', - __METHOD__, - ); - - return 'FOR UPDATE'; - } - - /** - * Honors that some SQL vendors such as MsSql use table hints for locking instead of the - * ANSI SQL FOR UPDATE specification. - * - * @param string $fromClause The FROM clause to append the hint for the given lock mode to - * @param int $lockMode One of the Doctrine\DBAL\LockMode::* constants - * @psalm-param LockMode::* $lockMode - */ - public function appendLockHint(string $fromClause, int $lockMode): string - { - switch ($lockMode) { - case LockMode::NONE: - case LockMode::OPTIMISTIC: - case LockMode::PESSIMISTIC_READ: - case LockMode::PESSIMISTIC_WRITE: - return $fromClause; - - default: - throw InvalidLockMode::fromLockMode($lockMode); - } - } - - /** - * Returns the SQL snippet to append to any SELECT statement which locks rows in shared read lock. - * - * This defaults to the ANSI SQL "FOR UPDATE", which is an exclusive lock (Write). Some database - * vendors allow to lighten this constraint up to be a real read lock. - * - * @deprecated This API is not portable. - * - * @return string - */ - public function getReadLockSQL() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6191', - '%s is deprecated as non-portable.', - __METHOD__, - ); - - return $this->getForUpdateSQL(); - } - - /** - * Returns the SQL snippet to append to any SELECT statement which obtains an exclusive lock on the rows. - * - * The semantics of this lock mode should equal the SELECT .. FOR UPDATE of the ANSI SQL standard. - * - * @deprecated This API is not portable. - * - * @return string - */ - public function getWriteLockSQL() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6191', - '%s is deprecated as non-portable.', - __METHOD__, - ); - - return $this->getForUpdateSQL(); - } - - /** - * Returns the SQL snippet to drop an existing table. - * - * @param Table|string $table - * - * @return string - * - * @throws InvalidArgumentException - */ - public function getDropTableSQL($table) - { - $tableArg = $table; - - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as a Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $table = $table->getQuotedName($this); - } - - if (! is_string($table)) { - throw new InvalidArgumentException( - __METHOD__ . '() expects $table parameter to be string or ' . Table::class . '.', - ); - } - - if ($this->_eventManager !== null && $this->_eventManager->hasListeners(Events::onSchemaDropTable)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - 'Subscribing to %s events is deprecated.', - Events::onSchemaDropTable, - ); - - $eventArgs = new SchemaDropTableEventArgs($tableArg, $this); - $this->_eventManager->dispatchEvent(Events::onSchemaDropTable, $eventArgs); - - if ($eventArgs->isDefaultPrevented()) { - $sql = $eventArgs->getSql(); - - if ($sql === null) { - throw new UnexpectedValueException('Default implementation of DROP TABLE was overridden with NULL'); - } - - return $sql; - } - } - - return 'DROP TABLE ' . $table; - } - - /** - * Returns the SQL to safely drop a temporary table WITHOUT implicitly committing an open transaction. - * - * @param Table|string $table - * - * @return string - */ - public function getDropTemporaryTableSQL($table) - { - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as a Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $table = $table->getQuotedName($this); - } - - return $this->getDropTableSQL($table); - } - - /** - * Returns the SQL to drop an index from a table. - * - * @param Index|string $index - * @param Table|string|null $table - * - * @return string - * - * @throws InvalidArgumentException - */ - public function getDropIndexSQL($index, $table = null) - { - if ($index instanceof Index) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $index as an Index object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $index = $index->getQuotedName($this); - } elseif (! is_string($index)) { - throw new InvalidArgumentException( - __METHOD__ . '() expects $index parameter to be string or ' . Index::class . '.', - ); - } - - return 'DROP INDEX ' . $index; - } - - /** - * Returns the SQL to drop a constraint. - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - * - * @param Constraint|string $constraint - * @param Table|string $table - * - * @return string - */ - public function getDropConstraintSQL($constraint, $table) - { - if ($constraint instanceof Constraint) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $constraint as a Constraint object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - } else { - $constraint = new Identifier($constraint); - } - - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as a Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - } else { - $table = new Identifier($table); - } - - $constraint = $constraint->getQuotedName($this); - $table = $table->getQuotedName($this); - - return 'ALTER TABLE ' . $table . ' DROP CONSTRAINT ' . $constraint; - } - - /** - * Returns the SQL to drop a foreign key. - * - * @param ForeignKeyConstraint|string $foreignKey - * @param Table|string $table - * - * @return string - */ - public function getDropForeignKeySQL($foreignKey, $table) - { - if ($foreignKey instanceof ForeignKeyConstraint) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $foreignKey as a ForeignKeyConstraint object to %s is deprecated.' - . ' Pass it as a quoted name instead.', - __METHOD__, - ); - } else { - $foreignKey = new Identifier($foreignKey); - } - - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as a Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - } else { - $table = new Identifier($table); - } - - $foreignKey = $foreignKey->getQuotedName($this); - $table = $table->getQuotedName($this); - - return 'ALTER TABLE ' . $table . ' DROP FOREIGN KEY ' . $foreignKey; - } - - /** - * Returns the SQL to drop a unique constraint. - */ - public function getDropUniqueConstraintSQL(string $name, string $tableName): string - { - return $this->getDropConstraintSQL($name, $tableName); - } - - /** - * Returns the SQL statement(s) to create a table with the specified name, columns and constraints - * on this platform. - * - * @param int $createFlags - * @psalm-param int-mask-of $createFlags - * - * @return list The list of SQL statements. - * - * @throws Exception - * @throws InvalidArgumentException - */ - public function getCreateTableSQL(Table $table, $createFlags = self::CREATE_INDEXES) - { - if (! is_int($createFlags)) { - throw new InvalidArgumentException( - 'Second argument of AbstractPlatform::getCreateTableSQL() has to be integer.', - ); - } - - if (($createFlags & self::CREATE_INDEXES) === 0) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5416', - 'Unsetting the CREATE_INDEXES flag in AbstractPlatform::getCreateTableSQL() is deprecated.', - ); - } - - if (($createFlags & self::CREATE_FOREIGNKEYS) === 0) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5416', - 'Not setting the CREATE_FOREIGNKEYS flag in AbstractPlatform::getCreateTableSQL()' - . ' is deprecated. In order to build the statements that create multiple tables' - . ' referencing each other via foreign keys, use AbstractPlatform::getCreateTablesSQL().', - ); - } - - return $this->buildCreateTableSQL( - $table, - ($createFlags & self::CREATE_INDEXES) > 0, - ($createFlags & self::CREATE_FOREIGNKEYS) > 0, - ); - } - - public function createSelectSQLBuilder(): SelectSQLBuilder - { - return new DefaultSelectSQLBuilder($this, 'FOR UPDATE', 'SKIP LOCKED'); - } - - /** - * @internal - * - * @return list - * - * @throws Exception - */ - final protected function getCreateTableWithoutForeignKeysSQL(Table $table): array - { - return $this->buildCreateTableSQL($table, true, false); - } - - /** - * @return list - * - * @throws Exception - */ - private function buildCreateTableSQL(Table $table, bool $createIndexes, bool $createForeignKeys): array - { - if (count($table->getColumns()) === 0) { - throw Exception::noColumnsSpecifiedForTable($table->getName()); - } - - $tableName = $table->getQuotedName($this); - $options = $table->getOptions(); - $options['uniqueConstraints'] = []; - $options['indexes'] = []; - $options['primary'] = []; - - if ($createIndexes) { - foreach ($table->getIndexes() as $index) { - if (! $index->isPrimary()) { - $options['indexes'][$index->getQuotedName($this)] = $index; - - continue; - } - - $options['primary'] = $index->getQuotedColumns($this); - $options['primary_index'] = $index; - } - - foreach ($table->getUniqueConstraints() as $uniqueConstraint) { - $options['uniqueConstraints'][$uniqueConstraint->getQuotedName($this)] = $uniqueConstraint; - } - } - - if ($createForeignKeys) { - $options['foreignKeys'] = []; - - foreach ($table->getForeignKeys() as $fkConstraint) { - $options['foreignKeys'][] = $fkConstraint; - } - } - - $columnSql = []; - $columns = []; - - foreach ($table->getColumns() as $column) { - if ( - $this->_eventManager !== null - && $this->_eventManager->hasListeners(Events::onSchemaCreateTableColumn) - ) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - 'Subscribing to %s events is deprecated.', - Events::onSchemaCreateTableColumn, - ); - - $eventArgs = new SchemaCreateTableColumnEventArgs($column, $table, $this); - - $this->_eventManager->dispatchEvent(Events::onSchemaCreateTableColumn, $eventArgs); - - $columnSql = array_merge($columnSql, $eventArgs->getSql()); - - if ($eventArgs->isDefaultPrevented()) { - continue; - } - } - - $columnData = $this->columnToArray($column); - - if (in_array($column->getName(), $options['primary'], true)) { - $columnData['primary'] = true; - } - - $columns[$columnData['name']] = $columnData; - } - - if ($this->_eventManager !== null && $this->_eventManager->hasListeners(Events::onSchemaCreateTable)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - 'Subscribing to %s events is deprecated.', - Events::onSchemaCreateTable, - ); - - $eventArgs = new SchemaCreateTableEventArgs($table, $columns, $options, $this); - - $this->_eventManager->dispatchEvent(Events::onSchemaCreateTable, $eventArgs); - - if ($eventArgs->isDefaultPrevented()) { - return array_merge($eventArgs->getSql(), $columnSql); - } - } - - $sql = $this->_getCreateTableSQL($tableName, $columns, $options); - - if ($this->supportsCommentOnStatement()) { - if ($table->hasOption('comment')) { - $sql[] = $this->getCommentOnTableSQL($tableName, $table->getOption('comment')); - } - - foreach ($table->getColumns() as $column) { - $comment = $this->getColumnComment($column); - - if ($comment === null || $comment === '') { - continue; - } - - $sql[] = $this->getCommentOnColumnSQL($tableName, $column->getQuotedName($this), $comment); - } - } - - return array_merge($sql, $columnSql); - } - - /** - * @param list $tables - * - * @return list - * - * @throws Exception - */ - public function getCreateTablesSQL(array $tables): array - { - $sql = []; - - foreach ($tables as $table) { - $sql = array_merge($sql, $this->getCreateTableWithoutForeignKeysSQL($table)); - } - - foreach ($tables as $table) { - foreach ($table->getForeignKeys() as $foreignKey) { - $sql[] = $this->getCreateForeignKeySQL( - $foreignKey, - $table->getQuotedName($this), - ); - } - } - - return $sql; - } - - /** - * @param list
    $tables - * - * @return list - */ - public function getDropTablesSQL(array $tables): array - { - $sql = []; - - foreach ($tables as $table) { - foreach ($table->getForeignKeys() as $foreignKey) { - $sql[] = $this->getDropForeignKeySQL( - $foreignKey->getQuotedName($this), - $table->getQuotedName($this), - ); - } - } - - foreach ($tables as $table) { - $sql[] = $this->getDropTableSQL($table->getQuotedName($this)); - } - - return $sql; - } - - protected function getCommentOnTableSQL(string $tableName, ?string $comment): string - { - $tableName = new Identifier($tableName); - - return sprintf( - 'COMMENT ON TABLE %s IS %s', - $tableName->getQuotedName($this), - $this->quoteStringLiteral((string) $comment), - ); - } - - /** - * @param string $tableName - * @param string $columnName - * @param string|null $comment - * - * @return string - */ - public function getCommentOnColumnSQL($tableName, $columnName, $comment) - { - $tableName = new Identifier($tableName); - $columnName = new Identifier($columnName); - - return sprintf( - 'COMMENT ON COLUMN %s.%s IS %s', - $tableName->getQuotedName($this), - $columnName->getQuotedName($this), - $this->quoteStringLiteral((string) $comment), - ); - } - - /** - * Returns the SQL to create inline comment on a column. - * - * @param string $comment - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getInlineColumnCommentSQL($comment) - { - if (! $this->supportsInlineColumnComments()) { - throw Exception::notSupported(__METHOD__); - } - - return 'COMMENT ' . $this->quoteStringLiteral($comment); - } - - /** - * Returns the SQL used to create a table. - * - * @param string $name - * @param mixed[][] $columns - * @param mixed[] $options - * - * @return string[] - */ - protected function _getCreateTableSQL($name, array $columns, array $options = []) - { - $columnListSql = $this->getColumnDeclarationListSQL($columns); - - if (isset($options['uniqueConstraints']) && ! empty($options['uniqueConstraints'])) { - foreach ($options['uniqueConstraints'] as $index => $definition) { - $columnListSql .= ', ' . $this->getUniqueConstraintDeclarationSQL($index, $definition); - } - } - - if (isset($options['primary']) && ! empty($options['primary'])) { - $columnListSql .= ', PRIMARY KEY(' . implode(', ', array_unique(array_values($options['primary']))) . ')'; - } - - if (isset($options['indexes']) && ! empty($options['indexes'])) { - foreach ($options['indexes'] as $index => $definition) { - $columnListSql .= ', ' . $this->getIndexDeclarationSQL($index, $definition); - } - } - - $query = 'CREATE TABLE ' . $name . ' (' . $columnListSql; - $check = $this->getCheckDeclarationSQL($columns); - - if (! empty($check)) { - $query .= ', ' . $check; - } - - $query .= ')'; - - $sql = [$query]; - - if (isset($options['foreignKeys'])) { - foreach ($options['foreignKeys'] as $definition) { - $sql[] = $this->getCreateForeignKeySQL($definition, $name); - } - } - - return $sql; - } - - /** @return string */ - public function getCreateTemporaryTableSnippetSQL() - { - return 'CREATE TEMPORARY TABLE'; - } - - /** - * Generates SQL statements that can be used to apply the diff. - * - * @return list - */ - public function getAlterSchemaSQL(SchemaDiff $diff): array - { - return $diff->toSql($this); - } - - /** - * Returns the SQL to create a sequence on this platform. - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getCreateSequenceSQL(Sequence $sequence) - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Returns the SQL to change a sequence on this platform. - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getAlterSequenceSQL(Sequence $sequence) - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Returns the SQL snippet to drop an existing sequence. - * - * @param Sequence|string $sequence - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDropSequenceSQL($sequence) - { - if (! $this->supportsSequences()) { - throw Exception::notSupported(__METHOD__); - } - - if ($sequence instanceof Sequence) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $sequence as a Sequence object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $sequence = $sequence->getQuotedName($this); - } - - return 'DROP SEQUENCE ' . $sequence; - } - - /** - * Returns the SQL to create a constraint on a table on this platform. - * - * @deprecated Use {@see getCreateIndexSQL()}, {@see getCreateForeignKeySQL()} - * or {@see getCreateUniqueConstraintSQL()} instead. - * - * @param Table|string $table - * - * @return string - * - * @throws InvalidArgumentException - */ - public function getCreateConstraintSQL(Constraint $constraint, $table) - { - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as a Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $table = $table->getQuotedName($this); - } - - $query = 'ALTER TABLE ' . $table . ' ADD CONSTRAINT ' . $constraint->getQuotedName($this); - - $columnList = '(' . implode(', ', $constraint->getQuotedColumns($this)) . ')'; - - $referencesClause = ''; - if ($constraint instanceof Index) { - if ($constraint->isPrimary()) { - $query .= ' PRIMARY KEY'; - } elseif ($constraint->isUnique()) { - $query .= ' UNIQUE'; - } else { - throw new InvalidArgumentException( - 'Can only create primary or unique constraints, no common indexes with getCreateConstraintSQL().', - ); - } - } elseif ($constraint instanceof UniqueConstraint) { - $query .= ' UNIQUE'; - } elseif ($constraint instanceof ForeignKeyConstraint) { - $query .= ' FOREIGN KEY'; - - $referencesClause = ' REFERENCES ' . $constraint->getQuotedForeignTableName($this) . - ' (' . implode(', ', $constraint->getQuotedForeignColumns($this)) . ')'; - } - - $query .= ' ' . $columnList . $referencesClause; - - return $query; - } - - /** - * Returns the SQL to create an index on a table on this platform. - * - * @param Table|string $table The name of the table on which the index is to be created. - * - * @return string - * - * @throws InvalidArgumentException - */ - public function getCreateIndexSQL(Index $index, $table) - { - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as a Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $table = $table->getQuotedName($this); - } - - $name = $index->getQuotedName($this); - $columns = $index->getColumns(); - - if (count($columns) === 0) { - throw new InvalidArgumentException(sprintf( - 'Incomplete or invalid index definition %s on table %s', - $name, - $table, - )); - } - - if ($index->isPrimary()) { - return $this->getCreatePrimaryKeySQL($index, $table); - } - - $query = 'CREATE ' . $this->getCreateIndexSQLFlags($index) . 'INDEX ' . $name . ' ON ' . $table; - $query .= ' (' . $this->getIndexFieldDeclarationListSQL($index) . ')' . $this->getPartialIndexSQL($index); - - return $query; - } - - /** - * Adds condition for partial index. - * - * @return string - */ - protected function getPartialIndexSQL(Index $index) - { - if ($this->supportsPartialIndexes() && $index->hasOption('where')) { - return ' WHERE ' . $index->getOption('where'); - } - - return ''; - } - - /** - * Adds additional flags for index generation. - * - * @return string - */ - protected function getCreateIndexSQLFlags(Index $index) - { - return $index->isUnique() ? 'UNIQUE ' : ''; - } - - /** - * Returns the SQL to create an unnamed primary key constraint. - * - * @param Table|string $table - * - * @return string - */ - public function getCreatePrimaryKeySQL(Index $index, $table) - { - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as a Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $table = $table->getQuotedName($this); - } - - return 'ALTER TABLE ' . $table . ' ADD PRIMARY KEY (' . $this->getIndexFieldDeclarationListSQL($index) . ')'; - } - - /** - * Returns the SQL to create a named schema. - * - * @param string $schemaName - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getCreateSchemaSQL($schemaName) - { - if (! $this->supportsSchemas()) { - throw Exception::notSupported(__METHOD__); - } - - return 'CREATE SCHEMA ' . $schemaName; - } - - /** - * Returns the SQL to create a unique constraint on a table on this platform. - */ - public function getCreateUniqueConstraintSQL(UniqueConstraint $constraint, string $tableName): string - { - return $this->getCreateConstraintSQL($constraint, $tableName); - } - - /** - * Returns the SQL snippet to drop a schema. - * - * @throws Exception If not supported on this platform. - */ - public function getDropSchemaSQL(string $schemaName): string - { - if (! $this->supportsSchemas()) { - throw Exception::notSupported(__METHOD__); - } - - return 'DROP SCHEMA ' . $schemaName; - } - - /** - * Quotes a string so that it can be safely used as a table or column name, - * even if it is a reserved word of the platform. This also detects identifier - * chains separated by dot and quotes them independently. - * - * NOTE: Just because you CAN use quoted identifiers doesn't mean - * you SHOULD use them. In general, they end up causing way more - * problems than they solve. - * - * @param string $str The identifier name to be quoted. - * - * @return string The quoted identifier string. - */ - public function quoteIdentifier($str) - { - if (strpos($str, '.') !== false) { - $parts = array_map([$this, 'quoteSingleIdentifier'], explode('.', $str)); - - return implode('.', $parts); - } - - return $this->quoteSingleIdentifier($str); - } - - /** - * Quotes a single identifier (no dot chain separation). - * - * @param string $str The identifier name to be quoted. - * - * @return string The quoted identifier string. - */ - public function quoteSingleIdentifier($str) - { - $c = $this->getIdentifierQuoteCharacter(); - - return $c . str_replace($c, $c . $c, $str) . $c; - } - - /** - * Returns the SQL to create a new foreign key. - * - * @param ForeignKeyConstraint $foreignKey The foreign key constraint. - * @param Table|string $table The name of the table on which the foreign key is to be created. - * - * @return string - */ - public function getCreateForeignKeySQL(ForeignKeyConstraint $foreignKey, $table) - { - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as a Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $table = $table->getQuotedName($this); - } - - return 'ALTER TABLE ' . $table . ' ADD ' . $this->getForeignKeyDeclarationSQL($foreignKey); - } - - /** - * Gets the SQL statements for altering an existing table. - * - * This method returns an array of SQL statements, since some platforms need several statements. - * - * @return list - * - * @throws Exception If not supported on this platform. - */ - public function getAlterTableSQL(TableDiff $diff) - { - throw Exception::notSupported(__METHOD__); - } - - /** @return list */ - public function getRenameTableSQL(string $oldName, string $newName): array - { - return [ - sprintf('ALTER TABLE %s RENAME TO %s', $oldName, $newName), - ]; - } - - /** - * @param mixed[] $columnSql - * - * @return bool - */ - protected function onSchemaAlterTableAddColumn(Column $column, TableDiff $diff, &$columnSql) - { - if ($this->_eventManager === null) { - return false; - } - - if (! $this->_eventManager->hasListeners(Events::onSchemaAlterTableAddColumn)) { - return false; - } - - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - 'Subscribing to %s events is deprecated.', - Events::onSchemaAlterTableAddColumn, - ); - - $eventArgs = new SchemaAlterTableAddColumnEventArgs($column, $diff, $this); - $this->_eventManager->dispatchEvent(Events::onSchemaAlterTableAddColumn, $eventArgs); - - $columnSql = array_merge($columnSql, $eventArgs->getSql()); - - return $eventArgs->isDefaultPrevented(); - } - - /** - * @param string[] $columnSql - * - * @return bool - */ - protected function onSchemaAlterTableRemoveColumn(Column $column, TableDiff $diff, &$columnSql) - { - if ($this->_eventManager === null) { - return false; - } - - if (! $this->_eventManager->hasListeners(Events::onSchemaAlterTableRemoveColumn)) { - return false; - } - - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - 'Subscribing to %s events is deprecated.', - Events::onSchemaAlterTableRemoveColumn, - ); - - $eventArgs = new SchemaAlterTableRemoveColumnEventArgs($column, $diff, $this); - $this->_eventManager->dispatchEvent(Events::onSchemaAlterTableRemoveColumn, $eventArgs); - - $columnSql = array_merge($columnSql, $eventArgs->getSql()); - - return $eventArgs->isDefaultPrevented(); - } - - /** - * @param string[] $columnSql - * - * @return bool - */ - protected function onSchemaAlterTableChangeColumn(ColumnDiff $columnDiff, TableDiff $diff, &$columnSql) - { - if ($this->_eventManager === null) { - return false; - } - - if (! $this->_eventManager->hasListeners(Events::onSchemaAlterTableChangeColumn)) { - return false; - } - - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - 'Subscribing to %s events is deprecated.', - Events::onSchemaAlterTableChangeColumn, - ); - - $eventArgs = new SchemaAlterTableChangeColumnEventArgs($columnDiff, $diff, $this); - $this->_eventManager->dispatchEvent(Events::onSchemaAlterTableChangeColumn, $eventArgs); - - $columnSql = array_merge($columnSql, $eventArgs->getSql()); - - return $eventArgs->isDefaultPrevented(); - } - - /** - * @param string $oldColumnName - * @param string[] $columnSql - * - * @return bool - */ - protected function onSchemaAlterTableRenameColumn($oldColumnName, Column $column, TableDiff $diff, &$columnSql) - { - if ($this->_eventManager === null) { - return false; - } - - if (! $this->_eventManager->hasListeners(Events::onSchemaAlterTableRenameColumn)) { - return false; - } - - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - 'Subscribing to %s events is deprecated.', - Events::onSchemaAlterTableRenameColumn, - ); - - $eventArgs = new SchemaAlterTableRenameColumnEventArgs($oldColumnName, $column, $diff, $this); - $this->_eventManager->dispatchEvent(Events::onSchemaAlterTableRenameColumn, $eventArgs); - - $columnSql = array_merge($columnSql, $eventArgs->getSql()); - - return $eventArgs->isDefaultPrevented(); - } - - /** - * @param string[] $sql - * - * @return bool - */ - protected function onSchemaAlterTable(TableDiff $diff, &$sql) - { - if ($this->_eventManager === null) { - return false; - } - - if (! $this->_eventManager->hasListeners(Events::onSchemaAlterTable)) { - return false; - } - - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - 'Subscribing to %s events is deprecated.', - Events::onSchemaAlterTable, - ); - - $eventArgs = new SchemaAlterTableEventArgs($diff, $this); - $this->_eventManager->dispatchEvent(Events::onSchemaAlterTable, $eventArgs); - - $sql = array_merge($sql, $eventArgs->getSql()); - - return $eventArgs->isDefaultPrevented(); - } - - /** @return string[] */ - protected function getPreAlterTableIndexForeignKeySQL(TableDiff $diff) - { - $tableNameSQL = ($diff->getOldTable() ?? $diff->getName($this))->getQuotedName($this); - - $sql = []; - if ($this->supportsForeignKeyConstraints()) { - foreach ($diff->getDroppedForeignKeys() as $foreignKey) { - if ($foreignKey instanceof ForeignKeyConstraint) { - $foreignKey = $foreignKey->getQuotedName($this); - } - - $sql[] = $this->getDropForeignKeySQL($foreignKey, $tableNameSQL); - } - - foreach ($diff->getModifiedForeignKeys() as $foreignKey) { - $sql[] = $this->getDropForeignKeySQL($foreignKey->getQuotedName($this), $tableNameSQL); - } - } - - foreach ($diff->getDroppedIndexes() as $index) { - $sql[] = $this->getDropIndexSQL($index->getQuotedName($this), $tableNameSQL); - } - - foreach ($diff->getModifiedIndexes() as $index) { - $sql[] = $this->getDropIndexSQL($index->getQuotedName($this), $tableNameSQL); - } - - return $sql; - } - - /** @return string[] */ - protected function getPostAlterTableIndexForeignKeySQL(TableDiff $diff) - { - $sql = []; - $newName = $diff->getNewName(); - - if ($newName !== false) { - $tableNameSQL = $newName->getQuotedName($this); - } else { - $tableNameSQL = ($diff->getOldTable() ?? $diff->getName($this))->getQuotedName($this); - } - - if ($this->supportsForeignKeyConstraints()) { - foreach ($diff->getAddedForeignKeys() as $foreignKey) { - $sql[] = $this->getCreateForeignKeySQL($foreignKey, $tableNameSQL); - } - - foreach ($diff->getModifiedForeignKeys() as $foreignKey) { - $sql[] = $this->getCreateForeignKeySQL($foreignKey, $tableNameSQL); - } - } - - foreach ($diff->getAddedIndexes() as $index) { - $sql[] = $this->getCreateIndexSQL($index, $tableNameSQL); - } - - foreach ($diff->getModifiedIndexes() as $index) { - $sql[] = $this->getCreateIndexSQL($index, $tableNameSQL); - } - - foreach ($diff->getRenamedIndexes() as $oldIndexName => $index) { - $oldIndexName = new Identifier($oldIndexName); - $sql = array_merge( - $sql, - $this->getRenameIndexSQL($oldIndexName->getQuotedName($this), $index, $tableNameSQL), - ); - } - - return $sql; - } - - /** - * Returns the SQL for renaming an index on a table. - * - * @param string $oldIndexName The name of the index to rename from. - * @param Index $index The definition of the index to rename to. - * @param string $tableName The table to rename the given index on. - * - * @return string[] The sequence of SQL statements for renaming the given index. - */ - protected function getRenameIndexSQL($oldIndexName, Index $index, $tableName) - { - return [ - $this->getDropIndexSQL($oldIndexName, $tableName), - $this->getCreateIndexSQL($index, $tableName), - ]; - } - - /** - * Gets declaration of a number of columns in bulk. - * - * @param mixed[][] $columns A multidimensional associative array. - * The first dimension determines the column name, while the second - * dimension is keyed with the name of the properties - * of the column being declared as array indexes. Currently, the types - * of supported column properties are as follows: - * - * length - * Integer value that determines the maximum length of the text - * column. If this argument is missing the column should be - * declared to have the longest length allowed by the DBMS. - * - * default - * Text value to be used as default for this column. - * - * notnull - * Boolean flag that indicates whether this column is constrained - * to not be set to null. - * charset - * Text value with the default CHARACTER SET for this column. - * collation - * Text value with the default COLLATION for this column. - * unique - * unique constraint - * - * @return string - */ - public function getColumnDeclarationListSQL(array $columns) - { - $declarations = []; - - foreach ($columns as $name => $column) { - $declarations[] = $this->getColumnDeclarationSQL($name, $column); - } - - return implode(', ', $declarations); - } - - /** - * Obtains DBMS specific SQL code portion needed to declare a generic type - * column to be used in statements like CREATE TABLE. - * - * @param string $name The name the column to be declared. - * @param mixed[] $column An associative array with the name of the properties - * of the column being declared as array indexes. Currently, the types - * of supported column properties are as follows: - * - * length - * Integer value that determines the maximum length of the text - * column. If this argument is missing the column should be - * declared to have the longest length allowed by the DBMS. - * - * default - * Text value to be used as default for this column. - * - * notnull - * Boolean flag that indicates whether this column is constrained - * to not be set to null. - * charset - * Text value with the default CHARACTER SET for this column. - * collation - * Text value with the default COLLATION for this column. - * unique - * unique constraint - * check - * column check constraint - * columnDefinition - * a string that defines the complete column - * - * @return string DBMS specific SQL code portion that should be used to declare the column. - * - * @throws Exception - */ - public function getColumnDeclarationSQL($name, array $column) - { - if (isset($column['columnDefinition'])) { - $declaration = $this->getCustomTypeDeclarationSQL($column); - } else { - $default = $this->getDefaultValueDeclarationSQL($column); - - $charset = ! empty($column['charset']) ? - ' ' . $this->getColumnCharsetDeclarationSQL($column['charset']) : ''; - - $collation = ! empty($column['collation']) ? - ' ' . $this->getColumnCollationDeclarationSQL($column['collation']) : ''; - - $notnull = ! empty($column['notnull']) ? ' NOT NULL' : ''; - - if (! empty($column['unique'])) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5656', - 'The usage of the "unique" column property is deprecated. Use unique constraints instead.', - ); - - $unique = ' ' . $this->getUniqueFieldDeclarationSQL(); - } else { - $unique = ''; - } - - if (! empty($column['check'])) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5656', - 'The usage of the "check" column property is deprecated.', - ); - - $check = ' ' . $column['check']; - } else { - $check = ''; - } - - $typeDecl = $column['type']->getSQLDeclaration($column, $this); - $declaration = $typeDecl . $charset . $default . $notnull . $unique . $check . $collation; - - if ($this->supportsInlineColumnComments() && isset($column['comment']) && $column['comment'] !== '') { - $declaration .= ' ' . $this->getInlineColumnCommentSQL($column['comment']); - } - } - - return $name . ' ' . $declaration; - } - - /** - * Returns the SQL snippet that declares a floating point column of arbitrary precision. - * - * @param mixed[] $column - * - * @return string - */ - public function getDecimalTypeDeclarationSQL(array $column) - { - if (empty($column['precision'])) { - if (! isset($column['precision'])) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5637', - 'Relying on the default decimal column precision is deprecated' - . ', specify the precision explicitly.', - ); - } - - $precision = 10; - } else { - $precision = $column['precision']; - } - - if (empty($column['scale'])) { - if (! isset($column['scale'])) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5637', - 'Relying on the default decimal column scale is deprecated' - . ', specify the scale explicitly.', - ); - } - - $scale = 0; - } else { - $scale = $column['scale']; - } - - return 'NUMERIC(' . $precision . ', ' . $scale . ')'; - } - - /** - * Obtains DBMS specific SQL code portion needed to set a default value - * declaration to be used in statements like CREATE TABLE. - * - * @param mixed[] $column The column definition array. - * - * @return string DBMS specific SQL code portion needed to set a default value. - */ - public function getDefaultValueDeclarationSQL($column) - { - if (! isset($column['default'])) { - return empty($column['notnull']) ? ' DEFAULT NULL' : ''; - } - - $default = $column['default']; - - if (! isset($column['type'])) { - return " DEFAULT '" . $default . "'"; - } - - $type = $column['type']; - - if ($type instanceof Types\PhpIntegerMappingType) { - return ' DEFAULT ' . $default; - } - - if ($type instanceof Types\PhpDateTimeMappingType && $default === $this->getCurrentTimestampSQL()) { - return ' DEFAULT ' . $this->getCurrentTimestampSQL(); - } - - if ($type instanceof Types\TimeType && $default === $this->getCurrentTimeSQL()) { - return ' DEFAULT ' . $this->getCurrentTimeSQL(); - } - - if ($type instanceof Types\DateType && $default === $this->getCurrentDateSQL()) { - return ' DEFAULT ' . $this->getCurrentDateSQL(); - } - - if ($type instanceof Types\BooleanType) { - return ' DEFAULT ' . $this->convertBooleans($default); - } - - return ' DEFAULT ' . $this->quoteStringLiteral($default); - } - - /** - * Obtains DBMS specific SQL code portion needed to set a CHECK constraint - * declaration to be used in statements like CREATE TABLE. - * - * @param string[]|mixed[][] $definition The check definition. - * - * @return string DBMS specific SQL code portion needed to set a CHECK constraint. - */ - public function getCheckDeclarationSQL(array $definition) - { - $constraints = []; - foreach ($definition as $column => $def) { - if (is_string($def)) { - $constraints[] = 'CHECK (' . $def . ')'; - } else { - if (isset($def['min'])) { - $constraints[] = 'CHECK (' . $column . ' >= ' . $def['min'] . ')'; - } - - if (isset($def['max'])) { - $constraints[] = 'CHECK (' . $column . ' <= ' . $def['max'] . ')'; - } - } - } - - return implode(', ', $constraints); - } - - /** - * Obtains DBMS specific SQL code portion needed to set a unique - * constraint declaration to be used in statements like CREATE TABLE. - * - * @param string $name The name of the unique constraint. - * @param UniqueConstraint $constraint The unique constraint definition. - * - * @return string DBMS specific SQL code portion needed to set a constraint. - * - * @throws InvalidArgumentException - */ - public function getUniqueConstraintDeclarationSQL($name, UniqueConstraint $constraint) - { - $columns = $constraint->getQuotedColumns($this); - $name = new Identifier($name); - - if (count($columns) === 0) { - throw new InvalidArgumentException("Incomplete definition. 'columns' required."); - } - - $constraintFlags = array_merge(['UNIQUE'], array_map('strtoupper', $constraint->getFlags())); - $constraintName = $name->getQuotedName($this); - $columnListNames = $this->getColumnsFieldDeclarationListSQL($columns); - - return sprintf('CONSTRAINT %s %s (%s)', $constraintName, implode(' ', $constraintFlags), $columnListNames); - } - - /** - * Obtains DBMS specific SQL code portion needed to set an index - * declaration to be used in statements like CREATE TABLE. - * - * @param string $name The name of the index. - * @param Index $index The index definition. - * - * @return string DBMS specific SQL code portion needed to set an index. - * - * @throws InvalidArgumentException - */ - public function getIndexDeclarationSQL($name, Index $index) - { - $columns = $index->getColumns(); - $name = new Identifier($name); - - if (count($columns) === 0) { - throw new InvalidArgumentException("Incomplete definition. 'columns' required."); - } - - return $this->getCreateIndexSQLFlags($index) . 'INDEX ' . $name->getQuotedName($this) - . ' (' . $this->getIndexFieldDeclarationListSQL($index) . ')' . $this->getPartialIndexSQL($index); - } - - /** - * Obtains SQL code portion needed to create a custom column, - * e.g. when a column has the "columnDefinition" keyword. - * Only "AUTOINCREMENT" and "PRIMARY KEY" are added if appropriate. - * - * @deprecated - * - * @param mixed[] $column - * - * @return string - */ - public function getCustomTypeDeclarationSQL(array $column) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5527', - '%s is deprecated.', - __METHOD__, - ); - - return $column['columnDefinition']; - } - - /** - * Obtains DBMS specific SQL code portion needed to set an index - * declaration to be used in statements like CREATE TABLE. - * - * @deprecated - */ - public function getIndexFieldDeclarationListSQL(Index $index): string - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5527', - '%s is deprecated.', - __METHOD__, - ); - - return implode(', ', $index->getQuotedColumns($this)); - } - - /** - * Obtains DBMS specific SQL code portion needed to set an index - * declaration to be used in statements like CREATE TABLE. - * - * @deprecated - * - * @param mixed[] $columns - */ - public function getColumnsFieldDeclarationListSQL(array $columns): string - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5527', - '%s is deprecated.', - __METHOD__, - ); - - $ret = []; - - foreach ($columns as $column => $definition) { - if (is_array($definition)) { - $ret[] = $column; - } else { - $ret[] = $definition; - } - } - - return implode(', ', $ret); - } - - /** - * Returns the required SQL string that fits between CREATE ... TABLE - * to create the table as a temporary table. - * - * Should be overridden in driver classes to return the correct string for the - * specific database type. - * - * The default is to return the string "TEMPORARY" - this will result in a - * SQL error for any database that does not support temporary tables, or that - * requires a different SQL command from "CREATE TEMPORARY TABLE". - * - * @deprecated - * - * @return string The string required to be placed between "CREATE" and "TABLE" - * to generate a temporary table, if possible. - */ - public function getTemporaryTableSQL() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getTemporaryTableSQL() is deprecated.', - ); - - return 'TEMPORARY'; - } - - /** - * Some vendors require temporary table names to be qualified specially. - * - * @param string $tableName - * - * @return string - */ - public function getTemporaryTableName($tableName) - { - return $tableName; - } - - /** - * Obtain DBMS specific SQL code portion needed to set the FOREIGN KEY constraint - * of a column declaration to be used in statements like CREATE TABLE. - * - * @return string DBMS specific SQL code portion needed to set the FOREIGN KEY constraint - * of a column declaration. - */ - public function getForeignKeyDeclarationSQL(ForeignKeyConstraint $foreignKey) - { - $sql = $this->getForeignKeyBaseDeclarationSQL($foreignKey); - $sql .= $this->getAdvancedForeignKeyOptionsSQL($foreignKey); - - return $sql; - } - - /** - * Returns the FOREIGN KEY query section dealing with non-standard options - * as MATCH, INITIALLY DEFERRED, ON UPDATE, ... - * - * @param ForeignKeyConstraint $foreignKey The foreign key definition. - * - * @return string - */ - public function getAdvancedForeignKeyOptionsSQL(ForeignKeyConstraint $foreignKey) - { - $query = ''; - if ($foreignKey->hasOption('onUpdate')) { - $query .= ' ON UPDATE ' . $this->getForeignKeyReferentialActionSQL($foreignKey->getOption('onUpdate')); - } - - if ($foreignKey->hasOption('onDelete')) { - $query .= ' ON DELETE ' . $this->getForeignKeyReferentialActionSQL($foreignKey->getOption('onDelete')); - } - - return $query; - } - - /** - * Returns the given referential action in uppercase if valid, otherwise throws an exception. - * - * @param string $action The foreign key referential action. - * - * @return string - * - * @throws InvalidArgumentException If unknown referential action given. - */ - public function getForeignKeyReferentialActionSQL($action) - { - $upper = strtoupper($action); - switch ($upper) { - case 'CASCADE': - case 'SET NULL': - case 'NO ACTION': - case 'RESTRICT': - case 'SET DEFAULT': - return $upper; - - default: - throw new InvalidArgumentException('Invalid foreign key action: ' . $upper); - } - } - - /** - * Obtains DBMS specific SQL code portion needed to set the FOREIGN KEY constraint - * of a column declaration to be used in statements like CREATE TABLE. - * - * @return string - * - * @throws InvalidArgumentException - */ - public function getForeignKeyBaseDeclarationSQL(ForeignKeyConstraint $foreignKey) - { - $sql = ''; - if (strlen($foreignKey->getName()) > 0) { - $sql .= 'CONSTRAINT ' . $foreignKey->getQuotedName($this) . ' '; - } - - $sql .= 'FOREIGN KEY ('; - - if (count($foreignKey->getLocalColumns()) === 0) { - throw new InvalidArgumentException("Incomplete definition. 'local' required."); - } - - if (count($foreignKey->getForeignColumns()) === 0) { - throw new InvalidArgumentException("Incomplete definition. 'foreign' required."); - } - - if (strlen($foreignKey->getForeignTableName()) === 0) { - throw new InvalidArgumentException("Incomplete definition. 'foreignTable' required."); - } - - return $sql . implode(', ', $foreignKey->getQuotedLocalColumns($this)) - . ') REFERENCES ' - . $foreignKey->getQuotedForeignTableName($this) . ' (' - . implode(', ', $foreignKey->getQuotedForeignColumns($this)) . ')'; - } - - /** - * Obtains DBMS specific SQL code portion needed to set the UNIQUE constraint - * of a column declaration to be used in statements like CREATE TABLE. - * - * @deprecated Use UNIQUE in SQL instead. - * - * @return string DBMS specific SQL code portion needed to set the UNIQUE constraint - * of a column declaration. - */ - public function getUniqueFieldDeclarationSQL() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getUniqueFieldDeclarationSQL() is deprecated. Use UNIQUE in SQL instead.', - ); - - return 'UNIQUE'; - } - - /** - * Obtains DBMS specific SQL code portion needed to set the CHARACTER SET - * of a column declaration to be used in statements like CREATE TABLE. - * - * @param string $charset The name of the charset. - * - * @return string DBMS specific SQL code portion needed to set the CHARACTER SET - * of a column declaration. - */ - public function getColumnCharsetDeclarationSQL($charset) - { - return ''; - } - - /** - * Obtains DBMS specific SQL code portion needed to set the COLLATION - * of a column declaration to be used in statements like CREATE TABLE. - * - * @param string $collation The name of the collation. - * - * @return string DBMS specific SQL code portion needed to set the COLLATION - * of a column declaration. - */ - public function getColumnCollationDeclarationSQL($collation) - { - return $this->supportsColumnCollation() ? 'COLLATE ' . $this->quoteSingleIdentifier($collation) : ''; - } - - /** - * Whether the platform prefers identity columns (eg. autoincrement) for ID generation. - * Subclasses should override this method to return TRUE if they prefer identity columns. - * - * @deprecated - * - * @return bool - */ - public function prefersIdentityColumns() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/1519', - 'AbstractPlatform::prefersIdentityColumns() is deprecated.', - ); - - return false; - } - - /** - * Some platforms need the boolean values to be converted. - * - * The default conversion in this implementation converts to integers (false => 0, true => 1). - * - * Note: if the input is not a boolean the original input might be returned. - * - * There are two contexts when converting booleans: Literals and Prepared Statements. - * This method should handle the literal case - * - * @param mixed $item A boolean or an array of them. - * - * @return mixed A boolean database value or an array of them. - */ - public function convertBooleans($item) - { - if (is_array($item)) { - foreach ($item as $k => $value) { - if (! is_bool($value)) { - continue; - } - - $item[$k] = (int) $value; - } - } elseif (is_bool($item)) { - $item = (int) $item; - } - - return $item; - } - - /** - * Some platforms have boolean literals that needs to be correctly converted - * - * The default conversion tries to convert value into bool "(bool)$item" - * - * @param T $item - * - * @return (T is null ? null : bool) - * - * @template T - */ - public function convertFromBoolean($item) - { - return $item === null ? null : (bool) $item; - } - - /** - * This method should handle the prepared statements case. When there is no - * distinction, it's OK to use the same method. - * - * Note: if the input is not a boolean the original input might be returned. - * - * @param mixed $item A boolean or an array of them. - * - * @return mixed A boolean database value or an array of them. - */ - public function convertBooleansToDatabaseValue($item) - { - return $this->convertBooleans($item); - } - - /** - * Returns the SQL specific for the platform to get the current date. - * - * @return string - */ - public function getCurrentDateSQL() - { - return 'CURRENT_DATE'; - } - - /** - * Returns the SQL specific for the platform to get the current time. - * - * @return string - */ - public function getCurrentTimeSQL() - { - return 'CURRENT_TIME'; - } - - /** - * Returns the SQL specific for the platform to get the current timestamp - * - * @return string - */ - public function getCurrentTimestampSQL() - { - return 'CURRENT_TIMESTAMP'; - } - - /** - * Returns the SQL for a given transaction isolation level Connection constant. - * - * @param int $level - * - * @return string - * - * @throws InvalidArgumentException - */ - protected function _getTransactionIsolationLevelSQL($level) - { - switch ($level) { - case TransactionIsolationLevel::READ_UNCOMMITTED: - return 'READ UNCOMMITTED'; - - case TransactionIsolationLevel::READ_COMMITTED: - return 'READ COMMITTED'; - - case TransactionIsolationLevel::REPEATABLE_READ: - return 'REPEATABLE READ'; - - case TransactionIsolationLevel::SERIALIZABLE: - return 'SERIALIZABLE'; - - default: - throw new InvalidArgumentException('Invalid isolation level:' . $level); - } - } - - /** - * @internal The method should be only used from within the {@see AbstractSchemaManager} class hierarchy. - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getListDatabasesSQL() - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Returns the SQL statement for retrieving the namespaces defined in the database. - * - * @deprecated Use {@see AbstractSchemaManager::listSchemaNames()} instead. - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getListNamespacesSQL() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4503', - 'AbstractPlatform::getListNamespacesSQL() is deprecated,' - . ' use AbstractSchemaManager::listSchemaNames() instead.', - ); - - throw Exception::notSupported(__METHOD__); - } - - /** - * @internal The method should be only used from within the {@see AbstractSchemaManager} class hierarchy. - * - * @param string $database - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getListSequencesSQL($database) - { - throw Exception::notSupported(__METHOD__); - } - - /** - * @deprecated - * - * @param string $table - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getListTableConstraintsSQL($table) - { - throw Exception::notSupported(__METHOD__); - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * @param string $table - * @param string $database - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getListTableColumnsSQL($table, $database = null) - { - throw Exception::notSupported(__METHOD__); - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getListTablesSQL() - { - throw Exception::notSupported(__METHOD__); - } - - /** - * @deprecated - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getListUsersSQL() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getListUsersSQL() is deprecated.', - ); - - throw Exception::notSupported(__METHOD__); - } - - /** - * Returns the SQL to list all views of a database or user. - * - * @internal The method should be only used from within the {@see AbstractSchemaManager} class hierarchy. - * - * @param string $database - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getListViewsSQL($database) - { - throw Exception::notSupported(__METHOD__); - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * Returns the list of indexes for the current database. - * - * The current database parameter is optional but will always be passed - * when using the SchemaManager API and is the database the given table is in. - * - * Attention: Some platforms only support currentDatabase when they - * are connected with that database. Cross-database information schema - * requests may be impossible. - * - * @param string $table - * @param string $database - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getListTableIndexesSQL($table, $database = null) - { - throw Exception::notSupported(__METHOD__); - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * @param string $table - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getListTableForeignKeysSQL($table) - { - throw Exception::notSupported(__METHOD__); - } - - /** - * @param string $name - * @param string $sql - * - * @return string - */ - public function getCreateViewSQL($name, $sql) - { - return 'CREATE VIEW ' . $name . ' AS ' . $sql; - } - - /** - * @param string $name - * - * @return string - */ - public function getDropViewSQL($name) - { - return 'DROP VIEW ' . $name; - } - - /** - * @param string $sequence - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getSequenceNextValSQL($sequence) - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Returns the SQL to create a new database. - * - * @param string $name The name of the database that should be created. - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getCreateDatabaseSQL($name) - { - if (! $this->supportsCreateDropDatabase()) { - throw Exception::notSupported(__METHOD__); - } - - return 'CREATE DATABASE ' . $name; - } - - /** - * Returns the SQL snippet to drop an existing database. - * - * @param string $name The name of the database that should be dropped. - * - * @return string - */ - public function getDropDatabaseSQL($name) - { - if (! $this->supportsCreateDropDatabase()) { - throw Exception::notSupported(__METHOD__); - } - - return 'DROP DATABASE ' . $name; - } - - /** - * Returns the SQL to set the transaction isolation level. - * - * @param int $level - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getSetTransactionIsolationSQL($level) - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Obtains DBMS specific SQL to be used to create datetime columns in - * statements like CREATE TABLE. - * - * @param mixed[] $column - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateTimeTypeDeclarationSQL(array $column) - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Obtains DBMS specific SQL to be used to create datetime with timezone offset columns. - * - * @param mixed[] $column - * - * @return string - */ - public function getDateTimeTzTypeDeclarationSQL(array $column) - { - return $this->getDateTimeTypeDeclarationSQL($column); - } - - /** - * Obtains DBMS specific SQL to be used to create date columns in statements - * like CREATE TABLE. - * - * @param mixed[] $column - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateTypeDeclarationSQL(array $column) - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Obtains DBMS specific SQL to be used to create time columns in statements - * like CREATE TABLE. - * - * @param mixed[] $column - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getTimeTypeDeclarationSQL(array $column) - { - throw Exception::notSupported(__METHOD__); - } - - /** - * @param mixed[] $column - * - * @return string - */ - public function getFloatDeclarationSQL(array $column) - { - return 'DOUBLE PRECISION'; - } - - /** - * Gets the default transaction isolation level of the platform. - * - * @see TransactionIsolationLevel - * - * @return TransactionIsolationLevel::* The default isolation level. - */ - public function getDefaultTransactionIsolationLevel() - { - return TransactionIsolationLevel::READ_COMMITTED; - } - - /* supports*() methods */ - - /** - * Whether the platform supports sequences. - * - * @return bool - */ - public function supportsSequences() - { - return false; - } - - /** - * Whether the platform supports identity columns. - * - * Identity columns are columns that receive an auto-generated value from the - * database on insert of a row. - * - * @return bool - */ - public function supportsIdentityColumns() - { - return false; - } - - /** - * Whether the platform emulates identity columns through sequences. - * - * Some platforms that do not support identity columns natively - * but support sequences can emulate identity columns by using - * sequences. - * - * @deprecated - * - * @return bool - */ - public function usesSequenceEmulatedIdentityColumns() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5513', - '%s is deprecated.', - __METHOD__, - ); - - return false; - } - - /** - * Returns the name of the sequence for a particular identity column in a particular table. - * - * @deprecated - * - * @see usesSequenceEmulatedIdentityColumns - * - * @param string $tableName The name of the table to return the sequence name for. - * @param string $columnName The name of the identity column in the table to return the sequence name for. - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getIdentitySequenceName($tableName, $columnName) - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Whether the platform supports indexes. - * - * @deprecated - * - * @return bool - */ - public function supportsIndexes() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::supportsIndexes() is deprecated.', - ); - - return true; - } - - /** - * Whether the platform supports partial indexes. - * - * @return bool - */ - public function supportsPartialIndexes() - { - return false; - } - - /** - * Whether the platform supports indexes with column length definitions. - */ - public function supportsColumnLengthIndexes(): bool - { - return false; - } - - /** - * Whether the platform supports altering tables. - * - * @deprecated All platforms must implement altering tables. - * - * @return bool - */ - public function supportsAlterTable() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::supportsAlterTable() is deprecated. All platforms must implement altering tables.', - ); - - return true; - } - - /** - * Whether the platform supports transactions. - * - * @deprecated - * - * @return bool - */ - public function supportsTransactions() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::supportsTransactions() is deprecated.', - ); - - return true; - } - - /** - * Whether the platform supports savepoints. - * - * @return bool - */ - public function supportsSavepoints() - { - return true; - } - - /** - * Whether the platform supports releasing savepoints. - * - * @return bool - */ - public function supportsReleaseSavepoints() - { - return $this->supportsSavepoints(); - } - - /** - * Whether the platform supports primary key constraints. - * - * @deprecated - * - * @return bool - */ - public function supportsPrimaryConstraints() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::supportsPrimaryConstraints() is deprecated.', - ); - - return true; - } - - /** - * Whether the platform supports foreign key constraints. - * - * @deprecated All platforms should support foreign key constraints. - * - * @return bool - */ - public function supportsForeignKeyConstraints() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5409', - 'AbstractPlatform::supportsForeignKeyConstraints() is deprecated.', - ); - - return true; - } - - /** - * Whether the platform supports database schemas. - * - * @return bool - */ - public function supportsSchemas() - { - return false; - } - - /** - * Whether this platform can emulate schemas. - * - * @deprecated - * - * Platforms that either support or emulate schemas don't automatically - * filter a schema for the namespaced elements in {@see AbstractManager::introspectSchema()}. - * - * @return bool - */ - public function canEmulateSchemas() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4805', - 'AbstractPlatform::canEmulateSchemas() is deprecated.', - ); - - return false; - } - - /** - * Returns the default schema name. - * - * @deprecated - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDefaultSchemaName() - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Whether this platform supports create database. - * - * Some databases don't allow to create and drop databases at all or only with certain tools. - * - * @deprecated - * - * @return bool - */ - public function supportsCreateDropDatabase() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5513', - '%s is deprecated.', - __METHOD__, - ); - - return true; - } - - /** - * Whether the platform supports getting the affected rows of a recent update/delete type query. - * - * @deprecated - * - * @return bool - */ - public function supportsGettingAffectedRows() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::supportsGettingAffectedRows() is deprecated.', - ); - - return true; - } - - /** - * Whether this platform support to add inline column comments as postfix. - * - * @return bool - */ - public function supportsInlineColumnComments() - { - return false; - } - - /** - * Whether this platform support the proprietary syntax "COMMENT ON asset". - * - * @return bool - */ - public function supportsCommentOnStatement() - { - return false; - } - - /** - * Does this platform have native guid type. - * - * @deprecated - * - * @return bool - */ - public function hasNativeGuidType() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5509', - '%s is deprecated.', - __METHOD__, - ); - - return false; - } - - /** - * Does this platform have native JSON type. - * - * @deprecated - * - * @return bool - */ - public function hasNativeJsonType() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5509', - '%s is deprecated.', - __METHOD__, - ); - - return false; - } - - /** - * Whether this platform supports views. - * - * @deprecated All platforms must implement support for views. - * - * @return bool - */ - public function supportsViews() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::supportsViews() is deprecated. All platforms must implement support for views.', - ); - - return true; - } - - /** - * Does this platform support column collation? - * - * @return bool - */ - public function supportsColumnCollation() - { - return false; - } - - /** - * Gets the format string, as accepted by the date() function, that describes - * the format of a stored datetime value of this platform. - * - * @return string The format string. - */ - public function getDateTimeFormatString() - { - return 'Y-m-d H:i:s'; - } - - /** - * Gets the format string, as accepted by the date() function, that describes - * the format of a stored datetime with timezone value of this platform. - * - * @return string The format string. - */ - public function getDateTimeTzFormatString() - { - return 'Y-m-d H:i:s'; - } - - /** - * Gets the format string, as accepted by the date() function, that describes - * the format of a stored date value of this platform. - * - * @return string The format string. - */ - public function getDateFormatString() - { - return 'Y-m-d'; - } - - /** - * Gets the format string, as accepted by the date() function, that describes - * the format of a stored time value of this platform. - * - * @return string The format string. - */ - public function getTimeFormatString() - { - return 'H:i:s'; - } - - /** - * Adds an driver-specific LIMIT clause to the query. - * - * @param string $query - * @param int|null $limit - * @param int $offset - * - * @throws Exception - */ - final public function modifyLimitQuery($query, $limit, $offset = 0): string - { - if ($offset < 0) { - throw new Exception(sprintf( - 'Offset must be a positive integer or zero, %d given', - $offset, - )); - } - - if ($offset > 0 && ! $this->supportsLimitOffset()) { - throw new Exception(sprintf( - 'Platform %s does not support offset values in limit queries.', - $this->getName(), - )); - } - - if ($limit !== null) { - $limit = (int) $limit; - } - - return $this->doModifyLimitQuery($query, $limit, (int) $offset); - } - - /** - * Adds an platform-specific LIMIT clause to the query. - * - * @param string $query - * @param int|null $limit - * @param int $offset - * - * @return string - */ - protected function doModifyLimitQuery($query, $limit, $offset) - { - if ($limit !== null) { - $query .= sprintf(' LIMIT %d', $limit); - } - - if ($offset > 0) { - $query .= sprintf(' OFFSET %d', $offset); - } - - return $query; - } - - /** - * Whether the database platform support offsets in modify limit clauses. - * - * @deprecated All platforms must implement support for offsets in modify limit clauses. - * - * @return bool - */ - public function supportsLimitOffset() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::supportsViews() is deprecated.' - . ' All platforms must implement support for offsets in modify limit clauses.', - ); - - return true; - } - - /** - * Maximum length of any given database identifier, like tables or column names. - * - * @return int - */ - public function getMaxIdentifierLength() - { - return 63; - } - - /** - * Returns the insert SQL for an empty insert statement. - * - * @param string $quotedTableName - * @param string $quotedIdentifierColumnName - * - * @return string - */ - public function getEmptyIdentityInsertSQL($quotedTableName, $quotedIdentifierColumnName) - { - return 'INSERT INTO ' . $quotedTableName . ' (' . $quotedIdentifierColumnName . ') VALUES (null)'; - } - - /** - * Generates a Truncate Table SQL statement for a given table. - * - * Cascade is not supported on many platforms but would optionally cascade the truncate by - * following the foreign keys. - * - * @param string $tableName - * @param bool $cascade - * - * @return string - */ - public function getTruncateTableSQL($tableName, $cascade = false) - { - $tableIdentifier = new Identifier($tableName); - - return 'TRUNCATE ' . $tableIdentifier->getQuotedName($this); - } - - /** - * This is for test reasons, many vendors have special requirements for dummy statements. - * - * @return string - */ - public function getDummySelectSQL() - { - $expression = func_num_args() > 0 ? func_get_arg(0) : '1'; - - return sprintf('SELECT %s', $expression); - } - - /** - * Returns the SQL to create a new savepoint. - * - * @param string $savepoint - * - * @return string - */ - public function createSavePoint($savepoint) - { - return 'SAVEPOINT ' . $savepoint; - } - - /** - * Returns the SQL to release a savepoint. - * - * @param string $savepoint - * - * @return string - */ - public function releaseSavePoint($savepoint) - { - return 'RELEASE SAVEPOINT ' . $savepoint; - } - - /** - * Returns the SQL to rollback a savepoint. - * - * @param string $savepoint - * - * @return string - */ - public function rollbackSavePoint($savepoint) - { - return 'ROLLBACK TO SAVEPOINT ' . $savepoint; - } - - /** - * Returns the keyword list instance of this platform. - * - * @throws Exception If no keyword list is specified. - */ - final public function getReservedKeywordsList(): KeywordList - { - // Store the instance so it doesn't need to be generated on every request. - return $this->_keywords ??= $this->createReservedKeywordsList(); - } - - /** - * Creates an instance of the reserved keyword list of this platform. - * - * This method will become @abstract in DBAL 4.0.0. - * - * @throws Exception - */ - protected function createReservedKeywordsList(): KeywordList - { - $class = $this->getReservedKeywordsClass(); - $keywords = new $class(); - if (! $keywords instanceof KeywordList) { - throw Exception::notSupported(__METHOD__); - } - - return $keywords; - } - - /** - * Returns the class name of the reserved keywords list. - * - * @deprecated Implement {@see createReservedKeywordsList()} instead. - * - * @return string - * @psalm-return class-string - * - * @throws Exception If not supported on this platform. - */ - protected function getReservedKeywordsClass() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4510', - 'AbstractPlatform::getReservedKeywordsClass() is deprecated,' - . ' use AbstractPlatform::createReservedKeywordsList() instead.', - ); - - throw Exception::notSupported(__METHOD__); - } - - /** - * Quotes a literal string. - * This method is NOT meant to fix SQL injections! - * It is only meant to escape this platform's string literal - * quote character inside the given literal string. - * - * @param string $str The literal string to be quoted. - * - * @return string The quoted literal string. - */ - public function quoteStringLiteral($str) - { - $c = $this->getStringLiteralQuoteCharacter(); - - return $c . str_replace($c, $c . $c, $str) . $c; - } - - /** - * Gets the character used for string literal quoting. - * - * @deprecated Use {@see quoteStringLiteral()} to quote string literals instead. - * - * @return string - */ - public function getStringLiteralQuoteCharacter() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5388', - 'AbstractPlatform::getStringLiteralQuoteCharacter() is deprecated.' - . ' Use quoteStringLiteral() instead.', - ); - - return "'"; - } - - /** - * Escapes metacharacters in a string intended to be used with a LIKE - * operator. - * - * @param string $inputString a literal, unquoted string - * @param string $escapeChar should be reused by the caller in the LIKE - * expression. - */ - final public function escapeStringForLike(string $inputString, string $escapeChar): string - { - return preg_replace( - '~([' . preg_quote($this->getLikeWildcardCharacters() . $escapeChar, '~') . '])~u', - addcslashes($escapeChar, '\\') . '$1', - $inputString, - ); - } - - /** - * @return array An associative array with the name of the properties - * of the column being declared as array indexes. - */ - private function columnToArray(Column $column): array - { - $name = $column->getQuotedName($this); - - return array_merge($column->toArray(), [ - 'name' => $name, - 'version' => $column->hasPlatformOption('version') ? $column->getPlatformOption('version') : false, - 'comment' => $this->getColumnComment($column), - ]); - } - - /** @internal */ - public function createSQLParser(): Parser - { - return new Parser(false); - } - - protected function getLikeWildcardCharacters(): string - { - return '%_'; - } - - /** - * Compares the definitions of the given columns in the context of this platform. - * - * @throws Exception - */ - public function columnsEqual(Column $column1, Column $column2): bool - { - $column1Array = $this->columnToArray($column1); - $column2Array = $this->columnToArray($column2); - - // ignore explicit columnDefinition since it's not set on the Column generated by the SchemaManager - unset($column1Array['columnDefinition']); - unset($column2Array['columnDefinition']); - - if ( - $this->getColumnDeclarationSQL('', $column1Array) - !== $this->getColumnDeclarationSQL('', $column2Array) - ) { - return false; - } - - if (! $this->columnDeclarationsMatch($column1, $column2)) { - return false; - } - - // If the platform supports inline comments, all comparison is already done above - if ($this->supportsInlineColumnComments()) { - return true; - } - - if ($column1->getComment() !== $column2->getComment()) { - return false; - } - - // If disableTypeComments is true, we do not need to check types, all comparison is already done above - if ($this->disableTypeComments) { - return true; - } - - return $column1->getType() === $column2->getType(); - } - - /** - * Whether the database data type matches that expected for the doctrine type for the given colunms. - */ - private function columnDeclarationsMatch(Column $column1, Column $column2): bool - { - return ! ( - $column1->hasPlatformOption('declarationMismatch') || - $column2->hasPlatformOption('declarationMismatch') - ); - } - - /** - * Creates the schema manager that can be used to inspect and change the underlying - * database schema according to the dialect of the platform. - * - * @throws Exception - * - * @abstract - */ - public function createSchemaManager(Connection $connection): AbstractSchemaManager - { - throw Exception::notSupported(__METHOD__); - } -} diff --git a/docker/streamline-src/vendor/doctrine/dbal/src/Platforms/MariaDb1027Platform.php b/docker/streamline-src/vendor/doctrine/dbal/src/Platforms/MariaDb1027Platform.php deleted file mode 100644 index 8e555c83..00000000 --- a/docker/streamline-src/vendor/doctrine/dbal/src/Platforms/MariaDb1027Platform.php +++ /dev/null @@ -1,13 +0,0 @@ -getColumnTypeSQLSnippets('c', $database); - - return sprintf( - <<getDatabaseNameSQL($database), - $this->quoteStringLiteral($table), - ); - } - - /** - * Generate SQL snippets to reverse the aliasing of JSON to LONGTEXT. - * - * MariaDb aliases columns specified as JSON to LONGTEXT and sets a CHECK constraint to ensure the column - * is valid json. This function generates the SQL snippets which reverse this aliasing i.e. report a column - * as JSON where it was originally specified as such instead of LONGTEXT. - * - * The CHECK constraints are stored in information_schema.CHECK_CONSTRAINTS so query that table. - */ - public function getColumnTypeSQLSnippet(string $tableAlias = 'c', ?string $databaseName = null): string - { - if ($this->getJsonTypeDeclarationSQL([]) !== 'JSON') { - return parent::getColumnTypeSQLSnippet($tableAlias, $databaseName); - } - - if ($databaseName === null) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6215', - 'Not passing a database name to methods "getColumnTypeSQLSnippet()", ' - . '"getColumnTypeSQLSnippets()", and "getListTableColumnsSQL()" of "%s" is deprecated.', - self::class, - ); - } - - $subQueryAlias = 'i_' . $tableAlias; - - $databaseName = $this->getDatabaseNameSQL($databaseName); - - // The check for `CONSTRAINT_SCHEMA = $databaseName` is mandatory here to prevent performance issues - return <<getJsonTypeDeclarationSQL([]) === 'JSON' && ($column['type'] ?? null) instanceof JsonType) { - unset($column['collation']); - unset($column['charset']); - } - - return parent::getColumnDeclarationSQL($name, $column); - } -} diff --git a/docker/streamline-src/vendor/doctrine/dbal/src/Platforms/MariaDb1052Platform.php b/docker/streamline-src/vendor/doctrine/dbal/src/Platforms/MariaDb1052Platform.php deleted file mode 100644 index a2199cdd..00000000 --- a/docker/streamline-src/vendor/doctrine/dbal/src/Platforms/MariaDb1052Platform.php +++ /dev/null @@ -1,36 +0,0 @@ -getQuotedName($this)]; - } -} diff --git a/docker/streamline-src/vendor/doctrine/dbal/src/Platforms/MariaDb1060Platform.php b/docker/streamline-src/vendor/doctrine/dbal/src/Platforms/MariaDb1060Platform.php deleted file mode 100644 index b3ce4eb9..00000000 --- a/docker/streamline-src/vendor/doctrine/dbal/src/Platforms/MariaDb1060Platform.php +++ /dev/null @@ -1,16 +0,0 @@ -getQuotedName($this)]; - } - - /** - * {@inheritDoc} - * - * @deprecated Implement {@see createReservedKeywordsList()} instead. - */ - protected function getReservedKeywordsClass() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4510', - 'MySQL57Platform::getReservedKeywordsClass() is deprecated,' - . ' use MySQL57Platform::createReservedKeywordsList() instead.', - ); - - return Keywords\MySQL57Keywords::class; - } - - /** - * {@inheritDoc} - */ - protected function initializeDoctrineTypeMappings() - { - parent::initializeDoctrineTypeMappings(); - - $this->doctrineTypeMapping['json'] = Types::JSON; - } -} diff --git a/docker/streamline-src/vendor/doctrine/dbal/src/Platforms/MySQL80Platform.php b/docker/streamline-src/vendor/doctrine/dbal/src/Platforms/MySQL80Platform.php deleted file mode 100644 index d9324282..00000000 --- a/docker/streamline-src/vendor/doctrine/dbal/src/Platforms/MySQL80Platform.php +++ /dev/null @@ -1,34 +0,0 @@ -multiplyInterval((string) $interval, 3); - break; - - case DateIntervalUnit::YEAR: - $interval = $this->multiplyInterval((string) $interval, 12); - break; - } - - return 'ADD_MONTHS(' . $date . ', ' . $operator . $interval . ')'; - - default: - $calculationClause = ''; - - switch ($unit) { - case DateIntervalUnit::SECOND: - $calculationClause = '/24/60/60'; - break; - - case DateIntervalUnit::MINUTE: - $calculationClause = '/24/60'; - break; - - case DateIntervalUnit::HOUR: - $calculationClause = '/24'; - break; - - case DateIntervalUnit::WEEK: - $calculationClause = '*7'; - break; - } - - return '(' . $date . $operator . $interval . $calculationClause . ')'; - } - } - - /** - * {@inheritDoc} - */ - public function getDateDiffExpression($date1, $date2) - { - return sprintf('TRUNC(%s) - TRUNC(%s)', $date1, $date2); - } - - /** - * {@inheritDoc} - */ - public function getBitAndComparisonExpression($value1, $value2) - { - return 'BITAND(' . $value1 . ', ' . $value2 . ')'; - } - - public function getCurrentDatabaseExpression(): string - { - return "SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA')"; - } - - /** - * {@inheritDoc} - */ - public function getBitOrComparisonExpression($value1, $value2) - { - return '(' . $value1 . '-' . - $this->getBitAndComparisonExpression($value1, $value2) - . '+' . $value2 . ')'; - } - - /** - * {@inheritDoc} - */ - public function getCreatePrimaryKeySQL(Index $index, $table): string - { - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as a Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $table = $table->getQuotedName($this); - } - - return 'ALTER TABLE ' . $table . ' ADD CONSTRAINT ' . $index->getQuotedName($this) - . ' PRIMARY KEY (' . $this->getIndexFieldDeclarationListSQL($index) . ')'; - } - - /** - * {@inheritDoc} - * - * Need to specifiy minvalue, since start with is hidden in the system and MINVALUE <= START WITH. - * Therefore we can use MINVALUE to be able to get a hint what START WITH was for later introspection - * in {@see listSequences()} - */ - public function getCreateSequenceSQL(Sequence $sequence) - { - return 'CREATE SEQUENCE ' . $sequence->getQuotedName($this) . - ' START WITH ' . $sequence->getInitialValue() . - ' MINVALUE ' . $sequence->getInitialValue() . - ' INCREMENT BY ' . $sequence->getAllocationSize() . - $this->getSequenceCacheSQL($sequence); - } - - /** - * {@inheritDoc} - */ - public function getAlterSequenceSQL(Sequence $sequence) - { - return 'ALTER SEQUENCE ' . $sequence->getQuotedName($this) . - ' INCREMENT BY ' . $sequence->getAllocationSize() - . $this->getSequenceCacheSQL($sequence); - } - - /** - * Cache definition for sequences - */ - private function getSequenceCacheSQL(Sequence $sequence): string - { - if ($sequence->getCache() === 0) { - return ' NOCACHE'; - } - - if ($sequence->getCache() === 1) { - return ' NOCACHE'; - } - - if ($sequence->getCache() > 1) { - return ' CACHE ' . $sequence->getCache(); - } - - return ''; - } - - /** - * {@inheritDoc} - */ - public function getSequenceNextValSQL($sequence) - { - return 'SELECT ' . $sequence . '.nextval FROM DUAL'; - } - - /** - * {@inheritDoc} - */ - public function getSetTransactionIsolationSQL($level) - { - return 'SET TRANSACTION ISOLATION LEVEL ' . $this->_getTransactionIsolationLevelSQL($level); - } - - /** - * {@inheritDoc} - */ - protected function _getTransactionIsolationLevelSQL($level) - { - switch ($level) { - case TransactionIsolationLevel::READ_UNCOMMITTED: - return 'READ UNCOMMITTED'; - - case TransactionIsolationLevel::READ_COMMITTED: - return 'READ COMMITTED'; - - case TransactionIsolationLevel::REPEATABLE_READ: - case TransactionIsolationLevel::SERIALIZABLE: - return 'SERIALIZABLE'; - - default: - return parent::_getTransactionIsolationLevelSQL($level); - } - } - - /** - * {@inheritDoc} - */ - public function getBooleanTypeDeclarationSQL(array $column) - { - return 'NUMBER(1)'; - } - - /** - * {@inheritDoc} - */ - public function getIntegerTypeDeclarationSQL(array $column) - { - return 'NUMBER(10)'; - } - - /** - * {@inheritDoc} - */ - public function getBigIntTypeDeclarationSQL(array $column) - { - return 'NUMBER(20)'; - } - - /** - * {@inheritDoc} - */ - public function getSmallIntTypeDeclarationSQL(array $column) - { - return 'NUMBER(5)'; - } - - /** - * {@inheritDoc} - */ - public function getDateTimeTypeDeclarationSQL(array $column) - { - return 'TIMESTAMP(0)'; - } - - /** - * {@inheritDoc} - */ - public function getDateTimeTzTypeDeclarationSQL(array $column) - { - return 'TIMESTAMP(0) WITH TIME ZONE'; - } - - /** - * {@inheritDoc} - */ - public function getDateTypeDeclarationSQL(array $column) - { - return 'DATE'; - } - - /** - * {@inheritDoc} - */ - public function getTimeTypeDeclarationSQL(array $column) - { - return 'DATE'; - } - - /** - * {@inheritDoc} - */ - protected function _getCommonIntegerTypeDeclarationSQL(array $column) - { - return ''; - } - - /** - * {@inheritDoc} - */ - protected function getVarcharTypeDeclarationSQLSnippet($length, $fixed/*, $lengthOmitted = false*/) - { - if ($length <= 0 || (func_num_args() > 2 && func_get_arg(2))) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'Relying on the default string column length on Oracle is deprecated' - . ', specify the length explicitly.', - ); - } - - return $fixed ? ($length > 0 ? 'CHAR(' . $length . ')' : 'CHAR(2000)') - : ($length > 0 ? 'VARCHAR2(' . $length . ')' : 'VARCHAR2(4000)'); - } - - /** - * {@inheritDoc} - */ - protected function getBinaryTypeDeclarationSQLSnippet($length, $fixed/*, $lengthOmitted = false*/) - { - if ($length <= 0 || (func_num_args() > 2 && func_get_arg(2))) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'Relying on the default binary column length on Oracle is deprecated' - . ', specify the length explicitly.', - ); - } - - return 'RAW(' . ($length > 0 ? $length : $this->getBinaryMaxLength()) . ')'; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function getBinaryMaxLength() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'OraclePlatform::getBinaryMaxLength() is deprecated.', - ); - - return 2000; - } - - /** - * {@inheritDoc} - */ - public function getClobTypeDeclarationSQL(array $column) - { - return 'CLOB'; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractSchemaManager} class hierarchy. - */ - public function getListDatabasesSQL() - { - return 'SELECT username FROM all_users'; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractSchemaManager} class hierarchy. - */ - public function getListSequencesSQL($database) - { - $database = $this->normalizeIdentifier($database); - $database = $this->quoteStringLiteral($database->getName()); - - return 'SELECT sequence_name, min_value, increment_by FROM sys.all_sequences ' . - 'WHERE SEQUENCE_OWNER = ' . $database; - } - - /** - * {@inheritDoc} - */ - protected function _getCreateTableSQL($name, array $columns, array $options = []) - { - $indexes = $options['indexes'] ?? []; - $options['indexes'] = []; - $sql = parent::_getCreateTableSQL($name, $columns, $options); - - foreach ($columns as $columnName => $column) { - if (isset($column['sequence'])) { - $sql[] = $this->getCreateSequenceSQL($column['sequence']); - } - - if ( - ! isset($column['autoincrement']) || ! $column['autoincrement'] && - (! isset($column['autoinc']) || ! $column['autoinc']) - ) { - continue; - } - - $sql = array_merge($sql, $this->getCreateAutoincrementSql($columnName, $name)); - } - - foreach ($indexes as $index) { - $sql[] = $this->getCreateIndexSQL($index, $name); - } - - return $sql; - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - */ - public function getListTableIndexesSQL($table, $database = null) - { - $table = $this->normalizeIdentifier($table); - $table = $this->quoteStringLiteral($table->getName()); - - return "SELECT uind_col.index_name AS name, - ( - SELECT uind.index_type - FROM user_indexes uind - WHERE uind.index_name = uind_col.index_name - ) AS type, - decode( - ( - SELECT uind.uniqueness - FROM user_indexes uind - WHERE uind.index_name = uind_col.index_name - ), - 'NONUNIQUE', - 0, - 'UNIQUE', - 1 - ) AS is_unique, - uind_col.column_name AS column_name, - uind_col.column_position AS column_pos, - ( - SELECT ucon.constraint_type - FROM user_constraints ucon - WHERE ucon.index_name = uind_col.index_name - AND ucon.table_name = uind_col.table_name - ) AS is_primary - FROM user_ind_columns uind_col - WHERE uind_col.table_name = " . $table . ' - ORDER BY uind_col.column_position ASC'; - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - */ - public function getListTablesSQL() - { - return 'SELECT * FROM sys.user_tables'; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractSchemaManager} class hierarchy. - */ - public function getListViewsSQL($database) - { - return 'SELECT view_name, text FROM sys.user_views'; - } - - /** - * @internal The method should be only used from within the OraclePlatform class hierarchy. - * - * @param string $name - * @param string $table - * @param int $start - * - * @return string[] - */ - public function getCreateAutoincrementSql($name, $table, $start = 1) - { - $tableIdentifier = $this->normalizeIdentifier($table); - $quotedTableName = $tableIdentifier->getQuotedName($this); - $unquotedTableName = $tableIdentifier->getName(); - - $nameIdentifier = $this->normalizeIdentifier($name); - $quotedName = $nameIdentifier->getQuotedName($this); - $unquotedName = $nameIdentifier->getName(); - - $sql = []; - - $autoincrementIdentifierName = $this->getAutoincrementIdentifierName($tableIdentifier); - - $idx = new Index($autoincrementIdentifierName, [$quotedName], true, true); - - $sql[] = "DECLARE - constraints_Count NUMBER; -BEGIN - SELECT COUNT(CONSTRAINT_NAME) INTO constraints_Count - FROM USER_CONSTRAINTS - WHERE TABLE_NAME = '" . $unquotedTableName . "' - AND CONSTRAINT_TYPE = 'P'; - IF constraints_Count = 0 OR constraints_Count = '' THEN - EXECUTE IMMEDIATE '" . $this->getCreateConstraintSQL($idx, $quotedTableName) . "'; - END IF; -END;"; - - $sequenceName = $this->getIdentitySequenceName( - $tableIdentifier->isQuoted() ? $quotedTableName : $unquotedTableName, - $nameIdentifier->isQuoted() ? $quotedName : $unquotedName, - ); - $sequence = new Sequence($sequenceName, $start); - $sql[] = $this->getCreateSequenceSQL($sequence); - - $sql[] = 'CREATE TRIGGER ' . $autoincrementIdentifierName . ' - BEFORE INSERT - ON ' . $quotedTableName . ' - FOR EACH ROW -DECLARE - last_Sequence NUMBER; - last_InsertID NUMBER; -BEGIN - IF (:NEW.' . $quotedName . ' IS NULL OR :NEW.' . $quotedName . ' = 0) THEN - SELECT ' . $sequenceName . '.NEXTVAL INTO :NEW.' . $quotedName . ' FROM DUAL; - ELSE - SELECT NVL(Last_Number, 0) INTO last_Sequence - FROM User_Sequences - WHERE Sequence_Name = \'' . $sequence->getName() . '\'; - SELECT :NEW.' . $quotedName . ' INTO last_InsertID FROM DUAL; - WHILE (last_InsertID > last_Sequence) LOOP - SELECT ' . $sequenceName . '.NEXTVAL INTO last_Sequence FROM DUAL; - END LOOP; - SELECT ' . $sequenceName . '.NEXTVAL INTO last_Sequence FROM DUAL; - END IF; -END;'; - - return $sql; - } - - /** - * @internal The method should be only used from within the OracleSchemaManager class hierarchy. - * - * Returns the SQL statements to drop the autoincrement for the given table name. - * - * @param string $table The table name to drop the autoincrement for. - * - * @return string[] - */ - public function getDropAutoincrementSql($table) - { - $table = $this->normalizeIdentifier($table); - $autoincrementIdentifierName = $this->getAutoincrementIdentifierName($table); - $identitySequenceName = $this->getIdentitySequenceName( - $table->isQuoted() ? $table->getQuotedName($this) : $table->getName(), - '', - ); - - return [ - 'DROP TRIGGER ' . $autoincrementIdentifierName, - $this->getDropSequenceSQL($identitySequenceName), - $this->getDropConstraintSQL($autoincrementIdentifierName, $table->getQuotedName($this)), - ]; - } - - /** - * Normalizes the given identifier. - * - * Uppercases the given identifier if it is not quoted by intention - * to reflect Oracle's internal auto uppercasing strategy of unquoted identifiers. - * - * @param string $name The identifier to normalize. - */ - private function normalizeIdentifier($name): Identifier - { - $identifier = new Identifier($name); - - return $identifier->isQuoted() ? $identifier : new Identifier(strtoupper($name)); - } - - /** - * Adds suffix to identifier, - * - * if the new string exceeds max identifier length, - * keeps $suffix, cuts from $identifier as much as the part exceeding. - */ - private function addSuffix(string $identifier, string $suffix): string - { - $maxPossibleLengthWithoutSuffix = $this->getMaxIdentifierLength() - strlen($suffix); - if (strlen($identifier) > $maxPossibleLengthWithoutSuffix) { - $identifier = substr($identifier, 0, $maxPossibleLengthWithoutSuffix); - } - - return $identifier . $suffix; - } - - /** - * Returns the autoincrement primary key identifier name for the given table identifier. - * - * Quotes the autoincrement primary key identifier name - * if the given table name is quoted by intention. - */ - private function getAutoincrementIdentifierName(Identifier $table): string - { - $identifierName = $this->addSuffix($table->getName(), '_AI_PK'); - - return $table->isQuoted() - ? $this->quoteSingleIdentifier($identifierName) - : $identifierName; - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - */ - public function getListTableForeignKeysSQL($table) - { - $table = $this->normalizeIdentifier($table); - $table = $this->quoteStringLiteral($table->getName()); - - return "SELECT alc.constraint_name, - alc.DELETE_RULE, - cols.column_name \"local_column\", - cols.position, - ( - SELECT r_cols.table_name - FROM user_cons_columns r_cols - WHERE alc.r_constraint_name = r_cols.constraint_name - AND r_cols.position = cols.position - ) AS \"references_table\", - ( - SELECT r_cols.column_name - FROM user_cons_columns r_cols - WHERE alc.r_constraint_name = r_cols.constraint_name - AND r_cols.position = cols.position - ) AS \"foreign_column\" - FROM user_cons_columns cols - JOIN user_constraints alc - ON alc.constraint_name = cols.constraint_name - AND alc.constraint_type = 'R' - AND alc.table_name = " . $table . ' - ORDER BY cols.constraint_name ASC, cols.position ASC'; - } - - /** - * @deprecated - * - * {@inheritDoc} - */ - public function getListTableConstraintsSQL($table) - { - $table = $this->normalizeIdentifier($table); - $table = $this->quoteStringLiteral($table->getName()); - - return 'SELECT * FROM user_constraints WHERE table_name = ' . $table; - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - */ - public function getListTableColumnsSQL($table, $database = null) - { - $table = $this->normalizeIdentifier($table); - $table = $this->quoteStringLiteral($table->getName()); - - $tabColumnsTableName = 'user_tab_columns'; - $colCommentsTableName = 'user_col_comments'; - $tabColumnsOwnerCondition = ''; - $colCommentsOwnerCondition = ''; - - if ($database !== null && $database !== '/') { - $database = $this->normalizeIdentifier($database); - $database = $this->quoteStringLiteral($database->getName()); - $tabColumnsTableName = 'all_tab_columns'; - $colCommentsTableName = 'all_col_comments'; - $tabColumnsOwnerCondition = ' AND c.owner = ' . $database; - $colCommentsOwnerCondition = ' AND d.OWNER = c.OWNER'; - } - - return sprintf( - <<<'SQL' -SELECT c.*, - ( - SELECT d.comments - FROM %s d - WHERE d.TABLE_NAME = c.TABLE_NAME%s - AND d.COLUMN_NAME = c.COLUMN_NAME - ) AS comments -FROM %s c -WHERE c.table_name = %s%s -ORDER BY c.column_id -SQL - , - $colCommentsTableName, - $colCommentsOwnerCondition, - $tabColumnsTableName, - $table, - $tabColumnsOwnerCondition, - ); - } - - /** - * {@inheritDoc} - */ - public function getDropForeignKeySQL($foreignKey, $table) - { - if ($foreignKey instanceof ForeignKeyConstraint) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $foreignKey as a ForeignKeyConstraint object to %s is deprecated.' - . ' Pass it as a quoted name instead.', - __METHOD__, - ); - } else { - $foreignKey = new Identifier($foreignKey); - } - - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as a Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - } else { - $table = new Identifier($table); - } - - $foreignKey = $foreignKey->getQuotedName($this); - $table = $table->getQuotedName($this); - - return 'ALTER TABLE ' . $table . ' DROP CONSTRAINT ' . $foreignKey; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function getAdvancedForeignKeyOptionsSQL(ForeignKeyConstraint $foreignKey) - { - $referentialAction = ''; - - if ($foreignKey->hasOption('onDelete')) { - $referentialAction = $this->getForeignKeyReferentialActionSQL($foreignKey->getOption('onDelete')); - } - - if ($referentialAction !== '') { - return ' ON DELETE ' . $referentialAction; - } - - return ''; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function getForeignKeyReferentialActionSQL($action) - { - $action = strtoupper($action); - - switch ($action) { - case 'RESTRICT': // RESTRICT is not supported, therefore falling back to NO ACTION. - case 'NO ACTION': - // NO ACTION cannot be declared explicitly, - // therefore returning empty string to indicate to OMIT the referential clause. - return ''; - - case 'CASCADE': - case 'SET NULL': - return $action; - - default: - // SET DEFAULT is not supported, throw exception instead. - throw new InvalidArgumentException('Invalid foreign key action: ' . $action); - } - } - - /** - * {@inheritDoc} - */ - public function getCreateDatabaseSQL($name) - { - return 'CREATE USER ' . $name; - } - - /** - * {@inheritDoc} - */ - public function getDropDatabaseSQL($name) - { - return 'DROP USER ' . $name . ' CASCADE'; - } - - /** - * {@inheritDoc} - */ - public function getAlterTableSQL(TableDiff $diff) - { - $sql = []; - $commentsSQL = []; - $columnSql = []; - - $fields = []; - - $tableNameSQL = ($diff->getOldTable() ?? $diff->getName($this))->getQuotedName($this); - - foreach ($diff->getAddedColumns() as $column) { - if ($this->onSchemaAlterTableAddColumn($column, $diff, $columnSql)) { - continue; - } - - $fields[] = $this->getColumnDeclarationSQL($column->getQuotedName($this), $column->toArray()); - $comment = $this->getColumnComment($column); - - if ($comment === null || $comment === '') { - continue; - } - - $commentsSQL[] = $this->getCommentOnColumnSQL( - $tableNameSQL, - $column->getQuotedName($this), - $comment, - ); - } - - if (count($fields) > 0) { - $sql[] = 'ALTER TABLE ' . $tableNameSQL . ' ADD (' . implode(', ', $fields) . ')'; - } - - $fields = []; - foreach ($diff->getModifiedColumns() as $columnDiff) { - if ($this->onSchemaAlterTableChangeColumn($columnDiff, $diff, $columnSql)) { - continue; - } - - $newColumn = $columnDiff->getNewColumn(); - - // Do not generate column alteration clause if type is binary and only fixed property has changed. - // Oracle only supports binary type columns with variable length. - // Avoids unnecessary table alteration statements. - if ( - $newColumn->getType() instanceof BinaryType && - $columnDiff->hasFixedChanged() && - count($columnDiff->changedProperties) === 1 - ) { - continue; - } - - $columnHasChangedComment = $columnDiff->hasCommentChanged(); - - /** - * Do not add query part if only comment has changed - */ - if (! ($columnHasChangedComment && count($columnDiff->changedProperties) === 1)) { - $newColumnProperties = $newColumn->toArray(); - - if (! $columnDiff->hasNotNullChanged()) { - unset($newColumnProperties['notnull']); - } - - $fields[] = $newColumn->getQuotedName($this) . $this->getColumnDeclarationSQL('', $newColumnProperties); - } - - if (! $columnHasChangedComment) { - continue; - } - - $commentsSQL[] = $this->getCommentOnColumnSQL( - $tableNameSQL, - $newColumn->getQuotedName($this), - $this->getColumnComment($newColumn), - ); - } - - if (count($fields) > 0) { - $sql[] = 'ALTER TABLE ' . $tableNameSQL . ' MODIFY (' . implode(', ', $fields) . ')'; - } - - foreach ($diff->getRenamedColumns() as $oldColumnName => $column) { - if ($this->onSchemaAlterTableRenameColumn($oldColumnName, $column, $diff, $columnSql)) { - continue; - } - - $oldColumnName = new Identifier($oldColumnName); - - $sql[] = 'ALTER TABLE ' . $tableNameSQL . ' RENAME COLUMN ' . $oldColumnName->getQuotedName($this) - . ' TO ' . $column->getQuotedName($this); - } - - $fields = []; - foreach ($diff->getDroppedColumns() as $column) { - if ($this->onSchemaAlterTableRemoveColumn($column, $diff, $columnSql)) { - continue; - } - - $fields[] = $column->getQuotedName($this); - } - - if (count($fields) > 0) { - $sql[] = 'ALTER TABLE ' . $tableNameSQL . ' DROP (' . implode(', ', $fields) . ')'; - } - - $tableSql = []; - - if (! $this->onSchemaAlterTable($diff, $tableSql)) { - $sql = array_merge($sql, $commentsSQL); - - $newName = $diff->getNewName(); - - if ($newName !== false) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5663', - 'Generation of "rename table" SQL using %s is deprecated. Use getRenameTableSQL() instead.', - __METHOD__, - ); - - $sql[] = sprintf( - 'ALTER TABLE %s RENAME TO %s', - $tableNameSQL, - $newName->getQuotedName($this), - ); - } - - $sql = array_merge( - $this->getPreAlterTableIndexForeignKeySQL($diff), - $sql, - $this->getPostAlterTableIndexForeignKeySQL($diff), - ); - } - - return array_merge($sql, $tableSql, $columnSql); - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function getColumnDeclarationSQL($name, array $column) - { - if (isset($column['columnDefinition'])) { - $columnDef = $this->getCustomTypeDeclarationSQL($column); - } else { - $default = $this->getDefaultValueDeclarationSQL($column); - - $notnull = ''; - - if (isset($column['notnull'])) { - $notnull = $column['notnull'] ? ' NOT NULL' : ' NULL'; - } - - if (! empty($column['unique'])) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5656', - 'The usage of the "unique" column property is deprecated. Use unique constraints instead.', - ); - - $unique = ' ' . $this->getUniqueFieldDeclarationSQL(); - } else { - $unique = ''; - } - - if (! empty($column['check'])) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5656', - 'The usage of the "check" column property is deprecated.', - ); - - $check = ' ' . $column['check']; - } else { - $check = ''; - } - - $typeDecl = $column['type']->getSQLDeclaration($column, $this); - $columnDef = $typeDecl . $default . $notnull . $unique . $check; - } - - return $name . ' ' . $columnDef; - } - - /** - * {@inheritDoc} - */ - protected function getRenameIndexSQL($oldIndexName, Index $index, $tableName) - { - if (strpos($tableName, '.') !== false) { - [$schema] = explode('.', $tableName); - $oldIndexName = $schema . '.' . $oldIndexName; - } - - return ['ALTER INDEX ' . $oldIndexName . ' RENAME TO ' . $index->getQuotedName($this)]; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function usesSequenceEmulatedIdentityColumns() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5513', - '%s is deprecated.', - __METHOD__, - ); - - return true; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the OraclePlatform class hierarchy. - */ - public function getIdentitySequenceName($tableName, $columnName) - { - $table = new Identifier($tableName); - - // No usage of column name to preserve BC compatibility with <2.5 - $identitySequenceName = $this->addSuffix($table->getName(), '_SEQ'); - - if ($table->isQuoted()) { - $identitySequenceName = '"' . $identitySequenceName . '"'; - } - - $identitySequenceIdentifier = $this->normalizeIdentifier($identitySequenceName); - - return $identitySequenceIdentifier->getQuotedName($this); - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function supportsCommentOnStatement() - { - return true; - } - - /** - * {@inheritDoc} - */ - public function getName() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4749', - 'OraclePlatform::getName() is deprecated. Identify platforms by their class.', - ); - - return 'oracle'; - } - - /** - * {@inheritDoc} - */ - protected function doModifyLimitQuery($query, $limit, $offset) - { - if ($limit === null && $offset <= 0) { - return $query; - } - - if (preg_match('/^\s*SELECT/i', $query) === 1) { - if (preg_match('/\sFROM\s/i', $query) === 0) { - $query .= ' FROM dual'; - } - - $columns = ['a.*']; - - if ($offset > 0) { - $columns[] = 'ROWNUM AS doctrine_rownum'; - } - - $query = sprintf('SELECT %s FROM (%s) a', implode(', ', $columns), $query); - - if ($limit !== null) { - $query .= sprintf(' WHERE ROWNUM <= %d', $offset + $limit); - } - - if ($offset > 0) { - $query = sprintf('SELECT * FROM (%s) WHERE doctrine_rownum >= %d', $query, $offset + 1); - } - } - - return $query; - } - - /** - * {@inheritDoc} - */ - public function getCreateTemporaryTableSnippetSQL() - { - return 'CREATE GLOBAL TEMPORARY TABLE'; - } - - /** - * {@inheritDoc} - */ - public function getDateTimeTzFormatString() - { - return 'Y-m-d H:i:sP'; - } - - /** - * {@inheritDoc} - */ - public function getDateFormatString() - { - return 'Y-m-d 00:00:00'; - } - - /** - * {@inheritDoc} - */ - public function getTimeFormatString() - { - return '1900-01-01 H:i:s'; - } - - /** - * {@inheritDoc} - */ - public function getMaxIdentifierLength() - { - return 30; - } - - /** - * {@inheritDoc} - */ - public function supportsSequences() - { - return true; - } - - /** - * {@inheritDoc} - */ - public function supportsReleaseSavepoints() - { - return false; - } - - /** - * {@inheritDoc} - */ - public function getTruncateTableSQL($tableName, $cascade = false) - { - $tableIdentifier = new Identifier($tableName); - - return 'TRUNCATE TABLE ' . $tableIdentifier->getQuotedName($this); - } - - /** - * {@inheritDoc} - */ - public function getDummySelectSQL() - { - $expression = func_num_args() > 0 ? func_get_arg(0) : '1'; - - return sprintf('SELECT %s FROM DUAL', $expression); - } - - /** - * {@inheritDoc} - */ - protected function initializeDoctrineTypeMappings() - { - $this->doctrineTypeMapping = [ - 'binary_double' => Types::FLOAT, - 'binary_float' => Types::FLOAT, - 'binary_integer' => Types::BOOLEAN, - 'blob' => Types::BLOB, - 'char' => Types::STRING, - 'clob' => Types::TEXT, - 'date' => Types::DATE_MUTABLE, - 'float' => Types::FLOAT, - 'integer' => Types::INTEGER, - 'long' => Types::STRING, - 'long raw' => Types::BLOB, - 'nchar' => Types::STRING, - 'nclob' => Types::TEXT, - 'number' => Types::INTEGER, - 'nvarchar2' => Types::STRING, - 'pls_integer' => Types::BOOLEAN, - 'raw' => Types::BINARY, - 'rowid' => Types::STRING, - 'timestamp' => Types::DATETIME_MUTABLE, - 'timestamptz' => Types::DATETIMETZ_MUTABLE, - 'urowid' => Types::STRING, - 'varchar' => Types::STRING, - 'varchar2' => Types::STRING, - ]; - } - - /** - * {@inheritDoc} - */ - public function releaseSavePoint($savepoint) - { - return ''; - } - - /** - * {@inheritDoc} - * - * @deprecated Implement {@see createReservedKeywordsList()} instead. - */ - protected function getReservedKeywordsClass() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4510', - 'OraclePlatform::getReservedKeywordsClass() is deprecated,' - . ' use OraclePlatform::createReservedKeywordsList() instead.', - ); - - return Keywords\OracleKeywords::class; - } - - /** - * {@inheritDoc} - */ - public function getBlobTypeDeclarationSQL(array $column) - { - return 'BLOB'; - } - - /** @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. */ - public function getListTableCommentsSQL(string $table, ?string $database = null): string - { - $tableCommentsName = 'user_tab_comments'; - $ownerCondition = ''; - - if ($database !== null && $database !== '/') { - $tableCommentsName = 'all_tab_comments'; - $ownerCondition = ' AND owner = ' . $this->quoteStringLiteral( - $this->normalizeIdentifier($database)->getName(), - ); - } - - return sprintf( - <<<'SQL' -SELECT comments FROM %s WHERE table_name = %s%s -SQL - , - $tableCommentsName, - $this->quoteStringLiteral($this->normalizeIdentifier($table)->getName()), - $ownerCondition, - ); - } - - public function createSchemaManager(Connection $connection): OracleSchemaManager - { - return new OracleSchemaManager($connection, $this); - } -} diff --git a/docker/streamline-src/vendor/doctrine/dbal/src/Platforms/PostgreSQLPlatform.php b/docker/streamline-src/vendor/doctrine/dbal/src/Platforms/PostgreSQLPlatform.php deleted file mode 100644 index c01e9265..00000000 --- a/docker/streamline-src/vendor/doctrine/dbal/src/Platforms/PostgreSQLPlatform.php +++ /dev/null @@ -1,1420 +0,0 @@ - [ - 't', - 'true', - 'y', - 'yes', - 'on', - '1', - ], - 'false' => [ - 'f', - 'false', - 'n', - 'no', - 'off', - '0', - ], - ]; - - /** - * PostgreSQL has different behavior with some drivers - * with regard to how booleans have to be handled. - * - * Enables use of 'true'/'false' or otherwise 1 and 0 instead. - * - * @param bool $flag - * - * @return void - */ - public function setUseBooleanTrueFalseStrings($flag) - { - $this->useBooleanTrueFalseStrings = (bool) $flag; - } - - /** - * {@inheritDoc} - */ - public function getSubstringExpression($string, $start, $length = null) - { - if ($length === null) { - return 'SUBSTRING(' . $string . ' FROM ' . $start . ')'; - } - - return 'SUBSTRING(' . $string . ' FROM ' . $start . ' FOR ' . $length . ')'; - } - - /** - * {@inheritDoc} - * - * @deprecated Generate dates within the application. - */ - public function getNowExpression() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4753', - 'PostgreSQLPlatform::getNowExpression() is deprecated. Generate dates within the application.', - ); - - return 'LOCALTIMESTAMP(0)'; - } - - /** - * {@inheritDoc} - */ - public function getRegexpExpression() - { - return 'SIMILAR TO'; - } - - /** - * {@inheritDoc} - */ - public function getLocateExpression($str, $substr, $startPos = false) - { - if ($startPos !== false) { - $str = $this->getSubstringExpression($str, $startPos); - - return 'CASE WHEN (POSITION(' . $substr . ' IN ' . $str . ') = 0) THEN 0' - . ' ELSE (POSITION(' . $substr . ' IN ' . $str . ') + ' . $startPos . ' - 1) END'; - } - - return 'POSITION(' . $substr . ' IN ' . $str . ')'; - } - - /** - * {@inheritDoc} - */ - protected function getDateArithmeticIntervalExpression($date, $operator, $interval, $unit) - { - if ($unit === DateIntervalUnit::QUARTER) { - $interval = $this->multiplyInterval((string) $interval, 3); - $unit = DateIntervalUnit::MONTH; - } - - return '(' . $date . ' ' . $operator . ' (' . $interval . " || ' " . $unit . "')::interval)"; - } - - /** - * {@inheritDoc} - */ - public function getDateDiffExpression($date1, $date2) - { - return '(DATE(' . $date1 . ')-DATE(' . $date2 . '))'; - } - - public function getCurrentDatabaseExpression(): string - { - return 'CURRENT_DATABASE()'; - } - - /** - * {@inheritDoc} - */ - public function supportsSequences() - { - return true; - } - - /** - * {@inheritDoc} - */ - public function supportsSchemas() - { - return true; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function getDefaultSchemaName() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5513', - '%s is deprecated.', - __METHOD__, - ); - - return 'public'; - } - - /** - * {@inheritDoc} - */ - public function supportsIdentityColumns() - { - return true; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function supportsPartialIndexes() - { - return true; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function usesSequenceEmulatedIdentityColumns() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5513', - '%s is deprecated.', - __METHOD__, - ); - - return true; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function getIdentitySequenceName($tableName, $columnName) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5513', - '%s is deprecated.', - __METHOD__, - ); - - return $tableName . '_' . $columnName . '_seq'; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function supportsCommentOnStatement() - { - return true; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function hasNativeGuidType() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5509', - '%s is deprecated.', - __METHOD__, - ); - - return true; - } - - public function createSelectSQLBuilder(): SelectSQLBuilder - { - return new DefaultSelectSQLBuilder($this, 'FOR UPDATE', null); - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractSchemaManager} class hierarchy. - */ - public function getListDatabasesSQL() - { - return 'SELECT datname FROM pg_database'; - } - - /** - * {@inheritDoc} - * - * @deprecated Use {@see PostgreSQLSchemaManager::listSchemaNames()} instead. - */ - public function getListNamespacesSQL() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4503', - 'PostgreSQLPlatform::getListNamespacesSQL() is deprecated,' - . ' use PostgreSQLSchemaManager::listSchemaNames() instead.', - ); - - return "SELECT schema_name AS nspname - FROM information_schema.schemata - WHERE schema_name NOT LIKE 'pg\_%' - AND schema_name != 'information_schema'"; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractSchemaManager} class hierarchy. - */ - public function getListSequencesSQL($database) - { - return 'SELECT sequence_name AS relname, - sequence_schema AS schemaname, - minimum_value AS min_value, - increment AS increment_by - FROM information_schema.sequences - WHERE sequence_catalog = ' . $this->quoteStringLiteral($database) . " - AND sequence_schema NOT LIKE 'pg\_%' - AND sequence_schema != 'information_schema'"; - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - */ - public function getListTablesSQL() - { - return "SELECT quote_ident(table_name) AS table_name, - table_schema AS schema_name - FROM information_schema.tables - WHERE table_schema NOT LIKE 'pg\_%' - AND table_schema != 'information_schema' - AND table_name != 'geometry_columns' - AND table_name != 'spatial_ref_sys' - AND table_type != 'VIEW'"; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractSchemaManager} class hierarchy. - */ - public function getListViewsSQL($database) - { - return 'SELECT quote_ident(table_name) AS viewname, - table_schema AS schemaname, - view_definition AS definition - FROM information_schema.views - WHERE view_definition IS NOT NULL'; - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * @param string $table - * @param string|null $database - * - * @return string - */ - public function getListTableForeignKeysSQL($table, $database = null) - { - return 'SELECT quote_ident(r.conname) as conname, pg_catalog.pg_get_constraintdef(r.oid, true) as condef - FROM pg_catalog.pg_constraint r - WHERE r.conrelid = - ( - SELECT c.oid - FROM pg_catalog.pg_class c, pg_catalog.pg_namespace n - WHERE ' . $this->getTableWhereClause($table) . " AND n.oid = c.relnamespace - ) - AND r.contype = 'f'"; - } - - /** - * @deprecated - * - * {@inheritDoc} - */ - public function getListTableConstraintsSQL($table) - { - $table = new Identifier($table); - $table = $this->quoteStringLiteral($table->getName()); - - return sprintf( - <<<'SQL' -SELECT - quote_ident(relname) as relname -FROM - pg_class -WHERE oid IN ( - SELECT indexrelid - FROM pg_index, pg_class - WHERE pg_class.relname = %s - AND pg_class.oid = pg_index.indrelid - AND (indisunique = 't' OR indisprimary = 't') - ) -SQL - , - $table, - ); - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - */ - public function getListTableIndexesSQL($table, $database = null) - { - return 'SELECT quote_ident(relname) as relname, pg_index.indisunique, pg_index.indisprimary, - pg_index.indkey, pg_index.indrelid, - pg_get_expr(indpred, indrelid) AS where - FROM pg_class, pg_index - WHERE oid IN ( - SELECT indexrelid - FROM pg_index si, pg_class sc, pg_namespace sn - WHERE ' . $this->getTableWhereClause($table, 'sc', 'sn') . ' - AND sc.oid=si.indrelid AND sc.relnamespace = sn.oid - ) AND pg_index.indexrelid = oid'; - } - - /** - * @param string $table - * @param string $classAlias - * @param string $namespaceAlias - */ - private function getTableWhereClause($table, $classAlias = 'c', $namespaceAlias = 'n'): string - { - $whereClause = $namespaceAlias . ".nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast') AND "; - if (strpos($table, '.') !== false) { - [$schema, $table] = explode('.', $table); - $schema = $this->quoteStringLiteral($schema); - } else { - $schema = 'ANY(current_schemas(false))'; - } - - $table = new Identifier($table); - $table = $this->quoteStringLiteral($table->getName()); - - return $whereClause . sprintf( - '%s.relname = %s AND %s.nspname = %s', - $classAlias, - $table, - $namespaceAlias, - $schema, - ); - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - */ - public function getListTableColumnsSQL($table, $database = null) - { - return "SELECT - a.attnum, - quote_ident(a.attname) AS field, - t.typname AS type, - format_type(a.atttypid, a.atttypmod) AS complete_type, - (SELECT tc.collcollate FROM pg_catalog.pg_collation tc WHERE tc.oid = a.attcollation) AS collation, - (SELECT t1.typname FROM pg_catalog.pg_type t1 WHERE t1.oid = t.typbasetype) AS domain_type, - (SELECT format_type(t2.typbasetype, t2.typtypmod) FROM - pg_catalog.pg_type t2 WHERE t2.typtype = 'd' AND t2.oid = a.atttypid) AS domain_complete_type, - a.attnotnull AS isnotnull, - (SELECT 't' - FROM pg_index - WHERE c.oid = pg_index.indrelid - AND pg_index.indkey[0] = a.attnum - AND pg_index.indisprimary = 't' - ) AS pri, - (SELECT pg_get_expr(adbin, adrelid) - FROM pg_attrdef - WHERE c.oid = pg_attrdef.adrelid - AND pg_attrdef.adnum=a.attnum - ) AS default, - (SELECT pg_description.description - FROM pg_description WHERE pg_description.objoid = c.oid AND a.attnum = pg_description.objsubid - ) AS comment - FROM pg_attribute a, pg_class c, pg_type t, pg_namespace n - WHERE " . $this->getTableWhereClause($table, 'c', 'n') . ' - AND a.attnum > 0 - AND a.attrelid = c.oid - AND a.atttypid = t.oid - AND n.oid = c.relnamespace - ORDER BY a.attnum'; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function getAdvancedForeignKeyOptionsSQL(ForeignKeyConstraint $foreignKey) - { - $query = ''; - - if ($foreignKey->hasOption('match')) { - $query .= ' MATCH ' . $foreignKey->getOption('match'); - } - - $query .= parent::getAdvancedForeignKeyOptionsSQL($foreignKey); - - if ($foreignKey->hasOption('deferrable') && $foreignKey->getOption('deferrable') !== false) { - $query .= ' DEFERRABLE'; - } else { - $query .= ' NOT DEFERRABLE'; - } - - if ( - ($foreignKey->hasOption('feferred') && $foreignKey->getOption('feferred') !== false) - || ($foreignKey->hasOption('deferred') && $foreignKey->getOption('deferred') !== false) - ) { - $query .= ' INITIALLY DEFERRED'; - } else { - $query .= ' INITIALLY IMMEDIATE'; - } - - return $query; - } - - /** - * {@inheritDoc} - */ - public function getAlterTableSQL(TableDiff $diff) - { - $sql = []; - $commentsSQL = []; - $columnSql = []; - - $table = $diff->getOldTable() ?? $diff->getName($this); - - $tableNameSQL = $table->getQuotedName($this); - - foreach ($diff->getAddedColumns() as $addedColumn) { - if ($this->onSchemaAlterTableAddColumn($addedColumn, $diff, $columnSql)) { - continue; - } - - $query = 'ADD ' . $this->getColumnDeclarationSQL( - $addedColumn->getQuotedName($this), - $addedColumn->toArray(), - ); - - $sql[] = 'ALTER TABLE ' . $tableNameSQL . ' ' . $query; - - $comment = $this->getColumnComment($addedColumn); - - if ($comment === null || $comment === '') { - continue; - } - - $commentsSQL[] = $this->getCommentOnColumnSQL( - $tableNameSQL, - $addedColumn->getQuotedName($this), - $comment, - ); - } - - foreach ($diff->getDroppedColumns() as $droppedColumn) { - if ($this->onSchemaAlterTableRemoveColumn($droppedColumn, $diff, $columnSql)) { - continue; - } - - $query = 'DROP ' . $droppedColumn->getQuotedName($this); - $sql[] = 'ALTER TABLE ' . $tableNameSQL . ' ' . $query; - } - - foreach ($diff->getModifiedColumns() as $columnDiff) { - if ($this->onSchemaAlterTableChangeColumn($columnDiff, $diff, $columnSql)) { - continue; - } - - if ($this->isUnchangedBinaryColumn($columnDiff)) { - continue; - } - - $oldColumn = $columnDiff->getOldColumn() ?? $columnDiff->getOldColumnName(); - $newColumn = $columnDiff->getNewColumn(); - - $oldColumnName = $oldColumn->getQuotedName($this); - - if ( - $columnDiff->hasTypeChanged() - || $columnDiff->hasPrecisionChanged() - || $columnDiff->hasScaleChanged() - || $columnDiff->hasFixedChanged() - ) { - $type = $newColumn->getType(); - - // SERIAL/BIGSERIAL are not "real" types and we can't alter a column to that type - $columnDefinition = $newColumn->toArray(); - $columnDefinition['autoincrement'] = false; - - // here was a server version check before, but DBAL API does not support this anymore. - $query = 'ALTER ' . $oldColumnName . ' TYPE ' . $type->getSQLDeclaration($columnDefinition, $this); - $sql[] = 'ALTER TABLE ' . $tableNameSQL . ' ' . $query; - } - - if ($columnDiff->hasDefaultChanged()) { - $defaultClause = $newColumn->getDefault() === null - ? ' DROP DEFAULT' - : ' SET' . $this->getDefaultValueDeclarationSQL($newColumn->toArray()); - - $query = 'ALTER ' . $oldColumnName . $defaultClause; - $sql[] = 'ALTER TABLE ' . $tableNameSQL . ' ' . $query; - } - - if ($columnDiff->hasNotNullChanged()) { - $query = 'ALTER ' . $oldColumnName . ' ' . ($newColumn->getNotnull() ? 'SET' : 'DROP') . ' NOT NULL'; - $sql[] = 'ALTER TABLE ' . $tableNameSQL . ' ' . $query; - } - - if ($columnDiff->hasAutoIncrementChanged()) { - if ($newColumn->getAutoincrement()) { - // add autoincrement - $seqName = $this->getIdentitySequenceName( - $table->getName(), - $oldColumnName, - ); - - $sql[] = 'CREATE SEQUENCE ' . $seqName; - $sql[] = "SELECT setval('" . $seqName . "', (SELECT MAX(" . $oldColumnName . ') FROM ' - . $tableNameSQL . '))'; - $query = 'ALTER ' . $oldColumnName . " SET DEFAULT nextval('" . $seqName . "')"; - } else { - // Drop autoincrement, but do NOT drop the sequence. It might be re-used by other tables or have - $query = 'ALTER ' . $oldColumnName . ' DROP DEFAULT'; - } - - $sql[] = 'ALTER TABLE ' . $tableNameSQL . ' ' . $query; - } - - $oldComment = $this->getOldColumnComment($columnDiff); - $newComment = $this->getColumnComment($newColumn); - - if ( - $columnDiff->hasCommentChanged() - || ($columnDiff->getOldColumn() !== null && $oldComment !== $newComment) - ) { - $commentsSQL[] = $this->getCommentOnColumnSQL( - $tableNameSQL, - $newColumn->getQuotedName($this), - $newComment, - ); - } - - if (! $columnDiff->hasLengthChanged()) { - continue; - } - - $query = 'ALTER ' . $oldColumnName . ' TYPE ' - . $newColumn->getType()->getSQLDeclaration($newColumn->toArray(), $this); - $sql[] = 'ALTER TABLE ' . $tableNameSQL . ' ' . $query; - } - - foreach ($diff->getRenamedColumns() as $oldColumnName => $column) { - if ($this->onSchemaAlterTableRenameColumn($oldColumnName, $column, $diff, $columnSql)) { - continue; - } - - $oldColumnName = new Identifier($oldColumnName); - - $sql[] = 'ALTER TABLE ' . $tableNameSQL . ' RENAME COLUMN ' . $oldColumnName->getQuotedName($this) - . ' TO ' . $column->getQuotedName($this); - } - - $tableSql = []; - - if (! $this->onSchemaAlterTable($diff, $tableSql)) { - $sql = array_merge($sql, $commentsSQL); - - $newName = $diff->getNewName(); - - if ($newName !== false) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5663', - 'Generation of "rename table" SQL using %s is deprecated. Use getRenameTableSQL() instead.', - __METHOD__, - ); - - $sql[] = sprintf( - 'ALTER TABLE %s RENAME TO %s', - $tableNameSQL, - $newName->getQuotedName($this), - ); - } - - $sql = array_merge( - $this->getPreAlterTableIndexForeignKeySQL($diff), - $sql, - $this->getPostAlterTableIndexForeignKeySQL($diff), - ); - } - - return array_merge($sql, $tableSql, $columnSql); - } - - /** - * Checks whether a given column diff is a logically unchanged binary type column. - * - * Used to determine whether a column alteration for a binary type column can be skipped. - * Doctrine's {@see BinaryType} and {@see BlobType} are mapped to the same database column type on this platform - * as this platform does not have a native VARBINARY/BINARY column type. Therefore the comparator - * might detect differences for binary type columns which do not have to be propagated - * to database as there actually is no difference at database level. - */ - private function isUnchangedBinaryColumn(ColumnDiff $columnDiff): bool - { - $newColumnType = $columnDiff->getNewColumn()->getType(); - - if (! $newColumnType instanceof BinaryType && ! $newColumnType instanceof BlobType) { - return false; - } - - $oldColumn = $columnDiff->getOldColumn() instanceof Column ? $columnDiff->getOldColumn() : null; - - if ($oldColumn !== null) { - $oldColumnType = $oldColumn->getType(); - - if (! $oldColumnType instanceof BinaryType && ! $oldColumnType instanceof BlobType) { - return false; - } - - return count(array_diff($columnDiff->changedProperties, ['type', 'length', 'fixed'])) === 0; - } - - if ($columnDiff->hasTypeChanged()) { - return false; - } - - return count(array_diff($columnDiff->changedProperties, ['length', 'fixed'])) === 0; - } - - /** - * {@inheritDoc} - */ - protected function getRenameIndexSQL($oldIndexName, Index $index, $tableName) - { - if (strpos($tableName, '.') !== false) { - [$schema] = explode('.', $tableName); - $oldIndexName = $schema . '.' . $oldIndexName; - } - - return ['ALTER INDEX ' . $oldIndexName . ' RENAME TO ' . $index->getQuotedName($this)]; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function getCommentOnColumnSQL($tableName, $columnName, $comment) - { - $tableName = new Identifier($tableName); - $columnName = new Identifier($columnName); - $comment = $comment === null ? 'NULL' : $this->quoteStringLiteral($comment); - - return sprintf( - 'COMMENT ON COLUMN %s.%s IS %s', - $tableName->getQuotedName($this), - $columnName->getQuotedName($this), - $comment, - ); - } - - /** - * {@inheritDoc} - */ - public function getCreateSequenceSQL(Sequence $sequence) - { - return 'CREATE SEQUENCE ' . $sequence->getQuotedName($this) . - ' INCREMENT BY ' . $sequence->getAllocationSize() . - ' MINVALUE ' . $sequence->getInitialValue() . - ' START ' . $sequence->getInitialValue() . - $this->getSequenceCacheSQL($sequence); - } - - /** - * {@inheritDoc} - */ - public function getAlterSequenceSQL(Sequence $sequence) - { - return 'ALTER SEQUENCE ' . $sequence->getQuotedName($this) . - ' INCREMENT BY ' . $sequence->getAllocationSize() . - $this->getSequenceCacheSQL($sequence); - } - - /** - * Cache definition for sequences - */ - private function getSequenceCacheSQL(Sequence $sequence): string - { - if ($sequence->getCache() > 1) { - return ' CACHE ' . $sequence->getCache(); - } - - return ''; - } - - /** - * {@inheritDoc} - */ - public function getDropSequenceSQL($sequence) - { - return parent::getDropSequenceSQL($sequence) . ' CASCADE'; - } - - /** - * {@inheritDoc} - */ - public function getDropForeignKeySQL($foreignKey, $table) - { - return $this->getDropConstraintSQL($foreignKey, $table); - } - - /** - * {@inheritDoc} - */ - public function getDropIndexSQL($index, $table = null) - { - if ($index instanceof Index && $index->isPrimary() && $table !== null) { - $constraintName = $index->getName() === 'primary' ? $this->tableName($table) . '_pkey' : $index->getName(); - - return $this->getDropConstraintSQL($constraintName, $table); - } - - if ($index === '"primary"' && $table !== null) { - $constraintName = $this->tableName($table) . '_pkey'; - - return $this->getDropConstraintSQL($constraintName, $table); - } - - return parent::getDropIndexSQL($index, $table); - } - - /** - * @param Table|string|null $table - * - * @return string - */ - private function tableName($table) - { - return $table instanceof Table ? $table->getName() : (string) $table; - } - - /** - * {@inheritDoc} - */ - protected function _getCreateTableSQL($name, array $columns, array $options = []) - { - $queryFields = $this->getColumnDeclarationListSQL($columns); - - if (isset($options['primary']) && ! empty($options['primary'])) { - $keyColumns = array_unique(array_values($options['primary'])); - $queryFields .= ', PRIMARY KEY(' . implode(', ', $keyColumns) . ')'; - } - - $unlogged = isset($options['unlogged']) && $options['unlogged'] === true ? ' UNLOGGED' : ''; - - $query = 'CREATE' . $unlogged . ' TABLE ' . $name . ' (' . $queryFields . ')'; - - $sql = [$query]; - - if (isset($options['indexes']) && ! empty($options['indexes'])) { - foreach ($options['indexes'] as $index) { - $sql[] = $this->getCreateIndexSQL($index, $name); - } - } - - if (isset($options['uniqueConstraints'])) { - foreach ($options['uniqueConstraints'] as $uniqueConstraint) { - $sql[] = $this->getCreateConstraintSQL($uniqueConstraint, $name); - } - } - - if (isset($options['foreignKeys'])) { - foreach ($options['foreignKeys'] as $definition) { - $sql[] = $this->getCreateForeignKeySQL($definition, $name); - } - } - - return $sql; - } - - /** - * Converts a single boolean value. - * - * First converts the value to its native PHP boolean type - * and passes it to the given callback function to be reconverted - * into any custom representation. - * - * @param mixed $value The value to convert. - * @param callable $callback The callback function to use for converting the real boolean value. - * - * @return mixed - * - * @throws UnexpectedValueException - */ - private function convertSingleBooleanValue($value, $callback) - { - if ($value === null) { - return $callback(null); - } - - if (is_bool($value) || is_numeric($value)) { - return $callback((bool) $value); - } - - if (! is_string($value)) { - return $callback(true); - } - - /** - * Better safe than sorry: http://php.net/in_array#106319 - */ - if (in_array(strtolower(trim($value)), $this->booleanLiterals['false'], true)) { - return $callback(false); - } - - if (in_array(strtolower(trim($value)), $this->booleanLiterals['true'], true)) { - return $callback(true); - } - - throw new UnexpectedValueException(sprintf("Unrecognized boolean literal '%s'", $value)); - } - - /** - * Converts one or multiple boolean values. - * - * First converts the value(s) to their native PHP boolean type - * and passes them to the given callback function to be reconverted - * into any custom representation. - * - * @param mixed $item The value(s) to convert. - * @param callable $callback The callback function to use for converting the real boolean value(s). - * - * @return mixed - */ - private function doConvertBooleans($item, $callback) - { - if (is_array($item)) { - foreach ($item as $key => $value) { - $item[$key] = $this->convertSingleBooleanValue($value, $callback); - } - - return $item; - } - - return $this->convertSingleBooleanValue($item, $callback); - } - - /** - * {@inheritDoc} - * - * Postgres wants boolean values converted to the strings 'true'/'false'. - */ - public function convertBooleans($item) - { - if (! $this->useBooleanTrueFalseStrings) { - return parent::convertBooleans($item); - } - - return $this->doConvertBooleans( - $item, - /** @param mixed $value */ - static function ($value) { - if ($value === null) { - return 'NULL'; - } - - return $value === true ? 'true' : 'false'; - }, - ); - } - - /** - * {@inheritDoc} - */ - public function convertBooleansToDatabaseValue($item) - { - if (! $this->useBooleanTrueFalseStrings) { - return parent::convertBooleansToDatabaseValue($item); - } - - return $this->doConvertBooleans( - $item, - /** @param mixed $value */ - static function ($value): ?int { - return $value === null ? null : (int) $value; - }, - ); - } - - /** - * {@inheritDoc} - * - * @param T $item - * - * @return (T is null ? null : bool) - * - * @template T - */ - public function convertFromBoolean($item) - { - if ($item !== null && in_array(strtolower($item), $this->booleanLiterals['false'], true)) { - return false; - } - - return parent::convertFromBoolean($item); - } - - /** - * {@inheritDoc} - */ - public function getSequenceNextValSQL($sequence) - { - return "SELECT NEXTVAL('" . $sequence . "')"; - } - - /** - * {@inheritDoc} - */ - public function getSetTransactionIsolationSQL($level) - { - return 'SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL ' - . $this->_getTransactionIsolationLevelSQL($level); - } - - /** - * {@inheritDoc} - */ - public function getBooleanTypeDeclarationSQL(array $column) - { - return 'BOOLEAN'; - } - - /** - * {@inheritDoc} - */ - public function getIntegerTypeDeclarationSQL(array $column) - { - if (! empty($column['autoincrement'])) { - return 'SERIAL'; - } - - return 'INT'; - } - - /** - * {@inheritDoc} - */ - public function getBigIntTypeDeclarationSQL(array $column) - { - if (! empty($column['autoincrement'])) { - return 'BIGSERIAL'; - } - - return 'BIGINT'; - } - - /** - * {@inheritDoc} - */ - public function getSmallIntTypeDeclarationSQL(array $column) - { - if (! empty($column['autoincrement'])) { - return 'SMALLSERIAL'; - } - - return 'SMALLINT'; - } - - /** - * {@inheritDoc} - */ - public function getGuidTypeDeclarationSQL(array $column) - { - return 'UUID'; - } - - /** - * {@inheritDoc} - */ - public function getDateTimeTypeDeclarationSQL(array $column) - { - return 'TIMESTAMP(0) WITHOUT TIME ZONE'; - } - - /** - * {@inheritDoc} - */ - public function getDateTimeTzTypeDeclarationSQL(array $column) - { - return 'TIMESTAMP(0) WITH TIME ZONE'; - } - - /** - * {@inheritDoc} - */ - public function getDateTypeDeclarationSQL(array $column) - { - return 'DATE'; - } - - /** - * {@inheritDoc} - */ - public function getTimeTypeDeclarationSQL(array $column) - { - return 'TIME(0) WITHOUT TIME ZONE'; - } - - /** - * {@inheritDoc} - */ - protected function _getCommonIntegerTypeDeclarationSQL(array $column) - { - return ''; - } - - /** - * {@inheritDoc} - */ - protected function getVarcharTypeDeclarationSQLSnippet($length, $fixed) - { - return $fixed ? ($length > 0 ? 'CHAR(' . $length . ')' : 'CHAR(255)') - : ($length > 0 ? 'VARCHAR(' . $length . ')' : 'VARCHAR(255)'); - } - - /** - * {@inheritDoc} - */ - protected function getBinaryTypeDeclarationSQLSnippet($length, $fixed) - { - return 'BYTEA'; - } - - /** - * {@inheritDoc} - */ - public function getClobTypeDeclarationSQL(array $column) - { - return 'TEXT'; - } - - /** - * {@inheritDoc} - */ - public function getName() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4749', - 'PostgreSQLPlatform::getName() is deprecated. Identify platforms by their class.', - ); - - return 'postgresql'; - } - - /** - * {@inheritDoc} - */ - public function getDateTimeTzFormatString() - { - return 'Y-m-d H:i:sO'; - } - - /** - * {@inheritDoc} - */ - public function getEmptyIdentityInsertSQL($quotedTableName, $quotedIdentifierColumnName) - { - return 'INSERT INTO ' . $quotedTableName . ' (' . $quotedIdentifierColumnName . ') VALUES (DEFAULT)'; - } - - /** - * {@inheritDoc} - */ - public function getTruncateTableSQL($tableName, $cascade = false) - { - $tableIdentifier = new Identifier($tableName); - $sql = 'TRUNCATE ' . $tableIdentifier->getQuotedName($this); - - if ($cascade) { - $sql .= ' CASCADE'; - } - - return $sql; - } - - /** - * Get the snippet used to retrieve the default value for a given column - */ - public function getDefaultColumnValueSQLSnippet(): string - { - return <<<'SQL' - SELECT pg_get_expr(adbin, adrelid) - FROM pg_attrdef - WHERE c.oid = pg_attrdef.adrelid - AND pg_attrdef.adnum=a.attnum - SQL; - } - - /** - * {@inheritDoc} - */ - public function getReadLockSQL() - { - return 'FOR SHARE'; - } - - /** - * {@inheritDoc} - */ - protected function initializeDoctrineTypeMappings() - { - $this->doctrineTypeMapping = [ - 'bigint' => Types::BIGINT, - 'bigserial' => Types::BIGINT, - 'bool' => Types::BOOLEAN, - 'boolean' => Types::BOOLEAN, - 'bpchar' => Types::STRING, - 'bytea' => Types::BLOB, - 'char' => Types::STRING, - 'date' => Types::DATE_MUTABLE, - 'datetime' => Types::DATETIME_MUTABLE, - 'decimal' => Types::DECIMAL, - 'double' => Types::FLOAT, - 'double precision' => Types::FLOAT, - 'float' => Types::FLOAT, - 'float4' => Types::FLOAT, - 'float8' => Types::FLOAT, - 'inet' => Types::STRING, - 'int' => Types::INTEGER, - 'int2' => Types::SMALLINT, - 'int4' => Types::INTEGER, - 'int8' => Types::BIGINT, - 'integer' => Types::INTEGER, - 'interval' => Types::STRING, - 'json' => Types::JSON, - 'jsonb' => Types::JSON, - 'money' => Types::DECIMAL, - 'numeric' => Types::DECIMAL, - 'serial' => Types::INTEGER, - 'serial4' => Types::INTEGER, - 'serial8' => Types::BIGINT, - 'real' => Types::FLOAT, - 'smallint' => Types::SMALLINT, - 'text' => Types::TEXT, - 'time' => Types::TIME_MUTABLE, - 'timestamp' => Types::DATETIME_MUTABLE, - 'timestamptz' => Types::DATETIMETZ_MUTABLE, - 'timetz' => Types::TIME_MUTABLE, - 'tsvector' => Types::TEXT, - 'uuid' => Types::GUID, - 'varchar' => Types::STRING, - 'year' => Types::DATE_MUTABLE, - '_varchar' => Types::STRING, - ]; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function getVarcharMaxLength() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'PostgreSQLPlatform::getVarcharMaxLength() is deprecated.', - ); - - return 65535; - } - - /** - * {@inheritDoc} - */ - public function getBinaryMaxLength() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'PostgreSQLPlatform::getBinaryMaxLength() is deprecated.', - ); - - return 0; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function getBinaryDefaultLength() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'Relying on the default binary column length is deprecated, specify the length explicitly.', - ); - - return 0; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function hasNativeJsonType() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5509', - '%s is deprecated.', - __METHOD__, - ); - - return true; - } - - /** - * {@inheritDoc} - * - * @deprecated Implement {@see createReservedKeywordsList()} instead. - */ - protected function getReservedKeywordsClass() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4510', - 'PostgreSQLPlatform::getReservedKeywordsClass() is deprecated,' - . ' use PostgreSQLPlatform::createReservedKeywordsList() instead.', - ); - - return Keywords\PostgreSQL94Keywords::class; - } - - /** - * {@inheritDoc} - */ - public function getBlobTypeDeclarationSQL(array $column) - { - return 'BYTEA'; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function getDefaultValueDeclarationSQL($column) - { - if (isset($column['autoincrement']) && $column['autoincrement'] === true) { - return ''; - } - - return parent::getDefaultValueDeclarationSQL($column); - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function supportsColumnCollation() - { - return true; - } - - /** - * {@inheritDoc} - */ - public function getJsonTypeDeclarationSQL(array $column) - { - if (! empty($column['jsonb'])) { - return 'JSONB'; - } - - return 'JSON'; - } - - private function getOldColumnComment(ColumnDiff $columnDiff): ?string - { - $oldColumn = $columnDiff->getOldColumn(); - - if ($oldColumn !== null) { - return $this->getColumnComment($oldColumn); - } - - return null; - } - - /** @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. */ - public function getListTableMetadataSQL(string $table, ?string $schema = null): string - { - if ($schema !== null) { - $table = $schema . '.' . $table; - } - - return sprintf( - <<<'SQL' -SELECT obj_description(%s::regclass) AS table_comment; -SQL - , - $this->quoteStringLiteral($table), - ); - } - - public function createSchemaManager(Connection $connection): PostgreSQLSchemaManager - { - return new PostgreSQLSchemaManager($connection, $this); - } -} diff --git a/docker/streamline-src/vendor/doctrine/dbal/src/Platforms/SQLServerPlatform.php b/docker/streamline-src/vendor/doctrine/dbal/src/Platforms/SQLServerPlatform.php deleted file mode 100644 index 16d7bd4e..00000000 --- a/docker/streamline-src/vendor/doctrine/dbal/src/Platforms/SQLServerPlatform.php +++ /dev/null @@ -1,1841 +0,0 @@ -getConvertExpression('date', 'GETDATE()'); - } - - /** - * {@inheritDoc} - */ - public function getCurrentTimeSQL() - { - return $this->getConvertExpression('time', 'GETDATE()'); - } - - /** - * Returns an expression that converts an expression of one data type to another. - * - * @param string $dataType The target native data type. Alias data types cannot be used. - * @param string $expression The SQL expression to convert. - */ - private function getConvertExpression($dataType, $expression): string - { - return sprintf('CONVERT(%s, %s)', $dataType, $expression); - } - - /** - * {@inheritDoc} - */ - protected function getDateArithmeticIntervalExpression($date, $operator, $interval, $unit) - { - $factorClause = ''; - - if ($operator === '-') { - $factorClause = '-1 * '; - } - - return 'DATEADD(' . $unit . ', ' . $factorClause . $interval . ', ' . $date . ')'; - } - - /** - * {@inheritDoc} - */ - public function getDateDiffExpression($date1, $date2) - { - return 'DATEDIFF(day, ' . $date2 . ',' . $date1 . ')'; - } - - /** - * {@inheritDoc} - * - * Microsoft SQL Server prefers "autoincrement" identity columns - * since sequences can only be emulated with a table. - * - * @deprecated - */ - public function prefersIdentityColumns() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/1519', - 'SQLServerPlatform::prefersIdentityColumns() is deprecated.', - ); - - return true; - } - - /** - * {@inheritDoc} - * - * Microsoft SQL Server supports this through AUTO_INCREMENT columns. - */ - public function supportsIdentityColumns() - { - return true; - } - - /** - * {@inheritDoc} - */ - public function supportsReleaseSavepoints() - { - return false; - } - - /** - * {@inheritDoc} - */ - public function supportsSchemas() - { - return true; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function getDefaultSchemaName() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5513', - '%s is deprecated.', - __METHOD__, - ); - - return 'dbo'; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function supportsColumnCollation() - { - return true; - } - - public function supportsSequences(): bool - { - return true; - } - - public function getAlterSequenceSQL(Sequence $sequence): string - { - return 'ALTER SEQUENCE ' . $sequence->getQuotedName($this) . - ' INCREMENT BY ' . $sequence->getAllocationSize(); - } - - public function getCreateSequenceSQL(Sequence $sequence): string - { - return 'CREATE SEQUENCE ' . $sequence->getQuotedName($this) . - ' START WITH ' . $sequence->getInitialValue() . - ' INCREMENT BY ' . $sequence->getAllocationSize() . - ' MINVALUE ' . $sequence->getInitialValue(); - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractSchemaManager} class hierarchy. - */ - public function getListSequencesSQL($database) - { - return 'SELECT seq.name, - CAST( - seq.increment AS VARCHAR(MAX) - ) AS increment, -- CAST avoids driver error for sql_variant type - CAST( - seq.start_value AS VARCHAR(MAX) - ) AS start_value -- CAST avoids driver error for sql_variant type - FROM sys.sequences AS seq'; - } - - /** - * {@inheritDoc} - */ - public function getSequenceNextValSQL($sequence) - { - return 'SELECT NEXT VALUE FOR ' . $sequence; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function hasNativeGuidType() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5509', - '%s is deprecated.', - __METHOD__, - ); - - return true; - } - - /** - * {@inheritDoc} - */ - public function getDropForeignKeySQL($foreignKey, $table) - { - if (! $foreignKey instanceof ForeignKeyConstraint) { - $foreignKey = new Identifier($foreignKey); - } - - if (! $table instanceof Table) { - $table = new Identifier($table); - } - - $foreignKey = $foreignKey->getQuotedName($this); - $table = $table->getQuotedName($this); - - return 'ALTER TABLE ' . $table . ' DROP CONSTRAINT ' . $foreignKey; - } - - /** - * {@inheritDoc} - */ - public function getDropIndexSQL($index, $table = null) - { - if ($index instanceof Index) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $index as an Index object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $index = $index->getQuotedName($this); - } elseif (! is_string($index)) { - throw new InvalidArgumentException( - __METHOD__ . '() expects $index parameter to be string or ' . Index::class . '.', - ); - } - - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as an Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $table = $table->getQuotedName($this); - } elseif (! is_string($table)) { - throw new InvalidArgumentException( - __METHOD__ . '() expects $table parameter to be string or ' . Table::class . '.', - ); - } - - return 'DROP INDEX ' . $index . ' ON ' . $table; - } - - /** - * {@inheritDoc} - */ - protected function _getCreateTableSQL($name, array $columns, array $options = []) - { - $defaultConstraintsSql = []; - $commentsSql = []; - - $tableComment = $options['comment'] ?? null; - if ($tableComment !== null) { - $commentsSql[] = $this->getCommentOnTableSQL($name, $tableComment); - } - - // @todo does other code breaks because of this? - // force primary keys to be not null - foreach ($columns as &$column) { - if (! empty($column['primary'])) { - $column['notnull'] = true; - } - - // Build default constraints SQL statements. - if (isset($column['default'])) { - $defaultConstraintsSql[] = 'ALTER TABLE ' . $name . - ' ADD' . $this->getDefaultConstraintDeclarationSQL($name, $column); - } - - if (empty($column['comment']) && ! is_numeric($column['comment'])) { - continue; - } - - $commentsSql[] = $this->getCreateColumnCommentSQL($name, $column['name'], $column['comment']); - } - - $columnListSql = $this->getColumnDeclarationListSQL($columns); - - if (isset($options['uniqueConstraints']) && ! empty($options['uniqueConstraints'])) { - foreach ($options['uniqueConstraints'] as $constraintName => $definition) { - $columnListSql .= ', ' . $this->getUniqueConstraintDeclarationSQL($constraintName, $definition); - } - } - - if (isset($options['primary']) && ! empty($options['primary'])) { - $flags = ''; - if (isset($options['primary_index']) && $options['primary_index']->hasFlag('nonclustered')) { - $flags = ' NONCLUSTERED'; - } - - $columnListSql .= ', PRIMARY KEY' . $flags - . ' (' . implode(', ', array_unique(array_values($options['primary']))) . ')'; - } - - $query = 'CREATE TABLE ' . $name . ' (' . $columnListSql; - - $check = $this->getCheckDeclarationSQL($columns); - if (! empty($check)) { - $query .= ', ' . $check; - } - - $query .= ')'; - - $sql = [$query]; - - if (isset($options['indexes']) && ! empty($options['indexes'])) { - foreach ($options['indexes'] as $index) { - $sql[] = $this->getCreateIndexSQL($index, $name); - } - } - - if (isset($options['foreignKeys'])) { - foreach ($options['foreignKeys'] as $definition) { - $sql[] = $this->getCreateForeignKeySQL($definition, $name); - } - } - - return array_merge($sql, $commentsSql, $defaultConstraintsSql); - } - - /** - * {@inheritDoc} - */ - public function getCreatePrimaryKeySQL(Index $index, $table) - { - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as a Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $identifier = $table->getQuotedName($this); - } else { - $identifier = $table; - } - - $sql = 'ALTER TABLE ' . $identifier . ' ADD PRIMARY KEY'; - - if ($index->hasFlag('nonclustered')) { - $sql .= ' NONCLUSTERED'; - } - - return $sql . ' (' . $this->getIndexFieldDeclarationListSQL($index) . ')'; - } - - private function unquoteSingleIdentifier(string $possiblyQuotedName): string - { - return str_starts_with($possiblyQuotedName, '[') && str_ends_with($possiblyQuotedName, ']') - ? substr($possiblyQuotedName, 1, -1) - : $possiblyQuotedName; - } - - /** - * Returns the SQL statement for creating a column comment. - * - * SQL Server does not support native column comments, - * therefore the extended properties functionality is used - * as a workaround to store them. - * The property name used to store column comments is "MS_Description" - * which provides compatibility with SQL Server Management Studio, - * as column comments are stored in the same property there when - * specifying a column's "Description" attribute. - * - * @param string $tableName The quoted table name to which the column belongs. - * @param string $columnName The quoted column name to create the comment for. - * @param string|null $comment The column's comment. - * - * @return string - */ - protected function getCreateColumnCommentSQL($tableName, $columnName, $comment) - { - if (strpos($tableName, '.') !== false) { - [$schemaName, $tableName] = explode('.', $tableName); - } else { - $schemaName = 'dbo'; - } - - return $this->getAddExtendedPropertySQL( - 'MS_Description', - $comment, - 'SCHEMA', - $this->quoteStringLiteral($this->unquoteSingleIdentifier($schemaName)), - 'TABLE', - $this->quoteStringLiteral($this->unquoteSingleIdentifier($tableName)), - 'COLUMN', - $this->quoteStringLiteral($this->unquoteSingleIdentifier($columnName)), - ); - } - - /** - * Returns the SQL snippet for declaring a default constraint. - * - * @internal The method should be only used from within the SQLServerPlatform class hierarchy. - * - * @param string $table Name of the table to return the default constraint declaration for. - * @param mixed[] $column Column definition. - * - * @return string - * - * @throws InvalidArgumentException - */ - public function getDefaultConstraintDeclarationSQL($table, array $column) - { - if (! isset($column['default'])) { - throw new InvalidArgumentException("Incomplete column definition. 'default' required."); - } - - $columnName = new Identifier($column['name']); - - return ' CONSTRAINT ' . - $this->generateDefaultConstraintName($table, $column['name']) . - $this->getDefaultValueDeclarationSQL($column) . - ' FOR ' . $columnName->getQuotedName($this); - } - - /** - * {@inheritDoc} - */ - public function getCreateIndexSQL(Index $index, $table) - { - $constraint = parent::getCreateIndexSQL($index, $table); - - if ($index->isUnique() && ! $index->isPrimary()) { - $constraint = $this->_appendUniqueConstraintDefinition($constraint, $index); - } - - return $constraint; - } - - /** - * {@inheritDoc} - */ - protected function getCreateIndexSQLFlags(Index $index) - { - $type = ''; - if ($index->isUnique()) { - $type .= 'UNIQUE '; - } - - if ($index->hasFlag('clustered')) { - $type .= 'CLUSTERED '; - } elseif ($index->hasFlag('nonclustered')) { - $type .= 'NONCLUSTERED '; - } - - return $type; - } - - /** - * Extend unique key constraint with required filters - * - * @param string $sql - */ - private function _appendUniqueConstraintDefinition($sql, Index $index): string - { - $fields = []; - - foreach ($index->getQuotedColumns($this) as $field) { - $fields[] = $field . ' IS NOT NULL'; - } - - return $sql . ' WHERE ' . implode(' AND ', $fields); - } - - /** - * {@inheritDoc} - */ - public function getAlterTableSQL(TableDiff $diff) - { - $queryParts = []; - $sql = []; - $columnSql = []; - $commentsSql = []; - - $table = $diff->getOldTable() ?? $diff->getName($this); - - $tableName = $table->getName(); - - foreach ($diff->getAddedColumns() as $column) { - if ($this->onSchemaAlterTableAddColumn($column, $diff, $columnSql)) { - continue; - } - - $columnProperties = $column->toArray(); - - $addColumnSql = 'ADD ' . $this->getColumnDeclarationSQL($column->getQuotedName($this), $columnProperties); - - if (isset($columnProperties['default'])) { - $addColumnSql .= ' CONSTRAINT ' . $this->generateDefaultConstraintName( - $tableName, - $column->getQuotedName($this), - ) . $this->getDefaultValueDeclarationSQL($columnProperties); - } - - $queryParts[] = $addColumnSql; - - $comment = $this->getColumnComment($column); - - if (empty($comment) && ! is_numeric($comment)) { - continue; - } - - $commentsSql[] = $this->getCreateColumnCommentSQL( - $tableName, - $column->getQuotedName($this), - $comment, - ); - } - - foreach ($diff->getDroppedColumns() as $column) { - if ($this->onSchemaAlterTableRemoveColumn($column, $diff, $columnSql)) { - continue; - } - - $queryParts[] = 'DROP COLUMN ' . $column->getQuotedName($this); - } - - foreach ($diff->getModifiedColumns() as $columnDiff) { - if ($this->onSchemaAlterTableChangeColumn($columnDiff, $diff, $columnSql)) { - continue; - } - - $newColumn = $columnDiff->getNewColumn(); - $newComment = $this->getColumnComment($newColumn); - $hasNewComment = ! empty($newComment) || is_numeric($newComment); - - $oldColumn = $columnDiff->getOldColumn(); - - if ($oldColumn instanceof Column) { - $oldComment = $this->getColumnComment($oldColumn); - $hasOldComment = ! empty($oldComment) || is_numeric($oldComment); - - if ($hasOldComment && $hasNewComment && $oldComment !== $newComment) { - $commentsSql[] = $this->getAlterColumnCommentSQL( - $tableName, - $newColumn->getQuotedName($this), - $newComment, - ); - } elseif ($hasOldComment && ! $hasNewComment) { - $commentsSql[] = $this->getDropColumnCommentSQL( - $tableName, - $newColumn->getQuotedName($this), - ); - } elseif (! $hasOldComment && $hasNewComment) { - $commentsSql[] = $this->getCreateColumnCommentSQL( - $tableName, - $newColumn->getQuotedName($this), - $newComment, - ); - } - } - - // Do not add query part if only comment has changed. - if ($columnDiff->hasCommentChanged() && count($columnDiff->changedProperties) === 1) { - continue; - } - - $requireDropDefaultConstraint = $this->alterColumnRequiresDropDefaultConstraint($columnDiff); - - if ($requireDropDefaultConstraint) { - $oldColumn = $columnDiff->getOldColumn(); - - if ($oldColumn !== null) { - $oldColumnName = $oldColumn->getName(); - } else { - $oldColumnName = $columnDiff->oldColumnName; - } - - $queryParts[] = $this->getAlterTableDropDefaultConstraintClause($tableName, $oldColumnName); - } - - $columnProperties = $newColumn->toArray(); - - $queryParts[] = 'ALTER COLUMN ' . - $this->getColumnDeclarationSQL($newColumn->getQuotedName($this), $columnProperties); - - if ( - ! isset($columnProperties['default']) - || (! $requireDropDefaultConstraint && ! $columnDiff->hasDefaultChanged()) - ) { - continue; - } - - $queryParts[] = $this->getAlterTableAddDefaultConstraintClause($tableName, $newColumn); - } - - $tableNameSQL = $table->getQuotedName($this); - - foreach ($diff->getRenamedColumns() as $oldColumnName => $newColumn) { - if ($this->onSchemaAlterTableRenameColumn($oldColumnName, $newColumn, $diff, $columnSql)) { - continue; - } - - $oldColumnName = new Identifier($oldColumnName); - - $sql[] = "sp_rename '" . $tableNameSQL . '.' . $oldColumnName->getQuotedName($this) . - "', '" . $newColumn->getQuotedName($this) . "', 'COLUMN'"; - - // Recreate default constraint with new column name if necessary (for future reference). - if ($newColumn->getDefault() === null) { - continue; - } - - $queryParts[] = $this->getAlterTableDropDefaultConstraintClause( - $tableName, - $oldColumnName->getQuotedName($this), - ); - $queryParts[] = $this->getAlterTableAddDefaultConstraintClause($tableName, $newColumn); - } - - $tableSql = []; - - if ($this->onSchemaAlterTable($diff, $tableSql)) { - return array_merge($tableSql, $columnSql); - } - - foreach ($queryParts as $query) { - $sql[] = 'ALTER TABLE ' . $tableNameSQL . ' ' . $query; - } - - $sql = array_merge($sql, $commentsSql); - - $newName = $diff->getNewName(); - - if ($newName !== false) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5663', - 'Generation of "rename table" SQL using %s is deprecated. Use getRenameTableSQL() instead.', - __METHOD__, - ); - - $sql = array_merge($sql, $this->getRenameTableSQL($tableName, $newName->getName())); - } - - $sql = array_merge( - $this->getPreAlterTableIndexForeignKeySQL($diff), - $sql, - $this->getPostAlterTableIndexForeignKeySQL($diff), - ); - - return array_merge($sql, $tableSql, $columnSql); - } - - /** - * {@inheritDoc} - */ - public function getRenameTableSQL(string $oldName, string $newName): array - { - return [ - sprintf('sp_rename %s, %s', $this->quoteStringLiteral($oldName), $this->quoteStringLiteral($newName)), - - /* Rename table's default constraints names - * to match the new table name. - * This is necessary to ensure that the default - * constraints can be referenced in future table - * alterations as the table name is encoded in - * default constraints' names. */ - sprintf( - <<<'SQL' - DECLARE @sql NVARCHAR(MAX) = N''; - SELECT @sql += N'EXEC sp_rename N''' + dc.name + ''', N''' - + REPLACE(dc.name, '%s', '%s') + ''', ''OBJECT'';' - FROM sys.default_constraints dc - JOIN sys.tables tbl - ON dc.parent_object_id = tbl.object_id - WHERE tbl.name = %s; - EXEC sp_executesql @sql - SQL, - $this->generateIdentifierName($oldName), - $this->generateIdentifierName($newName), - $this->quoteStringLiteral($newName), - ), - ]; - } - - /** - * Returns the SQL clause for adding a default constraint in an ALTER TABLE statement. - * - * @param string $tableName The name of the table to generate the clause for. - * @param Column $column The column to generate the clause for. - */ - private function getAlterTableAddDefaultConstraintClause($tableName, Column $column): string - { - $columnDef = $column->toArray(); - $columnDef['name'] = $column->getQuotedName($this); - - return 'ADD' . $this->getDefaultConstraintDeclarationSQL($tableName, $columnDef); - } - - /** - * Returns the SQL clause for dropping an existing default constraint in an ALTER TABLE statement. - * - * @param string $tableName The name of the table to generate the clause for. - * @param string $columnName The name of the column to generate the clause for. - */ - private function getAlterTableDropDefaultConstraintClause($tableName, $columnName): string - { - return 'DROP CONSTRAINT ' . $this->generateDefaultConstraintName($tableName, $columnName); - } - - /** - * Checks whether a column alteration requires dropping its default constraint first. - * - * Different to other database vendors SQL Server implements column default values - * as constraints and therefore changes in a column's default value as well as changes - * in a column's type require dropping the default constraint first before being to - * alter the particular column to the new definition. - */ - private function alterColumnRequiresDropDefaultConstraint(ColumnDiff $columnDiff): bool - { - $oldColumn = $columnDiff->getOldColumn(); - - // We can only decide whether to drop an existing default constraint - // if we know the original default value. - if (! $oldColumn instanceof Column) { - return false; - } - - // We only need to drop an existing default constraint if we know the - // column was defined with a default value before. - if ($oldColumn->getDefault() === null) { - return false; - } - - // We need to drop an existing default constraint if the column was - // defined with a default value before and it has changed. - if ($columnDiff->hasDefaultChanged()) { - return true; - } - - // We need to drop an existing default constraint if the column was - // defined with a default value before and the native column type has changed. - return $columnDiff->hasTypeChanged() || $columnDiff->hasFixedChanged(); - } - - /** - * Returns the SQL statement for altering a column comment. - * - * SQL Server does not support native column comments, - * therefore the extended properties functionality is used - * as a workaround to store them. - * The property name used to store column comments is "MS_Description" - * which provides compatibility with SQL Server Management Studio, - * as column comments are stored in the same property there when - * specifying a column's "Description" attribute. - * - * @param string $tableName The quoted table name to which the column belongs. - * @param string $columnName The quoted column name to alter the comment for. - * @param string|null $comment The column's comment. - * - * @return string - */ - protected function getAlterColumnCommentSQL($tableName, $columnName, $comment) - { - if (strpos($tableName, '.') !== false) { - [$schemaName, $tableName] = explode('.', $tableName); - } else { - $schemaName = 'dbo'; - } - - return $this->getUpdateExtendedPropertySQL( - 'MS_Description', - $comment, - 'SCHEMA', - $this->quoteStringLiteral($this->unquoteSingleIdentifier($schemaName)), - 'TABLE', - $this->quoteStringLiteral($this->unquoteSingleIdentifier($tableName)), - 'COLUMN', - $this->quoteStringLiteral($this->unquoteSingleIdentifier($columnName)), - ); - } - - /** - * Returns the SQL statement for dropping a column comment. - * - * SQL Server does not support native column comments, - * therefore the extended properties functionality is used - * as a workaround to store them. - * The property name used to store column comments is "MS_Description" - * which provides compatibility with SQL Server Management Studio, - * as column comments are stored in the same property there when - * specifying a column's "Description" attribute. - * - * @param string $tableName The quoted table name to which the column belongs. - * @param string $columnName The quoted column name to drop the comment for. - * - * @return string - */ - protected function getDropColumnCommentSQL($tableName, $columnName) - { - if (strpos($tableName, '.') !== false) { - [$schemaName, $tableName] = explode('.', $tableName); - } else { - $schemaName = 'dbo'; - } - - return $this->getDropExtendedPropertySQL( - 'MS_Description', - 'SCHEMA', - $this->quoteStringLiteral($this->unquoteSingleIdentifier($schemaName)), - 'TABLE', - $this->quoteStringLiteral($this->unquoteSingleIdentifier($tableName)), - 'COLUMN', - $this->quoteStringLiteral($this->unquoteSingleIdentifier($columnName)), - ); - } - - /** - * {@inheritDoc} - */ - protected function getRenameIndexSQL($oldIndexName, Index $index, $tableName) - { - return [sprintf( - "EXEC sp_rename N'%s.%s', N'%s', N'INDEX'", - $tableName, - $oldIndexName, - $index->getQuotedName($this), - ), - ]; - } - - /** - * Returns the SQL statement for adding an extended property to a database object. - * - * @internal The method should be only used from within the SQLServerPlatform class hierarchy. - * - * @link http://msdn.microsoft.com/en-us/library/ms180047%28v=sql.90%29.aspx - * - * @param string $name The name of the property to add. - * @param string|null $value The value of the property to add. - * @param string|null $level0Type The type of the object at level 0 the property belongs to. - * @param string|null $level0Name The name of the object at level 0 the property belongs to. - * @param string|null $level1Type The type of the object at level 1 the property belongs to. - * @param string|null $level1Name The name of the object at level 1 the property belongs to. - * @param string|null $level2Type The type of the object at level 2 the property belongs to. - * @param string|null $level2Name The name of the object at level 2 the property belongs to. - * - * @return string - */ - public function getAddExtendedPropertySQL( - $name, - $value = null, - $level0Type = null, - $level0Name = null, - $level1Type = null, - $level1Name = null, - $level2Type = null, - $level2Name = null - ) { - return 'EXEC sp_addextendedproperty ' . - 'N' . $this->quoteStringLiteral($name) . ', N' . $this->quoteStringLiteral($value ?? '') . ', ' . - 'N' . $this->quoteStringLiteral($level0Type ?? '') . ', ' . $level0Name . ', ' . - 'N' . $this->quoteStringLiteral($level1Type ?? '') . ', ' . $level1Name . - ($level2Type !== null || $level2Name !== null - ? ', N' . $this->quoteStringLiteral($level2Type ?? '') . ', ' . $level2Name - : '' - ); - } - - /** - * Returns the SQL statement for dropping an extended property from a database object. - * - * @internal The method should be only used from within the SQLServerPlatform class hierarchy. - * - * @link http://technet.microsoft.com/en-gb/library/ms178595%28v=sql.90%29.aspx - * - * @param string $name The name of the property to drop. - * @param string|null $level0Type The type of the object at level 0 the property belongs to. - * @param string|null $level0Name The name of the object at level 0 the property belongs to. - * @param string|null $level1Type The type of the object at level 1 the property belongs to. - * @param string|null $level1Name The name of the object at level 1 the property belongs to. - * @param string|null $level2Type The type of the object at level 2 the property belongs to. - * @param string|null $level2Name The name of the object at level 2 the property belongs to. - * - * @return string - */ - public function getDropExtendedPropertySQL( - $name, - $level0Type = null, - $level0Name = null, - $level1Type = null, - $level1Name = null, - $level2Type = null, - $level2Name = null - ) { - return 'EXEC sp_dropextendedproperty ' . - 'N' . $this->quoteStringLiteral($name) . ', ' . - 'N' . $this->quoteStringLiteral($level0Type ?? '') . ', ' . $level0Name . ', ' . - 'N' . $this->quoteStringLiteral($level1Type ?? '') . ', ' . $level1Name . - ($level2Type !== null || $level2Name !== null - ? ', N' . $this->quoteStringLiteral($level2Type ?? '') . ', ' . $level2Name - : '' - ); - } - - /** - * Returns the SQL statement for updating an extended property of a database object. - * - * @internal The method should be only used from within the SQLServerPlatform class hierarchy. - * - * @link http://msdn.microsoft.com/en-us/library/ms186885%28v=sql.90%29.aspx - * - * @param string $name The name of the property to update. - * @param string|null $value The value of the property to update. - * @param string|null $level0Type The type of the object at level 0 the property belongs to. - * @param string|null $level0Name The name of the object at level 0 the property belongs to. - * @param string|null $level1Type The type of the object at level 1 the property belongs to. - * @param string|null $level1Name The name of the object at level 1 the property belongs to. - * @param string|null $level2Type The type of the object at level 2 the property belongs to. - * @param string|null $level2Name The name of the object at level 2 the property belongs to. - * - * @return string - */ - public function getUpdateExtendedPropertySQL( - $name, - $value = null, - $level0Type = null, - $level0Name = null, - $level1Type = null, - $level1Name = null, - $level2Type = null, - $level2Name = null - ) { - return 'EXEC sp_updateextendedproperty ' . - 'N' . $this->quoteStringLiteral($name) . ', N' . $this->quoteStringLiteral($value ?? '') . ', ' . - 'N' . $this->quoteStringLiteral($level0Type ?? '') . ', ' . $level0Name . ', ' . - 'N' . $this->quoteStringLiteral($level1Type ?? '') . ', ' . $level1Name . - ($level2Type !== null || $level2Name !== null - ? ', N' . $this->quoteStringLiteral($level2Type ?? '') . ', ' . $level2Name - : '' - ); - } - - /** - * {@inheritDoc} - */ - public function getEmptyIdentityInsertSQL($quotedTableName, $quotedIdentifierColumnName) - { - return 'INSERT INTO ' . $quotedTableName . ' DEFAULT VALUES'; - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - */ - public function getListTablesSQL() - { - // "sysdiagrams" table must be ignored as it's internal SQL Server table for Database Diagrams - // Category 2 must be ignored as it is "MS SQL Server 'pseudo-system' object[s]" for replication - return 'SELECT name, SCHEMA_NAME (uid) AS schema_name FROM sysobjects' - . " WHERE type = 'U' AND name != 'sysdiagrams' AND category != 2 ORDER BY name"; - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - */ - public function getListTableColumnsSQL($table, $database = null) - { - return "SELECT col.name, - type.name AS type, - col.max_length AS length, - ~col.is_nullable AS notnull, - def.definition AS [default], - col.scale, - col.precision, - col.is_identity AS autoincrement, - col.collation_name AS collation, - CAST(prop.value AS NVARCHAR(MAX)) AS comment -- CAST avoids driver error for sql_variant type - FROM sys.columns AS col - JOIN sys.types AS type - ON col.user_type_id = type.user_type_id - JOIN sys.objects AS obj - ON col.object_id = obj.object_id - JOIN sys.schemas AS scm - ON obj.schema_id = scm.schema_id - LEFT JOIN sys.default_constraints def - ON col.default_object_id = def.object_id - AND col.object_id = def.parent_object_id - LEFT JOIN sys.extended_properties AS prop - ON obj.object_id = prop.major_id - AND col.column_id = prop.minor_id - AND prop.name = 'MS_Description' - WHERE obj.type = 'U' - AND " . $this->getTableWhereClause($table, 'scm.name', 'obj.name'); - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * @param string $table - * @param string|null $database - * - * @return string - */ - public function getListTableForeignKeysSQL($table, $database = null) - { - return 'SELECT f.name AS ForeignKey, - SCHEMA_NAME (f.SCHEMA_ID) AS SchemaName, - OBJECT_NAME (f.parent_object_id) AS TableName, - COL_NAME (fc.parent_object_id,fc.parent_column_id) AS ColumnName, - SCHEMA_NAME (o.SCHEMA_ID) ReferenceSchemaName, - OBJECT_NAME (f.referenced_object_id) AS ReferenceTableName, - COL_NAME(fc.referenced_object_id,fc.referenced_column_id) AS ReferenceColumnName, - f.delete_referential_action_desc, - f.update_referential_action_desc - FROM sys.foreign_keys AS f - INNER JOIN sys.foreign_key_columns AS fc - INNER JOIN sys.objects AS o ON o.OBJECT_ID = fc.referenced_object_id - ON f.OBJECT_ID = fc.constraint_object_id - WHERE ' . - $this->getTableWhereClause($table, 'SCHEMA_NAME (f.schema_id)', 'OBJECT_NAME (f.parent_object_id)') . - ' ORDER BY fc.constraint_column_id'; - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - */ - public function getListTableIndexesSQL($table, $database = null) - { - return "SELECT idx.name AS key_name, - col.name AS column_name, - ~idx.is_unique AS non_unique, - idx.is_primary_key AS [primary], - CASE idx.type - WHEN '1' THEN 'clustered' - WHEN '2' THEN 'nonclustered' - ELSE NULL - END AS flags - FROM sys.tables AS tbl - JOIN sys.schemas AS scm ON tbl.schema_id = scm.schema_id - JOIN sys.indexes AS idx ON tbl.object_id = idx.object_id - JOIN sys.index_columns AS idxcol ON idx.object_id = idxcol.object_id AND idx.index_id = idxcol.index_id - JOIN sys.columns AS col ON idxcol.object_id = col.object_id AND idxcol.column_id = col.column_id - WHERE " . $this->getTableWhereClause($table, 'scm.name', 'tbl.name') . ' - ORDER BY idx.index_id ASC, idxcol.key_ordinal ASC'; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractSchemaManager} class hierarchy. - */ - public function getListViewsSQL($database) - { - return "SELECT name, definition FROM sysobjects - INNER JOIN sys.sql_modules ON sysobjects.id = sys.sql_modules.object_id - WHERE type = 'V' ORDER BY name"; - } - - /** - * Returns the where clause to filter schema and table name in a query. - * - * @param string $table The full qualified name of the table. - * @param string $schemaColumn The name of the column to compare the schema to in the where clause. - * @param string $tableColumn The name of the column to compare the table to in the where clause. - */ - private function getTableWhereClause($table, $schemaColumn, $tableColumn): string - { - if (strpos($table, '.') !== false) { - [$schema, $table] = explode('.', $table); - $schema = $this->quoteStringLiteral($schema); - $table = $this->quoteStringLiteral($table); - } else { - $schema = 'SCHEMA_NAME()'; - $table = $this->quoteStringLiteral($table); - } - - return sprintf('(%s = %s AND %s = %s)', $tableColumn, $table, $schemaColumn, $schema); - } - - /** - * {@inheritDoc} - */ - public function getLocateExpression($str, $substr, $startPos = false) - { - if ($startPos === false) { - return 'CHARINDEX(' . $substr . ', ' . $str . ')'; - } - - return 'CHARINDEX(' . $substr . ', ' . $str . ', ' . $startPos . ')'; - } - - /** - * {@inheritDoc} - */ - public function getModExpression($expression1, $expression2) - { - return $expression1 . ' % ' . $expression2; - } - - /** - * {@inheritDoc} - */ - public function getTrimExpression($str, $mode = TrimMode::UNSPECIFIED, $char = false) - { - if ($char === false) { - switch ($mode) { - case TrimMode::LEADING: - $trimFn = 'LTRIM'; - break; - - case TrimMode::TRAILING: - $trimFn = 'RTRIM'; - break; - - default: - return 'LTRIM(RTRIM(' . $str . '))'; - } - - return $trimFn . '(' . $str . ')'; - } - - $pattern = "'%[^' + " . $char . " + ']%'"; - - if ($mode === TrimMode::LEADING) { - return 'stuff(' . $str . ', 1, patindex(' . $pattern . ', ' . $str . ') - 1, null)'; - } - - if ($mode === TrimMode::TRAILING) { - return 'reverse(stuff(reverse(' . $str . '), 1, ' - . 'patindex(' . $pattern . ', reverse(' . $str . ')) - 1, null))'; - } - - return 'reverse(stuff(reverse(stuff(' . $str . ', 1, patindex(' . $pattern . ', ' . $str . ') - 1, null)), 1, ' - . 'patindex(' . $pattern . ', reverse(stuff(' . $str . ', 1, patindex(' . $pattern . ', ' . $str - . ') - 1, null))) - 1, null))'; - } - - /** - * {@inheritDoc} - */ - public function getConcatExpression() - { - return sprintf('CONCAT(%s)', implode(', ', func_get_args())); - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractSchemaManager} class hierarchy. - */ - public function getListDatabasesSQL() - { - return 'SELECT * FROM sys.databases'; - } - - /** - * {@inheritDoc} - * - * @deprecated Use {@see SQLServerSchemaManager::listSchemaNames()} instead. - */ - public function getListNamespacesSQL() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4503', - 'SQLServerPlatform::getListNamespacesSQL() is deprecated,' - . ' use SQLServerSchemaManager::listSchemaNames() instead.', - ); - - return "SELECT name FROM sys.schemas WHERE name NOT IN('guest', 'INFORMATION_SCHEMA', 'sys')"; - } - - /** - * {@inheritDoc} - */ - public function getSubstringExpression($string, $start, $length = null) - { - if ($length !== null) { - return 'SUBSTRING(' . $string . ', ' . $start . ', ' . $length . ')'; - } - - return 'SUBSTRING(' . $string . ', ' . $start . ', LEN(' . $string . ') - ' . $start . ' + 1)'; - } - - /** - * {@inheritDoc} - */ - public function getLengthExpression($column) - { - return 'LEN(' . $column . ')'; - } - - public function getCurrentDatabaseExpression(): string - { - return 'DB_NAME()'; - } - - /** - * {@inheritDoc} - */ - public function getSetTransactionIsolationSQL($level) - { - return 'SET TRANSACTION ISOLATION LEVEL ' . $this->_getTransactionIsolationLevelSQL($level); - } - - /** - * {@inheritDoc} - */ - public function getIntegerTypeDeclarationSQL(array $column) - { - return 'INT' . $this->_getCommonIntegerTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - */ - public function getBigIntTypeDeclarationSQL(array $column) - { - return 'BIGINT' . $this->_getCommonIntegerTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - */ - public function getSmallIntTypeDeclarationSQL(array $column) - { - return 'SMALLINT' . $this->_getCommonIntegerTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - */ - public function getGuidTypeDeclarationSQL(array $column) - { - return 'UNIQUEIDENTIFIER'; - } - - /** - * {@inheritDoc} - */ - public function getDateTimeTzTypeDeclarationSQL(array $column) - { - return 'DATETIMEOFFSET(6)'; - } - - /** - * {@inheritDoc} - */ - public function getAsciiStringTypeDeclarationSQL(array $column): string - { - $length = $column['length'] ?? null; - - if (empty($column['fixed'])) { - return sprintf('VARCHAR(%d)', $length ?? 255); - } - - return sprintf('CHAR(%d)', $length ?? 255); - } - - /** - * {@inheritDoc} - */ - protected function getVarcharTypeDeclarationSQLSnippet($length, $fixed/*, $lengthOmitted = false*/) - { - if ($length <= 0 || (func_num_args() > 2 && func_get_arg(2))) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'Relying on the default string column length on SQL Server is deprecated' - . ', specify the length explicitly.', - ); - } - - return $fixed - ? 'NCHAR(' . ($length > 0 ? $length : 255) . ')' - : 'NVARCHAR(' . ($length > 0 ? $length : 255) . ')'; - } - - /** - * {@inheritDoc} - */ - protected function getBinaryTypeDeclarationSQLSnippet($length, $fixed/*, $lengthOmitted = false*/) - { - if ($length <= 0 || (func_num_args() > 2 && func_get_arg(2))) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'Relying on the default binary column length on SQL Server is deprecated' - . ', specify the length explicitly.', - ); - } - - return $fixed - ? 'BINARY(' . ($length > 0 ? $length : 255) . ')' - : 'VARBINARY(' . ($length > 0 ? $length : 255) . ')'; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function getBinaryMaxLength() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'SQLServerPlatform::getBinaryMaxLength() is deprecated.', - ); - - return 8000; - } - - /** - * {@inheritDoc} - */ - public function getClobTypeDeclarationSQL(array $column) - { - return 'VARCHAR(MAX)'; - } - - /** - * {@inheritDoc} - */ - protected function _getCommonIntegerTypeDeclarationSQL(array $column) - { - return ! empty($column['autoincrement']) ? ' IDENTITY' : ''; - } - - /** - * {@inheritDoc} - */ - public function getDateTimeTypeDeclarationSQL(array $column) - { - // 3 - microseconds precision length - // http://msdn.microsoft.com/en-us/library/ms187819.aspx - return 'DATETIME2(6)'; - } - - /** - * {@inheritDoc} - */ - public function getDateTypeDeclarationSQL(array $column) - { - return 'DATE'; - } - - /** - * {@inheritDoc} - */ - public function getTimeTypeDeclarationSQL(array $column) - { - return 'TIME(0)'; - } - - /** - * {@inheritDoc} - */ - public function getBooleanTypeDeclarationSQL(array $column) - { - return 'BIT'; - } - - /** - * {@inheritDoc} - */ - protected function doModifyLimitQuery($query, $limit, $offset) - { - if ($limit === null && $offset <= 0) { - return $query; - } - - if ($this->shouldAddOrderBy($query)) { - if (preg_match('/^SELECT\s+DISTINCT/im', $query) > 0) { - // SQL Server won't let us order by a non-selected column in a DISTINCT query, - // so we have to do this madness. This says, order by the first column in the - // result. SQL Server's docs say that a nonordered query's result order is non- - // deterministic anyway, so this won't do anything that a bunch of update and - // deletes to the table wouldn't do anyway. - $query .= ' ORDER BY 1'; - } else { - // In another DBMS, we could do ORDER BY 0, but SQL Server gets angry if you - // use constant expressions in the order by list. - $query .= ' ORDER BY (SELECT 0)'; - } - } - - // This looks somewhat like MYSQL, but limit/offset are in inverse positions - // Supposedly SQL:2008 core standard. - // Per TSQL spec, FETCH NEXT n ROWS ONLY is not valid without OFFSET n ROWS. - $query .= sprintf(' OFFSET %d ROWS', $offset); - - if ($limit !== null) { - $query .= sprintf(' FETCH NEXT %d ROWS ONLY', $limit); - } - - return $query; - } - - /** - * {@inheritDoc} - */ - public function convertBooleans($item) - { - if (is_array($item)) { - foreach ($item as $key => $value) { - if (! is_bool($value) && ! is_numeric($value)) { - continue; - } - - $item[$key] = (int) (bool) $value; - } - } elseif (is_bool($item) || is_numeric($item)) { - $item = (int) (bool) $item; - } - - return $item; - } - - /** - * {@inheritDoc} - */ - public function getCreateTemporaryTableSnippetSQL() - { - return 'CREATE TABLE'; - } - - /** - * {@inheritDoc} - */ - public function getTemporaryTableName($tableName) - { - return '#' . $tableName; - } - - /** - * {@inheritDoc} - */ - public function getDateTimeFormatString() - { - return 'Y-m-d H:i:s.u'; - } - - /** - * {@inheritDoc} - */ - public function getDateFormatString() - { - return 'Y-m-d'; - } - - /** - * {@inheritDoc} - */ - public function getTimeFormatString() - { - return 'H:i:s'; - } - - /** - * {@inheritDoc} - */ - public function getDateTimeTzFormatString() - { - return 'Y-m-d H:i:s.u P'; - } - - /** - * {@inheritDoc} - */ - public function getName() - { - return 'mssql'; - } - - /** - * {@inheritDoc} - */ - protected function initializeDoctrineTypeMappings() - { - $this->doctrineTypeMapping = [ - 'bigint' => Types::BIGINT, - 'binary' => Types::BINARY, - 'bit' => Types::BOOLEAN, - 'blob' => Types::BLOB, - 'char' => Types::STRING, - 'date' => Types::DATE_MUTABLE, - 'datetime' => Types::DATETIME_MUTABLE, - 'datetime2' => Types::DATETIME_MUTABLE, - 'datetimeoffset' => Types::DATETIMETZ_MUTABLE, - 'decimal' => Types::DECIMAL, - 'double' => Types::FLOAT, - 'double precision' => Types::FLOAT, - 'float' => Types::FLOAT, - 'image' => Types::BLOB, - 'int' => Types::INTEGER, - 'money' => Types::INTEGER, - 'nchar' => Types::STRING, - 'ntext' => Types::TEXT, - 'numeric' => Types::DECIMAL, - 'nvarchar' => Types::STRING, - 'real' => Types::FLOAT, - 'smalldatetime' => Types::DATETIME_MUTABLE, - 'smallint' => Types::SMALLINT, - 'smallmoney' => Types::INTEGER, - 'sysname' => Types::STRING, - 'text' => Types::TEXT, - 'time' => Types::TIME_MUTABLE, - 'tinyint' => Types::SMALLINT, - 'uniqueidentifier' => Types::GUID, - 'varbinary' => Types::BINARY, - 'varchar' => Types::STRING, - 'xml' => Types::TEXT, - ]; - } - - /** - * {@inheritDoc} - */ - public function createSavePoint($savepoint) - { - return 'SAVE TRANSACTION ' . $savepoint; - } - - /** - * {@inheritDoc} - */ - public function releaseSavePoint($savepoint) - { - return ''; - } - - /** - * {@inheritDoc} - */ - public function rollbackSavePoint($savepoint) - { - return 'ROLLBACK TRANSACTION ' . $savepoint; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function getForeignKeyReferentialActionSQL($action) - { - // RESTRICT is not supported, therefore falling back to NO ACTION. - if (strtoupper($action) === 'RESTRICT') { - return 'NO ACTION'; - } - - return parent::getForeignKeyReferentialActionSQL($action); - } - - public function appendLockHint(string $fromClause, int $lockMode): string - { - switch ($lockMode) { - case LockMode::NONE: - case LockMode::OPTIMISTIC: - return $fromClause; - - case LockMode::PESSIMISTIC_READ: - return $fromClause . ' WITH (HOLDLOCK, ROWLOCK)'; - - case LockMode::PESSIMISTIC_WRITE: - return $fromClause . ' WITH (UPDLOCK, ROWLOCK)'; - - default: - throw InvalidLockMode::fromLockMode($lockMode); - } - } - - /** - * {@inheritDoc} - * - * @deprecated This API is not portable. - */ - public function getForUpdateSQL() - { - return ' '; - } - - /** - * {@inheritDoc} - * - * @deprecated Implement {@see createReservedKeywordsList()} instead. - */ - protected function getReservedKeywordsClass() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4510', - 'SQLServerPlatform::getReservedKeywordsClass() is deprecated,' - . ' use SQLServerPlatform::createReservedKeywordsList() instead.', - ); - - return Keywords\SQLServer2012Keywords::class; - } - - /** - * {@inheritDoc} - */ - public function quoteSingleIdentifier($str) - { - return '[' . str_replace(']', ']]', $str) . ']'; - } - - /** - * {@inheritDoc} - */ - public function getTruncateTableSQL($tableName, $cascade = false) - { - $tableIdentifier = new Identifier($tableName); - - return 'TRUNCATE TABLE ' . $tableIdentifier->getQuotedName($this); - } - - /** - * {@inheritDoc} - */ - public function getBlobTypeDeclarationSQL(array $column) - { - return 'VARBINARY(MAX)'; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function getColumnDeclarationSQL($name, array $column) - { - if (isset($column['columnDefinition'])) { - $columnDef = $this->getCustomTypeDeclarationSQL($column); - } else { - $collation = ! empty($column['collation']) ? - ' ' . $this->getColumnCollationDeclarationSQL($column['collation']) : ''; - - $notnull = ! empty($column['notnull']) ? ' NOT NULL' : ''; - - if (! empty($column['unique'])) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5656', - 'The usage of the "unique" column property is deprecated. Use unique constraints instead.', - ); - - $unique = ' ' . $this->getUniqueFieldDeclarationSQL(); - } else { - $unique = ''; - } - - if (! empty($column['check'])) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5656', - 'The usage of the "check" column property is deprecated.', - ); - - $check = ' ' . $column['check']; - } else { - $check = ''; - } - - $typeDecl = $column['type']->getSQLDeclaration($column, $this); - $columnDef = $typeDecl . $collation . $notnull . $unique . $check; - } - - return $name . ' ' . $columnDef; - } - - /** - * {@inheritDoc} - * - * SQL Server does not support quoting collation identifiers. - */ - public function getColumnCollationDeclarationSQL($collation) - { - return 'COLLATE ' . $collation; - } - - public function columnsEqual(Column $column1, Column $column2): bool - { - if (! parent::columnsEqual($column1, $column2)) { - return false; - } - - return $this->getDefaultValueDeclarationSQL($column1->toArray()) - === $this->getDefaultValueDeclarationSQL($column2->toArray()); - } - - protected function getLikeWildcardCharacters(): string - { - return parent::getLikeWildcardCharacters() . '[]^'; - } - - /** - * Returns a unique default constraint name for a table and column. - * - * @param string $table Name of the table to generate the unique default constraint name for. - * @param string $column Name of the column in the table to generate the unique default constraint name for. - */ - private function generateDefaultConstraintName($table, $column): string - { - return 'DF_' . $this->generateIdentifierName($table) . '_' . $this->generateIdentifierName($column); - } - - /** - * Returns a hash value for a given identifier. - * - * @param string $identifier Identifier to generate a hash value for. - */ - private function generateIdentifierName($identifier): string - { - // Always generate name for unquoted identifiers to ensure consistency. - $identifier = new Identifier($identifier); - - return strtoupper(dechex(crc32($identifier->getName()))); - } - - protected function getCommentOnTableSQL(string $tableName, ?string $comment): string - { - return $this->getAddExtendedPropertySQL( - 'MS_Description', - $comment, - 'SCHEMA', - $this->quoteStringLiteral('dbo'), - 'TABLE', - $this->quoteStringLiteral($this->unquoteSingleIdentifier($tableName)), - ); - } - - /** @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. */ - public function getListTableMetadataSQL(string $table): string - { - return sprintf( - <<<'SQL' - SELECT - p.value AS [table_comment] - FROM - sys.tables AS tbl - INNER JOIN sys.extended_properties AS p ON p.major_id=tbl.object_id AND p.minor_id=0 AND p.class=1 - WHERE - (tbl.name=N%s and SCHEMA_NAME(tbl.schema_id)=N'dbo' and p.name=N'MS_Description') - SQL - , - $this->quoteStringLiteral($table), - ); - } - - /** @param string $query */ - private function shouldAddOrderBy($query): bool - { - // Find the position of the last instance of ORDER BY and ensure it is not within a parenthetical statement - // but can be in a newline - $matches = []; - $matchesCount = preg_match_all('/[\\s]+order\\s+by\\s/im', $query, $matches, PREG_OFFSET_CAPTURE); - if ($matchesCount === 0) { - return true; - } - - // ORDER BY instance may be in a subquery after ORDER BY - // e.g. SELECT col1 FROM test ORDER BY (SELECT col2 from test ORDER BY col2) - // if in the searched query ORDER BY clause was found where - // number of open parentheses after the occurrence of the clause is equal to - // number of closed brackets after the occurrence of the clause, - // it means that ORDER BY is included in the query being checked - while ($matchesCount > 0) { - $orderByPos = $matches[0][--$matchesCount][1]; - $openBracketsCount = substr_count($query, '(', $orderByPos); - $closedBracketsCount = substr_count($query, ')', $orderByPos); - if ($openBracketsCount === $closedBracketsCount) { - return false; - } - } - - return true; - } - - public function createSchemaManager(Connection $connection): SQLServerSchemaManager - { - return new SQLServerSchemaManager($connection, $this); - } -} diff --git a/docker/streamline-src/vendor/doctrine/dbal/src/Platforms/SqlitePlatform.php b/docker/streamline-src/vendor/doctrine/dbal/src/Platforms/SqlitePlatform.php deleted file mode 100644 index 48c692fd..00000000 --- a/docker/streamline-src/vendor/doctrine/dbal/src/Platforms/SqlitePlatform.php +++ /dev/null @@ -1,1545 +0,0 @@ - 0 THEN INSTR(SUBSTR(' . $str . ', ' . $startPos . '), ' . $substr . ') + ' . $startPos - . ' - 1 ELSE 0 END'; - } - - /** - * {@inheritDoc} - */ - protected function getDateArithmeticIntervalExpression($date, $operator, $interval, $unit) - { - switch ($unit) { - case DateIntervalUnit::SECOND: - case DateIntervalUnit::MINUTE: - case DateIntervalUnit::HOUR: - return 'DATETIME(' . $date . ",'" . $operator . $interval . ' ' . $unit . "')"; - } - - switch ($unit) { - case DateIntervalUnit::WEEK: - $interval = $this->multiplyInterval((string) $interval, 7); - $unit = DateIntervalUnit::DAY; - break; - - case DateIntervalUnit::QUARTER: - $interval = $this->multiplyInterval((string) $interval, 3); - $unit = DateIntervalUnit::MONTH; - break; - } - - if (! is_numeric($interval)) { - $interval = "' || " . $interval . " || '"; - } - - return 'DATE(' . $date . ",'" . $operator . $interval . ' ' . $unit . "')"; - } - - /** - * {@inheritDoc} - */ - public function getDateDiffExpression($date1, $date2) - { - return sprintf("JULIANDAY(%s, 'start of day') - JULIANDAY(%s, 'start of day')", $date1, $date2); - } - - /** - * {@inheritDoc} - * - * The DBAL doesn't support databases on the SQLite platform. The expression here always returns a fixed string - * as an indicator of an implicitly selected database. - * - * @link https://www.sqlite.org/lang_select.html - * @see Connection::getDatabase() - */ - public function getCurrentDatabaseExpression(): string - { - return "'main'"; - } - - /** @link https://www2.sqlite.org/cvstrac/wiki?p=UnsupportedSql */ - public function createSelectSQLBuilder(): SelectSQLBuilder - { - return new DefaultSelectSQLBuilder($this, null, null); - } - - /** - * {@inheritDoc} - */ - protected function _getTransactionIsolationLevelSQL($level) - { - switch ($level) { - case TransactionIsolationLevel::READ_UNCOMMITTED: - return '0'; - - case TransactionIsolationLevel::READ_COMMITTED: - case TransactionIsolationLevel::REPEATABLE_READ: - case TransactionIsolationLevel::SERIALIZABLE: - return '1'; - - default: - return parent::_getTransactionIsolationLevelSQL($level); - } - } - - /** - * {@inheritDoc} - */ - public function getSetTransactionIsolationSQL($level) - { - return 'PRAGMA read_uncommitted = ' . $this->_getTransactionIsolationLevelSQL($level); - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function prefersIdentityColumns() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/1519', - 'SqlitePlatform::prefersIdentityColumns() is deprecated.', - ); - - return true; - } - - /** - * {@inheritDoc} - */ - public function getBooleanTypeDeclarationSQL(array $column) - { - return 'BOOLEAN'; - } - - /** - * {@inheritDoc} - */ - public function getIntegerTypeDeclarationSQL(array $column) - { - return 'INTEGER' . $this->_getCommonIntegerTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - */ - public function getBigIntTypeDeclarationSQL(array $column) - { - // SQLite autoincrement is implicit for INTEGER PKs, but not for BIGINT columns - if (! empty($column['autoincrement'])) { - return $this->getIntegerTypeDeclarationSQL($column); - } - - return 'BIGINT' . $this->_getCommonIntegerTypeDeclarationSQL($column); - } - - /** - * @deprecated Use {@see getSmallIntTypeDeclarationSQL()} instead. - * - * @param array $column - * - * @return string - */ - public function getTinyIntTypeDeclarationSQL(array $column) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5511', - '%s is deprecated. Use getSmallIntTypeDeclarationSQL() instead.', - __METHOD__, - ); - - // SQLite autoincrement is implicit for INTEGER PKs, but not for TINYINT columns - if (! empty($column['autoincrement'])) { - return $this->getIntegerTypeDeclarationSQL($column); - } - - return 'TINYINT' . $this->_getCommonIntegerTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - */ - public function getSmallIntTypeDeclarationSQL(array $column) - { - // SQLite autoincrement is implicit for INTEGER PKs, but not for SMALLINT columns - if (! empty($column['autoincrement'])) { - return $this->getIntegerTypeDeclarationSQL($column); - } - - return 'SMALLINT' . $this->_getCommonIntegerTypeDeclarationSQL($column); - } - - /** - * @deprecated Use {@see getIntegerTypeDeclarationSQL()} instead. - * - * @param array $column - * - * @return string - */ - public function getMediumIntTypeDeclarationSQL(array $column) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5511', - '%s is deprecated. Use getIntegerTypeDeclarationSQL() instead.', - __METHOD__, - ); - - // SQLite autoincrement is implicit for INTEGER PKs, but not for MEDIUMINT columns - if (! empty($column['autoincrement'])) { - return $this->getIntegerTypeDeclarationSQL($column); - } - - return 'MEDIUMINT' . $this->_getCommonIntegerTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - */ - public function getDateTimeTypeDeclarationSQL(array $column) - { - return 'DATETIME'; - } - - /** - * {@inheritDoc} - */ - public function getDateTypeDeclarationSQL(array $column) - { - return 'DATE'; - } - - /** - * {@inheritDoc} - */ - public function getTimeTypeDeclarationSQL(array $column) - { - return 'TIME'; - } - - /** - * {@inheritDoc} - */ - protected function _getCommonIntegerTypeDeclarationSQL(array $column) - { - // sqlite autoincrement is only possible for the primary key - if (! empty($column['autoincrement'])) { - return ' PRIMARY KEY AUTOINCREMENT'; - } - - return ! empty($column['unsigned']) ? ' UNSIGNED' : ''; - } - - /** - * Disables schema emulation. - * - * Schema emulation is enabled by default to maintain backwards compatibility. - * Disable it to opt-in to the behavior of DBAL 4. - * - * @deprecated Will be removed in DBAL 4.0. - */ - public function disableSchemaEmulation(): void - { - $this->schemaEmulationEnabled = false; - } - - private function emulateSchemaNamespacing(string $tableName): string - { - return $this->schemaEmulationEnabled - ? str_replace('.', '__', $tableName) - : $tableName; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function getForeignKeyDeclarationSQL(ForeignKeyConstraint $foreignKey) - { - return parent::getForeignKeyDeclarationSQL(new ForeignKeyConstraint( - $foreignKey->getQuotedLocalColumns($this), - $this->emulateSchemaNamespacing($foreignKey->getQuotedForeignTableName($this)), - $foreignKey->getQuotedForeignColumns($this), - $foreignKey->getName(), - $foreignKey->getOptions(), - )); - } - - /** - * {@inheritDoc} - */ - protected function _getCreateTableSQL($name, array $columns, array $options = []) - { - $name = $this->emulateSchemaNamespacing($name); - $queryFields = $this->getColumnDeclarationListSQL($columns); - - if (isset($options['uniqueConstraints']) && ! empty($options['uniqueConstraints'])) { - foreach ($options['uniqueConstraints'] as $constraintName => $definition) { - $queryFields .= ', ' . $this->getUniqueConstraintDeclarationSQL($constraintName, $definition); - } - } - - $queryFields .= $this->getNonAutoincrementPrimaryKeyDefinition($columns, $options); - - if (isset($options['foreignKeys'])) { - foreach ($options['foreignKeys'] as $foreignKey) { - $queryFields .= ', ' . $this->getForeignKeyDeclarationSQL($foreignKey); - } - } - - $tableComment = ''; - if (isset($options['comment'])) { - $comment = trim($options['comment'], " '"); - - $tableComment = $this->getInlineTableCommentSQL($comment); - } - - $query = ['CREATE TABLE ' . $name . ' ' . $tableComment . '(' . $queryFields . ')']; - - if (isset($options['alter']) && $options['alter'] === true) { - return $query; - } - - if (isset($options['indexes']) && ! empty($options['indexes'])) { - foreach ($options['indexes'] as $indexDef) { - $query[] = $this->getCreateIndexSQL($indexDef, $name); - } - } - - if (isset($options['unique']) && ! empty($options['unique'])) { - foreach ($options['unique'] as $indexDef) { - $query[] = $this->getCreateIndexSQL($indexDef, $name); - } - } - - return $query; - } - - /** - * Generate a PRIMARY KEY definition if no autoincrement value is used - * - * @param mixed[][] $columns - * @param mixed[] $options - */ - private function getNonAutoincrementPrimaryKeyDefinition(array $columns, array $options): string - { - if (empty($options['primary'])) { - return ''; - } - - $keyColumns = array_unique(array_values($options['primary'])); - - foreach ($keyColumns as $keyColumn) { - if (! empty($columns[$keyColumn]['autoincrement'])) { - return ''; - } - } - - return ', PRIMARY KEY(' . implode(', ', $keyColumns) . ')'; - } - - /** - * {@inheritDoc} - */ - protected function getVarcharTypeDeclarationSQLSnippet($length, $fixed) - { - return $fixed ? ($length > 0 ? 'CHAR(' . $length . ')' : 'CHAR(255)') - : ($length > 0 ? 'VARCHAR(' . $length . ')' : 'TEXT'); - } - - /** - * {@inheritDoc} - */ - protected function getBinaryTypeDeclarationSQLSnippet($length, $fixed) - { - return 'BLOB'; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function getBinaryMaxLength() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'SqlitePlatform::getBinaryMaxLength() is deprecated.', - ); - - return 0; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function getBinaryDefaultLength() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'Relying on the default binary column length is deprecated, specify the length explicitly.', - ); - - return 0; - } - - /** - * {@inheritDoc} - */ - public function getClobTypeDeclarationSQL(array $column) - { - return 'CLOB'; - } - - /** - * @deprecated - * - * {@inheritDoc} - */ - public function getListTableConstraintsSQL($table) - { - $table = $this->emulateSchemaNamespacing($table); - - return sprintf( - "SELECT sql FROM sqlite_master WHERE type='index' AND tbl_name = %s AND sql NOT NULL ORDER BY name", - $this->quoteStringLiteral($table), - ); - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - */ - public function getListTableColumnsSQL($table, $database = null) - { - $table = $this->emulateSchemaNamespacing($table); - - return sprintf('PRAGMA table_info(%s)', $this->quoteStringLiteral($table)); - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - */ - public function getListTableIndexesSQL($table, $database = null) - { - $table = $this->emulateSchemaNamespacing($table); - - return sprintf('PRAGMA index_list(%s)', $this->quoteStringLiteral($table)); - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - */ - public function getListTablesSQL() - { - return 'SELECT name FROM sqlite_master' - . " WHERE type = 'table'" - . " AND name != 'sqlite_sequence'" - . " AND name != 'geometry_columns'" - . " AND name != 'spatial_ref_sys'" - . ' UNION ALL SELECT name FROM sqlite_temp_master' - . " WHERE type = 'table' ORDER BY name"; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractSchemaManager} class hierarchy. - */ - public function getListViewsSQL($database) - { - return "SELECT name, sql FROM sqlite_master WHERE type='view' AND sql NOT NULL"; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function getAdvancedForeignKeyOptionsSQL(ForeignKeyConstraint $foreignKey) - { - $query = parent::getAdvancedForeignKeyOptionsSQL($foreignKey); - - if (! $foreignKey->hasOption('deferrable') || $foreignKey->getOption('deferrable') === false) { - $query .= ' NOT'; - } - - $query .= ' DEFERRABLE'; - $query .= ' INITIALLY'; - - if ($foreignKey->hasOption('deferred') && $foreignKey->getOption('deferred') !== false) { - $query .= ' DEFERRED'; - } else { - $query .= ' IMMEDIATE'; - } - - return $query; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function supportsCreateDropDatabase() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5513', - '%s is deprecated.', - __METHOD__, - ); - - return false; - } - - /** - * {@inheritDoc} - */ - public function supportsIdentityColumns() - { - return true; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function supportsColumnCollation() - { - return true; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function supportsInlineColumnComments() - { - return true; - } - - /** - * {@inheritDoc} - */ - public function getName() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4749', - 'SqlitePlatform::getName() is deprecated. Identify platforms by their class.', - ); - - return 'sqlite'; - } - - /** - * {@inheritDoc} - */ - public function getTruncateTableSQL($tableName, $cascade = false) - { - $tableIdentifier = new Identifier($tableName); - $tableName = $this->emulateSchemaNamespacing($tableIdentifier->getQuotedName($this)); - - return 'DELETE FROM ' . $tableName; - } - - /** - * User-defined function for Sqlite that is used with PDO::sqliteCreateFunction(). - * - * @deprecated The driver will use {@see sqrt()} in the next major release. - * - * @param int|float $value - * - * @return float - */ - public static function udfSqrt($value) - { - return sqrt($value); - } - - /** - * User-defined function for Sqlite that implements MOD(a, b). - * - * @deprecated The driver will use {@see UserDefinedFunctions::mod()} in the next major release. - * - * @param int $a - * @param int $b - * - * @return int - */ - public static function udfMod($a, $b) - { - return UserDefinedFunctions::mod($a, $b); - } - - /** - * @deprecated The driver will use {@see UserDefinedFunctions::locate()} in the next major release. - * - * @param string $str - * @param string $substr - * @param int $offset - * - * @return int - */ - public static function udfLocate($str, $substr, $offset = 0) - { - return UserDefinedFunctions::locate($str, $substr, $offset); - } - - /** - * {@inheritDoc} - * - * @deprecated This API is not portable. - */ - public function getForUpdateSQL() - { - return ''; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function getInlineColumnCommentSQL($comment) - { - return '--' . str_replace("\n", "\n--", $comment) . "\n"; - } - - private function getInlineTableCommentSQL(string $comment): string - { - return $this->getInlineColumnCommentSQL($comment); - } - - /** - * {@inheritDoc} - */ - protected function initializeDoctrineTypeMappings() - { - $this->doctrineTypeMapping = [ - 'bigint' => Types\Types::BIGINT, - 'bigserial' => Types\Types::BIGINT, - 'blob' => Types\Types::BLOB, - 'boolean' => Types\Types::BOOLEAN, - 'char' => Types\Types::STRING, - 'clob' => Types\Types::TEXT, - 'date' => Types\Types::DATE_MUTABLE, - 'datetime' => Types\Types::DATETIME_MUTABLE, - 'decimal' => Types\Types::DECIMAL, - 'double' => Types\Types::FLOAT, - 'double precision' => Types\Types::FLOAT, - 'float' => Types\Types::FLOAT, - 'image' => Types\Types::STRING, - 'int' => Types\Types::INTEGER, - 'integer' => Types\Types::INTEGER, - 'longtext' => Types\Types::TEXT, - 'longvarchar' => Types\Types::STRING, - 'mediumint' => Types\Types::INTEGER, - 'mediumtext' => Types\Types::TEXT, - 'ntext' => Types\Types::STRING, - 'numeric' => Types\Types::DECIMAL, - 'nvarchar' => Types\Types::STRING, - 'real' => Types\Types::FLOAT, - 'serial' => Types\Types::INTEGER, - 'smallint' => Types\Types::SMALLINT, - 'text' => Types\Types::TEXT, - 'time' => Types\Types::TIME_MUTABLE, - 'timestamp' => Types\Types::DATETIME_MUTABLE, - 'tinyint' => Types\Types::BOOLEAN, - 'tinytext' => Types\Types::TEXT, - 'varchar' => Types\Types::STRING, - 'varchar2' => Types\Types::STRING, - ]; - } - - /** - * {@inheritDoc} - * - * @deprecated Implement {@see createReservedKeywordsList()} instead. - */ - protected function getReservedKeywordsClass() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4510', - 'SqlitePlatform::getReservedKeywordsClass() is deprecated,' - . ' use SqlitePlatform::createReservedKeywordsList() instead.', - ); - - return Keywords\SQLiteKeywords::class; - } - - /** - * {@inheritDoc} - */ - protected function getPreAlterTableIndexForeignKeySQL(TableDiff $diff) - { - return []; - } - - /** - * {@inheritDoc} - */ - protected function getPostAlterTableIndexForeignKeySQL(TableDiff $diff) - { - $table = $diff->getOldTable(); - - if (! $table instanceof Table) { - throw new Exception( - 'Sqlite platform requires for alter table the table diff with reference to original table schema', - ); - } - - $sql = []; - $tableName = $diff->getNewName(); - - if ($tableName === false) { - $tableName = $diff->getName($this); - } - - foreach ($this->getIndexesInAlteredTable($diff, $table) as $index) { - if ($index->isPrimary()) { - continue; - } - - $sql[] = $this->getCreateIndexSQL($index, $tableName->getQuotedName($this)); - } - - return $sql; - } - - /** - * {@inheritDoc} - */ - protected function doModifyLimitQuery($query, $limit, $offset) - { - if ($limit === null && $offset > 0) { - return sprintf('%s LIMIT -1 OFFSET %d', $query, $offset); - } - - return parent::doModifyLimitQuery($query, $limit, $offset); - } - - /** - * {@inheritDoc} - */ - public function getBlobTypeDeclarationSQL(array $column) - { - return 'BLOB'; - } - - /** - * {@inheritDoc} - */ - public function getTemporaryTableName($tableName) - { - $tableName = $this->emulateSchemaNamespacing($tableName); - - return $tableName; - } - - /** - * {@inheritDoc} - * - * @deprecated - * - * Sqlite Platform emulates schema by underscoring each dot and generating tables - * into the default database. - * - * This hack is implemented to be able to use SQLite as testdriver when - * using schema supporting databases. - */ - public function canEmulateSchemas() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4805', - 'SqlitePlatform::canEmulateSchemas() is deprecated.', - ); - - return $this->schemaEmulationEnabled; - } - - /** - * {@inheritDoc} - */ - public function getCreateTablesSQL(array $tables): array - { - $sql = []; - - foreach ($tables as $table) { - $sql = array_merge($sql, $this->getCreateTableSQL($table)); - } - - return $sql; - } - - /** - * {@inheritDoc} - */ - public function getCreateIndexSQL(Index $index, $table) - { - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as a Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $table = $table->getQuotedName($this); - } - - $name = $index->getQuotedName($this); - $columns = $index->getColumns(); - - if (count($columns) === 0) { - throw new InvalidArgumentException(sprintf( - 'Incomplete or invalid index definition %s on table %s', - $name, - $table, - )); - } - - if ($index->isPrimary()) { - return $this->getCreatePrimaryKeySQL($index, $table); - } - - if (strpos($table, '.') !== false) { - [$schema, $table] = explode('.', $table, 2); - $name = $schema . '.' . $name; - } - - $query = 'CREATE ' . $this->getCreateIndexSQLFlags($index) . 'INDEX ' . $name . ' ON ' . $table; - $query .= ' (' . $this->getIndexFieldDeclarationListSQL($index) . ')' . $this->getPartialIndexSQL($index); - - return $query; - } - - /** - * {@inheritDoc} - */ - public function getDropTablesSQL(array $tables): array - { - $sql = []; - - foreach ($tables as $table) { - $sql[] = $this->getDropTableSQL($table->getQuotedName($this)); - } - - return $sql; - } - - /** - * {@inheritDoc} - */ - public function getCreatePrimaryKeySQL(Index $index, $table) - { - throw new Exception('Sqlite platform does not support alter primary key.'); - } - - /** - * {@inheritDoc} - */ - public function getCreateForeignKeySQL(ForeignKeyConstraint $foreignKey, $table) - { - throw new Exception('Sqlite platform does not support alter foreign key.'); - } - - /** - * {@inheritDoc} - */ - public function getDropForeignKeySQL($foreignKey, $table) - { - throw new Exception('Sqlite platform does not support alter foreign key.'); - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function getCreateConstraintSQL(Constraint $constraint, $table) - { - throw new Exception('Sqlite platform does not support alter constraint.'); - } - - /** - * {@inheritDoc} - * - * @param int|null $createFlags - * @psalm-param int-mask-of|null $createFlags - */ - public function getCreateTableSQL(Table $table, $createFlags = null) - { - $createFlags = $createFlags ?? self::CREATE_INDEXES | self::CREATE_FOREIGNKEYS; - - return parent::getCreateTableSQL($table, $createFlags); - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * @param string $table - * @param string|null $database - * - * @return string - */ - public function getListTableForeignKeysSQL($table, $database = null) - { - $table = $this->emulateSchemaNamespacing($table); - - return sprintf('PRAGMA foreign_key_list(%s)', $this->quoteStringLiteral($table)); - } - - /** - * {@inheritDoc} - */ - public function getAlterTableSQL(TableDiff $diff) - { - $sql = $this->getSimpleAlterTableSQL($diff); - if ($sql !== false) { - return $sql; - } - - $table = $diff->getOldTable(); - - if (! $table instanceof Table) { - throw new Exception( - 'Sqlite platform requires for alter table the table diff with reference to original table schema', - ); - } - - $columns = []; - $oldColumnNames = []; - $newColumnNames = []; - $columnSql = []; - - foreach ($table->getColumns() as $columnName => $column) { - $columnName = strtolower($columnName); - $columns[$columnName] = $column; - $oldColumnNames[$columnName] = $newColumnNames[$columnName] = $column->getQuotedName($this); - } - - foreach ($diff->getDroppedColumns() as $column) { - if ($this->onSchemaAlterTableRemoveColumn($column, $diff, $columnSql)) { - continue; - } - - $columnName = strtolower($column->getName()); - if (! isset($columns[$columnName])) { - continue; - } - - unset( - $columns[$columnName], - $oldColumnNames[$columnName], - $newColumnNames[$columnName], - ); - } - - foreach ($diff->getRenamedColumns() as $oldColumnName => $column) { - if ($this->onSchemaAlterTableRenameColumn($oldColumnName, $column, $diff, $columnSql)) { - continue; - } - - $oldColumnName = strtolower($oldColumnName); - - $columns = $this->replaceColumn( - $table->getName(), - $columns, - $oldColumnName, - $column, - ); - - if (! isset($newColumnNames[$oldColumnName])) { - continue; - } - - $newColumnNames[$oldColumnName] = $column->getQuotedName($this); - } - - foreach ($diff->getModifiedColumns() as $columnDiff) { - if ($this->onSchemaAlterTableChangeColumn($columnDiff, $diff, $columnSql)) { - continue; - } - - $oldColumn = $columnDiff->getOldColumn() ?? $columnDiff->getOldColumnName(); - - $oldColumnName = strtolower($oldColumn->getName()); - - $columns = $this->replaceColumn( - $table->getName(), - $columns, - $oldColumnName, - $columnDiff->getNewColumn(), - ); - - if (! isset($newColumnNames[$oldColumnName])) { - continue; - } - - $newColumnNames[$oldColumnName] = $columnDiff->getNewColumn()->getQuotedName($this); - } - - foreach ($diff->getAddedColumns() as $column) { - if ($this->onSchemaAlterTableAddColumn($column, $diff, $columnSql)) { - continue; - } - - $columns[strtolower($column->getName())] = $column; - } - - $sql = []; - $tableSql = []; - if (! $this->onSchemaAlterTable($diff, $tableSql)) { - $tableName = $table->getName(); - if (strpos($tableName, '.') !== false) { - [, $tableName] = explode('.', $tableName, 2); - } - - $dataTable = new Table('__temp__' . $tableName); - - $newTable = new Table( - $table->getQuotedName($this), - $columns, - $this->getPrimaryIndexInAlteredTable($diff, $table), - [], - $this->getForeignKeysInAlteredTable($diff, $table), - $table->getOptions(), - ); - $newTable->addOption('alter', true); - - $sql = $this->getPreAlterTableIndexForeignKeySQL($diff); - - $sql[] = sprintf( - 'CREATE TEMPORARY TABLE %s AS SELECT %s FROM %s', - $dataTable->getQuotedName($this), - implode(', ', $oldColumnNames), - $table->getQuotedName($this), - ); - $sql[] = $this->getDropTableSQL($table); - - $sql = array_merge($sql, $this->getCreateTableSQL($newTable)); - $sql[] = sprintf( - 'INSERT INTO %s (%s) SELECT %s FROM %s', - $newTable->getQuotedName($this), - implode(', ', $newColumnNames), - implode(', ', $oldColumnNames), - $dataTable->getQuotedName($this), - ); - $sql[] = $this->getDropTableSQL($dataTable->getQuotedName($this)); - - $newName = $diff->getNewName(); - - if ($newName !== false) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5663', - 'Generation of "rename table" SQL using %s is deprecated. Use getRenameTableSQL() instead.', - __METHOD__, - ); - - $sql[] = sprintf( - 'ALTER TABLE %s RENAME TO %s', - $newTable->getQuotedName($this), - $newName->getQuotedName($this), - ); - } - - $sql = array_merge($sql, $this->getPostAlterTableIndexForeignKeySQL($diff)); - } - - return array_merge($sql, $tableSql, $columnSql); - } - - /** - * Replace the column with the given name with the new column. - * - * @param string $tableName - * @param array $columns - * @param string $columnName - * - * @return array - * - * @throws Exception - */ - private function replaceColumn($tableName, array $columns, $columnName, Column $column): array - { - $keys = array_keys($columns); - $index = array_search($columnName, $keys, true); - - if ($index === false) { - throw SchemaException::columnDoesNotExist($columnName, $tableName); - } - - $values = array_values($columns); - - $keys[$index] = strtolower($column->getName()); - $values[$index] = $column; - - return array_combine($keys, $values); - } - - /** - * @return string[]|false - * - * @throws Exception - */ - private function getSimpleAlterTableSQL(TableDiff $diff) - { - // Suppress changes on integer type autoincrement columns. - foreach ($diff->getModifiedColumns() as $columnDiff) { - $oldColumn = $columnDiff->getOldColumn(); - - if ($oldColumn === null) { - continue; - } - - $newColumn = $columnDiff->getNewColumn(); - - if (! $newColumn->getAutoincrement() || ! $newColumn->getType() instanceof IntegerType) { - continue; - } - - $oldColumnName = $oldColumn->getName(); - - if (! $columnDiff->hasTypeChanged() && $columnDiff->hasUnsignedChanged()) { - unset($diff->changedColumns[$oldColumnName]); - - continue; - } - - $fromColumnType = $oldColumn->getType(); - - if (! ($fromColumnType instanceof Types\SmallIntType) && ! ($fromColumnType instanceof Types\BigIntType)) { - continue; - } - - unset($diff->changedColumns[$oldColumnName]); - } - - if ( - count($diff->getModifiedColumns()) > 0 - || count($diff->getDroppedColumns()) > 0 - || count($diff->getRenamedColumns()) > 0 - || count($diff->getAddedIndexes()) > 0 - || count($diff->getModifiedIndexes()) > 0 - || count($diff->getDroppedIndexes()) > 0 - || count($diff->getRenamedIndexes()) > 0 - || count($diff->getAddedForeignKeys()) > 0 - || count($diff->getModifiedForeignKeys()) > 0 - || count($diff->getDroppedForeignKeys()) > 0 - ) { - return false; - } - - $table = $diff->getOldTable() ?? $diff->getName($this); - - $sql = []; - $tableSql = []; - $columnSql = []; - - foreach ($diff->getAddedColumns() as $column) { - if ($this->onSchemaAlterTableAddColumn($column, $diff, $columnSql)) { - continue; - } - - $definition = array_merge([ - 'unique' => null, - 'autoincrement' => null, - 'default' => null, - ], $column->toArray()); - - $type = $definition['type']; - - switch (true) { - case isset($definition['columnDefinition']) || $definition['autoincrement'] || $definition['unique']: - case $type instanceof Types\DateTimeType && $definition['default'] === $this->getCurrentTimestampSQL(): - case $type instanceof Types\DateType && $definition['default'] === $this->getCurrentDateSQL(): - case $type instanceof Types\TimeType && $definition['default'] === $this->getCurrentTimeSQL(): - return false; - } - - $definition['name'] = $column->getQuotedName($this); - if ($type instanceof Types\StringType) { - $definition['length'] ??= 255; - } - - $sql[] = 'ALTER TABLE ' . $table->getQuotedName($this) . ' ADD COLUMN ' - . $this->getColumnDeclarationSQL($definition['name'], $definition); - } - - if (! $this->onSchemaAlterTable($diff, $tableSql)) { - if ($diff->newName !== false) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5663', - 'Generation of SQL that renames a table using %s is deprecated.' - . ' Use getRenameTableSQL() instead.', - __METHOD__, - ); - - $newTable = new Identifier($diff->newName); - - $sql[] = 'ALTER TABLE ' . $table->getQuotedName($this) . ' RENAME TO ' - . $newTable->getQuotedName($this); - } - } - - return array_merge($sql, $tableSql, $columnSql); - } - - /** @return string[] */ - private function getColumnNamesInAlteredTable(TableDiff $diff, Table $fromTable): array - { - $columns = []; - - foreach ($fromTable->getColumns() as $columnName => $column) { - $columns[strtolower($columnName)] = $column->getName(); - } - - foreach ($diff->getDroppedColumns() as $column) { - $columnName = strtolower($column->getName()); - if (! isset($columns[$columnName])) { - continue; - } - - unset($columns[$columnName]); - } - - foreach ($diff->getRenamedColumns() as $oldColumnName => $column) { - $columnName = $column->getName(); - $columns[strtolower($oldColumnName)] = $columnName; - $columns[strtolower($columnName)] = $columnName; - } - - foreach ($diff->getModifiedColumns() as $columnDiff) { - $oldColumn = $columnDiff->getOldColumn() ?? $columnDiff->getOldColumnName(); - - $oldColumnName = $oldColumn->getName(); - $newColumnName = $columnDiff->getNewColumn()->getName(); - $columns[strtolower($oldColumnName)] = $newColumnName; - $columns[strtolower($newColumnName)] = $newColumnName; - } - - foreach ($diff->getAddedColumns() as $column) { - $columnName = $column->getName(); - $columns[strtolower($columnName)] = $columnName; - } - - return $columns; - } - - /** @return Index[] */ - private function getIndexesInAlteredTable(TableDiff $diff, Table $fromTable): array - { - $indexes = $fromTable->getIndexes(); - $columnNames = $this->getColumnNamesInAlteredTable($diff, $fromTable); - - foreach ($indexes as $key => $index) { - foreach ($diff->getRenamedIndexes() as $oldIndexName => $renamedIndex) { - if (strtolower($key) !== strtolower($oldIndexName)) { - continue; - } - - unset($indexes[$key]); - } - - $changed = false; - $indexColumns = []; - foreach ($index->getColumns() as $columnName) { - $normalizedColumnName = strtolower($columnName); - if (! isset($columnNames[$normalizedColumnName])) { - unset($indexes[$key]); - continue 2; - } - - $indexColumns[] = $columnNames[$normalizedColumnName]; - if ($columnName === $columnNames[$normalizedColumnName]) { - continue; - } - - $changed = true; - } - - if (! $changed) { - continue; - } - - $indexes[$key] = new Index( - $index->getName(), - $indexColumns, - $index->isUnique(), - $index->isPrimary(), - $index->getFlags(), - ); - } - - foreach ($diff->getDroppedIndexes() as $index) { - $indexName = strtolower($index->getName()); - if (strlen($indexName) === 0 || ! isset($indexes[$indexName])) { - continue; - } - - unset($indexes[$indexName]); - } - - foreach ( - array_merge( - $diff->getModifiedIndexes(), - $diff->getAddedIndexes(), - $diff->getRenamedIndexes(), - ) as $index - ) { - $indexName = strtolower($index->getName()); - if (strlen($indexName) > 0) { - $indexes[$indexName] = $index; - } else { - $indexes[] = $index; - } - } - - return $indexes; - } - - /** @return ForeignKeyConstraint[] */ - private function getForeignKeysInAlteredTable(TableDiff $diff, Table $fromTable): array - { - $foreignKeys = $fromTable->getForeignKeys(); - $columnNames = $this->getColumnNamesInAlteredTable($diff, $fromTable); - - foreach ($foreignKeys as $key => $constraint) { - $changed = false; - $localColumns = []; - foreach ($constraint->getLocalColumns() as $columnName) { - $normalizedColumnName = strtolower($columnName); - if (! isset($columnNames[$normalizedColumnName])) { - unset($foreignKeys[$key]); - continue 2; - } - - $localColumns[] = $columnNames[$normalizedColumnName]; - if ($columnName === $columnNames[$normalizedColumnName]) { - continue; - } - - $changed = true; - } - - if (! $changed) { - continue; - } - - $foreignKeys[$key] = new ForeignKeyConstraint( - $localColumns, - $constraint->getForeignTableName(), - $constraint->getForeignColumns(), - $constraint->getName(), - $constraint->getOptions(), - ); - } - - foreach ($diff->getDroppedForeignKeys() as $constraint) { - if (! $constraint instanceof ForeignKeyConstraint) { - $constraint = new Identifier($constraint); - } - - $constraintName = strtolower($constraint->getName()); - if (strlen($constraintName) === 0 || ! isset($foreignKeys[$constraintName])) { - continue; - } - - unset($foreignKeys[$constraintName]); - } - - foreach (array_merge($diff->getModifiedForeignKeys(), $diff->getAddedForeignKeys()) as $constraint) { - $constraintName = strtolower($constraint->getName()); - if (strlen($constraintName) > 0) { - $foreignKeys[$constraintName] = $constraint; - } else { - $foreignKeys[] = $constraint; - } - } - - return $foreignKeys; - } - - /** @return Index[] */ - private function getPrimaryIndexInAlteredTable(TableDiff $diff, Table $fromTable): array - { - $primaryIndex = []; - - foreach ($this->getIndexesInAlteredTable($diff, $fromTable) as $index) { - if (! $index->isPrimary()) { - continue; - } - - $primaryIndex = [$index->getName() => $index]; - } - - return $primaryIndex; - } - - public function createSchemaManager(Connection $connection): SqliteSchemaManager - { - return new SqliteSchemaManager($connection, $this); - } -} diff --git a/docker/streamline-src/vendor/doctrine/dbal/src/Query/QueryBuilder.php b/docker/streamline-src/vendor/doctrine/dbal/src/Query/QueryBuilder.php deleted file mode 100644 index 4c5d6b8d..00000000 --- a/docker/streamline-src/vendor/doctrine/dbal/src/Query/QueryBuilder.php +++ /dev/null @@ -1,1759 +0,0 @@ - [], - 'distinct' => false, - 'from' => [], - 'join' => [], - 'set' => [], - 'where' => null, - 'groupBy' => [], - 'having' => null, - 'orderBy' => [], - 'values' => [], - 'for_update' => null, - ]; - - /** - * The array of SQL parts collected. - * - * @var mixed[] - */ - private array $sqlParts = self::SQL_PARTS_DEFAULTS; - - /** - * The complete SQL string for this query. - */ - private ?string $sql = null; - - /** - * The query parameters. - * - * @var list|array - */ - private $params = []; - - /** - * The parameter type map of this query. - * - * @var array|array - */ - private array $paramTypes = []; - - /** - * The type of query this is. Can be select, update or delete. - * - * @psalm-var self::SELECT|self::DELETE|self::UPDATE|self::INSERT - */ - private int $type = self::SELECT; - - /** - * The state of the query object. Can be dirty or clean. - * - * @psalm-var self::STATE_* - */ - private int $state = self::STATE_CLEAN; - - /** - * The index of the first result to retrieve. - */ - private int $firstResult = 0; - - /** - * The maximum number of results to retrieve or NULL to retrieve all results. - */ - private ?int $maxResults = null; - - /** - * The counter of bound parameters used with {@see bindValue). - */ - private int $boundCounter = 0; - - /** - * The query cache profile used for caching results. - */ - private ?QueryCacheProfile $resultCacheProfile = null; - - /** - * Initializes a new QueryBuilder. - * - * @param Connection $connection The DBAL Connection. - */ - public function __construct(Connection $connection) - { - $this->connection = $connection; - } - - /** - * Gets an ExpressionBuilder used for object-oriented construction of query expressions. - * This producer method is intended for convenient inline usage. Example: - * - * - * $qb = $conn->createQueryBuilder() - * ->select('u') - * ->from('users', 'u') - * ->where($qb->expr()->eq('u.id', 1)); - * - * - * For more complex expression construction, consider storing the expression - * builder object in a local variable. - * - * @return ExpressionBuilder - */ - public function expr() - { - return $this->connection->getExpressionBuilder(); - } - - /** - * Gets the type of the currently built query. - * - * @deprecated If necessary, track the type of the query being built outside of the builder. - * - * @return int - */ - public function getType() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5551', - 'Relying on the type of the query being built is deprecated.' - . ' If necessary, track the type of the query being built outside of the builder.', - ); - - return $this->type; - } - - /** - * Gets the associated DBAL Connection for this query builder. - * - * @deprecated Use the connection used to instantiate the builder instead. - * - * @return Connection - */ - public function getConnection() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5780', - '%s is deprecated. Use the connection used to instantiate the builder instead.', - __METHOD__, - ); - - return $this->connection; - } - - /** - * Gets the state of this query builder instance. - * - * @deprecated The builder state is an internal concern. - * - * @return int Either QueryBuilder::STATE_DIRTY or QueryBuilder::STATE_CLEAN. - * @psalm-return self::STATE_* - */ - public function getState() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5551', - 'Relying on the query builder state is deprecated as it is an internal concern.', - ); - - return $this->state; - } - - /** - * Prepares and executes an SQL query and returns the first row of the result - * as an associative array. - * - * @return array|false False is returned if no rows are found. - * - * @throws Exception - */ - public function fetchAssociative() - { - return $this->executeQuery()->fetchAssociative(); - } - - /** - * Prepares and executes an SQL query and returns the first row of the result - * as a numerically indexed array. - * - * @return array|false False is returned if no rows are found. - * - * @throws Exception - */ - public function fetchNumeric() - { - return $this->executeQuery()->fetchNumeric(); - } - - /** - * Prepares and executes an SQL query and returns the value of a single column - * of the first row of the result. - * - * @return mixed|false False is returned if no rows are found. - * - * @throws Exception - */ - public function fetchOne() - { - return $this->executeQuery()->fetchOne(); - } - - /** - * Prepares and executes an SQL query and returns the result as an array of numeric arrays. - * - * @return array> - * - * @throws Exception - */ - public function fetchAllNumeric(): array - { - return $this->executeQuery()->fetchAllNumeric(); - } - - /** - * Prepares and executes an SQL query and returns the result as an array of associative arrays. - * - * @return array> - * - * @throws Exception - */ - public function fetchAllAssociative(): array - { - return $this->executeQuery()->fetchAllAssociative(); - } - - /** - * Prepares and executes an SQL query and returns the result as an associative array with the keys - * mapped to the first column and the values mapped to the second column. - * - * @return array - * - * @throws Exception - */ - public function fetchAllKeyValue(): array - { - return $this->executeQuery()->fetchAllKeyValue(); - } - - /** - * Prepares and executes an SQL query and returns the result as an associative array with the keys mapped - * to the first column and the values being an associative array representing the rest of the columns - * and their values. - * - * @return array> - * - * @throws Exception - */ - public function fetchAllAssociativeIndexed(): array - { - return $this->executeQuery()->fetchAllAssociativeIndexed(); - } - - /** - * Prepares and executes an SQL query and returns the result as an array of the first column values. - * - * @return array - * - * @throws Exception - */ - public function fetchFirstColumn(): array - { - return $this->executeQuery()->fetchFirstColumn(); - } - - /** - * Executes an SQL query (SELECT) and returns a Result. - * - * @throws Exception - */ - public function executeQuery(): Result - { - return $this->connection->executeQuery( - $this->getSQL(), - $this->params, - $this->paramTypes, - $this->resultCacheProfile, - ); - } - - /** - * Executes an SQL statement and returns the number of affected rows. - * - * Should be used for INSERT, UPDATE and DELETE - * - * @return int The number of affected rows. - * - * @throws Exception - */ - public function executeStatement(): int - { - return $this->connection->executeStatement($this->getSQL(), $this->params, $this->paramTypes); - } - - /** - * Executes this query using the bound parameters and their types. - * - * @deprecated Use {@see executeQuery()} or {@see executeStatement()} instead. - * - * @return Result|int|string - * - * @throws Exception - */ - public function execute() - { - if ($this->type === self::SELECT) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4578', - 'QueryBuilder::execute() is deprecated, use QueryBuilder::executeQuery() for SQL queries instead.', - ); - - return $this->executeQuery(); - } - - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4578', - 'QueryBuilder::execute() is deprecated, use QueryBuilder::executeStatement() for SQL statements instead.', - ); - - return $this->connection->executeStatement($this->getSQL(), $this->params, $this->paramTypes); - } - - /** - * Gets the complete SQL string formed by the current specifications of this QueryBuilder. - * - * - * $qb = $em->createQueryBuilder() - * ->select('u') - * ->from('User', 'u') - * echo $qb->getSQL(); // SELECT u FROM User u - * - * - * @return string The SQL query string. - */ - public function getSQL() - { - if ($this->sql !== null && $this->state === self::STATE_CLEAN) { - return $this->sql; - } - - switch ($this->type) { - case self::INSERT: - $sql = $this->getSQLForInsert(); - break; - - case self::DELETE: - $sql = $this->getSQLForDelete(); - break; - - case self::UPDATE: - $sql = $this->getSQLForUpdate(); - break; - - case self::SELECT: - $sql = $this->getSQLForSelect(); - break; - } - - $this->state = self::STATE_CLEAN; - $this->sql = $sql; - - return $sql; - } - - /** - * Sets a query parameter for the query being constructed. - * - * - * $qb = $conn->createQueryBuilder() - * ->select('u') - * ->from('users', 'u') - * ->where('u.id = :user_id') - * ->setParameter('user_id', 1); - * - * - * @param int|string $key Parameter position or name - * @param mixed $value Parameter value - * @param int|string|Type|null $type Parameter type - * - * @return $this This QueryBuilder instance. - */ - public function setParameter($key, $value, $type = ParameterType::STRING) - { - if ($type !== null) { - $this->paramTypes[$key] = $type; - } else { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5550', - 'Using NULL as prepared statement parameter type is deprecated.' - . 'Omit or use ParameterType::STRING instead', - ); - } - - $this->params[$key] = $value; - - return $this; - } - - /** - * Sets a collection of query parameters for the query being constructed. - * - * - * $qb = $conn->createQueryBuilder() - * ->select('u') - * ->from('users', 'u') - * ->where('u.id = :user_id1 OR u.id = :user_id2') - * ->setParameters(array( - * 'user_id1' => 1, - * 'user_id2' => 2 - * )); - * - * - * @param list|array $params Parameters to set - * @param array|array $types Parameter types - * - * @return $this This QueryBuilder instance. - */ - public function setParameters(array $params, array $types = []) - { - $this->paramTypes = $types; - $this->params = $params; - - return $this; - } - - /** - * Gets all defined query parameters for the query being constructed indexed by parameter index or name. - * - * @return list|array The currently defined query parameters - */ - public function getParameters() - { - return $this->params; - } - - /** - * Gets a (previously set) query parameter of the query being constructed. - * - * @param mixed $key The key (index or name) of the bound parameter. - * - * @return mixed The value of the bound parameter. - */ - public function getParameter($key) - { - return $this->params[$key] ?? null; - } - - /** - * Gets all defined query parameter types for the query being constructed indexed by parameter index or name. - * - * @return array|array The currently defined - * query parameter types - */ - public function getParameterTypes() - { - return $this->paramTypes; - } - - /** - * Gets a (previously set) query parameter type of the query being constructed. - * - * @param int|string $key The key of the bound parameter type - * - * @return int|string|Type The value of the bound parameter type - */ - public function getParameterType($key) - { - return $this->paramTypes[$key] ?? ParameterType::STRING; - } - - /** - * Sets the position of the first result to retrieve (the "offset"). - * - * @param int $firstResult The first result to return. - * - * @return $this This QueryBuilder instance. - */ - public function setFirstResult($firstResult) - { - $this->state = self::STATE_DIRTY; - $this->firstResult = $firstResult; - - return $this; - } - - /** - * Gets the position of the first result the query object was set to retrieve (the "offset"). - * - * @return int The position of the first result. - */ - public function getFirstResult() - { - return $this->firstResult; - } - - /** - * Sets the maximum number of results to retrieve (the "limit"). - * - * @param int|null $maxResults The maximum number of results to retrieve or NULL to retrieve all results. - * - * @return $this This QueryBuilder instance. - */ - public function setMaxResults($maxResults) - { - $this->state = self::STATE_DIRTY; - $this->maxResults = $maxResults; - - return $this; - } - - /** - * Gets the maximum number of results the query object was set to retrieve (the "limit"). - * Returns NULL if all results will be returned. - * - * @return int|null The maximum number of results. - */ - public function getMaxResults() - { - return $this->maxResults; - } - - /** - * Locks the queried rows for a subsequent update. - * - * @return $this - */ - public function forUpdate(int $conflictResolutionMode = ConflictResolutionMode::ORDINARY): self - { - $this->state = self::STATE_DIRTY; - - $this->sqlParts['for_update'] = new ForUpdate($conflictResolutionMode); - - return $this; - } - - /** - * Either appends to or replaces a single, generic query part. - * - * The available parts are: 'select', 'from', 'set', 'where', - * 'groupBy', 'having' and 'orderBy'. - * - * @param string $sqlPartName - * @param mixed $sqlPart - * @param bool $append - * - * @return $this This QueryBuilder instance. - */ - public function add($sqlPartName, $sqlPart, $append = false) - { - $isArray = is_array($sqlPart); - $isMultiple = is_array($this->sqlParts[$sqlPartName]); - - if ($isMultiple && ! $isArray) { - $sqlPart = [$sqlPart]; - } - - $this->state = self::STATE_DIRTY; - - if ($append) { - if ( - $sqlPartName === 'orderBy' - || $sqlPartName === 'groupBy' - || $sqlPartName === 'select' - || $sqlPartName === 'set' - ) { - foreach ($sqlPart as $part) { - $this->sqlParts[$sqlPartName][] = $part; - } - } elseif ($isArray && is_array($sqlPart[key($sqlPart)])) { - $key = key($sqlPart); - $this->sqlParts[$sqlPartName][$key][] = $sqlPart[$key]; - } elseif ($isMultiple) { - $this->sqlParts[$sqlPartName][] = $sqlPart; - } else { - $this->sqlParts[$sqlPartName] = $sqlPart; - } - - return $this; - } - - $this->sqlParts[$sqlPartName] = $sqlPart; - - return $this; - } - - /** - * Specifies an item that is to be returned in the query result. - * Replaces any previously specified selections, if any. - * - * USING AN ARRAY ARGUMENT IS DEPRECATED. Pass each value as an individual argument. - * - * - * $qb = $conn->createQueryBuilder() - * ->select('u.id', 'p.id') - * ->from('users', 'u') - * ->leftJoin('u', 'phonenumbers', 'p', 'u.id = p.user_id'); - * - * - * @param string|string[]|null $select The selection expression. USING AN ARRAY OR NULL IS DEPRECATED. - * Pass each value as an individual argument. - * - * @return $this This QueryBuilder instance. - */ - public function select($select = null/*, string ...$selects*/) - { - $this->type = self::SELECT; - - if ($select === null) { - return $this; - } - - if (is_array($select)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3837', - 'Passing an array for the first argument to QueryBuilder::select() is deprecated, ' . - 'pass each value as an individual variadic argument instead.', - ); - } - - $selects = is_array($select) ? $select : func_get_args(); - - return $this->add('select', $selects); - } - - /** - * Adds or removes DISTINCT to/from the query. - * - * - * $qb = $conn->createQueryBuilder() - * ->select('u.id') - * ->distinct() - * ->from('users', 'u') - * - * - * @return $this This QueryBuilder instance. - */ - public function distinct(/* bool $distinct = true */): self - { - $this->sqlParts['distinct'] = func_num_args() < 1 || func_get_arg(0); - $this->state = self::STATE_DIRTY; - - return $this; - } - - /** - * Adds an item that is to be returned in the query result. - * - * USING AN ARRAY ARGUMENT IS DEPRECATED. Pass each value as an individual argument. - * - * - * $qb = $conn->createQueryBuilder() - * ->select('u.id') - * ->addSelect('p.id') - * ->from('users', 'u') - * ->leftJoin('u', 'phonenumbers', 'u.id = p.user_id'); - * - * - * @param string|string[]|null $select The selection expression. USING AN ARRAY OR NULL IS DEPRECATED. - * Pass each value as an individual argument. - * - * @return $this This QueryBuilder instance. - */ - public function addSelect($select = null/*, string ...$selects*/) - { - $this->type = self::SELECT; - - if ($select === null) { - return $this; - } - - if (is_array($select)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3837', - 'Passing an array for the first argument to QueryBuilder::addSelect() is deprecated, ' . - 'pass each value as an individual variadic argument instead.', - ); - } - - $selects = is_array($select) ? $select : func_get_args(); - - return $this->add('select', $selects, true); - } - - /** - * Turns the query being built into a bulk delete query that ranges over - * a certain table. - * - * - * $qb = $conn->createQueryBuilder() - * ->delete('users', 'u') - * ->where('u.id = :user_id') - * ->setParameter(':user_id', 1); - * - * - * @param string $delete The table whose rows are subject to the deletion. - * @param string $alias The table alias used in the constructed query. - * - * @return $this This QueryBuilder instance. - */ - public function delete($delete = null, $alias = null) - { - $this->type = self::DELETE; - - if ($delete === null) { - return $this; - } - - return $this->add('from', [ - 'table' => $delete, - 'alias' => $alias, - ]); - } - - /** - * Turns the query being built into a bulk update query that ranges over - * a certain table - * - * - * $qb = $conn->createQueryBuilder() - * ->update('counters', 'c') - * ->set('c.value', 'c.value + 1') - * ->where('c.id = ?'); - * - * - * @param string $update The table whose rows are subject to the update. - * @param string $alias The table alias used in the constructed query. - * - * @return $this This QueryBuilder instance. - */ - public function update($update = null, $alias = null) - { - $this->type = self::UPDATE; - - if ($update === null) { - return $this; - } - - return $this->add('from', [ - 'table' => $update, - 'alias' => $alias, - ]); - } - - /** - * Turns the query being built into an insert query that inserts into - * a certain table - * - * - * $qb = $conn->createQueryBuilder() - * ->insert('users') - * ->values( - * array( - * 'name' => '?', - * 'password' => '?' - * ) - * ); - * - * - * @param string $insert The table into which the rows should be inserted. - * - * @return $this This QueryBuilder instance. - */ - public function insert($insert = null) - { - $this->type = self::INSERT; - - if ($insert === null) { - return $this; - } - - return $this->add('from', ['table' => $insert]); - } - - /** - * Creates and adds a query root corresponding to the table identified by the - * given alias, forming a cartesian product with any existing query roots. - * - * - * $qb = $conn->createQueryBuilder() - * ->select('u.id') - * ->from('users', 'u') - * - * - * @param string $from The table. - * @param string|null $alias The alias of the table. - * - * @return $this This QueryBuilder instance. - */ - public function from($from, $alias = null) - { - return $this->add('from', [ - 'table' => $from, - 'alias' => $alias, - ], true); - } - - /** - * Creates and adds a join to the query. - * - * - * $qb = $conn->createQueryBuilder() - * ->select('u.name') - * ->from('users', 'u') - * ->join('u', 'phonenumbers', 'p', 'p.is_primary = 1'); - * - * - * @param string $fromAlias The alias that points to a from clause. - * @param string $join The table name to join. - * @param string $alias The alias of the join table. - * @param string $condition The condition for the join. - * - * @return $this This QueryBuilder instance. - */ - public function join($fromAlias, $join, $alias, $condition = null) - { - return $this->innerJoin($fromAlias, $join, $alias, $condition); - } - - /** - * Creates and adds a join to the query. - * - * - * $qb = $conn->createQueryBuilder() - * ->select('u.name') - * ->from('users', 'u') - * ->innerJoin('u', 'phonenumbers', 'p', 'p.is_primary = 1'); - * - * - * @param string $fromAlias The alias that points to a from clause. - * @param string $join The table name to join. - * @param string $alias The alias of the join table. - * @param string $condition The condition for the join. - * - * @return $this This QueryBuilder instance. - */ - public function innerJoin($fromAlias, $join, $alias, $condition = null) - { - return $this->add('join', [ - $fromAlias => [ - 'joinType' => 'inner', - 'joinTable' => $join, - 'joinAlias' => $alias, - 'joinCondition' => $condition, - ], - ], true); - } - - /** - * Creates and adds a left join to the query. - * - * - * $qb = $conn->createQueryBuilder() - * ->select('u.name') - * ->from('users', 'u') - * ->leftJoin('u', 'phonenumbers', 'p', 'p.is_primary = 1'); - * - * - * @param string $fromAlias The alias that points to a from clause. - * @param string $join The table name to join. - * @param string $alias The alias of the join table. - * @param string $condition The condition for the join. - * - * @return $this This QueryBuilder instance. - */ - public function leftJoin($fromAlias, $join, $alias, $condition = null) - { - return $this->add('join', [ - $fromAlias => [ - 'joinType' => 'left', - 'joinTable' => $join, - 'joinAlias' => $alias, - 'joinCondition' => $condition, - ], - ], true); - } - - /** - * Creates and adds a right join to the query. - * - * - * $qb = $conn->createQueryBuilder() - * ->select('u.name') - * ->from('users', 'u') - * ->rightJoin('u', 'phonenumbers', 'p', 'p.is_primary = 1'); - * - * - * @param string $fromAlias The alias that points to a from clause. - * @param string $join The table name to join. - * @param string $alias The alias of the join table. - * @param string $condition The condition for the join. - * - * @return $this This QueryBuilder instance. - */ - public function rightJoin($fromAlias, $join, $alias, $condition = null) - { - return $this->add('join', [ - $fromAlias => [ - 'joinType' => 'right', - 'joinTable' => $join, - 'joinAlias' => $alias, - 'joinCondition' => $condition, - ], - ], true); - } - - /** - * Sets a new value for a column in a bulk update query. - * - * - * $qb = $conn->createQueryBuilder() - * ->update('counters', 'c') - * ->set('c.value', 'c.value + 1') - * ->where('c.id = ?'); - * - * - * @param string $key The column to set. - * @param string $value The value, expression, placeholder, etc. - * - * @return $this This QueryBuilder instance. - */ - public function set($key, $value) - { - return $this->add('set', $key . ' = ' . $value, true); - } - - /** - * Specifies one or more restrictions to the query result. - * Replaces any previously specified restrictions, if any. - * - * - * $qb = $conn->createQueryBuilder() - * ->select('c.value') - * ->from('counters', 'c') - * ->where('c.id = ?'); - * - * // You can optionally programmatically build and/or expressions - * $qb = $conn->createQueryBuilder(); - * - * $or = $qb->expr()->orx(); - * $or->add($qb->expr()->eq('c.id', 1)); - * $or->add($qb->expr()->eq('c.id', 2)); - * - * $qb->update('counters', 'c') - * ->set('c.value', 'c.value + 1') - * ->where($or); - * - * - * @param mixed $predicates The restriction predicates. - * - * @return $this This QueryBuilder instance. - */ - public function where($predicates) - { - if (! (func_num_args() === 1 && $predicates instanceof CompositeExpression)) { - $predicates = CompositeExpression::and(...func_get_args()); - } - - return $this->add('where', $predicates); - } - - /** - * Adds one or more restrictions to the query results, forming a logical - * conjunction with any previously specified restrictions. - * - * - * $qb = $conn->createQueryBuilder() - * ->select('u') - * ->from('users', 'u') - * ->where('u.username LIKE ?') - * ->andWhere('u.is_active = 1'); - * - * - * @see where() - * - * @param mixed $where The query restrictions. - * - * @return $this This QueryBuilder instance. - */ - public function andWhere($where) - { - $args = func_get_args(); - $where = $this->getQueryPart('where'); - - if ($where instanceof CompositeExpression && $where->getType() === CompositeExpression::TYPE_AND) { - $where = $where->with(...$args); - } else { - array_unshift($args, $where); - $where = CompositeExpression::and(...$args); - } - - return $this->add('where', $where, true); - } - - /** - * Adds one or more restrictions to the query results, forming a logical - * disjunction with any previously specified restrictions. - * - * - * $qb = $em->createQueryBuilder() - * ->select('u.name') - * ->from('users', 'u') - * ->where('u.id = 1') - * ->orWhere('u.id = 2'); - * - * - * @see where() - * - * @param mixed $where The WHERE statement. - * - * @return $this This QueryBuilder instance. - */ - public function orWhere($where) - { - $args = func_get_args(); - $where = $this->getQueryPart('where'); - - if ($where instanceof CompositeExpression && $where->getType() === CompositeExpression::TYPE_OR) { - $where = $where->with(...$args); - } else { - array_unshift($args, $where); - $where = CompositeExpression::or(...$args); - } - - return $this->add('where', $where, true); - } - - /** - * Specifies a grouping over the results of the query. - * Replaces any previously specified groupings, if any. - * - * USING AN ARRAY ARGUMENT IS DEPRECATED. Pass each value as an individual argument. - * - * - * $qb = $conn->createQueryBuilder() - * ->select('u.name') - * ->from('users', 'u') - * ->groupBy('u.id'); - * - * - * @param string|string[] $groupBy The grouping expression. USING AN ARRAY IS DEPRECATED. - * Pass each value as an individual argument. - * - * @return $this This QueryBuilder instance. - */ - public function groupBy($groupBy/*, string ...$groupBys*/) - { - if (is_array($groupBy) && count($groupBy) === 0) { - return $this; - } - - if (is_array($groupBy)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3837', - 'Passing an array for the first argument to QueryBuilder::groupBy() is deprecated, ' . - 'pass each value as an individual variadic argument instead.', - ); - } - - $groupBy = is_array($groupBy) ? $groupBy : func_get_args(); - - return $this->add('groupBy', $groupBy, false); - } - - /** - * Adds a grouping expression to the query. - * - * USING AN ARRAY ARGUMENT IS DEPRECATED. Pass each value as an individual argument. - * - * - * $qb = $conn->createQueryBuilder() - * ->select('u.name') - * ->from('users', 'u') - * ->groupBy('u.lastLogin') - * ->addGroupBy('u.createdAt'); - * - * - * @param string|string[] $groupBy The grouping expression. USING AN ARRAY IS DEPRECATED. - * Pass each value as an individual argument. - * - * @return $this This QueryBuilder instance. - */ - public function addGroupBy($groupBy/*, string ...$groupBys*/) - { - if (is_array($groupBy) && count($groupBy) === 0) { - return $this; - } - - if (is_array($groupBy)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3837', - 'Passing an array for the first argument to QueryBuilder::addGroupBy() is deprecated, ' . - 'pass each value as an individual variadic argument instead.', - ); - } - - $groupBy = is_array($groupBy) ? $groupBy : func_get_args(); - - return $this->add('groupBy', $groupBy, true); - } - - /** - * Sets a value for a column in an insert query. - * - * - * $qb = $conn->createQueryBuilder() - * ->insert('users') - * ->values( - * array( - * 'name' => '?' - * ) - * ) - * ->setValue('password', '?'); - * - * - * @param string $column The column into which the value should be inserted. - * @param string $value The value that should be inserted into the column. - * - * @return $this This QueryBuilder instance. - */ - public function setValue($column, $value) - { - $this->sqlParts['values'][$column] = $value; - - return $this; - } - - /** - * Specifies values for an insert query indexed by column names. - * Replaces any previous values, if any. - * - * - * $qb = $conn->createQueryBuilder() - * ->insert('users') - * ->values( - * array( - * 'name' => '?', - * 'password' => '?' - * ) - * ); - * - * - * @param mixed[] $values The values to specify for the insert query indexed by column names. - * - * @return $this This QueryBuilder instance. - */ - public function values(array $values) - { - return $this->add('values', $values); - } - - /** - * Specifies a restriction over the groups of the query. - * Replaces any previous having restrictions, if any. - * - * @param mixed $having The restriction over the groups. - * - * @return $this This QueryBuilder instance. - */ - public function having($having) - { - if (! (func_num_args() === 1 && $having instanceof CompositeExpression)) { - $having = CompositeExpression::and(...func_get_args()); - } - - return $this->add('having', $having); - } - - /** - * Adds a restriction over the groups of the query, forming a logical - * conjunction with any existing having restrictions. - * - * @param mixed $having The restriction to append. - * - * @return $this This QueryBuilder instance. - */ - public function andHaving($having) - { - $args = func_get_args(); - $having = $this->getQueryPart('having'); - - if ($having instanceof CompositeExpression && $having->getType() === CompositeExpression::TYPE_AND) { - $having = $having->with(...$args); - } else { - array_unshift($args, $having); - $having = CompositeExpression::and(...$args); - } - - return $this->add('having', $having); - } - - /** - * Adds a restriction over the groups of the query, forming a logical - * disjunction with any existing having restrictions. - * - * @param mixed $having The restriction to add. - * - * @return $this This QueryBuilder instance. - */ - public function orHaving($having) - { - $args = func_get_args(); - $having = $this->getQueryPart('having'); - - if ($having instanceof CompositeExpression && $having->getType() === CompositeExpression::TYPE_OR) { - $having = $having->with(...$args); - } else { - array_unshift($args, $having); - $having = CompositeExpression::or(...$args); - } - - return $this->add('having', $having); - } - - /** - * Specifies an ordering for the query results. - * Replaces any previously specified orderings, if any. - * - * @param string $sort The ordering expression. - * @param string $order The ordering direction. - * - * @return $this This QueryBuilder instance. - */ - public function orderBy($sort, $order = null) - { - return $this->add('orderBy', $sort . ' ' . ($order ?? 'ASC'), false); - } - - /** - * Adds an ordering to the query results. - * - * @param string $sort The ordering expression. - * @param string $order The ordering direction. - * - * @return $this This QueryBuilder instance. - */ - public function addOrderBy($sort, $order = null) - { - return $this->add('orderBy', $sort . ' ' . ($order ?? 'ASC'), true); - } - - /** - * Gets a query part by its name. - * - * @deprecated The query parts are implementation details and should not be relied upon. - * - * @param string $queryPartName - * - * @return mixed - */ - public function getQueryPart($queryPartName) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6179', - 'Getting query parts is deprecated as they are implementation details.', - ); - - return $this->sqlParts[$queryPartName]; - } - - /** - * Gets all query parts. - * - * @deprecated The query parts are implementation details and should not be relied upon. - * - * @return mixed[] - */ - public function getQueryParts() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6179', - 'Getting query parts is deprecated as they are implementation details.', - ); - - return $this->sqlParts; - } - - /** - * Resets SQL parts. - * - * @deprecated Use the dedicated reset*() methods instead. - * - * @param string[]|null $queryPartNames - * - * @return $this This QueryBuilder instance. - */ - public function resetQueryParts($queryPartNames = null) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6193', - '%s() is deprecated, instead use dedicated reset methods for the parts that shall be reset.', - __METHOD__, - ); - - $queryPartNames ??= array_keys($this->sqlParts); - - foreach ($queryPartNames as $queryPartName) { - $this->sqlParts[$queryPartName] = self::SQL_PARTS_DEFAULTS[$queryPartName]; - } - - $this->state = self::STATE_DIRTY; - - return $this; - } - - /** - * Resets a single SQL part. - * - * @deprecated Use the dedicated reset*() methods instead. - * - * @param string $queryPartName - * - * @return $this This QueryBuilder instance. - */ - public function resetQueryPart($queryPartName) - { - if ($queryPartName === 'distinct') { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6193', - 'Calling %s() with "distinct" is deprecated, call distinct(false) instead.', - __METHOD__, - ); - - return $this->distinct(false); - } - - $newMethodName = 'reset' . ucfirst($queryPartName); - if (array_key_exists($queryPartName, self::SQL_PARTS_DEFAULTS) && method_exists($this, $newMethodName)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6193', - 'Calling %s() with "%s" is deprecated, call %s() instead.', - __METHOD__, - $queryPartName, - $newMethodName, - ); - - return $this->$newMethodName(); - } - - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6193', - 'Calling %s() with "%s" is deprecated without replacement.', - __METHOD__, - $queryPartName, - $newMethodName, - ); - - $this->sqlParts[$queryPartName] = self::SQL_PARTS_DEFAULTS[$queryPartName]; - - $this->state = self::STATE_DIRTY; - - return $this; - } - - /** - * Resets the WHERE conditions for the query. - * - * @return $this This QueryBuilder instance. - */ - public function resetWhere(): self - { - $this->sqlParts['where'] = self::SQL_PARTS_DEFAULTS['where']; - - $this->state = self::STATE_DIRTY; - - return $this; - } - - /** - * Resets the grouping for the query. - * - * @return $this This QueryBuilder instance. - */ - public function resetGroupBy(): self - { - $this->sqlParts['groupBy'] = self::SQL_PARTS_DEFAULTS['groupBy']; - - $this->state = self::STATE_DIRTY; - - return $this; - } - - /** - * Resets the HAVING conditions for the query. - * - * @return $this This QueryBuilder instance. - */ - public function resetHaving(): self - { - $this->sqlParts['having'] = self::SQL_PARTS_DEFAULTS['having']; - - $this->state = self::STATE_DIRTY; - - return $this; - } - - /** - * Resets the ordering for the query. - * - * @return $this This QueryBuilder instance. - */ - public function resetOrderBy(): self - { - $this->sqlParts['orderBy'] = self::SQL_PARTS_DEFAULTS['orderBy']; - - $this->state = self::STATE_DIRTY; - - return $this; - } - - /** @throws Exception */ - private function getSQLForSelect(): string - { - return $this->connection->getDatabasePlatform() - ->createSelectSQLBuilder() - ->buildSQL( - new SelectQuery( - $this->sqlParts['distinct'], - $this->sqlParts['select'], - $this->getFromClauses(), - $this->sqlParts['where'], - $this->sqlParts['groupBy'], - $this->sqlParts['having'], - $this->sqlParts['orderBy'], - new Limit($this->maxResults, $this->firstResult), - $this->sqlParts['for_update'], - ), - ); - } - - /** - * @return string[] - * - * @throws QueryException - */ - private function getFromClauses(): array - { - $fromClauses = []; - $knownAliases = []; - - // Loop through all FROM clauses - foreach ($this->sqlParts['from'] as $from) { - if ($from['alias'] === null) { - $tableSql = $from['table']; - $tableReference = $from['table']; - } else { - $tableSql = $from['table'] . ' ' . $from['alias']; - $tableReference = $from['alias']; - } - - $knownAliases[$tableReference] = true; - - $fromClauses[$tableReference] = $tableSql . $this->getSQLForJoins($tableReference, $knownAliases); - } - - $this->verifyAllAliasesAreKnown($knownAliases); - - return $fromClauses; - } - - /** - * @param array $knownAliases - * - * @throws QueryException - */ - private function verifyAllAliasesAreKnown(array $knownAliases): void - { - foreach ($this->sqlParts['join'] as $fromAlias => $joins) { - if (! isset($knownAliases[$fromAlias])) { - throw QueryException::unknownAlias($fromAlias, array_keys($knownAliases)); - } - } - } - - /** - * Converts this instance into an INSERT string in SQL. - */ - private function getSQLForInsert(): string - { - return 'INSERT INTO ' . $this->sqlParts['from']['table'] . - ' (' . implode(', ', array_keys($this->sqlParts['values'])) . ')' . - ' VALUES(' . implode(', ', $this->sqlParts['values']) . ')'; - } - - /** - * Converts this instance into an UPDATE string in SQL. - */ - private function getSQLForUpdate(): string - { - $table = $this->sqlParts['from']['table'] - . ($this->sqlParts['from']['alias'] ? ' ' . $this->sqlParts['from']['alias'] : ''); - - return 'UPDATE ' . $table - . ' SET ' . implode(', ', $this->sqlParts['set']) - . ($this->sqlParts['where'] !== null ? ' WHERE ' . ((string) $this->sqlParts['where']) : ''); - } - - /** - * Converts this instance into a DELETE string in SQL. - */ - private function getSQLForDelete(): string - { - $table = $this->sqlParts['from']['table'] - . ($this->sqlParts['from']['alias'] ? ' ' . $this->sqlParts['from']['alias'] : ''); - - return 'DELETE FROM ' . $table - . ($this->sqlParts['where'] !== null ? ' WHERE ' . ((string) $this->sqlParts['where']) : ''); - } - - /** - * Gets a string representation of this QueryBuilder which corresponds to - * the final SQL query being constructed. - * - * @return string The string representation of this QueryBuilder. - */ - public function __toString() - { - return $this->getSQL(); - } - - /** - * Creates a new named parameter and bind the value $value to it. - * - * This method provides a shortcut for {@see Statement::bindValue()} - * when using prepared statements. - * - * The parameter $value specifies the value that you want to bind. If - * $placeholder is not provided createNamedParameter() will automatically - * create a placeholder for you. An automatic placeholder will be of the - * name ':dcValue1', ':dcValue2' etc. - * - * Example: - * - * $value = 2; - * $q->eq( 'id', $q->createNamedParameter( $value ) ); - * $stmt = $q->executeQuery(); // executed with 'id = 2' - * - * - * @link http://www.zetacomponents.org - * - * @param mixed $value - * @param int|string|Type|null $type - * @param string $placeHolder The name to bind with. The string must start with a colon ':'. - * - * @return string the placeholder name used. - */ - public function createNamedParameter($value, $type = ParameterType::STRING, $placeHolder = null) - { - if ($placeHolder === null) { - $this->boundCounter++; - $placeHolder = ':dcValue' . $this->boundCounter; - } - - $this->setParameter(substr($placeHolder, 1), $value, $type); - - return $placeHolder; - } - - /** - * Creates a new positional parameter and bind the given value to it. - * - * Attention: If you are using positional parameters with the query builder you have - * to be very careful to bind all parameters in the order they appear in the SQL - * statement , otherwise they get bound in the wrong order which can lead to serious - * bugs in your code. - * - * Example: - * - * $qb = $conn->createQueryBuilder(); - * $qb->select('u.*') - * ->from('users', 'u') - * ->where('u.username = ' . $qb->createPositionalParameter('Foo', ParameterType::STRING)) - * ->orWhere('u.username = ' . $qb->createPositionalParameter('Bar', ParameterType::STRING)) - * - * - * @param mixed $value - * @param int|string|Type|null $type - * - * @return string - */ - public function createPositionalParameter($value, $type = ParameterType::STRING) - { - $this->setParameter($this->boundCounter, $value, $type); - $this->boundCounter++; - - return '?'; - } - - /** - * @param string $fromAlias - * @param array $knownAliases - * - * @throws QueryException - */ - private function getSQLForJoins($fromAlias, array &$knownAliases): string - { - $sql = ''; - - if (isset($this->sqlParts['join'][$fromAlias])) { - foreach ($this->sqlParts['join'][$fromAlias] as $join) { - if (array_key_exists($join['joinAlias'], $knownAliases)) { - throw QueryException::nonUniqueAlias((string) $join['joinAlias'], array_keys($knownAliases)); - } - - $sql .= ' ' . strtoupper($join['joinType']) - . ' JOIN ' . $join['joinTable'] . ' ' . $join['joinAlias']; - if ($join['joinCondition'] !== null) { - $sql .= ' ON ' . $join['joinCondition']; - } - - $knownAliases[$join['joinAlias']] = true; - } - - foreach ($this->sqlParts['join'][$fromAlias] as $join) { - $sql .= $this->getSQLForJoins($join['joinAlias'], $knownAliases); - } - } - - return $sql; - } - - /** - * Deep clone of all expression objects in the SQL parts. - * - * @return void - */ - public function __clone() - { - foreach ($this->sqlParts as $part => $elements) { - if (is_array($this->sqlParts[$part])) { - foreach ($this->sqlParts[$part] as $idx => $element) { - if (! is_object($element)) { - continue; - } - - $this->sqlParts[$part][$idx] = clone $element; - } - } elseif (is_object($elements)) { - $this->sqlParts[$part] = clone $elements; - } - } - - foreach ($this->params as $name => $param) { - if (! is_object($param)) { - continue; - } - - $this->params[$name] = clone $param; - } - } - - /** - * Enables caching of the results of this query, for given amount of seconds - * and optionally specified which key to use for the cache entry. - * - * @return $this - */ - public function enableResultCache(QueryCacheProfile $cacheProfile): self - { - $this->resultCacheProfile = $cacheProfile; - - return $this; - } - - /** - * Disables caching of the results of this query. - * - * @return $this - */ - public function disableResultCache(): self - { - $this->resultCacheProfile = null; - - return $this; - } -} diff --git a/docker/streamline-src/vendor/doctrine/dbal/src/Result.php b/docker/streamline-src/vendor/doctrine/dbal/src/Result.php deleted file mode 100644 index 92235d06..00000000 --- a/docker/streamline-src/vendor/doctrine/dbal/src/Result.php +++ /dev/null @@ -1,339 +0,0 @@ -result = $result; - $this->connection = $connection; - } - - /** - * Returns the next row of the result as a numeric array or FALSE if there are no more rows. - * - * @return list|false - * - * @throws Exception - */ - public function fetchNumeric() - { - try { - return $this->result->fetchNumeric(); - } catch (DriverException $e) { - throw $this->connection->convertException($e); - } - } - - /** - * Returns the next row of the result as an associative array or FALSE if there are no more rows. - * - * @return array|false - * - * @throws Exception - */ - public function fetchAssociative() - { - try { - return $this->result->fetchAssociative(); - } catch (DriverException $e) { - throw $this->connection->convertException($e); - } - } - - /** - * Returns the first value of the next row of the result or FALSE if there are no more rows. - * - * @return mixed|false - * - * @throws Exception - */ - public function fetchOne() - { - try { - return $this->result->fetchOne(); - } catch (DriverException $e) { - throw $this->connection->convertException($e); - } - } - - /** - * Returns an array containing all of the result rows represented as numeric arrays. - * - * @return list> - * - * @throws Exception - */ - public function fetchAllNumeric(): array - { - try { - return $this->result->fetchAllNumeric(); - } catch (DriverException $e) { - throw $this->connection->convertException($e); - } - } - - /** - * Returns an array containing all of the result rows represented as associative arrays. - * - * @return list> - * - * @throws Exception - */ - public function fetchAllAssociative(): array - { - try { - return $this->result->fetchAllAssociative(); - } catch (DriverException $e) { - throw $this->connection->convertException($e); - } - } - - /** - * Returns an array containing the values of the first column of the result. - * - * @return array - * - * @throws Exception - */ - public function fetchAllKeyValue(): array - { - $this->ensureHasKeyValue(); - - $data = []; - - foreach ($this->fetchAllNumeric() as [$key, $value]) { - $data[$key] = $value; - } - - return $data; - } - - /** - * Returns an associative array with the keys mapped to the first column and the values being - * an associative array representing the rest of the columns and their values. - * - * @return array> - * - * @throws Exception - */ - public function fetchAllAssociativeIndexed(): array - { - $data = []; - - foreach ($this->fetchAllAssociative() as $row) { - $data[array_shift($row)] = $row; - } - - return $data; - } - - /** - * @return list - * - * @throws Exception - */ - public function fetchFirstColumn(): array - { - try { - return $this->result->fetchFirstColumn(); - } catch (DriverException $e) { - throw $this->connection->convertException($e); - } - } - - /** - * @return Traversable> - * - * @throws Exception - */ - public function iterateNumeric(): Traversable - { - while (($row = $this->fetchNumeric()) !== false) { - yield $row; - } - } - - /** - * @return Traversable> - * - * @throws Exception - */ - public function iterateAssociative(): Traversable - { - while (($row = $this->fetchAssociative()) !== false) { - yield $row; - } - } - - /** - * @return Traversable - * - * @throws Exception - */ - public function iterateKeyValue(): Traversable - { - $this->ensureHasKeyValue(); - - foreach ($this->iterateNumeric() as [$key, $value]) { - yield $key => $value; - } - } - - /** - * Returns an iterator over the result set with the keys mapped to the first column and the values being - * an associative array representing the rest of the columns and their values. - * - * @return Traversable> - * - * @throws Exception - */ - public function iterateAssociativeIndexed(): Traversable - { - foreach ($this->iterateAssociative() as $row) { - yield array_shift($row) => $row; - } - } - - /** - * @return Traversable - * - * @throws Exception - */ - public function iterateColumn(): Traversable - { - while (($value = $this->fetchOne()) !== false) { - yield $value; - } - } - - /** @throws Exception */ - public function rowCount(): int - { - try { - return $this->result->rowCount(); - } catch (DriverException $e) { - throw $this->connection->convertException($e); - } - } - - /** @throws Exception */ - public function columnCount(): int - { - try { - return $this->result->columnCount(); - } catch (DriverException $e) { - throw $this->connection->convertException($e); - } - } - - public function free(): void - { - $this->result->free(); - } - - /** @throws Exception */ - private function ensureHasKeyValue(): void - { - $columnCount = $this->columnCount(); - - if ($columnCount < 2) { - throw NoKeyValue::fromColumnCount($columnCount); - } - } - - /** - * BC layer for a wide-spread use-case of old DBAL APIs - * - * @deprecated Use {@see fetchNumeric()}, {@see fetchAssociative()} or {@see fetchOne()} instead. - * - * @psalm-param FetchMode::* $mode - * - * @return mixed - * - * @throws Exception - */ - public function fetch(int $mode = FetchMode::ASSOCIATIVE) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4007', - '%s is deprecated, please use fetchNumeric(), fetchAssociative() or fetchOne() instead.', - __METHOD__, - ); - - if (func_num_args() > 1) { - throw new LogicException('Only invocations with one argument are still supported by this legacy API.'); - } - - if ($mode === FetchMode::ASSOCIATIVE) { - return $this->fetchAssociative(); - } - - if ($mode === FetchMode::NUMERIC) { - return $this->fetchNumeric(); - } - - if ($mode === FetchMode::COLUMN) { - return $this->fetchOne(); - } - - throw new LogicException('Only fetch modes declared on Doctrine\DBAL\FetchMode are supported by legacy API.'); - } - - /** - * BC layer for a wide-spread use-case of old DBAL APIs - * - * @deprecated Use {@see fetchAllNumeric()}, {@see fetchAllAssociative()} or {@see fetchFirstColumn()} instead. - * - * @psalm-param FetchMode::* $mode - * - * @return list - * - * @throws Exception - */ - public function fetchAll(int $mode = FetchMode::ASSOCIATIVE): array - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4007', - '%s is deprecated, please use fetchAllNumeric(), fetchAllAssociative() or fetchFirstColumn() instead.', - __METHOD__, - ); - - if (func_num_args() > 1) { - throw new LogicException('Only invocations with one argument are still supported by this legacy API.'); - } - - if ($mode === FetchMode::ASSOCIATIVE) { - return $this->fetchAllAssociative(); - } - - if ($mode === FetchMode::NUMERIC) { - return $this->fetchAllNumeric(); - } - - if ($mode === FetchMode::COLUMN) { - return $this->fetchFirstColumn(); - } - - throw new LogicException('Only fetch modes declared on Doctrine\DBAL\FetchMode are supported by legacy API.'); - } -} diff --git a/docker/streamline-src/vendor/doctrine/dbal/src/Schema/AbstractAsset.php b/docker/streamline-src/vendor/doctrine/dbal/src/Schema/AbstractAsset.php deleted file mode 100644 index 6934133f..00000000 --- a/docker/streamline-src/vendor/doctrine/dbal/src/Schema/AbstractAsset.php +++ /dev/null @@ -1,224 +0,0 @@ - Table($tableName)); if you want to rename the table, you have to make sure this does not get - * recreated during schema migration. - */ -abstract class AbstractAsset -{ - /** @var string */ - protected $_name = ''; - - /** - * Namespace of the asset. If none isset the default namespace is assumed. - * - * @var string|null - */ - protected $_namespace; - - /** @var bool */ - protected $_quoted = false; - - /** - * Sets the name of this asset. - * - * @param string $name - * - * @return void - */ - protected function _setName($name) - { - if ($this->isIdentifierQuoted($name)) { - $this->_quoted = true; - $name = $this->trimQuotes($name); - } - - if (strpos($name, '.') !== false) { - $parts = explode('.', $name); - $this->_namespace = $parts[0]; - $name = $parts[1]; - } - - $this->_name = $name; - } - - /** - * Is this asset in the default namespace? - * - * @param string $defaultNamespaceName - * - * @return bool - */ - public function isInDefaultNamespace($defaultNamespaceName) - { - return $this->_namespace === $defaultNamespaceName || $this->_namespace === null; - } - - /** - * Gets the namespace name of this asset. - * - * If NULL is returned this means the default namespace is used. - * - * @return string|null - */ - public function getNamespaceName() - { - return $this->_namespace; - } - - /** - * The shortest name is stripped of the default namespace. All other - * namespaced elements are returned as full-qualified names. - * - * @param string|null $defaultNamespaceName - * - * @return string - */ - public function getShortestName($defaultNamespaceName) - { - $shortestName = $this->getName(); - if ($this->_namespace === $defaultNamespaceName) { - $shortestName = $this->_name; - } - - return strtolower($shortestName); - } - - /** - * The normalized name is full-qualified and lower-cased. Lower-casing is - * actually wrong, but we have to do it to keep our sanity. If you are - * using database objects that only differentiate in the casing (FOO vs - * Foo) then you will NOT be able to use Doctrine Schema abstraction. - * - * Every non-namespaced element is prefixed with the default namespace - * name which is passed as argument to this method. - * - * @deprecated Use {@see getNamespaceName()} and {@see getName()} instead. - * - * @param string $defaultNamespaceName - * - * @return string - */ - public function getFullQualifiedName($defaultNamespaceName) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4814', - 'AbstractAsset::getFullQualifiedName() is deprecated.' - . ' Use AbstractAsset::getNamespaceName() and ::getName() instead.', - ); - - $name = $this->getName(); - if ($this->_namespace === null) { - $name = $defaultNamespaceName . '.' . $name; - } - - return strtolower($name); - } - - /** - * Checks if this asset's name is quoted. - * - * @return bool - */ - public function isQuoted() - { - return $this->_quoted; - } - - /** - * Checks if this identifier is quoted. - * - * @param string $identifier - * - * @return bool - */ - protected function isIdentifierQuoted($identifier) - { - return isset($identifier[0]) && ($identifier[0] === '`' || $identifier[0] === '"' || $identifier[0] === '['); - } - - /** - * Trim quotes from the identifier. - * - * @param string $identifier - * - * @return string - */ - protected function trimQuotes($identifier) - { - return str_replace(['`', '"', '[', ']'], '', $identifier); - } - - /** - * Returns the name of this schema asset. - * - * @return string - */ - public function getName() - { - if ($this->_namespace !== null) { - return $this->_namespace . '.' . $this->_name; - } - - return $this->_name; - } - - /** - * Gets the quoted representation of this asset but only if it was defined with one. Otherwise - * return the plain unquoted value as inserted. - * - * @return string - */ - public function getQuotedName(AbstractPlatform $platform) - { - $keywords = $platform->getReservedKeywordsList(); - $parts = explode('.', $this->getName()); - foreach ($parts as $k => $v) { - $parts[$k] = $this->_quoted || $keywords->isKeyword($v) ? $platform->quoteIdentifier($v) : $v; - } - - return implode('.', $parts); - } - - /** - * Generates an identifier from a list of column names obeying a certain string length. - * - * This is especially important for Oracle, since it does not allow identifiers larger than 30 chars, - * however building idents automatically for foreign keys, composite keys or such can easily create - * very long names. - * - * @param string[] $columnNames - * @param string $prefix - * @param int $maxSize - * - * @return string - */ - protected function _generateIdentifierName($columnNames, $prefix = '', $maxSize = 30) - { - $hash = implode('', array_map(static function ($column): string { - return dechex(crc32($column)); - }, $columnNames)); - - return strtoupper(substr($prefix . '_' . $hash, 0, $maxSize)); - } -} diff --git a/docker/streamline-src/vendor/doctrine/dbal/src/Schema/AbstractSchemaManager.php b/docker/streamline-src/vendor/doctrine/dbal/src/Schema/AbstractSchemaManager.php deleted file mode 100644 index 2e38bb88..00000000 --- a/docker/streamline-src/vendor/doctrine/dbal/src/Schema/AbstractSchemaManager.php +++ /dev/null @@ -1,1808 +0,0 @@ -_conn = $connection; - $this->_platform = $platform; - } - - /** - * Returns the associated platform. - * - * @deprecated Use {@link Connection::getDatabasePlatform()} instead. - * - * @return T - */ - public function getDatabasePlatform() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5387', - 'AbstractSchemaManager::getDatabasePlatform() is deprecated.' - . ' Use Connection::getDatabasePlatform() instead.', - ); - - return $this->_platform; - } - - /** - * Tries any method on the schema manager. Normally a method throws an - * exception when your DBMS doesn't support it or if an error occurs. - * This method allows you to try and method on your SchemaManager - * instance and will return false if it does not work or is not supported. - * - * - * $result = $sm->tryMethod('dropView', 'view_name'); - * - * - * @deprecated - * - * @return mixed - */ - public function tryMethod() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4897', - 'AbstractSchemaManager::tryMethod() is deprecated.', - ); - - $args = func_get_args(); - $method = $args[0]; - unset($args[0]); - $args = array_values($args); - - $callback = [$this, $method]; - assert(is_callable($callback)); - - try { - return call_user_func_array($callback, $args); - } catch (Throwable $e) { - return false; - } - } - - /** - * Lists the available databases for this connection. - * - * @return string[] - * - * @throws Exception - */ - public function listDatabases() - { - $sql = $this->_platform->getListDatabasesSQL(); - - $databases = $this->_conn->fetchAllAssociative($sql); - - return $this->_getPortableDatabasesList($databases); - } - - /** - * Returns a list of all namespaces in the current database. - * - * @deprecated Use {@see listSchemaNames()} instead. - * - * @return string[] - * - * @throws Exception - */ - public function listNamespaceNames() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4503', - 'AbstractSchemaManager::listNamespaceNames() is deprecated,' - . ' use AbstractSchemaManager::listSchemaNames() instead.', - ); - - $sql = $this->_platform->getListNamespacesSQL(); - - $namespaces = $this->_conn->fetchAllAssociative($sql); - - return $this->getPortableNamespacesList($namespaces); - } - - /** - * Returns a list of the names of all schemata in the current database. - * - * @return list - * - * @throws Exception - */ - public function listSchemaNames(): array - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Lists the available sequences for this connection. - * - * @param string|null $database - * - * @return Sequence[] - * - * @throws Exception - */ - public function listSequences($database = null) - { - if ($database === null) { - $database = $this->getDatabase(__METHOD__); - } else { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5284', - 'Passing $database to AbstractSchemaManager::listSequences() is deprecated.', - ); - } - - $sql = $this->_platform->getListSequencesSQL($database); - - $sequences = $this->_conn->fetchAllAssociative($sql); - - return $this->filterAssetNames($this->_getPortableSequencesList($sequences)); - } - - /** - * Lists the columns for a given table. - * - * In contrast to other libraries and to the old version of Doctrine, - * this column definition does try to contain the 'primary' column for - * the reason that it is not portable across different RDBMS. Use - * {@see listTableIndexes($tableName)} to retrieve the primary key - * of a table. Where a RDBMS specifies more details, these are held - * in the platformDetails array. - * - * @param string $table The name of the table. - * @param string|null $database - * - * @return Column[] - * - * @throws Exception - */ - public function listTableColumns($table, $database = null) - { - if ($database === null) { - $database = $this->getDatabase(__METHOD__); - } else { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5284', - 'Passing $database to AbstractSchemaManager::listTableColumns() is deprecated.', - ); - } - - $sql = $this->_platform->getListTableColumnsSQL($table, $database); - - $tableColumns = $this->_conn->fetchAllAssociative($sql); - - return $this->_getPortableTableColumnList($table, $database, $tableColumns); - } - - /** - * @param string $table - * @param string|null $database - * - * @return Column[] - * - * @throws Exception - */ - protected function doListTableColumns($table, $database = null): array - { - if ($database === null) { - $database = $this->getDatabase(__METHOD__); - } else { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5284', - 'Passing $database to AbstractSchemaManager::doListTableColumns() is deprecated.', - ); - } - - return $this->_getPortableTableColumnList( - $table, - $database, - $this->selectTableColumns($database, $this->normalizeName($table)) - ->fetchAllAssociative(), - ); - } - - /** - * Lists the indexes for a given table returning an array of Index instances. - * - * Keys of the portable indexes list are all lower-cased. - * - * @param string $table The name of the table. - * - * @return Index[] - * - * @throws Exception - */ - public function listTableIndexes($table) - { - $sql = $this->_platform->getListTableIndexesSQL($table, $this->_conn->getDatabase()); - - $tableIndexes = $this->_conn->fetchAllAssociative($sql); - - return $this->_getPortableTableIndexesList($tableIndexes, $table); - } - - /** - * @param string $table - * - * @return Index[] - * - * @throws Exception - */ - protected function doListTableIndexes($table): array - { - $database = $this->getDatabase(__METHOD__); - $table = $this->normalizeName($table); - - return $this->_getPortableTableIndexesList( - $this->selectIndexColumns( - $database, - $table, - )->fetchAllAssociative(), - $table, - ); - } - - /** - * Returns true if all the given tables exist. - * - * The usage of a string $tableNames is deprecated. Pass a one-element array instead. - * - * @param string|string[] $names - * - * @return bool - * - * @throws Exception - */ - public function tablesExist($names) - { - if (is_string($names)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3580', - 'The usage of a string $tableNames in AbstractSchemaManager::tablesExist() is deprecated. ' . - 'Pass a one-element array instead.', - ); - } - - $names = array_map('strtolower', (array) $names); - - return count($names) === count(array_intersect($names, array_map('strtolower', $this->listTableNames()))); - } - - /** - * Returns a list of all tables in the current database. - * - * @return string[] - * - * @throws Exception - */ - public function listTableNames() - { - $sql = $this->_platform->getListTablesSQL(); - - $tables = $this->_conn->fetchAllAssociative($sql); - $tableNames = $this->_getPortableTablesList($tables); - - return $this->filterAssetNames($tableNames); - } - - /** - * @return list - * - * @throws Exception - */ - protected function doListTableNames(): array - { - $database = $this->getDatabase(__METHOD__); - - return $this->filterAssetNames( - $this->_getPortableTablesList( - $this->selectTableNames($database) - ->fetchAllAssociative(), - ), - ); - } - - /** - * Filters asset names if they are configured to return only a subset of all - * the found elements. - * - * @param mixed[] $assetNames - * - * @return mixed[] - */ - protected function filterAssetNames($assetNames) - { - $filter = $this->_conn->getConfiguration()->getSchemaAssetsFilter(); - if ($filter === null) { - return $assetNames; - } - - return array_values(array_filter($assetNames, $filter)); - } - - /** - * Lists the tables for this connection. - * - * @return list
    - * - * @throws Exception - */ - public function listTables() - { - $tableNames = $this->listTableNames(); - - $tables = []; - foreach ($tableNames as $tableName) { - $tables[] = $this->introspectTable($tableName); - } - - return $tables; - } - - /** - * @return list
    - * - * @throws Exception - */ - protected function doListTables(): array - { - $database = $this->getDatabase(__METHOD__); - - $tableColumnsByTable = $this->fetchTableColumnsByTable($database); - $indexColumnsByTable = $this->fetchIndexColumnsByTable($database); - $foreignKeyColumnsByTable = $this->fetchForeignKeyColumnsByTable($database); - $tableOptionsByTable = $this->fetchTableOptionsByTable($database); - - $filter = $this->_conn->getConfiguration()->getSchemaAssetsFilter(); - $tables = []; - - foreach ($tableColumnsByTable as $tableName => $tableColumns) { - if ($filter !== null && ! $filter($tableName)) { - continue; - } - - $tables[] = new Table( - $tableName, - $this->_getPortableTableColumnList($tableName, $database, $tableColumns), - $this->_getPortableTableIndexesList($indexColumnsByTable[$tableName] ?? [], $tableName), - [], - $this->_getPortableTableForeignKeysList($foreignKeyColumnsByTable[$tableName] ?? []), - $tableOptionsByTable[$tableName] ?? [], - ); - } - - return $tables; - } - - /** - * @deprecated Use {@see introspectTable()} instead. - * - * @param string $name - * - * @return Table - * - * @throws Exception - */ - public function listTableDetails($name) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5595', - '%s is deprecated. Use introspectTable() instead.', - __METHOD__, - ); - - $columns = $this->listTableColumns($name); - $foreignKeys = []; - - if ($this->_platform->supportsForeignKeyConstraints()) { - $foreignKeys = $this->listTableForeignKeys($name); - } - - $indexes = $this->listTableIndexes($name); - - return new Table($name, $columns, $indexes, [], $foreignKeys); - } - - /** - * @param string $name - * - * @throws Exception - */ - protected function doListTableDetails($name): Table - { - $database = $this->getDatabase(__METHOD__); - - $normalizedName = $this->normalizeName($name); - - $tableOptionsByTable = $this->fetchTableOptionsByTable($database, $normalizedName); - - if ($this->_platform->supportsForeignKeyConstraints()) { - $foreignKeys = $this->listTableForeignKeys($name); - } else { - $foreignKeys = []; - } - - return new Table( - $name, - $this->listTableColumns($name, $database), - $this->listTableIndexes($name), - [], - $foreignKeys, - $tableOptionsByTable[$normalizedName] ?? [], - ); - } - - /** - * An extension point for those platforms where case sensitivity of the object name depends on whether it's quoted. - * - * Such platforms should convert a possibly quoted name into a value of the corresponding case. - */ - protected function normalizeName(string $name): string - { - $identifier = new Identifier($name); - - return $identifier->getName(); - } - - /** - * Selects names of tables in the specified database. - * - * @throws Exception - * - * @abstract - */ - protected function selectTableNames(string $databaseName): Result - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Selects definitions of table columns in the specified database. If the table name is specified, narrows down - * the selection to this table. - * - * @throws Exception - * - * @abstract - */ - protected function selectTableColumns(string $databaseName, ?string $tableName = null): Result - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Selects definitions of index columns in the specified database. If the table name is specified, narrows down - * the selection to this table. - * - * @throws Exception - */ - protected function selectIndexColumns(string $databaseName, ?string $tableName = null): Result - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Selects definitions of foreign key columns in the specified database. If the table name is specified, - * narrows down the selection to this table. - * - * @throws Exception - */ - protected function selectForeignKeyColumns(string $databaseName, ?string $tableName = null): Result - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Fetches definitions of table columns in the specified database and returns them grouped by table name. - * - * @return array>> - * - * @throws Exception - */ - protected function fetchTableColumnsByTable(string $databaseName): array - { - return $this->fetchAllAssociativeGrouped($this->selectTableColumns($databaseName)); - } - - /** - * Fetches definitions of index columns in the specified database and returns them grouped by table name. - * - * @return array>> - * - * @throws Exception - */ - protected function fetchIndexColumnsByTable(string $databaseName): array - { - return $this->fetchAllAssociativeGrouped($this->selectIndexColumns($databaseName)); - } - - /** - * Fetches definitions of foreign key columns in the specified database and returns them grouped by table name. - * - * @return array>> - * - * @throws Exception - */ - protected function fetchForeignKeyColumnsByTable(string $databaseName): array - { - if (! $this->_platform->supportsForeignKeyConstraints()) { - return []; - } - - return $this->fetchAllAssociativeGrouped( - $this->selectForeignKeyColumns($databaseName), - ); - } - - /** - * Fetches table options for the tables in the specified database and returns them grouped by table name. - * If the table name is specified, narrows down the selection to this table. - * - * @return array> - * - * @throws Exception - */ - protected function fetchTableOptionsByTable(string $databaseName, ?string $tableName = null): array - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Introspects the table with the given name. - * - * @throws Exception - */ - public function introspectTable(string $name): Table - { - $table = $this->listTableDetails($name); - - if ($table->getColumns() === []) { - throw SchemaException::tableDoesNotExist($name); - } - - return $table; - } - - /** - * Lists the views this connection has. - * - * @return View[] - * - * @throws Exception - */ - public function listViews() - { - $database = $this->_conn->getDatabase(); - $sql = $this->_platform->getListViewsSQL($database); - $views = $this->_conn->fetchAllAssociative($sql); - - return $this->_getPortableViewsList($views); - } - - /** - * Lists the foreign keys for the given table. - * - * @param string $table The name of the table. - * @param string|null $database - * - * @return ForeignKeyConstraint[] - * - * @throws Exception - */ - public function listTableForeignKeys($table, $database = null) - { - if ($database === null) { - $database = $this->getDatabase(__METHOD__); - } else { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5284', - 'Passing $database to AbstractSchemaManager::listTableForeignKeys() is deprecated.', - ); - } - - $sql = $this->_platform->getListTableForeignKeysSQL($table, $database); - $tableForeignKeys = $this->_conn->fetchAllAssociative($sql); - - return $this->_getPortableTableForeignKeysList($tableForeignKeys); - } - - /** - * @param string $table - * @param string|null $database - * - * @return ForeignKeyConstraint[] - * - * @throws Exception - */ - protected function doListTableForeignKeys($table, $database = null): array - { - if ($database === null) { - $database = $this->getDatabase(__METHOD__); - } else { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5284', - 'Passing $database to AbstractSchemaManager::listTableForeignKeys() is deprecated.', - ); - } - - return $this->_getPortableTableForeignKeysList( - $this->selectForeignKeyColumns( - $database, - $this->normalizeName($table), - )->fetchAllAssociative(), - ); - } - - /* drop*() Methods */ - - /** - * Drops a database. - * - * NOTE: You can not drop the database this SchemaManager is currently connected to. - * - * @param string $database The name of the database to drop. - * - * @return void - * - * @throws Exception - */ - public function dropDatabase($database) - { - $this->_conn->executeStatement( - $this->_platform->getDropDatabaseSQL($database), - ); - } - - /** - * Drops a schema. - * - * @throws Exception - */ - public function dropSchema(string $schemaName): void - { - $this->_conn->executeStatement( - $this->_platform->getDropSchemaSQL($schemaName), - ); - } - - /** - * Drops the given table. - * - * @param string $name The name of the table to drop. - * - * @return void - * - * @throws Exception - */ - public function dropTable($name) - { - $this->_conn->executeStatement( - $this->_platform->getDropTableSQL($name), - ); - } - - /** - * Drops the index from the given table. - * - * @param Index|string $index The name of the index. - * @param Table|string $table The name of the table. - * - * @return void - * - * @throws Exception - */ - public function dropIndex($index, $table) - { - if ($index instanceof Index) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $index as an Index object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $index = $index->getQuotedName($this->_platform); - } - - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as an Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $table = $table->getQuotedName($this->_platform); - } - - $this->_conn->executeStatement( - $this->_platform->getDropIndexSQL($index, $table), - ); - } - - /** - * Drops the constraint from the given table. - * - * @deprecated Use {@see dropIndex()}, {@see dropForeignKey()} or {@see dropUniqueConstraint()} instead. - * - * @param Table|string $table The name of the table. - * - * @return void - * - * @throws Exception - */ - public function dropConstraint(Constraint $constraint, $table) - { - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as a Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $table = $table->getQuotedName($this->_platform); - } - - $this->_conn->executeStatement($this->_platform->getDropConstraintSQL( - $constraint->getQuotedName($this->_platform), - $table, - )); - } - - /** - * Drops a foreign key from a table. - * - * @param ForeignKeyConstraint|string $foreignKey The name of the foreign key. - * @param Table|string $table The name of the table with the foreign key. - * - * @return void - * - * @throws Exception - */ - public function dropForeignKey($foreignKey, $table) - { - if ($foreignKey instanceof ForeignKeyConstraint) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $foreignKey as a ForeignKeyConstraint object to %s is deprecated.' - . ' Pass it as a quoted name instead.', - __METHOD__, - ); - - $foreignKey = $foreignKey->getQuotedName($this->_platform); - } - - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as a Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $table = $table->getQuotedName($this->_platform); - } - - $this->_conn->executeStatement( - $this->_platform->getDropForeignKeySQL($foreignKey, $table), - ); - } - - /** - * Drops a sequence with a given name. - * - * @param string $name The name of the sequence to drop. - * - * @return void - * - * @throws Exception - */ - public function dropSequence($name) - { - $this->_conn->executeStatement( - $this->_platform->getDropSequenceSQL($name), - ); - } - - /** - * Drops the unique constraint from the given table. - * - * @throws Exception - */ - public function dropUniqueConstraint(string $name, string $tableName): void - { - $this->_conn->executeStatement( - $this->_platform->getDropUniqueConstraintSQL($name, $tableName), - ); - } - - /** - * Drops a view. - * - * @param string $name The name of the view. - * - * @return void - * - * @throws Exception - */ - public function dropView($name) - { - $this->_conn->executeStatement( - $this->_platform->getDropViewSQL($name), - ); - } - - /* create*() Methods */ - - /** @throws Exception */ - public function createSchemaObjects(Schema $schema): void - { - $this->_execSql($schema->toSql($this->_platform)); - } - - /** - * Creates a new database. - * - * @param string $database The name of the database to create. - * - * @return void - * - * @throws Exception - */ - public function createDatabase($database) - { - $this->_conn->executeStatement( - $this->_platform->getCreateDatabaseSQL($database), - ); - } - - /** - * Creates a new table. - * - * @return void - * - * @throws Exception - */ - public function createTable(Table $table) - { - $createFlags = AbstractPlatform::CREATE_INDEXES | AbstractPlatform::CREATE_FOREIGNKEYS; - $this->_execSql($this->_platform->getCreateTableSQL($table, $createFlags)); - } - - /** - * Creates a new sequence. - * - * @param Sequence $sequence - * - * @return void - * - * @throws Exception - */ - public function createSequence($sequence) - { - $this->_conn->executeStatement( - $this->_platform->getCreateSequenceSQL($sequence), - ); - } - - /** - * Creates a constraint on a table. - * - * @deprecated Use {@see createIndex()}, {@see createForeignKey()} or {@see createUniqueConstraint()} instead. - * - * @param Table|string $table - * - * @return void - * - * @throws Exception - */ - public function createConstraint(Constraint $constraint, $table) - { - $this->_conn->executeStatement( - $this->_platform->getCreateConstraintSQL($constraint, $table), - ); - } - - /** - * Creates a new index on a table. - * - * @param Table|string $table The name of the table on which the index is to be created. - * - * @return void - * - * @throws Exception - */ - public function createIndex(Index $index, $table) - { - $this->_conn->executeStatement( - $this->_platform->getCreateIndexSQL($index, $table), - ); - } - - /** - * Creates a new foreign key. - * - * @param ForeignKeyConstraint $foreignKey The ForeignKey instance. - * @param Table|string $table The name of the table on which the foreign key is to be created. - * - * @return void - * - * @throws Exception - */ - public function createForeignKey(ForeignKeyConstraint $foreignKey, $table) - { - $this->_conn->executeStatement( - $this->_platform->getCreateForeignKeySQL($foreignKey, $table), - ); - } - - /** - * Creates a unique constraint on a table. - * - * @throws Exception - */ - public function createUniqueConstraint(UniqueConstraint $uniqueConstraint, string $tableName): void - { - $this->_conn->executeStatement( - $this->_platform->getCreateUniqueConstraintSQL($uniqueConstraint, $tableName), - ); - } - - /** - * Creates a new view. - * - * @return void - * - * @throws Exception - */ - public function createView(View $view) - { - $this->_conn->executeStatement( - $this->_platform->getCreateViewSQL( - $view->getQuotedName($this->_platform), - $view->getSql(), - ), - ); - } - - /* dropAndCreate*() Methods */ - - /** @throws Exception */ - public function dropSchemaObjects(Schema $schema): void - { - $this->_execSql($schema->toDropSql($this->_platform)); - } - - /** - * Drops and creates a constraint. - * - * @deprecated Use {@see dropIndex()} and {@see createIndex()}, - * {@see dropForeignKey()} and {@see createForeignKey()} - * or {@see dropUniqueConstraint()} and {@see createUniqueConstraint()} instead. - * - * @see dropConstraint() - * @see createConstraint() - * - * @param Table|string $table - * - * @return void - * - * @throws Exception - */ - public function dropAndCreateConstraint(Constraint $constraint, $table) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4897', - 'AbstractSchemaManager::dropAndCreateConstraint() is deprecated.' - . ' Use AbstractSchemaManager::dropIndex() and AbstractSchemaManager::createIndex(),' - . ' AbstractSchemaManager::dropForeignKey() and AbstractSchemaManager::createForeignKey()' - . ' or AbstractSchemaManager::dropUniqueConstraint()' - . ' and AbstractSchemaManager::createUniqueConstraint() instead.', - ); - - $this->tryMethod('dropConstraint', $constraint, $table); - $this->createConstraint($constraint, $table); - } - - /** - * Drops and creates a new index on a table. - * - * @deprecated Use {@see dropIndex()} and {@see createIndex()} instead. - * - * @param Table|string $table The name of the table on which the index is to be created. - * - * @return void - * - * @throws Exception - */ - public function dropAndCreateIndex(Index $index, $table) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4897', - 'AbstractSchemaManager::dropAndCreateIndex() is deprecated.' - . ' Use AbstractSchemaManager::dropIndex() and AbstractSchemaManager::createIndex() instead.', - ); - - $this->tryMethod('dropIndex', $index->getQuotedName($this->_platform), $table); - $this->createIndex($index, $table); - } - - /** - * Drops and creates a new foreign key. - * - * @deprecated Use {@see dropForeignKey()} and {@see createForeignKey()} instead. - * - * @param ForeignKeyConstraint $foreignKey An associative array that defines properties - * of the foreign key to be created. - * @param Table|string $table The name of the table on which the foreign key is to be created. - * - * @return void - * - * @throws Exception - */ - public function dropAndCreateForeignKey(ForeignKeyConstraint $foreignKey, $table) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4897', - 'AbstractSchemaManager::dropAndCreateForeignKey() is deprecated.' - . ' Use AbstractSchemaManager::dropForeignKey() and AbstractSchemaManager::createForeignKey() instead.', - ); - - $this->tryMethod('dropForeignKey', $foreignKey, $table); - $this->createForeignKey($foreignKey, $table); - } - - /** - * Drops and create a new sequence. - * - * @deprecated Use {@see dropSequence()} and {@see createSequence()} instead. - * - * @return void - * - * @throws Exception - */ - public function dropAndCreateSequence(Sequence $sequence) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4897', - 'AbstractSchemaManager::dropAndCreateSequence() is deprecated.' - . ' Use AbstractSchemaManager::dropSequence() and AbstractSchemaManager::createSequence() instead.', - ); - - $this->tryMethod('dropSequence', $sequence->getQuotedName($this->_platform)); - $this->createSequence($sequence); - } - - /** - * Drops and creates a new table. - * - * @deprecated Use {@see dropTable()} and {@see createTable()} instead. - * - * @return void - * - * @throws Exception - */ - public function dropAndCreateTable(Table $table) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4897', - 'AbstractSchemaManager::dropAndCreateTable() is deprecated.' - . ' Use AbstractSchemaManager::dropTable() and AbstractSchemaManager::createTable() instead.', - ); - - $this->tryMethod('dropTable', $table->getQuotedName($this->_platform)); - $this->createTable($table); - } - - /** - * Drops and creates a new database. - * - * @deprecated Use {@see dropDatabase()} and {@see createDatabase()} instead. - * - * @param string $database The name of the database to create. - * - * @return void - * - * @throws Exception - */ - public function dropAndCreateDatabase($database) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4897', - 'AbstractSchemaManager::dropAndCreateDatabase() is deprecated.' - . ' Use AbstractSchemaManager::dropDatabase() and AbstractSchemaManager::createDatabase() instead.', - ); - - $this->tryMethod('dropDatabase', $database); - $this->createDatabase($database); - } - - /** - * Drops and creates a new view. - * - * @deprecated Use {@see dropView()} and {@see createView()} instead. - * - * @return void - * - * @throws Exception - */ - public function dropAndCreateView(View $view) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4897', - 'AbstractSchemaManager::dropAndCreateView() is deprecated.' - . ' Use AbstractSchemaManager::dropView() and AbstractSchemaManager::createView() instead.', - ); - - $this->tryMethod('dropView', $view->getQuotedName($this->_platform)); - $this->createView($view); - } - - /** - * Alters an existing schema. - * - * @throws Exception - */ - public function alterSchema(SchemaDiff $schemaDiff): void - { - $this->_execSql($this->_platform->getAlterSchemaSQL($schemaDiff)); - } - - /** - * Migrates an existing schema to a new schema. - * - * @throws Exception - */ - public function migrateSchema(Schema $toSchema): void - { - $schemaDiff = $this->createComparator() - ->compareSchemas($this->introspectSchema(), $toSchema); - - $this->alterSchema($schemaDiff); - } - - /* alterTable() Methods */ - - /** - * Alters an existing tables schema. - * - * @return void - * - * @throws Exception - */ - public function alterTable(TableDiff $tableDiff) - { - $this->_execSql($this->_platform->getAlterTableSQL($tableDiff)); - } - - /** - * Renames a given table to another name. - * - * @param string $name The current name of the table. - * @param string $newName The new name of the table. - * - * @return void - * - * @throws Exception - */ - public function renameTable($name, $newName) - { - $this->_execSql($this->_platform->getRenameTableSQL($name, $newName)); - } - - /** - * Methods for filtering return values of list*() methods to convert - * the native DBMS data definition to a portable Doctrine definition - */ - - /** - * @param mixed[] $databases - * - * @return string[] - */ - protected function _getPortableDatabasesList($databases) - { - $list = []; - foreach ($databases as $value) { - $list[] = $this->_getPortableDatabaseDefinition($value); - } - - return $list; - } - - /** - * Converts a list of namespace names from the native DBMS data definition to a portable Doctrine definition. - * - * @deprecated Use {@see listSchemaNames()} instead. - * - * @param array> $namespaces The list of namespace names - * in the native DBMS data definition. - * - * @return string[] - */ - protected function getPortableNamespacesList(array $namespaces) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4503', - 'AbstractSchemaManager::getPortableNamespacesList() is deprecated,' - . ' use AbstractSchemaManager::listSchemaNames() instead.', - ); - - $namespacesList = []; - - foreach ($namespaces as $namespace) { - $namespacesList[] = $this->getPortableNamespaceDefinition($namespace); - } - - return $namespacesList; - } - - /** - * @param mixed $database - * - * @return mixed - */ - protected function _getPortableDatabaseDefinition($database) - { - return $database; - } - - /** - * Converts a namespace definition from the native DBMS data definition to a portable Doctrine definition. - * - * @deprecated Use {@see listSchemaNames()} instead. - * - * @param array $namespace The native DBMS namespace definition. - * - * @return mixed - */ - protected function getPortableNamespaceDefinition(array $namespace) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4503', - 'AbstractSchemaManager::getPortableNamespaceDefinition() is deprecated,' - . ' use AbstractSchemaManager::listSchemaNames() instead.', - ); - - return $namespace; - } - - /** - * @param mixed[][] $sequences - * - * @return Sequence[] - * - * @throws Exception - */ - protected function _getPortableSequencesList($sequences) - { - $list = []; - - foreach ($sequences as $value) { - $list[] = $this->_getPortableSequenceDefinition($value); - } - - return $list; - } - - /** - * @param mixed[] $sequence - * - * @return Sequence - * - * @throws Exception - */ - protected function _getPortableSequenceDefinition($sequence) - { - throw Exception::notSupported('Sequences'); - } - - /** - * Independent of the database the keys of the column list result are lowercased. - * - * The name of the created column instance however is kept in its case. - * - * @param string $table The name of the table. - * @param string $database - * @param mixed[][] $tableColumns - * - * @return Column[] - * - * @throws Exception - */ - protected function _getPortableTableColumnList($table, $database, $tableColumns) - { - $eventManager = $this->_platform->getEventManager(); - - $list = []; - foreach ($tableColumns as $tableColumn) { - $column = null; - $defaultPrevented = false; - - if ($eventManager !== null && $eventManager->hasListeners(Events::onSchemaColumnDefinition)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - 'Subscribing to %s events is deprecated. Use a custom schema manager instead.', - Events::onSchemaColumnDefinition, - ); - - $eventArgs = new SchemaColumnDefinitionEventArgs($tableColumn, $table, $database, $this->_conn); - $eventManager->dispatchEvent(Events::onSchemaColumnDefinition, $eventArgs); - - $defaultPrevented = $eventArgs->isDefaultPrevented(); - $column = $eventArgs->getColumn(); - } - - if (! $defaultPrevented) { - $column = $this->_getPortableTableColumnDefinition($tableColumn); - } - - if ($column === null) { - continue; - } - - $name = strtolower($column->getQuotedName($this->_platform)); - $list[$name] = $column; - } - - return $list; - } - - /** - * Gets Table Column Definition. - * - * @param mixed[] $tableColumn - * - * @return Column - * - * @throws Exception - */ - abstract protected function _getPortableTableColumnDefinition($tableColumn); - - /** - * Aggregates and groups the index results according to the required data result. - * - * @param mixed[][] $tableIndexes - * @param string|null $tableName - * - * @return Index[] - * - * @throws Exception - */ - protected function _getPortableTableIndexesList($tableIndexes, $tableName = null) - { - $result = []; - foreach ($tableIndexes as $tableIndex) { - $indexName = $keyName = $tableIndex['key_name']; - if ($tableIndex['primary']) { - $keyName = 'primary'; - } - - $keyName = strtolower($keyName); - - if (! isset($result[$keyName])) { - $options = [ - 'lengths' => [], - ]; - - if (isset($tableIndex['where'])) { - $options['where'] = $tableIndex['where']; - } - - $result[$keyName] = [ - 'name' => $indexName, - 'columns' => [], - 'unique' => ! $tableIndex['non_unique'], - 'primary' => $tableIndex['primary'], - 'flags' => $tableIndex['flags'] ?? [], - 'options' => $options, - ]; - } - - $result[$keyName]['columns'][] = $tableIndex['column_name']; - $result[$keyName]['options']['lengths'][] = $tableIndex['length'] ?? null; - } - - $eventManager = $this->_platform->getEventManager(); - - $indexes = []; - foreach ($result as $indexKey => $data) { - $index = null; - $defaultPrevented = false; - - if ($eventManager !== null && $eventManager->hasListeners(Events::onSchemaIndexDefinition)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - 'Subscribing to %s events is deprecated. Use a custom schema manager instead.', - Events::onSchemaColumnDefinition, - ); - - $eventArgs = new SchemaIndexDefinitionEventArgs($data, $tableName, $this->_conn); - $eventManager->dispatchEvent(Events::onSchemaIndexDefinition, $eventArgs); - - $defaultPrevented = $eventArgs->isDefaultPrevented(); - $index = $eventArgs->getIndex(); - } - - if (! $defaultPrevented) { - $index = new Index( - $data['name'], - $data['columns'], - $data['unique'], - $data['primary'], - $data['flags'], - $data['options'], - ); - } - - if ($index === null) { - continue; - } - - $indexes[$indexKey] = $index; - } - - return $indexes; - } - - /** - * @param mixed[][] $tables - * - * @return string[] - */ - protected function _getPortableTablesList($tables) - { - $list = []; - foreach ($tables as $value) { - $list[] = $this->_getPortableTableDefinition($value); - } - - return $list; - } - - /** - * @param mixed $table - * - * @return string - */ - protected function _getPortableTableDefinition($table) - { - return $table; - } - - /** - * @param mixed[][] $views - * - * @return View[] - */ - protected function _getPortableViewsList($views) - { - $list = []; - foreach ($views as $value) { - $view = $this->_getPortableViewDefinition($value); - - if ($view === false) { - continue; - } - - $viewName = strtolower($view->getQuotedName($this->_platform)); - $list[$viewName] = $view; - } - - return $list; - } - - /** - * @param mixed[] $view - * - * @return View|false - */ - protected function _getPortableViewDefinition($view) - { - return false; - } - - /** - * @param mixed[][] $tableForeignKeys - * - * @return ForeignKeyConstraint[] - */ - protected function _getPortableTableForeignKeysList($tableForeignKeys) - { - $list = []; - - foreach ($tableForeignKeys as $value) { - $list[] = $this->_getPortableTableForeignKeyDefinition($value); - } - - return $list; - } - - /** - * @param mixed $tableForeignKey - * - * @return ForeignKeyConstraint - * - * @abstract - */ - protected function _getPortableTableForeignKeyDefinition($tableForeignKey) - { - return $tableForeignKey; - } - - /** - * @internal - * - * @param string[]|string $sql - * - * @return void - * - * @throws Exception - */ - protected function _execSql($sql) - { - foreach ((array) $sql as $query) { - $this->_conn->executeStatement($query); - } - } - - /** - * Creates a schema instance for the current database. - * - * @deprecated Use {@link introspectSchema()} instead. - * - * @return Schema - * - * @throws Exception - */ - public function createSchema() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5613', - '%s is deprecated. Use introspectSchema() instead.', - __METHOD__, - ); - - $schemaNames = []; - - if ($this->_platform->supportsSchemas()) { - $schemaNames = $this->listNamespaceNames(); - } - - $sequences = []; - - if ($this->_platform->supportsSequences()) { - $sequences = $this->listSequences(); - } - - $tables = $this->listTables(); - - return new Schema($tables, $sequences, $this->createSchemaConfig(), $schemaNames); - } - - /** - * Returns a {@see Schema} instance representing the current database schema. - * - * @throws Exception - */ - public function introspectSchema(): Schema - { - return $this->createSchema(); - } - - /** - * Creates the configuration for this schema. - * - * @return SchemaConfig - * - * @throws Exception - */ - public function createSchemaConfig() - { - $schemaConfig = new SchemaConfig(); - $schemaConfig->setMaxIdentifierLength($this->_platform->getMaxIdentifierLength()); - - $searchPaths = $this->getSchemaSearchPaths(); - if (isset($searchPaths[0])) { - $schemaConfig->setName($searchPaths[0]); - } - - $params = $this->_conn->getParams(); - if (! isset($params['defaultTableOptions'])) { - $params['defaultTableOptions'] = []; - } - - if (! isset($params['defaultTableOptions']['charset']) && isset($params['charset'])) { - $params['defaultTableOptions']['charset'] = $params['charset']; - } - - $schemaConfig->setDefaultTableOptions($params['defaultTableOptions']); - - return $schemaConfig; - } - - /** - * The search path for namespaces in the currently connected database. - * - * The first entry is usually the default namespace in the Schema. All - * further namespaces contain tables/sequences which can also be addressed - * with a short, not full-qualified name. - * - * For databases that don't support subschema/namespaces this method - * returns the name of the currently connected database. - * - * @deprecated - * - * @return string[] - * - * @throws Exception - */ - public function getSchemaSearchPaths() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4821', - 'AbstractSchemaManager::getSchemaSearchPaths() is deprecated.', - ); - - $database = $this->_conn->getDatabase(); - - if ($database !== null) { - return [$database]; - } - - return []; - } - - /** - * Given a table comment this method tries to extract a typehint for Doctrine Type, or returns - * the type given as default. - * - * @internal This method should be only used from within the AbstractSchemaManager class hierarchy. - * - * @param string|null $comment - * @param string $currentType - * - * @return string - */ - public function extractDoctrineTypeFromComment($comment, $currentType) - { - if ($this->_conn->getConfiguration()->getDisableTypeComments()) { - return $currentType; - } - - if ($comment !== null && preg_match('(\(DC2Type:(((?!\)).)+)\))', $comment, $match) === 1) { - return $match[1]; - } - - return $currentType; - } - - /** - * @internal This method should be only used from within the AbstractSchemaManager class hierarchy. - * - * @param string|null $comment - * @param string|null $type - * - * @return string|null - */ - public function removeDoctrineTypeFromComment($comment, $type) - { - if ($this->_conn->getConfiguration()->getDisableTypeComments()) { - return $comment; - } - - if ($comment === null) { - return null; - } - - return str_replace('(DC2Type:' . $type . ')', '', $comment); - } - - /** @throws Exception */ - private function getDatabase(string $methodName): string - { - $database = $this->_conn->getDatabase(); - - if ($database === null) { - throw DatabaseRequired::new($methodName); - } - - return $database; - } - - public function createComparator(): Comparator - { - return new Comparator($this->_platform); - } - - /** - * @return array>> - * - * @throws Exception - */ - private function fetchAllAssociativeGrouped(Result $result): array - { - $data = []; - - foreach ($result->fetchAllAssociative() as $row) { - $tableName = $this->_getPortableTableDefinition($row); - $data[$tableName][] = $row; - } - - return $data; - } -} diff --git a/docker/streamline-src/vendor/doctrine/dbal/src/Schema/MySQLSchemaManager.php b/docker/streamline-src/vendor/doctrine/dbal/src/Schema/MySQLSchemaManager.php deleted file mode 100644 index 6e444d21..00000000 --- a/docker/streamline-src/vendor/doctrine/dbal/src/Schema/MySQLSchemaManager.php +++ /dev/null @@ -1,605 +0,0 @@ - - */ -class MySQLSchemaManager extends AbstractSchemaManager -{ - /** @see https://mariadb.com/kb/en/library/string-literals/#escape-sequences */ - private const MARIADB_ESCAPE_SEQUENCES = [ - '\\0' => "\0", - "\\'" => "'", - '\\"' => '"', - '\\b' => "\b", - '\\n' => "\n", - '\\r' => "\r", - '\\t' => "\t", - '\\Z' => "\x1a", - '\\\\' => '\\', - '\\%' => '%', - '\\_' => '_', - - // Internally, MariaDB escapes single quotes using the standard syntax - "''" => "'", - ]; - - /** - * {@inheritDoc} - */ - public function listTableNames() - { - return $this->doListTableNames(); - } - - /** - * {@inheritDoc} - */ - public function listTables() - { - return $this->doListTables(); - } - - /** - * {@inheritDoc} - * - * @deprecated Use {@see introspectTable()} instead. - */ - public function listTableDetails($name) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5595', - '%s is deprecated. Use introspectTable() instead.', - __METHOD__, - ); - - return $this->doListTableDetails($name); - } - - /** - * {@inheritDoc} - */ - public function listTableColumns($table, $database = null) - { - return $this->doListTableColumns($table, $database); - } - - /** - * {@inheritDoc} - */ - public function listTableIndexes($table) - { - return $this->doListTableIndexes($table); - } - - /** - * {@inheritDoc} - */ - public function listTableForeignKeys($table, $database = null) - { - return $this->doListTableForeignKeys($table, $database); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableViewDefinition($view) - { - return new View($view['TABLE_NAME'], $view['VIEW_DEFINITION']); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableDefinition($table) - { - return array_shift($table); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableIndexesList($tableIndexes, $tableName = null) - { - foreach ($tableIndexes as $k => $v) { - $v = array_change_key_case($v, CASE_LOWER); - if ($v['key_name'] === 'PRIMARY') { - $v['primary'] = true; - } else { - $v['primary'] = false; - } - - if (strpos($v['index_type'], 'FULLTEXT') !== false) { - $v['flags'] = ['FULLTEXT']; - } elseif (strpos($v['index_type'], 'SPATIAL') !== false) { - $v['flags'] = ['SPATIAL']; - } - - // Ignore prohibited prefix `length` for spatial index - if (strpos($v['index_type'], 'SPATIAL') === false) { - $v['length'] = isset($v['sub_part']) ? (int) $v['sub_part'] : null; - } - - $tableIndexes[$k] = $v; - } - - return parent::_getPortableTableIndexesList($tableIndexes, $tableName); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableDatabaseDefinition($database) - { - return $database['Database']; - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableColumnDefinition($tableColumn) - { - $tableColumn = array_change_key_case($tableColumn, CASE_LOWER); - - $dbType = strtolower($tableColumn['type']); - $dbType = strtok($dbType, '(), '); - assert(is_string($dbType)); - - $length = $tableColumn['length'] ?? strtok('(), '); - - $fixed = null; - - if (! isset($tableColumn['name'])) { - $tableColumn['name'] = ''; - } - - $scale = null; - $precision = null; - - $type = $origType = $this->_platform->getDoctrineTypeMapping($dbType); - - // In cases where not connected to a database DESCRIBE $table does not return 'Comment' - if (isset($tableColumn['comment'])) { - $type = $this->extractDoctrineTypeFromComment($tableColumn['comment'], $type); - $tableColumn['comment'] = $this->removeDoctrineTypeFromComment($tableColumn['comment'], $type); - } - - switch ($dbType) { - case 'char': - case 'binary': - $fixed = true; - break; - - case 'float': - case 'double': - case 'real': - case 'numeric': - case 'decimal': - if ( - preg_match( - '([A-Za-z]+\(([0-9]+),([0-9]+)\))', - $tableColumn['type'], - $match, - ) === 1 - ) { - $precision = $match[1]; - $scale = $match[2]; - $length = null; - } - - break; - - case 'tinytext': - $length = AbstractMySQLPlatform::LENGTH_LIMIT_TINYTEXT; - break; - - case 'text': - $length = AbstractMySQLPlatform::LENGTH_LIMIT_TEXT; - break; - - case 'mediumtext': - $length = AbstractMySQLPlatform::LENGTH_LIMIT_MEDIUMTEXT; - break; - - case 'tinyblob': - $length = AbstractMySQLPlatform::LENGTH_LIMIT_TINYBLOB; - break; - - case 'blob': - $length = AbstractMySQLPlatform::LENGTH_LIMIT_BLOB; - break; - - case 'mediumblob': - $length = AbstractMySQLPlatform::LENGTH_LIMIT_MEDIUMBLOB; - break; - - case 'tinyint': - case 'smallint': - case 'mediumint': - case 'int': - case 'integer': - case 'bigint': - case 'year': - $length = null; - break; - } - - if ($this->_platform instanceof MariaDb1027Platform) { - $columnDefault = $this->getMariaDb1027ColumnDefault($this->_platform, $tableColumn['default']); - } else { - $columnDefault = $tableColumn['default']; - } - - $options = [ - 'length' => $length !== null ? (int) $length : null, - 'unsigned' => strpos($tableColumn['type'], 'unsigned') !== false, - 'fixed' => (bool) $fixed, - 'default' => $columnDefault, - 'notnull' => $tableColumn['null'] !== 'YES', - 'scale' => null, - 'precision' => null, - 'autoincrement' => strpos($tableColumn['extra'], 'auto_increment') !== false, - 'comment' => isset($tableColumn['comment']) && $tableColumn['comment'] !== '' - ? $tableColumn['comment'] - : null, - ]; - - if ($scale !== null && $precision !== null) { - $options['scale'] = (int) $scale; - $options['precision'] = (int) $precision; - } - - $column = new Column($tableColumn['field'], Type::getType($type), $options); - - if (isset($tableColumn['characterset'])) { - $column->setPlatformOption('charset', $tableColumn['characterset']); - } - - if (isset($tableColumn['collation'])) { - $column->setPlatformOption('collation', $tableColumn['collation']); - } - - if (isset($tableColumn['declarationMismatch'])) { - $column->setPlatformOption('declarationMismatch', $tableColumn['declarationMismatch']); - } - - // Check underlying database type where doctrine type is inferred from DC2Type comment - // and set a flag if it is not as expected. - if ($type === 'json' && $origType !== $type && $this->expectedDbType($type, $options) !== $dbType) { - $column->setPlatformOption('declarationMismatch', true); - } - - return $column; - } - - /** - * Returns the database data type for a given doctrine type and column - * - * Note that for data types that depend on length where length is not part of the column definition - * and therefore the $tableColumn['length'] will not be set, for example TEXT (which could be LONGTEXT, - * MEDIUMTEXT) or BLOB (LONGBLOB or TINYBLOB), the expectedDbType cannot be inferred exactly, merely - * the default type. - * - * This method is intended to be used to determine underlying database type where doctrine type is - * inferred from a DC2Type comment. - * - * @param mixed[] $tableColumn - */ - private function expectedDbType(string $type, array $tableColumn): string - { - $_type = Type::getType($type); - $expectedDbType = strtolower($_type->getSQLDeclaration($tableColumn, $this->_platform)); - $expectedDbType = strtok($expectedDbType, '(), '); - - return $expectedDbType === false ? '' : $expectedDbType; - } - - /** - * Return Doctrine/Mysql-compatible column default values for MariaDB 10.2.7+ servers. - * - * - Since MariaDb 10.2.7 column defaults stored in information_schema are now quoted - * to distinguish them from expressions (see MDEV-10134). - * - CURRENT_TIMESTAMP, CURRENT_TIME, CURRENT_DATE are stored in information_schema - * as current_timestamp(), currdate(), currtime() - * - Quoted 'NULL' is not enforced by Maria, it is technically possible to have - * null in some circumstances (see https://jira.mariadb.org/browse/MDEV-14053) - * - \' is always stored as '' in information_schema (normalized) - * - * @link https://mariadb.com/kb/en/library/information-schema-columns-table/ - * @link https://jira.mariadb.org/browse/MDEV-13132 - * - * @param string|null $columnDefault default value as stored in information_schema for MariaDB >= 10.2.7 - */ - private function getMariaDb1027ColumnDefault(MariaDb1027Platform $platform, ?string $columnDefault): ?string - { - if ($columnDefault === 'NULL' || $columnDefault === null) { - return null; - } - - if (preg_match('/^\'(.*)\'$/', $columnDefault, $matches) === 1) { - return strtr($matches[1], self::MARIADB_ESCAPE_SEQUENCES); - } - - switch ($columnDefault) { - case 'current_timestamp()': - return $platform->getCurrentTimestampSQL(); - - case 'curdate()': - return $platform->getCurrentDateSQL(); - - case 'curtime()': - return $platform->getCurrentTimeSQL(); - } - - return $columnDefault; - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableForeignKeysList($tableForeignKeys) - { - $list = []; - foreach ($tableForeignKeys as $value) { - $value = array_change_key_case($value, CASE_LOWER); - if (! isset($list[$value['constraint_name']])) { - if (! isset($value['delete_rule']) || $value['delete_rule'] === 'RESTRICT') { - $value['delete_rule'] = null; - } - - if (! isset($value['update_rule']) || $value['update_rule'] === 'RESTRICT') { - $value['update_rule'] = null; - } - - $list[$value['constraint_name']] = [ - 'name' => $value['constraint_name'], - 'local' => [], - 'foreign' => [], - 'foreignTable' => $value['referenced_table_name'], - 'onDelete' => $value['delete_rule'], - 'onUpdate' => $value['update_rule'], - ]; - } - - $list[$value['constraint_name']]['local'][] = $value['column_name']; - $list[$value['constraint_name']]['foreign'][] = $value['referenced_column_name']; - } - - return parent::_getPortableTableForeignKeysList($list); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableForeignKeyDefinition($tableForeignKey): ForeignKeyConstraint - { - return new ForeignKeyConstraint( - $tableForeignKey['local'], - $tableForeignKey['foreignTable'], - $tableForeignKey['foreign'], - $tableForeignKey['name'], - [ - 'onDelete' => $tableForeignKey['onDelete'], - 'onUpdate' => $tableForeignKey['onUpdate'], - ], - ); - } - - public function createComparator(): Comparator - { - return new MySQL\Comparator( - $this->_platform, - new CachingCollationMetadataProvider( - new ConnectionCollationMetadataProvider($this->_conn), - ), - ); - } - - protected function selectTableNames(string $databaseName): Result - { - $sql = <<<'SQL' -SELECT TABLE_NAME -FROM information_schema.TABLES -WHERE TABLE_SCHEMA = ? - AND TABLE_TYPE = 'BASE TABLE' -ORDER BY TABLE_NAME -SQL; - - return $this->_conn->executeQuery($sql, [$databaseName]); - } - - protected function selectTableColumns(string $databaseName, ?string $tableName = null): Result - { - // @todo 4.0 - call getColumnTypeSQLSnippet() instead - [$columnTypeSQL, $joinCheckConstraintSQL] = $this->_platform->getColumnTypeSQLSnippets('c', $databaseName); - - $sql = 'SELECT'; - - if ($tableName === null) { - $sql .= ' c.TABLE_NAME,'; - } - - $sql .= <<_conn->executeQuery($sql, $params); - } - - protected function selectIndexColumns(string $databaseName, ?string $tableName = null): Result - { - $sql = 'SELECT'; - - if ($tableName === null) { - $sql .= ' TABLE_NAME,'; - } - - $sql .= <<<'SQL' - NON_UNIQUE AS Non_Unique, - INDEX_NAME AS Key_name, - COLUMN_NAME AS Column_Name, - SUB_PART AS Sub_Part, - INDEX_TYPE AS Index_Type -FROM information_schema.STATISTICS -SQL; - - $conditions = ['TABLE_SCHEMA = ?']; - $params = [$databaseName]; - - if ($tableName !== null) { - $conditions[] = 'TABLE_NAME = ?'; - $params[] = $tableName; - } - - $sql .= ' WHERE ' . implode(' AND ', $conditions) . ' ORDER BY SEQ_IN_INDEX'; - - return $this->_conn->executeQuery($sql, $params); - } - - protected function selectForeignKeyColumns(string $databaseName, ?string $tableName = null): Result - { - $sql = 'SELECT DISTINCT'; - - if ($tableName === null) { - $sql .= ' k.TABLE_NAME,'; - } - - $sql .= <<<'SQL' - k.CONSTRAINT_NAME, - k.COLUMN_NAME, - k.REFERENCED_TABLE_NAME, - k.REFERENCED_COLUMN_NAME, - k.ORDINAL_POSITION /*!50116, - c.UPDATE_RULE, - c.DELETE_RULE */ -FROM information_schema.key_column_usage k /*!50116 -INNER JOIN information_schema.referential_constraints c -ON c.CONSTRAINT_NAME = k.CONSTRAINT_NAME -AND c.TABLE_NAME = k.TABLE_NAME */ -SQL; - - $conditions = ['k.TABLE_SCHEMA = ?']; - $params = [$databaseName]; - - if ($tableName !== null) { - $conditions[] = 'k.TABLE_NAME = ?'; - $params[] = $tableName; - } - - $conditions[] = 'k.REFERENCED_COLUMN_NAME IS NOT NULL'; - - $sql .= ' WHERE ' . implode(' AND ', $conditions) - // The schema name is passed multiple times in the WHERE clause instead of using a JOIN condition - // in order to avoid performance issues on MySQL older than 8.0 and the corresponding MariaDB versions - // caused by https://bugs.mysql.com/bug.php?id=81347. - // Use a string literal for the database name since the internal PDO SQL parser - // cannot recognize parameter placeholders inside conditional comments - . ' /*!50116 AND c.CONSTRAINT_SCHEMA = ' . $this->_conn->quote($databaseName) . ' */' - . ' ORDER BY k.ORDINAL_POSITION'; - - return $this->_conn->executeQuery($sql, $params); - } - - /** - * {@inheritDoc} - */ - protected function fetchTableOptionsByTable(string $databaseName, ?string $tableName = null): array - { - $sql = $this->_platform->fetchTableOptionsByTable($tableName !== null); - - $params = [$databaseName]; - if ($tableName !== null) { - $params[] = $tableName; - } - - /** @var array> $metadata */ - $metadata = $this->_conn->executeQuery($sql, $params) - ->fetchAllAssociativeIndexed(); - - $tableOptions = []; - foreach ($metadata as $table => $data) { - $data = array_change_key_case($data, CASE_LOWER); - - $tableOptions[$table] = [ - 'engine' => $data['engine'], - 'collation' => $data['table_collation'], - 'charset' => $data['character_set_name'], - 'autoincrement' => $data['auto_increment'], - 'comment' => $data['table_comment'], - 'create_options' => $this->parseCreateOptions($data['create_options']), - ]; - } - - return $tableOptions; - } - - /** @return string[]|true[] */ - private function parseCreateOptions(?string $string): array - { - $options = []; - - if ($string === null || $string === '') { - return $options; - } - - foreach (explode(' ', $string) as $pair) { - $parts = explode('=', $pair, 2); - - $options[$parts[0]] = $parts[1] ?? true; - } - - return $options; - } -} diff --git a/docker/streamline-src/vendor/doctrine/dbal/src/Schema/OracleSchemaManager.php b/docker/streamline-src/vendor/doctrine/dbal/src/Schema/OracleSchemaManager.php deleted file mode 100644 index 3608e056..00000000 --- a/docker/streamline-src/vendor/doctrine/dbal/src/Schema/OracleSchemaManager.php +++ /dev/null @@ -1,537 +0,0 @@ - - */ -class OracleSchemaManager extends AbstractSchemaManager -{ - /** - * {@inheritDoc} - */ - public function listTableNames() - { - return $this->doListTableNames(); - } - - /** - * {@inheritDoc} - */ - public function listTables() - { - return $this->doListTables(); - } - - /** - * {@inheritDoc} - * - * @deprecated Use {@see introspectTable()} instead. - */ - public function listTableDetails($name) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5595', - '%s is deprecated. Use introspectTable() instead.', - __METHOD__, - ); - - return $this->doListTableDetails($name); - } - - /** - * {@inheritDoc} - */ - public function listTableColumns($table, $database = null) - { - return $this->doListTableColumns($table, $database); - } - - /** - * {@inheritDoc} - */ - public function listTableIndexes($table) - { - return $this->doListTableIndexes($table); - } - - /** - * {@inheritDoc} - */ - public function listTableForeignKeys($table, $database = null) - { - return $this->doListTableForeignKeys($table, $database); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableViewDefinition($view) - { - $view = array_change_key_case($view, CASE_LOWER); - - return new View($this->getQuotedIdentifierName($view['view_name']), $view['text']); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableDefinition($table) - { - $table = array_change_key_case($table, CASE_LOWER); - - return $this->getQuotedIdentifierName($table['table_name']); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableIndexesList($tableIndexes, $tableName = null) - { - $indexBuffer = []; - foreach ($tableIndexes as $tableIndex) { - $tableIndex = array_change_key_case($tableIndex, CASE_LOWER); - - $keyName = strtolower($tableIndex['name']); - $buffer = []; - - if ($tableIndex['is_primary'] === 'P') { - $keyName = 'primary'; - $buffer['primary'] = true; - $buffer['non_unique'] = false; - } else { - $buffer['primary'] = false; - $buffer['non_unique'] = ! $tableIndex['is_unique']; - } - - $buffer['key_name'] = $keyName; - $buffer['column_name'] = $this->getQuotedIdentifierName($tableIndex['column_name']); - $indexBuffer[] = $buffer; - } - - return parent::_getPortableTableIndexesList($indexBuffer, $tableName); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableColumnDefinition($tableColumn) - { - $tableColumn = array_change_key_case($tableColumn, CASE_LOWER); - - $dbType = strtolower($tableColumn['data_type']); - if (strpos($dbType, 'timestamp(') === 0) { - if (strpos($dbType, 'with time zone') !== false) { - $dbType = 'timestamptz'; - } else { - $dbType = 'timestamp'; - } - } - - $unsigned = $fixed = $precision = $scale = $length = null; - - if (! isset($tableColumn['column_name'])) { - $tableColumn['column_name'] = ''; - } - - // Default values returned from database sometimes have trailing spaces. - if (is_string($tableColumn['data_default'])) { - $tableColumn['data_default'] = trim($tableColumn['data_default']); - } - - if ($tableColumn['data_default'] === '' || $tableColumn['data_default'] === 'NULL') { - $tableColumn['data_default'] = null; - } - - if ($tableColumn['data_default'] !== null) { - // Default values returned from database are represented as literal expressions - if (preg_match('/^\'(.*)\'$/s', $tableColumn['data_default'], $matches) === 1) { - $tableColumn['data_default'] = str_replace("''", "'", $matches[1]); - } - } - - if ($tableColumn['data_precision'] !== null) { - $precision = (int) $tableColumn['data_precision']; - } - - if ($tableColumn['data_scale'] !== null) { - $scale = (int) $tableColumn['data_scale']; - } - - $type = $this->_platform->getDoctrineTypeMapping($dbType); - $type = $this->extractDoctrineTypeFromComment($tableColumn['comments'], $type); - $tableColumn['comments'] = $this->removeDoctrineTypeFromComment($tableColumn['comments'], $type); - - switch ($dbType) { - case 'number': - if ($precision === 20 && $scale === 0) { - $type = 'bigint'; - } elseif ($precision === 5 && $scale === 0) { - $type = 'smallint'; - } elseif ($precision === 1 && $scale === 0) { - $type = 'boolean'; - } elseif ($scale > 0) { - $type = 'decimal'; - } - - break; - - case 'varchar': - case 'varchar2': - case 'nvarchar2': - $length = $tableColumn['char_length']; - $fixed = false; - break; - - case 'raw': - $length = $tableColumn['data_length']; - $fixed = true; - break; - - case 'char': - case 'nchar': - $length = $tableColumn['char_length']; - $fixed = true; - break; - } - - $options = [ - 'notnull' => $tableColumn['nullable'] === 'N', - 'fixed' => (bool) $fixed, - 'unsigned' => (bool) $unsigned, - 'default' => $tableColumn['data_default'], - 'length' => $length, - 'precision' => $precision, - 'scale' => $scale, - 'comment' => isset($tableColumn['comments']) && $tableColumn['comments'] !== '' - ? $tableColumn['comments'] - : null, - ]; - - return new Column($this->getQuotedIdentifierName($tableColumn['column_name']), Type::getType($type), $options); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableForeignKeysList($tableForeignKeys) - { - $list = []; - foreach ($tableForeignKeys as $value) { - $value = array_change_key_case($value, CASE_LOWER); - if (! isset($list[$value['constraint_name']])) { - if ($value['delete_rule'] === 'NO ACTION') { - $value['delete_rule'] = null; - } - - $list[$value['constraint_name']] = [ - 'name' => $this->getQuotedIdentifierName($value['constraint_name']), - 'local' => [], - 'foreign' => [], - 'foreignTable' => $value['references_table'], - 'onDelete' => $value['delete_rule'], - ]; - } - - $localColumn = $this->getQuotedIdentifierName($value['local_column']); - $foreignColumn = $this->getQuotedIdentifierName($value['foreign_column']); - - $list[$value['constraint_name']]['local'][$value['position']] = $localColumn; - $list[$value['constraint_name']]['foreign'][$value['position']] = $foreignColumn; - } - - return parent::_getPortableTableForeignKeysList($list); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableForeignKeyDefinition($tableForeignKey): ForeignKeyConstraint - { - return new ForeignKeyConstraint( - array_values($tableForeignKey['local']), - $this->getQuotedIdentifierName($tableForeignKey['foreignTable']), - array_values($tableForeignKey['foreign']), - $this->getQuotedIdentifierName($tableForeignKey['name']), - ['onDelete' => $tableForeignKey['onDelete']], - ); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableSequenceDefinition($sequence) - { - $sequence = array_change_key_case($sequence, CASE_LOWER); - - return new Sequence( - $this->getQuotedIdentifierName($sequence['sequence_name']), - (int) $sequence['increment_by'], - (int) $sequence['min_value'], - ); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableDatabaseDefinition($database) - { - $database = array_change_key_case($database, CASE_LOWER); - - return $database['username']; - } - - /** - * {@inheritDoc} - */ - public function createDatabase($database) - { - $statement = $this->_platform->getCreateDatabaseSQL($database); - - $params = $this->_conn->getParams(); - - if (isset($params['password'])) { - $statement .= ' IDENTIFIED BY ' . $params['password']; - } - - $this->_conn->executeStatement($statement); - - $statement = 'GRANT DBA TO ' . $database; - $this->_conn->executeStatement($statement); - } - - /** - * @internal The method should be only used from within the OracleSchemaManager class hierarchy. - * - * @param string $table - * - * @return bool - * - * @throws Exception - */ - public function dropAutoincrement($table) - { - $sql = $this->_platform->getDropAutoincrementSql($table); - foreach ($sql as $query) { - $this->_conn->executeStatement($query); - } - - return true; - } - - /** - * {@inheritDoc} - */ - public function dropTable($name) - { - $this->tryMethod('dropAutoincrement', $name); - - parent::dropTable($name); - } - - /** - * Returns the quoted representation of the given identifier name. - * - * Quotes non-uppercase identifiers explicitly to preserve case - * and thus make references to the particular identifier work. - * - * @param string $identifier The identifier to quote. - */ - private function getQuotedIdentifierName($identifier): string - { - if (preg_match('/[a-z]/', $identifier) === 1) { - return $this->_platform->quoteIdentifier($identifier); - } - - return $identifier; - } - - protected function selectTableNames(string $databaseName): Result - { - $sql = <<<'SQL' -SELECT TABLE_NAME -FROM ALL_TABLES -WHERE OWNER = :OWNER -ORDER BY TABLE_NAME -SQL; - - return $this->_conn->executeQuery($sql, ['OWNER' => $databaseName]); - } - - protected function selectTableColumns(string $databaseName, ?string $tableName = null): Result - { - $sql = 'SELECT'; - - if ($tableName === null) { - $sql .= ' C.TABLE_NAME,'; - } - - $sql .= <<<'SQL' - C.COLUMN_NAME, - C.DATA_TYPE, - C.DATA_DEFAULT, - C.DATA_PRECISION, - C.DATA_SCALE, - C.CHAR_LENGTH, - C.DATA_LENGTH, - C.NULLABLE, - D.COMMENTS - FROM ALL_TAB_COLUMNS C - INNER JOIN ALL_TABLES T - ON T.OWNER = C.OWNER - AND T.TABLE_NAME = C.TABLE_NAME - LEFT JOIN ALL_COL_COMMENTS D - ON D.OWNER = C.OWNER - AND D.TABLE_NAME = C.TABLE_NAME - AND D.COLUMN_NAME = C.COLUMN_NAME -SQL; - - $conditions = ['C.OWNER = :OWNER']; - $params = ['OWNER' => $databaseName]; - - if ($tableName !== null) { - $conditions[] = 'C.TABLE_NAME = :TABLE_NAME'; - $params['TABLE_NAME'] = $tableName; - } - - $sql .= ' WHERE ' . implode(' AND ', $conditions) . ' ORDER BY C.COLUMN_ID'; - - return $this->_conn->executeQuery($sql, $params); - } - - protected function selectIndexColumns(string $databaseName, ?string $tableName = null): Result - { - $sql = 'SELECT'; - - if ($tableName === null) { - $sql .= ' IND_COL.TABLE_NAME,'; - } - - $sql .= <<<'SQL' - IND_COL.INDEX_NAME AS NAME, - IND.INDEX_TYPE AS TYPE, - DECODE(IND.UNIQUENESS, 'NONUNIQUE', 0, 'UNIQUE', 1) AS IS_UNIQUE, - IND_COL.COLUMN_NAME, - IND_COL.COLUMN_POSITION AS COLUMN_POS, - CON.CONSTRAINT_TYPE AS IS_PRIMARY - FROM ALL_IND_COLUMNS IND_COL - LEFT JOIN ALL_INDEXES IND - ON IND.OWNER = IND_COL.INDEX_OWNER - AND IND.INDEX_NAME = IND_COL.INDEX_NAME - LEFT JOIN ALL_CONSTRAINTS CON - ON CON.OWNER = IND_COL.INDEX_OWNER - AND CON.INDEX_NAME = IND_COL.INDEX_NAME -SQL; - - $conditions = ['IND_COL.INDEX_OWNER = :OWNER']; - $params = ['OWNER' => $databaseName]; - - if ($tableName !== null) { - $conditions[] = 'IND_COL.TABLE_NAME = :TABLE_NAME'; - $params['TABLE_NAME'] = $tableName; - } - - $sql .= ' WHERE ' . implode(' AND ', $conditions) . ' ORDER BY IND_COL.TABLE_NAME, IND_COL.INDEX_NAME' - . ', IND_COL.COLUMN_POSITION'; - - return $this->_conn->executeQuery($sql, $params); - } - - protected function selectForeignKeyColumns(string $databaseName, ?string $tableName = null): Result - { - $sql = 'SELECT'; - - if ($tableName === null) { - $sql .= ' COLS.TABLE_NAME,'; - } - - $sql .= <<<'SQL' - ALC.CONSTRAINT_NAME, - ALC.DELETE_RULE, - COLS.COLUMN_NAME LOCAL_COLUMN, - COLS.POSITION, - R_COLS.TABLE_NAME REFERENCES_TABLE, - R_COLS.COLUMN_NAME FOREIGN_COLUMN - FROM ALL_CONS_COLUMNS COLS - LEFT JOIN ALL_CONSTRAINTS ALC ON ALC.OWNER = COLS.OWNER AND ALC.CONSTRAINT_NAME = COLS.CONSTRAINT_NAME - LEFT JOIN ALL_CONS_COLUMNS R_COLS ON R_COLS.OWNER = ALC.R_OWNER AND - R_COLS.CONSTRAINT_NAME = ALC.R_CONSTRAINT_NAME AND - R_COLS.POSITION = COLS.POSITION -SQL; - - $conditions = ["ALC.CONSTRAINT_TYPE = 'R'", 'COLS.OWNER = :OWNER']; - $params = ['OWNER' => $databaseName]; - - if ($tableName !== null) { - $conditions[] = 'COLS.TABLE_NAME = :TABLE_NAME'; - $params['TABLE_NAME'] = $tableName; - } - - $sql .= ' WHERE ' . implode(' AND ', $conditions) . ' ORDER BY COLS.TABLE_NAME, COLS.CONSTRAINT_NAME' - . ', COLS.POSITION'; - - return $this->_conn->executeQuery($sql, $params); - } - - /** - * {@inheritDoc} - */ - protected function fetchTableOptionsByTable(string $databaseName, ?string $tableName = null): array - { - $sql = 'SELECT TABLE_NAME, COMMENTS'; - - $conditions = ['OWNER = :OWNER']; - $params = ['OWNER' => $databaseName]; - - if ($tableName !== null) { - $conditions[] = 'TABLE_NAME = :TABLE_NAME'; - $params['TABLE_NAME'] = $tableName; - } - - $sql .= ' FROM ALL_TAB_COMMENTS WHERE ' . implode(' AND ', $conditions); - - /** @var array> $metadata */ - $metadata = $this->_conn->executeQuery($sql, $params) - ->fetchAllAssociativeIndexed(); - - $tableOptions = []; - foreach ($metadata as $table => $data) { - $data = array_change_key_case($data, CASE_LOWER); - - $tableOptions[$table] = [ - 'comment' => $data['comments'], - ]; - } - - return $tableOptions; - } - - protected function normalizeName(string $name): string - { - $identifier = new Identifier($name); - - return $identifier->isQuoted() ? $identifier->getName() : strtoupper($name); - } -} diff --git a/docker/streamline-src/vendor/doctrine/dbal/src/Schema/PostgreSQLSchemaManager.php b/docker/streamline-src/vendor/doctrine/dbal/src/Schema/PostgreSQLSchemaManager.php deleted file mode 100644 index 1716249f..00000000 --- a/docker/streamline-src/vendor/doctrine/dbal/src/Schema/PostgreSQLSchemaManager.php +++ /dev/null @@ -1,769 +0,0 @@ - - */ -class PostgreSQLSchemaManager extends AbstractSchemaManager -{ - /** @var string[]|null */ - private ?array $existingSchemaPaths = null; - - /** - * {@inheritDoc} - */ - public function listTableNames() - { - return $this->doListTableNames(); - } - - /** - * {@inheritDoc} - */ - public function listTables() - { - return $this->doListTables(); - } - - /** - * {@inheritDoc} - * - * @deprecated Use {@see introspectTable()} instead. - */ - public function listTableDetails($name) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5595', - '%s is deprecated. Use introspectTable() instead.', - __METHOD__, - ); - - return $this->doListTableDetails($name); - } - - /** - * {@inheritDoc} - */ - public function listTableColumns($table, $database = null) - { - return $this->doListTableColumns($table, $database); - } - - /** - * {@inheritDoc} - */ - public function listTableIndexes($table) - { - return $this->doListTableIndexes($table); - } - - /** - * {@inheritDoc} - */ - public function listTableForeignKeys($table, $database = null) - { - return $this->doListTableForeignKeys($table, $database); - } - - /** - * Gets all the existing schema names. - * - * @deprecated Use {@see listSchemaNames()} instead. - * - * @return string[] - * - * @throws Exception - */ - public function getSchemaNames() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4503', - 'PostgreSQLSchemaManager::getSchemaNames() is deprecated,' - . ' use PostgreSQLSchemaManager::listSchemaNames() instead.', - ); - - return $this->listNamespaceNames(); - } - - /** - * {@inheritDoc} - */ - public function listSchemaNames(): array - { - return $this->_conn->fetchFirstColumn( - <<<'SQL' -SELECT schema_name -FROM information_schema.schemata -WHERE schema_name NOT LIKE 'pg\_%' -AND schema_name != 'information_schema' -SQL, - ); - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function getSchemaSearchPaths() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4821', - 'PostgreSQLSchemaManager::getSchemaSearchPaths() is deprecated.', - ); - - $params = $this->_conn->getParams(); - - $searchPaths = $this->_conn->fetchOne('SHOW search_path'); - assert($searchPaths !== false); - - $schema = explode(',', $searchPaths); - - if (isset($params['user'])) { - $schema = str_replace('"$user"', $params['user'], $schema); - } - - return array_map('trim', $schema); - } - - /** - * Gets names of all existing schemas in the current users search path. - * - * This is a PostgreSQL only function. - * - * @internal The method should be only used from within the PostgreSQLSchemaManager class hierarchy. - * - * @return string[] - * - * @throws Exception - */ - public function getExistingSchemaSearchPaths() - { - if ($this->existingSchemaPaths === null) { - $this->determineExistingSchemaSearchPaths(); - } - - assert($this->existingSchemaPaths !== null); - - return $this->existingSchemaPaths; - } - - /** - * Returns the name of the current schema. - * - * @return string|null - * - * @throws Exception - */ - protected function getCurrentSchema() - { - $schemas = $this->getExistingSchemaSearchPaths(); - - return array_shift($schemas); - } - - /** - * Sets or resets the order of the existing schemas in the current search path of the user. - * - * This is a PostgreSQL only function. - * - * @internal The method should be only used from within the PostgreSQLSchemaManager class hierarchy. - * - * @return void - * - * @throws Exception - */ - public function determineExistingSchemaSearchPaths() - { - $names = $this->listSchemaNames(); - $paths = $this->getSchemaSearchPaths(); - - $this->existingSchemaPaths = array_filter($paths, static function ($v) use ($names): bool { - return in_array($v, $names, true); - }); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableForeignKeyDefinition($tableForeignKey) - { - $onUpdate = null; - $onDelete = null; - - if ( - preg_match( - '(ON UPDATE ([a-zA-Z0-9]+( (NULL|ACTION|DEFAULT))?))', - $tableForeignKey['condef'], - $match, - ) === 1 - ) { - $onUpdate = $match[1]; - } - - if ( - preg_match( - '(ON DELETE ([a-zA-Z0-9]+( (NULL|ACTION|DEFAULT))?))', - $tableForeignKey['condef'], - $match, - ) === 1 - ) { - $onDelete = $match[1]; - } - - $result = preg_match('/FOREIGN KEY \((.+)\) REFERENCES (.+)\((.+)\)/', $tableForeignKey['condef'], $values); - assert($result === 1); - - // PostgreSQL returns identifiers that are keywords with quotes, we need them later, don't get - // the idea to trim them here. - $localColumns = array_map('trim', explode(',', $values[1])); - $foreignColumns = array_map('trim', explode(',', $values[3])); - $foreignTable = $values[2]; - - return new ForeignKeyConstraint( - $localColumns, - $foreignTable, - $foreignColumns, - $tableForeignKey['conname'], - ['onUpdate' => $onUpdate, 'onDelete' => $onDelete], - ); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableViewDefinition($view) - { - return new View($view['schemaname'] . '.' . $view['viewname'], $view['definition']); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableDefinition($table) - { - $currentSchema = $this->getCurrentSchema(); - - if ($table['schema_name'] === $currentSchema) { - return $table['table_name']; - } - - return $table['schema_name'] . '.' . $table['table_name']; - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableIndexesList($tableIndexes, $tableName = null) - { - $buffer = []; - foreach ($tableIndexes as $row) { - $colNumbers = array_map('intval', explode(' ', $row['indkey'])); - $columnNameSql = sprintf( - 'SELECT attnum, attname FROM pg_attribute WHERE attrelid=%d AND attnum IN (%s) ORDER BY attnum ASC', - $row['indrelid'], - implode(' ,', $colNumbers), - ); - - $indexColumns = $this->_conn->fetchAllAssociative($columnNameSql); - - // required for getting the order of the columns right. - foreach ($colNumbers as $colNum) { - foreach ($indexColumns as $colRow) { - if ($colNum !== $colRow['attnum']) { - continue; - } - - $buffer[] = [ - 'key_name' => $row['relname'], - 'column_name' => trim($colRow['attname']), - 'non_unique' => ! $row['indisunique'], - 'primary' => $row['indisprimary'], - 'where' => $row['where'], - ]; - } - } - } - - return parent::_getPortableTableIndexesList($buffer, $tableName); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableDatabaseDefinition($database) - { - return $database['datname']; - } - - /** - * {@inheritDoc} - * - * @deprecated Use {@see listSchemaNames()} instead. - */ - protected function getPortableNamespaceDefinition(array $namespace) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4503', - 'PostgreSQLSchemaManager::getPortableNamespaceDefinition() is deprecated,' - . ' use PostgreSQLSchemaManager::listSchemaNames() instead.', - ); - - return $namespace['nspname']; - } - - /** - * {@inheritDoc} - */ - protected function _getPortableSequenceDefinition($sequence) - { - if ($sequence['schemaname'] !== 'public') { - $sequenceName = $sequence['schemaname'] . '.' . $sequence['relname']; - } else { - $sequenceName = $sequence['relname']; - } - - return new Sequence($sequenceName, (int) $sequence['increment_by'], (int) $sequence['min_value']); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableColumnDefinition($tableColumn) - { - $tableColumn = array_change_key_case($tableColumn, CASE_LOWER); - - if (strtolower($tableColumn['type']) === 'varchar' || strtolower($tableColumn['type']) === 'bpchar') { - // get length from varchar definition - $length = preg_replace('~.*\(([0-9]*)\).*~', '$1', $tableColumn['complete_type']); - $tableColumn['length'] = $length; - } - - $matches = []; - - $autoincrement = false; - - if ( - $tableColumn['default'] !== null - && preg_match("/^nextval\('(.*)'(::.*)?\)$/", $tableColumn['default'], $matches) === 1 - ) { - $tableColumn['sequence'] = $matches[1]; - $tableColumn['default'] = null; - $autoincrement = true; - } - - if ($tableColumn['default'] !== null) { - if (preg_match("/^['(](.*)[')]::/", $tableColumn['default'], $matches) === 1) { - $tableColumn['default'] = $matches[1]; - } elseif (preg_match('/^NULL::/', $tableColumn['default']) === 1) { - $tableColumn['default'] = null; - } - } - - $length = $tableColumn['length'] ?? null; - if ($length === '-1' && isset($tableColumn['atttypmod'])) { - $length = $tableColumn['atttypmod'] - 4; - } - - if ((int) $length <= 0) { - $length = null; - } - - $fixed = null; - - if (! isset($tableColumn['name'])) { - $tableColumn['name'] = ''; - } - - $precision = null; - $scale = null; - $jsonb = null; - - $dbType = strtolower($tableColumn['type']); - if ( - $tableColumn['domain_type'] !== null - && $tableColumn['domain_type'] !== '' - && ! $this->_platform->hasDoctrineTypeMappingFor($tableColumn['type']) - ) { - $dbType = strtolower($tableColumn['domain_type']); - $tableColumn['complete_type'] = $tableColumn['domain_complete_type']; - } - - $type = $this->_platform->getDoctrineTypeMapping($dbType); - $type = $this->extractDoctrineTypeFromComment($tableColumn['comment'], $type); - $tableColumn['comment'] = $this->removeDoctrineTypeFromComment($tableColumn['comment'], $type); - - switch ($dbType) { - case 'smallint': - case 'int2': - $tableColumn['default'] = $this->fixVersion94NegativeNumericDefaultValue($tableColumn['default']); - $length = null; - break; - - case 'int': - case 'int4': - case 'integer': - $tableColumn['default'] = $this->fixVersion94NegativeNumericDefaultValue($tableColumn['default']); - $length = null; - break; - - case 'bigint': - case 'int8': - $tableColumn['default'] = $this->fixVersion94NegativeNumericDefaultValue($tableColumn['default']); - $length = null; - break; - - case 'bool': - case 'boolean': - if ($tableColumn['default'] === 'true') { - $tableColumn['default'] = true; - } - - if ($tableColumn['default'] === 'false') { - $tableColumn['default'] = false; - } - - $length = null; - break; - - case 'json': - case 'text': - case '_varchar': - case 'varchar': - $tableColumn['default'] = $this->parseDefaultExpression($tableColumn['default']); - $fixed = false; - break; - case 'interval': - $fixed = false; - break; - - case 'char': - case 'bpchar': - $fixed = true; - break; - - case 'float': - case 'float4': - case 'float8': - case 'double': - case 'double precision': - case 'real': - case 'decimal': - case 'money': - case 'numeric': - $tableColumn['default'] = $this->fixVersion94NegativeNumericDefaultValue($tableColumn['default']); - - if ( - preg_match( - '([A-Za-z]+\(([0-9]+),([0-9]+)\))', - $tableColumn['complete_type'], - $match, - ) === 1 - ) { - $precision = $match[1]; - $scale = $match[2]; - $length = null; - } - - break; - - case 'year': - $length = null; - break; - - // PostgreSQL 9.4+ only - case 'jsonb': - $jsonb = true; - break; - } - - if ( - $tableColumn['default'] !== null && preg_match( - "('([^']+)'::)", - $tableColumn['default'], - $match, - ) === 1 - ) { - $tableColumn['default'] = $match[1]; - } - - $options = [ - 'length' => $length, - 'notnull' => (bool) $tableColumn['isnotnull'], - 'default' => $tableColumn['default'], - 'precision' => $precision, - 'scale' => $scale, - 'fixed' => $fixed, - 'autoincrement' => $autoincrement, - 'comment' => isset($tableColumn['comment']) && $tableColumn['comment'] !== '' - ? $tableColumn['comment'] - : null, - ]; - - $column = new Column($tableColumn['field'], Type::getType($type), $options); - - if (! empty($tableColumn['collation'])) { - $column->setPlatformOption('collation', $tableColumn['collation']); - } - - if ($column->getType()->getName() === Types::JSON) { - if (! $column->getType() instanceof JsonType) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5049', - <<<'DEPRECATION' - %s not extending %s while being named %s is deprecated, - and will lead to jsonb never to being used in 4.0., - DEPRECATION, - get_class($column->getType()), - JsonType::class, - Types::JSON, - ); - } - - $column->setPlatformOption('jsonb', $jsonb); - } - - return $column; - } - - /** - * PostgreSQL 9.4 puts parentheses around negative numeric default values that need to be stripped eventually. - * - * @param mixed $defaultValue - * - * @return mixed - */ - private function fixVersion94NegativeNumericDefaultValue($defaultValue) - { - if ($defaultValue !== null && strpos($defaultValue, '(') === 0) { - return trim($defaultValue, '()'); - } - - return $defaultValue; - } - - /** - * Parses a default value expression as given by PostgreSQL - */ - private function parseDefaultExpression(?string $default): ?string - { - if ($default === null) { - return $default; - } - - return str_replace("''", "'", $default); - } - - protected function selectTableNames(string $databaseName): Result - { - $sql = <<<'SQL' -SELECT quote_ident(table_name) AS table_name, - table_schema AS schema_name -FROM information_schema.tables -WHERE table_catalog = ? - AND table_schema NOT LIKE 'pg\_%' - AND table_schema != 'information_schema' - AND table_name != 'geometry_columns' - AND table_name != 'spatial_ref_sys' - AND table_type = 'BASE TABLE' -SQL; - - return $this->_conn->executeQuery($sql, [$databaseName]); - } - - protected function selectTableColumns(string $databaseName, ?string $tableName = null): Result - { - $sql = 'SELECT'; - - if ($tableName === null) { - $sql .= ' c.relname AS table_name, n.nspname AS schema_name,'; - } - - $sql .= sprintf(<<<'SQL' - a.attnum, - quote_ident(a.attname) AS field, - t.typname AS type, - format_type(a.atttypid, a.atttypmod) AS complete_type, - (SELECT tc.collcollate FROM pg_catalog.pg_collation tc WHERE tc.oid = a.attcollation) AS collation, - (SELECT t1.typname FROM pg_catalog.pg_type t1 WHERE t1.oid = t.typbasetype) AS domain_type, - (SELECT format_type(t2.typbasetype, t2.typtypmod) FROM - pg_catalog.pg_type t2 WHERE t2.typtype = 'd' AND t2.oid = a.atttypid) AS domain_complete_type, - a.attnotnull AS isnotnull, - (SELECT 't' - FROM pg_index - WHERE c.oid = pg_index.indrelid - AND pg_index.indkey[0] = a.attnum - AND pg_index.indisprimary = 't' - ) AS pri, - (%s) AS default, - (SELECT pg_description.description - FROM pg_description WHERE pg_description.objoid = c.oid AND a.attnum = pg_description.objsubid - ) AS comment - FROM pg_attribute a - INNER JOIN pg_class c - ON c.oid = a.attrelid - INNER JOIN pg_type t - ON t.oid = a.atttypid - INNER JOIN pg_namespace n - ON n.oid = c.relnamespace - LEFT JOIN pg_depend d - ON d.objid = c.oid - AND d.deptype = 'e' - AND d.classid = (SELECT oid FROM pg_class WHERE relname = 'pg_class') -SQL, $this->_platform->getDefaultColumnValueSQLSnippet()); - - $conditions = array_merge([ - 'a.attnum > 0', - "c.relkind = 'r'", - 'd.refobjid IS NULL', - ], $this->buildQueryConditions($tableName)); - - $sql .= ' WHERE ' . implode(' AND ', $conditions) . ' ORDER BY a.attnum'; - - return $this->_conn->executeQuery($sql); - } - - protected function selectIndexColumns(string $databaseName, ?string $tableName = null): Result - { - $sql = 'SELECT'; - - if ($tableName === null) { - $sql .= ' tc.relname AS table_name, tn.nspname AS schema_name,'; - } - - $sql .= <<<'SQL' - quote_ident(ic.relname) AS relname, - i.indisunique, - i.indisprimary, - i.indkey, - i.indrelid, - pg_get_expr(indpred, indrelid) AS "where" - FROM pg_index i - JOIN pg_class AS tc ON tc.oid = i.indrelid - JOIN pg_namespace tn ON tn.oid = tc.relnamespace - JOIN pg_class AS ic ON ic.oid = i.indexrelid - WHERE ic.oid IN ( - SELECT indexrelid - FROM pg_index i, pg_class c, pg_namespace n -SQL; - - $conditions = array_merge([ - 'c.oid = i.indrelid', - 'c.relnamespace = n.oid', - ], $this->buildQueryConditions($tableName)); - - $sql .= ' WHERE ' . implode(' AND ', $conditions) . ')'; - - return $this->_conn->executeQuery($sql); - } - - protected function selectForeignKeyColumns(string $databaseName, ?string $tableName = null): Result - { - $sql = 'SELECT'; - - if ($tableName === null) { - $sql .= ' tc.relname AS table_name, tn.nspname AS schema_name,'; - } - - $sql .= <<<'SQL' - quote_ident(r.conname) as conname, - pg_get_constraintdef(r.oid, true) as condef - FROM pg_constraint r - JOIN pg_class AS tc ON tc.oid = r.conrelid - JOIN pg_namespace tn ON tn.oid = tc.relnamespace - WHERE r.conrelid IN - ( - SELECT c.oid - FROM pg_class c, pg_namespace n -SQL; - - $conditions = array_merge(['n.oid = c.relnamespace'], $this->buildQueryConditions($tableName)); - - $sql .= ' WHERE ' . implode(' AND ', $conditions) . ") AND r.contype = 'f'"; - - return $this->_conn->executeQuery($sql); - } - - /** - * {@inheritDoc} - */ - protected function fetchTableOptionsByTable(string $databaseName, ?string $tableName = null): array - { - $sql = <<<'SQL' -SELECT c.relname, - CASE c.relpersistence WHEN 'u' THEN true ELSE false END as unlogged, - obj_description(c.oid, 'pg_class') AS comment -FROM pg_class c - INNER JOIN pg_namespace n - ON n.oid = c.relnamespace -SQL; - - $conditions = array_merge(["c.relkind = 'r'"], $this->buildQueryConditions($tableName)); - - $sql .= ' WHERE ' . implode(' AND ', $conditions); - - return $this->_conn->fetchAllAssociativeIndexed($sql); - } - - /** - * @param string|null $tableName - * - * @return list - */ - private function buildQueryConditions($tableName): array - { - $conditions = []; - - if ($tableName !== null) { - if (strpos($tableName, '.') !== false) { - [$schemaName, $tableName] = explode('.', $tableName); - $conditions[] = 'n.nspname = ' . $this->_platform->quoteStringLiteral($schemaName); - } else { - $conditions[] = 'n.nspname = ANY(current_schemas(false))'; - } - - $identifier = new Identifier($tableName); - $conditions[] = 'c.relname = ' . $this->_platform->quoteStringLiteral($identifier->getName()); - } - - $conditions[] = "n.nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast')"; - - return $conditions; - } -} diff --git a/docker/streamline-src/vendor/doctrine/dbal/src/Schema/SqliteSchemaManager.php b/docker/streamline-src/vendor/doctrine/dbal/src/Schema/SqliteSchemaManager.php deleted file mode 100644 index d0c58443..00000000 --- a/docker/streamline-src/vendor/doctrine/dbal/src/Schema/SqliteSchemaManager.php +++ /dev/null @@ -1,788 +0,0 @@ - - */ -class SqliteSchemaManager extends AbstractSchemaManager -{ - /** - * {@inheritDoc} - */ - public function listTableNames() - { - return $this->doListTableNames(); - } - - /** - * {@inheritDoc} - */ - public function listTables() - { - return $this->doListTables(); - } - - /** - * {@inheritDoc} - * - * @deprecated Use {@see introspectTable()} instead. - */ - public function listTableDetails($name) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5595', - '%s is deprecated. Use introspectTable() instead.', - __METHOD__, - ); - - return $this->doListTableDetails($name); - } - - /** - * {@inheritDoc} - */ - public function listTableColumns($table, $database = null) - { - return $this->doListTableColumns($table, $database); - } - - /** - * {@inheritDoc} - */ - public function listTableIndexes($table) - { - return $this->doListTableIndexes($table); - } - - /** - * {@inheritDoc} - */ - protected function fetchForeignKeyColumnsByTable(string $databaseName): array - { - $columnsByTable = parent::fetchForeignKeyColumnsByTable($databaseName); - - if (count($columnsByTable) > 0) { - foreach ($columnsByTable as $table => $columns) { - $columnsByTable[$table] = $this->addDetailsToTableForeignKeyColumns($table, $columns); - } - } - - return $columnsByTable; - } - - /** - * {@inheritDoc} - * - * @deprecated Delete the database file using the filesystem. - */ - public function dropDatabase($database) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4963', - 'SqliteSchemaManager::dropDatabase() is deprecated. Delete the database file using the filesystem.', - ); - - if (! file_exists($database)) { - return; - } - - unlink($database); - } - - /** - * {@inheritDoc} - * - * @deprecated The engine will create the database file automatically. - */ - public function createDatabase($database) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4963', - 'SqliteSchemaManager::createDatabase() is deprecated.' - . ' The engine will create the database file automatically.', - ); - - $params = $this->_conn->getParams(); - - $params['path'] = $database; - unset($params['memory']); - - $conn = DriverManager::getConnection($params); - $conn->connect(); - $conn->close(); - } - - /** - * {@inheritDoc} - */ - public function createForeignKey(ForeignKeyConstraint $foreignKey, $table) - { - if (! $table instanceof Table) { - $table = $this->listTableDetails($table); - } - - $this->alterTable(new TableDiff($table->getName(), [], [], [], [], [], [], $table, [$foreignKey])); - } - - /** - * {@inheritDoc} - * - * @deprecated Use {@see dropForeignKey()} and {@see createForeignKey()} instead. - */ - public function dropAndCreateForeignKey(ForeignKeyConstraint $foreignKey, $table) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4897', - 'SqliteSchemaManager::dropAndCreateForeignKey() is deprecated.' - . ' Use SqliteSchemaManager::dropForeignKey() and SqliteSchemaManager::createForeignKey() instead.', - ); - - if (! $table instanceof Table) { - $table = $this->listTableDetails($table); - } - - $this->alterTable(new TableDiff($table->getName(), [], [], [], [], [], [], $table, [], [$foreignKey])); - } - - /** - * {@inheritDoc} - */ - public function dropForeignKey($foreignKey, $table) - { - if (! $table instanceof Table) { - $table = $this->listTableDetails($table); - } - - $this->alterTable(new TableDiff($table->getName(), [], [], [], [], [], [], $table, [], [], [$foreignKey])); - } - - /** - * {@inheritDoc} - */ - public function listTableForeignKeys($table, $database = null) - { - $table = $this->normalizeName($table); - - $columns = $this->selectForeignKeyColumns($database ?? 'main', $table) - ->fetchAllAssociative(); - - if (count($columns) > 0) { - $columns = $this->addDetailsToTableForeignKeyColumns($table, $columns); - } - - return $this->_getPortableTableForeignKeysList($columns); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableDefinition($table) - { - return $table['table_name']; - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableIndexesList($tableIndexes, $tableName = null) - { - $indexBuffer = []; - - // fetch primary - $indexArray = $this->_conn->fetchAllAssociative('SELECT * FROM PRAGMA_TABLE_INFO (?)', [$tableName]); - - usort( - $indexArray, - /** - * @param array $a - * @param array $b - */ - static function (array $a, array $b): int { - if ($a['pk'] === $b['pk']) { - return $a['cid'] - $b['cid']; - } - - return $a['pk'] - $b['pk']; - }, - ); - - foreach ($indexArray as $indexColumnRow) { - if ($indexColumnRow['pk'] === 0 || $indexColumnRow['pk'] === '0') { - continue; - } - - $indexBuffer[] = [ - 'key_name' => 'primary', - 'primary' => true, - 'non_unique' => false, - 'column_name' => $indexColumnRow['name'], - ]; - } - - // fetch regular indexes - foreach ($tableIndexes as $tableIndex) { - // Ignore indexes with reserved names, e.g. autoindexes - if (strpos($tableIndex['name'], 'sqlite_') === 0) { - continue; - } - - $keyName = $tableIndex['name']; - $idx = []; - $idx['key_name'] = $keyName; - $idx['primary'] = false; - $idx['non_unique'] = ! $tableIndex['unique']; - - $indexArray = $this->_conn->fetchAllAssociative('SELECT * FROM PRAGMA_INDEX_INFO (?)', [$keyName]); - - foreach ($indexArray as $indexColumnRow) { - $idx['column_name'] = $indexColumnRow['name']; - $indexBuffer[] = $idx; - } - } - - return parent::_getPortableTableIndexesList($indexBuffer, $tableName); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableColumnList($table, $database, $tableColumns) - { - $list = parent::_getPortableTableColumnList($table, $database, $tableColumns); - - // find column with autoincrement - $autoincrementColumn = null; - $autoincrementCount = 0; - - foreach ($tableColumns as $tableColumn) { - if ($tableColumn['pk'] === 0 || $tableColumn['pk'] === '0') { - continue; - } - - $autoincrementCount++; - if ($autoincrementColumn !== null || strtolower($tableColumn['type']) !== 'integer') { - continue; - } - - $autoincrementColumn = $tableColumn['name']; - } - - if ($autoincrementCount === 1 && $autoincrementColumn !== null) { - foreach ($list as $column) { - if ($autoincrementColumn !== $column->getName()) { - continue; - } - - $column->setAutoincrement(true); - } - } - - // inspect column collation and comments - $createSql = $this->getCreateTableSQL($table); - - foreach ($list as $columnName => $column) { - $type = $column->getType(); - - if ($type instanceof StringType || $type instanceof TextType) { - $column->setPlatformOption( - 'collation', - $this->parseColumnCollationFromSQL($columnName, $createSql) ?? 'BINARY', - ); - } - - $comment = $this->parseColumnCommentFromSQL($columnName, $createSql); - - if ($comment === null) { - continue; - } - - $type = $this->extractDoctrineTypeFromComment($comment, ''); - - if ($type !== '') { - $column->setType(Type::getType($type)); - - $comment = $this->removeDoctrineTypeFromComment($comment, $type); - } - - $column->setComment($comment); - } - - return $list; - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableColumnDefinition($tableColumn) - { - $parts = explode('(', $tableColumn['type']); - $tableColumn['type'] = trim($parts[0]); - if (isset($parts[1])) { - $length = trim($parts[1], ')'); - $tableColumn['length'] = $length; - } - - $dbType = strtolower($tableColumn['type']); - $length = $tableColumn['length'] ?? null; - $unsigned = false; - - if (strpos($dbType, ' unsigned') !== false) { - $dbType = str_replace(' unsigned', '', $dbType); - $unsigned = true; - } - - $fixed = false; - $type = $this->_platform->getDoctrineTypeMapping($dbType); - $default = $tableColumn['dflt_value']; - if ($default === 'NULL') { - $default = null; - } - - if ($default !== null) { - // SQLite returns the default value as a literal expression, so we need to parse it - if (preg_match('/^\'(.*)\'$/s', $default, $matches) === 1) { - $default = str_replace("''", "'", $matches[1]); - } - } - - $notnull = (bool) $tableColumn['notnull']; - - if (! isset($tableColumn['name'])) { - $tableColumn['name'] = ''; - } - - $precision = null; - $scale = null; - - switch ($dbType) { - case 'char': - $fixed = true; - break; - case 'float': - case 'double': - case 'real': - case 'decimal': - case 'numeric': - if (isset($tableColumn['length'])) { - if (strpos($tableColumn['length'], ',') === false) { - $tableColumn['length'] .= ',0'; - } - - [$precision, $scale] = array_map('trim', explode(',', $tableColumn['length'])); - } - - $length = null; - break; - } - - $options = [ - 'length' => $length, - 'unsigned' => $unsigned, - 'fixed' => $fixed, - 'notnull' => $notnull, - 'default' => $default, - 'precision' => $precision, - 'scale' => $scale, - ]; - - return new Column($tableColumn['name'], Type::getType($type), $options); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableViewDefinition($view) - { - return new View($view['name'], $view['sql']); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableForeignKeysList($tableForeignKeys) - { - $list = []; - foreach ($tableForeignKeys as $value) { - $value = array_change_key_case($value, CASE_LOWER); - $id = $value['id']; - if (! isset($list[$id])) { - if (! isset($value['on_delete']) || $value['on_delete'] === 'RESTRICT') { - $value['on_delete'] = null; - } - - if (! isset($value['on_update']) || $value['on_update'] === 'RESTRICT') { - $value['on_update'] = null; - } - - $list[$id] = [ - 'name' => $value['constraint_name'], - 'local' => [], - 'foreign' => [], - 'foreignTable' => $value['table'], - 'onDelete' => $value['on_delete'], - 'onUpdate' => $value['on_update'], - 'deferrable' => $value['deferrable'], - 'deferred' => $value['deferred'], - ]; - } - - $list[$id]['local'][] = $value['from']; - - if ($value['to'] === null) { - // Inferring a shorthand form for the foreign key constraint, where the "to" field is empty. - // @see https://www.sqlite.org/foreignkeys.html#fk_indexes. - $foreignTableIndexes = $this->_getPortableTableIndexesList([], $value['table']); - - if (! isset($foreignTableIndexes['primary'])) { - continue; - } - - $list[$id]['foreign'] = [...$list[$id]['foreign'], ...$foreignTableIndexes['primary']->getColumns()]; - - continue; - } - - $list[$id]['foreign'][] = $value['to']; - } - - return parent::_getPortableTableForeignKeysList($list); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableForeignKeyDefinition($tableForeignKey): ForeignKeyConstraint - { - return new ForeignKeyConstraint( - $tableForeignKey['local'], - $tableForeignKey['foreignTable'], - $tableForeignKey['foreign'], - $tableForeignKey['name'], - [ - 'onDelete' => $tableForeignKey['onDelete'], - 'onUpdate' => $tableForeignKey['onUpdate'], - 'deferrable' => $tableForeignKey['deferrable'], - 'deferred' => $tableForeignKey['deferred'], - ], - ); - } - - private function parseColumnCollationFromSQL(string $column, string $sql): ?string - { - $pattern = '{(?:\W' . preg_quote($column) . '\W|\W' - . preg_quote($this->_platform->quoteSingleIdentifier($column)) - . '\W)[^,(]+(?:\([^()]+\)[^,]*)?(?:(?:DEFAULT|CHECK)\s*(?:\(.*?\))?[^,]*)*COLLATE\s+["\']?([^\s,"\')]+)}is'; - - if (preg_match($pattern, $sql, $match) !== 1) { - return null; - } - - return $match[1]; - } - - private function parseTableCommentFromSQL(string $table, string $sql): ?string - { - $pattern = '/\s* # Allow whitespace characters at start of line -CREATE\sTABLE # Match "CREATE TABLE" -(?:\W"' . preg_quote($this->_platform->quoteSingleIdentifier($table), '/') . '"\W|\W' . preg_quote($table, '/') - . '\W) # Match table name (quoted and unquoted) -( # Start capture - (?:\s*--[^\n]*\n?)+ # Capture anything that starts with whitespaces followed by -- until the end of the line(s) -)/ix'; - - if (preg_match($pattern, $sql, $match) !== 1) { - return null; - } - - $comment = preg_replace('{^\s*--}m', '', rtrim($match[1], "\n")); - - return $comment === '' ? null : $comment; - } - - private function parseColumnCommentFromSQL(string $column, string $sql): ?string - { - $pattern = '{[\s(,](?:\W' . preg_quote($this->_platform->quoteSingleIdentifier($column)) - . '\W|\W' . preg_quote($column) . '\W)(?:\([^)]*?\)|[^,(])*?,?((?:(?!\n))(?:\s*--[^\n]*\n?)+)}i'; - - if (preg_match($pattern, $sql, $match) !== 1) { - return null; - } - - $comment = preg_replace('{^\s*--}m', '', rtrim($match[1], "\n")); - - return $comment === '' ? null : $comment; - } - - /** @throws Exception */ - private function getCreateTableSQL(string $table): string - { - $sql = $this->_conn->fetchOne( - <<<'SQL' -SELECT sql - FROM ( - SELECT * - FROM sqlite_master - UNION ALL - SELECT * - FROM sqlite_temp_master - ) -WHERE type = 'table' -AND name = ? -SQL - , - [$table], - ); - - if ($sql !== false) { - return $sql; - } - - return ''; - } - - /** - * @param list> $columns - * - * @return list> - * - * @throws Exception - */ - private function addDetailsToTableForeignKeyColumns(string $table, array $columns): array - { - $foreignKeyDetails = $this->getForeignKeyDetails($table); - $foreignKeyCount = count($foreignKeyDetails); - - foreach ($columns as $i => $column) { - // SQLite identifies foreign keys in reverse order of appearance in SQL - $columns[$i] = array_merge($column, $foreignKeyDetails[$foreignKeyCount - $column['id'] - 1]); - } - - return $columns; - } - - /** - * @param string $table - * - * @return list> - * - * @throws Exception - */ - private function getForeignKeyDetails($table) - { - $createSql = $this->getCreateTableSQL($table); - - if ( - preg_match_all( - '# - (?:CONSTRAINT\s+(\S+)\s+)? - (?:FOREIGN\s+KEY[^)]+\)\s*)? - REFERENCES\s+\S+\s*(?:\([^)]+\))? - (?: - [^,]*? - (NOT\s+DEFERRABLE|DEFERRABLE) - (?:\s+INITIALLY\s+(DEFERRED|IMMEDIATE))? - )?#isx', - $createSql, - $match, - ) === 0 - ) { - return []; - } - - $names = $match[1]; - $deferrable = $match[2]; - $deferred = $match[3]; - $details = []; - - for ($i = 0, $count = count($match[0]); $i < $count; $i++) { - $details[] = [ - 'constraint_name' => isset($names[$i]) && $names[$i] !== '' ? $names[$i] : null, - 'deferrable' => isset($deferrable[$i]) && strcasecmp($deferrable[$i], 'deferrable') === 0, - 'deferred' => isset($deferred[$i]) && strcasecmp($deferred[$i], 'deferred') === 0, - ]; - } - - return $details; - } - - public function createComparator(): Comparator - { - return new SQLite\Comparator($this->_platform); - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function getSchemaSearchPaths() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4821', - 'SqliteSchemaManager::getSchemaSearchPaths() is deprecated.', - ); - - // SQLite does not support schemas or databases - return []; - } - - protected function selectTableNames(string $databaseName): Result - { - $sql = <<<'SQL' -SELECT name AS table_name -FROM sqlite_master -WHERE type = 'table' - AND name != 'sqlite_sequence' - AND name != 'geometry_columns' - AND name != 'spatial_ref_sys' -UNION ALL -SELECT name -FROM sqlite_temp_master -WHERE type = 'table' -ORDER BY name -SQL; - - return $this->_conn->executeQuery($sql); - } - - protected function selectTableColumns(string $databaseName, ?string $tableName = null): Result - { - $sql = <<<'SQL' - SELECT t.name AS table_name, - c.* - FROM sqlite_master t - JOIN pragma_table_info(t.name) c -SQL; - - $conditions = [ - "t.type = 'table'", - "t.name NOT IN ('geometry_columns', 'spatial_ref_sys', 'sqlite_sequence')", - ]; - $params = []; - - if ($tableName !== null) { - $conditions[] = 't.name = ?'; - $params[] = str_replace('.', '__', $tableName); - } - - $sql .= ' WHERE ' . implode(' AND ', $conditions) . ' ORDER BY t.name, c.cid'; - - return $this->_conn->executeQuery($sql, $params); - } - - protected function selectIndexColumns(string $databaseName, ?string $tableName = null): Result - { - $sql = <<<'SQL' - SELECT t.name AS table_name, - i.* - FROM sqlite_master t - JOIN pragma_index_list(t.name) i -SQL; - - $conditions = [ - "t.type = 'table'", - "t.name NOT IN ('geometry_columns', 'spatial_ref_sys', 'sqlite_sequence')", - ]; - $params = []; - - if ($tableName !== null) { - $conditions[] = 't.name = ?'; - $params[] = str_replace('.', '__', $tableName); - } - - $sql .= ' WHERE ' . implode(' AND ', $conditions) . ' ORDER BY t.name, i.seq'; - - return $this->_conn->executeQuery($sql, $params); - } - - protected function selectForeignKeyColumns(string $databaseName, ?string $tableName = null): Result - { - $sql = <<<'SQL' - SELECT t.name AS table_name, - p.* - FROM sqlite_master t - JOIN pragma_foreign_key_list(t.name) p - ON p."seq" != '-1' -SQL; - - $conditions = [ - "t.type = 'table'", - "t.name NOT IN ('geometry_columns', 'spatial_ref_sys', 'sqlite_sequence')", - ]; - $params = []; - - if ($tableName !== null) { - $conditions[] = 't.name = ?'; - $params[] = str_replace('.', '__', $tableName); - } - - $sql .= ' WHERE ' . implode(' AND ', $conditions) . ' ORDER BY t.name, p.id DESC, p.seq'; - - return $this->_conn->executeQuery($sql, $params); - } - - /** - * {@inheritDoc} - */ - protected function fetchTableOptionsByTable(string $databaseName, ?string $tableName = null): array - { - if ($tableName === null) { - $tables = $this->listTableNames(); - } else { - $tables = [$tableName]; - } - - $tableOptions = []; - foreach ($tables as $table) { - $comment = $this->parseTableCommentFromSQL($table, $this->getCreateTableSQL($table)); - - if ($comment === null) { - continue; - } - - $tableOptions[$table]['comment'] = $comment; - } - - return $tableOptions; - } -} diff --git a/docker/streamline-src/vendor/doctrine/dbal/src/Tools/Console/Command/ReservedWordsCommand.php b/docker/streamline-src/vendor/doctrine/dbal/src/Tools/Console/Command/ReservedWordsCommand.php deleted file mode 100644 index 2204b2e2..00000000 --- a/docker/streamline-src/vendor/doctrine/dbal/src/Tools/Console/Command/ReservedWordsCommand.php +++ /dev/null @@ -1,219 +0,0 @@ - */ - private array $keywordLists; - - private ConnectionProvider $connectionProvider; - - public function __construct(ConnectionProvider $connectionProvider) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5431', - 'ReservedWordsCommand is deprecated. Use database documentation instead.', - ); - - parent::__construct(); - - $this->connectionProvider = $connectionProvider; - - $this->keywordLists = [ - 'db2' => new DB2Keywords(), - 'mariadb102' => new MariaDb102Keywords(), - 'mysql' => new MySQLKeywords(), - 'mysql57' => new MySQL57Keywords(), - 'mysql80' => new MySQL80Keywords(), - 'mysql84' => new MySQL84Keywords(), - 'oracle' => new OracleKeywords(), - 'pgsql' => new PostgreSQL94Keywords(), - 'pgsql100' => new PostgreSQL100Keywords(), - 'sqlite' => new SQLiteKeywords(), - 'sqlserver' => new SQLServer2012Keywords(), - ]; - } - - /** - * Add or replace a keyword list. - */ - public function setKeywordList(string $name, KeywordList $keywordList): void - { - $this->keywordLists[$name] = $keywordList; - } - - /** - * If you want to add or replace a keywords list use this command. - * - * @param string $name - * @param class-string $class - * - * @return void - */ - public function setKeywordListClass($name, $class) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4510', - 'ReservedWordsCommand::setKeywordListClass() is deprecated,' - . ' use ReservedWordsCommand::setKeywordList() instead.', - ); - - $this->keywordLists[$name] = new $class(); - } - - /** @return void */ - protected function configure() - { - $this - ->setName('dbal:reserved-words') - ->setDescription('Checks if the current database contains identifiers that are reserved.') - ->setDefinition([ - new InputOption('connection', null, InputOption::VALUE_REQUIRED, 'The named database connection'), - new InputOption( - 'list', - 'l', - InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY, - 'Keyword-List name.', - ), - ]) - ->setHelp(<<<'EOT' -Checks if the current database contains tables and columns -with names that are identifiers in this dialect or in other SQL dialects. - -By default all supported platform keywords are checked: - - %command.full_name% - -If you want to check against specific dialects you can -pass them to the command: - - %command.full_name% -l mysql -l pgsql - -The following keyword lists are currently shipped with Doctrine: - - * db2 - * mariadb102 - * mysql - * mysql57 - * mysql80 - * mysql84 - * oracle - * pgsql - * pgsql100 - * sqlite - * sqlserver -EOT); - } - - /** @throws Exception */ - private function doExecute(InputInterface $input, OutputInterface $output): int - { - $output->writeln( - 'The dbal:reserved-words command is deprecated.' - . ' Use the documentation on the used database platform(s) instead.', - ); - $output->writeln(''); - - $conn = $this->getConnection($input); - - $keywordLists = $input->getOption('list'); - - if (is_string($keywordLists)) { - $keywordLists = [$keywordLists]; - } elseif (! is_array($keywordLists)) { - $keywordLists = []; - } - - if (count($keywordLists) === 0) { - $keywordLists = array_keys($this->keywordLists); - } - - $keywords = []; - foreach ($keywordLists as $keywordList) { - if (! isset($this->keywordLists[$keywordList])) { - throw new InvalidArgumentException( - "There exists no keyword list with name '" . $keywordList . "'. " . - 'Known lists: ' . implode(', ', array_keys($this->keywordLists)), - ); - } - - $keywords[] = $this->keywordLists[$keywordList]; - } - - $output->write( - 'Checking keyword violations for ' . implode(', ', $keywordLists) . '...', - true, - ); - - $schema = $conn->getSchemaManager()->introspectSchema(); - $visitor = new ReservedKeywordsValidator($keywords); - $schema->visit($visitor); - - $violations = $visitor->getViolations(); - if (count($violations) !== 0) { - $output->write( - 'There are ' . count($violations) . ' reserved keyword violations' - . ' in your database schema:', - true, - ); - - foreach ($violations as $violation) { - $output->write(' - ' . $violation, true); - } - - return 1; - } - - $output->write('No reserved keywords violations have been found!', true); - - return 0; - } - - private function getConnection(InputInterface $input): Connection - { - $connectionName = $input->getOption('connection'); - assert(is_string($connectionName) || $connectionName === null); - - if ($connectionName !== null) { - return $this->connectionProvider->getConnection($connectionName); - } - - return $this->connectionProvider->getDefaultConnection(); - } -} diff --git a/docker/streamline-src/vendor/doctrine/dbal/src/Types/DateTimeTzType.php b/docker/streamline-src/vendor/doctrine/dbal/src/Types/DateTimeTzType.php deleted file mode 100644 index b3b5db81..00000000 --- a/docker/streamline-src/vendor/doctrine/dbal/src/Types/DateTimeTzType.php +++ /dev/null @@ -1,122 +0,0 @@ -getDateTimeTzTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - * - * @param T $value - * - * @return (T is null ? null : string) - * - * @template T - */ - public function convertToDatabaseValue($value, AbstractPlatform $platform) - { - if ($value === null) { - return $value; - } - - if ($value instanceof DateTimeImmutable) { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6017', - 'Passing an instance of %s is deprecated, use %s::%s() instead.', - get_class($value), - DateTimeTzImmutableType::class, - __FUNCTION__, - ); - } - - if ($value instanceof DateTimeInterface) { - return $value->format($platform->getDateTimeTzFormatString()); - } - - throw ConversionException::conversionFailedInvalidType( - $value, - $this->getName(), - ['null', DateTime::class], - ); - } - - /** - * {@inheritDoc} - * - * @param T $value - * - * @return (T is null ? null : DateTimeInterface) - * - * @template T - */ - public function convertToPHPValue($value, AbstractPlatform $platform) - { - if ($value instanceof DateTimeImmutable) { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6017', - 'Passing an instance of %s is deprecated, use %s::%s() instead.', - get_class($value), - DateTimeTzImmutableType::class, - __FUNCTION__, - ); - } - - if ($value === null || $value instanceof DateTimeInterface) { - return $value; - } - - $dateTime = DateTime::createFromFormat($platform->getDateTimeTzFormatString(), $value); - if ($dateTime !== false) { - return $dateTime; - } - - throw ConversionException::conversionFailedFormat( - $value, - $this->getName(), - $platform->getDateTimeTzFormatString(), - ); - } -} diff --git a/docker/streamline-src/vendor/doctrine/deprecations/README.md b/docker/streamline-src/vendor/doctrine/deprecations/README.md deleted file mode 100644 index 8b806d1f..00000000 --- a/docker/streamline-src/vendor/doctrine/deprecations/README.md +++ /dev/null @@ -1,218 +0,0 @@ -# Doctrine Deprecations - -A small (side-effect free by default) layer on top of -`trigger_error(E_USER_DEPRECATED)` or PSR-3 logging. - -- no side-effects by default, making it a perfect fit for libraries that don't know how the error handler works they operate under -- options to avoid having to rely on error handlers global state by using PSR-3 logging -- deduplicate deprecation messages to avoid excessive triggering and reduce overhead - -We recommend to collect Deprecations using a PSR logger instead of relying on -the global error handler. - -## Usage from consumer perspective: - -Enable Doctrine deprecations to be sent to a PSR3 logger: - -```php -\Doctrine\Deprecations\Deprecation::enableWithPsrLogger($logger); -``` - -Enable Doctrine deprecations to be sent as `@trigger_error($message, E_USER_DEPRECATED)` -messages by setting the `DOCTRINE_DEPRECATIONS` environment variable to `trigger`. -Alternatively, call: - -```php -\Doctrine\Deprecations\Deprecation::enableWithTriggerError(); -``` - -If you only want to enable deprecation tracking, without logging or calling `trigger_error` -then set the `DOCTRINE_DEPRECATIONS` environment variable to `track`. -Alternatively, call: - -```php -\Doctrine\Deprecations\Deprecation::enableTrackingDeprecations(); -``` - -Tracking is enabled with all three modes and provides access to all triggered -deprecations and their individual count: - -```php -$deprecations = \Doctrine\Deprecations\Deprecation::getTriggeredDeprecations(); - -foreach ($deprecations as $identifier => $count) { - echo $identifier . " was triggered " . $count . " times\n"; -} -``` - -### Suppressing Specific Deprecations - -Disable triggering about specific deprecations: - -```php -\Doctrine\Deprecations\Deprecation::ignoreDeprecations("https://link/to/deprecations-description-identifier"); -``` - -Disable all deprecations from a package - -```php -\Doctrine\Deprecations\Deprecation::ignorePackage("doctrine/orm"); -``` - -### Other Operations - -When used within PHPUnit or other tools that could collect multiple instances of the same deprecations -the deduplication can be disabled: - -```php -\Doctrine\Deprecations\Deprecation::withoutDeduplication(); -``` - -Disable deprecation tracking again: - -```php -\Doctrine\Deprecations\Deprecation::disable(); -``` - -## Usage from a library/producer perspective: - -When you want to unconditionally trigger a deprecation even when called -from the library itself then the `trigger` method is the way to go: - -```php -\Doctrine\Deprecations\Deprecation::trigger( - "doctrine/orm", - "https://link/to/deprecations-description", - "message" -); -``` - -If variable arguments are provided at the end, they are used with `sprintf` on -the message. - -```php -\Doctrine\Deprecations\Deprecation::trigger( - "doctrine/orm", - "https://github.com/doctrine/orm/issue/1234", - "message %s %d", - "foo", - 1234 -); -``` - -When you want to trigger a deprecation only when it is called by a function -outside of the current package, but not trigger when the package itself is the cause, -then use: - -```php -\Doctrine\Deprecations\Deprecation::triggerIfCalledFromOutside( - "doctrine/orm", - "https://link/to/deprecations-description", - "message" -); -``` - -Based on the issue link each deprecation message is only triggered once per -request. - -A limited stacktrace is included in the deprecation message to find the -offending location. - -Note: A producer/library should never call `Deprecation::enableWith` methods -and leave the decision how to handle deprecations to application and -frameworks. - -## Usage in PHPUnit tests - -There is a `VerifyDeprecations` trait that you can use to make assertions on -the occurrence of deprecations within a test. - -```php -use Doctrine\Deprecations\PHPUnit\VerifyDeprecations; - -class MyTest extends TestCase -{ - use VerifyDeprecations; - - public function testSomethingDeprecation() - { - $this->expectDeprecationWithIdentifier('https://github.com/doctrine/orm/issue/1234'); - - triggerTheCodeWithDeprecation(); - } - - public function testSomethingDeprecationFixed() - { - $this->expectNoDeprecationWithIdentifier('https://github.com/doctrine/orm/issue/1234'); - - triggerTheCodeWithoutDeprecation(); - } -} -``` - -## Displaying deprecations after running a PHPUnit test suite - -It is possible to integrate this library with PHPUnit to display all -deprecations triggered during the test suite execution. - -```xml - - - - - - - - - - - - src - - - -``` - -Note that you can still trigger Deprecations in your code, provided you use the -`#[WithoutErrorHandler]` attribute to disable PHPUnit's error handler for tests -that call it. Be wary that this will disable all error handling, meaning it -will mask any warnings or errors that would otherwise be caught by PHPUnit. - -At the moment, it is not possible to disable deduplication with an environment -variable, but you can use a bootstrap file to achieve that: - -```php -// tests/bootstrap.php - - … - -``` - -## What is a deprecation identifier? - -An identifier for deprecations is just a link to any resource, most often a -Github Issue or Pull Request explaining the deprecation and potentially its -alternative. diff --git a/docker/streamline-src/vendor/doctrine/deprecations/composer.json b/docker/streamline-src/vendor/doctrine/deprecations/composer.json deleted file mode 100644 index a7a51e3e..00000000 --- a/docker/streamline-src/vendor/doctrine/deprecations/composer.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "doctrine/deprecations", - "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", - "license": "MIT", - "type": "library", - "homepage": "https://www.doctrine-project.org/", - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9 || ^12", - "phpstan/phpstan": "1.4.10 || 2.0.3", - "phpstan/phpstan-phpunit": "^1.0 || ^2", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psr/log": "^1 || ^2 || ^3" - }, - "suggest": { - "psr/log": "Allows logging deprecations via PSR-3 logger implementation" - }, - "autoload": { - "psr-4": { - "Doctrine\\Deprecations\\": "src" - } - }, - "autoload-dev": { - "psr-4": { - "DeprecationTests\\": "test_fixtures/src", - "Doctrine\\Foo\\": "test_fixtures/vendor/doctrine/foo" - } - }, - "config": { - "allow-plugins": { - "dealerdirect/phpcodesniffer-composer-installer": true - } - } -} diff --git a/docker/streamline-src/vendor/doctrine/event-manager/composer.json b/docker/streamline-src/vendor/doctrine/event-manager/composer.json deleted file mode 100644 index 4ea788b4..00000000 --- a/docker/streamline-src/vendor/doctrine/event-manager/composer.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "name": "doctrine/event-manager", - "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", - "license": "MIT", - "type": "library", - "keywords": [ - "events", - "event", - "event dispatcher", - "event manager", - "event system" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "homepage": "https://www.doctrine-project.org/projects/event-manager.html", - "require": { - "php": "^8.1" - }, - "require-dev": { - "doctrine/coding-standard": "^12", - "phpstan/phpstan": "^1.8.8", - "phpunit/phpunit": "^10.5", - "vimeo/psalm": "^5.24" - }, - "conflict": { - "doctrine/common": "<2.9" - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "src" - } - }, - "autoload-dev": { - "psr-4": { - "Doctrine\\Tests\\Common\\": "tests" - } - }, - "config": { - "allow-plugins": { - "dealerdirect/phpcodesniffer-composer-installer": true - }, - "sort-packages": true - } -} diff --git a/docker/streamline-src/vendor/dragonmantank/cron-expression/README.md b/docker/streamline-src/vendor/dragonmantank/cron-expression/README.md deleted file mode 100644 index b9df3db5..00000000 --- a/docker/streamline-src/vendor/dragonmantank/cron-expression/README.md +++ /dev/null @@ -1,131 +0,0 @@ -PHP Cron Expression Parser -========================== - -[![Latest Stable Version](https://poser.pugx.org/dragonmantank/cron-expression/v/stable.png)](https://packagist.org/packages/dragonmantank/cron-expression) [![Total Downloads](https://poser.pugx.org/dragonmantank/cron-expression/downloads.png)](https://packagist.org/packages/dragonmantank/cron-expression) [![Tests](https://github.com/dragonmantank/cron-expression/actions/workflows/tests.yml/badge.svg)](https://github.com/dragonmantank/cron-expression/actions/workflows/tests.yml) [![StyleCI](https://github.styleci.io/repos/103715337/shield?branch=master)](https://github.styleci.io/repos/103715337) - -The PHP cron expression parser can parse a CRON expression, determine if it is -due to run, calculate the next run date of the expression, and calculate the previous -run date of the expression. You can calculate dates far into the future or past by -skipping **n** number of matching dates. - -The parser can handle increments of ranges (e.g. */12, 2-59/3), intervals (e.g. 0-9), -lists (e.g. 1,2,3), **W** to find the nearest weekday for a given day of the month, **L** to -find the last day of the month, **L** to find the last given weekday of a month, and hash -(#) to find the nth weekday of a given month. - -More information about this fork can be found in the blog post [here](http://ctankersley.com/2017/10/12/cron-expression-update/). tl;dr - v2.0.0 is a major breaking change, and @dragonmantank can better take care of the project in a separate fork. - -Installing -========== - -Add the dependency to your project: - -```bash -composer require dragonmantank/cron-expression -``` - -Usage -===== -```php -isDue(); -echo $cron->getNextRunDate()->format('Y-m-d H:i:s'); -echo $cron->getPreviousRunDate()->format('Y-m-d H:i:s'); - -// Works with complex expressions -$cron = new Cron\CronExpression('3-59/15 6-12 */15 1 2-5'); -echo $cron->getNextRunDate()->format('Y-m-d H:i:s'); - -// Calculate a run date two iterations into the future -$cron = new Cron\CronExpression('@daily'); -echo $cron->getNextRunDate(null, 2)->format('Y-m-d H:i:s'); - -// Calculate a run date relative to a specific time -$cron = new Cron\CronExpression('@monthly'); -echo $cron->getNextRunDate('2010-01-12 00:00:00')->format('Y-m-d H:i:s'); -``` - -CRON Expressions -================ - -A CRON expression is a string representing the schedule for a particular command to execute. The parts of a CRON schedule are as follows: - -``` -* * * * * -- - - - - -| | | | | -| | | | | -| | | | +----- day of week (0-7) (Sunday = 0 or 7) (or SUN-SAT) -| | | +--------- month (1-12) (or JAN-DEC) -| | +------------- day of month (1-31) -| +----------------- hour (0-23) -+--------------------- minute (0-59) -``` - -Each part of expression can also use wildcard, lists, ranges and steps: - -- wildcard - match always - - `* * * * *` - At every minute. - - day of week and day of month also support `?`, an alias to `*` -- lists - match list of values, ranges and steps - - e.g. `15,30 * * * *` - At minute 15 and 30. -- ranges - match values in range - - e.g. `1-9 * * * *` - At every minute from 1 through 9. -- steps - match every nth value in range - - e.g. `*/5 * * * *` - At every 5th minute. - - e.g. `0-30/5 * * * *` - At every 5th minute from 0 through 30. -- combinations - - e.g. `0-14,30-44 * * * *` - At every minute from 0 through 14 and every minute from 30 through 44. - -You can also use macro instead of an expression: - -- `@yearly`, `@annually` - At 00:00 on 1st of January. (same as `0 0 1 1 *`) -- `@monthly` - At 00:00 on day-of-month 1. (same as `0 0 1 * *`) -- `@weekly` - At 00:00 on Sunday. (same as `0 0 * * 0`) -- `@daily`, `@midnight` - At 00:00. (same as `0 0 * * *`) -- `@hourly` - At minute 0. (same as `0 * * * *`) - -Day of month extra features: - -- nearest weekday - weekday (Monday-Friday) nearest to the given day - - e.g. `* * 15W * *` - At every minute on a weekday nearest to the 15th. - - If you were to specify `15W` as the value, the meaning is: "the nearest weekday to the 15th of the month" - So if the 15th is a Saturday, the trigger will fire on Friday the 14th. - If the 15th is a Sunday, the trigger will fire on Monday the 16th. - If the 15th is a Tuesday, then it will fire on Tuesday the 15th. - - However, if you specify `1W` as the value for day-of-month, - and the 1st is a Saturday, the trigger will fire on Monday the 3rd, - as it will not 'jump' over the boundary of a month's days. -- last day of the month - - e.g. `* * L * *` - At every minute on a last day-of-month. -- last weekday of the month - - e.g. `* * LW * *` - At every minute on a last weekday. - -Day of week extra features: - -- nth day - - e.g. `* * * * 7#4` - At every minute on 4th Sunday. - - 1-5 - - Every day of week repeats 4-5 times a month. To target the last one, use "last day" feature instead. -- last day - - e.g. `* * * * 7L` - At every minute on the last Sunday. - -Requirements -============ - -- PHP 7.2+ -- PHPUnit is required to run the unit tests -- Composer is required to run the unit tests - -Projects that Use cron-expression -================================= -* Part of the [Laravel Framework](https://github.com/laravel/framework/) -* Available as a [Symfony Bundle - setono/cron-expression-bundle](https://github.com/Setono/CronExpressionBundle) -* Framework agnostic, PHP-based job scheduler - [Crunz](https://github.com/crunzphp/crunz) -* Framework agnostic job scheduler - with locks, parallelism, per-second scheduling and more - [orisai/scheduler](https://github.com/orisai/scheduler) -* Explain expression in English (and other languages) with [orisai/cron-expression-explainer](https://github.com/orisai/cron-expression-explainer) diff --git a/docker/streamline-src/vendor/dragonmantank/cron-expression/composer.json b/docker/streamline-src/vendor/dragonmantank/cron-expression/composer.json deleted file mode 100644 index fdb46ee4..00000000 --- a/docker/streamline-src/vendor/dragonmantank/cron-expression/composer.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "dragonmantank/cron-expression", - "type": "library", - "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", - "keywords": ["cron", "schedule"], - "license": "MIT", - "authors": [ - { - "name": "Chris Tankersley", - "email": "chris@ctankersley.com", - "homepage": "https://github.com/dragonmantank" - } - ], - "require": { - "php": "^7.2|^8.0", - "webmozart/assert": "^1.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^7.0|^8.0|^9.0", - "phpstan/extension-installer": "^1.0" - }, - "autoload": { - "psr-4": { - "Cron\\": "src/Cron/" - } - }, - "autoload-dev": { - "psr-4": { - "Cron\\Tests\\": "tests/Cron/" - } - }, - "replace": { - "mtdowling/cron-expression": "^1.0" - }, - "scripts": { - "phpstan": "./vendor/bin/phpstan analyze", - "test": "phpunit" - }, - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "config": { - "allow-plugins": { - "ocramius/package-versions": true, - "phpstan/extension-installer": true - } - } -} diff --git a/docker/streamline-src/vendor/dragonmantank/cron-expression/src/Cron/CronExpression.php b/docker/streamline-src/vendor/dragonmantank/cron-expression/src/Cron/CronExpression.php deleted file mode 100644 index f3d8eb00..00000000 --- a/docker/streamline-src/vendor/dragonmantank/cron-expression/src/Cron/CronExpression.php +++ /dev/null @@ -1,591 +0,0 @@ - '0 0 1 1 *', - '@annually' => '0 0 1 1 *', - '@monthly' => '0 0 1 * *', - '@weekly' => '0 0 * * 0', - '@daily' => '0 0 * * *', - '@midnight' => '0 0 * * *', - '@hourly' => '0 * * * *', - ]; - - /** - * @var array CRON expression parts - */ - protected $cronParts; - - /** - * @var FieldFactoryInterface CRON field factory - */ - protected $fieldFactory; - - /** - * @var int Max iteration count when searching for next run date - */ - protected $maxIterationCount = 1000; - - /** - * @var array Order in which to test of cron parts - */ - protected static $order = [ - self::YEAR, - self::MONTH, - self::DAY, - self::WEEKDAY, - self::HOUR, - self::MINUTE, - ]; - - /** - * @var array - */ - private static $registeredAliases = self::MAPPINGS; - - /** - * Registered a user defined CRON Expression Alias. - * - * @throws LogicException If the expression or the alias name are invalid - * or if the alias is already registered. - */ - public static function registerAlias(string $alias, string $expression): void - { - try { - new self($expression); - } catch (InvalidArgumentException $exception) { - throw new LogicException("The expression `$expression` is invalid", 0, $exception); - } - - $shortcut = strtolower($alias); - if (1 !== preg_match('/^@\w+$/', $shortcut)) { - throw new LogicException("The alias `$alias` is invalid. It must start with an `@` character and contain alphanumeric (letters, numbers, regardless of case) plus underscore (_)."); - } - - if (isset(self::$registeredAliases[$shortcut])) { - throw new LogicException("The alias `$alias` is already registered."); - } - - self::$registeredAliases[$shortcut] = $expression; - } - - /** - * Unregistered a user defined CRON Expression Alias. - * - * @throws LogicException If the user tries to unregister a built-in alias - */ - public static function unregisterAlias(string $alias): bool - { - $shortcut = strtolower($alias); - if (isset(self::MAPPINGS[$shortcut])) { - throw new LogicException("The alias `$alias` is a built-in alias; it can not be unregistered."); - } - - if (!isset(self::$registeredAliases[$shortcut])) { - return false; - } - - unset(self::$registeredAliases[$shortcut]); - - return true; - } - - /** - * Tells whether a CRON Expression alias is registered. - */ - public static function supportsAlias(string $alias): bool - { - return isset(self::$registeredAliases[strtolower($alias)]); - } - - /** - * Returns all registered aliases as an associated array where the aliases are the key - * and their associated expressions are the values. - * - * @return array - */ - public static function getAliases(): array - { - return self::$registeredAliases; - } - - /** - * @deprecated since version 3.0.2, use __construct instead. - */ - public static function factory(string $expression, ?FieldFactoryInterface $fieldFactory = null): CronExpression - { - /** @phpstan-ignore-next-line */ - return new static($expression, $fieldFactory); - } - - /** - * Validate a CronExpression. - * - * @param string $expression the CRON expression to validate - * - * @return bool True if a valid CRON expression was passed. False if not. - */ - public static function isValidExpression(string $expression): bool - { - try { - new CronExpression($expression); - } catch (InvalidArgumentException $e) { - return false; - } - - return true; - } - - /** - * Parse a CRON expression. - * - * @param string $expression CRON expression (e.g. '8 * * * *') - * @param null|FieldFactoryInterface $fieldFactory Factory to create cron fields - * @throws InvalidArgumentException - */ - public function __construct(string $expression, ?FieldFactoryInterface $fieldFactory = null) - { - $shortcut = strtolower($expression); - $expression = self::$registeredAliases[$shortcut] ?? $expression; - - $this->fieldFactory = $fieldFactory ?: new FieldFactory(); - $this->setExpression($expression); - } - - /** - * Set or change the CRON expression. - * - * @param string $value CRON expression (e.g. 8 * * * *) - * - * @throws \InvalidArgumentException if not a valid CRON expression - * - * @return CronExpression - */ - public function setExpression(string $value): CronExpression - { - $split = preg_split('/\s/', $value, -1, PREG_SPLIT_NO_EMPTY); - - if (!\is_array($split)) { - throw new InvalidArgumentException( - $value . ' is not a valid CRON expression' - ); - } - - $notEnoughParts = \count($split) < 5; - - $questionMarkInInvalidPart = array_key_exists(0, $split) && $split[0] === '?' - || array_key_exists(1, $split) && $split[1] === '?' - || array_key_exists(3, $split) && $split[3] === '?'; - - $tooManyQuestionMarks = array_key_exists(2, $split) && $split[2] === '?' - && array_key_exists(4, $split) && $split[4] === '?'; - - if ($notEnoughParts || $questionMarkInInvalidPart || $tooManyQuestionMarks) { - throw new InvalidArgumentException( - $value . ' is not a valid CRON expression' - ); - } - - $this->cronParts = $split; - foreach ($this->cronParts as $position => $part) { - $this->setPart($position, $part); - } - - return $this; - } - - /** - * Set part of the CRON expression. - * - * @param int $position The position of the CRON expression to set - * @param string $value The value to set - * - * @throws \InvalidArgumentException if the value is not valid for the part - * - * @return CronExpression - */ - public function setPart(int $position, string $value): CronExpression - { - if (!$this->fieldFactory->getField($position)->validate($value)) { - throw new InvalidArgumentException( - 'Invalid CRON field value ' . $value . ' at position ' . $position - ); - } - - $this->cronParts[$position] = $value; - - return $this; - } - - /** - * Set max iteration count for searching next run dates. - * - * @param int $maxIterationCount Max iteration count when searching for next run date - * - * @return CronExpression - */ - public function setMaxIterationCount(int $maxIterationCount): CronExpression - { - $this->maxIterationCount = $maxIterationCount; - - return $this; - } - - /** - * Get a next run date relative to the current date or a specific date - * - * @param string|\DateTimeInterface $currentTime Relative calculation date - * @param int $nth Number of matches to skip before returning a - * matching next run date. 0, the default, will return the - * current date and time if the next run date falls on the - * current date and time. Setting this value to 1 will - * skip the first match and go to the second match. - * Setting this value to 2 will skip the first 2 - * matches and so on. - * @param bool $allowCurrentDate Set to TRUE to return the current date if - * it matches the cron expression. - * @param null|string $timeZone TimeZone to use instead of the system default - * - * @throws \RuntimeException on too many iterations - * @throws \Exception - * - * @return \DateTime - */ - public function getNextRunDate($currentTime = 'now', int $nth = 0, bool $allowCurrentDate = false, $timeZone = null): DateTime - { - return $this->getRunDate($currentTime, $nth, false, $allowCurrentDate, $timeZone); - } - - /** - * Get a previous run date relative to the current date or a specific date. - * - * @param string|\DateTimeInterface $currentTime Relative calculation date - * @param int $nth Number of matches to skip before returning - * @param bool $allowCurrentDate Set to TRUE to return the - * current date if it matches the cron expression - * @param null|string $timeZone TimeZone to use instead of the system default - * - * @throws \RuntimeException on too many iterations - * @throws \Exception - * - * @return \DateTime - * - * @see \Cron\CronExpression::getNextRunDate - */ - public function getPreviousRunDate($currentTime = 'now', int $nth = 0, bool $allowCurrentDate = false, $timeZone = null): DateTime - { - return $this->getRunDate($currentTime, $nth, true, $allowCurrentDate, $timeZone); - } - - /** - * Get multiple run dates starting at the current date or a specific date. - * - * @param int $total Set the total number of dates to calculate - * @param string|\DateTimeInterface|null $currentTime Relative calculation date - * @param bool $invert Set to TRUE to retrieve previous dates - * @param bool $allowCurrentDate Set to TRUE to return the - * current date if it matches the cron expression - * @param null|string $timeZone TimeZone to use instead of the system default - * - * @return \DateTime[] Returns an array of run dates - */ - public function getMultipleRunDates(int $total, $currentTime = 'now', bool $invert = false, bool $allowCurrentDate = false, $timeZone = null): array - { - $timeZone = $this->determineTimeZone($currentTime, $timeZone); - - if ('now' === $currentTime) { - $currentTime = new DateTime(); - } elseif ($currentTime instanceof DateTime) { - $currentTime = clone $currentTime; - } elseif ($currentTime instanceof DateTimeImmutable) { - $currentTime = DateTime::createFromFormat('U', $currentTime->format('U')); - } elseif (\is_string($currentTime)) { - $currentTime = new DateTime($currentTime); - } - - if (!$currentTime instanceof DateTime) { - throw new InvalidArgumentException('invalid current time'); - } - - $currentTime->setTimezone(new DateTimeZone($timeZone)); - - $matches = []; - for ($i = 0; $i < $total; ++$i) { - try { - $result = $this->getRunDate($currentTime, 0, $invert, $allowCurrentDate, $timeZone); - } catch (RuntimeException $e) { - break; - } - - $allowCurrentDate = false; - $currentTime = clone $result; - $matches[] = $result; - } - - return $matches; - } - - /** - * Get all or part of the CRON expression. - * - * @param int|string|null $part specify the part to retrieve or NULL to get the full - * cron schedule string - * - * @return null|string Returns the CRON expression, a part of the - * CRON expression, or NULL if the part was specified but not found - */ - public function getExpression($part = null): ?string - { - if (null === $part) { - return implode(' ', $this->cronParts); - } - - if (array_key_exists($part, $this->cronParts)) { - return $this->cronParts[$part]; - } - - return null; - } - - /** - * Gets the parts of the cron expression as an array. - * - * @return string[] - * The array of parts that make up this expression. - */ - public function getParts() - { - return $this->cronParts; - } - - /** - * Helper method to output the full expression. - * - * @return string Full CRON expression - */ - public function __toString(): string - { - return (string) $this->getExpression(); - } - - /** - * Determine if the cron is due to run based on the current date or a - * specific date. This method assumes that the current number of - * seconds are irrelevant, and should be called once per minute. - * - * @param string|\DateTimeInterface $currentTime Relative calculation date - * @param null|string $timeZone TimeZone to use instead of the system default - * - * @return bool Returns TRUE if the cron is due to run or FALSE if not - */ - public function isDue($currentTime = 'now', $timeZone = null): bool - { - $timeZone = $this->determineTimeZone($currentTime, $timeZone); - - if ('now' === $currentTime) { - $currentTime = new DateTime(); - } elseif ($currentTime instanceof DateTime) { - $currentTime = clone $currentTime; - } elseif ($currentTime instanceof DateTimeImmutable) { - $currentTime = DateTime::createFromFormat('U', $currentTime->format('U')); - } elseif (\is_string($currentTime)) { - $currentTime = new DateTime($currentTime); - } - - if (!$currentTime instanceof DateTime) { - throw new InvalidArgumentException('invalid current time'); - } - - $currentTime->setTimezone(new DateTimeZone($timeZone)); - - // drop the seconds to 0 - $currentTime->setTime((int) $currentTime->format('H'), (int) $currentTime->format('i'), 0); - - try { - return $this->getNextRunDate($currentTime, 0, true)->getTimestamp() === $currentTime->getTimestamp(); - } catch (Exception $e) { - return false; - } - } - - /** - * Get the next or previous run date of the expression relative to a date. - * - * @param string|\DateTimeInterface|null $currentTime Relative calculation date - * @param int $nth Number of matches to skip before returning - * @param bool $invert Set to TRUE to go backwards in time - * @param bool $allowCurrentDate Set to TRUE to return the - * current date if it matches the cron expression - * @param string|null $timeZone TimeZone to use instead of the system default - * - * @throws \RuntimeException on too many iterations - * @throws Exception - * - * @return \DateTime - */ - protected function getRunDate($currentTime = null, int $nth = 0, bool $invert = false, bool $allowCurrentDate = false, $timeZone = null): DateTime - { - $timeZone = $this->determineTimeZone($currentTime, $timeZone); - - if ($currentTime instanceof DateTime) { - $currentDate = clone $currentTime; - } elseif ($currentTime instanceof DateTimeImmutable) { - $currentDate = DateTime::createFromFormat('U', $currentTime->format('U')); - } elseif (\is_string($currentTime)) { - $currentDate = new DateTime($currentTime); - } else { - $currentDate = new DateTime('now'); - } - - if (!$currentDate instanceof DateTime) { - throw new InvalidArgumentException('invalid current date'); - } - - $currentDate->setTimezone(new DateTimeZone($timeZone)); - // Workaround for setTime causing an offset change: https://bugs.php.net/bug.php?id=81074 - $currentDate = DateTime::createFromFormat("!Y-m-d H:iO", $currentDate->format("Y-m-d H:iP"), $currentDate->getTimezone()); - if ($currentDate === false) { - throw new \RuntimeException('Unable to create date from format'); - } - $currentDate->setTimezone(new DateTimeZone($timeZone)); - - $nextRun = clone $currentDate; - - // We don't have to satisfy * or null fields - $parts = []; - $fields = []; - foreach (self::$order as $position) { - $part = $this->getExpression($position); - if (null === $part || '*' === $part) { - continue; - } - $parts[$position] = $part; - $fields[$position] = $this->fieldFactory->getField($position); - } - - if (isset($parts[self::DAY]) && isset($parts[self::WEEKDAY])) { - $domExpression = sprintf('%s %s %s %s *', $this->getExpression(0), $this->getExpression(1), $this->getExpression(2), $this->getExpression(3)); - $dowExpression = sprintf('%s %s * %s %s', $this->getExpression(0), $this->getExpression(1), $this->getExpression(3), $this->getExpression(4)); - - $domExpression = new self($domExpression); - $dowExpression = new self($dowExpression); - - $domRunDates = $domExpression->getMultipleRunDates($nth + 1, $currentTime, $invert, $allowCurrentDate, $timeZone); - $dowRunDates = $dowExpression->getMultipleRunDates($nth + 1, $currentTime, $invert, $allowCurrentDate, $timeZone); - - if ($parts[self::DAY] === '?' || $parts[self::DAY] === '*') { - $domRunDates = []; - } - - if ($parts[self::WEEKDAY] === '?' || $parts[self::WEEKDAY] === '*') { - $dowRunDates = []; - } - - $combined = array_merge($domRunDates, $dowRunDates); - usort($combined, function ($a, $b) { - return $a->format('Y-m-d H:i:s') <=> $b->format('Y-m-d H:i:s'); - }); - if ($invert) { - $combined = array_reverse($combined); - } - - return $combined[$nth]; - } - - // Set a hard limit to bail on an impossible date - for ($i = 0; $i < $this->maxIterationCount; ++$i) { - foreach ($parts as $position => $part) { - $satisfied = false; - // Get the field object used to validate this part - $field = $fields[$position]; - // Check if this is singular or a list - if (false === strpos($part, ',')) { - $satisfied = $field->isSatisfiedBy($nextRun, $part, $invert); - } else { - foreach (array_map('trim', explode(',', $part)) as $listPart) { - if ($field->isSatisfiedBy($nextRun, $listPart, $invert)) { - $satisfied = true; - - break; - } - } - } - - // If the field is not satisfied, then start over - if (!$satisfied) { - $field->increment($nextRun, $invert, $part); - - continue 2; - } - } - - // Skip this match if needed - if ((!$allowCurrentDate && $nextRun == $currentDate) || --$nth > -1) { - $this->fieldFactory->getField(self::MINUTE)->increment($nextRun, $invert, $parts[self::MINUTE] ?? null); - continue; - } - - return $nextRun; - } - - // @codeCoverageIgnoreStart - throw new RuntimeException('Impossible CRON expression'); - // @codeCoverageIgnoreEnd - } - - /** - * Workout what timeZone should be used. - * - * @param string|\DateTimeInterface|null $currentTime Relative calculation date - * @param string|null $timeZone TimeZone to use instead of the system default - * - * @return string - */ - protected function determineTimeZone($currentTime, ?string $timeZone): string - { - if (null !== $timeZone) { - return $timeZone; - } - - if ($currentTime instanceof DateTimeInterface) { - return $currentTime->getTimezone()->getName(); - } - - return date_default_timezone_get(); - } -} diff --git a/docker/streamline-src/vendor/egulias/email-validator/src/EmailLexer.php b/docker/streamline-src/vendor/egulias/email-validator/src/EmailLexer.php deleted file mode 100644 index a7fdc2d2..00000000 --- a/docker/streamline-src/vendor/egulias/email-validator/src/EmailLexer.php +++ /dev/null @@ -1,329 +0,0 @@ - */ -class EmailLexer extends AbstractLexer -{ - //ASCII values - public const S_EMPTY = -1; - public const C_NUL = 0; - public const S_HTAB = 9; - public const S_LF = 10; - public const S_CR = 13; - public const S_SP = 32; - public const EXCLAMATION = 33; - public const S_DQUOTE = 34; - public const NUMBER_SIGN = 35; - public const DOLLAR = 36; - public const PERCENTAGE = 37; - public const AMPERSAND = 38; - public const S_SQUOTE = 39; - public const S_OPENPARENTHESIS = 40; - public const S_CLOSEPARENTHESIS = 41; - public const ASTERISK = 42; - public const S_PLUS = 43; - public const S_COMMA = 44; - public const S_HYPHEN = 45; - public const S_DOT = 46; - public const S_SLASH = 47; - public const S_COLON = 58; - public const S_SEMICOLON = 59; - public const S_LOWERTHAN = 60; - public const S_EQUAL = 61; - public const S_GREATERTHAN = 62; - public const QUESTIONMARK = 63; - public const S_AT = 64; - public const S_OPENBRACKET = 91; - public const S_BACKSLASH = 92; - public const S_CLOSEBRACKET = 93; - public const CARET = 94; - public const S_UNDERSCORE = 95; - public const S_BACKTICK = 96; - public const S_OPENCURLYBRACES = 123; - public const S_PIPE = 124; - public const S_CLOSECURLYBRACES = 125; - public const S_TILDE = 126; - public const C_DEL = 127; - public const INVERT_QUESTIONMARK = 168; - public const INVERT_EXCLAMATION = 173; - public const GENERIC = 300; - public const S_IPV6TAG = 301; - public const INVALID = 302; - public const CRLF = 1310; - public const S_DOUBLECOLON = 5858; - public const ASCII_INVALID_FROM = 127; - public const ASCII_INVALID_TO = 199; - - /** - * US-ASCII visible characters not valid for atext (@link http://tools.ietf.org/html/rfc5322#section-3.2.3) - * - * @var array - */ - protected $charValue = [ - '{' => self::S_OPENCURLYBRACES, - '}' => self::S_CLOSECURLYBRACES, - '(' => self::S_OPENPARENTHESIS, - ')' => self::S_CLOSEPARENTHESIS, - '<' => self::S_LOWERTHAN, - '>' => self::S_GREATERTHAN, - '[' => self::S_OPENBRACKET, - ']' => self::S_CLOSEBRACKET, - ':' => self::S_COLON, - ';' => self::S_SEMICOLON, - '@' => self::S_AT, - '\\' => self::S_BACKSLASH, - '/' => self::S_SLASH, - ',' => self::S_COMMA, - '.' => self::S_DOT, - "'" => self::S_SQUOTE, - "`" => self::S_BACKTICK, - '"' => self::S_DQUOTE, - '-' => self::S_HYPHEN, - '::' => self::S_DOUBLECOLON, - ' ' => self::S_SP, - "\t" => self::S_HTAB, - "\r" => self::S_CR, - "\n" => self::S_LF, - "\r\n" => self::CRLF, - 'IPv6' => self::S_IPV6TAG, - '' => self::S_EMPTY, - '\0' => self::C_NUL, - '*' => self::ASTERISK, - '!' => self::EXCLAMATION, - '&' => self::AMPERSAND, - '^' => self::CARET, - '$' => self::DOLLAR, - '%' => self::PERCENTAGE, - '~' => self::S_TILDE, - '|' => self::S_PIPE, - '_' => self::S_UNDERSCORE, - '=' => self::S_EQUAL, - '+' => self::S_PLUS, - '¿' => self::INVERT_QUESTIONMARK, - '?' => self::QUESTIONMARK, - '#' => self::NUMBER_SIGN, - '¡' => self::INVERT_EXCLAMATION, - ]; - - public const INVALID_CHARS_REGEX = "/[^\p{S}\p{C}\p{Cc}]+/iu"; - - public const VALID_UTF8_REGEX = '/\p{Cc}+/u'; - - public const CATCHABLE_PATTERNS = [ - '[a-zA-Z]+[46]?', //ASCII and domain literal - '[^\x00-\x7F]', //UTF-8 - '[0-9]+', - '\r\n', - '::', - '\s+?', - '.', - ]; - - public const NON_CATCHABLE_PATTERNS = [ - '[\xA0-\xff]+', - ]; - - public const MODIFIERS = 'iu'; - - /** @var bool */ - protected $hasInvalidTokens = false; - - /** - * @var Token - */ - protected Token $previous; - - /** - * The last matched/seen token. - * - * @var Token - */ - public Token $current; - - /** - * @var Token - */ - private Token $nullToken; - - /** @var string */ - private $accumulator = ''; - - /** @var bool */ - private $hasToRecord = false; - - public function __construct() - { - /** @var Token $nullToken */ - $nullToken = new Token('', self::S_EMPTY, 0); - $this->nullToken = $nullToken; - - $this->current = $this->previous = $this->nullToken; - $this->lookahead = null; - } - - public function reset(): void - { - $this->hasInvalidTokens = false; - parent::reset(); - $this->current = $this->previous = $this->nullToken; - } - - /** - * @param int $type - * @throws \UnexpectedValueException - * @return boolean - * - */ - public function find($type): bool - { - $search = clone $this; - $search->skipUntil($type); - - if (!$search->lookahead) { - throw new \UnexpectedValueException($type . ' not found'); - } - return true; - } - - /** - * moveNext - * - * @return boolean - */ - public function moveNext(): bool - { - if ($this->hasToRecord && $this->previous === $this->nullToken) { - $this->accumulator .= $this->current->value; - } - - $this->previous = $this->current; - - if ($this->lookahead === null) { - $this->lookahead = $this->nullToken; - } - - $hasNext = parent::moveNext(); - $this->current = $this->token ?? $this->nullToken; - - if ($this->hasToRecord) { - $this->accumulator .= $this->current->value; - } - - return $hasNext; - } - - /** - * Retrieve token type. Also processes the token value if necessary. - * - * @param string $value - * @throws \InvalidArgumentException - * @return integer - */ - protected function getType(&$value): int - { - $encoded = $value; - - if (mb_detect_encoding($value, 'auto', true) !== 'UTF-8') { - $encoded = mb_convert_encoding($value, 'UTF-8', 'Windows-1252'); - } - - if ($this->isValid($encoded)) { - return $this->charValue[$encoded]; - } - - if ($this->isNullType($encoded)) { - return self::C_NUL; - } - - if ($this->isInvalidChar($encoded)) { - $this->hasInvalidTokens = true; - return self::INVALID; - } - - return self::GENERIC; - } - - protected function isValid(string $value): bool - { - return isset($this->charValue[$value]); - } - - protected function isNullType(string $value): bool - { - return $value === "\0"; - } - - protected function isInvalidChar(string $value): bool - { - return !preg_match(self::INVALID_CHARS_REGEX, $value); - } - - protected function isUTF8Invalid(string $value): bool - { - return preg_match(self::VALID_UTF8_REGEX, $value) !== false; - } - - public function hasInvalidTokens(): bool - { - return $this->hasInvalidTokens; - } - - /** - * getPrevious - * - * @return Token - */ - public function getPrevious(): Token - { - return $this->previous; - } - - /** - * Lexical catchable patterns. - * - * @return string[] - */ - protected function getCatchablePatterns(): array - { - return self::CATCHABLE_PATTERNS; - } - - /** - * Lexical non-catchable patterns. - * - * @return string[] - */ - protected function getNonCatchablePatterns(): array - { - return self::NON_CATCHABLE_PATTERNS; - } - - protected function getModifiers(): string - { - return self::MODIFIERS; - } - - public function getAccumulatedValues(): string - { - return $this->accumulator; - } - - public function startRecording(): void - { - $this->hasToRecord = true; - } - - public function stopRecording(): void - { - $this->hasToRecord = false; - } - - public function clearRecorded(): void - { - $this->accumulator = ''; - } -} diff --git a/docker/streamline-src/vendor/egulias/email-validator/src/Parser/CommentStrategy/LocalComment.php b/docker/streamline-src/vendor/egulias/email-validator/src/Parser/CommentStrategy/LocalComment.php deleted file mode 100644 index 5f30a90b..00000000 --- a/docker/streamline-src/vendor/egulias/email-validator/src/Parser/CommentStrategy/LocalComment.php +++ /dev/null @@ -1,38 +0,0 @@ - - */ - private $warnings = []; - - public function exitCondition(EmailLexer $lexer, int $openedParenthesis): bool - { - return !$lexer->isNextToken(EmailLexer::S_AT); - } - - public function endOfLoopValidations(EmailLexer $lexer): Result - { - if (!$lexer->isNextToken(EmailLexer::S_AT)) { - return new InvalidEmail(new ExpectingATEXT('ATEX is not expected after closing comments'), $lexer->current->value); - } - $this->warnings[CFWSNearAt::CODE] = new CFWSNearAt(); - return new ValidEmail(); - } - - public function getWarnings(): array - { - return $this->warnings; - } -} diff --git a/docker/streamline-src/vendor/egulias/email-validator/src/Parser/DomainPart.php b/docker/streamline-src/vendor/egulias/email-validator/src/Parser/DomainPart.php deleted file mode 100644 index 3b6284b7..00000000 --- a/docker/streamline-src/vendor/egulias/email-validator/src/Parser/DomainPart.php +++ /dev/null @@ -1,327 +0,0 @@ -lexer->clearRecorded(); - $this->lexer->startRecording(); - - $this->lexer->moveNext(); - - $domainChecks = $this->performDomainStartChecks(); - if ($domainChecks->isInvalid()) { - return $domainChecks; - } - - if ($this->lexer->current->isA(EmailLexer::S_AT)) { - return new InvalidEmail(new ConsecutiveAt(), $this->lexer->current->value); - } - - $result = $this->doParseDomainPart(); - if ($result->isInvalid()) { - return $result; - } - - $end = $this->checkEndOfDomain(); - if ($end->isInvalid()) { - return $end; - } - - $this->lexer->stopRecording(); - $this->domainPart = $this->lexer->getAccumulatedValues(); - - $length = strlen($this->domainPart); - if ($length > self::DOMAIN_MAX_LENGTH) { - return new InvalidEmail(new DomainTooLong(), $this->lexer->current->value); - } - - return new ValidEmail(); - } - - private function checkEndOfDomain(): Result - { - $prev = $this->lexer->getPrevious(); - if ($prev->isA(EmailLexer::S_DOT)) { - return new InvalidEmail(new DotAtEnd(), $this->lexer->current->value); - } - if ($prev->isA(EmailLexer::S_HYPHEN)) { - return new InvalidEmail(new DomainHyphened('Hypen found at the end of the domain'), $prev->value); - } - - if ($this->lexer->current->isA(EmailLexer::S_SP)) { - return new InvalidEmail(new CRLFAtTheEnd(), $prev->value); - } - return new ValidEmail(); - } - - private function performDomainStartChecks(): Result - { - $invalidTokens = $this->checkInvalidTokensAfterAT(); - if ($invalidTokens->isInvalid()) { - return $invalidTokens; - } - - $missingDomain = $this->checkEmptyDomain(); - if ($missingDomain->isInvalid()) { - return $missingDomain; - } - - if ($this->lexer->current->isA(EmailLexer::S_OPENPARENTHESIS)) { - $this->warnings[DeprecatedComment::CODE] = new DeprecatedComment(); - } - return new ValidEmail(); - } - - private function checkEmptyDomain(): Result - { - $thereIsNoDomain = $this->lexer->current->isA(EmailLexer::S_EMPTY) || - ($this->lexer->current->isA(EmailLexer::S_SP) && - !$this->lexer->isNextToken(EmailLexer::GENERIC)); - - if ($thereIsNoDomain) { - return new InvalidEmail(new NoDomainPart(), $this->lexer->current->value); - } - - return new ValidEmail(); - } - - private function checkInvalidTokensAfterAT(): Result - { - if ($this->lexer->current->isA(EmailLexer::S_DOT)) { - return new InvalidEmail(new DotAtStart(), $this->lexer->current->value); - } - if ($this->lexer->current->isA(EmailLexer::S_HYPHEN)) { - return new InvalidEmail(new DomainHyphened('After AT'), $this->lexer->current->value); - } - return new ValidEmail(); - } - - protected function parseComments(): Result - { - $commentParser = new Comment($this->lexer, new DomainComment()); - $result = $commentParser->parse(); - $this->warnings = [...$this->warnings, ...$commentParser->getWarnings()]; - - return $result; - } - - protected function doParseDomainPart(): Result - { - $tldMissing = true; - $hasComments = false; - $domain = ''; - do { - $prev = $this->lexer->getPrevious(); - - $notAllowedChars = $this->checkNotAllowedChars($this->lexer->current); - if ($notAllowedChars->isInvalid()) { - return $notAllowedChars; - } - - if ( - $this->lexer->current->isA(EmailLexer::S_OPENPARENTHESIS) || - $this->lexer->current->isA(EmailLexer::S_CLOSEPARENTHESIS) - ) { - $hasComments = true; - $commentsResult = $this->parseComments(); - - //Invalid comment parsing - if ($commentsResult->isInvalid()) { - return $commentsResult; - } - } - - $dotsResult = $this->checkConsecutiveDots(); - if ($dotsResult->isInvalid()) { - return $dotsResult; - } - - if ($this->lexer->current->isA(EmailLexer::S_OPENBRACKET)) { - $literalResult = $this->parseDomainLiteral(); - - $this->addTLDWarnings($tldMissing); - return $literalResult; - } - - $labelCheck = $this->checkLabelLength(); - if ($labelCheck->isInvalid()) { - return $labelCheck; - } - - $FwsResult = $this->parseFWS(); - if ($FwsResult->isInvalid()) { - return $FwsResult; - } - - $domain .= $this->lexer->current->value; - - if ($this->lexer->current->isA(EmailLexer::S_DOT) && $this->lexer->isNextToken(EmailLexer::GENERIC)) { - $tldMissing = false; - } - - $exceptionsResult = $this->checkDomainPartExceptions($prev, $hasComments); - if ($exceptionsResult->isInvalid()) { - return $exceptionsResult; - } - $this->lexer->moveNext(); - } while (!$this->lexer->current->isA(EmailLexer::S_EMPTY)); - - $labelCheck = $this->checkLabelLength(true); - if ($labelCheck->isInvalid()) { - return $labelCheck; - } - $this->addTLDWarnings($tldMissing); - - $this->domainPart = $domain; - return new ValidEmail(); - } - - /** - * @param Token $token - * - * @return Result - */ - private function checkNotAllowedChars(Token $token): Result - { - $notAllowed = [EmailLexer::S_BACKSLASH => true, EmailLexer::S_SLASH => true]; - if (isset($notAllowed[$token->type])) { - return new InvalidEmail(new CharNotAllowed(), $token->value); - } - return new ValidEmail(); - } - - /** - * @return Result - */ - protected function parseDomainLiteral(): Result - { - try { - $this->lexer->find(EmailLexer::S_CLOSEBRACKET); - } catch (\RuntimeException $e) { - return new InvalidEmail(new ExpectingDomainLiteralClose(), $this->lexer->current->value); - } - - $domainLiteralParser = new DomainLiteralParser($this->lexer); - $result = $domainLiteralParser->parse(); - $this->warnings = [...$this->warnings, ...$domainLiteralParser->getWarnings()]; - return $result; - } - - /** - * @param Token $prev - * @param bool $hasComments - * - * @return Result - */ - protected function checkDomainPartExceptions(Token $prev, bool $hasComments): Result - { - if ($this->lexer->current->isA(EmailLexer::S_OPENBRACKET) && $prev->type !== EmailLexer::S_AT) { - return new InvalidEmail(new ExpectingATEXT('OPENBRACKET not after AT'), $this->lexer->current->value); - } - - if ($this->lexer->current->isA(EmailLexer::S_HYPHEN) && $this->lexer->isNextToken(EmailLexer::S_DOT)) { - return new InvalidEmail(new DomainHyphened('Hypen found near DOT'), $this->lexer->current->value); - } - - if ( - $this->lexer->current->isA(EmailLexer::S_BACKSLASH) - && $this->lexer->isNextToken(EmailLexer::GENERIC) - ) { - return new InvalidEmail(new ExpectingATEXT('Escaping following "ATOM"'), $this->lexer->current->value); - } - - return $this->validateTokens($hasComments); - } - - protected function validateTokens(bool $hasComments): Result - { - $validDomainTokens = array( - EmailLexer::GENERIC => true, - EmailLexer::S_HYPHEN => true, - EmailLexer::S_DOT => true, - ); - - if ($hasComments) { - $validDomainTokens[EmailLexer::S_OPENPARENTHESIS] = true; - $validDomainTokens[EmailLexer::S_CLOSEPARENTHESIS] = true; - } - - if (!isset($validDomainTokens[$this->lexer->current->type])) { - return new InvalidEmail(new ExpectingATEXT('Invalid token in domain: ' . $this->lexer->current->value), $this->lexer->current->value); - } - - return new ValidEmail(); - } - - private function checkLabelLength(bool $isEndOfDomain = false): Result - { - if ($this->lexer->current->isA(EmailLexer::S_DOT) || $isEndOfDomain) { - if ($this->isLabelTooLong($this->label)) { - return new InvalidEmail(new LabelTooLong(), $this->lexer->current->value); - } - $this->label = ''; - } - $this->label .= $this->lexer->current->value; - return new ValidEmail(); - } - - - private function isLabelTooLong(string $label): bool - { - if (preg_match('/[^\x00-\x7F]/', $label)) { - idn_to_ascii($label, IDNA_DEFAULT, INTL_IDNA_VARIANT_UTS46, $idnaInfo); - /** @psalm-var array{errors: int, ...} $idnaInfo */ - return (bool) ($idnaInfo['errors'] & IDNA_ERROR_LABEL_TOO_LONG); - } - return strlen($label) > self::LABEL_MAX_LENGTH; - } - - private function addTLDWarnings(bool $isTLDMissing): void - { - if ($isTLDMissing) { - $this->warnings[TLD::CODE] = new TLD(); - } - } - - public function domainPart(): string - { - return $this->domainPart; - } -} diff --git a/docker/streamline-src/vendor/egulias/email-validator/src/Validation/DNSGetRecordWrapper.php b/docker/streamline-src/vendor/egulias/email-validator/src/Validation/DNSGetRecordWrapper.php deleted file mode 100644 index 5d04c010..00000000 --- a/docker/streamline-src/vendor/egulias/email-validator/src/Validation/DNSGetRecordWrapper.php +++ /dev/null @@ -1,30 +0,0 @@ -> $records - * @param bool $error - */ - public function __construct(private readonly array $records, private readonly bool $error = false) - { - } - - /** - * @return list> - */ - public function getRecords(): array - { - return $this->records; - } - - public function withError(): bool - { - return $this->error; - } -} diff --git a/docker/streamline-src/vendor/egulias/email-validator/src/Validation/Extra/SpoofCheckValidation.php b/docker/streamline-src/vendor/egulias/email-validator/src/Validation/Extra/SpoofCheckValidation.php deleted file mode 100644 index faeefb69..00000000 --- a/docker/streamline-src/vendor/egulias/email-validator/src/Validation/Extra/SpoofCheckValidation.php +++ /dev/null @@ -1,46 +0,0 @@ -setChecks(Spoofchecker::SINGLE_SCRIPT); - - if ($checker->isSuspicious($email)) { - $this->error = new SpoofEmail(); - } - - return $this->error === null; - } - - public function getError() : ?InvalidEmail - { - return $this->error; - } - - public function getWarnings() : array - { - return []; - } -} diff --git a/docker/streamline-src/vendor/egulias/email-validator/src/Warning/QuotedPart.php b/docker/streamline-src/vendor/egulias/email-validator/src/Warning/QuotedPart.php deleted file mode 100644 index db0850c9..00000000 --- a/docker/streamline-src/vendor/egulias/email-validator/src/Warning/QuotedPart.php +++ /dev/null @@ -1,27 +0,0 @@ -name; - } - - if ($postToken instanceof UnitEnum) { - $postToken = $postToken->name; - } - - $this->message = "Deprecated Quoted String found between $prevToken and $postToken"; - } -} diff --git a/docker/streamline-src/vendor/egulias/email-validator/src/Warning/QuotedString.php b/docker/streamline-src/vendor/egulias/email-validator/src/Warning/QuotedString.php deleted file mode 100644 index 388da0bc..00000000 --- a/docker/streamline-src/vendor/egulias/email-validator/src/Warning/QuotedString.php +++ /dev/null @@ -1,17 +0,0 @@ -message = "Quoted String found between $prevToken and $postToken"; - } -} diff --git a/docker/streamline-src/vendor/fakerphp/faker/CHANGELOG.md b/docker/streamline-src/vendor/fakerphp/faker/CHANGELOG.md deleted file mode 100644 index d3e37221..00000000 --- a/docker/streamline-src/vendor/fakerphp/faker/CHANGELOG.md +++ /dev/null @@ -1,209 +0,0 @@ -# CHANGELOG - -## [Unreleased](https://github.com/FakerPHP/Faker/compare/v1.24.0...1.24.1) - -- Removed domain `gmail.com.au` from `Provider\en_AU\Internet` (#886) - -## [2024-11-09, v1.24.0](https://github.com/FakerPHP/Faker/compare/v1.23.1..v1.24.0) - -- Fix internal deprecations in Doctrine's populator by @gnutix in (#889) -- Fix mobile phone number pattern for France by @ker0x in (#859) -- PHP 8.4 Support by @Jubeki in (#904) - -- Added support for PHP 8.4 (#904) - -## [2023-09-29, v1.23.1](https://github.com/FakerPHP/Faker/compare/v1.23.0..v1.23.1) - -- Fixed double `а` female lastName in `ru_RU/Person::name()` (#832) -- Fixed polish license plates (#685) -- Stopped using `static` in callables in `Provider\pt_BR\PhoneNumber` (#785) -- Fixed incorrect female name (#794) -- Stopped using the deprecated `MT_RAND_PHP` constant to seed the random generator on PHP 8.3 (#844) - -## [2023-06-12, v1.23.0](https://github.com/FakerPHP/Faker/compare/v1.22.0..v1.23.0) - -- Update `randomElements` to return random number of elements when no count is provided (#658) - -## [2023-05-14, v1.22.0](https://github.com/FakerPHP/Faker/compare/v1.21.0..v1.22.0) - -- Fixed `randomElements()` to accept empty iterator (#605) -- Added support for passing an `Enum` to `randomElement()` and `randomElements()` (#620) -- Started rejecting invalid arguments passed to `randomElement()` and `randomElements()` (#642) - -## [2022-12-13, v1.21.0](https://github.com/FakerPHP/Faker/compare/v1.20.0..v1.21.0) - -- Dropped support for PHP 7.1, 7.2, and 7.3 (#543) -- Added support for PHP 8.2 (#528) - -## [2022-07-20, v1.20.0](https://github.com/FakerPHP/Faker/compare/v1.19.0..v1.20.0) - -- Fixed typo in French phone number (#452) -- Fixed some Hungarian naming bugs (#451) -- Fixed bug where the NL-BE VAT generation was incorrect (#455) -- Improve Turkish phone numbers for E164 and added landline support (#460) -- Add Microsoft Edge User Agent (#464) -- Added option to set image formats on Faker\Provider\Image (#473) -- Added support for French color translations (#466) -- Support filtering timezones by country code (#480) -- Fixed typo in some greek names (#490) -- Marked the Faker\Provider\Image as deprecated - -## [2022-02-02, v1.19.0](https://github.com/FakerPHP/Faker/compare/v1.18.0..v1.19.0) - -- Added color extension to core (#442) -- Added conflict with `doctrine/persistence` below version `1.4` -- Fix for support on different Doctrine ORM versions (#414) -- Fix usage of `Doctrine\Persistence` dependency -- Fix CZ Person birthNumber docblock return type (#437) -- Fix is_IS Person docbock types (#439) -- Fix is_IS Address docbock type (#438) -- Fix regexify escape backslash in character class (#434) -- Removed UUID from Generator to be able to extend it (#441) - -## [2022-01-23, v1.18.0](https://github.com/FakerPHP/Faker/compare/v1.17.0..v1.18.0) - -- Deprecated UUID, use uuid3 to specify version (#427) -- Reset formatters when adding a new provider (#366) -- Helper methods to use our custom generators (#155) -- Set allow-plugins for Composer 2.2 (#405) -- Fix kk_KZ\Person::individualIdentificationNumber generation (#411) -- Allow for -> syntax to be used in parsing (#423) -- Person->name was missing string return type (#424) -- Generate a valid BE TAX number (#415) -- Added the UUID extension to Core (#427) - -## [2021-12-05, v1.17.0](https://github.com/FakerPHP/Faker/compare/v1.16.0..v1.17.0) - -- Partial PHP 8.1 compatibility (#373) -- Add payment provider for `ne_NP` locale (#375) -- Add Egyptian Arabic `ar_EG` locale (#377) -- Updated list of South African TLDs (#383) -- Fixed formatting of E.164 numbers (#380) -- Allow `symfony/deprecation-contracts` `^3.0` (#397) - -## [2021-09-06, v1.16.0](https://github.com/FakerPHP/Faker/compare/v1.15.0..v1.16.0) - -- Add Company extension -- Add Address extension -- Add Person extension -- Add PhoneNumber extension -- Add VersionExtension (#350) -- Stricter types in Extension\Container and Extension\GeneratorAwareExtension (#345) -- Fix deprecated property access in `nl_NL` (#348) -- Add support for `psr/container` >= 2.0 (#354) -- Add missing union types in Faker\Generator (#352) - -## [2021-07-06, v1.15.0](https://github.com/FakerPHP/Faker/compare/v1.14.1..v1.15.0) - -- Updated the generator phpdoc to help identify magic methods (#307) -- Prevent direct access and triggered deprecation warning for "word" (#302) -- Updated length on all global e164 numbers (#301) -- Updated last names from different source (#312) -- Don't generate birth number of '000' for Swedish personal identity (#306) -- Add job list for localization id_ID (#339) - -## [2021-03-30, v1.14.1](https://github.com/FakerPHP/Faker/compare/v1.14.0..v1.14.1) - -- Fix where randomNumber and randomFloat would return a 0 value (#291 / #292) - -## [2021-03-29, v1.14.0](https://github.com/FakerPHP/Faker/compare/v1.13.0..v1.14.0) - -- Fix for realText to ensure the text keeps closer to its boundaries (#152) -- Fix where regexify produces a random character instead of a literal dot (#135 -- Deprecate zh_TW methods that only call base methods (#122) -- Add used extensions to composer.json as suggestion (#120) -- Moved TCNo and INN from calculator to localized providers (#108) -- Fix regex dot/backslash issue where a dot is replaced with a backslash as escape character (#206) -- Deprecate direct property access (#164) -- Added test to assert unique() behaviour (#233) -- Added RUC for the es_PE locale (#244) -- Test IBAN formats for Latin America (AR/PE/VE) (#260) -- Added VAT number for en_GB (#255) -- Added new districts for the ne_NP locale (#258) -- Fix for U.S. Area Code Generation (#261) -- Fix in numerify where a better random numeric value is guaranteed (#256) -- Fix e164PhoneNumber to only generate valid phone numbers with valid country codes (#264) -- Extract fixtures into separate classes (#234) -- Remove french domains that no longer exists (#277) -- Fix error that occurs when getting a polish title (#279) -- Use valid area codes for North America E164 phone numbers (#280) - -- Adding support for extensions and PSR-11 (#154) -- Adding trait for GeneratorAwareExtension (#165) -- Added helper class for extension (#162) -- Added blood extension to core (#232) -- Added barcode extension to core (#252) -- Added number extension (#257) - -- Various code style updates -- Added a note about our breaking change promise (#273) - -## [2020-12-18, v1.13.0](https://github.com/FakerPHP/Faker/compare/v1.12.1..v1.13.0) - -Several fixes and new additions in this release. A lot of cleanup has been done -on the codebase on both tests and consistency. - -- Feature/pl pl license plate (#62) -- Fix greek phone numbers (#16) -- Move AT payment provider logic to de_AT (#72) -- Fix wiktionary links (#73) -- Fix AT person links (#74) -- Fix AT cities (#75) -- Deprecate at_AT providers (#78) -- Add Austrian `ssn()` to `Person` provider (#79) -- Fix typos in id_ID Address (#83) -- Austrian post codes (#86) -- Updated Polish data (#70) -- Improve Austrian social security number generation (#88) -- Move US phone numbers with extension to own method (#91) -- Add UK National Insurance number generator (#89) -- Fix en_SG phone number generator (#100) -- Remove usage of mt_rand (#87) -- Remove whitespace from beginning of el_GR phone numbers (#105) -- Building numbers can not be 0, 00, 000 (#107) -- Add 172.16/12 local IPv4 block (#121) -- Add JCB credit card type (#124) -- Remove json_decode from emoji generation (#123) -- Remove ro street address (#146) - -## [2020-12-11, v1.12.1](https://github.com/FakerPHP/Faker/compare/v1.12.0..v1.12.1) - -This is a security release that prevents a hacker to execute code on the server. - -## [2020-11-23, v1.12.0](https://github.com/FakerPHP/Faker/compare/v1.11.0..v1.12.0) - -- Fix ro_RO first and last day of year calculation offset (#65) -- Fix en_NG locale test namespaces that did not match PSR-4 (#57) -- Added Singapore NRIC/FIN provider (#56) -- Added provider for Lithuanian municipalities (#58) -- Added blood types provider (#61) - -## [2020-11-15, v1.11.0](https://github.com/FakerPHP/Faker/compare/v1.10.1..v1.11.0) - -- Added Provider for Swedish Municipalities -- Updates to person names in pt_BR -- Many code style changes - -## [2020-10-28, v1.10.1](https://github.com/FakerPHP/Faker/compare/v1.10.0..v1.10.1) - -- Updates the Danish addresses in dk_DK -- Removed offense company names in nl_NL -- Clarify changelog with original fork -- Standin replacement for LoremPixel to Placeholder.com (#11) - -## [2020-10-27, v1.10.0](https://github.com/FakerPHP/Faker/compare/v1.9.1..v1.10.0) - -- Support PHP 7.1-8.0 -- Fix typo in de_DE Company Provider -- Fix dateTimeThisYear method -- Fix typo in de_DE jobTitleFormat -- Fix IBAN generation for CR -- Fix typos in greek first names -- Fix US job title typo -- Do not clear entity manager for doctrine orm populator -- Remove persian rude words -- Corrections to RU names - -## 2020-10-27, v1.9.1 - -- Initial version. Same as `fzaninotto/Faker:v1.9.1`. diff --git a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Core/Barcode.php b/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Core/Barcode.php deleted file mode 100644 index 4ad17e17..00000000 --- a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Core/Barcode.php +++ /dev/null @@ -1,52 +0,0 @@ -numberExtension = $numberExtension ?: new Number(); - } - - private function ean(int $length = 13): string - { - $code = Extension\Helper::numerify(str_repeat('#', $length - 1)); - - return sprintf('%s%s', $code, Calculator\Ean::checksum($code)); - } - - public function ean13(): string - { - return $this->ean(); - } - - public function ean8(): string - { - return $this->ean(8); - } - - public function isbn10(): string - { - $code = Extension\Helper::numerify(str_repeat('#', 9)); - - return sprintf('%s%s', $code, Calculator\Isbn::checksum($code)); - } - - public function isbn13(): string - { - $code = '97' . $this->numberExtension->numberBetween(8, 9) . Extension\Helper::numerify(str_repeat('#', 9)); - - return sprintf('%s%s', $code, Calculator\Ean::checksum($code)); - } -} diff --git a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Core/Color.php b/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Core/Color.php deleted file mode 100644 index c6cac0d3..00000000 --- a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Core/Color.php +++ /dev/null @@ -1,177 +0,0 @@ -numberExtension = $numberExtension ?: new Number(); - } - - /** - * @example '#fa3cc2' - */ - public function hexColor(): string - { - return '#' . str_pad(dechex($this->numberExtension->numberBetween(1, 16777215)), 6, '0', STR_PAD_LEFT); - } - - /** - * @example '#ff0044' - */ - public function safeHexColor(): string - { - $color = str_pad(dechex($this->numberExtension->numberBetween(0, 255)), 3, '0', STR_PAD_LEFT); - - return sprintf( - '#%s%s%s%s%s%s', - $color[0], - $color[0], - $color[1], - $color[1], - $color[2], - $color[2], - ); - } - - /** - * @example 'array(0,255,122)' - * - * @return int[] - */ - public function rgbColorAsArray(): array - { - $color = $this->hexColor(); - - return [ - hexdec(substr($color, 1, 2)), - hexdec(substr($color, 3, 2)), - hexdec(substr($color, 5, 2)), - ]; - } - - /** - * @example '0,255,122' - */ - public function rgbColor(): string - { - return implode(',', $this->rgbColorAsArray()); - } - - /** - * @example 'rgb(0,255,122)' - */ - public function rgbCssColor(): string - { - return sprintf( - 'rgb(%s)', - $this->rgbColor(), - ); - } - - /** - * @example 'rgba(0,255,122,0.8)' - */ - public function rgbaCssColor(): string - { - return sprintf( - 'rgba(%s,%s)', - $this->rgbColor(), - $this->numberExtension->randomFloat(1, 0, 1), - ); - } - - /** - * @example 'blue' - */ - public function safeColorName(): string - { - return Helper::randomElement($this->safeColorNames); - } - - /** - * @example 'NavajoWhite' - */ - public function colorName(): string - { - return Helper::randomElement($this->allColorNames); - } - - /** - * @example '340,50,20' - */ - public function hslColor(): string - { - return sprintf( - '%s,%s,%s', - $this->numberExtension->numberBetween(0, 360), - $this->numberExtension->numberBetween(0, 100), - $this->numberExtension->numberBetween(0, 100), - ); - } - - /** - * @example array(340, 50, 20) - * - * @return int[] - */ - public function hslColorAsArray(): array - { - return [ - $this->numberExtension->numberBetween(0, 360), - $this->numberExtension->numberBetween(0, 100), - $this->numberExtension->numberBetween(0, 100), - ]; - } -} diff --git a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Core/Coordinates.php b/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Core/Coordinates.php deleted file mode 100644 index bc0678f6..00000000 --- a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Core/Coordinates.php +++ /dev/null @@ -1,78 +0,0 @@ -numberExtension = $numberExtension ?: new Number(); - } - - /** - * @example '77.147489' - * - * @return float Uses signed degrees format (returns a float number between -90 and 90) - */ - public function latitude(float $min = -90.0, float $max = 90.0): float - { - if ($min < -90 || $max < -90) { - throw new \LogicException('Latitude cannot be less that -90.0'); - } - - if ($min > 90 || $max > 90) { - throw new \LogicException('Latitude cannot be greater that 90.0'); - } - - return $this->randomFloat(6, $min, $max); - } - - /** - * @example '86.211205' - * - * @return float Uses signed degrees format (returns a float number between -180 and 180) - */ - public function longitude(float $min = -180.0, float $max = 180.0): float - { - if ($min < -180 || $max < -180) { - throw new \LogicException('Longitude cannot be less that -180.0'); - } - - if ($min > 180 || $max > 180) { - throw new \LogicException('Longitude cannot be greater that 180.0'); - } - - return $this->randomFloat(6, $min, $max); - } - - /** - * @example array('77.147489', '86.211205') - * - * @return array{latitude: float, longitude: float} - */ - public function localCoordinates(): array - { - return [ - 'latitude' => $this->latitude(), - 'longitude' => $this->longitude(), - ]; - } - - private function randomFloat(int $nbMaxDecimals, float $min, float $max): float - { - if ($min > $max) { - throw new \LogicException('Invalid coordinates boundaries'); - } - - return $this->numberExtension->randomFloat($nbMaxDecimals, $min, $max); - } -} diff --git a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Core/DateTime.php b/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Core/DateTime.php deleted file mode 100644 index 6e02c667..00000000 --- a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Core/DateTime.php +++ /dev/null @@ -1,217 +0,0 @@ -getTimestamp(); - } - - return strtotime(empty($until) ? 'now' : $until); - } - - /** - * Get a DateTime created based on a POSIX-timestamp. - * - * @param int $timestamp the UNIX / POSIX-compatible timestamp - */ - private function getTimestampDateTime(int $timestamp): \DateTime - { - return new \DateTime('@' . $timestamp); - } - - private function resolveTimezone(?string $timezone): string - { - if ($timezone !== null) { - return $timezone; - } - - return null === $this->defaultTimezone ? date_default_timezone_get() : $this->defaultTimezone; - } - - /** - * Internal method to set the timezone on a DateTime object. - */ - private function setTimezone(\DateTime $dateTime, ?string $timezone): \DateTime - { - $timezone = $this->resolveTimezone($timezone); - - return $dateTime->setTimezone(new \DateTimeZone($timezone)); - } - - public function dateTime($until = 'now', ?string $timezone = null): \DateTime - { - return $this->setTimezone( - $this->getTimestampDateTime($this->unixTime($until)), - $timezone, - ); - } - - public function dateTimeAD($until = 'now', ?string $timezone = null): \DateTime - { - $min = (PHP_INT_SIZE > 4) ? -62135597361 : -PHP_INT_MAX; - - return $this->setTimezone( - $this->getTimestampDateTime($this->generator->numberBetween($min, $this->getTimestamp($until))), - $timezone, - ); - } - - public function dateTimeBetween($from = '-30 years', $until = 'now', ?string $timezone = null): \DateTime - { - $start = $this->getTimestamp($from); - $end = $this->getTimestamp($until); - - if ($start > $end) { - throw new \InvalidArgumentException('"$from" must be anterior to "$until".'); - } - - $timestamp = $this->generator->numberBetween($start, $end); - - return $this->setTimezone( - $this->getTimestampDateTime($timestamp), - $timezone, - ); - } - - public function dateTimeInInterval($from = '-30 years', string $interval = '+5 days', ?string $timezone = null): \DateTime - { - $intervalObject = \DateInterval::createFromDateString($interval); - $datetime = $from instanceof \DateTime ? $from : new \DateTime($from); - - $other = (clone $datetime)->add($intervalObject); - - $begin = min($datetime, $other); - $end = $datetime === $begin ? $other : $datetime; - - return $this->dateTimeBetween($begin, $end, $timezone); - } - - public function dateTimeThisWeek($until = 'sunday this week', ?string $timezone = null): \DateTime - { - return $this->dateTimeBetween('monday this week', $until, $timezone); - } - - public function dateTimeThisMonth($until = 'last day of this month', ?string $timezone = null): \DateTime - { - return $this->dateTimeBetween('first day of this month', $until, $timezone); - } - - public function dateTimeThisYear($until = 'last day of december', ?string $timezone = null): \DateTime - { - return $this->dateTimeBetween('first day of january', $until, $timezone); - } - - public function dateTimeThisDecade($until = 'now', ?string $timezone = null): \DateTime - { - $year = floor(date('Y') / 10) * 10; - - return $this->dateTimeBetween("first day of january $year", $until, $timezone); - } - - public function dateTimeThisCentury($until = 'now', ?string $timezone = null): \DateTime - { - $year = floor(date('Y') / 100) * 100; - - return $this->dateTimeBetween("first day of january $year", $until, $timezone); - } - - public function date(string $format = 'Y-m-d', $until = 'now'): string - { - return $this->dateTime($until)->format($format); - } - - public function time(string $format = 'H:i:s', $until = 'now'): string - { - return $this->date($format, $until); - } - - public function unixTime($until = 'now'): int - { - return $this->generator->numberBetween(0, $this->getTimestamp($until)); - } - - public function iso8601($until = 'now'): string - { - return $this->date(\DateTime::ISO8601, $until); - } - - public function amPm($until = 'now'): string - { - return $this->date('a', $until); - } - - public function dayOfMonth($until = 'now'): string - { - return $this->date('d', $until); - } - - public function dayOfWeek($until = 'now'): string - { - return $this->date('l', $until); - } - - public function month($until = 'now'): string - { - return $this->date('m', $until); - } - - public function monthName($until = 'now'): string - { - return $this->date('F', $until); - } - - public function year($until = 'now'): string - { - return $this->date('Y', $until); - } - - public function century(): string - { - return Helper::randomElement($this->centuries); - } - - public function timezone(?string $countryCode = null): string - { - if ($countryCode) { - $timezones = \DateTimeZone::listIdentifiers(\DateTimeZone::PER_COUNTRY, $countryCode); - } else { - $timezones = \DateTimeZone::listIdentifiers(); - } - - return Helper::randomElement($timezones); - } -} diff --git a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Core/Number.php b/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Core/Number.php deleted file mode 100644 index 4334dcfa..00000000 --- a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Core/Number.php +++ /dev/null @@ -1,83 +0,0 @@ -numberBetween(0, 9); - } - - public function randomDigitNot(int $except): int - { - $result = $this->numberBetween(0, 8); - - if ($result >= $except) { - ++$result; - } - - return $result; - } - - public function randomDigitNotZero(): int - { - return $this->numberBetween(1, 9); - } - - public function randomFloat(?int $nbMaxDecimals = null, float $min = 0, ?float $max = null): float - { - if (null === $nbMaxDecimals) { - $nbMaxDecimals = $this->randomDigit(); - } - - if (null === $max) { - $max = $this->randomNumber(); - - if ($min > $max) { - $max = $min; - } - } - - if ($min > $max) { - $tmp = $min; - $min = $max; - $max = $tmp; - } - - return round($min + $this->numberBetween() / mt_getrandmax() * ($max - $min), $nbMaxDecimals); - } - - public function randomNumber(?int $nbDigits = null, bool $strict = false): int - { - if (null === $nbDigits) { - $nbDigits = $this->randomDigitNotZero(); - } - $max = 10 ** $nbDigits - 1; - - if ($max > mt_getrandmax()) { - throw new \InvalidArgumentException('randomNumber() can only generate numbers up to mt_getrandmax()'); - } - - if ($strict) { - return $this->numberBetween(10 ** ($nbDigits - 1), $max); - } - - return $this->numberBetween(0, $max); - } -} diff --git a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Core/Uuid.php b/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Core/Uuid.php deleted file mode 100644 index 45804604..00000000 --- a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Core/Uuid.php +++ /dev/null @@ -1,65 +0,0 @@ -numberExtension = $numberExtension ?: new Number(); - } - - public function uuid3(): string - { - // fix for compatibility with 32bit architecture; each mt_rand call is restricted to 32bit - // two such calls will cause 64bits of randomness regardless of architecture - $seed = $this->numberExtension->numberBetween(0, 2147483647) . '#' . $this->numberExtension->numberBetween(0, 2147483647); - - // Hash the seed and convert to a byte array - $val = md5($seed, true); - $byte = array_values(unpack('C16', $val)); - - // extract fields from byte array - $tLo = ($byte[0] << 24) | ($byte[1] << 16) | ($byte[2] << 8) | $byte[3]; - $tMi = ($byte[4] << 8) | $byte[5]; - $tHi = ($byte[6] << 8) | $byte[7]; - $csLo = $byte[9]; - $csHi = $byte[8] & 0x3f | (1 << 7); - - // correct byte order for big edian architecture - if (pack('L', 0x6162797A) == pack('N', 0x6162797A)) { - $tLo = (($tLo & 0x000000ff) << 24) | (($tLo & 0x0000ff00) << 8) - | (($tLo & 0x00ff0000) >> 8) | (($tLo & 0xff000000) >> 24); - $tMi = (($tMi & 0x00ff) << 8) | (($tMi & 0xff00) >> 8); - $tHi = (($tHi & 0x00ff) << 8) | (($tHi & 0xff00) >> 8); - } - - // apply version number - $tHi &= 0x0fff; - $tHi |= (3 << 12); - - // cast to string - return sprintf( - '%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x', - $tLo, - $tMi, - $tHi, - $csHi, - $csLo, - $byte[10], - $byte[11], - $byte[12], - $byte[13], - $byte[14], - $byte[15], - ); - } -} diff --git a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Core/Version.php b/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Core/Version.php deleted file mode 100644 index 7c321e00..00000000 --- a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Core/Version.php +++ /dev/null @@ -1,69 +0,0 @@ -numberExtension = $numberExtension ?: new Number(); - } - - /** - * Represents v2.0.0 of the semantic versioning: https://semver.org/spec/v2.0.0.html - */ - public function semver(bool $preRelease = false, bool $build = false): string - { - return sprintf( - '%d.%d.%d%s%s', - $this->numberExtension->numberBetween(0, 9), - $this->numberExtension->numberBetween(0, 99), - $this->numberExtension->numberBetween(0, 99), - $preRelease && $this->numberExtension->numberBetween(0, 1) === 1 ? '-' . $this->semverPreReleaseIdentifier() : '', - $build && $this->numberExtension->numberBetween(0, 1) === 1 ? '+' . $this->semverBuildIdentifier() : '', - ); - } - - /** - * Common pre-release identifier - */ - private function semverPreReleaseIdentifier(): string - { - $ident = Extension\Helper::randomElement($this->semverCommonPreReleaseIdentifiers); - - if ($this->numberExtension->numberBetween(0, 1) !== 1) { - return $ident; - } - - return $ident . '.' . $this->numberExtension->numberBetween(1, 99); - } - - /** - * Common random build identifier - */ - private function semverBuildIdentifier(): string - { - if ($this->numberExtension->numberBetween(0, 1) === 1) { - // short git revision syntax: https://git-scm.com/book/en/v2/Git-Tools-Revision-Selection - return substr(sha1(Extension\Helper::lexify('??????')), 0, 7); - } - - // date syntax - return DateTime::date('YmdHis'); - } -} diff --git a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Extension/DateTimeExtension.php b/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Extension/DateTimeExtension.php deleted file mode 100644 index b7c76ba4..00000000 --- a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Extension/DateTimeExtension.php +++ /dev/null @@ -1,242 +0,0 @@ -container = $container ?: Container\ContainerBuilder::withDefaultExtensions()->build(); - } - - /** - * @template T of Extension\Extension - * - * @param class-string $id - * - * @throws Extension\ExtensionNotFound - * - * @return T - */ - public function ext(string $id): Extension\Extension - { - if (!$this->container->has($id)) { - throw new Extension\ExtensionNotFound(sprintf( - 'No Faker extension with id "%s" was loaded.', - $id, - )); - } - - $extension = $this->container->get($id); - - if ($extension instanceof Extension\GeneratorAwareExtension) { - $extension = $extension->withGenerator($this); - } - - return $extension; - } - - public function addProvider($provider) - { - array_unshift($this->providers, $provider); - - $this->formatters = []; - } - - public function getProviders() - { - return $this->providers; - } - - /** - * With the unique generator you are guaranteed to never get the same two - * values. - * - * - * // will never return twice the same value - * $faker->unique()->randomElement(array(1, 2, 3)); - * - * - * @param bool $reset If set to true, resets the list of existing values - * @param int $maxRetries Maximum number of retries to find a unique value, - * After which an OverflowException is thrown. - * - * @throws \OverflowException When no unique value can be found by iterating $maxRetries times - * - * @return self A proxy class returning only non-existing values - */ - public function unique($reset = false, $maxRetries = 10000) - { - if ($reset || $this->uniqueGenerator === null) { - $this->uniqueGenerator = new UniqueGenerator($this, $maxRetries); - } - - return $this->uniqueGenerator; - } - - /** - * Get a value only some percentage of the time. - * - * @param float $weight A probability between 0 and 1, 0 means that we always get the default value. - * - * @return self - */ - public function optional(float $weight = 0.5, $default = null) - { - if ($weight > 1) { - trigger_deprecation('fakerphp/faker', '1.16', 'First argument ($weight) to method "optional()" must be between 0 and 1. You passed %f, we assume you meant %f.', $weight, $weight / 100); - $weight = $weight / 100; - } - - return new ChanceGenerator($this, $weight, $default); - } - - /** - * To make sure the value meet some criteria, pass a callable that verifies the - * output. If the validator fails, the generator will try again. - * - * The value validity is determined by a function passed as first argument. - * - * - * $values = array(); - * $evenValidator = function ($digit) { - * return $digit % 2 === 0; - * }; - * for ($i=0; $i < 10; $i++) { - * $values []= $faker->valid($evenValidator)->randomDigit; - * } - * print_r($values); // [0, 4, 8, 4, 2, 6, 0, 8, 8, 6] - * - * - * @param ?\Closure $validator A function returning true for valid values - * @param int $maxRetries Maximum number of retries to find a valid value, - * After which an OverflowException is thrown. - * - * @throws \OverflowException When no valid value can be found by iterating $maxRetries times - * - * @return self A proxy class returning only valid values - */ - public function valid(?\Closure $validator = null, int $maxRetries = 10000) - { - return new ValidGenerator($this, $validator, $maxRetries); - } - - public function seed($seed = null) - { - if ($seed === null) { - mt_srand(); - } else { - mt_srand((int) $seed, self::mode()); - } - } - - /** - * @see https://www.php.net/manual/en/migration83.deprecated.php#migration83.deprecated.random - */ - private static function mode(): int - { - if (PHP_VERSION_ID < 80300) { - return MT_RAND_PHP; - } - - return MT_RAND_MT19937; - } - - public function format($format, $arguments = []) - { - return call_user_func_array($this->getFormatter($format), $arguments); - } - - /** - * @param string $format - * - * @return callable - */ - public function getFormatter($format) - { - if (isset($this->formatters[$format])) { - return $this->formatters[$format]; - } - - if (method_exists($this, $format)) { - $this->formatters[$format] = [$this, $format]; - - return $this->formatters[$format]; - } - - // "Faker\Core\Barcode->ean13" - if (preg_match('|^([a-zA-Z0-9\\\]+)->([a-zA-Z0-9]+)$|', $format, $matches)) { - $this->formatters[$format] = [$this->ext($matches[1]), $matches[2]]; - - return $this->formatters[$format]; - } - - foreach ($this->providers as $provider) { - if (method_exists($provider, $format)) { - $this->formatters[$format] = [$provider, $format]; - - return $this->formatters[$format]; - } - } - - throw new \InvalidArgumentException(sprintf('Unknown format "%s"', $format)); - } - - /** - * Replaces tokens ('{{ tokenName }}') with the result from the token method call - * - * @param string $string String that needs to bet parsed - * - * @return string - */ - public function parse($string) - { - $callback = function ($matches) { - return $this->format($matches[1]); - }; - - return preg_replace_callback('/{{\s?(\w+|[\w\\\]+->\w+?)\s?}}/u', $callback, $string); - } - - /** - * Get a random MIME type - * - * @example 'video/avi' - */ - public function mimeType() - { - return $this->ext(Extension\FileExtension::class)->mimeType(); - } - - /** - * Get a random file extension (without a dot) - * - * @example avi - */ - public function fileExtension() - { - return $this->ext(Extension\FileExtension::class)->extension(); - } - - /** - * Get a full path to a new real file on the system. - */ - public function filePath() - { - return $this->ext(Extension\FileExtension::class)->filePath(); - } - - /** - * Get an actual blood type - * - * @example 'AB' - */ - public function bloodType(): string - { - return $this->ext(Extension\BloodExtension::class)->bloodType(); - } - - /** - * Get a random resis value - * - * @example '+' - */ - public function bloodRh(): string - { - return $this->ext(Extension\BloodExtension::class)->bloodRh(); - } - - /** - * Get a full blood group - * - * @example 'AB+' - */ - public function bloodGroup(): string - { - return $this->ext(Extension\BloodExtension::class)->bloodGroup(); - } - - /** - * Get a random EAN13 barcode. - * - * @example '4006381333931' - */ - public function ean13(): string - { - return $this->ext(Extension\BarcodeExtension::class)->ean13(); - } - - /** - * Get a random EAN8 barcode. - * - * @example '73513537' - */ - public function ean8(): string - { - return $this->ext(Extension\BarcodeExtension::class)->ean8(); - } - - /** - * Get a random ISBN-10 code - * - * @see http://en.wikipedia.org/wiki/International_Standard_Book_Number - * - * @example '4881416324' - */ - public function isbn10(): string - { - return $this->ext(Extension\BarcodeExtension::class)->isbn10(); - } - - /** - * Get a random ISBN-13 code - * - * @see http://en.wikipedia.org/wiki/International_Standard_Book_Number - * - * @example '9790404436093' - */ - public function isbn13(): string - { - return $this->ext(Extension\BarcodeExtension::class)->isbn13(); - } - - /** - * Returns a random number between $int1 and $int2 (any order) - * - * @example 79907610 - */ - public function numberBetween($int1 = 0, $int2 = 2147483647): int - { - return $this->ext(Extension\NumberExtension::class)->numberBetween((int) $int1, (int) $int2); - } - - /** - * Returns a random number between 0 and 9 - */ - public function randomDigit(): int - { - return $this->ext(Extension\NumberExtension::class)->randomDigit(); - } - - /** - * Generates a random digit, which cannot be $except - */ - public function randomDigitNot($except): int - { - return $this->ext(Extension\NumberExtension::class)->randomDigitNot((int) $except); - } - - /** - * Returns a random number between 1 and 9 - */ - public function randomDigitNotZero(): int - { - return $this->ext(Extension\NumberExtension::class)->randomDigitNotZero(); - } - - /** - * Return a random float number - * - * @example 48.8932 - */ - public function randomFloat($nbMaxDecimals = null, $min = 0, $max = null): float - { - return $this->ext(Extension\NumberExtension::class)->randomFloat( - $nbMaxDecimals !== null ? (int) $nbMaxDecimals : null, - (float) $min, - $max !== null ? (float) $max : null, - ); - } - - /** - * Returns a random integer with 0 to $nbDigits digits. - * - * The maximum value returned is mt_getrandmax() - * - * @param int|null $nbDigits Defaults to a random number between 1 and 9 - * @param bool $strict Whether the returned number should have exactly $nbDigits - * - * @example 79907610 - */ - public function randomNumber($nbDigits = null, $strict = false): int - { - return $this->ext(Extension\NumberExtension::class)->randomNumber( - $nbDigits !== null ? (int) $nbDigits : null, - (bool) $strict, - ); - } - - /** - * Get a version number in semantic versioning syntax 2.0.0. (https://semver.org/spec/v2.0.0.html) - * - * @param bool $preRelease Pre release parts may be randomly included - * @param bool $build Build parts may be randomly included - * - * @example 1.0.0 - * @example 1.0.0-alpha.1 - * @example 1.0.0-alpha.1+b71f04d - */ - public function semver(bool $preRelease = false, bool $build = false): string - { - return $this->ext(Extension\VersionExtension::class)->semver($preRelease, $build); - } - - /** - * @deprecated - */ - protected function callFormatWithMatches($matches) - { - trigger_deprecation('fakerphp/faker', '1.14', 'Protected method "callFormatWithMatches()" is deprecated and will be removed.'); - - return $this->format($matches[1]); - } - - /** - * @param string $attribute - * - * @deprecated Use a method instead. - */ - public function __get($attribute) - { - trigger_deprecation('fakerphp/faker', '1.14', 'Accessing property "%s" is deprecated, use "%s()" instead.', $attribute, $attribute); - - return $this->format($attribute); - } - - /** - * @param string $method - * @param array $attributes - */ - public function __call($method, $attributes) - { - return $this->format($method, $attributes); - } - - public function __destruct() - { - $this->seed(); - } - - public function __wakeup() - { - $this->formatters = []; - } -} diff --git a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Guesser/Name.php b/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Guesser/Name.php deleted file mode 100644 index 1f98c4f8..00000000 --- a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Guesser/Name.php +++ /dev/null @@ -1,180 +0,0 @@ -generator = $generator; - } - - /** - * @param string $name - * @param int|null $size Length of field, if known - * - * @return callable|null - */ - public function guessFormat($name, $size = null) - { - $name = Base::toLower($name); - $generator = $this->generator; - - if (preg_match('/^is[_A-Z]/', $name)) { - return static function () use ($generator) { - return $generator->boolean(); - }; - } - - if (preg_match('/(_a|A)t$/', $name)) { - return static function () use ($generator) { - return $generator->dateTime(); - }; - } - - switch (str_replace('_', '', $name)) { - case 'firstname': - return static function () use ($generator) { - return $generator->firstName(); - }; - - case 'lastname': - return static function () use ($generator) { - return $generator->lastName(); - }; - - case 'username': - case 'login': - return static function () use ($generator) { - return $generator->userName(); - }; - - case 'email': - case 'emailaddress': - return static function () use ($generator) { - return $generator->email(); - }; - - case 'phonenumber': - case 'phone': - case 'telephone': - case 'telnumber': - return static function () use ($generator) { - return $generator->phoneNumber(); - }; - - case 'address': - return static function () use ($generator) { - return $generator->address(); - }; - - case 'city': - case 'town': - return static function () use ($generator) { - return $generator->city(); - }; - - case 'streetaddress': - return static function () use ($generator) { - return $generator->streetAddress(); - }; - - case 'postcode': - case 'zipcode': - return static function () use ($generator) { - return $generator->postcode(); - }; - - case 'state': - return static function () use ($generator) { - return $generator->state(); - }; - - case 'county': - if ($this->generator->locale == 'en_US') { - return static function () use ($generator) { - return sprintf('%s County', $generator->city()); - }; - } - - return static function () use ($generator) { - return $generator->state(); - }; - - case 'country': - switch ($size) { - case 2: - return static function () use ($generator) { - return $generator->countryCode(); - }; - - case 3: - return static function () use ($generator) { - return $generator->countryISOAlpha3(); - }; - - case 5: - case 6: - return static function () use ($generator) { - return $generator->locale(); - }; - - default: - return static function () use ($generator) { - return $generator->country(); - }; - } - - break; - - case 'locale': - return static function () use ($generator) { - return $generator->locale(); - }; - - case 'currency': - case 'currencycode': - return static function () use ($generator) { - return $generator->currencyCode(); - }; - - case 'url': - case 'website': - return static function () use ($generator) { - return $generator->url(); - }; - - case 'company': - case 'companyname': - case 'employer': - return static function () use ($generator) { - return $generator->company(); - }; - - case 'title': - if ($size !== null && $size <= 10) { - return static function () use ($generator) { - return $generator->title(); - }; - } - - return static function () use ($generator) { - return $generator->sentence(); - }; - - case 'body': - case 'summary': - case 'article': - case 'description': - return static function () use ($generator) { - return $generator->text(); - }; - } - - return null; - } -} diff --git a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/ORM/Doctrine/ColumnTypeGuesser.php b/docker/streamline-src/vendor/fakerphp/faker/src/Faker/ORM/Doctrine/ColumnTypeGuesser.php deleted file mode 100644 index 024d8a9d..00000000 --- a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/ORM/Doctrine/ColumnTypeGuesser.php +++ /dev/null @@ -1,91 +0,0 @@ -generator = $generator; - } - - /** - * @return \Closure|null - */ - public function guessFormat($fieldName, ClassMetadata $class) - { - $generator = $this->generator; - $type = $class->getTypeOfField($fieldName); - - switch ($type) { - case 'boolean': - return static function () use ($generator) { - return $generator->boolean(); - }; - - case 'decimal': - $size = $class->fieldMappings[$fieldName]['precision'] ?? 2; - - return static function () use ($generator, $size) { - return $generator->randomNumber($size + 2) / 100; - }; - - case 'smallint': - return static function () use ($generator) { - return $generator->numberBetween(0, 65535); - }; - - case 'integer': - return static function () use ($generator) { - return $generator->numberBetween(0, 2147483647); - }; - - case 'bigint': - return static function () use ($generator) { - return $generator->numberBetween(0, PHP_INT_MAX); - }; - - case 'float': - return static function () use ($generator) { - return $generator->randomFloat(); - }; - - case 'string': - $size = $class->fieldMappings[$fieldName]['length'] ?? 255; - - return static function () use ($generator, $size) { - return $generator->text($size); - }; - - case 'text': - return static function () use ($generator) { - return $generator->text(); - }; - - case 'datetime': - case 'date': - case 'time': - return static function () use ($generator) { - return $generator->datetime(); - }; - - case 'datetime_immutable': - case 'date_immutable': - case 'time_immutable': - return static function () use ($generator) { - return \DateTimeImmutable::createFromMutable($generator->datetime); - }; - - default: - // no smart way to guess what the user expects here - return null; - } - } -} diff --git a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/ORM/Doctrine/Populator.php b/docker/streamline-src/vendor/fakerphp/faker/src/Faker/ORM/Doctrine/Populator.php deleted file mode 100644 index 61d4171e..00000000 --- a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/ORM/Doctrine/Populator.php +++ /dev/null @@ -1,126 +0,0 @@ -generator = $generator; - $this->manager = $manager; - $this->batchSize = $batchSize; - } - - /** - * Add an order for the generation of $number records for $entity. - * - * @param mixed $entity A Doctrine classname, or a \Faker\ORM\Doctrine\EntityPopulator instance - * @param int $number The number of entities to populate - */ - public function addEntity($entity, $number, $customColumnFormatters = [], $customModifiers = [], $generateId = false) - { - if (!$entity instanceof \Faker\ORM\Doctrine\EntityPopulator) { - if (null === $this->manager) { - throw new \InvalidArgumentException('No entity manager passed to Doctrine Populator.'); - } - $entity = new \Faker\ORM\Doctrine\EntityPopulator($this->manager->getClassMetadata($entity)); - } - $entity->setColumnFormatters($entity->guessColumnFormatters($this->generator)); - - if ($customColumnFormatters) { - $entity->mergeColumnFormattersWith($customColumnFormatters); - } - $entity->mergeModifiersWith($customModifiers); - $this->generateId[$entity->getClass()] = $generateId; - - $class = $entity->getClass(); - $this->entities[$class] = $entity; - $this->quantities[$class] = $number; - } - - /** - * Populate the database using all the Entity classes previously added. - * - * Please note that large amounts of data will result in more memory usage since the the Populator will return - * all newly created primary keys after executing. - * - * @param ObjectManager|null $entityManager A Doctrine connection object - * - * @return array A list of the inserted PKs - */ - public function execute($entityManager = null) - { - if (null === $entityManager) { - $entityManager = $this->manager; - } - - if (null === $entityManager) { - throw new \InvalidArgumentException('No entity manager passed to Doctrine Populator.'); - } - - $insertedEntities = []; - - foreach ($this->quantities as $class => $number) { - $generateId = $this->generateId[$class]; - - for ($i = 0; $i < $number; ++$i) { - $insertedEntities[$class][] = $this->entities[$class]->execute( - $entityManager, - $insertedEntities, - $generateId, - ); - - if (count($insertedEntities) % $this->batchSize === 0) { - $entityManager->flush(); - } - } - $entityManager->flush(); - } - - return $insertedEntities; - } -} diff --git a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/ORM/Spot/Populator.php b/docker/streamline-src/vendor/fakerphp/faker/src/Faker/ORM/Spot/Populator.php deleted file mode 100644 index 9ad3bfb6..00000000 --- a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/ORM/Spot/Populator.php +++ /dev/null @@ -1,89 +0,0 @@ -generator = $generator; - $this->locator = $locator; - } - - /** - * Add an order for the generation of $number records for $entity. - * - * @param string $entityName Name of Entity object to generate - * @param int $number The number of entities to populate - * @param array $customColumnFormatters - * @param array $customModifiers - * @param bool $useExistingData Should we use existing rows (e.g. roles) to populate relations? - */ - public function addEntity( - $entityName, - $number, - $customColumnFormatters = [], - $customModifiers = [], - $useExistingData = false - ) { - $mapper = $this->locator->mapper($entityName); - - if (null === $mapper) { - throw new \InvalidArgumentException('No mapper can be found for entity ' . $entityName); - } - $entity = new EntityPopulator($mapper, $this->locator, $useExistingData); - - $entity->setColumnFormatters($entity->guessColumnFormatters($this->generator)); - - if ($customColumnFormatters) { - $entity->mergeColumnFormattersWith($customColumnFormatters); - } - $entity->mergeModifiersWith($customModifiers); - - $this->entities[$entityName] = $entity; - $this->quantities[$entityName] = $number; - } - - /** - * Populate the database using all the Entity classes previously added. - * - * @param Locator $locator A Spot locator - * - * @return array A list of the inserted PKs - */ - public function execute($locator = null) - { - if (null === $locator) { - $locator = $this->locator; - } - - if (null === $locator) { - throw new \InvalidArgumentException('No entity manager passed to Spot Populator.'); - } - - $insertedEntities = []; - - foreach ($this->quantities as $entityName => $number) { - for ($i = 0; $i < $number; ++$i) { - $insertedEntities[$entityName][] = $this->entities[$entityName]->execute( - $insertedEntities, - ); - } - } - - return $insertedEntities; - } -} diff --git a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/DateTime.php b/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/DateTime.php deleted file mode 100644 index a8a19925..00000000 --- a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/DateTime.php +++ /dev/null @@ -1,389 +0,0 @@ -getTimestamp(); - } - - return strtotime(empty($max) ? 'now' : $max); - } - - /** - * Get a timestamp between January 1, 1970, and now - * - * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" - * - * @return int - * - * @example 1061306726 - */ - public static function unixTime($max = 'now') - { - return self::numberBetween(0, static::getMaxTimestamp($max)); - } - - /** - * Get a datetime object for a date between January 1, 1970 and now - * - * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" - * @param string $timezone time zone in which the date time should be set, default to DateTime::$defaultTimezone, if set, otherwise the result of `date_default_timezone_get` - * - * @return \DateTime - * - * @see http://php.net/manual/en/timezones.php - * @see http://php.net/manual/en/function.date-default-timezone-get.php - * - * @example DateTime('2005-08-16 20:39:21') - */ - public static function dateTime($max = 'now', $timezone = null) - { - return static::setTimezone( - new \DateTime('@' . static::unixTime($max)), - $timezone, - ); - } - - /** - * Get a datetime object for a date between January 1, 001 and now - * - * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" - * @param string|null $timezone time zone in which the date time should be set, default to DateTime::$defaultTimezone, if set, otherwise the result of `date_default_timezone_get` - * - * @return \DateTime - * - * @see http://php.net/manual/en/timezones.php - * @see http://php.net/manual/en/function.date-default-timezone-get.php - * - * @example DateTime('1265-03-22 21:15:52') - */ - public static function dateTimeAD($max = 'now', $timezone = null) - { - $min = (PHP_INT_SIZE > 4 ? -62135597361 : -PHP_INT_MAX); - - return static::setTimezone( - new \DateTime('@' . self::numberBetween($min, static::getMaxTimestamp($max))), - $timezone, - ); - } - - /** - * get a date string formatted with ISO8601 - * - * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" - * - * @return string - * - * @example '2003-10-21T16:05:52+0000' - */ - public static function iso8601($max = 'now') - { - return static::date(\DateTime::ISO8601, $max); - } - - /** - * Get a date string between January 1, 1970 and now - * - * @param string $format - * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" - * - * @return string - * - * @example '2008-11-27' - */ - public static function date($format = 'Y-m-d', $max = 'now') - { - return static::dateTime($max)->format($format); - } - - /** - * Get a time string (24h format by default) - * - * @param string $format - * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" - * - * @return string - * - * @example '15:02:34' - */ - public static function time($format = 'H:i:s', $max = 'now') - { - return static::dateTime($max)->format($format); - } - - /** - * Get a DateTime object based on a random date between two given dates. - * Accepts date strings that can be recognized by strtotime(). - * - * @param \DateTime|string $startDate Defaults to 30 years ago - * @param \DateTime|string $endDate Defaults to "now" - * @param string|null $timezone time zone in which the date time should be set, default to DateTime::$defaultTimezone, if set, otherwise the result of `date_default_timezone_get` - * - * @return \DateTime - * - * @see http://php.net/manual/en/timezones.php - * @see http://php.net/manual/en/function.date-default-timezone-get.php - * - * @example DateTime('1999-02-02 11:42:52') - */ - public static function dateTimeBetween($startDate = '-30 years', $endDate = 'now', $timezone = null) - { - $startTimestamp = $startDate instanceof \DateTime ? $startDate->getTimestamp() : strtotime($startDate); - $endTimestamp = static::getMaxTimestamp($endDate); - - if ($startTimestamp > $endTimestamp) { - throw new \InvalidArgumentException('Start date must be anterior to end date.'); - } - - $timestamp = self::numberBetween($startTimestamp, $endTimestamp); - - return static::setTimezone( - new \DateTime('@' . $timestamp), - $timezone, - ); - } - - /** - * Get a DateTime object based on a random date between one given date and - * an interval - * Accepts date string that can be recognized by strtotime(). - * - * @param \DateTime|string $date Defaults to 30 years ago - * @param string $interval Defaults to 5 days after - * @param string|null $timezone time zone in which the date time should be set, default to DateTime::$defaultTimezone, if set, otherwise the result of `date_default_timezone_get` - * - * @return \DateTime - * - * @example dateTimeInInterval('1999-02-02 11:42:52', '+ 5 days') - * - * @see http://php.net/manual/en/timezones.php - * @see http://php.net/manual/en/function.date-default-timezone-get.php - */ - public static function dateTimeInInterval($date = '-30 years', $interval = '+5 days', $timezone = null) - { - $intervalObject = \DateInterval::createFromDateString($interval); - $datetime = $date instanceof \DateTime ? $date : new \DateTime($date); - $otherDatetime = clone $datetime; - $otherDatetime->add($intervalObject); - - $begin = min($datetime, $otherDatetime); - $end = $datetime === $begin ? $otherDatetime : $datetime; - - return static::dateTimeBetween( - $begin, - $end, - $timezone, - ); - } - - /** - * Get a date time object somewhere within a century. - * - * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" - * @param string|null $timezone time zone in which the date time should be set, default to DateTime::$defaultTimezone, if set, otherwise the result of `date_default_timezone_get` - * - * @return \DateTime - */ - public static function dateTimeThisCentury($max = 'now', $timezone = null) - { - return static::dateTimeBetween('-100 year', $max, $timezone); - } - - /** - * Get a date time object somewhere within a decade. - * - * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" - * @param string|null $timezone time zone in which the date time should be set, default to DateTime::$defaultTimezone, if set, otherwise the result of `date_default_timezone_get` - * - * @return \DateTime - */ - public static function dateTimeThisDecade($max = 'now', $timezone = null) - { - return static::dateTimeBetween('-10 year', $max, $timezone); - } - - /** - * Get a date time object somewhere inside the current year. - * - * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" - * @param string|null $timezone time zone in which the date time should be set, default to DateTime::$defaultTimezone, if set, otherwise the result of `date_default_timezone_get` - * - * @return \DateTime - */ - public static function dateTimeThisYear($max = 'now', $timezone = null) - { - return static::dateTimeBetween('first day of january this year', $max, $timezone); - } - - /** - * Get a date time object somewhere within a month. - * - * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" - * @param string|null $timezone time zone in which the date time should be set, default to DateTime::$defaultTimezone, if set, otherwise the result of `date_default_timezone_get` - * - * @return \DateTime - */ - public static function dateTimeThisMonth($max = 'now', $timezone = null) - { - return static::dateTimeBetween('-1 month', $max, $timezone); - } - - /** - * Get a string containing either "am" or "pm". - * - * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" - * - * @return string - * - * @example 'am' - */ - public static function amPm($max = 'now') - { - return static::dateTime($max)->format('a'); - } - - /** - * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" - * - * @return string - * - * @example '22' - */ - public static function dayOfMonth($max = 'now') - { - return static::dateTime($max)->format('d'); - } - - /** - * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" - * - * @return string - * - * @example 'Tuesday' - */ - public static function dayOfWeek($max = 'now') - { - return static::dateTime($max)->format('l'); - } - - /** - * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" - * - * @return string - * - * @example '7' - */ - public static function month($max = 'now') - { - return static::dateTime($max)->format('m'); - } - - /** - * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" - * - * @return string - * - * @example 'September' - */ - public static function monthName($max = 'now') - { - return static::dateTime($max)->format('F'); - } - - /** - * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" - * - * @return string - * - * @example '1987' - */ - public static function year($max = 'now') - { - return static::dateTime($max)->format('Y'); - } - - /** - * @return string - * - * @example 'XVII' - */ - public static function century() - { - return static::randomElement(static::$century); - } - - /** - * @return string - * - * @example 'Europe/Paris' - */ - public static function timezone(?string $countryCode = null) - { - if ($countryCode) { - $timezones = \DateTimeZone::listIdentifiers(\DateTimeZone::PER_COUNTRY, $countryCode); - } else { - $timezones = \DateTimeZone::listIdentifiers(); - } - - return static::randomElement($timezones); - } - - /** - * Internal method to set the time zone on a DateTime. - * - * @param string|null $timezone - * - * @return \DateTime - */ - private static function setTimezone(\DateTime $dt, $timezone) - { - return $dt->setTimezone(new \DateTimeZone(static::resolveTimezone($timezone))); - } - - /** - * Sets default time zone. - * - * @param string $timezone - */ - public static function setDefaultTimezone($timezone = null) - { - static::$defaultTimezone = $timezone; - } - - /** - * Gets default time zone. - * - * @return string|null - */ - public static function getDefaultTimezone() - { - return static::$defaultTimezone; - } - - /** - * @param string|null $timezone - * - * @return string|null - */ - private static function resolveTimezone($timezone) - { - return (null === $timezone) ? ((null === static::$defaultTimezone) ? date_default_timezone_get() : static::$defaultTimezone) : $timezone; - } -} diff --git a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/de_AT/Person.php b/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/de_AT/Person.php deleted file mode 100644 index 248952ff..00000000 --- a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/de_AT/Person.php +++ /dev/null @@ -1,154 +0,0 @@ -format('dmy'); - - do { - $consecutiveNumber = (string) self::numberBetween(100, 999); - - $verificationNumber = ( - (int) $consecutiveNumber[0] * 3 - + (int) $consecutiveNumber[1] * 7 - + (int) $consecutiveNumber[2] * 9 - + (int) $birthDateString[0] * 5 - + (int) $birthDateString[1] * 8 - + (int) $birthDateString[2] * 4 - + (int) $birthDateString[3] * 2 - + (int) $birthDateString[4] * 1 - + (int) $birthDateString[5] * 6 - ) % 11; - } while ($verificationNumber == 10); - - return sprintf('%s%s%s', $consecutiveNumber, $verificationNumber, $birthDateString); - } -} diff --git a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/en_AU/Internet.php b/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/en_AU/Internet.php deleted file mode 100644 index 39e65064..00000000 --- a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/en_AU/Internet.php +++ /dev/null @@ -1,9 +0,0 @@ - 0) { - $sum -= 97; - } - $sum = $sum * -1; - - return str_pad((string) $sum, 2, '0', STR_PAD_LEFT); - } -} diff --git a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/en_ZA/Person.php b/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/en_ZA/Person.php deleted file mode 100644 index 2433ac17..00000000 --- a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/en_ZA/Person.php +++ /dev/null @@ -1,182 +0,0 @@ -generator->dateTimeThisCentury(); - } - $birthDateString = $birthdate->format('ymd'); - - switch (strtolower($gender ?: '')) { - case static::GENDER_FEMALE: - $genderDigit = self::numberBetween(0, 4); - - break; - - case static::GENDER_MALE: - $genderDigit = self::numberBetween(5, 9); - - break; - - default: - $genderDigit = self::numberBetween(0, 9); - } - $sequenceDigits = str_pad(self::randomNumber(3), 3, 0, STR_PAD_BOTH); - $citizenDigit = ($citizen === true) ? '0' : '1'; - $raceDigit = self::numberBetween(8, 9); - - $partialIdNumber = $birthDateString . $genderDigit . $sequenceDigits . $citizenDigit . $raceDigit; - - return $partialIdNumber . Luhn::computeCheckDigit($partialIdNumber); - } - - /** - * @see https://en.wikipedia.org/wiki/Driving_licence_in_South_Africa - * - * @return string - */ - public function licenceCode() - { - return static::randomElement(static::$licenceCodes); - } -} diff --git a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/fi_FI/Person.php b/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/fi_FI/Person.php deleted file mode 100644 index 2dc65209..00000000 --- a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/fi_FI/Person.php +++ /dev/null @@ -1,154 +0,0 @@ -format('dmy'); - - switch ((int) ($birthdate->format('Y') / 100)) { - case 18: - $centurySign = '+'; - - break; - - case 19: - $centurySign = '-'; - - break; - - case 20: - $centurySign = 'A'; - - break; - - default: - throw new \InvalidArgumentException('Year must be between 1800 and 2099 inclusive.'); - } - - $randomDigits = self::numberBetween(0, 89); - - if ($gender && $gender == static::GENDER_MALE) { - if ($randomDigits === 0) { - $randomDigits .= static::randomElement([3, 5, 7, 9]); - } else { - $randomDigits .= static::randomElement([1, 3, 5, 7, 9]); - } - } elseif ($gender && $gender == static::GENDER_FEMALE) { - if ($randomDigits === 0) { - $randomDigits .= static::randomElement([2, 4, 6, 8]); - } else { - $randomDigits .= static::randomElement([0, 2, 4, 6, 8]); - } - } else { - if ($randomDigits === 0) { - $randomDigits .= self::numberBetween(2, 9); - } else { - $randomDigits .= (string) static::numerify('#'); - } - } - $randomDigits = str_pad($randomDigits, 3, '0', STR_PAD_LEFT); - - $checksum = $checksumCharacters[(int) ($datePart . $randomDigits) % strlen($checksumCharacters)]; - - return $datePart . $centurySign . $randomDigits . $checksum; - } -} diff --git a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/fr_FR/PhoneNumber.php b/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/fr_FR/PhoneNumber.php deleted file mode 100644 index 22f518d6..00000000 --- a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/fr_FR/PhoneNumber.php +++ /dev/null @@ -1,168 +0,0 @@ -phoneNumber06WithSeparator(); - - return str_replace(' ', '', $phoneNumber); - } - - /** - * Only 0601 to 0638, 0640 to 0689, 0695 and 0698 to 0699 are acceptable prefixes with 06 - * - * @see https://www.arcep.fr/la-regulation/grands-dossiers-thematiques-transverses/la-numerotation.html#c8961 - * @see https://www.itu.int/itu-t/nnp/#/numbering-plans?country=France%C2%A0&code=33 - */ - public function phoneNumber06WithSeparator() - { - $regex = '([0-24-8]\d|3[0-8]|9[589])( \d{2}){3}'; - - return static::regexify($regex); - } - - public function phoneNumber07() - { - $phoneNumber = $this->phoneNumber07WithSeparator(); - - return str_replace(' ', '', $phoneNumber); - } - - /** - * Only 0730 to 0789 are acceptable prefixes with 07 - * - * @see https://www.arcep.fr/la-regulation/grands-dossiers-thematiques-transverses/la-numerotation.html#c8961 - * @see https://www.itu.int/itu-t/nnp/#/numbering-plans?country=France%C2%A0&code=33 - */ - public function phoneNumber07WithSeparator() - { - $regex = '([3-8]\d)( \d{2}){3}'; - - return static::regexify($regex); - } - - public function phoneNumber08() - { - $phoneNumber = $this->phoneNumber08WithSeparator(); - - return str_replace(' ', '', $phoneNumber); - } - - /** - * Valid formats for 08: - * - * 0# ## ## ## - * 1# ## ## ## - * 2# ## ## ## - * 91 ## ## ## - * 92 ## ## ## - * 93 ## ## ## - * 97 ## ## ## - * 98 ## ## ## - * 99 ## ## ## - * - * Formats 089(4|6)## ## ## are valid, but will be - * attributed when other 089 resource ranges are exhausted. - * - * @see https://www.arcep.fr/index.php?id=8146#c9625 - * @see https://issuetracker.google.com/u/1/issues/73269839 - */ - public function phoneNumber08WithSeparator() - { - $regex = '([012]\d|(9[1-357-9])( \d{2}){3}'; - - return static::regexify($regex); - } - - /** - * @example '0601020304' - */ - public function mobileNumber() - { - $format = static::randomElement(static::$mobileFormats); - - return static::numerify($this->generator->parse($format)); - } - - /** - * @example '0891951357' - */ - public function serviceNumber() - { - $format = static::randomElement(static::$serviceFormats); - - return static::numerify($this->generator->parse($format)); - } -} diff --git a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/kk_KZ/Company.php b/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/kk_KZ/Company.php deleted file mode 100644 index 2ba58b94..00000000 --- a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/kk_KZ/Company.php +++ /dev/null @@ -1,72 +0,0 @@ -generator->parse($format); - } - - public static function companyPrefix() - { - return static::randomElement(static::$companyPrefixes); - } - - public static function companyNameElement() - { - return static::randomElement(static::$companyElements); - } - - public static function companyNameSuffix() - { - return static::randomElement(static::$companyNameSuffixes); - } - - /** - * National Business Identification Numbers - * - * @see http://egov.kz/wps/portal/Content?contentPath=%2Fegovcontent%2Fbus_business%2Ffor_businessmen%2Farticle%2Fbusiness_identification_number&lang=en - * - * @return string 12 digits, like 150140000019 - */ - public static function businessIdentificationNumber(?\DateTime $registrationDate = null) - { - if (!$registrationDate) { - $registrationDate = \Faker\Provider\DateTime::dateTimeThisYear(); - } - - $dateAsString = $registrationDate->format('ym'); - $legalEntityType = (string) self::numberBetween(4, 6); - $legalEntityAdditionalType = (string) self::numberBetween(0, 3); - $randomDigits = (string) static::numerify('######'); - - return $dateAsString . $legalEntityType . $legalEntityAdditionalType . $randomDigits; - } -} diff --git a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/kk_KZ/Person.php b/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/kk_KZ/Person.php deleted file mode 100644 index 454ca1e5..00000000 --- a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/kk_KZ/Person.php +++ /dev/null @@ -1,265 +0,0 @@ - [ - self::CENTURY_19TH => self::MALE_CENTURY_19TH, - self::CENTURY_20TH => self::MALE_CENTURY_20TH, - self::CENTURY_21ST => self::MALE_CENTURY_21ST, - ], - self::GENDER_FEMALE => [ - self::CENTURY_19TH => self::FEMALE_CENTURY_19TH, - self::CENTURY_20TH => self::FEMALE_CENTURY_20TH, - self::CENTURY_21ST => self::FEMALE_CENTURY_21ST, - ], - ]; - - /** - * @see https://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D0%B7%D0%B0%D1%85%D1%81%D0%BA%D0%B0%D1%8F_%D1%84%D0%B0%D0%BC%D0%B8%D0%BB%D0%B8%D1%8F - * - * @var array - */ - protected static $maleNameFormats = [ - '{{lastName}}ұлы {{firstNameMale}}', - ]; - - /** - * @see https://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D0%B7%D0%B0%D1%85%D1%81%D0%BA%D0%B0%D1%8F_%D1%84%D0%B0%D0%BC%D0%B8%D0%BB%D0%B8%D1%8F - * - * @var array - */ - protected static $femaleNameFormats = [ - '{{lastName}}қызы {{firstNameFemale}}', - ]; - - /** - * @see http://koshpendi.kz/index.php/nomad/imena/ - * - * @var array - */ - protected static $firstNameMale = [ - 'Аылғазы', - 'Әбдіқадыр', - 'Бабағожа', - 'Ғайса', - 'Дәмен', - 'Егізбек', - 'Жазылбек', - 'Зұлпықар', - 'Игісін', - 'Кәдіржан', - 'Қадырқан', - 'Латиф', - 'Мағаз', - 'Нармағамбет', - 'Оңалбай', - 'Өндіріс', - 'Пердебек', - 'Рақат', - 'Сағындық', - 'Танабай', - 'Уайыс', - 'Ұйықбай', - 'Үрімбай', - 'Файзрахман', - 'Хангелді', - 'Шаттық', - 'Ыстамбақы', - 'Ібни', - ]; - - /** - * @see http://koshpendi.kz/index.php/nomad/imena/ - * - * @var array - */ - protected static $firstNameFemale = [ - 'Асылтас', - 'Әужа', - 'Бүлдіршін', - 'Гүлшаш', - 'Ғафура', - 'Ділдә', - 'Еркежан', - 'Жібек', - 'Зылиқа', - 'Ирада', - 'Күнсұлу', - 'Қырмызы', - 'Ләтипа', - 'Мүштәри', - 'Нұршара', - 'Орынша', - 'Өрзия', - 'Перизат', - 'Рухия', - 'Сындыбала', - 'Тұрсынай', - 'Уәсима', - 'Ұрқия', - 'Үрия', - 'Фируза', - 'Хафиза', - 'Шырынгүл', - 'Ырысты', - 'Іңкәр', - ]; - - /** - * @see http://koshpendi.kz/index.php/nomad/imena/ - * @see https://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D0%B7%D0%B0%D1%85%D1%81%D0%BA%D0%B0%D1%8F_%D1%84%D0%B0%D0%BC%D0%B8%D0%BB%D0%B8%D1%8F - * - * @var array - */ - protected static $lastName = [ - 'Адырбай', - 'Әжібай', - 'Байбөрі', - 'Ғизат', - 'Ділдабек', - 'Ешмұхамбет', - 'Жігер', - 'Зікірия', - 'Иса', - 'Кунту', - 'Қыдыр', - 'Лұқпан', - 'Мышырбай', - 'Нысынбай', - 'Ошақбай', - 'Өтетілеу', - 'Пірәлі', - 'Рүстем', - 'Сырмұхамбет', - 'Тілеміс', - 'Уәлі', - 'Ұлықбек', - 'Үстем', - 'Фахир', - 'Хұсайын', - 'Шілдебай', - 'Ыстамбақы', - 'Ісмет', - ]; - - /** - * Note! When calculating individual identification number - * 2000-01-01 - 2000-12-31 counts as 21th century - * 1900-01-01 - 1900-12-31 counts as 20th century - * - * @param int $year - * - * @return int - */ - private static function getCenturyByYear($year) - { - if (($year >= 2100) || ($year < 1800)) { - throw new \InvalidArgumentException('Unexpected century'); - } - - if ($year >= 2000) { - return self::CENTURY_21ST; - } - - if ($year >= 1900) { - return self::CENTURY_20TH; - } - - return self::CENTURY_19TH; - } - - /** - * National Individual Identification Numbers - * - * @see http://egov.kz/wps/portal/Content?contentPath=%2Fegovcontent%2Fcitizen_migration%2Fpassport_id_card%2Farticle%2Fiin_info&lang=en - * @see https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D0%B4%D0%B8%D0%B2%D0%B8%D0%B4%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%B8%D0%B4%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BD%D0%BE%D0%BC%D0%B5%D1%80 - * - * @param int $gender - * - * @return string 12 digits, like 780322300455 - */ - public static function individualIdentificationNumber(?\DateTime $birthDate = null, $gender = self::GENDER_MALE) - { - if (!$birthDate) { - $birthDate = DateTime::dateTimeBetween(); - } - - do { - $population = self::numberBetween(1000, 2000); - $century = self::getCenturyByYear((int) $birthDate->format('Y')); - - $iin = $birthDate->format('ymd'); - $iin .= (string) self::$genderCenturyMap[$gender][$century]; - $iin .= (string) $population; - $checksum = self::checkSum($iin); - } while ($checksum === 10); - - return $iin . (string) $checksum; - } - - /** - * @param string $iinValue - * - * @return int - */ - public static function checkSum($iinValue) - { - $controlDigit = self::getControlDigit($iinValue, self::$firstSequenceBitWeights); - - if ($controlDigit === 10) { - return self::getControlDigit($iinValue, self::$secondSequenceBitWeights); - } - - return $controlDigit; - } - - /** - * @param string $iinValue - * @param array $sequence - * - * @return int - */ - protected static function getControlDigit($iinValue, $sequence) - { - $sum = 0; - - for ($i = 0; $i <= 10; ++$i) { - $sum += (int) $iinValue[$i] * $sequence[$i]; - } - - return $sum % 11; - } -} diff --git a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/lt_LT/Person.php b/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/lt_LT/Person.php deleted file mode 100644 index 0908f808..00000000 --- a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/lt_LT/Person.php +++ /dev/null @@ -1,390 +0,0 @@ -generator->parse(static::randomElement(static::$lastNameFormat)); - } - - /** - * Return male last name - * - * @return string - * - * @example 'Vasiliauskas' - */ - public function lastNameMale() - { - return static::randomElement(static::$lastNameMale); - } - - /** - * Return female last name - * - * @return string - * - * @example 'Žukauskaitė' - */ - public function lastNameFemale() - { - return static::randomElement(static::$lastNameFemale); - } - - /** - * Return driver license number - * - * @return string - * - * @example 12345678 - */ - public function driverLicence() - { - return $this->bothify('########'); - } - - /** - * Return passport number - * - * @return string - * - * @example 12345678 - */ - public function passportNumber() - { - return $this->bothify('########'); - } - - /** - * National Personal Identity number (asmens kodas) - * - * @see https://en.wikipedia.org/wiki/National_identification_number#Lithuania - * @see https://lt.wikipedia.org/wiki/Asmens_kodas - * - * @param string $gender [male|female] - * @param string $randomNumber three integers - * - * @return string on format XXXXXXXXXXX - */ - public function personalIdentityNumber($gender = 'male', ?\DateTime $birthdate = null, $randomNumber = '') - { - if (!$birthdate) { - $birthdate = \Faker\Provider\DateTime::dateTimeThisCentury(); - } - - $genderNumber = ($gender == 'male') ? 1 : 0; - $firstNumber = (int) floor($birthdate->format('Y') / 100) * 2 - 34 - $genderNumber; - - $datePart = $birthdate->format('ymd'); - $randomDigits = (string) (!$randomNumber || strlen($randomNumber) < 3) ? static::numerify('###') : substr($randomNumber, 0, 3); - $partOfPerosnalCode = $firstNumber . $datePart . $randomDigits; - - $sum = self::calculateSum($partOfPerosnalCode, 1); - $liekana = $sum % 11; - - if ($liekana !== 10) { - $lastNumber = $liekana; - - return $firstNumber . $datePart . $randomDigits . $lastNumber; - } - - $sum = self::calculateSum($partOfPerosnalCode, 2); - $liekana = $sum % 11; - - $lastNumber = ($liekana !== 10) ? $liekana : 0; - - return $firstNumber . $datePart . $randomDigits . $lastNumber; - } - - /** - * Calculate the sum of personal code - * - * @see https://en.wikipedia.org/wiki/National_identification_number#Lithuania - * @see https://lt.wikipedia.org/wiki/Asmens_kodas - * - * @param string $numbers - * @param int $time [1|2] - * - * @return int - */ - private static function calculateSum($numbers, $time = 1) - { - if ($time == 1) { - $multipliers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1]; - } else { - $multipliers = [3, 4, 5, 6, 7, 8, 9, 1, 2, 3]; - } - - $sum = 0; - - for ($i = 1; $i <= 10; ++$i) { - $sum += ((int) $numbers[$i - 1]) * $multipliers[$i - 1]; - } - - return (int) $sum; - } -} diff --git a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/lv_LV/Person.php b/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/lv_LV/Person.php deleted file mode 100644 index f05b4507..00000000 --- a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/lv_LV/Person.php +++ /dev/null @@ -1,173 +0,0 @@ -format('Y'); - - if ($year >= 2000 && $year <= 2099) { - $century = 2; - } elseif ($year >= 1900 && $year <= 1999) { - $century = 1; - } else { - $century = 0; - } - - $datePart = $birthdate->format('dmy'); - $serialNumber = static::numerify('###'); - - $partialNumberSplit = str_split($datePart . $century . $serialNumber); - - $idDigitValidator = [1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; - $total = 0; - - foreach ($partialNumberSplit as $key => $digit) { - if (isset($idDigitValidator[$key])) { - $total += $idDigitValidator[$key] * (int) $digit; - } - } - - $checksumDigit = (1101 - $total) % 11 % 10; - - return $datePart . '-' . $century . $serialNumber . $checksumDigit; - } -} diff --git a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/nb_NO/Person.php b/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/nb_NO/Person.php deleted file mode 100644 index e3378417..00000000 --- a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/nb_NO/Person.php +++ /dev/null @@ -1,335 +0,0 @@ -format('dmy'); - - /** - * @todo These number should be random based on birth year - * - * @see http://no.wikipedia.org/wiki/F%C3%B8dselsnummer - */ - $randomDigits = (string) static::numerify('##'); - - switch ($gender) { - case static::GENDER_MALE: - $genderDigit = static::randomElement([1, 3, 5, 7, 9]); - - break; - - case static::GENDER_FEMALE: - $genderDigit = static::randomElement([0, 2, 4, 6, 8]); - - break; - - default: - $genderDigit = (string) static::numerify('#'); - } - - $digits = $datePart . $randomDigits . $genderDigit; - - /** - * @todo Calculate modulo 11 of $digits - * - * @see http://no.wikipedia.org/wiki/F%C3%B8dselsnummer - */ - $checksum = (string) static::numerify('##'); - - return $digits . $checksum; - } -} diff --git a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/sv_SE/Person.php b/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/sv_SE/Person.php deleted file mode 100644 index 7c42f6bd..00000000 --- a/docker/streamline-src/vendor/fakerphp/faker/src/Faker/Provider/sv_SE/Person.php +++ /dev/null @@ -1,170 +0,0 @@ -format('ymd'); - $randomDigits = $this->getBirthNumber($gender); - - $checksum = Luhn::computeCheckDigit($datePart . $randomDigits); - - return $datePart . '-' . $randomDigits . $checksum; - } - - /** - * @param string $gender Person::GENDER_MALE || Person::GENDER_FEMALE - * - * @return string of three digits - */ - protected function getBirthNumber($gender = null) - { - if ($gender && $gender === static::GENDER_MALE) { - return (string) static::numerify('##') . static::randomElement([1, 3, 5, 7, 9]); - } - - $zeroCheck = static function ($callback) { - do { - $randomDigits = $callback(); - } while ($randomDigits === '000'); - - return $randomDigits; - }; - - if ($gender && $gender === static::GENDER_FEMALE) { - return $zeroCheck(static function () { - return (string) static::numerify('##') . static::randomElement([0, 2, 4, 6, 8]); - }); - } - - return $zeroCheck(static function () { - return (string) static::numerify('###'); - }); - } -} diff --git a/docker/streamline-src/vendor/filp/whoops/CHANGELOG.md b/docker/streamline-src/vendor/filp/whoops/CHANGELOG.md deleted file mode 100644 index bbd16fcc..00000000 --- a/docker/streamline-src/vendor/filp/whoops/CHANGELOG.md +++ /dev/null @@ -1,160 +0,0 @@ -# CHANGELOG - -## v2.16.0 - -* Support PHP `8.4`. -* Drop support for PHP older than `7.1`. - -## v2.15.4 - -* Improve link color in comments. - -## v2.15.3 - -* Improve performance of the syntax highlighting (#758). - -## v2.15.2 - -* Fixed missing code highlight, which additionally led to issue with switching tabs, between application and all frames ([#747](https://github.com/filp/whoops/issues/747)). - -## v2.15.1 - -* Fixed bug with PrettyPageHandler "*Calling `getFrameFilters` method on null*" ([#751](https://github.com/filp/whoops/pull/751)). - -## v2.15.0 - -* Add addFrameFilter ([#749](https://github.com/filp/whoops/pull/749)) - -## v2.14.6 - -* Upgraded prismJS to version `1.29.0` due to security issue ([#741][i741]). - -[i741]: https://github.com/filp/whoops/pull/741 - -## v2.14.5 - -* Allow `ArrayAccess` on super globals. - -## v2.14.4 - -* Fix PHP `5.5` support. -* Allow to use psr/log `2` or `3`. - -## v2.14.3 - -* Support PHP `8.1`. - -## v2.14.1 - -* Fix syntax highlighting scrolling too far. -* Improve the way we detect xdebug linkformat. - -## v2.14.0 - -* Switched syntax highlighting to Prism.js. - -Avoids licensing issues with prettify, and uses a maintained, modern project. - -## v2.13.0 - -* Add Netbeans editor. - -## v2.12.1 - -* Avoid redirecting away from an error. - -## v2.12.0 - -* Hide non-string values in super globals when requested. - -## v2.11.0 - -* Customize exit code. - -## v2.10.0 - -* Better chaining on handler classes. - -## v2.9.2 - -* Fix copy button styles. - -## v2.9.1 - -* Fix xdebug function crash on PHP `8`. - -## v2.9.0 - -* `JsonResponseHandler` includes the exception code. - -## v2.8.0 - -* Support PHP 8. - -## v2.7.3 - -* `PrettyPageHandler` functionality to hide superglobal keys has a clearer name -(`hideSuperglobalKey`). - -## v2.7.2 - -* `PrettyPageHandler` now accepts custom js files. -* `PrettyPageHandler` and `templateHelper` is now accessible through inheritance. - -## v2.7.1 - -* Fix a PHP warning in some cases with anonymous classes. - -## v2.7.0 - -* Added `removeFirstHandler` and `removeLastHandler`. - -## v2.6.0 - -* Fix 2.4.0 `pushHandler` changing the order of handlers. - -## v2.5.1 - -* Fix error messaging in a rare case. - -## v2.5.0 - -* Automatically configure xdebug if available. - -## v2.4.1 - -* Try harder to close all output buffers. - -## v2.4.0 - -* Allow to prepend and append handlers. - -## v2.3.2 - -* Various fixes from the community. - -## v2.3.1 - -* Prevent exception in Whoops when caught exception frame is not related to real file. - -## v2.3.0 - -* Show previous exception messages. - -## v2.2.0 - -* Support PHP `7.2`. - -## v2.1.0 - -* Add a `SystemFacade` to allow clients to override Whoops behavior. -* Show frame arguments in `PrettyPageHandler`. -* Highlight the line with the error. -* Add icons to search on Google and Stack Overflow. - -## v2.0.0 - -Backwards compatibility breaking changes: - -* `Run` class is now `final`. If you inherited from `Run`, please now instead use a custom `SystemFacade` injected into the `Run` constructor, or contribute your changes to our core. -* PHP < 5.5 support dropped. diff --git a/docker/streamline-src/vendor/filp/whoops/composer.json b/docker/streamline-src/vendor/filp/whoops/composer.json deleted file mode 100644 index c72fab00..00000000 --- a/docker/streamline-src/vendor/filp/whoops/composer.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "filp/whoops", - "license": "MIT", - "description": "php error handling for cool kids", - "keywords": ["library", "error", "handling", "exception", "whoops", "throwable"], - "homepage": "https://filp.github.io/whoops/", - "authors": [ - { - "name": "Filipe Dobreira", - "homepage": "https://github.com/filp", - "role": "Developer" - } - ], - "scripts": { - "test": "phpunit --testdox tests" - }, - "require": { - "php": "^7.1 || ^8.0", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "require-dev": { - "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.3", - "mockery/mockery": "^1.0", - "symfony/var-dumper": "^4.0 || ^5.0" - }, - "suggest": { - "symfony/var-dumper": "Pretty print complex values better with var-dumper available", - "whoops/soap": "Formats errors as SOAP responses" - }, - "autoload": { - "psr-4": { - "Whoops\\": "src/Whoops/" - } - }, - "autoload-dev": { - "psr-4": { - "Whoops\\": "tests/Whoops/" - } - }, - "extra": { - "branch-alias": { - "dev-master": "2.7-dev" - } - } -} diff --git a/docker/streamline-src/vendor/filp/whoops/src/Whoops/Handler/PrettyPageHandler.php b/docker/streamline-src/vendor/filp/whoops/src/Whoops/Handler/PrettyPageHandler.php deleted file mode 100644 index b739ac06..00000000 --- a/docker/streamline-src/vendor/filp/whoops/src/Whoops/Handler/PrettyPageHandler.php +++ /dev/null @@ -1,832 +0,0 @@ - - */ - -namespace Whoops\Handler; - -use InvalidArgumentException; -use RuntimeException; -use Symfony\Component\VarDumper\Cloner\AbstractCloner; -use Symfony\Component\VarDumper\Cloner\VarCloner; -use UnexpectedValueException; -use Whoops\Exception\Formatter; -use Whoops\Util\Misc; -use Whoops\Util\TemplateHelper; - -class PrettyPageHandler extends Handler -{ - const EDITOR_SUBLIME = "sublime"; - const EDITOR_TEXTMATE = "textmate"; - const EDITOR_EMACS = "emacs"; - const EDITOR_MACVIM = "macvim"; - const EDITOR_PHPSTORM = "phpstorm"; - const EDITOR_IDEA = "idea"; - const EDITOR_VSCODE = "vscode"; - const EDITOR_ATOM = "atom"; - const EDITOR_ESPRESSO = "espresso"; - const EDITOR_XDEBUG = "xdebug"; - const EDITOR_NETBEANS = "netbeans"; - - /** - * Search paths to be scanned for resources. - * - * Stored in the reverse order they're declared. - * - * @var array - */ - private $searchPaths = []; - - /** - * Fast lookup cache for known resource locations. - * - * @var array - */ - private $resourceCache = []; - - /** - * The name of the custom css file. - * - * @var string|null - */ - private $customCss = null; - - /** - * The name of the custom js file. - * - * @var string|null - */ - private $customJs = null; - - /** - * @var array[] - */ - private $extraTables = []; - - /** - * @var bool - */ - private $handleUnconditionally = false; - - /** - * @var string - */ - private $pageTitle = "Whoops! There was an error."; - - /** - * @var array[] - */ - private $applicationPaths; - - /** - * @var array[] - */ - private $blacklist = [ - '_GET' => [], - '_POST' => [], - '_FILES' => [], - '_COOKIE' => [], - '_SESSION' => [], - '_SERVER' => [], - '_ENV' => [], - ]; - - /** - * An identifier for a known IDE/text editor. - * - * Either a string, or a calalble that resolves a string, that can be used - * to open a given file in an editor. If the string contains the special - * substrings %file or %line, they will be replaced with the correct data. - * - * @example - * "txmt://open?url=%file&line=%line" - * - * @var callable|string $editor - */ - protected $editor; - - /** - * A list of known editor strings. - * - * @var array - */ - protected $editors = [ - "sublime" => "subl://open?url=file://%file&line=%line", - "textmate" => "txmt://open?url=file://%file&line=%line", - "emacs" => "emacs://open?url=file://%file&line=%line", - "macvim" => "mvim://open/?url=file://%file&line=%line", - "phpstorm" => "phpstorm://open?file=%file&line=%line", - "idea" => "idea://open?file=%file&line=%line", - "vscode" => "vscode://file/%file:%line", - "atom" => "atom://core/open/file?filename=%file&line=%line", - "espresso" => "x-espresso://open?filepath=%file&lines=%line", - "netbeans" => "netbeans://open/?f=%file:%line", - ]; - - /** - * @var TemplateHelper - */ - protected $templateHelper; - - /** - * Constructor. - * - * @return void - */ - public function __construct() - { - if (ini_get('xdebug.file_link_format') || get_cfg_var('xdebug.file_link_format')) { - // Register editor using xdebug's file_link_format option. - $this->editors['xdebug'] = function ($file, $line) { - return str_replace(['%f', '%l'], [$file, $line], ini_get('xdebug.file_link_format') ?: get_cfg_var('xdebug.file_link_format')); - }; - - // If xdebug is available, use it as default editor. - $this->setEditor('xdebug'); - } - - // Add the default, local resource search path: - $this->searchPaths[] = __DIR__ . "/../Resources"; - - // blacklist php provided auth based values - $this->blacklist('_SERVER', 'PHP_AUTH_PW'); - - $this->templateHelper = new TemplateHelper(); - - if (class_exists('Symfony\Component\VarDumper\Cloner\VarCloner')) { - $cloner = new VarCloner(); - // Only dump object internals if a custom caster exists for performance reasons - // https://github.com/filp/whoops/pull/404 - $cloner->addCasters(['*' => function ($obj, $a, $stub, $isNested, $filter = 0) { - $class = $stub->class; - $classes = [$class => $class] + class_parents($obj) + class_implements($obj); - - foreach ($classes as $class) { - if (isset(AbstractCloner::$defaultCasters[$class])) { - return $a; - } - } - - // Remove all internals - return []; - }]); - $this->templateHelper->setCloner($cloner); - } - } - - /** - * @return int|null - * - * @throws \Exception - */ - public function handle() - { - if (!$this->handleUnconditionally()) { - // Check conditions for outputting HTML: - // @todo: Make this more robust - if (PHP_SAPI === 'cli') { - // Help users who have been relying on an internal test value - // fix their code to the proper method - if (isset($_ENV['whoops-test'])) { - throw new \Exception( - 'Use handleUnconditionally instead of whoops-test' - .' environment variable' - ); - } - - return Handler::DONE; - } - } - - $templateFile = $this->getResource("views/layout.html.php"); - $cssFile = $this->getResource("css/whoops.base.css"); - $zeptoFile = $this->getResource("js/zepto.min.js"); - $prismJs = $this->getResource("js/prism.js"); - $prismCss = $this->getResource("css/prism.css"); - $clipboard = $this->getResource("js/clipboard.min.js"); - $jsFile = $this->getResource("js/whoops.base.js"); - - if ($this->customCss) { - $customCssFile = $this->getResource($this->customCss); - } - - if ($this->customJs) { - $customJsFile = $this->getResource($this->customJs); - } - - $inspector = $this->getInspector(); - $frames = $this->getExceptionFrames(); - $code = $this->getExceptionCode(); - - // List of variables that will be passed to the layout template. - $vars = [ - "page_title" => $this->getPageTitle(), - - // @todo: Asset compiler - "stylesheet" => file_get_contents($cssFile), - "zepto" => file_get_contents($zeptoFile), - "prismJs" => file_get_contents($prismJs), - "prismCss" => file_get_contents($prismCss), - "clipboard" => file_get_contents($clipboard), - "javascript" => file_get_contents($jsFile), - - // Template paths: - "header" => $this->getResource("views/header.html.php"), - "header_outer" => $this->getResource("views/header_outer.html.php"), - "frame_list" => $this->getResource("views/frame_list.html.php"), - "frames_description" => $this->getResource("views/frames_description.html.php"), - "frames_container" => $this->getResource("views/frames_container.html.php"), - "panel_details" => $this->getResource("views/panel_details.html.php"), - "panel_details_outer" => $this->getResource("views/panel_details_outer.html.php"), - "panel_left" => $this->getResource("views/panel_left.html.php"), - "panel_left_outer" => $this->getResource("views/panel_left_outer.html.php"), - "frame_code" => $this->getResource("views/frame_code.html.php"), - "env_details" => $this->getResource("views/env_details.html.php"), - - "title" => $this->getPageTitle(), - "name" => explode("\\", $inspector->getExceptionName()), - "message" => $inspector->getExceptionMessage(), - "previousMessages" => $inspector->getPreviousExceptionMessages(), - "docref_url" => $inspector->getExceptionDocrefUrl(), - "code" => $code, - "previousCodes" => $inspector->getPreviousExceptionCodes(), - "plain_exception" => Formatter::formatExceptionPlain($inspector), - "frames" => $frames, - "has_frames" => !!count($frames), - "handler" => $this, - "handlers" => $this->getRun()->getHandlers(), - - "active_frames_tab" => count($frames) && $frames->offsetGet(0)->isApplication() ? 'application' : 'all', - "has_frames_tabs" => $this->getApplicationPaths(), - - "tables" => [ - "GET Data" => $this->masked($_GET, '_GET'), - "POST Data" => $this->masked($_POST, '_POST'), - "Files" => isset($_FILES) ? $this->masked($_FILES, '_FILES') : [], - "Cookies" => $this->masked($_COOKIE, '_COOKIE'), - "Session" => isset($_SESSION) ? $this->masked($_SESSION, '_SESSION') : [], - "Server/Request Data" => $this->masked($_SERVER, '_SERVER'), - "Environment Variables" => $this->masked($_ENV, '_ENV'), - ], - ]; - - if (isset($customCssFile)) { - $vars["stylesheet"] .= file_get_contents($customCssFile); - } - - if (isset($customJsFile)) { - $vars["javascript"] .= file_get_contents($customJsFile); - } - - // Add extra entries list of data tables: - // @todo: Consolidate addDataTable and addDataTableCallback - $extraTables = array_map(function ($table) use ($inspector) { - return $table instanceof \Closure ? $table($inspector) : $table; - }, $this->getDataTables()); - $vars["tables"] = array_merge($extraTables, $vars["tables"]); - - $plainTextHandler = new PlainTextHandler(); - $plainTextHandler->setRun($this->getRun()); - $plainTextHandler->setException($this->getException()); - $plainTextHandler->setInspector($this->getInspector()); - $vars["preface"] = ""; - - $this->templateHelper->setVariables($vars); - $this->templateHelper->render($templateFile); - - return Handler::QUIT; - } - - /** - * Get the stack trace frames of the exception currently being handled. - * - * @return \Whoops\Exception\FrameCollection - */ - protected function getExceptionFrames() - { - $frames = $this->getInspector()->getFrames($this->getRun()->getFrameFilters()); - - if ($this->getApplicationPaths()) { - foreach ($frames as $frame) { - foreach ($this->getApplicationPaths() as $path) { - if (strpos($frame->getFile(), $path) === 0) { - $frame->setApplication(true); - break; - } - } - } - } - - return $frames; - } - - /** - * Get the code of the exception currently being handled. - * - * @return string - */ - protected function getExceptionCode() - { - $exception = $this->getException(); - - $code = $exception->getCode(); - if ($exception instanceof \ErrorException) { - // ErrorExceptions wrap the php-error types within the 'severity' property - $code = Misc::translateErrorCode($exception->getSeverity()); - } - - return (string) $code; - } - - /** - * @return string - */ - public function contentType() - { - return 'text/html'; - } - - /** - * Adds an entry to the list of tables displayed in the template. - * - * The expected data is a simple associative array. Any nested arrays - * will be flattened with `print_r`. - * - * @param string $label - * - * @return static - */ - public function addDataTable($label, array $data) - { - $this->extraTables[$label] = $data; - return $this; - } - - /** - * Lazily adds an entry to the list of tables displayed in the table. - * - * The supplied callback argument will be called when the error is - * rendered, it should produce a simple associative array. Any nested - * arrays will be flattened with `print_r`. - * - * @param string $label - * @param callable $callback Callable returning an associative array - * - * @throws InvalidArgumentException If $callback is not callable - * - * @return static - */ - public function addDataTableCallback($label, /* callable */ $callback) - { - if (!is_callable($callback)) { - throw new InvalidArgumentException('Expecting callback argument to be callable'); - } - - $this->extraTables[$label] = function (?\Whoops\Inspector\InspectorInterface $inspector = null) use ($callback) { - try { - $result = call_user_func($callback, $inspector); - - // Only return the result if it can be iterated over by foreach(). - return is_array($result) || $result instanceof \Traversable ? $result : []; - } catch (\Exception $e) { - // Don't allow failure to break the rendering of the original exception. - return []; - } - }; - - return $this; - } - - /** - * Returns all the extra data tables registered with this handler. - * - * Optionally accepts a 'label' parameter, to only return the data table - * under that label. - * - * @param string|null $label - * - * @return array[]|callable - */ - public function getDataTables($label = null) - { - if ($label !== null) { - return isset($this->extraTables[$label]) ? - $this->extraTables[$label] : []; - } - - return $this->extraTables; - } - - /** - * Set whether to handle unconditionally. - * - * Allows to disable all attempts to dynamically decide whether to handle - * or return prematurely. Set this to ensure that the handler will perform, - * no matter what. - * - * @param bool|null $value - * - * @return bool|static - */ - public function handleUnconditionally($value = null) - { - if (func_num_args() == 0) { - return $this->handleUnconditionally; - } - - $this->handleUnconditionally = (bool) $value; - return $this; - } - - /** - * Adds an editor resolver. - * - * Either a string, or a closure that resolves a string, that can be used - * to open a given file in an editor. If the string contains the special - * substrings %file or %line, they will be replaced with the correct data. - * - * @example - * $run->addEditor('macvim', "mvim://open?url=file://%file&line=%line") - * @example - * $run->addEditor('remove-it', function($file, $line) { - * unlink($file); - * return "http://stackoverflow.com"; - * }); - * - * @param string $identifier - * @param string|callable $resolver - * - * @return static - */ - public function addEditor($identifier, $resolver) - { - $this->editors[$identifier] = $resolver; - return $this; - } - - /** - * Set the editor to use to open referenced files. - * - * Pass either the name of a configured editor, or a closure that directly - * resolves an editor string. - * - * @example - * $run->setEditor(function($file, $line) { return "file:///{$file}"; }); - * @example - * $run->setEditor('sublime'); - * - * @param string|callable $editor - * - * @throws InvalidArgumentException If invalid argument identifier provided - * - * @return static - */ - public function setEditor($editor) - { - if (!is_callable($editor) && !isset($this->editors[$editor])) { - throw new InvalidArgumentException( - "Unknown editor identifier: $editor. Known editors:" . - implode(",", array_keys($this->editors)) - ); - } - - $this->editor = $editor; - return $this; - } - - /** - * Get the editor href for a given file and line, if available. - * - * @param string $filePath - * @param int $line - * - * @throws InvalidArgumentException If editor resolver does not return a string - * - * @return string|bool - */ - public function getEditorHref($filePath, $line) - { - $editor = $this->getEditor($filePath, $line); - - if (empty($editor)) { - return false; - } - - // Check that the editor is a string, and replace the - // %line and %file placeholders: - if (!isset($editor['url']) || !is_string($editor['url'])) { - throw new UnexpectedValueException( - __METHOD__ . " should always resolve to a string or a valid editor array; got something else instead." - ); - } - - $editor['url'] = str_replace("%line", rawurlencode($line), $editor['url']); - $editor['url'] = str_replace("%file", rawurlencode($filePath), $editor['url']); - - return $editor['url']; - } - - /** - * Determine if the editor link should act as an Ajax request. - * - * @param string $filePath - * @param int $line - * - * @throws UnexpectedValueException If editor resolver does not return a boolean - * - * @return bool - */ - public function getEditorAjax($filePath, $line) - { - $editor = $this->getEditor($filePath, $line); - - // Check that the ajax is a bool - if (!isset($editor['ajax']) || !is_bool($editor['ajax'])) { - throw new UnexpectedValueException( - __METHOD__ . " should always resolve to a bool; got something else instead." - ); - } - return $editor['ajax']; - } - - /** - * Determines both the editor and if ajax should be used. - * - * @param string $filePath - * @param int $line - * - * @return array - */ - protected function getEditor($filePath, $line) - { - if (!$this->editor || (!is_string($this->editor) && !is_callable($this->editor))) { - return []; - } - - if (is_string($this->editor) && isset($this->editors[$this->editor]) && !is_callable($this->editors[$this->editor])) { - return [ - 'ajax' => false, - 'url' => $this->editors[$this->editor], - ]; - } - - if (is_callable($this->editor) || (isset($this->editors[$this->editor]) && is_callable($this->editors[$this->editor]))) { - if (is_callable($this->editor)) { - $callback = call_user_func($this->editor, $filePath, $line); - } else { - $callback = call_user_func($this->editors[$this->editor], $filePath, $line); - } - - if (empty($callback)) { - return []; - } - - if (is_string($callback)) { - return [ - 'ajax' => false, - 'url' => $callback, - ]; - } - - return [ - 'ajax' => isset($callback['ajax']) ? $callback['ajax'] : false, - 'url' => isset($callback['url']) ? $callback['url'] : $callback, - ]; - } - - return []; - } - - /** - * Set the page title. - * - * @param string $title - * - * @return static - */ - public function setPageTitle($title) - { - $this->pageTitle = (string) $title; - return $this; - } - - /** - * Get the page title. - * - * @return string - */ - public function getPageTitle() - { - return $this->pageTitle; - } - - /** - * Adds a path to the list of paths to be searched for resources. - * - * @param string $path - * - * @throws InvalidArgumentException If $path is not a valid directory - * - * @return static - */ - public function addResourcePath($path) - { - if (!is_dir($path)) { - throw new InvalidArgumentException( - "'$path' is not a valid directory" - ); - } - - array_unshift($this->searchPaths, $path); - return $this; - } - - /** - * Adds a custom css file to be loaded. - * - * @param string|null $name - * - * @return static - */ - public function addCustomCss($name) - { - $this->customCss = $name; - return $this; - } - - /** - * Adds a custom js file to be loaded. - * - * @param string|null $name - * - * @return static - */ - public function addCustomJs($name) - { - $this->customJs = $name; - return $this; - } - - /** - * @return array - */ - public function getResourcePaths() - { - return $this->searchPaths; - } - - /** - * Finds a resource, by its relative path, in all available search paths. - * - * The search is performed starting at the last search path, and all the - * way back to the first, enabling a cascading-type system of overrides for - * all resources. - * - * @param string $resource - * - * @throws RuntimeException If resource cannot be found in any of the available paths - * - * @return string - */ - protected function getResource($resource) - { - // If the resource was found before, we can speed things up - // by caching its absolute, resolved path: - if (isset($this->resourceCache[$resource])) { - return $this->resourceCache[$resource]; - } - - // Search through available search paths, until we find the - // resource we're after: - foreach ($this->searchPaths as $path) { - $fullPath = $path . "/$resource"; - - if (is_file($fullPath)) { - // Cache the result: - $this->resourceCache[$resource] = $fullPath; - return $fullPath; - } - } - - // If we got this far, nothing was found. - throw new RuntimeException( - "Could not find resource '$resource' in any resource paths." - . "(searched: " . join(", ", $this->searchPaths). ")" - ); - } - - /** - * @deprecated - * - * @return string - */ - public function getResourcesPath() - { - $allPaths = $this->getResourcePaths(); - - // Compat: return only the first path added - return end($allPaths) ?: null; - } - - /** - * @deprecated - * - * @param string $resourcesPath - * - * @return static - */ - public function setResourcesPath($resourcesPath) - { - $this->addResourcePath($resourcesPath); - return $this; - } - - /** - * Return the application paths. - * - * @return array - */ - public function getApplicationPaths() - { - return $this->applicationPaths; - } - - /** - * Set the application paths. - * - * @return void - */ - public function setApplicationPaths(array $applicationPaths) - { - $this->applicationPaths = $applicationPaths; - } - - /** - * Set the application root path. - * - * @param string $applicationRootPath - * - * @return void - */ - public function setApplicationRootPath($applicationRootPath) - { - $this->templateHelper->setApplicationRootPath($applicationRootPath); - } - - /** - * blacklist a sensitive value within one of the superglobal arrays. - * Alias for the hideSuperglobalKey method. - * - * @param string $superGlobalName The name of the superglobal array, e.g. '_GET' - * @param string $key The key within the superglobal - * @see hideSuperglobalKey - * - * @return static - */ - public function blacklist($superGlobalName, $key) - { - $this->blacklist[$superGlobalName][] = $key; - return $this; - } - - /** - * Hide a sensitive value within one of the superglobal arrays. - * - * @param string $superGlobalName The name of the superglobal array, e.g. '_GET' - * @param string $key The key within the superglobal - * @return static - */ - public function hideSuperglobalKey($superGlobalName, $key) - { - return $this->blacklist($superGlobalName, $key); - } - - /** - * Checks all values within the given superGlobal array. - * - * Blacklisted values will be replaced by a equal length string containing - * only '*' characters for string values. - * Non-string values will be replaced with a fixed asterisk count. - * We intentionally dont rely on $GLOBALS as it depends on the 'auto_globals_jit' php.ini setting. - * - * @param array|\ArrayAccess $superGlobal One of the superglobal arrays - * @param string $superGlobalName The name of the superglobal array, e.g. '_GET' - * - * @return array $values without sensitive data - */ - private function masked($superGlobal, $superGlobalName) - { - $blacklisted = $this->blacklist[$superGlobalName]; - - $values = $superGlobal; - - foreach ($blacklisted as $key) { - if (isset($superGlobal[$key])) { - $values[$key] = str_repeat('*', is_string($superGlobal[$key]) ? strlen($superGlobal[$key]) : 3); - } - } - - return $values; - } -} diff --git a/docker/streamline-src/vendor/filp/whoops/src/Whoops/Run.php b/docker/streamline-src/vendor/filp/whoops/src/Whoops/Run.php deleted file mode 100644 index 7be63aff..00000000 --- a/docker/streamline-src/vendor/filp/whoops/src/Whoops/Run.php +++ /dev/null @@ -1,597 +0,0 @@ - - */ - -namespace Whoops; - -use InvalidArgumentException; -use Throwable; -use Whoops\Exception\ErrorException; -use Whoops\Handler\CallbackHandler; -use Whoops\Handler\Handler; -use Whoops\Handler\HandlerInterface; -use Whoops\Inspector\CallableInspectorFactory; -use Whoops\Inspector\InspectorFactory; -use Whoops\Inspector\InspectorFactoryInterface; -use Whoops\Inspector\InspectorInterface; -use Whoops\Util\Misc; -use Whoops\Util\SystemFacade; - -final class Run implements RunInterface -{ - /** - * @var bool - */ - private $isRegistered; - - /** - * @var bool - */ - private $allowQuit = true; - - /** - * @var bool - */ - private $sendOutput = true; - - /** - * @var integer|false - */ - private $sendHttpCode = 500; - - /** - * @var integer|false - */ - private $sendExitCode = 1; - - /** - * @var HandlerInterface[] - */ - private $handlerStack = []; - - /** - * @var array - * @psalm-var list - */ - private $silencedPatterns = []; - - /** - * @var SystemFacade - */ - private $system; - - /** - * In certain scenarios, like in shutdown handler, we can not throw exceptions. - * - * @var bool - */ - private $canThrowExceptions = true; - - /** - * The inspector factory to create inspectors. - * - * @var InspectorFactoryInterface - */ - private $inspectorFactory; - - /** - * @var array - */ - private $frameFilters = []; - - public function __construct(?SystemFacade $system = null) - { - $this->system = $system ?: new SystemFacade; - $this->inspectorFactory = new InspectorFactory(); - } - - /** - * Explicitly request your handler runs as the last of all currently registered handlers. - * - * @param callable|HandlerInterface $handler - * - * @return Run - */ - public function appendHandler($handler) - { - array_unshift($this->handlerStack, $this->resolveHandler($handler)); - return $this; - } - - /** - * Explicitly request your handler runs as the first of all currently registered handlers. - * - * @param callable|HandlerInterface $handler - * - * @return Run - */ - public function prependHandler($handler) - { - return $this->pushHandler($handler); - } - - /** - * Register your handler as the last of all currently registered handlers (to be executed first). - * Prefer using appendHandler and prependHandler for clarity. - * - * @param callable|HandlerInterface $handler - * - * @return Run - * - * @throws InvalidArgumentException If argument is not callable or instance of HandlerInterface. - */ - public function pushHandler($handler) - { - $this->handlerStack[] = $this->resolveHandler($handler); - return $this; - } - - /** - * Removes and returns the last handler pushed to the handler stack. - * - * @see Run::removeFirstHandler(), Run::removeLastHandler() - * - * @return HandlerInterface|null - */ - public function popHandler() - { - return array_pop($this->handlerStack); - } - - /** - * Removes the first handler. - * - * @return void - */ - public function removeFirstHandler() - { - array_pop($this->handlerStack); - } - - /** - * Removes the last handler. - * - * @return void - */ - public function removeLastHandler() - { - array_shift($this->handlerStack); - } - - /** - * Returns an array with all handlers, in the order they were added to the stack. - * - * @return array - */ - public function getHandlers() - { - return $this->handlerStack; - } - - /** - * Clears all handlers in the handlerStack, including the default PrettyPage handler. - * - * @return Run - */ - public function clearHandlers() - { - $this->handlerStack = []; - return $this; - } - - public function getFrameFilters() - { - return $this->frameFilters; - } - - public function clearFrameFilters() - { - $this->frameFilters = []; - return $this; - } - - /** - * Registers this instance as an error handler. - * - * @return Run - */ - public function register() - { - if (!$this->isRegistered) { - // Workaround PHP bug 42098 - // https://bugs.php.net/bug.php?id=42098 - class_exists("\\Whoops\\Exception\\ErrorException"); - class_exists("\\Whoops\\Exception\\FrameCollection"); - class_exists("\\Whoops\\Exception\\Frame"); - class_exists("\\Whoops\\Exception\\Inspector"); - class_exists("\\Whoops\\Inspector\\InspectorFactory"); - - $this->system->setErrorHandler([$this, self::ERROR_HANDLER]); - $this->system->setExceptionHandler([$this, self::EXCEPTION_HANDLER]); - $this->system->registerShutdownFunction([$this, self::SHUTDOWN_HANDLER]); - - $this->isRegistered = true; - } - - return $this; - } - - /** - * Unregisters all handlers registered by this Whoops\Run instance. - * - * @return Run - */ - public function unregister() - { - if ($this->isRegistered) { - $this->system->restoreExceptionHandler(); - $this->system->restoreErrorHandler(); - - $this->isRegistered = false; - } - - return $this; - } - - /** - * Should Whoops allow Handlers to force the script to quit? - * - * @param bool|int $exit - * - * @return bool - */ - public function allowQuit($exit = null) - { - if (func_num_args() == 0) { - return $this->allowQuit; - } - - return $this->allowQuit = (bool) $exit; - } - - /** - * Silence particular errors in particular files. - * - * @param array|string $patterns List or a single regex pattern to match. - * @param int $levels Defaults to E_STRICT | E_DEPRECATED. - * - * @return Run - */ - public function silenceErrorsInPaths($patterns, $levels = 10240) - { - $this->silencedPatterns = array_merge( - $this->silencedPatterns, - array_map( - function ($pattern) use ($levels) { - return [ - "pattern" => $pattern, - "levels" => $levels, - ]; - }, - (array) $patterns - ) - ); - - return $this; - } - - /** - * Returns an array with silent errors in path configuration. - * - * @return array - */ - public function getSilenceErrorsInPaths() - { - return $this->silencedPatterns; - } - - /** - * Should Whoops send HTTP error code to the browser if possible? - * Whoops will by default send HTTP code 500, but you may wish to - * use 502, 503, or another 5xx family code. - * - * @param bool|int $code - * - * @return int|false - * - * @throws InvalidArgumentException - */ - public function sendHttpCode($code = null) - { - if (func_num_args() == 0) { - return $this->sendHttpCode; - } - - if (!$code) { - return $this->sendHttpCode = false; - } - - if ($code === true) { - $code = 500; - } - - if ($code < 400 || 600 <= $code) { - throw new InvalidArgumentException( - "Invalid status code '$code', must be 4xx or 5xx" - ); - } - - return $this->sendHttpCode = $code; - } - - /** - * Should Whoops exit with a specific code on the CLI if possible? - * Whoops will exit with 1 by default, but you can specify something else. - * - * @param int $code - * - * @return int - * - * @throws InvalidArgumentException - */ - public function sendExitCode($code = null) - { - if (func_num_args() == 0) { - return $this->sendExitCode; - } - - if ($code < 0 || 255 <= $code) { - throw new InvalidArgumentException( - "Invalid status code '$code', must be between 0 and 254" - ); - } - - return $this->sendExitCode = (int) $code; - } - - /** - * Should Whoops push output directly to the client? - * If this is false, output will be returned by handleException. - * - * @param bool|int $send - * - * @return bool - */ - public function writeToOutput($send = null) - { - if (func_num_args() == 0) { - return $this->sendOutput; - } - - return $this->sendOutput = (bool) $send; - } - - /** - * Handles an exception, ultimately generating a Whoops error page. - * - * @param Throwable $exception - * - * @return string Output generated by handlers. - */ - public function handleException($exception) - { - // Walk the registered handlers in the reverse order - // they were registered, and pass off the exception - $inspector = $this->getInspector($exception); - - // Capture output produced while handling the exception, - // we might want to send it straight away to the client, - // or return it silently. - $this->system->startOutputBuffering(); - - // Just in case there are no handlers: - $handlerResponse = null; - $handlerContentType = null; - - try { - foreach (array_reverse($this->handlerStack) as $handler) { - $handler->setRun($this); - $handler->setInspector($inspector); - $handler->setException($exception); - - // The HandlerInterface does not require an Exception passed to handle() - // and neither of our bundled handlers use it. - // However, 3rd party handlers may have already relied on this parameter, - // and removing it would be possibly breaking for users. - $handlerResponse = $handler->handle($exception); - - // Collect the content type for possible sending in the headers. - $handlerContentType = method_exists($handler, 'contentType') ? $handler->contentType() : null; - - if (in_array($handlerResponse, [Handler::LAST_HANDLER, Handler::QUIT])) { - // The Handler has handled the exception in some way, and - // wishes to quit execution (Handler::QUIT), or skip any - // other handlers (Handler::LAST_HANDLER). If $this->allowQuit - // is false, Handler::QUIT behaves like Handler::LAST_HANDLER - break; - } - } - - $willQuit = $handlerResponse == Handler::QUIT && $this->allowQuit(); - } finally { - $output = $this->system->cleanOutputBuffer(); - } - - // If we're allowed to, send output generated by handlers directly - // to the output, otherwise, and if the script doesn't quit, return - // it so that it may be used by the caller - if ($this->writeToOutput()) { - // @todo Might be able to clean this up a bit better - if ($willQuit) { - // Cleanup all other output buffers before sending our output: - while ($this->system->getOutputBufferLevel() > 0) { - $this->system->endOutputBuffering(); - } - - // Send any headers if needed: - if (Misc::canSendHeaders() && $handlerContentType) { - header("Content-Type: {$handlerContentType}"); - } - } - - $this->writeToOutputNow($output); - } - - if ($willQuit) { - // HHVM fix for https://github.com/facebook/hhvm/issues/4055 - $this->system->flushOutputBuffer(); - - $this->system->stopExecution( - $this->sendExitCode() - ); - } - - return $output; - } - - /** - * Converts generic PHP errors to \ErrorException instances, before passing them off to be handled. - * - * This method MUST be compatible with set_error_handler. - * - * @param int $level - * @param string $message - * @param string|null $file - * @param int|null $line - * - * @return bool - * - * @throws ErrorException - */ - public function handleError($level, $message, $file = null, $line = null) - { - if ($level & $this->system->getErrorReportingLevel()) { - foreach ($this->silencedPatterns as $entry) { - $pathMatches = (bool) preg_match($entry["pattern"], $file); - $levelMatches = $level & $entry["levels"]; - if ($pathMatches && $levelMatches) { - // Ignore the error, abort handling - // See https://github.com/filp/whoops/issues/418 - return true; - } - } - - // XXX we pass $level for the "code" param only for BC reasons. - // see https://github.com/filp/whoops/issues/267 - $exception = new ErrorException($message, /*code*/ $level, /*severity*/ $level, $file, $line); - if ($this->canThrowExceptions) { - throw $exception; - } else { - $this->handleException($exception); - } - // Do not propagate errors which were already handled by Whoops. - return true; - } - - // Propagate error to the next handler, allows error_get_last() to - // work on silenced errors. - return false; - } - - /** - * Special case to deal with Fatal errors and the like. - * - * @return void - */ - public function handleShutdown() - { - // If we reached this step, we are in shutdown handler. - // An exception thrown in a shutdown handler will not be propagated - // to the exception handler. Pass that information along. - $this->canThrowExceptions = false; - - $error = $this->system->getLastError(); - if ($error && Misc::isLevelFatal($error['type'])) { - // If there was a fatal error, - // it was not handled in handleError yet. - $this->allowQuit = false; - $this->handleError( - $error['type'], - $error['message'], - $error['file'], - $error['line'] - ); - } - } - - - /** - * @param InspectorFactoryInterface $factory - * - * @return void - */ - public function setInspectorFactory(InspectorFactoryInterface $factory) - { - $this->inspectorFactory = $factory; - } - - public function addFrameFilter($filterCallback) - { - if (!is_callable($filterCallback)) { - throw new \InvalidArgumentException(sprintf( - "A frame filter must be of type callable, %s type given.", - gettype($filterCallback) - )); - } - - $this->frameFilters[] = $filterCallback; - return $this; - } - - /** - * @param Throwable $exception - * - * @return InspectorInterface - */ - private function getInspector($exception) - { - return $this->inspectorFactory->create($exception); - } - - /** - * Resolves the giving handler. - * - * @param callable|HandlerInterface $handler - * - * @return HandlerInterface - * - * @throws InvalidArgumentException - */ - private function resolveHandler($handler) - { - if (is_callable($handler)) { - $handler = new CallbackHandler($handler); - } - - if (!$handler instanceof HandlerInterface) { - throw new InvalidArgumentException( - "Handler must be a callable, or instance of " - . "Whoops\\Handler\\HandlerInterface" - ); - } - - return $handler; - } - - /** - * Echo something to the browser. - * - * @param string $output - * - * @return Run - */ - private function writeToOutputNow($output) - { - if ($this->sendHttpCode() && Misc::canSendHeaders()) { - $this->system->setHttpResponseCode( - $this->sendHttpCode() - ); - } - - echo $output; - - return $this; - } -} diff --git a/docker/streamline-src/vendor/filp/whoops/src/Whoops/Util/TemplateHelper.php b/docker/streamline-src/vendor/filp/whoops/src/Whoops/Util/TemplateHelper.php deleted file mode 100644 index 5612c0b7..00000000 --- a/docker/streamline-src/vendor/filp/whoops/src/Whoops/Util/TemplateHelper.php +++ /dev/null @@ -1,349 +0,0 @@ - - */ - -namespace Whoops\Util; - -use Symfony\Component\VarDumper\Caster\Caster; -use Symfony\Component\VarDumper\Cloner\AbstractCloner; -use Symfony\Component\VarDumper\Cloner\VarCloner; -use Symfony\Component\VarDumper\Dumper\HtmlDumper; -use Whoops\Exception\Frame; - -/** - * Exposes useful tools for working with/in templates - */ -class TemplateHelper -{ - /** - * An array of variables to be passed to all templates - * @var array - */ - private $variables = []; - - /** - * @var HtmlDumper - */ - private $htmlDumper; - - /** - * @var HtmlDumperOutput - */ - private $htmlDumperOutput; - - /** - * @var AbstractCloner - */ - private $cloner; - - /** - * @var string - */ - private $applicationRootPath; - - public function __construct() - { - // root path for ordinary composer projects - $this->applicationRootPath = dirname(dirname(dirname(dirname(dirname(dirname(__DIR__)))))); - } - - /** - * Escapes a string for output in an HTML document - * - * @param string $raw - * @return string - */ - public function escape($raw) - { - $flags = ENT_QUOTES; - - // HHVM has all constants defined, but only ENT_IGNORE - // works at the moment - if (defined("ENT_SUBSTITUTE") && !defined("HHVM_VERSION")) { - $flags |= ENT_SUBSTITUTE; - } else { - // This is for 5.3. - // The documentation warns of a potential security issue, - // but it seems it does not apply in our case, because - // we do not blacklist anything anywhere. - $flags |= ENT_IGNORE; - } - - $raw = str_replace(chr(9), ' ', $raw); - - return htmlspecialchars($raw, $flags, "UTF-8"); - } - - /** - * Escapes a string for output in an HTML document, but preserves - * URIs within it, and converts them to clickable anchor elements. - * - * @param string $raw - * @return string - */ - public function escapeButPreserveUris($raw) - { - $escaped = $this->escape($raw); - return preg_replace( - "@([A-z]+?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.#-]*(\?\S+)?[^\.\s])?)?)@", - "$1", - $escaped - ); - } - - /** - * Makes sure that the given string breaks on the delimiter. - * - * @param string $delimiter - * @param string $s - * @return string - */ - public function breakOnDelimiter($delimiter, $s) - { - $parts = explode($delimiter, $s); - foreach ($parts as &$part) { - $part = '' . $part . ''; - } - - return implode($delimiter, $parts); - } - - /** - * Replace the part of the path that all files have in common. - * - * @param string $path - * @return string - */ - public function shorten($path) - { - if ($this->applicationRootPath != "/") { - $path = str_replace($this->applicationRootPath, '…', $path); - } - - return $path; - } - - private function getDumper() - { - if (!$this->htmlDumper && class_exists('Symfony\Component\VarDumper\Cloner\VarCloner')) { - $this->htmlDumperOutput = new HtmlDumperOutput(); - // re-use the same var-dumper instance, so it won't re-render the global styles/scripts on each dump. - $this->htmlDumper = new HtmlDumper($this->htmlDumperOutput); - - $styles = [ - 'default' => 'color:#FFFFFF; line-height:normal; font:12px "Inconsolata", "Fira Mono", "Source Code Pro", Monaco, Consolas, "Lucida Console", monospace !important; word-wrap: break-word; white-space: pre-wrap; position:relative; z-index:99999; word-break: normal', - 'num' => 'color:#BCD42A', - 'const' => 'color: #4bb1b1;', - 'str' => 'color:#BCD42A', - 'note' => 'color:#ef7c61', - 'ref' => 'color:#A0A0A0', - 'public' => 'color:#FFFFFF', - 'protected' => 'color:#FFFFFF', - 'private' => 'color:#FFFFFF', - 'meta' => 'color:#FFFFFF', - 'key' => 'color:#BCD42A', - 'index' => 'color:#ef7c61', - ]; - $this->htmlDumper->setStyles($styles); - } - - return $this->htmlDumper; - } - - /** - * Format the given value into a human readable string. - * - * @param mixed $value - * @return string - */ - public function dump($value) - { - $dumper = $this->getDumper(); - - if ($dumper) { - // re-use the same DumpOutput instance, so it won't re-render the global styles/scripts on each dump. - // exclude verbose information (e.g. exception stack traces) - if (class_exists('Symfony\Component\VarDumper\Caster\Caster')) { - $cloneVar = $this->getCloner()->cloneVar($value, Caster::EXCLUDE_VERBOSE); - // Symfony VarDumper 2.6 Caster class dont exist. - } else { - $cloneVar = $this->getCloner()->cloneVar($value); - } - - $dumper->dump( - $cloneVar, - $this->htmlDumperOutput - ); - - $output = $this->htmlDumperOutput->getOutput(); - $this->htmlDumperOutput->clear(); - - return $output; - } - - return htmlspecialchars(print_r($value, true)); - } - - /** - * Format the args of the given Frame as a human readable html string - * - * @param Frame $frame - * @return string the rendered html - */ - public function dumpArgs(Frame $frame) - { - // we support frame args only when the optional dumper is available - if (!$this->getDumper()) { - return ''; - } - - $html = ''; - $numFrames = count($frame->getArgs()); - - if ($numFrames > 0) { - $html = '
      '; - foreach ($frame->getArgs() as $j => $frameArg) { - $html .= '
    1. '. $this->dump($frameArg) .'
    2. '; - } - $html .= '
    '; - } - - return $html; - } - - /** - * Convert a string to a slug version of itself - * - * @param string $original - * @return string - */ - public function slug($original) - { - $slug = str_replace(" ", "-", $original); - $slug = preg_replace('/[^\w\d\-\_]/i', '', $slug); - return strtolower($slug); - } - - /** - * Given a template path, render it within its own scope. This - * method also accepts an array of additional variables to be - * passed to the template. - * - * @param string $template - */ - public function render($template, ?array $additionalVariables = null) - { - $variables = $this->getVariables(); - - // Pass the helper to the template: - $variables["tpl"] = $this; - - if ($additionalVariables !== null) { - $variables = array_replace($variables, $additionalVariables); - } - - call_user_func(function () { - extract(func_get_arg(1)); - require func_get_arg(0); - }, $template, $variables); - } - - /** - * Sets the variables to be passed to all templates rendered - * by this template helper. - */ - public function setVariables(array $variables) - { - $this->variables = $variables; - } - - /** - * Sets a single template variable, by its name: - * - * @param string $variableName - * @param mixed $variableValue - */ - public function setVariable($variableName, $variableValue) - { - $this->variables[$variableName] = $variableValue; - } - - /** - * Gets a single template variable, by its name, or - * $defaultValue if the variable does not exist - * - * @param string $variableName - * @param mixed $defaultValue - * @return mixed - */ - public function getVariable($variableName, $defaultValue = null) - { - return isset($this->variables[$variableName]) ? - $this->variables[$variableName] : $defaultValue; - } - - /** - * Unsets a single template variable, by its name - * - * @param string $variableName - */ - public function delVariable($variableName) - { - unset($this->variables[$variableName]); - } - - /** - * Returns all variables for this helper - * - * @return array - */ - public function getVariables() - { - return $this->variables; - } - - /** - * Set the cloner used for dumping variables. - * - * @param AbstractCloner $cloner - */ - public function setCloner($cloner) - { - $this->cloner = $cloner; - } - - /** - * Get the cloner used for dumping variables. - * - * @return AbstractCloner - */ - public function getCloner() - { - if (!$this->cloner) { - $this->cloner = new VarCloner(); - } - return $this->cloner; - } - - /** - * Set the application root path. - * - * @param string $applicationRootPath - */ - public function setApplicationRootPath($applicationRootPath) - { - $this->applicationRootPath = $applicationRootPath; - } - - /** - * Return the application root path. - * - * @return string - */ - public function getApplicationRootPath() - { - return $this->applicationRootPath; - } -} diff --git a/docker/streamline-src/vendor/graham-campbell/result-type/LICENSE b/docker/streamline-src/vendor/graham-campbell/result-type/LICENSE deleted file mode 100644 index 8e7c8988..00000000 --- a/docker/streamline-src/vendor/graham-campbell/result-type/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2020-2024 Graham Campbell - -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: - -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, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/docker/streamline-src/vendor/graham-campbell/result-type/composer.json b/docker/streamline-src/vendor/graham-campbell/result-type/composer.json deleted file mode 100644 index 32bfc81e..00000000 --- a/docker/streamline-src/vendor/graham-campbell/result-type/composer.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "graham-campbell/result-type", - "description": "An Implementation Of The Result Type", - "keywords": ["result", "result-type", "Result", "Result Type", "Result-Type", "Graham Campbell", "GrahamCampbell"], - "license": "MIT", - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - } - ], - "require": { - "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.3" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" - }, - "autoload": { - "psr-4": { - "GrahamCampbell\\ResultType\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "GrahamCampbell\\Tests\\ResultType\\": "tests/" - } - }, - "config": { - "preferred-install": "dist" - } -} diff --git a/docker/streamline-src/vendor/knplabs/knp-snappy/.github/workflows/build.yaml b/docker/streamline-src/vendor/knplabs/knp-snappy/.github/workflows/build.yaml deleted file mode 100644 index 1904583f..00000000 --- a/docker/streamline-src/vendor/knplabs/knp-snappy/.github/workflows/build.yaml +++ /dev/null @@ -1,133 +0,0 @@ -name: Build - -on: - pull_request: ~ - push: ~ - -jobs: - check: - runs-on: ubuntu-20.04 - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Setup PHP - uses: shivammathur/setup-php@v2 - - name: Validate composer.json - run: composer validate --strict --no-check-lock - cs-fixer: - runs-on: ubuntu-20.04 - name: PHP-CS-Fixer - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: '8.1' - - run: composer install --prefer-dist --no-interaction --no-progress --ansi - - run: vendor/bin/php-cs-fixer fix --diff --dry-run --verbose - tests: - runs-on: ubuntu-20.04 - strategy: - fail-fast: false - matrix: - include: - - description: 'Symfony 7.2 DEV' - php: '8.2' - symfony: '7.2.*@dev' - - description: 'Symfony 7.0' - php: '8.4' - symfony: '7.0.*' - - description: 'Symfony 7.0' - php: '8.3' - symfony: '7.0.*' - - description: 'Symfony 6.4' - php: '8.1' - symfony: '6.4.*' - - description: 'Symfony 6.0' - php: '8.3' - symfony: '6.0.*' - - description: 'Symfony 5.4' - php: '8.1' - symfony: '5.4.*' - - description: 'Symfony 5.0' - php: '8.3' - symfony: '5.0.*' - - description: 'Beta deps' - php: '8.1' - beta: true - name: PHP ${{ matrix.php }} tests (${{ matrix.description }}) - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Cache - uses: actions/cache@v4 - with: - path: ~/.composer/cache/files - key: composer-${{ matrix.php }}-${{ matrix.symfony }}-${{ matrix.composer_option }} - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php }} - - run: | - sed -ri 's/"symfony\/(.+)": "(.+)"/"symfony\/\1": "'${{ matrix.symfony }}'"/' composer.json; - if: matrix.symfony - - run: | - composer config minimum-stability dev - composer config prefer-stable true - if: matrix.beta - - name: remove cs-fixer for Symfony 7 (temporary as not-supported yet) - if: contains(matrix.symfony, '7.2.*@dev') || contains(matrix.symfony, '7.0.*') - run: | - composer remove --dev friendsofphp/php-cs-fixer pedrotroller/php-cs-custom-fixer --no-update - - run: composer update --prefer-dist --no-interaction --no-progress --ansi ${{ matrix.composer_option }} - - run: vendor/bin/phpunit - - run: vendor/bin/phpstan analyse --ansi --no-progress - tests-windows: - runs-on: windows-2022 - strategy: - fail-fast: false - matrix: - include: - - description: 'Symfony 7.2 DEV' - php: '8.2' - symfony: '7.2.*@dev' - - description: 'Symfony 7.0' - php: '8.4' - symfony: '7.0.*' - - description: 'Symfony 7.0' - php: '8.3' - symfony: '7.0.*' - - description: 'Symfony 6.4' - php: '8.1' - symfony: '6.4.*' - - description: 'Symfony 5.4' - php: '8.1' - symfony: '5.4.*' - name: "[WINDOWS] PHP ${{ matrix.php }} tests (${{ matrix.description }})" - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Cache - uses: actions/cache@v4 - with: - path: ~/.composer/cache/files - key: composer-${{ matrix.php }}-${{ matrix.symfony }}-${{ matrix.composer_option }} - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php }} - - run: | - (Get-Content composer.json) -replace '("symfony/[^"]+": )"[^"]+"', '$1"${{ matrix.symfony }}"' | Out-File -encoding ASCII composer.json - if: matrix.symfony - - run: | - composer config minimum-stability dev - composer config prefer-stable true - if: matrix.beta - - name: remove cs-fixer for Symfony 7 (temporary as not-supported yet) - if: contains(matrix.symfony, '7.2.*@dev') || contains(matrix.symfony, '7.0.*') - run: | - composer remove --dev friendsofphp/php-cs-fixer pedrotroller/php-cs-custom-fixer --no-update - - run: composer update --prefer-dist --no-interaction --no-progress --ansi ${{ matrix.composer_option }} - - run: vendor/bin/phpunit - - run: vendor/bin/phpstan analyse --ansi --no-progress diff --git a/docker/streamline-src/vendor/knplabs/knp-snappy/src/Knp/Snappy/AbstractGenerator.php b/docker/streamline-src/vendor/knplabs/knp-snappy/src/Knp/Snappy/AbstractGenerator.php deleted file mode 100644 index 529bc7cd..00000000 --- a/docker/streamline-src/vendor/knplabs/knp-snappy/src/Knp/Snappy/AbstractGenerator.php +++ /dev/null @@ -1,776 +0,0 @@ - - * @author Antoine Hérault - */ -abstract class AbstractGenerator implements GeneratorInterface, LoggerAwareInterface -{ - use LoggerAwareTrait; - - protected const ALLOWED_PROTOCOLS = ['file']; - - protected const WINDOWS_LOCAL_FILENAME_REGEX = '/^[a-z]:(?:[\\\\\/]?(?:[\w\s!#()-]+|[\.]{1,2})+)*[\\\\\/]?/i'; - - /** - * @var array - */ - public $temporaryFiles = []; - - /** - * @var string - */ - protected $temporaryFolder; - - /** - * @var null|string - */ - private $binary; - - /** - * @var array - */ - private $options = []; - - /** - * @var null|array - */ - private $env; - - /** - * @var null|int - */ - private $timeout; - - /** - * @var string - */ - private $defaultExtension; - - /** - * @param null|string $binary - * @param array $options - * @param null|array $env - */ - public function __construct($binary, array $options = [], array|null $env = null) - { - $this->configure(); - - $this->setBinary($binary); - $this->setOptions($options); - $this->env = empty($env) ? null : $env; - - if (\is_callable([$this, 'removeTemporaryFiles'])) { - \register_shutdown_function([$this, 'removeTemporaryFiles']); - } - } - - public function __destruct() - { - $this->removeTemporaryFiles(); - } - - /** - * Sets the default extension. - * Useful when letting Snappy deal with file creation. - * - * @param string $defaultExtension - * - * @return $this - */ - public function setDefaultExtension($defaultExtension) - { - $this->defaultExtension = $defaultExtension; - - return $this; - } - - /** - * Gets the default extension. - * - * @return string - */ - public function getDefaultExtension(): string - { - return $this->defaultExtension; - } - - /** - * Sets an option. Be aware that option values are NOT validated and that - * it is your responsibility to validate user inputs. - * - * @param string $name The option to set - * @param mixed $value The value (NULL to unset) - * - * @throws InvalidArgumentException - * - * @return $this - */ - public function setOption($name, $value) - { - if (!\array_key_exists($name, $this->options)) { - throw new InvalidArgumentException(\sprintf('The option \'%s\' does not exist.', $name)); - } - - $this->options[$name] = $value; - - if (null !== $this->logger) { - $this->logger->debug(\sprintf('Set option "%s".', $name), ['value' => $value]); - } - - return $this; - } - - /** - * Sets the timeout. - * - * @param null|int $timeout The timeout to set - * - * @return $this - */ - public function setTimeout($timeout) - { - $this->timeout = $timeout; - - return $this; - } - - /** - * Sets an array of options. - * - * @param array $options An associative array of options as name/value - * - * @return $this - */ - public function setOptions(array $options) - { - foreach ($options as $name => $value) { - $this->setOption($name, $value); - } - - return $this; - } - - /** - * Returns all the options. - * - * @return array - */ - public function getOptions() - { - return $this->options; - } - - /** - * {@inheritdoc} - */ - public function generate($input, $output, array $options = [], $overwrite = false) - { - $this->prepareOutput($output, $overwrite); - - $command = $this->getCommand($input, $output, $options); - - $inputFiles = \is_array($input) ? \implode('", "', $input) : $input; - - if (null !== $this->logger) { - $this->logger->info(\sprintf('Generate from file(s) "%s" to file "%s".', $inputFiles, $output), [ - 'command' => $command, - 'env' => $this->env, - 'timeout' => $this->timeout, - ]); - } - - try { - list($status, $stdout, $stderr) = $this->executeCommand($command); - $this->checkProcessStatus($status, $stdout, $stderr, $command); - $this->checkOutput($output, $command); - } catch (Exception $e) { - if (null !== $this->logger) { - $this->logger->error(\sprintf('An error happened while generating "%s".', $output), [ - 'command' => $command, - 'status' => $status ?? null, - 'stdout' => $stdout ?? null, - 'stderr' => $stderr ?? null, - ]); - } - - throw $e; - } - - if (null !== $this->logger) { - $this->logger->info(\sprintf('File "%s" has been successfully generated.', $output), [ - 'command' => $command, - 'stdout' => $stdout, - 'stderr' => $stderr, - ]); - } - } - - /** - * {@inheritdoc} - */ - public function generateFromHtml($html, $output, array $options = [], $overwrite = false) - { - $fileNames = []; - if (\is_array($html)) { - foreach ($html as $htmlInput) { - $fileNames[] = $this->createTemporaryFile($htmlInput, 'html'); - } - } else { - $fileNames[] = $this->createTemporaryFile($html, 'html'); - } - - $this->generate($fileNames, $output, $options, $overwrite); - } - - /** - * {@inheritdoc} - */ - public function getOutput($input, array $options = []) - { - $filename = $this->createTemporaryFile(null, $this->getDefaultExtension()); - - $this->generate($input, $filename, $options); - - return $this->getFileContents($filename); - } - - /** - * {@inheritdoc} - */ - public function getOutputFromHtml($html, array $options = []) - { - $fileNames = []; - if (\is_array($html)) { - foreach ($html as $htmlInput) { - $fileNames[] = $this->createTemporaryFile($htmlInput, 'html'); - } - } else { - $fileNames[] = $this->createTemporaryFile($html, 'html'); - } - - return $this->getOutput($fileNames, $options); - } - - /** - * Defines the binary. - * - * @param null|string $binary The path/name of the binary - * - * @return $this - */ - public function setBinary($binary) - { - $this->binary = $binary; - - return $this; - } - - /** - * Returns the binary. - * - * @return null|string - */ - public function getBinary() - { - return $this->binary; - } - - /** - * Returns the command for the given input and output files. - * - * @param array|string $input The input file - * @param string $output The ouput file - * @param array $options An optional array of options that will be used - * only for this command - * - * @return string - */ - public function getCommand($input, $output, array $options = []) - { - if (null === $this->binary) { - throw new LogicException('You must define a binary prior to conversion.'); - } - - $options = $this->mergeOptions($options); - - return $this->buildCommand($this->binary, $input, $output, $options); - } - - /** - * Removes all temporary files. - * - * @return void - */ - public function removeTemporaryFiles() - { - foreach ($this->temporaryFiles as $file) { - $this->unlink($file); - } - } - - /** - * Get TemporaryFolder. - * - * @return string - */ - public function getTemporaryFolder() - { - if ($this->temporaryFolder === null) { - return \sys_get_temp_dir(); - } - - return $this->temporaryFolder; - } - - /** - * Set temporaryFolder. - * - * @param string $temporaryFolder - * - * @return $this - */ - public function setTemporaryFolder($temporaryFolder) - { - $this->temporaryFolder = $temporaryFolder; - - return $this; - } - - /** - * Reset all options to their initial values. - * - * @return void - */ - public function resetOptions() - { - $this->options = []; - $this->configure(); - } - - /** - * This method must configure the media options. - * - * @return void - * - * @see AbstractGenerator::addOption() - */ - abstract protected function configure(); - - /** - * Adds an option. - * - * @param string $name The name - * @param mixed $default An optional default value - * - * @throws InvalidArgumentException - * - * @return $this - */ - protected function addOption($name, $default = null) - { - if (\array_key_exists($name, $this->options)) { - throw new InvalidArgumentException(\sprintf('The option \'%s\' already exists.', $name)); - } - - $this->options[$name] = $default; - - return $this; - } - - /** - * Adds an array of options. - * - * @param array $options - * - * @return $this - */ - protected function addOptions(array $options) - { - foreach ($options as $name => $default) { - $this->addOption($name, $default); - } - - return $this; - } - - /** - * Merges the given array of options to the instance options and returns - * the result options array. It does NOT change the instance options. - * - * @param array $options - * - * @throws InvalidArgumentException - * - * @return array - */ - protected function mergeOptions(array $options) - { - $mergedOptions = $this->options; - - foreach ($options as $name => $value) { - if (!\array_key_exists($name, $mergedOptions)) { - throw new InvalidArgumentException(\sprintf('The option \'%s\' does not exist.', $name)); - } - - $mergedOptions[$name] = $value; - } - - return $mergedOptions; - } - - /** - * Checks the specified output. - * - * @param string $output The output filename - * @param string $command The generation command - * - * @throws RuntimeException if the output file generation failed - * - * @return void - */ - protected function checkOutput($output, $command) - { - // the output file must exist - if (!$this->fileExists($output)) { - throw new RuntimeException(\sprintf('The file \'%s\' was not created (command: %s).', $output, $command)); - } - - // the output file must not be empty - if (0 === $this->filesize($output)) { - throw new RuntimeException(\sprintf('The file \'%s\' was created but is empty (command: %s).', $output, $command)); - } - } - - /** - * Checks the process return status. - * - * @param int $status The exit status code - * @param string $stdout The stdout content - * @param string $stderr The stderr content - * @param string $command The run command - * - * @throws RuntimeException if the output file generation failed - * - * @return void - */ - protected function checkProcessStatus($status, $stdout, $stderr, $command) - { - if (0 !== $status && '' !== $stderr) { - throw new RuntimeException(\sprintf('The exit status code \'%s\' says something went wrong:' . "\n" . 'stderr: "%s"' . "\n" . 'stdout: "%s"' . "\n" . 'command: %s.', $status, $stderr, $stdout, $command), $status); - } - } - - /** - * Creates a temporary file. - * The file is not created if the $content argument is null. - * - * @param null|string $content Optional content for the temporary file - * @param null|string $extension An optional extension for the filename - * - * @return string The filename - */ - protected function createTemporaryFile($content = null, $extension = null) - { - $dir = \rtrim($this->getTemporaryFolder(), \DIRECTORY_SEPARATOR); - - if (!\is_dir($dir)) { - if (false === @\mkdir($dir, 0777, true) && !\is_dir($dir)) { - throw new RuntimeException(\sprintf("Unable to create directory: %s\n", $dir)); - } - } elseif (!\is_writable($dir)) { - throw new RuntimeException(\sprintf("Unable to write in directory: %s\n", $dir)); - } - - $filename = $dir . \DIRECTORY_SEPARATOR . \uniqid('knp_snappy', true); - - if (null !== $extension) { - $filename .= '.' . $extension; - } - - if (null !== $content) { - \file_put_contents($filename, $content); - } - - $this->temporaryFiles[] = $filename; - - return $filename; - } - - /** - * Builds the command string. - * - * @param string $binary The binary path/name - * @param array|string $input Url(s) or file location(s) of the page(s) to process - * @param string $output File location to the image-to-be - * @param array $options An array of options - * - * @return string - */ - protected function buildCommand($binary, $input, $output, array $options = []) - { - $command = $binary; - $escapedBinary = \escapeshellarg($binary); - if (\is_executable($escapedBinary)) { - $command = $escapedBinary; - } - - foreach ($options as $key => $option) { - if (null !== $option && false !== $option) { - if (true === $option) { - // Dont't put '--' if option is 'toc'. - if ($key === 'toc') { - $command .= ' ' . $key; - } else { - $command .= ' --' . $key; - } - } elseif (\is_array($option)) { - if ($this->isAssociativeArray($option)) { - foreach ($option as $k => $v) { - $command .= ' --' . $key . ' ' . \escapeshellarg($k) . ' ' . \escapeshellarg($v); - } - } else { - foreach ($option as $v) { - $command .= ' --' . $key . ' ' . \escapeshellarg($v); - } - } - } else { - // Dont't add '--' if option is "cover" or "toc". - if (\in_array($key, ['toc', 'cover'])) { - $command .= ' ' . $key . ' ' . \escapeshellarg($option); - } elseif (\in_array($key, ['image-dpi', 'image-quality'])) { - $command .= ' --' . $key . ' ' . (int) $option; - } else { - $command .= ' --' . $key . ' ' . \escapeshellarg($option); - } - } - } - } - - if (\is_array($input)) { - foreach ($input as $i) { - $command .= ' ' . \escapeshellarg($i) . ' '; - } - $command .= \escapeshellarg($output); - } else { - $command .= ' ' . \escapeshellarg($input) . ' ' . \escapeshellarg($output); - } - - return $command; - } - - /** - * Return true if the array is an associative array - * and not an indexed array. - * - * @param array $array - * - * @return bool - */ - protected function isAssociativeArray(array $array) - { - return (bool) \count(\array_filter(\array_keys($array), 'is_string')); - } - - /** - * Executes the given command via shell and returns the complete output as - * a string. - * - * @param string $command - * - * @return array [status, stdout, stderr] - */ - protected function executeCommand($command) - { - if (\method_exists(Process::class, 'fromShellCommandline')) { - $process = Process::fromShellCommandline($command, null, $this->env); - } else { - $process = new Process($command, null, $this->env); - } - - if (null !== $this->timeout) { - $process->setTimeout($this->timeout); - } - - $process->run(); - - return [ - $process->getExitCode(), - $process->getOutput(), - $process->getErrorOutput(), - ]; - } - - /** - * Prepares the specified output. - * - * @param string $filename The output filename - * @param bool $overwrite Whether to overwrite the file if it already - * exist - * - * @throws FileAlreadyExistsException - * @throws RuntimeException - * @throws InvalidArgumentException - * - * @return void - */ - protected function prepareOutput($filename, $overwrite) - { - if (!$this->isProtocolAllowed($filename)) { - throw new InvalidArgumentException(\sprintf('The output file scheme is not supported. Expected one of [\'%s\'].', \implode('\', \'', self::ALLOWED_PROTOCOLS))); - } - - $directory = \dirname($filename); - - if ($this->fileExists($filename)) { - if (!$this->isFile($filename)) { - throw new InvalidArgumentException(\sprintf('The output file \'%s\' already exists and it is a %s.', $filename, $this->isDir($filename) ? 'directory' : 'link')); - } - if (false === $overwrite) { - throw new FileAlreadyExistsException(\sprintf('The output file \'%s\' already exists.', $filename)); - } - if (!$this->unlink($filename)) { - throw new RuntimeException(\sprintf('Could not delete already existing output file \'%s\'.', $filename)); - } - } elseif (!$this->isDir($directory) && !$this->mkdir($directory)) { - throw new RuntimeException(\sprintf('The output file\'s directory \'%s\' could not be created.', $directory)); - } - } - - /** - * Verifies if the given filename has a supported protocol. - * - * @param string $filename - * - * @throws InvalidArgumentException - * - * @return bool - */ - protected function isProtocolAllowed($filename) - { - if (false === $parsedFilename = \parse_url($filename)) { - throw new InvalidArgumentException('The filename is not valid.'); - } - - $protocol = isset($parsedFilename['scheme']) ? \mb_strtolower($parsedFilename['scheme']) : 'file'; - - if ( - \PHP_OS_FAMILY === 'Windows' - && \strlen($protocol) === 1 - && \preg_match(self::WINDOWS_LOCAL_FILENAME_REGEX, $filename) - ) { - $protocol = 'file'; - } - - return \in_array($protocol, self::ALLOWED_PROTOCOLS, true); - } - - /** - * Wrapper for the "file_get_contents" function. - * - * @param string $filename - * - * @return string - */ - protected function getFileContents($filename) - { - $fileContent = \file_get_contents($filename); - - if (false === $fileContent) { - throw new RuntimeException(\sprintf('Could not read file \'%s\' content.', $filename)); - } - - return $fileContent; - } - - /** - * Wrapper for the "file_exists" function. - * - * @param string $filename - * - * @return bool - */ - protected function fileExists($filename) - { - return \file_exists($filename); - } - - /** - * Wrapper for the "is_file" method. - * - * @param string $filename - * - * @return bool - */ - protected function isFile($filename) - { - return \strlen($filename) <= \PHP_MAXPATHLEN && \is_file($filename); - } - - /** - * Wrapper for the "filesize" function. - * - * @param string $filename - * - * @return int - */ - protected function filesize($filename) - { - $filesize = \filesize($filename); - - if (false === $filesize) { - throw new RuntimeException(\sprintf('Could not read file \'%s\' size.', $filename)); - } - - return $filesize; - } - - /** - * Wrapper for the "unlink" function. - * - * @param string $filename - * - * @return bool - */ - protected function unlink($filename) - { - return $this->fileExists($filename) ? \unlink($filename) : false; - } - - /** - * Wrapper for the "is_dir" function. - * - * @param string $filename - * - * @return bool - */ - protected function isDir($filename) - { - return \is_dir($filename); - } - - /** - * Wrapper for the mkdir function. - * - * @param string $pathname - * - * @return bool - */ - protected function mkdir($pathname) - { - return \mkdir($pathname, 0777, true); - } -} diff --git a/docker/streamline-src/vendor/knplabs/knp-snappy/src/Knp/Snappy/Image.php b/docker/streamline-src/vendor/knplabs/knp-snappy/src/Knp/Snappy/Image.php deleted file mode 100644 index 55dd03c4..00000000 --- a/docker/streamline-src/vendor/knplabs/knp-snappy/src/Knp/Snappy/Image.php +++ /dev/null @@ -1,82 +0,0 @@ - - * @author Antoine Hérault - */ -class Image extends AbstractGenerator -{ - /** - * {@inheritdoc} - */ - public function __construct($binary = null, array $options = [], array|null $env = null) - { - $this->setDefaultExtension('jpg'); - - parent::__construct($binary, $options, $env); - } - - /** - * {@inheritdoc} - */ - protected function configure() - { - $this->addOptions([ - 'allow' => null, // Allow the file or files from the specified folder to be loaded (repeatable) - 'bypass-proxy-for' => null, // Bypass proxy for host (repeatable) - 'cache-dir' => null, // Web cache directory - 'checkbox-checked-svg' => null, // Use this SVG file when rendering checked checkboxes - 'checked-svg' => null, // Use this SVG file when rendering unchecked checkboxes - 'cookie' => [], // Set an additional cookie (repeatable) - 'cookie-jar' => null, // Read and write cookies from and to the supplied cookie jar file - 'crop-h' => null, // Set height for cropping - 'crop-w' => null, // Set width for cropping - 'crop-x' => null, // Set x coordinate for cropping (default 0) - 'crop-y' => null, // Set y coordinate for cropping (default 0) - 'custom-header' => [], // Set an additional HTTP header (repeatable) - 'custom-header-propagation' => null, // Add HTTP headers specified by --custom-header for each resource request. - 'no-custom-header-propagation' => null, // Do not add HTTP headers specified by --custom-header for each resource request. - 'debug-javascript' => null, // Show javascript debugging output - 'no-debug-javascript' => null, // Do not show javascript debugging output (default) - 'encoding' => null, // Set the default text encoding, for input - 'format' => $this->getDefaultExtension(), // Output format - 'height' => null, // Set screen height (default is calculated from page content) (default 0) - 'images' => null, // Do load or print images (default) - 'no-images' => null, // Do not load or print images - 'disable-javascript' => null, // Do not allow web pages to run javascript - 'enable-javascript' => null, // Do allow web pages to run javascript (default) - 'javascript-delay' => null, // Wait some milliseconds for javascript finish (default 200) - 'load-error-handling' => null, // Specify how to handle pages that fail to load: abort, ignore or skip (default abort) - 'load-media-error-handling' => null, // Specify how to handle media files that fail to load: abort, ignore or skip (default ignore) - 'disable-local-file-access' => null, // Do not allowed conversion of a local file to read in other local files, unless explicitly allowed with allow - 'enable-local-file-access' => null, // Allowed conversion of a local file to read in other local files. (default) - 'minimum-font-size' => null, // Minimum font size - 'password' => null, // HTTP Authentication password - 'disable-plugins' => null, // Disable installed plugins (default) - 'enable-plugins' => null, // Enable installed plugins (plugins will likely not work) - 'post' => [], // Add an additional post field - 'post-file' => [], // Post an additional file - 'proxy' => null, // Use a proxy - 'quality' => null, // Output image quality (between 0 and 100) (default 94) - 'quiet' => null, // Be less verbose - 'radiobutton-checked-svg' => null, // Use this SVG file when rendering checked radio-buttons - 'radiobutton-svg' => null, // Use this SVG file when rendering unchecked radio-buttons - 'run-script' => null, // Run this additional javascript after the page is done loading (repeatable) - 'disable-smart-width' => null, // Use the specified width even if it is not large enough for the content - 'enable-smart-width' => null, // Extend --width to fit unbreakable content (default) - 'stop-slow-scripts' => null, // Stop slow running javascript - 'no-stop-slow-scripts' => null, // Do not stop slow running javascript (default) - 'transparent' => null, // Make the background transparent in pngs * - 'use-xserver' => null, // Use the X server (some plugins and other stuff might not work without X11) - 'user-style-sheet' => null, // Specify a user style sheet, to load with every page - 'username' => null, // HTTP Authentication username - 'width' => null, // Set screen width (default is 1024) - 'window-status' => null, // Wait until window.status is equal to this string before rendering page - 'zoom' => null, // Use this zoom factor (default 1) - ]); - } -} diff --git a/docker/streamline-src/vendor/knplabs/knp-snappy/src/Knp/Snappy/Pdf.php b/docker/streamline-src/vendor/knplabs/knp-snappy/src/Knp/Snappy/Pdf.php deleted file mode 100644 index d177dee7..00000000 --- a/docker/streamline-src/vendor/knplabs/knp-snappy/src/Knp/Snappy/Pdf.php +++ /dev/null @@ -1,245 +0,0 @@ - - * @author Antoine Hérault - */ -class Pdf extends AbstractGenerator -{ - /** - * @var array - */ - protected $optionsWithContentCheck = []; - - /** - * {@inheritdoc} - */ - public function __construct($binary = null, array $options = [], array|null $env = null) - { - $this->setDefaultExtension('pdf'); - $this->setOptionsWithContentCheck(); - - parent::__construct($binary, $options, $env); - } - - /** - * {@inheritdoc} - */ - public function generate($input, $output, array $options = [], $overwrite = false) - { - $options = $this->handleOptions($this->mergeOptions($options)); - - parent::generate($input, $output, $options, $overwrite); - } - - /** - * Handle options to transform HTML strings into temporary files containing HTML. - * - * @param array $options - * - * @return array $options Transformed options - */ - protected function handleOptions(array $options = []) - { - foreach ($options as $option => $value) { - if (null === $value) { - unset($options[$option]); - - continue; - } - - if (!empty($value) && \array_key_exists($option, $this->optionsWithContentCheck)) { - $saveToTempFile = !$this->isFile($value) && !$this->isOptionUrl($value); - $fetchUrlContent = $option === 'xsl-style-sheet' && $this->isOptionUrl($value); - - if ($saveToTempFile || $fetchUrlContent) { - $fileContent = $fetchUrlContent ? \file_get_contents($value) : $value; - $options[$option] = $this->createTemporaryFile($fileContent, $this->optionsWithContentCheck[$option]); - } - } - } - - return $options; - } - - /** - * Convert option content or url to file if it is needed. - * - * @param mixed $option - * - * @return bool - */ - protected function isOptionUrl($option) - { - return (bool) \filter_var($option, \FILTER_VALIDATE_URL); - } - - /** - * {@inheritdoc} - */ - protected function configure() - { - $this->addOptions([ - // Global options - 'collate' => null, - 'no-collate' => null, - 'cookie-jar' => null, - 'copies' => null, - 'dpi' => null, - 'extended-help' => null, - 'grayscale' => null, - 'help' => null, - 'htmldoc' => null, - 'ignore-load-errors' => null, // old v0.9 - 'image-dpi' => null, - 'image-quality' => null, - 'license' => null, - 'log-level' => null, - 'lowquality' => true, - 'manpage' => null, - 'margin-bottom' => null, - 'margin-left' => null, - 'margin-right' => null, - 'margin-top' => null, - 'orientation' => null, - 'page-height' => null, - 'page-size' => null, - 'page-width' => null, - 'no-pdf-compression' => null, - 'quiet' => null, - 'read-args-from-stdin' => null, - 'readme' => null, - 'title' => null, - 'use-xserver' => null, - 'version' => null, - // Outline options - 'dump-default-toc-xsl' => null, - 'dump-outline' => null, - 'outline' => null, - 'no-outline' => null, - 'outline-depth' => null, - 'output-format' => null, - // Page options - 'allow' => null, - 'background' => null, - 'no-background' => null, - 'bypass-proxy-for' => null, - 'cache-dir' => null, - 'checkbox-checked-svg' => null, - 'checkbox-svg' => null, - 'cookie' => null, - 'custom-header' => null, - 'custom-header-propagation' => null, - 'no-custom-header-propagation' => null, - 'debug-javascript' => null, - 'no-debug-javascript' => null, - 'default-header' => null, - 'encoding' => null, - 'disable-external-links' => null, - 'enable-external-links' => null, - 'disable-forms' => null, - 'enable-forms' => null, - 'images' => null, - 'no-images' => null, - 'disable-internal-links' => null, - 'enable-internal-links' => null, - 'disable-javascript' => null, - 'enable-javascript' => null, - 'javascript-delay' => null, - 'keep-relative-links' => null, - 'load-error-handling' => null, - 'load-media-error-handling' => null, - 'disable-local-file-access' => null, - 'enable-local-file-access' => null, - 'minimum-font-size' => null, - 'exclude-from-outline' => null, - 'include-in-outline' => null, - 'page-offset' => null, - 'password' => null, - 'disable-plugins' => null, - 'enable-plugins' => null, - 'post' => null, - 'post-file' => null, - 'print-media-type' => null, - 'no-print-media-type' => null, - 'proxy' => null, - 'proxy-hostname-lookup' => null, - 'radiobutton-checked-svg' => null, - 'radiobutton-svg' => null, - 'redirect-delay' => null, // old v0.9 - 'resolve-relative-links' => null, - 'run-script' => null, - 'disable-smart-shrinking' => null, - 'enable-smart-shrinking' => null, - 'ssl-crt-path' => null, - 'ssl-key-password' => null, - 'ssl-key-path' => null, - 'stop-slow-scripts' => null, - 'no-stop-slow-scripts' => null, - 'disable-toc-back-links' => null, - 'enable-toc-back-links' => null, - 'user-style-sheet' => null, - 'username' => null, - 'viewport-size' => null, - 'window-status' => null, - 'zoom' => null, - // Headers and footer options - 'footer-center' => null, - 'footer-font-name' => null, - 'footer-font-size' => null, - 'footer-html' => null, - 'footer-left' => null, - 'footer-line' => null, - 'no-footer-line' => null, - 'footer-right' => null, - 'footer-spacing' => null, - 'header-center' => null, - 'header-font-name' => null, - 'header-font-size' => null, - 'header-html' => null, - 'header-left' => null, - 'header-line' => null, - 'no-header-line' => null, - 'header-right' => null, - 'header-spacing' => null, - 'replace' => null, - // Cover object - 'cover' => null, - // TOC object - 'toc' => null, - // TOC options - 'disable-dotted-lines' => null, - 'toc-depth' => null, // old v0.9 - 'toc-font-name' => null, // old v0.9 - 'toc-l1-font-size' => null, // old v0.9 - 'toc-header-text' => null, - 'toc-header-font-name' => null, // old v0.9 - 'toc-header-font-size' => null, // old v0.9 - 'toc-level-indentation' => null, - 'disable-toc-links' => null, - 'toc-text-size-shrink' => null, - 'xsl-style-sheet' => null, - ]); - } - - /** - * Array with options which require to store the content of the option before passing it to wkhtmltopdf. - * - * @return $this - */ - protected function setOptionsWithContentCheck() - { - $this->optionsWithContentCheck = [ - 'header-html' => 'html', - 'footer-html' => 'html', - 'cover' => 'html', - 'xsl-style-sheet' => 'xsl', - ]; - - return $this; - } -} diff --git a/docker/streamline-src/vendor/laracasts/flash/composer.json b/docker/streamline-src/vendor/laracasts/flash/composer.json deleted file mode 100644 index bb74320e..00000000 --- a/docker/streamline-src/vendor/laracasts/flash/composer.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "laracasts/flash", - "description": "Easy flash notifications", - "license": "MIT", - "authors": [ - { - "name": "Jeffrey Way", - "email": "jeffrey@laracasts.com" - } - ], - "require": { - "php": ">=5.4.0", - "illuminate/support": "~5.0|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0" - }, - "require-dev": { - "mockery/mockery": "dev-master", - "phpunit/phpunit": "^6.1|^9.5.10|^10.5" - }, - "autoload": { - "psr-0": { - "Laracasts\\Flash": "src/" - }, - "files": [ - "src/Laracasts/Flash/functions.php" - ] - }, - "minimum-stability": "stable", - "extra": { - "laravel": { - "providers": [ - "Laracasts\\Flash\\FlashServiceProvider" - ], - "aliases": { - "Flash": "Laracasts\\Flash\\Flash" - } - } - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/CHANGELOG.md b/docker/streamline-src/vendor/laravel/framework/CHANGELOG.md deleted file mode 100644 index 03ba537c..00000000 --- a/docker/streamline-src/vendor/laravel/framework/CHANGELOG.md +++ /dev/null @@ -1,1461 +0,0 @@ -# Release Notes for 10.x - -## [Unreleased](https://github.com/laravel/framework/compare/v10.48.24...10.x) - -## [v10.48.24](https://github.com/laravel/framework/compare/v10.48.23...v10.48.24) - 2024-11-20 - -## [v10.48.23](https://github.com/laravel/framework/compare/v10.48.22...v10.48.23) - 2024-11-12 - -* [10.x] Ensure headers are only attached to illuminate responses by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/53019 -* [10.x] Fix append and prepend batch to chain by [@Bencute](https://github.com/Bencute) in https://github.com/laravel/framework/pull/53455 - -## [v10.48.22](https://github.com/laravel/framework/compare/v10.48.20...v10.48.22) - 2024-09-12 - -## [v10.48.20](https://github.com/laravel/framework/compare/v10.48.19...v10.48.20) - 2024-08-09 - -* [10.x] fix: prevent casting empty string to array from triggering json error by [@calebdw](https://github.com/calebdw) in https://github.com/laravel/framework/pull/52415 - -## [v10.48.19](https://github.com/laravel/framework/compare/v10.48.18...v10.48.19) - 2024-08-06 - -* Add compatible query type to `Model::resolveRouteBindingQuery` by [@sebj54](https://github.com/sebj54) in https://github.com/laravel/framework/pull/52339 -* [10.x] Fix `Factory::afterCreating` callable argument type by [@villfa](https://github.com/villfa) in https://github.com/laravel/framework/pull/52335 -* [10.x] backport #52204 by [@calebdw](https://github.com/calebdw) in https://github.com/laravel/framework/pull/52389 -* [10.x] In MySQL, harvest last insert ID immediately after query is executed by [@piurafunk](https://github.com/piurafunk) in https://github.com/laravel/framework/pull/52390 - -## [v10.48.18](https://github.com/laravel/framework/compare/v10.48.17...v10.48.18) - 2024-07-30 - -* [10.x] backport #52188 by [@calebdw](https://github.com/calebdw) in https://github.com/laravel/framework/pull/52293 -* [10.x] Fix runPaginationCountQuery not working properly for union queries by [@chinleung](https://github.com/chinleung) in https://github.com/laravel/framework/pull/52314 - -## [v10.48.17](https://github.com/laravel/framework/compare/v10.48.16...v10.48.17) - 2024-07-23 - -* [10.x] Fix PHP_CLI_SERVER_WORKERS warning by suppressing it by [@pelomedusa](https://github.com/pelomedusa) in https://github.com/laravel/framework/pull/52094 -* [10.x] Backport #51615 by [@GrahamCampbell](https://github.com/GrahamCampbell) in https://github.com/laravel/framework/pull/52215 - -## [v10.48.16](https://github.com/laravel/framework/compare/v10.48.15...v10.48.16) - 2024-07-09 - -* [10.x] Fix Http::retry so that throw is respected for call signature Http::retry([1,2], throw: false) by [@paulyoungnb](https://github.com/paulyoungnb) in https://github.com/laravel/framework/pull/52002 -* [10.x] Set application_name and character set as PostgreSQL DSN string by [@sunaoka](https://github.com/sunaoka) in https://github.com/laravel/framework/pull/51985 - -## [v10.48.15](https://github.com/laravel/framework/compare/v10.48.14...v10.48.15) - 2024-07-02 - -* [10.x] Set previous exception on `HttpResponseException` by [@hafezdivandari](https://github.com/hafezdivandari) in https://github.com/laravel/framework/pull/51986 - -## [v10.48.14](https://github.com/laravel/framework/compare/v10.48.13...v10.48.14) - 2024-06-21 - -* [10.x] Fixes unable to call another command as a initialized instance of `Command` class by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/51824 -* [10.x] fix handle `shift()` on an empty collection by [@Treggats](https://github.com/Treggats) in https://github.com/laravel/framework/pull/51841 -* [10.x] Ensure`schema:dump` will dump the migrations table only if it exists by [@NickSdot](https://github.com/NickSdot) in https://github.com/laravel/framework/pull/51827 - -## [v10.48.13](https://github.com/laravel/framework/compare/v10.48.12...v10.48.13) - 2024-06-18 - -* [10.x] Fix typo in return comment of createSesTransport method by [@zds-s](https://github.com/zds-s) in https://github.com/laravel/framework/pull/51688 -* [10.x] Fix collection shift less than one item by [@faissaloux](https://github.com/faissaloux) in https://github.com/laravel/framework/pull/51686 -* [10.x] Turn `Enumerable unless()` $callback parameter optional by [@faissaloux](https://github.com/faissaloux) in https://github.com/laravel/framework/pull/51701 -* Revert "[10.x] Turn `Enumerable unless()` $callback parameter optional" by [@taylorotwell](https://github.com/taylorotwell) in https://github.com/laravel/framework/pull/51707 - -## [v10.48.12](https://github.com/laravel/framework/compare/v10.48.11...v10.48.12) - 2024-05-28 - -* [10.x] Fix typo by [@Issei0804-ie](https://github.com/Issei0804-ie) in https://github.com/laravel/framework/pull/51535 -* [10.x] Fix SQL Server detection in database store by [@staudenmeir](https://github.com/staudenmeir) in https://github.com/laravel/framework/pull/51547 -* [10.x] - Fix batch list loading in Horizon when serialization error by [@jeffortegad](https://github.com/jeffortegad) in https://github.com/laravel/framework/pull/51551 -* [10.x] Fixes explicit route binding with `BackedEnum` by [@CAAHS](https://github.com/CAAHS) in https://github.com/laravel/framework/pull/51586 - -## [v10.48.11](https://github.com/laravel/framework/compare/v10.48.10...v10.48.11) - 2024-05-21 - -* [10.x] Backport: Fix SesV2Transport to use correct `EmailTags` argument by [@Tietew](https://github.com/Tietew) in https://github.com/laravel/framework/pull/51352 -* [10.x] Fix PHPDoc typo by [@staudenmeir](https://github.com/staudenmeir) in https://github.com/laravel/framework/pull/51390 -* [10.x] Fix `apa` on non ASCII characters by [@faissaloux](https://github.com/faissaloux) in https://github.com/laravel/framework/pull/51428 -* [10.x] Fixes view engine resolvers leaking memory by [@nunomaduro](https://github.com/nunomaduro) in https://github.com/laravel/framework/pull/51450 -* [10.x] Do not use `app()` Foundation helper on `ViewServiceProvider` by [@rodrigopedra](https://github.com/rodrigopedra) in https://github.com/laravel/framework/pull/51522 - -## [v10.48.10](https://github.com/laravel/framework/compare/v10.48.9...v10.48.10) - 2024-04-30 - -* [10.x] Fix typo in signed URL tampering tests by @Krisell in https://github.com/laravel/framework/pull/51238 -* [10.x] Add "Server has gone away" to DetectsLostConnection by @Jubeki in https://github.com/laravel/framework/pull/51241 -* [10.x] Fix support for the LARAVEL_STORAGE_PATH env var (#51238) by @dunglas in https://github.com/laravel/framework/pull/51243 - -## [v10.48.9](https://github.com/laravel/framework/compare/v10.48.8...v10.48.9) - 2024-04-23 - -* [10.x] Binding order is incorrect when using cursor paginate with multiple unions with a where by [@thijsvdanker](https://github.com/thijsvdanker) in https://github.com/laravel/framework/pull/50884 -* [10.x] Fix cursor paginate with union and column alias by [@thijsvdanker](https://github.com/thijsvdanker) in https://github.com/laravel/framework/pull/50882 -* [10.x] Address Null Parameter Deprecations in UrlGenerator by [@aldobarr](https://github.com/aldobarr) in https://github.com/laravel/framework/pull/51148 - -## [v10.48.8](https://github.com/laravel/framework/compare/v10.48.7...v10.48.8) - 2024-04-17 - -* [10.x] Fix error when using `orderByRaw()` in query before using `cursorPaginate()` by @axlon in https://github.com/laravel/framework/pull/51023 -* [10.x] Database layer fixes by @saadsidqui in https://github.com/laravel/framework/pull/49787 - -## [v10.48.7](https://github.com/laravel/framework/compare/v10.48.6...v10.48.7) - 2024-04-10 - -* Fix more query builder methods by [@taylorotwell](https://github.com/taylorotwell) in https://github.com/laravel/framework/commit/95ef230339b15321493a08327f250c0760c95376 - -## [v10.48.6](https://github.com/laravel/framework/compare/v10.48.5...v10.48.6) - 2024-04-10 - -* [10.x] Added eachById and chunkByIdDesc to BelongsToMany by [@lonnylot](https://github.com/lonnylot) in https://github.com/laravel/framework/pull/50991 - -## [v10.48.5](https://github.com/laravel/framework/compare/v10.48.4...v10.48.5) - 2024-04-09 - -* [10.x] Prevent Redis connection error report flood on queue worker by [@kasus](https://github.com/kasus) in https://github.com/laravel/framework/pull/50812 -* [10.x] Laravel 10x optional withSize for hasTable by [@apspan](https://github.com/apspan) in https://github.com/laravel/framework/pull/50888 -* [10.x] Add `serializeAndRestore()` to `NotificationFake` by [@dbpolito](https://github.com/dbpolito) in https://github.com/laravel/framework/pull/50935 - -## [v10.48.4](https://github.com/laravel/framework/compare/v10.48.3...v10.48.4) - 2024-03-21 - -* [10.x] Fix `Collection::concat()` return type by @axlon in https://github.com/laravel/framework/pull/50669 -* [10.x] Fix command alias registration and usage by @crynobone in https://github.com/laravel/framework/pull/50695 - -## [v10.48.3](https://github.com/laravel/framework/compare/v10.48.2...v10.48.3) - 2024-03-15 - -- Re-tag version - -## [v10.48.2](https://github.com/laravel/framework/compare/v10.48.1...v10.48.2) - 2024-03-12 - -* [10.x] Update mockery conflict to just disallow the broken version by [@GrahamCampbell](https://github.com/GrahamCampbell) in https://github.com/laravel/framework/pull/50472 -* [10.x] Conflict with specific release by [@driesvints](https://github.com/driesvints) in https://github.com/laravel/framework/pull/50473 -* [10.x] Fix for attributes being escaped on Dynamic Blade Components by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/laravel/framework/pull/50471 -* [10.x] Revert PR 50403 by [@driesvints](https://github.com/driesvints) in https://github.com/laravel/framework/pull/50482 - -## [v10.48.1](https://github.com/laravel/framework/compare/v10.48.0...v10.48.1) - 2024-03-12 - -* [10.x] Add conflict for Mockery v1.6.8 by [@driesvints](https://github.com/driesvints) in https://github.com/laravel/framework/pull/50468 - -## [v10.48.0](https://github.com/laravel/framework/compare/v10.47.0...v10.48.0) - 2024-03-12 - -* fix: allow null, string and string array as allowed tags by [@maartenpaauw](https://github.com/maartenpaauw) in https://github.com/laravel/framework/pull/50409 -* [10.x] Allow `Expression` at more places in Query Builder by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/laravel/framework/pull/50402 -* [10.x] Sleep syncing by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/50392 -* [10.x] Cleaning Trait on multi-lines by [@gcazin](https://github.com/gcazin) in https://github.com/laravel/framework/pull/50413 -* fix: incomplete type for Builder::from property by [@sebj54](https://github.com/sebj54) in https://github.com/laravel/framework/pull/50426 -* [10.x] After commit callback throwing an exception causes broken transactions afterwards by [@oprypkhantc](https://github.com/oprypkhantc) in https://github.com/laravel/framework/pull/50423 -* [10.x] Anonymous component bound attribute values are evaluated twice by [@danharrin](https://github.com/danharrin) in https://github.com/laravel/framework/pull/50403 -* [10.x] Fix for sortByDesc ignoring multiple attributes by [@TWithers](https://github.com/TWithers) in https://github.com/laravel/framework/pull/50431 -* [10.x] Allow sync with carbon to be set from fake method by [@abenerd](https://github.com/abenerd) in https://github.com/laravel/framework/pull/50450 -* [10.x] Improves `Illuminate\Mail\Mailables\Envelope` docblock by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/50448 -* [10.x] Incorrect return in `FileSystem.php` by [@gcazin](https://github.com/gcazin) in https://github.com/laravel/framework/pull/50459 -* [10.x] fix return types by [@imahmood](https://github.com/imahmood) in https://github.com/laravel/framework/pull/50461 -* fix: phpstan issue - right side of || always false by [@Carnicero90](https://github.com/Carnicero90) in https://github.com/laravel/framework/pull/50453 - -## [v10.47.0](https://github.com/laravel/framework/compare/v10.46.0...v10.47.0) - 2024-03-05 - -* [10.x] Allow for relation key to be an enum by [@AJenbo](https://github.com/AJenbo) in https://github.com/laravel/framework/pull/50311 -* FIx for "empty" strings passed to Str::apa() by [@tiagof](https://github.com/tiagof) in https://github.com/laravel/framework/pull/50335 -* [10.x] Fixed header mail text component to not use markdown by [@dmyers](https://github.com/dmyers) in https://github.com/laravel/framework/pull/50332 -* [10.x] Add test for the "empty strings in `Str::apa()`" fix by [@osbre](https://github.com/osbre) in https://github.com/laravel/framework/pull/50340 -* [10.x] Fix the cache cannot expire cache with `0` TTL by [@kayw-geek](https://github.com/kayw-geek) in https://github.com/laravel/framework/pull/50359 -* [10.x] Add fail on timeout to queue listener by [@saeedhosseiinii](https://github.com/saeedhosseiinii) in https://github.com/laravel/framework/pull/50352 -* [10.x] Support sort option flags on sortByMany Collections by [@TWithers](https://github.com/TWithers) in https://github.com/laravel/framework/pull/50269 -* [10.x] Add `whereAll` and `whereAny` methods to the query builder by [@musiermoore](https://github.com/musiermoore) in https://github.com/laravel/framework/pull/50344 -* [10.x] Adds Reverb broadcasting driver by [@joedixon](https://github.com/joedixon) in https://github.com/laravel/framework/pull/50088 - -## [v10.46.0](https://github.com/laravel/framework/compare/v10.45.1...v10.46.0) - 2024-02-27 - -* [10.x] Ensure lazy-loading for trashed morphTo relations works by [@nuernbergerA](https://github.com/nuernbergerA) in https://github.com/laravel/framework/pull/50176 -* [10.x] Arr::select not working when $keys is a string by [@Sicklou](https://github.com/Sicklou) in https://github.com/laravel/framework/pull/50169 -* [10.x] Added passing loaded relationship to value callback by [@dkulyk](https://github.com/dkulyk) in https://github.com/laravel/framework/pull/50167 -* [10.x] Fix optional charset and collation when creating database by [@GrahamCampbell](https://github.com/GrahamCampbell) in https://github.com/laravel/framework/pull/50168 -* [10.x] update doc block in PendingProcess.php by [@saMahmoudzadeh](https://github.com/saMahmoudzadeh) in https://github.com/laravel/framework/pull/50198 -* [10.x] Fix Accepting nullable Parameters, updated doc block, and null pointer exception handling in batchable trait by [@saMahmoudzadeh](https://github.com/saMahmoudzadeh) in https://github.com/laravel/framework/pull/50209 -* Make GuardsAttributes fillable property DocBlock more specific by [@liamduckett](https://github.com/liamduckett) in https://github.com/laravel/framework/pull/50229 -* [10.x] Add only and except methods to Enum validation rule by [@Anton5360](https://github.com/Anton5360) in https://github.com/laravel/framework/pull/50226 -* [10.x] Fixes on nesting operations performed while applying scopes. by [@Guilhem-DELAITRE](https://github.com/Guilhem-DELAITRE) in https://github.com/laravel/framework/pull/50207 -* [10.x] Custom RateLimiter increase by [@khepin](https://github.com/khepin) in https://github.com/laravel/framework/pull/50197 -* [10.x] Add Lateral Join to Query Builder by [@Bakke](https://github.com/Bakke) in https://github.com/laravel/framework/pull/50050 -* [10.x] Update return type by [@AmirRezaM75](https://github.com/AmirRezaM75) in https://github.com/laravel/framework/pull/50252 -* [10.x] Fix dockblock by [@michaelnabil230](https://github.com/michaelnabil230) in https://github.com/laravel/framework/pull/50259 -* [10.x] Add `Conditionable` in enum rule by [@michaelnabil230](https://github.com/michaelnabil230) in https://github.com/laravel/framework/pull/50257 -* [10.x] Update Facade::$app to nullable by [@villfa](https://github.com/villfa) in https://github.com/laravel/framework/pull/50260 -* [10.x] Truncate sqlite table name with prefix by [@kitloong](https://github.com/kitloong) in https://github.com/laravel/framework/pull/50251 -* Correction comment for Str::orderedUuid() - https://github.com/larave… by [@wq9578](https://github.com/wq9578) in https://github.com/laravel/framework/pull/50268 - -## [v10.45.1](https://github.com/laravel/framework/compare/v10.45.0...v10.45.1) - 2024-02-21 - -* Fix typehint for ResetPassword::toMailUsing() by [@KKSzymanowski](https://github.com/KKSzymanowski) in https://github.com/laravel/framework/pull/50163 -* [10.x] Fix Process::fake() never matching multi-line commands by [@SjorsO](https://github.com/SjorsO) in https://github.com/laravel/framework/pull/50164 - -## [v10.45.0](https://github.com/laravel/framework/compare/v10.44.0...v10.45.0) - 2024-02-20 - -* [10.x] Update `Stringable` phpdoc by [@milwad-dev](https://github.com/milwad-dev) in https://github.com/laravel/framework/pull/50075 -* [10.x] Allow `Collection::select()` to work on `ArrayAccess` by [@axlon](https://github.com/axlon) in https://github.com/laravel/framework/pull/50072 -* [10.x] Add `before` to the `PendingBatch` by [@xiCO2k](https://github.com/xiCO2k) in https://github.com/laravel/framework/pull/50058 -* [10.x] Adjust rules call sequence by [@driesvints](https://github.com/driesvints) in https://github.com/laravel/framework/pull/50084 -* [10.x] Fixes `Illuminate\Support\Str::fromBase64()` return type by [@SamAsEnd](https://github.com/SamAsEnd) in https://github.com/laravel/framework/pull/50108 -* [10.x] Actually fix fromBase64 return type by [@GrahamCampbell](https://github.com/GrahamCampbell) in https://github.com/laravel/framework/pull/50113 -* [10.x] Fix warning and deprecation for Str::api by [@driesvints](https://github.com/driesvints) in https://github.com/laravel/framework/pull/50114 -* [10.x] Mark model instanse as not exists on deleting MorphPivot relation. by [@dkulyk](https://github.com/dkulyk) in https://github.com/laravel/framework/pull/50135 -* [10.x] Adds Tappable and Conditionable to Relation class by [@DarkGhostHunter](https://github.com/DarkGhostHunter) in https://github.com/laravel/framework/pull/50124 -* [10.x] Added getQualifiedMorphTypeName to MorphToMany by [@dkulyk](https://github.com/dkulyk) in https://github.com/laravel/framework/pull/50153 - -## [v10.44.0](https://github.com/laravel/framework/compare/v10.43.0...v10.44.0) - 2024-02-13 - -* [10.x] Fix empty request for HTTP connection exception by [@driesvints](https://github.com/driesvints) in https://github.com/laravel/framework/pull/49924 -* [10.x] Add Collection::select() method by [@morrislaptop](https://github.com/morrislaptop) in https://github.com/laravel/framework/pull/49845 -* [10.x] Refactor `getPreviousUrlFromSession` method in UrlGenerator by [@milwad-dev](https://github.com/milwad-dev) in https://github.com/laravel/framework/pull/49944 -* [10.x] Add POSIX compliant cleanup to artisan serve by [@Tofandel](https://github.com/Tofandel) in https://github.com/laravel/framework/pull/49943 -* [10.x] Fix infinite loop when global scopes query contains aggregates by [@mateusjunges](https://github.com/mateusjunges) in https://github.com/laravel/framework/pull/49972 -* [10.x] Adds PHPUnit 11 as conflict by [@nunomaduro](https://github.com/nunomaduro) in https://github.com/laravel/framework/pull/49957 -* Revert "[10.x] fix Before/After validation rules" by [@taylorotwell](https://github.com/taylorotwell) in https://github.com/laravel/framework/pull/50013 -* [10.x] Fix the phpdoc for replaceMatches in Str and Stringable helpers by [@joke2k](https://github.com/joke2k) in https://github.com/laravel/framework/pull/49990 -* [10.x] Added `setAbly()` method for `AblyBroadcaster` by [@Rijoanul-Shanto](https://github.com/Rijoanul-Shanto) in https://github.com/laravel/framework/pull/49981 -* [10.x] Fix in appendExceptionToException method exception type check by [@t1nkl](https://github.com/t1nkl) in https://github.com/laravel/framework/pull/49958 -* [10.x] DB command: add sqlcmd -C flag when 'trust_server_certificate' is set by [@hulkur](https://github.com/hulkur) in https://github.com/laravel/framework/pull/49952 -* Allows Setup and Teardown actions to be reused in alternative TestCase for Laravel by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/49973 -* [10.x] Add `toBase64()` and `fromBase64()` methods to Stringable and Str classes by [@mtownsend5512](https://github.com/mtownsend5512) in https://github.com/laravel/framework/pull/49984 -* [10.x] Allows to defer resolving pcntl only if it's available by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/50024 -* [10.x] Fixes missing `Throwable` import and handle if `originalExceptionHandler` or `originalDeprecationHandler` property isn't used by alternative TestCase by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/50021 -* [10.x] Type hinting for conditional validation rules by [@lorenzolosa](https://github.com/lorenzolosa) in https://github.com/laravel/framework/pull/50017 -* [10.x] Introduce new `Arr::take()` helper by [@ryangjchandler](https://github.com/ryangjchandler) in https://github.com/laravel/framework/pull/50015 -* [10.x] Improved Handling of Empty Component Slots with HTML Comments or Line Breaks by [@comes](https://github.com/comes) in https://github.com/laravel/framework/pull/49966 -* [10.x] Introduce Observe attribute for models by [@emargareten](https://github.com/emargareten) in https://github.com/laravel/framework/pull/49843 -* [10.x] Add ScopedBy attribute for models by [@emargareten](https://github.com/emargareten) in https://github.com/laravel/framework/pull/50034 -* [10.x] Update reserved names in `GeneratorCommand` by [@xurshudyan](https://github.com/xurshudyan) in https://github.com/laravel/framework/pull/50043 -* [10.x] fix Validator::validated get nullable array by [@helitik](https://github.com/helitik) in https://github.com/laravel/framework/pull/50056 -* [10.x] Pass Herd specific env variables to "artisan serve" by [@mpociot](https://github.com/mpociot) in https://github.com/laravel/framework/pull/50069 -* Remove regex case insensitivity modifier in UUID detection to speed it up slightly by [@maximal](https://github.com/maximal) in https://github.com/laravel/framework/pull/50067 -* [10.x] HTTP retry method can accept array as first param by [@me-shaon](https://github.com/me-shaon) in https://github.com/laravel/framework/pull/50064 -* [10.x] Fix DB::afterCommit() broken in tests using DatabaseTransactions by [@oprypkhantc](https://github.com/oprypkhantc) in https://github.com/laravel/framework/pull/50068 - -## [v10.43.0](https://github.com/laravel/framework/compare/v10.42.0...v10.43.0) - 2024-01-30 - -* [10.x] Add storage:unlink command by [@salkovmx](https://github.com/salkovmx) in https://github.com/laravel/framework/pull/49795 -* [10.x] Unify `\Illuminate\Log\LogManager` method definition comments with `\Psr\Logger\Interface` by [@eusonlito](https://github.com/eusonlito) in https://github.com/laravel/framework/pull/49805 -* [10.x] class-name string argument for global scopes by [@emargareten](https://github.com/emargareten) in https://github.com/laravel/framework/pull/49802 -* [10.x] Add `hasIndex()` and minor Schema enhancements by [@hafezdivandari](https://github.com/hafezdivandari) in https://github.com/laravel/framework/pull/49796 -* [10.x] Do not touch `BelongsToMany` relation when using `withoutTouching` by [@mateusjunges](https://github.com/mateusjunges) in https://github.com/laravel/framework/pull/49798 -* [10.x] Check properties on mailables are initialized before sharing with the view by [@j3j5](https://github.com/j3j5) in https://github.com/laravel/framework/pull/49813 -* [10.x] Remove duplicate actions/checkout from queue workflow by [@Jubeki](https://github.com/Jubeki) in https://github.com/laravel/framework/pull/49828 -* [10.x] Add `insertOrIgnoreUsing` for Eloquent by [@trovster](https://github.com/trovster) in https://github.com/laravel/framework/pull/49827 -* [10.x] Make `hasIndex()` Order-sensitive by [@hafezdivandari](https://github.com/hafezdivandari) in https://github.com/laravel/framework/pull/49840 -* [10.x] Release action by [@driesvints](https://github.com/driesvints) in https://github.com/laravel/framework/pull/49838 -* [10.x] Add MariaDb1060Platform by [@driesvints](https://github.com/driesvints) in https://github.com/laravel/framework/pull/49848 -* [10.x] Unified Pivot and Model Doc Block `$guarded` by [@eusonlito](https://github.com/eusonlito) in https://github.com/laravel/framework/pull/49851 -* [10.x] Introducing `beforeStartingTransaction` callback and use it in `LazilyRefreshDatabase` by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/laravel/framework/pull/49853 -* [10.x] fix password max validation message by [@MrPunyapal](https://github.com/MrPunyapal) in https://github.com/laravel/framework/pull/49861 -* [10.x] Fix validation message used for max file size by [@mateusjunges](https://github.com/mateusjunges) in https://github.com/laravel/framework/pull/49879 -* Update README.md by [@foremtehan](https://github.com/foremtehan) in https://github.com/laravel/framework/pull/49878 -* [10.x] Adds `FormRequest[@getRules](https://github.com/getRules)()` method by [@cosmastech](https://github.com/cosmastech) in https://github.com/laravel/framework/pull/49860 -* [10.x] add addGlobalScopes method by [@emargareten](https://github.com/emargareten) in https://github.com/laravel/framework/pull/49880 -* [10.x] Allow brick/math 0.12 by [@LogicSatinn](https://github.com/LogicSatinn) in https://github.com/laravel/framework/pull/49883 -* [10.x] Add support for streamed JSON Response by [@pelmered](https://github.com/pelmered) in https://github.com/laravel/framework/pull/49873 -* [10.x] Using the native fopen exception in LockableFile.php by [@eusonlito](https://github.com/eusonlito) in https://github.com/laravel/framework/pull/49895 -* [10.x] Fix LazilyRefreshDatabase when testing artisan commands by [@iamgergo](https://github.com/iamgergo) in https://github.com/laravel/framework/pull/49914 -* [10.x] Fix expressions in with-functions doing aggregates by [@tpetry](https://github.com/tpetry) in https://github.com/laravel/framework/pull/49912 -* [10.x] Fix redis tag entries never becoming stale if cache ttl is past time by [@jagers](https://github.com/jagers) in https://github.com/laravel/framework/pull/49864 -* [10.x] Fix - The `Translator` may incorrectly report the locale of a missing translation key by [@VicGUTT](https://github.com/VicGUTT) in https://github.com/laravel/framework/pull/49900 -* [10.x] fix Before/After validation rules by [@MrPunyapal](https://github.com/MrPunyapal) in https://github.com/laravel/framework/pull/49871 - -## [v10.42.0](https://github.com/laravel/framework/compare/v10.41.0...v10.42.0) - 2024-01-23 - -* [10.x] Switch to hash_equals in `File::hasSameHash()` by [@simonhamp](https://github.com/simonhamp) in https://github.com/laravel/framework/pull/49721 -* [10.x] fix Rule::unless for callable $condition by [@dbakan](https://github.com/dbakan) in https://github.com/laravel/framework/pull/49726 -* [10.x] Adds JobQueueing event by [@dmason30](https://github.com/dmason30) in https://github.com/laravel/framework/pull/49722 -* [10.x] Fix decoding issue in MailLogTransport by [@rojtjo](https://github.com/rojtjo) in https://github.com/laravel/framework/pull/49727 -* [10.x] Implement "max" validation rule for passwords by [@angelej](https://github.com/angelej) in https://github.com/laravel/framework/pull/49739 -* [10.x] Add multiple channels/routes to AnonymousNotifiable at once by [@iamgergo](https://github.com/iamgergo) in https://github.com/laravel/framework/pull/49745 -* [10.x] Sort service providers alphabetically by [@buismaarten](https://github.com/buismaarten) in https://github.com/laravel/framework/pull/49762 -* [10.x] Global default options for the http factory by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/49767 -* [10.x] Only use `Carbon` if accessed from Laravel or also uses `illuminate/support` by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/49772 -* [10.x] Add `Str::unwrap` by [@stevebauman](https://github.com/stevebauman) in https://github.com/laravel/framework/pull/49779 -* [10.x] Allow Uuid and Ulid in Carbon::createFromId() by [@kylekatarnls](https://github.com/kylekatarnls) in https://github.com/laravel/framework/pull/49783 -* [10.x] Test Improvements by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/49785 - -## [v10.41.0](https://github.com/laravel/framework/compare/v10.40.0...v10.41.0) - 2024-01-16 - -* [10.x] Add a `threshold` parameter to the `Number::spell` helper by [@caendesilva](https://github.com/caendesilva) in https://github.com/laravel/framework/pull/49610 -* Revert "[10.x] Make ComponentAttributeBag Arrayable" by [@luanfreitasdev](https://github.com/luanfreitasdev) in https://github.com/laravel/framework/pull/49623 -* [10.x] Fix return value and docblock by [@dwightwatson](https://github.com/dwightwatson) in https://github.com/laravel/framework/pull/49627 -* [10.x] Add an option to specify the default path to the models directory for `php artisan model:prune` by [@dbhynds](https://github.com/dbhynds) in https://github.com/laravel/framework/pull/49617 -* [10.x] Allow job chains to be conditionally dispatched by [@fjarrett](https://github.com/fjarrett) in https://github.com/laravel/framework/pull/49624 -* [10.x] Add test for existing empty test by [@lioneaglesolutions](https://github.com/lioneaglesolutions) in https://github.com/laravel/framework/pull/49632 -* [10.x] Add additional context to Mailable assertion messages by [@lioneaglesolutions](https://github.com/lioneaglesolutions) in https://github.com/laravel/framework/pull/49631 -* [10.x] Allow job batches to be conditionally dispatched by [@fjarrett](https://github.com/fjarrett) in https://github.com/laravel/framework/pull/49639 -* [10.x] Revert parameter name change by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/49659 -* [10.x] Printing Name of The Method that Calls `ensureIntlExtensionIsInstalled` in `Number` class. by [@devajmeireles](https://github.com/devajmeireles) in https://github.com/laravel/framework/pull/49660 -* [10.x] Update pagination tailwind.blade.php by [@anasmorahhib](https://github.com/anasmorahhib) in https://github.com/laravel/framework/pull/49665 -* [10.x] feat: add base argument to Stringable->toInteger() by [@adamczykpiotr](https://github.com/adamczykpiotr) in https://github.com/laravel/framework/pull/49670 -* [10.x]: Remove unused class ShouldBeUnique when make a job by [@Kenini1805](https://github.com/Kenini1805) in https://github.com/laravel/framework/pull/49669 -* [10.x] Add tests for Eloquent methods by [@milwad-dev](https://github.com/milwad-dev) in https://github.com/laravel/framework/pull/49673 -* Implement draft workflow by [@driesvints](https://github.com/driesvints) in https://github.com/laravel/framework/pull/49683 -* [10.x] Fixing Types, Word and Returns of `Number`class. by [@devajmeireles](https://github.com/devajmeireles) in https://github.com/laravel/framework/pull/49681 -* [10.x] Test Improvements by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/49679 -* [10.x] Officially support floats in trans_choice and Translator::choice by [@philbates35](https://github.com/philbates35) in https://github.com/laravel/framework/pull/49693 -* [10.x] Use static function by [@michaelnabil230](https://github.com/michaelnabil230) in https://github.com/laravel/framework/pull/49696 -* [10.x] Revert "[10.x] Improve numeric comparison for custom casts" by [@driesvints](https://github.com/driesvints) in https://github.com/laravel/framework/pull/49702 -* [10.x] Add exit code to queue:clear, and queue:forget commands by [@bytestream](https://github.com/bytestream) in https://github.com/laravel/framework/pull/49707 -* [10.x] Allow StreamInterface as raw HTTP Client body by [@janolivermr](https://github.com/janolivermr) in https://github.com/laravel/framework/pull/49705 - -## [v10.40.0](https://github.com/laravel/framework/compare/v10.39.0...v10.40.0) - 2024-01-09 - -* [10.x] `Model::preventAccessingMissingAttributes()` raises exception for enums & primitive castable attributes that were not retrieved by [@cosmastech](https://github.com/cosmastech) in https://github.com/laravel/framework/pull/49480 -* [10.x] Include system versioned tables for MariaDB by [@hafezdivandari](https://github.com/hafezdivandari) in https://github.com/laravel/framework/pull/49509 -* [10.x] Fixes the `Arr::dot()` method to properly handle indexes array by [@kayw-geek](https://github.com/kayw-geek) in https://github.com/laravel/framework/pull/49507 -* [10.x] Expand Gate::allows & Gate::denies signature by [@antonkomarev](https://github.com/antonkomarev) in https://github.com/laravel/framework/pull/49503 -* [10.x] Improve numeric comparison for custom casts by [@imahmood](https://github.com/imahmood) in https://github.com/laravel/framework/pull/49504 -* [10.x] Add session except method by [@xurshudyan](https://github.com/xurshudyan) in https://github.com/laravel/framework/pull/49520 -* [10.x] Add `Number::clamp` by [@jbrooksuk](https://github.com/jbrooksuk) in https://github.com/laravel/framework/pull/49512 -* [10.x] Fix Schedule test by [@michaelnabil230](https://github.com/michaelnabil230) in https://github.com/laravel/framework/pull/49538 -* [10.x] Use correct format of date by [@buismaarten](https://github.com/buismaarten) in https://github.com/laravel/framework/pull/49541 -* [10.x] Clean Arr by [@michaelnabil230](https://github.com/michaelnabil230) in https://github.com/laravel/framework/pull/49530 -* [10.x] Make ComponentAttributeBag Arrayable by [@iamgergo](https://github.com/iamgergo) in https://github.com/laravel/framework/pull/49524 -* [10.x] Fix whenAggregated when default is not specified by [@lovePizza](https://github.com/lovePizza) in https://github.com/laravel/framework/pull/49521 -* [10.x] Update AsArrayObject.php to use ARRAY_AS_PROPS flag by [@pintend](https://github.com/pintend) in https://github.com/laravel/framework/pull/49534 -* [10.x] Remove invalid `RedisCluster::client()` call by [@tillkruss](https://github.com/tillkruss) in https://github.com/laravel/framework/pull/49560 -* [10.x] Remove unused code from `PhpRedisConnector` by [@tillkruss](https://github.com/tillkruss) in https://github.com/laravel/framework/pull/49559 -* [10.x] Flush about command during test runs by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/49557 -* [10.x] Fix parentOfParameter method by [@iamgergo](https://github.com/iamgergo) in https://github.com/laravel/framework/pull/49548 -* [10.x] Make the Schema Builder macroable by [@kevinb1989](https://github.com/kevinb1989) in https://github.com/laravel/framework/pull/49547 -* [10.x] Remove unused code from tests by [@imahmood](https://github.com/imahmood) in https://github.com/laravel/framework/pull/49566 -* [10.x] Update Query/Builder.php $columns typehint by [@Grldk](https://github.com/Grldk) in https://github.com/laravel/framework/pull/49563 -* [10.x] Add assertViewEmpty to TestView by [@dwightwatson](https://github.com/dwightwatson) in https://github.com/laravel/framework/pull/49558 -* [10.x] Update tailwind.blade.php for dark mode by [@sabinchacko03](https://github.com/sabinchacko03) in https://github.com/laravel/framework/pull/49515 -* [10.x] Fix deprecation with null value in cache FileStore by [@driesvints](https://github.com/driesvints) in https://github.com/laravel/framework/pull/49578 -* [10.x] Allow Vite asset path customization by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/49437 -* [10.x] Type hinting of the second parameter of date- and time-related `where*()` methods of `Illuminate\Database\Query\Builder` by [@lorenzolosa](https://github.com/lorenzolosa) in https://github.com/laravel/framework/pull/49599 -* [10.x] Fix Stringable::convertCase() return type by [@vaites](https://github.com/vaites) in https://github.com/laravel/framework/pull/49590 -* Allow \Blade::stringable() to be called on native Iterables by [@tsjason](https://github.com/tsjason) in https://github.com/laravel/framework/pull/49591 -* [10.x] Refactor time handling using `InteractsWithTime` trait method by [@xurshudyan](https://github.com/xurshudyan) in https://github.com/laravel/framework/pull/49601 -* [10.x] Add `assertCount` test helper by [@xurshudyan](https://github.com/xurshudyan) in https://github.com/laravel/framework/pull/49609 -* [10.x] Ability to establish connection without using Config Repository by [@deleugpn](https://github.com/deleugpn) in https://github.com/laravel/framework/pull/49527 -* [10.x] Add APA style title helper by [@hotmeteor](https://github.com/hotmeteor) in https://github.com/laravel/framework/pull/49572 -* [10.x] Fix usage of alternatives in error output by [@Mrjavaci](https://github.com/Mrjavaci) in https://github.com/laravel/framework/pull/49614 -* [10.x] Use locks for queue job popping for PlanetScale's MySQL-compatible Vitess 19 engine by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/49561 - -## [v10.39.0](https://github.com/laravel/framework/compare/v10.38.2...v10.39.0) - 2023-12-27 - -* [9.x] Support for phpredis 6.0.0 by [@MichalHubatka](https://github.com/MichalHubatka) in https://github.com/laravel/framework/pull/48380 -* [10.x] Dynamic `maxTries` for queued jobs by [@mechelon](https://github.com/mechelon) in https://github.com/laravel/framework/pull/49473 -* [10.x] Avoid TypeError when using json validation rule when PHP < 8.3 by [@Xint0](https://github.com/Xint0) in https://github.com/laravel/framework/pull/49474 -* [10.x] Fix use statement compilation in Blade templates by [@MrPunyapal](https://github.com/MrPunyapal) in https://github.com/laravel/framework/pull/49479 -* [10.x] Allow testing prompts validation by [@cerbero90](https://github.com/cerbero90) in https://github.com/laravel/framework/pull/49447 -* [10.x] Add 'Roundrobin' Symfony mailer transport driver by [@me-shaon](https://github.com/me-shaon) in https://github.com/laravel/framework/pull/49435 - -## [v10.38.2](https://github.com/laravel/framework/compare/v10.38.1...v10.38.2) - 2023-12-22 - -* [10.x] Add `conflict` for `doctrine/dbal:^4.0` to `illuminate/database` by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/49456 -* [10.x] Simplify Arr::dot by [@bastien-phi](https://github.com/bastien-phi) in https://github.com/laravel/framework/pull/49461 -* [10.x] Illuminate\Filesystem\join_paths(): Argument #2 must be of type string, null given by [@tylernathanreed](https://github.com/tylernathanreed) in https://github.com/laravel/framework/pull/49467 -* [10.x] Allow deprecation logging in tests by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/49457 -* [10.x] Fix missing Validation rules not working with nested array by [@aabadawy](https://github.com/aabadawy) in https://github.com/laravel/framework/pull/49449 - -## [v10.38.1](https://github.com/laravel/framework/compare/v10.38.0...v10.38.1) - 2023-12-20 - -* [10.x] Adds support for parse callbacks from anonymous classes by [@nunomaduro](https://github.com/nunomaduro) in https://github.com/laravel/framework/pull/49432 -* Revert "[10.x] Drop the primary key if it exists when adding a new primary key" by [@taylorotwell](https://github.com/taylorotwell) in https://github.com/laravel/framework/pull/49448 -* [10.x] Fix installing DBAL on a fresh app by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/49438 -* [10.x] Add method to create request by [@dododedodonl](https://github.com/dododedodonl) in https://github.com/laravel/framework/pull/49446 -* [10.x] Move `Illuminate\Foundation\Application::joinPaths()` to `Illuminate\Filesystem\join_paths()` by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/49433 - -## [v10.38.0](https://github.com/laravel/framework/compare/v10.37.3...v10.38.0) - 2023-12-19 - -* [10.x] Add routeRoute method to test request by [@fragkp](https://github.com/fragkp) in https://github.com/laravel/framework/pull/49366 -* [10.x] Update import & typo by [@chu121su12](https://github.com/chu121su12) in https://github.com/laravel/framework/pull/49370 -* [10.x] Show default `false` values in `db:table` command by [@PerryvanderMeer](https://github.com/PerryvanderMeer) in https://github.com/laravel/framework/pull/49379 -* [10.x] Fix primary key creation for MySQL with `sql_require_primary_key` enabled by [@mtawil](https://github.com/mtawil) in https://github.com/laravel/framework/pull/49374 -* [10.x] Add `charset` and `collation` method to `Blueprint` by [@gcazin](https://github.com/gcazin) in https://github.com/laravel/framework/pull/49396 -* Fixes second run of `about` command on Octane by [@josecl](https://github.com/josecl) in https://github.com/laravel/framework/pull/49387 -* [10.x] Fix bug in ArrayLock getCurrentOwner by [@Joostb](https://github.com/Joostb) in https://github.com/laravel/framework/pull/49393 -* [10.x] Dynamo Batch Repository - Match Default Horizon Sort by [@evan-burrell](https://github.com/evan-burrell) in https://github.com/laravel/framework/pull/49391 -* [10.x] Add Blade `[@session](https://github.com/session)` Directive by [@jrd-lewis](https://github.com/jrd-lewis) in https://github.com/laravel/framework/pull/49339 -* [10.x] Improve `Arr::dot` performance by [@bastien-phi](https://github.com/bastien-phi) in https://github.com/laravel/framework/pull/49386 -* [10.x] Fix assertStatus() parameter order by [@marcovo](https://github.com/marcovo) in https://github.com/laravel/framework/pull/49404 -* [10.x] Only set `defaultCasters` if not previously set by [@inxilpro](https://github.com/inxilpro) in https://github.com/laravel/framework/pull/49402 -* [10.x] Fixes parameter type in `ManagesFrequencies` by [@Lucas-Schmukas](https://github.com/Lucas-Schmukas) in https://github.com/laravel/framework/pull/49399 -* [10.x] Add SQLite support for `whereJsonContains` method by [@danieleambrosino](https://github.com/danieleambrosino) in https://github.com/laravel/framework/pull/49401 -* [10x.] Use native json_validate in Validation by [@gtjamesa](https://github.com/gtjamesa) in https://github.com/laravel/framework/pull/49413 -* [10.x] Introducing `isEmpty` and `isNotEmpty` to `ComponentAttributeBag` by [@devajmeireles](https://github.com/devajmeireles) in https://github.com/laravel/framework/pull/49408 -* [10.x] Drop the primary key if it exists when adding a new primary key by [@KieranFYI](https://github.com/KieranFYI) in https://github.com/laravel/framework/pull/49392 -* [10.x] Improve schema builder `getColumns()` method by [@hafezdivandari](https://github.com/hafezdivandari) in https://github.com/laravel/framework/pull/49416 -* [10.x] Add `MailMessage` helpers for plain text email notifications by [@onlime](https://github.com/onlime) in https://github.com/laravel/framework/pull/49407 -* [10.x] Test Improvements by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/49426 -* [10.x] Add Conditionable to Pipeline by [@shane-zeng](https://github.com/shane-zeng) in https://github.com/laravel/framework/pull/49429 - -## [v10.37.3](https://github.com/laravel/framework/compare/v10.37.2...v10.37.3) - 2023-12-13 - -* Flush middleware callbacks by [@taylorotwell](https://github.com/taylorotwell) in https://github.com/laravel/framework/commit/bb49a72c1a839b2b19d0fcea4e8b203a122454ef - -## [v10.37.2](https://github.com/laravel/framework/compare/v10.37.1...v10.37.2) - 2023-12-13 - -* Ability to test chained job via closure by [@jasonmccreary](https://github.com/jasonmccreary) in https://github.com/laravel/framework/pull/49337 -* [10.x] Add `progress` option to `PendingBatch` by [@orkhanahmadov](https://github.com/orkhanahmadov) in https://github.com/laravel/framework/pull/49273 -* [10.x] Test Improvements by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/49338 -* [10.x] Avoid using `rescue()` in standalone `illuminate/database` component. by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/49355 -* [10.x] Exclude extension types on PostgreSQL when retrieving types by [@hafezdivandari](https://github.com/hafezdivandari) in https://github.com/laravel/framework/pull/49358 -* [10.x] Revert "[10.x] Disconnecting the database connection after testing" by [@driesvints](https://github.com/driesvints) in https://github.com/laravel/framework/pull/49361 - -## [v10.37.1](https://github.com/laravel/framework/compare/v10.37.0...v10.37.1) - 2023-12-12 - -* [10.x] Disconnecting the database connection after testing by [@KentarouTakeda](https://github.com/KentarouTakeda) in https://github.com/laravel/framework/pull/49327 -* [10.x] Get user-defined types on PostgreSQL by [@hafezdivandari](https://github.com/hafezdivandari) in https://github.com/laravel/framework/pull/49303 - -## [v10.37.0](https://github.com/laravel/framework/compare/v10.35.0...v10.37.0) - 2023-12-12 - -* [10.x] Add `engine` method to `Blueprint` by [@jbrooksuk](https://github.com/jbrooksuk) in https://github.com/laravel/framework/pull/49250 -* [10.x] Use translator from validator in `Can` and `Enum` rules by [@fancyweb](https://github.com/fancyweb) in https://github.com/laravel/framework/pull/49251 -* [10.x] Get indexes of a table by [@hafezdivandari](https://github.com/hafezdivandari) in https://github.com/laravel/framework/pull/49204 -* [10.x] Filesystem : can lock file on append of content by [@StephaneBour](https://github.com/StephaneBour) in https://github.com/laravel/framework/pull/49262 -* [10.x] Test Improvements by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/49266 -* [10.x] Fixes generating facades documentation shouldn't be affected by `php-psr` extension by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/49268 -* [10.x] Fixes `AboutCommand::format()` docblock by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/49274 -* [10.x] `Route::getController()` should return `null` when the accessing closure based route by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/49269 -* [10.x] Add "noActionOnUpdate" method in Illuminate/Database/Schema/ForeignKeyDefinition by [@hrsa](https://github.com/hrsa) in https://github.com/laravel/framework/pull/49297 -* [10.x] Fixing number helper for floating 0.0 by [@mr-punyapal](https://github.com/mr-punyapal) in https://github.com/laravel/framework/pull/49277 -* [10.x] Allow checking if lock succesfully restored by [@Joostb](https://github.com/Joostb) in https://github.com/laravel/framework/pull/49272 -* [10.x] Enable DynamoDB as a backend for Job Batches by [@khepin](https://github.com/khepin) in https://github.com/laravel/framework/pull/49169 -* [10.x] Removed deprecated and not used argument by [@Muetze42](https://github.com/Muetze42) in https://github.com/laravel/framework/pull/49304 -* [10.x] Add Conditionable to Batched and Chained jobs by [@bretto36](https://github.com/bretto36) in https://github.com/laravel/framework/pull/49310 -* [10.x] Include partitioned tables on PostgreSQL when retrieving tables by [@hafezdivandari](https://github.com/hafezdivandari) in https://github.com/laravel/framework/pull/49326 -* [10.x] Allow to pass `Arrayable` or `Stringble` in rules `In` and `NotIn` by [@michaelnabil230](https://github.com/michaelnabil230) in https://github.com/laravel/framework/pull/49055 -* [10.x] Display error message if json_encode() fails by [@aimeos](https://github.com/aimeos) in https://github.com/laravel/framework/pull/48856 -* [10.x] Allow error list per field by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/49309 -* [10.x] Get foreign keys of a table by [@hafezdivandari](https://github.com/hafezdivandari) in https://github.com/laravel/framework/pull/49264 -* [10.x] PHPStan Improvements by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/49343 -* [10.x] Handle missing translations: more robust handling of callback return value by [@DeanWunder](https://github.com/DeanWunder) in https://github.com/laravel/framework/pull/49341 - -## [v10.35.0](https://github.com/laravel/framework/compare/v10.34.2...v10.35.0) - 2023-12-05 - -* [10.x] Add `Conditionable` trait to `AssertableJson` by [@khalilst](https://github.com/khalilst) in https://github.com/laravel/framework/pull/49172 -* [10.x] Add `--with-secret` option to Artisan `down` command. by [@jj15asmr](https://github.com/jj15asmr) in https://github.com/laravel/framework/pull/49171 -* [10.x] Add support for `Number::summarize` by [@jcsoriano](https://github.com/jcsoriano) in https://github.com/laravel/framework/pull/49197 -* [10.x] Add Blade [@use](https://github.com/use) directive by [@simonhamp](https://github.com/simonhamp) in https://github.com/laravel/framework/pull/49179 -* [10.x] Fixes retrying failed jobs causes PHP memory exhaustion errors when dealing with thousands of failed jobs by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/49186 -* [10.x] Add "substituteImplicitBindingsUsing" method to router by [@calebporzio](https://github.com/calebporzio) in https://github.com/laravel/framework/pull/49200 -* [10.x] Cookies Having Independent Partitioned State (CHIPS) by [@fabricecw](https://github.com/fabricecw) in https://github.com/laravel/framework/pull/48745 -* [10.x] Update InteractsWithDictionary.php to use base InvalidArgumentException by [@Grldk](https://github.com/Grldk) in https://github.com/laravel/framework/pull/49209 -* [10.x] Fix docblock for wasRecentlyCreated by [@stancl](https://github.com/stancl) in https://github.com/laravel/framework/pull/49208 -* [10.x] Fix loss of attributes after calling child component by [@rojtjo](https://github.com/rojtjo) in https://github.com/laravel/framework/pull/49216 -* [10.x] Fix typo in PHPDoc comment by [@caendesilva](https://github.com/caendesilva) in https://github.com/laravel/framework/pull/49234 -* [10.x] Determine if the given view exists. by [@hafezdivandari](https://github.com/hafezdivandari) in https://github.com/laravel/framework/pull/49231 - -## [v10.34.2](https://github.com/laravel/framework/compare/v10.34.1...v10.34.2) - 2023-11-28 - -* [v10.x] Add missing methods to newly extended fake `Vite` instance by [@stevebauman](https://github.com/stevebauman) in https://github.com/laravel/framework/pull/49165 - -## [v10.34.1](https://github.com/laravel/framework/compare/v10.34.0...v10.34.1) - 2023-11-28 - -* [10.x] Streamline `DatabaseMigrations` and `RefreshDatabase` events by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/49153 -* [10.x] Use HtmlString in Vite fake by [@jasonvarga](https://github.com/jasonvarga) in https://github.com/laravel/framework/pull/49163 - -## [v10.34.0](https://github.com/laravel/framework/compare/v10.33.0...v10.34.0) - 2023-11-28 - -* [10.x] Fix `hex_color` validation rule by [@apih](https://github.com/apih) in https://github.com/laravel/framework/pull/49070 -* [10.x] Prevent passing null to base64_decode in Encrypter by [@robtesch](https://github.com/robtesch) in https://github.com/laravel/framework/pull/49071 -* [10.x] Alias Number class by [@ziadoz](https://github.com/ziadoz) in https://github.com/laravel/framework/pull/49073 -* [10.x] Added File Validation `extensions` by [@eusonlito](https://github.com/eusonlito) in https://github.com/laravel/framework/pull/49082 -* [10.x] Add [@throws](https://github.com/throws) in doc-blocks by [@imanghafoori1](https://github.com/imanghafoori1) in https://github.com/laravel/framework/pull/49091 -* [10.x] Update docblocks for consistency by [@dwightwatson](https://github.com/dwightwatson) in https://github.com/laravel/framework/pull/49092 -* [10.x] Throw exception when trying to initiate `Collection` using `WeakMap` by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/49095 -* [10.x] Only stage committed transactions by [@hansnn](https://github.com/hansnn) in https://github.com/laravel/framework/pull/49093 -* Better transaction manager object design by [@taylorotwell](https://github.com/taylorotwell) in https://github.com/laravel/framework/pull/49103 -* [10.x] use php 8.3 `mb_str_pad()` for `Str::pad*` by [@amacado](https://github.com/amacado) in https://github.com/laravel/framework/pull/49108 -* [10.x] Add Conditionable to TestResponse by [@nshiro](https://github.com/nshiro) in https://github.com/laravel/framework/pull/49112 -* [10.x] Allow multiple types in Collection's `ensure` method by [@ash-jc-allen](https://github.com/ash-jc-allen) in https://github.com/laravel/framework/pull/49127 -* [10.x] Fix middleware "SetCacheHeaders" with download responses by [@clementbirkle](https://github.com/clementbirkle) in https://github.com/laravel/framework/pull/49138 -* [10.x][Cache] Fix handling of `false` values in apc by [@simivar](https://github.com/simivar) in https://github.com/laravel/framework/pull/49145 -* [10.x] Reset numeric rules after each attribute's validation by [@apih](https://github.com/apih) in https://github.com/laravel/framework/pull/49142 -* [10.x] Extract dirty getter for `performUpdate` by [@taka-oyama](https://github.com/taka-oyama) in https://github.com/laravel/framework/pull/49141 -* [10.x] `ensure`: Resolve `$itemType` outside the closure by [@lucasmichot](https://github.com/lucasmichot) in https://github.com/laravel/framework/pull/49137 -* Allow "missing" method to be used on route groups by [@redelschaap](https://github.com/redelschaap) in https://github.com/laravel/framework/pull/49144 -* [10.x] Get tables and views info by [@hafezdivandari](https://github.com/hafezdivandari) in https://github.com/laravel/framework/pull/49020 -* [10.x] Fix `MorphTo::associate()` PHPDoc parameter by [@devfrey](https://github.com/devfrey) in https://github.com/laravel/framework/pull/49162 -* [10.x] Make test error messages more multi-byte readable by [@nshiro](https://github.com/nshiro) in https://github.com/laravel/framework/pull/49160 -* [10.x] Generate a unique hash for anonymous components by [@billyonecan](https://github.com/billyonecan) in https://github.com/laravel/framework/pull/49156 -* [10.x] Improves output when using `php artisan about --json` by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/49154 -* [10.x] Make fake instance inherit from `Vite` when using `withoutVite()` by [@orkhanahmadov](https://github.com/orkhanahmadov) in https://github.com/laravel/framework/pull/49150 - -## [v10.33.0](https://github.com/laravel/framework/compare/v10.32.1...v10.33.0) - 2023-11-21 - -- [10.x] Fix wrong parameter passing and add these rules to dependent rules by [@kayw-geek](https://github.com/kayw-geek) in https://github.com/laravel/framework/pull/49008 -- [10.x] Make Validator::getValue() public by [@shinsenter](https://github.com/shinsenter) in https://github.com/laravel/framework/pull/49007 -- [10.x] Custom messages for `Password` validation rule by [@rcknr](https://github.com/rcknr) in https://github.com/laravel/framework/pull/48928 -- [10.x] Round milliseconds in database seeder console output runtime by [@SjorsO](https://github.com/SjorsO) in https://github.com/laravel/framework/pull/49014 -- [10.x] Add a `Number` utility class by [@caendesilva](https://github.com/caendesilva) in https://github.com/laravel/framework/pull/48845 -- [10.x] Fix the replace() method in DefaultService class by [@jonagoldman](https://github.com/jonagoldman) in https://github.com/laravel/framework/pull/49022 -- [10.x] Pass the property $validator as a parameter to the $callback Closure by [@shinsenter](https://github.com/shinsenter) in https://github.com/laravel/framework/pull/49015 -- [10.x] Fix Cache DatabaseStore::add() error occur on Postgres within transaction by [@xdevor](https://github.com/xdevor) in https://github.com/laravel/framework/pull/49025 -- [10.x] Support asserting against chained batches by [@taylorotwell](https://github.com/taylorotwell) in https://github.com/laravel/framework/pull/49003 -- [10.x] Prevent DB `Cache::get()` occur race condition by [@xdevor](https://github.com/xdevor) in https://github.com/laravel/framework/pull/49031 -- [10.x] Fix notifications being counted as sent without a "shouldSend" method by [@joelwmale](https://github.com/joelwmale) in https://github.com/laravel/framework/pull/49030 -- [10.x] Fix tests failure on Windows by [@hafezdivandari](https://github.com/hafezdivandari) in https://github.com/laravel/framework/pull/49037 -- [10.x] Add unless conditional on validation rules by [@michaelnabil230](https://github.com/michaelnabil230) in https://github.com/laravel/framework/pull/49048 -- [10.x] Handle string based payloads that are not JSON or form data when creating PSR request instances by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/49047 -- [10.x] Fix directory separator CMD display on windows by [@imanghafoori1](https://github.com/imanghafoori1) in https://github.com/laravel/framework/pull/49045 -- [10.x] Fix mapSpread doc by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/48941 -- [10.x] Tiny `Support\Collection` test fix - Unused data provider parameter by [@stevebauman](https://github.com/stevebauman) in https://github.com/laravel/framework/pull/49053 -- [10.x] Feat: Add color_hex validation rule by [@nikopeikrishvili](https://github.com/nikopeikrishvili) in https://github.com/laravel/framework/pull/49056 -- [10.x] Handle missing translation strings using callback by [@DeanWunder](https://github.com/DeanWunder) in https://github.com/laravel/framework/pull/49040 -- [10.x] Add Str::transliterate to Stringable by [@dwightwatson](https://github.com/dwightwatson) in https://github.com/laravel/framework/pull/49065 -- Add Alpha Channel support to Hex validation rule by [@ahinkle](https://github.com/ahinkle) in https://github.com/laravel/framework/pull/49069 - -## [v10.32.1](https://github.com/laravel/framework/compare/v10.32.0...v10.32.1) - 2023-11-14 - -- [10.x] Add `[@pushElseIf](https://github.com/pushElseIf)` and `[@pushElse](https://github.com/pushElse)` by [@jasonmccreary](https://github.com/jasonmccreary) in https://github.com/laravel/framework/pull/48990 - -## [v10.32.0](https://github.com/laravel/framework/compare/v10.31.0...v10.32.0) - 2023-11-14 - -- Update PendingRequest.php by [@mattkingshott](https://github.com/mattkingshott) in https://github.com/laravel/framework/pull/48939 -- [10.x] Change array_key_exists with null coalescing assignment operator in FilesystemAdapter by [@miladev95](https://github.com/miladev95) in https://github.com/laravel/framework/pull/48943 -- [10.x] Use container to resolve email validator class by [@orkhanahmadov](https://github.com/orkhanahmadov) in https://github.com/laravel/framework/pull/48942 -- [10.x] Added `getGlobalMiddleware` method to HTTP Client Factory by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/laravel/framework/pull/48950 -- [10.x] Detect MySQL read-only mode error as a lost connection by [@cosmastech](https://github.com/cosmastech) in https://github.com/laravel/framework/pull/48937 -- [10.x] Adds more implicit validation rules for `present` based on other fields by [@diamondobama](https://github.com/diamondobama) in https://github.com/laravel/framework/pull/48908 -- [10.x] Refactor set_error_handler callback to use arrow function in `InteractsWithDeprecationHandling` by [@miladev95](https://github.com/miladev95) in https://github.com/laravel/framework/pull/48954 -- [10.x] Test Improvements by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/48962 -- Fix issue that prevents BladeCompiler to raise an exception when temporal compiled blade template is not found. by [@juanparati](https://github.com/juanparati) in https://github.com/laravel/framework/pull/48957 -- [10.x] Fix how nested transaction callbacks are handled by [@mateusjatenee](https://github.com/mateusjatenee) in https://github.com/laravel/framework/pull/48859 -- [10.x] Fixes Batch Callbacks not triggering if job timeout while in transaction by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/48961 -- [10.x] expressions in migration computations fail by [@tpetry](https://github.com/tpetry) in https://github.com/laravel/framework/pull/48976 -- [10.x] Fixes Exception: Cannot traverse an already closed generator when running Arr::first with an empty generator and no callback by [@moshe-autoleadstar](https://github.com/moshe-autoleadstar) in https://github.com/laravel/framework/pull/48979 -- fixes issue with stderr when there was "]" character. by [@nikopeikrishvili](https://github.com/nikopeikrishvili) in https://github.com/laravel/framework/pull/48975 -- [10.x] Fix Postgres cache store failed to put exist cache in transaction by [@xdevor](https://github.com/xdevor) in https://github.com/laravel/framework/pull/48968 - -## [v10.31.0](https://github.com/laravel/framework/compare/v10.30.1...v10.31.0) - 2023-11-07 - -- [10.x] Allow `Sleep::until()` to be passed a timestamp as a string by [@jameshulse](https://github.com/jameshulse) in https://github.com/laravel/framework/pull/48883 -- [10.x] Fix whereHasMorph() with nullable morphs by [@MarkKremer](https://github.com/MarkKremer) in https://github.com/laravel/framework/pull/48903 -- [10.x] Handle `class_parents` returning false in `class_uses_recursive` by [@RoflCopter24](https://github.com/RoflCopter24) in https://github.com/laravel/framework/pull/48902 -- [10.x] Enable default retrieval of all fragments in `fragments()` and `fragmentsIf()` methods by [@tabuna](https://github.com/tabuna) in https://github.com/laravel/framework/pull/48894 -- [10.x] Allow placing a batch on a chain by [@khepin](https://github.com/khepin) in https://github.com/laravel/framework/pull/48633 -- [10.x] Dispatch 'connection failed' event in async http client request by [@gdebrauwer](https://github.com/gdebrauwer) in https://github.com/laravel/framework/pull/48900 -- authenticate method refactored to use null coalescing operator by [@miladev95](https://github.com/miladev95) in https://github.com/laravel/framework/pull/48917 -- [10.x] Add support for Sec-Purpose header by [@nanos](https://github.com/nanos) in https://github.com/laravel/framework/pull/48925 -- [10.x] Allow setting retain_visibility config option on Flysystem filesystems by [@jnoordsij](https://github.com/jnoordsij) in https://github.com/laravel/framework/pull/48935 -- [10.x] Escape forward slashes when exploding wildcard rules by [@matt-farrugia](https://github.com/matt-farrugia) in https://github.com/laravel/framework/pull/48936 - -## [v10.30.1](https://github.com/laravel/framework/compare/v10.30.0...v10.30.1) - 2023-11-01 - -- [10.x] Fix postgreSQL reserved word column names w/ guarded attributes broken in native column attributes implementation by [@hafezdivandari](https://github.com/hafezdivandari) in https://github.com/laravel/framework/pull/48877 - -## [v10.30.0](https://github.com/laravel/framework/compare/v10.29.0...v10.30.0) - 2023-10-31 - -- [10.x] Test Improvements by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/48815 -- [10.x] Verify hash config by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/48814 -- [10.x] Fix the issue of using the now function within the ArrayCache in Lumen by [@cxlblm](https://github.com/cxlblm) in https://github.com/laravel/framework/pull/48826 -- [10.x] Match service provider after resolved by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/48824 -- [10.x] Fix type error registering PSR Request by [@kpicaza](https://github.com/kpicaza) in https://github.com/laravel/framework/pull/48823 -- [10.x] Ability to configure default session block timeouts by [@bytestream](https://github.com/bytestream) in https://github.com/laravel/framework/pull/48795 -- [10.x] Improvements for `artisan migrate --pretend` command 🚀 by [@NickSdot](https://github.com/NickSdot) in https://github.com/laravel/framework/pull/48768 -- [10.x] Add support for getting native columns' attributes by [@hafezdivandari](https://github.com/hafezdivandari) in https://github.com/laravel/framework/pull/48357 -- fix(Eloquent/Builder): calling the methods on passthru base object should be case-insensitive by [@luka-papez](https://github.com/luka-papez) in https://github.com/laravel/framework/pull/48852 -- [10.x] Fix `QueriesRelationships[@getRelationHashedColumn](https://github.com/getRelationHashedColumn)()` typehint by [@cosmastech](https://github.com/cosmastech) in https://github.com/laravel/framework/pull/48847 -- [10.x] Remember the job on the exception by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/48830 -- fix bug for always throwing exception when we pass a callable to throwUnlessStatus method [test included] by [@mhfereydouni](https://github.com/mhfereydouni) in https://github.com/laravel/framework/pull/48844 -- [10.x] Dispatch events based on a DB transaction result by [@mateusjatenee](https://github.com/mateusjatenee) in https://github.com/laravel/framework/pull/48705 -- [10.x] Reset ShouldDispatchAfterCommitEventTest objects properties by [@mateusjatenee](https://github.com/mateusjatenee) in https://github.com/laravel/framework/pull/48858 -- [10.x] Throw exception when trying to escape array for database connection by [@sidneyprins](https://github.com/sidneyprins) in https://github.com/laravel/framework/pull/48836 -- [10.x] Fix Stringable objects not converted to string in HTTP facade Query parameters and Body by [@LasseRafn](https://github.com/LasseRafn) in https://github.com/laravel/framework/pull/48849 - -## [v10.29.0](https://github.com/laravel/framework/compare/v10.28.0...v10.29.0) - 2023-10-24 - -- [10.x] Fixes `Str::password()` does not always generate password with numbers by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/48681 -- [10.x] Fixes cache:prune-stale-tags preg_match delimiter no escaped by [@ame1973](https://github.com/ame1973) in https://github.com/laravel/framework/pull/48702 -- [10.x] Allow route:list to expand middleware groups in 'VeryVerbose' mode by [@NickSdot](https://github.com/NickSdot) in https://github.com/laravel/framework/pull/48703 -- [10.x] Fix model:prune command error with non-class php files by [@zlodes](https://github.com/zlodes) in https://github.com/laravel/framework/pull/48708 -- [10.x] Show CliDumper source content on last line by [@CalebDW](https://github.com/CalebDW) in https://github.com/laravel/framework/pull/48707 -- [10.x] Revival of the reverted changes in 10.25.0: `firstOrCreate` `updateOrCreate` improvement through `createOrFirst` + additional query tests by [@mpyw](https://github.com/mpyw) in https://github.com/laravel/framework/pull/48637 -- [10.x] allow resolving view from closure by [@PH7-Jack](https://github.com/PH7-Jack) in https://github.com/laravel/framework/pull/48719 -- [10.x] Allow creation of PSR request with merged data by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/48696 -- [10.x] Update DocBlock for `convertCase` Method to Reflect Optional $encoding Parameter by [@salehhashemi1992](https://github.com/salehhashemi1992) in https://github.com/laravel/framework/pull/48729 -- [10.x] Use ValidationException class from Validator Property by [@a-h-abid](https://github.com/a-h-abid) in https://github.com/laravel/framework/pull/48736 -- [10.x] Implement Test Coverage for `Str::convertCase` Method by [@salehhashemi1992](https://github.com/salehhashemi1992) in https://github.com/laravel/framework/pull/48730 -- [10.x] Extend Test Coverage for `Str::take` Function by [@salehhashemi1992](https://github.com/salehhashemi1992) in https://github.com/laravel/framework/pull/48728 -- [10.x] Add `replaceMatches` to Str class by [@hosmelq](https://github.com/hosmelq) in https://github.com/laravel/framework/pull/48727 -- [10.x] Fix duplicate conditions on retrying `SELECT` calls under `createOrFirst()` by [@KentarouTakeda](https://github.com/KentarouTakeda) in https://github.com/laravel/framework/pull/48725 -- [10.x] Uses `stefanzweifel/git-auto-commit-action[@v5](https://github.com/v5)` by [@nunomaduro](https://github.com/nunomaduro) in https://github.com/laravel/framework/pull/48763 -- [10.x] fix typo in comment by [@vintagesucks](https://github.com/vintagesucks) in https://github.com/laravel/framework/pull/48770 -- [10.x] Require DBAL 3 when installing by [@Jubeki](https://github.com/Jubeki) in https://github.com/laravel/framework/pull/48769 -- [10.x] Escape the delimiter when extracting an excerpt from text by [@standaniels](https://github.com/standaniels) in https://github.com/laravel/framework/pull/48765 -- [10.x] Fix `replaceMatches` in Str class by [@hosmelq](https://github.com/hosmelq) in https://github.com/laravel/framework/pull/48760 -- [10.x] Moves logger instance creation to a protected method by [@rodrigopedra](https://github.com/rodrigopedra) in https://github.com/laravel/framework/pull/48759 -- [10.x] Add runningConsoleCommand(...$commands) method by [@trevorgehman](https://github.com/trevorgehman) in https://github.com/laravel/framework/pull/48751 -- [10.x] Update annotations in wrap method to accommodate Collection instances by [@salehhashemi1992](https://github.com/salehhashemi1992) in https://github.com/laravel/framework/pull/48746 -- [10.x] Add Tests for Str::replaceMatches Method by [@salehhashemi1992](https://github.com/salehhashemi1992) in https://github.com/laravel/framework/pull/48771 -- [10.x] Do not bubble exceptions thrown rendering error view when debug is false (prevent infinite loops) by [@simensen](https://github.com/simensen) in https://github.com/laravel/framework/pull/48732 -- [10.x] Correct phpdoc for Grammar::setConnection by [@Neol3108](https://github.com/Neol3108) in https://github.com/laravel/framework/pull/48779 -- [10.x] Add `displayName` for queued Artisan commands by [@jessarcher](https://github.com/jessarcher) in https://github.com/laravel/framework/pull/48778 -- [10.x] Test Improvements by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/48797 -- [10.x] Make inherited relations and virtual attributes appear in model:show command by [@sebj54](https://github.com/sebj54) in https://github.com/laravel/framework/pull/48800 - -## [v10.28.0](https://github.com/laravel/framework/compare/v10.27.0...v10.28.0) - 2023-10-10 - -- [10.x] Fixed issue: Added a call to the `getValue` method by [@lozobojan](https://github.com/lozobojan) in https://github.com/laravel/framework/pull/48652 -- [10.x] Add an example for queue retry range option by [@pionl](https://github.com/pionl) in https://github.com/laravel/framework/pull/48691 -- [10.x] Add percentage to be used as High Order Messages by [@WendellAdriel](https://github.com/WendellAdriel) in https://github.com/laravel/framework/pull/48689 -- [10.x] Optimize `exists` validation for empty array input by [@mtawil](https://github.com/mtawil) in https://github.com/laravel/framework/pull/48684 - -## [v10.27.0](https://github.com/laravel/framework/compare/v10.26.2...v10.27.0) - 2023-10-09 - -- [10.x] Store blocks after prepare strings by [@nunomaduro](https://github.com/nunomaduro) in https://github.com/laravel/framework/pull/48641 -- [10.x] throw TransportException instead of Exception in SES mail drivers by [@bchalier](https://github.com/bchalier) in https://github.com/laravel/framework/pull/48645 -- [10.x] Fix `Model::replicate()` when using unique keys by [@axlon](https://github.com/axlon) in https://github.com/laravel/framework/pull/48636 -- [10.x] Don't crash if replacement cannot be represented as a string by [@GrahamCampbell](https://github.com/GrahamCampbell) in https://github.com/laravel/framework/pull/48530 -- [10.x] Extended `pluck()` testcases by [@bert-w](https://github.com/bert-w) in https://github.com/laravel/framework/pull/48657 -- [10.x] Fixes `GeneratorCommand` not able to prevent uppercase reserved name such as `__CLASS__` by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/48667 -- [10.x] Fix timing sensitive flaky test by [@KentarouTakeda](https://github.com/KentarouTakeda) in https://github.com/laravel/framework/pull/48664 -- [10.x] Fixed implementation related to `afterCommit` on Postgres and MSSQL database drivers by [@SakiTakamachi](https://github.com/SakiTakamachi) in https://github.com/laravel/framework/pull/48662 -- [10.x] Implement chunkById in descending order by [@cristiancalara](https://github.com/cristiancalara) in https://github.com/laravel/framework/pull/48666 - -## [v10.26.2](https://github.com/laravel/framework/compare/v10.26.1...v10.26.2) - 2023-10-03 - -- Revert "Hint query builder closures (#48562)" by @taylorotwell in https://github.com/laravel/framework/pull/48620 - -## [v10.26.1](https://github.com/laravel/framework/compare/v10.26.0...v10.26.1) - 2023-10-03 - -- [10.x] Fix selection of vendor files after searching by [@jessarcher](https://github.com/jessarcher) in https://github.com/laravel/framework/pull/48619 - -## [v10.26.0](https://github.com/laravel/framework/compare/v10.25.2...v10.26.0) - 2023-10-03 - -- [10.x] Convert Expression to string for from in having subqueries by @ikari7789 in https://github.com/laravel/framework/pull/48525 -- [10.x] Allow searching on `vendor:publish` prompt by @jessarcher in https://github.com/laravel/framework/pull/48586 -- [10.x] Enhance Test Coverage for Macroable Trait by @salehhashemi1992 in https://github.com/laravel/framework/pull/48583 -- [10.x] Add new SQL error messages by @magnusvin in https://github.com/laravel/framework/pull/48601 -- [10.x] Ensure array cache considers milliseconds by @timacdonald in https://github.com/laravel/framework/pull/48573 -- [10.x] Prevent `session:table` command from creating duplicates by @jessarcher in https://github.com/laravel/framework/pull/48602 -- [10.x] Handle expiration in seconds by @timacdonald in https://github.com/laravel/framework/pull/48600 -- [10.x] Avoid duplicate code for create table commands by extending new `Illuminate\Console\MigrationGeneratorCommand` by @crynobone in https://github.com/laravel/framework/pull/48603 -- [10.x] Add Closure Type Hinting for Query Builders by @AJenbo in https://github.com/laravel/framework/pull/48562 - -## [v10.25.2](https://github.com/laravel/framework/compare/v10.25.1...v10.25.2) - 2023-09-28 - -- [10.x] Account for new MariaDB platform by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/48563 -- [10.x] Add Windows fallback for `multisearch` prompt by [@jessarcher](https://github.com/jessarcher) in https://github.com/laravel/framework/pull/48565 -- Revert "[10.x] Fix blade failing to compile when mixing inline/block [@php](https://github.com/php) directives" by [@driesvints](https://github.com/driesvints) in https://github.com/laravel/framework/pull/48575 -- [10.x] Added Validation Macro Functionality Tests by [@salehhashemi1992](https://github.com/salehhashemi1992) in https://github.com/laravel/framework/pull/48570 -- Revert expiry time changes by [@driesvints](https://github.com/driesvints) in https://github.com/laravel/framework/pull/48576 - -## [v10.25.1](https://github.com/laravel/framework/compare/v10.25.0...v10.25.1) - 2023-09-27 - -- [10.x] Correct parameter type on MakesHttpRequests:followRedirects() by [@AJenbo](https://github.com/AJenbo) in https://github.com/laravel/framework/pull/48557 -- [10.x] Fix `firstOrNew` on `HasManyThrough` relations by [@tonysm](https://github.com/tonysm) in https://github.com/laravel/framework/pull/48542 -- [10.x] Fix "after commit" callbacks not running on nested transactions using `RefreshDatabase` or `DatabaseMigrations` by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/48523 -- [10.x] Use the dedicated key getters in BelongsTo by [@iamgergo](https://github.com/iamgergo) in https://github.com/laravel/framework/pull/48509 -- [10.x] Fix undefined constant `STDIN` error with `Artisan::call` during a request by [@jessarcher](https://github.com/jessarcher) in https://github.com/laravel/framework/pull/48559 - -## [v10.25.0](https://github.com/laravel/framework/compare/v10.24.0...v10.25.0) - 2023-09-26 - -- [10.x] Fix key type in [@return](https://github.com/return) tag of EnumeratesValues::ensure() docblock by [@wimski](https://github.com/wimski) in https://github.com/laravel/framework/pull/48456 -- [10.x] Add str()->take($limit) and Str::take($string, $limit) by [@moshe-autoleadstar](https://github.com/moshe-autoleadstar) in https://github.com/laravel/framework/pull/48467 -- [10.x] Throttle exceptions by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/48391 -- [10.x] Fix blade failing to compile when mixing inline/block [@php](https://github.com/php) directives by [@CalebDW](https://github.com/CalebDW) in https://github.com/laravel/framework/pull/48420 -- [10.x] Fix test name for stringable position by [@shawnlindstrom](https://github.com/shawnlindstrom) in https://github.com/laravel/framework/pull/48480 -- [10.x] Create fluent method convertCase by [@rmunate](https://github.com/rmunate) in https://github.com/laravel/framework/pull/48492 -- [10.x] Fix `CanBeOneOfMany` giving erroneous results by [@Guilhem-DELAITRE](https://github.com/Guilhem-DELAITRE) in https://github.com/laravel/framework/pull/47427 -- [10.x] Disable autoincrement for unsupported column type by [@ikari7789](https://github.com/ikari7789) in https://github.com/laravel/framework/pull/48501 -- [10.x] Increase bcrypt rounds to 12 by [@valorin](https://github.com/valorin) in https://github.com/laravel/framework/pull/48494 -- [10.x] Ensure array driver expires values at the expiry time by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/48497 -- [10.x] Fix typos by [@szepeviktor](https://github.com/szepeviktor) in https://github.com/laravel/framework/pull/48513 -- [10.x] Improve tests for `Arr::first` and `Arr::last` by [@tamiroh](https://github.com/tamiroh) in https://github.com/laravel/framework/pull/48511 -- [10.x] Set morph type for MorphToMany pivot model by [@gazben](https://github.com/gazben) in https://github.com/laravel/framework/pull/48432 -- [10.x] Revert from using `createOrFirst` in other `*OrCreate` methods by [@tonysm](https://github.com/tonysm) in https://github.com/laravel/framework/pull/48531 -- [10.x] Fix typos in tests by [@szepeviktor](https://github.com/szepeviktor) in https://github.com/laravel/framework/pull/48534 -- [10.x] Adds `updateOrCreate` on HasManyThrough relations regression test by [@tonysm](https://github.com/tonysm) in https://github.com/laravel/framework/pull/48533 -- [10.x] Convert exception rate limit to seconds by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/48543 -- [10.x] Adds the `firstOrCreate` and `createOrFirst` methods to the `HasManyThrough` relation by [@tonysm](https://github.com/tonysm) in https://github.com/laravel/framework/pull/48541 -- [10.x] Handle custom extensions when caching views by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/48524 -- [10.x] Set prompt interactivity mode by [@jessarcher](https://github.com/jessarcher) in https://github.com/laravel/framework/pull/48468 - -## [v10.24.0](https://github.com/laravel/framework/compare/v10.23.1...v10.24.0) - 2023-09-19 - -- Make types of parameter of join method consistent in the Query Builder by [@melicerte](https://github.com/melicerte) in https://github.com/laravel/framework/pull/48386 -- [10.x] Fix file race condition after view:cache and artisan up by [@roxik](https://github.com/roxik) in https://github.com/laravel/framework/pull/48368 -- [10.x] Re-enable SQL Server CI by [@GrahamCampbell](https://github.com/GrahamCampbell) in https://github.com/laravel/framework/pull/48393 -- Update request.stub by [@olivsinz](https://github.com/olivsinz) in https://github.com/laravel/framework/pull/48402 -- [10.x] phpdoc: Auth\Access\Response constructor allows null message by [@snmatsui](https://github.com/snmatsui) in https://github.com/laravel/framework/pull/48394 -- [10.x] Test Improvements by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/48390 -- Turn off autocomplete for csrf_field by [@maxheckel](https://github.com/maxheckel) in https://github.com/laravel/framework/pull/48371 -- [10.x] Remove PHP 8.1 Check for including Enums in Tests by [@Jubeki](https://github.com/Jubeki) in https://github.com/laravel/framework/pull/48415 -- [10.x] Improve naming by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/48413 -- [10.x] Fix "Text file busy" error when call deleteDirectory by [@ycs77](https://github.com/ycs77) in https://github.com/laravel/framework/pull/48422 -- Fix Cache::many() with small numeric keys by [@AlexKarpan](https://github.com/AlexKarpan) in https://github.com/laravel/framework/pull/48423 -- [10.x] Update actions/checkout from v3 to v4 by [@tamiroh](https://github.com/tamiroh) in https://github.com/laravel/framework/pull/48439 -- `lazyById` doesn't check availability of id (alias) column in database response and silently ends up with endless loop. `chunkById` does. by [@decadence](https://github.com/decadence) in https://github.com/laravel/framework/pull/48436 -- [10.x] Allow older jobs to be faked by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/48434 -- [10.x] introduce `Str::substrPos` by [@amacado](https://github.com/amacado) in https://github.com/laravel/framework/pull/48421 -- [10.x] Guess table name correctly in migrations if column's name have ('to', 'from' and/or 'in') terms by [@i350](https://github.com/i350) in https://github.com/laravel/framework/pull/48437 -- [10.x] Refactored LazyCollection::take() to save memory by [@fuwasegu](https://github.com/fuwasegu) in https://github.com/laravel/framework/pull/48382 -- [10.x] Get value attribute when default value is an enum by [@squiaios](https://github.com/squiaios) in https://github.com/laravel/framework/pull/48452 -- [10.x] Composer helper improvements by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/48448 -- [10.x] Test Symfony v6.4 by [@driesvints](https://github.com/driesvints) in https://github.com/laravel/framework/pull/48400 - -## [v10.23.1](https://github.com/laravel/framework/compare/v10.23.0...v10.23.1) - 2023-09-13 - -- Use PHP native json_validate in isJson function if available by [@jnoordsij](https://github.com/jnoordsij) in https://github.com/laravel/framework/pull/48367 -- [10.x] Remove and update a few tearDown methods. by [@lucasmichot](https://github.com/lucasmichot) in https://github.com/laravel/framework/pull/48381 -- [10.x] Test Improvements by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/48378 -- add "resolve" to `Component::ignoredMethods()` method by [@PH7-Jack](https://github.com/PH7-Jack) in https://github.com/laravel/framework/pull/48373 -- [10.x] Add `notModified` method to HTTP client by [@lucasmichot](https://github.com/lucasmichot) in https://github.com/laravel/framework/pull/48379 -- [10.x] Update the visibility of setUp and tearDown by [@lucasmichot](https://github.com/lucasmichot) in https://github.com/laravel/framework/pull/48383 -- Revert "[10.x] Validate version and variant in `Str::isUuid()`" by [@taylorotwell](https://github.com/taylorotwell) in https://github.com/laravel/framework/pull/48385 - -## [v10.23.0](https://github.com/laravel/framework/compare/v10.22.0...v10.23.0) - 2023-09-12 - -- [10.x] Do not add token to AWS credentials without validating it first by [@mmehmet](https://github.com/mmehmet) in https://github.com/laravel/framework/pull/48297 -- [10.x] Add array to docs of `ResponseFactory::redirectToAction` by [@NiclasvanEyk](https://github.com/NiclasvanEyk) in https://github.com/laravel/framework/pull/48309 -- [10.x] Deduplicate exceptions by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/48288 -- [10.x] Change Arr::sortRecursiveDesc() method to static. by [@gkisiel](https://github.com/gkisiel) in https://github.com/laravel/framework/pull/48327 -- [10.x] Validate version and variant in `Str::isUuid()` by [@inxilpro](https://github.com/inxilpro) in https://github.com/laravel/framework/pull/48321 -- [10.x] Adds `make:view` Artisan command by [@nunomaduro](https://github.com/nunomaduro) in https://github.com/laravel/framework/pull/48330 -- [10.x] Make ComponentAttributeBag JsonSerializable by [@iamgergo](https://github.com/iamgergo) in https://github.com/laravel/framework/pull/48338 -- [10.x] add missing method to message bag class by [@PH7-Jack](https://github.com/PH7-Jack) in https://github.com/laravel/framework/pull/48348 -- [10.x] Add newResponse method to PendingRequest by [@denniseilander](https://github.com/denniseilander) in https://github.com/laravel/framework/pull/48344 -- [10.x] Add before/after database truncation methods to DatabaseTruncation trait by [@cwilby](https://github.com/cwilby) in https://github.com/laravel/framework/pull/48345 -- [10.x] Passthru test options by [@jasonmccreary](https://github.com/jasonmccreary) in https://github.com/laravel/framework/pull/48335 -- [10.x] Support for phpredis 6.0.0 by [@stemis](https://github.com/stemis) in https://github.com/laravel/framework/pull/48362 -- [10.x] Improve test cases and achieve 100% code coverage by [@sohelrana820](https://github.com/sohelrana820) in https://github.com/laravel/framework/pull/48360 -- [10.x] Support for phpredis 6.0.0 by [@stemis](https://github.com/stemis) in https://github.com/laravel/framework/pull/48364 -- [10.x] Render mailable inline images by [@pniaps](https://github.com/pniaps) in https://github.com/laravel/framework/pull/48292 - -## [v10.22.0](https://github.com/laravel/framework/compare/v10.21.1...v10.22.0) - 2023-09-05 - -- [10.x] Add ulid testing helpers by [@Jasonej](https://github.com/Jasonej) in https://github.com/laravel/framework/pull/48276 -- [10.x] Fix issue with table prefix duplication in DatabaseTruncation trait by [@mobidev86](https://github.com/mobidev86) in https://github.com/laravel/framework/pull/48291 -- [10.x] Fixed a typo in phpdoc block by [@back2Lobby](https://github.com/back2Lobby) in https://github.com/laravel/framework/pull/48296 - -## [v10.21.1](https://github.com/laravel/framework/compare/v10.21.0...v10.21.1) - 2023-09-04 - -- [10.x] HotFix: throw captured `UniqueConstraintViolationException` if there are no matching records on `SELECT` retry by [@mpyw](https://github.com/mpyw) in https://github.com/laravel/framework/pull/48234 -- [10.x] Adds testing helpers for Precognition by [@peterfox](https://github.com/peterfox) in https://github.com/laravel/framework/pull/48151 -- [10.x] GeneratorCommand - Sorting possible models and events by [@TWithers](https://github.com/TWithers) in https://github.com/laravel/framework/pull/48249 -- [10.x] Add Enum Support to the In and NotIn Validation Rules by [@geisi](https://github.com/geisi) in https://github.com/laravel/framework/pull/48247 -- PHP 8.3 Support by [@driesvints](https://github.com/driesvints) in https://github.com/laravel/framework/pull/48265 -- [10.x] Call `renderForAssertions` in all Mailable assertions by [@jamsch](https://github.com/jamsch) in https://github.com/laravel/framework/pull/48254 -- [10.x] Introduce `requireEnv` helper by [@lucasmichot](https://github.com/lucasmichot) in https://github.com/laravel/framework/pull/48261 -- [10.x] Combine prefix with table for `compileDropPrimary` PostgreSQL by [@dyriavin](https://github.com/dyriavin) in https://github.com/laravel/framework/pull/48268 -- [10.x] BelongsToMany Docblock Improvements by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/48282 - -## [v10.21.0](https://github.com/laravel/framework/compare/v10.20.0...v10.21.0) - 2023-08-29 - -- [10.x] Add broadcastAs function at BroadcastNotificationCreated by [@raphaelcangucu](https://github.com/raphaelcangucu) in https://github.com/laravel/framework/pull/48136 -- [10.x] Fix `createOrFirst` on transactions by [@tonysm](https://github.com/tonysm) in https://github.com/laravel/framework/pull/48144 -- [10.x] Improve `PendingRequest::pool()` return type by [@axlon](https://github.com/axlon) in https://github.com/laravel/framework/pull/48150 -- [10.x] Adds start and end string replacement helpers by [@joedixon](https://github.com/joedixon) in https://github.com/laravel/framework/pull/48025 -- [10.x] Fix flaky test using microtime by [@tonysm](https://github.com/tonysm) in https://github.com/laravel/framework/pull/48156 -- [10.x] Allow failed job providers to be countable by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/48177 -- [10.x] Change the return type of getPublicToken function by [@fahamjv](https://github.com/fahamjv) in https://github.com/laravel/framework/pull/48173 -- [10.x] Fix flakey `HttpClientTest` test by [@joshbonnick](https://github.com/joshbonnick) in https://github.com/laravel/framework/pull/48166 -- [10.x] Give access to job UUID in the job queued event by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/48179 -- [10.x] Add `serializeAndRestore()` to `QueueFake` and`BusFake` by [@cosmastech](https://github.com/cosmastech) in https://github.com/laravel/framework/pull/48131 -- Add visibility Support for Scoped Disk Configurations by [@okaufmann](https://github.com/okaufmann) in https://github.com/laravel/framework/pull/48186 -- [10.x] Ensuring Primary Reference on Retry in `createOrFirst()` by [@mpyw](https://github.com/mpyw) in https://github.com/laravel/framework/pull/48161 -- [10.x] Make the `firstOrCreate` methods in relations use `createOrFirst` behind the scenes by [@tonysm](https://github.com/tonysm) in https://github.com/laravel/framework/pull/48192 -- [10.x] Enhancing `updateOrCreate()` to Use `firstOrCreate()` by [@mpyw](https://github.com/mpyw) in https://github.com/laravel/framework/pull/48160 -- [10.x] Introduce short-hand "false" syntax for Blade component props by [@ryangjchandler](https://github.com/ryangjchandler) in https://github.com/laravel/framework/pull/48084 -- [10.x] Fix validation of attributes that depend on previous excluded attribute by [@hans-thomas](https://github.com/hans-thomas) in https://github.com/laravel/framework/pull/48122 -- [10.x] Remove unused `catch` exception variables by [@osbre](https://github.com/osbre) in https://github.com/laravel/framework/pull/48209 -- Revert "feature: introduce short hand false syntax for component prop… by [@driesvints](https://github.com/driesvints) in https://github.com/laravel/framework/pull/48220 -- [10.x] Return from maintenance middleware early if URL is excluded by [@axlon](https://github.com/axlon) in https://github.com/laravel/framework/pull/48218 -- [10.x] Array to string conversion error exception by [@hans-thomas](https://github.com/hans-thomas) in https://github.com/laravel/framework/pull/48219 -- [10.x] Migrate to `laravel/facade-documenter` repository by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/48223 -- Remove unneeded Return type in Docblock of Illuminate\Database\Eloquent\Builder.php by [@FrazerFlanagan](https://github.com/FrazerFlanagan) in https://github.com/laravel/framework/pull/48228 -- [10.x] Fix issues with updated_at by [@driesvints](https://github.com/driesvints) in https://github.com/laravel/framework/pull/48230 -- [10.x] Use Symfony Response in exception handler by [@thomasschiet](https://github.com/thomasschiet) in https://github.com/laravel/framework/pull/48226 -- [10.x] Allow failed jobs to be counted by "connection" and "queue" by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/48216 -- [10.x] Add method `Str::convertCase` by [@rmunate](https://github.com/rmunate) in https://github.com/laravel/framework/pull/48224 -- [10.x] Make the `updateOrCreate` methods in relations use `firstOrCreate` behind the scenes by [@mpyw](https://github.com/mpyw) in https://github.com/laravel/framework/pull/48213 - -## [v10.20.0](https://github.com/laravel/framework/compare/v10.19.0...v10.20.0) - 2023-08-22 - -- [10.x] Allow default values when merging values into a resource by [@axlon](https://github.com/axlon) in https://github.com/laravel/framework/pull/48073 -- [10.x] Adds a `createOrFirst` method to Eloquent by [@tonysm](https://github.com/tonysm) in https://github.com/laravel/framework/pull/47973 -- [10.x] Allow utilising `withTrashed()`, `withoutTrashed()` and `onlyTrashed()` on `MorphTo` relationship even without `SoftDeletes` Model by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/47880 -- [10.x] Mark Request JSON data to be InputBag in docblocks by [@jnoordsij](https://github.com/jnoordsij) in https://github.com/laravel/framework/pull/48085 -- [10.x] Markdown Mailables: Allow omitting Footer and Header when customising components by [@jorisnoo](https://github.com/jorisnoo) in https://github.com/laravel/framework/pull/48080 -- [10.x] Update EmailVerificationRequest return docblock by [@ahmedash95](https://github.com/ahmedash95) in https://github.com/laravel/framework/pull/48087 -- [10.x] Add commonly reusable Composer related commands from 1st party packages by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/48096 -- [10.x] Add ability to measure a single callable and get result by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/48077 -- [10.x] Fixes incorrect method visibility and add unit tests for `Illuminate\Support\Composer` by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/48104 -- [10.x] Skip convert empty string to null test by [@hungthai1401](https://github.com/hungthai1401) in https://github.com/laravel/framework/pull/48105 -- [10.x] Using complete insert for mysqldump when appending migration dump to schema file by [@emulgeator](https://github.com/emulgeator) in https://github.com/laravel/framework/pull/48126 -- [10.x] Add `hasPackage` method to Composer class by [@emargareten](https://github.com/emargareten) in https://github.com/laravel/framework/pull/48124 -- [10.x] Add `assertJsonPathCanonicalizing` method by [@gdebrauwer](https://github.com/gdebrauwer) in https://github.com/laravel/framework/pull/48117 -- [10.x] Configurable storage path via environment variable by [@sl0wik](https://github.com/sl0wik) in https://github.com/laravel/framework/pull/48115 -- [10.x] Support providing subquery as value to `where` builder method by [@gdebrauwer](https://github.com/gdebrauwer) in https://github.com/laravel/framework/pull/48116 -- [10.x] Minor Tweaks by [@utsavsomaiya](https://github.com/utsavsomaiya) in https://github.com/laravel/framework/pull/48138 - -## [v10.19.0](https://github.com/laravel/framework/compare/v10.18.0...v10.19.0) - 2023-08-15 - -- [10.x] Fix typo in update `HasUniqueIds` by [@iamcarlos94](https://github.com/iamcarlos94) in https://github.com/laravel/framework/pull/47994 -- [10.x] Gracefully handle scientific notation by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/48002 -- [10.x] Fix docblocks for throw_if and throw_unless by [@AbdelElrafa](https://github.com/AbdelElrafa) in https://github.com/laravel/framework/pull/48003 -- [10.x] Add `wordWrap` to `Str` by [@joshbonnick](https://github.com/joshbonnick) in https://github.com/laravel/framework/pull/48012 -- [10.x] Fix RetryBatchCommand overlapping of failed jobs when run concurrently with the same Batch ID using isolatableId by [@rybakihor](https://github.com/rybakihor) in https://github.com/laravel/framework/pull/48000 -- [10.x] Fix `assertRedirectToRoute` when route uri is empty by [@khernik93](https://github.com/khernik93) in https://github.com/laravel/framework/pull/48023 -- [10.x] Fix empty table displayed when using the --pending option but there are no pending migrations by [@TheBlckbird](https://github.com/TheBlckbird) in https://github.com/laravel/framework/pull/48019 -- [10.x] Fix forced use of write DB connection by [@oleksiikhr](https://github.com/oleksiikhr) in https://github.com/laravel/framework/pull/48015 -- [10.x] Use model cast when builder created updated at value by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/47942 -- [10.x] Fix Collection::search and LazyCollection::search return type by [@bastien-phi](https://github.com/bastien-phi) in https://github.com/laravel/framework/pull/48030 -- [10.x] Add ability to customize class resolution in event discovery by [@bastien-phi](https://github.com/bastien-phi) in https://github.com/laravel/framework/pull/48031 -- [10.x] Add `percentage` method to Collections by [@WendellAdriel](https://github.com/WendellAdriel) in https://github.com/laravel/framework/pull/48034 -- [10.x] Fix parsing error in console when parameter description contains `--` by [@rxrw](https://github.com/rxrw) in https://github.com/laravel/framework/pull/48021 -- [10.x] Allow Listeners to dynamically specify delay using `withDelay` by [@CalebDW](https://github.com/CalebDW) in https://github.com/laravel/framework/pull/48026 -- [10.x] Add dynamic return types to rescue helper by [@axlon](https://github.com/axlon) in https://github.com/laravel/framework/pull/48062 -- [10.x] createMany & createManyQuietly add count argument by [@JHWelch](https://github.com/JHWelch) in https://github.com/laravel/framework/pull/48048 -- [10.x] Attributes support on default component slot by [@royduin](https://github.com/royduin) in https://github.com/laravel/framework/pull/48039 -- [10.x] Add WithoutRelations attribute for model serialization by [@Neol3108](https://github.com/Neol3108) in https://github.com/laravel/framework/pull/47989 -- [10.x] Can apply WithoutRelations to entire class by [@cosmastech](https://github.com/cosmastech) in https://github.com/laravel/framework/pull/48068 -- [10.x] createMany & createManyQuietly make argument optional by [@JHWelch](https://github.com/JHWelch) in https://github.com/laravel/framework/pull/48070 - -## [v10.18.0](https://github.com/laravel/framework/compare/v17.1...v10.18.0) - 2023-08-08 - -- [10.x] Allow DatabaseRefreshed event to include given `database` and `seed` options by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/47923 -- [10.x] Use generics in `throw_if` and `throw_unless` to indicate dynamic exception type by [@osbre](https://github.com/osbre) in https://github.com/laravel/framework/pull/47938 -- [10.x] Fixes artisan about --only should be case insensitive by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/47955 -- [10.x] Improve decimal shape validation by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/47954 -- docs: update phpdoc in Str helper for remove function by [@squiaios](https://github.com/squiaios) in https://github.com/laravel/framework/pull/47967 -- [10.x] Remove return on void callback by [@gonzunigad](https://github.com/gonzunigad) in https://github.com/laravel/framework/pull/47969 -- [9.x] Improve decimal shape validation by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/47957 -- [10.x] Add `content` method to Vite by [@michael-rubel](https://github.com/michael-rubel) in https://github.com/laravel/framework/pull/47968 -- [10.x] Allow empty port in psql schema dump by [@Arzaroth](https://github.com/Arzaroth) in https://github.com/laravel/framework/pull/47988 -- [10.x] Show config when the value is false or zero by [@saeedhosseiinii](https://github.com/saeedhosseiinii) in https://github.com/laravel/framework/pull/47987 -- [10.x] Add getter for components on IO interaction by [@chris-ware](https://github.com/chris-ware) in https://github.com/laravel/framework/pull/47982 - -## [v10.17.1](https://github.com/laravel/framework/compare/v10.17.0...v10.17.1) - 2023-08-02 - -- [9.x] Back porting #47838 by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/47840 -- [9.x] Normalise predis command argument where it maybe an object. by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/47902 -- [9.x] Migrate JSON data to shared InputBag by [@ImJustToNy](https://github.com/ImJustToNy) in https://github.com/laravel/framework/pull/47919 -- [10.x] Fix docblocks of the dispatchable trait by [@imanghafoori1](https://github.com/imanghafoori1) in https://github.com/laravel/framework/pull/47921 -- [9.x] Circumvent PHP 8.2.9 date format bug that makes artisan serve crash by [@levu42](https://github.com/levu42) in https://github.com/laravel/framework/pull/47931 -- [10.x] Fix prompt and console component spacing when calling another command by [@jessarcher](https://github.com/jessarcher) in https://github.com/laravel/framework/pull/47928 -- [10.x] Fix prompt rendering after `callSilent` by [@jessarcher](https://github.com/jessarcher) in https://github.com/laravel/framework/pull/47929 -- [10.x] Update ensure() collection method to correctly work with Interfaces and object inheritance by [@karpilin](https://github.com/karpilin) in https://github.com/laravel/framework/pull/47934 - -## [v10.17.0](https://github.com/laravel/framework/compare/v10.16.1...v10.17.0) - 2023-08-01 - -- [10.x] Update `TrustProxies` to rely on `$headers` if properly set by [@inxilpro](https://github.com/inxilpro) in https://github.com/laravel/framework/pull/47844 -- [10.x] Accept protocols as argument for URL validation by [@MrMicky-FR](https://github.com/MrMicky-FR) in https://github.com/laravel/framework/pull/47843 -- [10.x] Support human-friendly text for file size by [@jxxe](https://github.com/jxxe) in https://github.com/laravel/framework/pull/47846 -- [10.x] Added UploadedFile as return type by [@khrigo](https://github.com/khrigo) in https://github.com/laravel/framework/pull/47847 -- [10.x] Add option to adjust database default lock timeout by [@joelharkes](https://github.com/joelharkes) in https://github.com/laravel/framework/pull/47854 -- [10.x] PHP 8.3 builds by [@driesvints](https://github.com/driesvints) in https://github.com/laravel/framework/pull/47788 -- [10.x] Add Collection::enforce() method by [@inxilpro](https://github.com/inxilpro) in https://github.com/laravel/framework/pull/47785 -- [10.x] Allow custom mutex names for isolated commands by [@rybakihor](https://github.com/rybakihor) in https://github.com/laravel/framework/pull/47814 -- Fix for issues with closure-based scheduled commands in schedule:test by [@mobidev86](https://github.com/mobidev86) in https://github.com/laravel/framework/pull/47862 -- [10.x] Extract customised deleted_at column name from Model FQN by [@edvordo](https://github.com/edvordo) in https://github.com/laravel/framework/pull/47873 -- [10.x] Adding Minutes Option in Some Frequencies by [@joaopalopes24](https://github.com/joaopalopes24) in https://github.com/laravel/framework/pull/47789 -- [10.x] Add `config:show` command by [@xiCO2k](https://github.com/xiCO2k) in https://github.com/laravel/framework/pull/47858 -- [10.x] Test Improvements for `hashed` password by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/47904 -- [10.x] Use shared facade script by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/47901 -- [10.x] Add --test and --pest options to make:component by [@nshiro](https://github.com/nshiro) in https://github.com/laravel/framework/pull/47894 -- [10.x] Prompts by [@jessarcher](https://github.com/jessarcher) in https://github.com/laravel/framework/pull/46772 -- [10.x] Migrate JSON data to shared InputBag by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/47914 -- [10.x] Fix `Factory::configure()` return type by [@axlon](https://github.com/axlon) in https://github.com/laravel/framework/pull/47920 -- [10.x] Fix Http global middleware for queue, octane, and dependency injection by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/47915 - -## [v10.16.1](https://github.com/laravel/framework/compare/v10.17.1...v10.16.1) - 2023-07-26 - -- [10.x] Fix BusFake::assertChained() for a single job by [@gehrisandro](https://github.com/gehrisandro) in https://github.com/laravel/framework/pull/47832 -- [10.x] Retain `$request->request` `InputBag` type by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/framework/pull/47838 - -## [v10.16.0](https://github.com/laravel/framework/compare/v10.15.0...v10.16.0) - 2023-07-25 - -- [10.x] Improve display of sub-minute tasks in `schedule:list` command. by [@jessarcher](https://github.com/jessarcher) in https://github.com/laravel/framework/pull/47720 -- [10.x] Add new SQL error message "No connection could be made because the target machine actively refused it" by [@magnusvin](https://github.com/magnusvin) in https://github.com/laravel/framework/pull/47718 -- [10.x] Ignore second in HttpRequestTest date comparison by [@kylekatarnls](https://github.com/kylekatarnls) in https://github.com/laravel/framework/pull/47719 -- [10.x] Call `renderForAssertions` in `assertHasSubject` by [@ttrig](https://github.com/ttrig) in https://github.com/laravel/framework/pull/47728 -- [10.x] We dont want Symfony to catch pcntl signal by [@ChristopheBorcard](https://github.com/ChristopheBorcard) in https://github.com/laravel/framework/pull/47725 -- [10.x] Use atomic locks for command mutex by [@Gaitholabi](https://github.com/Gaitholabi) in https://github.com/laravel/framework/pull/47624 -- [10.x] Improve typehint for Model::getConnectionResolver() by [@LukeTowers](https://github.com/LukeTowers) in https://github.com/laravel/framework/pull/47749 -- [10.x] add getRedisConnection to ThrottleRequestsWithRedis by [@snmatsui](https://github.com/snmatsui) in https://github.com/laravel/framework/pull/47742 -- [10.x] Adjusts for Volt by [@nunomaduro](https://github.com/nunomaduro) in https://github.com/laravel/framework/pull/47757 -- [10.x] Fix sql server paging problems by [@joelharkes](https://github.com/joelharkes) in https://github.com/laravel/framework/pull/47763 -- [10.x] Typo type of data by [@hungthai1401](https://github.com/hungthai1401) in https://github.com/laravel/framework/pull/47775 -- [10.x] Add missing tests for the `schedule:list` command. by [@xiCO2k](https://github.com/xiCO2k) in https://github.com/laravel/framework/pull/47787 -- [10.x] Fix `Str::replace` return type by [@datlechin](https://github.com/datlechin) in https://github.com/laravel/framework/pull/47779 -- [10.x] Collection::except() with null returns all by [@pniaps](https://github.com/pniaps) in https://github.com/laravel/framework/pull/47821 -- [10.x] fix issue #47727 with wrong return type by [@renky](https://github.com/renky) in https://github.com/laravel/framework/pull/47820 -- [10.x] Remove unused variable in `VendorPublishCommand` by [@hungthai1401](https://github.com/hungthai1401) in https://github.com/laravel/framework/pull/47817 -- [10.x] Remove unused variable in `MigrateCommand` by [@sangnguyenplus](https://github.com/sangnguyenplus) in https://github.com/laravel/framework/pull/47816 -- [10.x] Revert 47763 fix sql server by [@dunhamjared](https://github.com/dunhamjared) in https://github.com/laravel/framework/pull/47792 -- [10.x] Add test for Message ID, References and Custom Headers for Mailables by [@alexbowers](https://github.com/alexbowers) in https://github.com/laravel/framework/pull/47791 -- [10.x] Add support for `BackedEnum` in Collection `groupBy` method by [@osbre](https://github.com/osbre) in https://github.com/laravel/framework/pull/47823 -- [10.x] Support inline disk for scoped driver by [@alexbowers](https://github.com/alexbowers) in https://github.com/laravel/framework/pull/47776 -- [10.x] Allowing bind of IPv6 addresses in development server by [@MuriloChianfa](https://github.com/MuriloChianfa) in https://github.com/laravel/framework/pull/47804 -- [10.x] Add more info to issue template by [@driesvints](https://github.com/driesvints) in https://github.com/laravel/framework/pull/47828 - -## [v10.15.0](https://github.com/laravel/framework/compare/v10.14.1...v10.15.0) - 2023-07-11 - -- [10.x] Change return type of `getPrivateToken` in AblyBroadcaster by [@milwad](https://github.com/milwad)-dev in https://github.com/laravel/framework/pull/47602 -- [10.x] Add toRawSql, dumpRawSql() and ddRawSql() to Query Builders by [@tpetry](https://github.com/tpetry) in https://github.com/laravel/framework/pull/47507 -- [10.x] Fix recorderHandler not recording changes made by middleware by [@j3j5](https://github.com/j3j5) in https://github.com/laravel/framework/pull/47614 -- Pass queue from Mailable to SendQueuedMailable job by [@Tarpsvo](https://github.com/Tarpsvo) in https://github.com/laravel/framework/pull/47612 -- [10.x] Sub-minute Scheduling by [@jessarcher](https://github.com/jessarcher) in https://github.com/laravel/framework/pull/47279 -- [10.x] Fixes failing tests running on DynamoDB Local 2.0.0 by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/47653 -- [10.x] Allow password reset callback to modify the result by [@GrahamCampbell](https://github.com/GrahamCampbell) in https://github.com/laravel/framework/pull/47641 -- Forget with collections by [@joelbutcher](https://github.com/joelbutcher) in https://github.com/laravel/framework/pull/47637 -- [10.x] Do not apply global scopes when incrementing/decrementing an existing model by [@cosmastech](https://github.com/cosmastech) in https://github.com/laravel/framework/pull/47629 -- [10.x] Adds inline attachments support for "notifications" markdown mailables by [@nunomaduro](https://github.com/nunomaduro) in https://github.com/laravel/framework/pull/47643 -- Assertions for counting outgoing mailables by [@jasonmccreary](https://github.com/jasonmccreary) in https://github.com/laravel/framework/pull/47655 -- [10.x] Add getRawQueryLog() method by [@fuwasegu](https://github.com/fuwasegu) in https://github.com/laravel/framework/pull/47623 -- [10.x] Fix Storage::cloud() return type by [@tattali](https://github.com/tattali) in https://github.com/laravel/framework/pull/47664 -- [10.x] Add `isUrl` to the `Str` class and use it from the validator by [@GrahamCampbell](https://github.com/GrahamCampbell) in https://github.com/laravel/framework/pull/47688 -- [10.x] Remove unwanted call to include stack traces by [@HazzazBinFaiz](https://github.com/HazzazBinFaiz) in https://github.com/laravel/framework/pull/47687 -- [10.x] Make Vite throw a new `ManifestNotFoundException` by [@innocenzi](https://github.com/innocenzi) in https://github.com/laravel/framework/pull/47681 -- [10.x] Move class from file logic in Console Kernel to dedicated method by [@CalebDW](https://github.com/CalebDW) in https://github.com/laravel/framework/pull/47665 -- [10.x] Dispatch model pruning started and ended events by [@ziadoz](https://github.com/ziadoz) in https://github.com/laravel/framework/pull/47669 -- [10.x] Update DatabaseRule to handle Enums for simple where clause by [@CalebDW](https://github.com/CalebDW) in https://github.com/laravel/framework/pull/47679 -- [10.x] Add data_remove helper by [@PhiloNL](https://github.com/PhiloNL) in https://github.com/laravel/framework/pull/47618 -- [10.x] Added tests for `isUrl` to Str. by [@michaelnabil230](https://github.com/michaelnabil230) in https://github.com/laravel/framework/pull/47690 -- [10.x] Added `isUrl` to Stringable. by [@michaelnabil230](https://github.com/michaelnabil230) in https://github.com/laravel/framework/pull/47689 -- [10.x] Tweak return type for missing config by [@sfreytag](https://github.com/sfreytag) in https://github.com/laravel/framework/pull/47702 -- [10.x] Fix parallel testing without any database connection by [@deleugpn](https://github.com/deleugpn) in https://github.com/laravel/framework/pull/47705 -- [10.x] Test Improvements by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/47709 -- [10.x] Allows HTTP exceptions to be thrown for views by [@nunomaduro](https://github.com/nunomaduro) in https://github.com/laravel/framework/pull/47714 - -## [v10.14.1](https://github.com/laravel/framework/compare/v10.14.0...v10.14.1) - 2023-06-28 - -- [10.x] Fix `Dispatcher::until` return type by @Neol3108 in https://github.com/laravel/framework/pull/47585 -- [10.x] Add Collection::wrap to add method on BatchFake by @schonhoff in https://github.com/laravel/framework/pull/47589 -- [10.x] Fixes grammar in FoundationServiceProvider by @adampatterson in https://github.com/laravel/framework/pull/47593 -- [10.x] Ensure duration is present by @timacdonald in https://github.com/laravel/framework/pull/47596 - -## [v10.14.0](https://github.com/laravel/framework/compare/v10.13.5...v10.14.0) - 2023-06-27 - -- [10.x] Add test for `withCookies` method in RedirectResponse by @milwad-dev in https://github.com/laravel/framework/pull/47383 -- [10.x] Add new error message "SSL: Handshake timed out" handling to PDO Dete… by @yehorherasymchuk in https://github.com/laravel/framework/pull/47392 -- [10.x] Add new error messages for detecting lost connections by @mfn in https://github.com/laravel/framework/pull/47398 -- [10.x] Update phpdoc `except` method in Middleware by @milwad-dev in https://github.com/laravel/framework/pull/47408 -- [10.x] Fix inconsistent type hint for `$passwordTimeoutSeconds` by @devfrey in https://github.com/laravel/framework/pull/47414 -- Change visibility of `path` method in FileStore.php by @foremtehan in https://github.com/laravel/framework/pull/47413 -- [10.x] Fix return type of `buildException` method by @milwad-dev in https://github.com/laravel/framework/pull/47422 -- [10.x] Allow serialization of NotificationSent by @cosmastech in https://github.com/laravel/framework/pull/47375 -- [10.x] Incorrect comment in `PredisConnector` and `PhpRedisConnector` by @hungthai1401 in https://github.com/laravel/framework/pull/47438 -- [10.x] Can set custom Response for denial within `Gate@inspect()` by @cosmastech in https://github.com/laravel/framework/pull/47436 -- [10.x] Remove unnecessary param in `addSingletonUpdate` by @milwad-dev in https://github.com/laravel/framework/pull/47446 -- [10.x] Fix return type of `prefixedResource` & `prefixedResource` by @milwad-dev in https://github.com/laravel/framework/pull/47445 -- [10.x] Add Factory::getNamespace() by @tylernathanreed in https://github.com/laravel/framework/pull/47463 -- [10.x] Add `whenAggregated` method to `ConditionallyLoadsAttributes` trait by @akr4m in https://github.com/laravel/framework/pull/47417 -- [10.x] Add PendingRequest `withHeader()` method by @ralphjsmit in https://github.com/laravel/framework/pull/47474 -- [10.x] Fix $exceptTables to allow an array of table names by @cwilby in https://github.com/laravel/framework/pull/47477 -- [10.x] Fix `eachById` on `HasManyThrough` relation by @cristiancalara in https://github.com/laravel/framework/pull/47479 -- [10.x] Allow object caching to be disabled for custom class casters by @CalebDW in https://github.com/laravel/framework/pull/47423 -- [10.x] "Can" validation rule by @stevebauman in https://github.com/laravel/framework/pull/47371 -- [10.x] refactor(Parser.php): Removing the extra "else" statement by @saMahmoudzadeh in https://github.com/laravel/framework/pull/47483 -- [10.x] Add `UncompromisedVerifier::class` to `provides()` in `ValidationServiceProvider` by @xurshudyan in https://github.com/laravel/framework/pull/47500 -- [9.x] Fix SES V2 Transport "reply to" addresses by @jacobmllr95 in https://github.com/laravel/framework/pull/47522 -- [10.x] Reindex appends attributes by @hungthai1401 in https://github.com/laravel/framework/pull/47519 -- [10.x] Fix `ListenerMakeCommand` deprecations by @dammy001 in https://github.com/laravel/framework/pull/47517 -- [10.x] Add `HandlesPotentiallyTranslatedString` trait by @xurshudyan in https://github.com/laravel/framework/pull/47488 -- [10.x] update [JsonResponse]: using match expression instead of if-elseif-else by @saMahmoudzadeh in https://github.com/laravel/framework/pull/47524 -- [10.x] Add `withQueryParameters` to the HTTP client by @mnapoli in https://github.com/laravel/framework/pull/47297 -- [10.x] Allow `%` symbol in component attribute names by @JayBizzle in https://github.com/laravel/framework/pull/47533 -- [10.x] Fix Http client pool return type by @srdante in https://github.com/laravel/framework/pull/47530 -- [10.x] Use `match` expression in `resolveSynchronousFake` by @osbre in https://github.com/laravel/framework/pull/47540 -- [10.x] Use `match` expression in `compileHaving` by @osbre in https://github.com/laravel/framework/pull/47548 -- [10.x] Use `match` expression in `getArrayableItems` by @osbre in https://github.com/laravel/framework/pull/47549 -- [10.x] Fix return type in `SessionGuard` by @PerryvanderMeer in https://github.com/laravel/framework/pull/47553 -- [10.x] Fix return type in `DatabaseQueue` by @PerryvanderMeer in https://github.com/laravel/framework/pull/47552 -- [10.x] Fix return type in `DumpCommand` by @PerryvanderMeer in https://github.com/laravel/framework/pull/47556 -- [10.x] Fix return type in `MigrateMakeCommand` by @PerryvanderMeer in https://github.com/laravel/framework/pull/47557 -- [10.x] Add missing return to `Factory` by @PerryvanderMeer in https://github.com/laravel/framework/pull/47559 -- [10.x] Update doc in Eloquent model by @alirezasalehizadeh in https://github.com/laravel/framework/pull/47562 -- [10.x] Fix return types by @PerryvanderMeer in https://github.com/laravel/framework/pull/47561 -- [10.x] Fix PHPDoc throw type by @fernandokbs in https://github.com/laravel/framework/pull/47566 -- [10.x] Add hasAny function to ComponentAttributeBag, Allow multiple keys in has function by @indykoning in https://github.com/laravel/framework/pull/47569 -- [10.x] Ensure captured time is in configured timezone by @timacdonald in https://github.com/laravel/framework/pull/47567 -- [10.x] Add Method to Report only logged exceptions by @joelharkes in https://github.com/laravel/framework/pull/47554 -- [10.x] Add global middleware to `Http` client by @timacdonald in https://github.com/laravel/framework/pull/47525 -- [9.x] Fixes unable to use `trans()->has()` on JSON language files. by @crynobone in https://github.com/laravel/framework/pull/47582 - -## [v10.13.5](https://github.com/laravel/framework/compare/v10.13.3...v10.13.5) - 2023-06-08 - -- Revert "[10.x] Update Kernel::load() to use same `classFromFile` logic as events" by @taylorotwell in https://github.com/laravel/framework/pull/47382 - -## [v10.13.3](https://github.com/laravel/framework/compare/v10.13.2...v10.13.3) - 2023-06-08 - -### What's Changed - -- Narrow down array type for `$attributes` in `CastsAttributes` by @devfrey in https://github.com/laravel/framework/pull/47365 -- Add test for `assertViewHasAll` method by @milwad-dev in https://github.com/laravel/framework/pull/47366 -- Fix `schedule:list` to display named Jobs by @liamkeily in https://github.com/laravel/framework/pull/47367 -- Support `ConditionalRules` within `NestedRules` by @cosmastech in https://github.com/laravel/framework/pull/47344 -- Small test fixes by @stevebauman in https://github.com/laravel/framework/pull/47369 -- Pluralisation typo in queue:clear command output by @sebsobseb in https://github.com/laravel/framework/pull/47376 -- Add getForeignKeyFrom method by @iamgergo in https://github.com/laravel/framework/pull/47378 -- Add shouldHashKeys to ThrottleRequests middleware by @fosron in https://github.com/laravel/framework/pull/47368 - -## [v10.13.2 (2023-06-05)](https://github.com/laravel/framework/compare/v10.13.1...v10.13.2) - -### Added - -- Added `Illuminate/Http/Client/PendingRequest::replaceHeaders()` ([#47335](https://github.com/laravel/framework/pull/47335)) -- Added `Illuminate/Notifications/Messages/MailMessage::attachMany()` ([#47345](https://github.com/laravel/framework/pull/47345)) - -### Reverted - -- Revert "[10.x] Remove session on authenticatable deletion v2" ([#47354](https://github.com/laravel/framework/pull/47354)) - -### Fixed - -- Fixes usage of Redis::many() with empty array ([#47307](https://github.com/laravel/framework/pull/47307)) -- Fix mapped renderable exception handling ([#47347](https://github.com/laravel/framework/pull/47347)) -- Avoid duplicates in fillable/guarded on merge in Illuminate/Database/Eloquent/Concerns/GuardsAttributes.php ([#47351](https://github.com/laravel/framework/pull/47351)) - -### Changed - -- Update Kernel::load() to use same classFromFile logic as events ([#47327](https://github.com/laravel/framework/pull/47327)) -- Remove redundant 'setAccessible' methods ([#47348](https://github.com/laravel/framework/pull/47348)) - -## [v10.13.1 (2023-06-02)](https://github.com/laravel/framework/compare/v10.13.0...v10.13.1) - -### Added - -- Added `Illuminate\Contracts\Database\Query\ConditionExpression` interface and functional for this ([#47210](https://github.com/laravel/framework/pull/47210)) -- Added return type for `Illuminate/Notifications/Channels/MailChannel::send()` ([#47310](https://github.com/laravel/framework/pull/47310)) - -### Reverted - -- Revert "[10.x] Fix inconsistency between report and render methods" ([#47326](https://github.com/laravel/framework/pull/47326)) - -### Changed - -- Display queue runtime in human readable format ([#47227](https://github.com/laravel/framework/pull/47227)) - -## [v10.13.0 (2023-05-30)](https://github.com/laravel/framework/compare/v10.12.0...v10.13.0) - -### Added - -- Added `Illuminate/Hashing/HashManager::isHashed()` ([#47197](https://github.com/laravel/framework/pull/47197)) -- Escaping functionality within the Grammar ([#46558](https://github.com/laravel/framework/pull/46558)) -- Provide testing hooks in `Illuminate/Support/Sleep.php` ([#47228](https://github.com/laravel/framework/pull/47228)) -- Added missing methods to AssertsStatusCodes ([#47277](https://github.com/laravel/framework/pull/47277)) -- Wrap response preparation in events ([#47229](https://github.com/laravel/framework/pull/47229)) - -### Fixed - -- Fixed bug when function wrapped around definition of related factory ([#47168](https://github.com/laravel/framework/pull/47168)) -- Fixed inconsistency between report and render methods ([#47201](https://github.com/laravel/framework/pull/47201)) -- Fixes Model::isDirty() when AsCollection or AsEncryptedCollection have arguments ([#47235](https://github.com/laravel/framework/pull/47235)) -- Fixed escaped String for JSON_CONTAINS ([#47244](https://github.com/laravel/framework/pull/47244)) -- Fixes missing output on ProcessFailedException exception ([#47285](https://github.com/laravel/framework/pull/47285)) - -### Changed - -- Remove useless else statements ([#47186](https://github.com/laravel/framework/pull/47186)) -- RedisStore improvement - don't open transaction unless all values are serialaizable ([#47193](https://github.com/laravel/framework/pull/47193)) -- Use carbon::now() to get current timestamp in takeUntilTimeout lazycollection-method ([#47200](https://github.com/laravel/framework/pull/47200)) -- Avoid duplicates in visible/hidden on merge ([#47264](https://github.com/laravel/framework/pull/47264)) -- Add a missing semicolon to CompilesClasses ([#47280](https://github.com/laravel/framework/pull/47280)) -- Send along value to InvalidPayloadException ([#47223](https://github.com/laravel/framework/pull/47223)) - -## [v10.12.0 (2023-05-23)](https://github.com/laravel/framework/compare/v10.11.0...v10.12.0) - -### Added - -- Added `Illuminate/Queue/Events/JobTimedOut.php` ([#47068](https://github.com/laravel/framework/pull/47068)) -- Added `when()` and `unless()` methods to `Illuminate/Support/Sleep` ([#47114](https://github.com/laravel/framework/pull/47114)) -- Adds inline attachments support for markdown mailables ([#47140](https://github.com/laravel/framework/pull/47140)) -- Added `Illuminate/Testing/Concerns/AssertsStatusCodes::assertMethodNotAllowed()` ([#47169](https://github.com/laravel/framework/pull/47169)) -- Added `forceCreateQuietly` method ([#47162](https://github.com/laravel/framework/pull/47162)) -- Added parameters to timezone validation rule ([#47171](https://github.com/laravel/framework/pull/47171)) - -### Fixed - -- Fixes singleton and api singletons creatable|destryoable|only|except combinations ([#47098](https://github.com/laravel/framework/pull/47098)) -- Don't use empty key or secret for DynamoDBClient ([#47144](https://github.com/laravel/framework/pull/47144)) - -### Changed - -- Remove session on authenticatable deletion ([#47141](https://github.com/laravel/framework/pull/47141)) -- Added error handling and ensure re-enabling of foreign key constraints in `Illuminate/Database/Schema/Builder::withoutForeignKeyConstraints()` ([#47182](https://github.com/laravel/framework/pull/47182)) - -### Refactoring - -- Remove useless else statements ([#47161](https://github.com/laravel/framework/pull/47161)) - -## [v10.11.0 (2023-05-16)](https://github.com/laravel/framework/compare/v10.10.1...v10.11.0) - -### Added - -- Added the ability to extend the generic types for DatabaseNotificationCollection ([#47048](https://github.com/laravel/framework/pull/47048)) -- Added `/Illuminate/Support/Carbon::createFromId()` ([#47046](https://github.com/laravel/framework/pull/47046)) -- Added Name attributes on slots ([#47065](https://github.com/laravel/framework/pull/47065)) -- Added Precognition-Success header ([#47081](https://github.com/laravel/framework/pull/47081)) -- Added Macroable trait to Sleep class ([#47099](https://github.com/laravel/framework/pull/47099)) - -### Fixed - -- Fixed `Illuminate/Database/Console/ShowModelCommand::getPolicy()` ([#47043](https://github.com/laravel/framework/pull/47043)) - -### Changed - -- Remove return from channelRoutes method ([#47059](https://github.com/laravel/framework/pull/47059)) -- Bug in `Illuminate/Database/Migrations/Migrator::reset()` with string path ([#47047](https://github.com/laravel/framework/pull/47047)) -- Unify logic around cursor paginate ([#47094](https://github.com/laravel/framework/pull/47094)) -- Clears resolved instance of Vite when using withoutVite ([#47091](https://github.com/laravel/framework/pull/47091)) -- Remove workarounds for old Guzzle versions ([#47084](https://github.com/laravel/framework/pull/47084)) - -## [v10.10.1 (2023-05-11)](https://github.com/laravel/framework/compare/v10.10.0...v10.10.1) - -### Added - -- Added `/Illuminate/Collections/Arr::mapWithKeys()` ([#47000](https://github.com/laravel/framework/pull/47000)) -- Added `dd` and `dump` methods to `Illuminate/Support/Carbon.php` ([#47002](https://github.com/laravel/framework/pull/47002)) -- Added `Illuminate/Queue/Failed/FileFailedJobProvider` ([#47007](https://github.com/laravel/framework/pull/47007)) -- Added arguments to the signed middleware to ignore properties ([#46987](https://github.com/laravel/framework/pull/46987)) - -### Fixed - -- Added keys length check to prevent mget error in `Illuminate/Cache/RedisStore::many()` ([#46998](https://github.com/laravel/framework/pull/46998)) -- 'hashed' cast - do not rehash already hashed value ([#47029](https://github.com/laravel/framework/pull/47029)) - -### Changed - -- Used `Carbon::now()` instead of `now()` ([#47017](https://github.com/laravel/framework/pull/47017)) -- Use file locks when writing failed jobs to disk ([b822d28](https://github.com/laravel/framework/commit/b822d2810d29ab1aedf667abc76ed969d28bbaf5)) -- Raise visibility of Mailable prepareMailableForDelivery() ([#47031](https://github.com/laravel/framework/pull/47031)) - -## [v10.10.0 (2023-05-09)](https://github.com/laravel/framework/compare/v10.9.0...v10.10.0) - -### Added - -- Added `$isolated` and `isolatedExitCode` properties to `Illuminate/Console/Command` ([#46925](https://github.com/laravel/framework/pull/46925)) -- Added ability to restore/set Global Scopes ([#46922](https://github.com/laravel/framework/pull/46922)) -- Added `Illuminate/Collections/Arr::sortRecursiveDesc()` ([#46945](https://github.com/laravel/framework/pull/46945)) -- Added `Illuminate/Support/Sleep` ([#46904](https://github.com/laravel/framework/pull/46904), [#46963](https://github.com/laravel/framework/pull/46963)) -- Added `Illuminate/Database/Eloquent/Concerns/HasAttributes::castAttributeAsHashedString()` ([#46947]https://github.com/laravel/framework/pull/46947) -- Added url support for mail config ([#46964](https://github.com/laravel/framework/pull/46964)) - -### Fixed - -- Fixed replace missing_unless ([89ac58a](https://github.com/laravel/framework/commit/89ac58aa9b4fb7ef9f3b2290921488da1454ed30)) -- Gracefully handle invalid code points in e() ([#46914](https://github.com/laravel/framework/pull/46914)) -- HasCasts returning false instead of true ([#46992](https://github.com/laravel/framework/pull/46992)) - -### Changed - -- Use method on UploadedFile to validate image dimensions ([#46912](https://github.com/laravel/framework/pull/46912)) -- Expose Js::json() helper ([#46935](https://github.com/laravel/framework/pull/46935)) -- Respect parents on middleware priority ([#46972](https://github.com/laravel/framework/pull/46972)) -- Do reconnect when redis throws connection lost error ([#46989](https://github.com/laravel/framework/pull/46989)) -- Throw timeoutException instead of maxAttemptsExceededException when a job times out ([#46968](https://github.com/laravel/framework/pull/46968)) - -## [v10.9.0 (2023-04-25)](https://github.com/laravel/framework/compare/v10.8.0...v10.9.0) - -### Added - -- Add new HTTP status assertions ([#46841](https://github.com/laravel/framework/pull/46841)) -- Allow pruning all cancelled and unfinished queue batches ([#46833](https://github.com/laravel/framework/pull/46833)) -- Added `IGNITION_LOCAL_SITES_PATH` to `$passthroughVariables` in `ServeCommand.php` ([#46857](https://github.com/laravel/framework/pull/46857)) -- Added named static methods for middleware ([#46362](https://github.com/laravel/framework/pull/46362)) - -### Fixed - -- Fix date_format rule throw ValueError ([#46824](https://github.com/laravel/framework/pull/46824)) - -### Changed - -- Allow separate directory for locks on filestore ([#46811](https://github.com/laravel/framework/pull/46811)) -- Allow to whereMorphedTo work with null model ([#46821](https://github.com/laravel/framework/pull/46821)) -- Use pivot model fromDateTime instead of assuming Carbon in `Illuminate/Database/Eloquent/Relations/Concerns/InteractsWithPivotTable::addTimestampsToAttachment()` ([#46822](https://github.com/laravel/framework/pull/46822)) -- Make rules method in FormRequest optional ([#46846](https://github.com/laravel/framework/pull/46846)) -- Throw LogicException when calling FileFactory@image() if mimetype is not supported ([#46859](https://github.com/laravel/framework/pull/46859)) -- Improve job release method to accept date instance ([#46854](https://github.com/laravel/framework/pull/46854)) -- Use foreignUlid if model uses HasUlids trait when call foreignIdFor ([#46876](https://github.com/laravel/framework/pull/46876)) - -## [v10.8.0 (2023-04-18)](https://github.com/laravel/framework/compare/v10.7.1...v10.8.0) - -### Added - -- Added syntax sugar to the Process::pipe method ([#46745](https://github.com/laravel/framework/pull/46745)) -- Allow specifying index name when calling ForeignIdColumnDefinition@constrained() ([#46746](https://github.com/laravel/framework/pull/46746)) -- Allow to customise redirect URL in AuthenticateSession Middleware ([#46752](https://github.com/laravel/framework/pull/46752)) -- Added Class based after validation rules ([#46757](https://github.com/laravel/framework/pull/46757)) -- Added max exceptions to broadcast event ([#46800](https://github.com/laravel/framework/pull/46800)) - -### Fixed - -- Fixed compiled view file ends with .php ([#46755](https://github.com/laravel/framework/pull/46755)) -- Fix validation rule names ([#46768](https://github.com/laravel/framework/pull/46768)) -- Fixed validateDecimal() ([#46809](https://github.com/laravel/framework/pull/46809)) - -### Changed - -- Add headers to exception in `Illuminate/Foundation/Application::abourd()` ([#46780](https://github.com/laravel/framework/pull/46780)) -- Minor skeleton slimming (framework edition) ([#46786](https://github.com/laravel/framework/pull/46786)) -- Release lock for job implementing ShouldBeUnique that is dispatched afterResponse() ([#46806](https://github.com/laravel/framework/pull/46806)) - -## [v10.7.1 (2023-04-11)](https://github.com/laravel/framework/compare/v10.7.0...v10.7.1) - -### Changed - -- Changed `Illuminate/Process/Factory::pipe()` method. It will be run pipes immediately ([e34ab39](https://github.com/laravel/framework/commit/e34ab392800bfc175334c90e9321caa7261c2d65)) - -## [v10.7.0 (2023-04-11)](https://github.com/laravel/framework/compare/v10.6.2...v10.7.0) - -### Added - -- Allow `Illuminate/Foundation/Testing/WithFaker` to be used when app is not bound ([#46529](https://github.com/laravel/framework/pull/46529)) -- Allow Event::assertListening to check for invokable event listeners ([#46683](https://github.com/laravel/framework/pull/46683)) -- Added `Illuminate/Process/Factory::pipe()` ([#46527](https://github.com/laravel/framework/pull/46527)) -- Added `Illuminate/Validation/Validator::setValue` ([#46716](https://github.com/laravel/framework/pull/46716)) - -### Fixed - -- PHP 8.0 fix for Closure jobs ([#46505](https://github.com/laravel/framework/pull/46505)) -- Fix preg_split error when there is a slash in the attribute in `Illuminate/Validation/ValidationData` ([#46549](https://github.com/laravel/framework/pull/46549)) -- Fixed Cache::spy incompatibility with Cache::get ([#46689](https://github.com/laravel/framework/pull/46689)) -- server command: Fixed server Closing output on invalid $requestPort ([#46726](https://github.com/laravel/framework/pull/46726)) -- Fix nested join when not JoinClause instance ([#46712](https://github.com/laravel/framework/pull/46712)) -- Fix query builder whereBetween method with carbon date period ([#46720](https://github.com/laravel/framework/pull/46720)) - -### Changed - -- Removes unnecessary parameters in `creatable()` / `destroyable()` methods in `Illuminate/Routing/PendingSingletonResourceRegistration` ([#46677](https://github.com/laravel/framework/pull/46677)) -- Return non-zero exit code for uncaught exceptions ([#46541](https://github.com/laravel/framework/pull/46541)) - -## [v10.6.2 (2023-04-05)](https://github.com/laravel/framework/compare/v10.6.1...v10.6.2) - -### Added - -- Added trait `Illuminate/Foundation/Testing/WithConsoleEvents` ([#46694](https://github.com/laravel/framework/pull/46694)) - -### Changed - -- Added missing ignored methods to `Illuminate/View/Component` ([#46692](https://github.com/laravel/framework/pull/46692)) -- console.stub: remove void return type from handle ([#46697](https://github.com/laravel/framework/pull/46697)) - -## [v10.6.1 (2023-04-04)](https://github.com/laravel/framework/compare/v10.6.0...v10.6.1) - -### Reverted - -- Reverted ["Set container instance on session manager"Set container instance on session manager](https://github.com/laravel/framework/pull/46621) ([#46691](https://github.com/laravel/framework/pull/46691)) - -## [v10.6.0 (2023-04-04)](https://github.com/laravel/framework/compare/v10.5.1...v10.6.0) - -### Added - -- Added ability to set a custom class for the AsCollection and AsEncryptedCollection casts ([#46619](https://github.com/laravel/framework/pull/46619)) - -### Changed - -- Set container instance on session manager ([#46621](https://github.com/laravel/framework/pull/46621)) -- Added empty string definition to Str::squish function ([#46660](https://github.com/laravel/framework/pull/46660)) -- Allow $sleepMilliseconds parameter receive a Closure in retry method from PendingRequest ([#46653](https://github.com/laravel/framework/pull/46653)) -- Support contextual binding on first class callables ([de8d515](https://github.com/laravel/framework/commit/de8d515fc6d1fabc8f14450342554e0eb67df725), [e511a3b](https://github.com/laravel/framework/commit/e511a3bdb15c294866428b4fe665a4ad14540038)) - -## [v10.5.1 (2023-03-29)](https://github.com/laravel/framework/compare/v10.5.0...v10.5.1) - -### Added - -- Added methods to determine if API resource has pivot loaded ([#46555](https://github.com/laravel/framework/pull/46555)) -- Added caseSensitive flag to Stringable replace function ([#46578](https://github.com/laravel/framework/pull/46578)) -- Allow insert..select (insertUsing()) to have empty $columns ([#46605](https://github.com/laravel/framework/pull/46605), [399bff9](https://github.com/laravel/framework/commit/399bff9331252e64a3439ea43e05f87f901dad55)) -- Added `Illuminate/Database/Connection::selectResultSets()` ([#46592](https://github.com/laravel/framework/pull/46592)) - -### Changed - -- Make sure pivot model has previously defined values ([#46559](https://github.com/laravel/framework/pull/46559)) -- Move SetUniqueIds to run before the creating event ([#46622](https://github.com/laravel/framework/pull/46622)) - -## [v10.5.0 (2023-03-28)](https://github.com/laravel/framework/compare/v10.4.1...v10.5.0) - -### Added - -- Added `Illuminate/Cache/CacheManager::setApplication()` ([#46594](https://github.com/laravel/framework/pull/46594)) - -### Fixed - -- Fix infinite loading on batches list on Horizon ([#46536](https://github.com/laravel/framework/pull/46536)) -- Fix whereNull queries with raw expressions for the MySql grammar ([#46538](https://github.com/laravel/framework/pull/46538)) -- Fix getDirty method when using AsEnumArrayObject / AsEnumCollection ([#46561](https://github.com/laravel/framework/pull/46561)) - -### Changed - -- Skip `Illuminate/Support/Reflector::isParameterBackedEnumWithStringBackingType` for non ReflectionNamedType ([#46511](https://github.com/laravel/framework/pull/46511)) -- Replace Deprecated DBAL Comparator creation with schema aware Comparator ([#46517](https://github.com/laravel/framework/pull/46517)) -- Added Storage::json() method to read and decode a json file ([#46548](https://github.com/laravel/framework/pull/46548)) -- Force cast json decoded failed_job_ids to array in DatabaseBatchRepository ([#46581](https://github.com/laravel/framework/pull/46581)) -- Handle empty arrays for DynamoDbStore multi-key operations ([#46579](https://github.com/laravel/framework/pull/46579)) -- Stop adding constraints twice on *Many to *One relationships via one() ([#46575](https://github.com/laravel/framework/pull/46575)) -- allow override of the Builder paginate() total ([#46415](https://github.com/laravel/framework/pull/46415)) -- Add a possibility to set a custom on_stats function for the Http Facade ([#46569](https://github.com/laravel/framework/pull/46569)) - -## [v10.4.1 (2023-03-18)](https://github.com/laravel/framework/compare/v10.4.0...v10.4.1) - -### Changed - -- Move Symfony events dispatcher registration to Console\Kernel ([#46508](https://github.com/laravel/framework/pull/46508)) - -## [v10.4.0 (2023-03-17)](https://github.com/laravel/framework/compare/v10.3.3...v10.4.0) - -### Added - -- Added `Illuminate/Testing/Concerns/AssertsStatusCodes::assertUnsupportedMediaType()` ([#46426](https://github.com/laravel/framework/pull/46426)) -- Added curl_error_code: 77 to DetectsLostConnections ([#46429](https://github.com/laravel/framework/pull/46429)) -- Allow for converting a HasMany to HasOne && MorphMany to MorphOne ([#46443](https://github.com/laravel/framework/pull/46443)) -- Add option to create macroable method for paginationInformation ([#46461](https://github.com/laravel/framework/pull/46461)) -- Added `Illuminate/Filesystem/Filesystem::json()` ([#46481](https://github.com/laravel/framework/pull/46481)) - -### Fixed - -- Fix parsed input arguments for command events using dispatcher rerouting ([#46442](https://github.com/laravel/framework/pull/46442)) -- Fix enums uses with optional implicit parameters ([#46483](https://github.com/laravel/framework/pull/46483)) -- Fix deprecations for embedded images in symfony mailer ([#46488](https://github.com/laravel/framework/pull/46488)) - -### Changed - -- Added alternative database port in Postgres DSN ([#46403](https://github.com/laravel/framework/pull/46403)) -- Allow calling getControllerClass on closure-based routes ([#46411](https://github.com/laravel/framework/pull/46411)) -- Remove obsolete method_exists(ReflectionClass::class, 'isEnum') call ([#46445](https://github.com/laravel/framework/pull/46445)) -- Convert eloquent builder to base builder in whereExists ([#46460](https://github.com/laravel/framework/pull/46460)) -- Refactor shared static methodExcludedByOptions method to trait ([#46498](https://github.com/laravel/framework/pull/46498)) - -## [v10.3.3 (2023-03-09)](https://github.com/laravel/framework/compare/v10.3.2...v10.3.3) - -### Reverted - -- Reverted ["Allow override of the Builder paginate() total"](https://github.com/laravel/framework/pull/46336) ([#46406](https://github.com/laravel/framework/pull/46406)) - -## [v10.3.2 (2023-03-08)](https://github.com/laravel/framework/compare/v10.3.1...v10.3.2) - -### Reverted - -- Reverted ["FIX on CanBeOneOfMany trait giving erroneous results"](https://github.com/laravel/framework/pull/46309) ([#46402](https://github.com/laravel/framework/pull/46402)) - -### Fixed - -- Fixes Expression no longer implements Stringable ([#46395](https://github.com/laravel/framework/pull/46395)) - -## [v10.3.1 (2023-03-08)](https://github.com/laravel/framework/compare/v10.3.0...v10.3.1) - -### Reverted - -- Reverted ["Use fallback when previous URL is the same as the current in `Illuminate/Routing/UrlGenerator::previous()`"](https://github.com/laravel/framework/pull/46234) ([#46392](https://github.com/laravel/framework/pull/46392)) - -## [v10.3.0 (2023-03-07)](https://github.com/laravel/framework/compare/v10.2.0...v10.3.0) - -### Added - -- Adding Pipeline Facade ([#46271](https://github.com/laravel/framework/pull/46271)) -- Add Support for SaveQuietly and Upsert with UUID/ULID Primary Keys ([#46161](https://github.com/laravel/framework/pull/46161)) -- Add charAt method to both Str and Stringable ([#46349](https://github.com/laravel/framework/pull/46349), [dfb59bc2](https://github.com/laravel/framework/commit/dfb59bc263a4e28ac8992deeabd2ccd9392d1681)) -- Adds Countable to the InvokedProcessPool class ([#46346](https://github.com/laravel/framework/pull/46346)) -- Add processors to logging (placeholders) ([#46344](https://github.com/laravel/framework/pull/46344)) - -### Fixed - -- Fixed `Illuminate/Mail/Mailable::buildMarkdownView()` ([791f8ea7](https://github.com/laravel/framework/commit/791f8ea70b5872ae4483a32f6aeb28dd2ed4b8d7)) -- FIX on CanBeOneOfMany trait giving erroneous results ([#46309](https://github.com/laravel/framework/pull/46309)) - -### Changed - -- Use fallback when previous URL is the same as the current in `Illuminate/Routing/UrlGenerator::previous()` ([#46234](https://github.com/laravel/framework/pull/46234)) -- Allow override of the Builder paginate() total ([#46336](https://github.com/laravel/framework/pull/46336)) - -## [v10.2.0 (2023-03-02)](https://github.com/laravel/framework/compare/v10.1.5...v10.2.0) - -### Added - -- Adding `Conditionable` train to Logger ([#46259](https://github.com/laravel/framework/pull/46259)) -- Added "dot" method to Illuminate\Support\Collection class ([#46265](https://github.com/laravel/framework/pull/46265)) -- Added a "channel:list" command ([#46248](https://github.com/laravel/framework/pull/46248)) -- Added JobPopping and JobPopped events ([#46220](https://github.com/laravel/framework/pull/46220)) -- Add isMatch method to Str and Stringable helpers ([#46303](https://github.com/laravel/framework/pull/46303)) -- Add ArrayAccess to Stringable ([#46279](https://github.com/laravel/framework/pull/46279)) - -### Reverted - -- Revert "[10.x] Fix custom themes not resetting on Markdown renderer" ([#46328](https://github.com/laravel/framework/pull/46328)) - -### Fixed - -- Fix typo in function `createMissingSqliteDatbase` name in `src/Illuminate/Database/Console/Migrations/MigrateCommand.php` ([#46326](https://github.com/laravel/framework/pull/46326)) - -### Changed - -- Generate default command name based on class name in `ConsoleMakeCommand` ([#46256](https://github.com/laravel/framework/pull/46256)) -- Do not mutate underlying values on redirect ([#46281](https://github.com/laravel/framework/pull/46281)) -- Do not use null to initialise $lastExecutionStartedAt in `ScheduleWorkCommand` ([#46285](https://github.com/laravel/framework/pull/46285)) -- Remove obsolete function_exists('enum_exists') calls ([#46319](https://github.com/laravel/framework/pull/46319)) -- Cast json decoded failed_job_ids to array in DatabaseBatchRepository::toBatch ([#46329](https://github.com/laravel/framework/pull/46329)) - -## [v10.1.5 (2023-02-24)](https://github.com/laravel/framework/compare/v10.1.4...v10.1.5) - -### Fixed - -- Fixed `Illuminate/Foundation/Testing/Concerns/InteractsWithDatabase::expectsDatabaseQueryCount()` $connection parameter ([#46228](https://github.com/laravel/framework/pull/46228)) -- Fixed Facade Fake ([#46257](https://github.com/laravel/framework/pull/46257)) - -### Changed - -- Remove autoload dumping from make:migration ([#46215](https://github.com/laravel/framework/pull/46215)) - -## [v10.1.4 (2023-02-23)](https://github.com/laravel/framework/compare/v10.1.3...v10.1.4) - -### Changed - -- Improve Facade Fake Awareness ([#46188](https://github.com/laravel/framework/pull/46188), [#46232](https://github.com/laravel/framework/pull/46232)) - -## [v10.1.3 (2023-02-22)](https://github.com/laravel/framework/compare/v10.1.2...v10.1.3) - -### Added - -- Added protected method `Illuminate/Http/Resources/Json/JsonResource::newCollection()` for simplifies collection customisation ([#46217](https://github.com/laravel/framework/pull/46217)) - -### Fixed - -- Fixes constructable migrations ([#46223](https://github.com/laravel/framework/pull/46223)) - -### Changes - -- Accept time when generating ULID in `Str::ulid()` ([#46201](https://github.com/laravel/framework/pull/46201)) - -## [v10.1.2 (2023-02-22)](https://github.com/laravel/framework/compare/v10.1.1...v10.1.2) - -### Reverted - -- Revert changes from `Arr::random()` ([cf3eb90](https://github.com/laravel/framework/commit/cf3eb90a6473444bb7a78d1a3af1e9312a62020d)) - -## [v10.1.1 (2023-02-21)](https://github.com/laravel/framework/compare/v10.1.0...v10.1.1) - -### Added - -- Add the ability to re-resolve cache drivers ([#46203](https://github.com/laravel/framework/pull/46203)) - -### Fixed - -- Fixed `Illuminate/Collections/Arr::shuffle()` for empty array ([0c6cae0](https://github.com/laravel/framework/commit/0c6cae0ef647158b9554cad05ff39db7e7ad0d33)) - -## [v10.1.0 (2023-02-21)](https://github.com/laravel/framework/compare/v10.0.3...v10.1.0) - -### Fixed - -- Fixing issue where 0 is discarded as a valid timestamp ([#46158](https://github.com/laravel/framework/pull/46158)) -- Fix custom themes not resetting on Markdown renderer ([#46200](https://github.com/laravel/framework/pull/46200)) - -### Changed - -- Use secure randomness in Arr:random and Arr:shuffle ([#46105](https://github.com/laravel/framework/pull/46105)) -- Use mixed return type on controller stubs ([#46166](https://github.com/laravel/framework/pull/46166)) -- Use InteractsWithDictionary in Eloquent collection ([#46196](https://github.com/laravel/framework/pull/46196)) - -## [v10.0.3 (2023-02-17)](https://github.com/laravel/framework/compare/v10.0.2...v10.0.3) - -### Added - -- Added missing expression support for pluck in Builder ([#46146](https://github.com/laravel/framework/pull/46146)) - -## [v10.0.2 (2023-02-16)](https://github.com/laravel/framework/compare/v10.0.1...v10.0.2) - -### Added - -- Register policies automatically to the gate ([#46132](https://github.com/laravel/framework/pull/46132)) - -## [v10.0.1 (2023-02-16)](https://github.com/laravel/framework/compare/v10.0.0...v10.0.1) - -### Added - -- Standard Input can be applied to PendingProcess ([#46119](https://github.com/laravel/framework/pull/46119)) - -### Fixed - -- Fix Expression string casting ([#46137](https://github.com/laravel/framework/pull/46137)) - -### Changed - -- Add AddQueuedCookiesToResponse to middlewarePriority so it is handled in the right place ([#46130](https://github.com/laravel/framework/pull/46130)) -- Show queue connection in MonitorCommand ([#46122](https://github.com/laravel/framework/pull/46122)) - -## [v10.0.0 (2023-02-14)](https://github.com/laravel/framework/compare/v10.0.0...10.x) - -Please consult the [upgrade guide](https://laravel.com/docs/10.x/upgrade) and [release notes](https://laravel.com/docs/10.x/releases) in the official Laravel documentation. diff --git a/docker/streamline-src/vendor/laravel/framework/composer.json b/docker/streamline-src/vendor/laravel/framework/composer.json deleted file mode 100644 index 38408548..00000000 --- a/docker/streamline-src/vendor/laravel/framework/composer.json +++ /dev/null @@ -1,203 +0,0 @@ -{ - "name": "laravel/framework", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "homepage": "https://laravel.com", - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "require": { - "php": "^8.1", - "ext-ctype": "*", - "ext-filter": "*", - "ext-hash": "*", - "ext-mbstring": "*", - "ext-openssl": "*", - "ext-session": "*", - "ext-tokenizer": "*", - "composer-runtime-api": "^2.2", - "brick/math": "^0.9.3|^0.10.2|^0.11|^0.12", - "doctrine/inflector": "^2.0.5", - "dragonmantank/cron-expression": "^3.3.2", - "egulias/email-validator": "^3.2.1|^4.0", - "fruitcake/php-cors": "^1.2", - "guzzlehttp/uri-template": "^1.0", - "laravel/prompts": "^0.1.9", - "laravel/serializable-closure": "^1.3", - "league/commonmark": "^2.2.1", - "league/flysystem": "^3.8.0", - "monolog/monolog": "^3.0", - "nesbot/carbon": "^2.67", - "nunomaduro/termwind": "^1.13", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.7", - "symfony/console": "^6.2", - "symfony/error-handler": "^6.2", - "symfony/finder": "^6.2", - "symfony/http-foundation": "^6.4", - "symfony/http-kernel": "^6.2", - "symfony/mailer": "^6.2", - "symfony/mime": "^6.2", - "symfony/process": "^6.2", - "symfony/routing": "^6.2", - "symfony/uid": "^6.2", - "symfony/var-dumper": "^6.2", - "tijsverkoyen/css-to-inline-styles": "^2.2.5", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/process": "self.version", - "illuminate/queue": "self.version", - "illuminate/redis": "self.version", - "illuminate/routing": "self.version", - "illuminate/session": "self.version", - "illuminate/support": "self.version", - "illuminate/testing": "self.version", - "illuminate/translation": "self.version", - "illuminate/validation": "self.version", - "illuminate/view": "self.version" - }, - "require-dev": { - "ext-gmp": "*", - "ably/ably-php": "^1.0", - "aws/aws-sdk-php": "^3.235.5", - "doctrine/dbal": "^3.5.1", - "fakerphp/faker": "^1.21", - "guzzlehttp/guzzle": "^7.5", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-path-prefixing": "^3.3", - "league/flysystem-read-only": "^3.3", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.5.1", - "nyholm/psr7": "^1.2", - "orchestra/testbench-core": "^8.23.4", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "~1.11.11", - "phpunit/phpunit": "^10.0.7", - "predis/predis": "^2.0.2", - "symfony/cache": "^6.2", - "symfony/http-client": "^6.2.4", - "symfony/psr-http-message-bridge": "^2.0" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "conflict": { - "carbonphp/carbon-doctrine-types": ">=3.0", - "doctrine/dbal": ">=4.0", - "mockery/mockery": "1.6.8", - "tightenco/collect": "<5.5.33", - "phpunit/phpunit": ">=11.0.0" - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Filesystem/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "autoload-dev": { - "files": [ - "tests/Database/stubs/MigrationCreatorFakeMigration.php" - ], - "psr-4": { - "Illuminate\\Tests\\": "tests/" - } - }, - "extra": { - "branch-alias": { - "dev-master": "10.x-dev" - } - }, - "suggest": { - "ext-apcu": "Required to use the APC cache driver.", - "ext-fileinfo": "Required to use the Filesystem class.", - "ext-ftp": "Required to use the Flysystem FTP driver.", - "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", - "ext-memcached": "Required to use the memcache cache driver.", - "ext-pcntl": "Required to use all features of the queue worker and console signal trapping.", - "ext-pdo": "Required to use all database features.", - "ext-posix": "Required to use all features of the queue worker.", - "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", - "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", - "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.235.5).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^3.5.1).", - "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", - "filp/whoops": "Required for friendly error pages in development (^2.14.3).", - "guzzlehttp/guzzle": "Required to use the HTTP Client and the ping methods on schedules (^7.5).", - "laravel/tinker": "Required to use the tinker console command (^2.0).", - "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.0).", - "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.0).", - "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.3).", - "league/flysystem-read-only": "Required to use read-only disks (^3.3)", - "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.5.1).", - "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", - "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", - "phpunit/phpunit": "Required to use assertions and run tests (^9.5.8|^10.0.7).", - "predis/predis": "Required to use the predis connector (^2.0.2).", - "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", - "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).", - "symfony/cache": "Required to PSR-6 cache bridge (^6.2).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.2).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.2).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.2).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.2).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "config": { - "sort-packages": true, - "allow-plugins": { - "composer/package-versions-deprecated": true - } - }, - "minimum-stability": "stable", - "prefer-stable": true -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Auth/Access/AuthorizationException.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Auth/Access/AuthorizationException.php deleted file mode 100644 index 1454bde2..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Auth/Access/AuthorizationException.php +++ /dev/null @@ -1,114 +0,0 @@ -code = $code ?: 0; - } - - /** - * Get the response from the gate. - * - * @return \Illuminate\Auth\Access\Response - */ - public function response() - { - return $this->response; - } - - /** - * Set the response from the gate. - * - * @param \Illuminate\Auth\Access\Response $response - * @return $this - */ - public function setResponse($response) - { - $this->response = $response; - - return $this; - } - - /** - * Set the HTTP response status code. - * - * @param int|null $status - * @return $this - */ - public function withStatus($status) - { - $this->status = $status; - - return $this; - } - - /** - * Set the HTTP response status code to 404. - * - * @return $this - */ - public function asNotFound() - { - return $this->withStatus(404); - } - - /** - * Determine if the HTTP status code has been set. - * - * @return bool - */ - public function hasStatus() - { - return $this->status !== null; - } - - /** - * Get the HTTP status code. - * - * @return int|null - */ - public function status() - { - return $this->status; - } - - /** - * Create a deny response object from this exception. - * - * @return \Illuminate\Auth\Access\Response - */ - public function toResponse() - { - return Response::deny($this->message, $this->code)->withStatus($this->status); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Auth/Access/Gate.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Auth/Access/Gate.php deleted file mode 100644 index 2f0c6c6c..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Auth/Access/Gate.php +++ /dev/null @@ -1,898 +0,0 @@ -policies = $policies; - $this->container = $container; - $this->abilities = $abilities; - $this->userResolver = $userResolver; - $this->afterCallbacks = $afterCallbacks; - $this->beforeCallbacks = $beforeCallbacks; - $this->guessPolicyNamesUsingCallback = $guessPolicyNamesUsingCallback; - } - - /** - * Determine if a given ability has been defined. - * - * @param string|array $ability - * @return bool - */ - public function has($ability) - { - $abilities = is_array($ability) ? $ability : func_get_args(); - - foreach ($abilities as $ability) { - if (! isset($this->abilities[$ability])) { - return false; - } - } - - return true; - } - - /** - * Perform an on-demand authorization check. Throw an authorization exception if the condition or callback is false. - * - * @param \Illuminate\Auth\Access\Response|\Closure|bool $condition - * @param string|null $message - * @param string|null $code - * @return \Illuminate\Auth\Access\Response - * - * @throws \Illuminate\Auth\Access\AuthorizationException - */ - public function allowIf($condition, $message = null, $code = null) - { - return $this->authorizeOnDemand($condition, $message, $code, true); - } - - /** - * Perform an on-demand authorization check. Throw an authorization exception if the condition or callback is true. - * - * @param \Illuminate\Auth\Access\Response|\Closure|bool $condition - * @param string|null $message - * @param string|null $code - * @return \Illuminate\Auth\Access\Response - * - * @throws \Illuminate\Auth\Access\AuthorizationException - */ - public function denyIf($condition, $message = null, $code = null) - { - return $this->authorizeOnDemand($condition, $message, $code, false); - } - - /** - * Authorize a given condition or callback. - * - * @param \Illuminate\Auth\Access\Response|\Closure|bool $condition - * @param string|null $message - * @param string|null $code - * @param bool $allowWhenResponseIs - * @return \Illuminate\Auth\Access\Response - * - * @throws \Illuminate\Auth\Access\AuthorizationException - */ - protected function authorizeOnDemand($condition, $message, $code, $allowWhenResponseIs) - { - $user = $this->resolveUser(); - - if ($condition instanceof Closure) { - $response = $this->canBeCalledWithUser($user, $condition) - ? $condition($user) - : new Response(false, $message, $code); - } else { - $response = $condition; - } - - return with($response instanceof Response ? $response : new Response( - (bool) $response === $allowWhenResponseIs, $message, $code - ))->authorize(); - } - - /** - * Define a new ability. - * - * @param string $ability - * @param callable|array|string $callback - * @return $this - * - * @throws \InvalidArgumentException - */ - public function define($ability, $callback) - { - if (is_array($callback) && isset($callback[0]) && is_string($callback[0])) { - $callback = $callback[0].'@'.$callback[1]; - } - - if (is_callable($callback)) { - $this->abilities[$ability] = $callback; - } elseif (is_string($callback)) { - $this->stringCallbacks[$ability] = $callback; - - $this->abilities[$ability] = $this->buildAbilityCallback($ability, $callback); - } else { - throw new InvalidArgumentException("Callback must be a callable, callback array, or a 'Class@method' string."); - } - - return $this; - } - - /** - * Define abilities for a resource. - * - * @param string $name - * @param string $class - * @param array|null $abilities - * @return $this - */ - public function resource($name, $class, ?array $abilities = null) - { - $abilities = $abilities ?: [ - 'viewAny' => 'viewAny', - 'view' => 'view', - 'create' => 'create', - 'update' => 'update', - 'delete' => 'delete', - ]; - - foreach ($abilities as $ability => $method) { - $this->define($name.'.'.$ability, $class.'@'.$method); - } - - return $this; - } - - /** - * Create the ability callback for a callback string. - * - * @param string $ability - * @param string $callback - * @return \Closure - */ - protected function buildAbilityCallback($ability, $callback) - { - return function () use ($ability, $callback) { - if (str_contains($callback, '@')) { - [$class, $method] = Str::parseCallback($callback); - } else { - $class = $callback; - } - - $policy = $this->resolvePolicy($class); - - $arguments = func_get_args(); - - $user = array_shift($arguments); - - $result = $this->callPolicyBefore( - $policy, $user, $ability, $arguments - ); - - if (! is_null($result)) { - return $result; - } - - return isset($method) - ? $policy->{$method}(...func_get_args()) - : $policy(...func_get_args()); - }; - } - - /** - * Define a policy class for a given class type. - * - * @param string $class - * @param string $policy - * @return $this - */ - public function policy($class, $policy) - { - $this->policies[$class] = $policy; - - return $this; - } - - /** - * Register a callback to run before all Gate checks. - * - * @param callable $callback - * @return $this - */ - public function before(callable $callback) - { - $this->beforeCallbacks[] = $callback; - - return $this; - } - - /** - * Register a callback to run after all Gate checks. - * - * @param callable $callback - * @return $this - */ - public function after(callable $callback) - { - $this->afterCallbacks[] = $callback; - - return $this; - } - - /** - * Determine if all of the given abilities should be granted for the current user. - * - * @param iterable|string $ability - * @param array|mixed $arguments - * @return bool - */ - public function allows($ability, $arguments = []) - { - return $this->check($ability, $arguments); - } - - /** - * Determine if any of the given abilities should be denied for the current user. - * - * @param iterable|string $ability - * @param array|mixed $arguments - * @return bool - */ - public function denies($ability, $arguments = []) - { - return ! $this->allows($ability, $arguments); - } - - /** - * Determine if all of the given abilities should be granted for the current user. - * - * @param iterable|string $abilities - * @param array|mixed $arguments - * @return bool - */ - public function check($abilities, $arguments = []) - { - return collect($abilities)->every( - fn ($ability) => $this->inspect($ability, $arguments)->allowed() - ); - } - - /** - * Determine if any one of the given abilities should be granted for the current user. - * - * @param iterable|string $abilities - * @param array|mixed $arguments - * @return bool - */ - public function any($abilities, $arguments = []) - { - return collect($abilities)->contains(fn ($ability) => $this->check($ability, $arguments)); - } - - /** - * Determine if all of the given abilities should be denied for the current user. - * - * @param iterable|string $abilities - * @param array|mixed $arguments - * @return bool - */ - public function none($abilities, $arguments = []) - { - return ! $this->any($abilities, $arguments); - } - - /** - * Determine if the given ability should be granted for the current user. - * - * @param string $ability - * @param array|mixed $arguments - * @return \Illuminate\Auth\Access\Response - * - * @throws \Illuminate\Auth\Access\AuthorizationException - */ - public function authorize($ability, $arguments = []) - { - return $this->inspect($ability, $arguments)->authorize(); - } - - /** - * Inspect the user for the given ability. - * - * @param string $ability - * @param array|mixed $arguments - * @return \Illuminate\Auth\Access\Response - */ - public function inspect($ability, $arguments = []) - { - try { - $result = $this->raw($ability, $arguments); - - if ($result instanceof Response) { - return $result; - } - - return $result - ? Response::allow() - : ($this->defaultDenialResponse ?? Response::deny()); - } catch (AuthorizationException $e) { - return $e->toResponse(); - } - } - - /** - * Get the raw result from the authorization callback. - * - * @param string $ability - * @param array|mixed $arguments - * @return mixed - * - * @throws \Illuminate\Auth\Access\AuthorizationException - */ - public function raw($ability, $arguments = []) - { - $arguments = Arr::wrap($arguments); - - $user = $this->resolveUser(); - - // First we will call the "before" callbacks for the Gate. If any of these give - // back a non-null response, we will immediately return that result in order - // to let the developers override all checks for some authorization cases. - $result = $this->callBeforeCallbacks( - $user, $ability, $arguments - ); - - if (is_null($result)) { - $result = $this->callAuthCallback($user, $ability, $arguments); - } - - // After calling the authorization callback, we will call the "after" callbacks - // that are registered with the Gate, which allows a developer to do logging - // if that is required for this application. Then we'll return the result. - return tap($this->callAfterCallbacks( - $user, $ability, $arguments, $result - ), function ($result) use ($user, $ability, $arguments) { - $this->dispatchGateEvaluatedEvent($user, $ability, $arguments, $result); - }); - } - - /** - * Determine whether the callback/method can be called with the given user. - * - * @param \Illuminate\Contracts\Auth\Authenticatable|null $user - * @param \Closure|string|array $class - * @param string|null $method - * @return bool - */ - protected function canBeCalledWithUser($user, $class, $method = null) - { - if (! is_null($user)) { - return true; - } - - if (! is_null($method)) { - return $this->methodAllowsGuests($class, $method); - } - - if (is_array($class)) { - $className = is_string($class[0]) ? $class[0] : get_class($class[0]); - - return $this->methodAllowsGuests($className, $class[1]); - } - - return $this->callbackAllowsGuests($class); - } - - /** - * Determine if the given class method allows guests. - * - * @param string $class - * @param string $method - * @return bool - */ - protected function methodAllowsGuests($class, $method) - { - try { - $reflection = new ReflectionClass($class); - - $method = $reflection->getMethod($method); - } catch (Exception) { - return false; - } - - if ($method) { - $parameters = $method->getParameters(); - - return isset($parameters[0]) && $this->parameterAllowsGuests($parameters[0]); - } - - return false; - } - - /** - * Determine if the callback allows guests. - * - * @param callable $callback - * @return bool - * - * @throws \ReflectionException - */ - protected function callbackAllowsGuests($callback) - { - $parameters = (new ReflectionFunction($callback))->getParameters(); - - return isset($parameters[0]) && $this->parameterAllowsGuests($parameters[0]); - } - - /** - * Determine if the given parameter allows guests. - * - * @param \ReflectionParameter $parameter - * @return bool - */ - protected function parameterAllowsGuests($parameter) - { - return ($parameter->hasType() && $parameter->allowsNull()) || - ($parameter->isDefaultValueAvailable() && is_null($parameter->getDefaultValue())); - } - - /** - * Resolve and call the appropriate authorization callback. - * - * @param \Illuminate\Contracts\Auth\Authenticatable|null $user - * @param string $ability - * @param array $arguments - * @return bool - */ - protected function callAuthCallback($user, $ability, array $arguments) - { - $callback = $this->resolveAuthCallback($user, $ability, $arguments); - - return $callback($user, ...$arguments); - } - - /** - * Call all of the before callbacks and return if a result is given. - * - * @param \Illuminate\Contracts\Auth\Authenticatable|null $user - * @param string $ability - * @param array $arguments - * @return bool|null - */ - protected function callBeforeCallbacks($user, $ability, array $arguments) - { - foreach ($this->beforeCallbacks as $before) { - if (! $this->canBeCalledWithUser($user, $before)) { - continue; - } - - if (! is_null($result = $before($user, $ability, $arguments))) { - return $result; - } - } - } - - /** - * Call all of the after callbacks with check result. - * - * @param \Illuminate\Contracts\Auth\Authenticatable $user - * @param string $ability - * @param array $arguments - * @param bool $result - * @return bool|null - */ - protected function callAfterCallbacks($user, $ability, array $arguments, $result) - { - foreach ($this->afterCallbacks as $after) { - if (! $this->canBeCalledWithUser($user, $after)) { - continue; - } - - $afterResult = $after($user, $ability, $result, $arguments); - - $result ??= $afterResult; - } - - return $result; - } - - /** - * Dispatch a gate evaluation event. - * - * @param \Illuminate\Contracts\Auth\Authenticatable|null $user - * @param string $ability - * @param array $arguments - * @param bool|null $result - * @return void - */ - protected function dispatchGateEvaluatedEvent($user, $ability, array $arguments, $result) - { - if ($this->container->bound(Dispatcher::class)) { - $this->container->make(Dispatcher::class)->dispatch( - new GateEvaluated($user, $ability, $result, $arguments) - ); - } - } - - /** - * Resolve the callable for the given ability and arguments. - * - * @param \Illuminate\Contracts\Auth\Authenticatable|null $user - * @param string $ability - * @param array $arguments - * @return callable - */ - protected function resolveAuthCallback($user, $ability, array $arguments) - { - if (isset($arguments[0]) && - ! is_null($policy = $this->getPolicyFor($arguments[0])) && - $callback = $this->resolvePolicyCallback($user, $ability, $arguments, $policy)) { - return $callback; - } - - if (isset($this->stringCallbacks[$ability])) { - [$class, $method] = Str::parseCallback($this->stringCallbacks[$ability]); - - if ($this->canBeCalledWithUser($user, $class, $method ?: '__invoke')) { - return $this->abilities[$ability]; - } - } - - if (isset($this->abilities[$ability]) && - $this->canBeCalledWithUser($user, $this->abilities[$ability])) { - return $this->abilities[$ability]; - } - - return function () { - // - }; - } - - /** - * Get a policy instance for a given class. - * - * @param object|string $class - * @return mixed - */ - public function getPolicyFor($class) - { - if (is_object($class)) { - $class = get_class($class); - } - - if (! is_string($class)) { - return; - } - - if (isset($this->policies[$class])) { - return $this->resolvePolicy($this->policies[$class]); - } - - foreach ($this->guessPolicyName($class) as $guessedPolicy) { - if (class_exists($guessedPolicy)) { - return $this->resolvePolicy($guessedPolicy); - } - } - - foreach ($this->policies as $expected => $policy) { - if (is_subclass_of($class, $expected)) { - return $this->resolvePolicy($policy); - } - } - } - - /** - * Guess the policy name for the given class. - * - * @param string $class - * @return array - */ - protected function guessPolicyName($class) - { - if ($this->guessPolicyNamesUsingCallback) { - return Arr::wrap(call_user_func($this->guessPolicyNamesUsingCallback, $class)); - } - - $classDirname = str_replace('/', '\\', dirname(str_replace('\\', '/', $class))); - - $classDirnameSegments = explode('\\', $classDirname); - - return Arr::wrap(Collection::times(count($classDirnameSegments), function ($index) use ($class, $classDirnameSegments) { - $classDirname = implode('\\', array_slice($classDirnameSegments, 0, $index)); - - return $classDirname.'\\Policies\\'.class_basename($class).'Policy'; - })->reverse()->values()->first(function ($class) { - return class_exists($class); - }) ?: [$classDirname.'\\Policies\\'.class_basename($class).'Policy']); - } - - /** - * Specify a callback to be used to guess policy names. - * - * @param callable $callback - * @return $this - */ - public function guessPolicyNamesUsing(callable $callback) - { - $this->guessPolicyNamesUsingCallback = $callback; - - return $this; - } - - /** - * Build a policy class instance of the given type. - * - * @param object|string $class - * @return mixed - * - * @throws \Illuminate\Contracts\Container\BindingResolutionException - */ - public function resolvePolicy($class) - { - return $this->container->make($class); - } - - /** - * Resolve the callback for a policy check. - * - * @param \Illuminate\Contracts\Auth\Authenticatable $user - * @param string $ability - * @param array $arguments - * @param mixed $policy - * @return bool|callable - */ - protected function resolvePolicyCallback($user, $ability, array $arguments, $policy) - { - if (! is_callable([$policy, $this->formatAbilityToMethod($ability)])) { - return false; - } - - return function () use ($user, $ability, $arguments, $policy) { - // This callback will be responsible for calling the policy's before method and - // running this policy method if necessary. This is used to when objects are - // mapped to policy objects in the user's configurations or on this class. - $result = $this->callPolicyBefore( - $policy, $user, $ability, $arguments - ); - - // When we receive a non-null result from this before method, we will return it - // as the "final" results. This will allow developers to override the checks - // in this policy to return the result for all rules defined in the class. - if (! is_null($result)) { - return $result; - } - - $method = $this->formatAbilityToMethod($ability); - - return $this->callPolicyMethod($policy, $method, $user, $arguments); - }; - } - - /** - * Call the "before" method on the given policy, if applicable. - * - * @param mixed $policy - * @param \Illuminate\Contracts\Auth\Authenticatable $user - * @param string $ability - * @param array $arguments - * @return mixed - */ - protected function callPolicyBefore($policy, $user, $ability, $arguments) - { - if (! method_exists($policy, 'before')) { - return; - } - - if ($this->canBeCalledWithUser($user, $policy, 'before')) { - return $policy->before($user, $ability, ...$arguments); - } - } - - /** - * Call the appropriate method on the given policy. - * - * @param mixed $policy - * @param string $method - * @param \Illuminate\Contracts\Auth\Authenticatable|null $user - * @param array $arguments - * @return mixed - */ - protected function callPolicyMethod($policy, $method, $user, array $arguments) - { - // If this first argument is a string, that means they are passing a class name - // to the policy. We will remove the first argument from this argument array - // because this policy already knows what type of models it can authorize. - if (isset($arguments[0]) && is_string($arguments[0])) { - array_shift($arguments); - } - - if (! is_callable([$policy, $method])) { - return; - } - - if ($this->canBeCalledWithUser($user, $policy, $method)) { - return $policy->{$method}($user, ...$arguments); - } - } - - /** - * Format the policy ability into a method name. - * - * @param string $ability - * @return string - */ - protected function formatAbilityToMethod($ability) - { - return str_contains($ability, '-') ? Str::camel($ability) : $ability; - } - - /** - * Get a gate instance for the given user. - * - * @param \Illuminate\Contracts\Auth\Authenticatable|mixed $user - * @return static - */ - public function forUser($user) - { - $callback = fn () => $user; - - return new static( - $this->container, $callback, $this->abilities, - $this->policies, $this->beforeCallbacks, $this->afterCallbacks, - $this->guessPolicyNamesUsingCallback - ); - } - - /** - * Resolve the user from the user resolver. - * - * @return mixed - */ - protected function resolveUser() - { - return call_user_func($this->userResolver); - } - - /** - * Get all of the defined abilities. - * - * @return array - */ - public function abilities() - { - return $this->abilities; - } - - /** - * Get all of the defined policies. - * - * @return array - */ - public function policies() - { - return $this->policies; - } - - /** - * Set the default denial response for gates and policies. - * - * @param \Illuminate\Auth\Access\Response $response - * @return $this - */ - public function defaultDenialResponse(Response $response) - { - $this->defaultDenialResponse = $response; - - return $this; - } - - /** - * Set the container instance used by the gate. - * - * @param \Illuminate\Contracts\Container\Container $container - * @return $this - */ - public function setContainer(Container $container) - { - $this->container = $container; - - return $this; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBroker.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBroker.php deleted file mode 100755 index eb213c49..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBroker.php +++ /dev/null @@ -1,190 +0,0 @@ -users = $users; - $this->tokens = $tokens; - } - - /** - * Send a password reset link to a user. - * - * @param array $credentials - * @param \Closure|null $callback - * @return string - */ - public function sendResetLink(array $credentials, ?Closure $callback = null) - { - // First we will check to see if we found a user at the given credentials and - // if we did not we will redirect back to this current URI with a piece of - // "flash" data in the session to indicate to the developers the errors. - $user = $this->getUser($credentials); - - if (is_null($user)) { - return static::INVALID_USER; - } - - if ($this->tokens->recentlyCreatedToken($user)) { - return static::RESET_THROTTLED; - } - - $token = $this->tokens->create($user); - - if ($callback) { - return $callback($user, $token) ?? static::RESET_LINK_SENT; - } - - // Once we have the reset token, we are ready to send the message out to this - // user with a link to reset their password. We will then redirect back to - // the current URI having nothing set in the session to indicate errors. - $user->sendPasswordResetNotification($token); - - return static::RESET_LINK_SENT; - } - - /** - * Reset the password for the given token. - * - * @param array $credentials - * @param \Closure $callback - * @return mixed - */ - public function reset(array $credentials, Closure $callback) - { - $user = $this->validateReset($credentials); - - // If the responses from the validate method is not a user instance, we will - // assume that it is a redirect and simply return it from this method and - // the user is properly redirected having an error message on the post. - if (! $user instanceof CanResetPasswordContract) { - return $user; - } - - $password = $credentials['password']; - - // Once the reset has been validated, we'll call the given callback with the - // new password. This gives the user an opportunity to store the password - // in their persistent storage. Then we'll delete the token and return. - $callback($user, $password); - - $this->tokens->delete($user); - - return static::PASSWORD_RESET; - } - - /** - * Validate a password reset for the given credentials. - * - * @param array $credentials - * @return \Illuminate\Contracts\Auth\CanResetPassword|string - */ - protected function validateReset(array $credentials) - { - if (is_null($user = $this->getUser($credentials))) { - return static::INVALID_USER; - } - - if (! $this->tokens->exists($user, $credentials['token'])) { - return static::INVALID_TOKEN; - } - - return $user; - } - - /** - * Get the user for the given credentials. - * - * @param array $credentials - * @return \Illuminate\Contracts\Auth\CanResetPassword|null - * - * @throws \UnexpectedValueException - */ - public function getUser(array $credentials) - { - $credentials = Arr::except($credentials, ['token']); - - $user = $this->users->retrieveByCredentials($credentials); - - if ($user && ! $user instanceof CanResetPasswordContract) { - throw new UnexpectedValueException('User must implement CanResetPassword interface.'); - } - - return $user; - } - - /** - * Create a new password reset token for the given user. - * - * @param \Illuminate\Contracts\Auth\CanResetPassword $user - * @return string - */ - public function createToken(CanResetPasswordContract $user) - { - return $this->tokens->create($user); - } - - /** - * Delete password reset tokens of the given user. - * - * @param \Illuminate\Contracts\Auth\CanResetPassword $user - * @return void - */ - public function deleteToken(CanResetPasswordContract $user) - { - $this->tokens->delete($user); - } - - /** - * Validate the given password reset token. - * - * @param \Illuminate\Contracts\Auth\CanResetPassword $user - * @param string $token - * @return bool - */ - public function tokenExists(CanResetPasswordContract $user, $token) - { - return $this->tokens->exists($user, $token); - } - - /** - * Get the password reset token repository implementation. - * - * @return \Illuminate\Auth\Passwords\TokenRepositoryInterface - */ - public function getRepository() - { - return $this->tokens; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Auth/RequestGuard.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Auth/RequestGuard.php deleted file mode 100644 index 7c1dfdc5..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Auth/RequestGuard.php +++ /dev/null @@ -1,87 +0,0 @@ -request = $request; - $this->callback = $callback; - $this->provider = $provider; - } - - /** - * Get the currently authenticated user. - * - * @return \Illuminate\Contracts\Auth\Authenticatable|null - */ - public function user() - { - // If we've already retrieved the user for the current request we can just - // return it back immediately. We do not want to fetch the user data on - // every call to this method because that would be tremendously slow. - if (! is_null($this->user)) { - return $this->user; - } - - return $this->user = call_user_func( - $this->callback, $this->request, $this->getProvider() - ); - } - - /** - * Validate a user's credentials. - * - * @param array $credentials - * @return bool - */ - public function validate(array $credentials = []) - { - return ! is_null((new static( - $this->callback, $credentials['request'], $this->getProvider() - ))->user()); - } - - /** - * Set the current request instance. - * - * @param \Illuminate\Http\Request $request - * @return $this - */ - public function setRequest(Request $request) - { - $this->request = $request; - - return $this; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php deleted file mode 100644 index d7f48720..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php +++ /dev/null @@ -1,962 +0,0 @@ -name = $name; - $this->session = $session; - $this->request = $request; - $this->provider = $provider; - $this->timebox = $timebox ?: new Timebox; - } - - /** - * Get the currently authenticated user. - * - * @return \Illuminate\Contracts\Auth\Authenticatable|null - */ - public function user() - { - if ($this->loggedOut) { - return; - } - - // If we've already retrieved the user for the current request we can just - // return it back immediately. We do not want to fetch the user data on - // every call to this method because that would be tremendously slow. - if (! is_null($this->user)) { - return $this->user; - } - - $id = $this->session->get($this->getName()); - - // First we will try to load the user using the identifier in the session if - // one exists. Otherwise we will check for a "remember me" cookie in this - // request, and if one exists, attempt to retrieve the user using that. - if (! is_null($id) && $this->user = $this->provider->retrieveById($id)) { - $this->fireAuthenticatedEvent($this->user); - } - - // If the user is null, but we decrypt a "recaller" cookie we can attempt to - // pull the user data on that cookie which serves as a remember cookie on - // the application. Once we have a user we can return it to the caller. - if (is_null($this->user) && ! is_null($recaller = $this->recaller())) { - $this->user = $this->userFromRecaller($recaller); - - if ($this->user) { - $this->updateSession($this->user->getAuthIdentifier()); - - $this->fireLoginEvent($this->user, true); - } - } - - return $this->user; - } - - /** - * Pull a user from the repository by its "remember me" cookie token. - * - * @param \Illuminate\Auth\Recaller $recaller - * @return mixed - */ - protected function userFromRecaller($recaller) - { - if (! $recaller->valid() || $this->recallAttempted) { - return; - } - - // If the user is null, but we decrypt a "recaller" cookie we can attempt to - // pull the user data on that cookie which serves as a remember cookie on - // the application. Once we have a user we can return it to the caller. - $this->recallAttempted = true; - - $this->viaRemember = ! is_null($user = $this->provider->retrieveByToken( - $recaller->id(), $recaller->token() - )); - - return $user; - } - - /** - * Get the decrypted recaller cookie for the request. - * - * @return \Illuminate\Auth\Recaller|null - */ - protected function recaller() - { - if (is_null($this->request)) { - return; - } - - if ($recaller = $this->request->cookies->get($this->getRecallerName())) { - return new Recaller($recaller); - } - } - - /** - * Get the ID for the currently authenticated user. - * - * @return int|string|null - */ - public function id() - { - if ($this->loggedOut) { - return; - } - - return $this->user() - ? $this->user()->getAuthIdentifier() - : $this->session->get($this->getName()); - } - - /** - * Log a user into the application without sessions or cookies. - * - * @param array $credentials - * @return bool - */ - public function once(array $credentials = []) - { - $this->fireAttemptEvent($credentials); - - if ($this->validate($credentials)) { - $this->setUser($this->lastAttempted); - - return true; - } - - return false; - } - - /** - * Log the given user ID into the application without sessions or cookies. - * - * @param mixed $id - * @return \Illuminate\Contracts\Auth\Authenticatable|false - */ - public function onceUsingId($id) - { - if (! is_null($user = $this->provider->retrieveById($id))) { - $this->setUser($user); - - return $user; - } - - return false; - } - - /** - * Validate a user's credentials. - * - * @param array $credentials - * @return bool - */ - public function validate(array $credentials = []) - { - $this->lastAttempted = $user = $this->provider->retrieveByCredentials($credentials); - - return $this->hasValidCredentials($user, $credentials); - } - - /** - * Attempt to authenticate using HTTP Basic Auth. - * - * @param string $field - * @param array $extraConditions - * @return \Symfony\Component\HttpFoundation\Response|null - * - * @throws \Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException - */ - public function basic($field = 'email', $extraConditions = []) - { - if ($this->check()) { - return; - } - - // If a username is set on the HTTP basic request, we will return out without - // interrupting the request lifecycle. Otherwise, we'll need to generate a - // request indicating that the given credentials were invalid for login. - if ($this->attemptBasic($this->getRequest(), $field, $extraConditions)) { - return; - } - - return $this->failedBasicResponse(); - } - - /** - * Perform a stateless HTTP Basic login attempt. - * - * @param string $field - * @param array $extraConditions - * @return \Symfony\Component\HttpFoundation\Response|null - * - * @throws \Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException - */ - public function onceBasic($field = 'email', $extraConditions = []) - { - $credentials = $this->basicCredentials($this->getRequest(), $field); - - if (! $this->once(array_merge($credentials, $extraConditions))) { - return $this->failedBasicResponse(); - } - } - - /** - * Attempt to authenticate using basic authentication. - * - * @param \Symfony\Component\HttpFoundation\Request $request - * @param string $field - * @param array $extraConditions - * @return bool - */ - protected function attemptBasic(Request $request, $field, $extraConditions = []) - { - if (! $request->getUser()) { - return false; - } - - return $this->attempt(array_merge( - $this->basicCredentials($request, $field), $extraConditions - )); - } - - /** - * Get the credential array for an HTTP Basic request. - * - * @param \Symfony\Component\HttpFoundation\Request $request - * @param string $field - * @return array - */ - protected function basicCredentials(Request $request, $field) - { - return [$field => $request->getUser(), 'password' => $request->getPassword()]; - } - - /** - * Get the response for basic authentication. - * - * @return void - * - * @throws \Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException - */ - protected function failedBasicResponse() - { - throw new UnauthorizedHttpException('Basic', 'Invalid credentials.'); - } - - /** - * Attempt to authenticate a user using the given credentials. - * - * @param array $credentials - * @param bool $remember - * @return bool - */ - public function attempt(array $credentials = [], $remember = false) - { - $this->fireAttemptEvent($credentials, $remember); - - $this->lastAttempted = $user = $this->provider->retrieveByCredentials($credentials); - - // If an implementation of UserInterface was returned, we'll ask the provider - // to validate the user against the given credentials, and if they are in - // fact valid we'll log the users into the application and return true. - if ($this->hasValidCredentials($user, $credentials)) { - $this->login($user, $remember); - - return true; - } - - // If the authentication attempt fails we will fire an event so that the user - // may be notified of any suspicious attempts to access their account from - // an unrecognized user. A developer may listen to this event as needed. - $this->fireFailedEvent($user, $credentials); - - return false; - } - - /** - * Attempt to authenticate a user with credentials and additional callbacks. - * - * @param array $credentials - * @param array|callable|null $callbacks - * @param bool $remember - * @return bool - */ - public function attemptWhen(array $credentials = [], $callbacks = null, $remember = false) - { - $this->fireAttemptEvent($credentials, $remember); - - $this->lastAttempted = $user = $this->provider->retrieveByCredentials($credentials); - - // This method does the exact same thing as attempt, but also executes callbacks after - // the user is retrieved and validated. If one of the callbacks returns falsy we do - // not login the user. Instead, we will fail the specific authentication attempt. - if ($this->hasValidCredentials($user, $credentials) && $this->shouldLogin($callbacks, $user)) { - $this->login($user, $remember); - - return true; - } - - $this->fireFailedEvent($user, $credentials); - - return false; - } - - /** - * Determine if the user matches the credentials. - * - * @param mixed $user - * @param array $credentials - * @return bool - */ - protected function hasValidCredentials($user, $credentials) - { - return $this->timebox->call(function ($timebox) use ($user, $credentials) { - $validated = ! is_null($user) && $this->provider->validateCredentials($user, $credentials); - - if ($validated) { - $timebox->returnEarly(); - - $this->fireValidatedEvent($user); - } - - return $validated; - }, 200 * 1000); - } - - /** - * Determine if the user should login by executing the given callbacks. - * - * @param array|callable|null $callbacks - * @param \Illuminate\Contracts\Auth\Authenticatable $user - * @return bool - */ - protected function shouldLogin($callbacks, AuthenticatableContract $user) - { - foreach (Arr::wrap($callbacks) as $callback) { - if (! $callback($user, $this)) { - return false; - } - } - - return true; - } - - /** - * Log the given user ID into the application. - * - * @param mixed $id - * @param bool $remember - * @return \Illuminate\Contracts\Auth\Authenticatable|false - */ - public function loginUsingId($id, $remember = false) - { - if (! is_null($user = $this->provider->retrieveById($id))) { - $this->login($user, $remember); - - return $user; - } - - return false; - } - - /** - * Log a user into the application. - * - * @param \Illuminate\Contracts\Auth\Authenticatable $user - * @param bool $remember - * @return void - */ - public function login(AuthenticatableContract $user, $remember = false) - { - $this->updateSession($user->getAuthIdentifier()); - - // If the user should be permanently "remembered" by the application we will - // queue a permanent cookie that contains the encrypted copy of the user - // identifier. We will then decrypt this later to retrieve the users. - if ($remember) { - $this->ensureRememberTokenIsSet($user); - - $this->queueRecallerCookie($user); - } - - // If we have an event dispatcher instance set we will fire an event so that - // any listeners will hook into the authentication events and run actions - // based on the login and logout events fired from the guard instances. - $this->fireLoginEvent($user, $remember); - - $this->setUser($user); - } - - /** - * Update the session with the given ID. - * - * @param string $id - * @return void - */ - protected function updateSession($id) - { - $this->session->put($this->getName(), $id); - - $this->session->migrate(true); - } - - /** - * Create a new "remember me" token for the user if one doesn't already exist. - * - * @param \Illuminate\Contracts\Auth\Authenticatable $user - * @return void - */ - protected function ensureRememberTokenIsSet(AuthenticatableContract $user) - { - if (empty($user->getRememberToken())) { - $this->cycleRememberToken($user); - } - } - - /** - * Queue the recaller cookie into the cookie jar. - * - * @param \Illuminate\Contracts\Auth\Authenticatable $user - * @return void - */ - protected function queueRecallerCookie(AuthenticatableContract $user) - { - $this->getCookieJar()->queue($this->createRecaller( - $user->getAuthIdentifier().'|'.$user->getRememberToken().'|'.$user->getAuthPassword() - )); - } - - /** - * Create a "remember me" cookie for a given ID. - * - * @param string $value - * @return \Symfony\Component\HttpFoundation\Cookie - */ - protected function createRecaller($value) - { - return $this->getCookieJar()->make($this->getRecallerName(), $value, $this->getRememberDuration()); - } - - /** - * Log the user out of the application. - * - * @return void - */ - public function logout() - { - $user = $this->user(); - - $this->clearUserDataFromStorage(); - - if (! is_null($this->user) && ! empty($user->getRememberToken())) { - $this->cycleRememberToken($user); - } - - // If we have an event dispatcher instance, we can fire off the logout event - // so any further processing can be done. This allows the developer to be - // listening for anytime a user signs out of this application manually. - if (isset($this->events)) { - $this->events->dispatch(new Logout($this->name, $user)); - } - - // Once we have fired the logout event we will clear the users out of memory - // so they are no longer available as the user is no longer considered as - // being signed into this application and should not be available here. - $this->user = null; - - $this->loggedOut = true; - } - - /** - * Log the user out of the application on their current device only. - * - * This method does not cycle the "remember" token. - * - * @return void - */ - public function logoutCurrentDevice() - { - $user = $this->user(); - - $this->clearUserDataFromStorage(); - - // If we have an event dispatcher instance, we can fire off the logout event - // so any further processing can be done. This allows the developer to be - // listening for anytime a user signs out of this application manually. - if (isset($this->events)) { - $this->events->dispatch(new CurrentDeviceLogout($this->name, $user)); - } - - // Once we have fired the logout event we will clear the users out of memory - // so they are no longer available as the user is no longer considered as - // being signed into this application and should not be available here. - $this->user = null; - - $this->loggedOut = true; - } - - /** - * Remove the user data from the session and cookies. - * - * @return void - */ - protected function clearUserDataFromStorage() - { - $this->session->remove($this->getName()); - - $this->getCookieJar()->unqueue($this->getRecallerName()); - - if (! is_null($this->recaller())) { - $this->getCookieJar()->queue( - $this->getCookieJar()->forget($this->getRecallerName()) - ); - } - } - - /** - * Refresh the "remember me" token for the user. - * - * @param \Illuminate\Contracts\Auth\Authenticatable $user - * @return void - */ - protected function cycleRememberToken(AuthenticatableContract $user) - { - $user->setRememberToken($token = Str::random(60)); - - $this->provider->updateRememberToken($user, $token); - } - - /** - * Invalidate other sessions for the current user. - * - * The application must be using the AuthenticateSession middleware. - * - * @param string $password - * @param string $attribute - * @return \Illuminate\Contracts\Auth\Authenticatable|null - * - * @throws \Illuminate\Auth\AuthenticationException - */ - public function logoutOtherDevices($password, $attribute = 'password') - { - if (! $this->user()) { - return; - } - - $result = $this->rehashUserPassword($password, $attribute); - - if ($this->recaller() || - $this->getCookieJar()->hasQueued($this->getRecallerName())) { - $this->queueRecallerCookie($this->user()); - } - - $this->fireOtherDeviceLogoutEvent($this->user()); - - return $result; - } - - /** - * Rehash the current user's password. - * - * @param string $password - * @param string $attribute - * @return \Illuminate\Contracts\Auth\Authenticatable|null - * - * @throws \InvalidArgumentException - */ - protected function rehashUserPassword($password, $attribute) - { - if (! Hash::check($password, $this->user()->{$attribute})) { - throw new InvalidArgumentException('The given password does not match the current password.'); - } - - return tap($this->user()->forceFill([ - $attribute => Hash::make($password), - ]))->save(); - } - - /** - * Register an authentication attempt event listener. - * - * @param mixed $callback - * @return void - */ - public function attempting($callback) - { - $this->events?->listen(Events\Attempting::class, $callback); - } - - /** - * Fire the attempt event with the arguments. - * - * @param array $credentials - * @param bool $remember - * @return void - */ - protected function fireAttemptEvent(array $credentials, $remember = false) - { - $this->events?->dispatch(new Attempting($this->name, $credentials, $remember)); - } - - /** - * Fires the validated event if the dispatcher is set. - * - * @param \Illuminate\Contracts\Auth\Authenticatable $user - * @return void - */ - protected function fireValidatedEvent($user) - { - $this->events?->dispatch(new Validated($this->name, $user)); - } - - /** - * Fire the login event if the dispatcher is set. - * - * @param \Illuminate\Contracts\Auth\Authenticatable $user - * @param bool $remember - * @return void - */ - protected function fireLoginEvent($user, $remember = false) - { - $this->events?->dispatch(new Login($this->name, $user, $remember)); - } - - /** - * Fire the authenticated event if the dispatcher is set. - * - * @param \Illuminate\Contracts\Auth\Authenticatable $user - * @return void - */ - protected function fireAuthenticatedEvent($user) - { - $this->events?->dispatch(new Authenticated($this->name, $user)); - } - - /** - * Fire the other device logout event if the dispatcher is set. - * - * @param \Illuminate\Contracts\Auth\Authenticatable $user - * @return void - */ - protected function fireOtherDeviceLogoutEvent($user) - { - $this->events?->dispatch(new OtherDeviceLogout($this->name, $user)); - } - - /** - * Fire the failed authentication attempt event with the given arguments. - * - * @param \Illuminate\Contracts\Auth\Authenticatable|null $user - * @param array $credentials - * @return void - */ - protected function fireFailedEvent($user, array $credentials) - { - $this->events?->dispatch(new Failed($this->name, $user, $credentials)); - } - - /** - * Get the last user we attempted to authenticate. - * - * @return \Illuminate\Contracts\Auth\Authenticatable - */ - public function getLastAttempted() - { - return $this->lastAttempted; - } - - /** - * Get a unique identifier for the auth session value. - * - * @return string - */ - public function getName() - { - return 'login_'.$this->name.'_'.sha1(static::class); - } - - /** - * Get the name of the cookie used to store the "recaller". - * - * @return string - */ - public function getRecallerName() - { - return 'remember_'.$this->name.'_'.sha1(static::class); - } - - /** - * Determine if the user was authenticated via "remember me" cookie. - * - * @return bool - */ - public function viaRemember() - { - return $this->viaRemember; - } - - /** - * Get the number of minutes the remember me cookie should be valid for. - * - * @return int - */ - protected function getRememberDuration() - { - return $this->rememberDuration; - } - - /** - * Set the number of minutes the remember me cookie should be valid for. - * - * @param int $minutes - * @return $this - */ - public function setRememberDuration($minutes) - { - $this->rememberDuration = $minutes; - - return $this; - } - - /** - * Get the cookie creator instance used by the guard. - * - * @return \Illuminate\Contracts\Cookie\QueueingFactory - * - * @throws \RuntimeException - */ - public function getCookieJar() - { - if (! isset($this->cookie)) { - throw new RuntimeException('Cookie jar has not been set.'); - } - - return $this->cookie; - } - - /** - * Set the cookie creator instance used by the guard. - * - * @param \Illuminate\Contracts\Cookie\QueueingFactory $cookie - * @return void - */ - public function setCookieJar(CookieJar $cookie) - { - $this->cookie = $cookie; - } - - /** - * Get the event dispatcher instance. - * - * @return \Illuminate\Contracts\Events\Dispatcher - */ - public function getDispatcher() - { - return $this->events; - } - - /** - * Set the event dispatcher instance. - * - * @param \Illuminate\Contracts\Events\Dispatcher $events - * @return void - */ - public function setDispatcher(Dispatcher $events) - { - $this->events = $events; - } - - /** - * Get the session store used by the guard. - * - * @return \Illuminate\Contracts\Session\Session - */ - public function getSession() - { - return $this->session; - } - - /** - * Return the currently cached user. - * - * @return \Illuminate\Contracts\Auth\Authenticatable|null - */ - public function getUser() - { - return $this->user; - } - - /** - * Set the current user. - * - * @param \Illuminate\Contracts\Auth\Authenticatable $user - * @return $this - */ - public function setUser(AuthenticatableContract $user) - { - $this->user = $user; - - $this->loggedOut = false; - - $this->fireAuthenticatedEvent($user); - - return $this; - } - - /** - * Get the current request instance. - * - * @return \Symfony\Component\HttpFoundation\Request - */ - public function getRequest() - { - return $this->request ?: Request::createFromGlobals(); - } - - /** - * Set the current request instance. - * - * @param \Symfony\Component\HttpFoundation\Request $request - * @return $this - */ - public function setRequest(Request $request) - { - $this->request = $request; - - return $this; - } - - /** - * Get the timebox instance used by the guard. - * - * @return \Illuminate\Support\Timebox - */ - public function getTimebox() - { - return $this->timebox; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Broadcasting/BroadcastManager.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Broadcasting/BroadcastManager.php deleted file mode 100644 index ff044b33..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Broadcasting/BroadcastManager.php +++ /dev/null @@ -1,492 +0,0 @@ -app = $app; - } - - /** - * Register the routes for handling broadcast channel authentication and sockets. - * - * @param array|null $attributes - * @return void - */ - public function routes(?array $attributes = null) - { - if ($this->app instanceof CachesRoutes && $this->app->routesAreCached()) { - return; - } - - $attributes = $attributes ?: ['middleware' => ['web']]; - - $this->app['router']->group($attributes, function ($router) { - $router->match( - ['get', 'post'], '/broadcasting/auth', - '\\'.BroadcastController::class.'@authenticate' - )->withoutMiddleware([\Illuminate\Foundation\Http\Middleware\VerifyCsrfToken::class]); - }); - } - - /** - * Register the routes for handling broadcast user authentication. - * - * @param array|null $attributes - * @return void - */ - public function userRoutes(?array $attributes = null) - { - if ($this->app instanceof CachesRoutes && $this->app->routesAreCached()) { - return; - } - - $attributes = $attributes ?: ['middleware' => ['web']]; - - $this->app['router']->group($attributes, function ($router) { - $router->match( - ['get', 'post'], '/broadcasting/user-auth', - '\\'.BroadcastController::class.'@authenticateUser' - )->withoutMiddleware([\Illuminate\Foundation\Http\Middleware\VerifyCsrfToken::class]); - }); - } - - /** - * Register the routes for handling broadcast authentication and sockets. - * - * Alias of "routes" method. - * - * @param array|null $attributes - * @return void - */ - public function channelRoutes(?array $attributes = null) - { - $this->routes($attributes); - } - - /** - * Get the socket ID for the given request. - * - * @param \Illuminate\Http\Request|null $request - * @return string|null - */ - public function socket($request = null) - { - if (! $request && ! $this->app->bound('request')) { - return; - } - - $request = $request ?: $this->app['request']; - - return $request->header('X-Socket-ID'); - } - - /** - * Begin broadcasting an event. - * - * @param mixed|null $event - * @return \Illuminate\Broadcasting\PendingBroadcast - */ - public function event($event = null) - { - return new PendingBroadcast($this->app->make('events'), $event); - } - - /** - * Queue the given event for broadcast. - * - * @param mixed $event - * @return void - */ - public function queue($event) - { - if ($event instanceof ShouldBroadcastNow || - (is_object($event) && - method_exists($event, 'shouldBroadcastNow') && - $event->shouldBroadcastNow())) { - return $this->app->make(BusDispatcherContract::class)->dispatchNow(new BroadcastEvent(clone $event)); - } - - $queue = null; - - if (method_exists($event, 'broadcastQueue')) { - $queue = $event->broadcastQueue(); - } elseif (isset($event->broadcastQueue)) { - $queue = $event->broadcastQueue; - } elseif (isset($event->queue)) { - $queue = $event->queue; - } - - $broadcastEvent = new BroadcastEvent(clone $event); - - if ($event instanceof ShouldBeUnique) { - $broadcastEvent = new UniqueBroadcastEvent(clone $event); - - if ($this->mustBeUniqueAndCannotAcquireLock($broadcastEvent)) { - return; - } - } - - $this->app->make('queue') - ->connection($event->connection ?? null) - ->pushOn($queue, $broadcastEvent); - } - - /** - * Determine if the broadcastable event must be unique and determine if we can acquire the necessary lock. - * - * @param mixed $event - * @return bool - */ - protected function mustBeUniqueAndCannotAcquireLock($event) - { - return ! (new UniqueLock( - method_exists($event, 'uniqueVia') - ? $event->uniqueVia() - : $this->app->make(Cache::class) - ))->acquire($event); - } - - /** - * Get a driver instance. - * - * @param string|null $driver - * @return mixed - */ - public function connection($driver = null) - { - return $this->driver($driver); - } - - /** - * Get a driver instance. - * - * @param string|null $name - * @return mixed - */ - public function driver($name = null) - { - $name = $name ?: $this->getDefaultDriver(); - - return $this->drivers[$name] = $this->get($name); - } - - /** - * Attempt to get the connection from the local cache. - * - * @param string $name - * @return \Illuminate\Contracts\Broadcasting\Broadcaster - */ - protected function get($name) - { - return $this->drivers[$name] ?? $this->resolve($name); - } - - /** - * Resolve the given broadcaster. - * - * @param string $name - * @return \Illuminate\Contracts\Broadcasting\Broadcaster - * - * @throws \InvalidArgumentException - */ - protected function resolve($name) - { - $config = $this->getConfig($name); - - if (is_null($config)) { - throw new InvalidArgumentException("Broadcast connection [{$name}] is not defined."); - } - - if (isset($this->customCreators[$config['driver']])) { - return $this->callCustomCreator($config); - } - - $driverMethod = 'create'.ucfirst($config['driver']).'Driver'; - - if (! method_exists($this, $driverMethod)) { - throw new InvalidArgumentException("Driver [{$config['driver']}] is not supported."); - } - - return $this->{$driverMethod}($config); - } - - /** - * Call a custom driver creator. - * - * @param array $config - * @return mixed - */ - protected function callCustomCreator(array $config) - { - return $this->customCreators[$config['driver']]($this->app, $config); - } - - /** - * Create an instance of the driver. - * - * @param array $config - * @return \Illuminate\Contracts\Broadcasting\Broadcaster - */ - protected function createReverbDriver(array $config) - { - return $this->createPusherDriver($config); - } - - /** - * Create an instance of the driver. - * - * @param array $config - * @return \Illuminate\Contracts\Broadcasting\Broadcaster - */ - protected function createPusherDriver(array $config) - { - return new PusherBroadcaster($this->pusher($config)); - } - - /** - * Get a Pusher instance for the given configuration. - * - * @param array $config - * @return \Pusher\Pusher - */ - public function pusher(array $config) - { - $pusher = new Pusher( - $config['key'], - $config['secret'], - $config['app_id'], - $config['options'] ?? [], - isset($config['client_options']) && ! empty($config['client_options']) - ? new GuzzleClient($config['client_options']) - : null, - ); - - if ($config['log'] ?? false) { - $pusher->setLogger($this->app->make(LoggerInterface::class)); - } - - return $pusher; - } - - /** - * Create an instance of the driver. - * - * @param array $config - * @return \Illuminate\Contracts\Broadcasting\Broadcaster - */ - protected function createAblyDriver(array $config) - { - return new AblyBroadcaster($this->ably($config)); - } - - /** - * Get an Ably instance for the given configuration. - * - * @param array $config - * @return \Ably\AblyRest - */ - public function ably(array $config) - { - return new AblyRest($config); - } - - /** - * Create an instance of the driver. - * - * @param array $config - * @return \Illuminate\Contracts\Broadcasting\Broadcaster - */ - protected function createRedisDriver(array $config) - { - return new RedisBroadcaster( - $this->app->make('redis'), $config['connection'] ?? null, - $this->app['config']->get('database.redis.options.prefix', '') - ); - } - - /** - * Create an instance of the driver. - * - * @param array $config - * @return \Illuminate\Contracts\Broadcasting\Broadcaster - */ - protected function createLogDriver(array $config) - { - return new LogBroadcaster( - $this->app->make(LoggerInterface::class) - ); - } - - /** - * Create an instance of the driver. - * - * @param array $config - * @return \Illuminate\Contracts\Broadcasting\Broadcaster - */ - protected function createNullDriver(array $config) - { - return new NullBroadcaster; - } - - /** - * Get the connection configuration. - * - * @param string $name - * @return array - */ - protected function getConfig($name) - { - if (! is_null($name) && $name !== 'null') { - return $this->app['config']["broadcasting.connections.{$name}"]; - } - - return ['driver' => 'null']; - } - - /** - * Get the default driver name. - * - * @return string - */ - public function getDefaultDriver() - { - return $this->app['config']['broadcasting.default']; - } - - /** - * Set the default driver name. - * - * @param string $name - * @return void - */ - public function setDefaultDriver($name) - { - $this->app['config']['broadcasting.default'] = $name; - } - - /** - * Disconnect the given disk and remove from local cache. - * - * @param string|null $name - * @return void - */ - public function purge($name = null) - { - $name ??= $this->getDefaultDriver(); - - unset($this->drivers[$name]); - } - - /** - * Register a custom driver creator Closure. - * - * @param string $driver - * @param \Closure $callback - * @return $this - */ - public function extend($driver, Closure $callback) - { - $this->customCreators[$driver] = $callback; - - return $this; - } - - /** - * Get the application instance used by the manager. - * - * @return \Illuminate\Contracts\Foundation\Application - */ - public function getApplication() - { - return $this->app; - } - - /** - * Set the application instance used by the manager. - * - * @param \Illuminate\Contracts\Foundation\Application $app - * @return $this - */ - public function setApplication($app) - { - $this->app = $app; - - return $this; - } - - /** - * Forget all of the resolved driver instances. - * - * @return $this - */ - public function forgetDrivers() - { - $this->drivers = []; - - return $this; - } - - /** - * Dynamically call the default driver instance. - * - * @param string $method - * @param array $parameters - * @return mixed - */ - public function __call($method, $parameters) - { - return $this->driver()->$method(...$parameters); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Bus/Batch.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Bus/Batch.php deleted file mode 100644 index a5d6fc63..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Bus/Batch.php +++ /dev/null @@ -1,506 +0,0 @@ -queue = $queue; - $this->repository = $repository; - $this->id = $id; - $this->name = $name; - $this->totalJobs = $totalJobs; - $this->pendingJobs = $pendingJobs; - $this->failedJobs = $failedJobs; - $this->failedJobIds = $failedJobIds; - $this->options = $options; - $this->createdAt = $createdAt; - $this->cancelledAt = $cancelledAt; - $this->finishedAt = $finishedAt; - } - - /** - * Get a fresh instance of the batch represented by this ID. - * - * @return self - */ - public function fresh() - { - return $this->repository->find($this->id); - } - - /** - * Add additional jobs to the batch. - * - * @param \Illuminate\Support\Enumerable|object|array $jobs - * @return self - */ - public function add($jobs) - { - $count = 0; - - $jobs = Collection::wrap($jobs)->map(function ($job) use (&$count) { - $job = $job instanceof Closure ? CallQueuedClosure::create($job) : $job; - - if (is_array($job)) { - $count += count($job); - - return with($this->prepareBatchedChain($job), function ($chain) { - return $chain->first() - ->allOnQueue($this->options['queue'] ?? null) - ->allOnConnection($this->options['connection'] ?? null) - ->chain($chain->slice(1)->values()->all()); - }); - } else { - $job->withBatchId($this->id); - - $count++; - } - - return $job; - }); - - $this->repository->transaction(function () use ($jobs, $count) { - $this->repository->incrementTotalJobs($this->id, $count); - - $this->queue->connection($this->options['connection'] ?? null)->bulk( - $jobs->all(), - $data = '', - $this->options['queue'] ?? null - ); - }); - - return $this->fresh(); - } - - /** - * Prepare a chain that exists within the jobs being added. - * - * @param array $chain - * @return \Illuminate\Support\Collection - */ - protected function prepareBatchedChain(array $chain) - { - return collect($chain)->map(function ($job) { - $job = $job instanceof Closure ? CallQueuedClosure::create($job) : $job; - - return $job->withBatchId($this->id); - }); - } - - /** - * Get the total number of jobs that have been processed by the batch thus far. - * - * @return int - */ - public function processedJobs() - { - return $this->totalJobs - $this->pendingJobs; - } - - /** - * Get the percentage of jobs that have been processed (between 0-100). - * - * @return int - */ - public function progress() - { - return $this->totalJobs > 0 ? round(($this->processedJobs() / $this->totalJobs) * 100) : 0; - } - - /** - * Record that a job within the batch finished successfully, executing any callbacks if necessary. - * - * @param string $jobId - * @return void - */ - public function recordSuccessfulJob(string $jobId) - { - $counts = $this->decrementPendingJobs($jobId); - - if ($this->hasProgressCallbacks()) { - $batch = $this->fresh(); - - collect($this->options['progress'])->each(function ($handler) use ($batch) { - $this->invokeHandlerCallback($handler, $batch); - }); - } - - if ($counts->pendingJobs === 0) { - $this->repository->markAsFinished($this->id); - } - - if ($counts->pendingJobs === 0 && $this->hasThenCallbacks()) { - $batch = $this->fresh(); - - collect($this->options['then'])->each(function ($handler) use ($batch) { - $this->invokeHandlerCallback($handler, $batch); - }); - } - - if ($counts->allJobsHaveRanExactlyOnce() && $this->hasFinallyCallbacks()) { - $batch = $this->fresh(); - - collect($this->options['finally'])->each(function ($handler) use ($batch) { - $this->invokeHandlerCallback($handler, $batch); - }); - } - } - - /** - * Decrement the pending jobs for the batch. - * - * @param string $jobId - * @return \Illuminate\Bus\UpdatedBatchJobCounts - */ - public function decrementPendingJobs(string $jobId) - { - return $this->repository->decrementPendingJobs($this->id, $jobId); - } - - /** - * Determine if the batch has finished executing. - * - * @return bool - */ - public function finished() - { - return ! is_null($this->finishedAt); - } - - /** - * Determine if the batch has "progress" callbacks. - * - * @return bool - */ - public function hasProgressCallbacks() - { - return isset($this->options['progress']) && ! empty($this->options['progress']); - } - - /** - * Determine if the batch has "success" callbacks. - * - * @return bool - */ - public function hasThenCallbacks() - { - return isset($this->options['then']) && ! empty($this->options['then']); - } - - /** - * Determine if the batch allows jobs to fail without cancelling the batch. - * - * @return bool - */ - public function allowsFailures() - { - return Arr::get($this->options, 'allowFailures', false) === true; - } - - /** - * Determine if the batch has job failures. - * - * @return bool - */ - public function hasFailures() - { - return $this->failedJobs > 0; - } - - /** - * Record that a job within the batch failed to finish successfully, executing any callbacks if necessary. - * - * @param string $jobId - * @param \Throwable $e - * @return void - */ - public function recordFailedJob(string $jobId, $e) - { - $counts = $this->incrementFailedJobs($jobId); - - if ($counts->failedJobs === 1 && ! $this->allowsFailures()) { - $this->cancel(); - } - - if ($this->hasProgressCallbacks() && $this->allowsFailures()) { - $batch = $this->fresh(); - - collect($this->options['progress'])->each(function ($handler) use ($batch, $e) { - $this->invokeHandlerCallback($handler, $batch, $e); - }); - } - - if ($counts->failedJobs === 1 && $this->hasCatchCallbacks()) { - $batch = $this->fresh(); - - collect($this->options['catch'])->each(function ($handler) use ($batch, $e) { - $this->invokeHandlerCallback($handler, $batch, $e); - }); - } - - if ($counts->allJobsHaveRanExactlyOnce() && $this->hasFinallyCallbacks()) { - $batch = $this->fresh(); - - collect($this->options['finally'])->each(function ($handler) use ($batch, $e) { - $this->invokeHandlerCallback($handler, $batch, $e); - }); - } - } - - /** - * Increment the failed jobs for the batch. - * - * @param string $jobId - * @return \Illuminate\Bus\UpdatedBatchJobCounts - */ - public function incrementFailedJobs(string $jobId) - { - return $this->repository->incrementFailedJobs($this->id, $jobId); - } - - /** - * Determine if the batch has "catch" callbacks. - * - * @return bool - */ - public function hasCatchCallbacks() - { - return isset($this->options['catch']) && ! empty($this->options['catch']); - } - - /** - * Determine if the batch has "finally" callbacks. - * - * @return bool - */ - public function hasFinallyCallbacks() - { - return isset($this->options['finally']) && ! empty($this->options['finally']); - } - - /** - * Cancel the batch. - * - * @return void - */ - public function cancel() - { - $this->repository->cancel($this->id); - } - - /** - * Determine if the batch has been cancelled. - * - * @return bool - */ - public function canceled() - { - return $this->cancelled(); - } - - /** - * Determine if the batch has been cancelled. - * - * @return bool - */ - public function cancelled() - { - return ! is_null($this->cancelledAt); - } - - /** - * Delete the batch from storage. - * - * @return void - */ - public function delete() - { - $this->repository->delete($this->id); - } - - /** - * Invoke a batch callback handler. - * - * @param callable $handler - * @param \Illuminate\Bus\Batch $batch - * @param \Throwable|null $e - * @return void - */ - protected function invokeHandlerCallback($handler, Batch $batch, ?Throwable $e = null) - { - try { - return $handler($batch, $e); - } catch (Throwable $e) { - if (function_exists('report')) { - report($e); - } - } - } - - /** - * Convert the batch to an array. - * - * @return array - */ - public function toArray() - { - return [ - 'id' => $this->id, - 'name' => $this->name, - 'totalJobs' => $this->totalJobs, - 'pendingJobs' => $this->pendingJobs, - 'processedJobs' => $this->processedJobs(), - 'progress' => $this->progress(), - 'failedJobs' => $this->failedJobs, - 'options' => $this->options, - 'createdAt' => $this->createdAt, - 'cancelledAt' => $this->cancelledAt, - 'finishedAt' => $this->finishedAt, - ]; - } - - /** - * Get the JSON serializable representation of the object. - * - * @return array - */ - public function jsonSerialize(): array - { - return $this->toArray(); - } - - /** - * Dynamically access the batch's "options" via properties. - * - * @param string $key - * @return mixed - */ - public function __get($key) - { - return $this->options[$key] ?? null; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Bus/DatabaseBatchRepository.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Bus/DatabaseBatchRepository.php deleted file mode 100644 index 5a7aadde..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Bus/DatabaseBatchRepository.php +++ /dev/null @@ -1,403 +0,0 @@ -factory = $factory; - $this->connection = $connection; - $this->table = $table; - } - - /** - * Retrieve a list of batches. - * - * @param int $limit - * @param mixed $before - * @return \Illuminate\Bus\Batch[] - */ - public function get($limit = 50, $before = null) - { - return $this->connection->table($this->table) - ->orderByDesc('id') - ->take($limit) - ->when($before, fn ($q) => $q->where('id', '<', $before)) - ->get() - ->map(function ($batch) { - return $this->toBatch($batch); - }) - ->all(); - } - - /** - * Retrieve information about an existing batch. - * - * @param string $batchId - * @return \Illuminate\Bus\Batch|null - */ - public function find(string $batchId) - { - $batch = $this->connection->table($this->table) - ->useWritePdo() - ->where('id', $batchId) - ->first(); - - if ($batch) { - return $this->toBatch($batch); - } - } - - /** - * Store a new pending batch. - * - * @param \Illuminate\Bus\PendingBatch $batch - * @return \Illuminate\Bus\Batch - */ - public function store(PendingBatch $batch) - { - $id = (string) Str::orderedUuid(); - - $this->connection->table($this->table)->insert([ - 'id' => $id, - 'name' => $batch->name, - 'total_jobs' => 0, - 'pending_jobs' => 0, - 'failed_jobs' => 0, - 'failed_job_ids' => '[]', - 'options' => $this->serialize($batch->options), - 'created_at' => time(), - 'cancelled_at' => null, - 'finished_at' => null, - ]); - - return $this->find($id); - } - - /** - * Increment the total number of jobs within the batch. - * - * @param string $batchId - * @param int $amount - * @return void - */ - public function incrementTotalJobs(string $batchId, int $amount) - { - $this->connection->table($this->table)->where('id', $batchId)->update([ - 'total_jobs' => new Expression('total_jobs + '.$amount), - 'pending_jobs' => new Expression('pending_jobs + '.$amount), - 'finished_at' => null, - ]); - } - - /** - * Decrement the total number of pending jobs for the batch. - * - * @param string $batchId - * @param string $jobId - * @return \Illuminate\Bus\UpdatedBatchJobCounts - */ - public function decrementPendingJobs(string $batchId, string $jobId) - { - $values = $this->updateAtomicValues($batchId, function ($batch) use ($jobId) { - return [ - 'pending_jobs' => $batch->pending_jobs - 1, - 'failed_jobs' => $batch->failed_jobs, - 'failed_job_ids' => json_encode(array_values(array_diff((array) json_decode($batch->failed_job_ids, true), [$jobId]))), - ]; - }); - - return new UpdatedBatchJobCounts( - $values['pending_jobs'], - $values['failed_jobs'] - ); - } - - /** - * Increment the total number of failed jobs for the batch. - * - * @param string $batchId - * @param string $jobId - * @return \Illuminate\Bus\UpdatedBatchJobCounts - */ - public function incrementFailedJobs(string $batchId, string $jobId) - { - $values = $this->updateAtomicValues($batchId, function ($batch) use ($jobId) { - return [ - 'pending_jobs' => $batch->pending_jobs, - 'failed_jobs' => $batch->failed_jobs + 1, - 'failed_job_ids' => json_encode(array_values(array_unique(array_merge((array) json_decode($batch->failed_job_ids, true), [$jobId])))), - ]; - }); - - return new UpdatedBatchJobCounts( - $values['pending_jobs'], - $values['failed_jobs'] - ); - } - - /** - * Update an atomic value within the batch. - * - * @param string $batchId - * @param \Closure $callback - * @return int|null - */ - protected function updateAtomicValues(string $batchId, Closure $callback) - { - return $this->connection->transaction(function () use ($batchId, $callback) { - $batch = $this->connection->table($this->table)->where('id', $batchId) - ->lockForUpdate() - ->first(); - - return is_null($batch) ? [] : tap($callback($batch), function ($values) use ($batchId) { - $this->connection->table($this->table)->where('id', $batchId)->update($values); - }); - }); - } - - /** - * Mark the batch that has the given ID as finished. - * - * @param string $batchId - * @return void - */ - public function markAsFinished(string $batchId) - { - $this->connection->table($this->table)->where('id', $batchId)->update([ - 'finished_at' => time(), - ]); - } - - /** - * Cancel the batch that has the given ID. - * - * @param string $batchId - * @return void - */ - public function cancel(string $batchId) - { - $this->connection->table($this->table)->where('id', $batchId)->update([ - 'cancelled_at' => time(), - 'finished_at' => time(), - ]); - } - - /** - * Delete the batch that has the given ID. - * - * @param string $batchId - * @return void - */ - public function delete(string $batchId) - { - $this->connection->table($this->table)->where('id', $batchId)->delete(); - } - - /** - * Prune all of the entries older than the given date. - * - * @param \DateTimeInterface $before - * @return int - */ - public function prune(DateTimeInterface $before) - { - $query = $this->connection->table($this->table) - ->whereNotNull('finished_at') - ->where('finished_at', '<', $before->getTimestamp()); - - $totalDeleted = 0; - - do { - $deleted = $query->take(1000)->delete(); - - $totalDeleted += $deleted; - } while ($deleted !== 0); - - return $totalDeleted; - } - - /** - * Prune all of the unfinished entries older than the given date. - * - * @param \DateTimeInterface $before - * @return int - */ - public function pruneUnfinished(DateTimeInterface $before) - { - $query = $this->connection->table($this->table) - ->whereNull('finished_at') - ->where('created_at', '<', $before->getTimestamp()); - - $totalDeleted = 0; - - do { - $deleted = $query->take(1000)->delete(); - - $totalDeleted += $deleted; - } while ($deleted !== 0); - - return $totalDeleted; - } - - /** - * Prune all of the cancelled entries older than the given date. - * - * @param \DateTimeInterface $before - * @return int - */ - public function pruneCancelled(DateTimeInterface $before) - { - $query = $this->connection->table($this->table) - ->whereNotNull('cancelled_at') - ->where('created_at', '<', $before->getTimestamp()); - - $totalDeleted = 0; - - do { - $deleted = $query->take(1000)->delete(); - - $totalDeleted += $deleted; - } while ($deleted !== 0); - - return $totalDeleted; - } - - /** - * Execute the given Closure within a storage specific transaction. - * - * @param \Closure $callback - * @return mixed - */ - public function transaction(Closure $callback) - { - return $this->connection->transaction(fn () => $callback()); - } - - /** - * Rollback the last database transaction for the connection. - * - * @return void - */ - public function rollBack() - { - $this->connection->rollBack(); - } - - /** - * Serialize the given value. - * - * @param mixed $value - * @return string - */ - protected function serialize($value) - { - $serialized = serialize($value); - - return $this->connection instanceof PostgresConnection - ? base64_encode($serialized) - : $serialized; - } - - /** - * Unserialize the given value. - * - * @param string $serialized - * @return mixed - */ - protected function unserialize($serialized) - { - if ($this->connection instanceof PostgresConnection && - ! Str::contains($serialized, [':', ';'])) { - $serialized = base64_decode($serialized); - } - - try { - return unserialize($serialized); - } catch (Throwable) { - return []; - } - } - - /** - * Convert the given raw batch to a Batch object. - * - * @param object $batch - * @return \Illuminate\Bus\Batch - */ - protected function toBatch($batch) - { - return $this->factory->make( - $this, - $batch->id, - $batch->name, - (int) $batch->total_jobs, - (int) $batch->pending_jobs, - (int) $batch->failed_jobs, - (array) json_decode($batch->failed_job_ids, true), - $this->unserialize($batch->options), - CarbonImmutable::createFromTimestamp($batch->created_at), - $batch->cancelled_at ? CarbonImmutable::createFromTimestamp($batch->cancelled_at) : $batch->cancelled_at, - $batch->finished_at ? CarbonImmutable::createFromTimestamp($batch->finished_at) : $batch->finished_at - ); - } - - /** - * Get the underlying database connection. - * - * @return \Illuminate\Database\Connection - */ - public function getConnection() - { - return $this->connection; - } - - /** - * Set the underlying database connection. - * - * @param \Illuminate\Database\Connection $connection - * @return void - */ - public function setConnection(Connection $connection) - { - $this->connection = $connection; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php deleted file mode 100644 index 68fad138..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php +++ /dev/null @@ -1,296 +0,0 @@ -container = $container; - $this->queueResolver = $queueResolver; - $this->pipeline = new Pipeline($container); - } - - /** - * Dispatch a command to its appropriate handler. - * - * @param mixed $command - * @return mixed - */ - public function dispatch($command) - { - return $this->queueResolver && $this->commandShouldBeQueued($command) - ? $this->dispatchToQueue($command) - : $this->dispatchNow($command); - } - - /** - * Dispatch a command to its appropriate handler in the current process. - * - * Queueable jobs will be dispatched to the "sync" queue. - * - * @param mixed $command - * @param mixed $handler - * @return mixed - */ - public function dispatchSync($command, $handler = null) - { - if ($this->queueResolver && - $this->commandShouldBeQueued($command) && - method_exists($command, 'onConnection')) { - return $this->dispatchToQueue($command->onConnection('sync')); - } - - return $this->dispatchNow($command, $handler); - } - - /** - * Dispatch a command to its appropriate handler in the current process without using the synchronous queue. - * - * @param mixed $command - * @param mixed $handler - * @return mixed - */ - public function dispatchNow($command, $handler = null) - { - $uses = class_uses_recursive($command); - - if (in_array(InteractsWithQueue::class, $uses) && - in_array(Queueable::class, $uses) && - ! $command->job) { - $command->setJob(new SyncJob($this->container, json_encode([]), 'sync', 'sync')); - } - - if ($handler || $handler = $this->getCommandHandler($command)) { - $callback = function ($command) use ($handler) { - $method = method_exists($handler, 'handle') ? 'handle' : '__invoke'; - - return $handler->{$method}($command); - }; - } else { - $callback = function ($command) { - $method = method_exists($command, 'handle') ? 'handle' : '__invoke'; - - return $this->container->call([$command, $method]); - }; - } - - return $this->pipeline->send($command)->through($this->pipes)->then($callback); - } - - /** - * Attempt to find the batch with the given ID. - * - * @param string $batchId - * @return \Illuminate\Bus\Batch|null - */ - public function findBatch(string $batchId) - { - return $this->container->make(BatchRepository::class)->find($batchId); - } - - /** - * Create a new batch of queueable jobs. - * - * @param \Illuminate\Support\Collection|array|mixed $jobs - * @return \Illuminate\Bus\PendingBatch - */ - public function batch($jobs) - { - return new PendingBatch($this->container, Collection::wrap($jobs)); - } - - /** - * Create a new chain of queueable jobs. - * - * @param \Illuminate\Support\Collection|array $jobs - * @return \Illuminate\Foundation\Bus\PendingChain - */ - public function chain($jobs) - { - $jobs = Collection::wrap($jobs); - $jobs = ChainedBatch::prepareNestedBatches($jobs); - - return new PendingChain($jobs->shift(), $jobs->toArray()); - } - - /** - * Determine if the given command has a handler. - * - * @param mixed $command - * @return bool - */ - public function hasCommandHandler($command) - { - return array_key_exists(get_class($command), $this->handlers); - } - - /** - * Retrieve the handler for a command. - * - * @param mixed $command - * @return bool|mixed - */ - public function getCommandHandler($command) - { - if ($this->hasCommandHandler($command)) { - return $this->container->make($this->handlers[get_class($command)]); - } - - return false; - } - - /** - * Determine if the given command should be queued. - * - * @param mixed $command - * @return bool - */ - protected function commandShouldBeQueued($command) - { - return $command instanceof ShouldQueue; - } - - /** - * Dispatch a command to its appropriate handler behind a queue. - * - * @param mixed $command - * @return mixed - * - * @throws \RuntimeException - */ - public function dispatchToQueue($command) - { - $connection = $command->connection ?? null; - - $queue = call_user_func($this->queueResolver, $connection); - - if (! $queue instanceof Queue) { - throw new RuntimeException('Queue resolver did not return a Queue implementation.'); - } - - if (method_exists($command, 'queue')) { - return $command->queue($queue, $command); - } - - return $this->pushCommandToQueue($queue, $command); - } - - /** - * Push the command onto the given queue instance. - * - * @param \Illuminate\Contracts\Queue\Queue $queue - * @param mixed $command - * @return mixed - */ - protected function pushCommandToQueue($queue, $command) - { - if (isset($command->queue, $command->delay)) { - return $queue->laterOn($command->queue, $command->delay, $command); - } - - if (isset($command->queue)) { - return $queue->pushOn($command->queue, $command); - } - - if (isset($command->delay)) { - return $queue->later($command->delay, $command); - } - - return $queue->push($command); - } - - /** - * Dispatch a command to its appropriate handler after the current process. - * - * @param mixed $command - * @param mixed $handler - * @return void - */ - public function dispatchAfterResponse($command, $handler = null) - { - $this->container->terminating(function () use ($command, $handler) { - $this->dispatchSync($command, $handler); - }); - } - - /** - * Set the pipes through which commands should be piped before dispatching. - * - * @param array $pipes - * @return $this - */ - public function pipeThrough(array $pipes) - { - $this->pipes = $pipes; - - return $this; - } - - /** - * Map a command to a handler. - * - * @param array $map - * @return $this - */ - public function map(array $map) - { - $this->handlers = array_merge($this->handlers, $map); - - return $this; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Bus/Queueable.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Bus/Queueable.php deleted file mode 100644 index 1c8951ec..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Bus/Queueable.php +++ /dev/null @@ -1,286 +0,0 @@ -connection = $connection; - - return $this; - } - - /** - * Set the desired queue for the job. - * - * @param string|null $queue - * @return $this - */ - public function onQueue($queue) - { - $this->queue = $queue; - - return $this; - } - - /** - * Set the desired connection for the chain. - * - * @param string|null $connection - * @return $this - */ - public function allOnConnection($connection) - { - $this->chainConnection = $connection; - $this->connection = $connection; - - return $this; - } - - /** - * Set the desired queue for the chain. - * - * @param string|null $queue - * @return $this - */ - public function allOnQueue($queue) - { - $this->chainQueue = $queue; - $this->queue = $queue; - - return $this; - } - - /** - * Set the desired delay in seconds for the job. - * - * @param \DateTimeInterface|\DateInterval|array|int|null $delay - * @return $this - */ - public function delay($delay) - { - $this->delay = $delay; - - return $this; - } - - /** - * Indicate that the job should be dispatched after all database transactions have committed. - * - * @return $this - */ - public function afterCommit() - { - $this->afterCommit = true; - - return $this; - } - - /** - * Indicate that the job should not wait until database transactions have been committed before dispatching. - * - * @return $this - */ - public function beforeCommit() - { - $this->afterCommit = false; - - return $this; - } - - /** - * Specify the middleware the job should be dispatched through. - * - * @param array|object $middleware - * @return $this - */ - public function through($middleware) - { - $this->middleware = Arr::wrap($middleware); - - return $this; - } - - /** - * Set the jobs that should run if this job is successful. - * - * @param array $chain - * @return $this - */ - public function chain($chain) - { - $this->chained = collect($chain)->map(function ($job) { - return $this->serializeJob($job); - })->all(); - - return $this; - } - - /** - * Prepend a job to the current chain so that it is run after the currently running job. - * - * @param mixed $job - * @return $this - */ - public function prependToChain($job) - { - $job = match (true) { - $job instanceof PendingBatch => new ChainedBatch($job), - default => $job, - }; - - $this->chained = Arr::prepend($this->chained, $this->serializeJob($job)); - - return $this; - } - - /** - * Append a job to the end of the current chain. - * - * @param mixed $job - * @return $this - */ - public function appendToChain($job) - { - $job = match (true) { - $job instanceof PendingBatch => new ChainedBatch($job), - default => $job, - }; - - $this->chained = array_merge($this->chained, [$this->serializeJob($job)]); - - return $this; - } - - /** - * Serialize a job for queuing. - * - * @param mixed $job - * @return string - * - * @throws \RuntimeException - */ - protected function serializeJob($job) - { - if ($job instanceof Closure) { - if (! class_exists(CallQueuedClosure::class)) { - throw new RuntimeException( - 'To enable support for closure jobs, please install the illuminate/queue package.' - ); - } - - $job = CallQueuedClosure::create($job); - } - - return serialize($job); - } - - /** - * Dispatch the next job on the chain. - * - * @return void - */ - public function dispatchNextJobInChain() - { - if (! empty($this->chained)) { - dispatch(tap(unserialize(array_shift($this->chained)), function ($next) { - $next->chained = $this->chained; - - $next->onConnection($next->connection ?: $this->chainConnection); - $next->onQueue($next->queue ?: $this->chainQueue); - - $next->chainConnection = $this->chainConnection; - $next->chainQueue = $this->chainQueue; - $next->chainCatchCallbacks = $this->chainCatchCallbacks; - })); - } - } - - /** - * Invoke all of the chain's failed job callbacks. - * - * @param \Throwable $e - * @return void - */ - public function invokeChainCatchCallbacks($e) - { - collect($this->chainCatchCallbacks)->each(function ($callback) use ($e) { - $callback($e); - }); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Cache/DatabaseStore.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Cache/DatabaseStore.php deleted file mode 100755 index b8026e3e..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Cache/DatabaseStore.php +++ /dev/null @@ -1,419 +0,0 @@ -table = $table; - $this->prefix = $prefix; - $this->connection = $connection; - $this->lockTable = $lockTable; - $this->lockLottery = $lockLottery; - $this->defaultLockTimeoutInSeconds = $defaultLockTimeoutInSeconds; - } - - /** - * Retrieve an item from the cache by key. - * - * @param string|array $key - * @return mixed - */ - public function get($key) - { - $prefixed = $this->prefix.$key; - - $cache = $this->table()->where('key', '=', $prefixed)->first(); - - // If we have a cache record we will check the expiration time against current - // time on the system and see if the record has expired. If it has, we will - // remove the records from the database table so it isn't returned again. - if (is_null($cache)) { - return; - } - - $cache = is_array($cache) ? (object) $cache : $cache; - - // If this cache expiration date is past the current time, we will remove this - // item from the cache. Then we will return a null value since the cache is - // expired. We will use "Carbon" to make this comparison with the column. - if ($this->currentTime() >= $cache->expiration) { - $this->forgetIfExpired($key); - - return; - } - - return $this->unserialize($cache->value); - } - - /** - * Store an item in the cache for a given number of seconds. - * - * @param string $key - * @param mixed $value - * @param int $seconds - * @return bool - */ - public function put($key, $value, $seconds) - { - $key = $this->prefix.$key; - $value = $this->serialize($value); - $expiration = $this->getTime() + $seconds; - - return $this->table()->upsert(compact('key', 'value', 'expiration'), 'key') > 0; - } - - /** - * Store an item in the cache if the key doesn't exist. - * - * @param string $key - * @param mixed $value - * @param int $seconds - * @return bool - */ - public function add($key, $value, $seconds) - { - if (! is_null($this->get($key))) { - return false; - } - - $key = $this->prefix.$key; - $value = $this->serialize($value); - $expiration = $this->getTime() + $seconds; - - if (! $this->getConnection() instanceof SqlServerConnection) { - return $this->table()->insertOrIgnore(compact('key', 'value', 'expiration')) > 0; - } - - try { - return $this->table()->insert(compact('key', 'value', 'expiration')); - } catch (QueryException) { - // ... - } - - return false; - } - - /** - * Increment the value of an item in the cache. - * - * @param string $key - * @param mixed $value - * @return int|bool - */ - public function increment($key, $value = 1) - { - return $this->incrementOrDecrement($key, $value, function ($current, $value) { - return $current + $value; - }); - } - - /** - * Decrement the value of an item in the cache. - * - * @param string $key - * @param mixed $value - * @return int|bool - */ - public function decrement($key, $value = 1) - { - return $this->incrementOrDecrement($key, $value, function ($current, $value) { - return $current - $value; - }); - } - - /** - * Increment or decrement an item in the cache. - * - * @param string $key - * @param mixed $value - * @param \Closure $callback - * @return int|bool - */ - protected function incrementOrDecrement($key, $value, Closure $callback) - { - return $this->connection->transaction(function () use ($key, $value, $callback) { - $prefixed = $this->prefix.$key; - - $cache = $this->table()->where('key', $prefixed) - ->lockForUpdate()->first(); - - // If there is no value in the cache, we will return false here. Otherwise the - // value will be decrypted and we will proceed with this function to either - // increment or decrement this value based on the given action callbacks. - if (is_null($cache)) { - return false; - } - - $cache = is_array($cache) ? (object) $cache : $cache; - - $current = $this->unserialize($cache->value); - - // Here we'll call this callback function that was given to the function which - // is used to either increment or decrement the function. We use a callback - // so we do not have to recreate all this logic in each of the functions. - $new = $callback((int) $current, $value); - - if (! is_numeric($current)) { - return false; - } - - // Here we will update the values in the table. We will also encrypt the value - // since database cache values are encrypted by default with secure storage - // that can't be easily read. We will return the new value after storing. - $this->table()->where('key', $prefixed)->update([ - 'value' => $this->serialize($new), - ]); - - return $new; - }); - } - - /** - * Get the current system time. - * - * @return int - */ - protected function getTime() - { - return $this->currentTime(); - } - - /** - * Store an item in the cache indefinitely. - * - * @param string $key - * @param mixed $value - * @return bool - */ - public function forever($key, $value) - { - return $this->put($key, $value, 315360000); - } - - /** - * Get a lock instance. - * - * @param string $name - * @param int $seconds - * @param string|null $owner - * @return \Illuminate\Contracts\Cache\Lock - */ - public function lock($name, $seconds = 0, $owner = null) - { - return new DatabaseLock( - $this->lockConnection ?? $this->connection, - $this->lockTable, - $this->prefix.$name, - $seconds, - $owner, - $this->lockLottery, - $this->defaultLockTimeoutInSeconds - ); - } - - /** - * Restore a lock instance using the owner identifier. - * - * @param string $name - * @param string $owner - * @return \Illuminate\Contracts\Cache\Lock - */ - public function restoreLock($name, $owner) - { - return $this->lock($name, 0, $owner); - } - - /** - * Remove an item from the cache. - * - * @param string $key - * @return bool - */ - public function forget($key) - { - $this->table()->where('key', '=', $this->prefix.$key)->delete(); - - return true; - } - - /** - * Remove an item from the cache if it is expired. - * - * @param string $key - * @return bool - */ - public function forgetIfExpired($key) - { - $this->table() - ->where('key', '=', $this->prefix.$key) - ->where('expiration', '<=', $this->getTime()) - ->delete(); - - return true; - } - - /** - * Remove all items from the cache. - * - * @return bool - */ - public function flush() - { - $this->table()->delete(); - - return true; - } - - /** - * Get a query builder for the cache table. - * - * @return \Illuminate\Database\Query\Builder - */ - protected function table() - { - return $this->connection->table($this->table); - } - - /** - * Get the underlying database connection. - * - * @return \Illuminate\Database\ConnectionInterface - */ - public function getConnection() - { - return $this->connection; - } - - /** - * Specify the name of the connection that should be used to manage locks. - * - * @param \Illuminate\Database\ConnectionInterface $connection - * @return $this - */ - public function setLockConnection($connection) - { - $this->lockConnection = $connection; - - return $this; - } - - /** - * Get the cache key prefix. - * - * @return string - */ - public function getPrefix() - { - return $this->prefix; - } - - /** - * Serialize the given value. - * - * @param mixed $value - * @return string - */ - protected function serialize($value) - { - $result = serialize($value); - - if ($this->connection instanceof PostgresConnection && str_contains($result, "\0")) { - $result = base64_encode($result); - } - - return $result; - } - - /** - * Unserialize the given value. - * - * @param string $value - * @return mixed - */ - protected function unserialize($value) - { - if ($this->connection instanceof PostgresConnection && ! Str::contains($value, [':', ';'])) { - $value = base64_decode($value); - } - - return unserialize($value); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Cache/RedisTagSet.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Cache/RedisTagSet.php deleted file mode 100644 index 072a01bc..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Cache/RedisTagSet.php +++ /dev/null @@ -1,125 +0,0 @@ -addSeconds($ttl)->getTimestamp(); - - foreach ($this->tagIds() as $tagKey) { - if ($updateWhen) { - $this->store->connection()->zadd($this->store->getPrefix().$tagKey, $updateWhen, $ttl, $key); - } else { - $this->store->connection()->zadd($this->store->getPrefix().$tagKey, $ttl, $key); - } - } - } - - /** - * Get all of the cache entry keys for the tag set. - * - * @return \Illuminate\Support\LazyCollection - */ - public function entries() - { - return LazyCollection::make(function () { - foreach ($this->tagIds() as $tagKey) { - $cursor = $defaultCursorValue = '0'; - - do { - [$cursor, $entries] = $this->store->connection()->zscan( - $this->store->getPrefix().$tagKey, - $cursor, - ['match' => '*', 'count' => 1000] - ); - - if (! is_array($entries)) { - break; - } - - $entries = array_unique(array_keys($entries)); - - if (count($entries) === 0) { - continue; - } - - foreach ($entries as $entry) { - yield $entry; - } - } while (((string) $cursor) !== $defaultCursorValue); - } - }); - } - - /** - * Remove the stale entries from the tag set. - * - * @return void - */ - public function flushStaleEntries() - { - $this->store->connection()->pipeline(function ($pipe) { - foreach ($this->tagIds() as $tagKey) { - $pipe->zremrangebyscore($this->store->getPrefix().$tagKey, 0, Carbon::now()->getTimestamp()); - } - }); - } - - /** - * Flush the tag from the cache. - * - * @param string $name - */ - public function flushTag($name) - { - return $this->resetTag($name); - } - - /** - * Reset the tag and return the new tag identifier. - * - * @param string $name - * @return string - */ - public function resetTag($name) - { - $this->store->forget($this->tagKey($name)); - - return $this->tagId($name); - } - - /** - * Get the unique tag identifier for a given tag. - * - * @param string $name - * @return string - */ - public function tagId($name) - { - return "tag:{$name}:entries"; - } - - /** - * Get the tag identifier key for a given tag. - * - * @param string $name - * @return string - */ - public function tagKey($name) - { - return "tag:{$name}:entries"; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Cache/RedisTaggedCache.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Cache/RedisTaggedCache.php deleted file mode 100644 index 8846844b..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Cache/RedisTaggedCache.php +++ /dev/null @@ -1,141 +0,0 @@ -getSeconds($ttl); - - if ($seconds > 0) { - $this->tags->addEntry( - $this->itemKey($key), - $seconds - ); - } - } - - return parent::add($key, $value, $ttl); - } - - /** - * Store an item in the cache. - * - * @param string $key - * @param mixed $value - * @param \DateTimeInterface|\DateInterval|int|null $ttl - * @return bool - */ - public function put($key, $value, $ttl = null) - { - if (is_null($ttl)) { - return $this->forever($key, $value); - } - - $seconds = $this->getSeconds($ttl); - - if ($seconds > 0) { - $this->tags->addEntry( - $this->itemKey($key), - $seconds - ); - } - - return parent::put($key, $value, $ttl); - } - - /** - * Increment the value of an item in the cache. - * - * @param string $key - * @param mixed $value - * @return int|bool - */ - public function increment($key, $value = 1) - { - $this->tags->addEntry($this->itemKey($key), updateWhen: 'NX'); - - return parent::increment($key, $value); - } - - /** - * Decrement the value of an item in the cache. - * - * @param string $key - * @param mixed $value - * @return int|bool - */ - public function decrement($key, $value = 1) - { - $this->tags->addEntry($this->itemKey($key), updateWhen: 'NX'); - - return parent::decrement($key, $value); - } - - /** - * Store an item in the cache indefinitely. - * - * @param string $key - * @param mixed $value - * @return bool - */ - public function forever($key, $value) - { - $this->tags->addEntry($this->itemKey($key)); - - return parent::forever($key, $value); - } - - /** - * Remove all items from the cache. - * - * @return bool - */ - public function flush() - { - $this->flushValues(); - $this->tags->flush(); - - return true; - } - - /** - * Flush the individual cache entries for the tags. - * - * @return void - */ - protected function flushValues() - { - $entries = $this->tags->entries() - ->map(fn (string $key) => $this->store->getPrefix().$key) - ->chunk(1000); - - foreach ($entries as $cacheKeys) { - $this->store->connection()->del(...$cacheKeys); - } - } - - /** - * Remove all stale reference entries from the tag set. - * - * @return bool - */ - public function flushStale() - { - $this->tags->flushStaleEntries(); - - return true; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Cache/Repository.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Cache/Repository.php deleted file mode 100755 index 606f73b3..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Cache/Repository.php +++ /dev/null @@ -1,704 +0,0 @@ -store = $store; - } - - /** - * Determine if an item exists in the cache. - * - * @param array|string $key - * @return bool - */ - public function has($key): bool - { - return ! is_null($this->get($key)); - } - - /** - * Determine if an item doesn't exist in the cache. - * - * @param string $key - * @return bool - */ - public function missing($key) - { - return ! $this->has($key); - } - - /** - * Retrieve an item from the cache by key. - * - * @template TCacheValue - * - * @param array|string $key - * @param TCacheValue|(\Closure(): TCacheValue) $default - * @return (TCacheValue is null ? mixed : TCacheValue) - */ - public function get($key, $default = null): mixed - { - if (is_array($key)) { - return $this->many($key); - } - - $value = $this->store->get($this->itemKey($key)); - - // If we could not find the cache value, we will fire the missed event and get - // the default value for this cache value. This default could be a callback - // so we will execute the value function which will resolve it if needed. - if (is_null($value)) { - $this->event(new CacheMissed($key)); - - $value = value($default); - } else { - $this->event(new CacheHit($key, $value)); - } - - return $value; - } - - /** - * Retrieve multiple items from the cache by key. - * - * Items not found in the cache will have a null value. - * - * @param array $keys - * @return array - */ - public function many(array $keys) - { - $values = $this->store->many(collect($keys)->map(function ($value, $key) { - return is_string($key) ? $key : $value; - })->values()->all()); - - return collect($values)->map(function ($value, $key) use ($keys) { - return $this->handleManyResult($keys, $key, $value); - })->all(); - } - - /** - * {@inheritdoc} - * - * @return iterable - */ - public function getMultiple($keys, $default = null): iterable - { - $defaults = []; - - foreach ($keys as $key) { - $defaults[$key] = $default; - } - - return $this->many($defaults); - } - - /** - * Handle a result for the "many" method. - * - * @param array $keys - * @param string $key - * @param mixed $value - * @return mixed - */ - protected function handleManyResult($keys, $key, $value) - { - // If we could not find the cache value, we will fire the missed event and get - // the default value for this cache value. This default could be a callback - // so we will execute the value function which will resolve it if needed. - if (is_null($value)) { - $this->event(new CacheMissed($key)); - - return (isset($keys[$key]) && ! array_is_list($keys)) ? value($keys[$key]) : null; - } - - // If we found a valid value we will fire the "hit" event and return the value - // back from this function. The "hit" event gives developers an opportunity - // to listen for every possible cache "hit" throughout this applications. - $this->event(new CacheHit($key, $value)); - - return $value; - } - - /** - * Retrieve an item from the cache and delete it. - * - * @template TCacheValue - * - * @param array|string $key - * @param TCacheValue|(\Closure(): TCacheValue) $default - * @return (TCacheValue is null ? mixed : TCacheValue) - */ - public function pull($key, $default = null) - { - return tap($this->get($key, $default), function () use ($key) { - $this->forget($key); - }); - } - - /** - * Store an item in the cache. - * - * @param array|string $key - * @param mixed $value - * @param \DateTimeInterface|\DateInterval|int|null $ttl - * @return bool - */ - public function put($key, $value, $ttl = null) - { - if (is_array($key)) { - return $this->putMany($key, $value); - } - - if ($ttl === null) { - return $this->forever($key, $value); - } - - $seconds = $this->getSeconds($ttl); - - if ($seconds <= 0) { - return $this->forget($key); - } - - $result = $this->store->put($this->itemKey($key), $value, $seconds); - - if ($result) { - $this->event(new KeyWritten($key, $value, $seconds)); - } - - return $result; - } - - /** - * {@inheritdoc} - * - * @return bool - */ - public function set($key, $value, $ttl = null): bool - { - return $this->put($key, $value, $ttl); - } - - /** - * Store multiple items in the cache for a given number of seconds. - * - * @param array $values - * @param \DateTimeInterface|\DateInterval|int|null $ttl - * @return bool - */ - public function putMany(array $values, $ttl = null) - { - if ($ttl === null) { - return $this->putManyForever($values); - } - - $seconds = $this->getSeconds($ttl); - - if ($seconds <= 0) { - return $this->deleteMultiple(array_keys($values)); - } - - $result = $this->store->putMany($values, $seconds); - - if ($result) { - foreach ($values as $key => $value) { - $this->event(new KeyWritten($key, $value, $seconds)); - } - } - - return $result; - } - - /** - * Store multiple items in the cache indefinitely. - * - * @param array $values - * @return bool - */ - protected function putManyForever(array $values) - { - $result = true; - - foreach ($values as $key => $value) { - if (! $this->forever($key, $value)) { - $result = false; - } - } - - return $result; - } - - /** - * {@inheritdoc} - * - * @return bool - */ - public function setMultiple($values, $ttl = null): bool - { - return $this->putMany(is_array($values) ? $values : iterator_to_array($values), $ttl); - } - - /** - * Store an item in the cache if the key does not exist. - * - * @param string $key - * @param mixed $value - * @param \DateTimeInterface|\DateInterval|int|null $ttl - * @return bool - */ - public function add($key, $value, $ttl = null) - { - $seconds = null; - - if ($ttl !== null) { - $seconds = $this->getSeconds($ttl); - - if ($seconds <= 0) { - return false; - } - - // If the store has an "add" method we will call the method on the store so it - // has a chance to override this logic. Some drivers better support the way - // this operation should work with a total "atomic" implementation of it. - if (method_exists($this->store, 'add')) { - return $this->store->add( - $this->itemKey($key), $value, $seconds - ); - } - } - - // If the value did not exist in the cache, we will put the value in the cache - // so it exists for subsequent requests. Then, we will return true so it is - // easy to know if the value gets added. Otherwise, we will return false. - if (is_null($this->get($key))) { - return $this->put($key, $value, $seconds); - } - - return false; - } - - /** - * Increment the value of an item in the cache. - * - * @param string $key - * @param mixed $value - * @return int|bool - */ - public function increment($key, $value = 1) - { - return $this->store->increment($key, $value); - } - - /** - * Decrement the value of an item in the cache. - * - * @param string $key - * @param mixed $value - * @return int|bool - */ - public function decrement($key, $value = 1) - { - return $this->store->decrement($key, $value); - } - - /** - * Store an item in the cache indefinitely. - * - * @param string $key - * @param mixed $value - * @return bool - */ - public function forever($key, $value) - { - $result = $this->store->forever($this->itemKey($key), $value); - - if ($result) { - $this->event(new KeyWritten($key, $value)); - } - - return $result; - } - - /** - * Get an item from the cache, or execute the given Closure and store the result. - * - * @template TCacheValue - * - * @param string $key - * @param \Closure|\DateTimeInterface|\DateInterval|int|null $ttl - * @param \Closure(): TCacheValue $callback - * @return TCacheValue - */ - public function remember($key, $ttl, Closure $callback) - { - $value = $this->get($key); - - // If the item exists in the cache we will just return this immediately and if - // not we will execute the given Closure and cache the result of that for a - // given number of seconds so it's available for all subsequent requests. - if (! is_null($value)) { - return $value; - } - - $value = $callback(); - - $this->put($key, $value, value($ttl, $value)); - - return $value; - } - - /** - * Get an item from the cache, or execute the given Closure and store the result forever. - * - * @template TCacheValue - * - * @param string $key - * @param \Closure(): TCacheValue $callback - * @return TCacheValue - */ - public function sear($key, Closure $callback) - { - return $this->rememberForever($key, $callback); - } - - /** - * Get an item from the cache, or execute the given Closure and store the result forever. - * - * @template TCacheValue - * - * @param string $key - * @param \Closure(): TCacheValue $callback - * @return TCacheValue - */ - public function rememberForever($key, Closure $callback) - { - $value = $this->get($key); - - // If the item exists in the cache we will just return this immediately - // and if not we will execute the given Closure and cache the result - // of that forever so it is available for all subsequent requests. - if (! is_null($value)) { - return $value; - } - - $this->forever($key, $value = $callback()); - - return $value; - } - - /** - * Remove an item from the cache. - * - * @param string $key - * @return bool - */ - public function forget($key) - { - return tap($this->store->forget($this->itemKey($key)), function ($result) use ($key) { - if ($result) { - $this->event(new KeyForgotten($key)); - } - }); - } - - /** - * {@inheritdoc} - * - * @return bool - */ - public function delete($key): bool - { - return $this->forget($key); - } - - /** - * {@inheritdoc} - * - * @return bool - */ - public function deleteMultiple($keys): bool - { - $result = true; - - foreach ($keys as $key) { - if (! $this->forget($key)) { - $result = false; - } - } - - return $result; - } - - /** - * {@inheritdoc} - * - * @return bool - */ - public function clear(): bool - { - return $this->store->flush(); - } - - /** - * Begin executing a new tags operation if the store supports it. - * - * @param array|mixed $names - * @return \Illuminate\Cache\TaggedCache - * - * @throws \BadMethodCallException - */ - public function tags($names) - { - if (! $this->supportsTags()) { - throw new BadMethodCallException('This cache store does not support tagging.'); - } - - $cache = $this->store->tags(is_array($names) ? $names : func_get_args()); - - if (! is_null($this->events)) { - $cache->setEventDispatcher($this->events); - } - - return $cache->setDefaultCacheTime($this->default); - } - - /** - * Format the key for a cache item. - * - * @param string $key - * @return string - */ - protected function itemKey($key) - { - return $key; - } - - /** - * Calculate the number of seconds for the given TTL. - * - * @param \DateTimeInterface|\DateInterval|int $ttl - * @return int - */ - protected function getSeconds($ttl) - { - $duration = $this->parseDateInterval($ttl); - - if ($duration instanceof DateTimeInterface) { - $duration = Carbon::now()->diffInRealSeconds($duration, false); - } - - return (int) ($duration > 0 ? $duration : 0); - } - - /** - * Determine if the current store supports tags. - * - * @return bool - */ - public function supportsTags() - { - return method_exists($this->store, 'tags'); - } - - /** - * Get the default cache time. - * - * @return int|null - */ - public function getDefaultCacheTime() - { - return $this->default; - } - - /** - * Set the default cache time in seconds. - * - * @param int|null $seconds - * @return $this - */ - public function setDefaultCacheTime($seconds) - { - $this->default = $seconds; - - return $this; - } - - /** - * Get the cache store implementation. - * - * @return \Illuminate\Contracts\Cache\Store - */ - public function getStore() - { - return $this->store; - } - - /** - * Set the cache store implementation. - * - * @param \Illuminate\Contracts\Cache\Store $store - * @return static - */ - public function setStore($store) - { - $this->store = $store; - - return $this; - } - - /** - * Fire an event for this cache instance. - * - * @param object|string $event - * @return void - */ - protected function event($event) - { - $this->events?->dispatch($event); - } - - /** - * Get the event dispatcher instance. - * - * @return \Illuminate\Contracts\Events\Dispatcher - */ - public function getEventDispatcher() - { - return $this->events; - } - - /** - * Set the event dispatcher instance. - * - * @param \Illuminate\Contracts\Events\Dispatcher $events - * @return void - */ - public function setEventDispatcher(Dispatcher $events) - { - $this->events = $events; - } - - /** - * Determine if a cached value exists. - * - * @param string $key - * @return bool - */ - public function offsetExists($key): bool - { - return $this->has($key); - } - - /** - * Retrieve an item from the cache by key. - * - * @param string $key - * @return mixed - */ - public function offsetGet($key): mixed - { - return $this->get($key); - } - - /** - * Store an item in the cache for the default time. - * - * @param string $key - * @param mixed $value - * @return void - */ - public function offsetSet($key, $value): void - { - $this->put($key, $value, $this->default); - } - - /** - * Remove an item from the cache. - * - * @param string $key - * @return void - */ - public function offsetUnset($key): void - { - $this->forget($key); - } - - /** - * Handle dynamic calls into macros or pass missing methods to the store. - * - * @param string $method - * @param array $parameters - * @return mixed - */ - public function __call($method, $parameters) - { - if (static::hasMacro($method)) { - return $this->macroCall($method, $parameters); - } - - return $this->store->$method(...$parameters); - } - - /** - * Clone cache repository instance. - * - * @return void - */ - public function __clone() - { - $this->store = clone $this->store; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Collections/Arr.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Collections/Arr.php deleted file mode 100644 index d83cf5f7..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Collections/Arr.php +++ /dev/null @@ -1,939 +0,0 @@ -all(); - } elseif (! is_array($values)) { - continue; - } - - $results[] = $values; - } - - return array_merge([], ...$results); - } - - /** - * Cross join the given arrays, returning all possible permutations. - * - * @param iterable ...$arrays - * @return array - */ - public static function crossJoin(...$arrays) - { - $results = [[]]; - - foreach ($arrays as $index => $array) { - $append = []; - - foreach ($results as $product) { - foreach ($array as $item) { - $product[$index] = $item; - - $append[] = $product; - } - } - - $results = $append; - } - - return $results; - } - - /** - * Divide an array into two arrays. One with keys and the other with values. - * - * @param array $array - * @return array - */ - public static function divide($array) - { - return [array_keys($array), array_values($array)]; - } - - /** - * Flatten a multi-dimensional associative array with dots. - * - * @param iterable $array - * @param string $prepend - * @return array - */ - public static function dot($array, $prepend = '') - { - $results = []; - - foreach ($array as $key => $value) { - if (is_array($value) && ! empty($value)) { - $results = array_merge($results, static::dot($value, $prepend.$key.'.')); - } else { - $results[$prepend.$key] = $value; - } - } - - return $results; - } - - /** - * Convert a flatten "dot" notation array into an expanded array. - * - * @param iterable $array - * @return array - */ - public static function undot($array) - { - $results = []; - - foreach ($array as $key => $value) { - static::set($results, $key, $value); - } - - return $results; - } - - /** - * Get all of the given array except for a specified array of keys. - * - * @param array $array - * @param array|string|int|float $keys - * @return array - */ - public static function except($array, $keys) - { - static::forget($array, $keys); - - return $array; - } - - /** - * Determine if the given key exists in the provided array. - * - * @param \ArrayAccess|array $array - * @param string|int $key - * @return bool - */ - public static function exists($array, $key) - { - if ($array instanceof Enumerable) { - return $array->has($key); - } - - if ($array instanceof ArrayAccess) { - return $array->offsetExists($key); - } - - if (is_float($key)) { - $key = (string) $key; - } - - return array_key_exists($key, $array); - } - - /** - * Return the first element in an array passing a given truth test. - * - * @param iterable $array - * @param callable|null $callback - * @param mixed $default - * @return mixed - */ - public static function first($array, ?callable $callback = null, $default = null) - { - if (is_null($callback)) { - if (empty($array)) { - return value($default); - } - - foreach ($array as $item) { - return $item; - } - - return value($default); - } - - foreach ($array as $key => $value) { - if ($callback($value, $key)) { - return $value; - } - } - - return value($default); - } - - /** - * Return the last element in an array passing a given truth test. - * - * @param array $array - * @param callable|null $callback - * @param mixed $default - * @return mixed - */ - public static function last($array, ?callable $callback = null, $default = null) - { - if (is_null($callback)) { - return empty($array) ? value($default) : end($array); - } - - return static::first(array_reverse($array, true), $callback, $default); - } - - /** - * Take the first or last {$limit} items from an array. - * - * @param array $array - * @param int $limit - * @return array - */ - public static function take($array, $limit) - { - if ($limit < 0) { - return array_slice($array, $limit, abs($limit)); - } - - return array_slice($array, 0, $limit); - } - - /** - * Flatten a multi-dimensional array into a single level. - * - * @param iterable $array - * @param int $depth - * @return array - */ - public static function flatten($array, $depth = INF) - { - $result = []; - - foreach ($array as $item) { - $item = $item instanceof Collection ? $item->all() : $item; - - if (! is_array($item)) { - $result[] = $item; - } else { - $values = $depth === 1 - ? array_values($item) - : static::flatten($item, $depth - 1); - - foreach ($values as $value) { - $result[] = $value; - } - } - } - - return $result; - } - - /** - * Remove one or many array items from a given array using "dot" notation. - * - * @param array $array - * @param array|string|int|float $keys - * @return void - */ - public static function forget(&$array, $keys) - { - $original = &$array; - - $keys = (array) $keys; - - if (count($keys) === 0) { - return; - } - - foreach ($keys as $key) { - // if the exact key exists in the top-level, remove it - if (static::exists($array, $key)) { - unset($array[$key]); - - continue; - } - - $parts = explode('.', $key); - - // clean up before each pass - $array = &$original; - - while (count($parts) > 1) { - $part = array_shift($parts); - - if (isset($array[$part]) && static::accessible($array[$part])) { - $array = &$array[$part]; - } else { - continue 2; - } - } - - unset($array[array_shift($parts)]); - } - } - - /** - * Get an item from an array using "dot" notation. - * - * @param \ArrayAccess|array $array - * @param string|int|null $key - * @param mixed $default - * @return mixed - */ - public static function get($array, $key, $default = null) - { - if (! static::accessible($array)) { - return value($default); - } - - if (is_null($key)) { - return $array; - } - - if (static::exists($array, $key)) { - return $array[$key]; - } - - if (! str_contains($key, '.')) { - return $array[$key] ?? value($default); - } - - foreach (explode('.', $key) as $segment) { - if (static::accessible($array) && static::exists($array, $segment)) { - $array = $array[$segment]; - } else { - return value($default); - } - } - - return $array; - } - - /** - * Check if an item or items exist in an array using "dot" notation. - * - * @param \ArrayAccess|array $array - * @param string|array $keys - * @return bool - */ - public static function has($array, $keys) - { - $keys = (array) $keys; - - if (! $array || $keys === []) { - return false; - } - - foreach ($keys as $key) { - $subKeyArray = $array; - - if (static::exists($array, $key)) { - continue; - } - - foreach (explode('.', $key) as $segment) { - if (static::accessible($subKeyArray) && static::exists($subKeyArray, $segment)) { - $subKeyArray = $subKeyArray[$segment]; - } else { - return false; - } - } - } - - return true; - } - - /** - * Determine if any of the keys exist in an array using "dot" notation. - * - * @param \ArrayAccess|array $array - * @param string|array $keys - * @return bool - */ - public static function hasAny($array, $keys) - { - if (is_null($keys)) { - return false; - } - - $keys = (array) $keys; - - if (! $array) { - return false; - } - - if ($keys === []) { - return false; - } - - foreach ($keys as $key) { - if (static::has($array, $key)) { - return true; - } - } - - return false; - } - - /** - * Determines if an array is associative. - * - * An array is "associative" if it doesn't have sequential numerical keys beginning with zero. - * - * @param array $array - * @return bool - */ - public static function isAssoc(array $array) - { - return ! array_is_list($array); - } - - /** - * Determines if an array is a list. - * - * An array is a "list" if all array keys are sequential integers starting from 0 with no gaps in between. - * - * @param array $array - * @return bool - */ - public static function isList($array) - { - return array_is_list($array); - } - - /** - * Join all items using a string. The final items can use a separate glue string. - * - * @param array $array - * @param string $glue - * @param string $finalGlue - * @return string - */ - public static function join($array, $glue, $finalGlue = '') - { - if ($finalGlue === '') { - return implode($glue, $array); - } - - if (count($array) === 0) { - return ''; - } - - if (count($array) === 1) { - return end($array); - } - - $finalItem = array_pop($array); - - return implode($glue, $array).$finalGlue.$finalItem; - } - - /** - * Key an associative array by a field or using a callback. - * - * @param array $array - * @param callable|array|string $keyBy - * @return array - */ - public static function keyBy($array, $keyBy) - { - return Collection::make($array)->keyBy($keyBy)->all(); - } - - /** - * Prepend the key names of an associative array. - * - * @param array $array - * @param string $prependWith - * @return array - */ - public static function prependKeysWith($array, $prependWith) - { - return static::mapWithKeys($array, fn ($item, $key) => [$prependWith.$key => $item]); - } - - /** - * Get a subset of the items from the given array. - * - * @param array $array - * @param array|string $keys - * @return array - */ - public static function only($array, $keys) - { - return array_intersect_key($array, array_flip((array) $keys)); - } - - /** - * Select an array of values from an array. - * - * @param array $array - * @param array|string $keys - * @return array - */ - public static function select($array, $keys) - { - $keys = static::wrap($keys); - - return static::map($array, function ($item) use ($keys) { - $result = []; - - foreach ($keys as $key) { - if (Arr::accessible($item) && Arr::exists($item, $key)) { - $result[$key] = $item[$key]; - } elseif (is_object($item) && isset($item->{$key})) { - $result[$key] = $item->{$key}; - } - } - - return $result; - }); - } - - /** - * Pluck an array of values from an array. - * - * @param iterable $array - * @param string|array|int|null $value - * @param string|array|null $key - * @return array - */ - public static function pluck($array, $value, $key = null) - { - $results = []; - - [$value, $key] = static::explodePluckParameters($value, $key); - - foreach ($array as $item) { - $itemValue = data_get($item, $value); - - // If the key is "null", we will just append the value to the array and keep - // looping. Otherwise we will key the array using the value of the key we - // received from the developer. Then we'll return the final array form. - if (is_null($key)) { - $results[] = $itemValue; - } else { - $itemKey = data_get($item, $key); - - if (is_object($itemKey) && method_exists($itemKey, '__toString')) { - $itemKey = (string) $itemKey; - } - - $results[$itemKey] = $itemValue; - } - } - - return $results; - } - - /** - * Explode the "value" and "key" arguments passed to "pluck". - * - * @param string|array $value - * @param string|array|null $key - * @return array - */ - protected static function explodePluckParameters($value, $key) - { - $value = is_string($value) ? explode('.', $value) : $value; - - $key = is_null($key) || is_array($key) ? $key : explode('.', $key); - - return [$value, $key]; - } - - /** - * Run a map over each of the items in the array. - * - * @param array $array - * @param callable $callback - * @return array - */ - public static function map(array $array, callable $callback) - { - $keys = array_keys($array); - - try { - $items = array_map($callback, $array, $keys); - } catch (ArgumentCountError) { - $items = array_map($callback, $array); - } - - return array_combine($keys, $items); - } - - /** - * Run an associative map over each of the items. - * - * The callback should return an associative array with a single key/value pair. - * - * @template TKey - * @template TValue - * @template TMapWithKeysKey of array-key - * @template TMapWithKeysValue - * - * @param array $array - * @param callable(TValue, TKey): array $callback - * @return array - */ - public static function mapWithKeys(array $array, callable $callback) - { - $result = []; - - foreach ($array as $key => $value) { - $assoc = $callback($value, $key); - - foreach ($assoc as $mapKey => $mapValue) { - $result[$mapKey] = $mapValue; - } - } - - return $result; - } - - /** - * Push an item onto the beginning of an array. - * - * @param array $array - * @param mixed $value - * @param mixed $key - * @return array - */ - public static function prepend($array, $value, $key = null) - { - if (func_num_args() == 2) { - array_unshift($array, $value); - } else { - $array = [$key => $value] + $array; - } - - return $array; - } - - /** - * Get a value from the array, and remove it. - * - * @param array $array - * @param string|int $key - * @param mixed $default - * @return mixed - */ - public static function pull(&$array, $key, $default = null) - { - $value = static::get($array, $key, $default); - - static::forget($array, $key); - - return $value; - } - - /** - * Convert the array into a query string. - * - * @param array $array - * @return string - */ - public static function query($array) - { - return http_build_query($array, '', '&', PHP_QUERY_RFC3986); - } - - /** - * Get one or a specified number of random values from an array. - * - * @param array $array - * @param int|null $number - * @param bool $preserveKeys - * @return mixed - * - * @throws \InvalidArgumentException - */ - public static function random($array, $number = null, $preserveKeys = false) - { - $requested = is_null($number) ? 1 : $number; - - $count = count($array); - - if ($requested > $count) { - throw new InvalidArgumentException( - "You requested {$requested} items, but there are only {$count} items available." - ); - } - - if (is_null($number)) { - return $array[array_rand($array)]; - } - - if ((int) $number === 0) { - return []; - } - - $keys = array_rand($array, $number); - - $results = []; - - if ($preserveKeys) { - foreach ((array) $keys as $key) { - $results[$key] = $array[$key]; - } - } else { - foreach ((array) $keys as $key) { - $results[] = $array[$key]; - } - } - - return $results; - } - - /** - * Set an array item to a given value using "dot" notation. - * - * If no key is given to the method, the entire array will be replaced. - * - * @param array $array - * @param string|int|null $key - * @param mixed $value - * @return array - */ - public static function set(&$array, $key, $value) - { - if (is_null($key)) { - return $array = $value; - } - - $keys = explode('.', $key); - - foreach ($keys as $i => $key) { - if (count($keys) === 1) { - break; - } - - unset($keys[$i]); - - // If the key doesn't exist at this depth, we will just create an empty array - // to hold the next value, allowing us to create the arrays to hold final - // values at the correct depth. Then we'll keep digging into the array. - if (! isset($array[$key]) || ! is_array($array[$key])) { - $array[$key] = []; - } - - $array = &$array[$key]; - } - - $array[array_shift($keys)] = $value; - - return $array; - } - - /** - * Shuffle the given array and return the result. - * - * @param array $array - * @param int|null $seed - * @return array - */ - public static function shuffle($array, $seed = null) - { - if (is_null($seed)) { - shuffle($array); - } else { - mt_srand($seed); - shuffle($array); - mt_srand(); - } - - return $array; - } - - /** - * Sort the array using the given callback or "dot" notation. - * - * @param array $array - * @param callable|array|string|null $callback - * @return array - */ - public static function sort($array, $callback = null) - { - return Collection::make($array)->sortBy($callback)->all(); - } - - /** - * Sort the array in descending order using the given callback or "dot" notation. - * - * @param array $array - * @param callable|array|string|null $callback - * @return array - */ - public static function sortDesc($array, $callback = null) - { - return Collection::make($array)->sortByDesc($callback)->all(); - } - - /** - * Recursively sort an array by keys and values. - * - * @param array $array - * @param int $options - * @param bool $descending - * @return array - */ - public static function sortRecursive($array, $options = SORT_REGULAR, $descending = false) - { - foreach ($array as &$value) { - if (is_array($value)) { - $value = static::sortRecursive($value, $options, $descending); - } - } - - if (! array_is_list($array)) { - $descending - ? krsort($array, $options) - : ksort($array, $options); - } else { - $descending - ? rsort($array, $options) - : sort($array, $options); - } - - return $array; - } - - /** - * Recursively sort an array by keys and values in descending order. - * - * @param array $array - * @param int $options - * @return array - */ - public static function sortRecursiveDesc($array, $options = SORT_REGULAR) - { - return static::sortRecursive($array, $options, true); - } - - /** - * Conditionally compile classes from an array into a CSS class list. - * - * @param array $array - * @return string - */ - public static function toCssClasses($array) - { - $classList = static::wrap($array); - - $classes = []; - - foreach ($classList as $class => $constraint) { - if (is_numeric($class)) { - $classes[] = $constraint; - } elseif ($constraint) { - $classes[] = $class; - } - } - - return implode(' ', $classes); - } - - /** - * Conditionally compile styles from an array into a style list. - * - * @param array $array - * @return string - */ - public static function toCssStyles($array) - { - $styleList = static::wrap($array); - - $styles = []; - - foreach ($styleList as $class => $constraint) { - if (is_numeric($class)) { - $styles[] = Str::finish($constraint, ';'); - } elseif ($constraint) { - $styles[] = Str::finish($class, ';'); - } - } - - return implode(' ', $styles); - } - - /** - * Filter the array using the given callback. - * - * @param array $array - * @param callable $callback - * @return array - */ - public static function where($array, callable $callback) - { - return array_filter($array, $callback, ARRAY_FILTER_USE_BOTH); - } - - /** - * Filter items where the value is not null. - * - * @param array $array - * @return array - */ - public static function whereNotNull($array) - { - return static::where($array, fn ($value) => ! is_null($value)); - } - - /** - * If the given value is not an array and not null, wrap it in one. - * - * @param mixed $value - * @return array - */ - public static function wrap($value) - { - if (is_null($value)) { - return []; - } - - return is_array($value) ? $value : [$value]; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Collections/Collection.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Collections/Collection.php deleted file mode 100644 index 2f0c768f..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Collections/Collection.php +++ /dev/null @@ -1,1821 +0,0 @@ - - * @implements \Illuminate\Support\Enumerable - */ -class Collection implements ArrayAccess, CanBeEscapedWhenCastToString, Enumerable -{ - /** - * @use \Illuminate\Support\Traits\EnumeratesValues - */ - use EnumeratesValues, Macroable; - - /** - * The items contained in the collection. - * - * @var array - */ - protected $items = []; - - /** - * Create a new collection. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable|null $items - * @return void - */ - public function __construct($items = []) - { - $this->items = $this->getArrayableItems($items); - } - - /** - * Create a collection with the given range. - * - * @param int $from - * @param int $to - * @return static - */ - public static function range($from, $to) - { - return new static(range($from, $to)); - } - - /** - * Get all of the items in the collection. - * - * @return array - */ - public function all() - { - return $this->items; - } - - /** - * Get a lazy collection for the items in this collection. - * - * @return \Illuminate\Support\LazyCollection - */ - public function lazy() - { - return new LazyCollection($this->items); - } - - /** - * Get the average value of a given key. - * - * @param (callable(TValue): float|int)|string|null $callback - * @return float|int|null - */ - public function avg($callback = null) - { - $callback = $this->valueRetriever($callback); - - $items = $this - ->map(fn ($value) => $callback($value)) - ->filter(fn ($value) => ! is_null($value)); - - if ($count = $items->count()) { - return $items->sum() / $count; - } - } - - /** - * Get the median of a given key. - * - * @param string|array|null $key - * @return float|int|null - */ - public function median($key = null) - { - $values = (isset($key) ? $this->pluck($key) : $this) - ->filter(fn ($item) => ! is_null($item)) - ->sort()->values(); - - $count = $values->count(); - - if ($count === 0) { - return; - } - - $middle = (int) ($count / 2); - - if ($count % 2) { - return $values->get($middle); - } - - return (new static([ - $values->get($middle - 1), $values->get($middle), - ]))->average(); - } - - /** - * Get the mode of a given key. - * - * @param string|array|null $key - * @return array|null - */ - public function mode($key = null) - { - if ($this->count() === 0) { - return; - } - - $collection = isset($key) ? $this->pluck($key) : $this; - - $counts = new static; - - $collection->each(fn ($value) => $counts[$value] = isset($counts[$value]) ? $counts[$value] + 1 : 1); - - $sorted = $counts->sort(); - - $highestValue = $sorted->last(); - - return $sorted->filter(fn ($value) => $value == $highestValue) - ->sort()->keys()->all(); - } - - /** - * Collapse the collection of items into a single array. - * - * @return static - */ - public function collapse() - { - return new static(Arr::collapse($this->items)); - } - - /** - * Determine if an item exists in the collection. - * - * @param (callable(TValue, TKey): bool)|TValue|string $key - * @param mixed $operator - * @param mixed $value - * @return bool - */ - public function contains($key, $operator = null, $value = null) - { - if (func_num_args() === 1) { - if ($this->useAsCallable($key)) { - $placeholder = new stdClass; - - return $this->first($key, $placeholder) !== $placeholder; - } - - return in_array($key, $this->items); - } - - return $this->contains($this->operatorForWhere(...func_get_args())); - } - - /** - * Determine if an item exists, using strict comparison. - * - * @param (callable(TValue): bool)|TValue|array-key $key - * @param TValue|null $value - * @return bool - */ - public function containsStrict($key, $value = null) - { - if (func_num_args() === 2) { - return $this->contains(fn ($item) => data_get($item, $key) === $value); - } - - if ($this->useAsCallable($key)) { - return ! is_null($this->first($key)); - } - - return in_array($key, $this->items, true); - } - - /** - * Determine if an item is not contained in the collection. - * - * @param mixed $key - * @param mixed $operator - * @param mixed $value - * @return bool - */ - public function doesntContain($key, $operator = null, $value = null) - { - return ! $this->contains(...func_get_args()); - } - - /** - * Cross join with the given lists, returning all possible permutations. - * - * @template TCrossJoinKey - * @template TCrossJoinValue - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable ...$lists - * @return static> - */ - public function crossJoin(...$lists) - { - return new static(Arr::crossJoin( - $this->items, ...array_map([$this, 'getArrayableItems'], $lists) - )); - } - - /** - * Get the items in the collection that are not present in the given items. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @return static - */ - public function diff($items) - { - return new static(array_diff($this->items, $this->getArrayableItems($items))); - } - - /** - * Get the items in the collection that are not present in the given items, using the callback. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @param callable(TValue, TValue): int $callback - * @return static - */ - public function diffUsing($items, callable $callback) - { - return new static(array_udiff($this->items, $this->getArrayableItems($items), $callback)); - } - - /** - * Get the items in the collection whose keys and values are not present in the given items. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @return static - */ - public function diffAssoc($items) - { - return new static(array_diff_assoc($this->items, $this->getArrayableItems($items))); - } - - /** - * Get the items in the collection whose keys and values are not present in the given items, using the callback. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @param callable(TKey, TKey): int $callback - * @return static - */ - public function diffAssocUsing($items, callable $callback) - { - return new static(array_diff_uassoc($this->items, $this->getArrayableItems($items), $callback)); - } - - /** - * Get the items in the collection whose keys are not present in the given items. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @return static - */ - public function diffKeys($items) - { - return new static(array_diff_key($this->items, $this->getArrayableItems($items))); - } - - /** - * Get the items in the collection whose keys are not present in the given items, using the callback. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @param callable(TKey, TKey): int $callback - * @return static - */ - public function diffKeysUsing($items, callable $callback) - { - return new static(array_diff_ukey($this->items, $this->getArrayableItems($items), $callback)); - } - - /** - * Retrieve duplicate items from the collection. - * - * @param (callable(TValue): bool)|string|null $callback - * @param bool $strict - * @return static - */ - public function duplicates($callback = null, $strict = false) - { - $items = $this->map($this->valueRetriever($callback)); - - $uniqueItems = $items->unique(null, $strict); - - $compare = $this->duplicateComparator($strict); - - $duplicates = new static; - - foreach ($items as $key => $value) { - if ($uniqueItems->isNotEmpty() && $compare($value, $uniqueItems->first())) { - $uniqueItems->shift(); - } else { - $duplicates[$key] = $value; - } - } - - return $duplicates; - } - - /** - * Retrieve duplicate items from the collection using strict comparison. - * - * @param (callable(TValue): bool)|string|null $callback - * @return static - */ - public function duplicatesStrict($callback = null) - { - return $this->duplicates($callback, true); - } - - /** - * Get the comparison function to detect duplicates. - * - * @param bool $strict - * @return callable(TValue, TValue): bool - */ - protected function duplicateComparator($strict) - { - if ($strict) { - return fn ($a, $b) => $a === $b; - } - - return fn ($a, $b) => $a == $b; - } - - /** - * Get all items except for those with the specified keys. - * - * @param \Illuminate\Support\Enumerable|array|string $keys - * @return static - */ - public function except($keys) - { - if (is_null($keys)) { - return new static($this->items); - } - - if ($keys instanceof Enumerable) { - $keys = $keys->all(); - } elseif (! is_array($keys)) { - $keys = func_get_args(); - } - - return new static(Arr::except($this->items, $keys)); - } - - /** - * Run a filter over each of the items. - * - * @param (callable(TValue, TKey): bool)|null $callback - * @return static - */ - public function filter(?callable $callback = null) - { - if ($callback) { - return new static(Arr::where($this->items, $callback)); - } - - return new static(array_filter($this->items)); - } - - /** - * Get the first item from the collection passing the given truth test. - * - * @template TFirstDefault - * - * @param (callable(TValue, TKey): bool)|null $callback - * @param TFirstDefault|(\Closure(): TFirstDefault) $default - * @return TValue|TFirstDefault - */ - public function first(?callable $callback = null, $default = null) - { - return Arr::first($this->items, $callback, $default); - } - - /** - * Get a flattened array of the items in the collection. - * - * @param int $depth - * @return static - */ - public function flatten($depth = INF) - { - return new static(Arr::flatten($this->items, $depth)); - } - - /** - * Flip the items in the collection. - * - * @return static - */ - public function flip() - { - return new static(array_flip($this->items)); - } - - /** - * Remove an item from the collection by key. - * - * \Illuminate\Contracts\Support\Arrayable|iterable|TKey $keys - * - * @return $this - */ - public function forget($keys) - { - foreach ($this->getArrayableItems($keys) as $key) { - $this->offsetUnset($key); - } - - return $this; - } - - /** - * Get an item from the collection by key. - * - * @template TGetDefault - * - * @param TKey $key - * @param TGetDefault|(\Closure(): TGetDefault) $default - * @return TValue|TGetDefault - */ - public function get($key, $default = null) - { - if (array_key_exists($key, $this->items)) { - return $this->items[$key]; - } - - return value($default); - } - - /** - * Get an item from the collection by key or add it to collection if it does not exist. - * - * @template TGetOrPutValue - * - * @param mixed $key - * @param TGetOrPutValue|(\Closure(): TGetOrPutValue) $value - * @return TValue|TGetOrPutValue - */ - public function getOrPut($key, $value) - { - if (array_key_exists($key, $this->items)) { - return $this->items[$key]; - } - - $this->offsetSet($key, $value = value($value)); - - return $value; - } - - /** - * Group an associative array by a field or using a callback. - * - * @param (callable(TValue, TKey): array-key)|array|string $groupBy - * @param bool $preserveKeys - * @return static> - */ - public function groupBy($groupBy, $preserveKeys = false) - { - if (! $this->useAsCallable($groupBy) && is_array($groupBy)) { - $nextGroups = $groupBy; - - $groupBy = array_shift($nextGroups); - } - - $groupBy = $this->valueRetriever($groupBy); - - $results = []; - - foreach ($this->items as $key => $value) { - $groupKeys = $groupBy($value, $key); - - if (! is_array($groupKeys)) { - $groupKeys = [$groupKeys]; - } - - foreach ($groupKeys as $groupKey) { - $groupKey = match (true) { - is_bool($groupKey) => (int) $groupKey, - $groupKey instanceof \BackedEnum => $groupKey->value, - $groupKey instanceof \Stringable => (string) $groupKey, - default => $groupKey, - }; - - if (! array_key_exists($groupKey, $results)) { - $results[$groupKey] = new static; - } - - $results[$groupKey]->offsetSet($preserveKeys ? $key : null, $value); - } - } - - $result = new static($results); - - if (! empty($nextGroups)) { - return $result->map->groupBy($nextGroups, $preserveKeys); - } - - return $result; - } - - /** - * Key an associative array by a field or using a callback. - * - * @param (callable(TValue, TKey): array-key)|array|string $keyBy - * @return static - */ - public function keyBy($keyBy) - { - $keyBy = $this->valueRetriever($keyBy); - - $results = []; - - foreach ($this->items as $key => $item) { - $resolvedKey = $keyBy($item, $key); - - if (is_object($resolvedKey)) { - $resolvedKey = (string) $resolvedKey; - } - - $results[$resolvedKey] = $item; - } - - return new static($results); - } - - /** - * Determine if an item exists in the collection by key. - * - * @param TKey|array $key - * @return bool - */ - public function has($key) - { - $keys = is_array($key) ? $key : func_get_args(); - - foreach ($keys as $value) { - if (! array_key_exists($value, $this->items)) { - return false; - } - } - - return true; - } - - /** - * Determine if any of the keys exist in the collection. - * - * @param mixed $key - * @return bool - */ - public function hasAny($key) - { - if ($this->isEmpty()) { - return false; - } - - $keys = is_array($key) ? $key : func_get_args(); - - foreach ($keys as $value) { - if ($this->has($value)) { - return true; - } - } - - return false; - } - - /** - * Concatenate values of a given key as a string. - * - * @param callable|string $value - * @param string|null $glue - * @return string - */ - public function implode($value, $glue = null) - { - if ($this->useAsCallable($value)) { - return implode($glue ?? '', $this->map($value)->all()); - } - - $first = $this->first(); - - if (is_array($first) || (is_object($first) && ! $first instanceof Stringable)) { - return implode($glue ?? '', $this->pluck($value)->all()); - } - - return implode($value ?? '', $this->items); - } - - /** - * Intersect the collection with the given items. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @return static - */ - public function intersect($items) - { - return new static(array_intersect($this->items, $this->getArrayableItems($items))); - } - - /** - * Intersect the collection with the given items, using the callback. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @param callable(TValue, TValue): int $callback - * @return static - */ - public function intersectUsing($items, callable $callback) - { - return new static(array_uintersect($this->items, $this->getArrayableItems($items), $callback)); - } - - /** - * Intersect the collection with the given items with additional index check. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @return static - */ - public function intersectAssoc($items) - { - return new static(array_intersect_assoc($this->items, $this->getArrayableItems($items))); - } - - /** - * Intersect the collection with the given items with additional index check, using the callback. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @param callable(TValue, TValue): int $callback - * @return static - */ - public function intersectAssocUsing($items, callable $callback) - { - return new static(array_intersect_uassoc($this->items, $this->getArrayableItems($items), $callback)); - } - - /** - * Intersect the collection with the given items by key. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @return static - */ - public function intersectByKeys($items) - { - return new static(array_intersect_key( - $this->items, $this->getArrayableItems($items) - )); - } - - /** - * Determine if the collection is empty or not. - * - * @return bool - */ - public function isEmpty() - { - return empty($this->items); - } - - /** - * Determine if the collection contains a single item. - * - * @return bool - */ - public function containsOneItem() - { - return $this->count() === 1; - } - - /** - * Join all items from the collection using a string. The final items can use a separate glue string. - * - * @param string $glue - * @param string $finalGlue - * @return string - */ - public function join($glue, $finalGlue = '') - { - if ($finalGlue === '') { - return $this->implode($glue); - } - - $count = $this->count(); - - if ($count === 0) { - return ''; - } - - if ($count === 1) { - return $this->last(); - } - - $collection = new static($this->items); - - $finalItem = $collection->pop(); - - return $collection->implode($glue).$finalGlue.$finalItem; - } - - /** - * Get the keys of the collection items. - * - * @return static - */ - public function keys() - { - return new static(array_keys($this->items)); - } - - /** - * Get the last item from the collection. - * - * @template TLastDefault - * - * @param (callable(TValue, TKey): bool)|null $callback - * @param TLastDefault|(\Closure(): TLastDefault) $default - * @return TValue|TLastDefault - */ - public function last(?callable $callback = null, $default = null) - { - return Arr::last($this->items, $callback, $default); - } - - /** - * Get the values of a given key. - * - * @param string|int|array $value - * @param string|null $key - * @return static - */ - public function pluck($value, $key = null) - { - return new static(Arr::pluck($this->items, $value, $key)); - } - - /** - * Run a map over each of the items. - * - * @template TMapValue - * - * @param callable(TValue, TKey): TMapValue $callback - * @return static - */ - public function map(callable $callback) - { - return new static(Arr::map($this->items, $callback)); - } - - /** - * Run a dictionary map over the items. - * - * The callback should return an associative array with a single key/value pair. - * - * @template TMapToDictionaryKey of array-key - * @template TMapToDictionaryValue - * - * @param callable(TValue, TKey): array $callback - * @return static> - */ - public function mapToDictionary(callable $callback) - { - $dictionary = []; - - foreach ($this->items as $key => $item) { - $pair = $callback($item, $key); - - $key = key($pair); - - $value = reset($pair); - - if (! isset($dictionary[$key])) { - $dictionary[$key] = []; - } - - $dictionary[$key][] = $value; - } - - return new static($dictionary); - } - - /** - * Run an associative map over each of the items. - * - * The callback should return an associative array with a single key/value pair. - * - * @template TMapWithKeysKey of array-key - * @template TMapWithKeysValue - * - * @param callable(TValue, TKey): array $callback - * @return static - */ - public function mapWithKeys(callable $callback) - { - return new static(Arr::mapWithKeys($this->items, $callback)); - } - - /** - * Merge the collection with the given items. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @return static - */ - public function merge($items) - { - return new static(array_merge($this->items, $this->getArrayableItems($items))); - } - - /** - * Recursively merge the collection with the given items. - * - * @template TMergeRecursiveValue - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @return static - */ - public function mergeRecursive($items) - { - return new static(array_merge_recursive($this->items, $this->getArrayableItems($items))); - } - - /** - * Create a collection by using this collection for keys and another for its values. - * - * @template TCombineValue - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $values - * @return static - */ - public function combine($values) - { - return new static(array_combine($this->all(), $this->getArrayableItems($values))); - } - - /** - * Union the collection with the given items. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @return static - */ - public function union($items) - { - return new static($this->items + $this->getArrayableItems($items)); - } - - /** - * Create a new collection consisting of every n-th element. - * - * @param int $step - * @param int $offset - * @return static - */ - public function nth($step, $offset = 0) - { - $new = []; - - $position = 0; - - foreach ($this->slice($offset)->items as $item) { - if ($position % $step === 0) { - $new[] = $item; - } - - $position++; - } - - return new static($new); - } - - /** - * Get the items with the specified keys. - * - * @param \Illuminate\Support\Enumerable|array|string|null $keys - * @return static - */ - public function only($keys) - { - if (is_null($keys)) { - return new static($this->items); - } - - if ($keys instanceof Enumerable) { - $keys = $keys->all(); - } - - $keys = is_array($keys) ? $keys : func_get_args(); - - return new static(Arr::only($this->items, $keys)); - } - - /** - * Select specific values from the items within the collection. - * - * @param \Illuminate\Support\Enumerable|array|string|null $keys - * @return static - */ - public function select($keys) - { - if (is_null($keys)) { - return new static($this->items); - } - - if ($keys instanceof Enumerable) { - $keys = $keys->all(); - } - - $keys = is_array($keys) ? $keys : func_get_args(); - - return new static(Arr::select($this->items, $keys)); - } - - /** - * Get and remove the last N items from the collection. - * - * @param int $count - * @return static|TValue|null - */ - public function pop($count = 1) - { - if ($count === 1) { - return array_pop($this->items); - } - - if ($this->isEmpty()) { - return new static; - } - - $results = []; - - $collectionCount = $this->count(); - - foreach (range(1, min($count, $collectionCount)) as $item) { - array_push($results, array_pop($this->items)); - } - - return new static($results); - } - - /** - * Push an item onto the beginning of the collection. - * - * @param TValue $value - * @param TKey $key - * @return $this - */ - public function prepend($value, $key = null) - { - $this->items = Arr::prepend($this->items, ...func_get_args()); - - return $this; - } - - /** - * Push one or more items onto the end of the collection. - * - * @param TValue ...$values - * @return $this - */ - public function push(...$values) - { - foreach ($values as $value) { - $this->items[] = $value; - } - - return $this; - } - - /** - * Push all of the given items onto the collection. - * - * @template TConcatKey of array-key - * @template TConcatValue - * - * @param iterable $source - * @return static - */ - public function concat($source) - { - $result = new static($this); - - foreach ($source as $item) { - $result->push($item); - } - - return $result; - } - - /** - * Get and remove an item from the collection. - * - * @template TPullDefault - * - * @param TKey $key - * @param TPullDefault|(\Closure(): TPullDefault) $default - * @return TValue|TPullDefault - */ - public function pull($key, $default = null) - { - return Arr::pull($this->items, $key, $default); - } - - /** - * Put an item in the collection by key. - * - * @param TKey $key - * @param TValue $value - * @return $this - */ - public function put($key, $value) - { - $this->offsetSet($key, $value); - - return $this; - } - - /** - * Get one or a specified number of items randomly from the collection. - * - * @param (callable(self): int)|int|null $number - * @param bool $preserveKeys - * @return static|TValue - * - * @throws \InvalidArgumentException - */ - public function random($number = null, $preserveKeys = false) - { - if (is_null($number)) { - return Arr::random($this->items); - } - - if (is_callable($number)) { - return new static(Arr::random($this->items, $number($this), $preserveKeys)); - } - - return new static(Arr::random($this->items, $number, $preserveKeys)); - } - - /** - * Replace the collection items with the given items. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @return static - */ - public function replace($items) - { - return new static(array_replace($this->items, $this->getArrayableItems($items))); - } - - /** - * Recursively replace the collection items with the given items. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @return static - */ - public function replaceRecursive($items) - { - return new static(array_replace_recursive($this->items, $this->getArrayableItems($items))); - } - - /** - * Reverse items order. - * - * @return static - */ - public function reverse() - { - return new static(array_reverse($this->items, true)); - } - - /** - * Search the collection for a given value and return the corresponding key if successful. - * - * @param TValue|(callable(TValue,TKey): bool) $value - * @param bool $strict - * @return TKey|false - */ - public function search($value, $strict = false) - { - if (! $this->useAsCallable($value)) { - return array_search($value, $this->items, $strict); - } - - foreach ($this->items as $key => $item) { - if ($value($item, $key)) { - return $key; - } - } - - return false; - } - - /** - * Get and remove the first N items from the collection. - * - * @param int $count - * @return static|TValue|null - * - * @throws \InvalidArgumentException - */ - public function shift($count = 1) - { - if ($count < 0) { - throw new InvalidArgumentException('Number of shifted items may not be less than zero.'); - } - - if ($this->isEmpty()) { - return null; - } - - if ($count === 0) { - return new static; - } - - if ($count === 1) { - return array_shift($this->items); - } - - $results = []; - - $collectionCount = $this->count(); - - foreach (range(1, min($count, $collectionCount)) as $item) { - array_push($results, array_shift($this->items)); - } - - return new static($results); - } - - /** - * Shuffle the items in the collection. - * - * @param int|null $seed - * @return static - */ - public function shuffle($seed = null) - { - return new static(Arr::shuffle($this->items, $seed)); - } - - /** - * Create chunks representing a "sliding window" view of the items in the collection. - * - * @param int $size - * @param int $step - * @return static - */ - public function sliding($size = 2, $step = 1) - { - $chunks = floor(($this->count() - $size) / $step) + 1; - - return static::times($chunks, fn ($number) => $this->slice(($number - 1) * $step, $size)); - } - - /** - * Skip the first {$count} items. - * - * @param int $count - * @return static - */ - public function skip($count) - { - return $this->slice($count); - } - - /** - * Skip items in the collection until the given condition is met. - * - * @param TValue|callable(TValue,TKey): bool $value - * @return static - */ - public function skipUntil($value) - { - return new static($this->lazy()->skipUntil($value)->all()); - } - - /** - * Skip items in the collection while the given condition is met. - * - * @param TValue|callable(TValue,TKey): bool $value - * @return static - */ - public function skipWhile($value) - { - return new static($this->lazy()->skipWhile($value)->all()); - } - - /** - * Slice the underlying collection array. - * - * @param int $offset - * @param int|null $length - * @return static - */ - public function slice($offset, $length = null) - { - return new static(array_slice($this->items, $offset, $length, true)); - } - - /** - * Split a collection into a certain number of groups. - * - * @param int $numberOfGroups - * @return static - */ - public function split($numberOfGroups) - { - if ($this->isEmpty()) { - return new static; - } - - $groups = new static; - - $groupSize = floor($this->count() / $numberOfGroups); - - $remain = $this->count() % $numberOfGroups; - - $start = 0; - - for ($i = 0; $i < $numberOfGroups; $i++) { - $size = $groupSize; - - if ($i < $remain) { - $size++; - } - - if ($size) { - $groups->push(new static(array_slice($this->items, $start, $size))); - - $start += $size; - } - } - - return $groups; - } - - /** - * Split a collection into a certain number of groups, and fill the first groups completely. - * - * @param int $numberOfGroups - * @return static - */ - public function splitIn($numberOfGroups) - { - return $this->chunk(ceil($this->count() / $numberOfGroups)); - } - - /** - * Get the first item in the collection, but only if exactly one item exists. Otherwise, throw an exception. - * - * @param (callable(TValue, TKey): bool)|string $key - * @param mixed $operator - * @param mixed $value - * @return TValue - * - * @throws \Illuminate\Support\ItemNotFoundException - * @throws \Illuminate\Support\MultipleItemsFoundException - */ - public function sole($key = null, $operator = null, $value = null) - { - $filter = func_num_args() > 1 - ? $this->operatorForWhere(...func_get_args()) - : $key; - - $items = $this->unless($filter == null)->filter($filter); - - $count = $items->count(); - - if ($count === 0) { - throw new ItemNotFoundException; - } - - if ($count > 1) { - throw new MultipleItemsFoundException($count); - } - - return $items->first(); - } - - /** - * Get the first item in the collection but throw an exception if no matching items exist. - * - * @param (callable(TValue, TKey): bool)|string $key - * @param mixed $operator - * @param mixed $value - * @return TValue - * - * @throws \Illuminate\Support\ItemNotFoundException - */ - public function firstOrFail($key = null, $operator = null, $value = null) - { - $filter = func_num_args() > 1 - ? $this->operatorForWhere(...func_get_args()) - : $key; - - $placeholder = new stdClass(); - - $item = $this->first($filter, $placeholder); - - if ($item === $placeholder) { - throw new ItemNotFoundException; - } - - return $item; - } - - /** - * Chunk the collection into chunks of the given size. - * - * @param int $size - * @return static - */ - public function chunk($size) - { - if ($size <= 0) { - return new static; - } - - $chunks = []; - - foreach (array_chunk($this->items, $size, true) as $chunk) { - $chunks[] = new static($chunk); - } - - return new static($chunks); - } - - /** - * Chunk the collection into chunks with a callback. - * - * @param callable(TValue, TKey, static): bool $callback - * @return static> - */ - public function chunkWhile(callable $callback) - { - return new static( - $this->lazy()->chunkWhile($callback)->mapInto(static::class) - ); - } - - /** - * Sort through each item with a callback. - * - * @param (callable(TValue, TValue): int)|null|int $callback - * @return static - */ - public function sort($callback = null) - { - $items = $this->items; - - $callback && is_callable($callback) - ? uasort($items, $callback) - : asort($items, $callback ?? SORT_REGULAR); - - return new static($items); - } - - /** - * Sort items in descending order. - * - * @param int $options - * @return static - */ - public function sortDesc($options = SORT_REGULAR) - { - $items = $this->items; - - arsort($items, $options); - - return new static($items); - } - - /** - * Sort the collection using the given callback. - * - * @param array|(callable(TValue, TKey): mixed)|string $callback - * @param int $options - * @param bool $descending - * @return static - */ - public function sortBy($callback, $options = SORT_REGULAR, $descending = false) - { - if (is_array($callback) && ! is_callable($callback)) { - return $this->sortByMany($callback, $options); - } - - $results = []; - - $callback = $this->valueRetriever($callback); - - // First we will loop through the items and get the comparator from a callback - // function which we were given. Then, we will sort the returned values and - // grab all the corresponding values for the sorted keys from this array. - foreach ($this->items as $key => $value) { - $results[$key] = $callback($value, $key); - } - - $descending ? arsort($results, $options) - : asort($results, $options); - - // Once we have sorted all of the keys in the array, we will loop through them - // and grab the corresponding model so we can set the underlying items list - // to the sorted version. Then we'll just return the collection instance. - foreach (array_keys($results) as $key) { - $results[$key] = $this->items[$key]; - } - - return new static($results); - } - - /** - * Sort the collection using multiple comparisons. - * - * @param array $comparisons - * @param int $options - * @return static - */ - protected function sortByMany(array $comparisons = [], int $options = SORT_REGULAR) - { - $items = $this->items; - - uasort($items, function ($a, $b) use ($comparisons, $options) { - foreach ($comparisons as $comparison) { - $comparison = Arr::wrap($comparison); - - $prop = $comparison[0]; - - $ascending = Arr::get($comparison, 1, true) === true || - Arr::get($comparison, 1, true) === 'asc'; - - if (! is_string($prop) && is_callable($prop)) { - $result = $prop($a, $b); - } else { - $values = [data_get($a, $prop), data_get($b, $prop)]; - - if (! $ascending) { - $values = array_reverse($values); - } - - if (($options & SORT_FLAG_CASE) === SORT_FLAG_CASE) { - if (($options & SORT_NATURAL) === SORT_NATURAL) { - $result = strnatcasecmp($values[0], $values[1]); - } else { - $result = strcasecmp($values[0], $values[1]); - } - } else { - $result = match ($options) { - SORT_NUMERIC => intval($values[0]) <=> intval($values[1]), - SORT_STRING => strcmp($values[0], $values[1]), - SORT_NATURAL => strnatcmp($values[0], $values[1]), - SORT_LOCALE_STRING => strcoll($values[0], $values[1]), - default => $values[0] <=> $values[1], - }; - } - } - - if ($result === 0) { - continue; - } - - return $result; - } - }); - - return new static($items); - } - - /** - * Sort the collection in descending order using the given callback. - * - * @param array|(callable(TValue, TKey): mixed)|string $callback - * @param int $options - * @return static - */ - public function sortByDesc($callback, $options = SORT_REGULAR) - { - if (is_array($callback) && ! is_callable($callback)) { - foreach ($callback as $index => $key) { - $comparison = Arr::wrap($key); - - $comparison[1] = 'desc'; - - $callback[$index] = $comparison; - } - } - - return $this->sortBy($callback, $options, true); - } - - /** - * Sort the collection keys. - * - * @param int $options - * @param bool $descending - * @return static - */ - public function sortKeys($options = SORT_REGULAR, $descending = false) - { - $items = $this->items; - - $descending ? krsort($items, $options) : ksort($items, $options); - - return new static($items); - } - - /** - * Sort the collection keys in descending order. - * - * @param int $options - * @return static - */ - public function sortKeysDesc($options = SORT_REGULAR) - { - return $this->sortKeys($options, true); - } - - /** - * Sort the collection keys using a callback. - * - * @param callable(TKey, TKey): int $callback - * @return static - */ - public function sortKeysUsing(callable $callback) - { - $items = $this->items; - - uksort($items, $callback); - - return new static($items); - } - - /** - * Splice a portion of the underlying collection array. - * - * @param int $offset - * @param int|null $length - * @param array $replacement - * @return static - */ - public function splice($offset, $length = null, $replacement = []) - { - if (func_num_args() === 1) { - return new static(array_splice($this->items, $offset)); - } - - return new static(array_splice($this->items, $offset, $length, $this->getArrayableItems($replacement))); - } - - /** - * Take the first or last {$limit} items. - * - * @param int $limit - * @return static - */ - public function take($limit) - { - if ($limit < 0) { - return $this->slice($limit, abs($limit)); - } - - return $this->slice(0, $limit); - } - - /** - * Take items in the collection until the given condition is met. - * - * @param TValue|callable(TValue,TKey): bool $value - * @return static - */ - public function takeUntil($value) - { - return new static($this->lazy()->takeUntil($value)->all()); - } - - /** - * Take items in the collection while the given condition is met. - * - * @param TValue|callable(TValue,TKey): bool $value - * @return static - */ - public function takeWhile($value) - { - return new static($this->lazy()->takeWhile($value)->all()); - } - - /** - * Transform each item in the collection using a callback. - * - * @param callable(TValue, TKey): TValue $callback - * @return $this - */ - public function transform(callable $callback) - { - $this->items = $this->map($callback)->all(); - - return $this; - } - - /** - * Flatten a multi-dimensional associative array with dots. - * - * @return static - */ - public function dot() - { - return new static(Arr::dot($this->all())); - } - - /** - * Convert a flatten "dot" notation array into an expanded array. - * - * @return static - */ - public function undot() - { - return new static(Arr::undot($this->all())); - } - - /** - * Return only unique items from the collection array. - * - * @param (callable(TValue, TKey): mixed)|string|null $key - * @param bool $strict - * @return static - */ - public function unique($key = null, $strict = false) - { - if (is_null($key) && $strict === false) { - return new static(array_unique($this->items, SORT_REGULAR)); - } - - $callback = $this->valueRetriever($key); - - $exists = []; - - return $this->reject(function ($item, $key) use ($callback, $strict, &$exists) { - if (in_array($id = $callback($item, $key), $exists, $strict)) { - return true; - } - - $exists[] = $id; - }); - } - - /** - * Reset the keys on the underlying array. - * - * @return static - */ - public function values() - { - return new static(array_values($this->items)); - } - - /** - * Zip the collection together with one or more arrays. - * - * e.g. new Collection([1, 2, 3])->zip([4, 5, 6]); - * => [[1, 4], [2, 5], [3, 6]] - * - * @template TZipValue - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable ...$items - * @return static> - */ - public function zip($items) - { - $arrayableItems = array_map(fn ($items) => $this->getArrayableItems($items), func_get_args()); - - $params = array_merge([fn () => new static(func_get_args()), $this->items], $arrayableItems); - - return new static(array_map(...$params)); - } - - /** - * Pad collection to the specified length with a value. - * - * @template TPadValue - * - * @param int $size - * @param TPadValue $value - * @return static - */ - public function pad($size, $value) - { - return new static(array_pad($this->items, $size, $value)); - } - - /** - * Get an iterator for the items. - * - * @return \ArrayIterator - */ - public function getIterator(): Traversable - { - return new ArrayIterator($this->items); - } - - /** - * Count the number of items in the collection. - * - * @return int - */ - public function count(): int - { - return count($this->items); - } - - /** - * Count the number of items in the collection by a field or using a callback. - * - * @param (callable(TValue, TKey): array-key)|string|null $countBy - * @return static - */ - public function countBy($countBy = null) - { - return new static($this->lazy()->countBy($countBy)->all()); - } - - /** - * Add an item to the collection. - * - * @param TValue $item - * @return $this - */ - public function add($item) - { - $this->items[] = $item; - - return $this; - } - - /** - * Get a base Support collection instance from this collection. - * - * @return \Illuminate\Support\Collection - */ - public function toBase() - { - return new self($this); - } - - /** - * Determine if an item exists at an offset. - * - * @param TKey $key - * @return bool - */ - public function offsetExists($key): bool - { - return isset($this->items[$key]); - } - - /** - * Get an item at a given offset. - * - * @param TKey $key - * @return TValue - */ - public function offsetGet($key): mixed - { - return $this->items[$key]; - } - - /** - * Set the item at a given offset. - * - * @param TKey|null $key - * @param TValue $value - * @return void - */ - public function offsetSet($key, $value): void - { - if (is_null($key)) { - $this->items[] = $value; - } else { - $this->items[$key] = $value; - } - } - - /** - * Unset the item at a given offset. - * - * @param TKey $key - * @return void - */ - public function offsetUnset($key): void - { - unset($this->items[$key]); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Collections/Enumerable.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Collections/Enumerable.php deleted file mode 100644 index 806a6923..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Collections/Enumerable.php +++ /dev/null @@ -1,1263 +0,0 @@ - - * @extends \IteratorAggregate - */ -interface Enumerable extends Arrayable, Countable, IteratorAggregate, Jsonable, JsonSerializable -{ - /** - * Create a new collection instance if the value isn't one already. - * - * @template TMakeKey of array-key - * @template TMakeValue - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable|null $items - * @return static - */ - public static function make($items = []); - - /** - * Create a new instance by invoking the callback a given amount of times. - * - * @param int $number - * @param callable|null $callback - * @return static - */ - public static function times($number, ?callable $callback = null); - - /** - * Create a collection with the given range. - * - * @param int $from - * @param int $to - * @return static - */ - public static function range($from, $to); - - /** - * Wrap the given value in a collection if applicable. - * - * @template TWrapValue - * - * @param iterable|TWrapValue $value - * @return static - */ - public static function wrap($value); - - /** - * Get the underlying items from the given collection if applicable. - * - * @template TUnwrapKey of array-key - * @template TUnwrapValue - * - * @param array|static $value - * @return array - */ - public static function unwrap($value); - - /** - * Create a new instance with no items. - * - * @return static - */ - public static function empty(); - - /** - * Get all items in the enumerable. - * - * @return array - */ - public function all(); - - /** - * Alias for the "avg" method. - * - * @param (callable(TValue): float|int)|string|null $callback - * @return float|int|null - */ - public function average($callback = null); - - /** - * Get the median of a given key. - * - * @param string|array|null $key - * @return float|int|null - */ - public function median($key = null); - - /** - * Get the mode of a given key. - * - * @param string|array|null $key - * @return array|null - */ - public function mode($key = null); - - /** - * Collapse the items into a single enumerable. - * - * @return static - */ - public function collapse(); - - /** - * Alias for the "contains" method. - * - * @param (callable(TValue, TKey): bool)|TValue|string $key - * @param mixed $operator - * @param mixed $value - * @return bool - */ - public function some($key, $operator = null, $value = null); - - /** - * Determine if an item exists, using strict comparison. - * - * @param (callable(TValue): bool)|TValue|array-key $key - * @param TValue|null $value - * @return bool - */ - public function containsStrict($key, $value = null); - - /** - * Get the average value of a given key. - * - * @param (callable(TValue): float|int)|string|null $callback - * @return float|int|null - */ - public function avg($callback = null); - - /** - * Determine if an item exists in the enumerable. - * - * @param (callable(TValue, TKey): bool)|TValue|string $key - * @param mixed $operator - * @param mixed $value - * @return bool - */ - public function contains($key, $operator = null, $value = null); - - /** - * Determine if an item is not contained in the collection. - * - * @param mixed $key - * @param mixed $operator - * @param mixed $value - * @return bool - */ - public function doesntContain($key, $operator = null, $value = null); - - /** - * Cross join with the given lists, returning all possible permutations. - * - * @template TCrossJoinKey - * @template TCrossJoinValue - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable ...$lists - * @return static> - */ - public function crossJoin(...$lists); - - /** - * Dump the collection and end the script. - * - * @param mixed ...$args - * @return never - */ - public function dd(...$args); - - /** - * Dump the collection. - * - * @return $this - */ - public function dump(); - - /** - * Get the items that are not present in the given items. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @return static - */ - public function diff($items); - - /** - * Get the items that are not present in the given items, using the callback. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @param callable(TValue, TValue): int $callback - * @return static - */ - public function diffUsing($items, callable $callback); - - /** - * Get the items whose keys and values are not present in the given items. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @return static - */ - public function diffAssoc($items); - - /** - * Get the items whose keys and values are not present in the given items, using the callback. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @param callable(TKey, TKey): int $callback - * @return static - */ - public function diffAssocUsing($items, callable $callback); - - /** - * Get the items whose keys are not present in the given items. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @return static - */ - public function diffKeys($items); - - /** - * Get the items whose keys are not present in the given items, using the callback. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @param callable(TKey, TKey): int $callback - * @return static - */ - public function diffKeysUsing($items, callable $callback); - - /** - * Retrieve duplicate items. - * - * @param (callable(TValue): bool)|string|null $callback - * @param bool $strict - * @return static - */ - public function duplicates($callback = null, $strict = false); - - /** - * Retrieve duplicate items using strict comparison. - * - * @param (callable(TValue): bool)|string|null $callback - * @return static - */ - public function duplicatesStrict($callback = null); - - /** - * Execute a callback over each item. - * - * @param callable(TValue, TKey): mixed $callback - * @return $this - */ - public function each(callable $callback); - - /** - * Execute a callback over each nested chunk of items. - * - * @param callable $callback - * @return static - */ - public function eachSpread(callable $callback); - - /** - * Determine if all items pass the given truth test. - * - * @param (callable(TValue, TKey): bool)|TValue|string $key - * @param mixed $operator - * @param mixed $value - * @return bool - */ - public function every($key, $operator = null, $value = null); - - /** - * Get all items except for those with the specified keys. - * - * @param \Illuminate\Support\Enumerable|array $keys - * @return static - */ - public function except($keys); - - /** - * Run a filter over each of the items. - * - * @param (callable(TValue): bool)|null $callback - * @return static - */ - public function filter(?callable $callback = null); - - /** - * Apply the callback if the given "value" is (or resolves to) truthy. - * - * @template TWhenReturnType as null - * - * @param bool $value - * @param (callable($this): TWhenReturnType)|null $callback - * @param (callable($this): TWhenReturnType)|null $default - * @return $this|TWhenReturnType - */ - public function when($value, ?callable $callback = null, ?callable $default = null); - - /** - * Apply the callback if the collection is empty. - * - * @template TWhenEmptyReturnType - * - * @param (callable($this): TWhenEmptyReturnType) $callback - * @param (callable($this): TWhenEmptyReturnType)|null $default - * @return $this|TWhenEmptyReturnType - */ - public function whenEmpty(callable $callback, ?callable $default = null); - - /** - * Apply the callback if the collection is not empty. - * - * @template TWhenNotEmptyReturnType - * - * @param callable($this): TWhenNotEmptyReturnType $callback - * @param (callable($this): TWhenNotEmptyReturnType)|null $default - * @return $this|TWhenNotEmptyReturnType - */ - public function whenNotEmpty(callable $callback, ?callable $default = null); - - /** - * Apply the callback if the given "value" is (or resolves to) truthy. - * - * @template TUnlessReturnType - * - * @param bool $value - * @param (callable($this): TUnlessReturnType) $callback - * @param (callable($this): TUnlessReturnType)|null $default - * @return $this|TUnlessReturnType - */ - public function unless($value, callable $callback, ?callable $default = null); - - /** - * Apply the callback unless the collection is empty. - * - * @template TUnlessEmptyReturnType - * - * @param callable($this): TUnlessEmptyReturnType $callback - * @param (callable($this): TUnlessEmptyReturnType)|null $default - * @return $this|TUnlessEmptyReturnType - */ - public function unlessEmpty(callable $callback, ?callable $default = null); - - /** - * Apply the callback unless the collection is not empty. - * - * @template TUnlessNotEmptyReturnType - * - * @param callable($this): TUnlessNotEmptyReturnType $callback - * @param (callable($this): TUnlessNotEmptyReturnType)|null $default - * @return $this|TUnlessNotEmptyReturnType - */ - public function unlessNotEmpty(callable $callback, ?callable $default = null); - - /** - * Filter items by the given key value pair. - * - * @param string $key - * @param mixed $operator - * @param mixed $value - * @return static - */ - public function where($key, $operator = null, $value = null); - - /** - * Filter items where the value for the given key is null. - * - * @param string|null $key - * @return static - */ - public function whereNull($key = null); - - /** - * Filter items where the value for the given key is not null. - * - * @param string|null $key - * @return static - */ - public function whereNotNull($key = null); - - /** - * Filter items by the given key value pair using strict comparison. - * - * @param string $key - * @param mixed $value - * @return static - */ - public function whereStrict($key, $value); - - /** - * Filter items by the given key value pair. - * - * @param string $key - * @param \Illuminate\Contracts\Support\Arrayable|iterable $values - * @param bool $strict - * @return static - */ - public function whereIn($key, $values, $strict = false); - - /** - * Filter items by the given key value pair using strict comparison. - * - * @param string $key - * @param \Illuminate\Contracts\Support\Arrayable|iterable $values - * @return static - */ - public function whereInStrict($key, $values); - - /** - * Filter items such that the value of the given key is between the given values. - * - * @param string $key - * @param \Illuminate\Contracts\Support\Arrayable|iterable $values - * @return static - */ - public function whereBetween($key, $values); - - /** - * Filter items such that the value of the given key is not between the given values. - * - * @param string $key - * @param \Illuminate\Contracts\Support\Arrayable|iterable $values - * @return static - */ - public function whereNotBetween($key, $values); - - /** - * Filter items by the given key value pair. - * - * @param string $key - * @param \Illuminate\Contracts\Support\Arrayable|iterable $values - * @param bool $strict - * @return static - */ - public function whereNotIn($key, $values, $strict = false); - - /** - * Filter items by the given key value pair using strict comparison. - * - * @param string $key - * @param \Illuminate\Contracts\Support\Arrayable|iterable $values - * @return static - */ - public function whereNotInStrict($key, $values); - - /** - * Filter the items, removing any items that don't match the given type(s). - * - * @template TWhereInstanceOf - * - * @param class-string|array> $type - * @return static - */ - public function whereInstanceOf($type); - - /** - * Get the first item from the enumerable passing the given truth test. - * - * @template TFirstDefault - * - * @param (callable(TValue,TKey): bool)|null $callback - * @param TFirstDefault|(\Closure(): TFirstDefault) $default - * @return TValue|TFirstDefault - */ - public function first(?callable $callback = null, $default = null); - - /** - * Get the first item by the given key value pair. - * - * @param string $key - * @param mixed $operator - * @param mixed $value - * @return TValue|null - */ - public function firstWhere($key, $operator = null, $value = null); - - /** - * Get a flattened array of the items in the collection. - * - * @param int $depth - * @return static - */ - public function flatten($depth = INF); - - /** - * Flip the values with their keys. - * - * @return static - */ - public function flip(); - - /** - * Get an item from the collection by key. - * - * @template TGetDefault - * - * @param TKey $key - * @param TGetDefault|(\Closure(): TGetDefault) $default - * @return TValue|TGetDefault - */ - public function get($key, $default = null); - - /** - * Group an associative array by a field or using a callback. - * - * @param (callable(TValue, TKey): array-key)|array|string $groupBy - * @param bool $preserveKeys - * @return static> - */ - public function groupBy($groupBy, $preserveKeys = false); - - /** - * Key an associative array by a field or using a callback. - * - * @param (callable(TValue, TKey): array-key)|array|string $keyBy - * @return static - */ - public function keyBy($keyBy); - - /** - * Determine if an item exists in the collection by key. - * - * @param TKey|array $key - * @return bool - */ - public function has($key); - - /** - * Determine if any of the keys exist in the collection. - * - * @param mixed $key - * @return bool - */ - public function hasAny($key); - - /** - * Concatenate values of a given key as a string. - * - * @param callable|string $value - * @param string|null $glue - * @return string - */ - public function implode($value, $glue = null); - - /** - * Intersect the collection with the given items. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @return static - */ - public function intersect($items); - - /** - * Intersect the collection with the given items by key. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @return static - */ - public function intersectByKeys($items); - - /** - * Determine if the collection is empty or not. - * - * @return bool - */ - public function isEmpty(); - - /** - * Determine if the collection is not empty. - * - * @return bool - */ - public function isNotEmpty(); - - /** - * Determine if the collection contains a single item. - * - * @return bool - */ - public function containsOneItem(); - - /** - * Join all items from the collection using a string. The final items can use a separate glue string. - * - * @param string $glue - * @param string $finalGlue - * @return string - */ - public function join($glue, $finalGlue = ''); - - /** - * Get the keys of the collection items. - * - * @return static - */ - public function keys(); - - /** - * Get the last item from the collection. - * - * @template TLastDefault - * - * @param (callable(TValue, TKey): bool)|null $callback - * @param TLastDefault|(\Closure(): TLastDefault) $default - * @return TValue|TLastDefault - */ - public function last(?callable $callback = null, $default = null); - - /** - * Run a map over each of the items. - * - * @template TMapValue - * - * @param callable(TValue, TKey): TMapValue $callback - * @return static - */ - public function map(callable $callback); - - /** - * Run a map over each nested chunk of items. - * - * @param callable $callback - * @return static - */ - public function mapSpread(callable $callback); - - /** - * Run a dictionary map over the items. - * - * The callback should return an associative array with a single key/value pair. - * - * @template TMapToDictionaryKey of array-key - * @template TMapToDictionaryValue - * - * @param callable(TValue, TKey): array $callback - * @return static> - */ - public function mapToDictionary(callable $callback); - - /** - * Run a grouping map over the items. - * - * The callback should return an associative array with a single key/value pair. - * - * @template TMapToGroupsKey of array-key - * @template TMapToGroupsValue - * - * @param callable(TValue, TKey): array $callback - * @return static> - */ - public function mapToGroups(callable $callback); - - /** - * Run an associative map over each of the items. - * - * The callback should return an associative array with a single key/value pair. - * - * @template TMapWithKeysKey of array-key - * @template TMapWithKeysValue - * - * @param callable(TValue, TKey): array $callback - * @return static - */ - public function mapWithKeys(callable $callback); - - /** - * Map a collection and flatten the result by a single level. - * - * @template TFlatMapKey of array-key - * @template TFlatMapValue - * - * @param callable(TValue, TKey): (\Illuminate\Support\Collection|array) $callback - * @return static - */ - public function flatMap(callable $callback); - - /** - * Map the values into a new class. - * - * @template TMapIntoValue - * - * @param class-string $class - * @return static - */ - public function mapInto($class); - - /** - * Merge the collection with the given items. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @return static - */ - public function merge($items); - - /** - * Recursively merge the collection with the given items. - * - * @template TMergeRecursiveValue - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @return static - */ - public function mergeRecursive($items); - - /** - * Create a collection by using this collection for keys and another for its values. - * - * @template TCombineValue - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $values - * @return static - */ - public function combine($values); - - /** - * Union the collection with the given items. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @return static - */ - public function union($items); - - /** - * Get the min value of a given key. - * - * @param (callable(TValue):mixed)|string|null $callback - * @return mixed - */ - public function min($callback = null); - - /** - * Get the max value of a given key. - * - * @param (callable(TValue):mixed)|string|null $callback - * @return mixed - */ - public function max($callback = null); - - /** - * Create a new collection consisting of every n-th element. - * - * @param int $step - * @param int $offset - * @return static - */ - public function nth($step, $offset = 0); - - /** - * Get the items with the specified keys. - * - * @param \Illuminate\Support\Enumerable|array|string $keys - * @return static - */ - public function only($keys); - - /** - * "Paginate" the collection by slicing it into a smaller collection. - * - * @param int $page - * @param int $perPage - * @return static - */ - public function forPage($page, $perPage); - - /** - * Partition the collection into two arrays using the given callback or key. - * - * @param (callable(TValue, TKey): bool)|TValue|string $key - * @param mixed $operator - * @param mixed $value - * @return static, static> - */ - public function partition($key, $operator = null, $value = null); - - /** - * Push all of the given items onto the collection. - * - * @template TConcatKey of array-key - * @template TConcatValue - * - * @param iterable $source - * @return static - */ - public function concat($source); - - /** - * Get one or a specified number of items randomly from the collection. - * - * @param int|null $number - * @return static|TValue - * - * @throws \InvalidArgumentException - */ - public function random($number = null); - - /** - * Reduce the collection to a single value. - * - * @template TReduceInitial - * @template TReduceReturnType - * - * @param callable(TReduceInitial|TReduceReturnType, TValue, TKey): TReduceReturnType $callback - * @param TReduceInitial $initial - * @return TReduceReturnType - */ - public function reduce(callable $callback, $initial = null); - - /** - * Reduce the collection to multiple aggregate values. - * - * @param callable $callback - * @param mixed ...$initial - * @return array - * - * @throws \UnexpectedValueException - */ - public function reduceSpread(callable $callback, ...$initial); - - /** - * Replace the collection items with the given items. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @return static - */ - public function replace($items); - - /** - * Recursively replace the collection items with the given items. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @return static - */ - public function replaceRecursive($items); - - /** - * Reverse items order. - * - * @return static - */ - public function reverse(); - - /** - * Search the collection for a given value and return the corresponding key if successful. - * - * @param TValue|callable(TValue,TKey): bool $value - * @param bool $strict - * @return TKey|bool - */ - public function search($value, $strict = false); - - /** - * Shuffle the items in the collection. - * - * @param int|null $seed - * @return static - */ - public function shuffle($seed = null); - - /** - * Create chunks representing a "sliding window" view of the items in the collection. - * - * @param int $size - * @param int $step - * @return static - */ - public function sliding($size = 2, $step = 1); - - /** - * Skip the first {$count} items. - * - * @param int $count - * @return static - */ - public function skip($count); - - /** - * Skip items in the collection until the given condition is met. - * - * @param TValue|callable(TValue,TKey): bool $value - * @return static - */ - public function skipUntil($value); - - /** - * Skip items in the collection while the given condition is met. - * - * @param TValue|callable(TValue,TKey): bool $value - * @return static - */ - public function skipWhile($value); - - /** - * Get a slice of items from the enumerable. - * - * @param int $offset - * @param int|null $length - * @return static - */ - public function slice($offset, $length = null); - - /** - * Split a collection into a certain number of groups. - * - * @param int $numberOfGroups - * @return static - */ - public function split($numberOfGroups); - - /** - * Get the first item in the collection, but only if exactly one item exists. Otherwise, throw an exception. - * - * @param (callable(TValue, TKey): bool)|string $key - * @param mixed $operator - * @param mixed $value - * @return TValue - * - * @throws \Illuminate\Support\ItemNotFoundException - * @throws \Illuminate\Support\MultipleItemsFoundException - */ - public function sole($key = null, $operator = null, $value = null); - - /** - * Get the first item in the collection but throw an exception if no matching items exist. - * - * @param (callable(TValue, TKey): bool)|string $key - * @param mixed $operator - * @param mixed $value - * @return TValue - * - * @throws \Illuminate\Support\ItemNotFoundException - */ - public function firstOrFail($key = null, $operator = null, $value = null); - - /** - * Chunk the collection into chunks of the given size. - * - * @param int $size - * @return static - */ - public function chunk($size); - - /** - * Chunk the collection into chunks with a callback. - * - * @param callable(TValue, TKey, static): bool $callback - * @return static> - */ - public function chunkWhile(callable $callback); - - /** - * Split a collection into a certain number of groups, and fill the first groups completely. - * - * @param int $numberOfGroups - * @return static - */ - public function splitIn($numberOfGroups); - - /** - * Sort through each item with a callback. - * - * @param (callable(TValue, TValue): int)|null|int $callback - * @return static - */ - public function sort($callback = null); - - /** - * Sort items in descending order. - * - * @param int $options - * @return static - */ - public function sortDesc($options = SORT_REGULAR); - - /** - * Sort the collection using the given callback. - * - * @param array|(callable(TValue, TKey): mixed)|string $callback - * @param int $options - * @param bool $descending - * @return static - */ - public function sortBy($callback, $options = SORT_REGULAR, $descending = false); - - /** - * Sort the collection in descending order using the given callback. - * - * @param array|(callable(TValue, TKey): mixed)|string $callback - * @param int $options - * @return static - */ - public function sortByDesc($callback, $options = SORT_REGULAR); - - /** - * Sort the collection keys. - * - * @param int $options - * @param bool $descending - * @return static - */ - public function sortKeys($options = SORT_REGULAR, $descending = false); - - /** - * Sort the collection keys in descending order. - * - * @param int $options - * @return static - */ - public function sortKeysDesc($options = SORT_REGULAR); - - /** - * Sort the collection keys using a callback. - * - * @param callable(TKey, TKey): int $callback - * @return static - */ - public function sortKeysUsing(callable $callback); - - /** - * Get the sum of the given values. - * - * @param (callable(TValue): mixed)|string|null $callback - * @return mixed - */ - public function sum($callback = null); - - /** - * Take the first or last {$limit} items. - * - * @param int $limit - * @return static - */ - public function take($limit); - - /** - * Take items in the collection until the given condition is met. - * - * @param TValue|callable(TValue,TKey): bool $value - * @return static - */ - public function takeUntil($value); - - /** - * Take items in the collection while the given condition is met. - * - * @param TValue|callable(TValue,TKey): bool $value - * @return static - */ - public function takeWhile($value); - - /** - * Pass the collection to the given callback and then return it. - * - * @param callable(TValue): mixed $callback - * @return $this - */ - public function tap(callable $callback); - - /** - * Pass the enumerable to the given callback and return the result. - * - * @template TPipeReturnType - * - * @param callable($this): TPipeReturnType $callback - * @return TPipeReturnType - */ - public function pipe(callable $callback); - - /** - * Pass the collection into a new class. - * - * @template TPipeIntoValue - * - * @param class-string $class - * @return TPipeIntoValue - */ - public function pipeInto($class); - - /** - * Pass the collection through a series of callable pipes and return the result. - * - * @param array $pipes - * @return mixed - */ - public function pipeThrough($pipes); - - /** - * Get the values of a given key. - * - * @param string|array $value - * @param string|null $key - * @return static - */ - public function pluck($value, $key = null); - - /** - * Create a collection of all elements that do not pass a given truth test. - * - * @param (callable(TValue, TKey): bool)|bool|TValue $callback - * @return static - */ - public function reject($callback = true); - - /** - * Convert a flatten "dot" notation array into an expanded array. - * - * @return static - */ - public function undot(); - - /** - * Return only unique items from the collection array. - * - * @param (callable(TValue, TKey): mixed)|string|null $key - * @param bool $strict - * @return static - */ - public function unique($key = null, $strict = false); - - /** - * Return only unique items from the collection array using strict comparison. - * - * @param (callable(TValue, TKey): mixed)|string|null $key - * @return static - */ - public function uniqueStrict($key = null); - - /** - * Reset the keys on the underlying array. - * - * @return static - */ - public function values(); - - /** - * Pad collection to the specified length with a value. - * - * @template TPadValue - * - * @param int $size - * @param TPadValue $value - * @return static - */ - public function pad($size, $value); - - /** - * Get the values iterator. - * - * @return \Traversable - */ - public function getIterator(): Traversable; - - /** - * Count the number of items in the collection. - * - * @return int - */ - public function count(): int; - - /** - * Count the number of items in the collection by a field or using a callback. - * - * @param (callable(TValue, TKey): array-key)|string|null $countBy - * @return static - */ - public function countBy($countBy = null); - - /** - * Zip the collection together with one or more arrays. - * - * e.g. new Collection([1, 2, 3])->zip([4, 5, 6]); - * => [[1, 4], [2, 5], [3, 6]] - * - * @template TZipValue - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable ...$items - * @return static> - */ - public function zip($items); - - /** - * Collect the values into a collection. - * - * @return \Illuminate\Support\Collection - */ - public function collect(); - - /** - * Get the collection of items as a plain array. - * - * @return array - */ - public function toArray(); - - /** - * Convert the object into something JSON serializable. - * - * @return mixed - */ - public function jsonSerialize(): mixed; - - /** - * Get the collection of items as JSON. - * - * @param int $options - * @return string - */ - public function toJson($options = 0); - - /** - * Get a CachingIterator instance. - * - * @param int $flags - * @return \CachingIterator - */ - public function getCachingIterator($flags = CachingIterator::CALL_TOSTRING); - - /** - * Convert the collection to its string representation. - * - * @return string - */ - public function __toString(); - - /** - * Indicate that the model's string representation should be escaped when __toString is invoked. - * - * @param bool $escape - * @return $this - */ - public function escapeWhenCastingToString($escape = true); - - /** - * Add a method to the list of proxied methods. - * - * @param string $method - * @return void - */ - public static function proxy($method); - - /** - * Dynamically access collection proxies. - * - * @param string $key - * @return mixed - * - * @throws \Exception - */ - public function __get($key); -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Collections/LazyCollection.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Collections/LazyCollection.php deleted file mode 100644 index cd268b73..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Collections/LazyCollection.php +++ /dev/null @@ -1,1785 +0,0 @@ - - */ -class LazyCollection implements CanBeEscapedWhenCastToString, Enumerable -{ - /** - * @use \Illuminate\Support\Traits\EnumeratesValues - */ - use EnumeratesValues, Macroable; - - /** - * The source from which to generate items. - * - * @var (Closure(): \Generator)|static|array - */ - public $source; - - /** - * Create a new lazy collection instance. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable|(Closure(): \Generator)|self|array|null $source - * @return void - */ - public function __construct($source = null) - { - if ($source instanceof Closure || $source instanceof self) { - $this->source = $source; - } elseif (is_null($source)) { - $this->source = static::empty(); - } elseif ($source instanceof Generator) { - throw new InvalidArgumentException( - 'Generators should not be passed directly to LazyCollection. Instead, pass a generator function.' - ); - } else { - $this->source = $this->getArrayableItems($source); - } - } - - /** - * Create a new collection instance if the value isn't one already. - * - * @template TMakeKey of array-key - * @template TMakeValue - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable|(Closure(): \Generator)|self|array|null $items - * @return static - */ - public static function make($items = []) - { - return new static($items); - } - - /** - * Create a collection with the given range. - * - * @param int $from - * @param int $to - * @return static - */ - public static function range($from, $to) - { - return new static(function () use ($from, $to) { - if ($from <= $to) { - for (; $from <= $to; $from++) { - yield $from; - } - } else { - for (; $from >= $to; $from--) { - yield $from; - } - } - }); - } - - /** - * Get all items in the enumerable. - * - * @return array - */ - public function all() - { - if (is_array($this->source)) { - return $this->source; - } - - return iterator_to_array($this->getIterator()); - } - - /** - * Eager load all items into a new lazy collection backed by an array. - * - * @return static - */ - public function eager() - { - return new static($this->all()); - } - - /** - * Cache values as they're enumerated. - * - * @return static - */ - public function remember() - { - $iterator = $this->getIterator(); - - $iteratorIndex = 0; - - $cache = []; - - return new static(function () use ($iterator, &$iteratorIndex, &$cache) { - for ($index = 0; true; $index++) { - if (array_key_exists($index, $cache)) { - yield $cache[$index][0] => $cache[$index][1]; - - continue; - } - - if ($iteratorIndex < $index) { - $iterator->next(); - - $iteratorIndex++; - } - - if (! $iterator->valid()) { - break; - } - - $cache[$index] = [$iterator->key(), $iterator->current()]; - - yield $cache[$index][0] => $cache[$index][1]; - } - }); - } - - /** - * Get the average value of a given key. - * - * @param (callable(TValue): float|int)|string|null $callback - * @return float|int|null - */ - public function avg($callback = null) - { - return $this->collect()->avg($callback); - } - - /** - * Get the median of a given key. - * - * @param string|array|null $key - * @return float|int|null - */ - public function median($key = null) - { - return $this->collect()->median($key); - } - - /** - * Get the mode of a given key. - * - * @param string|array|null $key - * @return array|null - */ - public function mode($key = null) - { - return $this->collect()->mode($key); - } - - /** - * Collapse the collection of items into a single array. - * - * @return static - */ - public function collapse() - { - return new static(function () { - foreach ($this as $values) { - if (is_array($values) || $values instanceof Enumerable) { - foreach ($values as $value) { - yield $value; - } - } - } - }); - } - - /** - * Determine if an item exists in the enumerable. - * - * @param (callable(TValue, TKey): bool)|TValue|string $key - * @param mixed $operator - * @param mixed $value - * @return bool - */ - public function contains($key, $operator = null, $value = null) - { - if (func_num_args() === 1 && $this->useAsCallable($key)) { - $placeholder = new stdClass; - - /** @var callable $key */ - return $this->first($key, $placeholder) !== $placeholder; - } - - if (func_num_args() === 1) { - $needle = $key; - - foreach ($this as $value) { - if ($value == $needle) { - return true; - } - } - - return false; - } - - return $this->contains($this->operatorForWhere(...func_get_args())); - } - - /** - * Determine if an item exists, using strict comparison. - * - * @param (callable(TValue): bool)|TValue|array-key $key - * @param TValue|null $value - * @return bool - */ - public function containsStrict($key, $value = null) - { - if (func_num_args() === 2) { - return $this->contains(fn ($item) => data_get($item, $key) === $value); - } - - if ($this->useAsCallable($key)) { - return ! is_null($this->first($key)); - } - - foreach ($this as $item) { - if ($item === $key) { - return true; - } - } - - return false; - } - - /** - * Determine if an item is not contained in the enumerable. - * - * @param mixed $key - * @param mixed $operator - * @param mixed $value - * @return bool - */ - public function doesntContain($key, $operator = null, $value = null) - { - return ! $this->contains(...func_get_args()); - } - - /** - * Cross join the given iterables, returning all possible permutations. - * - * @template TCrossJoinKey - * @template TCrossJoinValue - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable ...$arrays - * @return static> - */ - public function crossJoin(...$arrays) - { - return $this->passthru('crossJoin', func_get_args()); - } - - /** - * Count the number of items in the collection by a field or using a callback. - * - * @param (callable(TValue, TKey): array-key)|string|null $countBy - * @return static - */ - public function countBy($countBy = null) - { - $countBy = is_null($countBy) - ? $this->identity() - : $this->valueRetriever($countBy); - - return new static(function () use ($countBy) { - $counts = []; - - foreach ($this as $key => $value) { - $group = $countBy($value, $key); - - if (empty($counts[$group])) { - $counts[$group] = 0; - } - - $counts[$group]++; - } - - yield from $counts; - }); - } - - /** - * Get the items that are not present in the given items. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @return static - */ - public function diff($items) - { - return $this->passthru('diff', func_get_args()); - } - - /** - * Get the items that are not present in the given items, using the callback. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @param callable(TValue, TValue): int $callback - * @return static - */ - public function diffUsing($items, callable $callback) - { - return $this->passthru('diffUsing', func_get_args()); - } - - /** - * Get the items whose keys and values are not present in the given items. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @return static - */ - public function diffAssoc($items) - { - return $this->passthru('diffAssoc', func_get_args()); - } - - /** - * Get the items whose keys and values are not present in the given items, using the callback. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @param callable(TKey, TKey): int $callback - * @return static - */ - public function diffAssocUsing($items, callable $callback) - { - return $this->passthru('diffAssocUsing', func_get_args()); - } - - /** - * Get the items whose keys are not present in the given items. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @return static - */ - public function diffKeys($items) - { - return $this->passthru('diffKeys', func_get_args()); - } - - /** - * Get the items whose keys are not present in the given items, using the callback. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @param callable(TKey, TKey): int $callback - * @return static - */ - public function diffKeysUsing($items, callable $callback) - { - return $this->passthru('diffKeysUsing', func_get_args()); - } - - /** - * Retrieve duplicate items. - * - * @param (callable(TValue): bool)|string|null $callback - * @param bool $strict - * @return static - */ - public function duplicates($callback = null, $strict = false) - { - return $this->passthru('duplicates', func_get_args()); - } - - /** - * Retrieve duplicate items using strict comparison. - * - * @param (callable(TValue): bool)|string|null $callback - * @return static - */ - public function duplicatesStrict($callback = null) - { - return $this->passthru('duplicatesStrict', func_get_args()); - } - - /** - * Get all items except for those with the specified keys. - * - * @param \Illuminate\Support\Enumerable|array $keys - * @return static - */ - public function except($keys) - { - return $this->passthru('except', func_get_args()); - } - - /** - * Run a filter over each of the items. - * - * @param (callable(TValue, TKey): bool)|null $callback - * @return static - */ - public function filter(?callable $callback = null) - { - if (is_null($callback)) { - $callback = fn ($value) => (bool) $value; - } - - return new static(function () use ($callback) { - foreach ($this as $key => $value) { - if ($callback($value, $key)) { - yield $key => $value; - } - } - }); - } - - /** - * Get the first item from the enumerable passing the given truth test. - * - * @template TFirstDefault - * - * @param (callable(TValue): bool)|null $callback - * @param TFirstDefault|(\Closure(): TFirstDefault) $default - * @return TValue|TFirstDefault - */ - public function first(?callable $callback = null, $default = null) - { - $iterator = $this->getIterator(); - - if (is_null($callback)) { - if (! $iterator->valid()) { - return value($default); - } - - return $iterator->current(); - } - - foreach ($iterator as $key => $value) { - if ($callback($value, $key)) { - return $value; - } - } - - return value($default); - } - - /** - * Get a flattened list of the items in the collection. - * - * @param int $depth - * @return static - */ - public function flatten($depth = INF) - { - $instance = new static(function () use ($depth) { - foreach ($this as $item) { - if (! is_array($item) && ! $item instanceof Enumerable) { - yield $item; - } elseif ($depth === 1) { - yield from $item; - } else { - yield from (new static($item))->flatten($depth - 1); - } - } - }); - - return $instance->values(); - } - - /** - * Flip the items in the collection. - * - * @return static - */ - public function flip() - { - return new static(function () { - foreach ($this as $key => $value) { - yield $value => $key; - } - }); - } - - /** - * Get an item by key. - * - * @template TGetDefault - * - * @param TKey|null $key - * @param TGetDefault|(\Closure(): TGetDefault) $default - * @return TValue|TGetDefault - */ - public function get($key, $default = null) - { - if (is_null($key)) { - return; - } - - foreach ($this as $outerKey => $outerValue) { - if ($outerKey == $key) { - return $outerValue; - } - } - - return value($default); - } - - /** - * Group an associative array by a field or using a callback. - * - * @param (callable(TValue, TKey): array-key)|array|string $groupBy - * @param bool $preserveKeys - * @return static> - */ - public function groupBy($groupBy, $preserveKeys = false) - { - return $this->passthru('groupBy', func_get_args()); - } - - /** - * Key an associative array by a field or using a callback. - * - * @param (callable(TValue, TKey): array-key)|array|string $keyBy - * @return static - */ - public function keyBy($keyBy) - { - return new static(function () use ($keyBy) { - $keyBy = $this->valueRetriever($keyBy); - - foreach ($this as $key => $item) { - $resolvedKey = $keyBy($item, $key); - - if (is_object($resolvedKey)) { - $resolvedKey = (string) $resolvedKey; - } - - yield $resolvedKey => $item; - } - }); - } - - /** - * Determine if an item exists in the collection by key. - * - * @param mixed $key - * @return bool - */ - public function has($key) - { - $keys = array_flip(is_array($key) ? $key : func_get_args()); - $count = count($keys); - - foreach ($this as $key => $value) { - if (array_key_exists($key, $keys) && --$count == 0) { - return true; - } - } - - return false; - } - - /** - * Determine if any of the keys exist in the collection. - * - * @param mixed $key - * @return bool - */ - public function hasAny($key) - { - $keys = array_flip(is_array($key) ? $key : func_get_args()); - - foreach ($this as $key => $value) { - if (array_key_exists($key, $keys)) { - return true; - } - } - - return false; - } - - /** - * Concatenate values of a given key as a string. - * - * @param callable|string $value - * @param string|null $glue - * @return string - */ - public function implode($value, $glue = null) - { - return $this->collect()->implode(...func_get_args()); - } - - /** - * Intersect the collection with the given items. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @return static - */ - public function intersect($items) - { - return $this->passthru('intersect', func_get_args()); - } - - /** - * Intersect the collection with the given items, using the callback. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @param callable(TValue, TValue): int $callback - * @return static - */ - public function intersectUsing() - { - return $this->passthru('intersectUsing', func_get_args()); - } - - /** - * Intersect the collection with the given items with additional index check. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @return static - */ - public function intersectAssoc($items) - { - return $this->passthru('intersectAssoc', func_get_args()); - } - - /** - * Intersect the collection with the given items with additional index check, using the callback. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @param callable(TValue, TValue): int $callback - * @return static - */ - public function intersectAssocUsing($items, callable $callback) - { - return $this->passthru('intersectAssocUsing', func_get_args()); - } - - /** - * Intersect the collection with the given items by key. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @return static - */ - public function intersectByKeys($items) - { - return $this->passthru('intersectByKeys', func_get_args()); - } - - /** - * Determine if the items are empty or not. - * - * @return bool - */ - public function isEmpty() - { - return ! $this->getIterator()->valid(); - } - - /** - * Determine if the collection contains a single item. - * - * @return bool - */ - public function containsOneItem() - { - return $this->take(2)->count() === 1; - } - - /** - * Join all items from the collection using a string. The final items can use a separate glue string. - * - * @param string $glue - * @param string $finalGlue - * @return string - */ - public function join($glue, $finalGlue = '') - { - return $this->collect()->join(...func_get_args()); - } - - /** - * Get the keys of the collection items. - * - * @return static - */ - public function keys() - { - return new static(function () { - foreach ($this as $key => $value) { - yield $key; - } - }); - } - - /** - * Get the last item from the collection. - * - * @template TLastDefault - * - * @param (callable(TValue, TKey): bool)|null $callback - * @param TLastDefault|(\Closure(): TLastDefault) $default - * @return TValue|TLastDefault - */ - public function last(?callable $callback = null, $default = null) - { - $needle = $placeholder = new stdClass; - - foreach ($this as $key => $value) { - if (is_null($callback) || $callback($value, $key)) { - $needle = $value; - } - } - - return $needle === $placeholder ? value($default) : $needle; - } - - /** - * Get the values of a given key. - * - * @param string|array $value - * @param string|null $key - * @return static - */ - public function pluck($value, $key = null) - { - return new static(function () use ($value, $key) { - [$value, $key] = $this->explodePluckParameters($value, $key); - - foreach ($this as $item) { - $itemValue = data_get($item, $value); - - if (is_null($key)) { - yield $itemValue; - } else { - $itemKey = data_get($item, $key); - - if (is_object($itemKey) && method_exists($itemKey, '__toString')) { - $itemKey = (string) $itemKey; - } - - yield $itemKey => $itemValue; - } - } - }); - } - - /** - * Run a map over each of the items. - * - * @template TMapValue - * - * @param callable(TValue, TKey): TMapValue $callback - * @return static - */ - public function map(callable $callback) - { - return new static(function () use ($callback) { - foreach ($this as $key => $value) { - yield $key => $callback($value, $key); - } - }); - } - - /** - * Run a dictionary map over the items. - * - * The callback should return an associative array with a single key/value pair. - * - * @template TMapToDictionaryKey of array-key - * @template TMapToDictionaryValue - * - * @param callable(TValue, TKey): array $callback - * @return static> - */ - public function mapToDictionary(callable $callback) - { - return $this->passthru('mapToDictionary', func_get_args()); - } - - /** - * Run an associative map over each of the items. - * - * The callback should return an associative array with a single key/value pair. - * - * @template TMapWithKeysKey of array-key - * @template TMapWithKeysValue - * - * @param callable(TValue, TKey): array $callback - * @return static - */ - public function mapWithKeys(callable $callback) - { - return new static(function () use ($callback) { - foreach ($this as $key => $value) { - yield from $callback($value, $key); - } - }); - } - - /** - * Merge the collection with the given items. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @return static - */ - public function merge($items) - { - return $this->passthru('merge', func_get_args()); - } - - /** - * Recursively merge the collection with the given items. - * - * @template TMergeRecursiveValue - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @return static - */ - public function mergeRecursive($items) - { - return $this->passthru('mergeRecursive', func_get_args()); - } - - /** - * Create a collection by using this collection for keys and another for its values. - * - * @template TCombineValue - * - * @param \IteratorAggregate|array|(callable(): \Generator) $values - * @return static - */ - public function combine($values) - { - return new static(function () use ($values) { - $values = $this->makeIterator($values); - - $errorMessage = 'Both parameters should have an equal number of elements'; - - foreach ($this as $key) { - if (! $values->valid()) { - trigger_error($errorMessage, E_USER_WARNING); - - break; - } - - yield $key => $values->current(); - - $values->next(); - } - - if ($values->valid()) { - trigger_error($errorMessage, E_USER_WARNING); - } - }); - } - - /** - * Union the collection with the given items. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @return static - */ - public function union($items) - { - return $this->passthru('union', func_get_args()); - } - - /** - * Create a new collection consisting of every n-th element. - * - * @param int $step - * @param int $offset - * @return static - */ - public function nth($step, $offset = 0) - { - return new static(function () use ($step, $offset) { - $position = 0; - - foreach ($this->slice($offset) as $item) { - if ($position % $step === 0) { - yield $item; - } - - $position++; - } - }); - } - - /** - * Get the items with the specified keys. - * - * @param \Illuminate\Support\Enumerable|array|string $keys - * @return static - */ - public function only($keys) - { - if ($keys instanceof Enumerable) { - $keys = $keys->all(); - } elseif (! is_null($keys)) { - $keys = is_array($keys) ? $keys : func_get_args(); - } - - return new static(function () use ($keys) { - if (is_null($keys)) { - yield from $this; - } else { - $keys = array_flip($keys); - - foreach ($this as $key => $value) { - if (array_key_exists($key, $keys)) { - yield $key => $value; - - unset($keys[$key]); - - if (empty($keys)) { - break; - } - } - } - } - }); - } - - /** - * Select specific values from the items within the collection. - * - * @param \Illuminate\Support\Enumerable|array|string $keys - * @return static - */ - public function select($keys) - { - if ($keys instanceof Enumerable) { - $keys = $keys->all(); - } elseif (! is_null($keys)) { - $keys = is_array($keys) ? $keys : func_get_args(); - } - - return new static(function () use ($keys) { - if (is_null($keys)) { - yield from $this; - } else { - foreach ($this as $item) { - $result = []; - - foreach ($keys as $key) { - if (Arr::accessible($item) && Arr::exists($item, $key)) { - $result[$key] = $item[$key]; - } elseif (is_object($item) && isset($item->{$key})) { - $result[$key] = $item->{$key}; - } - } - - yield $result; - } - } - }); - } - - /** - * Push all of the given items onto the collection. - * - * @template TConcatKey of array-key - * @template TConcatValue - * - * @param iterable $source - * @return static - */ - public function concat($source) - { - return (new static(function () use ($source) { - yield from $this; - yield from $source; - }))->values(); - } - - /** - * Get one or a specified number of items randomly from the collection. - * - * @param int|null $number - * @return static|TValue - * - * @throws \InvalidArgumentException - */ - public function random($number = null) - { - $result = $this->collect()->random(...func_get_args()); - - return is_null($number) ? $result : new static($result); - } - - /** - * Replace the collection items with the given items. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @return static - */ - public function replace($items) - { - return new static(function () use ($items) { - $items = $this->getArrayableItems($items); - - foreach ($this as $key => $value) { - if (array_key_exists($key, $items)) { - yield $key => $items[$key]; - - unset($items[$key]); - } else { - yield $key => $value; - } - } - - foreach ($items as $key => $value) { - yield $key => $value; - } - }); - } - - /** - * Recursively replace the collection items with the given items. - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable $items - * @return static - */ - public function replaceRecursive($items) - { - return $this->passthru('replaceRecursive', func_get_args()); - } - - /** - * Reverse items order. - * - * @return static - */ - public function reverse() - { - return $this->passthru('reverse', func_get_args()); - } - - /** - * Search the collection for a given value and return the corresponding key if successful. - * - * @param TValue|(callable(TValue,TKey): bool) $value - * @param bool $strict - * @return TKey|false - */ - public function search($value, $strict = false) - { - /** @var (callable(TValue,TKey): bool) $predicate */ - $predicate = $this->useAsCallable($value) - ? $value - : function ($item) use ($value, $strict) { - return $strict ? $item === $value : $item == $value; - }; - - foreach ($this as $key => $item) { - if ($predicate($item, $key)) { - return $key; - } - } - - return false; - } - - /** - * Shuffle the items in the collection. - * - * @param int|null $seed - * @return static - */ - public function shuffle($seed = null) - { - return $this->passthru('shuffle', func_get_args()); - } - - /** - * Create chunks representing a "sliding window" view of the items in the collection. - * - * @param int $size - * @param int $step - * @return static - */ - public function sliding($size = 2, $step = 1) - { - return new static(function () use ($size, $step) { - $iterator = $this->getIterator(); - - $chunk = []; - - while ($iterator->valid()) { - $chunk[$iterator->key()] = $iterator->current(); - - if (count($chunk) == $size) { - yield (new static($chunk))->tap(function () use (&$chunk, $step) { - $chunk = array_slice($chunk, $step, null, true); - }); - - // If the $step between chunks is bigger than each chunk's $size - // we will skip the extra items (which should never be in any - // chunk) before we continue to the next chunk in the loop. - if ($step > $size) { - $skip = $step - $size; - - for ($i = 0; $i < $skip && $iterator->valid(); $i++) { - $iterator->next(); - } - } - } - - $iterator->next(); - } - }); - } - - /** - * Skip the first {$count} items. - * - * @param int $count - * @return static - */ - public function skip($count) - { - return new static(function () use ($count) { - $iterator = $this->getIterator(); - - while ($iterator->valid() && $count--) { - $iterator->next(); - } - - while ($iterator->valid()) { - yield $iterator->key() => $iterator->current(); - - $iterator->next(); - } - }); - } - - /** - * Skip items in the collection until the given condition is met. - * - * @param TValue|callable(TValue,TKey): bool $value - * @return static - */ - public function skipUntil($value) - { - $callback = $this->useAsCallable($value) ? $value : $this->equality($value); - - return $this->skipWhile($this->negate($callback)); - } - - /** - * Skip items in the collection while the given condition is met. - * - * @param TValue|callable(TValue,TKey): bool $value - * @return static - */ - public function skipWhile($value) - { - $callback = $this->useAsCallable($value) ? $value : $this->equality($value); - - return new static(function () use ($callback) { - $iterator = $this->getIterator(); - - while ($iterator->valid() && $callback($iterator->current(), $iterator->key())) { - $iterator->next(); - } - - while ($iterator->valid()) { - yield $iterator->key() => $iterator->current(); - - $iterator->next(); - } - }); - } - - /** - * Get a slice of items from the enumerable. - * - * @param int $offset - * @param int|null $length - * @return static - */ - public function slice($offset, $length = null) - { - if ($offset < 0 || $length < 0) { - return $this->passthru('slice', func_get_args()); - } - - $instance = $this->skip($offset); - - return is_null($length) ? $instance : $instance->take($length); - } - - /** - * Split a collection into a certain number of groups. - * - * @param int $numberOfGroups - * @return static - */ - public function split($numberOfGroups) - { - return $this->passthru('split', func_get_args()); - } - - /** - * Get the first item in the collection, but only if exactly one item exists. Otherwise, throw an exception. - * - * @param (callable(TValue, TKey): bool)|string $key - * @param mixed $operator - * @param mixed $value - * @return TValue - * - * @throws \Illuminate\Support\ItemNotFoundException - * @throws \Illuminate\Support\MultipleItemsFoundException - */ - public function sole($key = null, $operator = null, $value = null) - { - $filter = func_num_args() > 1 - ? $this->operatorForWhere(...func_get_args()) - : $key; - - return $this - ->unless($filter == null) - ->filter($filter) - ->take(2) - ->collect() - ->sole(); - } - - /** - * Get the first item in the collection but throw an exception if no matching items exist. - * - * @param (callable(TValue, TKey): bool)|string $key - * @param mixed $operator - * @param mixed $value - * @return TValue - * - * @throws \Illuminate\Support\ItemNotFoundException - */ - public function firstOrFail($key = null, $operator = null, $value = null) - { - $filter = func_num_args() > 1 - ? $this->operatorForWhere(...func_get_args()) - : $key; - - return $this - ->unless($filter == null) - ->filter($filter) - ->take(1) - ->collect() - ->firstOrFail(); - } - - /** - * Chunk the collection into chunks of the given size. - * - * @param int $size - * @return static - */ - public function chunk($size) - { - if ($size <= 0) { - return static::empty(); - } - - return new static(function () use ($size) { - $iterator = $this->getIterator(); - - while ($iterator->valid()) { - $chunk = []; - - while (true) { - $chunk[$iterator->key()] = $iterator->current(); - - if (count($chunk) < $size) { - $iterator->next(); - - if (! $iterator->valid()) { - break; - } - } else { - break; - } - } - - yield new static($chunk); - - $iterator->next(); - } - }); - } - - /** - * Split a collection into a certain number of groups, and fill the first groups completely. - * - * @param int $numberOfGroups - * @return static - */ - public function splitIn($numberOfGroups) - { - return $this->chunk(ceil($this->count() / $numberOfGroups)); - } - - /** - * Chunk the collection into chunks with a callback. - * - * @param callable(TValue, TKey, Collection): bool $callback - * @return static> - */ - public function chunkWhile(callable $callback) - { - return new static(function () use ($callback) { - $iterator = $this->getIterator(); - - $chunk = new Collection; - - if ($iterator->valid()) { - $chunk[$iterator->key()] = $iterator->current(); - - $iterator->next(); - } - - while ($iterator->valid()) { - if (! $callback($iterator->current(), $iterator->key(), $chunk)) { - yield new static($chunk); - - $chunk = new Collection; - } - - $chunk[$iterator->key()] = $iterator->current(); - - $iterator->next(); - } - - if ($chunk->isNotEmpty()) { - yield new static($chunk); - } - }); - } - - /** - * Sort through each item with a callback. - * - * @param (callable(TValue, TValue): int)|null|int $callback - * @return static - */ - public function sort($callback = null) - { - return $this->passthru('sort', func_get_args()); - } - - /** - * Sort items in descending order. - * - * @param int $options - * @return static - */ - public function sortDesc($options = SORT_REGULAR) - { - return $this->passthru('sortDesc', func_get_args()); - } - - /** - * Sort the collection using the given callback. - * - * @param array|(callable(TValue, TKey): mixed)|string $callback - * @param int $options - * @param bool $descending - * @return static - */ - public function sortBy($callback, $options = SORT_REGULAR, $descending = false) - { - return $this->passthru('sortBy', func_get_args()); - } - - /** - * Sort the collection in descending order using the given callback. - * - * @param array|(callable(TValue, TKey): mixed)|string $callback - * @param int $options - * @return static - */ - public function sortByDesc($callback, $options = SORT_REGULAR) - { - return $this->passthru('sortByDesc', func_get_args()); - } - - /** - * Sort the collection keys. - * - * @param int $options - * @param bool $descending - * @return static - */ - public function sortKeys($options = SORT_REGULAR, $descending = false) - { - return $this->passthru('sortKeys', func_get_args()); - } - - /** - * Sort the collection keys in descending order. - * - * @param int $options - * @return static - */ - public function sortKeysDesc($options = SORT_REGULAR) - { - return $this->passthru('sortKeysDesc', func_get_args()); - } - - /** - * Sort the collection keys using a callback. - * - * @param callable(TKey, TKey): int $callback - * @return static - */ - public function sortKeysUsing(callable $callback) - { - return $this->passthru('sortKeysUsing', func_get_args()); - } - - /** - * Take the first or last {$limit} items. - * - * @param int $limit - * @return static - */ - public function take($limit) - { - if ($limit < 0) { - return new static(function () use ($limit) { - $limit = abs($limit); - $ringBuffer = []; - $position = 0; - - foreach ($this as $key => $value) { - $ringBuffer[$position] = [$key, $value]; - $position = ($position + 1) % $limit; - } - - for ($i = 0, $end = min($limit, count($ringBuffer)); $i < $end; $i++) { - $pointer = ($position + $i) % $limit; - yield $ringBuffer[$pointer][0] => $ringBuffer[$pointer][1]; - } - }); - } - - return new static(function () use ($limit) { - $iterator = $this->getIterator(); - - while ($limit--) { - if (! $iterator->valid()) { - break; - } - - yield $iterator->key() => $iterator->current(); - - if ($limit) { - $iterator->next(); - } - } - }); - } - - /** - * Take items in the collection until the given condition is met. - * - * @param TValue|callable(TValue,TKey): bool $value - * @return static - */ - public function takeUntil($value) - { - /** @var callable(TValue, TKey): bool $callback */ - $callback = $this->useAsCallable($value) ? $value : $this->equality($value); - - return new static(function () use ($callback) { - foreach ($this as $key => $item) { - if ($callback($item, $key)) { - break; - } - - yield $key => $item; - } - }); - } - - /** - * Take items in the collection until a given point in time. - * - * @param \DateTimeInterface $timeout - * @return static - */ - public function takeUntilTimeout(DateTimeInterface $timeout) - { - $timeout = $timeout->getTimestamp(); - - return new static(function () use ($timeout) { - if ($this->now() >= $timeout) { - return; - } - - foreach ($this as $key => $value) { - yield $key => $value; - - if ($this->now() >= $timeout) { - break; - } - } - }); - } - - /** - * Take items in the collection while the given condition is met. - * - * @param TValue|callable(TValue,TKey): bool $value - * @return static - */ - public function takeWhile($value) - { - /** @var callable(TValue, TKey): bool $callback */ - $callback = $this->useAsCallable($value) ? $value : $this->equality($value); - - return $this->takeUntil(fn ($item, $key) => ! $callback($item, $key)); - } - - /** - * Pass each item in the collection to the given callback, lazily. - * - * @param callable(TValue, TKey): mixed $callback - * @return static - */ - public function tapEach(callable $callback) - { - return new static(function () use ($callback) { - foreach ($this as $key => $value) { - $callback($value, $key); - - yield $key => $value; - } - }); - } - - /** - * Flatten a multi-dimensional associative array with dots. - * - * @return static - */ - public function dot() - { - return $this->passthru('dot', []); - } - - /** - * Convert a flatten "dot" notation array into an expanded array. - * - * @return static - */ - public function undot() - { - return $this->passthru('undot', []); - } - - /** - * Return only unique items from the collection array. - * - * @param (callable(TValue, TKey): mixed)|string|null $key - * @param bool $strict - * @return static - */ - public function unique($key = null, $strict = false) - { - $callback = $this->valueRetriever($key); - - return new static(function () use ($callback, $strict) { - $exists = []; - - foreach ($this as $key => $item) { - if (! in_array($id = $callback($item, $key), $exists, $strict)) { - yield $key => $item; - - $exists[] = $id; - } - } - }); - } - - /** - * Reset the keys on the underlying array. - * - * @return static - */ - public function values() - { - return new static(function () { - foreach ($this as $item) { - yield $item; - } - }); - } - - /** - * Zip the collection together with one or more arrays. - * - * e.g. new LazyCollection([1, 2, 3])->zip([4, 5, 6]); - * => [[1, 4], [2, 5], [3, 6]] - * - * @template TZipValue - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable ...$items - * @return static> - */ - public function zip($items) - { - $iterables = func_get_args(); - - return new static(function () use ($iterables) { - $iterators = Collection::make($iterables)->map(function ($iterable) { - return $this->makeIterator($iterable); - })->prepend($this->getIterator()); - - while ($iterators->contains->valid()) { - yield new static($iterators->map->current()); - - $iterators->each->next(); - } - }); - } - - /** - * Pad collection to the specified length with a value. - * - * @template TPadValue - * - * @param int $size - * @param TPadValue $value - * @return static - */ - public function pad($size, $value) - { - if ($size < 0) { - return $this->passthru('pad', func_get_args()); - } - - return new static(function () use ($size, $value) { - $yielded = 0; - - foreach ($this as $index => $item) { - yield $index => $item; - - $yielded++; - } - - while ($yielded++ < $size) { - yield $value; - } - }); - } - - /** - * Get the values iterator. - * - * @return \Traversable - */ - public function getIterator(): Traversable - { - return $this->makeIterator($this->source); - } - - /** - * Count the number of items in the collection. - * - * @return int - */ - public function count(): int - { - if (is_array($this->source)) { - return count($this->source); - } - - return iterator_count($this->getIterator()); - } - - /** - * Make an iterator from the given source. - * - * @template TIteratorKey of array-key - * @template TIteratorValue - * - * @param \IteratorAggregate|array|(callable(): \Generator) $source - * @return \Traversable - */ - protected function makeIterator($source) - { - if ($source instanceof IteratorAggregate) { - return $source->getIterator(); - } - - if (is_array($source)) { - return new ArrayIterator($source); - } - - if (is_callable($source)) { - $maybeTraversable = $source(); - - return $maybeTraversable instanceof Traversable - ? $maybeTraversable - : new ArrayIterator(Arr::wrap($maybeTraversable)); - } - - return new ArrayIterator((array) $source); - } - - /** - * Explode the "value" and "key" arguments passed to "pluck". - * - * @param string|string[] $value - * @param string|string[]|null $key - * @return array{string[],string[]|null} - */ - protected function explodePluckParameters($value, $key) - { - $value = is_string($value) ? explode('.', $value) : $value; - - $key = is_null($key) || is_array($key) ? $key : explode('.', $key); - - return [$value, $key]; - } - - /** - * Pass this lazy collection through a method on the collection class. - * - * @param string $method - * @param array $params - * @return static - */ - protected function passthru($method, array $params) - { - return new static(function () use ($method, $params) { - yield from $this->collect()->$method(...$params); - }); - } - - /** - * Get the current time. - * - * @return int - */ - protected function now() - { - return class_exists(Carbon::class) - ? Carbon::now()->timestamp - : time(); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Collections/Traits/EnumeratesValues.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Collections/Traits/EnumeratesValues.php deleted file mode 100644 index 9718f5bc..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Collections/Traits/EnumeratesValues.php +++ /dev/null @@ -1,1152 +0,0 @@ - - */ - protected static $proxies = [ - 'average', - 'avg', - 'contains', - 'doesntContain', - 'each', - 'every', - 'filter', - 'first', - 'flatMap', - 'groupBy', - 'keyBy', - 'map', - 'max', - 'min', - 'partition', - 'percentage', - 'reject', - 'skipUntil', - 'skipWhile', - 'some', - 'sortBy', - 'sortByDesc', - 'sum', - 'takeUntil', - 'takeWhile', - 'unique', - 'unless', - 'until', - 'when', - ]; - - /** - * Create a new collection instance if the value isn't one already. - * - * @template TMakeKey of array-key - * @template TMakeValue - * - * @param \Illuminate\Contracts\Support\Arrayable|iterable|null $items - * @return static - */ - public static function make($items = []) - { - return new static($items); - } - - /** - * Wrap the given value in a collection if applicable. - * - * @template TWrapValue - * - * @param iterable|TWrapValue $value - * @return static - */ - public static function wrap($value) - { - return $value instanceof Enumerable - ? new static($value) - : new static(Arr::wrap($value)); - } - - /** - * Get the underlying items from the given collection if applicable. - * - * @template TUnwrapKey of array-key - * @template TUnwrapValue - * - * @param array|static $value - * @return array - */ - public static function unwrap($value) - { - return $value instanceof Enumerable ? $value->all() : $value; - } - - /** - * Create a new instance with no items. - * - * @return static - */ - public static function empty() - { - return new static([]); - } - - /** - * Create a new collection by invoking the callback a given amount of times. - * - * @template TTimesValue - * - * @param int $number - * @param (callable(int): TTimesValue)|null $callback - * @return static - */ - public static function times($number, ?callable $callback = null) - { - if ($number < 1) { - return new static; - } - - return static::range(1, $number) - ->unless($callback == null) - ->map($callback); - } - - /** - * Alias for the "avg" method. - * - * @param (callable(TValue): float|int)|string|null $callback - * @return float|int|null - */ - public function average($callback = null) - { - return $this->avg($callback); - } - - /** - * Alias for the "contains" method. - * - * @param (callable(TValue, TKey): bool)|TValue|string $key - * @param mixed $operator - * @param mixed $value - * @return bool - */ - public function some($key, $operator = null, $value = null) - { - return $this->contains(...func_get_args()); - } - - /** - * Dump the items and end the script. - * - * @param mixed ...$args - * @return never - */ - public function dd(...$args) - { - $this->dump(...$args); - - exit(1); - } - - /** - * Dump the items. - * - * @return $this - */ - public function dump() - { - (new Collection(func_get_args())) - ->push($this->all()) - ->each(function ($item) { - VarDumper::dump($item); - }); - - return $this; - } - - /** - * Execute a callback over each item. - * - * @param callable(TValue, TKey): mixed $callback - * @return $this - */ - public function each(callable $callback) - { - foreach ($this as $key => $item) { - if ($callback($item, $key) === false) { - break; - } - } - - return $this; - } - - /** - * Execute a callback over each nested chunk of items. - * - * @param callable(...mixed): mixed $callback - * @return static - */ - public function eachSpread(callable $callback) - { - return $this->each(function ($chunk, $key) use ($callback) { - $chunk[] = $key; - - return $callback(...$chunk); - }); - } - - /** - * Determine if all items pass the given truth test. - * - * @param (callable(TValue, TKey): bool)|TValue|string $key - * @param mixed $operator - * @param mixed $value - * @return bool - */ - public function every($key, $operator = null, $value = null) - { - if (func_num_args() === 1) { - $callback = $this->valueRetriever($key); - - foreach ($this as $k => $v) { - if (! $callback($v, $k)) { - return false; - } - } - - return true; - } - - return $this->every($this->operatorForWhere(...func_get_args())); - } - - /** - * Get the first item by the given key value pair. - * - * @param callable|string $key - * @param mixed $operator - * @param mixed $value - * @return TValue|null - */ - public function firstWhere($key, $operator = null, $value = null) - { - return $this->first($this->operatorForWhere(...func_get_args())); - } - - /** - * Get a single key's value from the first matching item in the collection. - * - * @template TValueDefault - * - * @param string $key - * @param TValueDefault|(\Closure(): TValueDefault) $default - * @return TValue|TValueDefault - */ - public function value($key, $default = null) - { - if ($value = $this->firstWhere($key)) { - return data_get($value, $key, $default); - } - - return value($default); - } - - /** - * Ensure that every item in the collection is of the expected type. - * - * @template TEnsureOfType - * - * @param class-string|array> $type - * @return static - * - * @throws \UnexpectedValueException - */ - public function ensure($type) - { - $allowedTypes = is_array($type) ? $type : [$type]; - - return $this->each(function ($item) use ($allowedTypes) { - $itemType = get_debug_type($item); - - foreach ($allowedTypes as $allowedType) { - if ($itemType === $allowedType || $item instanceof $allowedType) { - return true; - } - } - - throw new UnexpectedValueException( - sprintf("Collection should only include [%s] items, but '%s' found.", implode(', ', $allowedTypes), $itemType) - ); - }); - } - - /** - * Determine if the collection is not empty. - * - * @return bool - */ - public function isNotEmpty() - { - return ! $this->isEmpty(); - } - - /** - * Run a map over each nested chunk of items. - * - * @template TMapSpreadValue - * - * @param callable(mixed...): TMapSpreadValue $callback - * @return static - */ - public function mapSpread(callable $callback) - { - return $this->map(function ($chunk, $key) use ($callback) { - $chunk[] = $key; - - return $callback(...$chunk); - }); - } - - /** - * Run a grouping map over the items. - * - * The callback should return an associative array with a single key/value pair. - * - * @template TMapToGroupsKey of array-key - * @template TMapToGroupsValue - * - * @param callable(TValue, TKey): array $callback - * @return static> - */ - public function mapToGroups(callable $callback) - { - $groups = $this->mapToDictionary($callback); - - return $groups->map([$this, 'make']); - } - - /** - * Map a collection and flatten the result by a single level. - * - * @template TFlatMapKey of array-key - * @template TFlatMapValue - * - * @param callable(TValue, TKey): (\Illuminate\Support\Collection|array) $callback - * @return static - */ - public function flatMap(callable $callback) - { - return $this->map($callback)->collapse(); - } - - /** - * Map the values into a new class. - * - * @template TMapIntoValue - * - * @param class-string $class - * @return static - */ - public function mapInto($class) - { - return $this->map(fn ($value, $key) => new $class($value, $key)); - } - - /** - * Get the min value of a given key. - * - * @param (callable(TValue):mixed)|string|null $callback - * @return mixed - */ - public function min($callback = null) - { - $callback = $this->valueRetriever($callback); - - return $this->map(fn ($value) => $callback($value)) - ->filter(fn ($value) => ! is_null($value)) - ->reduce(fn ($result, $value) => is_null($result) || $value < $result ? $value : $result); - } - - /** - * Get the max value of a given key. - * - * @param (callable(TValue):mixed)|string|null $callback - * @return mixed - */ - public function max($callback = null) - { - $callback = $this->valueRetriever($callback); - - return $this->filter(fn ($value) => ! is_null($value))->reduce(function ($result, $item) use ($callback) { - $value = $callback($item); - - return is_null($result) || $value > $result ? $value : $result; - }); - } - - /** - * "Paginate" the collection by slicing it into a smaller collection. - * - * @param int $page - * @param int $perPage - * @return static - */ - public function forPage($page, $perPage) - { - $offset = max(0, ($page - 1) * $perPage); - - return $this->slice($offset, $perPage); - } - - /** - * Partition the collection into two arrays using the given callback or key. - * - * @param (callable(TValue, TKey): bool)|TValue|string $key - * @param TValue|string|null $operator - * @param TValue|null $value - * @return static, static> - */ - public function partition($key, $operator = null, $value = null) - { - $passed = []; - $failed = []; - - $callback = func_num_args() === 1 - ? $this->valueRetriever($key) - : $this->operatorForWhere(...func_get_args()); - - foreach ($this as $key => $item) { - if ($callback($item, $key)) { - $passed[$key] = $item; - } else { - $failed[$key] = $item; - } - } - - return new static([new static($passed), new static($failed)]); - } - - /** - * Calculate the percentage of items that pass a given truth test. - * - * @param (callable(TValue, TKey): bool) $callback - * @param int $precision - * @return float|null - */ - public function percentage(callable $callback, int $precision = 2) - { - if ($this->isEmpty()) { - return null; - } - - return round( - $this->filter($callback)->count() / $this->count() * 100, - $precision - ); - } - - /** - * Get the sum of the given values. - * - * @param (callable(TValue): mixed)|string|null $callback - * @return mixed - */ - public function sum($callback = null) - { - $callback = is_null($callback) - ? $this->identity() - : $this->valueRetriever($callback); - - return $this->reduce(fn ($result, $item) => $result + $callback($item), 0); - } - - /** - * Apply the callback if the collection is empty. - * - * @template TWhenEmptyReturnType - * - * @param (callable($this): TWhenEmptyReturnType) $callback - * @param (callable($this): TWhenEmptyReturnType)|null $default - * @return $this|TWhenEmptyReturnType - */ - public function whenEmpty(callable $callback, ?callable $default = null) - { - return $this->when($this->isEmpty(), $callback, $default); - } - - /** - * Apply the callback if the collection is not empty. - * - * @template TWhenNotEmptyReturnType - * - * @param callable($this): TWhenNotEmptyReturnType $callback - * @param (callable($this): TWhenNotEmptyReturnType)|null $default - * @return $this|TWhenNotEmptyReturnType - */ - public function whenNotEmpty(callable $callback, ?callable $default = null) - { - return $this->when($this->isNotEmpty(), $callback, $default); - } - - /** - * Apply the callback unless the collection is empty. - * - * @template TUnlessEmptyReturnType - * - * @param callable($this): TUnlessEmptyReturnType $callback - * @param (callable($this): TUnlessEmptyReturnType)|null $default - * @return $this|TUnlessEmptyReturnType - */ - public function unlessEmpty(callable $callback, ?callable $default = null) - { - return $this->whenNotEmpty($callback, $default); - } - - /** - * Apply the callback unless the collection is not empty. - * - * @template TUnlessNotEmptyReturnType - * - * @param callable($this): TUnlessNotEmptyReturnType $callback - * @param (callable($this): TUnlessNotEmptyReturnType)|null $default - * @return $this|TUnlessNotEmptyReturnType - */ - public function unlessNotEmpty(callable $callback, ?callable $default = null) - { - return $this->whenEmpty($callback, $default); - } - - /** - * Filter items by the given key value pair. - * - * @param callable|string $key - * @param mixed $operator - * @param mixed $value - * @return static - */ - public function where($key, $operator = null, $value = null) - { - return $this->filter($this->operatorForWhere(...func_get_args())); - } - - /** - * Filter items where the value for the given key is null. - * - * @param string|null $key - * @return static - */ - public function whereNull($key = null) - { - return $this->whereStrict($key, null); - } - - /** - * Filter items where the value for the given key is not null. - * - * @param string|null $key - * @return static - */ - public function whereNotNull($key = null) - { - return $this->where($key, '!==', null); - } - - /** - * Filter items by the given key value pair using strict comparison. - * - * @param string $key - * @param mixed $value - * @return static - */ - public function whereStrict($key, $value) - { - return $this->where($key, '===', $value); - } - - /** - * Filter items by the given key value pair. - * - * @param string $key - * @param \Illuminate\Contracts\Support\Arrayable|iterable $values - * @param bool $strict - * @return static - */ - public function whereIn($key, $values, $strict = false) - { - $values = $this->getArrayableItems($values); - - return $this->filter(fn ($item) => in_array(data_get($item, $key), $values, $strict)); - } - - /** - * Filter items by the given key value pair using strict comparison. - * - * @param string $key - * @param \Illuminate\Contracts\Support\Arrayable|iterable $values - * @return static - */ - public function whereInStrict($key, $values) - { - return $this->whereIn($key, $values, true); - } - - /** - * Filter items such that the value of the given key is between the given values. - * - * @param string $key - * @param \Illuminate\Contracts\Support\Arrayable|iterable $values - * @return static - */ - public function whereBetween($key, $values) - { - return $this->where($key, '>=', reset($values))->where($key, '<=', end($values)); - } - - /** - * Filter items such that the value of the given key is not between the given values. - * - * @param string $key - * @param \Illuminate\Contracts\Support\Arrayable|iterable $values - * @return static - */ - public function whereNotBetween($key, $values) - { - return $this->filter( - fn ($item) => data_get($item, $key) < reset($values) || data_get($item, $key) > end($values) - ); - } - - /** - * Filter items by the given key value pair. - * - * @param string $key - * @param \Illuminate\Contracts\Support\Arrayable|iterable $values - * @param bool $strict - * @return static - */ - public function whereNotIn($key, $values, $strict = false) - { - $values = $this->getArrayableItems($values); - - return $this->reject(fn ($item) => in_array(data_get($item, $key), $values, $strict)); - } - - /** - * Filter items by the given key value pair using strict comparison. - * - * @param string $key - * @param \Illuminate\Contracts\Support\Arrayable|iterable $values - * @return static - */ - public function whereNotInStrict($key, $values) - { - return $this->whereNotIn($key, $values, true); - } - - /** - * Filter the items, removing any items that don't match the given type(s). - * - * @template TWhereInstanceOf - * - * @param class-string|array> $type - * @return static - */ - public function whereInstanceOf($type) - { - return $this->filter(function ($value) use ($type) { - if (is_array($type)) { - foreach ($type as $classType) { - if ($value instanceof $classType) { - return true; - } - } - - return false; - } - - return $value instanceof $type; - }); - } - - /** - * Pass the collection to the given callback and return the result. - * - * @template TPipeReturnType - * - * @param callable($this): TPipeReturnType $callback - * @return TPipeReturnType - */ - public function pipe(callable $callback) - { - return $callback($this); - } - - /** - * Pass the collection into a new class. - * - * @template TPipeIntoValue - * - * @param class-string $class - * @return TPipeIntoValue - */ - public function pipeInto($class) - { - return new $class($this); - } - - /** - * Pass the collection through a series of callable pipes and return the result. - * - * @param array $callbacks - * @return mixed - */ - public function pipeThrough($callbacks) - { - return Collection::make($callbacks)->reduce( - fn ($carry, $callback) => $callback($carry), - $this, - ); - } - - /** - * Reduce the collection to a single value. - * - * @template TReduceInitial - * @template TReduceReturnType - * - * @param callable(TReduceInitial|TReduceReturnType, TValue, TKey): TReduceReturnType $callback - * @param TReduceInitial $initial - * @return TReduceReturnType - */ - public function reduce(callable $callback, $initial = null) - { - $result = $initial; - - foreach ($this as $key => $value) { - $result = $callback($result, $value, $key); - } - - return $result; - } - - /** - * Reduce the collection to multiple aggregate values. - * - * @param callable $callback - * @param mixed ...$initial - * @return array - * - * @throws \UnexpectedValueException - */ - public function reduceSpread(callable $callback, ...$initial) - { - $result = $initial; - - foreach ($this as $key => $value) { - $result = call_user_func_array($callback, array_merge($result, [$value, $key])); - - if (! is_array($result)) { - throw new UnexpectedValueException(sprintf( - "%s::reduceSpread expects reducer to return an array, but got a '%s' instead.", - class_basename(static::class), gettype($result) - )); - } - } - - return $result; - } - - /** - * Reduce an associative collection to a single value. - * - * @template TReduceWithKeysInitial - * @template TReduceWithKeysReturnType - * - * @param callable(TReduceWithKeysInitial|TReduceWithKeysReturnType, TValue, TKey): TReduceWithKeysReturnType $callback - * @param TReduceWithKeysInitial $initial - * @return TReduceWithKeysReturnType - */ - public function reduceWithKeys(callable $callback, $initial = null) - { - return $this->reduce($callback, $initial); - } - - /** - * Create a collection of all elements that do not pass a given truth test. - * - * @param (callable(TValue, TKey): bool)|bool|TValue $callback - * @return static - */ - public function reject($callback = true) - { - $useAsCallable = $this->useAsCallable($callback); - - return $this->filter(function ($value, $key) use ($callback, $useAsCallable) { - return $useAsCallable - ? ! $callback($value, $key) - : $value != $callback; - }); - } - - /** - * Pass the collection to the given callback and then return it. - * - * @param callable($this): mixed $callback - * @return $this - */ - public function tap(callable $callback) - { - $callback($this); - - return $this; - } - - /** - * Return only unique items from the collection array. - * - * @param (callable(TValue, TKey): mixed)|string|null $key - * @param bool $strict - * @return static - */ - public function unique($key = null, $strict = false) - { - $callback = $this->valueRetriever($key); - - $exists = []; - - return $this->reject(function ($item, $key) use ($callback, $strict, &$exists) { - if (in_array($id = $callback($item, $key), $exists, $strict)) { - return true; - } - - $exists[] = $id; - }); - } - - /** - * Return only unique items from the collection array using strict comparison. - * - * @param (callable(TValue, TKey): mixed)|string|null $key - * @return static - */ - public function uniqueStrict($key = null) - { - return $this->unique($key, true); - } - - /** - * Collect the values into a collection. - * - * @return \Illuminate\Support\Collection - */ - public function collect() - { - return new Collection($this->all()); - } - - /** - * Get the collection of items as a plain array. - * - * @return array - */ - public function toArray() - { - return $this->map(fn ($value) => $value instanceof Arrayable ? $value->toArray() : $value)->all(); - } - - /** - * Convert the object into something JSON serializable. - * - * @return array - */ - public function jsonSerialize(): array - { - return array_map(function ($value) { - if ($value instanceof JsonSerializable) { - return $value->jsonSerialize(); - } elseif ($value instanceof Jsonable) { - return json_decode($value->toJson(), true); - } elseif ($value instanceof Arrayable) { - return $value->toArray(); - } - - return $value; - }, $this->all()); - } - - /** - * Get the collection of items as JSON. - * - * @param int $options - * @return string - */ - public function toJson($options = 0) - { - return json_encode($this->jsonSerialize(), $options); - } - - /** - * Get a CachingIterator instance. - * - * @param int $flags - * @return \CachingIterator - */ - public function getCachingIterator($flags = CachingIterator::CALL_TOSTRING) - { - return new CachingIterator($this->getIterator(), $flags); - } - - /** - * Convert the collection to its string representation. - * - * @return string - */ - public function __toString() - { - return $this->escapeWhenCastingToString - ? e($this->toJson()) - : $this->toJson(); - } - - /** - * Indicate that the model's string representation should be escaped when __toString is invoked. - * - * @param bool $escape - * @return $this - */ - public function escapeWhenCastingToString($escape = true) - { - $this->escapeWhenCastingToString = $escape; - - return $this; - } - - /** - * Add a method to the list of proxied methods. - * - * @param string $method - * @return void - */ - public static function proxy($method) - { - static::$proxies[] = $method; - } - - /** - * Dynamically access collection proxies. - * - * @param string $key - * @return mixed - * - * @throws \Exception - */ - public function __get($key) - { - if (! in_array($key, static::$proxies)) { - throw new Exception("Property [{$key}] does not exist on this collection instance."); - } - - return new HigherOrderCollectionProxy($this, $key); - } - - /** - * Results array of items from Collection or Arrayable. - * - * @param mixed $items - * @return array - */ - protected function getArrayableItems($items) - { - if (is_array($items)) { - return $items; - } - - return match (true) { - $items instanceof WeakMap => throw new InvalidArgumentException('Collections can not be created using instances of WeakMap.'), - $items instanceof Enumerable => $items->all(), - $items instanceof Arrayable => $items->toArray(), - $items instanceof Traversable => iterator_to_array($items), - $items instanceof Jsonable => json_decode($items->toJson(), true), - $items instanceof JsonSerializable => (array) $items->jsonSerialize(), - $items instanceof UnitEnum => [$items], - default => (array) $items, - }; - } - - /** - * Get an operator checker callback. - * - * @param callable|string $key - * @param string|null $operator - * @param mixed $value - * @return \Closure - */ - protected function operatorForWhere($key, $operator = null, $value = null) - { - if ($this->useAsCallable($key)) { - return $key; - } - - if (func_num_args() === 1) { - $value = true; - - $operator = '='; - } - - if (func_num_args() === 2) { - $value = $operator; - - $operator = '='; - } - - return function ($item) use ($key, $operator, $value) { - $retrieved = data_get($item, $key); - - $strings = array_filter([$retrieved, $value], function ($value) { - return is_string($value) || (is_object($value) && method_exists($value, '__toString')); - }); - - if (count($strings) < 2 && count(array_filter([$retrieved, $value], 'is_object')) == 1) { - return in_array($operator, ['!=', '<>', '!==']); - } - - switch ($operator) { - default: - case '=': - case '==': return $retrieved == $value; - case '!=': - case '<>': return $retrieved != $value; - case '<': return $retrieved < $value; - case '>': return $retrieved > $value; - case '<=': return $retrieved <= $value; - case '>=': return $retrieved >= $value; - case '===': return $retrieved === $value; - case '!==': return $retrieved !== $value; - case '<=>': return $retrieved <=> $value; - } - }; - } - - /** - * Determine if the given value is callable, but not a string. - * - * @param mixed $value - * @return bool - */ - protected function useAsCallable($value) - { - return ! is_string($value) && is_callable($value); - } - - /** - * Get a value retrieving callback. - * - * @param callable|string|null $value - * @return callable - */ - protected function valueRetriever($value) - { - if ($this->useAsCallable($value)) { - return $value; - } - - return fn ($item) => data_get($item, $value); - } - - /** - * Make a function to check an item's equality. - * - * @param mixed $value - * @return \Closure(mixed): bool - */ - protected function equality($value) - { - return fn ($item) => $item === $value; - } - - /** - * Make a function using another function, by negating its result. - * - * @param \Closure $callback - * @return \Closure - */ - protected function negate(Closure $callback) - { - return fn (...$params) => ! $callback(...$params); - } - - /** - * Make a function that returns what's passed to it. - * - * @return \Closure(TValue): TValue - */ - protected function identity() - { - return fn ($value) => $value; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Conditionable/Traits/Conditionable.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Conditionable/Traits/Conditionable.php deleted file mode 100644 index 5e3194bb..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Conditionable/Traits/Conditionable.php +++ /dev/null @@ -1,73 +0,0 @@ -condition($value); - } - - if ($value) { - return $callback($this, $value) ?? $this; - } elseif ($default) { - return $default($this, $value) ?? $this; - } - - return $this; - } - - /** - * Apply the callback if the given "value" is (or resolves to) falsy. - * - * @template TUnlessParameter - * @template TUnlessReturnType - * - * @param (\Closure($this): TUnlessParameter)|TUnlessParameter|null $value - * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $callback - * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $default - * @return $this|TUnlessReturnType - */ - public function unless($value = null, ?callable $callback = null, ?callable $default = null) - { - $value = $value instanceof Closure ? $value($this) : $value; - - if (func_num_args() === 0) { - return (new HigherOrderWhenProxy($this))->negateConditionOnCapture(); - } - - if (func_num_args() === 1) { - return (new HigherOrderWhenProxy($this))->condition(! $value); - } - - if (! $value) { - return $callback($this, $value) ?? $this; - } elseif ($default) { - return $default($this, $value) ?? $this; - } - - return $this; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Console/Application.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Console/Application.php deleted file mode 100755 index d880f8df..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Console/Application.php +++ /dev/null @@ -1,318 +0,0 @@ -laravel = $laravel; - $this->events = $events; - $this->setAutoExit(false); - $this->setCatchExceptions(false); - - $this->events->dispatch(new ArtisanStarting($this)); - - $this->bootstrap(); - } - - /** - * Determine the proper PHP executable. - * - * @return string - */ - public static function phpBinary() - { - return ProcessUtils::escapeArgument((new PhpExecutableFinder)->find(false)); - } - - /** - * Determine the proper Artisan executable. - * - * @return string - */ - public static function artisanBinary() - { - return ProcessUtils::escapeArgument(defined('ARTISAN_BINARY') ? ARTISAN_BINARY : 'artisan'); - } - - /** - * Format the given command as a fully-qualified executable command. - * - * @param string $string - * @return string - */ - public static function formatCommandString($string) - { - return sprintf('%s %s %s', static::phpBinary(), static::artisanBinary(), $string); - } - - /** - * Register a console "starting" bootstrapper. - * - * @param \Closure $callback - * @return void - */ - public static function starting(Closure $callback) - { - static::$bootstrappers[] = $callback; - } - - /** - * Bootstrap the console application. - * - * @return void - */ - protected function bootstrap() - { - foreach (static::$bootstrappers as $bootstrapper) { - $bootstrapper($this); - } - } - - /** - * Clear the console application bootstrappers. - * - * @return void - */ - public static function forgetBootstrappers() - { - static::$bootstrappers = []; - } - - /** - * Run an Artisan console command by name. - * - * @param string $command - * @param array $parameters - * @param \Symfony\Component\Console\Output\OutputInterface|null $outputBuffer - * @return int - * - * @throws \Symfony\Component\Console\Exception\CommandNotFoundException - */ - public function call($command, array $parameters = [], $outputBuffer = null) - { - [$command, $input] = $this->parseCommand($command, $parameters); - - if (! $this->has($command)) { - throw new CommandNotFoundException(sprintf('The command "%s" does not exist.', $command)); - } - - return $this->run( - $input, $this->lastOutput = $outputBuffer ?: new BufferedOutput - ); - } - - /** - * Parse the incoming Artisan command and its input. - * - * @param string $command - * @param array $parameters - * @return array - */ - protected function parseCommand($command, $parameters) - { - if (is_subclass_of($command, SymfonyCommand::class)) { - $callingClass = true; - - $command = $this->laravel->make($command)->getName(); - } - - if (! isset($callingClass) && empty($parameters)) { - $command = $this->getCommandName($input = new StringInput($command)); - } else { - array_unshift($parameters, $command); - - $input = new ArrayInput($parameters); - } - - return [$command, $input]; - } - - /** - * Get the output for the last run command. - * - * @return string - */ - public function output() - { - return $this->lastOutput && method_exists($this->lastOutput, 'fetch') - ? $this->lastOutput->fetch() - : ''; - } - - /** - * Add a command to the console. - * - * @param \Symfony\Component\Console\Command\Command $command - * @return \Symfony\Component\Console\Command\Command - */ - public function add(SymfonyCommand $command) - { - if ($command instanceof Command) { - $command->setLaravel($this->laravel); - } - - return $this->addToParent($command); - } - - /** - * Add the command to the parent instance. - * - * @param \Symfony\Component\Console\Command\Command $command - * @return \Symfony\Component\Console\Command\Command - */ - protected function addToParent(SymfonyCommand $command) - { - return parent::add($command); - } - - /** - * Add a command, resolving through the application. - * - * @param \Illuminate\Console\Command|string $command - * @return \Symfony\Component\Console\Command\Command|null - */ - public function resolve($command) - { - if (is_subclass_of($command, SymfonyCommand::class) && ($commandName = $command::getDefaultName())) { - foreach (explode('|', $commandName) as $name) { - $this->commandMap[$name] = $command; - } - - return null; - } - - if ($command instanceof Command) { - return $this->add($command); - } - - return $this->add($this->laravel->make($command)); - } - - /** - * Resolve an array of commands through the application. - * - * @param array|mixed $commands - * @return $this - */ - public function resolveCommands($commands) - { - $commands = is_array($commands) ? $commands : func_get_args(); - - foreach ($commands as $command) { - $this->resolve($command); - } - - return $this; - } - - /** - * Set the container command loader for lazy resolution. - * - * @return $this - */ - public function setContainerCommandLoader() - { - $this->setCommandLoader(new ContainerCommandLoader($this->laravel, $this->commandMap)); - - return $this; - } - - /** - * Get the default input definition for the application. - * - * This is used to add the --env option to every available command. - * - * @return \Symfony\Component\Console\Input\InputDefinition - */ - protected function getDefaultInputDefinition(): InputDefinition - { - return tap(parent::getDefaultInputDefinition(), function ($definition) { - $definition->addOption($this->getEnvironmentOption()); - }); - } - - /** - * Get the global environment option for the definition. - * - * @return \Symfony\Component\Console\Input\InputOption - */ - protected function getEnvironmentOption() - { - $message = 'The environment the command should run under'; - - return new InputOption('--env', null, InputOption::VALUE_OPTIONAL, $message); - } - - /** - * Get the Laravel application instance. - * - * @return \Illuminate\Contracts\Foundation\Application - */ - public function getLaravel() - { - return $this->laravel; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Console/Command.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Console/Command.php deleted file mode 100755 index 1c6d949f..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Console/Command.php +++ /dev/null @@ -1,298 +0,0 @@ -signature)) { - $this->configureUsingFluentDefinition(); - } else { - parent::__construct($this->name); - } - - // Once we have constructed the command, we'll set the description and other - // related properties of the command. If a signature wasn't used to build - // the command we'll set the arguments and the options on this command. - if (! isset($this->description)) { - $this->setDescription((string) static::getDefaultDescription()); - } else { - $this->setDescription((string) $this->description); - } - - $this->setHelp((string) $this->help); - - $this->setHidden($this->isHidden()); - - if (isset($this->aliases)) { - $this->setAliases((array) $this->aliases); - } - - if (! isset($this->signature)) { - $this->specifyParameters(); - } - - if ($this instanceof Isolatable) { - $this->configureIsolation(); - } - } - - /** - * Configure the console command using a fluent definition. - * - * @return void - */ - protected function configureUsingFluentDefinition() - { - [$name, $arguments, $options] = Parser::parse($this->signature); - - parent::__construct($this->name = $name); - - // After parsing the signature we will spin through the arguments and options - // and set them on this command. These will already be changed into proper - // instances of these "InputArgument" and "InputOption" Symfony classes. - $this->getDefinition()->addArguments($arguments); - $this->getDefinition()->addOptions($options); - } - - /** - * Configure the console command for isolation. - * - * @return void - */ - protected function configureIsolation() - { - $this->getDefinition()->addOption(new InputOption( - 'isolated', - null, - InputOption::VALUE_OPTIONAL, - 'Do not run the command if another instance of the command is already running', - $this->isolated - )); - } - - /** - * Run the console command. - * - * @param \Symfony\Component\Console\Input\InputInterface $input - * @param \Symfony\Component\Console\Output\OutputInterface $output - * @return int - */ - public function run(InputInterface $input, OutputInterface $output): int - { - $this->output = $output instanceof OutputStyle ? $output : $this->laravel->make( - OutputStyle::class, ['input' => $input, 'output' => $output] - ); - - $this->components = $this->laravel->make(Factory::class, ['output' => $this->output]); - - $this->configurePrompts($input); - - try { - return parent::run( - $this->input = $input, $this->output - ); - } finally { - $this->untrap(); - } - } - - /** - * Execute the console command. - * - * @param \Symfony\Component\Console\Input\InputInterface $input - * @param \Symfony\Component\Console\Output\OutputInterface $output - * @return int - */ - protected function execute(InputInterface $input, OutputInterface $output) - { - if ($this instanceof Isolatable && $this->option('isolated') !== false && - ! $this->commandIsolationMutex()->create($this)) { - $this->comment(sprintf( - 'The [%s] command is already running.', $this->getName() - )); - - return (int) (is_numeric($this->option('isolated')) - ? $this->option('isolated') - : $this->isolatedExitCode); - } - - $method = method_exists($this, 'handle') ? 'handle' : '__invoke'; - - try { - return (int) $this->laravel->call([$this, $method]); - } finally { - if ($this instanceof Isolatable && $this->option('isolated') !== false) { - $this->commandIsolationMutex()->forget($this); - } - } - } - - /** - * Get a command isolation mutex instance for the command. - * - * @return \Illuminate\Console\CommandMutex - */ - protected function commandIsolationMutex() - { - return $this->laravel->bound(CommandMutex::class) - ? $this->laravel->make(CommandMutex::class) - : $this->laravel->make(CacheCommandMutex::class); - } - - /** - * Resolve the console command instance for the given command. - * - * @param \Symfony\Component\Console\Command\Command|string $command - * @return \Symfony\Component\Console\Command\Command - */ - protected function resolveCommand($command) - { - if (is_string($command)) { - if (! class_exists($command)) { - return $this->getApplication()->find($command); - } - - $command = $this->laravel->make($command); - } - - if ($command instanceof SymfonyCommand) { - $command->setApplication($this->getApplication()); - } - - if ($command instanceof self) { - $command->setLaravel($this->getLaravel()); - } - - return $command; - } - - /** - * {@inheritdoc} - * - * @return bool - */ - public function isHidden(): bool - { - return $this->hidden; - } - - /** - * {@inheritdoc} - */ - public function setHidden(bool $hidden = true): static - { - parent::setHidden($this->hidden = $hidden); - - return $this; - } - - /** - * Get the Laravel application instance. - * - * @return \Illuminate\Contracts\Foundation\Application - */ - public function getLaravel() - { - return $this->laravel; - } - - /** - * Set the Laravel application instance. - * - * @param \Illuminate\Contracts\Container\Container $laravel - * @return void - */ - public function setLaravel($laravel) - { - $this->laravel = $laravel; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Console/Scheduling/ScheduleRunCommand.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Console/Scheduling/ScheduleRunCommand.php deleted file mode 100644 index 917ff9a1..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Console/Scheduling/ScheduleRunCommand.php +++ /dev/null @@ -1,280 +0,0 @@ -startedAt = Date::now(); - - parent::__construct(); - } - - /** - * Execute the console command. - * - * @param \Illuminate\Console\Scheduling\Schedule $schedule - * @param \Illuminate\Contracts\Events\Dispatcher $dispatcher - * @param \Illuminate\Contracts\Cache\Repository $cache - * @param \Illuminate\Contracts\Debug\ExceptionHandler $handler - * @return void - */ - public function handle(Schedule $schedule, Dispatcher $dispatcher, Cache $cache, ExceptionHandler $handler) - { - $this->schedule = $schedule; - $this->dispatcher = $dispatcher; - $this->cache = $cache; - $this->handler = $handler; - $this->phpBinary = Application::phpBinary(); - - $this->clearInterruptSignal(); - - $this->newLine(); - - $events = $this->schedule->dueEvents($this->laravel); - - foreach ($events as $event) { - if (! $event->filtersPass($this->laravel)) { - $this->dispatcher->dispatch(new ScheduledTaskSkipped($event)); - - continue; - } - - if ($event->onOneServer) { - $this->runSingleServerEvent($event); - } else { - $this->runEvent($event); - } - - $this->eventsRan = true; - } - - if ($events->contains->isRepeatable()) { - $this->repeatEvents($events->filter->isRepeatable()); - } - - if (! $this->eventsRan) { - $this->components->info('No scheduled commands are ready to run.'); - } else { - $this->newLine(); - } - } - - /** - * Run the given single server event. - * - * @param \Illuminate\Console\Scheduling\Event $event - * @return void - */ - protected function runSingleServerEvent($event) - { - if ($this->schedule->serverShouldRun($event, $this->startedAt)) { - $this->runEvent($event); - } else { - $this->components->info(sprintf( - 'Skipping [%s], as command already run on another server.', $event->getSummaryForDisplay() - )); - } - } - - /** - * Run the given event. - * - * @param \Illuminate\Console\Scheduling\Event $event - * @return void - */ - protected function runEvent($event) - { - $summary = $event->getSummaryForDisplay(); - - $command = $event instanceof CallbackEvent - ? $summary - : trim(str_replace($this->phpBinary, '', $event->command)); - - $description = sprintf( - '%s Running [%s]%s', - Carbon::now()->format('Y-m-d H:i:s'), - $command, - $event->runInBackground ? ' in background' : '', - ); - - $this->components->task($description, function () use ($event) { - $this->dispatcher->dispatch(new ScheduledTaskStarting($event)); - - $start = microtime(true); - - try { - $event->run($this->laravel); - - $this->dispatcher->dispatch(new ScheduledTaskFinished( - $event, - round(microtime(true) - $start, 2) - )); - - $this->eventsRan = true; - } catch (Throwable $e) { - $this->dispatcher->dispatch(new ScheduledTaskFailed($event, $e)); - - $this->handler->report($e); - } - - return $event->exitCode == 0; - }); - - if (! $event instanceof CallbackEvent) { - $this->components->bulletList([ - $event->getSummaryForDisplay(), - ]); - } - } - - /** - * Run the given repeating events. - * - * @param \Illuminate\Support\Collection<\Illuminate\Console\Scheduling\Event> $events - * @return void - */ - protected function repeatEvents($events) - { - $hasEnteredMaintenanceMode = false; - - while (Date::now()->lte($this->startedAt->endOfMinute())) { - foreach ($events as $event) { - if ($this->shouldInterrupt()) { - return; - } - - if (! $event->shouldRepeatNow()) { - continue; - } - - $hasEnteredMaintenanceMode = $hasEnteredMaintenanceMode || $this->laravel->isDownForMaintenance(); - - if ($hasEnteredMaintenanceMode && ! $event->runsInMaintenanceMode()) { - continue; - } - - if (! $event->filtersPass($this->laravel)) { - $this->dispatcher->dispatch(new ScheduledTaskSkipped($event)); - - continue; - } - - if ($event->onOneServer) { - $this->runSingleServerEvent($event); - } else { - $this->runEvent($event); - } - - $this->eventsRan = true; - } - - Sleep::usleep(100000); - } - } - - /** - * Determine if the schedule run should be interrupted. - * - * @return bool - */ - protected function shouldInterrupt() - { - return $this->cache->get('illuminate:schedule:interrupt', false); - } - - /** - * Ensure the interrupt signal is cleared. - * - * @return void - */ - protected function clearInterruptSignal() - { - $this->cache->forget('illuminate:schedule:interrupt'); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Container/Container.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Container/Container.php deleted file mode 100755 index 874f49f6..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Container/Container.php +++ /dev/null @@ -1,1502 +0,0 @@ -getAlias($c); - } - - return new ContextualBindingBuilder($this, $aliases); - } - - /** - * Determine if the given abstract type has been bound. - * - * @param string $abstract - * @return bool - */ - public function bound($abstract) - { - return isset($this->bindings[$abstract]) || - isset($this->instances[$abstract]) || - $this->isAlias($abstract); - } - - /** - * {@inheritdoc} - * - * @return bool - */ - public function has(string $id): bool - { - return $this->bound($id); - } - - /** - * Determine if the given abstract type has been resolved. - * - * @param string $abstract - * @return bool - */ - public function resolved($abstract) - { - if ($this->isAlias($abstract)) { - $abstract = $this->getAlias($abstract); - } - - return isset($this->resolved[$abstract]) || - isset($this->instances[$abstract]); - } - - /** - * Determine if a given type is shared. - * - * @param string $abstract - * @return bool - */ - public function isShared($abstract) - { - return isset($this->instances[$abstract]) || - (isset($this->bindings[$abstract]['shared']) && - $this->bindings[$abstract]['shared'] === true); - } - - /** - * Determine if a given string is an alias. - * - * @param string $name - * @return bool - */ - public function isAlias($name) - { - return isset($this->aliases[$name]); - } - - /** - * Register a binding with the container. - * - * @param string $abstract - * @param \Closure|string|null $concrete - * @param bool $shared - * @return void - * - * @throws \TypeError - */ - public function bind($abstract, $concrete = null, $shared = false) - { - $this->dropStaleInstances($abstract); - - // If no concrete type was given, we will simply set the concrete type to the - // abstract type. After that, the concrete type to be registered as shared - // without being forced to state their classes in both of the parameters. - if (is_null($concrete)) { - $concrete = $abstract; - } - - // If the factory is not a Closure, it means it is just a class name which is - // bound into this container to the abstract type and we will just wrap it - // up inside its own Closure to give us more convenience when extending. - if (! $concrete instanceof Closure) { - if (! is_string($concrete)) { - throw new TypeError(self::class.'::bind(): Argument #2 ($concrete) must be of type Closure|string|null'); - } - - $concrete = $this->getClosure($abstract, $concrete); - } - - $this->bindings[$abstract] = compact('concrete', 'shared'); - - // If the abstract type was already resolved in this container we'll fire the - // rebound listener so that any objects which have already gotten resolved - // can have their copy of the object updated via the listener callbacks. - if ($this->resolved($abstract)) { - $this->rebound($abstract); - } - } - - /** - * Get the Closure to be used when building a type. - * - * @param string $abstract - * @param string $concrete - * @return \Closure - */ - protected function getClosure($abstract, $concrete) - { - return function ($container, $parameters = []) use ($abstract, $concrete) { - if ($abstract == $concrete) { - return $container->build($concrete); - } - - return $container->resolve( - $concrete, $parameters, $raiseEvents = false - ); - }; - } - - /** - * Determine if the container has a method binding. - * - * @param string $method - * @return bool - */ - public function hasMethodBinding($method) - { - return isset($this->methodBindings[$method]); - } - - /** - * Bind a callback to resolve with Container::call. - * - * @param array|string $method - * @param \Closure $callback - * @return void - */ - public function bindMethod($method, $callback) - { - $this->methodBindings[$this->parseBindMethod($method)] = $callback; - } - - /** - * Get the method to be bound in class@method format. - * - * @param array|string $method - * @return string - */ - protected function parseBindMethod($method) - { - if (is_array($method)) { - return $method[0].'@'.$method[1]; - } - - return $method; - } - - /** - * Get the method binding for the given method. - * - * @param string $method - * @param mixed $instance - * @return mixed - */ - public function callMethodBinding($method, $instance) - { - return call_user_func($this->methodBindings[$method], $instance, $this); - } - - /** - * Add a contextual binding to the container. - * - * @param string $concrete - * @param string $abstract - * @param \Closure|string $implementation - * @return void - */ - public function addContextualBinding($concrete, $abstract, $implementation) - { - $this->contextual[$concrete][$this->getAlias($abstract)] = $implementation; - } - - /** - * Register a binding if it hasn't already been registered. - * - * @param string $abstract - * @param \Closure|string|null $concrete - * @param bool $shared - * @return void - */ - public function bindIf($abstract, $concrete = null, $shared = false) - { - if (! $this->bound($abstract)) { - $this->bind($abstract, $concrete, $shared); - } - } - - /** - * Register a shared binding in the container. - * - * @param string $abstract - * @param \Closure|string|null $concrete - * @return void - */ - public function singleton($abstract, $concrete = null) - { - $this->bind($abstract, $concrete, true); - } - - /** - * Register a shared binding if it hasn't already been registered. - * - * @param string $abstract - * @param \Closure|string|null $concrete - * @return void - */ - public function singletonIf($abstract, $concrete = null) - { - if (! $this->bound($abstract)) { - $this->singleton($abstract, $concrete); - } - } - - /** - * Register a scoped binding in the container. - * - * @param string $abstract - * @param \Closure|string|null $concrete - * @return void - */ - public function scoped($abstract, $concrete = null) - { - $this->scopedInstances[] = $abstract; - - $this->singleton($abstract, $concrete); - } - - /** - * Register a scoped binding if it hasn't already been registered. - * - * @param string $abstract - * @param \Closure|string|null $concrete - * @return void - */ - public function scopedIf($abstract, $concrete = null) - { - if (! $this->bound($abstract)) { - $this->scoped($abstract, $concrete); - } - } - - /** - * "Extend" an abstract type in the container. - * - * @param string $abstract - * @param \Closure $closure - * @return void - * - * @throws \InvalidArgumentException - */ - public function extend($abstract, Closure $closure) - { - $abstract = $this->getAlias($abstract); - - if (isset($this->instances[$abstract])) { - $this->instances[$abstract] = $closure($this->instances[$abstract], $this); - - $this->rebound($abstract); - } else { - $this->extenders[$abstract][] = $closure; - - if ($this->resolved($abstract)) { - $this->rebound($abstract); - } - } - } - - /** - * Register an existing instance as shared in the container. - * - * @param string $abstract - * @param mixed $instance - * @return mixed - */ - public function instance($abstract, $instance) - { - $this->removeAbstractAlias($abstract); - - $isBound = $this->bound($abstract); - - unset($this->aliases[$abstract]); - - // We'll check to determine if this type has been bound before, and if it has - // we will fire the rebound callbacks registered with the container and it - // can be updated with consuming classes that have gotten resolved here. - $this->instances[$abstract] = $instance; - - if ($isBound) { - $this->rebound($abstract); - } - - return $instance; - } - - /** - * Remove an alias from the contextual binding alias cache. - * - * @param string $searched - * @return void - */ - protected function removeAbstractAlias($searched) - { - if (! isset($this->aliases[$searched])) { - return; - } - - foreach ($this->abstractAliases as $abstract => $aliases) { - foreach ($aliases as $index => $alias) { - if ($alias == $searched) { - unset($this->abstractAliases[$abstract][$index]); - } - } - } - } - - /** - * Assign a set of tags to a given binding. - * - * @param array|string $abstracts - * @param array|mixed ...$tags - * @return void - */ - public function tag($abstracts, $tags) - { - $tags = is_array($tags) ? $tags : array_slice(func_get_args(), 1); - - foreach ($tags as $tag) { - if (! isset($this->tags[$tag])) { - $this->tags[$tag] = []; - } - - foreach ((array) $abstracts as $abstract) { - $this->tags[$tag][] = $abstract; - } - } - } - - /** - * Resolve all of the bindings for a given tag. - * - * @param string $tag - * @return iterable - */ - public function tagged($tag) - { - if (! isset($this->tags[$tag])) { - return []; - } - - return new RewindableGenerator(function () use ($tag) { - foreach ($this->tags[$tag] as $abstract) { - yield $this->make($abstract); - } - }, count($this->tags[$tag])); - } - - /** - * Alias a type to a different name. - * - * @param string $abstract - * @param string $alias - * @return void - * - * @throws \LogicException - */ - public function alias($abstract, $alias) - { - if ($alias === $abstract) { - throw new LogicException("[{$abstract}] is aliased to itself."); - } - - $this->aliases[$alias] = $abstract; - - $this->abstractAliases[$abstract][] = $alias; - } - - /** - * Bind a new callback to an abstract's rebind event. - * - * @param string $abstract - * @param \Closure $callback - * @return mixed - */ - public function rebinding($abstract, Closure $callback) - { - $this->reboundCallbacks[$abstract = $this->getAlias($abstract)][] = $callback; - - if ($this->bound($abstract)) { - return $this->make($abstract); - } - } - - /** - * Refresh an instance on the given target and method. - * - * @param string $abstract - * @param mixed $target - * @param string $method - * @return mixed - */ - public function refresh($abstract, $target, $method) - { - return $this->rebinding($abstract, function ($app, $instance) use ($target, $method) { - $target->{$method}($instance); - }); - } - - /** - * Fire the "rebound" callbacks for the given abstract type. - * - * @param string $abstract - * @return void - */ - protected function rebound($abstract) - { - $instance = $this->make($abstract); - - foreach ($this->getReboundCallbacks($abstract) as $callback) { - $callback($this, $instance); - } - } - - /** - * Get the rebound callbacks for a given type. - * - * @param string $abstract - * @return array - */ - protected function getReboundCallbacks($abstract) - { - return $this->reboundCallbacks[$abstract] ?? []; - } - - /** - * Wrap the given closure such that its dependencies will be injected when executed. - * - * @param \Closure $callback - * @param array $parameters - * @return \Closure - */ - public function wrap(Closure $callback, array $parameters = []) - { - return fn () => $this->call($callback, $parameters); - } - - /** - * Call the given Closure / class@method and inject its dependencies. - * - * @param callable|string $callback - * @param array $parameters - * @param string|null $defaultMethod - * @return mixed - * - * @throws \InvalidArgumentException - */ - public function call($callback, array $parameters = [], $defaultMethod = null) - { - $pushedToBuildStack = false; - - if (($className = $this->getClassForCallable($callback)) && ! in_array( - $className, - $this->buildStack, - true - )) { - $this->buildStack[] = $className; - - $pushedToBuildStack = true; - } - - $result = BoundMethod::call($this, $callback, $parameters, $defaultMethod); - - if ($pushedToBuildStack) { - array_pop($this->buildStack); - } - - return $result; - } - - /** - * Get the class name for the given callback, if one can be determined. - * - * @param callable|string $callback - * @return string|false - */ - protected function getClassForCallable($callback) - { - if (PHP_VERSION_ID >= 80200) { - if (is_callable($callback) && - ! ($reflector = new ReflectionFunction($callback(...)))->isAnonymous()) { - return $reflector->getClosureScopeClass()->name ?? false; - } - - return false; - } - - if (! is_array($callback)) { - return false; - } - - return is_string($callback[0]) ? $callback[0] : get_class($callback[0]); - } - - /** - * Get a closure to resolve the given type from the container. - * - * @param string $abstract - * @return \Closure - */ - public function factory($abstract) - { - return fn () => $this->make($abstract); - } - - /** - * An alias function name for make(). - * - * @param string|callable $abstract - * @param array $parameters - * @return mixed - * - * @throws \Illuminate\Contracts\Container\BindingResolutionException - */ - public function makeWith($abstract, array $parameters = []) - { - return $this->make($abstract, $parameters); - } - - /** - * Resolve the given type from the container. - * - * @param string|callable $abstract - * @param array $parameters - * @return mixed - * - * @throws \Illuminate\Contracts\Container\BindingResolutionException - */ - public function make($abstract, array $parameters = []) - { - return $this->resolve($abstract, $parameters); - } - - /** - * {@inheritdoc} - * - * @return mixed - */ - public function get(string $id) - { - try { - return $this->resolve($id); - } catch (Exception $e) { - if ($this->has($id) || $e instanceof CircularDependencyException) { - throw $e; - } - - throw new EntryNotFoundException($id, is_int($e->getCode()) ? $e->getCode() : 0, $e); - } - } - - /** - * Resolve the given type from the container. - * - * @param string|callable $abstract - * @param array $parameters - * @param bool $raiseEvents - * @return mixed - * - * @throws \Illuminate\Contracts\Container\BindingResolutionException - * @throws \Illuminate\Contracts\Container\CircularDependencyException - */ - protected function resolve($abstract, $parameters = [], $raiseEvents = true) - { - $abstract = $this->getAlias($abstract); - - // First we'll fire any event handlers which handle the "before" resolving of - // specific types. This gives some hooks the chance to add various extends - // calls to change the resolution of objects that they're interested in. - if ($raiseEvents) { - $this->fireBeforeResolvingCallbacks($abstract, $parameters); - } - - $concrete = $this->getContextualConcrete($abstract); - - $needsContextualBuild = ! empty($parameters) || ! is_null($concrete); - - // If an instance of the type is currently being managed as a singleton we'll - // just return an existing instance instead of instantiating new instances - // so the developer can keep using the same objects instance every time. - if (isset($this->instances[$abstract]) && ! $needsContextualBuild) { - return $this->instances[$abstract]; - } - - $this->with[] = $parameters; - - if (is_null($concrete)) { - $concrete = $this->getConcrete($abstract); - } - - // We're ready to instantiate an instance of the concrete type registered for - // the binding. This will instantiate the types, as well as resolve any of - // its "nested" dependencies recursively until all have gotten resolved. - $object = $this->isBuildable($concrete, $abstract) - ? $this->build($concrete) - : $this->make($concrete); - - // If we defined any extenders for this type, we'll need to spin through them - // and apply them to the object being built. This allows for the extension - // of services, such as changing configuration or decorating the object. - foreach ($this->getExtenders($abstract) as $extender) { - $object = $extender($object, $this); - } - - // If the requested type is registered as a singleton we'll want to cache off - // the instances in "memory" so we can return it later without creating an - // entirely new instance of an object on each subsequent request for it. - if ($this->isShared($abstract) && ! $needsContextualBuild) { - $this->instances[$abstract] = $object; - } - - if ($raiseEvents) { - $this->fireResolvingCallbacks($abstract, $object); - } - - // Before returning, we will also set the resolved flag to "true" and pop off - // the parameter overrides for this build. After those two things are done - // we will be ready to return back the fully constructed class instance. - $this->resolved[$abstract] = true; - - array_pop($this->with); - - return $object; - } - - /** - * Get the concrete type for a given abstract. - * - * @param string|callable $abstract - * @return mixed - */ - protected function getConcrete($abstract) - { - // If we don't have a registered resolver or concrete for the type, we'll just - // assume each type is a concrete name and will attempt to resolve it as is - // since the container should be able to resolve concretes automatically. - if (isset($this->bindings[$abstract])) { - return $this->bindings[$abstract]['concrete']; - } - - return $abstract; - } - - /** - * Get the contextual concrete binding for the given abstract. - * - * @param string|callable $abstract - * @return \Closure|string|array|null - */ - protected function getContextualConcrete($abstract) - { - if (! is_null($binding = $this->findInContextualBindings($abstract))) { - return $binding; - } - - // Next we need to see if a contextual binding might be bound under an alias of the - // given abstract type. So, we will need to check if any aliases exist with this - // type and then spin through them and check for contextual bindings on these. - if (empty($this->abstractAliases[$abstract])) { - return; - } - - foreach ($this->abstractAliases[$abstract] as $alias) { - if (! is_null($binding = $this->findInContextualBindings($alias))) { - return $binding; - } - } - } - - /** - * Find the concrete binding for the given abstract in the contextual binding array. - * - * @param string|callable $abstract - * @return \Closure|string|null - */ - protected function findInContextualBindings($abstract) - { - return $this->contextual[end($this->buildStack)][$abstract] ?? null; - } - - /** - * Determine if the given concrete is buildable. - * - * @param mixed $concrete - * @param string $abstract - * @return bool - */ - protected function isBuildable($concrete, $abstract) - { - return $concrete === $abstract || $concrete instanceof Closure; - } - - /** - * Instantiate a concrete instance of the given type. - * - * @param \Closure|string $concrete - * @return mixed - * - * @throws \Illuminate\Contracts\Container\BindingResolutionException - * @throws \Illuminate\Contracts\Container\CircularDependencyException - */ - public function build($concrete) - { - // If the concrete type is actually a Closure, we will just execute it and - // hand back the results of the functions, which allows functions to be - // used as resolvers for more fine-tuned resolution of these objects. - if ($concrete instanceof Closure) { - return $concrete($this, $this->getLastParameterOverride()); - } - - try { - $reflector = new ReflectionClass($concrete); - } catch (ReflectionException $e) { - throw new BindingResolutionException("Target class [$concrete] does not exist.", 0, $e); - } - - // If the type is not instantiable, the developer is attempting to resolve - // an abstract type such as an Interface or Abstract Class and there is - // no binding registered for the abstractions so we need to bail out. - if (! $reflector->isInstantiable()) { - return $this->notInstantiable($concrete); - } - - $this->buildStack[] = $concrete; - - $constructor = $reflector->getConstructor(); - - // If there are no constructors, that means there are no dependencies then - // we can just resolve the instances of the objects right away, without - // resolving any other types or dependencies out of these containers. - if (is_null($constructor)) { - array_pop($this->buildStack); - - return new $concrete; - } - - $dependencies = $constructor->getParameters(); - - // Once we have all the constructor's parameters we can create each of the - // dependency instances and then use the reflection instances to make a - // new instance of this class, injecting the created dependencies in. - try { - $instances = $this->resolveDependencies($dependencies); - } catch (BindingResolutionException $e) { - array_pop($this->buildStack); - - throw $e; - } - - array_pop($this->buildStack); - - return $reflector->newInstanceArgs($instances); - } - - /** - * Resolve all of the dependencies from the ReflectionParameters. - * - * @param \ReflectionParameter[] $dependencies - * @return array - * - * @throws \Illuminate\Contracts\Container\BindingResolutionException - */ - protected function resolveDependencies(array $dependencies) - { - $results = []; - - foreach ($dependencies as $dependency) { - // If the dependency has an override for this particular build we will use - // that instead as the value. Otherwise, we will continue with this run - // of resolutions and let reflection attempt to determine the result. - if ($this->hasParameterOverride($dependency)) { - $results[] = $this->getParameterOverride($dependency); - - continue; - } - - // If the class is null, it means the dependency is a string or some other - // primitive type which we can not resolve since it is not a class and - // we will just bomb out with an error since we have no-where to go. - $result = is_null(Util::getParameterClassName($dependency)) - ? $this->resolvePrimitive($dependency) - : $this->resolveClass($dependency); - - if ($dependency->isVariadic()) { - $results = array_merge($results, $result); - } else { - $results[] = $result; - } - } - - return $results; - } - - /** - * Determine if the given dependency has a parameter override. - * - * @param \ReflectionParameter $dependency - * @return bool - */ - protected function hasParameterOverride($dependency) - { - return array_key_exists( - $dependency->name, $this->getLastParameterOverride() - ); - } - - /** - * Get a parameter override for a dependency. - * - * @param \ReflectionParameter $dependency - * @return mixed - */ - protected function getParameterOverride($dependency) - { - return $this->getLastParameterOverride()[$dependency->name]; - } - - /** - * Get the last parameter override. - * - * @return array - */ - protected function getLastParameterOverride() - { - return count($this->with) ? end($this->with) : []; - } - - /** - * Resolve a non-class hinted primitive dependency. - * - * @param \ReflectionParameter $parameter - * @return mixed - * - * @throws \Illuminate\Contracts\Container\BindingResolutionException - */ - protected function resolvePrimitive(ReflectionParameter $parameter) - { - if (! is_null($concrete = $this->getContextualConcrete('$'.$parameter->getName()))) { - return Util::unwrapIfClosure($concrete, $this); - } - - if ($parameter->isDefaultValueAvailable()) { - return $parameter->getDefaultValue(); - } - - if ($parameter->isVariadic()) { - return []; - } - - $this->unresolvablePrimitive($parameter); - } - - /** - * Resolve a class based dependency from the container. - * - * @param \ReflectionParameter $parameter - * @return mixed - * - * @throws \Illuminate\Contracts\Container\BindingResolutionException - */ - protected function resolveClass(ReflectionParameter $parameter) - { - try { - return $parameter->isVariadic() - ? $this->resolveVariadicClass($parameter) - : $this->make(Util::getParameterClassName($parameter)); - } - - // If we can not resolve the class instance, we will check to see if the value - // is optional, and if it is we will return the optional parameter value as - // the value of the dependency, similarly to how we do this with scalars. - catch (BindingResolutionException $e) { - if ($parameter->isDefaultValueAvailable()) { - array_pop($this->with); - - return $parameter->getDefaultValue(); - } - - if ($parameter->isVariadic()) { - array_pop($this->with); - - return []; - } - - throw $e; - } - } - - /** - * Resolve a class based variadic dependency from the container. - * - * @param \ReflectionParameter $parameter - * @return mixed - */ - protected function resolveVariadicClass(ReflectionParameter $parameter) - { - $className = Util::getParameterClassName($parameter); - - $abstract = $this->getAlias($className); - - if (! is_array($concrete = $this->getContextualConcrete($abstract))) { - return $this->make($className); - } - - return array_map(fn ($abstract) => $this->resolve($abstract), $concrete); - } - - /** - * Throw an exception that the concrete is not instantiable. - * - * @param string $concrete - * @return void - * - * @throws \Illuminate\Contracts\Container\BindingResolutionException - */ - protected function notInstantiable($concrete) - { - if (! empty($this->buildStack)) { - $previous = implode(', ', $this->buildStack); - - $message = "Target [$concrete] is not instantiable while building [$previous]."; - } else { - $message = "Target [$concrete] is not instantiable."; - } - - throw new BindingResolutionException($message); - } - - /** - * Throw an exception for an unresolvable primitive. - * - * @param \ReflectionParameter $parameter - * @return void - * - * @throws \Illuminate\Contracts\Container\BindingResolutionException - */ - protected function unresolvablePrimitive(ReflectionParameter $parameter) - { - $message = "Unresolvable dependency resolving [$parameter] in class {$parameter->getDeclaringClass()->getName()}"; - - throw new BindingResolutionException($message); - } - - /** - * Register a new before resolving callback for all types. - * - * @param \Closure|string $abstract - * @param \Closure|null $callback - * @return void - */ - public function beforeResolving($abstract, ?Closure $callback = null) - { - if (is_string($abstract)) { - $abstract = $this->getAlias($abstract); - } - - if ($abstract instanceof Closure && is_null($callback)) { - $this->globalBeforeResolvingCallbacks[] = $abstract; - } else { - $this->beforeResolvingCallbacks[$abstract][] = $callback; - } - } - - /** - * Register a new resolving callback. - * - * @param \Closure|string $abstract - * @param \Closure|null $callback - * @return void - */ - public function resolving($abstract, ?Closure $callback = null) - { - if (is_string($abstract)) { - $abstract = $this->getAlias($abstract); - } - - if (is_null($callback) && $abstract instanceof Closure) { - $this->globalResolvingCallbacks[] = $abstract; - } else { - $this->resolvingCallbacks[$abstract][] = $callback; - } - } - - /** - * Register a new after resolving callback for all types. - * - * @param \Closure|string $abstract - * @param \Closure|null $callback - * @return void - */ - public function afterResolving($abstract, ?Closure $callback = null) - { - if (is_string($abstract)) { - $abstract = $this->getAlias($abstract); - } - - if ($abstract instanceof Closure && is_null($callback)) { - $this->globalAfterResolvingCallbacks[] = $abstract; - } else { - $this->afterResolvingCallbacks[$abstract][] = $callback; - } - } - - /** - * Fire all of the before resolving callbacks. - * - * @param string $abstract - * @param array $parameters - * @return void - */ - protected function fireBeforeResolvingCallbacks($abstract, $parameters = []) - { - $this->fireBeforeCallbackArray($abstract, $parameters, $this->globalBeforeResolvingCallbacks); - - foreach ($this->beforeResolvingCallbacks as $type => $callbacks) { - if ($type === $abstract || is_subclass_of($abstract, $type)) { - $this->fireBeforeCallbackArray($abstract, $parameters, $callbacks); - } - } - } - - /** - * Fire an array of callbacks with an object. - * - * @param string $abstract - * @param array $parameters - * @param array $callbacks - * @return void - */ - protected function fireBeforeCallbackArray($abstract, $parameters, array $callbacks) - { - foreach ($callbacks as $callback) { - $callback($abstract, $parameters, $this); - } - } - - /** - * Fire all of the resolving callbacks. - * - * @param string $abstract - * @param mixed $object - * @return void - */ - protected function fireResolvingCallbacks($abstract, $object) - { - $this->fireCallbackArray($object, $this->globalResolvingCallbacks); - - $this->fireCallbackArray( - $object, $this->getCallbacksForType($abstract, $object, $this->resolvingCallbacks) - ); - - $this->fireAfterResolvingCallbacks($abstract, $object); - } - - /** - * Fire all of the after resolving callbacks. - * - * @param string $abstract - * @param mixed $object - * @return void - */ - protected function fireAfterResolvingCallbacks($abstract, $object) - { - $this->fireCallbackArray($object, $this->globalAfterResolvingCallbacks); - - $this->fireCallbackArray( - $object, $this->getCallbacksForType($abstract, $object, $this->afterResolvingCallbacks) - ); - } - - /** - * Get all callbacks for a given type. - * - * @param string $abstract - * @param object $object - * @param array $callbacksPerType - * @return array - */ - protected function getCallbacksForType($abstract, $object, array $callbacksPerType) - { - $results = []; - - foreach ($callbacksPerType as $type => $callbacks) { - if ($type === $abstract || $object instanceof $type) { - $results = array_merge($results, $callbacks); - } - } - - return $results; - } - - /** - * Fire an array of callbacks with an object. - * - * @param mixed $object - * @param array $callbacks - * @return void - */ - protected function fireCallbackArray($object, array $callbacks) - { - foreach ($callbacks as $callback) { - $callback($object, $this); - } - } - - /** - * Get the container's bindings. - * - * @return array - */ - public function getBindings() - { - return $this->bindings; - } - - /** - * Get the alias for an abstract if available. - * - * @param string $abstract - * @return string - */ - public function getAlias($abstract) - { - return isset($this->aliases[$abstract]) - ? $this->getAlias($this->aliases[$abstract]) - : $abstract; - } - - /** - * Get the extender callbacks for a given type. - * - * @param string $abstract - * @return array - */ - protected function getExtenders($abstract) - { - return $this->extenders[$this->getAlias($abstract)] ?? []; - } - - /** - * Remove all of the extender callbacks for a given type. - * - * @param string $abstract - * @return void - */ - public function forgetExtenders($abstract) - { - unset($this->extenders[$this->getAlias($abstract)]); - } - - /** - * Drop all of the stale instances and aliases. - * - * @param string $abstract - * @return void - */ - protected function dropStaleInstances($abstract) - { - unset($this->instances[$abstract], $this->aliases[$abstract]); - } - - /** - * Remove a resolved instance from the instance cache. - * - * @param string $abstract - * @return void - */ - public function forgetInstance($abstract) - { - unset($this->instances[$abstract]); - } - - /** - * Clear all of the instances from the container. - * - * @return void - */ - public function forgetInstances() - { - $this->instances = []; - } - - /** - * Clear all of the scoped instances from the container. - * - * @return void - */ - public function forgetScopedInstances() - { - foreach ($this->scopedInstances as $scoped) { - unset($this->instances[$scoped]); - } - } - - /** - * Flush the container of all bindings and resolved instances. - * - * @return void - */ - public function flush() - { - $this->aliases = []; - $this->resolved = []; - $this->bindings = []; - $this->instances = []; - $this->abstractAliases = []; - $this->scopedInstances = []; - } - - /** - * Get the globally available instance of the container. - * - * @return static - */ - public static function getInstance() - { - if (is_null(static::$instance)) { - static::$instance = new static; - } - - return static::$instance; - } - - /** - * Set the shared instance of the container. - * - * @param \Illuminate\Contracts\Container\Container|null $container - * @return \Illuminate\Contracts\Container\Container|static - */ - public static function setInstance(?ContainerContract $container = null) - { - return static::$instance = $container; - } - - /** - * Determine if a given offset exists. - * - * @param string $key - * @return bool - */ - public function offsetExists($key): bool - { - return $this->bound($key); - } - - /** - * Get the value at a given offset. - * - * @param string $key - * @return mixed - */ - public function offsetGet($key): mixed - { - return $this->make($key); - } - - /** - * Set the value at a given offset. - * - * @param string $key - * @param mixed $value - * @return void - */ - public function offsetSet($key, $value): void - { - $this->bind($key, $value instanceof Closure ? $value : fn () => $value); - } - - /** - * Unset the value at a given offset. - * - * @param string $key - * @return void - */ - public function offsetUnset($key): void - { - unset($this->bindings[$key], $this->instances[$key], $this->resolved[$key]); - } - - /** - * Dynamically access container services. - * - * @param string $key - * @return mixed - */ - public function __get($key) - { - return $this[$key]; - } - - /** - * Dynamically set container services. - * - * @param string $key - * @param mixed $value - * @return void - */ - public function __set($key, $value) - { - $this[$key] = $value; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Contracts/Auth/Access/Gate.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Contracts/Auth/Access/Gate.php deleted file mode 100644 index 4bafab3f..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Contracts/Auth/Access/Gate.php +++ /dev/null @@ -1,150 +0,0 @@ -setupContainer($container ?: new Container); - - // Once we have the container setup, we will setup the default configuration - // options in the container "config" binding. This will make the database - // manager work correctly out of the box without extreme configuration. - $this->setupDefaultConfiguration(); - - $this->setupManager(); - } - - /** - * Setup the default database configuration options. - * - * @return void - */ - protected function setupDefaultConfiguration() - { - $this->container['config']['database.fetch'] = PDO::FETCH_OBJ; - - $this->container['config']['database.default'] = 'default'; - } - - /** - * Build the database manager instance. - * - * @return void - */ - protected function setupManager() - { - $factory = new ConnectionFactory($this->container); - - $this->manager = new DatabaseManager($this->container, $factory); - } - - /** - * Get a connection instance from the global manager. - * - * @param string|null $connection - * @return \Illuminate\Database\Connection - */ - public static function connection($connection = null) - { - return static::$instance->getConnection($connection); - } - - /** - * Get a fluent query builder instance. - * - * @param \Closure|\Illuminate\Database\Query\Builder|string $table - * @param string|null $as - * @param string|null $connection - * @return \Illuminate\Database\Query\Builder - */ - public static function table($table, $as = null, $connection = null) - { - return static::$instance->connection($connection)->table($table, $as); - } - - /** - * Get a schema builder instance. - * - * @param string|null $connection - * @return \Illuminate\Database\Schema\Builder - */ - public static function schema($connection = null) - { - return static::$instance->connection($connection)->getSchemaBuilder(); - } - - /** - * Get a registered connection instance. - * - * @param string|null $name - * @return \Illuminate\Database\Connection - */ - public function getConnection($name = null) - { - return $this->manager->connection($name); - } - - /** - * Register a connection with the manager. - * - * @param array $config - * @param string $name - * @return void - */ - public function addConnection(array $config, $name = 'default') - { - $connections = $this->container['config']['database.connections']; - - $connections[$name] = $config; - - $this->container['config']['database.connections'] = $connections; - } - - /** - * Bootstrap Eloquent so it is ready for usage. - * - * @return void - */ - public function bootEloquent() - { - Eloquent::setConnectionResolver($this->manager); - - // If we have an event dispatcher instance, we will go ahead and register it - // with the Eloquent ORM, allowing for model callbacks while creating and - // updating "model" instances; however, it is not necessary to operate. - if ($dispatcher = $this->getEventDispatcher()) { - Eloquent::setEventDispatcher($dispatcher); - } - } - - /** - * Set the fetch mode for the database connections. - * - * @param int $fetchMode - * @return $this - */ - public function setFetchMode($fetchMode) - { - $this->container['config']['database.fetch'] = $fetchMode; - - return $this; - } - - /** - * Get the database manager instance. - * - * @return \Illuminate\Database\DatabaseManager - */ - public function getDatabaseManager() - { - return $this->manager; - } - - /** - * Get the current event dispatcher instance. - * - * @return \Illuminate\Contracts\Events\Dispatcher|null - */ - public function getEventDispatcher() - { - if ($this->container->bound('events')) { - return $this->container['events']; - } - } - - /** - * Set the event dispatcher instance to be used by connections. - * - * @param \Illuminate\Contracts\Events\Dispatcher $dispatcher - * @return void - */ - public function setEventDispatcher(Dispatcher $dispatcher) - { - $this->container->instance('events', $dispatcher); - } - - /** - * Dynamically pass methods to the default connection. - * - * @param string $method - * @param array $parameters - * @return mixed - */ - public static function __callStatic($method, $parameters) - { - return static::connection()->$method(...$parameters); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Concerns/BuildsQueries.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Concerns/BuildsQueries.php deleted file mode 100644 index c41a58b3..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Concerns/BuildsQueries.php +++ /dev/null @@ -1,550 +0,0 @@ -enforceOrderBy(); - - $page = 1; - - do { - // We'll execute the query for the given page and get the results. If there are - // no results we can just break and return from here. When there are results - // we will call the callback with the current chunk of these results here. - $results = $this->forPage($page, $count)->get(); - - $countResults = $results->count(); - - if ($countResults == 0) { - break; - } - - // On each chunk result set, we will pass them to the callback and then let the - // developer take care of everything within the callback, which allows us to - // keep the memory low for spinning through large result sets for working. - if ($callback($results, $page) === false) { - return false; - } - - unset($results); - - $page++; - } while ($countResults == $count); - - return true; - } - - /** - * Run a map over each item while chunking. - * - * @param callable $callback - * @param int $count - * @return \Illuminate\Support\Collection - */ - public function chunkMap(callable $callback, $count = 1000) - { - $collection = Collection::make(); - - $this->chunk($count, function ($items) use ($collection, $callback) { - $items->each(function ($item) use ($collection, $callback) { - $collection->push($callback($item)); - }); - }); - - return $collection; - } - - /** - * Execute a callback over each item while chunking. - * - * @param callable $callback - * @param int $count - * @return bool - * - * @throws \RuntimeException - */ - public function each(callable $callback, $count = 1000) - { - return $this->chunk($count, function ($results) use ($callback) { - foreach ($results as $key => $value) { - if ($callback($value, $key) === false) { - return false; - } - } - }); - } - - /** - * Chunk the results of a query by comparing IDs. - * - * @param int $count - * @param callable $callback - * @param string|null $column - * @param string|null $alias - * @return bool - */ - public function chunkById($count, callable $callback, $column = null, $alias = null) - { - return $this->orderedChunkById($count, $callback, $column, $alias); - } - - /** - * Chunk the results of a query by comparing IDs in descending order. - * - * @param int $count - * @param callable $callback - * @param string|null $column - * @param string|null $alias - * @return bool - */ - public function chunkByIdDesc($count, callable $callback, $column = null, $alias = null) - { - return $this->orderedChunkById($count, $callback, $column, $alias, descending: true); - } - - /** - * Chunk the results of a query by comparing IDs in a given order. - * - * @param int $count - * @param callable $callback - * @param string|null $column - * @param string|null $alias - * @param bool $descending - * @return bool - */ - public function orderedChunkById($count, callable $callback, $column = null, $alias = null, $descending = false) - { - $column ??= $this->defaultKeyName(); - - $alias ??= $column; - - $lastId = null; - - $page = 1; - - do { - $clone = clone $this; - - // We'll execute the query for the given page and get the results. If there are - // no results we can just break and return from here. When there are results - // we will call the callback with the current chunk of these results here. - if ($descending) { - $results = $clone->forPageBeforeId($count, $lastId, $column)->get(); - } else { - $results = $clone->forPageAfterId($count, $lastId, $column)->get(); - } - - $countResults = $results->count(); - - if ($countResults == 0) { - break; - } - - // On each chunk result set, we will pass them to the callback and then let the - // developer take care of everything within the callback, which allows us to - // keep the memory low for spinning through large result sets for working. - if ($callback($results, $page) === false) { - return false; - } - - $lastId = data_get($results->last(), $alias); - - if ($lastId === null) { - throw new RuntimeException("The chunkById operation was aborted because the [{$alias}] column is not present in the query result."); - } - - unset($results); - - $page++; - } while ($countResults == $count); - - return true; - } - - /** - * Execute a callback over each item while chunking by ID. - * - * @param callable $callback - * @param int $count - * @param string|null $column - * @param string|null $alias - * @return bool - */ - public function eachById(callable $callback, $count = 1000, $column = null, $alias = null) - { - return $this->chunkById($count, function ($results, $page) use ($callback, $count) { - foreach ($results as $key => $value) { - if ($callback($value, (($page - 1) * $count) + $key) === false) { - return false; - } - } - }, $column, $alias); - } - - /** - * Query lazily, by chunks of the given size. - * - * @param int $chunkSize - * @return \Illuminate\Support\LazyCollection - * - * @throws \InvalidArgumentException - */ - public function lazy($chunkSize = 1000) - { - if ($chunkSize < 1) { - throw new InvalidArgumentException('The chunk size should be at least 1'); - } - - $this->enforceOrderBy(); - - return LazyCollection::make(function () use ($chunkSize) { - $page = 1; - - while (true) { - $results = $this->forPage($page++, $chunkSize)->get(); - - foreach ($results as $result) { - yield $result; - } - - if ($results->count() < $chunkSize) { - return; - } - } - }); - } - - /** - * Query lazily, by chunking the results of a query by comparing IDs. - * - * @param int $chunkSize - * @param string|null $column - * @param string|null $alias - * @return \Illuminate\Support\LazyCollection - * - * @throws \InvalidArgumentException - */ - public function lazyById($chunkSize = 1000, $column = null, $alias = null) - { - return $this->orderedLazyById($chunkSize, $column, $alias); - } - - /** - * Query lazily, by chunking the results of a query by comparing IDs in descending order. - * - * @param int $chunkSize - * @param string|null $column - * @param string|null $alias - * @return \Illuminate\Support\LazyCollection - * - * @throws \InvalidArgumentException - */ - public function lazyByIdDesc($chunkSize = 1000, $column = null, $alias = null) - { - return $this->orderedLazyById($chunkSize, $column, $alias, true); - } - - /** - * Query lazily, by chunking the results of a query by comparing IDs in a given order. - * - * @param int $chunkSize - * @param string|null $column - * @param string|null $alias - * @param bool $descending - * @return \Illuminate\Support\LazyCollection - * - * @throws \InvalidArgumentException - */ - protected function orderedLazyById($chunkSize = 1000, $column = null, $alias = null, $descending = false) - { - if ($chunkSize < 1) { - throw new InvalidArgumentException('The chunk size should be at least 1'); - } - - $column ??= $this->defaultKeyName(); - - $alias ??= $column; - - return LazyCollection::make(function () use ($chunkSize, $column, $alias, $descending) { - $lastId = null; - - while (true) { - $clone = clone $this; - - if ($descending) { - $results = $clone->forPageBeforeId($chunkSize, $lastId, $column)->get(); - } else { - $results = $clone->forPageAfterId($chunkSize, $lastId, $column)->get(); - } - - foreach ($results as $result) { - yield $result; - } - - if ($results->count() < $chunkSize) { - return; - } - - $lastId = $results->last()->{$alias}; - - if ($lastId === null) { - throw new RuntimeException("The lazyById operation was aborted because the [{$alias}] column is not present in the query result."); - } - } - }); - } - - /** - * Execute the query and get the first result. - * - * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Model|object|static|null - */ - public function first($columns = ['*']) - { - return $this->take(1)->get($columns)->first(); - } - - /** - * Execute the query and get the first result if it's the sole matching record. - * - * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Model|object|static|null - * - * @throws \Illuminate\Database\RecordsNotFoundException - * @throws \Illuminate\Database\MultipleRecordsFoundException - */ - public function sole($columns = ['*']) - { - $result = $this->take(2)->get($columns); - - $count = $result->count(); - - if ($count === 0) { - throw new RecordsNotFoundException; - } - - if ($count > 1) { - throw new MultipleRecordsFoundException($count); - } - - return $result->first(); - } - - /** - * Paginate the given query using a cursor paginator. - * - * @param int $perPage - * @param array|string $columns - * @param string $cursorName - * @param \Illuminate\Pagination\Cursor|string|null $cursor - * @return \Illuminate\Contracts\Pagination\CursorPaginator - */ - protected function paginateUsingCursor($perPage, $columns = ['*'], $cursorName = 'cursor', $cursor = null) - { - if (! $cursor instanceof Cursor) { - $cursor = is_string($cursor) - ? Cursor::fromEncoded($cursor) - : CursorPaginator::resolveCurrentCursor($cursorName, $cursor); - } - - $orders = $this->ensureOrderForCursorPagination(! is_null($cursor) && $cursor->pointsToPreviousItems()); - - if (! is_null($cursor)) { - // Reset the union bindings so we can add the cursor where in the correct position... - $this->setBindings([], 'union'); - - $addCursorConditions = function (self $builder, $previousColumn, $originalColumn, $i) use (&$addCursorConditions, $cursor, $orders) { - $unionBuilders = $builder->getUnionBuilders(); - - if (! is_null($previousColumn)) { - $originalColumn ??= $this->getOriginalColumnNameForCursorPagination($this, $previousColumn); - - $builder->where( - Str::contains($originalColumn, ['(', ')']) ? new Expression($originalColumn) : $originalColumn, - '=', - $cursor->parameter($previousColumn) - ); - - $unionBuilders->each(function ($unionBuilder) use ($previousColumn, $cursor) { - $unionBuilder->where( - $this->getOriginalColumnNameForCursorPagination($unionBuilder, $previousColumn), - '=', - $cursor->parameter($previousColumn) - ); - - $this->addBinding($unionBuilder->getRawBindings()['where'], 'union'); - }); - } - - $builder->where(function (self $secondBuilder) use ($addCursorConditions, $cursor, $orders, $i, $unionBuilders) { - ['column' => $column, 'direction' => $direction] = $orders[$i]; - - $originalColumn = $this->getOriginalColumnNameForCursorPagination($this, $column); - - $secondBuilder->where( - Str::contains($originalColumn, ['(', ')']) ? new Expression($originalColumn) : $originalColumn, - $direction === 'asc' ? '>' : '<', - $cursor->parameter($column) - ); - - if ($i < $orders->count() - 1) { - $secondBuilder->orWhere(function (self $thirdBuilder) use ($addCursorConditions, $column, $originalColumn, $i) { - $addCursorConditions($thirdBuilder, $column, $originalColumn, $i + 1); - }); - } - - $unionBuilders->each(function ($unionBuilder) use ($column, $direction, $cursor, $i, $orders, $addCursorConditions) { - $unionWheres = $unionBuilder->getRawBindings()['where']; - - $originalColumn = $this->getOriginalColumnNameForCursorPagination($unionBuilder, $column); - $unionBuilder->where(function ($unionBuilder) use ($column, $direction, $cursor, $i, $orders, $addCursorConditions, $originalColumn, $unionWheres) { - $unionBuilder->where( - $originalColumn, - $direction === 'asc' ? '>' : '<', - $cursor->parameter($column) - ); - - if ($i < $orders->count() - 1) { - $unionBuilder->orWhere(function (self $fourthBuilder) use ($addCursorConditions, $column, $originalColumn, $i) { - $addCursorConditions($fourthBuilder, $column, $originalColumn, $i + 1); - }); - } - - $this->addBinding($unionWheres, 'union'); - $this->addBinding($unionBuilder->getRawBindings()['where'], 'union'); - }); - }); - }); - }; - - $addCursorConditions($this, null, null, 0); - } - - $this->limit($perPage + 1); - - return $this->cursorPaginator($this->get($columns), $perPage, $cursor, [ - 'path' => Paginator::resolveCurrentPath(), - 'cursorName' => $cursorName, - 'parameters' => $orders->pluck('column')->toArray(), - ]); - } - - /** - * Get the original column name of the given column, without any aliasing. - * - * @param \Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder $builder - * @param string $parameter - * @return string - */ - protected function getOriginalColumnNameForCursorPagination($builder, string $parameter) - { - $columns = $builder instanceof Builder ? $builder->getQuery()->getColumns() : $builder->getColumns(); - - if (! is_null($columns)) { - foreach ($columns as $column) { - if (($position = strripos($column, ' as ')) !== false) { - $original = substr($column, 0, $position); - - $alias = substr($column, $position + 4); - - if ($parameter === $alias || $builder->getGrammar()->wrap($parameter) === $alias) { - return $original; - } - } - } - } - - return $parameter; - } - - /** - * Create a new length-aware paginator instance. - * - * @param \Illuminate\Support\Collection $items - * @param int $total - * @param int $perPage - * @param int $currentPage - * @param array $options - * @return \Illuminate\Pagination\LengthAwarePaginator - */ - protected function paginator($items, $total, $perPage, $currentPage, $options) - { - return Container::getInstance()->makeWith(LengthAwarePaginator::class, compact( - 'items', 'total', 'perPage', 'currentPage', 'options' - )); - } - - /** - * Create a new simple paginator instance. - * - * @param \Illuminate\Support\Collection $items - * @param int $perPage - * @param int $currentPage - * @param array $options - * @return \Illuminate\Pagination\Paginator - */ - protected function simplePaginator($items, $perPage, $currentPage, $options) - { - return Container::getInstance()->makeWith(Paginator::class, compact( - 'items', 'perPage', 'currentPage', 'options' - )); - } - - /** - * Create a new cursor paginator instance. - * - * @param \Illuminate\Support\Collection $items - * @param int $perPage - * @param \Illuminate\Pagination\Cursor $cursor - * @param array $options - * @return \Illuminate\Pagination\CursorPaginator - */ - protected function cursorPaginator($items, $perPage, $cursor, $options) - { - return Container::getInstance()->makeWith(CursorPaginator::class, compact( - 'items', 'perPage', 'cursor', 'options' - )); - } - - /** - * Pass the query to a given callback. - * - * @param callable $callback - * @return $this - */ - public function tap($callback) - { - $callback($this); - - return $this; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Concerns/ManagesTransactions.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Concerns/ManagesTransactions.php deleted file mode 100644 index ce0342ec..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Concerns/ManagesTransactions.php +++ /dev/null @@ -1,351 +0,0 @@ -beginTransaction(); - - // We'll simply execute the given callback within a try / catch block and if we - // catch any exception we can rollback this transaction so that none of this - // gets actually persisted to a database or stored in a permanent fashion. - try { - $callbackResult = $callback($this); - } - - // If we catch an exception we'll rollback this transaction and try again if we - // are not out of attempts. If we are out of attempts we will just throw the - // exception back out, and let the developer handle an uncaught exception. - catch (Throwable $e) { - $this->handleTransactionException( - $e, $currentAttempt, $attempts - ); - - continue; - } - - $levelBeingCommitted = $this->transactions; - - try { - if ($this->transactions == 1) { - $this->fireConnectionEvent('committing'); - $this->getPdo()->commit(); - } - - $this->transactions = max(0, $this->transactions - 1); - } catch (Throwable $e) { - $this->handleCommitTransactionException( - $e, $currentAttempt, $attempts - ); - - continue; - } - - $this->transactionsManager?->commit( - $this->getName(), - $levelBeingCommitted, - $this->transactions - ); - - $this->fireConnectionEvent('committed'); - - return $callbackResult; - } - } - - /** - * Handle an exception encountered when running a transacted statement. - * - * @param \Throwable $e - * @param int $currentAttempt - * @param int $maxAttempts - * @return void - * - * @throws \Throwable - */ - protected function handleTransactionException(Throwable $e, $currentAttempt, $maxAttempts) - { - // On a deadlock, MySQL rolls back the entire transaction so we can't just - // retry the query. We have to throw this exception all the way out and - // let the developer handle it in another way. We will decrement too. - if ($this->causedByConcurrencyError($e) && - $this->transactions > 1) { - $this->transactions--; - - $this->transactionsManager?->rollback( - $this->getName(), $this->transactions - ); - - throw new DeadlockException($e->getMessage(), is_int($e->getCode()) ? $e->getCode() : 0, $e); - } - - // If there was an exception we will rollback this transaction and then we - // can check if we have exceeded the maximum attempt count for this and - // if we haven't we will return and try this query again in our loop. - $this->rollBack(); - - if ($this->causedByConcurrencyError($e) && - $currentAttempt < $maxAttempts) { - return; - } - - throw $e; - } - - /** - * Start a new database transaction. - * - * @return void - * - * @throws \Throwable - */ - public function beginTransaction() - { - foreach ($this->beforeStartingTransaction as $callback) { - $callback($this); - } - - $this->createTransaction(); - - $this->transactions++; - - $this->transactionsManager?->begin( - $this->getName(), $this->transactions - ); - - $this->fireConnectionEvent('beganTransaction'); - } - - /** - * Create a transaction within the database. - * - * @return void - * - * @throws \Throwable - */ - protected function createTransaction() - { - if ($this->transactions == 0) { - $this->reconnectIfMissingConnection(); - - try { - $this->getPdo()->beginTransaction(); - } catch (Throwable $e) { - $this->handleBeginTransactionException($e); - } - } elseif ($this->transactions >= 1 && $this->queryGrammar->supportsSavepoints()) { - $this->createSavepoint(); - } - } - - /** - * Create a save point within the database. - * - * @return void - * - * @throws \Throwable - */ - protected function createSavepoint() - { - $this->getPdo()->exec( - $this->queryGrammar->compileSavepoint('trans'.($this->transactions + 1)) - ); - } - - /** - * Handle an exception from a transaction beginning. - * - * @param \Throwable $e - * @return void - * - * @throws \Throwable - */ - protected function handleBeginTransactionException(Throwable $e) - { - if ($this->causedByLostConnection($e)) { - $this->reconnect(); - - $this->getPdo()->beginTransaction(); - } else { - throw $e; - } - } - - /** - * Commit the active database transaction. - * - * @return void - * - * @throws \Throwable - */ - public function commit() - { - if ($this->transactionLevel() == 1) { - $this->fireConnectionEvent('committing'); - $this->getPdo()->commit(); - } - - [$levelBeingCommitted, $this->transactions] = [ - $this->transactions, - max(0, $this->transactions - 1), - ]; - - $this->transactionsManager?->commit( - $this->getName(), $levelBeingCommitted, $this->transactions - ); - - $this->fireConnectionEvent('committed'); - } - - /** - * Handle an exception encountered when committing a transaction. - * - * @param \Throwable $e - * @param int $currentAttempt - * @param int $maxAttempts - * @return void - * - * @throws \Throwable - */ - protected function handleCommitTransactionException(Throwable $e, $currentAttempt, $maxAttempts) - { - $this->transactions = max(0, $this->transactions - 1); - - if ($this->causedByConcurrencyError($e) && $currentAttempt < $maxAttempts) { - return; - } - - if ($this->causedByLostConnection($e)) { - $this->transactions = 0; - } - - throw $e; - } - - /** - * Rollback the active database transaction. - * - * @param int|null $toLevel - * @return void - * - * @throws \Throwable - */ - public function rollBack($toLevel = null) - { - // We allow developers to rollback to a certain transaction level. We will verify - // that this given transaction level is valid before attempting to rollback to - // that level. If it's not we will just return out and not attempt anything. - $toLevel = is_null($toLevel) - ? $this->transactions - 1 - : $toLevel; - - if ($toLevel < 0 || $toLevel >= $this->transactions) { - return; - } - - // Next, we will actually perform this rollback within this database and fire the - // rollback event. We will also set the current transaction level to the given - // level that was passed into this method so it will be right from here out. - try { - $this->performRollBack($toLevel); - } catch (Throwable $e) { - $this->handleRollBackException($e); - } - - $this->transactions = $toLevel; - - $this->transactionsManager?->rollback( - $this->getName(), $this->transactions - ); - - $this->fireConnectionEvent('rollingBack'); - } - - /** - * Perform a rollback within the database. - * - * @param int $toLevel - * @return void - * - * @throws \Throwable - */ - protected function performRollBack($toLevel) - { - if ($toLevel == 0) { - $pdo = $this->getPdo(); - - if ($pdo->inTransaction()) { - $pdo->rollBack(); - } - } elseif ($this->queryGrammar->supportsSavepoints()) { - $this->getPdo()->exec( - $this->queryGrammar->compileSavepointRollBack('trans'.($toLevel + 1)) - ); - } - } - - /** - * Handle an exception from a rollback. - * - * @param \Throwable $e - * @return void - * - * @throws \Throwable - */ - protected function handleRollBackException(Throwable $e) - { - if ($this->causedByLostConnection($e)) { - $this->transactions = 0; - - $this->transactionsManager?->rollback( - $this->getName(), $this->transactions - ); - } - - throw $e; - } - - /** - * Get the number of active transactions. - * - * @return int - */ - public function transactionLevel() - { - return $this->transactions; - } - - /** - * Execute the callback after a transaction commits. - * - * @param callable $callback - * @return void - * - * @throws \RuntimeException - */ - public function afterCommit($callback) - { - if ($this->transactionsManager) { - return $this->transactionsManager->addCallback($callback); - } - - throw new RuntimeException('Transactions Manager has not been set.'); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Connectors/PostgresConnector.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Connectors/PostgresConnector.php deleted file mode 100755 index 9834d2ce..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Connectors/PostgresConnector.php +++ /dev/null @@ -1,189 +0,0 @@ - PDO::CASE_NATURAL, - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - PDO::ATTR_ORACLE_NULLS => PDO::NULL_NATURAL, - PDO::ATTR_STRINGIFY_FETCHES => false, - ]; - - /** - * Establish a database connection. - * - * @param array $config - * @return \PDO - */ - public function connect(array $config) - { - // First we'll create the basic DSN and connection instance connecting to the - // using the configuration option specified by the developer. We will also - // set the default character set on the connections to UTF-8 by default. - $connection = $this->createConnection( - $this->getDsn($config), $config, $this->getOptions($config) - ); - - $this->configureIsolationLevel($connection, $config); - - // Next, we will check to see if a timezone has been specified in this config - // and if it has we will issue a statement to modify the timezone with the - // database. Setting this DB timezone is an optional configuration item. - $this->configureTimezone($connection, $config); - - $this->configureSearchPath($connection, $config); - - $this->configureSynchronousCommit($connection, $config); - - return $connection; - } - - /** - * Set the connection transaction isolation level. - * - * @param \PDO $connection - * @param array $config - * @return void - */ - protected function configureIsolationLevel($connection, array $config) - { - if (isset($config['isolation_level'])) { - $connection->prepare("set session characteristics as transaction isolation level {$config['isolation_level']}")->execute(); - } - } - - /** - * Set the timezone on the connection. - * - * @param \PDO $connection - * @param array $config - * @return void - */ - protected function configureTimezone($connection, array $config) - { - if (isset($config['timezone'])) { - $timezone = $config['timezone']; - - $connection->prepare("set time zone '{$timezone}'")->execute(); - } - } - - /** - * Set the "search_path" on the database connection. - * - * @param \PDO $connection - * @param array $config - * @return void - */ - protected function configureSearchPath($connection, $config) - { - if (isset($config['search_path']) || isset($config['schema'])) { - $searchPath = $this->quoteSearchPath( - $this->parseSearchPath($config['search_path'] ?? $config['schema']) - ); - - $connection->prepare("set search_path to {$searchPath}")->execute(); - } - } - - /** - * Format the search path for the DSN. - * - * @param array $searchPath - * @return string - */ - protected function quoteSearchPath($searchPath) - { - return count($searchPath) === 1 ? '"'.$searchPath[0].'"' : '"'.implode('", "', $searchPath).'"'; - } - - /** - * Create a DSN string from a configuration. - * - * @param array $config - * @return string - */ - protected function getDsn(array $config) - { - // First we will create the basic DSN setup as well as the port if it is in - // in the configuration options. This will give us the basic DSN we will - // need to establish the PDO connections and return them back for use. - extract($config, EXTR_SKIP); - - $host = isset($host) ? "host={$host};" : ''; - - // Sometimes - users may need to connect to a database that has a different - // name than the database used for "information_schema" queries. This is - // typically the case if using "pgbouncer" type software when pooling. - $database = $connect_via_database ?? $database; - $port = $connect_via_port ?? $port ?? null; - - $dsn = "pgsql:{$host}dbname='{$database}'"; - - // If a port was specified, we will add it to this Postgres DSN connections - // format. Once we have done that we are ready to return this connection - // string back out for usage, as this has been fully constructed here. - if (! is_null($port)) { - $dsn .= ";port={$port}"; - } - - if (isset($charset)) { - $dsn .= ";client_encoding='{$charset}'"; - } - - // Postgres allows an application_name to be set by the user and this name is - // used to when monitoring the application with pg_stat_activity. So we'll - // determine if the option has been specified and run a statement if so. - if (isset($application_name)) { - $dsn .= ";application_name='".str_replace("'", "\'", $application_name)."'"; - } - - return $this->addSslOptions($dsn, $config); - } - - /** - * Add the SSL options to the DSN. - * - * @param string $dsn - * @param array $config - * @return string - */ - protected function addSslOptions($dsn, array $config) - { - foreach (['sslmode', 'sslcert', 'sslkey', 'sslrootcert'] as $option) { - if (isset($config[$option])) { - $dsn .= ";{$option}={$config[$option]}"; - } - } - - return $dsn; - } - - /** - * Configure the synchronous_commit setting. - * - * @param \PDO $connection - * @param array $config - * @return void - */ - protected function configureSynchronousCommit($connection, array $config) - { - if (! isset($config['synchronous_commit'])) { - return; - } - - $connection->prepare("set synchronous_commit to '{$config['synchronous_commit']}'")->execute(); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Console/DatabaseInspectionCommand.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Console/DatabaseInspectionCommand.php deleted file mode 100644 index 8bcf1f82..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Console/DatabaseInspectionCommand.php +++ /dev/null @@ -1,248 +0,0 @@ - 'string', - 'citext' => 'string', - 'enum' => 'string', - 'geometry' => 'string', - 'geomcollection' => 'string', - 'linestring' => 'string', - 'ltree' => 'string', - 'multilinestring' => 'string', - 'multipoint' => 'string', - 'multipolygon' => 'string', - 'point' => 'string', - 'polygon' => 'string', - 'sysname' => 'string', - ]; - - /** - * The Composer instance. - * - * @var \Illuminate\Support\Composer - */ - protected $composer; - - /** - * Create a new command instance. - * - * @param \Illuminate\Support\Composer|null $composer - * @return void - */ - public function __construct(?Composer $composer = null) - { - parent::__construct(); - - $this->composer = $composer ?? $this->laravel->make(Composer::class); - } - - /** - * Register the custom Doctrine type mappings for inspection commands. - * - * @param \Doctrine\DBAL\Platforms\AbstractPlatform $platform - * @return void - */ - protected function registerTypeMappings(AbstractPlatform $platform) - { - foreach ($this->typeMappings as $type => $value) { - $platform->registerDoctrineTypeMapping($type, $value); - } - } - - /** - * Get a human-readable platform name for the given platform. - * - * @param \Doctrine\DBAL\Platforms\AbstractPlatform $platform - * @param string $database - * @return string - */ - protected function getPlatformName(AbstractPlatform $platform, $database) - { - return match (class_basename($platform)) { - 'MySQLPlatform' => 'MySQL <= 5', - 'MySQL57Platform' => 'MySQL 5.7', - 'MySQL80Platform' => 'MySQL 8', - 'PostgreSQL100Platform', 'PostgreSQLPlatform' => 'Postgres', - 'SqlitePlatform' => 'SQLite', - 'SQLServerPlatform' => 'SQL Server', - 'SQLServer2012Platform' => 'SQL Server 2012', - default => $database, - }; - } - - /** - * Get the size of a table in bytes. - * - * @param \Illuminate\Database\ConnectionInterface $connection - * @param string $table - * @return int|null - */ - protected function getTableSize(ConnectionInterface $connection, string $table) - { - return match (true) { - $connection instanceof MySqlConnection => $this->getMySQLTableSize($connection, $table), - $connection instanceof PostgresConnection => $this->getPostgresTableSize($connection, $table), - $connection instanceof SQLiteConnection => $this->getSqliteTableSize($connection, $table), - default => null, - }; - } - - /** - * Get the size of a MySQL table in bytes. - * - * @param \Illuminate\Database\ConnectionInterface $connection - * @param string $table - * @return mixed - */ - protected function getMySQLTableSize(ConnectionInterface $connection, string $table) - { - $result = $connection->selectOne('SELECT (data_length + index_length) AS size FROM information_schema.TABLES WHERE table_schema = ? AND table_name = ?', [ - $connection->getDatabaseName(), - $table, - ]); - - return Arr::wrap((array) $result)['size']; - } - - /** - * Get the size of a Postgres table in bytes. - * - * @param \Illuminate\Database\ConnectionInterface $connection - * @param string $table - * @return mixed - */ - protected function getPostgresTableSize(ConnectionInterface $connection, string $table) - { - $result = $connection->selectOne('SELECT pg_total_relation_size(?) AS size;', [ - $table, - ]); - - return Arr::wrap((array) $result)['size']; - } - - /** - * Get the size of a SQLite table in bytes. - * - * @param \Illuminate\Database\ConnectionInterface $connection - * @param string $table - * @return mixed - */ - protected function getSqliteTableSize(ConnectionInterface $connection, string $table) - { - try { - $result = $connection->selectOne('SELECT SUM(pgsize) AS size FROM dbstat WHERE name=?', [ - $table, - ]); - - return Arr::wrap((array) $result)['size']; - } catch (QueryException) { - return null; - } - } - - /** - * Get the number of open connections for a database. - * - * @param \Illuminate\Database\ConnectionInterface $connection - * @return int|null - */ - protected function getConnectionCount(ConnectionInterface $connection) - { - $result = match (true) { - $connection instanceof MySqlConnection => $connection->selectOne('show status where variable_name = "threads_connected"'), - $connection instanceof PostgresConnection => $connection->selectOne('select count(*) AS "Value" from pg_stat_activity'), - $connection instanceof SqlServerConnection => $connection->selectOne('SELECT COUNT(*) Value FROM sys.dm_exec_sessions WHERE status = ?', ['running']), - default => null, - }; - - if (! $result) { - return null; - } - - return Arr::wrap((array) $result)['Value']; - } - - /** - * Get the connection configuration details for the given connection. - * - * @param string $database - * @return array - */ - protected function getConfigFromDatabase($database) - { - $database ??= config('database.default'); - - return Arr::except(config('database.connections.'.$database), ['password']); - } - - /** - * Ensure the dependencies for the database commands are available. - * - * @return bool - */ - protected function ensureDependenciesExist() - { - return tap(interface_exists('Doctrine\DBAL\Driver'), function ($dependenciesExist) { - if (! $dependenciesExist && confirm('Inspecting database information requires the Doctrine DBAL (doctrine/dbal) package. Would you like to install it?', default: false)) { - $this->installDependencies(); - } - }); - } - - /** - * Install the command's dependencies. - * - * @return void - * - * @throws \Symfony\Component\Process\Exception\ProcessSignaledException - */ - protected function installDependencies() - { - $command = collect($this->composer->findComposer()) - ->push('require doctrine/dbal:^3.5.1') - ->implode(' '); - - $process = Process::fromShellCommandline($command, null, null, null, null); - - if ('\\' !== DIRECTORY_SEPARATOR && file_exists('/dev/tty') && is_readable('/dev/tty')) { - try { - $process->setTty(true); - } catch (RuntimeException $e) { - $this->components->warn($e->getMessage()); - } - } - - try { - $process->run(fn ($type, $line) => $this->output->write($line)); - } catch (ProcessSignaledException $e) { - if (extension_loaded('pcntl') && $e->getSignal() !== SIGINT) { - throw $e; - } - } - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/DBAL/TimestampType.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/DBAL/TimestampType.php deleted file mode 100644 index e344dd91..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/DBAL/TimestampType.php +++ /dev/null @@ -1,112 +0,0 @@ - $this->getMySqlPlatformSQLDeclaration($column), - PostgreSQLPlatform::class, - PostgreSQL94Platform::class, - PostgreSQL100Platform::class, - PostgreSQL120Platform::class => $this->getPostgresPlatformSQLDeclaration($column), - SQLServerPlatform::class, - SQLServer2012Platform::class => $this->getSqlServerPlatformSQLDeclaration($column), - SqlitePlatform::class => 'DATETIME', - default => throw new DBALException('Invalid platform: '.substr(strrchr(get_class($platform), '\\'), 1)), - }; - } - - /** - * Get the SQL declaration for MySQL. - * - * @param array $column - * @return string - */ - protected function getMySqlPlatformSQLDeclaration(array $column): string - { - $columnType = 'TIMESTAMP'; - - if ($column['precision']) { - $columnType = 'TIMESTAMP('.min((int) $column['precision'], 6).')'; - } - - $notNull = $column['notnull'] ?? false; - - if (! $notNull) { - return $columnType.' NULL'; - } - - return $columnType; - } - - /** - * Get the SQL declaration for PostgreSQL. - * - * @param array $column - * @return string - */ - protected function getPostgresPlatformSQLDeclaration(array $column): string - { - return 'TIMESTAMP('.min((int) $column['precision'], 6).')'; - } - - /** - * Get the SQL declaration for SQL Server. - * - * @param array $column - * @return string - */ - protected function getSqlServerPlatformSQLDeclaration(array $column): string - { - return $column['precision'] ?? false - ? 'DATETIME2('.min((int) $column['precision'], 7).')' - : 'DATETIME'; - } - - /** - * {@inheritdoc} - * - * @return string - */ - public function getName() - { - return 'timestamp'; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/DetectsLostConnections.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/DetectsLostConnections.php deleted file mode 100644 index 8cb1187a..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/DetectsLostConnections.php +++ /dev/null @@ -1,78 +0,0 @@ -getMessage(); - - return Str::contains($message, [ - 'server has gone away', - 'Server has gone away', - 'no connection to the server', - 'Lost connection', - 'is dead or not enabled', - 'Error while sending', - 'decryption failed or bad record mac', - 'server closed the connection unexpectedly', - 'SSL connection has been closed unexpectedly', - 'Error writing data to the connection', - 'Resource deadlock avoided', - 'Transaction() on null', - 'child connection forced to terminate due to client_idle_limit', - 'query_wait_timeout', - 'reset by peer', - 'Physical connection is not usable', - 'TCP Provider: Error code 0x68', - 'ORA-03114', - 'Packets out of order. Expected', - 'Adaptive Server connection failed', - 'Communication link failure', - 'connection is no longer usable', - 'Login timeout expired', - 'SQLSTATE[HY000] [2002] Connection refused', - 'running with the --read-only option so it cannot execute this statement', - 'The connection is broken and recovery is not possible. The connection is marked by the client driver as unrecoverable. No attempt was made to restore the connection.', - 'SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Try again', - 'SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known', - 'SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for', - 'SQLSTATE[HY000]: General error: 7 SSL SYSCALL error: EOF detected', - 'SQLSTATE[HY000] [2002] Connection timed out', - 'SSL: Connection timed out', - 'SQLSTATE[HY000]: General error: 1105 The last transaction was aborted due to Seamless Scaling. Please retry.', - 'Temporary failure in name resolution', - 'SSL: Broken pipe', - 'SQLSTATE[08S01]: Communication link failure', - 'SQLSTATE[08006] [7] could not connect to server: Connection refused Is the server running on host', - 'SQLSTATE[HY000]: General error: 7 SSL SYSCALL error: No route to host', - 'The client was disconnected by the server because of inactivity. See wait_timeout and interactive_timeout for configuring this behavior.', - 'SQLSTATE[08006] [7] could not translate host name', - 'TCP Provider: Error code 0x274C', - 'SQLSTATE[HY000] [2002] No such file or directory', - 'SSL: Operation timed out', - 'Reason: Server is in script upgrade mode. Only administrator can connect at this time.', - 'Unknown $curl_error_code: 77', - 'SSL: Handshake timed out', - 'SQLSTATE[08006] [7] SSL error: sslv3 alert unexpected message', - 'SQLSTATE[08006] [7] unrecognized SSL error code:', - 'SQLSTATE[HY000] [2002] No connection could be made because the target machine actively refused it', - 'SQLSTATE[HY000] [2002] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond', - 'SQLSTATE[HY000] [2002] Network is unreachable', - 'SQLSTATE[HY000] [2002] The requested address is not valid in its context', - 'SQLSTATE[HY000] [2002] A socket operation was attempted to an unreachable network', - 'SQLSTATE[HY000]: General error: 3989', - 'went away', - ]); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php deleted file mode 100755 index b695b338..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php +++ /dev/null @@ -1,2063 +0,0 @@ -query = $query; - } - - /** - * Create and return an un-saved model instance. - * - * @param array $attributes - * @return \Illuminate\Database\Eloquent\Model|static - */ - public function make(array $attributes = []) - { - return $this->newModelInstance($attributes); - } - - /** - * Register a new global scope. - * - * @param string $identifier - * @param \Illuminate\Database\Eloquent\Scope|\Closure $scope - * @return $this - */ - public function withGlobalScope($identifier, $scope) - { - $this->scopes[$identifier] = $scope; - - if (method_exists($scope, 'extend')) { - $scope->extend($this); - } - - return $this; - } - - /** - * Remove a registered global scope. - * - * @param \Illuminate\Database\Eloquent\Scope|string $scope - * @return $this - */ - public function withoutGlobalScope($scope) - { - if (! is_string($scope)) { - $scope = get_class($scope); - } - - unset($this->scopes[$scope]); - - $this->removedScopes[] = $scope; - - return $this; - } - - /** - * Remove all or passed registered global scopes. - * - * @param array|null $scopes - * @return $this - */ - public function withoutGlobalScopes(?array $scopes = null) - { - if (! is_array($scopes)) { - $scopes = array_keys($this->scopes); - } - - foreach ($scopes as $scope) { - $this->withoutGlobalScope($scope); - } - - return $this; - } - - /** - * Get an array of global scopes that were removed from the query. - * - * @return array - */ - public function removedScopes() - { - return $this->removedScopes; - } - - /** - * Add a where clause on the primary key to the query. - * - * @param mixed $id - * @return $this - */ - public function whereKey($id) - { - if ($id instanceof Model) { - $id = $id->getKey(); - } - - if (is_array($id) || $id instanceof Arrayable) { - if (in_array($this->model->getKeyType(), ['int', 'integer'])) { - $this->query->whereIntegerInRaw($this->model->getQualifiedKeyName(), $id); - } else { - $this->query->whereIn($this->model->getQualifiedKeyName(), $id); - } - - return $this; - } - - if ($id !== null && $this->model->getKeyType() === 'string') { - $id = (string) $id; - } - - return $this->where($this->model->getQualifiedKeyName(), '=', $id); - } - - /** - * Add a where clause on the primary key to the query. - * - * @param mixed $id - * @return $this - */ - public function whereKeyNot($id) - { - if ($id instanceof Model) { - $id = $id->getKey(); - } - - if (is_array($id) || $id instanceof Arrayable) { - if (in_array($this->model->getKeyType(), ['int', 'integer'])) { - $this->query->whereIntegerNotInRaw($this->model->getQualifiedKeyName(), $id); - } else { - $this->query->whereNotIn($this->model->getQualifiedKeyName(), $id); - } - - return $this; - } - - if ($id !== null && $this->model->getKeyType() === 'string') { - $id = (string) $id; - } - - return $this->where($this->model->getQualifiedKeyName(), '!=', $id); - } - - /** - * Add a basic where clause to the query. - * - * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column - * @param mixed $operator - * @param mixed $value - * @param string $boolean - * @return $this - */ - public function where($column, $operator = null, $value = null, $boolean = 'and') - { - if ($column instanceof Closure && is_null($operator)) { - $column($query = $this->model->newQueryWithoutRelationships()); - - $this->query->addNestedWhereQuery($query->getQuery(), $boolean); - } else { - $this->query->where(...func_get_args()); - } - - return $this; - } - - /** - * Add a basic where clause to the query, and return the first result. - * - * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column - * @param mixed $operator - * @param mixed $value - * @param string $boolean - * @return \Illuminate\Database\Eloquent\Model|static|null - */ - public function firstWhere($column, $operator = null, $value = null, $boolean = 'and') - { - return $this->where(...func_get_args())->first(); - } - - /** - * Add an "or where" clause to the query. - * - * @param \Closure|array|string|\Illuminate\Contracts\Database\Query\Expression $column - * @param mixed $operator - * @param mixed $value - * @return $this - */ - public function orWhere($column, $operator = null, $value = null) - { - [$value, $operator] = $this->query->prepareValueAndOperator( - $value, $operator, func_num_args() === 2 - ); - - return $this->where($column, $operator, $value, 'or'); - } - - /** - * Add a basic "where not" clause to the query. - * - * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column - * @param mixed $operator - * @param mixed $value - * @param string $boolean - * @return $this - */ - public function whereNot($column, $operator = null, $value = null, $boolean = 'and') - { - return $this->where($column, $operator, $value, $boolean.' not'); - } - - /** - * Add an "or where not" clause to the query. - * - * @param \Closure|array|string|\Illuminate\Contracts\Database\Query\Expression $column - * @param mixed $operator - * @param mixed $value - * @return $this - */ - public function orWhereNot($column, $operator = null, $value = null) - { - return $this->whereNot($column, $operator, $value, 'or'); - } - - /** - * Add an "order by" clause for a timestamp to the query. - * - * @param string|\Illuminate\Contracts\Database\Query\Expression $column - * @return $this - */ - public function latest($column = null) - { - if (is_null($column)) { - $column = $this->model->getCreatedAtColumn() ?? 'created_at'; - } - - $this->query->latest($column); - - return $this; - } - - /** - * Add an "order by" clause for a timestamp to the query. - * - * @param string|\Illuminate\Contracts\Database\Query\Expression $column - * @return $this - */ - public function oldest($column = null) - { - if (is_null($column)) { - $column = $this->model->getCreatedAtColumn() ?? 'created_at'; - } - - $this->query->oldest($column); - - return $this; - } - - /** - * Create a collection of models from plain arrays. - * - * @param array $items - * @return \Illuminate\Database\Eloquent\Collection - */ - public function hydrate(array $items) - { - $instance = $this->newModelInstance(); - - return $instance->newCollection(array_map(function ($item) use ($items, $instance) { - $model = $instance->newFromBuilder($item); - - if (count($items) > 1) { - $model->preventsLazyLoading = Model::preventsLazyLoading(); - } - - return $model; - }, $items)); - } - - /** - * Create a collection of models from a raw query. - * - * @param string $query - * @param array $bindings - * @return \Illuminate\Database\Eloquent\Collection - */ - public function fromQuery($query, $bindings = []) - { - return $this->hydrate( - $this->query->getConnection()->select($query, $bindings) - ); - } - - /** - * Find a model by its primary key. - * - * @param mixed $id - * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|static[]|static|null - */ - public function find($id, $columns = ['*']) - { - if (is_array($id) || $id instanceof Arrayable) { - return $this->findMany($id, $columns); - } - - return $this->whereKey($id)->first($columns); - } - - /** - * Find multiple models by their primary keys. - * - * @param \Illuminate\Contracts\Support\Arrayable|array $ids - * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Collection - */ - public function findMany($ids, $columns = ['*']) - { - $ids = $ids instanceof Arrayable ? $ids->toArray() : $ids; - - if (empty($ids)) { - return $this->model->newCollection(); - } - - return $this->whereKey($ids)->get($columns); - } - - /** - * Find a model by its primary key or throw an exception. - * - * @param mixed $id - * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|static|static[] - * - * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> - */ - public function findOrFail($id, $columns = ['*']) - { - $result = $this->find($id, $columns); - - $id = $id instanceof Arrayable ? $id->toArray() : $id; - - if (is_array($id)) { - if (count($result) !== count(array_unique($id))) { - throw (new ModelNotFoundException)->setModel( - get_class($this->model), array_diff($id, $result->modelKeys()) - ); - } - - return $result; - } - - if (is_null($result)) { - throw (new ModelNotFoundException)->setModel( - get_class($this->model), $id - ); - } - - return $result; - } - - /** - * Find a model by its primary key or return fresh model instance. - * - * @param mixed $id - * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Model|static - */ - public function findOrNew($id, $columns = ['*']) - { - if (! is_null($model = $this->find($id, $columns))) { - return $model; - } - - return $this->newModelInstance(); - } - - /** - * Find a model by its primary key or call a callback. - * - * @param mixed $id - * @param \Closure|array|string $columns - * @param \Closure|null $callback - * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|static[]|static|mixed - */ - public function findOr($id, $columns = ['*'], ?Closure $callback = null) - { - if ($columns instanceof Closure) { - $callback = $columns; - - $columns = ['*']; - } - - if (! is_null($model = $this->find($id, $columns))) { - return $model; - } - - return $callback(); - } - - /** - * Get the first record matching the attributes or instantiate it. - * - * @param array $attributes - * @param array $values - * @return \Illuminate\Database\Eloquent\Model|static - */ - public function firstOrNew(array $attributes = [], array $values = []) - { - if (! is_null($instance = $this->where($attributes)->first())) { - return $instance; - } - - return $this->newModelInstance(array_merge($attributes, $values)); - } - - /** - * Get the first record matching the attributes. If the record is not found, create it. - * - * @param array $attributes - * @param array $values - * @return \Illuminate\Database\Eloquent\Model|static - */ - public function firstOrCreate(array $attributes = [], array $values = []) - { - if (! is_null($instance = (clone $this)->where($attributes)->first())) { - return $instance; - } - - return $this->createOrFirst($attributes, $values); - } - - /** - * Attempt to create the record. If a unique constraint violation occurs, attempt to find the matching record. - * - * @param array $attributes - * @param array $values - * @return \Illuminate\Database\Eloquent\Model|static - */ - public function createOrFirst(array $attributes = [], array $values = []) - { - try { - return $this->withSavepointIfNeeded(fn () => $this->create(array_merge($attributes, $values))); - } catch (UniqueConstraintViolationException $e) { - return $this->useWritePdo()->where($attributes)->first() ?? throw $e; - } - } - - /** - * Create or update a record matching the attributes, and fill it with values. - * - * @param array $attributes - * @param array $values - * @return \Illuminate\Database\Eloquent\Model|static - */ - public function updateOrCreate(array $attributes, array $values = []) - { - return tap($this->firstOrCreate($attributes, $values), function ($instance) use ($values) { - if (! $instance->wasRecentlyCreated) { - $instance->fill($values)->save(); - } - }); - } - - /** - * Execute the query and get the first result or throw an exception. - * - * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Model|static - * - * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> - */ - public function firstOrFail($columns = ['*']) - { - if (! is_null($model = $this->first($columns))) { - return $model; - } - - throw (new ModelNotFoundException)->setModel(get_class($this->model)); - } - - /** - * Execute the query and get the first result or call a callback. - * - * @param \Closure|array|string $columns - * @param \Closure|null $callback - * @return \Illuminate\Database\Eloquent\Model|static|mixed - */ - public function firstOr($columns = ['*'], ?Closure $callback = null) - { - if ($columns instanceof Closure) { - $callback = $columns; - - $columns = ['*']; - } - - if (! is_null($model = $this->first($columns))) { - return $model; - } - - return $callback(); - } - - /** - * Execute the query and get the first result if it's the sole matching record. - * - * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Model - * - * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> - * @throws \Illuminate\Database\MultipleRecordsFoundException - */ - public function sole($columns = ['*']) - { - try { - return $this->baseSole($columns); - } catch (RecordsNotFoundException) { - throw (new ModelNotFoundException)->setModel(get_class($this->model)); - } - } - - /** - * Get a single column's value from the first result of a query. - * - * @param string|\Illuminate\Contracts\Database\Query\Expression $column - * @return mixed - */ - public function value($column) - { - if ($result = $this->first([$column])) { - $column = $column instanceof Expression ? $column->getValue($this->getGrammar()) : $column; - - return $result->{Str::afterLast($column, '.')}; - } - } - - /** - * Get a single column's value from the first result of a query if it's the sole matching record. - * - * @param string|\Illuminate\Contracts\Database\Query\Expression $column - * @return mixed - * - * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> - * @throws \Illuminate\Database\MultipleRecordsFoundException - */ - public function soleValue($column) - { - $column = $column instanceof Expression ? $column->getValue($this->getGrammar()) : $column; - - return $this->sole([$column])->{Str::afterLast($column, '.')}; - } - - /** - * Get a single column's value from the first result of the query or throw an exception. - * - * @param string|\Illuminate\Contracts\Database\Query\Expression $column - * @return mixed - * - * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> - */ - public function valueOrFail($column) - { - $column = $column instanceof Expression ? $column->getValue($this->getGrammar()) : $column; - - return $this->firstOrFail([$column])->{Str::afterLast($column, '.')}; - } - - /** - * Execute the query as a "select" statement. - * - * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Collection|static[] - */ - public function get($columns = ['*']) - { - $builder = $this->applyScopes(); - - // If we actually found models we will also eager load any relationships that - // have been specified as needing to be eager loaded, which will solve the - // n+1 query issue for the developers to avoid running a lot of queries. - if (count($models = $builder->getModels($columns)) > 0) { - $models = $builder->eagerLoadRelations($models); - } - - return $builder->getModel()->newCollection($models); - } - - /** - * Get the hydrated models without eager loading. - * - * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Model[]|static[] - */ - public function getModels($columns = ['*']) - { - return $this->model->hydrate( - $this->query->get($columns)->all() - )->all(); - } - - /** - * Eager load the relationships for the models. - * - * @param array $models - * @return array - */ - public function eagerLoadRelations(array $models) - { - foreach ($this->eagerLoad as $name => $constraints) { - // For nested eager loads we'll skip loading them here and they will be set as an - // eager load on the query to retrieve the relation so that they will be eager - // loaded on that query, because that is where they get hydrated as models. - if (! str_contains($name, '.')) { - $models = $this->eagerLoadRelation($models, $name, $constraints); - } - } - - return $models; - } - - /** - * Eagerly load the relationship on a set of models. - * - * @param array $models - * @param string $name - * @param \Closure $constraints - * @return array - */ - protected function eagerLoadRelation(array $models, $name, Closure $constraints) - { - // First we will "back up" the existing where conditions on the query so we can - // add our eager constraints. Then we will merge the wheres that were on the - // query back to it in order that any where conditions might be specified. - $relation = $this->getRelation($name); - - $relation->addEagerConstraints($models); - - $constraints($relation); - - // Once we have the results, we just match those back up to their parent models - // using the relationship instance. Then we just return the finished arrays - // of models which have been eagerly hydrated and are readied for return. - return $relation->match( - $relation->initRelation($models, $name), - $relation->getEager(), $name - ); - } - - /** - * Get the relation instance for the given relation name. - * - * @param string $name - * @return \Illuminate\Database\Eloquent\Relations\Relation - */ - public function getRelation($name) - { - // We want to run a relationship query without any constrains so that we will - // not have to remove these where clauses manually which gets really hacky - // and error prone. We don't want constraints because we add eager ones. - $relation = Relation::noConstraints(function () use ($name) { - try { - return $this->getModel()->newInstance()->$name(); - } catch (BadMethodCallException) { - throw RelationNotFoundException::make($this->getModel(), $name); - } - }); - - $nested = $this->relationsNestedUnder($name); - - // If there are nested relationships set on the query, we will put those onto - // the query instances so that they can be handled after this relationship - // is loaded. In this way they will all trickle down as they are loaded. - if (count($nested) > 0) { - $relation->getQuery()->with($nested); - } - - return $relation; - } - - /** - * Get the deeply nested relations for a given top-level relation. - * - * @param string $relation - * @return array - */ - protected function relationsNestedUnder($relation) - { - $nested = []; - - // We are basically looking for any relationships that are nested deeper than - // the given top-level relationship. We will just check for any relations - // that start with the given top relations and adds them to our arrays. - foreach ($this->eagerLoad as $name => $constraints) { - if ($this->isNestedUnder($relation, $name)) { - $nested[substr($name, strlen($relation.'.'))] = $constraints; - } - } - - return $nested; - } - - /** - * Determine if the relationship is nested. - * - * @param string $relation - * @param string $name - * @return bool - */ - protected function isNestedUnder($relation, $name) - { - return str_contains($name, '.') && str_starts_with($name, $relation.'.'); - } - - /** - * Get a lazy collection for the given query. - * - * @return \Illuminate\Support\LazyCollection - */ - public function cursor() - { - return $this->applyScopes()->query->cursor()->map(function ($record) { - return $this->newModelInstance()->newFromBuilder($record); - }); - } - - /** - * Add a generic "order by" clause if the query doesn't already have one. - * - * @return void - */ - protected function enforceOrderBy() - { - if (empty($this->query->orders) && empty($this->query->unionOrders)) { - $this->orderBy($this->model->getQualifiedKeyName(), 'asc'); - } - } - - /** - * Get a collection with the values of a given column. - * - * @param string|\Illuminate\Contracts\Database\Query\Expression $column - * @param string|null $key - * @return \Illuminate\Support\Collection - */ - public function pluck($column, $key = null) - { - $results = $this->toBase()->pluck($column, $key); - - $column = $column instanceof Expression ? $column->getValue($this->getGrammar()) : $column; - - // If the model has a mutator for the requested column, we will spin through - // the results and mutate the values so that the mutated version of these - // columns are returned as you would expect from these Eloquent models. - if (! $this->model->hasGetMutator($column) && - ! $this->model->hasCast($column) && - ! in_array($column, $this->model->getDates())) { - return $results; - } - - return $results->map(function ($value) use ($column) { - return $this->model->newFromBuilder([$column => $value])->{$column}; - }); - } - - /** - * Paginate the given query. - * - * @param int|null|\Closure $perPage - * @param array|string $columns - * @param string $pageName - * @param int|null $page - * @param \Closure|int|null $total - * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator - * - * @throws \InvalidArgumentException - */ - public function paginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null) - { - $page = $page ?: Paginator::resolveCurrentPage($pageName); - - $total = func_num_args() === 5 ? value(func_get_arg(4)) : $this->toBase()->getCountForPagination(); - - $perPage = ($perPage instanceof Closure - ? $perPage($total) - : $perPage - ) ?: $this->model->getPerPage(); - - $results = $total - ? $this->forPage($page, $perPage)->get($columns) - : $this->model->newCollection(); - - return $this->paginator($results, $total, $perPage, $page, [ - 'path' => Paginator::resolveCurrentPath(), - 'pageName' => $pageName, - ]); - } - - /** - * Paginate the given query into a simple paginator. - * - * @param int|null $perPage - * @param array|string $columns - * @param string $pageName - * @param int|null $page - * @return \Illuminate\Contracts\Pagination\Paginator - */ - public function simplePaginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null) - { - $page = $page ?: Paginator::resolveCurrentPage($pageName); - - $perPage = $perPage ?: $this->model->getPerPage(); - - // Next we will set the limit and offset for this query so that when we get the - // results we get the proper section of results. Then, we'll create the full - // paginator instances for these results with the given page and per page. - $this->skip(($page - 1) * $perPage)->take($perPage + 1); - - return $this->simplePaginator($this->get($columns), $perPage, $page, [ - 'path' => Paginator::resolveCurrentPath(), - 'pageName' => $pageName, - ]); - } - - /** - * Paginate the given query into a cursor paginator. - * - * @param int|null $perPage - * @param array|string $columns - * @param string $cursorName - * @param \Illuminate\Pagination\Cursor|string|null $cursor - * @return \Illuminate\Contracts\Pagination\CursorPaginator - */ - public function cursorPaginate($perPage = null, $columns = ['*'], $cursorName = 'cursor', $cursor = null) - { - $perPage = $perPage ?: $this->model->getPerPage(); - - return $this->paginateUsingCursor($perPage, $columns, $cursorName, $cursor); - } - - /** - * Ensure the proper order by required for cursor pagination. - * - * @param bool $shouldReverse - * @return \Illuminate\Support\Collection - */ - protected function ensureOrderForCursorPagination($shouldReverse = false) - { - if (empty($this->query->orders) && empty($this->query->unionOrders)) { - $this->enforceOrderBy(); - } - - $reverseDirection = function ($order) { - if (! isset($order['direction'])) { - return $order; - } - - $order['direction'] = $order['direction'] === 'asc' ? 'desc' : 'asc'; - - return $order; - }; - - if ($shouldReverse) { - $this->query->orders = collect($this->query->orders)->map($reverseDirection)->toArray(); - $this->query->unionOrders = collect($this->query->unionOrders)->map($reverseDirection)->toArray(); - } - - $orders = ! empty($this->query->unionOrders) ? $this->query->unionOrders : $this->query->orders; - - return collect($orders) - ->filter(fn ($order) => Arr::has($order, 'direction')) - ->values(); - } - - /** - * Save a new model and return the instance. - * - * @param array $attributes - * @return \Illuminate\Database\Eloquent\Model|$this - */ - public function create(array $attributes = []) - { - return tap($this->newModelInstance($attributes), function ($instance) { - $instance->save(); - }); - } - - /** - * Save a new model and return the instance. Allow mass-assignment. - * - * @param array $attributes - * @return \Illuminate\Database\Eloquent\Model|$this - */ - public function forceCreate(array $attributes) - { - return $this->model->unguarded(function () use ($attributes) { - return $this->newModelInstance()->create($attributes); - }); - } - - /** - * Save a new model instance with mass assignment without raising model events. - * - * @param array $attributes - * @return \Illuminate\Database\Eloquent\Model|$this - */ - public function forceCreateQuietly(array $attributes = []) - { - return Model::withoutEvents(fn () => $this->forceCreate($attributes)); - } - - /** - * Update records in the database. - * - * @param array $values - * @return int - */ - public function update(array $values) - { - return $this->toBase()->update($this->addUpdatedAtColumn($values)); - } - - /** - * Insert new records or update the existing ones. - * - * @param array $values - * @param array|string $uniqueBy - * @param array|null $update - * @return int - */ - public function upsert(array $values, $uniqueBy, $update = null) - { - if (empty($values)) { - return 0; - } - - if (! is_array(reset($values))) { - $values = [$values]; - } - - if (is_null($update)) { - $update = array_keys(reset($values)); - } - - return $this->toBase()->upsert( - $this->addTimestampsToUpsertValues($this->addUniqueIdsToUpsertValues($values)), - $uniqueBy, - $this->addUpdatedAtToUpsertColumns($update) - ); - } - - /** - * Update the column's update timestamp. - * - * @param string|null $column - * @return int|false - */ - public function touch($column = null) - { - $time = $this->model->freshTimestamp(); - - if ($column) { - return $this->toBase()->update([$column => $time]); - } - - $column = $this->model->getUpdatedAtColumn(); - - if (! $this->model->usesTimestamps() || is_null($column)) { - return false; - } - - return $this->toBase()->update([$column => $time]); - } - - /** - * Increment a column's value by a given amount. - * - * @param string|\Illuminate\Contracts\Database\Query\Expression $column - * @param float|int $amount - * @param array $extra - * @return int - */ - public function increment($column, $amount = 1, array $extra = []) - { - return $this->toBase()->increment( - $column, $amount, $this->addUpdatedAtColumn($extra) - ); - } - - /** - * Decrement a column's value by a given amount. - * - * @param string|\Illuminate\Contracts\Database\Query\Expression $column - * @param float|int $amount - * @param array $extra - * @return int - */ - public function decrement($column, $amount = 1, array $extra = []) - { - return $this->toBase()->decrement( - $column, $amount, $this->addUpdatedAtColumn($extra) - ); - } - - /** - * Add the "updated at" column to an array of values. - * - * @param array $values - * @return array - */ - protected function addUpdatedAtColumn(array $values) - { - if (! $this->model->usesTimestamps() || - is_null($this->model->getUpdatedAtColumn())) { - return $values; - } - - $column = $this->model->getUpdatedAtColumn(); - - if (! array_key_exists($column, $values)) { - $timestamp = $this->model->freshTimestampString(); - - if ( - $this->model->hasSetMutator($column) - || $this->model->hasAttributeSetMutator($column) - || $this->model->hasCast($column) - ) { - $timestamp = $this->model->newInstance() - ->forceFill([$column => $timestamp]) - ->getAttributes()[$column] ?? $timestamp; - } - - $values = array_merge([$column => $timestamp], $values); - } - - $segments = preg_split('/\s+as\s+/i', $this->query->from); - - $qualifiedColumn = end($segments).'.'.$column; - - $values[$qualifiedColumn] = Arr::get($values, $qualifiedColumn, $values[$column]); - - unset($values[$column]); - - return $values; - } - - /** - * Add unique IDs to the inserted values. - * - * @param array $values - * @return array - */ - protected function addUniqueIdsToUpsertValues(array $values) - { - if (! $this->model->usesUniqueIds()) { - return $values; - } - - foreach ($this->model->uniqueIds() as $uniqueIdAttribute) { - foreach ($values as &$row) { - if (! array_key_exists($uniqueIdAttribute, $row)) { - $row = array_merge([$uniqueIdAttribute => $this->model->newUniqueId()], $row); - } - } - } - - return $values; - } - - /** - * Add timestamps to the inserted values. - * - * @param array $values - * @return array - */ - protected function addTimestampsToUpsertValues(array $values) - { - if (! $this->model->usesTimestamps()) { - return $values; - } - - $timestamp = $this->model->freshTimestampString(); - - $columns = array_filter([ - $this->model->getCreatedAtColumn(), - $this->model->getUpdatedAtColumn(), - ]); - - foreach ($columns as $column) { - foreach ($values as &$row) { - $row = array_merge([$column => $timestamp], $row); - } - } - - return $values; - } - - /** - * Add the "updated at" column to the updated columns. - * - * @param array $update - * @return array - */ - protected function addUpdatedAtToUpsertColumns(array $update) - { - if (! $this->model->usesTimestamps()) { - return $update; - } - - $column = $this->model->getUpdatedAtColumn(); - - if (! is_null($column) && - ! array_key_exists($column, $update) && - ! in_array($column, $update)) { - $update[] = $column; - } - - return $update; - } - - /** - * Delete records from the database. - * - * @return mixed - */ - public function delete() - { - if (isset($this->onDelete)) { - return call_user_func($this->onDelete, $this); - } - - return $this->toBase()->delete(); - } - - /** - * Run the default delete function on the builder. - * - * Since we do not apply scopes here, the row will actually be deleted. - * - * @return mixed - */ - public function forceDelete() - { - return $this->query->delete(); - } - - /** - * Register a replacement for the default delete function. - * - * @param \Closure $callback - * @return void - */ - public function onDelete(Closure $callback) - { - $this->onDelete = $callback; - } - - /** - * Determine if the given model has a scope. - * - * @param string $scope - * @return bool - */ - public function hasNamedScope($scope) - { - return $this->model && $this->model->hasNamedScope($scope); - } - - /** - * Call the given local model scopes. - * - * @param array|string $scopes - * @return static|mixed - */ - public function scopes($scopes) - { - $builder = $this; - - foreach (Arr::wrap($scopes) as $scope => $parameters) { - // If the scope key is an integer, then the scope was passed as the value and - // the parameter list is empty, so we will format the scope name and these - // parameters here. Then, we'll be ready to call the scope on the model. - if (is_int($scope)) { - [$scope, $parameters] = [$parameters, []]; - } - - // Next we'll pass the scope callback to the callScope method which will take - // care of grouping the "wheres" properly so the logical order doesn't get - // messed up when adding scopes. Then we'll return back out the builder. - $builder = $builder->callNamedScope( - $scope, Arr::wrap($parameters) - ); - } - - return $builder; - } - - /** - * Apply the scopes to the Eloquent builder instance and return it. - * - * @return static - */ - public function applyScopes() - { - if (! $this->scopes) { - return $this; - } - - $builder = clone $this; - - foreach ($this->scopes as $identifier => $scope) { - if (! isset($builder->scopes[$identifier])) { - continue; - } - - $builder->callScope(function (self $builder) use ($scope) { - // If the scope is a Closure we will just go ahead and call the scope with the - // builder instance. The "callScope" method will properly group the clauses - // that are added to this query so "where" clauses maintain proper logic. - if ($scope instanceof Closure) { - $scope($builder); - } - - // If the scope is a scope object, we will call the apply method on this scope - // passing in the builder and the model instance. After we run all of these - // scopes we will return back the builder instance to the outside caller. - if ($scope instanceof Scope) { - $scope->apply($builder, $this->getModel()); - } - }); - } - - return $builder; - } - - /** - * Apply the given scope on the current builder instance. - * - * @param callable $scope - * @param array $parameters - * @return mixed - */ - protected function callScope(callable $scope, array $parameters = []) - { - array_unshift($parameters, $this); - - $query = $this->getQuery(); - - // We will keep track of how many wheres are on the query before running the - // scope so that we can properly group the added scope constraints in the - // query as their own isolated nested where statement and avoid issues. - $originalWhereCount = is_null($query->wheres) - ? 0 : count($query->wheres); - - $result = $scope(...$parameters) ?? $this; - - if (count((array) $query->wheres) > $originalWhereCount) { - $this->addNewWheresWithinGroup($query, $originalWhereCount); - } - - return $result; - } - - /** - * Apply the given named scope on the current builder instance. - * - * @param string $scope - * @param array $parameters - * @return mixed - */ - protected function callNamedScope($scope, array $parameters = []) - { - return $this->callScope(function (...$parameters) use ($scope) { - return $this->model->callNamedScope($scope, $parameters); - }, $parameters); - } - - /** - * Nest where conditions by slicing them at the given where count. - * - * @param \Illuminate\Database\Query\Builder $query - * @param int $originalWhereCount - * @return void - */ - protected function addNewWheresWithinGroup(QueryBuilder $query, $originalWhereCount) - { - // Here, we totally remove all of the where clauses since we are going to - // rebuild them as nested queries by slicing the groups of wheres into - // their own sections. This is to prevent any confusing logic order. - $allWheres = $query->wheres; - - $query->wheres = []; - - $this->groupWhereSliceForScope( - $query, array_slice($allWheres, 0, $originalWhereCount) - ); - - $this->groupWhereSliceForScope( - $query, array_slice($allWheres, $originalWhereCount) - ); - } - - /** - * Slice where conditions at the given offset and add them to the query as a nested condition. - * - * @param \Illuminate\Database\Query\Builder $query - * @param array $whereSlice - * @return void - */ - protected function groupWhereSliceForScope(QueryBuilder $query, $whereSlice) - { - $whereBooleans = collect($whereSlice)->pluck('boolean'); - - // Here we'll check if the given subset of where clauses contains any "or" - // booleans and in this case create a nested where expression. That way - // we don't add any unnecessary nesting thus keeping the query clean. - if ($whereBooleans->contains(fn ($logicalOperator) => str_contains($logicalOperator, 'or'))) { - $query->wheres[] = $this->createNestedWhere( - $whereSlice, str_replace(' not', '', $whereBooleans->first()) - ); - } else { - $query->wheres = array_merge($query->wheres, $whereSlice); - } - } - - /** - * Create a where array with nested where conditions. - * - * @param array $whereSlice - * @param string $boolean - * @return array - */ - protected function createNestedWhere($whereSlice, $boolean = 'and') - { - $whereGroup = $this->getQuery()->forNestedWhere(); - - $whereGroup->wheres = $whereSlice; - - return ['type' => 'Nested', 'query' => $whereGroup, 'boolean' => $boolean]; - } - - /** - * Set the relationships that should be eager loaded. - * - * @param string|array $relations - * @param string|\Closure|null $callback - * @return $this - */ - public function with($relations, $callback = null) - { - if ($callback instanceof Closure) { - $eagerLoad = $this->parseWithRelations([$relations => $callback]); - } else { - $eagerLoad = $this->parseWithRelations(is_string($relations) ? func_get_args() : $relations); - } - - $this->eagerLoad = array_merge($this->eagerLoad, $eagerLoad); - - return $this; - } - - /** - * Prevent the specified relations from being eager loaded. - * - * @param mixed $relations - * @return $this - */ - public function without($relations) - { - $this->eagerLoad = array_diff_key($this->eagerLoad, array_flip( - is_string($relations) ? func_get_args() : $relations - )); - - return $this; - } - - /** - * Set the relationships that should be eager loaded while removing any previously added eager loading specifications. - * - * @param mixed $relations - * @return $this - */ - public function withOnly($relations) - { - $this->eagerLoad = []; - - return $this->with($relations); - } - - /** - * Create a new instance of the model being queried. - * - * @param array $attributes - * @return \Illuminate\Database\Eloquent\Model|static - */ - public function newModelInstance($attributes = []) - { - return $this->model->newInstance($attributes)->setConnection( - $this->query->getConnection()->getName() - ); - } - - /** - * Parse a list of relations into individuals. - * - * @param array $relations - * @return array - */ - protected function parseWithRelations(array $relations) - { - if ($relations === []) { - return []; - } - - $results = []; - - foreach ($this->prepareNestedWithRelationships($relations) as $name => $constraints) { - // We need to separate out any nested includes, which allows the developers - // to load deep relationships using "dots" without stating each level of - // the relationship with its own key in the array of eager-load names. - $results = $this->addNestedWiths($name, $results); - - $results[$name] = $constraints; - } - - return $results; - } - - /** - * Prepare nested with relationships. - * - * @param array $relations - * @param string $prefix - * @return array - */ - protected function prepareNestedWithRelationships($relations, $prefix = '') - { - $preparedRelationships = []; - - if ($prefix !== '') { - $prefix .= '.'; - } - - // If any of the relationships are formatted with the [$attribute => array()] - // syntax, we shall loop over the nested relations and prepend each key of - // this array while flattening into the traditional dot notation format. - foreach ($relations as $key => $value) { - if (! is_string($key) || ! is_array($value)) { - continue; - } - - [$attribute, $attributeSelectConstraint] = $this->parseNameAndAttributeSelectionConstraint($key); - - $preparedRelationships = array_merge( - $preparedRelationships, - ["{$prefix}{$attribute}" => $attributeSelectConstraint], - $this->prepareNestedWithRelationships($value, "{$prefix}{$attribute}"), - ); - - unset($relations[$key]); - } - - // We now know that the remaining relationships are in a dot notation format - // and may be a string or Closure. We'll loop over them and ensure all of - // the present Closures are merged + strings are made into constraints. - foreach ($relations as $key => $value) { - if (is_numeric($key) && is_string($value)) { - [$key, $value] = $this->parseNameAndAttributeSelectionConstraint($value); - } - - $preparedRelationships[$prefix.$key] = $this->combineConstraints([ - $value, - $preparedRelationships[$prefix.$key] ?? static function () { - // - }, - ]); - } - - return $preparedRelationships; - } - - /** - * Combine an array of constraints into a single constraint. - * - * @param array $constraints - * @return \Closure - */ - protected function combineConstraints(array $constraints) - { - return function ($builder) use ($constraints) { - foreach ($constraints as $constraint) { - $builder = $constraint($builder) ?? $builder; - } - - return $builder; - }; - } - - /** - * Parse the attribute select constraints from the name. - * - * @param string $name - * @return array - */ - protected function parseNameAndAttributeSelectionConstraint($name) - { - return str_contains($name, ':') - ? $this->createSelectWithConstraint($name) - : [$name, static function () { - // - }]; - } - - /** - * Create a constraint to select the given columns for the relation. - * - * @param string $name - * @return array - */ - protected function createSelectWithConstraint($name) - { - return [explode(':', $name)[0], static function ($query) use ($name) { - $query->select(array_map(static function ($column) use ($query) { - if (str_contains($column, '.')) { - return $column; - } - - return $query instanceof BelongsToMany - ? $query->getRelated()->getTable().'.'.$column - : $column; - }, explode(',', explode(':', $name)[1]))); - }]; - } - - /** - * Parse the nested relationships in a relation. - * - * @param string $name - * @param array $results - * @return array - */ - protected function addNestedWiths($name, $results) - { - $progress = []; - - // If the relation has already been set on the result array, we will not set it - // again, since that would override any constraints that were already placed - // on the relationships. We will only set the ones that are not specified. - foreach (explode('.', $name) as $segment) { - $progress[] = $segment; - - if (! isset($results[$last = implode('.', $progress)])) { - $results[$last] = static function () { - // - }; - } - } - - return $results; - } - - /** - * Apply query-time casts to the model instance. - * - * @param array $casts - * @return $this - */ - public function withCasts($casts) - { - $this->model->mergeCasts($casts); - - return $this; - } - - /** - * Execute the given Closure within a transaction savepoint if needed. - * - * @template TModelValue - * - * @param \Closure(): TModelValue $scope - * @return TModelValue - */ - public function withSavepointIfNeeded(Closure $scope): mixed - { - return $this->getQuery()->getConnection()->transactionLevel() > 0 - ? $this->getQuery()->getConnection()->transaction($scope) - : $scope(); - } - - /** - * Get the Eloquent builder instances that are used in the union of the query. - * - * @return \Illuminate\Support\Collection - */ - protected function getUnionBuilders() - { - return isset($this->query->unions) - ? collect($this->query->unions)->pluck('query') - : collect(); - } - - /** - * Get the underlying query builder instance. - * - * @return \Illuminate\Database\Query\Builder - */ - public function getQuery() - { - return $this->query; - } - - /** - * Set the underlying query builder instance. - * - * @param \Illuminate\Database\Query\Builder $query - * @return $this - */ - public function setQuery($query) - { - $this->query = $query; - - return $this; - } - - /** - * Get a base query builder instance. - * - * @return \Illuminate\Database\Query\Builder - */ - public function toBase() - { - return $this->applyScopes()->getQuery(); - } - - /** - * Get the relationships being eagerly loaded. - * - * @return array - */ - public function getEagerLoads() - { - return $this->eagerLoad; - } - - /** - * Set the relationships being eagerly loaded. - * - * @param array $eagerLoad - * @return $this - */ - public function setEagerLoads(array $eagerLoad) - { - $this->eagerLoad = $eagerLoad; - - return $this; - } - - /** - * Indicate that the given relationships should not be eagerly loaded. - * - * @param array $relations - * @return $this - */ - public function withoutEagerLoad(array $relations) - { - $relations = array_diff(array_keys($this->model->getRelations()), $relations); - - return $this->with($relations); - } - - /** - * Flush the relationships being eagerly loaded. - * - * @return $this - */ - public function withoutEagerLoads() - { - return $this->setEagerLoads([]); - } - - /** - * Get the default key name of the table. - * - * @return string - */ - protected function defaultKeyName() - { - return $this->getModel()->getKeyName(); - } - - /** - * Get the model instance being queried. - * - * @return \Illuminate\Database\Eloquent\Model|static - */ - public function getModel() - { - return $this->model; - } - - /** - * Set a model instance for the model being queried. - * - * @param \Illuminate\Database\Eloquent\Model $model - * @return $this - */ - public function setModel(Model $model) - { - $this->model = $model; - - $this->query->from($model->getTable()); - - return $this; - } - - /** - * Qualify the given column name by the model's table. - * - * @param string|\Illuminate\Contracts\Database\Query\Expression $column - * @return string - */ - public function qualifyColumn($column) - { - $column = $column instanceof Expression ? $column->getValue($this->getGrammar()) : $column; - - return $this->model->qualifyColumn($column); - } - - /** - * Qualify the given columns with the model's table. - * - * @param array|\Illuminate\Contracts\Database\Query\Expression $columns - * @return array - */ - public function qualifyColumns($columns) - { - return $this->model->qualifyColumns($columns); - } - - /** - * Get the given macro by name. - * - * @param string $name - * @return \Closure - */ - public function getMacro($name) - { - return Arr::get($this->localMacros, $name); - } - - /** - * Checks if a macro is registered. - * - * @param string $name - * @return bool - */ - public function hasMacro($name) - { - return isset($this->localMacros[$name]); - } - - /** - * Get the given global macro by name. - * - * @param string $name - * @return \Closure - */ - public static function getGlobalMacro($name) - { - return Arr::get(static::$macros, $name); - } - - /** - * Checks if a global macro is registered. - * - * @param string $name - * @return bool - */ - public static function hasGlobalMacro($name) - { - return isset(static::$macros[$name]); - } - - /** - * Dynamically access builder proxies. - * - * @param string $key - * @return mixed - * - * @throws \Exception - */ - public function __get($key) - { - if (in_array($key, ['orWhere', 'whereNot', 'orWhereNot'])) { - return new HigherOrderBuilderProxy($this, $key); - } - - if (in_array($key, $this->propertyPassthru)) { - return $this->toBase()->{$key}; - } - - throw new Exception("Property [{$key}] does not exist on the Eloquent builder instance."); - } - - /** - * Dynamically handle calls into the query instance. - * - * @param string $method - * @param array $parameters - * @return mixed - */ - public function __call($method, $parameters) - { - if ($method === 'macro') { - $this->localMacros[$parameters[0]] = $parameters[1]; - - return; - } - - if ($this->hasMacro($method)) { - array_unshift($parameters, $this); - - return $this->localMacros[$method](...$parameters); - } - - if (static::hasGlobalMacro($method)) { - $callable = static::$macros[$method]; - - if ($callable instanceof Closure) { - $callable = $callable->bindTo($this, static::class); - } - - return $callable(...$parameters); - } - - if ($this->hasNamedScope($method)) { - return $this->callNamedScope($method, $parameters); - } - - if (in_array(strtolower($method), $this->passthru)) { - return $this->toBase()->{$method}(...$parameters); - } - - $this->forwardCallTo($this->query, $method, $parameters); - - return $this; - } - - /** - * Dynamically handle calls into the query instance. - * - * @param string $method - * @param array $parameters - * @return mixed - * - * @throws \BadMethodCallException - */ - public static function __callStatic($method, $parameters) - { - if ($method === 'macro') { - static::$macros[$parameters[0]] = $parameters[1]; - - return; - } - - if ($method === 'mixin') { - return static::registerMixin($parameters[0], $parameters[1] ?? true); - } - - if (! static::hasGlobalMacro($method)) { - static::throwBadMethodCallException($method); - } - - $callable = static::$macros[$method]; - - if ($callable instanceof Closure) { - $callable = $callable->bindTo(null, static::class); - } - - return $callable(...$parameters); - } - - /** - * Register the given mixin with the builder. - * - * @param string $mixin - * @param bool $replace - * @return void - */ - protected static function registerMixin($mixin, $replace) - { - $methods = (new ReflectionClass($mixin))->getMethods( - ReflectionMethod::IS_PUBLIC | ReflectionMethod::IS_PROTECTED - ); - - foreach ($methods as $method) { - if ($replace || ! static::hasGlobalMacro($method->name)) { - static::macro($method->name, $method->invoke($mixin)); - } - } - } - - /** - * Clone the Eloquent query builder. - * - * @return static - */ - public function clone() - { - return clone $this; - } - - /** - * Force a clone of the underlying query builder when cloning. - * - * @return void - */ - public function __clone() - { - $this->query = clone $this->query; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Casts/AsEnumArrayObject.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Casts/AsEnumArrayObject.php deleted file mode 100644 index 7909b197..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Casts/AsEnumArrayObject.php +++ /dev/null @@ -1,84 +0,0 @@ -} $arguments - * @return \Illuminate\Contracts\Database\Eloquent\CastsAttributes<\Illuminate\Database\Eloquent\Casts\ArrayObject, iterable> - */ - public static function castUsing(array $arguments) - { - return new class($arguments) implements CastsAttributes - { - protected $arguments; - - public function __construct(array $arguments) - { - $this->arguments = $arguments; - } - - public function get($model, $key, $value, $attributes) - { - if (! isset($attributes[$key])) { - return; - } - - $data = Json::decode($attributes[$key]); - - if (! is_array($data)) { - return; - } - - $enumClass = $this->arguments[0]; - - return new ArrayObject((new Collection($data))->map(function ($value) use ($enumClass) { - return is_subclass_of($enumClass, BackedEnum::class) - ? $enumClass::from($value) - : constant($enumClass.'::'.$value); - })->toArray()); - } - - public function set($model, $key, $value, $attributes) - { - if ($value === null) { - return [$key => null]; - } - - $storable = []; - - foreach ($value as $enum) { - $storable[] = $this->getStorableEnumValue($enum); - } - - return [$key => Json::encode($storable)]; - } - - public function serialize($model, string $key, $value, array $attributes) - { - return (new Collection($value->getArrayCopy()))->map(function ($enum) { - return $this->getStorableEnumValue($enum); - })->toArray(); - } - - protected function getStorableEnumValue($enum) - { - if (is_string($enum) || is_int($enum)) { - return $enum; - } - - return $enum instanceof BackedEnum ? $enum->value : $enum->name; - } - }; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Casts/AsEnumCollection.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Casts/AsEnumCollection.php deleted file mode 100644 index 92688128..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Casts/AsEnumCollection.php +++ /dev/null @@ -1,80 +0,0 @@ -} $arguments - * @return \Illuminate\Contracts\Database\Eloquent\CastsAttributes<\Illuminate\Support\Collection, iterable> - */ - public static function castUsing(array $arguments) - { - return new class($arguments) implements CastsAttributes - { - protected $arguments; - - public function __construct(array $arguments) - { - $this->arguments = $arguments; - } - - public function get($model, $key, $value, $attributes) - { - if (! isset($attributes[$key])) { - return; - } - - $data = Json::decode($attributes[$key]); - - if (! is_array($data)) { - return; - } - - $enumClass = $this->arguments[0]; - - return (new Collection($data))->map(function ($value) use ($enumClass) { - return is_subclass_of($enumClass, BackedEnum::class) - ? $enumClass::from($value) - : constant($enumClass.'::'.$value); - }); - } - - public function set($model, $key, $value, $attributes) - { - $value = $value !== null - ? Json::encode((new Collection($value))->map(function ($enum) { - return $this->getStorableEnumValue($enum); - })->jsonSerialize()) - : null; - - return [$key => $value]; - } - - public function serialize($model, string $key, $value, array $attributes) - { - return (new Collection($value))->map(function ($enum) { - return $this->getStorableEnumValue($enum); - })->toArray(); - } - - protected function getStorableEnumValue($enum) - { - if (is_string($enum) || is_int($enum)) { - return $enum; - } - - return $enum instanceof BackedEnum ? $enum->value : $enum->name; - } - }; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Casts/Attribute.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Casts/Attribute.php deleted file mode 100644 index 4fe2d807..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Casts/Attribute.php +++ /dev/null @@ -1,105 +0,0 @@ -get = $get; - $this->set = $set; - } - - /** - * Create a new attribute accessor / mutator. - * - * @param callable|null $get - * @param callable|null $set - * @return static - */ - public static function make(?callable $get = null, ?callable $set = null): static - { - return new static($get, $set); - } - - /** - * Create a new attribute accessor. - * - * @param callable $get - * @return static - */ - public static function get(callable $get) - { - return new static($get); - } - - /** - * Create a new attribute mutator. - * - * @param callable $set - * @return static - */ - public static function set(callable $set) - { - return new static(null, $set); - } - - /** - * Disable object caching for the attribute. - * - * @return static - */ - public function withoutObjectCaching() - { - $this->withObjectCaching = false; - - return $this; - } - - /** - * Enable caching for the attribute. - * - * @return static - */ - public function shouldCache() - { - $this->withCaching = true; - - return $this; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php deleted file mode 100644 index c2c478d1..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php +++ /dev/null @@ -1,2278 +0,0 @@ -addDateAttributesToArray( - $attributes = $this->getArrayableAttributes() - ); - - $attributes = $this->addMutatedAttributesToArray( - $attributes, $mutatedAttributes = $this->getMutatedAttributes() - ); - - // Next we will handle any casts that have been setup for this model and cast - // the values to their appropriate type. If the attribute has a mutator we - // will not perform the cast on those attributes to avoid any confusion. - $attributes = $this->addCastAttributesToArray( - $attributes, $mutatedAttributes - ); - - // Here we will grab all of the appended, calculated attributes to this model - // as these attributes are not really in the attributes array, but are run - // when we need to array or JSON the model for convenience to the coder. - foreach ($this->getArrayableAppends() as $key) { - $attributes[$key] = $this->mutateAttributeForArray($key, null); - } - - return $attributes; - } - - /** - * Add the date attributes to the attributes array. - * - * @param array $attributes - * @return array - */ - protected function addDateAttributesToArray(array $attributes) - { - foreach ($this->getDates() as $key) { - if (! isset($attributes[$key])) { - continue; - } - - $attributes[$key] = $this->serializeDate( - $this->asDateTime($attributes[$key]) - ); - } - - return $attributes; - } - - /** - * Add the mutated attributes to the attributes array. - * - * @param array $attributes - * @param array $mutatedAttributes - * @return array - */ - protected function addMutatedAttributesToArray(array $attributes, array $mutatedAttributes) - { - foreach ($mutatedAttributes as $key) { - // We want to spin through all the mutated attributes for this model and call - // the mutator for the attribute. We cache off every mutated attributes so - // we don't have to constantly check on attributes that actually change. - if (! array_key_exists($key, $attributes)) { - continue; - } - - // Next, we will call the mutator for this attribute so that we can get these - // mutated attribute's actual values. After we finish mutating each of the - // attributes we will return this final array of the mutated attributes. - $attributes[$key] = $this->mutateAttributeForArray( - $key, $attributes[$key] - ); - } - - return $attributes; - } - - /** - * Add the casted attributes to the attributes array. - * - * @param array $attributes - * @param array $mutatedAttributes - * @return array - */ - protected function addCastAttributesToArray(array $attributes, array $mutatedAttributes) - { - foreach ($this->getCasts() as $key => $value) { - if (! array_key_exists($key, $attributes) || - in_array($key, $mutatedAttributes)) { - continue; - } - - // Here we will cast the attribute. Then, if the cast is a date or datetime cast - // then we will serialize the date for the array. This will convert the dates - // to strings based on the date format specified for these Eloquent models. - $attributes[$key] = $this->castAttribute( - $key, $attributes[$key] - ); - - // If the attribute cast was a date or a datetime, we will serialize the date as - // a string. This allows the developers to customize how dates are serialized - // into an array without affecting how they are persisted into the storage. - if (isset($attributes[$key]) && in_array($value, ['date', 'datetime', 'immutable_date', 'immutable_datetime'])) { - $attributes[$key] = $this->serializeDate($attributes[$key]); - } - - if (isset($attributes[$key]) && ($this->isCustomDateTimeCast($value) || - $this->isImmutableCustomDateTimeCast($value))) { - $attributes[$key] = $attributes[$key]->format(explode(':', $value, 2)[1]); - } - - if ($attributes[$key] instanceof DateTimeInterface && - $this->isClassCastable($key)) { - $attributes[$key] = $this->serializeDate($attributes[$key]); - } - - if (isset($attributes[$key]) && $this->isClassSerializable($key)) { - $attributes[$key] = $this->serializeClassCastableAttribute($key, $attributes[$key]); - } - - if ($this->isEnumCastable($key) && (! ($attributes[$key] ?? null) instanceof Arrayable)) { - $attributes[$key] = isset($attributes[$key]) ? $this->getStorableEnumValue($attributes[$key]) : null; - } - - if ($attributes[$key] instanceof Arrayable) { - $attributes[$key] = $attributes[$key]->toArray(); - } - } - - return $attributes; - } - - /** - * Get an attribute array of all arrayable attributes. - * - * @return array - */ - protected function getArrayableAttributes() - { - return $this->getArrayableItems($this->getAttributes()); - } - - /** - * Get all of the appendable values that are arrayable. - * - * @return array - */ - protected function getArrayableAppends() - { - if (! count($this->appends)) { - return []; - } - - return $this->getArrayableItems( - array_combine($this->appends, $this->appends) - ); - } - - /** - * Get the model's relationships in array form. - * - * @return array - */ - public function relationsToArray() - { - $attributes = []; - - foreach ($this->getArrayableRelations() as $key => $value) { - // If the values implement the Arrayable interface we can just call this - // toArray method on the instances which will convert both models and - // collections to their proper array form and we'll set the values. - if ($value instanceof Arrayable) { - $relation = $value->toArray(); - } - - // If the value is null, we'll still go ahead and set it in this list of - // attributes, since null is used to represent empty relationships if - // it has a has one or belongs to type relationships on the models. - elseif (is_null($value)) { - $relation = $value; - } - - // If the relationships snake-casing is enabled, we will snake case this - // key so that the relation attribute is snake cased in this returned - // array to the developers, making this consistent with attributes. - if (static::$snakeAttributes) { - $key = Str::snake($key); - } - - // If the relation value has been set, we will set it on this attributes - // list for returning. If it was not arrayable or null, we'll not set - // the value on the array because it is some type of invalid value. - if (isset($relation) || is_null($value)) { - $attributes[$key] = $relation; - } - - unset($relation); - } - - return $attributes; - } - - /** - * Get an attribute array of all arrayable relations. - * - * @return array - */ - protected function getArrayableRelations() - { - return $this->getArrayableItems($this->relations); - } - - /** - * Get an attribute array of all arrayable values. - * - * @param array $values - * @return array - */ - protected function getArrayableItems(array $values) - { - if (count($this->getVisible()) > 0) { - $values = array_intersect_key($values, array_flip($this->getVisible())); - } - - if (count($this->getHidden()) > 0) { - $values = array_diff_key($values, array_flip($this->getHidden())); - } - - return $values; - } - - /** - * Get an attribute from the model. - * - * @param string $key - * @return mixed - */ - public function getAttribute($key) - { - if (! $key) { - return; - } - - // If the attribute exists in the attribute array or has a "get" mutator we will - // get the attribute's value. Otherwise, we will proceed as if the developers - // are asking for a relationship's value. This covers both types of values. - if (array_key_exists($key, $this->attributes) || - array_key_exists($key, $this->casts) || - $this->hasGetMutator($key) || - $this->hasAttributeMutator($key) || - $this->isClassCastable($key)) { - return $this->getAttributeValue($key); - } - - // Here we will determine if the model base class itself contains this given key - // since we don't want to treat any of those methods as relationships because - // they are all intended as helper methods and none of these are relations. - if (method_exists(self::class, $key)) { - return $this->throwMissingAttributeExceptionIfApplicable($key); - } - - return $this->isRelation($key) || $this->relationLoaded($key) - ? $this->getRelationValue($key) - : $this->throwMissingAttributeExceptionIfApplicable($key); - } - - /** - * Either throw a missing attribute exception or return null depending on Eloquent's configuration. - * - * @param string $key - * @return null - * - * @throws \Illuminate\Database\Eloquent\MissingAttributeException - */ - protected function throwMissingAttributeExceptionIfApplicable($key) - { - if ($this->exists && - ! $this->wasRecentlyCreated && - static::preventsAccessingMissingAttributes()) { - if (isset(static::$missingAttributeViolationCallback)) { - return call_user_func(static::$missingAttributeViolationCallback, $this, $key); - } - - throw new MissingAttributeException($this, $key); - } - - return null; - } - - /** - * Get a plain attribute (not a relationship). - * - * @param string $key - * @return mixed - */ - public function getAttributeValue($key) - { - return $this->transformModelValue($key, $this->getAttributeFromArray($key)); - } - - /** - * Get an attribute from the $attributes array. - * - * @param string $key - * @return mixed - */ - protected function getAttributeFromArray($key) - { - return $this->getAttributes()[$key] ?? null; - } - - /** - * Get a relationship. - * - * @param string $key - * @return mixed - */ - public function getRelationValue($key) - { - // If the key already exists in the relationships array, it just means the - // relationship has already been loaded, so we'll just return it out of - // here because there is no need to query within the relations twice. - if ($this->relationLoaded($key)) { - return $this->relations[$key]; - } - - if (! $this->isRelation($key)) { - return; - } - - if ($this->preventsLazyLoading) { - $this->handleLazyLoadingViolation($key); - } - - // If the "attribute" exists as a method on the model, we will just assume - // it is a relationship and will load and return results from the query - // and hydrate the relationship's value on the "relationships" array. - return $this->getRelationshipFromMethod($key); - } - - /** - * Determine if the given key is a relationship method on the model. - * - * @param string $key - * @return bool - */ - public function isRelation($key) - { - if ($this->hasAttributeMutator($key)) { - return false; - } - - return method_exists($this, $key) || - $this->relationResolver(static::class, $key); - } - - /** - * Handle a lazy loading violation. - * - * @param string $key - * @return mixed - */ - protected function handleLazyLoadingViolation($key) - { - if (isset(static::$lazyLoadingViolationCallback)) { - return call_user_func(static::$lazyLoadingViolationCallback, $this, $key); - } - - if (! $this->exists || $this->wasRecentlyCreated) { - return; - } - - throw new LazyLoadingViolationException($this, $key); - } - - /** - * Get a relationship value from a method. - * - * @param string $method - * @return mixed - * - * @throws \LogicException - */ - protected function getRelationshipFromMethod($method) - { - $relation = $this->$method(); - - if (! $relation instanceof Relation) { - if (is_null($relation)) { - throw new LogicException(sprintf( - '%s::%s must return a relationship instance, but "null" was returned. Was the "return" keyword used?', static::class, $method - )); - } - - throw new LogicException(sprintf( - '%s::%s must return a relationship instance.', static::class, $method - )); - } - - return tap($relation->getResults(), function ($results) use ($method) { - $this->setRelation($method, $results); - }); - } - - /** - * Determine if a get mutator exists for an attribute. - * - * @param string $key - * @return bool - */ - public function hasGetMutator($key) - { - return method_exists($this, 'get'.Str::studly($key).'Attribute'); - } - - /** - * Determine if a "Attribute" return type marked mutator exists for an attribute. - * - * @param string $key - * @return bool - */ - public function hasAttributeMutator($key) - { - if (isset(static::$attributeMutatorCache[get_class($this)][$key])) { - return static::$attributeMutatorCache[get_class($this)][$key]; - } - - if (! method_exists($this, $method = Str::camel($key))) { - return static::$attributeMutatorCache[get_class($this)][$key] = false; - } - - $returnType = (new ReflectionMethod($this, $method))->getReturnType(); - - return static::$attributeMutatorCache[get_class($this)][$key] = - $returnType instanceof ReflectionNamedType && - $returnType->getName() === Attribute::class; - } - - /** - * Determine if a "Attribute" return type marked get mutator exists for an attribute. - * - * @param string $key - * @return bool - */ - public function hasAttributeGetMutator($key) - { - if (isset(static::$getAttributeMutatorCache[get_class($this)][$key])) { - return static::$getAttributeMutatorCache[get_class($this)][$key]; - } - - if (! $this->hasAttributeMutator($key)) { - return static::$getAttributeMutatorCache[get_class($this)][$key] = false; - } - - return static::$getAttributeMutatorCache[get_class($this)][$key] = is_callable($this->{Str::camel($key)}()->get); - } - - /** - * Get the value of an attribute using its mutator. - * - * @param string $key - * @param mixed $value - * @return mixed - */ - protected function mutateAttribute($key, $value) - { - return $this->{'get'.Str::studly($key).'Attribute'}($value); - } - - /** - * Get the value of an "Attribute" return type marked attribute using its mutator. - * - * @param string $key - * @param mixed $value - * @return mixed - */ - protected function mutateAttributeMarkedAttribute($key, $value) - { - if (array_key_exists($key, $this->attributeCastCache)) { - return $this->attributeCastCache[$key]; - } - - $attribute = $this->{Str::camel($key)}(); - - $value = call_user_func($attribute->get ?: function ($value) { - return $value; - }, $value, $this->attributes); - - if ($attribute->withCaching || (is_object($value) && $attribute->withObjectCaching)) { - $this->attributeCastCache[$key] = $value; - } else { - unset($this->attributeCastCache[$key]); - } - - return $value; - } - - /** - * Get the value of an attribute using its mutator for array conversion. - * - * @param string $key - * @param mixed $value - * @return mixed - */ - protected function mutateAttributeForArray($key, $value) - { - if ($this->isClassCastable($key)) { - $value = $this->getClassCastableAttributeValue($key, $value); - } elseif (isset(static::$getAttributeMutatorCache[get_class($this)][$key]) && - static::$getAttributeMutatorCache[get_class($this)][$key] === true) { - $value = $this->mutateAttributeMarkedAttribute($key, $value); - - $value = $value instanceof DateTimeInterface - ? $this->serializeDate($value) - : $value; - } else { - $value = $this->mutateAttribute($key, $value); - } - - return $value instanceof Arrayable ? $value->toArray() : $value; - } - - /** - * Merge new casts with existing casts on the model. - * - * @param array $casts - * @return $this - */ - public function mergeCasts($casts) - { - $this->casts = array_merge($this->casts, $casts); - - return $this; - } - - /** - * Cast an attribute to a native PHP type. - * - * @param string $key - * @param mixed $value - * @return mixed - */ - protected function castAttribute($key, $value) - { - $castType = $this->getCastType($key); - - if (is_null($value) && in_array($castType, static::$primitiveCastTypes)) { - return $value; - } - - // If the key is one of the encrypted castable types, we'll first decrypt - // the value and update the cast type so we may leverage the following - // logic for casting this value to any additionally specified types. - if ($this->isEncryptedCastable($key)) { - $value = $this->fromEncryptedString($value); - - $castType = Str::after($castType, 'encrypted:'); - } - - switch ($castType) { - case 'int': - case 'integer': - return (int) $value; - case 'real': - case 'float': - case 'double': - return $this->fromFloat($value); - case 'decimal': - return $this->asDecimal($value, explode(':', $this->getCasts()[$key], 2)[1]); - case 'string': - return (string) $value; - case 'bool': - case 'boolean': - return (bool) $value; - case 'object': - return $this->fromJson($value, true); - case 'array': - case 'json': - return $this->fromJson($value); - case 'collection': - return new BaseCollection($this->fromJson($value)); - case 'date': - return $this->asDate($value); - case 'datetime': - case 'custom_datetime': - return $this->asDateTime($value); - case 'immutable_date': - return $this->asDate($value)->toImmutable(); - case 'immutable_custom_datetime': - case 'immutable_datetime': - return $this->asDateTime($value)->toImmutable(); - case 'timestamp': - return $this->asTimestamp($value); - } - - if ($this->isEnumCastable($key)) { - return $this->getEnumCastableAttributeValue($key, $value); - } - - if ($this->isClassCastable($key)) { - return $this->getClassCastableAttributeValue($key, $value); - } - - return $value; - } - - /** - * Cast the given attribute using a custom cast class. - * - * @param string $key - * @param mixed $value - * @return mixed - */ - protected function getClassCastableAttributeValue($key, $value) - { - $caster = $this->resolveCasterClass($key); - - $objectCachingDisabled = $caster->withoutObjectCaching ?? false; - - if (isset($this->classCastCache[$key]) && ! $objectCachingDisabled) { - return $this->classCastCache[$key]; - } else { - $value = $caster instanceof CastsInboundAttributes - ? $value - : $caster->get($this, $key, $value, $this->attributes); - - if ($caster instanceof CastsInboundAttributes || - ! is_object($value) || - $objectCachingDisabled) { - unset($this->classCastCache[$key]); - } else { - $this->classCastCache[$key] = $value; - } - - return $value; - } - } - - /** - * Cast the given attribute to an enum. - * - * @param string $key - * @param mixed $value - * @return mixed - */ - protected function getEnumCastableAttributeValue($key, $value) - { - if (is_null($value)) { - return; - } - - $castType = $this->getCasts()[$key]; - - if ($value instanceof $castType) { - return $value; - } - - return $this->getEnumCaseFromValue($castType, $value); - } - - /** - * Get the type of cast for a model attribute. - * - * @param string $key - * @return string - */ - protected function getCastType($key) - { - $castType = $this->getCasts()[$key]; - - if (isset(static::$castTypeCache[$castType])) { - return static::$castTypeCache[$castType]; - } - - if ($this->isCustomDateTimeCast($castType)) { - $convertedCastType = 'custom_datetime'; - } elseif ($this->isImmutableCustomDateTimeCast($castType)) { - $convertedCastType = 'immutable_custom_datetime'; - } elseif ($this->isDecimalCast($castType)) { - $convertedCastType = 'decimal'; - } elseif (class_exists($castType)) { - $convertedCastType = $castType; - } else { - $convertedCastType = trim(strtolower($castType)); - } - - return static::$castTypeCache[$castType] = $convertedCastType; - } - - /** - * Increment or decrement the given attribute using the custom cast class. - * - * @param string $method - * @param string $key - * @param mixed $value - * @return mixed - */ - protected function deviateClassCastableAttribute($method, $key, $value) - { - return $this->resolveCasterClass($key)->{$method}( - $this, $key, $value, $this->attributes - ); - } - - /** - * Serialize the given attribute using the custom cast class. - * - * @param string $key - * @param mixed $value - * @return mixed - */ - protected function serializeClassCastableAttribute($key, $value) - { - return $this->resolveCasterClass($key)->serialize( - $this, $key, $value, $this->attributes - ); - } - - /** - * Determine if the cast type is a custom date time cast. - * - * @param string $cast - * @return bool - */ - protected function isCustomDateTimeCast($cast) - { - return str_starts_with($cast, 'date:') || - str_starts_with($cast, 'datetime:'); - } - - /** - * Determine if the cast type is an immutable custom date time cast. - * - * @param string $cast - * @return bool - */ - protected function isImmutableCustomDateTimeCast($cast) - { - return str_starts_with($cast, 'immutable_date:') || - str_starts_with($cast, 'immutable_datetime:'); - } - - /** - * Determine if the cast type is a decimal cast. - * - * @param string $cast - * @return bool - */ - protected function isDecimalCast($cast) - { - return str_starts_with($cast, 'decimal:'); - } - - /** - * Set a given attribute on the model. - * - * @param string $key - * @param mixed $value - * @return mixed - */ - public function setAttribute($key, $value) - { - // First we will check for the presence of a mutator for the set operation - // which simply lets the developers tweak the attribute as it is set on - // this model, such as "json_encoding" a listing of data for storage. - if ($this->hasSetMutator($key)) { - return $this->setMutatedAttributeValue($key, $value); - } elseif ($this->hasAttributeSetMutator($key)) { - return $this->setAttributeMarkedMutatedAttributeValue($key, $value); - } - - // If an attribute is listed as a "date", we'll convert it from a DateTime - // instance into a form proper for storage on the database tables using - // the connection grammar's date format. We will auto set the values. - elseif (! is_null($value) && $this->isDateAttribute($key)) { - $value = $this->fromDateTime($value); - } - - if ($this->isEnumCastable($key)) { - $this->setEnumCastableAttribute($key, $value); - - return $this; - } - - if ($this->isClassCastable($key)) { - $this->setClassCastableAttribute($key, $value); - - return $this; - } - - if (! is_null($value) && $this->isJsonCastable($key)) { - $value = $this->castAttributeAsJson($key, $value); - } - - // If this attribute contains a JSON ->, we'll set the proper value in the - // attribute's underlying array. This takes care of properly nesting an - // attribute in the array's value in the case of deeply nested items. - if (str_contains($key, '->')) { - return $this->fillJsonAttribute($key, $value); - } - - if (! is_null($value) && $this->isEncryptedCastable($key)) { - $value = $this->castAttributeAsEncryptedString($key, $value); - } - - if (! is_null($value) && $this->hasCast($key, 'hashed')) { - $value = $this->castAttributeAsHashedString($key, $value); - } - - $this->attributes[$key] = $value; - - return $this; - } - - /** - * Determine if a set mutator exists for an attribute. - * - * @param string $key - * @return bool - */ - public function hasSetMutator($key) - { - return method_exists($this, 'set'.Str::studly($key).'Attribute'); - } - - /** - * Determine if an "Attribute" return type marked set mutator exists for an attribute. - * - * @param string $key - * @return bool - */ - public function hasAttributeSetMutator($key) - { - $class = get_class($this); - - if (isset(static::$setAttributeMutatorCache[$class][$key])) { - return static::$setAttributeMutatorCache[$class][$key]; - } - - if (! method_exists($this, $method = Str::camel($key))) { - return static::$setAttributeMutatorCache[$class][$key] = false; - } - - $returnType = (new ReflectionMethod($this, $method))->getReturnType(); - - return static::$setAttributeMutatorCache[$class][$key] = - $returnType instanceof ReflectionNamedType && - $returnType->getName() === Attribute::class && - is_callable($this->{$method}()->set); - } - - /** - * Set the value of an attribute using its mutator. - * - * @param string $key - * @param mixed $value - * @return mixed - */ - protected function setMutatedAttributeValue($key, $value) - { - return $this->{'set'.Str::studly($key).'Attribute'}($value); - } - - /** - * Set the value of a "Attribute" return type marked attribute using its mutator. - * - * @param string $key - * @param mixed $value - * @return mixed - */ - protected function setAttributeMarkedMutatedAttributeValue($key, $value) - { - $attribute = $this->{Str::camel($key)}(); - - $callback = $attribute->set ?: function ($value) use ($key) { - $this->attributes[$key] = $value; - }; - - $this->attributes = array_merge( - $this->attributes, - $this->normalizeCastClassResponse( - $key, $callback($value, $this->attributes) - ) - ); - - if ($attribute->withCaching || (is_object($value) && $attribute->withObjectCaching)) { - $this->attributeCastCache[$key] = $value; - } else { - unset($this->attributeCastCache[$key]); - } - - return $this; - } - - /** - * Determine if the given attribute is a date or date castable. - * - * @param string $key - * @return bool - */ - protected function isDateAttribute($key) - { - return in_array($key, $this->getDates(), true) || - $this->isDateCastable($key); - } - - /** - * Set a given JSON attribute on the model. - * - * @param string $key - * @param mixed $value - * @return $this - */ - public function fillJsonAttribute($key, $value) - { - [$key, $path] = explode('->', $key, 2); - - $value = $this->asJson($this->getArrayAttributeWithValue( - $path, $key, $value - )); - - $this->attributes[$key] = $this->isEncryptedCastable($key) - ? $this->castAttributeAsEncryptedString($key, $value) - : $value; - - if ($this->isClassCastable($key)) { - unset($this->classCastCache[$key]); - } - - return $this; - } - - /** - * Set the value of a class castable attribute. - * - * @param string $key - * @param mixed $value - * @return void - */ - protected function setClassCastableAttribute($key, $value) - { - $caster = $this->resolveCasterClass($key); - - $this->attributes = array_replace( - $this->attributes, - $this->normalizeCastClassResponse($key, $caster->set( - $this, $key, $value, $this->attributes - )) - ); - - if ($caster instanceof CastsInboundAttributes || - ! is_object($value) || - ($caster->withoutObjectCaching ?? false)) { - unset($this->classCastCache[$key]); - } else { - $this->classCastCache[$key] = $value; - } - } - - /** - * Set the value of an enum castable attribute. - * - * @param string $key - * @param \UnitEnum|string|int $value - * @return void - */ - protected function setEnumCastableAttribute($key, $value) - { - $enumClass = $this->getCasts()[$key]; - - if (! isset($value)) { - $this->attributes[$key] = null; - } elseif (is_object($value)) { - $this->attributes[$key] = $this->getStorableEnumValue($value); - } else { - $this->attributes[$key] = $this->getStorableEnumValue( - $this->getEnumCaseFromValue($enumClass, $value) - ); - } - } - - /** - * Get an enum case instance from a given class and value. - * - * @param string $enumClass - * @param string|int $value - * @return \UnitEnum|\BackedEnum - */ - protected function getEnumCaseFromValue($enumClass, $value) - { - return is_subclass_of($enumClass, BackedEnum::class) - ? $enumClass::from($value) - : constant($enumClass.'::'.$value); - } - - /** - * Get the storable value from the given enum. - * - * @param \UnitEnum|\BackedEnum $value - * @return string|int - */ - protected function getStorableEnumValue($value) - { - return $value instanceof BackedEnum - ? $value->value - : $value->name; - } - - /** - * Get an array attribute with the given key and value set. - * - * @param string $path - * @param string $key - * @param mixed $value - * @return $this - */ - protected function getArrayAttributeWithValue($path, $key, $value) - { - return tap($this->getArrayAttributeByKey($key), function (&$array) use ($path, $value) { - Arr::set($array, str_replace('->', '.', $path), $value); - }); - } - - /** - * Get an array attribute or return an empty array if it is not set. - * - * @param string $key - * @return array - */ - protected function getArrayAttributeByKey($key) - { - if (! isset($this->attributes[$key])) { - return []; - } - - return $this->fromJson( - $this->isEncryptedCastable($key) - ? $this->fromEncryptedString($this->attributes[$key]) - : $this->attributes[$key] - ); - } - - /** - * Cast the given attribute to JSON. - * - * @param string $key - * @param mixed $value - * @return string - */ - protected function castAttributeAsJson($key, $value) - { - $value = $this->asJson($value); - - if ($value === false) { - throw JsonEncodingException::forAttribute( - $this, $key, json_last_error_msg() - ); - } - - return $value; - } - - /** - * Encode the given value as JSON. - * - * @param mixed $value - * @return string - */ - protected function asJson($value) - { - return Json::encode($value); - } - - /** - * Decode the given JSON back into an array or object. - * - * @param string $value - * @param bool $asObject - * @return mixed - */ - public function fromJson($value, $asObject = false) - { - if ($value === null || $value === '') { - return null; - } - - return Json::decode($value, ! $asObject); - } - - /** - * Decrypt the given encrypted string. - * - * @param string $value - * @return mixed - */ - public function fromEncryptedString($value) - { - return (static::$encrypter ?? Crypt::getFacadeRoot())->decrypt($value, false); - } - - /** - * Cast the given attribute to an encrypted string. - * - * @param string $key - * @param mixed $value - * @return string - */ - protected function castAttributeAsEncryptedString($key, $value) - { - return (static::$encrypter ?? Crypt::getFacadeRoot())->encrypt($value, false); - } - - /** - * Set the encrypter instance that will be used to encrypt attributes. - * - * @param \Illuminate\Contracts\Encryption\Encrypter|null $encrypter - * @return void - */ - public static function encryptUsing($encrypter) - { - static::$encrypter = $encrypter; - } - - /** - * Cast the given attribute to a hashed string. - * - * @param string $key - * @param mixed $value - * @return string - */ - protected function castAttributeAsHashedString($key, $value) - { - if ($value === null) { - return null; - } - - if (! Hash::isHashed($value)) { - return Hash::make($value); - } - - if (! Hash::verifyConfiguration($value)) { - throw new RuntimeException("Could not verify the hashed value's configuration."); - } - - return $value; - } - - /** - * Decode the given float. - * - * @param mixed $value - * @return mixed - */ - public function fromFloat($value) - { - return match ((string) $value) { - 'Infinity' => INF, - '-Infinity' => -INF, - 'NaN' => NAN, - default => (float) $value, - }; - } - - /** - * Return a decimal as string. - * - * @param float|string $value - * @param int $decimals - * @return string - */ - protected function asDecimal($value, $decimals) - { - try { - return (string) BigDecimal::of($value)->toScale($decimals, RoundingMode::HALF_UP); - } catch (BrickMathException $e) { - throw new MathException('Unable to cast value to a decimal.', previous: $e); - } - } - - /** - * Return a timestamp as DateTime object with time set to 00:00:00. - * - * @param mixed $value - * @return \Illuminate\Support\Carbon - */ - protected function asDate($value) - { - return $this->asDateTime($value)->startOfDay(); - } - - /** - * Return a timestamp as DateTime object. - * - * @param mixed $value - * @return \Illuminate\Support\Carbon - */ - protected function asDateTime($value) - { - // If this value is already a Carbon instance, we shall just return it as is. - // This prevents us having to re-instantiate a Carbon instance when we know - // it already is one, which wouldn't be fulfilled by the DateTime check. - if ($value instanceof CarbonInterface) { - return Date::instance($value); - } - - // If the value is already a DateTime instance, we will just skip the rest of - // these checks since they will be a waste of time, and hinder performance - // when checking the field. We will just return the DateTime right away. - if ($value instanceof DateTimeInterface) { - return Date::parse( - $value->format('Y-m-d H:i:s.u'), $value->getTimezone() - ); - } - - // If this value is an integer, we will assume it is a UNIX timestamp's value - // and format a Carbon object from this timestamp. This allows flexibility - // when defining your date fields as they might be UNIX timestamps here. - if (is_numeric($value)) { - return Date::createFromTimestamp($value); - } - - // If the value is in simply year, month, day format, we will instantiate the - // Carbon instances from that format. Again, this provides for simple date - // fields on the database, while still supporting Carbonized conversion. - if ($this->isStandardDateFormat($value)) { - return Date::instance(Carbon::createFromFormat('Y-m-d', $value)->startOfDay()); - } - - $format = $this->getDateFormat(); - - // Finally, we will just assume this date is in the format used by default on - // the database connection and use that format to create the Carbon object - // that is returned back out to the developers after we convert it here. - try { - $date = Date::createFromFormat($format, $value); - } catch (InvalidArgumentException) { - $date = false; - } - - return $date ?: Date::parse($value); - } - - /** - * Determine if the given value is a standard date format. - * - * @param string $value - * @return bool - */ - protected function isStandardDateFormat($value) - { - return preg_match('/^(\d{4})-(\d{1,2})-(\d{1,2})$/', $value); - } - - /** - * Convert a DateTime to a storable string. - * - * @param mixed $value - * @return string|null - */ - public function fromDateTime($value) - { - return empty($value) ? $value : $this->asDateTime($value)->format( - $this->getDateFormat() - ); - } - - /** - * Return a timestamp as unix timestamp. - * - * @param mixed $value - * @return int - */ - protected function asTimestamp($value) - { - return $this->asDateTime($value)->getTimestamp(); - } - - /** - * Prepare a date for array / JSON serialization. - * - * @param \DateTimeInterface $date - * @return string - */ - protected function serializeDate(DateTimeInterface $date) - { - return $date instanceof DateTimeImmutable ? - CarbonImmutable::instance($date)->toJSON() : - Carbon::instance($date)->toJSON(); - } - - /** - * Get the attributes that should be converted to dates. - * - * @return array - */ - public function getDates() - { - return $this->usesTimestamps() ? [ - $this->getCreatedAtColumn(), - $this->getUpdatedAtColumn(), - ] : []; - } - - /** - * Get the format for database stored dates. - * - * @return string - */ - public function getDateFormat() - { - return $this->dateFormat ?: $this->getConnection()->getQueryGrammar()->getDateFormat(); - } - - /** - * Set the date format used by the model. - * - * @param string $format - * @return $this - */ - public function setDateFormat($format) - { - $this->dateFormat = $format; - - return $this; - } - - /** - * Determine whether an attribute should be cast to a native type. - * - * @param string $key - * @param array|string|null $types - * @return bool - */ - public function hasCast($key, $types = null) - { - if (array_key_exists($key, $this->getCasts())) { - return $types ? in_array($this->getCastType($key), (array) $types, true) : true; - } - - return false; - } - - /** - * Get the casts array. - * - * @return array - */ - public function getCasts() - { - if ($this->getIncrementing()) { - return array_merge([$this->getKeyName() => $this->getKeyType()], $this->casts); - } - - return $this->casts; - } - - /** - * Determine whether a value is Date / DateTime castable for inbound manipulation. - * - * @param string $key - * @return bool - */ - protected function isDateCastable($key) - { - return $this->hasCast($key, ['date', 'datetime', 'immutable_date', 'immutable_datetime']); - } - - /** - * Determine whether a value is Date / DateTime custom-castable for inbound manipulation. - * - * @param string $key - * @return bool - */ - protected function isDateCastableWithCustomFormat($key) - { - return $this->hasCast($key, ['custom_datetime', 'immutable_custom_datetime']); - } - - /** - * Determine whether a value is JSON castable for inbound manipulation. - * - * @param string $key - * @return bool - */ - protected function isJsonCastable($key) - { - return $this->hasCast($key, ['array', 'json', 'object', 'collection', 'encrypted:array', 'encrypted:collection', 'encrypted:json', 'encrypted:object']); - } - - /** - * Determine whether a value is an encrypted castable for inbound manipulation. - * - * @param string $key - * @return bool - */ - protected function isEncryptedCastable($key) - { - return $this->hasCast($key, ['encrypted', 'encrypted:array', 'encrypted:collection', 'encrypted:json', 'encrypted:object']); - } - - /** - * Determine if the given key is cast using a custom class. - * - * @param string $key - * @return bool - * - * @throws \Illuminate\Database\Eloquent\InvalidCastException - */ - protected function isClassCastable($key) - { - $casts = $this->getCasts(); - - if (! array_key_exists($key, $casts)) { - return false; - } - - $castType = $this->parseCasterClass($casts[$key]); - - if (in_array($castType, static::$primitiveCastTypes)) { - return false; - } - - if (class_exists($castType)) { - return true; - } - - throw new InvalidCastException($this->getModel(), $key, $castType); - } - - /** - * Determine if the given key is cast using an enum. - * - * @param string $key - * @return bool - */ - protected function isEnumCastable($key) - { - $casts = $this->getCasts(); - - if (! array_key_exists($key, $casts)) { - return false; - } - - $castType = $casts[$key]; - - if (in_array($castType, static::$primitiveCastTypes)) { - return false; - } - - return enum_exists($castType); - } - - /** - * Determine if the key is deviable using a custom class. - * - * @param string $key - * @return bool - * - * @throws \Illuminate\Database\Eloquent\InvalidCastException - */ - protected function isClassDeviable($key) - { - if (! $this->isClassCastable($key)) { - return false; - } - - $castType = $this->resolveCasterClass($key); - - return method_exists($castType::class, 'increment') && method_exists($castType::class, 'decrement'); - } - - /** - * Determine if the key is serializable using a custom class. - * - * @param string $key - * @return bool - * - * @throws \Illuminate\Database\Eloquent\InvalidCastException - */ - protected function isClassSerializable($key) - { - return ! $this->isEnumCastable($key) && - $this->isClassCastable($key) && - method_exists($this->resolveCasterClass($key), 'serialize'); - } - - /** - * Resolve the custom caster class for a given key. - * - * @param string $key - * @return mixed - */ - protected function resolveCasterClass($key) - { - $castType = $this->getCasts()[$key]; - - $arguments = []; - - if (is_string($castType) && str_contains($castType, ':')) { - $segments = explode(':', $castType, 2); - - $castType = $segments[0]; - $arguments = explode(',', $segments[1]); - } - - if (is_subclass_of($castType, Castable::class)) { - $castType = $castType::castUsing($arguments); - } - - if (is_object($castType)) { - return $castType; - } - - return new $castType(...$arguments); - } - - /** - * Parse the given caster class, removing any arguments. - * - * @param string $class - * @return string - */ - protected function parseCasterClass($class) - { - return ! str_contains($class, ':') - ? $class - : explode(':', $class, 2)[0]; - } - - /** - * Merge the cast class and attribute cast attributes back into the model. - * - * @return void - */ - protected function mergeAttributesFromCachedCasts() - { - $this->mergeAttributesFromClassCasts(); - $this->mergeAttributesFromAttributeCasts(); - } - - /** - * Merge the cast class attributes back into the model. - * - * @return void - */ - protected function mergeAttributesFromClassCasts() - { - foreach ($this->classCastCache as $key => $value) { - $caster = $this->resolveCasterClass($key); - - $this->attributes = array_merge( - $this->attributes, - $caster instanceof CastsInboundAttributes - ? [$key => $value] - : $this->normalizeCastClassResponse($key, $caster->set($this, $key, $value, $this->attributes)) - ); - } - } - - /** - * Merge the cast class attributes back into the model. - * - * @return void - */ - protected function mergeAttributesFromAttributeCasts() - { - foreach ($this->attributeCastCache as $key => $value) { - $attribute = $this->{Str::camel($key)}(); - - if ($attribute->get && ! $attribute->set) { - continue; - } - - $callback = $attribute->set ?: function ($value) use ($key) { - $this->attributes[$key] = $value; - }; - - $this->attributes = array_merge( - $this->attributes, - $this->normalizeCastClassResponse( - $key, $callback($value, $this->attributes) - ) - ); - } - } - - /** - * Normalize the response from a custom class caster. - * - * @param string $key - * @param mixed $value - * @return array - */ - protected function normalizeCastClassResponse($key, $value) - { - return is_array($value) ? $value : [$key => $value]; - } - - /** - * Get all of the current attributes on the model. - * - * @return array - */ - public function getAttributes() - { - $this->mergeAttributesFromCachedCasts(); - - return $this->attributes; - } - - /** - * Get all of the current attributes on the model for an insert operation. - * - * @return array - */ - protected function getAttributesForInsert() - { - return $this->getAttributes(); - } - - /** - * Set the array of model attributes. No checking is done. - * - * @param array $attributes - * @param bool $sync - * @return $this - */ - public function setRawAttributes(array $attributes, $sync = false) - { - $this->attributes = $attributes; - - if ($sync) { - $this->syncOriginal(); - } - - $this->classCastCache = []; - $this->attributeCastCache = []; - - return $this; - } - - /** - * Get the model's original attribute values. - * - * @param string|null $key - * @param mixed $default - * @return mixed|array - */ - public function getOriginal($key = null, $default = null) - { - return (new static)->setRawAttributes( - $this->original, $sync = true - )->getOriginalWithoutRewindingModel($key, $default); - } - - /** - * Get the model's original attribute values. - * - * @param string|null $key - * @param mixed $default - * @return mixed|array - */ - protected function getOriginalWithoutRewindingModel($key = null, $default = null) - { - if ($key) { - return $this->transformModelValue( - $key, Arr::get($this->original, $key, $default) - ); - } - - return collect($this->original)->mapWithKeys(function ($value, $key) { - return [$key => $this->transformModelValue($key, $value)]; - })->all(); - } - - /** - * Get the model's raw original attribute values. - * - * @param string|null $key - * @param mixed $default - * @return mixed|array - */ - public function getRawOriginal($key = null, $default = null) - { - return Arr::get($this->original, $key, $default); - } - - /** - * Get a subset of the model's attributes. - * - * @param array|mixed $attributes - * @return array - */ - public function only($attributes) - { - $results = []; - - foreach (is_array($attributes) ? $attributes : func_get_args() as $attribute) { - $results[$attribute] = $this->getAttribute($attribute); - } - - return $results; - } - - /** - * Sync the original attributes with the current. - * - * @return $this - */ - public function syncOriginal() - { - $this->original = $this->getAttributes(); - - return $this; - } - - /** - * Sync a single original attribute with its current value. - * - * @param string $attribute - * @return $this - */ - public function syncOriginalAttribute($attribute) - { - return $this->syncOriginalAttributes($attribute); - } - - /** - * Sync multiple original attribute with their current values. - * - * @param array|string $attributes - * @return $this - */ - public function syncOriginalAttributes($attributes) - { - $attributes = is_array($attributes) ? $attributes : func_get_args(); - - $modelAttributes = $this->getAttributes(); - - foreach ($attributes as $attribute) { - $this->original[$attribute] = $modelAttributes[$attribute]; - } - - return $this; - } - - /** - * Sync the changed attributes. - * - * @return $this - */ - public function syncChanges() - { - $this->changes = $this->getDirty(); - - return $this; - } - - /** - * Determine if the model or any of the given attribute(s) have been modified. - * - * @param array|string|null $attributes - * @return bool - */ - public function isDirty($attributes = null) - { - return $this->hasChanges( - $this->getDirty(), is_array($attributes) ? $attributes : func_get_args() - ); - } - - /** - * Determine if the model or all the given attribute(s) have remained the same. - * - * @param array|string|null $attributes - * @return bool - */ - public function isClean($attributes = null) - { - return ! $this->isDirty(...func_get_args()); - } - - /** - * Discard attribute changes and reset the attributes to their original state. - * - * @return $this - */ - public function discardChanges() - { - [$this->attributes, $this->changes] = [$this->original, []]; - - return $this; - } - - /** - * Determine if the model or any of the given attribute(s) were changed when the model was last saved. - * - * @param array|string|null $attributes - * @return bool - */ - public function wasChanged($attributes = null) - { - return $this->hasChanges( - $this->getChanges(), is_array($attributes) ? $attributes : func_get_args() - ); - } - - /** - * Determine if any of the given attributes were changed when the model was last saved. - * - * @param array $changes - * @param array|string|null $attributes - * @return bool - */ - protected function hasChanges($changes, $attributes = null) - { - // If no specific attributes were provided, we will just see if the dirty array - // already contains any attributes. If it does we will just return that this - // count is greater than zero. Else, we need to check specific attributes. - if (empty($attributes)) { - return count($changes) > 0; - } - - // Here we will spin through every attribute and see if this is in the array of - // dirty attributes. If it is, we will return true and if we make it through - // all of the attributes for the entire array we will return false at end. - foreach (Arr::wrap($attributes) as $attribute) { - if (array_key_exists($attribute, $changes)) { - return true; - } - } - - return false; - } - - /** - * Get the attributes that have been changed since the last sync. - * - * @return array - */ - public function getDirty() - { - $dirty = []; - - foreach ($this->getAttributes() as $key => $value) { - if (! $this->originalIsEquivalent($key)) { - $dirty[$key] = $value; - } - } - - return $dirty; - } - - /** - * Get the attributes that have been changed since the last sync for an update operation. - * - * @return array - */ - protected function getDirtyForUpdate() - { - return $this->getDirty(); - } - - /** - * Get the attributes that were changed when the model was last saved. - * - * @return array - */ - public function getChanges() - { - return $this->changes; - } - - /** - * Determine if the new and old values for a given key are equivalent. - * - * @param string $key - * @return bool - */ - public function originalIsEquivalent($key) - { - if (! array_key_exists($key, $this->original)) { - return false; - } - - $attribute = Arr::get($this->attributes, $key); - $original = Arr::get($this->original, $key); - - if ($attribute === $original) { - return true; - } elseif (is_null($attribute)) { - return false; - } elseif ($this->isDateAttribute($key) || $this->isDateCastableWithCustomFormat($key)) { - return $this->fromDateTime($attribute) === - $this->fromDateTime($original); - } elseif ($this->hasCast($key, ['object', 'collection'])) { - return $this->fromJson($attribute) === - $this->fromJson($original); - } elseif ($this->hasCast($key, ['real', 'float', 'double'])) { - if ($original === null) { - return false; - } - - return abs($this->castAttribute($key, $attribute) - $this->castAttribute($key, $original)) < PHP_FLOAT_EPSILON * 4; - } elseif ($this->hasCast($key, static::$primitiveCastTypes)) { - return $this->castAttribute($key, $attribute) === - $this->castAttribute($key, $original); - } elseif ($this->isClassCastable($key) && Str::startsWith($this->getCasts()[$key], [AsArrayObject::class, AsCollection::class])) { - return $this->fromJson($attribute) === $this->fromJson($original); - } elseif ($this->isClassCastable($key) && Str::startsWith($this->getCasts()[$key], [AsEnumArrayObject::class, AsEnumCollection::class])) { - return $this->fromJson($attribute) === $this->fromJson($original); - } elseif ($this->isClassCastable($key) && $original !== null && Str::startsWith($this->getCasts()[$key], [AsEncryptedArrayObject::class, AsEncryptedCollection::class])) { - return $this->fromEncryptedString($attribute) === $this->fromEncryptedString($original); - } - - return is_numeric($attribute) && is_numeric($original) - && strcmp((string) $attribute, (string) $original) === 0; - } - - /** - * Transform a raw model value using mutators, casts, etc. - * - * @param string $key - * @param mixed $value - * @return mixed - */ - protected function transformModelValue($key, $value) - { - // If the attribute has a get mutator, we will call that then return what - // it returns as the value, which is useful for transforming values on - // retrieval from the model to a form that is more useful for usage. - if ($this->hasGetMutator($key)) { - return $this->mutateAttribute($key, $value); - } elseif ($this->hasAttributeGetMutator($key)) { - return $this->mutateAttributeMarkedAttribute($key, $value); - } - - // If the attribute exists within the cast array, we will convert it to - // an appropriate native PHP type dependent upon the associated value - // given with the key in the pair. Dayle made this comment line up. - if ($this->hasCast($key)) { - if (static::preventsAccessingMissingAttributes() && - ! array_key_exists($key, $this->attributes) && - ($this->isEnumCastable($key) || - in_array($this->getCastType($key), static::$primitiveCastTypes))) { - $this->throwMissingAttributeExceptionIfApplicable($key); - } - - return $this->castAttribute($key, $value); - } - - // If the attribute is listed as a date, we will convert it to a DateTime - // instance on retrieval, which makes it quite convenient to work with - // date fields without having to create a mutator for each property. - if ($value !== null - && \in_array($key, $this->getDates(), false)) { - return $this->asDateTime($value); - } - - return $value; - } - - /** - * Append attributes to query when building a query. - * - * @param array|string $attributes - * @return $this - */ - public function append($attributes) - { - $this->appends = array_values(array_unique( - array_merge($this->appends, is_string($attributes) ? func_get_args() : $attributes) - )); - - return $this; - } - - /** - * Get the accessors that are being appended to model arrays. - * - * @return array - */ - public function getAppends() - { - return $this->appends; - } - - /** - * Set the accessors to append to model arrays. - * - * @param array $appends - * @return $this - */ - public function setAppends(array $appends) - { - $this->appends = $appends; - - return $this; - } - - /** - * Return whether the accessor attribute has been appended. - * - * @param string $attribute - * @return bool - */ - public function hasAppended($attribute) - { - return in_array($attribute, $this->appends); - } - - /** - * Get the mutated attributes for a given instance. - * - * @return array - */ - public function getMutatedAttributes() - { - if (! isset(static::$mutatorCache[static::class])) { - static::cacheMutatedAttributes($this); - } - - return static::$mutatorCache[static::class]; - } - - /** - * Extract and cache all the mutated attributes of a class. - * - * @param object|string $classOrInstance - * @return void - */ - public static function cacheMutatedAttributes($classOrInstance) - { - $reflection = new ReflectionClass($classOrInstance); - - $class = $reflection->getName(); - - static::$getAttributeMutatorCache[$class] = - collect($attributeMutatorMethods = static::getAttributeMarkedMutatorMethods($classOrInstance)) - ->mapWithKeys(function ($match) { - return [lcfirst(static::$snakeAttributes ? Str::snake($match) : $match) => true]; - })->all(); - - static::$mutatorCache[$class] = collect(static::getMutatorMethods($class)) - ->merge($attributeMutatorMethods) - ->map(function ($match) { - return lcfirst(static::$snakeAttributes ? Str::snake($match) : $match); - })->all(); - } - - /** - * Get all of the attribute mutator methods. - * - * @param mixed $class - * @return array - */ - protected static function getMutatorMethods($class) - { - preg_match_all('/(?<=^|;)get([^;]+?)Attribute(;|$)/', implode(';', get_class_methods($class)), $matches); - - return $matches[1]; - } - - /** - * Get all of the "Attribute" return typed attribute mutator methods. - * - * @param mixed $class - * @return array - */ - protected static function getAttributeMarkedMutatorMethods($class) - { - $instance = is_object($class) ? $class : new $class; - - return collect((new ReflectionClass($instance))->getMethods())->filter(function ($method) use ($instance) { - $returnType = $method->getReturnType(); - - if ($returnType instanceof ReflectionNamedType && - $returnType->getName() === Attribute::class) { - if (is_callable($method->invoke($instance)->get)) { - return true; - } - } - - return false; - })->map->name->values()->all(); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/QueriesRelationships.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/QueriesRelationships.php deleted file mode 100644 index 4322327c..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/QueriesRelationships.php +++ /dev/null @@ -1,891 +0,0 @@ -=', $count = 1, $boolean = 'and', ?Closure $callback = null) - { - if (is_string($relation)) { - if (str_contains($relation, '.')) { - return $this->hasNested($relation, $operator, $count, $boolean, $callback); - } - - $relation = $this->getRelationWithoutConstraints($relation); - } - - if ($relation instanceof MorphTo) { - return $this->hasMorph($relation, ['*'], $operator, $count, $boolean, $callback); - } - - // If we only need to check for the existence of the relation, then we can optimize - // the subquery to only run a "where exists" clause instead of this full "count" - // clause. This will make these queries run much faster compared with a count. - $method = $this->canUseExistsForExistenceCheck($operator, $count) - ? 'getRelationExistenceQuery' - : 'getRelationExistenceCountQuery'; - - $hasQuery = $relation->{$method}( - $relation->getRelated()->newQueryWithoutRelationships(), $this - ); - - // Next we will call any given callback as an "anonymous" scope so they can get the - // proper logical grouping of the where clauses if needed by this Eloquent query - // builder. Then, we will be ready to finalize and return this query instance. - if ($callback) { - $hasQuery->callScope($callback); - } - - return $this->addHasWhere( - $hasQuery, $relation, $operator, $count, $boolean - ); - } - - /** - * Add nested relationship count / exists conditions to the query. - * - * Sets up recursive call to whereHas until we finish the nested relation. - * - * @param string $relations - * @param string $operator - * @param int $count - * @param string $boolean - * @param \Closure|null $callback - * @return \Illuminate\Database\Eloquent\Builder|static - */ - protected function hasNested($relations, $operator = '>=', $count = 1, $boolean = 'and', $callback = null) - { - $relations = explode('.', $relations); - - $doesntHave = $operator === '<' && $count === 1; - - if ($doesntHave) { - $operator = '>='; - $count = 1; - } - - $closure = function ($q) use (&$closure, &$relations, $operator, $count, $callback) { - // In order to nest "has", we need to add count relation constraints on the - // callback Closure. We'll do this by simply passing the Closure its own - // reference to itself so it calls itself recursively on each segment. - count($relations) > 1 - ? $q->whereHas(array_shift($relations), $closure) - : $q->has(array_shift($relations), $operator, $count, 'and', $callback); - }; - - return $this->has(array_shift($relations), $doesntHave ? '<' : '>=', 1, $boolean, $closure); - } - - /** - * Add a relationship count / exists condition to the query with an "or". - * - * @param string $relation - * @param string $operator - * @param int $count - * @return \Illuminate\Database\Eloquent\Builder|static - */ - public function orHas($relation, $operator = '>=', $count = 1) - { - return $this->has($relation, $operator, $count, 'or'); - } - - /** - * Add a relationship count / exists condition to the query. - * - * @param string $relation - * @param string $boolean - * @param \Closure|null $callback - * @return \Illuminate\Database\Eloquent\Builder|static - */ - public function doesntHave($relation, $boolean = 'and', ?Closure $callback = null) - { - return $this->has($relation, '<', 1, $boolean, $callback); - } - - /** - * Add a relationship count / exists condition to the query with an "or". - * - * @param string $relation - * @return \Illuminate\Database\Eloquent\Builder|static - */ - public function orDoesntHave($relation) - { - return $this->doesntHave($relation, 'or'); - } - - /** - * Add a relationship count / exists condition to the query with where clauses. - * - * @param string $relation - * @param \Closure|null $callback - * @param string $operator - * @param int $count - * @return \Illuminate\Database\Eloquent\Builder|static - */ - public function whereHas($relation, ?Closure $callback = null, $operator = '>=', $count = 1) - { - return $this->has($relation, $operator, $count, 'and', $callback); - } - - /** - * Add a relationship count / exists condition to the query with where clauses. - * - * Also load the relationship with same condition. - * - * @param string $relation - * @param \Closure|null $callback - * @param string $operator - * @param int $count - * @return \Illuminate\Database\Eloquent\Builder|static - */ - public function withWhereHas($relation, ?Closure $callback = null, $operator = '>=', $count = 1) - { - return $this->whereHas(Str::before($relation, ':'), $callback, $operator, $count) - ->with($callback ? [$relation => fn ($query) => $callback($query)] : $relation); - } - - /** - * Add a relationship count / exists condition to the query with where clauses and an "or". - * - * @param string $relation - * @param \Closure|null $callback - * @param string $operator - * @param int $count - * @return \Illuminate\Database\Eloquent\Builder|static - */ - public function orWhereHas($relation, ?Closure $callback = null, $operator = '>=', $count = 1) - { - return $this->has($relation, $operator, $count, 'or', $callback); - } - - /** - * Add a relationship count / exists condition to the query with where clauses. - * - * @param string $relation - * @param \Closure|null $callback - * @return \Illuminate\Database\Eloquent\Builder|static - */ - public function whereDoesntHave($relation, ?Closure $callback = null) - { - return $this->doesntHave($relation, 'and', $callback); - } - - /** - * Add a relationship count / exists condition to the query with where clauses and an "or". - * - * @param string $relation - * @param \Closure|null $callback - * @return \Illuminate\Database\Eloquent\Builder|static - */ - public function orWhereDoesntHave($relation, ?Closure $callback = null) - { - return $this->doesntHave($relation, 'or', $callback); - } - - /** - * Add a polymorphic relationship count / exists condition to the query. - * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation - * @param string|array $types - * @param string $operator - * @param int $count - * @param string $boolean - * @param \Closure|null $callback - * @return \Illuminate\Database\Eloquent\Builder|static - */ - public function hasMorph($relation, $types, $operator = '>=', $count = 1, $boolean = 'and', ?Closure $callback = null) - { - if (is_string($relation)) { - $relation = $this->getRelationWithoutConstraints($relation); - } - - $types = (array) $types; - - if ($types === ['*']) { - $types = $this->model->newModelQuery()->distinct()->pluck($relation->getMorphType())->filter()->all(); - } - - if (empty($types)) { - return $this->where(new Expression('0'), $operator, $count, $boolean); - } - - foreach ($types as &$type) { - $type = Relation::getMorphedModel($type) ?? $type; - } - - return $this->where(function ($query) use ($relation, $callback, $operator, $count, $types) { - foreach ($types as $type) { - $query->orWhere(function ($query) use ($relation, $callback, $operator, $count, $type) { - $belongsTo = $this->getBelongsToRelation($relation, $type); - - if ($callback) { - $callback = function ($query) use ($callback, $type) { - return $callback($query, $type); - }; - } - - $query->where($this->qualifyColumn($relation->getMorphType()), '=', (new $type)->getMorphClass()) - ->whereHas($belongsTo, $callback, $operator, $count); - }); - } - }, null, null, $boolean); - } - - /** - * Get the BelongsTo relationship for a single polymorphic type. - * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo $relation - * @param string $type - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo - */ - protected function getBelongsToRelation(MorphTo $relation, $type) - { - $belongsTo = Relation::noConstraints(function () use ($relation, $type) { - return $this->model->belongsTo( - $type, - $relation->getForeignKeyName(), - $relation->getOwnerKeyName() - ); - }); - - $belongsTo->getQuery()->mergeConstraintsFrom($relation->getQuery()); - - return $belongsTo; - } - - /** - * Add a polymorphic relationship count / exists condition to the query with an "or". - * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation - * @param string|array $types - * @param string $operator - * @param int $count - * @return \Illuminate\Database\Eloquent\Builder|static - */ - public function orHasMorph($relation, $types, $operator = '>=', $count = 1) - { - return $this->hasMorph($relation, $types, $operator, $count, 'or'); - } - - /** - * Add a polymorphic relationship count / exists condition to the query. - * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation - * @param string|array $types - * @param string $boolean - * @param \Closure|null $callback - * @return \Illuminate\Database\Eloquent\Builder|static - */ - public function doesntHaveMorph($relation, $types, $boolean = 'and', ?Closure $callback = null) - { - return $this->hasMorph($relation, $types, '<', 1, $boolean, $callback); - } - - /** - * Add a polymorphic relationship count / exists condition to the query with an "or". - * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation - * @param string|array $types - * @return \Illuminate\Database\Eloquent\Builder|static - */ - public function orDoesntHaveMorph($relation, $types) - { - return $this->doesntHaveMorph($relation, $types, 'or'); - } - - /** - * Add a polymorphic relationship count / exists condition to the query with where clauses. - * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation - * @param string|array $types - * @param \Closure|null $callback - * @param string $operator - * @param int $count - * @return \Illuminate\Database\Eloquent\Builder|static - */ - public function whereHasMorph($relation, $types, ?Closure $callback = null, $operator = '>=', $count = 1) - { - return $this->hasMorph($relation, $types, $operator, $count, 'and', $callback); - } - - /** - * Add a polymorphic relationship count / exists condition to the query with where clauses and an "or". - * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation - * @param string|array $types - * @param \Closure|null $callback - * @param string $operator - * @param int $count - * @return \Illuminate\Database\Eloquent\Builder|static - */ - public function orWhereHasMorph($relation, $types, ?Closure $callback = null, $operator = '>=', $count = 1) - { - return $this->hasMorph($relation, $types, $operator, $count, 'or', $callback); - } - - /** - * Add a polymorphic relationship count / exists condition to the query with where clauses. - * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation - * @param string|array $types - * @param \Closure|null $callback - * @return \Illuminate\Database\Eloquent\Builder|static - */ - public function whereDoesntHaveMorph($relation, $types, ?Closure $callback = null) - { - return $this->doesntHaveMorph($relation, $types, 'and', $callback); - } - - /** - * Add a polymorphic relationship count / exists condition to the query with where clauses and an "or". - * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation - * @param string|array $types - * @param \Closure|null $callback - * @return \Illuminate\Database\Eloquent\Builder|static - */ - public function orWhereDoesntHaveMorph($relation, $types, ?Closure $callback = null) - { - return $this->doesntHaveMorph($relation, $types, 'or', $callback); - } - - /** - * Add a basic where clause to a relationship query. - * - * @param string $relation - * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column - * @param mixed $operator - * @param mixed $value - * @return \Illuminate\Database\Eloquent\Builder|static - */ - public function whereRelation($relation, $column, $operator = null, $value = null) - { - return $this->whereHas($relation, function ($query) use ($column, $operator, $value) { - if ($column instanceof Closure) { - $column($query); - } else { - $query->where($column, $operator, $value); - } - }); - } - - /** - * Add an "or where" clause to a relationship query. - * - * @param string $relation - * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column - * @param mixed $operator - * @param mixed $value - * @return \Illuminate\Database\Eloquent\Builder|static - */ - public function orWhereRelation($relation, $column, $operator = null, $value = null) - { - return $this->orWhereHas($relation, function ($query) use ($column, $operator, $value) { - if ($column instanceof Closure) { - $column($query); - } else { - $query->where($column, $operator, $value); - } - }); - } - - /** - * Add a polymorphic relationship condition to the query with a where clause. - * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation - * @param string|array $types - * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column - * @param mixed $operator - * @param mixed $value - * @return \Illuminate\Database\Eloquent\Builder|static - */ - public function whereMorphRelation($relation, $types, $column, $operator = null, $value = null) - { - return $this->whereHasMorph($relation, $types, function ($query) use ($column, $operator, $value) { - $query->where($column, $operator, $value); - }); - } - - /** - * Add a polymorphic relationship condition to the query with an "or where" clause. - * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation - * @param string|array $types - * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column - * @param mixed $operator - * @param mixed $value - * @return \Illuminate\Database\Eloquent\Builder|static - */ - public function orWhereMorphRelation($relation, $types, $column, $operator = null, $value = null) - { - return $this->orWhereHasMorph($relation, $types, function ($query) use ($column, $operator, $value) { - $query->where($column, $operator, $value); - }); - } - - /** - * Add a morph-to relationship condition to the query. - * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation - * @param \Illuminate\Database\Eloquent\Model|string|null $model - * @return \Illuminate\Database\Eloquent\Builder|static - */ - public function whereMorphedTo($relation, $model, $boolean = 'and') - { - if (is_string($relation)) { - $relation = $this->getRelationWithoutConstraints($relation); - } - - if (is_null($model)) { - return $this->whereNull($relation->getMorphType(), $boolean); - } - - if (is_string($model)) { - $morphMap = Relation::morphMap(); - - if (! empty($morphMap) && in_array($model, $morphMap)) { - $model = array_search($model, $morphMap, true); - } - - return $this->where($relation->getMorphType(), $model, null, $boolean); - } - - return $this->where(function ($query) use ($relation, $model) { - $query->where($relation->getMorphType(), $model->getMorphClass()) - ->where($relation->getForeignKeyName(), $model->getKey()); - }, null, null, $boolean); - } - - /** - * Add a not morph-to relationship condition to the query. - * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation - * @param \Illuminate\Database\Eloquent\Model|string $model - * @return \Illuminate\Database\Eloquent\Builder|static - */ - public function whereNotMorphedTo($relation, $model, $boolean = 'and') - { - if (is_string($relation)) { - $relation = $this->getRelationWithoutConstraints($relation); - } - - if (is_string($model)) { - $morphMap = Relation::morphMap(); - - if (! empty($morphMap) && in_array($model, $morphMap)) { - $model = array_search($model, $morphMap, true); - } - - return $this->whereNot($relation->getMorphType(), '<=>', $model, $boolean); - } - - return $this->whereNot(function ($query) use ($relation, $model) { - $query->where($relation->getMorphType(), '<=>', $model->getMorphClass()) - ->where($relation->getForeignKeyName(), '<=>', $model->getKey()); - }, null, null, $boolean); - } - - /** - * Add a morph-to relationship condition to the query with an "or where" clause. - * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation - * @param \Illuminate\Database\Eloquent\Model|string|null $model - * @return \Illuminate\Database\Eloquent\Builder|static - */ - public function orWhereMorphedTo($relation, $model) - { - return $this->whereMorphedTo($relation, $model, 'or'); - } - - /** - * Add a not morph-to relationship condition to the query with an "or where" clause. - * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation - * @param \Illuminate\Database\Eloquent\Model|string $model - * @return \Illuminate\Database\Eloquent\Builder|static - */ - public function orWhereNotMorphedTo($relation, $model) - { - return $this->whereNotMorphedTo($relation, $model, 'or'); - } - - /** - * Add a "belongs to" relationship where clause to the query. - * - * @param \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection<\Illuminate\Database\Eloquent\Model> $related - * @param string|null $relationshipName - * @param string $boolean - * @return $this - * - * @throws \Illuminate\Database\Eloquent\RelationNotFoundException - */ - public function whereBelongsTo($related, $relationshipName = null, $boolean = 'and') - { - if (! $related instanceof Collection) { - $relatedCollection = $related->newCollection([$related]); - } else { - $relatedCollection = $related; - - $related = $relatedCollection->first(); - } - - if ($relatedCollection->isEmpty()) { - throw new InvalidArgumentException('Collection given to whereBelongsTo method may not be empty.'); - } - - if ($relationshipName === null) { - $relationshipName = Str::camel(class_basename($related)); - } - - try { - $relationship = $this->model->{$relationshipName}(); - } catch (BadMethodCallException) { - throw RelationNotFoundException::make($this->model, $relationshipName); - } - - if (! $relationship instanceof BelongsTo) { - throw RelationNotFoundException::make($this->model, $relationshipName, BelongsTo::class); - } - - $this->whereIn( - $relationship->getQualifiedForeignKeyName(), - $relatedCollection->pluck($relationship->getOwnerKeyName())->toArray(), - $boolean, - ); - - return $this; - } - - /** - * Add an "BelongsTo" relationship with an "or where" clause to the query. - * - * @param \Illuminate\Database\Eloquent\Model $related - * @param string|null $relationshipName - * @return $this - * - * @throws \RuntimeException - */ - public function orWhereBelongsTo($related, $relationshipName = null) - { - return $this->whereBelongsTo($related, $relationshipName, 'or'); - } - - /** - * Add subselect queries to include an aggregate value for a relationship. - * - * @param mixed $relations - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param string $function - * @return $this - */ - public function withAggregate($relations, $column, $function = null) - { - if (empty($relations)) { - return $this; - } - - if (is_null($this->query->columns)) { - $this->query->select([$this->query->from.'.*']); - } - - $relations = is_array($relations) ? $relations : [$relations]; - - foreach ($this->parseWithRelations($relations) as $name => $constraints) { - // First we will determine if the name has been aliased using an "as" clause on the name - // and if it has we will extract the actual relationship name and the desired name of - // the resulting column. This allows multiple aggregates on the same relationships. - $segments = explode(' ', $name); - - unset($alias); - - if (count($segments) === 3 && Str::lower($segments[1]) === 'as') { - [$name, $alias] = [$segments[0], $segments[2]]; - } - - $relation = $this->getRelationWithoutConstraints($name); - - if ($function) { - if ($this->getQuery()->getGrammar()->isExpression($column)) { - $aggregateColumn = $this->getQuery()->getGrammar()->getValue($column); - } else { - $hashedColumn = $this->getRelationHashedColumn($column, $relation); - - $aggregateColumn = $this->getQuery()->getGrammar()->wrap( - $column === '*' ? $column : $relation->getRelated()->qualifyColumn($hashedColumn) - ); - } - - $expression = $function === 'exists' ? $aggregateColumn : sprintf('%s(%s)', $function, $aggregateColumn); - } else { - $expression = $this->getQuery()->getGrammar()->getValue($column); - } - - // Here, we will grab the relationship sub-query and prepare to add it to the main query - // as a sub-select. First, we'll get the "has" query and use that to get the relation - // sub-query. We'll format this relationship name and append this column if needed. - $query = $relation->getRelationExistenceQuery( - $relation->getRelated()->newQuery(), $this, new Expression($expression) - )->setBindings([], 'select'); - - $query->callScope($constraints); - - $query = $query->mergeConstraintsFrom($relation->getQuery())->toBase(); - - // If the query contains certain elements like orderings / more than one column selected - // then we will remove those elements from the query so that it will execute properly - // when given to the database. Otherwise, we may receive SQL errors or poor syntax. - $query->orders = null; - $query->setBindings([], 'order'); - - if (count($query->columns) > 1) { - $query->columns = [$query->columns[0]]; - $query->bindings['select'] = []; - } - - // Finally, we will make the proper column alias to the query and run this sub-select on - // the query builder. Then, we will return the builder instance back to the developer - // for further constraint chaining that needs to take place on the query as needed. - $alias ??= Str::snake( - preg_replace('/[^[:alnum:][:space:]_]/u', '', "$name $function {$this->getQuery()->getGrammar()->getValue($column)}") - ); - - if ($function === 'exists') { - $this->selectRaw( - sprintf('exists(%s) as %s', $query->toSql(), $this->getQuery()->grammar->wrap($alias)), - $query->getBindings() - )->withCasts([$alias => 'bool']); - } else { - $this->selectSub( - $function ? $query : $query->limit(1), - $alias - ); - } - } - - return $this; - } - - /** - * Get the relation hashed column name for the given column and relation. - * - * @param string $column - * @param \Illuminate\Database\Eloquent\Relations\Relation $relation - * @return string - */ - protected function getRelationHashedColumn($column, $relation) - { - if (str_contains($column, '.')) { - return $column; - } - - return $this->getQuery()->from === $relation->getQuery()->getQuery()->from - ? "{$relation->getRelationCountHash(false)}.$column" - : $column; - } - - /** - * Add subselect queries to count the relations. - * - * @param mixed $relations - * @return $this - */ - public function withCount($relations) - { - return $this->withAggregate(is_array($relations) ? $relations : func_get_args(), '*', 'count'); - } - - /** - * Add subselect queries to include the max of the relation's column. - * - * @param string|array $relation - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @return $this - */ - public function withMax($relation, $column) - { - return $this->withAggregate($relation, $column, 'max'); - } - - /** - * Add subselect queries to include the min of the relation's column. - * - * @param string|array $relation - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @return $this - */ - public function withMin($relation, $column) - { - return $this->withAggregate($relation, $column, 'min'); - } - - /** - * Add subselect queries to include the sum of the relation's column. - * - * @param string|array $relation - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @return $this - */ - public function withSum($relation, $column) - { - return $this->withAggregate($relation, $column, 'sum'); - } - - /** - * Add subselect queries to include the average of the relation's column. - * - * @param string|array $relation - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @return $this - */ - public function withAvg($relation, $column) - { - return $this->withAggregate($relation, $column, 'avg'); - } - - /** - * Add subselect queries to include the existence of related models. - * - * @param string|array $relation - * @return $this - */ - public function withExists($relation) - { - return $this->withAggregate($relation, '*', 'exists'); - } - - /** - * Add the "has" condition where clause to the query. - * - * @param \Illuminate\Database\Eloquent\Builder $hasQuery - * @param \Illuminate\Database\Eloquent\Relations\Relation $relation - * @param string $operator - * @param int $count - * @param string $boolean - * @return \Illuminate\Database\Eloquent\Builder|static - */ - protected function addHasWhere(Builder $hasQuery, Relation $relation, $operator, $count, $boolean) - { - $hasQuery->mergeConstraintsFrom($relation->getQuery()); - - return $this->canUseExistsForExistenceCheck($operator, $count) - ? $this->addWhereExistsQuery($hasQuery->toBase(), $boolean, $operator === '<' && $count === 1) - : $this->addWhereCountQuery($hasQuery->toBase(), $operator, $count, $boolean); - } - - /** - * Merge the where constraints from another query to the current query. - * - * @param \Illuminate\Database\Eloquent\Builder $from - * @return \Illuminate\Database\Eloquent\Builder|static - */ - public function mergeConstraintsFrom(Builder $from) - { - $whereBindings = $from->getQuery()->getRawBindings()['where'] ?? []; - - $wheres = $from->getQuery()->from !== $this->getQuery()->from - ? $this->requalifyWhereTables( - $from->getQuery()->wheres, - $from->getQuery()->grammar->getValue($from->getQuery()->from), - $this->getModel()->getTable() - ) : $from->getQuery()->wheres; - - // Here we have some other query that we want to merge the where constraints from. We will - // copy over any where constraints on the query as well as remove any global scopes the - // query might have removed. Then we will return ourselves with the finished merging. - return $this->withoutGlobalScopes( - $from->removedScopes() - )->mergeWheres( - $wheres, $whereBindings - ); - } - - /** - * Updates the table name for any columns with a new qualified name. - * - * @param array $wheres - * @param string $from - * @param string $to - * @return array - */ - protected function requalifyWhereTables(array $wheres, string $from, string $to): array - { - return collect($wheres)->map(function ($where) use ($from, $to) { - return collect($where)->map(function ($value) use ($from, $to) { - return is_string($value) && str_starts_with($value, $from.'.') - ? $to.'.'.Str::afterLast($value, '.') - : $value; - }); - })->toArray(); - } - - /** - * Add a sub-query count clause to this query. - * - * @param \Illuminate\Database\Query\Builder $query - * @param string $operator - * @param int $count - * @param string $boolean - * @return $this - */ - protected function addWhereCountQuery(QueryBuilder $query, $operator = '>=', $count = 1, $boolean = 'and') - { - $this->query->addBinding($query->getBindings(), 'where'); - - return $this->where( - new Expression('('.$query->toSql().')'), - $operator, - is_numeric($count) ? new Expression($count) : $count, - $boolean - ); - } - - /** - * Get the "has relation" base query instance. - * - * @param string $relation - * @return \Illuminate\Database\Eloquent\Relations\Relation - */ - protected function getRelationWithoutConstraints($relation) - { - return Relation::noConstraints(function () use ($relation) { - return $this->getModel()->{$relation}(); - }); - } - - /** - * Check if we can run an "exists" query to optimize performance. - * - * @param string $operator - * @param int $count - * @return bool - */ - protected function canUseExistsForExistenceCheck($operator, $count) - { - return ($operator === '>=' || $operator === '<') && $count === 1; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Factories/Factory.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Factories/Factory.php deleted file mode 100644 index 63df5b83..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Factories/Factory.php +++ /dev/null @@ -1,934 +0,0 @@ - - */ - protected $model; - - /** - * The number of models that should be generated. - * - * @var int|null - */ - protected $count; - - /** - * The state transformations that will be applied to the model. - * - * @var \Illuminate\Support\Collection - */ - protected $states; - - /** - * The parent relationships that will be applied to the model. - * - * @var \Illuminate\Support\Collection - */ - protected $has; - - /** - * The child relationships that will be applied to the model. - * - * @var \Illuminate\Support\Collection - */ - protected $for; - - /** - * The model instances to always use when creating relationships. - * - * @var \Illuminate\Support\Collection - */ - protected $recycle; - - /** - * The "after making" callbacks that will be applied to the model. - * - * @var \Illuminate\Support\Collection - */ - protected $afterMaking; - - /** - * The "after creating" callbacks that will be applied to the model. - * - * @var \Illuminate\Support\Collection - */ - protected $afterCreating; - - /** - * The name of the database connection that will be used to create the models. - * - * @var string|null - */ - protected $connection; - - /** - * The current Faker instance. - * - * @var \Faker\Generator - */ - protected $faker; - - /** - * The default namespace where factories reside. - * - * @var string - */ - public static $namespace = 'Database\\Factories\\'; - - /** - * The default model name resolver. - * - * @var callable - */ - protected static $modelNameResolver; - - /** - * The factory name resolver. - * - * @var callable - */ - protected static $factoryNameResolver; - - /** - * Create a new factory instance. - * - * @param int|null $count - * @param \Illuminate\Support\Collection|null $states - * @param \Illuminate\Support\Collection|null $has - * @param \Illuminate\Support\Collection|null $for - * @param \Illuminate\Support\Collection|null $afterMaking - * @param \Illuminate\Support\Collection|null $afterCreating - * @param string|null $connection - * @param \Illuminate\Support\Collection|null $recycle - * @return void - */ - public function __construct($count = null, - ?Collection $states = null, - ?Collection $has = null, - ?Collection $for = null, - ?Collection $afterMaking = null, - ?Collection $afterCreating = null, - $connection = null, - ?Collection $recycle = null) - { - $this->count = $count; - $this->states = $states ?? new Collection; - $this->has = $has ?? new Collection; - $this->for = $for ?? new Collection; - $this->afterMaking = $afterMaking ?? new Collection; - $this->afterCreating = $afterCreating ?? new Collection; - $this->connection = $connection; - $this->recycle = $recycle ?? new Collection; - $this->faker = $this->withFaker(); - } - - /** - * Define the model's default state. - * - * @return array - */ - abstract public function definition(); - - /** - * Get a new factory instance for the given attributes. - * - * @param (callable(array): array)|array $attributes - * @return static - */ - public static function new($attributes = []) - { - return (new static)->state($attributes)->configure(); - } - - /** - * Get a new factory instance for the given number of models. - * - * @param int $count - * @return static - */ - public static function times(int $count) - { - return static::new()->count($count); - } - - /** - * Configure the factory. - * - * @return static - */ - public function configure() - { - return $this; - } - - /** - * Get the raw attributes generated by the factory. - * - * @param (callable(array): array)|array $attributes - * @param \Illuminate\Database\Eloquent\Model|null $parent - * @return array - */ - public function raw($attributes = [], ?Model $parent = null) - { - if ($this->count === null) { - return $this->state($attributes)->getExpandedAttributes($parent); - } - - return array_map(function () use ($attributes, $parent) { - return $this->state($attributes)->getExpandedAttributes($parent); - }, range(1, $this->count)); - } - - /** - * Create a single model and persist it to the database. - * - * @param (callable(array): array)|array $attributes - * @return \Illuminate\Database\Eloquent\Model|TModel - */ - public function createOne($attributes = []) - { - return $this->count(null)->create($attributes); - } - - /** - * Create a single model and persist it to the database without dispatching any model events. - * - * @param (callable(array): array)|array $attributes - * @return \Illuminate\Database\Eloquent\Model|TModel - */ - public function createOneQuietly($attributes = []) - { - return $this->count(null)->createQuietly($attributes); - } - - /** - * Create a collection of models and persist them to the database. - * - * @param int|null|iterable> $records - * @return \Illuminate\Database\Eloquent\Collection - */ - public function createMany(int|iterable|null $records = null) - { - if (is_null($records)) { - $records = $this->count ?? 1; - } - - if (is_numeric($records)) { - $records = array_fill(0, $records, []); - } - - return new EloquentCollection( - collect($records)->map(function ($record) { - return $this->state($record)->create(); - }) - ); - } - - /** - * Create a collection of models and persist them to the database without dispatching any model events. - * - * @param int|null|iterable> $records - * @return \Illuminate\Database\Eloquent\Collection - */ - public function createManyQuietly(int|iterable|null $records = null) - { - return Model::withoutEvents(function () use ($records) { - return $this->createMany($records); - }); - } - - /** - * Create a collection of models and persist them to the database. - * - * @param (callable(array): array)|array $attributes - * @param \Illuminate\Database\Eloquent\Model|null $parent - * @return \Illuminate\Database\Eloquent\Collection|\Illuminate\Database\Eloquent\Model|TModel - */ - public function create($attributes = [], ?Model $parent = null) - { - if (! empty($attributes)) { - return $this->state($attributes)->create([], $parent); - } - - $results = $this->make($attributes, $parent); - - if ($results instanceof Model) { - $this->store(collect([$results])); - - $this->callAfterCreating(collect([$results]), $parent); - } else { - $this->store($results); - - $this->callAfterCreating($results, $parent); - } - - return $results; - } - - /** - * Create a collection of models and persist them to the database without dispatching any model events. - * - * @param (callable(array): array)|array $attributes - * @param \Illuminate\Database\Eloquent\Model|null $parent - * @return \Illuminate\Database\Eloquent\Collection|\Illuminate\Database\Eloquent\Model|TModel - */ - public function createQuietly($attributes = [], ?Model $parent = null) - { - return Model::withoutEvents(function () use ($attributes, $parent) { - return $this->create($attributes, $parent); - }); - } - - /** - * Create a callback that persists a model in the database when invoked. - * - * @param array $attributes - * @param \Illuminate\Database\Eloquent\Model|null $parent - * @return \Closure(): (\Illuminate\Database\Eloquent\Collection|\Illuminate\Database\Eloquent\Model|TModel) - */ - public function lazy(array $attributes = [], ?Model $parent = null) - { - return fn () => $this->create($attributes, $parent); - } - - /** - * Set the connection name on the results and store them. - * - * @param \Illuminate\Support\Collection $results - * @return void - */ - protected function store(Collection $results) - { - $results->each(function ($model) { - if (! isset($this->connection)) { - $model->setConnection($model->newQueryWithoutScopes()->getConnection()->getName()); - } - - $model->save(); - - foreach ($model->getRelations() as $name => $items) { - if ($items instanceof Enumerable && $items->isEmpty()) { - $model->unsetRelation($name); - } - } - - $this->createChildren($model); - }); - } - - /** - * Create the children for the given model. - * - * @param \Illuminate\Database\Eloquent\Model $model - * @return void - */ - protected function createChildren(Model $model) - { - Model::unguarded(function () use ($model) { - $this->has->each(function ($has) use ($model) { - $has->recycle($this->recycle)->createFor($model); - }); - }); - } - - /** - * Make a single instance of the model. - * - * @param (callable(array): array)|array $attributes - * @return \Illuminate\Database\Eloquent\Model|TModel - */ - public function makeOne($attributes = []) - { - return $this->count(null)->make($attributes); - } - - /** - * Create a collection of models. - * - * @param (callable(array): array)|array $attributes - * @param \Illuminate\Database\Eloquent\Model|null $parent - * @return \Illuminate\Database\Eloquent\Collection|\Illuminate\Database\Eloquent\Model|TModel - */ - public function make($attributes = [], ?Model $parent = null) - { - if (! empty($attributes)) { - return $this->state($attributes)->make([], $parent); - } - - if ($this->count === null) { - return tap($this->makeInstance($parent), function ($instance) { - $this->callAfterMaking(collect([$instance])); - }); - } - - if ($this->count < 1) { - return $this->newModel()->newCollection(); - } - - $instances = $this->newModel()->newCollection(array_map(function () use ($parent) { - return $this->makeInstance($parent); - }, range(1, $this->count))); - - $this->callAfterMaking($instances); - - return $instances; - } - - /** - * Make an instance of the model with the given attributes. - * - * @param \Illuminate\Database\Eloquent\Model|null $parent - * @return \Illuminate\Database\Eloquent\Model - */ - protected function makeInstance(?Model $parent) - { - return Model::unguarded(function () use ($parent) { - return tap($this->newModel($this->getExpandedAttributes($parent)), function ($instance) { - if (isset($this->connection)) { - $instance->setConnection($this->connection); - } - }); - }); - } - - /** - * Get a raw attributes array for the model. - * - * @param \Illuminate\Database\Eloquent\Model|null $parent - * @return mixed - */ - protected function getExpandedAttributes(?Model $parent) - { - return $this->expandAttributes($this->getRawAttributes($parent)); - } - - /** - * Get the raw attributes for the model as an array. - * - * @param \Illuminate\Database\Eloquent\Model|null $parent - * @return array - */ - protected function getRawAttributes(?Model $parent) - { - return $this->states->pipe(function ($states) { - return $this->for->isEmpty() ? $states : new Collection(array_merge([function () { - return $this->parentResolvers(); - }], $states->all())); - })->reduce(function ($carry, $state) use ($parent) { - if ($state instanceof Closure) { - $state = $state->bindTo($this); - } - - return array_merge($carry, $state($carry, $parent)); - }, $this->definition()); - } - - /** - * Create the parent relationship resolvers (as deferred Closures). - * - * @return array - */ - protected function parentResolvers() - { - $model = $this->newModel(); - - return $this->for->map(function (BelongsToRelationship $for) use ($model) { - return $for->recycle($this->recycle)->attributesFor($model); - })->collapse()->all(); - } - - /** - * Expand all attributes to their underlying values. - * - * @param array $definition - * @return array - */ - protected function expandAttributes(array $definition) - { - return collect($definition) - ->map($evaluateRelations = function ($attribute) { - if ($attribute instanceof self) { - $attribute = $this->getRandomRecycledModel($attribute->modelName())?->getKey() - ?? $attribute->recycle($this->recycle)->create()->getKey(); - } elseif ($attribute instanceof Model) { - $attribute = $attribute->getKey(); - } - - return $attribute; - }) - ->map(function ($attribute, $key) use (&$definition, $evaluateRelations) { - if (is_callable($attribute) && ! is_string($attribute) && ! is_array($attribute)) { - $attribute = $attribute($definition); - } - - $attribute = $evaluateRelations($attribute); - - $definition[$key] = $attribute; - - return $attribute; - }) - ->all(); - } - - /** - * Add a new state transformation to the model definition. - * - * @param (callable(array, \Illuminate\Database\Eloquent\Model|null): array)|array $state - * @return static - */ - public function state($state) - { - return $this->newInstance([ - 'states' => $this->states->concat([ - is_callable($state) ? $state : function () use ($state) { - return $state; - }, - ]), - ]); - } - - /** - * Set a single model attribute. - * - * @param string|int $key - * @param mixed $value - * @return static - */ - public function set($key, $value) - { - return $this->state([$key => $value]); - } - - /** - * Add a new sequenced state transformation to the model definition. - * - * @param mixed ...$sequence - * @return static - */ - public function sequence(...$sequence) - { - return $this->state(new Sequence(...$sequence)); - } - - /** - * Add a new sequenced state transformation to the model definition and update the pending creation count to the size of the sequence. - * - * @param array ...$sequence - * @return static - */ - public function forEachSequence(...$sequence) - { - return $this->state(new Sequence(...$sequence))->count(count($sequence)); - } - - /** - * Add a new cross joined sequenced state transformation to the model definition. - * - * @param array ...$sequence - * @return static - */ - public function crossJoinSequence(...$sequence) - { - return $this->state(new CrossJoinSequence(...$sequence)); - } - - /** - * Define a child relationship for the model. - * - * @param \Illuminate\Database\Eloquent\Factories\Factory $factory - * @param string|null $relationship - * @return static - */ - public function has(self $factory, $relationship = null) - { - return $this->newInstance([ - 'has' => $this->has->concat([new Relationship( - $factory, $relationship ?? $this->guessRelationship($factory->modelName()) - )]), - ]); - } - - /** - * Attempt to guess the relationship name for a "has" relationship. - * - * @param string $related - * @return string - */ - protected function guessRelationship(string $related) - { - $guess = Str::camel(Str::plural(class_basename($related))); - - return method_exists($this->modelName(), $guess) ? $guess : Str::singular($guess); - } - - /** - * Define an attached relationship for the model. - * - * @param \Illuminate\Database\Eloquent\Factories\Factory|\Illuminate\Support\Collection|\Illuminate\Database\Eloquent\Model|array $factory - * @param (callable(): array)|array $pivot - * @param string|null $relationship - * @return static - */ - public function hasAttached($factory, $pivot = [], $relationship = null) - { - return $this->newInstance([ - 'has' => $this->has->concat([new BelongsToManyRelationship( - $factory, - $pivot, - $relationship ?? Str::camel(Str::plural(class_basename( - $factory instanceof Factory - ? $factory->modelName() - : Collection::wrap($factory)->first() - ))) - )]), - ]); - } - - /** - * Define a parent relationship for the model. - * - * @param \Illuminate\Database\Eloquent\Factories\Factory|\Illuminate\Database\Eloquent\Model $factory - * @param string|null $relationship - * @return static - */ - public function for($factory, $relationship = null) - { - return $this->newInstance(['for' => $this->for->concat([new BelongsToRelationship( - $factory, - $relationship ?? Str::camel(class_basename( - $factory instanceof Factory ? $factory->modelName() : $factory - )) - )])]); - } - - /** - * Provide model instances to use instead of any nested factory calls when creating relationships. - * - * @param \Illuminate\Database\Eloquent\Model|\Illuminate\Support\Collection|array $model - * @return static - */ - public function recycle($model) - { - // Group provided models by the type and merge them into existing recycle collection - return $this->newInstance([ - 'recycle' => $this->recycle - ->flatten() - ->merge( - Collection::wrap($model instanceof Model ? func_get_args() : $model) - ->flatten() - )->groupBy(fn ($model) => get_class($model)), - ]); - } - - /** - * Retrieve a random model of a given type from previously provided models to recycle. - * - * @param string $modelClassName - * @return \Illuminate\Database\Eloquent\Model|null - */ - public function getRandomRecycledModel($modelClassName) - { - return $this->recycle->get($modelClassName)?->random(); - } - - /** - * Add a new "after making" callback to the model definition. - * - * @param \Closure(\Illuminate\Database\Eloquent\Model|TModel): mixed $callback - * @return static - */ - public function afterMaking(Closure $callback) - { - return $this->newInstance(['afterMaking' => $this->afterMaking->concat([$callback])]); - } - - /** - * Add a new "after creating" callback to the model definition. - * - * @param \Closure(\Illuminate\Database\Eloquent\Model|TModel, \Illuminate\Database\Eloquent\Model|null): mixed $callback - * @return static - */ - public function afterCreating(Closure $callback) - { - return $this->newInstance(['afterCreating' => $this->afterCreating->concat([$callback])]); - } - - /** - * Call the "after making" callbacks for the given model instances. - * - * @param \Illuminate\Support\Collection $instances - * @return void - */ - protected function callAfterMaking(Collection $instances) - { - $instances->each(function ($model) { - $this->afterMaking->each(function ($callback) use ($model) { - $callback($model); - }); - }); - } - - /** - * Call the "after creating" callbacks for the given model instances. - * - * @param \Illuminate\Support\Collection $instances - * @param \Illuminate\Database\Eloquent\Model|null $parent - * @return void - */ - protected function callAfterCreating(Collection $instances, ?Model $parent = null) - { - $instances->each(function ($model) use ($parent) { - $this->afterCreating->each(function ($callback) use ($model, $parent) { - $callback($model, $parent); - }); - }); - } - - /** - * Specify how many models should be generated. - * - * @param int|null $count - * @return static - */ - public function count(?int $count) - { - return $this->newInstance(['count' => $count]); - } - - /** - * Specify the database connection that should be used to generate models. - * - * @param string $connection - * @return static - */ - public function connection(string $connection) - { - return $this->newInstance(['connection' => $connection]); - } - - /** - * Create a new instance of the factory builder with the given mutated properties. - * - * @param array $arguments - * @return static - */ - protected function newInstance(array $arguments = []) - { - return new static(...array_values(array_merge([ - 'count' => $this->count, - 'states' => $this->states, - 'has' => $this->has, - 'for' => $this->for, - 'afterMaking' => $this->afterMaking, - 'afterCreating' => $this->afterCreating, - 'connection' => $this->connection, - 'recycle' => $this->recycle, - ], $arguments))); - } - - /** - * Get a new model instance. - * - * @param array $attributes - * @return \Illuminate\Database\Eloquent\Model|TModel - */ - public function newModel(array $attributes = []) - { - $model = $this->modelName(); - - return new $model($attributes); - } - - /** - * Get the name of the model that is generated by the factory. - * - * @return class-string<\Illuminate\Database\Eloquent\Model|TModel> - */ - public function modelName() - { - $resolver = static::$modelNameResolver ?? function (self $factory) { - $namespacedFactoryBasename = Str::replaceLast( - 'Factory', '', Str::replaceFirst(static::$namespace, '', get_class($factory)) - ); - - $factoryBasename = Str::replaceLast('Factory', '', class_basename($factory)); - - $appNamespace = static::appNamespace(); - - return class_exists($appNamespace.'Models\\'.$namespacedFactoryBasename) - ? $appNamespace.'Models\\'.$namespacedFactoryBasename - : $appNamespace.$factoryBasename; - }; - - return $this->model ?? $resolver($this); - } - - /** - * Specify the callback that should be invoked to guess model names based on factory names. - * - * @param callable(self): class-string<\Illuminate\Database\Eloquent\Model|TModel> $callback - * @return void - */ - public static function guessModelNamesUsing(callable $callback) - { - static::$modelNameResolver = $callback; - } - - /** - * Specify the default namespace that contains the application's model factories. - * - * @param string $namespace - * @return void - */ - public static function useNamespace(string $namespace) - { - static::$namespace = $namespace; - } - - /** - * Get a new factory instance for the given model name. - * - * @param class-string<\Illuminate\Database\Eloquent\Model> $modelName - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public static function factoryForModel(string $modelName) - { - $factory = static::resolveFactoryName($modelName); - - return $factory::new(); - } - - /** - * Specify the callback that should be invoked to guess factory names based on dynamic relationship names. - * - * @param callable(class-string<\Illuminate\Database\Eloquent\Model>): class-string<\Illuminate\Database\Eloquent\Factories\Factory> $callback - * @return void - */ - public static function guessFactoryNamesUsing(callable $callback) - { - static::$factoryNameResolver = $callback; - } - - /** - * Get a new Faker instance. - * - * @return \Faker\Generator - */ - protected function withFaker() - { - return Container::getInstance()->make(Generator::class); - } - - /** - * Get the factory name for the given model name. - * - * @param class-string<\Illuminate\Database\Eloquent\Model> $modelName - * @return class-string<\Illuminate\Database\Eloquent\Factories\Factory> - */ - public static function resolveFactoryName(string $modelName) - { - $resolver = static::$factoryNameResolver ?? function (string $modelName) { - $appNamespace = static::appNamespace(); - - $modelName = Str::startsWith($modelName, $appNamespace.'Models\\') - ? Str::after($modelName, $appNamespace.'Models\\') - : Str::after($modelName, $appNamespace); - - return static::$namespace.$modelName.'Factory'; - }; - - return $resolver($modelName); - } - - /** - * Get the application namespace for the application. - * - * @return string - */ - protected static function appNamespace() - { - try { - return Container::getInstance() - ->make(Application::class) - ->getNamespace(); - } catch (Throwable) { - return 'App\\'; - } - } - - /** - * Proxy dynamic factory methods onto their proper methods. - * - * @param string $method - * @param array $parameters - * @return mixed - */ - public function __call($method, $parameters) - { - if (static::hasMacro($method)) { - return $this->macroCall($method, $parameters); - } - - if ($method === 'trashed' && in_array(SoftDeletes::class, class_uses_recursive($this->modelName()))) { - return $this->state([ - $this->newModel()->getDeletedAtColumn() => $parameters[0] ?? Carbon::now()->subDay(), - ]); - } - - if (! Str::startsWith($method, ['for', 'has'])) { - static::throwBadMethodCallException($method); - } - - $relationship = Str::camel(Str::substr($method, 3)); - - $relatedModel = get_class($this->newModel()->{$relationship}()->getRelated()); - - if (method_exists($relatedModel, 'newFactory')) { - $factory = $relatedModel::newFactory() ?? static::factoryForModel($relatedModel); - } else { - $factory = static::factoryForModel($relatedModel); - } - - if (str_starts_with($method, 'for')) { - return $this->for($factory->state($parameters[0] ?? []), $relationship); - } elseif (str_starts_with($method, 'has')) { - return $this->has( - $factory - ->count(is_numeric($parameters[0] ?? null) ? $parameters[0] : 1) - ->state((is_callable($parameters[0] ?? null) || is_array($parameters[0] ?? null)) ? $parameters[0] : ($parameters[1] ?? [])), - $relationship - ); - } - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php deleted file mode 100644 index 8444d825..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php +++ /dev/null @@ -1,2401 +0,0 @@ -bootIfNotBooted(); - - $this->initializeTraits(); - - $this->syncOriginal(); - - $this->fill($attributes); - } - - /** - * Check if the model needs to be booted and if so, do it. - * - * @return void - */ - protected function bootIfNotBooted() - { - if (! isset(static::$booted[static::class])) { - static::$booted[static::class] = true; - - $this->fireModelEvent('booting', false); - - static::booting(); - static::boot(); - static::booted(); - - $this->fireModelEvent('booted', false); - } - } - - /** - * Perform any actions required before the model boots. - * - * @return void - */ - protected static function booting() - { - // - } - - /** - * Bootstrap the model and its traits. - * - * @return void - */ - protected static function boot() - { - static::bootTraits(); - } - - /** - * Boot all of the bootable traits on the model. - * - * @return void - */ - protected static function bootTraits() - { - $class = static::class; - - $booted = []; - - static::$traitInitializers[$class] = []; - - foreach (class_uses_recursive($class) as $trait) { - $method = 'boot'.class_basename($trait); - - if (method_exists($class, $method) && ! in_array($method, $booted)) { - forward_static_call([$class, $method]); - - $booted[] = $method; - } - - if (method_exists($class, $method = 'initialize'.class_basename($trait))) { - static::$traitInitializers[$class][] = $method; - - static::$traitInitializers[$class] = array_unique( - static::$traitInitializers[$class] - ); - } - } - } - - /** - * Initialize any initializable traits on the model. - * - * @return void - */ - protected function initializeTraits() - { - foreach (static::$traitInitializers[static::class] as $method) { - $this->{$method}(); - } - } - - /** - * Perform any actions required after the model boots. - * - * @return void - */ - protected static function booted() - { - // - } - - /** - * Clear the list of booted models so they will be re-booted. - * - * @return void - */ - public static function clearBootedModels() - { - static::$booted = []; - - static::$globalScopes = []; - } - - /** - * Disables relationship model touching for the current class during given callback scope. - * - * @param callable $callback - * @return void - */ - public static function withoutTouching(callable $callback) - { - static::withoutTouchingOn([static::class], $callback); - } - - /** - * Disables relationship model touching for the given model classes during given callback scope. - * - * @param array $models - * @param callable $callback - * @return void - */ - public static function withoutTouchingOn(array $models, callable $callback) - { - static::$ignoreOnTouch = array_values(array_merge(static::$ignoreOnTouch, $models)); - - try { - $callback(); - } finally { - static::$ignoreOnTouch = array_values(array_diff(static::$ignoreOnTouch, $models)); - } - } - - /** - * Determine if the given model is ignoring touches. - * - * @param string|null $class - * @return bool - */ - public static function isIgnoringTouch($class = null) - { - $class = $class ?: static::class; - - if (! get_class_vars($class)['timestamps'] || ! $class::UPDATED_AT) { - return true; - } - - foreach (static::$ignoreOnTouch as $ignoredClass) { - if ($class === $ignoredClass || is_subclass_of($class, $ignoredClass)) { - return true; - } - } - - return false; - } - - /** - * Indicate that models should prevent lazy loading, silently discarding attributes, and accessing missing attributes. - * - * @param bool $shouldBeStrict - * @return void - */ - public static function shouldBeStrict(bool $shouldBeStrict = true) - { - static::preventLazyLoading($shouldBeStrict); - static::preventSilentlyDiscardingAttributes($shouldBeStrict); - static::preventAccessingMissingAttributes($shouldBeStrict); - } - - /** - * Prevent model relationships from being lazy loaded. - * - * @param bool $value - * @return void - */ - public static function preventLazyLoading($value = true) - { - static::$modelsShouldPreventLazyLoading = $value; - } - - /** - * Register a callback that is responsible for handling lazy loading violations. - * - * @param callable|null $callback - * @return void - */ - public static function handleLazyLoadingViolationUsing(?callable $callback) - { - static::$lazyLoadingViolationCallback = $callback; - } - - /** - * Prevent non-fillable attributes from being silently discarded. - * - * @param bool $value - * @return void - */ - public static function preventSilentlyDiscardingAttributes($value = true) - { - static::$modelsShouldPreventSilentlyDiscardingAttributes = $value; - } - - /** - * Register a callback that is responsible for handling discarded attribute violations. - * - * @param callable|null $callback - * @return void - */ - public static function handleDiscardedAttributeViolationUsing(?callable $callback) - { - static::$discardedAttributeViolationCallback = $callback; - } - - /** - * Prevent accessing missing attributes on retrieved models. - * - * @param bool $value - * @return void - */ - public static function preventAccessingMissingAttributes($value = true) - { - static::$modelsShouldPreventAccessingMissingAttributes = $value; - } - - /** - * Register a callback that is responsible for handling missing attribute violations. - * - * @param callable|null $callback - * @return void - */ - public static function handleMissingAttributeViolationUsing(?callable $callback) - { - static::$missingAttributeViolationCallback = $callback; - } - - /** - * Execute a callback without broadcasting any model events for all model types. - * - * @param callable $callback - * @return mixed - */ - public static function withoutBroadcasting(callable $callback) - { - $isBroadcasting = static::$isBroadcasting; - - static::$isBroadcasting = false; - - try { - return $callback(); - } finally { - static::$isBroadcasting = $isBroadcasting; - } - } - - /** - * Fill the model with an array of attributes. - * - * @param array $attributes - * @return $this - * - * @throws \Illuminate\Database\Eloquent\MassAssignmentException - */ - public function fill(array $attributes) - { - $totallyGuarded = $this->totallyGuarded(); - - $fillable = $this->fillableFromArray($attributes); - - foreach ($fillable as $key => $value) { - // The developers may choose to place some attributes in the "fillable" array - // which means only those attributes may be set through mass assignment to - // the model, and all others will just get ignored for security reasons. - if ($this->isFillable($key)) { - $this->setAttribute($key, $value); - } elseif ($totallyGuarded || static::preventsSilentlyDiscardingAttributes()) { - if (isset(static::$discardedAttributeViolationCallback)) { - call_user_func(static::$discardedAttributeViolationCallback, $this, [$key]); - } else { - throw new MassAssignmentException(sprintf( - 'Add [%s] to fillable property to allow mass assignment on [%s].', - $key, get_class($this) - )); - } - } - } - - if (count($attributes) !== count($fillable) && - static::preventsSilentlyDiscardingAttributes()) { - $keys = array_diff(array_keys($attributes), array_keys($fillable)); - - if (isset(static::$discardedAttributeViolationCallback)) { - call_user_func(static::$discardedAttributeViolationCallback, $this, $keys); - } else { - throw new MassAssignmentException(sprintf( - 'Add fillable property [%s] to allow mass assignment on [%s].', - implode(', ', $keys), - get_class($this) - )); - } - } - - return $this; - } - - /** - * Fill the model with an array of attributes. Force mass assignment. - * - * @param array $attributes - * @return $this - */ - public function forceFill(array $attributes) - { - return static::unguarded(fn () => $this->fill($attributes)); - } - - /** - * Qualify the given column name by the model's table. - * - * @param string $column - * @return string - */ - public function qualifyColumn($column) - { - if (str_contains($column, '.')) { - return $column; - } - - return $this->getTable().'.'.$column; - } - - /** - * Qualify the given columns with the model's table. - * - * @param array $columns - * @return array - */ - public function qualifyColumns($columns) - { - return collect($columns)->map(function ($column) { - return $this->qualifyColumn($column); - })->all(); - } - - /** - * Create a new instance of the given model. - * - * @param array $attributes - * @param bool $exists - * @return static - */ - public function newInstance($attributes = [], $exists = false) - { - // This method just provides a convenient way for us to generate fresh model - // instances of this current model. It is particularly useful during the - // hydration of new objects via the Eloquent query builder instances. - $model = new static; - - $model->exists = $exists; - - $model->setConnection( - $this->getConnectionName() - ); - - $model->setTable($this->getTable()); - - $model->mergeCasts($this->casts); - - $model->fill((array) $attributes); - - return $model; - } - - /** - * Create a new model instance that is existing. - * - * @param array $attributes - * @param string|null $connection - * @return static - */ - public function newFromBuilder($attributes = [], $connection = null) - { - $model = $this->newInstance([], true); - - $model->setRawAttributes((array) $attributes, true); - - $model->setConnection($connection ?: $this->getConnectionName()); - - $model->fireModelEvent('retrieved', false); - - return $model; - } - - /** - * Begin querying the model on a given connection. - * - * @param string|null $connection - * @return \Illuminate\Database\Eloquent\Builder - */ - public static function on($connection = null) - { - // First we will just create a fresh instance of this model, and then we can set the - // connection on the model so that it is used for the queries we execute, as well - // as being set on every relation we retrieve without a custom connection name. - $instance = new static; - - $instance->setConnection($connection); - - return $instance->newQuery(); - } - - /** - * Begin querying the model on the write connection. - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public static function onWriteConnection() - { - return static::query()->useWritePdo(); - } - - /** - * Get all of the models from the database. - * - * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Collection - */ - public static function all($columns = ['*']) - { - return static::query()->get( - is_array($columns) ? $columns : func_get_args() - ); - } - - /** - * Begin querying a model with eager loading. - * - * @param array|string $relations - * @return \Illuminate\Database\Eloquent\Builder - */ - public static function with($relations) - { - return static::query()->with( - is_string($relations) ? func_get_args() : $relations - ); - } - - /** - * Eager load relations on the model. - * - * @param array|string $relations - * @return $this - */ - public function load($relations) - { - $query = $this->newQueryWithoutRelationships()->with( - is_string($relations) ? func_get_args() : $relations - ); - - $query->eagerLoadRelations([$this]); - - return $this; - } - - /** - * Eager load relationships on the polymorphic relation of a model. - * - * @param string $relation - * @param array $relations - * @return $this - */ - public function loadMorph($relation, $relations) - { - if (! $this->{$relation}) { - return $this; - } - - $className = get_class($this->{$relation}); - - $this->{$relation}->load($relations[$className] ?? []); - - return $this; - } - - /** - * Eager load relations on the model if they are not already eager loaded. - * - * @param array|string $relations - * @return $this - */ - public function loadMissing($relations) - { - $relations = is_string($relations) ? func_get_args() : $relations; - - $this->newCollection([$this])->loadMissing($relations); - - return $this; - } - - /** - * Eager load relation's column aggregations on the model. - * - * @param array|string $relations - * @param string $column - * @param string|null $function - * @return $this - */ - public function loadAggregate($relations, $column, $function = null) - { - $this->newCollection([$this])->loadAggregate($relations, $column, $function); - - return $this; - } - - /** - * Eager load relation counts on the model. - * - * @param array|string $relations - * @return $this - */ - public function loadCount($relations) - { - $relations = is_string($relations) ? func_get_args() : $relations; - - return $this->loadAggregate($relations, '*', 'count'); - } - - /** - * Eager load relation max column values on the model. - * - * @param array|string $relations - * @param string $column - * @return $this - */ - public function loadMax($relations, $column) - { - return $this->loadAggregate($relations, $column, 'max'); - } - - /** - * Eager load relation min column values on the model. - * - * @param array|string $relations - * @param string $column - * @return $this - */ - public function loadMin($relations, $column) - { - return $this->loadAggregate($relations, $column, 'min'); - } - - /** - * Eager load relation's column summations on the model. - * - * @param array|string $relations - * @param string $column - * @return $this - */ - public function loadSum($relations, $column) - { - return $this->loadAggregate($relations, $column, 'sum'); - } - - /** - * Eager load relation average column values on the model. - * - * @param array|string $relations - * @param string $column - * @return $this - */ - public function loadAvg($relations, $column) - { - return $this->loadAggregate($relations, $column, 'avg'); - } - - /** - * Eager load related model existence values on the model. - * - * @param array|string $relations - * @return $this - */ - public function loadExists($relations) - { - return $this->loadAggregate($relations, '*', 'exists'); - } - - /** - * Eager load relationship column aggregation on the polymorphic relation of a model. - * - * @param string $relation - * @param array $relations - * @param string $column - * @param string|null $function - * @return $this - */ - public function loadMorphAggregate($relation, $relations, $column, $function = null) - { - if (! $this->{$relation}) { - return $this; - } - - $className = get_class($this->{$relation}); - - $this->{$relation}->loadAggregate($relations[$className] ?? [], $column, $function); - - return $this; - } - - /** - * Eager load relationship counts on the polymorphic relation of a model. - * - * @param string $relation - * @param array $relations - * @return $this - */ - public function loadMorphCount($relation, $relations) - { - return $this->loadMorphAggregate($relation, $relations, '*', 'count'); - } - - /** - * Eager load relationship max column values on the polymorphic relation of a model. - * - * @param string $relation - * @param array $relations - * @param string $column - * @return $this - */ - public function loadMorphMax($relation, $relations, $column) - { - return $this->loadMorphAggregate($relation, $relations, $column, 'max'); - } - - /** - * Eager load relationship min column values on the polymorphic relation of a model. - * - * @param string $relation - * @param array $relations - * @param string $column - * @return $this - */ - public function loadMorphMin($relation, $relations, $column) - { - return $this->loadMorphAggregate($relation, $relations, $column, 'min'); - } - - /** - * Eager load relationship column summations on the polymorphic relation of a model. - * - * @param string $relation - * @param array $relations - * @param string $column - * @return $this - */ - public function loadMorphSum($relation, $relations, $column) - { - return $this->loadMorphAggregate($relation, $relations, $column, 'sum'); - } - - /** - * Eager load relationship average column values on the polymorphic relation of a model. - * - * @param string $relation - * @param array $relations - * @param string $column - * @return $this - */ - public function loadMorphAvg($relation, $relations, $column) - { - return $this->loadMorphAggregate($relation, $relations, $column, 'avg'); - } - - /** - * Increment a column's value by a given amount. - * - * @param string $column - * @param float|int $amount - * @param array $extra - * @return int - */ - protected function increment($column, $amount = 1, array $extra = []) - { - return $this->incrementOrDecrement($column, $amount, $extra, 'increment'); - } - - /** - * Decrement a column's value by a given amount. - * - * @param string $column - * @param float|int $amount - * @param array $extra - * @return int - */ - protected function decrement($column, $amount = 1, array $extra = []) - { - return $this->incrementOrDecrement($column, $amount, $extra, 'decrement'); - } - - /** - * Run the increment or decrement method on the model. - * - * @param string $column - * @param float|int $amount - * @param array $extra - * @param string $method - * @return int - */ - protected function incrementOrDecrement($column, $amount, $extra, $method) - { - if (! $this->exists) { - return $this->newQueryWithoutRelationships()->{$method}($column, $amount, $extra); - } - - $this->{$column} = $this->isClassDeviable($column) - ? $this->deviateClassCastableAttribute($method, $column, $amount) - : $this->{$column} + ($method === 'increment' ? $amount : $amount * -1); - - $this->forceFill($extra); - - if ($this->fireModelEvent('updating') === false) { - return false; - } - - return tap($this->setKeysForSaveQuery($this->newQueryWithoutScopes())->{$method}($column, $amount, $extra), function () use ($column) { - $this->syncChanges(); - - $this->fireModelEvent('updated', false); - - $this->syncOriginalAttribute($column); - }); - } - - /** - * Update the model in the database. - * - * @param array $attributes - * @param array $options - * @return bool - */ - public function update(array $attributes = [], array $options = []) - { - if (! $this->exists) { - return false; - } - - return $this->fill($attributes)->save($options); - } - - /** - * Update the model in the database within a transaction. - * - * @param array $attributes - * @param array $options - * @return bool - * - * @throws \Throwable - */ - public function updateOrFail(array $attributes = [], array $options = []) - { - if (! $this->exists) { - return false; - } - - return $this->fill($attributes)->saveOrFail($options); - } - - /** - * Update the model in the database without raising any events. - * - * @param array $attributes - * @param array $options - * @return bool - */ - public function updateQuietly(array $attributes = [], array $options = []) - { - if (! $this->exists) { - return false; - } - - return $this->fill($attributes)->saveQuietly($options); - } - - /** - * Increment a column's value by a given amount without raising any events. - * - * @param string $column - * @param float|int $amount - * @param array $extra - * @return int - */ - protected function incrementQuietly($column, $amount = 1, array $extra = []) - { - return static::withoutEvents(function () use ($column, $amount, $extra) { - return $this->incrementOrDecrement($column, $amount, $extra, 'increment'); - }); - } - - /** - * Decrement a column's value by a given amount without raising any events. - * - * @param string $column - * @param float|int $amount - * @param array $extra - * @return int - */ - protected function decrementQuietly($column, $amount = 1, array $extra = []) - { - return static::withoutEvents(function () use ($column, $amount, $extra) { - return $this->incrementOrDecrement($column, $amount, $extra, 'decrement'); - }); - } - - /** - * Save the model and all of its relationships. - * - * @return bool - */ - public function push() - { - if (! $this->save()) { - return false; - } - - // To sync all of the relationships to the database, we will simply spin through - // the relationships and save each model via this "push" method, which allows - // us to recurse into all of these nested relations for the model instance. - foreach ($this->relations as $models) { - $models = $models instanceof Collection - ? $models->all() : [$models]; - - foreach (array_filter($models) as $model) { - if (! $model->push()) { - return false; - } - } - } - - return true; - } - - /** - * Save the model and all of its relationships without raising any events to the parent model. - * - * @return bool - */ - public function pushQuietly() - { - return static::withoutEvents(fn () => $this->push()); - } - - /** - * Save the model to the database without raising any events. - * - * @param array $options - * @return bool - */ - public function saveQuietly(array $options = []) - { - return static::withoutEvents(fn () => $this->save($options)); - } - - /** - * Save the model to the database. - * - * @param array $options - * @return bool - */ - public function save(array $options = []) - { - $this->mergeAttributesFromCachedCasts(); - - $query = $this->newModelQuery(); - - // If the "saving" event returns false we'll bail out of the save and return - // false, indicating that the save failed. This provides a chance for any - // listeners to cancel save operations if validations fail or whatever. - if ($this->fireModelEvent('saving') === false) { - return false; - } - - // If the model already exists in the database we can just update our record - // that is already in this database using the current IDs in this "where" - // clause to only update this model. Otherwise, we'll just insert them. - if ($this->exists) { - $saved = $this->isDirty() ? - $this->performUpdate($query) : true; - } - - // If the model is brand new, we'll insert it into our database and set the - // ID attribute on the model to the value of the newly inserted row's ID - // which is typically an auto-increment value managed by the database. - else { - $saved = $this->performInsert($query); - - if (! $this->getConnectionName() && - $connection = $query->getConnection()) { - $this->setConnection($connection->getName()); - } - } - - // If the model is successfully saved, we need to do a few more things once - // that is done. We will call the "saved" method here to run any actions - // we need to happen after a model gets successfully saved right here. - if ($saved) { - $this->finishSave($options); - } - - return $saved; - } - - /** - * Save the model to the database within a transaction. - * - * @param array $options - * @return bool - * - * @throws \Throwable - */ - public function saveOrFail(array $options = []) - { - return $this->getConnection()->transaction(fn () => $this->save($options)); - } - - /** - * Perform any actions that are necessary after the model is saved. - * - * @param array $options - * @return void - */ - protected function finishSave(array $options) - { - $this->fireModelEvent('saved', false); - - if ($this->isDirty() && ($options['touch'] ?? true)) { - $this->touchOwners(); - } - - $this->syncOriginal(); - } - - /** - * Perform a model update operation. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * @return bool - */ - protected function performUpdate(Builder $query) - { - // If the updating event returns false, we will cancel the update operation so - // developers can hook Validation systems into their models and cancel this - // operation if the model does not pass validation. Otherwise, we update. - if ($this->fireModelEvent('updating') === false) { - return false; - } - - // First we need to create a fresh query instance and touch the creation and - // update timestamp on the model which are maintained by us for developer - // convenience. Then we will just continue saving the model instances. - if ($this->usesTimestamps()) { - $this->updateTimestamps(); - } - - // Once we have run the update operation, we will fire the "updated" event for - // this model instance. This will allow developers to hook into these after - // models are updated, giving them a chance to do any special processing. - $dirty = $this->getDirtyForUpdate(); - - if (count($dirty) > 0) { - $this->setKeysForSaveQuery($query)->update($dirty); - - $this->syncChanges(); - - $this->fireModelEvent('updated', false); - } - - return true; - } - - /** - * Set the keys for a select query. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * @return \Illuminate\Database\Eloquent\Builder - */ - protected function setKeysForSelectQuery($query) - { - $query->where($this->getKeyName(), '=', $this->getKeyForSelectQuery()); - - return $query; - } - - /** - * Get the primary key value for a select query. - * - * @return mixed - */ - protected function getKeyForSelectQuery() - { - return $this->original[$this->getKeyName()] ?? $this->getKey(); - } - - /** - * Set the keys for a save update query. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * @return \Illuminate\Database\Eloquent\Builder - */ - protected function setKeysForSaveQuery($query) - { - $query->where($this->getKeyName(), '=', $this->getKeyForSaveQuery()); - - return $query; - } - - /** - * Get the primary key value for a save query. - * - * @return mixed - */ - protected function getKeyForSaveQuery() - { - return $this->original[$this->getKeyName()] ?? $this->getKey(); - } - - /** - * Perform a model insert operation. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * @return bool - */ - protected function performInsert(Builder $query) - { - if ($this->usesUniqueIds()) { - $this->setUniqueIds(); - } - - if ($this->fireModelEvent('creating') === false) { - return false; - } - - // First we'll need to create a fresh query instance and touch the creation and - // update timestamps on this model, which are maintained by us for developer - // convenience. After, we will just continue saving these model instances. - if ($this->usesTimestamps()) { - $this->updateTimestamps(); - } - - // If the model has an incrementing key, we can use the "insertGetId" method on - // the query builder, which will give us back the final inserted ID for this - // table from the database. Not all tables have to be incrementing though. - $attributes = $this->getAttributesForInsert(); - - if ($this->getIncrementing()) { - $this->insertAndSetId($query, $attributes); - } - - // If the table isn't incrementing we'll simply insert these attributes as they - // are. These attribute arrays must contain an "id" column previously placed - // there by the developer as the manually determined key for these models. - else { - if (empty($attributes)) { - return true; - } - - $query->insert($attributes); - } - - // We will go ahead and set the exists property to true, so that it is set when - // the created event is fired, just in case the developer tries to update it - // during the event. This will allow them to do so and run an update here. - $this->exists = true; - - $this->wasRecentlyCreated = true; - - $this->fireModelEvent('created', false); - - return true; - } - - /** - * Insert the given attributes and set the ID on the model. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * @param array $attributes - * @return void - */ - protected function insertAndSetId(Builder $query, $attributes) - { - $id = $query->insertGetId($attributes, $keyName = $this->getKeyName()); - - $this->setAttribute($keyName, $id); - } - - /** - * Destroy the models for the given IDs. - * - * @param \Illuminate\Support\Collection|array|int|string $ids - * @return int - */ - public static function destroy($ids) - { - if ($ids instanceof EloquentCollection) { - $ids = $ids->modelKeys(); - } - - if ($ids instanceof BaseCollection) { - $ids = $ids->all(); - } - - $ids = is_array($ids) ? $ids : func_get_args(); - - if (count($ids) === 0) { - return 0; - } - - // We will actually pull the models from the database table and call delete on - // each of them individually so that their events get fired properly with a - // correct set of attributes in case the developers wants to check these. - $key = ($instance = new static)->getKeyName(); - - $count = 0; - - foreach ($instance->whereIn($key, $ids)->get() as $model) { - if ($model->delete()) { - $count++; - } - } - - return $count; - } - - /** - * Delete the model from the database. - * - * @return bool|null - * - * @throws \LogicException - */ - public function delete() - { - $this->mergeAttributesFromCachedCasts(); - - if (is_null($this->getKeyName())) { - throw new LogicException('No primary key defined on model.'); - } - - // If the model doesn't exist, there is nothing to delete so we'll just return - // immediately and not do anything else. Otherwise, we will continue with a - // deletion process on the model, firing the proper events, and so forth. - if (! $this->exists) { - return; - } - - if ($this->fireModelEvent('deleting') === false) { - return false; - } - - // Here, we'll touch the owning models, verifying these timestamps get updated - // for the models. This will allow any caching to get broken on the parents - // by the timestamp. Then we will go ahead and delete the model instance. - $this->touchOwners(); - - $this->performDeleteOnModel(); - - // Once the model has been deleted, we will fire off the deleted event so that - // the developers may hook into post-delete operations. We will then return - // a boolean true as the delete is presumably successful on the database. - $this->fireModelEvent('deleted', false); - - return true; - } - - /** - * Delete the model from the database without raising any events. - * - * @return bool - */ - public function deleteQuietly() - { - return static::withoutEvents(fn () => $this->delete()); - } - - /** - * Delete the model from the database within a transaction. - * - * @return bool|null - * - * @throws \Throwable - */ - public function deleteOrFail() - { - if (! $this->exists) { - return false; - } - - return $this->getConnection()->transaction(fn () => $this->delete()); - } - - /** - * Force a hard delete on a soft deleted model. - * - * This method protects developers from running forceDelete when the trait is missing. - * - * @return bool|null - */ - public function forceDelete() - { - return $this->delete(); - } - - /** - * Perform the actual delete query on this model instance. - * - * @return void - */ - protected function performDeleteOnModel() - { - $this->setKeysForSaveQuery($this->newModelQuery())->delete(); - - $this->exists = false; - } - - /** - * Begin querying the model. - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public static function query() - { - return (new static)->newQuery(); - } - - /** - * Get a new query builder for the model's table. - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function newQuery() - { - return $this->registerGlobalScopes($this->newQueryWithoutScopes()); - } - - /** - * Get a new query builder that doesn't have any global scopes or eager loading. - * - * @return \Illuminate\Database\Eloquent\Builder|static - */ - public function newModelQuery() - { - return $this->newEloquentBuilder( - $this->newBaseQueryBuilder() - )->setModel($this); - } - - /** - * Get a new query builder with no relationships loaded. - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function newQueryWithoutRelationships() - { - return $this->registerGlobalScopes($this->newModelQuery()); - } - - /** - * Register the global scopes for this builder instance. - * - * @param \Illuminate\Database\Eloquent\Builder $builder - * @return \Illuminate\Database\Eloquent\Builder - */ - public function registerGlobalScopes($builder) - { - foreach ($this->getGlobalScopes() as $identifier => $scope) { - $builder->withGlobalScope($identifier, $scope); - } - - return $builder; - } - - /** - * Get a new query builder that doesn't have any global scopes. - * - * @return \Illuminate\Database\Eloquent\Builder|static - */ - public function newQueryWithoutScopes() - { - return $this->newModelQuery() - ->with($this->with) - ->withCount($this->withCount); - } - - /** - * Get a new query instance without a given scope. - * - * @param \Illuminate\Database\Eloquent\Scope|string $scope - * @return \Illuminate\Database\Eloquent\Builder - */ - public function newQueryWithoutScope($scope) - { - return $this->newQuery()->withoutGlobalScope($scope); - } - - /** - * Get a new query to restore one or more models by their queueable IDs. - * - * @param array|int $ids - * @return \Illuminate\Database\Eloquent\Builder - */ - public function newQueryForRestoration($ids) - { - return $this->newQueryWithoutScopes()->whereKey($ids); - } - - /** - * Create a new Eloquent query builder for the model. - * - * @param \Illuminate\Database\Query\Builder $query - * @return \Illuminate\Database\Eloquent\Builder|static - */ - public function newEloquentBuilder($query) - { - return new Builder($query); - } - - /** - * Get a new query builder instance for the connection. - * - * @return \Illuminate\Database\Query\Builder - */ - protected function newBaseQueryBuilder() - { - return $this->getConnection()->query(); - } - - /** - * Create a new Eloquent Collection instance. - * - * @param array $models - * @return \Illuminate\Database\Eloquent\Collection - */ - public function newCollection(array $models = []) - { - return new Collection($models); - } - - /** - * Create a new pivot model instance. - * - * @param \Illuminate\Database\Eloquent\Model $parent - * @param array $attributes - * @param string $table - * @param bool $exists - * @param string|null $using - * @return \Illuminate\Database\Eloquent\Relations\Pivot - */ - public function newPivot(self $parent, array $attributes, $table, $exists, $using = null) - { - return $using ? $using::fromRawAttributes($parent, $attributes, $table, $exists) - : Pivot::fromAttributes($parent, $attributes, $table, $exists); - } - - /** - * Determine if the model has a given scope. - * - * @param string $scope - * @return bool - */ - public function hasNamedScope($scope) - { - return method_exists($this, 'scope'.ucfirst($scope)); - } - - /** - * Apply the given named scope if possible. - * - * @param string $scope - * @param array $parameters - * @return mixed - */ - public function callNamedScope($scope, array $parameters = []) - { - return $this->{'scope'.ucfirst($scope)}(...$parameters); - } - - /** - * Convert the model instance to an array. - * - * @return array - */ - public function toArray() - { - return array_merge($this->attributesToArray(), $this->relationsToArray()); - } - - /** - * Convert the model instance to JSON. - * - * @param int $options - * @return string - * - * @throws \Illuminate\Database\Eloquent\JsonEncodingException - */ - public function toJson($options = 0) - { - try { - $json = json_encode($this->jsonSerialize(), $options | JSON_THROW_ON_ERROR); - } catch (JsonException $e) { - throw JsonEncodingException::forModel($this, $e->getMessage()); - } - - return $json; - } - - /** - * Convert the object into something JSON serializable. - * - * @return mixed - */ - public function jsonSerialize(): mixed - { - return $this->toArray(); - } - - /** - * Reload a fresh model instance from the database. - * - * @param array|string $with - * @return static|null - */ - public function fresh($with = []) - { - if (! $this->exists) { - return; - } - - return $this->setKeysForSelectQuery($this->newQueryWithoutScopes()) - ->useWritePdo() - ->with(is_string($with) ? func_get_args() : $with) - ->first(); - } - - /** - * Reload the current model instance with fresh attributes from the database. - * - * @return $this - */ - public function refresh() - { - if (! $this->exists) { - return $this; - } - - $this->setRawAttributes( - $this->setKeysForSelectQuery($this->newQueryWithoutScopes()) - ->useWritePdo() - ->firstOrFail() - ->attributes - ); - - $this->load(collect($this->relations)->reject(function ($relation) { - return $relation instanceof Pivot - || (is_object($relation) && in_array(AsPivot::class, class_uses_recursive($relation), true)); - })->keys()->all()); - - $this->syncOriginal(); - - return $this; - } - - /** - * Clone the model into a new, non-existing instance. - * - * @param array|null $except - * @return static - */ - public function replicate(?array $except = null) - { - $defaults = array_values(array_filter([ - $this->getKeyName(), - $this->getCreatedAtColumn(), - $this->getUpdatedAtColumn(), - ...$this->uniqueIds(), - ])); - - $attributes = Arr::except( - $this->getAttributes(), $except ? array_unique(array_merge($except, $defaults)) : $defaults - ); - - return tap(new static, function ($instance) use ($attributes) { - $instance->setRawAttributes($attributes); - - $instance->setRelations($this->relations); - - $instance->fireModelEvent('replicating', false); - }); - } - - /** - * Clone the model into a new, non-existing instance without raising any events. - * - * @param array|null $except - * @return static - */ - public function replicateQuietly(?array $except = null) - { - return static::withoutEvents(fn () => $this->replicate($except)); - } - - /** - * Determine if two models have the same ID and belong to the same table. - * - * @param \Illuminate\Database\Eloquent\Model|null $model - * @return bool - */ - public function is($model) - { - return ! is_null($model) && - $this->getKey() === $model->getKey() && - $this->getTable() === $model->getTable() && - $this->getConnectionName() === $model->getConnectionName(); - } - - /** - * Determine if two models are not the same. - * - * @param \Illuminate\Database\Eloquent\Model|null $model - * @return bool - */ - public function isNot($model) - { - return ! $this->is($model); - } - - /** - * Get the database connection for the model. - * - * @return \Illuminate\Database\Connection - */ - public function getConnection() - { - return static::resolveConnection($this->getConnectionName()); - } - - /** - * Get the current connection name for the model. - * - * @return string|null - */ - public function getConnectionName() - { - return $this->connection; - } - - /** - * Set the connection associated with the model. - * - * @param string|null $name - * @return $this - */ - public function setConnection($name) - { - $this->connection = $name; - - return $this; - } - - /** - * Resolve a connection instance. - * - * @param string|null $connection - * @return \Illuminate\Database\Connection - */ - public static function resolveConnection($connection = null) - { - return static::$resolver->connection($connection); - } - - /** - * Get the connection resolver instance. - * - * @return \Illuminate\Database\ConnectionResolverInterface|null - */ - public static function getConnectionResolver() - { - return static::$resolver; - } - - /** - * Set the connection resolver instance. - * - * @param \Illuminate\Database\ConnectionResolverInterface $resolver - * @return void - */ - public static function setConnectionResolver(Resolver $resolver) - { - static::$resolver = $resolver; - } - - /** - * Unset the connection resolver for models. - * - * @return void - */ - public static function unsetConnectionResolver() - { - static::$resolver = null; - } - - /** - * Get the table associated with the model. - * - * @return string - */ - public function getTable() - { - return $this->table ?? Str::snake(Str::pluralStudly(class_basename($this))); - } - - /** - * Set the table associated with the model. - * - * @param string $table - * @return $this - */ - public function setTable($table) - { - $this->table = $table; - - return $this; - } - - /** - * Get the primary key for the model. - * - * @return string - */ - public function getKeyName() - { - return $this->primaryKey; - } - - /** - * Set the primary key for the model. - * - * @param string $key - * @return $this - */ - public function setKeyName($key) - { - $this->primaryKey = $key; - - return $this; - } - - /** - * Get the table qualified key name. - * - * @return string - */ - public function getQualifiedKeyName() - { - return $this->qualifyColumn($this->getKeyName()); - } - - /** - * Get the auto-incrementing key type. - * - * @return string - */ - public function getKeyType() - { - return $this->keyType; - } - - /** - * Set the data type for the primary key. - * - * @param string $type - * @return $this - */ - public function setKeyType($type) - { - $this->keyType = $type; - - return $this; - } - - /** - * Get the value indicating whether the IDs are incrementing. - * - * @return bool - */ - public function getIncrementing() - { - return $this->incrementing; - } - - /** - * Set whether IDs are incrementing. - * - * @param bool $value - * @return $this - */ - public function setIncrementing($value) - { - $this->incrementing = $value; - - return $this; - } - - /** - * Get the value of the model's primary key. - * - * @return mixed - */ - public function getKey() - { - return $this->getAttribute($this->getKeyName()); - } - - /** - * Get the queueable identity for the entity. - * - * @return mixed - */ - public function getQueueableId() - { - return $this->getKey(); - } - - /** - * Get the queueable relationships for the entity. - * - * @return array - */ - public function getQueueableRelations() - { - $relations = []; - - foreach ($this->getRelations() as $key => $relation) { - if (! method_exists($this, $key)) { - continue; - } - - $relations[] = $key; - - if ($relation instanceof QueueableCollection) { - foreach ($relation->getQueueableRelations() as $collectionValue) { - $relations[] = $key.'.'.$collectionValue; - } - } - - if ($relation instanceof QueueableEntity) { - foreach ($relation->getQueueableRelations() as $entityValue) { - $relations[] = $key.'.'.$entityValue; - } - } - } - - return array_unique($relations); - } - - /** - * Get the queueable connection for the entity. - * - * @return string|null - */ - public function getQueueableConnection() - { - return $this->getConnectionName(); - } - - /** - * Get the value of the model's route key. - * - * @return mixed - */ - public function getRouteKey() - { - return $this->getAttribute($this->getRouteKeyName()); - } - - /** - * Get the route key for the model. - * - * @return string - */ - public function getRouteKeyName() - { - return $this->getKeyName(); - } - - /** - * Retrieve the model for a bound value. - * - * @param mixed $value - * @param string|null $field - * @return \Illuminate\Database\Eloquent\Model|null - */ - public function resolveRouteBinding($value, $field = null) - { - return $this->resolveRouteBindingQuery($this, $value, $field)->first(); - } - - /** - * Retrieve the model for a bound value. - * - * @param mixed $value - * @param string|null $field - * @return \Illuminate\Database\Eloquent\Model|null - */ - public function resolveSoftDeletableRouteBinding($value, $field = null) - { - return $this->resolveRouteBindingQuery($this, $value, $field)->withTrashed()->first(); - } - - /** - * Retrieve the child model for a bound value. - * - * @param string $childType - * @param mixed $value - * @param string|null $field - * @return \Illuminate\Database\Eloquent\Model|null - */ - public function resolveChildRouteBinding($childType, $value, $field) - { - return $this->resolveChildRouteBindingQuery($childType, $value, $field)->first(); - } - - /** - * Retrieve the child model for a bound value. - * - * @param string $childType - * @param mixed $value - * @param string|null $field - * @return \Illuminate\Database\Eloquent\Model|null - */ - public function resolveSoftDeletableChildRouteBinding($childType, $value, $field) - { - return $this->resolveChildRouteBindingQuery($childType, $value, $field)->withTrashed()->first(); - } - - /** - * Retrieve the child model query for a bound value. - * - * @param string $childType - * @param mixed $value - * @param string|null $field - * @return \Illuminate\Database\Eloquent\Relations\Relation - */ - protected function resolveChildRouteBindingQuery($childType, $value, $field) - { - $relationship = $this->{$this->childRouteBindingRelationshipName($childType)}(); - - $field = $field ?: $relationship->getRelated()->getRouteKeyName(); - - if ($relationship instanceof HasManyThrough || - $relationship instanceof BelongsToMany) { - $field = $relationship->getRelated()->getTable().'.'.$field; - } - - return $relationship instanceof Model - ? $relationship->resolveRouteBindingQuery($relationship, $value, $field) - : $relationship->getRelated()->resolveRouteBindingQuery($relationship, $value, $field); - } - - /** - * Retrieve the child route model binding relationship name for the given child type. - * - * @param string $childType - * @return string - */ - protected function childRouteBindingRelationshipName($childType) - { - return Str::plural(Str::camel($childType)); - } - - /** - * Retrieve the model for a bound value. - * - * @param \Illuminate\Database\Eloquent\Model|\Illuminate\Contracts\Database\Eloquent\Builder|\Illuminate\Database\Eloquent\Relations\Relation $query - * @param mixed $value - * @param string|null $field - * @return \Illuminate\Database\Eloquent\Relations\Relation - */ - public function resolveRouteBindingQuery($query, $value, $field = null) - { - return $query->where($field ?? $this->getRouteKeyName(), $value); - } - - /** - * Get the default foreign key name for the model. - * - * @return string - */ - public function getForeignKey() - { - return Str::snake(class_basename($this)).'_'.$this->getKeyName(); - } - - /** - * Get the number of models to return per page. - * - * @return int - */ - public function getPerPage() - { - return $this->perPage; - } - - /** - * Set the number of models to return per page. - * - * @param int $perPage - * @return $this - */ - public function setPerPage($perPage) - { - $this->perPage = $perPage; - - return $this; - } - - /** - * Determine if lazy loading is disabled. - * - * @return bool - */ - public static function preventsLazyLoading() - { - return static::$modelsShouldPreventLazyLoading; - } - - /** - * Determine if discarding guarded attribute fills is disabled. - * - * @return bool - */ - public static function preventsSilentlyDiscardingAttributes() - { - return static::$modelsShouldPreventSilentlyDiscardingAttributes; - } - - /** - * Determine if accessing missing attributes is disabled. - * - * @return bool - */ - public static function preventsAccessingMissingAttributes() - { - return static::$modelsShouldPreventAccessingMissingAttributes; - } - - /** - * Get the broadcast channel route definition that is associated with the given entity. - * - * @return string - */ - public function broadcastChannelRoute() - { - return str_replace('\\', '.', get_class($this)).'.{'.Str::camel(class_basename($this)).'}'; - } - - /** - * Get the broadcast channel name that is associated with the given entity. - * - * @return string - */ - public function broadcastChannel() - { - return str_replace('\\', '.', get_class($this)).'.'.$this->getKey(); - } - - /** - * Dynamically retrieve attributes on the model. - * - * @param string $key - * @return mixed - */ - public function __get($key) - { - return $this->getAttribute($key); - } - - /** - * Dynamically set attributes on the model. - * - * @param string $key - * @param mixed $value - * @return void - */ - public function __set($key, $value) - { - $this->setAttribute($key, $value); - } - - /** - * Determine if the given attribute exists. - * - * @param mixed $offset - * @return bool - */ - public function offsetExists($offset): bool - { - try { - return ! is_null($this->getAttribute($offset)); - } catch (MissingAttributeException) { - return false; - } - } - - /** - * Get the value for a given offset. - * - * @param mixed $offset - * @return mixed - */ - public function offsetGet($offset): mixed - { - return $this->getAttribute($offset); - } - - /** - * Set the value for a given offset. - * - * @param mixed $offset - * @param mixed $value - * @return void - */ - public function offsetSet($offset, $value): void - { - $this->setAttribute($offset, $value); - } - - /** - * Unset the value for a given offset. - * - * @param mixed $offset - * @return void - */ - public function offsetUnset($offset): void - { - unset($this->attributes[$offset], $this->relations[$offset]); - } - - /** - * Determine if an attribute or relation exists on the model. - * - * @param string $key - * @return bool - */ - public function __isset($key) - { - return $this->offsetExists($key); - } - - /** - * Unset an attribute on the model. - * - * @param string $key - * @return void - */ - public function __unset($key) - { - $this->offsetUnset($key); - } - - /** - * Handle dynamic method calls into the model. - * - * @param string $method - * @param array $parameters - * @return mixed - */ - public function __call($method, $parameters) - { - if (in_array($method, ['increment', 'decrement', 'incrementQuietly', 'decrementQuietly'])) { - return $this->$method(...$parameters); - } - - if ($resolver = $this->relationResolver(static::class, $method)) { - return $resolver($this); - } - - if (Str::startsWith($method, 'through') && - method_exists($this, $relationMethod = Str::of($method)->after('through')->lcfirst()->toString())) { - return $this->through($relationMethod); - } - - return $this->forwardCallTo($this->newQuery(), $method, $parameters); - } - - /** - * Handle dynamic static method calls into the model. - * - * @param string $method - * @param array $parameters - * @return mixed - */ - public static function __callStatic($method, $parameters) - { - return (new static)->$method(...$parameters); - } - - /** - * Convert the model to its string representation. - * - * @return string - */ - public function __toString() - { - return $this->escapeWhenCastingToString - ? e($this->toJson()) - : $this->toJson(); - } - - /** - * Indicate that the object's string representation should be escaped when __toString is invoked. - * - * @param bool $escape - * @return $this - */ - public function escapeWhenCastingToString($escape = true) - { - $this->escapeWhenCastingToString = $escape; - - return $this; - } - - /** - * Prepare the object for serialization. - * - * @return array - */ - public function __sleep() - { - $this->mergeAttributesFromCachedCasts(); - - $this->classCastCache = []; - $this->attributeCastCache = []; - - return array_keys(get_object_vars($this)); - } - - /** - * When a model is being unserialized, check if it needs to be booted. - * - * @return void - */ - public function __wakeup() - { - $this->bootIfNotBooted(); - - $this->initializeTraits(); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/BelongsTo.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/BelongsTo.php deleted file mode 100755 index 112a0edb..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/BelongsTo.php +++ /dev/null @@ -1,393 +0,0 @@ -ownerKey = $ownerKey; - $this->relationName = $relationName; - $this->foreignKey = $foreignKey; - - // In the underlying base relationship class, this variable is referred to as - // the "parent" since most relationships are not inversed. But, since this - // one is we will create a "child" variable for much better readability. - $this->child = $child; - - parent::__construct($query, $child); - } - - /** - * Get the results of the relationship. - * - * @return mixed - */ - public function getResults() - { - if (is_null($this->getForeignKeyFrom($this->child))) { - return $this->getDefaultFor($this->parent); - } - - return $this->query->first() ?: $this->getDefaultFor($this->parent); - } - - /** - * Set the base constraints on the relation query. - * - * @return void - */ - public function addConstraints() - { - if (static::$constraints) { - // For belongs to relationships, which are essentially the inverse of has one - // or has many relationships, we need to actually query on the primary key - // of the related models matching on the foreign key that's on a parent. - $table = $this->related->getTable(); - - $this->query->where($table.'.'.$this->ownerKey, '=', $this->getForeignKeyFrom($this->child)); - } - } - - /** - * Set the constraints for an eager load of the relation. - * - * @param array $models - * @return void - */ - public function addEagerConstraints(array $models) - { - // We'll grab the primary key name of the related models since it could be set to - // a non-standard name and not "id". We will then construct the constraint for - // our eagerly loading query so it returns the proper models from execution. - $key = $this->related->getTable().'.'.$this->ownerKey; - - $whereIn = $this->whereInMethod($this->related, $this->ownerKey); - - $this->whereInEager($whereIn, $key, $this->getEagerModelKeys($models)); - } - - /** - * Gather the keys from an array of related models. - * - * @param array $models - * @return array - */ - protected function getEagerModelKeys(array $models) - { - $keys = []; - - // First we need to gather all of the keys from the parent models so we know what - // to query for via the eager loading query. We will add them to an array then - // execute a "where in" statement to gather up all of those related records. - foreach ($models as $model) { - if (! is_null($value = $this->getForeignKeyFrom($model))) { - $keys[] = $value; - } - } - - sort($keys); - - return array_values(array_unique($keys)); - } - - /** - * Initialize the relation on a set of models. - * - * @param array $models - * @param string $relation - * @return array - */ - public function initRelation(array $models, $relation) - { - foreach ($models as $model) { - $model->setRelation($relation, $this->getDefaultFor($model)); - } - - return $models; - } - - /** - * Match the eagerly loaded results to their parents. - * - * @param array $models - * @param \Illuminate\Database\Eloquent\Collection $results - * @param string $relation - * @return array - */ - public function match(array $models, Collection $results, $relation) - { - // First we will get to build a dictionary of the child models by their primary - // key of the relationship, then we can easily match the children back onto - // the parents using that dictionary and the primary key of the children. - $dictionary = []; - - foreach ($results as $result) { - $attribute = $this->getDictionaryKey($this->getRelatedKeyFrom($result)); - - $dictionary[$attribute] = $result; - } - - // Once we have the dictionary constructed, we can loop through all the parents - // and match back onto their children using these keys of the dictionary and - // the primary key of the children to map them onto the correct instances. - foreach ($models as $model) { - $attribute = $this->getDictionaryKey($this->getForeignKeyFrom($model)); - - if (isset($dictionary[$attribute])) { - $model->setRelation($relation, $dictionary[$attribute]); - } - } - - return $models; - } - - /** - * Associate the model instance to the given parent. - * - * @param \Illuminate\Database\Eloquent\Model|int|string|null $model - * @return \Illuminate\Database\Eloquent\Model - */ - public function associate($model) - { - $ownerKey = $model instanceof Model ? $model->getAttribute($this->ownerKey) : $model; - - $this->child->setAttribute($this->foreignKey, $ownerKey); - - if ($model instanceof Model) { - $this->child->setRelation($this->relationName, $model); - } else { - $this->child->unsetRelation($this->relationName); - } - - return $this->child; - } - - /** - * Dissociate previously associated model from the given parent. - * - * @return \Illuminate\Database\Eloquent\Model - */ - public function dissociate() - { - $this->child->setAttribute($this->foreignKey, null); - - return $this->child->setRelation($this->relationName, null); - } - - /** - * Alias of "dissociate" method. - * - * @return \Illuminate\Database\Eloquent\Model - */ - public function disassociate() - { - return $this->dissociate(); - } - - /** - * Add the constraints for a relationship query. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * @param \Illuminate\Database\Eloquent\Builder $parentQuery - * @param array|mixed $columns - * @return \Illuminate\Database\Eloquent\Builder - */ - public function getRelationExistenceQuery(Builder $query, Builder $parentQuery, $columns = ['*']) - { - if ($parentQuery->getQuery()->from == $query->getQuery()->from) { - return $this->getRelationExistenceQueryForSelfRelation($query, $parentQuery, $columns); - } - - return $query->select($columns)->whereColumn( - $this->getQualifiedForeignKeyName(), '=', $query->qualifyColumn($this->ownerKey) - ); - } - - /** - * Add the constraints for a relationship query on the same table. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * @param \Illuminate\Database\Eloquent\Builder $parentQuery - * @param array|mixed $columns - * @return \Illuminate\Database\Eloquent\Builder - */ - public function getRelationExistenceQueryForSelfRelation(Builder $query, Builder $parentQuery, $columns = ['*']) - { - $query->select($columns)->from( - $query->getModel()->getTable().' as '.$hash = $this->getRelationCountHash() - ); - - $query->getModel()->setTable($hash); - - return $query->whereColumn( - $hash.'.'.$this->ownerKey, '=', $this->getQualifiedForeignKeyName() - ); - } - - /** - * Determine if the related model has an auto-incrementing ID. - * - * @return bool - */ - protected function relationHasIncrementingId() - { - return $this->related->getIncrementing() && - in_array($this->related->getKeyType(), ['int', 'integer']); - } - - /** - * Make a new related instance for the given model. - * - * @param \Illuminate\Database\Eloquent\Model $parent - * @return \Illuminate\Database\Eloquent\Model - */ - protected function newRelatedInstanceFor(Model $parent) - { - return $this->related->newInstance(); - } - - /** - * Get the child of the relationship. - * - * @return \Illuminate\Database\Eloquent\Model - */ - public function getChild() - { - return $this->child; - } - - /** - * Get the foreign key of the relationship. - * - * @return string - */ - public function getForeignKeyName() - { - return $this->foreignKey; - } - - /** - * Get the fully qualified foreign key of the relationship. - * - * @return string - */ - public function getQualifiedForeignKeyName() - { - return $this->child->qualifyColumn($this->foreignKey); - } - - /** - * Get the key value of the child's foreign key. - * - * @return mixed - */ - public function getParentKey() - { - return $this->getForeignKeyFrom($this->child); - } - - /** - * Get the associated key of the relationship. - * - * @return string - */ - public function getOwnerKeyName() - { - return $this->ownerKey; - } - - /** - * Get the fully qualified associated key of the relationship. - * - * @return string - */ - public function getQualifiedOwnerKeyName() - { - return $this->related->qualifyColumn($this->ownerKey); - } - - /** - * Get the value of the model's associated key. - * - * @param \Illuminate\Database\Eloquent\Model $model - * @return mixed - */ - protected function getRelatedKeyFrom(Model $model) - { - return $model->{$this->ownerKey}; - } - - /** - * Get the value of the model's foreign key. - * - * @param \Illuminate\Database\Eloquent\Model $model - * @return mixed - */ - protected function getForeignKeyFrom(Model $model) - { - $foreignKey = $model->{$this->foreignKey}; - - return $foreignKey instanceof BackedEnum ? $foreignKey->value : $foreignKey; - } - - /** - * Get the name of the relationship. - * - * @return string - */ - public function getRelationName() - { - return $this->relationName; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/BelongsToMany.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/BelongsToMany.php deleted file mode 100755 index 238fe2dc..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/BelongsToMany.php +++ /dev/null @@ -1,1603 +0,0 @@ - $table - * @param string $foreignPivotKey - * @param string $relatedPivotKey - * @param string $parentKey - * @param string $relatedKey - * @param string|null $relationName - * @return void - */ - public function __construct(Builder $query, Model $parent, $table, $foreignPivotKey, - $relatedPivotKey, $parentKey, $relatedKey, $relationName = null) - { - $this->parentKey = $parentKey; - $this->relatedKey = $relatedKey; - $this->relationName = $relationName; - $this->relatedPivotKey = $relatedPivotKey; - $this->foreignPivotKey = $foreignPivotKey; - $this->table = $this->resolveTableName($table); - - parent::__construct($query, $parent); - } - - /** - * Attempt to resolve the intermediate table name from the given string. - * - * @param string $table - * @return string - */ - protected function resolveTableName($table) - { - if (! str_contains($table, '\\') || ! class_exists($table)) { - return $table; - } - - $model = new $table; - - if (! $model instanceof Model) { - return $table; - } - - if (in_array(AsPivot::class, class_uses_recursive($model))) { - $this->using($table); - } - - return $model->getTable(); - } - - /** - * Set the base constraints on the relation query. - * - * @return void - */ - public function addConstraints() - { - $this->performJoin(); - - if (static::$constraints) { - $this->addWhereConstraints(); - } - } - - /** - * Set the join clause for the relation query. - * - * @param \Illuminate\Database\Eloquent\Builder|null $query - * @return $this - */ - protected function performJoin($query = null) - { - $query = $query ?: $this->query; - - // We need to join to the intermediate table on the related model's primary - // key column with the intermediate table's foreign key for the related - // model instance. Then we can set the "where" for the parent models. - $query->join( - $this->table, - $this->getQualifiedRelatedKeyName(), - '=', - $this->getQualifiedRelatedPivotKeyName() - ); - - return $this; - } - - /** - * Set the where clause for the relation query. - * - * @return $this - */ - protected function addWhereConstraints() - { - $this->query->where( - $this->getQualifiedForeignPivotKeyName(), '=', $this->parent->{$this->parentKey} - ); - - return $this; - } - - /** - * Set the constraints for an eager load of the relation. - * - * @param array $models - * @return void - */ - public function addEagerConstraints(array $models) - { - $whereIn = $this->whereInMethod($this->parent, $this->parentKey); - - $this->whereInEager( - $whereIn, - $this->getQualifiedForeignPivotKeyName(), - $this->getKeys($models, $this->parentKey) - ); - } - - /** - * Initialize the relation on a set of models. - * - * @param array $models - * @param string $relation - * @return array - */ - public function initRelation(array $models, $relation) - { - foreach ($models as $model) { - $model->setRelation($relation, $this->related->newCollection()); - } - - return $models; - } - - /** - * Match the eagerly loaded results to their parents. - * - * @param array $models - * @param \Illuminate\Database\Eloquent\Collection $results - * @param string $relation - * @return array - */ - public function match(array $models, Collection $results, $relation) - { - $dictionary = $this->buildDictionary($results); - - // Once we have an array dictionary of child objects we can easily match the - // children back to their parent using the dictionary and the keys on the - // parent models. Then we should return these hydrated models back out. - foreach ($models as $model) { - $key = $this->getDictionaryKey($model->{$this->parentKey}); - - if (isset($dictionary[$key])) { - $model->setRelation( - $relation, $this->related->newCollection($dictionary[$key]) - ); - } - } - - return $models; - } - - /** - * Build model dictionary keyed by the relation's foreign key. - * - * @param \Illuminate\Database\Eloquent\Collection $results - * @return array - */ - protected function buildDictionary(Collection $results) - { - // First we'll build a dictionary of child models keyed by the foreign key - // of the relation so that we will easily and quickly match them to the - // parents without having a possibly slow inner loop for every model. - $dictionary = []; - - foreach ($results as $result) { - $value = $this->getDictionaryKey($result->{$this->accessor}->{$this->foreignPivotKey}); - - $dictionary[$value][] = $result; - } - - return $dictionary; - } - - /** - * Get the class being used for pivot models. - * - * @return string - */ - public function getPivotClass() - { - return $this->using ?? Pivot::class; - } - - /** - * Specify the custom pivot model to use for the relationship. - * - * @param string $class - * @return $this - */ - public function using($class) - { - $this->using = $class; - - return $this; - } - - /** - * Specify the custom pivot accessor to use for the relationship. - * - * @param string $accessor - * @return $this - */ - public function as($accessor) - { - $this->accessor = $accessor; - - return $this; - } - - /** - * Set a where clause for a pivot table column. - * - * @param string $column - * @param mixed $operator - * @param mixed $value - * @param string $boolean - * @return $this - */ - public function wherePivot($column, $operator = null, $value = null, $boolean = 'and') - { - $this->pivotWheres[] = func_get_args(); - - return $this->where($this->qualifyPivotColumn($column), $operator, $value, $boolean); - } - - /** - * Set a "where between" clause for a pivot table column. - * - * @param string $column - * @param array $values - * @param string $boolean - * @param bool $not - * @return $this - */ - public function wherePivotBetween($column, array $values, $boolean = 'and', $not = false) - { - return $this->whereBetween($this->qualifyPivotColumn($column), $values, $boolean, $not); - } - - /** - * Set a "or where between" clause for a pivot table column. - * - * @param string $column - * @param array $values - * @return $this - */ - public function orWherePivotBetween($column, array $values) - { - return $this->wherePivotBetween($column, $values, 'or'); - } - - /** - * Set a "where pivot not between" clause for a pivot table column. - * - * @param string $column - * @param array $values - * @param string $boolean - * @return $this - */ - public function wherePivotNotBetween($column, array $values, $boolean = 'and') - { - return $this->wherePivotBetween($column, $values, $boolean, true); - } - - /** - * Set a "or where not between" clause for a pivot table column. - * - * @param string $column - * @param array $values - * @return $this - */ - public function orWherePivotNotBetween($column, array $values) - { - return $this->wherePivotBetween($column, $values, 'or', true); - } - - /** - * Set a "where in" clause for a pivot table column. - * - * @param string $column - * @param mixed $values - * @param string $boolean - * @param bool $not - * @return $this - */ - public function wherePivotIn($column, $values, $boolean = 'and', $not = false) - { - $this->pivotWhereIns[] = func_get_args(); - - return $this->whereIn($this->qualifyPivotColumn($column), $values, $boolean, $not); - } - - /** - * Set an "or where" clause for a pivot table column. - * - * @param string $column - * @param mixed $operator - * @param mixed $value - * @return $this - */ - public function orWherePivot($column, $operator = null, $value = null) - { - return $this->wherePivot($column, $operator, $value, 'or'); - } - - /** - * Set a where clause for a pivot table column. - * - * In addition, new pivot records will receive this value. - * - * @param string|array $column - * @param mixed $value - * @return $this - * - * @throws \InvalidArgumentException - */ - public function withPivotValue($column, $value = null) - { - if (is_array($column)) { - foreach ($column as $name => $value) { - $this->withPivotValue($name, $value); - } - - return $this; - } - - if (is_null($value)) { - throw new InvalidArgumentException('The provided value may not be null.'); - } - - $this->pivotValues[] = compact('column', 'value'); - - return $this->wherePivot($column, '=', $value); - } - - /** - * Set an "or where in" clause for a pivot table column. - * - * @param string $column - * @param mixed $values - * @return $this - */ - public function orWherePivotIn($column, $values) - { - return $this->wherePivotIn($column, $values, 'or'); - } - - /** - * Set a "where not in" clause for a pivot table column. - * - * @param string $column - * @param mixed $values - * @param string $boolean - * @return $this - */ - public function wherePivotNotIn($column, $values, $boolean = 'and') - { - return $this->wherePivotIn($column, $values, $boolean, true); - } - - /** - * Set an "or where not in" clause for a pivot table column. - * - * @param string $column - * @param mixed $values - * @return $this - */ - public function orWherePivotNotIn($column, $values) - { - return $this->wherePivotNotIn($column, $values, 'or'); - } - - /** - * Set a "where null" clause for a pivot table column. - * - * @param string $column - * @param string $boolean - * @param bool $not - * @return $this - */ - public function wherePivotNull($column, $boolean = 'and', $not = false) - { - $this->pivotWhereNulls[] = func_get_args(); - - return $this->whereNull($this->qualifyPivotColumn($column), $boolean, $not); - } - - /** - * Set a "where not null" clause for a pivot table column. - * - * @param string $column - * @param string $boolean - * @return $this - */ - public function wherePivotNotNull($column, $boolean = 'and') - { - return $this->wherePivotNull($column, $boolean, true); - } - - /** - * Set a "or where null" clause for a pivot table column. - * - * @param string $column - * @param bool $not - * @return $this - */ - public function orWherePivotNull($column, $not = false) - { - return $this->wherePivotNull($column, 'or', $not); - } - - /** - * Set a "or where not null" clause for a pivot table column. - * - * @param string $column - * @return $this - */ - public function orWherePivotNotNull($column) - { - return $this->orWherePivotNull($column, true); - } - - /** - * Add an "order by" clause for a pivot table column. - * - * @param string $column - * @param string $direction - * @return $this - */ - public function orderByPivot($column, $direction = 'asc') - { - return $this->orderBy($this->qualifyPivotColumn($column), $direction); - } - - /** - * Find a related model by its primary key or return a new instance of the related model. - * - * @param mixed $id - * @param array $columns - * @return \Illuminate\Support\Collection|\Illuminate\Database\Eloquent\Model - */ - public function findOrNew($id, $columns = ['*']) - { - if (is_null($instance = $this->find($id, $columns))) { - $instance = $this->related->newInstance(); - } - - return $instance; - } - - /** - * Get the first related model record matching the attributes or instantiate it. - * - * @param array $attributes - * @param array $values - * @return \Illuminate\Database\Eloquent\Model - */ - public function firstOrNew(array $attributes = [], array $values = []) - { - if (is_null($instance = $this->related->where($attributes)->first())) { - $instance = $this->related->newInstance(array_merge($attributes, $values)); - } - - return $instance; - } - - /** - * Get the first record matching the attributes. If the record is not found, create it. - * - * @param array $attributes - * @param array $values - * @param array $joining - * @param bool $touch - * @return \Illuminate\Database\Eloquent\Model - */ - public function firstOrCreate(array $attributes = [], array $values = [], array $joining = [], $touch = true) - { - if (is_null($instance = (clone $this)->where($attributes)->first())) { - if (is_null($instance = $this->related->where($attributes)->first())) { - $instance = $this->createOrFirst($attributes, $values, $joining, $touch); - } else { - try { - $this->getQuery()->withSavepointIfNeeded(fn () => $this->attach($instance, $joining, $touch)); - } catch (UniqueConstraintViolationException) { - // Nothing to do, the model was already attached... - } - } - } - - return $instance; - } - - /** - * Attempt to create the record. If a unique constraint violation occurs, attempt to find the matching record. - * - * @param array $attributes - * @param array $values - * @param array $joining - * @param bool $touch - * @return \Illuminate\Database\Eloquent\Model - */ - public function createOrFirst(array $attributes = [], array $values = [], array $joining = [], $touch = true) - { - try { - return $this->getQuery()->withSavePointIfNeeded(fn () => $this->create(array_merge($attributes, $values), $joining, $touch)); - } catch (UniqueConstraintViolationException $e) { - // ... - } - - try { - return tap($this->related->where($attributes)->first() ?? throw $e, function ($instance) use ($joining, $touch) { - $this->getQuery()->withSavepointIfNeeded(fn () => $this->attach($instance, $joining, $touch)); - }); - } catch (UniqueConstraintViolationException $e) { - return (clone $this)->useWritePdo()->where($attributes)->first() ?? throw $e; - } - } - - /** - * Create or update a related record matching the attributes, and fill it with values. - * - * @param array $attributes - * @param array $values - * @param array $joining - * @param bool $touch - * @return \Illuminate\Database\Eloquent\Model - */ - public function updateOrCreate(array $attributes, array $values = [], array $joining = [], $touch = true) - { - return tap($this->firstOrCreate($attributes, $values, $joining, $touch), function ($instance) use ($values) { - if (! $instance->wasRecentlyCreated) { - $instance->fill($values); - - $instance->save(['touch' => false]); - } - }); - } - - /** - * Find a related model by its primary key. - * - * @param mixed $id - * @param array $columns - * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|null - */ - public function find($id, $columns = ['*']) - { - if (! $id instanceof Model && (is_array($id) || $id instanceof Arrayable)) { - return $this->findMany($id, $columns); - } - - return $this->where( - $this->getRelated()->getQualifiedKeyName(), '=', $this->parseId($id) - )->first($columns); - } - - /** - * Find multiple related models by their primary keys. - * - * @param \Illuminate\Contracts\Support\Arrayable|array $ids - * @param array $columns - * @return \Illuminate\Database\Eloquent\Collection - */ - public function findMany($ids, $columns = ['*']) - { - $ids = $ids instanceof Arrayable ? $ids->toArray() : $ids; - - if (empty($ids)) { - return $this->getRelated()->newCollection(); - } - - return $this->whereKey( - $this->parseIds($ids) - )->get($columns); - } - - /** - * Find a related model by its primary key or throw an exception. - * - * @param mixed $id - * @param array $columns - * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection - * - * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> - */ - public function findOrFail($id, $columns = ['*']) - { - $result = $this->find($id, $columns); - - $id = $id instanceof Arrayable ? $id->toArray() : $id; - - if (is_array($id)) { - if (count($result) === count(array_unique($id))) { - return $result; - } - } elseif (! is_null($result)) { - return $result; - } - - throw (new ModelNotFoundException)->setModel(get_class($this->related), $id); - } - - /** - * Find a related model by its primary key or call a callback. - * - * @param mixed $id - * @param \Closure|array $columns - * @param \Closure|null $callback - * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|mixed - */ - public function findOr($id, $columns = ['*'], ?Closure $callback = null) - { - if ($columns instanceof Closure) { - $callback = $columns; - - $columns = ['*']; - } - - $result = $this->find($id, $columns); - - $id = $id instanceof Arrayable ? $id->toArray() : $id; - - if (is_array($id)) { - if (count($result) === count(array_unique($id))) { - return $result; - } - } elseif (! is_null($result)) { - return $result; - } - - return $callback(); - } - - /** - * Add a basic where clause to the query, and return the first result. - * - * @param \Closure|string|array $column - * @param mixed $operator - * @param mixed $value - * @param string $boolean - * @return \Illuminate\Database\Eloquent\Model|static - */ - public function firstWhere($column, $operator = null, $value = null, $boolean = 'and') - { - return $this->where($column, $operator, $value, $boolean)->first(); - } - - /** - * Execute the query and get the first result. - * - * @param array $columns - * @return mixed - */ - public function first($columns = ['*']) - { - $results = $this->take(1)->get($columns); - - return count($results) > 0 ? $results->first() : null; - } - - /** - * Execute the query and get the first result or throw an exception. - * - * @param array $columns - * @return \Illuminate\Database\Eloquent\Model|static - * - * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> - */ - public function firstOrFail($columns = ['*']) - { - if (! is_null($model = $this->first($columns))) { - return $model; - } - - throw (new ModelNotFoundException)->setModel(get_class($this->related)); - } - - /** - * Execute the query and get the first result or call a callback. - * - * @param \Closure|array $columns - * @param \Closure|null $callback - * @return \Illuminate\Database\Eloquent\Model|static|mixed - */ - public function firstOr($columns = ['*'], ?Closure $callback = null) - { - if ($columns instanceof Closure) { - $callback = $columns; - - $columns = ['*']; - } - - if (! is_null($model = $this->first($columns))) { - return $model; - } - - return $callback(); - } - - /** - * Get the results of the relationship. - * - * @return mixed - */ - public function getResults() - { - return ! is_null($this->parent->{$this->parentKey}) - ? $this->get() - : $this->related->newCollection(); - } - - /** - * Execute the query as a "select" statement. - * - * @param array $columns - * @return \Illuminate\Database\Eloquent\Collection - */ - public function get($columns = ['*']) - { - // First we'll add the proper select columns onto the query so it is run with - // the proper columns. Then, we will get the results and hydrate our pivot - // models with the result of those columns as a separate model relation. - $builder = $this->query->applyScopes(); - - $columns = $builder->getQuery()->columns ? [] : $columns; - - $models = $builder->addSelect( - $this->shouldSelect($columns) - )->getModels(); - - $this->hydratePivotRelation($models); - - // If we actually found models we will also eager load any relationships that - // have been specified as needing to be eager loaded. This will solve the - // n + 1 query problem for the developer and also increase performance. - if (count($models) > 0) { - $models = $builder->eagerLoadRelations($models); - } - - return $this->related->newCollection($models); - } - - /** - * Get the select columns for the relation query. - * - * @param array $columns - * @return array - */ - protected function shouldSelect(array $columns = ['*']) - { - if ($columns == ['*']) { - $columns = [$this->related->getTable().'.*']; - } - - return array_merge($columns, $this->aliasedPivotColumns()); - } - - /** - * Get the pivot columns for the relation. - * - * "pivot_" is prefixed at each column for easy removal later. - * - * @return array - */ - protected function aliasedPivotColumns() - { - $defaults = [$this->foreignPivotKey, $this->relatedPivotKey]; - - return collect(array_merge($defaults, $this->pivotColumns))->map(function ($column) { - return $this->qualifyPivotColumn($column).' as pivot_'.$column; - })->unique()->all(); - } - - /** - * Get a paginator for the "select" statement. - * - * @param int|null $perPage - * @param array $columns - * @param string $pageName - * @param int|null $page - * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator - */ - public function paginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null) - { - $this->query->addSelect($this->shouldSelect($columns)); - - return tap($this->query->paginate($perPage, $columns, $pageName, $page), function ($paginator) { - $this->hydratePivotRelation($paginator->items()); - }); - } - - /** - * Paginate the given query into a simple paginator. - * - * @param int|null $perPage - * @param array $columns - * @param string $pageName - * @param int|null $page - * @return \Illuminate\Contracts\Pagination\Paginator - */ - public function simplePaginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null) - { - $this->query->addSelect($this->shouldSelect($columns)); - - return tap($this->query->simplePaginate($perPage, $columns, $pageName, $page), function ($paginator) { - $this->hydratePivotRelation($paginator->items()); - }); - } - - /** - * Paginate the given query into a cursor paginator. - * - * @param int|null $perPage - * @param array $columns - * @param string $cursorName - * @param string|null $cursor - * @return \Illuminate\Contracts\Pagination\CursorPaginator - */ - public function cursorPaginate($perPage = null, $columns = ['*'], $cursorName = 'cursor', $cursor = null) - { - $this->query->addSelect($this->shouldSelect($columns)); - - return tap($this->query->cursorPaginate($perPage, $columns, $cursorName, $cursor), function ($paginator) { - $this->hydratePivotRelation($paginator->items()); - }); - } - - /** - * Chunk the results of the query. - * - * @param int $count - * @param callable $callback - * @return bool - */ - public function chunk($count, callable $callback) - { - return $this->prepareQueryBuilder()->chunk($count, function ($results, $page) use ($callback) { - $this->hydratePivotRelation($results->all()); - - return $callback($results, $page); - }); - } - - /** - * Chunk the results of a query by comparing numeric IDs. - * - * @param int $count - * @param callable $callback - * @param string|null $column - * @param string|null $alias - * @return bool - */ - public function chunkById($count, callable $callback, $column = null, $alias = null) - { - return $this->orderedChunkById($count, $callback, $column, $alias); - } - - /** - * Chunk the results of a query by comparing IDs in descending order. - * - * @param int $count - * @param callable $callback - * @param string|null $column - * @param string|null $alias - * @return bool - */ - public function chunkByIdDesc($count, callable $callback, $column = null, $alias = null) - { - return $this->orderedChunkById($count, $callback, $column, $alias, descending: true); - } - - /** - * Execute a callback over each item while chunking by ID. - * - * @param callable $callback - * @param int $count - * @param string|null $column - * @param string|null $alias - * @return bool - */ - public function eachById(callable $callback, $count = 1000, $column = null, $alias = null) - { - return $this->chunkById($count, function ($results, $page) use ($callback, $count) { - foreach ($results as $key => $value) { - if ($callback($value, (($page - 1) * $count) + $key) === false) { - return false; - } - } - }, $column, $alias); - } - - /** - * Chunk the results of a query by comparing IDs in a given order. - * - * @param int $count - * @param callable $callback - * @param string|null $column - * @param string|null $alias - * @param bool $descending - * @return bool - */ - public function orderedChunkById($count, callable $callback, $column = null, $alias = null, $descending = false) - { - $column ??= $this->getRelated()->qualifyColumn( - $this->getRelatedKeyName() - ); - - $alias ??= $this->getRelatedKeyName(); - - return $this->prepareQueryBuilder()->orderedChunkById($count, function ($results, $page) use ($callback) { - $this->hydratePivotRelation($results->all()); - - return $callback($results, $page); - }, $column, $alias, $descending); - } - - /** - * Execute a callback over each item while chunking. - * - * @param callable $callback - * @param int $count - * @return bool - */ - public function each(callable $callback, $count = 1000) - { - return $this->chunk($count, function ($results) use ($callback) { - foreach ($results as $key => $value) { - if ($callback($value, $key) === false) { - return false; - } - } - }); - } - - /** - * Query lazily, by chunks of the given size. - * - * @param int $chunkSize - * @return \Illuminate\Support\LazyCollection - */ - public function lazy($chunkSize = 1000) - { - return $this->prepareQueryBuilder()->lazy($chunkSize)->map(function ($model) { - $this->hydratePivotRelation([$model]); - - return $model; - }); - } - - /** - * Query lazily, by chunking the results of a query by comparing IDs. - * - * @param int $chunkSize - * @param string|null $column - * @param string|null $alias - * @return \Illuminate\Support\LazyCollection - */ - public function lazyById($chunkSize = 1000, $column = null, $alias = null) - { - $column ??= $this->getRelated()->qualifyColumn( - $this->getRelatedKeyName() - ); - - $alias ??= $this->getRelatedKeyName(); - - return $this->prepareQueryBuilder()->lazyById($chunkSize, $column, $alias)->map(function ($model) { - $this->hydratePivotRelation([$model]); - - return $model; - }); - } - - /** - * Query lazily, by chunking the results of a query by comparing IDs in descending order. - * - * @param int $chunkSize - * @param string|null $column - * @param string|null $alias - * @return \Illuminate\Support\LazyCollection - */ - public function lazyByIdDesc($chunkSize = 1000, $column = null, $alias = null) - { - $column ??= $this->getRelated()->qualifyColumn( - $this->getRelatedKeyName() - ); - - $alias ??= $this->getRelatedKeyName(); - - return $this->prepareQueryBuilder()->lazyByIdDesc($chunkSize, $column, $alias)->map(function ($model) { - $this->hydratePivotRelation([$model]); - - return $model; - }); - } - - /** - * Get a lazy collection for the given query. - * - * @return \Illuminate\Support\LazyCollection - */ - public function cursor() - { - return $this->prepareQueryBuilder()->cursor()->map(function ($model) { - $this->hydratePivotRelation([$model]); - - return $model; - }); - } - - /** - * Prepare the query builder for query execution. - * - * @return \Illuminate\Database\Eloquent\Builder - */ - protected function prepareQueryBuilder() - { - return $this->query->addSelect($this->shouldSelect()); - } - - /** - * Hydrate the pivot table relationship on the models. - * - * @param array $models - * @return void - */ - protected function hydratePivotRelation(array $models) - { - // To hydrate the pivot relationship, we will just gather the pivot attributes - // and create a new Pivot model, which is basically a dynamic model that we - // will set the attributes, table, and connections on it so it will work. - foreach ($models as $model) { - $model->setRelation($this->accessor, $this->newExistingPivot( - $this->migratePivotAttributes($model) - )); - } - } - - /** - * Get the pivot attributes from a model. - * - * @param \Illuminate\Database\Eloquent\Model $model - * @return array - */ - protected function migratePivotAttributes(Model $model) - { - $values = []; - - foreach ($model->getAttributes() as $key => $value) { - // To get the pivots attributes we will just take any of the attributes which - // begin with "pivot_" and add those to this arrays, as well as unsetting - // them from the parent's models since they exist in a different table. - if (str_starts_with($key, 'pivot_')) { - $values[substr($key, 6)] = $value; - - unset($model->$key); - } - } - - return $values; - } - - /** - * If we're touching the parent model, touch. - * - * @return void - */ - public function touchIfTouching() - { - if ($this->touchingParent()) { - $this->getParent()->touch(); - } - - if ($this->getParent()->touches($this->relationName)) { - $this->touch(); - } - } - - /** - * Determine if we should touch the parent on sync. - * - * @return bool - */ - protected function touchingParent() - { - return $this->getRelated()->touches($this->guessInverseRelation()); - } - - /** - * Attempt to guess the name of the inverse of the relation. - * - * @return string - */ - protected function guessInverseRelation() - { - return Str::camel(Str::pluralStudly(class_basename($this->getParent()))); - } - - /** - * Touch all of the related models for the relationship. - * - * E.g.: Touch all roles associated with this user. - * - * @return void - */ - public function touch() - { - if ($this->related->isIgnoringTouch()) { - return; - } - - $columns = [ - $this->related->getUpdatedAtColumn() => $this->related->freshTimestampString(), - ]; - - // If we actually have IDs for the relation, we will run the query to update all - // the related model's timestamps, to make sure these all reflect the changes - // to the parent models. This will help us keep any caching synced up here. - if (count($ids = $this->allRelatedIds()) > 0) { - $this->getRelated()->newQueryWithoutRelationships()->whereKey($ids)->update($columns); - } - } - - /** - * Get all of the IDs for the related models. - * - * @return \Illuminate\Support\Collection - */ - public function allRelatedIds() - { - return $this->newPivotQuery()->pluck($this->relatedPivotKey); - } - - /** - * Save a new model and attach it to the parent model. - * - * @param \Illuminate\Database\Eloquent\Model $model - * @param array $pivotAttributes - * @param bool $touch - * @return \Illuminate\Database\Eloquent\Model - */ - public function save(Model $model, array $pivotAttributes = [], $touch = true) - { - $model->save(['touch' => false]); - - $this->attach($model, $pivotAttributes, $touch); - - return $model; - } - - /** - * Save a new model without raising any events and attach it to the parent model. - * - * @param \Illuminate\Database\Eloquent\Model $model - * @param array $pivotAttributes - * @param bool $touch - * @return \Illuminate\Database\Eloquent\Model - */ - public function saveQuietly(Model $model, array $pivotAttributes = [], $touch = true) - { - return Model::withoutEvents(function () use ($model, $pivotAttributes, $touch) { - return $this->save($model, $pivotAttributes, $touch); - }); - } - - /** - * Save an array of new models and attach them to the parent model. - * - * @param \Illuminate\Support\Collection|array $models - * @param array $pivotAttributes - * @return array - */ - public function saveMany($models, array $pivotAttributes = []) - { - foreach ($models as $key => $model) { - $this->save($model, (array) ($pivotAttributes[$key] ?? []), false); - } - - $this->touchIfTouching(); - - return $models; - } - - /** - * Save an array of new models without raising any events and attach them to the parent model. - * - * @param \Illuminate\Support\Collection|array $models - * @param array $pivotAttributes - * @return array - */ - public function saveManyQuietly($models, array $pivotAttributes = []) - { - return Model::withoutEvents(function () use ($models, $pivotAttributes) { - return $this->saveMany($models, $pivotAttributes); - }); - } - - /** - * Create a new instance of the related model. - * - * @param array $attributes - * @param array $joining - * @param bool $touch - * @return \Illuminate\Database\Eloquent\Model - */ - public function create(array $attributes = [], array $joining = [], $touch = true) - { - $instance = $this->related->newInstance($attributes); - - // Once we save the related model, we need to attach it to the base model via - // through intermediate table so we'll use the existing "attach" method to - // accomplish this which will insert the record and any more attributes. - $instance->save(['touch' => false]); - - $this->attach($instance, $joining, $touch); - - return $instance; - } - - /** - * Create an array of new instances of the related models. - * - * @param iterable $records - * @param array $joinings - * @return array - */ - public function createMany(iterable $records, array $joinings = []) - { - $instances = []; - - foreach ($records as $key => $record) { - $instances[] = $this->create($record, (array) ($joinings[$key] ?? []), false); - } - - $this->touchIfTouching(); - - return $instances; - } - - /** - * Add the constraints for a relationship query. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * @param \Illuminate\Database\Eloquent\Builder $parentQuery - * @param array|mixed $columns - * @return \Illuminate\Database\Eloquent\Builder - */ - public function getRelationExistenceQuery(Builder $query, Builder $parentQuery, $columns = ['*']) - { - if ($parentQuery->getQuery()->from == $query->getQuery()->from) { - return $this->getRelationExistenceQueryForSelfJoin($query, $parentQuery, $columns); - } - - $this->performJoin($query); - - return parent::getRelationExistenceQuery($query, $parentQuery, $columns); - } - - /** - * Add the constraints for a relationship query on the same table. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * @param \Illuminate\Database\Eloquent\Builder $parentQuery - * @param array|mixed $columns - * @return \Illuminate\Database\Eloquent\Builder - */ - public function getRelationExistenceQueryForSelfJoin(Builder $query, Builder $parentQuery, $columns = ['*']) - { - $query->select($columns); - - $query->from($this->related->getTable().' as '.$hash = $this->getRelationCountHash()); - - $this->related->setTable($hash); - - $this->performJoin($query); - - return parent::getRelationExistenceQuery($query, $parentQuery, $columns); - } - - /** - * Get the key for comparing against the parent key in "has" query. - * - * @return string - */ - public function getExistenceCompareKey() - { - return $this->getQualifiedForeignPivotKeyName(); - } - - /** - * Specify that the pivot table has creation and update timestamps. - * - * @param mixed $createdAt - * @param mixed $updatedAt - * @return $this - */ - public function withTimestamps($createdAt = null, $updatedAt = null) - { - $this->withTimestamps = true; - - $this->pivotCreatedAt = $createdAt; - $this->pivotUpdatedAt = $updatedAt; - - return $this->withPivot($this->createdAt(), $this->updatedAt()); - } - - /** - * Get the name of the "created at" column. - * - * @return string - */ - public function createdAt() - { - return $this->pivotCreatedAt ?: $this->parent->getCreatedAtColumn(); - } - - /** - * Get the name of the "updated at" column. - * - * @return string - */ - public function updatedAt() - { - return $this->pivotUpdatedAt ?: $this->parent->getUpdatedAtColumn(); - } - - /** - * Get the foreign key for the relation. - * - * @return string - */ - public function getForeignPivotKeyName() - { - return $this->foreignPivotKey; - } - - /** - * Get the fully qualified foreign key for the relation. - * - * @return string - */ - public function getQualifiedForeignPivotKeyName() - { - return $this->qualifyPivotColumn($this->foreignPivotKey); - } - - /** - * Get the "related key" for the relation. - * - * @return string - */ - public function getRelatedPivotKeyName() - { - return $this->relatedPivotKey; - } - - /** - * Get the fully qualified "related key" for the relation. - * - * @return string - */ - public function getQualifiedRelatedPivotKeyName() - { - return $this->qualifyPivotColumn($this->relatedPivotKey); - } - - /** - * Get the parent key for the relationship. - * - * @return string - */ - public function getParentKeyName() - { - return $this->parentKey; - } - - /** - * Get the fully qualified parent key name for the relation. - * - * @return string - */ - public function getQualifiedParentKeyName() - { - return $this->parent->qualifyColumn($this->parentKey); - } - - /** - * Get the related key for the relationship. - * - * @return string - */ - public function getRelatedKeyName() - { - return $this->relatedKey; - } - - /** - * Get the fully qualified related key name for the relation. - * - * @return string - */ - public function getQualifiedRelatedKeyName() - { - return $this->related->qualifyColumn($this->relatedKey); - } - - /** - * Get the intermediate table for the relationship. - * - * @return string - */ - public function getTable() - { - return $this->table; - } - - /** - * Get the relationship name for the relationship. - * - * @return string - */ - public function getRelationName() - { - return $this->relationName; - } - - /** - * Get the name of the pivot accessor for this relationship. - * - * @return string - */ - public function getPivotAccessor() - { - return $this->accessor; - } - - /** - * Get the pivot columns for this relationship. - * - * @return array - */ - public function getPivotColumns() - { - return $this->pivotColumns; - } - - /** - * Qualify the given column name by the pivot table. - * - * @param string $column - * @return string - */ - public function qualifyPivotColumn($column) - { - return str_contains($column, '.') - ? $column - : $this->table.'.'.$column; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Concerns/InteractsWithPivotTable.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Concerns/InteractsWithPivotTable.php deleted file mode 100644 index 48444a52..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Concerns/InteractsWithPivotTable.php +++ /dev/null @@ -1,688 +0,0 @@ - [], 'detached' => [], - ]; - - $records = $this->formatRecordsList($this->parseIds($ids)); - - // Next, we will determine which IDs should get removed from the join table by - // checking which of the given ID/records is in the list of current records - // and removing all of those rows from this "intermediate" joining table. - $detach = array_values(array_intersect( - $this->newPivotQuery()->pluck($this->relatedPivotKey)->all(), - array_keys($records) - )); - - if (count($detach) > 0) { - $this->detach($detach, false); - - $changes['detached'] = $this->castKeys($detach); - } - - // Finally, for all of the records which were not "detached", we'll attach the - // records into the intermediate table. Then, we will add those attaches to - // this change list and get ready to return these results to the callers. - $attach = array_diff_key($records, array_flip($detach)); - - if (count($attach) > 0) { - $this->attach($attach, [], false); - - $changes['attached'] = array_keys($attach); - } - - // Once we have finished attaching or detaching the records, we will see if we - // have done any attaching or detaching, and if we have we will touch these - // relationships if they are configured to touch on any database updates. - if ($touch && (count($changes['attached']) || - count($changes['detached']))) { - $this->touchIfTouching(); - } - - return $changes; - } - - /** - * Sync the intermediate tables with a list of IDs without detaching. - * - * @param \Illuminate\Support\Collection|\Illuminate\Database\Eloquent\Model|array $ids - * @return array - */ - public function syncWithoutDetaching($ids) - { - return $this->sync($ids, false); - } - - /** - * Sync the intermediate tables with a list of IDs or collection of models. - * - * @param \Illuminate\Support\Collection|\Illuminate\Database\Eloquent\Model|array $ids - * @param bool $detaching - * @return array - */ - public function sync($ids, $detaching = true) - { - $changes = [ - 'attached' => [], 'detached' => [], 'updated' => [], - ]; - - // First we need to attach any of the associated models that are not currently - // in this joining table. We'll spin through the given IDs, checking to see - // if they exist in the array of current ones, and if not we will insert. - $current = $this->getCurrentlyAttachedPivots() - ->pluck($this->relatedPivotKey)->all(); - - $records = $this->formatRecordsList($this->parseIds($ids)); - - // Next, we will take the differences of the currents and given IDs and detach - // all of the entities that exist in the "current" array but are not in the - // array of the new IDs given to the method which will complete the sync. - if ($detaching) { - $detach = array_diff($current, array_keys($records)); - - if (count($detach) > 0) { - $this->detach($detach); - - $changes['detached'] = $this->castKeys($detach); - } - } - - // Now we are finally ready to attach the new records. Note that we'll disable - // touching until after the entire operation is complete so we don't fire a - // ton of touch operations until we are totally done syncing the records. - $changes = array_merge( - $changes, $this->attachNew($records, $current, false) - ); - - // Once we have finished attaching or detaching the records, we will see if we - // have done any attaching or detaching, and if we have we will touch these - // relationships if they are configured to touch on any database updates. - if (count($changes['attached']) || - count($changes['updated']) || - count($changes['detached'])) { - $this->touchIfTouching(); - } - - return $changes; - } - - /** - * Sync the intermediate tables with a list of IDs or collection of models with the given pivot values. - * - * @param \Illuminate\Support\Collection|\Illuminate\Database\Eloquent\Model|array $ids - * @param array $values - * @param bool $detaching - * @return array - */ - public function syncWithPivotValues($ids, array $values, bool $detaching = true) - { - return $this->sync(collect($this->parseIds($ids))->mapWithKeys(function ($id) use ($values) { - return [$id => $values]; - }), $detaching); - } - - /** - * Format the sync / toggle record list so that it is keyed by ID. - * - * @param array $records - * @return array - */ - protected function formatRecordsList(array $records) - { - return collect($records)->mapWithKeys(function ($attributes, $id) { - if (! is_array($attributes)) { - [$id, $attributes] = [$attributes, []]; - } - - if ($id instanceof BackedEnum) { - $id = $id->value; - } - - return [$id => $attributes]; - })->all(); - } - - /** - * Attach all of the records that aren't in the given current records. - * - * @param array $records - * @param array $current - * @param bool $touch - * @return array - */ - protected function attachNew(array $records, array $current, $touch = true) - { - $changes = ['attached' => [], 'updated' => []]; - - foreach ($records as $id => $attributes) { - // If the ID is not in the list of existing pivot IDs, we will insert a new pivot - // record, otherwise, we will just update this existing record on this joining - // table, so that the developers will easily update these records pain free. - if (! in_array($id, $current)) { - $this->attach($id, $attributes, $touch); - - $changes['attached'][] = $this->castKey($id); - } - - // Now we'll try to update an existing pivot record with the attributes that were - // given to the method. If the model is actually updated we will add it to the - // list of updated pivot records so we return them back out to the consumer. - elseif (count($attributes) > 0 && - $this->updateExistingPivot($id, $attributes, $touch)) { - $changes['updated'][] = $this->castKey($id); - } - } - - return $changes; - } - - /** - * Update an existing pivot record on the table. - * - * @param mixed $id - * @param array $attributes - * @param bool $touch - * @return int - */ - public function updateExistingPivot($id, array $attributes, $touch = true) - { - if ($this->using && - empty($this->pivotWheres) && - empty($this->pivotWhereIns) && - empty($this->pivotWhereNulls)) { - return $this->updateExistingPivotUsingCustomClass($id, $attributes, $touch); - } - - if ($this->hasPivotColumn($this->updatedAt())) { - $attributes = $this->addTimestampsToAttachment($attributes, true); - } - - $updated = $this->newPivotStatementForId($this->parseId($id))->update( - $this->castAttributes($attributes) - ); - - if ($touch) { - $this->touchIfTouching(); - } - - return $updated; - } - - /** - * Update an existing pivot record on the table via a custom class. - * - * @param mixed $id - * @param array $attributes - * @param bool $touch - * @return int - */ - protected function updateExistingPivotUsingCustomClass($id, array $attributes, $touch) - { - $pivot = $this->getCurrentlyAttachedPivots() - ->where($this->foreignPivotKey, $this->parent->{$this->parentKey}) - ->where($this->relatedPivotKey, $this->parseId($id)) - ->first(); - - $updated = $pivot ? $pivot->fill($attributes)->isDirty() : false; - - if ($updated) { - $pivot->save(); - } - - if ($touch) { - $this->touchIfTouching(); - } - - return (int) $updated; - } - - /** - * Attach a model to the parent. - * - * @param mixed $id - * @param array $attributes - * @param bool $touch - * @return void - */ - public function attach($id, array $attributes = [], $touch = true) - { - if ($this->using) { - $this->attachUsingCustomClass($id, $attributes); - } else { - // Here we will insert the attachment records into the pivot table. Once we have - // inserted the records, we will touch the relationships if necessary and the - // function will return. We can parse the IDs before inserting the records. - $this->newPivotStatement()->insert($this->formatAttachRecords( - $this->parseIds($id), $attributes - )); - } - - if ($touch) { - $this->touchIfTouching(); - } - } - - /** - * Attach a model to the parent using a custom class. - * - * @param mixed $id - * @param array $attributes - * @return void - */ - protected function attachUsingCustomClass($id, array $attributes) - { - $records = $this->formatAttachRecords( - $this->parseIds($id), $attributes - ); - - foreach ($records as $record) { - $this->newPivot($record, false)->save(); - } - } - - /** - * Create an array of records to insert into the pivot table. - * - * @param array $ids - * @param array $attributes - * @return array - */ - protected function formatAttachRecords($ids, array $attributes) - { - $records = []; - - $hasTimestamps = ($this->hasPivotColumn($this->createdAt()) || - $this->hasPivotColumn($this->updatedAt())); - - // To create the attachment records, we will simply spin through the IDs given - // and create a new record to insert for each ID. Each ID may actually be a - // key in the array, with extra attributes to be placed in other columns. - foreach ($ids as $key => $value) { - $records[] = $this->formatAttachRecord( - $key, $value, $attributes, $hasTimestamps - ); - } - - return $records; - } - - /** - * Create a full attachment record payload. - * - * @param int $key - * @param mixed $value - * @param array $attributes - * @param bool $hasTimestamps - * @return array - */ - protected function formatAttachRecord($key, $value, $attributes, $hasTimestamps) - { - [$id, $attributes] = $this->extractAttachIdAndAttributes($key, $value, $attributes); - - return array_merge( - $this->baseAttachRecord($id, $hasTimestamps), $this->castAttributes($attributes) - ); - } - - /** - * Get the attach record ID and extra attributes. - * - * @param mixed $key - * @param mixed $value - * @param array $attributes - * @return array - */ - protected function extractAttachIdAndAttributes($key, $value, array $attributes) - { - return is_array($value) - ? [$key, array_merge($value, $attributes)] - : [$value, $attributes]; - } - - /** - * Create a new pivot attachment record. - * - * @param int $id - * @param bool $timed - * @return array - */ - protected function baseAttachRecord($id, $timed) - { - $record[$this->relatedPivotKey] = $id; - - $record[$this->foreignPivotKey] = $this->parent->{$this->parentKey}; - - // If the record needs to have creation and update timestamps, we will make - // them by calling the parent model's "freshTimestamp" method which will - // provide us with a fresh timestamp in this model's preferred format. - if ($timed) { - $record = $this->addTimestampsToAttachment($record); - } - - foreach ($this->pivotValues as $value) { - $record[$value['column']] = $value['value']; - } - - return $record; - } - - /** - * Set the creation and update timestamps on an attach record. - * - * @param array $record - * @param bool $exists - * @return array - */ - protected function addTimestampsToAttachment(array $record, $exists = false) - { - $fresh = $this->parent->freshTimestamp(); - - if ($this->using) { - $pivotModel = new $this->using; - - $fresh = $pivotModel->fromDateTime($fresh); - } - - if (! $exists && $this->hasPivotColumn($this->createdAt())) { - $record[$this->createdAt()] = $fresh; - } - - if ($this->hasPivotColumn($this->updatedAt())) { - $record[$this->updatedAt()] = $fresh; - } - - return $record; - } - - /** - * Determine whether the given column is defined as a pivot column. - * - * @param string $column - * @return bool - */ - public function hasPivotColumn($column) - { - return in_array($column, $this->pivotColumns); - } - - /** - * Detach models from the relationship. - * - * @param mixed $ids - * @param bool $touch - * @return int - */ - public function detach($ids = null, $touch = true) - { - if ($this->using && - ! empty($ids) && - empty($this->pivotWheres) && - empty($this->pivotWhereIns) && - empty($this->pivotWhereNulls)) { - $results = $this->detachUsingCustomClass($ids); - } else { - $query = $this->newPivotQuery(); - - // If associated IDs were passed to the method we will only delete those - // associations, otherwise all of the association ties will be broken. - // We'll return the numbers of affected rows when we do the deletes. - if (! is_null($ids)) { - $ids = $this->parseIds($ids); - - if (empty($ids)) { - return 0; - } - - $query->whereIn($this->getQualifiedRelatedPivotKeyName(), (array) $ids); - } - - // Once we have all of the conditions set on the statement, we are ready - // to run the delete on the pivot table. Then, if the touch parameter - // is true, we will go ahead and touch all related models to sync. - $results = $query->delete(); - } - - if ($touch) { - $this->touchIfTouching(); - } - - return $results; - } - - /** - * Detach models from the relationship using a custom class. - * - * @param mixed $ids - * @return int - */ - protected function detachUsingCustomClass($ids) - { - $results = 0; - - foreach ($this->parseIds($ids) as $id) { - $results += $this->newPivot([ - $this->foreignPivotKey => $this->parent->{$this->parentKey}, - $this->relatedPivotKey => $id, - ], true)->delete(); - } - - return $results; - } - - /** - * Get the pivot models that are currently attached. - * - * @return \Illuminate\Support\Collection - */ - protected function getCurrentlyAttachedPivots() - { - return $this->newPivotQuery()->get()->map(function ($record) { - $class = $this->using ?: Pivot::class; - - $pivot = $class::fromRawAttributes($this->parent, (array) $record, $this->getTable(), true); - - return $pivot->setPivotKeys($this->foreignPivotKey, $this->relatedPivotKey); - }); - } - - /** - * Create a new pivot model instance. - * - * @param array $attributes - * @param bool $exists - * @return \Illuminate\Database\Eloquent\Relations\Pivot - */ - public function newPivot(array $attributes = [], $exists = false) - { - $attributes = array_merge(array_column($this->pivotValues, 'value', 'column'), $attributes); - - $pivot = $this->related->newPivot( - $this->parent, $attributes, $this->table, $exists, $this->using - ); - - return $pivot->setPivotKeys($this->foreignPivotKey, $this->relatedPivotKey); - } - - /** - * Create a new existing pivot model instance. - * - * @param array $attributes - * @return \Illuminate\Database\Eloquent\Relations\Pivot - */ - public function newExistingPivot(array $attributes = []) - { - return $this->newPivot($attributes, true); - } - - /** - * Get a new plain query builder for the pivot table. - * - * @return \Illuminate\Database\Query\Builder - */ - public function newPivotStatement() - { - return $this->query->getQuery()->newQuery()->from($this->table); - } - - /** - * Get a new pivot statement for a given "other" ID. - * - * @param mixed $id - * @return \Illuminate\Database\Query\Builder - */ - public function newPivotStatementForId($id) - { - return $this->newPivotQuery()->whereIn($this->relatedPivotKey, $this->parseIds($id)); - } - - /** - * Create a new query builder for the pivot table. - * - * @return \Illuminate\Database\Query\Builder - */ - public function newPivotQuery() - { - $query = $this->newPivotStatement(); - - foreach ($this->pivotWheres as $arguments) { - $query->where(...$arguments); - } - - foreach ($this->pivotWhereIns as $arguments) { - $query->whereIn(...$arguments); - } - - foreach ($this->pivotWhereNulls as $arguments) { - $query->whereNull(...$arguments); - } - - return $query->where($this->getQualifiedForeignPivotKeyName(), $this->parent->{$this->parentKey}); - } - - /** - * Set the columns on the pivot table to retrieve. - * - * @param array|mixed $columns - * @return $this - */ - public function withPivot($columns) - { - $this->pivotColumns = array_merge( - $this->pivotColumns, is_array($columns) ? $columns : func_get_args() - ); - - return $this; - } - - /** - * Get all of the IDs from the given mixed value. - * - * @param mixed $value - * @return array - */ - protected function parseIds($value) - { - if ($value instanceof Model) { - return [$value->{$this->relatedKey}]; - } - - if ($value instanceof Collection) { - return $value->pluck($this->relatedKey)->all(); - } - - if ($value instanceof BaseCollection) { - return $value->toArray(); - } - - return (array) $value; - } - - /** - * Get the ID from the given mixed value. - * - * @param mixed $value - * @return mixed - */ - protected function parseId($value) - { - return $value instanceof Model ? $value->{$this->relatedKey} : $value; - } - - /** - * Cast the given keys to integers if they are numeric and string otherwise. - * - * @param array $keys - * @return array - */ - protected function castKeys(array $keys) - { - return array_map(function ($v) { - return $this->castKey($v); - }, $keys); - } - - /** - * Cast the given key to convert to primary key type. - * - * @param mixed $key - * @return mixed - */ - protected function castKey($key) - { - return $this->getTypeSwapValue( - $this->related->getKeyType(), - $key - ); - } - - /** - * Cast the given pivot attributes. - * - * @param array $attributes - * @return array - */ - protected function castAttributes($attributes) - { - return $this->using - ? $this->newPivot()->fill($attributes)->getAttributes() - : $attributes; - } - - /** - * Converts a given value to a given type value. - * - * @param string $type - * @param mixed $value - * @return mixed - */ - protected function getTypeSwapValue($type, $value) - { - return match (strtolower($type)) { - 'int', 'integer' => (int) $value, - 'real', 'float', 'double' => (float) $value, - 'string' => (string) $value, - default => $value, - }; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasManyThrough.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasManyThrough.php deleted file mode 100644 index db212193..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasManyThrough.php +++ /dev/null @@ -1,879 +0,0 @@ -localKey = $localKey; - $this->firstKey = $firstKey; - $this->secondKey = $secondKey; - $this->farParent = $farParent; - $this->throughParent = $throughParent; - $this->secondLocalKey = $secondLocalKey; - - parent::__construct($query, $throughParent); - } - - /** - * Convert the relationship to a "has one through" relationship. - * - * @return \Illuminate\Database\Eloquent\Relations\HasOneThrough - */ - public function one() - { - return HasOneThrough::noConstraints(fn () => new HasOneThrough( - $this->getQuery(), - $this->farParent, - $this->throughParent, - $this->getFirstKeyName(), - $this->secondKey, - $this->getLocalKeyName(), - $this->getSecondLocalKeyName(), - )); - } - - /** - * Set the base constraints on the relation query. - * - * @return void - */ - public function addConstraints() - { - $localValue = $this->farParent[$this->localKey]; - - $this->performJoin(); - - if (static::$constraints) { - $this->query->where($this->getQualifiedFirstKeyName(), '=', $localValue); - } - } - - /** - * Set the join clause on the query. - * - * @param \Illuminate\Database\Eloquent\Builder|null $query - * @return void - */ - protected function performJoin(?Builder $query = null) - { - $query = $query ?: $this->query; - - $farKey = $this->getQualifiedFarKeyName(); - - $query->join($this->throughParent->getTable(), $this->getQualifiedParentKeyName(), '=', $farKey); - - if ($this->throughParentSoftDeletes()) { - $query->withGlobalScope('SoftDeletableHasManyThrough', function ($query) { - $query->whereNull($this->throughParent->getQualifiedDeletedAtColumn()); - }); - } - } - - /** - * Get the fully qualified parent key name. - * - * @return string - */ - public function getQualifiedParentKeyName() - { - return $this->parent->qualifyColumn($this->secondLocalKey); - } - - /** - * Determine whether "through" parent of the relation uses Soft Deletes. - * - * @return bool - */ - public function throughParentSoftDeletes() - { - return in_array(SoftDeletes::class, class_uses_recursive($this->throughParent)); - } - - /** - * Indicate that trashed "through" parents should be included in the query. - * - * @return $this - */ - public function withTrashedParents() - { - $this->query->withoutGlobalScope('SoftDeletableHasManyThrough'); - - return $this; - } - - /** - * Set the constraints for an eager load of the relation. - * - * @param array $models - * @return void - */ - public function addEagerConstraints(array $models) - { - $whereIn = $this->whereInMethod($this->farParent, $this->localKey); - - $this->whereInEager( - $whereIn, - $this->getQualifiedFirstKeyName(), - $this->getKeys($models, $this->localKey) - ); - } - - /** - * Initialize the relation on a set of models. - * - * @param array $models - * @param string $relation - * @return array - */ - public function initRelation(array $models, $relation) - { - foreach ($models as $model) { - $model->setRelation($relation, $this->related->newCollection()); - } - - return $models; - } - - /** - * Match the eagerly loaded results to their parents. - * - * @param array $models - * @param \Illuminate\Database\Eloquent\Collection $results - * @param string $relation - * @return array - */ - public function match(array $models, Collection $results, $relation) - { - $dictionary = $this->buildDictionary($results); - - // Once we have the dictionary we can simply spin through the parent models to - // link them up with their children using the keyed dictionary to make the - // matching very convenient and easy work. Then we'll just return them. - foreach ($models as $model) { - if (isset($dictionary[$key = $this->getDictionaryKey($model->getAttribute($this->localKey))])) { - $model->setRelation( - $relation, $this->related->newCollection($dictionary[$key]) - ); - } - } - - return $models; - } - - /** - * Build model dictionary keyed by the relation's foreign key. - * - * @param \Illuminate\Database\Eloquent\Collection $results - * @return array - */ - protected function buildDictionary(Collection $results) - { - $dictionary = []; - - // First we will create a dictionary of models keyed by the foreign key of the - // relationship as this will allow us to quickly access all of the related - // models without having to do nested looping which will be quite slow. - foreach ($results as $result) { - $dictionary[$result->laravel_through_key][] = $result; - } - - return $dictionary; - } - - /** - * Get the first related model record matching the attributes or instantiate it. - * - * @param array $attributes - * @param array $values - * @return \Illuminate\Database\Eloquent\Model - */ - public function firstOrNew(array $attributes = [], array $values = []) - { - if (! is_null($instance = $this->where($attributes)->first())) { - return $instance; - } - - return $this->related->newInstance(array_merge($attributes, $values)); - } - - /** - * Get the first record matching the attributes. If the record is not found, create it. - * - * @param array $attributes - * @param array $values - * @return \Illuminate\Database\Eloquent\Model - */ - public function firstOrCreate(array $attributes = [], array $values = []) - { - if (! is_null($instance = (clone $this)->where($attributes)->first())) { - return $instance; - } - - return $this->createOrFirst(array_merge($attributes, $values)); - } - - /** - * Attempt to create the record. If a unique constraint violation occurs, attempt to find the matching record. - * - * @param array $attributes - * @param array $values - * @return \Illuminate\Database\Eloquent\Model - */ - public function createOrFirst(array $attributes = [], array $values = []) - { - try { - return $this->getQuery()->withSavepointIfNeeded(fn () => $this->create(array_merge($attributes, $values))); - } catch (UniqueConstraintViolationException $exception) { - return $this->where($attributes)->first() ?? throw $exception; - } - } - - /** - * Create or update a related record matching the attributes, and fill it with values. - * - * @param array $attributes - * @param array $values - * @return \Illuminate\Database\Eloquent\Model - */ - public function updateOrCreate(array $attributes, array $values = []) - { - return tap($this->firstOrCreate($attributes, $values), function ($instance) use ($values) { - if (! $instance->wasRecentlyCreated) { - $instance->fill($values)->save(); - } - }); - } - - /** - * Add a basic where clause to the query, and return the first result. - * - * @param \Closure|string|array $column - * @param mixed $operator - * @param mixed $value - * @param string $boolean - * @return \Illuminate\Database\Eloquent\Model|static - */ - public function firstWhere($column, $operator = null, $value = null, $boolean = 'and') - { - return $this->where($column, $operator, $value, $boolean)->first(); - } - - /** - * Execute the query and get the first related model. - * - * @param array $columns - * @return mixed - */ - public function first($columns = ['*']) - { - $results = $this->take(1)->get($columns); - - return count($results) > 0 ? $results->first() : null; - } - - /** - * Execute the query and get the first result or throw an exception. - * - * @param array $columns - * @return \Illuminate\Database\Eloquent\Model|static - * - * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> - */ - public function firstOrFail($columns = ['*']) - { - if (! is_null($model = $this->first($columns))) { - return $model; - } - - throw (new ModelNotFoundException)->setModel(get_class($this->related)); - } - - /** - * Execute the query and get the first result or call a callback. - * - * @param \Closure|array $columns - * @param \Closure|null $callback - * @return \Illuminate\Database\Eloquent\Model|static|mixed - */ - public function firstOr($columns = ['*'], ?Closure $callback = null) - { - if ($columns instanceof Closure) { - $callback = $columns; - - $columns = ['*']; - } - - if (! is_null($model = $this->first($columns))) { - return $model; - } - - return $callback(); - } - - /** - * Find a related model by its primary key. - * - * @param mixed $id - * @param array $columns - * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|null - */ - public function find($id, $columns = ['*']) - { - if (is_array($id) || $id instanceof Arrayable) { - return $this->findMany($id, $columns); - } - - return $this->where( - $this->getRelated()->getQualifiedKeyName(), '=', $id - )->first($columns); - } - - /** - * Find multiple related models by their primary keys. - * - * @param \Illuminate\Contracts\Support\Arrayable|array $ids - * @param array $columns - * @return \Illuminate\Database\Eloquent\Collection - */ - public function findMany($ids, $columns = ['*']) - { - $ids = $ids instanceof Arrayable ? $ids->toArray() : $ids; - - if (empty($ids)) { - return $this->getRelated()->newCollection(); - } - - return $this->whereIn( - $this->getRelated()->getQualifiedKeyName(), $ids - )->get($columns); - } - - /** - * Find a related model by its primary key or throw an exception. - * - * @param mixed $id - * @param array $columns - * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection - * - * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> - */ - public function findOrFail($id, $columns = ['*']) - { - $result = $this->find($id, $columns); - - $id = $id instanceof Arrayable ? $id->toArray() : $id; - - if (is_array($id)) { - if (count($result) === count(array_unique($id))) { - return $result; - } - } elseif (! is_null($result)) { - return $result; - } - - throw (new ModelNotFoundException)->setModel(get_class($this->related), $id); - } - - /** - * Find a related model by its primary key or call a callback. - * - * @param mixed $id - * @param \Closure|array $columns - * @param \Closure|null $callback - * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|mixed - */ - public function findOr($id, $columns = ['*'], ?Closure $callback = null) - { - if ($columns instanceof Closure) { - $callback = $columns; - - $columns = ['*']; - } - - $result = $this->find($id, $columns); - - $id = $id instanceof Arrayable ? $id->toArray() : $id; - - if (is_array($id)) { - if (count($result) === count(array_unique($id))) { - return $result; - } - } elseif (! is_null($result)) { - return $result; - } - - return $callback(); - } - - /** - * Get the results of the relationship. - * - * @return mixed - */ - public function getResults() - { - return ! is_null($this->farParent->{$this->localKey}) - ? $this->get() - : $this->related->newCollection(); - } - - /** - * Execute the query as a "select" statement. - * - * @param array $columns - * @return \Illuminate\Database\Eloquent\Collection - */ - public function get($columns = ['*']) - { - $builder = $this->prepareQueryBuilder($columns); - - $models = $builder->getModels(); - - // If we actually found models we will also eager load any relationships that - // have been specified as needing to be eager loaded. This will solve the - // n + 1 query problem for the developer and also increase performance. - if (count($models) > 0) { - $models = $builder->eagerLoadRelations($models); - } - - return $this->related->newCollection($models); - } - - /** - * Get a paginator for the "select" statement. - * - * @param int|null $perPage - * @param array $columns - * @param string $pageName - * @param int $page - * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator - */ - public function paginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null) - { - $this->query->addSelect($this->shouldSelect($columns)); - - return $this->query->paginate($perPage, $columns, $pageName, $page); - } - - /** - * Paginate the given query into a simple paginator. - * - * @param int|null $perPage - * @param array $columns - * @param string $pageName - * @param int|null $page - * @return \Illuminate\Contracts\Pagination\Paginator - */ - public function simplePaginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null) - { - $this->query->addSelect($this->shouldSelect($columns)); - - return $this->query->simplePaginate($perPage, $columns, $pageName, $page); - } - - /** - * Paginate the given query into a cursor paginator. - * - * @param int|null $perPage - * @param array $columns - * @param string $cursorName - * @param string|null $cursor - * @return \Illuminate\Contracts\Pagination\CursorPaginator - */ - public function cursorPaginate($perPage = null, $columns = ['*'], $cursorName = 'cursor', $cursor = null) - { - $this->query->addSelect($this->shouldSelect($columns)); - - return $this->query->cursorPaginate($perPage, $columns, $cursorName, $cursor); - } - - /** - * Set the select clause for the relation query. - * - * @param array $columns - * @return array - */ - protected function shouldSelect(array $columns = ['*']) - { - if ($columns == ['*']) { - $columns = [$this->related->getTable().'.*']; - } - - return array_merge($columns, [$this->getQualifiedFirstKeyName().' as laravel_through_key']); - } - - /** - * Chunk the results of the query. - * - * @param int $count - * @param callable $callback - * @return bool - */ - public function chunk($count, callable $callback) - { - return $this->prepareQueryBuilder()->chunk($count, $callback); - } - - /** - * Chunk the results of a query by comparing numeric IDs. - * - * @param int $count - * @param callable $callback - * @param string|null $column - * @param string|null $alias - * @return bool - */ - public function chunkById($count, callable $callback, $column = null, $alias = null) - { - $column ??= $this->getRelated()->getQualifiedKeyName(); - - $alias ??= $this->getRelated()->getKeyName(); - - return $this->prepareQueryBuilder()->chunkById($count, $callback, $column, $alias); - } - - /** - * Chunk the results of a query by comparing IDs in descending order. - * - * @param int $count - * @param callable $callback - * @param string|null $column - * @param string|null $alias - * @return bool - */ - public function chunkByIdDesc($count, callable $callback, $column = null, $alias = null) - { - $column ??= $this->getRelated()->getQualifiedKeyName(); - - $alias ??= $this->getRelated()->getKeyName(); - - return $this->prepareQueryBuilder()->chunkByIdDesc($count, $callback, $column, $alias); - } - - /** - * Execute a callback over each item while chunking by ID. - * - * @param callable $callback - * @param int $count - * @param string|null $column - * @param string|null $alias - * @return bool - */ - public function eachById(callable $callback, $count = 1000, $column = null, $alias = null) - { - $column = $column ?? $this->getRelated()->getQualifiedKeyName(); - - $alias = $alias ?? $this->getRelated()->getKeyName(); - - return $this->prepareQueryBuilder()->eachById($callback, $count, $column, $alias); - } - - /** - * Get a generator for the given query. - * - * @return \Illuminate\Support\LazyCollection - */ - public function cursor() - { - return $this->prepareQueryBuilder()->cursor(); - } - - /** - * Execute a callback over each item while chunking. - * - * @param callable $callback - * @param int $count - * @return bool - */ - public function each(callable $callback, $count = 1000) - { - return $this->chunk($count, function ($results) use ($callback) { - foreach ($results as $key => $value) { - if ($callback($value, $key) === false) { - return false; - } - } - }); - } - - /** - * Query lazily, by chunks of the given size. - * - * @param int $chunkSize - * @return \Illuminate\Support\LazyCollection - */ - public function lazy($chunkSize = 1000) - { - return $this->prepareQueryBuilder()->lazy($chunkSize); - } - - /** - * Query lazily, by chunking the results of a query by comparing IDs. - * - * @param int $chunkSize - * @param string|null $column - * @param string|null $alias - * @return \Illuminate\Support\LazyCollection - */ - public function lazyById($chunkSize = 1000, $column = null, $alias = null) - { - $column ??= $this->getRelated()->getQualifiedKeyName(); - - $alias ??= $this->getRelated()->getKeyName(); - - return $this->prepareQueryBuilder()->lazyById($chunkSize, $column, $alias); - } - - /** - * Query lazily, by chunking the results of a query by comparing IDs in descending order. - * - * @param int $chunkSize - * @param string|null $column - * @param string|null $alias - * @return \Illuminate\Support\LazyCollection - */ - public function lazyByIdDesc($chunkSize = 1000, $column = null, $alias = null) - { - $column ??= $this->getRelated()->getQualifiedKeyName(); - - $alias ??= $this->getRelated()->getKeyName(); - - return $this->prepareQueryBuilder()->lazyByIdDesc($chunkSize, $column, $alias); - } - - /** - * Prepare the query builder for query execution. - * - * @param array $columns - * @return \Illuminate\Database\Eloquent\Builder - */ - protected function prepareQueryBuilder($columns = ['*']) - { - $builder = $this->query->applyScopes(); - - return $builder->addSelect( - $this->shouldSelect($builder->getQuery()->columns ? [] : $columns) - ); - } - - /** - * Add the constraints for a relationship query. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * @param \Illuminate\Database\Eloquent\Builder $parentQuery - * @param array|mixed $columns - * @return \Illuminate\Database\Eloquent\Builder - */ - public function getRelationExistenceQuery(Builder $query, Builder $parentQuery, $columns = ['*']) - { - if ($parentQuery->getQuery()->from === $query->getQuery()->from) { - return $this->getRelationExistenceQueryForSelfRelation($query, $parentQuery, $columns); - } - - if ($parentQuery->getQuery()->from === $this->throughParent->getTable()) { - return $this->getRelationExistenceQueryForThroughSelfRelation($query, $parentQuery, $columns); - } - - $this->performJoin($query); - - return $query->select($columns)->whereColumn( - $this->getQualifiedLocalKeyName(), '=', $this->getQualifiedFirstKeyName() - ); - } - - /** - * Add the constraints for a relationship query on the same table. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * @param \Illuminate\Database\Eloquent\Builder $parentQuery - * @param array|mixed $columns - * @return \Illuminate\Database\Eloquent\Builder - */ - public function getRelationExistenceQueryForSelfRelation(Builder $query, Builder $parentQuery, $columns = ['*']) - { - $query->from($query->getModel()->getTable().' as '.$hash = $this->getRelationCountHash()); - - $query->join($this->throughParent->getTable(), $this->getQualifiedParentKeyName(), '=', $hash.'.'.$this->secondKey); - - if ($this->throughParentSoftDeletes()) { - $query->whereNull($this->throughParent->getQualifiedDeletedAtColumn()); - } - - $query->getModel()->setTable($hash); - - return $query->select($columns)->whereColumn( - $parentQuery->getQuery()->from.'.'.$this->localKey, '=', $this->getQualifiedFirstKeyName() - ); - } - - /** - * Add the constraints for a relationship query on the same table as the through parent. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * @param \Illuminate\Database\Eloquent\Builder $parentQuery - * @param array|mixed $columns - * @return \Illuminate\Database\Eloquent\Builder - */ - public function getRelationExistenceQueryForThroughSelfRelation(Builder $query, Builder $parentQuery, $columns = ['*']) - { - $table = $this->throughParent->getTable().' as '.$hash = $this->getRelationCountHash(); - - $query->join($table, $hash.'.'.$this->secondLocalKey, '=', $this->getQualifiedFarKeyName()); - - if ($this->throughParentSoftDeletes()) { - $query->whereNull($hash.'.'.$this->throughParent->getDeletedAtColumn()); - } - - return $query->select($columns)->whereColumn( - $parentQuery->getQuery()->from.'.'.$this->localKey, '=', $hash.'.'.$this->firstKey - ); - } - - /** - * Get the qualified foreign key on the related model. - * - * @return string - */ - public function getQualifiedFarKeyName() - { - return $this->getQualifiedForeignKeyName(); - } - - /** - * Get the foreign key on the "through" model. - * - * @return string - */ - public function getFirstKeyName() - { - return $this->firstKey; - } - - /** - * Get the qualified foreign key on the "through" model. - * - * @return string - */ - public function getQualifiedFirstKeyName() - { - return $this->throughParent->qualifyColumn($this->firstKey); - } - - /** - * Get the foreign key on the related model. - * - * @return string - */ - public function getForeignKeyName() - { - return $this->secondKey; - } - - /** - * Get the qualified foreign key on the related model. - * - * @return string - */ - public function getQualifiedForeignKeyName() - { - return $this->related->qualifyColumn($this->secondKey); - } - - /** - * Get the local key on the far parent model. - * - * @return string - */ - public function getLocalKeyName() - { - return $this->localKey; - } - - /** - * Get the qualified local key on the far parent model. - * - * @return string - */ - public function getQualifiedLocalKeyName() - { - return $this->farParent->qualifyColumn($this->localKey); - } - - /** - * Get the local key on the intermediary model. - * - * @return string - */ - public function getSecondLocalKeyName() - { - return $this->secondLocalKey; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Relation.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Relation.php deleted file mode 100755 index b5e8864f..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Relation.php +++ /dev/null @@ -1,529 +0,0 @@ -query = $query; - $this->parent = $parent; - $this->related = $query->getModel(); - - $this->addConstraints(); - } - - /** - * Run a callback with constraints disabled on the relation. - * - * @param \Closure $callback - * @return mixed - */ - public static function noConstraints(Closure $callback) - { - $previous = static::$constraints; - - static::$constraints = false; - - // When resetting the relation where clause, we want to shift the first element - // off of the bindings, leaving only the constraints that the developers put - // as "extra" on the relationships, and not original relation constraints. - try { - return $callback(); - } finally { - static::$constraints = $previous; - } - } - - /** - * Set the base constraints on the relation query. - * - * @return void - */ - abstract public function addConstraints(); - - /** - * Set the constraints for an eager load of the relation. - * - * @param array $models - * @return void - */ - abstract public function addEagerConstraints(array $models); - - /** - * Initialize the relation on a set of models. - * - * @param array $models - * @param string $relation - * @return array - */ - abstract public function initRelation(array $models, $relation); - - /** - * Match the eagerly loaded results to their parents. - * - * @param array $models - * @param \Illuminate\Database\Eloquent\Collection $results - * @param string $relation - * @return array - */ - abstract public function match(array $models, Collection $results, $relation); - - /** - * Get the results of the relationship. - * - * @return mixed - */ - abstract public function getResults(); - - /** - * Get the relationship for eager loading. - * - * @return \Illuminate\Database\Eloquent\Collection - */ - public function getEager() - { - return $this->eagerKeysWereEmpty - ? $this->query->getModel()->newCollection() - : $this->get(); - } - - /** - * Execute the query and get the first result if it's the sole matching record. - * - * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Model - * - * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> - * @throws \Illuminate\Database\MultipleRecordsFoundException - */ - public function sole($columns = ['*']) - { - $result = $this->take(2)->get($columns); - - $count = $result->count(); - - if ($count === 0) { - throw (new ModelNotFoundException)->setModel(get_class($this->related)); - } - - if ($count > 1) { - throw new MultipleRecordsFoundException($count); - } - - return $result->first(); - } - - /** - * Execute the query as a "select" statement. - * - * @param array $columns - * @return \Illuminate\Database\Eloquent\Collection - */ - public function get($columns = ['*']) - { - return $this->query->get($columns); - } - - /** - * Touch all of the related models for the relationship. - * - * @return void - */ - public function touch() - { - $model = $this->getRelated(); - - if (! $model::isIgnoringTouch()) { - $this->rawUpdate([ - $model->getUpdatedAtColumn() => $model->freshTimestampString(), - ]); - } - } - - /** - * Run a raw update against the base query. - * - * @param array $attributes - * @return int - */ - public function rawUpdate(array $attributes = []) - { - return $this->query->withoutGlobalScopes()->update($attributes); - } - - /** - * Add the constraints for a relationship count query. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * @param \Illuminate\Database\Eloquent\Builder $parentQuery - * @return \Illuminate\Database\Eloquent\Builder - */ - public function getRelationExistenceCountQuery(Builder $query, Builder $parentQuery) - { - return $this->getRelationExistenceQuery( - $query, $parentQuery, new Expression('count(*)') - )->setBindings([], 'select'); - } - - /** - * Add the constraints for an internal relationship existence query. - * - * Essentially, these queries compare on column names like whereColumn. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * @param \Illuminate\Database\Eloquent\Builder $parentQuery - * @param array|mixed $columns - * @return \Illuminate\Database\Eloquent\Builder - */ - public function getRelationExistenceQuery(Builder $query, Builder $parentQuery, $columns = ['*']) - { - return $query->select($columns)->whereColumn( - $this->getQualifiedParentKeyName(), '=', $this->getExistenceCompareKey() - ); - } - - /** - * Get a relationship join table hash. - * - * @param bool $incrementJoinCount - * @return string - */ - public function getRelationCountHash($incrementJoinCount = true) - { - return 'laravel_reserved_'.($incrementJoinCount ? static::$selfJoinCount++ : static::$selfJoinCount); - } - - /** - * Get all of the primary keys for an array of models. - * - * @param array $models - * @param string|null $key - * @return array - */ - protected function getKeys(array $models, $key = null) - { - return collect($models)->map(function ($value) use ($key) { - return $key ? $value->getAttribute($key) : $value->getKey(); - })->values()->unique(null, true)->sort()->all(); - } - - /** - * Get the query builder that will contain the relationship constraints. - * - * @return \Illuminate\Database\Eloquent\Builder - */ - protected function getRelationQuery() - { - return $this->query; - } - - /** - * Get the underlying query for the relation. - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function getQuery() - { - return $this->query; - } - - /** - * Get the base query builder driving the Eloquent builder. - * - * @return \Illuminate\Database\Query\Builder - */ - public function getBaseQuery() - { - return $this->query->getQuery(); - } - - /** - * Get a base query builder instance. - * - * @return \Illuminate\Database\Query\Builder - */ - public function toBase() - { - return $this->query->toBase(); - } - - /** - * Get the parent model of the relation. - * - * @return \Illuminate\Database\Eloquent\Model - */ - public function getParent() - { - return $this->parent; - } - - /** - * Get the fully qualified parent key name. - * - * @return string - */ - public function getQualifiedParentKeyName() - { - return $this->parent->getQualifiedKeyName(); - } - - /** - * Get the related model of the relation. - * - * @return \Illuminate\Database\Eloquent\Model - */ - public function getRelated() - { - return $this->related; - } - - /** - * Get the name of the "created at" column. - * - * @return string - */ - public function createdAt() - { - return $this->parent->getCreatedAtColumn(); - } - - /** - * Get the name of the "updated at" column. - * - * @return string - */ - public function updatedAt() - { - return $this->parent->getUpdatedAtColumn(); - } - - /** - * Get the name of the related model's "updated at" column. - * - * @return string - */ - public function relatedUpdatedAt() - { - return $this->related->getUpdatedAtColumn(); - } - - /** - * Add a whereIn eager constraint for the given set of model keys to be loaded. - * - * @param string $whereIn - * @param string $key - * @param array $modelKeys - * @param \Illuminate\Database\Eloquent\Builder $query - * @return void - */ - protected function whereInEager(string $whereIn, string $key, array $modelKeys, $query = null) - { - ($query ?? $this->query)->{$whereIn}($key, $modelKeys); - - if ($modelKeys === []) { - $this->eagerKeysWereEmpty = true; - } - } - - /** - * Get the name of the "where in" method for eager loading. - * - * @param \Illuminate\Database\Eloquent\Model $model - * @param string $key - * @return string - */ - protected function whereInMethod(Model $model, $key) - { - return $model->getKeyName() === last(explode('.', $key)) - && in_array($model->getKeyType(), ['int', 'integer']) - ? 'whereIntegerInRaw' - : 'whereIn'; - } - - /** - * Prevent polymorphic relationships from being used without model mappings. - * - * @param bool $requireMorphMap - * @return void - */ - public static function requireMorphMap($requireMorphMap = true) - { - static::$requireMorphMap = $requireMorphMap; - } - - /** - * Determine if polymorphic relationships require explicit model mapping. - * - * @return bool - */ - public static function requiresMorphMap() - { - return static::$requireMorphMap; - } - - /** - * Define the morph map for polymorphic relations and require all morphed models to be explicitly mapped. - * - * @param array $map - * @param bool $merge - * @return array - */ - public static function enforceMorphMap(array $map, $merge = true) - { - static::requireMorphMap(); - - return static::morphMap($map, $merge); - } - - /** - * Set or get the morph map for polymorphic relations. - * - * @param array|null $map - * @param bool $merge - * @return array - */ - public static function morphMap(?array $map = null, $merge = true) - { - $map = static::buildMorphMapFromModels($map); - - if (is_array($map)) { - static::$morphMap = $merge && static::$morphMap - ? $map + static::$morphMap : $map; - } - - return static::$morphMap; - } - - /** - * Builds a table-keyed array from model class names. - * - * @param string[]|null $models - * @return array|null - */ - protected static function buildMorphMapFromModels(?array $models = null) - { - if (is_null($models) || ! array_is_list($models)) { - return $models; - } - - return array_combine(array_map(function ($model) { - return (new $model)->getTable(); - }, $models), $models); - } - - /** - * Get the model associated with a custom polymorphic type. - * - * @param string $alias - * @return string|null - */ - public static function getMorphedModel($alias) - { - return static::$morphMap[$alias] ?? null; - } - - /** - * Handle dynamic method calls to the relationship. - * - * @param string $method - * @param array $parameters - * @return mixed - */ - public function __call($method, $parameters) - { - if (static::hasMacro($method)) { - return $this->macroCall($method, $parameters); - } - - return $this->forwardDecoratedCallTo($this->query, $method, $parameters); - } - - /** - * Force a clone of the underlying query builder when cloning. - * - * @return void - */ - public function __clone() - { - $this->query = clone $this->query; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php deleted file mode 100755 index ff18a26d..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php +++ /dev/null @@ -1,778 +0,0 @@ - - */ - protected static $requiredPathCache = []; - - /** - * The output interface implementation. - * - * @var \Symfony\Component\Console\Output\OutputInterface - */ - protected $output; - - /** - * Create a new migrator instance. - * - * @param \Illuminate\Database\Migrations\MigrationRepositoryInterface $repository - * @param \Illuminate\Database\ConnectionResolverInterface $resolver - * @param \Illuminate\Filesystem\Filesystem $files - * @param \Illuminate\Contracts\Events\Dispatcher|null $dispatcher - * @return void - */ - public function __construct(MigrationRepositoryInterface $repository, - Resolver $resolver, - Filesystem $files, - ?Dispatcher $dispatcher = null) - { - $this->files = $files; - $this->events = $dispatcher; - $this->resolver = $resolver; - $this->repository = $repository; - } - - /** - * Run the pending migrations at a given path. - * - * @param array|string $paths - * @param array $options - * @return array - */ - public function run($paths = [], array $options = []) - { - // Once we grab all of the migration files for the path, we will compare them - // against the migrations that have already been run for this package then - // run each of the outstanding migrations against a database connection. - $files = $this->getMigrationFiles($paths); - - $this->requireFiles($migrations = $this->pendingMigrations( - $files, $this->repository->getRan() - )); - - // Once we have all these migrations that are outstanding we are ready to run - // we will go ahead and run them "up". This will execute each migration as - // an operation against a database. Then we'll return this list of them. - $this->runPending($migrations, $options); - - return $migrations; - } - - /** - * Get the migration files that have not yet run. - * - * @param array $files - * @param array $ran - * @return array - */ - protected function pendingMigrations($files, $ran) - { - return Collection::make($files) - ->reject(function ($file) use ($ran) { - return in_array($this->getMigrationName($file), $ran); - })->values()->all(); - } - - /** - * Run an array of migrations. - * - * @param array $migrations - * @param array $options - * @return void - */ - public function runPending(array $migrations, array $options = []) - { - // First we will just make sure that there are any migrations to run. If there - // aren't, we will just make a note of it to the developer so they're aware - // that all of the migrations have been run against this database system. - if (count($migrations) === 0) { - $this->fireMigrationEvent(new NoPendingMigrations('up')); - - $this->write(Info::class, 'Nothing to migrate'); - - return; - } - - // Next, we will get the next batch number for the migrations so we can insert - // correct batch number in the database migrations repository when we store - // each migration's execution. We will also extract a few of the options. - $batch = $this->repository->getNextBatchNumber(); - - $pretend = $options['pretend'] ?? false; - - $step = $options['step'] ?? false; - - $this->fireMigrationEvent(new MigrationsStarted('up')); - - $this->write(Info::class, 'Running migrations.'); - - // Once we have the array of migrations, we will spin through them and run the - // migrations "up" so the changes are made to the databases. We'll then log - // that the migration was run so we don't repeat it next time we execute. - foreach ($migrations as $file) { - $this->runUp($file, $batch, $pretend); - - if ($step) { - $batch++; - } - } - - $this->fireMigrationEvent(new MigrationsEnded('up')); - - if ($this->output) { - $this->output->writeln(''); - } - } - - /** - * Run "up" a migration instance. - * - * @param string $file - * @param int $batch - * @param bool $pretend - * @return void - */ - protected function runUp($file, $batch, $pretend) - { - // First we will resolve a "real" instance of the migration class from this - // migration file name. Once we have the instances we can run the actual - // command such as "up" or "down", or we can just simulate the action. - $migration = $this->resolvePath($file); - - $name = $this->getMigrationName($file); - - if ($pretend) { - return $this->pretendToRun($migration, 'up'); - } - - $this->write(Task::class, $name, fn () => $this->runMigration($migration, 'up')); - - // Once we have run a migrations class, we will log that it was run in this - // repository so that we don't try to run it next time we do a migration - // in the application. A migration repository keeps the migrate order. - $this->repository->log($name, $batch); - } - - /** - * Rollback the last migration operation. - * - * @param array|string $paths - * @param array $options - * @return array - */ - public function rollback($paths = [], array $options = []) - { - // We want to pull in the last batch of migrations that ran on the previous - // migration operation. We'll then reverse those migrations and run each - // of them "down" to reverse the last migration "operation" which ran. - $migrations = $this->getMigrationsForRollback($options); - - if (count($migrations) === 0) { - $this->fireMigrationEvent(new NoPendingMigrations('down')); - - $this->write(Info::class, 'Nothing to rollback.'); - - return []; - } - - return tap($this->rollbackMigrations($migrations, $paths, $options), function () { - if ($this->output) { - $this->output->writeln(''); - } - }); - } - - /** - * Get the migrations for a rollback operation. - * - * @param array $options - * @return array - */ - protected function getMigrationsForRollback(array $options) - { - if (($steps = $options['step'] ?? 0) > 0) { - return $this->repository->getMigrations($steps); - } - - if (($batch = $options['batch'] ?? 0) > 0) { - return $this->repository->getMigrationsByBatch($batch); - } - - return $this->repository->getLast(); - } - - /** - * Rollback the given migrations. - * - * @param array $migrations - * @param array|string $paths - * @param array $options - * @return array - */ - protected function rollbackMigrations(array $migrations, $paths, array $options) - { - $rolledBack = []; - - $this->requireFiles($files = $this->getMigrationFiles($paths)); - - $this->fireMigrationEvent(new MigrationsStarted('down')); - - $this->write(Info::class, 'Rolling back migrations.'); - - // Next we will run through all of the migrations and call the "down" method - // which will reverse each migration in order. This getLast method on the - // repository already returns these migration's names in reverse order. - foreach ($migrations as $migration) { - $migration = (object) $migration; - - if (! $file = Arr::get($files, $migration->migration)) { - $this->write(TwoColumnDetail::class, $migration->migration, 'Migration not found'); - - continue; - } - - $rolledBack[] = $file; - - $this->runDown( - $file, $migration, - $options['pretend'] ?? false - ); - } - - $this->fireMigrationEvent(new MigrationsEnded('down')); - - return $rolledBack; - } - - /** - * Rolls all of the currently applied migrations back. - * - * @param array|string $paths - * @param bool $pretend - * @return array - */ - public function reset($paths = [], $pretend = false) - { - // Next, we will reverse the migration list so we can run them back in the - // correct order for resetting this database. This will allow us to get - // the database back into its "empty" state ready for the migrations. - $migrations = array_reverse($this->repository->getRan()); - - if (count($migrations) === 0) { - $this->write(Info::class, 'Nothing to rollback.'); - - return []; - } - - return tap($this->resetMigrations($migrations, Arr::wrap($paths), $pretend), function () { - if ($this->output) { - $this->output->writeln(''); - } - }); - } - - /** - * Reset the given migrations. - * - * @param array $migrations - * @param array $paths - * @param bool $pretend - * @return array - */ - protected function resetMigrations(array $migrations, array $paths, $pretend = false) - { - // Since the getRan method that retrieves the migration name just gives us the - // migration name, we will format the names into objects with the name as a - // property on the objects so that we can pass it to the rollback method. - $migrations = collect($migrations)->map(function ($m) { - return (object) ['migration' => $m]; - })->all(); - - return $this->rollbackMigrations( - $migrations, $paths, compact('pretend') - ); - } - - /** - * Run "down" a migration instance. - * - * @param string $file - * @param object $migration - * @param bool $pretend - * @return void - */ - protected function runDown($file, $migration, $pretend) - { - // First we will get the file name of the migration so we can resolve out an - // instance of the migration. Once we get an instance we can either run a - // pretend execution of the migration or we can run the real migration. - $instance = $this->resolvePath($file); - - $name = $this->getMigrationName($file); - - if ($pretend) { - return $this->pretendToRun($instance, 'down'); - } - - $this->write(Task::class, $name, fn () => $this->runMigration($instance, 'down')); - - // Once we have successfully run the migration "down" we will remove it from - // the migration repository so it will be considered to have not been run - // by the application then will be able to fire by any later operation. - $this->repository->delete($migration); - } - - /** - * Run a migration inside a transaction if the database supports it. - * - * @param object $migration - * @param string $method - * @return void - */ - protected function runMigration($migration, $method) - { - $connection = $this->resolveConnection( - $migration->getConnection() - ); - - $callback = function () use ($connection, $migration, $method) { - if (method_exists($migration, $method)) { - $this->fireMigrationEvent(new MigrationStarted($migration, $method)); - - $this->runMethod($connection, $migration, $method); - - $this->fireMigrationEvent(new MigrationEnded($migration, $method)); - } - }; - - $this->getSchemaGrammar($connection)->supportsSchemaTransactions() - && $migration->withinTransaction - ? $connection->transaction($callback) - : $callback(); - } - - /** - * Pretend to run the migrations. - * - * @param object $migration - * @param string $method - * @return void - */ - protected function pretendToRun($migration, $method) - { - try { - $name = get_class($migration); - - $reflectionClass = new ReflectionClass($migration); - - if ($reflectionClass->isAnonymous()) { - $name = $this->getMigrationName($reflectionClass->getFileName()); - } - - $this->write(TwoColumnDetail::class, $name); - - $this->write(BulletList::class, collect($this->getQueries($migration, $method))->map(function ($query) { - return $query['query']; - })); - } catch (SchemaException) { - $name = get_class($migration); - - $this->write(Error::class, sprintf( - '[%s] failed to dump queries. This may be due to changing database columns using Doctrine, which is not supported while pretending to run migrations.', - $name, - )); - } - } - - /** - * Get all of the queries that would be run for a migration. - * - * @param object $migration - * @param string $method - * @return array - */ - protected function getQueries($migration, $method) - { - // Now that we have the connections we can resolve it and pretend to run the - // queries against the database returning the array of raw SQL statements - // that would get fired against the database system for this migration. - $db = $this->resolveConnection( - $migration->getConnection() - ); - - return $db->pretend(function () use ($db, $migration, $method) { - if (method_exists($migration, $method)) { - $this->runMethod($db, $migration, $method); - } - }); - } - - /** - * Run a migration method on the given connection. - * - * @param \Illuminate\Database\Connection $connection - * @param object $migration - * @param string $method - * @return void - */ - protected function runMethod($connection, $migration, $method) - { - $previousConnection = $this->resolver->getDefaultConnection(); - - try { - $this->resolver->setDefaultConnection($connection->getName()); - - $migration->{$method}(); - } finally { - $this->resolver->setDefaultConnection($previousConnection); - } - } - - /** - * Resolve a migration instance from a file. - * - * @param string $file - * @return object - */ - public function resolve($file) - { - $class = $this->getMigrationClass($file); - - return new $class; - } - - /** - * Resolve a migration instance from a migration path. - * - * @param string $path - * @return object - */ - protected function resolvePath(string $path) - { - $class = $this->getMigrationClass($this->getMigrationName($path)); - - if (class_exists($class) && realpath($path) == (new ReflectionClass($class))->getFileName()) { - return new $class; - } - - $migration = static::$requiredPathCache[$path] ??= $this->files->getRequire($path); - - if (is_object($migration)) { - return method_exists($migration, '__construct') - ? $this->files->getRequire($path) - : clone $migration; - } - - return new $class; - } - - /** - * Generate a migration class name based on the migration file name. - * - * @param string $migrationName - * @return string - */ - protected function getMigrationClass(string $migrationName): string - { - return Str::studly(implode('_', array_slice(explode('_', $migrationName), 4))); - } - - /** - * Get all of the migration files in a given path. - * - * @param string|array $paths - * @return array - */ - public function getMigrationFiles($paths) - { - return Collection::make($paths)->flatMap(function ($path) { - return str_ends_with($path, '.php') ? [$path] : $this->files->glob($path.'/*_*.php'); - })->filter()->values()->keyBy(function ($file) { - return $this->getMigrationName($file); - })->sortBy(function ($file, $key) { - return $key; - })->all(); - } - - /** - * Require in all the migration files in a given path. - * - * @param array $files - * @return void - */ - public function requireFiles(array $files) - { - foreach ($files as $file) { - $this->files->requireOnce($file); - } - } - - /** - * Get the name of the migration. - * - * @param string $path - * @return string - */ - public function getMigrationName($path) - { - return str_replace('.php', '', basename($path)); - } - - /** - * Register a custom migration path. - * - * @param string $path - * @return void - */ - public function path($path) - { - $this->paths = array_unique(array_merge($this->paths, [$path])); - } - - /** - * Get all of the custom migration paths. - * - * @return array - */ - public function paths() - { - return $this->paths; - } - - /** - * Get the default connection name. - * - * @return string - */ - public function getConnection() - { - return $this->connection; - } - - /** - * Execute the given callback using the given connection as the default connection. - * - * @param string $name - * @param callable $callback - * @return mixed - */ - public function usingConnection($name, callable $callback) - { - $previousConnection = $this->resolver->getDefaultConnection(); - - $this->setConnection($name); - - return tap($callback(), function () use ($previousConnection) { - $this->setConnection($previousConnection); - }); - } - - /** - * Set the default connection name. - * - * @param string $name - * @return void - */ - public function setConnection($name) - { - if (! is_null($name)) { - $this->resolver->setDefaultConnection($name); - } - - $this->repository->setSource($name); - - $this->connection = $name; - } - - /** - * Resolve the database connection instance. - * - * @param string $connection - * @return \Illuminate\Database\Connection - */ - public function resolveConnection($connection) - { - return $this->resolver->connection($connection ?: $this->connection); - } - - /** - * Get the schema grammar out of a migration connection. - * - * @param \Illuminate\Database\Connection $connection - * @return \Illuminate\Database\Schema\Grammars\Grammar - */ - protected function getSchemaGrammar($connection) - { - if (is_null($grammar = $connection->getSchemaGrammar())) { - $connection->useDefaultSchemaGrammar(); - - $grammar = $connection->getSchemaGrammar(); - } - - return $grammar; - } - - /** - * Get the migration repository instance. - * - * @return \Illuminate\Database\Migrations\MigrationRepositoryInterface - */ - public function getRepository() - { - return $this->repository; - } - - /** - * Determine if the migration repository exists. - * - * @return bool - */ - public function repositoryExists() - { - return $this->repository->repositoryExists(); - } - - /** - * Determine if any migrations have been run. - * - * @return bool - */ - public function hasRunAnyMigrations() - { - return $this->repositoryExists() && count($this->repository->getRan()) > 0; - } - - /** - * Delete the migration repository data store. - * - * @return void - */ - public function deleteRepository() - { - $this->repository->deleteRepository(); - } - - /** - * Get the file system instance. - * - * @return \Illuminate\Filesystem\Filesystem - */ - public function getFilesystem() - { - return $this->files; - } - - /** - * Set the output implementation that should be used by the console. - * - * @param \Symfony\Component\Console\Output\OutputInterface $output - * @return $this - */ - public function setOutput(OutputInterface $output) - { - $this->output = $output; - - return $this; - } - - /** - * Write to the console's output. - * - * @param string $component - * @param array|string ...$arguments - * @return void - */ - protected function write($component, ...$arguments) - { - if ($this->output && class_exists($component)) { - (new $component($this->output))->render(...$arguments); - } else { - foreach ($arguments as $argument) { - if (is_callable($argument)) { - $argument(); - } - } - } - } - - /** - * Fire the given event for the migration. - * - * @param \Illuminate\Contracts\Database\Events\MigrationEvent $event - * @return void - */ - public function fireMigrationEvent($event) - { - if ($this->events) { - $this->events->dispatch($event); - } - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/MySqlConnection.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/MySqlConnection.php deleted file mode 100755 index 5a494b8e..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/MySqlConnection.php +++ /dev/null @@ -1,166 +0,0 @@ -run($query, $bindings, function ($query, $bindings) use ($sequence) { - if ($this->pretending()) { - return true; - } - - $statement = $this->getPdo()->prepare($query); - - $this->bindValues($statement, $this->prepareBindings($bindings)); - - $this->recordsHaveBeenModified(); - - $result = $statement->execute(); - - $this->lastInsertId = $this->getPdo()->lastInsertId($sequence); - - return $result; - }); - } - - /** - * Escape a binary value for safe SQL embedding. - * - * @param string $value - * @return string - */ - protected function escapeBinary($value) - { - $hex = bin2hex($value); - - return "x'{$hex}'"; - } - - /** - * Determine if the given database exception was caused by a unique constraint violation. - * - * @param \Exception $exception - * @return bool - */ - protected function isUniqueConstraintError(Exception $exception) - { - return boolval(preg_match('#Integrity constraint violation: 1062#i', $exception->getMessage())); - } - - /** - * Get the connection's last insert ID. - * - * @return string|int|null - */ - public function getLastInsertId() - { - return $this->lastInsertId; - } - - /** - * Determine if the connected database is a MariaDB database. - * - * @return bool - */ - public function isMaria() - { - return str_contains($this->getPdo()->getAttribute(PDO::ATTR_SERVER_VERSION), 'MariaDB'); - } - - /** - * Get the default query grammar instance. - * - * @return \Illuminate\Database\Query\Grammars\MySqlGrammar - */ - protected function getDefaultQueryGrammar() - { - ($grammar = new QueryGrammar)->setConnection($this); - - return $this->withTablePrefix($grammar); - } - - /** - * Get a schema builder instance for the connection. - * - * @return \Illuminate\Database\Schema\MySqlBuilder - */ - public function getSchemaBuilder() - { - if (is_null($this->schemaGrammar)) { - $this->useDefaultSchemaGrammar(); - } - - return new MySqlBuilder($this); - } - - /** - * Get the default schema grammar instance. - * - * @return \Illuminate\Database\Schema\Grammars\MySqlGrammar - */ - protected function getDefaultSchemaGrammar() - { - ($grammar = new SchemaGrammar)->setConnection($this); - - return $this->withTablePrefix($grammar); - } - - /** - * Get the schema state for the connection. - * - * @param \Illuminate\Filesystem\Filesystem|null $files - * @param callable|null $processFactory - * @return \Illuminate\Database\Schema\MySqlSchemaState - */ - public function getSchemaState(?Filesystem $files = null, ?callable $processFactory = null) - { - return new MySqlSchemaState($this, $files, $processFactory); - } - - /** - * Get the default post processor instance. - * - * @return \Illuminate\Database\Query\Processors\MySqlProcessor - */ - protected function getDefaultPostProcessor() - { - return new MySqlProcessor; - } - - /** - * Get the Doctrine DBAL driver. - * - * @return \Illuminate\Database\PDO\MySqlDriver - */ - protected function getDoctrineDriver() - { - return new MySqlDriver; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/PostgresConnection.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/PostgresConnection.php deleted file mode 100755 index b13db701..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/PostgresConnection.php +++ /dev/null @@ -1,120 +0,0 @@ -getCode(); - } - - /** - * Get the default query grammar instance. - * - * @return \Illuminate\Database\Query\Grammars\PostgresGrammar - */ - protected function getDefaultQueryGrammar() - { - ($grammar = new QueryGrammar)->setConnection($this); - - return $this->withTablePrefix($grammar); - } - - /** - * Get a schema builder instance for the connection. - * - * @return \Illuminate\Database\Schema\PostgresBuilder - */ - public function getSchemaBuilder() - { - if (is_null($this->schemaGrammar)) { - $this->useDefaultSchemaGrammar(); - } - - return new PostgresBuilder($this); - } - - /** - * Get the default schema grammar instance. - * - * @return \Illuminate\Database\Schema\Grammars\PostgresGrammar - */ - protected function getDefaultSchemaGrammar() - { - ($grammar = new SchemaGrammar)->setConnection($this); - - return $this->withTablePrefix($grammar); - } - - /** - * Get the schema state for the connection. - * - * @param \Illuminate\Filesystem\Filesystem|null $files - * @param callable|null $processFactory - * @return \Illuminate\Database\Schema\PostgresSchemaState - */ - public function getSchemaState(?Filesystem $files = null, ?callable $processFactory = null) - { - return new PostgresSchemaState($this, $files, $processFactory); - } - - /** - * Get the default post processor instance. - * - * @return \Illuminate\Database\Query\Processors\PostgresProcessor - */ - protected function getDefaultPostProcessor() - { - return new PostgresProcessor; - } - - /** - * Get the Doctrine DBAL driver. - * - * @return \Illuminate\Database\PDO\PostgresDriver - */ - protected function getDoctrineDriver() - { - return new PostgresDriver; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php deleted file mode 100755 index 948693b3..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php +++ /dev/null @@ -1,4162 +0,0 @@ - [], - 'from' => [], - 'join' => [], - 'where' => [], - 'groupBy' => [], - 'having' => [], - 'order' => [], - 'union' => [], - 'unionOrder' => [], - ]; - - /** - * An aggregate function and column to be run. - * - * @var array - */ - public $aggregate; - - /** - * The columns that should be returned. - * - * @var array|null - */ - public $columns; - - /** - * Indicates if the query returns distinct results. - * - * Occasionally contains the columns that should be distinct. - * - * @var bool|array - */ - public $distinct = false; - - /** - * The table which the query is targeting. - * - * @var \Illuminate\Database\Query\Expression|string - */ - public $from; - - /** - * The index hint for the query. - * - * @var \Illuminate\Database\Query\IndexHint - */ - public $indexHint; - - /** - * The table joins for the query. - * - * @var array - */ - public $joins; - - /** - * The where constraints for the query. - * - * @var array - */ - public $wheres = []; - - /** - * The groupings for the query. - * - * @var array - */ - public $groups; - - /** - * The having constraints for the query. - * - * @var array - */ - public $havings; - - /** - * The orderings for the query. - * - * @var array - */ - public $orders; - - /** - * The maximum number of records to return. - * - * @var int - */ - public $limit; - - /** - * The number of records to skip. - * - * @var int - */ - public $offset; - - /** - * The query union statements. - * - * @var array - */ - public $unions; - - /** - * The maximum number of union records to return. - * - * @var int - */ - public $unionLimit; - - /** - * The number of union records to skip. - * - * @var int - */ - public $unionOffset; - - /** - * The orderings for the union query. - * - * @var array - */ - public $unionOrders; - - /** - * Indicates whether row locking is being used. - * - * @var string|bool - */ - public $lock; - - /** - * The callbacks that should be invoked before the query is executed. - * - * @var array - */ - public $beforeQueryCallbacks = []; - - /** - * All of the available clause operators. - * - * @var string[] - */ - public $operators = [ - '=', '<', '>', '<=', '>=', '<>', '!=', '<=>', - 'like', 'like binary', 'not like', 'ilike', - '&', '|', '^', '<<', '>>', '&~', 'is', 'is not', - 'rlike', 'not rlike', 'regexp', 'not regexp', - '~', '~*', '!~', '!~*', 'similar to', - 'not similar to', 'not ilike', '~~*', '!~~*', - ]; - - /** - * All of the available bitwise operators. - * - * @var string[] - */ - public $bitwiseOperators = [ - '&', '|', '^', '<<', '>>', '&~', - ]; - - /** - * Whether to use write pdo for the select. - * - * @var bool - */ - public $useWritePdo = false; - - /** - * Create a new query builder instance. - * - * @param \Illuminate\Database\ConnectionInterface $connection - * @param \Illuminate\Database\Query\Grammars\Grammar|null $grammar - * @param \Illuminate\Database\Query\Processors\Processor|null $processor - * @return void - */ - public function __construct(ConnectionInterface $connection, - ?Grammar $grammar = null, - ?Processor $processor = null) - { - $this->connection = $connection; - $this->grammar = $grammar ?: $connection->getQueryGrammar(); - $this->processor = $processor ?: $connection->getPostProcessor(); - } - - /** - * Set the columns to be selected. - * - * @param array|mixed $columns - * @return $this - */ - public function select($columns = ['*']) - { - $this->columns = []; - $this->bindings['select'] = []; - - $columns = is_array($columns) ? $columns : func_get_args(); - - foreach ($columns as $as => $column) { - if (is_string($as) && $this->isQueryable($column)) { - $this->selectSub($column, $as); - } else { - $this->columns[] = $column; - } - } - - return $this; - } - - /** - * Add a subselect expression to the query. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query - * @param string $as - * @return $this - * - * @throws \InvalidArgumentException - */ - public function selectSub($query, $as) - { - [$query, $bindings] = $this->createSub($query); - - return $this->selectRaw( - '('.$query.') as '.$this->grammar->wrap($as), $bindings - ); - } - - /** - * Add a new "raw" select expression to the query. - * - * @param string $expression - * @param array $bindings - * @return $this - */ - public function selectRaw($expression, array $bindings = []) - { - $this->addSelect(new Expression($expression)); - - if ($bindings) { - $this->addBinding($bindings, 'select'); - } - - return $this; - } - - /** - * Makes "from" fetch from a subquery. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query - * @param string $as - * @return $this - * - * @throws \InvalidArgumentException - */ - public function fromSub($query, $as) - { - [$query, $bindings] = $this->createSub($query); - - return $this->fromRaw('('.$query.') as '.$this->grammar->wrapTable($as), $bindings); - } - - /** - * Add a raw from clause to the query. - * - * @param string $expression - * @param mixed $bindings - * @return $this - */ - public function fromRaw($expression, $bindings = []) - { - $this->from = new Expression($expression); - - $this->addBinding($bindings, 'from'); - - return $this; - } - - /** - * Creates a subquery and parse it. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query - * @return array - */ - protected function createSub($query) - { - // If the given query is a Closure, we will execute it while passing in a new - // query instance to the Closure. This will give the developer a chance to - // format and work with the query before we cast it to a raw SQL string. - if ($query instanceof Closure) { - $callback = $query; - - $callback($query = $this->forSubQuery()); - } - - return $this->parseSub($query); - } - - /** - * Parse the subquery into SQL and bindings. - * - * @param mixed $query - * @return array - * - * @throws \InvalidArgumentException - */ - protected function parseSub($query) - { - if ($query instanceof self || $query instanceof EloquentBuilder || $query instanceof Relation) { - $query = $this->prependDatabaseNameIfCrossDatabaseQuery($query); - - return [$query->toSql(), $query->getBindings()]; - } elseif (is_string($query)) { - return [$query, []]; - } else { - throw new InvalidArgumentException( - 'A subquery must be a query builder instance, a Closure, or a string.' - ); - } - } - - /** - * Prepend the database name if the given query is on another database. - * - * @param mixed $query - * @return mixed - */ - protected function prependDatabaseNameIfCrossDatabaseQuery($query) - { - if ($query->getConnection()->getDatabaseName() !== - $this->getConnection()->getDatabaseName()) { - $databaseName = $query->getConnection()->getDatabaseName(); - - if (! str_starts_with($query->from, $databaseName) && ! str_contains($query->from, '.')) { - $query->from($databaseName.'.'.$query->from); - } - } - - return $query; - } - - /** - * Add a new select column to the query. - * - * @param array|mixed $column - * @return $this - */ - public function addSelect($column) - { - $columns = is_array($column) ? $column : func_get_args(); - - foreach ($columns as $as => $column) { - if (is_string($as) && $this->isQueryable($column)) { - if (is_null($this->columns)) { - $this->select($this->from.'.*'); - } - - $this->selectSub($column, $as); - } else { - if (is_array($this->columns) && in_array($column, $this->columns, true)) { - continue; - } - - $this->columns[] = $column; - } - } - - return $this; - } - - /** - * Force the query to only return distinct results. - * - * @return $this - */ - public function distinct() - { - $columns = func_get_args(); - - if (count($columns) > 0) { - $this->distinct = is_array($columns[0]) || is_bool($columns[0]) ? $columns[0] : $columns; - } else { - $this->distinct = true; - } - - return $this; - } - - /** - * Set the table which the query is targeting. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $table - * @param string|null $as - * @return $this - */ - public function from($table, $as = null) - { - if ($this->isQueryable($table)) { - return $this->fromSub($table, $as); - } - - $this->from = $as ? "{$table} as {$as}" : $table; - - return $this; - } - - /** - * Add an index hint to suggest a query index. - * - * @param string $index - * @return $this - */ - public function useIndex($index) - { - $this->indexHint = new IndexHint('hint', $index); - - return $this; - } - - /** - * Add an index hint to force a query index. - * - * @param string $index - * @return $this - */ - public function forceIndex($index) - { - $this->indexHint = new IndexHint('force', $index); - - return $this; - } - - /** - * Add an index hint to ignore a query index. - * - * @param string $index - * @return $this - */ - public function ignoreIndex($index) - { - $this->indexHint = new IndexHint('ignore', $index); - - return $this; - } - - /** - * Add a join clause to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $table - * @param \Closure|\Illuminate\Contracts\Database\Query\Expression|string $first - * @param string|null $operator - * @param \Illuminate\Contracts\Database\Query\Expression|string|null $second - * @param string $type - * @param bool $where - * @return $this - */ - public function join($table, $first, $operator = null, $second = null, $type = 'inner', $where = false) - { - $join = $this->newJoinClause($this, $type, $table); - - // If the first "column" of the join is really a Closure instance the developer - // is trying to build a join with a complex "on" clause containing more than - // one condition, so we'll add the join and call a Closure with the query. - if ($first instanceof Closure) { - $first($join); - - $this->joins[] = $join; - - $this->addBinding($join->getBindings(), 'join'); - } - - // If the column is simply a string, we can assume the join simply has a basic - // "on" clause with a single condition. So we will just build the join with - // this simple join clauses attached to it. There is not a join callback. - else { - $method = $where ? 'where' : 'on'; - - $this->joins[] = $join->$method($first, $operator, $second); - - $this->addBinding($join->getBindings(), 'join'); - } - - return $this; - } - - /** - * Add a "join where" clause to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $table - * @param \Closure|\Illuminate\Contracts\Database\Query\Expression|string $first - * @param string $operator - * @param \Illuminate\Contracts\Database\Query\Expression|string $second - * @param string $type - * @return $this - */ - public function joinWhere($table, $first, $operator, $second, $type = 'inner') - { - return $this->join($table, $first, $operator, $second, $type, true); - } - - /** - * Add a subquery join clause to the query. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query - * @param string $as - * @param \Closure|\Illuminate\Contracts\Database\Query\Expression|string $first - * @param string|null $operator - * @param \Illuminate\Contracts\Database\Query\Expression|string|null $second - * @param string $type - * @param bool $where - * @return $this - * - * @throws \InvalidArgumentException - */ - public function joinSub($query, $as, $first, $operator = null, $second = null, $type = 'inner', $where = false) - { - [$query, $bindings] = $this->createSub($query); - - $expression = '('.$query.') as '.$this->grammar->wrapTable($as); - - $this->addBinding($bindings, 'join'); - - return $this->join(new Expression($expression), $first, $operator, $second, $type, $where); - } - - /** - * Add a lateral join clause to the query. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query - * @param string $as - * @param string $type - * @return $this - */ - public function joinLateral($query, string $as, string $type = 'inner') - { - [$query, $bindings] = $this->createSub($query); - - $expression = '('.$query.') as '.$this->grammar->wrapTable($as); - - $this->addBinding($bindings, 'join'); - - $this->joins[] = $this->newJoinLateralClause($this, $type, new Expression($expression)); - - return $this; - } - - /** - * Add a lateral left join to the query. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query - * @param string $as - * @return $this - */ - public function leftJoinLateral($query, string $as) - { - return $this->joinLateral($query, $as, 'left'); - } - - /** - * Add a left join to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $table - * @param \Closure|\Illuminate\Contracts\Database\Query\Expression|string $first - * @param string|null $operator - * @param \Illuminate\Contracts\Database\Query\Expression|string|null $second - * @return $this - */ - public function leftJoin($table, $first, $operator = null, $second = null) - { - return $this->join($table, $first, $operator, $second, 'left'); - } - - /** - * Add a "join where" clause to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $table - * @param \Closure|\Illuminate\Contracts\Database\Query\Expression|string $first - * @param string $operator - * @param \Illuminate\Contracts\Database\Query\Expression|string|null $second - * @return $this - */ - public function leftJoinWhere($table, $first, $operator, $second) - { - return $this->joinWhere($table, $first, $operator, $second, 'left'); - } - - /** - * Add a subquery left join to the query. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query - * @param string $as - * @param \Closure|\Illuminate\Contracts\Database\Query\Expression|string $first - * @param string|null $operator - * @param \Illuminate\Contracts\Database\Query\Expression|string|null $second - * @return $this - */ - public function leftJoinSub($query, $as, $first, $operator = null, $second = null) - { - return $this->joinSub($query, $as, $first, $operator, $second, 'left'); - } - - /** - * Add a right join to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $table - * @param \Closure|string $first - * @param string|null $operator - * @param \Illuminate\Contracts\Database\Query\Expression|string|null $second - * @return $this - */ - public function rightJoin($table, $first, $operator = null, $second = null) - { - return $this->join($table, $first, $operator, $second, 'right'); - } - - /** - * Add a "right join where" clause to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $table - * @param \Closure|\Illuminate\Contracts\Database\Query\Expression|string $first - * @param string $operator - * @param \Illuminate\Contracts\Database\Query\Expression|string $second - * @return $this - */ - public function rightJoinWhere($table, $first, $operator, $second) - { - return $this->joinWhere($table, $first, $operator, $second, 'right'); - } - - /** - * Add a subquery right join to the query. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query - * @param string $as - * @param \Closure|\Illuminate\Contracts\Database\Query\Expression|string $first - * @param string|null $operator - * @param \Illuminate\Contracts\Database\Query\Expression|string|null $second - * @return $this - */ - public function rightJoinSub($query, $as, $first, $operator = null, $second = null) - { - return $this->joinSub($query, $as, $first, $operator, $second, 'right'); - } - - /** - * Add a "cross join" clause to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $table - * @param \Closure|\Illuminate\Contracts\Database\Query\Expression|string|null $first - * @param string|null $operator - * @param \Illuminate\Contracts\Database\Query\Expression|string|null $second - * @return $this - */ - public function crossJoin($table, $first = null, $operator = null, $second = null) - { - if ($first) { - return $this->join($table, $first, $operator, $second, 'cross'); - } - - $this->joins[] = $this->newJoinClause($this, 'cross', $table); - - return $this; - } - - /** - * Add a subquery cross join to the query. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query - * @param string $as - * @return $this - */ - public function crossJoinSub($query, $as) - { - [$query, $bindings] = $this->createSub($query); - - $expression = '('.$query.') as '.$this->grammar->wrapTable($as); - - $this->addBinding($bindings, 'join'); - - $this->joins[] = $this->newJoinClause($this, 'cross', new Expression($expression)); - - return $this; - } - - /** - * Get a new join clause. - * - * @param \Illuminate\Database\Query\Builder $parentQuery - * @param string $type - * @param string $table - * @return \Illuminate\Database\Query\JoinClause - */ - protected function newJoinClause(self $parentQuery, $type, $table) - { - return new JoinClause($parentQuery, $type, $table); - } - - /** - * Get a new join lateral clause. - * - * @param \Illuminate\Database\Query\Builder $parentQuery - * @param string $type - * @param string $table - * @return \Illuminate\Database\Query\JoinLateralClause - */ - protected function newJoinLateralClause(self $parentQuery, $type, $table) - { - return new JoinLateralClause($parentQuery, $type, $table); - } - - /** - * Merge an array of where clauses and bindings. - * - * @param array $wheres - * @param array $bindings - * @return $this - */ - public function mergeWheres($wheres, $bindings) - { - $this->wheres = array_merge($this->wheres, (array) $wheres); - - $this->bindings['where'] = array_values( - array_merge($this->bindings['where'], (array) $bindings) - ); - - return $this; - } - - /** - * Add a basic where clause to the query. - * - * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column - * @param mixed $operator - * @param mixed $value - * @param string $boolean - * @return $this - */ - public function where($column, $operator = null, $value = null, $boolean = 'and') - { - if ($column instanceof ConditionExpression) { - $type = 'Expression'; - - $this->wheres[] = compact('type', 'column', 'boolean'); - - return $this; - } - - // If the column is an array, we will assume it is an array of key-value pairs - // and can add them each as a where clause. We will maintain the boolean we - // received when the method was called and pass it into the nested where. - if (is_array($column)) { - return $this->addArrayOfWheres($column, $boolean); - } - - // Here we will make some assumptions about the operator. If only 2 values are - // passed to the method, we will assume that the operator is an equals sign - // and keep going. Otherwise, we'll require the operator to be passed in. - [$value, $operator] = $this->prepareValueAndOperator( - $value, $operator, func_num_args() === 2 - ); - - // If the column is actually a Closure instance, we will assume the developer - // wants to begin a nested where statement which is wrapped in parentheses. - // We will add that Closure to the query and return back out immediately. - if ($column instanceof Closure && is_null($operator)) { - return $this->whereNested($column, $boolean); - } - - // If the column is a Closure instance and there is an operator value, we will - // assume the developer wants to run a subquery and then compare the result - // of that subquery with the given value that was provided to the method. - if ($this->isQueryable($column) && ! is_null($operator)) { - [$sub, $bindings] = $this->createSub($column); - - return $this->addBinding($bindings, 'where') - ->where(new Expression('('.$sub.')'), $operator, $value, $boolean); - } - - // If the given operator is not found in the list of valid operators we will - // assume that the developer is just short-cutting the '=' operators and - // we will set the operators to '=' and set the values appropriately. - if ($this->invalidOperator($operator)) { - [$value, $operator] = [$operator, '=']; - } - - // If the value is a Closure, it means the developer is performing an entire - // sub-select within the query and we will need to compile the sub-select - // within the where clause to get the appropriate query record results. - if ($this->isQueryable($value)) { - return $this->whereSub($column, $operator, $value, $boolean); - } - - // If the value is "null", we will just assume the developer wants to add a - // where null clause to the query. So, we will allow a short-cut here to - // that method for convenience so the developer doesn't have to check. - if (is_null($value)) { - return $this->whereNull($column, $boolean, $operator !== '='); - } - - $type = 'Basic'; - - $columnString = ($column instanceof ExpressionContract) - ? $this->grammar->getValue($column) - : $column; - - // If the column is making a JSON reference we'll check to see if the value - // is a boolean. If it is, we'll add the raw boolean string as an actual - // value to the query to ensure this is properly handled by the query. - if (str_contains($columnString, '->') && is_bool($value)) { - $value = new Expression($value ? 'true' : 'false'); - - if (is_string($column)) { - $type = 'JsonBoolean'; - } - } - - if ($this->isBitwiseOperator($operator)) { - $type = 'Bitwise'; - } - - // Now that we are working with just a simple query we can put the elements - // in our array and add the query binding to our array of bindings that - // will be bound to each SQL statements when it is finally executed. - $this->wheres[] = compact( - 'type', 'column', 'operator', 'value', 'boolean' - ); - - if (! $value instanceof ExpressionContract) { - $this->addBinding($this->flattenValue($value), 'where'); - } - - return $this; - } - - /** - * Add an array of where clauses to the query. - * - * @param array $column - * @param string $boolean - * @param string $method - * @return $this - */ - protected function addArrayOfWheres($column, $boolean, $method = 'where') - { - return $this->whereNested(function ($query) use ($column, $method, $boolean) { - foreach ($column as $key => $value) { - if (is_numeric($key) && is_array($value)) { - $query->{$method}(...array_values($value)); - } else { - $query->{$method}($key, '=', $value, $boolean); - } - } - }, $boolean); - } - - /** - * Prepare the value and operator for a where clause. - * - * @param string $value - * @param string $operator - * @param bool $useDefault - * @return array - * - * @throws \InvalidArgumentException - */ - public function prepareValueAndOperator($value, $operator, $useDefault = false) - { - if ($useDefault) { - return [$operator, '=']; - } elseif ($this->invalidOperatorAndValue($operator, $value)) { - throw new InvalidArgumentException('Illegal operator and value combination.'); - } - - return [$value, $operator]; - } - - /** - * Determine if the given operator and value combination is legal. - * - * Prevents using Null values with invalid operators. - * - * @param string $operator - * @param mixed $value - * @return bool - */ - protected function invalidOperatorAndValue($operator, $value) - { - return is_null($value) && in_array($operator, $this->operators) && - ! in_array($operator, ['=', '<>', '!=']); - } - - /** - * Determine if the given operator is supported. - * - * @param string $operator - * @return bool - */ - protected function invalidOperator($operator) - { - return ! is_string($operator) || (! in_array(strtolower($operator), $this->operators, true) && - ! in_array(strtolower($operator), $this->grammar->getOperators(), true)); - } - - /** - * Determine if the operator is a bitwise operator. - * - * @param string $operator - * @return bool - */ - protected function isBitwiseOperator($operator) - { - return in_array(strtolower($operator), $this->bitwiseOperators, true) || - in_array(strtolower($operator), $this->grammar->getBitwiseOperators(), true); - } - - /** - * Add an "or where" clause to the query. - * - * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column - * @param mixed $operator - * @param mixed $value - * @return $this - */ - public function orWhere($column, $operator = null, $value = null) - { - [$value, $operator] = $this->prepareValueAndOperator( - $value, $operator, func_num_args() === 2 - ); - - return $this->where($column, $operator, $value, 'or'); - } - - /** - * Add a basic "where not" clause to the query. - * - * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column - * @param mixed $operator - * @param mixed $value - * @param string $boolean - * @return $this - */ - public function whereNot($column, $operator = null, $value = null, $boolean = 'and') - { - if (is_array($column)) { - return $this->whereNested(function ($query) use ($column, $operator, $value, $boolean) { - $query->where($column, $operator, $value, $boolean); - }, $boolean.' not'); - } - - return $this->where($column, $operator, $value, $boolean.' not'); - } - - /** - * Add an "or where not" clause to the query. - * - * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column - * @param mixed $operator - * @param mixed $value - * @return $this - */ - public function orWhereNot($column, $operator = null, $value = null) - { - return $this->whereNot($column, $operator, $value, 'or'); - } - - /** - * Add a "where" clause comparing two columns to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string|array $first - * @param string|null $operator - * @param string|null $second - * @param string|null $boolean - * @return $this - */ - public function whereColumn($first, $operator = null, $second = null, $boolean = 'and') - { - // If the column is an array, we will assume it is an array of key-value pairs - // and can add them each as a where clause. We will maintain the boolean we - // received when the method was called and pass it into the nested where. - if (is_array($first)) { - return $this->addArrayOfWheres($first, $boolean, 'whereColumn'); - } - - // If the given operator is not found in the list of valid operators we will - // assume that the developer is just short-cutting the '=' operators and - // we will set the operators to '=' and set the values appropriately. - if ($this->invalidOperator($operator)) { - [$second, $operator] = [$operator, '=']; - } - - // Finally, we will add this where clause into this array of clauses that we - // are building for the query. All of them will be compiled via a grammar - // once the query is about to be executed and run against the database. - $type = 'Column'; - - $this->wheres[] = compact( - 'type', 'first', 'operator', 'second', 'boolean' - ); - - return $this; - } - - /** - * Add an "or where" clause comparing two columns to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string|array $first - * @param string|null $operator - * @param string|null $second - * @return $this - */ - public function orWhereColumn($first, $operator = null, $second = null) - { - return $this->whereColumn($first, $operator, $second, 'or'); - } - - /** - * Add a raw where clause to the query. - * - * @param string $sql - * @param mixed $bindings - * @param string $boolean - * @return $this - */ - public function whereRaw($sql, $bindings = [], $boolean = 'and') - { - $this->wheres[] = ['type' => 'raw', 'sql' => $sql, 'boolean' => $boolean]; - - $this->addBinding((array) $bindings, 'where'); - - return $this; - } - - /** - * Add a raw or where clause to the query. - * - * @param string $sql - * @param mixed $bindings - * @return $this - */ - public function orWhereRaw($sql, $bindings = []) - { - return $this->whereRaw($sql, $bindings, 'or'); - } - - /** - * Add a "where in" clause to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param mixed $values - * @param string $boolean - * @param bool $not - * @return $this - */ - public function whereIn($column, $values, $boolean = 'and', $not = false) - { - $type = $not ? 'NotIn' : 'In'; - - // If the value is a query builder instance we will assume the developer wants to - // look for any values that exist within this given query. So, we will add the - // query accordingly so that this query is properly executed when it is run. - if ($this->isQueryable($values)) { - [$query, $bindings] = $this->createSub($values); - - $values = [new Expression($query)]; - - $this->addBinding($bindings, 'where'); - } - - // Next, if the value is Arrayable we need to cast it to its raw array form so we - // have the underlying array value instead of an Arrayable object which is not - // able to be added as a binding, etc. We will then add to the wheres array. - if ($values instanceof Arrayable) { - $values = $values->toArray(); - } - - $this->wheres[] = compact('type', 'column', 'values', 'boolean'); - - if (count($values) !== count(Arr::flatten($values, 1))) { - throw new InvalidArgumentException('Nested arrays may not be passed to whereIn method.'); - } - - // Finally, we'll add a binding for each value unless that value is an expression - // in which case we will just skip over it since it will be the query as a raw - // string and not as a parameterized place-holder to be replaced by the PDO. - $this->addBinding($this->cleanBindings($values), 'where'); - - return $this; - } - - /** - * Add an "or where in" clause to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param mixed $values - * @return $this - */ - public function orWhereIn($column, $values) - { - return $this->whereIn($column, $values, 'or'); - } - - /** - * Add a "where not in" clause to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param mixed $values - * @param string $boolean - * @return $this - */ - public function whereNotIn($column, $values, $boolean = 'and') - { - return $this->whereIn($column, $values, $boolean, true); - } - - /** - * Add an "or where not in" clause to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param mixed $values - * @return $this - */ - public function orWhereNotIn($column, $values) - { - return $this->whereNotIn($column, $values, 'or'); - } - - /** - * Add a "where in raw" clause for integer values to the query. - * - * @param string $column - * @param \Illuminate\Contracts\Support\Arrayable|array $values - * @param string $boolean - * @param bool $not - * @return $this - */ - public function whereIntegerInRaw($column, $values, $boolean = 'and', $not = false) - { - $type = $not ? 'NotInRaw' : 'InRaw'; - - if ($values instanceof Arrayable) { - $values = $values->toArray(); - } - - $values = Arr::flatten($values); - - foreach ($values as &$value) { - $value = (int) ($value instanceof BackedEnum ? $value->value : $value); - } - - $this->wheres[] = compact('type', 'column', 'values', 'boolean'); - - return $this; - } - - /** - * Add an "or where in raw" clause for integer values to the query. - * - * @param string $column - * @param \Illuminate\Contracts\Support\Arrayable|array $values - * @return $this - */ - public function orWhereIntegerInRaw($column, $values) - { - return $this->whereIntegerInRaw($column, $values, 'or'); - } - - /** - * Add a "where not in raw" clause for integer values to the query. - * - * @param string $column - * @param \Illuminate\Contracts\Support\Arrayable|array $values - * @param string $boolean - * @return $this - */ - public function whereIntegerNotInRaw($column, $values, $boolean = 'and') - { - return $this->whereIntegerInRaw($column, $values, $boolean, true); - } - - /** - * Add an "or where not in raw" clause for integer values to the query. - * - * @param string $column - * @param \Illuminate\Contracts\Support\Arrayable|array $values - * @return $this - */ - public function orWhereIntegerNotInRaw($column, $values) - { - return $this->whereIntegerNotInRaw($column, $values, 'or'); - } - - /** - * Add a "where null" clause to the query. - * - * @param string|array|\Illuminate\Contracts\Database\Query\Expression $columns - * @param string $boolean - * @param bool $not - * @return $this - */ - public function whereNull($columns, $boolean = 'and', $not = false) - { - $type = $not ? 'NotNull' : 'Null'; - - foreach (Arr::wrap($columns) as $column) { - $this->wheres[] = compact('type', 'column', 'boolean'); - } - - return $this; - } - - /** - * Add an "or where null" clause to the query. - * - * @param string|array|\Illuminate\Contracts\Database\Query\Expression $column - * @return $this - */ - public function orWhereNull($column) - { - return $this->whereNull($column, 'or'); - } - - /** - * Add a "where not null" clause to the query. - * - * @param string|array|\Illuminate\Contracts\Database\Query\Expression $columns - * @param string $boolean - * @return $this - */ - public function whereNotNull($columns, $boolean = 'and') - { - return $this->whereNull($columns, $boolean, true); - } - - /** - * Add a where between statement to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param iterable $values - * @param string $boolean - * @param bool $not - * @return $this - */ - public function whereBetween($column, iterable $values, $boolean = 'and', $not = false) - { - $type = 'between'; - - if ($values instanceof CarbonPeriod) { - $values = [$values->start, $values->end]; - } - - $this->wheres[] = compact('type', 'column', 'values', 'boolean', 'not'); - - $this->addBinding(array_slice($this->cleanBindings(Arr::flatten($values)), 0, 2), 'where'); - - return $this; - } - - /** - * Add a where between statement using columns to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param array $values - * @param string $boolean - * @param bool $not - * @return $this - */ - public function whereBetweenColumns($column, array $values, $boolean = 'and', $not = false) - { - $type = 'betweenColumns'; - - $this->wheres[] = compact('type', 'column', 'values', 'boolean', 'not'); - - return $this; - } - - /** - * Add an or where between statement to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param iterable $values - * @return $this - */ - public function orWhereBetween($column, iterable $values) - { - return $this->whereBetween($column, $values, 'or'); - } - - /** - * Add an or where between statement using columns to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param array $values - * @return $this - */ - public function orWhereBetweenColumns($column, array $values) - { - return $this->whereBetweenColumns($column, $values, 'or'); - } - - /** - * Add a where not between statement to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param iterable $values - * @param string $boolean - * @return $this - */ - public function whereNotBetween($column, iterable $values, $boolean = 'and') - { - return $this->whereBetween($column, $values, $boolean, true); - } - - /** - * Add a where not between statement using columns to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param array $values - * @param string $boolean - * @return $this - */ - public function whereNotBetweenColumns($column, array $values, $boolean = 'and') - { - return $this->whereBetweenColumns($column, $values, $boolean, true); - } - - /** - * Add an or where not between statement to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param iterable $values - * @return $this - */ - public function orWhereNotBetween($column, iterable $values) - { - return $this->whereNotBetween($column, $values, 'or'); - } - - /** - * Add an or where not between statement using columns to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param array $values - * @return $this - */ - public function orWhereNotBetweenColumns($column, array $values) - { - return $this->whereNotBetweenColumns($column, $values, 'or'); - } - - /** - * Add an "or where not null" clause to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @return $this - */ - public function orWhereNotNull($column) - { - return $this->whereNotNull($column, 'or'); - } - - /** - * Add a "where date" statement to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param \DateTimeInterface|string|null $operator - * @param \DateTimeInterface|string|null $value - * @param string $boolean - * @return $this - */ - public function whereDate($column, $operator, $value = null, $boolean = 'and') - { - [$value, $operator] = $this->prepareValueAndOperator( - $value, $operator, func_num_args() === 2 - ); - - // If the given operator is not found in the list of valid operators we will - // assume that the developer is just short-cutting the '=' operators and - // we will set the operators to '=' and set the values appropriately. - if ($this->invalidOperator($operator)) { - [$value, $operator] = [$operator, '=']; - } - - $value = $this->flattenValue($value); - - if ($value instanceof DateTimeInterface) { - $value = $value->format('Y-m-d'); - } - - return $this->addDateBasedWhere('Date', $column, $operator, $value, $boolean); - } - - /** - * Add an "or where date" statement to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param \DateTimeInterface|string|null $operator - * @param \DateTimeInterface|string|null $value - * @return $this - */ - public function orWhereDate($column, $operator, $value = null) - { - [$value, $operator] = $this->prepareValueAndOperator( - $value, $operator, func_num_args() === 2 - ); - - return $this->whereDate($column, $operator, $value, 'or'); - } - - /** - * Add a "where time" statement to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param \DateTimeInterface|string|null $operator - * @param \DateTimeInterface|string|null $value - * @param string $boolean - * @return $this - */ - public function whereTime($column, $operator, $value = null, $boolean = 'and') - { - [$value, $operator] = $this->prepareValueAndOperator( - $value, $operator, func_num_args() === 2 - ); - - // If the given operator is not found in the list of valid operators we will - // assume that the developer is just short-cutting the '=' operators and - // we will set the operators to '=' and set the values appropriately. - if ($this->invalidOperator($operator)) { - [$value, $operator] = [$operator, '=']; - } - - $value = $this->flattenValue($value); - - if ($value instanceof DateTimeInterface) { - $value = $value->format('H:i:s'); - } - - return $this->addDateBasedWhere('Time', $column, $operator, $value, $boolean); - } - - /** - * Add an "or where time" statement to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param \DateTimeInterface|string|null $operator - * @param \DateTimeInterface|string|null $value - * @return $this - */ - public function orWhereTime($column, $operator, $value = null) - { - [$value, $operator] = $this->prepareValueAndOperator( - $value, $operator, func_num_args() === 2 - ); - - return $this->whereTime($column, $operator, $value, 'or'); - } - - /** - * Add a "where day" statement to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param \DateTimeInterface|string|int|null $operator - * @param \DateTimeInterface|string|int|null $value - * @param string $boolean - * @return $this - */ - public function whereDay($column, $operator, $value = null, $boolean = 'and') - { - [$value, $operator] = $this->prepareValueAndOperator( - $value, $operator, func_num_args() === 2 - ); - - // If the given operator is not found in the list of valid operators we will - // assume that the developer is just short-cutting the '=' operators and - // we will set the operators to '=' and set the values appropriately. - if ($this->invalidOperator($operator)) { - [$value, $operator] = [$operator, '=']; - } - - $value = $this->flattenValue($value); - - if ($value instanceof DateTimeInterface) { - $value = $value->format('d'); - } - - if (! $value instanceof ExpressionContract) { - $value = sprintf('%02d', $value); - } - - return $this->addDateBasedWhere('Day', $column, $operator, $value, $boolean); - } - - /** - * Add an "or where day" statement to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param \DateTimeInterface|string|int|null $operator - * @param \DateTimeInterface|string|int|null $value - * @return $this - */ - public function orWhereDay($column, $operator, $value = null) - { - [$value, $operator] = $this->prepareValueAndOperator( - $value, $operator, func_num_args() === 2 - ); - - return $this->whereDay($column, $operator, $value, 'or'); - } - - /** - * Add a "where month" statement to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param \DateTimeInterface|string|int|null $operator - * @param \DateTimeInterface|string|int|null $value - * @param string $boolean - * @return $this - */ - public function whereMonth($column, $operator, $value = null, $boolean = 'and') - { - [$value, $operator] = $this->prepareValueAndOperator( - $value, $operator, func_num_args() === 2 - ); - - // If the given operator is not found in the list of valid operators we will - // assume that the developer is just short-cutting the '=' operators and - // we will set the operators to '=' and set the values appropriately. - if ($this->invalidOperator($operator)) { - [$value, $operator] = [$operator, '=']; - } - - $value = $this->flattenValue($value); - - if ($value instanceof DateTimeInterface) { - $value = $value->format('m'); - } - - if (! $value instanceof ExpressionContract) { - $value = sprintf('%02d', $value); - } - - return $this->addDateBasedWhere('Month', $column, $operator, $value, $boolean); - } - - /** - * Add an "or where month" statement to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param \DateTimeInterface|string|int|null $operator - * @param \DateTimeInterface|string|int|null $value - * @return $this - */ - public function orWhereMonth($column, $operator, $value = null) - { - [$value, $operator] = $this->prepareValueAndOperator( - $value, $operator, func_num_args() === 2 - ); - - return $this->whereMonth($column, $operator, $value, 'or'); - } - - /** - * Add a "where year" statement to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param \DateTimeInterface|string|int|null $operator - * @param \DateTimeInterface|string|int|null $value - * @param string $boolean - * @return $this - */ - public function whereYear($column, $operator, $value = null, $boolean = 'and') - { - [$value, $operator] = $this->prepareValueAndOperator( - $value, $operator, func_num_args() === 2 - ); - - // If the given operator is not found in the list of valid operators we will - // assume that the developer is just short-cutting the '=' operators and - // we will set the operators to '=' and set the values appropriately. - if ($this->invalidOperator($operator)) { - [$value, $operator] = [$operator, '=']; - } - - $value = $this->flattenValue($value); - - if ($value instanceof DateTimeInterface) { - $value = $value->format('Y'); - } - - return $this->addDateBasedWhere('Year', $column, $operator, $value, $boolean); - } - - /** - * Add an "or where year" statement to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param \DateTimeInterface|string|int|null $operator - * @param \DateTimeInterface|string|int|null $value - * @return $this - */ - public function orWhereYear($column, $operator, $value = null) - { - [$value, $operator] = $this->prepareValueAndOperator( - $value, $operator, func_num_args() === 2 - ); - - return $this->whereYear($column, $operator, $value, 'or'); - } - - /** - * Add a date based (year, month, day, time) statement to the query. - * - * @param string $type - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param string $operator - * @param mixed $value - * @param string $boolean - * @return $this - */ - protected function addDateBasedWhere($type, $column, $operator, $value, $boolean = 'and') - { - $this->wheres[] = compact('column', 'type', 'boolean', 'operator', 'value'); - - if (! $value instanceof ExpressionContract) { - $this->addBinding($value, 'where'); - } - - return $this; - } - - /** - * Add a nested where statement to the query. - * - * @param \Closure $callback - * @param string $boolean - * @return $this - */ - public function whereNested(Closure $callback, $boolean = 'and') - { - $callback($query = $this->forNestedWhere()); - - return $this->addNestedWhereQuery($query, $boolean); - } - - /** - * Create a new query instance for nested where condition. - * - * @return \Illuminate\Database\Query\Builder - */ - public function forNestedWhere() - { - return $this->newQuery()->from($this->from); - } - - /** - * Add another query builder as a nested where to the query builder. - * - * @param \Illuminate\Database\Query\Builder $query - * @param string $boolean - * @return $this - */ - public function addNestedWhereQuery($query, $boolean = 'and') - { - if (count($query->wheres)) { - $type = 'Nested'; - - $this->wheres[] = compact('type', 'query', 'boolean'); - - $this->addBinding($query->getRawBindings()['where'], 'where'); - } - - return $this; - } - - /** - * Add a full sub-select to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param string $operator - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder $callback - * @param string $boolean - * @return $this - */ - protected function whereSub($column, $operator, $callback, $boolean) - { - $type = 'Sub'; - - if ($callback instanceof Closure) { - // Once we have the query instance we can simply execute it so it can add all - // of the sub-select's conditions to itself, and then we can cache it off - // in the array of where clauses for the "main" parent query instance. - $callback($query = $this->forSubQuery()); - } else { - $query = $callback instanceof EloquentBuilder ? $callback->toBase() : $callback; - } - - $this->wheres[] = compact( - 'type', 'column', 'operator', 'query', 'boolean' - ); - - $this->addBinding($query->getBindings(), 'where'); - - return $this; - } - - /** - * Add an exists clause to the query. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder $callback - * @param string $boolean - * @param bool $not - * @return $this - */ - public function whereExists($callback, $boolean = 'and', $not = false) - { - if ($callback instanceof Closure) { - $query = $this->forSubQuery(); - - // Similar to the sub-select clause, we will create a new query instance so - // the developer may cleanly specify the entire exists query and we will - // compile the whole thing in the grammar and insert it into the SQL. - $callback($query); - } else { - $query = $callback instanceof EloquentBuilder ? $callback->toBase() : $callback; - } - - return $this->addWhereExistsQuery($query, $boolean, $not); - } - - /** - * Add an or exists clause to the query. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder $callback - * @param bool $not - * @return $this - */ - public function orWhereExists($callback, $not = false) - { - return $this->whereExists($callback, 'or', $not); - } - - /** - * Add a where not exists clause to the query. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder $callback - * @param string $boolean - * @return $this - */ - public function whereNotExists($callback, $boolean = 'and') - { - return $this->whereExists($callback, $boolean, true); - } - - /** - * Add a where not exists clause to the query. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder $callback - * @return $this - */ - public function orWhereNotExists($callback) - { - return $this->orWhereExists($callback, true); - } - - /** - * Add an exists clause to the query. - * - * @param \Illuminate\Database\Query\Builder $query - * @param string $boolean - * @param bool $not - * @return $this - */ - public function addWhereExistsQuery(self $query, $boolean = 'and', $not = false) - { - $type = $not ? 'NotExists' : 'Exists'; - - $this->wheres[] = compact('type', 'query', 'boolean'); - - $this->addBinding($query->getBindings(), 'where'); - - return $this; - } - - /** - * Adds a where condition using row values. - * - * @param array $columns - * @param string $operator - * @param array $values - * @param string $boolean - * @return $this - * - * @throws \InvalidArgumentException - */ - public function whereRowValues($columns, $operator, $values, $boolean = 'and') - { - if (count($columns) !== count($values)) { - throw new InvalidArgumentException('The number of columns must match the number of values'); - } - - $type = 'RowValues'; - - $this->wheres[] = compact('type', 'columns', 'operator', 'values', 'boolean'); - - $this->addBinding($this->cleanBindings($values)); - - return $this; - } - - /** - * Adds an or where condition using row values. - * - * @param array $columns - * @param string $operator - * @param array $values - * @return $this - */ - public function orWhereRowValues($columns, $operator, $values) - { - return $this->whereRowValues($columns, $operator, $values, 'or'); - } - - /** - * Add a "where JSON contains" clause to the query. - * - * @param string $column - * @param mixed $value - * @param string $boolean - * @param bool $not - * @return $this - */ - public function whereJsonContains($column, $value, $boolean = 'and', $not = false) - { - $type = 'JsonContains'; - - $this->wheres[] = compact('type', 'column', 'value', 'boolean', 'not'); - - if (! $value instanceof ExpressionContract) { - $this->addBinding($this->grammar->prepareBindingForJsonContains($value)); - } - - return $this; - } - - /** - * Add an "or where JSON contains" clause to the query. - * - * @param string $column - * @param mixed $value - * @return $this - */ - public function orWhereJsonContains($column, $value) - { - return $this->whereJsonContains($column, $value, 'or'); - } - - /** - * Add a "where JSON not contains" clause to the query. - * - * @param string $column - * @param mixed $value - * @param string $boolean - * @return $this - */ - public function whereJsonDoesntContain($column, $value, $boolean = 'and') - { - return $this->whereJsonContains($column, $value, $boolean, true); - } - - /** - * Add an "or where JSON not contains" clause to the query. - * - * @param string $column - * @param mixed $value - * @return $this - */ - public function orWhereJsonDoesntContain($column, $value) - { - return $this->whereJsonDoesntContain($column, $value, 'or'); - } - - /** - * Add a clause that determines if a JSON path exists to the query. - * - * @param string $column - * @param string $boolean - * @param bool $not - * @return $this - */ - public function whereJsonContainsKey($column, $boolean = 'and', $not = false) - { - $type = 'JsonContainsKey'; - - $this->wheres[] = compact('type', 'column', 'boolean', 'not'); - - return $this; - } - - /** - * Add an "or" clause that determines if a JSON path exists to the query. - * - * @param string $column - * @return $this - */ - public function orWhereJsonContainsKey($column) - { - return $this->whereJsonContainsKey($column, 'or'); - } - - /** - * Add a clause that determines if a JSON path does not exist to the query. - * - * @param string $column - * @param string $boolean - * @return $this - */ - public function whereJsonDoesntContainKey($column, $boolean = 'and') - { - return $this->whereJsonContainsKey($column, $boolean, true); - } - - /** - * Add an "or" clause that determines if a JSON path does not exist to the query. - * - * @param string $column - * @return $this - */ - public function orWhereJsonDoesntContainKey($column) - { - return $this->whereJsonDoesntContainKey($column, 'or'); - } - - /** - * Add a "where JSON length" clause to the query. - * - * @param string $column - * @param mixed $operator - * @param mixed $value - * @param string $boolean - * @return $this - */ - public function whereJsonLength($column, $operator, $value = null, $boolean = 'and') - { - $type = 'JsonLength'; - - [$value, $operator] = $this->prepareValueAndOperator( - $value, $operator, func_num_args() === 2 - ); - - // If the given operator is not found in the list of valid operators we will - // assume that the developer is just short-cutting the '=' operators and - // we will set the operators to '=' and set the values appropriately. - if ($this->invalidOperator($operator)) { - [$value, $operator] = [$operator, '=']; - } - - $this->wheres[] = compact('type', 'column', 'operator', 'value', 'boolean'); - - if (! $value instanceof ExpressionContract) { - $this->addBinding((int) $this->flattenValue($value)); - } - - return $this; - } - - /** - * Add an "or where JSON length" clause to the query. - * - * @param string $column - * @param mixed $operator - * @param mixed $value - * @return $this - */ - public function orWhereJsonLength($column, $operator, $value = null) - { - [$value, $operator] = $this->prepareValueAndOperator( - $value, $operator, func_num_args() === 2 - ); - - return $this->whereJsonLength($column, $operator, $value, 'or'); - } - - /** - * Handles dynamic "where" clauses to the query. - * - * @param string $method - * @param array $parameters - * @return $this - */ - public function dynamicWhere($method, $parameters) - { - $finder = substr($method, 5); - - $segments = preg_split( - '/(And|Or)(?=[A-Z])/', $finder, -1, PREG_SPLIT_DELIM_CAPTURE - ); - - // The connector variable will determine which connector will be used for the - // query condition. We will change it as we come across new boolean values - // in the dynamic method strings, which could contain a number of these. - $connector = 'and'; - - $index = 0; - - foreach ($segments as $segment) { - // If the segment is not a boolean connector, we can assume it is a column's name - // and we will add it to the query as a new constraint as a where clause, then - // we can keep iterating through the dynamic method string's segments again. - if ($segment !== 'And' && $segment !== 'Or') { - $this->addDynamic($segment, $connector, $parameters, $index); - - $index++; - } - - // Otherwise, we will store the connector so we know how the next where clause we - // find in the query should be connected to the previous ones, meaning we will - // have the proper boolean connector to connect the next where clause found. - else { - $connector = $segment; - } - } - - return $this; - } - - /** - * Add a single dynamic where clause statement to the query. - * - * @param string $segment - * @param string $connector - * @param array $parameters - * @param int $index - * @return void - */ - protected function addDynamic($segment, $connector, $parameters, $index) - { - // Once we have parsed out the columns and formatted the boolean operators we - // are ready to add it to this query as a where clause just like any other - // clause on the query. Then we'll increment the parameter index values. - $bool = strtolower($connector); - - $this->where(Str::snake($segment), '=', $parameters[$index], $bool); - } - - /** - * Add a "where fulltext" clause to the query. - * - * @param string|string[] $columns - * @param string $value - * @param string $boolean - * @return $this - */ - public function whereFullText($columns, $value, array $options = [], $boolean = 'and') - { - $type = 'Fulltext'; - - $columns = (array) $columns; - - $this->wheres[] = compact('type', 'columns', 'value', 'options', 'boolean'); - - $this->addBinding($value); - - return $this; - } - - /** - * Add a "or where fulltext" clause to the query. - * - * @param string|string[] $columns - * @param string $value - * @return $this - */ - public function orWhereFullText($columns, $value, array $options = []) - { - return $this->whereFulltext($columns, $value, $options, 'or'); - } - - /** - * Add a "where" clause to the query for multiple columns with "and" conditions between them. - * - * @param string[] $columns - * @param mixed $operator - * @param mixed $value - * @param string $boolean - * @return $this - */ - public function whereAll($columns, $operator = null, $value = null, $boolean = 'and') - { - [$value, $operator] = $this->prepareValueAndOperator( - $value, $operator, func_num_args() === 2 - ); - - $this->whereNested(function ($query) use ($columns, $operator, $value) { - foreach ($columns as $column) { - $query->where($column, $operator, $value, 'and'); - } - }, $boolean); - - return $this; - } - - /** - * Add an "or where" clause to the query for multiple columns with "and" conditions between them. - * - * @param string[] $columns - * @param string $operator - * @param mixed $value - * @return $this - */ - public function orWhereAll($columns, $operator = null, $value = null) - { - return $this->whereAll($columns, $operator, $value, 'or'); - } - - /** - * Add an "where" clause to the query for multiple columns with "or" conditions between them. - * - * @param string[] $columns - * @param string $operator - * @param mixed $value - * @param string $boolean - * @return $this - */ - public function whereAny($columns, $operator = null, $value = null, $boolean = 'and') - { - [$value, $operator] = $this->prepareValueAndOperator( - $value, $operator, func_num_args() === 2 - ); - - $this->whereNested(function ($query) use ($columns, $operator, $value) { - foreach ($columns as $column) { - $query->where($column, $operator, $value, 'or'); - } - }, $boolean); - - return $this; - } - - /** - * Add an "or where" clause to the query for multiple columns with "or" conditions between them. - * - * @param string[] $columns - * @param string $operator - * @param mixed $value - * @return $this - */ - public function orWhereAny($columns, $operator = null, $value = null) - { - return $this->whereAny($columns, $operator, $value, 'or'); - } - - /** - * Add a "group by" clause to the query. - * - * @param array|\Illuminate\Contracts\Database\Query\Expression|string ...$groups - * @return $this - */ - public function groupBy(...$groups) - { - foreach ($groups as $group) { - $this->groups = array_merge( - (array) $this->groups, - Arr::wrap($group) - ); - } - - return $this; - } - - /** - * Add a raw groupBy clause to the query. - * - * @param string $sql - * @param array $bindings - * @return $this - */ - public function groupByRaw($sql, array $bindings = []) - { - $this->groups[] = new Expression($sql); - - $this->addBinding($bindings, 'groupBy'); - - return $this; - } - - /** - * Add a "having" clause to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|\Closure|string $column - * @param string|int|float|null $operator - * @param string|int|float|null $value - * @param string $boolean - * @return $this - */ - public function having($column, $operator = null, $value = null, $boolean = 'and') - { - $type = 'Basic'; - - if ($column instanceof ConditionExpression) { - $type = 'Expression'; - - $this->havings[] = compact('type', 'column', 'boolean'); - - return $this; - } - - // Here we will make some assumptions about the operator. If only 2 values are - // passed to the method, we will assume that the operator is an equals sign - // and keep going. Otherwise, we'll require the operator to be passed in. - [$value, $operator] = $this->prepareValueAndOperator( - $value, $operator, func_num_args() === 2 - ); - - if ($column instanceof Closure && is_null($operator)) { - return $this->havingNested($column, $boolean); - } - - // If the given operator is not found in the list of valid operators we will - // assume that the developer is just short-cutting the '=' operators and - // we will set the operators to '=' and set the values appropriately. - if ($this->invalidOperator($operator)) { - [$value, $operator] = [$operator, '=']; - } - - if ($this->isBitwiseOperator($operator)) { - $type = 'Bitwise'; - } - - $this->havings[] = compact('type', 'column', 'operator', 'value', 'boolean'); - - if (! $value instanceof ExpressionContract) { - $this->addBinding($this->flattenValue($value), 'having'); - } - - return $this; - } - - /** - * Add an "or having" clause to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|\Closure|string $column - * @param string|int|float|null $operator - * @param string|int|float|null $value - * @return $this - */ - public function orHaving($column, $operator = null, $value = null) - { - [$value, $operator] = $this->prepareValueAndOperator( - $value, $operator, func_num_args() === 2 - ); - - return $this->having($column, $operator, $value, 'or'); - } - - /** - * Add a nested having statement to the query. - * - * @param \Closure $callback - * @param string $boolean - * @return $this - */ - public function havingNested(Closure $callback, $boolean = 'and') - { - $callback($query = $this->forNestedWhere()); - - return $this->addNestedHavingQuery($query, $boolean); - } - - /** - * Add another query builder as a nested having to the query builder. - * - * @param \Illuminate\Database\Query\Builder $query - * @param string $boolean - * @return $this - */ - public function addNestedHavingQuery($query, $boolean = 'and') - { - if (count($query->havings)) { - $type = 'Nested'; - - $this->havings[] = compact('type', 'query', 'boolean'); - - $this->addBinding($query->getRawBindings()['having'], 'having'); - } - - return $this; - } - - /** - * Add a "having null" clause to the query. - * - * @param string|array $columns - * @param string $boolean - * @param bool $not - * @return $this - */ - public function havingNull($columns, $boolean = 'and', $not = false) - { - $type = $not ? 'NotNull' : 'Null'; - - foreach (Arr::wrap($columns) as $column) { - $this->havings[] = compact('type', 'column', 'boolean'); - } - - return $this; - } - - /** - * Add an "or having null" clause to the query. - * - * @param string $column - * @return $this - */ - public function orHavingNull($column) - { - return $this->havingNull($column, 'or'); - } - - /** - * Add a "having not null" clause to the query. - * - * @param string|array $columns - * @param string $boolean - * @return $this - */ - public function havingNotNull($columns, $boolean = 'and') - { - return $this->havingNull($columns, $boolean, true); - } - - /** - * Add an "or having not null" clause to the query. - * - * @param string $column - * @return $this - */ - public function orHavingNotNull($column) - { - return $this->havingNotNull($column, 'or'); - } - - /** - * Add a "having between " clause to the query. - * - * @param string $column - * @param iterable $values - * @param string $boolean - * @param bool $not - * @return $this - */ - public function havingBetween($column, iterable $values, $boolean = 'and', $not = false) - { - $type = 'between'; - - if ($values instanceof CarbonPeriod) { - $values = [$values->start, $values->end]; - } - - $this->havings[] = compact('type', 'column', 'values', 'boolean', 'not'); - - $this->addBinding(array_slice($this->cleanBindings(Arr::flatten($values)), 0, 2), 'having'); - - return $this; - } - - /** - * Add a raw having clause to the query. - * - * @param string $sql - * @param array $bindings - * @param string $boolean - * @return $this - */ - public function havingRaw($sql, array $bindings = [], $boolean = 'and') - { - $type = 'Raw'; - - $this->havings[] = compact('type', 'sql', 'boolean'); - - $this->addBinding($bindings, 'having'); - - return $this; - } - - /** - * Add a raw or having clause to the query. - * - * @param string $sql - * @param array $bindings - * @return $this - */ - public function orHavingRaw($sql, array $bindings = []) - { - return $this->havingRaw($sql, $bindings, 'or'); - } - - /** - * Add an "order by" clause to the query. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|\Illuminate\Contracts\Database\Query\Expression|string $column - * @param string $direction - * @return $this - * - * @throws \InvalidArgumentException - */ - public function orderBy($column, $direction = 'asc') - { - if ($this->isQueryable($column)) { - [$query, $bindings] = $this->createSub($column); - - $column = new Expression('('.$query.')'); - - $this->addBinding($bindings, $this->unions ? 'unionOrder' : 'order'); - } - - $direction = strtolower($direction); - - if (! in_array($direction, ['asc', 'desc'], true)) { - throw new InvalidArgumentException('Order direction must be "asc" or "desc".'); - } - - $this->{$this->unions ? 'unionOrders' : 'orders'}[] = [ - 'column' => $column, - 'direction' => $direction, - ]; - - return $this; - } - - /** - * Add a descending "order by" clause to the query. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|\Illuminate\Contracts\Database\Query\Expression|string $column - * @return $this - */ - public function orderByDesc($column) - { - return $this->orderBy($column, 'desc'); - } - - /** - * Add an "order by" clause for a timestamp to the query. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Contracts\Database\Query\Expression|string $column - * @return $this - */ - public function latest($column = 'created_at') - { - return $this->orderBy($column, 'desc'); - } - - /** - * Add an "order by" clause for a timestamp to the query. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Contracts\Database\Query\Expression|string $column - * @return $this - */ - public function oldest($column = 'created_at') - { - return $this->orderBy($column, 'asc'); - } - - /** - * Put the query's results in random order. - * - * @param string|int $seed - * @return $this - */ - public function inRandomOrder($seed = '') - { - return $this->orderByRaw($this->grammar->compileRandom($seed)); - } - - /** - * Add a raw "order by" clause to the query. - * - * @param string $sql - * @param array $bindings - * @return $this - */ - public function orderByRaw($sql, $bindings = []) - { - $type = 'Raw'; - - $this->{$this->unions ? 'unionOrders' : 'orders'}[] = compact('type', 'sql'); - - $this->addBinding($bindings, $this->unions ? 'unionOrder' : 'order'); - - return $this; - } - - /** - * Alias to set the "offset" value of the query. - * - * @param int $value - * @return $this - */ - public function skip($value) - { - return $this->offset($value); - } - - /** - * Set the "offset" value of the query. - * - * @param int $value - * @return $this - */ - public function offset($value) - { - $property = $this->unions ? 'unionOffset' : 'offset'; - - $this->$property = max(0, (int) $value); - - return $this; - } - - /** - * Alias to set the "limit" value of the query. - * - * @param int $value - * @return $this - */ - public function take($value) - { - return $this->limit($value); - } - - /** - * Set the "limit" value of the query. - * - * @param int $value - * @return $this - */ - public function limit($value) - { - $property = $this->unions ? 'unionLimit' : 'limit'; - - if ($value >= 0) { - $this->$property = ! is_null($value) ? (int) $value : null; - } - - return $this; - } - - /** - * Set the limit and offset for a given page. - * - * @param int $page - * @param int $perPage - * @return $this - */ - public function forPage($page, $perPage = 15) - { - return $this->offset(($page - 1) * $perPage)->limit($perPage); - } - - /** - * Constrain the query to the previous "page" of results before a given ID. - * - * @param int $perPage - * @param int|null $lastId - * @param string $column - * @return $this - */ - public function forPageBeforeId($perPage = 15, $lastId = 0, $column = 'id') - { - $this->orders = $this->removeExistingOrdersFor($column); - - if (! is_null($lastId)) { - $this->where($column, '<', $lastId); - } - - return $this->orderBy($column, 'desc') - ->limit($perPage); - } - - /** - * Constrain the query to the next "page" of results after a given ID. - * - * @param int $perPage - * @param int|null $lastId - * @param string $column - * @return $this - */ - public function forPageAfterId($perPage = 15, $lastId = 0, $column = 'id') - { - $this->orders = $this->removeExistingOrdersFor($column); - - if (! is_null($lastId)) { - $this->where($column, '>', $lastId); - } - - return $this->orderBy($column, 'asc') - ->limit($perPage); - } - - /** - * Remove all existing orders and optionally add a new order. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Contracts\Database\Query\Expression|string|null $column - * @param string $direction - * @return $this - */ - public function reorder($column = null, $direction = 'asc') - { - $this->orders = null; - $this->unionOrders = null; - $this->bindings['order'] = []; - $this->bindings['unionOrder'] = []; - - if ($column) { - return $this->orderBy($column, $direction); - } - - return $this; - } - - /** - * Get an array with all orders with a given column removed. - * - * @param string $column - * @return array - */ - protected function removeExistingOrdersFor($column) - { - return Collection::make($this->orders) - ->reject(function ($order) use ($column) { - return isset($order['column']) - ? $order['column'] === $column : false; - })->values()->all(); - } - - /** - * Add a union statement to the query. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder $query - * @param bool $all - * @return $this - */ - public function union($query, $all = false) - { - if ($query instanceof Closure) { - $query($query = $this->newQuery()); - } - - $this->unions[] = compact('query', 'all'); - - $this->addBinding($query->getBindings(), 'union'); - - return $this; - } - - /** - * Add a union all statement to the query. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder $query - * @return $this - */ - public function unionAll($query) - { - return $this->union($query, true); - } - - /** - * Lock the selected rows in the table. - * - * @param string|bool $value - * @return $this - */ - public function lock($value = true) - { - $this->lock = $value; - - if (! is_null($this->lock)) { - $this->useWritePdo(); - } - - return $this; - } - - /** - * Lock the selected rows in the table for updating. - * - * @return $this - */ - public function lockForUpdate() - { - return $this->lock(true); - } - - /** - * Share lock the selected rows in the table. - * - * @return $this - */ - public function sharedLock() - { - return $this->lock(false); - } - - /** - * Register a closure to be invoked before the query is executed. - * - * @param callable $callback - * @return $this - */ - public function beforeQuery(callable $callback) - { - $this->beforeQueryCallbacks[] = $callback; - - return $this; - } - - /** - * Invoke the "before query" modification callbacks. - * - * @return void - */ - public function applyBeforeQueryCallbacks() - { - foreach ($this->beforeQueryCallbacks as $callback) { - $callback($this); - } - - $this->beforeQueryCallbacks = []; - } - - /** - * Get the SQL representation of the query. - * - * @return string - */ - public function toSql() - { - $this->applyBeforeQueryCallbacks(); - - return $this->grammar->compileSelect($this); - } - - /** - * Get the raw SQL representation of the query with embedded bindings. - * - * @return string - */ - public function toRawSql() - { - return $this->grammar->substituteBindingsIntoRawSql( - $this->toSql(), $this->connection->prepareBindings($this->getBindings()) - ); - } - - /** - * Execute a query for a single record by ID. - * - * @param int|string $id - * @param array|string $columns - * @return mixed|static - */ - public function find($id, $columns = ['*']) - { - return $this->where('id', '=', $id)->first($columns); - } - - /** - * Execute a query for a single record by ID or call a callback. - * - * @param mixed $id - * @param \Closure|array|string $columns - * @param \Closure|null $callback - * @return mixed|static - */ - public function findOr($id, $columns = ['*'], ?Closure $callback = null) - { - if ($columns instanceof Closure) { - $callback = $columns; - - $columns = ['*']; - } - - if (! is_null($data = $this->find($id, $columns))) { - return $data; - } - - return $callback(); - } - - /** - * Get a single column's value from the first result of a query. - * - * @param string $column - * @return mixed - */ - public function value($column) - { - $result = (array) $this->first([$column]); - - return count($result) > 0 ? reset($result) : null; - } - - /** - * Get a single expression value from the first result of a query. - * - * @param string $expression - * @param array $bindings - * @return mixed - */ - public function rawValue(string $expression, array $bindings = []) - { - $result = (array) $this->selectRaw($expression, $bindings)->first(); - - return count($result) > 0 ? reset($result) : null; - } - - /** - * Get a single column's value from the first result of a query if it's the sole matching record. - * - * @param string $column - * @return mixed - * - * @throws \Illuminate\Database\RecordsNotFoundException - * @throws \Illuminate\Database\MultipleRecordsFoundException - */ - public function soleValue($column) - { - $result = (array) $this->sole([$column]); - - return reset($result); - } - - /** - * Execute the query as a "select" statement. - * - * @param array|string $columns - * @return \Illuminate\Support\Collection - */ - public function get($columns = ['*']) - { - return collect($this->onceWithColumns(Arr::wrap($columns), function () { - return $this->processor->processSelect($this, $this->runSelect()); - })); - } - - /** - * Run the query as a "select" statement against the connection. - * - * @return array - */ - protected function runSelect() - { - return $this->connection->select( - $this->toSql(), $this->getBindings(), ! $this->useWritePdo - ); - } - - /** - * Paginate the given query into a simple paginator. - * - * @param int|\Closure $perPage - * @param array|string $columns - * @param string $pageName - * @param int|null $page - * @param \Closure|int|null $total - * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator - */ - public function paginate($perPage = 15, $columns = ['*'], $pageName = 'page', $page = null) - { - $page = $page ?: Paginator::resolveCurrentPage($pageName); - - $total = func_num_args() === 5 ? value(func_get_arg(4)) : $this->getCountForPagination(); - - $perPage = $perPage instanceof Closure ? $perPage($total) : $perPage; - - $results = $total ? $this->forPage($page, $perPage)->get($columns) : collect(); - - return $this->paginator($results, $total, $perPage, $page, [ - 'path' => Paginator::resolveCurrentPath(), - 'pageName' => $pageName, - ]); - } - - /** - * Get a paginator only supporting simple next and previous links. - * - * This is more efficient on larger data-sets, etc. - * - * @param int $perPage - * @param array|string $columns - * @param string $pageName - * @param int|null $page - * @return \Illuminate\Contracts\Pagination\Paginator - */ - public function simplePaginate($perPage = 15, $columns = ['*'], $pageName = 'page', $page = null) - { - $page = $page ?: Paginator::resolveCurrentPage($pageName); - - $this->offset(($page - 1) * $perPage)->limit($perPage + 1); - - return $this->simplePaginator($this->get($columns), $perPage, $page, [ - 'path' => Paginator::resolveCurrentPath(), - 'pageName' => $pageName, - ]); - } - - /** - * Get a paginator only supporting simple next and previous links. - * - * This is more efficient on larger data-sets, etc. - * - * @param int|null $perPage - * @param array|string $columns - * @param string $cursorName - * @param \Illuminate\Pagination\Cursor|string|null $cursor - * @return \Illuminate\Contracts\Pagination\CursorPaginator - */ - public function cursorPaginate($perPage = 15, $columns = ['*'], $cursorName = 'cursor', $cursor = null) - { - return $this->paginateUsingCursor($perPage, $columns, $cursorName, $cursor); - } - - /** - * Ensure the proper order by required for cursor pagination. - * - * @param bool $shouldReverse - * @return \Illuminate\Support\Collection - */ - protected function ensureOrderForCursorPagination($shouldReverse = false) - { - if (empty($this->orders) && empty($this->unionOrders)) { - $this->enforceOrderBy(); - } - - $reverseDirection = function ($order) { - if (! isset($order['direction'])) { - return $order; - } - - $order['direction'] = $order['direction'] === 'asc' ? 'desc' : 'asc'; - - return $order; - }; - - if ($shouldReverse) { - $this->orders = collect($this->orders)->map($reverseDirection)->toArray(); - $this->unionOrders = collect($this->unionOrders)->map($reverseDirection)->toArray(); - } - - $orders = ! empty($this->unionOrders) ? $this->unionOrders : $this->orders; - - return collect($orders) - ->filter(fn ($order) => Arr::has($order, 'direction')) - ->values(); - } - - /** - * Get the count of the total records for the paginator. - * - * @param array $columns - * @return int - */ - public function getCountForPagination($columns = ['*']) - { - $results = $this->runPaginationCountQuery($columns); - - // Once we have run the pagination count query, we will get the resulting count and - // take into account what type of query it was. When there is a group by we will - // just return the count of the entire results set since that will be correct. - if (! isset($results[0])) { - return 0; - } elseif (is_object($results[0])) { - return (int) $results[0]->aggregate; - } - - return (int) array_change_key_case((array) $results[0])['aggregate']; - } - - /** - * Run a pagination count query. - * - * @param array $columns - * @return array - */ - protected function runPaginationCountQuery($columns = ['*']) - { - if ($this->groups || $this->havings) { - $clone = $this->cloneForPaginationCount(); - - if (is_null($clone->columns) && ! empty($this->joins)) { - $clone->select($this->from.'.*'); - } - - return $this->newQuery() - ->from(new Expression('('.$clone->toSql().') as '.$this->grammar->wrap('aggregate_table'))) - ->mergeBindings($clone) - ->setAggregate('count', $this->withoutSelectAliases($columns)) - ->get()->all(); - } - - $without = $this->unions ? ['unionOrders', 'unionLimit', 'unionOffset'] : ['columns', 'orders', 'limit', 'offset']; - - return $this->cloneWithout($without) - ->cloneWithoutBindings($this->unions ? ['unionOrder'] : ['select', 'order']) - ->setAggregate('count', $this->withoutSelectAliases($columns)) - ->get()->all(); - } - - /** - * Clone the existing query instance for usage in a pagination subquery. - * - * @return self - */ - protected function cloneForPaginationCount() - { - return $this->cloneWithout(['orders', 'limit', 'offset']) - ->cloneWithoutBindings(['order']); - } - - /** - * Remove the column aliases since they will break count queries. - * - * @param array $columns - * @return array - */ - protected function withoutSelectAliases(array $columns) - { - return array_map(function ($column) { - return is_string($column) && ($aliasPosition = stripos($column, ' as ')) !== false - ? substr($column, 0, $aliasPosition) : $column; - }, $columns); - } - - /** - * Get a lazy collection for the given query. - * - * @return \Illuminate\Support\LazyCollection - */ - public function cursor() - { - if (is_null($this->columns)) { - $this->columns = ['*']; - } - - return new LazyCollection(function () { - yield from $this->connection->cursor( - $this->toSql(), $this->getBindings(), ! $this->useWritePdo - ); - }); - } - - /** - * Throw an exception if the query doesn't have an orderBy clause. - * - * @return void - * - * @throws \RuntimeException - */ - protected function enforceOrderBy() - { - if (empty($this->orders) && empty($this->unionOrders)) { - throw new RuntimeException('You must specify an orderBy clause when using this function.'); - } - } - - /** - * Get a collection instance containing the values of a given column. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param string|null $key - * @return \Illuminate\Support\Collection - */ - public function pluck($column, $key = null) - { - // First, we will need to select the results of the query accounting for the - // given columns / key. Once we have the results, we will be able to take - // the results and get the exact data that was requested for the query. - $queryResult = $this->onceWithColumns( - is_null($key) ? [$column] : [$column, $key], - function () { - return $this->processor->processSelect( - $this, $this->runSelect() - ); - } - ); - - if (empty($queryResult)) { - return collect(); - } - - // If the columns are qualified with a table or have an alias, we cannot use - // those directly in the "pluck" operations since the results from the DB - // are only keyed by the column itself. We'll strip the table out here. - $column = $this->stripTableForPluck($column); - - $key = $this->stripTableForPluck($key); - - return is_array($queryResult[0]) - ? $this->pluckFromArrayColumn($queryResult, $column, $key) - : $this->pluckFromObjectColumn($queryResult, $column, $key); - } - - /** - * Strip off the table name or alias from a column identifier. - * - * @param string $column - * @return string|null - */ - protected function stripTableForPluck($column) - { - if (is_null($column)) { - return $column; - } - - $columnString = $column instanceof ExpressionContract - ? $this->grammar->getValue($column) - : $column; - - $separator = str_contains(strtolower($columnString), ' as ') ? ' as ' : '\.'; - - return last(preg_split('~'.$separator.'~i', $columnString)); - } - - /** - * Retrieve column values from rows represented as objects. - * - * @param array $queryResult - * @param string $column - * @param string $key - * @return \Illuminate\Support\Collection - */ - protected function pluckFromObjectColumn($queryResult, $column, $key) - { - $results = []; - - if (is_null($key)) { - foreach ($queryResult as $row) { - $results[] = $row->$column; - } - } else { - foreach ($queryResult as $row) { - $results[$row->$key] = $row->$column; - } - } - - return collect($results); - } - - /** - * Retrieve column values from rows represented as arrays. - * - * @param array $queryResult - * @param string $column - * @param string $key - * @return \Illuminate\Support\Collection - */ - protected function pluckFromArrayColumn($queryResult, $column, $key) - { - $results = []; - - if (is_null($key)) { - foreach ($queryResult as $row) { - $results[] = $row[$column]; - } - } else { - foreach ($queryResult as $row) { - $results[$row[$key]] = $row[$column]; - } - } - - return collect($results); - } - - /** - * Concatenate values of a given column as a string. - * - * @param string $column - * @param string $glue - * @return string - */ - public function implode($column, $glue = '') - { - return $this->pluck($column)->implode($glue); - } - - /** - * Determine if any rows exist for the current query. - * - * @return bool - */ - public function exists() - { - $this->applyBeforeQueryCallbacks(); - - $results = $this->connection->select( - $this->grammar->compileExists($this), $this->getBindings(), ! $this->useWritePdo - ); - - // If the results have rows, we will get the row and see if the exists column is a - // boolean true. If there are no results for this query we will return false as - // there are no rows for this query at all, and we can return that info here. - if (isset($results[0])) { - $results = (array) $results[0]; - - return (bool) $results['exists']; - } - - return false; - } - - /** - * Determine if no rows exist for the current query. - * - * @return bool - */ - public function doesntExist() - { - return ! $this->exists(); - } - - /** - * Execute the given callback if no rows exist for the current query. - * - * @param \Closure $callback - * @return mixed - */ - public function existsOr(Closure $callback) - { - return $this->exists() ? true : $callback(); - } - - /** - * Execute the given callback if rows exist for the current query. - * - * @param \Closure $callback - * @return mixed - */ - public function doesntExistOr(Closure $callback) - { - return $this->doesntExist() ? true : $callback(); - } - - /** - * Retrieve the "count" result of the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $columns - * @return int - */ - public function count($columns = '*') - { - return (int) $this->aggregate(__FUNCTION__, Arr::wrap($columns)); - } - - /** - * Retrieve the minimum value of a given column. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @return mixed - */ - public function min($column) - { - return $this->aggregate(__FUNCTION__, [$column]); - } - - /** - * Retrieve the maximum value of a given column. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @return mixed - */ - public function max($column) - { - return $this->aggregate(__FUNCTION__, [$column]); - } - - /** - * Retrieve the sum of the values of a given column. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @return mixed - */ - public function sum($column) - { - $result = $this->aggregate(__FUNCTION__, [$column]); - - return $result ?: 0; - } - - /** - * Retrieve the average of the values of a given column. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @return mixed - */ - public function avg($column) - { - return $this->aggregate(__FUNCTION__, [$column]); - } - - /** - * Alias for the "avg" method. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @return mixed - */ - public function average($column) - { - return $this->avg($column); - } - - /** - * Execute an aggregate function on the database. - * - * @param string $function - * @param array $columns - * @return mixed - */ - public function aggregate($function, $columns = ['*']) - { - $results = $this->cloneWithout($this->unions || $this->havings ? [] : ['columns']) - ->cloneWithoutBindings($this->unions || $this->havings ? [] : ['select']) - ->setAggregate($function, $columns) - ->get($columns); - - if (! $results->isEmpty()) { - return array_change_key_case((array) $results[0])['aggregate']; - } - } - - /** - * Execute a numeric aggregate function on the database. - * - * @param string $function - * @param array $columns - * @return float|int - */ - public function numericAggregate($function, $columns = ['*']) - { - $result = $this->aggregate($function, $columns); - - // If there is no result, we can obviously just return 0 here. Next, we will check - // if the result is an integer or float. If it is already one of these two data - // types we can just return the result as-is, otherwise we will convert this. - if (! $result) { - return 0; - } - - if (is_int($result) || is_float($result)) { - return $result; - } - - // If the result doesn't contain a decimal place, we will assume it is an int then - // cast it to one. When it does we will cast it to a float since it needs to be - // cast to the expected data type for the developers out of pure convenience. - return ! str_contains((string) $result, '.') - ? (int) $result : (float) $result; - } - - /** - * Set the aggregate property without running the query. - * - * @param string $function - * @param array $columns - * @return $this - */ - protected function setAggregate($function, $columns) - { - $this->aggregate = compact('function', 'columns'); - - if (empty($this->groups)) { - $this->orders = null; - - $this->bindings['order'] = []; - } - - return $this; - } - - /** - * Execute the given callback while selecting the given columns. - * - * After running the callback, the columns are reset to the original value. - * - * @param array $columns - * @param callable $callback - * @return mixed - */ - protected function onceWithColumns($columns, $callback) - { - $original = $this->columns; - - if (is_null($original)) { - $this->columns = $columns; - } - - $result = $callback(); - - $this->columns = $original; - - return $result; - } - - /** - * Insert new records into the database. - * - * @param array $values - * @return bool - */ - public function insert(array $values) - { - // Since every insert gets treated like a batch insert, we will make sure the - // bindings are structured in a way that is convenient when building these - // inserts statements by verifying these elements are actually an array. - if (empty($values)) { - return true; - } - - if (! is_array(reset($values))) { - $values = [$values]; - } - - // Here, we will sort the insert keys for every record so that each insert is - // in the same order for the record. We need to make sure this is the case - // so there are not any errors or problems when inserting these records. - else { - foreach ($values as $key => $value) { - ksort($value); - - $values[$key] = $value; - } - } - - $this->applyBeforeQueryCallbacks(); - - // Finally, we will run this query against the database connection and return - // the results. We will need to also flatten these bindings before running - // the query so they are all in one huge, flattened array for execution. - return $this->connection->insert( - $this->grammar->compileInsert($this, $values), - $this->cleanBindings(Arr::flatten($values, 1)) - ); - } - - /** - * Insert new records into the database while ignoring errors. - * - * @param array $values - * @return int - */ - public function insertOrIgnore(array $values) - { - if (empty($values)) { - return 0; - } - - if (! is_array(reset($values))) { - $values = [$values]; - } else { - foreach ($values as $key => $value) { - ksort($value); - - $values[$key] = $value; - } - } - - $this->applyBeforeQueryCallbacks(); - - return $this->connection->affectingStatement( - $this->grammar->compileInsertOrIgnore($this, $values), - $this->cleanBindings(Arr::flatten($values, 1)) - ); - } - - /** - * Insert a new record and get the value of the primary key. - * - * @param array $values - * @param string|null $sequence - * @return int - */ - public function insertGetId(array $values, $sequence = null) - { - $this->applyBeforeQueryCallbacks(); - - $sql = $this->grammar->compileInsertGetId($this, $values, $sequence); - - $values = $this->cleanBindings($values); - - return $this->processor->processInsertGetId($this, $sql, $values, $sequence); - } - - /** - * Insert new records into the table using a subquery. - * - * @param array $columns - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query - * @return int - */ - public function insertUsing(array $columns, $query) - { - $this->applyBeforeQueryCallbacks(); - - [$sql, $bindings] = $this->createSub($query); - - return $this->connection->affectingStatement( - $this->grammar->compileInsertUsing($this, $columns, $sql), - $this->cleanBindings($bindings) - ); - } - - /** - * Insert new records into the table using a subquery while ignoring errors. - * - * @param array $columns - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query - * @return int - */ - public function insertOrIgnoreUsing(array $columns, $query) - { - $this->applyBeforeQueryCallbacks(); - - [$sql, $bindings] = $this->createSub($query); - - return $this->connection->affectingStatement( - $this->grammar->compileInsertOrIgnoreUsing($this, $columns, $sql), - $this->cleanBindings($bindings) - ); - } - - /** - * Update records in the database. - * - * @param array $values - * @return int - */ - public function update(array $values) - { - $this->applyBeforeQueryCallbacks(); - - $sql = $this->grammar->compileUpdate($this, $values); - - return $this->connection->update($sql, $this->cleanBindings( - $this->grammar->prepareBindingsForUpdate($this->bindings, $values) - )); - } - - /** - * Update records in a PostgreSQL database using the update from syntax. - * - * @param array $values - * @return int - */ - public function updateFrom(array $values) - { - if (! method_exists($this->grammar, 'compileUpdateFrom')) { - throw new LogicException('This database engine does not support the updateFrom method.'); - } - - $this->applyBeforeQueryCallbacks(); - - $sql = $this->grammar->compileUpdateFrom($this, $values); - - return $this->connection->update($sql, $this->cleanBindings( - $this->grammar->prepareBindingsForUpdateFrom($this->bindings, $values) - )); - } - - /** - * Insert or update a record matching the attributes, and fill it with values. - * - * @param array $attributes - * @param array $values - * @return bool - */ - public function updateOrInsert(array $attributes, array $values = []) - { - if (! $this->where($attributes)->exists()) { - return $this->insert(array_merge($attributes, $values)); - } - - if (empty($values)) { - return true; - } - - return (bool) $this->limit(1)->update($values); - } - - /** - * Insert new records or update the existing ones. - * - * @param array $values - * @param array|string $uniqueBy - * @param array|null $update - * @return int - */ - public function upsert(array $values, $uniqueBy, $update = null) - { - if (empty($values)) { - return 0; - } elseif ($update === []) { - return (int) $this->insert($values); - } - - if (! is_array(reset($values))) { - $values = [$values]; - } else { - foreach ($values as $key => $value) { - ksort($value); - - $values[$key] = $value; - } - } - - if (is_null($update)) { - $update = array_keys(reset($values)); - } - - $this->applyBeforeQueryCallbacks(); - - $bindings = $this->cleanBindings(array_merge( - Arr::flatten($values, 1), - collect($update)->reject(function ($value, $key) { - return is_int($key); - })->all() - )); - - return $this->connection->affectingStatement( - $this->grammar->compileUpsert($this, $values, (array) $uniqueBy, $update), - $bindings - ); - } - - /** - * Increment a column's value by a given amount. - * - * @param string $column - * @param float|int $amount - * @param array $extra - * @return int - * - * @throws \InvalidArgumentException - */ - public function increment($column, $amount = 1, array $extra = []) - { - if (! is_numeric($amount)) { - throw new InvalidArgumentException('Non-numeric value passed to increment method.'); - } - - return $this->incrementEach([$column => $amount], $extra); - } - - /** - * Increment the given column's values by the given amounts. - * - * @param array $columns - * @param array $extra - * @return int - * - * @throws \InvalidArgumentException - */ - public function incrementEach(array $columns, array $extra = []) - { - foreach ($columns as $column => $amount) { - if (! is_numeric($amount)) { - throw new InvalidArgumentException("Non-numeric value passed as increment amount for column: '$column'."); - } elseif (! is_string($column)) { - throw new InvalidArgumentException('Non-associative array passed to incrementEach method.'); - } - - $columns[$column] = $this->raw("{$this->grammar->wrap($column)} + $amount"); - } - - return $this->update(array_merge($columns, $extra)); - } - - /** - * Decrement a column's value by a given amount. - * - * @param string $column - * @param float|int $amount - * @param array $extra - * @return int - * - * @throws \InvalidArgumentException - */ - public function decrement($column, $amount = 1, array $extra = []) - { - if (! is_numeric($amount)) { - throw new InvalidArgumentException('Non-numeric value passed to decrement method.'); - } - - return $this->decrementEach([$column => $amount], $extra); - } - - /** - * Decrement the given column's values by the given amounts. - * - * @param array $columns - * @param array $extra - * @return int - * - * @throws \InvalidArgumentException - */ - public function decrementEach(array $columns, array $extra = []) - { - foreach ($columns as $column => $amount) { - if (! is_numeric($amount)) { - throw new InvalidArgumentException("Non-numeric value passed as decrement amount for column: '$column'."); - } elseif (! is_string($column)) { - throw new InvalidArgumentException('Non-associative array passed to decrementEach method.'); - } - - $columns[$column] = $this->raw("{$this->grammar->wrap($column)} - $amount"); - } - - return $this->update(array_merge($columns, $extra)); - } - - /** - * Delete records from the database. - * - * @param mixed $id - * @return int - */ - public function delete($id = null) - { - // If an ID is passed to the method, we will set the where clause to check the - // ID to let developers to simply and quickly remove a single row from this - // database without manually specifying the "where" clauses on the query. - if (! is_null($id)) { - $this->where($this->from.'.id', '=', $id); - } - - $this->applyBeforeQueryCallbacks(); - - return $this->connection->delete( - $this->grammar->compileDelete($this), $this->cleanBindings( - $this->grammar->prepareBindingsForDelete($this->bindings) - ) - ); - } - - /** - * Run a truncate statement on the table. - * - * @return void - */ - public function truncate() - { - $this->applyBeforeQueryCallbacks(); - - foreach ($this->grammar->compileTruncate($this) as $sql => $bindings) { - $this->connection->statement($sql, $bindings); - } - } - - /** - * Get a new instance of the query builder. - * - * @return \Illuminate\Database\Query\Builder - */ - public function newQuery() - { - return new static($this->connection, $this->grammar, $this->processor); - } - - /** - * Create a new query instance for a sub-query. - * - * @return \Illuminate\Database\Query\Builder - */ - protected function forSubQuery() - { - return $this->newQuery(); - } - - /** - * Get all of the query builder's columns in a text-only array with all expressions evaluated. - * - * @return array - */ - public function getColumns() - { - return ! is_null($this->columns) - ? array_map(fn ($column) => $this->grammar->getValue($column), $this->columns) - : []; - } - - /** - * Create a raw database expression. - * - * @param mixed $value - * @return \Illuminate\Contracts\Database\Query\Expression - */ - public function raw($value) - { - return $this->connection->raw($value); - } - - /** - * Get the query builder instances that are used in the union of the query. - * - * @return \Illuminate\Support\Collection - */ - protected function getUnionBuilders() - { - return isset($this->unions) - ? collect($this->unions)->pluck('query') - : collect(); - } - - /** - * Get the current query value bindings in a flattened array. - * - * @return array - */ - public function getBindings() - { - return Arr::flatten($this->bindings); - } - - /** - * Get the raw array of bindings. - * - * @return array - */ - public function getRawBindings() - { - return $this->bindings; - } - - /** - * Set the bindings on the query builder. - * - * @param array $bindings - * @param string $type - * @return $this - * - * @throws \InvalidArgumentException - */ - public function setBindings(array $bindings, $type = 'where') - { - if (! array_key_exists($type, $this->bindings)) { - throw new InvalidArgumentException("Invalid binding type: {$type}."); - } - - $this->bindings[$type] = $bindings; - - return $this; - } - - /** - * Add a binding to the query. - * - * @param mixed $value - * @param string $type - * @return $this - * - * @throws \InvalidArgumentException - */ - public function addBinding($value, $type = 'where') - { - if (! array_key_exists($type, $this->bindings)) { - throw new InvalidArgumentException("Invalid binding type: {$type}."); - } - - if (is_array($value)) { - $this->bindings[$type] = array_values(array_map( - [$this, 'castBinding'], - array_merge($this->bindings[$type], $value), - )); - } else { - $this->bindings[$type][] = $this->castBinding($value); - } - - return $this; - } - - /** - * Cast the given binding value. - * - * @param mixed $value - * @return mixed - */ - public function castBinding($value) - { - return $value instanceof BackedEnum ? $value->value : $value; - } - - /** - * Merge an array of bindings into our bindings. - * - * @param \Illuminate\Database\Query\Builder $query - * @return $this - */ - public function mergeBindings(self $query) - { - $this->bindings = array_merge_recursive($this->bindings, $query->bindings); - - return $this; - } - - /** - * Remove all of the expressions from a list of bindings. - * - * @param array $bindings - * @return array - */ - public function cleanBindings(array $bindings) - { - return collect($bindings) - ->reject(function ($binding) { - return $binding instanceof ExpressionContract; - }) - ->map([$this, 'castBinding']) - ->values() - ->all(); - } - - /** - * Get a scalar type value from an unknown type of input. - * - * @param mixed $value - * @return mixed - */ - protected function flattenValue($value) - { - return is_array($value) ? head(Arr::flatten($value)) : $value; - } - - /** - * Get the default key name of the table. - * - * @return string - */ - protected function defaultKeyName() - { - return 'id'; - } - - /** - * Get the database connection instance. - * - * @return \Illuminate\Database\ConnectionInterface - */ - public function getConnection() - { - return $this->connection; - } - - /** - * Get the database query processor instance. - * - * @return \Illuminate\Database\Query\Processors\Processor - */ - public function getProcessor() - { - return $this->processor; - } - - /** - * Get the query grammar instance. - * - * @return \Illuminate\Database\Query\Grammars\Grammar - */ - public function getGrammar() - { - return $this->grammar; - } - - /** - * Use the "write" PDO connection when executing the query. - * - * @return $this - */ - public function useWritePdo() - { - $this->useWritePdo = true; - - return $this; - } - - /** - * Determine if the value is a query builder instance or a Closure. - * - * @param mixed $value - * @return bool - */ - protected function isQueryable($value) - { - return $value instanceof self || - $value instanceof EloquentBuilder || - $value instanceof Relation || - $value instanceof Closure; - } - - /** - * Clone the query. - * - * @return static - */ - public function clone() - { - return clone $this; - } - - /** - * Clone the query without the given properties. - * - * @param array $properties - * @return static - */ - public function cloneWithout(array $properties) - { - return tap($this->clone(), function ($clone) use ($properties) { - foreach ($properties as $property) { - $clone->{$property} = null; - } - }); - } - - /** - * Clone the query without the given bindings. - * - * @param array $except - * @return static - */ - public function cloneWithoutBindings(array $except) - { - return tap($this->clone(), function ($clone) use ($except) { - foreach ($except as $type) { - $clone->bindings[$type] = []; - } - }); - } - - /** - * Dump the current SQL and bindings. - * - * @return $this - */ - public function dump() - { - dump($this->toSql(), $this->getBindings()); - - return $this; - } - - /** - * Dump the raw current SQL with embedded bindings. - * - * @return $this - */ - public function dumpRawSql() - { - dump($this->toRawSql()); - - return $this; - } - - /** - * Die and dump the current SQL and bindings. - * - * @return never - */ - public function dd() - { - dd($this->toSql(), $this->getBindings()); - } - - /** - * Die and dump the current SQL with embedded bindings. - * - * @return never - */ - public function ddRawSql() - { - dd($this->toRawSql()); - } - - /** - * Handle dynamic method calls into the method. - * - * @param string $method - * @param array $parameters - * @return mixed - * - * @throws \BadMethodCallException - */ - public function __call($method, $parameters) - { - if (static::hasMacro($method)) { - return $this->macroCall($method, $parameters); - } - - if (str_starts_with($method, 'where')) { - return $this->dynamicWhere($method, $parameters); - } - - static::throwBadMethodCallException($method); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Query/JoinClause.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Query/JoinClause.php deleted file mode 100755 index 37a002c5..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Query/JoinClause.php +++ /dev/null @@ -1,146 +0,0 @@ -type = $type; - $this->table = $table; - $this->parentClass = get_class($parentQuery); - $this->parentGrammar = $parentQuery->getGrammar(); - $this->parentProcessor = $parentQuery->getProcessor(); - $this->parentConnection = $parentQuery->getConnection(); - - parent::__construct( - $this->parentConnection, $this->parentGrammar, $this->parentProcessor - ); - } - - /** - * Add an "on" clause to the join. - * - * On clauses can be chained, e.g. - * - * $join->on('contacts.user_id', '=', 'users.id') - * ->on('contacts.info_id', '=', 'info.id') - * - * will produce the following SQL: - * - * on `contacts`.`user_id` = `users`.`id` and `contacts`.`info_id` = `info`.`id` - * - * @param \Closure|\Illuminate\Contracts\Database\Query\Expression|string $first - * @param string|null $operator - * @param \Illuminate\Contracts\Database\Query\Expression|string|null $second - * @param string $boolean - * @return $this - * - * @throws \InvalidArgumentException - */ - public function on($first, $operator = null, $second = null, $boolean = 'and') - { - if ($first instanceof Closure) { - return $this->whereNested($first, $boolean); - } - - return $this->whereColumn($first, $operator, $second, $boolean); - } - - /** - * Add an "or on" clause to the join. - * - * @param \Closure|\Illuminate\Contracts\Database\Query\Expression|string $first - * @param string|null $operator - * @param \Illuminate\Contracts\Database\Query\Expression|string|null $second - * @return \Illuminate\Database\Query\JoinClause - */ - public function orOn($first, $operator = null, $second = null) - { - return $this->on($first, $operator, $second, 'or'); - } - - /** - * Get a new instance of the join clause builder. - * - * @return \Illuminate\Database\Query\JoinClause - */ - public function newQuery() - { - return new static($this->newParentQuery(), $this->type, $this->table); - } - - /** - * Create a new query instance for sub-query. - * - * @return \Illuminate\Database\Query\Builder - */ - protected function forSubQuery() - { - return $this->newParentQuery()->newQuery(); - } - - /** - * Create a new parent query instance. - * - * @return \Illuminate\Database\Query\Builder - */ - protected function newParentQuery() - { - $class = $this->parentClass; - - return new $class($this->parentConnection, $this->parentGrammar, $this->parentProcessor); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Query/Processors/MySqlProcessor.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Query/Processors/MySqlProcessor.php deleted file mode 100644 index cfbbdc3c..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Query/Processors/MySqlProcessor.php +++ /dev/null @@ -1,109 +0,0 @@ -column_name; - }, $results); - } - - /** - * Process an "insert get ID" query. - * - * @param \Illuminate\Database\Query\Builder $query - * @param string $sql - * @param array $values - * @param string|null $sequence - * @return int - */ - public function processInsertGetId(Builder $query, $sql, $values, $sequence = null) - { - $query->getConnection()->insert($sql, $values, $sequence); - - $id = $query->getConnection()->getLastInsertId(); - - return is_numeric($id) ? (int) $id : $id; - } - - /** - * Process the results of a columns query. - * - * @param array $results - * @return array - */ - public function processColumns($results) - { - return array_map(function ($result) { - $result = (object) $result; - - return [ - 'name' => $result->name, - 'type_name' => $result->type_name, - 'type' => $result->type, - 'collation' => $result->collation, - 'nullable' => $result->nullable === 'YES', - 'default' => $result->default, - 'auto_increment' => $result->extra === 'auto_increment', - 'comment' => $result->comment ?: null, - ]; - }, $results); - } - - /** - * Process the results of an indexes query. - * - * @param array $results - * @return array - */ - public function processIndexes($results) - { - return array_map(function ($result) { - $result = (object) $result; - - return [ - 'name' => $name = strtolower($result->name), - 'columns' => explode(',', $result->columns), - 'type' => strtolower($result->type), - 'unique' => (bool) $result->unique, - 'primary' => $name === 'primary', - ]; - }, $results); - } - - /** - * Process the results of a foreign keys query. - * - * @param array $results - * @return array - */ - public function processForeignKeys($results) - { - return array_map(function ($result) { - $result = (object) $result; - - return [ - 'name' => $result->name, - 'columns' => explode(',', $result->columns), - 'foreign_schema' => $result->foreign_schema, - 'foreign_table' => $result->foreign_table, - 'foreign_columns' => explode(',', $result->foreign_columns), - 'on_update' => strtolower($result->on_update), - 'on_delete' => strtolower($result->on_delete), - ]; - }, $results); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/SQLiteConnection.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/SQLiteConnection.php deleted file mode 100755 index 806e581d..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/SQLiteConnection.php +++ /dev/null @@ -1,144 +0,0 @@ -getForeignKeyConstraintsConfigurationValue(); - - if ($enableForeignKeyConstraints === null) { - return; - } - - $enableForeignKeyConstraints - ? $this->getSchemaBuilder()->enableForeignKeyConstraints() - : $this->getSchemaBuilder()->disableForeignKeyConstraints(); - } - - /** - * Escape a binary value for safe SQL embedding. - * - * @param string $value - * @return string - */ - protected function escapeBinary($value) - { - $hex = bin2hex($value); - - return "x'{$hex}'"; - } - - /** - * Determine if the given database exception was caused by a unique constraint violation. - * - * @param \Exception $exception - * @return bool - */ - protected function isUniqueConstraintError(Exception $exception) - { - return boolval(preg_match('#(column(s)? .* (is|are) not unique|UNIQUE constraint failed: .*)#i', $exception->getMessage())); - } - - /** - * Get the default query grammar instance. - * - * @return \Illuminate\Database\Query\Grammars\SQLiteGrammar - */ - protected function getDefaultQueryGrammar() - { - ($grammar = new QueryGrammar)->setConnection($this); - - return $this->withTablePrefix($grammar); - } - - /** - * Get a schema builder instance for the connection. - * - * @return \Illuminate\Database\Schema\SQLiteBuilder - */ - public function getSchemaBuilder() - { - if (is_null($this->schemaGrammar)) { - $this->useDefaultSchemaGrammar(); - } - - return new SQLiteBuilder($this); - } - - /** - * Get the default schema grammar instance. - * - * @return \Illuminate\Database\Schema\Grammars\SQLiteGrammar - */ - protected function getDefaultSchemaGrammar() - { - ($grammar = new SchemaGrammar)->setConnection($this); - - return $this->withTablePrefix($grammar); - } - - /** - * Get the schema state for the connection. - * - * @param \Illuminate\Filesystem\Filesystem|null $files - * @param callable|null $processFactory - * - * @throws \RuntimeException - */ - public function getSchemaState(?Filesystem $files = null, ?callable $processFactory = null) - { - return new SqliteSchemaState($this, $files, $processFactory); - } - - /** - * Get the default post processor instance. - * - * @return \Illuminate\Database\Query\Processors\SQLiteProcessor - */ - protected function getDefaultPostProcessor() - { - return new SQLiteProcessor; - } - - /** - * Get the Doctrine DBAL driver. - * - * @return \Illuminate\Database\PDO\SQLiteDriver - */ - protected function getDoctrineDriver() - { - return new SQLiteDriver; - } - - /** - * Get the database connection foreign key constraints configuration option. - * - * @return bool|null - */ - protected function getForeignKeyConstraintsConfigurationValue() - { - return $this->getConfig('foreign_key_constraints'); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Schema/Blueprint.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Schema/Blueprint.php deleted file mode 100755 index 2b796b09..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Schema/Blueprint.php +++ /dev/null @@ -1,1889 +0,0 @@ -table = $table; - $this->prefix = $prefix; - - if (! is_null($callback)) { - $callback($this); - } - } - - /** - * Execute the blueprint against the database. - * - * @param \Illuminate\Database\Connection $connection - * @param \Illuminate\Database\Schema\Grammars\Grammar $grammar - * @return void - */ - public function build(Connection $connection, Grammar $grammar) - { - foreach ($this->toSql($connection, $grammar) as $statement) { - $connection->statement($statement); - } - } - - /** - * Get the raw SQL statements for the blueprint. - * - * @param \Illuminate\Database\Connection $connection - * @param \Illuminate\Database\Schema\Grammars\Grammar $grammar - * @return array - */ - public function toSql(Connection $connection, Grammar $grammar) - { - $this->addImpliedCommands($connection, $grammar); - - $statements = []; - - // Each type of command has a corresponding compiler function on the schema - // grammar which is used to build the necessary SQL statements to build - // the blueprint element, so we'll just call that compilers function. - $this->ensureCommandsAreValid($connection); - - foreach ($this->commands as $command) { - if ($command->shouldBeSkipped) { - continue; - } - - $method = 'compile'.ucfirst($command->name); - - if (method_exists($grammar, $method) || $grammar::hasMacro($method)) { - if (! is_null($sql = $grammar->$method($this, $command, $connection))) { - $statements = array_merge($statements, (array) $sql); - } - } - } - - return $statements; - } - - /** - * Ensure the commands on the blueprint are valid for the connection type. - * - * @param \Illuminate\Database\Connection $connection - * @return void - * - * @throws \BadMethodCallException - */ - protected function ensureCommandsAreValid(Connection $connection) - { - if ($connection instanceof SQLiteConnection) { - if ($this->commandsNamed(['dropColumn', 'renameColumn'])->count() > 1 - && ! $connection->usingNativeSchemaOperations()) { - throw new BadMethodCallException( - "SQLite doesn't support multiple calls to dropColumn / renameColumn in a single modification." - ); - } - - if ($this->commandsNamed(['dropForeign'])->count() > 0) { - throw new BadMethodCallException( - "SQLite doesn't support dropping foreign keys (you would need to re-create the table)." - ); - } - } - } - - /** - * Get all of the commands matching the given names. - * - * @param array $names - * @return \Illuminate\Support\Collection - */ - protected function commandsNamed(array $names) - { - return collect($this->commands)->filter(function ($command) use ($names) { - return in_array($command->name, $names); - }); - } - - /** - * Add the commands that are implied by the blueprint's state. - * - * @param \Illuminate\Database\Connection $connection - * @param \Illuminate\Database\Schema\Grammars\Grammar $grammar - * @return void - */ - protected function addImpliedCommands(Connection $connection, Grammar $grammar) - { - if (count($this->getAddedColumns()) > 0 && ! $this->creating()) { - array_unshift($this->commands, $this->createCommand('add')); - } - - if (count($this->getChangedColumns()) > 0 && ! $this->creating()) { - array_unshift($this->commands, $this->createCommand('change')); - } - - $this->addFluentIndexes(); - - $this->addFluentCommands($connection, $grammar); - } - - /** - * Add the index commands fluently specified on columns. - * - * @return void - */ - protected function addFluentIndexes() - { - foreach ($this->columns as $column) { - foreach (['primary', 'unique', 'index', 'fulltext', 'fullText', 'spatialIndex'] as $index) { - // If the index has been specified on the given column, but is simply equal - // to "true" (boolean), no name has been specified for this index so the - // index method can be called without a name and it will generate one. - if ($column->{$index} === true) { - $this->{$index}($column->name); - $column->{$index} = null; - - continue 2; - } - - // If the index has been specified on the given column, but it equals false - // and the column is supposed to be changed, we will call the drop index - // method with an array of column to drop it by its conventional name. - elseif ($column->{$index} === false && $column->change) { - $this->{'drop'.ucfirst($index)}([$column->name]); - $column->{$index} = null; - - continue 2; - } - - // If the index has been specified on the given column, and it has a string - // value, we'll go ahead and call the index method and pass the name for - // the index since the developer specified the explicit name for this. - elseif (isset($column->{$index})) { - $this->{$index}($column->name, $column->{$index}); - $column->{$index} = null; - - continue 2; - } - } - } - } - - /** - * Add the fluent commands specified on any columns. - * - * @param \Illuminate\Database\Connection $connection - * @param \Illuminate\Database\Schema\Grammars\Grammar $grammar - * @return void - */ - public function addFluentCommands(Connection $connection, Grammar $grammar) - { - foreach ($this->columns as $column) { - if ($column->change && ! $connection->usingNativeSchemaOperations()) { - continue; - } - - foreach ($grammar->getFluentCommands() as $commandName) { - $this->addCommand($commandName, compact('column')); - } - } - } - - /** - * Determine if the blueprint has a create command. - * - * @return bool - */ - public function creating() - { - return collect($this->commands)->contains(function ($command) { - return $command->name === 'create'; - }); - } - - /** - * Indicate that the table needs to be created. - * - * @return \Illuminate\Support\Fluent - */ - public function create() - { - return $this->addCommand('create'); - } - - /** - * Specify the storage engine that should be used for the table. - * - * @param string $engine - * @return void - */ - public function engine($engine) - { - $this->engine = $engine; - } - - /** - * Specify that the InnoDB storage engine should be used for the table (MySQL only). - * - * @param string $engine - * @return void - */ - public function innoDb() - { - $this->engine('InnoDB'); - } - - /** - * Specify the character set that should be used for the table. - * - * @param string $charset - * @return void - */ - public function charset($charset) - { - $this->charset = $charset; - } - - /** - * Specify the collation that should be used for the table. - * - * @param string $collation - * @return void - */ - public function collation($collation) - { - $this->collation = $collation; - } - - /** - * Indicate that the table needs to be temporary. - * - * @return void - */ - public function temporary() - { - $this->temporary = true; - } - - /** - * Indicate that the table should be dropped. - * - * @return \Illuminate\Support\Fluent - */ - public function drop() - { - return $this->addCommand('drop'); - } - - /** - * Indicate that the table should be dropped if it exists. - * - * @return \Illuminate\Support\Fluent - */ - public function dropIfExists() - { - return $this->addCommand('dropIfExists'); - } - - /** - * Indicate that the given columns should be dropped. - * - * @param array|mixed $columns - * @return \Illuminate\Support\Fluent - */ - public function dropColumn($columns) - { - $columns = is_array($columns) ? $columns : func_get_args(); - - return $this->addCommand('dropColumn', compact('columns')); - } - - /** - * Indicate that the given columns should be renamed. - * - * @param string $from - * @param string $to - * @return \Illuminate\Support\Fluent - */ - public function renameColumn($from, $to) - { - return $this->addCommand('renameColumn', compact('from', 'to')); - } - - /** - * Indicate that the given primary key should be dropped. - * - * @param string|array|null $index - * @return \Illuminate\Support\Fluent - */ - public function dropPrimary($index = null) - { - return $this->dropIndexCommand('dropPrimary', 'primary', $index); - } - - /** - * Indicate that the given unique key should be dropped. - * - * @param string|array $index - * @return \Illuminate\Support\Fluent - */ - public function dropUnique($index) - { - return $this->dropIndexCommand('dropUnique', 'unique', $index); - } - - /** - * Indicate that the given index should be dropped. - * - * @param string|array $index - * @return \Illuminate\Support\Fluent - */ - public function dropIndex($index) - { - return $this->dropIndexCommand('dropIndex', 'index', $index); - } - - /** - * Indicate that the given fulltext index should be dropped. - * - * @param string|array $index - * @return \Illuminate\Support\Fluent - */ - public function dropFullText($index) - { - return $this->dropIndexCommand('dropFullText', 'fulltext', $index); - } - - /** - * Indicate that the given spatial index should be dropped. - * - * @param string|array $index - * @return \Illuminate\Support\Fluent - */ - public function dropSpatialIndex($index) - { - return $this->dropIndexCommand('dropSpatialIndex', 'spatialIndex', $index); - } - - /** - * Indicate that the given foreign key should be dropped. - * - * @param string|array $index - * @return \Illuminate\Support\Fluent - */ - public function dropForeign($index) - { - return $this->dropIndexCommand('dropForeign', 'foreign', $index); - } - - /** - * Indicate that the given column and foreign key should be dropped. - * - * @param string $column - * @return \Illuminate\Support\Fluent - */ - public function dropConstrainedForeignId($column) - { - $this->dropForeign([$column]); - - return $this->dropColumn($column); - } - - /** - * Indicate that the given foreign key should be dropped. - * - * @param \Illuminate\Database\Eloquent\Model|string $model - * @param string|null $column - * @return \Illuminate\Support\Fluent - */ - public function dropForeignIdFor($model, $column = null) - { - if (is_string($model)) { - $model = new $model; - } - - return $this->dropForeign([$column ?: $model->getForeignKey()]); - } - - /** - * Indicate that the given foreign key should be dropped. - * - * @param \Illuminate\Database\Eloquent\Model|string $model - * @param string|null $column - * @return \Illuminate\Support\Fluent - */ - public function dropConstrainedForeignIdFor($model, $column = null) - { - if (is_string($model)) { - $model = new $model; - } - - return $this->dropConstrainedForeignId($column ?: $model->getForeignKey()); - } - - /** - * Indicate that the given indexes should be renamed. - * - * @param string $from - * @param string $to - * @return \Illuminate\Support\Fluent - */ - public function renameIndex($from, $to) - { - return $this->addCommand('renameIndex', compact('from', 'to')); - } - - /** - * Indicate that the timestamp columns should be dropped. - * - * @return void - */ - public function dropTimestamps() - { - $this->dropColumn('created_at', 'updated_at'); - } - - /** - * Indicate that the timestamp columns should be dropped. - * - * @return void - */ - public function dropTimestampsTz() - { - $this->dropTimestamps(); - } - - /** - * Indicate that the soft delete column should be dropped. - * - * @param string $column - * @return void - */ - public function dropSoftDeletes($column = 'deleted_at') - { - $this->dropColumn($column); - } - - /** - * Indicate that the soft delete column should be dropped. - * - * @param string $column - * @return void - */ - public function dropSoftDeletesTz($column = 'deleted_at') - { - $this->dropSoftDeletes($column); - } - - /** - * Indicate that the remember token column should be dropped. - * - * @return void - */ - public function dropRememberToken() - { - $this->dropColumn('remember_token'); - } - - /** - * Indicate that the polymorphic columns should be dropped. - * - * @param string $name - * @param string|null $indexName - * @return void - */ - public function dropMorphs($name, $indexName = null) - { - $this->dropIndex($indexName ?: $this->createIndexName('index', ["{$name}_type", "{$name}_id"])); - - $this->dropColumn("{$name}_type", "{$name}_id"); - } - - /** - * Rename the table to a given name. - * - * @param string $to - * @return \Illuminate\Support\Fluent - */ - public function rename($to) - { - return $this->addCommand('rename', compact('to')); - } - - /** - * Specify the primary key(s) for the table. - * - * @param string|array $columns - * @param string|null $name - * @param string|null $algorithm - * @return \Illuminate\Database\Schema\IndexDefinition - */ - public function primary($columns, $name = null, $algorithm = null) - { - return $this->indexCommand('primary', $columns, $name, $algorithm); - } - - /** - * Specify a unique index for the table. - * - * @param string|array $columns - * @param string|null $name - * @param string|null $algorithm - * @return \Illuminate\Database\Schema\IndexDefinition - */ - public function unique($columns, $name = null, $algorithm = null) - { - return $this->indexCommand('unique', $columns, $name, $algorithm); - } - - /** - * Specify an index for the table. - * - * @param string|array $columns - * @param string|null $name - * @param string|null $algorithm - * @return \Illuminate\Database\Schema\IndexDefinition - */ - public function index($columns, $name = null, $algorithm = null) - { - return $this->indexCommand('index', $columns, $name, $algorithm); - } - - /** - * Specify an fulltext for the table. - * - * @param string|array $columns - * @param string|null $name - * @param string|null $algorithm - * @return \Illuminate\Database\Schema\IndexDefinition - */ - public function fullText($columns, $name = null, $algorithm = null) - { - return $this->indexCommand('fulltext', $columns, $name, $algorithm); - } - - /** - * Specify a spatial index for the table. - * - * @param string|array $columns - * @param string|null $name - * @return \Illuminate\Database\Schema\IndexDefinition - */ - public function spatialIndex($columns, $name = null) - { - return $this->indexCommand('spatialIndex', $columns, $name); - } - - /** - * Specify a raw index for the table. - * - * @param string $expression - * @param string $name - * @return \Illuminate\Database\Schema\IndexDefinition - */ - public function rawIndex($expression, $name) - { - return $this->index([new Expression($expression)], $name); - } - - /** - * Specify a foreign key for the table. - * - * @param string|array $columns - * @param string|null $name - * @return \Illuminate\Database\Schema\ForeignKeyDefinition - */ - public function foreign($columns, $name = null) - { - $command = new ForeignKeyDefinition( - $this->indexCommand('foreign', $columns, $name)->getAttributes() - ); - - $this->commands[count($this->commands) - 1] = $command; - - return $command; - } - - /** - * Create a new auto-incrementing big integer (8-byte) column on the table. - * - * @param string $column - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function id($column = 'id') - { - return $this->bigIncrements($column); - } - - /** - * Create a new auto-incrementing integer (4-byte) column on the table. - * - * @param string $column - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function increments($column) - { - return $this->unsignedInteger($column, true); - } - - /** - * Create a new auto-incrementing integer (4-byte) column on the table. - * - * @param string $column - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function integerIncrements($column) - { - return $this->unsignedInteger($column, true); - } - - /** - * Create a new auto-incrementing tiny integer (1-byte) column on the table. - * - * @param string $column - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function tinyIncrements($column) - { - return $this->unsignedTinyInteger($column, true); - } - - /** - * Create a new auto-incrementing small integer (2-byte) column on the table. - * - * @param string $column - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function smallIncrements($column) - { - return $this->unsignedSmallInteger($column, true); - } - - /** - * Create a new auto-incrementing medium integer (3-byte) column on the table. - * - * @param string $column - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function mediumIncrements($column) - { - return $this->unsignedMediumInteger($column, true); - } - - /** - * Create a new auto-incrementing big integer (8-byte) column on the table. - * - * @param string $column - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function bigIncrements($column) - { - return $this->unsignedBigInteger($column, true); - } - - /** - * Create a new char column on the table. - * - * @param string $column - * @param int|null $length - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function char($column, $length = null) - { - $length = ! is_null($length) ? $length : Builder::$defaultStringLength; - - return $this->addColumn('char', $column, compact('length')); - } - - /** - * Create a new string column on the table. - * - * @param string $column - * @param int|null $length - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function string($column, $length = null) - { - $length = $length ?: Builder::$defaultStringLength; - - return $this->addColumn('string', $column, compact('length')); - } - - /** - * Create a new tiny text column on the table. - * - * @param string $column - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function tinyText($column) - { - return $this->addColumn('tinyText', $column); - } - - /** - * Create a new text column on the table. - * - * @param string $column - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function text($column) - { - return $this->addColumn('text', $column); - } - - /** - * Create a new medium text column on the table. - * - * @param string $column - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function mediumText($column) - { - return $this->addColumn('mediumText', $column); - } - - /** - * Create a new long text column on the table. - * - * @param string $column - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function longText($column) - { - return $this->addColumn('longText', $column); - } - - /** - * Create a new integer (4-byte) column on the table. - * - * @param string $column - * @param bool $autoIncrement - * @param bool $unsigned - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function integer($column, $autoIncrement = false, $unsigned = false) - { - return $this->addColumn('integer', $column, compact('autoIncrement', 'unsigned')); - } - - /** - * Create a new tiny integer (1-byte) column on the table. - * - * @param string $column - * @param bool $autoIncrement - * @param bool $unsigned - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function tinyInteger($column, $autoIncrement = false, $unsigned = false) - { - return $this->addColumn('tinyInteger', $column, compact('autoIncrement', 'unsigned')); - } - - /** - * Create a new small integer (2-byte) column on the table. - * - * @param string $column - * @param bool $autoIncrement - * @param bool $unsigned - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function smallInteger($column, $autoIncrement = false, $unsigned = false) - { - return $this->addColumn('smallInteger', $column, compact('autoIncrement', 'unsigned')); - } - - /** - * Create a new medium integer (3-byte) column on the table. - * - * @param string $column - * @param bool $autoIncrement - * @param bool $unsigned - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function mediumInteger($column, $autoIncrement = false, $unsigned = false) - { - return $this->addColumn('mediumInteger', $column, compact('autoIncrement', 'unsigned')); - } - - /** - * Create a new big integer (8-byte) column on the table. - * - * @param string $column - * @param bool $autoIncrement - * @param bool $unsigned - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function bigInteger($column, $autoIncrement = false, $unsigned = false) - { - return $this->addColumn('bigInteger', $column, compact('autoIncrement', 'unsigned')); - } - - /** - * Create a new unsigned integer (4-byte) column on the table. - * - * @param string $column - * @param bool $autoIncrement - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function unsignedInteger($column, $autoIncrement = false) - { - return $this->integer($column, $autoIncrement, true); - } - - /** - * Create a new unsigned tiny integer (1-byte) column on the table. - * - * @param string $column - * @param bool $autoIncrement - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function unsignedTinyInteger($column, $autoIncrement = false) - { - return $this->tinyInteger($column, $autoIncrement, true); - } - - /** - * Create a new unsigned small integer (2-byte) column on the table. - * - * @param string $column - * @param bool $autoIncrement - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function unsignedSmallInteger($column, $autoIncrement = false) - { - return $this->smallInteger($column, $autoIncrement, true); - } - - /** - * Create a new unsigned medium integer (3-byte) column on the table. - * - * @param string $column - * @param bool $autoIncrement - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function unsignedMediumInteger($column, $autoIncrement = false) - { - return $this->mediumInteger($column, $autoIncrement, true); - } - - /** - * Create a new unsigned big integer (8-byte) column on the table. - * - * @param string $column - * @param bool $autoIncrement - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function unsignedBigInteger($column, $autoIncrement = false) - { - return $this->bigInteger($column, $autoIncrement, true); - } - - /** - * Create a new unsigned big integer (8-byte) column on the table. - * - * @param string $column - * @return \Illuminate\Database\Schema\ForeignIdColumnDefinition - */ - public function foreignId($column) - { - return $this->addColumnDefinition(new ForeignIdColumnDefinition($this, [ - 'type' => 'bigInteger', - 'name' => $column, - 'autoIncrement' => false, - 'unsigned' => true, - ])); - } - - /** - * Create a foreign ID column for the given model. - * - * @param \Illuminate\Database\Eloquent\Model|string $model - * @param string|null $column - * @return \Illuminate\Database\Schema\ForeignIdColumnDefinition - */ - public function foreignIdFor($model, $column = null) - { - if (is_string($model)) { - $model = new $model; - } - - $column = $column ?: $model->getForeignKey(); - - if ($model->getKeyType() === 'int' && $model->getIncrementing()) { - return $this->foreignId($column); - } - - $modelTraits = class_uses_recursive($model); - - if (in_array(HasUlids::class, $modelTraits, true)) { - return $this->foreignUlid($column); - } - - return $this->foreignUuid($column); - } - - /** - * Create a new float column on the table. - * - * @param string $column - * @param int $total - * @param int $places - * @param bool $unsigned - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function float($column, $total = 8, $places = 2, $unsigned = false) - { - return $this->addColumn('float', $column, compact('total', 'places', 'unsigned')); - } - - /** - * Create a new double column on the table. - * - * @param string $column - * @param int|null $total - * @param int|null $places - * @param bool $unsigned - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function double($column, $total = null, $places = null, $unsigned = false) - { - return $this->addColumn('double', $column, compact('total', 'places', 'unsigned')); - } - - /** - * Create a new decimal column on the table. - * - * @param string $column - * @param int $total - * @param int $places - * @param bool $unsigned - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function decimal($column, $total = 8, $places = 2, $unsigned = false) - { - return $this->addColumn('decimal', $column, compact('total', 'places', 'unsigned')); - } - - /** - * Create a new unsigned float column on the table. - * - * @param string $column - * @param int $total - * @param int $places - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function unsignedFloat($column, $total = 8, $places = 2) - { - return $this->float($column, $total, $places, true); - } - - /** - * Create a new unsigned double column on the table. - * - * @param string $column - * @param int $total - * @param int $places - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function unsignedDouble($column, $total = null, $places = null) - { - return $this->double($column, $total, $places, true); - } - - /** - * Create a new unsigned decimal column on the table. - * - * @param string $column - * @param int $total - * @param int $places - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function unsignedDecimal($column, $total = 8, $places = 2) - { - return $this->decimal($column, $total, $places, true); - } - - /** - * Create a new boolean column on the table. - * - * @param string $column - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function boolean($column) - { - return $this->addColumn('boolean', $column); - } - - /** - * Create a new enum column on the table. - * - * @param string $column - * @param array $allowed - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function enum($column, array $allowed) - { - return $this->addColumn('enum', $column, compact('allowed')); - } - - /** - * Create a new set column on the table. - * - * @param string $column - * @param array $allowed - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function set($column, array $allowed) - { - return $this->addColumn('set', $column, compact('allowed')); - } - - /** - * Create a new json column on the table. - * - * @param string $column - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function json($column) - { - return $this->addColumn('json', $column); - } - - /** - * Create a new jsonb column on the table. - * - * @param string $column - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function jsonb($column) - { - return $this->addColumn('jsonb', $column); - } - - /** - * Create a new date column on the table. - * - * @param string $column - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function date($column) - { - return $this->addColumn('date', $column); - } - - /** - * Create a new date-time column on the table. - * - * @param string $column - * @param int|null $precision - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function dateTime($column, $precision = 0) - { - return $this->addColumn('dateTime', $column, compact('precision')); - } - - /** - * Create a new date-time column (with time zone) on the table. - * - * @param string $column - * @param int|null $precision - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function dateTimeTz($column, $precision = 0) - { - return $this->addColumn('dateTimeTz', $column, compact('precision')); - } - - /** - * Create a new time column on the table. - * - * @param string $column - * @param int|null $precision - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function time($column, $precision = 0) - { - return $this->addColumn('time', $column, compact('precision')); - } - - /** - * Create a new time column (with time zone) on the table. - * - * @param string $column - * @param int|null $precision - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function timeTz($column, $precision = 0) - { - return $this->addColumn('timeTz', $column, compact('precision')); - } - - /** - * Create a new timestamp column on the table. - * - * @param string $column - * @param int|null $precision - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function timestamp($column, $precision = 0) - { - return $this->addColumn('timestamp', $column, compact('precision')); - } - - /** - * Create a new timestamp (with time zone) column on the table. - * - * @param string $column - * @param int|null $precision - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function timestampTz($column, $precision = 0) - { - return $this->addColumn('timestampTz', $column, compact('precision')); - } - - /** - * Add nullable creation and update timestamps to the table. - * - * @param int|null $precision - * @return void - */ - public function timestamps($precision = 0) - { - $this->timestamp('created_at', $precision)->nullable(); - - $this->timestamp('updated_at', $precision)->nullable(); - } - - /** - * Add nullable creation and update timestamps to the table. - * - * Alias for self::timestamps(). - * - * @param int|null $precision - * @return void - */ - public function nullableTimestamps($precision = 0) - { - $this->timestamps($precision); - } - - /** - * Add creation and update timestampTz columns to the table. - * - * @param int|null $precision - * @return void - */ - public function timestampsTz($precision = 0) - { - $this->timestampTz('created_at', $precision)->nullable(); - - $this->timestampTz('updated_at', $precision)->nullable(); - } - - /** - * Add creation and update datetime columns to the table. - * - * @param int|null $precision - * @return void - */ - public function datetimes($precision = 0) - { - $this->datetime('created_at', $precision)->nullable(); - - $this->datetime('updated_at', $precision)->nullable(); - } - - /** - * Add a "deleted at" timestamp for the table. - * - * @param string $column - * @param int|null $precision - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function softDeletes($column = 'deleted_at', $precision = 0) - { - return $this->timestamp($column, $precision)->nullable(); - } - - /** - * Add a "deleted at" timestampTz for the table. - * - * @param string $column - * @param int|null $precision - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function softDeletesTz($column = 'deleted_at', $precision = 0) - { - return $this->timestampTz($column, $precision)->nullable(); - } - - /** - * Add a "deleted at" datetime column to the table. - * - * @param string $column - * @param int|null $precision - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function softDeletesDatetime($column = 'deleted_at', $precision = 0) - { - return $this->datetime($column, $precision)->nullable(); - } - - /** - * Create a new year column on the table. - * - * @param string $column - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function year($column) - { - return $this->addColumn('year', $column); - } - - /** - * Create a new binary column on the table. - * - * @param string $column - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function binary($column) - { - return $this->addColumn('binary', $column); - } - - /** - * Create a new UUID column on the table. - * - * @param string $column - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function uuid($column = 'uuid') - { - return $this->addColumn('uuid', $column); - } - - /** - * Create a new UUID column on the table with a foreign key constraint. - * - * @param string $column - * @return \Illuminate\Database\Schema\ForeignIdColumnDefinition - */ - public function foreignUuid($column) - { - return $this->addColumnDefinition(new ForeignIdColumnDefinition($this, [ - 'type' => 'uuid', - 'name' => $column, - ])); - } - - /** - * Create a new ULID column on the table. - * - * @param string $column - * @param int|null $length - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function ulid($column = 'ulid', $length = 26) - { - return $this->char($column, $length); - } - - /** - * Create a new ULID column on the table with a foreign key constraint. - * - * @param string $column - * @param int|null $length - * @return \Illuminate\Database\Schema\ForeignIdColumnDefinition - */ - public function foreignUlid($column, $length = 26) - { - return $this->addColumnDefinition(new ForeignIdColumnDefinition($this, [ - 'type' => 'char', - 'name' => $column, - 'length' => $length, - ])); - } - - /** - * Create a new IP address column on the table. - * - * @param string $column - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function ipAddress($column = 'ip_address') - { - return $this->addColumn('ipAddress', $column); - } - - /** - * Create a new MAC address column on the table. - * - * @param string $column - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function macAddress($column = 'mac_address') - { - return $this->addColumn('macAddress', $column); - } - - /** - * Create a new geometry column on the table. - * - * @param string $column - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function geometry($column) - { - return $this->addColumn('geometry', $column); - } - - /** - * Create a new point column on the table. - * - * @param string $column - * @param int|null $srid - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function point($column, $srid = null) - { - return $this->addColumn('point', $column, compact('srid')); - } - - /** - * Create a new linestring column on the table. - * - * @param string $column - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function lineString($column) - { - return $this->addColumn('linestring', $column); - } - - /** - * Create a new polygon column on the table. - * - * @param string $column - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function polygon($column) - { - return $this->addColumn('polygon', $column); - } - - /** - * Create a new geometrycollection column on the table. - * - * @param string $column - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function geometryCollection($column) - { - return $this->addColumn('geometrycollection', $column); - } - - /** - * Create a new multipoint column on the table. - * - * @param string $column - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function multiPoint($column) - { - return $this->addColumn('multipoint', $column); - } - - /** - * Create a new multilinestring column on the table. - * - * @param string $column - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function multiLineString($column) - { - return $this->addColumn('multilinestring', $column); - } - - /** - * Create a new multipolygon column on the table. - * - * @param string $column - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function multiPolygon($column) - { - return $this->addColumn('multipolygon', $column); - } - - /** - * Create a new multipolygon column on the table. - * - * @param string $column - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function multiPolygonZ($column) - { - return $this->addColumn('multipolygonz', $column); - } - - /** - * Create a new generated, computed column on the table. - * - * @param string $column - * @param string $expression - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function computed($column, $expression) - { - return $this->addColumn('computed', $column, compact('expression')); - } - - /** - * Add the proper columns for a polymorphic table. - * - * @param string $name - * @param string|null $indexName - * @return void - */ - public function morphs($name, $indexName = null) - { - if (Builder::$defaultMorphKeyType === 'uuid') { - $this->uuidMorphs($name, $indexName); - } elseif (Builder::$defaultMorphKeyType === 'ulid') { - $this->ulidMorphs($name, $indexName); - } else { - $this->numericMorphs($name, $indexName); - } - } - - /** - * Add nullable columns for a polymorphic table. - * - * @param string $name - * @param string|null $indexName - * @return void - */ - public function nullableMorphs($name, $indexName = null) - { - if (Builder::$defaultMorphKeyType === 'uuid') { - $this->nullableUuidMorphs($name, $indexName); - } elseif (Builder::$defaultMorphKeyType === 'ulid') { - $this->nullableUlidMorphs($name, $indexName); - } else { - $this->nullableNumericMorphs($name, $indexName); - } - } - - /** - * Add the proper columns for a polymorphic table using numeric IDs (incremental). - * - * @param string $name - * @param string|null $indexName - * @return void - */ - public function numericMorphs($name, $indexName = null) - { - $this->string("{$name}_type"); - - $this->unsignedBigInteger("{$name}_id"); - - $this->index(["{$name}_type", "{$name}_id"], $indexName); - } - - /** - * Add nullable columns for a polymorphic table using numeric IDs (incremental). - * - * @param string $name - * @param string|null $indexName - * @return void - */ - public function nullableNumericMorphs($name, $indexName = null) - { - $this->string("{$name}_type")->nullable(); - - $this->unsignedBigInteger("{$name}_id")->nullable(); - - $this->index(["{$name}_type", "{$name}_id"], $indexName); - } - - /** - * Add the proper columns for a polymorphic table using UUIDs. - * - * @param string $name - * @param string|null $indexName - * @return void - */ - public function uuidMorphs($name, $indexName = null) - { - $this->string("{$name}_type"); - - $this->uuid("{$name}_id"); - - $this->index(["{$name}_type", "{$name}_id"], $indexName); - } - - /** - * Add nullable columns for a polymorphic table using UUIDs. - * - * @param string $name - * @param string|null $indexName - * @return void - */ - public function nullableUuidMorphs($name, $indexName = null) - { - $this->string("{$name}_type")->nullable(); - - $this->uuid("{$name}_id")->nullable(); - - $this->index(["{$name}_type", "{$name}_id"], $indexName); - } - - /** - * Add the proper columns for a polymorphic table using ULIDs. - * - * @param string $name - * @param string|null $indexName - * @return void - */ - public function ulidMorphs($name, $indexName = null) - { - $this->string("{$name}_type"); - - $this->ulid("{$name}_id"); - - $this->index(["{$name}_type", "{$name}_id"], $indexName); - } - - /** - * Add nullable columns for a polymorphic table using ULIDs. - * - * @param string $name - * @param string|null $indexName - * @return void - */ - public function nullableUlidMorphs($name, $indexName = null) - { - $this->string("{$name}_type")->nullable(); - - $this->ulid("{$name}_id")->nullable(); - - $this->index(["{$name}_type", "{$name}_id"], $indexName); - } - - /** - * Adds the `remember_token` column to the table. - * - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function rememberToken() - { - return $this->string('remember_token', 100)->nullable(); - } - - /** - * Add a comment to the table. - * - * @param string $comment - * @return \Illuminate\Support\Fluent - */ - public function comment($comment) - { - return $this->addCommand('tableComment', compact('comment')); - } - - /** - * Add a new index command to the blueprint. - * - * @param string $type - * @param string|array $columns - * @param string $index - * @param string|null $algorithm - * @return \Illuminate\Support\Fluent - */ - protected function indexCommand($type, $columns, $index, $algorithm = null) - { - $columns = (array) $columns; - - // If no name was specified for this index, we will create one using a basic - // convention of the table name, followed by the columns, followed by an - // index type, such as primary or index, which makes the index unique. - $index = $index ?: $this->createIndexName($type, $columns); - - return $this->addCommand( - $type, compact('index', 'columns', 'algorithm') - ); - } - - /** - * Create a new drop index command on the blueprint. - * - * @param string $command - * @param string $type - * @param string|array $index - * @return \Illuminate\Support\Fluent - */ - protected function dropIndexCommand($command, $type, $index) - { - $columns = []; - - // If the given "index" is actually an array of columns, the developer means - // to drop an index merely by specifying the columns involved without the - // conventional name, so we will build the index name from the columns. - if (is_array($index)) { - $index = $this->createIndexName($type, $columns = $index); - } - - return $this->indexCommand($command, $columns, $index); - } - - /** - * Create a default index name for the table. - * - * @param string $type - * @param array $columns - * @return string - */ - protected function createIndexName($type, array $columns) - { - $index = strtolower($this->prefix.$this->table.'_'.implode('_', $columns).'_'.$type); - - return str_replace(['-', '.'], '_', $index); - } - - /** - * Add a new column to the blueprint. - * - * @param string $type - * @param string $name - * @param array $parameters - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - public function addColumn($type, $name, array $parameters = []) - { - return $this->addColumnDefinition(new ColumnDefinition( - array_merge(compact('type', 'name'), $parameters) - )); - } - - /** - * Add a new column definition to the blueprint. - * - * @param \Illuminate\Database\Schema\ColumnDefinition $definition - * @return \Illuminate\Database\Schema\ColumnDefinition - */ - protected function addColumnDefinition($definition) - { - $this->columns[] = $definition; - - if ($this->after) { - $definition->after($this->after); - - $this->after = $definition->name; - } - - return $definition; - } - - /** - * Add the columns from the callback after the given column. - * - * @param string $column - * @param \Closure $callback - * @return void - */ - public function after($column, Closure $callback) - { - $this->after = $column; - - $callback($this); - - $this->after = null; - } - - /** - * Remove a column from the schema blueprint. - * - * @param string $name - * @return $this - */ - public function removeColumn($name) - { - $this->columns = array_values(array_filter($this->columns, function ($c) use ($name) { - return $c['name'] != $name; - })); - - return $this; - } - - /** - * Add a new command to the blueprint. - * - * @param string $name - * @param array $parameters - * @return \Illuminate\Support\Fluent - */ - protected function addCommand($name, array $parameters = []) - { - $this->commands[] = $command = $this->createCommand($name, $parameters); - - return $command; - } - - /** - * Create a new Fluent command. - * - * @param string $name - * @param array $parameters - * @return \Illuminate\Support\Fluent - */ - protected function createCommand($name, array $parameters = []) - { - return new Fluent(array_merge(compact('name'), $parameters)); - } - - /** - * Get the table the blueprint describes. - * - * @return string - */ - public function getTable() - { - return $this->table; - } - - /** - * Get the table prefix. - * - * @return string - */ - public function getPrefix() - { - return $this->prefix; - } - - /** - * Get the columns on the blueprint. - * - * @return \Illuminate\Database\Schema\ColumnDefinition[] - */ - public function getColumns() - { - return $this->columns; - } - - /** - * Get the commands on the blueprint. - * - * @return \Illuminate\Support\Fluent[] - */ - public function getCommands() - { - return $this->commands; - } - - /** - * Get the columns on the blueprint that should be added. - * - * @return \Illuminate\Database\Schema\ColumnDefinition[] - */ - public function getAddedColumns() - { - return array_filter($this->columns, function ($column) { - return ! $column->change; - }); - } - - /** - * Get the columns on the blueprint that should be changed. - * - * @return \Illuminate\Database\Schema\ColumnDefinition[] - */ - public function getChangedColumns() - { - return array_filter($this->columns, function ($column) { - return (bool) $column->change; - }); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php deleted file mode 100755 index 6c705c06..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php +++ /dev/null @@ -1,658 +0,0 @@ -connection = $connection; - $this->grammar = $connection->getSchemaGrammar(); - } - - /** - * Set the default string length for migrations. - * - * @param int $length - * @return void - */ - public static function defaultStringLength($length) - { - static::$defaultStringLength = $length; - } - - /** - * Set the default morph key type for migrations. - * - * @param string $type - * @return void - * - * @throws \InvalidArgumentException - */ - public static function defaultMorphKeyType(string $type) - { - if (! in_array($type, ['int', 'uuid', 'ulid'])) { - throw new InvalidArgumentException("Morph key type must be 'int', 'uuid', or 'ulid'."); - } - - static::$defaultMorphKeyType = $type; - } - - /** - * Set the default morph key type for migrations to UUIDs. - * - * @return void - */ - public static function morphUsingUuids() - { - return static::defaultMorphKeyType('uuid'); - } - - /** - * Set the default morph key type for migrations to ULIDs. - * - * @return void - */ - public static function morphUsingUlids() - { - return static::defaultMorphKeyType('ulid'); - } - - /** - * Attempt to use native schema operations for dropping, renaming, and modifying columns, even if Doctrine DBAL is installed. - * - * @param bool $value - * @return void - */ - public static function useNativeSchemaOperationsIfPossible(bool $value = true) - { - static::$alwaysUsesNativeSchemaOperationsIfPossible = $value; - } - - /** - * Create a database in the schema. - * - * @param string $name - * @return bool - * - * @throws \LogicException - */ - public function createDatabase($name) - { - throw new LogicException('This database driver does not support creating databases.'); - } - - /** - * Drop a database from the schema if the database exists. - * - * @param string $name - * @return bool - * - * @throws \LogicException - */ - public function dropDatabaseIfExists($name) - { - throw new LogicException('This database driver does not support dropping databases.'); - } - - /** - * Determine if the given table exists. - * - * @param string $table - * @return bool - */ - public function hasTable($table) - { - $table = $this->connection->getTablePrefix().$table; - - foreach ($this->getTables(false) as $value) { - if (strtolower($table) === strtolower($value['name'])) { - return true; - } - } - - return false; - } - - /** - * Determine if the given view exists. - * - * @param string $view - * @return bool - */ - public function hasView($view) - { - $view = $this->connection->getTablePrefix().$view; - - foreach ($this->getViews() as $value) { - if (strtolower($view) === strtolower($value['name'])) { - return true; - } - } - - return false; - } - - /** - * Get the tables that belong to the database. - * - * @return array - */ - public function getTables() - { - return $this->connection->getPostProcessor()->processTables( - $this->connection->selectFromWriteConnection($this->grammar->compileTables()) - ); - } - - /** - * Get the names of the tables that belong to the database. - * - * @return array - */ - public function getTableListing() - { - return array_column($this->getTables(), 'name'); - } - - /** - * Get the views that belong to the database. - * - * @return array - */ - public function getViews() - { - return $this->connection->getPostProcessor()->processViews( - $this->connection->selectFromWriteConnection($this->grammar->compileViews()) - ); - } - - /** - * Get the user-defined types that belong to the database. - * - * @return array - */ - public function getTypes() - { - throw new LogicException('This database driver does not support user-defined types.'); - } - - /** - * Get all of the table names for the database. - * - * @deprecated Will be removed in a future Laravel version. - * - * @return array - * - * @throws \LogicException - */ - public function getAllTables() - { - throw new LogicException('This database driver does not support getting all tables.'); - } - - /** - * Determine if the given table has a given column. - * - * @param string $table - * @param string $column - * @return bool - */ - public function hasColumn($table, $column) - { - return in_array( - strtolower($column), array_map('strtolower', $this->getColumnListing($table)) - ); - } - - /** - * Determine if the given table has given columns. - * - * @param string $table - * @param array $columns - * @return bool - */ - public function hasColumns($table, array $columns) - { - $tableColumns = array_map('strtolower', $this->getColumnListing($table)); - - foreach ($columns as $column) { - if (! in_array(strtolower($column), $tableColumns)) { - return false; - } - } - - return true; - } - - /** - * Execute a table builder callback if the given table has a given column. - * - * @param string $table - * @param string $column - * @param \Closure $callback - * @return void - */ - public function whenTableHasColumn(string $table, string $column, Closure $callback) - { - if ($this->hasColumn($table, $column)) { - $this->table($table, fn (Blueprint $table) => $callback($table)); - } - } - - /** - * Execute a table builder callback if the given table doesn't have a given column. - * - * @param string $table - * @param string $column - * @param \Closure $callback - * @return void - */ - public function whenTableDoesntHaveColumn(string $table, string $column, Closure $callback) - { - if (! $this->hasColumn($table, $column)) { - $this->table($table, fn (Blueprint $table) => $callback($table)); - } - } - - /** - * Get the data type for the given column name. - * - * @param string $table - * @param string $column - * @param bool $fullDefinition - * @return string - */ - public function getColumnType($table, $column, $fullDefinition = false) - { - if (! $this->connection->usingNativeSchemaOperations()) { - $table = $this->connection->getTablePrefix().$table; - - return $this->connection->getDoctrineColumn($table, $column)->getType()->getName(); - } - - $columns = $this->getColumns($table); - - foreach ($columns as $value) { - if (strtolower($value['name']) === $column) { - return $fullDefinition ? $value['type'] : $value['type_name']; - } - } - - throw new InvalidArgumentException("There is no column with name '$column' on table '$table'."); - } - - /** - * Get the column listing for a given table. - * - * @param string $table - * @return array - */ - public function getColumnListing($table) - { - return array_column($this->getColumns($table), 'name'); - } - - /** - * Get the columns for a given table. - * - * @param string $table - * @return array - */ - public function getColumns($table) - { - $table = $this->connection->getTablePrefix().$table; - - return $this->connection->getPostProcessor()->processColumns( - $this->connection->selectFromWriteConnection($this->grammar->compileColumns($table)) - ); - } - - /** - * Get the indexes for a given table. - * - * @param string $table - * @return array - */ - public function getIndexes($table) - { - $table = $this->connection->getTablePrefix().$table; - - return $this->connection->getPostProcessor()->processIndexes( - $this->connection->selectFromWriteConnection($this->grammar->compileIndexes($table)) - ); - } - - /** - * Get the names of the indexes for a given table. - * - * @param string $table - * @return array - */ - public function getIndexListing($table) - { - return array_column($this->getIndexes($table), 'name'); - } - - /** - * Determine if the given table has a given index. - * - * @param string $table - * @param string|array $index - * @param string|null $type - * @return bool - */ - public function hasIndex($table, $index, $type = null) - { - $type = is_null($type) ? $type : strtolower($type); - - foreach ($this->getIndexes($table) as $value) { - $typeMatches = is_null($type) - || ($type === 'primary' && $value['primary']) - || ($type === 'unique' && $value['unique']) - || $type === $value['type']; - - if (($value['name'] === $index || $value['columns'] === $index) && $typeMatches) { - return true; - } - } - - return false; - } - - /** - * Get the foreign keys for a given table. - * - * @param string $table - * @return array - */ - public function getForeignKeys($table) - { - $table = $this->connection->getTablePrefix().$table; - - return $this->connection->getPostProcessor()->processForeignKeys( - $this->connection->selectFromWriteConnection($this->grammar->compileForeignKeys($table)) - ); - } - - /** - * Modify a table on the schema. - * - * @param string $table - * @param \Closure $callback - * @return void - */ - public function table($table, Closure $callback) - { - $this->build($this->createBlueprint($table, $callback)); - } - - /** - * Create a new table on the schema. - * - * @param string $table - * @param \Closure $callback - * @return void - */ - public function create($table, Closure $callback) - { - $this->build(tap($this->createBlueprint($table), function ($blueprint) use ($callback) { - $blueprint->create(); - - $callback($blueprint); - })); - } - - /** - * Drop a table from the schema. - * - * @param string $table - * @return void - */ - public function drop($table) - { - $this->build(tap($this->createBlueprint($table), function ($blueprint) { - $blueprint->drop(); - })); - } - - /** - * Drop a table from the schema if it exists. - * - * @param string $table - * @return void - */ - public function dropIfExists($table) - { - $this->build(tap($this->createBlueprint($table), function ($blueprint) { - $blueprint->dropIfExists(); - })); - } - - /** - * Drop columns from a table schema. - * - * @param string $table - * @param string|array $columns - * @return void - */ - public function dropColumns($table, $columns) - { - $this->table($table, function (Blueprint $blueprint) use ($columns) { - $blueprint->dropColumn($columns); - }); - } - - /** - * Drop all tables from the database. - * - * @return void - * - * @throws \LogicException - */ - public function dropAllTables() - { - throw new LogicException('This database driver does not support dropping all tables.'); - } - - /** - * Drop all views from the database. - * - * @return void - * - * @throws \LogicException - */ - public function dropAllViews() - { - throw new LogicException('This database driver does not support dropping all views.'); - } - - /** - * Drop all types from the database. - * - * @return void - * - * @throws \LogicException - */ - public function dropAllTypes() - { - throw new LogicException('This database driver does not support dropping all types.'); - } - - /** - * Rename a table on the schema. - * - * @param string $from - * @param string $to - * @return void - */ - public function rename($from, $to) - { - $this->build(tap($this->createBlueprint($from), function ($blueprint) use ($to) { - $blueprint->rename($to); - })); - } - - /** - * Enable foreign key constraints. - * - * @return bool - */ - public function enableForeignKeyConstraints() - { - return $this->connection->statement( - $this->grammar->compileEnableForeignKeyConstraints() - ); - } - - /** - * Disable foreign key constraints. - * - * @return bool - */ - public function disableForeignKeyConstraints() - { - return $this->connection->statement( - $this->grammar->compileDisableForeignKeyConstraints() - ); - } - - /** - * Disable foreign key constraints during the execution of a callback. - * - * @param \Closure $callback - * @return mixed - */ - public function withoutForeignKeyConstraints(Closure $callback) - { - $this->disableForeignKeyConstraints(); - - try { - return $callback(); - } finally { - $this->enableForeignKeyConstraints(); - } - } - - /** - * Execute the blueprint to build / modify the table. - * - * @param \Illuminate\Database\Schema\Blueprint $blueprint - * @return void - */ - protected function build(Blueprint $blueprint) - { - $blueprint->build($this->connection, $this->grammar); - } - - /** - * Create a new command set with a Closure. - * - * @param string $table - * @param \Closure|null $callback - * @return \Illuminate\Database\Schema\Blueprint - */ - protected function createBlueprint($table, ?Closure $callback = null) - { - $prefix = $this->connection->getConfig('prefix_indexes') - ? $this->connection->getConfig('prefix') - : ''; - - if (isset($this->resolver)) { - return call_user_func($this->resolver, $table, $callback, $prefix); - } - - return Container::getInstance()->make(Blueprint::class, compact('table', 'callback', 'prefix')); - } - - /** - * Get the database connection instance. - * - * @return \Illuminate\Database\Connection - */ - public function getConnection() - { - return $this->connection; - } - - /** - * Set the database connection instance. - * - * @param \Illuminate\Database\Connection $connection - * @return $this - */ - public function setConnection(Connection $connection) - { - $this->connection = $connection; - - return $this; - } - - /** - * Set the Schema Blueprint resolver callback. - * - * @param \Closure $resolver - * @return void - */ - public function blueprintResolver(Closure $resolver) - { - $this->resolver = $resolver; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Schema/Grammars/SQLiteGrammar.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Schema/Grammars/SQLiteGrammar.php deleted file mode 100755 index d3dfdebb..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Schema/Grammars/SQLiteGrammar.php +++ /dev/null @@ -1,1106 +0,0 @@ -wrap(str_replace('.', '__', $table)).')'; - } - - /** - * Compile the query to determine the columns. - * - * @param string $table - * @return string - */ - public function compileColumns($table) - { - return sprintf( - 'select name, type, not "notnull" as "nullable", dflt_value as "default", pk as "primary" ' - .'from pragma_table_info(%s) order by cid asc', - $this->quoteString(str_replace('.', '__', $table)) - ); - } - - /** - * Compile the query to determine the indexes. - * - * @param string $table - * @return string - */ - public function compileIndexes($table) - { - return sprintf( - 'select \'primary\' as name, group_concat(col) as columns, 1 as "unique", 1 as "primary" ' - .'from (select name as col from pragma_table_info(%s) where pk > 0 order by pk, cid) group by name ' - .'union select name, group_concat(col) as columns, "unique", origin = \'pk\' as "primary" ' - .'from (select il.*, ii.name as col from pragma_index_list(%s) il, pragma_index_info(il.name) ii order by il.seq, ii.seqno) ' - .'group by name, "unique", "primary"', - $table = $this->quoteString(str_replace('.', '__', $table)), - $table - ); - } - - /** - * Compile the query to determine the foreign keys. - * - * @param string $table - * @return string - */ - public function compileForeignKeys($table) - { - return sprintf( - 'select group_concat("from") as columns, "table" as foreign_table, ' - .'group_concat("to") as foreign_columns, on_update, on_delete ' - .'from (select * from pragma_foreign_key_list(%s) order by id desc, seq) ' - .'group by id, "table", on_update, on_delete', - $this->quoteString(str_replace('.', '__', $table)) - ); - } - - /** - * Compile a create table command. - * - * @param \Illuminate\Database\Schema\Blueprint $blueprint - * @param \Illuminate\Support\Fluent $command - * @return string - */ - public function compileCreate(Blueprint $blueprint, Fluent $command) - { - return sprintf('%s table %s (%s%s%s)', - $blueprint->temporary ? 'create temporary' : 'create', - $this->wrapTable($blueprint), - implode(', ', $this->getColumns($blueprint)), - (string) $this->addForeignKeys($blueprint), - (string) $this->addPrimaryKeys($blueprint) - ); - } - - /** - * Get the foreign key syntax for a table creation statement. - * - * @param \Illuminate\Database\Schema\Blueprint $blueprint - * @return string|null - */ - protected function addForeignKeys(Blueprint $blueprint) - { - $foreigns = $this->getCommandsByName($blueprint, 'foreign'); - - return collect($foreigns)->reduce(function ($sql, $foreign) { - // Once we have all the foreign key commands for the table creation statement - // we'll loop through each of them and add them to the create table SQL we - // are building, since SQLite needs foreign keys on the tables creation. - $sql .= $this->getForeignKey($foreign); - - if (! is_null($foreign->onDelete)) { - $sql .= " on delete {$foreign->onDelete}"; - } - - // If this foreign key specifies the action to be taken on update we will add - // that to the statement here. We'll append it to this SQL and then return - // the SQL so we can keep adding any other foreign constraints onto this. - if (! is_null($foreign->onUpdate)) { - $sql .= " on update {$foreign->onUpdate}"; - } - - return $sql; - }, ''); - } - - /** - * Get the SQL for the foreign key. - * - * @param \Illuminate\Support\Fluent $foreign - * @return string - */ - protected function getForeignKey($foreign) - { - // We need to columnize the columns that the foreign key is being defined for - // so that it is a properly formatted list. Once we have done this, we can - // return the foreign key SQL declaration to the calling method for use. - return sprintf(', foreign key(%s) references %s(%s)', - $this->columnize($foreign->columns), - $this->wrapTable($foreign->on), - $this->columnize((array) $foreign->references) - ); - } - - /** - * Get the primary key syntax for a table creation statement. - * - * @param \Illuminate\Database\Schema\Blueprint $blueprint - * @return string|null - */ - protected function addPrimaryKeys(Blueprint $blueprint) - { - if (! is_null($primary = $this->getCommandByName($blueprint, 'primary'))) { - return ", primary key ({$this->columnize($primary->columns)})"; - } - } - - /** - * Compile alter table commands for adding columns. - * - * @param \Illuminate\Database\Schema\Blueprint $blueprint - * @param \Illuminate\Support\Fluent $command - * @return array - */ - public function compileAdd(Blueprint $blueprint, Fluent $command) - { - $columns = $this->prefixArray('add column', $this->getColumns($blueprint)); - - return collect($columns)->reject(function ($column) { - return preg_match('/as \(.*\) stored/', $column) > 0; - })->map(function ($column) use ($blueprint) { - return 'alter table '.$this->wrapTable($blueprint).' '.$column; - })->all(); - } - - /** - * Compile a rename column command. - * - * @param \Illuminate\Database\Schema\Blueprint $blueprint - * @param \Illuminate\Support\Fluent $command - * @param \Illuminate\Database\Connection $connection - * @return array|string - */ - public function compileRenameColumn(Blueprint $blueprint, Fluent $command, Connection $connection) - { - return $connection->usingNativeSchemaOperations() - ? sprintf('alter table %s rename column %s to %s', - $this->wrapTable($blueprint), - $this->wrap($command->from), - $this->wrap($command->to) - ) - : parent::compileRenameColumn($blueprint, $command, $connection); - } - - /** - * Compile a unique key command. - * - * @param \Illuminate\Database\Schema\Blueprint $blueprint - * @param \Illuminate\Support\Fluent $command - * @return string - */ - public function compileUnique(Blueprint $blueprint, Fluent $command) - { - return sprintf('create unique index %s on %s (%s)', - $this->wrap($command->index), - $this->wrapTable($blueprint), - $this->columnize($command->columns) - ); - } - - /** - * Compile a plain index key command. - * - * @param \Illuminate\Database\Schema\Blueprint $blueprint - * @param \Illuminate\Support\Fluent $command - * @return string - */ - public function compileIndex(Blueprint $blueprint, Fluent $command) - { - return sprintf('create index %s on %s (%s)', - $this->wrap($command->index), - $this->wrapTable($blueprint), - $this->columnize($command->columns) - ); - } - - /** - * Compile a spatial index key command. - * - * @param \Illuminate\Database\Schema\Blueprint $blueprint - * @param \Illuminate\Support\Fluent $command - * @return void - * - * @throws \RuntimeException - */ - public function compileSpatialIndex(Blueprint $blueprint, Fluent $command) - { - throw new RuntimeException('The database driver in use does not support spatial indexes.'); - } - - /** - * Compile a foreign key command. - * - * @param \Illuminate\Database\Schema\Blueprint $blueprint - * @param \Illuminate\Support\Fluent $command - * @return string|null - */ - public function compileForeign(Blueprint $blueprint, Fluent $command) - { - // Handled on table creation... - } - - /** - * Compile a drop table command. - * - * @param \Illuminate\Database\Schema\Blueprint $blueprint - * @param \Illuminate\Support\Fluent $command - * @return string - */ - public function compileDrop(Blueprint $blueprint, Fluent $command) - { - return 'drop table '.$this->wrapTable($blueprint); - } - - /** - * Compile a drop table (if exists) command. - * - * @param \Illuminate\Database\Schema\Blueprint $blueprint - * @param \Illuminate\Support\Fluent $command - * @return string - */ - public function compileDropIfExists(Blueprint $blueprint, Fluent $command) - { - return 'drop table if exists '.$this->wrapTable($blueprint); - } - - /** - * Compile the SQL needed to drop all tables. - * - * @return string - */ - public function compileDropAllTables() - { - return "delete from sqlite_master where type in ('table', 'index', 'trigger')"; - } - - /** - * Compile the SQL needed to drop all views. - * - * @return string - */ - public function compileDropAllViews() - { - return "delete from sqlite_master where type in ('view')"; - } - - /** - * Compile the SQL needed to rebuild the database. - * - * @return string - */ - public function compileRebuild() - { - return 'vacuum'; - } - - /** - * Compile a drop column command. - * - * @param \Illuminate\Database\Schema\Blueprint $blueprint - * @param \Illuminate\Support\Fluent $command - * @param \Illuminate\Database\Connection $connection - * @return array - */ - public function compileDropColumn(Blueprint $blueprint, Fluent $command, Connection $connection) - { - if ($connection->usingNativeSchemaOperations()) { - $table = $this->wrapTable($blueprint); - - $columns = $this->prefixArray('drop column', $this->wrapArray($command->columns)); - - return collect($columns)->map(fn ($column) => 'alter table '.$table.' '.$column - )->all(); - } else { - $tableDiff = $this->getDoctrineTableDiff( - $blueprint, $schema = $connection->getDoctrineSchemaManager() - ); - - foreach ($command->columns as $name) { - $tableDiff->removedColumns[$name] = $connection->getDoctrineColumn( - $this->getTablePrefix().$blueprint->getTable(), $name - ); - } - - return (array) $schema->getDatabasePlatform()->getAlterTableSQL($tableDiff); - } - } - - /** - * Compile a drop unique key command. - * - * @param \Illuminate\Database\Schema\Blueprint $blueprint - * @param \Illuminate\Support\Fluent $command - * @return string - */ - public function compileDropUnique(Blueprint $blueprint, Fluent $command) - { - $index = $this->wrap($command->index); - - return "drop index {$index}"; - } - - /** - * Compile a drop index command. - * - * @param \Illuminate\Database\Schema\Blueprint $blueprint - * @param \Illuminate\Support\Fluent $command - * @return string - */ - public function compileDropIndex(Blueprint $blueprint, Fluent $command) - { - $index = $this->wrap($command->index); - - return "drop index {$index}"; - } - - /** - * Compile a drop spatial index command. - * - * @param \Illuminate\Database\Schema\Blueprint $blueprint - * @param \Illuminate\Support\Fluent $command - * @return void - * - * @throws \RuntimeException - */ - public function compileDropSpatialIndex(Blueprint $blueprint, Fluent $command) - { - throw new RuntimeException('The database driver in use does not support spatial indexes.'); - } - - /** - * Compile a rename table command. - * - * @param \Illuminate\Database\Schema\Blueprint $blueprint - * @param \Illuminate\Support\Fluent $command - * @return string - */ - public function compileRename(Blueprint $blueprint, Fluent $command) - { - $from = $this->wrapTable($blueprint); - - return "alter table {$from} rename to ".$this->wrapTable($command->to); - } - - /** - * Compile a rename index command. - * - * @param \Illuminate\Database\Schema\Blueprint $blueprint - * @param \Illuminate\Support\Fluent $command - * @param \Illuminate\Database\Connection $connection - * @return array - * - * @throws \RuntimeException - */ - public function compileRenameIndex(Blueprint $blueprint, Fluent $command, Connection $connection) - { - $schemaManager = $connection->getDoctrineSchemaManager(); - - $indexes = $schemaManager->listTableIndexes($this->getTablePrefix().$blueprint->getTable()); - - $index = Arr::get($indexes, $command->from); - - if (! $index) { - throw new RuntimeException("Index [{$command->from}] does not exist."); - } - - $newIndex = new Index( - $command->to, $index->getColumns(), $index->isUnique(), - $index->isPrimary(), $index->getFlags(), $index->getOptions() - ); - - $platform = $connection->getDoctrineConnection()->getDatabasePlatform(); - - return [ - $platform->getDropIndexSQL($command->from, $this->getTablePrefix().$blueprint->getTable()), - $platform->getCreateIndexSQL($newIndex, $this->getTablePrefix().$blueprint->getTable()), - ]; - } - - /** - * Compile the command to enable foreign key constraints. - * - * @return string - */ - public function compileEnableForeignKeyConstraints() - { - return 'PRAGMA foreign_keys = ON;'; - } - - /** - * Compile the command to disable foreign key constraints. - * - * @return string - */ - public function compileDisableForeignKeyConstraints() - { - return 'PRAGMA foreign_keys = OFF;'; - } - - /** - * Compile the SQL needed to enable a writable schema. - * - * @return string - */ - public function compileEnableWriteableSchema() - { - return 'PRAGMA writable_schema = 1;'; - } - - /** - * Compile the SQL needed to disable a writable schema. - * - * @return string - */ - public function compileDisableWriteableSchema() - { - return 'PRAGMA writable_schema = 0;'; - } - - /** - * Create the column definition for a char type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - protected function typeChar(Fluent $column) - { - return 'varchar'; - } - - /** - * Create the column definition for a string type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - protected function typeString(Fluent $column) - { - return 'varchar'; - } - - /** - * Create the column definition for a tiny text type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - protected function typeTinyText(Fluent $column) - { - return 'text'; - } - - /** - * Create the column definition for a text type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - protected function typeText(Fluent $column) - { - return 'text'; - } - - /** - * Create the column definition for a medium text type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - protected function typeMediumText(Fluent $column) - { - return 'text'; - } - - /** - * Create the column definition for a long text type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - protected function typeLongText(Fluent $column) - { - return 'text'; - } - - /** - * Create the column definition for an integer type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - protected function typeInteger(Fluent $column) - { - return 'integer'; - } - - /** - * Create the column definition for a big integer type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - protected function typeBigInteger(Fluent $column) - { - return 'integer'; - } - - /** - * Create the column definition for a medium integer type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - protected function typeMediumInteger(Fluent $column) - { - return 'integer'; - } - - /** - * Create the column definition for a tiny integer type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - protected function typeTinyInteger(Fluent $column) - { - return 'integer'; - } - - /** - * Create the column definition for a small integer type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - protected function typeSmallInteger(Fluent $column) - { - return 'integer'; - } - - /** - * Create the column definition for a float type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - protected function typeFloat(Fluent $column) - { - return 'float'; - } - - /** - * Create the column definition for a double type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - protected function typeDouble(Fluent $column) - { - return 'float'; - } - - /** - * Create the column definition for a decimal type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - protected function typeDecimal(Fluent $column) - { - return 'numeric'; - } - - /** - * Create the column definition for a boolean type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - protected function typeBoolean(Fluent $column) - { - return 'tinyint(1)'; - } - - /** - * Create the column definition for an enumeration type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - protected function typeEnum(Fluent $column) - { - return sprintf( - 'varchar check ("%s" in (%s))', - $column->name, - $this->quoteString($column->allowed) - ); - } - - /** - * Create the column definition for a json type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - protected function typeJson(Fluent $column) - { - return 'text'; - } - - /** - * Create the column definition for a jsonb type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - protected function typeJsonb(Fluent $column) - { - return 'text'; - } - - /** - * Create the column definition for a date type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - protected function typeDate(Fluent $column) - { - return 'date'; - } - - /** - * Create the column definition for a date-time type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - protected function typeDateTime(Fluent $column) - { - return $this->typeTimestamp($column); - } - - /** - * Create the column definition for a date-time (with time zone) type. - * - * Note: "SQLite does not have a storage class set aside for storing dates and/or times." - * - * @link https://www.sqlite.org/datatype3.html - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - protected function typeDateTimeTz(Fluent $column) - { - return $this->typeDateTime($column); - } - - /** - * Create the column definition for a time type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - protected function typeTime(Fluent $column) - { - return 'time'; - } - - /** - * Create the column definition for a time (with time zone) type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - protected function typeTimeTz(Fluent $column) - { - return $this->typeTime($column); - } - - /** - * Create the column definition for a timestamp type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - protected function typeTimestamp(Fluent $column) - { - if ($column->useCurrent) { - $column->default(new Expression('CURRENT_TIMESTAMP')); - } - - return 'datetime'; - } - - /** - * Create the column definition for a timestamp (with time zone) type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - protected function typeTimestampTz(Fluent $column) - { - return $this->typeTimestamp($column); - } - - /** - * Create the column definition for a year type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - protected function typeYear(Fluent $column) - { - return $this->typeInteger($column); - } - - /** - * Create the column definition for a binary type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - protected function typeBinary(Fluent $column) - { - return 'blob'; - } - - /** - * Create the column definition for a uuid type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - protected function typeUuid(Fluent $column) - { - return 'varchar'; - } - - /** - * Create the column definition for an IP address type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - protected function typeIpAddress(Fluent $column) - { - return 'varchar'; - } - - /** - * Create the column definition for a MAC address type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - protected function typeMacAddress(Fluent $column) - { - return 'varchar'; - } - - /** - * Create the column definition for a spatial Geometry type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - public function typeGeometry(Fluent $column) - { - return 'geometry'; - } - - /** - * Create the column definition for a spatial Point type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - public function typePoint(Fluent $column) - { - return 'point'; - } - - /** - * Create the column definition for a spatial LineString type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - public function typeLineString(Fluent $column) - { - return 'linestring'; - } - - /** - * Create the column definition for a spatial Polygon type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - public function typePolygon(Fluent $column) - { - return 'polygon'; - } - - /** - * Create the column definition for a spatial GeometryCollection type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - public function typeGeometryCollection(Fluent $column) - { - return 'geometrycollection'; - } - - /** - * Create the column definition for a spatial MultiPoint type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - public function typeMultiPoint(Fluent $column) - { - return 'multipoint'; - } - - /** - * Create the column definition for a spatial MultiLineString type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - public function typeMultiLineString(Fluent $column) - { - return 'multilinestring'; - } - - /** - * Create the column definition for a spatial MultiPolygon type. - * - * @param \Illuminate\Support\Fluent $column - * @return string - */ - public function typeMultiPolygon(Fluent $column) - { - return 'multipolygon'; - } - - /** - * Create the column definition for a generated, computed column type. - * - * @param \Illuminate\Support\Fluent $column - * @return void - * - * @throws \RuntimeException - */ - protected function typeComputed(Fluent $column) - { - throw new RuntimeException('This database driver requires a type, see the virtualAs / storedAs modifiers.'); - } - - /** - * Get the SQL for a generated virtual column modifier. - * - * @param \Illuminate\Database\Schema\Blueprint $blueprint - * @param \Illuminate\Support\Fluent $column - * @return string|null - */ - protected function modifyVirtualAs(Blueprint $blueprint, Fluent $column) - { - if (! is_null($virtualAs = $column->virtualAsJson)) { - if ($this->isJsonSelector($virtualAs)) { - $virtualAs = $this->wrapJsonSelector($virtualAs); - } - - return " as ({$virtualAs})"; - } - - if (! is_null($virtualAs = $column->virtualAs)) { - return " as ({$this->getValue($virtualAs)})"; - } - } - - /** - * Get the SQL for a generated stored column modifier. - * - * @param \Illuminate\Database\Schema\Blueprint $blueprint - * @param \Illuminate\Support\Fluent $column - * @return string|null - */ - protected function modifyStoredAs(Blueprint $blueprint, Fluent $column) - { - if (! is_null($storedAs = $column->storedAsJson)) { - if ($this->isJsonSelector($storedAs)) { - $storedAs = $this->wrapJsonSelector($storedAs); - } - - return " as ({$storedAs}) stored"; - } - - if (! is_null($storedAs = $column->storedAs)) { - return " as ({$this->getValue($column->storedAs)}) stored"; - } - } - - /** - * Get the SQL for a nullable column modifier. - * - * @param \Illuminate\Database\Schema\Blueprint $blueprint - * @param \Illuminate\Support\Fluent $column - * @return string|null - */ - protected function modifyNullable(Blueprint $blueprint, Fluent $column) - { - if (is_null($column->virtualAs) && - is_null($column->virtualAsJson) && - is_null($column->storedAs) && - is_null($column->storedAsJson)) { - return $column->nullable ? '' : ' not null'; - } - - if ($column->nullable === false) { - return ' not null'; - } - } - - /** - * Get the SQL for a default column modifier. - * - * @param \Illuminate\Database\Schema\Blueprint $blueprint - * @param \Illuminate\Support\Fluent $column - * @return string|null - */ - protected function modifyDefault(Blueprint $blueprint, Fluent $column) - { - if (! is_null($column->default) && is_null($column->virtualAs) && is_null($column->virtualAsJson) && is_null($column->storedAs)) { - return ' default '.$this->getDefaultValue($column->default); - } - } - - /** - * Get the SQL for an auto-increment column modifier. - * - * @param \Illuminate\Database\Schema\Blueprint $blueprint - * @param \Illuminate\Support\Fluent $column - * @return string|null - */ - protected function modifyIncrement(Blueprint $blueprint, Fluent $column) - { - if (in_array($column->type, $this->serials) && $column->autoIncrement) { - return ' primary key autoincrement'; - } - } - - /** - * Wrap the given JSON selector. - * - * @param string $value - * @return string - */ - protected function wrapJsonSelector($value) - { - [$field, $path] = $this->wrapJsonFieldAndPath($value); - - return 'json_extract('.$field.$path.')'; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Schema/MySqlSchemaState.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Schema/MySqlSchemaState.php deleted file mode 100644 index 5bed2f00..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Schema/MySqlSchemaState.php +++ /dev/null @@ -1,172 +0,0 @@ -executeDumpProcess($this->makeProcess( - $this->baseDumpCommand().' --routines --result-file="${:LARAVEL_LOAD_PATH}" --no-data' - ), $this->output, array_merge($this->baseVariables($this->connection->getConfig()), [ - 'LARAVEL_LOAD_PATH' => $path, - ])); - - $this->removeAutoIncrementingState($path); - - if ($this->hasMigrationTable()) { - $this->appendMigrationData($path); - } - } - - /** - * Remove the auto-incrementing state from the given schema dump. - * - * @param string $path - * @return void - */ - protected function removeAutoIncrementingState(string $path) - { - $this->files->put($path, preg_replace( - '/\s+AUTO_INCREMENT=[0-9]+/iu', - '', - $this->files->get($path) - )); - } - - /** - * Append the migration data to the schema dump. - * - * @param string $path - * @return void - */ - protected function appendMigrationData(string $path) - { - $process = $this->executeDumpProcess($this->makeProcess( - $this->baseDumpCommand().' '.$this->migrationTable.' --no-create-info --skip-extended-insert --skip-routines --compact --complete-insert' - ), null, array_merge($this->baseVariables($this->connection->getConfig()), [ - // - ])); - - $this->files->append($path, $process->getOutput()); - } - - /** - * Load the given schema file into the database. - * - * @param string $path - * @return void - */ - public function load($path) - { - $command = 'mysql '.$this->connectionString().' --database="${:LARAVEL_LOAD_DATABASE}" < "${:LARAVEL_LOAD_PATH}"'; - - $process = $this->makeProcess($command)->setTimeout(null); - - $process->mustRun(null, array_merge($this->baseVariables($this->connection->getConfig()), [ - 'LARAVEL_LOAD_PATH' => $path, - ])); - } - - /** - * Get the base dump command arguments for MySQL as a string. - * - * @return string - */ - protected function baseDumpCommand() - { - $command = 'mysqldump '.$this->connectionString().' --no-tablespaces --skip-add-locks --skip-comments --skip-set-charset --tz-utc --column-statistics=0'; - - if (! $this->connection->isMaria()) { - $command .= ' --set-gtid-purged=OFF'; - } - - return $command.' "${:LARAVEL_LOAD_DATABASE}"'; - } - - /** - * Generate a basic connection string (--socket, --host, --port, --user, --password) for the database. - * - * @return string - */ - protected function connectionString() - { - $value = ' --user="${:LARAVEL_LOAD_USER}" --password="${:LARAVEL_LOAD_PASSWORD}"'; - - $config = $this->connection->getConfig(); - - $value .= $config['unix_socket'] ?? false - ? ' --socket="${:LARAVEL_LOAD_SOCKET}"' - : ' --host="${:LARAVEL_LOAD_HOST}" --port="${:LARAVEL_LOAD_PORT}"'; - - if (isset($config['options'][\PDO::MYSQL_ATTR_SSL_CA])) { - $value .= ' --ssl-ca="${:LARAVEL_LOAD_SSL_CA}"'; - } - - return $value; - } - - /** - * Get the base variables for a dump / load command. - * - * @param array $config - * @return array - */ - protected function baseVariables(array $config) - { - $config['host'] ??= ''; - - return [ - 'LARAVEL_LOAD_SOCKET' => $config['unix_socket'] ?? '', - 'LARAVEL_LOAD_HOST' => is_array($config['host']) ? $config['host'][0] : $config['host'], - 'LARAVEL_LOAD_PORT' => $config['port'] ?? '', - 'LARAVEL_LOAD_USER' => $config['username'], - 'LARAVEL_LOAD_PASSWORD' => $config['password'] ?? '', - 'LARAVEL_LOAD_DATABASE' => $config['database'], - 'LARAVEL_LOAD_SSL_CA' => $config['options'][\PDO::MYSQL_ATTR_SSL_CA] ?? '', - ]; - } - - /** - * Execute the given dump process. - * - * @param \Symfony\Component\Process\Process $process - * @param callable $output - * @param array $variables - * @return \Symfony\Component\Process\Process - */ - protected function executeDumpProcess(Process $process, $output, array $variables) - { - try { - $process->setTimeout(null)->mustRun($output, $variables); - } catch (Exception $e) { - if (Str::contains($e->getMessage(), ['column-statistics', 'column_statistics'])) { - return $this->executeDumpProcess(Process::fromShellCommandLine( - str_replace(' --column-statistics=0', '', $process->getCommandLine()) - ), $output, $variables); - } - - if (str_contains($e->getMessage(), 'set-gtid-purged')) { - return $this->executeDumpProcess(Process::fromShellCommandLine( - str_replace(' --set-gtid-purged=OFF', '', $process->getCommandLine()) - ), $output, $variables); - } - - throw $e; - } - - return $process; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Schema/PostgresSchemaState.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Schema/PostgresSchemaState.php deleted file mode 100644 index 70ccd25b..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Schema/PostgresSchemaState.php +++ /dev/null @@ -1,82 +0,0 @@ -baseDumpCommand().' --schema-only > '.$path, - ]); - - if ($this->hasMigrationTable()) { - $commands->push($this->baseDumpCommand().' -t '.$this->migrationTable.' --data-only >> '.$path); - } - - $commands->map(function ($command, $path) { - $this->makeProcess($command)->mustRun($this->output, array_merge($this->baseVariables($this->connection->getConfig()), [ - 'LARAVEL_LOAD_PATH' => $path, - ])); - }); - } - - /** - * Load the given schema file into the database. - * - * @param string $path - * @return void - */ - public function load($path) - { - $command = 'pg_restore --no-owner --no-acl --clean --if-exists --host="${:LARAVEL_LOAD_HOST}" --port="${:LARAVEL_LOAD_PORT}" --username="${:LARAVEL_LOAD_USER}" --dbname="${:LARAVEL_LOAD_DATABASE}" "${:LARAVEL_LOAD_PATH}"'; - - if (str_ends_with($path, '.sql')) { - $command = 'psql --file="${:LARAVEL_LOAD_PATH}" --host="${:LARAVEL_LOAD_HOST}" --port="${:LARAVEL_LOAD_PORT}" --username="${:LARAVEL_LOAD_USER}" --dbname="${:LARAVEL_LOAD_DATABASE}"'; - } - - $process = $this->makeProcess($command); - - $process->mustRun(null, array_merge($this->baseVariables($this->connection->getConfig()), [ - 'LARAVEL_LOAD_PATH' => $path, - ])); - } - - /** - * Get the base dump command arguments for PostgreSQL as a string. - * - * @return string - */ - protected function baseDumpCommand() - { - return 'pg_dump --no-owner --no-acl --host="${:LARAVEL_LOAD_HOST}" --port="${:LARAVEL_LOAD_PORT}" --username="${:LARAVEL_LOAD_USER}" --dbname="${:LARAVEL_LOAD_DATABASE}"'; - } - - /** - * Get the base variables for a dump / load command. - * - * @param array $config - * @return array - */ - protected function baseVariables(array $config) - { - $config['host'] ??= ''; - - return [ - 'LARAVEL_LOAD_HOST' => is_array($config['host']) ? $config['host'][0] : $config['host'], - 'LARAVEL_LOAD_PORT' => $config['port'] ?? '', - 'LARAVEL_LOAD_USER' => $config['username'], - 'PGPASSWORD' => $config['password'], - 'LARAVEL_LOAD_DATABASE' => $config['database'], - ]; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Schema/SQLiteBuilder.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Schema/SQLiteBuilder.php deleted file mode 100644 index e7d6e8c9..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Schema/SQLiteBuilder.php +++ /dev/null @@ -1,128 +0,0 @@ -connection->scalar($this->grammar->compileDbstatExists()); - } catch (QueryException $e) { - $withSize = false; - } - } - - return $this->connection->getPostProcessor()->processTables( - $this->connection->selectFromWriteConnection($this->grammar->compileTables($withSize)) - ); - } - - /** - * Get all of the table names for the database. - * - * @deprecated Will be removed in a future Laravel version. - * - * @return array - */ - public function getAllTables() - { - return $this->connection->select( - $this->grammar->compileGetAllTables() - ); - } - - /** - * Get all of the view names for the database. - * - * @deprecated Will be removed in a future Laravel version. - * - * @return array - */ - public function getAllViews() - { - return $this->connection->select( - $this->grammar->compileGetAllViews() - ); - } - - /** - * Drop all tables from the database. - * - * @return void - */ - public function dropAllTables() - { - if ($this->connection->getDatabaseName() !== ':memory:') { - return $this->refreshDatabaseFile(); - } - - $this->connection->select($this->grammar->compileEnableWriteableSchema()); - - $this->connection->select($this->grammar->compileDropAllTables()); - - $this->connection->select($this->grammar->compileDisableWriteableSchema()); - - $this->connection->select($this->grammar->compileRebuild()); - } - - /** - * Drop all views from the database. - * - * @return void - */ - public function dropAllViews() - { - $this->connection->select($this->grammar->compileEnableWriteableSchema()); - - $this->connection->select($this->grammar->compileDropAllViews()); - - $this->connection->select($this->grammar->compileDisableWriteableSchema()); - - $this->connection->select($this->grammar->compileRebuild()); - } - - /** - * Empty the database file. - * - * @return void - */ - public function refreshDatabaseFile() - { - file_put_contents($this->connection->getDatabaseName(), ''); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Schema/SchemaState.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Schema/SchemaState.php deleted file mode 100644 index 2b2236af..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Schema/SchemaState.php +++ /dev/null @@ -1,132 +0,0 @@ -connection = $connection; - - $this->files = $files ?: new Filesystem; - - $this->processFactory = $processFactory ?: function (...$arguments) { - return Process::fromShellCommandline(...$arguments)->setTimeout(null); - }; - - $this->handleOutputUsing(function () { - // - }); - } - - /** - * Dump the database's schema into a file. - * - * @param \Illuminate\Database\Connection $connection - * @param string $path - * @return void - */ - abstract public function dump(Connection $connection, $path); - - /** - * Load the given schema file into the database. - * - * @param string $path - * @return void - */ - abstract public function load($path); - - /** - * Create a new process instance. - * - * @param mixed ...$arguments - * @return \Symfony\Component\Process\Process - */ - public function makeProcess(...$arguments) - { - return call_user_func($this->processFactory, ...$arguments); - } - - /** - * Determine if the current connection has a migration table. - * - * @return bool - */ - public function hasMigrationTable(): bool - { - return $this->connection->getSchemaBuilder()->hasTable($this->migrationTable); - } - - /** - * Specify the name of the application's migration table. - * - * @param string $table - * @return $this - */ - public function withMigrationTable(string $table) - { - $this->migrationTable = $table; - - return $this; - } - - /** - * Specify the callback that should be used to handle process output. - * - * @param callable $output - * @return $this - */ - public function handleOutputUsing(callable $output) - { - $this->output = $output; - - return $this; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Schema/SqliteSchemaState.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Schema/SqliteSchemaState.php deleted file mode 100644 index 4b665429..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/Schema/SqliteSchemaState.php +++ /dev/null @@ -1,101 +0,0 @@ -makeProcess( - $this->baseCommand().' .schema' - ))->setTimeout(null)->mustRun(null, array_merge($this->baseVariables($this->connection->getConfig()), [ - // - ])); - - $migrations = collect(preg_split("/\r\n|\n|\r/", $process->getOutput()))->filter(function ($line) { - return stripos($line, 'sqlite_sequence') === false && - strlen($line) > 0; - })->all(); - - $this->files->put($path, implode(PHP_EOL, $migrations).PHP_EOL); - - if ($this->hasMigrationTable()) { - $this->appendMigrationData($path); - } - } - - /** - * Append the migration data to the schema dump. - * - * @param string $path - * @return void - */ - protected function appendMigrationData(string $path) - { - with($process = $this->makeProcess( - $this->baseCommand().' ".dump \''.$this->migrationTable.'\'"' - ))->mustRun(null, array_merge($this->baseVariables($this->connection->getConfig()), [ - // - ])); - - $migrations = collect(preg_split("/\r\n|\n|\r/", $process->getOutput()))->filter(function ($line) { - return preg_match('/^\s*(--|INSERT\s)/iu', $line) === 1 && - strlen($line) > 0; - })->all(); - - $this->files->append($path, implode(PHP_EOL, $migrations).PHP_EOL); - } - - /** - * Load the given schema file into the database. - * - * @param string $path - * @return void - */ - public function load($path) - { - if ($this->connection->getDatabaseName() === ':memory:') { - $this->connection->getPdo()->exec($this->files->get($path)); - - return; - } - - $process = $this->makeProcess($this->baseCommand().' < "${:LARAVEL_LOAD_PATH}"'); - - $process->mustRun(null, array_merge($this->baseVariables($this->connection->getConfig()), [ - 'LARAVEL_LOAD_PATH' => $path, - ])); - } - - /** - * Get the base sqlite command arguments as a string. - * - * @return string - */ - protected function baseCommand() - { - return 'sqlite3 "${:LARAVEL_LOAD_DATABASE}"'; - } - - /** - * Get the base variables for a dump / load command. - * - * @param array $config - * @return array - */ - protected function baseVariables(array $config) - { - return [ - 'LARAVEL_LOAD_DATABASE' => $config['database'], - ]; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/SqlServerConnection.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/SqlServerConnection.php deleted file mode 100755 index ab43cfc8..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Database/SqlServerConnection.php +++ /dev/null @@ -1,152 +0,0 @@ -getDriverName() === 'sqlsrv') { - return parent::transaction($callback, $attempts); - } - - $this->getPdo()->exec('BEGIN TRAN'); - - // We'll simply execute the given callback within a try / catch block - // and if we catch any exception we can rollback the transaction - // so that none of the changes are persisted to the database. - try { - $result = $callback($this); - - $this->getPdo()->exec('COMMIT TRAN'); - } - - // If we catch an exception, we will rollback so nothing gets messed - // up in the database. Then we'll re-throw the exception so it can - // be handled how the developer sees fit for their applications. - catch (Throwable $e) { - $this->getPdo()->exec('ROLLBACK TRAN'); - - throw $e; - } - - return $result; - } - } - - /** - * Escape a binary value for safe SQL embedding. - * - * @param string $value - * @return string - */ - protected function escapeBinary($value) - { - $hex = bin2hex($value); - - return "0x{$hex}"; - } - - /** - * Determine if the given database exception was caused by a unique constraint violation. - * - * @param \Exception $exception - * @return bool - */ - protected function isUniqueConstraintError(Exception $exception) - { - return boolval(preg_match('#Cannot insert duplicate key row in object#i', $exception->getMessage())); - } - - /** - * Get the default query grammar instance. - * - * @return \Illuminate\Database\Query\Grammars\SqlServerGrammar - */ - protected function getDefaultQueryGrammar() - { - ($grammar = new QueryGrammar)->setConnection($this); - - return $this->withTablePrefix($grammar); - } - - /** - * Get a schema builder instance for the connection. - * - * @return \Illuminate\Database\Schema\SqlServerBuilder - */ - public function getSchemaBuilder() - { - if (is_null($this->schemaGrammar)) { - $this->useDefaultSchemaGrammar(); - } - - return new SqlServerBuilder($this); - } - - /** - * Get the default schema grammar instance. - * - * @return \Illuminate\Database\Schema\Grammars\SqlServerGrammar - */ - protected function getDefaultSchemaGrammar() - { - ($grammar = new SchemaGrammar)->setConnection($this); - - return $this->withTablePrefix($grammar); - } - - /** - * Get the schema state for the connection. - * - * @param \Illuminate\Filesystem\Filesystem|null $files - * @param callable|null $processFactory - * - * @throws \RuntimeException - */ - public function getSchemaState(?Filesystem $files = null, ?callable $processFactory = null) - { - throw new RuntimeException('Schema dumping is not supported when using SQL Server.'); - } - - /** - * Get the default post processor instance. - * - * @return \Illuminate\Database\Query\Processors\SqlServerProcessor - */ - protected function getDefaultPostProcessor() - { - return new SqlServerProcessor; - } - - /** - * Get the Doctrine DBAL driver. - * - * @return \Illuminate\Database\PDO\SqlServerDriver - */ - protected function getDoctrineDriver() - { - return new SqlServerDriver; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Events/CallQueuedListener.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Events/CallQueuedListener.php deleted file mode 100644 index 4fb66266..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Events/CallQueuedListener.php +++ /dev/null @@ -1,187 +0,0 @@ -data = $data; - $this->class = $class; - $this->method = $method; - } - - /** - * Handle the queued job. - * - * @param \Illuminate\Container\Container $container - * @return void - */ - public function handle(Container $container) - { - $this->prepareData(); - - $handler = $this->setJobInstanceIfNecessary( - $this->job, $container->make($this->class) - ); - - $handler->{$this->method}(...array_values($this->data)); - } - - /** - * Set the job instance of the given class if necessary. - * - * @param \Illuminate\Contracts\Queue\Job $job - * @param object $instance - * @return object - */ - protected function setJobInstanceIfNecessary(Job $job, $instance) - { - if (in_array(InteractsWithQueue::class, class_uses_recursive($instance))) { - $instance->setJob($job); - } - - return $instance; - } - - /** - * Call the failed method on the job instance. - * - * The event instance and the exception will be passed. - * - * @param \Throwable $e - * @return void - */ - public function failed($e) - { - $this->prepareData(); - - $handler = Container::getInstance()->make($this->class); - - $parameters = array_merge(array_values($this->data), [$e]); - - if (method_exists($handler, 'failed')) { - $handler->failed(...$parameters); - } - } - - /** - * Unserialize the data if needed. - * - * @return void - */ - protected function prepareData() - { - if (is_string($this->data)) { - $this->data = unserialize($this->data); - } - } - - /** - * Get the display name for the queued job. - * - * @return string - */ - public function displayName() - { - return $this->class; - } - - /** - * Prepare the instance for cloning. - * - * @return void - */ - public function __clone() - { - $this->data = array_map(function ($data) { - return is_object($data) ? clone $data : $data; - }, $this->data); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php deleted file mode 100755 index c418fc4d..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php +++ /dev/null @@ -1,777 +0,0 @@ -container = $container ?: new Container; - } - - /** - * Register an event listener with the dispatcher. - * - * @param \Closure|string|array $events - * @param \Closure|string|array|null $listener - * @return void - */ - public function listen($events, $listener = null) - { - if ($events instanceof Closure) { - return collect($this->firstClosureParameterTypes($events)) - ->each(function ($event) use ($events) { - $this->listen($event, $events); - }); - } elseif ($events instanceof QueuedClosure) { - return collect($this->firstClosureParameterTypes($events->closure)) - ->each(function ($event) use ($events) { - $this->listen($event, $events->resolve()); - }); - } elseif ($listener instanceof QueuedClosure) { - $listener = $listener->resolve(); - } - - foreach ((array) $events as $event) { - if (str_contains($event, '*')) { - $this->setupWildcardListen($event, $listener); - } else { - $this->listeners[$event][] = $listener; - } - } - } - - /** - * Setup a wildcard listener callback. - * - * @param string $event - * @param \Closure|string $listener - * @return void - */ - protected function setupWildcardListen($event, $listener) - { - $this->wildcards[$event][] = $listener; - - $this->wildcardsCache = []; - } - - /** - * Determine if a given event has listeners. - * - * @param string $eventName - * @return bool - */ - public function hasListeners($eventName) - { - return isset($this->listeners[$eventName]) || - isset($this->wildcards[$eventName]) || - $this->hasWildcardListeners($eventName); - } - - /** - * Determine if the given event has any wildcard listeners. - * - * @param string $eventName - * @return bool - */ - public function hasWildcardListeners($eventName) - { - foreach ($this->wildcards as $key => $listeners) { - if (Str::is($key, $eventName)) { - return true; - } - } - - return false; - } - - /** - * Register an event and payload to be fired later. - * - * @param string $event - * @param object|array $payload - * @return void - */ - public function push($event, $payload = []) - { - $this->listen($event.'_pushed', function () use ($event, $payload) { - $this->dispatch($event, $payload); - }); - } - - /** - * Flush a set of pushed events. - * - * @param string $event - * @return void - */ - public function flush($event) - { - $this->dispatch($event.'_pushed'); - } - - /** - * Register an event subscriber with the dispatcher. - * - * @param object|string $subscriber - * @return void - */ - public function subscribe($subscriber) - { - $subscriber = $this->resolveSubscriber($subscriber); - - $events = $subscriber->subscribe($this); - - if (is_array($events)) { - foreach ($events as $event => $listeners) { - foreach (Arr::wrap($listeners) as $listener) { - if (is_string($listener) && method_exists($subscriber, $listener)) { - $this->listen($event, [get_class($subscriber), $listener]); - - continue; - } - - $this->listen($event, $listener); - } - } - } - } - - /** - * Resolve the subscriber instance. - * - * @param object|string $subscriber - * @return mixed - */ - protected function resolveSubscriber($subscriber) - { - if (is_string($subscriber)) { - return $this->container->make($subscriber); - } - - return $subscriber; - } - - /** - * Fire an event until the first non-null response is returned. - * - * @param string|object $event - * @param mixed $payload - * @return mixed - */ - public function until($event, $payload = []) - { - return $this->dispatch($event, $payload, true); - } - - /** - * Fire an event and call the listeners. - * - * @param string|object $event - * @param mixed $payload - * @param bool $halt - * @return array|null - */ - public function dispatch($event, $payload = [], $halt = false) - { - // When the given "event" is actually an object we will assume it is an event - // object and use the class as the event name and this event itself as the - // payload to the handler, which makes object based events quite simple. - [$isEventObject, $event, $payload] = [ - is_object($event), - ...$this->parseEventAndPayload($event, $payload), - ]; - - // If the event is not intended to be dispatched unless the current database - // transaction is successful, we'll register a callback which will handle - // dispatching this event on the next successful DB transaction commit. - if ($isEventObject && - $payload[0] instanceof ShouldDispatchAfterCommit && - ! is_null($transactions = $this->resolveTransactionManager())) { - $transactions->addCallback( - fn () => $this->invokeListeners($event, $payload, $halt) - ); - - return null; - } - - return $this->invokeListeners($event, $payload, $halt); - } - - /** - * Broadcast an event and call its listeners. - * - * @param string|object $event - * @param mixed $payload - * @param bool $halt - * @return array|null - */ - protected function invokeListeners($event, $payload, $halt = false) - { - if ($this->shouldBroadcast($payload)) { - $this->broadcastEvent($payload[0]); - } - - $responses = []; - - foreach ($this->getListeners($event) as $listener) { - $response = $listener($event, $payload); - - // If a response is returned from the listener and event halting is enabled - // we will just return this response, and not call the rest of the event - // listeners. Otherwise we will add the response on the response list. - if ($halt && ! is_null($response)) { - return $response; - } - - // If a boolean false is returned from a listener, we will stop propagating - // the event to any further listeners down in the chain, else we keep on - // looping through the listeners and firing every one in our sequence. - if ($response === false) { - break; - } - - $responses[] = $response; - } - - return $halt ? null : $responses; - } - - /** - * Parse the given event and payload and prepare them for dispatching. - * - * @param mixed $event - * @param mixed $payload - * @return array - */ - protected function parseEventAndPayload($event, $payload) - { - if (is_object($event)) { - [$payload, $event] = [[$event], get_class($event)]; - } - - return [$event, Arr::wrap($payload)]; - } - - /** - * Determine if the payload has a broadcastable event. - * - * @param array $payload - * @return bool - */ - protected function shouldBroadcast(array $payload) - { - return isset($payload[0]) && - $payload[0] instanceof ShouldBroadcast && - $this->broadcastWhen($payload[0]); - } - - /** - * Check if the event should be broadcasted by the condition. - * - * @param mixed $event - * @return bool - */ - protected function broadcastWhen($event) - { - return method_exists($event, 'broadcastWhen') - ? $event->broadcastWhen() : true; - } - - /** - * Broadcast the given event class. - * - * @param \Illuminate\Contracts\Broadcasting\ShouldBroadcast $event - * @return void - */ - protected function broadcastEvent($event) - { - $this->container->make(BroadcastFactory::class)->queue($event); - } - - /** - * Get all of the listeners for a given event name. - * - * @param string $eventName - * @return array - */ - public function getListeners($eventName) - { - $listeners = array_merge( - $this->prepareListeners($eventName), - $this->wildcardsCache[$eventName] ?? $this->getWildcardListeners($eventName) - ); - - return class_exists($eventName, false) - ? $this->addInterfaceListeners($eventName, $listeners) - : $listeners; - } - - /** - * Get the wildcard listeners for the event. - * - * @param string $eventName - * @return array - */ - protected function getWildcardListeners($eventName) - { - $wildcards = []; - - foreach ($this->wildcards as $key => $listeners) { - if (Str::is($key, $eventName)) { - foreach ($listeners as $listener) { - $wildcards[] = $this->makeListener($listener, true); - } - } - } - - return $this->wildcardsCache[$eventName] = $wildcards; - } - - /** - * Add the listeners for the event's interfaces to the given array. - * - * @param string $eventName - * @param array $listeners - * @return array - */ - protected function addInterfaceListeners($eventName, array $listeners = []) - { - foreach (class_implements($eventName) as $interface) { - if (isset($this->listeners[$interface])) { - foreach ($this->prepareListeners($interface) as $names) { - $listeners = array_merge($listeners, (array) $names); - } - } - } - - return $listeners; - } - - /** - * Prepare the listeners for a given event. - * - * @param string $eventName - * @return \Closure[] - */ - protected function prepareListeners(string $eventName) - { - $listeners = []; - - foreach ($this->listeners[$eventName] ?? [] as $listener) { - $listeners[] = $this->makeListener($listener); - } - - return $listeners; - } - - /** - * Register an event listener with the dispatcher. - * - * @param \Closure|string|array $listener - * @param bool $wildcard - * @return \Closure - */ - public function makeListener($listener, $wildcard = false) - { - if (is_string($listener)) { - return $this->createClassListener($listener, $wildcard); - } - - if (is_array($listener) && isset($listener[0]) && is_string($listener[0])) { - return $this->createClassListener($listener, $wildcard); - } - - return function ($event, $payload) use ($listener, $wildcard) { - if ($wildcard) { - return $listener($event, $payload); - } - - return $listener(...array_values($payload)); - }; - } - - /** - * Create a class based listener using the IoC container. - * - * @param string $listener - * @param bool $wildcard - * @return \Closure - */ - public function createClassListener($listener, $wildcard = false) - { - return function ($event, $payload) use ($listener, $wildcard) { - if ($wildcard) { - return call_user_func($this->createClassCallable($listener), $event, $payload); - } - - $callable = $this->createClassCallable($listener); - - return $callable(...array_values($payload)); - }; - } - - /** - * Create the class based event callable. - * - * @param array|string $listener - * @return callable - */ - protected function createClassCallable($listener) - { - [$class, $method] = is_array($listener) - ? $listener - : $this->parseClassCallable($listener); - - if (! method_exists($class, $method)) { - $method = '__invoke'; - } - - if ($this->handlerShouldBeQueued($class)) { - return $this->createQueuedHandlerCallable($class, $method); - } - - $listener = $this->container->make($class); - - return $this->handlerShouldBeDispatchedAfterDatabaseTransactions($listener) - ? $this->createCallbackForListenerRunningAfterCommits($listener, $method) - : [$listener, $method]; - } - - /** - * Parse the class listener into class and method. - * - * @param string $listener - * @return array - */ - protected function parseClassCallable($listener) - { - return Str::parseCallback($listener, 'handle'); - } - - /** - * Determine if the event handler class should be queued. - * - * @param string $class - * @return bool - */ - protected function handlerShouldBeQueued($class) - { - try { - return (new ReflectionClass($class))->implementsInterface( - ShouldQueue::class - ); - } catch (Exception) { - return false; - } - } - - /** - * Create a callable for putting an event handler on the queue. - * - * @param string $class - * @param string $method - * @return \Closure - */ - protected function createQueuedHandlerCallable($class, $method) - { - return function () use ($class, $method) { - $arguments = array_map(function ($a) { - return is_object($a) ? clone $a : $a; - }, func_get_args()); - - if ($this->handlerWantsToBeQueued($class, $arguments)) { - $this->queueHandler($class, $method, $arguments); - } - }; - } - - /** - * Determine if the given event handler should be dispatched after all database transactions have committed. - * - * @param object|mixed $listener - * @return bool - */ - protected function handlerShouldBeDispatchedAfterDatabaseTransactions($listener) - { - return (($listener->afterCommit ?? null) || - $listener instanceof ShouldHandleEventsAfterCommit) && - $this->resolveTransactionManager(); - } - - /** - * Create a callable for dispatching a listener after database transactions. - * - * @param mixed $listener - * @param string $method - * @return \Closure - */ - protected function createCallbackForListenerRunningAfterCommits($listener, $method) - { - return function () use ($method, $listener) { - $payload = func_get_args(); - - $this->resolveTransactionManager()->addCallback( - function () use ($listener, $method, $payload) { - $listener->$method(...$payload); - } - ); - }; - } - - /** - * Determine if the event handler wants to be queued. - * - * @param string $class - * @param array $arguments - * @return bool - */ - protected function handlerWantsToBeQueued($class, $arguments) - { - $instance = $this->container->make($class); - - if (method_exists($instance, 'shouldQueue')) { - return $instance->shouldQueue($arguments[0]); - } - - return true; - } - - /** - * Queue the handler class. - * - * @param string $class - * @param string $method - * @param array $arguments - * @return void - */ - protected function queueHandler($class, $method, $arguments) - { - [$listener, $job] = $this->createListenerAndJob($class, $method, $arguments); - - $connection = $this->resolveQueue()->connection(method_exists($listener, 'viaConnection') - ? (isset($arguments[0]) ? $listener->viaConnection($arguments[0]) : $listener->viaConnection()) - : $listener->connection ?? null); - - $queue = method_exists($listener, 'viaQueue') - ? (isset($arguments[0]) ? $listener->viaQueue($arguments[0]) : $listener->viaQueue()) - : $listener->queue ?? null; - - $delay = method_exists($listener, 'withDelay') - ? (isset($arguments[0]) ? $listener->withDelay($arguments[0]) : $listener->withDelay()) - : $listener->delay ?? null; - - is_null($delay) - ? $connection->pushOn($queue, $job) - : $connection->laterOn($queue, $delay, $job); - } - - /** - * Create the listener and job for a queued listener. - * - * @param string $class - * @param string $method - * @param array $arguments - * @return array - */ - protected function createListenerAndJob($class, $method, $arguments) - { - $listener = (new ReflectionClass($class))->newInstanceWithoutConstructor(); - - return [$listener, $this->propagateListenerOptions( - $listener, new CallQueuedListener($class, $method, $arguments) - )]; - } - - /** - * Propagate listener options to the job. - * - * @param mixed $listener - * @param \Illuminate\Events\CallQueuedListener $job - * @return mixed - */ - protected function propagateListenerOptions($listener, $job) - { - return tap($job, function ($job) use ($listener) { - $data = array_values($job->data); - - if ($listener instanceof ShouldQueueAfterCommit) { - $job->afterCommit = true; - } else { - $job->afterCommit = property_exists($listener, 'afterCommit') ? $listener->afterCommit : null; - } - - $job->backoff = method_exists($listener, 'backoff') ? $listener->backoff(...$data) : ($listener->backoff ?? null); - $job->maxExceptions = $listener->maxExceptions ?? null; - $job->retryUntil = method_exists($listener, 'retryUntil') ? $listener->retryUntil(...$data) : null; - $job->shouldBeEncrypted = $listener instanceof ShouldBeEncrypted; - $job->timeout = $listener->timeout ?? null; - $job->failOnTimeout = $listener->failOnTimeout ?? false; - $job->tries = $listener->tries ?? null; - - $job->through(array_merge( - method_exists($listener, 'middleware') ? $listener->middleware(...$data) : [], - $listener->middleware ?? [] - )); - }); - } - - /** - * Remove a set of listeners from the dispatcher. - * - * @param string $event - * @return void - */ - public function forget($event) - { - if (str_contains($event, '*')) { - unset($this->wildcards[$event]); - } else { - unset($this->listeners[$event]); - } - - foreach ($this->wildcardsCache as $key => $listeners) { - if (Str::is($event, $key)) { - unset($this->wildcardsCache[$key]); - } - } - } - - /** - * Forget all of the pushed listeners. - * - * @return void - */ - public function forgetPushed() - { - foreach ($this->listeners as $key => $value) { - if (str_ends_with($key, '_pushed')) { - $this->forget($key); - } - } - } - - /** - * Get the queue implementation from the resolver. - * - * @return \Illuminate\Contracts\Queue\Queue - */ - protected function resolveQueue() - { - return call_user_func($this->queueResolver); - } - - /** - * Set the queue resolver implementation. - * - * @param callable $resolver - * @return $this - */ - public function setQueueResolver(callable $resolver) - { - $this->queueResolver = $resolver; - - return $this; - } - - /** - * Get the database transaction manager implementation from the resolver. - * - * @return \Illuminate\Database\DatabaseTransactionsManager|null - */ - protected function resolveTransactionManager() - { - return call_user_func($this->transactionManagerResolver); - } - - /** - * Set the database transaction manager resolver implementation. - * - * @param callable $resolver - * @return $this - */ - public function setTransactionManagerResolver(callable $resolver) - { - $this->transactionManagerResolver = $resolver; - - return $this; - } - - /** - * Gets the raw, unprepared listeners. - * - * @return array - */ - public function getRawListeners() - { - return $this->listeners; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php deleted file mode 100644 index cfd4c220..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php +++ /dev/null @@ -1,792 +0,0 @@ -exists($path); - } - - /** - * Get the contents of a file. - * - * @param string $path - * @param bool $lock - * @return string - * - * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException - */ - public function get($path, $lock = false) - { - if ($this->isFile($path)) { - return $lock ? $this->sharedGet($path) : file_get_contents($path); - } - - throw new FileNotFoundException("File does not exist at path {$path}."); - } - - /** - * Get the contents of a file as decoded JSON. - * - * @param string $path - * @param int $flags - * @param bool $lock - * @return array - * - * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException - */ - public function json($path, $flags = 0, $lock = false) - { - return json_decode($this->get($path, $lock), true, 512, $flags); - } - - /** - * Get contents of a file with shared access. - * - * @param string $path - * @return string - */ - public function sharedGet($path) - { - $contents = ''; - - $handle = fopen($path, 'rb'); - - if ($handle) { - try { - if (flock($handle, LOCK_SH)) { - clearstatcache(true, $path); - - $contents = fread($handle, $this->size($path) ?: 1); - - flock($handle, LOCK_UN); - } - } finally { - fclose($handle); - } - } - - return $contents; - } - - /** - * Get the returned value of a file. - * - * @param string $path - * @param array $data - * @return mixed - * - * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException - */ - public function getRequire($path, array $data = []) - { - if ($this->isFile($path)) { - $__path = $path; - $__data = $data; - - return (static function () use ($__path, $__data) { - extract($__data, EXTR_SKIP); - - return require $__path; - })(); - } - - throw new FileNotFoundException("File does not exist at path {$path}."); - } - - /** - * Require the given file once. - * - * @param string $path - * @param array $data - * @return mixed - * - * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException - */ - public function requireOnce($path, array $data = []) - { - if ($this->isFile($path)) { - $__path = $path; - $__data = $data; - - return (static function () use ($__path, $__data) { - extract($__data, EXTR_SKIP); - - return require_once $__path; - })(); - } - - throw new FileNotFoundException("File does not exist at path {$path}."); - } - - /** - * Get the contents of a file one line at a time. - * - * @param string $path - * @return \Illuminate\Support\LazyCollection - * - * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException - */ - public function lines($path) - { - if (! $this->isFile($path)) { - throw new FileNotFoundException( - "File does not exist at path {$path}." - ); - } - - return LazyCollection::make(function () use ($path) { - $file = new SplFileObject($path); - - $file->setFlags(SplFileObject::DROP_NEW_LINE); - - while (! $file->eof()) { - yield $file->fgets(); - } - }); - } - - /** - * Get the hash of the file at the given path. - * - * @param string $path - * @param string $algorithm - * @return string - */ - public function hash($path, $algorithm = 'md5') - { - return hash_file($algorithm, $path); - } - - /** - * Write the contents of a file. - * - * @param string $path - * @param string $contents - * @param bool $lock - * @return int|bool - */ - public function put($path, $contents, $lock = false) - { - return file_put_contents($path, $contents, $lock ? LOCK_EX : 0); - } - - /** - * Write the contents of a file, replacing it atomically if it already exists. - * - * @param string $path - * @param string $content - * @param int|null $mode - * @return void - */ - public function replace($path, $content, $mode = null) - { - // If the path already exists and is a symlink, get the real path... - clearstatcache(true, $path); - - $path = realpath($path) ?: $path; - - $tempPath = tempnam(dirname($path), basename($path)); - - // Fix permissions of tempPath because `tempnam()` creates it with permissions set to 0600... - if (! is_null($mode)) { - chmod($tempPath, $mode); - } else { - chmod($tempPath, 0777 - umask()); - } - - file_put_contents($tempPath, $content); - - rename($tempPath, $path); - } - - /** - * Replace a given string within a given file. - * - * @param array|string $search - * @param array|string $replace - * @param string $path - * @return void - */ - public function replaceInFile($search, $replace, $path) - { - file_put_contents($path, str_replace($search, $replace, file_get_contents($path))); - } - - /** - * Prepend to a file. - * - * @param string $path - * @param string $data - * @return int - */ - public function prepend($path, $data) - { - if ($this->exists($path)) { - return $this->put($path, $data.$this->get($path)); - } - - return $this->put($path, $data); - } - - /** - * Append to a file. - * - * @param string $path - * @param string $data - * @param bool $lock - * @return int - */ - public function append($path, $data, $lock = false) - { - return file_put_contents($path, $data, FILE_APPEND | ($lock ? LOCK_EX : 0)); - } - - /** - * Get or set UNIX mode of a file or directory. - * - * @param string $path - * @param int|null $mode - * @return mixed - */ - public function chmod($path, $mode = null) - { - if ($mode) { - return chmod($path, $mode); - } - - return substr(sprintf('%o', fileperms($path)), -4); - } - - /** - * Delete the file at a given path. - * - * @param string|array $paths - * @return bool - */ - public function delete($paths) - { - $paths = is_array($paths) ? $paths : func_get_args(); - - $success = true; - - foreach ($paths as $path) { - try { - if (@unlink($path)) { - clearstatcache(false, $path); - } else { - $success = false; - } - } catch (ErrorException) { - $success = false; - } - } - - return $success; - } - - /** - * Move a file to a new location. - * - * @param string $path - * @param string $target - * @return bool - */ - public function move($path, $target) - { - return rename($path, $target); - } - - /** - * Copy a file to a new location. - * - * @param string $path - * @param string $target - * @return bool - */ - public function copy($path, $target) - { - return copy($path, $target); - } - - /** - * Create a symlink to the target file or directory. On Windows, a hard link is created if the target is a file. - * - * @param string $target - * @param string $link - * @return bool|null - */ - public function link($target, $link) - { - if (! windows_os()) { - return symlink($target, $link); - } - - $mode = $this->isDirectory($target) ? 'J' : 'H'; - - exec("mklink /{$mode} ".escapeshellarg($link).' '.escapeshellarg($target)); - } - - /** - * Create a relative symlink to the target file or directory. - * - * @param string $target - * @param string $link - * @return void - * - * @throws \RuntimeException - */ - public function relativeLink($target, $link) - { - if (! class_exists(SymfonyFilesystem::class)) { - throw new RuntimeException( - 'To enable support for relative links, please install the symfony/filesystem package.' - ); - } - - $relativeTarget = (new SymfonyFilesystem)->makePathRelative($target, dirname($link)); - - $this->link($this->isFile($target) ? rtrim($relativeTarget, '/') : $relativeTarget, $link); - } - - /** - * Extract the file name from a file path. - * - * @param string $path - * @return string - */ - public function name($path) - { - return pathinfo($path, PATHINFO_FILENAME); - } - - /** - * Extract the trailing name component from a file path. - * - * @param string $path - * @return string - */ - public function basename($path) - { - return pathinfo($path, PATHINFO_BASENAME); - } - - /** - * Extract the parent directory from a file path. - * - * @param string $path - * @return string - */ - public function dirname($path) - { - return pathinfo($path, PATHINFO_DIRNAME); - } - - /** - * Extract the file extension from a file path. - * - * @param string $path - * @return string - */ - public function extension($path) - { - return pathinfo($path, PATHINFO_EXTENSION); - } - - /** - * Guess the file extension from the mime-type of a given file. - * - * @param string $path - * @return string|null - * - * @throws \RuntimeException - */ - public function guessExtension($path) - { - if (! class_exists(MimeTypes::class)) { - throw new RuntimeException( - 'To enable support for guessing extensions, please install the symfony/mime package.' - ); - } - - return (new MimeTypes)->getExtensions($this->mimeType($path))[0] ?? null; - } - - /** - * Get the file type of a given file. - * - * @param string $path - * @return string - */ - public function type($path) - { - return filetype($path); - } - - /** - * Get the mime-type of a given file. - * - * @param string $path - * @return string|false - */ - public function mimeType($path) - { - return finfo_file(finfo_open(FILEINFO_MIME_TYPE), $path); - } - - /** - * Get the file size of a given file. - * - * @param string $path - * @return int - */ - public function size($path) - { - return filesize($path); - } - - /** - * Get the file's last modification time. - * - * @param string $path - * @return int - */ - public function lastModified($path) - { - return filemtime($path); - } - - /** - * Determine if the given path is a directory. - * - * @param string $directory - * @return bool - */ - public function isDirectory($directory) - { - return is_dir($directory); - } - - /** - * Determine if the given path is a directory that does not contain any other files or directories. - * - * @param string $directory - * @param bool $ignoreDotFiles - * @return bool - */ - public function isEmptyDirectory($directory, $ignoreDotFiles = false) - { - return ! Finder::create()->ignoreDotFiles($ignoreDotFiles)->in($directory)->depth(0)->hasResults(); - } - - /** - * Determine if the given path is readable. - * - * @param string $path - * @return bool - */ - public function isReadable($path) - { - return is_readable($path); - } - - /** - * Determine if the given path is writable. - * - * @param string $path - * @return bool - */ - public function isWritable($path) - { - return is_writable($path); - } - - /** - * Determine if two files are the same by comparing their hashes. - * - * @param string $firstFile - * @param string $secondFile - * @return bool - */ - public function hasSameHash($firstFile, $secondFile) - { - $hash = @md5_file($firstFile); - - return $hash && hash_equals($hash, (string) @md5_file($secondFile)); - } - - /** - * Determine if the given path is a file. - * - * @param string $file - * @return bool - */ - public function isFile($file) - { - return is_file($file); - } - - /** - * Find path names matching a given pattern. - * - * @param string $pattern - * @param int $flags - * @return array - */ - public function glob($pattern, $flags = 0) - { - return glob($pattern, $flags); - } - - /** - * Get an array of all files in a directory. - * - * @param string $directory - * @param bool $hidden - * @return \Symfony\Component\Finder\SplFileInfo[] - */ - public function files($directory, $hidden = false) - { - return iterator_to_array( - Finder::create()->files()->ignoreDotFiles(! $hidden)->in($directory)->depth(0)->sortByName(), - false - ); - } - - /** - * Get all of the files from the given directory (recursive). - * - * @param string $directory - * @param bool $hidden - * @return \Symfony\Component\Finder\SplFileInfo[] - */ - public function allFiles($directory, $hidden = false) - { - return iterator_to_array( - Finder::create()->files()->ignoreDotFiles(! $hidden)->in($directory)->sortByName(), - false - ); - } - - /** - * Get all of the directories within a given directory. - * - * @param string $directory - * @return array - */ - public function directories($directory) - { - $directories = []; - - foreach (Finder::create()->in($directory)->directories()->depth(0)->sortByName() as $dir) { - $directories[] = $dir->getPathname(); - } - - return $directories; - } - - /** - * Ensure a directory exists. - * - * @param string $path - * @param int $mode - * @param bool $recursive - * @return void - */ - public function ensureDirectoryExists($path, $mode = 0755, $recursive = true) - { - if (! $this->isDirectory($path)) { - $this->makeDirectory($path, $mode, $recursive); - } - } - - /** - * Create a directory. - * - * @param string $path - * @param int $mode - * @param bool $recursive - * @param bool $force - * @return bool - */ - public function makeDirectory($path, $mode = 0755, $recursive = false, $force = false) - { - if ($force) { - return @mkdir($path, $mode, $recursive); - } - - return mkdir($path, $mode, $recursive); - } - - /** - * Move a directory. - * - * @param string $from - * @param string $to - * @param bool $overwrite - * @return bool - */ - public function moveDirectory($from, $to, $overwrite = false) - { - if ($overwrite && $this->isDirectory($to) && ! $this->deleteDirectory($to)) { - return false; - } - - return @rename($from, $to) === true; - } - - /** - * Copy a directory from one location to another. - * - * @param string $directory - * @param string $destination - * @param int|null $options - * @return bool - */ - public function copyDirectory($directory, $destination, $options = null) - { - if (! $this->isDirectory($directory)) { - return false; - } - - $options = $options ?: FilesystemIterator::SKIP_DOTS; - - // If the destination directory does not actually exist, we will go ahead and - // create it recursively, which just gets the destination prepared to copy - // the files over. Once we make the directory we'll proceed the copying. - $this->ensureDirectoryExists($destination, 0777); - - $items = new FilesystemIterator($directory, $options); - - foreach ($items as $item) { - // As we spin through items, we will check to see if the current file is actually - // a directory or a file. When it is actually a directory we will need to call - // back into this function recursively to keep copying these nested folders. - $target = $destination.'/'.$item->getBasename(); - - if ($item->isDir()) { - $path = $item->getPathname(); - - if (! $this->copyDirectory($path, $target, $options)) { - return false; - } - } - - // If the current items is just a regular file, we will just copy this to the new - // location and keep looping. If for some reason the copy fails we'll bail out - // and return false, so the developer is aware that the copy process failed. - elseif (! $this->copy($item->getPathname(), $target)) { - return false; - } - } - - return true; - } - - /** - * Recursively delete a directory. - * - * The directory itself may be optionally preserved. - * - * @param string $directory - * @param bool $preserve - * @return bool - */ - public function deleteDirectory($directory, $preserve = false) - { - if (! $this->isDirectory($directory)) { - return false; - } - - $items = new FilesystemIterator($directory); - - foreach ($items as $item) { - // If the item is a directory, we can just recurse into the function and - // delete that sub-directory otherwise we'll just delete the file and - // keep iterating through each file until the directory is cleaned. - if ($item->isDir() && ! $item->isLink()) { - $this->deleteDirectory($item->getPathname()); - } - - // If the item is just a file, we can go ahead and delete it since we're - // just looping through and waxing all of the files in this directory - // and calling directories recursively, so we delete the real path. - else { - $this->delete($item->getPathname()); - } - } - - unset($items); - - if (! $preserve) { - @rmdir($directory); - } - - return true; - } - - /** - * Remove all of the directories within a given directory. - * - * @param string $directory - * @return bool - */ - public function deleteDirectories($directory) - { - $allDirectories = $this->directories($directory); - - if (! empty($allDirectories)) { - foreach ($allDirectories as $directoryName) { - $this->deleteDirectory($directoryName); - } - - return true; - } - - return false; - } - - /** - * Empty the specified directory of all files and folders. - * - * @param string $directory - * @return bool - */ - public function cleanDirectory($directory) - { - return $this->deleteDirectory($directory, true); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Foundation/Application.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Foundation/Application.php deleted file mode 100755 index c1f2296f..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Foundation/Application.php +++ /dev/null @@ -1,1534 +0,0 @@ -setBasePath($basePath); - } - - $this->registerBaseBindings(); - $this->registerBaseServiceProviders(); - $this->registerCoreContainerAliases(); - } - - /** - * Get the version number of the application. - * - * @return string - */ - public function version() - { - return static::VERSION; - } - - /** - * Register the basic bindings into the container. - * - * @return void - */ - protected function registerBaseBindings() - { - static::setInstance($this); - - $this->instance('app', $this); - - $this->instance(Container::class, $this); - $this->singleton(Mix::class); - - $this->singleton(PackageManifest::class, fn () => new PackageManifest( - new Filesystem, $this->basePath(), $this->getCachedPackagesPath() - )); - } - - /** - * Register all of the base service providers. - * - * @return void - */ - protected function registerBaseServiceProviders() - { - $this->register(new EventServiceProvider($this)); - $this->register(new LogServiceProvider($this)); - $this->register(new RoutingServiceProvider($this)); - } - - /** - * Run the given array of bootstrap classes. - * - * @param string[] $bootstrappers - * @return void - */ - public function bootstrapWith(array $bootstrappers) - { - $this->hasBeenBootstrapped = true; - - foreach ($bootstrappers as $bootstrapper) { - $this['events']->dispatch('bootstrapping: '.$bootstrapper, [$this]); - - $this->make($bootstrapper)->bootstrap($this); - - $this['events']->dispatch('bootstrapped: '.$bootstrapper, [$this]); - } - } - - /** - * Register a callback to run after loading the environment. - * - * @param \Closure $callback - * @return void - */ - public function afterLoadingEnvironment(Closure $callback) - { - $this->afterBootstrapping( - LoadEnvironmentVariables::class, $callback - ); - } - - /** - * Register a callback to run before a bootstrapper. - * - * @param string $bootstrapper - * @param \Closure $callback - * @return void - */ - public function beforeBootstrapping($bootstrapper, Closure $callback) - { - $this['events']->listen('bootstrapping: '.$bootstrapper, $callback); - } - - /** - * Register a callback to run after a bootstrapper. - * - * @param string $bootstrapper - * @param \Closure $callback - * @return void - */ - public function afterBootstrapping($bootstrapper, Closure $callback) - { - $this['events']->listen('bootstrapped: '.$bootstrapper, $callback); - } - - /** - * Determine if the application has been bootstrapped before. - * - * @return bool - */ - public function hasBeenBootstrapped() - { - return $this->hasBeenBootstrapped; - } - - /** - * Set the base path for the application. - * - * @param string $basePath - * @return $this - */ - public function setBasePath($basePath) - { - $this->basePath = rtrim($basePath, '\/'); - - $this->bindPathsInContainer(); - - return $this; - } - - /** - * Bind all of the application paths in the container. - * - * @return void - */ - protected function bindPathsInContainer() - { - $this->instance('path', $this->path()); - $this->instance('path.base', $this->basePath()); - $this->instance('path.config', $this->configPath()); - $this->instance('path.database', $this->databasePath()); - $this->instance('path.public', $this->publicPath()); - $this->instance('path.resources', $this->resourcePath()); - $this->instance('path.storage', $this->storagePath()); - - $this->useBootstrapPath(value(function () { - return is_dir($directory = $this->basePath('.laravel')) - ? $directory - : $this->basePath('bootstrap'); - })); - - $this->useLangPath(value(function () { - return is_dir($directory = $this->resourcePath('lang')) - ? $directory - : $this->basePath('lang'); - })); - } - - /** - * Get the path to the application "app" directory. - * - * @param string $path - * @return string - */ - public function path($path = '') - { - return $this->joinPaths($this->appPath ?: $this->basePath('app'), $path); - } - - /** - * Set the application directory. - * - * @param string $path - * @return $this - */ - public function useAppPath($path) - { - $this->appPath = $path; - - $this->instance('path', $path); - - return $this; - } - - /** - * Get the base path of the Laravel installation. - * - * @param string $path - * @return string - */ - public function basePath($path = '') - { - return $this->joinPaths($this->basePath, $path); - } - - /** - * Get the path to the bootstrap directory. - * - * @param string $path - * @return string - */ - public function bootstrapPath($path = '') - { - return $this->joinPaths($this->bootstrapPath, $path); - } - - /** - * Set the bootstrap file directory. - * - * @param string $path - * @return $this - */ - public function useBootstrapPath($path) - { - $this->bootstrapPath = $path; - - $this->instance('path.bootstrap', $path); - - return $this; - } - - /** - * Get the path to the application configuration files. - * - * @param string $path - * @return string - */ - public function configPath($path = '') - { - return $this->joinPaths($this->configPath ?: $this->basePath('config'), $path); - } - - /** - * Set the configuration directory. - * - * @param string $path - * @return $this - */ - public function useConfigPath($path) - { - $this->configPath = $path; - - $this->instance('path.config', $path); - - return $this; - } - - /** - * Get the path to the database directory. - * - * @param string $path - * @return string - */ - public function databasePath($path = '') - { - return $this->joinPaths($this->databasePath ?: $this->basePath('database'), $path); - } - - /** - * Set the database directory. - * - * @param string $path - * @return $this - */ - public function useDatabasePath($path) - { - $this->databasePath = $path; - - $this->instance('path.database', $path); - - return $this; - } - - /** - * Get the path to the language files. - * - * @param string $path - * @return string - */ - public function langPath($path = '') - { - return $this->joinPaths($this->langPath, $path); - } - - /** - * Set the language file directory. - * - * @param string $path - * @return $this - */ - public function useLangPath($path) - { - $this->langPath = $path; - - $this->instance('path.lang', $path); - - return $this; - } - - /** - * Get the path to the public / web directory. - * - * @param string $path - * @return string - */ - public function publicPath($path = '') - { - return $this->joinPaths($this->publicPath ?: $this->basePath('public'), $path); - } - - /** - * Set the public / web directory. - * - * @param string $path - * @return $this - */ - public function usePublicPath($path) - { - $this->publicPath = $path; - - $this->instance('path.public', $path); - - return $this; - } - - /** - * Get the path to the storage directory. - * - * @param string $path - * @return string - */ - public function storagePath($path = '') - { - if (isset($_ENV['LARAVEL_STORAGE_PATH'])) { - return $this->joinPaths($this->storagePath ?: $_ENV['LARAVEL_STORAGE_PATH'], $path); - } - - if (isset($_SERVER['LARAVEL_STORAGE_PATH'])) { - return $this->joinPaths($this->storagePath ?: $_SERVER['LARAVEL_STORAGE_PATH'], $path); - } - - return $this->joinPaths($this->storagePath ?: $this->basePath('storage'), $path); - } - - /** - * Set the storage directory. - * - * @param string $path - * @return $this - */ - public function useStoragePath($path) - { - $this->storagePath = $path; - - $this->instance('path.storage', $path); - - return $this; - } - - /** - * Get the path to the resources directory. - * - * @param string $path - * @return string - */ - public function resourcePath($path = '') - { - return $this->joinPaths($this->basePath('resources'), $path); - } - - /** - * Get the path to the views directory. - * - * This method returns the first configured path in the array of view paths. - * - * @param string $path - * @return string - */ - public function viewPath($path = '') - { - $viewPath = rtrim($this['config']->get('view.paths')[0], DIRECTORY_SEPARATOR); - - return $this->joinPaths($viewPath, $path); - } - - /** - * Join the given paths together. - * - * @param string $basePath - * @param string $path - * @return string - */ - public function joinPaths($basePath, $path = '') - { - return join_paths($basePath, $path); - } - - /** - * Get the path to the environment file directory. - * - * @return string - */ - public function environmentPath() - { - return $this->environmentPath ?: $this->basePath; - } - - /** - * Set the directory for the environment file. - * - * @param string $path - * @return $this - */ - public function useEnvironmentPath($path) - { - $this->environmentPath = $path; - - return $this; - } - - /** - * Set the environment file to be loaded during bootstrapping. - * - * @param string $file - * @return $this - */ - public function loadEnvironmentFrom($file) - { - $this->environmentFile = $file; - - return $this; - } - - /** - * Get the environment file the application is using. - * - * @return string - */ - public function environmentFile() - { - return $this->environmentFile ?: '.env'; - } - - /** - * Get the fully qualified path to the environment file. - * - * @return string - */ - public function environmentFilePath() - { - return $this->environmentPath().DIRECTORY_SEPARATOR.$this->environmentFile(); - } - - /** - * Get or check the current application environment. - * - * @param string|array ...$environments - * @return string|bool - */ - public function environment(...$environments) - { - if (count($environments) > 0) { - $patterns = is_array($environments[0]) ? $environments[0] : $environments; - - return Str::is($patterns, $this['env']); - } - - return $this['env']; - } - - /** - * Determine if the application is in the local environment. - * - * @return bool - */ - public function isLocal() - { - return $this['env'] === 'local'; - } - - /** - * Determine if the application is in the production environment. - * - * @return bool - */ - public function isProduction() - { - return $this['env'] === 'production'; - } - - /** - * Detect the application's current environment. - * - * @param \Closure $callback - * @return string - */ - public function detectEnvironment(Closure $callback) - { - $args = $this->runningInConsole() && isset($_SERVER['argv']) - ? $_SERVER['argv'] - : null; - - return $this['env'] = (new EnvironmentDetector)->detect($callback, $args); - } - - /** - * Determine if the application is running in the console. - * - * @return bool - */ - public function runningInConsole() - { - if ($this->isRunningInConsole === null) { - $this->isRunningInConsole = Env::get('APP_RUNNING_IN_CONSOLE') ?? (\PHP_SAPI === 'cli' || \PHP_SAPI === 'phpdbg'); - } - - return $this->isRunningInConsole; - } - - /** - * Determine if the application is running any of the given console commands. - * - * @param string|array ...$commands - * @return bool - */ - public function runningConsoleCommand(...$commands) - { - if (! $this->runningInConsole()) { - return false; - } - - return in_array( - $_SERVER['argv'][1] ?? null, - is_array($commands[0]) ? $commands[0] : $commands - ); - } - - /** - * Determine if the application is running unit tests. - * - * @return bool - */ - public function runningUnitTests() - { - return $this->bound('env') && $this['env'] === 'testing'; - } - - /** - * Determine if the application is running with debug mode enabled. - * - * @return bool - */ - public function hasDebugModeEnabled() - { - return (bool) $this['config']->get('app.debug'); - } - - /** - * Register all of the configured providers. - * - * @return void - */ - public function registerConfiguredProviders() - { - $providers = Collection::make($this->make('config')->get('app.providers')) - ->partition(fn ($provider) => str_starts_with($provider, 'Illuminate\\')); - - $providers->splice(1, 0, [$this->make(PackageManifest::class)->providers()]); - - (new ProviderRepository($this, new Filesystem, $this->getCachedServicesPath())) - ->load($providers->collapse()->toArray()); - } - - /** - * Register a service provider with the application. - * - * @param \Illuminate\Support\ServiceProvider|string $provider - * @param bool $force - * @return \Illuminate\Support\ServiceProvider - */ - public function register($provider, $force = false) - { - if (($registered = $this->getProvider($provider)) && ! $force) { - return $registered; - } - - // If the given "provider" is a string, we will resolve it, passing in the - // application instance automatically for the developer. This is simply - // a more convenient way of specifying your service provider classes. - if (is_string($provider)) { - $provider = $this->resolveProvider($provider); - } - - $provider->register(); - - // If there are bindings / singletons set as properties on the provider we - // will spin through them and register them with the application, which - // serves as a convenience layer while registering a lot of bindings. - if (property_exists($provider, 'bindings')) { - foreach ($provider->bindings as $key => $value) { - $this->bind($key, $value); - } - } - - if (property_exists($provider, 'singletons')) { - foreach ($provider->singletons as $key => $value) { - $key = is_int($key) ? $value : $key; - - $this->singleton($key, $value); - } - } - - $this->markAsRegistered($provider); - - // If the application has already booted, we will call this boot method on - // the provider class so it has an opportunity to do its boot logic and - // will be ready for any usage by this developer's application logic. - if ($this->isBooted()) { - $this->bootProvider($provider); - } - - return $provider; - } - - /** - * Get the registered service provider instance if it exists. - * - * @param \Illuminate\Support\ServiceProvider|string $provider - * @return \Illuminate\Support\ServiceProvider|null - */ - public function getProvider($provider) - { - return array_values($this->getProviders($provider))[0] ?? null; - } - - /** - * Get the registered service provider instances if any exist. - * - * @param \Illuminate\Support\ServiceProvider|string $provider - * @return array - */ - public function getProviders($provider) - { - $name = is_string($provider) ? $provider : get_class($provider); - - return Arr::where($this->serviceProviders, fn ($value) => $value instanceof $name); - } - - /** - * Resolve a service provider instance from the class name. - * - * @param string $provider - * @return \Illuminate\Support\ServiceProvider - */ - public function resolveProvider($provider) - { - return new $provider($this); - } - - /** - * Mark the given provider as registered. - * - * @param \Illuminate\Support\ServiceProvider $provider - * @return void - */ - protected function markAsRegistered($provider) - { - $this->serviceProviders[] = $provider; - - $this->loadedProviders[get_class($provider)] = true; - } - - /** - * Load and boot all of the remaining deferred providers. - * - * @return void - */ - public function loadDeferredProviders() - { - // We will simply spin through each of the deferred providers and register each - // one and boot them if the application has booted. This should make each of - // the remaining services available to this application for immediate use. - foreach ($this->deferredServices as $service => $provider) { - $this->loadDeferredProvider($service); - } - - $this->deferredServices = []; - } - - /** - * Load the provider for a deferred service. - * - * @param string $service - * @return void - */ - public function loadDeferredProvider($service) - { - if (! $this->isDeferredService($service)) { - return; - } - - $provider = $this->deferredServices[$service]; - - // If the service provider has not already been loaded and registered we can - // register it with the application and remove the service from this list - // of deferred services, since it will already be loaded on subsequent. - if (! isset($this->loadedProviders[$provider])) { - $this->registerDeferredProvider($provider, $service); - } - } - - /** - * Register a deferred provider and service. - * - * @param string $provider - * @param string|null $service - * @return void - */ - public function registerDeferredProvider($provider, $service = null) - { - // Once the provider that provides the deferred service has been registered we - // will remove it from our local list of the deferred services with related - // providers so that this container does not try to resolve it out again. - if ($service) { - unset($this->deferredServices[$service]); - } - - $this->register($instance = new $provider($this)); - - if (! $this->isBooted()) { - $this->booting(function () use ($instance) { - $this->bootProvider($instance); - }); - } - } - - /** - * Resolve the given type from the container. - * - * @param string $abstract - * @param array $parameters - * @return mixed - */ - public function make($abstract, array $parameters = []) - { - $this->loadDeferredProviderIfNeeded($abstract = $this->getAlias($abstract)); - - return parent::make($abstract, $parameters); - } - - /** - * Resolve the given type from the container. - * - * @param string $abstract - * @param array $parameters - * @param bool $raiseEvents - * @return mixed - */ - protected function resolve($abstract, $parameters = [], $raiseEvents = true) - { - $this->loadDeferredProviderIfNeeded($abstract = $this->getAlias($abstract)); - - return parent::resolve($abstract, $parameters, $raiseEvents); - } - - /** - * Load the deferred provider if the given type is a deferred service and the instance has not been loaded. - * - * @param string $abstract - * @return void - */ - protected function loadDeferredProviderIfNeeded($abstract) - { - if ($this->isDeferredService($abstract) && ! isset($this->instances[$abstract])) { - $this->loadDeferredProvider($abstract); - } - } - - /** - * Determine if the given abstract type has been bound. - * - * @param string $abstract - * @return bool - */ - public function bound($abstract) - { - return $this->isDeferredService($abstract) || parent::bound($abstract); - } - - /** - * Determine if the application has booted. - * - * @return bool - */ - public function isBooted() - { - return $this->booted; - } - - /** - * Boot the application's service providers. - * - * @return void - */ - public function boot() - { - if ($this->isBooted()) { - return; - } - - // Once the application has booted we will also fire some "booted" callbacks - // for any listeners that need to do work after this initial booting gets - // finished. This is useful when ordering the boot-up processes we run. - $this->fireAppCallbacks($this->bootingCallbacks); - - array_walk($this->serviceProviders, function ($p) { - $this->bootProvider($p); - }); - - $this->booted = true; - - $this->fireAppCallbacks($this->bootedCallbacks); - } - - /** - * Boot the given service provider. - * - * @param \Illuminate\Support\ServiceProvider $provider - * @return void - */ - protected function bootProvider(ServiceProvider $provider) - { - $provider->callBootingCallbacks(); - - if (method_exists($provider, 'boot')) { - $this->call([$provider, 'boot']); - } - - $provider->callBootedCallbacks(); - } - - /** - * Register a new boot listener. - * - * @param callable $callback - * @return void - */ - public function booting($callback) - { - $this->bootingCallbacks[] = $callback; - } - - /** - * Register a new "booted" listener. - * - * @param callable $callback - * @return void - */ - public function booted($callback) - { - $this->bootedCallbacks[] = $callback; - - if ($this->isBooted()) { - $callback($this); - } - } - - /** - * Call the booting callbacks for the application. - * - * @param callable[] $callbacks - * @return void - */ - protected function fireAppCallbacks(array &$callbacks) - { - $index = 0; - - while ($index < count($callbacks)) { - $callbacks[$index]($this); - - $index++; - } - } - - /** - * {@inheritdoc} - * - * @return \Symfony\Component\HttpFoundation\Response - */ - public function handle(SymfonyRequest $request, int $type = self::MAIN_REQUEST, bool $catch = true): SymfonyResponse - { - return $this[HttpKernelContract::class]->handle(Request::createFromBase($request)); - } - - /** - * Determine if middleware has been disabled for the application. - * - * @return bool - */ - public function shouldSkipMiddleware() - { - return $this->bound('middleware.disable') && - $this->make('middleware.disable') === true; - } - - /** - * Get the path to the cached services.php file. - * - * @return string - */ - public function getCachedServicesPath() - { - return $this->normalizeCachePath('APP_SERVICES_CACHE', 'cache/services.php'); - } - - /** - * Get the path to the cached packages.php file. - * - * @return string - */ - public function getCachedPackagesPath() - { - return $this->normalizeCachePath('APP_PACKAGES_CACHE', 'cache/packages.php'); - } - - /** - * Determine if the application configuration is cached. - * - * @return bool - */ - public function configurationIsCached() - { - return is_file($this->getCachedConfigPath()); - } - - /** - * Get the path to the configuration cache file. - * - * @return string - */ - public function getCachedConfigPath() - { - return $this->normalizeCachePath('APP_CONFIG_CACHE', 'cache/config.php'); - } - - /** - * Determine if the application routes are cached. - * - * @return bool - */ - public function routesAreCached() - { - return $this['files']->exists($this->getCachedRoutesPath()); - } - - /** - * Get the path to the routes cache file. - * - * @return string - */ - public function getCachedRoutesPath() - { - return $this->normalizeCachePath('APP_ROUTES_CACHE', 'cache/routes-v7.php'); - } - - /** - * Determine if the application events are cached. - * - * @return bool - */ - public function eventsAreCached() - { - return $this['files']->exists($this->getCachedEventsPath()); - } - - /** - * Get the path to the events cache file. - * - * @return string - */ - public function getCachedEventsPath() - { - return $this->normalizeCachePath('APP_EVENTS_CACHE', 'cache/events.php'); - } - - /** - * Normalize a relative or absolute path to a cache file. - * - * @param string $key - * @param string $default - * @return string - */ - protected function normalizeCachePath($key, $default) - { - if (is_null($env = Env::get($key))) { - return $this->bootstrapPath($default); - } - - return Str::startsWith($env, $this->absoluteCachePathPrefixes) - ? $env - : $this->basePath($env); - } - - /** - * Add new prefix to list of absolute path prefixes. - * - * @param string $prefix - * @return $this - */ - public function addAbsoluteCachePathPrefix($prefix) - { - $this->absoluteCachePathPrefixes[] = $prefix; - - return $this; - } - - /** - * Get an instance of the maintenance mode manager implementation. - * - * @return \Illuminate\Contracts\Foundation\MaintenanceMode - */ - public function maintenanceMode() - { - return $this->make(MaintenanceModeContract::class); - } - - /** - * Determine if the application is currently down for maintenance. - * - * @return bool - */ - public function isDownForMaintenance() - { - return $this->maintenanceMode()->active(); - } - - /** - * Throw an HttpException with the given data. - * - * @param int $code - * @param string $message - * @param array $headers - * @return never - * - * @throws \Symfony\Component\HttpKernel\Exception\HttpException - * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException - */ - public function abort($code, $message = '', array $headers = []) - { - if ($code == 404) { - throw new NotFoundHttpException($message, null, 0, $headers); - } - - throw new HttpException($code, $message, null, $headers); - } - - /** - * Register a terminating callback with the application. - * - * @param callable|string $callback - * @return $this - */ - public function terminating($callback) - { - $this->terminatingCallbacks[] = $callback; - - return $this; - } - - /** - * Terminate the application. - * - * @return void - */ - public function terminate() - { - $index = 0; - - while ($index < count($this->terminatingCallbacks)) { - $this->call($this->terminatingCallbacks[$index]); - - $index++; - } - } - - /** - * Get the service providers that have been loaded. - * - * @return array - */ - public function getLoadedProviders() - { - return $this->loadedProviders; - } - - /** - * Determine if the given service provider is loaded. - * - * @param string $provider - * @return bool - */ - public function providerIsLoaded(string $provider) - { - return isset($this->loadedProviders[$provider]); - } - - /** - * Get the application's deferred services. - * - * @return array - */ - public function getDeferredServices() - { - return $this->deferredServices; - } - - /** - * Set the application's deferred services. - * - * @param array $services - * @return void - */ - public function setDeferredServices(array $services) - { - $this->deferredServices = $services; - } - - /** - * Add an array of services to the application's deferred services. - * - * @param array $services - * @return void - */ - public function addDeferredServices(array $services) - { - $this->deferredServices = array_merge($this->deferredServices, $services); - } - - /** - * Determine if the given service is a deferred service. - * - * @param string $service - * @return bool - */ - public function isDeferredService($service) - { - return isset($this->deferredServices[$service]); - } - - /** - * Configure the real-time facade namespace. - * - * @param string $namespace - * @return void - */ - public function provideFacades($namespace) - { - AliasLoader::setFacadeNamespace($namespace); - } - - /** - * Get the current application locale. - * - * @return string - */ - public function getLocale() - { - return $this['config']->get('app.locale'); - } - - /** - * Get the current application locale. - * - * @return string - */ - public function currentLocale() - { - return $this->getLocale(); - } - - /** - * Get the current application fallback locale. - * - * @return string - */ - public function getFallbackLocale() - { - return $this['config']->get('app.fallback_locale'); - } - - /** - * Set the current application locale. - * - * @param string $locale - * @return void - */ - public function setLocale($locale) - { - $this['config']->set('app.locale', $locale); - - $this['translator']->setLocale($locale); - - $this['events']->dispatch(new LocaleUpdated($locale)); - } - - /** - * Set the current application fallback locale. - * - * @param string $fallbackLocale - * @return void - */ - public function setFallbackLocale($fallbackLocale) - { - $this['config']->set('app.fallback_locale', $fallbackLocale); - - $this['translator']->setFallback($fallbackLocale); - } - - /** - * Determine if the application locale is the given locale. - * - * @param string $locale - * @return bool - */ - public function isLocale($locale) - { - return $this->getLocale() == $locale; - } - - /** - * Register the core class aliases in the container. - * - * @return void - */ - public function registerCoreContainerAliases() - { - foreach ([ - 'app' => [self::class, \Illuminate\Contracts\Container\Container::class, \Illuminate\Contracts\Foundation\Application::class, \Psr\Container\ContainerInterface::class], - 'auth' => [\Illuminate\Auth\AuthManager::class, \Illuminate\Contracts\Auth\Factory::class], - 'auth.driver' => [\Illuminate\Contracts\Auth\Guard::class], - 'blade.compiler' => [\Illuminate\View\Compilers\BladeCompiler::class], - 'cache' => [\Illuminate\Cache\CacheManager::class, \Illuminate\Contracts\Cache\Factory::class], - 'cache.store' => [\Illuminate\Cache\Repository::class, \Illuminate\Contracts\Cache\Repository::class, \Psr\SimpleCache\CacheInterface::class], - 'cache.psr6' => [\Symfony\Component\Cache\Adapter\Psr16Adapter::class, \Symfony\Component\Cache\Adapter\AdapterInterface::class, \Psr\Cache\CacheItemPoolInterface::class], - 'config' => [\Illuminate\Config\Repository::class, \Illuminate\Contracts\Config\Repository::class], - 'cookie' => [\Illuminate\Cookie\CookieJar::class, \Illuminate\Contracts\Cookie\Factory::class, \Illuminate\Contracts\Cookie\QueueingFactory::class], - 'db' => [\Illuminate\Database\DatabaseManager::class, \Illuminate\Database\ConnectionResolverInterface::class], - 'db.connection' => [\Illuminate\Database\Connection::class, \Illuminate\Database\ConnectionInterface::class], - 'db.schema' => [\Illuminate\Database\Schema\Builder::class], - 'encrypter' => [\Illuminate\Encryption\Encrypter::class, \Illuminate\Contracts\Encryption\Encrypter::class, \Illuminate\Contracts\Encryption\StringEncrypter::class], - 'events' => [\Illuminate\Events\Dispatcher::class, \Illuminate\Contracts\Events\Dispatcher::class], - 'files' => [\Illuminate\Filesystem\Filesystem::class], - 'filesystem' => [\Illuminate\Filesystem\FilesystemManager::class, \Illuminate\Contracts\Filesystem\Factory::class], - 'filesystem.disk' => [\Illuminate\Contracts\Filesystem\Filesystem::class], - 'filesystem.cloud' => [\Illuminate\Contracts\Filesystem\Cloud::class], - 'hash' => [\Illuminate\Hashing\HashManager::class], - 'hash.driver' => [\Illuminate\Contracts\Hashing\Hasher::class], - 'translator' => [\Illuminate\Translation\Translator::class, \Illuminate\Contracts\Translation\Translator::class], - 'log' => [\Illuminate\Log\LogManager::class, \Psr\Log\LoggerInterface::class], - 'mail.manager' => [\Illuminate\Mail\MailManager::class, \Illuminate\Contracts\Mail\Factory::class], - 'mailer' => [\Illuminate\Mail\Mailer::class, \Illuminate\Contracts\Mail\Mailer::class, \Illuminate\Contracts\Mail\MailQueue::class], - 'auth.password' => [\Illuminate\Auth\Passwords\PasswordBrokerManager::class, \Illuminate\Contracts\Auth\PasswordBrokerFactory::class], - 'auth.password.broker' => [\Illuminate\Auth\Passwords\PasswordBroker::class, \Illuminate\Contracts\Auth\PasswordBroker::class], - 'queue' => [\Illuminate\Queue\QueueManager::class, \Illuminate\Contracts\Queue\Factory::class, \Illuminate\Contracts\Queue\Monitor::class], - 'queue.connection' => [\Illuminate\Contracts\Queue\Queue::class], - 'queue.failer' => [\Illuminate\Queue\Failed\FailedJobProviderInterface::class], - 'redirect' => [\Illuminate\Routing\Redirector::class], - 'redis' => [\Illuminate\Redis\RedisManager::class, \Illuminate\Contracts\Redis\Factory::class], - 'redis.connection' => [\Illuminate\Redis\Connections\Connection::class, \Illuminate\Contracts\Redis\Connection::class], - 'request' => [\Illuminate\Http\Request::class, \Symfony\Component\HttpFoundation\Request::class], - 'router' => [\Illuminate\Routing\Router::class, \Illuminate\Contracts\Routing\Registrar::class, \Illuminate\Contracts\Routing\BindingRegistrar::class], - 'session' => [\Illuminate\Session\SessionManager::class], - 'session.store' => [\Illuminate\Session\Store::class, \Illuminate\Contracts\Session\Session::class], - 'url' => [\Illuminate\Routing\UrlGenerator::class, \Illuminate\Contracts\Routing\UrlGenerator::class], - 'validator' => [\Illuminate\Validation\Factory::class, \Illuminate\Contracts\Validation\Factory::class], - 'view' => [\Illuminate\View\Factory::class, \Illuminate\Contracts\View\Factory::class], - ] as $key => $aliases) { - foreach ($aliases as $alias) { - $this->alias($key, $alias); - } - } - } - - /** - * Flush the container of all bindings and resolved instances. - * - * @return void - */ - public function flush() - { - parent::flush(); - - $this->buildStack = []; - $this->loadedProviders = []; - $this->bootedCallbacks = []; - $this->bootingCallbacks = []; - $this->deferredServices = []; - $this->reboundCallbacks = []; - $this->serviceProviders = []; - $this->resolvingCallbacks = []; - $this->terminatingCallbacks = []; - $this->beforeResolvingCallbacks = []; - $this->afterResolvingCallbacks = []; - $this->globalBeforeResolvingCallbacks = []; - $this->globalResolvingCallbacks = []; - $this->globalAfterResolvingCallbacks = []; - } - - /** - * Get the application namespace. - * - * @return string - * - * @throws \RuntimeException - */ - public function getNamespace() - { - if (! is_null($this->namespace)) { - return $this->namespace; - } - - $composer = json_decode(file_get_contents($this->basePath('composer.json')), true); - - foreach ((array) data_get($composer, 'autoload.psr-4') as $namespace => $path) { - foreach ((array) $path as $pathChoice) { - if (realpath($this->path()) === realpath($this->basePath($pathChoice))) { - return $this->namespace = $namespace; - } - } - } - - throw new RuntimeException('Unable to detect application namespace.'); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/LoadEnvironmentVariables.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/LoadEnvironmentVariables.php deleted file mode 100644 index 050a9696..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/LoadEnvironmentVariables.php +++ /dev/null @@ -1,110 +0,0 @@ -configurationIsCached()) { - return; - } - - $this->checkForSpecificEnvironmentFile($app); - - try { - $this->createDotenv($app)->safeLoad(); - } catch (InvalidFileException $e) { - $this->writeErrorAndDie($e); - } - } - - /** - * Detect if a custom environment file matching the APP_ENV exists. - * - * @param \Illuminate\Contracts\Foundation\Application $app - * @return void - */ - protected function checkForSpecificEnvironmentFile($app) - { - if ($app->runningInConsole() && - ($input = new ArgvInput)->hasParameterOption('--env') && - $this->setEnvironmentFilePath($app, $app->environmentFile().'.'.$input->getParameterOption('--env'))) { - return; - } - - $environment = Env::get('APP_ENV'); - - if (! $environment) { - return; - } - - $this->setEnvironmentFilePath( - $app, $app->environmentFile().'.'.$environment - ); - } - - /** - * Load a custom environment file. - * - * @param \Illuminate\Contracts\Foundation\Application $app - * @param string $file - * @return bool - */ - protected function setEnvironmentFilePath($app, $file) - { - if (is_file($app->environmentPath().'/'.$file)) { - $app->loadEnvironmentFrom($file); - - return true; - } - - return false; - } - - /** - * Create a Dotenv instance. - * - * @param \Illuminate\Contracts\Foundation\Application $app - * @return \Dotenv\Dotenv - */ - protected function createDotenv($app) - { - return Dotenv::create( - Env::getRepository(), - $app->environmentPath(), - $app->environmentFile() - ); - } - - /** - * Write the error information to the screen and exit. - * - * @param \Dotenv\Exception\InvalidFileException $e - * @return never - */ - protected function writeErrorAndDie(InvalidFileException $e) - { - $output = (new ConsoleOutput)->getErrorOutput(); - - $output->writeln('The environment file is invalid!'); - $output->writeln($e->getMessage()); - - http_response_code(500); - - exit(1); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Foundation/Console/AboutCommand.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Foundation/Console/AboutCommand.php deleted file mode 100644 index 1a078a68..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Foundation/Console/AboutCommand.php +++ /dev/null @@ -1,317 +0,0 @@ -composer = $composer; - } - - /** - * Execute the console command. - * - * @return int - */ - public function handle() - { - $this->gatherApplicationInformation(); - - collect(static::$data) - ->map(fn ($items) => collect($items) - ->map(function ($value) { - if (is_array($value)) { - return [$value]; - } - - if (is_string($value)) { - $value = $this->laravel->make($value); - } - - return collect($this->laravel->call($value)) - ->map(fn ($value, $key) => [$key, $value]) - ->values() - ->all(); - })->flatten(1) - ) - ->sortBy(function ($data, $key) { - $index = array_search($key, ['Environment', 'Cache', 'Drivers']); - - return $index === false ? 99 : $index; - }) - ->filter(function ($data, $key) { - return $this->option('only') ? in_array($this->toSearchKeyword($key), $this->sections()) : true; - }) - ->pipe(fn ($data) => $this->display($data)); - - $this->newLine(); - - return 0; - } - - /** - * Display the application information. - * - * @param \Illuminate\Support\Collection $data - * @return void - */ - protected function display($data) - { - $this->option('json') ? $this->displayJson($data) : $this->displayDetail($data); - } - - /** - * Display the application information as a detail view. - * - * @param \Illuminate\Support\Collection $data - * @return void - */ - protected function displayDetail($data) - { - $data->each(function ($data, $section) { - $this->newLine(); - - $this->components->twoColumnDetail(' '.$section.''); - - $data->pipe(fn ($data) => $section !== 'Environment' ? $data->sort() : $data)->each(function ($detail) { - [$label, $value] = $detail; - - $this->components->twoColumnDetail($label, value($value, false)); - }); - }); - } - - /** - * Display the application information as JSON. - * - * @param \Illuminate\Support\Collection $data - * @return void - */ - protected function displayJson($data) - { - $output = $data->flatMap(function ($data, $section) { - return [ - (string) Str::of($section)->snake() => $data->mapWithKeys(fn ($item, $key) => [ - $this->toSearchKeyword($item[0]) => value($item[1], true), - ]), - ]; - }); - - $this->output->writeln(strip_tags(json_encode($output))); - } - - /** - * Gather information about the application. - * - * @return void - */ - protected function gatherApplicationInformation() - { - self::$data = []; - - $formatEnabledStatus = fn ($value) => $value ? 'ENABLED' : 'OFF'; - $formatCachedStatus = fn ($value) => $value ? 'CACHED' : 'NOT CACHED'; - - static::addToSection('Environment', fn () => [ - 'Application Name' => config('app.name'), - 'Laravel Version' => $this->laravel->version(), - 'PHP Version' => phpversion(), - 'Composer Version' => $this->composer->getVersion() ?? '-', - 'Environment' => $this->laravel->environment(), - 'Debug Mode' => static::format(config('app.debug'), console: $formatEnabledStatus), - 'URL' => Str::of(config('app.url'))->replace(['http://', 'https://'], ''), - 'Maintenance Mode' => static::format($this->laravel->isDownForMaintenance(), console: $formatEnabledStatus), - ]); - - static::addToSection('Cache', fn () => [ - 'Config' => static::format($this->laravel->configurationIsCached(), console: $formatCachedStatus), - 'Events' => static::format($this->laravel->eventsAreCached(), console: $formatCachedStatus), - 'Routes' => static::format($this->laravel->routesAreCached(), console: $formatCachedStatus), - 'Views' => static::format($this->hasPhpFiles($this->laravel->storagePath('framework/views')), console: $formatCachedStatus), - ]); - - static::addToSection('Drivers', fn () => array_filter([ - 'Broadcasting' => config('broadcasting.default'), - 'Cache' => config('cache.default'), - 'Database' => config('database.default'), - 'Logs' => function ($json) { - $logChannel = config('logging.default'); - - if (config('logging.channels.'.$logChannel.'.driver') === 'stack') { - $secondary = collect(config('logging.channels.'.$logChannel.'.channels')); - - return value(static::format( - value: $logChannel, - console: fn ($value) => ''.$value.' / '.$secondary->implode(', '), - json: fn () => $secondary->all(), - ), $json); - } else { - $logs = $logChannel; - } - - return $logs; - }, - 'Mail' => config('mail.default'), - 'Octane' => config('octane.server'), - 'Queue' => config('queue.default'), - 'Scout' => config('scout.driver'), - 'Session' => config('session.driver'), - ])); - - collect(static::$customDataResolvers)->each->__invoke(); - } - - /** - * Determine whether the given directory has PHP files. - * - * @param string $path - * @return bool - */ - protected function hasPhpFiles(string $path): bool - { - return count(glob($path.'/*.php')) > 0; - } - - /** - * Add additional data to the output of the "about" command. - * - * @param string $section - * @param callable|string|array $data - * @param string|null $value - * @return void - */ - public static function add(string $section, $data, ?string $value = null) - { - static::$customDataResolvers[] = fn () => static::addToSection($section, $data, $value); - } - - /** - * Add additional data to the output of the "about" command. - * - * @param string $section - * @param callable|string|array $data - * @param string|null $value - * @return void - */ - protected static function addToSection(string $section, $data, ?string $value = null) - { - if (is_array($data)) { - foreach ($data as $key => $value) { - self::$data[$section][] = [$key, $value]; - } - } elseif (is_callable($data) || ($value === null && class_exists($data))) { - self::$data[$section][] = $data; - } else { - self::$data[$section][] = [$data, $value]; - } - } - - /** - * Get the sections provided to the command. - * - * @return array - */ - protected function sections() - { - return collect(explode(',', $this->option('only') ?? '')) - ->filter() - ->map(fn ($only) => $this->toSearchKeyword($only)) - ->all(); - } - - /** - * Materialize a function that formats a given value for CLI or JSON output. - * - * @param mixed $value - * @param (\Closure(mixed):(mixed))|null $console - * @param (\Closure(mixed):(mixed))|null $json - * @return \Closure(bool):mixed - */ - public static function format($value, ?Closure $console = null, ?Closure $json = null) - { - return function ($isJson) use ($value, $console, $json) { - if ($isJson === true && $json instanceof Closure) { - return value($json, $value); - } elseif ($isJson === false && $console instanceof Closure) { - return value($console, $value); - } - - return value($value); - }; - } - - /** - * Format the given string for searching. - * - * @param string $value - * @return string - */ - protected function toSearchKeyword(string $value) - { - return (string) Str::of($value)->lower()->snake(); - } - - /** - * Flush the registered about data. - * - * @return void - */ - public static function flushState() - { - static::$data = []; - - static::$customDataResolvers = []; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Foundation/Console/ServeCommand.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Foundation/Console/ServeCommand.php deleted file mode 100644 index df830148..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Foundation/Console/ServeCommand.php +++ /dev/null @@ -1,358 +0,0 @@ - - */ - protected $requestsPool; - - /** - * Indicates if the "Server running on..." output message has been displayed. - * - * @var bool - */ - protected $serverRunningHasBeenDisplayed = false; - - /** - * The environment variables that should be passed from host machine to the PHP server process. - * - * @var string[] - */ - public static $passthroughVariables = [ - 'APP_ENV', - 'HERD_PHP_81_INI_SCAN_DIR', - 'HERD_PHP_82_INI_SCAN_DIR', - 'HERD_PHP_83_INI_SCAN_DIR', - 'IGNITION_LOCAL_SITES_PATH', - 'LARAVEL_SAIL', - 'PATH', - 'PHP_CLI_SERVER_WORKERS', - 'PHP_IDE_CONFIG', - 'SYSTEMROOT', - 'XDEBUG_CONFIG', - 'XDEBUG_MODE', - 'XDEBUG_SESSION', - ]; - - /** - * Execute the console command. - * - * @return int - * - * @throws \Exception - */ - public function handle() - { - $environmentFile = $this->option('env') - ? base_path('.env').'.'.$this->option('env') - : base_path('.env'); - - $hasEnvironment = file_exists($environmentFile); - - $environmentLastModified = $hasEnvironment - ? filemtime($environmentFile) - : now()->addDays(30)->getTimestamp(); - - $process = $this->startProcess($hasEnvironment); - - while ($process->isRunning()) { - if ($hasEnvironment) { - clearstatcache(false, $environmentFile); - } - - if (! $this->option('no-reload') && - $hasEnvironment && - filemtime($environmentFile) > $environmentLastModified) { - $environmentLastModified = filemtime($environmentFile); - - $this->newLine(); - - $this->components->info('Environment modified. Restarting server...'); - - $process->stop(5); - - $this->serverRunningHasBeenDisplayed = false; - - $process = $this->startProcess($hasEnvironment); - } - - usleep(500 * 1000); - } - - $status = $process->getExitCode(); - - if ($status && $this->canTryAnotherPort()) { - $this->portOffset += 1; - - return $this->handle(); - } - - return $status; - } - - /** - * Start a new server process. - * - * @param bool $hasEnvironment - * @return \Symfony\Component\Process\Process - */ - protected function startProcess($hasEnvironment) - { - $process = new Process($this->serverCommand(), public_path(), collect($_ENV)->mapWithKeys(function ($value, $key) use ($hasEnvironment) { - if ($this->option('no-reload') || ! $hasEnvironment) { - return [$key => $value]; - } - - return in_array($key, static::$passthroughVariables) ? [$key => $value] : [$key => false]; - })->all()); - - $this->trap(fn () => [SIGTERM, SIGINT, SIGHUP, SIGUSR1, SIGUSR2, SIGQUIT], function ($signal) use ($process) { - if ($process->isRunning()) { - $process->stop(10, $signal); - } - - exit; - }); - - $process->start($this->handleProcessOutput()); - - return $process; - } - - /** - * Get the full server command. - * - * @return array - */ - protected function serverCommand() - { - $server = file_exists(base_path('server.php')) - ? base_path('server.php') - : __DIR__.'/../resources/server.php'; - - return [ - (new PhpExecutableFinder)->find(false), - '-S', - $this->host().':'.$this->port(), - $server, - ]; - } - - /** - * Get the host for the command. - * - * @return string - */ - protected function host() - { - [$host] = $this->getHostAndPort(); - - return $host; - } - - /** - * Get the port for the command. - * - * @return string - */ - protected function port() - { - $port = $this->input->getOption('port'); - - if (is_null($port)) { - [, $port] = $this->getHostAndPort(); - } - - $port = $port ?: 8000; - - return $port + $this->portOffset; - } - - /** - * Get the host and port from the host option string. - * - * @return array - */ - protected function getHostAndPort() - { - if (preg_match('/(\[.*\]):?([0-9]+)?/', $this->input->getOption('host'), $matches) !== false) { - return [ - $matches[1] ?? $this->input->getOption('host'), - $matches[2] ?? null, - ]; - } - - $hostParts = explode(':', $this->input->getOption('host')); - - return [ - $hostParts[0], - $hostParts[1] ?? null, - ]; - } - - /** - * Check if the command has reached its maximum number of port tries. - * - * @return bool - */ - protected function canTryAnotherPort() - { - return is_null($this->input->getOption('port')) && - ($this->input->getOption('tries') > $this->portOffset); - } - - /** - * Returns a "callable" to handle the process output. - * - * @return callable(string, string): void - */ - protected function handleProcessOutput() - { - return fn ($type, $buffer) => str($buffer)->explode("\n")->each(function ($line) { - if (str($line)->contains('Development Server (http')) { - if ($this->serverRunningHasBeenDisplayed) { - return; - } - - $this->components->info("Server running on [http://{$this->host()}:{$this->port()}]."); - $this->comment(' Press Ctrl+C to stop the server'); - - $this->newLine(); - - $this->serverRunningHasBeenDisplayed = true; - } elseif (str($line)->contains(' Accepted')) { - $requestPort = $this->getRequestPortFromLine($line); - - $this->requestsPool[$requestPort] = [ - $this->getDateFromLine($line), - false, - ]; - } elseif (str($line)->contains([' [200]: GET '])) { - $requestPort = $this->getRequestPortFromLine($line); - - $this->requestsPool[$requestPort][1] = trim(explode('[200]: GET', $line)[1]); - } elseif (str($line)->contains(' Closing')) { - $requestPort = $this->getRequestPortFromLine($line); - - if (empty($this->requestsPool[$requestPort])) { - return; - } - - [$startDate, $file] = $this->requestsPool[$requestPort]; - - $formattedStartedAt = $startDate->format('Y-m-d H:i:s'); - - unset($this->requestsPool[$requestPort]); - - [$date, $time] = explode(' ', $formattedStartedAt); - - $this->output->write(" $date $time"); - - $runTime = $this->getDateFromLine($line)->diffInSeconds($startDate); - - if ($file) { - $this->output->write($file = " $file"); - } - - $dots = max(terminal()->width() - mb_strlen($formattedStartedAt) - mb_strlen($file) - mb_strlen($runTime) - 9, 0); - - $this->output->write(' '.str_repeat('.', $dots)); - $this->output->writeln(" ~ {$runTime}s"); - } elseif (str($line)->contains(['Closed without sending a request', 'Failed to poll event'])) { - // ... - } elseif (! empty($line)) { - $position = strpos($line, '] '); - - if ($position !== false) { - $line = substr($line, $position + 1); - } - - $this->components->warn($line); - } - }); - } - - /** - * Get the date from the given PHP server output. - * - * @param string $line - * @return \Illuminate\Support\Carbon - */ - protected function getDateFromLine($line) - { - $regex = env('PHP_CLI_SERVER_WORKERS', 1) > 1 - ? '/^\[\d+]\s\[([a-zA-Z0-9: ]+)\]/' - : '/^\[([^\]]+)\]/'; - - $line = str_replace(' ', ' ', $line); - - preg_match($regex, $line, $matches); - - return Carbon::createFromFormat('D M d H:i:s Y', $matches[1]); - } - - /** - * Get the request port from the given PHP server output. - * - * @param string $line - * @return int - */ - protected function getRequestPortFromLine($line) - { - preg_match('/:(\d+)\s(?:(?:\w+$)|(?:\[.*))/', $line, $matches); - - return (int) $matches[1]; - } - - /** - * Get the console command options. - * - * @return array - */ - protected function getOptions() - { - return [ - ['host', null, InputOption::VALUE_OPTIONAL, 'The host address to serve the application on', Env::get('SERVER_HOST', '127.0.0.1')], - ['port', null, InputOption::VALUE_OPTIONAL, 'The port to serve the application on', Env::get('SERVER_PORT')], - ['tries', null, InputOption::VALUE_OPTIONAL, 'The max number of ports to attempt to serve from', 10], - ['no-reload', null, InputOption::VALUE_NONE, 'Do not reload the development server on .env file changes'], - ]; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Foundation/EnvironmentDetector.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Foundation/EnvironmentDetector.php deleted file mode 100644 index 8fa61bd2..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Foundation/EnvironmentDetector.php +++ /dev/null @@ -1,73 +0,0 @@ -detectConsoleEnvironment($callback, $consoleArgs); - } - - return $this->detectWebEnvironment($callback); - } - - /** - * Set the application environment for a web request. - * - * @param \Closure $callback - * @return string - */ - protected function detectWebEnvironment(Closure $callback) - { - return $callback(); - } - - /** - * Set the application environment from command-line arguments. - * - * @param \Closure $callback - * @param array $args - * @return string - */ - protected function detectConsoleEnvironment(Closure $callback, array $args) - { - // First we will check if an environment argument was passed via console arguments - // and if it was that automatically overrides as the environment. Otherwise, we - // will check the environment as a "web" request like a typical HTTP request. - if (! is_null($value = $this->getEnvironmentArgument($args))) { - return $value; - } - - return $this->detectWebEnvironment($callback); - } - - /** - * Get the environment argument from the console. - * - * @param array $args - * @return string|null - */ - protected function getEnvironmentArgument(array $args) - { - foreach ($args as $i => $value) { - if ($value === '--env') { - return $args[$i + 1] ?? null; - } - - if (str_starts_with($value, '--env=')) { - return head(array_slice(explode('=', $value), 1)); - } - } - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Foundation/Http/FormRequest.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Foundation/Http/FormRequest.php deleted file mode 100644 index 87a1e204..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Foundation/Http/FormRequest.php +++ /dev/null @@ -1,306 +0,0 @@ -validator) { - return $this->validator; - } - - $factory = $this->container->make(ValidationFactory::class); - - if (method_exists($this, 'validator')) { - $validator = $this->container->call([$this, 'validator'], compact('factory')); - } else { - $validator = $this->createDefaultValidator($factory); - } - - if (method_exists($this, 'withValidator')) { - $this->withValidator($validator); - } - - if (method_exists($this, 'after')) { - $validator->after($this->container->call( - $this->after(...), - ['validator' => $validator] - )); - } - - $this->setValidator($validator); - - return $this->validator; - } - - /** - * Create the default validator instance. - * - * @param \Illuminate\Contracts\Validation\Factory $factory - * @return \Illuminate\Contracts\Validation\Validator - */ - protected function createDefaultValidator(ValidationFactory $factory) - { - $rules = $this->validationRules(); - - $validator = $factory->make( - $this->validationData(), - $rules, - $this->messages(), - $this->attributes(), - )->stopOnFirstFailure($this->stopOnFirstFailure); - - if ($this->isPrecognitive()) { - $validator->setRules( - $this->filterPrecognitiveRules($validator->getRulesWithoutPlaceholders()) - ); - } - - return $validator; - } - - /** - * Get data to be validated from the request. - * - * @return array - */ - public function validationData() - { - return $this->all(); - } - - /** - * Get the validation rules for this form request. - * - * @return array - */ - protected function validationRules() - { - return method_exists($this, 'rules') ? $this->container->call([$this, 'rules']) : []; - } - - /** - * Handle a failed validation attempt. - * - * @param \Illuminate\Contracts\Validation\Validator $validator - * @return void - * - * @throws \Illuminate\Validation\ValidationException - */ - protected function failedValidation(Validator $validator) - { - $exception = $validator->getException(); - - throw (new $exception($validator)) - ->errorBag($this->errorBag) - ->redirectTo($this->getRedirectUrl()); - } - - /** - * Get the URL to redirect to on a validation error. - * - * @return string - */ - protected function getRedirectUrl() - { - $url = $this->redirector->getUrlGenerator(); - - if ($this->redirect) { - return $url->to($this->redirect); - } elseif ($this->redirectRoute) { - return $url->route($this->redirectRoute); - } elseif ($this->redirectAction) { - return $url->action($this->redirectAction); - } - - return $url->previous(); - } - - /** - * Determine if the request passes the authorization check. - * - * @return bool - * - * @throws \Illuminate\Auth\Access\AuthorizationException - */ - protected function passesAuthorization() - { - if (method_exists($this, 'authorize')) { - $result = $this->container->call([$this, 'authorize']); - - return $result instanceof Response ? $result->authorize() : $result; - } - - return true; - } - - /** - * Handle a failed authorization attempt. - * - * @return void - * - * @throws \Illuminate\Auth\Access\AuthorizationException - */ - protected function failedAuthorization() - { - throw new AuthorizationException; - } - - /** - * Get a validated input container for the validated input. - * - * @param array|null $keys - * @return \Illuminate\Support\ValidatedInput|array - */ - public function safe(?array $keys = null) - { - return is_array($keys) - ? $this->validator->safe()->only($keys) - : $this->validator->safe(); - } - - /** - * Get the validated data from the request. - * - * @param array|int|string|null $key - * @param mixed $default - * @return mixed - */ - public function validated($key = null, $default = null) - { - return data_get($this->validator->validated(), $key, $default); - } - - /** - * Get custom messages for validator errors. - * - * @return array - */ - public function messages() - { - return []; - } - - /** - * Get custom attributes for validator errors. - * - * @return array - */ - public function attributes() - { - return []; - } - - /** - * Set the Validator instance. - * - * @param \Illuminate\Contracts\Validation\Validator $validator - * @return $this - */ - public function setValidator(Validator $validator) - { - $this->validator = $validator; - - return $this; - } - - /** - * Set the Redirector instance. - * - * @param \Illuminate\Routing\Redirector $redirector - * @return $this - */ - public function setRedirector(Redirector $redirector) - { - $this->redirector = $redirector; - - return $this; - } - - /** - * Set the container implementation. - * - * @param \Illuminate\Contracts\Container\Container $container - * @return $this - */ - public function setContainer(Container $container) - { - $this->container = $container; - - return $this; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithContainer.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithContainer.php deleted file mode 100644 index b4aad547..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithContainer.php +++ /dev/null @@ -1,237 +0,0 @@ -instance($abstract, $instance); - } - - /** - * Register an instance of an object in the container. - * - * @param string $abstract - * @param object $instance - * @return object - */ - protected function instance($abstract, $instance) - { - $this->app->instance($abstract, $instance); - - return $instance; - } - - /** - * Mock an instance of an object in the container. - * - * @param string $abstract - * @param \Closure|null $mock - * @return \Mockery\MockInterface - */ - protected function mock($abstract, ?Closure $mock = null) - { - return $this->instance($abstract, Mockery::mock(...array_filter(func_get_args()))); - } - - /** - * Mock a partial instance of an object in the container. - * - * @param string $abstract - * @param \Closure|null $mock - * @return \Mockery\MockInterface - */ - protected function partialMock($abstract, ?Closure $mock = null) - { - return $this->instance($abstract, Mockery::mock(...array_filter(func_get_args()))->makePartial()); - } - - /** - * Spy an instance of an object in the container. - * - * @param string $abstract - * @param \Closure|null $mock - * @return \Mockery\MockInterface - */ - protected function spy($abstract, ?Closure $mock = null) - { - return $this->instance($abstract, Mockery::spy(...array_filter(func_get_args()))); - } - - /** - * Instruct the container to forget a previously mocked / spied instance of an object. - * - * @param string $abstract - * @return $this - */ - protected function forgetMock($abstract) - { - $this->app->forgetInstance($abstract); - - return $this; - } - - /** - * Register an empty handler for Vite in the container. - * - * @return $this - */ - protected function withoutVite() - { - if ($this->originalVite == null) { - $this->originalVite = app(Vite::class); - } - - Facade::clearResolvedInstance(Vite::class); - - $this->swap(Vite::class, new class extends Vite - { - public function __invoke($entrypoints, $buildDirectory = null) - { - return new HtmlString(''); - } - - public function __call($method, $parameters) - { - return ''; - } - - public function __toString() - { - return ''; - } - - public function useIntegrityKey($key) - { - return $this; - } - - public function useBuildDirectory($path) - { - return $this; - } - - public function useHotFile($path) - { - return $this; - } - - public function withEntryPoints($entryPoints) - { - return $this; - } - - public function useScriptTagAttributes($attributes) - { - return $this; - } - - public function useStyleTagAttributes($attributes) - { - return $this; - } - - public function usePreloadTagAttributes($attributes) - { - return $this; - } - - public function preloadedAssets() - { - return []; - } - - public function reactRefresh() - { - return ''; - } - - public function content($asset, $buildDirectory = null) - { - return ''; - } - - public function asset($asset, $buildDirectory = null) - { - return ''; - } - }); - - return $this; - } - - /** - * Restore Vite in the container. - * - * @return $this - */ - protected function withVite() - { - if ($this->originalVite) { - $this->app->instance(Vite::class, $this->originalVite); - } - - return $this; - } - - /** - * Register an empty handler for Laravel Mix in the container. - * - * @return $this - */ - protected function withoutMix() - { - if ($this->originalMix == null) { - $this->originalMix = app(Mix::class); - } - - $this->swap(Mix::class, function () { - return new HtmlString(''); - }); - - return $this; - } - - /** - * Restore Laravel Mix in the container. - * - * @return $this - */ - protected function withMix() - { - if ($this->originalMix) { - $this->app->instance(Mix::class, $this->originalMix); - } - - return $this; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Foundation/Validation/ValidatesRequests.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Foundation/Validation/ValidatesRequests.php deleted file mode 100644 index 4d7aad2a..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Foundation/Validation/ValidatesRequests.php +++ /dev/null @@ -1,100 +0,0 @@ -getValidationFactory()->make($request->all(), $validator); - } - - if ($request->isPrecognitive()) { - $validator->after(Precognition::afterValidationHook($request)) - ->setRules( - $request->filterPrecognitiveRules($validator->getRulesWithoutPlaceholders()) - ); - } - - return $validator->validate(); - } - - /** - * Validate the given request with the given rules. - * - * @param \Illuminate\Http\Request $request - * @param array $rules - * @param array $messages - * @param array $attributes - * @return array - * - * @throws \Illuminate\Validation\ValidationException - */ - public function validate(Request $request, array $rules, - array $messages = [], array $attributes = []) - { - $validator = $this->getValidationFactory()->make( - $request->all(), $rules, $messages, $attributes - ); - - if ($request->isPrecognitive()) { - $validator->after(Precognition::afterValidationHook($request)) - ->setRules( - $request->filterPrecognitiveRules($validator->getRulesWithoutPlaceholders()) - ); - } - - return $validator->validate(); - } - - /** - * Validate the given request with the given rules. - * - * @param string $errorBag - * @param \Illuminate\Http\Request $request - * @param array $rules - * @param array $messages - * @param array $attributes - * @return array - * - * @throws \Illuminate\Validation\ValidationException - */ - public function validateWithBag($errorBag, Request $request, array $rules, - array $messages = [], array $attributes = []) - { - try { - return $this->validate($request, $rules, $messages, $attributes); - } catch (ValidationException $e) { - $e->errorBag = $errorBag; - - throw $e; - } - } - - /** - * Get a validation factory instance. - * - * @return \Illuminate\Contracts\Validation\Factory - */ - protected function getValidationFactory() - { - return app(Factory::class); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Http/Client/Factory.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Http/Client/Factory.php deleted file mode 100644 index b75fe41b..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Http/Client/Factory.php +++ /dev/null @@ -1,463 +0,0 @@ -dispatcher = $dispatcher; - - $this->stubCallbacks = collect(); - } - - /** - * Add middleware to apply to every request. - * - * @param callable $middleware - * @return $this - */ - public function globalMiddleware($middleware) - { - $this->globalMiddleware[] = $middleware; - - return $this; - } - - /** - * Add request middleware to apply to every request. - * - * @param callable $middleware - * @return $this - */ - public function globalRequestMiddleware($middleware) - { - $this->globalMiddleware[] = Middleware::mapRequest($middleware); - - return $this; - } - - /** - * Add response middleware to apply to every request. - * - * @param callable $middleware - * @return $this - */ - public function globalResponseMiddleware($middleware) - { - $this->globalMiddleware[] = Middleware::mapResponse($middleware); - - return $this; - } - - /** - * Set the options to apply to every request. - * - * @param array $options - * @return $this - */ - public function globalOptions($options) - { - $this->globalOptions = $options; - - return $this; - } - - /** - * Create a new response instance for use during stubbing. - * - * @param array|string|null $body - * @param int $status - * @param array $headers - * @return \GuzzleHttp\Promise\PromiseInterface - */ - public static function response($body = null, $status = 200, $headers = []) - { - if (is_array($body)) { - $body = json_encode($body); - - $headers['Content-Type'] = 'application/json'; - } - - $response = new Psr7Response($status, $headers, $body); - - return Create::promiseFor($response); - } - - /** - * Get an invokable object that returns a sequence of responses in order for use during stubbing. - * - * @param array $responses - * @return \Illuminate\Http\Client\ResponseSequence - */ - public function sequence(array $responses = []) - { - return $this->responseSequences[] = new ResponseSequence($responses); - } - - /** - * Register a stub callable that will intercept requests and be able to return stub responses. - * - * @param callable|array|null $callback - * @return $this - */ - public function fake($callback = null) - { - $this->record(); - - $this->recorded = []; - - if (is_null($callback)) { - $callback = function () { - return static::response(); - }; - } - - if (is_array($callback)) { - foreach ($callback as $url => $callable) { - $this->stubUrl($url, $callable); - } - - return $this; - } - - $this->stubCallbacks = $this->stubCallbacks->merge(collect([ - function ($request, $options) use ($callback) { - $response = $callback instanceof Closure - ? $callback($request, $options) - : $callback; - - if ($response instanceof PromiseInterface) { - $options['on_stats'](new TransferStats( - $request->toPsrRequest(), - $response->wait(), - )); - } - - return $response; - }, - ])); - - return $this; - } - - /** - * Register a response sequence for the given URL pattern. - * - * @param string $url - * @return \Illuminate\Http\Client\ResponseSequence - */ - public function fakeSequence($url = '*') - { - return tap($this->sequence(), function ($sequence) use ($url) { - $this->fake([$url => $sequence]); - }); - } - - /** - * Stub the given URL using the given callback. - * - * @param string $url - * @param \Illuminate\Http\Client\Response|\GuzzleHttp\Promise\PromiseInterface|callable $callback - * @return $this - */ - public function stubUrl($url, $callback) - { - return $this->fake(function ($request, $options) use ($url, $callback) { - if (! Str::is(Str::start($url, '*'), $request->url())) { - return; - } - - return $callback instanceof Closure || $callback instanceof ResponseSequence - ? $callback($request, $options) - : $callback; - }); - } - - /** - * Indicate that an exception should be thrown if any request is not faked. - * - * @param bool $prevent - * @return $this - */ - public function preventStrayRequests($prevent = true) - { - $this->preventStrayRequests = $prevent; - - return $this; - } - - /** - * Indicate that an exception should not be thrown if any request is not faked. - * - * @return $this - */ - public function allowStrayRequests() - { - return $this->preventStrayRequests(false); - } - - /** - * Begin recording request / response pairs. - * - * @return $this - */ - protected function record() - { - $this->recording = true; - - return $this; - } - - /** - * Record a request response pair. - * - * @param \Illuminate\Http\Client\Request $request - * @param \Illuminate\Http\Client\Response $response - * @return void - */ - public function recordRequestResponsePair($request, $response) - { - if ($this->recording) { - $this->recorded[] = [$request, $response]; - } - } - - /** - * Assert that a request / response pair was recorded matching a given truth test. - * - * @param callable $callback - * @return void - */ - public function assertSent($callback) - { - PHPUnit::assertTrue( - $this->recorded($callback)->count() > 0, - 'An expected request was not recorded.' - ); - } - - /** - * Assert that the given request was sent in the given order. - * - * @param array $callbacks - * @return void - */ - public function assertSentInOrder($callbacks) - { - $this->assertSentCount(count($callbacks)); - - foreach ($callbacks as $index => $url) { - $callback = is_callable($url) ? $url : function ($request) use ($url) { - return $request->url() == $url; - }; - - PHPUnit::assertTrue($callback( - $this->recorded[$index][0], - $this->recorded[$index][1] - ), 'An expected request (#'.($index + 1).') was not recorded.'); - } - } - - /** - * Assert that a request / response pair was not recorded matching a given truth test. - * - * @param callable $callback - * @return void - */ - public function assertNotSent($callback) - { - PHPUnit::assertFalse( - $this->recorded($callback)->count() > 0, - 'Unexpected request was recorded.' - ); - } - - /** - * Assert that no request / response pair was recorded. - * - * @return void - */ - public function assertNothingSent() - { - PHPUnit::assertEmpty( - $this->recorded, - 'Requests were recorded.' - ); - } - - /** - * Assert how many requests have been recorded. - * - * @param int $count - * @return void - */ - public function assertSentCount($count) - { - PHPUnit::assertCount($count, $this->recorded); - } - - /** - * Assert that every created response sequence is empty. - * - * @return void - */ - public function assertSequencesAreEmpty() - { - foreach ($this->responseSequences as $responseSequence) { - PHPUnit::assertTrue( - $responseSequence->isEmpty(), - 'Not all response sequences are empty.' - ); - } - } - - /** - * Get a collection of the request / response pairs matching the given truth test. - * - * @param callable $callback - * @return \Illuminate\Support\Collection - */ - public function recorded($callback = null) - { - if (empty($this->recorded)) { - return collect(); - } - - $callback = $callback ?: function () { - return true; - }; - - return collect($this->recorded)->filter(function ($pair) use ($callback) { - return $callback($pair[0], $pair[1]); - }); - } - - /** - * Create a new pending request instance for this factory. - * - * @return \Illuminate\Http\Client\PendingRequest - */ - protected function newPendingRequest() - { - return (new PendingRequest($this, $this->globalMiddleware))->withOptions($this->globalOptions); - } - - /** - * Get the current event dispatcher implementation. - * - * @return \Illuminate\Contracts\Events\Dispatcher|null - */ - public function getDispatcher() - { - return $this->dispatcher; - } - - /** - * Get the array of global middleware. - * - * @return array - */ - public function getGlobalMiddleware() - { - return $this->globalMiddleware; - } - - /** - * Execute a method against a new pending request instance. - * - * @param string $method - * @param array $parameters - * @return mixed - */ - public function __call($method, $parameters) - { - if (static::hasMacro($method)) { - return $this->macroCall($method, $parameters); - } - - return tap($this->newPendingRequest(), function ($request) { - $request->stub($this->stubCallbacks)->preventStrayRequests($this->preventStrayRequests); - })->{$method}(...$parameters); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Http/Client/PendingRequest.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Http/Client/PendingRequest.php deleted file mode 100644 index b4cf927c..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Http/Client/PendingRequest.php +++ /dev/null @@ -1,1467 +0,0 @@ -factory = $factory; - $this->middleware = new Collection($middleware); - - $this->asJson(); - - $this->options = [ - 'connect_timeout' => 10, - 'http_errors' => false, - 'timeout' => 30, - ]; - - $this->beforeSendingCallbacks = collect([function (Request $request, array $options, PendingRequest $pendingRequest) { - $pendingRequest->request = $request; - $pendingRequest->cookies = $options['cookies']; - - $pendingRequest->dispatchRequestSendingEvent(); - }]); - } - - /** - * Set the base URL for the pending request. - * - * @param string $url - * @return $this - */ - public function baseUrl(string $url) - { - $this->baseUrl = $url; - - return $this; - } - - /** - * Attach a raw body to the request. - * - * @param \Psr\Http\Message\StreamInterface|string $content - * @param string $contentType - * @return $this - */ - public function withBody($content, $contentType = 'application/json') - { - $this->bodyFormat('body'); - - $this->pendingBody = $content; - - $this->contentType($contentType); - - return $this; - } - - /** - * Indicate the request contains JSON. - * - * @return $this - */ - public function asJson() - { - return $this->bodyFormat('json')->contentType('application/json'); - } - - /** - * Indicate the request contains form parameters. - * - * @return $this - */ - public function asForm() - { - return $this->bodyFormat('form_params')->contentType('application/x-www-form-urlencoded'); - } - - /** - * Attach a file to the request. - * - * @param string|array $name - * @param string|resource $contents - * @param string|null $filename - * @param array $headers - * @return $this - */ - public function attach($name, $contents = '', $filename = null, array $headers = []) - { - if (is_array($name)) { - foreach ($name as $file) { - $this->attach(...$file); - } - - return $this; - } - - $this->asMultipart(); - - $this->pendingFiles[] = array_filter([ - 'name' => $name, - 'contents' => $contents, - 'headers' => $headers, - 'filename' => $filename, - ]); - - return $this; - } - - /** - * Indicate the request is a multi-part form request. - * - * @return $this - */ - public function asMultipart() - { - return $this->bodyFormat('multipart'); - } - - /** - * Specify the body format of the request. - * - * @param string $format - * @return $this - */ - public function bodyFormat(string $format) - { - return tap($this, function () use ($format) { - $this->bodyFormat = $format; - }); - } - - /** - * Set the given query parameters in the request URI. - * - * @param array $parameters - * @return $this - */ - public function withQueryParameters(array $parameters) - { - return tap($this, function () use ($parameters) { - $this->options = array_merge_recursive($this->options, [ - 'query' => $parameters, - ]); - }); - } - - /** - * Specify the request's content type. - * - * @param string $contentType - * @return $this - */ - public function contentType(string $contentType) - { - $this->options['headers']['Content-Type'] = $contentType; - - return $this; - } - - /** - * Indicate that JSON should be returned by the server. - * - * @return $this - */ - public function acceptJson() - { - return $this->accept('application/json'); - } - - /** - * Indicate the type of content that should be returned by the server. - * - * @param string $contentType - * @return $this - */ - public function accept($contentType) - { - return $this->withHeaders(['Accept' => $contentType]); - } - - /** - * Add the given headers to the request. - * - * @param array $headers - * @return $this - */ - public function withHeaders(array $headers) - { - return tap($this, function () use ($headers) { - $this->options = array_merge_recursive($this->options, [ - 'headers' => $headers, - ]); - }); - } - - /** - * Add the given header to the request. - * - * @param string $name - * @param mixed $value - * @return $this - */ - public function withHeader($name, $value) - { - return $this->withHeaders([$name => $value]); - } - - /** - * Replace the given headers on the request. - * - * @param array $headers - * @return $this - */ - public function replaceHeaders(array $headers) - { - $this->options['headers'] = array_merge($this->options['headers'] ?? [], $headers); - - return $this; - } - - /** - * Specify the basic authentication username and password for the request. - * - * @param string $username - * @param string $password - * @return $this - */ - public function withBasicAuth(string $username, string $password) - { - return tap($this, function () use ($username, $password) { - $this->options['auth'] = [$username, $password]; - }); - } - - /** - * Specify the digest authentication username and password for the request. - * - * @param string $username - * @param string $password - * @return $this - */ - public function withDigestAuth($username, $password) - { - return tap($this, function () use ($username, $password) { - $this->options['auth'] = [$username, $password, 'digest']; - }); - } - - /** - * Specify an authorization token for the request. - * - * @param string $token - * @param string $type - * @return $this - */ - public function withToken($token, $type = 'Bearer') - { - return tap($this, function () use ($token, $type) { - $this->options['headers']['Authorization'] = trim($type.' '.$token); - }); - } - - /** - * Specify the user agent for the request. - * - * @param string|bool $userAgent - * @return $this - */ - public function withUserAgent($userAgent) - { - return tap($this, function () use ($userAgent) { - $this->options['headers']['User-Agent'] = trim($userAgent); - }); - } - - /** - * Specify the URL parameters that can be substituted into the request URL. - * - * @param array $parameters - * @return $this - */ - public function withUrlParameters(array $parameters = []) - { - return tap($this, function () use ($parameters) { - $this->urlParameters = $parameters; - }); - } - - /** - * Specify the cookies that should be included with the request. - * - * @param array $cookies - * @param string $domain - * @return $this - */ - public function withCookies(array $cookies, string $domain) - { - return tap($this, function () use ($cookies, $domain) { - $this->options = array_merge_recursive($this->options, [ - 'cookies' => CookieJar::fromArray($cookies, $domain), - ]); - }); - } - - /** - * Specify the maximum number of redirects to allow. - * - * @param int $max - * @return $this - */ - public function maxRedirects(int $max) - { - return tap($this, function () use ($max) { - $this->options['allow_redirects']['max'] = $max; - }); - } - - /** - * Indicate that redirects should not be followed. - * - * @return $this - */ - public function withoutRedirecting() - { - return tap($this, function () { - $this->options['allow_redirects'] = false; - }); - } - - /** - * Indicate that TLS certificates should not be verified. - * - * @return $this - */ - public function withoutVerifying() - { - return tap($this, function () { - $this->options['verify'] = false; - }); - } - - /** - * Specify the path where the body of the response should be stored. - * - * @param string|resource $to - * @return $this - */ - public function sink($to) - { - return tap($this, function () use ($to) { - $this->options['sink'] = $to; - }); - } - - /** - * Specify the timeout (in seconds) for the request. - * - * @param int $seconds - * @return $this - */ - public function timeout(int $seconds) - { - return tap($this, function () use ($seconds) { - $this->options['timeout'] = $seconds; - }); - } - - /** - * Specify the connect timeout (in seconds) for the request. - * - * @param int $seconds - * @return $this - */ - public function connectTimeout(int $seconds) - { - return tap($this, function () use ($seconds) { - $this->options['connect_timeout'] = $seconds; - }); - } - - /** - * Specify the number of times the request should be attempted. - * - * @param array|int $times - * @param Closure|int $sleepMilliseconds - * @param callable|null $when - * @param bool $throw - * @return $this - */ - public function retry(array|int $times, Closure|int $sleepMilliseconds = 0, ?callable $when = null, bool $throw = true) - { - $this->tries = $times; - $this->retryDelay = $sleepMilliseconds; - $this->retryThrow = $throw; - $this->retryWhenCallback = $when; - - return $this; - } - - /** - * Replace the specified options on the request. - * - * @param array $options - * @return $this - */ - public function withOptions(array $options) - { - return tap($this, function () use ($options) { - $this->options = array_replace_recursive( - array_merge_recursive($this->options, Arr::only($options, $this->mergableOptions)), - $options - ); - }); - } - - /** - * Add new middleware the client handler stack. - * - * @param callable $middleware - * @return $this - */ - public function withMiddleware(callable $middleware) - { - $this->middleware->push($middleware); - - return $this; - } - - /** - * Add new request middleware the client handler stack. - * - * @param callable $middleware - * @return $this - */ - public function withRequestMiddleware(callable $middleware) - { - $this->middleware->push(Middleware::mapRequest($middleware)); - - return $this; - } - - /** - * Add new response middleware the client handler stack. - * - * @param callable $middleware - * @return $this - */ - public function withResponseMiddleware(callable $middleware) - { - $this->middleware->push(Middleware::mapResponse($middleware)); - - return $this; - } - - /** - * Add a new "before sending" callback to the request. - * - * @param callable $callback - * @return $this - */ - public function beforeSending($callback) - { - return tap($this, function () use ($callback) { - $this->beforeSendingCallbacks[] = $callback; - }); - } - - /** - * Throw an exception if a server or client error occurs. - * - * @param callable|null $callback - * @return $this - */ - public function throw(?callable $callback = null) - { - $this->throwCallback = $callback ?: fn () => null; - - return $this; - } - - /** - * Throw an exception if a server or client error occurred and the given condition evaluates to true. - * - * @param callable|bool $condition - * @param callable|null $throwCallback - * @return $this - */ - public function throwIf($condition) - { - if (is_callable($condition)) { - $this->throwIfCallback = $condition; - } - - return $condition ? $this->throw(func_get_args()[1] ?? null) : $this; - } - - /** - * Throw an exception if a server or client error occurred and the given condition evaluates to false. - * - * @param bool $condition - * @return $this - */ - public function throwUnless($condition) - { - return $this->throwIf(! $condition); - } - - /** - * Dump the request before sending. - * - * @return $this - */ - public function dump() - { - $values = func_get_args(); - - return $this->beforeSending(function (Request $request, array $options) use ($values) { - foreach (array_merge($values, [$request, $options]) as $value) { - VarDumper::dump($value); - } - }); - } - - /** - * Dump the request before sending and end the script. - * - * @return $this - */ - public function dd() - { - $values = func_get_args(); - - return $this->beforeSending(function (Request $request, array $options) use ($values) { - foreach (array_merge($values, [$request, $options]) as $value) { - VarDumper::dump($value); - } - - exit(1); - }); - } - - /** - * Issue a GET request to the given URL. - * - * @param string $url - * @param array|string|null $query - * @return \Illuminate\Http\Client\Response - */ - public function get(string $url, $query = null) - { - return $this->send('GET', $url, func_num_args() === 1 ? [] : [ - 'query' => $query, - ]); - } - - /** - * Issue a HEAD request to the given URL. - * - * @param string $url - * @param array|string|null $query - * @return \Illuminate\Http\Client\Response - */ - public function head(string $url, $query = null) - { - return $this->send('HEAD', $url, func_num_args() === 1 ? [] : [ - 'query' => $query, - ]); - } - - /** - * Issue a POST request to the given URL. - * - * @param string $url - * @param array $data - * @return \Illuminate\Http\Client\Response - */ - public function post(string $url, $data = []) - { - return $this->send('POST', $url, [ - $this->bodyFormat => $data, - ]); - } - - /** - * Issue a PATCH request to the given URL. - * - * @param string $url - * @param array $data - * @return \Illuminate\Http\Client\Response - */ - public function patch(string $url, $data = []) - { - return $this->send('PATCH', $url, [ - $this->bodyFormat => $data, - ]); - } - - /** - * Issue a PUT request to the given URL. - * - * @param string $url - * @param array $data - * @return \Illuminate\Http\Client\Response - */ - public function put(string $url, $data = []) - { - return $this->send('PUT', $url, [ - $this->bodyFormat => $data, - ]); - } - - /** - * Issue a DELETE request to the given URL. - * - * @param string $url - * @param array $data - * @return \Illuminate\Http\Client\Response - */ - public function delete(string $url, $data = []) - { - return $this->send('DELETE', $url, empty($data) ? [] : [ - $this->bodyFormat => $data, - ]); - } - - /** - * Send a pool of asynchronous requests concurrently. - * - * @param callable $callback - * @return array - */ - public function pool(callable $callback) - { - $results = []; - - $requests = tap(new Pool($this->factory), $callback)->getRequests(); - - foreach ($requests as $key => $item) { - $results[$key] = $item instanceof static ? $item->getPromise()->wait() : $item->wait(); - } - - return $results; - } - - /** - * Send the request to the given URL. - * - * @param string $method - * @param string $url - * @param array $options - * @return \Illuminate\Http\Client\Response - * - * @throws \Exception - */ - public function send(string $method, string $url, array $options = []) - { - if (! Str::startsWith($url, ['http://', 'https://'])) { - $url = ltrim(rtrim($this->baseUrl, '/').'/'.ltrim($url, '/'), '/'); - } - - $url = $this->expandUrlParameters($url); - - $options = $this->parseHttpOptions($options); - - [$this->pendingBody, $this->pendingFiles] = [null, []]; - - if ($this->async) { - return $this->makePromise($method, $url, $options); - } - - $shouldRetry = null; - - return retry($this->tries ?? 1, function ($attempt) use ($method, $url, $options, &$shouldRetry) { - try { - return tap($this->newResponse($this->sendRequest($method, $url, $options)), function ($response) use ($attempt, &$shouldRetry) { - $this->populateResponse($response); - - $this->dispatchResponseReceivedEvent($response); - - if (! $response->successful()) { - try { - $shouldRetry = $this->retryWhenCallback ? call_user_func($this->retryWhenCallback, $response->toException(), $this) : true; - } catch (Exception $exception) { - $shouldRetry = false; - - throw $exception; - } - - if ($this->throwCallback && - ($this->throwIfCallback === null || - call_user_func($this->throwIfCallback, $response))) { - $response->throw($this->throwCallback); - } - - $potentialTries = is_array($this->tries) - ? count($this->tries) + 1 - : $this->tries; - - if ($attempt < $potentialTries && $shouldRetry) { - $response->throw(); - } - - if ($potentialTries > 1 && $this->retryThrow) { - $response->throw(); - } - } - }); - } catch (ConnectException $e) { - $this->dispatchConnectionFailedEvent(new Request($e->getRequest())); - - throw new ConnectionException($e->getMessage(), 0, $e); - } - }, $this->retryDelay ?? 100, function ($exception) use (&$shouldRetry) { - $result = $shouldRetry ?? ($this->retryWhenCallback ? call_user_func($this->retryWhenCallback, $exception, $this) : true); - - $shouldRetry = null; - - return $result; - }); - } - - /** - * Substitute the URL parameters in the given URL. - * - * @param string $url - * @return string - */ - protected function expandUrlParameters(string $url) - { - return UriTemplate::expand($url, $this->urlParameters); - } - - /** - * Parse the given HTTP options and set the appropriate additional options. - * - * @param array $options - * @return array - */ - protected function parseHttpOptions(array $options) - { - if (isset($options[$this->bodyFormat])) { - if ($this->bodyFormat === 'multipart') { - $options[$this->bodyFormat] = $this->parseMultipartBodyFormat($options[$this->bodyFormat]); - } elseif ($this->bodyFormat === 'body') { - $options[$this->bodyFormat] = $this->pendingBody; - } - - if (is_array($options[$this->bodyFormat])) { - $options[$this->bodyFormat] = array_merge( - $options[$this->bodyFormat], $this->pendingFiles - ); - } - } else { - $options[$this->bodyFormat] = $this->pendingBody; - } - - return collect($options)->map(function ($value, $key) { - if ($key === 'json' && $value instanceof JsonSerializable) { - return $value; - } - - return $value instanceof Arrayable ? $value->toArray() : $value; - })->all(); - } - - /** - * Parse multi-part form data. - * - * @param array $data - * @return array|array[] - */ - protected function parseMultipartBodyFormat(array $data) - { - return collect($data)->map(function ($value, $key) { - return is_array($value) ? $value : ['name' => $key, 'contents' => $value]; - })->values()->all(); - } - - /** - * Send an asynchronous request to the given URL. - * - * @param string $method - * @param string $url - * @param array $options - * @return \GuzzleHttp\Promise\PromiseInterface - */ - protected function makePromise(string $method, string $url, array $options = []) - { - return $this->promise = $this->sendRequest($method, $url, $options) - ->then(function (MessageInterface $message) { - return tap($this->newResponse($message), function ($response) { - $this->populateResponse($response); - $this->dispatchResponseReceivedEvent($response); - }); - }) - ->otherwise(function (OutOfBoundsException|TransferException $e) { - if ($e instanceof ConnectException) { - $this->dispatchConnectionFailedEvent(new Request($e->getRequest())); - } - - return $e instanceof RequestException && $e->hasResponse() ? $this->populateResponse($this->newResponse($e->getResponse())) : $e; - }); - } - - /** - * Send a request either synchronously or asynchronously. - * - * @param string $method - * @param string $url - * @param array $options - * @return \Psr\Http\Message\MessageInterface|\GuzzleHttp\Promise\PromiseInterface - * - * @throws \Exception - */ - protected function sendRequest(string $method, string $url, array $options = []) - { - $clientMethod = $this->async ? 'requestAsync' : 'request'; - - $laravelData = $this->parseRequestData($method, $url, $options); - - $onStats = function ($transferStats) { - if (($callback = ($this->options['on_stats'] ?? false)) instanceof Closure) { - $transferStats = $callback($transferStats) ?: $transferStats; - } - - $this->transferStats = $transferStats; - }; - - $mergedOptions = $this->normalizeRequestOptions($this->mergeOptions([ - 'laravel_data' => $laravelData, - 'on_stats' => $onStats, - ], $options)); - - return $this->buildClient()->$clientMethod($method, $url, $mergedOptions); - } - - /** - * Get the request data as an array so that we can attach it to the request for convenient assertions. - * - * @param string $method - * @param string $url - * @param array $options - * @return array - */ - protected function parseRequestData($method, $url, array $options) - { - if ($this->bodyFormat === 'body') { - return []; - } - - $laravelData = $options[$this->bodyFormat] ?? $options['query'] ?? []; - - $urlString = Str::of($url); - - if (empty($laravelData) && $method === 'GET' && $urlString->contains('?')) { - $laravelData = (string) $urlString->after('?'); - } - - if (is_string($laravelData)) { - parse_str($laravelData, $parsedData); - - $laravelData = is_array($parsedData) ? $parsedData : []; - } - - if ($laravelData instanceof JsonSerializable) { - $laravelData = $laravelData->jsonSerialize(); - } - - return is_array($laravelData) ? $laravelData : []; - } - - /** - * Normalize the given request options. - * - * @param array $options - * @return array - */ - protected function normalizeRequestOptions(array $options) - { - foreach ($options as $key => $value) { - $options[$key] = match (true) { - is_array($value) => $this->normalizeRequestOptions($value), - $value instanceof Stringable => $value->toString(), - default => $value, - }; - } - - return $options; - } - - /** - * Populate the given response with additional data. - * - * @param \Illuminate\Http\Client\Response $response - * @return \Illuminate\Http\Client\Response - */ - protected function populateResponse(Response $response) - { - $response->cookies = $this->cookies; - - $response->transferStats = $this->transferStats; - - return $response; - } - - /** - * Build the Guzzle client. - * - * @return \GuzzleHttp\Client - */ - public function buildClient() - { - return $this->client ?? $this->createClient($this->buildHandlerStack()); - } - - /** - * Determine if a reusable client is required. - * - * @return bool - */ - protected function requestsReusableClient() - { - return ! is_null($this->client) || $this->async; - } - - /** - * Retrieve a reusable Guzzle client. - * - * @return \GuzzleHttp\Client - */ - protected function getReusableClient() - { - return $this->client = $this->client ?: $this->createClient($this->buildHandlerStack()); - } - - /** - * Create new Guzzle client. - * - * @param \GuzzleHttp\HandlerStack $handlerStack - * @return \GuzzleHttp\Client - */ - public function createClient($handlerStack) - { - return new Client([ - 'handler' => $handlerStack, - 'cookies' => true, - ]); - } - - /** - * Build the Guzzle client handler stack. - * - * @return \GuzzleHttp\HandlerStack - */ - public function buildHandlerStack() - { - return $this->pushHandlers(HandlerStack::create($this->handler)); - } - - /** - * Add the necessary handlers to the given handler stack. - * - * @param \GuzzleHttp\HandlerStack $handlerStack - * @return \GuzzleHttp\HandlerStack - */ - public function pushHandlers($handlerStack) - { - return tap($handlerStack, function ($stack) { - $stack->push($this->buildBeforeSendingHandler()); - - $this->middleware->each(function ($middleware) use ($stack) { - $stack->push($middleware); - }); - - $stack->push($this->buildRecorderHandler()); - $stack->push($this->buildStubHandler()); - }); - } - - /** - * Build the before sending handler. - * - * @return \Closure - */ - public function buildBeforeSendingHandler() - { - return function ($handler) { - return function ($request, $options) use ($handler) { - return $handler($this->runBeforeSendingCallbacks($request, $options), $options); - }; - }; - } - - /** - * Build the recorder handler. - * - * @return \Closure - */ - public function buildRecorderHandler() - { - return function ($handler) { - return function ($request, $options) use ($handler) { - $promise = $handler($request, $options); - - return $promise->then(function ($response) use ($request, $options) { - $this->factory?->recordRequestResponsePair( - (new Request($request))->withData($options['laravel_data']), - $this->newResponse($response) - ); - - return $response; - }); - }; - }; - } - - /** - * Build the stub handler. - * - * @return \Closure - */ - public function buildStubHandler() - { - return function ($handler) { - return function ($request, $options) use ($handler) { - $response = ($this->stubCallbacks ?? collect()) - ->map - ->__invoke((new Request($request))->withData($options['laravel_data']), $options) - ->filter() - ->first(); - - if (is_null($response)) { - if ($this->preventStrayRequests) { - throw new RuntimeException('Attempted request to ['.(string) $request->getUri().'] without a matching fake.'); - } - - return $handler($request, $options); - } - - $response = is_array($response) ? Factory::response($response) : $response; - - $sink = $options['sink'] ?? null; - - if ($sink) { - $response->then($this->sinkStubHandler($sink)); - } - - return $response; - }; - }; - } - - /** - * Get the sink stub handler callback. - * - * @param string $sink - * @return \Closure - */ - protected function sinkStubHandler($sink) - { - return function ($response) use ($sink) { - $body = $response->getBody()->getContents(); - - if (is_string($sink)) { - file_put_contents($sink, $body); - - return; - } - - fwrite($sink, $body); - rewind($sink); - }; - } - - /** - * Execute the "before sending" callbacks. - * - * @param \GuzzleHttp\Psr7\RequestInterface $request - * @param array $options - * @return \GuzzleHttp\Psr7\RequestInterface - */ - public function runBeforeSendingCallbacks($request, array $options) - { - return tap($request, function (&$request) use ($options) { - $this->beforeSendingCallbacks->each(function ($callback) use (&$request, $options) { - $callbackResult = call_user_func( - $callback, (new Request($request))->withData($options['laravel_data']), $options, $this - ); - - if ($callbackResult instanceof RequestInterface) { - $request = $callbackResult; - } elseif ($callbackResult instanceof Request) { - $request = $callbackResult->toPsrRequest(); - } - }); - }); - } - - /** - * Replace the given options with the current request options. - * - * @param array ...$options - * @return array - */ - public function mergeOptions(...$options) - { - return array_replace_recursive( - array_merge_recursive($this->options, Arr::only($options, $this->mergableOptions)), - ...$options - ); - } - - /** - * Create a new response instance using the given PSR response. - * - * @param \Psr\Http\Message\MessageInterface $response - * @return Response - */ - protected function newResponse($response) - { - return new Response($response); - } - - /** - * Register a stub callable that will intercept requests and be able to return stub responses. - * - * @param callable $callback - * @return $this - */ - public function stub($callback) - { - $this->stubCallbacks = collect($callback); - - return $this; - } - - /** - * Indicate that an exception should be thrown if any request is not faked. - * - * @param bool $prevent - * @return $this - */ - public function preventStrayRequests($prevent = true) - { - $this->preventStrayRequests = $prevent; - - return $this; - } - - /** - * Toggle asynchronicity in requests. - * - * @param bool $async - * @return $this - */ - public function async(bool $async = true) - { - $this->async = $async; - - return $this; - } - - /** - * Retrieve the pending request promise. - * - * @return \GuzzleHttp\Promise\PromiseInterface|null - */ - public function getPromise() - { - return $this->promise; - } - - /** - * Dispatch the RequestSending event if a dispatcher is available. - * - * @return void - */ - protected function dispatchRequestSendingEvent() - { - if ($dispatcher = $this->factory?->getDispatcher()) { - $dispatcher->dispatch(new RequestSending($this->request)); - } - } - - /** - * Dispatch the ResponseReceived event if a dispatcher is available. - * - * @param \Illuminate\Http\Client\Response $response - * @return void - */ - protected function dispatchResponseReceivedEvent(Response $response) - { - if (! ($dispatcher = $this->factory?->getDispatcher()) || ! $this->request) { - return; - } - - $dispatcher->dispatch(new ResponseReceived($this->request, $response)); - } - - /** - * Dispatch the ConnectionFailed event if a dispatcher is available. - * - * @param \Illuminate\Http\Client\Request $request - * @return void - */ - protected function dispatchConnectionFailedEvent(Request $request) - { - if ($dispatcher = $this->factory?->getDispatcher()) { - $dispatcher->dispatch(new ConnectionFailed($request)); - } - } - - /** - * Set the client instance. - * - * @param \GuzzleHttp\Client $client - * @return $this - */ - public function setClient(Client $client) - { - $this->client = $client; - - return $this; - } - - /** - * Create a new client instance using the given handler. - * - * @param callable $handler - * @return $this - */ - public function setHandler($handler) - { - $this->handler = $handler; - - return $this; - } - - /** - * Get the pending request options. - * - * @return array - */ - public function getOptions() - { - return $this->options; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Http/Client/Pool.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Http/Client/Pool.php deleted file mode 100644 index b5f00258..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Http/Client/Pool.php +++ /dev/null @@ -1,87 +0,0 @@ -factory = $factory ?: new Factory(); - $this->handler = Utils::chooseHandler(); - } - - /** - * Add a request to the pool with a key. - * - * @param string $key - * @return \Illuminate\Http\Client\PendingRequest - */ - public function as(string $key) - { - return $this->pool[$key] = $this->asyncRequest(); - } - - /** - * Retrieve a new async pending request. - * - * @return \Illuminate\Http\Client\PendingRequest - */ - protected function asyncRequest() - { - return $this->factory->setHandler($this->handler)->async(); - } - - /** - * Retrieve the requests in the pool. - * - * @return array - */ - public function getRequests() - { - return $this->pool; - } - - /** - * Add a request to the pool with a numeric index. - * - * @param string $method - * @param array $parameters - * @return \Illuminate\Http\Client\PendingRequest|\GuzzleHttp\Promise\Promise - */ - public function __call($method, $parameters) - { - return $this->pool[] = $this->asyncRequest()->$method(...$parameters); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Http/Concerns/InteractsWithInput.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Http/Concerns/InteractsWithInput.php deleted file mode 100644 index 4c60ed4f..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Http/Concerns/InteractsWithInput.php +++ /dev/null @@ -1,636 +0,0 @@ -retrieveItem('server', $key, $default); - } - - /** - * Determine if a header is set on the request. - * - * @param string $key - * @return bool - */ - public function hasHeader($key) - { - return ! is_null($this->header($key)); - } - - /** - * Retrieve a header from the request. - * - * @param string|null $key - * @param string|array|null $default - * @return string|array|null - */ - public function header($key = null, $default = null) - { - return $this->retrieveItem('headers', $key, $default); - } - - /** - * Get the bearer token from the request headers. - * - * @return string|null - */ - public function bearerToken() - { - $header = $this->header('Authorization', ''); - - $position = strrpos($header, 'Bearer '); - - if ($position !== false) { - $header = substr($header, $position + 7); - - return str_contains($header, ',') ? strstr($header, ',', true) : $header; - } - } - - /** - * Determine if the request contains a given input item key. - * - * @param string|array $key - * @return bool - */ - public function exists($key) - { - return $this->has($key); - } - - /** - * Determine if the request contains a given input item key. - * - * @param string|array $key - * @return bool - */ - public function has($key) - { - $keys = is_array($key) ? $key : func_get_args(); - - $input = $this->all(); - - foreach ($keys as $value) { - if (! Arr::has($input, $value)) { - return false; - } - } - - return true; - } - - /** - * Determine if the request contains any of the given inputs. - * - * @param string|array $keys - * @return bool - */ - public function hasAny($keys) - { - $keys = is_array($keys) ? $keys : func_get_args(); - - $input = $this->all(); - - return Arr::hasAny($input, $keys); - } - - /** - * Apply the callback if the request contains the given input item key. - * - * @param string $key - * @param callable $callback - * @param callable|null $default - * @return $this|mixed - */ - public function whenHas($key, callable $callback, ?callable $default = null) - { - if ($this->has($key)) { - return $callback(data_get($this->all(), $key)) ?: $this; - } - - if ($default) { - return $default(); - } - - return $this; - } - - /** - * Determine if the request contains a non-empty value for an input item. - * - * @param string|array $key - * @return bool - */ - public function filled($key) - { - $keys = is_array($key) ? $key : func_get_args(); - - foreach ($keys as $value) { - if ($this->isEmptyString($value)) { - return false; - } - } - - return true; - } - - /** - * Determine if the request contains an empty value for an input item. - * - * @param string|array $key - * @return bool - */ - public function isNotFilled($key) - { - $keys = is_array($key) ? $key : func_get_args(); - - foreach ($keys as $value) { - if (! $this->isEmptyString($value)) { - return false; - } - } - - return true; - } - - /** - * Determine if the request contains a non-empty value for any of the given inputs. - * - * @param string|array $keys - * @return bool - */ - public function anyFilled($keys) - { - $keys = is_array($keys) ? $keys : func_get_args(); - - foreach ($keys as $key) { - if ($this->filled($key)) { - return true; - } - } - - return false; - } - - /** - * Apply the callback if the request contains a non-empty value for the given input item key. - * - * @param string $key - * @param callable $callback - * @param callable|null $default - * @return $this|mixed - */ - public function whenFilled($key, callable $callback, ?callable $default = null) - { - if ($this->filled($key)) { - return $callback(data_get($this->all(), $key)) ?: $this; - } - - if ($default) { - return $default(); - } - - return $this; - } - - /** - * Determine if the request is missing a given input item key. - * - * @param string|array $key - * @return bool - */ - public function missing($key) - { - $keys = is_array($key) ? $key : func_get_args(); - - return ! $this->has($keys); - } - - /** - * Apply the callback if the request is missing the given input item key. - * - * @param string $key - * @param callable $callback - * @param callable|null $default - * @return $this|mixed - */ - public function whenMissing($key, callable $callback, ?callable $default = null) - { - if ($this->missing($key)) { - return $callback(data_get($this->all(), $key)) ?: $this; - } - - if ($default) { - return $default(); - } - - return $this; - } - - /** - * Determine if the given input key is an empty string for "filled". - * - * @param string $key - * @return bool - */ - protected function isEmptyString($key) - { - $value = $this->input($key); - - return ! is_bool($value) && ! is_array($value) && trim((string) $value) === ''; - } - - /** - * Get the keys for all of the input and files. - * - * @return array - */ - public function keys() - { - return array_merge(array_keys($this->input()), $this->files->keys()); - } - - /** - * Get all of the input and files for the request. - * - * @param array|mixed|null $keys - * @return array - */ - public function all($keys = null) - { - $input = array_replace_recursive($this->input(), $this->allFiles()); - - if (! $keys) { - return $input; - } - - $results = []; - - foreach (is_array($keys) ? $keys : func_get_args() as $key) { - Arr::set($results, $key, Arr::get($input, $key)); - } - - return $results; - } - - /** - * Retrieve an input item from the request. - * - * @param string|null $key - * @param mixed $default - * @return mixed - */ - public function input($key = null, $default = null) - { - return data_get( - $this->getInputSource()->all() + $this->query->all(), $key, $default - ); - } - - /** - * Retrieve input from the request as a Stringable instance. - * - * @param string $key - * @param mixed $default - * @return \Illuminate\Support\Stringable - */ - public function str($key, $default = null) - { - return $this->string($key, $default); - } - - /** - * Retrieve input from the request as a Stringable instance. - * - * @param string $key - * @param mixed $default - * @return \Illuminate\Support\Stringable - */ - public function string($key, $default = null) - { - return str($this->input($key, $default)); - } - - /** - * Retrieve input as a boolean value. - * - * Returns true when value is "1", "true", "on", and "yes". Otherwise, returns false. - * - * @param string|null $key - * @param bool $default - * @return bool - */ - public function boolean($key = null, $default = false) - { - return filter_var($this->input($key, $default), FILTER_VALIDATE_BOOLEAN); - } - - /** - * Retrieve input as an integer value. - * - * @param string $key - * @param int $default - * @return int - */ - public function integer($key, $default = 0) - { - return intval($this->input($key, $default)); - } - - /** - * Retrieve input as a float value. - * - * @param string $key - * @param float $default - * @return float - */ - public function float($key, $default = 0.0) - { - return floatval($this->input($key, $default)); - } - - /** - * Retrieve input from the request as a Carbon instance. - * - * @param string $key - * @param string|null $format - * @param string|null $tz - * @return \Illuminate\Support\Carbon|null - * - * @throws \Carbon\Exceptions\InvalidFormatException - */ - public function date($key, $format = null, $tz = null) - { - if ($this->isNotFilled($key)) { - return null; - } - - if (is_null($format)) { - return Date::parse($this->input($key), $tz); - } - - return Date::createFromFormat($format, $this->input($key), $tz); - } - - /** - * Retrieve input from the request as an enum. - * - * @template TEnum - * - * @param string $key - * @param class-string $enumClass - * @return TEnum|null - */ - public function enum($key, $enumClass) - { - if ($this->isNotFilled($key) || - ! enum_exists($enumClass) || - ! method_exists($enumClass, 'tryFrom')) { - return null; - } - - return $enumClass::tryFrom($this->input($key)); - } - - /** - * Retrieve input from the request as a collection. - * - * @param array|string|null $key - * @return \Illuminate\Support\Collection - */ - public function collect($key = null) - { - return collect(is_array($key) ? $this->only($key) : $this->input($key)); - } - - /** - * Get a subset containing the provided keys with values from the input data. - * - * @param array|mixed $keys - * @return array - */ - public function only($keys) - { - $results = []; - - $input = $this->all(); - - $placeholder = new stdClass; - - foreach (is_array($keys) ? $keys : func_get_args() as $key) { - $value = data_get($input, $key, $placeholder); - - if ($value !== $placeholder) { - Arr::set($results, $key, $value); - } - } - - return $results; - } - - /** - * Get all of the input except for a specified array of items. - * - * @param array|mixed $keys - * @return array - */ - public function except($keys) - { - $keys = is_array($keys) ? $keys : func_get_args(); - - $results = $this->all(); - - Arr::forget($results, $keys); - - return $results; - } - - /** - * Retrieve a query string item from the request. - * - * @param string|null $key - * @param string|array|null $default - * @return string|array|null - */ - public function query($key = null, $default = null) - { - return $this->retrieveItem('query', $key, $default); - } - - /** - * Retrieve a request payload item from the request. - * - * @param string|null $key - * @param string|array|null $default - * @return string|array|null - */ - public function post($key = null, $default = null) - { - return $this->retrieveItem('request', $key, $default); - } - - /** - * Determine if a cookie is set on the request. - * - * @param string $key - * @return bool - */ - public function hasCookie($key) - { - return ! is_null($this->cookie($key)); - } - - /** - * Retrieve a cookie from the request. - * - * @param string|null $key - * @param string|array|null $default - * @return string|array|null - */ - public function cookie($key = null, $default = null) - { - return $this->retrieveItem('cookies', $key, $default); - } - - /** - * Get an array of all of the files on the request. - * - * @return array - */ - public function allFiles() - { - $files = $this->files->all(); - - return $this->convertedFiles = $this->convertedFiles ?? $this->convertUploadedFiles($files); - } - - /** - * Convert the given array of Symfony UploadedFiles to custom Laravel UploadedFiles. - * - * @param array $files - * @return array - */ - protected function convertUploadedFiles(array $files) - { - return array_map(function ($file) { - if (is_null($file) || (is_array($file) && empty(array_filter($file)))) { - return $file; - } - - return is_array($file) - ? $this->convertUploadedFiles($file) - : UploadedFile::createFromBase($file); - }, $files); - } - - /** - * Determine if the uploaded data contains a file. - * - * @param string $key - * @return bool - */ - public function hasFile($key) - { - if (! is_array($files = $this->file($key))) { - $files = [$files]; - } - - foreach ($files as $file) { - if ($this->isValidFile($file)) { - return true; - } - } - - return false; - } - - /** - * Check that the given file is a valid file instance. - * - * @param mixed $file - * @return bool - */ - protected function isValidFile($file) - { - return $file instanceof SplFileInfo && $file->getPath() !== ''; - } - - /** - * Retrieve a file from the request. - * - * @param string|null $key - * @param mixed $default - * @return \Illuminate\Http\UploadedFile|\Illuminate\Http\UploadedFile[]|array|null - */ - public function file($key = null, $default = null) - { - return data_get($this->allFiles(), $key, $default); - } - - /** - * Retrieve a parameter item from a given source. - * - * @param string $source - * @param string|null $key - * @param string|array|null $default - * @return string|array|null - */ - protected function retrieveItem($source, $key, $default) - { - if (is_null($key)) { - return $this->$source->all(); - } - - if ($this->$source instanceof InputBag) { - return $this->$source->all()[$key] ?? $default; - } - - return $this->$source->get($key, $default); - } - - /** - * Dump the request items and end the script. - * - * @param mixed ...$keys - * @return never - */ - public function dd(...$keys) - { - $this->dump(...$keys); - - exit(1); - } - - /** - * Dump the items. - * - * @param mixed $keys - * @return $this - */ - public function dump($keys = []) - { - $keys = is_array($keys) ? $keys : func_get_args(); - - VarDumper::dump(count($keys) > 0 ? $this->only($keys) : $this->all()); - - return $this; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Http/Exceptions/HttpResponseException.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Http/Exceptions/HttpResponseException.php deleted file mode 100644 index c4526868..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Http/Exceptions/HttpResponseException.php +++ /dev/null @@ -1,41 +0,0 @@ -getMessage() ?? '', $previous?->getCode() ?? 0, $previous); - - $this->response = $response; - } - - /** - * Get the underlying response instance. - * - * @return \Symfony\Component\HttpFoundation\Response - */ - public function getResponse() - { - return $this->response; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Http/Exceptions/PostTooLargeException.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Http/Exceptions/PostTooLargeException.php deleted file mode 100644 index 560b8af4..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Http/Exceptions/PostTooLargeException.php +++ /dev/null @@ -1,23 +0,0 @@ -header('Link', Collection::make(Vite::preloadedAssets()) - ->map(fn ($attributes, $url) => "<{$url}>; ".implode('; ', $attributes)) - ->join(', ')); - } - }); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php deleted file mode 100644 index cd5c63ec..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,126 +0,0 @@ -|string|null - */ - protected $proxies; - - /** - * The proxy header mappings. - * - * @var int - */ - protected $headers = Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_HOST | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO | Request::HEADER_X_FORWARDED_PREFIX | Request::HEADER_X_FORWARDED_AWS_ELB; - - /** - * Handle an incoming request. - * - * @param \Illuminate\Http\Request $request - * @param \Closure $next - * @return mixed - * - * @throws \Symfony\Component\HttpKernel\Exception\HttpException - */ - public function handle(Request $request, Closure $next) - { - $request::setTrustedProxies([], $this->getTrustedHeaderNames()); - - $this->setTrustedProxyIpAddresses($request); - - return $next($request); - } - - /** - * Sets the trusted proxies on the request. - * - * @param \Illuminate\Http\Request $request - * @return void - */ - protected function setTrustedProxyIpAddresses(Request $request) - { - $trustedIps = $this->proxies() ?: config('trustedproxy.proxies'); - - if (is_null($trustedIps) && - (($_ENV['LARAVEL_CLOUD'] ?? false) === '1' || - ($_SERVER['LARAVEL_CLOUD'] ?? false) === '1')) { - $trustedIps = '*'; - } - - if ($trustedIps === '*' || $trustedIps === '**') { - return $this->setTrustedProxyIpAddressesToTheCallingIp($request); - } - - $trustedIps = is_string($trustedIps) - ? array_map('trim', explode(',', $trustedIps)) - : $trustedIps; - - if (is_array($trustedIps)) { - return $this->setTrustedProxyIpAddressesToSpecificIps($request, $trustedIps); - } - } - - /** - * Specify the IP addresses to trust explicitly. - * - * @param \Illuminate\Http\Request $request - * @param array $trustedIps - * @return void - */ - protected function setTrustedProxyIpAddressesToSpecificIps(Request $request, array $trustedIps) - { - $request->setTrustedProxies($trustedIps, $this->getTrustedHeaderNames()); - } - - /** - * Set the trusted proxy to be the IP address calling this servers. - * - * @param \Illuminate\Http\Request $request - * @return void - */ - protected function setTrustedProxyIpAddressesToTheCallingIp(Request $request) - { - $request->setTrustedProxies([$request->server->get('REMOTE_ADDR')], $this->getTrustedHeaderNames()); - } - - /** - * Retrieve trusted header name(s), falling back to defaults if config not set. - * - * @return int A bit field of Request::HEADER_*, to set which headers to trust from your proxies. - */ - protected function getTrustedHeaderNames() - { - if (is_int($this->headers)) { - return $this->headers; - } - - return match ($this->headers) { - 'HEADER_X_FORWARDED_AWS_ELB' => Request::HEADER_X_FORWARDED_AWS_ELB, - 'HEADER_FORWARDED' => Request::HEADER_FORWARDED, - 'HEADER_X_FORWARDED_FOR' => Request::HEADER_X_FORWARDED_FOR, - 'HEADER_X_FORWARDED_HOST' => Request::HEADER_X_FORWARDED_HOST, - 'HEADER_X_FORWARDED_PORT' => Request::HEADER_X_FORWARDED_PORT, - 'HEADER_X_FORWARDED_PROTO' => Request::HEADER_X_FORWARDED_PROTO, - 'HEADER_X_FORWARDED_PREFIX' => Request::HEADER_X_FORWARDED_PREFIX, - default => Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_HOST | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO | Request::HEADER_X_FORWARDED_PREFIX | Request::HEADER_X_FORWARDED_AWS_ELB, - }; - } - - /** - * Get the trusted proxies. - * - * @return array|string|null - */ - protected function proxies() - { - return $this->proxies; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Http/RedirectResponse.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Http/RedirectResponse.php deleted file mode 100755 index 5c506ba6..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Http/RedirectResponse.php +++ /dev/null @@ -1,258 +0,0 @@ - $value]; - - foreach ($key as $k => $v) { - $this->session->flash($k, $v); - } - - return $this; - } - - /** - * Add multiple cookies to the response. - * - * @param array $cookies - * @return $this - */ - public function withCookies(array $cookies) - { - foreach ($cookies as $cookie) { - $this->headers->setCookie($cookie); - } - - return $this; - } - - /** - * Flash an array of input to the session. - * - * @param array|null $input - * @return $this - */ - public function withInput(?array $input = null) - { - $this->session->flashInput($this->removeFilesFromInput( - ! is_null($input) ? $input : $this->request->input() - )); - - return $this; - } - - /** - * Remove all uploaded files form the given input array. - * - * @param array $input - * @return array - */ - protected function removeFilesFromInput(array $input) - { - foreach ($input as $key => $value) { - if (is_array($value)) { - $input[$key] = $this->removeFilesFromInput($value); - } - - if ($value instanceof SymfonyUploadedFile) { - unset($input[$key]); - } - } - - return $input; - } - - /** - * Flash an array of input to the session. - * - * @return $this - */ - public function onlyInput() - { - return $this->withInput($this->request->only(func_get_args())); - } - - /** - * Flash an array of input to the session. - * - * @return $this - */ - public function exceptInput() - { - return $this->withInput($this->request->except(func_get_args())); - } - - /** - * Flash a container of errors to the session. - * - * @param \Illuminate\Contracts\Support\MessageProvider|array|string $provider - * @param string $key - * @return $this - */ - public function withErrors($provider, $key = 'default') - { - $value = $this->parseErrors($provider); - - $errors = $this->session->get('errors', new ViewErrorBag); - - if (! $errors instanceof ViewErrorBag) { - $errors = new ViewErrorBag; - } - - $this->session->flash( - 'errors', $errors->put($key, $value) - ); - - return $this; - } - - /** - * Parse the given errors into an appropriate value. - * - * @param \Illuminate\Contracts\Support\MessageProvider|array|string $provider - * @return \Illuminate\Support\MessageBag - */ - protected function parseErrors($provider) - { - if ($provider instanceof MessageProvider) { - return $provider->getMessageBag(); - } - - return new MessageBag((array) $provider); - } - - /** - * Add a fragment identifier to the URL. - * - * @param string $fragment - * @return $this - */ - public function withFragment($fragment) - { - return $this->withoutFragment() - ->setTargetUrl($this->getTargetUrl().'#'.Str::after($fragment, '#')); - } - - /** - * Remove any fragment identifier from the response URL. - * - * @return $this - */ - public function withoutFragment() - { - return $this->setTargetUrl(Str::before($this->getTargetUrl(), '#')); - } - - /** - * Get the original response content. - * - * @return null - */ - public function getOriginalContent() - { - // - } - - /** - * Get the request instance. - * - * @return \Illuminate\Http\Request|null - */ - public function getRequest() - { - return $this->request; - } - - /** - * Set the request instance. - * - * @param \Illuminate\Http\Request $request - * @return void - */ - public function setRequest(Request $request) - { - $this->request = $request; - } - - /** - * Get the session store instance. - * - * @return \Illuminate\Session\Store|null - */ - public function getSession() - { - return $this->session; - } - - /** - * Set the session store instance. - * - * @param \Illuminate\Session\Store $session - * @return void - */ - public function setSession(SessionStore $session) - { - $this->session = $session; - } - - /** - * Dynamically bind flash data in the session. - * - * @param string $method - * @param array $parameters - * @return mixed - * - * @throws \BadMethodCallException - */ - public function __call($method, $parameters) - { - if (static::hasMacro($method)) { - return $this->macroCall($method, $parameters); - } - - if (str_starts_with($method, 'with')) { - return $this->with(Str::snake(substr($method, 4)), $parameters[0]); - } - - static::throwBadMethodCallException($method); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Http/Request.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Http/Request.php deleted file mode 100644 index d38c7d1c..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Http/Request.php +++ /dev/null @@ -1,791 +0,0 @@ -getMethod(); - } - - /** - * Get the root URL for the application. - * - * @return string - */ - public function root() - { - return rtrim($this->getSchemeAndHttpHost().$this->getBaseUrl(), '/'); - } - - /** - * Get the URL (no query string) for the request. - * - * @return string - */ - public function url() - { - return rtrim(preg_replace('/\?.*/', '', $this->getUri()), '/'); - } - - /** - * Get the full URL for the request. - * - * @return string - */ - public function fullUrl() - { - $query = $this->getQueryString(); - - $question = $this->getBaseUrl().$this->getPathInfo() === '/' ? '/?' : '?'; - - return $query ? $this->url().$question.$query : $this->url(); - } - - /** - * Get the full URL for the request with the added query string parameters. - * - * @param array $query - * @return string - */ - public function fullUrlWithQuery(array $query) - { - $question = $this->getBaseUrl().$this->getPathInfo() === '/' ? '/?' : '?'; - - return count($this->query()) > 0 - ? $this->url().$question.Arr::query(array_merge($this->query(), $query)) - : $this->fullUrl().$question.Arr::query($query); - } - - /** - * Get the full URL for the request without the given query string parameters. - * - * @param array|string $keys - * @return string - */ - public function fullUrlWithoutQuery($keys) - { - $query = Arr::except($this->query(), $keys); - - $question = $this->getBaseUrl().$this->getPathInfo() === '/' ? '/?' : '?'; - - return count($query) > 0 - ? $this->url().$question.Arr::query($query) - : $this->url(); - } - - /** - * Get the current path info for the request. - * - * @return string - */ - public function path() - { - $pattern = trim($this->getPathInfo(), '/'); - - return $pattern === '' ? '/' : $pattern; - } - - /** - * Get the current decoded path info for the request. - * - * @return string - */ - public function decodedPath() - { - return rawurldecode($this->path()); - } - - /** - * Get a segment from the URI (1 based index). - * - * @param int $index - * @param string|null $default - * @return string|null - */ - public function segment($index, $default = null) - { - return Arr::get($this->segments(), $index - 1, $default); - } - - /** - * Get all of the segments for the request path. - * - * @return array - */ - public function segments() - { - $segments = explode('/', $this->decodedPath()); - - return array_values(array_filter($segments, function ($value) { - return $value !== ''; - })); - } - - /** - * Determine if the current request URI matches a pattern. - * - * @param mixed ...$patterns - * @return bool - */ - public function is(...$patterns) - { - $path = $this->decodedPath(); - - return collect($patterns)->contains(fn ($pattern) => Str::is($pattern, $path)); - } - - /** - * Determine if the route name matches a given pattern. - * - * @param mixed ...$patterns - * @return bool - */ - public function routeIs(...$patterns) - { - return $this->route() && $this->route()->named(...$patterns); - } - - /** - * Determine if the current request URL and query string match a pattern. - * - * @param mixed ...$patterns - * @return bool - */ - public function fullUrlIs(...$patterns) - { - $url = $this->fullUrl(); - - return collect($patterns)->contains(fn ($pattern) => Str::is($pattern, $url)); - } - - /** - * Get the host name. - * - * @return string - */ - public function host() - { - return $this->getHost(); - } - - /** - * Get the HTTP host being requested. - * - * @return string - */ - public function httpHost() - { - return $this->getHttpHost(); - } - - /** - * Get the scheme and HTTP host. - * - * @return string - */ - public function schemeAndHttpHost() - { - return $this->getSchemeAndHttpHost(); - } - - /** - * Determine if the request is the result of an AJAX call. - * - * @return bool - */ - public function ajax() - { - return $this->isXmlHttpRequest(); - } - - /** - * Determine if the request is the result of a PJAX call. - * - * @return bool - */ - public function pjax() - { - return $this->headers->get('X-PJAX') == true; - } - - /** - * Determine if the request is the result of a prefetch call. - * - * @return bool - */ - public function prefetch() - { - return strcasecmp($this->server->get('HTTP_X_MOZ') ?? '', 'prefetch') === 0 || - strcasecmp($this->headers->get('Purpose') ?? '', 'prefetch') === 0 || - strcasecmp($this->headers->get('Sec-Purpose') ?? '', 'prefetch') === 0; - } - - /** - * Determine if the request is over HTTPS. - * - * @return bool - */ - public function secure() - { - return $this->isSecure(); - } - - /** - * Get the client IP address. - * - * @return string|null - */ - public function ip() - { - return $this->getClientIp(); - } - - /** - * Get the client IP addresses. - * - * @return array - */ - public function ips() - { - return $this->getClientIps(); - } - - /** - * Get the client user agent. - * - * @return string|null - */ - public function userAgent() - { - return $this->headers->get('User-Agent'); - } - - /** - * Merge new input into the current request's input array. - * - * @param array $input - * @return $this - */ - public function merge(array $input) - { - $this->getInputSource()->add($input); - - return $this; - } - - /** - * Merge new input into the request's input, but only when that key is missing from the request. - * - * @param array $input - * @return $this - */ - public function mergeIfMissing(array $input) - { - return $this->merge(collect($input)->filter(function ($value, $key) { - return $this->missing($key); - })->toArray()); - } - - /** - * Replace the input for the current request. - * - * @param array $input - * @return $this - */ - public function replace(array $input) - { - $this->getInputSource()->replace($input); - - return $this; - } - - /** - * This method belongs to Symfony HttpFoundation and is not usually needed when using Laravel. - * - * Instead, you may use the "input" method. - * - * @param string $key - * @param mixed $default - * @return mixed - */ - public function get(string $key, mixed $default = null): mixed - { - return parent::get($key, $default); - } - - /** - * Get the JSON payload for the request. - * - * @param string|null $key - * @param mixed $default - * @return \Symfony\Component\HttpFoundation\InputBag|mixed - */ - public function json($key = null, $default = null) - { - if (! isset($this->json)) { - $this->json = new InputBag((array) json_decode($this->getContent() ?: '[]', true)); - } - - if (is_null($key)) { - return $this->json; - } - - return data_get($this->json->all(), $key, $default); - } - - /** - * Get the input source for the request. - * - * @return \Symfony\Component\HttpFoundation\InputBag - */ - protected function getInputSource() - { - if ($this->isJson()) { - return $this->json(); - } - - return in_array($this->getRealMethod(), ['GET', 'HEAD']) ? $this->query : $this->request; - } - - /** - * Create a new request instance from the given Laravel request. - * - * @param \Illuminate\Http\Request $from - * @param \Illuminate\Http\Request|null $to - * @return static - */ - public static function createFrom(self $from, $to = null) - { - $request = $to ?: new static; - - $files = array_filter($from->files->all()); - - $request->initialize( - $from->query->all(), - $from->request->all(), - $from->attributes->all(), - $from->cookies->all(), - $files, - $from->server->all(), - $from->getContent() - ); - - $request->headers->replace($from->headers->all()); - - $request->setRequestLocale($from->getLocale()); - - $request->setDefaultRequestLocale($from->getDefaultLocale()); - - $request->setJson($from->json()); - - if ($from->hasSession() && $session = $from->session()) { - $request->setLaravelSession($session); - } - - $request->setUserResolver($from->getUserResolver()); - - $request->setRouteResolver($from->getRouteResolver()); - - return $request; - } - - /** - * Create an Illuminate request from a Symfony instance. - * - * @param \Symfony\Component\HttpFoundation\Request $request - * @return static - */ - public static function createFromBase(SymfonyRequest $request) - { - $newRequest = new static( - $request->query->all(), $request->request->all(), $request->attributes->all(), - $request->cookies->all(), (new static)->filterFiles($request->files->all()) ?? [], $request->server->all() - ); - - $newRequest->headers->replace($request->headers->all()); - - $newRequest->content = $request->content; - - if ($newRequest->isJson()) { - $newRequest->request = $newRequest->json(); - } - - return $newRequest; - } - - /** - * {@inheritdoc} - * - * @return static - */ - public function duplicate(?array $query = null, ?array $request = null, ?array $attributes = null, ?array $cookies = null, ?array $files = null, ?array $server = null): static - { - return parent::duplicate($query, $request, $attributes, $cookies, $this->filterFiles($files), $server); - } - - /** - * Filter the given array of files, removing any empty values. - * - * @param mixed $files - * @return mixed - */ - protected function filterFiles($files) - { - if (! $files) { - return; - } - - foreach ($files as $key => $file) { - if (is_array($file)) { - $files[$key] = $this->filterFiles($files[$key]); - } - - if (empty($files[$key])) { - unset($files[$key]); - } - } - - return $files; - } - - /** - * {@inheritdoc} - */ - public function hasSession(bool $skipIfUninitialized = false): bool - { - return ! is_null($this->session); - } - - /** - * {@inheritdoc} - */ - public function getSession(): SessionInterface - { - return $this->hasSession() - ? new SymfonySessionDecorator($this->session()) - : throw new SessionNotFoundException; - } - - /** - * Get the session associated with the request. - * - * @return \Illuminate\Contracts\Session\Session - * - * @throws \RuntimeException - */ - public function session() - { - if (! $this->hasSession()) { - throw new RuntimeException('Session store not set on request.'); - } - - return $this->session; - } - - /** - * Set the session instance on the request. - * - * @param \Illuminate\Contracts\Session\Session $session - * @return void - */ - public function setLaravelSession($session) - { - $this->session = $session; - } - - /** - * Set the locale for the request instance. - * - * @param string $locale - * @return void - */ - public function setRequestLocale(string $locale) - { - $this->locale = $locale; - } - - /** - * Set the default locale for the request instance. - * - * @param string $locale - * @return void - */ - public function setDefaultRequestLocale(string $locale) - { - $this->defaultLocale = $locale; - } - - /** - * Get the user making the request. - * - * @param string|null $guard - * @return mixed - */ - public function user($guard = null) - { - return call_user_func($this->getUserResolver(), $guard); - } - - /** - * Get the route handling the request. - * - * @param string|null $param - * @param mixed $default - * @return \Illuminate\Routing\Route|object|string|null - */ - public function route($param = null, $default = null) - { - $route = call_user_func($this->getRouteResolver()); - - if (is_null($route) || is_null($param)) { - return $route; - } - - return $route->parameter($param, $default); - } - - /** - * Get a unique fingerprint for the request / route / IP address. - * - * @return string - * - * @throws \RuntimeException - */ - public function fingerprint() - { - if (! $route = $this->route()) { - throw new RuntimeException('Unable to generate fingerprint. Route unavailable.'); - } - - return sha1(implode('|', array_merge( - $route->methods(), - [$route->getDomain(), $route->uri(), $this->ip()] - ))); - } - - /** - * Set the JSON payload for the request. - * - * @param \Symfony\Component\HttpFoundation\InputBag $json - * @return $this - */ - public function setJson($json) - { - $this->json = $json; - - return $this; - } - - /** - * Get the user resolver callback. - * - * @return \Closure - */ - public function getUserResolver() - { - return $this->userResolver ?: function () { - // - }; - } - - /** - * Set the user resolver callback. - * - * @param \Closure $callback - * @return $this - */ - public function setUserResolver(Closure $callback) - { - $this->userResolver = $callback; - - return $this; - } - - /** - * Get the route resolver callback. - * - * @return \Closure - */ - public function getRouteResolver() - { - return $this->routeResolver ?: function () { - // - }; - } - - /** - * Set the route resolver callback. - * - * @param \Closure $callback - * @return $this - */ - public function setRouteResolver(Closure $callback) - { - $this->routeResolver = $callback; - - return $this; - } - - /** - * Get all of the input and files for the request. - * - * @return array - */ - public function toArray(): array - { - return $this->all(); - } - - /** - * Determine if the given offset exists. - * - * @param string $offset - * @return bool - */ - public function offsetExists($offset): bool - { - $route = $this->route(); - - return Arr::has( - $this->all() + ($route ? $route->parameters() : []), - $offset - ); - } - - /** - * Get the value at the given offset. - * - * @param string $offset - * @return mixed - */ - public function offsetGet($offset): mixed - { - return $this->__get($offset); - } - - /** - * Set the value at the given offset. - * - * @param string $offset - * @param mixed $value - * @return void - */ - public function offsetSet($offset, $value): void - { - $this->getInputSource()->set($offset, $value); - } - - /** - * Remove the value at the given offset. - * - * @param string $offset - * @return void - */ - public function offsetUnset($offset): void - { - $this->getInputSource()->remove($offset); - } - - /** - * Check if an input element is set on the request. - * - * @param string $key - * @return bool - */ - public function __isset($key) - { - return ! is_null($this->__get($key)); - } - - /** - * Get an input element from the request. - * - * @param string $key - * @return mixed - */ - public function __get($key) - { - return Arr::get($this->all(), $key, fn () => $this->route($key)); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Http/Resources/Json/JsonResource.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Http/Resources/Json/JsonResource.php deleted file mode 100644 index cf08343d..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Http/Resources/Json/JsonResource.php +++ /dev/null @@ -1,257 +0,0 @@ -resource = $resource; - } - - /** - * Create a new resource instance. - * - * @param mixed ...$parameters - * @return static - */ - public static function make(...$parameters) - { - return new static(...$parameters); - } - - /** - * Create a new anonymous resource collection. - * - * @param mixed $resource - * @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection - */ - public static function collection($resource) - { - return tap(static::newCollection($resource), function ($collection) { - if (property_exists(static::class, 'preserveKeys')) { - $collection->preserveKeys = (new static([]))->preserveKeys === true; - } - }); - } - - /** - * Create a new resource collection instance. - * - * @param mixed $resource - * @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection - */ - protected static function newCollection($resource) - { - return new AnonymousResourceCollection($resource, static::class); - } - - /** - * Resolve the resource to an array. - * - * @param \Illuminate\Http\Request|null $request - * @return array - */ - public function resolve($request = null) - { - $data = $this->toArray( - $request = $request ?: Container::getInstance()->make('request') - ); - - if ($data instanceof Arrayable) { - $data = $data->toArray(); - } elseif ($data instanceof JsonSerializable) { - $data = $data->jsonSerialize(); - } - - return $this->filter((array) $data); - } - - /** - * Transform the resource into an array. - * - * @param \Illuminate\Http\Request $request - * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable - */ - public function toArray(Request $request) - { - if (is_null($this->resource)) { - return []; - } - - return is_array($this->resource) - ? $this->resource - : $this->resource->toArray(); - } - - /** - * Convert the model instance to JSON. - * - * @param int $options - * @return string - * - * @throws \Illuminate\Database\Eloquent\JsonEncodingException - */ - public function toJson($options = 0) - { - try { - $json = json_encode($this->jsonSerialize(), $options | JSON_THROW_ON_ERROR); - } catch (JsonException $e) { - throw JsonEncodingException::forResource($this, $e->getMessage()); - } - - return $json; - } - - /** - * Get any additional data that should be returned with the resource array. - * - * @param \Illuminate\Http\Request $request - * @return array - */ - public function with(Request $request) - { - return $this->with; - } - - /** - * Add additional meta data to the resource response. - * - * @param array $data - * @return $this - */ - public function additional(array $data) - { - $this->additional = $data; - - return $this; - } - - /** - * Get the JSON serialization options that should be applied to the resource response. - * - * @return int - */ - public function jsonOptions() - { - return 0; - } - - /** - * Customize the response for a request. - * - * @param \Illuminate\Http\Request $request - * @param \Illuminate\Http\JsonResponse $response - * @return void - */ - public function withResponse(Request $request, JsonResponse $response) - { - // - } - - /** - * Set the string that should wrap the outer-most resource array. - * - * @param string $value - * @return void - */ - public static function wrap($value) - { - static::$wrap = $value; - } - - /** - * Disable wrapping of the outer-most resource array. - * - * @return void - */ - public static function withoutWrapping() - { - static::$wrap = null; - } - - /** - * Transform the resource into an HTTP response. - * - * @param \Illuminate\Http\Request|null $request - * @return \Illuminate\Http\JsonResponse - */ - public function response($request = null) - { - return $this->toResponse( - $request ?: Container::getInstance()->make('request') - ); - } - - /** - * Create an HTTP response that represents the object. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\JsonResponse - */ - public function toResponse($request) - { - return (new ResourceResponse($this))->toResponse($request); - } - - /** - * Prepare the resource for JSON serialization. - * - * @return array - */ - public function jsonSerialize(): array - { - return $this->resolve(Container::getInstance()->make('request')); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Log/Logger.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Log/Logger.php deleted file mode 100755 index 799228a6..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Log/Logger.php +++ /dev/null @@ -1,313 +0,0 @@ -logger = $logger; - $this->dispatcher = $dispatcher; - } - - /** - * Log an emergency message to the logs. - * - * @param \Illuminate\Contracts\Support\Arrayable|\Illuminate\Contracts\Support\Jsonable|\Illuminate\Support\Stringable|array|string $message - * @param array $context - * @return void - */ - public function emergency($message, array $context = []): void - { - $this->writeLog(__FUNCTION__, $message, $context); - } - - /** - * Log an alert message to the logs. - * - * @param \Illuminate\Contracts\Support\Arrayable|\Illuminate\Contracts\Support\Jsonable|\Illuminate\Support\Stringable|array|string $message - * @param array $context - * @return void - */ - public function alert($message, array $context = []): void - { - $this->writeLog(__FUNCTION__, $message, $context); - } - - /** - * Log a critical message to the logs. - * - * @param \Illuminate\Contracts\Support\Arrayable|\Illuminate\Contracts\Support\Jsonable|\Illuminate\Support\Stringable|array|string $message - * @param array $context - * @return void - */ - public function critical($message, array $context = []): void - { - $this->writeLog(__FUNCTION__, $message, $context); - } - - /** - * Log an error message to the logs. - * - * @param \Illuminate\Contracts\Support\Arrayable|\Illuminate\Contracts\Support\Jsonable|\Illuminate\Support\Stringable|array|string $message - * @param array $context - * @return void - */ - public function error($message, array $context = []): void - { - $this->writeLog(__FUNCTION__, $message, $context); - } - - /** - * Log a warning message to the logs. - * - * @param \Illuminate\Contracts\Support\Arrayable|\Illuminate\Contracts\Support\Jsonable|\Illuminate\Support\Stringable|array|string $message - * @param array $context - * @return void - */ - public function warning($message, array $context = []): void - { - $this->writeLog(__FUNCTION__, $message, $context); - } - - /** - * Log a notice to the logs. - * - * @param \Illuminate\Contracts\Support\Arrayable|\Illuminate\Contracts\Support\Jsonable|\Illuminate\Support\Stringable|array|string $message - * @param array $context - * @return void - */ - public function notice($message, array $context = []): void - { - $this->writeLog(__FUNCTION__, $message, $context); - } - - /** - * Log an informational message to the logs. - * - * @param \Illuminate\Contracts\Support\Arrayable|\Illuminate\Contracts\Support\Jsonable|\Illuminate\Support\Stringable|array|string $message - * @param array $context - * @return void - */ - public function info($message, array $context = []): void - { - $this->writeLog(__FUNCTION__, $message, $context); - } - - /** - * Log a debug message to the logs. - * - * @param \Illuminate\Contracts\Support\Arrayable|\Illuminate\Contracts\Support\Jsonable|\Illuminate\Support\Stringable|array|string $message - * @param array $context - * @return void - */ - public function debug($message, array $context = []): void - { - $this->writeLog(__FUNCTION__, $message, $context); - } - - /** - * Log a message to the logs. - * - * @param string $level - * @param \Illuminate\Contracts\Support\Arrayable|\Illuminate\Contracts\Support\Jsonable|\Illuminate\Support\Stringable|array|string $message - * @param array $context - * @return void - */ - public function log($level, $message, array $context = []): void - { - $this->writeLog($level, $message, $context); - } - - /** - * Dynamically pass log calls into the writer. - * - * @param string $level - * @param \Illuminate\Contracts\Support\Arrayable|\Illuminate\Contracts\Support\Jsonable|\Illuminate\Support\Stringable|array|string $message - * @param array $context - * @return void - */ - public function write($level, $message, array $context = []): void - { - $this->writeLog($level, $message, $context); - } - - /** - * Write a message to the log. - * - * @param string $level - * @param \Illuminate\Contracts\Support\Arrayable|\Illuminate\Contracts\Support\Jsonable|\Illuminate\Support\Stringable|array|string $message - * @param array $context - * @return void - */ - protected function writeLog($level, $message, $context): void - { - $this->logger->{$level}( - $message = $this->formatMessage($message), - $context = array_merge($this->context, $context) - ); - - $this->fireLogEvent($level, $message, $context); - } - - /** - * Add context to all future logs. - * - * @param array $context - * @return $this - */ - public function withContext(array $context = []) - { - $this->context = array_merge($this->context, $context); - - return $this; - } - - /** - * Flush the existing context array. - * - * @return $this - */ - public function withoutContext() - { - $this->context = []; - - return $this; - } - - /** - * Register a new callback handler for when a log event is triggered. - * - * @param \Closure $callback - * @return void - * - * @throws \RuntimeException - */ - public function listen(Closure $callback) - { - if (! isset($this->dispatcher)) { - throw new RuntimeException('Events dispatcher has not been set.'); - } - - $this->dispatcher->listen(MessageLogged::class, $callback); - } - - /** - * Fires a log event. - * - * @param string $level - * @param string $message - * @param array $context - * @return void - */ - protected function fireLogEvent($level, $message, array $context = []) - { - // If the event dispatcher is set, we will pass along the parameters to the - // log listeners. These are useful for building profilers or other tools - // that aggregate all of the log messages for a given "request" cycle. - if (isset($this->dispatcher)) { - $this->dispatcher->dispatch(new MessageLogged($level, $message, $context)); - } - } - - /** - * Format the parameters for the logger. - * - * @param \Illuminate\Contracts\Support\Arrayable|\Illuminate\Contracts\Support\Jsonable|\Illuminate\Support\Stringable|array|string $message - * @return string - */ - protected function formatMessage($message) - { - if (is_array($message)) { - return var_export($message, true); - } elseif ($message instanceof Jsonable) { - return $message->toJson(); - } elseif ($message instanceof Arrayable) { - return var_export($message->toArray(), true); - } - - return (string) $message; - } - - /** - * Get the underlying logger implementation. - * - * @return \Psr\Log\LoggerInterface - */ - public function getLogger() - { - return $this->logger; - } - - /** - * Get the event dispatcher instance. - * - * @return \Illuminate\Contracts\Events\Dispatcher - */ - public function getEventDispatcher() - { - return $this->dispatcher; - } - - /** - * Set the event dispatcher instance. - * - * @param \Illuminate\Contracts\Events\Dispatcher $dispatcher - * @return void - */ - public function setEventDispatcher(Dispatcher $dispatcher) - { - $this->dispatcher = $dispatcher; - } - - /** - * Dynamically proxy method calls to the underlying logger. - * - * @param string $method - * @param array $parameters - * @return mixed - */ - public function __call($method, $parameters) - { - return $this->logger->{$method}(...$parameters); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Mail/MailManager.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Mail/MailManager.php deleted file mode 100644 index 0c54fa23..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Mail/MailManager.php +++ /dev/null @@ -1,594 +0,0 @@ -app = $app; - } - - /** - * Get a mailer instance by name. - * - * @param string|null $name - * @return \Illuminate\Contracts\Mail\Mailer - */ - public function mailer($name = null) - { - $name = $name ?: $this->getDefaultDriver(); - - return $this->mailers[$name] = $this->get($name); - } - - /** - * Get a mailer driver instance. - * - * @param string|null $driver - * @return \Illuminate\Mail\Mailer - */ - public function driver($driver = null) - { - return $this->mailer($driver); - } - - /** - * Attempt to get the mailer from the local cache. - * - * @param string $name - * @return \Illuminate\Mail\Mailer - */ - protected function get($name) - { - return $this->mailers[$name] ?? $this->resolve($name); - } - - /** - * Resolve the given mailer. - * - * @param string $name - * @return \Illuminate\Mail\Mailer - * - * @throws \InvalidArgumentException - */ - protected function resolve($name) - { - $config = $this->getConfig($name); - - if (is_null($config)) { - throw new InvalidArgumentException("Mailer [{$name}] is not defined."); - } - - // Once we have created the mailer instance we will set a container instance - // on the mailer. This allows us to resolve mailer classes via containers - // for maximum testability on said classes instead of passing Closures. - $mailer = new Mailer( - $name, - $this->app['view'], - $this->createSymfonyTransport($config), - $this->app['events'] - ); - - if ($this->app->bound('queue')) { - $mailer->setQueue($this->app['queue']); - } - - // Next we will set all of the global addresses on this mailer, which allows - // for easy unification of all "from" addresses as well as easy debugging - // of sent messages since these will be sent to a single email address. - foreach (['from', 'reply_to', 'to', 'return_path'] as $type) { - $this->setGlobalAddress($mailer, $config, $type); - } - - return $mailer; - } - - /** - * Create a new transport instance. - * - * @param array $config - * @return \Symfony\Component\Mailer\Transport\TransportInterface - * - * @throws \InvalidArgumentException - */ - public function createSymfonyTransport(array $config) - { - // Here we will check if the "transport" key exists and if it doesn't we will - // assume an application is still using the legacy mail configuration file - // format and use the "mail.driver" configuration option instead for BC. - $transport = $config['transport'] ?? $this->app['config']['mail.driver']; - - if (isset($this->customCreators[$transport])) { - return call_user_func($this->customCreators[$transport], $config); - } - - if (trim($transport ?? '') === '' || - ! method_exists($this, $method = 'create'.ucfirst(Str::camel($transport)).'Transport')) { - throw new InvalidArgumentException("Unsupported mail transport [{$transport}]."); - } - - return $this->{$method}($config); - } - - /** - * Create an instance of the Symfony SMTP Transport driver. - * - * @param array $config - * @return \Symfony\Component\Mailer\Transport\Smtp\EsmtpTransport - */ - protected function createSmtpTransport(array $config) - { - $factory = new EsmtpTransportFactory; - - $scheme = $config['scheme'] ?? null; - - if (! $scheme) { - $scheme = ! empty($config['encryption']) && $config['encryption'] === 'tls' - ? (($config['port'] == 465) ? 'smtps' : 'smtp') - : ''; - } - - $transport = $factory->create(new Dsn( - $scheme, - $config['host'], - $config['username'] ?? null, - $config['password'] ?? null, - $config['port'] ?? null, - $config - )); - - return $this->configureSmtpTransport($transport, $config); - } - - /** - * Configure the additional SMTP driver options. - * - * @param \Symfony\Component\Mailer\Transport\Smtp\EsmtpTransport $transport - * @param array $config - * @return \Symfony\Component\Mailer\Transport\Smtp\EsmtpTransport - */ - protected function configureSmtpTransport(EsmtpTransport $transport, array $config) - { - $stream = $transport->getStream(); - - if ($stream instanceof SocketStream) { - if (isset($config['source_ip'])) { - $stream->setSourceIp($config['source_ip']); - } - - if (isset($config['timeout'])) { - $stream->setTimeout($config['timeout']); - } - } - - return $transport; - } - - /** - * Create an instance of the Symfony Sendmail Transport driver. - * - * @param array $config - * @return \Symfony\Component\Mailer\Transport\SendmailTransport - */ - protected function createSendmailTransport(array $config) - { - return new SendmailTransport( - $config['path'] ?? $this->app['config']->get('mail.sendmail') - ); - } - - /** - * Create an instance of the Symfony Amazon SES Transport driver. - * - * @param array $config - * @return \Illuminate\Mail\Transport\SesTransport - */ - protected function createSesTransport(array $config) - { - $config = array_merge( - $this->app['config']->get('services.ses', []), - ['version' => 'latest', 'service' => 'email'], - $config - ); - - $config = Arr::except($config, ['transport']); - - return new SesTransport( - new SesClient($this->addSesCredentials($config)), - $config['options'] ?? [] - ); - } - - /** - * Create an instance of the Symfony Amazon SES V2 Transport driver. - * - * @param array $config - * @return \Illuminate\Mail\Transport\SesV2Transport - */ - protected function createSesV2Transport(array $config) - { - $config = array_merge( - $this->app['config']->get('services.ses', []), - ['version' => 'latest'], - $config - ); - - $config = Arr::except($config, ['transport']); - - return new SesV2Transport( - new SesV2Client($this->addSesCredentials($config)), - $config['options'] ?? [] - ); - } - - /** - * Add the SES credentials to the configuration array. - * - * @param array $config - * @return array - */ - protected function addSesCredentials(array $config) - { - if (! empty($config['key']) && ! empty($config['secret'])) { - $config['credentials'] = Arr::only($config, ['key', 'secret', 'token']); - } - - return Arr::except($config, ['token']); - } - - /** - * Create an instance of the Symfony Mail Transport driver. - * - * @return \Symfony\Component\Mailer\Transport\SendmailTransport - */ - protected function createMailTransport() - { - return new SendmailTransport; - } - - /** - * Create an instance of the Symfony Mailgun Transport driver. - * - * @param array $config - * @return \Symfony\Component\Mailer\Transport\TransportInterface - */ - protected function createMailgunTransport(array $config) - { - $factory = new MailgunTransportFactory(null, $this->getHttpClient($config)); - - if (! isset($config['secret'])) { - $config = $this->app['config']->get('services.mailgun', []); - } - - return $factory->create(new Dsn( - 'mailgun+'.($config['scheme'] ?? 'https'), - $config['endpoint'] ?? 'default', - $config['secret'], - $config['domain'] - )); - } - - /** - * Create an instance of the Symfony Postmark Transport driver. - * - * @param array $config - * @return \Symfony\Component\Mailer\Bridge\Postmark\Transport\PostmarkApiTransport - */ - protected function createPostmarkTransport(array $config) - { - $factory = new PostmarkTransportFactory(null, $this->getHttpClient($config)); - - $options = isset($config['message_stream_id']) - ? ['message_stream' => $config['message_stream_id']] - : []; - - return $factory->create(new Dsn( - 'postmark+api', - 'default', - $config['token'] ?? $this->app['config']->get('services.postmark.token'), - null, - null, - $options - )); - } - - /** - * Create an instance of the Symfony Failover Transport driver. - * - * @param array $config - * @return \Symfony\Component\Mailer\Transport\FailoverTransport - */ - protected function createFailoverTransport(array $config) - { - $transports = []; - - foreach ($config['mailers'] as $name) { - $config = $this->getConfig($name); - - if (is_null($config)) { - throw new InvalidArgumentException("Mailer [{$name}] is not defined."); - } - - // Now, we will check if the "driver" key exists and if it does we will set - // the transport configuration parameter in order to offer compatibility - // with any Laravel <= 6.x application style mail configuration files. - $transports[] = $this->app['config']['mail.driver'] - ? $this->createSymfonyTransport(array_merge($config, ['transport' => $name])) - : $this->createSymfonyTransport($config); - } - - return new FailoverTransport($transports); - } - - /** - * Create an instance of the Symfony Roundrobin Transport driver. - * - * @param array $config - * @return \Symfony\Component\Mailer\Transport\RoundRobinTransport - */ - protected function createRoundrobinTransport(array $config) - { - $transports = []; - - foreach ($config['mailers'] as $name) { - $config = $this->getConfig($name); - - if (is_null($config)) { - throw new InvalidArgumentException("Mailer [{$name}] is not defined."); - } - - // Now, we will check if the "driver" key exists and if it does we will set - // the transport configuration parameter in order to offer compatibility - // with any Laravel <= 6.x application style mail configuration files. - $transports[] = $this->app['config']['mail.driver'] - ? $this->createSymfonyTransport(array_merge($config, ['transport' => $name])) - : $this->createSymfonyTransport($config); - } - - return new RoundRobinTransport($transports); - } - - /** - * Create an instance of the Log Transport driver. - * - * @param array $config - * @return \Illuminate\Mail\Transport\LogTransport - */ - protected function createLogTransport(array $config) - { - $logger = $this->app->make(LoggerInterface::class); - - if ($logger instanceof LogManager) { - $logger = $logger->channel( - $config['channel'] ?? $this->app['config']->get('mail.log_channel') - ); - } - - return new LogTransport($logger); - } - - /** - * Create an instance of the Array Transport Driver. - * - * @return \Illuminate\Mail\Transport\ArrayTransport - */ - protected function createArrayTransport() - { - return new ArrayTransport; - } - - /** - * Get a configured Symfony HTTP client instance. - * - * @return \Symfony\Contracts\HttpClient\HttpClientInterface|null - */ - protected function getHttpClient(array $config) - { - if ($options = ($config['client'] ?? false)) { - $maxHostConnections = Arr::pull($options, 'max_host_connections', 6); - $maxPendingPushes = Arr::pull($options, 'max_pending_pushes', 50); - - return HttpClient::create($options, $maxHostConnections, $maxPendingPushes); - } - } - - /** - * Set a global address on the mailer by type. - * - * @param \Illuminate\Mail\Mailer $mailer - * @param array $config - * @param string $type - * @return void - */ - protected function setGlobalAddress($mailer, array $config, string $type) - { - $address = Arr::get($config, $type, $this->app['config']['mail.'.$type]); - - if (is_array($address) && isset($address['address'])) { - $mailer->{'always'.Str::studly($type)}($address['address'], $address['name']); - } - } - - /** - * Get the mail connection configuration. - * - * @param string $name - * @return array - */ - protected function getConfig(string $name) - { - // Here we will check if the "driver" key exists and if it does we will use - // the entire mail configuration file as the "driver" config in order to - // provide "BC" for any Laravel <= 6.x style mail configuration files. - $config = $this->app['config']['mail.driver'] - ? $this->app['config']['mail'] - : $this->app['config']["mail.mailers.{$name}"]; - - if (isset($config['url'])) { - $config = array_merge($config, (new ConfigurationUrlParser)->parseConfiguration($config)); - - $config['transport'] = Arr::pull($config, 'driver'); - } - - return $config; - } - - /** - * Get the default mail driver name. - * - * @return string - */ - public function getDefaultDriver() - { - // Here we will check if the "driver" key exists and if it does we will use - // that as the default driver in order to provide support for old styles - // of the Laravel mail configuration file for backwards compatibility. - return $this->app['config']['mail.driver'] ?? - $this->app['config']['mail.default']; - } - - /** - * Set the default mail driver name. - * - * @param string $name - * @return void - */ - public function setDefaultDriver(string $name) - { - if ($this->app['config']['mail.driver']) { - $this->app['config']['mail.driver'] = $name; - } - - $this->app['config']['mail.default'] = $name; - } - - /** - * Disconnect the given mailer and remove from local cache. - * - * @param string|null $name - * @return void - */ - public function purge($name = null) - { - $name = $name ?: $this->getDefaultDriver(); - - unset($this->mailers[$name]); - } - - /** - * Register a custom transport creator Closure. - * - * @param string $driver - * @param \Closure $callback - * @return $this - */ - public function extend($driver, Closure $callback) - { - $this->customCreators[$driver] = $callback; - - return $this; - } - - /** - * Get the application instance used by the manager. - * - * @return \Illuminate\Contracts\Foundation\Application - */ - public function getApplication() - { - return $this->app; - } - - /** - * Set the application instance used by the manager. - * - * @param \Illuminate\Contracts\Foundation\Application $app - * @return $this - */ - public function setApplication($app) - { - $this->app = $app; - - return $this; - } - - /** - * Forget all of the resolved mailer instances. - * - * @return $this - */ - public function forgetMailers() - { - $this->mailers = []; - - return $this; - } - - /** - * Dynamically call the default driver instance. - * - * @param string $method - * @param array $parameters - * @return mixed - */ - public function __call($method, $parameters) - { - return $this->mailer()->$method(...$parameters); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Mail/Mailables/Address.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Mail/Mailables/Address.php deleted file mode 100644 index 7a9ed2aa..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Mail/Mailables/Address.php +++ /dev/null @@ -1,33 +0,0 @@ -address = $address; - $this->name = $name; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Mail/Mailables/Content.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Mail/Mailables/Content.php deleted file mode 100644 index 80826243..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Mail/Mailables/Content.php +++ /dev/null @@ -1,157 +0,0 @@ -view = $view; - $this->html = $html; - $this->text = $text; - $this->markdown = $markdown; - $this->with = $with; - $this->htmlString = $htmlString; - } - - /** - * Set the view for the message. - * - * @param string $view - * @return $this - */ - public function view(string $view) - { - $this->view = $view; - - return $this; - } - - /** - * Set the view for the message. - * - * @param string $view - * @return $this - */ - public function html(string $view) - { - return $this->view($view); - } - - /** - * Set the plain text view for the message. - * - * @param string $view - * @return $this - */ - public function text(string $view) - { - $this->text = $view; - - return $this; - } - - /** - * Set the Markdown view for the message. - * - * @param string $view - * @return $this - */ - public function markdown(string $view) - { - $this->markdown = $view; - - return $this; - } - - /** - * Set the pre-rendered HTML for the message. - * - * @param string $html - * @return $this - */ - public function htmlString(string $html) - { - $this->htmlString = $html; - - return $this; - } - - /** - * Add a piece of view data to the message. - * - * @param array|string $key - * @param mixed|null $value - * @return $this - */ - public function with($key, $value = null) - { - if (is_array($key)) { - $this->with = array_merge($this->with, $key); - } else { - $this->with[$key] = $value; - } - - return $this; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Mail/Mailables/Envelope.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Mail/Mailables/Envelope.php deleted file mode 100644 index b41d5c07..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Mail/Mailables/Envelope.php +++ /dev/null @@ -1,369 +0,0 @@ - $to - * @param array $cc - * @param array $bcc - * @param array $replyTo - * @param string|null $subject - * @param array $tags - * @param array $metadata - * @param \Closure|array $using - * @return void - * - * @named-arguments-supported - */ - public function __construct(Address|string|null $from = null, $to = [], $cc = [], $bcc = [], $replyTo = [], ?string $subject = null, array $tags = [], array $metadata = [], Closure|array $using = []) - { - $this->from = is_string($from) ? new Address($from) : $from; - $this->to = $this->normalizeAddresses($to); - $this->cc = $this->normalizeAddresses($cc); - $this->bcc = $this->normalizeAddresses($bcc); - $this->replyTo = $this->normalizeAddresses($replyTo); - $this->subject = $subject; - $this->tags = $tags; - $this->metadata = $metadata; - $this->using = Arr::wrap($using); - } - - /** - * Normalize the given array of addresses. - * - * @param array $addresses - * @return array - */ - protected function normalizeAddresses($addresses) - { - return collect($addresses)->map(function ($address) { - return is_string($address) ? new Address($address) : $address; - })->all(); - } - - /** - * Specify who the message will be "from". - * - * @param \Illuminate\Mail\Mailables\Address|string $address - * @param string|null $name - * @return $this - */ - public function from(Address|string $address, $name = null) - { - $this->from = is_string($address) ? new Address($address, $name) : $address; - - return $this; - } - - /** - * Add a "to" recipient to the message envelope. - * - * @param \Illuminate\Mail\Mailables\Address|array|string $address - * @param string|null $name - * @return $this - */ - public function to(Address|array|string $address, $name = null) - { - $this->to = array_merge($this->to, $this->normalizeAddresses( - is_string($name) ? [new Address($address, $name)] : Arr::wrap($address), - )); - - return $this; - } - - /** - * Add a "cc" recipient to the message envelope. - * - * @param \Illuminate\Mail\Mailables\Address|array|string $address - * @param string|null $name - * @return $this - */ - public function cc(Address|array|string $address, $name = null) - { - $this->cc = array_merge($this->cc, $this->normalizeAddresses( - is_string($name) ? [new Address($address, $name)] : Arr::wrap($address), - )); - - return $this; - } - - /** - * Add a "bcc" recipient to the message envelope. - * - * @param \Illuminate\Mail\Mailables\Address|array|string $address - * @param string|null $name - * @return $this - */ - public function bcc(Address|array|string $address, $name = null) - { - $this->bcc = array_merge($this->bcc, $this->normalizeAddresses( - is_string($name) ? [new Address($address, $name)] : Arr::wrap($address), - )); - - return $this; - } - - /** - * Add a "reply to" recipient to the message envelope. - * - * @param \Illuminate\Mail\Mailables\Address|array|string $address - * @param string|null $name - * @return $this - */ - public function replyTo(Address|array|string $address, $name = null) - { - $this->replyTo = array_merge($this->replyTo, $this->normalizeAddresses( - is_string($name) ? [new Address($address, $name)] : Arr::wrap($address), - )); - - return $this; - } - - /** - * Set the subject of the message. - * - * @param string $subject - * @return $this - */ - public function subject(string $subject) - { - $this->subject = $subject; - - return $this; - } - - /** - * Add "tags" to the message. - * - * @param array $tags - * @return $this - */ - public function tags(array $tags) - { - $this->tags = array_merge($this->tags, $tags); - - return $this; - } - - /** - * Add a "tag" to the message. - * - * @param string $tag - * @return $this - */ - public function tag(string $tag) - { - $this->tags[] = $tag; - - return $this; - } - - /** - * Add metadata to the message. - * - * @param string $key - * @param string|int $value - * @return $this - */ - public function metadata(string $key, string|int $value) - { - $this->metadata[$key] = $value; - - return $this; - } - - /** - * Add a Symfony Message customization callback to the message. - * - * @param \Closure $callback - * @return $this - */ - public function using(Closure $callback) - { - $this->using[] = $callback; - - return $this; - } - - /** - * Determine if the message is from the given address. - * - * @param string $address - * @param string|null $name - * @return bool - */ - public function isFrom(string $address, ?string $name = null) - { - if (is_null($name)) { - return $this->from->address === $address; - } - - return $this->from->address === $address && - $this->from->name === $name; - } - - /** - * Determine if the message has the given address as a recipient. - * - * @param string $address - * @param string|null $name - * @return bool - */ - public function hasTo(string $address, ?string $name = null) - { - return $this->hasRecipient($this->to, $address, $name); - } - - /** - * Determine if the message has the given address as a "cc" recipient. - * - * @param string $address - * @param string|null $name - * @return bool - */ - public function hasCc(string $address, ?string $name = null) - { - return $this->hasRecipient($this->cc, $address, $name); - } - - /** - * Determine if the message has the given address as a "bcc" recipient. - * - * @param string $address - * @param string|null $name - * @return bool - */ - public function hasBcc(string $address, ?string $name = null) - { - return $this->hasRecipient($this->bcc, $address, $name); - } - - /** - * Determine if the message has the given address as a "reply to" recipient. - * - * @param string $address - * @param string|null $name - * @return bool - */ - public function hasReplyTo(string $address, ?string $name = null) - { - return $this->hasRecipient($this->replyTo, $address, $name); - } - - /** - * Determine if the message has the given recipient. - * - * @param array $recipients - * @param string $address - * @param string|null $name - * @return bool - */ - protected function hasRecipient(array $recipients, string $address, ?string $name = null) - { - return collect($recipients)->contains(function ($recipient) use ($address, $name) { - if (is_null($name)) { - return $recipient->address === $address; - } - - return $recipient->address === $address && - $recipient->name === $name; - }); - } - - /** - * Determine if the message has the given subject. - * - * @param string $subject - * @return bool - */ - public function hasSubject(string $subject) - { - return $this->subject === $subject; - } - - /** - * Determine if the message has the given metadata. - * - * @param string $key - * @param string $value - * @return bool - */ - public function hasMetadata(string $key, string $value) - { - return isset($this->metadata[$key]) && (string) $this->metadata[$key] === $value; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Mail/Mailables/Headers.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Mail/Mailables/Headers.php deleted file mode 100644 index 0428f250..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Mail/Mailables/Headers.php +++ /dev/null @@ -1,100 +0,0 @@ -messageId = $messageId; - $this->references = $references; - $this->text = $text; - } - - /** - * Set the message ID. - * - * @param string $messageId - * @return $this - */ - public function messageId(string $messageId) - { - $this->messageId = $messageId; - - return $this; - } - - /** - * Set the message IDs referenced by this message. - * - * @param array $references - * @return $this - */ - public function references(array $references) - { - $this->references = array_merge($this->references, $references); - - return $this; - } - - /** - * Set the headers for this message. - * - * @param array $references - * @return $this - */ - public function text(array $text) - { - $this->text = array_merge($this->text, $text); - - return $this; - } - - /** - * Get the references header as a string. - * - * @return string - */ - public function referencesString(): string - { - return collect($this->references)->map(function ($messageId) { - return Str::finish(Str::start($messageId, '<'), '>'); - })->implode(' '); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Mail/Mailer.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Mail/Mailer.php deleted file mode 100755 index f9196bd1..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Mail/Mailer.php +++ /dev/null @@ -1,656 +0,0 @@ -name = $name; - $this->views = $views; - $this->events = $events; - $this->transport = $transport; - } - - /** - * Set the global from address and name. - * - * @param string $address - * @param string|null $name - * @return void - */ - public function alwaysFrom($address, $name = null) - { - $this->from = compact('address', 'name'); - } - - /** - * Set the global reply-to address and name. - * - * @param string $address - * @param string|null $name - * @return void - */ - public function alwaysReplyTo($address, $name = null) - { - $this->replyTo = compact('address', 'name'); - } - - /** - * Set the global return path address. - * - * @param string $address - * @return void - */ - public function alwaysReturnPath($address) - { - $this->returnPath = compact('address'); - } - - /** - * Set the global to address and name. - * - * @param string $address - * @param string|null $name - * @return void - */ - public function alwaysTo($address, $name = null) - { - $this->to = compact('address', 'name'); - } - - /** - * Begin the process of mailing a mailable class instance. - * - * @param mixed $users - * @param string|null $name - * @return \Illuminate\Mail\PendingMail - */ - public function to($users, $name = null) - { - if (! is_null($name) && is_string($users)) { - $users = new Address($users, $name); - } - - return (new PendingMail($this))->to($users); - } - - /** - * Begin the process of mailing a mailable class instance. - * - * @param mixed $users - * @param string|null $name - * @return \Illuminate\Mail\PendingMail - */ - public function cc($users, $name = null) - { - if (! is_null($name) && is_string($users)) { - $users = new Address($users, $name); - } - - return (new PendingMail($this))->cc($users); - } - - /** - * Begin the process of mailing a mailable class instance. - * - * @param mixed $users - * @param string|null $name - * @return \Illuminate\Mail\PendingMail - */ - public function bcc($users, $name = null) - { - if (! is_null($name) && is_string($users)) { - $users = new Address($users, $name); - } - - return (new PendingMail($this))->bcc($users); - } - - /** - * Send a new message with only an HTML part. - * - * @param string $html - * @param mixed $callback - * @return \Illuminate\Mail\SentMessage|null - */ - public function html($html, $callback) - { - return $this->send(['html' => new HtmlString($html)], [], $callback); - } - - /** - * Send a new message with only a raw text part. - * - * @param string $text - * @param mixed $callback - * @return \Illuminate\Mail\SentMessage|null - */ - public function raw($text, $callback) - { - return $this->send(['raw' => $text], [], $callback); - } - - /** - * Send a new message with only a plain part. - * - * @param string $view - * @param array $data - * @param mixed $callback - * @return \Illuminate\Mail\SentMessage|null - */ - public function plain($view, array $data, $callback) - { - return $this->send(['text' => $view], $data, $callback); - } - - /** - * Render the given message as a view. - * - * @param string|array $view - * @param array $data - * @return string - */ - public function render($view, array $data = []) - { - // First we need to parse the view, which could either be a string or an array - // containing both an HTML and plain text versions of the view which should - // be used when sending an e-mail. We will extract both of them out here. - [$view, $plain, $raw] = $this->parseView($view); - - $data['message'] = $this->createMessage(); - - return $this->replaceEmbeddedAttachments( - $this->renderView($view ?: $plain, $data), - $data['message']->getSymfonyMessage()->getAttachments() - ); - } - - /** - * Replace the embedded image attachments with raw, inline image data for browser rendering. - * - * @param string $renderedView - * @param array $attachments - * @return string - */ - protected function replaceEmbeddedAttachments(string $renderedView, array $attachments) - { - if (preg_match_all('//i', $renderedView, $matches)) { - foreach (array_unique($matches[1]) as $image) { - foreach ($attachments as $attachment) { - if ($attachment->getFilename() === $image) { - $renderedView = str_replace( - 'cid:'.$image, - 'data:'.$attachment->getContentType().';base64,'.$attachment->bodyToString(), - $renderedView - ); - - break; - } - } - } - } - - return $renderedView; - } - - /** - * Send a new message using a view. - * - * @param \Illuminate\Contracts\Mail\Mailable|string|array $view - * @param array $data - * @param \Closure|string|null $callback - * @return \Illuminate\Mail\SentMessage|null - */ - public function send($view, array $data = [], $callback = null) - { - if ($view instanceof MailableContract) { - return $this->sendMailable($view); - } - - $data['mailer'] = $this->name; - - // First we need to parse the view, which could either be a string or an array - // containing both an HTML and plain text versions of the view which should - // be used when sending an e-mail. We will extract both of them out here. - [$view, $plain, $raw] = $this->parseView($view); - - $data['message'] = $message = $this->createMessage(); - - // Once we have retrieved the view content for the e-mail we will set the body - // of this message using the HTML type, which will provide a simple wrapper - // to creating view based emails that are able to receive arrays of data. - if (! is_null($callback)) { - $callback($message); - } - - $this->addContent($message, $view, $plain, $raw, $data); - - // If a global "to" address has been set, we will set that address on the mail - // message. This is primarily useful during local development in which each - // message should be delivered into a single mail address for inspection. - if (isset($this->to['address'])) { - $this->setGlobalToAndRemoveCcAndBcc($message); - } - - // Next we will determine if the message should be sent. We give the developer - // one final chance to stop this message and then we will send it to all of - // its recipients. We will then fire the sent event for the sent message. - $symfonyMessage = $message->getSymfonyMessage(); - - if ($this->shouldSendMessage($symfonyMessage, $data)) { - $symfonySentMessage = $this->sendSymfonyMessage($symfonyMessage); - - if ($symfonySentMessage) { - $sentMessage = new SentMessage($symfonySentMessage); - - $this->dispatchSentEvent($sentMessage, $data); - - return $sentMessage; - } - } - } - - /** - * Send the given mailable. - * - * @param \Illuminate\Contracts\Mail\Mailable $mailable - * @return \Illuminate\Mail\SentMessage|null - */ - protected function sendMailable(MailableContract $mailable) - { - return $mailable instanceof ShouldQueue - ? $mailable->mailer($this->name)->queue($this->queue) - : $mailable->mailer($this->name)->send($this); - } - - /** - * Parse the given view name or array. - * - * @param \Closure|array|string $view - * @return array - * - * @throws \InvalidArgumentException - */ - protected function parseView($view) - { - if (is_string($view) || $view instanceof Closure) { - return [$view, null, null]; - } - - // If the given view is an array with numeric keys, we will just assume that - // both a "pretty" and "plain" view were provided, so we will return this - // array as is, since it should contain both views with numerical keys. - if (is_array($view) && isset($view[0])) { - return [$view[0], $view[1], null]; - } - - // If this view is an array but doesn't contain numeric keys, we will assume - // the views are being explicitly specified and will extract them via the - // named keys instead, allowing the developers to use one or the other. - if (is_array($view)) { - return [ - $view['html'] ?? null, - $view['text'] ?? null, - $view['raw'] ?? null, - ]; - } - - throw new InvalidArgumentException('Invalid view.'); - } - - /** - * Add the content to a given message. - * - * @param \Illuminate\Mail\Message $message - * @param string $view - * @param string $plain - * @param string $raw - * @param array $data - * @return void - */ - protected function addContent($message, $view, $plain, $raw, $data) - { - if (isset($view)) { - $message->html($this->renderView($view, $data) ?: ' '); - } - - if (isset($plain)) { - $message->text($this->renderView($plain, $data) ?: ' '); - } - - if (isset($raw)) { - $message->text($raw); - } - } - - /** - * Render the given view. - * - * @param \Closure|string $view - * @param array $data - * @return string - */ - protected function renderView($view, $data) - { - $view = value($view, $data); - - return $view instanceof Htmlable - ? $view->toHtml() - : $this->views->make($view, $data)->render(); - } - - /** - * Set the global "to" address on the given message. - * - * @param \Illuminate\Mail\Message $message - * @return void - */ - protected function setGlobalToAndRemoveCcAndBcc($message) - { - $message->forgetTo(); - - $message->to($this->to['address'], $this->to['name'], true); - - $message->forgetCc(); - $message->forgetBcc(); - } - - /** - * Queue a new e-mail message for sending. - * - * @param \Illuminate\Contracts\Mail\Mailable|string|array $view - * @param string|null $queue - * @return mixed - * - * @throws \InvalidArgumentException - */ - public function queue($view, $queue = null) - { - if (! $view instanceof MailableContract) { - throw new InvalidArgumentException('Only mailables may be queued.'); - } - - if (is_string($queue)) { - $view->onQueue($queue); - } - - return $view->mailer($this->name)->queue($this->queue); - } - - /** - * Queue a new e-mail message for sending on the given queue. - * - * @param string $queue - * @param \Illuminate\Contracts\Mail\Mailable $view - * @return mixed - */ - public function onQueue($queue, $view) - { - return $this->queue($view, $queue); - } - - /** - * Queue a new e-mail message for sending on the given queue. - * - * This method didn't match rest of framework's "onQueue" phrasing. Added "onQueue". - * - * @param string $queue - * @param \Illuminate\Contracts\Mail\Mailable $view - * @return mixed - */ - public function queueOn($queue, $view) - { - return $this->onQueue($queue, $view); - } - - /** - * Queue a new e-mail message for sending after (n) seconds. - * - * @param \DateTimeInterface|\DateInterval|int $delay - * @param \Illuminate\Contracts\Mail\Mailable $view - * @param string|null $queue - * @return mixed - * - * @throws \InvalidArgumentException - */ - public function later($delay, $view, $queue = null) - { - if (! $view instanceof MailableContract) { - throw new InvalidArgumentException('Only mailables may be queued.'); - } - - return $view->mailer($this->name)->later( - $delay, is_null($queue) ? $this->queue : $queue - ); - } - - /** - * Queue a new e-mail message for sending after (n) seconds on the given queue. - * - * @param string $queue - * @param \DateTimeInterface|\DateInterval|int $delay - * @param \Illuminate\Contracts\Mail\Mailable $view - * @return mixed - */ - public function laterOn($queue, $delay, $view) - { - return $this->later($delay, $view, $queue); - } - - /** - * Create a new message instance. - * - * @return \Illuminate\Mail\Message - */ - protected function createMessage() - { - $message = new Message(new Email()); - - // If a global from address has been specified we will set it on every message - // instance so the developer does not have to repeat themselves every time - // they create a new message. We'll just go ahead and push this address. - if (! empty($this->from['address'])) { - $message->from($this->from['address'], $this->from['name']); - } - - // When a global reply address was specified we will set this on every message - // instance so the developer does not have to repeat themselves every time - // they create a new message. We will just go ahead and push this address. - if (! empty($this->replyTo['address'])) { - $message->replyTo($this->replyTo['address'], $this->replyTo['name']); - } - - if (! empty($this->returnPath['address'])) { - $message->returnPath($this->returnPath['address']); - } - - return $message; - } - - /** - * Send a Symfony Email instance. - * - * @param \Symfony\Component\Mime\Email $message - * @return \Symfony\Component\Mailer\SentMessage|null - */ - protected function sendSymfonyMessage(Email $message) - { - try { - return $this->transport->send($message, Envelope::create($message)); - } finally { - // - } - } - - /** - * Determines if the email can be sent. - * - * @param \Symfony\Component\Mime\Email $message - * @param array $data - * @return bool - */ - protected function shouldSendMessage($message, $data = []) - { - if (! $this->events) { - return true; - } - - return $this->events->until( - new MessageSending($message, $data) - ) !== false; - } - - /** - * Dispatch the message sent event. - * - * @param \Illuminate\Mail\SentMessage $message - * @param array $data - * @return void - */ - protected function dispatchSentEvent($message, $data = []) - { - if ($this->events) { - $this->events->dispatch( - new MessageSent($message, $data) - ); - } - } - - /** - * Get the Symfony Transport instance. - * - * @return \Symfony\Component\Mailer\Transport\TransportInterface - */ - public function getSymfonyTransport() - { - return $this->transport; - } - - /** - * Get the view factory instance. - * - * @return \Illuminate\Contracts\View\Factory - */ - public function getViewFactory() - { - return $this->views; - } - - /** - * Set the Symfony Transport instance. - * - * @param \Symfony\Component\Mailer\Transport\TransportInterface $transport - * @return void - */ - public function setSymfonyTransport(TransportInterface $transport) - { - $this->transport = $transport; - } - - /** - * Set the queue manager instance. - * - * @param \Illuminate\Contracts\Queue\Factory $queue - * @return $this - */ - public function setQueue(QueueContract $queue) - { - $this->queue = $queue; - - return $this; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Mail/Transport/ArrayTransport.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Mail/Transport/ArrayTransport.php deleted file mode 100644 index 02ba21d9..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Mail/Transport/ArrayTransport.php +++ /dev/null @@ -1,67 +0,0 @@ -messages = new Collection; - } - - /** - * {@inheritdoc} - */ - public function send(RawMessage $message, ?Envelope $envelope = null): ?SentMessage - { - return $this->messages[] = new SentMessage($message, $envelope ?? Envelope::create($message)); - } - - /** - * Retrieve the collection of messages. - * - * @return \Illuminate\Support\Collection - */ - public function messages() - { - return $this->messages; - } - - /** - * Clear all of the messages from the local collection. - * - * @return \Illuminate\Support\Collection - */ - public function flush() - { - return $this->messages = new Collection; - } - - /** - * Get the string representation of the transport. - * - * @return string - */ - public function __toString(): string - { - return 'array'; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Mail/Transport/LogTransport.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Mail/Transport/LogTransport.php deleted file mode 100644 index c428de85..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Mail/Transport/LogTransport.php +++ /dev/null @@ -1,98 +0,0 @@ -logger = $logger; - } - - /** - * {@inheritdoc} - */ - public function send(RawMessage $message, ?Envelope $envelope = null): ?SentMessage - { - $string = Str::of($message->toString()); - - if ($string->contains('Content-Type: multipart/')) { - $boundary = $string - ->after('boundary=') - ->before("\r\n") - ->prepend('--') - ->append("\r\n"); - - $string = $string - ->explode($boundary) - ->map($this->decodeQuotedPrintableContent(...)) - ->implode($boundary); - } elseif ($string->contains('Content-Transfer-Encoding: quoted-printable')) { - $string = $this->decodeQuotedPrintableContent($string); - } - - $this->logger->debug((string) $string); - - return new SentMessage($message, $envelope ?? Envelope::create($message)); - } - - /** - * Decode the given quoted printable content. - * - * @param string $part - * @return string - */ - protected function decodeQuotedPrintableContent(string $part) - { - if (! str_contains($part, 'Content-Transfer-Encoding: quoted-printable')) { - return $part; - } - - [$headers, $content] = explode("\r\n\r\n", $part, 2); - - return implode("\r\n\r\n", [ - $headers, - quoted_printable_decode($content), - ]); - } - - /** - * Get the logger for the LogTransport instance. - * - * @return \Psr\Log\LoggerInterface - */ - public function logger() - { - return $this->logger; - } - - /** - * Get the string representation of the transport. - * - * @return string - */ - public function __toString(): string - { - return 'log'; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Mail/Transport/SesV2Transport.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Mail/Transport/SesV2Transport.php deleted file mode 100644 index feb25d61..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Mail/Transport/SesV2Transport.php +++ /dev/null @@ -1,135 +0,0 @@ -ses = $ses; - $this->options = $options; - - parent::__construct(); - } - - /** - * {@inheritDoc} - */ - protected function doSend(SentMessage $message): void - { - $options = $this->options; - - if ($message->getOriginalMessage() instanceof Message) { - foreach ($message->getOriginalMessage()->getHeaders()->all() as $header) { - if ($header instanceof MetadataHeader) { - $options['EmailTags'][] = ['Name' => $header->getKey(), 'Value' => $header->getValue()]; - } - } - } - - try { - $result = $this->ses->sendEmail( - array_merge( - $options, [ - 'Source' => $message->getEnvelope()->getSender()->toString(), - 'Destination' => [ - 'ToAddresses' => collect($message->getEnvelope()->getRecipients()) - ->map - ->toString() - ->values() - ->all(), - ], - 'Content' => [ - 'Raw' => [ - 'Data' => $message->toString(), - ], - ], - ] - ) - ); - } catch (AwsException $e) { - $reason = $e->getAwsErrorMessage() ?? $e->getMessage(); - - throw new TransportException( - sprintf('Request to AWS SES V2 API failed. Reason: %s.', $reason), - is_int($e->getCode()) ? $e->getCode() : 0, - $e - ); - } - - $messageId = $result->get('MessageId'); - - $message->getOriginalMessage()->getHeaders()->addHeader('X-Message-ID', $messageId); - $message->getOriginalMessage()->getHeaders()->addHeader('X-SES-Message-ID', $messageId); - } - - /** - * Get the Amazon SES V2 client for the SesV2Transport instance. - * - * @return \Aws\SesV2\SesV2Client - */ - public function ses() - { - return $this->ses; - } - - /** - * Get the transmission options being used by the transport. - * - * @return array - */ - public function getOptions() - { - return $this->options; - } - - /** - * Set the transmission options being used by the transport. - * - * @param array $options - * @return array - */ - public function setOptions(array $options) - { - return $this->options = $options; - } - - /** - * Get the string representation of the transport. - * - * @return string - */ - public function __toString(): string - { - return 'ses-v2'; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Mail/resources/views/text/header.blade.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Mail/resources/views/text/header.blade.php deleted file mode 100644 index 97444ebd..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Mail/resources/views/text/header.blade.php +++ /dev/null @@ -1 +0,0 @@ -{{ $slot }}: {{ $url }} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Notifications/ChannelManager.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Notifications/ChannelManager.php deleted file mode 100644 index 0ad7dae6..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Notifications/ChannelManager.php +++ /dev/null @@ -1,162 +0,0 @@ -container->make(Bus::class), $this->container->make(Dispatcher::class), $this->locale) - )->send($notifiables, $notification); - } - - /** - * Send the given notification immediately. - * - * @param \Illuminate\Support\Collection|array|mixed $notifiables - * @param mixed $notification - * @param array|null $channels - * @return void - */ - public function sendNow($notifiables, $notification, ?array $channels = null) - { - (new NotificationSender( - $this, $this->container->make(Bus::class), $this->container->make(Dispatcher::class), $this->locale) - )->sendNow($notifiables, $notification, $channels); - } - - /** - * Get a channel instance. - * - * @param string|null $name - * @return mixed - */ - public function channel($name = null) - { - return $this->driver($name); - } - - /** - * Create an instance of the database driver. - * - * @return \Illuminate\Notifications\Channels\DatabaseChannel - */ - protected function createDatabaseDriver() - { - return $this->container->make(Channels\DatabaseChannel::class); - } - - /** - * Create an instance of the broadcast driver. - * - * @return \Illuminate\Notifications\Channels\BroadcastChannel - */ - protected function createBroadcastDriver() - { - return $this->container->make(Channels\BroadcastChannel::class); - } - - /** - * Create an instance of the mail driver. - * - * @return \Illuminate\Notifications\Channels\MailChannel - */ - protected function createMailDriver() - { - return $this->container->make(Channels\MailChannel::class); - } - - /** - * Create a new driver instance. - * - * @param string $driver - * @return mixed - * - * @throws \InvalidArgumentException - */ - protected function createDriver($driver) - { - try { - return parent::createDriver($driver); - } catch (InvalidArgumentException $e) { - if (class_exists($driver)) { - return $this->container->make($driver); - } - - throw $e; - } - } - - /** - * Get the default channel driver name. - * - * @return string - */ - public function getDefaultDriver() - { - return $this->defaultChannel; - } - - /** - * Get the default channel driver name. - * - * @return string - */ - public function deliversVia() - { - return $this->getDefaultDriver(); - } - - /** - * Set the default channel driver name. - * - * @param string $channel - * @return void - */ - public function deliverVia($channel) - { - $this->defaultChannel = $channel; - } - - /** - * Set the locale of notifications. - * - * @param string $locale - * @return $this - */ - public function locale($locale) - { - $this->locale = $locale; - - return $this; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Notifications/NotificationSender.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Notifications/NotificationSender.php deleted file mode 100644 index f82f0227..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Notifications/NotificationSender.php +++ /dev/null @@ -1,255 +0,0 @@ -bus = $bus; - $this->events = $events; - $this->locale = $locale; - $this->manager = $manager; - } - - /** - * Send the given notification to the given notifiable entities. - * - * @param \Illuminate\Support\Collection|array|mixed $notifiables - * @param mixed $notification - * @return void - */ - public function send($notifiables, $notification) - { - $notifiables = $this->formatNotifiables($notifiables); - - if ($notification instanceof ShouldQueue) { - return $this->queueNotification($notifiables, $notification); - } - - $this->sendNow($notifiables, $notification); - } - - /** - * Send the given notification immediately. - * - * @param \Illuminate\Support\Collection|array|mixed $notifiables - * @param mixed $notification - * @param array|null $channels - * @return void - */ - public function sendNow($notifiables, $notification, ?array $channels = null) - { - $notifiables = $this->formatNotifiables($notifiables); - - $original = clone $notification; - - foreach ($notifiables as $notifiable) { - if (empty($viaChannels = $channels ?: $notification->via($notifiable))) { - continue; - } - - $this->withLocale($this->preferredLocale($notifiable, $notification), function () use ($viaChannels, $notifiable, $original) { - $notificationId = Str::uuid()->toString(); - - foreach ((array) $viaChannels as $channel) { - if (! ($notifiable instanceof AnonymousNotifiable && $channel === 'database')) { - $this->sendToNotifiable($notifiable, $notificationId, clone $original, $channel); - } - } - }); - } - } - - /** - * Get the notifiable's preferred locale for the notification. - * - * @param mixed $notifiable - * @param mixed $notification - * @return string|null - */ - protected function preferredLocale($notifiable, $notification) - { - return $notification->locale ?? $this->locale ?? value(function () use ($notifiable) { - if ($notifiable instanceof HasLocalePreference) { - return $notifiable->preferredLocale(); - } - }); - } - - /** - * Send the given notification to the given notifiable via a channel. - * - * @param mixed $notifiable - * @param string $id - * @param mixed $notification - * @param string $channel - * @return void - */ - protected function sendToNotifiable($notifiable, $id, $notification, $channel) - { - if (! $notification->id) { - $notification->id = $id; - } - - if (! $this->shouldSendNotification($notifiable, $notification, $channel)) { - return; - } - - $response = $this->manager->driver($channel)->send($notifiable, $notification); - - $this->events->dispatch( - new NotificationSent($notifiable, $notification, $channel, $response) - ); - } - - /** - * Determines if the notification can be sent. - * - * @param mixed $notifiable - * @param mixed $notification - * @param string $channel - * @return bool - */ - protected function shouldSendNotification($notifiable, $notification, $channel) - { - if (method_exists($notification, 'shouldSend') && - $notification->shouldSend($notifiable, $channel) === false) { - return false; - } - - return $this->events->until( - new NotificationSending($notifiable, $notification, $channel) - ) !== false; - } - - /** - * Queue the given notification instances. - * - * @param mixed $notifiables - * @param \Illuminate\Notifications\Notification $notification - * @return void - */ - protected function queueNotification($notifiables, $notification) - { - $notifiables = $this->formatNotifiables($notifiables); - - $original = clone $notification; - - foreach ($notifiables as $notifiable) { - $notificationId = Str::uuid()->toString(); - - foreach ((array) $original->via($notifiable) as $channel) { - $notification = clone $original; - - if (! $notification->id) { - $notification->id = $notificationId; - } - - if (! is_null($this->locale)) { - $notification->locale = $this->locale; - } - - $connection = $notification->connection; - - if (method_exists($notification, 'viaConnections')) { - $connection = $notification->viaConnections()[$channel] ?? null; - } - - $queue = $notification->queue; - - if (method_exists($notification, 'viaQueues')) { - $queue = $notification->viaQueues()[$channel] ?? null; - } - - $delay = $notification->delay; - - if (method_exists($notification, 'withDelay')) { - $delay = $notification->withDelay($notifiable, $channel) ?? null; - } - - $middleware = $notification->middleware ?? []; - - if (method_exists($notification, 'middleware')) { - $middleware = array_merge( - $notification->middleware($notifiable, $channel), - $middleware - ); - } - - $this->bus->dispatch( - (new SendQueuedNotifications($notifiable, $notification, [$channel])) - ->onConnection($connection) - ->onQueue($queue) - ->delay(is_array($delay) ? ($delay[$channel] ?? null) : $delay) - ->through($middleware) - ); - } - } - } - - /** - * Format the notifiables into a Collection / array if necessary. - * - * @param mixed $notifiables - * @return \Illuminate\Database\Eloquent\Collection|array - */ - protected function formatNotifiables($notifiables) - { - if (! $notifiables instanceof Collection && ! is_array($notifiables)) { - return $notifiables instanceof Model - ? new ModelCollection([$notifiables]) : [$notifiables]; - } - - return $notifiables; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Notifications/RoutesNotifications.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Notifications/RoutesNotifications.php deleted file mode 100644 index 2744f316..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Notifications/RoutesNotifications.php +++ /dev/null @@ -1,52 +0,0 @@ -send($this, $instance); - } - - /** - * Send the given notification immediately. - * - * @param mixed $instance - * @param array|null $channels - * @return void - */ - public function notifyNow($instance, ?array $channels = null) - { - app(Dispatcher::class)->sendNow($this, $instance, $channels); - } - - /** - * Get the notification routing information for the given driver. - * - * @param string $driver - * @param \Illuminate\Notifications\Notification|null $notification - * @return mixed - */ - public function routeNotificationFor($driver, $notification = null) - { - if (method_exists($this, $method = 'routeNotificationFor'.Str::studly($driver))) { - return $this->{$method}($notification); - } - - return match ($driver) { - 'database' => $this->notifications(), - 'mail' => $this->email, - default => null, - }; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Notifications/SendQueuedNotifications.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Notifications/SendQueuedNotifications.php deleted file mode 100644 index 3eca3ccc..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Notifications/SendQueuedNotifications.php +++ /dev/null @@ -1,183 +0,0 @@ -channels = $channels; - $this->notification = $notification; - $this->notifiables = $this->wrapNotifiables($notifiables); - $this->tries = property_exists($notification, 'tries') ? $notification->tries : null; - $this->timeout = property_exists($notification, 'timeout') ? $notification->timeout : null; - $this->maxExceptions = property_exists($notification, 'maxExceptions') ? $notification->maxExceptions : null; - - if ($notification instanceof ShouldQueueAfterCommit) { - $this->afterCommit = true; - } else { - $this->afterCommit = property_exists($notification, 'afterCommit') ? $notification->afterCommit : null; - } - - $this->shouldBeEncrypted = $notification instanceof ShouldBeEncrypted; - } - - /** - * Wrap the notifiable(s) in a collection. - * - * @param \Illuminate\Notifications\Notifiable|\Illuminate\Support\Collection $notifiables - * @return \Illuminate\Support\Collection - */ - protected function wrapNotifiables($notifiables) - { - if ($notifiables instanceof Collection) { - return $notifiables; - } elseif ($notifiables instanceof Model) { - return EloquentCollection::wrap($notifiables); - } - - return Collection::wrap($notifiables); - } - - /** - * Send the notifications. - * - * @param \Illuminate\Notifications\ChannelManager $manager - * @return void - */ - public function handle(ChannelManager $manager) - { - $manager->sendNow($this->notifiables, $this->notification, $this->channels); - } - - /** - * Get the display name for the queued job. - * - * @return string - */ - public function displayName() - { - return get_class($this->notification); - } - - /** - * Call the failed method on the notification instance. - * - * @param \Throwable $e - * @return void - */ - public function failed($e) - { - if (method_exists($this->notification, 'failed')) { - $this->notification->failed($e); - } - } - - /** - * Get the number of seconds before a released notification will be available. - * - * @return mixed - */ - public function backoff() - { - if (! method_exists($this->notification, 'backoff') && ! isset($this->notification->backoff)) { - return; - } - - return $this->notification->backoff ?? $this->notification->backoff(); - } - - /** - * Determine the time at which the job should timeout. - * - * @return \DateTime|null - */ - public function retryUntil() - { - if (! method_exists($this->notification, 'retryUntil') && ! isset($this->notification->retryUntil)) { - return; - } - - return $this->notification->retryUntil ?? $this->notification->retryUntil(); - } - - /** - * Prepare the instance for cloning. - * - * @return void - */ - public function __clone() - { - $this->notifiables = clone $this->notifiables; - $this->notification = clone $this->notification; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Pagination/AbstractCursorPaginator.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Pagination/AbstractCursorPaginator.php deleted file mode 100644 index fa3070c2..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Pagination/AbstractCursorPaginator.php +++ /dev/null @@ -1,672 +0,0 @@ -cursorName => $cursor->encode()]; - - if (count($this->query) > 0) { - $parameters = array_merge($this->query, $parameters); - } - - return $this->path() - .(str_contains($this->path(), '?') ? '&' : '?') - .Arr::query($parameters) - .$this->buildFragment(); - } - - /** - * Get the URL for the previous page. - * - * @return string|null - */ - public function previousPageUrl() - { - if (is_null($previousCursor = $this->previousCursor())) { - return null; - } - - return $this->url($previousCursor); - } - - /** - * The URL for the next page, or null. - * - * @return string|null - */ - public function nextPageUrl() - { - if (is_null($nextCursor = $this->nextCursor())) { - return null; - } - - return $this->url($nextCursor); - } - - /** - * Get the "cursor" that points to the previous set of items. - * - * @return \Illuminate\Pagination\Cursor|null - */ - public function previousCursor() - { - if (is_null($this->cursor) || - ($this->cursor->pointsToPreviousItems() && ! $this->hasMore)) { - return null; - } - - if ($this->items->isEmpty()) { - return null; - } - - return $this->getCursorForItem($this->items->first(), false); - } - - /** - * Get the "cursor" that points to the next set of items. - * - * @return \Illuminate\Pagination\Cursor|null - */ - public function nextCursor() - { - if ((is_null($this->cursor) && ! $this->hasMore) || - (! is_null($this->cursor) && $this->cursor->pointsToNextItems() && ! $this->hasMore)) { - return null; - } - - if ($this->items->isEmpty()) { - return null; - } - - return $this->getCursorForItem($this->items->last(), true); - } - - /** - * Get a cursor instance for the given item. - * - * @param \ArrayAccess|\stdClass $item - * @param bool $isNext - * @return \Illuminate\Pagination\Cursor - */ - public function getCursorForItem($item, $isNext = true) - { - return new Cursor($this->getParametersForItem($item), $isNext); - } - - /** - * Get the cursor parameters for a given object. - * - * @param \ArrayAccess|\stdClass $item - * @return array - * - * @throws \Exception - */ - public function getParametersForItem($item) - { - return collect($this->parameters) - ->filter() - ->flip() - ->map(function ($_, $parameterName) use ($item) { - if ($item instanceof JsonResource) { - $item = $item->resource; - } - - if ($item instanceof Model && - ! is_null($parameter = $this->getPivotParameterForItem($item, $parameterName))) { - return $parameter; - } elseif ($item instanceof ArrayAccess || is_array($item)) { - return $this->ensureParameterIsPrimitive( - $item[$parameterName] ?? $item[Str::afterLast($parameterName, '.')] - ); - } elseif (is_object($item)) { - return $this->ensureParameterIsPrimitive( - $item->{$parameterName} ?? $item->{Str::afterLast($parameterName, '.')} - ); - } - - throw new Exception('Only arrays and objects are supported when cursor paginating items.'); - })->toArray(); - } - - /** - * Get the cursor parameter value from a pivot model if applicable. - * - * @param \ArrayAccess|\stdClass $item - * @param string $parameterName - * @return string|null - */ - protected function getPivotParameterForItem($item, $parameterName) - { - $table = Str::beforeLast($parameterName, '.'); - - foreach ($item->getRelations() as $relation) { - if ($relation instanceof Pivot && $relation->getTable() === $table) { - return $this->ensureParameterIsPrimitive( - $relation->getAttribute(Str::afterLast($parameterName, '.')) - ); - } - } - } - - /** - * Ensure the parameter is a primitive type. - * - * This can resolve issues that arise the developer uses a value object for an attribute. - * - * @param mixed $parameter - * @return mixed - */ - protected function ensureParameterIsPrimitive($parameter) - { - return is_object($parameter) && method_exists($parameter, '__toString') - ? (string) $parameter - : $parameter; - } - - /** - * Get / set the URL fragment to be appended to URLs. - * - * @param string|null $fragment - * @return $this|string|null - */ - public function fragment($fragment = null) - { - if (is_null($fragment)) { - return $this->fragment; - } - - $this->fragment = $fragment; - - return $this; - } - - /** - * Add a set of query string values to the paginator. - * - * @param array|string|null $key - * @param string|null $value - * @return $this - */ - public function appends($key, $value = null) - { - if (is_null($key)) { - return $this; - } - - if (is_array($key)) { - return $this->appendArray($key); - } - - return $this->addQuery($key, $value); - } - - /** - * Add an array of query string values. - * - * @param array $keys - * @return $this - */ - protected function appendArray(array $keys) - { - foreach ($keys as $key => $value) { - $this->addQuery($key, $value); - } - - return $this; - } - - /** - * Add all current query string values to the paginator. - * - * @return $this - */ - public function withQueryString() - { - if (! is_null($query = Paginator::resolveQueryString())) { - return $this->appends($query); - } - - return $this; - } - - /** - * Add a query string value to the paginator. - * - * @param string $key - * @param string $value - * @return $this - */ - protected function addQuery($key, $value) - { - if ($key !== $this->cursorName) { - $this->query[$key] = $value; - } - - return $this; - } - - /** - * Build the full fragment portion of a URL. - * - * @return string - */ - protected function buildFragment() - { - return $this->fragment ? '#'.$this->fragment : ''; - } - - /** - * Load a set of relationships onto the mixed relationship collection. - * - * @param string $relation - * @param array $relations - * @return $this - */ - public function loadMorph($relation, $relations) - { - $this->getCollection()->loadMorph($relation, $relations); - - return $this; - } - - /** - * Load a set of relationship counts onto the mixed relationship collection. - * - * @param string $relation - * @param array $relations - * @return $this - */ - public function loadMorphCount($relation, $relations) - { - $this->getCollection()->loadMorphCount($relation, $relations); - - return $this; - } - - /** - * Get the slice of items being paginated. - * - * @return array - */ - public function items() - { - return $this->items->all(); - } - - /** - * Transform each item in the slice of items using a callback. - * - * @param callable $callback - * @return $this - */ - public function through(callable $callback) - { - $this->items->transform($callback); - - return $this; - } - - /** - * Get the number of items shown per page. - * - * @return int - */ - public function perPage() - { - return $this->perPage; - } - - /** - * Get the current cursor being paginated. - * - * @return \Illuminate\Pagination\Cursor|null - */ - public function cursor() - { - return $this->cursor; - } - - /** - * Get the query string variable used to store the cursor. - * - * @return string - */ - public function getCursorName() - { - return $this->cursorName; - } - - /** - * Set the query string variable used to store the cursor. - * - * @param string $name - * @return $this - */ - public function setCursorName($name) - { - $this->cursorName = $name; - - return $this; - } - - /** - * Set the base path to assign to all URLs. - * - * @param string $path - * @return $this - */ - public function withPath($path) - { - return $this->setPath($path); - } - - /** - * Set the base path to assign to all URLs. - * - * @param string $path - * @return $this - */ - public function setPath($path) - { - $this->path = $path; - - return $this; - } - - /** - * Get the base path for paginator generated URLs. - * - * @return string|null - */ - public function path() - { - return $this->path; - } - - /** - * Resolve the current cursor or return the default value. - * - * @param string $cursorName - * @return \Illuminate\Pagination\Cursor|null - */ - public static function resolveCurrentCursor($cursorName = 'cursor', $default = null) - { - if (isset(static::$currentCursorResolver)) { - return call_user_func(static::$currentCursorResolver, $cursorName); - } - - return $default; - } - - /** - * Set the current cursor resolver callback. - * - * @param \Closure $resolver - * @return void - */ - public static function currentCursorResolver(Closure $resolver) - { - static::$currentCursorResolver = $resolver; - } - - /** - * Get an instance of the view factory from the resolver. - * - * @return \Illuminate\Contracts\View\Factory - */ - public static function viewFactory() - { - return Paginator::viewFactory(); - } - - /** - * Get an iterator for the items. - * - * @return \ArrayIterator - */ - public function getIterator(): Traversable - { - return $this->items->getIterator(); - } - - /** - * Determine if the list of items is empty. - * - * @return bool - */ - public function isEmpty() - { - return $this->items->isEmpty(); - } - - /** - * Determine if the list of items is not empty. - * - * @return bool - */ - public function isNotEmpty() - { - return $this->items->isNotEmpty(); - } - - /** - * Get the number of items for the current page. - * - * @return int - */ - public function count(): int - { - return $this->items->count(); - } - - /** - * Get the paginator's underlying collection. - * - * @return \Illuminate\Support\Collection - */ - public function getCollection() - { - return $this->items; - } - - /** - * Set the paginator's underlying collection. - * - * @param \Illuminate\Support\Collection $collection - * @return $this - */ - public function setCollection(Collection $collection) - { - $this->items = $collection; - - return $this; - } - - /** - * Get the paginator options. - * - * @return array - */ - public function getOptions() - { - return $this->options; - } - - /** - * Determine if the given item exists. - * - * @param mixed $key - * @return bool - */ - public function offsetExists($key): bool - { - return $this->items->has($key); - } - - /** - * Get the item at the given offset. - * - * @param mixed $key - * @return mixed - */ - public function offsetGet($key): mixed - { - return $this->items->get($key); - } - - /** - * Set the item at the given offset. - * - * @param mixed $key - * @param mixed $value - * @return void - */ - public function offsetSet($key, $value): void - { - $this->items->put($key, $value); - } - - /** - * Unset the item at the given key. - * - * @param mixed $key - * @return void - */ - public function offsetUnset($key): void - { - $this->items->forget($key); - } - - /** - * Render the contents of the paginator to HTML. - * - * @return string - */ - public function toHtml() - { - return (string) $this->render(); - } - - /** - * Make dynamic calls into the collection. - * - * @param string $method - * @param array $parameters - * @return mixed - */ - public function __call($method, $parameters) - { - return $this->forwardCallTo($this->getCollection(), $method, $parameters); - } - - /** - * Render the contents of the paginator when casting to a string. - * - * @return string - */ - public function __toString() - { - return (string) $this->render(); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Pipeline/Hub.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Pipeline/Hub.php deleted file mode 100644 index 54b380b0..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Pipeline/Hub.php +++ /dev/null @@ -1,97 +0,0 @@ -container = $container; - } - - /** - * Define the default named pipeline. - * - * @param \Closure $callback - * @return void - */ - public function defaults(Closure $callback) - { - return $this->pipeline('default', $callback); - } - - /** - * Define a new named pipeline. - * - * @param string $name - * @param \Closure $callback - * @return void - */ - public function pipeline($name, Closure $callback) - { - $this->pipelines[$name] = $callback; - } - - /** - * Send an object through one of the available pipelines. - * - * @param mixed $object - * @param string|null $pipeline - * @return mixed - */ - public function pipe($object, $pipeline = null) - { - $pipeline = $pipeline ?: 'default'; - - return call_user_func( - $this->pipelines[$pipeline], new Pipeline($this->container), $object - ); - } - - /** - * Get the container instance used by the hub. - * - * @return \Illuminate\Contracts\Container\Container - */ - public function getContainer() - { - return $this->container; - } - - /** - * Set the container instance used by the hub. - * - * @param \Illuminate\Contracts\Container\Container $container - * @return $this - */ - public function setContainer(Container $container) - { - $this->container = $container; - - return $this; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php deleted file mode 100644 index ccae5189..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php +++ /dev/null @@ -1,274 +0,0 @@ -container = $container; - } - - /** - * Set the object being sent through the pipeline. - * - * @param mixed $passable - * @return $this - */ - public function send($passable) - { - $this->passable = $passable; - - return $this; - } - - /** - * Set the array of pipes. - * - * @param array|mixed $pipes - * @return $this - */ - public function through($pipes) - { - $this->pipes = is_array($pipes) ? $pipes : func_get_args(); - - return $this; - } - - /** - * Push additional pipes onto the pipeline. - * - * @param array|mixed $pipes - * @return $this - */ - public function pipe($pipes) - { - array_push($this->pipes, ...(is_array($pipes) ? $pipes : func_get_args())); - - return $this; - } - - /** - * Set the method to call on the pipes. - * - * @param string $method - * @return $this - */ - public function via($method) - { - $this->method = $method; - - return $this; - } - - /** - * Run the pipeline with a final destination callback. - * - * @param \Closure $destination - * @return mixed - */ - public function then(Closure $destination) - { - $pipeline = array_reduce( - array_reverse($this->pipes()), $this->carry(), $this->prepareDestination($destination) - ); - - return $pipeline($this->passable); - } - - /** - * Run the pipeline and return the result. - * - * @return mixed - */ - public function thenReturn() - { - return $this->then(function ($passable) { - return $passable; - }); - } - - /** - * Get the final piece of the Closure onion. - * - * @param \Closure $destination - * @return \Closure - */ - protected function prepareDestination(Closure $destination) - { - return function ($passable) use ($destination) { - try { - return $destination($passable); - } catch (Throwable $e) { - return $this->handleException($passable, $e); - } - }; - } - - /** - * Get a Closure that represents a slice of the application onion. - * - * @return \Closure - */ - protected function carry() - { - return function ($stack, $pipe) { - return function ($passable) use ($stack, $pipe) { - try { - if (is_callable($pipe)) { - // If the pipe is a callable, then we will call it directly, but otherwise we - // will resolve the pipes out of the dependency container and call it with - // the appropriate method and arguments, returning the results back out. - return $pipe($passable, $stack); - } elseif (! is_object($pipe)) { - [$name, $parameters] = $this->parsePipeString($pipe); - - // If the pipe is a string we will parse the string and resolve the class out - // of the dependency injection container. We can then build a callable and - // execute the pipe function giving in the parameters that are required. - $pipe = $this->getContainer()->make($name); - - $parameters = array_merge([$passable, $stack], $parameters); - } else { - // If the pipe is already an object we'll just make a callable and pass it to - // the pipe as-is. There is no need to do any extra parsing and formatting - // since the object we're given was already a fully instantiated object. - $parameters = [$passable, $stack]; - } - - $carry = method_exists($pipe, $this->method) - ? $pipe->{$this->method}(...$parameters) - : $pipe(...$parameters); - - return $this->handleCarry($carry); - } catch (Throwable $e) { - return $this->handleException($passable, $e); - } - }; - }; - } - - /** - * Parse full pipe string to get name and parameters. - * - * @param string $pipe - * @return array - */ - protected function parsePipeString($pipe) - { - [$name, $parameters] = array_pad(explode(':', $pipe, 2), 2, []); - - if (is_string($parameters)) { - $parameters = explode(',', $parameters); - } - - return [$name, $parameters]; - } - - /** - * Get the array of configured pipes. - * - * @return array - */ - protected function pipes() - { - return $this->pipes; - } - - /** - * Get the container instance. - * - * @return \Illuminate\Contracts\Container\Container - * - * @throws \RuntimeException - */ - protected function getContainer() - { - if (! $this->container) { - throw new RuntimeException('A container instance has not been passed to the Pipeline.'); - } - - return $this->container; - } - - /** - * Set the container instance. - * - * @param \Illuminate\Contracts\Container\Container $container - * @return $this - */ - public function setContainer(Container $container) - { - $this->container = $container; - - return $this; - } - - /** - * Handle the value returned from each pipe before passing it to the next. - * - * @param mixed $carry - * @return mixed - */ - protected function handleCarry($carry) - { - return $carry; - } - - /** - * Handle the given exception. - * - * @param mixed $passable - * @param \Throwable $e - * @return mixed - * - * @throws \Throwable - */ - protected function handleException($passable, Throwable $e) - { - throw $e; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Process/Factory.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Process/Factory.php deleted file mode 100644 index 08fb0390..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Process/Factory.php +++ /dev/null @@ -1,328 +0,0 @@ -recording = true; - - if (is_null($callback)) { - $this->fakeHandlers = ['*' => fn () => new FakeProcessResult]; - - return $this; - } - - if ($callback instanceof Closure) { - $this->fakeHandlers = ['*' => $callback]; - - return $this; - } - - foreach ($callback as $command => $handler) { - $this->fakeHandlers[is_numeric($command) ? '*' : $command] = $handler instanceof Closure - ? $handler - : fn () => $handler; - } - - return $this; - } - - /** - * Determine if the process factory has fake process handlers and is recording processes. - * - * @return bool - */ - public function isRecording() - { - return $this->recording; - } - - /** - * Record the given process if processes should be recorded. - * - * @param \Illuminate\Process\PendingProcess $process - * @param \Illuminate\Contracts\Process\ProcessResult $result - * @return $this - */ - public function recordIfRecording(PendingProcess $process, ProcessResultContract $result) - { - if ($this->isRecording()) { - $this->record($process, $result); - } - - return $this; - } - - /** - * Record the given process. - * - * @param \Illuminate\Process\PendingProcess $process - * @param \Illuminate\Contracts\Process\ProcessResult $result - * @return $this - */ - public function record(PendingProcess $process, ProcessResultContract $result) - { - $this->recorded[] = [$process, $result]; - - return $this; - } - - /** - * Indicate that an exception should be thrown if any process is not faked. - * - * @param bool $prevent - * @return $this - */ - public function preventStrayProcesses(bool $prevent = true) - { - $this->preventStrayProcesses = $prevent; - - return $this; - } - - /** - * Determine if stray processes are being prevented. - * - * @return bool - */ - public function preventingStrayProcesses() - { - return $this->preventStrayProcesses; - } - - /** - * Assert that a process was recorded matching a given truth test. - * - * @param \Closure|string $callback - * @return $this - */ - public function assertRan(Closure|string $callback) - { - $callback = is_string($callback) ? fn ($process) => $process->command === $callback : $callback; - - PHPUnit::assertTrue( - collect($this->recorded)->filter(function ($pair) use ($callback) { - return $callback($pair[0], $pair[1]); - })->count() > 0, - 'An expected process was not invoked.' - ); - - return $this; - } - - /** - * Assert that a process was recorded a given number of times matching a given truth test. - * - * @param \Closure|string $callback - * @param int $times - * @return $this - */ - public function assertRanTimes(Closure|string $callback, int $times = 1) - { - $callback = is_string($callback) ? fn ($process) => $process->command === $callback : $callback; - - $count = collect($this->recorded)->filter(function ($pair) use ($callback) { - return $callback($pair[0], $pair[1]); - })->count(); - - PHPUnit::assertSame( - $times, $count, - "An expected process ran {$count} times instead of {$times} times." - ); - - return $this; - } - - /** - * Assert that a process was not recorded matching a given truth test. - * - * @param \Closure|string $callback - * @return $this - */ - public function assertNotRan(Closure|string $callback) - { - $callback = is_string($callback) ? fn ($process) => $process->command === $callback : $callback; - - PHPUnit::assertTrue( - collect($this->recorded)->filter(function ($pair) use ($callback) { - return $callback($pair[0], $pair[1]); - })->count() === 0, - 'An unexpected process was invoked.' - ); - - return $this; - } - - /** - * Assert that a process was not recorded matching a given truth test. - * - * @param \Closure|string $callback - * @return $this - */ - public function assertDidntRun(Closure|string $callback) - { - return $this->assertNotRan($callback); - } - - /** - * Assert that no processes were recorded. - * - * @return $this - */ - public function assertNothingRan() - { - PHPUnit::assertEmpty( - $this->recorded, - 'An unexpected process was invoked.' - ); - - return $this; - } - - /** - * Start defining a pool of processes. - * - * @param callable $callback - * @return \Illuminate\Process\Pool - */ - public function pool(callable $callback) - { - return new Pool($this, $callback); - } - - /** - * Start defining a series of piped processes. - * - * @param callable|array $callback - * @return \Illuminate\Contracts\Process\ProcessResult - */ - public function pipe(callable|array $callback, ?callable $output = null) - { - return is_array($callback) - ? (new Pipe($this, fn ($pipe) => collect($callback)->each( - fn ($command) => $pipe->command($command) - )))->run(output: $output) - : (new Pipe($this, $callback))->run(output: $output); - } - - /** - * Run a pool of processes and wait for them to finish executing. - * - * @param callable $callback - * @param callable|null $output - * @return \Illuminate\Process\ProcessPoolResults - */ - public function concurrently(callable $callback, ?callable $output = null) - { - return (new Pool($this, $callback))->start($output)->wait(); - } - - /** - * Create a new pending process associated with this factory. - * - * @return \Illuminate\Process\PendingProcess - */ - public function newPendingProcess() - { - return (new PendingProcess($this))->withFakeHandlers($this->fakeHandlers); - } - - /** - * Dynamically proxy methods to a new pending process instance. - * - * @param string $method - * @param array $parameters - * @return mixed - */ - public function __call($method, $parameters) - { - if (static::hasMacro($method)) { - return $this->macroCall($method, $parameters); - } - - return $this->newPendingProcess()->{$method}(...$parameters); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Process/FakeInvokedProcess.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Process/FakeInvokedProcess.php deleted file mode 100644 index 5c43e050..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Process/FakeInvokedProcess.php +++ /dev/null @@ -1,302 +0,0 @@ -command = $command; - $this->process = $process; - } - - /** - * Get the process ID if the process is still running. - * - * @return int|null - */ - public function id() - { - $this->invokeOutputHandlerWithNextLineOfOutput(); - - return $this->process->processId; - } - - /** - * Send a signal to the process. - * - * @param int $signal - * @return $this - */ - public function signal(int $signal) - { - $this->invokeOutputHandlerWithNextLineOfOutput(); - - $this->receivedSignals[] = $signal; - - return $this; - } - - /** - * Determine if the process has received the given signal. - * - * @param int $signal - * @return bool - */ - public function hasReceivedSignal(int $signal) - { - return in_array($signal, $this->receivedSignals); - } - - /** - * Determine if the process is still running. - * - * @return bool - */ - public function running() - { - $this->invokeOutputHandlerWithNextLineOfOutput(); - - $this->remainingRunIterations = is_null($this->remainingRunIterations) - ? $this->process->runIterations - : $this->remainingRunIterations; - - if ($this->remainingRunIterations === 0) { - while ($this->invokeOutputHandlerWithNextLineOfOutput()) { - } - - return false; - } - - $this->remainingRunIterations = $this->remainingRunIterations - 1; - - return true; - } - - /** - * Invoke the asynchronous output handler with the next single line of output if necessary. - * - * @return array|false - */ - protected function invokeOutputHandlerWithNextLineOfOutput() - { - if (! $this->outputHandler) { - return false; - } - - [$outputCount, $outputStartingPoint] = [ - count($this->process->output), - min($this->nextOutputIndex, $this->nextErrorOutputIndex), - ]; - - for ($i = $outputStartingPoint; $i < $outputCount; $i++) { - $currentOutput = $this->process->output[$i]; - - if ($currentOutput['type'] === 'out' && $i >= $this->nextOutputIndex) { - call_user_func($this->outputHandler, 'out', $currentOutput['buffer']); - $this->nextOutputIndex = $i + 1; - - return $currentOutput; - } elseif ($currentOutput['type'] === 'err' && $i >= $this->nextErrorOutputIndex) { - call_user_func($this->outputHandler, 'err', $currentOutput['buffer']); - $this->nextErrorOutputIndex = $i + 1; - - return $currentOutput; - } - } - - return false; - } - - /** - * Get the standard output for the process. - * - * @return string - */ - public function output() - { - $this->latestOutput(); - - $output = []; - - for ($i = 0; $i < $this->nextOutputIndex; $i++) { - if ($this->process->output[$i]['type'] === 'out') { - $output[] = $this->process->output[$i]['buffer']; - } - } - - return rtrim(implode('', $output), "\n")."\n"; - } - - /** - * Get the error output for the process. - * - * @return string - */ - public function errorOutput() - { - $this->latestErrorOutput(); - - $output = []; - - for ($i = 0; $i < $this->nextErrorOutputIndex; $i++) { - if ($this->process->output[$i]['type'] === 'err') { - $output[] = $this->process->output[$i]['buffer']; - } - } - - return rtrim(implode('', $output), "\n")."\n"; - } - - /** - * Get the latest standard output for the process. - * - * @return string - */ - public function latestOutput() - { - $outputCount = count($this->process->output); - - for ($i = $this->nextOutputIndex; $i < $outputCount; $i++) { - if ($this->process->output[$i]['type'] === 'out') { - $output = $this->process->output[$i]['buffer']; - $this->nextOutputIndex = $i + 1; - - break; - } - - $this->nextOutputIndex = $i + 1; - } - - return isset($output) ? $output : ''; - } - - /** - * Get the latest error output for the process. - * - * @return string - */ - public function latestErrorOutput() - { - $outputCount = count($this->process->output); - - for ($i = $this->nextErrorOutputIndex; $i < $outputCount; $i++) { - if ($this->process->output[$i]['type'] === 'err') { - $output = $this->process->output[$i]['buffer']; - $this->nextErrorOutputIndex = $i + 1; - - break; - } - - $this->nextErrorOutputIndex = $i + 1; - } - - return isset($output) ? $output : ''; - } - - /** - * Wait for the process to finish. - * - * @param callable|null $output - * @return \Illuminate\Contracts\Process\ProcessResult - */ - public function wait(?callable $output = null) - { - $this->outputHandler = $output ?: $this->outputHandler; - - if (! $this->outputHandler) { - $this->remainingRunIterations = 0; - - return $this->predictProcessResult(); - } - - while ($this->invokeOutputHandlerWithNextLineOfOutput()) { - // - } - - $this->remainingRunIterations = 0; - - return $this->process->toProcessResult($this->command); - } - - /** - * Get the ultimate process result that will be returned by this "process". - * - * @return \Illuminate\Contracts\Process\ProcessResult - */ - public function predictProcessResult() - { - return $this->process->toProcessResult($this->command); - } - - /** - * Set the general output handler for the fake invoked process. - * - * @param callable|null $output - * @return $this - */ - public function withOutputHandler(?callable $outputHandler) - { - $this->outputHandler = $outputHandler; - - return $this; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Process/FakeProcessResult.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Process/FakeProcessResult.php deleted file mode 100644 index 72342b07..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Process/FakeProcessResult.php +++ /dev/null @@ -1,210 +0,0 @@ -command = $command; - $this->exitCode = $exitCode; - $this->output = $this->normalizeOutput($output); - $this->errorOutput = $this->normalizeOutput($errorOutput); - } - - /** - * Normalize the given output into a string with newlines. - * - * @param array|string $output - * @return string - */ - protected function normalizeOutput(array|string $output) - { - if (empty($output)) { - return ''; - } elseif (is_string($output)) { - return rtrim($output, "\n")."\n"; - } elseif (is_array($output)) { - return rtrim( - collect($output) - ->map(fn ($line) => rtrim($line, "\n")."\n") - ->implode(''), - "\n" - ); - } - } - - /** - * Get the original command executed by the process. - * - * @return string - */ - public function command() - { - return $this->command; - } - - /** - * Create a new fake process result with the given command. - * - * @param string $command - * @return self - */ - public function withCommand(string $command) - { - return new FakeProcessResult($command, $this->exitCode, $this->output, $this->errorOutput); - } - - /** - * Determine if the process was successful. - * - * @return bool - */ - public function successful() - { - return $this->exitCode === 0; - } - - /** - * Determine if the process failed. - * - * @return bool - */ - public function failed() - { - return ! $this->successful(); - } - - /** - * Get the exit code of the process. - * - * @return int - */ - public function exitCode() - { - return $this->exitCode; - } - - /** - * Get the standard output of the process. - * - * @return string - */ - public function output() - { - return $this->output; - } - - /** - * Determine if the output contains the given string. - * - * @param string $output - * @return bool - */ - public function seeInOutput(string $output) - { - return str_contains($this->output(), $output); - } - - /** - * Get the error output of the process. - * - * @return string - */ - public function errorOutput() - { - return $this->errorOutput; - } - - /** - * Determine if the error output contains the given string. - * - * @param string $output - * @return bool - */ - public function seeInErrorOutput(string $output) - { - return str_contains($this->errorOutput(), $output); - } - - /** - * Throw an exception if the process failed. - * - * @param callable|null $callback - * @return $this - * - * @throws \Illuminate\Process\Exceptions\ProcessFailedException - */ - public function throw(?callable $callback = null) - { - if ($this->successful()) { - return $this; - } - - $exception = new ProcessFailedException($this); - - if ($callback) { - $callback($this, $exception); - } - - throw $exception; - } - - /** - * Throw an exception if the process failed and the given condition is true. - * - * @param bool $condition - * @param callable|null $callback - * @return $this - * - * @throws \Throwable - */ - public function throwIf(bool $condition, ?callable $callback = null) - { - if ($condition) { - return $this->throw($callback); - } - - return $this; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Process/InvokedProcess.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Process/InvokedProcess.php deleted file mode 100644 index 6f2a6709..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Process/InvokedProcess.php +++ /dev/null @@ -1,121 +0,0 @@ -process = $process; - } - - /** - * Get the process ID if the process is still running. - * - * @return int|null - */ - public function id() - { - return $this->process->getPid(); - } - - /** - * Send a signal to the process. - * - * @param int $signal - * @return $this - */ - public function signal(int $signal) - { - $this->process->signal($signal); - - return $this; - } - - /** - * Determine if the process is still running. - * - * @return bool - */ - public function running() - { - return $this->process->isRunning(); - } - - /** - * Get the standard output for the process. - * - * @return string - */ - public function output() - { - return $this->process->getOutput(); - } - - /** - * Get the error output for the process. - * - * @return string - */ - public function errorOutput() - { - return $this->process->getErrorOutput(); - } - - /** - * Get the latest standard output for the process. - * - * @return string - */ - public function latestOutput() - { - return $this->process->getIncrementalOutput(); - } - - /** - * Get the latest error output for the process. - * - * @return string - */ - public function latestErrorOutput() - { - return $this->process->getIncrementalErrorOutput(); - } - - /** - * Wait for the process to finish. - * - * @param callable|null $output - * @return \Illuminate\Process\ProcessResult - * - * @throws \Illuminate\Process\Exceptions\ProcessTimedOutException - */ - public function wait(?callable $output = null) - { - try { - $this->process->wait($output); - - return new ProcessResult($this->process); - } catch (SymfonyTimeoutException $e) { - throw new ProcessTimedOutException($e, new ProcessResult($this->process)); - } - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Process/PendingProcess.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Process/PendingProcess.php deleted file mode 100644 index 48a28f6b..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Process/PendingProcess.php +++ /dev/null @@ -1,424 +0,0 @@ -|string|null - */ - public $command; - - /** - * The working directory of the process. - * - * @var string|null - */ - public $path; - - /** - * The maximum number of seconds the process may run. - * - * @var int|null - */ - public $timeout = 60; - - /** - * The maximum number of seconds the process may go without returning output. - * - * @var int - */ - public $idleTimeout; - - /** - * The additional environment variables for the process. - * - * @var array - */ - public $environment = []; - - /** - * The standard input data that should be piped into the command. - * - * @var string|int|float|bool|resource|\Traversable|null - */ - public $input; - - /** - * Indicates whether output should be disabled for the process. - * - * @var bool - */ - public $quietly = false; - - /** - * Indicates if TTY mode should be enabled. - * - * @var bool - */ - public $tty = false; - - /** - * The options that will be passed to "proc_open". - * - * @var array - */ - public $options = []; - - /** - * The registered fake handler callbacks. - * - * @var array - */ - protected $fakeHandlers = []; - - /** - * Create a new pending process instance. - * - * @param \Illuminate\Process\Factory $factory - * @return void - */ - public function __construct(Factory $factory) - { - $this->factory = $factory; - } - - /** - * Specify the command that will invoke the process. - * - * @param array|string $command - * @return $this - */ - public function command(array|string $command) - { - $this->command = $command; - - return $this; - } - - /** - * Specify the working directory of the process. - * - * @param string $path - * @return $this - */ - public function path(string $path) - { - $this->path = $path; - - return $this; - } - - /** - * Specify the maximum number of seconds the process may run. - * - * @param int $timeout - * @return $this - */ - public function timeout(int $timeout) - { - $this->timeout = $timeout; - - return $this; - } - - /** - * Specify the maximum number of seconds a process may go without returning output. - * - * @param int $timeout - * @return $this - */ - public function idleTimeout(int $timeout) - { - $this->idleTimeout = $timeout; - - return $this; - } - - /** - * Indicate that the process may run forever without timing out. - * - * @return $this - */ - public function forever() - { - $this->timeout = null; - - return $this; - } - - /** - * Set the additional environment variables for the process. - * - * @param array $environment - * @return $this - */ - public function env(array $environment) - { - $this->environment = $environment; - - return $this; - } - - /** - * Set the standard input that should be provided when invoking the process. - * - * @param \Traversable|resource|string|int|float|bool|null $input - * @return $this - */ - public function input($input) - { - $this->input = $input; - - return $this; - } - - /** - * Disable output for the process. - * - * @return $this - */ - public function quietly() - { - $this->quietly = true; - - return $this; - } - - /** - * Enable TTY mode for the process. - * - * @param bool $tty - * @return $this - */ - public function tty(bool $tty = true) - { - $this->tty = $tty; - - return $this; - } - - /** - * Set the "proc_open" options that should be used when invoking the process. - * - * @param array $options - * @return $this - */ - public function options(array $options) - { - $this->options = $options; - - return $this; - } - - /** - * Run the process. - * - * @param array|string|null $command - * @param callable|null $output - * @return \Illuminate\Contracts\Process\ProcessResult - * - * @throws \Illuminate\Process\Exceptions\ProcessTimedOutException - * @throws \RuntimeException - */ - public function run(array|string|null $command = null, ?callable $output = null) - { - $this->command = $command ?: $this->command; - - try { - $process = $this->toSymfonyProcess($command); - - if ($fake = $this->fakeFor($command = $process->getCommandline())) { - return tap($this->resolveSynchronousFake($command, $fake), function ($result) { - $this->factory->recordIfRecording($this, $result); - }); - } elseif ($this->factory->isRecording() && $this->factory->preventingStrayProcesses()) { - throw new RuntimeException('Attempted process ['.$command.'] without a matching fake.'); - } - - return new ProcessResult(tap($process)->run($output)); - } catch (SymfonyTimeoutException $e) { - throw new ProcessTimedOutException($e, new ProcessResult($process)); - } - } - - /** - * Start the process in the background. - * - * @param array|string|null $command - * @param callable|null $output - * @return \Illuminate\Process\InvokedProcess - * - * @throws \RuntimeException - */ - public function start(array|string|null $command = null, ?callable $output = null) - { - $this->command = $command ?: $this->command; - - $process = $this->toSymfonyProcess($command); - - if ($fake = $this->fakeFor($command = $process->getCommandline())) { - return tap($this->resolveAsynchronousFake($command, $output, $fake), function (FakeInvokedProcess $process) { - $this->factory->recordIfRecording($this, $process->predictProcessResult()); - }); - } elseif ($this->factory->isRecording() && $this->factory->preventingStrayProcesses()) { - throw new RuntimeException('Attempted process ['.$command.'] without a matching fake.'); - } - - return new InvokedProcess(tap($process)->start($output)); - } - - /** - * Get a Symfony Process instance from the current pending command. - * - * @param array|string|null $command - * @return \Symfony\Component\Process\Process - */ - protected function toSymfonyProcess(array|string|null $command) - { - $command = $command ?? $this->command; - - $process = is_iterable($command) - ? new Process($command, null, $this->environment) - : Process::fromShellCommandline((string) $command, null, $this->environment); - - $process->setWorkingDirectory((string) ($this->path ?? getcwd())); - $process->setTimeout($this->timeout); - - if ($this->idleTimeout) { - $process->setIdleTimeout($this->idleTimeout); - } - - if ($this->input) { - $process->setInput($this->input); - } - - if ($this->quietly) { - $process->disableOutput(); - } - - if ($this->tty) { - $process->setTty(true); - } - - if (! empty($this->options)) { - $process->setOptions($this->options); - } - - return $process; - } - - /** - * Specify the fake process result handlers for the pending process. - * - * @param array $fakeHandlers - * @return $this - */ - public function withFakeHandlers(array $fakeHandlers) - { - $this->fakeHandlers = $fakeHandlers; - - return $this; - } - - /** - * Get the fake handler for the given command, if applicable. - * - * @param string $command - * @return \Closure|null - */ - protected function fakeFor(string $command) - { - return collect($this->fakeHandlers) - ->first(fn ($handler, $pattern) => $pattern === '*' || Str::is($pattern, $command)); - } - - /** - * Resolve the given fake handler for a synchronous process. - * - * @param string $command - * @param \Closure $fake - * @return mixed - */ - protected function resolveSynchronousFake(string $command, Closure $fake) - { - $result = $fake($this); - - if (is_string($result) || is_array($result)) { - return (new FakeProcessResult(output: $result))->withCommand($command); - } - - return match (true) { - $result instanceof ProcessResult => $result, - $result instanceof FakeProcessResult => $result->withCommand($command), - $result instanceof FakeProcessDescription => $result->toProcessResult($command), - $result instanceof FakeProcessSequence => $this->resolveSynchronousFake($command, fn () => $result()), - default => throw new LogicException('Unsupported synchronous process fake result provided.'), - }; - } - - /** - * Resolve the given fake handler for an asynchronous process. - * - * @param string $command - * @param callable|null $output - * @param \Closure $fake - * @return \Illuminate\Process\FakeInvokedProcess - * - * @throw \LogicException - */ - protected function resolveAsynchronousFake(string $command, ?callable $output, Closure $fake) - { - $result = $fake($this); - - if (is_string($result) || is_array($result)) { - $result = new FakeProcessResult(output: $result); - } - - if ($result instanceof ProcessResult) { - return (new FakeInvokedProcess( - $command, - (new FakeProcessDescription) - ->replaceOutput($result->output()) - ->replaceErrorOutput($result->errorOutput()) - ->runsFor(iterations: 0) - ->exitCode($result->exitCode()) - ))->withOutputHandler($output); - } elseif ($result instanceof FakeProcessResult) { - return (new FakeInvokedProcess( - $command, - (new FakeProcessDescription) - ->replaceOutput($result->output()) - ->replaceErrorOutput($result->errorOutput()) - ->runsFor(iterations: 0) - ->exitCode($result->exitCode()) - ))->withOutputHandler($output); - } elseif ($result instanceof FakeProcessDescription) { - return (new FakeInvokedProcess($command, $result))->withOutputHandler($output); - } elseif ($result instanceof FakeProcessSequence) { - return $this->resolveAsynchronousFake($command, $output, fn () => $result()); - } - - throw new LogicException('Unsupported asynchronous process fake result provided.'); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Process/ProcessResult.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Process/ProcessResult.php deleted file mode 100644 index 9bbf9c4a..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Process/ProcessResult.php +++ /dev/null @@ -1,151 +0,0 @@ -process = $process; - } - - /** - * Get the original command executed by the process. - * - * @return string - */ - public function command() - { - return $this->process->getCommandLine(); - } - - /** - * Determine if the process was successful. - * - * @return bool - */ - public function successful() - { - return $this->process->isSuccessful(); - } - - /** - * Determine if the process failed. - * - * @return bool - */ - public function failed() - { - return ! $this->successful(); - } - - /** - * Get the exit code of the process. - * - * @return int|null - */ - public function exitCode() - { - return $this->process->getExitCode(); - } - - /** - * Get the standard output of the process. - * - * @return string - */ - public function output() - { - return $this->process->getOutput(); - } - - /** - * Determine if the output contains the given string. - * - * @param string $output - * @return bool - */ - public function seeInOutput(string $output) - { - return str_contains($this->output(), $output); - } - - /** - * Get the error output of the process. - * - * @return string - */ - public function errorOutput() - { - return $this->process->getErrorOutput(); - } - - /** - * Determine if the error output contains the given string. - * - * @param string $output - * @return bool - */ - public function seeInErrorOutput(string $output) - { - return str_contains($this->errorOutput(), $output); - } - - /** - * Throw an exception if the process failed. - * - * @param callable|null $callback - * @return $this - * - * @throws \Illuminate\Process\Exceptions\ProcessFailedException - */ - public function throw(?callable $callback = null) - { - if ($this->successful()) { - return $this; - } - - $exception = new ProcessFailedException($this); - - if ($callback) { - $callback($this, $exception); - } - - throw $exception; - } - - /** - * Throw an exception if the process failed and the given condition is true. - * - * @param bool $condition - * @param callable|null $callback - * @return $this - * - * @throws \Throwable - */ - public function throwIf(bool $condition, ?callable $callback = null) - { - if ($condition) { - return $this->throw($callback); - } - - return $this; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Queue/Capsule/Manager.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Queue/Capsule/Manager.php deleted file mode 100644 index f6c263d1..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Queue/Capsule/Manager.php +++ /dev/null @@ -1,187 +0,0 @@ -setupContainer($container ?: new Container); - - // Once we have the container setup, we will set up the default configuration - // options in the container "config" bindings. This'll just make the queue - // manager behave correctly since all the correct bindings are in place. - $this->setupDefaultConfiguration(); - - $this->setupManager(); - - $this->registerConnectors(); - } - - /** - * Setup the default queue configuration options. - * - * @return void - */ - protected function setupDefaultConfiguration() - { - $this->container['config']['queue.default'] = 'default'; - } - - /** - * Build the queue manager instance. - * - * @return void - */ - protected function setupManager() - { - $this->manager = new QueueManager($this->container); - } - - /** - * Register the default connectors that the component ships with. - * - * @return void - */ - protected function registerConnectors() - { - $provider = new QueueServiceProvider($this->container); - - $provider->registerConnectors($this->manager); - } - - /** - * Get a connection instance from the global manager. - * - * @param string|null $connection - * @return \Illuminate\Contracts\Queue\Queue - */ - public static function connection($connection = null) - { - return static::$instance->getConnection($connection); - } - - /** - * Push a new job onto the queue. - * - * @param string $job - * @param mixed $data - * @param string|null $queue - * @param string|null $connection - * @return mixed - */ - public static function push($job, $data = '', $queue = null, $connection = null) - { - return static::$instance->connection($connection)->push($job, $data, $queue); - } - - /** - * Push a new an array of jobs onto the queue. - * - * @param array $jobs - * @param mixed $data - * @param string|null $queue - * @param string|null $connection - * @return mixed - */ - public static function bulk($jobs, $data = '', $queue = null, $connection = null) - { - return static::$instance->connection($connection)->bulk($jobs, $data, $queue); - } - - /** - * Push a new job onto the queue after (n) seconds. - * - * @param \DateTimeInterface|\DateInterval|int $delay - * @param string $job - * @param mixed $data - * @param string|null $queue - * @param string|null $connection - * @return mixed - */ - public static function later($delay, $job, $data = '', $queue = null, $connection = null) - { - return static::$instance->connection($connection)->later($delay, $job, $data, $queue); - } - - /** - * Get a registered connection instance. - * - * @param string|null $name - * @return \Illuminate\Contracts\Queue\Queue - */ - public function getConnection($name = null) - { - return $this->manager->connection($name); - } - - /** - * Register a connection with the manager. - * - * @param array $config - * @param string $name - * @return void - */ - public function addConnection(array $config, $name = 'default') - { - $this->container['config']["queue.connections.{$name}"] = $config; - } - - /** - * Get the queue manager instance. - * - * @return \Illuminate\Queue\QueueManager - */ - public function getQueueManager() - { - return $this->manager; - } - - /** - * Pass dynamic instance methods to the manager. - * - * @param string $method - * @param array $parameters - * @return mixed - */ - public function __call($method, $parameters) - { - return $this->manager->$method(...$parameters); - } - - /** - * Dynamically pass methods to the default connection. - * - * @param string $method - * @param array $parameters - * @return mixed - */ - public static function __callStatic($method, $parameters) - { - return static::connection()->$method(...$parameters); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Queue/Listener.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Queue/Listener.php deleted file mode 100755 index f7744b45..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Queue/Listener.php +++ /dev/null @@ -1,236 +0,0 @@ -commandPath = $commandPath; - } - - /** - * Get the PHP binary. - * - * @return string - */ - protected function phpBinary() - { - return (new PhpExecutableFinder)->find(false); - } - - /** - * Get the Artisan binary. - * - * @return string - */ - protected function artisanBinary() - { - return defined('ARTISAN_BINARY') ? ARTISAN_BINARY : 'artisan'; - } - - /** - * Listen to the given queue connection. - * - * @param string $connection - * @param string $queue - * @param \Illuminate\Queue\ListenerOptions $options - * @return void - */ - public function listen($connection, $queue, ListenerOptions $options) - { - $process = $this->makeProcess($connection, $queue, $options); - - while (true) { - $this->runProcess($process, $options->memory); - - if ($options->rest) { - sleep($options->rest); - } - } - } - - /** - * Create a new Symfony process for the worker. - * - * @param string $connection - * @param string $queue - * @param \Illuminate\Queue\ListenerOptions $options - * @return \Symfony\Component\Process\Process - */ - public function makeProcess($connection, $queue, ListenerOptions $options) - { - $command = $this->createCommand( - $connection, - $queue, - $options - ); - - // If the environment is set, we will append it to the command array so the - // workers will run under the specified environment. Otherwise, they will - // just run under the production environment which is not always right. - if (isset($options->environment)) { - $command = $this->addEnvironment($command, $options); - } - - return new Process( - $command, - $this->commandPath, - null, - null, - $options->timeout - ); - } - - /** - * Add the environment option to the given command. - * - * @param array $command - * @param \Illuminate\Queue\ListenerOptions $options - * @return array - */ - protected function addEnvironment($command, ListenerOptions $options) - { - return array_merge($command, ["--env={$options->environment}"]); - } - - /** - * Create the command with the listener options. - * - * @param string $connection - * @param string $queue - * @param \Illuminate\Queue\ListenerOptions $options - * @return array - */ - protected function createCommand($connection, $queue, ListenerOptions $options) - { - return array_filter([ - $this->phpBinary(), - $this->artisanBinary(), - 'queue:work', - $connection, - '--once', - "--name={$options->name}", - "--queue={$queue}", - "--backoff={$options->backoff}", - "--memory={$options->memory}", - "--sleep={$options->sleep}", - "--tries={$options->maxTries}", - $options->force ? '--force' : null, - ], function ($value) { - return ! is_null($value); - }); - } - - /** - * Run the given process. - * - * @param \Symfony\Component\Process\Process $process - * @param int $memory - * @return void - */ - public function runProcess(Process $process, $memory) - { - $process->run(function ($type, $line) { - $this->handleWorkerOutput($type, $line); - }); - - // Once we have run the job we'll go check if the memory limit has been exceeded - // for the script. If it has, we will kill this script so the process manager - // will restart this with a clean slate of memory automatically on exiting. - if ($this->memoryExceeded($memory)) { - $this->stop(); - } - } - - /** - * Handle output from the worker process. - * - * @param int $type - * @param string $line - * @return void - */ - protected function handleWorkerOutput($type, $line) - { - if (isset($this->outputHandler)) { - call_user_func($this->outputHandler, $type, $line); - } - } - - /** - * Determine if the memory limit has been exceeded. - * - * @param int $memoryLimit - * @return bool - */ - public function memoryExceeded($memoryLimit) - { - return (memory_get_usage(true) / 1024 / 1024) >= $memoryLimit; - } - - /** - * Stop listening and bail out of the script. - * - * @return never - */ - public function stop() - { - exit; - } - - /** - * Set the output handler callback. - * - * @param \Closure $outputHandler - * @return void - */ - public function setOutputHandler(Closure $outputHandler) - { - $this->outputHandler = $outputHandler; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Queue/Worker.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Queue/Worker.php deleted file mode 100644 index c9f335a6..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Queue/Worker.php +++ /dev/null @@ -1,876 +0,0 @@ -events = $events; - $this->manager = $manager; - $this->exceptions = $exceptions; - $this->isDownForMaintenance = $isDownForMaintenance; - $this->resetScope = $resetScope; - } - - /** - * Listen to the given queue in a loop. - * - * @param string $connectionName - * @param string $queue - * @param \Illuminate\Queue\WorkerOptions $options - * @return int - */ - public function daemon($connectionName, $queue, WorkerOptions $options) - { - if ($supportsAsyncSignals = $this->supportsAsyncSignals()) { - $this->listenForSignals(); - } - - $lastRestart = $this->getTimestampOfLastQueueRestart(); - - [$startTime, $jobsProcessed] = [hrtime(true) / 1e9, 0]; - - while (true) { - // Before reserving any jobs, we will make sure this queue is not paused and - // if it is we will just pause this worker for a given amount of time and - // make sure we do not need to kill this worker process off completely. - if (! $this->daemonShouldRun($options, $connectionName, $queue)) { - $status = $this->pauseWorker($options, $lastRestart); - - if (! is_null($status)) { - return $this->stop($status, $options); - } - - continue; - } - - if (isset($this->resetScope)) { - ($this->resetScope)(); - } - - // First, we will attempt to get the next job off of the queue. We will also - // register the timeout handler and reset the alarm for this job so it is - // not stuck in a frozen state forever. Then, we can fire off this job. - $job = $this->getNextJob( - $this->manager->connection($connectionName), $queue - ); - - if ($supportsAsyncSignals) { - $this->registerTimeoutHandler($job, $options); - } - - // If the daemon should run (not in maintenance mode, etc.), then we can run - // fire off this job for processing. Otherwise, we will need to sleep the - // worker so no more jobs are processed until they should be processed. - if ($job) { - $jobsProcessed++; - - $this->runJob($job, $connectionName, $options); - - if ($options->rest > 0) { - $this->sleep($options->rest); - } - } else { - $this->sleep($options->sleep); - } - - if ($supportsAsyncSignals) { - $this->resetTimeoutHandler(); - } - - // Finally, we will check to see if we have exceeded our memory limits or if - // the queue should restart based on other indications. If so, we'll stop - // this worker and let whatever is "monitoring" it restart the process. - $status = $this->stopIfNecessary( - $options, $lastRestart, $startTime, $jobsProcessed, $job - ); - - if (! is_null($status)) { - return $this->stop($status, $options); - } - } - } - - /** - * Register the worker timeout handler. - * - * @param \Illuminate\Contracts\Queue\Job|null $job - * @param \Illuminate\Queue\WorkerOptions $options - * @return void - */ - protected function registerTimeoutHandler($job, WorkerOptions $options) - { - // We will register a signal handler for the alarm signal so that we can kill this - // process if it is running too long because it has frozen. This uses the async - // signals supported in recent versions of PHP to accomplish it conveniently. - pcntl_signal(SIGALRM, function () use ($job, $options) { - if ($job) { - $this->markJobAsFailedIfWillExceedMaxAttempts( - $job->getConnectionName(), $job, (int) $options->maxTries, $e = $this->timeoutExceededException($job) - ); - - $this->markJobAsFailedIfWillExceedMaxExceptions( - $job->getConnectionName(), $job, $e - ); - - $this->markJobAsFailedIfItShouldFailOnTimeout( - $job->getConnectionName(), $job, $e - ); - - $this->events->dispatch(new JobTimedOut( - $job->getConnectionName(), $job - )); - } - - $this->kill(static::EXIT_ERROR, $options); - }, true); - - pcntl_alarm( - max($this->timeoutForJob($job, $options), 0) - ); - } - - /** - * Reset the worker timeout handler. - * - * @return void - */ - protected function resetTimeoutHandler() - { - pcntl_alarm(0); - } - - /** - * Get the appropriate timeout for the given job. - * - * @param \Illuminate\Contracts\Queue\Job|null $job - * @param \Illuminate\Queue\WorkerOptions $options - * @return int - */ - protected function timeoutForJob($job, WorkerOptions $options) - { - return $job && ! is_null($job->timeout()) ? $job->timeout() : $options->timeout; - } - - /** - * Determine if the daemon should process on this iteration. - * - * @param \Illuminate\Queue\WorkerOptions $options - * @param string $connectionName - * @param string $queue - * @return bool - */ - protected function daemonShouldRun(WorkerOptions $options, $connectionName, $queue) - { - return ! ((($this->isDownForMaintenance)() && ! $options->force) || - $this->paused || - $this->events->until(new Looping($connectionName, $queue)) === false); - } - - /** - * Pause the worker for the current loop. - * - * @param \Illuminate\Queue\WorkerOptions $options - * @param int $lastRestart - * @return int|null - */ - protected function pauseWorker(WorkerOptions $options, $lastRestart) - { - $this->sleep($options->sleep > 0 ? $options->sleep : 1); - - return $this->stopIfNecessary($options, $lastRestart); - } - - /** - * Determine the exit code to stop the process if necessary. - * - * @param \Illuminate\Queue\WorkerOptions $options - * @param int $lastRestart - * @param int $startTime - * @param int $jobsProcessed - * @param mixed $job - * @return int|null - */ - protected function stopIfNecessary(WorkerOptions $options, $lastRestart, $startTime = 0, $jobsProcessed = 0, $job = null) - { - return match (true) { - $this->shouldQuit => static::EXIT_SUCCESS, - $this->memoryExceeded($options->memory) => static::EXIT_MEMORY_LIMIT, - $this->queueShouldRestart($lastRestart) => static::EXIT_SUCCESS, - $options->stopWhenEmpty && is_null($job) => static::EXIT_SUCCESS, - $options->maxTime && hrtime(true) / 1e9 - $startTime >= $options->maxTime => static::EXIT_SUCCESS, - $options->maxJobs && $jobsProcessed >= $options->maxJobs => static::EXIT_SUCCESS, - default => null - }; - } - - /** - * Process the next job on the queue. - * - * @param string $connectionName - * @param string $queue - * @param \Illuminate\Queue\WorkerOptions $options - * @return void - */ - public function runNextJob($connectionName, $queue, WorkerOptions $options) - { - $job = $this->getNextJob( - $this->manager->connection($connectionName), $queue - ); - - // If we're able to pull a job off of the stack, we will process it and then return - // from this method. If there is no job on the queue, we will "sleep" the worker - // for the specified number of seconds, then keep processing jobs after sleep. - if ($job) { - return $this->runJob($job, $connectionName, $options); - } - - $this->sleep($options->sleep); - } - - /** - * Get the next job from the queue connection. - * - * @param \Illuminate\Contracts\Queue\Queue $connection - * @param string $queue - * @return \Illuminate\Contracts\Queue\Job|null - */ - protected function getNextJob($connection, $queue) - { - $popJobCallback = function ($queue) use ($connection) { - return $connection->pop($queue); - }; - - $this->raiseBeforeJobPopEvent($connection->getConnectionName()); - - try { - if (isset(static::$popCallbacks[$this->name])) { - return tap( - (static::$popCallbacks[$this->name])($popJobCallback, $queue), - fn ($job) => $this->raiseAfterJobPopEvent($connection->getConnectionName(), $job) - ); - } - - foreach (explode(',', $queue) as $queue) { - if (! is_null($job = $popJobCallback($queue))) { - $this->raiseAfterJobPopEvent($connection->getConnectionName(), $job); - - return $job; - } - } - } catch (Throwable $e) { - $this->exceptions->report($e); - - $this->stopWorkerIfLostConnection($e); - - $this->sleep(1); - } - } - - /** - * Process the given job. - * - * @param \Illuminate\Contracts\Queue\Job $job - * @param string $connectionName - * @param \Illuminate\Queue\WorkerOptions $options - * @return void - */ - protected function runJob($job, $connectionName, WorkerOptions $options) - { - try { - return $this->process($connectionName, $job, $options); - } catch (Throwable $e) { - $this->exceptions->report($e); - - $this->stopWorkerIfLostConnection($e); - } - } - - /** - * Stop the worker if we have lost connection to a database. - * - * @param \Throwable $e - * @return void - */ - protected function stopWorkerIfLostConnection($e) - { - if ($this->causedByLostConnection($e)) { - $this->shouldQuit = true; - } - } - - /** - * Process the given job from the queue. - * - * @param string $connectionName - * @param \Illuminate\Contracts\Queue\Job $job - * @param \Illuminate\Queue\WorkerOptions $options - * @return void - * - * @throws \Throwable - */ - public function process($connectionName, $job, WorkerOptions $options) - { - try { - // First we will raise the before job event and determine if the job has already run - // over its maximum attempt limits, which could primarily happen when this job is - // continually timing out and not actually throwing any exceptions from itself. - $this->raiseBeforeJobEvent($connectionName, $job); - - $this->markJobAsFailedIfAlreadyExceedsMaxAttempts( - $connectionName, $job, (int) $options->maxTries - ); - - if ($job->isDeleted()) { - return $this->raiseAfterJobEvent($connectionName, $job); - } - - // Here we will fire off the job and let it process. We will catch any exceptions, so - // they can be reported to the developer's logs, etc. Once the job is finished the - // proper events will be fired to let any listeners know this job has completed. - $job->fire(); - - $this->raiseAfterJobEvent($connectionName, $job); - } catch (Throwable $e) { - $this->handleJobException($connectionName, $job, $options, $e); - } - } - - /** - * Handle an exception that occurred while the job was running. - * - * @param string $connectionName - * @param \Illuminate\Contracts\Queue\Job $job - * @param \Illuminate\Queue\WorkerOptions $options - * @param \Throwable $e - * @return void - * - * @throws \Throwable - */ - protected function handleJobException($connectionName, $job, WorkerOptions $options, Throwable $e) - { - try { - // First, we will go ahead and mark the job as failed if it will exceed the maximum - // attempts it is allowed to run the next time we process it. If so we will just - // go ahead and mark it as failed now so we do not have to release this again. - if (! $job->hasFailed()) { - $this->markJobAsFailedIfWillExceedMaxAttempts( - $connectionName, $job, (int) $options->maxTries, $e - ); - - $this->markJobAsFailedIfWillExceedMaxExceptions( - $connectionName, $job, $e - ); - } - - $this->raiseExceptionOccurredJobEvent( - $connectionName, $job, $e - ); - } finally { - // If we catch an exception, we will attempt to release the job back onto the queue - // so it is not lost entirely. This'll let the job be retried at a later time by - // another listener (or this same one). We will re-throw this exception after. - if (! $job->isDeleted() && ! $job->isReleased() && ! $job->hasFailed()) { - $job->release($this->calculateBackoff($job, $options)); - - $this->events->dispatch(new JobReleasedAfterException( - $connectionName, $job - )); - } - } - - throw $e; - } - - /** - * Mark the given job as failed if it has exceeded the maximum allowed attempts. - * - * This will likely be because the job previously exceeded a timeout. - * - * @param string $connectionName - * @param \Illuminate\Contracts\Queue\Job $job - * @param int $maxTries - * @return void - * - * @throws \Throwable - */ - protected function markJobAsFailedIfAlreadyExceedsMaxAttempts($connectionName, $job, $maxTries) - { - $maxTries = ! is_null($job->maxTries()) ? $job->maxTries() : $maxTries; - - $retryUntil = $job->retryUntil(); - - if ($retryUntil && Carbon::now()->getTimestamp() <= $retryUntil) { - return; - } - - if (! $retryUntil && ($maxTries === 0 || $job->attempts() <= $maxTries)) { - return; - } - - $this->failJob($job, $e = $this->maxAttemptsExceededException($job)); - - throw $e; - } - - /** - * Mark the given job as failed if it has exceeded the maximum allowed attempts. - * - * @param string $connectionName - * @param \Illuminate\Contracts\Queue\Job $job - * @param int $maxTries - * @param \Throwable $e - * @return void - */ - protected function markJobAsFailedIfWillExceedMaxAttempts($connectionName, $job, $maxTries, Throwable $e) - { - $maxTries = ! is_null($job->maxTries()) ? $job->maxTries() : $maxTries; - - if ($job->retryUntil() && $job->retryUntil() <= Carbon::now()->getTimestamp()) { - $this->failJob($job, $e); - } - - if (! $job->retryUntil() && $maxTries > 0 && $job->attempts() >= $maxTries) { - $this->failJob($job, $e); - } - } - - /** - * Mark the given job as failed if it has exceeded the maximum allowed attempts. - * - * @param string $connectionName - * @param \Illuminate\Contracts\Queue\Job $job - * @param \Throwable $e - * @return void - */ - protected function markJobAsFailedIfWillExceedMaxExceptions($connectionName, $job, Throwable $e) - { - if (! $this->cache || is_null($uuid = $job->uuid()) || - is_null($maxExceptions = $job->maxExceptions())) { - return; - } - - if (! $this->cache->get('job-exceptions:'.$uuid)) { - $this->cache->put('job-exceptions:'.$uuid, 0, Carbon::now()->addDay()); - } - - if ($maxExceptions <= $this->cache->increment('job-exceptions:'.$uuid)) { - $this->cache->forget('job-exceptions:'.$uuid); - - $this->failJob($job, $e); - } - } - - /** - * Mark the given job as failed if it should fail on timeouts. - * - * @param string $connectionName - * @param \Illuminate\Contracts\Queue\Job $job - * @param \Throwable $e - * @return void - */ - protected function markJobAsFailedIfItShouldFailOnTimeout($connectionName, $job, Throwable $e) - { - if (method_exists($job, 'shouldFailOnTimeout') ? $job->shouldFailOnTimeout() : false) { - $this->failJob($job, $e); - } - } - - /** - * Mark the given job as failed and raise the relevant event. - * - * @param \Illuminate\Contracts\Queue\Job $job - * @param \Throwable $e - * @return void - */ - protected function failJob($job, Throwable $e) - { - $job->fail($e); - } - - /** - * Calculate the backoff for the given job. - * - * @param \Illuminate\Contracts\Queue\Job $job - * @param \Illuminate\Queue\WorkerOptions $options - * @return int - */ - protected function calculateBackoff($job, WorkerOptions $options) - { - $backoff = explode( - ',', - method_exists($job, 'backoff') && ! is_null($job->backoff()) - ? $job->backoff() - : $options->backoff - ); - - return (int) ($backoff[$job->attempts() - 1] ?? last($backoff)); - } - - /** - * Raise the before job has been popped. - * - * @param string $connectionName - * @return void - */ - protected function raiseBeforeJobPopEvent($connectionName) - { - $this->events->dispatch(new JobPopping($connectionName)); - } - - /** - * Raise the after job has been popped. - * - * @param string $connectionName - * @param \Illuminate\Contracts\Queue\Job|null $job - * @return void - */ - protected function raiseAfterJobPopEvent($connectionName, $job) - { - $this->events->dispatch(new JobPopped( - $connectionName, $job - )); - } - - /** - * Raise the before queue job event. - * - * @param string $connectionName - * @param \Illuminate\Contracts\Queue\Job $job - * @return void - */ - protected function raiseBeforeJobEvent($connectionName, $job) - { - $this->events->dispatch(new JobProcessing( - $connectionName, $job - )); - } - - /** - * Raise the after queue job event. - * - * @param string $connectionName - * @param \Illuminate\Contracts\Queue\Job $job - * @return void - */ - protected function raiseAfterJobEvent($connectionName, $job) - { - $this->events->dispatch(new JobProcessed( - $connectionName, $job - )); - } - - /** - * Raise the exception occurred queue job event. - * - * @param string $connectionName - * @param \Illuminate\Contracts\Queue\Job $job - * @param \Throwable $e - * @return void - */ - protected function raiseExceptionOccurredJobEvent($connectionName, $job, Throwable $e) - { - $this->events->dispatch(new JobExceptionOccurred( - $connectionName, $job, $e - )); - } - - /** - * Determine if the queue worker should restart. - * - * @param int|null $lastRestart - * @return bool - */ - protected function queueShouldRestart($lastRestart) - { - return $this->getTimestampOfLastQueueRestart() != $lastRestart; - } - - /** - * Get the last queue restart timestamp, or null. - * - * @return int|null - */ - protected function getTimestampOfLastQueueRestart() - { - if ($this->cache) { - return $this->cache->get('illuminate:queue:restart'); - } - } - - /** - * Enable async signals for the process. - * - * @return void - */ - protected function listenForSignals() - { - pcntl_async_signals(true); - - pcntl_signal(SIGQUIT, fn () => $this->shouldQuit = true); - pcntl_signal(SIGTERM, fn () => $this->shouldQuit = true); - pcntl_signal(SIGUSR2, fn () => $this->paused = true); - pcntl_signal(SIGCONT, fn () => $this->paused = false); - } - - /** - * Determine if "async" signals are supported. - * - * @return bool - */ - protected function supportsAsyncSignals() - { - return extension_loaded('pcntl'); - } - - /** - * Determine if the memory limit has been exceeded. - * - * @param int $memoryLimit - * @return bool - */ - public function memoryExceeded($memoryLimit) - { - return (memory_get_usage(true) / 1024 / 1024) >= $memoryLimit; - } - - /** - * Stop listening and bail out of the script. - * - * @param int $status - * @param WorkerOptions|null $options - * @return int - */ - public function stop($status = 0, $options = null) - { - $this->events->dispatch(new WorkerStopping($status, $options)); - - return $status; - } - - /** - * Kill the process. - * - * @param int $status - * @param \Illuminate\Queue\WorkerOptions|null $options - * @return never - */ - public function kill($status = 0, $options = null) - { - $this->events->dispatch(new WorkerStopping($status, $options)); - - if (extension_loaded('posix')) { - posix_kill(getmypid(), SIGKILL); - } - - exit($status); - } - - /** - * Create an instance of MaxAttemptsExceededException. - * - * @param \Illuminate\Contracts\Queue\Job $job - * @return \Illuminate\Queue\MaxAttemptsExceededException - */ - protected function maxAttemptsExceededException($job) - { - return MaxAttemptsExceededException::forJob($job); - } - - /** - * Create an instance of TimeoutExceededException. - * - * @param \Illuminate\Contracts\Queue\Job $job - * @return \Illuminate\Queue\TimeoutExceededException - */ - protected function timeoutExceededException($job) - { - return TimeoutExceededException::forJob($job); - } - - /** - * Sleep the script for a given number of seconds. - * - * @param int|float $seconds - * @return void - */ - public function sleep($seconds) - { - if ($seconds < 1) { - usleep($seconds * 1000000); - } else { - sleep($seconds); - } - } - - /** - * Set the cache repository implementation. - * - * @param \Illuminate\Contracts\Cache\Repository $cache - * @return $this - */ - public function setCache(CacheContract $cache) - { - $this->cache = $cache; - - return $this; - } - - /** - * Set the name of the worker. - * - * @param string $name - * @return $this - */ - public function setName($name) - { - $this->name = $name; - - return $this; - } - - /** - * Register a callback to be executed to pick jobs. - * - * @param string $workerName - * @param callable $callback - * @return void - */ - public static function popUsing($workerName, $callback) - { - if (is_null($callback)) { - unset(static::$popCallbacks[$workerName]); - } else { - static::$popCallbacks[$workerName] = $callback; - } - } - - /** - * Get the queue manager instance. - * - * @return \Illuminate\Contracts\Queue\Factory - */ - public function getManager() - { - return $this->manager; - } - - /** - * Set the queue manager instance. - * - * @param \Illuminate\Contracts\Queue\Factory $manager - * @return void - */ - public function setManager(QueueManager $manager) - { - $this->manager = $manager; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Redis/Connections/PhpRedisConnection.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Redis/Connections/PhpRedisConnection.php deleted file mode 100644 index d33b3cea..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Redis/Connections/PhpRedisConnection.php +++ /dev/null @@ -1,566 +0,0 @@ -client = $client; - $this->config = $config; - $this->connector = $connector; - } - - /** - * Returns the value of the given key. - * - * @param string $key - * @return string|null - */ - public function get($key) - { - $result = $this->command('get', [$key]); - - return $result !== false ? $result : null; - } - - /** - * Get the values of all the given keys. - * - * @param array $keys - * @return array - */ - public function mget(array $keys) - { - return array_map(function ($value) { - return $value !== false ? $value : null; - }, $this->command('mget', [$keys])); - } - - /** - * Set the string value in the argument as the value of the key. - * - * @param string $key - * @param mixed $value - * @param string|null $expireResolution - * @param int|null $expireTTL - * @param string|null $flag - * @return bool - */ - public function set($key, $value, $expireResolution = null, $expireTTL = null, $flag = null) - { - return $this->command('set', [ - $key, - $value, - $expireResolution ? [$flag, $expireResolution => $expireTTL] : null, - ]); - } - - /** - * Set the given key if it doesn't exist. - * - * @param string $key - * @param string $value - * @return int - */ - public function setnx($key, $value) - { - return (int) $this->command('setnx', [$key, $value]); - } - - /** - * Get the value of the given hash fields. - * - * @param string $key - * @param mixed ...$dictionary - * @return array - */ - public function hmget($key, ...$dictionary) - { - if (count($dictionary) === 1) { - $dictionary = $dictionary[0]; - } - - return array_values($this->command('hmget', [$key, $dictionary])); - } - - /** - * Set the given hash fields to their respective values. - * - * @param string $key - * @param mixed ...$dictionary - * @return int - */ - public function hmset($key, ...$dictionary) - { - if (count($dictionary) === 1) { - $dictionary = $dictionary[0]; - } else { - $input = collect($dictionary); - - $dictionary = $input->nth(2)->combine($input->nth(2, 1))->toArray(); - } - - return $this->command('hmset', [$key, $dictionary]); - } - - /** - * Set the given hash field if it doesn't exist. - * - * @param string $hash - * @param string $key - * @param string $value - * @return int - */ - public function hsetnx($hash, $key, $value) - { - return (int) $this->command('hsetnx', [$hash, $key, $value]); - } - - /** - * Removes the first count occurrences of the value element from the list. - * - * @param string $key - * @param int $count - * @param mixed $value - * @return int|false - */ - public function lrem($key, $count, $value) - { - return $this->command('lrem', [$key, $value, $count]); - } - - /** - * Removes and returns the first element of the list stored at key. - * - * @param mixed ...$arguments - * @return array|null - */ - public function blpop(...$arguments) - { - $result = $this->command('blpop', $arguments); - - return empty($result) ? null : $result; - } - - /** - * Removes and returns the last element of the list stored at key. - * - * @param mixed ...$arguments - * @return array|null - */ - public function brpop(...$arguments) - { - $result = $this->command('brpop', $arguments); - - return empty($result) ? null : $result; - } - - /** - * Removes and returns a random element from the set value at key. - * - * @param string $key - * @param int|null $count - * @return mixed|false - */ - public function spop($key, $count = 1) - { - return $this->command('spop', func_get_args()); - } - - /** - * Add one or more members to a sorted set or update its score if it already exists. - * - * @param string $key - * @param mixed ...$dictionary - * @return int - */ - public function zadd($key, ...$dictionary) - { - if (is_array(end($dictionary))) { - foreach (array_pop($dictionary) as $member => $score) { - $dictionary[] = $score; - $dictionary[] = $member; - } - } - - $options = []; - - foreach (array_slice($dictionary, 0, 3) as $i => $value) { - if (in_array($value, ['nx', 'xx', 'ch', 'incr', 'gt', 'lt', 'NX', 'XX', 'CH', 'INCR', 'GT', 'LT'], true)) { - $options[] = $value; - - unset($dictionary[$i]); - } - } - - return $this->command('zadd', array_merge([$key], [$options], array_values($dictionary))); - } - - /** - * Return elements with score between $min and $max. - * - * @param string $key - * @param mixed $min - * @param mixed $max - * @param array $options - * @return array - */ - public function zrangebyscore($key, $min, $max, $options = []) - { - if (isset($options['limit']) && ! array_is_list($options['limit'])) { - $options['limit'] = [ - $options['limit']['offset'], - $options['limit']['count'], - ]; - } - - return $this->command('zRangeByScore', [$key, $min, $max, $options]); - } - - /** - * Return elements with score between $min and $max. - * - * @param string $key - * @param mixed $min - * @param mixed $max - * @param array $options - * @return array - */ - public function zrevrangebyscore($key, $min, $max, $options = []) - { - if (isset($options['limit']) && ! array_is_list($options['limit'])) { - $options['limit'] = [ - $options['limit']['offset'], - $options['limit']['count'], - ]; - } - - return $this->command('zRevRangeByScore', [$key, $min, $max, $options]); - } - - /** - * Find the intersection between sets and store in a new set. - * - * @param string $output - * @param array $keys - * @param array $options - * @return int - */ - public function zinterstore($output, $keys, $options = []) - { - return $this->command('zinterstore', [$output, $keys, - $options['weights'] ?? null, - $options['aggregate'] ?? 'sum', - ]); - } - - /** - * Find the union between sets and store in a new set. - * - * @param string $output - * @param array $keys - * @param array $options - * @return int - */ - public function zunionstore($output, $keys, $options = []) - { - return $this->command('zunionstore', [$output, $keys, - $options['weights'] ?? null, - $options['aggregate'] ?? 'sum', - ]); - } - - /** - * Scans all keys based on options. - * - * @param mixed $cursor - * @param array $options - * @return mixed - */ - public function scan($cursor, $options = []) - { - $result = $this->client->scan($cursor, - $options['match'] ?? '*', - $options['count'] ?? 10 - ); - - if ($result === false) { - $result = []; - } - - return $cursor === 0 && empty($result) ? false : [$cursor, $result]; - } - - /** - * Scans the given set for all values based on options. - * - * @param string $key - * @param mixed $cursor - * @param array $options - * @return mixed - */ - public function zscan($key, $cursor, $options = []) - { - $result = $this->client->zscan($key, $cursor, - $options['match'] ?? '*', - $options['count'] ?? 10 - ); - - if ($result === false) { - $result = []; - } - - return $cursor === 0 && empty($result) ? false : [$cursor, $result]; - } - - /** - * Scans the given hash for all values based on options. - * - * @param string $key - * @param mixed $cursor - * @param array $options - * @return mixed - */ - public function hscan($key, $cursor, $options = []) - { - $result = $this->client->hscan($key, $cursor, - $options['match'] ?? '*', - $options['count'] ?? 10 - ); - - if ($result === false) { - $result = []; - } - - return $cursor === 0 && empty($result) ? false : [$cursor, $result]; - } - - /** - * Scans the given set for all values based on options. - * - * @param string $key - * @param mixed $cursor - * @param array $options - * @return mixed - */ - public function sscan($key, $cursor, $options = []) - { - $result = $this->client->sscan($key, $cursor, - $options['match'] ?? '*', - $options['count'] ?? 10 - ); - - if ($result === false) { - $result = []; - } - - return $cursor === 0 && empty($result) ? false : [$cursor, $result]; - } - - /** - * Execute commands in a pipeline. - * - * @param callable|null $callback - * @return \Redis|array - */ - public function pipeline(?callable $callback = null) - { - $pipeline = $this->client()->pipeline(); - - return is_null($callback) - ? $pipeline - : tap($pipeline, $callback)->exec(); - } - - /** - * Execute commands in a transaction. - * - * @param callable|null $callback - * @return \Redis|array - */ - public function transaction(?callable $callback = null) - { - $transaction = $this->client()->multi(); - - return is_null($callback) - ? $transaction - : tap($transaction, $callback)->exec(); - } - - /** - * Evaluate a LUA script serverside, from the SHA1 hash of the script instead of the script itself. - * - * @param string $script - * @param int $numkeys - * @param mixed ...$arguments - * @return mixed - */ - public function evalsha($script, $numkeys, ...$arguments) - { - return $this->command('evalsha', [ - $this->script('load', $script), $arguments, $numkeys, - ]); - } - - /** - * Evaluate a script and return its result. - * - * @param string $script - * @param int $numberOfKeys - * @param mixed ...$arguments - * @return mixed - */ - public function eval($script, $numberOfKeys, ...$arguments) - { - return $this->command('eval', [$script, $arguments, $numberOfKeys]); - } - - /** - * Subscribe to a set of given channels for messages. - * - * @param array|string $channels - * @param \Closure $callback - * @return void - */ - public function subscribe($channels, Closure $callback) - { - $this->client->subscribe((array) $channels, function ($redis, $channel, $message) use ($callback) { - $callback($message, $channel); - }); - } - - /** - * Subscribe to a set of given channels with wildcards. - * - * @param array|string $channels - * @param \Closure $callback - * @return void - */ - public function psubscribe($channels, Closure $callback) - { - $this->client->psubscribe((array) $channels, function ($redis, $pattern, $channel, $message) use ($callback) { - $callback($message, $channel); - }); - } - - /** - * Subscribe to a set of given channels for messages. - * - * @param array|string $channels - * @param \Closure $callback - * @param string $method - * @return void - */ - public function createSubscription($channels, Closure $callback, $method = 'subscribe') - { - // - } - - /** - * Flush the selected Redis database. - * - * @return mixed - */ - public function flushdb() - { - $arguments = func_get_args(); - - if (strtoupper((string) ($arguments[0] ?? null)) === 'ASYNC') { - return $this->command('flushdb', [true]); - } - - return $this->command('flushdb'); - } - - /** - * Execute a raw command. - * - * @param array $parameters - * @return mixed - */ - public function executeRaw(array $parameters) - { - return $this->command('rawCommand', $parameters); - } - - /** - * Run a command against the Redis database. - * - * @param string $method - * @param array $parameters - * @return mixed - * - * @throws \RedisException - */ - public function command($method, array $parameters = []) - { - try { - return parent::command($method, $parameters); - } catch (RedisException $e) { - foreach (['went away', 'socket', 'read error on connection', 'Connection lost'] as $errorMessage) { - if (str_contains($e->getMessage(), $errorMessage)) { - $this->client = $this->connector ? call_user_func($this->connector) : $this->client; - - break; - } - } - - throw $e; - } - } - - /** - * Disconnects from the Redis instance. - * - * @return void - */ - public function disconnect() - { - $this->client->close(); - } - - /** - * Pass other method calls down to the underlying client. - * - * @param string $method - * @param array $parameters - * @return mixed - */ - public function __call($method, $parameters) - { - return parent::__call(strtolower($method), $parameters); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Redis/Limiters/ConcurrencyLimiterBuilder.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Redis/Limiters/ConcurrencyLimiterBuilder.php deleted file mode 100644 index 8ff02768..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Redis/Limiters/ConcurrencyLimiterBuilder.php +++ /dev/null @@ -1,142 +0,0 @@ -name = $name; - $this->connection = $connection; - } - - /** - * Set the maximum number of locks that can be obtained per time window. - * - * @param int $maxLocks - * @return $this - */ - public function limit($maxLocks) - { - $this->maxLocks = $maxLocks; - - return $this; - } - - /** - * Set the number of seconds until the lock will be released. - * - * @param int $releaseAfter - * @return $this - */ - public function releaseAfter($releaseAfter) - { - $this->releaseAfter = $this->secondsUntil($releaseAfter); - - return $this; - } - - /** - * Set the amount of time to block until a lock is available. - * - * @param int $timeout - * @return $this - */ - public function block($timeout) - { - $this->timeout = $timeout; - - return $this; - } - - /** - * The number of milliseconds to wait between lock acquisition attempts. - * - * @param int $sleep - * @return $this - */ - public function sleep($sleep) - { - $this->sleep = $sleep; - - return $this; - } - - /** - * Execute the given callback if a lock is obtained, otherwise call the failure callback. - * - * @param callable $callback - * @param callable|null $failure - * @return mixed - * - * @throws \Illuminate\Contracts\Redis\LimiterTimeoutException - */ - public function then(callable $callback, ?callable $failure = null) - { - try { - return (new ConcurrencyLimiter( - $this->connection, $this->name, $this->maxLocks, $this->releaseAfter - ))->block($this->timeout, $callback, $this->sleep); - } catch (LimiterTimeoutException $e) { - if ($failure) { - return $failure($e); - } - - throw $e; - } - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Redis/Limiters/DurationLimiterBuilder.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Redis/Limiters/DurationLimiterBuilder.php deleted file mode 100644 index 8eedc117..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Redis/Limiters/DurationLimiterBuilder.php +++ /dev/null @@ -1,142 +0,0 @@ -name = $name; - $this->connection = $connection; - } - - /** - * Set the maximum number of locks that can be obtained per time window. - * - * @param int $maxLocks - * @return $this - */ - public function allow($maxLocks) - { - $this->maxLocks = $maxLocks; - - return $this; - } - - /** - * Set the amount of time the lock window is maintained. - * - * @param \DateTimeInterface|\DateInterval|int $decay - * @return $this - */ - public function every($decay) - { - $this->decay = $this->secondsUntil($decay); - - return $this; - } - - /** - * Set the amount of time to block until a lock is available. - * - * @param int $timeout - * @return $this - */ - public function block($timeout) - { - $this->timeout = $timeout; - - return $this; - } - - /** - * The number of milliseconds to wait between lock acquisition attempts. - * - * @param int $sleep - * @return $this - */ - public function sleep($sleep) - { - $this->sleep = $sleep; - - return $this; - } - - /** - * Execute the given callback if a lock is obtained, otherwise call the failure callback. - * - * @param callable $callback - * @param callable|null $failure - * @return mixed - * - * @throws \Illuminate\Contracts\Redis\LimiterTimeoutException - */ - public function then(callable $callback, ?callable $failure = null) - { - try { - return (new DurationLimiter( - $this->connection, $this->name, $this->maxLocks, $this->decay - ))->block($this->timeout, $callback, $this->sleep); - } catch (LimiterTimeoutException $e) { - if ($failure) { - return $failure($e); - } - - throw $e; - } - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Routing/ImplicitRouteBinding.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Routing/ImplicitRouteBinding.php deleted file mode 100644 index f8352e3d..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Routing/ImplicitRouteBinding.php +++ /dev/null @@ -1,120 +0,0 @@ - - * @throws \Illuminate\Routing\Exceptions\BackedEnumCaseNotFoundException - */ - public static function resolveForRoute($container, $route) - { - $parameters = $route->parameters(); - - $route = static::resolveBackedEnumsForRoute($route, $parameters); - - foreach ($route->signatureParameters(['subClass' => UrlRoutable::class]) as $parameter) { - if (! $parameterName = static::getParameterName($parameter->getName(), $parameters)) { - continue; - } - - $parameterValue = $parameters[$parameterName]; - - if ($parameterValue instanceof UrlRoutable) { - continue; - } - - $instance = $container->make(Reflector::getParameterClassName($parameter)); - - $parent = $route->parentOfParameter($parameterName); - - $routeBindingMethod = $route->allowsTrashedBindings() && in_array(SoftDeletes::class, class_uses_recursive($instance)) - ? 'resolveSoftDeletableRouteBinding' - : 'resolveRouteBinding'; - - if ($parent instanceof UrlRoutable && - ! $route->preventsScopedBindings() && - ($route->enforcesScopedBindings() || array_key_exists($parameterName, $route->bindingFields()))) { - $childRouteBindingMethod = $route->allowsTrashedBindings() && in_array(SoftDeletes::class, class_uses_recursive($instance)) - ? 'resolveSoftDeletableChildRouteBinding' - : 'resolveChildRouteBinding'; - - if (! $model = $parent->{$childRouteBindingMethod}( - $parameterName, $parameterValue, $route->bindingFieldFor($parameterName) - )) { - throw (new ModelNotFoundException)->setModel(get_class($instance), [$parameterValue]); - } - } elseif (! $model = $instance->{$routeBindingMethod}($parameterValue, $route->bindingFieldFor($parameterName))) { - throw (new ModelNotFoundException)->setModel(get_class($instance), [$parameterValue]); - } - - $route->setParameter($parameterName, $model); - } - } - - /** - * Resolve the Backed Enums route bindings for the route. - * - * @param \Illuminate\Routing\Route $route - * @param array $parameters - * @return \Illuminate\Routing\Route - * - * @throws \Illuminate\Routing\Exceptions\BackedEnumCaseNotFoundException - */ - protected static function resolveBackedEnumsForRoute($route, $parameters) - { - foreach ($route->signatureParameters(['backedEnum' => true]) as $parameter) { - if (! $parameterName = static::getParameterName($parameter->getName(), $parameters)) { - continue; - } - - $parameterValue = $parameters[$parameterName]; - - $backedEnumClass = $parameter->getType()?->getName(); - - $backedEnum = $parameterValue instanceof $backedEnumClass - ? $parameterValue - : $backedEnumClass::tryFrom((string) $parameterValue); - - if (is_null($backedEnum)) { - throw new BackedEnumCaseNotFoundException($backedEnumClass, $parameterValue); - } - - $route->setParameter($parameterName, $backedEnum); - } - - return $route; - } - - /** - * Return the parameter name if it exists in the given parameters. - * - * @param string $name - * @param array $parameters - * @return string|null - */ - protected static function getParameterName($name, $parameters) - { - if (array_key_exists($name, $parameters)) { - return $name; - } - - if (array_key_exists($snakedName = Str::snake($name), $parameters)) { - return $snakedName; - } - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Routing/Route.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Routing/Route.php deleted file mode 100755 index 86e808a9..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Routing/Route.php +++ /dev/null @@ -1,1373 +0,0 @@ -uri = $uri; - $this->methods = (array) $methods; - $this->action = Arr::except($this->parseAction($action), ['prefix']); - - if (in_array('GET', $this->methods) && ! in_array('HEAD', $this->methods)) { - $this->methods[] = 'HEAD'; - } - - $this->prefix(is_array($action) ? Arr::get($action, 'prefix') : ''); - } - - /** - * Parse the route action into a standard array. - * - * @param callable|array|null $action - * @return array - * - * @throws \UnexpectedValueException - */ - protected function parseAction($action) - { - return RouteAction::parse($this->uri, $action); - } - - /** - * Run the route action and return the response. - * - * @return mixed - */ - public function run() - { - $this->container = $this->container ?: new Container; - - try { - if ($this->isControllerAction()) { - return $this->runController(); - } - - return $this->runCallable(); - } catch (HttpResponseException $e) { - return $e->getResponse(); - } - } - - /** - * Checks whether the route's action is a controller. - * - * @return bool - */ - protected function isControllerAction() - { - return is_string($this->action['uses']) && ! $this->isSerializedClosure(); - } - - /** - * Run the route action and return the response. - * - * @return mixed - */ - protected function runCallable() - { - $callable = $this->action['uses']; - - if ($this->isSerializedClosure()) { - $callable = unserialize($this->action['uses'])->getClosure(); - } - - return $this->container[CallableDispatcher::class]->dispatch($this, $callable); - } - - /** - * Determine if the route action is a serialized Closure. - * - * @return bool - */ - protected function isSerializedClosure() - { - return RouteAction::containsSerializedClosure($this->action); - } - - /** - * Run the route action and return the response. - * - * @return mixed - * - * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException - */ - protected function runController() - { - return $this->controllerDispatcher()->dispatch( - $this, $this->getController(), $this->getControllerMethod() - ); - } - - /** - * Get the controller instance for the route. - * - * @return mixed - */ - public function getController() - { - if (! $this->isControllerAction()) { - return null; - } - - if (! $this->controller) { - $class = $this->getControllerClass(); - - $this->controller = $this->container->make(ltrim($class, '\\')); - } - - return $this->controller; - } - - /** - * Get the controller class used for the route. - * - * @return string|null - */ - public function getControllerClass() - { - return $this->isControllerAction() ? $this->parseControllerCallback()[0] : null; - } - - /** - * Get the controller method used for the route. - * - * @return string - */ - protected function getControllerMethod() - { - return $this->parseControllerCallback()[1]; - } - - /** - * Parse the controller. - * - * @return array - */ - protected function parseControllerCallback() - { - return Str::parseCallback($this->action['uses']); - } - - /** - * Flush the cached container instance on the route. - * - * @return void - */ - public function flushController() - { - $this->computedMiddleware = null; - $this->controller = null; - } - - /** - * Determine if the route matches a given request. - * - * @param \Illuminate\Http\Request $request - * @param bool $includingMethod - * @return bool - */ - public function matches(Request $request, $includingMethod = true) - { - $this->compileRoute(); - - foreach (self::getValidators() as $validator) { - if (! $includingMethod && $validator instanceof MethodValidator) { - continue; - } - - if (! $validator->matches($this, $request)) { - return false; - } - } - - return true; - } - - /** - * Compile the route into a Symfony CompiledRoute instance. - * - * @return \Symfony\Component\Routing\CompiledRoute - */ - protected function compileRoute() - { - if (! $this->compiled) { - $this->compiled = $this->toSymfonyRoute()->compile(); - } - - return $this->compiled; - } - - /** - * Bind the route to a given request for execution. - * - * @param \Illuminate\Http\Request $request - * @return $this - */ - public function bind(Request $request) - { - $this->compileRoute(); - - $this->parameters = (new RouteParameterBinder($this)) - ->parameters($request); - - $this->originalParameters = $this->parameters; - - return $this; - } - - /** - * Determine if the route has parameters. - * - * @return bool - */ - public function hasParameters() - { - return isset($this->parameters); - } - - /** - * Determine a given parameter exists from the route. - * - * @param string $name - * @return bool - */ - public function hasParameter($name) - { - if ($this->hasParameters()) { - return array_key_exists($name, $this->parameters()); - } - - return false; - } - - /** - * Get a given parameter from the route. - * - * @param string $name - * @param string|object|null $default - * @return string|object|null - */ - public function parameter($name, $default = null) - { - return Arr::get($this->parameters(), $name, $default); - } - - /** - * Get original value of a given parameter from the route. - * - * @param string $name - * @param string|null $default - * @return string|null - */ - public function originalParameter($name, $default = null) - { - return Arr::get($this->originalParameters(), $name, $default); - } - - /** - * Set a parameter to the given value. - * - * @param string $name - * @param string|object|null $value - * @return void - */ - public function setParameter($name, $value) - { - $this->parameters(); - - $this->parameters[$name] = $value; - } - - /** - * Unset a parameter on the route if it is set. - * - * @param string $name - * @return void - */ - public function forgetParameter($name) - { - $this->parameters(); - - unset($this->parameters[$name]); - } - - /** - * Get the key / value list of parameters for the route. - * - * @return array - * - * @throws \LogicException - */ - public function parameters() - { - if (isset($this->parameters)) { - return $this->parameters; - } - - throw new LogicException('Route is not bound.'); - } - - /** - * Get the key / value list of original parameters for the route. - * - * @return array - * - * @throws \LogicException - */ - public function originalParameters() - { - if (isset($this->originalParameters)) { - return $this->originalParameters; - } - - throw new LogicException('Route is not bound.'); - } - - /** - * Get the key / value list of parameters without null values. - * - * @return array - */ - public function parametersWithoutNulls() - { - return array_filter($this->parameters(), fn ($p) => ! is_null($p)); - } - - /** - * Get all of the parameter names for the route. - * - * @return array - */ - public function parameterNames() - { - if (isset($this->parameterNames)) { - return $this->parameterNames; - } - - return $this->parameterNames = $this->compileParameterNames(); - } - - /** - * Get the parameter names for the route. - * - * @return array - */ - protected function compileParameterNames() - { - preg_match_all('/\{(.*?)\}/', $this->getDomain().$this->uri, $matches); - - return array_map(fn ($m) => trim($m, '?'), $matches[1]); - } - - /** - * Get the parameters that are listed in the route / controller signature. - * - * @param array $conditions - * @return array - */ - public function signatureParameters($conditions = []) - { - if (is_string($conditions)) { - $conditions = ['subClass' => $conditions]; - } - - return RouteSignatureParameters::fromAction($this->action, $conditions); - } - - /** - * Get the binding field for the given parameter. - * - * @param string|int $parameter - * @return string|null - */ - public function bindingFieldFor($parameter) - { - $fields = is_int($parameter) ? array_values($this->bindingFields) : $this->bindingFields; - - return $fields[$parameter] ?? null; - } - - /** - * Get the binding fields for the route. - * - * @return array - */ - public function bindingFields() - { - return $this->bindingFields ?? []; - } - - /** - * Set the binding fields for the route. - * - * @param array $bindingFields - * @return $this - */ - public function setBindingFields(array $bindingFields) - { - $this->bindingFields = $bindingFields; - - return $this; - } - - /** - * Get the parent parameter of the given parameter. - * - * @param string $parameter - * @return string|null - */ - public function parentOfParameter($parameter) - { - $key = array_search($parameter, array_keys($this->parameters)); - - if ($key === 0 || $key === false) { - return; - } - - return array_values($this->parameters)[$key - 1]; - } - - /** - * Allow "trashed" models to be retrieved when resolving implicit model bindings for this route. - * - * @param bool $withTrashed - * @return $this - */ - public function withTrashed($withTrashed = true) - { - $this->withTrashedBindings = $withTrashed; - - return $this; - } - - /** - * Determines if the route allows "trashed" models to be retrieved when resolving implicit model bindings. - * - * @return bool - */ - public function allowsTrashedBindings() - { - return $this->withTrashedBindings; - } - - /** - * Set a default value for the route. - * - * @param string $key - * @param mixed $value - * @return $this - */ - public function defaults($key, $value) - { - $this->defaults[$key] = $value; - - return $this; - } - - /** - * Set the default values for the route. - * - * @param array $defaults - * @return $this - */ - public function setDefaults(array $defaults) - { - $this->defaults = $defaults; - - return $this; - } - - /** - * Set a regular expression requirement on the route. - * - * @param array|string $name - * @param string|null $expression - * @return $this - */ - public function where($name, $expression = null) - { - foreach ($this->parseWhere($name, $expression) as $name => $expression) { - $this->wheres[$name] = $expression; - } - - return $this; - } - - /** - * Parse arguments to the where method into an array. - * - * @param array|string $name - * @param string $expression - * @return array - */ - protected function parseWhere($name, $expression) - { - return is_array($name) ? $name : [$name => $expression]; - } - - /** - * Set a list of regular expression requirements on the route. - * - * @param array $wheres - * @return $this - */ - public function setWheres(array $wheres) - { - foreach ($wheres as $name => $expression) { - $this->where($name, $expression); - } - - return $this; - } - - /** - * Mark this route as a fallback route. - * - * @return $this - */ - public function fallback() - { - $this->isFallback = true; - - return $this; - } - - /** - * Set the fallback value. - * - * @param bool $isFallback - * @return $this - */ - public function setFallback($isFallback) - { - $this->isFallback = $isFallback; - - return $this; - } - - /** - * Get the HTTP verbs the route responds to. - * - * @return array - */ - public function methods() - { - return $this->methods; - } - - /** - * Determine if the route only responds to HTTP requests. - * - * @return bool - */ - public function httpOnly() - { - return in_array('http', $this->action, true); - } - - /** - * Determine if the route only responds to HTTPS requests. - * - * @return bool - */ - public function httpsOnly() - { - return $this->secure(); - } - - /** - * Determine if the route only responds to HTTPS requests. - * - * @return bool - */ - public function secure() - { - return in_array('https', $this->action, true); - } - - /** - * Get or set the domain for the route. - * - * @param string|null $domain - * @return $this|string|null - */ - public function domain($domain = null) - { - if (is_null($domain)) { - return $this->getDomain(); - } - - $parsed = RouteUri::parse($domain); - - $this->action['domain'] = $parsed->uri; - - $this->bindingFields = array_merge( - $this->bindingFields, $parsed->bindingFields - ); - - return $this; - } - - /** - * Get the domain defined for the route. - * - * @return string|null - */ - public function getDomain() - { - return isset($this->action['domain']) - ? str_replace(['http://', 'https://'], '', $this->action['domain']) : null; - } - - /** - * Get the prefix of the route instance. - * - * @return string|null - */ - public function getPrefix() - { - return $this->action['prefix'] ?? null; - } - - /** - * Add a prefix to the route URI. - * - * @param string $prefix - * @return $this - */ - public function prefix($prefix) - { - $prefix ??= ''; - - $this->updatePrefixOnAction($prefix); - - $uri = rtrim($prefix, '/').'/'.ltrim($this->uri, '/'); - - return $this->setUri($uri !== '/' ? trim($uri, '/') : $uri); - } - - /** - * Update the "prefix" attribute on the action array. - * - * @param string $prefix - * @return void - */ - protected function updatePrefixOnAction($prefix) - { - if (! empty($newPrefix = trim(rtrim($prefix, '/').'/'.ltrim($this->action['prefix'] ?? '', '/'), '/'))) { - $this->action['prefix'] = $newPrefix; - } - } - - /** - * Get the URI associated with the route. - * - * @return string - */ - public function uri() - { - return $this->uri; - } - - /** - * Set the URI that the route responds to. - * - * @param string $uri - * @return $this - */ - public function setUri($uri) - { - $this->uri = $this->parseUri($uri); - - return $this; - } - - /** - * Parse the route URI and normalize / store any implicit binding fields. - * - * @param string $uri - * @return string - */ - protected function parseUri($uri) - { - $this->bindingFields = []; - - return tap(RouteUri::parse($uri), function ($uri) { - $this->bindingFields = $uri->bindingFields; - })->uri; - } - - /** - * Get the name of the route instance. - * - * @return string|null - */ - public function getName() - { - return $this->action['as'] ?? null; - } - - /** - * Add or change the route name. - * - * @param string $name - * @return $this - */ - public function name($name) - { - $this->action['as'] = isset($this->action['as']) ? $this->action['as'].$name : $name; - - return $this; - } - - /** - * Determine whether the route's name matches the given patterns. - * - * @param mixed ...$patterns - * @return bool - */ - public function named(...$patterns) - { - if (is_null($routeName = $this->getName())) { - return false; - } - - foreach ($patterns as $pattern) { - if (Str::is($pattern, $routeName)) { - return true; - } - } - - return false; - } - - /** - * Set the handler for the route. - * - * @param \Closure|array|string $action - * @return $this - */ - public function uses($action) - { - if (is_array($action)) { - $action = $action[0].'@'.$action[1]; - } - - $action = is_string($action) ? $this->addGroupNamespaceToStringUses($action) : $action; - - return $this->setAction(array_merge($this->action, $this->parseAction([ - 'uses' => $action, - 'controller' => $action, - ]))); - } - - /** - * Parse a string based action for the "uses" fluent method. - * - * @param string $action - * @return string - */ - protected function addGroupNamespaceToStringUses($action) - { - $groupStack = last($this->router->getGroupStack()); - - if (isset($groupStack['namespace']) && ! str_starts_with($action, '\\')) { - return $groupStack['namespace'].'\\'.$action; - } - - return $action; - } - - /** - * Get the action name for the route. - * - * @return string - */ - public function getActionName() - { - return $this->action['controller'] ?? 'Closure'; - } - - /** - * Get the method name of the route action. - * - * @return string - */ - public function getActionMethod() - { - return Arr::last(explode('@', $this->getActionName())); - } - - /** - * Get the action array or one of its properties for the route. - * - * @param string|null $key - * @return mixed - */ - public function getAction($key = null) - { - return Arr::get($this->action, $key); - } - - /** - * Set the action array for the route. - * - * @param array $action - * @return $this - */ - public function setAction(array $action) - { - $this->action = $action; - - if (isset($this->action['domain'])) { - $this->domain($this->action['domain']); - } - - return $this; - } - - /** - * Get the value of the action that should be taken on a missing model exception. - * - * @return \Closure|null - */ - public function getMissing() - { - $missing = $this->action['missing'] ?? null; - - return is_string($missing) && - Str::startsWith($missing, [ - 'O:47:"Laravel\\SerializableClosure\\SerializableClosure', - 'O:55:"Laravel\\SerializableClosure\\UnsignedSerializableClosure', - ]) ? unserialize($missing) : $missing; - } - - /** - * Define the callable that should be invoked on a missing model exception. - * - * @param \Closure $missing - * @return $this - */ - public function missing($missing) - { - $this->action['missing'] = $missing; - - return $this; - } - - /** - * Get all middleware, including the ones from the controller. - * - * @return array - */ - public function gatherMiddleware() - { - if (! is_null($this->computedMiddleware)) { - return $this->computedMiddleware; - } - - $this->computedMiddleware = []; - - return $this->computedMiddleware = Router::uniqueMiddleware(array_merge( - $this->middleware(), $this->controllerMiddleware() - )); - } - - /** - * Get or set the middlewares attached to the route. - * - * @param array|string|null $middleware - * @return $this|array - */ - public function middleware($middleware = null) - { - if (is_null($middleware)) { - return (array) ($this->action['middleware'] ?? []); - } - - if (! is_array($middleware)) { - $middleware = func_get_args(); - } - - foreach ($middleware as $index => $value) { - $middleware[$index] = (string) $value; - } - - $this->action['middleware'] = array_merge( - (array) ($this->action['middleware'] ?? []), $middleware - ); - - return $this; - } - - /** - * Specify that the "Authorize" / "can" middleware should be applied to the route with the given options. - * - * @param string $ability - * @param array|string $models - * @return $this - */ - public function can($ability, $models = []) - { - return empty($models) - ? $this->middleware(['can:'.$ability]) - : $this->middleware(['can:'.$ability.','.implode(',', Arr::wrap($models))]); - } - - /** - * Get the middleware for the route's controller. - * - * @return array - */ - public function controllerMiddleware() - { - if (! $this->isControllerAction()) { - return []; - } - - [$controllerClass, $controllerMethod] = [ - $this->getControllerClass(), - $this->getControllerMethod(), - ]; - - if (is_a($controllerClass, HasMiddleware::class, true)) { - return $this->staticallyProvidedControllerMiddleware( - $controllerClass, $controllerMethod - ); - } - - if (method_exists($controllerClass, 'getMiddleware')) { - return $this->controllerDispatcher()->getMiddleware( - $this->getController(), $controllerMethod - ); - } - - return []; - } - - /** - * Get the statically provided controller middleware for the given class and method. - * - * @param string $class - * @param string $method - * @return array - */ - protected function staticallyProvidedControllerMiddleware(string $class, string $method) - { - return collect($class::middleware())->reject(function ($middleware) use ($method) { - return static::methodExcludedByOptions( - $method, ['only' => $middleware->only, 'except' => $middleware->except] - ); - })->map->middleware->values()->all(); - } - - /** - * Specify middleware that should be removed from the given route. - * - * @param array|string $middleware - * @return $this - */ - public function withoutMiddleware($middleware) - { - $this->action['excluded_middleware'] = array_merge( - (array) ($this->action['excluded_middleware'] ?? []), Arr::wrap($middleware) - ); - - return $this; - } - - /** - * Get the middleware that should be removed from the route. - * - * @return array - */ - public function excludedMiddleware() - { - return (array) ($this->action['excluded_middleware'] ?? []); - } - - /** - * Indicate that the route should enforce scoping of multiple implicit Eloquent bindings. - * - * @return $this - */ - public function scopeBindings() - { - $this->action['scope_bindings'] = true; - - return $this; - } - - /** - * Indicate that the route should not enforce scoping of multiple implicit Eloquent bindings. - * - * @return $this - */ - public function withoutScopedBindings() - { - $this->action['scope_bindings'] = false; - - return $this; - } - - /** - * Determine if the route should enforce scoping of multiple implicit Eloquent bindings. - * - * @return bool - */ - public function enforcesScopedBindings() - { - return (bool) ($this->action['scope_bindings'] ?? false); - } - - /** - * Determine if the route should prevent scoping of multiple implicit Eloquent bindings. - * - * @return bool - */ - public function preventsScopedBindings() - { - return isset($this->action['scope_bindings']) && $this->action['scope_bindings'] === false; - } - - /** - * Specify that the route should not allow concurrent requests from the same session. - * - * @param int|null $lockSeconds - * @param int|null $waitSeconds - * @return $this - */ - public function block($lockSeconds = 10, $waitSeconds = 10) - { - $this->lockSeconds = $lockSeconds; - $this->waitSeconds = $waitSeconds; - - return $this; - } - - /** - * Specify that the route should allow concurrent requests from the same session. - * - * @return $this - */ - public function withoutBlocking() - { - return $this->block(null, null); - } - - /** - * Get the maximum number of seconds the route's session lock should be held for. - * - * @return int|null - */ - public function locksFor() - { - return $this->lockSeconds; - } - - /** - * Get the maximum number of seconds to wait while attempting to acquire a session lock. - * - * @return int|null - */ - public function waitsFor() - { - return $this->waitSeconds; - } - - /** - * Get the dispatcher for the route's controller. - * - * @return \Illuminate\Routing\Contracts\ControllerDispatcher - */ - public function controllerDispatcher() - { - if ($this->container->bound(ControllerDispatcherContract::class)) { - return $this->container->make(ControllerDispatcherContract::class); - } - - return new ControllerDispatcher($this->container); - } - - /** - * Get the route validators for the instance. - * - * @return array - */ - public static function getValidators() - { - if (isset(static::$validators)) { - return static::$validators; - } - - // To match the route, we will use a chain of responsibility pattern with the - // validator implementations. We will spin through each one making sure it - // passes and then we will know if the route as a whole matches request. - return static::$validators = [ - new UriValidator, new MethodValidator, - new SchemeValidator, new HostValidator, - ]; - } - - /** - * Convert the route to a Symfony route. - * - * @return \Symfony\Component\Routing\Route - */ - public function toSymfonyRoute() - { - return new SymfonyRoute( - preg_replace('/\{(\w+?)\?\}/', '{$1}', $this->uri()), $this->getOptionalParameterNames(), - $this->wheres, ['utf8' => true], - $this->getDomain() ?: '', [], $this->methods - ); - } - - /** - * Get the optional parameter names for the route. - * - * @return array - */ - protected function getOptionalParameterNames() - { - preg_match_all('/\{(\w+?)\?\}/', $this->uri(), $matches); - - return isset($matches[1]) ? array_fill_keys($matches[1], null) : []; - } - - /** - * Get the compiled version of the route. - * - * @return \Symfony\Component\Routing\CompiledRoute - */ - public function getCompiled() - { - return $this->compiled; - } - - /** - * Set the router instance on the route. - * - * @param \Illuminate\Routing\Router $router - * @return $this - */ - public function setRouter(Router $router) - { - $this->router = $router; - - return $this; - } - - /** - * Set the container instance on the route. - * - * @param \Illuminate\Container\Container $container - * @return $this - */ - public function setContainer(Container $container) - { - $this->container = $container; - - return $this; - } - - /** - * Prepare the route instance for serialization. - * - * @return void - * - * @throws \LogicException - */ - public function prepareForSerialization() - { - if ($this->action['uses'] instanceof Closure) { - $this->action['uses'] = serialize( - SerializableClosure::unsigned($this->action['uses']) - ); - } - - if (isset($this->action['missing']) && $this->action['missing'] instanceof Closure) { - $this->action['missing'] = serialize( - SerializableClosure::unsigned($this->action['missing']) - ); - } - - $this->compileRoute(); - - unset($this->router, $this->container); - } - - /** - * Dynamically access route parameters. - * - * @param string $key - * @return mixed - */ - public function __get($key) - { - return $this->parameter($key); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Routing/Router.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Routing/Router.php deleted file mode 100644 index dac895da..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Routing/Router.php +++ /dev/null @@ -1,1504 +0,0 @@ -events = $events; - $this->routes = new RouteCollection; - $this->container = $container ?: new Container; - } - - /** - * Register a new GET route with the router. - * - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route - */ - public function get($uri, $action = null) - { - return $this->addRoute(['GET', 'HEAD'], $uri, $action); - } - - /** - * Register a new POST route with the router. - * - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route - */ - public function post($uri, $action = null) - { - return $this->addRoute('POST', $uri, $action); - } - - /** - * Register a new PUT route with the router. - * - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route - */ - public function put($uri, $action = null) - { - return $this->addRoute('PUT', $uri, $action); - } - - /** - * Register a new PATCH route with the router. - * - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route - */ - public function patch($uri, $action = null) - { - return $this->addRoute('PATCH', $uri, $action); - } - - /** - * Register a new DELETE route with the router. - * - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route - */ - public function delete($uri, $action = null) - { - return $this->addRoute('DELETE', $uri, $action); - } - - /** - * Register a new OPTIONS route with the router. - * - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route - */ - public function options($uri, $action = null) - { - return $this->addRoute('OPTIONS', $uri, $action); - } - - /** - * Register a new route responding to all verbs. - * - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route - */ - public function any($uri, $action = null) - { - return $this->addRoute(self::$verbs, $uri, $action); - } - - /** - * Register a new fallback route with the router. - * - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route - */ - public function fallback($action) - { - $placeholder = 'fallbackPlaceholder'; - - return $this->addRoute( - 'GET', "{{$placeholder}}", $action - )->where($placeholder, '.*')->fallback(); - } - - /** - * Create a redirect from one URI to another. - * - * @param string $uri - * @param string $destination - * @param int $status - * @return \Illuminate\Routing\Route - */ - public function redirect($uri, $destination, $status = 302) - { - return $this->any($uri, '\Illuminate\Routing\RedirectController') - ->defaults('destination', $destination) - ->defaults('status', $status); - } - - /** - * Create a permanent redirect from one URI to another. - * - * @param string $uri - * @param string $destination - * @return \Illuminate\Routing\Route - */ - public function permanentRedirect($uri, $destination) - { - return $this->redirect($uri, $destination, 301); - } - - /** - * Register a new route that returns a view. - * - * @param string $uri - * @param string $view - * @param array $data - * @param int|array $status - * @param array $headers - * @return \Illuminate\Routing\Route - */ - public function view($uri, $view, $data = [], $status = 200, array $headers = []) - { - return $this->match(['GET', 'HEAD'], $uri, '\Illuminate\Routing\ViewController') - ->setDefaults([ - 'view' => $view, - 'data' => $data, - 'status' => is_array($status) ? 200 : $status, - 'headers' => is_array($status) ? $status : $headers, - ]); - } - - /** - * Register a new route with the given verbs. - * - * @param array|string $methods - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route - */ - public function match($methods, $uri, $action = null) - { - return $this->addRoute(array_map('strtoupper', (array) $methods), $uri, $action); - } - - /** - * Register an array of resource controllers. - * - * @param array $resources - * @param array $options - * @return void - */ - public function resources(array $resources, array $options = []) - { - foreach ($resources as $name => $controller) { - $this->resource($name, $controller, $options); - } - } - - /** - * Route a resource to a controller. - * - * @param string $name - * @param string $controller - * @param array $options - * @return \Illuminate\Routing\PendingResourceRegistration - */ - public function resource($name, $controller, array $options = []) - { - if ($this->container && $this->container->bound(ResourceRegistrar::class)) { - $registrar = $this->container->make(ResourceRegistrar::class); - } else { - $registrar = new ResourceRegistrar($this); - } - - return new PendingResourceRegistration( - $registrar, $name, $controller, $options - ); - } - - /** - * Register an array of API resource controllers. - * - * @param array $resources - * @param array $options - * @return void - */ - public function apiResources(array $resources, array $options = []) - { - foreach ($resources as $name => $controller) { - $this->apiResource($name, $controller, $options); - } - } - - /** - * Route an API resource to a controller. - * - * @param string $name - * @param string $controller - * @param array $options - * @return \Illuminate\Routing\PendingResourceRegistration - */ - public function apiResource($name, $controller, array $options = []) - { - $only = ['index', 'show', 'store', 'update', 'destroy']; - - if (isset($options['except'])) { - $only = array_diff($only, (array) $options['except']); - } - - return $this->resource($name, $controller, array_merge([ - 'only' => $only, - ], $options)); - } - - /** - * Register an array of singleton resource controllers. - * - * @param array $singletons - * @param array $options - * @return void - */ - public function singletons(array $singletons, array $options = []) - { - foreach ($singletons as $name => $controller) { - $this->singleton($name, $controller, $options); - } - } - - /** - * Route a singleton resource to a controller. - * - * @param string $name - * @param string $controller - * @param array $options - * @return \Illuminate\Routing\PendingSingletonResourceRegistration - */ - public function singleton($name, $controller, array $options = []) - { - if ($this->container && $this->container->bound(ResourceRegistrar::class)) { - $registrar = $this->container->make(ResourceRegistrar::class); - } else { - $registrar = new ResourceRegistrar($this); - } - - return new PendingSingletonResourceRegistration( - $registrar, $name, $controller, $options - ); - } - - /** - * Register an array of API singleton resource controllers. - * - * @param array $singletons - * @param array $options - * @return void - */ - public function apiSingletons(array $singletons, array $options = []) - { - foreach ($singletons as $name => $controller) { - $this->apiSingleton($name, $controller, $options); - } - } - - /** - * Route an API singleton resource to a controller. - * - * @param string $name - * @param string $controller - * @param array $options - * @return \Illuminate\Routing\PendingSingletonResourceRegistration - */ - public function apiSingleton($name, $controller, array $options = []) - { - $only = ['store', 'show', 'update', 'destroy']; - - if (isset($options['except'])) { - $only = array_diff($only, (array) $options['except']); - } - - return $this->singleton($name, $controller, array_merge([ - 'only' => $only, - ], $options)); - } - - /** - * Create a route group with shared attributes. - * - * @param array $attributes - * @param \Closure|array|string $routes - * @return $this - */ - public function group(array $attributes, $routes) - { - foreach (Arr::wrap($routes) as $groupRoutes) { - $this->updateGroupStack($attributes); - - // Once we have updated the group stack, we'll load the provided routes and - // merge in the group's attributes when the routes are created. After we - // have created the routes, we will pop the attributes off the stack. - $this->loadRoutes($groupRoutes); - - array_pop($this->groupStack); - } - - return $this; - } - - /** - * Update the group stack with the given attributes. - * - * @param array $attributes - * @return void - */ - protected function updateGroupStack(array $attributes) - { - if ($this->hasGroupStack()) { - $attributes = $this->mergeWithLastGroup($attributes); - } - - $this->groupStack[] = $attributes; - } - - /** - * Merge the given array with the last group stack. - * - * @param array $new - * @param bool $prependExistingPrefix - * @return array - */ - public function mergeWithLastGroup($new, $prependExistingPrefix = true) - { - return RouteGroup::merge($new, end($this->groupStack), $prependExistingPrefix); - } - - /** - * Load the provided routes. - * - * @param \Closure|string $routes - * @return void - */ - protected function loadRoutes($routes) - { - if ($routes instanceof Closure) { - $routes($this); - } else { - (new RouteFileRegistrar($this))->register($routes); - } - } - - /** - * Get the prefix from the last group on the stack. - * - * @return string - */ - public function getLastGroupPrefix() - { - if ($this->hasGroupStack()) { - $last = end($this->groupStack); - - return $last['prefix'] ?? ''; - } - - return ''; - } - - /** - * Add a route to the underlying route collection. - * - * @param array|string $methods - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route - */ - public function addRoute($methods, $uri, $action) - { - return $this->routes->add($this->createRoute($methods, $uri, $action)); - } - - /** - * Create a new route instance. - * - * @param array|string $methods - * @param string $uri - * @param mixed $action - * @return \Illuminate\Routing\Route - */ - protected function createRoute($methods, $uri, $action) - { - // If the route is routing to a controller we will parse the route action into - // an acceptable array format before registering it and creating this route - // instance itself. We need to build the Closure that will call this out. - if ($this->actionReferencesController($action)) { - $action = $this->convertToControllerAction($action); - } - - $route = $this->newRoute( - $methods, $this->prefix($uri), $action - ); - - // If we have groups that need to be merged, we will merge them now after this - // route has already been created and is ready to go. After we're done with - // the merge we will be ready to return the route back out to the caller. - if ($this->hasGroupStack()) { - $this->mergeGroupAttributesIntoRoute($route); - } - - $this->addWhereClausesToRoute($route); - - return $route; - } - - /** - * Determine if the action is routing to a controller. - * - * @param mixed $action - * @return bool - */ - protected function actionReferencesController($action) - { - if (! $action instanceof Closure) { - return is_string($action) || (isset($action['uses']) && is_string($action['uses'])); - } - - return false; - } - - /** - * Add a controller based route action to the action array. - * - * @param array|string $action - * @return array - */ - protected function convertToControllerAction($action) - { - if (is_string($action)) { - $action = ['uses' => $action]; - } - - // Here we'll merge any group "controller" and "uses" statements if necessary so that - // the action has the proper clause for this property. Then, we can simply set the - // name of this controller on the action plus return the action array for usage. - if ($this->hasGroupStack()) { - $action['uses'] = $this->prependGroupController($action['uses']); - $action['uses'] = $this->prependGroupNamespace($action['uses']); - } - - // Here we will set this controller name on the action array just so we always - // have a copy of it for reference if we need it. This can be used while we - // search for a controller name or do some other type of fetch operation. - $action['controller'] = $action['uses']; - - return $action; - } - - /** - * Prepend the last group namespace onto the use clause. - * - * @param string $class - * @return string - */ - protected function prependGroupNamespace($class) - { - $group = end($this->groupStack); - - return isset($group['namespace']) && ! str_starts_with($class, '\\') && ! str_starts_with($class, $group['namespace']) - ? $group['namespace'].'\\'.$class : $class; - } - - /** - * Prepend the last group controller onto the use clause. - * - * @param string $class - * @return string - */ - protected function prependGroupController($class) - { - $group = end($this->groupStack); - - if (! isset($group['controller'])) { - return $class; - } - - if (class_exists($class)) { - return $class; - } - - if (str_contains($class, '@')) { - return $class; - } - - return $group['controller'].'@'.$class; - } - - /** - * Create a new Route object. - * - * @param array|string $methods - * @param string $uri - * @param mixed $action - * @return \Illuminate\Routing\Route - */ - public function newRoute($methods, $uri, $action) - { - return (new Route($methods, $uri, $action)) - ->setRouter($this) - ->setContainer($this->container); - } - - /** - * Prefix the given URI with the last prefix. - * - * @param string $uri - * @return string - */ - protected function prefix($uri) - { - return trim(trim($this->getLastGroupPrefix(), '/').'/'.trim($uri, '/'), '/') ?: '/'; - } - - /** - * Add the necessary where clauses to the route based on its initial registration. - * - * @param \Illuminate\Routing\Route $route - * @return \Illuminate\Routing\Route - */ - protected function addWhereClausesToRoute($route) - { - $route->where(array_merge( - $this->patterns, $route->getAction()['where'] ?? [] - )); - - return $route; - } - - /** - * Merge the group stack with the controller action. - * - * @param \Illuminate\Routing\Route $route - * @return void - */ - protected function mergeGroupAttributesIntoRoute($route) - { - $route->setAction($this->mergeWithLastGroup( - $route->getAction(), - $prependExistingPrefix = false - )); - } - - /** - * Return the response returned by the given route. - * - * @param string $name - * @return \Symfony\Component\HttpFoundation\Response - */ - public function respondWithRoute($name) - { - $route = tap($this->routes->getByName($name))->bind($this->currentRequest); - - return $this->runRoute($this->currentRequest, $route); - } - - /** - * Dispatch the request to the application. - * - * @param \Illuminate\Http\Request $request - * @return \Symfony\Component\HttpFoundation\Response - */ - public function dispatch(Request $request) - { - $this->currentRequest = $request; - - return $this->dispatchToRoute($request); - } - - /** - * Dispatch the request to a route and return the response. - * - * @param \Illuminate\Http\Request $request - * @return \Symfony\Component\HttpFoundation\Response - */ - public function dispatchToRoute(Request $request) - { - return $this->runRoute($request, $this->findRoute($request)); - } - - /** - * Find the route matching a given request. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Routing\Route - */ - protected function findRoute($request) - { - $this->events->dispatch(new Routing($request)); - - $this->current = $route = $this->routes->match($request); - - $route->setContainer($this->container); - - $this->container->instance(Route::class, $route); - - return $route; - } - - /** - * Return the response for the given route. - * - * @param \Illuminate\Http\Request $request - * @param \Illuminate\Routing\Route $route - * @return \Symfony\Component\HttpFoundation\Response - */ - protected function runRoute(Request $request, Route $route) - { - $request->setRouteResolver(fn () => $route); - - $this->events->dispatch(new RouteMatched($route, $request)); - - return $this->prepareResponse($request, - $this->runRouteWithinStack($route, $request) - ); - } - - /** - * Run the given route within a Stack "onion" instance. - * - * @param \Illuminate\Routing\Route $route - * @param \Illuminate\Http\Request $request - * @return mixed - */ - protected function runRouteWithinStack(Route $route, Request $request) - { - $shouldSkipMiddleware = $this->container->bound('middleware.disable') && - $this->container->make('middleware.disable') === true; - - $middleware = $shouldSkipMiddleware ? [] : $this->gatherRouteMiddleware($route); - - return (new Pipeline($this->container)) - ->send($request) - ->through($middleware) - ->then(fn ($request) => $this->prepareResponse( - $request, $route->run() - )); - } - - /** - * Gather the middleware for the given route with resolved class names. - * - * @param \Illuminate\Routing\Route $route - * @return array - */ - public function gatherRouteMiddleware(Route $route) - { - return $this->resolveMiddleware($route->gatherMiddleware(), $route->excludedMiddleware()); - } - - /** - * Resolve a flat array of middleware classes from the provided array. - * - * @param array $middleware - * @param array $excluded - * @return array - */ - public function resolveMiddleware(array $middleware, array $excluded = []) - { - $excluded = collect($excluded)->map(function ($name) { - return (array) MiddlewareNameResolver::resolve($name, $this->middleware, $this->middlewareGroups); - })->flatten()->values()->all(); - - $middleware = collect($middleware)->map(function ($name) { - return (array) MiddlewareNameResolver::resolve($name, $this->middleware, $this->middlewareGroups); - })->flatten()->reject(function ($name) use ($excluded) { - if (empty($excluded)) { - return false; - } - - if ($name instanceof Closure) { - return false; - } - - if (in_array($name, $excluded, true)) { - return true; - } - - if (! class_exists($name)) { - return false; - } - - $reflection = new ReflectionClass($name); - - return collect($excluded)->contains( - fn ($exclude) => class_exists($exclude) && $reflection->isSubclassOf($exclude) - ); - })->values(); - - return $this->sortMiddleware($middleware); - } - - /** - * Sort the given middleware by priority. - * - * @param \Illuminate\Support\Collection $middlewares - * @return array - */ - protected function sortMiddleware(Collection $middlewares) - { - return (new SortedMiddleware($this->middlewarePriority, $middlewares))->all(); - } - - /** - * Create a response instance from the given value. - * - * @param \Symfony\Component\HttpFoundation\Request $request - * @param mixed $response - * @return \Symfony\Component\HttpFoundation\Response - */ - public function prepareResponse($request, $response) - { - $this->events->dispatch(new PreparingResponse($request, $response)); - - return tap(static::toResponse($request, $response), function ($response) use ($request) { - $this->events->dispatch(new ResponsePrepared($request, $response)); - }); - } - - /** - * Static version of prepareResponse. - * - * @param \Symfony\Component\HttpFoundation\Request $request - * @param mixed $response - * @return \Symfony\Component\HttpFoundation\Response - */ - public static function toResponse($request, $response) - { - if ($response instanceof Responsable) { - $response = $response->toResponse($request); - } - - if ($response instanceof PsrResponseInterface) { - $response = (new HttpFoundationFactory)->createResponse($response); - } elseif ($response instanceof Model && $response->wasRecentlyCreated) { - $response = new JsonResponse($response, 201); - } elseif ($response instanceof Stringable) { - $response = new Response($response->__toString(), 200, ['Content-Type' => 'text/html']); - } elseif (! $response instanceof SymfonyResponse && - ($response instanceof Arrayable || - $response instanceof Jsonable || - $response instanceof ArrayObject || - $response instanceof JsonSerializable || - $response instanceof stdClass || - is_array($response))) { - $response = new JsonResponse($response); - } elseif (! $response instanceof SymfonyResponse) { - $response = new Response($response, 200, ['Content-Type' => 'text/html']); - } - - if ($response->getStatusCode() === Response::HTTP_NOT_MODIFIED) { - $response->setNotModified(); - } - - return $response->prepare($request); - } - - /** - * Substitute the route bindings onto the route. - * - * @param \Illuminate\Routing\Route $route - * @return \Illuminate\Routing\Route - * - * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> - * @throws \Illuminate\Routing\Exceptions\BackedEnumCaseNotFoundException - */ - public function substituteBindings($route) - { - foreach ($route->parameters() as $key => $value) { - if (isset($this->binders[$key])) { - $route->setParameter($key, $this->performBinding($key, $value, $route)); - } - } - - return $route; - } - - /** - * Substitute the implicit route bindings for the given route. - * - * @param \Illuminate\Routing\Route $route - * @return void - * - * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> - * @throws \Illuminate\Routing\Exceptions\BackedEnumCaseNotFoundException - */ - public function substituteImplicitBindings($route) - { - $default = fn () => ImplicitRouteBinding::resolveForRoute($this->container, $route); - - return call_user_func( - $this->implicitBindingCallback ?? $default, $this->container, $route, $default - ); - } - - /** - * Register a callback to to run after implicit bindings are substituted. - * - * @param callable $callback - * @return $this - */ - public function substituteImplicitBindingsUsing($callback) - { - $this->implicitBindingCallback = $callback; - - return $this; - } - - /** - * Call the binding callback for the given key. - * - * @param string $key - * @param string $value - * @param \Illuminate\Routing\Route $route - * @return mixed - * - * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> - */ - protected function performBinding($key, $value, $route) - { - return call_user_func($this->binders[$key], $value, $route); - } - - /** - * Register a route matched event listener. - * - * @param string|callable $callback - * @return void - */ - public function matched($callback) - { - $this->events->listen(Events\RouteMatched::class, $callback); - } - - /** - * Get all of the defined middleware short-hand names. - * - * @return array - */ - public function getMiddleware() - { - return $this->middleware; - } - - /** - * Register a short-hand name for a middleware. - * - * @param string $name - * @param string $class - * @return $this - */ - public function aliasMiddleware($name, $class) - { - $this->middleware[$name] = $class; - - return $this; - } - - /** - * Check if a middlewareGroup with the given name exists. - * - * @param string $name - * @return bool - */ - public function hasMiddlewareGroup($name) - { - return array_key_exists($name, $this->middlewareGroups); - } - - /** - * Get all of the defined middleware groups. - * - * @return array - */ - public function getMiddlewareGroups() - { - return $this->middlewareGroups; - } - - /** - * Register a group of middleware. - * - * @param string $name - * @param array $middleware - * @return $this - */ - public function middlewareGroup($name, array $middleware) - { - $this->middlewareGroups[$name] = $middleware; - - return $this; - } - - /** - * Add a middleware to the beginning of a middleware group. - * - * If the middleware is already in the group, it will not be added again. - * - * @param string $group - * @param string $middleware - * @return $this - */ - public function prependMiddlewareToGroup($group, $middleware) - { - if (isset($this->middlewareGroups[$group]) && ! in_array($middleware, $this->middlewareGroups[$group])) { - array_unshift($this->middlewareGroups[$group], $middleware); - } - - return $this; - } - - /** - * Add a middleware to the end of a middleware group. - * - * If the middleware is already in the group, it will not be added again. - * - * @param string $group - * @param string $middleware - * @return $this - */ - public function pushMiddlewareToGroup($group, $middleware) - { - if (! array_key_exists($group, $this->middlewareGroups)) { - $this->middlewareGroups[$group] = []; - } - - if (! in_array($middleware, $this->middlewareGroups[$group])) { - $this->middlewareGroups[$group][] = $middleware; - } - - return $this; - } - - /** - * Remove the given middleware from the specified group. - * - * @param string $group - * @param string $middleware - * @return $this - */ - public function removeMiddlewareFromGroup($group, $middleware) - { - if (! $this->hasMiddlewareGroup($group)) { - return $this; - } - - $reversedMiddlewaresArray = array_flip($this->middlewareGroups[$group]); - - if (! array_key_exists($middleware, $reversedMiddlewaresArray)) { - return $this; - } - - $middlewareKey = $reversedMiddlewaresArray[$middleware]; - - unset($this->middlewareGroups[$group][$middlewareKey]); - - return $this; - } - - /** - * Flush the router's middleware groups. - * - * @return $this - */ - public function flushMiddlewareGroups() - { - $this->middlewareGroups = []; - - return $this; - } - - /** - * Add a new route parameter binder. - * - * @param string $key - * @param string|callable $binder - * @return void - */ - public function bind($key, $binder) - { - $this->binders[str_replace('-', '_', $key)] = RouteBinding::forCallback( - $this->container, $binder - ); - } - - /** - * Register a model binder for a wildcard. - * - * @param string $key - * @param string $class - * @param \Closure|null $callback - * @return void - */ - public function model($key, $class, ?Closure $callback = null) - { - $this->bind($key, RouteBinding::forModel($this->container, $class, $callback)); - } - - /** - * Get the binding callback for a given binding. - * - * @param string $key - * @return \Closure|null - */ - public function getBindingCallback($key) - { - if (isset($this->binders[$key = str_replace('-', '_', $key)])) { - return $this->binders[$key]; - } - } - - /** - * Get the global "where" patterns. - * - * @return array - */ - public function getPatterns() - { - return $this->patterns; - } - - /** - * Set a global where pattern on all routes. - * - * @param string $key - * @param string $pattern - * @return void - */ - public function pattern($key, $pattern) - { - $this->patterns[$key] = $pattern; - } - - /** - * Set a group of global where patterns on all routes. - * - * @param array $patterns - * @return void - */ - public function patterns($patterns) - { - foreach ($patterns as $key => $pattern) { - $this->pattern($key, $pattern); - } - } - - /** - * Determine if the router currently has a group stack. - * - * @return bool - */ - public function hasGroupStack() - { - return ! empty($this->groupStack); - } - - /** - * Get the current group stack for the router. - * - * @return array - */ - public function getGroupStack() - { - return $this->groupStack; - } - - /** - * Get a route parameter for the current route. - * - * @param string $key - * @param string|null $default - * @return mixed - */ - public function input($key, $default = null) - { - return $this->current()->parameter($key, $default); - } - - /** - * Get the request currently being dispatched. - * - * @return \Illuminate\Http\Request - */ - public function getCurrentRequest() - { - return $this->currentRequest; - } - - /** - * Get the currently dispatched route instance. - * - * @return \Illuminate\Routing\Route|null - */ - public function getCurrentRoute() - { - return $this->current(); - } - - /** - * Get the currently dispatched route instance. - * - * @return \Illuminate\Routing\Route|null - */ - public function current() - { - return $this->current; - } - - /** - * Check if a route with the given name exists. - * - * @param string|array $name - * @return bool - */ - public function has($name) - { - $names = is_array($name) ? $name : func_get_args(); - - foreach ($names as $value) { - if (! $this->routes->hasNamedRoute($value)) { - return false; - } - } - - return true; - } - - /** - * Get the current route name. - * - * @return string|null - */ - public function currentRouteName() - { - return $this->current() ? $this->current()->getName() : null; - } - - /** - * Alias for the "currentRouteNamed" method. - * - * @param mixed ...$patterns - * @return bool - */ - public function is(...$patterns) - { - return $this->currentRouteNamed(...$patterns); - } - - /** - * Determine if the current route matches a pattern. - * - * @param mixed ...$patterns - * @return bool - */ - public function currentRouteNamed(...$patterns) - { - return $this->current() && $this->current()->named(...$patterns); - } - - /** - * Get the current route action. - * - * @return string|null - */ - public function currentRouteAction() - { - if ($this->current()) { - return $this->current()->getAction()['controller'] ?? null; - } - } - - /** - * Alias for the "currentRouteUses" method. - * - * @param array ...$patterns - * @return bool - */ - public function uses(...$patterns) - { - foreach ($patterns as $pattern) { - if (Str::is($pattern, $this->currentRouteAction())) { - return true; - } - } - - return false; - } - - /** - * Determine if the current route action matches a given action. - * - * @param string $action - * @return bool - */ - public function currentRouteUses($action) - { - return $this->currentRouteAction() == $action; - } - - /** - * Set the unmapped global resource parameters to singular. - * - * @param bool $singular - * @return void - */ - public function singularResourceParameters($singular = true) - { - ResourceRegistrar::singularParameters($singular); - } - - /** - * Set the global resource parameter mapping. - * - * @param array $parameters - * @return void - */ - public function resourceParameters(array $parameters = []) - { - ResourceRegistrar::setParameters($parameters); - } - - /** - * Get or set the verbs used in the resource URIs. - * - * @param array $verbs - * @return array|null - */ - public function resourceVerbs(array $verbs = []) - { - return ResourceRegistrar::verbs($verbs); - } - - /** - * Get the underlying route collection. - * - * @return \Illuminate\Routing\RouteCollectionInterface - */ - public function getRoutes() - { - return $this->routes; - } - - /** - * Set the route collection instance. - * - * @param \Illuminate\Routing\RouteCollection $routes - * @return void - */ - public function setRoutes(RouteCollection $routes) - { - foreach ($routes as $route) { - $route->setRouter($this)->setContainer($this->container); - } - - $this->routes = $routes; - - $this->container->instance('routes', $this->routes); - } - - /** - * Set the compiled route collection instance. - * - * @param array $routes - * @return void - */ - public function setCompiledRoutes(array $routes) - { - $this->routes = (new CompiledRouteCollection($routes['compiled'], $routes['attributes'])) - ->setRouter($this) - ->setContainer($this->container); - - $this->container->instance('routes', $this->routes); - } - - /** - * Remove any duplicate middleware from the given array. - * - * @param array $middleware - * @return array - */ - public static function uniqueMiddleware(array $middleware) - { - $seen = []; - $result = []; - - foreach ($middleware as $value) { - $key = \is_object($value) ? \spl_object_id($value) : $value; - - if (! isset($seen[$key])) { - $seen[$key] = true; - $result[] = $value; - } - } - - return $result; - } - - /** - * Set the container instance used by the router. - * - * @param \Illuminate\Container\Container $container - * @return $this - */ - public function setContainer(Container $container) - { - $this->container = $container; - - return $this; - } - - /** - * Dynamically handle calls into the router instance. - * - * @param string $method - * @param array $parameters - * @return mixed - */ - public function __call($method, $parameters) - { - if (static::hasMacro($method)) { - return $this->macroCall($method, $parameters); - } - - if ($method === 'middleware') { - return (new RouteRegistrar($this))->attribute($method, is_array($parameters[0]) ? $parameters[0] : $parameters); - } - - if ($method !== 'where' && Str::startsWith($method, 'where')) { - return (new RouteRegistrar($this))->{$method}(...$parameters); - } - - return (new RouteRegistrar($this))->attribute($method, array_key_exists(0, $parameters) ? $parameters[0] : true); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Session/DatabaseSessionHandler.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Session/DatabaseSessionHandler.php deleted file mode 100644 index 0770c22f..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Session/DatabaseSessionHandler.php +++ /dev/null @@ -1,319 +0,0 @@ -table = $table; - $this->minutes = $minutes; - $this->container = $container; - $this->connection = $connection; - } - - /** - * {@inheritdoc} - * - * @return bool - */ - public function open($savePath, $sessionName): bool - { - return true; - } - - /** - * {@inheritdoc} - * - * @return bool - */ - public function close(): bool - { - return true; - } - - /** - * {@inheritdoc} - * - * @return string|false - */ - public function read($sessionId): string|false - { - $session = (object) $this->getQuery()->find($sessionId); - - if ($this->expired($session)) { - $this->exists = true; - - return ''; - } - - if (isset($session->payload)) { - $this->exists = true; - - return base64_decode($session->payload); - } - - return ''; - } - - /** - * Determine if the session is expired. - * - * @param \stdClass $session - * @return bool - */ - protected function expired($session) - { - return isset($session->last_activity) && - $session->last_activity < Carbon::now()->subMinutes($this->minutes)->getTimestamp(); - } - - /** - * {@inheritdoc} - * - * @return bool - */ - public function write($sessionId, $data): bool - { - $payload = $this->getDefaultPayload($data); - - if (! $this->exists) { - $this->read($sessionId); - } - - if ($this->exists) { - $this->performUpdate($sessionId, $payload); - } else { - $this->performInsert($sessionId, $payload); - } - - return $this->exists = true; - } - - /** - * Perform an insert operation on the session ID. - * - * @param string $sessionId - * @param array $payload - * @return bool|null - */ - protected function performInsert($sessionId, $payload) - { - try { - return $this->getQuery()->insert(Arr::set($payload, 'id', $sessionId)); - } catch (QueryException) { - $this->performUpdate($sessionId, $payload); - } - } - - /** - * Perform an update operation on the session ID. - * - * @param string $sessionId - * @param array $payload - * @return int - */ - protected function performUpdate($sessionId, $payload) - { - return $this->getQuery()->where('id', $sessionId)->update($payload); - } - - /** - * Get the default payload for the session. - * - * @param string $data - * @return array - */ - protected function getDefaultPayload($data) - { - $payload = [ - 'payload' => base64_encode($data), - 'last_activity' => $this->currentTime(), - ]; - - if (! $this->container) { - return $payload; - } - - return tap($payload, function (&$payload) { - $this->addUserInformation($payload) - ->addRequestInformation($payload); - }); - } - - /** - * Add the user information to the session payload. - * - * @param array $payload - * @return $this - */ - protected function addUserInformation(&$payload) - { - if ($this->container->bound(Guard::class)) { - $payload['user_id'] = $this->userId(); - } - - return $this; - } - - /** - * Get the currently authenticated user's ID. - * - * @return mixed - */ - protected function userId() - { - return $this->container->make(Guard::class)->id(); - } - - /** - * Add the request information to the session payload. - * - * @param array $payload - * @return $this - */ - protected function addRequestInformation(&$payload) - { - if ($this->container->bound('request')) { - $payload = array_merge($payload, [ - 'ip_address' => $this->ipAddress(), - 'user_agent' => $this->userAgent(), - ]); - } - - return $this; - } - - /** - * Get the IP address for the current request. - * - * @return string|null - */ - protected function ipAddress() - { - return $this->container->make('request')->ip(); - } - - /** - * Get the user agent for the current request. - * - * @return string - */ - protected function userAgent() - { - return substr((string) $this->container->make('request')->header('User-Agent'), 0, 500); - } - - /** - * {@inheritdoc} - * - * @return bool - */ - public function destroy($sessionId): bool - { - $this->getQuery()->where('id', $sessionId)->delete(); - - return true; - } - - /** - * {@inheritdoc} - * - * @return int - */ - public function gc($lifetime): int - { - return $this->getQuery()->where('last_activity', '<=', $this->currentTime() - $lifetime)->delete(); - } - - /** - * Get a fresh query builder instance for the table. - * - * @return \Illuminate\Database\Query\Builder - */ - protected function getQuery() - { - return $this->connection->table($this->table); - } - - /** - * Set the application instance used by the handler. - * - * @param \Illuminate\Contracts\Foundation\Application $container - * @return $this - */ - public function setContainer($container) - { - $this->container = $container; - - return $this; - } - - /** - * Set the existence state for the session. - * - * @param bool $value - * @return $this - */ - public function setExists($value) - { - $this->exists = $value; - - return $this; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php deleted file mode 100644 index f4671ade..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php +++ /dev/null @@ -1,306 +0,0 @@ -manager = $manager; - $this->cacheFactoryResolver = $cacheFactoryResolver; - } - - /** - * Handle an incoming request. - * - * @param \Illuminate\Http\Request $request - * @param \Closure $next - * @return mixed - */ - public function handle($request, Closure $next) - { - if (! $this->sessionConfigured()) { - return $next($request); - } - - $session = $this->getSession($request); - - if ($this->manager->shouldBlock() || - ($request->route() instanceof Route && $request->route()->locksFor())) { - return $this->handleRequestWhileBlocking($request, $session, $next); - } - - return $this->handleStatefulRequest($request, $session, $next); - } - - /** - * Handle the given request within session state. - * - * @param \Illuminate\Http\Request $request - * @param \Illuminate\Contracts\Session\Session $session - * @param \Closure $next - * @return mixed - */ - protected function handleRequestWhileBlocking(Request $request, $session, Closure $next) - { - if (! $request->route() instanceof Route) { - return; - } - - $lockFor = $request->route() && $request->route()->locksFor() - ? $request->route()->locksFor() - : $this->manager->defaultRouteBlockLockSeconds(); - - $lock = $this->cache($this->manager->blockDriver()) - ->lock('session:'.$session->getId(), $lockFor) - ->betweenBlockedAttemptsSleepFor(50); - - try { - $lock->block( - ! is_null($request->route()->waitsFor()) - ? $request->route()->waitsFor() - : $this->manager->defaultRouteBlockWaitSeconds() - ); - - return $this->handleStatefulRequest($request, $session, $next); - } finally { - $lock?->release(); - } - } - - /** - * Handle the given request within session state. - * - * @param \Illuminate\Http\Request $request - * @param \Illuminate\Contracts\Session\Session $session - * @param \Closure $next - * @return mixed - */ - protected function handleStatefulRequest(Request $request, $session, Closure $next) - { - // If a session driver has been configured, we will need to start the session here - // so that the data is ready for an application. Note that the Laravel sessions - // do not make use of PHP "native" sessions in any way since they are crappy. - $request->setLaravelSession( - $this->startSession($request, $session) - ); - - $this->collectGarbage($session); - - $response = $next($request); - - $this->storeCurrentUrl($request, $session); - - $this->addCookieToResponse($response, $session); - - // Again, if the session has been configured we will need to close out the session - // so that the attributes may be persisted to some storage medium. We will also - // add the session identifier cookie to the application response headers now. - $this->saveSession($request); - - return $response; - } - - /** - * Start the session for the given request. - * - * @param \Illuminate\Http\Request $request - * @param \Illuminate\Contracts\Session\Session $session - * @return \Illuminate\Contracts\Session\Session - */ - protected function startSession(Request $request, $session) - { - return tap($session, function ($session) use ($request) { - $session->setRequestOnHandler($request); - - $session->start(); - }); - } - - /** - * Get the session implementation from the manager. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Contracts\Session\Session - */ - public function getSession(Request $request) - { - return tap($this->manager->driver(), function ($session) use ($request) { - $session->setId($request->cookies->get($session->getName())); - }); - } - - /** - * Remove the garbage from the session if necessary. - * - * @param \Illuminate\Contracts\Session\Session $session - * @return void - */ - protected function collectGarbage(Session $session) - { - $config = $this->manager->getSessionConfig(); - - // Here we will see if this request hits the garbage collection lottery by hitting - // the odds needed to perform garbage collection on any given request. If we do - // hit it, we'll call this handler to let it delete all the expired sessions. - if ($this->configHitsLottery($config)) { - $session->getHandler()->gc($this->getSessionLifetimeInSeconds()); - } - } - - /** - * Determine if the configuration odds hit the lottery. - * - * @param array $config - * @return bool - */ - protected function configHitsLottery(array $config) - { - return random_int(1, $config['lottery'][1]) <= $config['lottery'][0]; - } - - /** - * Store the current URL for the request if necessary. - * - * @param \Illuminate\Http\Request $request - * @param \Illuminate\Contracts\Session\Session $session - * @return void - */ - protected function storeCurrentUrl(Request $request, $session) - { - if ($request->isMethod('GET') && - $request->route() instanceof Route && - ! $request->ajax() && - ! $request->prefetch() && - ! $request->isPrecognitive()) { - $session->setPreviousUrl($request->fullUrl()); - } - } - - /** - * Add the session cookie to the application response. - * - * @param \Symfony\Component\HttpFoundation\Response $response - * @param \Illuminate\Contracts\Session\Session $session - * @return void - */ - protected function addCookieToResponse(Response $response, Session $session) - { - if ($this->sessionIsPersistent($config = $this->manager->getSessionConfig())) { - $response->headers->setCookie(new Cookie( - $session->getName(), - $session->getId(), - $this->getCookieExpirationDate(), - $config['path'], - $config['domain'], - $config['secure'] ?? false, - $config['http_only'] ?? true, - false, - $config['same_site'] ?? null, - $config['partitioned'] ?? false - )); - } - } - - /** - * Save the session data to storage. - * - * @param \Illuminate\Http\Request $request - * @return void - */ - protected function saveSession($request) - { - if (! $request->isPrecognitive()) { - $this->manager->driver()->save(); - } - } - - /** - * Get the session lifetime in seconds. - * - * @return int - */ - protected function getSessionLifetimeInSeconds() - { - return ($this->manager->getSessionConfig()['lifetime'] ?? null) * 60; - } - - /** - * Get the cookie lifetime in seconds. - * - * @return \DateTimeInterface|int - */ - protected function getCookieExpirationDate() - { - $config = $this->manager->getSessionConfig(); - - return $config['expire_on_close'] ? 0 : Date::instance( - Carbon::now()->addRealMinutes($config['lifetime']) - ); - } - - /** - * Determine if a session driver has been configured. - * - * @return bool - */ - protected function sessionConfigured() - { - return ! is_null($this->manager->getSessionConfig()['driver'] ?? null); - } - - /** - * Determine if the configured session driver is persistent. - * - * @param array|null $config - * @return bool - */ - protected function sessionIsPersistent(?array $config = null) - { - $config = $config ?: $this->manager->getSessionConfig(); - - return ! is_null($config['driver'] ?? null); - } - - /** - * Resolve the given cache driver. - * - * @param string $driver - * @return \Illuminate\Cache\Store - */ - protected function cache($driver) - { - return call_user_func($this->cacheFactoryResolver)->driver($driver); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Session/SymfonySessionDecorator.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Session/SymfonySessionDecorator.php deleted file mode 100644 index 1dd8455d..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Session/SymfonySessionDecorator.php +++ /dev/null @@ -1,200 +0,0 @@ -store = $store; - } - - /** - * {@inheritdoc} - */ - public function start(): bool - { - return $this->store->start(); - } - - /** - * {@inheritdoc} - */ - public function getId(): string - { - return $this->store->getId(); - } - - /** - * {@inheritdoc} - * - * @return void - */ - public function setId(string $id) - { - $this->store->setId($id); - } - - /** - * {@inheritdoc} - */ - public function getName(): string - { - return $this->store->getName(); - } - - /** - * {@inheritdoc} - * - * @return void - */ - public function setName(string $name) - { - $this->store->setName($name); - } - - /** - * {@inheritdoc} - */ - public function invalidate(?int $lifetime = null): bool - { - $this->store->invalidate(); - - return true; - } - - /** - * {@inheritdoc} - */ - public function migrate(bool $destroy = false, ?int $lifetime = null): bool - { - $this->store->migrate($destroy); - - return true; - } - - /** - * {@inheritdoc} - * - * @return void - */ - public function save() - { - $this->store->save(); - } - - /** - * {@inheritdoc} - */ - public function has(string $name): bool - { - return $this->store->has($name); - } - - /** - * {@inheritdoc} - */ - public function get(string $name, mixed $default = null): mixed - { - return $this->store->get($name, $default); - } - - /** - * {@inheritdoc} - * - * @return void - */ - public function set(string $name, mixed $value) - { - $this->store->put($name, $value); - } - - /** - * {@inheritdoc} - */ - public function all(): array - { - return $this->store->all(); - } - - /** - * {@inheritdoc} - * - * @return void - */ - public function replace(array $attributes) - { - $this->store->replace($attributes); - } - - /** - * {@inheritdoc} - */ - public function remove(string $name): mixed - { - return $this->store->remove($name); - } - - /** - * {@inheritdoc} - * - * @return void - */ - public function clear() - { - $this->store->flush(); - } - - /** - * {@inheritdoc} - */ - public function isStarted(): bool - { - return $this->store->isStarted(); - } - - /** - * {@inheritdoc} - * - * @return void - */ - public function registerBag(SessionBagInterface $bag) - { - throw new BadMethodCallException('Method not implemented by Laravel.'); - } - - /** - * {@inheritdoc} - */ - public function getBag(string $name): SessionBagInterface - { - throw new BadMethodCallException('Method not implemented by Laravel.'); - } - - /** - * {@inheritdoc} - */ - public function getMetadataBag(): MetadataBag - { - throw new BadMethodCallException('Method not implemented by Laravel.'); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Support/Composer.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Support/Composer.php deleted file mode 100644 index ad976c0d..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Support/Composer.php +++ /dev/null @@ -1,256 +0,0 @@ -files = $files; - $this->workingPath = $workingPath; - } - - /** - * Determine if the given Composer package is installed. - * - * @param string $package - * @return bool - * - * @throw \RuntimeException - */ - protected function hasPackage($package) - { - $composer = json_decode(file_get_contents($this->findComposerFile()), true); - - return array_key_exists($package, $composer['require'] ?? []) - || array_key_exists($package, $composer['require-dev'] ?? []); - } - - /** - * Install the given Composer packages into the application. - * - * @param array $packages - * @param bool $dev - * @param \Closure|\Symfony\Component\Console\Output\OutputInterface|null $output - * @param string|null $composerBinary - * @return bool - */ - public function requirePackages(array $packages, bool $dev = false, Closure|OutputInterface|null $output = null, $composerBinary = null) - { - $command = collect([ - ...$this->findComposer($composerBinary), - 'require', - ...$packages, - ]) - ->when($dev, function ($command) { - $command->push('--dev'); - })->all(); - - return 0 === $this->getProcess($command, ['COMPOSER_MEMORY_LIMIT' => '-1']) - ->run( - $output instanceof OutputInterface - ? function ($type, $line) use ($output) { - $output->write(' '.$line); - } : $output - ); - } - - /** - * Remove the given Composer packages from the application. - * - * @param array $packages - * @param bool $dev - * @param \Closure|\Symfony\Component\Console\Output\OutputInterface|null $output - * @param string|null $composerBinary - * @return bool - */ - public function removePackages(array $packages, bool $dev = false, Closure|OutputInterface|null $output = null, $composerBinary = null) - { - $command = collect([ - ...$this->findComposer($composerBinary), - 'remove', - ...$packages, - ]) - ->when($dev, function ($command) { - $command->push('--dev'); - })->all(); - - return 0 === $this->getProcess($command, ['COMPOSER_MEMORY_LIMIT' => '-1']) - ->run( - $output instanceof OutputInterface - ? function ($type, $line) use ($output) { - $output->write(' '.$line); - } : $output - ); - } - - /** - * Modify the "composer.json" file contents using the given callback. - * - * @param callable(array):array $callback - * @return void - * - * @throw \RuntimeException - */ - public function modify(callable $callback) - { - $composerFile = $this->findComposerFile(); - - $composer = json_decode(file_get_contents($composerFile), true, 512, JSON_THROW_ON_ERROR); - - file_put_contents( - $composerFile, - json_encode( - call_user_func($callback, $composer), - JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE - ) - ); - } - - /** - * Regenerate the Composer autoloader files. - * - * @param string|array $extra - * @param string|null $composerBinary - * @return int - */ - public function dumpAutoloads($extra = '', $composerBinary = null) - { - $extra = $extra ? (array) $extra : []; - - $command = array_merge($this->findComposer($composerBinary), ['dump-autoload'], $extra); - - return $this->getProcess($command)->run(); - } - - /** - * Regenerate the optimized Composer autoloader files. - * - * @param string|null $composerBinary - * @return int - */ - public function dumpOptimized($composerBinary = null) - { - return $this->dumpAutoloads('--optimize', $composerBinary); - } - - /** - * Get the Composer binary / command for the environment. - * - * @param string|null $composerBinary - * @return array - */ - public function findComposer($composerBinary = null) - { - if (! is_null($composerBinary) && $this->files->exists($composerBinary)) { - return [$this->phpBinary(), $composerBinary]; - } elseif ($this->files->exists($this->workingPath.'/composer.phar')) { - return [$this->phpBinary(), 'composer.phar']; - } - - return ['composer']; - } - - /** - * Get the path to the "composer.json" file. - * - * @return string - * - * @throw \RuntimeException - */ - protected function findComposerFile() - { - $composerFile = "{$this->workingPath}/composer.json"; - - if (! file_exists($composerFile)) { - throw new RuntimeException("Unable to locate `composer.json` file at [{$this->workingPath}]."); - } - - return $composerFile; - } - - /** - * Get the PHP binary. - * - * @return string - */ - protected function phpBinary() - { - return ProcessUtils::escapeArgument((new PhpExecutableFinder)->find(false)); - } - - /** - * Get a new Symfony process instance. - * - * @param array $command - * @param array $env - * @return \Symfony\Component\Process\Process - */ - protected function getProcess(array $command, array $env = []) - { - return (new Process($command, $this->workingPath, $env))->setTimeout(null); - } - - /** - * Set the working path used by the class. - * - * @param string $path - * @return $this - */ - public function setWorkingPath($path) - { - $this->workingPath = realpath($path); - - return $this; - } - - /** - * Get the version of Composer. - * - * @return string|null - */ - public function getVersion() - { - $command = array_merge($this->findComposer(), ['-V', '--no-ansi']); - - $process = $this->getProcess($command); - - $process->run(); - - $output = $process->getOutput(); - - if (preg_match('/(\d+(\.\d+){2})/', $output, $version)) { - return $version[1]; - } - - return explode(' ', $output)[2] ?? null; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Support/Facades/Bus.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Support/Facades/Bus.php deleted file mode 100644 index 6c22e027..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Support/Facades/Bus.php +++ /dev/null @@ -1,97 +0,0 @@ -dispatcher - : static::getFacadeRoot(); - - return tap(new BusFake($actualDispatcher, $jobsToFake, $batchRepository), function ($fake) { - static::swap($fake); - }); - } - - /** - * Dispatch the given chain of jobs. - * - * @param array|mixed $jobs - * @return \Illuminate\Foundation\Bus\PendingDispatch - */ - public static function dispatchChain($jobs) - { - $jobs = is_array($jobs) ? $jobs : func_get_args(); - - return (new PendingChain(array_shift($jobs), $jobs)) - ->dispatch(); - } - - /** - * Get the registered name of the component. - * - * @return string - */ - protected static function getFacadeAccessor() - { - return BusDispatcherContract::class; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Support/Facades/File.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Support/Facades/File.php deleted file mode 100755 index fd43b658..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Support/Facades/File.php +++ /dev/null @@ -1,72 +0,0 @@ - $route) { - $notifiable->route($channel, $route); - } - - return $notifiable; - } - - /** - * Begin sending a notification to an anonymous notifiable. - * - * @param string $channel - * @param mixed $route - * @return \Illuminate\Notifications\AnonymousNotifiable - */ - public static function route($channel, $route) - { - return (new AnonymousNotifiable)->route($channel, $route); - } - - /** - * Get the registered name of the component. - * - * @return string - */ - protected static function getFacadeAccessor() - { - return ChannelManager::class; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Support/Facades/Process.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Support/Facades/Process.php deleted file mode 100644 index 4f3546d0..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Support/Facades/Process.php +++ /dev/null @@ -1,74 +0,0 @@ -fake($callback)); - }); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Support/Sleep.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Support/Sleep.php deleted file mode 100644 index 54cefe63..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Support/Sleep.php +++ /dev/null @@ -1,483 +0,0 @@ - - */ - protected static $sequence = []; - - /** - * Indicates if the instance should sleep. - * - * @var bool - */ - protected $shouldSleep = true; - - /** - * Create a new class instance. - * - * @param int|float|\DateInterval $duration - * @return void - */ - public function __construct($duration) - { - $this->duration($duration); - } - - /** - * Sleep for the given duration. - * - * @param \DateInterval|int|float $duration - * @return static - */ - public static function for($duration) - { - return new static($duration); - } - - /** - * Sleep until the given timestamp. - * - * @param \DateTimeInterface|int|float|numeric-string $timestamp - * @return static - */ - public static function until($timestamp) - { - if (is_numeric($timestamp)) { - $timestamp = Carbon::createFromTimestamp($timestamp); - } - - return new static(Carbon::now()->diff($timestamp)); - } - - /** - * Sleep for the given number of microseconds. - * - * @param int $duration - * @return static - */ - public static function usleep($duration) - { - return (new static($duration))->microseconds(); - } - - /** - * Sleep for the given number of seconds. - * - * @param int|float $duration - * @return static - */ - public static function sleep($duration) - { - return (new static($duration))->seconds(); - } - - /** - * Sleep for the given duration. Replaces any previously defined duration. - * - * @param \DateInterval|int|float $duration - * @return $this - */ - protected function duration($duration) - { - if (! $duration instanceof DateInterval) { - $this->duration = CarbonInterval::microsecond(0); - - $this->pending = $duration; - } else { - $duration = CarbonInterval::instance($duration); - - if ($duration->totalMicroseconds < 0) { - $duration = CarbonInterval::seconds(0); - } - - $this->duration = $duration; - $this->pending = null; - } - - return $this; - } - - /** - * Sleep for the given number of minutes. - * - * @return $this - */ - public function minutes() - { - $this->duration->add('minutes', $this->pullPending()); - - return $this; - } - - /** - * Sleep for one minute. - * - * @return $this - */ - public function minute() - { - return $this->minutes(); - } - - /** - * Sleep for the given number of seconds. - * - * @return $this - */ - public function seconds() - { - $this->duration->add('seconds', $this->pullPending()); - - return $this; - } - - /** - * Sleep for one second. - * - * @return $this - */ - public function second() - { - return $this->seconds(); - } - - /** - * Sleep for the given number of milliseconds. - * - * @return $this - */ - public function milliseconds() - { - $this->duration->add('milliseconds', $this->pullPending()); - - return $this; - } - - /** - * Sleep for one millisecond. - * - * @return $this - */ - public function millisecond() - { - return $this->milliseconds(); - } - - /** - * Sleep for the given number of microseconds. - * - * @return $this - */ - public function microseconds() - { - $this->duration->add('microseconds', $this->pullPending()); - - return $this; - } - - /** - * Sleep for on microsecond. - * - * @return $this - */ - public function microsecond() - { - return $this->microseconds(); - } - - /** - * Add additional time to sleep for. - * - * @param int|float $duration - * @return $this - */ - public function and($duration) - { - $this->pending = $duration; - - return $this; - } - - /** - * Handle the object's destruction. - * - * @return void - */ - public function __destruct() - { - if (! $this->shouldSleep) { - return; - } - - if ($this->pending !== null) { - throw new RuntimeException('Unknown duration unit.'); - } - - if (static::$fake) { - static::$sequence[] = $this->duration; - - if (static::$syncWithCarbon) { - Carbon::setTestNow(Carbon::now()->add($this->duration)); - } - - foreach (static::$fakeSleepCallbacks as $callback) { - $callback($this->duration); - } - - return; - } - - $remaining = $this->duration->copy(); - - $seconds = (int) $remaining->totalSeconds; - - if ($seconds > 0) { - sleep($seconds); - - $remaining = $remaining->subSeconds($seconds); - } - - $microseconds = (int) $remaining->totalMicroseconds; - - if ($microseconds > 0) { - usleep($microseconds); - } - } - - /** - * Resolve the pending duration. - * - * @return int|float - */ - protected function pullPending() - { - if ($this->pending === null) { - $this->shouldNotSleep(); - - throw new RuntimeException('No duration specified.'); - } - - if ($this->pending < 0) { - $this->pending = 0; - } - - return tap($this->pending, function () { - $this->pending = null; - }); - } - - /** - * Stay awake and capture any attempts to sleep. - * - * @param bool $value - * @param bool $syncWithCarbon - * @return void - */ - public static function fake($value = true, $syncWithCarbon = false) - { - static::$fake = $value; - - static::$sequence = []; - static::$fakeSleepCallbacks = []; - static::$syncWithCarbon = $syncWithCarbon; - } - - /** - * Assert a given amount of sleeping occurred a specific number of times. - * - * @param \Closure $expected - * @param int $times - * @return void - */ - public static function assertSlept($expected, $times = 1) - { - $count = collect(static::$sequence)->filter($expected)->count(); - - PHPUnit::assertSame( - $times, - $count, - "The expected sleep was found [{$count}] times instead of [{$times}]." - ); - } - - /** - * Assert sleeping occurred a given number of times. - * - * @param int $expected - * @return void - */ - public static function assertSleptTimes($expected) - { - PHPUnit::assertSame($expected, $count = count(static::$sequence), "Expected [{$expected}] sleeps but found [{$count}]."); - } - - /** - * Assert the given sleep sequence was encountered. - * - * @param array $sequence - * @return void - */ - public static function assertSequence($sequence) - { - static::assertSleptTimes(count($sequence)); - - collect($sequence) - ->zip(static::$sequence) - ->eachSpread(function (?Sleep $expected, CarbonInterval $actual) { - if ($expected === null) { - return; - } - - PHPUnit::assertTrue( - $expected->shouldNotSleep()->duration->equalTo($actual), - vsprintf('Expected sleep duration of [%s] but actually slept for [%s].', [ - $expected->duration->cascade()->forHumans([ - 'options' => 0, - 'minimumUnit' => 'microsecond', - ]), - $actual->cascade()->forHumans([ - 'options' => 0, - 'minimumUnit' => 'microsecond', - ]), - ]) - ); - }); - } - - /** - * Assert that no sleeping occurred. - * - * @return void - */ - public static function assertNeverSlept() - { - return static::assertSleptTimes(0); - } - - /** - * Assert that no sleeping occurred. - * - * @return void - */ - public static function assertInsomniac() - { - if (static::$sequence === []) { - PHPUnit::assertTrue(true); - } - - foreach (static::$sequence as $duration) { - PHPUnit::assertSame(0, $duration->totalMicroseconds, vsprintf('Unexpected sleep duration of [%s] found.', [ - $duration->cascade()->forHumans([ - 'options' => 0, - 'minimumUnit' => 'microsecond', - ]), - ])); - } - } - - /** - * Indicate that the instance should not sleep. - * - * @return $this - */ - protected function shouldNotSleep() - { - $this->shouldSleep = false; - - return $this; - } - - /** - * Only sleep when the given condition is true. - * - * @param (\Closure($this): bool)|bool $condition - * @return $this - */ - public function when($condition) - { - $this->shouldSleep = (bool) value($condition, $this); - - return $this; - } - - /** - * Don't sleep when the given condition is true. - * - * @param (\Closure($this): bool)|bool $condition - * @return $this - */ - public function unless($condition) - { - return $this->when(! value($condition, $this)); - } - - /** - * Specify a callback that should be invoked when faking sleep within a test. - * - * @param callable $callback - * @return void - */ - public static function whenFakingSleep($callback) - { - static::$fakeSleepCallbacks[] = $callback; - } - - /** - * Indicate that Carbon's "now" should be kept in sync when sleeping. - * - * @return void - */ - public static function syncWithCarbon($value = true) - { - static::$syncWithCarbon = $value; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Support/Str.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Support/Str.php deleted file mode 100644 index d614ac62..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Support/Str.php +++ /dev/null @@ -1,1848 +0,0 @@ - $length - 1) { - return false; - } - - return mb_substr($subject, $index, 1); - } - - /** - * Determine if a given string contains a given substring. - * - * @param string $haystack - * @param string|iterable $needles - * @param bool $ignoreCase - * @return bool - */ - public static function contains($haystack, $needles, $ignoreCase = false) - { - if ($ignoreCase) { - $haystack = mb_strtolower($haystack); - } - - if (! is_iterable($needles)) { - $needles = (array) $needles; - } - - foreach ($needles as $needle) { - if ($ignoreCase) { - $needle = mb_strtolower($needle); - } - - if ($needle !== '' && str_contains($haystack, $needle)) { - return true; - } - } - - return false; - } - - /** - * Determine if a given string contains all array values. - * - * @param string $haystack - * @param iterable $needles - * @param bool $ignoreCase - * @return bool - */ - public static function containsAll($haystack, $needles, $ignoreCase = false) - { - foreach ($needles as $needle) { - if (! static::contains($haystack, $needle, $ignoreCase)) { - return false; - } - } - - return true; - } - - /** - * Convert the case of a string. - * - * @param string $string - * @param int $mode - * @param string|null $encoding - * @return string - */ - public static function convertCase(string $string, int $mode = MB_CASE_FOLD, ?string $encoding = 'UTF-8') - { - return mb_convert_case($string, $mode, $encoding); - } - - /** - * Determine if a given string ends with a given substring. - * - * @param string $haystack - * @param string|iterable $needles - * @return bool - */ - public static function endsWith($haystack, $needles) - { - if (! is_iterable($needles)) { - $needles = (array) $needles; - } - - foreach ($needles as $needle) { - if ((string) $needle !== '' && str_ends_with($haystack, $needle)) { - return true; - } - } - - return false; - } - - /** - * Extracts an excerpt from text that matches the first instance of a phrase. - * - * @param string $text - * @param string $phrase - * @param array $options - * @return string|null - */ - public static function excerpt($text, $phrase = '', $options = []) - { - $radius = $options['radius'] ?? 100; - $omission = $options['omission'] ?? '...'; - - preg_match('/^(.*?)('.preg_quote((string) $phrase, '/').')(.*)$/iu', (string) $text, $matches); - - if (empty($matches)) { - return null; - } - - $start = ltrim($matches[1]); - - $start = str(mb_substr($start, max(mb_strlen($start, 'UTF-8') - $radius, 0), $radius, 'UTF-8'))->ltrim()->unless( - fn ($startWithRadius) => $startWithRadius->exactly($start), - fn ($startWithRadius) => $startWithRadius->prepend($omission), - ); - - $end = rtrim($matches[3]); - - $end = str(mb_substr($end, 0, $radius, 'UTF-8'))->rtrim()->unless( - fn ($endWithRadius) => $endWithRadius->exactly($end), - fn ($endWithRadius) => $endWithRadius->append($omission), - ); - - return $start->append($matches[2], $end)->toString(); - } - - /** - * Cap a string with a single instance of a given value. - * - * @param string $value - * @param string $cap - * @return string - */ - public static function finish($value, $cap) - { - $quoted = preg_quote($cap, '/'); - - return preg_replace('/(?:'.$quoted.')+$/u', '', $value).$cap; - } - - /** - * Wrap the string with the given strings. - * - * @param string $value - * @param string $before - * @param string|null $after - * @return string - */ - public static function wrap($value, $before, $after = null) - { - return $before.$value.($after ??= $before); - } - - /** - * Unwrap the string with the given strings. - * - * @param string $value - * @param string $before - * @param string|null $after - * @return string - */ - public static function unwrap($value, $before, $after = null) - { - if (static::startsWith($value, $before)) { - $value = static::substr($value, static::length($before)); - } - - if (static::endsWith($value, $after ??= $before)) { - $value = static::substr($value, 0, -static::length($after)); - } - - return $value; - } - - /** - * Determine if a given string matches a given pattern. - * - * @param string|iterable $pattern - * @param string $value - * @return bool - */ - public static function is($pattern, $value) - { - $value = (string) $value; - - if (! is_iterable($pattern)) { - $pattern = [$pattern]; - } - - foreach ($pattern as $pattern) { - $pattern = (string) $pattern; - - // If the given value is an exact match we can of course return true right - // from the beginning. Otherwise, we will translate asterisks and do an - // actual pattern match against the two strings to see if they match. - if ($pattern === $value) { - return true; - } - - $pattern = preg_quote($pattern, '#'); - - // Asterisks are translated into zero-or-more regular expression wildcards - // to make it convenient to check if the strings starts with the given - // pattern such as "library/*", making any string check convenient. - $pattern = str_replace('\*', '.*', $pattern); - - if (preg_match('#^'.$pattern.'\z#u', $value) === 1) { - return true; - } - } - - return false; - } - - /** - * Determine if a given string is 7 bit ASCII. - * - * @param string $value - * @return bool - */ - public static function isAscii($value) - { - return ASCII::is_ascii((string) $value); - } - - /** - * Determine if a given value is valid JSON. - * - * @param mixed $value - * @return bool - */ - public static function isJson($value) - { - if (! is_string($value)) { - return false; - } - - if (function_exists('json_validate')) { - return json_validate($value, 512); - } - - try { - json_decode($value, true, 512, JSON_THROW_ON_ERROR); - } catch (JsonException) { - return false; - } - - return true; - } - - /** - * Determine if a given value is a valid URL. - * - * @param mixed $value - * @param array $protocols - * @return bool - */ - public static function isUrl($value, array $protocols = []) - { - if (! is_string($value)) { - return false; - } - - $protocolList = empty($protocols) - ? 'aaa|aaas|about|acap|acct|acd|acr|adiumxtra|adt|afp|afs|aim|amss|android|appdata|apt|ark|attachment|aw|barion|beshare|bitcoin|bitcoincash|blob|bolo|browserext|calculator|callto|cap|cast|casts|chrome|chrome-extension|cid|coap|coap\+tcp|coap\+ws|coaps|coaps\+tcp|coaps\+ws|com-eventbrite-attendee|content|conti|crid|cvs|dab|data|dav|diaspora|dict|did|dis|dlna-playcontainer|dlna-playsingle|dns|dntp|dpp|drm|drop|dtn|dvb|ed2k|elsi|example|facetime|fax|feed|feedready|file|filesystem|finger|first-run-pen-experience|fish|fm|ftp|fuchsia-pkg|geo|gg|git|gizmoproject|go|gopher|graph|gtalk|h323|ham|hcap|hcp|http|https|hxxp|hxxps|hydrazone|iax|icap|icon|im|imap|info|iotdisco|ipn|ipp|ipps|irc|irc6|ircs|iris|iris\.beep|iris\.lwz|iris\.xpc|iris\.xpcs|isostore|itms|jabber|jar|jms|keyparc|lastfm|ldap|ldaps|leaptofrogans|lorawan|lvlt|magnet|mailserver|mailto|maps|market|message|mid|mms|modem|mongodb|moz|ms-access|ms-browser-extension|ms-calculator|ms-drive-to|ms-enrollment|ms-excel|ms-eyecontrolspeech|ms-gamebarservices|ms-gamingoverlay|ms-getoffice|ms-help|ms-infopath|ms-inputapp|ms-lockscreencomponent-config|ms-media-stream-id|ms-mixedrealitycapture|ms-mobileplans|ms-officeapp|ms-people|ms-project|ms-powerpoint|ms-publisher|ms-restoretabcompanion|ms-screenclip|ms-screensketch|ms-search|ms-search-repair|ms-secondary-screen-controller|ms-secondary-screen-setup|ms-settings|ms-settings-airplanemode|ms-settings-bluetooth|ms-settings-camera|ms-settings-cellular|ms-settings-cloudstorage|ms-settings-connectabledevices|ms-settings-displays-topology|ms-settings-emailandaccounts|ms-settings-language|ms-settings-location|ms-settings-lock|ms-settings-nfctransactions|ms-settings-notifications|ms-settings-power|ms-settings-privacy|ms-settings-proximity|ms-settings-screenrotation|ms-settings-wifi|ms-settings-workplace|ms-spd|ms-sttoverlay|ms-transit-to|ms-useractivityset|ms-virtualtouchpad|ms-visio|ms-walk-to|ms-whiteboard|ms-whiteboard-cmd|ms-word|msnim|msrp|msrps|mss|mtqp|mumble|mupdate|mvn|news|nfs|ni|nih|nntp|notes|ocf|oid|onenote|onenote-cmd|opaquelocktoken|openpgp4fpr|pack|palm|paparazzi|payto|pkcs11|platform|pop|pres|prospero|proxy|pwid|psyc|pttp|qb|query|redis|rediss|reload|res|resource|rmi|rsync|rtmfp|rtmp|rtsp|rtsps|rtspu|s3|secondlife|service|session|sftp|sgn|shttp|sieve|simpleledger|sip|sips|skype|smb|sms|smtp|snews|snmp|soap\.beep|soap\.beeps|soldat|spiffe|spotify|ssh|steam|stun|stuns|submit|svn|tag|teamspeak|tel|teliaeid|telnet|tftp|tg|things|thismessage|tip|tn3270|tool|ts3server|turn|turns|tv|udp|unreal|urn|ut2004|v-event|vemmi|ventrilo|videotex|vnc|view-source|wais|webcal|wpid|ws|wss|wtai|wyciwyg|xcon|xcon-userid|xfire|xmlrpc\.beep|xmlrpc\.beeps|xmpp|xri|ymsgr|z39\.50|z39\.50r|z39\.50s' - : implode('|', $protocols); - - /* - * This pattern is derived from Symfony\Component\Validator\Constraints\UrlValidator (5.0.7). - * - * (c) Fabien Potencier http://symfony.com - */ - $pattern = '~^ - (LARAVEL_PROTOCOLS):// # protocol - (((?:[\_\.\pL\pN-]|%[0-9A-Fa-f]{2})+:)?((?:[\_\.\pL\pN-]|%[0-9A-Fa-f]{2})+)@)? # basic auth - ( - ([\pL\pN\pS\-\_\.])+(\.?([\pL\pN]|xn\-\-[\pL\pN-]+)+\.?) # a domain name - | # or - \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} # an IP address - | # or - \[ - (?:(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){6})(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:::(?:(?:(?:[0-9a-f]{1,4})):){5})(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:[0-9a-f]{1,4})))?::(?:(?:(?:[0-9a-f]{1,4})):){4})(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,1}(?:(?:[0-9a-f]{1,4})))?::(?:(?:(?:[0-9a-f]{1,4})):){3})(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,2}(?:(?:[0-9a-f]{1,4})))?::(?:(?:(?:[0-9a-f]{1,4})):){2})(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,3}(?:(?:[0-9a-f]{1,4})))?::(?:(?:[0-9a-f]{1,4})):)(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,4}(?:(?:[0-9a-f]{1,4})))?::)(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,5}(?:(?:[0-9a-f]{1,4})))?::)(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,6}(?:(?:[0-9a-f]{1,4})))?::)))) - \] # an IPv6 address - ) - (:[0-9]+)? # a port (optional) - (?:/ (?:[\pL\pN\-._\~!$&\'()*+,;=:@]|%[0-9A-Fa-f]{2})* )* # a path - (?:\? (?:[\pL\pN\-._\~!$&\'\[\]()*+,;=:@/?]|%[0-9A-Fa-f]{2})* )? # a query (optional) - (?:\# (?:[\pL\pN\-._\~!$&\'()*+,;=:@/?]|%[0-9A-Fa-f]{2})* )? # a fragment (optional) - $~ixu'; - - return preg_match(str_replace('LARAVEL_PROTOCOLS', $protocolList, $pattern), $value) > 0; - } - - /** - * Determine if a given value is a valid UUID. - * - * @param mixed $value - * @return bool - */ - public static function isUuid($value) - { - if (! is_string($value)) { - return false; - } - - return preg_match('/^[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}$/D', $value) > 0; - } - - /** - * Determine if a given value is a valid ULID. - * - * @param mixed $value - * @return bool - */ - public static function isUlid($value) - { - if (! is_string($value)) { - return false; - } - - return Ulid::isValid($value); - } - - /** - * Convert a string to kebab case. - * - * @param string $value - * @return string - */ - public static function kebab($value) - { - return static::snake($value, '-'); - } - - /** - * Return the length of the given string. - * - * @param string $value - * @param string|null $encoding - * @return int - */ - public static function length($value, $encoding = null) - { - return mb_strlen($value, $encoding); - } - - /** - * Limit the number of characters in a string. - * - * @param string $value - * @param int $limit - * @param string $end - * @return string - */ - public static function limit($value, $limit = 100, $end = '...') - { - if (mb_strwidth($value, 'UTF-8') <= $limit) { - return $value; - } - - return rtrim(mb_strimwidth($value, 0, $limit, '', 'UTF-8')).$end; - } - - /** - * Convert the given string to lower-case. - * - * @param string $value - * @return string - */ - public static function lower($value) - { - return mb_strtolower($value, 'UTF-8'); - } - - /** - * Limit the number of words in a string. - * - * @param string $value - * @param int $words - * @param string $end - * @return string - */ - public static function words($value, $words = 100, $end = '...') - { - preg_match('/^\s*+(?:\S++\s*+){1,'.$words.'}/u', $value, $matches); - - if (! isset($matches[0]) || static::length($value) === static::length($matches[0])) { - return $value; - } - - return rtrim($matches[0]).$end; - } - - /** - * Converts GitHub flavored Markdown into HTML. - * - * @param string $string - * @param array $options - * @return string - */ - public static function markdown($string, array $options = []) - { - $converter = new GithubFlavoredMarkdownConverter($options); - - return (string) $converter->convert($string); - } - - /** - * Converts inline Markdown into HTML. - * - * @param string $string - * @param array $options - * @return string - */ - public static function inlineMarkdown($string, array $options = []) - { - $environment = new Environment($options); - - $environment->addExtension(new GithubFlavoredMarkdownExtension()); - $environment->addExtension(new InlinesOnlyExtension()); - - $converter = new MarkdownConverter($environment); - - return (string) $converter->convert($string); - } - - /** - * Masks a portion of a string with a repeated character. - * - * @param string $string - * @param string $character - * @param int $index - * @param int|null $length - * @param string $encoding - * @return string - */ - public static function mask($string, $character, $index, $length = null, $encoding = 'UTF-8') - { - if ($character === '') { - return $string; - } - - $segment = mb_substr($string, $index, $length, $encoding); - - if ($segment === '') { - return $string; - } - - $strlen = mb_strlen($string, $encoding); - $startIndex = $index; - - if ($index < 0) { - $startIndex = $index < -$strlen ? 0 : $strlen + $index; - } - - $start = mb_substr($string, 0, $startIndex, $encoding); - $segmentLen = mb_strlen($segment, $encoding); - $end = mb_substr($string, $startIndex + $segmentLen); - - return $start.str_repeat(mb_substr($character, 0, 1, $encoding), $segmentLen).$end; - } - - /** - * Get the string matching the given pattern. - * - * @param string $pattern - * @param string $subject - * @return string - */ - public static function match($pattern, $subject) - { - preg_match($pattern, $subject, $matches); - - if (! $matches) { - return ''; - } - - return $matches[1] ?? $matches[0]; - } - - /** - * Determine if a given string matches a given pattern. - * - * @param string|iterable $pattern - * @param string $value - * @return bool - */ - public static function isMatch($pattern, $value) - { - $value = (string) $value; - - if (! is_iterable($pattern)) { - $pattern = [$pattern]; - } - - foreach ($pattern as $pattern) { - $pattern = (string) $pattern; - - if (preg_match($pattern, $value) === 1) { - return true; - } - } - - return false; - } - - /** - * Get the string matching the given pattern. - * - * @param string $pattern - * @param string $subject - * @return \Illuminate\Support\Collection - */ - public static function matchAll($pattern, $subject) - { - preg_match_all($pattern, $subject, $matches); - - if (empty($matches[0])) { - return collect(); - } - - return collect($matches[1] ?? $matches[0]); - } - - /** - * Pad both sides of a string with another. - * - * @param string $value - * @param int $length - * @param string $pad - * @return string - */ - public static function padBoth($value, $length, $pad = ' ') - { - if (function_exists('mb_str_pad')) { - return mb_str_pad($value, $length, $pad, STR_PAD_BOTH); - } - - $short = max(0, $length - mb_strlen($value)); - $shortLeft = floor($short / 2); - $shortRight = ceil($short / 2); - - return mb_substr(str_repeat($pad, $shortLeft), 0, $shortLeft). - $value. - mb_substr(str_repeat($pad, $shortRight), 0, $shortRight); - } - - /** - * Pad the left side of a string with another. - * - * @param string $value - * @param int $length - * @param string $pad - * @return string - */ - public static function padLeft($value, $length, $pad = ' ') - { - if (function_exists('mb_str_pad')) { - return mb_str_pad($value, $length, $pad, STR_PAD_LEFT); - } - - $short = max(0, $length - mb_strlen($value)); - - return mb_substr(str_repeat($pad, $short), 0, $short).$value; - } - - /** - * Pad the right side of a string with another. - * - * @param string $value - * @param int $length - * @param string $pad - * @return string - */ - public static function padRight($value, $length, $pad = ' ') - { - if (function_exists('mb_str_pad')) { - return mb_str_pad($value, $length, $pad, STR_PAD_RIGHT); - } - - $short = max(0, $length - mb_strlen($value)); - - return $value.mb_substr(str_repeat($pad, $short), 0, $short); - } - - /** - * Parse a Class[@]method style callback into class and method. - * - * @param string $callback - * @param string|null $default - * @return array - */ - public static function parseCallback($callback, $default = null) - { - if (static::contains($callback, "@anonymous\0")) { - if (static::substrCount($callback, '@') > 1) { - return [ - static::beforeLast($callback, '@'), - static::afterLast($callback, '@'), - ]; - } - - return [$callback, $default]; - } - - return static::contains($callback, '@') ? explode('@', $callback, 2) : [$callback, $default]; - } - - /** - * Get the plural form of an English word. - * - * @param string $value - * @param int|array|\Countable $count - * @return string - */ - public static function plural($value, $count = 2) - { - return Pluralizer::plural($value, $count); - } - - /** - * Pluralize the last word of an English, studly caps case string. - * - * @param string $value - * @param int|array|\Countable $count - * @return string - */ - public static function pluralStudly($value, $count = 2) - { - $parts = preg_split('/(.)(?=[A-Z])/u', $value, -1, PREG_SPLIT_DELIM_CAPTURE); - - $lastWord = array_pop($parts); - - return implode('', $parts).self::plural($lastWord, $count); - } - - /** - * Generate a random, secure password. - * - * @param int $length - * @param bool $letters - * @param bool $numbers - * @param bool $symbols - * @param bool $spaces - * @return string - */ - public static function password($length = 32, $letters = true, $numbers = true, $symbols = true, $spaces = false) - { - $password = new Collection(); - - $options = (new Collection([ - 'letters' => $letters === true ? [ - 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', - 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', - 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', - 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', - 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', - ] : null, - 'numbers' => $numbers === true ? [ - '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', - ] : null, - 'symbols' => $symbols === true ? [ - '~', '!', '#', '$', '%', '^', '&', '*', '(', ')', '-', - '_', '.', ',', '<', '>', '?', '/', '\\', '{', '}', '[', - ']', '|', ':', ';', - ] : null, - 'spaces' => $spaces === true ? [' '] : null, - ]))->filter()->each(fn ($c) => $password->push($c[random_int(0, count($c) - 1)]) - )->flatten(); - - $length = $length - $password->count(); - - return $password->merge($options->pipe( - fn ($c) => Collection::times($length, fn () => $c[random_int(0, $c->count() - 1)]) - ))->shuffle()->implode(''); - } - - /** - * Find the multi-byte safe position of the first occurrence of a given substring in a string. - * - * @param string $haystack - * @param string $needle - * @param int $offset - * @param string|null $encoding - * @return int|false - */ - public static function position($haystack, $needle, $offset = 0, $encoding = null) - { - return mb_strpos($haystack, (string) $needle, $offset, $encoding); - } - - /** - * Generate a more truly "random" alpha-numeric string. - * - * @param int $length - * @return string - */ - public static function random($length = 16) - { - return (static::$randomStringFactory ?? function ($length) { - $string = ''; - - while (($len = strlen($string)) < $length) { - $size = $length - $len; - - $bytesSize = (int) ceil($size / 3) * 3; - - $bytes = random_bytes($bytesSize); - - $string .= substr(str_replace(['/', '+', '='], '', base64_encode($bytes)), 0, $size); - } - - return $string; - })($length); - } - - /** - * Set the callable that will be used to generate random strings. - * - * @param callable|null $factory - * @return void - */ - public static function createRandomStringsUsing(?callable $factory = null) - { - static::$randomStringFactory = $factory; - } - - /** - * Set the sequence that will be used to generate random strings. - * - * @param array $sequence - * @param callable|null $whenMissing - * @return void - */ - public static function createRandomStringsUsingSequence(array $sequence, $whenMissing = null) - { - $next = 0; - - $whenMissing ??= function ($length) use (&$next) { - $factoryCache = static::$randomStringFactory; - - static::$randomStringFactory = null; - - $randomString = static::random($length); - - static::$randomStringFactory = $factoryCache; - - $next++; - - return $randomString; - }; - - static::createRandomStringsUsing(function ($length) use (&$next, $sequence, $whenMissing) { - if (array_key_exists($next, $sequence)) { - return $sequence[$next++]; - } - - return $whenMissing($length); - }); - } - - /** - * Indicate that random strings should be created normally and not using a custom factory. - * - * @return void - */ - public static function createRandomStringsNormally() - { - static::$randomStringFactory = null; - } - - /** - * Repeat the given string. - * - * @param string $string - * @param int $times - * @return string - */ - public static function repeat(string $string, int $times) - { - return str_repeat($string, $times); - } - - /** - * Replace a given value in the string sequentially with an array. - * - * @param string $search - * @param iterable $replace - * @param string $subject - * @return string - */ - public static function replaceArray($search, $replace, $subject) - { - if ($replace instanceof Traversable) { - $replace = collect($replace)->all(); - } - - $segments = explode($search, $subject); - - $result = array_shift($segments); - - foreach ($segments as $segment) { - $result .= self::toStringOr(array_shift($replace) ?? $search, $search).$segment; - } - - return $result; - } - - /** - * Convert the given value to a string or return the given fallback on failure. - * - * @param mixed $value - * @param string $fallback - * @return string - */ - private static function toStringOr($value, $fallback) - { - try { - return (string) $value; - } catch (Throwable $e) { - return $fallback; - } - } - - /** - * Replace the given value in the given string. - * - * @param string|iterable $search - * @param string|iterable $replace - * @param string|iterable $subject - * @param bool $caseSensitive - * @return string|string[] - */ - public static function replace($search, $replace, $subject, $caseSensitive = true) - { - if ($search instanceof Traversable) { - $search = collect($search)->all(); - } - - if ($replace instanceof Traversable) { - $replace = collect($replace)->all(); - } - - if ($subject instanceof Traversable) { - $subject = collect($subject)->all(); - } - - return $caseSensitive - ? str_replace($search, $replace, $subject) - : str_ireplace($search, $replace, $subject); - } - - /** - * Replace the first occurrence of a given value in the string. - * - * @param string $search - * @param string $replace - * @param string $subject - * @return string - */ - public static function replaceFirst($search, $replace, $subject) - { - $search = (string) $search; - - if ($search === '') { - return $subject; - } - - $position = strpos($subject, $search); - - if ($position !== false) { - return substr_replace($subject, $replace, $position, strlen($search)); - } - - return $subject; - } - - /** - * Replace the first occurrence of the given value if it appears at the start of the string. - * - * @param string $search - * @param string $replace - * @param string $subject - * @return string - */ - public static function replaceStart($search, $replace, $subject) - { - $search = (string) $search; - - if ($search === '') { - return $subject; - } - - if (static::startsWith($subject, $search)) { - return static::replaceFirst($search, $replace, $subject); - } - - return $subject; - } - - /** - * Replace the last occurrence of a given value in the string. - * - * @param string $search - * @param string $replace - * @param string $subject - * @return string - */ - public static function replaceLast($search, $replace, $subject) - { - $search = (string) $search; - - if ($search === '') { - return $subject; - } - - $position = strrpos($subject, $search); - - if ($position !== false) { - return substr_replace($subject, $replace, $position, strlen($search)); - } - - return $subject; - } - - /** - * Replace the last occurrence of a given value if it appears at the end of the string. - * - * @param string $search - * @param string $replace - * @param string $subject - * @return string - */ - public static function replaceEnd($search, $replace, $subject) - { - $search = (string) $search; - - if ($search === '') { - return $subject; - } - - if (static::endsWith($subject, $search)) { - return static::replaceLast($search, $replace, $subject); - } - - return $subject; - } - - /** - * Replace the patterns matching the given regular expression. - * - * @param array|string $pattern - * @param \Closure|string $replace - * @param array|string $subject - * @param int $limit - * @return string|string[]|null - */ - public static function replaceMatches($pattern, $replace, $subject, $limit = -1) - { - if ($replace instanceof Closure) { - return preg_replace_callback($pattern, $replace, $subject, $limit); - } - - return preg_replace($pattern, $replace, $subject, $limit); - } - - /** - * Remove any occurrence of the given string in the subject. - * - * @param string|iterable $search - * @param string|iterable $subject - * @param bool $caseSensitive - * @return string - */ - public static function remove($search, $subject, $caseSensitive = true) - { - if ($search instanceof Traversable) { - $search = collect($search)->all(); - } - - return $caseSensitive - ? str_replace($search, '', $subject) - : str_ireplace($search, '', $subject); - } - - /** - * Reverse the given string. - * - * @param string $value - * @return string - */ - public static function reverse(string $value) - { - return implode(array_reverse(mb_str_split($value))); - } - - /** - * Begin a string with a single instance of a given value. - * - * @param string $value - * @param string $prefix - * @return string - */ - public static function start($value, $prefix) - { - $quoted = preg_quote($prefix, '/'); - - return $prefix.preg_replace('/^(?:'.$quoted.')+/u', '', $value); - } - - /** - * Convert the given string to upper-case. - * - * @param string $value - * @return string - */ - public static function upper($value) - { - return mb_strtoupper($value, 'UTF-8'); - } - - /** - * Convert the given string to proper case. - * - * @param string $value - * @return string - */ - public static function title($value) - { - return mb_convert_case($value, MB_CASE_TITLE, 'UTF-8'); - } - - /** - * Convert the given string to proper case for each word. - * - * @param string $value - * @return string - */ - public static function headline($value) - { - $parts = explode(' ', $value); - - $parts = count($parts) > 1 - ? array_map([static::class, 'title'], $parts) - : array_map([static::class, 'title'], static::ucsplit(implode('_', $parts))); - - $collapsed = static::replace(['-', '_', ' '], '_', implode('_', $parts)); - - return implode(' ', array_filter(explode('_', $collapsed))); - } - - /** - * Convert the given string to APA-style title case. - * - * See: https://apastyle.apa.org/style-grammar-guidelines/capitalization/title-case - * - * @param string $value - * @return string - */ - public static function apa($value) - { - if (trim($value) === '') { - return $value; - } - - $minorWords = [ - 'and', 'as', 'but', 'for', 'if', 'nor', 'or', 'so', 'yet', 'a', 'an', - 'the', 'at', 'by', 'for', 'in', 'of', 'off', 'on', 'per', 'to', 'up', 'via', - 'et', 'ou', 'un', 'une', 'la', 'le', 'les', 'de', 'du', 'des', 'par', 'à', - ]; - - $endPunctuation = ['.', '!', '?', ':', '—', ',']; - - $words = preg_split('/\s+/', $value, -1, PREG_SPLIT_NO_EMPTY); - - for ($i = 0; $i < count($words); $i++) { - $lowercaseWord = mb_strtolower($words[$i]); - - if (str_contains($lowercaseWord, '-')) { - $hyphenatedWords = explode('-', $lowercaseWord); - - $hyphenatedWords = array_map(function ($part) use ($minorWords) { - return (in_array($part, $minorWords) && mb_strlen($part) <= 3) - ? $part - : mb_strtoupper(mb_substr($part, 0, 1)).mb_substr($part, 1); - }, $hyphenatedWords); - - $words[$i] = implode('-', $hyphenatedWords); - } else { - if (in_array($lowercaseWord, $minorWords) && - mb_strlen($lowercaseWord) <= 3 && - ! ($i === 0 || in_array(mb_substr($words[$i - 1], -1), $endPunctuation))) { - $words[$i] = $lowercaseWord; - } else { - $words[$i] = mb_strtoupper(mb_substr($lowercaseWord, 0, 1)).mb_substr($lowercaseWord, 1); - } - } - } - - return implode(' ', $words); - } - - /** - * Get the singular form of an English word. - * - * @param string $value - * @return string - */ - public static function singular($value) - { - return Pluralizer::singular($value); - } - - /** - * Generate a URL friendly "slug" from a given string. - * - * @param string $title - * @param string $separator - * @param string|null $language - * @param array $dictionary - * @return string - */ - public static function slug($title, $separator = '-', $language = 'en', $dictionary = ['@' => 'at']) - { - $title = $language ? static::ascii($title, $language) : $title; - - // Convert all dashes/underscores into separator - $flip = $separator === '-' ? '_' : '-'; - - $title = preg_replace('!['.preg_quote($flip).']+!u', $separator, $title); - - // Replace dictionary words - foreach ($dictionary as $key => $value) { - $dictionary[$key] = $separator.$value.$separator; - } - - $title = str_replace(array_keys($dictionary), array_values($dictionary), $title); - - // Remove all characters that are not the separator, letters, numbers, or whitespace - $title = preg_replace('![^'.preg_quote($separator).'\pL\pN\s]+!u', '', static::lower($title)); - - // Replace all separator characters and whitespace by a single separator - $title = preg_replace('!['.preg_quote($separator).'\s]+!u', $separator, $title); - - return trim($title, $separator); - } - - /** - * Convert a string to snake case. - * - * @param string $value - * @param string $delimiter - * @return string - */ - public static function snake($value, $delimiter = '_') - { - $key = $value; - - if (isset(static::$snakeCache[$key][$delimiter])) { - return static::$snakeCache[$key][$delimiter]; - } - - if (! ctype_lower($value)) { - $value = preg_replace('/\s+/u', '', ucwords($value)); - - $value = static::lower(preg_replace('/(.)(?=[A-Z])/u', '$1'.$delimiter, $value)); - } - - return static::$snakeCache[$key][$delimiter] = $value; - } - - /** - * Remove all "extra" blank space from the given string. - * - * @param string $value - * @return string - */ - public static function squish($value) - { - return preg_replace('~(\s|\x{3164}|\x{1160})+~u', ' ', preg_replace('~^[\s\x{FEFF}]+|[\s\x{FEFF}]+$~u', '', $value)); - } - - /** - * Determine if a given string starts with a given substring. - * - * @param string $haystack - * @param string|iterable $needles - * @return bool - */ - public static function startsWith($haystack, $needles) - { - if (! is_iterable($needles)) { - $needles = [$needles]; - } - - foreach ($needles as $needle) { - if ((string) $needle !== '' && str_starts_with($haystack, $needle)) { - return true; - } - } - - return false; - } - - /** - * Convert a value to studly caps case. - * - * @param string $value - * @return string - */ - public static function studly($value) - { - $key = $value; - - if (isset(static::$studlyCache[$key])) { - return static::$studlyCache[$key]; - } - - $words = explode(' ', static::replace(['-', '_'], ' ', $value)); - - $studlyWords = array_map(fn ($word) => static::ucfirst($word), $words); - - return static::$studlyCache[$key] = implode($studlyWords); - } - - /** - * Returns the portion of the string specified by the start and length parameters. - * - * @param string $string - * @param int $start - * @param int|null $length - * @param string $encoding - * @return string - */ - public static function substr($string, $start, $length = null, $encoding = 'UTF-8') - { - return mb_substr($string, $start, $length, $encoding); - } - - /** - * Returns the number of substring occurrences. - * - * @param string $haystack - * @param string $needle - * @param int $offset - * @param int|null $length - * @return int - */ - public static function substrCount($haystack, $needle, $offset = 0, $length = null) - { - if (! is_null($length)) { - return substr_count($haystack, $needle, $offset, $length); - } - - return substr_count($haystack, $needle, $offset); - } - - /** - * Replace text within a portion of a string. - * - * @param string|string[] $string - * @param string|string[] $replace - * @param int|int[] $offset - * @param int|int[]|null $length - * @return string|string[] - */ - public static function substrReplace($string, $replace, $offset = 0, $length = null) - { - if ($length === null) { - $length = strlen($string); - } - - return substr_replace($string, $replace, $offset, $length); - } - - /** - * Swap multiple keywords in a string with other keywords. - * - * @param array $map - * @param string $subject - * @return string - */ - public static function swap(array $map, $subject) - { - return strtr($subject, $map); - } - - /** - * Take the first or last {$limit} characters of a string. - * - * @param string $string - * @param int $limit - * @return string - */ - public static function take($string, int $limit): string - { - if ($limit < 0) { - return static::substr($string, $limit); - } - - return static::substr($string, 0, $limit); - } - - /** - * Convert the given string to Base64 encoding. - * - * @param string $string - * @return string - */ - public static function toBase64($string): string - { - return base64_encode($string); - } - - /** - * Decode the given Base64 encoded string. - * - * @param string $string - * @param bool $strict - * @return string|false - */ - public static function fromBase64($string, $strict = false) - { - return base64_decode($string, $strict); - } - - /** - * Make a string's first character lowercase. - * - * @param string $string - * @return string - */ - public static function lcfirst($string) - { - return static::lower(static::substr($string, 0, 1)).static::substr($string, 1); - } - - /** - * Make a string's first character uppercase. - * - * @param string $string - * @return string - */ - public static function ucfirst($string) - { - return static::upper(static::substr($string, 0, 1)).static::substr($string, 1); - } - - /** - * Split a string into pieces by uppercase characters. - * - * @param string $string - * @return string[] - */ - public static function ucsplit($string) - { - return preg_split('/(?=\p{Lu})/u', $string, -1, PREG_SPLIT_NO_EMPTY); - } - - /** - * Get the number of words a string contains. - * - * @param string $string - * @param string|null $characters - * @return int - */ - public static function wordCount($string, $characters = null) - { - return str_word_count($string, 0, $characters); - } - - /** - * Wrap a string to a given number of characters. - * - * @param string $string - * @param int $characters - * @param string $break - * @param bool $cutLongWords - * @return string - */ - public static function wordWrap($string, $characters = 75, $break = "\n", $cutLongWords = false) - { - return wordwrap($string, $characters, $break, $cutLongWords); - } - - /** - * Generate a UUID (version 4). - * - * @return \Ramsey\Uuid\UuidInterface - */ - public static function uuid() - { - return static::$uuidFactory - ? call_user_func(static::$uuidFactory) - : Uuid::uuid4(); - } - - /** - * Generate a time-ordered UUID. - * - * @return \Ramsey\Uuid\UuidInterface - */ - public static function orderedUuid() - { - if (static::$uuidFactory) { - return call_user_func(static::$uuidFactory); - } - - $factory = new UuidFactory; - - $factory->setRandomGenerator(new CombGenerator( - $factory->getRandomGenerator(), - $factory->getNumberConverter() - )); - - $factory->setCodec(new TimestampFirstCombCodec( - $factory->getUuidBuilder() - )); - - return $factory->uuid4(); - } - - /** - * Set the callable that will be used to generate UUIDs. - * - * @param callable|null $factory - * @return void - */ - public static function createUuidsUsing(?callable $factory = null) - { - static::$uuidFactory = $factory; - } - - /** - * Set the sequence that will be used to generate UUIDs. - * - * @param array $sequence - * @param callable|null $whenMissing - * @return void - */ - public static function createUuidsUsingSequence(array $sequence, $whenMissing = null) - { - $next = 0; - - $whenMissing ??= function () use (&$next) { - $factoryCache = static::$uuidFactory; - - static::$uuidFactory = null; - - $uuid = static::uuid(); - - static::$uuidFactory = $factoryCache; - - $next++; - - return $uuid; - }; - - static::createUuidsUsing(function () use (&$next, $sequence, $whenMissing) { - if (array_key_exists($next, $sequence)) { - return $sequence[$next++]; - } - - return $whenMissing(); - }); - } - - /** - * Always return the same UUID when generating new UUIDs. - * - * @param \Closure|null $callback - * @return \Ramsey\Uuid\UuidInterface - */ - public static function freezeUuids(?Closure $callback = null) - { - $uuid = Str::uuid(); - - Str::createUuidsUsing(fn () => $uuid); - - if ($callback !== null) { - try { - $callback($uuid); - } finally { - Str::createUuidsNormally(); - } - } - - return $uuid; - } - - /** - * Indicate that UUIDs should be created normally and not using a custom factory. - * - * @return void - */ - public static function createUuidsNormally() - { - static::$uuidFactory = null; - } - - /** - * Generate a ULID. - * - * @param \DateTimeInterface|null $time - * @return \Symfony\Component\Uid\Ulid - */ - public static function ulid($time = null) - { - if (static::$ulidFactory) { - return call_user_func(static::$ulidFactory); - } - - if ($time === null) { - return new Ulid(); - } - - return new Ulid(Ulid::generate($time)); - } - - /** - * Indicate that ULIDs should be created normally and not using a custom factory. - * - * @return void - */ - public static function createUlidsNormally() - { - static::$ulidFactory = null; - } - - /** - * Set the callable that will be used to generate ULIDs. - * - * @param callable|null $factory - * @return void - */ - public static function createUlidsUsing(?callable $factory = null) - { - static::$ulidFactory = $factory; - } - - /** - * Set the sequence that will be used to generate ULIDs. - * - * @param array $sequence - * @param callable|null $whenMissing - * @return void - */ - public static function createUlidsUsingSequence(array $sequence, $whenMissing = null) - { - $next = 0; - - $whenMissing ??= function () use (&$next) { - $factoryCache = static::$ulidFactory; - - static::$ulidFactory = null; - - $ulid = static::ulid(); - - static::$ulidFactory = $factoryCache; - - $next++; - - return $ulid; - }; - - static::createUlidsUsing(function () use (&$next, $sequence, $whenMissing) { - if (array_key_exists($next, $sequence)) { - return $sequence[$next++]; - } - - return $whenMissing(); - }); - } - - /** - * Always return the same ULID when generating new ULIDs. - * - * @param Closure|null $callback - * @return Ulid - */ - public static function freezeUlids(?Closure $callback = null) - { - $ulid = Str::ulid(); - - Str::createUlidsUsing(fn () => $ulid); - - if ($callback !== null) { - try { - $callback($ulid); - } finally { - Str::createUlidsNormally(); - } - } - - return $ulid; - } - - /** - * Remove all strings from the casing caches. - * - * @return void - */ - public static function flushCache() - { - static::$snakeCache = []; - static::$camelCache = []; - static::$studlyCache = []; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Support/Stringable.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Support/Stringable.php deleted file mode 100644 index 3a37ff11..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Support/Stringable.php +++ /dev/null @@ -1,1439 +0,0 @@ -value = (string) $value; - } - - /** - * Return the remainder of a string after the first occurrence of a given value. - * - * @param string $search - * @return static - */ - public function after($search) - { - return new static(Str::after($this->value, $search)); - } - - /** - * Return the remainder of a string after the last occurrence of a given value. - * - * @param string $search - * @return static - */ - public function afterLast($search) - { - return new static(Str::afterLast($this->value, $search)); - } - - /** - * Append the given values to the string. - * - * @param array|string ...$values - * @return static - */ - public function append(...$values) - { - return new static($this->value.implode('', $values)); - } - - /** - * Append a new line to the string. - * - * @param int $count - * @return $this - */ - public function newLine($count = 1) - { - return $this->append(str_repeat(PHP_EOL, $count)); - } - - /** - * Transliterate a UTF-8 value to ASCII. - * - * @param string $language - * @return static - */ - public function ascii($language = 'en') - { - return new static(Str::ascii($this->value, $language)); - } - - /** - * Get the trailing name component of the path. - * - * @param string $suffix - * @return static - */ - public function basename($suffix = '') - { - return new static(basename($this->value, $suffix)); - } - - /** - * Get the character at the specified index. - * - * @param int $index - * @return string|false - */ - public function charAt($index) - { - return Str::charAt($this->value, $index); - } - - /** - * Get the basename of the class path. - * - * @return static - */ - public function classBasename() - { - return new static(class_basename($this->value)); - } - - /** - * Get the portion of a string before the first occurrence of a given value. - * - * @param string $search - * @return static - */ - public function before($search) - { - return new static(Str::before($this->value, $search)); - } - - /** - * Get the portion of a string before the last occurrence of a given value. - * - * @param string $search - * @return static - */ - public function beforeLast($search) - { - return new static(Str::beforeLast($this->value, $search)); - } - - /** - * Get the portion of a string between two given values. - * - * @param string $from - * @param string $to - * @return static - */ - public function between($from, $to) - { - return new static(Str::between($this->value, $from, $to)); - } - - /** - * Get the smallest possible portion of a string between two given values. - * - * @param string $from - * @param string $to - * @return static - */ - public function betweenFirst($from, $to) - { - return new static(Str::betweenFirst($this->value, $from, $to)); - } - - /** - * Convert a value to camel case. - * - * @return static - */ - public function camel() - { - return new static(Str::camel($this->value)); - } - - /** - * Determine if a given string contains a given substring. - * - * @param string|iterable $needles - * @param bool $ignoreCase - * @return bool - */ - public function contains($needles, $ignoreCase = false) - { - return Str::contains($this->value, $needles, $ignoreCase); - } - - /** - * Determine if a given string contains all array values. - * - * @param iterable $needles - * @param bool $ignoreCase - * @return bool - */ - public function containsAll($needles, $ignoreCase = false) - { - return Str::containsAll($this->value, $needles, $ignoreCase); - } - - /** - * Convert the case of a string. - * - * @param int $mode - * @param string|null $encoding - * @return static - */ - public function convertCase(int $mode = MB_CASE_FOLD, ?string $encoding = 'UTF-8') - { - return new static(Str::convertCase($this->value, $mode, $encoding)); - } - - /** - * Get the parent directory's path. - * - * @param int $levels - * @return static - */ - public function dirname($levels = 1) - { - return new static(dirname($this->value, $levels)); - } - - /** - * Determine if a given string ends with a given substring. - * - * @param string|iterable $needles - * @return bool - */ - public function endsWith($needles) - { - return Str::endsWith($this->value, $needles); - } - - /** - * Determine if the string is an exact match with the given value. - * - * @param \Illuminate\Support\Stringable|string $value - * @return bool - */ - public function exactly($value) - { - if ($value instanceof Stringable) { - $value = $value->toString(); - } - - return $this->value === $value; - } - - /** - * Extracts an excerpt from text that matches the first instance of a phrase. - * - * @param string $phrase - * @param array $options - * @return string|null - */ - public function excerpt($phrase = '', $options = []) - { - return Str::excerpt($this->value, $phrase, $options); - } - - /** - * Explode the string into an array. - * - * @param string $delimiter - * @param int $limit - * @return \Illuminate\Support\Collection - */ - public function explode($delimiter, $limit = PHP_INT_MAX) - { - return collect(explode($delimiter, $this->value, $limit)); - } - - /** - * Split a string using a regular expression or by length. - * - * @param string|int $pattern - * @param int $limit - * @param int $flags - * @return \Illuminate\Support\Collection - */ - public function split($pattern, $limit = -1, $flags = 0) - { - if (filter_var($pattern, FILTER_VALIDATE_INT) !== false) { - return collect(mb_str_split($this->value, $pattern)); - } - - $segments = preg_split($pattern, $this->value, $limit, $flags); - - return ! empty($segments) ? collect($segments) : collect(); - } - - /** - * Cap a string with a single instance of a given value. - * - * @param string $cap - * @return static - */ - public function finish($cap) - { - return new static(Str::finish($this->value, $cap)); - } - - /** - * Determine if a given string matches a given pattern. - * - * @param string|iterable $pattern - * @return bool - */ - public function is($pattern) - { - return Str::is($pattern, $this->value); - } - - /** - * Determine if a given string is 7 bit ASCII. - * - * @return bool - */ - public function isAscii() - { - return Str::isAscii($this->value); - } - - /** - * Determine if a given string is valid JSON. - * - * @return bool - */ - public function isJson() - { - return Str::isJson($this->value); - } - - /** - * Determine if a given value is a valid URL. - * - * @return bool - */ - public function isUrl() - { - return Str::isUrl($this->value); - } - - /** - * Determine if a given string is a valid UUID. - * - * @return bool - */ - public function isUuid() - { - return Str::isUuid($this->value); - } - - /** - * Determine if a given string is a valid ULID. - * - * @return bool - */ - public function isUlid() - { - return Str::isUlid($this->value); - } - - /** - * Determine if the given string is empty. - * - * @return bool - */ - public function isEmpty() - { - return $this->value === ''; - } - - /** - * Determine if the given string is not empty. - * - * @return bool - */ - public function isNotEmpty() - { - return ! $this->isEmpty(); - } - - /** - * Convert a string to kebab case. - * - * @return static - */ - public function kebab() - { - return new static(Str::kebab($this->value)); - } - - /** - * Return the length of the given string. - * - * @param string|null $encoding - * @return int - */ - public function length($encoding = null) - { - return Str::length($this->value, $encoding); - } - - /** - * Limit the number of characters in a string. - * - * @param int $limit - * @param string $end - * @return static - */ - public function limit($limit = 100, $end = '...') - { - return new static(Str::limit($this->value, $limit, $end)); - } - - /** - * Convert the given string to lower-case. - * - * @return static - */ - public function lower() - { - return new static(Str::lower($this->value)); - } - - /** - * Convert GitHub flavored Markdown into HTML. - * - * @param array $options - * @return static - */ - public function markdown(array $options = []) - { - return new static(Str::markdown($this->value, $options)); - } - - /** - * Convert inline Markdown into HTML. - * - * @param array $options - * @return static - */ - public function inlineMarkdown(array $options = []) - { - return new static(Str::inlineMarkdown($this->value, $options)); - } - - /** - * Masks a portion of a string with a repeated character. - * - * @param string $character - * @param int $index - * @param int|null $length - * @param string $encoding - * @return static - */ - public function mask($character, $index, $length = null, $encoding = 'UTF-8') - { - return new static(Str::mask($this->value, $character, $index, $length, $encoding)); - } - - /** - * Get the string matching the given pattern. - * - * @param string $pattern - * @return static - */ - public function match($pattern) - { - return new static(Str::match($pattern, $this->value)); - } - - /** - * Determine if a given string matches a given pattern. - * - * @param string|iterable $pattern - * @return bool - */ - public function isMatch($pattern) - { - return Str::isMatch($pattern, $this->value); - } - - /** - * Get the string matching the given pattern. - * - * @param string $pattern - * @return \Illuminate\Support\Collection - */ - public function matchAll($pattern) - { - return Str::matchAll($pattern, $this->value); - } - - /** - * Determine if the string matches the given pattern. - * - * @param string $pattern - * @return bool - */ - public function test($pattern) - { - return $this->isMatch($pattern); - } - - /** - * Pad both sides of the string with another. - * - * @param int $length - * @param string $pad - * @return static - */ - public function padBoth($length, $pad = ' ') - { - return new static(Str::padBoth($this->value, $length, $pad)); - } - - /** - * Pad the left side of the string with another. - * - * @param int $length - * @param string $pad - * @return static - */ - public function padLeft($length, $pad = ' ') - { - return new static(Str::padLeft($this->value, $length, $pad)); - } - - /** - * Pad the right side of the string with another. - * - * @param int $length - * @param string $pad - * @return static - */ - public function padRight($length, $pad = ' ') - { - return new static(Str::padRight($this->value, $length, $pad)); - } - - /** - * Parse a Class@method style callback into class and method. - * - * @param string|null $default - * @return array - */ - public function parseCallback($default = null) - { - return Str::parseCallback($this->value, $default); - } - - /** - * Call the given callback and return a new string. - * - * @param callable $callback - * @return static - */ - public function pipe(callable $callback) - { - return new static($callback($this)); - } - - /** - * Get the plural form of an English word. - * - * @param int|array|\Countable $count - * @return static - */ - public function plural($count = 2) - { - return new static(Str::plural($this->value, $count)); - } - - /** - * Pluralize the last word of an English, studly caps case string. - * - * @param int|array|\Countable $count - * @return static - */ - public function pluralStudly($count = 2) - { - return new static(Str::pluralStudly($this->value, $count)); - } - - /** - * Find the multi-byte safe position of the first occurrence of the given substring. - * - * @param string $needle - * @param int $offset - * @param string|null $encoding - * @return int|false - */ - public function position($needle, $offset = 0, $encoding = null) - { - return Str::position($this->value, $needle, $offset, $encoding); - } - - /** - * Prepend the given values to the string. - * - * @param string ...$values - * @return static - */ - public function prepend(...$values) - { - return new static(implode('', $values).$this->value); - } - - /** - * Remove any occurrence of the given string in the subject. - * - * @param string|iterable $search - * @param bool $caseSensitive - * @return static - */ - public function remove($search, $caseSensitive = true) - { - return new static(Str::remove($search, $this->value, $caseSensitive)); - } - - /** - * Reverse the string. - * - * @return static - */ - public function reverse() - { - return new static(Str::reverse($this->value)); - } - - /** - * Repeat the string. - * - * @param int $times - * @return static - */ - public function repeat(int $times) - { - return new static(str_repeat($this->value, $times)); - } - - /** - * Replace the given value in the given string. - * - * @param string|iterable $search - * @param string|iterable $replace - * @param bool $caseSensitive - * @return static - */ - public function replace($search, $replace, $caseSensitive = true) - { - return new static(Str::replace($search, $replace, $this->value, $caseSensitive)); - } - - /** - * Replace a given value in the string sequentially with an array. - * - * @param string $search - * @param iterable $replace - * @return static - */ - public function replaceArray($search, $replace) - { - return new static(Str::replaceArray($search, $replace, $this->value)); - } - - /** - * Replace the first occurrence of a given value in the string. - * - * @param string $search - * @param string $replace - * @return static - */ - public function replaceFirst($search, $replace) - { - return new static(Str::replaceFirst($search, $replace, $this->value)); - } - - /** - * Replace the first occurrence of the given value if it appears at the start of the string. - * - * @param string $search - * @param string $replace - * @return static - */ - public function replaceStart($search, $replace) - { - return new static(Str::replaceStart($search, $replace, $this->value)); - } - - /** - * Replace the last occurrence of a given value in the string. - * - * @param string $search - * @param string $replace - * @return static - */ - public function replaceLast($search, $replace) - { - return new static(Str::replaceLast($search, $replace, $this->value)); - } - - /** - * Replace the last occurrence of a given value if it appears at the end of the string. - * - * @param string $search - * @param string $replace - * @return static - */ - public function replaceEnd($search, $replace) - { - return new static(Str::replaceEnd($search, $replace, $this->value)); - } - - /** - * Replace the patterns matching the given regular expression. - * - * @param array|string $pattern - * @param \Closure|string $replace - * @param int $limit - * @return static - */ - public function replaceMatches($pattern, $replace, $limit = -1) - { - if ($replace instanceof Closure) { - return new static(preg_replace_callback($pattern, $replace, $this->value, $limit)); - } - - return new static(preg_replace($pattern, $replace, $this->value, $limit)); - } - - /** - * Parse input from a string to a collection, according to a format. - * - * @param string $format - * @return \Illuminate\Support\Collection - */ - public function scan($format) - { - return collect(sscanf($this->value, $format)); - } - - /** - * Remove all "extra" blank space from the given string. - * - * @return static - */ - public function squish() - { - return new static(Str::squish($this->value)); - } - - /** - * Begin a string with a single instance of a given value. - * - * @param string $prefix - * @return static - */ - public function start($prefix) - { - return new static(Str::start($this->value, $prefix)); - } - - /** - * Strip HTML and PHP tags from the given string. - * - * @param string[]|string|null $allowedTags - * @return static - */ - public function stripTags($allowedTags = null) - { - return new static(strip_tags($this->value, $allowedTags)); - } - - /** - * Convert the given string to upper-case. - * - * @return static - */ - public function upper() - { - return new static(Str::upper($this->value)); - } - - /** - * Convert the given string to proper case. - * - * @return static - */ - public function title() - { - return new static(Str::title($this->value)); - } - - /** - * Convert the given string to proper case for each word. - * - * @return static - */ - public function headline() - { - return new static(Str::headline($this->value)); - } - - /** - * Convert the given string to APA-style title case. - * - * @return static - */ - public function apa() - { - return new static(Str::apa($this->value)); - } - - /** - * Transliterate a string to its closest ASCII representation. - * - * @param string|null $unknown - * @param bool|null $strict - * @return static - */ - public function transliterate($unknown = '?', $strict = false) - { - return new static(Str::transliterate($this->value, $unknown, $strict)); - } - - /** - * Get the singular form of an English word. - * - * @return static - */ - public function singular() - { - return new static(Str::singular($this->value)); - } - - /** - * Generate a URL friendly "slug" from a given string. - * - * @param string $separator - * @param string|null $language - * @param array $dictionary - * @return static - */ - public function slug($separator = '-', $language = 'en', $dictionary = ['@' => 'at']) - { - return new static(Str::slug($this->value, $separator, $language, $dictionary)); - } - - /** - * Convert a string to snake case. - * - * @param string $delimiter - * @return static - */ - public function snake($delimiter = '_') - { - return new static(Str::snake($this->value, $delimiter)); - } - - /** - * Determine if a given string starts with a given substring. - * - * @param string|iterable $needles - * @return bool - */ - public function startsWith($needles) - { - return Str::startsWith($this->value, $needles); - } - - /** - * Convert a value to studly caps case. - * - * @return static - */ - public function studly() - { - return new static(Str::studly($this->value)); - } - - /** - * Returns the portion of the string specified by the start and length parameters. - * - * @param int $start - * @param int|null $length - * @param string $encoding - * @return static - */ - public function substr($start, $length = null, $encoding = 'UTF-8') - { - return new static(Str::substr($this->value, $start, $length, $encoding)); - } - - /** - * Returns the number of substring occurrences. - * - * @param string $needle - * @param int $offset - * @param int|null $length - * @return int - */ - public function substrCount($needle, $offset = 0, $length = null) - { - return Str::substrCount($this->value, $needle, $offset, $length); - } - - /** - * Replace text within a portion of a string. - * - * @param string|string[] $replace - * @param int|int[] $offset - * @param int|int[]|null $length - * @return static - */ - public function substrReplace($replace, $offset = 0, $length = null) - { - return new static(Str::substrReplace($this->value, $replace, $offset, $length)); - } - - /** - * Swap multiple keywords in a string with other keywords. - * - * @param array $map - * @return static - */ - public function swap(array $map) - { - return new static(strtr($this->value, $map)); - } - - /** - * Take the first or last {$limit} characters. - * - * @param int $limit - * @return static - */ - public function take(int $limit) - { - if ($limit < 0) { - return $this->substr($limit); - } - - return $this->substr(0, $limit); - } - - /** - * Trim the string of the given characters. - * - * @param string $characters - * @return static - */ - public function trim($characters = null) - { - return new static(trim(...array_merge([$this->value], func_get_args()))); - } - - /** - * Left trim the string of the given characters. - * - * @param string $characters - * @return static - */ - public function ltrim($characters = null) - { - return new static(ltrim(...array_merge([$this->value], func_get_args()))); - } - - /** - * Right trim the string of the given characters. - * - * @param string $characters - * @return static - */ - public function rtrim($characters = null) - { - return new static(rtrim(...array_merge([$this->value], func_get_args()))); - } - - /** - * Make a string's first character lowercase. - * - * @return static - */ - public function lcfirst() - { - return new static(Str::lcfirst($this->value)); - } - - /** - * Make a string's first character uppercase. - * - * @return static - */ - public function ucfirst() - { - return new static(Str::ucfirst($this->value)); - } - - /** - * Split a string by uppercase characters. - * - * @return \Illuminate\Support\Collection - */ - public function ucsplit() - { - return collect(Str::ucsplit($this->value)); - } - - /** - * Execute the given callback if the string contains a given substring. - * - * @param string|iterable $needles - * @param callable $callback - * @param callable|null $default - * @return static - */ - public function whenContains($needles, $callback, $default = null) - { - return $this->when($this->contains($needles), $callback, $default); - } - - /** - * Execute the given callback if the string contains all array values. - * - * @param iterable $needles - * @param callable $callback - * @param callable|null $default - * @return static - */ - public function whenContainsAll(array $needles, $callback, $default = null) - { - return $this->when($this->containsAll($needles), $callback, $default); - } - - /** - * Execute the given callback if the string is empty. - * - * @param callable $callback - * @param callable|null $default - * @return static - */ - public function whenEmpty($callback, $default = null) - { - return $this->when($this->isEmpty(), $callback, $default); - } - - /** - * Execute the given callback if the string is not empty. - * - * @param callable $callback - * @param callable|null $default - * @return static - */ - public function whenNotEmpty($callback, $default = null) - { - return $this->when($this->isNotEmpty(), $callback, $default); - } - - /** - * Execute the given callback if the string ends with a given substring. - * - * @param string|iterable $needles - * @param callable $callback - * @param callable|null $default - * @return static - */ - public function whenEndsWith($needles, $callback, $default = null) - { - return $this->when($this->endsWith($needles), $callback, $default); - } - - /** - * Execute the given callback if the string is an exact match with the given value. - * - * @param string $value - * @param callable $callback - * @param callable|null $default - * @return static - */ - public function whenExactly($value, $callback, $default = null) - { - return $this->when($this->exactly($value), $callback, $default); - } - - /** - * Execute the given callback if the string is not an exact match with the given value. - * - * @param string $value - * @param callable $callback - * @param callable|null $default - * @return static - */ - public function whenNotExactly($value, $callback, $default = null) - { - return $this->when(! $this->exactly($value), $callback, $default); - } - - /** - * Execute the given callback if the string matches a given pattern. - * - * @param string|iterable $pattern - * @param callable $callback - * @param callable|null $default - * @return static - */ - public function whenIs($pattern, $callback, $default = null) - { - return $this->when($this->is($pattern), $callback, $default); - } - - /** - * Execute the given callback if the string is 7 bit ASCII. - * - * @param callable $callback - * @param callable|null $default - * @return static - */ - public function whenIsAscii($callback, $default = null) - { - return $this->when($this->isAscii(), $callback, $default); - } - - /** - * Execute the given callback if the string is a valid UUID. - * - * @param callable $callback - * @param callable|null $default - * @return static - */ - public function whenIsUuid($callback, $default = null) - { - return $this->when($this->isUuid(), $callback, $default); - } - - /** - * Execute the given callback if the string is a valid ULID. - * - * @param callable $callback - * @param callable|null $default - * @return static - */ - public function whenIsUlid($callback, $default = null) - { - return $this->when($this->isUlid(), $callback, $default); - } - - /** - * Execute the given callback if the string starts with a given substring. - * - * @param string|iterable $needles - * @param callable $callback - * @param callable|null $default - * @return static - */ - public function whenStartsWith($needles, $callback, $default = null) - { - return $this->when($this->startsWith($needles), $callback, $default); - } - - /** - * Execute the given callback if the string matches the given pattern. - * - * @param string $pattern - * @param callable $callback - * @param callable|null $default - * @return static - */ - public function whenTest($pattern, $callback, $default = null) - { - return $this->when($this->test($pattern), $callback, $default); - } - - /** - * Limit the number of words in a string. - * - * @param int $words - * @param string $end - * @return static - */ - public function words($words = 100, $end = '...') - { - return new static(Str::words($this->value, $words, $end)); - } - - /** - * Get the number of words a string contains. - * - * @param string|null $characters - * @return int - */ - public function wordCount($characters = null) - { - return Str::wordCount($this->value, $characters); - } - - /** - * Wrap a string to a given number of characters. - * - * @param int $characters - * @param string $break - * @param bool $cutLongWords - * @return static - */ - public function wordWrap($characters = 75, $break = "\n", $cutLongWords = false) - { - return new static(Str::wordWrap($this->value, $characters, $break, $cutLongWords)); - } - - /** - * Wrap the string with the given strings. - * - * @param string $before - * @param string|null $after - * @return static - */ - public function wrap($before, $after = null) - { - return new static(Str::wrap($this->value, $before, $after)); - } - - /** - * Unwrap the string with the given strings. - * - * @param string $before - * @param string|null $after - * @return static - */ - public function unwrap($before, $after = null) - { - return new static(Str::unwrap($this->value, $before, $after)); - } - - /** - * Convert the string into a `HtmlString` instance. - * - * @return \Illuminate\Support\HtmlString - */ - public function toHtmlString() - { - return new HtmlString($this->value); - } - - /** - * Convert the string to Base64 encoding. - * - * @return static - */ - public function toBase64() - { - return new static(base64_encode($this->value)); - } - - /** - * Decode the Base64 encoded string. - * - * @param bool $strict - * @return static - */ - public function fromBase64($strict = false) - { - return new static(base64_decode($this->value, $strict)); - } - - /** - * Dump the string. - * - * @return $this - */ - public function dump() - { - VarDumper::dump($this->value); - - return $this; - } - - /** - * Dump the string and end the script. - * - * @return never - */ - public function dd() - { - $this->dump(); - - exit(1); - } - - /** - * Get the underlying string value. - * - * @return string - */ - public function value() - { - return $this->toString(); - } - - /** - * Get the underlying string value. - * - * @return string - */ - public function toString() - { - return $this->value; - } - - /** - * Get the underlying string value as an integer. - * - * @param int $base - * @return int - */ - public function toInteger($base = 10) - { - return intval($this->value, $base); - } - - /** - * Get the underlying string value as a float. - * - * @return float - */ - public function toFloat() - { - return floatval($this->value); - } - - /** - * Get the underlying string value as a boolean. - * - * Returns true when value is "1", "true", "on", and "yes". Otherwise, returns false. - * - * @return bool - */ - public function toBoolean() - { - return filter_var($this->value, FILTER_VALIDATE_BOOLEAN); - } - - /** - * Get the underlying string value as a Carbon instance. - * - * @param string|null $format - * @param string|null $tz - * @return \Illuminate\Support\Carbon - * - * @throws \Carbon\Exceptions\InvalidFormatException - */ - public function toDate($format = null, $tz = null) - { - if (is_null($format)) { - return Date::parse($this->value, $tz); - } - - return Date::createFromFormat($format, $this->value, $tz); - } - - /** - * Convert the object to a string when JSON encoded. - * - * @return string - */ - public function jsonSerialize(): string - { - return $this->__toString(); - } - - /** - * Determine if the given offset exists. - * - * @param mixed $offset - * @return bool - */ - public function offsetExists(mixed $offset): bool - { - return isset($this->value[$offset]); - } - - /** - * Get the value at the given offset. - * - * @param mixed $offset - * @return string - */ - public function offsetGet(mixed $offset): string - { - return $this->value[$offset]; - } - - /** - * Set the value at the given offset. - * - * @param mixed $offset - * @return void - */ - public function offsetSet(mixed $offset, mixed $value): void - { - $this->value[$offset] = $value; - } - - /** - * Unset the value at the given offset. - * - * @param mixed $offset - * @return void - */ - public function offsetUnset(mixed $offset): void - { - unset($this->value[$offset]); - } - - /** - * Proxy dynamic properties onto methods. - * - * @param string $key - * @return mixed - */ - public function __get($key) - { - return $this->{$key}(); - } - - /** - * Get the raw string value. - * - * @return string - */ - public function __toString() - { - return (string) $this->value; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Support/Testing/Fakes/BusFake.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Support/Testing/Fakes/BusFake.php deleted file mode 100644 index 780b2929..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Support/Testing/Fakes/BusFake.php +++ /dev/null @@ -1,863 +0,0 @@ -dispatcher = $dispatcher; - $this->jobsToFake = Arr::wrap($jobsToFake); - $this->batchRepository = $batchRepository ?: new BatchRepositoryFake; - } - - /** - * Specify the jobs that should be dispatched instead of faked. - * - * @param array|string $jobsToDispatch - * @return $this - */ - public function except($jobsToDispatch) - { - $this->jobsToDispatch = array_merge($this->jobsToDispatch, Arr::wrap($jobsToDispatch)); - - return $this; - } - - /** - * Assert if a job was dispatched based on a truth-test callback. - * - * @param string|\Closure $command - * @param callable|int|null $callback - * @return void - */ - public function assertDispatched($command, $callback = null) - { - if ($command instanceof Closure) { - [$command, $callback] = [$this->firstClosureParameterType($command), $command]; - } - - if (is_numeric($callback)) { - return $this->assertDispatchedTimes($command, $callback); - } - - PHPUnit::assertTrue( - $this->dispatched($command, $callback)->count() > 0 || - $this->dispatchedAfterResponse($command, $callback)->count() > 0 || - $this->dispatchedSync($command, $callback)->count() > 0, - "The expected [{$command}] job was not dispatched." - ); - } - - /** - * Assert if a job was pushed a number of times. - * - * @param string|\Closure $command - * @param int $times - * @return void - */ - public function assertDispatchedTimes($command, $times = 1) - { - $callback = null; - - if ($command instanceof Closure) { - [$command, $callback] = [$this->firstClosureParameterType($command), $command]; - } - - $count = $this->dispatched($command, $callback)->count() + - $this->dispatchedAfterResponse($command, $callback)->count() + - $this->dispatchedSync($command, $callback)->count(); - - PHPUnit::assertSame( - $times, $count, - "The expected [{$command}] job was pushed {$count} times instead of {$times} times." - ); - } - - /** - * Determine if a job was dispatched based on a truth-test callback. - * - * @param string|\Closure $command - * @param callable|null $callback - * @return void - */ - public function assertNotDispatched($command, $callback = null) - { - if ($command instanceof Closure) { - [$command, $callback] = [$this->firstClosureParameterType($command), $command]; - } - - PHPUnit::assertTrue( - $this->dispatched($command, $callback)->count() === 0 && - $this->dispatchedAfterResponse($command, $callback)->count() === 0 && - $this->dispatchedSync($command, $callback)->count() === 0, - "The unexpected [{$command}] job was dispatched." - ); - } - - /** - * Assert that no jobs were dispatched. - * - * @return void - */ - public function assertNothingDispatched() - { - PHPUnit::assertEmpty($this->commands, 'Jobs were dispatched unexpectedly.'); - } - - /** - * Assert if a job was explicitly dispatched synchronously based on a truth-test callback. - * - * @param string|\Closure $command - * @param callable|int|null $callback - * @return void - */ - public function assertDispatchedSync($command, $callback = null) - { - if ($command instanceof Closure) { - [$command, $callback] = [$this->firstClosureParameterType($command), $command]; - } - - if (is_numeric($callback)) { - return $this->assertDispatchedSyncTimes($command, $callback); - } - - PHPUnit::assertTrue( - $this->dispatchedSync($command, $callback)->count() > 0, - "The expected [{$command}] job was not dispatched synchronously." - ); - } - - /** - * Assert if a job was pushed synchronously a number of times. - * - * @param string|\Closure $command - * @param int $times - * @return void - */ - public function assertDispatchedSyncTimes($command, $times = 1) - { - $callback = null; - - if ($command instanceof Closure) { - [$command, $callback] = [$this->firstClosureParameterType($command), $command]; - } - - $count = $this->dispatchedSync($command, $callback)->count(); - - PHPUnit::assertSame( - $times, $count, - "The expected [{$command}] job was synchronously pushed {$count} times instead of {$times} times." - ); - } - - /** - * Determine if a job was dispatched based on a truth-test callback. - * - * @param string|\Closure $command - * @param callable|null $callback - * @return void - */ - public function assertNotDispatchedSync($command, $callback = null) - { - if ($command instanceof Closure) { - [$command, $callback] = [$this->firstClosureParameterType($command), $command]; - } - - PHPUnit::assertCount( - 0, $this->dispatchedSync($command, $callback), - "The unexpected [{$command}] job was dispatched synchronously." - ); - } - - /** - * Assert if a job was dispatched after the response was sent based on a truth-test callback. - * - * @param string|\Closure $command - * @param callable|int|null $callback - * @return void - */ - public function assertDispatchedAfterResponse($command, $callback = null) - { - if ($command instanceof Closure) { - [$command, $callback] = [$this->firstClosureParameterType($command), $command]; - } - - if (is_numeric($callback)) { - return $this->assertDispatchedAfterResponseTimes($command, $callback); - } - - PHPUnit::assertTrue( - $this->dispatchedAfterResponse($command, $callback)->count() > 0, - "The expected [{$command}] job was not dispatched after sending the response." - ); - } - - /** - * Assert if a job was pushed after the response was sent a number of times. - * - * @param string|\Closure $command - * @param int $times - * @return void - */ - public function assertDispatchedAfterResponseTimes($command, $times = 1) - { - $callback = null; - - if ($command instanceof Closure) { - [$command, $callback] = [$this->firstClosureParameterType($command), $command]; - } - - $count = $this->dispatchedAfterResponse($command, $callback)->count(); - - PHPUnit::assertSame( - $times, $count, - "The expected [{$command}] job was pushed {$count} times instead of {$times} times." - ); - } - - /** - * Determine if a job was dispatched based on a truth-test callback. - * - * @param string|\Closure $command - * @param callable|null $callback - * @return void - */ - public function assertNotDispatchedAfterResponse($command, $callback = null) - { - if ($command instanceof Closure) { - [$command, $callback] = [$this->firstClosureParameterType($command), $command]; - } - - PHPUnit::assertCount( - 0, $this->dispatchedAfterResponse($command, $callback), - "The unexpected [{$command}] job was dispatched after sending the response." - ); - } - - /** - * Assert if a chain of jobs was dispatched. - * - * @param array $expectedChain - * @return void - */ - public function assertChained(array $expectedChain) - { - $command = $expectedChain[0]; - - $expectedChain = array_slice($expectedChain, 1); - - $callback = null; - - if ($command instanceof Closure) { - [$command, $callback] = [$this->firstClosureParameterType($command), $command]; - } elseif ($command instanceof ChainedBatchTruthTest) { - $instance = $command; - - $command = ChainedBatch::class; - - $callback = fn ($job) => $instance($job->toPendingBatch()); - } elseif (! is_string($command)) { - $instance = $command; - - $command = get_class($instance); - - $callback = function ($job) use ($instance) { - return serialize($this->resetChainPropertiesToDefaults($job)) === serialize($instance); - }; - } - - PHPUnit::assertTrue( - $this->dispatched($command, $callback)->isNotEmpty(), - "The expected [{$command}] job was not dispatched." - ); - - $this->assertDispatchedWithChainOfObjects($command, $expectedChain, $callback); - } - - /** - * Reset the chain properties to their default values on the job. - * - * @param mixed $job - * @return mixed - */ - protected function resetChainPropertiesToDefaults($job) - { - return tap(clone $job, function ($job) { - $job->chainConnection = null; - $job->chainQueue = null; - $job->chainCatchCallbacks = null; - $job->chained = []; - }); - } - - /** - * Assert if a job was dispatched with an empty chain based on a truth-test callback. - * - * @param string|\Closure $command - * @param callable|null $callback - * @return void - */ - public function assertDispatchedWithoutChain($command, $callback = null) - { - if ($command instanceof Closure) { - [$command, $callback] = [$this->firstClosureParameterType($command), $command]; - } - - PHPUnit::assertTrue( - $this->dispatched($command, $callback)->isNotEmpty(), - "The expected [{$command}] job was not dispatched." - ); - - $this->assertDispatchedWithChainOfObjects($command, [], $callback); - } - - /** - * Assert if a job was dispatched with chained jobs based on a truth-test callback. - * - * @param string $command - * @param array $expectedChain - * @param callable|null $callback - * @return void - */ - protected function assertDispatchedWithChainOfObjects($command, $expectedChain, $callback) - { - $chain = $expectedChain; - - PHPUnit::assertTrue( - $this->dispatched($command, $callback)->filter(function ($job) use ($chain) { - if (count($chain) !== count($job->chained)) { - return false; - } - - foreach ($job->chained as $index => $serializedChainedJob) { - if ($chain[$index] instanceof ChainedBatchTruthTest) { - $chainedBatch = unserialize($serializedChainedJob); - - if (! $chainedBatch instanceof ChainedBatch || - ! $chain[$index]($chainedBatch->toPendingBatch())) { - return false; - } - } elseif ($chain[$index] instanceof Closure) { - [$expectedType, $callback] = [$this->firstClosureParameterType($chain[$index]), $chain[$index]]; - - $chainedJob = unserialize($serializedChainedJob); - - if (! $chainedJob instanceof $expectedType) { - throw new RuntimeException('The chained job was expected to be of type '.$expectedType.', '.$chainedJob::class.' chained.'); - } - - if (! $callback($chainedJob)) { - return false; - } - } elseif (is_string($chain[$index])) { - if ($chain[$index] != get_class(unserialize($serializedChainedJob))) { - return false; - } - } elseif (serialize($chain[$index]) != $serializedChainedJob) { - return false; - } - } - - return true; - })->isNotEmpty(), - 'The expected chain was not dispatched.' - ); - } - - /** - * Create a new assertion about a chained batch. - * - * @param \Closure $callback - * @return \Illuminate\Support\Testing\Fakes\ChainedBatchTruthTest - */ - public function chainedBatch(Closure $callback) - { - return new ChainedBatchTruthTest($callback); - } - - /** - * Assert if a batch was dispatched based on a truth-test callback. - * - * @param callable $callback - * @return void - */ - public function assertBatched(callable $callback) - { - PHPUnit::assertTrue( - $this->batched($callback)->count() > 0, - 'The expected batch was not dispatched.' - ); - } - - /** - * Assert the number of batches that have been dispatched. - * - * @param int $count - * @return void - */ - public function assertBatchCount($count) - { - PHPUnit::assertCount( - $count, $this->batches, - ); - } - - /** - * Assert that no batched jobs were dispatched. - * - * @return void - */ - public function assertNothingBatched() - { - PHPUnit::assertEmpty($this->batches, 'Batched jobs were dispatched unexpectedly.'); - } - - /** - * Get all of the jobs matching a truth-test callback. - * - * @param string $command - * @param callable|null $callback - * @return \Illuminate\Support\Collection - */ - public function dispatched($command, $callback = null) - { - if (! $this->hasDispatched($command)) { - return collect(); - } - - $callback = $callback ?: fn () => true; - - return collect($this->commands[$command])->filter(fn ($command) => $callback($command)); - } - - /** - * Get all of the jobs dispatched synchronously matching a truth-test callback. - * - * @param string $command - * @param callable|null $callback - * @return \Illuminate\Support\Collection - */ - public function dispatchedSync(string $command, $callback = null) - { - if (! $this->hasDispatchedSync($command)) { - return collect(); - } - - $callback = $callback ?: fn () => true; - - return collect($this->commandsSync[$command])->filter(fn ($command) => $callback($command)); - } - - /** - * Get all of the jobs dispatched after the response was sent matching a truth-test callback. - * - * @param string $command - * @param callable|null $callback - * @return \Illuminate\Support\Collection - */ - public function dispatchedAfterResponse(string $command, $callback = null) - { - if (! $this->hasDispatchedAfterResponse($command)) { - return collect(); - } - - $callback = $callback ?: fn () => true; - - return collect($this->commandsAfterResponse[$command])->filter(fn ($command) => $callback($command)); - } - - /** - * Get all of the pending batches matching a truth-test callback. - * - * @param callable $callback - * @return \Illuminate\Support\Collection - */ - public function batched(callable $callback) - { - if (empty($this->batches)) { - return collect(); - } - - return collect($this->batches)->filter(fn ($batch) => $callback($batch)); - } - - /** - * Determine if there are any stored commands for a given class. - * - * @param string $command - * @return bool - */ - public function hasDispatched($command) - { - return isset($this->commands[$command]) && ! empty($this->commands[$command]); - } - - /** - * Determine if there are any stored commands for a given class. - * - * @param string $command - * @return bool - */ - public function hasDispatchedSync($command) - { - return isset($this->commandsSync[$command]) && ! empty($this->commandsSync[$command]); - } - - /** - * Determine if there are any stored commands for a given class. - * - * @param string $command - * @return bool - */ - public function hasDispatchedAfterResponse($command) - { - return isset($this->commandsAfterResponse[$command]) && ! empty($this->commandsAfterResponse[$command]); - } - - /** - * Dispatch a command to its appropriate handler. - * - * @param mixed $command - * @return mixed - */ - public function dispatch($command) - { - if ($this->shouldFakeJob($command)) { - $this->commands[get_class($command)][] = $this->getCommandRepresentation($command); - } else { - return $this->dispatcher->dispatch($command); - } - } - - /** - * Dispatch a command to its appropriate handler in the current process. - * - * Queueable jobs will be dispatched to the "sync" queue. - * - * @param mixed $command - * @param mixed $handler - * @return mixed - */ - public function dispatchSync($command, $handler = null) - { - if ($this->shouldFakeJob($command)) { - $this->commandsSync[get_class($command)][] = $this->getCommandRepresentation($command); - } else { - return $this->dispatcher->dispatchSync($command, $handler); - } - } - - /** - * Dispatch a command to its appropriate handler in the current process. - * - * @param mixed $command - * @param mixed $handler - * @return mixed - */ - public function dispatchNow($command, $handler = null) - { - if ($this->shouldFakeJob($command)) { - $this->commands[get_class($command)][] = $this->getCommandRepresentation($command); - } else { - return $this->dispatcher->dispatchNow($command, $handler); - } - } - - /** - * Dispatch a command to its appropriate handler behind a queue. - * - * @param mixed $command - * @return mixed - */ - public function dispatchToQueue($command) - { - if ($this->shouldFakeJob($command)) { - $this->commands[get_class($command)][] = $this->getCommandRepresentation($command); - } else { - return $this->dispatcher->dispatchToQueue($command); - } - } - - /** - * Dispatch a command to its appropriate handler. - * - * @param mixed $command - * @return mixed - */ - public function dispatchAfterResponse($command) - { - if ($this->shouldFakeJob($command)) { - $this->commandsAfterResponse[get_class($command)][] = $this->getCommandRepresentation($command); - } else { - return $this->dispatcher->dispatch($command); - } - } - - /** - * Create a new chain of queueable jobs. - * - * @param \Illuminate\Support\Collection|array $jobs - * @return \Illuminate\Foundation\Bus\PendingChain - */ - public function chain($jobs) - { - $jobs = Collection::wrap($jobs); - $jobs = ChainedBatch::prepareNestedBatches($jobs); - - return new PendingChainFake($this, $jobs->shift(), $jobs->toArray()); - } - - /** - * Attempt to find the batch with the given ID. - * - * @param string $batchId - * @return \Illuminate\Bus\Batch|null - */ - public function findBatch(string $batchId) - { - return $this->batchRepository->find($batchId); - } - - /** - * Create a new batch of queueable jobs. - * - * @param \Illuminate\Support\Collection|array $jobs - * @return \Illuminate\Bus\PendingBatch - */ - public function batch($jobs) - { - return new PendingBatchFake($this, Collection::wrap($jobs)); - } - - /** - * Dispatch an empty job batch for testing. - * - * @param string $name - * @return \Illuminate\Bus\Batch - */ - public function dispatchFakeBatch($name = '') - { - return $this->batch([])->name($name)->dispatch(); - } - - /** - * Record the fake pending batch dispatch. - * - * @param \Illuminate\Bus\PendingBatch $pendingBatch - * @return \Illuminate\Bus\Batch - */ - public function recordPendingBatch(PendingBatch $pendingBatch) - { - $this->batches[] = $pendingBatch; - - return $this->batchRepository->store($pendingBatch); - } - - /** - * Determine if a command should be faked or actually dispatched. - * - * @param mixed $command - * @return bool - */ - protected function shouldFakeJob($command) - { - if ($this->shouldDispatchCommand($command)) { - return false; - } - - if (empty($this->jobsToFake)) { - return true; - } - - return collect($this->jobsToFake) - ->filter(function ($job) use ($command) { - return $job instanceof Closure - ? $job($command) - : $job === get_class($command); - })->isNotEmpty(); - } - - /** - * Determine if a command should be dispatched or not. - * - * @param mixed $command - * @return bool - */ - protected function shouldDispatchCommand($command) - { - return collect($this->jobsToDispatch) - ->filter(function ($job) use ($command) { - return $job instanceof Closure - ? $job($command) - : $job === get_class($command); - })->isNotEmpty(); - } - - /** - * Specify if commands should be serialized and restored when being batched. - * - * @param bool $serializeAndRestore - * @return $this - */ - public function serializeAndRestore(bool $serializeAndRestore = true) - { - $this->serializeAndRestore = $serializeAndRestore; - - return $this; - } - - /** - * Serialize and unserialize the command to simulate the queueing process. - * - * @param mixed $command - * @return mixed - */ - protected function serializeAndRestoreCommand($command) - { - return unserialize(serialize($command)); - } - - /** - * Return the command representation that should be stored. - * - * @param mixed $command - * @return mixed - */ - protected function getCommandRepresentation($command) - { - return $this->serializeAndRestore ? $this->serializeAndRestoreCommand($command) : $command; - } - - /** - * Set the pipes commands should be piped through before dispatching. - * - * @param array $pipes - * @return $this - */ - public function pipeThrough(array $pipes) - { - $this->dispatcher->pipeThrough($pipes); - - return $this; - } - - /** - * Determine if the given command has a handler. - * - * @param mixed $command - * @return bool - */ - public function hasCommandHandler($command) - { - return $this->dispatcher->hasCommandHandler($command); - } - - /** - * Retrieve the handler for a command. - * - * @param mixed $command - * @return mixed - */ - public function getCommandHandler($command) - { - return $this->dispatcher->getCommandHandler($command); - } - - /** - * Map a command to a handler. - * - * @param array $map - * @return $this - */ - public function map(array $map) - { - $this->dispatcher->map($map); - - return $this; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Support/Testing/Fakes/NotificationFake.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Support/Testing/Fakes/NotificationFake.php deleted file mode 100644 index 526c111c..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Support/Testing/Fakes/NotificationFake.php +++ /dev/null @@ -1,395 +0,0 @@ -assertSentTo(new AnonymousNotifiable, $notification, $callback); - } - - /** - * Assert if a notification was sent based on a truth-test callback. - * - * @param mixed $notifiable - * @param string|\Closure $notification - * @param callable|null $callback - * @return void - * - * @throws \Exception - */ - public function assertSentTo($notifiable, $notification, $callback = null) - { - if (is_array($notifiable) || $notifiable instanceof Collection) { - if (count($notifiable) === 0) { - throw new Exception('No notifiable given.'); - } - - foreach ($notifiable as $singleNotifiable) { - $this->assertSentTo($singleNotifiable, $notification, $callback); - } - - return; - } - - if ($notification instanceof Closure) { - [$notification, $callback] = [$this->firstClosureParameterType($notification), $notification]; - } - - if (is_numeric($callback)) { - return $this->assertSentToTimes($notifiable, $notification, $callback); - } - - PHPUnit::assertTrue( - $this->sent($notifiable, $notification, $callback)->count() > 0, - "The expected [{$notification}] notification was not sent." - ); - } - - /** - * Assert if a notification was sent on-demand a number of times. - * - * @param string $notification - * @param int $times - * @return void - */ - public function assertSentOnDemandTimes($notification, $times = 1) - { - return $this->assertSentToTimes(new AnonymousNotifiable, $notification, $times); - } - - /** - * Assert if a notification was sent a number of times. - * - * @param mixed $notifiable - * @param string $notification - * @param int $times - * @return void - */ - public function assertSentToTimes($notifiable, $notification, $times = 1) - { - $count = $this->sent($notifiable, $notification)->count(); - - PHPUnit::assertSame( - $times, $count, - "Expected [{$notification}] to be sent {$times} times, but was sent {$count} times." - ); - } - - /** - * Determine if a notification was sent based on a truth-test callback. - * - * @param mixed $notifiable - * @param string|\Closure $notification - * @param callable|null $callback - * @return void - * - * @throws \Exception - */ - public function assertNotSentTo($notifiable, $notification, $callback = null) - { - if (is_array($notifiable) || $notifiable instanceof Collection) { - if (count($notifiable) === 0) { - throw new Exception('No notifiable given.'); - } - - foreach ($notifiable as $singleNotifiable) { - $this->assertNotSentTo($singleNotifiable, $notification, $callback); - } - - return; - } - - if ($notification instanceof Closure) { - [$notification, $callback] = [$this->firstClosureParameterType($notification), $notification]; - } - - PHPUnit::assertCount( - 0, $this->sent($notifiable, $notification, $callback), - "The unexpected [{$notification}] notification was sent." - ); - } - - /** - * Assert that no notifications were sent. - * - * @return void - */ - public function assertNothingSent() - { - PHPUnit::assertEmpty($this->notifications, 'Notifications were sent unexpectedly.'); - } - - /** - * Assert that no notifications were sent to the given notifiable. - * - * @param mixed $notifiable - * @return void - * - * @throws \Exception - */ - public function assertNothingSentTo($notifiable) - { - if (is_array($notifiable) || $notifiable instanceof Collection) { - if (count($notifiable) === 0) { - throw new Exception('No notifiable given.'); - } - - foreach ($notifiable as $singleNotifiable) { - $this->assertNothingSentTo($singleNotifiable); - } - - return; - } - - PHPUnit::assertEmpty( - $this->notifications[get_class($notifiable)][$notifiable->getKey()] ?? [], - 'Notifications were sent unexpectedly.', - ); - } - - /** - * Assert the total amount of times a notification was sent. - * - * @param string $notification - * @param int $expectedCount - * @return void - */ - public function assertSentTimes($notification, $expectedCount) - { - $actualCount = collect($this->notifications) - ->flatten(1) - ->reduce(fn ($count, $sent) => $count + count($sent[$notification] ?? []), 0); - - PHPUnit::assertSame( - $expectedCount, $actualCount, - "Expected [{$notification}] to be sent {$expectedCount} times, but was sent {$actualCount} times." - ); - } - - /** - * Assert the total count of notification that were sent. - * - * @param int $expectedCount - * @return void - */ - public function assertCount($expectedCount) - { - $actualCount = collect($this->notifications)->flatten(3)->count(); - - PHPUnit::assertSame( - $expectedCount, $actualCount, - "Expected {$expectedCount} notifications to be sent, but {$actualCount} were sent." - ); - } - - /** - * Get all of the notifications matching a truth-test callback. - * - * @param mixed $notifiable - * @param string $notification - * @param callable|null $callback - * @return \Illuminate\Support\Collection - */ - public function sent($notifiable, $notification, $callback = null) - { - if (! $this->hasSent($notifiable, $notification)) { - return collect(); - } - - $callback = $callback ?: fn () => true; - - $notifications = collect($this->notificationsFor($notifiable, $notification)); - - return $notifications->filter( - fn ($arguments) => $callback(...array_values($arguments)) - )->pluck('notification'); - } - - /** - * Determine if there are more notifications left to inspect. - * - * @param mixed $notifiable - * @param string $notification - * @return bool - */ - public function hasSent($notifiable, $notification) - { - return ! empty($this->notificationsFor($notifiable, $notification)); - } - - /** - * Get all of the notifications for a notifiable entity by type. - * - * @param mixed $notifiable - * @param string $notification - * @return array - */ - protected function notificationsFor($notifiable, $notification) - { - return $this->notifications[get_class($notifiable)][$notifiable->getKey()][$notification] ?? []; - } - - /** - * Send the given notification to the given notifiable entities. - * - * @param \Illuminate\Support\Collection|array|mixed $notifiables - * @param mixed $notification - * @return void - */ - public function send($notifiables, $notification) - { - $this->sendNow($notifiables, $notification); - } - - /** - * Send the given notification immediately. - * - * @param \Illuminate\Support\Collection|array|mixed $notifiables - * @param mixed $notification - * @param array|null $channels - * @return void - */ - public function sendNow($notifiables, $notification, ?array $channels = null) - { - if (! $notifiables instanceof Collection && ! is_array($notifiables)) { - $notifiables = [$notifiables]; - } - - foreach ($notifiables as $notifiable) { - if (! $notification->id) { - $notification->id = Str::uuid()->toString(); - } - - $notifiableChannels = $channels ?: $notification->via($notifiable); - - if (method_exists($notification, 'shouldSend')) { - $notifiableChannels = array_filter( - $notifiableChannels, - fn ($channel) => $notification->shouldSend($notifiable, $channel) !== false - ); - } - - if (empty($notifiableChannels)) { - continue; - } - - $this->notifications[get_class($notifiable)][$notifiable->getKey()][get_class($notification)][] = [ - 'notification' => $this->serializeAndRestore && $notification instanceof ShouldQueue - ? $this->serializeAndRestoreNotification($notification) - : $notification, - 'channels' => $notifiableChannels, - 'notifiable' => $notifiable, - 'locale' => $notification->locale ?? $this->locale ?? value(function () use ($notifiable) { - if ($notifiable instanceof HasLocalePreference) { - return $notifiable->preferredLocale(); - } - }), - ]; - } - } - - /** - * Get a channel instance by name. - * - * @param string|null $name - * @return mixed - */ - public function channel($name = null) - { - // - } - - /** - * Set the locale of notifications. - * - * @param string $locale - * @return $this - */ - public function locale($locale) - { - $this->locale = $locale; - - return $this; - } - - /** - * Specify if notification should be serialized and restored when being "pushed" to the queue. - * - * @param bool $serializeAndRestore - * @return $this - */ - public function serializeAndRestore(bool $serializeAndRestore = true) - { - $this->serializeAndRestore = $serializeAndRestore; - - return $this; - } - - /** - * Serialize and unserialize the notification to simulate the queueing process. - * - * @param mixed $notification - * @return mixed - */ - protected function serializeAndRestoreNotification($notification) - { - return unserialize(serialize($notification)); - } - - /** - * Get the notifications that have been sent. - * - * @return array - */ - public function sentNotifications() - { - return $this->notifications; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Support/ValidatedInput.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Support/ValidatedInput.php deleted file mode 100644 index 0ed27377..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Support/ValidatedInput.php +++ /dev/null @@ -1,564 +0,0 @@ -input = $input; - } - - /** - * Determine if the validated input has one or more keys. - * - * @param mixed $keys - * @return bool - */ - public function has($keys) - { - $keys = is_array($keys) ? $keys : func_get_args(); - - foreach ($keys as $key) { - if (! Arr::has($this->all(), $key)) { - return false; - } - } - - return true; - } - - /** - * Determine if the validated input is missing one or more keys. - * - * @param mixed $keys - * @return bool - */ - public function missing($keys) - { - return ! $this->has($keys); - } - - /** - * Get a subset containing the provided keys with values from the input data. - * - * @param mixed $keys - * @return array - */ - public function only($keys) - { - $results = []; - - $input = $this->all(); - - $placeholder = new stdClass; - - foreach (is_array($keys) ? $keys : func_get_args() as $key) { - $value = data_get($input, $key, $placeholder); - - if ($value !== $placeholder) { - Arr::set($results, $key, $value); - } - } - - return $results; - } - - /** - * Get all of the input except for a specified array of items. - * - * @param mixed $keys - * @return array - */ - public function except($keys) - { - $keys = is_array($keys) ? $keys : func_get_args(); - - $results = $this->all(); - - Arr::forget($results, $keys); - - return $results; - } - - /** - * Merge the validated input with the given array of additional data. - * - * @param array $items - * @return static - */ - public function merge(array $items) - { - return new static(array_merge($this->all(), $items)); - } - - /** - * Get the input as a collection. - * - * @param array|string|null $key - * @return \Illuminate\Support\Collection - */ - public function collect($key = null) - { - return collect(is_array($key) ? $this->only($key) : $this->input($key)); - } - - /** - * Get the raw, underlying input array. - * - * @return array - */ - public function all() - { - return $this->input; - } - - /** - * Get the instance as an array. - * - * @return array - */ - public function toArray() - { - return $this->all(); - } - - /** - * Dynamically access input data. - * - * @param string $name - * @return mixed - */ - public function __get($name) - { - return $this->input($name); - } - - /** - * Dynamically set input data. - * - * @param string $name - * @param mixed $value - * @return mixed - */ - public function __set($name, $value) - { - $this->input[$name] = $value; - } - - /** - * Determine if an input key is set. - * - * @return bool - */ - public function __isset($name) - { - return $this->exists($name); - } - - /** - * Remove an input key. - * - * @param string $name - * @return void - */ - public function __unset($name) - { - unset($this->input[$name]); - } - - /** - * Determine if an item exists at an offset. - * - * @param mixed $key - * @return bool - */ - public function offsetExists($key): bool - { - return $this->exists($key); - } - - /** - * Get an item at a given offset. - * - * @param mixed $key - * @return mixed - */ - public function offsetGet($key): mixed - { - return $this->input($key); - } - - /** - * Set the item at a given offset. - * - * @param mixed $key - * @param mixed $value - * @return void - */ - public function offsetSet($key, $value): void - { - if (is_null($key)) { - $this->input[] = $value; - } else { - $this->input[$key] = $value; - } - } - - /** - * Unset the item at a given offset. - * - * @param string $key - * @return void - */ - public function offsetUnset($key): void - { - unset($this->input[$key]); - } - - /** - * Get an iterator for the input. - * - * @return \ArrayIterator - */ - public function getIterator(): Traversable - { - return new ArrayIterator($this->input); - } - - /** - * Determine if the validated inputs contains a given input item key. - * - * @param string|array $key - * @return bool - */ - public function exists($key) - { - return $this->has($key); - } - - /** - * Determine if the validated inputs contains any of the given inputs. - * - * @param string|array $keys - * @return bool - */ - public function hasAny($keys) - { - $keys = is_array($keys) ? $keys : func_get_args(); - - $input = $this->all(); - - return Arr::hasAny($input, $keys); - } - - /** - * Apply the callback if the validated inputs contains the given input item key. - * - * @param string $key - * @param callable $callback - * @param callable|null $default - * @return $this|mixed - */ - public function whenHas($key, callable $callback, ?callable $default = null) - { - if ($this->has($key)) { - return $callback(data_get($this->all(), $key)) ?: $this; - } - - if ($default) { - return $default(); - } - - return $this; - } - - /** - * Determine if the validated inputs contains a non-empty value for an input item. - * - * @param string|array $key - * @return bool - */ - public function filled($key) - { - $keys = is_array($key) ? $key : func_get_args(); - - foreach ($keys as $value) { - if ($this->isEmptyString($value)) { - return false; - } - } - - return true; - } - - /** - * Determine if the validated inputs contains an empty value for an input item. - * - * @param string|array $key - * @return bool - */ - public function isNotFilled($key) - { - $keys = is_array($key) ? $key : func_get_args(); - - foreach ($keys as $value) { - if (! $this->isEmptyString($value)) { - return false; - } - } - - return true; - } - - /** - * Determine if the validated inputs contains a non-empty value for any of the given inputs. - * - * @param string|array $keys - * @return bool - */ - public function anyFilled($keys) - { - $keys = is_array($keys) ? $keys : func_get_args(); - - foreach ($keys as $key) { - if ($this->filled($key)) { - return true; - } - } - - return false; - } - - /** - * Apply the callback if the validated inputs contains a non-empty value for the given input item key. - * - * @param string $key - * @param callable $callback - * @param callable|null $default - * @return $this|mixed - */ - public function whenFilled($key, callable $callback, ?callable $default = null) - { - if ($this->filled($key)) { - return $callback(data_get($this->all(), $key)) ?: $this; - } - - if ($default) { - return $default(); - } - - return $this; - } - - /** - * Apply the callback if the validated inputs is missing the given input item key. - * - * @param string $key - * @param callable $callback - * @param callable|null $default - * @return $this|mixed - */ - public function whenMissing($key, callable $callback, ?callable $default = null) - { - if ($this->missing($key)) { - return $callback(data_get($this->all(), $key)) ?: $this; - } - - if ($default) { - return $default(); - } - - return $this; - } - - /** - * Determine if the given input key is an empty string for "filled". - * - * @param string $key - * @return bool - */ - protected function isEmptyString($key) - { - $value = $this->input($key); - - return ! is_bool($value) && ! is_array($value) && trim((string) $value) === ''; - } - - /** - * Get the keys for all of the input. - * - * @return array - */ - public function keys() - { - return array_keys($this->input()); - } - - /** - * Retrieve an input item from the validated inputs. - * - * @param string|null $key - * @param mixed $default - * @return mixed - */ - public function input($key = null, $default = null) - { - return data_get( - $this->all(), $key, $default - ); - } - - /** - * Retrieve input from the validated inputs as a Stringable instance. - * - * @param string $key - * @param mixed $default - * @return \Illuminate\Support\Stringable - */ - public function str($key, $default = null) - { - return $this->string($key, $default); - } - - /** - * Retrieve input from the validated inputs as a Stringable instance. - * - * @param string $key - * @param mixed $default - * @return \Illuminate\Support\Stringable - */ - public function string($key, $default = null) - { - return str($this->input($key, $default)); - } - - /** - * Retrieve input as a boolean value. - * - * Returns true when value is "1", "true", "on", and "yes". Otherwise, returns false. - * - * @param string|null $key - * @param bool $default - * @return bool - */ - public function boolean($key = null, $default = false) - { - return filter_var($this->input($key, $default), FILTER_VALIDATE_BOOLEAN); - } - - /** - * Retrieve input as an integer value. - * - * @param string $key - * @param int $default - * @return int - */ - public function integer($key, $default = 0) - { - return intval($this->input($key, $default)); - } - - /** - * Retrieve input as a float value. - * - * @param string $key - * @param float $default - * @return float - */ - public function float($key, $default = 0.0) - { - return floatval($this->input($key, $default)); - } - - /** - * Retrieve input from the validated inputs as a Carbon instance. - * - * @param string $key - * @param string|null $format - * @param string|null $tz - * @return \Illuminate\Support\Carbon|null - * - * @throws \Carbon\Exceptions\InvalidFormatException - */ - public function date($key, $format = null, $tz = null) - { - if ($this->isNotFilled($key)) { - return null; - } - - if (is_null($format)) { - return Date::parse($this->input($key), $tz); - } - - return Date::createFromFormat($format, $this->input($key), $tz); - } - - /** - * Retrieve input from the validated inputs as an enum. - * - * @template TEnum - * - * @param string $key - * @param class-string $enumClass - * @return TEnum|null - */ - public function enum($key, $enumClass) - { - if ($this->isNotFilled($key) || - ! enum_exists($enumClass) || - ! method_exists($enumClass, 'tryFrom')) { - return null; - } - - return $enumClass::tryFrom($this->input($key)); - } - - /** - * Dump the validated inputs items and end the script. - * - * @param mixed ...$keys - * @return never - */ - public function dd(...$keys) - { - $this->dump(...$keys); - - exit(1); - } - - /** - * Dump the items. - * - * @param mixed $keys - * @return $this - */ - public function dump($keys = []) - { - $keys = is_array($keys) ? $keys : func_get_args(); - - VarDumper::dump(count($keys) > 0 ? $this->only($keys) : $this->all()); - - return $this; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Support/helpers.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Support/helpers.php deleted file mode 100755 index cdcf52f1..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Support/helpers.php +++ /dev/null @@ -1,434 +0,0 @@ - $value) { - if (is_numeric($key)) { - $start++; - - $array[$start] = Arr::pull($array, $key); - } - } - - return $array; - } -} - -if (! function_exists('blank')) { - /** - * Determine if the given value is "blank". - * - * @param mixed $value - * @return bool - */ - function blank($value) - { - if (is_null($value)) { - return true; - } - - if (is_string($value)) { - return trim($value) === ''; - } - - if (is_numeric($value) || is_bool($value)) { - return false; - } - - if ($value instanceof Countable) { - return count($value) === 0; - } - - return empty($value); - } -} - -if (! function_exists('class_basename')) { - /** - * Get the class "basename" of the given object / class. - * - * @param string|object $class - * @return string - */ - function class_basename($class) - { - $class = is_object($class) ? get_class($class) : $class; - - return basename(str_replace('\\', '/', $class)); - } -} - -if (! function_exists('class_uses_recursive')) { - /** - * Returns all traits used by a class, its parent classes and trait of their traits. - * - * @param object|string $class - * @return array - */ - function class_uses_recursive($class) - { - if (is_object($class)) { - $class = get_class($class); - } - - $results = []; - - foreach (array_reverse(class_parents($class) ?: []) + [$class => $class] as $class) { - $results += trait_uses_recursive($class); - } - - return array_unique($results); - } -} - -if (! function_exists('e')) { - /** - * Encode HTML special characters in a string. - * - * @param \Illuminate\Contracts\Support\DeferringDisplayableValue|\Illuminate\Contracts\Support\Htmlable|\BackedEnum|string|null $value - * @param bool $doubleEncode - * @return string - */ - function e($value, $doubleEncode = true) - { - if ($value instanceof DeferringDisplayableValue) { - $value = $value->resolveDisplayableValue(); - } - - if ($value instanceof Htmlable) { - return $value->toHtml(); - } - - if ($value instanceof BackedEnum) { - $value = $value->value; - } - - return htmlspecialchars($value ?? '', ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8', $doubleEncode); - } -} - -if (! function_exists('env')) { - /** - * Gets the value of an environment variable. - * - * @param string $key - * @param mixed $default - * @return mixed - */ - function env($key, $default = null) - { - return Env::get($key, $default); - } -} - -if (! function_exists('filled')) { - /** - * Determine if a value is "filled". - * - * @param mixed $value - * @return bool - */ - function filled($value) - { - return ! blank($value); - } -} - -if (! function_exists('object_get')) { - /** - * Get an item from an object using "dot" notation. - * - * @param object $object - * @param string|null $key - * @param mixed $default - * @return mixed - */ - function object_get($object, $key, $default = null) - { - if (is_null($key) || trim($key) === '') { - return $object; - } - - foreach (explode('.', $key) as $segment) { - if (! is_object($object) || ! isset($object->{$segment})) { - return value($default); - } - - $object = $object->{$segment}; - } - - return $object; - } -} - -if (! function_exists('optional')) { - /** - * Provide access to optional objects. - * - * @param mixed $value - * @param callable|null $callback - * @return mixed - */ - function optional($value = null, ?callable $callback = null) - { - if (is_null($callback)) { - return new Optional($value); - } elseif (! is_null($value)) { - return $callback($value); - } - } -} - -if (! function_exists('preg_replace_array')) { - /** - * Replace a given pattern with each value in the array in sequentially. - * - * @param string $pattern - * @param array $replacements - * @param string $subject - * @return string - */ - function preg_replace_array($pattern, array $replacements, $subject) - { - return preg_replace_callback($pattern, function () use (&$replacements) { - foreach ($replacements as $value) { - return array_shift($replacements); - } - }, $subject); - } -} - -if (! function_exists('retry')) { - /** - * Retry an operation a given number of times. - * - * @param int|array $times - * @param callable $callback - * @param int|\Closure $sleepMilliseconds - * @param callable|null $when - * @return mixed - * - * @throws \Exception - */ - function retry($times, callable $callback, $sleepMilliseconds = 0, $when = null) - { - $attempts = 0; - - $backoff = []; - - if (is_array($times)) { - $backoff = $times; - - $times = count($times) + 1; - } - - beginning: - $attempts++; - $times--; - - try { - return $callback($attempts); - } catch (Exception $e) { - if ($times < 1 || ($when && ! $when($e))) { - throw $e; - } - - $sleepMilliseconds = $backoff[$attempts - 1] ?? $sleepMilliseconds; - - if ($sleepMilliseconds) { - Sleep::usleep(value($sleepMilliseconds, $attempts, $e) * 1000); - } - - goto beginning; - } - } -} - -if (! function_exists('str')) { - /** - * Get a new stringable object from the given string. - * - * @param string|null $string - * @return \Illuminate\Support\Stringable|mixed - */ - function str($string = null) - { - if (func_num_args() === 0) { - return new class - { - public function __call($method, $parameters) - { - return Str::$method(...$parameters); - } - - public function __toString() - { - return ''; - } - }; - } - - return Str::of($string); - } -} - -if (! function_exists('tap')) { - /** - * Call the given Closure with the given value then return the value. - * - * @param mixed $value - * @param callable|null $callback - * @return mixed - */ - function tap($value, $callback = null) - { - if (is_null($callback)) { - return new HigherOrderTapProxy($value); - } - - $callback($value); - - return $value; - } -} - -if (! function_exists('throw_if')) { - /** - * Throw the given exception if the given condition is true. - * - * @template TException of \Throwable - * - * @param mixed $condition - * @param TException|class-string|string $exception - * @param mixed ...$parameters - * @return mixed - * - * @throws TException - */ - function throw_if($condition, $exception = 'RuntimeException', ...$parameters) - { - if ($condition) { - if (is_string($exception) && class_exists($exception)) { - $exception = new $exception(...$parameters); - } - - throw is_string($exception) ? new RuntimeException($exception) : $exception; - } - - return $condition; - } -} - -if (! function_exists('throw_unless')) { - /** - * Throw the given exception unless the given condition is true. - * - * @template TException of \Throwable - * - * @param mixed $condition - * @param TException|class-string|string $exception - * @param mixed ...$parameters - * @return mixed - * - * @throws TException - */ - function throw_unless($condition, $exception = 'RuntimeException', ...$parameters) - { - throw_if(! $condition, $exception, ...$parameters); - - return $condition; - } -} - -if (! function_exists('trait_uses_recursive')) { - /** - * Returns all traits used by a trait and its traits. - * - * @param object|string $trait - * @return array - */ - function trait_uses_recursive($trait) - { - $traits = class_uses($trait) ?: []; - - foreach ($traits as $trait) { - $traits += trait_uses_recursive($trait); - } - - return $traits; - } -} - -if (! function_exists('transform')) { - /** - * Transform the given value if it is present. - * - * @template TValue of mixed - * @template TReturn of mixed - * @template TDefault of mixed - * - * @param TValue $value - * @param callable(TValue): TReturn $callback - * @param TDefault|callable(TValue): TDefault|null $default - * @return ($value is empty ? ($default is null ? null : TDefault) : TReturn) - */ - function transform($value, callable $callback, $default = null) - { - if (filled($value)) { - return $callback($value); - } - - if (is_callable($default)) { - return $default($value); - } - - return $default; - } -} - -if (! function_exists('windows_os')) { - /** - * Determine whether the current environment is Windows based. - * - * @return bool - */ - function windows_os() - { - return PHP_OS_FAMILY === 'Windows'; - } -} - -if (! function_exists('with')) { - /** - * Return the given value, optionally passed through the given callback. - * - * @template TValue - * @template TReturn - * - * @param TValue $value - * @param (callable(TValue): (TReturn))|null $callback - * @return ($callback is null ? TValue : TReturn) - */ - function with($value, ?callable $callback = null) - { - return is_null($callback) ? $value : $callback($value); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Testing/AssertableJsonString.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Testing/AssertableJsonString.php deleted file mode 100644 index 4be12991..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Testing/AssertableJsonString.php +++ /dev/null @@ -1,425 +0,0 @@ -json = $jsonable; - - if ($jsonable instanceof JsonSerializable) { - $this->decoded = $jsonable->jsonSerialize(); - } elseif ($jsonable instanceof Jsonable) { - $this->decoded = json_decode($jsonable->toJson(), true); - } elseif (is_array($jsonable)) { - $this->decoded = $jsonable; - } else { - $this->decoded = json_decode($jsonable, true); - } - } - - /** - * Validate and return the decoded response JSON. - * - * @param string|null $key - * @return mixed - */ - public function json($key = null) - { - return data_get($this->decoded, $key); - } - - /** - * Assert that the response JSON has the expected count of items at the given key. - * - * @param int $count - * @param string|null $key - * @return $this - */ - public function assertCount(int $count, $key = null) - { - if (! is_null($key)) { - PHPUnit::assertCount( - $count, data_get($this->decoded, $key), - "Failed to assert that the response count matched the expected {$count}" - ); - - return $this; - } - - PHPUnit::assertCount($count, - $this->decoded, - "Failed to assert that the response count matched the expected {$count}" - ); - - return $this; - } - - /** - * Assert that the response has the exact given JSON. - * - * @param array $data - * @return $this - */ - public function assertExact(array $data) - { - $actual = $this->reorderAssocKeys((array) $this->decoded); - - $expected = $this->reorderAssocKeys($data); - - PHPUnit::assertEquals( - json_encode($expected, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES), - json_encode($actual, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) - ); - - return $this; - } - - /** - * Assert that the response has the similar JSON as given. - * - * @param array $data - * @return $this - */ - public function assertSimilar(array $data) - { - $actual = json_encode( - Arr::sortRecursive((array) $this->decoded), - JSON_UNESCAPED_UNICODE - ); - - PHPUnit::assertEquals(json_encode(Arr::sortRecursive($data), JSON_UNESCAPED_UNICODE), $actual); - - return $this; - } - - /** - * Assert that the response contains the given JSON fragment. - * - * @param array $data - * @return $this - */ - public function assertFragment(array $data) - { - $actual = json_encode( - Arr::sortRecursive((array) $this->decoded), - JSON_UNESCAPED_UNICODE - ); - - foreach (Arr::sortRecursive($data) as $key => $value) { - $expected = $this->jsonSearchStrings($key, $value); - - PHPUnit::assertTrue( - Str::contains($actual, $expected), - 'Unable to find JSON fragment: '.PHP_EOL.PHP_EOL. - '['.json_encode([$key => $value], JSON_UNESCAPED_UNICODE).']'.PHP_EOL.PHP_EOL. - 'within'.PHP_EOL.PHP_EOL. - "[{$actual}]." - ); - } - - return $this; - } - - /** - * Assert that the response does not contain the given JSON fragment. - * - * @param array $data - * @param bool $exact - * @return $this - */ - public function assertMissing(array $data, $exact = false) - { - if ($exact) { - return $this->assertMissingExact($data); - } - - $actual = json_encode( - Arr::sortRecursive((array) $this->decoded), - JSON_UNESCAPED_UNICODE - ); - - foreach (Arr::sortRecursive($data) as $key => $value) { - $unexpected = $this->jsonSearchStrings($key, $value); - - PHPUnit::assertFalse( - Str::contains($actual, $unexpected), - 'Found unexpected JSON fragment: '.PHP_EOL.PHP_EOL. - '['.json_encode([$key => $value], JSON_UNESCAPED_UNICODE).']'.PHP_EOL.PHP_EOL. - 'within'.PHP_EOL.PHP_EOL. - "[{$actual}]." - ); - } - - return $this; - } - - /** - * Assert that the response does not contain the exact JSON fragment. - * - * @param array $data - * @return $this - */ - public function assertMissingExact(array $data) - { - $actual = json_encode( - Arr::sortRecursive((array) $this->decoded), - JSON_UNESCAPED_UNICODE - ); - - foreach (Arr::sortRecursive($data) as $key => $value) { - $unexpected = $this->jsonSearchStrings($key, $value); - - if (! Str::contains($actual, $unexpected)) { - return $this; - } - } - - PHPUnit::fail( - 'Found unexpected JSON fragment: '.PHP_EOL.PHP_EOL. - '['.json_encode($data, JSON_UNESCAPED_UNICODE).']'.PHP_EOL.PHP_EOL. - 'within'.PHP_EOL.PHP_EOL. - "[{$actual}]." - ); - - return $this; - } - - /** - * Assert that the response does not contain the given path. - * - * @param string $path - * @return $this - */ - public function assertMissingPath($path) - { - PHPUnit::assertFalse(Arr::has($this->json(), $path)); - - return $this; - } - - /** - * Assert that the expected value and type exists at the given path in the response. - * - * @param string $path - * @param mixed $expect - * @return $this - */ - public function assertPath($path, $expect) - { - if ($expect instanceof Closure) { - PHPUnit::assertTrue($expect($this->json($path))); - } else { - PHPUnit::assertSame($expect, $this->json($path)); - } - - return $this; - } - - /** - * Assert that the given path in the response contains all of the expected values without looking at the order. - * - * @param string $path - * @param array $expect - * @return $this - */ - public function assertPathCanonicalizing($path, $expect) - { - PHPUnit::assertEqualsCanonicalizing($expect, $this->json($path)); - - return $this; - } - - /** - * Assert that the response has a given JSON structure. - * - * @param array|null $structure - * @param array|null $responseData - * @return $this - */ - public function assertStructure(?array $structure = null, $responseData = null) - { - if (is_null($structure)) { - return $this->assertSimilar($this->decoded); - } - - if (! is_null($responseData)) { - return (new static($responseData))->assertStructure($structure); - } - - foreach ($structure as $key => $value) { - if (is_array($value) && $key === '*') { - PHPUnit::assertIsArray($this->decoded); - - foreach ($this->decoded as $responseDataItem) { - $this->assertStructure($structure['*'], $responseDataItem); - } - } elseif (is_array($value)) { - PHPUnit::assertArrayHasKey($key, $this->decoded); - - $this->assertStructure($structure[$key], $this->decoded[$key]); - } else { - PHPUnit::assertArrayHasKey($value, $this->decoded); - } - } - - return $this; - } - - /** - * Assert that the response is a superset of the given JSON. - * - * @param array $data - * @param bool $strict - * @return $this - */ - public function assertSubset(array $data, $strict = false) - { - PHPUnit::assertArraySubset( - $data, $this->decoded, $strict, $this->assertJsonMessage($data) - ); - - return $this; - } - - /** - * Reorder associative array keys to make it easy to compare arrays. - * - * @param array $data - * @return array - */ - protected function reorderAssocKeys(array $data) - { - $data = Arr::dot($data); - ksort($data); - - $result = []; - - foreach ($data as $key => $value) { - Arr::set($result, $key, $value); - } - - return $result; - } - - /** - * Get the assertion message for assertJson. - * - * @param array $data - * @return string - */ - protected function assertJsonMessage(array $data) - { - $expected = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); - - $actual = json_encode($this->decoded, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); - - return 'Unable to find JSON: '.PHP_EOL.PHP_EOL. - "[{$expected}]".PHP_EOL.PHP_EOL. - 'within response JSON:'.PHP_EOL.PHP_EOL. - "[{$actual}].".PHP_EOL.PHP_EOL; - } - - /** - * Get the strings we need to search for when examining the JSON. - * - * @param string $key - * @param string $value - * @return array - */ - protected function jsonSearchStrings($key, $value) - { - $needle = Str::substr(json_encode([$key => $value], JSON_UNESCAPED_UNICODE), 1, -1); - - return [ - $needle.']', - $needle.'}', - $needle.',', - ]; - } - - /** - * Get the total number of items in the underlying JSON array. - * - * @return int - */ - public function count(): int - { - return count($this->decoded); - } - - /** - * Determine whether an offset exists. - * - * @param mixed $offset - * @return bool - */ - public function offsetExists($offset): bool - { - return isset($this->decoded[$offset]); - } - - /** - * Get the value at the given offset. - * - * @param string $offset - * @return mixed - */ - public function offsetGet($offset): mixed - { - return $this->decoded[$offset]; - } - - /** - * Set the value at the given offset. - * - * @param string $offset - * @param mixed $value - * @return void - */ - public function offsetSet($offset, $value): void - { - $this->decoded[$offset] = $value; - } - - /** - * Unset the value at the given offset. - * - * @param string $offset - * @return void - */ - public function offsetUnset($offset): void - { - unset($this->decoded[$offset]); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Testing/Fluent/AssertableJson.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Testing/Fluent/AssertableJson.php deleted file mode 100644 index 9afc94c7..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Testing/Fluent/AssertableJson.php +++ /dev/null @@ -1,179 +0,0 @@ -path = $path; - $this->props = $props; - } - - /** - * Compose the absolute "dot" path to the given key. - * - * @param string $key - * @return string - */ - protected function dotPath(string $key = ''): string - { - if (is_null($this->path)) { - return $key; - } - - return rtrim(implode('.', [$this->path, $key]), '.'); - } - - /** - * Retrieve a prop within the current scope using "dot" notation. - * - * @param string|null $key - * @return mixed - */ - protected function prop(?string $key = null) - { - return Arr::get($this->props, $key); - } - - /** - * Instantiate a new "scope" at the path of the given key. - * - * @param string $key - * @param \Closure $callback - * @return $this - */ - protected function scope(string $key, Closure $callback): self - { - $props = $this->prop($key); - $path = $this->dotPath($key); - - PHPUnit::assertIsArray($props, sprintf('Property [%s] is not scopeable.', $path)); - - $scope = new static($props, $path); - $callback($scope); - $scope->interacted(); - - return $this; - } - - /** - * Instantiate a new "scope" on the first child element. - * - * @param \Closure $callback - * @return $this - */ - public function first(Closure $callback): self - { - $props = $this->prop(); - - $path = $this->dotPath(); - - PHPUnit::assertNotEmpty($props, $path === '' - ? 'Cannot scope directly onto the first element of the root level because it is empty.' - : sprintf('Cannot scope directly onto the first element of property [%s] because it is empty.', $path) - ); - - $key = array_keys($props)[0]; - - $this->interactsWith($key); - - return $this->scope($key, $callback); - } - - /** - * Instantiate a new "scope" on each child element. - * - * @param \Closure $callback - * @return $this - */ - public function each(Closure $callback): self - { - $props = $this->prop(); - - $path = $this->dotPath(); - - PHPUnit::assertNotEmpty($props, $path === '' - ? 'Cannot scope directly onto each element of the root level because it is empty.' - : sprintf('Cannot scope directly onto each element of property [%s] because it is empty.', $path) - ); - - foreach (array_keys($props) as $key) { - $this->interactsWith($key); - - $this->scope($key, $callback); - } - - return $this; - } - - /** - * Create a new instance from an array. - * - * @param array $data - * @return static - */ - public static function fromArray(array $data): self - { - return new static($data); - } - - /** - * Create a new instance from an AssertableJsonString. - * - * @param \Illuminate\Testing\AssertableJsonString $json - * @return static - */ - public static function fromAssertableJsonString(AssertableJsonString $json): self - { - return static::fromArray($json->json()); - } - - /** - * Get the instance as an array. - * - * @return array - */ - public function toArray() - { - return $this->props; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Testing/Fluent/Concerns/Debugging.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Testing/Fluent/Concerns/Debugging.php deleted file mode 100644 index a2d69bf3..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Testing/Fluent/Concerns/Debugging.php +++ /dev/null @@ -1,38 +0,0 @@ -prop($prop)); - - return $this; - } - - /** - * Dumps the given props and exits. - * - * @param string|null $prop - * @return never - */ - public function dd(?string $prop = null): void - { - dd($this->prop($prop)); - } - - /** - * Retrieve a prop within the current scope using "dot" notation. - * - * @param string|null $key - * @return mixed - */ - abstract protected function prop(?string $key = null); -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Testing/Fluent/Concerns/Has.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Testing/Fluent/Concerns/Has.php deleted file mode 100644 index 20bfe9d1..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Testing/Fluent/Concerns/Has.php +++ /dev/null @@ -1,213 +0,0 @@ -dotPath(); - - PHPUnit::assertCount( - $key, - $this->prop(), - $path - ? sprintf('Property [%s] does not have the expected size.', $path) - : sprintf('Root level does not have the expected size.') - ); - - return $this; - } - - PHPUnit::assertCount( - $length, - $this->prop($key), - sprintf('Property [%s] does not have the expected size.', $this->dotPath($key)) - ); - - return $this; - } - - /** - * Ensure that the given prop exists. - * - * @param string|int $key - * @param int|\Closure|null $length - * @param \Closure|null $callback - * @return $this - */ - public function has($key, $length = null, ?Closure $callback = null): self - { - $prop = $this->prop(); - - if (is_int($key) && is_null($length)) { - return $this->count($key); - } - - PHPUnit::assertTrue( - Arr::has($prop, $key), - sprintf('Property [%s] does not exist.', $this->dotPath($key)) - ); - - $this->interactsWith($key); - - if (! is_null($callback)) { - return $this->has($key, function (self $scope) use ($length, $callback) { - return $scope - ->tap(function (self $scope) use ($length) { - if (! is_null($length)) { - $scope->count($length); - } - }) - ->first($callback) - ->etc(); - }); - } - - if (is_callable($length)) { - return $this->scope($key, $length); - } - - if (! is_null($length)) { - return $this->count($key, $length); - } - - return $this; - } - - /** - * Assert that all of the given props exist. - * - * @param array|string $key - * @return $this - */ - public function hasAll($key): self - { - $keys = is_array($key) ? $key : func_get_args(); - - foreach ($keys as $prop => $count) { - if (is_int($prop)) { - $this->has($count); - } else { - $this->has($prop, $count); - } - } - - return $this; - } - - /** - * Assert that at least one of the given props exists. - * - * @param array|string $key - * @return $this - */ - public function hasAny($key): self - { - $keys = is_array($key) ? $key : func_get_args(); - - PHPUnit::assertTrue( - Arr::hasAny($this->prop(), $keys), - sprintf('None of properties [%s] exist.', implode(', ', $keys)) - ); - - foreach ($keys as $key) { - $this->interactsWith($key); - } - - return $this; - } - - /** - * Assert that none of the given props exist. - * - * @param array|string $key - * @return $this - */ - public function missingAll($key): self - { - $keys = is_array($key) ? $key : func_get_args(); - - foreach ($keys as $prop) { - $this->missing($prop); - } - - return $this; - } - - /** - * Assert that the given prop does not exist. - * - * @param string $key - * @return $this - */ - public function missing(string $key): self - { - PHPUnit::assertNotTrue( - Arr::has($this->prop(), $key), - sprintf('Property [%s] was found while it was expected to be missing.', $this->dotPath($key)) - ); - - return $this; - } - - /** - * Compose the absolute "dot" path to the given key. - * - * @param string $key - * @return string - */ - abstract protected function dotPath(string $key = ''): string; - - /** - * Marks the property as interacted. - * - * @param string $key - * @return void - */ - abstract protected function interactsWith(string $key): void; - - /** - * Retrieve a prop within the current scope using "dot" notation. - * - * @param string|null $key - * @return mixed - */ - abstract protected function prop(?string $key = null); - - /** - * Instantiate a new "scope" at the path of the given key. - * - * @param string $key - * @param \Closure $callback - * @return $this - */ - abstract protected function scope(string $key, Closure $callback); - - /** - * Disables the interaction check. - * - * @return $this - */ - abstract public function etc(); - - /** - * Instantiate a new "scope" on the first element. - * - * @param \Closure $callback - * @return $this - */ - abstract public function first(Closure $callback); -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Testing/Fluent/Concerns/Interaction.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Testing/Fluent/Concerns/Interaction.php deleted file mode 100644 index fc811fd9..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Testing/Fluent/Concerns/Interaction.php +++ /dev/null @@ -1,67 +0,0 @@ -interacted, true)) { - $this->interacted[] = $prop; - } - } - - /** - * Asserts that all properties have been interacted with. - * - * @return void - */ - public function interacted(): void - { - PHPUnit::assertSame( - [], - array_diff(array_keys($this->prop()), $this->interacted), - $this->path - ? sprintf('Unexpected properties were found in scope [%s].', $this->path) - : 'Unexpected properties were found on the root level.' - ); - } - - /** - * Disables the interaction check. - * - * @return $this - */ - public function etc(): self - { - $this->interacted = array_keys($this->prop()); - - return $this; - } - - /** - * Retrieve a prop within the current scope using "dot" notation. - * - * @param string|null $key - * @return mixed - */ - abstract protected function prop(?string $key = null); -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Testing/Fluent/Concerns/Matching.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Testing/Fluent/Concerns/Matching.php deleted file mode 100644 index cab4cb11..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Testing/Fluent/Concerns/Matching.php +++ /dev/null @@ -1,236 +0,0 @@ -has($key); - - $actual = $this->prop($key); - - if ($expected instanceof Closure) { - PHPUnit::assertTrue( - $expected(is_array($actual) ? Collection::make($actual) : $actual), - sprintf('Property [%s] was marked as invalid using a closure.', $this->dotPath($key)) - ); - - return $this; - } - - if ($expected instanceof Arrayable) { - $expected = $expected->toArray(); - } - - $this->ensureSorted($expected); - $this->ensureSorted($actual); - - PHPUnit::assertSame( - $expected, - $actual, - sprintf('Property [%s] does not match the expected value.', $this->dotPath($key)) - ); - - return $this; - } - - /** - * Asserts that the property does not match the expected value. - * - * @param string $key - * @param mixed|\Closure $expected - * @return $this - */ - public function whereNot(string $key, $expected): self - { - $this->has($key); - - $actual = $this->prop($key); - - if ($expected instanceof Closure) { - PHPUnit::assertFalse( - $expected(is_array($actual) ? Collection::make($actual) : $actual), - sprintf('Property [%s] was marked as invalid using a closure.', $this->dotPath($key)) - ); - - return $this; - } - - if ($expected instanceof Arrayable) { - $expected = $expected->toArray(); - } - - $this->ensureSorted($expected); - $this->ensureSorted($actual); - - PHPUnit::assertNotSame( - $expected, - $actual, - sprintf( - 'Property [%s] contains a value that should be missing: [%s, %s]', - $this->dotPath($key), - $key, - $expected - ) - ); - - return $this; - } - - /** - * Asserts that all properties match their expected values. - * - * @param array $bindings - * @return $this - */ - public function whereAll(array $bindings): self - { - foreach ($bindings as $key => $value) { - $this->where($key, $value); - } - - return $this; - } - - /** - * Asserts that the property is of the expected type. - * - * @param string $key - * @param string|array $expected - * @return $this - */ - public function whereType(string $key, $expected): self - { - $this->has($key); - - $actual = $this->prop($key); - - if (! is_array($expected)) { - $expected = explode('|', $expected); - } - - PHPUnit::assertContains( - strtolower(gettype($actual)), - $expected, - sprintf('Property [%s] is not of expected type [%s].', $this->dotPath($key), implode('|', $expected)) - ); - - return $this; - } - - /** - * Asserts that all properties are of their expected types. - * - * @param array $bindings - * @return $this - */ - public function whereAllType(array $bindings): self - { - foreach ($bindings as $key => $value) { - $this->whereType($key, $value); - } - - return $this; - } - - /** - * Asserts that the property contains the expected values. - * - * @param string $key - * @param mixed $expected - * @return $this - */ - public function whereContains(string $key, $expected) - { - $actual = Collection::make( - $this->prop($key) ?? $this->prop() - ); - - $missing = Collection::make($expected)->reject(function ($search) use ($key, $actual) { - if ($actual->containsStrict($key, $search)) { - return true; - } - - return $actual->containsStrict($search); - }); - - if ($missing->whereInstanceOf('Closure')->isNotEmpty()) { - PHPUnit::assertEmpty( - $missing->toArray(), - sprintf( - 'Property [%s] does not contain a value that passes the truth test within the given closure.', - $key, - ) - ); - } else { - PHPUnit::assertEmpty( - $missing->toArray(), - sprintf( - 'Property [%s] does not contain [%s].', - $key, - implode(', ', array_values($missing->toArray())) - ) - ); - } - - return $this; - } - - /** - * Ensures that all properties are sorted the same way, recursively. - * - * @param mixed $value - * @return void - */ - protected function ensureSorted(&$value): void - { - if (! is_array($value)) { - return; - } - - foreach ($value as &$arg) { - $this->ensureSorted($arg); - } - - ksort($value); - } - - /** - * Compose the absolute "dot" path to the given key. - * - * @param string $key - * @return string - */ - abstract protected function dotPath(string $key = ''): string; - - /** - * Ensure that the given prop exists. - * - * @param string $key - * @param null $value - * @param \Closure|null $scope - * @return $this - */ - abstract public function has(string $key, $value = null, ?Closure $scope = null); - - /** - * Retrieve a prop within the current scope using "dot" notation. - * - * @param string|null $key - * @return mixed - */ - abstract protected function prop(?string $key = null); -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Testing/TestResponse.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Testing/TestResponse.php deleted file mode 100644 index 79e6a325..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Testing/TestResponse.php +++ /dev/null @@ -1,1808 +0,0 @@ -baseResponse = $response; - $this->exceptions = new Collection; - } - - /** - * Create a new TestResponse from another response. - * - * @param \Illuminate\Http\Response $response - * @return static - */ - public static function fromBaseResponse($response) - { - return new static($response); - } - - /** - * Assert that the response has a successful status code. - * - * @return $this - */ - public function assertSuccessful() - { - PHPUnit::assertTrue( - $this->isSuccessful(), - $this->statusMessageWithDetails('>=200, <300', $this->getStatusCode()) - ); - - return $this; - } - - /** - * Assert that the Precognition request was successful. - * - * @return $this - */ - public function assertSuccessfulPrecognition() - { - $this->assertNoContent(); - - PHPUnit::assertTrue( - $this->headers->has('Precognition-Success'), - 'Header [Precognition-Success] not present on response.' - ); - - PHPUnit::assertSame( - 'true', - $this->headers->get('Precognition-Success'), - 'The Precognition-Success header was found, but the value is not `true`.' - ); - - return $this; - } - - /** - * Assert that the response is a server error. - * - * @return $this - */ - public function assertServerError() - { - PHPUnit::assertTrue( - $this->isServerError(), - $this->statusMessageWithDetails('>=500, < 600', $this->getStatusCode()) - ); - - return $this; - } - - /** - * Assert that the response has the given status code. - * - * @param int $status - * @return $this - */ - public function assertStatus($status) - { - $message = $this->statusMessageWithDetails($status, $actual = $this->getStatusCode()); - - PHPUnit::assertSame($status, $actual, $message); - - return $this; - } - - /** - * Get an assertion message for a status assertion containing extra details when available. - * - * @param string|int $expected - * @param string|int $actual - * @return string - */ - protected function statusMessageWithDetails($expected, $actual) - { - return "Expected response status code [{$expected}] but received {$actual}."; - } - - /** - * Assert whether the response is redirecting to a given URI. - * - * @param string|null $uri - * @return $this - */ - public function assertRedirect($uri = null) - { - PHPUnit::assertTrue( - $this->isRedirect(), - $this->statusMessageWithDetails('201, 301, 302, 303, 307, 308', $this->getStatusCode()), - ); - - if (! is_null($uri)) { - $this->assertLocation($uri); - } - - return $this; - } - - /** - * Assert whether the response is redirecting to a URI that contains the given URI. - * - * @param string $uri - * @return $this - */ - public function assertRedirectContains($uri) - { - PHPUnit::assertTrue( - $this->isRedirect(), - $this->statusMessageWithDetails('201, 301, 302, 303, 307, 308', $this->getStatusCode()), - ); - - PHPUnit::assertTrue( - Str::contains($this->headers->get('Location'), $uri), 'Redirect location ['.$this->headers->get('Location').'] does not contain ['.$uri.'].' - ); - - return $this; - } - - /** - * Assert whether the response is redirecting to a given route. - * - * @param string $name - * @param mixed $parameters - * @return $this - */ - public function assertRedirectToRoute($name, $parameters = []) - { - $uri = route($name, $parameters); - - PHPUnit::assertTrue( - $this->isRedirect(), - $this->statusMessageWithDetails('201, 301, 302, 303, 307, 308', $this->getStatusCode()), - ); - - $this->assertLocation($uri); - - return $this; - } - - /** - * Assert whether the response is redirecting to a given signed route. - * - * @param string|null $name - * @param mixed $parameters - * @return $this - */ - public function assertRedirectToSignedRoute($name = null, $parameters = []) - { - if (! is_null($name)) { - $uri = route($name, $parameters); - } - - PHPUnit::assertTrue( - $this->isRedirect(), - $this->statusMessageWithDetails('201, 301, 302, 303, 307, 308', $this->getStatusCode()), - ); - - $request = Request::create($this->headers->get('Location')); - - PHPUnit::assertTrue( - $request->hasValidSignature(), 'The response is not a redirect to a signed route.' - ); - - if (! is_null($name)) { - $expectedUri = rtrim($request->fullUrlWithQuery([ - 'signature' => null, - 'expires' => null, - ]), '?'); - - PHPUnit::assertEquals( - app('url')->to($uri), $expectedUri - ); - } - - return $this; - } - - /** - * Asserts that the response contains the given header and equals the optional value. - * - * @param string $headerName - * @param mixed $value - * @return $this - */ - public function assertHeader($headerName, $value = null) - { - PHPUnit::assertTrue( - $this->headers->has($headerName), "Header [{$headerName}] not present on response." - ); - - $actual = $this->headers->get($headerName); - - if (! is_null($value)) { - PHPUnit::assertEquals( - $value, $this->headers->get($headerName), - "Header [{$headerName}] was found, but value [{$actual}] does not match [{$value}]." - ); - } - - return $this; - } - - /** - * Asserts that the response does not contain the given header. - * - * @param string $headerName - * @return $this - */ - public function assertHeaderMissing($headerName) - { - PHPUnit::assertFalse( - $this->headers->has($headerName), "Unexpected header [{$headerName}] is present on response." - ); - - return $this; - } - - /** - * Assert that the current location header matches the given URI. - * - * @param string $uri - * @return $this - */ - public function assertLocation($uri) - { - PHPUnit::assertEquals( - app('url')->to($uri), app('url')->to($this->headers->get('Location', '')) - ); - - return $this; - } - - /** - * Assert that the response offers a file download. - * - * @param string|null $filename - * @return $this - */ - public function assertDownload($filename = null) - { - $contentDisposition = explode(';', $this->headers->get('content-disposition', '')); - - if (trim($contentDisposition[0]) !== 'attachment') { - PHPUnit::fail( - 'Response does not offer a file download.'.PHP_EOL. - 'Disposition ['.trim($contentDisposition[0]).'] found in header, [attachment] expected.' - ); - } - - if (! is_null($filename)) { - if (isset($contentDisposition[1]) && - trim(explode('=', $contentDisposition[1])[0]) !== 'filename') { - PHPUnit::fail( - 'Unsupported Content-Disposition header provided.'.PHP_EOL. - 'Disposition ['.trim(explode('=', $contentDisposition[1])[0]).'] found in header, [filename] expected.' - ); - } - - $message = "Expected file [{$filename}] is not present in Content-Disposition header."; - - if (! isset($contentDisposition[1])) { - PHPUnit::fail($message); - } else { - PHPUnit::assertSame( - $filename, - isset(explode('=', $contentDisposition[1])[1]) - ? trim(explode('=', $contentDisposition[1])[1], " \"'") - : '', - $message - ); - - return $this; - } - } else { - PHPUnit::assertTrue(true); - - return $this; - } - } - - /** - * Asserts that the response contains the given cookie and equals the optional value. - * - * @param string $cookieName - * @param mixed $value - * @return $this - */ - public function assertPlainCookie($cookieName, $value = null) - { - $this->assertCookie($cookieName, $value, false); - - return $this; - } - - /** - * Asserts that the response contains the given cookie and equals the optional value. - * - * @param string $cookieName - * @param mixed $value - * @param bool $encrypted - * @param bool $unserialize - * @return $this - */ - public function assertCookie($cookieName, $value = null, $encrypted = true, $unserialize = false) - { - PHPUnit::assertNotNull( - $cookie = $this->getCookie($cookieName, $encrypted && ! is_null($value), $unserialize), - "Cookie [{$cookieName}] not present on response." - ); - - if (! $cookie || is_null($value)) { - return $this; - } - - $cookieValue = $cookie->getValue(); - - PHPUnit::assertEquals( - $value, $cookieValue, - "Cookie [{$cookieName}] was found, but value [{$cookieValue}] does not match [{$value}]." - ); - - return $this; - } - - /** - * Asserts that the response contains the given cookie and is expired. - * - * @param string $cookieName - * @return $this - */ - public function assertCookieExpired($cookieName) - { - PHPUnit::assertNotNull( - $cookie = $this->getCookie($cookieName, false), - "Cookie [{$cookieName}] not present on response." - ); - - $expiresAt = Carbon::createFromTimestamp($cookie->getExpiresTime()); - - PHPUnit::assertTrue( - $cookie->getExpiresTime() !== 0 && $expiresAt->lessThan(Carbon::now()), - "Cookie [{$cookieName}] is not expired, it expires at [{$expiresAt}]." - ); - - return $this; - } - - /** - * Asserts that the response contains the given cookie and is not expired. - * - * @param string $cookieName - * @return $this - */ - public function assertCookieNotExpired($cookieName) - { - PHPUnit::assertNotNull( - $cookie = $this->getCookie($cookieName, false), - "Cookie [{$cookieName}] not present on response." - ); - - $expiresAt = Carbon::createFromTimestamp($cookie->getExpiresTime()); - - PHPUnit::assertTrue( - $cookie->getExpiresTime() === 0 || $expiresAt->greaterThan(Carbon::now()), - "Cookie [{$cookieName}] is expired, it expired at [{$expiresAt}]." - ); - - return $this; - } - - /** - * Asserts that the response does not contain the given cookie. - * - * @param string $cookieName - * @return $this - */ - public function assertCookieMissing($cookieName) - { - PHPUnit::assertNull( - $this->getCookie($cookieName, false), - "Cookie [{$cookieName}] is present on response." - ); - - return $this; - } - - /** - * Get the given cookie from the response. - * - * @param string $cookieName - * @param bool $decrypt - * @param bool $unserialize - * @return \Symfony\Component\HttpFoundation\Cookie|null - */ - public function getCookie($cookieName, $decrypt = true, $unserialize = false) - { - foreach ($this->headers->getCookies() as $cookie) { - if ($cookie->getName() === $cookieName) { - if (! $decrypt) { - return $cookie; - } - - $decryptedValue = CookieValuePrefix::remove( - app('encrypter')->decrypt($cookie->getValue(), $unserialize) - ); - - return new Cookie( - $cookie->getName(), - $decryptedValue, - $cookie->getExpiresTime(), - $cookie->getPath(), - $cookie->getDomain(), - $cookie->isSecure(), - $cookie->isHttpOnly(), - $cookie->isRaw(), - $cookie->getSameSite(), - $cookie->isPartitioned() - ); - } - } - } - - /** - * Assert that the given string matches the response content. - * - * @param string $value - * @return $this - */ - public function assertContent($value) - { - PHPUnit::assertSame($value, $this->content()); - - return $this; - } - - /** - * Assert that the given string matches the streamed response content. - * - * @param string $value - * @return $this - */ - public function assertStreamedContent($value) - { - PHPUnit::assertSame($value, $this->streamedContent()); - - return $this; - } - - /** - * Assert that the given array matches the streamed JSON response content. - * - * @param array $value - * @return $this - */ - public function assertStreamedJsonContent($value) - { - return $this->assertStreamedContent(json_encode($value, JSON_THROW_ON_ERROR)); - } - - /** - * Assert that the given string or array of strings are contained within the response. - * - * @param string|array $value - * @param bool $escape - * @return $this - */ - public function assertSee($value, $escape = true) - { - $value = Arr::wrap($value); - - $values = $escape ? array_map('e', $value) : $value; - - foreach ($values as $value) { - PHPUnit::assertStringContainsString((string) $value, $this->getContent()); - } - - return $this; - } - - /** - * Assert that the given strings are contained in order within the response. - * - * @param array $values - * @param bool $escape - * @return $this - */ - public function assertSeeInOrder(array $values, $escape = true) - { - $values = $escape ? array_map('e', $values) : $values; - - PHPUnit::assertThat($values, new SeeInOrder($this->getContent())); - - return $this; - } - - /** - * Assert that the given string or array of strings are contained within the response text. - * - * @param string|array $value - * @param bool $escape - * @return $this - */ - public function assertSeeText($value, $escape = true) - { - $value = Arr::wrap($value); - - $values = $escape ? array_map('e', $value) : $value; - - $content = strip_tags($this->getContent()); - - foreach ($values as $value) { - PHPUnit::assertStringContainsString((string) $value, $content); - } - - return $this; - } - - /** - * Assert that the given strings are contained in order within the response text. - * - * @param array $values - * @param bool $escape - * @return $this - */ - public function assertSeeTextInOrder(array $values, $escape = true) - { - $values = $escape ? array_map('e', $values) : $values; - - PHPUnit::assertThat($values, new SeeInOrder(strip_tags($this->getContent()))); - - return $this; - } - - /** - * Assert that the given string or array of strings are not contained within the response. - * - * @param string|array $value - * @param bool $escape - * @return $this - */ - public function assertDontSee($value, $escape = true) - { - $value = Arr::wrap($value); - - $values = $escape ? array_map('e', $value) : $value; - - foreach ($values as $value) { - PHPUnit::assertStringNotContainsString((string) $value, $this->getContent()); - } - - return $this; - } - - /** - * Assert that the given string or array of strings are not contained within the response text. - * - * @param string|array $value - * @param bool $escape - * @return $this - */ - public function assertDontSeeText($value, $escape = true) - { - $value = Arr::wrap($value); - - $values = $escape ? array_map('e', $value) : $value; - - $content = strip_tags($this->getContent()); - - foreach ($values as $value) { - PHPUnit::assertStringNotContainsString((string) $value, $content); - } - - return $this; - } - - /** - * Assert that the response is a superset of the given JSON. - * - * @param array|callable $value - * @param bool $strict - * @return $this - */ - public function assertJson($value, $strict = false) - { - $json = $this->decodeResponseJson(); - - if (is_array($value)) { - $json->assertSubset($value, $strict); - } else { - $assert = AssertableJson::fromAssertableJsonString($json); - - $value($assert); - - if (Arr::isAssoc($assert->toArray())) { - $assert->interacted(); - } - } - - return $this; - } - - /** - * Assert that the expected value and type exists at the given path in the response. - * - * @param string $path - * @param mixed $expect - * @return $this - */ - public function assertJsonPath($path, $expect) - { - $this->decodeResponseJson()->assertPath($path, $expect); - - return $this; - } - - /** - * Assert that the given path in the response contains all of the expected values without looking at the order. - * - * @param string $path - * @param array $expect - * @return $this - */ - public function assertJsonPathCanonicalizing($path, array $expect) - { - $this->decodeResponseJson()->assertPathCanonicalizing($path, $expect); - - return $this; - } - - /** - * Assert that the response has the exact given JSON. - * - * @param array $data - * @return $this - */ - public function assertExactJson(array $data) - { - $this->decodeResponseJson()->assertExact($data); - - return $this; - } - - /** - * Assert that the response has the similar JSON as given. - * - * @param array $data - * @return $this - */ - public function assertSimilarJson(array $data) - { - $this->decodeResponseJson()->assertSimilar($data); - - return $this; - } - - /** - * Assert that the response contains the given JSON fragment. - * - * @param array $data - * @return $this - */ - public function assertJsonFragment(array $data) - { - $this->decodeResponseJson()->assertFragment($data); - - return $this; - } - - /** - * Assert that the response does not contain the given JSON fragment. - * - * @param array $data - * @param bool $exact - * @return $this - */ - public function assertJsonMissing(array $data, $exact = false) - { - $this->decodeResponseJson()->assertMissing($data, $exact); - - return $this; - } - - /** - * Assert that the response does not contain the exact JSON fragment. - * - * @param array $data - * @return $this - */ - public function assertJsonMissingExact(array $data) - { - $this->decodeResponseJson()->assertMissingExact($data); - - return $this; - } - - /** - * Assert that the response does not contain the given path. - * - * @param string $path - * @return $this - */ - public function assertJsonMissingPath(string $path) - { - $this->decodeResponseJson()->assertMissingPath($path); - - return $this; - } - - /** - * Assert that the response has a given JSON structure. - * - * @param array|null $structure - * @param array|null $responseData - * @return $this - */ - public function assertJsonStructure(?array $structure = null, $responseData = null) - { - $this->decodeResponseJson()->assertStructure($structure, $responseData); - - return $this; - } - - /** - * Assert that the response JSON has the expected count of items at the given key. - * - * @param int $count - * @param string|null $key - * @return $this - */ - public function assertJsonCount(int $count, $key = null) - { - $this->decodeResponseJson()->assertCount($count, $key); - - return $this; - } - - /** - * Assert that the response has the given JSON validation errors. - * - * @param string|array $errors - * @param string $responseKey - * @return $this - */ - public function assertJsonValidationErrors($errors, $responseKey = 'errors') - { - $errors = Arr::wrap($errors); - - PHPUnit::assertNotEmpty($errors, 'No validation errors were provided.'); - - $jsonErrors = Arr::get($this->json(), $responseKey) ?? []; - - $errorMessage = $jsonErrors - ? 'Response has the following JSON validation errors:'. - PHP_EOL.PHP_EOL.json_encode($jsonErrors, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE).PHP_EOL - : 'Response does not have JSON validation errors.'; - - foreach ($errors as $key => $value) { - if (is_int($key)) { - $this->assertJsonValidationErrorFor($value, $responseKey); - - continue; - } - - $this->assertJsonValidationErrorFor($key, $responseKey); - - foreach (Arr::wrap($value) as $expectedMessage) { - $errorMissing = true; - - foreach (Arr::wrap($jsonErrors[$key]) as $jsonErrorMessage) { - if (Str::contains($jsonErrorMessage, $expectedMessage)) { - $errorMissing = false; - - break; - } - } - } - - if ($errorMissing) { - PHPUnit::fail( - "Failed to find a validation error in the response for key and message: '$key' => '$expectedMessage'".PHP_EOL.PHP_EOL.$errorMessage - ); - } - } - - return $this; - } - - /** - * Assert the response has any JSON validation errors for the given key. - * - * @param string $key - * @param string $responseKey - * @return $this - */ - public function assertJsonValidationErrorFor($key, $responseKey = 'errors') - { - $jsonErrors = Arr::get($this->json(), $responseKey) ?? []; - - $errorMessage = $jsonErrors - ? 'Response has the following JSON validation errors:'. - PHP_EOL.PHP_EOL.json_encode($jsonErrors, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE).PHP_EOL - : 'Response does not have JSON validation errors.'; - - PHPUnit::assertArrayHasKey( - $key, - $jsonErrors, - "Failed to find a validation error in the response for key: '{$key}'".PHP_EOL.PHP_EOL.$errorMessage - ); - - return $this; - } - - /** - * Assert that the response has no JSON validation errors for the given keys. - * - * @param string|array|null $keys - * @param string $responseKey - * @return $this - */ - public function assertJsonMissingValidationErrors($keys = null, $responseKey = 'errors') - { - if ($this->getContent() === '') { - PHPUnit::assertTrue(true); - - return $this; - } - - $json = $this->json(); - - if (! Arr::has($json, $responseKey)) { - PHPUnit::assertTrue(true); - - return $this; - } - - $errors = Arr::get($json, $responseKey, []); - - if (is_null($keys) && count($errors) > 0) { - PHPUnit::fail( - 'Response has unexpected validation errors: '.PHP_EOL.PHP_EOL. - json_encode($errors, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) - ); - } - - foreach (Arr::wrap($keys) as $key) { - PHPUnit::assertFalse( - isset($errors[$key]), - "Found unexpected validation error for key: '{$key}'" - ); - } - - return $this; - } - - /** - * Assert that the given key is a JSON array. - * - * @param string|null $key - * @return $this - */ - public function assertJsonIsArray($key = null) - { - $data = $this->json($key); - - $encodedData = json_encode($data); - - PHPUnit::assertTrue( - is_array($data) - && str_starts_with($encodedData, '[') - && str_ends_with($encodedData, ']') - ); - - return $this; - } - - /** - * Assert that the given key is a JSON object. - * - * @param string|null $key - * @return $this - */ - public function assertJsonIsObject($key = null) - { - $data = $this->json($key); - - $encodedData = json_encode($data); - - PHPUnit::assertTrue( - is_array($data) - && str_starts_with($encodedData, '{') - && str_ends_with($encodedData, '}') - ); - - return $this; - } - - /** - * Validate and return the decoded response JSON. - * - * @return \Illuminate\Testing\AssertableJsonString - * - * @throws \Throwable - */ - public function decodeResponseJson() - { - $testJson = new AssertableJsonString($this->getContent()); - - $decodedResponse = $testJson->json(); - - if (is_null($decodedResponse) || $decodedResponse === false) { - if ($this->exception) { - throw $this->exception; - } else { - PHPUnit::fail('Invalid JSON was returned from the route.'); - } - } - - return $testJson; - } - - /** - * Validate and return the decoded response JSON. - * - * @param string|null $key - * @return mixed - */ - public function json($key = null) - { - return $this->decodeResponseJson()->json($key); - } - - /** - * Get the JSON decoded body of the response as a collection. - * - * @param string|null $key - * @return \Illuminate\Support\Collection - */ - public function collect($key = null) - { - return Collection::make($this->json($key)); - } - - /** - * Assert that the response view equals the given value. - * - * @param string $value - * @return $this - */ - public function assertViewIs($value) - { - $this->ensureResponseHasView(); - - PHPUnit::assertEquals($value, $this->original->name()); - - return $this; - } - - /** - * Assert that the response view has a given piece of bound data. - * - * @param string|array $key - * @param mixed $value - * @return $this - */ - public function assertViewHas($key, $value = null) - { - if (is_array($key)) { - return $this->assertViewHasAll($key); - } - - $this->ensureResponseHasView(); - - if (is_null($value)) { - PHPUnit::assertTrue(Arr::has($this->original->gatherData(), $key)); - } elseif ($value instanceof Closure) { - PHPUnit::assertTrue($value(Arr::get($this->original->gatherData(), $key))); - } elseif ($value instanceof Model) { - PHPUnit::assertTrue($value->is(Arr::get($this->original->gatherData(), $key))); - } elseif ($value instanceof EloquentCollection) { - $actual = Arr::get($this->original->gatherData(), $key); - - PHPUnit::assertInstanceOf(EloquentCollection::class, $actual); - PHPUnit::assertSameSize($value, $actual); - - $value->each(fn ($item, $index) => PHPUnit::assertTrue($actual->get($index)->is($item))); - } else { - PHPUnit::assertEquals($value, Arr::get($this->original->gatherData(), $key)); - } - - return $this; - } - - /** - * Assert that the response view has a given list of bound data. - * - * @param array $bindings - * @return $this - */ - public function assertViewHasAll(array $bindings) - { - foreach ($bindings as $key => $value) { - if (is_int($key)) { - $this->assertViewHas($value); - } else { - $this->assertViewHas($key, $value); - } - } - - return $this; - } - - /** - * Get a piece of data from the original view. - * - * @param string $key - * @return mixed - */ - public function viewData($key) - { - $this->ensureResponseHasView(); - - return $this->original->gatherData()[$key]; - } - - /** - * Assert that the response view is missing a piece of bound data. - * - * @param string $key - * @return $this - */ - public function assertViewMissing($key) - { - $this->ensureResponseHasView(); - - PHPUnit::assertFalse(Arr::has($this->original->gatherData(), $key)); - - return $this; - } - - /** - * Ensure that the response has a view as its original content. - * - * @return $this - */ - protected function ensureResponseHasView() - { - if (! $this->responseHasView()) { - return PHPUnit::fail('The response is not a view.'); - } - - return $this; - } - - /** - * Determine if the original response is a view. - * - * @return bool - */ - protected function responseHasView() - { - return isset($this->original) && $this->original instanceof View; - } - - /** - * Assert that the given keys do not have validation errors. - * - * @param string|array|null $keys - * @param string $errorBag - * @param string $responseKey - * @return $this - */ - public function assertValid($keys = null, $errorBag = 'default', $responseKey = 'errors') - { - if ($this->baseResponse->headers->get('Content-Type') === 'application/json') { - return $this->assertJsonMissingValidationErrors($keys, $responseKey); - } - - if ($this->session()->get('errors')) { - $errors = $this->session()->get('errors')->getBag($errorBag)->getMessages(); - } else { - $errors = []; - } - - if (empty($errors)) { - PHPUnit::assertTrue(true); - - return $this; - } - - if (is_null($keys) && count($errors) > 0) { - PHPUnit::fail( - 'Response has unexpected validation errors: '.PHP_EOL.PHP_EOL. - json_encode($errors, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) - ); - } - - foreach (Arr::wrap($keys) as $key) { - PHPUnit::assertFalse( - isset($errors[$key]), - "Found unexpected validation error for key: '{$key}'" - ); - } - - return $this; - } - - /** - * Assert that the response has the given validation errors. - * - * @param string|array|null $errors - * @param string $errorBag - * @param string $responseKey - * @return $this - */ - public function assertInvalid($errors = null, - $errorBag = 'default', - $responseKey = 'errors') - { - if ($this->baseResponse->headers->get('Content-Type') === 'application/json') { - return $this->assertJsonValidationErrors($errors, $responseKey); - } - - $this->assertSessionHas('errors'); - - $sessionErrors = $this->session()->get('errors')->getBag($errorBag)->getMessages(); - - $errorMessage = $sessionErrors - ? 'Response has the following validation errors in the session:'. - PHP_EOL.PHP_EOL.json_encode($sessionErrors, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE).PHP_EOL - : 'Response does not have validation errors in the session.'; - - foreach (Arr::wrap($errors) as $key => $value) { - PHPUnit::assertArrayHasKey( - $resolvedKey = (is_int($key)) ? $value : $key, - $sessionErrors, - "Failed to find a validation error in session for key: '{$resolvedKey}'".PHP_EOL.PHP_EOL.$errorMessage - ); - - foreach (Arr::wrap($value) as $message) { - if (! is_int($key)) { - $hasError = false; - - foreach (Arr::wrap($sessionErrors[$key]) as $sessionErrorMessage) { - if (Str::contains($sessionErrorMessage, $message)) { - $hasError = true; - - break; - } - } - - if (! $hasError) { - PHPUnit::fail( - "Failed to find a validation error for key and message: '$key' => '$message'".PHP_EOL.PHP_EOL.$errorMessage - ); - } - } - } - } - - return $this; - } - - /** - * Assert that the session has a given value. - * - * @param string|array $key - * @param mixed $value - * @return $this - */ - public function assertSessionHas($key, $value = null) - { - if (is_array($key)) { - return $this->assertSessionHasAll($key); - } - - if (is_null($value)) { - PHPUnit::assertTrue( - $this->session()->has($key), - "Session is missing expected key [{$key}]." - ); - } elseif ($value instanceof Closure) { - PHPUnit::assertTrue($value($this->session()->get($key))); - } else { - PHPUnit::assertEquals($value, $this->session()->get($key)); - } - - return $this; - } - - /** - * Assert that the session has a given list of values. - * - * @param array $bindings - * @return $this - */ - public function assertSessionHasAll(array $bindings) - { - foreach ($bindings as $key => $value) { - if (is_int($key)) { - $this->assertSessionHas($value); - } else { - $this->assertSessionHas($key, $value); - } - } - - return $this; - } - - /** - * Assert that the session has a given value in the flashed input array. - * - * @param string|array $key - * @param mixed $value - * @return $this - */ - public function assertSessionHasInput($key, $value = null) - { - if (is_array($key)) { - foreach ($key as $k => $v) { - if (is_int($k)) { - $this->assertSessionHasInput($v); - } else { - $this->assertSessionHasInput($k, $v); - } - } - - return $this; - } - - if (is_null($value)) { - PHPUnit::assertTrue( - $this->session()->hasOldInput($key), - "Session is missing expected key [{$key}]." - ); - } elseif ($value instanceof Closure) { - PHPUnit::assertTrue($value($this->session()->getOldInput($key))); - } else { - PHPUnit::assertEquals($value, $this->session()->getOldInput($key)); - } - - return $this; - } - - /** - * Assert that the session has the given errors. - * - * @param string|array $keys - * @param mixed $format - * @param string $errorBag - * @return $this - */ - public function assertSessionHasErrors($keys = [], $format = null, $errorBag = 'default') - { - $this->assertSessionHas('errors'); - - $keys = (array) $keys; - - $errors = $this->session()->get('errors')->getBag($errorBag); - - foreach ($keys as $key => $value) { - if (is_int($key)) { - PHPUnit::assertTrue($errors->has($value), "Session missing error: $value"); - } else { - PHPUnit::assertContains(is_bool($value) ? (string) $value : $value, $errors->get($key, $format)); - } - } - - return $this; - } - - /** - * Assert that the session is missing the given errors. - * - * @param string|array $keys - * @param string|null $format - * @param string $errorBag - * @return $this - */ - public function assertSessionDoesntHaveErrors($keys = [], $format = null, $errorBag = 'default') - { - $keys = (array) $keys; - - if (empty($keys)) { - return $this->assertSessionHasNoErrors(); - } - - if (is_null($this->session()->get('errors'))) { - PHPUnit::assertTrue(true); - - return $this; - } - - $errors = $this->session()->get('errors')->getBag($errorBag); - - foreach ($keys as $key => $value) { - if (is_int($key)) { - PHPUnit::assertFalse($errors->has($value), "Session has unexpected error: $value"); - } else { - PHPUnit::assertNotContains($value, $errors->get($key, $format)); - } - } - - return $this; - } - - /** - * Assert that the session has no errors. - * - * @return $this - */ - public function assertSessionHasNoErrors() - { - $hasErrors = $this->session()->has('errors'); - - PHPUnit::assertFalse( - $hasErrors, - 'Session has unexpected errors: '.PHP_EOL.PHP_EOL. - json_encode((function () use ($hasErrors) { - $errors = []; - - $sessionErrors = $this->session()->get('errors'); - - if ($hasErrors && is_a($sessionErrors, ViewErrorBag::class)) { - foreach ($sessionErrors->getBags() as $bag => $messages) { - if (is_a($messages, MessageBag::class)) { - $errors[$bag] = $messages->all(); - } - } - } - - return $errors; - })(), JSON_THROW_ON_ERROR | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE), - ); - - return $this; - } - - /** - * Assert that the session has the given errors. - * - * @param string $errorBag - * @param string|array $keys - * @param mixed $format - * @return $this - */ - public function assertSessionHasErrorsIn($errorBag, $keys = [], $format = null) - { - return $this->assertSessionHasErrors($keys, $format, $errorBag); - } - - /** - * Assert that the session does not have a given key. - * - * @param string|array $key - * @return $this - */ - public function assertSessionMissing($key) - { - if (is_array($key)) { - foreach ($key as $value) { - $this->assertSessionMissing($value); - } - } else { - PHPUnit::assertFalse( - $this->session()->has($key), - "Session has unexpected key [{$key}]." - ); - } - - return $this; - } - - /** - * Get the current session store. - * - * @return \Illuminate\Session\Store - */ - protected function session() - { - $session = app('session.store'); - - if (! $session->isStarted()) { - $session->start(); - } - - return $session; - } - - /** - * Dump the content from the response and end the script. - * - * @return never - */ - public function dd() - { - $this->dump(); - - exit(1); - } - - /** - * Dump the headers from the response and end the script. - * - * @return never - */ - public function ddHeaders() - { - $this->dumpHeaders(); - - exit(1); - } - - /** - * Dump the session from the response and end the script. - * - * @param string|array $keys - * @return never - */ - public function ddSession($keys = []) - { - $this->dumpSession($keys); - - exit(1); - } - - /** - * Dump the content from the response. - * - * @param string|null $key - * @return $this - */ - public function dump($key = null) - { - $content = $this->getContent(); - - $json = json_decode($content); - - if (json_last_error() === JSON_ERROR_NONE) { - $content = $json; - } - - if (! is_null($key)) { - dump(data_get($content, $key)); - } else { - dump($content); - } - - return $this; - } - - /** - * Dump the headers from the response. - * - * @return $this - */ - public function dumpHeaders() - { - dump($this->headers->all()); - - return $this; - } - - /** - * Dump the session from the response. - * - * @param string|array $keys - * @return $this - */ - public function dumpSession($keys = []) - { - $keys = (array) $keys; - - if (empty($keys)) { - dump($this->session()->all()); - } else { - dump($this->session()->only($keys)); - } - - return $this; - } - - /** - * Get the streamed content from the response. - * - * @return string - */ - public function streamedContent() - { - if (! is_null($this->streamedContent)) { - return $this->streamedContent; - } - - if (! $this->baseResponse instanceof StreamedResponse - && ! $this->baseResponse instanceof StreamedJsonResponse) { - PHPUnit::fail('The response is not a streamed response.'); - } - - ob_start(function (string $buffer): string { - $this->streamedContent .= $buffer; - - return ''; - }); - - $this->sendContent(); - - ob_end_clean(); - - return $this->streamedContent; - } - - /** - * Set the previous exceptions on the response. - * - * @param \Illuminate\Support\Collection $exceptions - * @return $this - */ - public function withExceptions(Collection $exceptions) - { - $this->exceptions = $exceptions; - - return $this; - } - - /** - * This method is called when test method did not execute successfully. - * - * @param \Throwable $exception - * @return \Throwable - */ - public function transformNotSuccessfulException($exception) - { - if (! $exception instanceof ExpectationFailedException) { - return $exception; - } - - if ($lastException = $this->exceptions->last()) { - return $this->appendExceptionToException($lastException, $exception); - } - - if ($this->baseResponse instanceof RedirectResponse) { - $session = $this->baseResponse->getSession(); - - if (! is_null($session) && $session->has('errors')) { - return $this->appendErrorsToException($session->get('errors')->all(), $exception); - } - } - - if ($this->baseResponse->headers->get('Content-Type') === 'application/json') { - $testJson = new AssertableJsonString($this->getContent()); - - if (isset($testJson['errors'])) { - return $this->appendErrorsToException($testJson->json(), $exception, true); - } - } - - return $exception; - } - - /** - * Append an exception to the message of another exception. - * - * @param \Throwable $exceptionToAppend - * @param \Throwable $exception - * @return \Throwable - */ - protected function appendExceptionToException($exceptionToAppend, $exception) - { - $exceptionMessage = is_string($exceptionToAppend) ? $exceptionToAppend : $exceptionToAppend->getMessage(); - - $exceptionToAppend = (string) $exceptionToAppend; - - $message = <<<"EOF" - The following exception occurred during the last request: - - $exceptionToAppend - - ---------------------------------------------------------------------------------- - - $exceptionMessage - EOF; - - return $this->appendMessageToException($message, $exception); - } - - /** - * Append errors to an exception message. - * - * @param array $errors - * @param \Throwable $exception - * @param bool $json - * @return \Throwable - */ - protected function appendErrorsToException($errors, $exception, $json = false) - { - $errors = $json - ? json_encode($errors, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) - : implode(PHP_EOL, Arr::flatten($errors)); - - // JSON error messages may already contain the errors, so we shouldn't duplicate them... - if (str_contains($exception->getMessage(), $errors)) { - return $exception; - } - - $message = <<<"EOF" - The following errors occurred during the last request: - - $errors - EOF; - - return $this->appendMessageToException($message, $exception); - } - - /** - * Append a message to an exception. - * - * @param string $message - * @param \Throwable $exception - * @return \Throwable - */ - protected function appendMessageToException($message, $exception) - { - $property = new ReflectionProperty($exception, 'message'); - - $property->setValue( - $exception, - $exception->getMessage().PHP_EOL.PHP_EOL.$message.PHP_EOL - ); - - return $exception; - } - - /** - * Dynamically access base response parameters. - * - * @param string $key - * @return mixed - */ - public function __get($key) - { - return $this->baseResponse->{$key}; - } - - /** - * Proxy isset() checks to the underlying base response. - * - * @param string $key - * @return bool - */ - public function __isset($key) - { - return isset($this->baseResponse->{$key}); - } - - /** - * Determine if the given offset exists. - * - * @param string $offset - * @return bool - */ - public function offsetExists($offset): bool - { - return $this->responseHasView() - ? isset($this->original->gatherData()[$offset]) - : isset($this->json()[$offset]); - } - - /** - * Get the value for a given offset. - * - * @param string $offset - * @return mixed - */ - public function offsetGet($offset): mixed - { - return $this->responseHasView() - ? $this->viewData($offset) - : $this->json()[$offset]; - } - - /** - * Set the value at the given offset. - * - * @param string $offset - * @param mixed $value - * @return void - * - * @throws \LogicException - */ - public function offsetSet($offset, $value): void - { - throw new LogicException('Response data may not be mutated using array access.'); - } - - /** - * Unset the value at the given offset. - * - * @param string $offset - * @return void - * - * @throws \LogicException - */ - public function offsetUnset($offset): void - { - throw new LogicException('Response data may not be mutated using array access.'); - } - - /** - * Handle dynamic calls into macros or pass missing methods to the base response. - * - * @param string $method - * @param array $args - * @return mixed - */ - public function __call($method, $args) - { - if (static::hasMacro($method)) { - return $this->macroCall($method, $args); - } - - return $this->baseResponse->{$method}(...$args); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Validation/Concerns/FormatsMessages.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Validation/Concerns/FormatsMessages.php deleted file mode 100644 index 39b68f9c..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Validation/Concerns/FormatsMessages.php +++ /dev/null @@ -1,523 +0,0 @@ -replacePlaceholderInString($attribute); - - $inlineMessage = $this->getInlineMessage($attribute, $rule); - - // First we will retrieve the custom message for the validation rule if one - // exists. If a custom validation message is being used we'll return the - // custom message, otherwise we'll keep searching for a valid message. - if (! is_null($inlineMessage)) { - return $inlineMessage; - } - - $lowerRule = Str::snake($rule); - - $customKey = "validation.custom.{$attribute}.{$lowerRule}"; - - $customMessage = $this->getCustomMessageFromTranslator( - in_array($rule, $this->sizeRules) - ? [$customKey.".{$this->getAttributeType($attribute)}", $customKey] - : $customKey - ); - - // First we check for a custom defined validation message for the attribute - // and rule. This allows the developer to specify specific messages for - // only some attributes and rules that need to get specially formed. - if ($customMessage !== $customKey) { - return $customMessage; - } - - // If the rule being validated is a "size" rule, we will need to gather the - // specific error message for the type of attribute being validated such - // as a number, file or string which all have different message types. - elseif (in_array($rule, $this->sizeRules)) { - return $this->getSizeMessage($attributeWithPlaceholders, $rule); - } - - // Finally, if no developer specified messages have been set, and no other - // special messages apply for this rule, we will just pull the default - // messages out of the translator service for this validation rule. - $key = "validation.{$lowerRule}"; - - if ($key !== ($value = $this->translator->get($key))) { - return $value; - } - - return $this->getFromLocalArray( - $attribute, $lowerRule, $this->fallbackMessages - ) ?: $key; - } - - /** - * Get the proper inline error message for standard and size rules. - * - * @param string $attribute - * @param string $rule - * @return string|null - */ - protected function getInlineMessage($attribute, $rule) - { - $inlineEntry = $this->getFromLocalArray($attribute, Str::snake($rule)); - - return is_array($inlineEntry) && in_array($rule, $this->sizeRules) - ? $inlineEntry[$this->getAttributeType($attribute)] - : $inlineEntry; - } - - /** - * Get the inline message for a rule if it exists. - * - * @param string $attribute - * @param string $lowerRule - * @param array|null $source - * @return string|null - */ - protected function getFromLocalArray($attribute, $lowerRule, $source = null) - { - $source = $source ?: $this->customMessages; - - $keys = ["{$attribute}.{$lowerRule}", $lowerRule, $attribute]; - - // First we will check for a custom message for an attribute specific rule - // message for the fields, then we will check for a general custom line - // that is not attribute specific. If we find either we'll return it. - foreach ($keys as $key) { - foreach (array_keys($source) as $sourceKey) { - if (str_contains($sourceKey, '*')) { - $pattern = str_replace('\*', '([^.]*)', preg_quote($sourceKey, '#')); - - if (preg_match('#^'.$pattern.'\z#u', $key) === 1) { - $message = $source[$sourceKey]; - - if (is_array($message) && isset($message[$lowerRule])) { - return $message[$lowerRule]; - } - - return $message; - } - - continue; - } - - if (Str::is($sourceKey, $key)) { - $message = $source[$sourceKey]; - - if ($sourceKey === $attribute && is_array($message) && isset($message[$lowerRule])) { - return $message[$lowerRule]; - } - - return $message; - } - } - } - } - - /** - * Get the custom error message from the translator. - * - * @param array|string $keys - * @return string - */ - protected function getCustomMessageFromTranslator($keys) - { - foreach (Arr::wrap($keys) as $key) { - if (($message = $this->translator->get($key)) !== $key) { - return $message; - } - - // If an exact match was not found for the key, we will collapse all of these - // messages and loop through them and try to find a wildcard match for the - // given key. Otherwise, we will simply return the key's value back out. - $shortKey = preg_replace( - '/^validation\.custom\./', '', $key - ); - - $message = $this->getWildcardCustomMessages(Arr::dot( - (array) $this->translator->get('validation.custom') - ), $shortKey, $key); - - if ($message !== $key) { - return $message; - } - } - - return Arr::last(Arr::wrap($keys)); - } - - /** - * Check the given messages for a wildcard key. - * - * @param array $messages - * @param string $search - * @param string $default - * @return string - */ - protected function getWildcardCustomMessages($messages, $search, $default) - { - foreach ($messages as $key => $message) { - if ($search === $key || (Str::contains($key, ['*']) && Str::is($key, $search))) { - return $message; - } - } - - return $default; - } - - /** - * Get the proper error message for an attribute and size rule. - * - * @param string $attribute - * @param string $rule - * @return string - */ - protected function getSizeMessage($attribute, $rule) - { - $lowerRule = Str::snake($rule); - - // There are three different types of size validations. The attribute may be - // either a number, file, or string so we will check a few things to know - // which type of value it is and return the correct line for that type. - $type = $this->getAttributeType($attribute); - - $key = "validation.{$lowerRule}.{$type}"; - - return $this->translator->get($key); - } - - /** - * Get the data type of the given attribute. - * - * @param string $attribute - * @return string - */ - protected function getAttributeType($attribute) - { - // We assume that the attributes present in the file array are files so that - // means that if the attribute does not have a numeric rule and the files - // list doesn't have it we'll just consider it a string by elimination. - return match (true) { - $this->hasRule($attribute, $this->numericRules) => 'numeric', - $this->hasRule($attribute, ['Array']) => 'array', - $this->getValue($attribute) instanceof UploadedFile, - $this->getValue($attribute) instanceof File => 'file', - default => 'string', - }; - } - - /** - * Replace all error message place-holders with actual values. - * - * @param string $message - * @param string $attribute - * @param string $rule - * @param array $parameters - * @return string - */ - public function makeReplacements($message, $attribute, $rule, $parameters) - { - $message = $this->replaceAttributePlaceholder( - $message, $this->getDisplayableAttribute($attribute) - ); - - $message = $this->replaceInputPlaceholder($message, $attribute); - $message = $this->replaceIndexPlaceholder($message, $attribute); - $message = $this->replacePositionPlaceholder($message, $attribute); - - if (isset($this->replacers[Str::snake($rule)])) { - return $this->callReplacer($message, $attribute, Str::snake($rule), $parameters, $this); - } elseif (method_exists($this, $replacer = "replace{$rule}")) { - return $this->$replacer($message, $attribute, $rule, $parameters); - } - - return $message; - } - - /** - * Get the displayable name of the attribute. - * - * @param string $attribute - * @return string - */ - public function getDisplayableAttribute($attribute) - { - $primaryAttribute = $this->getPrimaryAttribute($attribute); - - $expectedAttributes = $attribute != $primaryAttribute - ? [$attribute, $primaryAttribute] : [$attribute]; - - foreach ($expectedAttributes as $name) { - // The developer may dynamically specify the array of custom attributes on this - // validator instance. If the attribute exists in this array it is used over - // the other ways of pulling the attribute name for this given attributes. - if (isset($this->customAttributes[$name])) { - return $this->customAttributes[$name]; - } - - // We allow for a developer to specify language lines for any attribute in this - // application, which allows flexibility for displaying a unique displayable - // version of the attribute name instead of the name used in an HTTP POST. - if ($line = $this->getAttributeFromTranslations($name)) { - return $line; - } - } - - // When no language line has been specified for the attribute and it is also - // an implicit attribute we will display the raw attribute's name and not - // modify it with any of these replacements before we display the name. - if (isset($this->implicitAttributes[$primaryAttribute])) { - return ($formatter = $this->implicitAttributesFormatter) - ? $formatter($attribute) - : $attribute; - } - - return str_replace('_', ' ', Str::snake($attribute)); - } - - /** - * Get the given attribute from the attribute translations. - * - * @param string $name - * @return string - */ - protected function getAttributeFromTranslations($name) - { - return Arr::get($this->translator->get('validation.attributes'), $name); - } - - /** - * Replace the :attribute placeholder in the given message. - * - * @param string $message - * @param string $value - * @return string - */ - protected function replaceAttributePlaceholder($message, $value) - { - return str_replace( - [':attribute', ':ATTRIBUTE', ':Attribute'], - [$value, Str::upper($value), Str::ucfirst($value)], - $message - ); - } - - /** - * Replace the :index placeholder in the given message. - * - * @param string $message - * @param string $attribute - * @return string - */ - protected function replaceIndexPlaceholder($message, $attribute) - { - return $this->replaceIndexOrPositionPlaceholder( - $message, $attribute, 'index' - ); - } - - /** - * Replace the :position placeholder in the given message. - * - * @param string $message - * @param string $attribute - * @return string - */ - protected function replacePositionPlaceholder($message, $attribute) - { - return $this->replaceIndexOrPositionPlaceholder( - $message, $attribute, 'position', fn ($segment) => $segment + 1 - ); - } - - /** - * Replace the :index or :position placeholder in the given message. - * - * @param string $message - * @param string $attribute - * @param string $placeholder - * @param \Closure|null $modifier - * @return string - */ - protected function replaceIndexOrPositionPlaceholder($message, $attribute, $placeholder, ?Closure $modifier = null) - { - $segments = explode('.', $attribute); - - $modifier ??= fn ($value) => $value; - - $numericIndex = 1; - - foreach ($segments as $segment) { - if (is_numeric($segment)) { - if ($numericIndex === 1) { - $message = str_ireplace(':'.$placeholder, $modifier((int) $segment), $message); - } - - $message = str_ireplace( - ':'.$this->numberToIndexOrPositionWord($numericIndex).'-'.$placeholder, - $modifier((int) $segment), - $message - ); - - $numericIndex++; - } - } - - return $message; - } - - /** - * Get the word for a index or position segment. - * - * @param int $value - * @return string - */ - protected function numberToIndexOrPositionWord(int $value) - { - return [ - 1 => 'first', - 2 => 'second', - 3 => 'third', - 4 => 'fourth', - 5 => 'fifth', - 6 => 'sixth', - 7 => 'seventh', - 8 => 'eighth', - 9 => 'ninth', - 10 => 'tenth', - ][(int) $value] ?? 'other'; - } - - /** - * Replace the :input placeholder in the given message. - * - * @param string $message - * @param string $attribute - * @return string - */ - protected function replaceInputPlaceholder($message, $attribute) - { - $actualValue = $this->getValue($attribute); - - if (is_scalar($actualValue) || is_null($actualValue)) { - $message = str_replace(':input', $this->getDisplayableValue($attribute, $actualValue), $message); - } - - return $message; - } - - /** - * Get the displayable name of the value. - * - * @param string $attribute - * @param mixed $value - * @return string - */ - public function getDisplayableValue($attribute, $value) - { - if (isset($this->customValues[$attribute][$value])) { - return $this->customValues[$attribute][$value]; - } - - if (is_array($value)) { - return 'array'; - } - - $key = "validation.values.{$attribute}.{$value}"; - - if (($line = $this->translator->get($key)) !== $key) { - return $line; - } - - if (is_bool($value)) { - return $value ? 'true' : 'false'; - } - - if (is_null($value)) { - return 'empty'; - } - - return (string) $value; - } - - /** - * Transform an array of attributes to their displayable form. - * - * @param array $values - * @return array - */ - protected function getAttributeList(array $values) - { - $attributes = []; - - // For each attribute in the list we will simply get its displayable form as - // this is convenient when replacing lists of parameters like some of the - // replacement functions do when formatting out the validation message. - foreach ($values as $key => $value) { - $attributes[$key] = $this->getDisplayableAttribute($value); - } - - return $attributes; - } - - /** - * Call a custom validator message replacer. - * - * @param string $message - * @param string $attribute - * @param string $rule - * @param array $parameters - * @param \Illuminate\Validation\Validator $validator - * @return string|null - */ - protected function callReplacer($message, $attribute, $rule, $parameters, $validator) - { - $callback = $this->replacers[$rule]; - - if ($callback instanceof Closure) { - return $callback(...func_get_args()); - } elseif (is_string($callback)) { - return $this->callClassBasedReplacer($callback, $message, $attribute, $rule, $parameters, $validator); - } - } - - /** - * Call a class based validator message replacer. - * - * @param string $callback - * @param string $message - * @param string $attribute - * @param string $rule - * @param array $parameters - * @param \Illuminate\Validation\Validator $validator - * @return string - */ - protected function callClassBasedReplacer($callback, $message, $attribute, $rule, $parameters, $validator) - { - [$class, $method] = Str::parseCallback($callback, 'replace'); - - return $this->container->make($class)->{$method}(...array_slice(func_get_args(), 1)); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Validation/Factory.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Validation/Factory.php deleted file mode 100755 index 6ebfcac5..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Validation/Factory.php +++ /dev/null @@ -1,335 +0,0 @@ - - */ - protected $extensions = []; - - /** - * All of the custom implicit validator extensions. - * - * @var array - */ - protected $implicitExtensions = []; - - /** - * All of the custom dependent validator extensions. - * - * @var array - */ - protected $dependentExtensions = []; - - /** - * All of the custom validator message replacers. - * - * @var array - */ - protected $replacers = []; - - /** - * All of the fallback messages for custom rules. - * - * @var array - */ - protected $fallbackMessages = []; - - /** - * Indicates that unvalidated array keys should be excluded, even if the parent array was validated. - * - * @var bool - */ - protected $excludeUnvalidatedArrayKeys = true; - - /** - * The Validator resolver instance. - * - * @var \Closure - */ - protected $resolver; - - /** - * Create a new Validator factory instance. - * - * @param \Illuminate\Contracts\Translation\Translator $translator - * @param \Illuminate\Contracts\Container\Container|null $container - * @return void - */ - public function __construct(Translator $translator, ?Container $container = null) - { - $this->container = $container; - $this->translator = $translator; - } - - /** - * Create a new Validator instance. - * - * @param array $data - * @param array $rules - * @param array $messages - * @param array $attributes - * @return \Illuminate\Validation\Validator - */ - public function make(array $data, array $rules, array $messages = [], array $attributes = []) - { - $validator = $this->resolve( - $data, $rules, $messages, $attributes - ); - - // The presence verifier is responsible for checking the unique and exists data - // for the validator. It is behind an interface so that multiple versions of - // it may be written besides database. We'll inject it into the validator. - if (! is_null($this->verifier)) { - $validator->setPresenceVerifier($this->verifier); - } - - // Next we'll set the IoC container instance of the validator, which is used to - // resolve out class based validator extensions. If it is not set then these - // types of extensions will not be possible on these validation instances. - if (! is_null($this->container)) { - $validator->setContainer($this->container); - } - - $validator->excludeUnvalidatedArrayKeys = $this->excludeUnvalidatedArrayKeys; - - $this->addExtensions($validator); - - return $validator; - } - - /** - * Validate the given data against the provided rules. - * - * @param array $data - * @param array $rules - * @param array $messages - * @param array $attributes - * @return array - * - * @throws \Illuminate\Validation\ValidationException - */ - public function validate(array $data, array $rules, array $messages = [], array $attributes = []) - { - return $this->make($data, $rules, $messages, $attributes)->validate(); - } - - /** - * Resolve a new Validator instance. - * - * @param array $data - * @param array $rules - * @param array $messages - * @param array $attributes - * @return \Illuminate\Validation\Validator - */ - protected function resolve(array $data, array $rules, array $messages, array $attributes) - { - if (is_null($this->resolver)) { - return new Validator($this->translator, $data, $rules, $messages, $attributes); - } - - return call_user_func($this->resolver, $this->translator, $data, $rules, $messages, $attributes); - } - - /** - * Add the extensions to a validator instance. - * - * @param \Illuminate\Validation\Validator $validator - * @return void - */ - protected function addExtensions(Validator $validator) - { - $validator->addExtensions($this->extensions); - - // Next, we will add the implicit extensions, which are similar to the required - // and accepted rule in that they're run even if the attributes aren't in an - // array of data which is given to a validator instance via instantiation. - $validator->addImplicitExtensions($this->implicitExtensions); - - $validator->addDependentExtensions($this->dependentExtensions); - - $validator->addReplacers($this->replacers); - - $validator->setFallbackMessages($this->fallbackMessages); - } - - /** - * Register a custom validator extension. - * - * @param string $rule - * @param \Closure|string $extension - * @param string|null $message - * @return void - */ - public function extend($rule, $extension, $message = null) - { - $this->extensions[$rule] = $extension; - - if ($message) { - $this->fallbackMessages[Str::snake($rule)] = $message; - } - } - - /** - * Register a custom implicit validator extension. - * - * @param string $rule - * @param \Closure|string $extension - * @param string|null $message - * @return void - */ - public function extendImplicit($rule, $extension, $message = null) - { - $this->implicitExtensions[$rule] = $extension; - - if ($message) { - $this->fallbackMessages[Str::snake($rule)] = $message; - } - } - - /** - * Register a custom dependent validator extension. - * - * @param string $rule - * @param \Closure|string $extension - * @param string|null $message - * @return void - */ - public function extendDependent($rule, $extension, $message = null) - { - $this->dependentExtensions[$rule] = $extension; - - if ($message) { - $this->fallbackMessages[Str::snake($rule)] = $message; - } - } - - /** - * Register a custom validator message replacer. - * - * @param string $rule - * @param \Closure|string $replacer - * @return void - */ - public function replacer($rule, $replacer) - { - $this->replacers[$rule] = $replacer; - } - - /** - * Indicate that unvalidated array keys should be included in validated data when the parent array is validated. - * - * @return void - */ - public function includeUnvalidatedArrayKeys() - { - $this->excludeUnvalidatedArrayKeys = false; - } - - /** - * Indicate that unvalidated array keys should be excluded from the validated data, even if the parent array was validated. - * - * @return void - */ - public function excludeUnvalidatedArrayKeys() - { - $this->excludeUnvalidatedArrayKeys = true; - } - - /** - * Set the Validator instance resolver. - * - * @param \Closure $resolver - * @return void - */ - public function resolver(Closure $resolver) - { - $this->resolver = $resolver; - } - - /** - * Get the Translator implementation. - * - * @return \Illuminate\Contracts\Translation\Translator - */ - public function getTranslator() - { - return $this->translator; - } - - /** - * Get the Presence Verifier implementation. - * - * @return \Illuminate\Validation\PresenceVerifierInterface - */ - public function getPresenceVerifier() - { - return $this->verifier; - } - - /** - * Set the Presence Verifier implementation. - * - * @param \Illuminate\Validation\PresenceVerifierInterface $presenceVerifier - * @return void - */ - public function setPresenceVerifier(PresenceVerifierInterface $presenceVerifier) - { - $this->verifier = $presenceVerifier; - } - - /** - * Get the container instance used by the validation factory. - * - * @return \Illuminate\Contracts\Container\Container|null - */ - public function getContainer() - { - return $this->container; - } - - /** - * Set the container instance used by the validation factory. - * - * @param \Illuminate\Contracts\Container\Container $container - * @return $this - */ - public function setContainer(Container $container) - { - $this->container = $container; - - return $this; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Validation/Rules/File.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Validation/Rules/File.php deleted file mode 100644 index e93e1759..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Validation/Rules/File.php +++ /dev/null @@ -1,376 +0,0 @@ - $mimetypes - * @return static - */ - public static function types($mimetypes) - { - return tap(new static(), fn ($file) => $file->allowedMimetypes = (array) $mimetypes); - } - - /** - * Limit the uploaded file to the given file extensions. - * - * @param string|array $extensions - * @return $this - */ - public function extensions($extensions) - { - $this->allowedExtensions = (array) $extensions; - - return $this; - } - - /** - * Indicate that the uploaded file should be exactly a certain size in kilobytes. - * - * @param string|int $size - * @return $this - */ - public function size($size) - { - $this->minimumFileSize = $this->toKilobytes($size); - $this->maximumFileSize = $this->minimumFileSize; - - return $this; - } - - /** - * Indicate that the uploaded file should be between a minimum and maximum size in kilobytes. - * - * @param string|int $minSize - * @param string|int $maxSize - * @return $this - */ - public function between($minSize, $maxSize) - { - $this->minimumFileSize = $this->toKilobytes($minSize); - $this->maximumFileSize = $this->toKilobytes($maxSize); - - return $this; - } - - /** - * Indicate that the uploaded file should be no less than the given number of kilobytes. - * - * @param string|int $size - * @return $this - */ - public function min($size) - { - $this->minimumFileSize = $this->toKilobytes($size); - - return $this; - } - - /** - * Indicate that the uploaded file should be no more than the given number of kilobytes. - * - * @param string|int $size - * @return $this - */ - public function max($size) - { - $this->maximumFileSize = $this->toKilobytes($size); - - return $this; - } - - /** - * Convert a potentially human-friendly file size to kilobytes. - * - * @param string|int $size - * @return mixed - */ - protected function toKilobytes($size) - { - if (! is_string($size)) { - return $size; - } - - $value = floatval($size); - - return round(match (true) { - Str::endsWith($size, 'kb') => $value * 1, - Str::endsWith($size, 'mb') => $value * 1000, - Str::endsWith($size, 'gb') => $value * 1000000, - Str::endsWith($size, 'tb') => $value * 1000000000, - default => throw new InvalidArgumentException('Invalid file size suffix.'), - }); - } - - /** - * Specify additional validation rules that should be merged with the default rules during validation. - * - * @param string|array $rules - * @return $this - */ - public function rules($rules) - { - $this->customRules = array_merge($this->customRules, Arr::wrap($rules)); - - return $this; - } - - /** - * Determine if the validation rule passes. - * - * @param string $attribute - * @param mixed $value - * @return bool - */ - public function passes($attribute, $value) - { - $this->messages = []; - - $validator = Validator::make( - $this->data, - [$attribute => $this->buildValidationRules()], - $this->validator->customMessages, - $this->validator->customAttributes - ); - - if ($validator->fails()) { - return $this->fail($validator->messages()->all()); - } - - return true; - } - - /** - * Build the array of underlying validation rules based on the current state. - * - * @return array - */ - protected function buildValidationRules() - { - $rules = ['file']; - - $rules = array_merge($rules, $this->buildMimetypes()); - - if (! empty($this->allowedExtensions)) { - $rules[] = 'extensions:'.implode(',', array_map('strtolower', $this->allowedExtensions)); - } - - $rules[] = match (true) { - is_null($this->minimumFileSize) && is_null($this->maximumFileSize) => null, - is_null($this->maximumFileSize) => "min:{$this->minimumFileSize}", - is_null($this->minimumFileSize) => "max:{$this->maximumFileSize}", - $this->minimumFileSize !== $this->maximumFileSize => "between:{$this->minimumFileSize},{$this->maximumFileSize}", - default => "size:{$this->minimumFileSize}", - }; - - return array_merge(array_filter($rules), $this->customRules); - } - - /** - * Separate the given mimetypes from extensions and return an array of correct rules to validate against. - * - * @return array - */ - protected function buildMimetypes() - { - if (count($this->allowedMimetypes) === 0) { - return []; - } - - $rules = []; - - $mimetypes = array_filter( - $this->allowedMimetypes, - fn ($type) => str_contains($type, '/') - ); - - $mimes = array_diff($this->allowedMimetypes, $mimetypes); - - if (count($mimetypes) > 0) { - $rules[] = 'mimetypes:'.implode(',', $mimetypes); - } - - if (count($mimes) > 0) { - $rules[] = 'mimes:'.implode(',', $mimes); - } - - return $rules; - } - - /** - * Adds the given failures, and return false. - * - * @param array|string $messages - * @return bool - */ - protected function fail($messages) - { - $messages = collect(Arr::wrap($messages))->map(function ($message) { - return $this->validator->getTranslator()->get($message); - })->all(); - - $this->messages = array_merge($this->messages, $messages); - - return false; - } - - /** - * Get the validation error message. - * - * @return array - */ - public function message() - { - return $this->messages; - } - - /** - * Set the current validator. - * - * @param \Illuminate\Contracts\Validation\Validator $validator - * @return $this - */ - public function setValidator($validator) - { - $this->validator = $validator; - - return $this; - } - - /** - * Set the current data under validation. - * - * @param array $data - * @return $this - */ - public function setData($data) - { - $this->data = $data; - - return $this; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Validation/Validator.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Validation/Validator.php deleted file mode 100755 index 91d3b6a2..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/Validation/Validator.php +++ /dev/null @@ -1,1636 +0,0 @@ -dotPlaceholder = Str::random(); - - $this->initialRules = $rules; - $this->translator = $translator; - $this->customMessages = $messages; - $this->data = $this->parseData($data); - $this->customAttributes = $attributes; - - $this->setRules($rules); - } - - /** - * Parse the data array, converting dots and asterisks. - * - * @param array $data - * @return array - */ - public function parseData(array $data) - { - $newData = []; - - foreach ($data as $key => $value) { - if (is_array($value)) { - $value = $this->parseData($value); - } - - $key = str_replace( - ['.', '*'], - [$this->dotPlaceholder, '__asterisk__'], - $key - ); - - $newData[$key] = $value; - } - - return $newData; - } - - /** - * Replace the placeholders used in data keys. - * - * @param array $data - * @return array - */ - protected function replacePlaceholders($data) - { - $originalData = []; - - foreach ($data as $key => $value) { - $originalData[$this->replacePlaceholderInString($key)] = is_array($value) - ? $this->replacePlaceholders($value) - : $value; - } - - return $originalData; - } - - /** - * Replace the placeholders in the given string. - * - * @param string $value - * @return string - */ - protected function replacePlaceholderInString(string $value) - { - return str_replace( - [$this->dotPlaceholder, '__asterisk__'], - ['.', '*'], - $value - ); - } - - /** - * Add an after validation callback. - * - * @param callable|array|string $callback - * @return $this - */ - public function after($callback) - { - if (is_array($callback) && ! is_callable($callback)) { - foreach ($callback as $rule) { - $this->after(method_exists($rule, 'after') ? $rule->after(...) : $rule); - } - - return $this; - } - - $this->after[] = fn () => $callback($this); - - return $this; - } - - /** - * Determine if the data passes the validation rules. - * - * @return bool - */ - public function passes() - { - $this->messages = new MessageBag; - - [$this->distinctValues, $this->failedRules] = [[], []]; - - // We'll spin through each rule, validating the attributes attached to that - // rule. Any error messages will be added to the containers with each of - // the other error messages, returning true if we don't have messages. - foreach ($this->rules as $attribute => $rules) { - if ($this->shouldBeExcluded($attribute)) { - $this->removeAttribute($attribute); - - continue; - } - - if ($this->stopOnFirstFailure && $this->messages->isNotEmpty()) { - break; - } - - foreach ($rules as $rule) { - $this->validateAttribute($attribute, $rule); - - if ($this->shouldBeExcluded($attribute)) { - break; - } - - if ($this->shouldStopValidating($attribute)) { - break; - } - } - } - - foreach ($this->rules as $attribute => $rules) { - if ($this->shouldBeExcluded($attribute)) { - $this->removeAttribute($attribute); - } - } - - // Here we will spin through all of the "after" hooks on this validator and - // fire them off. This gives the callbacks a chance to perform all kinds - // of other validation that needs to get wrapped up in this operation. - foreach ($this->after as $after) { - $after(); - } - - return $this->messages->isEmpty(); - } - - /** - * Determine if the data fails the validation rules. - * - * @return bool - */ - public function fails() - { - return ! $this->passes(); - } - - /** - * Determine if the attribute should be excluded. - * - * @param string $attribute - * @return bool - */ - protected function shouldBeExcluded($attribute) - { - foreach ($this->excludeAttributes as $excludeAttribute) { - if ($attribute === $excludeAttribute || - Str::startsWith($attribute, $excludeAttribute.'.')) { - return true; - } - } - - return false; - } - - /** - * Remove the given attribute. - * - * @param string $attribute - * @return void - */ - protected function removeAttribute($attribute) - { - Arr::forget($this->data, $attribute); - Arr::forget($this->rules, $attribute); - } - - /** - * Run the validator's rules against its data. - * - * @return array - * - * @throws \Illuminate\Validation\ValidationException - */ - public function validate() - { - throw_if($this->fails(), $this->exception, $this); - - return $this->validated(); - } - - /** - * Run the validator's rules against its data. - * - * @param string $errorBag - * @return array - * - * @throws \Illuminate\Validation\ValidationException - */ - public function validateWithBag(string $errorBag) - { - try { - return $this->validate(); - } catch (ValidationException $e) { - $e->errorBag = $errorBag; - - throw $e; - } - } - - /** - * Get a validated input container for the validated input. - * - * @param array|null $keys - * @return \Illuminate\Support\ValidatedInput|array - */ - public function safe(?array $keys = null) - { - return is_array($keys) - ? (new ValidatedInput($this->validated()))->only($keys) - : new ValidatedInput($this->validated()); - } - - /** - * Get the attributes and values that were validated. - * - * @return array - * - * @throws \Illuminate\Validation\ValidationException - */ - public function validated() - { - throw_if($this->invalid(), $this->exception, $this); - - $results = []; - - $missingValue = new stdClass; - - foreach ($this->getRules() as $key => $rules) { - $value = data_get($this->getData(), $key, $missingValue); - - if ($this->excludeUnvalidatedArrayKeys && - in_array('array', $rules) && - $value !== null && - ! empty(preg_grep('/^'.preg_quote($key, '/').'\.+/', array_keys($this->getRules())))) { - continue; - } - - if ($value !== $missingValue) { - Arr::set($results, $key, $value); - } - } - - return $this->replacePlaceholders($results); - } - - /** - * Validate a given attribute against a rule. - * - * @param string $attribute - * @param string $rule - * @return void - */ - protected function validateAttribute($attribute, $rule) - { - $this->currentRule = $rule; - - [$rule, $parameters] = ValidationRuleParser::parse($rule); - - if ($rule === '') { - return; - } - - // First we will get the correct keys for the given attribute in case the field is nested in - // an array. Then we determine if the given rule accepts other field names as parameters. - // If so, we will replace any asterisks found in the parameters with the correct keys. - if ($this->dependsOnOtherFields($rule)) { - $parameters = $this->replaceDotInParameters($parameters); - - if ($keys = $this->getExplicitKeys($attribute)) { - $parameters = $this->replaceAsterisksInParameters($parameters, $keys); - } - } - - $value = $this->getValue($attribute); - - // If the attribute is a file, we will verify that the file upload was actually successful - // and if it wasn't we will add a failure for the attribute. Files may not successfully - // upload if they are too large based on PHP's settings so we will bail in this case. - if ($value instanceof UploadedFile && ! $value->isValid() && - $this->hasRule($attribute, array_merge($this->fileRules, $this->implicitRules)) - ) { - return $this->addFailure($attribute, 'uploaded', []); - } - - // If we have made it this far we will make sure the attribute is validatable and if it is - // we will call the validation method with the attribute. If a method returns false the - // attribute is invalid and we will add a failure message for this failing attribute. - $validatable = $this->isValidatable($rule, $attribute, $value); - - if ($rule instanceof RuleContract) { - return $validatable - ? $this->validateUsingCustomRule($attribute, $value, $rule) - : null; - } - - $method = "validate{$rule}"; - - $this->numericRules = $this->defaultNumericRules; - - if ($validatable && ! $this->$method($attribute, $value, $parameters, $this)) { - $this->addFailure($attribute, $rule, $parameters); - } - } - - /** - * Determine if the given rule depends on other fields. - * - * @param string $rule - * @return bool - */ - protected function dependsOnOtherFields($rule) - { - return in_array($rule, $this->dependentRules); - } - - /** - * Get the explicit keys from an attribute flattened with dot notation. - * - * E.g. 'foo.1.bar.spark.baz' -> [1, 'spark'] for 'foo.*.bar.*.baz' - * - * @param string $attribute - * @return array - */ - protected function getExplicitKeys($attribute) - { - $pattern = str_replace('\*', '([^\.]+)', preg_quote($this->getPrimaryAttribute($attribute), '/')); - - if (preg_match('/^'.$pattern.'/', $attribute, $keys)) { - array_shift($keys); - - return $keys; - } - - return []; - } - - /** - * Get the primary attribute name. - * - * For example, if "name.0" is given, "name.*" will be returned. - * - * @param string $attribute - * @return string - */ - protected function getPrimaryAttribute($attribute) - { - foreach ($this->implicitAttributes as $unparsed => $parsed) { - if (in_array($attribute, $parsed, true)) { - return $unparsed; - } - } - - return $attribute; - } - - /** - * Replace each field parameter which has an escaped dot with the dot placeholder. - * - * @param array $parameters - * @return array - */ - protected function replaceDotInParameters(array $parameters) - { - return array_map(function ($field) { - return str_replace('\.', $this->dotPlaceholder, $field); - }, $parameters); - } - - /** - * Replace each field parameter which has asterisks with the given keys. - * - * @param array $parameters - * @param array $keys - * @return array - */ - protected function replaceAsterisksInParameters(array $parameters, array $keys) - { - return array_map(function ($field) use ($keys) { - return vsprintf(str_replace('*', '%s', $field), $keys); - }, $parameters); - } - - /** - * Determine if the attribute is validatable. - * - * @param object|string $rule - * @param string $attribute - * @param mixed $value - * @return bool - */ - protected function isValidatable($rule, $attribute, $value) - { - if (in_array($rule, $this->excludeRules)) { - return true; - } - - return $this->presentOrRuleIsImplicit($rule, $attribute, $value) && - $this->passesOptionalCheck($attribute) && - $this->isNotNullIfMarkedAsNullable($rule, $attribute) && - $this->hasNotFailedPreviousRuleIfPresenceRule($rule, $attribute); - } - - /** - * Determine if the field is present, or the rule implies required. - * - * @param object|string $rule - * @param string $attribute - * @param mixed $value - * @return bool - */ - protected function presentOrRuleIsImplicit($rule, $attribute, $value) - { - if (is_string($value) && trim($value) === '') { - return $this->isImplicit($rule); - } - - return $this->validatePresent($attribute, $value) || - $this->isImplicit($rule); - } - - /** - * Determine if a given rule implies the attribute is required. - * - * @param object|string $rule - * @return bool - */ - protected function isImplicit($rule) - { - return $rule instanceof ImplicitRule || - in_array($rule, $this->implicitRules); - } - - /** - * Determine if the attribute passes any optional check. - * - * @param string $attribute - * @return bool - */ - protected function passesOptionalCheck($attribute) - { - if (! $this->hasRule($attribute, ['Sometimes'])) { - return true; - } - - $data = ValidationData::initializeAndGatherData($attribute, $this->data); - - return array_key_exists($attribute, $data) - || array_key_exists($attribute, $this->data); - } - - /** - * Determine if the attribute fails the nullable check. - * - * @param string $rule - * @param string $attribute - * @return bool - */ - protected function isNotNullIfMarkedAsNullable($rule, $attribute) - { - if ($this->isImplicit($rule) || ! $this->hasRule($attribute, ['Nullable'])) { - return true; - } - - return ! is_null(Arr::get($this->data, $attribute, 0)); - } - - /** - * Determine if it's a necessary presence validation. - * - * This is to avoid possible database type comparison errors. - * - * @param string $rule - * @param string $attribute - * @return bool - */ - protected function hasNotFailedPreviousRuleIfPresenceRule($rule, $attribute) - { - return in_array($rule, ['Unique', 'Exists']) ? ! $this->messages->has($attribute) : true; - } - - /** - * Validate an attribute using a custom rule object. - * - * @param string $attribute - * @param mixed $value - * @param \Illuminate\Contracts\Validation\Rule $rule - * @return void - */ - protected function validateUsingCustomRule($attribute, $value, $rule) - { - $attribute = $this->replacePlaceholderInString($attribute); - - $value = is_array($value) ? $this->replacePlaceholders($value) : $value; - - if ($rule instanceof ValidatorAwareRule) { - $rule->setValidator($this); - } - - if ($rule instanceof DataAwareRule) { - $rule->setData($this->data); - } - - if (! $rule->passes($attribute, $value)) { - $ruleClass = $rule instanceof InvokableValidationRule ? - get_class($rule->invokable()) : - get_class($rule); - - $this->failedRules[$attribute][$ruleClass] = []; - - $messages = $this->getFromLocalArray($attribute, $ruleClass) ?? $rule->message(); - - $messages = $messages ? (array) $messages : [$ruleClass]; - - foreach ($messages as $key => $message) { - $key = is_string($key) ? $key : $attribute; - - $this->messages->add($key, $this->makeReplacements( - $message, $key, $ruleClass, [] - )); - } - } - } - - /** - * Check if we should stop further validations on a given attribute. - * - * @param string $attribute - * @return bool - */ - protected function shouldStopValidating($attribute) - { - $cleanedAttribute = $this->replacePlaceholderInString($attribute); - - if ($this->hasRule($attribute, ['Bail'])) { - return $this->messages->has($cleanedAttribute); - } - - if (isset($this->failedRules[$cleanedAttribute]) && - array_key_exists('uploaded', $this->failedRules[$cleanedAttribute])) { - return true; - } - - // In case the attribute has any rule that indicates that the field is required - // and that rule already failed then we should stop validation at this point - // as now there is no point in calling other rules with this field empty. - return $this->hasRule($attribute, $this->implicitRules) && - isset($this->failedRules[$cleanedAttribute]) && - array_intersect(array_keys($this->failedRules[$cleanedAttribute]), $this->implicitRules); - } - - /** - * Add a failed rule and error message to the collection. - * - * @param string $attribute - * @param string $rule - * @param array $parameters - * @return void - */ - public function addFailure($attribute, $rule, $parameters = []) - { - if (! $this->messages) { - $this->passes(); - } - - $attributeWithPlaceholders = $attribute; - - $attribute = $this->replacePlaceholderInString($attribute); - - if (in_array($rule, $this->excludeRules)) { - return $this->excludeAttribute($attribute); - } - - $this->messages->add($attribute, $this->makeReplacements( - $this->getMessage($attributeWithPlaceholders, $rule), $attribute, $rule, $parameters - )); - - $this->failedRules[$attribute][$rule] = $parameters; - } - - /** - * Add the given attribute to the list of excluded attributes. - * - * @param string $attribute - * @return void - */ - protected function excludeAttribute(string $attribute) - { - $this->excludeAttributes[] = $attribute; - - $this->excludeAttributes = array_unique($this->excludeAttributes); - } - - /** - * Returns the data which was valid. - * - * @return array - */ - public function valid() - { - if (! $this->messages) { - $this->passes(); - } - - return array_diff_key( - $this->data, $this->attributesThatHaveMessages() - ); - } - - /** - * Returns the data which was invalid. - * - * @return array - */ - public function invalid() - { - if (! $this->messages) { - $this->passes(); - } - - $invalid = array_intersect_key( - $this->data, $this->attributesThatHaveMessages() - ); - - $result = []; - - $failed = Arr::only(Arr::dot($invalid), array_keys($this->failed())); - - foreach ($failed as $key => $failure) { - Arr::set($result, $key, $failure); - } - - return $result; - } - - /** - * Generate an array of all attributes that have messages. - * - * @return array - */ - protected function attributesThatHaveMessages() - { - return collect($this->messages()->toArray())->map(function ($message, $key) { - return explode('.', $key)[0]; - })->unique()->flip()->all(); - } - - /** - * Get the failed validation rules. - * - * @return array - */ - public function failed() - { - return $this->failedRules; - } - - /** - * Get the message container for the validator. - * - * @return \Illuminate\Support\MessageBag - */ - public function messages() - { - if (! $this->messages) { - $this->passes(); - } - - return $this->messages; - } - - /** - * An alternative more semantic shortcut to the message container. - * - * @return \Illuminate\Support\MessageBag - */ - public function errors() - { - return $this->messages(); - } - - /** - * Get the messages for the instance. - * - * @return \Illuminate\Support\MessageBag - */ - public function getMessageBag() - { - return $this->messages(); - } - - /** - * Determine if the given attribute has a rule in the given set. - * - * @param string $attribute - * @param string|array $rules - * @return bool - */ - public function hasRule($attribute, $rules) - { - return ! is_null($this->getRule($attribute, $rules)); - } - - /** - * Get a rule and its parameters for a given attribute. - * - * @param string $attribute - * @param string|array $rules - * @return array|null - */ - protected function getRule($attribute, $rules) - { - if (! array_key_exists($attribute, $this->rules)) { - return; - } - - $rules = (array) $rules; - - foreach ($this->rules[$attribute] as $rule) { - [$rule, $parameters] = ValidationRuleParser::parse($rule); - - if (in_array($rule, $rules)) { - return [$rule, $parameters]; - } - } - } - - /** - * Get the data under validation. - * - * @return array - */ - public function attributes() - { - return $this->getData(); - } - - /** - * Get the data under validation. - * - * @return array - */ - public function getData() - { - return $this->data; - } - - /** - * Set the data under validation. - * - * @param array $data - * @return $this - */ - public function setData(array $data) - { - $this->data = $this->parseData($data); - - $this->setRules($this->initialRules); - - return $this; - } - - /** - * Get the value of a given attribute. - * - * @param string $attribute - * @return mixed - */ - public function getValue($attribute) - { - return Arr::get($this->data, $attribute); - } - - /** - * Set the value of a given attribute. - * - * @param string $attribute - * @param mixed $value - * @return void - */ - public function setValue($attribute, $value) - { - Arr::set($this->data, $attribute, $value); - } - - /** - * Get the validation rules. - * - * @return array - */ - public function getRules() - { - return $this->rules; - } - - /** - * Get the validation rules with key placeholders removed. - * - * @return array - */ - public function getRulesWithoutPlaceholders() - { - return collect($this->rules) - ->mapWithKeys(fn ($value, $key) => [ - str_replace($this->dotPlaceholder, '\\.', $key) => $value, - ]) - ->all(); - } - - /** - * Set the validation rules. - * - * @param array $rules - * @return $this - */ - public function setRules(array $rules) - { - $rules = collect($rules)->mapWithKeys(function ($value, $key) { - return [str_replace('\.', $this->dotPlaceholder, $key) => $value]; - })->toArray(); - - $this->initialRules = $rules; - - $this->rules = []; - - $this->addRules($rules); - - return $this; - } - - /** - * Parse the given rules and merge them into current rules. - * - * @param array $rules - * @return void - */ - public function addRules($rules) - { - // The primary purpose of this parser is to expand any "*" rules to the all - // of the explicit rules needed for the given data. For example the rule - // names.* would get expanded to names.0, names.1, etc. for this data. - $response = (new ValidationRuleParser($this->data)) - ->explode(ValidationRuleParser::filterConditionalRules($rules, $this->data)); - - $this->rules = array_merge_recursive( - $this->rules, $response->rules - ); - - $this->implicitAttributes = array_merge( - $this->implicitAttributes, $response->implicitAttributes - ); - } - - /** - * Add conditions to a given field based on a Closure. - * - * @param string|array $attribute - * @param string|array $rules - * @param callable $callback - * @return $this - */ - public function sometimes($attribute, $rules, callable $callback) - { - $payload = new Fluent($this->data); - - foreach ((array) $attribute as $key) { - $response = (new ValidationRuleParser($this->data))->explode([$key => $rules]); - - $this->implicitAttributes = array_merge($response->implicitAttributes, $this->implicitAttributes); - - foreach ($response->rules as $ruleKey => $ruleValue) { - if ($callback($payload, $this->dataForSometimesIteration($ruleKey, ! str_ends_with($key, '.*')))) { - $this->addRules([$ruleKey => $ruleValue]); - } - } - } - - return $this; - } - - /** - * Get the data that should be injected into the iteration of a wildcard "sometimes" callback. - * - * @param string $attribute - * @return \Illuminate\Support\Fluent|array|mixed - */ - private function dataForSometimesIteration(string $attribute, $removeLastSegmentOfAttribute) - { - $lastSegmentOfAttribute = strrchr($attribute, '.'); - - $attribute = $lastSegmentOfAttribute && $removeLastSegmentOfAttribute - ? Str::replaceLast($lastSegmentOfAttribute, '', $attribute) - : $attribute; - - return is_array($data = data_get($this->data, $attribute)) - ? new Fluent($data) - : $data; - } - - /** - * Instruct the validator to stop validating after the first rule failure. - * - * @param bool $stopOnFirstFailure - * @return $this - */ - public function stopOnFirstFailure($stopOnFirstFailure = true) - { - $this->stopOnFirstFailure = $stopOnFirstFailure; - - return $this; - } - - /** - * Register an array of custom validator extensions. - * - * @param array $extensions - * @return void - */ - public function addExtensions(array $extensions) - { - if ($extensions) { - $keys = array_map([Str::class, 'snake'], array_keys($extensions)); - - $extensions = array_combine($keys, array_values($extensions)); - } - - $this->extensions = array_merge($this->extensions, $extensions); - } - - /** - * Register an array of custom implicit validator extensions. - * - * @param array $extensions - * @return void - */ - public function addImplicitExtensions(array $extensions) - { - $this->addExtensions($extensions); - - foreach ($extensions as $rule => $extension) { - $this->implicitRules[] = Str::studly($rule); - } - } - - /** - * Register an array of custom dependent validator extensions. - * - * @param array $extensions - * @return void - */ - public function addDependentExtensions(array $extensions) - { - $this->addExtensions($extensions); - - foreach ($extensions as $rule => $extension) { - $this->dependentRules[] = Str::studly($rule); - } - } - - /** - * Register a custom validator extension. - * - * @param string $rule - * @param \Closure|string $extension - * @return void - */ - public function addExtension($rule, $extension) - { - $this->extensions[Str::snake($rule)] = $extension; - } - - /** - * Register a custom implicit validator extension. - * - * @param string $rule - * @param \Closure|string $extension - * @return void - */ - public function addImplicitExtension($rule, $extension) - { - $this->addExtension($rule, $extension); - - $this->implicitRules[] = Str::studly($rule); - } - - /** - * Register a custom dependent validator extension. - * - * @param string $rule - * @param \Closure|string $extension - * @return void - */ - public function addDependentExtension($rule, $extension) - { - $this->addExtension($rule, $extension); - - $this->dependentRules[] = Str::studly($rule); - } - - /** - * Register an array of custom validator message replacers. - * - * @param array $replacers - * @return void - */ - public function addReplacers(array $replacers) - { - if ($replacers) { - $keys = array_map([Str::class, 'snake'], array_keys($replacers)); - - $replacers = array_combine($keys, array_values($replacers)); - } - - $this->replacers = array_merge($this->replacers, $replacers); - } - - /** - * Register a custom validator message replacer. - * - * @param string $rule - * @param \Closure|string $replacer - * @return void - */ - public function addReplacer($rule, $replacer) - { - $this->replacers[Str::snake($rule)] = $replacer; - } - - /** - * Set the custom messages for the validator. - * - * @param array $messages - * @return $this - */ - public function setCustomMessages(array $messages) - { - $this->customMessages = array_merge($this->customMessages, $messages); - - return $this; - } - - /** - * Set the custom attributes on the validator. - * - * @param array $attributes - * @return $this - */ - public function setAttributeNames(array $attributes) - { - $this->customAttributes = $attributes; - - return $this; - } - - /** - * Add custom attributes to the validator. - * - * @param array $attributes - * @return $this - */ - public function addCustomAttributes(array $attributes) - { - $this->customAttributes = array_merge($this->customAttributes, $attributes); - - return $this; - } - - /** - * Set the callback that used to format an implicit attribute. - * - * @param callable|null $formatter - * @return $this - */ - public function setImplicitAttributesFormatter(?callable $formatter = null) - { - $this->implicitAttributesFormatter = $formatter; - - return $this; - } - - /** - * Set the custom values on the validator. - * - * @param array $values - * @return $this - */ - public function setValueNames(array $values) - { - $this->customValues = $values; - - return $this; - } - - /** - * Add the custom values for the validator. - * - * @param array $customValues - * @return $this - */ - public function addCustomValues(array $customValues) - { - $this->customValues = array_merge($this->customValues, $customValues); - - return $this; - } - - /** - * Set the fallback messages for the validator. - * - * @param array $messages - * @return void - */ - public function setFallbackMessages(array $messages) - { - $this->fallbackMessages = $messages; - } - - /** - * Get the Presence Verifier implementation. - * - * @param string|null $connection - * @return \Illuminate\Validation\PresenceVerifierInterface - * - * @throws \RuntimeException - */ - public function getPresenceVerifier($connection = null) - { - if (! isset($this->presenceVerifier)) { - throw new RuntimeException('Presence verifier has not been set.'); - } - - if ($this->presenceVerifier instanceof DatabasePresenceVerifierInterface) { - $this->presenceVerifier->setConnection($connection); - } - - return $this->presenceVerifier; - } - - /** - * Set the Presence Verifier implementation. - * - * @param \Illuminate\Validation\PresenceVerifierInterface $presenceVerifier - * @return void - */ - public function setPresenceVerifier(PresenceVerifierInterface $presenceVerifier) - { - $this->presenceVerifier = $presenceVerifier; - } - - /** - * Get the exception to throw upon failed validation. - * - * @return string - */ - public function getException() - { - return $this->exception; - } - - /** - * Set the exception to throw upon failed validation. - * - * @param string $exception - * @return $this - * - * @throws \InvalidArgumentException - */ - public function setException($exception) - { - if (! is_a($exception, ValidationException::class, true)) { - throw new InvalidArgumentException( - sprintf('Exception [%s] is invalid. It must extend [%s].', $exception, ValidationException::class) - ); - } - - $this->exception = $exception; - - return $this; - } - - /** - * Ensure exponents are within range using the given callback. - * - * @param callable(int $scale, string $attribute, mixed $value) $callback - * @return $this - */ - public function ensureExponentWithinAllowedRangeUsing($callback) - { - $this->ensureExponentWithinAllowedRangeUsing = $callback; - - return $this; - } - - /** - * Get the Translator implementation. - * - * @return \Illuminate\Contracts\Translation\Translator - */ - public function getTranslator() - { - return $this->translator; - } - - /** - * Set the Translator implementation. - * - * @param \Illuminate\Contracts\Translation\Translator $translator - * @return void - */ - public function setTranslator(Translator $translator) - { - $this->translator = $translator; - } - - /** - * Set the IoC container instance. - * - * @param \Illuminate\Contracts\Container\Container $container - * @return void - */ - public function setContainer(Container $container) - { - $this->container = $container; - } - - /** - * Call a custom validator extension. - * - * @param string $rule - * @param array $parameters - * @return bool|null - */ - protected function callExtension($rule, $parameters) - { - $callback = $this->extensions[$rule]; - - if (is_callable($callback)) { - return $callback(...array_values($parameters)); - } elseif (is_string($callback)) { - return $this->callClassBasedExtension($callback, $parameters); - } - } - - /** - * Call a class based validator extension. - * - * @param string $callback - * @param array $parameters - * @return bool - */ - protected function callClassBasedExtension($callback, $parameters) - { - [$class, $method] = Str::parseCallback($callback, 'validate'); - - return $this->container->make($class)->{$method}(...array_values($parameters)); - } - - /** - * Handle dynamic calls to class methods. - * - * @param string $method - * @param array $parameters - * @return mixed - * - * @throws \BadMethodCallException - */ - public function __call($method, $parameters) - { - $rule = Str::snake(substr($method, 8)); - - if (isset($this->extensions[$rule])) { - return $this->callExtension($rule, $parameters); - } - - throw new BadMethodCallException(sprintf( - 'Method %s::%s does not exist.', static::class, $method - )); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/View/Compilers/BladeCompiler.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/View/Compilers/BladeCompiler.php deleted file mode 100644 index a7bb59e2..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/View/Compilers/BladeCompiler.php +++ /dev/null @@ -1,1029 +0,0 @@ -setPath($path); - } - - if (! is_null($this->cachePath)) { - $contents = $this->compileString($this->files->get($this->getPath())); - - if (! empty($this->getPath())) { - $contents = $this->appendFilePath($contents); - } - - $this->ensureCompiledDirectoryExists( - $compiledPath = $this->getCompiledPath($this->getPath()) - ); - - $this->files->put($compiledPath, $contents); - } - } - - /** - * Append the file path to the compiled string. - * - * @param string $contents - * @return string - */ - protected function appendFilePath($contents) - { - $tokens = $this->getOpenAndClosingPhpTokens($contents); - - if ($tokens->isNotEmpty() && $tokens->last() !== T_CLOSE_TAG) { - $contents .= ' ?>'; - } - - return $contents."getPath()} ENDPATH**/ ?>"; - } - - /** - * Get the open and closing PHP tag tokens from the given string. - * - * @param string $contents - * @return \Illuminate\Support\Collection - */ - protected function getOpenAndClosingPhpTokens($contents) - { - return collect(token_get_all($contents)) - ->pluck(0) - ->filter(function ($token) { - return in_array($token, [T_OPEN_TAG, T_OPEN_TAG_WITH_ECHO, T_CLOSE_TAG]); - }); - } - - /** - * Get the path currently being compiled. - * - * @return string - */ - public function getPath() - { - return $this->path; - } - - /** - * Set the path currently being compiled. - * - * @param string $path - * @return void - */ - public function setPath($path) - { - $this->path = $path; - } - - /** - * Compile the given Blade template contents. - * - * @param string $value - * @return string - */ - public function compileString($value) - { - [$this->footer, $result] = [[], '']; - - foreach ($this->prepareStringsForCompilationUsing as $callback) { - $value = $callback($value); - } - - $value = $this->storeUncompiledBlocks($value); - - // First we will compile the Blade component tags. This is a precompile style - // step which compiles the component Blade tags into @component directives - // that may be used by Blade. Then we should call any other precompilers. - $value = $this->compileComponentTags( - $this->compileComments($value) - ); - - foreach ($this->precompilers as $precompiler) { - $value = $precompiler($value); - } - - // Here we will loop through all of the tokens returned by the Zend lexer and - // parse each one into the corresponding valid PHP. We will then have this - // template as the correctly rendered PHP that can be rendered natively. - foreach (token_get_all($value) as $token) { - $result .= is_array($token) ? $this->parseToken($token) : $token; - } - - if (! empty($this->rawBlocks)) { - $result = $this->restoreRawContent($result); - } - - // If there are any footer lines that need to get added to a template we will - // add them here at the end of the template. This gets used mainly for the - // template inheritance via the extends keyword that should be appended. - if (count($this->footer) > 0) { - $result = $this->addFooters($result); - } - - if (! empty($this->echoHandlers)) { - $result = $this->addBladeCompilerVariable($result); - } - - return str_replace( - ['##BEGIN-COMPONENT-CLASS##', '##END-COMPONENT-CLASS##'], - '', - $result); - } - - /** - * Evaluate and render a Blade string to HTML. - * - * @param string $string - * @param array $data - * @param bool $deleteCachedView - * @return string - */ - public static function render($string, $data = [], $deleteCachedView = false) - { - $component = new class($string) extends Component - { - protected $template; - - public function __construct($template) - { - $this->template = $template; - } - - public function render() - { - return $this->template; - } - }; - - $view = Container::getInstance() - ->make(ViewFactory::class) - ->make($component->resolveView(), $data); - - return tap($view->render(), function () use ($view, $deleteCachedView) { - if ($deleteCachedView) { - @unlink($view->getPath()); - } - }); - } - - /** - * Render a component instance to HTML. - * - * @param \Illuminate\View\Component $component - * @return string - */ - public static function renderComponent(Component $component) - { - $data = $component->data(); - - $view = value($component->resolveView(), $data); - - if ($view instanceof View) { - return $view->with($data)->render(); - } elseif ($view instanceof Htmlable) { - return $view->toHtml(); - } else { - return Container::getInstance() - ->make(ViewFactory::class) - ->make($view, $data) - ->render(); - } - } - - /** - * Store the blocks that do not receive compilation. - * - * @param string $value - * @return string - */ - protected function storeUncompiledBlocks($value) - { - if (str_contains($value, '@verbatim')) { - $value = $this->storeVerbatimBlocks($value); - } - - if (str_contains($value, '@php')) { - $value = $this->storePhpBlocks($value); - } - - return $value; - } - - /** - * Store the verbatim blocks and replace them with a temporary placeholder. - * - * @param string $value - * @return string - */ - protected function storeVerbatimBlocks($value) - { - return preg_replace_callback('/(?storeRawBlock($matches[1]); - }, $value); - } - - /** - * Store the PHP blocks and replace them with a temporary placeholder. - * - * @param string $value - * @return string - */ - protected function storePhpBlocks($value) - { - return preg_replace_callback('/(?storeRawBlock(""); - }, $value); - } - - /** - * Store a raw block and return a unique raw placeholder. - * - * @param string $value - * @return string - */ - protected function storeRawBlock($value) - { - return $this->getRawPlaceholder( - array_push($this->rawBlocks, $value) - 1 - ); - } - - /** - * Compile the component tags. - * - * @param string $value - * @return string - */ - protected function compileComponentTags($value) - { - if (! $this->compilesComponentTags) { - return $value; - } - - return (new ComponentTagCompiler( - $this->classComponentAliases, $this->classComponentNamespaces, $this - ))->compile($value); - } - - /** - * Replace the raw placeholders with the original code stored in the raw blocks. - * - * @param string $result - * @return string - */ - protected function restoreRawContent($result) - { - $result = preg_replace_callback('/'.$this->getRawPlaceholder('(\d+)').'/', function ($matches) { - return $this->rawBlocks[$matches[1]]; - }, $result); - - $this->rawBlocks = []; - - return $result; - } - - /** - * Get a placeholder to temporarily mark the position of raw blocks. - * - * @param int|string $replace - * @return string - */ - protected function getRawPlaceholder($replace) - { - return str_replace('#', $replace, '@__raw_block_#__@'); - } - - /** - * Add the stored footers onto the given content. - * - * @param string $result - * @return string - */ - protected function addFooters($result) - { - return ltrim($result, "\n") - ."\n".implode("\n", array_reverse($this->footer)); - } - - /** - * Parse the tokens from the template. - * - * @param array $token - * @return string - */ - protected function parseToken($token) - { - [$id, $content] = $token; - - if ($id == T_INLINE_HTML) { - foreach ($this->compilers as $type) { - $content = $this->{"compile{$type}"}($content); - } - } - - return $content; - } - - /** - * Execute the user defined extensions. - * - * @param string $value - * @return string - */ - protected function compileExtensions($value) - { - foreach ($this->extensions as $compiler) { - $value = $compiler($value, $this); - } - - return $value; - } - - /** - * Compile Blade statements that start with "@". - * - * @param string $template - * @return string - */ - protected function compileStatements($template) - { - preg_match_all('/\B@(@?\w+(?:::\w+)?)([ \t]*)(\( ( [\S\s]*? ) \))?/x', $template, $matches); - - $offset = 0; - - for ($i = 0; isset($matches[0][$i]); $i++) { - $match = [ - $matches[0][$i], - $matches[1][$i], - $matches[2][$i], - $matches[3][$i] ?: null, - $matches[4][$i] ?: null, - ]; - - // Here we check to see if we have properly found the closing parenthesis by - // regex pattern or not, and will recursively continue on to the next ")" - // then check again until the tokenizer confirms we find the right one. - while (isset($match[4]) && - Str::endsWith($match[0], ')') && - ! $this->hasEvenNumberOfParentheses($match[0])) { - if (($after = Str::after($template, $match[0])) === $template) { - break; - } - - $rest = Str::before($after, ')'); - - if (isset($matches[0][$i + 1]) && Str::contains($rest.')', $matches[0][$i + 1])) { - unset($matches[0][$i + 1]); - $i++; - } - - $match[0] = $match[0].$rest.')'; - $match[3] = $match[3].$rest.')'; - $match[4] = $match[4].$rest; - } - - [$template, $offset] = $this->replaceFirstStatement( - $match[0], - $this->compileStatement($match), - $template, - $offset - ); - } - - return $template; - } - - /** - * Replace the first match for a statement compilation operation. - * - * @param string $search - * @param string $replace - * @param string $subject - * @param int $offset - * @return array - */ - protected function replaceFirstStatement($search, $replace, $subject, $offset) - { - $search = (string) $search; - - if ($search === '') { - return $subject; - } - - $position = strpos($subject, $search, $offset); - - if ($position !== false) { - return [ - substr_replace($subject, $replace, $position, strlen($search)), - $position + strlen($replace), - ]; - } - - return [$subject, 0]; - } - - /** - * Determine if the given expression has the same number of opening and closing parentheses. - * - * @param string $expression - * @return bool - */ - protected function hasEvenNumberOfParentheses(string $expression) - { - $tokens = token_get_all('customDirectives[$match[1]])) { - $match[0] = $this->callCustomDirective($match[1], Arr::get($match, 3)); - } elseif (method_exists($this, $method = 'compile'.ucfirst($match[1]))) { - $match[0] = $this->$method(Arr::get($match, 3)); - } else { - return $match[0]; - } - - return isset($match[3]) ? $match[0] : $match[0].$match[2]; - } - - /** - * Call the given directive with the given value. - * - * @param string $name - * @param string|null $value - * @return string - */ - protected function callCustomDirective($name, $value) - { - $value ??= ''; - - if (str_starts_with($value, '(') && str_ends_with($value, ')')) { - $value = Str::substr($value, 1, -1); - } - - return call_user_func($this->customDirectives[$name], trim($value)); - } - - /** - * Strip the parentheses from the given expression. - * - * @param string $expression - * @return string - */ - public function stripParentheses($expression) - { - if (Str::startsWith($expression, '(')) { - $expression = substr($expression, 1, -1); - } - - return $expression; - } - - /** - * Register a custom Blade compiler. - * - * @param callable $compiler - * @return void - */ - public function extend(callable $compiler) - { - $this->extensions[] = $compiler; - } - - /** - * Get the extensions used by the compiler. - * - * @return array - */ - public function getExtensions() - { - return $this->extensions; - } - - /** - * Register an "if" statement directive. - * - * @param string $name - * @param callable $callback - * @return void - */ - public function if($name, callable $callback) - { - $this->conditions[$name] = $callback; - - $this->directive($name, function ($expression) use ($name) { - return $expression !== '' - ? "" - : ""; - }); - - $this->directive('unless'.$name, function ($expression) use ($name) { - return $expression !== '' - ? "" - : ""; - }); - - $this->directive('else'.$name, function ($expression) use ($name) { - return $expression !== '' - ? "" - : ""; - }); - - $this->directive('end'.$name, function () { - return ''; - }); - } - - /** - * Check the result of a condition. - * - * @param string $name - * @param mixed ...$parameters - * @return bool - */ - public function check($name, ...$parameters) - { - return call_user_func($this->conditions[$name], ...$parameters); - } - - /** - * Register a class-based component alias directive. - * - * @param string $class - * @param string|null $alias - * @param string $prefix - * @return void - */ - public function component($class, $alias = null, $prefix = '') - { - if (! is_null($alias) && str_contains($alias, '\\')) { - [$class, $alias] = [$alias, $class]; - } - - if (is_null($alias)) { - $alias = str_contains($class, '\\View\\Components\\') - ? collect(explode('\\', Str::after($class, '\\View\\Components\\')))->map(function ($segment) { - return Str::kebab($segment); - })->implode(':') - : Str::kebab(class_basename($class)); - } - - if (! empty($prefix)) { - $alias = $prefix.'-'.$alias; - } - - $this->classComponentAliases[$alias] = $class; - } - - /** - * Register an array of class-based components. - * - * @param array $components - * @param string $prefix - * @return void - */ - public function components(array $components, $prefix = '') - { - foreach ($components as $key => $value) { - if (is_numeric($key)) { - $this->component($value, null, $prefix); - } else { - $this->component($key, $value, $prefix); - } - } - } - - /** - * Get the registered class component aliases. - * - * @return array - */ - public function getClassComponentAliases() - { - return $this->classComponentAliases; - } - - /** - * Register a new anonymous component path. - * - * @param string $path - * @param string|null $prefix - * @return void - */ - public function anonymousComponentPath(string $path, ?string $prefix = null) - { - $prefixHash = md5($prefix ?: $path); - - $this->anonymousComponentPaths[] = [ - 'path' => $path, - 'prefix' => $prefix, - 'prefixHash' => $prefixHash, - ]; - - Container::getInstance() - ->make(ViewFactory::class) - ->addNamespace($prefixHash, $path); - } - - /** - * Register an anonymous component namespace. - * - * @param string $directory - * @param string|null $prefix - * @return void - */ - public function anonymousComponentNamespace(string $directory, ?string $prefix = null) - { - $prefix ??= $directory; - - $this->anonymousComponentNamespaces[$prefix] = Str::of($directory) - ->replace('/', '.') - ->trim('. ') - ->toString(); - } - - /** - * Register a class-based component namespace. - * - * @param string $namespace - * @param string $prefix - * @return void - */ - public function componentNamespace($namespace, $prefix) - { - $this->classComponentNamespaces[$prefix] = $namespace; - } - - /** - * Get the registered anonymous component paths. - * - * @return array - */ - public function getAnonymousComponentPaths() - { - return $this->anonymousComponentPaths; - } - - /** - * Get the registered anonymous component namespaces. - * - * @return array - */ - public function getAnonymousComponentNamespaces() - { - return $this->anonymousComponentNamespaces; - } - - /** - * Get the registered class component namespaces. - * - * @return array - */ - public function getClassComponentNamespaces() - { - return $this->classComponentNamespaces; - } - - /** - * Register a component alias directive. - * - * @param string $path - * @param string|null $alias - * @return void - */ - public function aliasComponent($path, $alias = null) - { - $alias = $alias ?: Arr::last(explode('.', $path)); - - $this->directive($alias, function ($expression) use ($path) { - return $expression - ? "startComponent('{$path}', {$expression}); ?>" - : "startComponent('{$path}'); ?>"; - }); - - $this->directive('end'.$alias, function ($expression) { - return 'renderComponent(); ?>'; - }); - } - - /** - * Register an include alias directive. - * - * @param string $path - * @param string|null $alias - * @return void - */ - public function include($path, $alias = null) - { - $this->aliasInclude($path, $alias); - } - - /** - * Register an include alias directive. - * - * @param string $path - * @param string|null $alias - * @return void - */ - public function aliasInclude($path, $alias = null) - { - $alias = $alias ?: Arr::last(explode('.', $path)); - - $this->directive($alias, function ($expression) use ($path) { - $expression = $this->stripParentheses($expression) ?: '[]'; - - return "make('{$path}', {$expression}, \Illuminate\Support\Arr::except(get_defined_vars(), ['__data', '__path']))->render(); ?>"; - }); - } - - /** - * Register a handler for custom directives. - * - * @param string $name - * @param callable $handler - * @return void - * - * @throws \InvalidArgumentException - */ - public function directive($name, callable $handler) - { - if (! preg_match('/^\w+(?:::\w+)?$/x', $name)) { - throw new InvalidArgumentException("The directive name [{$name}] is not valid. Directive names must only contain alphanumeric characters and underscores."); - } - - $this->customDirectives[$name] = $handler; - } - - /** - * Get the list of custom directives. - * - * @return array - */ - public function getCustomDirectives() - { - return $this->customDirectives; - } - - /** - * Indicate that the following callable should be used to prepare strings for compilation. - * - * @param callable $callback - * @return $this - */ - public function prepareStringsForCompilationUsing(callable $callback) - { - $this->prepareStringsForCompilationUsing[] = $callback; - - return $this; - } - - /** - * Register a new precompiler. - * - * @param callable $precompiler - * @return void - */ - public function precompiler(callable $precompiler) - { - $this->precompilers[] = $precompiler; - } - - /** - * Set the echo format to be used by the compiler. - * - * @param string $format - * @return void - */ - public function setEchoFormat($format) - { - $this->echoFormat = $format; - } - - /** - * Set the "echo" format to double encode entities. - * - * @return void - */ - public function withDoubleEncoding() - { - $this->setEchoFormat('e(%s, true)'); - } - - /** - * Set the "echo" format to not double encode entities. - * - * @return void - */ - public function withoutDoubleEncoding() - { - $this->setEchoFormat('e(%s, false)'); - } - - /** - * Indicate that component tags should not be compiled. - * - * @return void - */ - public function withoutComponentTags() - { - $this->compilesComponentTags = false; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php deleted file mode 100755 index d5447220..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php +++ /dev/null @@ -1,144 +0,0 @@ - - */ - protected $compiledOrNotExpired = []; - - /** - * Create a new compiler engine instance. - * - * @param \Illuminate\View\Compilers\CompilerInterface $compiler - * @param \Illuminate\Filesystem\Filesystem|null $files - * @return void - */ - public function __construct(CompilerInterface $compiler, ?Filesystem $files = null) - { - parent::__construct($files ?: new Filesystem); - - $this->compiler = $compiler; - } - - /** - * Get the evaluated contents of the view. - * - * @param string $path - * @param array $data - * @return string - */ - public function get($path, array $data = []) - { - $this->lastCompiled[] = $path; - - // If this given view has expired, which means it has simply been edited since - // it was last compiled, we will re-compile the views so we can evaluate a - // fresh copy of the view. We'll pass the compiler the path of the view. - if (! isset($this->compiledOrNotExpired[$path]) && $this->compiler->isExpired($path)) { - $this->compiler->compile($path); - } - - // Once we have the path to the compiled file, we will evaluate the paths with - // typical PHP just like any other templates. We also keep a stack of views - // which have been rendered for right exception messages to be generated. - - try { - $results = $this->evaluatePath($this->compiler->getCompiledPath($path), $data); - } catch (ViewException $e) { - if (! str($e->getMessage())->contains(['No such file or directory', 'File does not exist at path'])) { - throw $e; - } - - if (! isset($this->compiledOrNotExpired[$path])) { - throw $e; - } - - $this->compiler->compile($path); - - $results = $this->evaluatePath($this->compiler->getCompiledPath($path), $data); - } - - $this->compiledOrNotExpired[$path] = true; - - array_pop($this->lastCompiled); - - return $results; - } - - /** - * Handle a view exception. - * - * @param \Throwable $e - * @param int $obLevel - * @return void - * - * @throws \Throwable - */ - protected function handleViewException(Throwable $e, $obLevel) - { - if ($e instanceof HttpException || $e instanceof HttpResponseException) { - parent::handleViewException($e, $obLevel); - } - - $e = new ViewException($this->getMessage($e), 0, 1, $e->getFile(), $e->getLine(), $e); - - parent::handleViewException($e, $obLevel); - } - - /** - * Get the exception message for an exception. - * - * @param \Throwable $e - * @return string - */ - protected function getMessage(Throwable $e) - { - return $e->getMessage().' (View: '.realpath(last($this->lastCompiled)).')'; - } - - /** - * Get the compiler implementation. - * - * @return \Illuminate\View\Compilers\CompilerInterface - */ - public function getCompiler() - { - return $this->compiler; - } - - /** - * Clear the cache of views that were compiled or not expired. - * - * @return void - */ - public function forgetCompiledOrNotExpired() - { - $this->compiledOrNotExpired = []; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/View/FileViewFinder.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/View/FileViewFinder.php deleted file mode 100755 index 107bf7c3..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/View/FileViewFinder.php +++ /dev/null @@ -1,330 +0,0 @@ -files = $files; - $this->paths = array_map([$this, 'resolvePath'], $paths); - - if (isset($extensions)) { - $this->extensions = $extensions; - } - } - - /** - * Get the fully qualified location of the view. - * - * @param string $name - * @return string - */ - public function find($name) - { - if (isset($this->views[$name])) { - return $this->views[$name]; - } - - if ($this->hasHintInformation($name = trim($name))) { - return $this->views[$name] = $this->findNamespacedView($name); - } - - return $this->views[$name] = $this->findInPaths($name, $this->paths); - } - - /** - * Get the path to a template with a named path. - * - * @param string $name - * @return string - */ - protected function findNamespacedView($name) - { - [$namespace, $view] = $this->parseNamespaceSegments($name); - - return $this->findInPaths($view, $this->hints[$namespace]); - } - - /** - * Get the segments of a template with a named path. - * - * @param string $name - * @return array - * - * @throws \InvalidArgumentException - */ - protected function parseNamespaceSegments($name) - { - $segments = explode(static::HINT_PATH_DELIMITER, $name); - - if (count($segments) !== 2) { - throw new InvalidArgumentException("View [{$name}] has an invalid name."); - } - - if (! isset($this->hints[$segments[0]])) { - throw new InvalidArgumentException("No hint path defined for [{$segments[0]}]."); - } - - return $segments; - } - - /** - * Find the given view in the list of paths. - * - * @param string $name - * @param array $paths - * @return string - * - * @throws \InvalidArgumentException - */ - protected function findInPaths($name, $paths) - { - foreach ((array) $paths as $path) { - foreach ($this->getPossibleViewFiles($name) as $file) { - if ($this->files->exists($viewPath = $path.'/'.$file)) { - return $viewPath; - } - } - } - - throw new InvalidArgumentException("View [{$name}] not found."); - } - - /** - * Get an array of possible view files. - * - * @param string $name - * @return array - */ - protected function getPossibleViewFiles($name) - { - return array_map(fn ($extension) => str_replace('.', '/', $name).'.'.$extension, $this->extensions); - } - - /** - * Add a location to the finder. - * - * @param string $location - * @return void - */ - public function addLocation($location) - { - $this->paths[] = $this->resolvePath($location); - } - - /** - * Prepend a location to the finder. - * - * @param string $location - * @return void - */ - public function prependLocation($location) - { - array_unshift($this->paths, $this->resolvePath($location)); - } - - /** - * Resolve the path. - * - * @param string $path - * @return string - */ - protected function resolvePath($path) - { - return realpath($path) ?: $path; - } - - /** - * Add a namespace hint to the finder. - * - * @param string $namespace - * @param string|array $hints - * @return void - */ - public function addNamespace($namespace, $hints) - { - $hints = (array) $hints; - - if (isset($this->hints[$namespace])) { - $hints = array_merge($this->hints[$namespace], $hints); - } - - $this->hints[$namespace] = $hints; - } - - /** - * Prepend a namespace hint to the finder. - * - * @param string $namespace - * @param string|array $hints - * @return void - */ - public function prependNamespace($namespace, $hints) - { - $hints = (array) $hints; - - if (isset($this->hints[$namespace])) { - $hints = array_merge($hints, $this->hints[$namespace]); - } - - $this->hints[$namespace] = $hints; - } - - /** - * Replace the namespace hints for the given namespace. - * - * @param string $namespace - * @param string|array $hints - * @return void - */ - public function replaceNamespace($namespace, $hints) - { - $this->hints[$namespace] = (array) $hints; - } - - /** - * Register an extension with the view finder. - * - * @param string $extension - * @return void - */ - public function addExtension($extension) - { - if (($index = array_search($extension, $this->extensions)) !== false) { - unset($this->extensions[$index]); - } - - array_unshift($this->extensions, $extension); - } - - /** - * Returns whether or not the view name has any hint information. - * - * @param string $name - * @return bool - */ - public function hasHintInformation($name) - { - return strpos($name, static::HINT_PATH_DELIMITER) > 0; - } - - /** - * Flush the cache of located views. - * - * @return void - */ - public function flush() - { - $this->views = []; - } - - /** - * Get the filesystem instance. - * - * @return \Illuminate\Filesystem\Filesystem - */ - public function getFilesystem() - { - return $this->files; - } - - /** - * Set the active view paths. - * - * @param array $paths - * @return $this - */ - public function setPaths($paths) - { - $this->paths = $paths; - - return $this; - } - - /** - * Get the active view paths. - * - * @return array - */ - public function getPaths() - { - return $this->paths; - } - - /** - * Get the views that have been located. - * - * @return array - */ - public function getViews() - { - return $this->views; - } - - /** - * Get the namespace to file path hints. - * - * @return array - */ - public function getHints() - { - return $this->hints; - } - - /** - * Get registered extensions. - * - * @return array - */ - public function getExtensions() - { - return $this->extensions; - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/View/View.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/View/View.php deleted file mode 100755 index 676c40ef..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/View/View.php +++ /dev/null @@ -1,506 +0,0 @@ -view = $view; - $this->path = $path; - $this->engine = $engine; - $this->factory = $factory; - - $this->data = $data instanceof Arrayable ? $data->toArray() : (array) $data; - } - - /** - * Get the evaluated contents of a given fragment. - * - * @param string $fragment - * @return string - */ - public function fragment($fragment) - { - return $this->render(function () use ($fragment) { - return $this->factory->getFragment($fragment); - }); - } - - /** - * Get the evaluated contents for a given array of fragments or return all fragments. - * - * @param array|null $fragments - * @return string - */ - public function fragments(?array $fragments = null) - { - return is_null($fragments) - ? $this->allFragments() - : collect($fragments)->map(fn ($f) => $this->fragment($f))->implode(''); - } - - /** - * Get the evaluated contents of a given fragment if the given condition is true. - * - * @param bool $boolean - * @param string $fragment - * @return string - */ - public function fragmentIf($boolean, $fragment) - { - if (value($boolean)) { - return $this->fragment($fragment); - } - - return $this->render(); - } - - /** - * Get the evaluated contents for a given array of fragments if the given condition is true. - * - * @param bool $boolean - * @param array|null $fragments - * @return string - */ - public function fragmentsIf($boolean, ?array $fragments = null) - { - if (value($boolean)) { - return $this->fragments($fragments); - } - - return $this->render(); - } - - /** - * Get all fragments as a single string. - * - * @return string - */ - protected function allFragments() - { - return collect($this->render(fn () => $this->factory->getFragments()))->implode(''); - } - - /** - * Get the string contents of the view. - * - * @param callable|null $callback - * @return string - * - * @throws \Throwable - */ - public function render(?callable $callback = null) - { - try { - $contents = $this->renderContents(); - - $response = isset($callback) ? $callback($this, $contents) : null; - - // Once we have the contents of the view, we will flush the sections if we are - // done rendering all views so that there is nothing left hanging over when - // another view gets rendered in the future by the application developer. - $this->factory->flushStateIfDoneRendering(); - - return ! is_null($response) ? $response : $contents; - } catch (Throwable $e) { - $this->factory->flushState(); - - throw $e; - } - } - - /** - * Get the contents of the view instance. - * - * @return string - */ - protected function renderContents() - { - // We will keep track of the number of views being rendered so we can flush - // the section after the complete rendering operation is done. This will - // clear out the sections for any separate views that may be rendered. - $this->factory->incrementRender(); - - $this->factory->callComposer($this); - - $contents = $this->getContents(); - - // Once we've finished rendering the view, we'll decrement the render count - // so that each section gets flushed out next time a view is created and - // no old sections are staying around in the memory of an environment. - $this->factory->decrementRender(); - - return $contents; - } - - /** - * Get the evaluated contents of the view. - * - * @return string - */ - protected function getContents() - { - return $this->engine->get($this->path, $this->gatherData()); - } - - /** - * Get the data bound to the view instance. - * - * @return array - */ - public function gatherData() - { - $data = array_merge($this->factory->getShared(), $this->data); - - foreach ($data as $key => $value) { - if ($value instanceof Renderable) { - $data[$key] = $value->render(); - } - } - - return $data; - } - - /** - * Get the sections of the rendered view. - * - * @return array - * - * @throws \Throwable - */ - public function renderSections() - { - return $this->render(function () { - return $this->factory->getSections(); - }); - } - - /** - * Add a piece of data to the view. - * - * @param string|array $key - * @param mixed $value - * @return $this - */ - public function with($key, $value = null) - { - if (is_array($key)) { - $this->data = array_merge($this->data, $key); - } else { - $this->data[$key] = $value; - } - - return $this; - } - - /** - * Add a view instance to the view data. - * - * @param string $key - * @param string $view - * @param array $data - * @return $this - */ - public function nest($key, $view, array $data = []) - { - return $this->with($key, $this->factory->make($view, $data)); - } - - /** - * Add validation errors to the view. - * - * @param \Illuminate\Contracts\Support\MessageProvider|array $provider - * @param string $bag - * @return $this - */ - public function withErrors($provider, $bag = 'default') - { - return $this->with('errors', (new ViewErrorBag)->put( - $bag, $this->formatErrors($provider) - )); - } - - /** - * Parse the given errors into an appropriate value. - * - * @param \Illuminate\Contracts\Support\MessageProvider|array|string $provider - * @return \Illuminate\Support\MessageBag - */ - protected function formatErrors($provider) - { - return $provider instanceof MessageProvider - ? $provider->getMessageBag() - : new MessageBag((array) $provider); - } - - /** - * Get the name of the view. - * - * @return string - */ - public function name() - { - return $this->getName(); - } - - /** - * Get the name of the view. - * - * @return string - */ - public function getName() - { - return $this->view; - } - - /** - * Get the array of view data. - * - * @return array - */ - public function getData() - { - return $this->data; - } - - /** - * Get the path to the view file. - * - * @return string - */ - public function getPath() - { - return $this->path; - } - - /** - * Set the path to the view. - * - * @param string $path - * @return void - */ - public function setPath($path) - { - $this->path = $path; - } - - /** - * Get the view factory instance. - * - * @return \Illuminate\View\Factory - */ - public function getFactory() - { - return $this->factory; - } - - /** - * Get the view's rendering engine. - * - * @return \Illuminate\Contracts\View\Engine - */ - public function getEngine() - { - return $this->engine; - } - - /** - * Determine if a piece of data is bound. - * - * @param string $key - * @return bool - */ - public function offsetExists($key): bool - { - return array_key_exists($key, $this->data); - } - - /** - * Get a piece of bound data to the view. - * - * @param string $key - * @return mixed - */ - public function offsetGet($key): mixed - { - return $this->data[$key]; - } - - /** - * Set a piece of data on the view. - * - * @param string $key - * @param mixed $value - * @return void - */ - public function offsetSet($key, $value): void - { - $this->with($key, $value); - } - - /** - * Unset a piece of data from the view. - * - * @param string $key - * @return void - */ - public function offsetUnset($key): void - { - unset($this->data[$key]); - } - - /** - * Get a piece of data from the view. - * - * @param string $key - * @return mixed - */ - public function &__get($key) - { - return $this->data[$key]; - } - - /** - * Set a piece of data on the view. - * - * @param string $key - * @param mixed $value - * @return void - */ - public function __set($key, $value) - { - $this->with($key, $value); - } - - /** - * Check if a piece of data is bound to the view. - * - * @param string $key - * @return bool - */ - public function __isset($key) - { - return isset($this->data[$key]); - } - - /** - * Remove a piece of bound data from the view. - * - * @param string $key - * @return void - */ - public function __unset($key) - { - unset($this->data[$key]); - } - - /** - * Dynamically bind parameters to the view. - * - * @param string $method - * @param array $parameters - * @return \Illuminate\View\View - * - * @throws \BadMethodCallException - */ - public function __call($method, $parameters) - { - if (static::hasMacro($method)) { - return $this->macroCall($method, $parameters); - } - - if (! str_starts_with($method, 'with')) { - throw new BadMethodCallException(sprintf( - 'Method %s::%s does not exist.', static::class, $method - )); - } - - return $this->with(Str::camel(substr($method, 4)), $parameters[0]); - } - - /** - * Get content as a string of HTML. - * - * @return string - */ - public function toHtml() - { - return $this->render(); - } - - /** - * Get the string contents of the view. - * - * @return string - * - * @throws \Throwable - */ - public function __toString() - { - return $this->render(); - } -} diff --git a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/View/ViewServiceProvider.php b/docker/streamline-src/vendor/laravel/framework/src/Illuminate/View/ViewServiceProvider.php deleted file mode 100755 index 41cd8b93..00000000 --- a/docker/streamline-src/vendor/laravel/framework/src/Illuminate/View/ViewServiceProvider.php +++ /dev/null @@ -1,179 +0,0 @@ -registerFactory(); - $this->registerViewFinder(); - $this->registerBladeCompiler(); - $this->registerEngineResolver(); - - $this->app->terminating(static function () { - Component::flushCache(); - }); - } - - /** - * Register the view environment. - * - * @return void - */ - public function registerFactory() - { - $this->app->singleton('view', function ($app) { - // Next we need to grab the engine resolver instance that will be used by the - // environment. The resolver will be used by an environment to get each of - // the various engine implementations such as plain PHP or Blade engine. - $resolver = $app['view.engine.resolver']; - - $finder = $app['view.finder']; - - $factory = $this->createFactory($resolver, $finder, $app['events']); - - // We will also set the container instance on this view environment since the - // view composers may be classes registered in the container, which allows - // for great testable, flexible composers for the application developer. - $factory->setContainer($app); - - $factory->share('app', $app); - - $app->terminating(static function () { - Component::forgetFactory(); - }); - - return $factory; - }); - } - - /** - * Create a new Factory Instance. - * - * @param \Illuminate\View\Engines\EngineResolver $resolver - * @param \Illuminate\View\ViewFinderInterface $finder - * @param \Illuminate\Contracts\Events\Dispatcher $events - * @return \Illuminate\View\Factory - */ - protected function createFactory($resolver, $finder, $events) - { - return new Factory($resolver, $finder, $events); - } - - /** - * Register the view finder implementation. - * - * @return void - */ - public function registerViewFinder() - { - $this->app->bind('view.finder', function ($app) { - return new FileViewFinder($app['files'], $app['config']['view.paths']); - }); - } - - /** - * Register the Blade compiler implementation. - * - * @return void - */ - public function registerBladeCompiler() - { - $this->app->singleton('blade.compiler', function ($app) { - return tap(new BladeCompiler( - $app['files'], - $app['config']['view.compiled'], - $app['config']->get('view.relative_hash', false) ? $app->basePath() : '', - $app['config']->get('view.cache', true), - $app['config']->get('view.compiled_extension', 'php'), - ), function ($blade) { - $blade->component('dynamic-component', DynamicComponent::class); - }); - }); - } - - /** - * Register the engine resolver instance. - * - * @return void - */ - public function registerEngineResolver() - { - $this->app->singleton('view.engine.resolver', function () { - $resolver = new EngineResolver; - - // Next, we will register the various view engines with the resolver so that the - // environment will resolve the engines needed for various views based on the - // extension of view file. We call a method for each of the view's engines. - foreach (['file', 'php', 'blade'] as $engine) { - $this->{'register'.ucfirst($engine).'Engine'}($resolver); - } - - return $resolver; - }); - } - - /** - * Register the file engine implementation. - * - * @param \Illuminate\View\Engines\EngineResolver $resolver - * @return void - */ - public function registerFileEngine($resolver) - { - $resolver->register('file', function () { - return new FileEngine(Container::getInstance()->make('files')); - }); - } - - /** - * Register the PHP engine implementation. - * - * @param \Illuminate\View\Engines\EngineResolver $resolver - * @return void - */ - public function registerPhpEngine($resolver) - { - $resolver->register('php', function () { - return new PhpEngine(Container::getInstance()->make('files')); - }); - } - - /** - * Register the Blade engine implementation. - * - * @param \Illuminate\View\Engines\EngineResolver $resolver - * @return void - */ - public function registerBladeEngine($resolver) - { - $resolver->register('blade', function () { - $app = Container::getInstance(); - - $compiler = new CompilerEngine( - $app->make('blade.compiler'), - $app->make('files'), - ); - - $app->terminating(static function () use ($compiler) { - $compiler->forgetCompiledOrNotExpired(); - }); - - return $compiler; - }); - } -} diff --git a/docker/streamline-src/vendor/laravel/helpers/src/helpers.php b/docker/streamline-src/vendor/laravel/helpers/src/helpers.php deleted file mode 100644 index 21e33425..00000000 --- a/docker/streamline-src/vendor/laravel/helpers/src/helpers.php +++ /dev/null @@ -1,599 +0,0 @@ -=10.17.0 <10.25.0", - "laravel/framework": ">=10.17.0 <10.25.0" - }, - "suggest": { - "ext-pcntl": "Required for the spinner to be animated." - }, - "config": { - "allow-plugins": { - "pestphp/pest-plugin": true - } - }, - "extra": { - "branch-alias": { - "dev-main": "0.1.x-dev" - } - }, - "prefer-stable": true, - "minimum-stability": "dev" -} diff --git a/docker/streamline-src/vendor/laravel/prompts/src/Concerns/Cursor.php b/docker/streamline-src/vendor/laravel/prompts/src/Concerns/Cursor.php deleted file mode 100644 index a4d8d1e2..00000000 --- a/docker/streamline-src/vendor/laravel/prompts/src/Concerns/Cursor.php +++ /dev/null @@ -1,79 +0,0 @@ -showCursor(); - } - } - - /** - * Move the cursor. - */ - public function moveCursor(int $x, int $y = 0): void - { - $sequence = ''; - - if ($x < 0) { - $sequence .= "\e[".abs($x).'D'; // Left - } elseif ($x > 0) { - $sequence .= "\e[{$x}C"; // Right - } - - if ($y < 0) { - $sequence .= "\e[".abs($y).'A'; // Up - } elseif ($y > 0) { - $sequence .= "\e[{$y}B"; // Down - } - - static::writeDirectly($sequence); - } - - /** - * Move the cursor to the given column. - */ - public function moveCursorToColumn(int $column): void - { - static::writeDirectly("\e[{$column}G"); - } - - /** - * Move the cursor up by the given number of lines. - */ - public function moveCursorUp(int $lines): void - { - static::writeDirectly("\e[{$lines}A"); - } -} diff --git a/docker/streamline-src/vendor/laravel/prompts/src/Concerns/FakesInputOutput.php b/docker/streamline-src/vendor/laravel/prompts/src/Concerns/FakesInputOutput.php deleted file mode 100644 index 5bbf53fa..00000000 --- a/docker/streamline-src/vendor/laravel/prompts/src/Concerns/FakesInputOutput.php +++ /dev/null @@ -1,92 +0,0 @@ - $keys - */ - public static function fake(array $keys = []): void - { - // Force interactive mode when testing because we will be mocking the terminal. - static::interactive(); - - $mock = \Mockery::mock(Terminal::class); - - $mock->shouldReceive('write')->byDefault(); - $mock->shouldReceive('exit')->byDefault(); - $mock->shouldReceive('setTty')->byDefault(); - $mock->shouldReceive('restoreTty')->byDefault(); - $mock->shouldReceive('cols')->byDefault()->andReturn(80); - $mock->shouldReceive('lines')->byDefault()->andReturn(24); - $mock->shouldReceive('initDimensions')->byDefault(); - - foreach ($keys as $key) { - $mock->shouldReceive('read')->once()->andReturn($key); - } - - static::$terminal = $mock; - - self::setOutput(new BufferedConsoleOutput); - } - - /** - * Assert that the output contains the given string. - */ - public static function assertOutputContains(string $string): void - { - Assert::assertStringContainsString($string, static::content()); - } - - /** - * Assert that the output doesn't contain the given string. - */ - public static function assertOutputDoesntContain(string $string): void - { - Assert::assertStringNotContainsString($string, static::content()); - } - - /** - * Assert that the stripped output contains the given string. - */ - public static function assertStrippedOutputContains(string $string): void - { - Assert::assertStringContainsString($string, static::strippedContent()); - } - - /** - * Assert that the stripped output doesn't contain the given string. - */ - public static function assertStrippedOutputDoesntContain(string $string): void - { - Assert::assertStringNotContainsString($string, static::strippedContent()); - } - - /** - * Get the buffered console output. - */ - public static function content(): string - { - if (! static::output() instanceof BufferedConsoleOutput) { - throw new RuntimeException('Prompt must be faked before accessing content.'); - } - - return static::output()->content(); - } - - /** - * Get the buffered console output, stripped of escape sequences. - */ - public static function strippedContent(): string - { - return preg_replace("/\e\[[0-9;?]*[A-Za-z]/", '', static::content()); - } -} diff --git a/docker/streamline-src/vendor/laravel/prompts/src/Concerns/Scrolling.php b/docker/streamline-src/vendor/laravel/prompts/src/Concerns/Scrolling.php deleted file mode 100644 index 181a825e..00000000 --- a/docker/streamline-src/vendor/laravel/prompts/src/Concerns/Scrolling.php +++ /dev/null @@ -1,115 +0,0 @@ -highlighted = $highlighted; - - $this->reduceScrollingToFitTerminal(); - } - - /** - * Reduce the scroll property to fit the terminal height. - */ - protected function reduceScrollingToFitTerminal(): void - { - $reservedLines = ($renderer = $this->getRenderer()) instanceof ScrollingRenderer ? $renderer->reservedLines() : 0; - - $this->scroll = max(1, min($this->scroll, $this->terminal()->lines() - $reservedLines)); - } - - /** - * Highlight the given index. - */ - protected function highlight(?int $index): void - { - $this->highlighted = $index; - - if ($this->highlighted === null) { - return; - } - - if ($this->highlighted < $this->firstVisible) { - $this->firstVisible = $this->highlighted; - } elseif ($this->highlighted > $this->firstVisible + $this->scroll - 1) { - $this->firstVisible = $this->highlighted - $this->scroll + 1; - } - } - - /** - * Highlight the previous entry, or wrap around to the last entry. - */ - protected function highlightPrevious(int $total, bool $allowNull = false): void - { - if ($total === 0) { - return; - } - - if ($this->highlighted === null) { - $this->highlight($total - 1); - } elseif ($this->highlighted === 0) { - $this->highlight($allowNull ? null : ($total - 1)); - } else { - $this->highlight($this->highlighted - 1); - } - } - - /** - * Highlight the next entry, or wrap around to the first entry. - */ - protected function highlightNext(int $total, bool $allowNull = false): void - { - if ($total === 0) { - return; - } - - if ($this->highlighted === $total - 1) { - $this->highlight($allowNull ? null : 0); - } else { - $this->highlight(($this->highlighted ?? -1) + 1); - } - } - - /** - * Center the highlighted option. - */ - protected function scrollToHighlighted(int $total): void - { - if ($this->highlighted < $this->scroll) { - return; - } - - $remaining = $total - $this->highlighted - 1; - $halfScroll = (int) floor($this->scroll / 2); - $endOffset = max(0, $halfScroll - $remaining); - - if ($this->scroll % 2 === 0) { - $endOffset--; - } - - $this->firstVisible = $this->highlighted - $halfScroll - $endOffset; - } -} diff --git a/docker/streamline-src/vendor/laravel/prompts/src/Concerns/Termwind.php b/docker/streamline-src/vendor/laravel/prompts/src/Concerns/Termwind.php deleted file mode 100644 index 301776b1..00000000 --- a/docker/streamline-src/vendor/laravel/prompts/src/Concerns/Termwind.php +++ /dev/null @@ -1,25 +0,0 @@ -restoreEscapeSequences($output->fetch()); - } - - protected function restoreEscapeSequences(string $string) - { - return preg_replace('/\[(\d+)m/', "\e[".'\1m', $string); - } -} diff --git a/docker/streamline-src/vendor/laravel/prompts/src/Concerns/Themes.php b/docker/streamline-src/vendor/laravel/prompts/src/Concerns/Themes.php deleted file mode 100644 index bc8afd88..00000000 --- a/docker/streamline-src/vendor/laravel/prompts/src/Concerns/Themes.php +++ /dev/null @@ -1,117 +0,0 @@ -, class-string>> - */ - protected static array $themes = [ - 'default' => [ - TextPrompt::class => TextPromptRenderer::class, - TextareaPrompt::class => TextareaPromptRenderer::class, - PasswordPrompt::class => PasswordPromptRenderer::class, - SelectPrompt::class => SelectPromptRenderer::class, - MultiSelectPrompt::class => MultiSelectPromptRenderer::class, - ConfirmPrompt::class => ConfirmPromptRenderer::class, - PausePrompt::class => PausePromptRenderer::class, - SearchPrompt::class => SearchPromptRenderer::class, - MultiSearchPrompt::class => MultiSearchPromptRenderer::class, - SuggestPrompt::class => SuggestPromptRenderer::class, - Spinner::class => SpinnerRenderer::class, - Note::class => NoteRenderer::class, - Table::class => TableRenderer::class, - Progress::class => ProgressRenderer::class, - ], - ]; - - /** - * Get or set the active theme. - * - * @throws \InvalidArgumentException - */ - public static function theme(?string $name = null): string - { - if ($name === null) { - return static::$theme; - } - - if (! isset(static::$themes[$name])) { - throw new InvalidArgumentException("Prompt theme [{$name}] not found."); - } - - return static::$theme = $name; - } - - /** - * Add a new theme. - * - * @param array, class-string> $renderers - */ - public static function addTheme(string $name, array $renderers): void - { - if ($name === 'default') { - throw new InvalidArgumentException('The default theme cannot be overridden.'); - } - - static::$themes[$name] = $renderers; - } - - /** - * Get the renderer for the current prompt. - */ - protected function getRenderer(): callable - { - $class = get_class($this); - - return new (static::$themes[static::$theme][$class] ?? static::$themes['default'][$class])($this); - } - - /** - * Render the prompt using the active theme. - */ - protected function renderTheme(): string - { - $renderer = $this->getRenderer(); - - return $renderer($this); - } -} diff --git a/docker/streamline-src/vendor/laravel/prompts/src/Concerns/Truncation.php b/docker/streamline-src/vendor/laravel/prompts/src/Concerns/Truncation.php deleted file mode 100644 index 84cf60e7..00000000 --- a/docker/streamline-src/vendor/laravel/prompts/src/Concerns/Truncation.php +++ /dev/null @@ -1,106 +0,0 @@ - $word) { - $characters = mb_str_split($word); - $strings = []; - $str = ''; - - foreach ($characters as $character) { - $tmp = $str.$character; - - if (mb_strwidth($tmp) > $width) { - $strings[] = $str; - $str = $character; - } else { - $str = $tmp; - } - } - - if ($str !== '') { - $strings[] = $str; - } - - $words[$index] = implode(' ', $strings); - } - - $words = explode(' ', implode(' ', $words)); - } - - foreach ($words as $word) { - $tmp = ($line === null) ? $word : $line.' '.$word; - - // Look for zero-width joiner characters (combined emojis) - preg_match('/\p{Cf}/u', $word, $joinerMatches); - - $wordWidth = count($joinerMatches) > 0 ? 2 : mb_strwidth($word); - - $lineWidth += $wordWidth; - - if ($line !== null) { - // Space between words - $lineWidth += 1; - } - - if ($lineWidth <= $width) { - $line = $tmp; - } else { - $result[] = $line; - $line = $word; - $lineWidth = $wordWidth; - } - } - - if ($line !== '') { - $result[] = $line; - } - - $line = null; - } - - return implode($break, $result); - } -} diff --git a/docker/streamline-src/vendor/laravel/prompts/src/Concerns/TypedValue.php b/docker/streamline-src/vendor/laravel/prompts/src/Concerns/TypedValue.php deleted file mode 100644 index 56d356ad..00000000 --- a/docker/streamline-src/vendor/laravel/prompts/src/Concerns/TypedValue.php +++ /dev/null @@ -1,128 +0,0 @@ -typedValue = $default; - - if ($this->typedValue) { - $this->cursorPosition = mb_strlen($this->typedValue); - } - - $this->on('key', function ($key) use ($submit, $ignore, $allowNewLine) { - if ($key[0] === "\e" || in_array($key, [Key::CTRL_B, Key::CTRL_F, Key::CTRL_A, Key::CTRL_E])) { - if ($ignore !== null && $ignore($key)) { - return; - } - - match ($key) { - Key::LEFT, Key::LEFT_ARROW, Key::CTRL_B => $this->cursorPosition = max(0, $this->cursorPosition - 1), - Key::RIGHT, Key::RIGHT_ARROW, Key::CTRL_F => $this->cursorPosition = min(mb_strlen($this->typedValue), $this->cursorPosition + 1), - Key::oneOf([Key::HOME, Key::CTRL_A], $key) => $this->cursorPosition = 0, - Key::oneOf([Key::END, Key::CTRL_E], $key) => $this->cursorPosition = mb_strlen($this->typedValue), - Key::DELETE => $this->typedValue = mb_substr($this->typedValue, 0, $this->cursorPosition).mb_substr($this->typedValue, $this->cursorPosition + 1), - default => null, - }; - - return; - } - - // Keys may be buffered. - foreach (mb_str_split($key) as $key) { - if ($ignore !== null && $ignore($key)) { - return; - } - - if ($key === Key::ENTER) { - if ($submit) { - $this->submit(); - - return; - } - - if ($allowNewLine) { - $this->typedValue = mb_substr($this->typedValue, 0, $this->cursorPosition).PHP_EOL.mb_substr($this->typedValue, $this->cursorPosition); - $this->cursorPosition++; - } - } elseif ($key === Key::BACKSPACE || $key === Key::CTRL_H) { - if ($this->cursorPosition === 0) { - return; - } - - $this->typedValue = mb_substr($this->typedValue, 0, $this->cursorPosition - 1).mb_substr($this->typedValue, $this->cursorPosition); - $this->cursorPosition--; - } elseif (ord($key) >= 32) { - $this->typedValue = mb_substr($this->typedValue, 0, $this->cursorPosition).$key.mb_substr($this->typedValue, $this->cursorPosition); - $this->cursorPosition++; - } - } - }); - } - - /** - * Get the value of the prompt. - */ - public function value(): string - { - return $this->typedValue; - } - - /** - * Add a virtual cursor to the value and truncate if necessary. - */ - protected function addCursor(string $value, int $cursorPosition, ?int $maxWidth = null): string - { - $before = mb_substr($value, 0, $cursorPosition); - $current = mb_substr($value, $cursorPosition, 1); - $after = mb_substr($value, $cursorPosition + 1); - - $cursor = mb_strlen($current) && $current !== PHP_EOL ? $current : ' '; - - $spaceBefore = $maxWidth < 0 || $maxWidth === null ? mb_strwidth($before) : $maxWidth - mb_strwidth($cursor) - (mb_strwidth($after) > 0 ? 1 : 0); - [$truncatedBefore, $wasTruncatedBefore] = mb_strwidth($before) > $spaceBefore - ? [$this->trimWidthBackwards($before, 0, $spaceBefore - 1), true] - : [$before, false]; - - $spaceAfter = $maxWidth < 0 || $maxWidth === null ? mb_strwidth($after) : $maxWidth - ($wasTruncatedBefore ? 1 : 0) - mb_strwidth($truncatedBefore) - mb_strwidth($cursor); - [$truncatedAfter, $wasTruncatedAfter] = mb_strwidth($after) > $spaceAfter - ? [mb_strimwidth($after, 0, $spaceAfter - 1), true] - : [$after, false]; - - return ($wasTruncatedBefore ? $this->dim('…') : '') - .$truncatedBefore - .$this->inverse($cursor) - .($current === PHP_EOL ? PHP_EOL : '') - .$truncatedAfter - .($wasTruncatedAfter ? $this->dim('…') : ''); - } - - /** - * Get a truncated string with the specified width from the end. - */ - private function trimWidthBackwards(string $string, int $start, int $width): string - { - $reversed = implode('', array_reverse(mb_str_split($string, 1))); - - $trimmed = mb_strimwidth($reversed, $start, $width); - - return implode('', array_reverse(mb_str_split($trimmed, 1))); - } -} diff --git a/docker/streamline-src/vendor/laravel/prompts/src/ConfirmPrompt.php b/docker/streamline-src/vendor/laravel/prompts/src/ConfirmPrompt.php deleted file mode 100644 index 3abccf07..00000000 --- a/docker/streamline-src/vendor/laravel/prompts/src/ConfirmPrompt.php +++ /dev/null @@ -1,53 +0,0 @@ -confirmed = $default; - - $this->on('key', fn ($key) => match ($key) { - 'y' => $this->confirmed = true, - 'n' => $this->confirmed = false, - Key::TAB, Key::UP, Key::UP_ARROW, Key::DOWN, Key::DOWN_ARROW, Key::LEFT, Key::LEFT_ARROW, Key::RIGHT, Key::RIGHT_ARROW, Key::CTRL_P, Key::CTRL_F, Key::CTRL_N, Key::CTRL_B, 'h', 'j', 'k', 'l' => $this->confirmed = ! $this->confirmed, - Key::ENTER => $this->submit(), - default => null, - }); - } - - /** - * Get the value of the prompt. - */ - public function value(): bool - { - return $this->confirmed; - } - - /** - * Get the label of the selected option. - */ - public function label(): string - { - return $this->confirmed ? $this->yes : $this->no; - } -} diff --git a/docker/streamline-src/vendor/laravel/prompts/src/Key.php b/docker/streamline-src/vendor/laravel/prompts/src/Key.php deleted file mode 100644 index 28d0ddc0..00000000 --- a/docker/streamline-src/vendor/laravel/prompts/src/Key.php +++ /dev/null @@ -1,104 +0,0 @@ -> $keys - */ - public static function oneOf(array $keys, string $match): ?string - { - return collect($keys)->flatten()->contains($match) ? $match : null; - } -} diff --git a/docker/streamline-src/vendor/laravel/prompts/src/MultiSearchPrompt.php b/docker/streamline-src/vendor/laravel/prompts/src/MultiSearchPrompt.php deleted file mode 100644 index 083f56b9..00000000 --- a/docker/streamline-src/vendor/laravel/prompts/src/MultiSearchPrompt.php +++ /dev/null @@ -1,214 +0,0 @@ -|null - */ - protected ?array $matches = null; - - /** - * Whether the matches are initially a list. - */ - protected bool $isList; - - /** - * The selected values. - * - * @var array - */ - public array $values = []; - - /** - * Create a new MultiSearchPrompt instance. - * - * @param Closure(string): array $options - */ - public function __construct( - public string $label, - public Closure $options, - public string $placeholder = '', - public int $scroll = 5, - public bool|string $required = false, - public mixed $validate = null, - public string $hint = '', - public ?Closure $transform = null, - ) { - $this->trackTypedValue(submit: false, ignore: fn ($key) => Key::oneOf([Key::SPACE, Key::HOME, Key::END, Key::CTRL_A, Key::CTRL_E], $key) && $this->highlighted !== null); - - $this->initializeScrolling(null); - - $this->on('key', fn ($key) => match ($key) { - Key::UP, Key::UP_ARROW, Key::SHIFT_TAB => $this->highlightPrevious(count($this->matches), true), - Key::DOWN, Key::DOWN_ARROW, Key::TAB => $this->highlightNext(count($this->matches), true), - Key::oneOf(Key::HOME, $key) => $this->highlighted !== null ? $this->highlight(0) : null, - Key::oneOf(Key::END, $key) => $this->highlighted !== null ? $this->highlight(count($this->matches()) - 1) : null, - Key::SPACE => $this->highlighted !== null ? $this->toggleHighlighted() : null, - Key::CTRL_A => $this->highlighted !== null ? $this->toggleAll() : null, - Key::CTRL_E => null, - Key::ENTER => $this->submit(), - Key::LEFT, Key::LEFT_ARROW, Key::RIGHT, Key::RIGHT_ARROW => $this->highlighted = null, - default => $this->search(), - }); - } - - /** - * Perform the search. - */ - protected function search(): void - { - $this->state = 'searching'; - $this->highlighted = null; - $this->render(); - $this->matches = null; - $this->firstVisible = 0; - $this->state = 'active'; - } - - /** - * Get the entered value with a virtual cursor. - */ - public function valueWithCursor(int $maxWidth): string - { - if ($this->highlighted !== null) { - return $this->typedValue === '' - ? $this->dim($this->truncate($this->placeholder, $maxWidth)) - : $this->truncate($this->typedValue, $maxWidth); - } - - if ($this->typedValue === '') { - return $this->dim($this->addCursor($this->placeholder, 0, $maxWidth)); - } - - return $this->addCursor($this->typedValue, $this->cursorPosition, $maxWidth); - } - - /** - * Get options that match the input. - * - * @return array - */ - public function matches(): array - { - if (is_array($this->matches)) { - return $this->matches; - } - - $matches = ($this->options)($this->typedValue); - - if (! isset($this->isList) && count($matches) > 0) { - // This needs to be captured the first time we receive matches so - // we know what we're dealing with later if matches is empty. - $this->isList = array_is_list($matches); - } - - if (! isset($this->isList)) { - return $this->matches = []; - } - - if (strlen($this->typedValue) > 0) { - return $this->matches = $matches; - } - - return $this->matches = $this->isList - ? [...array_diff(array_values($this->values), $matches), ...$matches] - : array_diff($this->values, $matches) + $matches; - } - - /** - * The currently visible matches - * - * @return array - */ - public function visible(): array - { - return array_slice($this->matches(), $this->firstVisible, $this->scroll, preserve_keys: true); - } - - /** - * Toggle all options. - */ - protected function toggleAll(): void - { - $allMatchesSelected = collect($this->matches)->every(fn ($label, $key) => $this->isList() - ? array_key_exists($label, $this->values) - : array_key_exists($key, $this->values)); - - if ($allMatchesSelected) { - $this->values = array_filter($this->values, fn ($value) => $this->isList() - ? ! in_array($value, $this->matches) - : ! array_key_exists(array_search($value, $this->matches), $this->matches) - ); - } else { - $this->values = $this->isList() - ? array_merge($this->values, array_combine(array_values($this->matches), array_values($this->matches))) - : array_merge($this->values, array_combine(array_keys($this->matches), array_values($this->matches))); - } - } - - /** - * Toggle the highlighted entry. - */ - protected function toggleHighlighted(): void - { - if ($this->isList()) { - $label = $this->matches[$this->highlighted]; - $key = $label; - } else { - $key = array_keys($this->matches)[$this->highlighted]; - $label = $this->matches[$key]; - } - - if (array_key_exists($key, $this->values)) { - unset($this->values[$key]); - } else { - $this->values[$key] = $label; - } - } - - /** - * Get the current search query. - */ - public function searchValue(): string - { - return $this->typedValue; - } - - /** - * Get the selected value. - * - * @return array - */ - public function value(): array - { - return array_keys($this->values); - } - - /** - * Get the selected labels. - * - * @return array - */ - public function labels(): array - { - return array_values($this->values); - } - - /** - * Whether the matches are initially a list. - */ - public function isList(): bool - { - return $this->isList; - } -} diff --git a/docker/streamline-src/vendor/laravel/prompts/src/MultiSelectPrompt.php b/docker/streamline-src/vendor/laravel/prompts/src/MultiSelectPrompt.php deleted file mode 100644 index c28bedf8..00000000 --- a/docker/streamline-src/vendor/laravel/prompts/src/MultiSelectPrompt.php +++ /dev/null @@ -1,150 +0,0 @@ - - */ - public array $options; - - /** - * The default values the multi-select prompt. - * - * @var array - */ - public array $default; - - /** - * The selected values. - * - * @var array - */ - protected array $values = []; - - /** - * Create a new MultiSelectPrompt instance. - * - * @param array|Collection $options - * @param array|Collection $default - */ - public function __construct( - public string $label, - array|Collection $options, - array|Collection $default = [], - public int $scroll = 5, - public bool|string $required = false, - public mixed $validate = null, - public string $hint = '', - public ?Closure $transform = null, - ) { - $this->options = $options instanceof Collection ? $options->all() : $options; - $this->default = $default instanceof Collection ? $default->all() : $default; - $this->values = $this->default; - - $this->initializeScrolling(0); - - $this->on('key', fn ($key) => match ($key) { - Key::UP, Key::UP_ARROW, Key::LEFT, Key::LEFT_ARROW, Key::SHIFT_TAB, Key::CTRL_P, Key::CTRL_B, 'k', 'h' => $this->highlightPrevious(count($this->options)), - Key::DOWN, Key::DOWN_ARROW, Key::RIGHT, Key::RIGHT_ARROW, Key::TAB, Key::CTRL_N, Key::CTRL_F, 'j', 'l' => $this->highlightNext(count($this->options)), - Key::oneOf(Key::HOME, $key) => $this->highlight(0), - Key::oneOf(Key::END, $key) => $this->highlight(count($this->options) - 1), - Key::SPACE => $this->toggleHighlighted(), - Key::CTRL_A => $this->toggleAll(), - Key::ENTER => $this->submit(), - default => null, - }); - } - - /** - * Get the selected values. - * - * @return array - */ - public function value(): array - { - return array_values($this->values); - } - - /** - * Get the selected labels. - * - * @return array - */ - public function labels(): array - { - if (array_is_list($this->options)) { - return array_map(fn ($value) => (string) $value, $this->values); - } - - return array_values(array_intersect_key($this->options, array_flip($this->values))); - } - - /** - * The currently visible options. - * - * @return array - */ - public function visible(): array - { - return array_slice($this->options, $this->firstVisible, $this->scroll, preserve_keys: true); - } - - /** - * Check whether the value is currently highlighted. - */ - public function isHighlighted(string $value): bool - { - if (array_is_list($this->options)) { - return $this->options[$this->highlighted] === $value; - } - - return array_keys($this->options)[$this->highlighted] === $value; - } - - /** - * Check whether the value is currently selected. - */ - public function isSelected(string $value): bool - { - return in_array($value, $this->values); - } - - /** - * Toggle all options. - */ - protected function toggleAll(): void - { - if (count($this->values) === count($this->options)) { - $this->values = []; - } else { - $this->values = array_is_list($this->options) - ? array_values($this->options) - : array_keys($this->options); - } - } - - /** - * Toggle the highlighted entry. - */ - protected function toggleHighlighted(): void - { - $value = array_is_list($this->options) - ? $this->options[$this->highlighted] - : array_keys($this->options)[$this->highlighted]; - - if (in_array($value, $this->values)) { - $this->values = array_filter($this->values, fn ($v) => $v !== $value); - } else { - $this->values[] = $value; - } - } -} diff --git a/docker/streamline-src/vendor/laravel/prompts/src/PasswordPrompt.php b/docker/streamline-src/vendor/laravel/prompts/src/PasswordPrompt.php deleted file mode 100644 index 41b755a6..00000000 --- a/docker/streamline-src/vendor/laravel/prompts/src/PasswordPrompt.php +++ /dev/null @@ -1,44 +0,0 @@ -trackTypedValue(); - } - - /** - * Get a masked version of the entered value. - */ - public function masked(): string - { - return str_repeat('•', mb_strlen($this->value())); - } - - /** - * Get the masked value with a virtual cursor. - */ - public function maskedWithCursor(int $maxWidth): string - { - if ($this->value() === '') { - return $this->dim($this->addCursor($this->placeholder, 0, $maxWidth)); - } - - return $this->addCursor($this->masked(), $this->cursorPosition, $maxWidth); - } -} diff --git a/docker/streamline-src/vendor/laravel/prompts/src/Progress.php b/docker/streamline-src/vendor/laravel/prompts/src/Progress.php deleted file mode 100644 index 3d2a345f..00000000 --- a/docker/streamline-src/vendor/laravel/prompts/src/Progress.php +++ /dev/null @@ -1,213 +0,0 @@ -|int - */ -class Progress extends Prompt -{ - /** - * The current progress bar item count. - */ - public int $progress = 0; - - /** - * The total number of steps. - */ - public int $total = 0; - - /** - * The original value of pcntl_async_signals - */ - protected bool $originalAsync; - - /** - * Create a new ProgressBar instance. - * - * @param TSteps $steps - */ - public function __construct(public string $label, public iterable|int $steps, public string $hint = '') - { - $this->total = match (true) { // @phpstan-ignore assign.propertyType - is_int($this->steps) => $this->steps, - is_countable($this->steps) => count($this->steps), - is_iterable($this->steps) => iterator_count($this->steps), - default => throw new InvalidArgumentException('Unable to count steps.'), - }; - - if ($this->total === 0) { - throw new InvalidArgumentException('Progress bar must have at least one item.'); - } - } - - /** - * Map over the steps while rendering the progress bar. - * - * @template TReturn - * - * @param Closure((TSteps is int ? int : value-of), $this): TReturn $callback - * @return array - */ - public function map(Closure $callback): array - { - $this->start(); - - $result = []; - - try { - if (is_int($this->steps)) { - for ($i = 0; $i < $this->steps; $i++) { - $result[] = $callback($i, $this); - $this->advance(); - } - } else { - foreach ($this->steps as $step) { - $result[] = $callback($step, $this); - $this->advance(); - } - } - } catch (Throwable $e) { - $this->state = 'error'; - $this->render(); - $this->restoreCursor(); - $this->resetSignals(); - - throw $e; - } - - if ($this->hint !== '') { - // Just pause for one moment to show the final hint - // so it doesn't look like it was skipped - usleep(250_000); - } - - $this->finish(); - - return $result; - } - - /** - * Start the progress bar. - */ - public function start(): void - { - $this->capturePreviousNewLines(); - - if (function_exists('pcntl_signal')) { - $this->originalAsync = pcntl_async_signals(true); - pcntl_signal(SIGINT, function () { - $this->state = 'cancel'; - $this->render(); - exit(); - }); - } - - $this->state = 'active'; - $this->hideCursor(); - $this->render(); - } - - /** - * Advance the progress bar. - */ - public function advance(int $step = 1): void - { - $this->progress += $step; - - if ($this->progress > $this->total) { - $this->progress = $this->total; - } - - $this->render(); - } - - /** - * Finish the progress bar. - */ - public function finish(): void - { - $this->state = 'submit'; - $this->render(); - $this->restoreCursor(); - $this->resetSignals(); - } - - /** - * Force the progress bar to re-render. - */ - public function render(): void - { - parent::render(); - } - - /** - * Update the label. - */ - public function label(string $label): static - { - $this->label = $label; - - return $this; - } - - /** - * Update the hint. - */ - public function hint(string $hint): static - { - $this->hint = $hint; - - return $this; - } - - /** - * Get the completion percentage. - */ - public function percentage(): int|float - { - return $this->progress / $this->total; - } - - /** - * Disable prompting for input. - * - * @throws \RuntimeException - */ - public function prompt(): never - { - throw new RuntimeException('Progress Bar cannot be prompted.'); - } - - /** - * Get the value of the prompt. - */ - public function value(): bool - { - return true; - } - - /** - * Reset the signal handling. - */ - protected function resetSignals(): void - { - if (isset($this->originalAsync)) { - pcntl_async_signals($this->originalAsync); - pcntl_signal(SIGINT, SIG_DFL); - } - } - - /** - * Restore the cursor. - */ - public function __destruct() - { - $this->restoreCursor(); - } -} diff --git a/docker/streamline-src/vendor/laravel/prompts/src/Prompt.php b/docker/streamline-src/vendor/laravel/prompts/src/Prompt.php deleted file mode 100644 index 560bc154..00000000 --- a/docker/streamline-src/vendor/laravel/prompts/src/Prompt.php +++ /dev/null @@ -1,417 +0,0 @@ -capturePreviousNewLines(); - - if (static::shouldFallback()) { - return $this->fallback(); - } - - static::$interactive ??= stream_isatty(STDIN); - - if (! static::$interactive) { - return $this->default(); - } - - $this->checkEnvironment(); - - try { - static::terminal()->setTty('-icanon -isig -echo'); - } catch (Throwable $e) { - static::output()->writeln("{$e->getMessage()}"); - static::fallbackWhen(true); - - return $this->fallback(); - } - - $this->hideCursor(); - $this->render(); - - while (($key = static::terminal()->read()) !== null) { - $continue = $this->handleKeyPress($key); - - $this->render(); - - if ($continue === false || $key === Key::CTRL_C) { - if ($key === Key::CTRL_C) { - if (isset(static::$cancelUsing)) { - return (static::$cancelUsing)(); - } else { - static::terminal()->exit(); - } - } - - if ($key === Key::CTRL_U && self::$revertUsing) { - throw new FormRevertedException; - } - - return $this->transformedValue(); - } - } - } finally { - $this->clearListeners(); - } - } - - /** - * Register a callback to be invoked when a user cancels a prompt. - */ - public static function cancelUsing(?Closure $callback): void - { - static::$cancelUsing = $callback; - } - - /** - * How many new lines were written by the last output. - */ - public function newLinesWritten(): int - { - return $this->newLinesWritten; - } - - /** - * Capture the number of new lines written by the last output. - */ - protected function capturePreviousNewLines(): void - { - $this->newLinesWritten = method_exists(static::output(), 'newLinesWritten') - ? static::output()->newLinesWritten() - : 1; - } - - /** - * Set the output instance. - */ - public static function setOutput(OutputInterface $output): void - { - self::$output = $output; - } - - /** - * Get the current output instance. - */ - protected static function output(): OutputInterface - { - return self::$output ??= new ConsoleOutput; - } - - /** - * Write output directly, bypassing newline capture. - */ - protected static function writeDirectly(string $message): void - { - match (true) { - method_exists(static::output(), 'writeDirectly') => static::output()->writeDirectly($message), - method_exists(static::output(), 'getOutput') => static::output()->getOutput()->write($message), - default => static::output()->write($message), - }; - } - - /** - * Get the terminal instance. - */ - public static function terminal(): Terminal - { - return static::$terminal ??= new Terminal; - } - - /** - * Set the custom validation callback. - */ - public static function validateUsing(Closure $callback): void - { - static::$validateUsing = $callback; - } - - /** - * Revert the prompt using the given callback. - * - * @internal - */ - public static function revertUsing(Closure $callback): void - { - static::$revertUsing = $callback; - } - - /** - * Clear any previous revert callback. - * - * @internal - */ - public static function preventReverting(): void - { - static::$revertUsing = null; - } - - /** - * Render the prompt. - */ - protected function render(): void - { - $this->terminal()->initDimensions(); - - $frame = $this->renderTheme(); - - if ($frame === $this->prevFrame) { - return; - } - - if ($this->state === 'initial') { - static::output()->write($frame); - - $this->state = 'active'; - $this->prevFrame = $frame; - - return; - } - - $terminalHeight = $this->terminal()->lines(); - $previousFrameHeight = count(explode(PHP_EOL, $this->prevFrame)); - $renderableLines = array_slice(explode(PHP_EOL, $frame), abs(min(0, $terminalHeight - $previousFrameHeight))); - - $this->moveCursorToColumn(1); - $this->moveCursorUp(min($terminalHeight, $previousFrameHeight) - 1); - $this->eraseDown(); - $this->output()->write(implode(PHP_EOL, $renderableLines)); - - $this->prevFrame = $frame; - } - - /** - * Submit the prompt. - */ - protected function submit(): void - { - $this->validate($this->transformedValue()); - - if ($this->state !== 'error') { - $this->state = 'submit'; - } - } - - /** - * Handle a key press and determine whether to continue. - */ - private function handleKeyPress(string $key): bool - { - if ($this->state === 'error') { - $this->state = 'active'; - } - - $this->emit('key', $key); - - if ($this->state === 'submit') { - return false; - } - - if ($key === Key::CTRL_U) { - if (! self::$revertUsing) { - $this->state = 'error'; - $this->error = 'This cannot be reverted.'; - - return true; - } - - $this->state = 'cancel'; - $this->cancelMessage = 'Reverted.'; - - call_user_func(self::$revertUsing); - - return false; - } - - if ($key === Key::CTRL_C) { - $this->state = 'cancel'; - - return false; - } - - if ($this->validated) { - $this->validate($this->transformedValue()); - } - - return true; - } - - /** - * Transform the input. - */ - private function transform(mixed $value): mixed - { - if (is_null($this->transform)) { - return $value; - } - - return call_user_func($this->transform, $value); - } - - /** - * Get the transformed value of the prompt. - */ - protected function transformedValue(): mixed - { - return $this->transform($this->value()); - } - - /** - * Validate the input. - */ - private function validate(mixed $value): void - { - $this->validated = true; - - if ($this->required !== false && $this->isInvalidWhenRequired($value)) { - $this->state = 'error'; - $this->error = is_string($this->required) && strlen($this->required) > 0 ? $this->required : 'Required.'; - - return; - } - - if (! isset($this->validate) && ! isset(static::$validateUsing)) { - return; - } - - $error = match (true) { - is_callable($this->validate) => ($this->validate)($value), - isset(static::$validateUsing) => (static::$validateUsing)($this), - default => throw new RuntimeException('The validation logic is missing.'), - }; - - if (! is_string($error) && ! is_null($error)) { - throw new RuntimeException('The validator must return a string or null.'); - } - - if (is_string($error) && strlen($error) > 0) { - $this->state = 'error'; - $this->error = $error; - } - } - - /** - * Determine whether the given value is invalid when the prompt is required. - */ - protected function isInvalidWhenRequired(mixed $value): bool - { - return $value === '' || $value === [] || $value === false || $value === null; - } - - /** - * Check whether the environment can support the prompt. - */ - private function checkEnvironment(): void - { - if (PHP_OS_FAMILY === 'Windows') { - throw new RuntimeException('Prompts is not currently supported on Windows. Please use WSL or configure a fallback.'); - } - } - - /** - * Restore the cursor and terminal state. - */ - public function __destruct() - { - $this->restoreCursor(); - - static::terminal()->restoreTty(); - } -} diff --git a/docker/streamline-src/vendor/laravel/prompts/src/SearchPrompt.php b/docker/streamline-src/vendor/laravel/prompts/src/SearchPrompt.php deleted file mode 100644 index 259b4299..00000000 --- a/docker/streamline-src/vendor/laravel/prompts/src/SearchPrompt.php +++ /dev/null @@ -1,139 +0,0 @@ -|null - */ - protected ?array $matches = null; - - /** - * Create a new SearchPrompt instance. - * - * @param Closure(string): array $options - */ - public function __construct( - public string $label, - public Closure $options, - public string $placeholder = '', - public int $scroll = 5, - public mixed $validate = null, - public string $hint = '', - public bool|string $required = true, - public ?Closure $transform = null, - ) { - if ($this->required === false) { - throw new InvalidArgumentException('Argument [required] must be true or a string.'); - } - - $this->trackTypedValue(submit: false, ignore: fn ($key) => Key::oneOf([Key::HOME, Key::END, Key::CTRL_A, Key::CTRL_E], $key) && $this->highlighted !== null); - - $this->initializeScrolling(null); - - $this->on('key', fn ($key) => match ($key) { - Key::UP, Key::UP_ARROW, Key::SHIFT_TAB, Key::CTRL_P => $this->highlightPrevious(count($this->matches), true), - Key::DOWN, Key::DOWN_ARROW, Key::TAB, Key::CTRL_N => $this->highlightNext(count($this->matches), true), - Key::oneOf([Key::HOME, Key::CTRL_A], $key) => $this->highlighted !== null ? $this->highlight(0) : null, - Key::oneOf([Key::END, Key::CTRL_E], $key) => $this->highlighted !== null ? $this->highlight(count($this->matches()) - 1) : null, - Key::ENTER => $this->highlighted !== null ? $this->submit() : $this->search(), - Key::oneOf([Key::LEFT, Key::LEFT_ARROW, Key::RIGHT, Key::RIGHT_ARROW, Key::CTRL_B, Key::CTRL_F], $key) => $this->highlighted = null, - default => $this->search(), - }); - } - - /** - * Perform the search. - */ - protected function search(): void - { - $this->state = 'searching'; - $this->highlighted = null; - $this->render(); - $this->matches = null; - $this->firstVisible = 0; - $this->state = 'active'; - } - - /** - * Get the entered value with a virtual cursor. - */ - public function valueWithCursor(int $maxWidth): string - { - if ($this->highlighted !== null) { - return $this->typedValue === '' - ? $this->dim($this->truncate($this->placeholder, $maxWidth)) - : $this->truncate($this->typedValue, $maxWidth); - } - - if ($this->typedValue === '') { - return $this->dim($this->addCursor($this->placeholder, 0, $maxWidth)); - } - - return $this->addCursor($this->typedValue, $this->cursorPosition, $maxWidth); - } - - /** - * Get options that match the input. - * - * @return array - */ - public function matches(): array - { - if (is_array($this->matches)) { - return $this->matches; - } - - return $this->matches = ($this->options)($this->typedValue); - } - - /** - * The currently visible matches. - * - * @return array - */ - public function visible(): array - { - return array_slice($this->matches(), $this->firstVisible, $this->scroll, preserve_keys: true); - } - - /** - * Get the current search query. - */ - public function searchValue(): string - { - return $this->typedValue; - } - - /** - * Get the selected value. - */ - public function value(): int|string|null - { - if ($this->matches === null || $this->highlighted === null) { - return null; - } - - return array_is_list($this->matches) - ? $this->matches[$this->highlighted] - : array_keys($this->matches)[$this->highlighted]; - } - - /** - * Get the selected label. - */ - public function label(): ?string - { - return $this->matches[array_keys($this->matches)[$this->highlighted]] ?? null; - } -} diff --git a/docker/streamline-src/vendor/laravel/prompts/src/SelectPrompt.php b/docker/streamline-src/vendor/laravel/prompts/src/SelectPrompt.php deleted file mode 100644 index 8d48a730..00000000 --- a/docker/streamline-src/vendor/laravel/prompts/src/SelectPrompt.php +++ /dev/null @@ -1,108 +0,0 @@ - - */ - public array $options; - - /** - * Create a new SelectPrompt instance. - * - * @param array|Collection $options - */ - public function __construct( - public string $label, - array|Collection $options, - public int|string|null $default = null, - public int $scroll = 5, - public mixed $validate = null, - public string $hint = '', - public bool|string $required = true, - public ?Closure $transform = null, - ) { - if ($this->required === false) { - throw new InvalidArgumentException('Argument [required] must be true or a string.'); - } - - $this->options = $options instanceof Collection ? $options->all() : $options; - - if ($this->default) { - if (array_is_list($this->options)) { - $this->initializeScrolling(array_search($this->default, $this->options) ?: 0); - } else { - $this->initializeScrolling(array_search($this->default, array_keys($this->options)) ?: 0); - } - - $this->scrollToHighlighted(count($this->options)); - } else { - $this->initializeScrolling(0); - } - - $this->on('key', fn ($key) => match ($key) { - Key::UP, Key::UP_ARROW, Key::LEFT, Key::LEFT_ARROW, Key::SHIFT_TAB, Key::CTRL_P, Key::CTRL_B, 'k', 'h' => $this->highlightPrevious(count($this->options)), - Key::DOWN, Key::DOWN_ARROW, Key::RIGHT, Key::RIGHT_ARROW, Key::TAB, Key::CTRL_N, Key::CTRL_F, 'j', 'l' => $this->highlightNext(count($this->options)), - Key::oneOf([Key::HOME, Key::CTRL_A], $key) => $this->highlight(0), - Key::oneOf([Key::END, Key::CTRL_E], $key) => $this->highlight(count($this->options) - 1), - Key::ENTER => $this->submit(), - default => null, - }); - } - - /** - * Get the selected value. - */ - public function value(): int|string|null - { - if (static::$interactive === false) { - return $this->default; - } - - if (array_is_list($this->options)) { - return $this->options[$this->highlighted] ?? null; - } else { - return array_keys($this->options)[$this->highlighted]; - } - } - - /** - * Get the selected label. - */ - public function label(): ?string - { - if (array_is_list($this->options)) { - return $this->options[$this->highlighted] ?? null; - } else { - return $this->options[array_keys($this->options)[$this->highlighted]] ?? null; - } - } - - /** - * The currently visible options. - * - * @return array - */ - public function visible(): array - { - return array_slice($this->options, $this->firstVisible, $this->scroll, preserve_keys: true); - } - - /** - * Determine whether the given value is invalid when the prompt is required. - */ - protected function isInvalidWhenRequired(mixed $value): bool - { - return $value === null; - } -} diff --git a/docker/streamline-src/vendor/laravel/prompts/src/SuggestPrompt.php b/docker/streamline-src/vendor/laravel/prompts/src/SuggestPrompt.php deleted file mode 100644 index 73efbdca..00000000 --- a/docker/streamline-src/vendor/laravel/prompts/src/SuggestPrompt.php +++ /dev/null @@ -1,126 +0,0 @@ -|Closure(string): (array|Collection) - */ - public array|Closure $options; - - /** - * The cache of matches. - * - * @var array|null - */ - protected ?array $matches = null; - - /** - * Create a new SuggestPrompt instance. - * - * @param array|Collection|Closure(string): (array|Collection) $options - */ - public function __construct( - public string $label, - array|Collection|Closure $options, - public string $placeholder = '', - public string $default = '', - public int $scroll = 5, - public bool|string $required = false, - public mixed $validate = null, - public string $hint = '', - public ?Closure $transform = null, - ) { - $this->options = $options instanceof Collection ? $options->all() : $options; - - $this->initializeScrolling(null); - - $this->on('key', fn ($key) => match ($key) { - Key::UP, Key::UP_ARROW, Key::SHIFT_TAB, Key::CTRL_P => $this->highlightPrevious(count($this->matches()), true), - Key::DOWN, Key::DOWN_ARROW, Key::TAB, Key::CTRL_N => $this->highlightNext(count($this->matches()), true), - Key::oneOf([Key::HOME, Key::CTRL_A], $key) => $this->highlighted !== null ? $this->highlight(0) : null, - Key::oneOf([Key::END, Key::CTRL_E], $key) => $this->highlighted !== null ? $this->highlight(count($this->matches()) - 1) : null, - Key::ENTER => $this->selectHighlighted(), - Key::oneOf([Key::LEFT, Key::LEFT_ARROW, Key::RIGHT, Key::RIGHT_ARROW, Key::CTRL_B, Key::CTRL_F], $key) => $this->highlighted = null, - default => (function () { - $this->highlighted = null; - $this->matches = null; - $this->firstVisible = 0; - })(), - }); - - $this->trackTypedValue($default, ignore: fn ($key) => Key::oneOf([Key::HOME, Key::END, Key::CTRL_A, Key::CTRL_E], $key) && $this->highlighted !== null); - } - - /** - * Get the entered value with a virtual cursor. - */ - public function valueWithCursor(int $maxWidth): string - { - if ($this->highlighted !== null) { - return $this->value() === '' - ? $this->dim($this->truncate($this->placeholder, $maxWidth)) - : $this->truncate($this->value(), $maxWidth); - } - - if ($this->value() === '') { - return $this->dim($this->addCursor($this->placeholder, 0, $maxWidth)); - } - - return $this->addCursor($this->value(), $this->cursorPosition, $maxWidth); - } - - /** - * Get options that match the input. - * - * @return array - */ - public function matches(): array - { - if (is_array($this->matches)) { - return $this->matches; - } - - if ($this->options instanceof Closure) { - $matches = ($this->options)($this->value()); - - return $this->matches = array_values($matches instanceof Collection ? $matches->all() : $matches); - } - - return $this->matches = array_values(array_filter($this->options, function ($option) { - return str_starts_with(strtolower($option), strtolower($this->value())); - })); - } - - /** - * The current visible matches. - * - * @return array - */ - public function visible(): array - { - return array_slice($this->matches(), $this->firstVisible, $this->scroll, preserve_keys: true); - } - - /** - * Select the highlighted entry. - */ - protected function selectHighlighted(): void - { - if ($this->highlighted === null) { - return; - } - - $this->typedValue = $this->matches()[$this->highlighted]; - } -} diff --git a/docker/streamline-src/vendor/laravel/prompts/src/Terminal.php b/docker/streamline-src/vendor/laravel/prompts/src/Terminal.php deleted file mode 100644 index 631b2a5a..00000000 --- a/docker/streamline-src/vendor/laravel/prompts/src/Terminal.php +++ /dev/null @@ -1,119 +0,0 @@ -terminal = new SymfonyTerminal; - } - - /** - * Read a line from the terminal. - */ - public function read(): string - { - $input = fread(STDIN, 1024); - - return $input !== false ? $input : ''; - } - - /** - * Set the TTY mode. - */ - public function setTty(string $mode): void - { - $this->initialTtyMode ??= $this->exec('stty -g'); - - $this->exec("stty $mode"); - } - - /** - * Restore the initial TTY mode. - */ - public function restoreTty(): void - { - if (isset($this->initialTtyMode)) { - $this->exec("stty {$this->initialTtyMode}"); - - $this->initialTtyMode = null; - } - } - - /** - * Get the number of columns in the terminal. - */ - public function cols(): int - { - return $this->terminal->getWidth(); - } - - /** - * Get the number of lines in the terminal. - */ - public function lines(): int - { - return $this->terminal->getHeight(); - } - - /** - * (Re)initialize the terminal dimensions. - */ - public function initDimensions(): void - { - (new ReflectionClass($this->terminal)) - ->getMethod('initDimensions') - ->invoke($this->terminal); - } - - /** - * Exit the interactive session. - */ - public function exit(): void - { - exit(1); - } - - /** - * Execute the given command and return the output. - */ - protected function exec(string $command): string - { - $process = proc_open($command, [ - 1 => ['pipe', 'w'], - 2 => ['pipe', 'w'], - ], $pipes); - - if (! $process) { - throw new RuntimeException('Failed to create process.'); - } - - $stdout = stream_get_contents($pipes[1]); - $stderr = stream_get_contents($pipes[2]); - $code = proc_close($process); - - if ($code !== 0 || $stdout === false) { - throw new RuntimeException(trim($stderr ?: "Unknown error (code: $code)"), $code); - } - - return $stdout; - } -} diff --git a/docker/streamline-src/vendor/laravel/prompts/src/TextPrompt.php b/docker/streamline-src/vendor/laravel/prompts/src/TextPrompt.php deleted file mode 100644 index db63f81b..00000000 --- a/docker/streamline-src/vendor/laravel/prompts/src/TextPrompt.php +++ /dev/null @@ -1,37 +0,0 @@ -trackTypedValue($default); - } - - /** - * Get the entered value with a virtual cursor. - */ - public function valueWithCursor(int $maxWidth): string - { - if ($this->value() === '') { - return $this->dim($this->addCursor($this->placeholder, 0, $maxWidth)); - } - - return $this->addCursor($this->value(), $this->cursorPosition, $maxWidth); - } -} diff --git a/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/Concerns/DrawsBoxes.php b/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/Concerns/DrawsBoxes.php deleted file mode 100644 index 0eaba8ce..00000000 --- a/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/Concerns/DrawsBoxes.php +++ /dev/null @@ -1,60 +0,0 @@ -minWidth = min($this->minWidth, Prompt::terminal()->cols() - 6); - - $bodyLines = collect(explode(PHP_EOL, $body)); - $footerLines = collect(explode(PHP_EOL, $footer))->filter(); - $width = $this->longest( - $bodyLines - ->merge($footerLines) - ->push($title) - ->toArray() - ); - - $titleLength = mb_strwidth($this->stripEscapeSequences($title)); - $titleLabel = $titleLength > 0 ? " {$title} " : ''; - $topBorder = str_repeat('─', $width - $titleLength + ($titleLength > 0 ? 0 : 2)); - - $this->line("{$this->{$color}(' ┌')}{$titleLabel}{$this->{$color}($topBorder.'┐')}"); - - $bodyLines->each(function ($line) use ($width, $color) { - $this->line("{$this->{$color}(' │')} {$this->pad($line, $width)} {$this->{$color}('│')}"); - }); - - if ($footerLines->isNotEmpty()) { - $this->line($this->{$color}(' ├'.str_repeat('─', $width + 2).'┤')); - - $footerLines->each(function ($line) use ($width, $color) { - $this->line("{$this->{$color}(' │')} {$this->pad($line, $width)} {$this->{$color}('│')}"); - }); - } - - $this->line($this->{$color}(' └'.str_repeat( - '─', $info ? ($width - mb_strwidth($this->stripEscapeSequences($info))) : ($width + 2) - ).($info ? " {$info} " : '').'┘')); - - return $this; - } -} diff --git a/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/Concerns/DrawsScrollbars.php b/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/Concerns/DrawsScrollbars.php deleted file mode 100644 index bb32f00c..00000000 --- a/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/Concerns/DrawsScrollbars.php +++ /dev/null @@ -1,55 +0,0 @@ - $visible - * @return \Illuminate\Support\Collection - */ - protected function scrollbar(Collection $visible, int $firstVisible, int $height, int $total, int $width, string $color = 'cyan'): Collection - { - if ($height >= $total) { - return $visible; - } - - $scrollPosition = $this->scrollPosition($firstVisible, $height, $total); - - return $visible // @phpstan-ignore return.type - ->values() - ->map(fn ($line) => $this->pad($line, $width)) - ->map(fn ($line, $index) => match ($index) { - $scrollPosition => preg_replace('/.$/', $this->{$color}('┃'), $line), - default => preg_replace('/.$/', $this->gray('│'), $line), - }); - } - - /** - * Return the position where the scrollbar "handle" should be rendered. - */ - protected function scrollPosition(int $firstVisible, int $height, int $total): int - { - if ($firstVisible === 0) { - return 0; - } - - $maxPosition = $total - $height; - - if ($firstVisible === $maxPosition) { - return $height - 1; - } - - if ($height <= 2) { - return -1; - } - - $percent = $firstVisible / $maxPosition; - - return (int) round($percent * ($height - 3)) + 1; - } -} diff --git a/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/ConfirmPromptRenderer.php b/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/ConfirmPromptRenderer.php deleted file mode 100644 index 0fb7938f..00000000 --- a/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/ConfirmPromptRenderer.php +++ /dev/null @@ -1,71 +0,0 @@ -state) { - 'submit' => $this - ->box( - $this->dim($this->truncate($prompt->label, $prompt->terminal()->cols() - 6)), - $this->truncate($prompt->label(), $prompt->terminal()->cols() - 6) - ), - - 'cancel' => $this - ->box( - $this->truncate($prompt->label, $prompt->terminal()->cols() - 6), - $this->renderOptions($prompt), - color: 'red' - ) - ->error($prompt->cancelMessage), - - 'error' => $this - ->box( - $this->truncate($prompt->label, $prompt->terminal()->cols() - 6), - $this->renderOptions($prompt), - color: 'yellow', - ) - ->warning($this->truncate($prompt->error, $prompt->terminal()->cols() - 5)), - - default => $this - ->box( - $this->cyan($this->truncate($prompt->label, $prompt->terminal()->cols() - 6)), - $this->renderOptions($prompt), - ) - ->when( - $prompt->hint, - fn () => $this->hint($prompt->hint), - fn () => $this->newLine() // Space for errors - ), - }; - } - - /** - * Render the confirm prompt options. - */ - protected function renderOptions(ConfirmPrompt $prompt): string - { - $length = (int) floor(($prompt->terminal()->cols() - 14) / 2); - $yes = $this->truncate($prompt->yes, $length); - $no = $this->truncate($prompt->no, $length); - - if ($prompt->state === 'cancel') { - return $this->dim($prompt->confirmed - ? "● {$this->strikethrough($yes)} / ○ {$this->strikethrough($no)}" - : "○ {$this->strikethrough($yes)} / ● {$this->strikethrough($no)}"); - } - - return $prompt->confirmed - ? "{$this->green('●')} {$yes} {$this->dim('/ ○ '.$no)}" - : "{$this->dim('○ '.$yes.' /')} {$this->green('●')} {$no}"; - } -} diff --git a/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/MultiSearchPromptRenderer.php b/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/MultiSearchPromptRenderer.php deleted file mode 100644 index e3f71205..00000000 --- a/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/MultiSearchPromptRenderer.php +++ /dev/null @@ -1,176 +0,0 @@ -terminal()->cols() - 6; - - return match ($prompt->state) { - 'submit' => $this - ->box( - $this->dim($this->truncate($prompt->label, $prompt->terminal()->cols() - 6)), - $this->renderSelectedOptions($prompt), - ), - - 'cancel' => $this - ->box( - $this->dim($this->truncate($prompt->label, $prompt->terminal()->cols() - 6)), - $this->strikethrough($this->dim($this->truncate($prompt->searchValue() ?: $prompt->placeholder, $maxWidth))), - color: 'red', - ) - ->error($prompt->cancelMessage), - - 'error' => $this - ->box( - $this->truncate($prompt->label, $prompt->terminal()->cols() - 6), - $prompt->valueWithCursor($maxWidth), - $this->renderOptions($prompt), - color: 'yellow', - info: $this->getInfoText($prompt), - ) - ->warning($this->truncate($prompt->error, $prompt->terminal()->cols() - 5)), - - 'searching' => $this - ->box( - $this->cyan($this->truncate($prompt->label, $prompt->terminal()->cols() - 6)), - $this->valueWithCursorAndSearchIcon($prompt, $maxWidth), - $this->renderOptions($prompt), - info: $this->getInfoText($prompt), - ) - ->hint($prompt->hint), - - default => $this - ->box( - $this->cyan($this->truncate($prompt->label, $prompt->terminal()->cols() - 6)), - $prompt->valueWithCursor($maxWidth), - $this->renderOptions($prompt), - info: $this->getInfoText($prompt), - ) - ->when( - $prompt->hint, - fn () => $this->hint($prompt->hint), - fn () => $this->newLine() // Space for errors - ) - ->spaceForDropdown($prompt) - }; - } - - /** - * Render the value with the cursor and a search icon. - */ - protected function valueWithCursorAndSearchIcon(MultiSearchPrompt $prompt, int $maxWidth): string - { - return preg_replace( - '/\s$/', - $this->cyan('…'), - $this->pad($prompt->valueWithCursor($maxWidth - 1).' ', min($this->longest($prompt->matches(), padding: 2), $maxWidth)) - ); - } - - /** - * Render a spacer to prevent jumping when the suggestions are displayed. - */ - protected function spaceForDropdown(MultiSearchPrompt $prompt): self - { - if ($prompt->searchValue() !== '') { - return $this; - } - - $this->newLine(max( - 0, - min($prompt->scroll, $prompt->terminal()->lines() - 7) - count($prompt->matches()), - )); - - if ($prompt->matches() === []) { - $this->newLine(); - } - - return $this; - } - - /** - * Render the options. - */ - protected function renderOptions(MultiSearchPrompt $prompt): string - { - if ($prompt->searchValue() !== '' && empty($prompt->matches())) { - return $this->gray(' '.($prompt->state === 'searching' ? 'Searching...' : 'No results.')); - } - - return $this->scrollbar( - collect($prompt->visible()) - ->map(fn ($label) => $this->truncate($label, $prompt->terminal()->cols() - 12)) - ->map(function ($label, $key) use ($prompt) { - $index = array_search($key, array_keys($prompt->matches())); - $active = $index === $prompt->highlighted; - $selected = $prompt->isList() - ? in_array($label, $prompt->value()) - : in_array($key, $prompt->value()); - - return match (true) { - $active && $selected => "{$this->cyan('› ◼')} {$label} ", - $active => "{$this->cyan('›')} ◻ {$label} ", - $selected => " {$this->cyan('◼')} {$this->dim($label)} ", - default => " {$this->dim('◻')} {$this->dim($label)} ", - }; - }), - $prompt->firstVisible, - $prompt->scroll, - count($prompt->matches()), - min($this->longest($prompt->matches(), padding: 4), $prompt->terminal()->cols() - 6) - )->implode(PHP_EOL); - } - - /** - * Render the selected options. - */ - protected function renderSelectedOptions(MultiSearchPrompt $prompt): string - { - if (count($prompt->labels()) === 0) { - return $this->gray('None'); - } - - return implode("\n", array_map( - fn ($label) => $this->truncate($label, $prompt->terminal()->cols() - 6), - $prompt->labels() - )); - } - - /** - * Render the info text. - */ - protected function getInfoText(MultiSearchPrompt $prompt): string - { - $info = count($prompt->value()).' selected'; - - $hiddenCount = count($prompt->value()) - collect($prompt->matches()) - ->filter(fn ($label, $key) => in_array($prompt->isList() ? $label : $key, $prompt->value())) - ->count(); - - if ($hiddenCount > 0) { - $info .= " ($hiddenCount hidden)"; - } - - return $info; - } - - /** - * The number of lines to reserve outside of the scrollable area. - */ - public function reservedLines(): int - { - return 7; - } -} diff --git a/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/MultiSelectPromptRenderer.php b/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/MultiSelectPromptRenderer.php deleted file mode 100644 index f24b5efc..00000000 --- a/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/MultiSelectPromptRenderer.php +++ /dev/null @@ -1,121 +0,0 @@ -state) { - 'submit' => $this - ->box( - $this->dim($this->truncate($prompt->label, $prompt->terminal()->cols() - 6)), - $this->renderSelectedOptions($prompt) - ), - - 'cancel' => $this - ->box( - $this->truncate($prompt->label, $prompt->terminal()->cols() - 6), - $this->renderOptions($prompt), - color: 'red', - ) - ->error($prompt->cancelMessage), - - 'error' => $this - ->box( - $this->truncate($prompt->label, $prompt->terminal()->cols() - 6), - $this->renderOptions($prompt), - color: 'yellow', - info: count($prompt->options) > $prompt->scroll ? (count($prompt->value()).' selected') : '', - ) - ->warning($this->truncate($prompt->error, $prompt->terminal()->cols() - 5)), - - default => $this - ->box( - $this->cyan($this->truncate($prompt->label, $prompt->terminal()->cols() - 6)), - $this->renderOptions($prompt), - info: count($prompt->options) > $prompt->scroll ? (count($prompt->value()).' selected') : '', - ) - ->when( - $prompt->hint, - fn () => $this->hint($prompt->hint), - fn () => $this->newLine() // Space for errors - ), - }; - } - - /** - * Render the options. - */ - protected function renderOptions(MultiSelectPrompt $prompt): string - { - return $this->scrollbar( - collect($prompt->visible()) - ->map(fn ($label) => $this->truncate($label, $prompt->terminal()->cols() - 12)) - ->map(function ($label, $key) use ($prompt) { - $index = array_search($key, array_keys($prompt->options)); - $active = $index === $prompt->highlighted; - if (array_is_list($prompt->options)) { - $value = $prompt->options[$index]; - } else { - $value = array_keys($prompt->options)[$index]; - } - $selected = in_array($value, $prompt->value()); - - if ($prompt->state === 'cancel') { - return $this->dim(match (true) { - $active && $selected => "› ◼ {$this->strikethrough($label)} ", - $active => "› ◻ {$this->strikethrough($label)} ", - $selected => " ◼ {$this->strikethrough($label)} ", - default => " ◻ {$this->strikethrough($label)} ", - }); - } - - return match (true) { - $active && $selected => "{$this->cyan('› ◼')} {$label} ", - $active => "{$this->cyan('›')} ◻ {$label} ", - $selected => " {$this->cyan('◼')} {$this->dim($label)} ", - default => " {$this->dim('◻')} {$this->dim($label)} ", - }; - }) - ->values(), - $prompt->firstVisible, - $prompt->scroll, - count($prompt->options), - min($this->longest($prompt->options, padding: 6), $prompt->terminal()->cols() - 6), - $prompt->state === 'cancel' ? 'dim' : 'cyan' - )->implode(PHP_EOL); - } - - /** - * Render the selected options. - */ - protected function renderSelectedOptions(MultiSelectPrompt $prompt): string - { - if (count($prompt->labels()) === 0) { - return $this->gray('None'); - } - - return implode("\n", array_map( - fn ($label) => $this->truncate($label, $prompt->terminal()->cols() - 6), - $prompt->labels() - )); - } - - /** - * The number of lines to reserve outside of the scrollable area. - */ - public function reservedLines(): int - { - return 5; - } -} diff --git a/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/PasswordPromptRenderer.php b/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/PasswordPromptRenderer.php deleted file mode 100644 index 512b93f5..00000000 --- a/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/PasswordPromptRenderer.php +++ /dev/null @@ -1,53 +0,0 @@ -terminal()->cols() - 6; - - return match ($prompt->state) { - 'submit' => $this - ->box( - $this->dim($prompt->label), - $this->truncate($prompt->masked(), $maxWidth), - ), - - 'cancel' => $this - ->box( - $this->truncate($prompt->label, $prompt->terminal()->cols() - 6), - $this->strikethrough($this->dim($this->truncate($prompt->masked() ?: $prompt->placeholder, $maxWidth))), - color: 'red', - ) - ->error($prompt->cancelMessage), - - 'error' => $this - ->box( - $this->dim($this->truncate($prompt->label, $prompt->terminal()->cols() - 6)), - $prompt->maskedWithCursor($maxWidth), - color: 'yellow', - ) - ->warning($this->truncate($prompt->error, $prompt->terminal()->cols() - 5)), - - default => $this - ->box( - $this->cyan($this->truncate($prompt->label, $prompt->terminal()->cols() - 6)), - $prompt->maskedWithCursor($maxWidth), - ) - ->when( - $prompt->hint, - fn () => $this->hint($prompt->hint), - fn () => $this->newLine() // Space for errors - ), - }; - } -} diff --git a/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/ProgressRenderer.php b/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/ProgressRenderer.php deleted file mode 100644 index 07fb3736..00000000 --- a/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/ProgressRenderer.php +++ /dev/null @@ -1,63 +0,0 @@ -> $progress - */ - public function __invoke(Progress $progress): string - { - $filled = str_repeat($this->barCharacter, (int) ceil($progress->percentage() * min($this->minWidth, $progress->terminal()->cols() - 6))); - - return match ($progress->state) { - 'submit' => $this - ->box( - $this->dim($this->truncate($progress->label, $progress->terminal()->cols() - 6)), - $this->dim($filled), - info: $progress->progress.'/'.$progress->total, - ), - - 'error' => $this - ->box( - $this->truncate($progress->label, $progress->terminal()->cols() - 6), - $this->dim($filled), - color: 'red', - info: $progress->progress.'/'.$progress->total, - ), - - 'cancel' => $this - ->box( - $this->truncate($progress->label, $progress->terminal()->cols() - 6), - $this->dim($filled), - color: 'red', - info: $progress->progress.'/'.$progress->total, - ) - ->error($progress->cancelMessage), - - default => $this - ->box( - $this->cyan($this->truncate($progress->label, $progress->terminal()->cols() - 6)), - $this->dim($filled), - info: $progress->progress.'/'.$progress->total, - ) - ->when( - $progress->hint, - fn () => $this->hint($progress->hint), - fn () => $this->newLine() // Space for errors - ) - }; - } -} diff --git a/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/Renderer.php b/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/Renderer.php deleted file mode 100644 index 9356003c..00000000 --- a/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/Renderer.php +++ /dev/null @@ -1,102 +0,0 @@ -output .= $message.PHP_EOL; - - return $this; - } - - /** - * Render a new line. - */ - protected function newLine(int $count = 1): self - { - $this->output .= str_repeat(PHP_EOL, $count); - - return $this; - } - - /** - * Render a warning message. - */ - protected function warning(string $message): self - { - return $this->line($this->yellow(" ⚠ {$message}")); - } - - /** - * Render an error message. - */ - protected function error(string $message): self - { - return $this->line($this->red(" ⚠ {$message}")); - } - - /** - * Render an hint message. - */ - protected function hint(string $message): self - { - if ($message === '') { - return $this; - } - - $message = $this->truncate($message, $this->prompt->terminal()->cols() - 6); - - return $this->line($this->gray(" {$message}")); - } - - /** - * Apply the callback if the given "value" is truthy. - * - * @return $this - */ - protected function when(mixed $value, callable $callback, ?callable $default = null): self - { - if ($value) { - $callback($this); - } elseif ($default) { - $default($this); - } - - return $this; - } - - /** - * Render the output with a blank line above and below. - */ - public function __toString() - { - return str_repeat(PHP_EOL, max(2 - $this->prompt->newLinesWritten(), 0)) - .$this->output - .(in_array($this->prompt->state, ['submit', 'cancel']) ? PHP_EOL : ''); - } -} diff --git a/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/SearchPromptRenderer.php b/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/SearchPromptRenderer.php deleted file mode 100644 index 7de4b634..00000000 --- a/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/SearchPromptRenderer.php +++ /dev/null @@ -1,134 +0,0 @@ -terminal()->cols() - 6; - - return match ($prompt->state) { - 'submit' => $this - ->box( - $this->dim($this->truncate($prompt->label, $prompt->terminal()->cols() - 6)), - $this->truncate($prompt->label(), $maxWidth), - ), - - 'cancel' => $this - ->box( - $this->dim($this->truncate($prompt->label, $prompt->terminal()->cols() - 6)), - $this->strikethrough($this->dim($this->truncate($prompt->searchValue() ?: $prompt->placeholder, $maxWidth))), - color: 'red', - ) - ->error($prompt->cancelMessage), - - 'error' => $this - ->box( - $this->truncate($prompt->label, $prompt->terminal()->cols() - 6), - $prompt->valueWithCursor($maxWidth), - $this->renderOptions($prompt), - color: 'yellow', - ) - ->warning($this->truncate($prompt->error, $prompt->terminal()->cols() - 5)), - - 'searching' => $this - ->box( - $this->cyan($this->truncate($prompt->label, $prompt->terminal()->cols() - 6)), - $this->valueWithCursorAndSearchIcon($prompt, $maxWidth), - $this->renderOptions($prompt), - ) - ->hint($prompt->hint), - - default => $this - ->box( - $this->cyan($this->truncate($prompt->label, $prompt->terminal()->cols() - 6)), - $prompt->valueWithCursor($maxWidth), - $this->renderOptions($prompt), - ) - ->when( - $prompt->hint, - fn () => $this->hint($prompt->hint), - fn () => $this->newLine() // Space for errors - ) - ->spaceForDropdown($prompt) - }; - } - - /** - * Render the value with the cursor and a search icon. - */ - protected function valueWithCursorAndSearchIcon(SearchPrompt $prompt, int $maxWidth): string - { - return preg_replace( - '/\s$/', - $this->cyan('…'), - $this->pad($prompt->valueWithCursor($maxWidth - 1).' ', min($this->longest($prompt->matches(), padding: 2), $maxWidth)) - ); - } - - /** - * Render a spacer to prevent jumping when the suggestions are displayed. - */ - protected function spaceForDropdown(SearchPrompt $prompt): self - { - if ($prompt->searchValue() !== '') { - return $this; - } - - $this->newLine(max( - 0, - min($prompt->scroll, $prompt->terminal()->lines() - 7) - count($prompt->matches()), - )); - - if ($prompt->matches() === []) { - $this->newLine(); - } - - return $this; - } - - /** - * Render the options. - */ - protected function renderOptions(SearchPrompt $prompt): string - { - if ($prompt->searchValue() !== '' && empty($prompt->matches())) { - return $this->gray(' '.($prompt->state === 'searching' ? 'Searching...' : 'No results.')); - } - - return $this->scrollbar( - collect($prompt->visible()) - ->map(fn ($label) => $this->truncate($label, $prompt->terminal()->cols() - 10)) - ->map(function ($label, $key) use ($prompt) { - $index = array_search($key, array_keys($prompt->matches())); - - return $prompt->highlighted === $index - ? "{$this->cyan('›')} {$label} " - : " {$this->dim($label)} "; - }) - ->values(), - $prompt->firstVisible, - $prompt->scroll, - count($prompt->matches()), - min($this->longest($prompt->matches(), padding: 4), $prompt->terminal()->cols() - 6) - )->implode(PHP_EOL); - } - - /** - * The number of lines to reserve outside of the scrollable area. - */ - public function reservedLines(): int - { - return 7; - } -} diff --git a/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/SelectPromptRenderer.php b/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/SelectPromptRenderer.php deleted file mode 100644 index 8337b934..00000000 --- a/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/SelectPromptRenderer.php +++ /dev/null @@ -1,94 +0,0 @@ -terminal()->cols() - 6; - - return match ($prompt->state) { - 'submit' => $this - ->box( - $this->dim($this->truncate($prompt->label, $prompt->terminal()->cols() - 6)), - $this->truncate($prompt->label(), $maxWidth), - ), - - 'cancel' => $this - ->box( - $this->truncate($prompt->label, $prompt->terminal()->cols() - 6), - $this->renderOptions($prompt), - color: 'red', - ) - ->error($prompt->cancelMessage), - - 'error' => $this - ->box( - $this->truncate($prompt->label, $prompt->terminal()->cols() - 6), - $this->renderOptions($prompt), - color: 'yellow', - ) - ->warning($this->truncate($prompt->error, $prompt->terminal()->cols() - 5)), - - default => $this - ->box( - $this->cyan($this->truncate($prompt->label, $prompt->terminal()->cols() - 6)), - $this->renderOptions($prompt), - ) - ->when( - $prompt->hint, - fn () => $this->hint($prompt->hint), - fn () => $this->newLine() // Space for errors - ), - }; - } - - /** - * Render the options. - */ - protected function renderOptions(SelectPrompt $prompt): string - { - return $this->scrollbar( - collect($prompt->visible()) - ->map(fn ($label) => $this->truncate($label, $prompt->terminal()->cols() - 12)) - ->map(function ($label, $key) use ($prompt) { - $index = array_search($key, array_keys($prompt->options)); - - if ($prompt->state === 'cancel') { - return $this->dim($prompt->highlighted === $index - ? "› ● {$this->strikethrough($label)} " - : " ○ {$this->strikethrough($label)} " - ); - } - - return $prompt->highlighted === $index - ? "{$this->cyan('›')} {$this->cyan('●')} {$label} " - : " {$this->dim('○')} {$this->dim($label)} "; - }) - ->values(), - $prompt->firstVisible, - $prompt->scroll, - count($prompt->options), - min($this->longest($prompt->options, padding: 6), $prompt->terminal()->cols() - 6), - $prompt->state === 'cancel' ? 'dim' : 'cyan' - )->implode(PHP_EOL); - } - - /** - * The number of lines to reserve outside of the scrollable area. - */ - public function reservedLines(): int - { - return 5; - } -} diff --git a/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/SuggestPromptRenderer.php b/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/SuggestPromptRenderer.php deleted file mode 100644 index 5e08f174..00000000 --- a/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/SuggestPromptRenderer.php +++ /dev/null @@ -1,122 +0,0 @@ -terminal()->cols() - 6; - - return match ($prompt->state) { - 'submit' => $this - ->box( - $this->dim($this->truncate($prompt->label, $prompt->terminal()->cols() - 6)), - $this->truncate($prompt->value(), $maxWidth), - ), - - 'cancel' => $this - ->box( - $this->dim($this->truncate($prompt->label, $prompt->terminal()->cols() - 6)), - $this->strikethrough($this->dim($this->truncate($prompt->value() ?: $prompt->placeholder, $maxWidth))), - color: 'red', - ) - ->error($prompt->cancelMessage), - - 'error' => $this - ->box( - $this->truncate($prompt->label, $prompt->terminal()->cols() - 6), - $this->valueWithCursorAndArrow($prompt, $maxWidth), - $this->renderOptions($prompt), - color: 'yellow', - ) - ->warning($this->truncate($prompt->error, $prompt->terminal()->cols() - 5)), - - default => $this - ->box( - $this->cyan($this->truncate($prompt->label, $prompt->terminal()->cols() - 6)), - $this->valueWithCursorAndArrow($prompt, $maxWidth), - $this->renderOptions($prompt), - ) - ->when( - $prompt->hint, - fn () => $this->hint($prompt->hint), - fn () => $this->newLine() // Space for errors - ) - ->spaceForDropdown($prompt), - }; - } - - /** - * Render the value with the cursor and an arrow. - */ - protected function valueWithCursorAndArrow(SuggestPrompt $prompt, int $maxWidth): string - { - if ($prompt->highlighted !== null || $prompt->value() !== '' || count($prompt->matches()) === 0) { - return $prompt->valueWithCursor($maxWidth); - } - - return preg_replace( - '/\s$/', - $this->cyan('⌄'), - $this->pad($prompt->valueWithCursor($maxWidth - 1).' ', min($this->longest($prompt->matches(), padding: 2), $maxWidth)) - ); - } - - /** - * Render a spacer to prevent jumping when the suggestions are displayed. - */ - protected function spaceForDropdown(SuggestPrompt $prompt): self - { - if ($prompt->value() === '' && $prompt->highlighted === null) { - $this->newLine(min( - count($prompt->matches()), - $prompt->scroll, - $prompt->terminal()->lines() - 7 - ) + 1); - } - - return $this; - } - - /** - * Render the options. - */ - protected function renderOptions(SuggestPrompt $prompt): string - { - if (empty($prompt->matches()) || ($prompt->value() === '' && $prompt->highlighted === null)) { - return ''; - } - - return $this->scrollbar( - collect($prompt->visible()) - ->map(fn ($label) => $this->truncate($label, $prompt->terminal()->cols() - 10)) - ->map(fn ($label, $key) => $prompt->highlighted === $key - ? "{$this->cyan('›')} {$label} " - : " {$this->dim($label)} " - ), - $prompt->firstVisible, - $prompt->scroll, - count($prompt->matches()), - min($this->longest($prompt->matches(), padding: 4), $prompt->terminal()->cols() - 6), - $prompt->state === 'cancel' ? 'dim' : 'cyan' - )->implode(PHP_EOL); - } - - /** - * The number of lines to reserve outside of the scrollable area. - */ - public function reservedLines(): int - { - return 7; - } -} diff --git a/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/TableRenderer.php b/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/TableRenderer.php deleted file mode 100644 index c2d17bb9..00000000 --- a/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/TableRenderer.php +++ /dev/null @@ -1,42 +0,0 @@ -setHorizontalBorderChars('─') - ->setVerticalBorderChars('│', '│') - ->setCellHeaderFormat($this->dim('%s')) - ->setCellRowFormat('%s'); - - if (empty($table->headers)) { - $tableStyle->setCrossingChars('┼', '', '', '', '┤', '┘', '┴', '└', '├', '┌', '┬', '┐'); - } else { - $tableStyle->setCrossingChars('┼', '┌', '┬', '┐', '┤', '┘', '┴', '└', '├'); - } - - $buffered = new BufferedConsoleOutput; - - (new SymfonyTable($buffered)) - ->setHeaders($table->headers) - ->setRows($table->rows) - ->setStyle($tableStyle) - ->render(); - - collect(explode(PHP_EOL, trim($buffered->content(), PHP_EOL))) - ->each(fn ($line) => $this->line(' '.$line)); - - return $this; - } -} diff --git a/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/TextPromptRenderer.php b/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/TextPromptRenderer.php deleted file mode 100644 index ef359295..00000000 --- a/docker/streamline-src/vendor/laravel/prompts/src/Themes/Default/TextPromptRenderer.php +++ /dev/null @@ -1,53 +0,0 @@ -terminal()->cols() - 6; - - return match ($prompt->state) { - 'submit' => $this - ->box( - $this->dim($this->truncate($prompt->label, $prompt->terminal()->cols() - 6)), - $this->truncate($prompt->value(), $maxWidth), - ), - - 'cancel' => $this - ->box( - $this->truncate($prompt->label, $prompt->terminal()->cols() - 6), - $this->strikethrough($this->dim($this->truncate($prompt->value() ?: $prompt->placeholder, $maxWidth))), - color: 'red', - ) - ->error($prompt->cancelMessage), - - 'error' => $this - ->box( - $this->truncate($prompt->label, $prompt->terminal()->cols() - 6), - $prompt->valueWithCursor($maxWidth), - color: 'yellow', - ) - ->warning($this->truncate($prompt->error, $prompt->terminal()->cols() - 5)), - - default => $this - ->box( - $this->cyan($this->truncate($prompt->label, $prompt->terminal()->cols() - 6)), - $prompt->valueWithCursor($maxWidth), - ) - ->when( - $prompt->hint, - fn () => $this->hint($prompt->hint), - fn () => $this->newLine() // Space for errors - ) - }; - } -} diff --git a/docker/streamline-src/vendor/laravel/prompts/src/helpers.php b/docker/streamline-src/vendor/laravel/prompts/src/helpers.php deleted file mode 100644 index 65545e03..00000000 --- a/docker/streamline-src/vendor/laravel/prompts/src/helpers.php +++ /dev/null @@ -1,249 +0,0 @@ -prompt(); - } -} - -if (! function_exists('\Laravel\Prompts\textarea')) { - /** - * Prompt the user for multiline text input. - */ - function textarea(string $label, string $placeholder = '', string $default = '', bool|string $required = false, mixed $validate = null, string $hint = '', int $rows = 5, ?Closure $transform = null): string - { - return (new TextareaPrompt(...func_get_args()))->prompt(); - } -} - -if (! function_exists('\Laravel\Prompts\password')) { - /** - * Prompt the user for input, hiding the value. - */ - function password(string $label, string $placeholder = '', bool|string $required = false, mixed $validate = null, string $hint = '', ?Closure $transform = null): string - { - return (new PasswordPrompt(...func_get_args()))->prompt(); - } -} - -if (! function_exists('\Laravel\Prompts\select')) { - /** - * Prompt the user to select an option. - * - * @param array|Collection $options - * @param true|string $required - */ - function select(string $label, array|Collection $options, int|string|null $default = null, int $scroll = 5, mixed $validate = null, string $hint = '', bool|string $required = true, ?Closure $transform = null): int|string - { - return (new SelectPrompt(...func_get_args()))->prompt(); - } -} - -if (! function_exists('\Laravel\Prompts\multiselect')) { - /** - * Prompt the user to select multiple options. - * - * @param array|Collection $options - * @param array|Collection $default - * @return array - */ - function multiselect(string $label, array|Collection $options, array|Collection $default = [], int $scroll = 5, bool|string $required = false, mixed $validate = null, string $hint = 'Use the space bar to select options.', ?Closure $transform = null): array - { - return (new MultiSelectPrompt(...func_get_args()))->prompt(); - } -} - -if (! function_exists('\Laravel\Prompts\confirm')) { - /** - * Prompt the user to confirm an action. - */ - function confirm(string $label, bool $default = true, string $yes = 'Yes', string $no = 'No', bool|string $required = false, mixed $validate = null, string $hint = '', ?Closure $transform = null): bool - { - return (new ConfirmPrompt(...func_get_args()))->prompt(); - } -} - -if (! function_exists('\Laravel\Prompts\pause')) { - /** - * Prompt the user to continue or cancel after pausing. - */ - function pause(string $message = 'Press enter to continue...'): bool - { - return (new PausePrompt(...func_get_args()))->prompt(); - } -} - -if (! function_exists('\Laravel\Prompts\suggest')) { - /** - * Prompt the user for text input with auto-completion. - * - * @param array|Collection|Closure(string): array $options - */ - function suggest(string $label, array|Collection|Closure $options, string $placeholder = '', string $default = '', int $scroll = 5, bool|string $required = false, mixed $validate = null, string $hint = '', ?Closure $transform = null): string - { - return (new SuggestPrompt(...func_get_args()))->prompt(); - } -} - -if (! function_exists('\Laravel\Prompts\search')) { - /** - * Allow the user to search for an option. - * - * @param Closure(string): array $options - * @param true|string $required - */ - function search(string $label, Closure $options, string $placeholder = '', int $scroll = 5, mixed $validate = null, string $hint = '', bool|string $required = true, ?Closure $transform = null): int|string - { - return (new SearchPrompt(...func_get_args()))->prompt(); - } -} - -if (! function_exists('\Laravel\Prompts\multisearch')) { - /** - * Allow the user to search for multiple option. - * - * @param Closure(string): array $options - * @return array - */ - function multisearch(string $label, Closure $options, string $placeholder = '', int $scroll = 5, bool|string $required = false, mixed $validate = null, string $hint = 'Use the space bar to select options.', ?Closure $transform = null): array - { - return (new MultiSearchPrompt(...func_get_args()))->prompt(); - } -} - -if (! function_exists('\Laravel\Prompts\spin')) { - /** - * Render a spinner while the given callback is executing. - * - * @template TReturn of mixed - * - * @param \Closure(): TReturn $callback - * @return TReturn - */ - function spin(Closure $callback, string $message = ''): mixed - { - return (new Spinner($message))->spin($callback); - } -} - -if (! function_exists('\Laravel\Prompts\note')) { - /** - * Display a note. - */ - function note(string $message, ?string $type = null): void - { - (new Note($message, $type))->display(); - } -} - -if (! function_exists('\Laravel\Prompts\error')) { - /** - * Display an error. - */ - function error(string $message): void - { - (new Note($message, 'error'))->display(); - } -} - -if (! function_exists('\Laravel\Prompts\warning')) { - /** - * Display a warning. - */ - function warning(string $message): void - { - (new Note($message, 'warning'))->display(); - } -} - -if (! function_exists('\Laravel\Prompts\alert')) { - /** - * Display an alert. - */ - function alert(string $message): void - { - (new Note($message, 'alert'))->display(); - } -} - -if (! function_exists('\Laravel\Prompts\info')) { - /** - * Display an informational message. - */ - function info(string $message): void - { - (new Note($message, 'info'))->display(); - } -} - -if (! function_exists('\Laravel\Prompts\intro')) { - /** - * Display an introduction. - */ - function intro(string $message): void - { - (new Note($message, 'intro'))->display(); - } -} - -if (! function_exists('\Laravel\Prompts\outro')) { - /** - * Display a closing message. - */ - function outro(string $message): void - { - (new Note($message, 'outro'))->display(); - } -} - -if (! function_exists('\Laravel\Prompts\table')) { - /** - * Display a table. - * - * @param array>|Collection> $headers - * @param array>|Collection> $rows - */ - function table(array|Collection $headers = [], array|Collection|null $rows = null): void - { - (new Table($headers, $rows))->display(); - } -} - -if (! function_exists('\Laravel\Prompts\progress')) { - /** - * Display a progress bar. - * - * @template TSteps of iterable|int - * @template TReturn - * - * @param TSteps $steps - * @param ?Closure((TSteps is int ? int : value-of), Progress): TReturn $callback - * @return ($callback is null ? Progress : array) - */ - function progress(string $label, iterable|int $steps, ?Closure $callback = null, string $hint = ''): array|Progress - { - $progress = new Progress($label, $steps, $hint); - - if ($callback !== null) { - return $progress->map($callback); - } - - return $progress; - } -} - -if (! function_exists('\Laravel\Prompts\form')) { - function form(): FormBuilder - { - return new FormBuilder; - } -} diff --git a/docker/streamline-src/vendor/laravel/serializable-closure/composer.json b/docker/streamline-src/vendor/laravel/serializable-closure/composer.json deleted file mode 100644 index d2d94f62..00000000 --- a/docker/streamline-src/vendor/laravel/serializable-closure/composer.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "name": "laravel/serializable-closure", - "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", - "keywords": ["laravel", "Serializable", "closure"], - "license": "MIT", - "support": { - "issues": "https://github.com/laravel/serializable-closure/issues", - "source": "https://github.com/laravel/serializable-closure" - }, - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - }, - { - "name": "Nuno Maduro", - "email": "nuno@laravel.com" - } - ], - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "illuminate/support": "^8.0|^9.0|^10.0|^11.0", - "nesbot/carbon": "^2.61|^3.0", - "pestphp/pest": "^1.21.3", - "phpstan/phpstan": "^1.8.2", - "symfony/var-dumper": "^5.4.11|^6.2.0|^7.0.0" - }, - "autoload": { - "psr-4": { - "Laravel\\SerializableClosure\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "config": { - "sort-packages": true, - "allow-plugins": { - "pestphp/pest-plugin": true - } - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/docker/streamline-src/vendor/laravel/serializable-closure/src/Serializers/Native.php b/docker/streamline-src/vendor/laravel/serializable-closure/src/Serializers/Native.php deleted file mode 100644 index 73254902..00000000 --- a/docker/streamline-src/vendor/laravel/serializable-closure/src/Serializers/Native.php +++ /dev/null @@ -1,522 +0,0 @@ -closure = $closure; - } - - /** - * Resolve the closure with the given arguments. - * - * @return mixed - */ - public function __invoke() - { - return call_user_func_array($this->closure, func_get_args()); - } - - /** - * Gets the closure. - * - * @return \Closure - */ - public function getClosure() - { - return $this->closure; - } - - /** - * Get the serializable representation of the closure. - * - * @return array - */ - public function __serialize() - { - if ($this->scope === null) { - $this->scope = new ClosureScope(); - $this->scope->toSerialize++; - } - - $this->scope->serializations++; - - $scope = $object = null; - $reflector = $this->getReflector(); - - if ($reflector->isBindingRequired()) { - $object = $reflector->getClosureThis(); - - static::wrapClosures($object, $this->scope); - } - - if ($scope = $reflector->getClosureScopeClass()) { - $scope = $scope->name; - } - - $this->reference = spl_object_hash($this->closure); - - $this->scope[$this->closure] = $this; - - $use = $reflector->getUseVariables(); - - if (static::$transformUseVariables) { - $use = call_user_func(static::$transformUseVariables, $reflector->getUseVariables()); - } - - $code = $reflector->getCode(); - - $this->mapByReference($use); - - $data = [ - 'use' => $use, - 'function' => $code, - 'scope' => $scope, - 'this' => $object, - 'self' => $this->reference, - ]; - - if (! --$this->scope->serializations && ! --$this->scope->toSerialize) { - $this->scope = null; - } - - return $data; - } - - /** - * Restore the closure after serialization. - * - * @param array $data - * @return void - */ - public function __unserialize($data) - { - ClosureStream::register(); - - $this->code = $data; - unset($data); - - $this->code['objects'] = []; - - if ($this->code['use']) { - $this->scope = new ClosureScope(); - - if (static::$resolveUseVariables) { - $this->code['use'] = call_user_func(static::$resolveUseVariables, $this->code['use']); - } - - $this->mapPointers($this->code['use']); - - extract($this->code['use'], EXTR_OVERWRITE | EXTR_REFS); - - $this->scope = null; - } - - $this->closure = include ClosureStream::STREAM_PROTO.'://'.$this->code['function']; - - if ($this->code['this'] === $this) { - $this->code['this'] = null; - } - - $this->closure = $this->closure->bindTo($this->code['this'], $this->code['scope']); - - if (! empty($this->code['objects'])) { - foreach ($this->code['objects'] as $item) { - $item['property']->setValue($item['instance'], $item['object']->getClosure()); - } - } - - $this->code = $this->code['function']; - } - - /** - * Ensures the given closures are serializable. - * - * @param mixed $data - * @param \Laravel\SerializableClosure\Support\ClosureScope $storage - * @return void - */ - public static function wrapClosures(&$data, $storage) - { - if ($data instanceof Closure) { - $data = new static($data); - } elseif (is_array($data)) { - if (isset($data[self::ARRAY_RECURSIVE_KEY])) { - return; - } - - $data[self::ARRAY_RECURSIVE_KEY] = true; - - foreach ($data as $key => &$value) { - if ($key === self::ARRAY_RECURSIVE_KEY) { - continue; - } - static::wrapClosures($value, $storage); - } - - unset($value); - unset($data[self::ARRAY_RECURSIVE_KEY]); - } elseif ($data instanceof \stdClass) { - if (isset($storage[$data])) { - $data = $storage[$data]; - - return; - } - - $data = $storage[$data] = clone $data; - - foreach ($data as &$value) { - static::wrapClosures($value, $storage); - } - - unset($value); - } elseif (is_object($data) && ! $data instanceof static && ! $data instanceof UnitEnum) { - if (isset($storage[$data])) { - $data = $storage[$data]; - - return; - } - - $instance = $data; - $reflection = new ReflectionObject($instance); - - if (! $reflection->isUserDefined()) { - $storage[$instance] = $data; - - return; - } - - $storage[$instance] = $data = $reflection->newInstanceWithoutConstructor(); - - do { - if (! $reflection->isUserDefined()) { - break; - } - - foreach ($reflection->getProperties() as $property) { - if ($property->isStatic() || ! $property->getDeclaringClass()->isUserDefined()) { - continue; - } - - $property->setAccessible(true); - - if (PHP_VERSION >= 7.4 && ! $property->isInitialized($instance)) { - continue; - } - - $value = $property->getValue($instance); - - if (is_array($value) || is_object($value)) { - static::wrapClosures($value, $storage); - } - - $property->setValue($data, $value); - } - } while ($reflection = $reflection->getParentClass()); - } - } - - /** - * Gets the closure's reflector. - * - * @return \Laravel\SerializableClosure\Support\ReflectionClosure - */ - public function getReflector() - { - if ($this->reflector === null) { - $this->code = null; - $this->reflector = new ReflectionClosure($this->closure); - } - - return $this->reflector; - } - - /** - * Internal method used to map closure pointers. - * - * @param mixed $data - * @return void - */ - protected function mapPointers(&$data) - { - $scope = $this->scope; - - if ($data instanceof static) { - $data = &$data->closure; - } elseif (is_array($data)) { - if (isset($data[self::ARRAY_RECURSIVE_KEY])) { - return; - } - - $data[self::ARRAY_RECURSIVE_KEY] = true; - - foreach ($data as $key => &$value) { - if ($key === self::ARRAY_RECURSIVE_KEY) { - continue; - } elseif ($value instanceof static) { - $data[$key] = &$value->closure; - } elseif ($value instanceof SelfReference && $value->hash === $this->code['self']) { - $data[$key] = &$this->closure; - } else { - $this->mapPointers($value); - } - } - - unset($value); - unset($data[self::ARRAY_RECURSIVE_KEY]); - } elseif ($data instanceof \stdClass) { - if (isset($scope[$data])) { - return; - } - - $scope[$data] = true; - - foreach ($data as $key => &$value) { - if ($value instanceof SelfReference && $value->hash === $this->code['self']) { - $data->{$key} = &$this->closure; - } elseif (is_array($value) || is_object($value)) { - $this->mapPointers($value); - } - } - - unset($value); - } elseif (is_object($data) && ! ($data instanceof Closure)) { - if (isset($scope[$data])) { - return; - } - - $scope[$data] = true; - $reflection = new ReflectionObject($data); - - do { - if (! $reflection->isUserDefined()) { - break; - } - - foreach ($reflection->getProperties() as $property) { - if ($property->isStatic() || ! $property->getDeclaringClass()->isUserDefined()) { - continue; - } - - $property->setAccessible(true); - - if (PHP_VERSION >= 7.4 && ! $property->isInitialized($data)) { - continue; - } - - if (PHP_VERSION >= 8.1 && $property->isReadOnly()) { - continue; - } - - $item = $property->getValue($data); - - if ($item instanceof SerializableClosure || $item instanceof UnsignedSerializableClosure || ($item instanceof SelfReference && $item->hash === $this->code['self'])) { - $this->code['objects'][] = [ - 'instance' => $data, - 'property' => $property, - 'object' => $item instanceof SelfReference ? $this : $item, - ]; - } elseif (is_array($item) || is_object($item)) { - $this->mapPointers($item); - $property->setValue($data, $item); - } - } - } while ($reflection = $reflection->getParentClass()); - } - } - - /** - * Internal method used to map closures by reference. - * - * @param mixed $data - * @return void - */ - protected function mapByReference(&$data) - { - if ($data instanceof Closure) { - if ($data === $this->closure) { - $data = new SelfReference($this->reference); - - return; - } - - if (isset($this->scope[$data])) { - $data = $this->scope[$data]; - - return; - } - - $instance = new static($data); - - $instance->scope = $this->scope; - - $data = $this->scope[$data] = $instance; - } elseif (is_array($data)) { - if (isset($data[self::ARRAY_RECURSIVE_KEY])) { - return; - } - - $data[self::ARRAY_RECURSIVE_KEY] = true; - - foreach ($data as $key => &$value) { - if ($key === self::ARRAY_RECURSIVE_KEY) { - continue; - } - - $this->mapByReference($value); - } - - unset($value); - unset($data[self::ARRAY_RECURSIVE_KEY]); - } elseif ($data instanceof \stdClass) { - if (isset($this->scope[$data])) { - $data = $this->scope[$data]; - - return; - } - - $instance = $data; - $this->scope[$instance] = $data = clone $data; - - foreach ($data as &$value) { - $this->mapByReference($value); - } - - unset($value); - } elseif (is_object($data) && ! $data instanceof SerializableClosure && ! $data instanceof UnsignedSerializableClosure) { - if (isset($this->scope[$data])) { - $data = $this->scope[$data]; - - return; - } - - $instance = $data; - - if ($data instanceof DateTimeInterface) { - $this->scope[$instance] = $data; - - return; - } - - if ($data instanceof UnitEnum) { - $this->scope[$instance] = $data; - - return; - } - - $reflection = new ReflectionObject($data); - - if (! $reflection->isUserDefined()) { - $this->scope[$instance] = $data; - - return; - } - - $this->scope[$instance] = $data = $reflection->newInstanceWithoutConstructor(); - - do { - if (! $reflection->isUserDefined()) { - break; - } - - foreach ($reflection->getProperties() as $property) { - if ($property->isStatic() || ! $property->getDeclaringClass()->isUserDefined()) { - continue; - } - - $property->setAccessible(true); - - if (PHP_VERSION >= 7.4 && ! $property->isInitialized($instance)) { - continue; - } - - if (PHP_VERSION >= 8.1 && $property->isReadOnly() && $property->class !== $reflection->name) { - continue; - } - - $value = $property->getValue($instance); - - if (is_array($value) || is_object($value)) { - $this->mapByReference($value); - } - - $property->setValue($data, $value); - } - } while ($reflection = $reflection->getParentClass()); - } - } -} diff --git a/docker/streamline-src/vendor/laravel/serializable-closure/src/Support/ReflectionClosure.php b/docker/streamline-src/vendor/laravel/serializable-closure/src/Support/ReflectionClosure.php deleted file mode 100644 index e9296002..00000000 --- a/docker/streamline-src/vendor/laravel/serializable-closure/src/Support/ReflectionClosure.php +++ /dev/null @@ -1,1198 +0,0 @@ -isStaticClosure === null) { - $this->isStaticClosure = strtolower(substr($this->getCode(), 0, 6)) === 'static'; - } - - return $this->isStaticClosure; - } - - /** - * Checks if the closure is a "short closure". - * - * @return bool - */ - public function isShortClosure() - { - if ($this->isShortClosure === null) { - $code = $this->getCode(); - - if ($this->isStatic()) { - $code = substr($code, 6); - } - - $this->isShortClosure = strtolower(substr(trim($code), 0, 2)) === 'fn'; - } - - return $this->isShortClosure; - } - - /** - * Get the closure's code. - * - * @return string - */ - public function getCode() - { - if ($this->code !== null) { - return $this->code; - } - - $fileName = $this->getFileName(); - $line = $this->getStartLine() - 1; - - $className = null; - - if (null !== $className = $this->getClosureScopeClass()) { - $className = '\\'.trim($className->getName(), '\\'); - } - - $builtin_types = self::getBuiltinTypes(); - $class_keywords = ['self', 'static', 'parent']; - - $ns = $this->getClosureNamespaceName(); - $nsf = $ns == '' ? '' : ($ns[0] == '\\' ? $ns : '\\'.$ns); - - $_file = var_export($fileName, true); - $_dir = var_export(dirname($fileName), true); - $_namespace = var_export($ns, true); - $_class = var_export(trim($className ?: '', '\\'), true); - $_function = $ns.($ns == '' ? '' : '\\').'{closure}'; - $_method = ($className == '' ? '' : trim($className, '\\').'::').$_function; - $_function = var_export($_function, true); - $_method = var_export($_method, true); - $_trait = null; - - $tokens = $this->getTokens(); - $state = $lastState = 'start'; - $inside_structure = false; - $isFirstClassCallable = false; - $isShortClosure = false; - - $inside_structure_mark = 0; - $open = 0; - $code = ''; - $id_start = $id_start_ci = $id_name = $context = ''; - $classes = $functions = $constants = null; - $use = []; - $lineAdd = 0; - $isUsingScope = false; - $isUsingThisObject = false; - - for ($i = 0, $l = count($tokens); $i < $l; $i++) { - $token = $tokens[$i]; - - switch ($state) { - case 'start': - if ($token[0] === T_FUNCTION || $token[0] === T_STATIC) { - $code .= $token[1]; - - $state = $token[0] === T_FUNCTION ? 'function' : 'static'; - } elseif ($token[0] === T_FN) { - $isShortClosure = true; - $code .= $token[1]; - $state = 'closure_args'; - } elseif ($token[0] === T_PUBLIC || $token[0] === T_PROTECTED || $token[0] === T_PRIVATE) { - $code = ''; - $isFirstClassCallable = true; - } - break; - case 'static': - if ($token[0] === T_WHITESPACE || $token[0] === T_COMMENT || $token[0] === T_FUNCTION) { - $code .= $token[1]; - if ($token[0] === T_FUNCTION) { - $state = 'function'; - } - } elseif ($token[0] === T_FN) { - $isShortClosure = true; - $code .= $token[1]; - $state = 'closure_args'; - } else { - $code = ''; - $state = 'start'; - } - break; - case 'function': - switch ($token[0]) { - case T_STRING: - if ($isFirstClassCallable) { - $state = 'closure_args'; - break; - } - - $code = ''; - $state = 'named_function'; - break; - case '(': - $code .= '('; - $state = 'closure_args'; - break; - default: - $code .= is_array($token) ? $token[1] : $token; - } - break; - case 'named_function': - if ($token[0] === T_FUNCTION || $token[0] === T_STATIC) { - $code = $token[1]; - $state = $token[0] === T_FUNCTION ? 'function' : 'static'; - } elseif ($token[0] === T_FN) { - $isShortClosure = true; - $code .= $token[1]; - $state = 'closure_args'; - } - break; - case 'closure_args': - switch ($token[0]) { - case T_NAME_QUALIFIED: - [$id_start, $id_start_ci, $id_name] = $this->parseNameQualified($token[1]); - $context = 'args'; - $state = 'id_name'; - $lastState = 'closure_args'; - break; - case T_NS_SEPARATOR: - case T_STRING: - $id_start = $token[1]; - $id_start_ci = strtolower($id_start); - $id_name = ''; - $context = 'args'; - $state = 'id_name'; - $lastState = 'closure_args'; - break; - case T_USE: - $code .= $token[1]; - $state = 'use'; - break; - case T_DOUBLE_ARROW: - $code .= $token[1]; - if ($isShortClosure) { - $state = 'closure'; - } - break; - case ':': - $code .= ':'; - $state = 'return'; - break; - case '{': - $code .= '{'; - $state = 'closure'; - $open++; - break; - default: - $code .= is_array($token) ? $token[1] : $token; - } - break; - case 'use': - switch ($token[0]) { - case T_VARIABLE: - $use[] = substr($token[1], 1); - $code .= $token[1]; - break; - case '{': - $code .= '{'; - $state = 'closure'; - $open++; - break; - case ':': - $code .= ':'; - $state = 'return'; - break; - default: - $code .= is_array($token) ? $token[1] : $token; - break; - } - break; - case 'return': - switch ($token[0]) { - case T_WHITESPACE: - case T_COMMENT: - case T_DOC_COMMENT: - $code .= $token[1]; - break; - case T_NS_SEPARATOR: - case T_STRING: - $id_start = $token[1]; - $id_start_ci = strtolower($id_start); - $id_name = ''; - $context = 'return_type'; - $state = 'id_name'; - $lastState = 'return'; - break 2; - case T_NAME_QUALIFIED: - [$id_start, $id_start_ci, $id_name] = $this->parseNameQualified($token[1]); - $context = 'return_type'; - $state = 'id_name'; - $lastState = 'return'; - break 2; - case T_DOUBLE_ARROW: - $code .= $token[1]; - if ($isShortClosure) { - $state = 'closure'; - } - break; - case '{': - $code .= '{'; - $state = 'closure'; - $open++; - break; - default: - $code .= is_array($token) ? $token[1] : $token; - break; - } - break; - case 'closure': - switch ($token[0]) { - case T_CURLY_OPEN: - case T_DOLLAR_OPEN_CURLY_BRACES: - case '{': - $code .= is_array($token) ? $token[1] : $token; - $open++; - break; - case '}': - $code .= '}'; - if (--$open === 0 && ! $isShortClosure) { - break 3; - } elseif ($inside_structure) { - $inside_structure = ! ($open === $inside_structure_mark); - } - break; - case '(': - case '[': - $code .= $token[0]; - if ($isShortClosure) { - $open++; - } - break; - case ')': - case ']': - if ($isShortClosure) { - if ($open === 0) { - break 3; - } - $open--; - } - $code .= $token[0]; - break; - case ',': - case ';': - if ($isShortClosure && $open === 0) { - break 3; - } - $code .= $token[0]; - break; - case T_LINE: - $code .= $token[2] - $line + $lineAdd; - break; - case T_FILE: - $code .= $_file; - break; - case T_DIR: - $code .= $_dir; - break; - case T_NS_C: - $code .= $_namespace; - break; - case T_CLASS_C: - $code .= $inside_structure ? $token[1] : $_class; - break; - case T_FUNC_C: - $code .= $inside_structure ? $token[1] : $_function; - break; - case T_METHOD_C: - $code .= $inside_structure ? $token[1] : $_method; - break; - case T_COMMENT: - if (substr($token[1], 0, 8) === '#trackme') { - $timestamp = time(); - $code .= '/**'.PHP_EOL; - $code .= '* Date : '.date(DATE_W3C, $timestamp).PHP_EOL; - $code .= '* Timestamp : '.$timestamp.PHP_EOL; - $code .= '* Line : '.($line + 1).PHP_EOL; - $code .= '* File : '.$_file.PHP_EOL.'*/'.PHP_EOL; - $lineAdd += 5; - } else { - $code .= $token[1]; - } - break; - case T_VARIABLE: - if ($token[1] == '$this' && ! $inside_structure) { - $isUsingThisObject = true; - } - $code .= $token[1]; - break; - case T_STATIC: - case T_NS_SEPARATOR: - case T_STRING: - $id_start = $token[1]; - $id_start_ci = strtolower($id_start); - $id_name = ''; - $context = 'root'; - $state = 'id_name'; - $lastState = 'closure'; - break 2; - case T_NAME_QUALIFIED: - [$id_start, $id_start_ci, $id_name] = $this->parseNameQualified($token[1]); - $context = 'root'; - $state = 'id_name'; - $lastState = 'closure'; - break 2; - case T_NEW: - $code .= $token[1]; - $context = 'new'; - $state = 'id_start'; - $lastState = 'closure'; - break 2; - case T_USE: - $code .= $token[1]; - $context = 'use'; - $state = 'id_start'; - $lastState = 'closure'; - break; - case T_INSTANCEOF: - case T_INSTEADOF: - $code .= $token[1]; - $context = 'instanceof'; - $state = 'id_start'; - $lastState = 'closure'; - break; - case T_OBJECT_OPERATOR: - case T_NULLSAFE_OBJECT_OPERATOR: - case T_DOUBLE_COLON: - $code .= $token[1]; - $lastState = 'closure'; - $state = 'ignore_next'; - break; - case T_FUNCTION: - $code .= $token[1]; - $state = 'closure_args'; - if (! $inside_structure) { - $inside_structure = true; - $inside_structure_mark = $open; - } - break; - case T_TRAIT_C: - if ($_trait === null) { - $startLine = $this->getStartLine(); - $endLine = $this->getEndLine(); - $structures = $this->getStructures(); - - $_trait = ''; - - foreach ($structures as &$struct) { - if ($struct['type'] === 'trait' && - $struct['start'] <= $startLine && - $struct['end'] >= $endLine - ) { - $_trait = ($ns == '' ? '' : $ns.'\\').$struct['name']; - break; - } - } - - $_trait = var_export($_trait, true); - } - - $code .= $_trait; - break; - default: - $code .= is_array($token) ? $token[1] : $token; - } - break; - case 'ignore_next': - switch ($token[0]) { - case T_WHITESPACE: - case T_COMMENT: - case T_DOC_COMMENT: - $code .= $token[1]; - break; - case T_CLASS: - case T_NEW: - case T_STATIC: - case T_VARIABLE: - case T_STRING: - case T_CLASS_C: - case T_FILE: - case T_DIR: - case T_METHOD_C: - case T_FUNC_C: - case T_FUNCTION: - case T_INSTANCEOF: - case T_LINE: - case T_NS_C: - case T_TRAIT_C: - case T_USE: - $code .= $token[1]; - $state = $lastState; - break; - default: - $state = $lastState; - $i--; - } - break; - case 'id_start': - switch ($token[0]) { - case T_WHITESPACE: - case T_COMMENT: - case T_DOC_COMMENT: - $code .= $token[1]; - break; - case T_NS_SEPARATOR: - case T_NAME_FULLY_QUALIFIED: - case T_STRING: - case T_STATIC: - $id_start = $token[1]; - $id_start_ci = strtolower($id_start); - $id_name = ''; - $state = 'id_name'; - break 2; - case T_NAME_QUALIFIED: - [$id_start, $id_start_ci, $id_name] = $this->parseNameQualified($token[1]); - $state = 'id_name'; - break 2; - case T_VARIABLE: - $code .= $token[1]; - $state = $lastState; - break; - case T_CLASS: - $code .= $token[1]; - $state = 'anonymous'; - break; - default: - $i--; //reprocess last - $state = 'id_name'; - } - break; - case 'id_name': - switch ($token[0]) { - case $token[0] === ':' && $context !== 'instanceof': - if ($lastState === 'closure' && $context === 'root') { - $state = 'closure'; - $code .= $id_start.$token; - } - - break; - case T_NAME_QUALIFIED: - case T_NS_SEPARATOR: - case T_STRING: - case T_WHITESPACE: - case T_COMMENT: - case T_DOC_COMMENT: - $id_name .= $token[1]; - break; - case '(': - if ($isShortClosure) { - $open++; - } - if ($context === 'new' || false !== strpos($id_name, '\\')) { - if ($id_start_ci === 'self' || $id_start_ci === 'static') { - if (! $inside_structure) { - $isUsingScope = true; - } - } elseif ($id_start !== '\\' && ! in_array($id_start_ci, $class_keywords)) { - if ($classes === null) { - $classes = $this->getClasses(); - } - if (isset($classes[$id_start_ci])) { - $id_start = $classes[$id_start_ci]; - } - if ($id_start[0] !== '\\') { - $id_start = $nsf.'\\'.$id_start; - } - } - } else { - if ($id_start !== '\\') { - if ($functions === null) { - $functions = $this->getFunctions(); - } - if (isset($functions[$id_start_ci])) { - $id_start = $functions[$id_start_ci]; - } elseif ($nsf !== '\\' && function_exists($nsf.'\\'.$id_start)) { - $id_start = $nsf.'\\'.$id_start; - // Cache it to functions array - $functions[$id_start_ci] = $id_start; - } - } - } - $code .= $id_start.$id_name.'('; - $state = $lastState; - break; - case T_VARIABLE: - case T_DOUBLE_COLON: - if ($id_start !== '\\') { - if ($id_start_ci === 'self' || $id_start_ci === 'parent') { - if (! $inside_structure) { - $isUsingScope = true; - } - } elseif ($id_start_ci === 'static') { - if (! $inside_structure) { - $isUsingScope = $token[0] === T_DOUBLE_COLON; - } - } elseif (! (\PHP_MAJOR_VERSION >= 7 && in_array($id_start_ci, $builtin_types))) { - if ($classes === null) { - $classes = $this->getClasses(); - } - if (isset($classes[$id_start_ci])) { - $id_start = $classes[$id_start_ci]; - } - if ($id_start[0] !== '\\') { - $id_start = $nsf.'\\'.$id_start; - } - } - } - - $code .= $id_start.$id_name.$token[1]; - $state = $token[0] === T_DOUBLE_COLON ? 'ignore_next' : $lastState; - break; - default: - if ($id_start !== '\\' && ! defined($id_start)) { - if ($constants === null) { - $constants = $this->getConstants(); - } - if (isset($constants[$id_start])) { - $id_start = $constants[$id_start]; - } elseif ($context === 'new') { - if (in_array($id_start_ci, $class_keywords)) { - if (! $inside_structure) { - $isUsingScope = true; - } - } else { - if ($classes === null) { - $classes = $this->getClasses(); - } - if (isset($classes[$id_start_ci])) { - $id_start = $classes[$id_start_ci]; - } - if ($id_start[0] !== '\\') { - $id_start = $nsf.'\\'.$id_start; - } - } - } elseif ($context === 'use' || - $context === 'instanceof' || - $context === 'args' || - $context === 'return_type' || - $context === 'extends' || - $context === 'root' - ) { - if (in_array($id_start_ci, $class_keywords)) { - if (! $inside_structure && ! $id_start_ci === 'static') { - $isUsingScope = true; - } - } elseif (! (\PHP_MAJOR_VERSION >= 7 && in_array($id_start_ci, $builtin_types))) { - if ($classes === null) { - $classes = $this->getClasses(); - } - if (isset($classes[$id_start_ci])) { - $id_start = $classes[$id_start_ci]; - } - if ($id_start[0] !== '\\') { - $id_start = $nsf.'\\'.$id_start; - } - } - } - } - $code .= $id_start.$id_name; - $state = $lastState; - $i--; //reprocess last token - } - break; - case 'anonymous': - switch ($token[0]) { - case T_NAME_QUALIFIED: - [$id_start, $id_start_ci, $id_name] = $this->parseNameQualified($token[1]); - $state = 'id_name'; - $lastState = 'anonymous'; - break 2; - case T_NS_SEPARATOR: - case T_STRING: - $id_start = $token[1]; - $id_start_ci = strtolower($id_start); - $id_name = ''; - $state = 'id_name'; - $context = 'extends'; - $lastState = 'anonymous'; - break; - case '{': - $state = 'closure'; - if (! $inside_structure) { - $inside_structure = true; - $inside_structure_mark = $open; - } - $i--; - break; - default: - $code .= is_array($token) ? $token[1] : $token; - } - break; - } - } - - if ($isShortClosure) { - $this->useVariables = $this->getStaticVariables(); - } else { - $this->useVariables = empty($use) ? $use : array_intersect_key($this->getStaticVariables(), array_flip($use)); - } - - $this->isShortClosure = $isShortClosure; - $this->isBindingRequired = $isUsingThisObject; - $this->isScopeRequired = $isUsingScope; - - if (PHP_VERSION_ID >= 80100) { - $attributesCode = array_map(function ($attribute) { - $arguments = $attribute->getArguments(); - - $name = $attribute->getName(); - $arguments = implode(', ', array_map(function ($argument, $key) { - $argument = sprintf("'%s'", str_replace("'", "\\'", $argument)); - - if (is_string($key)) { - $argument = sprintf('%s: %s', $key, $argument); - } - - return $argument; - }, $arguments, array_keys($arguments))); - - return "#[$name($arguments)]"; - }, $this->getAttributes()); - - if (! empty($attributesCode)) { - $code = implode("\n", array_merge($attributesCode, [$code])); - } - } - - $this->code = $code; - - return $this->code; - } - - /** - * Get PHP native built in types. - * - * @return array - */ - protected static function getBuiltinTypes() - { - // PHP 8.1 - if (PHP_VERSION_ID >= 80100) { - return ['array', 'callable', 'string', 'int', 'bool', 'float', 'iterable', 'void', 'object', 'mixed', 'false', 'null', 'never']; - } - - // PHP 8 - if (\PHP_MAJOR_VERSION === 8) { - return ['array', 'callable', 'string', 'int', 'bool', 'float', 'iterable', 'void', 'object', 'mixed', 'false', 'null']; - } - - // PHP 7 - switch (\PHP_MINOR_VERSION) { - case 0: - return ['array', 'callable', 'string', 'int', 'bool', 'float']; - case 1: - return ['array', 'callable', 'string', 'int', 'bool', 'float', 'iterable', 'void']; - default: - return ['array', 'callable', 'string', 'int', 'bool', 'float', 'iterable', 'void', 'object']; - } - } - - /** - * Gets the use variables by the closure. - * - * @return array - */ - public function getUseVariables() - { - if ($this->useVariables !== null) { - return $this->useVariables; - } - - $tokens = $this->getTokens(); - $use = []; - $state = 'start'; - - foreach ($tokens as &$token) { - $is_array = is_array($token); - - switch ($state) { - case 'start': - if ($is_array && $token[0] === T_USE) { - $state = 'use'; - } - break; - case 'use': - if ($is_array) { - if ($token[0] === T_VARIABLE) { - $use[] = substr($token[1], 1); - } - } elseif ($token == ')') { - break 2; - } - break; - } - } - - $this->useVariables = empty($use) ? $use : array_intersect_key($this->getStaticVariables(), array_flip($use)); - - return $this->useVariables; - } - - /** - * Checks if binding is required. - * - * @return bool - */ - public function isBindingRequired() - { - if ($this->isBindingRequired === null) { - $this->getCode(); - } - - return $this->isBindingRequired; - } - - /** - * Checks if access to the scope is required. - * - * @return bool - */ - public function isScopeRequired() - { - if ($this->isScopeRequired === null) { - $this->getCode(); - } - - return $this->isScopeRequired; - } - - /** - * The hash of the current file name. - * - * @return string - */ - protected function getHashedFileName() - { - if ($this->hashedName === null) { - $this->hashedName = sha1($this->getFileName()); - } - - return $this->hashedName; - } - - /** - * Get the file tokens. - * - * @return array - */ - protected function getFileTokens() - { - $key = $this->getHashedFileName(); - - if (! isset(static::$files[$key])) { - static::$files[$key] = token_get_all(file_get_contents($this->getFileName())); - } - - return static::$files[$key]; - } - - /** - * Get the tokens. - * - * @return array - */ - protected function getTokens() - { - if ($this->tokens === null) { - $tokens = $this->getFileTokens(); - $startLine = $this->getStartLine(); - $endLine = $this->getEndLine(); - $results = []; - $start = false; - - foreach ($tokens as &$token) { - if (! is_array($token)) { - if ($start) { - $results[] = $token; - } - - continue; - } - - $line = $token[2]; - - if ($line <= $endLine) { - if ($line >= $startLine) { - $start = true; - $results[] = $token; - } - - continue; - } - - break; - } - - $this->tokens = $results; - } - - return $this->tokens; - } - - /** - * Get the classes. - * - * @return array - */ - protected function getClasses() - { - $key = $this->getHashedFileName(); - - if (! isset(static::$classes[$key])) { - $this->fetchItems(); - } - - return static::$classes[$key]; - } - - /** - * Get the functions. - * - * @return array - */ - protected function getFunctions() - { - $key = $this->getHashedFileName(); - - if (! isset(static::$functions[$key])) { - $this->fetchItems(); - } - - return static::$functions[$key]; - } - - /** - * Gets the constants. - * - * @return array - */ - protected function getConstants() - { - $key = $this->getHashedFileName(); - - if (! isset(static::$constants[$key])) { - $this->fetchItems(); - } - - return static::$constants[$key]; - } - - /** - * Get the structures. - * - * @return array - */ - protected function getStructures() - { - $key = $this->getHashedFileName(); - - if (! isset(static::$structures[$key])) { - $this->fetchItems(); - } - - return static::$structures[$key]; - } - - /** - * Fetch the items. - * - * @return void. - */ - protected function fetchItems() - { - $key = $this->getHashedFileName(); - - $classes = []; - $functions = []; - $constants = []; - $structures = []; - $tokens = $this->getFileTokens(); - - $open = 0; - $state = 'start'; - $lastState = ''; - $prefix = ''; - $name = ''; - $alias = ''; - $isFunc = $isConst = false; - - $startLine = $endLine = 0; - $structType = $structName = ''; - $structIgnore = false; - - foreach ($tokens as $token) { - switch ($state) { - case 'start': - switch ($token[0]) { - case T_CLASS: - case T_INTERFACE: - case T_TRAIT: - $state = 'before_structure'; - $startLine = $token[2]; - $structType = $token[0] == T_CLASS - ? 'class' - : ($token[0] == T_INTERFACE ? 'interface' : 'trait'); - break; - case T_USE: - $state = 'use'; - $prefix = $name = $alias = ''; - $isFunc = $isConst = false; - break; - case T_FUNCTION: - $state = 'structure'; - $structIgnore = true; - break; - case T_NEW: - $state = 'new'; - break; - case T_OBJECT_OPERATOR: - case T_DOUBLE_COLON: - $state = 'invoke'; - break; - } - break; - case 'use': - switch ($token[0]) { - case T_FUNCTION: - $isFunc = true; - break; - case T_CONST: - $isConst = true; - break; - case T_NS_SEPARATOR: - $name .= $token[1]; - break; - case T_STRING: - $name .= $token[1]; - $alias = $token[1]; - break; - case T_NAME_QUALIFIED: - $name .= $token[1]; - $pieces = explode('\\', $token[1]); - $alias = end($pieces); - break; - case T_AS: - $lastState = 'use'; - $state = 'alias'; - break; - case '{': - $prefix = $name; - $name = $alias = ''; - $state = 'use-group'; - break; - case ',': - case ';': - if ($name === '' || $name[0] !== '\\') { - $name = '\\'.$name; - } - - if ($alias !== '') { - if ($isFunc) { - $functions[strtolower($alias)] = $name; - } elseif ($isConst) { - $constants[$alias] = $name; - } else { - $classes[strtolower($alias)] = $name; - } - } - $name = $alias = ''; - $state = $token === ';' ? 'start' : 'use'; - break; - } - break; - case 'use-group': - switch ($token[0]) { - case T_NS_SEPARATOR: - $name .= $token[1]; - break; - case T_NAME_QUALIFIED: - $name .= $token[1]; - $pieces = explode('\\', $token[1]); - $alias = end($pieces); - break; - case T_STRING: - $name .= $token[1]; - $alias = $token[1]; - break; - case T_AS: - $lastState = 'use-group'; - $state = 'alias'; - break; - case ',': - case '}': - - if ($prefix === '' || $prefix[0] !== '\\') { - $prefix = '\\'.$prefix; - } - - if ($alias !== '') { - if ($isFunc) { - $functions[strtolower($alias)] = $prefix.$name; - } elseif ($isConst) { - $constants[$alias] = $prefix.$name; - } else { - $classes[strtolower($alias)] = $prefix.$name; - } - } - $name = $alias = ''; - $state = $token === '}' ? 'use' : 'use-group'; - break; - } - break; - case 'alias': - if ($token[0] === T_STRING) { - $alias = $token[1]; - $state = $lastState; - } - break; - case 'new': - switch ($token[0]) { - case T_WHITESPACE: - case T_COMMENT: - case T_DOC_COMMENT: - break 2; - case T_CLASS: - $state = 'structure'; - $structIgnore = true; - break; - default: - $state = 'start'; - } - break; - case 'invoke': - switch ($token[0]) { - case T_WHITESPACE: - case T_COMMENT: - case T_DOC_COMMENT: - break 2; - default: - $state = 'start'; - } - break; - case 'before_structure': - if ($token[0] == T_STRING) { - $structName = $token[1]; - $state = 'structure'; - } - break; - case 'structure': - switch ($token[0]) { - case '{': - case T_CURLY_OPEN: - case T_DOLLAR_OPEN_CURLY_BRACES: - $open++; - break; - case '}': - if (--$open == 0) { - if (! $structIgnore) { - $structures[] = [ - 'type' => $structType, - 'name' => $structName, - 'start' => $startLine, - 'end' => $endLine, - ]; - } - $structIgnore = false; - $state = 'start'; - } - break; - default: - if (is_array($token)) { - $endLine = $token[2]; - } - } - break; - } - } - - static::$classes[$key] = $classes; - static::$functions[$key] = $functions; - static::$constants[$key] = $constants; - static::$structures[$key] = $structures; - } - - /** - * Returns the namespace associated to the closure. - * - * @return string - */ - protected function getClosureNamespaceName() - { - $ns = $this->getNamespaceName(); - - // First class callables... - if ($this->getName() !== '{closure}' && empty($ns) && ! is_null($this->getClosureScopeClass())) { - $ns = $this->getClosureScopeClass()->getNamespaceName(); - } - - return $ns; - } - - /** - * Parse the given token. - * - * @param string $token - * @return array - */ - protected function parseNameQualified($token) - { - $pieces = explode('\\', $token); - - $id_start = array_shift($pieces); - - $id_start_ci = strtolower($id_start); - - $id_name = '\\'.implode('\\', $pieces); - - return [$id_start, $id_start_ci, $id_name]; - } -} diff --git a/docker/streamline-src/vendor/laravel/ui/README.md b/docker/streamline-src/vendor/laravel/ui/README.md deleted file mode 100644 index 99ad0fa2..00000000 --- a/docker/streamline-src/vendor/laravel/ui/README.md +++ /dev/null @@ -1,162 +0,0 @@ -# Laravel UI - -Total Downloads -Latest Stable Version -License - -## Introduction - -While Laravel does not dictate which JavaScript or CSS pre-processors you use, it does provide a basic starting point using [Bootstrap](https://getbootstrap.com/), [React](https://reactjs.org/), and / or [Vue](https://vuejs.org/) that will be helpful for many applications. By default, Laravel uses [NPM](https://www.npmjs.org/) to install both of these frontend packages. - -> This legacy package is a very simple authentication scaffolding built on the Bootstrap CSS framework. While it continues to work with the latest version of Laravel, you should consider using [Laravel Breeze](https://github.com/laravel/breeze) for new projects. Or, for something more robust, consider [Laravel Jetstream](https://github.com/laravel/jetstream). - -## Official Documentation - -### Supported Versions - -Only the latest major version of Laravel UI receives bug fixes. The table below lists compatible Laravel versions: - -| Version | Laravel Version | -|---- |----| -| [1.x](https://github.com/laravel/ui/tree/1.x) | 5.8, 6.x | -| [2.x](https://github.com/laravel/ui/tree/2.x) | 7.x | -| [3.x](https://github.com/laravel/ui/tree/3.x) | 8.x, 9.x | -| [4.x](https://github.com/laravel/ui/tree/4.x) | 9.x, 10.x, 11.x | - -### Installation - -The Bootstrap and Vue scaffolding provided by Laravel is located in the `laravel/ui` Composer package, which may be installed using Composer: - -```bash -composer require laravel/ui -``` - -Once the `laravel/ui` package has been installed, you may install the frontend scaffolding using the `ui` Artisan command: - -```bash -// Generate basic scaffolding... -php artisan ui bootstrap -php artisan ui vue -php artisan ui react - -// Generate login / registration scaffolding... -php artisan ui bootstrap --auth -php artisan ui vue --auth -php artisan ui react --auth -``` - -#### CSS - -Laravel officially supports [Vite](https://laravel.com/docs/vite), a modern frontend build tool that provides an extremely fast development environment and bundles your code for production. Vite supports a variety of CSS preprocessor languages, including SASS and Less, which are extensions of plain CSS that add variables, mixins, and other powerful features that make working with CSS much more enjoyable. In this document, we will briefly discuss CSS compilation in general; however, you should consult the full [Vite documentation](https://laravel.com/docs/vite#working-with-stylesheets) for more information on compiling SASS or Less. - -#### JavaScript - -Laravel does not require you to use a specific JavaScript framework or library to build your applications. In fact, you don't have to use JavaScript at all. However, Laravel does include some basic scaffolding to make it easier to get started writing modern JavaScript using the [Vue](https://vuejs.org) library. Vue provides an expressive API for building robust JavaScript applications using components. As with CSS, we may use Vite to easily compile JavaScript components into a single, browser-ready JavaScript file. - -### Writing CSS - -After installing the `laravel/ui` Composer package and [generating the frontend scaffolding](#introduction), Laravel's `package.json` file will include the `bootstrap` package to help you get started prototyping your application's frontend using Bootstrap. However, feel free to add or remove packages from the `package.json` file as needed for your own application. You are not required to use the Bootstrap framework to build your Laravel application - it is provided as a good starting point for those who choose to use it. - -Before compiling your CSS, install your project's frontend dependencies using the [Node package manager (NPM)](https://www.npmjs.org): - -```bash -npm install -``` - -Once the dependencies have been installed using `npm install`, you can compile your SASS files to plain CSS using [Vite](https://laravel.com/docs/vite#working-with-stylesheets). The `npm run dev` command will process the instructions in your `vite.config.js` file. Typically, your compiled CSS will be placed in the `public/build/assets` directory: - -```bash -npm run dev -``` - -The `vite.config.js` file included with Laravel's frontend scaffolding will compile the `resources/sass/app.scss` SASS file. This `app.scss` file imports a file of SASS variables and loads Bootstrap, which provides a good starting point for most applications. Feel free to customize the `app.scss` file however you wish or even use an entirely different pre-processor by [configuring Vite](https://laravel.com/docs/vite#working-with-stylesheets). - -### Writing JavaScript - -All of the JavaScript dependencies required by your application can be found in the `package.json` file in the project's root directory. This file is similar to a `composer.json` file except it specifies JavaScript dependencies instead of PHP dependencies. You can install these dependencies using the [Node package manager (NPM)](https://www.npmjs.org): - -```bash -npm install -``` - -> By default, the Laravel `package.json` file includes a few packages such as `lodash` and `axios` to help you get started building your JavaScript application. Feel free to add or remove from the `package.json` file as needed for your own application. - -Once the packages are installed, you can use the `npm run dev` command to [compile your assets](https://laravel.com/docs/vite). Vite is a module bundler for modern JavaScript applications. When you run the `npm run dev` command, Vite will execute the instructions in your `vite.config.js` file: - -```bash -npm run dev -``` - -By default, the Laravel `vite.config.js` file compiles your SASS and the `resources/js/app.js` file. Within the `app.js` file you may register your Vue components or, if you prefer a different framework, configure your own JavaScript application. Your compiled JavaScript will typically be placed in the `public/build/assets` directory. - -> The `app.js` file will load the `resources/js/bootstrap.js` file which bootstraps and configures Vue, Axios, jQuery, and all other JavaScript dependencies. If you have additional JavaScript dependencies to configure, you may do so in this file. - -#### Writing Vue Components - -When using the `laravel/ui` package to scaffold your frontend, an `ExampleComponent.vue` Vue component will be placed in the `resources/js/components` directory. The `ExampleComponent.vue` file is an example of a [single file Vue component](https://vuejs.org/guide/scaling-up/sfc.html) which defines its JavaScript and HTML template in the same file. Single file components provide a very convenient approach to building JavaScript driven applications. The example component is registered in your `app.js` file: - -```javascript -import ExampleComponent from './components/ExampleComponent.vue'; -Vue.component('example-component', ExampleComponent); -``` - -To use the component in your application, you may drop it into one of your HTML templates. For example, after running the `php artisan ui vue --auth` Artisan command to scaffold your application's authentication and registration screens, you could drop the component into the `home.blade.php` Blade template: - -```blade -@extends('layouts.app') - -@section('content') - -@endsection -``` - -> Remember, you should run the `npm run dev` command each time you change a Vue component. Or, you may run the `npm run watch` command to monitor and automatically recompile your components each time they are modified. - -If you are interested in learning more about writing Vue components, you should read the [Vue documentation](https://vuejs.org/guide/), which provides a thorough, easy-to-read overview of the entire Vue framework. - -#### Using React - -If you prefer to use React to build your JavaScript application, Laravel makes it a cinch to swap the Vue scaffolding with React scaffolding: - -```bash -composer require laravel/ui - -// Generate basic scaffolding... -php artisan ui react - -// Generate login / registration scaffolding... -php artisan ui react --auth -```` - -### Adding Presets - -Presets are "macroable", which allows you to add additional methods to the `UiCommand` class at runtime. For example, the following code adds a `nextjs` method to the `UiCommand` class. Typically, you should declare preset macros in a [service provider](https://laravel.com/docs/providers): - -```php -use Laravel\Ui\UiCommand; - -UiCommand::macro('nextjs', function (UiCommand $command) { - // Scaffold your frontend... -}); -``` -Then, you may call the new preset via the `ui` command: - -```bash -php artisan ui nextjs -``` - -## Contributing - -Thank you for considering contributing to UI! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -Please review [our security policy](https://github.com/laravel/ui/security/policy) on how to report security vulnerabilities. - -## License - -Laravel UI is open-sourced software licensed under the [MIT license](LICENSE.md). diff --git a/docker/streamline-src/vendor/laravel/ui/composer.json b/docker/streamline-src/vendor/laravel/ui/composer.json deleted file mode 100644 index 8ad118f3..00000000 --- a/docker/streamline-src/vendor/laravel/ui/composer.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "laravel/ui", - "description": "Laravel UI utilities and presets.", - "keywords": ["laravel", "ui"], - "license": "MIT", - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "require": { - "php": "^8.0", - "illuminate/console": "^9.21|^10.0|^11.0", - "illuminate/filesystem": "^9.21|^10.0|^11.0", - "illuminate/support": "^9.21|^10.0|^11.0", - "illuminate/validation": "^9.21|^10.0|^11.0", - "symfony/console": "^6.0|^7.0" - }, - "require-dev": { - "orchestra/testbench": "^7.35|^8.15|^9.0", - "phpunit/phpunit": "^9.3|^10.4|^11.0" - }, - "autoload": { - "psr-4": { - "Laravel\\Ui\\": "src/", - "Illuminate\\Foundation\\Auth\\": "auth-backend/" - } - }, - "config": { - "sort-packages": true - }, - "extra": { - "branch-alias": { - "dev-master": "4.x-dev" - }, - "laravel": { - "providers": [ - "Laravel\\Ui\\UiServiceProvider" - ] - } - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/docker/streamline-src/vendor/laravel/ui/src/AuthCommand.php b/docker/streamline-src/vendor/laravel/ui/src/AuthCommand.php deleted file mode 100644 index 564bf94f..00000000 --- a/docker/streamline-src/vendor/laravel/ui/src/AuthCommand.php +++ /dev/null @@ -1,179 +0,0 @@ - 'auth/login.blade.php', - 'auth/passwords/confirm.stub' => 'auth/passwords/confirm.blade.php', - 'auth/passwords/email.stub' => 'auth/passwords/email.blade.php', - 'auth/passwords/reset.stub' => 'auth/passwords/reset.blade.php', - 'auth/register.stub' => 'auth/register.blade.php', - 'auth/verify.stub' => 'auth/verify.blade.php', - 'home.stub' => 'home.blade.php', - 'layouts/app.stub' => 'layouts/app.blade.php', - ]; - - /** - * Execute the console command. - * - * @return void - * - * @throws \InvalidArgumentException - */ - public function handle() - { - if (static::hasMacro($this->argument('type'))) { - return call_user_func(static::$macros[$this->argument('type')], $this); - } - - if (! in_array($this->argument('type'), ['bootstrap'])) { - throw new InvalidArgumentException('Invalid preset.'); - } - - $this->ensureDirectoriesExist(); - $this->exportViews(); - - if (! $this->option('views')) { - $this->exportBackend(); - } - - $this->components->info('Authentication scaffolding generated successfully.'); - } - - /** - * Create the directories for the files. - * - * @return void - */ - protected function ensureDirectoriesExist() - { - if (! is_dir($directory = $this->getViewPath('layouts'))) { - mkdir($directory, 0755, true); - } - - if (! is_dir($directory = $this->getViewPath('auth/passwords'))) { - mkdir($directory, 0755, true); - } - } - - /** - * Export the authentication views. - * - * @return void - */ - protected function exportViews() - { - foreach ($this->views as $key => $value) { - if (file_exists($view = $this->getViewPath($value)) && ! $this->option('force')) { - if (! $this->components->confirm("The [$value] view already exists. Do you want to replace it?")) { - continue; - } - } - - copy( - __DIR__.'/Auth/'.$this->argument('type').'-stubs/'.$key, - $view - ); - } - } - - /** - * Export the authentication backend. - * - * @return void - */ - protected function exportBackend() - { - $this->callSilent('ui:controllers'); - - $controller = app_path('Http/Controllers/HomeController.php'); - - if (file_exists($controller) && ! $this->option('force')) { - if ($this->components->confirm("The [HomeController.php] file already exists. Do you want to replace it?", true)) { - file_put_contents($controller, $this->compileStub('controllers/HomeController')); - } - } else { - file_put_contents($controller, $this->compileStub('controllers/HomeController')); - } - - $baseController = app_path('Http/Controllers/Controller.php'); - - if (file_exists($baseController) && ! $this->option('force')) { - if ($this->components->confirm("The [Controller.php] file already exists. Do you want to replace it?", true)) { - file_put_contents($baseController, $this->compileStub('controllers/Controller')); - } - } else { - file_put_contents($baseController, $this->compileStub('controllers/Controller')); - } - - if (! file_exists(database_path('migrations/0001_01_01_000000_create_users_table.php'))) { - copy( - __DIR__.'/../stubs/migrations/2014_10_12_100000_create_password_resets_table.php', - base_path('database/migrations/2014_10_12_100000_create_password_resets_table.php') - ); - } - - file_put_contents( - base_path('routes/web.php'), - file_get_contents(__DIR__.'/Auth/stubs/routes.stub'), - FILE_APPEND - ); - } - - /** - * Compiles the given stub. - * - * @param string $stub - * @return string - */ - protected function compileStub($stub) - { - return str_replace( - '{{namespace}}', - $this->laravel->getNamespace(), - file_get_contents(__DIR__.'/Auth/stubs/'.$stub.'.stub') - ); - } - - /** - * Get full view path relative to the application's configured view path. - * - * @param string $path - * @return string - */ - protected function getViewPath($path) - { - return implode(DIRECTORY_SEPARATOR, [ - config('view.paths')[0] ?? resource_path('views'), $path, - ]); - } -} diff --git a/docker/streamline-src/vendor/laravel/ui/src/ControllersCommand.php b/docker/streamline-src/vendor/laravel/ui/src/ControllersCommand.php deleted file mode 100644 index 228ddd14..00000000 --- a/docker/streamline-src/vendor/laravel/ui/src/ControllersCommand.php +++ /dev/null @@ -1,51 +0,0 @@ -allFiles(__DIR__.'/../stubs/Auth')) - ->each(function (SplFileInfo $file) use ($filesystem) { - $filesystem->copy( - $file->getPathname(), - app_path('Http/Controllers/Auth/'.Str::replaceLast('.stub', '.php', $file->getFilename())) - ); - }); - - $this->components->info('Authentication scaffolding generated successfully.'); - } -} diff --git a/docker/streamline-src/vendor/laravel/ui/src/UiCommand.php b/docker/streamline-src/vendor/laravel/ui/src/UiCommand.php deleted file mode 100644 index 0ae12cc2..00000000 --- a/docker/streamline-src/vendor/laravel/ui/src/UiCommand.php +++ /dev/null @@ -1,93 +0,0 @@ -argument('type'))) { - return call_user_func(static::$macros[$this->argument('type')], $this); - } - - if (! in_array($this->argument('type'), ['bootstrap', 'vue', 'react'])) { - throw new InvalidArgumentException('Invalid preset.'); - } - - if ($this->option('auth')) { - $this->call('ui:auth'); - } - - $this->{$this->argument('type')}(); - } - - /** - * Install the "bootstrap" preset. - * - * @return void - */ - protected function bootstrap() - { - Presets\Bootstrap::install(); - - $this->components->info('Bootstrap scaffolding installed successfully.'); - $this->components->warn('Please run [npm install && npm run dev] to compile your fresh scaffolding.'); - } - - /** - * Install the "vue" preset. - * - * @return void - */ - protected function vue() - { - Presets\Bootstrap::install(); - Presets\Vue::install(); - - $this->components->info('Vue scaffolding installed successfully.'); - $this->components->warn('Please run [npm install && npm run dev] to compile your fresh scaffolding.'); - } - - /** - * Install the "react" preset. - * - * @return void - */ - protected function react() - { - Presets\Bootstrap::install(); - Presets\React::install(); - - $this->components->info('React scaffolding installed successfully.'); - $this->components->warn('Please run [npm install && npm run dev] to compile your fresh scaffolding.'); - } -} diff --git a/docker/streamline-src/vendor/laravel/ui/stubs/Auth/LoginController.stub b/docker/streamline-src/vendor/laravel/ui/stubs/Auth/LoginController.stub deleted file mode 100644 index fc8a88c4..00000000 --- a/docker/streamline-src/vendor/laravel/ui/stubs/Auth/LoginController.stub +++ /dev/null @@ -1,40 +0,0 @@ -middleware('guest')->except('logout'); - $this->middleware('auth')->only('logout'); - } -} diff --git a/docker/streamline-src/vendor/laravel/ui/tests/AuthBackend/AuthenticatesUsersTest.php b/docker/streamline-src/vendor/laravel/ui/tests/AuthBackend/AuthenticatesUsersTest.php deleted file mode 100644 index 4196559a..00000000 --- a/docker/streamline-src/vendor/laravel/ui/tests/AuthBackend/AuthenticatesUsersTest.php +++ /dev/null @@ -1,187 +0,0 @@ -create(); - - $request = Request::create('/login', 'POST', [ - 'email' => $user->email, - 'password' => 'password', - ], [], [], [ - 'HTTP_ACCEPT' => 'application/json', - ]); - - $response = $this->handleRequestUsing($request, function ($request) { - return $this->login($request); - })->assertStatus(204); - - Event::assertDispatched(function (Attempting $event) { - return $event->remember === false; - }); - } - - #[Test] - public function it_can_deauthenticate_a_user() - { - Event::fake(); - - $user = UserFactory::new()->create(); - - $this->actingAs($user); - - $request = Request::create('/logout', 'POST', [], [], [], [ - 'HTTP_ACCEPT' => 'application/json', - ]); - - $response = $this->handleRequestUsing( - $request, fn ($request) => $this->logout($request) - )->assertStatus(204); - - Event::assertDispatched(fn (Logout $event) => $user->is($event->user)); - } - - #[Test] - public function it_can_authenticate_a_user_with_remember_as_false() - { - Event::fake(); - - $user = UserFactory::new()->create(); - - $request = Request::create('/login', 'POST', [ - 'email' => $user->email, - 'password' => 'password', - 'remember' => false, - ], [], [], [ - 'HTTP_ACCEPT' => 'application/json', - ]); - - $response = $this->handleRequestUsing($request, function ($request) { - return $this->login($request); - })->assertStatus(204); - - Event::assertDispatched(function (Attempting $event) { - return $event->remember === false; - }); - } - - #[Test] - public function it_can_authenticate_a_user_with_remember_as_true() - { - Event::fake(); - - $user = UserFactory::new()->create(); - - $request = Request::create('/login', 'POST', [ - 'email' => $user->email, - 'password' => 'password', - 'remember' => true, - ], [], [], [ - 'HTTP_ACCEPT' => 'application/json', - ]); - - $response = $this->handleRequestUsing($request, function ($request) { - return $this->login($request); - })->assertStatus(204); - - Event::assertDispatched(function (Attempting $event) { - return $event->remember === true; - }); - } - - #[Test] - public function it_cant_authenticate_a_user_with_invalid_password() - { - $user = UserFactory::new()->create(); - - $request = Request::create('/login', 'POST', [ - 'email' => $user->email, - 'password' => 'invalid-password', - ], [], [], [ - 'HTTP_ACCEPT' => 'application/json', - ]); - - $response = $this->handleRequestUsing($request, function ($request) { - return $this->login($request); - })->assertUnprocessable(); - - $this->assertInstanceOf(ValidationException::class, $response->exception); - $this->assertSame([ - 'email' => [ - 'These credentials do not match our records.', - ], - ], $response->exception->errors()); - } - - #[Test] - public function it_cant_authenticate_unknown_credential() - { - $request = Request::create('/login', 'POST', [ - 'email' => 'taylor@laravel.com', - 'password' => 'password', - ], [], [], [ - 'HTTP_ACCEPT' => 'application/json', - ]); - - $response = $this->handleRequestUsing($request, function ($request) { - return $this->login($request); - })->assertUnprocessable(); - - $this->assertInstanceOf(ValidationException::class, $response->exception); - $this->assertSame([ - 'email' => [ - 'These credentials do not match our records.', - ], - ], $response->exception->errors()); - } - - /** - * Handle Request using the following pipeline. - * - * @param \Illuminate\Http\Request $request - * @param callable $callback - * @return \Illuminate\Testing\TestResponse - */ - protected function handleRequestUsing(Request $request, callable $callback) - { - return new TestResponse( - (new Pipeline($this->app)) - ->send($request) - ->through([ - \Illuminate\Session\Middleware\StartSession::class, - ]) - ->then($callback) - ); - } -} diff --git a/docker/streamline-src/vendor/laravel/ui/tests/AuthBackend/RegistersUsersTest.php b/docker/streamline-src/vendor/laravel/ui/tests/AuthBackend/RegistersUsersTest.php deleted file mode 100644 index 22d490b5..00000000 --- a/docker/streamline-src/vendor/laravel/ui/tests/AuthBackend/RegistersUsersTest.php +++ /dev/null @@ -1,99 +0,0 @@ - 'Taylor Otwell', - 'email' => 'taylor@laravel.com', - 'password' => 'secret-password', - 'password_confirmation' => 'secret-password', - ], [], [], [ - 'HTTP_ACCEPT' => 'application/json', - ]); - - $response = $this->handleRequestUsing($request, function ($request) { - return $this->register($request); - })->assertCreated(); - - $this->assertDatabaseHas('users', [ - 'name' => 'Taylor Otwell', - 'email' => 'taylor@laravel.com', - ]); - } - - /** - * Get a validator for an incoming registration request. - * - * @param array $data - * @return \Illuminate\Contracts\Validation\Validator - */ - protected function validator(array $data) - { - return Validator::make($data, [ - 'name' => ['required', 'string', 'max:255'], - 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], - 'password' => ['required', 'string', 'min:8', 'confirmed'], - ]); - } - - /** - * Create a new user instance after a valid registration. - * - * @param array $data - * @return \App\Models\User - */ - protected function create(array $data) - { - $user = (new User())->forceFill([ - 'name' => $data['name'], - 'email' => $data['email'], - 'password' => Hash::make($data['password']), - ]); - - $user->save(); - - return $user; - } - - /** - * Handle Request using the following pipeline. - * - * @param \Illuminate\Http\Request $request - * @param callable $callback - * @return \Illuminate\Testing\TestResponse - */ - protected function handleRequestUsing(Request $request, callable $callback) - { - return new TestResponse( - (new Pipeline($this->app)) - ->send($request) - ->through([ - \Illuminate\Session\Middleware\StartSession::class, - ]) - ->then($callback) - ); - } -} diff --git a/docker/streamline-src/vendor/laravel/ui/tests/AuthBackend/ThrottleLoginsTest.php b/docker/streamline-src/vendor/laravel/ui/tests/AuthBackend/ThrottleLoginsTest.php deleted file mode 100644 index d59f658c..00000000 --- a/docker/streamline-src/vendor/laravel/ui/tests/AuthBackend/ThrottleLoginsTest.php +++ /dev/null @@ -1,49 +0,0 @@ -createMock(ThrottlesLogins::class); - $throttle->method('username')->willReturn('email'); - $reflection = new \ReflectionClass($throttle); - $method = $reflection->getMethod('throttleKey'); - $method->setAccessible(true); - - $request = $this->mock(Request::class); - $request->expects('input')->with('email')->andReturn($email); - $request->expects('ip')->andReturn('192.168.0.1'); - - $this->assertSame($expectedEmail . '|192.168.0.1', $method->invoke($throttle, $request)); - } - - public static function emailProvider(): array - { - return [ - 'lowercase special characters' => ['ⓣⓔⓢⓣ@ⓛⓐⓡⓐⓥⓔⓛ.ⓒⓞⓜ', 'test@laravel.com'], - 'uppercase special characters' => ['ⓉⒺⓈⓉ@ⓁⒶⓇⒶⓋⒺⓁ.ⒸⓄⓂ', 'test@laravel.com'], - 'special character numbers' => ['test⑩⓸③@laravel.com', 'test1043@laravel.com'], - 'default email' => ['test@laravel.com', 'test@laravel.com'], - ]; - } -} - -class ThrottlesLogins -{ - use ThrottlesLoginsTrait; - - public function username() - { - return 'email'; - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/.phpstorm.meta.php b/docker/streamline-src/vendor/league/commonmark/.phpstorm.meta.php deleted file mode 100644 index 5eb9270d..00000000 --- a/docker/streamline-src/vendor/league/commonmark/.phpstorm.meta.php +++ /dev/null @@ -1,106 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace PHPSTORM_META -{ - expectedArguments(\League\CommonMark\Util\HtmlElement::__construct(), 0, 'a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kdb', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'pre', 'progress', 'q', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr'); - - expectedArguments(\League\CommonMark\Extension\CommonMark\Node\Block\Heading::__construct(), 0, 1, 2, 3, 4, 5, 6); - expectedReturnValues(\League\CommonMark\Extension\CommonMark\Node\Block\Heading::getLevel(), 1, 2, 3, 4, 5, 6); - - registerArgumentsSet('league_commonmark_htmlblock_types', \League\CommonMark\Extension\CommonMark\Node\Block\HtmlBlock::TYPE_1_CODE_CONTAINER, \League\CommonMark\Extension\CommonMark\Node\Block\HtmlBlock::TYPE_2_COMMENT, \League\CommonMark\Extension\CommonMark\Node\Block\HtmlBlock::TYPE_3, \League\CommonMark\Extension\CommonMark\Node\Block\HtmlBlock::TYPE_4, \League\CommonMark\Extension\CommonMark\Node\Block\HtmlBlock::TYPE_5_CDATA, \League\CommonMark\Extension\CommonMark\Node\Block\HtmlBlock::TYPE_6_BLOCK_ELEMENT, \League\CommonMark\Extension\CommonMark\Node\Block\HtmlBlock::TYPE_7_MISC_ELEMENT); - expectedArguments(\League\CommonMark\Extension\CommonMark\Node\Block\HtmlBlock::__construct(), 0, argumentsSet('league_commonmark_htmlblock_types')); - expectedArguments(\League\CommonMark\Extension\CommonMark\Node\Block\HtmlBlock::setType(), 0, argumentsSet('league_commonmark_htmlblock_types')); - expectedReturnValues(\League\CommonMark\Extension\CommonMark\Node\Block\HtmlBlock::getType(), argumentsSet('league_commonmark_htmlblock_types')); - expectedArguments(\League\CommonMark\Util\RegexHelper::getHtmlBlockOpenRegex(), 0, argumentsSet('league_commonmark_htmlblock_types')); - expectedArguments(\League\CommonMark\Util\RegexHelper::getHtmlBlockCloseRegex(), 0, argumentsSet('league_commonmark_htmlblock_types')); - - registerArgumentsSet('league_commonmark_newline_types', \League\CommonMark\Node\Inline\Newline::HARDBREAK, \League\CommonMark\Node\Inline\Newline::SOFTBREAK); - expectedArguments(\League\CommonMark\Node\Inline\Newline::__construct(), 0, argumentsSet('league_commonmark_newline_types')); - expectedReturnValues(\League\CommonMark\Node\Inline\Newline::getType(), argumentsSet('league_commonmark_newline_types')); - - registerArgumentsSet('league_commonmark_options', - 'html_input', - 'allow_unsafe_links', - 'max_nesting_level', - 'max_delimiters_per_line', - 'renderer', - 'renderer/block_separator', - 'renderer/inner_separator', - 'renderer/soft_break', - 'commonmark', - 'commonmark/enable_em', - 'commonmark/enable_strong', - 'commonmark/use_asterisk', - 'commonmark/use_underscore', - 'commonmark/unordered_list_markers', - 'disallowed_raw_html', - 'disallowed_raw_html/disallowed_tags', - 'external_link', - 'external_link/html_class', - 'external_link/internal_hosts', - 'external_link/nofollow', - 'external_link/noopener', - 'external_link/noreferrer', - 'external_link/open_in_new_window', - 'footnote', - 'footnote/backref_class', - 'footnote/backref_symbol', - 'footnote/container_add_hr', - 'footnote/container_class', - 'footnote/ref_class', - 'footnote/ref_id_prefix', - 'footnote/footnote_class', - 'footnote/footnote_id_prefix', - 'heading_permalink', - 'heading_permalink/apply_id_to_heading', - 'heading_permalink/heading_class', - 'heading_permalink/html_class', - 'heading_permalink/fragment_prefix', - 'heading_permalink/id_prefix', - 'heading_permalink/inner_contents', - 'heading_permalink/insert', - 'heading_permalink/max_heading_level', - 'heading_permalink/min_heading_level', - 'heading_permalink/symbol', - 'heading_permalink/title', - 'mentions', - 'smartpunct/double_quote_closer', - 'smartpunct/double_quote_opener', - 'smartpunct/single_quote_closer', - 'smartpunct/single_quote_opener', - 'slug_normalizer', - 'slug_normalizer/instance', - 'slug_normalizer/max_length', - 'slug_normalizer/unique', - 'table', - 'table/wrap', - 'table/wrap/attributes', - 'table/wrap/enabled', - 'table/wrap/tag', - 'table/alignment_attributes', - 'table/alignment_attributes/left', - 'table/alignment_attributes/center', - 'table/alignment_attributes/right', - 'table/max_autocompleted_cells', - 'table_of_contents', - 'table_of_contents/html_class', - 'table_of_contents/max_heading_level', - 'table_of_contents/min_heading_level', - 'table_of_contents/normalize', - 'table_of_contents/placeholder', - 'table_of_contents/position', - 'table_of_contents/style', - ); - expectedArguments(\League\Config\ConfigurationInterface::get(), 0, argumentsSet('league_commonmark_options')); - expectedArguments(\League\Config\ConfigurationInterface::exists(), 0, argumentsSet('league_commonmark_options')); - expectedArguments(\League\Config\MutableConfigurationInterface::set(), 0, argumentsSet('league_commonmark_options')); -} diff --git a/docker/streamline-src/vendor/league/commonmark/CHANGELOG.md b/docker/streamline-src/vendor/league/commonmark/CHANGELOG.md deleted file mode 100644 index e5daacb6..00000000 --- a/docker/streamline-src/vendor/league/commonmark/CHANGELOG.md +++ /dev/null @@ -1,727 +0,0 @@ -# Change Log -All notable changes to this project will be documented in this file. -Updates should follow the [Keep a CHANGELOG](https://keepachangelog.com/) principles. - -**Upgrading from 1.x?** See for additional information. - -## [Unreleased][unreleased] - -## [2.6.1] - 2024-12-29 - -### Fixed - -- Rendered list items should only add newlines around block-level children (#1059, #1061) - -## [2.6.0] - 2024-12-07 - -This is a **security release** to address potential denial of service attacks when parsing specially crafted, -malicious input from untrusted sources (like user input). - -### Added - -- Added `max_delimiters_per_line` config option to prevent denial of service attacks when parsing malicious input -- Added `table/max_autocompleted_cells` config option to prevent denial of service attacks when parsing large tables -- The `AttributesExtension` now supports attributes without values (#985, #986) -- The `AutolinkExtension` exposes two new configuration options to override the default behavior (#969, #987): - - `autolink/allowed_protocols` - an array of protocols to allow autolinking for - - `autolink/default_protocol` - the default protocol to use when none is specified -- Added `RegexHelper::isWhitespace()` method to check if a given character is an ASCII whitespace character -- Added `CacheableDelimiterProcessorInterface` to ensure linear complexity for dynamic delimiter processing -- Added `Bracket` delimiter type to optimize bracket parsing - -### Changed - -- `[` and `]` are no longer added as `Delimiter` objects on the stack; a new `Bracket` type with its own stack is used instead -- `UrlAutolinkParser` no longer parses URLs with more than 127 subdomains -- Expanded reference links can no longer exceed 100kb, or the size of the input document (whichever is greater) -- Delimiters should always provide a non-null value via `DelimiterInterface::getIndex()` - - We'll attempt to infer the index based on surrounding delimiters where possible -- The `DelimiterStack` now accepts integer positions for any `$stackBottom` argument -- Several small performance optimizations - -## [2.5.3] - 2024-08-16 - -### Changed - -- Made compatible with CommonMark spec 0.31.1, including: - - Remove `source`, add `search` to list of recognized block tags - -## [2.5.2] - 2024-08-14 - -### Changed - -- Boolean attributes now require an explicit `true` value (#1040) - -### Fixed - -- Fixed regression where text could be misinterpreted as an attribute (#1040) - -## [2.5.1] - 2024-07-24 - -### Fixed - -- Fixed attribute parsing incorrectly parsing mustache-like syntax (#1035) -- Fixed incorrect `Table` start line numbers (#1037) - -## [2.5.0] - 2024-07-22 - -### Added - -- The `AttributesExtension` now supports attributes without values (#985, #986) -- The `AutolinkExtension` exposes two new configuration options to override the default behavior (#969, #987): - - `autolink/allowed_protocols` - an array of protocols to allow autolinking for - - `autolink/default_protocol` - the default protocol to use when none is specified - -### Changed - -- Made compatible with CommonMark spec 0.31.0, including: - - Allow closing fence to be followed by tabs - - Remove restrictive limitation on inline comments - - Unicode symbols now treated like punctuation (for purposes of flankingness) - - Trailing tabs on the last line of indented code blocks will be excluded - - Improved HTML comment matching -- `Paragraph`s only containing link reference definitions will be kept in the AST until the `Document` is finalized - - (These were previously removed immediately after parsing the `Paragraph`) - -### Fixed - -- Fixed list tightness not being determined properly in some edge cases -- Fixed incorrect ending line numbers for several block types in various scenarios -- Fixed lowercase inline HTML declarations not being accepted - -## [2.4.4] - 2024-07-22 - -### Fixed - -- Fixed SmartPunct extension changing already-formatted quotation marks (#1030) - -## [2.4.3] - 2024-07-22 - -### Fixed - -- Fixed the Attributes extension not supporting CSS level 3 selectors (#1013) -- Fixed `UrlAutolinkParser` incorrectly parsing text containing `www` anywhere before an autolink (#1025) - - -## [2.4.2] - 2024-02-02 - -### Fixed - -- Fixed declaration parser being too strict -- `FencedCodeRenderer`: don't add `language-` to class if already prefixed - -### Deprecated - -- Returning dynamic values from `DelimiterProcessorInterface::getDelimiterUse()` is deprecated - - You should instead implement `CacheableDelimiterProcessorInterface` to help the engine perform caching to avoid performance issues. -- Failing to set a delimiter's index (or returning `null` from `DelimiterInterface::getIndex()`) is deprecated and will not be supported in 3.0 -- Deprecated `DelimiterInterface::isActive()` and `DelimiterInterface::setActive()`, as these are no longer used by the engine -- Deprecated `DelimiterStack::removeEarlierMatches()` and `DelimiterStack::searchByCharacter()`, as these are no longer used by the engine -- Passing a `DelimiterInterface` as the `$stackBottom` argument to `DelimiterStack::processDelimiters()` or `::removeAll()` is deprecated and will not be supported in 3.0; pass the integer position instead. - -### Fixed - -- Fixed NUL characters not being replaced in the input -- Fixed quadratic complexity parsing unclosed inline links -- Fixed quadratic complexity parsing emphasis and strikethrough delimiters -- Fixed issue where having 500,000+ delimiters could trigger a [known segmentation fault issue in PHP's garbage collection](https://bugs.php.net/bug.php?id=68606) -- Fixed quadratic complexity deactivating link openers -- Fixed quadratic complexity parsing long backtick code spans with no matching closers -- Fixed catastrophic backtracking when parsing link labels/titles - -## [2.4.1] - 2023-08-30 - -### Fixed - -- Fixed `ExternalLinkProcessor` not fully disabling the `rel` attribute when configured to do so (#992) - -## [2.4.0] - 2023-03-24 - -### Added - -- Added generic `CommonMarkException` marker interface for all exceptions thrown by the library -- Added several new specific exception types implementing that marker interface: - - `AlreadyInitializedException` - - `InvalidArgumentException` - - `IOException` - - `LogicException` - - `MissingDependencyException` - - `NoMatchingRendererException` - - `ParserLogicException` -- Added more configuration options to the Heading Permalinks extension (#939): - - `heading_permalink/apply_id_to_heading` - When `true`, the `id` attribute will be applied to the heading element itself instead of the `` tag - - `heading_permalink/heading_class` - class to apply to the heading element - - `heading_permalink/insert` - now accepts `none` to prevent the creation of the `` link -- Added new `table/alignment_attributes` configuration option to control how table cell alignment is rendered (#959) - -### Changed - -- Change several thrown exceptions from `RuntimeException` to `LogicException` (or something extending it), including: - - `CallbackGenerator`s that fail to set a URL or return an expected value - - `MarkdownParser` when deactivating the last block parser or attempting to get an active block parser when they've all been closed - - Adding items to an already-initialized `Environment` - - Rendering a `Node` when no renderer has been registered for it -- `HeadingPermalinkProcessor` now throws `InvalidConfigurationException` instead of `RuntimeException` when invalid config values are given. -- `HtmlElement::setAttribute()` no longer requires the second parameter for boolean attributes -- Several small micro-optimizations -- Changed Strikethrough to only allow 1 or 2 tildes per the updated GFM spec - -### Fixed - -- Fixed inaccurate `@throws` docblocks throughout the codebase, including `ConverterInterface`, `MarkdownConverter`, and `MarkdownConverterInterface`. - - These previously suggested that only `\RuntimeException`s were thrown, which was inaccurate as `\LogicException`s were also possible. - -## [2.3.9] - 2023-02-15 - -### Fixed - -- Fixed autolink extension not detecting some URIs with underscores (#956) - -## [2.3.8] - 2022-12-10 - -### Fixed - -- Fixed parsing issues when `mb_internal_encoding()` is set to something other than `UTF-8` (#951) - -## [2.3.7] - 2022-11-03 - -### Fixed - -- Fixed `TaskListItemMarkerRenderer` not including HTML attributes set on the node by other extensions (#947) - -## [2.3.6] - 2022-10-30 - -### Fixed - -- Fixed unquoted attribute parsing when closing curly brace is followed by certain characters (like a `.`) (#943) - -## [2.3.5] - 2022-07-29 - -### Fixed - -- Fixed error using `InlineParserEngine` when no inline parsers are registered in the `Environment` (#908) - -## [2.3.4] - 2022-07-17 - -### Changed - -- Made a number of small tweaks to the embed extension's parsing behavior to fix #898: - - Changed `EmbedStartParser` to always capture embed-like lines in container blocks, regardless of parent block type - - Changed `EmbedProcessor` to also remove `Embed` blocks that aren't direct children of the `Document` - - Increased the priority of `EmbedProcessor` to `1010` - -### Fixed - -- Fixed `EmbedExtension` not parsing embeds following a list block (#898) - -## [2.3.3] - 2022-06-07 - -### Fixed - -- Fixed `DomainFilteringAdapter` not reindexing the embed list (#884, #885) - -## [2.3.2] - 2022-06-03 - -### Fixed - -- Fixed FootnoteExtension stripping extra characters from tab-indented footnotes (#881) - -## [2.2.5] - 2022-06-03 - -### Fixed - -- Fixed FootnoteExtension stripping extra characters from tab-indented footnotes (#881) - -## [2.3.1] - 2022-05-14 - -### Fixed - -- Fixed AutolinkExtension not ignoring trailing strikethrough syntax (#867) - -## [2.2.4] - 2022-05-14 - -### Fixed - -- Fixed AutolinkExtension not ignoring trailing strikethrough syntax (#867) - -## [2.3.0] - 2022-04-07 - -### Added - -- Added new `EmbedExtension` (#805) -- Added `DocumentRendererInterface` as a replacement for the now-deprecated `MarkdownRendererInterface` - -### Deprecated - -- Deprecated `MarkdownRendererInterface`; use `DocumentRendererInterface` instead - -## [2.2.3] - 2022-02-26 - -### Fixed - -- Fixed front matter parsing with Windows line endings (#821) - -## [2.1.3] - 2022-02-26 - -### Fixed - -- Fixed front matter parsing with Windows line endings (#821) - -## [2.0.4] - 2022-02-26 - -### Fixed - -- Fixed front matter parsing with Windows line endings (#821) - -## [2.2.2] - 2022-02-13 - -### Fixed - -- Fixed double-escaping of image alt text (#806, #810) -- Fixed Psalm typehints for event class names - -## [2.2.1] - 2022-01-25 - -### Fixed - - - Fixed `symfony/deprecation-contracts` constraint - -### Removed - - - Removed deprecation trigger from `MarkdownConverterInterface` to reduce noise - -## [2.2.0] - 2022-01-22 - -### Added - - - Added new `ConverterInterface` - - Added new `MarkdownToXmlConverter` class - - Added new `HtmlDecorator` class which can wrap existing renderers with additional HTML tags - - Added new `table/wrap` config to apply an optional wrapping/container element around a table (#780) - -### Changed - - - `HtmlElement` contents can now consist of any `Stringable`, not just `HtmlElement` and `string` - -### Deprecated - - - Deprecated `MarkdownConverterInterface` and its `convertToHtml()` method; use `ConverterInterface` and `convert()` instead - -## [2.1.2] - 2022-02-13 - -### Fixed - -- Fixed double-escaping of image alt text (#806, #810) -- Fixed Psalm typehints for event class names - -## [2.1.1] - 2022-01-02 - -### Added - - - Added missing return type to `Environment::dispatch()` to fix deprecation warning (#778) - -## [2.1.0] - 2021-12-05 - -### Added - -- Added support for ext-yaml in FrontMatterExtension (#715) -- Added support for symfony/yaml v6.0 in FrontMatterExtension (#739) -- Added new `heading_permalink/aria_hidden` config option (#741) - -### Fixed - - - Fixed PHP 8.1 deprecation warning (#759, #762) - -## [2.0.3] - 2022-02-13 - -### Fixed - -- Fixed double-escaping of image alt text (#806, #810) -- Fixed Psalm typehints for event class names - -## [2.0.2] - 2021-08-14 - -### Changed - -- Bumped minimum version of league/config to support PHP 8.1 - -### Fixed - -- Fixed ability to register block parsers that identify lines starting with letters (#706) - -## [2.0.1] - 2021-07-31 - -### Fixed - -- Fixed nested autolinks (#689) -- Fixed description lists being parsed incorrectly (#692) -- Fixed Table of Contents not respecting Heading Permalink prefixes (#690) - -## [2.0.0] - 2021-07-24 - -No changes were introduced since the previous RC2 release. -See all entries below for a list of changes between 1.x and 2.0. - -## [2.0.0-rc2] - 2021-07-17 - -### Fixed - -- Fixed Mentions inside of links creating nested links against the spec's rules (#688) - -## [2.0.0-rc1] - 2021-07-10 - -No changes were introduced since the previous release. - -## [2.0.0-beta3] - 2021-07-03 - -### Changed - - - Any leading UTF-8 BOM will be stripped from the input - - The `getEnvironment()` method of `CommonMarkConverter` and `GithubFlavoredMarkdownConverter` will always return the concrete, configurable `Environment` for upgrading convenience - - Optimized AST iteration - - Lots of small micro-optimizations - -## [2.0.0-beta2] - 2021-06-27 - -### Added - -- Added new `Node::iterator()` method and `NodeIterator` class for faster AST iteration (#683, #684) - -### Changed - -- Made compatible with CommonMark spec 0.30.0 -- Optimized link label parsing -- Optimized AST iteration for a 50% performance boost in some event listeners (#683, #684) - -### Fixed - -- Fixed processing instructions with EOLs -- Fixed case-insensitive matching for HTML tag types -- Fixed type 7 HTML blocks incorrectly interrupting lazy paragraphs -- Fixed newlines in reference labels not collapsing into spaces -- Fixed link label normalization with escaped newlines -- Fixed unnecessary AST iteration when no default attributes are configured - -## [2.0.0-beta1] - 2021-06-20 - -### Added - - - **Added three new extensions:** - - `FrontMatterExtension` ([see documentation](https://commonmark.thephpleague.com/extensions/front-matter/)) - - `DescriptionListExtension` ([see documentation](https://commonmark.thephpleague.com/extensions/description-lists/)) - - `DefaultAttributesExtension` ([see documentation](https://commonmark.thephpleague.com/extensions/default-attributes/)) - - **Added new `XmlRenderer` to simplify AST debugging** ([see documentation](https://commonmark.thephpleague.com/xml/)) (#431) - - **Added the ability to configure disallowed raw HTML tags** (#507) - - **Added the ability for Mentions to use multiple characters for their symbol** (#514, #550) - - **Added the ability to delegate event dispatching to PSR-14 compliant event dispatcher libraries** - - **Added new configuration options:** - - Added `heading_permalink/min_heading_level` and `heading_permalink/max_heading_level` options to control which headings get permalinks (#519) - - Added `heading_permalink/fragment_prefix` to allow customizing the URL fragment prefix (#602) - - Added `footnote/backref_symbol` option for customizing backreference link appearance (#522) - - Added `slug_normalizer/max_length` option to control the maximum length of generated URL slugs - - Added `slug_normalizer/unique` option to control whether unique slugs should be generated per-document or per-environment - - **Added purity markers throughout the codebase** (verified with Psalm) - - Added `Query` class to simplify Node traversal when looking to take action on certain Nodes - - Added new `HtmlFilter` and `StringContainerHelper` utility classes - - Added new `AbstractBlockContinueParser` class to simplify the creation of custom block parsers - - Added several new classes and interfaces: - - `BlockContinue` - - `BlockContinueParserInterface` - - `BlockContinueParserWithInlinesInterface` - - `BlockStart` - - `BlockStartParserInterface` - - `ChildNodeRendererInterface` - - `ConfigurableExtensionInterface` - - `CursorState` - - `DashParser` (extracted from `PunctuationParser`) - - `DelimiterParser` - - `DocumentBlockParser` - - `DocumentPreRenderEvent` - - `DocumentRenderedEvent` - - `EllipsesParser` (extracted from `PunctuationParser`) - - `ExpressionInterface` - - `FallbackNodeXmlRenderer` - - `InlineParserEngineInterface` - - `InlineParserMatch` - - `MarkdownParserState` - - `MarkdownParserStateInterface` - - `MarkdownRendererInterface` - - `Query` - - `RawMarkupContainerInterface` - - `ReferenceableInterface` - - `RenderedContent` - - `RenderedContentInterface` - - `ReplaceUnpairedQuotesListener` - - `SpecReader` - - `TableOfContentsRenderer` - - `UniqueSlugNormalizer` - - `UniqueSlugNormalizerInterface` - - `XmlRenderer` - - `XmlNodeRendererInterface` - - Added several new methods: - - `Cursor::getCurrentCharacter()` - - `Environment::createDefaultConfiguration()` - - `Environment::setEventDispatcher()` - - `EnvironmentInterface::getExtensions()` - - `EnvironmentInterface::getInlineParsers()` - - `EnvironmentInterface::getSlugNormalizer()` - - `FencedCode::setInfo()` - - `Heading::setLevel()` - - `HtmlRenderer::renderDocument()` - - `InlineParserContext::getFullMatch()` - - `InlineParserContext::getFullMatchLength()` - - `InlineParserContext::getMatches()` - - `InlineParserContext::getSubMatches()` - - `LinkParserHelper::parsePartialLinkLabel()` - - `LinkParserHelper::parsePartialLinkTitle()` - - `Node::assertInstanceOf()` - - `RegexHelper::isLetter()` - - `StringContainerInterface::setLiteral()` - - `TableCell::getType()` - - `TableCell::setType()` - - `TableCell::getAlign()` - - `TableCell::setAlign()` - -### Changed - - - **Changed the converter return type** - - `CommonMarkConverter::convertToHtml()` now returns an instance of `RenderedContentInterface`. This can be cast to a string for backward compatibility with 1.x. - - **Table of Contents items are no longer wrapped with `

    ` tags** (#613) - - **Heading Permalinks now link to element IDs instead of using `name` attributes** (#602) - - **Heading Permalink IDs and URL fragments now have a `content` prefix by default** (#602) - - **Changes to configuration options:** - - `enable_em` has been renamed to `commonmark/enable_em` - - `enable_strong` has been renamed to `commonmark/enable_strong` - - `use_asterisk` has been renamed to `commonmark/use_asterisk` - - `use_underscore` has been renamed to `commonmark/use_underscore` - - `unordered_list_markers` has been renamed to `commonmark/unordered_list_markers` - - `mentions/*/symbol` has been renamed to `mentions/*/prefix` - - `mentions/*/regex` has been renamed to `mentions/*/pattern` and requires partial regular expressions (without delimiters or flags) - - `max_nesting_level` now defaults to `PHP_INT_MAX` and no longer supports floats - - `heading_permalink/slug_normalizer` has been renamed to `slug_normalizer/instance` - - **Event dispatching is now fully PSR-14 compliant** - - **Moved and renamed several classes** - [see the full list here](https://commonmark.thephpleague.com/2.0/upgrading/#classesnamespaces-renamed) - - The `HeadingPermalinkExtension` and `FootnoteExtension` were modified to ensure they never produce a slug which conflicts with slugs created by the other extension - - `SlugNormalizer::normalizer()` now supports optional prefixes and max length options passed in via the `$context` argument - - The `AbstractBlock::$data` and `AbstractInline::$data` arrays were replaced with a `Data` array-like object on the base `Node` class - - **Implemented a new approach to block parsing.** This was a massive change, so here are the highlights: - - Functionality previously found in block parsers and node elements has moved to block parser factories and block parsers, respectively ([more details](https://commonmark.thephpleague.com/2.0/upgrading/#new-block-parsing-approach)) - - `ConfigurableEnvironmentInterface::addBlockParser()` is now `EnvironmentBuilderInterface::addBlockParserFactory()` - - `ReferenceParser` was re-implemented and works completely different than before - - The paragraph parser no longer needs to be added manually to the environment - - **Implemented a new approach to inline parsing** where parsers can now specify longer strings or regular expressions they want to parse (instead of just single characters): - - `InlineParserInterface::getCharacters()` is now `getMatchDefinition()` and returns an instance of `InlineParserMatch` - - `InlineParserContext::__construct()` now requires the contents to be provided as a `Cursor` instead of a `string` - - **Implemented delimiter parsing as a special type of inline parser** (via the new `DelimiterParser` class) - - **Changed block and inline rendering to use common methods and interfaces** - - `BlockRendererInterface` and `InlineRendererInterface` were replaced by `NodeRendererInterface` with slightly different parameters. All core renderers now implement this interface. - - `ConfigurableEnvironmentInterface::addBlockRenderer()` and `addInlineRenderer()` were combined into `EnvironmentBuilderInterface::addRenderer()` - - `EnvironmentInterface::getBlockRenderersForClass()` and `getInlineRenderersForClass()` are now just `getRenderersForClass()` - - **Completely refactored the Configuration implementation** - - All configuration-specific classes have been moved into a new `league/config` package with a new namespace - - `Configuration` objects must now be configured with a schema and all options must match that schema - arbitrary keys are no longer permitted - - `Configuration::__construct()` no longer accepts the default configuration values - use `Configuration::merge()` instead - - `ConfigurationInterface` now only contains a `get(string $key)`; this method no longer allows arbitrary default values to be returned if the option is missing - - `ConfigurableEnvironmentInterface` was renamed to `EnvironmentBuilderInterface` - - `ExtensionInterface::register()` now requires an `EnvironmentBuilderInterface` param instead of `ConfigurableEnvironmentInterface` - - **Added missing return types to virtually every class and interface method** - - Re-implemented the GFM Autolink extension using the new inline parser approach instead of document processors - - `EmailAutolinkProcessor` is now `EmailAutolinkParser` - - `UrlAutolinkProcessor` is now `UrlAutolinkParser` - - `HtmlElement` can now properly handle array (i.e. `class`) and boolean (i.e. `checked`) attribute values - - `HtmlElement` automatically flattens any attributes with array values into space-separated strings, removing duplicate entries - - Combined separate classes/interfaces into one: - - `DisallowedRawHtmlRenderer` replaces `DisallowedRawHtmlBlockRenderer` and `DisallowedRawHtmlInlineRenderer` - - `NodeRendererInterface` replaces `BlockRendererInterface` and `InlineRendererInterface` - - Renamed the following methods: - - `Environment` and `ConfigurableEnvironmentInterface`: - - `addBlockParser()` is now `addBlockStartParser()` - - `ReferenceMap` and `ReferenceMapInterface`: - - `addReference()` is now `add()` - - `getReference()` is now `get()` - - `listReferences()` is now `getIterator()` - - Various node (block/inline) classes: - - `getContent()` is now `getLiteral()` - - `setContent()` is now `setLiteral()` - - Moved and renamed the following constants: - - `EnvironmentInterface::HTML_INPUT_ALLOW` is now `HtmlFilter::ALLOW` - - `EnvironmentInterface::HTML_INPUT_ESCAPE` is now `HtmlFilter::ESCAPE` - - `EnvironmentInterface::HTML_INPUT_STRIP` is now `HtmlFilter::STRIP` - - `TableCell::TYPE_HEAD` is now `TableCell::TYPE_HEADER` - - `TableCell::TYPE_BODY` is now `TableCell::TYPE_DATA` - - Changed the visibility of the following properties: - - `AttributesInline::$attributes` is now `private` - - `AttributesInline::$block` is now `private` - - `TableCell::$align` is now `private` - - `TableCell::$type` is now `private` - - `TableSection::$type` is now `private` - - Several methods which previously returned `$this` now return `void` - - `Delimiter::setPrevious()` - - `Node::replaceChildren()` - - `Context::setTip()` - - `Context::setContainer()` - - `Context::setBlocksParsed()` - - `AbstractStringContainer::setContent()` - - `AbstractWebResource::setUrl()` - - Several classes are now marked `final`: - - `ArrayCollection` - - `Emphasis` - - `FencedCode` - - `Heading` - - `HtmlBlock` - - `HtmlElement` - - `HtmlInline` - - `IndentedCode` - - `Newline` - - `Strikethrough` - - `Strong` - - `Text` - - `Heading` nodes no longer directly contain a copy of their inner text - - `StringContainerInterface` can now be used for inlines, not just blocks - - `ArrayCollection` only supports integer keys - - `HtmlElement` now implements `Stringable` - - `Cursor::saveState()` and `Cursor::restoreState()` now use `CursorState` objects instead of arrays - - `NodeWalker::next()` now enters, traverses any children, and leaves all elements which may have children (basically all blocks plus any inlines with children). Previously, it only did this for elements explicitly marked as "containers". - - `InvalidOptionException` was removed - - Anything with a `getReference(): ReferenceInterface` method now implements `ReferencableInterface` - - The `SmartPunct` extension now replaces all unpaired `Quote` elements with `Text` elements towards the end of parsing, making the `QuoteRenderer` unnecessary - - Several changes made to the Footnote extension: - - Footnote identifiers can no longer contain spaces - - Anonymous footnotes can now span subsequent lines - - Footnotes can now contain multiple lines of content, including sub-blocks, by indenting them - - Footnote event listeners now have numbered priorities (but still execute in the same order) - - Footnotes must now be separated from previous content by a blank line - - The line numbers (keys) returned via `MarkdownInput::getLines()` now start at 1 instead of 0 - - `DelimiterProcessorCollectionInterface` now extends `Countable` - - `RegexHelper::PARTIAL_` constants must always be used in case-insensitive contexts - - `HeadingPermalinkProcessor` no longer accepts text normalizers via the constructor - these must be provided via configuration instead - - Blocks which can't contain inlines will no longer be asked to render inlines - - `AnonymousFootnoteRefParser` and `HeadingPermalinkProcessor` now implement `EnvironmentAwareInterface` instead of `ConfigurationAwareInterface` - - The second argument to `TextNormalizerInterface::normalize()` must now be an array - - The `title` attribute for `Link` and `Image` nodes is now stored using a dedicated property instead of stashing it in `$data` - - `ListData::$delimiter` now returns either `ListBlock::DELIM_PERIOD` or `ListBlock::DELIM_PAREN` instead of the literal delimiter - -### Fixed - - - **Fixed parsing of footnotes without content** - - **Fixed rendering of orphaned footnotes and footnote refs** - - **Fixed some URL autolinks breaking too early** (#492) - - Fixed `AbstractStringContainer` not actually being `abstract` - -### Removed - - - **Removed support for PHP 7.1, 7.2, and 7.3** (#625, #671) - - **Removed all previously-deprecated functionality:** - - Removed the ability to pass custom `Environment` instances into the `CommonMarkConverter` and `GithubFlavoredMarkdownConverter` constructors - - Removed the `Converter` class and `ConverterInterface` - - Removed the `bin/commonmark` script - - Removed the `Html5Entities` utility class - - Removed the `InlineMentionParser` (use `MentionParser` instead) - - Removed `DefaultSlugGenerator` and `SlugGeneratorInterface` from the `Extension/HeadingPermalink/Slug` sub-namespace (use the new ones under `./SlugGenerator` instead) - - Removed the following `ArrayCollection` methods: - - `add()` - - `set()` - - `get()` - - `remove()` - - `isEmpty()` - - `contains()` - - `indexOf()` - - `containsKey()` - - `replaceWith()` - - `removeGaps()` - - Removed the `ConfigurableEnvironmentInterface::setConfig()` method - - Removed the `ListBlock::TYPE_UNORDERED` constant - - Removed the `CommonMarkConverter::VERSION` constant - - Removed the `HeadingPermalinkRenderer::DEFAULT_INNER_CONTENTS` constant - - Removed the `heading_permalink/inner_contents` configuration option - - **Removed now-unused classes:** - - `AbstractStringContainerBlock` - - `BlockRendererInterface` - - `Context` - - `ContextInterface` - - `Converter` - - `ConverterInterface` - - `InlineRendererInterface` - - `PunctuationParser` (was split into two classes: `DashParser` and `EllipsesParser`) - - `QuoteRenderer` - - `UnmatchedBlockCloser` - - Removed the following methods, properties, and constants: - - `AbstractBlock::$open` - - `AbstractBlock::$lastLineBlank` - - `AbstractBlock::isContainer()` - - `AbstractBlock::canContain()` - - `AbstractBlock::isCode()` - - `AbstractBlock::matchesNextLine()` - - `AbstractBlock::endsWithBlankLine()` - - `AbstractBlock::setLastLineBlank()` - - `AbstractBlock::shouldLastLineBeBlank()` - - `AbstractBlock::isOpen()` - - `AbstractBlock::finalize()` - - `AbstractBlock::getData()` - - `AbstractInline::getData()` - - `ConfigurableEnvironmentInterface::addBlockParser()` - - `ConfigurableEnvironmentInterface::mergeConfig()` - - `Delimiter::setCanClose()` - - `EnvironmentInterface::getConfig()` - - `EnvironmentInterface::getInlineParsersForCharacter()` - - `EnvironmentInterface::getInlineParserCharacterRegex()` - - `HtmlRenderer::renderBlock()` - - `HtmlRenderer::renderBlocks()` - - `HtmlRenderer::renderInline()` - - `HtmlRenderer::renderInlines()` - - `Node::isContainer()` - - `RegexHelper::matchAll()` (use the new `matchFirst()` method instead) - - `RegexHelper::REGEX_WHITESPACE` - - Removed the second `$contents` argument from the `Heading` constructor - -### Deprecated - -**The following things have been deprecated and will not be supported in v3.0:** - - - `Environment::mergeConfig()` (set configuration before instantiation instead) - - `Environment::createCommonMarkEnvironment()` and `Environment::createGFMEnvironment()` - - Alternative 1: Use `CommonMarkConverter` or `GithubFlavoredMarkdownConverter` if you don't need to customize the environment - - Alternative 2: Instantiate a new `Environment` and add the necessary extensions yourself - -[unreleased]: https://github.com/thephpleague/commonmark/compare/2.6.1...main -[2.6.1]: https://github.com/thephpleague/commonmark/compare/2.6.0...2.6.1 -[2.6.0]: https://github.com/thephpleague/commonmark/compare/2.5.3...2.6.0 -[2.5.3]: https://github.com/thephpleague/commonmark/compare/2.5.2...2.5.3 -[2.5.2]: https://github.com/thephpleague/commonmark/compare/2.5.1...2.5.2 -[2.5.1]: https://github.com/thephpleague/commonmark/compare/2.5.0...2.5.1 -[2.5.0]: https://github.com/thephpleague/commonmark/compare/2.4.4...2.5.0 -[2.4.4]: https://github.com/thephpleague/commonmark/compare/2.4.3...2.4.4 -[2.4.3]: https://github.com/thephpleague/commonmark/compare/2.4.2...2.4.3 -[2.4.2]: https://github.com/thephpleague/commonmark/compare/2.4.1...2.4.2 -[2.4.1]: https://github.com/thephpleague/commonmark/compare/2.4.0...2.4.1 -[2.4.0]: https://github.com/thephpleague/commonmark/compare/2.3.9...2.4.0 -[2.3.9]: https://github.com/thephpleague/commonmark/compare/2.3.8...2.3.9 -[2.3.8]: https://github.com/thephpleague/commonmark/compare/2.3.7...2.3.8 -[2.3.7]: https://github.com/thephpleague/commonmark/compare/2.3.6...2.3.7 -[2.3.6]: https://github.com/thephpleague/commonmark/compare/2.3.5...2.3.6 -[2.3.5]: https://github.com/thephpleague/commonmark/compare/2.3.4...2.3.5 -[2.3.4]: https://github.com/thephpleague/commonmark/compare/2.3.3...2.3.4 -[2.3.3]: https://github.com/thephpleague/commonmark/compare/2.3.2...2.3.3 -[2.3.2]: https://github.com/thephpleague/commonmark/compare/2.3.2...main -[2.3.1]: https://github.com/thephpleague/commonmark/compare/2.3.0...2.3.1 -[2.3.0]: https://github.com/thephpleague/commonmark/compare/2.2.3...2.3.0 -[2.2.5]: https://github.com/thephpleague/commonmark/compare/2.2.4...2.2.5 -[2.2.4]: https://github.com/thephpleague/commonmark/compare/2.2.3...2.2.4 -[2.2.3]: https://github.com/thephpleague/commonmark/compare/2.2.2...2.2.3 -[2.2.2]: https://github.com/thephpleague/commonmark/compare/2.2.1...2.2.2 -[2.2.1]: https://github.com/thephpleague/commonmark/compare/2.2.0...2.2.1 -[2.2.0]: https://github.com/thephpleague/commonmark/compare/2.1.1...2.2.0 -[2.1.3]: https://github.com/thephpleague/commonmark/compare/2.1.2...2.1.3 -[2.1.2]: https://github.com/thephpleague/commonmark/compare/2.1.1...2.1.2 -[2.1.1]: https://github.com/thephpleague/commonmark/compare/2.0.2...2.1.1 -[2.1.0]: https://github.com/thephpleague/commonmark/compare/2.0.2...2.1.0 -[2.0.4]: https://github.com/thephpleague/commonmark/compare/2.0.3...2.0.4 -[2.0.3]: https://github.com/thephpleague/commonmark/compare/2.0.2...2.0.3 -[2.0.2]: https://github.com/thephpleague/commonmark/compare/2.0.1...2.0.2 -[2.0.1]: https://github.com/thephpleague/commonmark/compare/2.0.0...2.0.1 -[2.0.0]: https://github.com/thephpleague/commonmark/compare/2.0.0-rc2...2.0.0 -[2.0.0-rc2]: https://github.com/thephpleague/commonmark/compare/2.0.0-rc1...2.0.0-rc2 -[2.0.0-rc1]: https://github.com/thephpleague/commonmark/compare/2.0.0-beta3...2.0.0-rc1 -[2.0.0-beta3]: https://github.com/thephpleague/commonmark/compare/2.0.0-beta2...2.0.0-beta3 -[2.0.0-beta2]: https://github.com/thephpleague/commonmark/compare/2.0.0-beta1...2.0.0-beta2 -[2.0.0-beta1]: https://github.com/thephpleague/commonmark/compare/1.6...2.0.0-beta1 diff --git a/docker/streamline-src/vendor/league/commonmark/README.md b/docker/streamline-src/vendor/league/commonmark/README.md deleted file mode 100644 index 1cb85607..00000000 --- a/docker/streamline-src/vendor/league/commonmark/README.md +++ /dev/null @@ -1,223 +0,0 @@ -# league/commonmark - -[![Latest Version](https://img.shields.io/packagist/v/league/commonmark.svg?style=flat-square)](https://packagist.org/packages/league/commonmark) -[![Total Downloads](https://img.shields.io/packagist/dt/league/commonmark.svg?style=flat-square)](https://packagist.org/packages/league/commonmark) -[![Software License](https://img.shields.io/badge/License-BSD--3-brightgreen.svg?style=flat-square)](LICENSE) -[![Build Status](https://img.shields.io/github/actions/workflow/status/thephpleague/commonmark/tests.yml?branch=main&style=flat-square)](https://github.com/thephpleague/commonmark/actions?query=workflow%3ATests+branch%3Amain) -[![Coverage Status](https://img.shields.io/scrutinizer/coverage/g/thephpleague/commonmark.svg?style=flat-square)](https://scrutinizer-ci.com/g/thephpleague/commonmark/code-structure) -[![Quality Score](https://img.shields.io/scrutinizer/g/thephpleague/commonmark.svg?style=flat-square)](https://scrutinizer-ci.com/g/thephpleague/commonmark) -[![Psalm Type Coverage](https://shepherd.dev/github/thephpleague/commonmark/coverage.svg)](https://shepherd.dev/github/thephpleague/commonmark) -[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/126/badge)](https://bestpractices.coreinfrastructure.org/projects/126) -[![Sponsor development of this project](https://img.shields.io/badge/sponsor%20this%20package-%E2%9D%A4-ff69b4.svg?style=flat-square)](https://www.colinodell.com/sponsor) - -![league/commonmark](commonmark-banner.png) - -**league/commonmark** is a highly-extensible PHP Markdown parser created by [Colin O'Dell][@colinodell] which supports the full [CommonMark] spec and [GitHub-Flavored Markdown]. It is based on the [CommonMark JS reference implementation][commonmark.js] by [John MacFarlane] \([@jgm]\). - -## 📦 Installation & Basic Usage - -This project requires PHP 7.4 or higher with the `mbstring` extension. To install it via [Composer] simply run: - -``` bash -$ composer require league/commonmark -``` - -The `CommonMarkConverter` class provides a simple wrapper for converting CommonMark to HTML: - -```php -use League\CommonMark\CommonMarkConverter; - -$converter = new CommonMarkConverter([ - 'html_input' => 'strip', - 'allow_unsafe_links' => false, -]); - -echo $converter->convert('# Hello World!'); - -//

    Hello World!

    -``` - -Or if you want GitHub-Flavored Markdown, use the `GithubFlavoredMarkdownConverter` class instead: - -```php -use League\CommonMark\GithubFlavoredMarkdownConverter; - -$converter = new GithubFlavoredMarkdownConverter([ - 'html_input' => 'strip', - 'allow_unsafe_links' => false, -]); - -echo $converter->convert('# Hello World!'); - -//

    Hello World!

    -``` - -Please note that only UTF-8 and ASCII encodings are supported. If your Markdown uses a different encoding please convert it to UTF-8 before running it through this library. - -> [!CAUTION] -> If you will be parsing untrusted input from users, please consider setting the `html_input` and `allow_unsafe_links` options per the example above. See for more details. If you also do choose to allow raw HTML input from untrusted users, consider using a library (like [HTML Purifier](https://github.com/ezyang/htmlpurifier)) to provide additional HTML filtering. - -## 📓 Documentation - -Full documentation on advanced usage, configuration, and customization can be found at [commonmark.thephpleague.com][docs]. - -## ⏫ Upgrading - -Information on how to upgrade to newer versions of this library can be found at . - -## 💻 GitHub-Flavored Markdown - -The `GithubFlavoredMarkdownConverter` shown earlier is a drop-in replacement for the `CommonMarkConverter` which adds additional features found in the GFM spec: - - - Autolinks - - Disallowed raw HTML - - Strikethrough - - Tables - - Task Lists - -See the [Extensions documentation](https://commonmark.thephpleague.com/customization/extensions/) for more details on how to include only certain GFM features if you don't want them all. - -## 🗃️ Related Packages - -### Integrations - -- [CakePHP 3](https://github.com/gourmet/common-mark) -- [Drupal](https://www.drupal.org/project/markdown) -- [Laravel 4+](https://github.com/GrahamCampbell/Laravel-Markdown) -- [Sculpin](https://github.com/bcremer/sculpin-commonmark-bundle) -- [Symfony 2 & 3](https://github.com/webuni/commonmark-bundle) -- [Symfony 4](https://github.com/avensome/commonmark-bundle) -- [Twig Markdown extension](https://github.com/twigphp/markdown-extension) -- [Twig filter and tag](https://github.com/aptoma/twig-markdown) -- [Laravel CommonMark Blog](https://github.com/spekulatius/laravel-commonmark-blog) - -### Included Extensions - -See [our extension documentation](https://commonmark.thephpleague.com/extensions/overview) for a full list of extensions bundled with this library. - -### Community Extensions - -Custom parsers/renderers can be bundled into extensions which extend CommonMark. Here are some that you may find interesting: - - - [Emoji extension](https://github.com/ElGigi/CommonMarkEmoji) - UTF-8 emoji extension with Github tag. - - [Sup Sub extensions](https://github.com/OWS/commonmark-sup-sub-extensions) - Adds support of superscript and subscript (`` and `` HTML tags) - - [YouTube iframe extension](https://github.com/zoonru/commonmark-ext-youtube-iframe) - Replaces youtube link with iframe. - - [Lazy Image extension](https://github.com/simonvomeyser/commonmark-ext-lazy-image) - Adds various options for lazy loading of images. - - [Marker Extension](https://github.com/noah1400/commonmark-marker-extension) - Adds support of highlighted text (`` HTML tag) - -Others can be found on [Packagist under the `commonmark-extension` package type](https://packagist.org/packages/league/commonmark?type=commonmark-extension). - -If you build your own, feel free to submit a PR to add it to this list! - -### Others - -Check out the other cool things people are doing with `league/commonmark`: - -## 🏷️ Versioning - -[SemVer](http://semver.org/) is followed closely. Minor and patch releases should not introduce breaking changes to the codebase; however, they might change the resulting AST or HTML output of parsed Markdown (due to bug fixes, spec changes, etc.) As a result, you might get slightly different HTML, but any custom code built onto this library should still function correctly. - -Any classes or methods marked `@internal` are not intended for use outside of this library and are subject to breaking changes at any time, so please avoid using them. - -## 🛠️ Maintenance & Support - -When a new **minor** version (e.g. `2.0` -> `2.1`) is released, the previous one (`2.0`) will continue to receive security and critical bug fixes for *at least* 3 months. - -When a new **major** version is released (e.g. `1.6` -> `2.0`), the previous one (`1.6`) will receive critical bug fixes for *at least* 3 months and security updates for 6 months after that new release comes out. - -(This policy may change in the future and exceptions may be made on a case-by-case basis.) - -**Professional support, including notification of new releases and security updates, is available through a [Tidelift Subscription](https://tidelift.com/subscription/pkg/packagist-league-commonmark?utm_source=packagist-league-commonmark&utm_medium=referral&utm_campaign=readme).** - -## 👷‍♀️ Contributing - -To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure with us. - -If you encounter a bug in the spec, please report it to the [CommonMark] project. Any resulting fix will eventually be implemented in this project as well. - -Contributions to this library are **welcome**, especially ones that: - - * Improve usability or flexibility without compromising our ability to adhere to the [CommonMark spec] - * Mirror fixes made to the [reference implementation][commonmark.js] - * Optimize performance - * Fix issues with adhering to the [CommonMark spec] - -Major refactoring to core parsing logic should be avoided if possible so that we can easily follow updates made to [the reference implementation][commonmark.js]. That being said, we will absolutely consider changes which don't deviate too far from the reference spec or which are favored by other popular CommonMark implementations. - -Please see [CONTRIBUTING](https://github.com/thephpleague/commonmark/blob/main/.github/CONTRIBUTING.md) for additional details. - -## 🧪 Testing - -``` bash -$ composer test -``` - -This will also test league/commonmark against the latest supported spec. - -## 🚀 Performance Benchmarks - -You can compare the performance of **league/commonmark** to other popular parsers by running the included benchmark tool: - -``` bash -$ ./tests/benchmark/benchmark.php -``` - -## 👥 Credits & Acknowledgements - -This code was originally based on the [CommonMark JS reference implementation][commonmark.js] which is written, maintained, and copyrighted by [John MacFarlane]. This project simply wouldn't exist without his work. - -And a huge thanks to all of our amazing contributors: - -
    - - - -### Sponsors - -We'd also like to extend our sincere thanks the following sponsors who support ongoing development of this project: - - - [Tidelift](https://tidelift.com/subscription/pkg/packagist-league-commonmark?utm_source=packagist-league-commonmark&utm_medium=referral&utm_campaign=readme) for offering support to both the maintainers and end-users through their [professional support](https://tidelift.com/subscription/pkg/packagist-league-commonmark?utm_source=packagist-league-commonmark&utm_medium=referral&utm_campaign=readme) program - - [Blackfire](https://www.blackfire.io/) for providing an Open-Source Profiler subscription - - [JetBrains](https://www.jetbrains.com/) for supporting this project with complimentary [PhpStorm](https://www.jetbrains.com/phpstorm/) licenses - -Are you interested in sponsoring development of this project? See for a list of ways to contribute. - -## 📄 License - -**league/commonmark** is licensed under the BSD-3 license. See the [`LICENSE`](LICENSE) file for more details. - -## 🏛️ Governance - -This project is primarily maintained by [Colin O'Dell][@colinodell]. Members of the [PHP League] Leadership Team may occasionally assist with some of these duties. - -## 🗺️ Who Uses It? - -This project is used by [Drupal](https://www.drupal.org/project/markdown), [Laravel Framework](https://laravel.com/), [Cachet](https://cachethq.io/), [Firefly III](https://firefly-iii.org/), [Neos](https://www.neos.io/), [Daux.io](https://daux.io/), and [more](https://packagist.org/packages/league/commonmark/dependents)! - ---- - -
    - - Get professional support for league/commonmark with a Tidelift subscription - -
    - - Tidelift helps make open source sustainable for maintainers while giving companies
    assurances about security, maintenance, and licensing for their dependencies. -
    -
    - -[CommonMark]: http://commonmark.org/ -[CommonMark spec]: http://spec.commonmark.org/ -[commonmark.js]: https://github.com/jgm/commonmark.js -[GitHub-Flavored Markdown]: https://github.github.com/gfm/ -[John MacFarlane]: http://johnmacfarlane.net -[docs]: https://commonmark.thephpleague.com/ -[docs-examples]: https://commonmark.thephpleague.com/customization/overview/#examples -[docs-example-twitter]: https://commonmark.thephpleague.com/customization/inline-parsing#example-1---twitter-handles -[docs-example-smilies]: https://commonmark.thephpleague.com/customization/inline-parsing#example-2---emoticons -[All Contributors]: https://github.com/thephpleague/commonmark/contributors -[@colinodell]: https://www.twitter.com/colinodell -[@jgm]: https://github.com/jgm -[jgm/stmd]: https://github.com/jgm/stmd -[Composer]: https://getcomposer.org/ -[PHP League]: https://thephpleague.com diff --git a/docker/streamline-src/vendor/league/commonmark/composer.json b/docker/streamline-src/vendor/league/commonmark/composer.json deleted file mode 100644 index d20563b9..00000000 --- a/docker/streamline-src/vendor/league/commonmark/composer.json +++ /dev/null @@ -1,128 +0,0 @@ -{ - "name": "league/commonmark", - "type": "library", - "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)", - "keywords": ["markdown","parser","commonmark","gfm","github","flavored","github-flavored","md"], - "homepage": "https://commonmark.thephpleague.com", - "license": "BSD-3-Clause", - "authors": [ - { - "name": "Colin O'Dell", - "email": "colinodell@gmail.com", - "homepage": "https://www.colinodell.com", - "role": "Lead Developer" - } - ], - "support": { - "docs": "https://commonmark.thephpleague.com/", - "forum": "https://github.com/thephpleague/commonmark/discussions", - "issues": "https://github.com/thephpleague/commonmark/issues", - "rss": "https://github.com/thephpleague/commonmark/releases.atom", - "source": "https://github.com/thephpleague/commonmark" - }, - "require": { - "php": "^7.4 || ^8.0", - "ext-mbstring": "*", - "league/config": "^1.1.1", - "psr/event-dispatcher": "^1.0", - "symfony/deprecation-contracts": "^2.1 || ^3.0", - "symfony/polyfill-php80": "^1.16" - }, - "require-dev": { - "ext-json": "*", - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.31.1", - "commonmark/commonmark.js": "0.31.1", - "composer/package-versions-deprecated": "^1.8", - "embed/embed": "^4.4", - "erusev/parsedown": "^1.0", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4 || ^2.0", - "nyholm/psr7": "^1.5", - "phpstan/phpstan": "^1.8.2", - "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3 | ^6.0 | ^7.0", - "symfony/process": "^5.4 | ^6.0 | ^7.0", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 | ^7.0", - "unleashedtech/php-coding-standard": "^3.1.1", - "vimeo/psalm": "^4.24.0 || ^5.0.0" - }, - "minimum-stability": "beta", - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "repositories": [ - { - "type": "package", - "package": { - "name": "commonmark/commonmark.js", - "version": "0.31.1", - "dist": { - "url": "https://github.com/commonmark/commonmark.js/archive/0.31.1.zip", - "type": "zip" - } - } - }, - { - "type": "package", - "package": { - "name": "commonmark/cmark", - "version": "0.31.1", - "dist": { - "url": "https://github.com/commonmark/cmark/archive/0.31.1.zip", - "type": "zip" - } - } - }, - { - "type": "package", - "package": { - "name": "github/gfm", - "version": "0.29.0", - "dist": { - "url": "https://github.com/github/cmark-gfm/archive/0.29.0.gfm.13.zip", - "type": "zip" - } - } - } - ], - "autoload": { - "psr-4": { - "League\\CommonMark\\": "src" - } - }, - "autoload-dev": { - "psr-4": { - "League\\CommonMark\\Tests\\Unit\\": "tests/unit", - "League\\CommonMark\\Tests\\Functional\\": "tests/functional", - "League\\CommonMark\\Tests\\PHPStan\\": "tests/phpstan" - } - }, - "scripts": { - "phpcs": "phpcs", - "phpstan": "phpstan analyse", - "phpunit": "phpunit --no-coverage", - "psalm": "psalm --stats", - "pathological": "tests/pathological/test.php", - "test": [ - "@phpcs", - "@phpstan", - "@psalm", - "@phpunit", - "@pathological" - ] - }, - "extra": { - "branch-alias": { - "dev-main": "2.7-dev" - } - }, - "config": { - "allow-plugins": { - "composer/package-versions-deprecated": true, - "dealerdirect/phpcodesniffer-composer-installer": true - }, - "sort-packages": true - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Delimiter/DelimiterInterface.php b/docker/streamline-src/vendor/league/commonmark/src/Delimiter/DelimiterInterface.php deleted file mode 100644 index 0cefba7e..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Delimiter/DelimiterInterface.php +++ /dev/null @@ -1,56 +0,0 @@ - - * - * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) - * - (c) John MacFarlane - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Delimiter; - -use League\CommonMark\Node\Inline\AbstractStringContainer; - -interface DelimiterInterface -{ - public function canClose(): bool; - - public function canOpen(): bool; - - /** - * @deprecated This method is no longer used internally and will be removed in 3.0 - */ - public function isActive(): bool; - - /** - * @deprecated This method is no longer used internally and will be removed in 3.0 - */ - public function setActive(bool $active): void; - - public function getChar(): string; - - public function getIndex(): ?int; - - public function getNext(): ?DelimiterInterface; - - public function setNext(?DelimiterInterface $next): void; - - public function getLength(): int; - - public function setLength(int $length): void; - - public function getOriginalLength(): int; - - public function getInlineNode(): AbstractStringContainer; - - public function getPrevious(): ?DelimiterInterface; - - public function setPrevious(?DelimiterInterface $previous): void; -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Delimiter/DelimiterParser.php b/docker/streamline-src/vendor/league/commonmark/src/Delimiter/DelimiterParser.php deleted file mode 100644 index fdfe093c..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Delimiter/DelimiterParser.php +++ /dev/null @@ -1,106 +0,0 @@ -collection = $collection; - } - - public function getMatchDefinition(): InlineParserMatch - { - return InlineParserMatch::oneOf(...$this->collection->getDelimiterCharacters()); - } - - public function parse(InlineParserContext $inlineContext): bool - { - $character = $inlineContext->getFullMatch(); - $numDelims = 0; - $cursor = $inlineContext->getCursor(); - $processor = $this->collection->getDelimiterProcessor($character); - - \assert($processor !== null); // Delimiter processor should never be null here - - $charBefore = $cursor->peek(-1); - if ($charBefore === null) { - $charBefore = "\n"; - } - - while ($cursor->peek($numDelims) === $character) { - ++$numDelims; - } - - if ($numDelims < $processor->getMinLength()) { - return false; - } - - $cursor->advanceBy($numDelims); - - $charAfter = $cursor->getCurrentCharacter(); - if ($charAfter === null) { - $charAfter = "\n"; - } - - [$canOpen, $canClose] = self::determineCanOpenOrClose($charBefore, $charAfter, $character, $processor); - - if (! ($canOpen || $canClose)) { - $inlineContext->getContainer()->appendChild(new Text(\str_repeat($character, $numDelims))); - - return true; - } - - $node = new Text(\str_repeat($character, $numDelims), [ - 'delim' => true, - ]); - $inlineContext->getContainer()->appendChild($node); - - // Add entry to stack to this opener - $delimiter = new Delimiter($character, $numDelims, $node, $canOpen, $canClose, $inlineContext->getCursor()->getPosition()); - $inlineContext->getDelimiterStack()->push($delimiter); - - return true; - } - - /** - * @return bool[] - */ - private static function determineCanOpenOrClose(string $charBefore, string $charAfter, string $character, DelimiterProcessorInterface $delimiterProcessor): array - { - $afterIsWhitespace = \preg_match(RegexHelper::REGEX_UNICODE_WHITESPACE_CHAR, $charAfter); - $afterIsPunctuation = \preg_match(RegexHelper::REGEX_PUNCTUATION, $charAfter); - $beforeIsWhitespace = \preg_match(RegexHelper::REGEX_UNICODE_WHITESPACE_CHAR, $charBefore); - $beforeIsPunctuation = \preg_match(RegexHelper::REGEX_PUNCTUATION, $charBefore); - - $leftFlanking = ! $afterIsWhitespace && (! $afterIsPunctuation || $beforeIsWhitespace || $beforeIsPunctuation); - $rightFlanking = ! $beforeIsWhitespace && (! $beforeIsPunctuation || $afterIsWhitespace || $afterIsPunctuation); - - if ($character === '_') { - $canOpen = $leftFlanking && (! $rightFlanking || $beforeIsPunctuation); - $canClose = $rightFlanking && (! $leftFlanking || $afterIsPunctuation); - } else { - $canOpen = $leftFlanking && $character === $delimiterProcessor->getOpeningCharacter(); - $canClose = $rightFlanking && $character === $delimiterProcessor->getClosingCharacter(); - } - - return [$canOpen, $canClose]; - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Delimiter/DelimiterStack.php b/docker/streamline-src/vendor/league/commonmark/src/Delimiter/DelimiterStack.php deleted file mode 100644 index cf2a41e5..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Delimiter/DelimiterStack.php +++ /dev/null @@ -1,396 +0,0 @@ - - * - * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) - * - (c) John MacFarlane - * - * Additional emphasis processing code based on commonmark-java (https://github.com/atlassian/commonmark-java) - * - (c) Atlassian Pty Ltd - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Delimiter; - -use League\CommonMark\Delimiter\Processor\CacheableDelimiterProcessorInterface; -use League\CommonMark\Delimiter\Processor\DelimiterProcessorCollection; -use League\CommonMark\Node\Inline\AdjacentTextMerger; -use League\CommonMark\Node\Node; - -final class DelimiterStack -{ - /** @psalm-readonly-allow-private-mutation */ - private ?DelimiterInterface $top = null; - - /** @psalm-readonly-allow-private-mutation */ - private ?Bracket $brackets = null; - - /** - * @deprecated This property will be removed in 3.0 once all delimiters MUST have an index/position - * - * @var \SplObjectStorage|\WeakMap - */ - private $missingIndexCache; - - - private int $remainingDelimiters = 0; - - public function __construct(int $maximumStackSize = PHP_INT_MAX) - { - $this->remainingDelimiters = $maximumStackSize; - - if (\PHP_VERSION_ID >= 80000) { - /** @psalm-suppress PropertyTypeCoercion */ - $this->missingIndexCache = new \WeakMap(); // @phpstan-ignore-line - } else { - $this->missingIndexCache = new \SplObjectStorage(); // @phpstan-ignore-line - } - } - - public function push(DelimiterInterface $newDelimiter): void - { - if ($this->remainingDelimiters-- <= 0) { - return; - } - - $newDelimiter->setPrevious($this->top); - - if ($this->top !== null) { - $this->top->setNext($newDelimiter); - } - - $this->top = $newDelimiter; - } - - /** - * @internal - */ - public function addBracket(Node $node, int $index, bool $image): void - { - if ($this->brackets !== null) { - $this->brackets->setHasNext(true); - } - - $this->brackets = new Bracket($node, $this->brackets, $index, $image); - } - - /** - * @psalm-immutable - */ - public function getLastBracket(): ?Bracket - { - return $this->brackets; - } - - private function findEarliest(int $stackBottom): ?DelimiterInterface - { - // Move back to first relevant delim. - $delimiter = $this->top; - $lastChecked = null; - - while ($delimiter !== null && self::getIndex($delimiter) > $stackBottom) { - $lastChecked = $delimiter; - $delimiter = $delimiter->getPrevious(); - } - - return $lastChecked; - } - - /** - * @internal - */ - public function removeBracket(): void - { - if ($this->brackets === null) { - return; - } - - $this->brackets = $this->brackets->getPrevious(); - - if ($this->brackets !== null) { - $this->brackets->setHasNext(false); - } - } - - public function removeDelimiter(DelimiterInterface $delimiter): void - { - if ($delimiter->getPrevious() !== null) { - /** @psalm-suppress PossiblyNullReference */ - $delimiter->getPrevious()->setNext($delimiter->getNext()); - } - - if ($delimiter->getNext() === null) { - // top of stack - $this->top = $delimiter->getPrevious(); - } else { - /** @psalm-suppress PossiblyNullReference */ - $delimiter->getNext()->setPrevious($delimiter->getPrevious()); - } - - // Nullify all references from the removed delimiter to other delimiters. - // All references to this particular delimiter in the linked list should be gone, - // but it's possible we're still hanging on to other references to things that - // have been (or soon will be) removed, which may interfere with efficient - // garbage collection by the PHP runtime. - // Explicitly releasing these references should help to avoid possible - // segfaults like in https://bugs.php.net/bug.php?id=68606. - $delimiter->setPrevious(null); - $delimiter->setNext(null); - - // TODO: Remove the line below once PHP 7.4 support is dropped, as WeakMap won't hold onto the reference, making this unnecessary - unset($this->missingIndexCache[$delimiter]); - } - - private function removeDelimiterAndNode(DelimiterInterface $delimiter): void - { - $delimiter->getInlineNode()->detach(); - $this->removeDelimiter($delimiter); - } - - private function removeDelimitersBetween(DelimiterInterface $opener, DelimiterInterface $closer): void - { - $delimiter = $closer->getPrevious(); - $openerPosition = self::getIndex($opener); - while ($delimiter !== null && self::getIndex($delimiter) > $openerPosition) { - $previous = $delimiter->getPrevious(); - $this->removeDelimiter($delimiter); - $delimiter = $previous; - } - } - - /** - * @param DelimiterInterface|int|null $stackBottom - */ - public function removeAll($stackBottom = null): void - { - $stackBottomPosition = \is_int($stackBottom) ? $stackBottom : self::getIndex($stackBottom); - - while ($this->top && $this->getIndex($this->top) > $stackBottomPosition) { - $this->removeDelimiter($this->top); - } - } - - /** - * @deprecated This method is no longer used internally and will be removed in 3.0 - */ - public function removeEarlierMatches(string $character): void - { - $opener = $this->top; - while ($opener !== null) { - if ($opener->getChar() === $character) { - $opener->setActive(false); - } - - $opener = $opener->getPrevious(); - } - } - - /** - * @internal - */ - public function deactivateLinkOpeners(): void - { - $opener = $this->brackets; - while ($opener !== null && $opener->isActive()) { - $opener->setActive(false); - $opener = $opener->getPrevious(); - } - } - - /** - * @deprecated This method is no longer used internally and will be removed in 3.0 - * - * @param string|string[] $characters - */ - public function searchByCharacter($characters): ?DelimiterInterface - { - if (! \is_array($characters)) { - $characters = [$characters]; - } - - $opener = $this->top; - while ($opener !== null) { - if (\in_array($opener->getChar(), $characters, true)) { - break; - } - - $opener = $opener->getPrevious(); - } - - return $opener; - } - - /** - * @param DelimiterInterface|int|null $stackBottom - * - * @todo change $stackBottom to an int in 3.0 - */ - public function processDelimiters($stackBottom, DelimiterProcessorCollection $processors): void - { - /** @var array $openersBottom */ - $openersBottom = []; - - $stackBottomPosition = \is_int($stackBottom) ? $stackBottom : self::getIndex($stackBottom); - - // Find first closer above stackBottom - $closer = $this->findEarliest($stackBottomPosition); - - // Move forward, looking for closers, and handling each - while ($closer !== null) { - $closingDelimiterChar = $closer->getChar(); - - $delimiterProcessor = $processors->getDelimiterProcessor($closingDelimiterChar); - if (! $closer->canClose() || $delimiterProcessor === null) { - $closer = $closer->getNext(); - continue; - } - - if ($delimiterProcessor instanceof CacheableDelimiterProcessorInterface) { - $openersBottomCacheKey = $delimiterProcessor->getCacheKey($closer); - } else { - $openersBottomCacheKey = $closingDelimiterChar; - } - - $openingDelimiterChar = $delimiterProcessor->getOpeningCharacter(); - - $useDelims = 0; - $openerFound = false; - $potentialOpenerFound = false; - $opener = $closer->getPrevious(); - while ($opener !== null && ($openerPosition = self::getIndex($opener)) > $stackBottomPosition && $openerPosition >= ($openersBottom[$openersBottomCacheKey] ?? 0)) { - if ($opener->canOpen() && $opener->getChar() === $openingDelimiterChar) { - $potentialOpenerFound = true; - $useDelims = $delimiterProcessor->getDelimiterUse($opener, $closer); - if ($useDelims > 0) { - $openerFound = true; - break; - } - } - - $opener = $opener->getPrevious(); - } - - if (! $openerFound) { - // Set lower bound for future searches - // TODO: Remove this conditional check in 3.0. It only exists to prevent behavioral BC breaks in 2.x. - if ($potentialOpenerFound === false || $delimiterProcessor instanceof CacheableDelimiterProcessorInterface) { - $openersBottom[$openersBottomCacheKey] = self::getIndex($closer); - } - - if (! $potentialOpenerFound && ! $closer->canOpen()) { - // We can remove a closer that can't be an opener, - // once we've seen there's no matching opener. - $next = $closer->getNext(); - $this->removeDelimiter($closer); - $closer = $next; - } else { - $closer = $closer->getNext(); - } - - continue; - } - - \assert($opener !== null); - - $openerNode = $opener->getInlineNode(); - $closerNode = $closer->getInlineNode(); - - // Remove number of used delimiters from stack and inline nodes. - $opener->setLength($opener->getLength() - $useDelims); - $closer->setLength($closer->getLength() - $useDelims); - - $openerNode->setLiteral(\substr($openerNode->getLiteral(), 0, -$useDelims)); - $closerNode->setLiteral(\substr($closerNode->getLiteral(), 0, -$useDelims)); - - $this->removeDelimitersBetween($opener, $closer); - // The delimiter processor can re-parent the nodes between opener and closer, - // so make sure they're contiguous already. Exclusive because we want to keep opener/closer themselves. - AdjacentTextMerger::mergeTextNodesBetweenExclusive($openerNode, $closerNode); - $delimiterProcessor->process($openerNode, $closerNode, $useDelims); - - // No delimiter characters left to process, so we can remove delimiter and the now empty node. - if ($opener->getLength() === 0) { - $this->removeDelimiterAndNode($opener); - } - - // phpcs:disable SlevomatCodingStandard.ControlStructures.EarlyExit.EarlyExitNotUsed - if ($closer->getLength() === 0) { - $next = $closer->getNext(); - $this->removeDelimiterAndNode($closer); - $closer = $next; - } - } - - // Remove all delimiters - $this->removeAll($stackBottomPosition); - } - - /** - * @internal - */ - public function __destruct() - { - while ($this->top) { - $this->removeDelimiter($this->top); - } - - while ($this->brackets) { - $this->removeBracket(); - } - } - - /** - * @deprecated This method will be dropped in 3.0 once all delimiters MUST have an index/position - */ - private function getIndex(?DelimiterInterface $delimiter): int - { - if ($delimiter === null) { - return -1; - } - - if (($index = $delimiter->getIndex()) !== null) { - return $index; - } - - if (isset($this->missingIndexCache[$delimiter])) { - return $this->missingIndexCache[$delimiter]; - } - - $prev = $delimiter->getPrevious(); - $next = $delimiter->getNext(); - - $i = 0; - do { - $i++; - if ($prev === null) { - break; - } - - if ($prev->getIndex() !== null) { - return $this->missingIndexCache[$delimiter] = $prev->getIndex() + $i; - } - } while ($prev = $prev->getPrevious()); - - $j = 0; - do { - $j++; - if ($next === null) { - break; - } - - if ($next->getIndex() !== null) { - return $this->missingIndexCache[$delimiter] = $next->getIndex() - $j; - } - } while ($next = $next->getNext()); - - // No index was defined on this delimiter, and none could be guesstimated based on the stack. - return $this->missingIndexCache[$delimiter] = $this->getIndex($delimiter->getPrevious()) + 1; - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Delimiter/Processor/DelimiterProcessorInterface.php b/docker/streamline-src/vendor/league/commonmark/src/Delimiter/Processor/DelimiterProcessorInterface.php deleted file mode 100644 index 5e88ddc7..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Delimiter/Processor/DelimiterProcessorInterface.php +++ /dev/null @@ -1,81 +0,0 @@ - - * - * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) - * - (c) John MacFarlane - * - * Additional emphasis processing code based on commonmark-java (https://github.com/atlassian/commonmark-java) - * - (c) Atlassian Pty Ltd - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Delimiter\Processor; - -use League\CommonMark\Delimiter\DelimiterInterface; -use League\CommonMark\Node\Inline\AbstractStringContainer; - -/** - * Interface for a delimiter processor - */ -interface DelimiterProcessorInterface -{ - /** - * Returns the character that marks the beginning of a delimited node. - * - * This must not clash with any other processors being added to the environment. - */ - public function getOpeningCharacter(): string; - - /** - * Returns the character that marks the ending of a delimited node. - * - * This must not clash with any other processors being added to the environment. - * - * Note that for a symmetric delimiter such as "*", this is the same as the opening. - */ - public function getClosingCharacter(): string; - - /** - * Minimum number of delimiter characters that are needed to active this. - * - * Must be at least 1. - */ - public function getMinLength(): int; - - /** - * Determine how many (if any) of the delimiter characters should be used. - * - * This allows implementations to decide how many characters to be used - * based on the properties of the delimiter runs. An implementation can also - * return 0 when it doesn't want to allow this particular combination of - * delimiter runs. - * - * IMPORTANT: Unless this method returns the same hard-coded value in all cases, - * you MUST implement the CacheableDelimiterProcessorInterface interface instead. - * - * @param DelimiterInterface $opener The opening delimiter run - * @param DelimiterInterface $closer The closing delimiter run - */ - public function getDelimiterUse(DelimiterInterface $opener, DelimiterInterface $closer): int; - - /** - * Process the matched delimiters, e.g. by wrapping the nodes between opener - * and closer in a new node, or appending a new node after the opener. - * - * Note that removal of the delimiter from the delimiter nodes and detaching - * them is done by the caller. - * - * @param AbstractStringContainer $opener The node that contained the opening delimiter - * @param AbstractStringContainer $closer The node that contained the closing delimiter - * @param int $delimiterUse The number of delimiters that were used - */ - public function process(AbstractStringContainer $opener, AbstractStringContainer $closer, int $delimiterUse): void; -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Environment/Environment.php b/docker/streamline-src/vendor/league/commonmark/src/Environment/Environment.php deleted file mode 100644 index a8112967..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Environment/Environment.php +++ /dev/null @@ -1,448 +0,0 @@ - - * - * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) - * - (c) John MacFarlane - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Environment; - -use League\CommonMark\Delimiter\DelimiterParser; -use League\CommonMark\Delimiter\Processor\DelimiterProcessorCollection; -use League\CommonMark\Delimiter\Processor\DelimiterProcessorInterface; -use League\CommonMark\Event\DocumentParsedEvent; -use League\CommonMark\Event\ListenerData; -use League\CommonMark\Exception\AlreadyInitializedException; -use League\CommonMark\Extension\CommonMark\CommonMarkCoreExtension; -use League\CommonMark\Extension\ConfigurableExtensionInterface; -use League\CommonMark\Extension\ExtensionInterface; -use League\CommonMark\Extension\GithubFlavoredMarkdownExtension; -use League\CommonMark\Normalizer\SlugNormalizer; -use League\CommonMark\Normalizer\TextNormalizerInterface; -use League\CommonMark\Normalizer\UniqueSlugNormalizer; -use League\CommonMark\Normalizer\UniqueSlugNormalizerInterface; -use League\CommonMark\Parser\Block\BlockStartParserInterface; -use League\CommonMark\Parser\Block\SkipLinesStartingWithLettersParser; -use League\CommonMark\Parser\Inline\InlineParserInterface; -use League\CommonMark\Renderer\NodeRendererInterface; -use League\CommonMark\Util\HtmlFilter; -use League\CommonMark\Util\PrioritizedList; -use League\Config\Configuration; -use League\Config\ConfigurationAwareInterface; -use League\Config\ConfigurationInterface; -use Nette\Schema\Expect; -use Psr\EventDispatcher\EventDispatcherInterface; -use Psr\EventDispatcher\ListenerProviderInterface; -use Psr\EventDispatcher\StoppableEventInterface; - -final class Environment implements EnvironmentInterface, EnvironmentBuilderInterface, ListenerProviderInterface -{ - /** - * @var ExtensionInterface[] - * - * @psalm-readonly-allow-private-mutation - */ - private array $extensions = []; - - /** - * @var ExtensionInterface[] - * - * @psalm-readonly-allow-private-mutation - */ - private array $uninitializedExtensions = []; - - /** @psalm-readonly-allow-private-mutation */ - private bool $extensionsInitialized = false; - - /** - * @var PrioritizedList - * - * @psalm-readonly - */ - private PrioritizedList $blockStartParsers; - - /** - * @var PrioritizedList - * - * @psalm-readonly - */ - private PrioritizedList $inlineParsers; - - /** @psalm-readonly */ - private DelimiterProcessorCollection $delimiterProcessors; - - /** - * @var array> - * - * @psalm-readonly-allow-private-mutation - */ - private array $renderersByClass = []; - - /** - * @var PrioritizedList - * - * @psalm-readonly-allow-private-mutation - */ - private PrioritizedList $listenerData; - - private ?EventDispatcherInterface $eventDispatcher = null; - - /** @psalm-readonly */ - private Configuration $config; - - private ?TextNormalizerInterface $slugNormalizer = null; - - /** - * @param array $config - */ - public function __construct(array $config = []) - { - $this->config = self::createDefaultConfiguration(); - $this->config->merge($config); - - $this->blockStartParsers = new PrioritizedList(); - $this->inlineParsers = new PrioritizedList(); - $this->listenerData = new PrioritizedList(); - $this->delimiterProcessors = new DelimiterProcessorCollection(); - - // Performance optimization: always include a block "parser" that aborts parsing if a line starts with a letter - // and is therefore unlikely to match any lines as a block start. - $this->addBlockStartParser(new SkipLinesStartingWithLettersParser(), 249); - } - - public function getConfiguration(): ConfigurationInterface - { - return $this->config->reader(); - } - - /** - * @deprecated Environment::mergeConfig() is deprecated since league/commonmark v2.0 and will be removed in v3.0. Configuration should be set when instantiating the environment instead. - * - * @param array $config - */ - public function mergeConfig(array $config): void - { - @\trigger_error('Environment::mergeConfig() is deprecated since league/commonmark v2.0 and will be removed in v3.0. Configuration should be set when instantiating the environment instead.', \E_USER_DEPRECATED); - - $this->assertUninitialized('Failed to modify configuration.'); - - $this->config->merge($config); - } - - public function addBlockStartParser(BlockStartParserInterface $parser, int $priority = 0): EnvironmentBuilderInterface - { - $this->assertUninitialized('Failed to add block start parser.'); - - $this->blockStartParsers->add($parser, $priority); - $this->injectEnvironmentAndConfigurationIfNeeded($parser); - - return $this; - } - - public function addInlineParser(InlineParserInterface $parser, int $priority = 0): EnvironmentBuilderInterface - { - $this->assertUninitialized('Failed to add inline parser.'); - - $this->inlineParsers->add($parser, $priority); - $this->injectEnvironmentAndConfigurationIfNeeded($parser); - - return $this; - } - - public function addDelimiterProcessor(DelimiterProcessorInterface $processor): EnvironmentBuilderInterface - { - $this->assertUninitialized('Failed to add delimiter processor.'); - $this->delimiterProcessors->add($processor); - $this->injectEnvironmentAndConfigurationIfNeeded($processor); - - return $this; - } - - public function addRenderer(string $nodeClass, NodeRendererInterface $renderer, int $priority = 0): EnvironmentBuilderInterface - { - $this->assertUninitialized('Failed to add renderer.'); - - if (! isset($this->renderersByClass[$nodeClass])) { - $this->renderersByClass[$nodeClass] = new PrioritizedList(); - } - - $this->renderersByClass[$nodeClass]->add($renderer, $priority); - $this->injectEnvironmentAndConfigurationIfNeeded($renderer); - - return $this; - } - - /** - * {@inheritDoc} - */ - public function getBlockStartParsers(): iterable - { - if (! $this->extensionsInitialized) { - $this->initializeExtensions(); - } - - return $this->blockStartParsers->getIterator(); - } - - public function getDelimiterProcessors(): DelimiterProcessorCollection - { - if (! $this->extensionsInitialized) { - $this->initializeExtensions(); - } - - return $this->delimiterProcessors; - } - - /** - * {@inheritDoc} - */ - public function getRenderersForClass(string $nodeClass): iterable - { - if (! $this->extensionsInitialized) { - $this->initializeExtensions(); - } - - // If renderers are defined for this specific class, return them immediately - if (isset($this->renderersByClass[$nodeClass])) { - return $this->renderersByClass[$nodeClass]; - } - - /** @psalm-suppress TypeDoesNotContainType -- Bug: https://github.com/vimeo/psalm/issues/3332 */ - while (\class_exists($parent ??= $nodeClass) && $parent = \get_parent_class($parent)) { - if (! isset($this->renderersByClass[$parent])) { - continue; - } - - // "Cache" this result to avoid future loops - return $this->renderersByClass[$nodeClass] = $this->renderersByClass[$parent]; - } - - return []; - } - - /** - * {@inheritDoc} - */ - public function getExtensions(): iterable - { - return $this->extensions; - } - - /** - * Add a single extension - * - * @return $this - */ - public function addExtension(ExtensionInterface $extension): EnvironmentBuilderInterface - { - $this->assertUninitialized('Failed to add extension.'); - - $this->extensions[] = $extension; - $this->uninitializedExtensions[] = $extension; - - if ($extension instanceof ConfigurableExtensionInterface) { - $extension->configureSchema($this->config); - } - - return $this; - } - - private function initializeExtensions(): void - { - // Initialize the slug normalizer - $this->getSlugNormalizer(); - - // Ask all extensions to register their components - while (\count($this->uninitializedExtensions) > 0) { - foreach ($this->uninitializedExtensions as $i => $extension) { - $extension->register($this); - unset($this->uninitializedExtensions[$i]); - } - } - - $this->extensionsInitialized = true; - - // Create the special delimiter parser if any processors were registered - if ($this->delimiterProcessors->count() > 0) { - $this->inlineParsers->add(new DelimiterParser($this->delimiterProcessors), PHP_INT_MIN); - } - } - - private function injectEnvironmentAndConfigurationIfNeeded(object $object): void - { - if ($object instanceof EnvironmentAwareInterface) { - $object->setEnvironment($this); - } - - if ($object instanceof ConfigurationAwareInterface) { - $object->setConfiguration($this->config->reader()); - } - } - - /** - * @deprecated Instantiate the environment and add the extension yourself - * - * @param array $config - */ - public static function createCommonMarkEnvironment(array $config = []): Environment - { - $environment = new self($config); - $environment->addExtension(new CommonMarkCoreExtension()); - - return $environment; - } - - /** - * @deprecated Instantiate the environment and add the extension yourself - * - * @param array $config - */ - public static function createGFMEnvironment(array $config = []): Environment - { - $environment = new self($config); - $environment->addExtension(new CommonMarkCoreExtension()); - $environment->addExtension(new GithubFlavoredMarkdownExtension()); - - return $environment; - } - - public function addEventListener(string $eventClass, callable $listener, int $priority = 0): EnvironmentBuilderInterface - { - $this->assertUninitialized('Failed to add event listener.'); - - $this->listenerData->add(new ListenerData($eventClass, $listener), $priority); - - if (\is_object($listener)) { - $this->injectEnvironmentAndConfigurationIfNeeded($listener); - } elseif (\is_array($listener) && \is_object($listener[0])) { - $this->injectEnvironmentAndConfigurationIfNeeded($listener[0]); - } - - return $this; - } - - public function dispatch(object $event): object - { - if (! $this->extensionsInitialized) { - $this->initializeExtensions(); - } - - if ($this->eventDispatcher !== null) { - return $this->eventDispatcher->dispatch($event); - } - - foreach ($this->getListenersForEvent($event) as $listener) { - if ($event instanceof StoppableEventInterface && $event->isPropagationStopped()) { - return $event; - } - - $listener($event); - } - - return $event; - } - - public function setEventDispatcher(EventDispatcherInterface $dispatcher): void - { - $this->eventDispatcher = $dispatcher; - } - - /** - * {@inheritDoc} - * - * @return iterable - */ - public function getListenersForEvent(object $event): iterable - { - foreach ($this->listenerData as $listenerData) { - \assert($listenerData instanceof ListenerData); - - /** @psalm-suppress ArgumentTypeCoercion */ - if (! \is_a($event, $listenerData->getEvent())) { - continue; - } - - yield function (object $event) use ($listenerData) { - if (! $this->extensionsInitialized) { - $this->initializeExtensions(); - } - - return \call_user_func($listenerData->getListener(), $event); - }; - } - } - - /** - * @return iterable - */ - public function getInlineParsers(): iterable - { - if (! $this->extensionsInitialized) { - $this->initializeExtensions(); - } - - return $this->inlineParsers->getIterator(); - } - - public function getSlugNormalizer(): TextNormalizerInterface - { - if ($this->slugNormalizer === null) { - $normalizer = $this->config->get('slug_normalizer/instance'); - \assert($normalizer instanceof TextNormalizerInterface); - $this->injectEnvironmentAndConfigurationIfNeeded($normalizer); - - if ($this->config->get('slug_normalizer/unique') !== UniqueSlugNormalizerInterface::DISABLED && ! $normalizer instanceof UniqueSlugNormalizer) { - $normalizer = new UniqueSlugNormalizer($normalizer); - } - - if ($normalizer instanceof UniqueSlugNormalizer) { - if ($this->config->get('slug_normalizer/unique') === UniqueSlugNormalizerInterface::PER_DOCUMENT) { - $this->addEventListener(DocumentParsedEvent::class, [$normalizer, 'clearHistory'], -1000); - } - } - - $this->slugNormalizer = $normalizer; - } - - return $this->slugNormalizer; - } - - /** - * @throws AlreadyInitializedException - */ - private function assertUninitialized(string $message): void - { - if ($this->extensionsInitialized) { - throw new AlreadyInitializedException($message . ' Extensions have already been initialized.'); - } - } - - public static function createDefaultConfiguration(): Configuration - { - return new Configuration([ - 'html_input' => Expect::anyOf(HtmlFilter::STRIP, HtmlFilter::ALLOW, HtmlFilter::ESCAPE)->default(HtmlFilter::ALLOW), - 'allow_unsafe_links' => Expect::bool(true), - 'max_nesting_level' => Expect::type('int')->default(PHP_INT_MAX), - 'max_delimiters_per_line' => Expect::type('int')->default(PHP_INT_MAX), - 'renderer' => Expect::structure([ - 'block_separator' => Expect::string("\n"), - 'inner_separator' => Expect::string("\n"), - 'soft_break' => Expect::string("\n"), - ]), - 'slug_normalizer' => Expect::structure([ - 'instance' => Expect::type(TextNormalizerInterface::class)->default(new SlugNormalizer()), - 'max_length' => Expect::int()->min(0)->default(255), - 'unique' => Expect::anyOf(UniqueSlugNormalizerInterface::DISABLED, UniqueSlugNormalizerInterface::PER_ENVIRONMENT, UniqueSlugNormalizerInterface::PER_DOCUMENT)->default(UniqueSlugNormalizerInterface::PER_DOCUMENT), - ]), - ]); - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Extension/Attributes/Util/AttributesHelper.php b/docker/streamline-src/vendor/league/commonmark/src/Extension/Attributes/Util/AttributesHelper.php deleted file mode 100644 index d13a565e..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Extension/Attributes/Util/AttributesHelper.php +++ /dev/null @@ -1,142 +0,0 @@ - - * (c) 2015 Martin Hasoň - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace League\CommonMark\Extension\Attributes\Util; - -use League\CommonMark\Node\Node; -use League\CommonMark\Parser\Cursor; -use League\CommonMark\Util\RegexHelper; - -/** - * @internal - */ -final class AttributesHelper -{ - private const SINGLE_ATTRIBUTE = '\s*([.]-?[_a-z][^\s}]*|[#][^\s}]+|' . RegexHelper::PARTIAL_ATTRIBUTENAME . RegexHelper::PARTIAL_ATTRIBUTEVALUESPEC . ')\s*'; - private const ATTRIBUTE_LIST = '/^{:?(' . self::SINGLE_ATTRIBUTE . ')+}/i'; - - /** - * @return array - */ - public static function parseAttributes(Cursor $cursor): array - { - $state = $cursor->saveState(); - $cursor->advanceToNextNonSpaceOrNewline(); - - // Quick check to see if we might have attributes - if ($cursor->getCharacter() !== '{') { - $cursor->restoreState($state); - - return []; - } - - // Attempt to match the entire attribute list expression - // While this is less performant than checking for '{' now and '}' later, it simplifies - // matching individual attributes since they won't need to look ahead for the closing '}' - // while dealing with the fact that attributes can technically contain curly braces. - // So we'll just match the start and end braces up front. - $attributeExpression = $cursor->match(self::ATTRIBUTE_LIST); - if ($attributeExpression === null) { - $cursor->restoreState($state); - - return []; - } - - // Trim the leading '{' or '{:' and the trailing '}' - $attributeExpression = \ltrim(\substr($attributeExpression, 1, -1), ':'); - $attributeCursor = new Cursor($attributeExpression); - - /** @var array $attributes */ - $attributes = []; - while ($attribute = \trim((string) $attributeCursor->match('/^' . self::SINGLE_ATTRIBUTE . '/i'))) { - if ($attribute[0] === '#') { - $attributes['id'] = \substr($attribute, 1); - - continue; - } - - if ($attribute[0] === '.') { - $attributes['class'][] = \substr($attribute, 1); - - continue; - } - - /** @psalm-suppress PossiblyUndefinedArrayOffset */ - [$name, $value] = \explode('=', $attribute, 2); - - if ($value === 'true') { - $attributes[$name] = true; - continue; - } - - $first = $value[0]; - $last = \substr($value, -1); - if (($first === '"' && $last === '"') || ($first === "'" && $last === "'") && \strlen($value) > 1) { - $value = \substr($value, 1, -1); - } - - if (\strtolower(\trim($name)) === 'class') { - foreach (\array_filter(\explode(' ', \trim($value))) as $class) { - $attributes['class'][] = $class; - } - } else { - $attributes[\trim($name)] = \trim($value); - } - } - - if (isset($attributes['class'])) { - $attributes['class'] = \implode(' ', (array) $attributes['class']); - } - - return $attributes; - } - - /** - * @param Node|array $attributes1 - * @param Node|array $attributes2 - * - * @return array - */ - public static function mergeAttributes($attributes1, $attributes2): array - { - $attributes = []; - foreach ([$attributes1, $attributes2] as $arg) { - if ($arg instanceof Node) { - $arg = $arg->data->get('attributes'); - } - - /** @var array $arg */ - $arg = (array) $arg; - if (isset($arg['class'])) { - if (\is_string($arg['class'])) { - $arg['class'] = \array_filter(\explode(' ', \trim($arg['class']))); - } - - foreach ($arg['class'] as $class) { - $attributes['class'][] = $class; - } - - unset($arg['class']); - } - - $attributes = \array_merge($attributes, $arg); - } - - if (isset($attributes['class'])) { - $attributes['class'] = \implode(' ', $attributes['class']); - } - - return $attributes; - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Extension/Autolink/AutolinkExtension.php b/docker/streamline-src/vendor/league/commonmark/src/Extension/Autolink/AutolinkExtension.php deleted file mode 100644 index 54aafd4d..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Extension/Autolink/AutolinkExtension.php +++ /dev/null @@ -1,39 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Extension\Autolink; - -use League\CommonMark\Environment\EnvironmentBuilderInterface; -use League\CommonMark\Extension\ConfigurableExtensionInterface; -use League\Config\ConfigurationBuilderInterface; -use Nette\Schema\Expect; - -final class AutolinkExtension implements ConfigurableExtensionInterface -{ - public function configureSchema(ConfigurationBuilderInterface $builder): void - { - $builder->addSchema('autolink', Expect::structure([ - 'allowed_protocols' => Expect::listOf('string')->default(['http', 'https', 'ftp'])->mergeDefaults(false), - 'default_protocol' => Expect::string()->default('http'), - ])); - } - - public function register(EnvironmentBuilderInterface $environment): void - { - $environment->addInlineParser(new EmailAutolinkParser()); - $environment->addInlineParser(new UrlAutolinkParser( - $environment->getConfiguration()->get('autolink.allowed_protocols'), - $environment->getConfiguration()->get('autolink.default_protocol'), - )); - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Extension/Autolink/UrlAutolinkParser.php b/docker/streamline-src/vendor/league/commonmark/src/Extension/Autolink/UrlAutolinkParser.php deleted file mode 100644 index f4876165..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Extension/Autolink/UrlAutolinkParser.php +++ /dev/null @@ -1,157 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Extension\Autolink; - -use League\CommonMark\Extension\CommonMark\Node\Inline\Link; -use League\CommonMark\Parser\Inline\InlineParserInterface; -use League\CommonMark\Parser\Inline\InlineParserMatch; -use League\CommonMark\Parser\InlineParserContext; - -final class UrlAutolinkParser implements InlineParserInterface -{ - private const ALLOWED_AFTER = [null, ' ', "\t", "\n", "\x0b", "\x0c", "\x0d", '*', '_', '~', '(']; - - // RegEx adapted from https://github.com/symfony/symfony/blob/6.3/src/Symfony/Component/Validator/Constraints/UrlValidator.php - private const REGEX = '~ - ( - # Must start with a supported scheme + auth, or "www" - (?: - (?:%s):// # protocol - (?:(?:(?:[\_\.\pL\pN-]|%%[0-9A-Fa-f]{2})+:)?((?:[\_\.\pL\pN-]|%%[0-9A-Fa-f]{2})+)@)? # basic auth - |www\.) - (?: - (?: - (?:xn--[a-z0-9-]++\.)*+xn--[a-z0-9-]++ # a domain name using punycode - | - (?:[\pL\pN\pS\pM\-\_]++\.){1,127}[\pL\pN\pM]++ # a multi-level domain name; total length must be 253 bytes or less - | - [a-z0-9\-\_]++ # a single-level domain name - )\.? - | # or - \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} # an IP address - | # or - \[ - (?:(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){6})(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:::(?:(?:(?:[0-9a-f]{1,4})):){5})(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:[0-9a-f]{1,4})))?::(?:(?:(?:[0-9a-f]{1,4})):){4})(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,1}(?:(?:[0-9a-f]{1,4})))?::(?:(?:(?:[0-9a-f]{1,4})):){3})(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,2}(?:(?:[0-9a-f]{1,4})))?::(?:(?:(?:[0-9a-f]{1,4})):){2})(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,3}(?:(?:[0-9a-f]{1,4})))?::(?:(?:[0-9a-f]{1,4})):)(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,4}(?:(?:[0-9a-f]{1,4})))?::)(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,5}(?:(?:[0-9a-f]{1,4})))?::)(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,6}(?:(?:[0-9a-f]{1,4})))?::)))) - \] # an IPv6 address - ) - (?::[0-9]+)? # a port (optional) - (?:/ (?:[\pL\pN\-._\~!$&\'()*+,;=:@]|%%[0-9A-Fa-f]{2})* )* # a path - (?:\? (?:[\pL\pN\-._\~!$&\'\[\]()*+,;=:@/?]|%%[0-9A-Fa-f]{2})* )? # a query (optional) - (?:\# (?:[\pL\pN\-._\~!$&\'()*+,;=:@/?]|%%[0-9A-Fa-f]{2})* )? # a fragment (optional) - )~ixu'; - - /** - * @var string[] - * - * @psalm-readonly - */ - private array $prefixes = ['www.']; - - /** - * @psalm-var non-empty-string - * - * @psalm-readonly - */ - private string $finalRegex; - - private string $defaultProtocol; - - /** - * @param array $allowedProtocols - */ - public function __construct(array $allowedProtocols = ['http', 'https', 'ftp'], string $defaultProtocol = 'http') - { - /** - * @psalm-suppress PropertyTypeCoercion - */ - $this->finalRegex = \sprintf(self::REGEX, \implode('|', $allowedProtocols)); - - foreach ($allowedProtocols as $protocol) { - $this->prefixes[] = $protocol . '://'; - } - - $this->defaultProtocol = $defaultProtocol; - } - - public function getMatchDefinition(): InlineParserMatch - { - return InlineParserMatch::oneOf(...$this->prefixes); - } - - public function parse(InlineParserContext $inlineContext): bool - { - $cursor = $inlineContext->getCursor(); - - // Autolinks can only come at the beginning of a line, after whitespace, or certain delimiting characters - $previousChar = $cursor->peek(-1); - if (! \in_array($previousChar, self::ALLOWED_AFTER, true)) { - return false; - } - - // Check if we have a valid URL - if (! \preg_match($this->finalRegex, $cursor->getRemainder(), $matches)) { - return false; - } - - $url = $matches[0]; - - // Does the URL end with punctuation that should be stripped? - if (\preg_match('/(.+?)([?!.,:*_~]+)$/', $url, $matches)) { - // Add the punctuation later - $url = $matches[1]; - } - - // Does the URL end with something that looks like an entity reference? - if (\preg_match('/(.+)(&[A-Za-z0-9]+;)$/', $url, $matches)) { - $url = $matches[1]; - } - - // Does the URL need unmatched parens chopped off? - if (\substr($url, -1) === ')' && ($diff = self::diffParens($url)) > 0) { - $url = \substr($url, 0, -$diff); - } - - $cursor->advanceBy(\mb_strlen($url, 'UTF-8')); - - // Auto-prefix 'http(s)://' onto 'www' URLs - if (\substr($url, 0, 4) === 'www.') { - $inlineContext->getContainer()->appendChild(new Link($this->defaultProtocol . '://' . $url, $url)); - - return true; - } - - $inlineContext->getContainer()->appendChild(new Link($url, $url)); - - return true; - } - - /** - * @psalm-pure - */ - private static function diffParens(string $content): int - { - // Scan the entire autolink for the total number of parentheses. - // If there is a greater number of closing parentheses than opening ones, - // we don’t consider ANY of the last characters as part of the autolink, - // in order to facilitate including an autolink inside a parenthesis. - \preg_match_all('/[()]/', $content, $matches); - - $charCount = ['(' => 0, ')' => 0]; - foreach ($matches[0] as $char) { - $charCount[$char]++; - } - - return $charCount[')'] - $charCount['(']; - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Delimiter/Processor/EmphasisDelimiterProcessor.php b/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Delimiter/Processor/EmphasisDelimiterProcessor.php deleted file mode 100644 index 9a6be134..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Delimiter/Processor/EmphasisDelimiterProcessor.php +++ /dev/null @@ -1,119 +0,0 @@ - - * - * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) - * - (c) John MacFarlane - * - * Additional emphasis processing code based on commonmark-java (https://github.com/atlassian/commonmark-java) - * - (c) Atlassian Pty Ltd - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Extension\CommonMark\Delimiter\Processor; - -use League\CommonMark\Delimiter\DelimiterInterface; -use League\CommonMark\Delimiter\Processor\CacheableDelimiterProcessorInterface; -use League\CommonMark\Extension\CommonMark\Node\Inline\Emphasis; -use League\CommonMark\Extension\CommonMark\Node\Inline\Strong; -use League\CommonMark\Node\Inline\AbstractStringContainer; -use League\Config\ConfigurationAwareInterface; -use League\Config\ConfigurationInterface; - -final class EmphasisDelimiterProcessor implements CacheableDelimiterProcessorInterface, ConfigurationAwareInterface -{ - /** @psalm-readonly */ - private string $char; - - /** @psalm-readonly-allow-private-mutation */ - private ConfigurationInterface $config; - - /** - * @param string $char The emphasis character to use (typically '*' or '_') - */ - public function __construct(string $char) - { - $this->char = $char; - } - - public function getOpeningCharacter(): string - { - return $this->char; - } - - public function getClosingCharacter(): string - { - return $this->char; - } - - public function getMinLength(): int - { - return 1; - } - - public function getDelimiterUse(DelimiterInterface $opener, DelimiterInterface $closer): int - { - // "Multiple of 3" rule for internal delimiter runs - if (($opener->canClose() || $closer->canOpen()) && $closer->getOriginalLength() % 3 !== 0 && ($opener->getOriginalLength() + $closer->getOriginalLength()) % 3 === 0) { - return 0; - } - - // Calculate actual number of delimiters used from this closer - if ($opener->getLength() >= 2 && $closer->getLength() >= 2) { - if ($this->config->get('commonmark/enable_strong')) { - return 2; - } - - return 0; - } - - if ($this->config->get('commonmark/enable_em')) { - return 1; - } - - return 0; - } - - public function process(AbstractStringContainer $opener, AbstractStringContainer $closer, int $delimiterUse): void - { - if ($delimiterUse === 1) { - $emphasis = new Emphasis($this->char); - } elseif ($delimiterUse === 2) { - $emphasis = new Strong($this->char . $this->char); - } else { - return; - } - - $next = $opener->next(); - while ($next !== null && $next !== $closer) { - $tmp = $next->next(); - $emphasis->appendChild($next); - $next = $tmp; - } - - $opener->insertAfter($emphasis); - } - - public function setConfiguration(ConfigurationInterface $configuration): void - { - $this->config = $configuration; - } - - public function getCacheKey(DelimiterInterface $closer): string - { - return \sprintf( - '%s-%s-%d-%d', - $this->char, - $closer->canOpen() ? 'canOpen' : 'cannotOpen', - $closer->getOriginalLength() % 3, - $closer->getLength(), - ); - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Node/Block/ListBlock.php b/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Node/Block/ListBlock.php deleted file mode 100644 index 504a38a2..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Node/Block/ListBlock.php +++ /dev/null @@ -1,56 +0,0 @@ - - * - * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) - * - (c) John MacFarlane - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Extension\CommonMark\Node\Block; - -use League\CommonMark\Node\Block\AbstractBlock; -use League\CommonMark\Node\Block\TightBlockInterface; - -class ListBlock extends AbstractBlock implements TightBlockInterface -{ - public const TYPE_BULLET = 'bullet'; - public const TYPE_ORDERED = 'ordered'; - - public const DELIM_PERIOD = 'period'; - public const DELIM_PAREN = 'paren'; - - protected bool $tight = false; // TODO Make lists tight by default in v3 - - /** @psalm-readonly */ - protected ListData $listData; - - public function __construct(ListData $listData) - { - parent::__construct(); - - $this->listData = $listData; - } - - public function getListData(): ListData - { - return $this->listData; - } - - public function isTight(): bool - { - return $this->tight; - } - - public function setTight(bool $tight): void - { - $this->tight = $tight; - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/FencedCodeParser.php b/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/FencedCodeParser.php deleted file mode 100644 index 96a5baa4..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/FencedCodeParser.php +++ /dev/null @@ -1,84 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Extension\CommonMark\Parser\Block; - -use League\CommonMark\Extension\CommonMark\Node\Block\FencedCode; -use League\CommonMark\Parser\Block\AbstractBlockContinueParser; -use League\CommonMark\Parser\Block\BlockContinue; -use League\CommonMark\Parser\Block\BlockContinueParserInterface; -use League\CommonMark\Parser\Cursor; -use League\CommonMark\Util\ArrayCollection; -use League\CommonMark\Util\RegexHelper; - -final class FencedCodeParser extends AbstractBlockContinueParser -{ - /** @psalm-readonly */ - private FencedCode $block; - - /** @var ArrayCollection */ - private ArrayCollection $strings; - - public function __construct(int $fenceLength, string $fenceChar, int $fenceOffset) - { - $this->block = new FencedCode($fenceLength, $fenceChar, $fenceOffset); - $this->strings = new ArrayCollection(); - } - - public function getBlock(): FencedCode - { - return $this->block; - } - - public function tryContinue(Cursor $cursor, BlockContinueParserInterface $activeBlockParser): ?BlockContinue - { - // Check for closing code fence - if (! $cursor->isIndented() && $cursor->getNextNonSpaceCharacter() === $this->block->getChar()) { - $match = RegexHelper::matchFirst('/^(?:`{3,}|~{3,})(?=[ \t]*$)/', $cursor->getLine(), $cursor->getNextNonSpacePosition()); - if ($match !== null && \strlen($match[0]) >= $this->block->getLength()) { - // closing fence - we're at end of line, so we can finalize now - return BlockContinue::finished(); - } - } - - // Skip optional spaces of fence offset - // Optimization: don't attempt to match if we're at a non-space position - if ($cursor->getNextNonSpacePosition() > $cursor->getPosition()) { - $cursor->match('/^ {0,' . $this->block->getOffset() . '}/'); - } - - return BlockContinue::at($cursor); - } - - public function addLine(string $line): void - { - $this->strings[] = $line; - } - - public function closeBlock(): void - { - // first line becomes info string - $firstLine = $this->strings->first(); - if ($firstLine === false) { - $firstLine = ''; - } - - $this->block->setInfo(RegexHelper::unescape(\trim($firstLine))); - - if ($this->strings->count() === 1) { - $this->block->setLiteral(''); - } else { - $this->block->setLiteral(\implode("\n", $this->strings->slice(1)) . "\n"); - } - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/IndentedCodeParser.php b/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/IndentedCodeParser.php deleted file mode 100644 index ac6406fb..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/IndentedCodeParser.php +++ /dev/null @@ -1,76 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Extension\CommonMark\Parser\Block; - -use League\CommonMark\Extension\CommonMark\Node\Block\IndentedCode; -use League\CommonMark\Parser\Block\AbstractBlockContinueParser; -use League\CommonMark\Parser\Block\BlockContinue; -use League\CommonMark\Parser\Block\BlockContinueParserInterface; -use League\CommonMark\Parser\Cursor; -use League\CommonMark\Util\ArrayCollection; - -final class IndentedCodeParser extends AbstractBlockContinueParser -{ - /** @psalm-readonly */ - private IndentedCode $block; - - /** @var ArrayCollection */ - private ArrayCollection $strings; - - public function __construct() - { - $this->block = new IndentedCode(); - $this->strings = new ArrayCollection(); - } - - public function getBlock(): IndentedCode - { - return $this->block; - } - - public function tryContinue(Cursor $cursor, BlockContinueParserInterface $activeBlockParser): ?BlockContinue - { - if ($cursor->isIndented()) { - $cursor->advanceBy(Cursor::INDENT_LEVEL, true); - - return BlockContinue::at($cursor); - } - - if ($cursor->isBlank()) { - $cursor->advanceToNextNonSpaceOrTab(); - - return BlockContinue::at($cursor); - } - - return BlockContinue::none(); - } - - public function addLine(string $line): void - { - $this->strings[] = $line; - } - - public function closeBlock(): void - { - $lines = $this->strings->toArray(); - - // Note that indented code block cannot be empty, so $lines will always have at least one non-empty element - while (\preg_match('/^[ \t]*$/', \end($lines))) { // @phpstan-ignore-line - \array_pop($lines); - } - - $this->block->setLiteral(\implode("\n", $lines) . "\n"); - $this->block->setEndLine($this->block->getStartLine() + \count($lines) - 1); - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/ListBlockParser.php b/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/ListBlockParser.php deleted file mode 100644 index 5a7ee45a..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/ListBlockParser.php +++ /dev/null @@ -1,93 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Extension\CommonMark\Parser\Block; - -use League\CommonMark\Extension\CommonMark\Node\Block\ListBlock; -use League\CommonMark\Extension\CommonMark\Node\Block\ListData; -use League\CommonMark\Extension\CommonMark\Node\Block\ListItem; -use League\CommonMark\Node\Block\AbstractBlock; -use League\CommonMark\Parser\Block\AbstractBlockContinueParser; -use League\CommonMark\Parser\Block\BlockContinue; -use League\CommonMark\Parser\Block\BlockContinueParserInterface; -use League\CommonMark\Parser\Cursor; - -final class ListBlockParser extends AbstractBlockContinueParser -{ - /** @psalm-readonly */ - private ListBlock $block; - - public function __construct(ListData $listData) - { - $this->block = new ListBlock($listData); - } - - public function getBlock(): ListBlock - { - return $this->block; - } - - public function isContainer(): bool - { - return true; - } - - public function canContain(AbstractBlock $childBlock): bool - { - return $childBlock instanceof ListItem; - } - - public function tryContinue(Cursor $cursor, BlockContinueParserInterface $activeBlockParser): ?BlockContinue - { - // List blocks themselves don't have any markers, only list items. So try to stay in the list. - // If there is a block start other than list item, canContain makes sure that this list is closed. - return BlockContinue::at($cursor); - } - - public function closeBlock(): void - { - $item = $this->block->firstChild(); - while ($item instanceof AbstractBlock) { - // check for non-final list item ending with blank line: - if ($item->next() !== null && self::endsWithBlankLine($item)) { - $this->block->setTight(false); - break; - } - - // recurse into children of list item, to see if there are spaces between any of them - $subitem = $item->firstChild(); - while ($subitem instanceof AbstractBlock) { - if ($subitem->next() && self::endsWithBlankLine($subitem)) { - $this->block->setTight(false); - break 2; - } - - $subitem = $subitem->next(); - } - - $item = $item->next(); - } - - $lastChild = $this->block->lastChild(); - if ($lastChild instanceof AbstractBlock) { - $this->block->setEndLine($lastChild->getEndLine()); - } - } - - private static function endsWithBlankLine(AbstractBlock $block): bool - { - $next = $block->next(); - - return $next instanceof AbstractBlock && $block->getEndLine() !== $next->getStartLine() - 1; - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/ListBlockStartParser.php b/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/ListBlockStartParser.php deleted file mode 100644 index a55f6f9d..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/ListBlockStartParser.php +++ /dev/null @@ -1,154 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Extension\CommonMark\Parser\Block; - -use League\CommonMark\Extension\CommonMark\Node\Block\ListBlock; -use League\CommonMark\Extension\CommonMark\Node\Block\ListData; -use League\CommonMark\Parser\Block\BlockStart; -use League\CommonMark\Parser\Block\BlockStartParserInterface; -use League\CommonMark\Parser\Cursor; -use League\CommonMark\Parser\MarkdownParserStateInterface; -use League\CommonMark\Util\RegexHelper; -use League\Config\ConfigurationAwareInterface; -use League\Config\ConfigurationInterface; - -final class ListBlockStartParser implements BlockStartParserInterface, ConfigurationAwareInterface -{ - /** @psalm-readonly-allow-private-mutation */ - private ?ConfigurationInterface $config = null; - - /** - * @psalm-var non-empty-string|null - * - * @psalm-readonly-allow-private-mutation - */ - private ?string $listMarkerRegex = null; - - public function setConfiguration(ConfigurationInterface $configuration): void - { - $this->config = $configuration; - } - - public function tryStart(Cursor $cursor, MarkdownParserStateInterface $parserState): ?BlockStart - { - if ($cursor->isIndented()) { - return BlockStart::none(); - } - - $listData = $this->parseList($cursor, $parserState->getParagraphContent() !== null); - if ($listData === null) { - return BlockStart::none(); - } - - $listItemParser = new ListItemParser($listData); - - // prepend the list block if needed - $matched = $parserState->getLastMatchedBlockParser(); - if (! ($matched instanceof ListBlockParser) || ! $listData->equals($matched->getBlock()->getListData())) { - $listBlockParser = new ListBlockParser($listData); - // We start out with assuming a list is tight. If we find a blank line, we set it to loose later. - // TODO for 3.0: Just make them tight by default in the block so we can remove this call - $listBlockParser->getBlock()->setTight(true); - - return BlockStart::of($listBlockParser, $listItemParser)->at($cursor); - } - - return BlockStart::of($listItemParser)->at($cursor); - } - - private function parseList(Cursor $cursor, bool $inParagraph): ?ListData - { - $indent = $cursor->getIndent(); - - $tmpCursor = clone $cursor; - $tmpCursor->advanceToNextNonSpaceOrTab(); - $rest = $tmpCursor->getRemainder(); - - if (\preg_match($this->listMarkerRegex ?? $this->generateListMarkerRegex(), $rest) === 1) { - $data = new ListData(); - $data->markerOffset = $indent; - $data->type = ListBlock::TYPE_BULLET; - $data->delimiter = null; - $data->bulletChar = $rest[0]; - $markerLength = 1; - } elseif (($matches = RegexHelper::matchFirst('/^(\d{1,9})([.)])/', $rest)) && (! $inParagraph || $matches[1] === '1')) { - $data = new ListData(); - $data->markerOffset = $indent; - $data->type = ListBlock::TYPE_ORDERED; - $data->start = (int) $matches[1]; - $data->delimiter = $matches[2] === '.' ? ListBlock::DELIM_PERIOD : ListBlock::DELIM_PAREN; - $data->bulletChar = null; - $markerLength = \strlen($matches[0]); - } else { - return null; - } - - // Make sure we have spaces after - $nextChar = $tmpCursor->peek($markerLength); - if (! ($nextChar === null || $nextChar === "\t" || $nextChar === ' ')) { - return null; - } - - // If it interrupts paragraph, make sure first line isn't blank - if ($inParagraph && ! RegexHelper::matchAt(RegexHelper::REGEX_NON_SPACE, $rest, $markerLength)) { - return null; - } - - $cursor->advanceToNextNonSpaceOrTab(); // to start of marker - $cursor->advanceBy($markerLength, true); // to end of marker - $data->padding = self::calculateListMarkerPadding($cursor, $markerLength); - - return $data; - } - - private static function calculateListMarkerPadding(Cursor $cursor, int $markerLength): int - { - $start = $cursor->saveState(); - $spacesStartCol = $cursor->getColumn(); - - while ($cursor->getColumn() - $spacesStartCol < 5) { - if (! $cursor->advanceBySpaceOrTab()) { - break; - } - } - - $blankItem = $cursor->peek() === null; - $spacesAfterMarker = $cursor->getColumn() - $spacesStartCol; - - if ($spacesAfterMarker >= 5 || $spacesAfterMarker < 1 || $blankItem) { - $cursor->restoreState($start); - $cursor->advanceBySpaceOrTab(); - - return $markerLength + 1; - } - - return $markerLength + $spacesAfterMarker; - } - - /** - * @psalm-return non-empty-string - */ - private function generateListMarkerRegex(): string - { - // No configuration given - use the defaults - if ($this->config === null) { - return $this->listMarkerRegex = '/^[*+-]/'; - } - - $markers = $this->config->get('commonmark/unordered_list_markers'); - \assert(\is_array($markers)); - - return $this->listMarkerRegex = '/^[' . \preg_quote(\implode('', $markers), '/') . ']/'; - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/ListItemParser.php b/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/ListItemParser.php deleted file mode 100644 index 739eefcb..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/ListItemParser.php +++ /dev/null @@ -1,82 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Extension\CommonMark\Parser\Block; - -use League\CommonMark\Extension\CommonMark\Node\Block\ListData; -use League\CommonMark\Extension\CommonMark\Node\Block\ListItem; -use League\CommonMark\Node\Block\AbstractBlock; -use League\CommonMark\Parser\Block\AbstractBlockContinueParser; -use League\CommonMark\Parser\Block\BlockContinue; -use League\CommonMark\Parser\Block\BlockContinueParserInterface; -use League\CommonMark\Parser\Cursor; - -final class ListItemParser extends AbstractBlockContinueParser -{ - /** @psalm-readonly */ - private ListItem $block; - - public function __construct(ListData $listData) - { - $this->block = new ListItem($listData); - } - - public function getBlock(): ListItem - { - return $this->block; - } - - public function isContainer(): bool - { - return true; - } - - public function canContain(AbstractBlock $childBlock): bool - { - return ! $childBlock instanceof ListItem; - } - - public function tryContinue(Cursor $cursor, BlockContinueParserInterface $activeBlockParser): ?BlockContinue - { - if ($cursor->isBlank()) { - if ($this->block->firstChild() === null) { - // Blank line after empty list item - return BlockContinue::none(); - } - - $cursor->advanceToNextNonSpaceOrTab(); - - return BlockContinue::at($cursor); - } - - $contentIndent = $this->block->getListData()->markerOffset + $this->getBlock()->getListData()->padding; - if ($cursor->getIndent() >= $contentIndent) { - $cursor->advanceBy($contentIndent, true); - - return BlockContinue::at($cursor); - } - - // Note: We'll hit this case for lazy continuation lines, they will get added later. - return BlockContinue::none(); - } - - public function closeBlock(): void - { - if (($lastChild = $this->block->lastChild()) instanceof AbstractBlock) { - $this->block->setEndLine($lastChild->getEndLine()); - } else { - // Empty list item - $this->block->setEndLine($this->block->getStartLine()); - } - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Parser/Inline/BacktickParser.php b/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Parser/Inline/BacktickParser.php deleted file mode 100644 index 3324fe39..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Parser/Inline/BacktickParser.php +++ /dev/null @@ -1,132 +0,0 @@ - - * - * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) - * - (c) John MacFarlane - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Extension\CommonMark\Parser\Inline; - -use League\CommonMark\Extension\CommonMark\Node\Inline\Code; -use League\CommonMark\Node\Inline\Text; -use League\CommonMark\Parser\Cursor; -use League\CommonMark\Parser\Inline\InlineParserInterface; -use League\CommonMark\Parser\Inline\InlineParserMatch; -use League\CommonMark\Parser\InlineParserContext; - -final class BacktickParser implements InlineParserInterface -{ - /** - * Max bound for backtick code span delimiters. - * - * @see https://github.com/commonmark/cmark/commit/8ed5c9d - */ - private const MAX_BACKTICKS = 1000; - - /** @var \WeakReference|null */ - private ?\WeakReference $lastCursor = null; - private bool $lastCursorScanned = false; - - /** @var array backtick count => position of known ender */ - private array $seenBackticks = []; - - public function getMatchDefinition(): InlineParserMatch - { - return InlineParserMatch::regex('`+'); - } - - public function parse(InlineParserContext $inlineContext): bool - { - $ticks = $inlineContext->getFullMatch(); - $cursor = $inlineContext->getCursor(); - $cursor->advanceBy($inlineContext->getFullMatchLength()); - - $currentPosition = $cursor->getPosition(); - $previousState = $cursor->saveState(); - - if ($this->findMatchingTicks(\strlen($ticks), $cursor)) { - $code = $cursor->getSubstring($currentPosition, $cursor->getPosition() - $currentPosition - \strlen($ticks)); - - $c = \preg_replace('/\n/m', ' ', $code) ?? ''; - - if ( - $c !== '' && - $c[0] === ' ' && - \substr($c, -1, 1) === ' ' && - \preg_match('/[^ ]/', $c) - ) { - $c = \substr($c, 1, -1); - } - - $inlineContext->getContainer()->appendChild(new Code($c)); - - return true; - } - - // If we got here, we didn't match a closing backtick sequence - $cursor->restoreState($previousState); - $inlineContext->getContainer()->appendChild(new Text($ticks)); - - return true; - } - - /** - * Locates the matching closer for a backtick code span. - * - * Leverages some caching to avoid traversing the same cursor multiple times when - * we've already seen all the potential backtick closers. - * - * @see https://github.com/commonmark/cmark/commit/8ed5c9d - * - * @param int $openTickLength Number of backticks in the opening sequence - * @param Cursor $cursor Cursor to scan - * - * @return bool True if a matching closer was found, false otherwise - */ - private function findMatchingTicks(int $openTickLength, Cursor $cursor): bool - { - // Reset the seenBackticks cache if this is a new cursor - if ($this->lastCursor === null || $this->lastCursor->get() !== $cursor) { - $this->seenBackticks = []; - $this->lastCursor = \WeakReference::create($cursor); - $this->lastCursorScanned = false; - } - - if ($openTickLength > self::MAX_BACKTICKS) { - return false; - } - - // Return if we already know there's no closer - if ($this->lastCursorScanned && isset($this->seenBackticks[$openTickLength]) && $this->seenBackticks[$openTickLength] <= $cursor->getPosition()) { - return false; - } - - while ($ticks = $cursor->match('/`{1,' . self::MAX_BACKTICKS . '}/m')) { - $numTicks = \strlen($ticks); - - // Did we find the closer? - if ($numTicks === $openTickLength) { - return true; - } - - // Store position of closer - if ($numTicks <= self::MAX_BACKTICKS) { - $this->seenBackticks[$numTicks] = $cursor->getPosition() - $numTicks; - } - } - - // Got through whole input without finding closer - $this->lastCursorScanned = true; - - return false; - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Parser/Inline/BangParser.php b/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Parser/Inline/BangParser.php deleted file mode 100644 index cbf6ca38..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Parser/Inline/BangParser.php +++ /dev/null @@ -1,44 +0,0 @@ - - * - * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) - * - (c) John MacFarlane - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Extension\CommonMark\Parser\Inline; - -use League\CommonMark\Node\Inline\Text; -use League\CommonMark\Parser\Inline\InlineParserInterface; -use League\CommonMark\Parser\Inline\InlineParserMatch; -use League\CommonMark\Parser\InlineParserContext; - -final class BangParser implements InlineParserInterface -{ - public function getMatchDefinition(): InlineParserMatch - { - return InlineParserMatch::string('!['); - } - - public function parse(InlineParserContext $inlineContext): bool - { - $cursor = $inlineContext->getCursor(); - $cursor->advanceBy(2); - - $node = new Text('![', ['delim' => true]); - $inlineContext->getContainer()->appendChild($node); - - // Add entry to stack for this opener - $inlineContext->getDelimiterStack()->addBracket($node, $cursor->getPosition(), true); - - return true; - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Parser/Inline/CloseBracketParser.php b/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Parser/Inline/CloseBracketParser.php deleted file mode 100644 index f3b83fd1..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Parser/Inline/CloseBracketParser.php +++ /dev/null @@ -1,214 +0,0 @@ - - * - * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) - * - (c) John MacFarlane - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Extension\CommonMark\Parser\Inline; - -use League\CommonMark\Delimiter\Bracket; -use League\CommonMark\Environment\EnvironmentAwareInterface; -use League\CommonMark\Environment\EnvironmentInterface; -use League\CommonMark\Extension\CommonMark\Node\Inline\AbstractWebResource; -use League\CommonMark\Extension\CommonMark\Node\Inline\Image; -use League\CommonMark\Extension\CommonMark\Node\Inline\Link; -use League\CommonMark\Extension\Mention\Mention; -use League\CommonMark\Node\Inline\AdjacentTextMerger; -use League\CommonMark\Node\Inline\Text; -use League\CommonMark\Parser\Cursor; -use League\CommonMark\Parser\Inline\InlineParserInterface; -use League\CommonMark\Parser\Inline\InlineParserMatch; -use League\CommonMark\Parser\InlineParserContext; -use League\CommonMark\Reference\ReferenceInterface; -use League\CommonMark\Reference\ReferenceMapInterface; -use League\CommonMark\Util\LinkParserHelper; -use League\CommonMark\Util\RegexHelper; - -final class CloseBracketParser implements InlineParserInterface, EnvironmentAwareInterface -{ - /** @psalm-readonly-allow-private-mutation */ - private EnvironmentInterface $environment; - - public function getMatchDefinition(): InlineParserMatch - { - return InlineParserMatch::string(']'); - } - - public function parse(InlineParserContext $inlineContext): bool - { - // Look through stack of delimiters for a [ or ! - $opener = $inlineContext->getDelimiterStack()->getLastBracket(); - if ($opener === null) { - return false; - } - - if (! $opener->isImage() && ! $opener->isActive()) { - // no matched opener; remove from stack - $inlineContext->getDelimiterStack()->removeBracket(); - - return false; - } - - $cursor = $inlineContext->getCursor(); - - $startPos = $cursor->getPosition(); - $previousState = $cursor->saveState(); - - $cursor->advanceBy(1); - - // Check to see if we have a link/image - - // Inline link? - if ($result = $this->tryParseInlineLinkAndTitle($cursor)) { - $link = $result; - } elseif ($link = $this->tryParseReference($cursor, $inlineContext->getReferenceMap(), $opener, $startPos)) { - $reference = $link; - $link = ['url' => $link->getDestination(), 'title' => $link->getTitle()]; - } else { - // No match; remove this opener from stack - $inlineContext->getDelimiterStack()->removeBracket(); - $cursor->restoreState($previousState); - - return false; - } - - $inline = $this->createInline($link['url'], $link['title'], $opener->isImage(), $reference ?? null); - $opener->getNode()->replaceWith($inline); - while (($label = $inline->next()) !== null) { - // Is there a Mention or Link contained within this link? - // CommonMark does not allow nested links, so we'll restore the original text. - if ($label instanceof Mention) { - $label->replaceWith($replacement = new Text($label->getPrefix() . $label->getIdentifier())); - $inline->appendChild($replacement); - } elseif ($label instanceof Link) { - foreach ($label->children() as $child) { - $label->insertBefore($child); - } - - $label->detach(); - } else { - $inline->appendChild($label); - } - } - - // Process delimiters such as emphasis inside link/image - $delimiterStack = $inlineContext->getDelimiterStack(); - $stackBottom = $opener->getPosition(); - $delimiterStack->processDelimiters($stackBottom, $this->environment->getDelimiterProcessors()); - $delimiterStack->removeBracket(); - $delimiterStack->removeAll($stackBottom); - - // Merge any adjacent Text nodes together - AdjacentTextMerger::mergeChildNodes($inline); - - // processEmphasis will remove this and later delimiters. - // Now, for a link, we also remove earlier link openers (no links in links) - if (! $opener->isImage()) { - $inlineContext->getDelimiterStack()->deactivateLinkOpeners(); - } - - return true; - } - - public function setEnvironment(EnvironmentInterface $environment): void - { - $this->environment = $environment; - } - - /** - * @return array|null - */ - private function tryParseInlineLinkAndTitle(Cursor $cursor): ?array - { - if ($cursor->getCurrentCharacter() !== '(') { - return null; - } - - $previousState = $cursor->saveState(); - - $cursor->advanceBy(1); - $cursor->advanceToNextNonSpaceOrNewline(); - if (($dest = LinkParserHelper::parseLinkDestination($cursor)) === null) { - $cursor->restoreState($previousState); - - return null; - } - - $cursor->advanceToNextNonSpaceOrNewline(); - $previousCharacter = $cursor->peek(-1); - // We know from previous lines that we've advanced at least one space so far, so this next call should never be null - \assert(\is_string($previousCharacter)); - - $title = ''; - // make sure there's a space before the title: - if (\preg_match(RegexHelper::REGEX_WHITESPACE_CHAR, $previousCharacter)) { - $title = LinkParserHelper::parseLinkTitle($cursor) ?? ''; - } - - $cursor->advanceToNextNonSpaceOrNewline(); - - if ($cursor->getCurrentCharacter() !== ')') { - $cursor->restoreState($previousState); - - return null; - } - - $cursor->advanceBy(1); - - return ['url' => $dest, 'title' => $title]; - } - - private function tryParseReference(Cursor $cursor, ReferenceMapInterface $referenceMap, Bracket $opener, int $startPos): ?ReferenceInterface - { - $savePos = $cursor->saveState(); - $beforeLabel = $cursor->getPosition(); - $n = LinkParserHelper::parseLinkLabel($cursor); - if ($n > 2) { - $start = $beforeLabel + 1; - $length = $n - 2; - } elseif (! $opener->hasNext()) { - // Empty or missing second label means to use the first label as the reference. - // The reference must not contain a bracket. If we know there's a bracket, we don't even bother checking it. - $start = $opener->getPosition(); - $length = $startPos - $start; - } else { - $cursor->restoreState($savePos); - - return null; - } - - $referenceLabel = $cursor->getSubstring($start, $length); - - if ($n === 0) { - // If shortcut reference link, rewind before spaces we skipped - $cursor->restoreState($savePos); - } - - return $referenceMap->get($referenceLabel); - } - - private function createInline(string $url, string $title, bool $isImage, ?ReferenceInterface $reference = null): AbstractWebResource - { - if ($isImage) { - $inline = new Image($url, null, $title); - } else { - $inline = new Link($url, null, $title); - } - - if ($reference) { - $inline->data->set('reference', $reference); - } - - return $inline; - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Parser/Inline/OpenBracketParser.php b/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Parser/Inline/OpenBracketParser.php deleted file mode 100644 index 1ba8c133..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Parser/Inline/OpenBracketParser.php +++ /dev/null @@ -1,42 +0,0 @@ - - * - * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) - * - (c) John MacFarlane - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Extension\CommonMark\Parser\Inline; - -use League\CommonMark\Node\Inline\Text; -use League\CommonMark\Parser\Inline\InlineParserInterface; -use League\CommonMark\Parser\Inline\InlineParserMatch; -use League\CommonMark\Parser\InlineParserContext; - -final class OpenBracketParser implements InlineParserInterface -{ - public function getMatchDefinition(): InlineParserMatch - { - return InlineParserMatch::string('['); - } - - public function parse(InlineParserContext $inlineContext): bool - { - $inlineContext->getCursor()->advanceBy(1); - $node = new Text('[', ['delim' => true]); - $inlineContext->getContainer()->appendChild($node); - - // Add entry to stack for this opener - $inlineContext->getDelimiterStack()->addBracket($node, $inlineContext->getCursor()->getPosition(), false); - - return true; - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Renderer/Block/ListItemRenderer.php b/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Renderer/Block/ListItemRenderer.php deleted file mode 100644 index 543baad8..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Extension/CommonMark/Renderer/Block/ListItemRenderer.php +++ /dev/null @@ -1,80 +0,0 @@ - - * - * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) - * - (c) John MacFarlane - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Extension\CommonMark\Renderer\Block; - -use League\CommonMark\Extension\CommonMark\Node\Block\ListItem; -use League\CommonMark\Node\Block\AbstractBlock; -use League\CommonMark\Node\Block\Paragraph; -use League\CommonMark\Node\Block\TightBlockInterface; -use League\CommonMark\Node\Node; -use League\CommonMark\Renderer\ChildNodeRendererInterface; -use League\CommonMark\Renderer\NodeRendererInterface; -use League\CommonMark\Util\HtmlElement; -use League\CommonMark\Xml\XmlNodeRendererInterface; - -final class ListItemRenderer implements NodeRendererInterface, XmlNodeRendererInterface -{ - /** - * @param ListItem $node - * - * {@inheritDoc} - * - * @psalm-suppress MoreSpecificImplementedParamType - */ - public function render(Node $node, ChildNodeRendererInterface $childRenderer): \Stringable - { - ListItem::assertInstanceOf($node); - - $contents = $childRenderer->renderNodes($node->children()); - - $inTightList = ($parent = $node->parent()) && $parent instanceof TightBlockInterface && $parent->isTight(); - - if ($this->needsBlockSeparator($node->firstChild(), $inTightList)) { - $contents = "\n" . $contents; - } - - if ($this->needsBlockSeparator($node->lastChild(), $inTightList)) { - $contents .= "\n"; - } - - $attrs = $node->data->get('attributes'); - - return new HtmlElement('li', $attrs, $contents); - } - - public function getXmlTagName(Node $node): string - { - return 'item'; - } - - /** - * {@inheritDoc} - */ - public function getXmlAttributes(Node $node): array - { - return []; - } - - private function needsBlockSeparator(?Node $child, bool $inTightList): bool - { - if ($child instanceof Paragraph && $inTightList) { - return false; - } - - return $child instanceof AbstractBlock; - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Extension/SmartPunct/QuoteParser.php b/docker/streamline-src/vendor/league/commonmark/src/Extension/SmartPunct/QuoteParser.php deleted file mode 100644 index 31ba8c77..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Extension/SmartPunct/QuoteParser.php +++ /dev/null @@ -1,98 +0,0 @@ - - * - * Original code based on the CommonMark JS reference parser (http://bitly.com/commonmark-js) - * - (c) John MacFarlane - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Extension\SmartPunct; - -use League\CommonMark\Delimiter\Delimiter; -use League\CommonMark\Parser\Inline\InlineParserInterface; -use League\CommonMark\Parser\Inline\InlineParserMatch; -use League\CommonMark\Parser\InlineParserContext; -use League\CommonMark\Util\RegexHelper; - -final class QuoteParser implements InlineParserInterface -{ - /** - * @deprecated This constant is no longer used and will be removed in a future major release - */ - public const DOUBLE_QUOTES = [Quote::DOUBLE_QUOTE, Quote::DOUBLE_QUOTE_OPENER, Quote::DOUBLE_QUOTE_CLOSER]; - - /** - * @deprecated This constant is no longer used and will be removed in a future major release - */ - public const SINGLE_QUOTES = [Quote::SINGLE_QUOTE, Quote::SINGLE_QUOTE_OPENER, Quote::SINGLE_QUOTE_CLOSER]; - - public function getMatchDefinition(): InlineParserMatch - { - return InlineParserMatch::oneOf(Quote::SINGLE_QUOTE, Quote::DOUBLE_QUOTE); - } - - /** - * Normalizes any quote characters found and manually adds them to the delimiter stack - */ - public function parse(InlineParserContext $inlineContext): bool - { - $char = $inlineContext->getFullMatch(); - $cursor = $inlineContext->getCursor(); - $index = $cursor->getPosition(); - - $charBefore = $cursor->peek(-1); - if ($charBefore === null) { - $charBefore = "\n"; - } - - $cursor->advance(); - - $charAfter = $cursor->getCurrentCharacter(); - if ($charAfter === null) { - $charAfter = "\n"; - } - - [$leftFlanking, $rightFlanking] = $this->determineFlanking($charBefore, $charAfter); - $canOpen = $leftFlanking && ! $rightFlanking; - $canClose = $rightFlanking; - - $node = new Quote($char, ['delim' => true]); - $inlineContext->getContainer()->appendChild($node); - - // Add entry to stack to this opener - $inlineContext->getDelimiterStack()->push(new Delimiter($char, 1, $node, $canOpen, $canClose, $index)); - - return true; - } - - /** - * @return bool[] - */ - private function determineFlanking(string $charBefore, string $charAfter): array - { - $afterIsWhitespace = \preg_match('/\pZ|\s/u', $charAfter); - $afterIsPunctuation = \preg_match(RegexHelper::REGEX_PUNCTUATION, $charAfter); - $beforeIsWhitespace = \preg_match('/\pZ|\s/u', $charBefore); - $beforeIsPunctuation = \preg_match(RegexHelper::REGEX_PUNCTUATION, $charBefore); - - $leftFlanking = ! $afterIsWhitespace && - ! ($afterIsPunctuation && - ! $beforeIsWhitespace && - ! $beforeIsPunctuation); - - $rightFlanking = ! $beforeIsWhitespace && - ! ($beforeIsPunctuation && - ! $afterIsWhitespace && - ! $afterIsPunctuation); - - return [$leftFlanking, $rightFlanking]; - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Extension/Strikethrough/StrikethroughDelimiterProcessor.php b/docker/streamline-src/vendor/league/commonmark/src/Extension/Strikethrough/StrikethroughDelimiterProcessor.php deleted file mode 100644 index a6c8d388..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Extension/Strikethrough/StrikethroughDelimiterProcessor.php +++ /dev/null @@ -1,69 +0,0 @@ - and uAfrica.com (http://uafrica.com) - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Extension\Strikethrough; - -use League\CommonMark\Delimiter\DelimiterInterface; -use League\CommonMark\Delimiter\Processor\CacheableDelimiterProcessorInterface; -use League\CommonMark\Node\Inline\AbstractStringContainer; - -final class StrikethroughDelimiterProcessor implements CacheableDelimiterProcessorInterface -{ - public function getOpeningCharacter(): string - { - return '~'; - } - - public function getClosingCharacter(): string - { - return '~'; - } - - public function getMinLength(): int - { - return 1; - } - - public function getDelimiterUse(DelimiterInterface $opener, DelimiterInterface $closer): int - { - if ($opener->getLength() > 2 && $closer->getLength() > 2) { - return 0; - } - - if ($opener->getLength() !== $closer->getLength()) { - return 0; - } - - // $opener and $closer are the same length so we just return one of them - return $opener->getLength(); - } - - public function process(AbstractStringContainer $opener, AbstractStringContainer $closer, int $delimiterUse): void - { - $strikethrough = new Strikethrough(\str_repeat('~', $delimiterUse)); - - $tmp = $opener->next(); - while ($tmp !== null && $tmp !== $closer) { - $next = $tmp->next(); - $strikethrough->appendChild($tmp); - $tmp = $next; - } - - $opener->insertAfter($strikethrough); - } - - public function getCacheKey(DelimiterInterface $closer): string - { - return '~' . $closer->getLength(); - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Extension/Table/TableExtension.php b/docker/streamline-src/vendor/league/commonmark/src/Extension/Table/TableExtension.php deleted file mode 100644 index 0a8db3ed..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Extension/Table/TableExtension.php +++ /dev/null @@ -1,63 +0,0 @@ - - * (c) Webuni s.r.o. - * (c) Colin O'Dell - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Extension\Table; - -use League\CommonMark\Environment\EnvironmentBuilderInterface; -use League\CommonMark\Extension\ConfigurableExtensionInterface; -use League\CommonMark\Renderer\HtmlDecorator; -use League\Config\ConfigurationBuilderInterface; -use Nette\Schema\Expect; - -final class TableExtension implements ConfigurableExtensionInterface -{ - public function configureSchema(ConfigurationBuilderInterface $builder): void - { - $attributeArraySchema = Expect::arrayOf( - Expect::type('string|string[]|bool'), // attribute value(s) - 'string' // attribute name - )->mergeDefaults(false); - - $builder->addSchema('table', Expect::structure([ - 'wrap' => Expect::structure([ - 'enabled' => Expect::bool()->default(false), - 'tag' => Expect::string()->default('div'), - 'attributes' => Expect::arrayOf(Expect::string()), - ]), - 'alignment_attributes' => Expect::structure([ - 'left' => (clone $attributeArraySchema)->default(['align' => 'left']), - 'center' => (clone $attributeArraySchema)->default(['align' => 'center']), - 'right' => (clone $attributeArraySchema)->default(['align' => 'right']), - ]), - 'max_autocompleted_cells' => Expect::int()->min(0)->default(TableParser::DEFAULT_MAX_AUTOCOMPLETED_CELLS), - ])); - } - - public function register(EnvironmentBuilderInterface $environment): void - { - $tableRenderer = new TableRenderer(); - if ($environment->getConfiguration()->get('table/wrap/enabled')) { - $tableRenderer = new HtmlDecorator($tableRenderer, $environment->getConfiguration()->get('table/wrap/tag'), $environment->getConfiguration()->get('table/wrap/attributes')); - } - - $environment - ->addBlockStartParser(new TableStartParser($environment->getConfiguration()->get('table/max_autocompleted_cells'))) - - ->addRenderer(Table::class, $tableRenderer) - ->addRenderer(TableSection::class, new TableSectionRenderer()) - ->addRenderer(TableRow::class, new TableRowRenderer()) - ->addRenderer(TableCell::class, new TableCellRenderer($environment->getConfiguration()->get('table/alignment_attributes'))); - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Extension/Table/TableParser.php b/docker/streamline-src/vendor/league/commonmark/src/Extension/Table/TableParser.php deleted file mode 100644 index a005f8a9..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Extension/Table/TableParser.php +++ /dev/null @@ -1,212 +0,0 @@ - - * (c) Webuni s.r.o. - * (c) Colin O'Dell - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Extension\Table; - -use League\CommonMark\Parser\Block\AbstractBlockContinueParser; -use League\CommonMark\Parser\Block\BlockContinue; -use League\CommonMark\Parser\Block\BlockContinueParserInterface; -use League\CommonMark\Parser\Block\BlockContinueParserWithInlinesInterface; -use League\CommonMark\Parser\Cursor; -use League\CommonMark\Parser\InlineParserEngineInterface; -use League\CommonMark\Util\ArrayCollection; - -final class TableParser extends AbstractBlockContinueParser implements BlockContinueParserWithInlinesInterface -{ - /** - * @internal - */ - public const DEFAULT_MAX_AUTOCOMPLETED_CELLS = 10_000; - - /** @psalm-readonly */ - private Table $block; - - /** - * @var ArrayCollection - * - * @psalm-readonly-allow-private-mutation - */ - private ArrayCollection $bodyLines; - - /** - * @var array - * @psalm-var array - * @phpstan-var array - * - * @psalm-readonly - */ - private array $columns; - - /** - * @var array - * - * @psalm-readonly-allow-private-mutation - */ - private array $headerCells; - - /** @psalm-readonly-allow-private-mutation */ - private bool $nextIsSeparatorLine = true; - - private int $remainingAutocompletedCells; - - /** - * @param array $columns - * @param array $headerCells - * - * @psalm-param array $columns - * - * @phpstan-param array $columns - */ - public function __construct(array $columns, array $headerCells, int $remainingAutocompletedCells = self::DEFAULT_MAX_AUTOCOMPLETED_CELLS) - { - $this->block = new Table(); - $this->bodyLines = new ArrayCollection(); - $this->columns = $columns; - $this->headerCells = $headerCells; - $this->remainingAutocompletedCells = $remainingAutocompletedCells; - } - - public function canHaveLazyContinuationLines(): bool - { - return true; - } - - public function getBlock(): Table - { - return $this->block; - } - - public function tryContinue(Cursor $cursor, BlockContinueParserInterface $activeBlockParser): ?BlockContinue - { - if (\strpos($cursor->getLine(), '|') === false) { - return BlockContinue::none(); - } - - return BlockContinue::at($cursor); - } - - public function addLine(string $line): void - { - if ($this->nextIsSeparatorLine) { - $this->nextIsSeparatorLine = false; - } else { - $this->bodyLines[] = $line; - } - } - - public function parseInlines(InlineParserEngineInterface $inlineParser): void - { - $headerColumns = \count($this->headerCells); - - $head = new TableSection(TableSection::TYPE_HEAD); - $this->block->appendChild($head); - - $headerRow = new TableRow(); - $head->appendChild($headerRow); - for ($i = 0; $i < $headerColumns; $i++) { - $cell = $this->headerCells[$i]; - $tableCell = $this->parseCell($cell, $i, $inlineParser); - $tableCell->setType(TableCell::TYPE_HEADER); - $headerRow->appendChild($tableCell); - } - - $body = null; - foreach ($this->bodyLines as $rowLine) { - $cells = self::split($rowLine); - $row = new TableRow(); - - // Body can not have more columns than head - for ($i = 0; $i < $headerColumns; $i++) { - // It can have less columns though, in which case we'll autocomplete the empty ones (up to some limit) - if (! isset($cells[$i]) && $this->remainingAutocompletedCells-- <= 0) { - // Too many cells were auto-completed, so we'll just stop here - return; - } - - $cell = $cells[$i] ?? ''; - $tableCell = $this->parseCell($cell, $i, $inlineParser); - $row->appendChild($tableCell); - } - - if ($body === null) { - // It's valid to have a table without body. In that case, don't add an empty TableBody node. - $body = new TableSection(); - $this->block->appendChild($body); - } - - $body->appendChild($row); - } - } - - private function parseCell(string $cell, int $column, InlineParserEngineInterface $inlineParser): TableCell - { - $tableCell = new TableCell(TableCell::TYPE_DATA, $this->columns[$column] ?? null); - - if ($cell !== '') { - $inlineParser->parse(\trim($cell), $tableCell); - } - - return $tableCell; - } - - /** - * @internal - * - * @return array - */ - public static function split(string $line): array - { - $cursor = new Cursor(\trim($line)); - - if ($cursor->getCurrentCharacter() === '|') { - $cursor->advanceBy(1); - } - - $cells = []; - $sb = ''; - - while (! $cursor->isAtEnd()) { - switch ($c = $cursor->getCurrentCharacter()) { - case '\\': - if ($cursor->peek() === '|') { - // Pipe is special for table parsing. An escaped pipe doesn't result in a new cell, but is - // passed down to inline parsing as an unescaped pipe. Note that that applies even for the `\|` - // in an input like `\\|` - in other words, table parsing doesn't support escaping backslashes. - $sb .= '|'; - $cursor->advanceBy(1); - } else { - // Preserve backslash before other characters or at end of line. - $sb .= '\\'; - } - - break; - case '|': - $cells[] = $sb; - $sb = ''; - break; - default: - $sb .= $c; - } - - $cursor->advanceBy(1); - } - - if ($sb !== '') { - $cells[] = $sb; - } - - return $cells; - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Extension/Table/TableStartParser.php b/docker/streamline-src/vendor/league/commonmark/src/Extension/Table/TableStartParser.php deleted file mode 100644 index 7411951c..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Extension/Table/TableStartParser.php +++ /dev/null @@ -1,165 +0,0 @@ - - * (c) Webuni s.r.o. - * (c) Colin O'Dell - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Extension\Table; - -use League\CommonMark\Parser\Block\BlockStart; -use League\CommonMark\Parser\Block\BlockStartParserInterface; -use League\CommonMark\Parser\Block\ParagraphParser; -use League\CommonMark\Parser\Cursor; -use League\CommonMark\Parser\MarkdownParserStateInterface; - -final class TableStartParser implements BlockStartParserInterface -{ - private int $maxAutocompletedCells; - - public function __construct(int $maxAutocompletedCells = TableParser::DEFAULT_MAX_AUTOCOMPLETED_CELLS) - { - $this->maxAutocompletedCells = $maxAutocompletedCells; - } - - public function tryStart(Cursor $cursor, MarkdownParserStateInterface $parserState): ?BlockStart - { - $paragraph = $parserState->getParagraphContent(); - if ($paragraph === null || \strpos($paragraph, '|') === false) { - return BlockStart::none(); - } - - $columns = self::parseSeparator($cursor); - if (\count($columns) === 0) { - return BlockStart::none(); - } - - $lastLineBreak = \strrpos($paragraph, "\n"); - $lastLine = $lastLineBreak === false ? $paragraph : \substr($paragraph, $lastLineBreak + 1); - - $headerCells = TableParser::split($lastLine); - if (\count($headerCells) > \count($columns)) { - return BlockStart::none(); - } - - $cursor->advanceToEnd(); - - $parsers = []; - - if ($lastLineBreak !== false) { - $p = new ParagraphParser(); - $p->addLine(\substr($paragraph, 0, $lastLineBreak)); - $parsers[] = $p; - } - - $parsers[] = new TableParser($columns, $headerCells, $this->maxAutocompletedCells); - - return BlockStart::of(...$parsers) - ->at($cursor) - ->replaceActiveBlockParser(); - } - - /** - * @return array - * - * @psalm-return array - * - * @phpstan-return array - */ - private static function parseSeparator(Cursor $cursor): array - { - $columns = []; - $pipes = 0; - $valid = false; - - while (! $cursor->isAtEnd()) { - switch ($c = $cursor->getCurrentCharacter()) { - case '|': - $cursor->advanceBy(1); - $pipes++; - if ($pipes > 1) { - // More than one adjacent pipe not allowed - return []; - } - - // Need at least one pipe, even for a one-column table - $valid = true; - break; - case '-': - case ':': - if ($pipes === 0 && \count($columns) > 0) { - // Need a pipe after the first column (first column doesn't need to start with one) - return []; - } - - $left = false; - $right = false; - if ($c === ':') { - $left = true; - $cursor->advanceBy(1); - } - - if ($cursor->match('/^-+/') === null) { - // Need at least one dash - return []; - } - - if ($cursor->getCurrentCharacter() === ':') { - $right = true; - $cursor->advanceBy(1); - } - - $columns[] = self::getAlignment($left, $right); - // Next, need another pipe - $pipes = 0; - break; - case ' ': - case "\t": - // White space is allowed between pipes and columns - $cursor->advanceToNextNonSpaceOrTab(); - break; - default: - // Any other character is invalid - return []; - } - } - - if (! $valid) { - return []; - } - - return $columns; - } - - /** - * @psalm-return TableCell::ALIGN_*|null - * - * @phpstan-return TableCell::ALIGN_*|null - * - * @psalm-pure - */ - private static function getAlignment(bool $left, bool $right): ?string - { - if ($left && $right) { - return TableCell::ALIGN_CENTER; - } - - if ($left) { - return TableCell::ALIGN_LEFT; - } - - if ($right) { - return TableCell::ALIGN_RIGHT; - } - - return null; - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Node/Block/Paragraph.php b/docker/streamline-src/vendor/league/commonmark/src/Node/Block/Paragraph.php deleted file mode 100644 index d06d84ea..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Node/Block/Paragraph.php +++ /dev/null @@ -1,23 +0,0 @@ - - * - * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) - * - (c) John MacFarlane - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Node\Block; - -class Paragraph extends AbstractBlock -{ - /** @internal */ - public bool $onlyContainsLinkReferenceDefinitions = false; -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Normalizer/SlugNormalizer.php b/docker/streamline-src/vendor/league/commonmark/src/Normalizer/SlugNormalizer.php deleted file mode 100644 index 7cfb960e..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Normalizer/SlugNormalizer.php +++ /dev/null @@ -1,57 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Normalizer; - -use League\Config\ConfigurationAwareInterface; -use League\Config\ConfigurationInterface; - -/** - * Creates URL-friendly strings based on the given string input - */ -final class SlugNormalizer implements TextNormalizerInterface, ConfigurationAwareInterface -{ - /** @psalm-allow-private-mutation */ - private int $defaultMaxLength = 255; - - public function setConfiguration(ConfigurationInterface $configuration): void - { - $this->defaultMaxLength = $configuration->get('slug_normalizer/max_length'); - } - - /** - * {@inheritDoc} - * - * @psalm-immutable - */ - public function normalize(string $text, array $context = []): string - { - // Add any requested prefix - $slug = ($context['prefix'] ?? '') . $text; - // Trim whitespace - $slug = \trim($slug); - // Convert to lowercase - $slug = \mb_strtolower($slug, 'UTF-8'); - // Try replacing whitespace with a dash - $slug = \preg_replace('/\s+/u', '-', $slug) ?? $slug; - // Try removing characters other than letters, numbers, and marks. - $slug = \preg_replace('/[^\p{L}\p{Nd}\p{Nl}\p{M}-]+/u', '', $slug) ?? $slug; - // Trim to requested length if given - if ($length = $context['length'] ?? $this->defaultMaxLength) { - $slug = \mb_substr($slug, 0, $length, 'UTF-8'); - } - - // @phpstan-ignore-next-line Because it thinks mb_substr() returns false on PHP 7.4 - return $slug; - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Normalizer/TextNormalizer.php b/docker/streamline-src/vendor/league/commonmark/src/Normalizer/TextNormalizer.php deleted file mode 100644 index 43eb1174..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Normalizer/TextNormalizer.php +++ /dev/null @@ -1,44 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace League\CommonMark\Normalizer; - -/*** - * Normalize text input using the steps given by the CommonMark spec to normalize labels - * - * @see https://spec.commonmark.org/0.29/#matches - * - * @psalm-immutable - */ -final class TextNormalizer implements TextNormalizerInterface -{ - /** - * {@inheritDoc} - * - * @psalm-pure - */ - public function normalize(string $text, array $context = []): string - { - // Collapse internal whitespace to single space and remove - // leading/trailing whitespace - $text = \preg_replace('/[ \t\r\n]+/', ' ', \trim($text)); - \assert(\is_string($text)); - - // Is it strictly ASCII? If so, we can use strtolower() instead (faster) - if (\mb_check_encoding($text, 'ASCII')) { - return \strtolower($text); - } - - return \mb_convert_case($text, \MB_CASE_FOLD, 'UTF-8'); - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Parser/Block/DocumentBlockParser.php b/docker/streamline-src/vendor/league/commonmark/src/Parser/Block/DocumentBlockParser.php deleted file mode 100644 index c03c24ef..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Parser/Block/DocumentBlockParser.php +++ /dev/null @@ -1,80 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Parser\Block; - -use League\CommonMark\Node\Block\AbstractBlock; -use League\CommonMark\Node\Block\Document; -use League\CommonMark\Node\Block\Paragraph; -use League\CommonMark\Parser\Cursor; -use League\CommonMark\Reference\ReferenceMapInterface; - -/** - * Parser implementation which ensures everything is added to the root-level Document - */ -final class DocumentBlockParser extends AbstractBlockContinueParser -{ - /** @psalm-readonly */ - private Document $document; - - public function __construct(ReferenceMapInterface $referenceMap) - { - $this->document = new Document($referenceMap); - } - - public function getBlock(): Document - { - return $this->document; - } - - public function isContainer(): bool - { - return true; - } - - public function canContain(AbstractBlock $childBlock): bool - { - return true; - } - - public function tryContinue(Cursor $cursor, BlockContinueParserInterface $activeBlockParser): ?BlockContinue - { - return BlockContinue::at($cursor); - } - - public function closeBlock(): void - { - $this->removeLinkReferenceDefinitions(); - } - - private function removeLinkReferenceDefinitions(): void - { - $emptyNodes = []; - - $walker = $this->document->walker(); - while ($event = $walker->next()) { - $node = $event->getNode(); - // TODO for v3: It would be great if we could find an alternate way to identify such paragraphs. - // Unfortunately, we can't simply check for empty paragraphs here because inlines haven't been processed yet, - // meaning all paragraphs will appear blank here, and we don't have a way to check the status of the reference parser - // which is attached to the (already-closed) paragraph parser. - if ($event->isEntering() && $node instanceof Paragraph && $node->onlyContainsLinkReferenceDefinitions) { - $emptyNodes[] = $node; - } - } - - foreach ($emptyNodes as $node) { - $node->detach(); - } - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Parser/Block/ParagraphParser.php b/docker/streamline-src/vendor/league/commonmark/src/Parser/Block/ParagraphParser.php deleted file mode 100644 index f9312be9..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Parser/Block/ParagraphParser.php +++ /dev/null @@ -1,85 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Parser\Block; - -use League\CommonMark\Node\Block\Paragraph; -use League\CommonMark\Parser\Cursor; -use League\CommonMark\Parser\InlineParserEngineInterface; -use League\CommonMark\Reference\ReferenceInterface; -use League\CommonMark\Reference\ReferenceParser; - -final class ParagraphParser extends AbstractBlockContinueParser implements BlockContinueParserWithInlinesInterface -{ - /** @psalm-readonly */ - private Paragraph $block; - - /** @psalm-readonly */ - private ReferenceParser $referenceParser; - - public function __construct() - { - $this->block = new Paragraph(); - $this->referenceParser = new ReferenceParser(); - } - - public function canHaveLazyContinuationLines(): bool - { - return true; - } - - public function getBlock(): Paragraph - { - return $this->block; - } - - public function tryContinue(Cursor $cursor, BlockContinueParserInterface $activeBlockParser): ?BlockContinue - { - if ($cursor->isBlank()) { - return BlockContinue::none(); - } - - return BlockContinue::at($cursor); - } - - public function addLine(string $line): void - { - $this->referenceParser->parse($line); - } - - public function closeBlock(): void - { - $this->block->onlyContainsLinkReferenceDefinitions = $this->referenceParser->hasReferences() && $this->referenceParser->getParagraphContent() === ''; - } - - public function parseInlines(InlineParserEngineInterface $inlineParser): void - { - $content = $this->getContentString(); - if ($content !== '') { - $inlineParser->parse($content, $this->block); - } - } - - public function getContentString(): string - { - return $this->referenceParser->getParagraphContent(); - } - - /** - * @return ReferenceInterface[] - */ - public function getReferences(): iterable - { - return $this->referenceParser->getReferences(); - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Parser/Cursor.php b/docker/streamline-src/vendor/league/commonmark/src/Parser/Cursor.php deleted file mode 100644 index 598cd75b..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Parser/Cursor.php +++ /dev/null @@ -1,494 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Parser; - -use League\CommonMark\Exception\UnexpectedEncodingException; - -class Cursor -{ - public const INDENT_LEVEL = 4; - - /** @psalm-readonly */ - private string $line; - - /** @psalm-readonly */ - private int $length; - - /** - * @var int - * - * It's possible for this to be 1 char past the end, meaning we've parsed all chars and have - * reached the end. In this state, any character-returning method MUST return null. - */ - private int $currentPosition = 0; - - private int $column = 0; - - private int $indent = 0; - - private int $previousPosition = 0; - - private ?int $nextNonSpaceCache = null; - - private bool $partiallyConsumedTab = false; - - /** - * @var int|false - * - * @psalm-readonly - */ - private $lastTabPosition; - - /** @psalm-readonly */ - private bool $isMultibyte; - - /** @var array */ - private array $charCache = []; - - /** - * @param string $line The line being parsed (ASCII or UTF-8) - */ - public function __construct(string $line) - { - if (! \mb_check_encoding($line, 'UTF-8')) { - throw new UnexpectedEncodingException('Unexpected encoding - UTF-8 or ASCII was expected'); - } - - $this->line = $line; - $this->length = \mb_strlen($line, 'UTF-8') ?: 0; - $this->isMultibyte = $this->length !== \strlen($line); - $this->lastTabPosition = $this->isMultibyte ? \mb_strrpos($line, "\t", 0, 'UTF-8') : \strrpos($line, "\t"); - } - - /** - * Returns the position of the next character which is not a space (or tab) - */ - public function getNextNonSpacePosition(): int - { - if ($this->nextNonSpaceCache !== null) { - return $this->nextNonSpaceCache; - } - - if ($this->currentPosition >= $this->length) { - return $this->length; - } - - $cols = $this->column; - - for ($i = $this->currentPosition; $i < $this->length; $i++) { - // This if-else was copied out of getCharacter() for performance reasons - if ($this->isMultibyte) { - $c = $this->charCache[$i] ??= \mb_substr($this->line, $i, 1, 'UTF-8'); - } else { - $c = $this->line[$i]; - } - - if ($c === ' ') { - $cols++; - } elseif ($c === "\t") { - $cols += 4 - ($cols % 4); - } else { - break; - } - } - - $this->indent = $cols - $this->column; - - return $this->nextNonSpaceCache = $i; - } - - /** - * Returns the next character which isn't a space (or tab) - */ - public function getNextNonSpaceCharacter(): ?string - { - $index = $this->getNextNonSpacePosition(); - if ($index >= $this->length) { - return null; - } - - if ($this->isMultibyte) { - return $this->charCache[$index] ??= \mb_substr($this->line, $index, 1, 'UTF-8'); - } - - return $this->line[$index]; - } - - /** - * Calculates the current indent (number of spaces after current position) - */ - public function getIndent(): int - { - if ($this->nextNonSpaceCache === null) { - $this->getNextNonSpacePosition(); - } - - return $this->indent; - } - - /** - * Whether the cursor is indented to INDENT_LEVEL - */ - public function isIndented(): bool - { - if ($this->nextNonSpaceCache === null) { - $this->getNextNonSpacePosition(); - } - - return $this->indent >= self::INDENT_LEVEL; - } - - public function getCharacter(?int $index = null): ?string - { - if ($index === null) { - $index = $this->currentPosition; - } - - // Index out-of-bounds, or we're at the end - if ($index < 0 || $index >= $this->length) { - return null; - } - - if ($this->isMultibyte) { - return $this->charCache[$index] ??= \mb_substr($this->line, $index, 1, 'UTF-8'); - } - - return $this->line[$index]; - } - - /** - * Slightly-optimized version of getCurrent(null) - */ - public function getCurrentCharacter(): ?string - { - if ($this->currentPosition >= $this->length) { - return null; - } - - if ($this->isMultibyte) { - return $this->charCache[$this->currentPosition] ??= \mb_substr($this->line, $this->currentPosition, 1, 'UTF-8'); - } - - return $this->line[$this->currentPosition]; - } - - /** - * Returns the next character (or null, if none) without advancing forwards - */ - public function peek(int $offset = 1): ?string - { - return $this->getCharacter($this->currentPosition + $offset); - } - - /** - * Whether the remainder is blank - */ - public function isBlank(): bool - { - return $this->nextNonSpaceCache === $this->length || $this->getNextNonSpacePosition() === $this->length; - } - - /** - * Move the cursor forwards - */ - public function advance(): void - { - $this->advanceBy(1); - } - - /** - * Move the cursor forwards - * - * @param int $characters Number of characters to advance by - * @param bool $advanceByColumns Whether to advance by columns instead of spaces - */ - public function advanceBy(int $characters, bool $advanceByColumns = false): void - { - $this->previousPosition = $this->currentPosition; - $this->nextNonSpaceCache = null; - - if ($this->currentPosition >= $this->length || $characters === 0) { - return; - } - - // Optimization to avoid tab handling logic if we have no tabs - if ($this->lastTabPosition === false || $this->currentPosition > $this->lastTabPosition) { - $length = \min($characters, $this->length - $this->currentPosition); - $this->partiallyConsumedTab = false; - $this->currentPosition += $length; - $this->column += $length; - - return; - } - - $nextFewChars = $this->isMultibyte ? - \mb_substr($this->line, $this->currentPosition, $characters, 'UTF-8') : - \substr($this->line, $this->currentPosition, $characters); - - if ($characters === 1) { - $asArray = [$nextFewChars]; - } elseif ($this->isMultibyte) { - /** @var string[] $asArray */ - $asArray = \mb_str_split($nextFewChars, 1, 'UTF-8'); - } else { - $asArray = \str_split($nextFewChars); - } - - foreach ($asArray as $c) { - if ($c === "\t") { - $charsToTab = 4 - ($this->column % 4); - if ($advanceByColumns) { - $this->partiallyConsumedTab = $charsToTab > $characters; - $charsToAdvance = $charsToTab > $characters ? $characters : $charsToTab; - $this->column += $charsToAdvance; - $this->currentPosition += $this->partiallyConsumedTab ? 0 : 1; - $characters -= $charsToAdvance; - } else { - $this->partiallyConsumedTab = false; - $this->column += $charsToTab; - $this->currentPosition++; - $characters--; - } - } else { - $this->partiallyConsumedTab = false; - $this->currentPosition++; - $this->column++; - $characters--; - } - - if ($characters <= 0) { - break; - } - } - } - - /** - * Advances the cursor by a single space or tab, if present - */ - public function advanceBySpaceOrTab(): bool - { - $character = $this->getCurrentCharacter(); - - if ($character === ' ' || $character === "\t") { - $this->advanceBy(1, true); - - return true; - } - - return false; - } - - /** - * Parse zero or more space/tab characters - * - * @return int Number of positions moved - */ - public function advanceToNextNonSpaceOrTab(): int - { - $newPosition = $this->nextNonSpaceCache ?? $this->getNextNonSpacePosition(); - if ($newPosition === $this->currentPosition) { - return 0; - } - - $this->advanceBy($newPosition - $this->currentPosition); - $this->partiallyConsumedTab = false; - - // We've just advanced to where that non-space is, - // so any subsequent calls to find the next one will - // always return the current position. - $this->nextNonSpaceCache = $this->currentPosition; - $this->indent = 0; - - return $this->currentPosition - $this->previousPosition; - } - - /** - * Parse zero or more space characters, including at most one newline. - * - * Tab characters are not parsed with this function. - * - * @return int Number of positions moved - */ - public function advanceToNextNonSpaceOrNewline(): int - { - $currentCharacter = $this->getCurrentCharacter(); - - // Optimization: Avoid the regex if we know there are no spaces or newlines - if ($currentCharacter !== ' ' && $currentCharacter !== "\n") { - $this->previousPosition = $this->currentPosition; - - return 0; - } - - $matches = []; - \preg_match('/^ *(?:\n *)?/', $this->getRemainder(), $matches, \PREG_OFFSET_CAPTURE); - - // [0][0] contains the matched text - // [0][1] contains the index of that match - \assert(isset($matches[0])); - $increment = $matches[0][1] + \strlen($matches[0][0]); - - $this->advanceBy($increment); - - return $this->currentPosition - $this->previousPosition; - } - - /** - * Move the position to the very end of the line - * - * @return int The number of characters moved - */ - public function advanceToEnd(): int - { - $this->previousPosition = $this->currentPosition; - $this->nextNonSpaceCache = null; - - $this->currentPosition = $this->length; - - return $this->currentPosition - $this->previousPosition; - } - - public function getRemainder(): string - { - if ($this->currentPosition >= $this->length) { - return ''; - } - - $prefix = ''; - $position = $this->currentPosition; - if ($this->partiallyConsumedTab) { - $position++; - $charsToTab = 4 - ($this->column % 4); - $prefix = \str_repeat(' ', $charsToTab); - } - - $subString = $this->isMultibyte ? - \mb_substr($this->line, $position, null, 'UTF-8') : - \substr($this->line, $position); - - return $prefix . $subString; - } - - public function getLine(): string - { - return $this->line; - } - - public function isAtEnd(): bool - { - return $this->currentPosition >= $this->length; - } - - /** - * Try to match a regular expression - * - * Returns the matching text and advances to the end of that match - * - * @psalm-param non-empty-string $regex - */ - public function match(string $regex): ?string - { - $subject = $this->getRemainder(); - - if (! \preg_match($regex, $subject, $matches, \PREG_OFFSET_CAPTURE)) { - return null; - } - - // $matches[0][0] contains the matched text - // $matches[0][1] contains the index of that match - - if ($this->isMultibyte) { - // PREG_OFFSET_CAPTURE always returns the byte offset, not the char offset, which is annoying - $offset = \mb_strlen(\substr($subject, 0, $matches[0][1]), 'UTF-8'); - $matchLength = \mb_strlen($matches[0][0], 'UTF-8'); - } else { - $offset = $matches[0][1]; - $matchLength = \strlen($matches[0][0]); - } - - // [0][0] contains the matched text - // [0][1] contains the index of that match - $this->advanceBy($offset + $matchLength); - - return $matches[0][0]; - } - - /** - * Encapsulates the current state of this cursor in case you need to rollback later. - * - * WARNING: Do not parse or use the return value for ANYTHING except for - * passing it back into restoreState(), as the number of values and their - * contents may change in any future release without warning. - */ - public function saveState(): CursorState - { - return new CursorState([ - $this->currentPosition, - $this->previousPosition, - $this->nextNonSpaceCache, - $this->indent, - $this->column, - $this->partiallyConsumedTab, - ]); - } - - /** - * Restore the cursor to a previous state. - * - * Pass in the value previously obtained by calling saveState(). - */ - public function restoreState(CursorState $state): void - { - [ - $this->currentPosition, - $this->previousPosition, - $this->nextNonSpaceCache, - $this->indent, - $this->column, - $this->partiallyConsumedTab, - ] = $state->toArray(); - } - - public function getPosition(): int - { - return $this->currentPosition; - } - - public function getPreviousText(): string - { - if ($this->isMultibyte) { - return \mb_substr($this->line, $this->previousPosition, $this->currentPosition - $this->previousPosition, 'UTF-8'); - } - - return \substr($this->line, $this->previousPosition, $this->currentPosition - $this->previousPosition); - } - - public function getSubstring(int $start, ?int $length = null): string - { - if ($this->isMultibyte) { - return \mb_substr($this->line, $start, $length, 'UTF-8'); - } - - if ($length !== null) { - return \substr($this->line, $start, $length); - } - - return \substr($this->line, $start); - } - - public function getColumn(): int - { - return $this->column; - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Parser/InlineParserContext.php b/docker/streamline-src/vendor/league/commonmark/src/Parser/InlineParserContext.php deleted file mode 100644 index 93729042..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Parser/InlineParserContext.php +++ /dev/null @@ -1,120 +0,0 @@ - - * - * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) - * - (c) John MacFarlane - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Parser; - -use League\CommonMark\Delimiter\DelimiterStack; -use League\CommonMark\Node\Block\AbstractBlock; -use League\CommonMark\Reference\ReferenceMapInterface; - -final class InlineParserContext -{ - /** @psalm-readonly */ - private AbstractBlock $container; - - /** @psalm-readonly */ - private ReferenceMapInterface $referenceMap; - - /** @psalm-readonly */ - private Cursor $cursor; - - /** @psalm-readonly */ - private DelimiterStack $delimiterStack; - - /** - * @var string[] - * @psalm-var non-empty-array - * - * @psalm-readonly-allow-private-mutation - */ - private array $matches; - - public function __construct(Cursor $contents, AbstractBlock $container, ReferenceMapInterface $referenceMap, int $maxDelimitersPerLine = PHP_INT_MAX) - { - $this->referenceMap = $referenceMap; - $this->container = $container; - $this->cursor = $contents; - $this->delimiterStack = new DelimiterStack($maxDelimitersPerLine); - } - - public function getContainer(): AbstractBlock - { - return $this->container; - } - - public function getReferenceMap(): ReferenceMapInterface - { - return $this->referenceMap; - } - - public function getCursor(): Cursor - { - return $this->cursor; - } - - public function getDelimiterStack(): DelimiterStack - { - return $this->delimiterStack; - } - - /** - * @return string The full text that matched the InlineParserMatch definition - */ - public function getFullMatch(): string - { - return $this->matches[0]; - } - - /** - * @return int The length of the full match (in characters, not bytes) - */ - public function getFullMatchLength(): int - { - return \mb_strlen($this->matches[0], 'UTF-8'); - } - - /** - * @return string[] Similar to preg_match(), index 0 will contain the full match, and any other array elements will be captured sub-matches - * - * @psalm-return non-empty-array - */ - public function getMatches(): array - { - return $this->matches; - } - - /** - * @return string[] - */ - public function getSubMatches(): array - { - return \array_slice($this->matches, 1); - } - - /** - * @param string[] $matches - * - * @psalm-param non-empty-array $matches - */ - public function withMatches(array $matches): InlineParserContext - { - $ctx = clone $this; - - $ctx->matches = $matches; - - return $ctx; - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Parser/InlineParserEngine.php b/docker/streamline-src/vendor/league/commonmark/src/Parser/InlineParserEngine.php deleted file mode 100644 index 6a269793..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Parser/InlineParserEngine.php +++ /dev/null @@ -1,177 +0,0 @@ - - * - * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) - * - (c) John MacFarlane - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Parser; - -use League\CommonMark\Environment\EnvironmentInterface; -use League\CommonMark\Node\Block\AbstractBlock; -use League\CommonMark\Node\Inline\AdjacentTextMerger; -use League\CommonMark\Node\Inline\Text; -use League\CommonMark\Parser\Inline\InlineParserInterface; -use League\CommonMark\Reference\ReferenceMapInterface; - -/** - * @internal - */ -final class InlineParserEngine implements InlineParserEngineInterface -{ - /** @psalm-readonly */ - private EnvironmentInterface $environment; - - /** @psalm-readonly */ - private ReferenceMapInterface $referenceMap; - - /** - * @var array - * @psalm-var list - * @phpstan-var array - */ - private array $parsers = []; - - public function __construct(EnvironmentInterface $environment, ReferenceMapInterface $referenceMap) - { - $this->environment = $environment; - $this->referenceMap = $referenceMap; - - foreach ($environment->getInlineParsers() as $parser) { - \assert($parser instanceof InlineParserInterface); - $regex = $parser->getMatchDefinition()->getRegex(); - - $this->parsers[] = [$parser, $regex, \strlen($regex) !== \mb_strlen($regex, 'UTF-8')]; - } - } - - public function parse(string $contents, AbstractBlock $block): void - { - $contents = \trim($contents); - $cursor = new Cursor($contents); - - $inlineParserContext = new InlineParserContext($cursor, $block, $this->referenceMap, $this->environment->getConfiguration()->get('max_delimiters_per_line')); - - // Have all parsers look at the line to determine what they might want to parse and what positions they exist at - foreach ($this->matchParsers($contents) as $matchPosition => $parsers) { - $currentPosition = $cursor->getPosition(); - // We've already gone past this point - if ($currentPosition > $matchPosition) { - continue; - } - - // We've skipped over some uninteresting text that should be added as a plain text node - if ($currentPosition < $matchPosition) { - $cursor->advanceBy($matchPosition - $currentPosition); - $this->addPlainText($cursor->getPreviousText(), $block); - } - - // We're now at a potential start - see which of the current parsers can handle it - $parsed = false; - foreach ($parsers as [$parser, $matches]) { - \assert($parser instanceof InlineParserInterface); - if ($parser->parse($inlineParserContext->withMatches($matches))) { - // A parser has successfully handled the text at the given position; don't consider any others at this position - $parsed = true; - break; - } - } - - if ($parsed) { - continue; - } - - // Despite potentially being interested, nothing actually parsed text here, so add the current character and continue onwards - $this->addPlainText((string) $cursor->getCurrentCharacter(), $block); - $cursor->advance(); - } - - // Add any remaining text that wasn't parsed - if (! $cursor->isAtEnd()) { - $this->addPlainText($cursor->getRemainder(), $block); - } - - // Process any delimiters that were found - $delimiterStack = $inlineParserContext->getDelimiterStack(); - $delimiterStack->processDelimiters(null, $this->environment->getDelimiterProcessors()); - $delimiterStack->removeAll(); - - // Combine adjacent text notes into one - AdjacentTextMerger::mergeChildNodes($block); - } - - private function addPlainText(string $text, AbstractBlock $container): void - { - $lastInline = $container->lastChild(); - if ($lastInline instanceof Text && ! $lastInline->data->has('delim')) { - $lastInline->append($text); - } else { - $container->appendChild(new Text($text)); - } - } - - /** - * Given the current line, ask all the parsers which parts of the text they would be interested in parsing. - * - * The resulting array provides a list of character positions, which parsers are interested in trying to parse - * the text at those points, and (for convenience/optimization) what the matching text happened to be. - * - * @return array> - * - * @psalm-return array}>> - * - * @phpstan-return array}>> - */ - private function matchParsers(string $contents): array - { - $contents = \trim($contents); - $isMultibyte = ! \mb_check_encoding($contents, 'ASCII'); - - $ret = []; - - foreach ($this->parsers as [$parser, $regex, $isRegexMultibyte]) { - if ($isMultibyte || $isRegexMultibyte) { - $regex .= 'u'; - } - - // See if the parser's InlineParserMatch regex matched against any part of the string - if (! \preg_match_all($regex, $contents, $matches, \PREG_OFFSET_CAPTURE | \PREG_SET_ORDER)) { - continue; - } - - // For each part that matched... - foreach ($matches as $match) { - if ($isMultibyte) { - // PREG_OFFSET_CAPTURE always returns the byte offset, not the char offset, which is annoying - $offset = \mb_strlen(\substr($contents, 0, $match[0][1]), 'UTF-8'); - } else { - $offset = \intval($match[0][1]); - } - - // Remove the offsets, keeping only the matched text - $m = \array_column($match, 0); - - if ($m === []) { - continue; - } - - // Add this match to the list of character positions to stop at - $ret[$offset][] = [$parser, $m]; - } - } - - // Sort matches by position so we visit them in order - \ksort($ret); - - return $ret; - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Parser/MarkdownParser.php b/docker/streamline-src/vendor/league/commonmark/src/Parser/MarkdownParser.php deleted file mode 100644 index 904c7c45..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Parser/MarkdownParser.php +++ /dev/null @@ -1,356 +0,0 @@ - - * - * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) - * - (c) John MacFarlane - * - * Additional code based on commonmark-java (https://github.com/commonmark/commonmark-java) - * - (c) Atlassian Pty Ltd - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Parser; - -use League\CommonMark\Environment\EnvironmentInterface; -use League\CommonMark\Event\DocumentParsedEvent; -use League\CommonMark\Event\DocumentPreParsedEvent; -use League\CommonMark\Exception\CommonMarkException; -use League\CommonMark\Input\MarkdownInput; -use League\CommonMark\Node\Block\Document; -use League\CommonMark\Node\Block\Paragraph; -use League\CommonMark\Parser\Block\BlockContinueParserInterface; -use League\CommonMark\Parser\Block\BlockContinueParserWithInlinesInterface; -use League\CommonMark\Parser\Block\BlockStart; -use League\CommonMark\Parser\Block\BlockStartParserInterface; -use League\CommonMark\Parser\Block\DocumentBlockParser; -use League\CommonMark\Parser\Block\ParagraphParser; -use League\CommonMark\Reference\MemoryLimitedReferenceMap; -use League\CommonMark\Reference\ReferenceInterface; -use League\CommonMark\Reference\ReferenceMap; - -final class MarkdownParser implements MarkdownParserInterface -{ - /** @psalm-readonly */ - private EnvironmentInterface $environment; - - /** @psalm-readonly-allow-private-mutation */ - private int $maxNestingLevel; - - /** @psalm-readonly-allow-private-mutation */ - private ReferenceMap $referenceMap; - - /** @psalm-readonly-allow-private-mutation */ - private int $lineNumber = 0; - - /** @psalm-readonly-allow-private-mutation */ - private Cursor $cursor; - - /** - * @var array - * - * @psalm-readonly-allow-private-mutation - */ - private array $activeBlockParsers = []; - - /** - * @var array - * - * @psalm-readonly-allow-private-mutation - */ - private array $closedBlockParsers = []; - - public function __construct(EnvironmentInterface $environment) - { - $this->environment = $environment; - } - - private function initialize(): void - { - $this->referenceMap = new ReferenceMap(); - $this->lineNumber = 0; - $this->activeBlockParsers = []; - $this->closedBlockParsers = []; - - $this->maxNestingLevel = $this->environment->getConfiguration()->get('max_nesting_level'); - } - - /** - * @throws CommonMarkException - */ - public function parse(string $input): Document - { - $this->initialize(); - - $documentParser = new DocumentBlockParser($this->referenceMap); - $this->activateBlockParser($documentParser); - - $preParsedEvent = new DocumentPreParsedEvent($documentParser->getBlock(), new MarkdownInput($input)); - $this->environment->dispatch($preParsedEvent); - $markdownInput = $preParsedEvent->getMarkdown(); - - foreach ($markdownInput->getLines() as $lineNumber => $line) { - $this->lineNumber = $lineNumber; - $this->parseLine($line); - } - - // finalizeAndProcess - $this->closeBlockParsers(\count($this->activeBlockParsers), $this->lineNumber); - $this->processInlines(\strlen($input)); - - $this->environment->dispatch(new DocumentParsedEvent($documentParser->getBlock())); - - return $documentParser->getBlock(); - } - - /** - * Analyze a line of text and update the document appropriately. We parse markdown text by calling this on each - * line of input, then finalizing the document. - */ - private function parseLine(string $line): void - { - // replace NUL characters for security - $line = \str_replace("\0", "\u{FFFD}", $line); - - $this->cursor = new Cursor($line); - - $matches = $this->parseBlockContinuation(); - if ($matches === null) { - return; - } - - $unmatchedBlocks = \count($this->activeBlockParsers) - $matches; - $blockParser = $this->activeBlockParsers[$matches - 1]; - $startedNewBlock = false; - - // Unless last matched container is a code block, try new container starts, - // adding children to the last matched container: - $tryBlockStarts = $blockParser->getBlock() instanceof Paragraph || $blockParser->isContainer(); - while ($tryBlockStarts) { - // this is a little performance optimization - if ($this->cursor->isBlank()) { - $this->cursor->advanceToEnd(); - break; - } - - if ($blockParser->getBlock()->getDepth() >= $this->maxNestingLevel) { - break; - } - - $blockStart = $this->findBlockStart($blockParser); - if ($blockStart === null || $blockStart->isAborting()) { - $this->cursor->advanceToNextNonSpaceOrTab(); - break; - } - - if (($state = $blockStart->getCursorState()) !== null) { - $this->cursor->restoreState($state); - } - - $startedNewBlock = true; - - // We're starting a new block. If we have any previous blocks that need to be closed, we need to do it now. - if ($unmatchedBlocks > 0) { - $this->closeBlockParsers($unmatchedBlocks, $this->lineNumber - 1); - $unmatchedBlocks = 0; - } - - $oldBlockLineStart = null; - if ($blockStart->isReplaceActiveBlockParser()) { - $oldBlockLineStart = $this->prepareActiveBlockParserForReplacement(); - } - - foreach ($blockStart->getBlockParsers() as $newBlockParser) { - $blockParser = $this->addChild($newBlockParser, $oldBlockLineStart); - $tryBlockStarts = $newBlockParser->isContainer(); - } - } - - // What remains at the offset is a text line. Add the text to the appropriate block. - - // First check for a lazy paragraph continuation: - if (! $startedNewBlock && ! $this->cursor->isBlank() && $this->getActiveBlockParser()->canHaveLazyContinuationLines()) { - $this->getActiveBlockParser()->addLine($this->cursor->getRemainder()); - } else { - // finalize any blocks not matched - if ($unmatchedBlocks > 0) { - $this->closeBlockParsers($unmatchedBlocks, $this->lineNumber - 1); - } - - if (! $blockParser->isContainer()) { - $this->getActiveBlockParser()->addLine($this->cursor->getRemainder()); - } elseif (! $this->cursor->isBlank()) { - $this->addChild(new ParagraphParser()); - $this->getActiveBlockParser()->addLine($this->cursor->getRemainder()); - } - } - } - - private function parseBlockContinuation(): ?int - { - // For each containing block, try to parse the associated line start. - // The document will always match, so we can skip the first block parser and start at 1 matches - $matches = 1; - for ($i = 1; $i < \count($this->activeBlockParsers); $i++) { - $blockParser = $this->activeBlockParsers[$i]; - $blockContinue = $blockParser->tryContinue(clone $this->cursor, $this->getActiveBlockParser()); - if ($blockContinue === null) { - break; - } - - if ($blockContinue->isFinalize()) { - $this->closeBlockParsers(\count($this->activeBlockParsers) - $i, $this->lineNumber); - - return null; - } - - if (($state = $blockContinue->getCursorState()) !== null) { - $this->cursor->restoreState($state); - } - - $matches++; - } - - return $matches; - } - - private function findBlockStart(BlockContinueParserInterface $lastMatchedBlockParser): ?BlockStart - { - $matchedBlockParser = new MarkdownParserState($this->getActiveBlockParser(), $lastMatchedBlockParser); - - foreach ($this->environment->getBlockStartParsers() as $blockStartParser) { - \assert($blockStartParser instanceof BlockStartParserInterface); - if (($result = $blockStartParser->tryStart(clone $this->cursor, $matchedBlockParser)) !== null) { - return $result; - } - } - - return null; - } - - private function closeBlockParsers(int $count, int $endLineNumber): void - { - for ($i = 0; $i < $count; $i++) { - $blockParser = $this->deactivateBlockParser(); - $this->finalize($blockParser, $endLineNumber); - - // phpcs:disable SlevomatCodingStandard.ControlStructures.EarlyExit.EarlyExitNotUsed - if ($blockParser instanceof BlockContinueParserWithInlinesInterface) { - // Remember for inline parsing - $this->closedBlockParsers[] = $blockParser; - } - } - } - - /** - * Finalize a block. Close it and do any necessary postprocessing, e.g. creating string_content from strings, - * setting the 'tight' or 'loose' status of a list, and parsing the beginnings of paragraphs for reference - * definitions. - */ - private function finalize(BlockContinueParserInterface $blockParser, int $endLineNumber): void - { - if ($blockParser instanceof ParagraphParser) { - $this->updateReferenceMap($blockParser->getReferences()); - } - - $blockParser->getBlock()->setEndLine($endLineNumber); - $blockParser->closeBlock(); - } - - /** - * Walk through a block & children recursively, parsing string content into inline content where appropriate. - */ - private function processInlines(int $inputSize): void - { - $p = new InlineParserEngine($this->environment, new MemoryLimitedReferenceMap($this->referenceMap, $inputSize)); - - foreach ($this->closedBlockParsers as $blockParser) { - $blockParser->parseInlines($p); - } - } - - /** - * Add block of type tag as a child of the tip. If the tip can't accept children, close and finalize it and try - * its parent, and so on til we find a block that can accept children. - */ - private function addChild(BlockContinueParserInterface $blockParser, ?int $startLineNumber = null): BlockContinueParserInterface - { - $blockParser->getBlock()->setStartLine($startLineNumber ?? $this->lineNumber); - - while (! $this->getActiveBlockParser()->canContain($blockParser->getBlock())) { - $this->closeBlockParsers(1, ($startLineNumber ?? $this->lineNumber) - 1); - } - - $this->getActiveBlockParser()->getBlock()->appendChild($blockParser->getBlock()); - $this->activateBlockParser($blockParser); - - return $blockParser; - } - - private function activateBlockParser(BlockContinueParserInterface $blockParser): void - { - $this->activeBlockParsers[] = $blockParser; - } - - /** - * @throws ParserLogicException - */ - private function deactivateBlockParser(): BlockContinueParserInterface - { - $popped = \array_pop($this->activeBlockParsers); - if ($popped === null) { - throw new ParserLogicException('The last block parser should not be deactivated'); - } - - return $popped; - } - - /** - * @return int|null The line number where the old block started - */ - private function prepareActiveBlockParserForReplacement(): ?int - { - // Note that we don't want to parse inlines or finalize this block, as it's getting replaced. - $old = $this->deactivateBlockParser(); - - if ($old instanceof ParagraphParser) { - $this->updateReferenceMap($old->getReferences()); - } - - $old->getBlock()->detach(); - - return $old->getBlock()->getStartLine(); - } - - /** - * @param ReferenceInterface[] $references - */ - private function updateReferenceMap(iterable $references): void - { - foreach ($references as $reference) { - if (! $this->referenceMap->contains($reference->getLabel())) { - $this->referenceMap->add($reference); - } - } - } - - /** - * @throws ParserLogicException - */ - public function getActiveBlockParser(): BlockContinueParserInterface - { - $active = \end($this->activeBlockParsers); - if ($active === false) { - throw new ParserLogicException('No active block parsers are available'); - } - - return $active; - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Reference/ReferenceMap.php b/docker/streamline-src/vendor/league/commonmark/src/Reference/ReferenceMap.php deleted file mode 100644 index 97a167dc..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Reference/ReferenceMap.php +++ /dev/null @@ -1,85 +0,0 @@ - - * - * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) - * - (c) John MacFarlane - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Reference; - -use League\CommonMark\Normalizer\TextNormalizer; - -/** - * A collection of references, indexed by label - */ -final class ReferenceMap implements ReferenceMapInterface -{ - /** @psalm-readonly */ - private TextNormalizer $normalizer; - - /** - * @var array - * - * @psalm-readonly-allow-private-mutation - */ - private array $references = []; - - public function __construct() - { - $this->normalizer = new TextNormalizer(); - } - - public function add(ReferenceInterface $reference): void - { - // Normalize the key - $key = $this->normalizer->normalize($reference->getLabel()); - // Store the reference - $this->references[$key] = $reference; - } - - public function contains(string $label): bool - { - if ($this->references === []) { - return false; - } - - $label = $this->normalizer->normalize($label); - - return isset($this->references[$label]); - } - - public function get(string $label): ?ReferenceInterface - { - if ($this->references === []) { - return null; - } - - $label = $this->normalizer->normalize($label); - - return $this->references[$label] ?? null; - } - - /** - * @return \Traversable - */ - public function getIterator(): \Traversable - { - foreach ($this->references as $normalizedLabel => $reference) { - yield $normalizedLabel => $reference; - } - } - - public function count(): int - { - return \count($this->references); - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Util/LinkParserHelper.php b/docker/streamline-src/vendor/league/commonmark/src/Util/LinkParserHelper.php deleted file mode 100644 index 3e76c28f..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Util/LinkParserHelper.php +++ /dev/null @@ -1,165 +0,0 @@ - - * - * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) - * - (c) John MacFarlane - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Util; - -use League\CommonMark\Parser\Cursor; - -/** - * @psalm-immutable - */ -final class LinkParserHelper -{ - /** - * Attempt to parse link destination - * - * @return string|null The string, or null if no match - */ - public static function parseLinkDestination(Cursor $cursor): ?string - { - if ($cursor->getCurrentCharacter() === '<') { - return self::parseDestinationBraces($cursor); - } - - $destination = self::manuallyParseLinkDestination($cursor); - if ($destination === null) { - return null; - } - - return UrlEncoder::unescapeAndEncode( - RegexHelper::unescape($destination) - ); - } - - public static function parseLinkLabel(Cursor $cursor): int - { - $match = $cursor->match('/^\[(?:[^\\\\\[\]]|\\\\.){0,1000}\]/'); - if ($match === null) { - return 0; - } - - $length = \mb_strlen($match, 'UTF-8'); - - if ($length > 1001) { - return 0; - } - - return $length; - } - - public static function parsePartialLinkLabel(Cursor $cursor): ?string - { - return $cursor->match('/^(?:[^\\\\\[\]]++|\\\\.?)*+/'); - } - - /** - * Attempt to parse link title (sans quotes) - * - * @return string|null The string, or null if no match - */ - public static function parseLinkTitle(Cursor $cursor): ?string - { - if ($title = $cursor->match('/' . RegexHelper::PARTIAL_LINK_TITLE . '/')) { - // Chop off quotes from title and unescape - return RegexHelper::unescape(\substr($title, 1, -1)); - } - - return null; - } - - public static function parsePartialLinkTitle(Cursor $cursor, string $endDelimiter): ?string - { - $endDelimiter = \preg_quote($endDelimiter, '/'); - $regex = \sprintf('/(%s|[^%s\x00])*(?:%s)?/', RegexHelper::PARTIAL_ESCAPED_CHAR, $endDelimiter, $endDelimiter); - if (($partialTitle = $cursor->match($regex)) === null) { - return null; - } - - return RegexHelper::unescape($partialTitle); - } - - private static function manuallyParseLinkDestination(Cursor $cursor): ?string - { - $remainder = $cursor->getRemainder(); - $openParens = 0; - $len = \strlen($remainder); - for ($i = 0; $i < $len; $i++) { - $c = $remainder[$i]; - if ($c === '\\' && $i + 1 < $len && RegexHelper::isEscapable($remainder[$i + 1])) { - $i++; - } elseif ($c === '(') { - $openParens++; - // Limit to 32 nested parens for pathological cases - if ($openParens > 32) { - return null; - } - } elseif ($c === ')') { - if ($openParens < 1) { - break; - } - - $openParens--; - } elseif (\ord($c) <= 32 && RegexHelper::isWhitespace($c)) { - break; - } - } - - if ($openParens !== 0) { - return null; - } - - if ($i === 0 && (! isset($c) || $c !== ')')) { - return null; - } - - $destination = \substr($remainder, 0, $i); - $cursor->advanceBy(\mb_strlen($destination, 'UTF-8')); - - return $destination; - } - - /** @var \WeakReference|null */ - private static ?\WeakReference $lastCursor = null; - private static bool $lastCursorLacksClosingBrace = false; - - private static function parseDestinationBraces(Cursor $cursor): ?string - { - // Optimization: If we've previously parsed this cursor and returned `null`, we know - // that no closing brace exists, so we can skip the regex entirely. This helps avoid - // certain pathological cases where the regex engine can take a very long time to - // determine that no match exists. - if (self::$lastCursor !== null && self::$lastCursor->get() === $cursor) { - if (self::$lastCursorLacksClosingBrace) { - return null; - } - } else { - self::$lastCursor = \WeakReference::create($cursor); - } - - if ($res = $cursor->match(RegexHelper::REGEX_LINK_DESTINATION_BRACES)) { - self::$lastCursorLacksClosingBrace = false; - - // Chop off surrounding <..>: - return UrlEncoder::unescapeAndEncode( - RegexHelper::unescape(\substr($res, 1, -1)) - ); - } - - self::$lastCursorLacksClosingBrace = true; - - return null; - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Util/RegexHelper.php b/docker/streamline-src/vendor/league/commonmark/src/Util/RegexHelper.php deleted file mode 100644 index 603631f2..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Util/RegexHelper.php +++ /dev/null @@ -1,243 +0,0 @@ - - * - * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) - * - (c) John MacFarlane - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Util; - -use League\CommonMark\Exception\InvalidArgumentException; -use League\CommonMark\Extension\CommonMark\Node\Block\HtmlBlock; - -/** - * Provides regular expressions and utilities for parsing Markdown - * - * All of the PARTIAL_ regex constants assume that they'll be used in case-insensitive searches - * All other complete regexes provided by this class (either via constants or methods) will have case-insensitivity enabled. - * - * @phpcs:disable Generic.Strings.UnnecessaryStringConcat.Found - * - * @psalm-immutable - */ -final class RegexHelper -{ - // Partial regular expressions (wrap with `/` on each side and add the case-insensitive `i` flag before use) - public const PARTIAL_ENTITY = '&(?:#x[a-f0-9]{1,6}|#[0-9]{1,7}|[a-z][a-z0-9]{1,31});'; - public const PARTIAL_ESCAPABLE = '[!"#$%&\'()*+,.\/:;<=>?@[\\\\\]^_`{|}~-]'; - public const PARTIAL_ESCAPED_CHAR = '\\\\' . self::PARTIAL_ESCAPABLE; - public const PARTIAL_IN_DOUBLE_QUOTES = '"(' . self::PARTIAL_ESCAPED_CHAR . '|[^"\x00])*"'; - public const PARTIAL_IN_SINGLE_QUOTES = '\'(' . self::PARTIAL_ESCAPED_CHAR . '|[^\'\x00])*\''; - public const PARTIAL_IN_PARENS = '\\((' . self::PARTIAL_ESCAPED_CHAR . '|[^)\x00])*\\)'; - public const PARTIAL_REG_CHAR = '[^\\\\()\x00-\x20]'; - public const PARTIAL_IN_PARENS_NOSP = '\((' . self::PARTIAL_REG_CHAR . '|' . self::PARTIAL_ESCAPED_CHAR . '|\\\\)*\)'; - public const PARTIAL_TAGNAME = '[a-z][a-z0-9-]*'; - public const PARTIAL_BLOCKTAGNAME = '(?:address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h1|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul)'; - public const PARTIAL_ATTRIBUTENAME = '[a-z_:][a-z0-9:._-]*'; - public const PARTIAL_UNQUOTEDVALUE = '[^"\'=<>`\x00-\x20]+'; - public const PARTIAL_SINGLEQUOTEDVALUE = '\'[^\']*\''; - public const PARTIAL_DOUBLEQUOTEDVALUE = '"[^"]*"'; - public const PARTIAL_ATTRIBUTEVALUE = '(?:' . self::PARTIAL_UNQUOTEDVALUE . '|' . self::PARTIAL_SINGLEQUOTEDVALUE . '|' . self::PARTIAL_DOUBLEQUOTEDVALUE . ')'; - public const PARTIAL_ATTRIBUTEVALUESPEC = '(?:' . '\s*=' . '\s*' . self::PARTIAL_ATTRIBUTEVALUE . ')'; - public const PARTIAL_ATTRIBUTE = '(?:' . '\s+' . self::PARTIAL_ATTRIBUTENAME . self::PARTIAL_ATTRIBUTEVALUESPEC . '?)'; - public const PARTIAL_OPENTAG = '<' . self::PARTIAL_TAGNAME . self::PARTIAL_ATTRIBUTE . '*' . '\s*\/?>'; - public const PARTIAL_CLOSETAG = '<\/' . self::PARTIAL_TAGNAME . '\s*[>]'; - public const PARTIAL_OPENBLOCKTAG = '<' . self::PARTIAL_BLOCKTAGNAME . self::PARTIAL_ATTRIBUTE . '*' . '\s*\/?>'; - public const PARTIAL_CLOSEBLOCKTAG = '<\/' . self::PARTIAL_BLOCKTAGNAME . '\s*[>]'; - public const PARTIAL_HTMLCOMMENT = '||'; - public const PARTIAL_PROCESSINGINSTRUCTION = '[<][?][\s\S]*?[?][>]'; - public const PARTIAL_DECLARATION = ']*>'; - public const PARTIAL_CDATA = ''; - public const PARTIAL_HTMLTAG = '(?:' . self::PARTIAL_OPENTAG . '|' . self::PARTIAL_CLOSETAG . '|' . self::PARTIAL_HTMLCOMMENT . '|' . - self::PARTIAL_PROCESSINGINSTRUCTION . '|' . self::PARTIAL_DECLARATION . '|' . self::PARTIAL_CDATA . ')'; - public const PARTIAL_HTMLBLOCKOPEN = '<(?:' . self::PARTIAL_BLOCKTAGNAME . '(?:[\s\/>]|$)' . '|' . - '\/' . self::PARTIAL_BLOCKTAGNAME . '(?:[\s>]|$)' . '|' . '[?!])'; - public const PARTIAL_LINK_TITLE = '^(?:"(' . self::PARTIAL_ESCAPED_CHAR . '|[^"\x00])*+"' . - '|' . '\'(' . self::PARTIAL_ESCAPED_CHAR . '|[^\'\x00])*+\'' . - '|' . '\((' . self::PARTIAL_ESCAPED_CHAR . '|[^()\x00])*+\))'; - - public const REGEX_PUNCTUATION = '/^[!"#$%&\'()*+,\-.\\/:;<=>?@\\[\\]\\\\^_`{|}~\p{P}\p{S}]/u'; - public const REGEX_UNSAFE_PROTOCOL = '/^javascript:|vbscript:|file:|data:/i'; - public const REGEX_SAFE_DATA_PROTOCOL = '/^data:image\/(?:png|gif|jpeg|webp)/i'; - public const REGEX_NON_SPACE = '/[^ \t\f\v\r\n]/'; - - public const REGEX_WHITESPACE_CHAR = '/^[ \t\n\x0b\x0c\x0d]/'; - public const REGEX_UNICODE_WHITESPACE_CHAR = '/^\pZ|\s/u'; - public const REGEX_THEMATIC_BREAK = '/^(?:\*[ \t]*){3,}$|^(?:_[ \t]*){3,}$|^(?:-[ \t]*){3,}$/'; - public const REGEX_LINK_DESTINATION_BRACES = '/^(?:<(?:[^<>\\n\\\\\\x00]|\\\\.)*>)/'; - - /** - * @psalm-pure - */ - public static function isEscapable(string $character): bool - { - return \preg_match('/' . self::PARTIAL_ESCAPABLE . '/', $character) === 1; - } - - public static function isWhitespace(string $character): bool - { - /** @psalm-suppress InvalidLiteralArgument */ - return $character !== '' && \strpos(" \t\n\x0b\x0c\x0d", $character) !== false; - } - - /** - * @psalm-pure - */ - public static function isLetter(?string $character): bool - { - if ($character === null) { - return false; - } - - return \preg_match('/[\pL]/u', $character) === 1; - } - - /** - * Attempt to match a regex in string s at offset offset - * - * @psalm-param non-empty-string $regex - * - * @return int|null Index of match, or null - * - * @psalm-pure - */ - public static function matchAt(string $regex, string $string, int $offset = 0): ?int - { - $matches = []; - $string = \mb_substr($string, $offset, null, 'UTF-8'); - if (! \preg_match($regex, $string, $matches, \PREG_OFFSET_CAPTURE)) { - return null; - } - - // PREG_OFFSET_CAPTURE always returns the byte offset, not the char offset, which is annoying - $charPos = \mb_strlen(\mb_strcut($string, 0, $matches[0][1], 'UTF-8'), 'UTF-8'); - - return $offset + $charPos; - } - - /** - * Functional wrapper around preg_match_all which only returns the first set of matches - * - * @psalm-param non-empty-string $pattern - * - * @return string[]|null - * - * @psalm-pure - */ - public static function matchFirst(string $pattern, string $subject, int $offset = 0): ?array - { - if ($offset !== 0) { - $subject = \substr($subject, $offset); - } - - \preg_match_all($pattern, $subject, $matches, \PREG_SET_ORDER); - - if ($matches === []) { - return null; - } - - return $matches[0] ?: null; - } - - /** - * Replace backslash escapes with literal characters - * - * @psalm-pure - */ - public static function unescape(string $string): string - { - $allEscapedChar = '/\\\\(' . self::PARTIAL_ESCAPABLE . ')/'; - - $escaped = \preg_replace($allEscapedChar, '$1', $string); - \assert(\is_string($escaped)); - - return \preg_replace_callback('/' . self::PARTIAL_ENTITY . '/i', static fn ($e) => Html5EntityDecoder::decode($e[0]), $escaped); - } - - /** - * @internal - * - * @param int $type HTML block type - * - * @psalm-param HtmlBlock::TYPE_* $type - * - * @phpstan-param HtmlBlock::TYPE_* $type - * - * @psalm-return non-empty-string - * - * @throws InvalidArgumentException if an invalid type is given - * - * @psalm-pure - */ - public static function getHtmlBlockOpenRegex(int $type): string - { - switch ($type) { - case HtmlBlock::TYPE_1_CODE_CONTAINER: - return '/^<(?:script|pre|textarea|style)(?:\s|>|$)/i'; - case HtmlBlock::TYPE_2_COMMENT: - return '/^/'; - case HtmlBlock::TYPE_3: - return '/\?>/'; - case HtmlBlock::TYPE_4: - return '/>/'; - case HtmlBlock::TYPE_5_CDATA: - return '/\]\]>/'; - default: - throw new InvalidArgumentException('Invalid HTML block type'); - } - } - - /** - * @psalm-pure - */ - public static function isLinkPotentiallyUnsafe(string $url): bool - { - return \preg_match(self::REGEX_UNSAFE_PROTOCOL, $url) !== 0 && \preg_match(self::REGEX_SAFE_DATA_PROTOCOL, $url) === 0; - } -} diff --git a/docker/streamline-src/vendor/league/commonmark/src/Util/SpecReader.php b/docker/streamline-src/vendor/league/commonmark/src/Util/SpecReader.php deleted file mode 100644 index faee2042..00000000 --- a/docker/streamline-src/vendor/league/commonmark/src/Util/SpecReader.php +++ /dev/null @@ -1,72 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Util; - -use League\CommonMark\Exception\IOException; - -/** - * Reads in a CommonMark spec document and extracts the input/output examples for testing against them - */ -final class SpecReader -{ - private function __construct() - { - } - - /** - * @return iterable - */ - public static function read(string $data): iterable - { - // Normalize newlines for platform independence - $data = \preg_replace('/\r\n?/', "\n", $data); - \assert($data !== null); - $data = \preg_replace('/.*$/', '', $data); - \assert($data !== null); - \preg_match_all('/^`{32} (example ?\w*)\n([\s\S]*?)^\.\n([\s\S]*?)^`{32}$|^#{1,6} *(.*)$/m', $data, $matches, PREG_SET_ORDER); - - $currentSection = 'Example'; - $exampleNumber = 0; - - foreach ($matches as $match) { - \assert(isset($match[1], $match[2], $match[3])); - if (isset($match[4])) { - $currentSection = $match[4]; - continue; - } - - yield \trim($currentSection . ' #' . $exampleNumber) => [ - 'input' => \str_replace('→', "\t", $match[2]), - 'output' => \str_replace('→', "\t", $match[3]), - 'type' => $match[1], - 'section' => $currentSection, - 'number' => $exampleNumber++, - ]; - } - } - - /** - * @return iterable - * - * @throws IOException if the file cannot be loaded - */ - public static function readFile(string $filename): iterable - { - if (($data = \file_get_contents($filename)) === false) { - throw new IOException(\sprintf('Failed to load spec from %s', $filename)); - } - - return self::read($data); - } -} diff --git a/docker/streamline-src/vendor/league/flysystem-local/LocalFilesystemAdapter.php b/docker/streamline-src/vendor/league/flysystem-local/LocalFilesystemAdapter.php deleted file mode 100644 index aa7f7d65..00000000 --- a/docker/streamline-src/vendor/league/flysystem-local/LocalFilesystemAdapter.php +++ /dev/null @@ -1,483 +0,0 @@ -prefixer = new PathPrefixer($location, DIRECTORY_SEPARATOR); - $visibility ??= new PortableVisibilityConverter(); - $this->visibility = $visibility; - $this->rootLocation = $location; - $this->mimeTypeDetector = $mimeTypeDetector ?? new FallbackMimeTypeDetector( - detector: new FinfoMimeTypeDetector(), - useInconclusiveMimeTypeFallback: $useInconclusiveMimeTypeFallback, - ); - - if ( ! $lazyRootCreation) { - $this->ensureRootDirectoryExists(); - } - } - - private function ensureRootDirectoryExists(): void - { - if ($this->rootLocationIsSetup) { - return; - } - - $this->ensureDirectoryExists($this->rootLocation, $this->visibility->defaultForDirectories()); - $this->rootLocationIsSetup = true; - } - - public function write(string $path, string $contents, Config $config): void - { - $this->writeToFile($path, $contents, $config); - } - - public function writeStream(string $path, $contents, Config $config): void - { - $this->writeToFile($path, $contents, $config); - } - - /** - * @param resource|string $contents - */ - private function writeToFile(string $path, $contents, Config $config): void - { - $prefixedLocation = $this->prefixer->prefixPath($path); - $this->ensureRootDirectoryExists(); - $this->ensureDirectoryExists( - dirname($prefixedLocation), - $this->resolveDirectoryVisibility($config->get(Config::OPTION_DIRECTORY_VISIBILITY)) - ); - error_clear_last(); - - if (@file_put_contents($prefixedLocation, $contents, $this->writeFlags) === false) { - throw UnableToWriteFile::atLocation($path, error_get_last()['message'] ?? ''); - } - - if ($visibility = $config->get(Config::OPTION_VISIBILITY)) { - $this->setVisibility($path, (string) $visibility); - } - } - - public function delete(string $path): void - { - $location = $this->prefixer->prefixPath($path); - - if ( ! file_exists($location)) { - return; - } - - error_clear_last(); - - if ( ! @unlink($location)) { - throw UnableToDeleteFile::atLocation($location, error_get_last()['message'] ?? ''); - } - } - - public function deleteDirectory(string $prefix): void - { - $location = $this->prefixer->prefixPath($prefix); - - if ( ! is_dir($location)) { - return; - } - - $contents = $this->listDirectoryRecursively($location, RecursiveIteratorIterator::CHILD_FIRST); - - /** @var SplFileInfo $file */ - foreach ($contents as $file) { - if ( ! $this->deleteFileInfoObject($file)) { - throw UnableToDeleteDirectory::atLocation($prefix, "Unable to delete file at " . $file->getPathname()); - } - } - - unset($contents); - - if ( ! @rmdir($location)) { - throw UnableToDeleteDirectory::atLocation($prefix, error_get_last()['message'] ?? ''); - } - } - - private function listDirectoryRecursively( - string $path, - int $mode = RecursiveIteratorIterator::SELF_FIRST - ): Generator { - if ( ! is_dir($path)) { - return; - } - - yield from new RecursiveIteratorIterator( - new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS), - $mode - ); - } - - protected function deleteFileInfoObject(SplFileInfo $file): bool - { - switch ($file->getType()) { - case 'dir': - return @rmdir((string) $file->getRealPath()); - case 'link': - return @unlink((string) $file->getPathname()); - default: - return @unlink((string) $file->getRealPath()); - } - } - - public function listContents(string $path, bool $deep): iterable - { - $location = $this->prefixer->prefixPath($path); - - if ( ! is_dir($location)) { - return; - } - - /** @var SplFileInfo[] $iterator */ - $iterator = $deep ? $this->listDirectoryRecursively($location) : $this->listDirectory($location); - - foreach ($iterator as $fileInfo) { - $pathName = $fileInfo->getPathname(); - - try { - if ($fileInfo->isLink()) { - if ($this->linkHandling & self::SKIP_LINKS) { - continue; - } - throw SymbolicLinkEncountered::atLocation($pathName); - } - - $path = $this->prefixer->stripPrefix($pathName); - $lastModified = $fileInfo->getMTime(); - $isDirectory = $fileInfo->isDir(); - $permissions = octdec(substr(sprintf('%o', $fileInfo->getPerms()), -4)); - $visibility = $isDirectory ? $this->visibility->inverseForDirectory($permissions) : $this->visibility->inverseForFile($permissions); - - yield $isDirectory ? new DirectoryAttributes(str_replace('\\', '/', $path), $visibility, $lastModified) : new FileAttributes( - str_replace('\\', '/', $path), - $fileInfo->getSize(), - $visibility, - $lastModified - ); - } catch (Throwable $exception) { - if (file_exists($pathName)) { - throw $exception; - } - } - } - } - - public function move(string $source, string $destination, Config $config): void - { - $sourcePath = $this->prefixer->prefixPath($source); - $destinationPath = $this->prefixer->prefixPath($destination); - - $this->ensureRootDirectoryExists(); - $this->ensureDirectoryExists( - dirname($destinationPath), - $this->resolveDirectoryVisibility($config->get(Config::OPTION_DIRECTORY_VISIBILITY)) - ); - - if ( ! @rename($sourcePath, $destinationPath)) { - throw UnableToMoveFile::because(error_get_last()['message'] ?? 'unknown reason', $source, $destination); - } - - if ($visibility = $config->get(Config::OPTION_VISIBILITY)) { - $this->setVisibility($destination, (string) $visibility); - } - } - - public function copy(string $source, string $destination, Config $config): void - { - $sourcePath = $this->prefixer->prefixPath($source); - $destinationPath = $this->prefixer->prefixPath($destination); - $this->ensureRootDirectoryExists(); - $this->ensureDirectoryExists( - dirname($destinationPath), - $this->resolveDirectoryVisibility($config->get(Config::OPTION_DIRECTORY_VISIBILITY)) - ); - - if ($sourcePath !== $destinationPath && ! @copy($sourcePath, $destinationPath)) { - throw UnableToCopyFile::because(error_get_last()['message'] ?? 'unknown', $source, $destination); - } - - $visibility = $config->get( - Config::OPTION_VISIBILITY, - $config->get(Config::OPTION_RETAIN_VISIBILITY, true) - ? $this->visibility($source)->visibility() - : null, - ); - - if ($visibility) { - $this->setVisibility($destination, (string) $visibility); - } - } - - public function read(string $path): string - { - $location = $this->prefixer->prefixPath($path); - error_clear_last(); - $contents = @file_get_contents($location); - - if ($contents === false) { - throw UnableToReadFile::fromLocation($path, error_get_last()['message'] ?? ''); - } - - return $contents; - } - - public function readStream(string $path) - { - $location = $this->prefixer->prefixPath($path); - error_clear_last(); - $contents = @fopen($location, 'rb'); - - if ($contents === false) { - throw UnableToReadFile::fromLocation($path, error_get_last()['message'] ?? ''); - } - - return $contents; - } - - protected function ensureDirectoryExists(string $dirname, int $visibility): void - { - if (is_dir($dirname)) { - return; - } - - error_clear_last(); - - if ( ! @mkdir($dirname, $visibility, true)) { - $mkdirError = error_get_last(); - } - - clearstatcache(true, $dirname); - - if ( ! is_dir($dirname)) { - $errorMessage = isset($mkdirError['message']) ? $mkdirError['message'] : ''; - - throw UnableToCreateDirectory::atLocation($dirname, $errorMessage); - } - } - - public function fileExists(string $location): bool - { - $location = $this->prefixer->prefixPath($location); - - return is_file($location); - } - - public function directoryExists(string $location): bool - { - $location = $this->prefixer->prefixPath($location); - - return is_dir($location); - } - - public function createDirectory(string $path, Config $config): void - { - $this->ensureRootDirectoryExists(); - $location = $this->prefixer->prefixPath($path); - $visibility = $config->get(Config::OPTION_VISIBILITY, $config->get(Config::OPTION_DIRECTORY_VISIBILITY)); - $permissions = $this->resolveDirectoryVisibility($visibility); - - if (is_dir($location)) { - $this->setPermissions($location, $permissions); - - return; - } - - error_clear_last(); - - if ( ! @mkdir($location, $permissions, true)) { - throw UnableToCreateDirectory::atLocation($path, error_get_last()['message'] ?? ''); - } - } - - public function setVisibility(string $path, string $visibility): void - { - $path = $this->prefixer->prefixPath($path); - $visibility = is_dir($path) ? $this->visibility->forDirectory($visibility) : $this->visibility->forFile( - $visibility - ); - - $this->setPermissions($path, $visibility); - } - - public function visibility(string $path): FileAttributes - { - $location = $this->prefixer->prefixPath($path); - clearstatcache(false, $location); - error_clear_last(); - $fileperms = @fileperms($location); - - if ($fileperms === false) { - throw UnableToRetrieveMetadata::visibility($path, error_get_last()['message'] ?? ''); - } - - $permissions = $fileperms & 0777; - $visibility = $this->visibility->inverseForFile($permissions); - - return new FileAttributes($path, null, $visibility); - } - - private function resolveDirectoryVisibility(?string $visibility): int - { - return $visibility === null ? $this->visibility->defaultForDirectories() : $this->visibility->forDirectory( - $visibility - ); - } - - public function mimeType(string $path): FileAttributes - { - $location = $this->prefixer->prefixPath($path); - error_clear_last(); - - if ( ! is_file($location)) { - throw UnableToRetrieveMetadata::mimeType($location, 'No such file exists.'); - } - - $mimeType = $this->mimeTypeDetector->detectMimeTypeFromFile($location); - - if ($mimeType === null) { - throw UnableToRetrieveMetadata::mimeType($path, error_get_last()['message'] ?? ''); - } - - return new FileAttributes($path, null, null, null, $mimeType); - } - - public function lastModified(string $path): FileAttributes - { - $location = $this->prefixer->prefixPath($path); - error_clear_last(); - $lastModified = @filemtime($location); - - if ($lastModified === false) { - throw UnableToRetrieveMetadata::lastModified($path, error_get_last()['message'] ?? ''); - } - - return new FileAttributes($path, null, null, $lastModified); - } - - public function fileSize(string $path): FileAttributes - { - $location = $this->prefixer->prefixPath($path); - error_clear_last(); - - if (is_file($location) && ($fileSize = @filesize($location)) !== false) { - return new FileAttributes($path, $fileSize); - } - - throw UnableToRetrieveMetadata::fileSize($path, error_get_last()['message'] ?? ''); - } - - public function checksum(string $path, Config $config): string - { - $algo = $config->get('checksum_algo', 'md5'); - $location = $this->prefixer->prefixPath($path); - error_clear_last(); - $checksum = @hash_file($algo, $location); - - if ($checksum === false) { - throw new UnableToProvideChecksum(error_get_last()['message'] ?? '', $path); - } - - return $checksum; - } - - private function listDirectory(string $location): Generator - { - $iterator = new DirectoryIterator($location); - - foreach ($iterator as $item) { - if ($item->isDot()) { - continue; - } - - yield $item; - } - } - - private function setPermissions(string $location, int $visibility): void - { - error_clear_last(); - if ( ! @chmod($location, $visibility)) { - $extraMessage = error_get_last()['message'] ?? ''; - throw UnableToSetVisibility::atLocation($this->prefixer->stripPrefix($location), $extraMessage); - } - } -} diff --git a/docker/streamline-src/vendor/league/flysystem/composer.json b/docker/streamline-src/vendor/league/flysystem/composer.json deleted file mode 100644 index 81a39c4e..00000000 --- a/docker/streamline-src/vendor/league/flysystem/composer.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "name": "league/flysystem", - "description": "File storage abstraction for PHP", - "keywords": [ - "filesystem", "filesystems", "files", "storage", "aws", - "s3", "ftp", "sftp", "webdav", "file", "cloud" - ], - "scripts": { - "phpstan": "vendor/bin/phpstan analyse -l 6 src" - }, - "type": "library", - "minimum-stability": "dev", - "prefer-stable": true, - "autoload": { - "psr-4": { - "League\\Flysystem\\": "src" - } - }, - "require": { - "php": "^8.0.2", - "league/flysystem-local": "^3.0.0", - "league/mime-type-detection": "^1.0.0" - }, - "require-dev": { - "ext-zip": "*", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-mongodb": "^1.3", - "microsoft/azure-storage-blob": "^1.1", - "phpunit/phpunit": "^9.5.11|^10.0", - "phpstan/phpstan": "^1.10", - "phpseclib/phpseclib": "^3.0.36", - "aws/aws-sdk-php": "^3.295.10", - "composer/semver": "^3.0", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "async-aws/s3": "^1.5 || ^2.0", - "async-aws/simple-s3": "^1.1 || ^2.0", - "mongodb/mongodb": "^1.2", - "sabre/dav": "^4.6.0", - "guzzlehttp/psr7": "^2.6" - }, - "conflict": { - "async-aws/core": "<1.19.0", - "async-aws/s3": "<1.14.0", - "symfony/http-client": "<5.2", - "guzzlehttp/ringphp": "<1.1.1", - "guzzlehttp/guzzle": "<7.0", - "aws/aws-sdk-php": "3.209.31 || 3.210.0", - "phpseclib/phpseclib": "3.0.15" - }, - "license": "MIT", - "authors": [ - { - "name": "Frank de Jonge", - "email": "info@frankdejonge.nl" - } - ], - "repositories": [ - { - "type": "package", - "package": { - "name": "league/flysystem-local", - "version": "3.0.0", - "dist": { - "type": "path", - "url": "src/Local" - } - } - } - ] -} diff --git a/docker/streamline-src/vendor/league/flysystem/readme.md b/docker/streamline-src/vendor/league/flysystem/readme.md deleted file mode 100644 index ab5931e4..00000000 --- a/docker/streamline-src/vendor/league/flysystem/readme.md +++ /dev/null @@ -1,59 +0,0 @@ -# League\Flysystem - -[![Author](https://img.shields.io/badge/author-@frankdejonge-blue.svg)](https://twitter.com/frankdejonge) -[![Source Code](https://img.shields.io/badge/source-thephpleague/flysystem-blue.svg)](https://github.com/thephpleague/flysystem) -[![Latest Version](https://img.shields.io/github/tag/thephpleague/flysystem.svg)](https://github.com/thephpleague/flysystem/releases) -[![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://github.com/thephpleague/flysystem/blob/master/LICENSE) -[![Quality Assurance](https://github.com/thephpleague/flysystem/workflows/Quality%20Assurance/badge.svg?branch=2.x)](https://github.com/thephpleague/flysystem/actions?query=workflow%3A%22Quality+Assurance%22) -[![Total Downloads](https://img.shields.io/packagist/dt/league/flysystem.svg)](https://packagist.org/packages/league/flysystem) -![php 7.2+](https://img.shields.io/badge/php-min%208.0.2-red.svg) - -## About Flysystem - -Flysystem is a file storage library for PHP. It provides one interface to -interact with many types of filesystems. When you use Flysystem, you're -not only protected from vendor lock-in, you'll also have a consistent experience -for which ever storage is right for you. - -## Getting Started - -* **[New in V3](https://flysystem.thephpleague.com/docs/what-is-new/)**: What is new in Flysystem V2/V3? -* **[Architecture](https://flysystem.thephpleague.com/docs/architecture/)**: Flysystem's internal architecture -* **[Flysystem API](https://flysystem.thephpleague.com/docs/usage/filesystem-api/)**: How to interact with your Flysystem instance -* **[Upgrade from 1x](https://flysystem.thephpleague.com/docs/upgrade-from-1.x/)**: How to upgrade from 1.x/2.x - -### Officially supported adapters - -* **[Local](https://flysystem.thephpleague.com/docs/adapter/local/)** -* **[FTP](https://flysystem.thephpleague.com/docs/adapter/ftp/)** -* **[SFTP](https://flysystem.thephpleague.com/docs/adapter/sftp-v3/)** -* **[Memory](https://flysystem.thephpleague.com/docs/adapter/in-memory/)** -* **[AWS S3](https://flysystem.thephpleague.com/docs/adapter/aws-s3-v3/)** -* **[AsyncAws S3](https://flysystem.thephpleague.com/docs/adapter/async-aws-s3/)** -* **[Google Cloud Storage](https://flysystem.thephpleague.com/docs/adapter/google-cloud-storage/)** -* **[Azure Blob Storage](https://flysystem.thephpleague.com/docs/adapter/azure-blob-storage/)** -* **[MongoDB GridFS](https://flysystem.thephpleague.com/docs/adapter/gridfs/)** -* **[WebDAV](https://flysystem.thephpleague.com/docs/adapter/webdav/)** -* **[ZipArchive](https://flysystem.thephpleague.com/docs/adapter/zip-archive/)** - -### Third party Adapters - -* **[Gitlab](https://github.com/RoyVoetman/flysystem-gitlab-storage)** -* **[Google Drive (using regular paths)](https://github.com/masbug/flysystem-google-drive-ext)** -* **[bunny.net / BunnyCDN](https://github.com/PlatformCommunity/flysystem-bunnycdn/tree/v3)** -* **[Sharepoint 365 / One Drive (Using MS Graph)](https://github.com/shitware-ltd/flysystem-msgraph)** -* **[OneDrive](https://github.com/doerffler/flysystem-onedrive)** -* **[Dropbox](https://github.com/spatie/flysystem-dropbox)** -* **[ReplicateAdapter](https://github.com/ajgarlag/flysystem-replicate)** -* **[Uploadcare](https://github.com/vormkracht10/flysystem-uploadcare)** -* **[Useful adapters (FallbackAdapter, LogAdapter, ReadWriteAdapter, RetryAdapter)](https://github.com/ElGigi/FlysystemUsefulAdapters)** - -You can always [create an adapter](https://flysystem.thephpleague.com/docs/advanced/creating-an-adapter/) yourself. - -## Security - -If you discover any security related issues, please email info@frankdejonge.nl instead of using the issue tracker. - -## Enjoy - -Oh, and if you've come down this far, you might as well follow me on [twitter](https://twitter.com/frankdejonge). diff --git a/docker/streamline-src/vendor/league/flysystem/src/Filesystem.php b/docker/streamline-src/vendor/league/flysystem/src/Filesystem.php deleted file mode 100644 index 4fb30cc1..00000000 --- a/docker/streamline-src/vendor/league/flysystem/src/Filesystem.php +++ /dev/null @@ -1,290 +0,0 @@ -config = new Config($config); - $this->pathNormalizer = $pathNormalizer ?? new WhitespacePathNormalizer(); - } - - public function fileExists(string $location): bool - { - return $this->adapter->fileExists($this->pathNormalizer->normalizePath($location)); - } - - public function directoryExists(string $location): bool - { - return $this->adapter->directoryExists($this->pathNormalizer->normalizePath($location)); - } - - public function has(string $location): bool - { - $path = $this->pathNormalizer->normalizePath($location); - - return $this->adapter->fileExists($path) || $this->adapter->directoryExists($path); - } - - public function write(string $location, string $contents, array $config = []): void - { - $this->adapter->write( - $this->pathNormalizer->normalizePath($location), - $contents, - $this->config->extend($config) - ); - } - - public function writeStream(string $location, $contents, array $config = []): void - { - /* @var resource $contents */ - $this->assertIsResource($contents); - $this->rewindStream($contents); - $this->adapter->writeStream( - $this->pathNormalizer->normalizePath($location), - $contents, - $this->config->extend($config) - ); - } - - public function read(string $location): string - { - return $this->adapter->read($this->pathNormalizer->normalizePath($location)); - } - - public function readStream(string $location) - { - return $this->adapter->readStream($this->pathNormalizer->normalizePath($location)); - } - - public function delete(string $location): void - { - $this->adapter->delete($this->pathNormalizer->normalizePath($location)); - } - - public function deleteDirectory(string $location): void - { - $this->adapter->deleteDirectory($this->pathNormalizer->normalizePath($location)); - } - - public function createDirectory(string $location, array $config = []): void - { - $this->adapter->createDirectory( - $this->pathNormalizer->normalizePath($location), - $this->config->extend($config) - ); - } - - public function listContents(string $location, bool $deep = self::LIST_SHALLOW): DirectoryListing - { - $path = $this->pathNormalizer->normalizePath($location); - $listing = $this->adapter->listContents($path, $deep); - - return new DirectoryListing($this->pipeListing($location, $deep, $listing)); - } - - private function pipeListing(string $location, bool $deep, iterable $listing): Generator - { - try { - foreach ($listing as $item) { - yield $item; - } - } catch (Throwable $exception) { - throw UnableToListContents::atLocation($location, $deep, $exception); - } - } - - public function move(string $source, string $destination, array $config = []): void - { - $config = $this->resolveConfigForMoveAndCopy($config); - $from = $this->pathNormalizer->normalizePath($source); - $to = $this->pathNormalizer->normalizePath($destination); - - if ($from === $to) { - $resolutionStrategy = $config->get(Config::OPTION_MOVE_IDENTICAL_PATH, ResolveIdenticalPathConflict::TRY); - - if ($resolutionStrategy === ResolveIdenticalPathConflict::FAIL) { - throw UnableToMoveFile::sourceAndDestinationAreTheSame($source, $destination); - } elseif ($resolutionStrategy === ResolveIdenticalPathConflict::IGNORE) { - return; - } - } - - $this->adapter->move($from, $to, $config); - } - - public function copy(string $source, string $destination, array $config = []): void - { - $config = $this->resolveConfigForMoveAndCopy($config); - $from = $this->pathNormalizer->normalizePath($source); - $to = $this->pathNormalizer->normalizePath($destination); - - if ($from === $to) { - $resolutionStrategy = $config->get(Config::OPTION_COPY_IDENTICAL_PATH, ResolveIdenticalPathConflict::TRY); - - if ($resolutionStrategy === ResolveIdenticalPathConflict::FAIL) { - throw UnableToCopyFile::sourceAndDestinationAreTheSame($source, $destination); - } elseif ($resolutionStrategy === ResolveIdenticalPathConflict::IGNORE) { - return; - } - } - - $this->adapter->copy($from, $to, $config); - } - - public function lastModified(string $path): int - { - return $this->adapter->lastModified($this->pathNormalizer->normalizePath($path))->lastModified(); - } - - public function fileSize(string $path): int - { - return $this->adapter->fileSize($this->pathNormalizer->normalizePath($path))->fileSize(); - } - - public function mimeType(string $path): string - { - return $this->adapter->mimeType($this->pathNormalizer->normalizePath($path))->mimeType(); - } - - public function setVisibility(string $path, string $visibility): void - { - $this->adapter->setVisibility($this->pathNormalizer->normalizePath($path), $visibility); - } - - public function visibility(string $path): string - { - return $this->adapter->visibility($this->pathNormalizer->normalizePath($path))->visibility(); - } - - public function publicUrl(string $path, array $config = []): string - { - $this->publicUrlGenerator ??= $this->resolvePublicUrlGenerator() - ?? throw UnableToGeneratePublicUrl::noGeneratorConfigured($path); - $config = $this->config->extend($config); - - return $this->publicUrlGenerator->publicUrl( - $this->pathNormalizer->normalizePath($path), - $config, - ); - } - - public function temporaryUrl(string $path, DateTimeInterface $expiresAt, array $config = []): string - { - $generator = $this->temporaryUrlGenerator ?? $this->adapter; - - if ($generator instanceof TemporaryUrlGenerator) { - return $generator->temporaryUrl( - $this->pathNormalizer->normalizePath($path), - $expiresAt, - $this->config->extend($config) - ); - } - - throw UnableToGenerateTemporaryUrl::noGeneratorConfigured($path); - } - - public function checksum(string $path, array $config = []): string - { - $config = $this->config->extend($config); - - if ( ! $this->adapter instanceof ChecksumProvider) { - return $this->calculateChecksumFromStream($path, $config); - } - - try { - return $this->adapter->checksum( - $this->pathNormalizer->normalizePath($path), - $config, - ); - } catch (ChecksumAlgoIsNotSupported) { - return $this->calculateChecksumFromStream( - $this->pathNormalizer->normalizePath($path), - $config, - ); - } - } - - private function resolvePublicUrlGenerator(): ?PublicUrlGenerator - { - if ($publicUrl = $this->config->get('public_url')) { - return match (true) { - is_array($publicUrl) => new ShardedPrefixPublicUrlGenerator($publicUrl), - default => new PrefixPublicUrlGenerator($publicUrl), - }; - } - - if ($this->adapter instanceof PublicUrlGenerator) { - return $this->adapter; - } - - return null; - } - - /** - * @param mixed $contents - */ - private function assertIsResource($contents): void - { - if (is_resource($contents) === false) { - throw new InvalidStreamProvided( - "Invalid stream provided, expected stream resource, received " . gettype($contents) - ); - } elseif ($type = get_resource_type($contents) !== 'stream') { - throw new InvalidStreamProvided( - "Invalid stream provided, expected stream resource, received resource of type " . $type - ); - } - } - - /** - * @param resource $resource - */ - private function rewindStream($resource): void - { - if (ftell($resource) !== 0 && stream_get_meta_data($resource)['seekable']) { - rewind($resource); - } - } - - private function resolveConfigForMoveAndCopy(array $config): Config - { - $retainVisibility = $this->config->get(Config::OPTION_RETAIN_VISIBILITY, $config[Config::OPTION_RETAIN_VISIBILITY] ?? true); - $fullConfig = $this->config->extend($config); - - /* - * By default, we retain visibility. When we do not retain visibility, the visibility setting - * from the default configuration is ignored. Only when it is set explicitly, we propagate the - * setting. - */ - if ($retainVisibility && ! array_key_exists(Config::OPTION_VISIBILITY, $config)) { - $fullConfig = $fullConfig->withoutSettings(Config::OPTION_VISIBILITY)->extend($config); - } - - return $fullConfig; - } -} diff --git a/docker/streamline-src/vendor/league/flysystem/src/MountManager.php b/docker/streamline-src/vendor/league/flysystem/src/MountManager.php deleted file mode 100644 index acab4a80..00000000 --- a/docker/streamline-src/vendor/league/flysystem/src/MountManager.php +++ /dev/null @@ -1,434 +0,0 @@ - - */ - private $filesystems = []; - - /** - * @var Config - */ - private $config; - - /** - * MountManager constructor. - * - * @param array $filesystems - */ - public function __construct(array $filesystems = [], array $config = []) - { - $this->mountFilesystems($filesystems); - $this->config = new Config($config); - } - - /** - * It is not recommended to mount filesystems after creation because interacting - * with the Mount Manager becomes unpredictable. Use this as an escape hatch. - */ - public function dangerouslyMountFilesystems(string $key, FilesystemOperator $filesystem): void - { - $this->mountFilesystem($key, $filesystem); - } - - /** - * @param array $filesystems - */ - public function extend(array $filesystems, array $config = []): MountManager - { - $clone = clone $this; - $clone->config = $this->config->extend($config); - $clone->mountFilesystems($filesystems); - - return $clone; - } - - public function fileExists(string $location): bool - { - /** @var FilesystemOperator $filesystem */ - [$filesystem, $path] = $this->determineFilesystemAndPath($location); - - try { - return $filesystem->fileExists($path); - } catch (Throwable $exception) { - throw UnableToCheckFileExistence::forLocation($location, $exception); - } - } - - public function has(string $location): bool - { - /** @var FilesystemOperator $filesystem */ - [$filesystem, $path] = $this->determineFilesystemAndPath($location); - - try { - return $filesystem->fileExists($path) || $filesystem->directoryExists($path); - } catch (Throwable $exception) { - throw UnableToCheckExistence::forLocation($location, $exception); - } - } - - public function directoryExists(string $location): bool - { - /** @var FilesystemOperator $filesystem */ - [$filesystem, $path] = $this->determineFilesystemAndPath($location); - - try { - return $filesystem->directoryExists($path); - } catch (Throwable $exception) { - throw UnableToCheckDirectoryExistence::forLocation($location, $exception); - } - } - - public function read(string $location): string - { - /** @var FilesystemOperator $filesystem */ - [$filesystem, $path] = $this->determineFilesystemAndPath($location); - - try { - return $filesystem->read($path); - } catch (UnableToReadFile $exception) { - throw UnableToReadFile::fromLocation($location, $exception->reason(), $exception); - } - } - - public function readStream(string $location) - { - /** @var FilesystemOperator $filesystem */ - [$filesystem, $path] = $this->determineFilesystemAndPath($location); - - try { - return $filesystem->readStream($path); - } catch (UnableToReadFile $exception) { - throw UnableToReadFile::fromLocation($location, $exception->reason(), $exception); - } - } - - public function listContents(string $location, bool $deep = self::LIST_SHALLOW): DirectoryListing - { - /** @var FilesystemOperator $filesystem */ - [$filesystem, $path, $mountIdentifier] = $this->determineFilesystemAndPath($location); - - return - $filesystem - ->listContents($path, $deep) - ->map( - function (StorageAttributes $attributes) use ($mountIdentifier) { - return $attributes->withPath(sprintf('%s://%s', $mountIdentifier, $attributes->path())); - } - ); - } - - public function lastModified(string $location): int - { - /** @var FilesystemOperator $filesystem */ - [$filesystem, $path] = $this->determineFilesystemAndPath($location); - - try { - return $filesystem->lastModified($path); - } catch (UnableToRetrieveMetadata $exception) { - throw UnableToRetrieveMetadata::lastModified($location, $exception->reason(), $exception); - } - } - - public function fileSize(string $location): int - { - /** @var FilesystemOperator $filesystem */ - [$filesystem, $path] = $this->determineFilesystemAndPath($location); - - try { - return $filesystem->fileSize($path); - } catch (UnableToRetrieveMetadata $exception) { - throw UnableToRetrieveMetadata::fileSize($location, $exception->reason(), $exception); - } - } - - public function mimeType(string $location): string - { - /** @var FilesystemOperator $filesystem */ - [$filesystem, $path] = $this->determineFilesystemAndPath($location); - - try { - return $filesystem->mimeType($path); - } catch (UnableToRetrieveMetadata $exception) { - throw UnableToRetrieveMetadata::mimeType($location, $exception->reason(), $exception); - } - } - - public function visibility(string $path): string - { - /** @var FilesystemOperator $filesystem */ - [$filesystem, $location] = $this->determineFilesystemAndPath($path); - - try { - return $filesystem->visibility($location); - } catch (UnableToRetrieveMetadata $exception) { - throw UnableToRetrieveMetadata::visibility($path, $exception->reason(), $exception); - } - } - - public function write(string $location, string $contents, array $config = []): void - { - /** @var FilesystemOperator $filesystem */ - [$filesystem, $path] = $this->determineFilesystemAndPath($location); - - try { - $filesystem->write($path, $contents, $this->config->extend($config)->toArray()); - } catch (UnableToWriteFile $exception) { - throw UnableToWriteFile::atLocation($location, $exception->reason(), $exception); - } - } - - public function writeStream(string $location, $contents, array $config = []): void - { - /** @var FilesystemOperator $filesystem */ - [$filesystem, $path] = $this->determineFilesystemAndPath($location); - $filesystem->writeStream($path, $contents, $this->config->extend($config)->toArray()); - } - - public function setVisibility(string $path, string $visibility): void - { - /** @var FilesystemOperator $filesystem */ - [$filesystem, $path] = $this->determineFilesystemAndPath($path); - $filesystem->setVisibility($path, $visibility); - } - - public function delete(string $location): void - { - /** @var FilesystemOperator $filesystem */ - [$filesystem, $path] = $this->determineFilesystemAndPath($location); - - try { - $filesystem->delete($path); - } catch (UnableToDeleteFile $exception) { - throw UnableToDeleteFile::atLocation($location, $exception->reason(), $exception); - } - } - - public function deleteDirectory(string $location): void - { - /** @var FilesystemOperator $filesystem */ - [$filesystem, $path] = $this->determineFilesystemAndPath($location); - - try { - $filesystem->deleteDirectory($path); - } catch (UnableToDeleteDirectory $exception) { - throw UnableToDeleteDirectory::atLocation($location, $exception->reason(), $exception); - } - } - - public function createDirectory(string $location, array $config = []): void - { - /** @var FilesystemOperator $filesystem */ - [$filesystem, $path] = $this->determineFilesystemAndPath($location); - - try { - $filesystem->createDirectory($path, $this->config->extend($config)->toArray()); - } catch (UnableToCreateDirectory $exception) { - throw UnableToCreateDirectory::dueToFailure($location, $exception); - } - } - - public function move(string $source, string $destination, array $config = []): void - { - /** @var FilesystemOperator $sourceFilesystem */ - /* @var FilesystemOperator $destinationFilesystem */ - [$sourceFilesystem, $sourcePath] = $this->determineFilesystemAndPath($source); - [$destinationFilesystem, $destinationPath] = $this->determineFilesystemAndPath($destination); - - $sourceFilesystem === $destinationFilesystem ? $this->moveInTheSameFilesystem( - $sourceFilesystem, - $sourcePath, - $destinationPath, - $source, - $destination, - $config, - ) : $this->moveAcrossFilesystems($source, $destination, $config); - } - - public function copy(string $source, string $destination, array $config = []): void - { - /** @var FilesystemOperator $sourceFilesystem */ - /* @var FilesystemOperator $destinationFilesystem */ - [$sourceFilesystem, $sourcePath] = $this->determineFilesystemAndPath($source); - [$destinationFilesystem, $destinationPath] = $this->determineFilesystemAndPath($destination); - - $sourceFilesystem === $destinationFilesystem ? $this->copyInSameFilesystem( - $sourceFilesystem, - $sourcePath, - $destinationPath, - $source, - $destination, - $config, - ) : $this->copyAcrossFilesystem( - $sourceFilesystem, - $sourcePath, - $destinationFilesystem, - $destinationPath, - $source, - $destination, - $config, - ); - } - - public function publicUrl(string $path, array $config = []): string - { - /** @var FilesystemOperator $filesystem */ - [$filesystem, $path] = $this->determineFilesystemAndPath($path); - - if ( ! method_exists($filesystem, 'publicUrl')) { - throw new UnableToGeneratePublicUrl(sprintf('%s does not support generating public urls.', $filesystem::class), $path); - } - - return $filesystem->publicUrl($path, $config); - } - - public function temporaryUrl(string $path, DateTimeInterface $expiresAt, array $config = []): string - { - /** @var FilesystemOperator $filesystem */ - [$filesystem, $path] = $this->determineFilesystemAndPath($path); - - if ( ! method_exists($filesystem, 'temporaryUrl')) { - throw new UnableToGenerateTemporaryUrl(sprintf('%s does not support generating public urls.', $filesystem::class), $path); - } - - return $filesystem->temporaryUrl($path, $expiresAt, $this->config->extend($config)->toArray()); - } - - public function checksum(string $path, array $config = []): string - { - /** @var FilesystemOperator $filesystem */ - [$filesystem, $path] = $this->determineFilesystemAndPath($path); - - if ( ! method_exists($filesystem, 'checksum')) { - throw new UnableToProvideChecksum(sprintf('%s does not support providing checksums.', $filesystem::class), $path); - } - - return $filesystem->checksum($path, $this->config->extend($config)->toArray()); - } - - private function mountFilesystems(array $filesystems): void - { - foreach ($filesystems as $key => $filesystem) { - $this->guardAgainstInvalidMount($key, $filesystem); - /* @var string $key */ - /* @var FilesystemOperator $filesystem */ - $this->mountFilesystem($key, $filesystem); - } - } - - private function guardAgainstInvalidMount(mixed $key, mixed $filesystem): void - { - if ( ! is_string($key)) { - throw UnableToMountFilesystem::becauseTheKeyIsNotValid($key); - } - - if ( ! $filesystem instanceof FilesystemOperator) { - throw UnableToMountFilesystem::becauseTheFilesystemWasNotValid($filesystem); - } - } - - private function mountFilesystem(string $key, FilesystemOperator $filesystem): void - { - $this->filesystems[$key] = $filesystem; - } - - /** - * @param string $path - * - * @return array{0:FilesystemOperator, 1:string, 2:string} - */ - private function determineFilesystemAndPath(string $path): array - { - if (strpos($path, '://') < 1) { - throw UnableToResolveFilesystemMount::becauseTheSeparatorIsMissing($path); - } - - /** @var string $mountIdentifier */ - /** @var string $mountPath */ - [$mountIdentifier, $mountPath] = explode('://', $path, 2); - - if ( ! array_key_exists($mountIdentifier, $this->filesystems)) { - throw UnableToResolveFilesystemMount::becauseTheMountWasNotRegistered($mountIdentifier); - } - - return [$this->filesystems[$mountIdentifier], $mountPath, $mountIdentifier]; - } - - private function copyInSameFilesystem( - FilesystemOperator $sourceFilesystem, - string $sourcePath, - string $destinationPath, - string $source, - string $destination, - array $config, - ): void { - try { - $sourceFilesystem->copy($sourcePath, $destinationPath, $this->config->extend($config)->toArray()); - } catch (UnableToCopyFile $exception) { - throw UnableToCopyFile::fromLocationTo($source, $destination, $exception); - } - } - - private function copyAcrossFilesystem( - FilesystemOperator $sourceFilesystem, - string $sourcePath, - FilesystemOperator $destinationFilesystem, - string $destinationPath, - string $source, - string $destination, - array $config, - ): void { - $config = $this->config->extend($config); - $retainVisibility = (bool) $config->get(Config::OPTION_RETAIN_VISIBILITY, true); - $visibility = $config->get(Config::OPTION_VISIBILITY); - - try { - if ($visibility == null && $retainVisibility) { - $visibility = $sourceFilesystem->visibility($sourcePath); - $config = $config->extend(compact('visibility')); - } - - $stream = $sourceFilesystem->readStream($sourcePath); - $destinationFilesystem->writeStream($destinationPath, $stream, $config->toArray()); - } catch (UnableToRetrieveMetadata | UnableToReadFile | UnableToWriteFile $exception) { - throw UnableToCopyFile::fromLocationTo($source, $destination, $exception); - } - } - - private function moveInTheSameFilesystem( - FilesystemOperator $sourceFilesystem, - string $sourcePath, - string $destinationPath, - string $source, - string $destination, - array $config, - ): void { - try { - $sourceFilesystem->move($sourcePath, $destinationPath, $this->config->extend($config)->toArray()); - } catch (UnableToMoveFile $exception) { - throw UnableToMoveFile::fromLocationTo($source, $destination, $exception); - } - } - - private function moveAcrossFilesystems(string $source, string $destination, array $config = []): void - { - try { - $this->copy($source, $destination, $config); - $this->delete($source); - } catch (UnableToCopyFile | UnableToDeleteFile $exception) { - throw UnableToMoveFile::fromLocationTo($source, $destination, $exception); - } - } -} diff --git a/docker/streamline-src/vendor/league/flysystem/src/UnableToCheckExistence.php b/docker/streamline-src/vendor/league/flysystem/src/UnableToCheckExistence.php deleted file mode 100644 index 5f204d35..00000000 --- a/docker/streamline-src/vendor/league/flysystem/src/UnableToCheckExistence.php +++ /dev/null @@ -1,26 +0,0 @@ -source; - } - - public function destination(): string - { - return $this->destination; - } - - public static function fromLocationTo( - string $sourcePath, - string $destinationPath, - ?Throwable $previous = null - ): UnableToCopyFile { - $e = new static("Unable to copy file from $sourcePath to $destinationPath", 0 , $previous); - $e->source = $sourcePath; - $e->destination = $destinationPath; - - return $e; - } - - public static function sourceAndDestinationAreTheSame(string $source, string $destination): UnableToCopyFile - { - return UnableToCopyFile::because('Source and destination are the same', $source, $destination); - } - - public static function because(string $reason, string $sourcePath, string $destinationPath): UnableToCopyFile - { - $e = new static("Unable to copy file from $sourcePath to $destinationPath, because $reason"); - $e->source = $sourcePath; - $e->destination = $destinationPath; - - return $e; - } - - public function operation(): string - { - return FilesystemOperationFailed::OPERATION_COPY; - } -} diff --git a/docker/streamline-src/vendor/league/flysystem/src/UnableToDeleteDirectory.php b/docker/streamline-src/vendor/league/flysystem/src/UnableToDeleteDirectory.php deleted file mode 100644 index bf6cf3b9..00000000 --- a/docker/streamline-src/vendor/league/flysystem/src/UnableToDeleteDirectory.php +++ /dev/null @@ -1,48 +0,0 @@ -location = $location; - $e->reason = $reason; - - return $e; - } - - public function operation(): string - { - return FilesystemOperationFailed::OPERATION_DELETE_DIRECTORY; - } - - public function reason(): string - { - return $this->reason; - } - - public function location(): string - { - return $this->location; - } -} diff --git a/docker/streamline-src/vendor/league/flysystem/src/UnableToDeleteFile.php b/docker/streamline-src/vendor/league/flysystem/src/UnableToDeleteFile.php deleted file mode 100644 index e388f332..00000000 --- a/docker/streamline-src/vendor/league/flysystem/src/UnableToDeleteFile.php +++ /dev/null @@ -1,45 +0,0 @@ -location = $location; - $e->reason = $reason; - - return $e; - } - - public function operation(): string - { - return FilesystemOperationFailed::OPERATION_DELETE; - } - - public function reason(): string - { - return $this->reason; - } - - public function location(): string - { - return $this->location; - } -} diff --git a/docker/streamline-src/vendor/league/flysystem/src/UnableToMoveFile.php b/docker/streamline-src/vendor/league/flysystem/src/UnableToMoveFile.php deleted file mode 100644 index e1425405..00000000 --- a/docker/streamline-src/vendor/league/flysystem/src/UnableToMoveFile.php +++ /dev/null @@ -1,67 +0,0 @@ -source; - } - - public function destination(): string - { - return $this->destination; - } - - public static function fromLocationTo( - string $sourcePath, - string $destinationPath, - ?Throwable $previous = null - ): UnableToMoveFile { - $message = $previous?->getMessage() ?? "Unable to move file from $sourcePath to $destinationPath"; - $e = new static($message, 0, $previous); - $e->source = $sourcePath; - $e->destination = $destinationPath; - - return $e; - } - - public static function because( - string $reason, - string $sourcePath, - string $destinationPath, - ): UnableToMoveFile { - $message = "Unable to move file from $sourcePath to $destinationPath, because $reason"; - $e = new static($message); - $e->source = $sourcePath; - $e->destination = $destinationPath; - - return $e; - } - - public function operation(): string - { - return FilesystemOperationFailed::OPERATION_MOVE; - } -} diff --git a/docker/streamline-src/vendor/league/flysystem/src/UnableToReadFile.php b/docker/streamline-src/vendor/league/flysystem/src/UnableToReadFile.php deleted file mode 100644 index b895b86f..00000000 --- a/docker/streamline-src/vendor/league/flysystem/src/UnableToReadFile.php +++ /dev/null @@ -1,45 +0,0 @@ -location = $location; - $e->reason = $reason; - - return $e; - } - - public function operation(): string - { - return FilesystemOperationFailed::OPERATION_READ; - } - - public function reason(): string - { - return $this->reason; - } - - public function location(): string - { - return $this->location; - } -} diff --git a/docker/streamline-src/vendor/league/flysystem/src/UnableToRetrieveMetadata.php b/docker/streamline-src/vendor/league/flysystem/src/UnableToRetrieveMetadata.php deleted file mode 100644 index f7e3fde4..00000000 --- a/docker/streamline-src/vendor/league/flysystem/src/UnableToRetrieveMetadata.php +++ /dev/null @@ -1,76 +0,0 @@ -reason = $reason; - $e->location = $location; - $e->metadataType = $type; - - return $e; - } - - public function reason(): string - { - return $this->reason; - } - - public function location(): string - { - return $this->location; - } - - public function metadataType(): string - { - return $this->metadataType; - } - - public function operation(): string - { - return FilesystemOperationFailed::OPERATION_RETRIEVE_METADATA; - } -} diff --git a/docker/streamline-src/vendor/league/flysystem/src/UnableToSetVisibility.php b/docker/streamline-src/vendor/league/flysystem/src/UnableToSetVisibility.php deleted file mode 100644 index d0126098..00000000 --- a/docker/streamline-src/vendor/league/flysystem/src/UnableToSetVisibility.php +++ /dev/null @@ -1,49 +0,0 @@ -reason; - } - - public static function atLocation(string $filename, string $extraMessage = '', ?Throwable $previous = null): self - { - $message = "Unable to set visibility for file {$filename}. $extraMessage"; - $e = new static(rtrim($message), 0, $previous); - $e->reason = $extraMessage; - $e->location = $filename; - - return $e; - } - - public function operation(): string - { - return FilesystemOperationFailed::OPERATION_SET_VISIBILITY; - } - - public function location(): string - { - return $this->location; - } -} diff --git a/docker/streamline-src/vendor/league/flysystem/src/UnableToWriteFile.php b/docker/streamline-src/vendor/league/flysystem/src/UnableToWriteFile.php deleted file mode 100644 index fb9a1006..00000000 --- a/docker/streamline-src/vendor/league/flysystem/src/UnableToWriteFile.php +++ /dev/null @@ -1,45 +0,0 @@ -location = $location; - $e->reason = $reason; - - return $e; - } - - public function operation(): string - { - return FilesystemOperationFailed::OPERATION_WRITE; - } - - public function reason(): string - { - return $this->reason; - } - - public function location(): string - { - return $this->location; - } -} diff --git a/docker/streamline-src/vendor/league/mime-type-detection/CHANGELOG.md b/docker/streamline-src/vendor/league/mime-type-detection/CHANGELOG.md deleted file mode 100644 index eb138635..00000000 --- a/docker/streamline-src/vendor/league/mime-type-detection/CHANGELOG.md +++ /dev/null @@ -1,64 +0,0 @@ -# Changelog - -## 1.16.0 - 2025-09-21 - -- Updated lookup -- Prepped for 8.4 implicit nullable deprecation - -## 1.15.0 - 2024-01-28 - -- Updated lookup - -## 1.14.0 - 2022-10-17 - -### Updated - -- Updated lookup - -## 1.13.0 - 2023-08-05 - -### Added - -- A reverse lookup mechanism to fetch one or all extensions for a given mimetype - -## 1.12.0 - 2023-08-03 - -### Updated - -- Updated lookup - -## 1.11.0 - 2023-04-17 - -### Updated - -- Updated lookup - -## 1.10.0 - 2022-04-11 - -### Fixed - -- Added Flysystem v1 inconclusive mime-types and made it configurable as a constructor parameter. - -## 1.9.0 - 2021-11-21 - -### Updated - -- Updated lookup - -## 1.8.0 - 2021-09-25 - -### Added - -- Added the decorator `OverridingExtensionToMimeTypeMap` which allows you to override values. - -## 1.7.0 - 2021-01-18 - -### Added - -- Added a `bufferSampleSize` parameter to the `FinfoMimeTypeDetector` class that allows you to send a reduced content sample which costs less memory. - -## 1.6.0 - 2021-01-18 - -### Changes - -- Updated generated mime-type map diff --git a/docker/streamline-src/vendor/league/mime-type-detection/src/ExtensionMimeTypeDetector.php b/docker/streamline-src/vendor/league/mime-type-detection/src/ExtensionMimeTypeDetector.php deleted file mode 100644 index 0caa5fe6..00000000 --- a/docker/streamline-src/vendor/league/mime-type-detection/src/ExtensionMimeTypeDetector.php +++ /dev/null @@ -1,56 +0,0 @@ -extensions = $extensions ?: new GeneratedExtensionToMimeTypeMap(); - } - - public function detectMimeType(string $path, $contents): ?string - { - return $this->detectMimeTypeFromPath($path); - } - - public function detectMimeTypeFromPath(string $path): ?string - { - $extension = strtolower(pathinfo($path, PATHINFO_EXTENSION)); - - return $this->extensions->lookupMimeType($extension); - } - - public function detectMimeTypeFromFile(string $path): ?string - { - return $this->detectMimeTypeFromPath($path); - } - - public function detectMimeTypeFromBuffer(string $contents): ?string - { - return null; - } - - public function lookupExtension(string $mimetype): ?string - { - return $this->extensions instanceof ExtensionLookup - ? $this->extensions->lookupExtension($mimetype) - : null; - } - - public function lookupAllExtensions(string $mimetype): array - { - return $this->extensions instanceof ExtensionLookup - ? $this->extensions->lookupAllExtensions($mimetype) - : []; - } -} diff --git a/docker/streamline-src/vendor/league/mime-type-detection/src/FinfoMimeTypeDetector.php b/docker/streamline-src/vendor/league/mime-type-detection/src/FinfoMimeTypeDetector.php deleted file mode 100644 index 2ccf328f..00000000 --- a/docker/streamline-src/vendor/league/mime-type-detection/src/FinfoMimeTypeDetector.php +++ /dev/null @@ -1,106 +0,0 @@ - - */ - private $inconclusiveMimetypes; - - public function __construct( - string $magicFile = '', - ?ExtensionToMimeTypeMap $extensionMap = null, - ?int $bufferSampleSize = null, - array $inconclusiveMimetypes = self::INCONCLUSIVE_MIME_TYPES - ) { - $this->finfo = new finfo(FILEINFO_MIME_TYPE, $magicFile); - $this->extensionMap = $extensionMap ?: new GeneratedExtensionToMimeTypeMap(); - $this->bufferSampleSize = $bufferSampleSize; - $this->inconclusiveMimetypes = $inconclusiveMimetypes; - } - - public function detectMimeType(string $path, $contents): ?string - { - $mimeType = is_string($contents) - ? (@$this->finfo->buffer($this->takeSample($contents)) ?: null) - : null; - - if ($mimeType !== null && ! in_array($mimeType, $this->inconclusiveMimetypes)) { - return $mimeType; - } - - return $this->detectMimeTypeFromPath($path); - } - - public function detectMimeTypeFromPath(string $path): ?string - { - $extension = strtolower(pathinfo($path, PATHINFO_EXTENSION)); - - return $this->extensionMap->lookupMimeType($extension); - } - - public function detectMimeTypeFromFile(string $path): ?string - { - return @$this->finfo->file($path) ?: null; - } - - public function detectMimeTypeFromBuffer(string $contents): ?string - { - return @$this->finfo->buffer($this->takeSample($contents)) ?: null; - } - - private function takeSample(string $contents): string - { - if ($this->bufferSampleSize === null) { - return $contents; - } - - return (string) substr($contents, 0, $this->bufferSampleSize); - } - - public function lookupExtension(string $mimetype): ?string - { - return $this->extensionMap instanceof ExtensionLookup - ? $this->extensionMap->lookupExtension($mimetype) - : null; - } - - public function lookupAllExtensions(string $mimetype): array - { - return $this->extensionMap instanceof ExtensionLookup - ? $this->extensionMap->lookupAllExtensions($mimetype) - : []; - } -} diff --git a/docker/streamline-src/vendor/league/mime-type-detection/src/GeneratedExtensionToMimeTypeMap.php b/docker/streamline-src/vendor/league/mime-type-detection/src/GeneratedExtensionToMimeTypeMap.php deleted file mode 100644 index 65e986ae..00000000 --- a/docker/streamline-src/vendor/league/mime-type-detection/src/GeneratedExtensionToMimeTypeMap.php +++ /dev/null @@ -1,2310 +0,0 @@ - - * - * @internal - */ - public const MIME_TYPES_FOR_EXTENSIONS = [ - '1km' => 'application/vnd.1000minds.decision-model+xml', - '3dml' => 'text/vnd.in3d.3dml', - '3ds' => 'image/x-3ds', - '3g2' => 'video/3gpp2', - '3gp' => 'video/3gp', - '3gpp' => 'video/3gpp', - '3mf' => 'model/3mf', - '7z' => 'application/x-7z-compressed', - '7zip' => 'application/x-7z-compressed', - '123' => 'application/vnd.lotus-1-2-3', - 'aab' => 'application/x-authorware-bin', - 'aac' => 'audio/acc', - 'aam' => 'application/x-authorware-map', - 'aas' => 'application/x-authorware-seg', - 'abw' => 'application/x-abiword', - 'ac' => 'application/vnd.nokia.n-gage.ac+xml', - 'ac3' => 'audio/ac3', - 'acc' => 'application/vnd.americandynamics.acc', - 'ace' => 'application/x-ace-compressed', - 'acu' => 'application/vnd.acucobol', - 'acutc' => 'application/vnd.acucorp', - 'adp' => 'audio/adpcm', - 'adts' => 'audio/aac', - 'aep' => 'application/vnd.audiograph', - 'afm' => 'application/x-font-type1', - 'afp' => 'application/vnd.ibm.modcap', - 'age' => 'application/vnd.age', - 'ahead' => 'application/vnd.ahead.space', - 'ai' => 'application/pdf', - 'aif' => 'audio/x-aiff', - 'aifc' => 'audio/x-aiff', - 'aiff' => 'audio/x-aiff', - 'air' => 'application/vnd.adobe.air-application-installer-package+zip', - 'ait' => 'application/vnd.dvb.ait', - 'ami' => 'application/vnd.amiga.ami', - 'aml' => 'application/automationml-aml+xml', - 'amlx' => 'application/automationml-amlx+zip', - 'amr' => 'audio/amr', - 'apk' => 'application/vnd.android.package-archive', - 'apng' => 'image/apng', - 'appcache' => 'text/cache-manifest', - 'appinstaller' => 'application/appinstaller', - 'application' => 'application/x-ms-application', - 'appx' => 'application/appx', - 'appxbundle' => 'application/appxbundle', - 'apr' => 'application/vnd.lotus-approach', - 'arc' => 'application/x-freearc', - 'arj' => 'application/x-arj', - 'asc' => 'application/pgp-signature', - 'asf' => 'video/x-ms-asf', - 'asm' => 'text/x-asm', - 'aso' => 'application/vnd.accpac.simply.aso', - 'asx' => 'video/x-ms-asf', - 'atc' => 'application/vnd.acucorp', - 'atom' => 'application/atom+xml', - 'atomcat' => 'application/atomcat+xml', - 'atomdeleted' => 'application/atomdeleted+xml', - 'atomsvc' => 'application/atomsvc+xml', - 'atx' => 'application/vnd.antix.game-component', - 'au' => 'audio/x-au', - 'avci' => 'image/avci', - 'avcs' => 'image/avcs', - 'avi' => 'video/x-msvideo', - 'avif' => 'image/avif', - 'aw' => 'application/applixware', - 'azf' => 'application/vnd.airzip.filesecure.azf', - 'azs' => 'application/vnd.airzip.filesecure.azs', - 'azv' => 'image/vnd.airzip.accelerator.azv', - 'azw' => 'application/vnd.amazon.ebook', - 'b16' => 'image/vnd.pco.b16', - 'bary' => 'model/vnd.bary', - 'bat' => 'application/x-msdownload', - 'bcpio' => 'application/x-bcpio', - 'bdf' => 'application/x-font-bdf', - 'bdm' => 'application/vnd.syncml.dm+wbxml', - 'bdo' => 'application/vnd.nato.bindingdataobject+xml', - 'bdoc' => 'application/x-bdoc', - 'bed' => 'application/vnd.realvnc.bed', - 'bh2' => 'application/vnd.fujitsu.oasysprs', - 'bin' => 'application/octet-stream', - 'blb' => 'application/x-blorb', - 'blorb' => 'application/x-blorb', - 'bmi' => 'application/vnd.bmi', - 'bmml' => 'application/vnd.balsamiq.bmml+xml', - 'bmp' => 'image/bmp', - 'book' => 'application/vnd.framemaker', - 'box' => 'application/vnd.previewsystems.box', - 'boz' => 'application/x-bzip2', - 'bpk' => 'application/octet-stream', - 'bpmn' => 'application/octet-stream', - 'brf' => 'application/braille', - 'bsp' => 'model/vnd.valve.source.compiled-map', - 'btf' => 'image/prs.btif', - 'btif' => 'image/prs.btif', - 'buffer' => 'application/octet-stream', - 'bz' => 'application/x-bzip', - 'bz2' => 'application/x-bzip2', - 'c' => 'text/x-c', - 'c4d' => 'application/vnd.clonk.c4group', - 'c4f' => 'application/vnd.clonk.c4group', - 'c4g' => 'application/vnd.clonk.c4group', - 'c4p' => 'application/vnd.clonk.c4group', - 'c4u' => 'application/vnd.clonk.c4group', - 'c11amc' => 'application/vnd.cluetrust.cartomobile-config', - 'c11amz' => 'application/vnd.cluetrust.cartomobile-config-pkg', - 'cab' => 'application/vnd.ms-cab-compressed', - 'caf' => 'audio/x-caf', - 'cap' => 'application/vnd.tcpdump.pcap', - 'car' => 'application/vnd.curl.car', - 'cat' => 'application/vnd.ms-pki.seccat', - 'cb7' => 'application/x-cbr', - 'cba' => 'application/x-cbr', - 'cbr' => 'application/x-cbr', - 'cbt' => 'application/x-cbr', - 'cbz' => 'application/x-cbr', - 'cc' => 'text/x-c', - 'cco' => 'application/x-cocoa', - 'cct' => 'application/x-director', - 'ccxml' => 'application/ccxml+xml', - 'cdbcmsg' => 'application/vnd.contact.cmsg', - 'cdf' => 'application/x-netcdf', - 'cdfx' => 'application/cdfx+xml', - 'cdkey' => 'application/vnd.mediastation.cdkey', - 'cdmia' => 'application/cdmi-capability', - 'cdmic' => 'application/cdmi-container', - 'cdmid' => 'application/cdmi-domain', - 'cdmio' => 'application/cdmi-object', - 'cdmiq' => 'application/cdmi-queue', - 'cdr' => 'application/cdr', - 'cdx' => 'chemical/x-cdx', - 'cdxml' => 'application/vnd.chemdraw+xml', - 'cdy' => 'application/vnd.cinderella', - 'cer' => 'application/pkix-cert', - 'cfs' => 'application/x-cfs-compressed', - 'cgm' => 'image/cgm', - 'chat' => 'application/x-chat', - 'chm' => 'application/vnd.ms-htmlhelp', - 'chrt' => 'application/vnd.kde.kchart', - 'cif' => 'chemical/x-cif', - 'cii' => 'application/vnd.anser-web-certificate-issue-initiation', - 'cil' => 'application/vnd.ms-artgalry', - 'cjs' => 'application/node', - 'cla' => 'application/vnd.claymore', - 'class' => 'application/octet-stream', - 'cld' => 'model/vnd.cld', - 'clkk' => 'application/vnd.crick.clicker.keyboard', - 'clkp' => 'application/vnd.crick.clicker.palette', - 'clkt' => 'application/vnd.crick.clicker.template', - 'clkw' => 'application/vnd.crick.clicker.wordbank', - 'clkx' => 'application/vnd.crick.clicker', - 'clp' => 'application/x-msclip', - 'cmc' => 'application/vnd.cosmocaller', - 'cmdf' => 'chemical/x-cmdf', - 'cml' => 'chemical/x-cml', - 'cmp' => 'application/vnd.yellowriver-custom-menu', - 'cmx' => 'image/x-cmx', - 'cod' => 'application/vnd.rim.cod', - 'coffee' => 'text/coffeescript', - 'com' => 'application/x-msdownload', - 'conf' => 'text/plain', - 'cpio' => 'application/x-cpio', - 'cpl' => 'application/cpl+xml', - 'cpp' => 'text/x-c', - 'cpt' => 'application/mac-compactpro', - 'crd' => 'application/x-mscardfile', - 'crl' => 'application/pkix-crl', - 'crt' => 'application/x-x509-ca-cert', - 'crx' => 'application/x-chrome-extension', - 'cryptonote' => 'application/vnd.rig.cryptonote', - 'csh' => 'application/x-csh', - 'csl' => 'application/vnd.citationstyles.style+xml', - 'csml' => 'chemical/x-csml', - 'csp' => 'application/vnd.commonspace', - 'csr' => 'application/octet-stream', - 'css' => 'text/css', - 'cst' => 'application/x-director', - 'csv' => 'text/csv', - 'cu' => 'application/cu-seeme', - 'curl' => 'text/vnd.curl', - 'cwl' => 'application/cwl', - 'cww' => 'application/prs.cww', - 'cxt' => 'application/x-director', - 'cxx' => 'text/x-c', - 'dae' => 'model/vnd.collada+xml', - 'daf' => 'application/vnd.mobius.daf', - 'dart' => 'application/vnd.dart', - 'dataless' => 'application/vnd.fdsn.seed', - 'davmount' => 'application/davmount+xml', - 'dbf' => 'application/vnd.dbf', - 'dbk' => 'application/docbook+xml', - 'dcr' => 'application/x-director', - 'dcurl' => 'text/vnd.curl.dcurl', - 'dd2' => 'application/vnd.oma.dd2+xml', - 'ddd' => 'application/vnd.fujixerox.ddd', - 'ddf' => 'application/vnd.syncml.dmddf+xml', - 'dds' => 'image/vnd.ms-dds', - 'deb' => 'application/x-debian-package', - 'def' => 'text/plain', - 'deploy' => 'application/octet-stream', - 'der' => 'application/x-x509-ca-cert', - 'dfac' => 'application/vnd.dreamfactory', - 'dgc' => 'application/x-dgc-compressed', - 'dib' => 'image/bmp', - 'dic' => 'text/x-c', - 'dir' => 'application/x-director', - 'dis' => 'application/vnd.mobius.dis', - 'disposition-notification' => 'message/disposition-notification', - 'dist' => 'application/octet-stream', - 'distz' => 'application/octet-stream', - 'djv' => 'image/vnd.djvu', - 'djvu' => 'image/vnd.djvu', - 'dll' => 'application/octet-stream', - 'dmg' => 'application/x-apple-diskimage', - 'dmn' => 'application/octet-stream', - 'dmp' => 'application/vnd.tcpdump.pcap', - 'dms' => 'application/octet-stream', - 'dna' => 'application/vnd.dna', - 'doc' => 'application/msword', - 'docm' => 'application/vnd.ms-word.template.macroEnabled.12', - 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', - 'dot' => 'application/msword', - 'dotm' => 'application/vnd.ms-word.template.macroEnabled.12', - 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', - 'dp' => 'application/vnd.osgi.dp', - 'dpg' => 'application/vnd.dpgraph', - 'dpx' => 'image/dpx', - 'dra' => 'audio/vnd.dra', - 'drle' => 'image/dicom-rle', - 'dsc' => 'text/prs.lines.tag', - 'dssc' => 'application/dssc+der', - 'dst' => 'application/octet-stream', - 'dtb' => 'application/x-dtbook+xml', - 'dtd' => 'application/xml-dtd', - 'dts' => 'audio/vnd.dts', - 'dtshd' => 'audio/vnd.dts.hd', - 'dump' => 'application/octet-stream', - 'dvb' => 'video/vnd.dvb.file', - 'dvi' => 'application/x-dvi', - 'dwd' => 'application/atsc-dwd+xml', - 'dwf' => 'model/vnd.dwf', - 'dwg' => 'image/vnd.dwg', - 'dxf' => 'image/vnd.dxf', - 'dxp' => 'application/vnd.spotfire.dxp', - 'dxr' => 'application/x-director', - 'ear' => 'application/java-archive', - 'ecelp4800' => 'audio/vnd.nuera.ecelp4800', - 'ecelp7470' => 'audio/vnd.nuera.ecelp7470', - 'ecelp9600' => 'audio/vnd.nuera.ecelp9600', - 'ecma' => 'application/ecmascript', - 'edm' => 'application/vnd.novadigm.edm', - 'edx' => 'application/vnd.novadigm.edx', - 'efif' => 'application/vnd.picsel', - 'ei6' => 'application/vnd.pg.osasli', - 'elc' => 'application/octet-stream', - 'emf' => 'image/emf', - 'eml' => 'message/rfc822', - 'emma' => 'application/emma+xml', - 'emotionml' => 'application/emotionml+xml', - 'emz' => 'application/x-msmetafile', - 'eol' => 'audio/vnd.digital-winds', - 'eot' => 'application/vnd.ms-fontobject', - 'eps' => 'application/postscript', - 'epub' => 'application/epub+zip', - 'es3' => 'application/vnd.eszigno3+xml', - 'esa' => 'application/vnd.osgi.subsystem', - 'esf' => 'application/vnd.epson.esf', - 'et3' => 'application/vnd.eszigno3+xml', - 'etx' => 'text/x-setext', - 'eva' => 'application/x-eva', - 'evy' => 'application/x-envoy', - 'exe' => 'application/octet-stream', - 'exi' => 'application/exi', - 'exp' => 'application/express', - 'exr' => 'image/aces', - 'ext' => 'application/vnd.novadigm.ext', - 'ez' => 'application/andrew-inset', - 'ez2' => 'application/vnd.ezpix-album', - 'ez3' => 'application/vnd.ezpix-package', - 'f' => 'text/x-fortran', - 'f4v' => 'video/mp4', - 'f77' => 'text/x-fortran', - 'f90' => 'text/x-fortran', - 'fbs' => 'image/vnd.fastbidsheet', - 'fcdt' => 'application/vnd.adobe.formscentral.fcdt', - 'fcs' => 'application/vnd.isac.fcs', - 'fdf' => 'application/vnd.fdf', - 'fdt' => 'application/fdt+xml', - 'fe_launch' => 'application/vnd.denovo.fcselayout-link', - 'fg5' => 'application/vnd.fujitsu.oasysgp', - 'fgd' => 'application/x-director', - 'fh' => 'image/x-freehand', - 'fh4' => 'image/x-freehand', - 'fh5' => 'image/x-freehand', - 'fh7' => 'image/x-freehand', - 'fhc' => 'image/x-freehand', - 'fig' => 'application/x-xfig', - 'fits' => 'image/fits', - 'flac' => 'audio/x-flac', - 'fli' => 'video/x-fli', - 'flo' => 'application/vnd.micrografx.flo', - 'flv' => 'video/x-flv', - 'flw' => 'application/vnd.kde.kivio', - 'flx' => 'text/vnd.fmi.flexstor', - 'fly' => 'text/vnd.fly', - 'fm' => 'application/vnd.framemaker', - 'fnc' => 'application/vnd.frogans.fnc', - 'fo' => 'application/vnd.software602.filler.form+xml', - 'for' => 'text/x-fortran', - 'fpx' => 'image/vnd.fpx', - 'frame' => 'application/vnd.framemaker', - 'fsc' => 'application/vnd.fsc.weblaunch', - 'fst' => 'image/vnd.fst', - 'ftc' => 'application/vnd.fluxtime.clip', - 'fti' => 'application/vnd.anser-web-funds-transfer-initiation', - 'fvt' => 'video/vnd.fvt', - 'fxp' => 'application/vnd.adobe.fxp', - 'fxpl' => 'application/vnd.adobe.fxp', - 'fzs' => 'application/vnd.fuzzysheet', - 'g2w' => 'application/vnd.geoplan', - 'g3' => 'image/g3fax', - 'g3w' => 'application/vnd.geospace', - 'gac' => 'application/vnd.groove-account', - 'gam' => 'application/x-tads', - 'gbr' => 'application/rpki-ghostbusters', - 'gca' => 'application/x-gca-compressed', - 'gdl' => 'model/vnd.gdl', - 'gdoc' => 'application/vnd.google-apps.document', - 'ged' => 'text/vnd.familysearch.gedcom', - 'geo' => 'application/vnd.dynageo', - 'geojson' => 'application/geo+json', - 'gex' => 'application/vnd.geometry-explorer', - 'ggb' => 'application/vnd.geogebra.file', - 'ggs' => 'application/vnd.geogebra.slides', - 'ggt' => 'application/vnd.geogebra.tool', - 'ghf' => 'application/vnd.groove-help', - 'gif' => 'image/gif', - 'gim' => 'application/vnd.groove-identity-message', - 'glb' => 'model/gltf-binary', - 'gltf' => 'model/gltf+json', - 'gml' => 'application/gml+xml', - 'gmx' => 'application/vnd.gmx', - 'gnumeric' => 'application/x-gnumeric', - 'gpg' => 'application/gpg-keys', - 'gph' => 'application/vnd.flographit', - 'gpx' => 'application/gpx+xml', - 'gqf' => 'application/vnd.grafeq', - 'gqs' => 'application/vnd.grafeq', - 'gram' => 'application/srgs', - 'gramps' => 'application/x-gramps-xml', - 'gre' => 'application/vnd.geometry-explorer', - 'grv' => 'application/vnd.groove-injector', - 'grxml' => 'application/srgs+xml', - 'gsf' => 'application/x-font-ghostscript', - 'gsheet' => 'application/vnd.google-apps.spreadsheet', - 'gslides' => 'application/vnd.google-apps.presentation', - 'gtar' => 'application/x-gtar', - 'gtm' => 'application/vnd.groove-tool-message', - 'gtw' => 'model/vnd.gtw', - 'gv' => 'text/vnd.graphviz', - 'gxf' => 'application/gxf', - 'gxt' => 'application/vnd.geonext', - 'gz' => 'application/gzip', - 'gzip' => 'application/gzip', - 'h' => 'text/x-c', - 'h261' => 'video/h261', - 'h263' => 'video/h263', - 'h264' => 'video/h264', - 'hal' => 'application/vnd.hal+xml', - 'hbci' => 'application/vnd.hbci', - 'hbs' => 'text/x-handlebars-template', - 'hdd' => 'application/x-virtualbox-hdd', - 'hdf' => 'application/x-hdf', - 'heic' => 'image/heic', - 'heics' => 'image/heic-sequence', - 'heif' => 'image/heif', - 'heifs' => 'image/heif-sequence', - 'hej2' => 'image/hej2k', - 'held' => 'application/atsc-held+xml', - 'hh' => 'text/x-c', - 'hjson' => 'application/hjson', - 'hlp' => 'application/winhlp', - 'hpgl' => 'application/vnd.hp-hpgl', - 'hpid' => 'application/vnd.hp-hpid', - 'hps' => 'application/vnd.hp-hps', - 'hqx' => 'application/mac-binhex40', - 'hsj2' => 'image/hsj2', - 'htc' => 'text/x-component', - 'htke' => 'application/vnd.kenameaapp', - 'htm' => 'text/html', - 'html' => 'text/html', - 'hvd' => 'application/vnd.yamaha.hv-dic', - 'hvp' => 'application/vnd.yamaha.hv-voice', - 'hvs' => 'application/vnd.yamaha.hv-script', - 'i2g' => 'application/vnd.intergeo', - 'icc' => 'application/vnd.iccprofile', - 'ice' => 'x-conference/x-cooltalk', - 'icm' => 'application/vnd.iccprofile', - 'ico' => 'image/x-icon', - 'ics' => 'text/calendar', - 'ief' => 'image/ief', - 'ifb' => 'text/calendar', - 'ifm' => 'application/vnd.shana.informed.formdata', - 'iges' => 'model/iges', - 'igl' => 'application/vnd.igloader', - 'igm' => 'application/vnd.insors.igm', - 'igs' => 'model/iges', - 'igx' => 'application/vnd.micrografx.igx', - 'iif' => 'application/vnd.shana.informed.interchange', - 'img' => 'application/octet-stream', - 'imp' => 'application/vnd.accpac.simply.imp', - 'ims' => 'application/vnd.ms-ims', - 'in' => 'text/plain', - 'ini' => 'text/plain', - 'ink' => 'application/inkml+xml', - 'inkml' => 'application/inkml+xml', - 'install' => 'application/x-install-instructions', - 'iota' => 'application/vnd.astraea-software.iota', - 'ipfix' => 'application/ipfix', - 'ipk' => 'application/vnd.shana.informed.package', - 'irm' => 'application/vnd.ibm.rights-management', - 'irp' => 'application/vnd.irepository.package+xml', - 'iso' => 'application/x-iso9660-image', - 'itp' => 'application/vnd.shana.informed.formtemplate', - 'its' => 'application/its+xml', - 'ivp' => 'application/vnd.immervision-ivp', - 'ivu' => 'application/vnd.immervision-ivu', - 'jad' => 'text/vnd.sun.j2me.app-descriptor', - 'jade' => 'text/jade', - 'jam' => 'application/vnd.jam', - 'jar' => 'application/java-archive', - 'jardiff' => 'application/x-java-archive-diff', - 'java' => 'text/x-java-source', - 'jhc' => 'image/jphc', - 'jisp' => 'application/vnd.jisp', - 'jls' => 'image/jls', - 'jlt' => 'application/vnd.hp-jlyt', - 'jng' => 'image/x-jng', - 'jnlp' => 'application/x-java-jnlp-file', - 'joda' => 'application/vnd.joost.joda-archive', - 'jp2' => 'image/jp2', - 'jpe' => 'image/jpeg', - 'jpeg' => 'image/jpeg', - 'jpf' => 'image/jpx', - 'jpg' => 'image/jpeg', - 'jpg2' => 'image/jp2', - 'jpgm' => 'video/jpm', - 'jpgv' => 'video/jpeg', - 'jph' => 'image/jph', - 'jpm' => 'video/jpm', - 'jpx' => 'image/jpx', - 'js' => 'application/javascript', - 'json' => 'application/json', - 'json5' => 'application/json5', - 'jsonld' => 'application/ld+json', - 'jsonml' => 'application/jsonml+json', - 'jsx' => 'text/jsx', - 'jt' => 'model/jt', - 'jxl' => 'image/jxl', - 'jxr' => 'image/jxr', - 'jxra' => 'image/jxra', - 'jxrs' => 'image/jxrs', - 'jxs' => 'image/jxs', - 'jxsc' => 'image/jxsc', - 'jxsi' => 'image/jxsi', - 'jxss' => 'image/jxss', - 'kar' => 'audio/midi', - 'karbon' => 'application/vnd.kde.karbon', - 'kdb' => 'application/octet-stream', - 'kdbx' => 'application/x-keepass2', - 'key' => 'application/x-iwork-keynote-sffkey', - 'kfo' => 'application/vnd.kde.kformula', - 'kia' => 'application/vnd.kidspiration', - 'kml' => 'application/vnd.google-earth.kml+xml', - 'kmz' => 'application/vnd.google-earth.kmz', - 'kne' => 'application/vnd.kinar', - 'knp' => 'application/vnd.kinar', - 'kon' => 'application/vnd.kde.kontour', - 'kpr' => 'application/vnd.kde.kpresenter', - 'kpt' => 'application/vnd.kde.kpresenter', - 'kpxx' => 'application/vnd.ds-keypoint', - 'ksp' => 'application/vnd.kde.kspread', - 'ktr' => 'application/vnd.kahootz', - 'ktx' => 'image/ktx', - 'ktx2' => 'image/ktx2', - 'ktz' => 'application/vnd.kahootz', - 'kwd' => 'application/vnd.kde.kword', - 'kwt' => 'application/vnd.kde.kword', - 'lasxml' => 'application/vnd.las.las+xml', - 'latex' => 'application/x-latex', - 'lbd' => 'application/vnd.llamagraphics.life-balance.desktop', - 'lbe' => 'application/vnd.llamagraphics.life-balance.exchange+xml', - 'les' => 'application/vnd.hhe.lesson-player', - 'less' => 'text/less', - 'lgr' => 'application/lgr+xml', - 'lha' => 'application/octet-stream', - 'link66' => 'application/vnd.route66.link66+xml', - 'list' => 'text/plain', - 'list3820' => 'application/vnd.ibm.modcap', - 'listafp' => 'application/vnd.ibm.modcap', - 'litcoffee' => 'text/coffeescript', - 'lnk' => 'application/x-ms-shortcut', - 'log' => 'text/plain', - 'lostxml' => 'application/lost+xml', - 'lrf' => 'application/octet-stream', - 'lrm' => 'application/vnd.ms-lrm', - 'ltf' => 'application/vnd.frogans.ltf', - 'lua' => 'text/x-lua', - 'luac' => 'application/x-lua-bytecode', - 'lvp' => 'audio/vnd.lucent.voice', - 'lwp' => 'application/vnd.lotus-wordpro', - 'lzh' => 'application/octet-stream', - 'm1v' => 'video/mpeg', - 'm2a' => 'audio/mpeg', - 'm2t' => 'video/mp2t', - 'm2ts' => 'video/mp2t', - 'm2v' => 'video/mpeg', - 'm3a' => 'audio/mpeg', - 'm3u' => 'text/plain', - 'm3u8' => 'application/vnd.apple.mpegurl', - 'm4a' => 'audio/x-m4a', - 'm4p' => 'application/mp4', - 'm4s' => 'video/iso.segment', - 'm4u' => 'application/vnd.mpegurl', - 'm4v' => 'video/x-m4v', - 'm13' => 'application/x-msmediaview', - 'm14' => 'application/x-msmediaview', - 'm21' => 'application/mp21', - 'ma' => 'application/mathematica', - 'mads' => 'application/mads+xml', - 'maei' => 'application/mmt-aei+xml', - 'mag' => 'application/vnd.ecowin.chart', - 'maker' => 'application/vnd.framemaker', - 'man' => 'text/troff', - 'manifest' => 'text/cache-manifest', - 'map' => 'application/json', - 'mar' => 'application/octet-stream', - 'markdown' => 'text/markdown', - 'mathml' => 'application/mathml+xml', - 'mb' => 'application/mathematica', - 'mbk' => 'application/vnd.mobius.mbk', - 'mbox' => 'application/mbox', - 'mc1' => 'application/vnd.medcalcdata', - 'mcd' => 'application/vnd.mcd', - 'mcurl' => 'text/vnd.curl.mcurl', - 'md' => 'text/markdown', - 'mdb' => 'application/x-msaccess', - 'mdi' => 'image/vnd.ms-modi', - 'mdx' => 'text/mdx', - 'me' => 'text/troff', - 'mesh' => 'model/mesh', - 'meta4' => 'application/metalink4+xml', - 'metalink' => 'application/metalink+xml', - 'mets' => 'application/mets+xml', - 'mfm' => 'application/vnd.mfmp', - 'mft' => 'application/rpki-manifest', - 'mgp' => 'application/vnd.osgeo.mapguide.package', - 'mgz' => 'application/vnd.proteus.magazine', - 'mid' => 'audio/midi', - 'midi' => 'audio/midi', - 'mie' => 'application/x-mie', - 'mif' => 'application/vnd.mif', - 'mime' => 'message/rfc822', - 'mj2' => 'video/mj2', - 'mjp2' => 'video/mj2', - 'mjs' => 'text/javascript', - 'mk3d' => 'video/x-matroska', - 'mka' => 'audio/x-matroska', - 'mkd' => 'text/x-markdown', - 'mks' => 'video/x-matroska', - 'mkv' => 'video/x-matroska', - 'mlp' => 'application/vnd.dolby.mlp', - 'mmd' => 'application/vnd.chipnuts.karaoke-mmd', - 'mmf' => 'application/vnd.smaf', - 'mml' => 'text/mathml', - 'mmr' => 'image/vnd.fujixerox.edmics-mmr', - 'mng' => 'video/x-mng', - 'mny' => 'application/x-msmoney', - 'mobi' => 'application/x-mobipocket-ebook', - 'mods' => 'application/mods+xml', - 'mov' => 'video/quicktime', - 'movie' => 'video/x-sgi-movie', - 'mp2' => 'audio/mpeg', - 'mp2a' => 'audio/mpeg', - 'mp3' => 'audio/mpeg', - 'mp4' => 'video/mp4', - 'mp4a' => 'audio/mp4', - 'mp4s' => 'application/mp4', - 'mp4v' => 'video/mp4', - 'mp21' => 'application/mp21', - 'mpc' => 'application/vnd.mophun.certificate', - 'mpd' => 'application/dash+xml', - 'mpe' => 'video/mpeg', - 'mpeg' => 'video/mpeg', - 'mpf' => 'application/media-policy-dataset+xml', - 'mpg' => 'video/mpeg', - 'mpg4' => 'video/mp4', - 'mpga' => 'audio/mpeg', - 'mpkg' => 'application/vnd.apple.installer+xml', - 'mpm' => 'application/vnd.blueice.multipass', - 'mpn' => 'application/vnd.mophun.application', - 'mpp' => 'application/vnd.ms-project', - 'mpt' => 'application/vnd.ms-project', - 'mpy' => 'application/vnd.ibm.minipay', - 'mqy' => 'application/vnd.mobius.mqy', - 'mrc' => 'application/marc', - 'mrcx' => 'application/marcxml+xml', - 'ms' => 'text/troff', - 'mscml' => 'application/mediaservercontrol+xml', - 'mseed' => 'application/vnd.fdsn.mseed', - 'mseq' => 'application/vnd.mseq', - 'msf' => 'application/vnd.epson.msf', - 'msg' => 'application/vnd.ms-outlook', - 'msh' => 'model/mesh', - 'msi' => 'application/x-msdownload', - 'msix' => 'application/msix', - 'msixbundle' => 'application/msixbundle', - 'msl' => 'application/vnd.mobius.msl', - 'msm' => 'application/octet-stream', - 'msp' => 'application/octet-stream', - 'msty' => 'application/vnd.muvee.style', - 'mtl' => 'model/mtl', - 'mts' => 'video/mp2t', - 'mus' => 'application/vnd.musician', - 'musd' => 'application/mmt-usd+xml', - 'musicxml' => 'application/vnd.recordare.musicxml+xml', - 'mvb' => 'application/x-msmediaview', - 'mvt' => 'application/vnd.mapbox-vector-tile', - 'mwf' => 'application/vnd.mfer', - 'mxf' => 'application/mxf', - 'mxl' => 'application/vnd.recordare.musicxml', - 'mxmf' => 'audio/mobile-xmf', - 'mxml' => 'application/xv+xml', - 'mxs' => 'application/vnd.triscape.mxs', - 'mxu' => 'video/vnd.mpegurl', - 'n-gage' => 'application/vnd.nokia.n-gage.symbian.install', - 'n3' => 'text/n3', - 'nb' => 'application/mathematica', - 'nbp' => 'application/vnd.wolfram.player', - 'nc' => 'application/x-netcdf', - 'ncx' => 'application/x-dtbncx+xml', - 'ndjson' => 'application/x-ndjson', - 'nfo' => 'text/x-nfo', - 'ngdat' => 'application/vnd.nokia.n-gage.data', - 'nitf' => 'application/vnd.nitf', - 'nlu' => 'application/vnd.neurolanguage.nlu', - 'nml' => 'application/vnd.enliven', - 'nnd' => 'application/vnd.noblenet-directory', - 'nns' => 'application/vnd.noblenet-sealer', - 'nnw' => 'application/vnd.noblenet-web', - 'npx' => 'image/vnd.net-fpx', - 'nq' => 'application/n-quads', - 'nsc' => 'application/x-conference', - 'nsf' => 'application/vnd.lotus-notes', - 'nt' => 'application/n-triples', - 'ntf' => 'application/vnd.nitf', - 'numbers' => 'application/x-iwork-numbers-sffnumbers', - 'nzb' => 'application/x-nzb', - 'oa2' => 'application/vnd.fujitsu.oasys2', - 'oa3' => 'application/vnd.fujitsu.oasys3', - 'oas' => 'application/vnd.fujitsu.oasys', - 'obd' => 'application/x-msbinder', - 'obgx' => 'application/vnd.openblox.game+xml', - 'obj' => 'model/obj', - 'oda' => 'application/oda', - 'odb' => 'application/vnd.oasis.opendocument.database', - 'odc' => 'application/vnd.oasis.opendocument.chart', - 'odf' => 'application/vnd.oasis.opendocument.formula', - 'odft' => 'application/vnd.oasis.opendocument.formula-template', - 'odg' => 'application/vnd.oasis.opendocument.graphics', - 'odi' => 'application/vnd.oasis.opendocument.image', - 'odm' => 'application/vnd.oasis.opendocument.text-master', - 'odp' => 'application/vnd.oasis.opendocument.presentation', - 'ods' => 'application/vnd.oasis.opendocument.spreadsheet', - 'odt' => 'application/vnd.oasis.opendocument.text', - 'oga' => 'audio/ogg', - 'ogex' => 'model/vnd.opengex', - 'ogg' => 'audio/ogg', - 'ogv' => 'video/ogg', - 'ogx' => 'application/ogg', - 'omdoc' => 'application/omdoc+xml', - 'onepkg' => 'application/onenote', - 'onetmp' => 'application/onenote', - 'onetoc' => 'application/onenote', - 'onetoc2' => 'application/onenote', - 'opf' => 'application/oebps-package+xml', - 'opml' => 'text/x-opml', - 'oprc' => 'application/vnd.palm', - 'opus' => 'audio/ogg', - 'org' => 'text/x-org', - 'osf' => 'application/vnd.yamaha.openscoreformat', - 'osfpvg' => 'application/vnd.yamaha.openscoreformat.osfpvg+xml', - 'osm' => 'application/vnd.openstreetmap.data+xml', - 'otc' => 'application/vnd.oasis.opendocument.chart-template', - 'otf' => 'font/otf', - 'otg' => 'application/vnd.oasis.opendocument.graphics-template', - 'oth' => 'application/vnd.oasis.opendocument.text-web', - 'oti' => 'application/vnd.oasis.opendocument.image-template', - 'otp' => 'application/vnd.oasis.opendocument.presentation-template', - 'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template', - 'ott' => 'application/vnd.oasis.opendocument.text-template', - 'ova' => 'application/x-virtualbox-ova', - 'ovf' => 'application/x-virtualbox-ovf', - 'owl' => 'application/rdf+xml', - 'oxps' => 'application/oxps', - 'oxt' => 'application/vnd.openofficeorg.extension', - 'p' => 'text/x-pascal', - 'p7a' => 'application/x-pkcs7-signature', - 'p7b' => 'application/x-pkcs7-certificates', - 'p7c' => 'application/pkcs7-mime', - 'p7m' => 'application/pkcs7-mime', - 'p7r' => 'application/x-pkcs7-certreqresp', - 'p7s' => 'application/pkcs7-signature', - 'p8' => 'application/pkcs8', - 'p10' => 'application/x-pkcs10', - 'p12' => 'application/x-pkcs12', - 'pac' => 'application/x-ns-proxy-autoconfig', - 'pages' => 'application/x-iwork-pages-sffpages', - 'pas' => 'text/x-pascal', - 'paw' => 'application/vnd.pawaafile', - 'pbd' => 'application/vnd.powerbuilder6', - 'pbm' => 'image/x-portable-bitmap', - 'pcap' => 'application/vnd.tcpdump.pcap', - 'pcf' => 'application/x-font-pcf', - 'pcl' => 'application/vnd.hp-pcl', - 'pclxl' => 'application/vnd.hp-pclxl', - 'pct' => 'image/x-pict', - 'pcurl' => 'application/vnd.curl.pcurl', - 'pcx' => 'image/x-pcx', - 'pdb' => 'application/x-pilot', - 'pde' => 'text/x-processing', - 'pdf' => 'application/pdf', - 'pem' => 'application/x-x509-user-cert', - 'pfa' => 'application/x-font-type1', - 'pfb' => 'application/x-font-type1', - 'pfm' => 'application/x-font-type1', - 'pfr' => 'application/font-tdpfr', - 'pfx' => 'application/x-pkcs12', - 'pgm' => 'image/x-portable-graymap', - 'pgn' => 'application/x-chess-pgn', - 'pgp' => 'application/pgp', - 'phar' => 'application/octet-stream', - 'php' => 'application/x-httpd-php', - 'php3' => 'application/x-httpd-php', - 'php4' => 'application/x-httpd-php', - 'phps' => 'application/x-httpd-php-source', - 'phtml' => 'application/x-httpd-php', - 'pic' => 'image/x-pict', - 'pkg' => 'application/octet-stream', - 'pki' => 'application/pkixcmp', - 'pkipath' => 'application/pkix-pkipath', - 'pkpass' => 'application/vnd.apple.pkpass', - 'pl' => 'application/x-perl', - 'plb' => 'application/vnd.3gpp.pic-bw-large', - 'plc' => 'application/vnd.mobius.plc', - 'plf' => 'application/vnd.pocketlearn', - 'pls' => 'application/pls+xml', - 'pm' => 'application/x-perl', - 'pml' => 'application/vnd.ctc-posml', - 'png' => 'image/png', - 'pnm' => 'image/x-portable-anymap', - 'portpkg' => 'application/vnd.macports.portpkg', - 'pot' => 'application/vnd.ms-powerpoint', - 'potm' => 'application/vnd.ms-powerpoint.presentation.macroEnabled.12', - 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template', - 'ppa' => 'application/vnd.ms-powerpoint', - 'ppam' => 'application/vnd.ms-powerpoint.addin.macroEnabled.12', - 'ppd' => 'application/vnd.cups-ppd', - 'ppm' => 'image/x-portable-pixmap', - 'pps' => 'application/vnd.ms-powerpoint', - 'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12', - 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', - 'ppt' => 'application/powerpoint', - 'pptm' => 'application/vnd.ms-powerpoint.presentation.macroEnabled.12', - 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', - 'pqa' => 'application/vnd.palm', - 'prc' => 'model/prc', - 'pre' => 'application/vnd.lotus-freelance', - 'prf' => 'application/pics-rules', - 'provx' => 'application/provenance+xml', - 'ps' => 'application/postscript', - 'psb' => 'application/vnd.3gpp.pic-bw-small', - 'psd' => 'application/x-photoshop', - 'psf' => 'application/x-font-linux-psf', - 'pskcxml' => 'application/pskc+xml', - 'pti' => 'image/prs.pti', - 'ptid' => 'application/vnd.pvi.ptid1', - 'pub' => 'application/x-mspublisher', - 'pv' => 'application/octet-stream', - 'pvb' => 'application/vnd.3gpp.pic-bw-var', - 'pwn' => 'application/vnd.3m.post-it-notes', - 'pxf' => 'application/octet-stream', - 'pya' => 'audio/vnd.ms-playready.media.pya', - 'pyo' => 'model/vnd.pytha.pyox', - 'pyox' => 'model/vnd.pytha.pyox', - 'pyv' => 'video/vnd.ms-playready.media.pyv', - 'qam' => 'application/vnd.epson.quickanime', - 'qbo' => 'application/vnd.intu.qbo', - 'qfx' => 'application/vnd.intu.qfx', - 'qps' => 'application/vnd.publishare-delta-tree', - 'qt' => 'video/quicktime', - 'qwd' => 'application/vnd.quark.quarkxpress', - 'qwt' => 'application/vnd.quark.quarkxpress', - 'qxb' => 'application/vnd.quark.quarkxpress', - 'qxd' => 'application/vnd.quark.quarkxpress', - 'qxl' => 'application/vnd.quark.quarkxpress', - 'qxt' => 'application/vnd.quark.quarkxpress', - 'ra' => 'audio/x-realaudio', - 'ram' => 'audio/x-pn-realaudio', - 'raml' => 'application/raml+yaml', - 'rapd' => 'application/route-apd+xml', - 'rar' => 'application/x-rar', - 'ras' => 'image/x-cmu-raster', - 'rcprofile' => 'application/vnd.ipunplugged.rcprofile', - 'rdf' => 'application/rdf+xml', - 'rdz' => 'application/vnd.data-vision.rdz', - 'relo' => 'application/p2p-overlay+xml', - 'rep' => 'application/vnd.businessobjects', - 'res' => 'application/x-dtbresource+xml', - 'rgb' => 'image/x-rgb', - 'rif' => 'application/reginfo+xml', - 'rip' => 'audio/vnd.rip', - 'ris' => 'application/x-research-info-systems', - 'rl' => 'application/resource-lists+xml', - 'rlc' => 'image/vnd.fujixerox.edmics-rlc', - 'rld' => 'application/resource-lists-diff+xml', - 'rm' => 'audio/x-pn-realaudio', - 'rmi' => 'audio/midi', - 'rmp' => 'audio/x-pn-realaudio-plugin', - 'rms' => 'application/vnd.jcp.javame.midlet-rms', - 'rmvb' => 'application/vnd.rn-realmedia-vbr', - 'rnc' => 'application/relax-ng-compact-syntax', - 'rng' => 'application/xml', - 'roa' => 'application/rpki-roa', - 'roff' => 'text/troff', - 'rp9' => 'application/vnd.cloanto.rp9', - 'rpm' => 'audio/x-pn-realaudio-plugin', - 'rpss' => 'application/vnd.nokia.radio-presets', - 'rpst' => 'application/vnd.nokia.radio-preset', - 'rq' => 'application/sparql-query', - 'rs' => 'application/rls-services+xml', - 'rsa' => 'application/x-pkcs7', - 'rsat' => 'application/atsc-rsat+xml', - 'rsd' => 'application/rsd+xml', - 'rsheet' => 'application/urc-ressheet+xml', - 'rss' => 'application/rss+xml', - 'rtf' => 'text/rtf', - 'rtx' => 'text/richtext', - 'run' => 'application/x-makeself', - 'rusd' => 'application/route-usd+xml', - 'rv' => 'video/vnd.rn-realvideo', - 's' => 'text/x-asm', - 's3m' => 'audio/s3m', - 'saf' => 'application/vnd.yamaha.smaf-audio', - 'sass' => 'text/x-sass', - 'sbml' => 'application/sbml+xml', - 'sc' => 'application/vnd.ibm.secure-container', - 'scd' => 'application/x-msschedule', - 'scm' => 'application/vnd.lotus-screencam', - 'scq' => 'application/scvp-cv-request', - 'scs' => 'application/scvp-cv-response', - 'scss' => 'text/x-scss', - 'scurl' => 'text/vnd.curl.scurl', - 'sda' => 'application/vnd.stardivision.draw', - 'sdc' => 'application/vnd.stardivision.calc', - 'sdd' => 'application/vnd.stardivision.impress', - 'sdkd' => 'application/vnd.solent.sdkm+xml', - 'sdkm' => 'application/vnd.solent.sdkm+xml', - 'sdp' => 'application/sdp', - 'sdw' => 'application/vnd.stardivision.writer', - 'sea' => 'application/octet-stream', - 'see' => 'application/vnd.seemail', - 'seed' => 'application/vnd.fdsn.seed', - 'sema' => 'application/vnd.sema', - 'semd' => 'application/vnd.semd', - 'semf' => 'application/vnd.semf', - 'senmlx' => 'application/senml+xml', - 'sensmlx' => 'application/sensml+xml', - 'ser' => 'application/java-serialized-object', - 'setpay' => 'application/set-payment-initiation', - 'setreg' => 'application/set-registration-initiation', - 'sfd-hdstx' => 'application/vnd.hydrostatix.sof-data', - 'sfs' => 'application/vnd.spotfire.sfs', - 'sfv' => 'text/x-sfv', - 'sgi' => 'image/sgi', - 'sgl' => 'application/vnd.stardivision.writer-global', - 'sgm' => 'text/sgml', - 'sgml' => 'text/sgml', - 'sh' => 'application/x-sh', - 'shar' => 'application/x-shar', - 'shex' => 'text/shex', - 'shf' => 'application/shf+xml', - 'shtml' => 'text/html', - 'sid' => 'image/x-mrsid-image', - 'sieve' => 'application/sieve', - 'sig' => 'application/pgp-signature', - 'sil' => 'audio/silk', - 'silo' => 'model/mesh', - 'sis' => 'application/vnd.symbian.install', - 'sisx' => 'application/vnd.symbian.install', - 'sit' => 'application/x-stuffit', - 'sitx' => 'application/x-stuffitx', - 'siv' => 'application/sieve', - 'skd' => 'application/vnd.koan', - 'skm' => 'application/vnd.koan', - 'skp' => 'application/vnd.koan', - 'skt' => 'application/vnd.koan', - 'sldm' => 'application/vnd.ms-powerpoint.slide.macroenabled.12', - 'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide', - 'slim' => 'text/slim', - 'slm' => 'text/slim', - 'sls' => 'application/route-s-tsid+xml', - 'slt' => 'application/vnd.epson.salt', - 'sm' => 'application/vnd.stepmania.stepchart', - 'smf' => 'application/vnd.stardivision.math', - 'smi' => 'application/smil', - 'smil' => 'application/smil', - 'smv' => 'video/x-smv', - 'smzip' => 'application/vnd.stepmania.package', - 'snd' => 'audio/basic', - 'snf' => 'application/x-font-snf', - 'so' => 'application/octet-stream', - 'spc' => 'application/x-pkcs7-certificates', - 'spdx' => 'text/spdx', - 'spf' => 'application/vnd.yamaha.smaf-phrase', - 'spl' => 'application/x-futuresplash', - 'spot' => 'text/vnd.in3d.spot', - 'spp' => 'application/scvp-vp-response', - 'spq' => 'application/scvp-vp-request', - 'spx' => 'audio/ogg', - 'sql' => 'application/x-sql', - 'src' => 'application/x-wais-source', - 'srt' => 'application/x-subrip', - 'sru' => 'application/sru+xml', - 'srx' => 'application/sparql-results+xml', - 'ssdl' => 'application/ssdl+xml', - 'sse' => 'application/vnd.kodak-descriptor', - 'ssf' => 'application/vnd.epson.ssf', - 'ssml' => 'application/ssml+xml', - 'sst' => 'application/octet-stream', - 'st' => 'application/vnd.sailingtracker.track', - 'stc' => 'application/vnd.sun.xml.calc.template', - 'std' => 'application/vnd.sun.xml.draw.template', - 'step' => 'application/STEP', - 'stf' => 'application/vnd.wt.stf', - 'sti' => 'application/vnd.sun.xml.impress.template', - 'stk' => 'application/hyperstudio', - 'stl' => 'model/stl', - 'stp' => 'application/STEP', - 'stpx' => 'model/step+xml', - 'stpxz' => 'model/step-xml+zip', - 'stpz' => 'model/step+zip', - 'str' => 'application/vnd.pg.format', - 'stw' => 'application/vnd.sun.xml.writer.template', - 'styl' => 'text/stylus', - 'stylus' => 'text/stylus', - 'sub' => 'text/vnd.dvb.subtitle', - 'sus' => 'application/vnd.sus-calendar', - 'susp' => 'application/vnd.sus-calendar', - 'sv4cpio' => 'application/x-sv4cpio', - 'sv4crc' => 'application/x-sv4crc', - 'svc' => 'application/vnd.dvb.service', - 'svd' => 'application/vnd.svd', - 'svg' => 'image/svg+xml', - 'svgz' => 'image/svg+xml', - 'swa' => 'application/x-director', - 'swf' => 'application/x-shockwave-flash', - 'swi' => 'application/vnd.aristanetworks.swi', - 'swidtag' => 'application/swid+xml', - 'sxc' => 'application/vnd.sun.xml.calc', - 'sxd' => 'application/vnd.sun.xml.draw', - 'sxg' => 'application/vnd.sun.xml.writer.global', - 'sxi' => 'application/vnd.sun.xml.impress', - 'sxm' => 'application/vnd.sun.xml.math', - 'sxw' => 'application/vnd.sun.xml.writer', - 't' => 'text/troff', - 't3' => 'application/x-t3vm-image', - 't38' => 'image/t38', - 'taglet' => 'application/vnd.mynfc', - 'tao' => 'application/vnd.tao.intent-module-archive', - 'tap' => 'image/vnd.tencent.tap', - 'tar' => 'application/x-tar', - 'tcap' => 'application/vnd.3gpp2.tcap', - 'tcl' => 'application/x-tcl', - 'td' => 'application/urc-targetdesc+xml', - 'teacher' => 'application/vnd.smart.teacher', - 'tei' => 'application/tei+xml', - 'teicorpus' => 'application/tei+xml', - 'tex' => 'application/x-tex', - 'texi' => 'application/x-texinfo', - 'texinfo' => 'application/x-texinfo', - 'text' => 'text/plain', - 'tfi' => 'application/thraud+xml', - 'tfm' => 'application/x-tex-tfm', - 'tfx' => 'image/tiff-fx', - 'tga' => 'image/x-tga', - 'tgz' => 'application/x-tar', - 'thmx' => 'application/vnd.ms-officetheme', - 'tif' => 'image/tiff', - 'tiff' => 'image/tiff', - 'tk' => 'application/x-tcl', - 'tmo' => 'application/vnd.tmobile-livetv', - 'toml' => 'application/toml', - 'torrent' => 'application/x-bittorrent', - 'tpl' => 'application/vnd.groove-tool-template', - 'tpt' => 'application/vnd.trid.tpt', - 'tr' => 'text/troff', - 'tra' => 'application/vnd.trueapp', - 'trig' => 'application/trig', - 'trm' => 'application/x-msterminal', - 'ts' => 'video/mp2t', - 'tsd' => 'application/timestamped-data', - 'tsv' => 'text/tab-separated-values', - 'ttc' => 'font/collection', - 'ttf' => 'font/ttf', - 'ttl' => 'text/turtle', - 'ttml' => 'application/ttml+xml', - 'twd' => 'application/vnd.simtech-mindmapper', - 'twds' => 'application/vnd.simtech-mindmapper', - 'txd' => 'application/vnd.genomatix.tuxedo', - 'txf' => 'application/vnd.mobius.txf', - 'txt' => 'text/plain', - 'u3d' => 'model/u3d', - 'u8dsn' => 'message/global-delivery-status', - 'u8hdr' => 'message/global-headers', - 'u8mdn' => 'message/global-disposition-notification', - 'u8msg' => 'message/global', - 'u32' => 'application/x-authorware-bin', - 'ubj' => 'application/ubjson', - 'udeb' => 'application/x-debian-package', - 'ufd' => 'application/vnd.ufdl', - 'ufdl' => 'application/vnd.ufdl', - 'ulx' => 'application/x-glulx', - 'umj' => 'application/vnd.umajin', - 'unityweb' => 'application/vnd.unity', - 'uo' => 'application/vnd.uoml+xml', - 'uoml' => 'application/vnd.uoml+xml', - 'uri' => 'text/uri-list', - 'uris' => 'text/uri-list', - 'urls' => 'text/uri-list', - 'usda' => 'model/vnd.usda', - 'usdz' => 'model/vnd.usdz+zip', - 'ustar' => 'application/x-ustar', - 'utz' => 'application/vnd.uiq.theme', - 'uu' => 'text/x-uuencode', - 'uva' => 'audio/vnd.dece.audio', - 'uvd' => 'application/vnd.dece.data', - 'uvf' => 'application/vnd.dece.data', - 'uvg' => 'image/vnd.dece.graphic', - 'uvh' => 'video/vnd.dece.hd', - 'uvi' => 'image/vnd.dece.graphic', - 'uvm' => 'video/vnd.dece.mobile', - 'uvp' => 'video/vnd.dece.pd', - 'uvs' => 'video/vnd.dece.sd', - 'uvt' => 'application/vnd.dece.ttml+xml', - 'uvu' => 'video/vnd.uvvu.mp4', - 'uvv' => 'video/vnd.dece.video', - 'uvva' => 'audio/vnd.dece.audio', - 'uvvd' => 'application/vnd.dece.data', - 'uvvf' => 'application/vnd.dece.data', - 'uvvg' => 'image/vnd.dece.graphic', - 'uvvh' => 'video/vnd.dece.hd', - 'uvvi' => 'image/vnd.dece.graphic', - 'uvvm' => 'video/vnd.dece.mobile', - 'uvvp' => 'video/vnd.dece.pd', - 'uvvs' => 'video/vnd.dece.sd', - 'uvvt' => 'application/vnd.dece.ttml+xml', - 'uvvu' => 'video/vnd.uvvu.mp4', - 'uvvv' => 'video/vnd.dece.video', - 'uvvx' => 'application/vnd.dece.unspecified', - 'uvvz' => 'application/vnd.dece.zip', - 'uvx' => 'application/vnd.dece.unspecified', - 'uvz' => 'application/vnd.dece.zip', - 'vbox' => 'application/x-virtualbox-vbox', - 'vbox-extpack' => 'application/x-virtualbox-vbox-extpack', - 'vcard' => 'text/vcard', - 'vcd' => 'application/x-cdlink', - 'vcf' => 'text/x-vcard', - 'vcg' => 'application/vnd.groove-vcard', - 'vcs' => 'text/x-vcalendar', - 'vcx' => 'application/vnd.vcx', - 'vdi' => 'application/x-virtualbox-vdi', - 'vds' => 'model/vnd.sap.vds', - 'vhd' => 'application/x-virtualbox-vhd', - 'vis' => 'application/vnd.visionary', - 'viv' => 'video/vnd.vivo', - 'vlc' => 'application/videolan', - 'vmdk' => 'application/x-virtualbox-vmdk', - 'vob' => 'video/x-ms-vob', - 'vor' => 'application/vnd.stardivision.writer', - 'vox' => 'application/x-authorware-bin', - 'vrml' => 'model/vrml', - 'vsd' => 'application/vnd.visio', - 'vsf' => 'application/vnd.vsf', - 'vss' => 'application/vnd.visio', - 'vst' => 'application/vnd.visio', - 'vsw' => 'application/vnd.visio', - 'vtf' => 'image/vnd.valve.source.texture', - 'vtt' => 'text/vtt', - 'vtu' => 'model/vnd.vtu', - 'vxml' => 'application/voicexml+xml', - 'w3d' => 'application/x-director', - 'wad' => 'application/x-doom', - 'wadl' => 'application/vnd.sun.wadl+xml', - 'war' => 'application/java-archive', - 'wasm' => 'application/wasm', - 'wav' => 'audio/x-wav', - 'wax' => 'audio/x-ms-wax', - 'wbmp' => 'image/vnd.wap.wbmp', - 'wbs' => 'application/vnd.criticaltools.wbs+xml', - 'wbxml' => 'application/wbxml', - 'wcm' => 'application/vnd.ms-works', - 'wdb' => 'application/vnd.ms-works', - 'wdp' => 'image/vnd.ms-photo', - 'weba' => 'audio/webm', - 'webapp' => 'application/x-web-app-manifest+json', - 'webm' => 'video/webm', - 'webmanifest' => 'application/manifest+json', - 'webp' => 'image/webp', - 'wg' => 'application/vnd.pmi.widget', - 'wgsl' => 'text/wgsl', - 'wgt' => 'application/widget', - 'wif' => 'application/watcherinfo+xml', - 'wks' => 'application/vnd.ms-works', - 'wm' => 'video/x-ms-wm', - 'wma' => 'audio/x-ms-wma', - 'wmd' => 'application/x-ms-wmd', - 'wmf' => 'image/wmf', - 'wml' => 'text/vnd.wap.wml', - 'wmlc' => 'application/wmlc', - 'wmls' => 'text/vnd.wap.wmlscript', - 'wmlsc' => 'application/vnd.wap.wmlscriptc', - 'wmv' => 'video/x-ms-wmv', - 'wmx' => 'video/x-ms-wmx', - 'wmz' => 'application/x-msmetafile', - 'woff' => 'font/woff', - 'woff2' => 'font/woff2', - 'word' => 'application/msword', - 'wpd' => 'application/vnd.wordperfect', - 'wpl' => 'application/vnd.ms-wpl', - 'wps' => 'application/vnd.ms-works', - 'wqd' => 'application/vnd.wqd', - 'wri' => 'application/x-mswrite', - 'wrl' => 'model/vrml', - 'wsc' => 'message/vnd.wfa.wsc', - 'wsdl' => 'application/wsdl+xml', - 'wspolicy' => 'application/wspolicy+xml', - 'wtb' => 'application/vnd.webturbo', - 'wvx' => 'video/x-ms-wvx', - 'x3d' => 'model/x3d+xml', - 'x3db' => 'model/x3d+fastinfoset', - 'x3dbz' => 'model/x3d+binary', - 'x3dv' => 'model/x3d-vrml', - 'x3dvz' => 'model/x3d+vrml', - 'x3dz' => 'model/x3d+xml', - 'x32' => 'application/x-authorware-bin', - 'x_b' => 'model/vnd.parasolid.transmit.binary', - 'x_t' => 'model/vnd.parasolid.transmit.text', - 'xaml' => 'application/xaml+xml', - 'xap' => 'application/x-silverlight-app', - 'xar' => 'application/vnd.xara', - 'xav' => 'application/xcap-att+xml', - 'xbap' => 'application/x-ms-xbap', - 'xbd' => 'application/vnd.fujixerox.docuworks.binder', - 'xbm' => 'image/x-xbitmap', - 'xca' => 'application/xcap-caps+xml', - 'xcs' => 'application/calendar+xml', - 'xdcf' => 'application/vnd.gov.sk.xmldatacontainer+xml', - 'xdf' => 'application/xcap-diff+xml', - 'xdm' => 'application/vnd.syncml.dm+xml', - 'xdp' => 'application/vnd.adobe.xdp+xml', - 'xdssc' => 'application/dssc+xml', - 'xdw' => 'application/vnd.fujixerox.docuworks', - 'xel' => 'application/xcap-el+xml', - 'xenc' => 'application/xenc+xml', - 'xer' => 'application/patch-ops-error+xml', - 'xfdf' => 'application/xfdf', - 'xfdl' => 'application/vnd.xfdl', - 'xht' => 'application/xhtml+xml', - 'xhtm' => 'application/vnd.pwg-xhtml-print+xml', - 'xhtml' => 'application/xhtml+xml', - 'xhvml' => 'application/xv+xml', - 'xif' => 'image/vnd.xiff', - 'xl' => 'application/excel', - 'xla' => 'application/vnd.ms-excel', - 'xlam' => 'application/vnd.ms-excel.addin.macroEnabled.12', - 'xlc' => 'application/vnd.ms-excel', - 'xlf' => 'application/xliff+xml', - 'xlm' => 'application/vnd.ms-excel', - 'xls' => 'application/vnd.ms-excel', - 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12', - 'xlsm' => 'application/vnd.ms-excel.sheet.macroEnabled.12', - 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', - 'xlt' => 'application/vnd.ms-excel', - 'xltm' => 'application/vnd.ms-excel.template.macroEnabled.12', - 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', - 'xlw' => 'application/vnd.ms-excel', - 'xm' => 'audio/xm', - 'xml' => 'application/xml', - 'xns' => 'application/xcap-ns+xml', - 'xo' => 'application/vnd.olpc-sugar', - 'xop' => 'application/xop+xml', - 'xpi' => 'application/x-xpinstall', - 'xpl' => 'application/xproc+xml', - 'xpm' => 'image/x-xpixmap', - 'xpr' => 'application/vnd.is-xpr', - 'xps' => 'application/vnd.ms-xpsdocument', - 'xpw' => 'application/vnd.intercon.formnet', - 'xpx' => 'application/vnd.intercon.formnet', - 'xsd' => 'application/xml', - 'xsf' => 'application/prs.xsf+xml', - 'xsl' => 'application/xml', - 'xslt' => 'application/xslt+xml', - 'xsm' => 'application/vnd.syncml+xml', - 'xspf' => 'application/xspf+xml', - 'xul' => 'application/vnd.mozilla.xul+xml', - 'xvm' => 'application/xv+xml', - 'xvml' => 'application/xv+xml', - 'xwd' => 'image/x-xwindowdump', - 'xyz' => 'chemical/x-xyz', - 'xz' => 'application/x-xz', - 'yaml' => 'text/yaml', - 'yang' => 'application/yang', - 'yin' => 'application/yin+xml', - 'yml' => 'text/yaml', - 'ymp' => 'text/x-suse-ymp', - 'z' => 'application/x-compress', - 'z1' => 'application/x-zmachine', - 'z2' => 'application/x-zmachine', - 'z3' => 'application/x-zmachine', - 'z4' => 'application/x-zmachine', - 'z5' => 'application/x-zmachine', - 'z6' => 'application/x-zmachine', - 'z7' => 'application/x-zmachine', - 'z8' => 'application/x-zmachine', - 'zaz' => 'application/vnd.zzazz.deck+xml', - 'zip' => 'application/zip', - 'zir' => 'application/vnd.zul', - 'zirz' => 'application/vnd.zul', - 'zmm' => 'application/vnd.handheld-entertainment+xml', - 'zsh' => 'text/x-scriptzsh', - ]; - - /** - * @var array - * - * @internal - */ - public const EXTENSIONS_FOR_MIME_TIMES = [ - 'application/andrew-inset' => ['ez'], - 'application/appinstaller' => ['appinstaller'], - 'application/applixware' => ['aw'], - 'application/appx' => ['appx'], - 'application/appxbundle' => ['appxbundle'], - 'application/atom+xml' => ['atom'], - 'application/atomcat+xml' => ['atomcat'], - 'application/atomdeleted+xml' => ['atomdeleted'], - 'application/atomsvc+xml' => ['atomsvc'], - 'application/atsc-dwd+xml' => ['dwd'], - 'application/atsc-held+xml' => ['held'], - 'application/atsc-rsat+xml' => ['rsat'], - 'application/automationml-aml+xml' => ['aml'], - 'application/automationml-amlx+zip' => ['amlx'], - 'application/bdoc' => ['bdoc'], - 'application/calendar+xml' => ['xcs'], - 'application/ccxml+xml' => ['ccxml'], - 'application/cdfx+xml' => ['cdfx'], - 'application/cdmi-capability' => ['cdmia'], - 'application/cdmi-container' => ['cdmic'], - 'application/cdmi-domain' => ['cdmid'], - 'application/cdmi-object' => ['cdmio'], - 'application/cdmi-queue' => ['cdmiq'], - 'application/cpl+xml' => ['cpl'], - 'application/cu-seeme' => ['cu'], - 'application/cwl' => ['cwl'], - 'application/dash+xml' => ['mpd'], - 'application/dash-patch+xml' => ['mpp'], - 'application/davmount+xml' => ['davmount'], - 'application/docbook+xml' => ['dbk'], - 'application/dssc+der' => ['dssc'], - 'application/dssc+xml' => ['xdssc'], - 'application/ecmascript' => ['ecma'], - 'application/emma+xml' => ['emma'], - 'application/emotionml+xml' => ['emotionml'], - 'application/epub+zip' => ['epub'], - 'application/exi' => ['exi'], - 'application/express' => ['exp'], - 'application/fdf' => ['fdf'], - 'application/fdt+xml' => ['fdt'], - 'application/font-tdpfr' => ['pfr'], - 'application/geo+json' => ['geojson'], - 'application/gml+xml' => ['gml'], - 'application/gpx+xml' => ['gpx'], - 'application/gxf' => ['gxf'], - 'application/gzip' => ['gz', 'gzip'], - 'application/hjson' => ['hjson'], - 'application/hyperstudio' => ['stk'], - 'application/inkml+xml' => ['ink', 'inkml'], - 'application/ipfix' => ['ipfix'], - 'application/its+xml' => ['its'], - 'application/java-archive' => ['jar', 'war', 'ear'], - 'application/java-serialized-object' => ['ser'], - 'application/java-vm' => ['class'], - 'application/javascript' => ['js'], - 'application/json' => ['json', 'map'], - 'application/json5' => ['json5'], - 'application/jsonml+json' => ['jsonml'], - 'application/ld+json' => ['jsonld'], - 'application/lgr+xml' => ['lgr'], - 'application/lost+xml' => ['lostxml'], - 'application/mac-binhex40' => ['hqx'], - 'application/mac-compactpro' => ['cpt'], - 'application/mads+xml' => ['mads'], - 'application/manifest+json' => ['webmanifest'], - 'application/marc' => ['mrc'], - 'application/marcxml+xml' => ['mrcx'], - 'application/mathematica' => ['ma', 'nb', 'mb'], - 'application/mathml+xml' => ['mathml'], - 'application/mbox' => ['mbox'], - 'application/media-policy-dataset+xml' => ['mpf'], - 'application/mediaservercontrol+xml' => ['mscml'], - 'application/metalink+xml' => ['metalink'], - 'application/metalink4+xml' => ['meta4'], - 'application/mets+xml' => ['mets'], - 'application/mmt-aei+xml' => ['maei'], - 'application/mmt-usd+xml' => ['musd'], - 'application/mods+xml' => ['mods'], - 'application/mp21' => ['m21', 'mp21'], - 'application/mp4' => ['mp4', 'mpg4', 'mp4s', 'm4p'], - 'application/msix' => ['msix'], - 'application/msixbundle' => ['msixbundle'], - 'application/msword' => ['doc', 'dot', 'word'], - 'application/mxf' => ['mxf'], - 'application/n-quads' => ['nq'], - 'application/n-triples' => ['nt'], - 'application/node' => ['cjs'], - 'application/octet-stream' => ['bin', 'dms', 'lrf', 'mar', 'so', 'dist', 'distz', 'pkg', 'bpk', 'dump', 'elc', 'deploy', 'exe', 'dll', 'deb', 'dmg', 'iso', 'img', 'msi', 'msp', 'msm', 'buffer', 'phar', 'lha', 'lzh', 'class', 'sea', 'dmn', 'bpmn', 'kdb', 'sst', 'csr', 'dst', 'pv', 'pxf'], - 'application/oda' => ['oda'], - 'application/oebps-package+xml' => ['opf'], - 'application/ogg' => ['ogx'], - 'application/omdoc+xml' => ['omdoc'], - 'application/onenote' => ['onetoc', 'onetoc2', 'onetmp', 'onepkg'], - 'application/oxps' => ['oxps'], - 'application/p2p-overlay+xml' => ['relo'], - 'application/patch-ops-error+xml' => ['xer'], - 'application/pdf' => ['pdf', 'ai'], - 'application/pgp-encrypted' => ['pgp'], - 'application/pgp-keys' => ['asc'], - 'application/pgp-signature' => ['sig', 'asc'], - 'application/pics-rules' => ['prf'], - 'application/pkcs10' => ['p10'], - 'application/pkcs7-mime' => ['p7m', 'p7c'], - 'application/pkcs7-signature' => ['p7s'], - 'application/pkcs8' => ['p8'], - 'application/pkix-attr-cert' => ['ac'], - 'application/pkix-cert' => ['cer'], - 'application/pkix-crl' => ['crl'], - 'application/pkix-pkipath' => ['pkipath'], - 'application/pkixcmp' => ['pki'], - 'application/pls+xml' => ['pls'], - 'application/postscript' => ['ai', 'eps', 'ps'], - 'application/provenance+xml' => ['provx'], - 'application/prs.cww' => ['cww'], - 'application/prs.xsf+xml' => ['xsf'], - 'application/pskc+xml' => ['pskcxml'], - 'application/raml+yaml' => ['raml'], - 'application/rdf+xml' => ['rdf', 'owl'], - 'application/reginfo+xml' => ['rif'], - 'application/relax-ng-compact-syntax' => ['rnc'], - 'application/resource-lists+xml' => ['rl'], - 'application/resource-lists-diff+xml' => ['rld'], - 'application/rls-services+xml' => ['rs'], - 'application/route-apd+xml' => ['rapd'], - 'application/route-s-tsid+xml' => ['sls'], - 'application/route-usd+xml' => ['rusd'], - 'application/rpki-ghostbusters' => ['gbr'], - 'application/rpki-manifest' => ['mft'], - 'application/rpki-roa' => ['roa'], - 'application/rsd+xml' => ['rsd'], - 'application/rss+xml' => ['rss'], - 'application/rtf' => ['rtf'], - 'application/sbml+xml' => ['sbml'], - 'application/scvp-cv-request' => ['scq'], - 'application/scvp-cv-response' => ['scs'], - 'application/scvp-vp-request' => ['spq'], - 'application/scvp-vp-response' => ['spp'], - 'application/sdp' => ['sdp'], - 'application/senml+xml' => ['senmlx'], - 'application/sensml+xml' => ['sensmlx'], - 'application/set-payment-initiation' => ['setpay'], - 'application/set-registration-initiation' => ['setreg'], - 'application/shf+xml' => ['shf'], - 'application/sieve' => ['siv', 'sieve'], - 'application/smil+xml' => ['smi', 'smil'], - 'application/sparql-query' => ['rq'], - 'application/sparql-results+xml' => ['srx'], - 'application/sql' => ['sql'], - 'application/srgs' => ['gram'], - 'application/srgs+xml' => ['grxml'], - 'application/sru+xml' => ['sru'], - 'application/ssdl+xml' => ['ssdl'], - 'application/ssml+xml' => ['ssml'], - 'application/swid+xml' => ['swidtag'], - 'application/tei+xml' => ['tei', 'teicorpus'], - 'application/thraud+xml' => ['tfi'], - 'application/timestamped-data' => ['tsd'], - 'application/toml' => ['toml'], - 'application/trig' => ['trig'], - 'application/ttml+xml' => ['ttml'], - 'application/ubjson' => ['ubj'], - 'application/urc-ressheet+xml' => ['rsheet'], - 'application/urc-targetdesc+xml' => ['td'], - 'application/vnd.1000minds.decision-model+xml' => ['1km'], - 'application/vnd.3gpp.pic-bw-large' => ['plb'], - 'application/vnd.3gpp.pic-bw-small' => ['psb'], - 'application/vnd.3gpp.pic-bw-var' => ['pvb'], - 'application/vnd.3gpp2.tcap' => ['tcap'], - 'application/vnd.3m.post-it-notes' => ['pwn'], - 'application/vnd.accpac.simply.aso' => ['aso'], - 'application/vnd.accpac.simply.imp' => ['imp'], - 'application/vnd.acucobol' => ['acu'], - 'application/vnd.acucorp' => ['atc', 'acutc'], - 'application/vnd.adobe.air-application-installer-package+zip' => ['air'], - 'application/vnd.adobe.formscentral.fcdt' => ['fcdt'], - 'application/vnd.adobe.fxp' => ['fxp', 'fxpl'], - 'application/vnd.adobe.xdp+xml' => ['xdp'], - 'application/vnd.adobe.xfdf' => ['xfdf'], - 'application/vnd.age' => ['age'], - 'application/vnd.ahead.space' => ['ahead'], - 'application/vnd.airzip.filesecure.azf' => ['azf'], - 'application/vnd.airzip.filesecure.azs' => ['azs'], - 'application/vnd.amazon.ebook' => ['azw'], - 'application/vnd.americandynamics.acc' => ['acc'], - 'application/vnd.amiga.ami' => ['ami'], - 'application/vnd.android.package-archive' => ['apk'], - 'application/vnd.anser-web-certificate-issue-initiation' => ['cii'], - 'application/vnd.anser-web-funds-transfer-initiation' => ['fti'], - 'application/vnd.antix.game-component' => ['atx'], - 'application/vnd.apple.installer+xml' => ['mpkg'], - 'application/vnd.apple.keynote' => ['key'], - 'application/vnd.apple.mpegurl' => ['m3u8'], - 'application/vnd.apple.numbers' => ['numbers'], - 'application/vnd.apple.pages' => ['pages'], - 'application/vnd.apple.pkpass' => ['pkpass'], - 'application/vnd.aristanetworks.swi' => ['swi'], - 'application/vnd.astraea-software.iota' => ['iota'], - 'application/vnd.audiograph' => ['aep'], - 'application/vnd.balsamiq.bmml+xml' => ['bmml'], - 'application/vnd.blueice.multipass' => ['mpm'], - 'application/vnd.bmi' => ['bmi'], - 'application/vnd.businessobjects' => ['rep'], - 'application/vnd.chemdraw+xml' => ['cdxml'], - 'application/vnd.chipnuts.karaoke-mmd' => ['mmd'], - 'application/vnd.cinderella' => ['cdy'], - 'application/vnd.citationstyles.style+xml' => ['csl'], - 'application/vnd.claymore' => ['cla'], - 'application/vnd.cloanto.rp9' => ['rp9'], - 'application/vnd.clonk.c4group' => ['c4g', 'c4d', 'c4f', 'c4p', 'c4u'], - 'application/vnd.cluetrust.cartomobile-config' => ['c11amc'], - 'application/vnd.cluetrust.cartomobile-config-pkg' => ['c11amz'], - 'application/vnd.commonspace' => ['csp'], - 'application/vnd.contact.cmsg' => ['cdbcmsg'], - 'application/vnd.cosmocaller' => ['cmc'], - 'application/vnd.crick.clicker' => ['clkx'], - 'application/vnd.crick.clicker.keyboard' => ['clkk'], - 'application/vnd.crick.clicker.palette' => ['clkp'], - 'application/vnd.crick.clicker.template' => ['clkt'], - 'application/vnd.crick.clicker.wordbank' => ['clkw'], - 'application/vnd.criticaltools.wbs+xml' => ['wbs'], - 'application/vnd.ctc-posml' => ['pml'], - 'application/vnd.cups-ppd' => ['ppd'], - 'application/vnd.curl.car' => ['car'], - 'application/vnd.curl.pcurl' => ['pcurl'], - 'application/vnd.dart' => ['dart'], - 'application/vnd.data-vision.rdz' => ['rdz'], - 'application/vnd.dbf' => ['dbf'], - 'application/vnd.dece.data' => ['uvf', 'uvvf', 'uvd', 'uvvd'], - 'application/vnd.dece.ttml+xml' => ['uvt', 'uvvt'], - 'application/vnd.dece.unspecified' => ['uvx', 'uvvx'], - 'application/vnd.dece.zip' => ['uvz', 'uvvz'], - 'application/vnd.denovo.fcselayout-link' => ['fe_launch'], - 'application/vnd.dna' => ['dna'], - 'application/vnd.dolby.mlp' => ['mlp'], - 'application/vnd.dpgraph' => ['dpg'], - 'application/vnd.dreamfactory' => ['dfac'], - 'application/vnd.ds-keypoint' => ['kpxx'], - 'application/vnd.dvb.ait' => ['ait'], - 'application/vnd.dvb.service' => ['svc'], - 'application/vnd.dynageo' => ['geo'], - 'application/vnd.ecowin.chart' => ['mag'], - 'application/vnd.enliven' => ['nml'], - 'application/vnd.epson.esf' => ['esf'], - 'application/vnd.epson.msf' => ['msf'], - 'application/vnd.epson.quickanime' => ['qam'], - 'application/vnd.epson.salt' => ['slt'], - 'application/vnd.epson.ssf' => ['ssf'], - 'application/vnd.eszigno3+xml' => ['es3', 'et3'], - 'application/vnd.ezpix-album' => ['ez2'], - 'application/vnd.ezpix-package' => ['ez3'], - 'application/vnd.fdf' => ['fdf'], - 'application/vnd.fdsn.mseed' => ['mseed'], - 'application/vnd.fdsn.seed' => ['seed', 'dataless'], - 'application/vnd.flographit' => ['gph'], - 'application/vnd.fluxtime.clip' => ['ftc'], - 'application/vnd.framemaker' => ['fm', 'frame', 'maker', 'book'], - 'application/vnd.frogans.fnc' => ['fnc'], - 'application/vnd.frogans.ltf' => ['ltf'], - 'application/vnd.fsc.weblaunch' => ['fsc'], - 'application/vnd.fujitsu.oasys' => ['oas'], - 'application/vnd.fujitsu.oasys2' => ['oa2'], - 'application/vnd.fujitsu.oasys3' => ['oa3'], - 'application/vnd.fujitsu.oasysgp' => ['fg5'], - 'application/vnd.fujitsu.oasysprs' => ['bh2'], - 'application/vnd.fujixerox.ddd' => ['ddd'], - 'application/vnd.fujixerox.docuworks' => ['xdw'], - 'application/vnd.fujixerox.docuworks.binder' => ['xbd'], - 'application/vnd.fuzzysheet' => ['fzs'], - 'application/vnd.genomatix.tuxedo' => ['txd'], - 'application/vnd.geogebra.file' => ['ggb'], - 'application/vnd.geogebra.slides' => ['ggs'], - 'application/vnd.geogebra.tool' => ['ggt'], - 'application/vnd.geometry-explorer' => ['gex', 'gre'], - 'application/vnd.geonext' => ['gxt'], - 'application/vnd.geoplan' => ['g2w'], - 'application/vnd.geospace' => ['g3w'], - 'application/vnd.gmx' => ['gmx'], - 'application/vnd.google-apps.document' => ['gdoc'], - 'application/vnd.google-apps.presentation' => ['gslides'], - 'application/vnd.google-apps.spreadsheet' => ['gsheet'], - 'application/vnd.google-earth.kml+xml' => ['kml'], - 'application/vnd.google-earth.kmz' => ['kmz'], - 'application/vnd.gov.sk.xmldatacontainer+xml' => ['xdcf'], - 'application/vnd.grafeq' => ['gqf', 'gqs'], - 'application/vnd.groove-account' => ['gac'], - 'application/vnd.groove-help' => ['ghf'], - 'application/vnd.groove-identity-message' => ['gim'], - 'application/vnd.groove-injector' => ['grv'], - 'application/vnd.groove-tool-message' => ['gtm'], - 'application/vnd.groove-tool-template' => ['tpl'], - 'application/vnd.groove-vcard' => ['vcg'], - 'application/vnd.hal+xml' => ['hal'], - 'application/vnd.handheld-entertainment+xml' => ['zmm'], - 'application/vnd.hbci' => ['hbci'], - 'application/vnd.hhe.lesson-player' => ['les'], - 'application/vnd.hp-hpgl' => ['hpgl'], - 'application/vnd.hp-hpid' => ['hpid'], - 'application/vnd.hp-hps' => ['hps'], - 'application/vnd.hp-jlyt' => ['jlt'], - 'application/vnd.hp-pcl' => ['pcl'], - 'application/vnd.hp-pclxl' => ['pclxl'], - 'application/vnd.hydrostatix.sof-data' => ['sfd-hdstx'], - 'application/vnd.ibm.minipay' => ['mpy'], - 'application/vnd.ibm.modcap' => ['afp', 'listafp', 'list3820'], - 'application/vnd.ibm.rights-management' => ['irm'], - 'application/vnd.ibm.secure-container' => ['sc'], - 'application/vnd.iccprofile' => ['icc', 'icm'], - 'application/vnd.igloader' => ['igl'], - 'application/vnd.immervision-ivp' => ['ivp'], - 'application/vnd.immervision-ivu' => ['ivu'], - 'application/vnd.insors.igm' => ['igm'], - 'application/vnd.intercon.formnet' => ['xpw', 'xpx'], - 'application/vnd.intergeo' => ['i2g'], - 'application/vnd.intu.qbo' => ['qbo'], - 'application/vnd.intu.qfx' => ['qfx'], - 'application/vnd.ipunplugged.rcprofile' => ['rcprofile'], - 'application/vnd.irepository.package+xml' => ['irp'], - 'application/vnd.is-xpr' => ['xpr'], - 'application/vnd.isac.fcs' => ['fcs'], - 'application/vnd.jam' => ['jam'], - 'application/vnd.jcp.javame.midlet-rms' => ['rms'], - 'application/vnd.jisp' => ['jisp'], - 'application/vnd.joost.joda-archive' => ['joda'], - 'application/vnd.kahootz' => ['ktz', 'ktr'], - 'application/vnd.kde.karbon' => ['karbon'], - 'application/vnd.kde.kchart' => ['chrt'], - 'application/vnd.kde.kformula' => ['kfo'], - 'application/vnd.kde.kivio' => ['flw'], - 'application/vnd.kde.kontour' => ['kon'], - 'application/vnd.kde.kpresenter' => ['kpr', 'kpt'], - 'application/vnd.kde.kspread' => ['ksp'], - 'application/vnd.kde.kword' => ['kwd', 'kwt'], - 'application/vnd.kenameaapp' => ['htke'], - 'application/vnd.kidspiration' => ['kia'], - 'application/vnd.kinar' => ['kne', 'knp'], - 'application/vnd.koan' => ['skp', 'skd', 'skt', 'skm'], - 'application/vnd.kodak-descriptor' => ['sse'], - 'application/vnd.las.las+xml' => ['lasxml'], - 'application/vnd.llamagraphics.life-balance.desktop' => ['lbd'], - 'application/vnd.llamagraphics.life-balance.exchange+xml' => ['lbe'], - 'application/vnd.lotus-1-2-3' => ['123'], - 'application/vnd.lotus-approach' => ['apr'], - 'application/vnd.lotus-freelance' => ['pre'], - 'application/vnd.lotus-notes' => ['nsf'], - 'application/vnd.lotus-organizer' => ['org'], - 'application/vnd.lotus-screencam' => ['scm'], - 'application/vnd.lotus-wordpro' => ['lwp'], - 'application/vnd.macports.portpkg' => ['portpkg'], - 'application/vnd.mapbox-vector-tile' => ['mvt'], - 'application/vnd.mcd' => ['mcd'], - 'application/vnd.medcalcdata' => ['mc1'], - 'application/vnd.mediastation.cdkey' => ['cdkey'], - 'application/vnd.mfer' => ['mwf'], - 'application/vnd.mfmp' => ['mfm'], - 'application/vnd.micrografx.flo' => ['flo'], - 'application/vnd.micrografx.igx' => ['igx'], - 'application/vnd.mif' => ['mif'], - 'application/vnd.mobius.daf' => ['daf'], - 'application/vnd.mobius.dis' => ['dis'], - 'application/vnd.mobius.mbk' => ['mbk'], - 'application/vnd.mobius.mqy' => ['mqy'], - 'application/vnd.mobius.msl' => ['msl'], - 'application/vnd.mobius.plc' => ['plc'], - 'application/vnd.mobius.txf' => ['txf'], - 'application/vnd.mophun.application' => ['mpn'], - 'application/vnd.mophun.certificate' => ['mpc'], - 'application/vnd.mozilla.xul+xml' => ['xul'], - 'application/vnd.ms-artgalry' => ['cil'], - 'application/vnd.ms-cab-compressed' => ['cab'], - 'application/vnd.ms-excel' => ['xls', 'xlm', 'xla', 'xlc', 'xlt', 'xlw'], - 'application/vnd.ms-excel.addin.macroenabled.12' => ['xlam'], - 'application/vnd.ms-excel.sheet.binary.macroenabled.12' => ['xlsb'], - 'application/vnd.ms-excel.sheet.macroenabled.12' => ['xlsm'], - 'application/vnd.ms-excel.template.macroenabled.12' => ['xltm'], - 'application/vnd.ms-fontobject' => ['eot'], - 'application/vnd.ms-htmlhelp' => ['chm'], - 'application/vnd.ms-ims' => ['ims'], - 'application/vnd.ms-lrm' => ['lrm'], - 'application/vnd.ms-officetheme' => ['thmx'], - 'application/vnd.ms-outlook' => ['msg'], - 'application/vnd.ms-pki.seccat' => ['cat'], - 'application/vnd.ms-pki.stl' => ['stl'], - 'application/vnd.ms-powerpoint' => ['ppt', 'pps', 'pot', 'ppa'], - 'application/vnd.ms-powerpoint.addin.macroenabled.12' => ['ppam'], - 'application/vnd.ms-powerpoint.presentation.macroenabled.12' => ['pptm'], - 'application/vnd.ms-powerpoint.slide.macroenabled.12' => ['sldm'], - 'application/vnd.ms-powerpoint.slideshow.macroenabled.12' => ['ppsm'], - 'application/vnd.ms-powerpoint.template.macroenabled.12' => ['potm'], - 'application/vnd.ms-project' => ['mpp', 'mpt'], - 'application/vnd.ms-word.document.macroenabled.12' => ['docm'], - 'application/vnd.ms-word.template.macroenabled.12' => ['dotm'], - 'application/vnd.ms-works' => ['wps', 'wks', 'wcm', 'wdb'], - 'application/vnd.ms-wpl' => ['wpl'], - 'application/vnd.ms-xpsdocument' => ['xps'], - 'application/vnd.mseq' => ['mseq'], - 'application/vnd.musician' => ['mus'], - 'application/vnd.muvee.style' => ['msty'], - 'application/vnd.mynfc' => ['taglet'], - 'application/vnd.nato.bindingdataobject+xml' => ['bdo'], - 'application/vnd.neurolanguage.nlu' => ['nlu'], - 'application/vnd.nitf' => ['ntf', 'nitf'], - 'application/vnd.noblenet-directory' => ['nnd'], - 'application/vnd.noblenet-sealer' => ['nns'], - 'application/vnd.noblenet-web' => ['nnw'], - 'application/vnd.nokia.n-gage.ac+xml' => ['ac'], - 'application/vnd.nokia.n-gage.data' => ['ngdat'], - 'application/vnd.nokia.n-gage.symbian.install' => ['n-gage'], - 'application/vnd.nokia.radio-preset' => ['rpst'], - 'application/vnd.nokia.radio-presets' => ['rpss'], - 'application/vnd.novadigm.edm' => ['edm'], - 'application/vnd.novadigm.edx' => ['edx'], - 'application/vnd.novadigm.ext' => ['ext'], - 'application/vnd.oasis.opendocument.chart' => ['odc'], - 'application/vnd.oasis.opendocument.chart-template' => ['otc'], - 'application/vnd.oasis.opendocument.database' => ['odb'], - 'application/vnd.oasis.opendocument.formula' => ['odf'], - 'application/vnd.oasis.opendocument.formula-template' => ['odft'], - 'application/vnd.oasis.opendocument.graphics' => ['odg'], - 'application/vnd.oasis.opendocument.graphics-template' => ['otg'], - 'application/vnd.oasis.opendocument.image' => ['odi'], - 'application/vnd.oasis.opendocument.image-template' => ['oti'], - 'application/vnd.oasis.opendocument.presentation' => ['odp'], - 'application/vnd.oasis.opendocument.presentation-template' => ['otp'], - 'application/vnd.oasis.opendocument.spreadsheet' => ['ods'], - 'application/vnd.oasis.opendocument.spreadsheet-template' => ['ots'], - 'application/vnd.oasis.opendocument.text' => ['odt'], - 'application/vnd.oasis.opendocument.text-master' => ['odm'], - 'application/vnd.oasis.opendocument.text-template' => ['ott'], - 'application/vnd.oasis.opendocument.text-web' => ['oth'], - 'application/vnd.olpc-sugar' => ['xo'], - 'application/vnd.oma.dd2+xml' => ['dd2'], - 'application/vnd.openblox.game+xml' => ['obgx'], - 'application/vnd.openofficeorg.extension' => ['oxt'], - 'application/vnd.openstreetmap.data+xml' => ['osm'], - 'application/vnd.openxmlformats-officedocument.presentationml.presentation' => ['pptx'], - 'application/vnd.openxmlformats-officedocument.presentationml.slide' => ['sldx'], - 'application/vnd.openxmlformats-officedocument.presentationml.slideshow' => ['ppsx'], - 'application/vnd.openxmlformats-officedocument.presentationml.template' => ['potx'], - 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' => ['xlsx'], - 'application/vnd.openxmlformats-officedocument.spreadsheetml.template' => ['xltx'], - 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' => ['docx'], - 'application/vnd.openxmlformats-officedocument.wordprocessingml.template' => ['dotx'], - 'application/vnd.osgeo.mapguide.package' => ['mgp'], - 'application/vnd.osgi.dp' => ['dp'], - 'application/vnd.osgi.subsystem' => ['esa'], - 'application/vnd.palm' => ['pdb', 'pqa', 'oprc'], - 'application/vnd.pawaafile' => ['paw'], - 'application/vnd.pg.format' => ['str'], - 'application/vnd.pg.osasli' => ['ei6'], - 'application/vnd.picsel' => ['efif'], - 'application/vnd.pmi.widget' => ['wg'], - 'application/vnd.pocketlearn' => ['plf'], - 'application/vnd.powerbuilder6' => ['pbd'], - 'application/vnd.previewsystems.box' => ['box'], - 'application/vnd.proteus.magazine' => ['mgz'], - 'application/vnd.publishare-delta-tree' => ['qps'], - 'application/vnd.pvi.ptid1' => ['ptid'], - 'application/vnd.pwg-xhtml-print+xml' => ['xhtm'], - 'application/vnd.quark.quarkxpress' => ['qxd', 'qxt', 'qwd', 'qwt', 'qxl', 'qxb'], - 'application/vnd.rar' => ['rar'], - 'application/vnd.realvnc.bed' => ['bed'], - 'application/vnd.recordare.musicxml' => ['mxl'], - 'application/vnd.recordare.musicxml+xml' => ['musicxml'], - 'application/vnd.rig.cryptonote' => ['cryptonote'], - 'application/vnd.rim.cod' => ['cod'], - 'application/vnd.rn-realmedia' => ['rm'], - 'application/vnd.rn-realmedia-vbr' => ['rmvb'], - 'application/vnd.route66.link66+xml' => ['link66'], - 'application/vnd.sailingtracker.track' => ['st'], - 'application/vnd.seemail' => ['see'], - 'application/vnd.sema' => ['sema'], - 'application/vnd.semd' => ['semd'], - 'application/vnd.semf' => ['semf'], - 'application/vnd.shana.informed.formdata' => ['ifm'], - 'application/vnd.shana.informed.formtemplate' => ['itp'], - 'application/vnd.shana.informed.interchange' => ['iif'], - 'application/vnd.shana.informed.package' => ['ipk'], - 'application/vnd.simtech-mindmapper' => ['twd', 'twds'], - 'application/vnd.smaf' => ['mmf'], - 'application/vnd.smart.teacher' => ['teacher'], - 'application/vnd.software602.filler.form+xml' => ['fo'], - 'application/vnd.solent.sdkm+xml' => ['sdkm', 'sdkd'], - 'application/vnd.spotfire.dxp' => ['dxp'], - 'application/vnd.spotfire.sfs' => ['sfs'], - 'application/vnd.stardivision.calc' => ['sdc'], - 'application/vnd.stardivision.draw' => ['sda'], - 'application/vnd.stardivision.impress' => ['sdd'], - 'application/vnd.stardivision.math' => ['smf'], - 'application/vnd.stardivision.writer' => ['sdw', 'vor'], - 'application/vnd.stardivision.writer-global' => ['sgl'], - 'application/vnd.stepmania.package' => ['smzip'], - 'application/vnd.stepmania.stepchart' => ['sm'], - 'application/vnd.sun.wadl+xml' => ['wadl'], - 'application/vnd.sun.xml.calc' => ['sxc'], - 'application/vnd.sun.xml.calc.template' => ['stc'], - 'application/vnd.sun.xml.draw' => ['sxd'], - 'application/vnd.sun.xml.draw.template' => ['std'], - 'application/vnd.sun.xml.impress' => ['sxi'], - 'application/vnd.sun.xml.impress.template' => ['sti'], - 'application/vnd.sun.xml.math' => ['sxm'], - 'application/vnd.sun.xml.writer' => ['sxw'], - 'application/vnd.sun.xml.writer.global' => ['sxg'], - 'application/vnd.sun.xml.writer.template' => ['stw'], - 'application/vnd.sus-calendar' => ['sus', 'susp'], - 'application/vnd.svd' => ['svd'], - 'application/vnd.symbian.install' => ['sis', 'sisx'], - 'application/vnd.syncml+xml' => ['xsm'], - 'application/vnd.syncml.dm+wbxml' => ['bdm'], - 'application/vnd.syncml.dm+xml' => ['xdm'], - 'application/vnd.syncml.dmddf+xml' => ['ddf'], - 'application/vnd.tao.intent-module-archive' => ['tao'], - 'application/vnd.tcpdump.pcap' => ['pcap', 'cap', 'dmp'], - 'application/vnd.tmobile-livetv' => ['tmo'], - 'application/vnd.trid.tpt' => ['tpt'], - 'application/vnd.triscape.mxs' => ['mxs'], - 'application/vnd.trueapp' => ['tra'], - 'application/vnd.ufdl' => ['ufd', 'ufdl'], - 'application/vnd.uiq.theme' => ['utz'], - 'application/vnd.umajin' => ['umj'], - 'application/vnd.unity' => ['unityweb'], - 'application/vnd.uoml+xml' => ['uoml', 'uo'], - 'application/vnd.vcx' => ['vcx'], - 'application/vnd.visio' => ['vsd', 'vst', 'vss', 'vsw'], - 'application/vnd.visionary' => ['vis'], - 'application/vnd.vsf' => ['vsf'], - 'application/vnd.wap.wbxml' => ['wbxml'], - 'application/vnd.wap.wmlc' => ['wmlc'], - 'application/vnd.wap.wmlscriptc' => ['wmlsc'], - 'application/vnd.webturbo' => ['wtb'], - 'application/vnd.wolfram.player' => ['nbp'], - 'application/vnd.wordperfect' => ['wpd'], - 'application/vnd.wqd' => ['wqd'], - 'application/vnd.wt.stf' => ['stf'], - 'application/vnd.xara' => ['xar'], - 'application/vnd.xfdl' => ['xfdl'], - 'application/vnd.yamaha.hv-dic' => ['hvd'], - 'application/vnd.yamaha.hv-script' => ['hvs'], - 'application/vnd.yamaha.hv-voice' => ['hvp'], - 'application/vnd.yamaha.openscoreformat' => ['osf'], - 'application/vnd.yamaha.openscoreformat.osfpvg+xml' => ['osfpvg'], - 'application/vnd.yamaha.smaf-audio' => ['saf'], - 'application/vnd.yamaha.smaf-phrase' => ['spf'], - 'application/vnd.yellowriver-custom-menu' => ['cmp'], - 'application/vnd.zul' => ['zir', 'zirz'], - 'application/vnd.zzazz.deck+xml' => ['zaz'], - 'application/voicexml+xml' => ['vxml'], - 'application/wasm' => ['wasm'], - 'application/watcherinfo+xml' => ['wif'], - 'application/widget' => ['wgt'], - 'application/winhlp' => ['hlp'], - 'application/wsdl+xml' => ['wsdl'], - 'application/wspolicy+xml' => ['wspolicy'], - 'application/x-7z-compressed' => ['7z', '7zip'], - 'application/x-abiword' => ['abw'], - 'application/x-ace-compressed' => ['ace'], - 'application/x-apple-diskimage' => ['dmg'], - 'application/x-arj' => ['arj'], - 'application/x-authorware-bin' => ['aab', 'x32', 'u32', 'vox'], - 'application/x-authorware-map' => ['aam'], - 'application/x-authorware-seg' => ['aas'], - 'application/x-bcpio' => ['bcpio'], - 'application/x-bdoc' => ['bdoc'], - 'application/x-bittorrent' => ['torrent'], - 'application/x-blorb' => ['blb', 'blorb'], - 'application/x-bzip' => ['bz'], - 'application/x-bzip2' => ['bz2', 'boz'], - 'application/x-cbr' => ['cbr', 'cba', 'cbt', 'cbz', 'cb7'], - 'application/x-cdlink' => ['vcd'], - 'application/x-cfs-compressed' => ['cfs'], - 'application/x-chat' => ['chat'], - 'application/x-chess-pgn' => ['pgn'], - 'application/x-chrome-extension' => ['crx'], - 'application/x-cocoa' => ['cco'], - 'application/x-conference' => ['nsc'], - 'application/x-cpio' => ['cpio'], - 'application/x-csh' => ['csh'], - 'application/x-debian-package' => ['deb', 'udeb'], - 'application/x-dgc-compressed' => ['dgc'], - 'application/x-director' => ['dir', 'dcr', 'dxr', 'cst', 'cct', 'cxt', 'w3d', 'fgd', 'swa'], - 'application/x-doom' => ['wad'], - 'application/x-dtbncx+xml' => ['ncx'], - 'application/x-dtbook+xml' => ['dtb'], - 'application/x-dtbresource+xml' => ['res'], - 'application/x-dvi' => ['dvi'], - 'application/x-envoy' => ['evy'], - 'application/x-eva' => ['eva'], - 'application/x-font-bdf' => ['bdf'], - 'application/x-font-ghostscript' => ['gsf'], - 'application/x-font-linux-psf' => ['psf'], - 'application/x-font-pcf' => ['pcf'], - 'application/x-font-snf' => ['snf'], - 'application/x-font-type1' => ['pfa', 'pfb', 'pfm', 'afm'], - 'application/x-freearc' => ['arc'], - 'application/x-futuresplash' => ['spl'], - 'application/x-gca-compressed' => ['gca'], - 'application/x-glulx' => ['ulx'], - 'application/x-gnumeric' => ['gnumeric'], - 'application/x-gramps-xml' => ['gramps'], - 'application/x-gtar' => ['gtar'], - 'application/x-hdf' => ['hdf'], - 'application/x-httpd-php' => ['php', 'php4', 'php3', 'phtml'], - 'application/x-install-instructions' => ['install'], - 'application/x-iso9660-image' => ['iso'], - 'application/x-iwork-keynote-sffkey' => ['key'], - 'application/x-iwork-numbers-sffnumbers' => ['numbers'], - 'application/x-iwork-pages-sffpages' => ['pages'], - 'application/x-java-archive-diff' => ['jardiff'], - 'application/x-java-jnlp-file' => ['jnlp'], - 'application/x-keepass2' => ['kdbx'], - 'application/x-latex' => ['latex'], - 'application/x-lua-bytecode' => ['luac'], - 'application/x-lzh-compressed' => ['lzh', 'lha'], - 'application/x-makeself' => ['run'], - 'application/x-mie' => ['mie'], - 'application/x-mobipocket-ebook' => ['prc', 'mobi'], - 'application/x-ms-application' => ['application'], - 'application/x-ms-shortcut' => ['lnk'], - 'application/x-ms-wmd' => ['wmd'], - 'application/x-ms-wmz' => ['wmz'], - 'application/x-ms-xbap' => ['xbap'], - 'application/x-msaccess' => ['mdb'], - 'application/x-msbinder' => ['obd'], - 'application/x-mscardfile' => ['crd'], - 'application/x-msclip' => ['clp'], - 'application/x-msdos-program' => ['exe'], - 'application/x-msdownload' => ['exe', 'dll', 'com', 'bat', 'msi'], - 'application/x-msmediaview' => ['mvb', 'm13', 'm14'], - 'application/x-msmetafile' => ['wmf', 'wmz', 'emf', 'emz'], - 'application/x-msmoney' => ['mny'], - 'application/x-mspublisher' => ['pub'], - 'application/x-msschedule' => ['scd'], - 'application/x-msterminal' => ['trm'], - 'application/x-mswrite' => ['wri'], - 'application/x-netcdf' => ['nc', 'cdf'], - 'application/x-ns-proxy-autoconfig' => ['pac'], - 'application/x-nzb' => ['nzb'], - 'application/x-perl' => ['pl', 'pm'], - 'application/x-pilot' => ['prc', 'pdb'], - 'application/x-pkcs12' => ['p12', 'pfx'], - 'application/x-pkcs7-certificates' => ['p7b', 'spc'], - 'application/x-pkcs7-certreqresp' => ['p7r'], - 'application/x-rar-compressed' => ['rar'], - 'application/x-redhat-package-manager' => ['rpm'], - 'application/x-research-info-systems' => ['ris'], - 'application/x-sea' => ['sea'], - 'application/x-sh' => ['sh'], - 'application/x-shar' => ['shar'], - 'application/x-shockwave-flash' => ['swf'], - 'application/x-silverlight-app' => ['xap'], - 'application/x-sql' => ['sql'], - 'application/x-stuffit' => ['sit'], - 'application/x-stuffitx' => ['sitx'], - 'application/x-subrip' => ['srt'], - 'application/x-sv4cpio' => ['sv4cpio'], - 'application/x-sv4crc' => ['sv4crc'], - 'application/x-t3vm-image' => ['t3'], - 'application/x-tads' => ['gam'], - 'application/x-tar' => ['tar', 'tgz'], - 'application/x-tcl' => ['tcl', 'tk'], - 'application/x-tex' => ['tex'], - 'application/x-tex-tfm' => ['tfm'], - 'application/x-texinfo' => ['texinfo', 'texi'], - 'application/x-tgif' => ['obj'], - 'application/x-ustar' => ['ustar'], - 'application/x-virtualbox-hdd' => ['hdd'], - 'application/x-virtualbox-ova' => ['ova'], - 'application/x-virtualbox-ovf' => ['ovf'], - 'application/x-virtualbox-vbox' => ['vbox'], - 'application/x-virtualbox-vbox-extpack' => ['vbox-extpack'], - 'application/x-virtualbox-vdi' => ['vdi'], - 'application/x-virtualbox-vhd' => ['vhd'], - 'application/x-virtualbox-vmdk' => ['vmdk'], - 'application/x-wais-source' => ['src'], - 'application/x-web-app-manifest+json' => ['webapp'], - 'application/x-x509-ca-cert' => ['der', 'crt', 'pem'], - 'application/x-xfig' => ['fig'], - 'application/x-xliff+xml' => ['xlf'], - 'application/x-xpinstall' => ['xpi'], - 'application/x-xz' => ['xz'], - 'application/x-zmachine' => ['z1', 'z2', 'z3', 'z4', 'z5', 'z6', 'z7', 'z8'], - 'application/xaml+xml' => ['xaml'], - 'application/xcap-att+xml' => ['xav'], - 'application/xcap-caps+xml' => ['xca'], - 'application/xcap-diff+xml' => ['xdf'], - 'application/xcap-el+xml' => ['xel'], - 'application/xcap-ns+xml' => ['xns'], - 'application/xenc+xml' => ['xenc'], - 'application/xfdf' => ['xfdf'], - 'application/xhtml+xml' => ['xhtml', 'xht'], - 'application/xliff+xml' => ['xlf'], - 'application/xml' => ['xml', 'xsl', 'xsd', 'rng'], - 'application/xml-dtd' => ['dtd'], - 'application/xop+xml' => ['xop'], - 'application/xproc+xml' => ['xpl'], - 'application/xslt+xml' => ['xsl', 'xslt'], - 'application/xspf+xml' => ['xspf'], - 'application/xv+xml' => ['mxml', 'xhvml', 'xvml', 'xvm'], - 'application/yang' => ['yang'], - 'application/yin+xml' => ['yin'], - 'application/zip' => ['zip'], - 'audio/3gpp' => ['3gpp'], - 'audio/aac' => ['adts', 'aac'], - 'audio/adpcm' => ['adp'], - 'audio/amr' => ['amr'], - 'audio/basic' => ['au', 'snd'], - 'audio/midi' => ['mid', 'midi', 'kar', 'rmi'], - 'audio/mobile-xmf' => ['mxmf'], - 'audio/mp3' => ['mp3'], - 'audio/mp4' => ['m4a', 'mp4a'], - 'audio/mpeg' => ['mpga', 'mp2', 'mp2a', 'mp3', 'm2a', 'm3a'], - 'audio/ogg' => ['oga', 'ogg', 'spx', 'opus'], - 'audio/s3m' => ['s3m'], - 'audio/silk' => ['sil'], - 'audio/vnd.dece.audio' => ['uva', 'uvva'], - 'audio/vnd.digital-winds' => ['eol'], - 'audio/vnd.dra' => ['dra'], - 'audio/vnd.dts' => ['dts'], - 'audio/vnd.dts.hd' => ['dtshd'], - 'audio/vnd.lucent.voice' => ['lvp'], - 'audio/vnd.ms-playready.media.pya' => ['pya'], - 'audio/vnd.nuera.ecelp4800' => ['ecelp4800'], - 'audio/vnd.nuera.ecelp7470' => ['ecelp7470'], - 'audio/vnd.nuera.ecelp9600' => ['ecelp9600'], - 'audio/vnd.rip' => ['rip'], - 'audio/wav' => ['wav'], - 'audio/wave' => ['wav'], - 'audio/webm' => ['weba'], - 'audio/x-aac' => ['aac'], - 'audio/x-aiff' => ['aif', 'aiff', 'aifc'], - 'audio/x-caf' => ['caf'], - 'audio/x-flac' => ['flac'], - 'audio/x-m4a' => ['m4a'], - 'audio/x-matroska' => ['mka'], - 'audio/x-mpegurl' => ['m3u'], - 'audio/x-ms-wax' => ['wax'], - 'audio/x-ms-wma' => ['wma'], - 'audio/x-pn-realaudio' => ['ram', 'ra', 'rm'], - 'audio/x-pn-realaudio-plugin' => ['rmp', 'rpm'], - 'audio/x-realaudio' => ['ra'], - 'audio/x-wav' => ['wav'], - 'audio/xm' => ['xm'], - 'chemical/x-cdx' => ['cdx'], - 'chemical/x-cif' => ['cif'], - 'chemical/x-cmdf' => ['cmdf'], - 'chemical/x-cml' => ['cml'], - 'chemical/x-csml' => ['csml'], - 'chemical/x-xyz' => ['xyz'], - 'font/collection' => ['ttc'], - 'font/otf' => ['otf'], - 'font/ttf' => ['ttf'], - 'font/woff' => ['woff'], - 'font/woff2' => ['woff2'], - 'image/aces' => ['exr'], - 'image/apng' => ['apng'], - 'image/avci' => ['avci'], - 'image/avcs' => ['avcs'], - 'image/avif' => ['avif'], - 'image/bmp' => ['bmp', 'dib'], - 'image/cgm' => ['cgm'], - 'image/dicom-rle' => ['drle'], - 'image/dpx' => ['dpx'], - 'image/emf' => ['emf'], - 'image/fits' => ['fits'], - 'image/g3fax' => ['g3'], - 'image/gif' => ['gif'], - 'image/heic' => ['heic'], - 'image/heic-sequence' => ['heics'], - 'image/heif' => ['heif'], - 'image/heif-sequence' => ['heifs'], - 'image/hej2k' => ['hej2'], - 'image/hsj2' => ['hsj2'], - 'image/ief' => ['ief'], - 'image/jls' => ['jls'], - 'image/jp2' => ['jp2', 'jpg2'], - 'image/jpeg' => ['jpeg', 'jpg', 'jpe'], - 'image/jph' => ['jph'], - 'image/jphc' => ['jhc'], - 'image/jpm' => ['jpm', 'jpgm'], - 'image/jpx' => ['jpx', 'jpf'], - 'image/jxl' => ['jxl'], - 'image/jxr' => ['jxr'], - 'image/jxra' => ['jxra'], - 'image/jxrs' => ['jxrs'], - 'image/jxs' => ['jxs'], - 'image/jxsc' => ['jxsc'], - 'image/jxsi' => ['jxsi'], - 'image/jxss' => ['jxss'], - 'image/ktx' => ['ktx'], - 'image/ktx2' => ['ktx2'], - 'image/png' => ['png'], - 'image/prs.btif' => ['btif', 'btf'], - 'image/prs.pti' => ['pti'], - 'image/sgi' => ['sgi'], - 'image/svg+xml' => ['svg', 'svgz'], - 'image/t38' => ['t38'], - 'image/tiff' => ['tif', 'tiff'], - 'image/tiff-fx' => ['tfx'], - 'image/vnd.adobe.photoshop' => ['psd'], - 'image/vnd.airzip.accelerator.azv' => ['azv'], - 'image/vnd.dece.graphic' => ['uvi', 'uvvi', 'uvg', 'uvvg'], - 'image/vnd.djvu' => ['djvu', 'djv'], - 'image/vnd.dvb.subtitle' => ['sub'], - 'image/vnd.dwg' => ['dwg'], - 'image/vnd.dxf' => ['dxf'], - 'image/vnd.fastbidsheet' => ['fbs'], - 'image/vnd.fpx' => ['fpx'], - 'image/vnd.fst' => ['fst'], - 'image/vnd.fujixerox.edmics-mmr' => ['mmr'], - 'image/vnd.fujixerox.edmics-rlc' => ['rlc'], - 'image/vnd.microsoft.icon' => ['ico'], - 'image/vnd.ms-dds' => ['dds'], - 'image/vnd.ms-modi' => ['mdi'], - 'image/vnd.ms-photo' => ['wdp'], - 'image/vnd.net-fpx' => ['npx'], - 'image/vnd.pco.b16' => ['b16'], - 'image/vnd.tencent.tap' => ['tap'], - 'image/vnd.valve.source.texture' => ['vtf'], - 'image/vnd.wap.wbmp' => ['wbmp'], - 'image/vnd.xiff' => ['xif'], - 'image/vnd.zbrush.pcx' => ['pcx'], - 'image/webp' => ['webp'], - 'image/wmf' => ['wmf'], - 'image/x-3ds' => ['3ds'], - 'image/x-cmu-raster' => ['ras'], - 'image/x-cmx' => ['cmx'], - 'image/x-freehand' => ['fh', 'fhc', 'fh4', 'fh5', 'fh7'], - 'image/x-icon' => ['ico'], - 'image/x-jng' => ['jng'], - 'image/x-mrsid-image' => ['sid'], - 'image/x-ms-bmp' => ['bmp'], - 'image/x-pcx' => ['pcx'], - 'image/x-pict' => ['pic', 'pct'], - 'image/x-portable-anymap' => ['pnm'], - 'image/x-portable-bitmap' => ['pbm'], - 'image/x-portable-graymap' => ['pgm'], - 'image/x-portable-pixmap' => ['ppm'], - 'image/x-rgb' => ['rgb'], - 'image/x-tga' => ['tga'], - 'image/x-xbitmap' => ['xbm'], - 'image/x-xpixmap' => ['xpm'], - 'image/x-xwindowdump' => ['xwd'], - 'message/disposition-notification' => ['disposition-notification'], - 'message/global' => ['u8msg'], - 'message/global-delivery-status' => ['u8dsn'], - 'message/global-disposition-notification' => ['u8mdn'], - 'message/global-headers' => ['u8hdr'], - 'message/rfc822' => ['eml', 'mime'], - 'message/vnd.wfa.wsc' => ['wsc'], - 'model/3mf' => ['3mf'], - 'model/gltf+json' => ['gltf'], - 'model/gltf-binary' => ['glb'], - 'model/iges' => ['igs', 'iges'], - 'model/jt' => ['jt'], - 'model/mesh' => ['msh', 'mesh', 'silo'], - 'model/mtl' => ['mtl'], - 'model/obj' => ['obj'], - 'model/prc' => ['prc'], - 'model/step+xml' => ['stpx'], - 'model/step+zip' => ['stpz'], - 'model/step-xml+zip' => ['stpxz'], - 'model/stl' => ['stl'], - 'model/u3d' => ['u3d'], - 'model/vnd.bary' => ['bary'], - 'model/vnd.cld' => ['cld'], - 'model/vnd.collada+xml' => ['dae'], - 'model/vnd.dwf' => ['dwf'], - 'model/vnd.gdl' => ['gdl'], - 'model/vnd.gtw' => ['gtw'], - 'model/vnd.mts' => ['mts'], - 'model/vnd.opengex' => ['ogex'], - 'model/vnd.parasolid.transmit.binary' => ['x_b'], - 'model/vnd.parasolid.transmit.text' => ['x_t'], - 'model/vnd.pytha.pyox' => ['pyo', 'pyox'], - 'model/vnd.sap.vds' => ['vds'], - 'model/vnd.usda' => ['usda'], - 'model/vnd.usdz+zip' => ['usdz'], - 'model/vnd.valve.source.compiled-map' => ['bsp'], - 'model/vnd.vtu' => ['vtu'], - 'model/vrml' => ['wrl', 'vrml'], - 'model/x3d+binary' => ['x3db', 'x3dbz'], - 'model/x3d+fastinfoset' => ['x3db'], - 'model/x3d+vrml' => ['x3dv', 'x3dvz'], - 'model/x3d+xml' => ['x3d', 'x3dz'], - 'model/x3d-vrml' => ['x3dv'], - 'text/cache-manifest' => ['appcache', 'manifest'], - 'text/calendar' => ['ics', 'ifb'], - 'text/coffeescript' => ['coffee', 'litcoffee'], - 'text/css' => ['css'], - 'text/csv' => ['csv'], - 'text/html' => ['html', 'htm', 'shtml'], - 'text/jade' => ['jade'], - 'text/javascript' => ['js', 'mjs'], - 'text/jsx' => ['jsx'], - 'text/less' => ['less'], - 'text/markdown' => ['md', 'markdown'], - 'text/mathml' => ['mml'], - 'text/mdx' => ['mdx'], - 'text/n3' => ['n3'], - 'text/plain' => ['txt', 'text', 'conf', 'def', 'list', 'log', 'in', 'ini', 'm3u'], - 'text/prs.lines.tag' => ['dsc'], - 'text/richtext' => ['rtx'], - 'text/rtf' => ['rtf'], - 'text/sgml' => ['sgml', 'sgm'], - 'text/shex' => ['shex'], - 'text/slim' => ['slim', 'slm'], - 'text/spdx' => ['spdx'], - 'text/stylus' => ['stylus', 'styl'], - 'text/tab-separated-values' => ['tsv'], - 'text/troff' => ['t', 'tr', 'roff', 'man', 'me', 'ms'], - 'text/turtle' => ['ttl'], - 'text/uri-list' => ['uri', 'uris', 'urls'], - 'text/vcard' => ['vcard'], - 'text/vnd.curl' => ['curl'], - 'text/vnd.curl.dcurl' => ['dcurl'], - 'text/vnd.curl.mcurl' => ['mcurl'], - 'text/vnd.curl.scurl' => ['scurl'], - 'text/vnd.dvb.subtitle' => ['sub'], - 'text/vnd.familysearch.gedcom' => ['ged'], - 'text/vnd.fly' => ['fly'], - 'text/vnd.fmi.flexstor' => ['flx'], - 'text/vnd.graphviz' => ['gv'], - 'text/vnd.in3d.3dml' => ['3dml'], - 'text/vnd.in3d.spot' => ['spot'], - 'text/vnd.sun.j2me.app-descriptor' => ['jad'], - 'text/vnd.wap.wml' => ['wml'], - 'text/vnd.wap.wmlscript' => ['wmls'], - 'text/vtt' => ['vtt'], - 'text/wgsl' => ['wgsl'], - 'text/x-asm' => ['s', 'asm'], - 'text/x-c' => ['c', 'cc', 'cxx', 'cpp', 'h', 'hh', 'dic'], - 'text/x-component' => ['htc'], - 'text/x-fortran' => ['f', 'for', 'f77', 'f90'], - 'text/x-handlebars-template' => ['hbs'], - 'text/x-java-source' => ['java'], - 'text/x-lua' => ['lua'], - 'text/x-markdown' => ['mkd'], - 'text/x-nfo' => ['nfo'], - 'text/x-opml' => ['opml'], - 'text/x-org' => ['org'], - 'text/x-pascal' => ['p', 'pas'], - 'text/x-processing' => ['pde'], - 'text/x-sass' => ['sass'], - 'text/x-scss' => ['scss'], - 'text/x-setext' => ['etx'], - 'text/x-sfv' => ['sfv'], - 'text/x-suse-ymp' => ['ymp'], - 'text/x-uuencode' => ['uu'], - 'text/x-vcalendar' => ['vcs'], - 'text/x-vcard' => ['vcf'], - 'text/xml' => ['xml'], - 'text/yaml' => ['yaml', 'yml'], - 'video/3gpp' => ['3gp', '3gpp'], - 'video/3gpp2' => ['3g2'], - 'video/h261' => ['h261'], - 'video/h263' => ['h263'], - 'video/h264' => ['h264'], - 'video/iso.segment' => ['m4s'], - 'video/jpeg' => ['jpgv'], - 'video/jpm' => ['jpm', 'jpgm'], - 'video/mj2' => ['mj2', 'mjp2'], - 'video/mp2t' => ['ts', 'm2t', 'm2ts', 'mts'], - 'video/mp4' => ['mp4', 'mp4v', 'mpg4', 'f4v'], - 'video/mpeg' => ['mpeg', 'mpg', 'mpe', 'm1v', 'm2v'], - 'video/ogg' => ['ogv'], - 'video/quicktime' => ['qt', 'mov'], - 'video/vnd.dece.hd' => ['uvh', 'uvvh'], - 'video/vnd.dece.mobile' => ['uvm', 'uvvm'], - 'video/vnd.dece.pd' => ['uvp', 'uvvp'], - 'video/vnd.dece.sd' => ['uvs', 'uvvs'], - 'video/vnd.dece.video' => ['uvv', 'uvvv'], - 'video/vnd.dvb.file' => ['dvb'], - 'video/vnd.fvt' => ['fvt'], - 'video/vnd.mpegurl' => ['mxu', 'm4u'], - 'video/vnd.ms-playready.media.pyv' => ['pyv'], - 'video/vnd.uvvu.mp4' => ['uvu', 'uvvu'], - 'video/vnd.vivo' => ['viv'], - 'video/webm' => ['webm'], - 'video/x-f4v' => ['f4v'], - 'video/x-fli' => ['fli'], - 'video/x-flv' => ['flv'], - 'video/x-m4v' => ['m4v'], - 'video/x-matroska' => ['mkv', 'mk3d', 'mks'], - 'video/x-mng' => ['mng'], - 'video/x-ms-asf' => ['asf', 'asx'], - 'video/x-ms-vob' => ['vob'], - 'video/x-ms-wm' => ['wm'], - 'video/x-ms-wmv' => ['wmv'], - 'video/x-ms-wmx' => ['wmx'], - 'video/x-ms-wvx' => ['wvx'], - 'video/x-msvideo' => ['avi'], - 'video/x-sgi-movie' => ['movie'], - 'video/x-smv' => ['smv'], - 'x-conference/x-cooltalk' => ['ice'], - 'application/x-photoshop' => ['psd'], - 'application/smil' => ['smi', 'smil'], - 'application/powerpoint' => ['ppt'], - 'application/vnd.ms-powerpoint.addin.macroEnabled.12' => ['ppam'], - 'application/vnd.ms-powerpoint.presentation.macroEnabled.12' => ['pptm', 'potm'], - 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12' => ['ppsm'], - 'application/wbxml' => ['wbxml'], - 'application/wmlc' => ['wmlc'], - 'application/x-httpd-php-source' => ['phps'], - 'application/x-compress' => ['z'], - 'application/x-rar' => ['rar'], - 'video/vnd.rn-realvideo' => ['rv'], - 'application/vnd.ms-word.template.macroEnabled.12' => ['docm', 'dotm'], - 'application/vnd.ms-excel.sheet.macroEnabled.12' => ['xlsm'], - 'application/vnd.ms-excel.template.macroEnabled.12' => ['xltm'], - 'application/vnd.ms-excel.addin.macroEnabled.12' => ['xlam'], - 'application/vnd.ms-excel.sheet.binary.macroEnabled.12' => ['xlsb'], - 'application/excel' => ['xl'], - 'application/x-x509-user-cert' => ['pem'], - 'application/x-pkcs10' => ['p10'], - 'application/x-pkcs7-signature' => ['p7a'], - 'application/pgp' => ['pgp'], - 'application/gpg-keys' => ['gpg'], - 'application/x-pkcs7' => ['rsa'], - 'video/3gp' => ['3gp'], - 'audio/acc' => ['aac'], - 'application/vnd.mpegurl' => ['m4u'], - 'application/videolan' => ['vlc'], - 'audio/x-au' => ['au'], - 'audio/ac3' => ['ac3'], - 'text/x-scriptzsh' => ['zsh'], - 'application/cdr' => ['cdr'], - 'application/STEP' => ['step', 'stp'], - 'application/x-ndjson' => ['ndjson'], - 'application/braille' => ['brf'], - ]; - - public function lookupMimeType(string $extension): ?string - { - return self::MIME_TYPES_FOR_EXTENSIONS[$extension] ?? null; - } - - public function lookupExtension(string $mimetype): ?string - { - return self::EXTENSIONS_FOR_MIME_TIMES[$mimetype][0] ?? null; - } - - /** - * @return string[] - */ - public function lookupAllExtensions(string $mimetype): array - { - return self::EXTENSIONS_FOR_MIME_TIMES[$mimetype] ?? []; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/CHANGELOG.md b/docker/streamline-src/vendor/mockery/mockery/CHANGELOG.md deleted file mode 100644 index 2180be21..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/CHANGELOG.md +++ /dev/null @@ -1,419 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [Unreleased] - -## [1.6.12] - 2024-05-15 - -### Changed - -- [1420: Update `psalm-baseline.xml` ](https://github.com/mockery/mockery/pull/1420) -- [1419: Update e2e-test.sh](https://github.com/mockery/mockery/pull/1419) -- [1413: Upgrade `phar` tools and `phive.xml` configuration](https://github.com/mockery/mockery/pull/1413) - -### Fixed - -- [1415: Fix mocking anonymous classes](https://github.com/mockery/mockery/pull/1415) -- [1411: Mocking final classes reports unresolvable type by PHPStan](https://github.com/mockery/mockery/issues/1411) -- [1410: Fix PHP Doc Comments](https://github.com/mockery/mockery/pull/1410) - -### Security - -- [1417: Bump `Jinja2` from `3.1.3` to `3.1.4` fix CVE-2024-34064](https://github.com/mockery/mockery/pull/1417) -- [1412: Bump `idna` from `3.6` to `3.7` fix CVE-2024-3651](https://github.com/mockery/mockery/pull/1412) - -## [1.6.11] - 2024-03-21 - -### Fixed - -- [1407: Fix constants map generics doc comments](https://github.com/mockery/mockery/pull/1407) -- [1406: Fix reserved words used to name a class, interface or trait](https://github.com/mockery/mockery/pull/1406) -- [1403: Fix regression - partial construction with trait methods](https://github.com/mockery/mockery/pull/1403) -- [1401: Improve `Mockery::mock()` parameter type compatibility with array typehints](https://github.com/mockery/mockery/pull/1401) - -## [1.6.10] - 2024-03-19 - -### Added - -- [1398: [PHP 8.4] Fixes for implicit nullability deprecation](https://github.com/mockery/mockery/pull/1398) - -### Fixed - -- [1397: Fix mock method $args parameter type](https://github.com/mockery/mockery/pull/1397) -- [1396: Fix `1.6.8` release](https://github.com/mockery/mockery/pull/1396) - -## [1.6.9] - 2024-03-12 - -- [1394: Revert v1.6.8 release](https://github.com/mockery/mockery/pull/1394) - -## [1.6.8] - 2024-03-12 - -- [1393: Changelog v1.6.8](https://github.com/mockery/mockery/pull/1393) -- [1392: Refactor remaining codebase](https://github.com/mockery/mockery/pull/1392) -- [1391: Update actions to use Node 20](https://github.com/mockery/mockery/pull/1391) -- [1390: Update `ReadTheDocs` dependencies](https://github.com/mockery/mockery/pull/1390) -- [1389: Refactor `library/Mockery/Matcher/*`](https://github.com/mockery/mockery/pull/1389) -- [1388: Refactor `library/Mockery/Loader/*`](https://github.com/mockery/mockery/pull/1388) -- [1387: Refactor `library/Mockery/CountValidator/*`](https://github.com/mockery/mockery/pull/1387) -- [1386: Add PHPUnit 10+ attributes](https://github.com/mockery/mockery/pull/1386) -- [1385: Update composer dependencies and clean up](https://github.com/mockery/mockery/pull/1385) -- [1384: Update `psalm-baseline.xml`](https://github.com/mockery/mockery/pull/1384) -- [1383: Refactor `library/helpers.php`](https://github.com/mockery/mockery/pull/1383) -- [1382: Refactor `library/Mockery/VerificationExpectation.php`](https://github.com/mockery/mockery/pull/1382) -- [1381: Refactor `library/Mockery/VerificationDirector.php`](https://github.com/mockery/mockery/pull/1381) -- [1380: Refactor `library/Mockery/QuickDefinitionsConfiguration.php`](https://github.com/mockery/mockery/pull/1380) -- [1379: Refactor `library/Mockery/Undefined.php`](https://github.com/mockery/mockery/pull/1379) -- [1378: Refactor `library/Mockery/Reflector.php`](https://github.com/mockery/mockery/pull/1378) -- [1377: Refactor `library/Mockery/ReceivedMethodCalls.php`](https://github.com/mockery/mockery/pull/1377) -- [1376: Refactor `library/Mockery.php`](https://github.com/mockery/mockery/pull/1376) -- [1375: Refactor `library/Mockery/MockInterface.php`](https://github.com/mockery/mockery/pull/1375) -- [1374: Refactor `library/Mockery/MethodCall.php`](https://github.com/mockery/mockery/pull/1374) -- [1373: Refactor `library/Mockery/LegacyMockInterface.php`](https://github.com/mockery/mockery/pull/1373) -- [1372: Refactor `library/Mockery/Instantiator.php`](https://github.com/mockery/mockery/pull/1372) -- [1371: Refactor `library/Mockery/HigherOrderMessage.php`](https://github.com/mockery/mockery/pull/1371) -- [1370: Refactor `library/Mockery/ExpectsHigherOrderMessage.php`](https://github.com/mockery/mockery/pull/1370) -- [1369: Refactor `library/Mockery/ExpectationInterface.php`](https://github.com/mockery/mockery/pull/1369) -- [1368: Refactor `library/Mockery/ExpectationDirector.php`](https://github.com/mockery/mockery/pull/1368) -- [1367: Refactor `library/Mockery/Expectation.php`](https://github.com/mockery/mockery/pull/1367) -- [1366: Refactor `library/Mockery/Exception.php`](https://github.com/mockery/mockery/pull/1366) -- [1365: Refactor `library/Mockery/Container.php`](https://github.com/mockery/mockery/pull/1365) -- [1364: Refactor `library/Mockery/Configuration.php`](https://github.com/mockery/mockery/pull/1364) -- [1363: Refactor `library/Mockery/CompositeExpectation.php`](https://github.com/mockery/mockery/pull/1363) -- [1362: Refactor `library/Mockery/ClosureWrapper.php`](https://github.com/mockery/mockery/pull/1362) -- [1361: Refactor `library/Mockery.php`](https://github.com/mockery/mockery/pull/1361) -- [1360: Refactor Container](https://github.com/mockery/mockery/pull/1360) -- [1355: Fix the namespace in the SubsetTest class](https://github.com/mockery/mockery/pull/1355) -- [1354: Add array-like objects support to hasKey/hasValue matchers](https://github.com/mockery/mockery/pull/1354) - -## [1.6.7] - 2023-12-09 - -### Added - -- [#1338: Support PHPUnit constraints as matchers](https://github.com/mockery/mockery/pull/1338) -- [#1336: Add factory methods for `IsEqual` and `IsSame` matchers](https://github.com/mockery/mockery/pull/1336) - -### Fixed - -- [#1346: Fix test namespaces](https://github.com/mockery/mockery/pull/1346) -- [#1343: Update documentation default theme and build version](https://github.com/mockery/mockery/pull/1343) -- [#1329: Prevent `shouldNotReceive` from getting overridden by invocation count methods](https://github.com/mockery/mockery/pull/1329) - -### Changed - -- [#1351: Update psalm-baseline.xml](https://github.com/mockery/mockery/pull/1351) -- [#1350: Changelog v1.6.7](https://github.com/mockery/mockery/pull/1350) -- [#1349: Cleanup](https://github.com/mockery/mockery/pull/1349) -- [#1348: Update makefile](https://github.com/mockery/mockery/pull/1348) -- [#1347: Bump phars dependencies](https://github.com/mockery/mockery/pull/1347) -- [#1344: Disabled travis-ci and sensiolabs webhooks](https://github.com/mockery/mockery/issues/1344) -- [#1342: Add `.readthedocs.yml` configuration](https://github.com/mockery/mockery/pull/1342) -- [#1340: docs: Remove misplaced semicolumn from code snippet](https://github.com/mockery/mockery/pull/1340) - -## 1.6.6 (2023-08-08) - -- [#1327: Changelog v1.6.6](https://github.com/mockery/mockery/pull/1327) -- [#1325: Keep the file that caused an error for inspection](https://github.com/mockery/mockery/pull/1325) -- [#1324: Fix Regression - Replace `+` Array Union Operator with `array_merge`](https://github.com/mockery/mockery/pull/1324) - -## 1.6.5 (2023-08-05) - -- [#1322: Changelog v1.6.5](https://github.com/mockery/mockery/pull/1322) -- [#1321: Autoload Test Fixtures Based on PHP Runtime Version](https://github.com/mockery/mockery/pull/1321) -- [#1320: Clean up mocks on destruct](https://github.com/mockery/mockery/pull/1320) -- [#1318: Fix misspelling in docs](https://github.com/mockery/mockery/pull/1318) -- [#1316: Fix compatibility issues with PHP 7.3](https://github.com/mockery/mockery/pull/1316) -- [#1315: Fix PHP 7.3 issues](https://github.com/mockery/mockery/issues/1315) -- [#1314: Add Security Policy](https://github.com/mockery/mockery/pull/1314) -- [#1313: Type declaration for `iterable|object`.](https://github.com/mockery/mockery/pull/1313) -- [#1312: Mock disjunctive normal form types](https://github.com/mockery/mockery/pull/1312) -- [#1299: Test PHP `8.3` language features](https://github.com/mockery/mockery/pull/1299) - -## 1.6.4 (2023-07-19) - -- [#1308: Changelog v1.6.4](https://github.com/mockery/mockery/pull/1308) -- [#1307: Revert `src` to `library` for `1.6.x`](https://github.com/mockery/mockery/pull/1307) - -## 1.6.3 (2023-07-18) - -- [#1304: Remove `extra.branch-alias` and update composer information](https://github.com/mockery/mockery/pull/1304) -- [#1303: Update `.gitattributes`](https://github.com/mockery/mockery/pull/1303) -- [#1302: Changelog v1.6.3](https://github.com/mockery/mockery/pull/1302) -- [#1301: Fix mocking classes with `new` initializers in method and attribute params on PHP 8.1](https://github.com/mockery/mockery/pull/1301) -- [#1298: Update default repository branch to latest release branch](https://github.com/mockery/mockery/issues/1298) -- [#1297: Update `Makefile` for contributors](https://github.com/mockery/mockery/pull/1297) -- [#1294: Correct return types of Mock for phpstan](https://github.com/mockery/mockery/pull/1294) -- [#1290: Rename directory `library` to `src`](https://github.com/mockery/mockery/pull/1290) -- [#1288: Update codecov workflow](https://github.com/mockery/mockery/pull/1288) -- [#1287: Update psalm configuration and workflow](https://github.com/mockery/mockery/pull/1287) -- [#1286: Update phpunit workflow](https://github.com/mockery/mockery/pull/1286) -- [#1285: Enforce the minimum required PHP version](https://github.com/mockery/mockery/pull/1285) -- [#1283: Update license and copyright information](https://github.com/mockery/mockery/pull/1283) -- [#1282: Create `COPYRIGHT.md` file](https://github.com/mockery/mockery/pull/1282) -- [#1279: Bump `vimeo/psalm` from `5.9.0` to `5.12.0`](https://github.com/mockery/mockery/pull/1279) - -## 1.6.2 (2023-06-07) - -- [#1276: Add `IsEqual` Argument Matcher](https://github.com/mockery/mockery/pull/1276) -- [#1275: Add `IsSame` Argument Matcher](https://github.com/mockery/mockery/pull/1275) -- [#1274: Update composer branch alias](https://github.com/mockery/mockery/pull/1274) -- [#1271: Support PHP 8.2 `true` Literal Type](https://github.com/mockery/mockery/pull/1271) -- [#1270: Support PHP 8.0 `false` Literal Type](https://github.com/mockery/mockery/pull/1270) - -## 1.6.1 (2023-06-05) - -- [#1267 Drops support for PHP <7.4](https://github.com/mockery/mockery/pull/1267) -- [#1192 Updated changelog for version 1.5.1 to include changes from #1180](https://github.com/mockery/mockery/pull/1192) -- [#1196 Update example in README.md](https://github.com/mockery/mockery/pull/1196) -- [#1199 Fix function parameter default enum value](https://github.com/mockery/mockery/pull/1199) -- [#1205 Deal with null type in PHP8.2](https://github.com/mockery/mockery/pull/1205) -- [#1208 Import MockeryTestCase fully qualified class name](https://github.com/mockery/mockery/pull/1208) -- [#1210 Add support for target class attributes](https://github.com/mockery/mockery/pull/1210) -- [#1212 docs: Add missing comma](https://github.com/mockery/mockery/pull/1212) -- [#1216 Fixes code generation for intersection types](https://github.com/mockery/mockery/pull/1216) -- [#1217 Add MockeryExceptionInterface](https://github.com/mockery/mockery/pull/1217) -- [#1218 tidy: avoids require](https://github.com/mockery/mockery/pull/1218) -- [#1222 Add .editorconfig](https://github.com/mockery/mockery/pull/1222) -- [#1225 Switch to PSR-4 autoload](https://github.com/mockery/mockery/pull/1225) -- [#1226 Refactoring risky tests](https://github.com/mockery/mockery/pull/1226) -- [#1230 Add vimeo/psalm and psalm/plugin-phpunit](https://github.com/mockery/mockery/pull/1230) -- [#1232 Split PHPUnit TestSuites for PHP 8.2](https://github.com/mockery/mockery/pull/1232) -- [#1233 Bump actions/checkout to v3](https://github.com/mockery/mockery/pull/1233) -- [#1234 Bump nick-invision/retry to v2](https://github.com/mockery/mockery/pull/1234) -- [#1235 Setup Codecov for code coverage](https://github.com/mockery/mockery/pull/1235) -- [#1236 Add Psalm CI Check](https://github.com/mockery/mockery/pull/1236) -- [#1237 Unignore composer.lock file](https://github.com/mockery/mockery/pull/1237) -- [#1239 Prevent CI run duplication](https://github.com/mockery/mockery/pull/1239) -- [#1241 Add PHPUnit workflow for PHP 8.3](https://github.com/mockery/mockery/pull/1241) -- [#1244 Improve ClassAttributesPass for Dynamic Properties](https://github.com/mockery/mockery/pull/1244) -- [#1245 Deprecate hamcrest/hamcrest-php package](https://github.com/mockery/mockery/pull/1245) -- [#1246 Add BUG_REPORT.yml Issue template](https://github.com/mockery/mockery/pull/1246) -- [#1250 Deprecate PHP <=8.0](https://github.com/mockery/mockery/issues/1250) -- [#1253 Prevent array to string conversion when serialising a Subset matcher](https://github.com/mockery/mockery/issues/1253) - -## 1.6.0 (2023-06-05) [DELETED] - -This tag was deleted due to a mistake with the composer.json PHP version -constraint, see [#1266](https://github.com/mockery/mockery/issues/1266) - -## 1.3.6 (2022-09-07) - -- PHP 8.2 | Fix "Use of "parent" in callables is deprecated" notice #1169 - -## 1.5.1 (2022-09-07) - -- [PHP 8.2] Various tests: explicitly declare properties #1170 -- [PHP 8.2] Fix "Use of "parent" in callables is deprecated" notice #1169 -- [PHP 8.1] Support intersection types #1164 -- Handle final `__toString` methods #1162 -- Only count assertions on expectations which can fail a test #1180 - -## 1.5.0 (2022-01-20) - -- Override default call count expectations via expects() #1146 -- Mock methods with static return types #1157 -- Mock methods with mixed return type #1156 -- Mock classes with new in initializers on PHP 8.1 #1160 -- Removes redundant PHPUnitConstraint #1158 - -## 1.4.4 (2021-09-13) - -- Fixes auto-generated return values #1144 -- Adds support for tentative types #1130 -- Fixes for PHP 8.1 Support (#1130 and #1140) -- Add method that allows defining a set of arguments the mock should yield #1133 -- Added option to configure default matchers for objects `\Mockery::getConfiguration()->setDefaultMatcher($class, $matcherClass)` #1120 - -## 1.3.5 (2021-09-13) - -- Fix auto-generated return values with union types #1143 -- Adds support for tentative types #1130 -- Fixes for PHP 8.1 Support (#1130 and #1140) -- Add method that allows defining a set of arguments the mock should yield #1133 -- Added option to configure default matchers for objects `\Mockery::getConfiguration()->setDefaultMatcher($class, $matcherClass)` #1120 - -## 1.4.3 (2021-02-24) - -- Fixes calls to fetchMock before initialisation #1113 -- Allow shouldIgnoreMissing() to behave in a recursive fashion #1097 -- Custom object formatters #766 (Needs Docs) -- Fix crash on a union type including null #1106 - -## 1.3.4 (2021-02-24) - -- Fixes calls to fetchMock before initialisation #1113 -- Fix crash on a union type including null #1106 - -## 1.4.2 (2020-08-11) - -- Fix array to string conversion in ConstantsPass (#1086) -- Fixed nullable PHP 8.0 union types (#1088, #1089) -- Fixed support for PHP 8.0 parent type (#1088, #1089) -- Fixed PHP 8.0 mixed type support (#1088, #1089) -- Fixed PHP 8.0 union return types (#1088, #1089) - -## 1.4.1 (2020-07-09) - -- Allow quick definitions to use 'at least once' expectation - `\Mockery::getConfiguration()->getQuickDefinitions()->shouldBeCalledAtLeastOnce(true)` (#1056) -- Added provisional support for PHP 8.0 (#1068, #1072,#1079) -- Fix mocking methods with iterable return type without specifying a return value (#1075) - -## 1.3.3 (2020-08-11) - -- Fix array to string conversion in ConstantsPass (#1086) -- Fixed nullable PHP 8.0 union types (#1088) -- Fixed support for PHP 8.0 parent type (#1088) -- Fixed PHP 8.0 mixed type support (#1088) -- Fixed PHP 8.0 union return types (#1088) - -## 1.3.2 (2020-07-09) - -- Fix mocking with anonymous classes (#1039) -- Fix andAnyOthers() to properly match earlier expectations (#1051) -- Added provisional support for PHP 8.0 (#1068, #1072,#1079) -- Fix mocking methods with iterable return type without specifying a return value (#1075) - -## 1.4.0 (2020-05-19) - -- Fix mocking with anonymous classes (#1039) -- Fix andAnyOthers() to properly match earlier expectations (#1051) -- Drops support for PHP < 7.3 and PHPUnit < 8 (#1059) - -## 1.3.1 (2019-12-26) - -- Revert improved exception debugging due to BC breaks (#1032) - -## 1.3.0 (2019-11-24) - -- Added capture `Mockery::capture` convenience matcher (#1020) -- Added `andReturnArg` to echo back an argument passed to a an expectation (#992) -- Improved exception debugging (#1000) -- Fixed `andSet` to not reuse properties between mock objects (#1012) - -## 1.2.4 (2019-09-30) - -- Fix a bug introduced with previous release, for empty method definition lists (#1009) - -## 1.2.3 (2019-08-07) - -- Allow mocking classes that have allows and expects methods (#868) -- Allow passing thru __call method in all mock types (experimental) (#969) -- Add support for `!` to blacklist methods (#959) -- Added `withSomeOfArgs` to partial match a list of args (#967) -- Fix chained demeter calls with type hint (#956) - -## 1.2.2 (2019-02-13) - -- Fix a BC breaking change for PHP 5.6/PHPUnit 5.7.27 (#947) - -## 1.2.1 (2019-02-07) - -- Support for PHPUnit 8 (#942) -- Allow mocking static methods called on instance (#938) - -## 1.2.0 (2018-10-02) - -- Starts counting default expectations towards count (#910) -- Adds workaround for some HHVM return types (#909) -- Adds PhpStorm metadata support for autocomplete etc (#904) -- Further attempts to support multiple PHPUnit versions (#903) -- Allows setting constructor expectations on instance mocks (#900) -- Adds workaround for HHVM memoization decorator (#893) -- Adds experimental support for callable spys (#712) - -## 1.1.0 (2018-05-08) - -- Allows use of string method names in allows and expects (#794) -- Finalises allows and expects syntax in API (#799) -- Search for handlers in a case instensitive way (#801) -- Deprecate allowMockingMethodsUnnecessarily (#808) -- Fix risky tests (#769) -- Fix namespace in TestListener (#812) -- Fixed conflicting mock names (#813) -- Clean elses (#819) -- Updated protected method mocking exception message (#826) -- Map of constants to mock (#829) -- Simplify foreach with `in_array` function (#830) -- Typehinted return value on Expectation#verify. (#832) -- Fix shouldNotHaveReceived with HigherOrderMessage (#842) -- Deprecates shouldDeferMissing (#839) -- Adds support for return type hints in Demeter chains (#848) -- Adds shouldNotReceive to composite expectation (#847) -- Fix internal error when using --static-backup (#845) -- Adds `andAnyOtherArgs` as an optional argument matcher (#860) -- Fixes namespace qualifying with namespaced named mocks (#872) -- Added possibility to add Constructor-Expections on hard dependencies, read: Mockery::mock('overload:...') (#781) - -## 1.0.0 (2017-09-06) - -- Destructors (`__destruct`) are stubbed out where it makes sense -- Allow passing a closure argument to `withArgs()` to validate multiple arguments at once. -- `Mockery\Adapter\Phpunit\TestListener` has been rewritten because it - incorrectly marked some tests as risky. It will no longer verify mock - expectations but instead check that tests do that themselves. PHPUnit 6 is - required if you want to use this fail safe. -- Removes SPL Class Loader -- Removed object recorder feature -- Bumped minimum PHP version to 5.6 -- `andThrow` will now throw anything `\Throwable` -- Adds `allows` and `expects` syntax -- Adds optional global helpers for `mock`, `namedMock` and `spy` -- Adds ability to create objects using traits -- `Mockery\Matcher\MustBe` was deprecated -- Marked `Mockery\MockInterface` as internal -- Subset matcher matches recursively -- BC BREAK - Spies return `null` by default from ignored (non-mocked) methods with nullable return type -- Removed extracting getter methods of object instances -- BC BREAK - Remove implicit regex matching when trying to match string arguments, introduce `\Mockery::pattern()` when regex matching is needed -- Fix Mockery not getting closed in cases of failing test cases -- Fix Mockery not setting properties on overloaded instance mocks -- BC BREAK - Fix Mockery not trying default expectations if there is any concrete expectation -- BC BREAK - Mockery's PHPUnit integration will mark a test as risky if it - thinks one it's exceptions has been swallowed in PHPUnit > 5.7.6. Use `$e->dismiss()` to dismiss. - -## 0.9.4 (XXXX-XX-XX) - -- `shouldIgnoreMissing` will respect global `allowMockingNonExistentMethods` - config -- Some support for variadic parameters -- Hamcrest is now a required dependency -- Instance mocks now respect `shouldIgnoreMissing` call on control instance -- This will be the *last version to support PHP 5.3* -- Added `Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration` trait -- Added `makePartial` to `Mockery\MockInterface` as it was missing - -## 0.9.3 (2014-12-22) - -- Added a basic spy implementation -- Added `Mockery\Adapter\Phpunit\MockeryTestCase` for more reliable PHPUnit - integration - -## 0.9.2 (2014-09-03) - -- Some workarounds for the serialisation problems created by changes to PHP in 5.5.13, 5.4.29, - 5.6. -- Demeter chains attempt to reuse doubles as they see fit, so for foo->bar and - foo->baz, we'll attempt to use the same foo - -## 0.9.1 (2014-05-02) - -- Allow specifying consecutive exceptions to be thrown with `andThrowExceptions` -- Allow specifying methods which can be mocked when using - `Mockery\Configuration::allowMockingNonExistentMethods(false)` with - `Mockery\MockInterface::shouldAllowMockingMethod($methodName)` -- Added andReturnSelf method: `$mock->shouldReceive("foo")->andReturnSelf()` -- `shouldIgnoreMissing` now takes an optional value that will be return instead - of null, e.g. `$mock->shouldIgnoreMissing($mock)` - -## 0.9.0 (2014-02-05) - -- Allow mocking classes with final __wakeup() method -- Quick definitions are now always `byDefault` -- Allow mocking of protected methods with `shouldAllowMockingProtectedMethods` -- Support official Hamcrest package -- Generator completely rewritten -- Easily create named mocks with namedMock diff --git a/docker/streamline-src/vendor/mockery/mockery/composer.json b/docker/streamline-src/vendor/mockery/mockery/composer.json deleted file mode 100644 index 6f03cf2d..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/composer.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "name": "mockery/mockery", - "description": "Mockery is a simple yet flexible PHP mock object framework", - "license": "BSD-3-Clause", - "type": "library", - "keywords": [ - "bdd", - "library", - "mock", - "mock objects", - "mockery", - "stub", - "tdd", - "test", - "test double", - "testing" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "https://github.com/padraic", - "role": "Author" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "https://davedevelopment.co.uk", - "role": "Developer" - }, - { - "name": "Nathanael Esayeas", - "email": "nathanael.esayeas@protonmail.com", - "homepage": "https://github.com/ghostwriter", - "role": "Lead Developer" - } - ], - "homepage": "https://github.com/mockery/mockery", - "support": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery", - "docs": "https://docs.mockery.io/", - "rss": "https://github.com/mockery/mockery/releases.atom", - "security": "https://github.com/mockery/mockery/security/advisories" - }, - "require": { - "php": ">=7.3", - "lib-pcre": ">=7.0", - "hamcrest/hamcrest-php": "^2.0.1" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.6.17", - "symplify/easy-coding-standard": "^12.1.14" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "autoload": { - "psr-4": { - "Mockery\\": "library/Mockery" - }, - "files": [ - "library/helpers.php", - "library/Mockery.php" - ] - }, - "autoload-dev": { - "psr-4": { - "Fixture\\": "tests/Fixture/", - "Mockery\\Tests\\Unit\\": "tests/Unit", - "test\\": "tests/" - }, - "files": [ - "fixtures/autoload.php", - "vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest.php" - ] - }, - "config": { - "optimize-autoloader": true, - "platform": { - "php": "7.3.999" - }, - "preferred-install": "dist", - "sort-packages": true - }, - "scripts": { - "check": [ - "@composer validate", - "@ecs", - "@test" - ], - "docs": "vendor/bin/phpdoc -d library -t docs/api", - "ecs": [ - "@ecs:fix", - "@ecs:check" - ], - "ecs:check": "ecs check --clear-cache || true", - "ecs:fix": "ecs check --clear-cache --fix", - "phive": [ - "tools/phive update --force-accept-unsigned", - "tools/phive purge" - ], - "phpunit": "vendor/bin/phpunit --do-not-cache-result --colors=always", - "phpunit:coverage": "@phpunit --coverage-clover=coverage.xml", - "psalm": "tools/psalm --no-cache --show-info=true", - "psalm:alter": "tools/psalm --no-cache --alter --allow-backwards-incompatible-changes=false --safe-types", - "psalm:baseline": "@psalm --no-diff --set-baseline=psalm-baseline.xml", - "psalm:dry-run": "@psalm:alter --issues=all --dry-run", - "psalm:fix": "@psalm:alter --issues=UnnecessaryVarAnnotation,MissingPureAnnotation,MissingImmutableAnnotation", - "psalm:security": "@psalm --no-diff --taint-analysis", - "psalm:shepherd": "@psalm --no-diff --shepherd --stats --output-format=github", - "test": [ - "@phpunit --stop-on-defect", - "@psalm", - "@psalm:security", - "@psalm:dry-run" - ] - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/composer.lock b/docker/streamline-src/vendor/mockery/mockery/composer.lock deleted file mode 100644 index 603f9697..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/composer.lock +++ /dev/null @@ -1,1867 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "e70f68192a56a148f93ad7a1c0779be3", - "packages": [ - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b", - "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9 || ^11", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.16 || ^1", - "phpstan/phpstan": "^1.4", - "phpstan/phpstan-phpunit": "^1", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.30 || ^5.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.5.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2022-12-30T00:15:36+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.11.1", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "conflict": { - "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3,<3.2.2" - }, - "require-dev": { - "doctrine/collections": "^1.6.8", - "doctrine/common": "^2.13.3 || ^3.2.2", - "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" - }, - "type": "library", - "autoload": { - "files": [ - "src/DeepCopy/deep_copy.php" - ], - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2023-03-08T13:26:56+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.18.0", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bcbb2179f97633e98bbbc87044ee2611c7d7999", - "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=7.0" - }, - "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" - }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.9-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.18.0" - }, - "time": "2023-12-10T21:03:43+00:00" - }, - { - "name": "phar-io/manifest", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-phar": "*", - "ext-xmlwriter": "*", - "phar-io/version": "^3.0.1", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "support": { - "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.3" - }, - "time": "2021-07-20T11:28:43+00:00" - }, - { - "name": "phar-io/version", - "version": "3.2.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Library for handling version information and constraints", - "support": { - "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.2.1" - }, - "time": "2022-02-21T01:04:05+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.30", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "ca2bd87d2f9215904682a9cb9bb37dda98e76089" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ca2bd87d2f9215904682a9cb9bb37dda98e76089", - "reference": "ca2bd87d2f9215904682a9cb9bb37dda98e76089", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "PHP extension that provides line coverage", - "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.2-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.30" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-12-22T06:47:57+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Invoke callables with a timeout", - "homepage": "https://github.com/sebastianbergmann/php-invoker/", - "keywords": [ - "process" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.6.17", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "1a156980d78a6666721b7e8e8502fe210b587fcd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1a156980d78a6666721b7e8e8502fe210b587fcd", - "reference": "1a156980d78a6666721b7e8e8502fe210b587fcd", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1 || ^2", - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.3", - "phar-io/version": "^3.0.2", - "php": ">=7.3", - "phpunit/php-code-coverage": "^9.2.28", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.8", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.5", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^3.2", - "sebastian/version": "^3.0.2" - }, - "suggest": { - "ext-soap": "To be able to generate mocks based on WSDL files", - "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.6-dev" - } - }, - "autoload": { - "files": [ - "src/Framework/Assert/Functions.php" - ], - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.17" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", - "type": "tidelift" - } - ], - "time": "2024-02-23T13:14:51+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for parsing CLI options", - "homepage": "https://github.com/sebastianbergmann/cli-parser", - "support": { - "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the PHP code units", - "homepage": "https://github.com/sebastianbergmann/code-unit", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-09-14T12:41:17+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a", - "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-12-22T06:19:30+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131", - "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-05-07T05:35:17+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", - "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:03:51+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", - "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "https://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-09-14T06:03:37+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bde739e7565280bda77be70044ac1047bc007e34" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bde739e7565280bda77be70044ac1047bc007e34", - "reference": "bde739e7565280bda77be70044ac1047bc007e34", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-08-02T09:26:13+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5", - "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for counting the lines of code in PHP source code", - "homepage": "https://github.com/sebastianbergmann/lines-of-code", - "support": { - "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-12-22T06:20:34+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "https://github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:07:39+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "3.2.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", - "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the types of the PHP type system", - "homepage": "https://github.com/sebastianbergmann/type", - "support": { - "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:13:03+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "support": { - "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "symplify/easy-coding-standard", - "version": "12.1.14", - "source": { - "type": "git", - "url": "https://github.com/easy-coding-standard/easy-coding-standard.git", - "reference": "e3c4a241ee36704f7cf920d5931f39693e64afd5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/e3c4a241ee36704f7cf920d5931f39693e64afd5", - "reference": "e3c4a241ee36704f7cf920d5931f39693e64afd5", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "conflict": { - "friendsofphp/php-cs-fixer": "<3.46", - "phpcsstandards/php_codesniffer": "<3.8", - "symplify/coding-standard": "<12.1" - }, - "bin": [ - "bin/ecs" - ], - "type": "library", - "autoload": { - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Use Coding Standard with 0-knowledge of PHP-CS-Fixer and PHP_CodeSniffer", - "keywords": [ - "Code style", - "automation", - "fixer", - "static analysis" - ], - "support": { - "issues": "https://github.com/easy-coding-standard/easy-coding-standard/issues", - "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.1.14" - }, - "funding": [ - { - "url": "https://www.paypal.me/rectorphp", - "type": "custom" - }, - { - "url": "https://github.com/tomasvotruba", - "type": "github" - } - ], - "time": "2024-02-23T13:10:40+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96", - "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2023-11-20T00:12:19+00:00" - } - ], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": [], - "prefer-stable": false, - "prefer-lowest": false, - "platform": { - "php": ">=7.3", - "lib-pcre": ">=7.0" - }, - "platform-dev": [], - "platform-overrides": { - "php": "7.3.999" - }, - "plugin-api-version": "2.6.0" -} diff --git a/docker/streamline-src/vendor/mockery/mockery/docs/conf.py b/docker/streamline-src/vendor/mockery/mockery/docs/conf.py deleted file mode 100644 index d0f69600..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/docs/conf.py +++ /dev/null @@ -1,268 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Mockery Docs documentation build configuration file, created by -# sphinx-quickstart on Mon Mar 3 14:04:26 2014. -# -# This file is execfile()d with the current directory set to its -# containing dir. -# -# Note that not all possible configuration values are present in this -# autogenerated file. -# -# All configuration values have a default; values that are commented out -# serve to show the default. - -import sys -import os - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -#sys.path.insert(0, os.path.abspath('.')) - -# -- General configuration ------------------------------------------------ - -# If your documentation needs a minimal Sphinx version, state it here. -#needs_sphinx = '1.0' - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = [ - 'sphinx.ext.todo', - 'sphinx_rtd_theme', -] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix of source filenames. -source_suffix = '.rst' - -# The encoding of source files. -#source_encoding = 'utf-8-sig' - -# The master toctree document. -master_doc = 'index' - -# General information about the project. -project = u'Mockery Docs' -copyright = u'Pádraic Brady, Dave Marshall and contributors' - -# The version info for the project you're documenting, acts as replacement for -# |version| and |release|, also used in various other places throughout the -# built documents. -# -# The short X.Y version. -version = '1.6' -# The full version, including alpha/beta/rc tags. -release = '1.6.x' - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -#language = None - -# There are two options for replacing |today|: either, you set today to some -# non-false value, then it is used: -#today = '' -# Else, today_fmt is used as the format for a strftime call. -#today_fmt = '%B %d, %Y' - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -exclude_patterns = ['_build'] - -# The reST default role (used for this markup: `text`) to use for all -# documents. -#default_role = None - -# If true, '()' will be appended to :func: etc. cross-reference text. -#add_function_parentheses = True - -# If true, the current module name will be prepended to all description -# unit titles (such as .. function::). -#add_module_names = True - -# If true, sectionauthor and moduleauthor directives will be shown in the -# output. They are ignored by default. -#show_authors = False - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' - -# A list of ignored prefixes for module index sorting. -#modindex_common_prefix = [] - -# If true, keep warnings as "system message" paragraphs in the built documents. -#keep_warnings = False - - -# -- Options for HTML output ---------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -html_theme = 'sphinx_rtd_theme' - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -#html_theme_options = {} - -# Add any paths that contain custom themes here, relative to this directory. -#html_theme_path = [] - -# The name of an image file (within the static path) to use as favicon of the -# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 -# pixels large. -#html_favicon = None - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] - -# Add any extra paths that contain custom files (such as robots.txt or -# .htaccess) here, relative to this directory. These files are copied -# directly to the root of the documentation. -#html_extra_path = [] - -# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, -# using the given strftime format. -#html_last_updated_fmt = '%b %d, %Y' - -# If true, SmartyPants will be used to convert quotes and dashes to -# typographically correct entities. -#html_use_smartypants = True - -# Custom sidebar templates, maps document names to template names. -#html_sidebars = {} - -# Additional templates that should be rendered to pages, maps page names to -# template names. -#html_additional_pages = {} - -# If false, no module index is generated. -#html_domain_indices = True - -# If false, no index is generated. -#html_use_index = True - -# If true, the index is split into individual pages for each letter. -#html_split_index = False - -# If true, links to the reST sources are added to the pages. -#html_show_sourcelink = True - -# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. -#html_show_sphinx = True - -# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. -#html_show_copyright = True - -# If true, an OpenSearch description file will be output, and all pages will -# contain a tag referring to it. The value of this option must be the -# base URL from which the finished HTML is served. -#html_use_opensearch = '' - -# This is the file name suffix for HTML files (e.g. ".xhtml"). -#html_file_suffix = None - -# Output file base name for HTML help builder. -htmlhelp_basename = 'MockeryDocsdoc' - - -# -- Options for LaTeX output --------------------------------------------- - -latex_elements = { -# The paper size ('letterpaper' or 'a4paper'). -#'papersize': 'letterpaper', - -# The font size ('10pt', '11pt' or '12pt'). -#'pointsize': '10pt', - -# Additional stuff for the LaTeX preamble. -#'preamble': '', -} - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, -# author, documentclass [howto, manual, or own class]). -latex_documents = [ - ('index', 'MockeryDocs.tex', u'Mockery Docs Documentation', - u'Pádraic Brady, Dave Marshall, Wouter, Graham Campbell', 'manual'), -] - -# The name of an image file (relative to this directory) to place at the top of -# the title page. -#latex_logo = None - -# For "manual" documents, if this is true, then toplevel headings are parts, -# not chapters. -#latex_use_parts = False - -# If true, show page references after internal links. -#latex_show_pagerefs = False - -# If true, show URL addresses after external links. -#latex_show_urls = False - -# Documents to append as an appendix to all manuals. -#latex_appendices = [] - -# If false, no module index is generated. -#latex_domain_indices = True - - -# -- Options for manual page output --------------------------------------- - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - ('index', 'mockerydocs', u'Mockery Docs Documentation', - [u'Pádraic Brady, Dave Marshall, Wouter, Graham Campbell'], 1) -] - -# If true, show URL addresses after external links. -#man_show_urls = False - - -# -- Options for Texinfo output ------------------------------------------- - -# Grouping the document tree into Texinfo files. List of tuples -# (source start file, target name, title, author, -# dir menu entry, description, category) -texinfo_documents = [ - ('index', 'MockeryDocs', u'Mockery Docs Documentation', - u'Pádraic Brady, Dave Marshall, Wouter, Graham Campbell', 'MockeryDocs', 'One line description of project.', - 'Miscellaneous'), -] - -# Documents to append as an appendix to all manuals. -#texinfo_appendices = [] - -# If false, no module index is generated. -#texinfo_domain_indices = True - -# How to display URL addresses: 'footnote', 'no', or 'inline'. -#texinfo_show_urls = 'footnote' - -# If true, do not generate a @detailmenu in the "Top" node's menu. -#texinfo_no_detailmenu = False - - -#on_rtd is whether we are on readthedocs.org, this line of code grabbed from docs.readthedocs.org -on_rtd = os.environ.get('READTHEDOCS', None) == 'True' - -if not on_rtd: # only import and set the theme if we're building docs locally - import sphinx_rtd_theme - html_theme = 'sphinx_rtd_theme' - html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] - print(sphinx_rtd_theme.get_html_theme_path()) - -# load PhpLexer -from sphinx.highlighting import lexers -from pygments.lexers.web import PhpLexer - -# enable highlighting for PHP code not between by default -lexers['php'] = PhpLexer(startinline=True) -lexers['php-annotations'] = PhpLexer(startinline=True) diff --git a/docker/streamline-src/vendor/mockery/mockery/docs/requirements.txt b/docker/streamline-src/vendor/mockery/mockery/docs/requirements.txt deleted file mode 100644 index 2f74b4c0..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/docs/requirements.txt +++ /dev/null @@ -1,25 +0,0 @@ -alabaster==0.7.16 -Babel==2.14.0 -certifi==2024.2.2 -charset-normalizer==3.3.2 -docutils==0.20.1 -idna==3.7 -imagesize==1.4.1 -Jinja2==3.1.4 -MarkupSafe==2.1.5 -packaging==24.0 -Pygments==2.17.2 -requests==2.31.0 -setuptools==69.2.0 -snowballstemmer==2.2.0 -Sphinx==7.3.7 -sphinx-rtd-theme==2.0.0 -sphinxcontrib-applehelp==1.0.8 -sphinxcontrib-devhelp==1.0.6 -sphinxcontrib-htmlhelp==2.0.5 -sphinxcontrib-jquery==4.1 -sphinxcontrib-jsmath==1.0.1 -sphinxcontrib-qthelp==1.0.7 -sphinxcontrib-serializinghtml==1.1.10 -urllib3==2.2.1 -wheel==0.43.0 diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery.php deleted file mode 100644 index 1370cea0..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery.php +++ /dev/null @@ -1,1062 +0,0 @@ - - */ - private static $_filesToCleanUp = []; - - /** - * Return instance of AndAnyOtherArgs matcher. - * - * @return AndAnyOtherArgs - */ - public static function andAnyOtherArgs() - { - return new AndAnyOtherArgs(); - } - - /** - * Return instance of AndAnyOtherArgs matcher. - * - * An alternative name to `andAnyOtherArgs` so - * the API stays closer to `any` as well. - * - * @return AndAnyOtherArgs - */ - public static function andAnyOthers() - { - return new AndAnyOtherArgs(); - } - - /** - * Return instance of ANY matcher. - * - * @return Any - */ - public static function any() - { - return new Any(); - } - - /** - * Return instance of ANYOF matcher. - * - * @template TAnyOf - * - * @param TAnyOf ...$args - * - * @return AnyOf - */ - public static function anyOf(...$args) - { - return new AnyOf($args); - } - - /** - * @return array - * - * @deprecated since 1.3.2 and will be removed in 2.0. - */ - public static function builtInTypes() - { - return ['array', 'bool', 'callable', 'float', 'int', 'iterable', 'object', 'self', 'string', 'void']; - } - - /** - * Return instance of CLOSURE matcher. - * - * @template TReference - * - * @param TReference $reference - * - * @return ClosureMatcher - */ - public static function capture(&$reference) - { - $closure = static function ($argument) use (&$reference) { - $reference = $argument; - return true; - }; - - return new ClosureMatcher($closure); - } - - /** - * Static shortcut to closing up and verifying all mocks in the global - * container, and resetting the container static variable to null. - * - * @return void - */ - public static function close() - { - foreach (self::$_filesToCleanUp as $fileName) { - @\unlink($fileName); - } - - self::$_filesToCleanUp = []; - - if (self::$_container === null) { - return; - } - - $container = self::$_container; - - self::$_container = null; - - $container->mockery_teardown(); - - $container->mockery_close(); - } - - /** - * Return instance of CONTAINS matcher. - * - * @template TContains - * - * @param TContains $args - * - * @return Contains - */ - public static function contains(...$args) - { - return new Contains($args); - } - - /** - * @param class-string $fqn - * - * @return void - */ - public static function declareClass($fqn) - { - static::declareType($fqn, 'class'); - } - - /** - * @param class-string $fqn - * - * @return void - */ - public static function declareInterface($fqn) - { - static::declareType($fqn, 'interface'); - } - - /** - * Return instance of DUCKTYPE matcher. - * - * @template TDucktype - * - * @param TDucktype ...$args - * - * @return Ducktype - */ - public static function ducktype(...$args) - { - return new Ducktype($args); - } - - /** - * Static fetching of a mock associated with a name or explicit class poser. - * - * @template TFetchMock of object - * - * @param class-string $name - * - * @return null|(LegacyMockInterface&MockInterface&TFetchMock) - */ - public static function fetchMock($name) - { - return self::getContainer()->fetchMock($name); - } - - /** - * Utility method to format method name and arguments into a string. - * - * @param string $method - * - * @return string - */ - public static function formatArgs($method, ?array $arguments = null) - { - if ($arguments === null) { - return $method . '()'; - } - - $formattedArguments = []; - foreach ($arguments as $argument) { - $formattedArguments[] = self::formatArgument($argument); - } - - return $method . '(' . \implode(', ', $formattedArguments) . ')'; - } - - /** - * Utility function to format objects to printable arrays. - * - * @return string - */ - public static function formatObjects(?array $objects = null) - { - static $formatting; - - if ($formatting) { - return '[Recursion]'; - } - - if ($objects === null) { - return ''; - } - - $objects = \array_filter($objects, 'is_object'); - if ($objects === []) { - return ''; - } - - $formatting = true; - $parts = []; - - foreach ($objects as $object) { - $parts[\get_class($object)] = self::objectToArray($object); - } - - $formatting = false; - - return 'Objects: ( ' . \var_export($parts, true) . ')'; - } - - /** - * Lazy loader and Getter for the global - * configuration container. - * - * @return Configuration - */ - public static function getConfiguration() - { - if (self::$_config === null) { - self::$_config = new Configuration(); - } - - return self::$_config; - } - - /** - * Lazy loader and getter for the container property. - * - * @return Container - */ - public static function getContainer() - { - if (self::$_container === null) { - self::$_container = new Container(self::getGenerator(), self::getLoader()); - } - - return self::$_container; - } - - /** - * Creates and returns a default generator - * used inside this class. - * - * @return CachingGenerator - */ - public static function getDefaultGenerator() - { - return new CachingGenerator(StringManipulationGenerator::withDefaultPasses()); - } - - /** - * Gets an EvalLoader to be used as default. - * - * @return EvalLoader - */ - public static function getDefaultLoader() - { - return new EvalLoader(); - } - - /** - * Lazy loader method and getter for - * the generator property. - * - * @return Generator - */ - public static function getGenerator() - { - if (self::$_generator === null) { - self::$_generator = self::getDefaultGenerator(); - } - - return self::$_generator; - } - - /** - * Lazy loader method and getter for - * the $_loader property. - * - * @return Loader - */ - public static function getLoader() - { - if (self::$_loader === null) { - self::$_loader = self::getDefaultLoader(); - } - - return self::$_loader; - } - - /** - * Defines the global helper functions - * - * @return void - */ - public static function globalHelpers() - { - require_once __DIR__ . '/helpers.php'; - } - - /** - * Return instance of HASKEY matcher. - * - * @template THasKey - * - * @param THasKey $key - * - * @return HasKey - */ - public static function hasKey($key) - { - return new HasKey($key); - } - - /** - * Return instance of HASVALUE matcher. - * - * @template THasValue - * - * @param THasValue $val - * - * @return HasValue - */ - public static function hasValue($val) - { - return new HasValue($val); - } - - /** - * Static and Semantic shortcut to Container::mock(). - * - * @template TInstanceMock - * - * @param array|TInstanceMock|array> $args - * - * @return LegacyMockInterface&MockInterface&TInstanceMock - */ - public static function instanceMock(...$args) - { - return self::getContainer()->mock(...$args); - } - - /** - * @param string $type - * - * @return bool - * - * @deprecated since 1.3.2 and will be removed in 2.0. - */ - public static function isBuiltInType($type) - { - return \in_array($type, self::builtInTypes(), true); - } - - /** - * Return instance of IsEqual matcher. - * - * @template TExpected - * - * @param TExpected $expected - */ - public static function isEqual($expected): IsEqual - { - return new IsEqual($expected); - } - - /** - * Return instance of IsSame matcher. - * - * @template TExpected - * - * @param TExpected $expected - */ - public static function isSame($expected): IsSame - { - return new IsSame($expected); - } - - /** - * Static shortcut to Container::mock(). - * - * @template TMock of object - * - * @param array|TMock|Closure(LegacyMockInterface&MockInterface&TMock):LegacyMockInterface&MockInterface&TMock|array> $args - * - * @return LegacyMockInterface&MockInterface&TMock - */ - public static function mock(...$args) - { - return self::getContainer()->mock(...$args); - } - - /** - * Return instance of MUSTBE matcher. - * - * @template TExpected - * - * @param TExpected $expected - * - * @return MustBe - */ - public static function mustBe($expected) - { - return new MustBe($expected); - } - - /** - * Static shortcut to Container::mock(), first argument names the mock. - * - * @template TNamedMock - * - * @param array|TNamedMock|array> $args - * - * @return LegacyMockInterface&MockInterface&TNamedMock - */ - public static function namedMock(...$args) - { - $name = \array_shift($args); - - $builder = new MockConfigurationBuilder(); - $builder->setName($name); - - \array_unshift($args, $builder); - - return self::getContainer()->mock(...$args); - } - - /** - * Return instance of NOT matcher. - * - * @template TNotExpected - * - * @param TNotExpected $expected - * - * @return Not - */ - public static function not($expected) - { - return new Not($expected); - } - - /** - * Return instance of NOTANYOF matcher. - * - * @template TNotAnyOf - * - * @param TNotAnyOf ...$args - * - * @return NotAnyOf - */ - public static function notAnyOf(...$args) - { - return new NotAnyOf($args); - } - - /** - * Return instance of CLOSURE matcher. - * - * @template TClosure of Closure - * - * @param TClosure $closure - * - * @return ClosureMatcher - */ - public static function on($closure) - { - return new ClosureMatcher($closure); - } - - /** - * Utility function to parse shouldReceive() arguments and generate - * expectations from such as needed. - * - * @template TReturnArgs - * - * @param TReturnArgs ...$args - * @param Closure $add - * - * @return CompositeExpectation - */ - public static function parseShouldReturnArgs(LegacyMockInterface $mock, $args, $add) - { - $composite = new CompositeExpectation(); - - foreach ($args as $arg) { - if (\is_string($arg)) { - $composite->add(self::buildDemeterChain($mock, $arg, $add)); - - continue; - } - - if (\is_array($arg)) { - foreach ($arg as $k => $v) { - $composite->add(self::buildDemeterChain($mock, $k, $add)->andReturn($v)); - } - } - } - - return $composite; - } - - /** - * Return instance of PATTERN matcher. - * - * @template TPatter - * - * @param TPatter $expected - * - * @return Pattern - */ - public static function pattern($expected) - { - return new Pattern($expected); - } - - /** - * Register a file to be deleted on tearDown. - * - * @param string $fileName - */ - public static function registerFileForCleanUp($fileName) - { - self::$_filesToCleanUp[] = $fileName; - } - - /** - * Reset the container to null. - * - * @return void - */ - public static function resetContainer() - { - self::$_container = null; - } - - /** - * Static shortcut to Container::self(). - * - * @throws LogicException - * - * @return LegacyMockInterface|MockInterface - */ - public static function self() - { - if (self::$_container === null) { - throw new LogicException('You have not declared any mocks yet'); - } - - return self::$_container->self(); - } - - /** - * Set the container. - * - * @return Container - */ - public static function setContainer(Container $container) - { - return self::$_container = $container; - } - - /** - * Setter for the $_generator static property. - */ - public static function setGenerator(Generator $generator) - { - self::$_generator = $generator; - } - - /** - * Setter for the $_loader static property. - */ - public static function setLoader(Loader $loader) - { - self::$_loader = $loader; - } - - /** - * Static and semantic shortcut for getting a mock from the container - * and applying the spy's expected behavior into it. - * - * @template TSpy - * - * @param array|TSpy|Closure(LegacyMockInterface&MockInterface&TSpy):LegacyMockInterface&MockInterface&TSpy|array> $args - * - * @return LegacyMockInterface&MockInterface&TSpy - */ - public static function spy(...$args) - { - if ($args !== [] && $args[0] instanceof Closure) { - $args[0] = new ClosureWrapper($args[0]); - } - - return self::getContainer()->mock(...$args)->shouldIgnoreMissing(); - } - - /** - * Return instance of SUBSET matcher. - * - * @param bool $strict - (Optional) True for strict comparison, false for loose - * - * @return Subset - */ - public static function subset(array $part, $strict = true) - { - return new Subset($part, $strict); - } - - /** - * Return instance of TYPE matcher. - * - * @template TExpectedType - * - * @param TExpectedType $expected - * - * @return Type - */ - public static function type($expected) - { - return new Type($expected); - } - - /** - * Sets up expectations on the members of the CompositeExpectation and - * builds up any demeter chain that was passed to shouldReceive. - * - * @param string $arg - * @param Closure $add - * - * @throws MockeryException - * - * @return ExpectationInterface - */ - protected static function buildDemeterChain(LegacyMockInterface $mock, $arg, $add) - { - $container = $mock->mockery_getContainer(); - $methodNames = \explode('->', $arg); - - \reset($methodNames); - - if ( - ! $mock->mockery_isAnonymous() - && ! self::getConfiguration()->mockingNonExistentMethodsAllowed() - && ! \in_array(\current($methodNames), $mock->mockery_getMockableMethods(), true) - ) { - throw new MockeryException( - "Mockery's configuration currently forbids mocking the method " - . \current($methodNames) . ' as it does not exist on the class or object ' - . 'being mocked' - ); - } - - /** @var Closure $nextExp */ - $nextExp = static function ($method) use ($add) { - return $add($method); - }; - - $parent = \get_class($mock); - - /** @var null|ExpectationInterface $expectations */ - $expectations = null; - while (true) { - $method = \array_shift($methodNames); - $expectations = $mock->mockery_getExpectationsFor($method); - - if ($expectations === null || self::noMoreElementsInChain($methodNames)) { - $expectations = $nextExp($method); - if (self::noMoreElementsInChain($methodNames)) { - break; - } - - $mock = self::getNewDemeterMock($container, $parent, $method, $expectations); - } else { - $demeterMockKey = $container->getKeyOfDemeterMockFor($method, $parent); - if ($demeterMockKey !== null) { - $mock = self::getExistingDemeterMock($container, $demeterMockKey); - } - } - - $parent .= '->' . $method; - - $nextExp = static function ($n) use ($mock) { - return $mock->allows($n); - }; - } - - return $expectations; - } - - /** - * Utility method for recursively generating a representation of the given array. - * - * @template TArray or array - * - * @param TArray $argument - * @param int $nesting - * - * @return TArray - */ - private static function cleanupArray($argument, $nesting = 3) - { - if ($nesting === 0) { - return '...'; - } - - foreach ($argument as $key => $value) { - if (\is_array($value)) { - $argument[$key] = self::cleanupArray($value, $nesting - 1); - - continue; - } - - if (\is_object($value)) { - $argument[$key] = self::objectToArray($value, $nesting - 1); - } - } - - return $argument; - } - - /** - * Utility method used for recursively generating - * an object or array representation. - * - * @template TArgument - * - * @param TArgument $argument - * @param int $nesting - * - * @return mixed - */ - private static function cleanupNesting($argument, $nesting) - { - if (\is_object($argument)) { - $object = self::objectToArray($argument, $nesting - 1); - $object['class'] = \get_class($argument); - - return $object; - } - - if (\is_array($argument)) { - return self::cleanupArray($argument, $nesting - 1); - } - - return $argument; - } - - /** - * @param string $fqn - * @param string $type - */ - private static function declareType($fqn, $type): void - { - $targetCode = ' - */ - private static function extractInstancePublicProperties($object, $nesting) - { - $reflection = new ReflectionClass($object); - $properties = $reflection->getProperties(ReflectionProperty::IS_PUBLIC); - $cleanedProperties = []; - - foreach ($properties as $publicProperty) { - if (! $publicProperty->isStatic()) { - $name = $publicProperty->getName(); - try { - $cleanedProperties[$name] = self::cleanupNesting($object->{$name}, $nesting); - } catch (Exception $exception) { - $cleanedProperties[$name] = $exception->getMessage(); - } - } - } - - return $cleanedProperties; - } - - /** - * Gets the string representation - * of any passed argument. - * - * @param mixed $argument - * @param int $depth - * - * @return mixed - */ - private static function formatArgument($argument, $depth = 0) - { - if ($argument instanceof MatcherInterface) { - return (string) $argument; - } - - if (\is_object($argument)) { - return 'object(' . \get_class($argument) . ')'; - } - - if (\is_int($argument) || \is_float($argument)) { - return $argument; - } - - if (\is_array($argument)) { - if ($depth === 1) { - $argument = '[...]'; - } else { - $sample = []; - foreach ($argument as $key => $value) { - $key = \is_int($key) ? $key : \sprintf("'%s'", $key); - $value = self::formatArgument($value, $depth + 1); - $sample[] = \sprintf('%s => %s', $key, $value); - } - - $argument = '[' . \implode(', ', $sample) . ']'; - } - - return (\strlen($argument) > 1000) ? \substr($argument, 0, 1000) . '...]' : $argument; - } - - if (\is_bool($argument)) { - return $argument ? 'true' : 'false'; - } - - if (\is_resource($argument)) { - return 'resource(...)'; - } - - if ($argument === null) { - return 'NULL'; - } - - return "'" . $argument . "'"; - } - - /** - * Gets a specific demeter mock from the ones kept by the container. - * - * @template TMock of object - * - * @param class-string $demeterMockKey - * - * @return null|(LegacyMockInterface&MockInterface&TMock) - */ - private static function getExistingDemeterMock(Container $container, $demeterMockKey) - { - return $container->getMocks()[$demeterMockKey] ?? null; - } - - /** - * Gets a new demeter configured - * mock from the container. - * - * @param string $parent - * @param string $method - * - * @return LegacyMockInterface&MockInterface - */ - private static function getNewDemeterMock(Container $container, $parent, $method, ExpectationInterface $exp) - { - $newMockName = 'demeter_' . \md5($parent) . '_' . $method; - - $parRef = null; - - $parentMock = $exp->getMock(); - if ($parentMock !== null) { - $parRef = new ReflectionObject($parentMock); - } - - if ($parRef instanceof ReflectionObject && $parRef->hasMethod($method)) { - $parRefMethod = $parRef->getMethod($method); - $parRefMethodRetType = Reflector::getReturnType($parRefMethod, true); - - if ($parRefMethodRetType !== null) { - $returnTypes = \explode('|', $parRefMethodRetType); - - $filteredReturnTypes = array_filter($returnTypes, static function (string $type): bool { - return ! Reflector::isReservedWord($type); - }); - - if ($filteredReturnTypes !== []) { - $nameBuilder = new MockNameBuilder(); - - $nameBuilder->addPart('\\' . $newMockName); - - $mock = self::namedMock( - $nameBuilder->build(), - ...$filteredReturnTypes - ); - - $exp->andReturn($mock); - - return $mock; - } - } - } - - $mock = $container->mock($newMockName); - $exp->andReturn($mock); - - return $mock; - } - - /** - * Checks if the passed array representing a demeter - * chain with the method names is empty. - * - * @return bool - */ - private static function noMoreElementsInChain(array $methodNames) - { - return $methodNames === []; - } - - /** - * Utility function to turn public properties and public get* and is* method values into an array. - * - * @param object $object - * @param int $nesting - * - * @return array - */ - private static function objectToArray($object, $nesting = 3) - { - if ($nesting === 0) { - return ['...']; - } - - $defaultFormatter = static function ($object, $nesting) { - return [ - 'properties' => self::extractInstancePublicProperties($object, $nesting), - ]; - }; - - $class = \get_class($object); - - $formatter = self::getConfiguration()->getObjectFormatter($class, $defaultFormatter); - - $array = [ - 'class' => $class, - 'identity' => '#' . \md5(\spl_object_hash($object)), - ]; - - return \array_merge($array, $formatter($object, $nesting)); - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Adapter/Phpunit/MockeryPHPUnitIntegration.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Adapter/Phpunit/MockeryPHPUnitIntegration.php deleted file mode 100644 index a6d5b8fe..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Adapter/Phpunit/MockeryPHPUnitIntegration.php +++ /dev/null @@ -1,86 +0,0 @@ -addToAssertionCount(Mockery::getContainer()->mockery_getExpectationCount()); - } - - protected function checkMockeryExceptions() - { - if (! method_exists($this, 'markAsRisky')) { - return; - } - - foreach (Mockery::getContainer()->mockery_thrownExceptions() as $e) { - if (! $e->dismissed()) { - $this->markAsRisky(); - } - } - } - - protected function closeMockery() - { - Mockery::close(); - $this->mockeryOpen = false; - } - - /** - * Performs assertions shared by all tests of a test case. This method is - * called before execution of a test ends and before the tearDown method. - */ - protected function mockeryAssertPostConditions() - { - $this->addMockeryExpectationsToAssertionCount(); - $this->checkMockeryExceptions(); - $this->closeMockery(); - - parent::assertPostConditions(); - } - - /** - * @after - */ - #[After] - protected function purgeMockeryContainer() - { - if ($this->mockeryOpen) { - // post conditions wasn't called, so test probably failed - Mockery::close(); - } - } - - /** - * @before - */ - #[Before] - protected function startMockery() - { - $this->mockeryOpen = true; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Adapter/Phpunit/MockeryPHPUnitIntegrationAssertPostConditions.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Adapter/Phpunit/MockeryPHPUnitIntegrationAssertPostConditions.php deleted file mode 100644 index e4a80b5f..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Adapter/Phpunit/MockeryPHPUnitIntegrationAssertPostConditions.php +++ /dev/null @@ -1,21 +0,0 @@ -mockeryAssertPostConditions(); - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Adapter/Phpunit/MockeryTestCase.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Adapter/Phpunit/MockeryTestCase.php deleted file mode 100644 index 942f1c08..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Adapter/Phpunit/MockeryTestCase.php +++ /dev/null @@ -1,27 +0,0 @@ -mockeryTestSetUp(); - } - - protected function tearDown(): void - { - $this->mockeryTestTearDown(); - parent::tearDown(); - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Adapter/Phpunit/TestListener.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Adapter/Phpunit/TestListener.php deleted file mode 100644 index 1ae84583..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Adapter/Phpunit/TestListener.php +++ /dev/null @@ -1,38 +0,0 @@ -trait = new TestListenerTrait(); - } - - public function endTest(Test $test, float $time): void - { - $this->trait->endTest($test, $time); - } - - public function startTestSuite(TestSuite $suite): void - { - $this->trait->startTestSuite(); - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Adapter/Phpunit/TestListenerTrait.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Adapter/Phpunit/TestListenerTrait.php deleted file mode 100644 index 45c6b3f1..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Adapter/Phpunit/TestListenerTrait.php +++ /dev/null @@ -1,84 +0,0 @@ -getStatus() !== BaseTestRunner::STATUS_PASSED) { - // If the test didn't pass there is no guarantee that - // verifyMockObjects and assertPostConditions have been called. - // And even if it did, the point here is to prevent false - // negatives, not to make failing tests fail for more reasons. - return; - } - - try { - // The self() call is used as a sentinel. Anything that throws if - // the container is closed already will do. - Mockery::self(); - } catch (LogicException $logicException) { - return; - } - - $e = new ExpectationFailedException( - sprintf( - "Mockery's expectations have not been verified. Make sure that \Mockery::close() is called at the end of the test. Consider using %s\MockeryPHPUnitIntegration or extending %s\MockeryTestCase.", - __NAMESPACE__, - __NAMESPACE__ - ) - ); - - /** @var \PHPUnit\Framework\TestResult $result */ - $result = $test->getTestResultObject(); - - if ($result !== null) { - $result->addFailure($test, $e, $time); - } - } - - public function startTestSuite() - { - if (method_exists(Blacklist::class, 'addDirectory')) { - (new Blacklist())->getBlacklistedDirectories(); - Blacklist::addDirectory(dirname((new ReflectionClass(Mockery::class))->getFileName())); - } else { - Blacklist::$blacklistedClassNames[Mockery::class] = 1; - } - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/ClosureWrapper.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/ClosureWrapper.php deleted file mode 100644 index fae88712..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/ClosureWrapper.php +++ /dev/null @@ -1,36 +0,0 @@ -closure = $closure; - } - - /** - * @return mixed - */ - public function __invoke() - { - return ($this->closure)(...func_get_args()); - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/CompositeExpectation.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/CompositeExpectation.php deleted file mode 100644 index fa03c399..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/CompositeExpectation.php +++ /dev/null @@ -1,150 +0,0 @@ - - */ - protected $_expectations = []; - - /** - * Intercept any expectation calls and direct against all expectations - * - * @param string $method - * - * @return self - */ - public function __call($method, array $args) - { - foreach ($this->_expectations as $expectation) { - $expectation->{$method}(...$args); - } - - return $this; - } - - /** - * Return the string summary of this composite expectation - * - * @return string - */ - public function __toString() - { - $parts = array_map(static function (ExpectationInterface $expectation): string { - return (string) $expectation; - }, $this->_expectations); - - return '[' . implode(', ', $parts) . ']'; - } - - /** - * Add an expectation to the composite - * - * @param ExpectationInterface|HigherOrderMessage $expectation - * - * @return void - */ - public function add($expectation) - { - $this->_expectations[] = $expectation; - } - - /** - * @param mixed ...$args - */ - public function andReturn(...$args) - { - return $this->__call(__FUNCTION__, $args); - } - - /** - * Set a return value, or sequential queue of return values - * - * @param mixed ...$args - * - * @return self - */ - public function andReturns(...$args) - { - return $this->andReturn(...$args); - } - - /** - * Return the parent mock of the first expectation - * - * @return LegacyMockInterface&MockInterface - */ - public function getMock() - { - reset($this->_expectations); - $first = current($this->_expectations); - return $first->getMock(); - } - - /** - * Return order number of the first expectation - * - * @return int - */ - public function getOrderNumber() - { - reset($this->_expectations); - $first = current($this->_expectations); - return $first->getOrderNumber(); - } - - /** - * Mockery API alias to getMock - * - * @return LegacyMockInterface&MockInterface - */ - public function mock() - { - return $this->getMock(); - } - - /** - * Starts a new expectation addition on the first mock which is the primary target outside of a demeter chain - * - * @param mixed ...$args - * - * @return Expectation - */ - public function shouldNotReceive(...$args) - { - reset($this->_expectations); - $first = current($this->_expectations); - return $first->getMock()->shouldNotReceive(...$args); - } - - /** - * Starts a new expectation addition on the first mock which is the primary target, outside of a demeter chain - * - * @param mixed ...$args - * - * @return Expectation - */ - public function shouldReceive(...$args) - { - reset($this->_expectations); - $first = current($this->_expectations); - return $first->getMock()->shouldReceive(...$args); - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Configuration.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Configuration.php deleted file mode 100644 index d415d9e0..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Configuration.php +++ /dev/null @@ -1,406 +0,0 @@ - ['MY_CONST' => 123, 'OTHER_CONST' => 'foo']] - * - * @var array|scalar>> - */ - protected $_constantsMap = []; - - /** - * Default argument matchers - * - * e.g. ['class' => 'matcher'] - * - * @var array - */ - protected $_defaultMatchers = []; - - /** - * Parameter map for use with PHP internal classes. - * - * e.g. ['class' => ['method' => ['param1', 'param2']]] - * - * @var array>> - */ - protected $_internalClassParamMap = []; - - /** - * Custom object formatters - * - * e.g. ['class' => static fn($object) => 'formatted'] - * - * @var array - */ - protected $_objectFormatters = []; - - /** - * @var QuickDefinitionsConfiguration - */ - protected $_quickDefinitionsConfiguration; - - /** - * Boolean assertion is reflection caching enabled or not. It should be - * always enabled, except when using PHPUnit's --static-backup option. - * - * @see https://github.com/mockery/mockery/issues/268 - */ - protected $_reflectionCacheEnabled = true; - - public function __construct() - { - $this->_quickDefinitionsConfiguration = new QuickDefinitionsConfiguration(); - } - - /** - * Set boolean to allow/prevent unnecessary mocking of methods - * - * @param bool $flag - * - * @return void - * - * @deprecated since 1.4.0 - */ - public function allowMockingMethodsUnnecessarily($flag = true) - { - @trigger_error( - sprintf('The %s method is deprecated and will be removed in a future version of Mockery', __METHOD__), - E_USER_DEPRECATED - ); - - $this->_allowMockingMethodsUnnecessarily = (bool) $flag; - } - - /** - * Set boolean to allow/prevent mocking of non-existent methods - * - * @param bool $flag - * - * @return void - */ - public function allowMockingNonExistentMethods($flag = true) - { - $this->_allowMockingNonExistentMethod = (bool) $flag; - } - - /** - * Disable reflection caching - * - * It should be always enabled, except when using - * PHPUnit's --static-backup option. - * - * @see https://github.com/mockery/mockery/issues/268 - * - * @return void - */ - public function disableReflectionCache() - { - $this->_reflectionCacheEnabled = false; - } - - /** - * Enable reflection caching - * - * It should be always enabled, except when using - * PHPUnit's --static-backup option. - * - * @see https://github.com/mockery/mockery/issues/268 - * - * @return void - */ - public function enableReflectionCache() - { - $this->_reflectionCacheEnabled = true; - } - - /** - * Get the map of constants to be used in the mock generator - * - * @return array|scalar>> - */ - public function getConstantsMap() - { - return $this->_constantsMap; - } - - /** - * Get the default matcher for a given class - * - * @param class-string $class - * - * @return null|class-string - */ - public function getDefaultMatcher($class) - { - $classes = []; - - $parentClass = $class; - - do { - $classes[] = $parentClass; - - $parentClass = get_parent_class($parentClass); - } while ($parentClass !== false); - - $classesAndInterfaces = array_merge($classes, class_implements($class)); - - foreach ($classesAndInterfaces as $type) { - if (array_key_exists($type, $this->_defaultMatchers)) { - return $this->_defaultMatchers[$type]; - } - } - - return null; - } - - /** - * Get the parameter map of an internal PHP class method - * - * @param class-string $class - * @param string $method - * - * @return null|array - */ - public function getInternalClassMethodParamMap($class, $method) - { - $class = strtolower($class); - $method = strtolower($method); - if (! array_key_exists($class, $this->_internalClassParamMap)) { - return null; - } - - if (! array_key_exists($method, $this->_internalClassParamMap[$class])) { - return null; - } - - return $this->_internalClassParamMap[$class][$method]; - } - - /** - * Get the parameter maps of internal PHP classes - * - * @return array>> - */ - public function getInternalClassMethodParamMaps() - { - return $this->_internalClassParamMap; - } - - /** - * Get the object formatter for a class - * - * @param class-string $class - * @param Closure $defaultFormatter - * - * @return Closure - */ - public function getObjectFormatter($class, $defaultFormatter) - { - $parentClass = $class; - - do { - $classes[] = $parentClass; - - $parentClass = get_parent_class($parentClass); - } while ($parentClass !== false); - - $classesAndInterfaces = array_merge($classes, class_implements($class)); - - foreach ($classesAndInterfaces as $type) { - if (array_key_exists($type, $this->_objectFormatters)) { - return $this->_objectFormatters[$type]; - } - } - - return $defaultFormatter; - } - - /** - * Returns the quick definitions configuration - */ - public function getQuickDefinitions(): QuickDefinitionsConfiguration - { - return $this->_quickDefinitionsConfiguration; - } - - /** - * Return flag indicating whether mocking non-existent methods allowed - * - * @return bool - * - * @deprecated since 1.4.0 - */ - public function mockingMethodsUnnecessarilyAllowed() - { - @trigger_error( - sprintf('The %s method is deprecated and will be removed in a future version of Mockery', __METHOD__), - E_USER_DEPRECATED - ); - - return $this->_allowMockingMethodsUnnecessarily; - } - - /** - * Return flag indicating whether mocking non-existent methods allowed - * - * @return bool - */ - public function mockingNonExistentMethodsAllowed() - { - return $this->_allowMockingNonExistentMethod; - } - - /** - * Is reflection cache enabled? - * - * @return bool - */ - public function reflectionCacheEnabled() - { - return $this->_reflectionCacheEnabled; - } - - /** - * Remove all overridden parameter maps from internal PHP classes. - * - * @return void - */ - public function resetInternalClassMethodParamMaps() - { - $this->_internalClassParamMap = []; - } - - /** - * Set a map of constants to be used in the mock generator - * - * e.g. ['MyClass' => ['MY_CONST' => 123, 'ARRAY_CONST' => ['foo', 'bar']]] - * - * @param array|scalar>> $map - * - * @return void - */ - public function setConstantsMap(array $map) - { - $this->_constantsMap = $map; - } - - /** - * @param class-string $class - * @param class-string $matcherClass - * - * @throws InvalidArgumentException - * - * @return void - */ - public function setDefaultMatcher($class, $matcherClass) - { - $isHamcrest = is_a($matcherClass, Matcher::class, true) - || is_a($matcherClass, Hamcrest_Matcher::class, true); - - if ($isHamcrest) { - @trigger_error('Hamcrest package has been deprecated and will be removed in 2.0', E_USER_DEPRECATED); - } - - if (! $isHamcrest && ! is_a($matcherClass, MatcherInterface::class, true)) { - throw new InvalidArgumentException(sprintf( - "Matcher class must implement %s, '%s' given.", - MatcherInterface::class, - $matcherClass - )); - } - - $this->_defaultMatchers[$class] = $matcherClass; - } - - /** - * Set a parameter map (array of param signature strings) for the method of an internal PHP class. - * - * @param class-string $class - * @param string $method - * @param list $map - * - * @throws LogicException - * - * @return void - */ - public function setInternalClassMethodParamMap($class, $method, array $map) - { - if (PHP_MAJOR_VERSION > 7) { - throw new LogicException( - 'Internal class parameter overriding is not available in PHP 8. Incompatible signatures have been reclassified as fatal errors.' - ); - } - - $class = strtolower($class); - - if (! array_key_exists($class, $this->_internalClassParamMap)) { - $this->_internalClassParamMap[$class] = []; - } - - $this->_internalClassParamMap[$class][strtolower($method)] = $map; - } - - /** - * Set a custom object formatter for a class - * - * @param class-string $class - * @param Closure $formatterCallback - * - * @return void - */ - public function setObjectFormatter($class, $formatterCallback) - { - $this->_objectFormatters[$class] = $formatterCallback; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Container.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Container.php deleted file mode 100644 index ddba8884..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Container.php +++ /dev/null @@ -1,678 +0,0 @@ - - */ - protected $_groups = []; - - /** - * @var LoaderInterface - */ - protected $_loader; - - /** - * Store of mock objects - * - * @var array|array-key,LegacyMockInterface&MockInterface&TMockObject> - */ - protected $_mocks = []; - - /** - * @var array - */ - protected $_namedMocks = []; - - /** - * @var Instantiator - */ - protected $instantiator; - - public function __construct(?Generator $generator = null, ?LoaderInterface $loader = null, ?Instantiator $instantiator = null) - { - $this->_generator = $generator instanceof Generator ? $generator : Mockery::getDefaultGenerator(); - $this->_loader = $loader instanceof LoaderInterface ? $loader : Mockery::getDefaultLoader(); - $this->instantiator = $instantiator instanceof Instantiator ? $instantiator : new Instantiator(); - } - - /** - * Return a specific remembered mock according to the array index it - * was stored to in this container instance - * - * @template TMock of object - * - * @param class-string $reference - * - * @return null|(LegacyMockInterface&MockInterface&TMock) - */ - public function fetchMock($reference) - { - return $this->_mocks[$reference] ?? null; - } - - /** - * @return Generator - */ - public function getGenerator() - { - return $this->_generator; - } - - /** - * @param string $method - * @param string $parent - * - * @return null|string - */ - public function getKeyOfDemeterMockFor($method, $parent) - { - $keys = array_keys($this->_mocks); - - $match = preg_grep('/__demeter_' . md5($parent) . sprintf('_%s$/', $method), $keys); - if ($match === false) { - return null; - } - - if ($match === []) { - return null; - } - - return array_values($match)[0]; - } - - /** - * @return LoaderInterface - */ - public function getLoader() - { - return $this->_loader; - } - - /** - * @template TMock of object - * @return array|array-key,LegacyMockInterface&MockInterface&TMockObject> - */ - public function getMocks() - { - return $this->_mocks; - } - - /** - * @return void - */ - public function instanceMock() - { - } - - /** - * see http://php.net/manual/en/language.oop5.basic.php - * - * @param string $className - * - * @return bool - */ - public function isValidClassName($className) - { - if ($className[0] === '\\') { - $className = substr($className, 1); // remove the first backslash - } - - // all the namespaces and class name should match the regex - return array_filter( - explode('\\', $className), - static function ($name): bool { - return ! preg_match('/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$/', $name); - } - ) === []; - } - - /** - * Generates a new mock object for this container - * - * I apologies in advance for this. A God Method just fits the API which - * doesn't require differentiating between classes, interfaces, abstracts, - * names or partials - just so long as it's something that can be mocked. - * I'll refactor it one day so it's easier to follow. - * - * @template TMock of object - * - * @param array|TMock|Closure(LegacyMockInterface&MockInterface&TMock):LegacyMockInterface&MockInterface&TMock|array> $args - * - * @throws ReflectionException|RuntimeException - * - * @return LegacyMockInterface&MockInterface&TMock - */ - public function mock(...$args) - { - /** @var null|MockConfigurationBuilder $builder */ - $builder = null; - /** @var null|callable $expectationClosure */ - $expectationClosure = null; - $partialMethods = null; - $quickDefinitions = []; - $constructorArgs = null; - $blocks = []; - - if (count($args) > 1) { - $finalArg = array_pop($args); - - if (is_callable($finalArg) && is_object($finalArg)) { - $expectationClosure = $finalArg; - } else { - $args[] = $finalArg; - } - } - - foreach ($args as $k => $arg) { - if ($arg instanceof MockConfigurationBuilder) { - $builder = $arg; - - unset($args[$k]); - } - } - - reset($args); - - $builder = $builder ?? new MockConfigurationBuilder(); - $mockeryConfiguration = Mockery::getConfiguration(); - $builder->setParameterOverrides($mockeryConfiguration->getInternalClassMethodParamMaps()); - $builder->setConstantsMap($mockeryConfiguration->getConstantsMap()); - - while ($args !== []) { - $arg = array_shift($args); - - // check for multiple interfaces - if (is_string($arg)) { - foreach (explode('|', $arg) as $type) { - if ($arg === 'null') { - // skip PHP 8 'null's - continue; - } - - if (strpos($type, ',') && !strpos($type, ']')) { - $interfaces = explode(',', str_replace(' ', '', $type)); - - $builder->addTargets($interfaces); - - continue; - } - - if (strpos($type, 'alias:') === 0) { - $type = str_replace('alias:', '', $type); - - $builder->addTarget('stdClass'); - $builder->setName($type); - - continue; - } - - if (strpos($type, 'overload:') === 0) { - $type = str_replace('overload:', '', $type); - - $builder->setInstanceMock(true); - $builder->addTarget('stdClass'); - $builder->setName($type); - - continue; - } - - if ($type[strlen($type) - 1] === ']') { - $parts = explode('[', $type); - - $class = $parts[0]; - - if (! class_exists($class, true) && ! interface_exists($class, true)) { - throw new Exception('Can only create a partial mock from an existing class or interface'); - } - - $builder->addTarget($class); - - $partialMethods = array_filter( - explode(',', strtolower(rtrim(str_replace(' ', '', $parts[1]), ']'))) - ); - - foreach ($partialMethods as $partialMethod) { - if ($partialMethod[0] === '!') { - $builder->addBlackListedMethod(substr($partialMethod, 1)); - - continue; - } - - $builder->addWhiteListedMethod($partialMethod); - } - - continue; - } - - if (class_exists($type, true) || interface_exists($type, true) || trait_exists($type, true)) { - $builder->addTarget($type); - - continue; - } - - if (! $mockeryConfiguration->mockingNonExistentMethodsAllowed()) { - throw new Exception(sprintf("Mockery can't find '%s' so can't mock it", $type)); - } - - if (! $this->isValidClassName($type)) { - throw new Exception('Class name contains invalid characters'); - } - - $builder->addTarget($type); - - // unions are "sum" types and not "intersections", and so we must only process the first part - break; - } - - continue; - } - - if (is_object($arg)) { - $builder->addTarget($arg); - - continue; - } - - if (is_array($arg)) { - if ([] !== $arg && array_keys($arg) !== range(0, count($arg) - 1)) { - // if associative array - if (array_key_exists(self::BLOCKS, $arg)) { - $blocks = $arg[self::BLOCKS]; - } - - unset($arg[self::BLOCKS]); - - $quickDefinitions = $arg; - - continue; - } - - $constructorArgs = $arg; - - continue; - } - - throw new Exception(sprintf( - 'Unable to parse arguments sent to %s::mock()', get_class($this) - )); - } - - $builder->addBlackListedMethods($blocks); - - if ($constructorArgs !== null) { - $builder->addBlackListedMethod('__construct'); // we need to pass through - } else { - $builder->setMockOriginalDestructor(true); - } - - if ($partialMethods !== null && $constructorArgs === null) { - $constructorArgs = []; - } - - $config = $builder->getMockConfiguration(); - - $this->checkForNamedMockClashes($config); - - $def = $this->getGenerator()->generate($config); - - $className = $def->getClassName(); - if (class_exists($className, $attemptAutoload = false)) { - $rfc = new ReflectionClass($className); - if (! $rfc->implementsInterface(LegacyMockInterface::class)) { - throw new RuntimeException(sprintf('Could not load mock %s, class already exists', $className)); - } - } - - $this->getLoader()->load($def); - - $mock = $this->_getInstance($className, $constructorArgs); - $mock->mockery_init($this, $config->getTargetObject(), $config->isInstanceMock()); - - if ($quickDefinitions !== []) { - if ($mockeryConfiguration->getQuickDefinitions()->shouldBeCalledAtLeastOnce()) { - $mock->shouldReceive($quickDefinitions)->atLeast()->once(); - } else { - $mock->shouldReceive($quickDefinitions)->byDefault(); - } - } - - // if the last parameter passed to mock() is a closure, - if ($expectationClosure instanceof Closure) { - // call the closure with the mock object - $expectationClosure($mock); - } - - return $this->rememberMock($mock); - } - - /** - * Fetch the next available allocation order number - * - * @return int - */ - public function mockery_allocateOrder() - { - return ++$this->_allocatedOrder; - } - - /** - * Reset the container to its original state - * - * @return void - */ - public function mockery_close() - { - foreach ($this->_mocks as $mock) { - $mock->mockery_teardown(); - } - - $this->_mocks = []; - } - - /** - * Get current ordered number - * - * @return int - */ - public function mockery_getCurrentOrder() - { - return $this->_currentOrder; - } - - /** - * Gets the count of expectations on the mocks - * - * @return int - */ - public function mockery_getExpectationCount() - { - $count = 0; - foreach ($this->_mocks as $mock) { - $count += $mock->mockery_getExpectationCount(); - } - - return $count; - } - - /** - * Fetch array of ordered groups - * - * @return array - */ - public function mockery_getGroups() - { - return $this->_groups; - } - - /** - * Set current ordered number - * - * @param int $order - * - * @return int The current order number that was set - */ - public function mockery_setCurrentOrder($order) - { - return $this->_currentOrder = $order; - } - - /** - * Set ordering for a group - * - * @param string $group - * @param int $order - * - * @return void - */ - public function mockery_setGroup($group, $order) - { - $this->_groups[$group] = $order; - } - - /** - * Tear down tasks for this container - * - * @throws PHPException - */ - public function mockery_teardown() - { - try { - $this->mockery_verify(); - } catch (PHPException $phpException) { - $this->mockery_close(); - - throw $phpException; - } - } - - /** - * Retrieves all exceptions thrown by mocks - * - * @return array - */ - public function mockery_thrownExceptions() - { - /** @var array $exceptions */ - $exceptions = []; - - foreach ($this->_mocks as $mock) { - foreach ($mock->mockery_thrownExceptions() as $exception) { - $exceptions[] = $exception; - } - } - - return $exceptions; - } - - /** - * Validate the current mock's ordering - * - * @param string $method - * @param int $order - * - * @throws Exception - */ - public function mockery_validateOrder($method, $order, LegacyMockInterface $mock) - { - if ($order < $this->_currentOrder) { - $exception = new InvalidOrderException( - sprintf( - 'Method %s called out of order: expected order %d, was %d', - $method, - $order, - $this->_currentOrder - ) - ); - - $exception->setMock($mock) - ->setMethodName($method) - ->setExpectedOrder($order) - ->setActualOrder($this->_currentOrder); - - throw $exception; - } - - $this->mockery_setCurrentOrder($order); - } - - /** - * Verify the container mocks - */ - public function mockery_verify() - { - foreach ($this->_mocks as $mock) { - $mock->mockery_verify(); - } - } - - /** - * Store a mock and set its container reference - * - * @template TRememberMock of object - * - * @param LegacyMockInterface&MockInterface&TRememberMock $mock - * - * @return LegacyMockInterface&MockInterface&TRememberMock - */ - public function rememberMock(LegacyMockInterface $mock) - { - $class = get_class($mock); - - if (! array_key_exists($class, $this->_mocks)) { - return $this->_mocks[$class] = $mock; - } - - /** - * This condition triggers for an instance mock where origin mock - * is already remembered - */ - return $this->_mocks[] = $mock; - } - - /** - * Retrieve the last remembered mock object, - * which is the same as saying retrieve the current mock being programmed where you have yet to call mock() - * to change it thus why the method name is "self" since it will be used during the programming of the same mock. - * - * @return LegacyMockInterface|MockInterface - */ - public function self() - { - $mocks = array_values($this->_mocks); - $index = count($mocks) - 1; - return $mocks[$index]; - } - - /** - * @template TMock of object - * @template TMixed - * - * @param class-string $mockName - * @param null|array $constructorArgs - * - * @return TMock - */ - protected function _getInstance($mockName, $constructorArgs = null) - { - if ($constructorArgs !== null) { - return (new ReflectionClass($mockName))->newInstanceArgs($constructorArgs); - } - - try { - $instance = $this->instantiator->instantiate($mockName); - } catch (PHPException $phpException) { - /** @var class-string $internalMockName */ - $internalMockName = $mockName . '_Internal'; - - if (! class_exists($internalMockName)) { - eval(sprintf( - 'class %s extends %s { public function __construct() {} }', - $internalMockName, - $mockName - )); - } - - $instance = new $internalMockName(); - } - - return $instance; - } - - protected function checkForNamedMockClashes($config) - { - $name = $config->getName(); - - if ($name === null) { - return; - } - - $hash = $config->getHash(); - - if (array_key_exists($name, $this->_namedMocks) && $hash !== $this->_namedMocks[$name]) { - throw new Exception( - sprintf("The mock named '%s' has been already defined with a different mock configuration", $name) - ); - } - - $this->_namedMocks[$name] = $hash; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/CountValidator/AtLeast.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/CountValidator/AtLeast.php deleted file mode 100644 index f250d755..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/CountValidator/AtLeast.php +++ /dev/null @@ -1,58 +0,0 @@ -_limit > $n) { - $exception = new InvalidCountException( - 'Method ' . (string) $this->_expectation - . ' from ' . $this->_expectation->getMock()->mockery_getName() - . ' should be called' . PHP_EOL - . ' at least ' . $this->_limit . ' times but called ' . $n - . ' times.' - ); - - $exception->setMock($this->_expectation->getMock()) - ->setMethodName((string) $this->_expectation) - ->setExpectedCountComparative('>=') - ->setExpectedCount($this->_limit) - ->setActualCount($n); - throw $exception; - } - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/CountValidator/AtMost.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/CountValidator/AtMost.php deleted file mode 100644 index 11bbe37c..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/CountValidator/AtMost.php +++ /dev/null @@ -1,45 +0,0 @@ -_limit < $n) { - $exception = new InvalidCountException( - 'Method ' . (string) $this->_expectation - . ' from ' . $this->_expectation->getMock()->mockery_getName() - . ' should be called' . PHP_EOL - . ' at most ' . $this->_limit . ' times but called ' . $n - . ' times.' - ); - $exception->setMock($this->_expectation->getMock()) - ->setMethodName((string) $this->_expectation) - ->setExpectedCountComparative('<=') - ->setExpectedCount($this->_limit) - ->setActualCount($n); - throw $exception; - } - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/CountValidator/CountValidatorAbstract.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/CountValidator/CountValidatorAbstract.php deleted file mode 100644 index 3ecfde3a..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/CountValidator/CountValidatorAbstract.php +++ /dev/null @@ -1,62 +0,0 @@ -_expectation = $expectation; - $this->_limit = $limit; - } - - /** - * Checks if the validator can accept an additional nth call - * - * @param int $n - * - * @return bool - */ - public function isEligible($n) - { - return $n < $this->_limit; - } - - /** - * Validate the call count against this validator - * - * @param int $n - * - * @return bool - */ - abstract public function validate($n); -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/CountValidator/Exact.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/CountValidator/Exact.php deleted file mode 100644 index df2c97b7..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/CountValidator/Exact.php +++ /dev/null @@ -1,48 +0,0 @@ -_limit !== $n) { - $because = $this->_expectation->getExceptionMessage(); - - $exception = new InvalidCountException( - 'Method ' . (string) $this->_expectation - . ' from ' . $this->_expectation->getMock()->mockery_getName() - . ' should be called' . PHP_EOL - . ' exactly ' . $this->_limit . ' times but called ' . $n - . ' times.' - . ($because ? ' Because ' . $this->_expectation->getExceptionMessage() : '') - ); - $exception->setMock($this->_expectation->getMock()) - ->setMethodName((string) $this->_expectation) - ->setExpectedCountComparative('=') - ->setExpectedCount($this->_limit) - ->setActualCount($n); - throw $exception; - } - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/CountValidator/Exception.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/CountValidator/Exception.php deleted file mode 100644 index b1c20cd4..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/CountValidator/Exception.php +++ /dev/null @@ -1,18 +0,0 @@ -dismissed = true; - // we sometimes stack them - $previous = $this->getPrevious(); - if (! $previous instanceof self) { - return; - } - - $previous->dismiss(); - } - - /** - * @return bool - */ - public function dismissed() - { - return $this->dismissed; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Exception/InvalidArgumentException.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Exception/InvalidArgumentException.php deleted file mode 100644 index d76e275e..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Exception/InvalidArgumentException.php +++ /dev/null @@ -1,15 +0,0 @@ -actual; - } - - /** - * @return int - */ - public function getExpectedCount() - { - return $this->expected; - } - - /** - * @return string - */ - public function getExpectedCountComparative() - { - return $this->expectedComparative; - } - - /** - * @return string|null - */ - public function getMethodName() - { - return $this->method; - } - - /** - * @return LegacyMockInterface|null - */ - public function getMock() - { - return $this->mockObject; - } - - /** - * @throws RuntimeException - * @return string|null - */ - public function getMockName() - { - $mock = $this->getMock(); - - if ($mock === null) { - return ''; - } - - return $mock->mockery_getName(); - } - - /** - * @param int $count - * @return self - */ - public function setActualCount($count) - { - $this->actual = $count; - return $this; - } - - /** - * @param int $count - * @return self - */ - public function setExpectedCount($count) - { - $this->expected = $count; - return $this; - } - - /** - * @param string $comp - * @return self - */ - public function setExpectedCountComparative($comp) - { - if (! in_array($comp, ['=', '>', '<', '>=', '<='], true)) { - throw new RuntimeException('Illegal comparative for expected call counts set: ' . $comp); - } - - $this->expectedComparative = $comp; - return $this; - } - - /** - * @param string $name - * @return self - */ - public function setMethodName($name) - { - $this->method = $name; - return $this; - } - - /** - * @return self - */ - public function setMock(LegacyMockInterface $mock) - { - $this->mockObject = $mock; - return $this; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Exception/InvalidOrderException.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Exception/InvalidOrderException.php deleted file mode 100644 index cf5bb70d..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Exception/InvalidOrderException.php +++ /dev/null @@ -1,125 +0,0 @@ -actual; - } - - /** - * @return int - */ - public function getExpectedOrder() - { - return $this->expected; - } - - /** - * @return string|null - */ - public function getMethodName() - { - return $this->method; - } - - /** - * @return LegacyMockInterface|null - */ - public function getMock() - { - return $this->mockObject; - } - - /** - * @return string|null - */ - public function getMockName() - { - $mock = $this->getMock(); - - if ($mock === null) { - return $mock; - } - - return $mock->mockery_getName(); - } - - /** - * @param int $count - * - * @return self - */ - public function setActualOrder($count) - { - $this->actual = $count; - return $this; - } - - /** - * @param int $count - * - * @return self - */ - public function setExpectedOrder($count) - { - $this->expected = $count; - return $this; - } - - /** - * @param string $name - * - * @return self - */ - public function setMethodName($name) - { - $this->method = $name; - return $this; - } - - /** - * @return self - */ - public function setMock(LegacyMockInterface $mock) - { - $this->mockObject = $mock; - return $this; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Exception/MockeryExceptionInterface.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Exception/MockeryExceptionInterface.php deleted file mode 100644 index 5ce07eee..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Exception/MockeryExceptionInterface.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $actual = []; - - /** - * @var string|null - */ - protected $method = null; - - /** - * @var LegacyMockInterface|null - */ - protected $mockObject = null; - - /** - * @return array - */ - public function getActualArguments() - { - return $this->actual; - } - - /** - * @return string|null - */ - public function getMethodName() - { - return $this->method; - } - - /** - * @return LegacyMockInterface|null - */ - public function getMock() - { - return $this->mockObject; - } - - /** - * @return string|null - */ - public function getMockName() - { - $mock = $this->getMock(); - - if ($mock === null) { - return $mock; - } - - return $mock->mockery_getName(); - } - - /** - * @todo Rename param `count` to `args` - * @template TMixed - * - * @param array $count - * @return self - */ - public function setActualArguments($count) - { - $this->actual = $count; - return $this; - } - - /** - * @param string $name - * @return self - */ - public function setMethodName($name) - { - $this->method = $name; - return $this; - } - - /** - * @return self - */ - public function setMock(LegacyMockInterface $mock) - { - $this->mockObject = $mock; - return $this; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Exception/RuntimeException.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Exception/RuntimeException.php deleted file mode 100644 index 5d4f643d..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Exception/RuntimeException.php +++ /dev/null @@ -1,17 +0,0 @@ -_mock = $mock; - $this->_name = $name; - $this->withAnyArgs(); - } - - /** - * Cloning logic - */ - public function __clone() - { - $newValidators = []; - - $countValidators = $this->_countValidators; - - foreach ($countValidators as $validator) { - $newValidators[] = clone $validator; - } - - $this->_countValidators = $newValidators; - } - - /** - * Return a string with the method name and arguments formatted - * - * @return string - */ - public function __toString() - { - return Mockery::formatArgs($this->_name, $this->_expectedArgs); - } - - /** - * Set a return value, or sequential queue of return values - * - * @param mixed ...$args - * - * @return self - */ - public function andReturn(...$args) - { - $this->_returnQueue = $args; - - return $this; - } - - /** - * Sets up a closure to return the nth argument from the expected method call - * - * @param int $index - * - * @return self - */ - public function andReturnArg($index) - { - if (! is_int($index) || $index < 0) { - throw new InvalidArgumentException( - 'Invalid argument index supplied. Index must be a non-negative integer.' - ); - } - - $closure = static function (...$args) use ($index) { - if (array_key_exists($index, $args)) { - return $args[$index]; - } - - throw new OutOfBoundsException( - 'Cannot return an argument value. No argument exists for the index ' . $index - ); - }; - - $this->_closureQueue = [$closure]; - - return $this; - } - - /** - * @return self - */ - public function andReturnFalse() - { - return $this->andReturn(false); - } - - /** - * Return null. This is merely a language construct for Mock describing. - * - * @return self - */ - public function andReturnNull() - { - return $this->andReturn(null); - } - - /** - * Set a return value, or sequential queue of return values - * - * @param mixed ...$args - * - * @return self - */ - public function andReturns(...$args) - { - return $this->andReturn(...$args); - } - - /** - * Return this mock, like a fluent interface - * - * @return self - */ - public function andReturnSelf() - { - return $this->andReturn($this->_mock); - } - - /** - * @return self - */ - public function andReturnTrue() - { - return $this->andReturn(true); - } - - /** - * Return a self-returning black hole object. - * - * @return self - */ - public function andReturnUndefined() - { - return $this->andReturn(new Undefined()); - } - - /** - * Set a closure or sequence of closures with which to generate return - * values. The arguments passed to the expected method are passed to the - * closures as parameters. - * - * @param callable ...$args - * - * @return self - */ - public function andReturnUsing(...$args) - { - $this->_closureQueue = $args; - - return $this; - } - - /** - * Set a sequential queue of return values with an array - * - * @return self - */ - public function andReturnValues(array $values) - { - return $this->andReturn(...$values); - } - - /** - * Register values to be set to a public property each time this expectation occurs - * - * @param string $name - * @param array ...$values - * - * @return self - */ - public function andSet($name, ...$values) - { - $this->_setQueue[$name] = $values; - - return $this; - } - - /** - * Set Exception class and arguments to that class to be thrown - * - * @param string|Throwable $exception - * @param string $message - * @param int $code - * - * @return self - */ - public function andThrow($exception, $message = '', $code = 0, ?\Exception $previous = null) - { - $this->_throw = true; - - if (is_object($exception)) { - return $this->andReturn($exception); - } - - return $this->andReturn(new $exception($message, $code, $previous)); - } - - /** - * Set Exception classes to be thrown - * - * @return self - */ - public function andThrowExceptions(array $exceptions) - { - $this->_throw = true; - - foreach ($exceptions as $exception) { - if (! is_object($exception)) { - throw new Exception('You must pass an array of exception objects to andThrowExceptions'); - } - } - - return $this->andReturnValues($exceptions); - } - - public function andThrows($exception, $message = '', $code = 0, ?\Exception $previous = null) - { - return $this->andThrow($exception, $message, $code, $previous); - } - - /** - * Sets up a closure that will yield each of the provided args - * - * @param mixed ...$args - * - * @return self - */ - public function andYield(...$args) - { - $closure = static function () use ($args) { - foreach ($args as $arg) { - yield $arg; - } - }; - - $this->_closureQueue = [$closure]; - - return $this; - } - - /** - * Sets next count validator to the AtLeast instance - * - * @return self - */ - public function atLeast() - { - $this->_countValidatorClass = AtLeast::class; - - return $this; - } - - /** - * Sets next count validator to the AtMost instance - * - * @return self - */ - public function atMost() - { - $this->_countValidatorClass = AtMost::class; - - return $this; - } - - /** - * Set the exception message - * - * @param string $message - * - * @return $this - */ - public function because($message) - { - $this->_because = $message; - - return $this; - } - - /** - * Shorthand for setting minimum and maximum constraints on call counts - * - * @param int $minimum - * @param int $maximum - */ - public function between($minimum, $maximum) - { - return $this->atLeast()->times($minimum)->atMost()->times($maximum); - } - - /** - * Mark this expectation as being a default - * - * @return self - */ - public function byDefault() - { - $director = $this->_mock->mockery_getExpectationsFor($this->_name); - - if ($director instanceof ExpectationDirector) { - $director->makeExpectationDefault($this); - } - - return $this; - } - - /** - * @return null|string - */ - public function getExceptionMessage() - { - return $this->_because; - } - - /** - * Return the parent mock of the expectation - * - * @return LegacyMockInterface|MockInterface - */ - public function getMock() - { - return $this->_mock; - } - - public function getName() - { - return $this->_name; - } - - /** - * Return order number - * - * @return int - */ - public function getOrderNumber() - { - return $this->_orderNumber; - } - - /** - * Indicates call order should apply globally - * - * @return self - */ - public function globally() - { - $this->_globally = true; - - return $this; - } - - /** - * Check if there is a constraint on call count - * - * @return bool - */ - public function isCallCountConstrained() - { - return $this->_countValidators !== []; - } - - /** - * Checks if this expectation is eligible for additional calls - * - * @return bool - */ - public function isEligible() - { - foreach ($this->_countValidators as $validator) { - if (! $validator->isEligible($this->_actualCount)) { - return false; - } - } - - return true; - } - - /** - * Check if passed arguments match an argument expectation - * - * @return bool - */ - public function matchArgs(array $args) - { - if ($this->isArgumentListMatcher()) { - return $this->_matchArg($this->_expectedArgs[0], $args); - } - - $argCount = count($args); - - $expectedArgsCount = count($this->_expectedArgs); - - if ($argCount === $expectedArgsCount) { - return $this->_matchArgs($args); - } - - $lastExpectedArgument = $this->_expectedArgs[$expectedArgsCount - 1]; - - if ($lastExpectedArgument instanceof AndAnyOtherArgs) { - $firstCorrespondingKey = array_search($lastExpectedArgument, $this->_expectedArgs, true); - - $args = array_slice($args, 0, $firstCorrespondingKey); - - return $this->_matchArgs($args); - } - - return false; - } - - /** - * Indicates that this expectation is never expected to be called - * - * @return self - */ - public function never() - { - return $this->times(0); - } - - /** - * Indicates that this expectation is expected exactly once - * - * @return self - */ - public function once() - { - return $this->times(1); - } - - /** - * Indicates that this expectation must be called in a specific given order - * - * @param string $group Name of the ordered group - * - * @return self - */ - public function ordered($group = null) - { - if ($this->_globally) { - $this->_globalOrderNumber = $this->_defineOrdered($group, $this->_mock->mockery_getContainer()); - } else { - $this->_orderNumber = $this->_defineOrdered($group, $this->_mock); - } - - $this->_globally = false; - - return $this; - } - - /** - * Flag this expectation as calling the original class method with - * the provided arguments instead of using a return value queue. - * - * @return self - */ - public function passthru() - { - if ($this->_mock instanceof Mock) { - throw new Exception( - 'Mock Objects not created from a loaded/existing class are incapable of passing method calls through to a parent class' - ); - } - - $this->_passthru = true; - - return $this; - } - - /** - * Alias to andSet(). Allows the natural English construct - * - set('foo', 'bar')->andReturn('bar') - * - * @param string $name - * @param mixed $value - * - * @return self - */ - public function set($name, $value) - { - return $this->andSet(...func_get_args()); - } - - /** - * Indicates the number of times this expectation should occur - * - * @param int $limit - * - * @throws InvalidArgumentException - * - * @return self - */ - public function times($limit = null) - { - if ($limit === null) { - return $this; - } - - if (! is_int($limit)) { - throw new InvalidArgumentException('The passed Times limit should be an integer value'); - } - - if ($this->_expectedCount === 0) { - @trigger_error(self::ERROR_ZERO_INVOCATION, E_USER_DEPRECATED); - // throw new \InvalidArgumentException(self::ERROR_ZERO_INVOCATION); - } - - if ($limit === 0) { - $this->_countValidators = []; - } - - $this->_expectedCount = $limit; - - $this->_countValidators[$this->_countValidatorClass] = new $this->_countValidatorClass($this, $limit); - - if ($this->_countValidatorClass !== Exact::class) { - $this->_countValidatorClass = Exact::class; - - unset($this->_countValidators[$this->_countValidatorClass]); - } - - return $this; - } - - /** - * Indicates that this expectation is expected exactly twice - * - * @return self - */ - public function twice() - { - return $this->times(2); - } - - /** - * Verify call order - * - * @return void - */ - public function validateOrder() - { - if ($this->_orderNumber) { - $this->_mock->mockery_validateOrder((string) $this, $this->_orderNumber, $this->_mock); - } - - if ($this->_globalOrderNumber) { - $this->_mock->mockery_getContainer()->mockery_validateOrder( - (string) $this, - $this->_globalOrderNumber, - $this->_mock - ); - } - } - - /** - * Verify this expectation - * - * @return void - */ - public function verify() - { - foreach ($this->_countValidators as $validator) { - $validator->validate($this->_actualCount); - } - } - - /** - * Verify the current call, i.e. that the given arguments match those - * of this expectation - * - * @throws Throwable - * - * @return mixed - */ - public function verifyCall(array $args) - { - $this->validateOrder(); - - ++$this->_actualCount; - - if ($this->_passthru === true) { - return $this->_mock->mockery_callSubjectMethod($this->_name, $args); - } - - $return = $this->_getReturnValue($args); - - $this->throwAsNecessary($return); - - $this->_setValues(); - - return $return; - } - - /** - * Expected argument setter for the expectation - * - * @param mixed ...$args - * - * @return self - */ - public function with(...$args) - { - return $this->withArgs($args); - } - - /** - * Set expectation that any arguments are acceptable - * - * @return self - */ - public function withAnyArgs() - { - $this->_expectedArgs = [new AnyArgs()]; - - return $this; - } - - /** - * Expected arguments for the expectation passed as an array or a closure that matches each passed argument on - * each function call. - * - * @param array|Closure $argsOrClosure - * - * @return self - */ - public function withArgs($argsOrClosure) - { - if (is_array($argsOrClosure)) { - return $this->withArgsInArray($argsOrClosure); - } - - if ($argsOrClosure instanceof Closure) { - return $this->withArgsMatchedByClosure($argsOrClosure); - } - - throw new InvalidArgumentException(sprintf( - 'Call to %s with an invalid argument (%s), only array and closure are allowed', - __METHOD__, - $argsOrClosure - )); - } - - /** - * Set with() as no arguments expected - * - * @return self - */ - public function withNoArgs() - { - $this->_expectedArgs = [new NoArgs()]; - - return $this; - } - - /** - * Expected arguments should partially match the real arguments - * - * @param mixed ...$expectedArgs - * - * @return self - */ - public function withSomeOfArgs(...$expectedArgs) - { - return $this->withArgs(static function (...$args) use ($expectedArgs): bool { - foreach ($expectedArgs as $expectedArg) { - if (! in_array($expectedArg, $args, true)) { - return false; - } - } - - return true; - }); - } - - /** - * Indicates this expectation should occur zero or more times - * - * @return self - */ - public function zeroOrMoreTimes() - { - return $this->atLeast()->never(); - } - - /** - * Setup the ordering tracking on the mock or mock container - * - * @param string $group - * @param object $ordering - * - * @return int - */ - protected function _defineOrdered($group, $ordering) - { - $groups = $ordering->mockery_getGroups(); - if ($group === null) { - return $ordering->mockery_allocateOrder(); - } - - if (array_key_exists($group, $groups)) { - return $groups[$group]; - } - - $result = $ordering->mockery_allocateOrder(); - - $ordering->mockery_setGroup($group, $result); - - return $result; - } - - /** - * Fetch the return value for the matching args - * - * @return mixed - */ - protected function _getReturnValue(array $args) - { - $closureQueueCount = count($this->_closureQueue); - - if ($closureQueueCount > 1) { - return array_shift($this->_closureQueue)(...$args); - } - - if ($closureQueueCount > 0) { - return current($this->_closureQueue)(...$args); - } - - $returnQueueCount = count($this->_returnQueue); - - if ($returnQueueCount > 1) { - return array_shift($this->_returnQueue); - } - - if ($returnQueueCount > 0) { - return current($this->_returnQueue); - } - - return $this->_mock->mockery_returnValueForMethod($this->_name); - } - - /** - * Check if passed argument matches an argument expectation - * - * @param mixed $expected - * @param mixed $actual - * - * @return bool - */ - protected function _matchArg($expected, &$actual) - { - if ($expected === $actual) { - return true; - } - - if ($expected instanceof MatcherInterface) { - return $expected->match($actual); - } - - if ($expected instanceof Constraint) { - return (bool) $expected->evaluate($actual, '', true); - } - - if ($expected instanceof Matcher || $expected instanceof Hamcrest_Matcher) { - @trigger_error('Hamcrest package has been deprecated and will be removed in 2.0', E_USER_DEPRECATED); - - return $expected->matches($actual); - } - - if (is_object($expected)) { - $matcher = Mockery::getConfiguration()->getDefaultMatcher(get_class($expected)); - - return $matcher === null ? false : $this->_matchArg(new $matcher($expected), $actual); - } - - if (is_object($actual) && is_string($expected) && $actual instanceof $expected) { - return true; - } - - return $expected == $actual; - } - - /** - * Check if the passed arguments match the expectations, one by one. - * - * @param array $args - * - * @return bool - */ - protected function _matchArgs($args) - { - for ($index = 0, $argCount = count($args); $index < $argCount; ++$index) { - $param = &$args[$index]; - - if (! $this->_matchArg($this->_expectedArgs[$index], $param)) { - return false; - } - } - - return true; - } - - /** - * Sets public properties with queued values to the mock object - * - * @return void - */ - protected function _setValues() - { - $mockClass = get_class($this->_mock); - - $container = $this->_mock->mockery_getContainer(); - - $mocks = $container->getMocks(); - - foreach ($this->_setQueue as $name => &$values) { - if ($values === []) { - continue; - } - - $value = array_shift($values); - - $this->_mock->{$name} = $value; - - foreach ($mocks as $mock) { - if (! $mock instanceof $mockClass) { - continue; - } - - if (! $mock->mockery_isInstance()) { - continue; - } - - $mock->{$name} = $value; - } - } - } - - /** - * @template TExpectedArg - * - * @param TExpectedArg $expectedArg - * - * @return bool - */ - private function isAndAnyOtherArgumentsMatcher($expectedArg) - { - return $expectedArg instanceof AndAnyOtherArgs; - } - - /** - * Check if the registered expectation is an ArgumentListMatcher - * - * @return bool - */ - private function isArgumentListMatcher() - { - return $this->_expectedArgs !== [] && $this->_expectedArgs[0] instanceof ArgumentListMatcher; - } - - /** - * Throws an exception if the expectation has been configured to do so - * - * @param Throwable $return - * - * @throws Throwable - * - * @return void - */ - private function throwAsNecessary($return) - { - if (! $this->_throw) { - return; - } - - if (! $return instanceof Throwable) { - return; - } - - throw $return; - } - - /** - * Expected arguments for the expectation passed as an array - * - * @return self - */ - private function withArgsInArray(array $arguments) - { - if ($arguments === []) { - return $this->withNoArgs(); - } - - $this->_expectedArgs = $arguments; - - return $this; - } - - /** - * Expected arguments have to be matched by the given closure. - * - * @return self - */ - private function withArgsMatchedByClosure(Closure $closure) - { - $this->_expectedArgs = [new MultiArgumentClosure($closure)]; - - return $this; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/ExpectationDirector.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/ExpectationDirector.php deleted file mode 100644 index 286268b8..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/ExpectationDirector.php +++ /dev/null @@ -1,242 +0,0 @@ - - */ - protected $_defaults = []; - - /** - * Stores an array of all expectations for this mock - * - * @var list - */ - protected $_expectations = []; - - /** - * The expected order of next call - * - * @var int - */ - protected $_expectedOrder = null; - - /** - * Mock object the director is attached to - * - * @var LegacyMockInterface|MockInterface - */ - protected $_mock = null; - - /** - * Method name the director is directing - * - * @var string - */ - protected $_name = null; - - /** - * Constructor - * - * @param string $name - */ - public function __construct($name, LegacyMockInterface $mock) - { - $this->_name = $name; - $this->_mock = $mock; - } - - /** - * Add a new expectation to the director - */ - public function addExpectation(Expectation $expectation) - { - $this->_expectations[] = $expectation; - } - - /** - * Handle a method call being directed by this instance - * - * @return mixed - */ - public function call(array $args) - { - $expectation = $this->findExpectation($args); - if ($expectation !== null) { - return $expectation->verifyCall($args); - } - - $exception = new NoMatchingExpectationException( - 'No matching handler found for ' - . $this->_mock->mockery_getName() . '::' - . Mockery::formatArgs($this->_name, $args) - . '. Either the method was unexpected or its arguments matched' - . ' no expected argument list for this method' - . PHP_EOL . PHP_EOL - . Mockery::formatObjects($args) - ); - - $exception->setMock($this->_mock) - ->setMethodName($this->_name) - ->setActualArguments($args); - - throw $exception; - } - - /** - * Attempt to locate an expectation matching the provided args - * - * @return mixed - */ - public function findExpectation(array $args) - { - $expectation = null; - - if ($this->_expectations !== []) { - $expectation = $this->_findExpectationIn($this->_expectations, $args); - } - - if ($expectation === null && $this->_defaults !== []) { - return $this->_findExpectationIn($this->_defaults, $args); - } - - return $expectation; - } - - /** - * Return all expectations assigned to this director - * - * @return array - */ - public function getDefaultExpectations() - { - return $this->_defaults; - } - - /** - * Return the number of expectations assigned to this director. - * - * @return int - */ - public function getExpectationCount() - { - $count = 0; - - $expectations = $this->getExpectations(); - - if ($expectations === []) { - $expectations = $this->getDefaultExpectations(); - } - - foreach ($expectations as $expectation) { - if ($expectation->isCallCountConstrained()) { - ++$count; - } - } - - return $count; - } - - /** - * Return all expectations assigned to this director - * - * @return array - */ - public function getExpectations() - { - return $this->_expectations; - } - - /** - * Make the given expectation a default for all others assuming it was correctly created last - * - * @throws Exception - * - * @return void - */ - public function makeExpectationDefault(Expectation $expectation) - { - if (end($this->_expectations) === $expectation) { - array_pop($this->_expectations); - - array_unshift($this->_defaults, $expectation); - - return; - } - - throw new Exception('Cannot turn a previously defined expectation into a default'); - } - - /** - * Verify all expectations of the director - * - * @throws Exception - * - * @return void - */ - public function verify() - { - if ($this->_expectations !== []) { - foreach ($this->_expectations as $expectation) { - $expectation->verify(); - } - - return; - } - - foreach ($this->_defaults as $expectation) { - $expectation->verify(); - } - } - - /** - * Search current array of expectations for a match - * - * @param array $expectations - * - * @return null|ExpectationInterface - */ - protected function _findExpectationIn(array $expectations, array $args) - { - foreach ($expectations as $expectation) { - if (! $expectation->isEligible()) { - continue; - } - - if (! $expectation->matchArgs($args)) { - continue; - } - - return $expectation; - } - - foreach ($expectations as $expectation) { - if ($expectation->matchArgs($args)) { - return $expectation; - } - } - - return null; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/ExpectationInterface.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/ExpectationInterface.php deleted file mode 100644 index 29c27d3a..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/ExpectationInterface.php +++ /dev/null @@ -1,38 +0,0 @@ -once(); - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/CachingGenerator.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/CachingGenerator.php deleted file mode 100644 index deff12e2..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/CachingGenerator.php +++ /dev/null @@ -1,43 +0,0 @@ - - */ - protected $cache = []; - - /** - * @var Generator - */ - protected $generator; - - public function __construct(Generator $generator) - { - $this->generator = $generator; - } - - /** - * @return string - */ - public function generate(MockConfiguration $config) - { - $hash = $config->getHash(); - - if (array_key_exists($hash, $this->cache)) { - return $this->cache[$hash]; - } - - return $this->cache[$hash] = $this->generator->generate($config); - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/DefinedTargetClass.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/DefinedTargetClass.php deleted file mode 100644 index f2a3f327..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/DefinedTargetClass.php +++ /dev/null @@ -1,188 +0,0 @@ -rfc = $rfc; - $this->name = $alias ?? $rfc->getName(); - } - - /** - * @return class-string - */ - public function __toString() - { - return $this->name; - } - - /** - * @param class-string $name - * @param class-string|null $alias - * @return self - */ - public static function factory($name, $alias = null) - { - return new self(new ReflectionClass($name), $alias); - } - - /** - * @return list - */ - public function getAttributes() - { - if (PHP_VERSION_ID < 80000) { - return []; - } - - return array_unique( - array_merge( - ['\AllowDynamicProperties'], - array_map( - static function (ReflectionAttribute $attribute): string { - return '\\' . $attribute->getName(); - }, - $this->rfc->getAttributes() - ) - ) - ); - } - - /** - * @return array - */ - public function getInterfaces() - { - return array_map( - static function (ReflectionClass $interface): self { - return new self($interface); - }, - $this->rfc->getInterfaces() - ); - } - - /** - * @return list - */ - public function getMethods() - { - return array_map( - static function (ReflectionMethod $method): Method { - return new Method($method); - }, - $this->rfc->getMethods() - ); - } - - /** - * @return class-string - */ - public function getName() - { - return $this->name; - } - - /** - * @return string - */ - public function getNamespaceName() - { - return $this->rfc->getNamespaceName(); - } - - /** - * @return string - */ - public function getShortName() - { - return $this->rfc->getShortName(); - } - - /** - * @return bool - */ - public function hasInternalAncestor() - { - if ($this->rfc->isInternal()) { - return true; - } - - $child = $this->rfc; - while ($parent = $child->getParentClass()) { - if ($parent->isInternal()) { - return true; - } - - $child = $parent; - } - - return false; - } - - /** - * @param class-string $interface - * @return bool - */ - public function implementsInterface($interface) - { - return $this->rfc->implementsInterface($interface); - } - - /** - * @return bool - */ - public function inNamespace() - { - return $this->rfc->inNamespace(); - } - - /** - * @return bool - */ - public function isAbstract() - { - return $this->rfc->isAbstract(); - } - - /** - * @return bool - */ - public function isFinal() - { - return $this->rfc->isFinal(); - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/Generator.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/Generator.php deleted file mode 100644 index 9dc59c83..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/Generator.php +++ /dev/null @@ -1,19 +0,0 @@ -method = $method; - } - - /** - * @template TArgs - * @template TMixed - * - * @param string $method - * @param array $args - * - * @return TMixed - */ - public function __call($method, $args) - { - /** @var TMixed */ - return $this->method->{$method}(...$args); - } - - /** - * @return list - */ - public function getParameters() - { - return array_map(static function (ReflectionParameter $parameter) { - return new Parameter($parameter); - }, $this->method->getParameters()); - } - - /** - * @return null|string - */ - public function getReturnType() - { - return Reflector::getReturnType($this->method); - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/MockConfiguration.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/MockConfiguration.php deleted file mode 100644 index 1849c3e2..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/MockConfiguration.php +++ /dev/null @@ -1,709 +0,0 @@ - - */ - protected $allMethods = []; - - /** - * Methods that should specifically not be mocked - * - * This is currently populated with stuff we don't know how to deal with, should really be somewhere else - */ - protected $blackListedMethods = []; - - protected $constantsMap = []; - - /** - * An instance mock is where we override the original class before it's autoloaded - * - * @var bool - */ - protected $instanceMock = false; - - /** - * If true, overrides original class destructor - * - * @var bool - */ - protected $mockOriginalDestructor = false; - - /** - * The class name we'd like to use for a generated mock - * - * @var string|null - */ - protected $name; - - /** - * Param overrides - * - * @var array - */ - protected $parameterOverrides = []; - - /** - * A class that we'd like to mock - * @var TargetClassInterface|null - */ - protected $targetClass; - - /** - * @var class-string|null - */ - protected $targetClassName; - - /** - * @var array - */ - protected $targetInterfaceNames = []; - - /** - * A number of interfaces we'd like to mock, keyed by name to attempt to keep unique - * - * @var array - */ - protected $targetInterfaces = []; - - /** - * An object we'd like our mock to proxy to - * - * @var object|null - */ - protected $targetObject; - - /** - * @var array - */ - protected $targetTraitNames = []; - - /** - * A number of traits we'd like to mock, keyed by name to attempt to keep unique - * - * @var array - */ - protected $targetTraits = []; - - /** - * If not empty, only these methods will be mocked - * - * @var array - */ - protected $whiteListedMethods = []; - - /** - * @param array $targets - * @param array $blackListedMethods - * @param array $whiteListedMethods - * @param string|null $name - * @param bool $instanceMock - * @param array $parameterOverrides - * @param bool $mockOriginalDestructor - * @param array|scalar> $constantsMap - */ - public function __construct( - array $targets = [], - array $blackListedMethods = [], - array $whiteListedMethods = [], - $name = null, - $instanceMock = false, - array $parameterOverrides = [], - $mockOriginalDestructor = false, - array $constantsMap = [] - ) { - $this->addTargets($targets); - $this->blackListedMethods = $blackListedMethods; - $this->whiteListedMethods = $whiteListedMethods; - $this->name = $name; - $this->instanceMock = $instanceMock; - $this->parameterOverrides = $parameterOverrides; - $this->mockOriginalDestructor = $mockOriginalDestructor; - $this->constantsMap = $constantsMap; - } - - /** - * Generate a suitable name based on the config - * - * @return string - */ - public function generateName() - { - $nameBuilder = new MockNameBuilder(); - - $targetObject = $this->getTargetObject(); - if ($targetObject !== null) { - $className = get_class($targetObject); - - $nameBuilder->addPart(strpos($className, '@') !== false ? md5($className) : $className); - } - - $targetClass = $this->getTargetClass(); - if ($targetClass instanceof TargetClassInterface) { - $className = $targetClass->getName(); - - $nameBuilder->addPart(strpos($className, '@') !== false ? md5($className) : $className); - } - - foreach ($this->getTargetInterfaces() as $targetInterface) { - $nameBuilder->addPart($targetInterface->getName()); - } - - return $nameBuilder->build(); - } - - /** - * @return array - */ - public function getBlackListedMethods() - { - return $this->blackListedMethods; - } - - /** - * @return array> - */ - public function getConstantsMap() - { - return $this->constantsMap; - } - - /** - * Attempt to create a hash of the configuration, in order to allow caching - * - * @TODO workout if this will work - * - * @return string - */ - public function getHash() - { - $vars = [ - 'targetClassName' => $this->targetClassName, - 'targetInterfaceNames' => $this->targetInterfaceNames, - 'targetTraitNames' => $this->targetTraitNames, - 'name' => $this->name, - 'blackListedMethods' => $this->blackListedMethods, - 'whiteListedMethod' => $this->whiteListedMethods, - 'instanceMock' => $this->instanceMock, - 'parameterOverrides' => $this->parameterOverrides, - 'mockOriginalDestructor' => $this->mockOriginalDestructor, - ]; - - return md5(serialize($vars)); - } - - /** - * Gets a list of methods from the classes, interfaces and objects and filters them appropriately. - * Lot's of filtering going on, perhaps we could have filter classes to iterate through - * - * @return list - */ - public function getMethodsToMock() - { - $methods = $this->getAllMethods(); - - foreach ($methods as $key => $method) { - if ($method->isFinal()) { - unset($methods[$key]); - } - } - - /** - * Whitelist trumps everything else - */ - $whiteListedMethods = $this->getWhiteListedMethods(); - if ($whiteListedMethods !== []) { - $whitelist = array_map('strtolower', $whiteListedMethods); - - return array_filter($methods, static function ($method) use ($whitelist) { - if ($method->isAbstract()) { - return true; - } - - return in_array(strtolower($method->getName()), $whitelist, true); - }); - } - - /** - * Remove blacklisted methods - */ - $blackListedMethods = $this->getBlackListedMethods(); - if ($blackListedMethods !== []) { - $blacklist = array_map('strtolower', $blackListedMethods); - - $methods = array_filter($methods, static function ($method) use ($blacklist) { - return ! in_array(strtolower($method->getName()), $blacklist, true); - }); - } - - /** - * Internal objects can not be instantiated with newInstanceArgs and if - * they implement Serializable, unserialize will have to be called. As - * such, we can't mock it and will need a pass to add a dummy - * implementation - */ - $targetClass = $this->getTargetClass(); - - if ( - $targetClass !== null - && $targetClass->implementsInterface(Serializable::class) - && $targetClass->hasInternalAncestor() - ) { - $methods = array_filter($methods, static function ($method) { - return $method->getName() !== 'unserialize'; - }); - } - - return array_values($methods); - } - - /** - * @return string|null - */ - public function getName() - { - return $this->name; - } - - /** - * @return string - */ - public function getNamespaceName() - { - $parts = explode('\\', $this->getName()); - array_pop($parts); - - if ($parts !== []) { - return implode('\\', $parts); - } - - return ''; - } - - /** - * @return array - */ - public function getParameterOverrides() - { - return $this->parameterOverrides; - } - - /** - * @return string - */ - public function getShortName() - { - $parts = explode('\\', $this->getName()); - return array_pop($parts); - } - - /** - * @return null|TargetClassInterface - */ - public function getTargetClass() - { - if ($this->targetClass) { - return $this->targetClass; - } - - if (! $this->targetClassName) { - return null; - } - - if (class_exists($this->targetClassName)) { - $alias = null; - if (strpos($this->targetClassName, '@') !== false) { - $alias = (new MockNameBuilder()) - ->addPart('anonymous_class') - ->addPart(md5($this->targetClassName)) - ->build(); - class_alias($this->targetClassName, $alias); - } - - $dtc = DefinedTargetClass::factory($this->targetClassName, $alias); - - if ($this->getTargetObject() === null && $dtc->isFinal()) { - throw new Exception( - 'The class ' . $this->targetClassName . ' is marked final and its methods' - . ' cannot be replaced. Classes marked final can be passed in' - . ' to \Mockery::mock() as instantiated objects to create a' - . ' partial mock, but only if the mock is not subject to type' - . ' hinting checks.' - ); - } - - $this->targetClass = $dtc; - } else { - $this->targetClass = UndefinedTargetClass::factory($this->targetClassName); - } - - return $this->targetClass; - } - - /** - * @return class-string|null - */ - public function getTargetClassName() - { - return $this->targetClassName; - } - - /** - * @return list - */ - public function getTargetInterfaces() - { - if ($this->targetInterfaces !== []) { - return $this->targetInterfaces; - } - - foreach ($this->targetInterfaceNames as $targetInterface) { - if (! interface_exists($targetInterface)) { - $this->targetInterfaces[] = UndefinedTargetClass::factory($targetInterface); - continue; - } - - $dtc = DefinedTargetClass::factory($targetInterface); - $extendedInterfaces = array_keys($dtc->getInterfaces()); - $extendedInterfaces[] = $targetInterface; - - $traversableFound = false; - $iteratorShiftedToFront = false; - foreach ($extendedInterfaces as $interface) { - if (! $traversableFound && preg_match('/^\\?Iterator(|Aggregate)$/i', $interface)) { - break; - } - - if (preg_match('/^\\\\?IteratorAggregate$/i', $interface)) { - $this->targetInterfaces[] = DefinedTargetClass::factory('\\IteratorAggregate'); - $iteratorShiftedToFront = true; - - continue; - } - - if (preg_match('/^\\\\?Iterator$/i', $interface)) { - $this->targetInterfaces[] = DefinedTargetClass::factory('\\Iterator'); - $iteratorShiftedToFront = true; - - continue; - } - - if (preg_match('/^\\\\?Traversable$/i', $interface)) { - $traversableFound = true; - } - } - - if ($traversableFound && ! $iteratorShiftedToFront) { - $this->targetInterfaces[] = DefinedTargetClass::factory('\\IteratorAggregate'); - } - - /** - * We never straight up implement Traversable - */ - $isTraversable = preg_match('/^\\\\?Traversable$/i', $targetInterface); - if ($isTraversable === 0 || $isTraversable === false) { - $this->targetInterfaces[] = $dtc; - } - } - - return $this->targetInterfaces = array_unique($this->targetInterfaces); - } - - /** - * @return object|null - */ - public function getTargetObject() - { - return $this->targetObject; - } - - /** - * @return list - */ - public function getTargetTraits() - { - if ($this->targetTraits !== []) { - return $this->targetTraits; - } - - foreach ($this->targetTraitNames as $targetTrait) { - $this->targetTraits[] = DefinedTargetClass::factory($targetTrait); - } - - $this->targetTraits = array_unique($this->targetTraits); // just in case - return $this->targetTraits; - } - - /** - * @return array - */ - public function getWhiteListedMethods() - { - return $this->whiteListedMethods; - } - - /** - * @return bool - */ - public function isInstanceMock() - { - return $this->instanceMock; - } - - /** - * @return bool - */ - public function isMockOriginalDestructor() - { - return $this->mockOriginalDestructor; - } - - /** - * @param class-string $className - * @return self - */ - public function rename($className) - { - $targets = []; - - if ($this->targetClassName) { - $targets[] = $this->targetClassName; - } - - if ($this->targetInterfaceNames) { - $targets = array_merge($targets, $this->targetInterfaceNames); - } - - if ($this->targetTraitNames) { - $targets = array_merge($targets, $this->targetTraitNames); - } - - if ($this->targetObject) { - $targets[] = $this->targetObject; - } - - return new self( - $targets, - $this->blackListedMethods, - $this->whiteListedMethods, - $className, - $this->instanceMock, - $this->parameterOverrides, - $this->mockOriginalDestructor, - $this->constantsMap - ); - } - - /** - * We declare the __callStatic method to handle undefined stuff, if the class - * we're mocking has also defined it, we need to comply with their interface - * - * @return bool - */ - public function requiresCallStaticTypeHintRemoval() - { - foreach ($this->getAllMethods() as $method) { - if ($method->getName() === '__callStatic') { - $params = $method->getParameters(); - - if (! array_key_exists(1, $params)) { - return false; - } - - return ! $params[1]->isArray(); - } - } - - return false; - } - - /** - * We declare the __call method to handle undefined stuff, if the class - * we're mocking has also defined it, we need to comply with their interface - * - * @return bool - */ - public function requiresCallTypeHintRemoval() - { - foreach ($this->getAllMethods() as $method) { - if ($method->getName() === '__call') { - $params = $method->getParameters(); - return ! $params[1]->isArray(); - } - } - - return false; - } - - /** - * @param class-string|object $target - */ - protected function addTarget($target) - { - if (is_object($target)) { - $this->setTargetObject($target); - $this->setTargetClassName(get_class($target)); - return; - } - - if ($target[0] !== '\\') { - $target = '\\' . $target; - } - - if (class_exists($target)) { - $this->setTargetClassName($target); - return; - } - - if (interface_exists($target)) { - $this->addTargetInterfaceName($target); - return; - } - - if (trait_exists($target)) { - $this->addTargetTraitName($target); - return; - } - - /** - * Default is to set as class, or interface if class already set - * - * Don't like this condition, can't remember what the default - * targetClass is for - */ - if ($this->getTargetClassName()) { - $this->addTargetInterfaceName($target); - return; - } - - $this->setTargetClassName($target); - } - - /** - * If we attempt to implement Traversable, - * we must ensure we are also implementing either Iterator or IteratorAggregate, - * and that whichever one it is comes before Traversable in the list of implements. - * - * @param class-string $targetInterface - */ - protected function addTargetInterfaceName($targetInterface) - { - $this->targetInterfaceNames[] = $targetInterface; - } - - /** - * @param array $interfaces - */ - protected function addTargets($interfaces) - { - foreach ($interfaces as $interface) { - $this->addTarget($interface); - } - } - - /** - * @param class-string $targetTraitName - */ - protected function addTargetTraitName($targetTraitName) - { - $this->targetTraitNames[] = $targetTraitName; - } - - /** - * @return list - */ - protected function getAllMethods() - { - if ($this->allMethods) { - return $this->allMethods; - } - - $classes = $this->getTargetInterfaces(); - - if ($this->getTargetClass()) { - $classes[] = $this->getTargetClass(); - } - - $methods = []; - foreach ($classes as $class) { - $methods = array_merge($methods, $class->getMethods()); - } - - foreach ($this->getTargetTraits() as $trait) { - foreach ($trait->getMethods() as $method) { - if ($method->isAbstract()) { - $methods[] = $method; - } - } - } - - $names = []; - $methods = array_filter($methods, static function ($method) use (&$names) { - if (in_array($method->getName(), $names, true)) { - return false; - } - - $names[] = $method->getName(); - return true; - }); - - return $this->allMethods = $methods; - } - - /** - * @param class-string $targetClassName - */ - protected function setTargetClassName($targetClassName) - { - $this->targetClassName = $targetClassName; - } - - /** - * @param object $object - */ - protected function setTargetObject($object) - { - $this->targetObject = $object; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/MockConfigurationBuilder.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/MockConfigurationBuilder.php deleted file mode 100644 index 989325e3..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/MockConfigurationBuilder.php +++ /dev/null @@ -1,252 +0,0 @@ - - */ - protected $blackListedMethods = [ - '__call', - '__callStatic', - '__clone', - '__wakeup', - '__set', - '__get', - '__toString', - '__isset', - '__destruct', - '__debugInfo', ## mocking this makes it difficult to debug with xdebug - - // below are reserved words in PHP - '__halt_compiler', 'abstract', 'and', 'array', 'as', - 'break', 'callable', 'case', 'catch', 'class', - 'clone', 'const', 'continue', 'declare', 'default', - 'die', 'do', 'echo', 'else', 'elseif', - 'empty', 'enddeclare', 'endfor', 'endforeach', 'endif', - 'endswitch', 'endwhile', 'eval', 'exit', 'extends', - 'final', 'for', 'foreach', 'function', 'global', - 'goto', 'if', 'implements', 'include', 'include_once', - 'instanceof', 'insteadof', 'interface', 'isset', 'list', - 'namespace', 'new', 'or', 'print', 'private', - 'protected', 'public', 'require', 'require_once', 'return', - 'static', 'switch', 'throw', 'trait', 'try', - 'unset', 'use', 'var', 'while', 'xor', - ]; - - /** - * @var array - */ - protected $constantsMap = []; - - /** - * @var bool - */ - protected $instanceMock = false; - - /** - * @var bool - */ - protected $mockOriginalDestructor = false; - - /** - * @var string - */ - protected $name; - - /** - * @var array - */ - protected $parameterOverrides = []; - - /** - * @var list - */ - protected $php7SemiReservedKeywords = [ - 'callable', 'class', 'trait', 'extends', 'implements', 'static', 'abstract', 'final', - 'public', 'protected', 'private', 'const', 'enddeclare', 'endfor', 'endforeach', 'endif', - 'endwhile', 'and', 'global', 'goto', 'instanceof', 'insteadof', 'interface', 'namespace', 'new', - 'or', 'xor', 'try', 'use', 'var', 'exit', 'list', 'clone', 'include', 'include_once', 'throw', - 'array', 'print', 'echo', 'require', 'require_once', 'return', 'else', 'elseif', 'default', - 'break', 'continue', 'switch', 'yield', 'function', 'if', 'endswitch', 'finally', 'for', 'foreach', - 'declare', 'case', 'do', 'while', 'as', 'catch', 'die', 'self', 'parent', - ]; - - /** - * @var array - */ - protected $targets = []; - - /** - * @var array - */ - protected $whiteListedMethods = []; - - public function __construct() - { - $this->blackListedMethods = array_diff($this->blackListedMethods, $this->php7SemiReservedKeywords); - } - - /** - * @param string $blackListedMethod - * @return self - */ - public function addBlackListedMethod($blackListedMethod) - { - $this->blackListedMethods[] = $blackListedMethod; - return $this; - } - - /** - * @param list $blackListedMethods - * @return self - */ - public function addBlackListedMethods(array $blackListedMethods) - { - foreach ($blackListedMethods as $method) { - $this->addBlackListedMethod($method); - } - - return $this; - } - - /** - * @param class-string $target - * @return self - */ - public function addTarget($target) - { - $this->targets[] = $target; - - return $this; - } - - /** - * @param list $targets - * @return self - */ - public function addTargets($targets) - { - foreach ($targets as $target) { - $this->addTarget($target); - } - - return $this; - } - - /** - * @return self - */ - public function addWhiteListedMethod($whiteListedMethod) - { - $this->whiteListedMethods[] = $whiteListedMethod; - return $this; - } - - /** - * @return self - */ - public function addWhiteListedMethods(array $whiteListedMethods) - { - foreach ($whiteListedMethods as $method) { - $this->addWhiteListedMethod($method); - } - - return $this; - } - - /** - * @return MockConfiguration - */ - public function getMockConfiguration() - { - return new MockConfiguration( - $this->targets, - $this->blackListedMethods, - $this->whiteListedMethods, - $this->name, - $this->instanceMock, - $this->parameterOverrides, - $this->mockOriginalDestructor, - $this->constantsMap - ); - } - - /** - * @param list $blackListedMethods - * @return self - */ - public function setBlackListedMethods(array $blackListedMethods) - { - $this->blackListedMethods = $blackListedMethods; - return $this; - } - - /** - * @return self - */ - public function setConstantsMap(array $map) - { - $this->constantsMap = $map; - - return $this; - } - - /** - * @param bool $instanceMock - */ - public function setInstanceMock($instanceMock) - { - $this->instanceMock = (bool) $instanceMock; - - return $this; - } - - /** - * @param bool $mockDestructor - */ - public function setMockOriginalDestructor($mockDestructor) - { - $this->mockOriginalDestructor = (bool) $mockDestructor; - return $this; - } - - /** - * @param string $name - */ - public function setName($name) - { - $this->name = $name; - return $this; - } - - /** - * @return self - */ - public function setParameterOverrides(array $overrides) - { - $this->parameterOverrides = $overrides; - return $this; - } - - /** - * @param list $whiteListedMethods - * @return self - */ - public function setWhiteListedMethods(array $whiteListedMethods) - { - $this->whiteListedMethods = $whiteListedMethods; - return $this; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/MockDefinition.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/MockDefinition.php deleted file mode 100644 index 337c31f6..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/MockDefinition.php +++ /dev/null @@ -1,64 +0,0 @@ -getName()) { - throw new InvalidArgumentException('MockConfiguration must contain a name'); - } - - $this->config = $config; - $this->code = $code; - } - - /** - * @return string - */ - public function getClassName() - { - return $this->config->getName(); - } - - /** - * @return string - */ - public function getCode() - { - return $this->code; - } - - /** - * @return MockConfiguration - */ - public function getConfig() - { - return $this->config; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/MockNameBuilder.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/MockNameBuilder.php deleted file mode 100644 index 424cdc59..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/MockNameBuilder.php +++ /dev/null @@ -1,51 +0,0 @@ - - */ - protected $parts = []; - - /** - * @param string $part - */ - public function addPart($part) - { - $this->parts[] = $part; - - return $this; - } - - /** - * @return string - */ - public function build() - { - $parts = ['Mockery', static::$mockCounter++]; - - foreach ($this->parts as $part) { - $parts[] = str_replace('\\', '_', $part); - } - - return implode('_', $parts); - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/Parameter.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/Parameter.php deleted file mode 100644 index 442a713c..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/Parameter.php +++ /dev/null @@ -1,130 +0,0 @@ -rfp = $rfp; - } - - /** - * Proxy all method calls to the reflection parameter. - * - * @template TMixed - * @template TResult - * - * @param string $method - * @param array $args - * - * @return TResult - */ - public function __call($method, array $args) - { - /** @var TResult */ - return $this->rfp->{$method}(...$args); - } - - /** - * Get the reflection class for the parameter type, if it exists. - * - * This will be null if there was no type, or it was a scalar or a union. - * - * @return null|ReflectionClass - * - * @deprecated since 1.3.3 and will be removed in 2.0. - */ - public function getClass() - { - $typeHint = Reflector::getTypeHint($this->rfp, true); - - return class_exists($typeHint) ? DefinedTargetClass::factory($typeHint, false) : null; - } - - /** - * Get the name of the parameter. - * - * Some internal classes have funny looking definitions! - * - * @return string - */ - public function getName() - { - $name = $this->rfp->getName(); - - if (! $name || $name === '...') { - return 'arg' . self::$parameterCounter++; - } - - return $name; - } - - /** - * Get the string representation for the paramater type. - * - * @return null|string - */ - public function getTypeHint() - { - return Reflector::getTypeHint($this->rfp); - } - - /** - * Get the string representation for the paramater type. - * - * @return string - * - * @deprecated since 1.3.2 and will be removed in 2.0. Use getTypeHint() instead. - */ - public function getTypeHintAsString() - { - return (string) Reflector::getTypeHint($this->rfp, true); - } - - /** - * Determine if the parameter is an array. - * - * @return bool - */ - public function isArray() - { - return Reflector::isArray($this->rfp); - } - - /** - * Determine if the parameter is variadic. - * - * @return bool - */ - public function isVariadic() - { - return $this->rfp->isVariadic(); - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/AvoidMethodClashPass.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/AvoidMethodClashPass.php deleted file mode 100644 index 4a7e2a57..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/AvoidMethodClashPass.php +++ /dev/null @@ -1,42 +0,0 @@ -getName(); - }, $config->getMethodsToMock()); - - foreach (['allows', 'expects'] as $method) { - if (in_array($method, $names, true)) { - $code = preg_replace(sprintf('#// start method %s.*// end method %s#ms', $method, $method), '', $code); - - $code = str_replace(' implements MockInterface', ' implements LegacyMockInterface', $code); - } - } - - return $code; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/CallTypeHintPass.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/CallTypeHintPass.php deleted file mode 100644 index 747fdeee..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/CallTypeHintPass.php +++ /dev/null @@ -1,42 +0,0 @@ -requiresCallTypeHintRemoval()) { - $code = str_replace( - 'public function __call($method, array $args)', - 'public function __call($method, $args)', - $code - ); - } - - if ($config->requiresCallStaticTypeHintRemoval()) { - return str_replace( - 'public static function __callStatic($method, array $args)', - 'public static function __callStatic($method, $args)', - $code - ); - } - - return $code; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/ClassAttributesPass.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/ClassAttributesPass.php deleted file mode 100644 index 86b157ea..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/ClassAttributesPass.php +++ /dev/null @@ -1,40 +0,0 @@ -getTargetClass(); - - if (! $class) { - return $code; - } - - /** @var array $attributes */ - $attributes = $class->getAttributes(); - - if ($attributes !== []) { - return str_replace('#[\AllowDynamicProperties]', '#[' . implode(',', $attributes) . ']', $code); - } - - return $code; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/ClassNamePass.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/ClassNamePass.php deleted file mode 100644 index 0280a064..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/ClassNamePass.php +++ /dev/null @@ -1,35 +0,0 @@ -getNamespaceName(); - - $namespace = ltrim($namespace, '\\'); - - $className = $config->getShortName(); - - $code = str_replace('namespace Mockery;', $namespace !== '' ? 'namespace ' . $namespace . ';' : '', $code); - - return str_replace('class Mock', 'class ' . $className, $code); - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/ClassPass.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/ClassPass.php deleted file mode 100644 index ba4826c6..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/ClassPass.php +++ /dev/null @@ -1,49 +0,0 @@ -getTargetClass(); - - if (! $target) { - return $code; - } - - if ($target->isFinal()) { - return $code; - } - - $className = ltrim($target->getName(), '\\'); - - if (! class_exists($className)) { - Mockery::declareClass($className); - } - - return str_replace( - 'implements MockInterface', - 'extends \\' . $className . ' implements MockInterface', - $code - ); - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/ConstantsPass.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/ConstantsPass.php deleted file mode 100644 index 1088a0de..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/ConstantsPass.php +++ /dev/null @@ -1,51 +0,0 @@ -getConstantsMap(); - if ($cm === []) { - return $code; - } - - $name = $config->getName(); - if (! array_key_exists($name, $cm)) { - return $code; - } - - $constantsCode = ''; - foreach ($cm[$name] as $constant => $value) { - $constantsCode .= sprintf("\n const %s = %s;\n", $constant, var_export($value, true)); - } - - $offset = strrpos($code, '}'); - if ($offset === false) { - return $code; - } - - return substr_replace($code, $constantsCode, $offset) . '}' . PHP_EOL; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/InstanceMockPass.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/InstanceMockPass.php deleted file mode 100644 index 78adba48..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/InstanceMockPass.php +++ /dev/null @@ -1,78 +0,0 @@ -_mockery_ignoreVerification = false; - \$associatedRealObject = \Mockery::fetchMock(__CLASS__); - - foreach (get_object_vars(\$this) as \$attr => \$val) { - if (\$attr !== "_mockery_ignoreVerification" && \$attr !== "_mockery_expectations") { - \$this->\$attr = \$associatedRealObject->\$attr; - } - } - - \$directors = \$associatedRealObject->mockery_getExpectations(); - foreach (\$directors as \$method=>\$director) { - // get the director method needed - \$existingDirector = \$this->mockery_getExpectationsFor(\$method); - if (!\$existingDirector) { - \$existingDirector = new \Mockery\ExpectationDirector(\$method, \$this); - \$this->mockery_setExpectationsFor(\$method, \$existingDirector); - } - \$expectations = \$director->getExpectations(); - foreach (\$expectations as \$expectation) { - \$clonedExpectation = clone \$expectation; - \$existingDirector->addExpectation(\$clonedExpectation); - } - \$defaultExpectations = \$director->getDefaultExpectations(); - foreach (array_reverse(\$defaultExpectations) as \$expectation) { - \$clonedExpectation = clone \$expectation; - \$existingDirector->addExpectation(\$clonedExpectation); - \$existingDirector->makeExpectationDefault(\$clonedExpectation); - } - } - \Mockery::getContainer()->rememberMock(\$this); - - \$this->_mockery_constructorCalled(func_get_args()); - } -MOCK; - - /** - * @param string $code - * @return string - */ - public function apply($code, MockConfiguration $config) - { - if ($config->isInstanceMock()) { - return $this->appendToClass($code, static::INSTANCE_MOCK_CODE); - } - - return $code; - } - - protected function appendToClass($class, $code) - { - $lastBrace = strrpos($class, '}'); - return substr($class, 0, $lastBrace) . $code . "\n }\n"; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/InterfacePass.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/InterfacePass.php deleted file mode 100644 index 4eabcb08..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/InterfacePass.php +++ /dev/null @@ -1,41 +0,0 @@ -getTargetInterfaces() as $i) { - $name = ltrim($i->getName(), '\\'); - if (! interface_exists($name)) { - Mockery::declareInterface($name); - } - } - - $interfaces = array_reduce($config->getTargetInterfaces(), static function ($code, $i) { - return $code . ', \\' . ltrim($i->getName(), '\\'); - }, ''); - - return str_replace('implements MockInterface', 'implements MockInterface' . $interfaces, $code); - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/MagicMethodTypeHintsPass.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/MagicMethodTypeHintsPass.php deleted file mode 100644 index f4191fd8..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/MagicMethodTypeHintsPass.php +++ /dev/null @@ -1,197 +0,0 @@ -getMagicMethods($config->getTargetClass()); - foreach ($config->getTargetInterfaces() as $interface) { - $magicMethods = array_merge($magicMethods, $this->getMagicMethods($interface)); - } - - foreach ($magicMethods as $method) { - $code = $this->applyMagicTypeHints($code, $method); - } - - return $code; - } - - /** - * Returns the magic methods within the - * passed DefinedTargetClass. - * - * @return array - */ - public function getMagicMethods(?TargetClassInterface $class = null) - { - if (! $class instanceof TargetClassInterface) { - return []; - } - - return array_filter($class->getMethods(), function (Method $method) { - return in_array($method->getName(), $this->mockMagicMethods, true); - }); - } - - protected function renderTypeHint(Parameter $param) - { - $typeHint = $param->getTypeHint(); - - return $typeHint === null ? '' : sprintf('%s ', $typeHint); - } - - /** - * Applies type hints of magic methods from - * class to the passed code. - * - * @param int $code - * - * @return string - */ - private function applyMagicTypeHints($code, Method $method) - { - if ($this->isMethodWithinCode($code, $method)) { - $namedParameters = $this->getOriginalParameters($code, $method); - $code = preg_replace( - $this->getDeclarationRegex($method->getName()), - $this->getMethodDeclaration($method, $namedParameters), - $code - ); - } - - return $code; - } - - /** - * Returns a regex string used to match the - * declaration of some method. - * - * @param string $methodName - * - * @return string - */ - private function getDeclarationRegex($methodName) - { - return sprintf('/public\s+(?:static\s+)?function\s+%s\s*\(.*\)\s*(?=\{)/i', $methodName); - } - - /** - * Gets the declaration code, as a string, for the passed method. - * - * @param array $namedParameters - * - * @return string - */ - private function getMethodDeclaration(Method $method, array $namedParameters) - { - $declaration = 'public'; - $declaration .= $method->isStatic() ? ' static' : ''; - $declaration .= ' function ' . $method->getName() . '('; - - foreach ($method->getParameters() as $index => $parameter) { - $declaration .= $this->renderTypeHint($parameter); - $name = $namedParameters[$index] ?? $parameter->getName(); - $declaration .= '$' . $name; - $declaration .= ','; - } - - $declaration = rtrim($declaration, ','); - $declaration .= ') '; - - $returnType = $method->getReturnType(); - if ($returnType !== null) { - $declaration .= sprintf(': %s', $returnType); - } - - return $declaration; - } - - /** - * Returns the method original parameters, as they're - * described in the $code string. - * - * @param int $code - * - * @return array - */ - private function getOriginalParameters($code, Method $method) - { - $matches = []; - $parameterMatches = []; - - preg_match($this->getDeclarationRegex($method->getName()), $code, $matches); - - if ($matches !== []) { - preg_match_all('/(?<=\$)(\w+)+/i', $matches[0], $parameterMatches); - } - - $groupMatches = end($parameterMatches); - - return is_array($groupMatches) ? $groupMatches : [$groupMatches]; - } - - /** - * Checks if the method is declared within code. - * - * @param int $code - * - * @return bool - */ - private function isMethodWithinCode($code, Method $method) - { - return preg_match($this->getDeclarationRegex($method->getName()), $code) === 1; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/MethodDefinitionPass.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/MethodDefinitionPass.php deleted file mode 100644 index 68d37f9d..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/MethodDefinitionPass.php +++ /dev/null @@ -1,199 +0,0 @@ -getMethodsToMock() as $method) { - if ($method->isPublic()) { - $methodDef = 'public'; - } elseif ($method->isProtected()) { - $methodDef = 'protected'; - } else { - $methodDef = 'private'; - } - - if ($method->isStatic()) { - $methodDef .= ' static'; - } - - $methodDef .= ' function '; - $methodDef .= $method->returnsReference() ? ' & ' : ''; - $methodDef .= $method->getName(); - $methodDef .= $this->renderParams($method, $config); - $methodDef .= $this->renderReturnType($method); - $methodDef .= $this->renderMethodBody($method, $config); - - $code = $this->appendToClass($code, $methodDef); - } - - return $code; - } - - protected function appendToClass($class, $code) - { - $lastBrace = strrpos($class, '}'); - return substr($class, 0, $lastBrace) . $code . "\n }\n"; - } - - protected function renderParams(Method $method, $config) - { - $class = $method->getDeclaringClass(); - if ($class->isInternal()) { - $overrides = $config->getParameterOverrides(); - - if (isset($overrides[strtolower($class->getName())][$method->getName()])) { - return '(' . implode(',', $overrides[strtolower($class->getName())][$method->getName()]) . ')'; - } - } - - $methodParams = []; - $params = $method->getParameters(); - $isPhp81 = PHP_VERSION_ID >= 80100; - foreach ($params as $param) { - $paramDef = $this->renderTypeHint($param); - $paramDef .= $param->isPassedByReference() ? '&' : ''; - $paramDef .= $param->isVariadic() ? '...' : ''; - $paramDef .= '$' . $param->getName(); - - if (! $param->isVariadic()) { - if ($param->isDefaultValueAvailable() !== false) { - $defaultValue = $param->getDefaultValue(); - - if (is_object($defaultValue)) { - $prefix = get_class($defaultValue); - if ($isPhp81) { - if (enum_exists($prefix)) { - $prefix = var_export($defaultValue, true); - } elseif ( - ! $param->isDefaultValueConstant() && - // "Parameter #1 [ F\Q\CN $a = new \F\Q\CN(param1, param2: 2) ] - preg_match( - '#\s.*?\s=\snew\s(.*?)\s]$#', - $param->__toString(), - $matches - ) === 1 - ) { - $prefix = 'new ' . $matches[1]; - } - } - } else { - $prefix = var_export($defaultValue, true); - } - - $paramDef .= ' = ' . $prefix; - } elseif ($param->isOptional()) { - $paramDef .= ' = null'; - } - } - - $methodParams[] = $paramDef; - } - - return '(' . implode(', ', $methodParams) . ')'; - } - - protected function renderReturnType(Method $method) - { - $type = $method->getReturnType(); - - return $type ? sprintf(': %s', $type) : ''; - } - - protected function renderTypeHint(Parameter $param) - { - $typeHint = $param->getTypeHint(); - - return $typeHint === null ? '' : sprintf('%s ', $typeHint); - } - - private function renderMethodBody($method, $config) - { - $invoke = $method->isStatic() ? 'static::_mockery_handleStaticMethodCall' : '$this->_mockery_handleMethodCall'; - $body = <<getDeclaringClass(); - $class_name = strtolower($class->getName()); - $overrides = $config->getParameterOverrides(); - if (isset($overrides[$class_name][$method->getName()])) { - $params = array_values($overrides[$class_name][$method->getName()]); - $paramCount = count($params); - for ($i = 0; $i < $paramCount; ++$i) { - $param = $params[$i]; - if (strpos($param, '&') !== false) { - $body .= << {$i}) { - \$argv[{$i}] = {$param}; -} - -BODY; - } - } - } else { - $params = array_values($method->getParameters()); - $paramCount = count($params); - for ($i = 0; $i < $paramCount; ++$i) { - $param = $params[$i]; - if (! $param->isPassedByReference()) { - continue; - } - - $body .= << {$i}) { - \$argv[{$i}] =& \${$param->getName()}; -} - -BODY; - } - } - - $body .= "\$ret = {$invoke}(__FUNCTION__, \$argv);\n"; - - if (! in_array($method->getReturnType(), ['never', 'void'], true)) { - $body .= "return \$ret;\n"; - } - - return $body . "}\n"; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/Pass.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/Pass.php deleted file mode 100644 index 9200873b..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/Pass.php +++ /dev/null @@ -1,22 +0,0 @@ - '/public function __wakeup\(\)\s+\{.*?\}/sm', - '__toString' => '/public function __toString\(\)\s+(:\s+string)?\s*\{.*?\}/sm', - ]; - - /** - * @param string $code - * @return string - */ - public function apply($code, MockConfiguration $config) - { - $target = $config->getTargetClass(); - - if (! $target instanceof TargetClassInterface) { - return $code; - } - - foreach ($target->getMethods() as $method) { - if (! $method->isFinal()) { - continue; - } - - if (! isset($this->methods[$method->getName()])) { - continue; - } - - $code = preg_replace($this->methods[$method->getName()], '', $code); - } - - return $code; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/RemoveDestructorPass.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/RemoveDestructorPass.php deleted file mode 100644 index 7fd86e7b..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/RemoveDestructorPass.php +++ /dev/null @@ -1,39 +0,0 @@ -getTargetClass(); - - if (! $target) { - return $code; - } - - if (! $config->isMockOriginalDestructor()) { - return preg_replace('/public function __destruct\(\)\s+\{.*?\}/sm', '', $code); - } - - return $code; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/RemoveUnserializeForInternalSerializableClassesPass.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/RemoveUnserializeForInternalSerializableClassesPass.php deleted file mode 100644 index 5bbb578e..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/RemoveUnserializeForInternalSerializableClassesPass.php +++ /dev/null @@ -1,57 +0,0 @@ -getTargetClass(); - - if (! $target) { - return $code; - } - - if (! $target->hasInternalAncestor() || ! $target->implementsInterface('Serializable')) { - return $code; - } - - return $this->appendToClass( - $code, - PHP_VERSION_ID < 80100 ? self::DUMMY_METHOD_DEFINITION_LEGACY : self::DUMMY_METHOD_DEFINITION - ); - } - - protected function appendToClass($class, $code) - { - $lastBrace = strrpos($class, '}'); - return substr($class, 0, $lastBrace) . $code . "\n }\n"; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/TraitPass.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/TraitPass.php deleted file mode 100644 index faf2a90f..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulation/Pass/TraitPass.php +++ /dev/null @@ -1,39 +0,0 @@ -getTargetTraits(); - - if ($traits === []) { - return $code; - } - - $useStatements = array_map(static function ($trait) { - return 'use \\\\' . ltrim($trait->getName(), '\\') . ';'; - }, $traits); - - return preg_replace('/^{$/m', "{\n " . implode("\n ", $useStatements) . "\n", $code); - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulationGenerator.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulationGenerator.php deleted file mode 100644 index 5cb14217..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/StringManipulationGenerator.php +++ /dev/null @@ -1,102 +0,0 @@ - - */ - protected $passes = []; - - /** - * @var string - */ - private $code; - - /** - * @param list $passes - */ - public function __construct(array $passes) - { - $this->passes = $passes; - - $this->code = file_get_contents(__DIR__ . '/../Mock.php'); - } - - /** - * @param Pass $pass - * @return void - */ - public function addPass(Pass $pass) - { - $this->passes[] = $pass; - } - - /** - * @return MockDefinition - */ - public function generate(MockConfiguration $config) - { - $className = $config->getName() ?: $config->generateName(); - - $namedConfig = $config->rename($className); - - $code = $this->code; - foreach ($this->passes as $pass) { - $code = $pass->apply($code, $namedConfig); - } - - return new MockDefinition($namedConfig, $code); - } - - /** - * Creates a new StringManipulationGenerator with the default passes - * - * @return StringManipulationGenerator - */ - public static function withDefaultPasses() - { - return new static([ - new CallTypeHintPass(), - new MagicMethodTypeHintsPass(), - new ClassPass(), - new TraitPass(), - new ClassNamePass(), - new InstanceMockPass(), - new InterfacePass(), - new AvoidMethodClashPass(), - new MethodDefinitionPass(), - new RemoveUnserializeForInternalSerializableClassesPass(), - new RemoveBuiltinMethodsThatAreFinalPass(), - new RemoveDestructorPass(), - new ConstantsPass(), - new ClassAttributesPass(), - ]); - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/TargetClassInterface.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/TargetClassInterface.php deleted file mode 100644 index 730ae1b5..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/TargetClassInterface.php +++ /dev/null @@ -1,104 +0,0 @@ - - */ - public function getAttributes(); - - /** - * Returns the targetClass's interfaces. - * - * @return array - */ - public function getInterfaces(); - - /** - * Returns the targetClass's methods. - * - * @return array - */ - public function getMethods(); - - /** - * Returns the targetClass's name. - * - * @return class-string - */ - public function getName(); - - /** - * Returns the targetClass's namespace name. - * - * @return string - */ - public function getNamespaceName(); - - /** - * Returns the targetClass's short name. - * - * @return string - */ - public function getShortName(); - - /** - * Returns whether the targetClass has - * an internal ancestor. - * - * @return bool - */ - public function hasInternalAncestor(); - - /** - * Returns whether the targetClass is in - * the passed interface. - * - * @param class-string|string $interface - * - * @return bool - */ - public function implementsInterface($interface); - - /** - * Returns whether the targetClass is in namespace. - * - * @return bool - */ - public function inNamespace(); - - /** - * Returns whether the targetClass is abstract. - * - * @return bool - */ - public function isAbstract(); - - /** - * Returns whether the targetClass is final. - * - * @return bool - */ - public function isFinal(); -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/UndefinedTargetClass.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/UndefinedTargetClass.php deleted file mode 100644 index ea722025..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Generator/UndefinedTargetClass.php +++ /dev/null @@ -1,141 +0,0 @@ -name = $name; - } - - /** - * @return class-string - */ - public function __toString() - { - return $this->name; - } - - /** - * @param class-string $name - * @return self - */ - public static function factory($name) - { - return new self($name); - } - - /** - * @return list - */ - public function getAttributes() - { - return []; - } - - /** - * @return list - */ - public function getInterfaces() - { - return []; - } - - /** - * @return list - */ - public function getMethods() - { - return []; - } - - /** - * @return class-string - */ - public function getName() - { - return $this->name; - } - - /** - * @return string - */ - public function getNamespaceName() - { - $parts = explode('\\', ltrim($this->getName(), '\\')); - array_pop($parts); - return implode('\\', $parts); - } - - /** - * @return string - */ - public function getShortName() - { - $parts = explode('\\', $this->getName()); - return array_pop($parts); - } - - /** - * @return bool - */ - public function hasInternalAncestor() - { - return false; - } - - /** - * @param class-string $interface - * @return bool - */ - public function implementsInterface($interface) - { - return false; - } - - /** - * @return bool - */ - public function inNamespace() - { - return $this->getNamespaceName() !== ''; - } - - /** - * @return bool - */ - public function isAbstract() - { - return false; - } - - /** - * @return bool - */ - public function isFinal() - { - return false; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/HigherOrderMessage.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/HigherOrderMessage.php deleted file mode 100644 index 42df34be..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/HigherOrderMessage.php +++ /dev/null @@ -1,52 +0,0 @@ -mock = $mock; - $this->method = $method; - } - - /** - * @param string $method - * @param array $args - * - * @return Expectation|ExpectationInterface|HigherOrderMessage - */ - public function __call($method, $args) - { - if ($this->method === 'shouldNotHaveReceived') { - return $this->mock->{$this->method}($method, $args); - } - - $expectation = $this->mock->{$this->method}($method); - - return $expectation->withArgs($args); - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Instantiator.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Instantiator.php deleted file mode 100644 index 11b8e5ba..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Instantiator.php +++ /dev/null @@ -1,147 +0,0 @@ - $className - * - * @throws InvalidArgumentException - * @throws UnexpectedValueException - * - * @return TClass - */ - public function instantiate($className): object - { - return $this->buildFactory($className)(); - } - - /** - * @throws UnexpectedValueException - */ - private function attemptInstantiationViaUnSerialization( - ReflectionClass $reflectionClass, - string $serializedString - ): void { - set_error_handler(static function ($code, $message, $file, $line) use ($reflectionClass, &$error): void { - $msg = sprintf( - 'Could not produce an instance of "%s" via un-serialization, since an error was triggered in file "%s" at line "%d"', - $reflectionClass->getName(), - $file, - $line - ); - - $error = new UnexpectedValueException($msg, 0, new Exception($message, $code)); - }); - - try { - unserialize($serializedString); - } catch (Exception $exception) { - restore_error_handler(); - - throw new UnexpectedValueException( - sprintf( - 'An exception was raised while trying to instantiate an instance of "%s" via un-serialization', - $reflectionClass->getName() - ), - 0, - $exception - ); - } - - restore_error_handler(); - - if ($error instanceof UnexpectedValueException) { - throw $error; - } - } - - /** - * Builds a {@see Closure} capable of instantiating the given $className without invoking its constructor. - */ - private function buildFactory(string $className): Closure - { - $reflectionClass = $this->getReflectionClass($className); - - if ($this->isInstantiableViaReflection($reflectionClass)) { - return static function () use ($reflectionClass) { - return $reflectionClass->newInstanceWithoutConstructor(); - }; - } - - $serializedString = sprintf('O:%d:"%s":0:{}', strlen($className), $className); - - $this->attemptInstantiationViaUnSerialization($reflectionClass, $serializedString); - - return static function () use ($serializedString) { - return unserialize($serializedString); - }; - } - - /** - * @throws InvalidArgumentException - */ - private function getReflectionClass(string $className): ReflectionClass - { - if (! class_exists($className)) { - throw new InvalidArgumentException(sprintf('Class:%s does not exist', $className)); - } - - $reflection = new ReflectionClass($className); - - if ($reflection->isAbstract()) { - throw new InvalidArgumentException(sprintf('Class:%s is an abstract class', $className)); - } - - return $reflection; - } - - /** - * Verifies whether the given class is to be considered internal - */ - private function hasInternalAncestors(ReflectionClass $reflectionClass): bool - { - do { - if ($reflectionClass->isInternal()) { - return true; - } - } while ($reflectionClass = $reflectionClass->getParentClass()); - - return false; - } - - /** - * Verifies if the class is instantiable via reflection - */ - private function isInstantiableViaReflection(ReflectionClass $reflectionClass): bool - { - return ! ($reflectionClass->isInternal() && $reflectionClass->isFinal()); - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/LegacyMockInterface.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/LegacyMockInterface.php deleted file mode 100644 index 5c904e13..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/LegacyMockInterface.php +++ /dev/null @@ -1,258 +0,0 @@ - $args - * - * @return null|Expectation - */ - public function mockery_findExpectation($method, array $args); - - /** - * Return the container for this mock - * - * @return Container - */ - public function mockery_getContainer(); - - /** - * Get current ordered number - * - * @return int - */ - public function mockery_getCurrentOrder(); - - /** - * Gets the count of expectations for this mock - * - * @return int - */ - public function mockery_getExpectationCount(); - - /** - * Return the expectations director for the given method - * - * @param string $method - * - * @return null|ExpectationDirector - */ - public function mockery_getExpectationsFor($method); - - /** - * Fetch array of ordered groups - * - * @return array - */ - public function mockery_getGroups(); - - /** - * @return string[] - */ - public function mockery_getMockableMethods(); - - /** - * @return array - */ - public function mockery_getMockableProperties(); - - /** - * Return the name for this mock - * - * @return string - */ - public function mockery_getName(); - - /** - * Alternative setup method to constructor - * - * @param object $partialObject - * - * @return void - */ - public function mockery_init(?Container $container = null, $partialObject = null); - - /** - * @return bool - */ - public function mockery_isAnonymous(); - - /** - * Set current ordered number - * - * @param int $order - * - * @return int - */ - public function mockery_setCurrentOrder($order); - - /** - * Return the expectations director for the given method - * - * @param string $method - * - * @return null|ExpectationDirector - */ - public function mockery_setExpectationsFor($method, ExpectationDirector $director); - - /** - * Set ordering for a group - * - * @param string $group - * @param int $order - * - * @return void - */ - public function mockery_setGroup($group, $order); - - /** - * Tear down tasks for this mock - * - * @return void - */ - public function mockery_teardown(); - - /** - * Validate the current mock's ordering - * - * @param string $method - * @param int $order - * - * @throws Exception - * - * @return void - */ - public function mockery_validateOrder($method, $order); - - /** - * Iterate across all expectation directors and validate each - * - * @throws Throwable - * - * @return void - */ - public function mockery_verify(); - - /** - * Allows additional methods to be mocked that do not explicitly exist on mocked class - * - * @param string $method the method name to be mocked - * @return self - */ - public function shouldAllowMockingMethod($method); - - /** - * @return self - */ - public function shouldAllowMockingProtectedMethods(); - - /** - * Set mock to defer unexpected methods to its parent if possible - * - * @deprecated since 1.4.0. Please use makePartial() instead. - * - * @return self - */ - public function shouldDeferMissing(); - - /** - * @return self - */ - public function shouldHaveBeenCalled(); - - /** - * @template TMixed - * @param string $method - * @param null|array|Closure $args - * - * @return self - */ - public function shouldHaveReceived($method, $args = null); - - /** - * Set mock to ignore unexpected methods and return Undefined class - * - * @template TReturnValue - * - * @param null|TReturnValue $returnValue the default return value for calls to missing functions on this mock - * - * @return self - */ - public function shouldIgnoreMissing($returnValue = null); - - /** - * @template TMixed - * @param null|array $args (optional) - * - * @return self - */ - public function shouldNotHaveBeenCalled(?array $args = null); - - /** - * @template TMixed - * @param string $method - * @param null|array|Closure $args - * - * @return self - */ - public function shouldNotHaveReceived($method, $args = null); - - /** - * Shortcut method for setting an expectation that a method should not be called. - * - * @param string ...$methodNames one or many methods that are expected not to be called in this mock - * - * @return Expectation|ExpectationInterface|HigherOrderMessage - */ - public function shouldNotReceive(...$methodNames); - - /** - * Set expected method calls - * - * @param string ...$methodNames one or many methods that are expected to be called in this mock - * - * @return Expectation|ExpectationInterface|HigherOrderMessage - */ - public function shouldReceive(...$methodNames); -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Loader/EvalLoader.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Loader/EvalLoader.php deleted file mode 100644 index 63247e87..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Loader/EvalLoader.php +++ /dev/null @@ -1,32 +0,0 @@ -getClassName(), false)) { - return; - } - - eval('?>' . $definition->getCode()); - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Loader/Loader.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Loader/Loader.php deleted file mode 100644 index 90d56890..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Loader/Loader.php +++ /dev/null @@ -1,23 +0,0 @@ -path = realpath($path); - } - - public function __destruct() - { - $files = array_diff(glob($this->path . DIRECTORY_SEPARATOR . 'Mockery_*.php') ?: [], [$this->lastPath]); - - foreach ($files as $file) { - @unlink($file); - } - } - - /** - * Load the given mock definition - * - * @return void - */ - public function load(MockDefinition $definition) - { - if (class_exists($definition->getClassName(), false)) { - return; - } - - $this->lastPath = sprintf('%s%s%s.php', $this->path, DIRECTORY_SEPARATOR, uniqid('Mockery_', false)); - - file_put_contents($this->lastPath, $definition->getCode()); - - if (file_exists($this->lastPath)) { - require $this->lastPath; - } - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/AndAnyOtherArgs.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/AndAnyOtherArgs.php deleted file mode 100644 index f4a698e2..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/AndAnyOtherArgs.php +++ /dev/null @@ -1,38 +0,0 @@ -'; - } - - /** - * Check if the actual value matches the expected. - * - * @template TMixed - * - * @param TMixed $actual - * - * @return bool - */ - public function match(&$actual) - { - return true; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/Any.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/Any.php deleted file mode 100644 index 5bb4b2f0..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/Any.php +++ /dev/null @@ -1,38 +0,0 @@ -'; - } - - /** - * Check if the actual value matches the expected. - * - * @template TMixed - * - * @param TMixed $actual - * - * @return bool - */ - public function match(&$actual) - { - return true; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/AnyArgs.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/AnyArgs.php deleted file mode 100644 index 0e1ce8c6..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/AnyArgs.php +++ /dev/null @@ -1,31 +0,0 @@ -'; - } - - /** - * @template TMixed - * - * @param TMixed $actual - * - * @return bool - */ - public function match(&$actual) - { - return true; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/AnyOf.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/AnyOf.php deleted file mode 100644 index 425dcae3..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/AnyOf.php +++ /dev/null @@ -1,41 +0,0 @@ -'; - } - - /** - * Check if the actual value does not match the expected (in this - * case it's specifically NOT expected). - * - * @template TMixed - * - * @param TMixed $actual - * - * @return bool - */ - public function match(&$actual) - { - return in_array($actual, $this->_expected, true); - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/ArgumentListMatcher.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/ArgumentListMatcher.php deleted file mode 100644 index 56e58f69..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/ArgumentListMatcher.php +++ /dev/null @@ -1,15 +0,0 @@ -'; - } - - /** - * Check if the actual value matches the expected. - * - * @template TMixed - * - * @param TMixed $actual - * - * @return bool - */ - public function match(&$actual) - { - return ($this->_expected)($actual) === true; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/Contains.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/Contains.php deleted file mode 100644 index 9fdeb831..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/Contains.php +++ /dev/null @@ -1,61 +0,0 @@ -_expected as $v) { - $elements[] = (string) $v; - } - - return ''; - } - - /** - * Check if the actual value matches the expected. - * - * @template TMixed - * - * @param TMixed $actual - * - * @return bool - */ - public function match(&$actual) - { - $values = array_values($actual); - foreach ($this->_expected as $exp) { - $match = false; - foreach ($values as $val) { - if ($exp === $val || $exp == $val) { - $match = true; - break; - } - } - - if ($match === false) { - return false; - } - } - - return true; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/Ducktype.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/Ducktype.php deleted file mode 100644 index 3f3a9ef7..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/Ducktype.php +++ /dev/null @@ -1,52 +0,0 @@ -_expected) . ']>'; - } - - /** - * Check if the actual value matches the expected. - * - * @template TMixed - * - * @param TMixed $actual - * - * @return bool - */ - public function match(&$actual) - { - if (! is_object($actual)) { - return false; - } - - foreach ($this->_expected as $method) { - if (! method_exists($actual, $method)) { - return false; - } - } - - return true; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/HasKey.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/HasKey.php deleted file mode 100644 index 15ef915a..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/HasKey.php +++ /dev/null @@ -1,48 +0,0 @@ -', $this->_expected); - } - - /** - * Check if the actual value matches the expected. - * - * @template TMixed - * - * @param TMixed $actual - * - * @return bool - */ - public function match(&$actual) - { - if (! is_array($actual) && ! $actual instanceof ArrayAccess) { - return false; - } - - return array_key_exists($this->_expected, (array) $actual); - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/HasValue.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/HasValue.php deleted file mode 100644 index 8d37a5f7..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/HasValue.php +++ /dev/null @@ -1,47 +0,0 @@ -_expected . ']>'; - } - - /** - * Check if the actual value matches the expected. - * - * @template TMixed - * - * @param TMixed $actual - * - * @return bool - */ - public function match(&$actual) - { - if (! is_array($actual) && ! $actual instanceof ArrayAccess) { - return false; - } - - return in_array($this->_expected, (array) $actual, true); - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/IsEqual.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/IsEqual.php deleted file mode 100644 index 72d1a02f..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/IsEqual.php +++ /dev/null @@ -1,38 +0,0 @@ -'; - } - - /** - * Check if the actual value matches the expected. - * - * @template TMixed - * - * @param TMixed $actual - * - * @return bool - */ - public function match(&$actual) - { - return $this->_expected == $actual; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/IsSame.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/IsSame.php deleted file mode 100644 index 7671448e..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/IsSame.php +++ /dev/null @@ -1,38 +0,0 @@ -'; - } - - /** - * Check if the actual value matches the expected. - * - * @template TMixed - * - * @param TMixed $actual - * - * @return bool - */ - public function match(&$actual) - { - return $this->_expected === $actual; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/MatcherAbstract.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/MatcherAbstract.php deleted file mode 100644 index 813950a5..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/MatcherAbstract.php +++ /dev/null @@ -1,39 +0,0 @@ -_expected = $expected; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/MatcherInterface.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/MatcherInterface.php deleted file mode 100644 index 19154eab..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/MatcherInterface.php +++ /dev/null @@ -1,36 +0,0 @@ -'; - } - - /** - * Check if the actual value matches the expected. - * Actual passed by reference to preserve reference trail (where applicable) - * back to the original method parameter. - * - * @template TMixed - * - * @param TMixed $actual - * - * @return bool - */ - public function match(&$actual) - { - return ($this->_expected)(...$actual) === true; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/MustBe.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/MustBe.php deleted file mode 100644 index d365bc70..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/MustBe.php +++ /dev/null @@ -1,47 +0,0 @@ -'; - } - - /** - * Check if the actual value matches the expected. - * - * @template TMixed - * - * @param TMixed $actual - * - * @return bool - */ - public function match(&$actual) - { - if (! is_object($actual)) { - return $this->_expected === $actual; - } - - return $this->_expected == $actual; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/NoArgs.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/NoArgs.php deleted file mode 100644 index 37438f13..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/NoArgs.php +++ /dev/null @@ -1,33 +0,0 @@ -'; - } - - /** - * @template TMixed - * - * @param TMixed $actual - * - * @return bool - */ - public function match(&$actual) - { - return count($actual) === 0; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/Not.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/Not.php deleted file mode 100644 index 133007eb..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/Not.php +++ /dev/null @@ -1,39 +0,0 @@ -'; - } - - /** - * Check if the actual value does not match the expected (in this - * case it's specifically NOT expected). - * - * @template TMixed - * - * @param TMixed $actual - * - * @return bool - */ - public function match(&$actual) - { - return $actual !== $this->_expected; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/NotAnyOf.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/NotAnyOf.php deleted file mode 100644 index 567b24e0..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/NotAnyOf.php +++ /dev/null @@ -1,45 +0,0 @@ -'; - } - - /** - * Check if the actual value does not match the expected (in this - * case it's specifically NOT expected). - * - * @template TMixed - * - * @param TMixed $actual - * - * @return bool - */ - public function match(&$actual) - { - foreach ($this->_expected as $exp) { - if ($actual === $exp || $actual == $exp) { - return false; - } - } - - return true; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/Pattern.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/Pattern.php deleted file mode 100644 index b2e84dfa..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/Pattern.php +++ /dev/null @@ -1,40 +0,0 @@ -'; - } - - /** - * Check if the actual value matches the expected pattern. - * - * @template TMixed - * - * @param TMixed $actual - * - * @return bool - */ - public function match(&$actual) - { - return preg_match($this->_expected, (string) $actual) >= 1; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/Subset.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/Subset.php deleted file mode 100644 index 96893fb9..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/Subset.php +++ /dev/null @@ -1,99 +0,0 @@ -expected = $expected; - $this->strict = $strict; - } - - /** - * Return a string representation of this Matcher - * - * @return string - */ - public function __toString() - { - return 'formatArray($this->expected) . '>'; - } - - /** - * @param array $expected Expected subset of data - * - * @return Subset - */ - public static function loose(array $expected) - { - return new static($expected, false); - } - - /** - * Check if the actual value matches the expected. - * - * @template TMixed - * - * @param TMixed $actual - * - * @return bool - */ - public function match(&$actual) - { - if (! is_array($actual)) { - return false; - } - - if ($this->strict) { - return $actual === array_replace_recursive($actual, $this->expected); - } - - return $actual == array_replace_recursive($actual, $this->expected); - } - - /** - * @param array $expected Expected subset of data - * - * @return Subset - */ - public static function strict(array $expected) - { - return new static($expected, true); - } - - /** - * Recursively format an array into the string representation for this matcher - * - * @return string - */ - protected function formatArray(array $array) - { - $elements = []; - foreach ($array as $k => $v) { - $elements[] = $k . '=' . (is_array($v) ? $this->formatArray($v) : (string) $v); - } - - return '[' . implode(', ', $elements) . ']'; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/Type.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/Type.php deleted file mode 100644 index 8265b602..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Matcher/Type.php +++ /dev/null @@ -1,59 +0,0 @@ -_expected) . '>'; - } - - /** - * Check if the actual value matches the expected. - * - * @template TMixed - * - * @param TMixed $actual - * - * @return bool - */ - public function match(&$actual) - { - $function = $this->_expected === 'real' ? 'is_float' : 'is_' . strtolower($this->_expected); - - if (function_exists($function)) { - return $function($actual); - } - - if (! is_string($this->_expected)) { - return false; - } - - if (class_exists($this->_expected) || interface_exists($this->_expected)) { - return $actual instanceof $this->_expected; - } - - return false; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/MethodCall.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/MethodCall.php deleted file mode 100644 index f331514f..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/MethodCall.php +++ /dev/null @@ -1,50 +0,0 @@ -method = $method; - $this->args = $args; - } - - /** - * @return array - */ - public function getArgs() - { - return $this->args; - } - - /** - * @return string - */ - public function getMethod() - { - return $this->method; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Mock.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Mock.php deleted file mode 100644 index 068cce35..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Mock.php +++ /dev/null @@ -1,1020 +0,0 @@ -_mockery_container = $container; - if (!is_null($partialObject)) { - $this->_mockery_partial = $partialObject; - } - - if (!\Mockery::getConfiguration()->mockingNonExistentMethodsAllowed()) { - foreach ($this->mockery_getMethods() as $method) { - if ($method->isPublic()) { - $this->_mockery_mockableMethods[] = $method->getName(); - } - } - } - - $this->_mockery_instanceMock = $instanceMock; - - $this->_mockery_parentClass = get_parent_class($this); - } - - /** - * Set expected method calls - * - * @param string ...$methodNames one or many methods that are expected to be called in this mock - * - * @return ExpectationInterface|Expectation|HigherOrderMessage - */ - public function shouldReceive(...$methodNames) - { - if ($methodNames === []) { - return new HigherOrderMessage($this, 'shouldReceive'); - } - - foreach ($methodNames as $method) { - if ('' === $method) { - throw new \InvalidArgumentException('Received empty method name'); - } - } - - $self = $this; - $allowMockingProtectedMethods = $this->_mockery_allowMockingProtectedMethods; - return \Mockery::parseShouldReturnArgs( - $this, - $methodNames, - static function ($method) use ($self, $allowMockingProtectedMethods) { - $rm = $self->mockery_getMethod($method); - if ($rm) { - if ($rm->isPrivate()) { - throw new \InvalidArgumentException($method . '() cannot be mocked as it is a private method'); - } - - if (!$allowMockingProtectedMethods && $rm->isProtected()) { - throw new \InvalidArgumentException($method . '() cannot be mocked as it is a protected method and mocking protected methods is not enabled for the currently used mock object. Use shouldAllowMockingProtectedMethods() to enable mocking of protected methods.'); - } - } - - $director = $self->mockery_getExpectationsFor($method); - if (!$director) { - $director = new ExpectationDirector($method, $self); - $self->mockery_setExpectationsFor($method, $director); - } - - $expectation = new Expectation($self, $method); - $director->addExpectation($expectation); - return $expectation; - } - ); - } - - // start method allows - /** - * @param mixed $something String method name or map of method => return - * @return self|ExpectationInterface|Expectation|HigherOrderMessage - */ - public function allows($something = []) - { - if (is_string($something)) { - return $this->shouldReceive($something); - } - - if (empty($something)) { - return $this->shouldReceive(); - } - - foreach ($something as $method => $returnValue) { - $this->shouldReceive($method)->andReturn($returnValue); - } - - return $this; - } - - // end method allows - // start method expects - /** - /** - * @param mixed $something String method name (optional) - * @return ExpectationInterface|Expectation|ExpectsHigherOrderMessage - */ - public function expects($something = null) - { - if (is_string($something)) { - return $this->shouldReceive($something)->once(); - } - - return new ExpectsHigherOrderMessage($this); - } - - // end method expects - /** - * Shortcut method for setting an expectation that a method should not be called. - * - * @param string ...$methodNames one or many methods that are expected not to be called in this mock - * @return ExpectationInterface|Expectation|HigherOrderMessage - */ - public function shouldNotReceive(...$methodNames) - { - if ($methodNames === []) { - return new HigherOrderMessage($this, 'shouldNotReceive'); - } - - $expectation = call_user_func_array(function (string $methodNames) { - return $this->shouldReceive($methodNames); - }, $methodNames); - $expectation->never(); - return $expectation; - } - - /** - * Allows additional methods to be mocked that do not explicitly exist on mocked class - * - * @param string $method name of the method to be mocked - * @return Mock|MockInterface|LegacyMockInterface - */ - public function shouldAllowMockingMethod($method) - { - $this->_mockery_mockableMethods[] = $method; - return $this; - } - - /** - * Set mock to ignore unexpected methods and return Undefined class - * @param mixed $returnValue the default return value for calls to missing functions on this mock - * @param bool $recursive Specify if returned mocks should also have shouldIgnoreMissing set - * @return static - */ - public function shouldIgnoreMissing($returnValue = null, $recursive = false) - { - $this->_mockery_ignoreMissing = true; - $this->_mockery_ignoreMissingRecursive = $recursive; - $this->_mockery_defaultReturnValue = $returnValue; - return $this; - } - - public function asUndefined() - { - $this->_mockery_ignoreMissing = true; - $this->_mockery_defaultReturnValue = new Undefined(); - return $this; - } - - /** - * @return static - */ - public function shouldAllowMockingProtectedMethods() - { - if (!\Mockery::getConfiguration()->mockingNonExistentMethodsAllowed()) { - foreach ($this->mockery_getMethods() as $method) { - if ($method->isProtected()) { - $this->_mockery_mockableMethods[] = $method->getName(); - } - } - } - - $this->_mockery_allowMockingProtectedMethods = true; - return $this; - } - - - /** - * Set mock to defer unexpected methods to it's parent - * - * This is particularly useless for this class, as it doesn't have a parent, - * but included for completeness - * - * @deprecated 2.0.0 Please use makePartial() instead - * - * @return static - */ - public function shouldDeferMissing() - { - return $this->makePartial(); - } - - /** - * Set mock to defer unexpected methods to it's parent - * - * It was an alias for shouldDeferMissing(), which will be removed - * in 2.0.0. - * - * @return static - */ - public function makePartial() - { - $this->_mockery_deferMissing = true; - return $this; - } - - /** - * In the event shouldReceive() accepting one or more methods/returns, - * this method will switch them from normal expectations to default - * expectations - * - * @return self - */ - public function byDefault() - { - foreach ($this->_mockery_expectations as $director) { - $exps = $director->getExpectations(); - foreach ($exps as $exp) { - $exp->byDefault(); - } - } - - return $this; - } - - /** - * Capture calls to this mock - */ - public function __call($method, array $args) - { - return $this->_mockery_handleMethodCall($method, $args); - } - - public static function __callStatic($method, array $args) - { - return self::_mockery_handleStaticMethodCall($method, $args); - } - - /** - * Forward calls to this magic method to the __call method - */ - #[\ReturnTypeWillChange] - public function __toString() - { - return $this->__call('__toString', []); - } - - /** - * Iterate across all expectation directors and validate each - * - * @throws Exception - * @return void - */ - public function mockery_verify() - { - if ($this->_mockery_verified) { - return; - } - - if (property_exists($this, '_mockery_ignoreVerification') && $this->_mockery_ignoreVerification !== null - && $this->_mockery_ignoreVerification == true) { - return; - } - - $this->_mockery_verified = true; - foreach ($this->_mockery_expectations as $director) { - $director->verify(); - } - } - - /** - * Gets a list of exceptions thrown by this mock - * - * @return array - */ - public function mockery_thrownExceptions() - { - return $this->_mockery_thrownExceptions; - } - - /** - * Tear down tasks for this mock - * - * @return void - */ - public function mockery_teardown() - { - } - - /** - * Fetch the next available allocation order number - * - * @return int - */ - public function mockery_allocateOrder() - { - ++$this->_mockery_allocatedOrder; - return $this->_mockery_allocatedOrder; - } - - /** - * Set ordering for a group - * - * @param mixed $group - * @param int $order - */ - public function mockery_setGroup($group, $order) - { - $this->_mockery_groups[$group] = $order; - } - - /** - * Fetch array of ordered groups - * - * @return array - */ - public function mockery_getGroups() - { - return $this->_mockery_groups; - } - - /** - * Set current ordered number - * - * @param int $order - */ - public function mockery_setCurrentOrder($order) - { - $this->_mockery_currentOrder = $order; - return $this->_mockery_currentOrder; - } - - /** - * Get current ordered number - * - * @return int - */ - public function mockery_getCurrentOrder() - { - return $this->_mockery_currentOrder; - } - - /** - * Validate the current mock's ordering - * - * @param string $method - * @param int $order - * @throws \Mockery\Exception - * @return void - */ - public function mockery_validateOrder($method, $order) - { - if ($order < $this->_mockery_currentOrder) { - $exception = new InvalidOrderException( - 'Method ' . self::class . '::' . $method . '()' - . ' called out of order: expected order ' - . $order . ', was ' . $this->_mockery_currentOrder - ); - $exception->setMock($this) - ->setMethodName($method) - ->setExpectedOrder($order) - ->setActualOrder($this->_mockery_currentOrder); - throw $exception; - } - - $this->mockery_setCurrentOrder($order); - } - - /** - * Gets the count of expectations for this mock - * - * @return int - */ - public function mockery_getExpectationCount() - { - $count = $this->_mockery_expectations_count; - foreach ($this->_mockery_expectations as $director) { - $count += $director->getExpectationCount(); - } - - return $count; - } - - /** - * Return the expectations director for the given method - * - * @var string $method - * @return ExpectationDirector|null - */ - public function mockery_setExpectationsFor($method, ExpectationDirector $director) - { - $this->_mockery_expectations[$method] = $director; - } - - /** - * Return the expectations director for the given method - * - * @var string $method - * @return ExpectationDirector|null - */ - public function mockery_getExpectationsFor($method) - { - if (isset($this->_mockery_expectations[$method])) { - return $this->_mockery_expectations[$method]; - } - } - - /** - * Find an expectation matching the given method and arguments - * - * @var string $method - * @var array $args - * @return Expectation|null - */ - public function mockery_findExpectation($method, array $args) - { - if (!isset($this->_mockery_expectations[$method])) { - return null; - } - - $director = $this->_mockery_expectations[$method]; - - return $director->findExpectation($args); - } - - /** - * Return the container for this mock - * - * @return Container - */ - public function mockery_getContainer() - { - return $this->_mockery_container; - } - - /** - * Return the name for this mock - * - * @return string - */ - public function mockery_getName() - { - return self::class; - } - - /** - * @return array - */ - public function mockery_getMockableProperties() - { - return $this->_mockery_mockableProperties; - } - - public function __isset($name) - { - if (false !== stripos($name, '_mockery_')) { - return false; - } - - if (!$this->_mockery_parentClass) { - return false; - } - - if (!method_exists($this->_mockery_parentClass, '__isset')) { - return false; - } - - return call_user_func($this->_mockery_parentClass . '::__isset', $name); - } - - public function mockery_getExpectations() - { - return $this->_mockery_expectations; - } - - /** - * Calls a parent class method and returns the result. Used in a passthru - * expectation where a real return value is required while still taking - * advantage of expectation matching and call count verification. - * - * @param string $name - * @param array $args - * @return mixed - */ - public function mockery_callSubjectMethod($name, array $args) - { - if (!method_exists($this, $name) && $this->_mockery_parentClass && method_exists($this->_mockery_parentClass, '__call')) { - return call_user_func($this->_mockery_parentClass . '::__call', $name, $args); - } - - return call_user_func_array($this->_mockery_parentClass . '::' . $name, $args); - } - - /** - * @return string[] - */ - public function mockery_getMockableMethods() - { - return $this->_mockery_mockableMethods; - } - - /** - * @return bool - */ - public function mockery_isAnonymous() - { - $rfc = new \ReflectionClass($this); - - // PHP 8 has Stringable interface - $interfaces = array_filter($rfc->getInterfaces(), static function ($i) { - return $i->getName() !== 'Stringable'; - }); - - return false === $rfc->getParentClass() && 2 === count($interfaces); - } - - public function mockery_isInstance() - { - return $this->_mockery_instanceMock; - } - - public function __wakeup() - { - /** - * This does not add __wakeup method support. It's a blind method and any - * expected __wakeup work will NOT be performed. It merely cuts off - * annoying errors where a __wakeup exists but is not essential when - * mocking - */ - } - - public function __destruct() - { - /** - * Overrides real class destructor in case if class was created without original constructor - */ - } - - public function mockery_getMethod($name) - { - foreach ($this->mockery_getMethods() as $method) { - if ($method->getName() == $name) { - return $method; - } - } - - return null; - } - - /** - * @param string $name Method name. - * - * @return mixed Generated return value based on the declared return value of the named method. - */ - public function mockery_returnValueForMethod($name) - { - $rm = $this->mockery_getMethod($name); - - if ($rm === null) { - return null; - } - - $returnType = Reflector::getSimplestReturnType($rm); - - switch ($returnType) { - case null: return null; - case 'string': return ''; - case 'int': return 0; - case 'float': return 0.0; - case 'bool': return false; - case 'true': return true; - case 'false': return false; - - case 'array': - case 'iterable': - return []; - - case 'callable': - case '\Closure': - return static function () : void { - }; - - case '\Traversable': - case '\Generator': - $generator = static function () { - yield; - }; - return $generator(); - - case 'void': - return null; - - case 'static': - return $this; - - case 'object': - $mock = \Mockery::mock(); - if ($this->_mockery_ignoreMissingRecursive) { - $mock->shouldIgnoreMissing($this->_mockery_defaultReturnValue, true); - } - - return $mock; - - default: - $mock = \Mockery::mock($returnType); - if ($this->_mockery_ignoreMissingRecursive) { - $mock->shouldIgnoreMissing($this->_mockery_defaultReturnValue, true); - } - - return $mock; - } - } - - public function shouldHaveReceived($method = null, $args = null) - { - if ($method === null) { - return new HigherOrderMessage($this, 'shouldHaveReceived'); - } - - $expectation = new VerificationExpectation($this, $method); - if (null !== $args) { - $expectation->withArgs($args); - } - - $expectation->atLeast()->once(); - $director = new VerificationDirector($this->_mockery_getReceivedMethodCalls(), $expectation); - ++$this->_mockery_expectations_count; - $director->verify(); - return $director; - } - - public function shouldHaveBeenCalled() - { - return $this->shouldHaveReceived('__invoke'); - } - - public function shouldNotHaveReceived($method = null, $args = null) - { - if ($method === null) { - return new HigherOrderMessage($this, 'shouldNotHaveReceived'); - } - - $expectation = new VerificationExpectation($this, $method); - if (null !== $args) { - $expectation->withArgs($args); - } - - $expectation->never(); - $director = new VerificationDirector($this->_mockery_getReceivedMethodCalls(), $expectation); - ++$this->_mockery_expectations_count; - $director->verify(); - return null; - } - - public function shouldNotHaveBeenCalled(?array $args = null) - { - return $this->shouldNotHaveReceived('__invoke', $args); - } - - protected static function _mockery_handleStaticMethodCall($method, array $args) - { - $associatedRealObject = \Mockery::fetchMock(self::class); - try { - return $associatedRealObject->__call($method, $args); - } catch (BadMethodCallException $badMethodCallException) { - throw new BadMethodCallException( - 'Static method ' . $associatedRealObject->mockery_getName() . '::' . $method - . '() does not exist on this mock object', - 0, - $badMethodCallException - ); - } - } - - protected function _mockery_getReceivedMethodCalls() - { - return $this->_mockery_receivedMethodCalls ?: $this->_mockery_receivedMethodCalls = new ReceivedMethodCalls(); - } - - /** - * Called when an instance Mock was created and its constructor is getting called - * - * @see \Mockery\Generator\StringManipulation\Pass\InstanceMockPass - * @param array $args - */ - protected function _mockery_constructorCalled(array $args) - { - if (!isset($this->_mockery_expectations['__construct']) /* _mockery_handleMethodCall runs the other checks */) { - return; - } - - $this->_mockery_handleMethodCall('__construct', $args); - } - - protected function _mockery_findExpectedMethodHandler($method) - { - if (isset($this->_mockery_expectations[$method])) { - return $this->_mockery_expectations[$method]; - } - - $lowerCasedMockeryExpectations = array_change_key_case($this->_mockery_expectations, CASE_LOWER); - $lowerCasedMethod = strtolower($method); - - return $lowerCasedMockeryExpectations[$lowerCasedMethod] ?? null; - } - - protected function _mockery_handleMethodCall($method, array $args) - { - $this->_mockery_getReceivedMethodCalls()->push(new MethodCall($method, $args)); - - $rm = $this->mockery_getMethod($method); - if ($rm && $rm->isProtected() && !$this->_mockery_allowMockingProtectedMethods) { - if ($rm->isAbstract()) { - return; - } - - try { - $prototype = $rm->getPrototype(); - if ($prototype->isAbstract()) { - return; - } - } catch (\ReflectionException $re) { - // noop - there is no hasPrototype method - } - - if (null === $this->_mockery_parentClass) { - $this->_mockery_parentClass = get_parent_class($this); - } - - return call_user_func_array($this->_mockery_parentClass . '::' . $method, $args); - } - - $handler = $this->_mockery_findExpectedMethodHandler($method); - - if ($handler !== null && !$this->_mockery_disableExpectationMatching) { - try { - return $handler->call($args); - } catch (NoMatchingExpectationException $e) { - if (!$this->_mockery_ignoreMissing && !$this->_mockery_deferMissing) { - throw $e; - } - } - } - - if (!is_null($this->_mockery_partial) && - (method_exists($this->_mockery_partial, $method) || method_exists($this->_mockery_partial, '__call'))) { - return $this->_mockery_partial->{$method}(...$args); - } - - if ($this->_mockery_deferMissing && is_callable($this->_mockery_parentClass . '::' . $method) - && (!$this->hasMethodOverloadingInParentClass() || ($this->_mockery_parentClass && method_exists($this->_mockery_parentClass, $method)))) { - return call_user_func_array($this->_mockery_parentClass . '::' . $method, $args); - } - - if ($this->_mockery_deferMissing && $this->_mockery_parentClass && method_exists($this->_mockery_parentClass, '__call')) { - return call_user_func($this->_mockery_parentClass . '::__call', $method, $args); - } - - if ($method === '__toString') { - // __toString is special because we force its addition to the class API regardless of the - // original implementation. Thus, we should always return a string rather than honor - // _mockery_ignoreMissing and break the API with an error. - return sprintf('%s#%s', self::class, spl_object_hash($this)); - } - - if ($this->_mockery_ignoreMissing && (\Mockery::getConfiguration()->mockingNonExistentMethodsAllowed() || (!is_null($this->_mockery_partial) && method_exists($this->_mockery_partial, $method)) || is_callable($this->_mockery_parentClass . '::' . $method))) { - if ($this->_mockery_defaultReturnValue instanceof Undefined) { - return $this->_mockery_defaultReturnValue->{$method}(...$args); - } - - if (null === $this->_mockery_defaultReturnValue) { - return $this->mockery_returnValueForMethod($method); - } - - return $this->_mockery_defaultReturnValue; - } - - $message = 'Method ' . self::class . '::' . $method . - '() does not exist on this mock object'; - - if (!is_null($rm)) { - $message = 'Received ' . self::class . - '::' . $method . '(), but no expectations were specified'; - } - - $bmce = new BadMethodCallException($message); - $this->_mockery_thrownExceptions[] = $bmce; - throw $bmce; - } - - /** - * Uses reflection to get the list of all - * methods within the current mock object - * - * @return array - */ - protected function mockery_getMethods() - { - if (static::$_mockery_methods && \Mockery::getConfiguration()->reflectionCacheEnabled()) { - return static::$_mockery_methods; - } - - if ($this->_mockery_partial !== null) { - $reflected = new \ReflectionObject($this->_mockery_partial); - } else { - $reflected = new \ReflectionClass($this); - } - - return static::$_mockery_methods = $reflected->getMethods(); - } - - private function hasMethodOverloadingInParentClass() - { - // if there's __call any name would be callable - return is_callable($this->_mockery_parentClass . '::aFunctionNameThatNoOneWouldEverUseInRealLife12345'); - } - - /** - * @return array - */ - private function getNonPublicMethods() - { - return array_map( - static function ($method) { - return $method->getName(); - }, - array_filter($this->mockery_getMethods(), static function ($method) { - return !$method->isPublic(); - }) - ); - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/MockInterface.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/MockInterface.php deleted file mode 100644 index 9dc53647..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/MockInterface.php +++ /dev/null @@ -1,28 +0,0 @@ - return - * - * @return Expectation|ExpectationInterface|HigherOrderMessage|self - */ - public function allows($something = []); - - /** - * @param mixed $something String method name (optional) - * - * @return Expectation|ExpectationInterface|ExpectsHigherOrderMessage - */ - public function expects($something = null); -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/QuickDefinitionsConfiguration.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/QuickDefinitionsConfiguration.php deleted file mode 100644 index aef28b77..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/QuickDefinitionsConfiguration.php +++ /dev/null @@ -1,47 +0,0 @@ -_quickDefinitionsApplicationMode = $newValue - ? self::QUICK_DEFINITIONS_MODE_MOCK_AT_LEAST_ONCE - : self::QUICK_DEFINITIONS_MODE_DEFAULT_EXPECTATION; - } - - return $this->_quickDefinitionsApplicationMode === self::QUICK_DEFINITIONS_MODE_MOCK_AT_LEAST_ONCE; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/ReceivedMethodCalls.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/ReceivedMethodCalls.php deleted file mode 100644 index 4ec1c67f..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/ReceivedMethodCalls.php +++ /dev/null @@ -1,38 +0,0 @@ -methodCalls[] = $methodCall; - } - - public function verify(Expectation $expectation) - { - foreach ($this->methodCalls as $methodCall) { - if ($methodCall->getMethod() !== $expectation->getName()) { - continue; - } - - if (! $expectation->matchArgs($methodCall->getArgs())) { - continue; - } - - $expectation->verifyCall($methodCall->getArgs()); - } - - $expectation->verify(); - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Reflector.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Reflector.php deleted file mode 100644 index 8e4fc158..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Reflector.php +++ /dev/null @@ -1,316 +0,0 @@ - - */ - public const BUILTIN_TYPES = ['array', 'bool', 'int', 'float', 'null', 'object', 'string']; - - /** - * List of reserved words. - * - * @var list - */ - public const RESERVED_WORDS = ['bool', 'true', 'false', 'float', 'int', 'iterable', 'mixed', 'never', 'null', 'object', 'string', 'void']; - - /** - * Iterable. - * - * @var list - */ - private const ITERABLE = ['iterable']; - - /** - * Traversable array. - * - * @var list - */ - private const TRAVERSABLE_ARRAY = ['\Traversable', 'array']; - - /** - * Compute the string representation for the return type. - * - * @param bool $withoutNullable - * - * @return null|string - */ - public static function getReturnType(ReflectionMethod $method, $withoutNullable = false) - { - $type = $method->getReturnType(); - - if (! $type instanceof ReflectionType && method_exists($method, 'getTentativeReturnType')) { - $type = $method->getTentativeReturnType(); - } - - if (! $type instanceof ReflectionType) { - return null; - } - - $typeHint = self::getTypeFromReflectionType($type, $method->getDeclaringClass()); - - return (! $withoutNullable && $type->allowsNull()) ? self::formatNullableType($typeHint) : $typeHint; - } - - /** - * Compute the string representation for the simplest return type. - * - * @return null|string - */ - public static function getSimplestReturnType(ReflectionMethod $method) - { - $type = $method->getReturnType(); - - if (! $type instanceof ReflectionType && method_exists($method, 'getTentativeReturnType')) { - $type = $method->getTentativeReturnType(); - } - - if (! $type instanceof ReflectionType || $type->allowsNull()) { - return null; - } - - $typeInformation = self::getTypeInformation($type, $method->getDeclaringClass()); - - // return the first primitive type hint - foreach ($typeInformation as $info) { - if ($info['isPrimitive']) { - return $info['typeHint']; - } - } - - // if no primitive type, return the first type - foreach ($typeInformation as $info) { - return $info['typeHint']; - } - - return null; - } - - /** - * Compute the string representation for the paramater type. - * - * @param bool $withoutNullable - * - * @return null|string - */ - public static function getTypeHint(ReflectionParameter $param, $withoutNullable = false) - { - if (! $param->hasType()) { - return null; - } - - $type = $param->getType(); - $declaringClass = $param->getDeclaringClass(); - $typeHint = self::getTypeFromReflectionType($type, $declaringClass); - - return (! $withoutNullable && $type->allowsNull()) ? self::formatNullableType($typeHint) : $typeHint; - } - - /** - * Determine if the parameter is typed as an array. - * - * @return bool - */ - public static function isArray(ReflectionParameter $param) - { - $type = $param->getType(); - - return $type instanceof ReflectionNamedType && $type->getName(); - } - - /** - * Determine if the given type is a reserved word. - */ - public static function isReservedWord(string $type): bool - { - return in_array(strtolower($type), self::RESERVED_WORDS, true); - } - - /** - * Format the given type as a nullable type. - */ - private static function formatNullableType(string $typeHint): string - { - if ($typeHint === 'mixed') { - return $typeHint; - } - - if (strpos($typeHint, 'null') !== false) { - return $typeHint; - } - - if (PHP_VERSION_ID < 80000) { - return sprintf('?%s', $typeHint); - } - - return sprintf('%s|null', $typeHint); - } - - private static function getTypeFromReflectionType(ReflectionType $type, ReflectionClass $declaringClass): string - { - if ($type instanceof ReflectionNamedType) { - $typeHint = $type->getName(); - - if ($type->isBuiltin()) { - return $typeHint; - } - - if ($typeHint === 'static') { - return $typeHint; - } - - // 'self' needs to be resolved to the name of the declaring class - if ($typeHint === 'self') { - $typeHint = $declaringClass->getName(); - } - - // 'parent' needs to be resolved to the name of the parent class - if ($typeHint === 'parent') { - $typeHint = $declaringClass->getParentClass()->getName(); - } - - // class names need prefixing with a slash - return sprintf('\\%s', $typeHint); - } - - if ($type instanceof ReflectionIntersectionType) { - $types = array_map( - static function (ReflectionType $type) use ($declaringClass): string { - return self::getTypeFromReflectionType($type, $declaringClass); - }, - $type->getTypes() - ); - - return implode('&', $types); - } - - if ($type instanceof ReflectionUnionType) { - $types = array_map( - static function (ReflectionType $type) use ($declaringClass): string { - return self::getTypeFromReflectionType($type, $declaringClass); - }, - $type->getTypes() - ); - - $intersect = array_intersect(self::TRAVERSABLE_ARRAY, $types); - if ($intersect === self::TRAVERSABLE_ARRAY) { - $types = array_merge(self::ITERABLE, array_diff($types, self::TRAVERSABLE_ARRAY)); - } - - return implode( - '|', - array_map( - static function (string $type): string { - return strpos($type, '&') === false ? $type : sprintf('(%s)', $type); - }, - $types - ) - ); - } - - throw new InvalidArgumentException('Unknown ReflectionType: ' . get_debug_type($type)); - } - - /** - * Get the string representation of the given type. - * - * @return list - */ - private static function getTypeInformation(ReflectionType $type, ReflectionClass $declaringClass): array - { - // PHP 8 union types and PHP 8.1 intersection types can be recursively processed - if ($type instanceof ReflectionUnionType || $type instanceof ReflectionIntersectionType) { - $types = []; - - foreach ($type->getTypes() as $innterType) { - foreach (self::getTypeInformation($innterType, $declaringClass) as $info) { - if ($info['typeHint'] === 'null' && $info['isPrimitive']) { - continue; - } - - $types[] = $info; - } - } - - return $types; - } - - // $type must be an instance of \ReflectionNamedType - $typeHint = $type->getName(); - - // builtins can be returned as is - if ($type->isBuiltin()) { - return [ - [ - 'typeHint' => $typeHint, - 'isPrimitive' => in_array($typeHint, self::BUILTIN_TYPES, true), - ], - ]; - } - - // 'static' can be returned as is - if ($typeHint === 'static') { - return [ - [ - 'typeHint' => $typeHint, - 'isPrimitive' => false, - ], - ]; - } - - // 'self' needs to be resolved to the name of the declaring class - if ($typeHint === 'self') { - $typeHint = $declaringClass->getName(); - } - - // 'parent' needs to be resolved to the name of the parent class - if ($typeHint === 'parent') { - $typeHint = $declaringClass->getParentClass()->getName(); - } - - // class names need prefixing with a slash - return [ - [ - 'typeHint' => sprintf('\\%s', $typeHint), - 'isPrimitive' => false, - ], - ]; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Undefined.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Undefined.php deleted file mode 100644 index ca3ace46..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/Undefined.php +++ /dev/null @@ -1,39 +0,0 @@ -receivedMethodCalls = $receivedMethodCalls; - $this->expectation = $expectation; - } - - /** - * @return self - */ - public function atLeast() - { - return $this->cloneWithoutCountValidatorsApplyAndVerify('atLeast', []); - } - - /** - * @return self - */ - public function atMost() - { - return $this->cloneWithoutCountValidatorsApplyAndVerify('atMost', []); - } - - /** - * @param int $minimum - * @param int $maximum - * - * @return self - */ - public function between($minimum, $maximum) - { - return $this->cloneWithoutCountValidatorsApplyAndVerify('between', [$minimum, $maximum]); - } - - /** - * @return self - */ - public function once() - { - return $this->cloneWithoutCountValidatorsApplyAndVerify('once', []); - } - - /** - * @param int $limit - * - * @return self - */ - public function times($limit = null) - { - return $this->cloneWithoutCountValidatorsApplyAndVerify('times', [$limit]); - } - - /** - * @return self - */ - public function twice() - { - return $this->cloneWithoutCountValidatorsApplyAndVerify('twice', []); - } - - public function verify() - { - $this->receivedMethodCalls->verify($this->expectation); - } - - /** - * @template TArgs - * - * @param TArgs $args - * - * @return self - */ - public function with(...$args) - { - return $this->cloneApplyAndVerify('with', $args); - } - - /** - * @return self - */ - public function withAnyArgs() - { - return $this->cloneApplyAndVerify('withAnyArgs', []); - } - - /** - * @template TArgs - * - * @param TArgs $args - * - * @return self - */ - public function withArgs($args) - { - return $this->cloneApplyAndVerify('withArgs', [$args]); - } - - /** - * @return self - */ - public function withNoArgs() - { - return $this->cloneApplyAndVerify('withNoArgs', []); - } - - /** - * @param string $method - * @param array $args - * - * @return self - */ - protected function cloneApplyAndVerify($method, $args) - { - $verificationExpectation = clone $this->expectation; - - $verificationExpectation->{$method}(...$args); - - $verificationDirector = new self($this->receivedMethodCalls, $verificationExpectation); - - $verificationDirector->verify(); - - return $verificationDirector; - } - - /** - * @param string $method - * @param array $args - * - * @return self - */ - protected function cloneWithoutCountValidatorsApplyAndVerify($method, $args) - { - $verificationExpectation = clone $this->expectation; - - $verificationExpectation->clearCountValidators(); - - $verificationExpectation->{$method}(...$args); - - $verificationDirector = new self($this->receivedMethodCalls, $verificationExpectation); - - $verificationDirector->verify(); - - return $verificationDirector; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/VerificationExpectation.php b/docker/streamline-src/vendor/mockery/mockery/library/Mockery/VerificationExpectation.php deleted file mode 100644 index 9e36f6c6..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/Mockery/VerificationExpectation.php +++ /dev/null @@ -1,29 +0,0 @@ -_actualCount = 0; - } - - /** - * @return void - */ - public function clearCountValidators() - { - $this->_countValidators = []; - } -} diff --git a/docker/streamline-src/vendor/mockery/mockery/library/helpers.php b/docker/streamline-src/vendor/mockery/mockery/library/helpers.php deleted file mode 100644 index 8f15857a..00000000 --- a/docker/streamline-src/vendor/mockery/mockery/library/helpers.php +++ /dev/null @@ -1,77 +0,0 @@ -|TMock|Closure(LegacyMockInterface&MockInterface&TMock):LegacyMockInterface&MockInterface&TMock|array> $args - * - * @return LegacyMockInterface&MockInterface&TMock - */ - function mock(...$args) - { - return Mockery::mock(...$args); - } -} - -if (! \function_exists('spy')) { - /** - * @template TSpy of object - * - * @param array|TSpy|Closure(LegacyMockInterface&MockInterface&TSpy):LegacyMockInterface&MockInterface&TSpy|array> $args - * - * @return LegacyMockInterface&MockInterface&TSpy - */ - function spy(...$args) - { - return Mockery::spy(...$args); - } -} - -if (! \function_exists('namedMock')) { - /** - * @template TNamedMock of object - * - * @param array|TNamedMock|array> $args - * - * @return LegacyMockInterface&MockInterface&TNamedMock - */ - function namedMock(...$args) - { - return Mockery::namedMock(...$args); - } -} - -if (! \function_exists('anyArgs')) { - function anyArgs(): AnyArgs - { - return new AnyArgs(); - } -} - -if (! \function_exists('andAnyOtherArgs')) { - function andAnyOtherArgs(): AndAnyOtherArgs - { - return new AndAnyOtherArgs(); - } -} - -if (! \function_exists('andAnyOthers')) { - function andAnyOthers(): AndAnyOtherArgs - { - return new AndAnyOtherArgs(); - } -} diff --git a/docker/streamline-src/vendor/monolog/monolog/src/Monolog/Handler/SendGridHandler.php b/docker/streamline-src/vendor/monolog/monolog/src/Monolog/Handler/SendGridHandler.php deleted file mode 100644 index 9c3b8e6a..00000000 --- a/docker/streamline-src/vendor/monolog/monolog/src/Monolog/Handler/SendGridHandler.php +++ /dev/null @@ -1,100 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Level; - -/** - * SendGridrHandler uses the SendGrid API v2 function to send Log emails, more information in https://sendgrid.com/docs/API_Reference/Web_API/mail.html - * - * @author Ricardo Fontanelli - */ -class SendGridHandler extends MailHandler -{ - /** - * The SendGrid API User - */ - protected string $apiUser; - - /** - * The SendGrid API Key - */ - protected string $apiKey; - - /** - * The email addresses to which the message will be sent - */ - protected string $from; - - /** - * The email addresses to which the message will be sent - * @var string[] - */ - protected array $to; - - /** - * The subject of the email - */ - protected string $subject; - - /** - * @param string $apiUser The SendGrid API User - * @param string $apiKey The SendGrid API Key - * @param string $from The sender of the email - * @param string|string[] $to The recipients of the email - * @param string $subject The subject of the mail - * - * @throws MissingExtensionException If the curl extension is missing - */ - public function __construct(string $apiUser, string $apiKey, string $from, string|array $to, string $subject, int|string|Level $level = Level::Error, bool $bubble = true) - { - if (!\extension_loaded('curl')) { - throw new MissingExtensionException('The curl extension is needed to use the SendGridHandler'); - } - - parent::__construct($level, $bubble); - $this->apiUser = $apiUser; - $this->apiKey = $apiKey; - $this->from = $from; - $this->to = (array) $to; - $this->subject = $subject; - } - - /** - * @inheritDoc - */ - protected function send(string $content, array $records): void - { - $message = []; - $message['api_user'] = $this->apiUser; - $message['api_key'] = $this->apiKey; - $message['from'] = $this->from; - foreach ($this->to as $recipient) { - $message['to[]'] = $recipient; - } - $message['subject'] = $this->subject; - $message['date'] = date('r'); - - if ($this->isHtmlBody($content)) { - $message['html'] = $content; - } else { - $message['text'] = $content; - } - - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, 'https://api.sendgrid.com/api/mail.send.json'); - curl_setopt($ch, CURLOPT_POST, true); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($message)); - Curl\Util::execute($ch, 2); - } -} diff --git a/docker/streamline-src/vendor/myclabs/deep-copy/README.md b/docker/streamline-src/vendor/myclabs/deep-copy/README.md deleted file mode 100644 index 88ae14cc..00000000 --- a/docker/streamline-src/vendor/myclabs/deep-copy/README.md +++ /dev/null @@ -1,406 +0,0 @@ -# DeepCopy - -DeepCopy helps you create deep copies (clones) of your objects. It is designed to handle cycles in the association graph. - -[![Total Downloads](https://poser.pugx.org/myclabs/deep-copy/downloads.svg)](https://packagist.org/packages/myclabs/deep-copy) -[![Integrate](https://github.com/myclabs/DeepCopy/actions/workflows/ci.yaml/badge.svg?branch=1.x)](https://github.com/myclabs/DeepCopy/actions/workflows/ci.yaml) - -## Table of Contents - -1. [How](#how) -1. [Why](#why) - 1. [Using simply `clone`](#using-simply-clone) - 1. [Overriding `__clone()`](#overriding-__clone) - 1. [With `DeepCopy`](#with-deepcopy) -1. [How it works](#how-it-works) -1. [Going further](#going-further) - 1. [Matchers](#matchers) - 1. [Property name](#property-name) - 1. [Specific property](#specific-property) - 1. [Type](#type) - 1. [Filters](#filters) - 1. [`SetNullFilter`](#setnullfilter-filter) - 1. [`KeepFilter`](#keepfilter-filter) - 1. [`DoctrineCollectionFilter`](#doctrinecollectionfilter-filter) - 1. [`DoctrineEmptyCollectionFilter`](#doctrineemptycollectionfilter-filter) - 1. [`DoctrineProxyFilter`](#doctrineproxyfilter-filter) - 1. [`ReplaceFilter`](#replacefilter-type-filter) - 1. [`ShallowCopyFilter`](#shallowcopyfilter-type-filter) -1. [Edge cases](#edge-cases) -1. [Contributing](#contributing) - 1. [Tests](#tests) - - -## How? - -Install with Composer: - -``` -composer require myclabs/deep-copy -``` - -Use it: - -```php -use DeepCopy\DeepCopy; - -$copier = new DeepCopy(); -$myCopy = $copier->copy($myObject); -``` - - -## Why? - -- How do you create copies of your objects? - -```php -$myCopy = clone $myObject; -``` - -- How do you create **deep** copies of your objects (i.e. copying also all the objects referenced in the properties)? - -You use [`__clone()`](http://www.php.net/manual/en/language.oop5.cloning.php#object.clone) and implement the behavior -yourself. - -- But how do you handle **cycles** in the association graph? - -Now you're in for a big mess :( - -![association graph](doc/graph.png) - - -### Using simply `clone` - -![Using clone](doc/clone.png) - - -### Overriding `__clone()` - -![Overriding __clone](doc/deep-clone.png) - - -### With `DeepCopy` - -![With DeepCopy](doc/deep-copy.png) - - -## How it works - -DeepCopy recursively traverses all the object's properties and clones them. To avoid cloning the same object twice it -keeps a hash map of all instances and thus preserves the object graph. - -To use it: - -```php -use function DeepCopy\deep_copy; - -$copy = deep_copy($var); -``` - -Alternatively, you can create your own `DeepCopy` instance to configure it differently for example: - -```php -use DeepCopy\DeepCopy; - -$copier = new DeepCopy(true); - -$copy = $copier->copy($var); -``` - -You may want to roll your own deep copy function: - -```php -namespace Acme; - -use DeepCopy\DeepCopy; - -function deep_copy($var) -{ - static $copier = null; - - if (null === $copier) { - $copier = new DeepCopy(true); - } - - return $copier->copy($var); -} -``` - - -## Going further - -You can add filters to customize the copy process. - -The method to add a filter is `DeepCopy\DeepCopy::addFilter($filter, $matcher)`, -with `$filter` implementing `DeepCopy\Filter\Filter` -and `$matcher` implementing `DeepCopy\Matcher\Matcher`. - -We provide some generic filters and matchers. - - -### Matchers - - - `DeepCopy\Matcher` applies on a object attribute. - - `DeepCopy\TypeMatcher` applies on any element found in graph, including array elements. - - -#### Property name - -The `PropertyNameMatcher` will match a property by its name: - -```php -use DeepCopy\Matcher\PropertyNameMatcher; - -// Will apply a filter to any property of any objects named "id" -$matcher = new PropertyNameMatcher('id'); -``` - - -#### Specific property - -The `PropertyMatcher` will match a specific property of a specific class: - -```php -use DeepCopy\Matcher\PropertyMatcher; - -// Will apply a filter to the property "id" of any objects of the class "MyClass" -$matcher = new PropertyMatcher('MyClass', 'id'); -``` - - -#### Type - -The `TypeMatcher` will match any element by its type (instance of a class or any value that could be parameter of -[gettype()](http://php.net/manual/en/function.gettype.php) function): - -```php -use DeepCopy\TypeMatcher\TypeMatcher; - -// Will apply a filter to any object that is an instance of Doctrine\Common\Collections\Collection -$matcher = new TypeMatcher('Doctrine\Common\Collections\Collection'); -``` - - -### Filters - -- `DeepCopy\Filter` applies a transformation to the object attribute matched by `DeepCopy\Matcher` -- `DeepCopy\TypeFilter` applies a transformation to any element matched by `DeepCopy\TypeMatcher` - -By design, matching a filter will stop the chain of filters (i.e. the next ones will not be applied). -Using the ([`ChainableFilter`](#chainablefilter-filter)) won't stop the chain of filters. - - -#### `SetNullFilter` (filter) - -Let's say for example that you are copying a database record (or a Doctrine entity), so you want the copy not to have -any ID: - -```php -use DeepCopy\DeepCopy; -use DeepCopy\Filter\SetNullFilter; -use DeepCopy\Matcher\PropertyNameMatcher; - -$object = MyClass::load(123); -echo $object->id; // 123 - -$copier = new DeepCopy(); -$copier->addFilter(new SetNullFilter(), new PropertyNameMatcher('id')); - -$copy = $copier->copy($object); - -echo $copy->id; // null -``` - - -#### `KeepFilter` (filter) - -If you want a property to remain untouched (for example, an association to an object): - -```php -use DeepCopy\DeepCopy; -use DeepCopy\Filter\KeepFilter; -use DeepCopy\Matcher\PropertyMatcher; - -$copier = new DeepCopy(); -$copier->addFilter(new KeepFilter(), new PropertyMatcher('MyClass', 'category')); - -$copy = $copier->copy($object); -// $copy->category has not been touched -``` - - -#### `ChainableFilter` (filter) - -If you use cloning on proxy classes, you might want to apply two filters for: -1. loading the data -2. applying a transformation - -You can use the `ChainableFilter` as a decorator of the proxy loader filter, which won't stop the chain of filters (i.e. -the next ones may be applied). - - -```php -use DeepCopy\DeepCopy; -use DeepCopy\Filter\ChainableFilter; -use DeepCopy\Filter\Doctrine\DoctrineProxyFilter; -use DeepCopy\Filter\SetNullFilter; -use DeepCopy\Matcher\Doctrine\DoctrineProxyMatcher; -use DeepCopy\Matcher\PropertyNameMatcher; - -$copier = new DeepCopy(); -$copier->addFilter(new ChainableFilter(new DoctrineProxyFilter()), new DoctrineProxyMatcher()); -$copier->addFilter(new SetNullFilter(), new PropertyNameMatcher('id')); - -$copy = $copier->copy($object); - -echo $copy->id; // null -``` - - -#### `DoctrineCollectionFilter` (filter) - -If you use Doctrine and want to copy an entity, you will need to use the `DoctrineCollectionFilter`: - -```php -use DeepCopy\DeepCopy; -use DeepCopy\Filter\Doctrine\DoctrineCollectionFilter; -use DeepCopy\Matcher\PropertyTypeMatcher; - -$copier = new DeepCopy(); -$copier->addFilter(new DoctrineCollectionFilter(), new PropertyTypeMatcher('Doctrine\Common\Collections\Collection')); - -$copy = $copier->copy($object); -``` - - -#### `DoctrineEmptyCollectionFilter` (filter) - -If you use Doctrine and want to copy an entity who contains a `Collection` that you want to be reset, you can use the -`DoctrineEmptyCollectionFilter` - -```php -use DeepCopy\DeepCopy; -use DeepCopy\Filter\Doctrine\DoctrineEmptyCollectionFilter; -use DeepCopy\Matcher\PropertyMatcher; - -$copier = new DeepCopy(); -$copier->addFilter(new DoctrineEmptyCollectionFilter(), new PropertyMatcher('MyClass', 'myProperty')); - -$copy = $copier->copy($object); - -// $copy->myProperty will return an empty collection -``` - - -#### `DoctrineProxyFilter` (filter) - -If you use Doctrine and use cloning on lazy loaded entities, you might encounter errors mentioning missing fields on a -Doctrine proxy class (...\\\_\_CG\_\_\Proxy). -You can use the `DoctrineProxyFilter` to load the actual entity behind the Doctrine proxy class. -**Make sure, though, to put this as one of your very first filters in the filter chain so that the entity is loaded -before other filters are applied!** -We recommend to decorate the `DoctrineProxyFilter` with the `ChainableFilter` to allow applying other filters to the -cloned lazy loaded entities. - -```php -use DeepCopy\DeepCopy; -use DeepCopy\Filter\Doctrine\DoctrineProxyFilter; -use DeepCopy\Matcher\Doctrine\DoctrineProxyMatcher; - -$copier = new DeepCopy(); -$copier->addFilter(new ChainableFilter(new DoctrineProxyFilter()), new DoctrineProxyMatcher()); - -$copy = $copier->copy($object); - -// $copy should now contain a clone of all entities, including those that were not yet fully loaded. -``` - - -#### `ReplaceFilter` (type filter) - -1. If you want to replace the value of a property: - -```php -use DeepCopy\DeepCopy; -use DeepCopy\Filter\ReplaceFilter; -use DeepCopy\Matcher\PropertyMatcher; - -$copier = new DeepCopy(); -$callback = function ($currentValue) { - return $currentValue . ' (copy)' -}; -$copier->addFilter(new ReplaceFilter($callback), new PropertyMatcher('MyClass', 'title')); - -$copy = $copier->copy($object); - -// $copy->title will contain the data returned by the callback, e.g. 'The title (copy)' -``` - -2. If you want to replace whole element: - -```php -use DeepCopy\DeepCopy; -use DeepCopy\TypeFilter\ReplaceFilter; -use DeepCopy\TypeMatcher\TypeMatcher; - -$copier = new DeepCopy(); -$callback = function (MyClass $myClass) { - return get_class($myClass); -}; -$copier->addTypeFilter(new ReplaceFilter($callback), new TypeMatcher('MyClass')); - -$copy = $copier->copy([new MyClass, 'some string', new MyClass]); - -// $copy will contain ['MyClass', 'some string', 'MyClass'] -``` - - -The `$callback` parameter of the `ReplaceFilter` constructor accepts any PHP callable. - - -#### `ShallowCopyFilter` (type filter) - -Stop *DeepCopy* from recursively copying element, using standard `clone` instead: - -```php -use DeepCopy\DeepCopy; -use DeepCopy\TypeFilter\ShallowCopyFilter; -use DeepCopy\TypeMatcher\TypeMatcher; -use Mockery as m; - -$this->deepCopy = new DeepCopy(); -$this->deepCopy->addTypeFilter( - new ShallowCopyFilter, - new TypeMatcher(m\MockInterface::class) -); - -$myServiceWithMocks = new MyService(m::mock(MyDependency1::class), m::mock(MyDependency2::class)); -// All mocks will be just cloned, not deep copied -``` - - -## Edge cases - -The following structures cannot be deep-copied with PHP Reflection. As a result they are shallow cloned and filters are -not applied. There is two ways for you to handle them: - -- Implement your own `__clone()` method -- Use a filter with a type matcher - - -## Contributing - -DeepCopy is distributed under the MIT license. - - -### Tests - -Running the tests is simple: - -```php -vendor/bin/phpunit -``` - -### Support - -Get professional support via [the Tidelift Subscription](https://tidelift.com/subscription/pkg/packagist-myclabs-deep-copy?utm_source=packagist-myclabs-deep-copy&utm_medium=referral&utm_campaign=readme). diff --git a/docker/streamline-src/vendor/myclabs/deep-copy/composer.json b/docker/streamline-src/vendor/myclabs/deep-copy/composer.json deleted file mode 100644 index f115fff8..00000000 --- a/docker/streamline-src/vendor/myclabs/deep-copy/composer.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "myclabs/deep-copy", - "description": "Create deep copies (clones) of your objects", - "license": "MIT", - "type": "library", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/collections": "^1.6.8", - "doctrine/common": "^2.13.3 || ^3.2.2", - "phpspec/prophecy": "^1.10", - "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" - }, - "conflict": { - "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3 <3.2.2" - }, - "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, - "files": [ - "src/DeepCopy/deep_copy.php" - ] - }, - "autoload-dev": { - "psr-4": { - "DeepCopyTest\\": "tests/DeepCopyTest/", - "DeepCopy\\": "fixtures/" - } - }, - "config": { - "sort-packages": true - } -} diff --git a/docker/streamline-src/vendor/myclabs/deep-copy/src/DeepCopy/DeepCopy.php b/docker/streamline-src/vendor/myclabs/deep-copy/src/DeepCopy/DeepCopy.php deleted file mode 100644 index f739d922..00000000 --- a/docker/streamline-src/vendor/myclabs/deep-copy/src/DeepCopy/DeepCopy.php +++ /dev/null @@ -1,316 +0,0 @@ - Filter, 'matcher' => Matcher] pairs. - */ - private $filters = []; - - /** - * Type Filters to apply. - * - * @var array Array of ['filter' => Filter, 'matcher' => Matcher] pairs. - */ - private $typeFilters = []; - - /** - * @var bool - */ - private $skipUncloneable = false; - - /** - * @var bool - */ - private $useCloneMethod; - - /** - * @param bool $useCloneMethod If set to true, when an object implements the __clone() function, it will be used - * instead of the regular deep cloning. - */ - public function __construct($useCloneMethod = false) - { - $this->useCloneMethod = $useCloneMethod; - - $this->addTypeFilter(new ArrayObjectFilter($this), new TypeMatcher(ArrayObject::class)); - $this->addTypeFilter(new DateIntervalFilter(), new TypeMatcher(DateInterval::class)); - $this->addTypeFilter(new DatePeriodFilter(), new TypeMatcher(DatePeriod::class)); - $this->addTypeFilter(new SplDoublyLinkedListFilter($this), new TypeMatcher(SplDoublyLinkedList::class)); - } - - /** - * If enabled, will not throw an exception when coming across an uncloneable property. - * - * @param $skipUncloneable - * - * @return $this - */ - public function skipUncloneable($skipUncloneable = true) - { - $this->skipUncloneable = $skipUncloneable; - - return $this; - } - - /** - * Deep copies the given object. - * - * @param mixed $object - * - * @return mixed - */ - public function copy($object) - { - $this->hashMap = []; - - return $this->recursiveCopy($object); - } - - public function addFilter(Filter $filter, Matcher $matcher) - { - $this->filters[] = [ - 'matcher' => $matcher, - 'filter' => $filter, - ]; - } - - public function prependFilter(Filter $filter, Matcher $matcher) - { - array_unshift($this->filters, [ - 'matcher' => $matcher, - 'filter' => $filter, - ]); - } - - public function addTypeFilter(TypeFilter $filter, TypeMatcher $matcher) - { - $this->typeFilters[] = [ - 'matcher' => $matcher, - 'filter' => $filter, - ]; - } - - private function recursiveCopy($var) - { - // Matches Type Filter - if ($filter = $this->getFirstMatchedTypeFilter($this->typeFilters, $var)) { - return $filter->apply($var); - } - - // Resource - if (is_resource($var)) { - return $var; - } - - // Array - if (is_array($var)) { - return $this->copyArray($var); - } - - // Scalar - if (! is_object($var)) { - return $var; - } - - // Enum - if (PHP_VERSION_ID >= 80100 && enum_exists(get_class($var))) { - return $var; - } - - // Object - return $this->copyObject($var); - } - - /** - * Copy an array - * @param array $array - * @return array - */ - private function copyArray(array $array) - { - foreach ($array as $key => $value) { - $array[$key] = $this->recursiveCopy($value); - } - - return $array; - } - - /** - * Copies an object. - * - * @param object $object - * - * @throws CloneException - * - * @return object - */ - private function copyObject($object) - { - $objectHash = spl_object_hash($object); - - if (isset($this->hashMap[$objectHash])) { - return $this->hashMap[$objectHash]; - } - - $reflectedObject = new ReflectionObject($object); - $isCloneable = $reflectedObject->isCloneable(); - - if (false === $isCloneable) { - if ($this->skipUncloneable) { - $this->hashMap[$objectHash] = $object; - - return $object; - } - - throw new CloneException( - sprintf( - 'The class "%s" is not cloneable.', - $reflectedObject->getName() - ) - ); - } - - $newObject = clone $object; - $this->hashMap[$objectHash] = $newObject; - - if ($this->useCloneMethod && $reflectedObject->hasMethod('__clone')) { - return $newObject; - } - - if ($newObject instanceof DateTimeInterface || $newObject instanceof DateTimeZone) { - return $newObject; - } - - foreach (ReflectionHelper::getProperties($reflectedObject) as $property) { - $this->copyObjectProperty($newObject, $property); - } - - return $newObject; - } - - private function copyObjectProperty($object, ReflectionProperty $property) - { - // Ignore static properties - if ($property->isStatic()) { - return; - } - - // Ignore readonly properties - if (method_exists($property, 'isReadOnly') && $property->isReadOnly()) { - return; - } - - // Apply the filters - foreach ($this->filters as $item) { - /** @var Matcher $matcher */ - $matcher = $item['matcher']; - /** @var Filter $filter */ - $filter = $item['filter']; - - if ($matcher->matches($object, $property->getName())) { - $filter->apply( - $object, - $property->getName(), - function ($object) { - return $this->recursiveCopy($object); - } - ); - - if ($filter instanceof ChainableFilter) { - continue; - } - - // If a filter matches, we stop processing this property - return; - } - } - - $property->setAccessible(true); - - // Ignore uninitialized properties (for PHP >7.4) - if (method_exists($property, 'isInitialized') && !$property->isInitialized($object)) { - return; - } - - $propertyValue = $property->getValue($object); - - // Copy the property - $property->setValue($object, $this->recursiveCopy($propertyValue)); - } - - /** - * Returns first filter that matches variable, `null` if no such filter found. - * - * @param array $filterRecords Associative array with 2 members: 'filter' with value of type {@see TypeFilter} and - * 'matcher' with value of type {@see TypeMatcher} - * @param mixed $var - * - * @return TypeFilter|null - */ - private function getFirstMatchedTypeFilter(array $filterRecords, $var) - { - $matched = $this->first( - $filterRecords, - function (array $record) use ($var) { - /* @var TypeMatcher $matcher */ - $matcher = $record['matcher']; - - return $matcher->matches($var); - } - ); - - return isset($matched) ? $matched['filter'] : null; - } - - /** - * Returns first element that matches predicate, `null` if no such element found. - * - * @param array $elements Array of ['filter' => Filter, 'matcher' => Matcher] pairs. - * @param callable $predicate Predicate arguments are: element. - * - * @return array|null Associative array with 2 members: 'filter' with value of type {@see TypeFilter} and 'matcher' - * with value of type {@see TypeMatcher} or `null`. - */ - private function first(array $elements, callable $predicate) - { - foreach ($elements as $element) { - if (call_user_func($predicate, $element)) { - return $element; - } - } - - return null; - } -} diff --git a/docker/streamline-src/vendor/nesbot/carbon/composer.json b/docker/streamline-src/vendor/nesbot/carbon/composer.json deleted file mode 100644 index ccd2a2cc..00000000 --- a/docker/streamline-src/vendor/nesbot/carbon/composer.json +++ /dev/null @@ -1,127 +0,0 @@ -{ - "name": "nesbot/carbon", - "description": "An API extension for DateTime that supports 281 different languages.", - "license": "MIT", - "type": "library", - "keywords": [ - "date", - "time", - "DateTime" - ], - "authors": [ - { - "name": "Brian Nesbitt", - "email": "brian@nesbot.com", - "homepage": "https://markido.com" - }, - { - "name": "kylekatarnls", - "homepage": "https://github.com/kylekatarnls" - } - ], - "homepage": "https://carbon.nesbot.com", - "support": { - "issues": "https://github.com/briannesbitt/Carbon/issues", - "source": "https://github.com/briannesbitt/Carbon", - "docs": "https://carbon.nesbot.com/docs" - }, - "funding": [ - { - "url": "https://github.com/sponsors/kylekatarnls", - "type": "github" - }, - { - "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", - "type": "tidelift" - }, - { - "url": "https://opencollective.com/Carbon#sponsor", - "type": "opencollective" - } - ], - "require": { - "php": "^7.1.8 || ^8.0", - "ext-json": "*", - "carbonphp/carbon-doctrine-types": "*", - "psr/clock": "^1.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.1.4 || ^4.0", - "doctrine/orm": "^2.7 || ^3.0", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "ondrejmirtes/better-reflection": "<6", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.99 || ^1.7.14", - "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6", - "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", - "squizlabs/php_codesniffer": "^3.4" - }, - "provide": { - "psr/clock-implementation": "1.0" - }, - "minimum-stability": "dev", - "prefer-stable": true, - "autoload": { - "psr-4": { - "Carbon\\": "src/Carbon/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - }, - "files": [ - "tests/Laravel/ServiceProvider.php" - ] - }, - "bin": [ - "bin/carbon" - ], - "config": { - "allow-plugins": { - "phpstan/extension-installer": true, - "composer/package-versions-deprecated": true - }, - "process-timeout": 0, - "sort-packages": true - }, - "extra": { - "branch-alias": { - "dev-master": "3.x-dev", - "dev-2.x": "2.x-dev" - }, - "laravel": { - "providers": [ - "Carbon\\Laravel\\ServiceProvider" - ] - }, - "phpstan": { - "includes": [ - "extension.neon" - ] - } - }, - "scripts": { - "phpcs": "php-cs-fixer fix -v --diff --dry-run", - "phpdoc": "php phpdoc.php", - "phpmd": "phpmd src text /phpmd.xml", - "phpmd-test": "phpmd tests text /tests/phpmd-test.xml", - "phpstan": "phpstan analyse --configuration phpstan.neon", - "phpunit": "phpunit --verbose", - "style-check": [ - "@phpcs", - "@phpstan", - "@phpmd" - ], - "test": [ - "@phpunit", - "@style-check" - ], - "sponsors": "php sponsors.php" - } -} diff --git a/docker/streamline-src/vendor/nesbot/carbon/readme.md b/docker/streamline-src/vendor/nesbot/carbon/readme.md deleted file mode 100644 index 97ec8ce0..00000000 --- a/docker/streamline-src/vendor/nesbot/carbon/readme.md +++ /dev/null @@ -1,176 +0,0 @@ -# Carbon - -[![Latest Stable Version](https://img.shields.io/packagist/v/nesbot/carbon.svg?style=flat-square)](https://packagist.org/packages/nesbot/carbon) -[![Total Downloads](https://img.shields.io/packagist/dt/nesbot/carbon.svg?style=flat-square)](https://packagist.org/packages/nesbot/carbon) -[![GitHub Actions](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Fbriannesbitt%2FCarbon%2Fbadge&style=flat-square&label=Build&logo=none)](https://github.com/briannesbitt/Carbon/actions) -[![codecov.io](https://img.shields.io/codecov/c/github/briannesbitt/Carbon.svg?style=flat-square)](https://codecov.io/github/briannesbitt/Carbon?branch=master) -[![Tidelift](https://tidelift.com/badges/github/briannesbitt/Carbon)](https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme) - -An international PHP extension for DateTime. [https://carbon.nesbot.com](https://carbon.nesbot.com) - -```php -toDateTimeString()); -printf("Right now in Vancouver is %s", Carbon::now('America/Vancouver')); //implicit __toString() -$tomorrow = Carbon::now()->addDay(); -$lastWeek = Carbon::now()->subWeek(); -$nextSummerOlympics = Carbon::createFromDate(2016)->addYears(4); - -$officialDate = Carbon::now()->toRfc2822String(); - -$howOldAmI = Carbon::createFromDate(1975, 5, 21)->age; - -$noonTodayLondonTime = Carbon::createFromTime(12, 0, 0, 'Europe/London'); - -$internetWillBlowUpOn = Carbon::create(2038, 01, 19, 3, 14, 7, 'GMT'); - -// Don't really want this to happen so mock now -Carbon::setTestNow(Carbon::createFromDate(2000, 1, 1)); - -// comparisons are always done in UTC -if (Carbon::now()->gte($internetWillBlowUpOn)) { - die(); -} - -// Phew! Return to normal behaviour -Carbon::setTestNow(); - -if (Carbon::now()->isWeekend()) { - echo 'Party!'; -} -// Over 200 languages (and over 500 regional variants) supported: -echo Carbon::now()->subMinutes(2)->diffForHumans(); // '2 minutes ago' -echo Carbon::now()->subMinutes(2)->locale('zh_CN')->diffForHumans(); // '2分钟前' -echo Carbon::parse('2019-07-23 14:51')->isoFormat('LLLL'); // 'Tuesday, July 23, 2019 2:51 PM' -echo Carbon::parse('2019-07-23 14:51')->locale('fr_FR')->isoFormat('LLLL'); // 'mardi 23 juillet 2019 14:51' - -// ... but also does 'from now', 'after' and 'before' -// rolling up to seconds, minutes, hours, days, months, years - -$daysSinceEpoch = Carbon::createFromTimestamp(0)->diffInDays(); -``` - -[Get supported nesbot/carbon with the Tidelift Subscription](https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme) - -## Installation - -### With Composer - -``` -$ composer require nesbot/carbon -``` - -```json -{ - "require": { - "nesbot/carbon": "^2.16" - } -} -``` - -```php - - -### Translators - -[Thanks to people helping us to translate Carbon in so many languages](https://carbon.nesbot.com/contribute/translators/) - -### Sponsors - -Support this project by becoming a sponsor. Your logo will show up here with a link to your website. - - -Онлайн казино -CasinoHex Canada -Probukmacher -Casino-portugal.pt -Игровые автоматы -Slots City -inkedin -Онлайн казино України -OnlineCasinosSpelen -Best non Gamstop sites in the UK -Real Money Pokies -Non GamStop Bookies UK -Онлайн Казино Украины -SSSTwitter -Non-GamStop Bets UK -Chudovo -UK Casino Gap -NZ Casino Deps -NonStopCasino.org -Migliori Siti Non AAMS -UK NonGamStopCasinos -SnapTik -Proxidize -IG Downloader -Blastup -Organic Social Boost -AzuraCast -Triplebyte -GitHub Sponsors -Salesforce - - -[[Become a sponsor via OpenCollective](https://opencollective.com/Carbon#sponsor)] - - - - - - -[[Become a sponsor via GitHub](https://github.com/sponsors/kylekatarnls)] - -### Backers - -Thank you to all our backers! 🙏 - - - -[[Become a backer](https://opencollective.com/Carbon#backer)] - -## Carbon for enterprise - -Available as part of the Tidelift Subscription. - -The maintainers of ``Carbon`` and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) diff --git a/docker/streamline-src/vendor/nesbot/carbon/src/Carbon/AbstractTranslator.php b/docker/streamline-src/vendor/nesbot/carbon/src/Carbon/AbstractTranslator.php deleted file mode 100644 index ffe82e43..00000000 --- a/docker/streamline-src/vendor/nesbot/carbon/src/Carbon/AbstractTranslator.php +++ /dev/null @@ -1,400 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon; - -use Carbon\MessageFormatter\MessageFormatterMapper; -use Closure; -use ReflectionException; -use ReflectionFunction; -use Symfony\Component\Translation; -use Symfony\Component\Translation\Formatter\MessageFormatterInterface; -use Symfony\Component\Translation\Loader\ArrayLoader; - -abstract class AbstractTranslator extends Translation\Translator -{ - /** - * Translator singletons for each language. - * - * @var array - */ - protected static $singletons = []; - - /** - * List of custom localized messages. - * - * @var array - */ - protected $messages = []; - - /** - * List of custom directories that contain translation files. - * - * @var string[] - */ - protected $directories = []; - - /** - * Set to true while constructing. - * - * @var bool - */ - protected $initializing = false; - - /** - * List of locales aliases. - * - * @var array - */ - protected $aliases = [ - 'me' => 'sr_Latn_ME', - 'scr' => 'sh', - ]; - - /** - * Return a singleton instance of Translator. - * - * @param string|null $locale optional initial locale ("en" - english by default) - * - * @return static - */ - public static function get($locale = null) - { - $locale = $locale ?: 'en'; - $key = static::class === Translator::class ? $locale : static::class.'|'.$locale; - - if (!isset(static::$singletons[$key])) { - static::$singletons[$key] = new static($locale); - } - - return static::$singletons[$key]; - } - - public function __construct($locale, MessageFormatterInterface $formatter = null, $cacheDir = null, $debug = false) - { - parent::setLocale($locale); - $this->initializing = true; - $this->directories = [__DIR__.'/Lang']; - $this->addLoader('array', new ArrayLoader()); - parent::__construct($locale, new MessageFormatterMapper($formatter), $cacheDir, $debug); - $this->initializing = false; - } - - /** - * Returns the list of directories translation files are searched in. - * - * @return array - */ - public function getDirectories(): array - { - return $this->directories; - } - - /** - * Set list of directories translation files are searched in. - * - * @param array $directories new directories list - * - * @return $this - */ - public function setDirectories(array $directories) - { - $this->directories = $directories; - - return $this; - } - - /** - * Add a directory to the list translation files are searched in. - * - * @param string $directory new directory - * - * @return $this - */ - public function addDirectory(string $directory) - { - $this->directories[] = $directory; - - return $this; - } - - /** - * Remove a directory from the list translation files are searched in. - * - * @param string $directory directory path - * - * @return $this - */ - public function removeDirectory(string $directory) - { - $search = rtrim(strtr($directory, '\\', '/'), '/'); - - return $this->setDirectories(array_filter($this->getDirectories(), function ($item) use ($search) { - return rtrim(strtr($item, '\\', '/'), '/') !== $search; - })); - } - - /** - * Reset messages of a locale (all locale if no locale passed). - * Remove custom messages and reload initial messages from matching - * file in Lang directory. - * - * @param string|null $locale - * - * @return bool - */ - public function resetMessages($locale = null) - { - if ($locale === null) { - $this->messages = []; - - return true; - } - - $this->assertValidLocale($locale); - - foreach ($this->getDirectories() as $directory) { - $data = @include sprintf('%s/%s.php', rtrim($directory, '\\/'), $locale); - - if ($data !== false) { - $this->messages[$locale] = $data; - $this->addResource('array', $this->messages[$locale], $locale); - - return true; - } - } - - return false; - } - - /** - * Returns the list of files matching a given locale prefix (or all if empty). - * - * @param string $prefix prefix required to filter result - * - * @return array - */ - public function getLocalesFiles($prefix = '') - { - $files = []; - - foreach ($this->getDirectories() as $directory) { - $directory = rtrim($directory, '\\/'); - - foreach (glob("$directory/$prefix*.php") as $file) { - $files[] = $file; - } - } - - return array_unique($files); - } - - /** - * Returns the list of internally available locales and already loaded custom locales. - * (It will ignore custom translator dynamic loading.) - * - * @param string $prefix prefix required to filter result - * - * @return array - */ - public function getAvailableLocales($prefix = '') - { - $locales = []; - foreach ($this->getLocalesFiles($prefix) as $file) { - $locales[] = substr($file, strrpos($file, '/') + 1, -4); - } - - return array_unique(array_merge($locales, array_keys($this->messages))); - } - - protected function translate(?string $id, array $parameters = [], ?string $domain = null, ?string $locale = null): string - { - if ($domain === null) { - $domain = 'messages'; - } - - $catalogue = $this->getCatalogue($locale); - $format = $this instanceof TranslatorStrongTypeInterface - ? $this->getFromCatalogue($catalogue, (string) $id, $domain) - : $this->getCatalogue($locale)->get((string) $id, $domain); // @codeCoverageIgnore - - if ($format instanceof Closure) { - // @codeCoverageIgnoreStart - try { - $count = (new ReflectionFunction($format))->getNumberOfRequiredParameters(); - } catch (ReflectionException $exception) { - $count = 0; - } - // @codeCoverageIgnoreEnd - - return $format( - ...array_values($parameters), - ...array_fill(0, max(0, $count - \count($parameters)), null) - ); - } - - return parent::trans($id, $parameters, $domain, $locale); - } - - /** - * Init messages language from matching file in Lang directory. - * - * @param string $locale - * - * @return bool - */ - protected function loadMessagesFromFile($locale) - { - return isset($this->messages[$locale]) || $this->resetMessages($locale); - } - - /** - * Set messages of a locale and take file first if present. - * - * @param string $locale - * @param array $messages - * - * @return $this - */ - public function setMessages($locale, $messages) - { - $this->loadMessagesFromFile($locale); - $this->addResource('array', $messages, $locale); - $this->messages[$locale] = array_merge( - $this->messages[$locale] ?? [], - $messages - ); - - return $this; - } - - /** - * Set messages of the current locale and take file first if present. - * - * @param array $messages - * - * @return $this - */ - public function setTranslations($messages) - { - return $this->setMessages($this->getLocale(), $messages); - } - - /** - * Get messages of a locale, if none given, return all the - * languages. - * - * @param string|null $locale - * - * @return array - */ - public function getMessages($locale = null) - { - return $locale === null ? $this->messages : $this->messages[$locale]; - } - - /** - * Set the current translator locale and indicate if the source locale file exists - * - * @param string $locale locale ex. en - * - * @return bool - */ - public function setLocale($locale) - { - $locale = preg_replace_callback('/[-_]([a-z]{2,}|\d{2,})/', function ($matches) { - // _2-letters or YUE is a region, _3+-letters is a variant - $upper = strtoupper($matches[1]); - - if ($upper === 'YUE' || $upper === 'ISO' || \strlen($upper) < 3) { - return "_$upper"; - } - - return '_'.ucfirst($matches[1]); - }, strtolower($locale)); - - $previousLocale = $this->getLocale(); - - if ($previousLocale === $locale && isset($this->messages[$locale])) { - return true; - } - - unset(static::$singletons[$previousLocale]); - - if ($locale === 'auto') { - $completeLocale = setlocale(LC_TIME, '0'); - $locale = preg_replace('/^([^_.-]+).*$/', '$1', $completeLocale); - $locales = $this->getAvailableLocales($locale); - - $completeLocaleChunks = preg_split('/[_.-]+/', $completeLocale); - - $getScore = function ($language) use ($completeLocaleChunks) { - return self::compareChunkLists($completeLocaleChunks, preg_split('/[_.-]+/', $language)); - }; - - usort($locales, function ($first, $second) use ($getScore) { - return $getScore($second) <=> $getScore($first); - }); - - $locale = $locales[0]; - } - - if (isset($this->aliases[$locale])) { - $locale = $this->aliases[$locale]; - } - - // If subtag (ex: en_CA) first load the macro (ex: en) to have a fallback - if (str_contains($locale, '_') && - $this->loadMessagesFromFile($macroLocale = preg_replace('/^([^_]+).*$/', '$1', $locale)) - ) { - parent::setLocale($macroLocale); - } - - if (!$this->loadMessagesFromFile($locale) && !$this->initializing) { - return false; - } - - parent::setLocale($locale); - - return true; - } - - /** - * Show locale on var_dump(). - * - * @return array - */ - public function __debugInfo() - { - return [ - 'locale' => $this->getLocale(), - ]; - } - - private static function compareChunkLists($referenceChunks, $chunks) - { - $score = 0; - - foreach ($referenceChunks as $index => $chunk) { - if (!isset($chunks[$index])) { - $score++; - - continue; - } - - if (strtolower($chunks[$index]) === strtolower($chunk)) { - $score += 10; - } - } - - return $score; - } -} diff --git a/docker/streamline-src/vendor/nesbot/carbon/src/Carbon/Traits/Comparison.php b/docker/streamline-src/vendor/nesbot/carbon/src/Carbon/Traits/Comparison.php deleted file mode 100644 index daee19cc..00000000 --- a/docker/streamline-src/vendor/nesbot/carbon/src/Carbon/Traits/Comparison.php +++ /dev/null @@ -1,1129 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Traits; - -use BadMethodCallException; -use Carbon\CarbonInterface; -use Carbon\Exceptions\BadComparisonUnitException; -use InvalidArgumentException; - -/** - * Trait Comparison. - * - * Comparison utils and testers. All the following methods return booleans. - * nowWithSameTz - * - * Depends on the following methods: - * - * @method static resolveCarbon($date) - * @method static copy() - * @method static nowWithSameTz() - * @method static static yesterday($timezone = null) - * @method static static tomorrow($timezone = null) - */ -trait Comparison -{ - /** @var bool */ - protected $endOfTime = false; - - /** @var bool */ - protected $startOfTime = false; - - /** - * Determines if the instance is equal to another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->eq('2018-07-25 12:45:16'); // true - * Carbon::parse('2018-07-25 12:45:16')->eq(Carbon::parse('2018-07-25 12:45:16')); // true - * Carbon::parse('2018-07-25 12:45:16')->eq('2018-07-25 12:45:17'); // false - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @see equalTo() - * - * @return bool - */ - public function eq($date): bool - { - return $this->equalTo($date); - } - - /** - * Determines if the instance is equal to another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->equalTo('2018-07-25 12:45:16'); // true - * Carbon::parse('2018-07-25 12:45:16')->equalTo(Carbon::parse('2018-07-25 12:45:16')); // true - * Carbon::parse('2018-07-25 12:45:16')->equalTo('2018-07-25 12:45:17'); // false - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @return bool - */ - public function equalTo($date): bool - { - $this->discourageNull($date); - $this->discourageBoolean($date); - - return $this == $this->resolveCarbon($date); - } - - /** - * Determines if the instance is not equal to another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->ne('2018-07-25 12:45:16'); // false - * Carbon::parse('2018-07-25 12:45:16')->ne(Carbon::parse('2018-07-25 12:45:16')); // false - * Carbon::parse('2018-07-25 12:45:16')->ne('2018-07-25 12:45:17'); // true - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @see notEqualTo() - * - * @return bool - */ - public function ne($date): bool - { - return $this->notEqualTo($date); - } - - /** - * Determines if the instance is not equal to another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->notEqualTo('2018-07-25 12:45:16'); // false - * Carbon::parse('2018-07-25 12:45:16')->notEqualTo(Carbon::parse('2018-07-25 12:45:16')); // false - * Carbon::parse('2018-07-25 12:45:16')->notEqualTo('2018-07-25 12:45:17'); // true - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @return bool - */ - public function notEqualTo($date): bool - { - return !$this->equalTo($date); - } - - /** - * Determines if the instance is greater (after) than another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->gt('2018-07-25 12:45:15'); // true - * Carbon::parse('2018-07-25 12:45:16')->gt('2018-07-25 12:45:16'); // false - * Carbon::parse('2018-07-25 12:45:16')->gt('2018-07-25 12:45:17'); // false - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @see greaterThan() - * - * @return bool - */ - public function gt($date): bool - { - return $this->greaterThan($date); - } - - /** - * Determines if the instance is greater (after) than another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->greaterThan('2018-07-25 12:45:15'); // true - * Carbon::parse('2018-07-25 12:45:16')->greaterThan('2018-07-25 12:45:16'); // false - * Carbon::parse('2018-07-25 12:45:16')->greaterThan('2018-07-25 12:45:17'); // false - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @return bool - */ - public function greaterThan($date): bool - { - $this->discourageNull($date); - $this->discourageBoolean($date); - - return $this > $this->resolveCarbon($date); - } - - /** - * Determines if the instance is greater (after) than another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->isAfter('2018-07-25 12:45:15'); // true - * Carbon::parse('2018-07-25 12:45:16')->isAfter('2018-07-25 12:45:16'); // false - * Carbon::parse('2018-07-25 12:45:16')->isAfter('2018-07-25 12:45:17'); // false - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @see greaterThan() - * - * @return bool - */ - public function isAfter($date): bool - { - return $this->greaterThan($date); - } - - /** - * Determines if the instance is greater (after) than or equal to another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->gte('2018-07-25 12:45:15'); // true - * Carbon::parse('2018-07-25 12:45:16')->gte('2018-07-25 12:45:16'); // true - * Carbon::parse('2018-07-25 12:45:16')->gte('2018-07-25 12:45:17'); // false - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @see greaterThanOrEqualTo() - * - * @return bool - */ - public function gte($date): bool - { - return $this->greaterThanOrEqualTo($date); - } - - /** - * Determines if the instance is greater (after) than or equal to another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->greaterThanOrEqualTo('2018-07-25 12:45:15'); // true - * Carbon::parse('2018-07-25 12:45:16')->greaterThanOrEqualTo('2018-07-25 12:45:16'); // true - * Carbon::parse('2018-07-25 12:45:16')->greaterThanOrEqualTo('2018-07-25 12:45:17'); // false - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @return bool - */ - public function greaterThanOrEqualTo($date): bool - { - $this->discourageNull($date); - $this->discourageBoolean($date); - - return $this >= $this->resolveCarbon($date); - } - - /** - * Determines if the instance is less (before) than another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->lt('2018-07-25 12:45:15'); // false - * Carbon::parse('2018-07-25 12:45:16')->lt('2018-07-25 12:45:16'); // false - * Carbon::parse('2018-07-25 12:45:16')->lt('2018-07-25 12:45:17'); // true - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @see lessThan() - * - * @return bool - */ - public function lt($date): bool - { - return $this->lessThan($date); - } - - /** - * Determines if the instance is less (before) than another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->lessThan('2018-07-25 12:45:15'); // false - * Carbon::parse('2018-07-25 12:45:16')->lessThan('2018-07-25 12:45:16'); // false - * Carbon::parse('2018-07-25 12:45:16')->lessThan('2018-07-25 12:45:17'); // true - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @return bool - */ - public function lessThan($date): bool - { - $this->discourageNull($date); - $this->discourageBoolean($date); - - return $this < $this->resolveCarbon($date); - } - - /** - * Determines if the instance is less (before) than another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->isBefore('2018-07-25 12:45:15'); // false - * Carbon::parse('2018-07-25 12:45:16')->isBefore('2018-07-25 12:45:16'); // false - * Carbon::parse('2018-07-25 12:45:16')->isBefore('2018-07-25 12:45:17'); // true - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @see lessThan() - * - * @return bool - */ - public function isBefore($date): bool - { - return $this->lessThan($date); - } - - /** - * Determines if the instance is less (before) or equal to another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->lte('2018-07-25 12:45:15'); // false - * Carbon::parse('2018-07-25 12:45:16')->lte('2018-07-25 12:45:16'); // true - * Carbon::parse('2018-07-25 12:45:16')->lte('2018-07-25 12:45:17'); // true - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @see lessThanOrEqualTo() - * - * @return bool - */ - public function lte($date): bool - { - return $this->lessThanOrEqualTo($date); - } - - /** - * Determines if the instance is less (before) or equal to another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->lessThanOrEqualTo('2018-07-25 12:45:15'); // false - * Carbon::parse('2018-07-25 12:45:16')->lessThanOrEqualTo('2018-07-25 12:45:16'); // true - * Carbon::parse('2018-07-25 12:45:16')->lessThanOrEqualTo('2018-07-25 12:45:17'); // true - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @return bool - */ - public function lessThanOrEqualTo($date): bool - { - $this->discourageNull($date); - $this->discourageBoolean($date); - - return $this <= $this->resolveCarbon($date); - } - - /** - * Determines if the instance is between two others. - * - * The third argument allow you to specify if bounds are included or not (true by default) - * but for when you including/excluding bounds may produce different results in your application, - * we recommend to use the explicit methods ->betweenIncluded() or ->betweenExcluded() instead. - * - * @example - * ``` - * Carbon::parse('2018-07-25')->between('2018-07-14', '2018-08-01'); // true - * Carbon::parse('2018-07-25')->between('2018-08-01', '2018-08-20'); // false - * Carbon::parse('2018-07-25')->between('2018-07-25', '2018-08-01'); // true - * Carbon::parse('2018-07-25')->between('2018-07-25', '2018-08-01', false); // false - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1 - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2 - * @param bool $equal Indicates if an equal to comparison should be done - * - * @return bool - */ - public function between($date1, $date2, $equal = true): bool - { - $date1 = $this->resolveCarbon($date1); - $date2 = $this->resolveCarbon($date2); - - if ($date1->greaterThan($date2)) { - [$date1, $date2] = [$date2, $date1]; - } - - if ($equal) { - return $this >= $date1 && $this <= $date2; - } - - return $this > $date1 && $this < $date2; - } - - /** - * Determines if the instance is between two others, bounds included. - * - * @example - * ``` - * Carbon::parse('2018-07-25')->betweenIncluded('2018-07-14', '2018-08-01'); // true - * Carbon::parse('2018-07-25')->betweenIncluded('2018-08-01', '2018-08-20'); // false - * Carbon::parse('2018-07-25')->betweenIncluded('2018-07-25', '2018-08-01'); // true - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1 - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2 - * - * @return bool - */ - public function betweenIncluded($date1, $date2): bool - { - return $this->between($date1, $date2, true); - } - - /** - * Determines if the instance is between two others, bounds excluded. - * - * @example - * ``` - * Carbon::parse('2018-07-25')->betweenExcluded('2018-07-14', '2018-08-01'); // true - * Carbon::parse('2018-07-25')->betweenExcluded('2018-08-01', '2018-08-20'); // false - * Carbon::parse('2018-07-25')->betweenExcluded('2018-07-25', '2018-08-01'); // false - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1 - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2 - * - * @return bool - */ - public function betweenExcluded($date1, $date2): bool - { - return $this->between($date1, $date2, false); - } - - /** - * Determines if the instance is between two others - * - * @example - * ``` - * Carbon::parse('2018-07-25')->isBetween('2018-07-14', '2018-08-01'); // true - * Carbon::parse('2018-07-25')->isBetween('2018-08-01', '2018-08-20'); // false - * Carbon::parse('2018-07-25')->isBetween('2018-07-25', '2018-08-01'); // true - * Carbon::parse('2018-07-25')->isBetween('2018-07-25', '2018-08-01', false); // false - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1 - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2 - * @param bool $equal Indicates if an equal to comparison should be done - * - * @return bool - */ - public function isBetween($date1, $date2, $equal = true): bool - { - return $this->between($date1, $date2, $equal); - } - - /** - * Determines if the instance is a weekday. - * - * @example - * ``` - * Carbon::parse('2019-07-14')->isWeekday(); // false - * Carbon::parse('2019-07-15')->isWeekday(); // true - * ``` - * - * @return bool - */ - public function isWeekday() - { - return !$this->isWeekend(); - } - - /** - * Determines if the instance is a weekend day. - * - * @example - * ``` - * Carbon::parse('2019-07-14')->isWeekend(); // true - * Carbon::parse('2019-07-15')->isWeekend(); // false - * ``` - * - * @return bool - */ - public function isWeekend() - { - return \in_array($this->dayOfWeek, static::$weekendDays, true); - } - - /** - * Determines if the instance is yesterday. - * - * @example - * ``` - * Carbon::yesterday()->isYesterday(); // true - * Carbon::tomorrow()->isYesterday(); // false - * ``` - * - * @return bool - */ - public function isYesterday() - { - return $this->toDateString() === static::yesterday($this->getTimezone())->toDateString(); - } - - /** - * Determines if the instance is today. - * - * @example - * ``` - * Carbon::today()->isToday(); // true - * Carbon::tomorrow()->isToday(); // false - * ``` - * - * @return bool - */ - public function isToday() - { - return $this->toDateString() === $this->nowWithSameTz()->toDateString(); - } - - /** - * Determines if the instance is tomorrow. - * - * @example - * ``` - * Carbon::tomorrow()->isTomorrow(); // true - * Carbon::yesterday()->isTomorrow(); // false - * ``` - * - * @return bool - */ - public function isTomorrow() - { - return $this->toDateString() === static::tomorrow($this->getTimezone())->toDateString(); - } - - /** - * Determines if the instance is in the future, ie. greater (after) than now. - * - * @example - * ``` - * Carbon::now()->addHours(5)->isFuture(); // true - * Carbon::now()->subHours(5)->isFuture(); // false - * ``` - * - * @return bool - */ - public function isFuture() - { - return $this->greaterThan($this->nowWithSameTz()); - } - - /** - * Determines if the instance is in the past, ie. less (before) than now. - * - * @example - * ``` - * Carbon::now()->subHours(5)->isPast(); // true - * Carbon::now()->addHours(5)->isPast(); // false - * ``` - * - * @return bool - */ - public function isPast() - { - return $this->lessThan($this->nowWithSameTz()); - } - - /** - * Determines if the instance is a leap year. - * - * @example - * ``` - * Carbon::parse('2020-01-01')->isLeapYear(); // true - * Carbon::parse('2019-01-01')->isLeapYear(); // false - * ``` - * - * @return bool - */ - public function isLeapYear() - { - return $this->rawFormat('L') === '1'; - } - - /** - * Determines if the instance is a long year (using calendar year). - * - * ⚠️ This method completely ignores month and day to use the numeric year number, - * it's not correct if the exact date matters. For instance as `2019-12-30` is already - * in the first week of the 2020 year, if you want to know from this date if ISO week - * year 2020 is a long year, use `isLongIsoYear` instead. - * - * @example - * ``` - * Carbon::create(2015)->isLongYear(); // true - * Carbon::create(2016)->isLongYear(); // false - * ``` - * - * @see https://en.wikipedia.org/wiki/ISO_8601#Week_dates - * - * @return bool - */ - public function isLongYear() - { - return static::create($this->year, 12, 28, 0, 0, 0, $this->tz)->weekOfYear === 53; - } - - /** - * Determines if the instance is a long year (using ISO 8601 year). - * - * @example - * ``` - * Carbon::parse('2015-01-01')->isLongIsoYear(); // true - * Carbon::parse('2016-01-01')->isLongIsoYear(); // true - * Carbon::parse('2016-01-03')->isLongIsoYear(); // false - * Carbon::parse('2019-12-29')->isLongIsoYear(); // false - * Carbon::parse('2019-12-30')->isLongIsoYear(); // true - * ``` - * - * @see https://en.wikipedia.org/wiki/ISO_8601#Week_dates - * - * @return bool - */ - public function isLongIsoYear() - { - return static::create($this->isoWeekYear, 12, 28, 0, 0, 0, $this->tz)->weekOfYear === 53; - } - - /** - * Compares the formatted values of the two dates. - * - * @example - * ``` - * Carbon::parse('2019-06-13')->isSameAs('Y-d', Carbon::parse('2019-12-13')); // true - * Carbon::parse('2019-06-13')->isSameAs('Y-d', Carbon::parse('2019-06-14')); // false - * ``` - * - * @param string $format date formats to compare. - * @param \Carbon\Carbon|\DateTimeInterface|string|null $date instance to compare with or null to use current day. - * - * @return bool - */ - public function isSameAs($format, $date = null) - { - return $this->rawFormat($format) === $this->resolveCarbon($date)->rawFormat($format); - } - - /** - * Determines if the instance is in the current unit given. - * - * @example - * ``` - * Carbon::parse('2019-01-13')->isSameUnit('year', Carbon::parse('2019-12-25')); // true - * Carbon::parse('2018-12-13')->isSameUnit('year', Carbon::parse('2019-12-25')); // false - * ``` - * - * @param string $unit singular unit string - * @param \Carbon\Carbon|\DateTimeInterface|null $date instance to compare with or null to use current day. - * - * @throws BadComparisonUnitException - * - * @return bool - */ - public function isSameUnit($unit, $date = null) - { - $units = [ - // @call isSameUnit - 'year' => 'Y', - // @call isSameUnit - 'week' => 'o-W', - // @call isSameUnit - 'day' => 'Y-m-d', - // @call isSameUnit - 'hour' => 'Y-m-d H', - // @call isSameUnit - 'minute' => 'Y-m-d H:i', - // @call isSameUnit - 'second' => 'Y-m-d H:i:s', - // @call isSameUnit - 'micro' => 'Y-m-d H:i:s.u', - // @call isSameUnit - 'microsecond' => 'Y-m-d H:i:s.u', - ]; - - if (isset($units[$unit])) { - return $this->isSameAs($units[$unit], $date); - } - - if (isset($this->$unit)) { - return $this->resolveCarbon($date)->$unit === $this->$unit; - } - - if ($this->localStrictModeEnabled ?? static::isStrictModeEnabled()) { - throw new BadComparisonUnitException($unit); - } - - return false; - } - - /** - * Determines if the instance is in the current unit given. - * - * @example - * ``` - * Carbon::now()->isCurrentUnit('hour'); // true - * Carbon::now()->subHours(2)->isCurrentUnit('hour'); // false - * ``` - * - * @param string $unit The unit to test. - * - * @throws BadMethodCallException - * - * @return bool - */ - public function isCurrentUnit($unit) - { - return $this->{'isSame'.ucfirst($unit)}(); - } - - /** - * Checks if the passed in date is in the same quarter as the instance quarter (and year if needed). - * - * @example - * ``` - * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2019-03-01')); // true - * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2019-04-01')); // false - * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2018-03-01')); // false - * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2018-03-01'), false); // true - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|string|null $date The instance to compare with or null to use current day. - * @param bool $ofSameYear Check if it is the same month in the same year. - * - * @return bool - */ - public function isSameQuarter($date = null, $ofSameYear = true) - { - $date = $this->resolveCarbon($date); - - return $this->quarter === $date->quarter && (!$ofSameYear || $this->isSameYear($date)); - } - - /** - * Checks if the passed in date is in the same month as the instance´s month. - * - * @example - * ``` - * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2019-01-01')); // true - * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2019-02-01')); // false - * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2018-01-01')); // false - * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2018-01-01'), false); // true - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|null $date The instance to compare with or null to use the current date. - * @param bool $ofSameYear Check if it is the same month in the same year. - * - * @return bool - */ - public function isSameMonth($date = null, $ofSameYear = true) - { - return $this->isSameAs($ofSameYear ? 'Y-m' : 'm', $date); - } - - /** - * Checks if this day is a specific day of the week. - * - * @example - * ``` - * Carbon::parse('2019-07-17')->isDayOfWeek(Carbon::WEDNESDAY); // true - * Carbon::parse('2019-07-17')->isDayOfWeek(Carbon::FRIDAY); // false - * Carbon::parse('2019-07-17')->isDayOfWeek('Wednesday'); // true - * Carbon::parse('2019-07-17')->isDayOfWeek('Friday'); // false - * ``` - * - * @param int $dayOfWeek - * - * @return bool - */ - public function isDayOfWeek($dayOfWeek) - { - if (\is_string($dayOfWeek) && \defined($constant = static::class.'::'.strtoupper($dayOfWeek))) { - $dayOfWeek = \constant($constant); - } - - return $this->dayOfWeek === $dayOfWeek; - } - - /** - * Check if its the birthday. Compares the date/month values of the two dates. - * - * @example - * ``` - * Carbon::now()->subYears(5)->isBirthday(); // true - * Carbon::now()->subYears(5)->subDay()->isBirthday(); // false - * Carbon::parse('2019-06-05')->isBirthday(Carbon::parse('2001-06-05')); // true - * Carbon::parse('2019-06-05')->isBirthday(Carbon::parse('2001-06-06')); // false - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|null $date The instance to compare with or null to use current day. - * - * @return bool - */ - public function isBirthday($date = null) - { - return $this->isSameAs('md', $date); - } - - /** - * Check if today is the last day of the Month - * - * @example - * ``` - * Carbon::parse('2019-02-28')->isLastOfMonth(); // true - * Carbon::parse('2019-03-28')->isLastOfMonth(); // false - * Carbon::parse('2019-03-30')->isLastOfMonth(); // false - * Carbon::parse('2019-03-31')->isLastOfMonth(); // true - * Carbon::parse('2019-04-30')->isLastOfMonth(); // true - * ``` - * - * @return bool - */ - public function isLastOfMonth() - { - return $this->day === $this->daysInMonth; - } - - /** - * Check if the instance is start of day / midnight. - * - * @example - * ``` - * Carbon::parse('2019-02-28 00:00:00')->isStartOfDay(); // true - * Carbon::parse('2019-02-28 00:00:00.999999')->isStartOfDay(); // true - * Carbon::parse('2019-02-28 00:00:01')->isStartOfDay(); // false - * Carbon::parse('2019-02-28 00:00:00.000000')->isStartOfDay(true); // true - * Carbon::parse('2019-02-28 00:00:00.000012')->isStartOfDay(true); // false - * ``` - * - * @param bool $checkMicroseconds check time at microseconds precision - * - * @return bool - */ - public function isStartOfDay($checkMicroseconds = false) - { - /* @var CarbonInterface $this */ - return $checkMicroseconds - ? $this->rawFormat('H:i:s.u') === '00:00:00.000000' - : $this->rawFormat('H:i:s') === '00:00:00'; - } - - /** - * Check if the instance is end of day. - * - * @example - * ``` - * Carbon::parse('2019-02-28 23:59:59.999999')->isEndOfDay(); // true - * Carbon::parse('2019-02-28 23:59:59.123456')->isEndOfDay(); // true - * Carbon::parse('2019-02-28 23:59:59')->isEndOfDay(); // true - * Carbon::parse('2019-02-28 23:59:58.999999')->isEndOfDay(); // false - * Carbon::parse('2019-02-28 23:59:59.999999')->isEndOfDay(true); // true - * Carbon::parse('2019-02-28 23:59:59.123456')->isEndOfDay(true); // false - * Carbon::parse('2019-02-28 23:59:59')->isEndOfDay(true); // false - * ``` - * - * @param bool $checkMicroseconds check time at microseconds precision - * - * @return bool - */ - public function isEndOfDay($checkMicroseconds = false) - { - /* @var CarbonInterface $this */ - return $checkMicroseconds - ? $this->rawFormat('H:i:s.u') === '23:59:59.999999' - : $this->rawFormat('H:i:s') === '23:59:59'; - } - - /** - * Check if the instance is start of day / midnight. - * - * @example - * ``` - * Carbon::parse('2019-02-28 00:00:00')->isMidnight(); // true - * Carbon::parse('2019-02-28 00:00:00.999999')->isMidnight(); // true - * Carbon::parse('2019-02-28 00:00:01')->isMidnight(); // false - * ``` - * - * @return bool - */ - public function isMidnight() - { - return $this->isStartOfDay(); - } - - /** - * Check if the instance is midday. - * - * @example - * ``` - * Carbon::parse('2019-02-28 11:59:59.999999')->isMidday(); // false - * Carbon::parse('2019-02-28 12:00:00')->isMidday(); // true - * Carbon::parse('2019-02-28 12:00:00.999999')->isMidday(); // true - * Carbon::parse('2019-02-28 12:00:01')->isMidday(); // false - * ``` - * - * @return bool - */ - public function isMidday() - { - /* @var CarbonInterface $this */ - return $this->rawFormat('G:i:s') === static::$midDayAt.':00:00'; - } - - /** - * Checks if the (date)time string is in a given format. - * - * @example - * ``` - * Carbon::hasFormat('11:12:45', 'h:i:s'); // true - * Carbon::hasFormat('13:12:45', 'h:i:s'); // false - * ``` - * - * @param string $date - * @param string $format - * - * @return bool - */ - public static function hasFormat($date, $format) - { - // createFromFormat() is known to handle edge cases silently. - // E.g. "1975-5-1" (Y-n-j) will still be parsed correctly when "Y-m-d" is supplied as the format. - // To ensure we're really testing against our desired format, perform an additional regex validation. - - return self::matchFormatPattern((string) $date, preg_quote((string) $format, '/'), static::$regexFormats); - } - - /** - * Checks if the (date)time string is in a given format. - * - * @example - * ``` - * Carbon::hasFormatWithModifiers('31/08/2015', 'd#m#Y'); // true - * Carbon::hasFormatWithModifiers('31/08/2015', 'm#d#Y'); // false - * ``` - * - * @param string $date - * @param string $format - * - * @return bool - */ - public static function hasFormatWithModifiers($date, $format): bool - { - return self::matchFormatPattern((string) $date, (string) $format, array_merge(static::$regexFormats, static::$regexFormatModifiers)); - } - - /** - * Checks if the (date)time string is in a given format and valid to create a - * new instance. - * - * @example - * ``` - * Carbon::canBeCreatedFromFormat('11:12:45', 'h:i:s'); // true - * Carbon::canBeCreatedFromFormat('13:12:45', 'h:i:s'); // false - * ``` - * - * @param string $date - * @param string $format - * - * @return bool - */ - public static function canBeCreatedFromFormat($date, $format) - { - try { - // Try to create a DateTime object. Throws an InvalidArgumentException if the provided time string - // doesn't match the format in any way. - if (!static::rawCreateFromFormat($format, $date)) { - return false; - } - } catch (InvalidArgumentException $e) { - return false; - } - - return static::hasFormatWithModifiers($date, $format); - } - - /** - * Returns true if the current date matches the given string. - * - * @example - * ``` - * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2019')); // true - * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2018')); // false - * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2019-06')); // true - * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('06-02')); // true - * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2019-06-02')); // true - * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('Sunday')); // true - * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('June')); // true - * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12:23')); // true - * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12:23:45')); // true - * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12:23:00')); // false - * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12h')); // true - * var_dump(Carbon::parse('2019-06-02 15:23:45')->is('3pm')); // true - * var_dump(Carbon::parse('2019-06-02 15:23:45')->is('3am')); // false - * ``` - * - * @param string $tester day name, month name, hour, date, etc. as string - * - * @return bool - */ - public function is(string $tester) - { - $tester = trim($tester); - - if (preg_match('/^\d+$/', $tester)) { - return $this->year === (int) $tester; - } - - if (preg_match('/^(?:Jan|January|Feb|February|Mar|March|Apr|April|May|Jun|June|Jul|July|Aug|August|Sep|September|Oct|October|Nov|November|Dec|December)$/i', $tester)) { - return $this->isSameMonth(static::parse($tester), false); - } - - if (preg_match('/^\d{3,}-\d{1,2}$/', $tester)) { - return $this->isSameMonth(static::parse($tester)); - } - - if (preg_match('/^\d{1,2}-\d{1,2}$/', $tester)) { - return $this->isSameDay(static::parse($this->year.'-'.$tester)); - } - - $modifier = preg_replace('/(\d)h$/i', '$1:00', $tester); - - /* @var CarbonInterface $max */ - $median = static::parse('5555-06-15 12:30:30.555555')->modify($modifier); - $current = $this->avoidMutation(); - /* @var CarbonInterface $other */ - $other = $this->avoidMutation()->modify($modifier); - - if ($current->eq($other)) { - return true; - } - - if (preg_match('/\d:\d{1,2}:\d{1,2}$/', $tester)) { - return $current->startOfSecond()->eq($other); - } - - if (preg_match('/\d:\d{1,2}$/', $tester)) { - return $current->startOfMinute()->eq($other); - } - - if (preg_match('/\d(?:h|am|pm)$/', $tester)) { - return $current->startOfHour()->eq($other); - } - - if (preg_match( - '/^(?:january|february|march|april|may|june|july|august|september|october|november|december)(?:\s+\d+)?$/i', - $tester - )) { - return $current->startOfMonth()->eq($other->startOfMonth()); - } - - $units = [ - 'month' => [1, 'year'], - 'day' => [1, 'month'], - 'hour' => [0, 'day'], - 'minute' => [0, 'hour'], - 'second' => [0, 'minute'], - 'microsecond' => [0, 'second'], - ]; - - foreach ($units as $unit => [$minimum, $startUnit]) { - if ($minimum === $median->$unit) { - $current = $current->startOf($startUnit); - - break; - } - } - - return $current->eq($other); - } - - /** - * Checks if the (date)time string is in a given format with - * given list of pattern replacements. - * - * @example - * ``` - * Carbon::hasFormat('11:12:45', 'h:i:s'); // true - * Carbon::hasFormat('13:12:45', 'h:i:s'); // false - * ``` - * - * @param string $date - * @param string $format - * @param array $replacements - * - * @return bool - */ - private static function matchFormatPattern(string $date, string $format, array $replacements): bool - { - // Preg quote, but remove escaped backslashes since we'll deal with escaped characters in the format string. - $regex = str_replace('\\\\', '\\', $format); - // Replace not-escaped letters - $regex = preg_replace_callback( - '/(?startOfTime ?? false; - } - - /** - * Returns true if the date was created using CarbonImmutable::endOfTime() - * - * @return bool - */ - public function isEndOfTime(): bool - { - return $this->endOfTime ?? false; - } - - private function discourageNull($value): void - { - if ($value === null) { - @trigger_error("Since 2.61.0, it's deprecated to compare a date to null, meaning of such comparison is ambiguous and will no longer be possible in 3.0.0, you should explicitly pass 'now' or make an other check to eliminate null values.", \E_USER_DEPRECATED); - } - } - - private function discourageBoolean($value): void - { - if (\is_bool($value)) { - @trigger_error("Since 2.61.0, it's deprecated to compare a date to true or false, meaning of such comparison is ambiguous and will no longer be possible in 3.0.0, you should explicitly pass 'now' or make an other check to eliminate boolean values.", \E_USER_DEPRECATED); - } - } -} diff --git a/docker/streamline-src/vendor/nesbot/carbon/src/Carbon/Traits/Options.php b/docker/streamline-src/vendor/nesbot/carbon/src/Carbon/Traits/Options.php deleted file mode 100644 index ffad4f14..00000000 --- a/docker/streamline-src/vendor/nesbot/carbon/src/Carbon/Traits/Options.php +++ /dev/null @@ -1,471 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Traits; - -use Carbon\CarbonInterface; -use DateTimeInterface; -use Throwable; - -/** - * Trait Options. - * - * Embed base methods to change settings of Carbon classes. - * - * Depends on the following methods: - * - * @method static shiftTimezone($timezone) Set the timezone - */ -trait Options -{ - use Localization; - - /** - * Customizable PHP_INT_SIZE override. - * - * @var int - */ - public static $PHPIntSize = PHP_INT_SIZE; - - /** - * First day of week. - * - * @var int|string - */ - protected static $weekStartsAt = CarbonInterface::MONDAY; - - /** - * Last day of week. - * - * @var int|string - */ - protected static $weekEndsAt = CarbonInterface::SUNDAY; - - /** - * Days of weekend. - * - * @var array - */ - protected static $weekendDays = [ - CarbonInterface::SATURDAY, - CarbonInterface::SUNDAY, - ]; - - /** - * Format regex patterns. - * - * @var array - */ - protected static $regexFormats = [ - 'd' => '(3[01]|[12][0-9]|0[1-9])', - 'D' => '(Sun|Mon|Tue|Wed|Thu|Fri|Sat)', - 'j' => '([123][0-9]|[1-9])', - 'l' => '([a-zA-Z]{2,})', - 'N' => '([1-7])', - 'S' => '(st|nd|rd|th)', - 'w' => '([0-6])', - 'z' => '(36[0-5]|3[0-5][0-9]|[12][0-9]{2}|[1-9]?[0-9])', - 'W' => '(5[012]|[1-4][0-9]|0?[1-9])', - 'F' => '([a-zA-Z]{2,})', - 'm' => '(1[012]|0[1-9])', - 'M' => '([a-zA-Z]{3})', - 'n' => '(1[012]|[1-9])', - 't' => '(2[89]|3[01])', - 'L' => '(0|1)', - 'o' => '([1-9][0-9]{0,4})', - 'Y' => '([1-9]?[0-9]{4})', - 'y' => '([0-9]{2})', - 'a' => '(am|pm)', - 'A' => '(AM|PM)', - 'B' => '([0-9]{3})', - 'g' => '(1[012]|[1-9])', - 'G' => '(2[0-3]|1?[0-9])', - 'h' => '(1[012]|0[1-9])', - 'H' => '(2[0-3]|[01][0-9])', - 'i' => '([0-5][0-9])', - 's' => '([0-5][0-9])', - 'u' => '([0-9]{1,6})', - 'v' => '([0-9]{1,3})', - 'e' => '([a-zA-Z]{1,5})|([a-zA-Z]*\\/[a-zA-Z]*)', - 'I' => '(0|1)', - 'O' => '([+-](1[0123]|0[0-9])[0134][05])', - 'P' => '([+-](1[0123]|0[0-9]):[0134][05])', - 'p' => '(Z|[+-](1[0123]|0[0-9]):[0134][05])', - 'T' => '([a-zA-Z]{1,5})', - 'Z' => '(-?[1-5]?[0-9]{1,4})', - 'U' => '([0-9]*)', - - // The formats below are combinations of the above formats. - 'c' => '(([1-9]?[0-9]{4})-(1[012]|0[1-9])-(3[01]|[12][0-9]|0[1-9])T(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[+-](1[012]|0[0-9]):([0134][05]))', // Y-m-dTH:i:sP - 'r' => '(([a-zA-Z]{3}), ([123][0-9]|0[1-9]) ([a-zA-Z]{3}) ([1-9]?[0-9]{4}) (2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9]) [+-](1[012]|0[0-9])([0134][05]))', // D, d M Y H:i:s O - ]; - - /** - * Format modifiers (such as available in createFromFormat) regex patterns. - * - * @var array - */ - protected static $regexFormatModifiers = [ - '*' => '.+', - ' ' => '[ ]', - '#' => '[;:\\/.,()-]', - '?' => '([^a]|[a])', - '!' => '', - '|' => '', - '+' => '', - ]; - - /** - * Indicates if months should be calculated with overflow. - * Global setting. - * - * @var bool - */ - protected static $monthsOverflow = true; - - /** - * Indicates if years should be calculated with overflow. - * Global setting. - * - * @var bool - */ - protected static $yearsOverflow = true; - - /** - * Indicates if the strict mode is in use. - * Global setting. - * - * @var bool - */ - protected static $strictModeEnabled = true; - - /** - * Function to call instead of format. - * - * @var string|callable|null - */ - protected static $formatFunction; - - /** - * Function to call instead of createFromFormat. - * - * @var string|callable|null - */ - protected static $createFromFormatFunction; - - /** - * Function to call instead of parse. - * - * @var string|callable|null - */ - protected static $parseFunction; - - /** - * Indicates if months should be calculated with overflow. - * Specific setting. - * - * @var bool|null - */ - protected $localMonthsOverflow; - - /** - * Indicates if years should be calculated with overflow. - * Specific setting. - * - * @var bool|null - */ - protected $localYearsOverflow; - - /** - * Indicates if the strict mode is in use. - * Specific setting. - * - * @var bool|null - */ - protected $localStrictModeEnabled; - - /** - * Options for diffForHumans and forHumans methods. - * - * @var bool|null - */ - protected $localHumanDiffOptions; - - /** - * Format to use on string cast. - * - * @var string|null - */ - protected $localToStringFormat; - - /** - * Format to use on JSON serialization. - * - * @var string|null - */ - protected $localSerializer; - - /** - * Instance-specific macros. - * - * @var array|null - */ - protected $localMacros; - - /** - * Instance-specific generic macros. - * - * @var array|null - */ - protected $localGenericMacros; - - /** - * Function to call instead of format. - * - * @var string|callable|null - */ - protected $localFormatFunction; - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * @see settings - * - * Enable the strict mode (or disable with passing false). - * - * @param bool $strictModeEnabled - */ - public static function useStrictMode($strictModeEnabled = true) - { - static::$strictModeEnabled = $strictModeEnabled; - } - - /** - * Returns true if the strict mode is globally in use, false else. - * (It can be overridden in specific instances.) - * - * @return bool - */ - public static function isStrictModeEnabled() - { - return static::$strictModeEnabled; - } - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * Or you can use method variants: addMonthsWithOverflow/addMonthsNoOverflow, same variants - * are available for quarters, years, decade, centuries, millennia (singular and plural forms). - * @see settings - * - * Indicates if months should be calculated with overflow. - * - * @param bool $monthsOverflow - * - * @return void - */ - public static function useMonthsOverflow($monthsOverflow = true) - { - static::$monthsOverflow = $monthsOverflow; - } - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * Or you can use method variants: addMonthsWithOverflow/addMonthsNoOverflow, same variants - * are available for quarters, years, decade, centuries, millennia (singular and plural forms). - * @see settings - * - * Reset the month overflow behavior. - * - * @return void - */ - public static function resetMonthsOverflow() - { - static::$monthsOverflow = true; - } - - /** - * Get the month overflow global behavior (can be overridden in specific instances). - * - * @return bool - */ - public static function shouldOverflowMonths() - { - return static::$monthsOverflow; - } - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * Or you can use method variants: addYearsWithOverflow/addYearsNoOverflow, same variants - * are available for quarters, years, decade, centuries, millennia (singular and plural forms). - * @see settings - * - * Indicates if years should be calculated with overflow. - * - * @param bool $yearsOverflow - * - * @return void - */ - public static function useYearsOverflow($yearsOverflow = true) - { - static::$yearsOverflow = $yearsOverflow; - } - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * Or you can use method variants: addYearsWithOverflow/addYearsNoOverflow, same variants - * are available for quarters, years, decade, centuries, millennia (singular and plural forms). - * @see settings - * - * Reset the month overflow behavior. - * - * @return void - */ - public static function resetYearsOverflow() - { - static::$yearsOverflow = true; - } - - /** - * Get the month overflow global behavior (can be overridden in specific instances). - * - * @return bool - */ - public static function shouldOverflowYears() - { - return static::$yearsOverflow; - } - - /** - * Set specific options. - * - strictMode: true|false|null - * - monthOverflow: true|false|null - * - yearOverflow: true|false|null - * - humanDiffOptions: int|null - * - toStringFormat: string|Closure|null - * - toJsonFormat: string|Closure|null - * - locale: string|null - * - timezone: \DateTimeZone|string|int|null - * - macros: array|null - * - genericMacros: array|null - * - * @param array $settings - * - * @return $this|static - */ - public function settings(array $settings) - { - $this->localStrictModeEnabled = $settings['strictMode'] ?? null; - $this->localMonthsOverflow = $settings['monthOverflow'] ?? null; - $this->localYearsOverflow = $settings['yearOverflow'] ?? null; - $this->localHumanDiffOptions = $settings['humanDiffOptions'] ?? null; - $this->localToStringFormat = $settings['toStringFormat'] ?? null; - $this->localSerializer = $settings['toJsonFormat'] ?? null; - $this->localMacros = $settings['macros'] ?? null; - $this->localGenericMacros = $settings['genericMacros'] ?? null; - $this->localFormatFunction = $settings['formatFunction'] ?? null; - - if (isset($settings['locale'])) { - $locales = $settings['locale']; - - if (!\is_array($locales)) { - $locales = [$locales]; - } - - $this->locale(...$locales); - } - - if (isset($settings['innerTimezone'])) { - return $this->setTimezone($settings['innerTimezone']); - } - - if (isset($settings['timezone'])) { - return $this->shiftTimezone($settings['timezone']); - } - - return $this; - } - - /** - * Returns current local settings. - * - * @return array - */ - public function getSettings() - { - $settings = []; - $map = [ - 'localStrictModeEnabled' => 'strictMode', - 'localMonthsOverflow' => 'monthOverflow', - 'localYearsOverflow' => 'yearOverflow', - 'localHumanDiffOptions' => 'humanDiffOptions', - 'localToStringFormat' => 'toStringFormat', - 'localSerializer' => 'toJsonFormat', - 'localMacros' => 'macros', - 'localGenericMacros' => 'genericMacros', - 'locale' => 'locale', - 'tzName' => 'timezone', - 'localFormatFunction' => 'formatFunction', - ]; - - foreach ($map as $property => $key) { - $value = $this->$property ?? null; - - if ($value !== null && ($key !== 'locale' || $value !== 'en' || $this->localTranslator)) { - $settings[$key] = $value; - } - } - - return $settings; - } - - /** - * Show truthy properties on var_dump(). - * - * @return array - */ - public function __debugInfo() - { - $infos = array_filter(get_object_vars($this), static function ($var) { - return $var; - }); - - foreach (['dumpProperties', 'constructedObjectId', 'constructed'] as $property) { - if (isset($infos[$property])) { - unset($infos[$property]); - } - } - - $this->addExtraDebugInfos($infos); - - return $infos; - } - - protected function addExtraDebugInfos(&$infos): void - { - if ($this instanceof DateTimeInterface) { - try { - if (!isset($infos['date'])) { - $infos['date'] = $this->format(CarbonInterface::MOCK_DATETIME_FORMAT); - } - - if (!isset($infos['timezone'])) { - $infos['timezone'] = $this->tzName; - } - } catch (Throwable $exception) { - // noop - } - } - } -} diff --git a/docker/streamline-src/vendor/nette/schema/composer.json b/docker/streamline-src/vendor/nette/schema/composer.json deleted file mode 100644 index 56b84527..00000000 --- a/docker/streamline-src/vendor/nette/schema/composer.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "nette/schema", - "description": "📐 Nette Schema: validating data structures against a given Schema.", - "keywords": ["nette", "config"], - "homepage": "https://nette.org", - "license": ["BSD-3-Clause", "GPL-2.0-only", "GPL-3.0-only"], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "require": { - "php": "8.1 - 8.4", - "nette/utils": "^4.0" - }, - "require-dev": { - "nette/tester": "^2.5.2", - "tracy/tracy": "^2.8", - "phpstan/phpstan-nette": "^1.0" - }, - "autoload": { - "classmap": ["src/"] - }, - "minimum-stability": "dev", - "scripts": { - "phpstan": "phpstan analyse", - "tester": "tester tests -s" - }, - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - } -} diff --git a/docker/streamline-src/vendor/nette/schema/readme.md b/docker/streamline-src/vendor/nette/schema/readme.md deleted file mode 100644 index 5ee1382b..00000000 --- a/docker/streamline-src/vendor/nette/schema/readme.md +++ /dev/null @@ -1,537 +0,0 @@ -Nette Schema -************ - -[![Downloads this Month](https://img.shields.io/packagist/dm/nette/schema.svg)](https://packagist.org/packages/nette/schema) -[![Tests](https://github.com/nette/schema/workflows/Tests/badge.svg?branch=master)](https://github.com/nette/schema/actions) -[![Coverage Status](https://coveralls.io/repos/github/nette/schema/badge.svg?branch=master)](https://coveralls.io/github/nette/schema?branch=master) -[![Latest Stable Version](https://poser.pugx.org/nette/schema/v/stable)](https://github.com/nette/schema/releases) -[![License](https://img.shields.io/badge/license-New%20BSD-blue.svg)](https://github.com/nette/schema/blob/master/license.md) - - -Introduction -============ - -A practical library for validation and normalization of data structures against a given schema with a smart & easy-to-understand API. - -Documentation can be found on the [website](https://doc.nette.org/schema). - -Installation: - -```shell -composer require nette/schema -``` - -It requires PHP version 8.1 and supports PHP up to 8.4. - - -[Support Me](https://github.com/sponsors/dg) --------------------------------------------- - -Do you like Nette Schema? Are you looking forward to the new features? - -[![Buy me a coffee](https://files.nette.org/icons/donation-3.svg)](https://github.com/sponsors/dg) - -Thank you! - - -Basic Usage ------------ - -In variable `$schema` we have a validation schema (what exactly this means and how to create it we will say later) and in variable `$data` we have a data structure that we want to validate and normalize. This can be, for example, data sent by the user through an API, configuration file, etc. - -The task is handled by the [Nette\Schema\Processor](https://api.nette.org/schema/master/Nette/Schema/Processor.html) class, which processes the input and either returns normalized data or throws an [Nette\Schema\ValidationException](https://api.nette.org/schema/master/Nette/Schema/ValidationException.html) exception on error. - -```php -$processor = new Nette\Schema\Processor; - -try { - $normalized = $processor->process($schema, $data); -} catch (Nette\Schema\ValidationException $e) { - echo 'Data is invalid: ' . $e->getMessage(); -} -``` - -Method `$e->getMessages()` returns array of all message strings and `$e->getMessageObjects()` return all messages as [Nette\Schema\Message](https://api.nette.org/schema/master/Nette/Schema/Message.html) objects. - - -Defining Schema ---------------- - -And now let's create a schema. The class [Nette\Schema\Expect](https://api.nette.org/schema/master/Nette/Schema/Expect.html) is used to define it, we actually define expectations of what the data should look like. Let's say that the input data must be a structure (e.g. an array) containing elements `processRefund` of type bool and `refundAmount` of type int. - -```php -use Nette\Schema\Expect; - -$schema = Expect::structure([ - 'processRefund' => Expect::bool(), - 'refundAmount' => Expect::int(), -]); -``` - -We believe that the schema definition looks clear, even if you see it for the very first time. - -Lets send the following data for validation: - -```php -$data = [ - 'processRefund' => true, - 'refundAmount' => 17, -]; - -$normalized = $processor->process($schema, $data); // OK, it passes -``` - -The output, i.e. the value `$normalized`, is the object `stdClass`. If we want the output to be an array, we add a cast to schema `Expect::structure([...])->castTo('array')`. - -All elements of the structure are optional and have a default value `null`. Example: - -```php -$data = [ - 'refundAmount' => 17, -]; - -$normalized = $processor->process($schema, $data); // OK, it passes -// $normalized = {'processRefund' => null, 'refundAmount' => 17} -``` - -The fact that the default value is `null` does not mean that it would be accepted in the input data `'processRefund' => null`. No, the input must be boolean, i.e. only `true` or `false`. We would have to explicitly allow `null` via `Expect::bool()->nullable()`. - -An item can be made mandatory using `Expect::bool()->required()`. We change the default value to `false` using `Expect::bool()->default(false)` or shortly using `Expect::bool(false)`. - -And what if we wanted to accept `1` and `0` besides booleans? Then we list the allowed values, which we will also normalize to boolean: - -```php -$schema = Expect::structure([ - 'processRefund' => Expect::anyOf(true, false, 1, 0)->castTo('bool'), - 'refundAmount' => Expect::int(), -]); - -$normalized = $processor->process($schema, $data); -is_bool($normalized->processRefund); // true -``` - -Now you know the basics of how the schema is defined and how the individual elements of the structure behave. We will now show what all the other elements can be used in defining a schema. - - -Data Types: type() ------------------- - -All standard PHP data types can be listed in the schema: - -```php -Expect::string($default = null) -Expect::int($default = null) -Expect::float($default = null) -Expect::bool($default = null) -Expect::null() -Expect::array($default = []) -``` - -And then all types [supported by the Validators](https://doc.nette.org/validators#toc-validation-rules) via `Expect::type('scalar')` or abbreviated `Expect::scalar()`. Also class or interface names are accepted, e.g. `Expect::type('AddressEntity')`. - -You can also use union notation: - -```php -Expect::type('bool|string|array') -``` - -The default value is always `null` except for `array` and `list`, where it is an empty array. (A list is an array indexed in ascending order of numeric keys from zero, that is, a non-associative array). - - -Array of Values: arrayOf() listOf() ------------------------------------ - -The array is too general structure, it is more useful to specify exactly what elements it can contain. For example, an array whose elements can only be strings: - -```php -$schema = Expect::arrayOf('string'); - -$processor->process($schema, ['hello', 'world']); // OK -$processor->process($schema, ['a' => 'hello', 'b' => 'world']); // OK -$processor->process($schema, ['key' => 123]); // ERROR: 123 is not a string -``` - -The second parameter can be used to specify keys (since version 1.2): - -```php -$schema = Expect::arrayOf('string', 'int'); - -$processor->process($schema, ['hello', 'world']); // OK -$processor->process($schema, ['a' => 'hello']); // ERROR: 'a' is not int -``` - -The list is an indexed array: - -```php -$schema = Expect::listOf('string'); - -$processor->process($schema, ['a', 'b']); // OK -$processor->process($schema, ['a', 123]); // ERROR: 123 is not a string -$processor->process($schema, ['key' => 'a']); // ERROR: is not a list -$processor->process($schema, [1 => 'a', 0 => 'b']); // ERROR: is not a list -``` - -The parameter can also be a schema, so we can write: - -```php -Expect::arrayOf(Expect::bool()) -``` - -The default value is an empty array. If you specify a default value, it will be merged with the passed data. This can be disabled using `mergeDefaults(false)`. - - -Enumeration: anyOf() --------------------- - -`anyOf()` is a set of values ​​or schemas that a value can be. Here's how to write an array of elements that can be either `'a'`, `true`, or `null`: - -```php -$schema = Expect::listOf( - Expect::anyOf('a', true, null), -); - -$processor->process($schema, ['a', true, null, 'a']); // OK -$processor->process($schema, ['a', false]); // ERROR: false does not belong there -``` - -The enumeration elements can also be schemas: - -```php -$schema = Expect::listOf( - Expect::anyOf(Expect::string(), true, null), -); - -$processor->process($schema, ['foo', true, null, 'bar']); // OK -$processor->process($schema, [123]); // ERROR -``` - -The `anyOf()` method accepts variants as individual parameters, not as array. To pass it an array of values, use the unpacking operator `anyOf(...$variants)`. - -The default value is `null`. Use the `firstIsDefault()` method to make the first element the default: - -```php -// default is 'hello' -Expect::anyOf(Expect::string('hello'), true, null)->firstIsDefault(); -``` - - -Structures ----------- - -Structures are objects with defined keys. Each of these key => value pairs is referred to as a "property": - -Structures accept arrays and objects and return objects `stdClass` (unless you change it with `castTo('array')`, etc.). - -By default, all properties are optional and have a default value of `null`. You can define mandatory properties using `required()`: - -```php -$schema = Expect::structure([ - 'required' => Expect::string()->required(), - 'optional' => Expect::string(), // the default value is null -]); - -$processor->process($schema, ['optional' => '']); -// ERROR: option 'required' is missing - -$processor->process($schema, ['required' => 'foo']); -// OK, returns {'required' => 'foo', 'optional' => null} -``` - -If you do not want to output properties with only a default value, use `skipDefaults()`: - -```php -$schema = Expect::structure([ - 'required' => Expect::string()->required(), - 'optional' => Expect::string(), -])->skipDefaults(); - -$processor->process($schema, ['required' => 'foo']); -// OK, returns {'required' => 'foo'} -``` - -Although `null` is the default value of the `optional` property, it is not allowed in the input data (the value must be a string). Properties accepting `null` are defined using `nullable()`: - -```php -$schema = Expect::structure([ - 'optional' => Expect::string(), - 'nullable' => Expect::string()->nullable(), -]); - -$processor->process($schema, ['optional' => null]); -// ERROR: 'optional' expects to be string, null given. - -$processor->process($schema, ['nullable' => null]); -// OK, returns {'optional' => null, 'nullable' => null} -``` - -By default, there can be no extra items in the input data: - -```php -$schema = Expect::structure([ - 'key' => Expect::string(), -]); - -$processor->process($schema, ['additional' => 1]); -// ERROR: Unexpected item 'additional' -``` - -Which we can change with `otherItems()`. As a parameter, we will specify the schema for each extra element: - -```php -$schema = Expect::structure([ - 'key' => Expect::string(), -])->otherItems(Expect::int()); - -$processor->process($schema, ['additional' => 1]); // OK -$processor->process($schema, ['additional' => true]); // ERROR -``` - - -Deprecations ------------- - -You can deprecate property using the `deprecated([string $message])` method. Deprecation notices are returned by `$processor->getWarnings()`: - -```php -$schema = Expect::structure([ - 'old' => Expect::int()->deprecated('The item %path% is deprecated'), -]); - -$processor->process($schema, ['old' => 1]); // OK -$processor->getWarnings(); // ["The item 'old' is deprecated"] -``` - - -Ranges: min() max() -------------------- - -Use `min()` and `max()` to limit the number of elements for arrays: - -```php -// array, at least 10 items, maximum 20 items -Expect::array()->min(10)->max(20); -``` - -For strings, limit their length: - -```php -// string, at least 10 characters long, maximum 20 characters -Expect::string()->min(10)->max(20); -``` - -For numbers, limit their value: - -```php -// integer, between 10 and 20 inclusive -Expect::int()->min(10)->max(20); -``` - -Of course, it is possible to mention only `min()`, or only `max()`: - -```php -// string, maximum 20 characters -Expect::string()->max(20); -``` - - -Regular Expressions: pattern() ------------------------------- - -Using `pattern()`, you can specify a regular expression which the **whole** input string must match (i.e. as if it were wrapped in characters `^` a `$`): - -```php -// just 9 digits -Expect::string()->pattern('\d{9}'); -``` - - -Custom Assertions: assert() ---------------------------- - -You can add any other restrictions using `assert(callable $fn)`. - -```php -$countIsEven = fn($v) => count($v) % 2 === 0; - -$schema = Expect::arrayOf('string') - ->assert($countIsEven); // the count must be even - -$processor->process($schema, ['a', 'b']); // OK -$processor->process($schema, ['a', 'b', 'c']); // ERROR: 3 is not even -``` - -Or - -```php -Expect::string()->assert('is_file'); // the file must exist -``` - -You can add your own description for each assertion. It will be part of the error message. - -```php -$schema = Expect::arrayOf('string') - ->assert($countIsEven, 'Even items in array'); - -$processor->process($schema, ['a', 'b', 'c']); -// Failed assertion "Even items in array" for item with value array. -``` - -The method can be called repeatedly to add multiple constraints. It can be intermixed with calls to `transform()` and `castTo()`. - - -Transformation: transform() ---------------------------- - -Successfully validated data can be modified using a custom function: - -```php -// conversion to uppercase: -Expect::string()->transform(fn(string $s) => strtoupper($s)); -``` - -The method can be called repeatedly to add multiple transformations. It can be intermixed with calls to `assert()` and `castTo()`. The operations will be executed in the order in which they are declared: - -```php -Expect::type('string|int') - ->castTo('string') - ->assert('ctype_lower', 'All characters must be lowercased') - ->transform(fn(string $s) => strtoupper($s)); // conversion to uppercase -``` - -The `transform()` method can both transform and validate the value simultaneously. This is often simpler and less redundant than chaining `transform()` and `assert()`. For this purpose, the function receives a [Nette\Schema\Context](https://api.nette.org/schema/master/Nette/Schema/Context.html) object with an `addError()` method, which can be used to add information about validation issues: - -```php -Expect::string() - ->transform(function (string $s, Nette\Schema\Context $context) { - if (!ctype_lower($s)) { - $context->addError('All characters must be lowercased', 'my.case.error'); - return null; - } - - return strtoupper($s); - }); -``` - - -Casting: castTo() ------------------ - -Successfully validated data can be cast: - -```php -Expect::scalar()->castTo('string'); -``` - -In addition to native PHP types, you can also cast to classes. It distinguishes whether it is a simple class without a constructor or a class with a constructor. If the class has no constructor, an instance of it is created and all elements of the structure are written to its properties: - -```php -class Info -{ - public bool $processRefund; - public int $refundAmount; -} - -Expect::structure([ - 'processRefund' => Expect::bool(), - 'refundAmount' => Expect::int(), -])->castTo(Info::class); - -// creates '$obj = new Info' and writes to $obj->processRefund and $obj->refundAmount -``` - -If the class has a constructor, the elements of the structure are passed as named parameters to the constructor: - -```php -class Info -{ - public function __construct( - public bool $processRefund, - public int $refundAmount, - ) { - } -} - -// creates $obj = new Info(processRefund: ..., refundAmount: ...) -``` - -Casting combined with a scalar parameter creates an object and passes the value as the sole parameter to the constructor: - -```php -Expect::string()->castTo(DateTime::class); -// creates new DateTime(...) -``` - - -Normalization: before() ------------------------ - -Prior to the validation itself, the data can be normalized using the method `before()`. As an example, let's have an element that must be an array of strings (eg `['a', 'b', 'c']`), but receives input in the form of a string `a b c`: - -```php -$explode = fn($v) => explode(' ', $v); - -$schema = Expect::arrayOf('string') - ->before($explode); - -$normalized = $processor->process($schema, 'a b c'); -// OK, returns ['a', 'b', 'c'] -``` - - -Mapping to Objects: from() --------------------------- - -You can generate structure schema from the class. Example: - -```php -class Config -{ - /** @var string */ - public $name; - /** @var string|null */ - public $password; - /** @var bool */ - public $admin = false; -} - -$schema = Expect::from(new Config); - -$data = [ - 'name' => 'jeff', -]; - -$normalized = $processor->process($schema, $data); -// $normalized instanceof Config -// $normalized = {'name' => 'jeff', 'password' => null, 'admin' => false} -``` - -If you are using PHP 7.4 or higher, you can use native types: - -```php -class Config -{ - public string $name; - public ?string $password; - public bool $admin = false; -} - -$schema = Expect::from(new Config); -``` - -Anonymous classes are also supported: - -```php -$schema = Expect::from(new class { - public string $name; - public ?string $password; - public bool $admin = false; -}); -``` - -Because the information obtained from the class definition may not be sufficient, you can add a custom schema for the elements with the second parameter: - -```php -$schema = Expect::from(new Config, [ - 'name' => Expect::string()->pattern('\w:.*'), -]); -``` diff --git a/docker/streamline-src/vendor/nette/schema/src/Schema/Elements/Structure.php b/docker/streamline-src/vendor/nette/schema/src/Schema/Elements/Structure.php deleted file mode 100644 index 66e501a4..00000000 --- a/docker/streamline-src/vendor/nette/schema/src/Schema/Elements/Structure.php +++ /dev/null @@ -1,210 +0,0 @@ -items = $shape; - $this->castTo('object'); - $this->required = true; - } - - - public function default(mixed $value): self - { - throw new Nette\InvalidStateException('Structure cannot have default value.'); - } - - - public function min(?int $min): self - { - $this->range[0] = $min; - return $this; - } - - - public function max(?int $max): self - { - $this->range[1] = $max; - return $this; - } - - - public function otherItems(string|Schema $type = 'mixed'): self - { - $this->otherItems = $type instanceof Schema ? $type : new Type($type); - return $this; - } - - - public function skipDefaults(bool $state = true): self - { - $this->skipDefaults = $state; - return $this; - } - - - public function extend(array|self $shape): self - { - $shape = $shape instanceof self ? $shape->items : $shape; - return new self(array_merge($this->items, $shape)); - } - - - public function getShape(): array - { - return $this->items; - } - - - /********************* processing ****************d*g**/ - - - public function normalize(mixed $value, Context $context): mixed - { - if ($prevent = (is_array($value) && isset($value[Helpers::PreventMerging]))) { - unset($value[Helpers::PreventMerging]); - } - - $value = $this->doNormalize($value, $context); - if (is_object($value)) { - $value = (array) $value; - } - - if (is_array($value)) { - foreach ($value as $key => $val) { - $itemSchema = $this->items[$key] ?? $this->otherItems; - if ($itemSchema) { - $context->path[] = $key; - $value[$key] = $itemSchema->normalize($val, $context); - array_pop($context->path); - } - } - - if ($prevent) { - $value[Helpers::PreventMerging] = true; - } - } - - return $value; - } - - - public function merge(mixed $value, mixed $base): mixed - { - if (is_array($value) && isset($value[Helpers::PreventMerging])) { - unset($value[Helpers::PreventMerging]); - $base = null; - } - - if (is_array($value) && is_array($base)) { - $index = $this->otherItems === null ? null : 0; - foreach ($value as $key => $val) { - if ($key === $index) { - $base[] = $val; - $index++; - } else { - $base[$key] = array_key_exists($key, $base) && ($itemSchema = $this->items[$key] ?? $this->otherItems) - ? $itemSchema->merge($val, $base[$key]) - : $val; - } - } - - return $base; - } - - return $value ?? $base; - } - - - public function complete(mixed $value, Context $context): mixed - { - if ($value === null) { - $value = []; // is unable to distinguish null from array in NEON - } - - $this->doDeprecation($context); - - $isOk = $context->createChecker(); - Helpers::validateType($value, 'array', $context); - $isOk() && Helpers::validateRange($value, $this->range, $context); - $isOk() && $this->validateItems($value, $context); - $isOk() && $value = $this->doTransform($value, $context); - return $isOk() ? $value : null; - } - - - private function validateItems(array &$value, Context $context): void - { - $items = $this->items; - if ($extraKeys = array_keys(array_diff_key($value, $items))) { - if ($this->otherItems) { - $items += array_fill_keys($extraKeys, $this->otherItems); - } else { - $keys = array_map('strval', array_keys($items)); - foreach ($extraKeys as $key) { - $hint = Nette\Utils\Helpers::getSuggestion($keys, (string) $key); - $context->addError( - 'Unexpected item %path%' . ($hint ? ", did you mean '%hint%'?" : '.'), - Nette\Schema\Message::UnexpectedItem, - ['hint' => $hint], - )->path[] = $key; - } - } - } - - foreach ($items as $itemKey => $itemVal) { - $context->path[] = $itemKey; - if (array_key_exists($itemKey, $value)) { - $value[$itemKey] = $itemVal->complete($value[$itemKey], $context); - } else { - $default = $itemVal->completeDefault($context); // checks required item - if (!$context->skipDefaults && !$this->skipDefaults) { - $value[$itemKey] = $default; - } - } - - array_pop($context->path); - } - } - - - public function completeDefault(Context $context): mixed - { - return $this->required - ? $this->complete([], $context) - : null; - } -} diff --git a/docker/streamline-src/vendor/nette/schema/src/Schema/Elements/Type.php b/docker/streamline-src/vendor/nette/schema/src/Schema/Elements/Type.php deleted file mode 100644 index 69d52995..00000000 --- a/docker/streamline-src/vendor/nette/schema/src/Schema/Elements/Type.php +++ /dev/null @@ -1,208 +0,0 @@ - [], 'array' => []]; - $this->type = $type; - $this->default = strpos($type, '[]') ? [] : $defaults[$type] ?? null; - } - - - public function nullable(): self - { - $this->type = 'null|' . $this->type; - return $this; - } - - - public function mergeDefaults(bool $state = true): self - { - $this->merge = $state; - return $this; - } - - - public function dynamic(): self - { - $this->type = DynamicParameter::class . '|' . $this->type; - return $this; - } - - - public function min(?float $min): self - { - $this->range[0] = $min; - return $this; - } - - - public function max(?float $max): self - { - $this->range[1] = $max; - return $this; - } - - - /** - * @internal use arrayOf() or listOf() - */ - public function items(string|Schema $valueType = 'mixed', string|Schema|null $keyType = null): self - { - $this->itemsValue = $valueType instanceof Schema - ? $valueType - : new self($valueType); - $this->itemsKey = $keyType instanceof Schema || $keyType === null - ? $keyType - : new self($keyType); - return $this; - } - - - public function pattern(?string $pattern): self - { - $this->pattern = $pattern; - return $this; - } - - - /********************* processing ****************d*g**/ - - - public function normalize(mixed $value, Context $context): mixed - { - if ($prevent = (is_array($value) && isset($value[Helpers::PreventMerging]))) { - unset($value[Helpers::PreventMerging]); - } - - $value = $this->doNormalize($value, $context); - if (is_array($value) && $this->itemsValue) { - $res = []; - foreach ($value as $key => $val) { - $context->path[] = $key; - $context->isKey = true; - $key = $this->itemsKey - ? $this->itemsKey->normalize($key, $context) - : $key; - $context->isKey = false; - $res[$key] = $this->itemsValue->normalize($val, $context); - array_pop($context->path); - } - - $value = $res; - } - - if ($prevent && is_array($value)) { - $value[Helpers::PreventMerging] = true; - } - - return $value; - } - - - public function merge(mixed $value, mixed $base): mixed - { - if (is_array($value) && isset($value[Helpers::PreventMerging])) { - unset($value[Helpers::PreventMerging]); - return $value; - } - - if (is_array($value) && is_array($base) && $this->itemsValue) { - $index = 0; - foreach ($value as $key => $val) { - if ($key === $index) { - $base[] = $val; - $index++; - } else { - $base[$key] = array_key_exists($key, $base) - ? $this->itemsValue->merge($val, $base[$key]) - : $val; - } - } - - return $base; - } - - return Helpers::merge($value, $base); - } - - - public function complete(mixed $value, Context $context): mixed - { - $merge = $this->merge; - if (is_array($value) && isset($value[Helpers::PreventMerging])) { - unset($value[Helpers::PreventMerging]); - $merge = false; - } - - if ($value === null && is_array($this->default)) { - $value = []; // is unable to distinguish null from array in NEON - } - - $this->doDeprecation($context); - - $isOk = $context->createChecker(); - Helpers::validateType($value, $this->type, $context); - $isOk() && Helpers::validateRange($value, $this->range, $context, $this->type); - $isOk() && $value !== null && $this->pattern !== null && Helpers::validatePattern($value, $this->pattern, $context); - $isOk() && is_array($value) && $this->validateItems($value, $context); - $isOk() && $merge && $value = Helpers::merge($value, $this->default); - $isOk() && $value = $this->doTransform($value, $context); - if (!$isOk()) { - return null; - } - - if ($value instanceof DynamicParameter) { - $expected = $this->type . ($this->range === [null, null] ? '' : ':' . implode('..', $this->range)); - $context->dynamics[] = [$value, str_replace(DynamicParameter::class . '|', '', $expected), $context->path]; - } - return $value; - } - - - private function validateItems(array &$value, Context $context): void - { - if (!$this->itemsValue) { - return; - } - - $res = []; - foreach ($value as $key => $val) { - $context->path[] = $key; - $context->isKey = true; - $key = $this->itemsKey ? $this->itemsKey->complete($key, $context) : $key; - $context->isKey = false; - $res[$key] = $this->itemsValue->complete($val, $context); - array_pop($context->path); - } - $value = $res; - } -} diff --git a/docker/streamline-src/vendor/nette/schema/src/Schema/Expect.php b/docker/streamline-src/vendor/nette/schema/src/Schema/Expect.php deleted file mode 100644 index eab3c84c..00000000 --- a/docker/streamline-src/vendor/nette/schema/src/Schema/Expect.php +++ /dev/null @@ -1,118 +0,0 @@ -default($args[0]); - } - - return $type; - } - - - public static function type(string $type): Type - { - return new Type($type); - } - - - public static function anyOf(mixed ...$set): AnyOf - { - return new AnyOf(...$set); - } - - - /** - * @param Schema[] $shape - */ - public static function structure(array $shape): Structure - { - return new Structure($shape); - } - - - public static function from(object $object, array $items = []): Structure - { - $ro = new \ReflectionObject($object); - $props = $ro->hasMethod('__construct') - ? $ro->getMethod('__construct')->getParameters() - : $ro->getProperties(); - - foreach ($props as $prop) { - $item = &$items[$prop->getName()]; - if (!$item) { - $type = Helpers::getPropertyType($prop) ?? 'mixed'; - $item = new Type($type); - if ($prop instanceof \ReflectionProperty ? $prop->isInitialized($object) : $prop->isOptional()) { - $def = ($prop instanceof \ReflectionProperty ? $prop->getValue($object) : $prop->getDefaultValue()); - if (is_object($def)) { - $item = static::from($def); - } elseif ($def === null && !Nette\Utils\Validators::is(null, $type)) { - $item->required(); - } else { - $item->default($def); - } - } else { - $item->required(); - } - } - } - - return (new Structure($items))->castTo($ro->getName()); - } - - - /** - * @param mixed[] $shape - */ - public static function array(?array $shape = []): Structure|Type - { - return Nette\Utils\Arrays::first($shape ?? []) instanceof Schema - ? (new Structure($shape))->castTo('array') - : (new Type('array'))->default($shape); - } - - - public static function arrayOf(string|Schema $valueType, string|Schema|null $keyType = null): Type - { - return (new Type('array'))->items($valueType, $keyType); - } - - - public static function listOf(string|Schema $type): Type - { - return (new Type('list'))->items($type); - } -} diff --git a/docker/streamline-src/vendor/nette/utils/composer.json b/docker/streamline-src/vendor/nette/utils/composer.json deleted file mode 100644 index 74bd6183..00000000 --- a/docker/streamline-src/vendor/nette/utils/composer.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "nette/utils", - "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", - "keywords": ["nette", "images", "json", "password", "validation", "utility", "string", "array", "core", "slugify", "utf-8", "unicode", "paginator", "datetime"], - "homepage": "https://nette.org", - "license": ["BSD-3-Clause", "GPL-2.0-only", "GPL-3.0-only"], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "require": { - "php": "8.0 - 8.4" - }, - "require-dev": { - "nette/tester": "^2.5", - "tracy/tracy": "^2.9", - "phpstan/phpstan": "^1.0", - "jetbrains/phpstorm-attributes": "dev-master" - }, - "conflict": { - "nette/finder": "<3", - "nette/schema": "<1.2.2" - }, - "suggest": { - "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", - "ext-json": "to use Nette\\Utils\\Json", - "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", - "ext-mbstring": "to use Strings::lower() etc...", - "ext-gd": "to use Image", - "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()" - }, - "autoload": { - "classmap": ["src/"] - }, - "minimum-stability": "dev", - "scripts": { - "phpstan": "phpstan analyse", - "tester": "tester tests -s" - }, - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - } -} diff --git a/docker/streamline-src/vendor/nette/utils/readme.md b/docker/streamline-src/vendor/nette/utils/readme.md deleted file mode 100644 index 0038f534..00000000 --- a/docker/streamline-src/vendor/nette/utils/readme.md +++ /dev/null @@ -1,55 +0,0 @@ -[![Nette Utils](https://github.com/nette/utils/assets/194960/c33fdb74-0652-4cad-ac6e-c1ce0d29e32a)](https://doc.nette.org/en/utils) - -[![Downloads this Month](https://img.shields.io/packagist/dm/nette/utils.svg)](https://packagist.org/packages/nette/utils) -[![Tests](https://github.com/nette/utils/workflows/Tests/badge.svg?branch=master)](https://github.com/nette/utils/actions) -[![Coverage Status](https://coveralls.io/repos/github/nette/utils/badge.svg?branch=master)](https://coveralls.io/github/nette/utils?branch=master) -[![Latest Stable Version](https://poser.pugx.org/nette/utils/v/stable)](https://github.com/nette/utils/releases) -[![License](https://img.shields.io/badge/license-New%20BSD-blue.svg)](https://github.com/nette/utils/blob/master/license.md) - - -Introduction ------------- - -In package nette/utils you will find a set of useful classes for everyday use: - -✅ [Arrays](https://doc.nette.org/utils/arrays)
    -✅ [Callback](https://doc.nette.org/utils/callback) - PHP callbacks
    -✅ [Filesystem](https://doc.nette.org/utils/filesystem) - copying, renaming, …
    -✅ [Finder](https://doc.nette.org/utils/finder) - finds files and directories
    -✅ [Floats](https://doc.nette.org/utils/floats) - floating point numbers
    -✅ [Helper Functions](https://doc.nette.org/utils/helpers)
    -✅ [HTML elements](https://doc.nette.org/utils/html-elements) - generate HTML
    -✅ [Images](https://doc.nette.org/utils/images) - crop, resize, rotate images
    -✅ [Iterables](https://doc.nette.org/utils/iterables)
    -✅ [JSON](https://doc.nette.org/utils/json) - encoding and decoding
    -✅ [Generating Random Strings](https://doc.nette.org/utils/random)
    -✅ [Paginator](https://doc.nette.org/utils/paginator) - pagination math
    -✅ [PHP Reflection](https://doc.nette.org/utils/reflection)
    -✅ [Strings](https://doc.nette.org/utils/strings) - useful text functions
    -✅ [SmartObject](https://doc.nette.org/utils/smartobject) - PHP object enhancements
    -✅ [Type](https://doc.nette.org/utils/type) - PHP data type
    -✅ [Validation](https://doc.nette.org/utils/validators) - validate inputs
    - -  - -Installation ------------- - -The recommended way to install is via Composer: - -``` -composer require nette/utils -``` - -Nette Utils 4.0 is compatible with PHP 8.0 to 8.4. - -  - -[Support Me](https://github.com/sponsors/dg) --------------------------------------------- - -Do you like Nette Utils? Are you looking forward to the new features? - -[![Buy me a coffee](https://files.nette.org/icons/donation-3.svg)](https://github.com/sponsors/dg) - -Thank you! diff --git a/docker/streamline-src/vendor/nette/utils/src/Iterators/CachingIterator.php b/docker/streamline-src/vendor/nette/utils/src/Iterators/CachingIterator.php deleted file mode 100644 index 02bd7407..00000000 --- a/docker/streamline-src/vendor/nette/utils/src/Iterators/CachingIterator.php +++ /dev/null @@ -1,150 +0,0 @@ -counter === 1 || ($gridWidth && $this->counter !== 0 && (($this->counter - 1) % $gridWidth) === 0); - } - - - /** - * Is the current element the last one? - */ - public function isLast(?int $gridWidth = null): bool - { - return !$this->hasNext() || ($gridWidth && ($this->counter % $gridWidth) === 0); - } - - - /** - * Is the iterator empty? - */ - public function isEmpty(): bool - { - return $this->counter === 0; - } - - - /** - * Is the counter odd? - */ - public function isOdd(): bool - { - return $this->counter % 2 === 1; - } - - - /** - * Is the counter even? - */ - public function isEven(): bool - { - return $this->counter % 2 === 0; - } - - - /** - * Returns the counter. - */ - public function getCounter(): int - { - return $this->counter; - } - - - /** - * Returns the count of elements. - */ - public function count(): int - { - $inner = $this->getInnerIterator(); - if ($inner instanceof \Countable) { - return $inner->count(); - - } else { - throw new Nette\NotSupportedException('Iterator is not countable.'); - } - } - - - /** - * Forwards to the next element. - */ - public function next(): void - { - parent::next(); - if (parent::valid()) { - $this->counter++; - } - } - - - /** - * Rewinds the Iterator. - */ - public function rewind(): void - { - parent::rewind(); - $this->counter = parent::valid() ? 1 : 0; - } - - - /** - * Returns the next key. - */ - public function getNextKey(): mixed - { - return $this->getInnerIterator()->key(); - } - - - /** - * Returns the next element. - */ - public function getNextValue(): mixed - { - return $this->getInnerIterator()->current(); - } -} diff --git a/docker/streamline-src/vendor/nette/utils/src/Iterators/Mapper.php b/docker/streamline-src/vendor/nette/utils/src/Iterators/Mapper.php deleted file mode 100644 index 284da29d..00000000 --- a/docker/streamline-src/vendor/nette/utils/src/Iterators/Mapper.php +++ /dev/null @@ -1,33 +0,0 @@ -callback = $callback; - } - - - public function current(): mixed - { - return ($this->callback)(parent::current(), parent::key()); - } -} diff --git a/docker/streamline-src/vendor/nette/utils/src/Utils/Arrays.php b/docker/streamline-src/vendor/nette/utils/src/Utils/Arrays.php deleted file mode 100644 index 00a4a8cd..00000000 --- a/docker/streamline-src/vendor/nette/utils/src/Utils/Arrays.php +++ /dev/null @@ -1,553 +0,0 @@ - $array - * @param array-key|array-key[] $key - * @param ?T $default - * @return ?T - * @throws Nette\InvalidArgumentException if item does not exist and default value is not provided - */ - public static function get(array $array, string|int|array $key, mixed $default = null): mixed - { - foreach (is_array($key) ? $key : [$key] as $k) { - if (is_array($array) && array_key_exists($k, $array)) { - $array = $array[$k]; - } else { - if (func_num_args() < 3) { - throw new Nette\InvalidArgumentException("Missing item '$k'."); - } - - return $default; - } - } - - return $array; - } - - - /** - * Returns reference to array item. If the index does not exist, new one is created with value null. - * @template T - * @param array $array - * @param array-key|array-key[] $key - * @return ?T - * @throws Nette\InvalidArgumentException if traversed item is not an array - */ - public static function &getRef(array &$array, string|int|array $key): mixed - { - foreach (is_array($key) ? $key : [$key] as $k) { - if (is_array($array) || $array === null) { - $array = &$array[$k]; - } else { - throw new Nette\InvalidArgumentException('Traversed item is not an array.'); - } - } - - return $array; - } - - - /** - * Recursively merges two fields. It is useful, for example, for merging tree structures. It behaves as - * the + operator for array, ie. it adds a key/value pair from the second array to the first one and retains - * the value from the first array in the case of a key collision. - * @template T1 - * @template T2 - * @param array $array1 - * @param array $array2 - * @return array - */ - public static function mergeTree(array $array1, array $array2): array - { - $res = $array1 + $array2; - foreach (array_intersect_key($array1, $array2) as $k => $v) { - if (is_array($v) && is_array($array2[$k])) { - $res[$k] = self::mergeTree($v, $array2[$k]); - } - } - - return $res; - } - - - /** - * Returns zero-indexed position of given array key. Returns null if key is not found. - */ - public static function getKeyOffset(array $array, string|int $key): ?int - { - return Helpers::falseToNull(array_search(self::toKey($key), array_keys($array), strict: true)); - } - - - /** - * @deprecated use getKeyOffset() - */ - public static function searchKey(array $array, $key): ?int - { - return self::getKeyOffset($array, $key); - } - - - /** - * Tests an array for the presence of value. - */ - public static function contains(array $array, mixed $value): bool - { - return in_array($value, $array, true); - } - - - /** - * Returns the first item (matching the specified predicate if given). If there is no such item, it returns result of invoking $else or null. - * @template K of int|string - * @template V - * @param array $array - * @param ?callable(V, K, array): bool $predicate - * @return ?V - */ - public static function first(array $array, ?callable $predicate = null, ?callable $else = null): mixed - { - $key = self::firstKey($array, $predicate); - return $key === null - ? ($else ? $else() : null) - : $array[$key]; - } - - - /** - * Returns the last item (matching the specified predicate if given). If there is no such item, it returns result of invoking $else or null. - * @template K of int|string - * @template V - * @param array $array - * @param ?callable(V, K, array): bool $predicate - * @return ?V - */ - public static function last(array $array, ?callable $predicate = null, ?callable $else = null): mixed - { - $key = self::lastKey($array, $predicate); - return $key === null - ? ($else ? $else() : null) - : $array[$key]; - } - - - /** - * Returns the key of first item (matching the specified predicate if given) or null if there is no such item. - * @template K of int|string - * @template V - * @param array $array - * @param ?callable(V, K, array): bool $predicate - * @return ?K - */ - public static function firstKey(array $array, ?callable $predicate = null): int|string|null - { - if (!$predicate) { - return array_key_first($array); - } - foreach ($array as $k => $v) { - if ($predicate($v, $k, $array)) { - return $k; - } - } - return null; - } - - - /** - * Returns the key of last item (matching the specified predicate if given) or null if there is no such item. - * @template K of int|string - * @template V - * @param array $array - * @param ?callable(V, K, array): bool $predicate - * @return ?K - */ - public static function lastKey(array $array, ?callable $predicate = null): int|string|null - { - return $predicate - ? self::firstKey(array_reverse($array, preserve_keys: true), $predicate) - : array_key_last($array); - } - - - /** - * Inserts the contents of the $inserted array into the $array immediately after the $key. - * If $key is null (or does not exist), it is inserted at the beginning. - */ - public static function insertBefore(array &$array, string|int|null $key, array $inserted): void - { - $offset = $key === null ? 0 : (int) self::getKeyOffset($array, $key); - $array = array_slice($array, 0, $offset, preserve_keys: true) - + $inserted - + array_slice($array, $offset, count($array), preserve_keys: true); - } - - - /** - * Inserts the contents of the $inserted array into the $array before the $key. - * If $key is null (or does not exist), it is inserted at the end. - */ - public static function insertAfter(array &$array, string|int|null $key, array $inserted): void - { - if ($key === null || ($offset = self::getKeyOffset($array, $key)) === null) { - $offset = count($array) - 1; - } - - $array = array_slice($array, 0, $offset + 1, preserve_keys: true) - + $inserted - + array_slice($array, $offset + 1, count($array), preserve_keys: true); - } - - - /** - * Renames key in array. - */ - public static function renameKey(array &$array, string|int $oldKey, string|int $newKey): bool - { - $offset = self::getKeyOffset($array, $oldKey); - if ($offset === null) { - return false; - } - - $val = &$array[$oldKey]; - $keys = array_keys($array); - $keys[$offset] = $newKey; - $array = array_combine($keys, $array); - $array[$newKey] = &$val; - return true; - } - - - /** - * Returns only those array items, which matches a regular expression $pattern. - * @param string[] $array - * @return string[] - */ - public static function grep( - array $array, - #[Language('RegExp')] - string $pattern, - bool|int $invert = false, - ): array - { - $flags = $invert ? PREG_GREP_INVERT : 0; - return Strings::pcre('preg_grep', [$pattern, $array, $flags]); - } - - - /** - * Transforms multidimensional array to flat array. - */ - public static function flatten(array $array, bool $preserveKeys = false): array - { - $res = []; - $cb = $preserveKeys - ? function ($v, $k) use (&$res): void { $res[$k] = $v; } - : function ($v) use (&$res): void { $res[] = $v; }; - array_walk_recursive($array, $cb); - return $res; - } - - - /** - * Checks if the array is indexed in ascending order of numeric keys from zero, a.k.a list. - * @return ($value is list ? true : false) - */ - public static function isList(mixed $value): bool - { - return is_array($value) && (PHP_VERSION_ID < 80100 - ? !$value || array_keys($value) === range(0, count($value) - 1) - : array_is_list($value) - ); - } - - - /** - * Reformats table to associative tree. Path looks like 'field|field[]field->field=field'. - * @param string|string[] $path - */ - public static function associate(array $array, $path): array|\stdClass - { - $parts = is_array($path) - ? $path - : preg_split('#(\[\]|->|=|\|)#', $path, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); - - if (!$parts || $parts === ['->'] || $parts[0] === '=' || $parts[0] === '|') { - throw new Nette\InvalidArgumentException("Invalid path '$path'."); - } - - $res = $parts[0] === '->' ? new \stdClass : []; - - foreach ($array as $rowOrig) { - $row = (array) $rowOrig; - $x = &$res; - - for ($i = 0; $i < count($parts); $i++) { - $part = $parts[$i]; - if ($part === '[]') { - $x = &$x[]; - - } elseif ($part === '=') { - if (isset($parts[++$i])) { - $x = $row[$parts[$i]]; - $row = null; - } - } elseif ($part === '->') { - if (isset($parts[++$i])) { - if ($x === null) { - $x = new \stdClass; - } - - $x = &$x->{$row[$parts[$i]]}; - } else { - $row = is_object($rowOrig) ? $rowOrig : (object) $row; - } - } elseif ($part !== '|') { - $x = &$x[(string) $row[$part]]; - } - } - - if ($x === null) { - $x = $row; - } - } - - return $res; - } - - - /** - * Normalizes array to associative array. Replace numeric keys with their values, the new value will be $filling. - */ - public static function normalize(array $array, mixed $filling = null): array - { - $res = []; - foreach ($array as $k => $v) { - $res[is_int($k) ? $v : $k] = is_int($k) ? $filling : $v; - } - - return $res; - } - - - /** - * Returns and removes the value of an item from an array. If it does not exist, it throws an exception, - * or returns $default, if provided. - * @template T - * @param array $array - * @param ?T $default - * @return ?T - * @throws Nette\InvalidArgumentException if item does not exist and default value is not provided - */ - public static function pick(array &$array, string|int $key, mixed $default = null): mixed - { - if (array_key_exists($key, $array)) { - $value = $array[$key]; - unset($array[$key]); - return $value; - - } elseif (func_num_args() < 3) { - throw new Nette\InvalidArgumentException("Missing item '$key'."); - - } else { - return $default; - } - } - - - /** - * Tests whether at least one element in the array passes the test implemented by the provided function. - * @template K of int|string - * @template V - * @param array $array - * @param callable(V, K, array): bool $predicate - */ - public static function some(iterable $array, callable $predicate): bool - { - foreach ($array as $k => $v) { - if ($predicate($v, $k, $array)) { - return true; - } - } - - return false; - } - - - /** - * Tests whether all elements in the array pass the test implemented by the provided function. - * @template K of int|string - * @template V - * @param array $array - * @param callable(V, K, array): bool $predicate - */ - public static function every(iterable $array, callable $predicate): bool - { - foreach ($array as $k => $v) { - if (!$predicate($v, $k, $array)) { - return false; - } - } - - return true; - } - - - /** - * Returns a new array containing all key-value pairs matching the given $predicate. - * @template K of int|string - * @template V - * @param array $array - * @param callable(V, K, array): bool $predicate - * @return array - */ - public static function filter(array $array, callable $predicate): array - { - $res = []; - foreach ($array as $k => $v) { - if ($predicate($v, $k, $array)) { - $res[$k] = $v; - } - } - return $res; - } - - - /** - * Returns an array containing the original keys and results of applying the given transform function to each element. - * @template K of int|string - * @template V - * @template R - * @param array $array - * @param callable(V, K, array): R $transformer - * @return array - */ - public static function map(iterable $array, callable $transformer): array - { - $res = []; - foreach ($array as $k => $v) { - $res[$k] = $transformer($v, $k, $array); - } - - return $res; - } - - - /** - * Returns an array containing new keys and values generated by applying the given transform function to each element. - * If the function returns null, the element is skipped. - * @template K of int|string - * @template V - * @template ResK of int|string - * @template ResV - * @param array $array - * @param callable(V, K, array): ?array{ResK, ResV} $transformer - * @return array - */ - public static function mapWithKeys(array $array, callable $transformer): array - { - $res = []; - foreach ($array as $k => $v) { - $pair = $transformer($v, $k, $array); - if ($pair) { - $res[$pair[0]] = $pair[1]; - } - } - - return $res; - } - - - /** - * Invokes all callbacks and returns array of results. - * @param callable[] $callbacks - */ - public static function invoke(iterable $callbacks, ...$args): array - { - $res = []; - foreach ($callbacks as $k => $cb) { - $res[$k] = $cb(...$args); - } - - return $res; - } - - - /** - * Invokes method on every object in an array and returns array of results. - * @param object[] $objects - */ - public static function invokeMethod(iterable $objects, string $method, ...$args): array - { - $res = []; - foreach ($objects as $k => $obj) { - $res[$k] = $obj->$method(...$args); - } - - return $res; - } - - - /** - * Copies the elements of the $array array to the $object object and then returns it. - * @template T of object - * @param T $object - * @return T - */ - public static function toObject(iterable $array, object $object): object - { - foreach ($array as $k => $v) { - $object->$k = $v; - } - - return $object; - } - - - /** - * Converts value to array key. - */ - public static function toKey(mixed $value): int|string - { - return key([$value => null]); - } - - - /** - * Returns copy of the $array where every item is converted to string - * and prefixed by $prefix and suffixed by $suffix. - * @param string[] $array - * @return string[] - */ - public static function wrap(array $array, string $prefix = '', string $suffix = ''): array - { - $res = []; - foreach ($array as $k => $v) { - $res[$k] = $prefix . $v . $suffix; - } - - return $res; - } -} diff --git a/docker/streamline-src/vendor/nette/utils/src/Utils/Callback.php b/docker/streamline-src/vendor/nette/utils/src/Utils/Callback.php deleted file mode 100644 index 1777428f..00000000 --- a/docker/streamline-src/vendor/nette/utils/src/Utils/Callback.php +++ /dev/null @@ -1,137 +0,0 @@ -getClosureScopeClass()?->name; - if (str_ends_with($r->name, '}')) { - return $closure; - - } elseif (($obj = $r->getClosureThis()) && $obj::class === $class) { - return [$obj, $r->name]; - - } elseif ($class) { - return [$class, $r->name]; - - } else { - return $r->name; - } - } -} diff --git a/docker/streamline-src/vendor/nette/utils/src/Utils/Image.php b/docker/streamline-src/vendor/nette/utils/src/Utils/Image.php deleted file mode 100644 index d2947c72..00000000 --- a/docker/streamline-src/vendor/nette/utils/src/Utils/Image.php +++ /dev/null @@ -1,831 +0,0 @@ - - * $image = Image::fromFile('nette.jpg'); - * $image->resize(150, 100); - * $image->sharpen(); - * $image->send(); - * - * - * @method Image affine(array $affine, ?array $clip = null) - * @method void alphaBlending(bool $enable) - * @method void antialias(bool $enable) - * @method void arc(int $centerX, int $centerY, int $width, int $height, int $startAngle, int $endAngle, ImageColor $color) - * @method int colorAllocate(int $red, int $green, int $blue) - * @method int colorAllocateAlpha(int $red, int $green, int $blue, int $alpha) - * @method int colorAt(int $x, int $y) - * @method int colorClosest(int $red, int $green, int $blue) - * @method int colorClosestAlpha(int $red, int $green, int $blue, int $alpha) - * @method int colorClosestHWB(int $red, int $green, int $blue) - * @method void colorDeallocate(int $color) - * @method int colorExact(int $red, int $green, int $blue) - * @method int colorExactAlpha(int $red, int $green, int $blue, int $alpha) - * @method void colorMatch(Image $image2) - * @method int colorResolve(int $red, int $green, int $blue) - * @method int colorResolveAlpha(int $red, int $green, int $blue, int $alpha) - * @method void colorSet(int $index, int $red, int $green, int $blue, int $alpha = 0) - * @method array colorsForIndex(int $color) - * @method int colorsTotal() - * @method int colorTransparent(?int $color = null) - * @method void convolution(array $matrix, float $div, float $offset) - * @method void copy(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH) - * @method void copyMerge(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH, int $pct) - * @method void copyMergeGray(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH, int $pct) - * @method void copyResampled(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $dstW, int $dstH, int $srcW, int $srcH) - * @method void copyResized(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $dstW, int $dstH, int $srcW, int $srcH) - * @method Image cropAuto(int $mode = IMG_CROP_DEFAULT, float $threshold = .5, ?ImageColor $color = null) - * @method void ellipse(int $centerX, int $centerY, int $width, int $height, ImageColor $color) - * @method void fill(int $x, int $y, ImageColor $color) - * @method void filledArc(int $centerX, int $centerY, int $width, int $height, int $startAngle, int $endAngle, ImageColor $color, int $style) - * @method void filledEllipse(int $centerX, int $centerY, int $width, int $height, ImageColor $color) - * @method void filledPolygon(array $points, ImageColor $color) - * @method void filledRectangle(int $x1, int $y1, int $x2, int $y2, ImageColor $color) - * @method void fillToBorder(int $x, int $y, ImageColor $borderColor, ImageColor $color) - * @method void filter(int $filter, ...$args) - * @method void flip(int $mode) - * @method array ftText(float $size, float $angle, int $x, int $y, ImageColor $color, string $fontFile, string $text, array $options = []) - * @method void gammaCorrect(float $inputgamma, float $outputgamma) - * @method array getClip() - * @method int getInterpolation() - * @method int interlace(?bool $enable = null) - * @method bool isTrueColor() - * @method void layerEffect(int $effect) - * @method void line(int $x1, int $y1, int $x2, int $y2, ImageColor $color) - * @method void openPolygon(array $points, ImageColor $color) - * @method void paletteCopy(Image $source) - * @method void paletteToTrueColor() - * @method void polygon(array $points, ImageColor $color) - * @method void rectangle(int $x1, int $y1, int $x2, int $y2, ImageColor $color) - * @method mixed resolution(?int $resolutionX = null, ?int $resolutionY = null) - * @method Image rotate(float $angle, ImageColor $backgroundColor) - * @method void saveAlpha(bool $enable) - * @method Image scale(int $newWidth, int $newHeight = -1, int $mode = IMG_BILINEAR_FIXED) - * @method void setBrush(Image $brush) - * @method void setClip(int $x1, int $y1, int $x2, int $y2) - * @method void setInterpolation(int $method = IMG_BILINEAR_FIXED) - * @method void setPixel(int $x, int $y, ImageColor $color) - * @method void setStyle(array $style) - * @method void setThickness(int $thickness) - * @method void setTile(Image $tile) - * @method void trueColorToPalette(bool $dither, int $ncolors) - * @method array ttfText(float $size, float $angle, int $x, int $y, ImageColor $color, string $fontfile, string $text, array $options = []) - * @property-read positive-int $width - * @property-read positive-int $height - * @property-read \GdImage $imageResource - */ -class Image -{ - use Nette\SmartObject; - - /** Prevent from getting resized to a bigger size than the original */ - public const ShrinkOnly = 0b0001; - - /** Resizes to a specified width and height without keeping aspect ratio */ - public const Stretch = 0b0010; - - /** Resizes to fit into a specified width and height and preserves aspect ratio */ - public const OrSmaller = 0b0000; - - /** Resizes while bounding the smaller dimension to the specified width or height and preserves aspect ratio */ - public const OrBigger = 0b0100; - - /** Resizes to the smallest possible size to completely cover specified width and height and reserves aspect ratio */ - public const Cover = 0b1000; - - /** @deprecated use Image::ShrinkOnly */ - public const SHRINK_ONLY = self::ShrinkOnly; - - /** @deprecated use Image::Stretch */ - public const STRETCH = self::Stretch; - - /** @deprecated use Image::OrSmaller */ - public const FIT = self::OrSmaller; - - /** @deprecated use Image::OrBigger */ - public const FILL = self::OrBigger; - - /** @deprecated use Image::Cover */ - public const EXACT = self::Cover; - - /** @deprecated use Image::EmptyGIF */ - public const EMPTY_GIF = self::EmptyGIF; - - /** image types */ - public const - JPEG = ImageType::JPEG, - PNG = ImageType::PNG, - GIF = ImageType::GIF, - WEBP = ImageType::WEBP, - AVIF = ImageType::AVIF, - BMP = ImageType::BMP; - - public const EmptyGIF = "GIF89a\x01\x00\x01\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00!\xf9\x04\x01\x00\x00\x00\x00,\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02D\x01\x00;"; - - private const Formats = [ImageType::JPEG => 'jpeg', ImageType::PNG => 'png', ImageType::GIF => 'gif', ImageType::WEBP => 'webp', ImageType::AVIF => 'avif', ImageType::BMP => 'bmp']; - - private \GdImage $image; - - - /** - * Returns RGB color (0..255) and transparency (0..127). - * @deprecated use ImageColor::rgb() - */ - public static function rgb(int $red, int $green, int $blue, int $transparency = 0): array - { - return [ - 'red' => max(0, min(255, $red)), - 'green' => max(0, min(255, $green)), - 'blue' => max(0, min(255, $blue)), - 'alpha' => max(0, min(127, $transparency)), - ]; - } - - - /** - * Reads an image from a file and returns its type in $type. - * @throws Nette\NotSupportedException if gd extension is not loaded - * @throws UnknownImageFileException if file not found or file type is not known - */ - public static function fromFile(string $file, ?int &$type = null): static - { - self::ensureExtension(); - $type = self::detectTypeFromFile($file); - if (!$type) { - throw new UnknownImageFileException(is_file($file) ? "Unknown type of file '$file'." : "File '$file' not found."); - } - - return self::invokeSafe('imagecreatefrom' . self::Formats[$type], $file, "Unable to open file '$file'.", __METHOD__); - } - - - /** - * Reads an image from a string and returns its type in $type. - * @throws Nette\NotSupportedException if gd extension is not loaded - * @throws ImageException - */ - public static function fromString(string $s, ?int &$type = null): static - { - self::ensureExtension(); - $type = self::detectTypeFromString($s); - if (!$type) { - throw new UnknownImageFileException('Unknown type of image.'); - } - - return self::invokeSafe('imagecreatefromstring', $s, 'Unable to open image from string.', __METHOD__); - } - - - private static function invokeSafe(string $func, string $arg, string $message, string $callee): static - { - $errors = []; - $res = Callback::invokeSafe($func, [$arg], function (string $message) use (&$errors): void { - $errors[] = $message; - }); - - if (!$res) { - throw new ImageException($message . ' Errors: ' . implode(', ', $errors)); - } elseif ($errors) { - trigger_error($callee . '(): ' . implode(', ', $errors), E_USER_WARNING); - } - - return new static($res); - } - - - /** - * Creates a new true color image of the given dimensions. The default color is black. - * @param positive-int $width - * @param positive-int $height - * @throws Nette\NotSupportedException if gd extension is not loaded - */ - public static function fromBlank(int $width, int $height, ImageColor|array|null $color = null): static - { - self::ensureExtension(); - if ($width < 1 || $height < 1) { - throw new Nette\InvalidArgumentException('Image width and height must be greater than zero.'); - } - - $image = new static(imagecreatetruecolor($width, $height)); - if ($color) { - $image->alphablending(false); - $image->filledrectangle(0, 0, $width - 1, $height - 1, $color); - $image->alphablending(true); - } - - return $image; - } - - - /** - * Returns the type of image from file. - * @return ImageType::*|null - */ - public static function detectTypeFromFile(string $file, &$width = null, &$height = null): ?int - { - [$width, $height, $type] = @getimagesize($file); // @ - files smaller than 12 bytes causes read error - return isset(self::Formats[$type]) ? $type : null; - } - - - /** - * Returns the type of image from string. - * @return ImageType::*|null - */ - public static function detectTypeFromString(string $s, &$width = null, &$height = null): ?int - { - [$width, $height, $type] = @getimagesizefromstring($s); // @ - strings smaller than 12 bytes causes read error - return isset(self::Formats[$type]) ? $type : null; - } - - - /** - * Returns the file extension for the given image type. - * @param ImageType::* $type - * @return value-of - */ - public static function typeToExtension(int $type): string - { - if (!isset(self::Formats[$type])) { - throw new Nette\InvalidArgumentException("Unsupported image type '$type'."); - } - - return self::Formats[$type]; - } - - - /** - * Returns the image type for given file extension. - * @return ImageType::* - */ - public static function extensionToType(string $extension): int - { - $extensions = array_flip(self::Formats) + ['jpg' => ImageType::JPEG]; - $extension = strtolower($extension); - if (!isset($extensions[$extension])) { - throw new Nette\InvalidArgumentException("Unsupported file extension '$extension'."); - } - - return $extensions[$extension]; - } - - - /** - * Returns the mime type for the given image type. - * @param ImageType::* $type - */ - public static function typeToMimeType(int $type): string - { - return 'image/' . self::typeToExtension($type); - } - - - /** - * @param ImageType::* $type - */ - public static function isTypeSupported(int $type): bool - { - self::ensureExtension(); - return (bool) (imagetypes() & match ($type) { - ImageType::JPEG => IMG_JPG, - ImageType::PNG => IMG_PNG, - ImageType::GIF => IMG_GIF, - ImageType::WEBP => IMG_WEBP, - ImageType::AVIF => 256, // IMG_AVIF, - ImageType::BMP => IMG_BMP, - default => 0, - }); - } - - - /** @return ImageType[] */ - public static function getSupportedTypes(): array - { - self::ensureExtension(); - $flag = imagetypes(); - return array_filter([ - $flag & IMG_GIF ? ImageType::GIF : null, - $flag & IMG_JPG ? ImageType::JPEG : null, - $flag & IMG_PNG ? ImageType::PNG : null, - $flag & IMG_WEBP ? ImageType::WEBP : null, - $flag & 256 ? ImageType::AVIF : null, // IMG_AVIF - $flag & IMG_BMP ? ImageType::BMP : null, - ]); - } - - - /** - * Wraps GD image. - */ - public function __construct(\GdImage $image) - { - $this->setImageResource($image); - imagesavealpha($image, true); - } - - - /** - * Returns image width. - * @return positive-int - */ - public function getWidth(): int - { - return imagesx($this->image); - } - - - /** - * Returns image height. - * @return positive-int - */ - public function getHeight(): int - { - return imagesy($this->image); - } - - - /** - * Sets image resource. - */ - protected function setImageResource(\GdImage $image): static - { - $this->image = $image; - return $this; - } - - - /** - * Returns image GD resource. - */ - public function getImageResource(): \GdImage - { - return $this->image; - } - - - /** - * Scales an image. Width and height accept pixels or percent. - * @param int-mask-of $mode - */ - public function resize(int|string|null $width, int|string|null $height, int $mode = self::OrSmaller): static - { - if ($mode & self::Cover) { - return $this->resize($width, $height, self::OrBigger)->crop('50%', '50%', $width, $height); - } - - [$newWidth, $newHeight] = static::calculateSize($this->getWidth(), $this->getHeight(), $width, $height, $mode); - - if ($newWidth !== $this->getWidth() || $newHeight !== $this->getHeight()) { // resize - $newImage = static::fromBlank($newWidth, $newHeight, ImageColor::rgb(0, 0, 0, 0))->getImageResource(); - imagecopyresampled( - $newImage, - $this->image, - 0, - 0, - 0, - 0, - $newWidth, - $newHeight, - $this->getWidth(), - $this->getHeight(), - ); - $this->image = $newImage; - } - - if ($width < 0 || $height < 0) { - imageflip($this->image, $width < 0 ? ($height < 0 ? IMG_FLIP_BOTH : IMG_FLIP_HORIZONTAL) : IMG_FLIP_VERTICAL); - } - - return $this; - } - - - /** - * Calculates dimensions of resized image. Width and height accept pixels or percent. - * @param int-mask-of $mode - */ - public static function calculateSize( - int $srcWidth, - int $srcHeight, - $newWidth, - $newHeight, - int $mode = self::OrSmaller, - ): array - { - if ($newWidth === null) { - } elseif (self::isPercent($newWidth)) { - $newWidth = (int) round($srcWidth / 100 * abs($newWidth)); - $percents = true; - } else { - $newWidth = abs($newWidth); - } - - if ($newHeight === null) { - } elseif (self::isPercent($newHeight)) { - $newHeight = (int) round($srcHeight / 100 * abs($newHeight)); - $mode |= empty($percents) ? 0 : self::Stretch; - } else { - $newHeight = abs($newHeight); - } - - if ($mode & self::Stretch) { // non-proportional - if (!$newWidth || !$newHeight) { - throw new Nette\InvalidArgumentException('For stretching must be both width and height specified.'); - } - - if ($mode & self::ShrinkOnly) { - $newWidth = min($srcWidth, $newWidth); - $newHeight = min($srcHeight, $newHeight); - } - } else { // proportional - if (!$newWidth && !$newHeight) { - throw new Nette\InvalidArgumentException('At least width or height must be specified.'); - } - - $scale = []; - if ($newWidth > 0) { // fit width - $scale[] = $newWidth / $srcWidth; - } - - if ($newHeight > 0) { // fit height - $scale[] = $newHeight / $srcHeight; - } - - if ($mode & self::OrBigger) { - $scale = [max($scale)]; - } - - if ($mode & self::ShrinkOnly) { - $scale[] = 1; - } - - $scale = min($scale); - $newWidth = (int) round($srcWidth * $scale); - $newHeight = (int) round($srcHeight * $scale); - } - - return [max($newWidth, 1), max($newHeight, 1)]; - } - - - /** - * Crops image. Arguments accepts pixels or percent. - */ - public function crop(int|string $left, int|string $top, int|string $width, int|string $height): static - { - [$r['x'], $r['y'], $r['width'], $r['height']] - = static::calculateCutout($this->getWidth(), $this->getHeight(), $left, $top, $width, $height); - if (gd_info()['GD Version'] === 'bundled (2.1.0 compatible)') { - $this->image = imagecrop($this->image, $r); - imagesavealpha($this->image, true); - } else { - $newImage = static::fromBlank($r['width'], $r['height'], ImageColor::rgb(0, 0, 0, 0))->getImageResource(); - imagecopy($newImage, $this->image, 0, 0, $r['x'], $r['y'], $r['width'], $r['height']); - $this->image = $newImage; - } - - return $this; - } - - - /** - * Calculates dimensions of cutout in image. Arguments accepts pixels or percent. - */ - public static function calculateCutout( - int $srcWidth, - int $srcHeight, - int|string $left, - int|string $top, - int|string $newWidth, - int|string $newHeight, - ): array - { - if (self::isPercent($newWidth)) { - $newWidth = (int) round($srcWidth / 100 * $newWidth); - } - - if (self::isPercent($newHeight)) { - $newHeight = (int) round($srcHeight / 100 * $newHeight); - } - - if (self::isPercent($left)) { - $left = (int) round(($srcWidth - $newWidth) / 100 * $left); - } - - if (self::isPercent($top)) { - $top = (int) round(($srcHeight - $newHeight) / 100 * $top); - } - - if ($left < 0) { - $newWidth += $left; - $left = 0; - } - - if ($top < 0) { - $newHeight += $top; - $top = 0; - } - - $newWidth = min($newWidth, $srcWidth - $left); - $newHeight = min($newHeight, $srcHeight - $top); - return [$left, $top, $newWidth, $newHeight]; - } - - - /** - * Sharpens image a little bit. - */ - public function sharpen(): static - { - imageconvolution($this->image, [ // my magic numbers ;) - [-1, -1, -1], - [-1, 24, -1], - [-1, -1, -1], - ], 16, 0); - return $this; - } - - - /** - * Puts another image into this image. Left and top accepts pixels or percent. - * @param int<0, 100> $opacity 0..100 - */ - public function place(self $image, int|string $left = 0, int|string $top = 0, int $opacity = 100): static - { - $opacity = max(0, min(100, $opacity)); - if ($opacity === 0) { - return $this; - } - - $width = $image->getWidth(); - $height = $image->getHeight(); - - if (self::isPercent($left)) { - $left = (int) round(($this->getWidth() - $width) / 100 * $left); - } - - if (self::isPercent($top)) { - $top = (int) round(($this->getHeight() - $height) / 100 * $top); - } - - $output = $input = $image->image; - if ($opacity < 100) { - $tbl = []; - for ($i = 0; $i < 128; $i++) { - $tbl[$i] = round(127 - (127 - $i) * $opacity / 100); - } - - $output = imagecreatetruecolor($width, $height); - imagealphablending($output, false); - if (!$image->isTrueColor()) { - $input = $output; - imagefilledrectangle($output, 0, 0, $width, $height, imagecolorallocatealpha($output, 0, 0, 0, 127)); - imagecopy($output, $image->image, 0, 0, 0, 0, $width, $height); - } - - for ($x = 0; $x < $width; $x++) { - for ($y = 0; $y < $height; $y++) { - $c = \imagecolorat($input, $x, $y); - $c = ($c & 0xFFFFFF) + ($tbl[$c >> 24] << 24); - \imagesetpixel($output, $x, $y, $c); - } - } - - imagealphablending($output, true); - } - - imagecopy( - $this->image, - $output, - $left, - $top, - 0, - 0, - $width, - $height, - ); - return $this; - } - - - /** - * Calculates the bounding box for a TrueType text. Returns keys left, top, width and height. - */ - public static function calculateTextBox( - string $text, - string $fontFile, - float $size, - float $angle = 0, - array $options = [], - ): array - { - self::ensureExtension(); - $box = imagettfbbox($size, $angle, $fontFile, $text, $options); - return [ - 'left' => $minX = min([$box[0], $box[2], $box[4], $box[6]]), - 'top' => $minY = min([$box[1], $box[3], $box[5], $box[7]]), - 'width' => max([$box[0], $box[2], $box[4], $box[6]]) - $minX + 1, - 'height' => max([$box[1], $box[3], $box[5], $box[7]]) - $minY + 1, - ]; - } - - - /** - * Draw a rectangle. - */ - public function rectangleWH(int $x, int $y, int $width, int $height, ImageColor $color): void - { - if ($width !== 0 && $height !== 0) { - $this->rectangle($x, $y, $x + $width + ($width > 0 ? -1 : 1), $y + $height + ($height > 0 ? -1 : 1), $color); - } - } - - - /** - * Draw a filled rectangle. - */ - public function filledRectangleWH(int $x, int $y, int $width, int $height, ImageColor $color): void - { - if ($width !== 0 && $height !== 0) { - $this->filledRectangle($x, $y, $x + $width + ($width > 0 ? -1 : 1), $y + $height + ($height > 0 ? -1 : 1), $color); - } - } - - - /** - * Saves image to the file. Quality is in the range 0..100 for JPEG (default 85), WEBP (default 80) and AVIF (default 30) and 0..9 for PNG (default 9). - * @param ImageType::*|null $type - * @throws ImageException - */ - public function save(string $file, ?int $quality = null, ?int $type = null): void - { - $type ??= self::extensionToType(pathinfo($file, PATHINFO_EXTENSION)); - $this->output($type, $quality, $file); - } - - - /** - * Outputs image to string. Quality is in the range 0..100 for JPEG (default 85), WEBP (default 80) and AVIF (default 30) and 0..9 for PNG (default 9). - * @param ImageType::* $type - */ - public function toString(int $type = ImageType::JPEG, ?int $quality = null): string - { - return Helpers::capture(function () use ($type, $quality): void { - $this->output($type, $quality); - }); - } - - - /** - * Outputs image to string. - */ - public function __toString(): string - { - return $this->toString(); - } - - - /** - * Outputs image to browser. Quality is in the range 0..100 for JPEG (default 85), WEBP (default 80) and AVIF (default 30) and 0..9 for PNG (default 9). - * @param ImageType::* $type - * @throws ImageException - */ - public function send(int $type = ImageType::JPEG, ?int $quality = null): void - { - header('Content-Type: ' . self::typeToMimeType($type)); - $this->output($type, $quality); - } - - - /** - * Outputs image to browser or file. - * @param ImageType::* $type - * @throws ImageException - */ - private function output(int $type, ?int $quality, ?string $file = null): void - { - switch ($type) { - case ImageType::JPEG: - $quality = $quality === null ? 85 : max(0, min(100, $quality)); - $success = @imagejpeg($this->image, $file, $quality); // @ is escalated to exception - break; - - case ImageType::PNG: - $quality = $quality === null ? 9 : max(0, min(9, $quality)); - $success = @imagepng($this->image, $file, $quality); // @ is escalated to exception - break; - - case ImageType::GIF: - $success = @imagegif($this->image, $file); // @ is escalated to exception - break; - - case ImageType::WEBP: - $quality = $quality === null ? 80 : max(0, min(100, $quality)); - $success = @imagewebp($this->image, $file, $quality); // @ is escalated to exception - break; - - case ImageType::AVIF: - $quality = $quality === null ? 30 : max(0, min(100, $quality)); - $success = @imageavif($this->image, $file, $quality); // @ is escalated to exception - break; - - case ImageType::BMP: - $success = @imagebmp($this->image, $file); // @ is escalated to exception - break; - - default: - throw new Nette\InvalidArgumentException("Unsupported image type '$type'."); - } - - if (!$success) { - throw new ImageException(Helpers::getLastError() ?: 'Unknown error'); - } - } - - - /** - * Call to undefined method. - * @throws Nette\MemberAccessException - */ - public function __call(string $name, array $args): mixed - { - $function = 'image' . $name; - if (!function_exists($function)) { - ObjectHelpers::strictCall(static::class, $name); - } - - foreach ($args as $key => $value) { - if ($value instanceof self) { - $args[$key] = $value->getImageResource(); - - } elseif ($value instanceof ImageColor || (is_array($value) && isset($value['red']))) { - $args[$key] = $this->resolveColor($value); - } - } - - $res = $function($this->image, ...$args); - return $res instanceof \GdImage - ? $this->setImageResource($res) - : $res; - } - - - public function __clone() - { - ob_start(function () {}); - imagepng($this->image, null, 0); - $this->setImageResource(imagecreatefromstring(ob_get_clean())); - } - - - private static function isPercent(int|string &$num): bool - { - if (is_string($num) && str_ends_with($num, '%')) { - $num = (float) substr($num, 0, -1); - return true; - } elseif (is_int($num) || $num === (string) (int) $num) { - $num = (int) $num; - return false; - } - - throw new Nette\InvalidArgumentException("Expected dimension in int|string, '$num' given."); - } - - - /** - * Prevents serialization. - */ - public function __sleep(): array - { - throw new Nette\NotSupportedException('You cannot serialize or unserialize ' . self::class . ' instances.'); - } - - - public function resolveColor(ImageColor|array $color): int - { - $color = $color instanceof ImageColor ? $color->toRGBA() : array_values($color); - return imagecolorallocatealpha($this->image, ...$color) ?: imagecolorresolvealpha($this->image, ...$color); - } - - - private static function ensureExtension(): void - { - if (!extension_loaded('gd')) { - throw new Nette\NotSupportedException('PHP extension GD is not loaded.'); - } - } -} diff --git a/docker/streamline-src/vendor/nette/utils/src/Utils/Iterables.php b/docker/streamline-src/vendor/nette/utils/src/Utils/Iterables.php deleted file mode 100644 index cc751520..00000000 --- a/docker/streamline-src/vendor/nette/utils/src/Utils/Iterables.php +++ /dev/null @@ -1,238 +0,0 @@ - $v) { - if ($k === $key) { - return true; - } - } - return false; - } - - - /** - * Returns the first item (matching the specified predicate if given). If there is no such item, it returns result of invoking $else or null. - * @template K - * @template V - * @param iterable $iterable - * @param ?callable(V, K, iterable): bool $predicate - * @return ?V - */ - public static function first(iterable $iterable, ?callable $predicate = null, ?callable $else = null): mixed - { - foreach ($iterable as $k => $v) { - if (!$predicate || $predicate($v, $k, $iterable)) { - return $v; - } - } - return $else ? $else() : null; - } - - - /** - * Returns the key of first item (matching the specified predicate if given). If there is no such item, it returns result of invoking $else or null. - * @template K - * @template V - * @param iterable $iterable - * @param ?callable(V, K, iterable): bool $predicate - * @return ?K - */ - public static function firstKey(iterable $iterable, ?callable $predicate = null, ?callable $else = null): mixed - { - foreach ($iterable as $k => $v) { - if (!$predicate || $predicate($v, $k, $iterable)) { - return $k; - } - } - return $else ? $else() : null; - } - - - /** - * Tests whether at least one element in the iterator passes the test implemented by the provided function. - * @template K - * @template V - * @param iterable $iterable - * @param callable(V, K, iterable): bool $predicate - */ - public static function some(iterable $iterable, callable $predicate): bool - { - foreach ($iterable as $k => $v) { - if ($predicate($v, $k, $iterable)) { - return true; - } - } - return false; - } - - - /** - * Tests whether all elements in the iterator pass the test implemented by the provided function. - * @template K - * @template V - * @param iterable $iterable - * @param callable(V, K, iterable): bool $predicate - */ - public static function every(iterable $iterable, callable $predicate): bool - { - foreach ($iterable as $k => $v) { - if (!$predicate($v, $k, $iterable)) { - return false; - } - } - return true; - } - - - /** - * Iterator that filters elements according to a given $predicate. Maintains original keys. - * @template K - * @template V - * @param iterable $iterable - * @param callable(V, K, iterable): bool $predicate - * @return \Generator - */ - public static function filter(iterable $iterable, callable $predicate): \Generator - { - foreach ($iterable as $k => $v) { - if ($predicate($v, $k, $iterable)) { - yield $k => $v; - } - } - } - - - /** - * Iterator that transforms values by calling $transformer. Maintains original keys. - * @template K - * @template V - * @template R - * @param iterable $iterable - * @param callable(V, K, iterable): R $transformer - * @return \Generator - */ - public static function map(iterable $iterable, callable $transformer): \Generator - { - foreach ($iterable as $k => $v) { - yield $k => $transformer($v, $k, $iterable); - } - } - - - /** - * Iterator that transforms keys and values by calling $transformer. If it returns null, the element is skipped. - * @template K - * @template V - * @template ResV - * @template ResK - * @param iterable $iterable - * @param callable(V, K, iterable): ?array{ResV, ResK} $transformer - * @return \Generator - */ - public static function mapWithKeys(iterable $iterable, callable $transformer): \Generator - { - foreach ($iterable as $k => $v) { - $pair = $transformer($v, $k, $iterable); - if ($pair) { - yield $pair[0] => $pair[1]; - } - } - } - - - /** - * Wraps around iterator and caches its keys and values during iteration. - * This allows the data to be re-iterated multiple times. - * @template K - * @template V - * @param iterable $iterable - * @return \IteratorAggregate - */ - public static function memoize(iterable $iterable): iterable - { - return new class (self::toIterator($iterable)) implements \IteratorAggregate { - public function __construct( - private \Iterator $iterator, - private array $cache = [], - ) { - } - - - public function getIterator(): \Generator - { - if (!$this->cache) { - $this->iterator->rewind(); - } - $i = 0; - while (true) { - if (isset($this->cache[$i])) { - [$k, $v] = $this->cache[$i]; - } elseif ($this->iterator->valid()) { - $k = $this->iterator->key(); - $v = $this->iterator->current(); - $this->iterator->next(); - $this->cache[$i] = [$k, $v]; - } else { - break; - } - yield $k => $v; - $i++; - } - } - }; - } - - - /** - * Creates an iterator from anything that is iterable. - * @template K - * @template V - * @param iterable $iterable - * @return \Iterator - */ - public static function toIterator(iterable $iterable): \Iterator - { - return match (true) { - $iterable instanceof \Iterator => $iterable, - $iterable instanceof \IteratorAggregate => self::toIterator($iterable->getIterator()), - is_array($iterable) => new \ArrayIterator($iterable), - }; - } -} diff --git a/docker/streamline-src/vendor/nette/utils/src/Utils/Reflection.php b/docker/streamline-src/vendor/nette/utils/src/Utils/Reflection.php deleted file mode 100644 index 87889be3..00000000 --- a/docker/streamline-src/vendor/nette/utils/src/Utils/Reflection.php +++ /dev/null @@ -1,322 +0,0 @@ -isDefaultValueConstant()) { - $const = $orig = $param->getDefaultValueConstantName(); - $pair = explode('::', $const); - if (isset($pair[1])) { - $pair[0] = Type::resolve($pair[0], $param); - try { - $rcc = new \ReflectionClassConstant($pair[0], $pair[1]); - } catch (\ReflectionException $e) { - $name = self::toString($param); - throw new \ReflectionException("Unable to resolve constant $orig used as default value of $name.", 0, $e); - } - - return $rcc->getValue(); - - } elseif (!defined($const)) { - $const = substr((string) strrchr($const, '\\'), 1); - if (!defined($const)) { - $name = self::toString($param); - throw new \ReflectionException("Unable to resolve constant $orig used as default value of $name."); - } - } - - return constant($const); - } - - return $param->getDefaultValue(); - } - - - /** - * Returns a reflection of a class or trait that contains a declaration of given property. Property can also be declared in the trait. - */ - public static function getPropertyDeclaringClass(\ReflectionProperty $prop): \ReflectionClass - { - foreach ($prop->getDeclaringClass()->getTraits() as $trait) { - if ($trait->hasProperty($prop->name) - // doc-comment guessing as workaround for insufficient PHP reflection - && $trait->getProperty($prop->name)->getDocComment() === $prop->getDocComment() - ) { - return self::getPropertyDeclaringClass($trait->getProperty($prop->name)); - } - } - - return $prop->getDeclaringClass(); - } - - - /** - * Returns a reflection of a method that contains a declaration of $method. - * Usually, each method is its own declaration, but the body of the method can also be in the trait and under a different name. - */ - public static function getMethodDeclaringMethod(\ReflectionMethod $method): \ReflectionMethod - { - // file & line guessing as workaround for insufficient PHP reflection - $decl = $method->getDeclaringClass(); - if ($decl->getFileName() === $method->getFileName() - && $decl->getStartLine() <= $method->getStartLine() - && $decl->getEndLine() >= $method->getEndLine() - ) { - return $method; - } - - $hash = [$method->getFileName(), $method->getStartLine(), $method->getEndLine()]; - if (($alias = $decl->getTraitAliases()[$method->name] ?? null) - && ($m = new \ReflectionMethod(...explode('::', $alias, 2))) - && $hash === [$m->getFileName(), $m->getStartLine(), $m->getEndLine()] - ) { - return self::getMethodDeclaringMethod($m); - } - - foreach ($decl->getTraits() as $trait) { - if ($trait->hasMethod($method->name) - && ($m = $trait->getMethod($method->name)) - && $hash === [$m->getFileName(), $m->getStartLine(), $m->getEndLine()] - ) { - return self::getMethodDeclaringMethod($m); - } - } - - return $method; - } - - - /** - * Finds out if reflection has access to PHPdoc comments. Comments may not be available due to the opcode cache. - */ - public static function areCommentsAvailable(): bool - { - static $res; - return $res ?? $res = (bool) (new \ReflectionMethod(self::class, __FUNCTION__))->getDocComment(); - } - - - public static function toString(\Reflector $ref): string - { - if ($ref instanceof \ReflectionClass) { - return $ref->name; - } elseif ($ref instanceof \ReflectionMethod) { - return $ref->getDeclaringClass()->name . '::' . $ref->name . '()'; - } elseif ($ref instanceof \ReflectionFunction) { - return PHP_VERSION_ID >= 80200 && $ref->isAnonymous() - ? '{closure}()' - : $ref->name . '()'; - } elseif ($ref instanceof \ReflectionProperty) { - return self::getPropertyDeclaringClass($ref)->name . '::$' . $ref->name; - } elseif ($ref instanceof \ReflectionParameter) { - return '$' . $ref->name . ' in ' . self::toString($ref->getDeclaringFunction()); - } else { - throw new Nette\InvalidArgumentException; - } - } - - - /** - * Expands the name of the class to full name in the given context of given class. - * Thus, it returns how the PHP parser would understand $name if it were written in the body of the class $context. - * @throws Nette\InvalidArgumentException - */ - public static function expandClassName(string $name, \ReflectionClass $context): string - { - $lower = strtolower($name); - if (empty($name)) { - throw new Nette\InvalidArgumentException('Class name must not be empty.'); - - } elseif (Validators::isBuiltinType($lower)) { - return $lower; - - } elseif ($lower === 'self' || $lower === 'static') { - return $context->name; - - } elseif ($lower === 'parent') { - return $context->getParentClass() - ? $context->getParentClass()->name - : 'parent'; - - } elseif ($name[0] === '\\') { // fully qualified name - return ltrim($name, '\\'); - } - - $uses = self::getUseStatements($context); - $parts = explode('\\', $name, 2); - if (isset($uses[$parts[0]])) { - $parts[0] = $uses[$parts[0]]; - return implode('\\', $parts); - - } elseif ($context->inNamespace()) { - return $context->getNamespaceName() . '\\' . $name; - - } else { - return $name; - } - } - - - /** @return array of [alias => class] */ - public static function getUseStatements(\ReflectionClass $class): array - { - if ($class->isAnonymous()) { - throw new Nette\NotImplementedException('Anonymous classes are not supported.'); - } - - static $cache = []; - if (!isset($cache[$name = $class->name])) { - if ($class->isInternal()) { - $cache[$name] = []; - } else { - $code = file_get_contents($class->getFileName()); - $cache = self::parseUseStatements($code, $name) + $cache; - } - } - - return $cache[$name]; - } - - - /** - * Parses PHP code to [class => [alias => class, ...]] - */ - private static function parseUseStatements(string $code, ?string $forClass = null): array - { - try { - $tokens = \PhpToken::tokenize($code, TOKEN_PARSE); - } catch (\ParseError $e) { - trigger_error($e->getMessage(), E_USER_NOTICE); - $tokens = []; - } - - $namespace = $class = null; - $classLevel = $level = 0; - $res = $uses = []; - - $nameTokens = [T_STRING, T_NS_SEPARATOR, T_NAME_QUALIFIED, T_NAME_FULLY_QUALIFIED]; - - while ($token = current($tokens)) { - next($tokens); - switch ($token->id) { - case T_NAMESPACE: - $namespace = ltrim(self::fetch($tokens, $nameTokens) . '\\', '\\'); - $uses = []; - break; - - case T_CLASS: - case T_INTERFACE: - case T_TRAIT: - case PHP_VERSION_ID < 80100 - ? T_CLASS - : T_ENUM: - if ($name = self::fetch($tokens, T_STRING)) { - $class = $namespace . $name; - $classLevel = $level + 1; - $res[$class] = $uses; - if ($class === $forClass) { - return $res; - } - } - - break; - - case T_USE: - while (!$class && ($name = self::fetch($tokens, $nameTokens))) { - $name = ltrim($name, '\\'); - if (self::fetch($tokens, '{')) { - while ($suffix = self::fetch($tokens, $nameTokens)) { - if (self::fetch($tokens, T_AS)) { - $uses[self::fetch($tokens, T_STRING)] = $name . $suffix; - } else { - $tmp = explode('\\', $suffix); - $uses[end($tmp)] = $name . $suffix; - } - - if (!self::fetch($tokens, ',')) { - break; - } - } - } elseif (self::fetch($tokens, T_AS)) { - $uses[self::fetch($tokens, T_STRING)] = $name; - - } else { - $tmp = explode('\\', $name); - $uses[end($tmp)] = $name; - } - - if (!self::fetch($tokens, ',')) { - break; - } - } - - break; - - case T_CURLY_OPEN: - case T_DOLLAR_OPEN_CURLY_BRACES: - case ord('{'): - $level++; - break; - - case ord('}'): - if ($level === $classLevel) { - $class = $classLevel = 0; - } - - $level--; - } - } - - return $res; - } - - - private static function fetch(array &$tokens, string|int|array $take): ?string - { - $res = null; - while ($token = current($tokens)) { - if ($token->is($take)) { - $res .= $token->text; - } elseif (!$token->is([T_DOC_COMMENT, T_WHITESPACE, T_COMMENT])) { - break; - } - - next($tokens); - } - - return $res; - } -} diff --git a/docker/streamline-src/vendor/nette/utils/src/Utils/Strings.php b/docker/streamline-src/vendor/nette/utils/src/Utils/Strings.php deleted file mode 100644 index c0735659..00000000 --- a/docker/streamline-src/vendor/nette/utils/src/Utils/Strings.php +++ /dev/null @@ -1,728 +0,0 @@ -= 0xD800 && $code <= 0xDFFF) || $code > 0x10FFFF) { - throw new Nette\InvalidArgumentException('Code point must be in range 0x0 to 0xD7FF or 0xE000 to 0x10FFFF.'); - } elseif (!extension_loaded('iconv')) { - throw new Nette\NotSupportedException(__METHOD__ . '() requires ICONV extension that is not loaded.'); - } - - return iconv('UTF-32BE', 'UTF-8//IGNORE', pack('N', $code)); - } - - - /** - * Returns a code point of specific character in UTF-8 (number in range 0x0000..D7FF or 0xE000..10FFFF). - */ - public static function ord(string $c): int - { - if (!extension_loaded('iconv')) { - throw new Nette\NotSupportedException(__METHOD__ . '() requires ICONV extension that is not loaded.'); - } - - $tmp = iconv('UTF-8', 'UTF-32BE//IGNORE', $c); - if (!$tmp) { - throw new Nette\InvalidArgumentException('Invalid UTF-8 character "' . ($c === '' ? '' : '\x' . strtoupper(bin2hex($c))) . '".'); - } - - return unpack('N', $tmp)[1]; - } - - - /** - * @deprecated use str_starts_with() - */ - public static function startsWith(string $haystack, string $needle): bool - { - return str_starts_with($haystack, $needle); - } - - - /** - * @deprecated use str_ends_with() - */ - public static function endsWith(string $haystack, string $needle): bool - { - return str_ends_with($haystack, $needle); - } - - - /** - * @deprecated use str_contains() - */ - public static function contains(string $haystack, string $needle): bool - { - return str_contains($haystack, $needle); - } - - - /** - * Returns a part of UTF-8 string specified by starting position and length. If start is negative, - * the returned string will start at the start'th character from the end of string. - */ - public static function substring(string $s, int $start, ?int $length = null): string - { - if (function_exists('mb_substr')) { - return mb_substr($s, $start, $length, 'UTF-8'); // MB is much faster - } elseif (!extension_loaded('iconv')) { - throw new Nette\NotSupportedException(__METHOD__ . '() requires extension ICONV or MBSTRING, neither is loaded.'); - } elseif ($length === null) { - $length = self::length($s); - } elseif ($start < 0 && $length < 0) { - $start += self::length($s); // unifies iconv_substr behavior with mb_substr - } - - return iconv_substr($s, $start, $length, 'UTF-8'); - } - - - /** - * Removes control characters, normalizes line breaks to `\n`, removes leading and trailing blank lines, - * trims end spaces on lines, normalizes UTF-8 to the normal form of NFC. - */ - public static function normalize(string $s): string - { - // convert to compressed normal form (NFC) - if (class_exists('Normalizer', false) && ($n = \Normalizer::normalize($s, \Normalizer::FORM_C)) !== false) { - $s = $n; - } - - $s = self::unixNewLines($s); - - // remove control characters; leave \t + \n - $s = self::pcre('preg_replace', ['#[\x00-\x08\x0B-\x1F\x7F-\x9F]+#u', '', $s]); - - // right trim - $s = self::pcre('preg_replace', ['#[\t ]+$#m', '', $s]); - - // leading and trailing blank lines - $s = trim($s, "\n"); - - return $s; - } - - - /** @deprecated use Strings::unixNewLines() */ - public static function normalizeNewLines(string $s): string - { - return self::unixNewLines($s); - } - - - /** - * Converts line endings to \n used on Unix-like systems. - * Line endings are: \n, \r, \r\n, U+2028 line separator, U+2029 paragraph separator. - */ - public static function unixNewLines(string $s): string - { - return preg_replace("~\r\n?|\u{2028}|\u{2029}~", "\n", $s); - } - - - /** - * Converts line endings to platform-specific, i.e. \r\n on Windows and \n elsewhere. - * Line endings are: \n, \r, \r\n, U+2028 line separator, U+2029 paragraph separator. - */ - public static function platformNewLines(string $s): string - { - return preg_replace("~\r\n?|\n|\u{2028}|\u{2029}~", PHP_EOL, $s); - } - - - /** - * Converts UTF-8 string to ASCII, ie removes diacritics etc. - */ - public static function toAscii(string $s): string - { - $iconv = defined('ICONV_IMPL') ? trim(ICONV_IMPL, '"\'') : null; - static $transliterator = null; - if ($transliterator === null) { - if (class_exists('Transliterator', false)) { - $transliterator = \Transliterator::create('Any-Latin; Latin-ASCII'); - } else { - trigger_error(__METHOD__ . "(): it is recommended to enable PHP extensions 'intl'.", E_USER_NOTICE); - $transliterator = false; - } - } - - // remove control characters and check UTF-8 validity - $s = self::pcre('preg_replace', ['#[^\x09\x0A\x0D\x20-\x7E\xA0-\x{2FF}\x{370}-\x{10FFFF}]#u', '', $s]); - - // transliteration (by Transliterator and iconv) is not optimal, replace some characters directly - $s = strtr($s, ["\u{201E}" => '"', "\u{201C}" => '"', "\u{201D}" => '"', "\u{201A}" => "'", "\u{2018}" => "'", "\u{2019}" => "'", "\u{B0}" => '^', "\u{42F}" => 'Ya', "\u{44F}" => 'ya', "\u{42E}" => 'Yu', "\u{44E}" => 'yu', "\u{c4}" => 'Ae', "\u{d6}" => 'Oe', "\u{dc}" => 'Ue', "\u{1e9e}" => 'Ss', "\u{e4}" => 'ae', "\u{f6}" => 'oe', "\u{fc}" => 'ue', "\u{df}" => 'ss']); // „ “ ” ‚ ‘ ’ ° Я я Ю ю Ä Ö Ü ẞ ä ö ü ß - if ($iconv !== 'libiconv') { - $s = strtr($s, ["\u{AE}" => '(R)', "\u{A9}" => '(c)', "\u{2026}" => '...', "\u{AB}" => '<<', "\u{BB}" => '>>', "\u{A3}" => 'lb', "\u{A5}" => 'yen', "\u{B2}" => '^2', "\u{B3}" => '^3', "\u{B5}" => 'u', "\u{B9}" => '^1', "\u{BA}" => 'o', "\u{BF}" => '?', "\u{2CA}" => "'", "\u{2CD}" => '_', "\u{2DD}" => '"', "\u{1FEF}" => '', "\u{20AC}" => 'EUR', "\u{2122}" => 'TM', "\u{212E}" => 'e', "\u{2190}" => '<-', "\u{2191}" => '^', "\u{2192}" => '->', "\u{2193}" => 'V', "\u{2194}" => '<->']); // ® © … « » £ ¥ ² ³ µ ¹ º ¿ ˊ ˍ ˝ ` € ™ ℮ ← ↑ → ↓ ↔ - } - - if ($transliterator) { - $s = $transliterator->transliterate($s); - // use iconv because The transliterator leaves some characters out of ASCII, eg → ʾ - if ($iconv === 'glibc') { - $s = strtr($s, '?', "\x01"); // temporarily hide ? to distinguish them from the garbage that iconv creates - $s = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $s); - $s = str_replace(['?', "\x01"], ['', '?'], $s); // remove garbage and restore ? characters - } elseif ($iconv === 'libiconv') { - $s = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $s); - } else { // null or 'unknown' (#216) - $s = self::pcre('preg_replace', ['#[^\x00-\x7F]++#', '', $s]); // remove non-ascii chars - } - } elseif ($iconv === 'glibc' || $iconv === 'libiconv') { - // temporarily hide these characters to distinguish them from the garbage that iconv creates - $s = strtr($s, '`\'"^~?', "\x01\x02\x03\x04\x05\x06"); - if ($iconv === 'glibc') { - // glibc implementation is very limited. transliterate into Windows-1250 and then into ASCII, so most Eastern European characters are preserved - $s = iconv('UTF-8', 'WINDOWS-1250//TRANSLIT//IGNORE', $s); - $s = strtr( - $s, - "\xa5\xa3\xbc\x8c\xa7\x8a\xaa\x8d\x8f\x8e\xaf\xb9\xb3\xbe\x9c\x9a\xba\x9d\x9f\x9e\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf8\xf9\xfa\xfb\xfc\xfd\xfe\x96\xa0\x8b\x97\x9b\xa6\xad\xb7", - 'ALLSSSSTZZZallssstzzzRAAAALCCCEEEEIIDDNNOOOOxRUUUUYTsraaaalccceeeeiiddnnooooruuuuyt- <->|-.', - ); - $s = self::pcre('preg_replace', ['#[^\x00-\x7F]++#', '', $s]); - } else { - $s = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $s); - } - - // remove garbage that iconv creates during transliteration (eg Ý -> Y') - $s = str_replace(['`', "'", '"', '^', '~', '?'], '', $s); - // restore temporarily hidden characters - $s = strtr($s, "\x01\x02\x03\x04\x05\x06", '`\'"^~?'); - } else { - $s = self::pcre('preg_replace', ['#[^\x00-\x7F]++#', '', $s]); // remove non-ascii chars - } - - return $s; - } - - - /** - * Modifies the UTF-8 string to the form used in the URL, ie removes diacritics and replaces all characters - * except letters of the English alphabet and numbers with a hyphens. - */ - public static function webalize(string $s, ?string $charlist = null, bool $lower = true): string - { - $s = self::toAscii($s); - if ($lower) { - $s = strtolower($s); - } - - $s = self::pcre('preg_replace', ['#[^a-z0-9' . ($charlist !== null ? preg_quote($charlist, '#') : '') . ']+#i', '-', $s]); - $s = trim($s, '-'); - return $s; - } - - - /** - * Truncates a UTF-8 string to given maximal length, while trying not to split whole words. Only if the string is truncated, - * an ellipsis (or something else set with third argument) is appended to the string. - */ - public static function truncate(string $s, int $maxLen, string $append = "\u{2026}"): string - { - if (self::length($s) > $maxLen) { - $maxLen -= self::length($append); - if ($maxLen < 1) { - return $append; - - } elseif ($matches = self::match($s, '#^.{1,' . $maxLen . '}(?=[\s\x00-/:-@\[-`{-~])#us')) { - return $matches[0] . $append; - - } else { - return self::substring($s, 0, $maxLen) . $append; - } - } - - return $s; - } - - - /** - * Indents a multiline text from the left. Second argument sets how many indentation chars should be used, - * while the indent itself is the third argument (*tab* by default). - */ - public static function indent(string $s, int $level = 1, string $chars = "\t"): string - { - if ($level > 0) { - $s = self::replace($s, '#(?:^|[\r\n]+)(?=[^\r\n])#', '$0' . str_repeat($chars, $level)); - } - - return $s; - } - - - /** - * Converts all characters of UTF-8 string to lower case. - */ - public static function lower(string $s): string - { - return mb_strtolower($s, 'UTF-8'); - } - - - /** - * Converts the first character of a UTF-8 string to lower case and leaves the other characters unchanged. - */ - public static function firstLower(string $s): string - { - return self::lower(self::substring($s, 0, 1)) . self::substring($s, 1); - } - - - /** - * Converts all characters of a UTF-8 string to upper case. - */ - public static function upper(string $s): string - { - return mb_strtoupper($s, 'UTF-8'); - } - - - /** - * Converts the first character of a UTF-8 string to upper case and leaves the other characters unchanged. - */ - public static function firstUpper(string $s): string - { - return self::upper(self::substring($s, 0, 1)) . self::substring($s, 1); - } - - - /** - * Converts the first character of every word of a UTF-8 string to upper case and the others to lower case. - */ - public static function capitalize(string $s): string - { - return mb_convert_case($s, MB_CASE_TITLE, 'UTF-8'); - } - - - /** - * Compares two UTF-8 strings or their parts, without taking character case into account. If length is null, whole strings are compared, - * if it is negative, the corresponding number of characters from the end of the strings is compared, - * otherwise the appropriate number of characters from the beginning is compared. - */ - public static function compare(string $left, string $right, ?int $length = null): bool - { - if (class_exists('Normalizer', false)) { - $left = \Normalizer::normalize($left, \Normalizer::FORM_D); // form NFD is faster - $right = \Normalizer::normalize($right, \Normalizer::FORM_D); // form NFD is faster - } - - if ($length < 0) { - $left = self::substring($left, $length, -$length); - $right = self::substring($right, $length, -$length); - } elseif ($length !== null) { - $left = self::substring($left, 0, $length); - $right = self::substring($right, 0, $length); - } - - return self::lower($left) === self::lower($right); - } - - - /** - * Finds the common prefix of strings or returns empty string if the prefix was not found. - * @param string[] $strings - */ - public static function findPrefix(array $strings): string - { - $first = array_shift($strings); - for ($i = 0; $i < strlen($first); $i++) { - foreach ($strings as $s) { - if (!isset($s[$i]) || $first[$i] !== $s[$i]) { - while ($i && $first[$i - 1] >= "\x80" && $first[$i] >= "\x80" && $first[$i] < "\xC0") { - $i--; - } - - return substr($first, 0, $i); - } - } - } - - return $first; - } - - - /** - * Returns number of characters (not bytes) in UTF-8 string. - * That is the number of Unicode code points which may differ from the number of graphemes. - */ - public static function length(string $s): int - { - return match (true) { - extension_loaded('mbstring') => mb_strlen($s, 'UTF-8'), - extension_loaded('iconv') => iconv_strlen($s, 'UTF-8'), - default => strlen(@utf8_decode($s)), // deprecated - }; - } - - - /** - * Removes all left and right side spaces (or the characters passed as second argument) from a UTF-8 encoded string. - */ - public static function trim(string $s, string $charlist = self::TrimCharacters): string - { - $charlist = preg_quote($charlist, '#'); - return self::replace($s, '#^[' . $charlist . ']+|[' . $charlist . ']+$#Du', ''); - } - - - /** - * Pads a UTF-8 string to given length by prepending the $pad string to the beginning. - * @param non-empty-string $pad - */ - public static function padLeft(string $s, int $length, string $pad = ' '): string - { - $length = max(0, $length - self::length($s)); - $padLen = self::length($pad); - return str_repeat($pad, (int) ($length / $padLen)) . self::substring($pad, 0, $length % $padLen) . $s; - } - - - /** - * Pads UTF-8 string to given length by appending the $pad string to the end. - * @param non-empty-string $pad - */ - public static function padRight(string $s, int $length, string $pad = ' '): string - { - $length = max(0, $length - self::length($s)); - $padLen = self::length($pad); - return $s . str_repeat($pad, (int) ($length / $padLen)) . self::substring($pad, 0, $length % $padLen); - } - - - /** - * Reverses UTF-8 string. - */ - public static function reverse(string $s): string - { - if (!extension_loaded('iconv')) { - throw new Nette\NotSupportedException(__METHOD__ . '() requires ICONV extension that is not loaded.'); - } - - return iconv('UTF-32LE', 'UTF-8', strrev(iconv('UTF-8', 'UTF-32BE', $s))); - } - - - /** - * Returns part of $haystack before $nth occurence of $needle or returns null if the needle was not found. - * Negative value means searching from the end. - */ - public static function before(string $haystack, string $needle, int $nth = 1): ?string - { - $pos = self::pos($haystack, $needle, $nth); - return $pos === null - ? null - : substr($haystack, 0, $pos); - } - - - /** - * Returns part of $haystack after $nth occurence of $needle or returns null if the needle was not found. - * Negative value means searching from the end. - */ - public static function after(string $haystack, string $needle, int $nth = 1): ?string - { - $pos = self::pos($haystack, $needle, $nth); - return $pos === null - ? null - : substr($haystack, $pos + strlen($needle)); - } - - - /** - * Returns position in characters of $nth occurence of $needle in $haystack or null if the $needle was not found. - * Negative value of `$nth` means searching from the end. - */ - public static function indexOf(string $haystack, string $needle, int $nth = 1): ?int - { - $pos = self::pos($haystack, $needle, $nth); - return $pos === null - ? null - : self::length(substr($haystack, 0, $pos)); - } - - - /** - * Returns position in characters of $nth occurence of $needle in $haystack or null if the needle was not found. - */ - private static function pos(string $haystack, string $needle, int $nth = 1): ?int - { - if (!$nth) { - return null; - } elseif ($nth > 0) { - if ($needle === '') { - return 0; - } - - $pos = 0; - while (($pos = strpos($haystack, $needle, $pos)) !== false && --$nth) { - $pos++; - } - } else { - $len = strlen($haystack); - if ($needle === '') { - return $len; - } elseif ($len === 0) { - return null; - } - - $pos = $len - 1; - while (($pos = strrpos($haystack, $needle, $pos - $len)) !== false && ++$nth) { - $pos--; - } - } - - return Helpers::falseToNull($pos); - } - - - /** - * Divides the string into arrays according to the regular expression. Expressions in parentheses will be captured and returned as well. - */ - public static function split( - string $subject, - #[Language('RegExp')] - string $pattern, - bool|int $captureOffset = false, - bool $skipEmpty = false, - int $limit = -1, - bool $utf8 = false, - ): array - { - $flags = is_int($captureOffset) // back compatibility - ? $captureOffset - : ($captureOffset ? PREG_SPLIT_OFFSET_CAPTURE : 0) | ($skipEmpty ? PREG_SPLIT_NO_EMPTY : 0); - - $pattern .= $utf8 ? 'u' : ''; - $m = self::pcre('preg_split', [$pattern, $subject, $limit, $flags | PREG_SPLIT_DELIM_CAPTURE]); - return $utf8 && $captureOffset - ? self::bytesToChars($subject, [$m])[0] - : $m; - - } - - - /** - * Searches the string for the part matching the regular expression and returns - * an array with the found expression and individual subexpressions, or `null`. - */ - public static function match( - string $subject, - #[Language('RegExp')] - string $pattern, - bool|int $captureOffset = false, - int $offset = 0, - bool $unmatchedAsNull = false, - bool $utf8 = false, - ): ?array - { - $flags = is_int($captureOffset) // back compatibility - ? $captureOffset - : ($captureOffset ? PREG_OFFSET_CAPTURE : 0) | ($unmatchedAsNull ? PREG_UNMATCHED_AS_NULL : 0); - - if ($utf8) { - $offset = strlen(self::substring($subject, 0, $offset)); - $pattern .= 'u'; - } - - if ($offset > strlen($subject)) { - return null; - } elseif (!self::pcre('preg_match', [$pattern, $subject, &$m, $flags, $offset])) { - return null; - } elseif ($utf8 && $captureOffset) { - return self::bytesToChars($subject, [$m])[0]; - } else { - return $m; - } - } - - - /** - * Searches the string for all occurrences matching the regular expression and - * returns an array of arrays containing the found expression and each subexpression. - * @return ($lazy is true ? \Generator : array[]) - */ - public static function matchAll( - string $subject, - #[Language('RegExp')] - string $pattern, - bool|int $captureOffset = false, - int $offset = 0, - bool $unmatchedAsNull = false, - bool $patternOrder = false, - bool $utf8 = false, - bool $lazy = false, - ): array|\Generator - { - if ($utf8) { - $offset = strlen(self::substring($subject, 0, $offset)); - $pattern .= 'u'; - } - - if ($lazy) { - $flags = PREG_OFFSET_CAPTURE | ($unmatchedAsNull ? PREG_UNMATCHED_AS_NULL : 0); - return (function () use ($utf8, $captureOffset, $flags, $subject, $pattern, $offset) { - $counter = 0; - while ( - $offset <= strlen($subject) - ($counter ? 1 : 0) - && self::pcre('preg_match', [$pattern, $subject, &$m, $flags, $offset]) - ) { - $offset = $m[0][1] + max(1, strlen($m[0][0])); - if (!$captureOffset) { - $m = array_map(fn($item) => $item[0], $m); - } elseif ($utf8) { - $m = self::bytesToChars($subject, [$m])[0]; - } - yield $counter++ => $m; - } - })(); - } - - if ($offset > strlen($subject)) { - return []; - } - - $flags = is_int($captureOffset) // back compatibility - ? $captureOffset - : ($captureOffset ? PREG_OFFSET_CAPTURE : 0) | ($unmatchedAsNull ? PREG_UNMATCHED_AS_NULL : 0) | ($patternOrder ? PREG_PATTERN_ORDER : 0); - - self::pcre('preg_match_all', [ - $pattern, $subject, &$m, - ($flags & PREG_PATTERN_ORDER) ? $flags : ($flags | PREG_SET_ORDER), - $offset, - ]); - return $utf8 && $captureOffset - ? self::bytesToChars($subject, $m) - : $m; - } - - - /** - * Replaces all occurrences matching regular expression $pattern which can be string or array in the form `pattern => replacement`. - */ - public static function replace( - string $subject, - #[Language('RegExp')] - string|array $pattern, - string|callable $replacement = '', - int $limit = -1, - bool $captureOffset = false, - bool $unmatchedAsNull = false, - bool $utf8 = false, - ): string - { - if (is_object($replacement) || is_array($replacement)) { - if (!is_callable($replacement, false, $textual)) { - throw new Nette\InvalidStateException("Callback '$textual' is not callable."); - } - - $flags = ($captureOffset ? PREG_OFFSET_CAPTURE : 0) | ($unmatchedAsNull ? PREG_UNMATCHED_AS_NULL : 0); - if ($utf8) { - $pattern .= 'u'; - if ($captureOffset) { - $replacement = fn($m) => $replacement(self::bytesToChars($subject, [$m])[0]); - } - } - - return self::pcre('preg_replace_callback', [$pattern, $replacement, $subject, $limit, 0, $flags]); - - } elseif (is_array($pattern) && is_string(key($pattern))) { - $replacement = array_values($pattern); - $pattern = array_keys($pattern); - } - - if ($utf8) { - $pattern = array_map(fn($item) => $item . 'u', (array) $pattern); - } - - return self::pcre('preg_replace', [$pattern, $replacement, $subject, $limit]); - } - - - private static function bytesToChars(string $s, array $groups): array - { - $lastBytes = $lastChars = 0; - foreach ($groups as &$matches) { - foreach ($matches as &$match) { - if ($match[1] > $lastBytes) { - $lastChars += self::length(substr($s, $lastBytes, $match[1] - $lastBytes)); - } elseif ($match[1] < $lastBytes) { - $lastChars -= self::length(substr($s, $match[1], $lastBytes - $match[1])); - } - - $lastBytes = $match[1]; - $match[1] = $lastChars; - } - } - - return $groups; - } - - - /** @internal */ - public static function pcre(string $func, array $args) - { - $res = Callback::invokeSafe($func, $args, function (string $message) use ($args): void { - // compile-time error, not detectable by preg_last_error - throw new RegexpException($message . ' in pattern: ' . implode(' or ', (array) $args[0])); - }); - - if (($code = preg_last_error()) // run-time error, but preg_last_error & return code are liars - && ($res === null || !in_array($func, ['preg_filter', 'preg_replace_callback', 'preg_replace'], true)) - ) { - throw new RegexpException(preg_last_error_msg() - . ' (pattern: ' . implode(' or ', (array) $args[0]) . ')', $code); - } - - return $res; - } -} diff --git a/docker/streamline-src/vendor/nikic/php-parser/README.md b/docker/streamline-src/vendor/nikic/php-parser/README.md deleted file mode 100644 index edb3ed32..00000000 --- a/docker/streamline-src/vendor/nikic/php-parser/README.md +++ /dev/null @@ -1,233 +0,0 @@ -PHP Parser -========== - -[![Coverage Status](https://coveralls.io/repos/github/nikic/PHP-Parser/badge.svg?branch=master)](https://coveralls.io/github/nikic/PHP-Parser?branch=master) - -This is a PHP parser written in PHP. Its purpose is to simplify static code analysis and -manipulation. - -[**Documentation for version 5.x**][doc_master] (current; for running on PHP >= 7.4; for parsing PHP 7.0 to PHP 8.4, with limited support for parsing PHP 5.x). - -[Documentation for version 4.x][doc_4_x] (supported; for running on PHP >= 7.0; for parsing PHP 5.2 to PHP 8.3). - -Features --------- - -The main features provided by this library are: - - * Parsing PHP 7, and PHP 8 code into an abstract syntax tree (AST). - * Invalid code can be parsed into a partial AST. - * The AST contains accurate location information. - * Dumping the AST in human-readable form. - * Converting an AST back to PHP code. - * Formatting can be preserved for partially changed ASTs. - * Infrastructure to traverse and modify ASTs. - * Resolution of namespaced names. - * Evaluation of constant expressions. - * Builders to simplify AST construction for code generation. - * Converting an AST into JSON and back. - -Quick Start ------------ - -Install the library using [composer](https://getcomposer.org): - - php composer.phar require nikic/php-parser - -Parse some PHP code into an AST and dump the result in human-readable form: - -```php -createForNewestSupportedVersion(); -try { - $ast = $parser->parse($code); -} catch (Error $error) { - echo "Parse error: {$error->getMessage()}\n"; - return; -} - -$dumper = new NodeDumper; -echo $dumper->dump($ast) . "\n"; -``` - -This dumps an AST looking something like this: - -``` -array( - 0: Stmt_Function( - attrGroups: array( - ) - byRef: false - name: Identifier( - name: test - ) - params: array( - 0: Param( - attrGroups: array( - ) - flags: 0 - type: null - byRef: false - variadic: false - var: Expr_Variable( - name: foo - ) - default: null - ) - ) - returnType: null - stmts: array( - 0: Stmt_Expression( - expr: Expr_FuncCall( - name: Name( - name: var_dump - ) - args: array( - 0: Arg( - name: null - value: Expr_Variable( - name: foo - ) - byRef: false - unpack: false - ) - ) - ) - ) - ) - ) -) -``` - -Let's traverse the AST and perform some kind of modification. For example, drop all function bodies: - -```php -use PhpParser\Node; -use PhpParser\Node\Stmt\Function_; -use PhpParser\NodeTraverser; -use PhpParser\NodeVisitorAbstract; - -$traverser = new NodeTraverser(); -$traverser->addVisitor(new class extends NodeVisitorAbstract { - public function enterNode(Node $node) { - if ($node instanceof Function_) { - // Clean out the function body - $node->stmts = []; - } - } -}); - -$ast = $traverser->traverse($ast); -echo $dumper->dump($ast) . "\n"; -``` - -This gives us an AST where the `Function_::$stmts` are empty: - -``` -array( - 0: Stmt_Function( - attrGroups: array( - ) - byRef: false - name: Identifier( - name: test - ) - params: array( - 0: Param( - attrGroups: array( - ) - type: null - byRef: false - variadic: false - var: Expr_Variable( - name: foo - ) - default: null - ) - ) - returnType: null - stmts: array( - ) - ) -) -``` - -Finally, we can convert the new AST back to PHP code: - -```php -use PhpParser\PrettyPrinter; - -$prettyPrinter = new PrettyPrinter\Standard; -echo $prettyPrinter->prettyPrintFile($ast); -``` - -This gives us our original code, minus the `var_dump()` call inside the function: - -```php -=7.4", - "ext-tokenizer": "*", - "ext-json": "*", - "ext-ctype": "*" - }, - "require-dev": { - "phpunit/phpunit": "^9.0", - "ircmaxell/php-yacc": "^0.0.7" - }, - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "autoload-dev": { - "psr-4": { - "PhpParser\\": "test/PhpParser/" - } - }, - "bin": [ - "bin/php-parse" - ] -} diff --git a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php b/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php deleted file mode 100644 index 138fa638..00000000 --- a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php +++ /dev/null @@ -1,150 +0,0 @@ - */ - protected array $attributes = []; - /** @var list */ - protected array $constants = []; - - /** @var list */ - protected array $attributeGroups = []; - /** @var Identifier|Node\Name|Node\ComplexType|null */ - protected ?Node $type = null; - - /** - * Creates a class constant builder - * - * @param string|Identifier $name Name - * @param Node\Expr|bool|null|int|float|string|array|\UnitEnum $value Value - */ - public function __construct($name, $value) { - $this->constants = [new Const_($name, BuilderHelpers::normalizeValue($value))]; - } - - /** - * Add another constant to const group - * - * @param string|Identifier $name Name - * @param Node\Expr|bool|null|int|float|string|array|\UnitEnum $value Value - * - * @return $this The builder instance (for fluid interface) - */ - public function addConst($name, $value) { - $this->constants[] = new Const_($name, BuilderHelpers::normalizeValue($value)); - - return $this; - } - - /** - * Makes the constant public. - * - * @return $this The builder instance (for fluid interface) - */ - public function makePublic() { - $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PUBLIC); - - return $this; - } - - /** - * Makes the constant protected. - * - * @return $this The builder instance (for fluid interface) - */ - public function makeProtected() { - $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PROTECTED); - - return $this; - } - - /** - * Makes the constant private. - * - * @return $this The builder instance (for fluid interface) - */ - public function makePrivate() { - $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PRIVATE); - - return $this; - } - - /** - * Makes the constant final. - * - * @return $this The builder instance (for fluid interface) - */ - public function makeFinal() { - $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::FINAL); - - return $this; - } - - /** - * Sets doc comment for the constant. - * - * @param PhpParser\Comment\Doc|string $docComment Doc comment to set - * - * @return $this The builder instance (for fluid interface) - */ - public function setDocComment($docComment) { - $this->attributes = [ - 'comments' => [BuilderHelpers::normalizeDocComment($docComment)] - ]; - - return $this; - } - - /** - * Adds an attribute group. - * - * @param Node\Attribute|Node\AttributeGroup $attribute - * - * @return $this The builder instance (for fluid interface) - */ - public function addAttribute($attribute) { - $this->attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute); - - return $this; - } - - /** - * Sets the constant type. - * - * @param string|Node\Name|Identifier|Node\ComplexType $type - * - * @return $this - */ - public function setType($type) { - $this->type = BuilderHelpers::normalizeType($type); - - return $this; - } - - /** - * Returns the built class node. - * - * @return Stmt\ClassConst The built constant node - */ - public function getNode(): PhpParser\Node { - return new Stmt\ClassConst( - $this->constants, - $this->flags, - $this->attributes, - $this->attributeGroups, - $this->type - ); - } -} diff --git a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php b/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php deleted file mode 100644 index c766321b..00000000 --- a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php +++ /dev/null @@ -1,86 +0,0 @@ - */ - protected array $attributes = []; - - /** @var list */ - protected array $attributeGroups = []; - - /** - * Creates an enum case builder. - * - * @param string|Identifier $name Name - */ - public function __construct($name) { - $this->name = $name; - } - - /** - * Sets the value. - * - * @param Node\Expr|string|int $value - * - * @return $this - */ - public function setValue($value) { - $this->value = BuilderHelpers::normalizeValue($value); - - return $this; - } - - /** - * Sets doc comment for the constant. - * - * @param PhpParser\Comment\Doc|string $docComment Doc comment to set - * - * @return $this The builder instance (for fluid interface) - */ - public function setDocComment($docComment) { - $this->attributes = [ - 'comments' => [BuilderHelpers::normalizeDocComment($docComment)] - ]; - - return $this; - } - - /** - * Adds an attribute group. - * - * @param Node\Attribute|Node\AttributeGroup $attribute - * - * @return $this The builder instance (for fluid interface) - */ - public function addAttribute($attribute) { - $this->attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute); - - return $this; - } - - /** - * Returns the built enum case node. - * - * @return Stmt\EnumCase The built constant node - */ - public function getNode(): PhpParser\Node { - return new Stmt\EnumCase( - $this->name, - $this->value, - $this->attributeGroups, - $this->attributes - ); - } -} diff --git a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php b/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php deleted file mode 100644 index 324a32b0..00000000 --- a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php +++ /dev/null @@ -1,171 +0,0 @@ - */ - protected array $attributeGroups = []; - - /** - * Creates a parameter builder. - * - * @param string $name Name of the parameter - */ - public function __construct(string $name) { - $this->name = $name; - } - - /** - * Sets default value for the parameter. - * - * @param mixed $value Default value to use - * - * @return $this The builder instance (for fluid interface) - */ - public function setDefault($value) { - $this->default = BuilderHelpers::normalizeValue($value); - - return $this; - } - - /** - * Sets type for the parameter. - * - * @param string|Node\Name|Node\Identifier|Node\ComplexType $type Parameter type - * - * @return $this The builder instance (for fluid interface) - */ - public function setType($type) { - $this->type = BuilderHelpers::normalizeType($type); - if ($this->type == 'void') { - throw new \LogicException('Parameter type cannot be void'); - } - - return $this; - } - - /** - * Make the parameter accept the value by reference. - * - * @return $this The builder instance (for fluid interface) - */ - public function makeByRef() { - $this->byRef = true; - - return $this; - } - - /** - * Make the parameter variadic - * - * @return $this The builder instance (for fluid interface) - */ - public function makeVariadic() { - $this->variadic = true; - - return $this; - } - - /** - * Makes the (promoted) parameter public. - * - * @return $this The builder instance (for fluid interface) - */ - public function makePublic() { - $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PUBLIC); - - return $this; - } - - /** - * Makes the (promoted) parameter protected. - * - * @return $this The builder instance (for fluid interface) - */ - public function makeProtected() { - $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PROTECTED); - - return $this; - } - - /** - * Makes the (promoted) parameter private. - * - * @return $this The builder instance (for fluid interface) - */ - public function makePrivate() { - $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PRIVATE); - - return $this; - } - - /** - * Makes the (promoted) parameter readonly. - * - * @return $this The builder instance (for fluid interface) - */ - public function makeReadonly() { - $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::READONLY); - - return $this; - } - - /** - * Gives the promoted property private(set) visibility. - * - * @return $this The builder instance (for fluid interface) - */ - public function makePrivateSet() { - $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PRIVATE_SET); - - return $this; - } - - /** - * Gives the promoted property protected(set) visibility. - * - * @return $this The builder instance (for fluid interface) - */ - public function makeProtectedSet() { - $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PROTECTED_SET); - - return $this; - } - - /** - * Adds an attribute group. - * - * @param Node\Attribute|Node\AttributeGroup $attribute - * - * @return $this The builder instance (for fluid interface) - */ - public function addAttribute($attribute) { - $this->attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute); - - return $this; - } - - /** - * Returns the built parameter node. - * - * @return Node\Param The built parameter node - */ - public function getNode(): Node { - return new Node\Param( - new Node\Expr\Variable($this->name), - $this->default, $this->type, $this->byRef, $this->variadic, [], $this->flags, $this->attributeGroups - ); - } -} diff --git a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Builder/Property.php b/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Builder/Property.php deleted file mode 100644 index c80fe481..00000000 --- a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Builder/Property.php +++ /dev/null @@ -1,223 +0,0 @@ - */ - protected array $attributes = []; - /** @var null|Identifier|Name|ComplexType */ - protected ?Node $type = null; - /** @var list */ - protected array $attributeGroups = []; - /** @var list */ - protected array $hooks = []; - - /** - * Creates a property builder. - * - * @param string $name Name of the property - */ - public function __construct(string $name) { - $this->name = $name; - } - - /** - * Makes the property public. - * - * @return $this The builder instance (for fluid interface) - */ - public function makePublic() { - $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PUBLIC); - - return $this; - } - - /** - * Makes the property protected. - * - * @return $this The builder instance (for fluid interface) - */ - public function makeProtected() { - $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PROTECTED); - - return $this; - } - - /** - * Makes the property private. - * - * @return $this The builder instance (for fluid interface) - */ - public function makePrivate() { - $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PRIVATE); - - return $this; - } - - /** - * Makes the property static. - * - * @return $this The builder instance (for fluid interface) - */ - public function makeStatic() { - $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::STATIC); - - return $this; - } - - /** - * Makes the property readonly. - * - * @return $this The builder instance (for fluid interface) - */ - public function makeReadonly() { - $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::READONLY); - - return $this; - } - - /** - * Makes the property abstract. Requires at least one property hook to be specified as well. - * - * @return $this The builder instance (for fluid interface) - */ - public function makeAbstract() { - $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::ABSTRACT); - - return $this; - } - - /** - * Makes the property final. - * - * @return $this The builder instance (for fluid interface) - */ - public function makeFinal() { - $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::FINAL); - - return $this; - } - - /** - * Gives the property private(set) visibility. - * - * @return $this The builder instance (for fluid interface) - */ - public function makePrivateSet() { - $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PRIVATE_SET); - - return $this; - } - - /** - * Gives the property protected(set) visibility. - * - * @return $this The builder instance (for fluid interface) - */ - public function makeProtectedSet() { - $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PROTECTED_SET); - - return $this; - } - - /** - * Sets default value for the property. - * - * @param mixed $value Default value to use - * - * @return $this The builder instance (for fluid interface) - */ - public function setDefault($value) { - $this->default = BuilderHelpers::normalizeValue($value); - - return $this; - } - - /** - * Sets doc comment for the property. - * - * @param PhpParser\Comment\Doc|string $docComment Doc comment to set - * - * @return $this The builder instance (for fluid interface) - */ - public function setDocComment($docComment) { - $this->attributes = [ - 'comments' => [BuilderHelpers::normalizeDocComment($docComment)] - ]; - - return $this; - } - - /** - * Sets the property type for PHP 7.4+. - * - * @param string|Name|Identifier|ComplexType $type - * - * @return $this - */ - public function setType($type) { - $this->type = BuilderHelpers::normalizeType($type); - - return $this; - } - - /** - * Adds an attribute group. - * - * @param Node\Attribute|Node\AttributeGroup $attribute - * - * @return $this The builder instance (for fluid interface) - */ - public function addAttribute($attribute) { - $this->attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute); - - return $this; - } - - /** - * Adds a property hook. - * - * @return $this The builder instance (for fluid interface) - */ - public function addHook(Node\PropertyHook $hook) { - $this->hooks[] = $hook; - - return $this; - } - - /** - * Returns the built class node. - * - * @return Stmt\Property The built property node - */ - public function getNode(): PhpParser\Node { - if ($this->flags & Modifiers::ABSTRACT && !$this->hooks) { - throw new PhpParser\Error('Only hooked properties may be declared abstract'); - } - - return new Stmt\Property( - $this->flags !== 0 ? $this->flags : Modifiers::PUBLIC, - [ - new Node\PropertyItem($this->name, $this->default) - ], - $this->attributes, - $this->type, - $this->attributeGroups, - $this->hooks - ); - } -} diff --git a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php b/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php deleted file mode 100644 index 07642f92..00000000 --- a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php +++ /dev/null @@ -1,375 +0,0 @@ -args($args) - ); - } - - /** - * Creates a namespace builder. - * - * @param null|string|Node\Name $name Name of the namespace - * - * @return Builder\Namespace_ The created namespace builder - */ - public function namespace($name): Builder\Namespace_ { - return new Builder\Namespace_($name); - } - - /** - * Creates a class builder. - * - * @param string $name Name of the class - * - * @return Builder\Class_ The created class builder - */ - public function class(string $name): Builder\Class_ { - return new Builder\Class_($name); - } - - /** - * Creates an interface builder. - * - * @param string $name Name of the interface - * - * @return Builder\Interface_ The created interface builder - */ - public function interface(string $name): Builder\Interface_ { - return new Builder\Interface_($name); - } - - /** - * Creates a trait builder. - * - * @param string $name Name of the trait - * - * @return Builder\Trait_ The created trait builder - */ - public function trait(string $name): Builder\Trait_ { - return new Builder\Trait_($name); - } - - /** - * Creates an enum builder. - * - * @param string $name Name of the enum - * - * @return Builder\Enum_ The created enum builder - */ - public function enum(string $name): Builder\Enum_ { - return new Builder\Enum_($name); - } - - /** - * Creates a trait use builder. - * - * @param Node\Name|string ...$traits Trait names - * - * @return Builder\TraitUse The created trait use builder - */ - public function useTrait(...$traits): Builder\TraitUse { - return new Builder\TraitUse(...$traits); - } - - /** - * Creates a trait use adaptation builder. - * - * @param Node\Name|string|null $trait Trait name - * @param Node\Identifier|string $method Method name - * - * @return Builder\TraitUseAdaptation The created trait use adaptation builder - */ - public function traitUseAdaptation($trait, $method = null): Builder\TraitUseAdaptation { - if ($method === null) { - $method = $trait; - $trait = null; - } - - return new Builder\TraitUseAdaptation($trait, $method); - } - - /** - * Creates a method builder. - * - * @param string $name Name of the method - * - * @return Builder\Method The created method builder - */ - public function method(string $name): Builder\Method { - return new Builder\Method($name); - } - - /** - * Creates a parameter builder. - * - * @param string $name Name of the parameter - * - * @return Builder\Param The created parameter builder - */ - public function param(string $name): Builder\Param { - return new Builder\Param($name); - } - - /** - * Creates a property builder. - * - * @param string $name Name of the property - * - * @return Builder\Property The created property builder - */ - public function property(string $name): Builder\Property { - return new Builder\Property($name); - } - - /** - * Creates a function builder. - * - * @param string $name Name of the function - * - * @return Builder\Function_ The created function builder - */ - public function function(string $name): Builder\Function_ { - return new Builder\Function_($name); - } - - /** - * Creates a namespace/class use builder. - * - * @param Node\Name|string $name Name of the entity (namespace or class) to alias - * - * @return Builder\Use_ The created use builder - */ - public function use($name): Builder\Use_ { - return new Builder\Use_($name, Use_::TYPE_NORMAL); - } - - /** - * Creates a function use builder. - * - * @param Node\Name|string $name Name of the function to alias - * - * @return Builder\Use_ The created use function builder - */ - public function useFunction($name): Builder\Use_ { - return new Builder\Use_($name, Use_::TYPE_FUNCTION); - } - - /** - * Creates a constant use builder. - * - * @param Node\Name|string $name Name of the const to alias - * - * @return Builder\Use_ The created use const builder - */ - public function useConst($name): Builder\Use_ { - return new Builder\Use_($name, Use_::TYPE_CONSTANT); - } - - /** - * Creates a class constant builder. - * - * @param string|Identifier $name Name - * @param Node\Expr|bool|null|int|float|string|array $value Value - * - * @return Builder\ClassConst The created use const builder - */ - public function classConst($name, $value): Builder\ClassConst { - return new Builder\ClassConst($name, $value); - } - - /** - * Creates an enum case builder. - * - * @param string|Identifier $name Name - * - * @return Builder\EnumCase The created use const builder - */ - public function enumCase($name): Builder\EnumCase { - return new Builder\EnumCase($name); - } - - /** - * Creates node a for a literal value. - * - * @param Expr|bool|null|int|float|string|array|\UnitEnum $value $value - */ - public function val($value): Expr { - return BuilderHelpers::normalizeValue($value); - } - - /** - * Creates variable node. - * - * @param string|Expr $name Name - */ - public function var($name): Expr\Variable { - if (!\is_string($name) && !$name instanceof Expr) { - throw new \LogicException('Variable name must be string or Expr'); - } - - return new Expr\Variable($name); - } - - /** - * Normalizes an argument list. - * - * Creates Arg nodes for all arguments and converts literal values to expressions. - * - * @param array $args List of arguments to normalize - * - * @return list - */ - public function args(array $args): array { - $normalizedArgs = []; - foreach ($args as $key => $arg) { - if (!($arg instanceof Arg)) { - $arg = new Arg(BuilderHelpers::normalizeValue($arg)); - } - if (\is_string($key)) { - $arg->name = BuilderHelpers::normalizeIdentifier($key); - } - $normalizedArgs[] = $arg; - } - return $normalizedArgs; - } - - /** - * Creates a function call node. - * - * @param string|Name|Expr $name Function name - * @param array $args Function arguments - */ - public function funcCall($name, array $args = []): Expr\FuncCall { - return new Expr\FuncCall( - BuilderHelpers::normalizeNameOrExpr($name), - $this->args($args) - ); - } - - /** - * Creates a method call node. - * - * @param Expr $var Variable the method is called on - * @param string|Identifier|Expr $name Method name - * @param array $args Method arguments - */ - public function methodCall(Expr $var, $name, array $args = []): Expr\MethodCall { - return new Expr\MethodCall( - $var, - BuilderHelpers::normalizeIdentifierOrExpr($name), - $this->args($args) - ); - } - - /** - * Creates a static method call node. - * - * @param string|Name|Expr $class Class name - * @param string|Identifier|Expr $name Method name - * @param array $args Method arguments - */ - public function staticCall($class, $name, array $args = []): Expr\StaticCall { - return new Expr\StaticCall( - BuilderHelpers::normalizeNameOrExpr($class), - BuilderHelpers::normalizeIdentifierOrExpr($name), - $this->args($args) - ); - } - - /** - * Creates an object creation node. - * - * @param string|Name|Expr $class Class name - * @param array $args Constructor arguments - */ - public function new($class, array $args = []): Expr\New_ { - return new Expr\New_( - BuilderHelpers::normalizeNameOrExpr($class), - $this->args($args) - ); - } - - /** - * Creates a constant fetch node. - * - * @param string|Name $name Constant name - */ - public function constFetch($name): Expr\ConstFetch { - return new Expr\ConstFetch(BuilderHelpers::normalizeName($name)); - } - - /** - * Creates a property fetch node. - * - * @param Expr $var Variable holding object - * @param string|Identifier|Expr $name Property name - */ - public function propertyFetch(Expr $var, $name): Expr\PropertyFetch { - return new Expr\PropertyFetch($var, BuilderHelpers::normalizeIdentifierOrExpr($name)); - } - - /** - * Creates a class constant fetch node. - * - * @param string|Name|Expr $class Class name - * @param string|Identifier|Expr $name Constant name - */ - public function classConstFetch($class, $name): Expr\ClassConstFetch { - return new Expr\ClassConstFetch( - BuilderHelpers::normalizeNameOrExpr($class), - BuilderHelpers::normalizeIdentifierOrExpr($name) - ); - } - - /** - * Creates nested Concat nodes from a list of expressions. - * - * @param Expr|string ...$exprs Expressions or literal strings - */ - public function concat(...$exprs): Concat { - $numExprs = count($exprs); - if ($numExprs < 2) { - throw new \LogicException('Expected at least two expressions'); - } - - $lastConcat = $this->normalizeStringExpr($exprs[0]); - for ($i = 1; $i < $numExprs; $i++) { - $lastConcat = new Concat($lastConcat, $this->normalizeStringExpr($exprs[$i])); - } - return $lastConcat; - } - - /** - * @param string|Expr $expr - */ - private function normalizeStringExpr($expr): Expr { - if ($expr instanceof Expr) { - return $expr; - } - - if (\is_string($expr)) { - return new String_($expr); - } - - throw new \LogicException('Expected string or Expr'); - } -} diff --git a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php b/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php deleted file mode 100644 index f29a6915..00000000 --- a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php +++ /dev/null @@ -1,338 +0,0 @@ -getNode(); - } - - if ($node instanceof Node) { - return $node; - } - - throw new \LogicException('Expected node or builder object'); - } - - /** - * Normalizes a node to a statement. - * - * Expressions are wrapped in a Stmt\Expression node. - * - * @param Node|Builder $node The node to normalize - * - * @return Stmt The normalized statement node - */ - public static function normalizeStmt($node): Stmt { - $node = self::normalizeNode($node); - if ($node instanceof Stmt) { - return $node; - } - - if ($node instanceof Expr) { - return new Stmt\Expression($node); - } - - throw new \LogicException('Expected statement or expression node'); - } - - /** - * Normalizes strings to Identifier. - * - * @param string|Identifier $name The identifier to normalize - * - * @return Identifier The normalized identifier - */ - public static function normalizeIdentifier($name): Identifier { - if ($name instanceof Identifier) { - return $name; - } - - if (\is_string($name)) { - return new Identifier($name); - } - - throw new \LogicException('Expected string or instance of Node\Identifier'); - } - - /** - * Normalizes strings to Identifier, also allowing expressions. - * - * @param string|Identifier|Expr $name The identifier to normalize - * - * @return Identifier|Expr The normalized identifier or expression - */ - public static function normalizeIdentifierOrExpr($name) { - if ($name instanceof Identifier || $name instanceof Expr) { - return $name; - } - - if (\is_string($name)) { - return new Identifier($name); - } - - throw new \LogicException('Expected string or instance of Node\Identifier or Node\Expr'); - } - - /** - * Normalizes a name: Converts string names to Name nodes. - * - * @param Name|string $name The name to normalize - * - * @return Name The normalized name - */ - public static function normalizeName($name): Name { - if ($name instanceof Name) { - return $name; - } - - if (is_string($name)) { - if (!$name) { - throw new \LogicException('Name cannot be empty'); - } - - if ($name[0] === '\\') { - return new Name\FullyQualified(substr($name, 1)); - } - - if (0 === strpos($name, 'namespace\\')) { - return new Name\Relative(substr($name, strlen('namespace\\'))); - } - - return new Name($name); - } - - throw new \LogicException('Name must be a string or an instance of Node\Name'); - } - - /** - * Normalizes a name: Converts string names to Name nodes, while also allowing expressions. - * - * @param Expr|Name|string $name The name to normalize - * - * @return Name|Expr The normalized name or expression - */ - public static function normalizeNameOrExpr($name) { - if ($name instanceof Expr) { - return $name; - } - - if (!is_string($name) && !($name instanceof Name)) { - throw new \LogicException( - 'Name must be a string or an instance of Node\Name or Node\Expr' - ); - } - - return self::normalizeName($name); - } - - /** - * Normalizes a type: Converts plain-text type names into proper AST representation. - * - * In particular, builtin types become Identifiers, custom types become Names and nullables - * are wrapped in NullableType nodes. - * - * @param string|Name|Identifier|ComplexType $type The type to normalize - * - * @return Name|Identifier|ComplexType The normalized type - */ - public static function normalizeType($type) { - if (!is_string($type)) { - if ( - !$type instanceof Name && !$type instanceof Identifier && - !$type instanceof ComplexType - ) { - throw new \LogicException( - 'Type must be a string, or an instance of Name, Identifier or ComplexType' - ); - } - return $type; - } - - $nullable = false; - if (strlen($type) > 0 && $type[0] === '?') { - $nullable = true; - $type = substr($type, 1); - } - - $builtinTypes = [ - 'array', - 'callable', - 'bool', - 'int', - 'float', - 'string', - 'iterable', - 'void', - 'object', - 'null', - 'false', - 'mixed', - 'never', - 'true', - ]; - - $lowerType = strtolower($type); - if (in_array($lowerType, $builtinTypes)) { - $type = new Identifier($lowerType); - } else { - $type = self::normalizeName($type); - } - - $notNullableTypes = [ - 'void', 'mixed', 'never', - ]; - if ($nullable && in_array((string) $type, $notNullableTypes)) { - throw new \LogicException(sprintf('%s type cannot be nullable', $type)); - } - - return $nullable ? new NullableType($type) : $type; - } - - /** - * Normalizes a value: Converts nulls, booleans, integers, - * floats, strings and arrays into their respective nodes - * - * @param Node\Expr|bool|null|int|float|string|array|\UnitEnum $value The value to normalize - * - * @return Expr The normalized value - */ - public static function normalizeValue($value): Expr { - if ($value instanceof Node\Expr) { - return $value; - } - - if (is_null($value)) { - return new Expr\ConstFetch( - new Name('null') - ); - } - - if (is_bool($value)) { - return new Expr\ConstFetch( - new Name($value ? 'true' : 'false') - ); - } - - if (is_int($value)) { - return new Scalar\Int_($value); - } - - if (is_float($value)) { - return new Scalar\Float_($value); - } - - if (is_string($value)) { - return new Scalar\String_($value); - } - - if (is_array($value)) { - $items = []; - $lastKey = -1; - foreach ($value as $itemKey => $itemValue) { - // for consecutive, numeric keys don't generate keys - if (null !== $lastKey && ++$lastKey === $itemKey) { - $items[] = new Node\ArrayItem( - self::normalizeValue($itemValue) - ); - } else { - $lastKey = null; - $items[] = new Node\ArrayItem( - self::normalizeValue($itemValue), - self::normalizeValue($itemKey) - ); - } - } - - return new Expr\Array_($items); - } - - if ($value instanceof \UnitEnum) { - return new Expr\ClassConstFetch(new FullyQualified(\get_class($value)), new Identifier($value->name)); - } - - throw new \LogicException('Invalid value'); - } - - /** - * Normalizes a doc comment: Converts plain strings to PhpParser\Comment\Doc. - * - * @param Comment\Doc|string $docComment The doc comment to normalize - * - * @return Comment\Doc The normalized doc comment - */ - public static function normalizeDocComment($docComment): Comment\Doc { - if ($docComment instanceof Comment\Doc) { - return $docComment; - } - - if (is_string($docComment)) { - return new Comment\Doc($docComment); - } - - throw new \LogicException('Doc comment must be a string or an instance of PhpParser\Comment\Doc'); - } - - /** - * Normalizes a attribute: Converts attribute to the Attribute Group if needed. - * - * @param Node\Attribute|Node\AttributeGroup $attribute - * - * @return Node\AttributeGroup The Attribute Group - */ - public static function normalizeAttribute($attribute): Node\AttributeGroup { - if ($attribute instanceof Node\AttributeGroup) { - return $attribute; - } - - if (!($attribute instanceof Node\Attribute)) { - throw new \LogicException('Attribute must be an instance of PhpParser\Node\Attribute or PhpParser\Node\AttributeGroup'); - } - - return new Node\AttributeGroup([$attribute]); - } - - /** - * Adds a modifier and returns new modifier bitmask. - * - * @param int $modifiers Existing modifiers - * @param int $modifier Modifier to set - * - * @return int New modifiers - */ - public static function addModifier(int $modifiers, int $modifier): int { - Modifiers::verifyModifier($modifiers, $modifier); - return $modifiers | $modifier; - } - - /** - * Adds a modifier and returns new modifier bitmask. - * @return int New modifiers - */ - public static function addClassModifier(int $existingModifiers, int $modifierToSet): int { - Modifiers::verifyClassModifier($existingModifiers, $modifierToSet); - return $existingModifiers | $modifierToSet; - } -} diff --git a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Comment.php b/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Comment.php deleted file mode 100644 index 01b341e4..00000000 --- a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Comment.php +++ /dev/null @@ -1,209 +0,0 @@ -text = $text; - $this->startLine = $startLine; - $this->startFilePos = $startFilePos; - $this->startTokenPos = $startTokenPos; - $this->endLine = $endLine; - $this->endFilePos = $endFilePos; - $this->endTokenPos = $endTokenPos; - } - - /** - * Gets the comment text. - * - * @return string The comment text (including comment delimiters like /*) - */ - public function getText(): string { - return $this->text; - } - - /** - * Gets the line number the comment started on. - * - * @return int Line number (or -1 if not available) - * @phpstan-return -1|positive-int - */ - public function getStartLine(): int { - return $this->startLine; - } - - /** - * Gets the file offset the comment started on. - * - * @return int File offset (or -1 if not available) - */ - public function getStartFilePos(): int { - return $this->startFilePos; - } - - /** - * Gets the token offset the comment started on. - * - * @return int Token offset (or -1 if not available) - */ - public function getStartTokenPos(): int { - return $this->startTokenPos; - } - - /** - * Gets the line number the comment ends on. - * - * @return int Line number (or -1 if not available) - * @phpstan-return -1|positive-int - */ - public function getEndLine(): int { - return $this->endLine; - } - - /** - * Gets the file offset the comment ends on. - * - * @return int File offset (or -1 if not available) - */ - public function getEndFilePos(): int { - return $this->endFilePos; - } - - /** - * Gets the token offset the comment ends on. - * - * @return int Token offset (or -1 if not available) - */ - public function getEndTokenPos(): int { - return $this->endTokenPos; - } - - /** - * Gets the comment text. - * - * @return string The comment text (including comment delimiters like /*) - */ - public function __toString(): string { - return $this->text; - } - - /** - * Gets the reformatted comment text. - * - * "Reformatted" here means that we try to clean up the whitespace at the - * starts of the lines. This is necessary because we receive the comments - * without leading whitespace on the first line, but with leading whitespace - * on all subsequent lines. - * - * Additionally, this normalizes CRLF newlines to LF newlines. - */ - public function getReformattedText(): string { - $text = str_replace("\r\n", "\n", $this->text); - $newlinePos = strpos($text, "\n"); - if (false === $newlinePos) { - // Single line comments don't need further processing - return $text; - } - if (preg_match('(^.*(?:\n\s+\*.*)+$)', $text)) { - // Multi line comment of the type - // - // /* - // * Some text. - // * Some more text. - // */ - // - // is handled by replacing the whitespace sequences before the * by a single space - return preg_replace('(^\s+\*)m', ' *', $text); - } - if (preg_match('(^/\*\*?\s*\n)', $text) && preg_match('(\n(\s*)\*/$)', $text, $matches)) { - // Multi line comment of the type - // - // /* - // Some text. - // Some more text. - // */ - // - // is handled by removing the whitespace sequence on the line before the closing - // */ on all lines. So if the last line is " */", then " " is removed at the - // start of all lines. - return preg_replace('(^' . preg_quote($matches[1]) . ')m', '', $text); - } - if (preg_match('(^/\*\*?\s*(?!\s))', $text, $matches)) { - // Multi line comment of the type - // - // /* Some text. - // Some more text. - // Indented text. - // Even more text. */ - // - // is handled by removing the difference between the shortest whitespace prefix on all - // lines and the length of the "/* " opening sequence. - $prefixLen = $this->getShortestWhitespacePrefixLen(substr($text, $newlinePos + 1)); - $removeLen = $prefixLen - strlen($matches[0]); - return preg_replace('(^\s{' . $removeLen . '})m', '', $text); - } - - // No idea how to format this comment, so simply return as is - return $text; - } - - /** - * Get length of shortest whitespace prefix (at the start of a line). - * - * If there is a line with no prefix whitespace, 0 is a valid return value. - * - * @param string $str String to check - * @return int Length in characters. Tabs count as single characters. - */ - private function getShortestWhitespacePrefixLen(string $str): int { - $lines = explode("\n", $str); - $shortestPrefixLen = \PHP_INT_MAX; - foreach ($lines as $line) { - preg_match('(^\s*)', $line, $matches); - $prefixLen = strlen($matches[0]); - if ($prefixLen < $shortestPrefixLen) { - $shortestPrefixLen = $prefixLen; - } - } - return $shortestPrefixLen; - } - - /** - * @return array{nodeType:string, text:mixed, line:mixed, filePos:mixed} - */ - public function jsonSerialize(): array { - // Technically not a node, but we make it look like one anyway - $type = $this instanceof Comment\Doc ? 'Comment_Doc' : 'Comment'; - return [ - 'nodeType' => $type, - 'text' => $this->text, - // TODO: Rename these to include "start". - 'line' => $this->startLine, - 'filePos' => $this->startFilePos, - 'tokenPos' => $this->startTokenPos, - 'endLine' => $this->endLine, - 'endFilePos' => $this->endFilePos, - 'endTokenPos' => $this->endTokenPos, - ]; - } -} diff --git a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Error.php b/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Error.php deleted file mode 100644 index f81f0c42..00000000 --- a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Error.php +++ /dev/null @@ -1,173 +0,0 @@ - */ - protected array $attributes; - - /** - * Creates an Exception signifying a parse error. - * - * @param string $message Error message - * @param array $attributes Attributes of node/token where error occurred - */ - public function __construct(string $message, array $attributes = []) { - $this->rawMessage = $message; - $this->attributes = $attributes; - $this->updateMessage(); - } - - /** - * Gets the error message - * - * @return string Error message - */ - public function getRawMessage(): string { - return $this->rawMessage; - } - - /** - * Gets the line the error starts in. - * - * @return int Error start line - * @phpstan-return -1|positive-int - */ - public function getStartLine(): int { - return $this->attributes['startLine'] ?? -1; - } - - /** - * Gets the line the error ends in. - * - * @return int Error end line - * @phpstan-return -1|positive-int - */ - public function getEndLine(): int { - return $this->attributes['endLine'] ?? -1; - } - - /** - * Gets the attributes of the node/token the error occurred at. - * - * @return array - */ - public function getAttributes(): array { - return $this->attributes; - } - - /** - * Sets the attributes of the node/token the error occurred at. - * - * @param array $attributes - */ - public function setAttributes(array $attributes): void { - $this->attributes = $attributes; - $this->updateMessage(); - } - - /** - * Sets the line of the PHP file the error occurred in. - * - * @param string $message Error message - */ - public function setRawMessage(string $message): void { - $this->rawMessage = $message; - $this->updateMessage(); - } - - /** - * Sets the line the error starts in. - * - * @param int $line Error start line - */ - public function setStartLine(int $line): void { - $this->attributes['startLine'] = $line; - $this->updateMessage(); - } - - /** - * Returns whether the error has start and end column information. - * - * For column information enable the startFilePos and endFilePos in the lexer options. - */ - public function hasColumnInfo(): bool { - return isset($this->attributes['startFilePos'], $this->attributes['endFilePos']); - } - - /** - * Gets the start column (1-based) into the line where the error started. - * - * @param string $code Source code of the file - */ - public function getStartColumn(string $code): int { - if (!$this->hasColumnInfo()) { - throw new \RuntimeException('Error does not have column information'); - } - - return $this->toColumn($code, $this->attributes['startFilePos']); - } - - /** - * Gets the end column (1-based) into the line where the error ended. - * - * @param string $code Source code of the file - */ - public function getEndColumn(string $code): int { - if (!$this->hasColumnInfo()) { - throw new \RuntimeException('Error does not have column information'); - } - - return $this->toColumn($code, $this->attributes['endFilePos']); - } - - /** - * Formats message including line and column information. - * - * @param string $code Source code associated with the error, for calculation of the columns - * - * @return string Formatted message - */ - public function getMessageWithColumnInfo(string $code): string { - return sprintf( - '%s from %d:%d to %d:%d', $this->getRawMessage(), - $this->getStartLine(), $this->getStartColumn($code), - $this->getEndLine(), $this->getEndColumn($code) - ); - } - - /** - * Converts a file offset into a column. - * - * @param string $code Source code that $pos indexes into - * @param int $pos 0-based position in $code - * - * @return int 1-based column (relative to start of line) - */ - private function toColumn(string $code, int $pos): int { - if ($pos > strlen($code)) { - throw new \RuntimeException('Invalid position information'); - } - - $lineStartPos = strrpos($code, "\n", $pos - strlen($code)); - if (false === $lineStartPos) { - $lineStartPos = -1; - } - - return $pos - $lineStartPos; - } - - /** - * Updates the exception message after a change to rawMessage or rawLine. - */ - protected function updateMessage(): void { - $this->message = $this->rawMessage; - - if (-1 === $this->getStartLine()) { - $this->message .= ' on unknown line'; - } else { - $this->message .= ' on line ' . $this->getStartLine(); - } - } -} diff --git a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php b/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php deleted file mode 100644 index cdbe2bdc..00000000 --- a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php +++ /dev/null @@ -1,282 +0,0 @@ -tokens = $tokens; - $this->indentMap = $this->calcIndentMap($tabWidth); - } - - /** - * Whether the given position is immediately surrounded by parenthesis. - * - * @param int $startPos Start position - * @param int $endPos End position - */ - public function haveParens(int $startPos, int $endPos): bool { - return $this->haveTokenImmediatelyBefore($startPos, '(') - && $this->haveTokenImmediatelyAfter($endPos, ')'); - } - - /** - * Whether the given position is immediately surrounded by braces. - * - * @param int $startPos Start position - * @param int $endPos End position - */ - public function haveBraces(int $startPos, int $endPos): bool { - return ($this->haveTokenImmediatelyBefore($startPos, '{') - || $this->haveTokenImmediatelyBefore($startPos, T_CURLY_OPEN)) - && $this->haveTokenImmediatelyAfter($endPos, '}'); - } - - /** - * Check whether the position is directly preceded by a certain token type. - * - * During this check whitespace and comments are skipped. - * - * @param int $pos Position before which the token should occur - * @param int|string $expectedTokenType Token to check for - * - * @return bool Whether the expected token was found - */ - public function haveTokenImmediatelyBefore(int $pos, $expectedTokenType): bool { - $tokens = $this->tokens; - $pos--; - for (; $pos >= 0; $pos--) { - $token = $tokens[$pos]; - if ($token->is($expectedTokenType)) { - return true; - } - if (!$token->isIgnorable()) { - break; - } - } - return false; - } - - /** - * Check whether the position is directly followed by a certain token type. - * - * During this check whitespace and comments are skipped. - * - * @param int $pos Position after which the token should occur - * @param int|string $expectedTokenType Token to check for - * - * @return bool Whether the expected token was found - */ - public function haveTokenImmediatelyAfter(int $pos, $expectedTokenType): bool { - $tokens = $this->tokens; - $pos++; - for ($c = \count($tokens); $pos < $c; $pos++) { - $token = $tokens[$pos]; - if ($token->is($expectedTokenType)) { - return true; - } - if (!$token->isIgnorable()) { - break; - } - } - return false; - } - - /** @param int|string|(int|string)[] $skipTokenType */ - public function skipLeft(int $pos, $skipTokenType): int { - $tokens = $this->tokens; - - $pos = $this->skipLeftWhitespace($pos); - if ($skipTokenType === \T_WHITESPACE) { - return $pos; - } - - if (!$tokens[$pos]->is($skipTokenType)) { - // Shouldn't happen. The skip token MUST be there - throw new \Exception('Encountered unexpected token'); - } - $pos--; - - return $this->skipLeftWhitespace($pos); - } - - /** @param int|string|(int|string)[] $skipTokenType */ - public function skipRight(int $pos, $skipTokenType): int { - $tokens = $this->tokens; - - $pos = $this->skipRightWhitespace($pos); - if ($skipTokenType === \T_WHITESPACE) { - return $pos; - } - - if (!$tokens[$pos]->is($skipTokenType)) { - // Shouldn't happen. The skip token MUST be there - throw new \Exception('Encountered unexpected token'); - } - $pos++; - - return $this->skipRightWhitespace($pos); - } - - /** - * Return first non-whitespace token position smaller or equal to passed position. - * - * @param int $pos Token position - * @return int Non-whitespace token position - */ - public function skipLeftWhitespace(int $pos): int { - $tokens = $this->tokens; - for (; $pos >= 0; $pos--) { - if (!$tokens[$pos]->isIgnorable()) { - break; - } - } - return $pos; - } - - /** - * Return first non-whitespace position greater or equal to passed position. - * - * @param int $pos Token position - * @return int Non-whitespace token position - */ - public function skipRightWhitespace(int $pos): int { - $tokens = $this->tokens; - for ($count = \count($tokens); $pos < $count; $pos++) { - if (!$tokens[$pos]->isIgnorable()) { - break; - } - } - return $pos; - } - - /** @param int|string|(int|string)[] $findTokenType */ - public function findRight(int $pos, $findTokenType): int { - $tokens = $this->tokens; - for ($count = \count($tokens); $pos < $count; $pos++) { - if ($tokens[$pos]->is($findTokenType)) { - return $pos; - } - } - return -1; - } - - /** - * Whether the given position range contains a certain token type. - * - * @param int $startPos Starting position (inclusive) - * @param int $endPos Ending position (exclusive) - * @param int|string $tokenType Token type to look for - * @return bool Whether the token occurs in the given range - */ - public function haveTokenInRange(int $startPos, int $endPos, $tokenType): bool { - $tokens = $this->tokens; - for ($pos = $startPos; $pos < $endPos; $pos++) { - if ($tokens[$pos]->is($tokenType)) { - return true; - } - } - return false; - } - - public function haveTagInRange(int $startPos, int $endPos): bool { - return $this->haveTokenInRange($startPos, $endPos, \T_OPEN_TAG) - || $this->haveTokenInRange($startPos, $endPos, \T_CLOSE_TAG); - } - - /** - * Get indentation before token position. - * - * @param int $pos Token position - * - * @return int Indentation depth (in spaces) - */ - public function getIndentationBefore(int $pos): int { - return $this->indentMap[$pos]; - } - - /** - * Get the code corresponding to a token offset range, optionally adjusted for indentation. - * - * @param int $from Token start position (inclusive) - * @param int $to Token end position (exclusive) - * @param int $indent By how much the code should be indented (can be negative as well) - * - * @return string Code corresponding to token range, adjusted for indentation - */ - public function getTokenCode(int $from, int $to, int $indent): string { - $tokens = $this->tokens; - $result = ''; - for ($pos = $from; $pos < $to; $pos++) { - $token = $tokens[$pos]; - $id = $token->id; - $text = $token->text; - if ($id === \T_CONSTANT_ENCAPSED_STRING || $id === \T_ENCAPSED_AND_WHITESPACE) { - $result .= $text; - } else { - // TODO Handle non-space indentation - if ($indent < 0) { - $result .= str_replace("\n" . str_repeat(" ", -$indent), "\n", $text); - } elseif ($indent > 0) { - $result .= str_replace("\n", "\n" . str_repeat(" ", $indent), $text); - } else { - $result .= $text; - } - } - } - return $result; - } - - /** - * Precalculate the indentation at every token position. - * - * @return int[] Token position to indentation map - */ - private function calcIndentMap(int $tabWidth): array { - $indentMap = []; - $indent = 0; - foreach ($this->tokens as $i => $token) { - $indentMap[] = $indent; - - if ($token->id === \T_WHITESPACE) { - $content = $token->text; - $newlinePos = \strrpos($content, "\n"); - if (false !== $newlinePos) { - $indent = $this->getIndent(\substr($content, $newlinePos + 1), $tabWidth); - } elseif ($i === 1 && $this->tokens[0]->id === \T_OPEN_TAG && - $this->tokens[0]->text[\strlen($this->tokens[0]->text) - 1] === "\n") { - // Special case: Newline at the end of opening tag followed by whitespace. - $indent = $this->getIndent($content, $tabWidth); - } - } - } - - // Add a sentinel for one past end of the file - $indentMap[] = $indent; - - return $indentMap; - } - - private function getIndent(string $ws, int $tabWidth): int { - $spaces = \substr_count($ws, " "); - $tabs = \substr_count($ws, "\t"); - assert(\strlen($ws) === $spaces + $tabs); - return $spaces + $tabs * $tabWidth; - } -} diff --git a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php b/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php deleted file mode 100644 index c9b3b6d3..00000000 --- a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php +++ /dev/null @@ -1,226 +0,0 @@ - */ - private array $emulators = []; - - private PhpVersion $targetPhpVersion; - - private PhpVersion $hostPhpVersion; - - /** - * @param PhpVersion|null $phpVersion PHP version to emulate. Defaults to newest supported. - */ - public function __construct(?PhpVersion $phpVersion = null) { - $this->targetPhpVersion = $phpVersion ?? PhpVersion::getNewestSupported(); - $this->hostPhpVersion = PhpVersion::getHostVersion(); - - $emulators = [ - new MatchTokenEmulator(), - new NullsafeTokenEmulator(), - new AttributeEmulator(), - new EnumTokenEmulator(), - new ReadonlyTokenEmulator(), - new ExplicitOctalEmulator(), - new ReadonlyFunctionTokenEmulator(), - new PropertyTokenEmulator(), - new AsymmetricVisibilityTokenEmulator(), - ]; - - // Collect emulators that are relevant for the PHP version we're running - // and the PHP version we're targeting for emulation. - foreach ($emulators as $emulator) { - $emulatorPhpVersion = $emulator->getPhpVersion(); - if ($this->isForwardEmulationNeeded($emulatorPhpVersion)) { - $this->emulators[] = $emulator; - } elseif ($this->isReverseEmulationNeeded($emulatorPhpVersion)) { - $this->emulators[] = new ReverseEmulator($emulator); - } - } - } - - public function tokenize(string $code, ?ErrorHandler $errorHandler = null): array { - $emulators = array_filter($this->emulators, function ($emulator) use ($code) { - return $emulator->isEmulationNeeded($code); - }); - - if (empty($emulators)) { - // Nothing to emulate, yay - return parent::tokenize($code, $errorHandler); - } - - if ($errorHandler === null) { - $errorHandler = new ErrorHandler\Throwing(); - } - - $this->patches = []; - foreach ($emulators as $emulator) { - $code = $emulator->preprocessCode($code, $this->patches); - } - - $collector = new ErrorHandler\Collecting(); - $tokens = parent::tokenize($code, $collector); - $this->sortPatches(); - $tokens = $this->fixupTokens($tokens); - - $errors = $collector->getErrors(); - if (!empty($errors)) { - $this->fixupErrors($errors); - foreach ($errors as $error) { - $errorHandler->handleError($error); - } - } - - foreach ($emulators as $emulator) { - $tokens = $emulator->emulate($code, $tokens); - } - - return $tokens; - } - - private function isForwardEmulationNeeded(PhpVersion $emulatorPhpVersion): bool { - return $this->hostPhpVersion->older($emulatorPhpVersion) - && $this->targetPhpVersion->newerOrEqual($emulatorPhpVersion); - } - - private function isReverseEmulationNeeded(PhpVersion $emulatorPhpVersion): bool { - return $this->hostPhpVersion->newerOrEqual($emulatorPhpVersion) - && $this->targetPhpVersion->older($emulatorPhpVersion); - } - - private function sortPatches(): void { - // Patches may be contributed by different emulators. - // Make sure they are sorted by increasing patch position. - usort($this->patches, function ($p1, $p2) { - return $p1[0] <=> $p2[0]; - }); - } - - /** - * @param list $tokens - * @return list - */ - private function fixupTokens(array $tokens): array { - if (\count($this->patches) === 0) { - return $tokens; - } - - // Load first patch - $patchIdx = 0; - list($patchPos, $patchType, $patchText) = $this->patches[$patchIdx]; - - // We use a manual loop over the tokens, because we modify the array on the fly - $posDelta = 0; - $lineDelta = 0; - for ($i = 0, $c = \count($tokens); $i < $c; $i++) { - $token = $tokens[$i]; - $pos = $token->pos; - $token->pos += $posDelta; - $token->line += $lineDelta; - $localPosDelta = 0; - $len = \strlen($token->text); - while ($patchPos >= $pos && $patchPos < $pos + $len) { - $patchTextLen = \strlen($patchText); - if ($patchType === 'remove') { - if ($patchPos === $pos && $patchTextLen === $len) { - // Remove token entirely - array_splice($tokens, $i, 1, []); - $i--; - $c--; - } else { - // Remove from token string - $token->text = substr_replace( - $token->text, '', $patchPos - $pos + $localPosDelta, $patchTextLen - ); - $localPosDelta -= $patchTextLen; - } - $lineDelta -= \substr_count($patchText, "\n"); - } elseif ($patchType === 'add') { - // Insert into the token string - $token->text = substr_replace( - $token->text, $patchText, $patchPos - $pos + $localPosDelta, 0 - ); - $localPosDelta += $patchTextLen; - $lineDelta += \substr_count($patchText, "\n"); - } elseif ($patchType === 'replace') { - // Replace inside the token string - $token->text = substr_replace( - $token->text, $patchText, $patchPos - $pos + $localPosDelta, $patchTextLen - ); - } else { - assert(false); - } - - // Fetch the next patch - $patchIdx++; - if ($patchIdx >= \count($this->patches)) { - // No more patches. However, we still need to adjust position. - $patchPos = \PHP_INT_MAX; - break; - } - - list($patchPos, $patchType, $patchText) = $this->patches[$patchIdx]; - } - - $posDelta += $localPosDelta; - } - return $tokens; - } - - /** - * Fixup line and position information in errors. - * - * @param Error[] $errors - */ - private function fixupErrors(array $errors): void { - foreach ($errors as $error) { - $attrs = $error->getAttributes(); - - $posDelta = 0; - $lineDelta = 0; - foreach ($this->patches as $patch) { - list($patchPos, $patchType, $patchText) = $patch; - if ($patchPos >= $attrs['startFilePos']) { - // No longer relevant - break; - } - - if ($patchType === 'add') { - $posDelta += strlen($patchText); - $lineDelta += substr_count($patchText, "\n"); - } elseif ($patchType === 'remove') { - $posDelta -= strlen($patchText); - $lineDelta -= substr_count($patchText, "\n"); - } - } - - $attrs['startFilePos'] += $posDelta; - $attrs['endFilePos'] += $posDelta; - $attrs['startLine'] += $lineDelta; - $attrs['endLine'] += $lineDelta; - $error->setAttributes($attrs); - } - } -} diff --git a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php b/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php deleted file mode 100644 index 066e7cd8..00000000 --- a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php +++ /dev/null @@ -1,60 +0,0 @@ -getKeywordString()) !== false; - } - - /** @param Token[] $tokens */ - protected function isKeywordContext(array $tokens, int $pos): bool { - $prevToken = $this->getPreviousNonSpaceToken($tokens, $pos); - if ($prevToken === null) { - return false; - } - return $prevToken->id !== \T_OBJECT_OPERATOR - && $prevToken->id !== \T_NULLSAFE_OBJECT_OPERATOR; - } - - public function emulate(string $code, array $tokens): array { - $keywordString = $this->getKeywordString(); - foreach ($tokens as $i => $token) { - if ($token->id === T_STRING && strtolower($token->text) === $keywordString - && $this->isKeywordContext($tokens, $i)) { - $token->id = $this->getKeywordToken(); - } - } - - return $tokens; - } - - /** @param Token[] $tokens */ - private function getPreviousNonSpaceToken(array $tokens, int $start): ?Token { - for ($i = $start - 1; $i >= 0; --$i) { - if ($tokens[$i]->id === T_WHITESPACE) { - continue; - } - - return $tokens[$i]; - } - - return null; - } - - public function reverseEmulate(string $code, array $tokens): array { - $keywordToken = $this->getKeywordToken(); - foreach ($tokens as $token) { - if ($token->id === $keywordToken) { - $token->id = \T_STRING; - } - } - - return $tokens; - } -} diff --git a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Modifiers.php b/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Modifiers.php deleted file mode 100644 index 0f0f22d6..00000000 --- a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Modifiers.php +++ /dev/null @@ -1,85 +0,0 @@ - 'public', - self::PROTECTED => 'protected', - self::PRIVATE => 'private', - self::STATIC => 'static', - self::ABSTRACT => 'abstract', - self::FINAL => 'final', - self::READONLY => 'readonly', - self::PUBLIC_SET => 'public(set)', - self::PROTECTED_SET => 'protected(set)', - self::PRIVATE_SET => 'private(set)', - ]; - - public static function toString(int $modifier): string { - if (!isset(self::TO_STRING_MAP[$modifier])) { - throw new \InvalidArgumentException("Unknown modifier $modifier"); - } - return self::TO_STRING_MAP[$modifier]; - } - - private static function isValidModifier(int $modifier): bool { - $isPow2 = ($modifier & ($modifier - 1)) == 0 && $modifier != 0; - return $isPow2 && $modifier <= self::PRIVATE_SET; - } - - /** - * @internal - */ - public static function verifyClassModifier(int $a, int $b): void { - assert(self::isValidModifier($b)); - if (($a & $b) != 0) { - throw new Error( - 'Multiple ' . self::toString($b) . ' modifiers are not allowed'); - } - - if ($a & 48 && $b & 48) { - throw new Error('Cannot use the final modifier on an abstract class'); - } - } - - /** - * @internal - */ - public static function verifyModifier(int $a, int $b): void { - assert(self::isValidModifier($b)); - if (($a & Modifiers::VISIBILITY_MASK && $b & Modifiers::VISIBILITY_MASK) || - ($a & Modifiers::VISIBILITY_SET_MASK && $b & Modifiers::VISIBILITY_SET_MASK) - ) { - throw new Error('Multiple access type modifiers are not allowed'); - } - - if (($a & $b) != 0) { - throw new Error( - 'Multiple ' . self::toString($b) . ' modifiers are not allowed'); - } - - if ($a & 48 && $b & 48) { - throw new Error('Cannot use the final modifier on an abstract class member'); - } - } -} diff --git a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/NameContext.php b/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/NameContext.php deleted file mode 100644 index 2265ecce..00000000 --- a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/NameContext.php +++ /dev/null @@ -1,284 +0,0 @@ - [aliasName => originalName]] */ - protected array $aliases = []; - - /** @var Name[][] Same as $aliases but preserving original case */ - protected array $origAliases = []; - - /** @var ErrorHandler Error handler */ - protected ErrorHandler $errorHandler; - - /** - * Create a name context. - * - * @param ErrorHandler $errorHandler Error handling used to report errors - */ - public function __construct(ErrorHandler $errorHandler) { - $this->errorHandler = $errorHandler; - } - - /** - * Start a new namespace. - * - * This also resets the alias table. - * - * @param Name|null $namespace Null is the global namespace - */ - public function startNamespace(?Name $namespace = null): void { - $this->namespace = $namespace; - $this->origAliases = $this->aliases = [ - Stmt\Use_::TYPE_NORMAL => [], - Stmt\Use_::TYPE_FUNCTION => [], - Stmt\Use_::TYPE_CONSTANT => [], - ]; - } - - /** - * Add an alias / import. - * - * @param Name $name Original name - * @param string $aliasName Aliased name - * @param Stmt\Use_::TYPE_* $type One of Stmt\Use_::TYPE_* - * @param array $errorAttrs Attributes to use to report an error - */ - public function addAlias(Name $name, string $aliasName, int $type, array $errorAttrs = []): void { - // Constant names are case sensitive, everything else case insensitive - if ($type === Stmt\Use_::TYPE_CONSTANT) { - $aliasLookupName = $aliasName; - } else { - $aliasLookupName = strtolower($aliasName); - } - - if (isset($this->aliases[$type][$aliasLookupName])) { - $typeStringMap = [ - Stmt\Use_::TYPE_NORMAL => '', - Stmt\Use_::TYPE_FUNCTION => 'function ', - Stmt\Use_::TYPE_CONSTANT => 'const ', - ]; - - $this->errorHandler->handleError(new Error( - sprintf( - 'Cannot use %s%s as %s because the name is already in use', - $typeStringMap[$type], $name, $aliasName - ), - $errorAttrs - )); - return; - } - - $this->aliases[$type][$aliasLookupName] = $name; - $this->origAliases[$type][$aliasName] = $name; - } - - /** - * Get current namespace. - * - * @return null|Name Namespace (or null if global namespace) - */ - public function getNamespace(): ?Name { - return $this->namespace; - } - - /** - * Get resolved name. - * - * @param Name $name Name to resolve - * @param Stmt\Use_::TYPE_* $type One of Stmt\Use_::TYPE_{FUNCTION|CONSTANT} - * - * @return null|Name Resolved name, or null if static resolution is not possible - */ - public function getResolvedName(Name $name, int $type): ?Name { - // don't resolve special class names - if ($type === Stmt\Use_::TYPE_NORMAL && $name->isSpecialClassName()) { - if (!$name->isUnqualified()) { - $this->errorHandler->handleError(new Error( - sprintf("'\\%s' is an invalid class name", $name->toString()), - $name->getAttributes() - )); - } - return $name; - } - - // fully qualified names are already resolved - if ($name->isFullyQualified()) { - return $name; - } - - // Try to resolve aliases - if (null !== $resolvedName = $this->resolveAlias($name, $type)) { - return $resolvedName; - } - - if ($type !== Stmt\Use_::TYPE_NORMAL && $name->isUnqualified()) { - if (null === $this->namespace) { - // outside of a namespace unaliased unqualified is same as fully qualified - return new FullyQualified($name, $name->getAttributes()); - } - - // Cannot resolve statically - return null; - } - - // if no alias exists prepend current namespace - return FullyQualified::concat($this->namespace, $name, $name->getAttributes()); - } - - /** - * Get resolved class name. - * - * @param Name $name Class ame to resolve - * - * @return Name Resolved name - */ - public function getResolvedClassName(Name $name): Name { - return $this->getResolvedName($name, Stmt\Use_::TYPE_NORMAL); - } - - /** - * Get possible ways of writing a fully qualified name (e.g., by making use of aliases). - * - * @param string $name Fully-qualified name (without leading namespace separator) - * @param Stmt\Use_::TYPE_* $type One of Stmt\Use_::TYPE_* - * - * @return Name[] Possible representations of the name - */ - public function getPossibleNames(string $name, int $type): array { - $lcName = strtolower($name); - - if ($type === Stmt\Use_::TYPE_NORMAL) { - // self, parent and static must always be unqualified - if ($lcName === "self" || $lcName === "parent" || $lcName === "static") { - return [new Name($name)]; - } - } - - // Collect possible ways to write this name, starting with the fully-qualified name - $possibleNames = [new FullyQualified($name)]; - - if (null !== $nsRelativeName = $this->getNamespaceRelativeName($name, $lcName, $type)) { - // Make sure there is no alias that makes the normally namespace-relative name - // into something else - if (null === $this->resolveAlias($nsRelativeName, $type)) { - $possibleNames[] = $nsRelativeName; - } - } - - // Check for relevant namespace use statements - foreach ($this->origAliases[Stmt\Use_::TYPE_NORMAL] as $alias => $orig) { - $lcOrig = $orig->toLowerString(); - if (0 === strpos($lcName, $lcOrig . '\\')) { - $possibleNames[] = new Name($alias . substr($name, strlen($lcOrig))); - } - } - - // Check for relevant type-specific use statements - foreach ($this->origAliases[$type] as $alias => $orig) { - if ($type === Stmt\Use_::TYPE_CONSTANT) { - // Constants are complicated-sensitive - $normalizedOrig = $this->normalizeConstName($orig->toString()); - if ($normalizedOrig === $this->normalizeConstName($name)) { - $possibleNames[] = new Name($alias); - } - } else { - // Everything else is case-insensitive - if ($orig->toLowerString() === $lcName) { - $possibleNames[] = new Name($alias); - } - } - } - - return $possibleNames; - } - - /** - * Get shortest representation of this fully-qualified name. - * - * @param string $name Fully-qualified name (without leading namespace separator) - * @param Stmt\Use_::TYPE_* $type One of Stmt\Use_::TYPE_* - * - * @return Name Shortest representation - */ - public function getShortName(string $name, int $type): Name { - $possibleNames = $this->getPossibleNames($name, $type); - - // Find shortest name - $shortestName = null; - $shortestLength = \INF; - foreach ($possibleNames as $possibleName) { - $length = strlen($possibleName->toCodeString()); - if ($length < $shortestLength) { - $shortestName = $possibleName; - $shortestLength = $length; - } - } - - return $shortestName; - } - - private function resolveAlias(Name $name, int $type): ?FullyQualified { - $firstPart = $name->getFirst(); - - if ($name->isQualified()) { - // resolve aliases for qualified names, always against class alias table - $checkName = strtolower($firstPart); - if (isset($this->aliases[Stmt\Use_::TYPE_NORMAL][$checkName])) { - $alias = $this->aliases[Stmt\Use_::TYPE_NORMAL][$checkName]; - return FullyQualified::concat($alias, $name->slice(1), $name->getAttributes()); - } - } elseif ($name->isUnqualified()) { - // constant aliases are case-sensitive, function aliases case-insensitive - $checkName = $type === Stmt\Use_::TYPE_CONSTANT ? $firstPart : strtolower($firstPart); - if (isset($this->aliases[$type][$checkName])) { - // resolve unqualified aliases - return new FullyQualified($this->aliases[$type][$checkName], $name->getAttributes()); - } - } - - // No applicable aliases - return null; - } - - private function getNamespaceRelativeName(string $name, string $lcName, int $type): ?Name { - if (null === $this->namespace) { - return new Name($name); - } - - if ($type === Stmt\Use_::TYPE_CONSTANT) { - // The constants true/false/null always resolve to the global symbols, even inside a - // namespace, so they may be used without qualification - if ($lcName === "true" || $lcName === "false" || $lcName === "null") { - return new Name($name); - } - } - - $namespacePrefix = strtolower($this->namespace . '\\'); - if (0 === strpos($lcName, $namespacePrefix)) { - return new Name(substr($name, strlen($namespacePrefix))); - } - - return null; - } - - private function normalizeConstName(string $name): string { - $nsSep = strrpos($name, '\\'); - if (false === $nsSep) { - return $name; - } - - // Constants have case-insensitive namespace and case-sensitive short-name - $ns = substr($name, 0, $nsSep); - $shortName = substr($name, $nsSep + 1); - return strtolower($ns) . '\\' . $shortName; - } -} diff --git a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Node.php b/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Node.php deleted file mode 100644 index fd2a9b72..00000000 --- a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Node.php +++ /dev/null @@ -1,150 +0,0 @@ - - */ - public function getAttributes(): array; - - /** - * Replaces all the attributes of this node. - * - * @param array $attributes - */ - public function setAttributes(array $attributes): void; -} diff --git a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php b/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php deleted file mode 100644 index be9d0708..00000000 --- a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php +++ /dev/null @@ -1,11 +0,0 @@ - */ - private static array $specialClassNames = [ - 'self' => true, - 'parent' => true, - 'static' => true, - ]; - - /** - * Constructs an identifier node. - * - * @param string $name Identifier as string - * @param array $attributes Additional attributes - */ - public function __construct(string $name, array $attributes = []) { - if ($name === '') { - throw new \InvalidArgumentException('Identifier name cannot be empty'); - } - - $this->attributes = $attributes; - $this->name = $name; - } - - public function getSubNodeNames(): array { - return ['name']; - } - - /** - * Get identifier as string. - * - * @psalm-return non-empty-string - * @return string Identifier as string. - */ - public function toString(): string { - return $this->name; - } - - /** - * Get lowercased identifier as string. - * - * @psalm-return non-empty-string&lowercase-string - * @return string Lowercased identifier as string - */ - public function toLowerString(): string { - return strtolower($this->name); - } - - /** - * Checks whether the identifier is a special class name (self, parent or static). - * - * @return bool Whether identifier is a special class name - */ - public function isSpecialClassName(): bool { - return isset(self::$specialClassNames[strtolower($this->name)]); - } - - /** - * Get identifier as string. - * - * @psalm-return non-empty-string - * @return string Identifier as string - */ - public function __toString(): string { - return $this->name; - } - - public function getType(): string { - return 'Identifier'; - } -} diff --git a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Node/Name.php b/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Node/Name.php deleted file mode 100644 index 932080b5..00000000 --- a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Node/Name.php +++ /dev/null @@ -1,278 +0,0 @@ - */ - private static array $specialClassNames = [ - 'self' => true, - 'parent' => true, - 'static' => true, - ]; - - /** - * Constructs a name node. - * - * @param string|string[]|self $name Name as string, part array or Name instance (copy ctor) - * @param array $attributes Additional attributes - */ - final public function __construct($name, array $attributes = []) { - $this->attributes = $attributes; - $this->name = self::prepareName($name); - } - - public function getSubNodeNames(): array { - return ['name']; - } - - /** - * Get parts of name (split by the namespace separator). - * - * @psalm-return non-empty-list - * @return string[] Parts of name - */ - public function getParts(): array { - return \explode('\\', $this->name); - } - - /** - * Gets the first part of the name, i.e. everything before the first namespace separator. - * - * @return string First part of the name - */ - public function getFirst(): string { - if (false !== $pos = \strpos($this->name, '\\')) { - return \substr($this->name, 0, $pos); - } - return $this->name; - } - - /** - * Gets the last part of the name, i.e. everything after the last namespace separator. - * - * @return string Last part of the name - */ - public function getLast(): string { - if (false !== $pos = \strrpos($this->name, '\\')) { - return \substr($this->name, $pos + 1); - } - return $this->name; - } - - /** - * Checks whether the name is unqualified. (E.g. Name) - * - * @return bool Whether the name is unqualified - */ - public function isUnqualified(): bool { - return false === \strpos($this->name, '\\'); - } - - /** - * Checks whether the name is qualified. (E.g. Name\Name) - * - * @return bool Whether the name is qualified - */ - public function isQualified(): bool { - return false !== \strpos($this->name, '\\'); - } - - /** - * Checks whether the name is fully qualified. (E.g. \Name) - * - * @return bool Whether the name is fully qualified - */ - public function isFullyQualified(): bool { - return false; - } - - /** - * Checks whether the name is explicitly relative to the current namespace. (E.g. namespace\Name) - * - * @return bool Whether the name is relative - */ - public function isRelative(): bool { - return false; - } - - /** - * Returns a string representation of the name itself, without taking the name type into - * account (e.g., not including a leading backslash for fully qualified names). - * - * @psalm-return non-empty-string - * @return string String representation - */ - public function toString(): string { - return $this->name; - } - - /** - * Returns a string representation of the name as it would occur in code (e.g., including - * leading backslash for fully qualified names. - * - * @psalm-return non-empty-string - * @return string String representation - */ - public function toCodeString(): string { - return $this->toString(); - } - - /** - * Returns lowercased string representation of the name, without taking the name type into - * account (e.g., no leading backslash for fully qualified names). - * - * @psalm-return non-empty-string&lowercase-string - * @return string Lowercased string representation - */ - public function toLowerString(): string { - return strtolower($this->name); - } - - /** - * Checks whether the identifier is a special class name (self, parent or static). - * - * @return bool Whether identifier is a special class name - */ - public function isSpecialClassName(): bool { - return isset(self::$specialClassNames[strtolower($this->name)]); - } - - /** - * Returns a string representation of the name by imploding the namespace parts with the - * namespace separator. - * - * @psalm-return non-empty-string - * @return string String representation - */ - public function __toString(): string { - return $this->name; - } - - /** - * Gets a slice of a name (similar to array_slice). - * - * This method returns a new instance of the same type as the original and with the same - * attributes. - * - * If the slice is empty, null is returned. The null value will be correctly handled in - * concatenations using concat(). - * - * Offset and length have the same meaning as in array_slice(). - * - * @param int $offset Offset to start the slice at (may be negative) - * @param int|null $length Length of the slice (may be negative) - * - * @return static|null Sliced name - */ - public function slice(int $offset, ?int $length = null) { - if ($offset === 1 && $length === null) { - // Short-circuit the common case. - if (false !== $pos = \strpos($this->name, '\\')) { - return new static(\substr($this->name, $pos + 1)); - } - return null; - } - - $parts = \explode('\\', $this->name); - $numParts = \count($parts); - - $realOffset = $offset < 0 ? $offset + $numParts : $offset; - if ($realOffset < 0 || $realOffset > $numParts) { - throw new \OutOfBoundsException(sprintf('Offset %d is out of bounds', $offset)); - } - - if (null === $length) { - $realLength = $numParts - $realOffset; - } else { - $realLength = $length < 0 ? $length + $numParts - $realOffset : $length; - if ($realLength < 0 || $realLength > $numParts - $realOffset) { - throw new \OutOfBoundsException(sprintf('Length %d is out of bounds', $length)); - } - } - - if ($realLength === 0) { - // Empty slice is represented as null - return null; - } - - return new static(array_slice($parts, $realOffset, $realLength), $this->attributes); - } - - /** - * Concatenate two names, yielding a new Name instance. - * - * The type of the generated instance depends on which class this method is called on, for - * example Name\FullyQualified::concat() will yield a Name\FullyQualified instance. - * - * If one of the arguments is null, a new instance of the other name will be returned. If both - * arguments are null, null will be returned. As such, writing - * Name::concat($namespace, $shortName) - * where $namespace is a Name node or null will work as expected. - * - * @param string|string[]|self|null $name1 The first name - * @param string|string[]|self|null $name2 The second name - * @param array $attributes Attributes to assign to concatenated name - * - * @return static|null Concatenated name - */ - public static function concat($name1, $name2, array $attributes = []) { - if (null === $name1 && null === $name2) { - return null; - } - if (null === $name1) { - return new static($name2, $attributes); - } - if (null === $name2) { - return new static($name1, $attributes); - } else { - return new static( - self::prepareName($name1) . '\\' . self::prepareName($name2), $attributes - ); - } - } - - /** - * Prepares a (string, array or Name node) name for use in name changing methods by converting - * it to a string. - * - * @param string|string[]|self $name Name to prepare - * - * @psalm-return non-empty-string - * @return string Prepared name - */ - private static function prepareName($name): string { - if (\is_string($name)) { - if ('' === $name) { - throw new \InvalidArgumentException('Name cannot be empty'); - } - - return $name; - } - if (\is_array($name)) { - if (empty($name)) { - throw new \InvalidArgumentException('Name cannot be empty'); - } - - return implode('\\', $name); - } - if ($name instanceof self) { - return $name->name; - } - - throw new \InvalidArgumentException( - 'Expected string, array of parts or Name instance' - ); - } - - public function getType(): string { - return 'Name'; - } -} diff --git a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Node/Param.php b/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Node/Param.php deleted file mode 100644 index 57d15b7b..00000000 --- a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Node/Param.php +++ /dev/null @@ -1,119 +0,0 @@ - $attributes Additional attributes - * @param int $flags Optional visibility flags - * @param list $attrGroups PHP attribute groups - * @param PropertyHook[] $hooks Property hooks for promoted properties - */ - public function __construct( - Expr $var, ?Expr $default = null, ?Node $type = null, - bool $byRef = false, bool $variadic = false, - array $attributes = [], - int $flags = 0, - array $attrGroups = [], - array $hooks = [] - ) { - $this->attributes = $attributes; - $this->type = $type; - $this->byRef = $byRef; - $this->variadic = $variadic; - $this->var = $var; - $this->default = $default; - $this->flags = $flags; - $this->attrGroups = $attrGroups; - $this->hooks = $hooks; - } - - public function getSubNodeNames(): array { - return ['attrGroups', 'flags', 'type', 'byRef', 'variadic', 'var', 'default', 'hooks']; - } - - public function getType(): string { - return 'Param'; - } - - /** - * Whether this parameter uses constructor property promotion. - */ - public function isPromoted(): bool { - return $this->flags !== 0 || $this->hooks !== []; - } - - public function isPublic(): bool { - $public = (bool) ($this->flags & Modifiers::PUBLIC); - if ($public) { - return true; - } - - if ($this->hooks === []) { - return false; - } - - return ($this->flags & Modifiers::VISIBILITY_MASK) === 0; - } - - public function isProtected(): bool { - return (bool) ($this->flags & Modifiers::PROTECTED); - } - - public function isPrivate(): bool { - return (bool) ($this->flags & Modifiers::PRIVATE); - } - - public function isReadonly(): bool { - return (bool) ($this->flags & Modifiers::READONLY); - } - - /** - * Whether the promoted property has explicit public(set) visibility. - */ - public function isPublicSet(): bool { - return (bool) ($this->flags & Modifiers::PUBLIC_SET); - } - - /** - * Whether the promoted property has explicit protected(set) visibility. - */ - public function isProtectedSet(): bool { - return (bool) ($this->flags & Modifiers::PROTECTED_SET); - } - - /** - * Whether the promoted property has explicit private(set) visibility. - */ - public function isPrivateSet(): bool { - return (bool) ($this->flags & Modifiers::PRIVATE_SET); - } -} diff --git a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php b/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php deleted file mode 100644 index aaafc5fe..00000000 --- a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php +++ /dev/null @@ -1,11 +0,0 @@ - $attributes Additional attributes - * @param null|Identifier|Name|ComplexType $type Type declaration - * @param Node\AttributeGroup[] $attrGroups PHP attribute groups - * @param Node\PropertyHook[] $hooks Property hooks - */ - public function __construct(int $flags, array $props, array $attributes = [], ?Node $type = null, array $attrGroups = [], array $hooks = []) { - $this->attributes = $attributes; - $this->flags = $flags; - $this->props = $props; - $this->type = $type; - $this->attrGroups = $attrGroups; - $this->hooks = $hooks; - } - - public function getSubNodeNames(): array { - return ['attrGroups', 'flags', 'type', 'props', 'hooks']; - } - - /** - * Whether the property is explicitly or implicitly public. - */ - public function isPublic(): bool { - return ($this->flags & Modifiers::PUBLIC) !== 0 - || ($this->flags & Modifiers::VISIBILITY_MASK) === 0; - } - - /** - * Whether the property is protected. - */ - public function isProtected(): bool { - return (bool) ($this->flags & Modifiers::PROTECTED); - } - - /** - * Whether the property is private. - */ - public function isPrivate(): bool { - return (bool) ($this->flags & Modifiers::PRIVATE); - } - - /** - * Whether the property is static. - */ - public function isStatic(): bool { - return (bool) ($this->flags & Modifiers::STATIC); - } - - /** - * Whether the property is readonly. - */ - public function isReadonly(): bool { - return (bool) ($this->flags & Modifiers::READONLY); - } - - /** - * Whether the property is abstract. - */ - public function isAbstract(): bool { - return (bool) ($this->flags & Modifiers::ABSTRACT); - } - - /** - * Whether the property is final. - */ - public function isFinal(): bool { - return (bool) ($this->flags & Modifiers::FINAL); - } - - /** - * Whether the property has explicit public(set) visibility. - */ - public function isPublicSet(): bool { - return (bool) ($this->flags & Modifiers::PUBLIC_SET); - } - - /** - * Whether the property has explicit protected(set) visibility. - */ - public function isProtectedSet(): bool { - return (bool) ($this->flags & Modifiers::PROTECTED_SET); - } - - /** - * Whether the property has explicit private(set) visibility. - */ - public function isPrivateSet(): bool { - return (bool) ($this->flags & Modifiers::PRIVATE_SET); - } - - public function getType(): string { - return 'Stmt_Property'; - } -} diff --git a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php b/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php deleted file mode 100644 index fe7c9973..00000000 --- a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php +++ /dev/null @@ -1,13 +0,0 @@ - Attributes */ - protected array $attributes; - - /** - * Creates a Node. - * - * @param array $attributes Array of attributes - */ - public function __construct(array $attributes = []) { - $this->attributes = $attributes; - } - - /** - * Gets line the node started in (alias of getStartLine). - * - * @return int Start line (or -1 if not available) - * @phpstan-return -1|positive-int - */ - public function getLine(): int { - return $this->attributes['startLine'] ?? -1; - } - - /** - * Gets line the node started in. - * - * Requires the 'startLine' attribute to be enabled in the lexer (enabled by default). - * - * @return int Start line (or -1 if not available) - * @phpstan-return -1|positive-int - */ - public function getStartLine(): int { - return $this->attributes['startLine'] ?? -1; - } - - /** - * Gets the line the node ended in. - * - * Requires the 'endLine' attribute to be enabled in the lexer (enabled by default). - * - * @return int End line (or -1 if not available) - * @phpstan-return -1|positive-int - */ - public function getEndLine(): int { - return $this->attributes['endLine'] ?? -1; - } - - /** - * Gets the token offset of the first token that is part of this node. - * - * The offset is an index into the array returned by Lexer::getTokens(). - * - * Requires the 'startTokenPos' attribute to be enabled in the lexer (DISABLED by default). - * - * @return int Token start position (or -1 if not available) - */ - public function getStartTokenPos(): int { - return $this->attributes['startTokenPos'] ?? -1; - } - - /** - * Gets the token offset of the last token that is part of this node. - * - * The offset is an index into the array returned by Lexer::getTokens(). - * - * Requires the 'endTokenPos' attribute to be enabled in the lexer (DISABLED by default). - * - * @return int Token end position (or -1 if not available) - */ - public function getEndTokenPos(): int { - return $this->attributes['endTokenPos'] ?? -1; - } - - /** - * Gets the file offset of the first character that is part of this node. - * - * Requires the 'startFilePos' attribute to be enabled in the lexer (DISABLED by default). - * - * @return int File start position (or -1 if not available) - */ - public function getStartFilePos(): int { - return $this->attributes['startFilePos'] ?? -1; - } - - /** - * Gets the file offset of the last character that is part of this node. - * - * Requires the 'endFilePos' attribute to be enabled in the lexer (DISABLED by default). - * - * @return int File end position (or -1 if not available) - */ - public function getEndFilePos(): int { - return $this->attributes['endFilePos'] ?? -1; - } - - /** - * Gets all comments directly preceding this node. - * - * The comments are also available through the "comments" attribute. - * - * @return Comment[] - */ - public function getComments(): array { - return $this->attributes['comments'] ?? []; - } - - /** - * Gets the doc comment of the node. - * - * @return null|Comment\Doc Doc comment object or null - */ - public function getDocComment(): ?Comment\Doc { - $comments = $this->getComments(); - for ($i = count($comments) - 1; $i >= 0; $i--) { - $comment = $comments[$i]; - if ($comment instanceof Comment\Doc) { - return $comment; - } - } - - return null; - } - - /** - * Sets the doc comment of the node. - * - * This will either replace an existing doc comment or add it to the comments array. - * - * @param Comment\Doc $docComment Doc comment to set - */ - public function setDocComment(Comment\Doc $docComment): void { - $comments = $this->getComments(); - for ($i = count($comments) - 1; $i >= 0; $i--) { - if ($comments[$i] instanceof Comment\Doc) { - // Replace existing doc comment. - $comments[$i] = $docComment; - $this->setAttribute('comments', $comments); - return; - } - } - - // Append new doc comment. - $comments[] = $docComment; - $this->setAttribute('comments', $comments); - } - - public function setAttribute(string $key, $value): void { - $this->attributes[$key] = $value; - } - - public function hasAttribute(string $key): bool { - return array_key_exists($key, $this->attributes); - } - - public function getAttribute(string $key, $default = null) { - if (array_key_exists($key, $this->attributes)) { - return $this->attributes[$key]; - } - - return $default; - } - - public function getAttributes(): array { - return $this->attributes; - } - - public function setAttributes(array $attributes): void { - $this->attributes = $attributes; - } - - /** - * @return array - */ - public function jsonSerialize(): array { - return ['nodeType' => $this->getType()] + get_object_vars($this); - } -} diff --git a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/NodeDumper.php b/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/NodeDumper.php deleted file mode 100644 index 39ce86aa..00000000 --- a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/NodeDumper.php +++ /dev/null @@ -1,299 +0,0 @@ - true, - 'startLine' => true, - 'endLine' => true, - 'startFilePos' => true, - 'endFilePos' => true, - 'startTokenPos' => true, - 'endTokenPos' => true, - ]; - - /** - * Constructs a NodeDumper. - * - * Supported options: - * * bool dumpComments: Whether comments should be dumped. - * * bool dumpPositions: Whether line/offset information should be dumped. To dump offset - * information, the code needs to be passed to dump(). - * * bool dumpOtherAttributes: Whether non-comment, non-position attributes should be dumped. - * - * @param array $options Options (see description) - */ - public function __construct(array $options = []) { - $this->dumpComments = !empty($options['dumpComments']); - $this->dumpPositions = !empty($options['dumpPositions']); - $this->dumpOtherAttributes = !empty($options['dumpOtherAttributes']); - } - - /** - * Dumps a node or array. - * - * @param array|Node $node Node or array to dump - * @param string|null $code Code corresponding to dumped AST. This only needs to be passed if - * the dumpPositions option is enabled and the dumping of node offsets - * is desired. - * - * @return string Dumped value - */ - public function dump($node, ?string $code = null): string { - $this->code = $code; - $this->res = ''; - $this->nl = "\n"; - $this->dumpRecursive($node, false); - return $this->res; - } - - /** @param mixed $node */ - protected function dumpRecursive($node, bool $indent = true): void { - if ($indent) { - $this->nl .= " "; - } - if ($node instanceof Node) { - $this->res .= $node->getType(); - if ($this->dumpPositions && null !== $p = $this->dumpPosition($node)) { - $this->res .= $p; - } - $this->res .= '('; - - foreach ($node->getSubNodeNames() as $key) { - $this->res .= "$this->nl " . $key . ': '; - - $value = $node->$key; - if (\is_int($value)) { - if ('flags' === $key || 'newModifier' === $key) { - $this->res .= $this->dumpFlags($value); - continue; - } - if ('type' === $key && $node instanceof Include_) { - $this->res .= $this->dumpIncludeType($value); - continue; - } - if ('type' === $key - && ($node instanceof Use_ || $node instanceof UseItem || $node instanceof GroupUse)) { - $this->res .= $this->dumpUseType($value); - continue; - } - } - $this->dumpRecursive($value); - } - - if ($this->dumpComments && $comments = $node->getComments()) { - $this->res .= "$this->nl comments: "; - $this->dumpRecursive($comments); - } - - if ($this->dumpOtherAttributes) { - foreach ($node->getAttributes() as $key => $value) { - if (isset(self::IGNORE_ATTRIBUTES[$key])) { - continue; - } - - $this->res .= "$this->nl $key: "; - if (\is_int($value)) { - if ('kind' === $key) { - if ($node instanceof Int_) { - $this->res .= $this->dumpIntKind($value); - continue; - } - if ($node instanceof String_ || $node instanceof InterpolatedString) { - $this->res .= $this->dumpStringKind($value); - continue; - } - if ($node instanceof Array_) { - $this->res .= $this->dumpArrayKind($value); - continue; - } - if ($node instanceof List_) { - $this->res .= $this->dumpListKind($value); - continue; - } - } - } - $this->dumpRecursive($value); - } - } - $this->res .= "$this->nl)"; - } elseif (\is_array($node)) { - $this->res .= 'array('; - foreach ($node as $key => $value) { - $this->res .= "$this->nl " . $key . ': '; - $this->dumpRecursive($value); - } - $this->res .= "$this->nl)"; - } elseif ($node instanceof Comment) { - $this->res .= \str_replace("\n", $this->nl, $node->getReformattedText()); - } elseif (\is_string($node)) { - $this->res .= \str_replace("\n", $this->nl, (string)$node); - } elseif (\is_int($node) || \is_float($node)) { - $this->res .= $node; - } elseif (null === $node) { - $this->res .= 'null'; - } elseif (false === $node) { - $this->res .= 'false'; - } elseif (true === $node) { - $this->res .= 'true'; - } else { - throw new \InvalidArgumentException('Can only dump nodes and arrays.'); - } - if ($indent) { - $this->nl = \substr($this->nl, 0, -4); - } - } - - protected function dumpFlags(int $flags): string { - $strs = []; - if ($flags & Modifiers::PUBLIC) { - $strs[] = 'PUBLIC'; - } - if ($flags & Modifiers::PROTECTED) { - $strs[] = 'PROTECTED'; - } - if ($flags & Modifiers::PRIVATE) { - $strs[] = 'PRIVATE'; - } - if ($flags & Modifiers::ABSTRACT) { - $strs[] = 'ABSTRACT'; - } - if ($flags & Modifiers::STATIC) { - $strs[] = 'STATIC'; - } - if ($flags & Modifiers::FINAL) { - $strs[] = 'FINAL'; - } - if ($flags & Modifiers::READONLY) { - $strs[] = 'READONLY'; - } - if ($flags & Modifiers::PUBLIC_SET) { - $strs[] = 'PUBLIC_SET'; - } - if ($flags & Modifiers::PROTECTED_SET) { - $strs[] = 'PROTECTED_SET'; - } - if ($flags & Modifiers::PRIVATE_SET) { - $strs[] = 'PRIVATE_SET'; - } - - if ($strs) { - return implode(' | ', $strs) . ' (' . $flags . ')'; - } else { - return (string) $flags; - } - } - - /** @param array $map */ - private function dumpEnum(int $value, array $map): string { - if (!isset($map[$value])) { - return (string) $value; - } - return $map[$value] . ' (' . $value . ')'; - } - - private function dumpIncludeType(int $type): string { - return $this->dumpEnum($type, [ - Include_::TYPE_INCLUDE => 'TYPE_INCLUDE', - Include_::TYPE_INCLUDE_ONCE => 'TYPE_INCLUDE_ONCE', - Include_::TYPE_REQUIRE => 'TYPE_REQUIRE', - Include_::TYPE_REQUIRE_ONCE => 'TYPE_REQUIRE_ONCE', - ]); - } - - private function dumpUseType(int $type): string { - return $this->dumpEnum($type, [ - Use_::TYPE_UNKNOWN => 'TYPE_UNKNOWN', - Use_::TYPE_NORMAL => 'TYPE_NORMAL', - Use_::TYPE_FUNCTION => 'TYPE_FUNCTION', - Use_::TYPE_CONSTANT => 'TYPE_CONSTANT', - ]); - } - - private function dumpIntKind(int $kind): string { - return $this->dumpEnum($kind, [ - Int_::KIND_BIN => 'KIND_BIN', - Int_::KIND_OCT => 'KIND_OCT', - Int_::KIND_DEC => 'KIND_DEC', - Int_::KIND_HEX => 'KIND_HEX', - ]); - } - - private function dumpStringKind(int $kind): string { - return $this->dumpEnum($kind, [ - String_::KIND_SINGLE_QUOTED => 'KIND_SINGLE_QUOTED', - String_::KIND_DOUBLE_QUOTED => 'KIND_DOUBLE_QUOTED', - String_::KIND_HEREDOC => 'KIND_HEREDOC', - String_::KIND_NOWDOC => 'KIND_NOWDOC', - ]); - } - - private function dumpArrayKind(int $kind): string { - return $this->dumpEnum($kind, [ - Array_::KIND_LONG => 'KIND_LONG', - Array_::KIND_SHORT => 'KIND_SHORT', - ]); - } - - private function dumpListKind(int $kind): string { - return $this->dumpEnum($kind, [ - List_::KIND_LIST => 'KIND_LIST', - List_::KIND_ARRAY => 'KIND_ARRAY', - ]); - } - - /** - * Dump node position, if possible. - * - * @param Node $node Node for which to dump position - * - * @return string|null Dump of position, or null if position information not available - */ - protected function dumpPosition(Node $node): ?string { - if (!$node->hasAttribute('startLine') || !$node->hasAttribute('endLine')) { - return null; - } - - $start = $node->getStartLine(); - $end = $node->getEndLine(); - if ($node->hasAttribute('startFilePos') && $node->hasAttribute('endFilePos') - && null !== $this->code - ) { - $start .= ':' . $this->toColumn($this->code, $node->getStartFilePos()); - $end .= ':' . $this->toColumn($this->code, $node->getEndFilePos()); - } - return "[$start - $end]"; - } - - // Copied from Error class - private function toColumn(string $code, int $pos): int { - if ($pos > strlen($code)) { - throw new \RuntimeException('Invalid position information'); - } - - $lineStartPos = strrpos($code, "\n", $pos - strlen($code)); - if (false === $lineStartPos) { - $lineStartPos = -1; - } - - return $pos - $lineStartPos; - } -} diff --git a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php b/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php deleted file mode 100644 index bb3d6ddb..00000000 --- a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php +++ /dev/null @@ -1,287 +0,0 @@ - Visitors */ - protected array $visitors = []; - - /** @var bool Whether traversal should be stopped */ - protected bool $stopTraversal; - - /** - * Create a traverser with the given visitors. - * - * @param NodeVisitor ...$visitors Node visitors - */ - public function __construct(NodeVisitor ...$visitors) { - $this->visitors = $visitors; - } - - /** - * Adds a visitor. - * - * @param NodeVisitor $visitor Visitor to add - */ - public function addVisitor(NodeVisitor $visitor): void { - $this->visitors[] = $visitor; - } - - /** - * Removes an added visitor. - */ - public function removeVisitor(NodeVisitor $visitor): void { - $index = array_search($visitor, $this->visitors); - if ($index !== false) { - array_splice($this->visitors, $index, 1, []); - } - } - - /** - * Traverses an array of nodes using the registered visitors. - * - * @param Node[] $nodes Array of nodes - * - * @return Node[] Traversed array of nodes - */ - public function traverse(array $nodes): array { - $this->stopTraversal = false; - - foreach ($this->visitors as $visitor) { - if (null !== $return = $visitor->beforeTraverse($nodes)) { - $nodes = $return; - } - } - - $nodes = $this->traverseArray($nodes); - - for ($i = \count($this->visitors) - 1; $i >= 0; --$i) { - $visitor = $this->visitors[$i]; - if (null !== $return = $visitor->afterTraverse($nodes)) { - $nodes = $return; - } - } - - return $nodes; - } - - /** - * Recursively traverse a node. - * - * @param Node $node Node to traverse. - */ - protected function traverseNode(Node $node): void { - foreach ($node->getSubNodeNames() as $name) { - $subNode = $node->$name; - - if (\is_array($subNode)) { - $node->$name = $this->traverseArray($subNode); - if ($this->stopTraversal) { - break; - } - - continue; - } - - if (!$subNode instanceof Node) { - continue; - } - - $traverseChildren = true; - $visitorIndex = -1; - - foreach ($this->visitors as $visitorIndex => $visitor) { - $return = $visitor->enterNode($subNode); - if (null !== $return) { - if ($return instanceof Node) { - $this->ensureReplacementReasonable($subNode, $return); - $subNode = $node->$name = $return; - } elseif (NodeVisitor::DONT_TRAVERSE_CHILDREN === $return) { - $traverseChildren = false; - } elseif (NodeVisitor::DONT_TRAVERSE_CURRENT_AND_CHILDREN === $return) { - $traverseChildren = false; - break; - } elseif (NodeVisitor::STOP_TRAVERSAL === $return) { - $this->stopTraversal = true; - break 2; - } elseif (NodeVisitor::REPLACE_WITH_NULL === $return) { - $node->$name = null; - continue 2; - } else { - throw new \LogicException( - 'enterNode() returned invalid value of type ' . gettype($return) - ); - } - } - } - - if ($traverseChildren) { - $this->traverseNode($subNode); - if ($this->stopTraversal) { - break; - } - } - - for (; $visitorIndex >= 0; --$visitorIndex) { - $visitor = $this->visitors[$visitorIndex]; - $return = $visitor->leaveNode($subNode); - - if (null !== $return) { - if ($return instanceof Node) { - $this->ensureReplacementReasonable($subNode, $return); - $subNode = $node->$name = $return; - } elseif (NodeVisitor::STOP_TRAVERSAL === $return) { - $this->stopTraversal = true; - break 2; - } elseif (NodeVisitor::REPLACE_WITH_NULL === $return) { - $node->$name = null; - break; - } elseif (\is_array($return)) { - throw new \LogicException( - 'leaveNode() may only return an array ' . - 'if the parent structure is an array' - ); - } else { - throw new \LogicException( - 'leaveNode() returned invalid value of type ' . gettype($return) - ); - } - } - } - } - } - - /** - * Recursively traverse array (usually of nodes). - * - * @param array $nodes Array to traverse - * - * @return array Result of traversal (may be original array or changed one) - */ - protected function traverseArray(array $nodes): array { - $doNodes = []; - - foreach ($nodes as $i => $node) { - if (!$node instanceof Node) { - if (\is_array($node)) { - throw new \LogicException('Invalid node structure: Contains nested arrays'); - } - continue; - } - - $traverseChildren = true; - $visitorIndex = -1; - - foreach ($this->visitors as $visitorIndex => $visitor) { - $return = $visitor->enterNode($node); - if (null !== $return) { - if ($return instanceof Node) { - $this->ensureReplacementReasonable($node, $return); - $nodes[$i] = $node = $return; - } elseif (\is_array($return)) { - $doNodes[] = [$i, $return]; - continue 2; - } elseif (NodeVisitor::REMOVE_NODE === $return) { - $doNodes[] = [$i, []]; - continue 2; - } elseif (NodeVisitor::DONT_TRAVERSE_CHILDREN === $return) { - $traverseChildren = false; - } elseif (NodeVisitor::DONT_TRAVERSE_CURRENT_AND_CHILDREN === $return) { - $traverseChildren = false; - break; - } elseif (NodeVisitor::STOP_TRAVERSAL === $return) { - $this->stopTraversal = true; - break 2; - } elseif (NodeVisitor::REPLACE_WITH_NULL === $return) { - throw new \LogicException( - 'REPLACE_WITH_NULL can not be used if the parent structure is an array'); - } else { - throw new \LogicException( - 'enterNode() returned invalid value of type ' . gettype($return) - ); - } - } - } - - if ($traverseChildren) { - $this->traverseNode($node); - if ($this->stopTraversal) { - break; - } - } - - for (; $visitorIndex >= 0; --$visitorIndex) { - $visitor = $this->visitors[$visitorIndex]; - $return = $visitor->leaveNode($node); - - if (null !== $return) { - if ($return instanceof Node) { - $this->ensureReplacementReasonable($node, $return); - $nodes[$i] = $node = $return; - } elseif (\is_array($return)) { - $doNodes[] = [$i, $return]; - break; - } elseif (NodeVisitor::REMOVE_NODE === $return) { - $doNodes[] = [$i, []]; - break; - } elseif (NodeVisitor::STOP_TRAVERSAL === $return) { - $this->stopTraversal = true; - break 2; - } elseif (NodeVisitor::REPLACE_WITH_NULL === $return) { - throw new \LogicException( - 'REPLACE_WITH_NULL can not be used if the parent structure is an array'); - } else { - throw new \LogicException( - 'leaveNode() returned invalid value of type ' . gettype($return) - ); - } - } - } - } - - if (!empty($doNodes)) { - while (list($i, $replace) = array_pop($doNodes)) { - array_splice($nodes, $i, 1, $replace); - } - } - - return $nodes; - } - - private function ensureReplacementReasonable(Node $old, Node $new): void { - if ($old instanceof Node\Stmt && $new instanceof Node\Expr) { - throw new \LogicException( - "Trying to replace statement ({$old->getType()}) " . - "with expression ({$new->getType()}). Are you missing a " . - "Stmt_Expression wrapper?" - ); - } - - if ($old instanceof Node\Expr && $new instanceof Node\Stmt) { - throw new \LogicException( - "Trying to replace expression ({$old->getType()}) " . - "with statement ({$new->getType()})" - ); - } - } -} diff --git a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php b/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php deleted file mode 100644 index 99449c49..00000000 --- a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php +++ /dev/null @@ -1,268 +0,0 @@ -nameContext = new NameContext($errorHandler ?? new ErrorHandler\Throwing()); - $this->preserveOriginalNames = $options['preserveOriginalNames'] ?? false; - $this->replaceNodes = $options['replaceNodes'] ?? true; - } - - /** - * Get name resolution context. - */ - public function getNameContext(): NameContext { - return $this->nameContext; - } - - public function beforeTraverse(array $nodes): ?array { - $this->nameContext->startNamespace(); - return null; - } - - public function enterNode(Node $node) { - if ($node instanceof Stmt\Namespace_) { - $this->nameContext->startNamespace($node->name); - } elseif ($node instanceof Stmt\Use_) { - foreach ($node->uses as $use) { - $this->addAlias($use, $node->type, null); - } - } elseif ($node instanceof Stmt\GroupUse) { - foreach ($node->uses as $use) { - $this->addAlias($use, $node->type, $node->prefix); - } - } elseif ($node instanceof Stmt\Class_) { - if (null !== $node->extends) { - $node->extends = $this->resolveClassName($node->extends); - } - - foreach ($node->implements as &$interface) { - $interface = $this->resolveClassName($interface); - } - - $this->resolveAttrGroups($node); - if (null !== $node->name) { - $this->addNamespacedName($node); - } else { - $node->namespacedName = null; - } - } elseif ($node instanceof Stmt\Interface_) { - foreach ($node->extends as &$interface) { - $interface = $this->resolveClassName($interface); - } - - $this->resolveAttrGroups($node); - $this->addNamespacedName($node); - } elseif ($node instanceof Stmt\Enum_) { - foreach ($node->implements as &$interface) { - $interface = $this->resolveClassName($interface); - } - - $this->resolveAttrGroups($node); - $this->addNamespacedName($node); - } elseif ($node instanceof Stmt\Trait_) { - $this->resolveAttrGroups($node); - $this->addNamespacedName($node); - } elseif ($node instanceof Stmt\Function_) { - $this->resolveSignature($node); - $this->resolveAttrGroups($node); - $this->addNamespacedName($node); - } elseif ($node instanceof Stmt\ClassMethod - || $node instanceof Expr\Closure - || $node instanceof Expr\ArrowFunction - ) { - $this->resolveSignature($node); - $this->resolveAttrGroups($node); - } elseif ($node instanceof Stmt\Property) { - if (null !== $node->type) { - $node->type = $this->resolveType($node->type); - } - $this->resolveAttrGroups($node); - } elseif ($node instanceof Node\PropertyHook) { - foreach ($node->params as $param) { - $param->type = $this->resolveType($param->type); - $this->resolveAttrGroups($param); - } - $this->resolveAttrGroups($node); - } elseif ($node instanceof Stmt\Const_) { - foreach ($node->consts as $const) { - $this->addNamespacedName($const); - } - } elseif ($node instanceof Stmt\ClassConst) { - if (null !== $node->type) { - $node->type = $this->resolveType($node->type); - } - $this->resolveAttrGroups($node); - } elseif ($node instanceof Stmt\EnumCase) { - $this->resolveAttrGroups($node); - } elseif ($node instanceof Expr\StaticCall - || $node instanceof Expr\StaticPropertyFetch - || $node instanceof Expr\ClassConstFetch - || $node instanceof Expr\New_ - || $node instanceof Expr\Instanceof_ - ) { - if ($node->class instanceof Name) { - $node->class = $this->resolveClassName($node->class); - } - } elseif ($node instanceof Stmt\Catch_) { - foreach ($node->types as &$type) { - $type = $this->resolveClassName($type); - } - } elseif ($node instanceof Expr\FuncCall) { - if ($node->name instanceof Name) { - $node->name = $this->resolveName($node->name, Stmt\Use_::TYPE_FUNCTION); - } - } elseif ($node instanceof Expr\ConstFetch) { - $node->name = $this->resolveName($node->name, Stmt\Use_::TYPE_CONSTANT); - } elseif ($node instanceof Stmt\TraitUse) { - foreach ($node->traits as &$trait) { - $trait = $this->resolveClassName($trait); - } - - foreach ($node->adaptations as $adaptation) { - if (null !== $adaptation->trait) { - $adaptation->trait = $this->resolveClassName($adaptation->trait); - } - - if ($adaptation instanceof Stmt\TraitUseAdaptation\Precedence) { - foreach ($adaptation->insteadof as &$insteadof) { - $insteadof = $this->resolveClassName($insteadof); - } - } - } - } - - return null; - } - - /** @param Stmt\Use_::TYPE_* $type */ - private function addAlias(Node\UseItem $use, int $type, ?Name $prefix = null): void { - // Add prefix for group uses - $name = $prefix ? Name::concat($prefix, $use->name) : $use->name; - // Type is determined either by individual element or whole use declaration - $type |= $use->type; - - $this->nameContext->addAlias( - $name, (string) $use->getAlias(), $type, $use->getAttributes() - ); - } - - /** @param Stmt\Function_|Stmt\ClassMethod|Expr\Closure|Expr\ArrowFunction $node */ - private function resolveSignature($node): void { - foreach ($node->params as $param) { - $param->type = $this->resolveType($param->type); - $this->resolveAttrGroups($param); - } - $node->returnType = $this->resolveType($node->returnType); - } - - /** - * @template T of Node\Identifier|Name|Node\ComplexType|null - * @param T $node - * @return T - */ - private function resolveType(?Node $node): ?Node { - if ($node instanceof Name) { - return $this->resolveClassName($node); - } - if ($node instanceof Node\NullableType) { - $node->type = $this->resolveType($node->type); - return $node; - } - if ($node instanceof Node\UnionType || $node instanceof Node\IntersectionType) { - foreach ($node->types as &$type) { - $type = $this->resolveType($type); - } - return $node; - } - return $node; - } - - /** - * Resolve name, according to name resolver options. - * - * @param Name $name Function or constant name to resolve - * @param Stmt\Use_::TYPE_* $type One of Stmt\Use_::TYPE_* - * - * @return Name Resolved name, or original name with attribute - */ - protected function resolveName(Name $name, int $type): Name { - if (!$this->replaceNodes) { - $resolvedName = $this->nameContext->getResolvedName($name, $type); - if (null !== $resolvedName) { - $name->setAttribute('resolvedName', $resolvedName); - } else { - $name->setAttribute('namespacedName', FullyQualified::concat( - $this->nameContext->getNamespace(), $name, $name->getAttributes())); - } - return $name; - } - - if ($this->preserveOriginalNames) { - // Save the original name - $originalName = $name; - $name = clone $originalName; - $name->setAttribute('originalName', $originalName); - } - - $resolvedName = $this->nameContext->getResolvedName($name, $type); - if (null !== $resolvedName) { - return $resolvedName; - } - - // unqualified names inside a namespace cannot be resolved at compile-time - // add the namespaced version of the name as an attribute - $name->setAttribute('namespacedName', FullyQualified::concat( - $this->nameContext->getNamespace(), $name, $name->getAttributes())); - return $name; - } - - protected function resolveClassName(Name $name): Name { - return $this->resolveName($name, Stmt\Use_::TYPE_NORMAL); - } - - protected function addNamespacedName(Node $node): void { - $node->namespacedName = Name::concat( - $this->nameContext->getNamespace(), (string) $node->name); - } - - protected function resolveAttrGroups(Node $node): void { - foreach ($node->attrGroups as $attrGroup) { - foreach ($attrGroup->attrs as $attr) { - $attr->name = $this->resolveClassName($attr->name); - } - } - } -} diff --git a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php b/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php deleted file mode 100644 index b9097820..00000000 --- a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php +++ /dev/null @@ -1,2792 +0,0 @@ -'", - "T_IS_GREATER_OR_EQUAL", - "T_SL", - "T_SR", - "'+'", - "'-'", - "'.'", - "'*'", - "'/'", - "'%'", - "'!'", - "T_INSTANCEOF", - "'~'", - "T_INC", - "T_DEC", - "T_INT_CAST", - "T_DOUBLE_CAST", - "T_STRING_CAST", - "T_ARRAY_CAST", - "T_OBJECT_CAST", - "T_BOOL_CAST", - "T_UNSET_CAST", - "'@'", - "T_POW", - "'['", - "T_NEW", - "T_CLONE", - "T_EXIT", - "T_IF", - "T_ELSEIF", - "T_ELSE", - "T_ENDIF", - "T_LNUMBER", - "T_DNUMBER", - "T_STRING", - "T_STRING_VARNAME", - "T_VARIABLE", - "T_NUM_STRING", - "T_INLINE_HTML", - "T_ENCAPSED_AND_WHITESPACE", - "T_CONSTANT_ENCAPSED_STRING", - "T_ECHO", - "T_DO", - "T_WHILE", - "T_ENDWHILE", - "T_FOR", - "T_ENDFOR", - "T_FOREACH", - "T_ENDFOREACH", - "T_DECLARE", - "T_ENDDECLARE", - "T_AS", - "T_SWITCH", - "T_MATCH", - "T_ENDSWITCH", - "T_CASE", - "T_DEFAULT", - "T_BREAK", - "T_CONTINUE", - "T_GOTO", - "T_FUNCTION", - "T_FN", - "T_CONST", - "T_RETURN", - "T_TRY", - "T_CATCH", - "T_FINALLY", - "T_USE", - "T_INSTEADOF", - "T_GLOBAL", - "T_STATIC", - "T_ABSTRACT", - "T_FINAL", - "T_PRIVATE", - "T_PROTECTED", - "T_PUBLIC", - "T_READONLY", - "T_PUBLIC_SET", - "T_PROTECTED_SET", - "T_PRIVATE_SET", - "T_VAR", - "T_UNSET", - "T_ISSET", - "T_EMPTY", - "T_HALT_COMPILER", - "T_CLASS", - "T_TRAIT", - "T_INTERFACE", - "T_ENUM", - "T_EXTENDS", - "T_IMPLEMENTS", - "T_OBJECT_OPERATOR", - "T_NULLSAFE_OBJECT_OPERATOR", - "T_LIST", - "T_ARRAY", - "T_CALLABLE", - "T_CLASS_C", - "T_TRAIT_C", - "T_METHOD_C", - "T_FUNC_C", - "T_PROPERTY_C", - "T_LINE", - "T_FILE", - "T_START_HEREDOC", - "T_END_HEREDOC", - "T_DOLLAR_OPEN_CURLY_BRACES", - "T_CURLY_OPEN", - "T_PAAMAYIM_NEKUDOTAYIM", - "T_NAMESPACE", - "T_NS_C", - "T_DIR", - "T_NS_SEPARATOR", - "T_ELLIPSIS", - "T_NAME_FULLY_QUALIFIED", - "T_NAME_QUALIFIED", - "T_NAME_RELATIVE", - "T_ATTRIBUTE", - "';'", - "']'", - "'('", - "')'", - "'{'", - "'}'", - "'`'", - "'\"'", - "'$'" - ); - - protected array $tokenToSymbol = array( - 0, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 56, 170, 172, 171, 55, 172, 172, - 165, 166, 53, 50, 8, 51, 52, 54, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 31, 163, - 44, 16, 46, 30, 68, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 70, 172, 164, 36, 172, 169, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 167, 35, 168, 58, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 1, 2, 3, 4, - 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 32, 33, 34, 37, 38, 39, 40, - 41, 42, 43, 45, 47, 48, 49, 57, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 69, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162 - ); - - protected array $action = array( - 128, 129, 130, 565, 131, 132, 944, 754, 755, 756, - 133, 38, 838, 485, 561, 1365,-32766,-32766,-32766, 0, - 829, 1122, 1123, 1124, 1118, 1117, 1116, 1125, 1119, 1120, - 1121,-32766,-32766,-32766, -332, 748, 747,-32766, 840,-32766, - -32766,-32766,-32766,-32766,-32766,-32766,-32767,-32767,-32767,-32767, - -32767, 24,-32766, 1034, -568, 757, 1122, 1123, 1124, 1118, - 1117, 1116, 1125, 1119, 1120, 1121, 2, 381, 382, 265, - 134, 384, 761, 762, 763, 764, 1111, 425, 426, 1300, - 329, 36, 248, 26, 291, 818, 765, 766, 767, 768, - 769, 770, 771, 772, 773, 774, 794, 566, 795, 796, - 797, 798, 786, 787, 346, 347, 789, 790, 775, 776, - 777, 779, 780, 781, 357, 821, 822, 823, 824, 825, - 567, -568, -568, 299, 782, 783, 568, 569, -194, 806, - 804, 805, 817, 801, 802, 35, -193, 570, 571, 800, - 572, 573, 574, 575,-32766, 576, 577, 471, 472, 486, - 238, -568, 803, 578, 579, -371, 135, -371, 128, 129, - 130, 565, 131, 132, 1067, 754, 755, 756, 133, 38, - -32766, 136, 728, 1027, 1026, 1025, 1031, 1028, 1029, 1030, - -32766,-32766,-32766,-32767,-32767,-32767,-32767, 101, 102, 103, - 104, 105, -332, 748, 747, 1043, 923,-32766,-32766,-32766, - 839,-32766, 145,-32766,-32766,-32766,-32766,-32766,-32766,-32766, - -32766,-32766,-32766, 757,-32766,-32766,-32766, 611,-32766, 290, - -32766,-32766,-32766,-32766,-32766, 834, 718, 265, 134, 384, - 761, 762, 763, 764, -615,-32766, 426,-32766,-32766,-32766, - -32766, -615, 251, 818, 765, 766, 767, 768, 769, 770, - 771, 772, 773, 774, 794, 566, 795, 796, 797, 798, - 786, 787, 346, 347, 789, 790, 775, 776, 777, 779, - 780, 781, 357, 821, 822, 823, 824, 825, 567, 913, - 426, 310, 782, 783, 568, 569, -194, 806, 804, 805, - 817, 801, 802, 1288, -193, 570, 571, 800, 572, 573, - 574, 575, -273, 576, 577, 835, 82, 83, 84, -85, - 803, 578, 579, 237, 148, 778, 749, 750, 751, 752, - 753, 150, 754, 755, 756, 791, 792, 37,-32766, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 1043, 276,-32766,-32766,-32766, 925, 1263, - 1262, 1264, 713, 831, 312, 393, 109, 7, 1097, 47, - 757,-32766,-32766,-32766, 838, -85,-32766, 1095,-32766,-32766, - -32766, 1268,-32766,-32766, 758, 759, 760, 761, 762, 763, - 764, 994,-32766, 827,-32766,-32766, 923, -615, 324, -615, - 818, 765, 766, 767, 768, 769, 770, 771, 772, 773, - 774, 794, 816, 795, 796, 797, 798, 786, 787, 788, - 815, 789, 790, 775, 776, 777, 779, 780, 781, 820, - 821, 822, 823, 824, 825, 826, 300, 301, 342, 782, - 783, 784, 785, 833, 806, 804, 805, 817, 801, 802, - 715, 1040, 793, 799, 800, 807, 808, 810, 809, 140, - 811, 812, 838, 327, 343,-32766, 125, 803, 814, 813, - 49, 50, 51, 517, 52, 53, 1043, -110, 371, 913, - 54, 55, -110, 56, -110, -566,-32766,-32766,-32766, 306, - 1043, 126, -110, -110, -110, -110, -110, -110, -110, -110, - -110, -110, -110, -612, 1096, 106, 107, 108, 740, 276, - -612, 963, 964,-32766, 290, 287, 965, 1330, 57, 58, - -32766, 109, 375, 995, 59, 959, 60, 245, 246, 61, - 62, 63, 64, 65, 66, 67, 68,-32766, 28, 267, - 69, 441, 518, 391, -346, 74, 1294, 1295, 519, 443, - 838, 327, -566, -566, 1292, 42, 20, 520, 925, 521, - 923, 522, 713, 523, -564, 693, 524, 525, -566, 923, - 444, 44, 45, 447, 378, 377, -78, 46, 526, 923, - -572, 445, -566, 369, 341, 1346, 103, 104, 105, -563, - 1254, 923, 383, 382, 446, 528, 529, 530, 865, 719, - 866, 694, 425, 461, 462, 463, 844, 532, 533, 720, - 1280, 1281, 1282, 1283, 1285, 1277, 1278, 298, 865, 151, - 866, 723, 153, 1284, 1279, 695, 696, 1263, 1262, 1264, - 299, -564, -564, 70, -153, -153, -153, 322, 323, 327, - 154, -4, 923, 913, 1263, 1262, 1264, -564, 155, -153, - 283, -153, 913, -153, 157, -153, -563, -563, 33, -571, - 1350, -564, 913, -58, 829, 376, -612, 1349, -612, 748, - 747, 837, -563, -606, 913, -606, 963, 964, -57, 748, - 747, 527, 123, 81, -570, 1040, -563, 327, 617, 899, - 959, -110, -110, -110, 32, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 124, -565, - 1043, 947, 28, 268, 149, 408, 923, 1375, 829, 137, - 1376, 138, 925, 144, 838, 913, 713, -153, 1292, 660, - 21, 925, 679, 680, 283, 713, 158, 1170, 1172, 379, - 380, 980, 385, 386, 159, 713, 730, 376, -562, 438, - 1066, 141, 160, 925, 297, 327, 161, 713, 963, 964, - 946, 651, 652, 527, 1254, -87, 162, -306, 748, 747, - -84, 531, 959, -110, -110, -110, -565, -565, -78, 287, - 1268, 532, 533, -73, 1280, 1281, 1282, 1283, 1285, 1277, - 1278, -72, -565, -71, -70, 11, 1261, 1284, 1279, 913, - -69, 748, 747, -68, 925,-32766, -565, 72, 713, -4, - -16, 1261, 323, 327, -67, -562, -562, 291,-32766,-32766, - -32766, -66,-32766, -65,-32766, -46,-32766, -18, 142,-32766, - 275, -562, 1259, 284,-32766,-32766,-32766, 729,-32766, 732, - -32766,-32766, 922, 147, 1261, -562,-32766, 422, 28, 267, - -302,-32766,-32766,-32766, 279,-32766, 1042,-32766,-32766,-32766, - 838, 838,-32766, 288, 1292, 1040, 280,-32766,-32766,-32766, - 285, 286, 335,-32766,-32766, 1263, 1262, 1264, 925,-32766, - 422, 289, 713, 28, 268, 292, 293, 276, 940, 73, - 1043,-32766, 109, 689, 146, 838, -110, -110, -562, 1292, - 1254, -110, 829,-32766, 1377, 704, 582, 10, 661, 838, - -110, 1129, 706, 649, 283, 307, 960,-32766, 533,-32766, - 1280, 1281, 1282, 1283, 1285, 1277, 1278, 682, 1043, 305, - -50, 468, 1299, 1284, 1279, 1254, 666, -528, 496, 667, - 304, 299, 683, 72, 74, 1301, 588,-32766, 323, 327, - 327, -518, 290, 533, 40, 1280, 1281, 1282, 1283, 1285, - 1277, 1278, 8, 139, 0, -562, -562, 27, 1284, 1279, - -276, 407, 0,-32766, 0, 0, 0, 0, 72, 1261, - 311, -562, 0, 323, 327, 0,-32766,-32766,-32766, 0, - -32766, 373,-32766, 0,-32766, -562, 0,-32766, 0, 0, - 615, 0,-32766,-32766,-32766, 923,-32766, 0,-32766,-32766, - 942, 1289, 1261, 837,-32766, 422, 41, 299, 34,-32766, - -32766,-32766, 737,-32766, 738,-32766,-32766,-32766, 923, 857, - -32766, 904, 1004, 981, 988,-32766,-32766,-32766, 978,-32766, - 989,-32766,-32766, 902, 976, 1261, 1100,-32766, 422, 48, - 1103, 1104,-32766,-32766,-32766, 1101,-32766, 1102,-32766,-32766, - -32766, 1108, -600,-32766, 849, 1316, 1334, 491,-32766,-32766, - -32766, 1368,-32766, 654,-32766,-32766, -599, -598, 1261, 595, - -32766, 422, -572, -571, 1268,-32766,-32766,-32766, 913,-32766, - -570,-32766,-32766,-32766, -569, -512,-32766, -274, 1, 29, - 30,-32766,-32766,-32766, -251, -251, -251,-32766,-32766, 39, - 376, 913, 43,-32766, 422, 71, 302, 303, 75, 76, - 77, 963, 964, 78, 79,-32766, 527, -250, -250, -250, - -273, 80, 374, 376, 899, 959, -110, -110, -110, 143, - 152, 156, 243, 331, 963, 964, 127, 358, 359, 527, - 360, 361, 362, 363, 364, 365, 366, 899, 959, -110, - -110, -110,-32766, 13, 367, 838, 368, 925, 1261, 14, - 370, 713, -251, 439, 560,-32766,-32766,-32766, 15,-32766, - 16,-32766, 18,-32766, 406, 487,-32766, 488, 495, 498, - 925,-32766,-32766,-32766, 713, -250, 499,-32766,-32766, 500, - -110, -110, 501,-32766, 422, -110, 505, 506, 507, 515, - 593, 699, 1069, 1210, -110,-32766, 1290, 1068, 1049, 1249, - 1045, -278, -102,-32766, 12, 17, 22, 296, 405, 607, - 612, 640, 705, 1214, 1267, 1211, 1347, 0, 321, 372, - 714, 717, 721, 722, 724, 299, 725, 726, 74, 727, - 1227, 731, 716, 0, 327, 411, 1293, 734, 900, 1372, - 1374, 860, 859, 953, 996, 1373, 952, 950, 951, 954, - 1242, 933, 943, 931, 986, 987, 638, 1371, 1328, 1317, - 1335, 1344, 0, 0, 0, 327 - ); - - protected array $actionCheck = array( - 2, 3, 4, 5, 6, 7, 1, 9, 10, 11, - 12, 13, 82, 31, 85, 85, 9, 10, 11, 0, - 80, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 9, 10, 11, 8, 37, 38, 30, 1, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 101, 30, 1, 70, 57, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 8, 106, 107, 71, - 72, 73, 74, 75, 76, 77, 126, 116, 80, 150, - 70, 151, 152, 8, 30, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 137, 138, 162, 126, 127, 128, 129, 8, 131, - 132, 133, 134, 135, 136, 8, 8, 139, 140, 141, - 142, 143, 144, 145, 9, 147, 148, 137, 138, 167, - 14, 167, 154, 155, 156, 106, 158, 108, 2, 3, - 4, 5, 6, 7, 166, 9, 10, 11, 12, 13, - 116, 8, 167, 119, 120, 121, 122, 123, 124, 125, - 9, 10, 11, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 166, 37, 38, 141, 1, 9, 10, 11, - 163, 30, 8, 32, 33, 34, 35, 36, 37, 38, - 9, 10, 11, 57, 9, 10, 11, 1, 30, 165, - 32, 33, 34, 35, 36, 80, 31, 71, 72, 73, - 74, 75, 76, 77, 1, 30, 80, 32, 33, 34, - 35, 8, 8, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 84, - 80, 8, 126, 127, 128, 129, 166, 131, 132, 133, - 134, 135, 136, 1, 166, 139, 140, 141, 142, 143, - 144, 145, 166, 147, 148, 160, 9, 10, 11, 31, - 154, 155, 156, 97, 158, 2, 3, 4, 5, 6, - 7, 14, 9, 10, 11, 12, 13, 30, 116, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 141, 57, 9, 10, 11, 163, 159, - 160, 161, 167, 80, 8, 106, 69, 108, 168, 70, - 57, 9, 10, 11, 82, 97, 30, 1, 32, 33, - 34, 1, 9, 10, 71, 72, 73, 74, 75, 76, - 77, 31, 30, 80, 32, 33, 1, 164, 8, 166, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 137, 138, 8, 126, - 127, 128, 129, 160, 131, 132, 133, 134, 135, 136, - 167, 116, 139, 140, 141, 142, 143, 144, 145, 167, - 147, 148, 82, 171, 8, 116, 167, 154, 155, 156, - 2, 3, 4, 5, 6, 7, 141, 101, 8, 84, - 12, 13, 106, 15, 108, 70, 9, 10, 11, 113, - 141, 14, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 1, 163, 53, 54, 55, 167, 57, - 8, 117, 118, 116, 165, 30, 122, 1, 50, 51, - 140, 69, 8, 163, 56, 131, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 140, 70, 71, - 72, 73, 74, 8, 168, 165, 78, 79, 80, 8, - 82, 171, 137, 138, 86, 87, 88, 89, 163, 91, - 1, 93, 167, 95, 70, 80, 98, 99, 153, 1, - 8, 103, 104, 105, 106, 107, 16, 109, 110, 1, - 165, 8, 167, 115, 116, 1, 50, 51, 52, 70, - 122, 1, 106, 107, 8, 127, 128, 129, 106, 31, - 108, 116, 116, 132, 133, 134, 8, 139, 140, 31, - 142, 143, 144, 145, 146, 147, 148, 149, 106, 14, - 108, 31, 14, 155, 156, 140, 141, 159, 160, 161, - 162, 137, 138, 165, 75, 76, 77, 169, 170, 171, - 14, 0, 1, 84, 159, 160, 161, 153, 14, 90, - 165, 92, 84, 94, 14, 96, 137, 138, 14, 165, - 1, 167, 84, 16, 80, 106, 164, 8, 166, 37, - 38, 159, 153, 164, 84, 166, 117, 118, 16, 37, - 38, 122, 16, 167, 165, 116, 167, 171, 51, 130, - 131, 132, 133, 134, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 16, 70, - 141, 73, 70, 71, 101, 102, 1, 80, 80, 16, - 83, 16, 163, 16, 82, 84, 167, 168, 86, 75, - 76, 163, 75, 76, 165, 167, 16, 59, 60, 106, - 107, 163, 106, 107, 16, 167, 31, 106, 70, 108, - 1, 167, 16, 163, 113, 171, 16, 167, 117, 118, - 122, 111, 112, 122, 122, 31, 16, 35, 37, 38, - 31, 130, 131, 132, 133, 134, 137, 138, 31, 30, - 1, 139, 140, 31, 142, 143, 144, 145, 146, 147, - 148, 31, 153, 31, 31, 154, 80, 155, 156, 84, - 31, 37, 38, 31, 163, 74, 167, 165, 167, 168, - 31, 80, 170, 171, 31, 137, 138, 30, 87, 88, - 89, 31, 91, 31, 93, 31, 95, 31, 31, 98, - 31, 153, 116, 31, 103, 104, 105, 31, 74, 31, - 109, 110, 31, 31, 80, 167, 115, 116, 70, 71, - 35, 87, 88, 89, 35, 91, 140, 93, 127, 95, - 82, 82, 98, 37, 86, 116, 35, 103, 104, 105, - 35, 35, 35, 109, 110, 159, 160, 161, 163, 115, - 116, 37, 167, 70, 71, 37, 37, 57, 38, 158, - 141, 127, 69, 77, 70, 82, 117, 118, 70, 86, - 122, 122, 80, 116, 83, 80, 89, 97, 90, 82, - 131, 82, 92, 113, 165, 114, 131, 85, 140, 140, - 142, 143, 144, 145, 146, 147, 148, 94, 141, 136, - 31, 97, 150, 155, 156, 122, 96, 153, 97, 100, - 135, 162, 100, 165, 165, 150, 157, 140, 170, 171, - 171, 153, 165, 140, 163, 142, 143, 144, 145, 146, - 147, 148, 153, 31, -1, 137, 138, 153, 155, 156, - 166, 168, -1, 74, -1, -1, -1, -1, 165, 80, - 135, 153, -1, 170, 171, -1, 87, 88, 89, -1, - 91, 153, 93, -1, 95, 167, -1, 98, -1, -1, - 157, -1, 103, 104, 105, 1, 74, -1, 109, 110, - 158, 164, 80, 159, 115, 116, 163, 162, 167, 87, - 88, 89, 163, 91, 163, 93, 127, 95, 1, 163, - 98, 163, 163, 163, 163, 103, 104, 105, 163, 74, - 163, 109, 110, 163, 163, 80, 163, 115, 116, 70, - 163, 163, 87, 88, 89, 163, 91, 163, 93, 127, - 95, 163, 165, 98, 164, 164, 164, 102, 103, 104, - 105, 164, 74, 164, 109, 110, 165, 165, 80, 81, - 115, 116, 165, 165, 1, 87, 88, 89, 84, 91, - 165, 93, 127, 95, 165, 165, 98, 166, 165, 165, - 165, 103, 104, 105, 100, 101, 102, 109, 110, 165, - 106, 84, 165, 115, 116, 165, 137, 138, 165, 165, - 165, 117, 118, 165, 165, 127, 122, 100, 101, 102, - 166, 165, 153, 106, 130, 131, 132, 133, 134, 165, - 165, 165, 165, 165, 117, 118, 167, 165, 165, 122, - 165, 165, 165, 165, 165, 165, 165, 130, 131, 132, - 133, 134, 74, 166, 165, 82, 165, 163, 80, 166, - 165, 167, 168, 165, 165, 87, 88, 89, 166, 91, - 166, 93, 166, 95, 166, 166, 98, 166, 166, 166, - 163, 103, 104, 105, 167, 168, 166, 109, 110, 166, - 117, 118, 166, 115, 116, 122, 166, 166, 166, 166, - 166, 166, 166, 166, 131, 127, 166, 166, 166, 166, - 166, 166, 166, 140, 166, 166, 166, 166, 166, 166, - 166, 166, 166, 166, 166, 166, 166, -1, 167, 167, - 167, 167, 167, 167, 167, 162, 167, 167, 165, 167, - 169, 167, 167, -1, 171, 168, 170, 168, 168, 168, - 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, - 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, - 168, 168, -1, -1, -1, 171 - ); - - protected array $actionBase = array( - 0, -2, 156, 559, 641, 1004, 1027, 485, 292, 200, - -60, 283, 568, 590, 590, 715, 590, 195, 578, 894, - 395, 395, 395, 825, 313, 313, 825, 313, 731, 731, - 731, 731, 764, 764, 965, 965, 998, 932, 899, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, - 1088, 1088, 1088, 37, 360, 216, 644, 1061, 1067, 1063, - 1068, 1059, 1058, 1062, 1064, 1069, 1109, 1110, 812, 1111, - 1112, 1108, 1113, 1065, 909, 1060, 1066, 297, 297, 297, - 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, - 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, - 297, 297, 297, 297, 135, 477, 373, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 642, 642, 22, - 22, 22, 362, 813, 778, 813, 813, 813, 813, 813, - 813, 813, 813, 346, 205, 678, 188, 171, 171, 7, - 7, 7, 7, 7, 376, 779, 54, 1083, 1083, 139, - 139, 139, 139, -50, 49, 749, 380, 787, -39, 569, - 569, 536, 536, 335, 335, 349, 349, 335, 335, 335, - 212, 212, 212, 212, 415, 494, 519, 512, -71, 807, - 584, 584, 584, 584, 807, 807, 807, 807, 795, 1086, - 807, 807, 807, 639, 828, 828, 979, 452, 452, 452, - 828, 492, -70, -70, 492, 394, -70, 516, 982, 637, - 988, 397, 785, 486, 509, 397, -16, 299, 502, 233, - 854, 633, 854, 1056, 832, 832, 794, 752, 898, 1085, - 1070, 839, 1106, 842, 1107, 471, 10, 747, 1055, 1055, - 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1114, - 632, 1056, 145, 1114, 1114, 1114, 632, 632, 632, 632, - 632, 632, 632, 632, 796, 632, 632, 650, 145, 654, - 657, 145, 837, 632, 798, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, -18, 37, 37, 360, 5, - 5, 37, 341, 52, 5, 5, 5, 5, 37, 37, - 37, 37, 633, 830, 789, 636, 278, 843, 128, 830, - 830, 830, 26, 136, 120, 732, 815, 259, 822, 822, - 829, 933, 933, 822, 827, 822, 829, 822, 822, 933, - 933, 855, 933, 163, 541, 430, 514, 562, 933, 273, - 822, 822, 822, 822, 845, 933, 58, 573, 822, 234, - 194, 822, 822, 845, 805, 802, 793, 933, 933, 933, - 845, 470, 793, 793, 793, 859, 861, 800, 799, 390, - 356, 598, 127, 850, 799, 799, 822, 535, 800, 799, - 800, 799, 852, 799, 799, 799, 800, 799, 827, 456, - 799, 720, 728, 586, 75, 799, 19, 950, 953, 734, - 954, 944, 955, 1008, 958, 959, 1073, 930, 977, 947, - 966, 1009, 935, 934, 811, 666, 692, 809, 784, 929, - 823, 823, 823, 917, 918, 823, 823, 823, 823, 823, - 823, 823, 823, 666, 847, 838, 817, 983, 703, 705, - 1044, 782, 1090, 1081, 982, 950, 959, 739, 947, 966, - 935, 934, 792, 790, 772, 783, 769, 763, 760, 762, - 797, 1046, 974, 791, 707, 1016, 985, 1089, 1071, 986, - 987, 1018, 1047, 866, 1050, 1091, 824, 1092, 1093, 900, - 989, 1074, 823, 912, 897, 901, 988, 925, 666, 902, - 1051, 997, 851, 1019, 1021, 1072, 834, 821, 907, 1094, - 990, 991, 999, 1075, 1076, 853, 1003, 804, 1022, 841, - 803, 1023, 1030, 1033, 1036, 1077, 1095, 1079, 911, 1080, - 868, 818, 931, 840, 1096, 307, 835, 836, 849, 1005, - 605, 978, 1082, 1087, 1097, 1040, 1041, 1042, 1098, 1099, - 975, 869, 1012, 833, 1014, 964, 870, 871, 608, 848, - 1052, 819, 831, 844, 626, 634, 1100, 1101, 1102, 976, - 806, 816, 875, 877, 1053, 826, 1054, 1103, 640, 880, - 1104, 1045, 736, 740, 560, 662, 647, 750, 820, 1084, - 814, 801, 810, 1001, 740, 808, 881, 1105, 883, 887, - 888, 1043, 892, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 468, 468, 468, 468, 468, 468, 313, - 313, 313, 313, 313, 468, 468, 468, 468, 468, 468, - 468, 313, 468, 468, 468, 313, 0, 0, 313, 0, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 297, 297, 297, 297, 297, - 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, - 297, 297, 297, 297, 297, 297, 297, 297, 297, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 297, 297, 297, 297, - 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, - 297, 297, 297, 297, 297, 297, 297, 297, 297, 716, - 716, 297, 297, 297, 297, 716, 716, 716, 716, 716, - 716, 716, 716, 716, 716, 297, 297, 0, 297, 297, - 297, 297, 297, 297, 297, 297, 855, 716, 716, 716, - 716, 452, 452, 452, 452, -95, -95, 716, 716, 716, - 394, 716, 716, 452, 452, 716, 716, 716, 716, 716, - 716, 716, 716, 716, 716, 716, 0, 0, 0, 145, - -70, 716, 827, 827, 827, 827, 716, 716, 716, 716, - -70, -70, 716, 716, 716, 0, 0, 0, 0, 0, - 0, 0, 0, 145, 0, 0, 145, 0, 0, 827, - 638, 827, 638, 716, 394, 855, 659, 716, 0, 0, - 0, 0, 145, 827, 145, 632, -70, -70, 632, 632, - 5, 37, 659, 613, 613, 613, 613, 0, 0, 633, - 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, - 855, 827, 0, 855, 0, 827, 827, 827, 0, 0, - 0, 0, 0, 0, 0, 0, 933, 0, 0, 0, - 0, 0, 0, 0, 827, 0, 933, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 827, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 823, 834, 0, 0, 834, - 0, 823, 823, 823, 0, 0, 0, 848, 826 - ); - - protected array $actionDefault = array( - 3,32767, 102,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767, 100,32767, 618, 618, - 618, 618,32767,32767, 255, 102,32767,32767, 487, 404, - 404, 404,32767,32767, 560, 560, 560, 560, 560,32767, - 32767,32767,32767,32767,32767, 487,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767, 36, 7, - 8, 10, 11, 49, 17, 328, 100,32767,32767,32767, - 32767,32767,32767,32767,32767, 102,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767, 611,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767, 392, 491, 470, - 471, 473, 474, 403, 561, 617, 331, 614, 333, 402, - 145, 343, 334, 243, 259, 492, 260, 493, 496, 497, - 216, 389, 149, 150, 434, 488, 436, 486, 490, 435, - 409, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 424, 425, 426, 427, 407, 408, 489,32767,32767, 467, - 466, 465, 432,32767,32767,32767,32767,32767,32767,32767, - 32767, 102,32767, 433, 437, 406, 440, 438, 439, 456, - 457, 454, 455, 458,32767,32767, 320,32767,32767, 459, - 460, 461, 462, 370, 368,32767,32767, 320, 111,32767, - 32767, 447, 448,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767, 504, 554, 464,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 102,32767, 100, 556, 429, 431, 524, 442, 443, 441, - 410,32767, 529,32767, 102,32767, 531,32767,32767,32767, - 32767,32767,32767,32767,32767,32767, 555,32767, 562, 562, - 32767, 517, 100, 195,32767, 530, 195, 195,32767,32767, - 32767,32767,32767,32767,32767,32767, 625, 517, 110, 110, - 110, 110, 110, 110, 110, 110, 110, 110, 110,32767, - 195, 110,32767,32767,32767, 100, 195, 195, 195, 195, - 195, 195, 195, 195, 532, 195, 195, 190,32767, 269, - 271, 102, 579, 195, 534,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767, 517, 452, 138,32767, 519, 138, 562, 444, - 445, 446, 562, 562, 562, 316, 293,32767,32767,32767, - 32767, 532, 532, 100, 100, 100, 100,32767,32767,32767, - 32767, 111, 503, 99, 99, 99, 99, 99, 103, 101, - 32767,32767,32767,32767, 224,32767, 101, 99,32767, 101, - 101,32767,32767, 224, 226, 213, 228,32767, 583, 584, - 224, 101, 228, 228, 228, 248, 248, 506, 322, 101, - 99, 101, 101, 197, 322, 322,32767, 101, 506, 322, - 506, 322, 199, 322, 322, 322, 506, 322,32767, 101, - 322, 215, 392, 99, 99, 322,32767,32767,32767, 519, - 32767,32767,32767,32767,32767,32767,32767, 223,32767,32767, - 32767,32767,32767,32767,32767,32767, 549,32767, 567, 581, - 450, 451, 453, 566, 564, 475, 476, 477, 478, 479, - 480, 481, 483, 613,32767, 523,32767,32767,32767, 342, - 32767, 623,32767,32767,32767, 9, 74, 512, 42, 43, - 51, 57, 538, 539, 540, 541, 535, 536, 542, 537, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767, 624,32767, 562,32767,32767, - 32767,32767, 449, 544, 589,32767,32767, 563, 616,32767, - 32767,32767,32767,32767,32767,32767, 138,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767, 549,32767, 136, - 32767,32767,32767,32767,32767,32767,32767,32767, 545,32767, - 32767,32767, 562,32767,32767,32767,32767, 318, 315,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767, 562,32767,32767,32767,32767, - 32767, 295,32767, 312,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767, 388, 519, 298, 300, 301,32767,32767,32767, - 32767, 364,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767, 152, 152, 3, 3, 345, 152, 152, - 152, 345, 345, 152, 345, 345, 345, 152, 152, 152, - 152, 152, 152, 281, 185, 263, 266, 248, 248, 152, - 356, 152 - ); - - protected array $goto = array( - 196, 196, 1041, 352, 700, 465, 587, 470, 470, 1072, - 736, 641, 643, 1205, 855, 663, 470, 856, 709, 687, - 690, 1014, 698, 707, 1010, 625, 662, 166, 166, 166, - 166, 220, 197, 193, 193, 176, 178, 215, 193, 193, - 193, 193, 193, 194, 194, 194, 194, 194, 188, 189, - 190, 191, 192, 217, 215, 218, 540, 541, 423, 542, - 545, 546, 547, 548, 549, 550, 551, 552, 1156, 167, - 168, 169, 195, 170, 171, 172, 165, 173, 174, 175, - 177, 214, 216, 219, 239, 242, 253, 254, 256, 257, - 258, 259, 260, 261, 262, 263, 269, 270, 271, 272, - 281, 282, 317, 318, 319, 429, 430, 431, 602, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 179, 236, 180, 188, 189, 190, - 191, 192, 217, 1156, 198, 199, 200, 201, 240, 181, - 182, 202, 183, 203, 199, 184, 241, 198, 164, 204, - 205, 185, 206, 207, 208, 186, 209, 210, 187, 211, - 212, 213, 278, 278, 278, 278, 858, 433, 665, 979, - 916, 604, 917, 428, 320, 314, 315, 338, 597, 432, - 339, 434, 642, 627, 627, 896, 854, 896, 896, 1291, - 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 614, - 628, 631, 632, 633, 634, 655, 656, 657, 711, 830, - 871, 460, 912, 907, 908, 921, 864, 909, 861, 910, - 911, 862, 356, 915, 868, 421, 883, 482, 867, 870, - 1361, 1361, 356, 356, 484, 1094, 1089, 1090, 1091, 889, - 603, 1107, 397, 400, 605, 609, 356, 356, 1361, 594, - 356, 712, 344, 1378, 353, 354, 511, 703, 442, 1105, - 1260, 1041, 1260, 1260, 350, 559, 1364, 1364, 356, 356, - 1041, 1260, 1041, 1351, 1041, 1041, 345, 344, 1041, 1041, - 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1000, - 1236, 948, 249, 249, 1260, 1237, 1240, 949, 1241, 1260, - 1260, 1260, 1260, 1114, 1115, 1260, 1260, 1260, 1343, 1343, - 1343, 1343, 564, 557, 851, 427, 1322, 616, 395, 247, - 247, 247, 247, 244, 250, 592, 929, 503, 664, 504, - 930, 355, 355, 355, 355, 510, 945, 512, 945, 479, - 1336, 1337, 328, 557, 564, 589, 590, 330, 600, 606, - 1153, 621, 622, 555, 1065, 555, 555, 658, 659, 25, - 676, 677, 678, 440, 555, 1310, 1310, 686, 559, 851, - 670, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, - 1310, 1044, 1044, 1047, 1046, 685, 956, 458, 340, 1036, - 1052, 1053, 973, 973, 973, 973, 1050, 1051, 458, 967, - 974, 1307, 1307, 971, 412, 708, 848, 1307, 1307, 1307, - 1307, 1307, 1307, 1307, 1307, 1307, 1307, 5, 610, 6, - 873, 934, 1143, 451, 451, 876, 451, 451, 1333, 962, - 1333, 1333, 1253, 1019, 404, 553, 553, 553, 553, 1333, - 608, 875, 620, 668, 998, 1251, 558, 584, 1022, 869, - 739, 558, 885, 584, 480, 398, 464, 1078, 697, 326, - 309, 1250, 832, 1345, 1345, 1345, 1345, 1082, 473, 601, - 474, 475, 1338, 1339, 697, 1128, 881, 697, 984, 1369, - 1370, 598, 619, 1032, 0, 544, 544, 851, 836, 0, - 1329, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 543, 543, 1255, 879, 0, 0, 543, 0, 543, - 543, 543, 543, 543, 543, 543, 543, 451, 451, 451, - 451, 451, 451, 451, 451, 451, 451, 451, 252, 252, - 451, 836, 1080, 836, 409, 410, 1331, 1331, 1080, 674, - 0, 675, 0, 414, 415, 416, 0, 688, 0, 0, - 417, 635, 637, 639, 0, 348, 0, 0, 1256, 1257, - 0, 1243, 884, 872, 1077, 1081, 0, 846, 1003, 0, - 0, 975, 0, 735, 1243, 982, 556, 1012, 1007, 0, - 435, 0, 0, 0, 0, 0, 1258, 1319, 1320, 0, - 0, 435, 273, 325, 0, 325, 325, 0, 972, 1048, - 1048, 0, 0, 0, 669, 1059, 1055, 1056, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1126, 888, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1017, 1017 - ); - - protected array $gotoCheck = array( - 42, 42, 73, 97, 73, 156, 48, 154, 154, 128, - 48, 48, 48, 156, 26, 48, 154, 27, 9, 48, - 48, 48, 48, 48, 48, 56, 56, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 23, 23, 23, 23, 15, 66, 66, 49, - 65, 131, 65, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 108, 108, 25, 25, 25, 25, 108, - 108, 108, 108, 108, 108, 108, 108, 108, 108, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 6, - 35, 83, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 14, 15, 15, 43, 35, 84, 15, 35, - 188, 188, 14, 14, 84, 15, 15, 15, 15, 45, - 8, 8, 59, 59, 59, 59, 14, 14, 188, 178, - 14, 8, 174, 14, 97, 97, 8, 8, 83, 8, - 73, 73, 73, 73, 185, 14, 188, 188, 14, 14, - 73, 73, 73, 187, 73, 73, 174, 174, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 103, - 79, 79, 5, 5, 73, 79, 79, 79, 79, 73, - 73, 73, 73, 145, 145, 73, 73, 73, 9, 9, - 9, 9, 76, 76, 22, 13, 14, 13, 62, 5, - 5, 5, 5, 5, 5, 104, 73, 160, 64, 160, - 73, 24, 24, 24, 24, 160, 9, 14, 9, 182, - 182, 182, 76, 76, 76, 76, 76, 76, 76, 76, - 155, 76, 76, 19, 115, 19, 19, 86, 86, 76, - 86, 86, 86, 113, 19, 176, 176, 117, 14, 22, - 121, 176, 176, 176, 176, 176, 176, 176, 176, 176, - 176, 89, 89, 119, 119, 89, 89, 19, 29, 89, - 89, 89, 19, 19, 19, 19, 120, 120, 19, 19, - 19, 177, 177, 93, 93, 93, 18, 177, 177, 177, - 177, 177, 177, 177, 177, 177, 177, 46, 17, 46, - 37, 17, 17, 23, 23, 39, 23, 23, 131, 92, - 131, 131, 14, 17, 28, 107, 107, 107, 107, 131, - 107, 17, 80, 17, 17, 166, 9, 9, 110, 17, - 99, 9, 41, 9, 157, 9, 9, 130, 7, 175, - 175, 17, 7, 131, 131, 131, 131, 133, 9, 9, - 9, 9, 184, 184, 7, 148, 9, 7, 96, 9, - 9, 2, 2, 114, -1, 179, 179, 22, 12, -1, - 131, 179, 179, 179, 179, 179, 179, 179, 179, 179, - 179, 162, 162, 20, 9, -1, -1, 162, -1, 162, - 162, 162, 162, 162, 162, 162, 162, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 5, 5, - 23, 12, 131, 12, 82, 82, 131, 131, 131, 82, - -1, 82, -1, 82, 82, 82, -1, 82, -1, -1, - 82, 85, 85, 85, -1, 82, -1, -1, 20, 20, - -1, 20, 16, 16, 16, 16, -1, 20, 50, -1, - -1, 50, -1, 50, 20, 16, 50, 50, 50, -1, - 118, -1, -1, -1, -1, -1, 20, 20, 20, -1, - -1, 118, 24, 24, -1, 24, 24, -1, 16, 118, - 118, -1, -1, -1, 118, 118, 118, 118, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 16, 16, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 107, 107 - ); - - protected array $gotoBase = array( - 0, 0, -234, 0, 0, 291, 199, 451, 232, 8, - 0, 0, 191, -25, -76, -183, 108, -48, 96, 88, - 109, 0, 36, 159, 328, 182, 10, 13, 94, 91, - 0, 0, 0, 0, 0, -162, 0, 78, 0, 101, - 0, 9, -1, 202, 0, 213, -322, 0, -708, 151, - 556, 0, 0, 0, 0, 0, -15, 0, 0, 197, - 0, 0, 276, 0, 90, 156, -70, 0, 0, 0, - 0, 0, 0, -5, 0, 0, -34, 0, 0, -119, - 112, -160, 40, -67, -246, 69, -364, 0, 0, 102, - 0, 0, 97, 98, 0, 0, 33, -483, 0, 42, - 0, 0, 0, 254, 282, 0, 0, 407, -54, 0, - 77, 0, 0, 86, -29, 79, 0, 84, 314, 104, - 111, 80, 0, 0, 0, 0, 0, 0, 7, 0, - 82, 163, 0, 23, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 30, 0, 0, 29, 0, - 0, 0, 0, 0, -27, 106, -263, 12, 0, 0, - -171, 0, 264, 0, 0, 0, 75, 0, 0, 0, - 0, 0, 0, 0, -46, 137, 128, 164, 220, 248, - 0, 0, 38, 0, 99, 234, 0, 242, -78, 0, - 0 - ); - - protected array $gotoDefault = array( - -32768, 516, 743, 4, 744, 938, 819, 828, 580, 534, - 710, 349, 629, 424, 1327, 914, 1142, 599, 847, 1269, - 1275, 459, 850, 333, 733, 926, 897, 898, 401, 388, - 863, 399, 653, 630, 497, 882, 455, 874, 489, 877, - 454, 886, 163, 420, 514, 890, 3, 893, 562, 924, - 977, 389, 901, 390, 681, 903, 583, 905, 906, 396, - 402, 403, 1147, 591, 626, 918, 255, 585, 919, 387, - 920, 928, 392, 394, 691, 469, 508, 502, 413, 1109, - 586, 613, 650, 448, 476, 624, 636, 623, 483, 436, - 418, 332, 961, 969, 490, 467, 983, 351, 991, 741, - 1155, 644, 492, 999, 645, 1006, 1009, 535, 536, 481, - 1021, 266, 1024, 493, 1033, 23, 671, 1038, 1039, 672, - 646, 1061, 647, 673, 648, 1063, 466, 581, 1071, 456, - 1079, 1315, 457, 1083, 264, 1086, 277, 419, 437, 1092, - 1093, 9, 1099, 701, 702, 19, 274, 513, 1127, 692, - -32768,-32768,-32768,-32768, 453, 1154, 452, 1224, 1226, 563, - 494, 1244, 294, 1247, 684, 509, 1252, 449, 1318, 450, - 537, 477, 316, 538, 1362, 308, 336, 313, 554, 295, - 337, 539, 478, 1324, 1332, 334, 31, 1352, 1363, 596, - 618 - ); - - protected array $ruleToNonTerminal = array( - 0, 1, 3, 3, 2, 5, 5, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, - 7, 7, 7, 7, 7, 8, 8, 9, 10, 11, - 11, 11, 12, 12, 13, 13, 14, 15, 15, 16, - 16, 17, 17, 18, 18, 21, 21, 22, 23, 23, - 24, 24, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 29, 29, 30, 30, 32, 34, 34, - 28, 36, 36, 33, 38, 38, 35, 35, 37, 37, - 39, 39, 31, 40, 40, 41, 43, 44, 44, 45, - 45, 46, 46, 48, 47, 47, 47, 47, 49, 49, - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 25, 25, 50, 69, 69, 72, 72, 71, - 70, 70, 63, 75, 75, 76, 76, 77, 77, 78, - 78, 79, 79, 80, 80, 80, 26, 26, 27, 27, - 27, 27, 27, 88, 88, 90, 90, 83, 83, 91, - 91, 92, 92, 92, 84, 84, 87, 87, 85, 85, - 93, 94, 94, 57, 57, 65, 65, 68, 68, 68, - 67, 95, 95, 96, 58, 58, 58, 58, 97, 97, - 98, 98, 99, 99, 100, 101, 101, 102, 102, 103, - 103, 55, 55, 51, 51, 105, 53, 53, 106, 52, - 52, 54, 54, 64, 64, 64, 64, 81, 81, 109, - 109, 111, 111, 112, 112, 112, 112, 112, 112, 112, - 110, 110, 110, 115, 115, 115, 115, 89, 89, 118, - 118, 118, 119, 119, 116, 116, 120, 120, 122, 122, - 123, 123, 117, 124, 124, 121, 125, 125, 125, 125, - 113, 113, 82, 82, 82, 20, 20, 20, 127, 126, - 126, 128, 128, 128, 128, 60, 129, 129, 130, 61, - 132, 132, 133, 133, 134, 134, 86, 135, 135, 135, - 135, 135, 135, 135, 140, 140, 141, 141, 142, 142, - 142, 142, 142, 143, 144, 144, 139, 139, 136, 136, - 138, 138, 146, 146, 145, 145, 145, 145, 145, 145, - 145, 145, 145, 145, 137, 147, 147, 149, 148, 148, - 150, 150, 114, 151, 151, 153, 153, 153, 152, 152, - 62, 104, 154, 154, 56, 56, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 161, 162, 162, 163, 155, 155, 160, 160, 164, 165, - 165, 166, 167, 168, 168, 168, 168, 19, 19, 73, - 73, 73, 73, 156, 156, 156, 156, 170, 170, 159, - 159, 159, 157, 157, 176, 176, 176, 176, 176, 176, - 176, 176, 176, 176, 177, 177, 177, 108, 179, 179, - 179, 179, 158, 158, 158, 158, 158, 158, 158, 158, - 59, 59, 173, 173, 173, 173, 173, 180, 180, 169, - 169, 169, 169, 181, 181, 181, 181, 181, 181, 74, - 74, 66, 66, 66, 66, 131, 131, 131, 131, 184, - 183, 172, 172, 172, 172, 172, 172, 172, 171, 171, - 171, 182, 182, 182, 182, 107, 178, 186, 186, 185, - 185, 187, 187, 187, 187, 187, 187, 187, 187, 175, - 175, 175, 175, 174, 189, 188, 188, 188, 188, 188, - 188, 188, 188, 190, 190, 190, 190 - ); - - protected array $ruleToLength = array( - 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 1, 0, 1, 1, 2, 1, 3, 4, 1, 2, - 0, 1, 1, 1, 1, 4, 3, 5, 4, 3, - 4, 1, 3, 1, 1, 8, 7, 2, 3, 1, - 2, 3, 1, 2, 3, 1, 1, 3, 1, 3, - 1, 2, 2, 3, 1, 3, 2, 3, 1, 3, - 3, 2, 0, 1, 1, 1, 1, 1, 3, 7, - 10, 5, 7, 9, 5, 3, 3, 3, 3, 3, - 3, 1, 2, 5, 7, 9, 6, 5, 6, 3, - 2, 1, 1, 1, 1, 0, 2, 1, 3, 8, - 0, 4, 2, 1, 3, 0, 1, 0, 1, 0, - 1, 3, 1, 1, 1, 1, 8, 9, 7, 8, - 7, 6, 8, 0, 2, 0, 2, 1, 2, 1, - 2, 1, 1, 1, 0, 2, 0, 2, 0, 2, - 2, 1, 3, 1, 4, 1, 4, 1, 1, 4, - 2, 1, 3, 3, 3, 4, 4, 5, 0, 2, - 4, 3, 1, 1, 7, 0, 2, 1, 3, 3, - 4, 1, 4, 0, 2, 5, 0, 2, 6, 0, - 2, 0, 3, 1, 2, 1, 1, 2, 0, 1, - 3, 0, 2, 1, 1, 1, 1, 1, 1, 1, - 7, 9, 6, 1, 2, 1, 1, 1, 1, 1, - 1, 1, 1, 3, 3, 3, 1, 3, 3, 3, - 3, 3, 1, 3, 3, 1, 1, 2, 1, 1, - 0, 1, 0, 2, 2, 2, 4, 3, 1, 1, - 3, 1, 2, 2, 3, 2, 3, 1, 1, 2, - 3, 1, 1, 3, 2, 0, 1, 5, 5, 6, - 10, 3, 5, 1, 1, 3, 0, 2, 4, 5, - 4, 4, 4, 3, 1, 1, 1, 1, 1, 1, - 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 1, 3, 1, 1, 3, - 0, 2, 0, 5, 8, 1, 3, 3, 0, 2, - 2, 2, 3, 1, 0, 1, 1, 3, 3, 3, - 4, 4, 1, 1, 2, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, - 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 5, 4, 3, 4, 4, - 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 1, 3, 2, 1, 2, 4, - 2, 2, 8, 9, 8, 9, 9, 10, 9, 10, - 8, 3, 2, 2, 1, 1, 0, 4, 2, 1, - 3, 2, 1, 2, 2, 2, 4, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 1, 1, 1, 0, - 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 3, 5, 3, 3, 4, 1, - 1, 3, 1, 1, 1, 1, 1, 3, 2, 3, - 0, 1, 1, 3, 1, 1, 1, 1, 1, 1, - 3, 1, 1, 1, 4, 4, 1, 4, 4, 0, - 1, 1, 1, 3, 3, 1, 4, 2, 2, 1, - 3, 1, 4, 4, 3, 3, 3, 3, 1, 3, - 1, 1, 3, 1, 1, 4, 1, 1, 1, 3, - 1, 1, 2, 1, 3, 4, 3, 2, 0, 2, - 2, 1, 2, 1, 1, 1, 4, 3, 3, 3, - 3, 6, 3, 1, 1, 2, 1 - ); - - protected function initReduceCallbacks(): void { - $this->reduceCallbacks = [ - 0 => null, - 1 => static function ($self, $stackPos) { - $self->semValue = $self->handleNamespaces($self->semStack[$stackPos-(1-1)]); - }, - 2 => static function ($self, $stackPos) { - if ($self->semStack[$stackPos-(2-2)] !== null) { $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; } $self->semValue = $self->semStack[$stackPos-(2-1)];; - }, - 3 => static function ($self, $stackPos) { - $self->semValue = array(); - }, - 4 => static function ($self, $stackPos) { - $nop = $self->maybeCreateZeroLengthNop($self->tokenPos);; - if ($nop !== null) { $self->semStack[$stackPos-(1-1)][] = $nop; } $self->semValue = $self->semStack[$stackPos-(1-1)]; - }, - 5 => null, - 6 => null, - 7 => null, - 8 => null, - 9 => null, - 10 => null, - 11 => null, - 12 => null, - 13 => null, - 14 => null, - 15 => null, - 16 => null, - 17 => null, - 18 => null, - 19 => null, - 20 => null, - 21 => null, - 22 => null, - 23 => null, - 24 => null, - 25 => null, - 26 => null, - 27 => null, - 28 => null, - 29 => null, - 30 => null, - 31 => null, - 32 => null, - 33 => null, - 34 => null, - 35 => null, - 36 => null, - 37 => null, - 38 => null, - 39 => null, - 40 => null, - 41 => null, - 42 => null, - 43 => null, - 44 => null, - 45 => null, - 46 => null, - 47 => null, - 48 => null, - 49 => null, - 50 => null, - 51 => null, - 52 => null, - 53 => null, - 54 => null, - 55 => null, - 56 => null, - 57 => null, - 58 => null, - 59 => null, - 60 => null, - 61 => null, - 62 => null, - 63 => null, - 64 => null, - 65 => null, - 66 => null, - 67 => null, - 68 => null, - 69 => null, - 70 => null, - 71 => null, - 72 => null, - 73 => null, - 74 => null, - 75 => null, - 76 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(1-1)]; if ($self->semValue === "emitError(new Error('Cannot use "getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]))); - }, - 77 => null, - 78 => null, - 79 => null, - 80 => null, - 81 => null, - 82 => null, - 83 => null, - 84 => null, - 85 => static function ($self, $stackPos) { - $self->semValue = new Node\Identifier($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 86 => static function ($self, $stackPos) { - $self->semValue = new Node\Identifier($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 87 => static function ($self, $stackPos) { - $self->semValue = new Node\Identifier($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 88 => static function ($self, $stackPos) { - $self->semValue = new Node\Identifier($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 89 => static function ($self, $stackPos) { - $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 90 => static function ($self, $stackPos) { - $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 91 => static function ($self, $stackPos) { - $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 92 => static function ($self, $stackPos) { - $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 93 => static function ($self, $stackPos) { - $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 94 => null, - 95 => static function ($self, $stackPos) { - $self->semValue = new Name(substr($self->semStack[$stackPos-(1-1)], 1), $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 96 => static function ($self, $stackPos) { - $self->semValue = new Expr\Variable(substr($self->semStack[$stackPos-(1-1)], 1), $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 97 => static function ($self, $stackPos) { - /* nothing */ - }, - 98 => static function ($self, $stackPos) { - /* nothing */ - }, - 99 => static function ($self, $stackPos) { - /* nothing */ - }, - 100 => static function ($self, $stackPos) { - $self->emitError(new Error('A trailing comma is not allowed here', $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]))); - }, - 101 => null, - 102 => null, - 103 => static function ($self, $stackPos) { - $self->semValue = new Node\Attribute($self->semStack[$stackPos-(1-1)], [], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 104 => static function ($self, $stackPos) { - $self->semValue = new Node\Attribute($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 105 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 106 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 107 => static function ($self, $stackPos) { - $self->semValue = new Node\AttributeGroup($self->semStack[$stackPos-(4-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 108 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 109 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)]; - }, - 110 => static function ($self, $stackPos) { - $self->semValue = []; - }, - 111 => null, - 112 => null, - 113 => null, - 114 => null, - 115 => static function ($self, $stackPos) { - $self->semValue = new Stmt\HaltCompiler($self->handleHaltCompiler(), $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 116 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Namespace_($self->semStack[$stackPos-(3-2)], null, $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - $self->semValue->setAttribute('kind', Stmt\Namespace_::KIND_SEMICOLON); - $self->checkNamespace($self->semValue); - }, - 117 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Namespace_($self->semStack[$stackPos-(5-2)], $self->semStack[$stackPos-(5-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); - $self->semValue->setAttribute('kind', Stmt\Namespace_::KIND_BRACED); - $self->checkNamespace($self->semValue); - }, - 118 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Namespace_(null, $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - $self->semValue->setAttribute('kind', Stmt\Namespace_::KIND_BRACED); - $self->checkNamespace($self->semValue); - }, - 119 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Use_($self->semStack[$stackPos-(3-2)], Stmt\Use_::TYPE_NORMAL, $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 120 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Use_($self->semStack[$stackPos-(4-3)], $self->semStack[$stackPos-(4-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 121 => null, - 122 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Const_($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 123 => static function ($self, $stackPos) { - $self->semValue = Stmt\Use_::TYPE_FUNCTION; - }, - 124 => static function ($self, $stackPos) { - $self->semValue = Stmt\Use_::TYPE_CONSTANT; - }, - 125 => static function ($self, $stackPos) { - $self->semValue = new Stmt\GroupUse($self->semStack[$stackPos-(8-3)], $self->semStack[$stackPos-(8-6)], $self->semStack[$stackPos-(8-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos])); - }, - 126 => static function ($self, $stackPos) { - $self->semValue = new Stmt\GroupUse($self->semStack[$stackPos-(7-2)], $self->semStack[$stackPos-(7-5)], Stmt\Use_::TYPE_UNKNOWN, $self->getAttributes($self->tokenStartStack[$stackPos-(7-1)], $self->tokenEndStack[$stackPos])); - }, - 127 => null, - 128 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 129 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 130 => null, - 131 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 132 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 133 => null, - 134 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 135 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 136 => static function ($self, $stackPos) { - $self->semValue = new Node\UseItem($self->semStack[$stackPos-(1-1)], null, Stmt\Use_::TYPE_UNKNOWN, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); $self->checkUseUse($self->semValue, $stackPos-(1-1)); - }, - 137 => static function ($self, $stackPos) { - $self->semValue = new Node\UseItem($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], Stmt\Use_::TYPE_UNKNOWN, $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); $self->checkUseUse($self->semValue, $stackPos-(3-3)); - }, - 138 => static function ($self, $stackPos) { - $self->semValue = new Node\UseItem($self->semStack[$stackPos-(1-1)], null, Stmt\Use_::TYPE_UNKNOWN, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); $self->checkUseUse($self->semValue, $stackPos-(1-1)); - }, - 139 => static function ($self, $stackPos) { - $self->semValue = new Node\UseItem($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], Stmt\Use_::TYPE_UNKNOWN, $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); $self->checkUseUse($self->semValue, $stackPos-(3-3)); - }, - 140 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(1-1)]; $self->semValue->type = Stmt\Use_::TYPE_NORMAL; - }, - 141 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(2-2)]; $self->semValue->type = $self->semStack[$stackPos-(2-1)]; - }, - 142 => null, - 143 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 144 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 145 => static function ($self, $stackPos) { - $self->semValue = new Node\Const_($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 146 => null, - 147 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 148 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 149 => static function ($self, $stackPos) { - $self->semValue = new Node\Const_(new Node\Identifier($self->semStack[$stackPos-(3-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos-(3-1)])), $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 150 => static function ($self, $stackPos) { - $self->semValue = new Node\Const_(new Node\Identifier($self->semStack[$stackPos-(3-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos-(3-1)])), $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 151 => static function ($self, $stackPos) { - if ($self->semStack[$stackPos-(2-2)] !== null) { $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; } $self->semValue = $self->semStack[$stackPos-(2-1)];; - }, - 152 => static function ($self, $stackPos) { - $self->semValue = array(); - }, - 153 => static function ($self, $stackPos) { - $nop = $self->maybeCreateZeroLengthNop($self->tokenPos);; - if ($nop !== null) { $self->semStack[$stackPos-(1-1)][] = $nop; } $self->semValue = $self->semStack[$stackPos-(1-1)]; - }, - 154 => null, - 155 => null, - 156 => null, - 157 => static function ($self, $stackPos) { - throw new Error('__HALT_COMPILER() can only be used from the outermost scope', $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 158 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Block($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 159 => static function ($self, $stackPos) { - $self->semValue = new Stmt\If_($self->semStack[$stackPos-(7-3)], ['stmts' => $self->semStack[$stackPos-(7-5)], 'elseifs' => $self->semStack[$stackPos-(7-6)], 'else' => $self->semStack[$stackPos-(7-7)]], $self->getAttributes($self->tokenStartStack[$stackPos-(7-1)], $self->tokenEndStack[$stackPos])); - }, - 160 => static function ($self, $stackPos) { - $self->semValue = new Stmt\If_($self->semStack[$stackPos-(10-3)], ['stmts' => $self->semStack[$stackPos-(10-6)], 'elseifs' => $self->semStack[$stackPos-(10-7)], 'else' => $self->semStack[$stackPos-(10-8)]], $self->getAttributes($self->tokenStartStack[$stackPos-(10-1)], $self->tokenEndStack[$stackPos])); - }, - 161 => static function ($self, $stackPos) { - $self->semValue = new Stmt\While_($self->semStack[$stackPos-(5-3)], $self->semStack[$stackPos-(5-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); - }, - 162 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Do_($self->semStack[$stackPos-(7-5)], $self->semStack[$stackPos-(7-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(7-1)], $self->tokenEndStack[$stackPos])); - }, - 163 => static function ($self, $stackPos) { - $self->semValue = new Stmt\For_(['init' => $self->semStack[$stackPos-(9-3)], 'cond' => $self->semStack[$stackPos-(9-5)], 'loop' => $self->semStack[$stackPos-(9-7)], 'stmts' => $self->semStack[$stackPos-(9-9)]], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos])); - }, - 164 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Switch_($self->semStack[$stackPos-(5-3)], $self->semStack[$stackPos-(5-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); - }, - 165 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Break_($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 166 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Continue_($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 167 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Return_($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 168 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Global_($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 169 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Static_($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 170 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Echo_($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 171 => static function ($self, $stackPos) { - - $self->semValue = new Stmt\InlineHTML($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - $self->semValue->setAttribute('hasLeadingNewline', $self->inlineHtmlHasLeadingNewline($stackPos-(1-1))); - - }, - 172 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Expression($self->semStack[$stackPos-(2-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 173 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Unset_($self->semStack[$stackPos-(5-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); - }, - 174 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Foreach_($self->semStack[$stackPos-(7-3)], $self->semStack[$stackPos-(7-5)][0], ['keyVar' => null, 'byRef' => $self->semStack[$stackPos-(7-5)][1], 'stmts' => $self->semStack[$stackPos-(7-7)]], $self->getAttributes($self->tokenStartStack[$stackPos-(7-1)], $self->tokenEndStack[$stackPos])); - }, - 175 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Foreach_($self->semStack[$stackPos-(9-3)], $self->semStack[$stackPos-(9-7)][0], ['keyVar' => $self->semStack[$stackPos-(9-5)], 'byRef' => $self->semStack[$stackPos-(9-7)][1], 'stmts' => $self->semStack[$stackPos-(9-9)]], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos])); - }, - 176 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Foreach_($self->semStack[$stackPos-(6-3)], new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(6-4)], $self->tokenEndStack[$stackPos-(6-4)])), ['stmts' => $self->semStack[$stackPos-(6-6)]], $self->getAttributes($self->tokenStartStack[$stackPos-(6-1)], $self->tokenEndStack[$stackPos])); - }, - 177 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Declare_($self->semStack[$stackPos-(5-3)], $self->semStack[$stackPos-(5-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); - }, - 178 => static function ($self, $stackPos) { - $self->semValue = new Stmt\TryCatch($self->semStack[$stackPos-(6-3)], $self->semStack[$stackPos-(6-5)], $self->semStack[$stackPos-(6-6)], $self->getAttributes($self->tokenStartStack[$stackPos-(6-1)], $self->tokenEndStack[$stackPos])); $self->checkTryCatch($self->semValue); - }, - 179 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Goto_($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 180 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Label($self->semStack[$stackPos-(2-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 181 => static function ($self, $stackPos) { - $self->semValue = null; /* means: no statement */ - }, - 182 => null, - 183 => static function ($self, $stackPos) { - $self->semValue = $self->maybeCreateNop($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]); - }, - 184 => static function ($self, $stackPos) { - if ($self->semStack[$stackPos-(1-1)] instanceof Stmt\Block) { $self->semValue = $self->semStack[$stackPos-(1-1)]->stmts; } else if ($self->semStack[$stackPos-(1-1)] === null) { $self->semValue = []; } else { $self->semValue = [$self->semStack[$stackPos-(1-1)]]; }; - }, - 185 => static function ($self, $stackPos) { - $self->semValue = array(); - }, - 186 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)]; - }, - 187 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 188 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 189 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Catch_($self->semStack[$stackPos-(8-3)], $self->semStack[$stackPos-(8-4)], $self->semStack[$stackPos-(8-7)], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos])); - }, - 190 => static function ($self, $stackPos) { - $self->semValue = null; - }, - 191 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Finally_($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 192 => null, - 193 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 194 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 195 => static function ($self, $stackPos) { - $self->semValue = false; - }, - 196 => static function ($self, $stackPos) { - $self->semValue = true; - }, - 197 => static function ($self, $stackPos) { - $self->semValue = false; - }, - 198 => static function ($self, $stackPos) { - $self->semValue = true; - }, - 199 => static function ($self, $stackPos) { - $self->semValue = false; - }, - 200 => static function ($self, $stackPos) { - $self->semValue = true; - }, - 201 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(3-2)]; - }, - 202 => static function ($self, $stackPos) { - $self->semValue = []; - }, - 203 => null, - 204 => static function ($self, $stackPos) { - $self->semValue = new Node\Identifier($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 205 => static function ($self, $stackPos) { - $self->semValue = new Node\Identifier($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 206 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Function_($self->semStack[$stackPos-(8-3)], ['byRef' => $self->semStack[$stackPos-(8-2)], 'params' => $self->semStack[$stackPos-(8-5)], 'returnType' => $self->semStack[$stackPos-(8-7)], 'stmts' => $self->semStack[$stackPos-(8-8)], 'attrGroups' => []], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos])); - }, - 207 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Function_($self->semStack[$stackPos-(9-4)], ['byRef' => $self->semStack[$stackPos-(9-3)], 'params' => $self->semStack[$stackPos-(9-6)], 'returnType' => $self->semStack[$stackPos-(9-8)], 'stmts' => $self->semStack[$stackPos-(9-9)], 'attrGroups' => $self->semStack[$stackPos-(9-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos])); - }, - 208 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Class_($self->semStack[$stackPos-(7-2)], ['type' => $self->semStack[$stackPos-(7-1)], 'extends' => $self->semStack[$stackPos-(7-3)], 'implements' => $self->semStack[$stackPos-(7-4)], 'stmts' => $self->semStack[$stackPos-(7-6)], 'attrGroups' => []], $self->getAttributes($self->tokenStartStack[$stackPos-(7-1)], $self->tokenEndStack[$stackPos])); - $self->checkClass($self->semValue, $stackPos-(7-2)); - }, - 209 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Class_($self->semStack[$stackPos-(8-3)], ['type' => $self->semStack[$stackPos-(8-2)], 'extends' => $self->semStack[$stackPos-(8-4)], 'implements' => $self->semStack[$stackPos-(8-5)], 'stmts' => $self->semStack[$stackPos-(8-7)], 'attrGroups' => $self->semStack[$stackPos-(8-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos])); - $self->checkClass($self->semValue, $stackPos-(8-3)); - }, - 210 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Interface_($self->semStack[$stackPos-(7-3)], ['extends' => $self->semStack[$stackPos-(7-4)], 'stmts' => $self->semStack[$stackPos-(7-6)], 'attrGroups' => $self->semStack[$stackPos-(7-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(7-1)], $self->tokenEndStack[$stackPos])); - $self->checkInterface($self->semValue, $stackPos-(7-3)); - }, - 211 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Trait_($self->semStack[$stackPos-(6-3)], ['stmts' => $self->semStack[$stackPos-(6-5)], 'attrGroups' => $self->semStack[$stackPos-(6-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(6-1)], $self->tokenEndStack[$stackPos])); - }, - 212 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Enum_($self->semStack[$stackPos-(8-3)], ['scalarType' => $self->semStack[$stackPos-(8-4)], 'implements' => $self->semStack[$stackPos-(8-5)], 'stmts' => $self->semStack[$stackPos-(8-7)], 'attrGroups' => $self->semStack[$stackPos-(8-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos])); - $self->checkEnum($self->semValue, $stackPos-(8-3)); - }, - 213 => static function ($self, $stackPos) { - $self->semValue = null; - }, - 214 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(2-2)]; - }, - 215 => static function ($self, $stackPos) { - $self->semValue = null; - }, - 216 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(2-2)]; - }, - 217 => static function ($self, $stackPos) { - $self->semValue = 0; - }, - 218 => null, - 219 => null, - 220 => static function ($self, $stackPos) { - $self->checkClassModifier($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $self->semValue = $self->semStack[$stackPos-(2-1)] | $self->semStack[$stackPos-(2-2)]; - }, - 221 => static function ($self, $stackPos) { - $self->semValue = Modifiers::ABSTRACT; - }, - 222 => static function ($self, $stackPos) { - $self->semValue = Modifiers::FINAL; - }, - 223 => static function ($self, $stackPos) { - $self->semValue = Modifiers::READONLY; - }, - 224 => static function ($self, $stackPos) { - $self->semValue = null; - }, - 225 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(2-2)]; - }, - 226 => static function ($self, $stackPos) { - $self->semValue = array(); - }, - 227 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(2-2)]; - }, - 228 => static function ($self, $stackPos) { - $self->semValue = array(); - }, - 229 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(2-2)]; - }, - 230 => null, - 231 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 232 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 233 => null, - 234 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(4-2)]; - }, - 235 => null, - 236 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(4-2)]; - }, - 237 => static function ($self, $stackPos) { - if ($self->semStack[$stackPos-(1-1)] instanceof Stmt\Block) { $self->semValue = $self->semStack[$stackPos-(1-1)]->stmts; } else if ($self->semStack[$stackPos-(1-1)] === null) { $self->semValue = []; } else { $self->semValue = [$self->semStack[$stackPos-(1-1)]]; }; - }, - 238 => static function ($self, $stackPos) { - $self->semValue = null; - }, - 239 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(4-2)]; - }, - 240 => null, - 241 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 242 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 243 => static function ($self, $stackPos) { - $self->semValue = new Node\DeclareItem($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 244 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(3-2)]; - }, - 245 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(4-3)]; - }, - 246 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(4-2)]; - }, - 247 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(5-3)]; - }, - 248 => static function ($self, $stackPos) { - $self->semValue = array(); - }, - 249 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)]; - }, - 250 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Case_($self->semStack[$stackPos-(4-2)], $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 251 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Case_(null, $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 252 => null, - 253 => null, - 254 => static function ($self, $stackPos) { - $self->semValue = new Expr\Match_($self->semStack[$stackPos-(7-3)], $self->semStack[$stackPos-(7-6)], $self->getAttributes($self->tokenStartStack[$stackPos-(7-1)], $self->tokenEndStack[$stackPos])); - }, - 255 => static function ($self, $stackPos) { - $self->semValue = []; - }, - 256 => null, - 257 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 258 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 259 => static function ($self, $stackPos) { - $self->semValue = new Node\MatchArm($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 260 => static function ($self, $stackPos) { - $self->semValue = new Node\MatchArm(null, $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 261 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(1-1)]; - }, - 262 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(4-2)]; - }, - 263 => static function ($self, $stackPos) { - $self->semValue = array(); - }, - 264 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)]; - }, - 265 => static function ($self, $stackPos) { - $self->semValue = new Stmt\ElseIf_($self->semStack[$stackPos-(5-3)], $self->semStack[$stackPos-(5-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); - }, - 266 => static function ($self, $stackPos) { - $self->semValue = array(); - }, - 267 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)]; - }, - 268 => static function ($self, $stackPos) { - $self->semValue = new Stmt\ElseIf_($self->semStack[$stackPos-(6-3)], $self->semStack[$stackPos-(6-6)], $self->getAttributes($self->tokenStartStack[$stackPos-(6-1)], $self->tokenEndStack[$stackPos])); $self->fixupAlternativeElse($self->semValue); - }, - 269 => static function ($self, $stackPos) { - $self->semValue = null; - }, - 270 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Else_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 271 => static function ($self, $stackPos) { - $self->semValue = null; - }, - 272 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Else_($self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); $self->fixupAlternativeElse($self->semValue); - }, - 273 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)], false); - }, - 274 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(2-2)], true); - }, - 275 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)], false); - }, - 276 => static function ($self, $stackPos) { - $self->semValue = array($self->fixupArrayDestructuring($self->semStack[$stackPos-(1-1)]), false); - }, - 277 => null, - 278 => static function ($self, $stackPos) { - $self->semValue = array(); - }, - 279 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 280 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 281 => static function ($self, $stackPos) { - $self->semValue = 0; - }, - 282 => static function ($self, $stackPos) { - $self->checkModifier($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $self->semValue = $self->semStack[$stackPos-(2-1)] | $self->semStack[$stackPos-(2-2)]; - }, - 283 => static function ($self, $stackPos) { - $self->semValue = Modifiers::PUBLIC; - }, - 284 => static function ($self, $stackPos) { - $self->semValue = Modifiers::PROTECTED; - }, - 285 => static function ($self, $stackPos) { - $self->semValue = Modifiers::PRIVATE; - }, - 286 => static function ($self, $stackPos) { - $self->semValue = Modifiers::PUBLIC_SET; - }, - 287 => static function ($self, $stackPos) { - $self->semValue = Modifiers::PROTECTED_SET; - }, - 288 => static function ($self, $stackPos) { - $self->semValue = Modifiers::PRIVATE_SET; - }, - 289 => static function ($self, $stackPos) { - $self->semValue = Modifiers::READONLY; - }, - 290 => static function ($self, $stackPos) { - $self->semValue = new Node\Param($self->semStack[$stackPos-(7-6)], null, $self->semStack[$stackPos-(7-3)], $self->semStack[$stackPos-(7-4)], $self->semStack[$stackPos-(7-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(7-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(7-2)], $self->semStack[$stackPos-(7-1)], $self->semStack[$stackPos-(7-7)]); - $self->checkParam($self->semValue); - $self->addPropertyNameToHooks($self->semValue); - }, - 291 => static function ($self, $stackPos) { - $self->semValue = new Node\Param($self->semStack[$stackPos-(9-6)], $self->semStack[$stackPos-(9-8)], $self->semStack[$stackPos-(9-3)], $self->semStack[$stackPos-(9-4)], $self->semStack[$stackPos-(9-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(9-2)], $self->semStack[$stackPos-(9-1)], $self->semStack[$stackPos-(9-9)]); - $self->checkParam($self->semValue); - $self->addPropertyNameToHooks($self->semValue); - }, - 292 => static function ($self, $stackPos) { - $self->semValue = new Node\Param(new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(6-1)], $self->tokenEndStack[$stackPos])), null, $self->semStack[$stackPos-(6-3)], $self->semStack[$stackPos-(6-4)], $self->semStack[$stackPos-(6-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(6-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(6-2)], $self->semStack[$stackPos-(6-1)]); - }, - 293 => null, - 294 => static function ($self, $stackPos) { - $self->semValue = new Node\NullableType($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 295 => static function ($self, $stackPos) { - $self->semValue = new Node\UnionType($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 296 => null, - 297 => null, - 298 => static function ($self, $stackPos) { - $self->semValue = new Node\Name('static', $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 299 => static function ($self, $stackPos) { - $self->semValue = $self->handleBuiltinTypes($self->semStack[$stackPos-(1-1)]); - }, - 300 => static function ($self, $stackPos) { - $self->semValue = new Node\Identifier('array', $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 301 => static function ($self, $stackPos) { - $self->semValue = new Node\Identifier('callable', $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 302 => null, - 303 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(3-2)]; - }, - 304 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)]); - }, - 305 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 306 => null, - 307 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(3-2)]; - }, - 308 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)]); - }, - 309 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 310 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)]); - }, - 311 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 312 => static function ($self, $stackPos) { - $self->semValue = new Node\IntersectionType($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 313 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)]); - }, - 314 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 315 => static function ($self, $stackPos) { - $self->semValue = new Node\IntersectionType($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 316 => null, - 317 => static function ($self, $stackPos) { - $self->semValue = new Node\NullableType($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 318 => static function ($self, $stackPos) { - $self->semValue = new Node\UnionType($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 319 => null, - 320 => static function ($self, $stackPos) { - $self->semValue = null; - }, - 321 => null, - 322 => static function ($self, $stackPos) { - $self->semValue = null; - }, - 323 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(2-2)]; - }, - 324 => static function ($self, $stackPos) { - $self->semValue = null; - }, - 325 => static function ($self, $stackPos) { - $self->semValue = array(); - }, - 326 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(4-2)]; - }, - 327 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(3-2)]); - }, - 328 => static function ($self, $stackPos) { - $self->semValue = new Node\VariadicPlaceholder($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 329 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 330 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 331 => static function ($self, $stackPos) { - $self->semValue = new Node\Arg($self->semStack[$stackPos-(1-1)], false, false, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 332 => static function ($self, $stackPos) { - $self->semValue = new Node\Arg($self->semStack[$stackPos-(2-2)], true, false, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 333 => static function ($self, $stackPos) { - $self->semValue = new Node\Arg($self->semStack[$stackPos-(2-2)], false, true, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 334 => static function ($self, $stackPos) { - $self->semValue = new Node\Arg($self->semStack[$stackPos-(3-3)], false, false, $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(3-1)]); - }, - 335 => null, - 336 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 337 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 338 => null, - 339 => null, - 340 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 341 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 342 => static function ($self, $stackPos) { - $self->semValue = new Node\StaticVar($self->semStack[$stackPos-(1-1)], null, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 343 => static function ($self, $stackPos) { - $self->semValue = new Node\StaticVar($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 344 => static function ($self, $stackPos) { - if ($self->semStack[$stackPos-(2-2)] !== null) { $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)]; } else { $self->semValue = $self->semStack[$stackPos-(2-1)]; } - }, - 345 => static function ($self, $stackPos) { - $self->semValue = array(); - }, - 346 => static function ($self, $stackPos) { - $nop = $self->maybeCreateZeroLengthNop($self->tokenPos);; - if ($nop !== null) { $self->semStack[$stackPos-(1-1)][] = $nop; } $self->semValue = $self->semStack[$stackPos-(1-1)]; - }, - 347 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Property($self->semStack[$stackPos-(5-2)], $self->semStack[$stackPos-(5-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(5-3)], $self->semStack[$stackPos-(5-1)]); - }, - 348 => static function ($self, $stackPos) { - $self->semValue = new Stmt\ClassConst($self->semStack[$stackPos-(5-4)], $self->semStack[$stackPos-(5-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(5-1)]); - $self->checkClassConst($self->semValue, $stackPos-(5-2)); - }, - 349 => static function ($self, $stackPos) { - $self->semValue = new Stmt\ClassConst($self->semStack[$stackPos-(6-5)], $self->semStack[$stackPos-(6-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(6-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(6-1)], $self->semStack[$stackPos-(6-4)]); - $self->checkClassConst($self->semValue, $stackPos-(6-2)); - }, - 350 => static function ($self, $stackPos) { - $self->semValue = new Stmt\ClassMethod($self->semStack[$stackPos-(10-5)], ['type' => $self->semStack[$stackPos-(10-2)], 'byRef' => $self->semStack[$stackPos-(10-4)], 'params' => $self->semStack[$stackPos-(10-7)], 'returnType' => $self->semStack[$stackPos-(10-9)], 'stmts' => $self->semStack[$stackPos-(10-10)], 'attrGroups' => $self->semStack[$stackPos-(10-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(10-1)], $self->tokenEndStack[$stackPos])); - $self->checkClassMethod($self->semValue, $stackPos-(10-2)); - }, - 351 => static function ($self, $stackPos) { - $self->semValue = new Stmt\TraitUse($self->semStack[$stackPos-(3-2)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 352 => static function ($self, $stackPos) { - $self->semValue = new Stmt\EnumCase($self->semStack[$stackPos-(5-3)], $self->semStack[$stackPos-(5-4)], $self->semStack[$stackPos-(5-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); - }, - 353 => static function ($self, $stackPos) { - $self->semValue = null; /* will be skipped */ - }, - 354 => static function ($self, $stackPos) { - $self->semValue = array(); - }, - 355 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(3-2)]; - }, - 356 => static function ($self, $stackPos) { - $self->semValue = array(); - }, - 357 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)]; - }, - 358 => static function ($self, $stackPos) { - $self->semValue = new Stmt\TraitUseAdaptation\Precedence($self->semStack[$stackPos-(4-1)][0], $self->semStack[$stackPos-(4-1)][1], $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 359 => static function ($self, $stackPos) { - $self->semValue = new Stmt\TraitUseAdaptation\Alias($self->semStack[$stackPos-(5-1)][0], $self->semStack[$stackPos-(5-1)][1], $self->semStack[$stackPos-(5-3)], $self->semStack[$stackPos-(5-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); - }, - 360 => static function ($self, $stackPos) { - $self->semValue = new Stmt\TraitUseAdaptation\Alias($self->semStack[$stackPos-(4-1)][0], $self->semStack[$stackPos-(4-1)][1], $self->semStack[$stackPos-(4-3)], null, $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 361 => static function ($self, $stackPos) { - $self->semValue = new Stmt\TraitUseAdaptation\Alias($self->semStack[$stackPos-(4-1)][0], $self->semStack[$stackPos-(4-1)][1], null, $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 362 => static function ($self, $stackPos) { - $self->semValue = new Stmt\TraitUseAdaptation\Alias($self->semStack[$stackPos-(4-1)][0], $self->semStack[$stackPos-(4-1)][1], null, $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 363 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)]); - }, - 364 => null, - 365 => static function ($self, $stackPos) { - $self->semValue = array(null, $self->semStack[$stackPos-(1-1)]); - }, - 366 => static function ($self, $stackPos) { - $self->semValue = null; - }, - 367 => null, - 368 => null, - 369 => static function ($self, $stackPos) { - $self->semValue = 0; - }, - 370 => static function ($self, $stackPos) { - $self->semValue = 0; - }, - 371 => null, - 372 => null, - 373 => static function ($self, $stackPos) { - $self->checkModifier($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $self->semValue = $self->semStack[$stackPos-(2-1)] | $self->semStack[$stackPos-(2-2)]; - }, - 374 => static function ($self, $stackPos) { - $self->semValue = Modifiers::PUBLIC; - }, - 375 => static function ($self, $stackPos) { - $self->semValue = Modifiers::PROTECTED; - }, - 376 => static function ($self, $stackPos) { - $self->semValue = Modifiers::PRIVATE; - }, - 377 => static function ($self, $stackPos) { - $self->semValue = Modifiers::PUBLIC_SET; - }, - 378 => static function ($self, $stackPos) { - $self->semValue = Modifiers::PROTECTED_SET; - }, - 379 => static function ($self, $stackPos) { - $self->semValue = Modifiers::PRIVATE_SET; - }, - 380 => static function ($self, $stackPos) { - $self->semValue = Modifiers::STATIC; - }, - 381 => static function ($self, $stackPos) { - $self->semValue = Modifiers::ABSTRACT; - }, - 382 => static function ($self, $stackPos) { - $self->semValue = Modifiers::FINAL; - }, - 383 => static function ($self, $stackPos) { - $self->semValue = Modifiers::READONLY; - }, - 384 => null, - 385 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 386 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 387 => static function ($self, $stackPos) { - $self->semValue = new Node\VarLikeIdentifier(substr($self->semStack[$stackPos-(1-1)], 1), $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 388 => static function ($self, $stackPos) { - $self->semValue = new Node\PropertyItem($self->semStack[$stackPos-(1-1)], null, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 389 => static function ($self, $stackPos) { - $self->semValue = new Node\PropertyItem($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 390 => static function ($self, $stackPos) { - $self->semValue = []; - }, - 391 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)]; - }, - 392 => static function ($self, $stackPos) { - $self->semValue = []; - }, - 393 => static function ($self, $stackPos) { - $self->semValue = new Node\PropertyHook($self->semStack[$stackPos-(5-4)], $self->semStack[$stackPos-(5-5)], ['flags' => $self->semStack[$stackPos-(5-2)], 'byRef' => $self->semStack[$stackPos-(5-3)], 'params' => [], 'attrGroups' => $self->semStack[$stackPos-(5-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); - $self->checkPropertyHook($self->semValue, null); - }, - 394 => static function ($self, $stackPos) { - $self->semValue = new Node\PropertyHook($self->semStack[$stackPos-(8-4)], $self->semStack[$stackPos-(8-8)], ['flags' => $self->semStack[$stackPos-(8-2)], 'byRef' => $self->semStack[$stackPos-(8-3)], 'params' => $self->semStack[$stackPos-(8-6)], 'attrGroups' => $self->semStack[$stackPos-(8-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos])); - $self->checkPropertyHook($self->semValue, $stackPos-(8-5)); - }, - 395 => static function ($self, $stackPos) { - $self->semValue = null; - }, - 396 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(3-2)]; - }, - 397 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(3-2)]; - }, - 398 => static function ($self, $stackPos) { - $self->semValue = 0; - }, - 399 => static function ($self, $stackPos) { - $self->checkPropertyHookModifiers($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $self->semValue = $self->semStack[$stackPos-(2-1)] | $self->semStack[$stackPos-(2-2)]; - }, - 400 => null, - 401 => null, - 402 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 403 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 404 => static function ($self, $stackPos) { - $self->semValue = array(); - }, - 405 => null, - 406 => null, - 407 => static function ($self, $stackPos) { - $self->semValue = new Expr\Assign($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 408 => static function ($self, $stackPos) { - $self->semValue = new Expr\Assign($self->fixupArrayDestructuring($self->semStack[$stackPos-(3-1)]), $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 409 => static function ($self, $stackPos) { - $self->semValue = new Expr\Assign($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 410 => static function ($self, $stackPos) { - $self->semValue = new Expr\AssignRef($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 411 => static function ($self, $stackPos) { - $self->semValue = new Expr\AssignRef($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - if (!$self->phpVersion->allowsAssignNewByReference()) { - $self->emitError(new Error('Cannot assign new by reference', $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]))); - } - - }, - 412 => null, - 413 => null, - 414 => static function ($self, $stackPos) { - $self->semValue = new Expr\Clone_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 415 => static function ($self, $stackPos) { - $self->semValue = new Expr\AssignOp\Plus($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 416 => static function ($self, $stackPos) { - $self->semValue = new Expr\AssignOp\Minus($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 417 => static function ($self, $stackPos) { - $self->semValue = new Expr\AssignOp\Mul($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 418 => static function ($self, $stackPos) { - $self->semValue = new Expr\AssignOp\Div($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 419 => static function ($self, $stackPos) { - $self->semValue = new Expr\AssignOp\Concat($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 420 => static function ($self, $stackPos) { - $self->semValue = new Expr\AssignOp\Mod($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 421 => static function ($self, $stackPos) { - $self->semValue = new Expr\AssignOp\BitwiseAnd($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 422 => static function ($self, $stackPos) { - $self->semValue = new Expr\AssignOp\BitwiseOr($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 423 => static function ($self, $stackPos) { - $self->semValue = new Expr\AssignOp\BitwiseXor($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 424 => static function ($self, $stackPos) { - $self->semValue = new Expr\AssignOp\ShiftLeft($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 425 => static function ($self, $stackPos) { - $self->semValue = new Expr\AssignOp\ShiftRight($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 426 => static function ($self, $stackPos) { - $self->semValue = new Expr\AssignOp\Pow($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 427 => static function ($self, $stackPos) { - $self->semValue = new Expr\AssignOp\Coalesce($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 428 => static function ($self, $stackPos) { - $self->semValue = new Expr\PostInc($self->semStack[$stackPos-(2-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 429 => static function ($self, $stackPos) { - $self->semValue = new Expr\PreInc($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 430 => static function ($self, $stackPos) { - $self->semValue = new Expr\PostDec($self->semStack[$stackPos-(2-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 431 => static function ($self, $stackPos) { - $self->semValue = new Expr\PreDec($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 432 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\BooleanOr($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 433 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\BooleanAnd($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 434 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\LogicalOr($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 435 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\LogicalAnd($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 436 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\LogicalXor($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 437 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\BitwiseOr($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 438 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\BitwiseAnd($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 439 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\BitwiseAnd($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 440 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\BitwiseXor($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 441 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\Concat($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 442 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\Plus($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 443 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\Minus($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 444 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\Mul($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 445 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\Div($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 446 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\Mod($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 447 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\ShiftLeft($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 448 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\ShiftRight($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 449 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\Pow($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 450 => static function ($self, $stackPos) { - $self->semValue = new Expr\UnaryPlus($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 451 => static function ($self, $stackPos) { - $self->semValue = new Expr\UnaryMinus($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 452 => static function ($self, $stackPos) { - $self->semValue = new Expr\BooleanNot($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 453 => static function ($self, $stackPos) { - $self->semValue = new Expr\BitwiseNot($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 454 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\Identical($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 455 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\NotIdentical($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 456 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\Equal($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 457 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\NotEqual($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 458 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\Spaceship($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 459 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\Smaller($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 460 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\SmallerOrEqual($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 461 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\Greater($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 462 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\GreaterOrEqual($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 463 => static function ($self, $stackPos) { - $self->semValue = new Expr\Instanceof_($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 464 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(3-2)]; - }, - 465 => static function ($self, $stackPos) { - $self->semValue = new Expr\Ternary($self->semStack[$stackPos-(5-1)], $self->semStack[$stackPos-(5-3)], $self->semStack[$stackPos-(5-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); - }, - 466 => static function ($self, $stackPos) { - $self->semValue = new Expr\Ternary($self->semStack[$stackPos-(4-1)], null, $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 467 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\Coalesce($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 468 => static function ($self, $stackPos) { - $self->semValue = new Expr\Isset_($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 469 => static function ($self, $stackPos) { - $self->semValue = new Expr\Empty_($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 470 => static function ($self, $stackPos) { - $self->semValue = new Expr\Include_($self->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 471 => static function ($self, $stackPos) { - $self->semValue = new Expr\Include_($self->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE_ONCE, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 472 => static function ($self, $stackPos) { - $self->semValue = new Expr\Eval_($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 473 => static function ($self, $stackPos) { - $self->semValue = new Expr\Include_($self->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 474 => static function ($self, $stackPos) { - $self->semValue = new Expr\Include_($self->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE_ONCE, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 475 => static function ($self, $stackPos) { - $self->semValue = new Expr\Cast\Int_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 476 => static function ($self, $stackPos) { - $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]); - $attrs['kind'] = $self->getFloatCastKind($self->semStack[$stackPos-(2-1)]); - $self->semValue = new Expr\Cast\Double($self->semStack[$stackPos-(2-2)], $attrs); - }, - 477 => static function ($self, $stackPos) { - $self->semValue = new Expr\Cast\String_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 478 => static function ($self, $stackPos) { - $self->semValue = new Expr\Cast\Array_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 479 => static function ($self, $stackPos) { - $self->semValue = new Expr\Cast\Object_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 480 => static function ($self, $stackPos) { - $self->semValue = new Expr\Cast\Bool_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 481 => static function ($self, $stackPos) { - $self->semValue = new Expr\Cast\Unset_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 482 => static function ($self, $stackPos) { - $self->semValue = $self->createExitExpr($self->semStack[$stackPos-(2-1)], $stackPos-(2-1), $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 483 => static function ($self, $stackPos) { - $self->semValue = new Expr\ErrorSuppress($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 484 => null, - 485 => static function ($self, $stackPos) { - $self->semValue = new Expr\ShellExec($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 486 => static function ($self, $stackPos) { - $self->semValue = new Expr\Print_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 487 => static function ($self, $stackPos) { - $self->semValue = new Expr\Yield_(null, null, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 488 => static function ($self, $stackPos) { - $self->semValue = new Expr\Yield_($self->semStack[$stackPos-(2-2)], null, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 489 => static function ($self, $stackPos) { - $self->semValue = new Expr\Yield_($self->semStack[$stackPos-(4-4)], $self->semStack[$stackPos-(4-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 490 => static function ($self, $stackPos) { - $self->semValue = new Expr\YieldFrom($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 491 => static function ($self, $stackPos) { - $self->semValue = new Expr\Throw_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 492 => static function ($self, $stackPos) { - $self->semValue = new Expr\ArrowFunction(['static' => false, 'byRef' => $self->semStack[$stackPos-(8-2)], 'params' => $self->semStack[$stackPos-(8-4)], 'returnType' => $self->semStack[$stackPos-(8-6)], 'expr' => $self->semStack[$stackPos-(8-8)], 'attrGroups' => []], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos])); - }, - 493 => static function ($self, $stackPos) { - $self->semValue = new Expr\ArrowFunction(['static' => true, 'byRef' => $self->semStack[$stackPos-(9-3)], 'params' => $self->semStack[$stackPos-(9-5)], 'returnType' => $self->semStack[$stackPos-(9-7)], 'expr' => $self->semStack[$stackPos-(9-9)], 'attrGroups' => []], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos])); - }, - 494 => static function ($self, $stackPos) { - $self->semValue = new Expr\Closure(['static' => false, 'byRef' => $self->semStack[$stackPos-(8-2)], 'params' => $self->semStack[$stackPos-(8-4)], 'uses' => $self->semStack[$stackPos-(8-6)], 'returnType' => $self->semStack[$stackPos-(8-7)], 'stmts' => $self->semStack[$stackPos-(8-8)], 'attrGroups' => []], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos])); - }, - 495 => static function ($self, $stackPos) { - $self->semValue = new Expr\Closure(['static' => true, 'byRef' => $self->semStack[$stackPos-(9-3)], 'params' => $self->semStack[$stackPos-(9-5)], 'uses' => $self->semStack[$stackPos-(9-7)], 'returnType' => $self->semStack[$stackPos-(9-8)], 'stmts' => $self->semStack[$stackPos-(9-9)], 'attrGroups' => []], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos])); - }, - 496 => static function ($self, $stackPos) { - $self->semValue = new Expr\ArrowFunction(['static' => false, 'byRef' => $self->semStack[$stackPos-(9-3)], 'params' => $self->semStack[$stackPos-(9-5)], 'returnType' => $self->semStack[$stackPos-(9-7)], 'expr' => $self->semStack[$stackPos-(9-9)], 'attrGroups' => $self->semStack[$stackPos-(9-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos])); - }, - 497 => static function ($self, $stackPos) { - $self->semValue = new Expr\ArrowFunction(['static' => true, 'byRef' => $self->semStack[$stackPos-(10-4)], 'params' => $self->semStack[$stackPos-(10-6)], 'returnType' => $self->semStack[$stackPos-(10-8)], 'expr' => $self->semStack[$stackPos-(10-10)], 'attrGroups' => $self->semStack[$stackPos-(10-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(10-1)], $self->tokenEndStack[$stackPos])); - }, - 498 => static function ($self, $stackPos) { - $self->semValue = new Expr\Closure(['static' => false, 'byRef' => $self->semStack[$stackPos-(9-3)], 'params' => $self->semStack[$stackPos-(9-5)], 'uses' => $self->semStack[$stackPos-(9-7)], 'returnType' => $self->semStack[$stackPos-(9-8)], 'stmts' => $self->semStack[$stackPos-(9-9)], 'attrGroups' => $self->semStack[$stackPos-(9-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos])); - }, - 499 => static function ($self, $stackPos) { - $self->semValue = new Expr\Closure(['static' => true, 'byRef' => $self->semStack[$stackPos-(10-4)], 'params' => $self->semStack[$stackPos-(10-6)], 'uses' => $self->semStack[$stackPos-(10-8)], 'returnType' => $self->semStack[$stackPos-(10-9)], 'stmts' => $self->semStack[$stackPos-(10-10)], 'attrGroups' => $self->semStack[$stackPos-(10-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(10-1)], $self->tokenEndStack[$stackPos])); - }, - 500 => static function ($self, $stackPos) { - $self->semValue = array(new Stmt\Class_(null, ['type' => $self->semStack[$stackPos-(8-2)], 'extends' => $self->semStack[$stackPos-(8-4)], 'implements' => $self->semStack[$stackPos-(8-5)], 'stmts' => $self->semStack[$stackPos-(8-7)], 'attrGroups' => $self->semStack[$stackPos-(8-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos])), $self->semStack[$stackPos-(8-3)]); - $self->checkClass($self->semValue[0], -1); - }, - 501 => static function ($self, $stackPos) { - $self->semValue = new Expr\New_($self->semStack[$stackPos-(3-2)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 502 => static function ($self, $stackPos) { - list($class, $ctorArgs) = $self->semStack[$stackPos-(2-2)]; $self->semValue = new Expr\New_($class, $ctorArgs, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 503 => static function ($self, $stackPos) { - $self->semValue = new Expr\New_($self->semStack[$stackPos-(2-2)], [], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 504 => null, - 505 => null, - 506 => static function ($self, $stackPos) { - $self->semValue = array(); - }, - 507 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(4-3)]; - }, - 508 => null, - 509 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 510 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 511 => static function ($self, $stackPos) { - $self->semValue = new Node\ClosureUse($self->semStack[$stackPos-(2-2)], $self->semStack[$stackPos-(2-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 512 => static function ($self, $stackPos) { - $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 513 => static function ($self, $stackPos) { - $self->semValue = new Expr\FuncCall($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 514 => static function ($self, $stackPos) { - $self->semValue = new Expr\FuncCall($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 515 => static function ($self, $stackPos) { - $self->semValue = new Expr\FuncCall($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 516 => static function ($self, $stackPos) { - $self->semValue = new Expr\StaticCall($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 517 => static function ($self, $stackPos) { - $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 518 => null, - 519 => static function ($self, $stackPos) { - $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 520 => static function ($self, $stackPos) { - $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 521 => static function ($self, $stackPos) { - $self->semValue = new Name\FullyQualified(substr($self->semStack[$stackPos-(1-1)], 1), $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 522 => static function ($self, $stackPos) { - $self->semValue = new Name\Relative(substr($self->semStack[$stackPos-(1-1)], 10), $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 523 => null, - 524 => null, - 525 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(3-2)]; - }, - 526 => static function ($self, $stackPos) { - $self->semValue = new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); $self->errorState = 2; - }, - 527 => null, - 528 => null, - 529 => static function ($self, $stackPos) { - $self->semValue = array(); - }, - 530 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); foreach ($self->semValue as $s) { if ($s instanceof Node\InterpolatedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '`', $self->phpVersion->supportsUnicodeEscapes()); } }; - }, - 531 => static function ($self, $stackPos) { - foreach ($self->semStack[$stackPos-(1-1)] as $s) { if ($s instanceof Node\InterpolatedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '`', $self->phpVersion->supportsUnicodeEscapes()); } }; $self->semValue = $self->semStack[$stackPos-(1-1)]; - }, - 532 => static function ($self, $stackPos) { - $self->semValue = array(); - }, - 533 => null, - 534 => static function ($self, $stackPos) { - $self->semValue = new Expr\ConstFetch($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 535 => static function ($self, $stackPos) { - $self->semValue = new Scalar\MagicConst\Line($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 536 => static function ($self, $stackPos) { - $self->semValue = new Scalar\MagicConst\File($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 537 => static function ($self, $stackPos) { - $self->semValue = new Scalar\MagicConst\Dir($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 538 => static function ($self, $stackPos) { - $self->semValue = new Scalar\MagicConst\Class_($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 539 => static function ($self, $stackPos) { - $self->semValue = new Scalar\MagicConst\Trait_($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 540 => static function ($self, $stackPos) { - $self->semValue = new Scalar\MagicConst\Method($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 541 => static function ($self, $stackPos) { - $self->semValue = new Scalar\MagicConst\Function_($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 542 => static function ($self, $stackPos) { - $self->semValue = new Scalar\MagicConst\Namespace_($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 543 => static function ($self, $stackPos) { - $self->semValue = new Scalar\MagicConst\Property($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 544 => static function ($self, $stackPos) { - $self->semValue = new Expr\ClassConstFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 545 => static function ($self, $stackPos) { - $self->semValue = new Expr\ClassConstFetch($self->semStack[$stackPos-(5-1)], $self->semStack[$stackPos-(5-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); - }, - 546 => static function ($self, $stackPos) { - $self->semValue = new Expr\ClassConstFetch($self->semStack[$stackPos-(3-1)], new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(3-3)], $self->tokenEndStack[$stackPos-(3-3)])), $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); $self->errorState = 2; - }, - 547 => static function ($self, $stackPos) { - $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]); $attrs['kind'] = Expr\Array_::KIND_SHORT; - $self->semValue = new Expr\Array_($self->semStack[$stackPos-(3-2)], $attrs); - }, - 548 => static function ($self, $stackPos) { - $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]); $attrs['kind'] = Expr\Array_::KIND_LONG; - $self->semValue = new Expr\Array_($self->semStack[$stackPos-(4-3)], $attrs); - $self->createdArrays->attach($self->semValue); - }, - 549 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(1-1)]; $self->createdArrays->attach($self->semValue); - }, - 550 => static function ($self, $stackPos) { - $self->semValue = Scalar\String_::fromString($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]), $self->phpVersion->supportsUnicodeEscapes()); - }, - 551 => static function ($self, $stackPos) { - $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]); $attrs['kind'] = Scalar\String_::KIND_DOUBLE_QUOTED; - foreach ($self->semStack[$stackPos-(3-2)] as $s) { if ($s instanceof Node\InterpolatedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '"', $self->phpVersion->supportsUnicodeEscapes()); } }; $self->semValue = new Scalar\InterpolatedString($self->semStack[$stackPos-(3-2)], $attrs); - }, - 552 => static function ($self, $stackPos) { - $self->semValue = $self->parseLNumber($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]), $self->phpVersion->allowsInvalidOctals()); - }, - 553 => static function ($self, $stackPos) { - $self->semValue = Scalar\Float_::fromString($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 554 => null, - 555 => null, - 556 => null, - 557 => static function ($self, $stackPos) { - $self->semValue = $self->parseDocString($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-2)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]), $self->getAttributes($self->tokenStartStack[$stackPos-(3-3)], $self->tokenEndStack[$stackPos-(3-3)]), true); - }, - 558 => static function ($self, $stackPos) { - $self->semValue = $self->parseDocString($self->semStack[$stackPos-(2-1)], '', $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]), $self->getAttributes($self->tokenStartStack[$stackPos-(2-2)], $self->tokenEndStack[$stackPos-(2-2)]), true); - }, - 559 => static function ($self, $stackPos) { - $self->semValue = $self->parseDocString($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-2)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]), $self->getAttributes($self->tokenStartStack[$stackPos-(3-3)], $self->tokenEndStack[$stackPos-(3-3)]), true); - }, - 560 => static function ($self, $stackPos) { - $self->semValue = null; - }, - 561 => null, - 562 => null, - 563 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(3-2)]; - }, - 564 => null, - 565 => null, - 566 => null, - 567 => null, - 568 => null, - 569 => null, - 570 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(3-2)]; - }, - 571 => null, - 572 => null, - 573 => null, - 574 => static function ($self, $stackPos) { - $self->semValue = new Expr\ArrayDimFetch($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 575 => static function ($self, $stackPos) { - $self->semValue = new Expr\ArrayDimFetch($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 576 => null, - 577 => static function ($self, $stackPos) { - $self->semValue = new Expr\MethodCall($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 578 => static function ($self, $stackPos) { - $self->semValue = new Expr\NullsafeMethodCall($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 579 => static function ($self, $stackPos) { - $self->semValue = null; - }, - 580 => null, - 581 => null, - 582 => null, - 583 => static function ($self, $stackPos) { - $self->semValue = new Expr\PropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 584 => static function ($self, $stackPos) { - $self->semValue = new Expr\NullsafePropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 585 => null, - 586 => static function ($self, $stackPos) { - $self->semValue = new Expr\Variable($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 587 => static function ($self, $stackPos) { - $self->semValue = new Expr\Variable($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 588 => static function ($self, $stackPos) { - $self->semValue = new Expr\Variable(new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])), $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); $self->errorState = 2; - }, - 589 => static function ($self, $stackPos) { - $var = $self->semStack[$stackPos-(1-1)]->name; $self->semValue = \is_string($var) ? new Node\VarLikeIdentifier($var, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])) : $var; - }, - 590 => static function ($self, $stackPos) { - $self->semValue = new Expr\StaticPropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 591 => null, - 592 => static function ($self, $stackPos) { - $self->semValue = new Expr\ArrayDimFetch($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 593 => static function ($self, $stackPos) { - $self->semValue = new Expr\ArrayDimFetch($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 594 => static function ($self, $stackPos) { - $self->semValue = new Expr\PropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 595 => static function ($self, $stackPos) { - $self->semValue = new Expr\NullsafePropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 596 => static function ($self, $stackPos) { - $self->semValue = new Expr\StaticPropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 597 => static function ($self, $stackPos) { - $self->semValue = new Expr\StaticPropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 598 => null, - 599 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(3-2)]; - }, - 600 => null, - 601 => null, - 602 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(3-2)]; - }, - 603 => null, - 604 => static function ($self, $stackPos) { - $self->semValue = new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); $self->errorState = 2; - }, - 605 => static function ($self, $stackPos) { - $self->semValue = new Expr\List_($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); $self->semValue->setAttribute('kind', Expr\List_::KIND_LIST); - $self->postprocessList($self->semValue); - }, - 606 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(1-1)]; $end = count($self->semValue)-1; if ($self->semValue[$end]->value instanceof Expr\Error) array_pop($self->semValue); - }, - 607 => null, - 608 => static function ($self, $stackPos) { - /* do nothing -- prevent default action of $$=$self->semStack[$1]. See $551. */ - }, - 609 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 610 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 611 => static function ($self, $stackPos) { - $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(1-1)], null, false, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 612 => static function ($self, $stackPos) { - $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(2-2)], null, true, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 613 => static function ($self, $stackPos) { - $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(1-1)], null, false, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 614 => static function ($self, $stackPos) { - $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(3-3)], $self->semStack[$stackPos-(3-1)], false, $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 615 => static function ($self, $stackPos) { - $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(4-4)], $self->semStack[$stackPos-(4-1)], true, $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 616 => static function ($self, $stackPos) { - $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(3-3)], $self->semStack[$stackPos-(3-1)], false, $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 617 => static function ($self, $stackPos) { - $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(2-2)], null, false, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]), true); - }, - 618 => static function ($self, $stackPos) { - /* Create an Error node now to remember the position. We'll later either report an error, - or convert this into a null element, depending on whether this is a creation or destructuring context. */ - $attrs = $self->createEmptyElemAttributes($self->tokenPos); - $self->semValue = new Node\ArrayItem(new Expr\Error($attrs), null, false, $attrs); - }, - 619 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)]; - }, - 620 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)]; - }, - 621 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 622 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)]); - }, - 623 => static function ($self, $stackPos) { - $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]); $attrs['rawValue'] = $self->semStack[$stackPos-(1-1)]; $self->semValue = new Node\InterpolatedStringPart($self->semStack[$stackPos-(1-1)], $attrs); - }, - 624 => static function ($self, $stackPos) { - $self->semValue = new Expr\Variable($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 625 => null, - 626 => static function ($self, $stackPos) { - $self->semValue = new Expr\ArrayDimFetch($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 627 => static function ($self, $stackPos) { - $self->semValue = new Expr\PropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 628 => static function ($self, $stackPos) { - $self->semValue = new Expr\NullsafePropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 629 => static function ($self, $stackPos) { - $self->semValue = new Expr\Variable($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 630 => static function ($self, $stackPos) { - $self->semValue = new Expr\Variable($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 631 => static function ($self, $stackPos) { - $self->semValue = new Expr\ArrayDimFetch($self->semStack[$stackPos-(6-2)], $self->semStack[$stackPos-(6-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(6-1)], $self->tokenEndStack[$stackPos])); - }, - 632 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(3-2)]; - }, - 633 => static function ($self, $stackPos) { - $self->semValue = new Scalar\String_($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 634 => static function ($self, $stackPos) { - $self->semValue = $self->parseNumString($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 635 => static function ($self, $stackPos) { - $self->semValue = $self->parseNumString('-' . $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 636 => null, - ]; - } -} diff --git a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Parser/Php8.php b/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Parser/Php8.php deleted file mode 100644 index 3addf944..00000000 --- a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/Parser/Php8.php +++ /dev/null @@ -1,2790 +0,0 @@ -'", - "T_IS_GREATER_OR_EQUAL", - "'.'", - "T_SL", - "T_SR", - "'+'", - "'-'", - "'*'", - "'/'", - "'%'", - "'!'", - "T_INSTANCEOF", - "'~'", - "T_INC", - "T_DEC", - "T_INT_CAST", - "T_DOUBLE_CAST", - "T_STRING_CAST", - "T_ARRAY_CAST", - "T_OBJECT_CAST", - "T_BOOL_CAST", - "T_UNSET_CAST", - "'@'", - "T_POW", - "'['", - "T_NEW", - "T_CLONE", - "T_EXIT", - "T_IF", - "T_ELSEIF", - "T_ELSE", - "T_ENDIF", - "T_LNUMBER", - "T_DNUMBER", - "T_STRING", - "T_STRING_VARNAME", - "T_VARIABLE", - "T_NUM_STRING", - "T_INLINE_HTML", - "T_ENCAPSED_AND_WHITESPACE", - "T_CONSTANT_ENCAPSED_STRING", - "T_ECHO", - "T_DO", - "T_WHILE", - "T_ENDWHILE", - "T_FOR", - "T_ENDFOR", - "T_FOREACH", - "T_ENDFOREACH", - "T_DECLARE", - "T_ENDDECLARE", - "T_AS", - "T_SWITCH", - "T_MATCH", - "T_ENDSWITCH", - "T_CASE", - "T_DEFAULT", - "T_BREAK", - "T_CONTINUE", - "T_GOTO", - "T_FUNCTION", - "T_FN", - "T_CONST", - "T_RETURN", - "T_TRY", - "T_CATCH", - "T_FINALLY", - "T_USE", - "T_INSTEADOF", - "T_GLOBAL", - "T_STATIC", - "T_ABSTRACT", - "T_FINAL", - "T_PRIVATE", - "T_PROTECTED", - "T_PUBLIC", - "T_READONLY", - "T_PUBLIC_SET", - "T_PROTECTED_SET", - "T_PRIVATE_SET", - "T_VAR", - "T_UNSET", - "T_ISSET", - "T_EMPTY", - "T_HALT_COMPILER", - "T_CLASS", - "T_TRAIT", - "T_INTERFACE", - "T_ENUM", - "T_EXTENDS", - "T_IMPLEMENTS", - "T_OBJECT_OPERATOR", - "T_NULLSAFE_OBJECT_OPERATOR", - "T_LIST", - "T_ARRAY", - "T_CALLABLE", - "T_CLASS_C", - "T_TRAIT_C", - "T_METHOD_C", - "T_FUNC_C", - "T_PROPERTY_C", - "T_LINE", - "T_FILE", - "T_START_HEREDOC", - "T_END_HEREDOC", - "T_DOLLAR_OPEN_CURLY_BRACES", - "T_CURLY_OPEN", - "T_PAAMAYIM_NEKUDOTAYIM", - "T_NAMESPACE", - "T_NS_C", - "T_DIR", - "T_NS_SEPARATOR", - "T_ELLIPSIS", - "T_NAME_FULLY_QUALIFIED", - "T_NAME_QUALIFIED", - "T_NAME_RELATIVE", - "T_ATTRIBUTE", - "';'", - "']'", - "'('", - "')'", - "'{'", - "'}'", - "'`'", - "'\"'", - "'$'" - ); - - protected array $tokenToSymbol = array( - 0, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 56, 170, 172, 171, 55, 172, 172, - 165, 166, 53, 51, 8, 52, 48, 54, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 31, 163, - 44, 16, 46, 30, 68, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 70, 172, 164, 36, 172, 169, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 167, 35, 168, 58, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 1, 2, 3, 4, - 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 32, 33, 34, 37, 38, 39, 40, - 41, 42, 43, 45, 47, 49, 50, 57, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 69, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162 - ); - - protected array $action = array( - 126, 127, 128, 570, 129, 130, 955, 765, 766, 767, - 131, 38, 849, -85,-32766, 1376,-32766,-32766,-32766, 0, - 840, 1134, 1135, 1136, 1130, 1129, 1128, 1137, 1131, 1132, - 1133,-32766,-32766,-32766, 851, 759, 758,-32766,-32766,-32766, - -32766,-32766,-32766,-32766,-32766,-32766,-32767,-32767,-32767,-32767, - -32767, 1005,-32766, 1045, -570, 768, 1134, 1135, 1136, 1130, - 1129, 1128, 1137, 1131, 1132, 1133, 388, 387, 842, 263, - 132, 389, 772, 773, 774, 775, 430, 845, 431, -85, - 2, 36, 246, 47, 291, 829, 776, 777, 778, 779, - 780, 781, 782, 783, 784, 785, 805, 571, 806, 807, - 808, 809, 797, 798, 344, 345, 800, 801, 786, 787, - 788, 790, 791, 792, 359, 832, 833, 834, 835, 836, - 572, -570, -570, -332, 793, 794, 573, 574, 236, 817, - 815, 816, 828, 812, 813, 26, -194, 575, 576, 811, - 577, 578, 579, 580, 323, 581, 582, 876, 844, 877, - 297, 298, 814, 583, 584, 722, 133, 846, 126, 127, - 128, 570, 129, 130, 1078, 765, 766, 767, 131, 38, - -32766, 35, 735, 1038, 1037, 1036, 1042, 1039, 1040, 1041, - -32766,-32766,-32766, 1006, 104, 105, 106, 107, 108, -372, - 275, -372,-32766, 759, 758, 1054, 850,-32766,-32766,-32766, - 848,-32766, 109,-32766,-32766,-32766,-32766,-32766,-32766,-32766, - 134, 476, 477, 768,-32766,-32766,-32766, 1054,-32766, 290, - -32766,-32766,-32766,-32766,-32766, 616, 143, 263, 132, 389, - 772, 773, 774, 775, 249,-32766, 431,-32766,-32766,-32766, - -32766, 290, 307, 829, 776, 777, 778, 779, 780, 781, - 782, 783, 784, 785, 805, 571, 806, 807, 808, 809, - 797, 798, 344, 345, 800, 801, 786, 787, 788, 790, - 791, 792, 359, 832, 833, 834, 835, 836, 572, 958, - -273, -332, 793, 794, 573, 574, 840, 817, 815, 816, - 828, 812, 813, 1301, -194, 575, 576, 811, 577, 578, - 579, 580, 566, 581, 582, 1108, 82, 83, 84, 748, - 814, 583, 584, 309, 146, 789, 760, 761, 762, 763, - 764, 235, 765, 766, 767, 802, 803, 37, 957, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 157, 275,-32766,-32766,-32766,-32767,-32767, - -32767,-32767, 101, 102, 103,-32766, 109, 1313, 622, 318, - 768,-32766,-32766,-32766, 849, 1361,-32766, 1107,-32766,-32766, - -32766, 340, 1360, 1357, 769, 770, 771, 772, 773, 774, - 775, 341,-32766, 838,-32766,-32766, 1386, 374, 1281, 1387, - 829, 776, 777, 778, 779, 780, 781, 782, 783, 784, - 785, 805, 827, 806, 807, 808, 809, 797, 798, 799, - 826, 800, 801, 786, 787, 788, 790, 791, 792, 831, - 832, 833, 834, 835, 836, 837, 1077, 431, -567, 793, - 794, 795, 796, 148, 817, 815, 816, 828, 812, 813, - 380, -193, 804, 810, 811, 818, 819, 821, 820, 138, - 822, 823, 840, 321, 396, 285, 24, 814, 825, 824, - 49, 50, 51, 522, 52, 53, 398, -110, 7, 849, - 54, 55, -110, 56, -110,-32766,-32766,-32766, 1342, 303, - 125, 1123, -110, -110, -110, -110, -110, -110, -110, -110, - -110, -110, -110, 161, 750, -567, -567, 291, 974, 975, - -32766,-32766,-32766, 976, 448, 285, 1276, 1275, 1277, 57, - 58, -567,-32766,-32766, 59, 1109, 60, 243, 244, 61, - 62, 63, 64, 65, 66, 67, 68,-32766, 28, 265, - 69, 446, 523, 490, -346, 449, 1307, 1308, 524, 139, - 849, 1051, 450, 321, 1305, 42, 20, 525, 934, 526, - 934, 527, 74, 528, -568, 698, 529, 530, 321, 386, - 387, 44, 45, 452, 383, 382, 1054, 46, 531, 430, - 974, 975, 451, 372, 339, 976, 1281, 855, 725, 934, - 1267, 759, 758,-32766, 970, 533, 534, 535, 149, 934, - 281, 699, -78, -566, 1274, 102, 103, 537, 538, -193, - 1293, 1294, 1295, 1296, 1298, 1290, 1291, 295, 1054, 726, - 466, 467, 468, 1297, 1292, 700, 701, 1276, 1275, 1277, - 296, -568, -568, 70, -153, -153, -153, 316, 317, 321, - 1272, 924, 290, 924, 1276, 1275, 1277, -568, 1051, -153, - 281, -153, 1150, -153, 81, -153, 740, 151, 321, -574, - 152, 759, 758,-32766, 1053, 381, 876, 849, 877, 153, - -566, -566, 924, 1054, 1051, 155, 974, 975, -606, 491, - -606, 532, 924, 1276, 1275, 1277, -566, 33, 1054, 910, - 970, -110, -110, -110, 28, 266, -58, 281, -573, 1054, - -32766,-32766, -110, -110, 665, 21, 849, -110, -57, -564, - 1305, 684, 685, 147, 413, 123, -110, 384, 385, 124, - 936, 135, 936, 136, 720,-32766, 720, -153, 142, 48, - 32, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 390, 391, 1267, 296, 759, 758, - 74, 936, 156, 934, 158, 720, 321, -4, 934, 159, - 934, 936, 160, 537, 538, 720, 1293, 1294, 1295, 1296, - 1298, 1290, 1291, 1183, 1185, 934, -564, -564, -565, 1297, - 1292, 759, 758, 727, -564,-32766, 656, 657, -306, 72, - 730, 1274, -564, -87, 317, 321, 299, 300,-32766,-32766, - -32766, -84,-32766, -78,-32766, 737,-32766, -73, -72,-32766, - -71, -70, 379, -69,-32766,-32766,-32766, -68,-32766, -67, - -32766,-32766, -66, -65, 1274, -46,-32766, 427, 28, 265, - -18,-32766,-32766,-32766, 140,-32766, 924,-32766,-32766,-32766, - 849, 924,-32766, 924, 1305, -565, -565,-32766,-32766,-32766, - 274, -564, -564,-32766,-32766, 282, 736, 739, 924,-32766, - 427, -565, 933, 381, 145, 443, 286, -564, 951, 73, - 294,-32766, -302, -572, 974, 975, 279, 280, 283, 532, - 1267, 28, 266, 284, 329, 275, 109, 536, 970, -110, - -110, -110, 287, 849, 292, 293, 840, 1305, 538, 694, - 1293, 1294, 1295, 1296, 1298, 1290, 1291, 709, 144, 587, - 711, 11, 10, 1297, 1292, 991, 849, 1141, 473, 720, - 936,-32766, 936, 72, 720, -4, 720, 1388, 317, 321, - -50, 970, 672, 1267, 687, 666, 501, 936, 971, 301, - 308, 720, 671, 1312, 302, 1314,-32766, 688, 953, -530, - -520, 538, 40, 1293, 1294, 1295, 1296, 1298, 1290, 1291, - 848, 41, 8, 137, 654, 27, 1297, 1292, 304, 34, - 593, 620, 296,-32766, 0, 0, 72, 0, 0, 1274, - 0, 317, 321, 0, 0, 0,-32766,-32766,-32766, -276, - -32766, 0,-32766, 0,-32766, 0, 0,-32766, 0, 0, - 0, 0,-32766,-32766,-32766, 934,-32766, 0,-32766,-32766, - 0, 0, 1274, 378,-32766, 427, 745, -600, 412,-32766, - -32766,-32766, 746,-32766, 868,-32766,-32766,-32766, 934, 915, - -32766, 1015, 992, 999, 989,-32766,-32766,-32766, 1000,-32766, - 913,-32766,-32766, 987, 1112, 1274, 1115,-32766, 427, 1116, - 1113, 1152,-32766,-32766,-32766, 1114,-32766, 1120,-32766,-32766, - -32766, 1302, 860,-32766, 1329, 1346, 1379, 496,-32766,-32766, - -32766, 659,-32766, -599,-32766,-32766, -598, -574, 1274, 600, - -32766, 427, -573, -572, -571,-32766,-32766,-32766, 924,-32766, - -514,-32766,-32766,-32766, 1, 29,-32766, -274, 30, 39, - 43,-32766,-32766,-32766, -251, -251, -251,-32766,-32766, 71, - 381, 924, 75,-32766, 427, 76, 77, 78, 1281, 79, - 80, 974, 975, 141, 150,-32766, 532, -250, -250, -250, - -273, 154, 241, 381, 910, 970, -110, -110, -110, 325, - 360, 361, 362, 363, 974, 975, 364, 365, -16, 532, - 366, 367, 368, 369, 370, 373, 444, 910, 970, -110, - -110, -110,-32766, 13, 565, 371, 1306, 936, 1274, 14, - 416, 720, -251, 15, 16,-32766,-32766,-32766, 18,-32766, - 354,-32766, 411,-32766, 492, 493,-32766, 500, 503, 504, - 936,-32766,-32766,-32766, 720, -250, 505,-32766,-32766, 849, - 506, 510, 511,-32766, 427, 512, 519, 598, 704, 1080, - 1223, 1303, 1079, 1060, 1262,-32766, 1056, -278, -102, 12, - 17, 22, 312, 410, 612, 617, 645, 710, 1227, 1280, - 1224, 1358, 0, 315, -110, -110, 375, 721, 724, -110, - 728, 729, 731, 732, 733, 734, 738, 750, -110, 723, - 751, 0, 742, 911, 1383, 1385, 0,-32766, 871, 870, - 964, 1007, 1384, 963, 961, 962, 965, 1255, 944, 954, - 942, 1151, 1147, 1101, 997, 998, 643, 1382, 1340, 296, - 1355, 0, 74, 1240, 321, 0, 0, 0, 321 - ); - - protected array $actionCheck = array( - 2, 3, 4, 5, 6, 7, 1, 9, 10, 11, - 12, 13, 82, 31, 116, 85, 9, 10, 11, 0, - 80, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 9, 10, 11, 1, 37, 38, 30, 140, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 31, 30, 1, 70, 57, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 106, 107, 80, 71, - 72, 73, 74, 75, 76, 77, 116, 80, 80, 97, - 8, 151, 152, 70, 30, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 137, 138, 8, 126, 127, 128, 129, 14, 131, - 132, 133, 134, 135, 136, 8, 8, 139, 140, 141, - 142, 143, 144, 145, 70, 147, 148, 106, 160, 108, - 137, 138, 154, 155, 156, 167, 158, 160, 2, 3, - 4, 5, 6, 7, 166, 9, 10, 11, 12, 13, - 116, 8, 167, 119, 120, 121, 122, 123, 124, 125, - 9, 10, 11, 163, 51, 52, 53, 54, 55, 106, - 57, 108, 116, 37, 38, 141, 163, 9, 10, 11, - 159, 30, 69, 32, 33, 34, 35, 36, 37, 38, - 8, 137, 138, 57, 9, 10, 11, 141, 30, 165, - 32, 33, 34, 35, 36, 1, 8, 71, 72, 73, - 74, 75, 76, 77, 8, 30, 80, 32, 33, 34, - 35, 165, 8, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 73, - 166, 166, 126, 127, 128, 129, 80, 131, 132, 133, - 134, 135, 136, 1, 166, 139, 140, 141, 142, 143, - 144, 145, 85, 147, 148, 163, 9, 10, 11, 167, - 154, 155, 156, 8, 158, 2, 3, 4, 5, 6, - 7, 97, 9, 10, 11, 12, 13, 30, 122, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 16, 57, 9, 10, 11, 44, 45, - 46, 47, 48, 49, 50, 9, 69, 150, 52, 8, - 57, 9, 10, 11, 82, 1, 30, 1, 32, 33, - 34, 8, 8, 1, 71, 72, 73, 74, 75, 76, - 77, 8, 30, 80, 32, 33, 80, 8, 1, 83, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 1, 80, 70, 126, - 127, 128, 129, 14, 131, 132, 133, 134, 135, 136, - 8, 8, 139, 140, 141, 142, 143, 144, 145, 167, - 147, 148, 80, 171, 8, 30, 101, 154, 155, 156, - 2, 3, 4, 5, 6, 7, 106, 101, 108, 82, - 12, 13, 106, 15, 108, 9, 10, 11, 1, 113, - 14, 126, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 14, 167, 137, 138, 30, 117, 118, - 9, 10, 11, 122, 8, 30, 159, 160, 161, 51, - 52, 153, 9, 10, 56, 168, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 140, 70, 71, - 72, 73, 74, 31, 168, 8, 78, 79, 80, 167, - 82, 116, 8, 171, 86, 87, 88, 89, 1, 91, - 1, 93, 165, 95, 70, 80, 98, 99, 171, 106, - 107, 103, 104, 105, 106, 107, 141, 109, 110, 116, - 117, 118, 8, 115, 116, 122, 1, 8, 31, 1, - 122, 37, 38, 116, 131, 127, 128, 129, 14, 1, - 165, 116, 16, 70, 80, 49, 50, 139, 140, 166, - 142, 143, 144, 145, 146, 147, 148, 149, 141, 31, - 132, 133, 134, 155, 156, 140, 141, 159, 160, 161, - 162, 137, 138, 165, 75, 76, 77, 169, 170, 171, - 116, 84, 165, 84, 159, 160, 161, 153, 116, 90, - 165, 92, 163, 94, 167, 96, 167, 14, 171, 165, - 14, 37, 38, 116, 140, 106, 106, 82, 108, 14, - 137, 138, 84, 141, 116, 14, 117, 118, 164, 167, - 166, 122, 84, 159, 160, 161, 153, 14, 141, 130, - 131, 132, 133, 134, 70, 71, 16, 165, 165, 141, - 51, 52, 117, 118, 75, 76, 82, 122, 16, 70, - 86, 75, 76, 101, 102, 16, 131, 106, 107, 16, - 163, 16, 163, 16, 167, 140, 167, 168, 16, 70, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 106, 107, 122, 162, 37, 38, - 165, 163, 16, 1, 16, 167, 171, 0, 1, 16, - 1, 163, 16, 139, 140, 167, 142, 143, 144, 145, - 146, 147, 148, 59, 60, 1, 137, 138, 70, 155, - 156, 37, 38, 31, 70, 74, 111, 112, 35, 165, - 31, 80, 153, 31, 170, 171, 137, 138, 87, 88, - 89, 31, 91, 31, 93, 31, 95, 31, 31, 98, - 31, 31, 153, 31, 103, 104, 105, 31, 74, 31, - 109, 110, 31, 31, 80, 31, 115, 116, 70, 71, - 31, 87, 88, 89, 31, 91, 84, 93, 127, 95, - 82, 84, 98, 84, 86, 137, 138, 103, 104, 105, - 31, 137, 138, 109, 110, 31, 31, 31, 84, 115, - 116, 153, 31, 106, 31, 108, 37, 153, 38, 158, - 113, 127, 35, 165, 117, 118, 35, 35, 35, 122, - 122, 70, 71, 35, 35, 57, 69, 130, 131, 132, - 133, 134, 37, 82, 37, 37, 80, 86, 140, 77, - 142, 143, 144, 145, 146, 147, 148, 80, 70, 89, - 92, 154, 97, 155, 156, 163, 82, 82, 97, 167, - 163, 85, 163, 165, 167, 168, 167, 83, 170, 171, - 31, 131, 100, 122, 94, 90, 97, 163, 131, 135, - 135, 167, 96, 150, 136, 150, 140, 100, 158, 153, - 153, 140, 163, 142, 143, 144, 145, 146, 147, 148, - 159, 163, 153, 31, 113, 153, 155, 156, 114, 167, - 157, 157, 162, 74, -1, -1, 165, -1, -1, 80, - -1, 170, 171, -1, -1, -1, 87, 88, 89, 166, - 91, -1, 93, -1, 95, -1, -1, 98, -1, -1, - -1, -1, 103, 104, 105, 1, 74, -1, 109, 110, - -1, -1, 80, 153, 115, 116, 163, 165, 168, 87, - 88, 89, 163, 91, 163, 93, 127, 95, 1, 163, - 98, 163, 163, 163, 163, 103, 104, 105, 163, 74, - 163, 109, 110, 163, 163, 80, 163, 115, 116, 163, - 163, 163, 87, 88, 89, 163, 91, 163, 93, 127, - 95, 164, 164, 98, 164, 164, 164, 102, 103, 104, - 105, 164, 74, 165, 109, 110, 165, 165, 80, 81, - 115, 116, 165, 165, 165, 87, 88, 89, 84, 91, - 165, 93, 127, 95, 165, 165, 98, 166, 165, 165, - 165, 103, 104, 105, 100, 101, 102, 109, 110, 165, - 106, 84, 165, 115, 116, 165, 165, 165, 1, 165, - 165, 117, 118, 165, 165, 127, 122, 100, 101, 102, - 166, 165, 165, 106, 130, 131, 132, 133, 134, 165, - 165, 165, 165, 165, 117, 118, 165, 165, 31, 122, - 165, 165, 165, 165, 165, 165, 165, 130, 131, 132, - 133, 134, 74, 166, 165, 165, 170, 163, 80, 166, - 168, 167, 168, 166, 166, 87, 88, 89, 166, 91, - 166, 93, 166, 95, 166, 166, 98, 166, 166, 166, - 163, 103, 104, 105, 167, 168, 166, 109, 110, 82, - 166, 166, 166, 115, 116, 166, 166, 166, 166, 166, - 166, 166, 166, 166, 166, 127, 166, 166, 166, 166, - 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, - 166, 166, -1, 167, 117, 118, 167, 167, 167, 122, - 167, 167, 167, 167, 167, 167, 167, 167, 131, 167, - 167, -1, 168, 168, 168, 168, -1, 140, 168, 168, - 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, - 168, 168, 168, 168, 168, 168, 168, 168, 168, 162, - 168, -1, 165, 169, 171, -1, -1, -1, 171 - ); - - protected array $actionBase = array( - 0, -2, 156, 559, 757, 1004, 1027, 485, 292, 357, - -60, -12, 588, 759, 759, 774, 759, 557, 752, 892, - 598, 598, 598, 827, 313, 313, 827, 313, 711, 711, - 711, 711, 744, 744, 965, 965, 998, 932, 899, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, - 1088, 1088, 33, 20, 224, 1080, 673, 1056, 1062, 1058, - 1063, 1054, 1053, 1057, 1059, 1064, 1109, 1110, 833, 1108, - 1112, 1060, 907, 1055, 1061, 888, 297, 297, 297, 297, - 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, - 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, - 297, 297, 356, 476, 513, 501, 501, 501, 501, 501, - 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, - 501, 501, 501, 501, 501, 624, 624, 22, 22, 22, - 362, 811, 758, 811, 811, 811, 811, 811, 811, 811, - 811, 346, 205, 188, 714, 171, 171, 7, 7, 7, - 7, 7, 376, 1117, 54, 585, 585, 314, 314, 314, - 314, 365, 554, 83, 435, 397, 556, 477, 463, 532, - 532, 558, 558, 76, 76, 558, 558, 558, 133, 133, - 547, 547, 547, 547, 41, 217, 806, 382, 382, 382, - 382, 806, 806, 806, 806, 795, 996, 806, 806, 806, - 494, 533, 708, 649, 649, 560, -70, -70, 560, 800, - -70, 487, 975, 316, 982, -102, 807, -40, 514, -102, - 1000, 368, 639, 639, 659, 639, 639, 639, 801, 611, - 801, 1052, 836, 836, 794, 776, 894, 1082, 1065, 832, - 1106, 847, 1107, 1083, 489, 488, -16, 13, 74, 772, - 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, - 1051, 1051, 1113, 554, 1052, -3, 1104, 1105, 1113, 1113, - 1113, 554, 554, 554, 554, 554, 554, 554, 554, 799, - 554, 554, 675, -3, 629, 636, -3, 849, 554, 797, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 512, 33, 33, 20, 5, 5, 33, 142, 52, 5, - 5, 5, 337, 5, 33, 33, 33, 611, 828, 813, - 638, -18, 814, 443, 828, 828, 828, 115, 114, 128, - 753, 837, 370, 816, 816, 835, 929, 929, 816, 834, - 816, 835, 816, 816, 929, 929, 810, 929, 202, 506, - 373, 442, 537, 929, 234, 816, 816, 816, 816, 805, - 929, 72, 544, 816, 226, 218, 816, 816, 805, 804, - 824, 808, 929, 929, 929, 805, 389, 808, 808, 808, - 853, 859, 851, 819, 361, 305, 579, 163, 830, 819, - 819, 816, 456, 851, 819, 851, 819, 790, 819, 819, - 819, 851, 819, 834, 383, 819, 736, 574, 127, 819, - 816, 19, 944, 947, 762, 950, 934, 951, 991, 952, - 954, 1070, 925, 967, 935, 955, 999, 933, 930, 831, - 699, 703, 809, 796, 919, 817, 817, 817, 912, 917, - 817, 817, 817, 817, 817, 817, 817, 817, 699, 897, - 860, 820, 976, 705, 707, 1041, 793, 1085, 1114, 975, - 944, 954, 770, 935, 955, 933, 930, 792, 791, 786, - 788, 782, 780, 777, 779, 803, 1043, 958, 789, 712, - 1012, 977, 1084, 1066, 978, 981, 1016, 1044, 861, 1045, - 1086, 838, 1087, 1090, 898, 985, 1071, 817, 911, 852, - 900, 982, 918, 699, 901, 1046, 997, 802, 1018, 1019, - 1069, 821, 844, 902, 1091, 986, 987, 988, 1073, 1074, - 798, 1003, 823, 1021, 839, 850, 1022, 1023, 1030, 1034, - 1075, 1092, 1076, 908, 1077, 866, 845, 931, 846, 1093, - 429, 843, 848, 858, 990, 584, 974, 1078, 1002, 1094, - 1035, 1036, 1039, 1095, 1096, 959, 868, 1007, 840, 1008, - 964, 869, 870, 643, 857, 1047, 841, 842, 855, 646, - 655, 1097, 1098, 1099, 966, 825, 822, 871, 875, 1048, - 829, 1050, 1100, 661, 877, 1101, 1042, 738, 743, 586, - 692, 680, 746, 818, 1079, 812, 854, 815, 989, 743, - 826, 880, 1102, 881, 883, 886, 1040, 887, 1014, 1103, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 468, 468, 468, 468, 468, 468, - 313, 313, 313, 313, 313, 468, 468, 468, 468, 468, - 468, 468, 313, 468, 468, 468, 313, 0, 0, 313, - 0, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 297, 297, 297, 297, 297, - 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, - 297, 297, 297, 297, 297, 297, 297, 297, 297, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 297, 297, 297, 297, 297, - 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, - 297, 297, 297, 297, 297, 297, 297, 297, 524, 524, - 297, 297, 297, 297, 524, 524, 524, 524, 524, 524, - 524, 524, 524, 524, 297, 297, 297, 0, 297, 297, - 297, 297, 297, 297, 297, 810, 524, 524, 524, 524, - 133, 133, 133, 133, -95, -95, -95, 524, 524, 133, - 524, 810, 524, 524, 524, 524, 524, 524, 524, 524, - 524, 0, 0, 524, 524, 524, 524, -3, -70, 524, - 834, 834, 834, 834, 524, 524, 524, 524, -70, -70, - 524, 524, 524, 0, 0, 0, 133, 133, -3, 0, - 0, -3, 391, 0, 834, 206, 834, 206, 524, 391, - 810, 374, 524, 489, 0, 0, 0, 0, 0, 0, - 0, -3, 834, -3, 554, -70, -70, 554, 554, 5, - 33, 374, 612, 612, 612, 612, 33, 0, 0, 0, - 0, 0, 611, 810, 810, 810, 810, 810, 810, 810, - 810, 810, 810, 810, 810, 834, 0, 810, 0, 810, - 810, 834, 834, 834, 0, 0, 0, 0, 0, 0, - 0, 0, 929, 0, 0, 0, 0, 0, 0, 0, - 834, 0, 929, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 834, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 817, 821, 0, 0, 821, 0, 817, 817, 817, - 0, 0, 0, 857, 829 - ); - - protected array $actionDefault = array( - 3,32767, 102,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767, 100,32767, 618, 618, - 618, 618,32767,32767, 255, 102,32767,32767, 489, 406, - 406, 406,32767,32767, 562, 562, 562, 562, 562,32767, - 32767,32767,32767,32767,32767, 489,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767, 36, 7, 8, 10, - 11, 49, 17, 328, 100,32767,32767,32767,32767,32767, - 32767,32767,32767, 102,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767, 393, 611,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767, 493, 472, 473, 475, - 476, 405, 563, 617, 331, 614, 333, 404, 145, 343, - 334, 243, 259, 494, 260, 495, 498, 499, 216, 390, - 149, 150, 436, 490, 438, 488, 492, 437, 411, 417, - 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 409, 410, 491,32767,32767, 469, 468, 467, - 434,32767,32767,32767,32767,32767,32767,32767,32767, 102, - 32767, 435, 439, 442, 408, 440, 441, 458, 459, 456, - 457, 460,32767,32767, 320,32767,32767, 461, 462, 463, - 464, 371, 195, 369,32767,32767, 443, 320, 111,32767, - 32767,32767,32767,32767,32767,32767,32767,32767, 449, 450, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767, 102,32767, 100, - 506, 556, 466, 444, 445,32767, 531,32767, 102,32767, - 533,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767, 558, 431, 433, 526, 612, 412, 615,32767, 519, - 100, 195,32767, 532, 195, 195,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767, 557,32767, 625, 519, - 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, - 110, 110,32767, 195, 110,32767, 110, 110,32767,32767, - 100, 195, 195, 195, 195, 195, 195, 195, 195, 534, - 195, 195, 190,32767, 269, 271, 102, 580, 195, 536, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767, 393,32767,32767,32767,32767, 519, 454, 138, - 32767, 521, 138, 564, 446, 447, 448, 564, 564, 564, - 316, 293,32767,32767,32767,32767, 534, 534, 100, 100, - 100, 100,32767,32767,32767,32767, 111, 505, 99, 99, - 99, 99, 99, 103, 101,32767,32767,32767,32767, 224, - 32767, 101, 99,32767, 101, 101,32767,32767, 224, 226, - 213, 228,32767, 584, 585, 224, 101, 228, 228, 228, - 248, 248, 508, 322, 101, 99, 101, 101, 197, 322, - 322,32767, 101, 508, 322, 508, 322, 199, 322, 322, - 322, 508, 322,32767, 101, 322, 215, 99, 99, 322, - 32767,32767,32767,32767, 521,32767,32767,32767,32767,32767, - 32767,32767, 223,32767,32767,32767,32767,32767,32767,32767, - 32767, 551,32767, 569, 582, 452, 453, 455, 568, 566, - 477, 478, 479, 480, 481, 482, 483, 485, 613,32767, - 525,32767,32767,32767, 342,32767, 623,32767,32767,32767, - 9, 74, 514, 42, 43, 51, 57, 540, 541, 542, - 543, 537, 538, 544, 539,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 624,32767, 564,32767,32767,32767,32767, 451, 546, 590, - 32767,32767, 565, 616,32767,32767,32767,32767,32767,32767, - 32767, 138,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767, 551,32767, 136,32767,32767,32767,32767,32767, - 32767,32767,32767, 547,32767,32767,32767, 564,32767,32767, - 32767,32767, 318, 315,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 564,32767,32767,32767,32767,32767, 295,32767, 312,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767, 389, 521, 298, - 300, 301,32767,32767,32767,32767, 365,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 152, 152, 3, 3, 345, 152, 152, 152, 345, 345, - 152, 345, 345, 345, 152, 152, 152, 152, 152, 152, - 152, 281, 185, 263, 266, 248, 248, 152, 357, 152, - 391, 391, 400 - ); - - protected array $goto = array( - 194, 194, 1052, 487, 705, 278, 278, 278, 278, 990, - 489, 548, 548, 907, 865, 907, 907, 548, 714, 548, - 548, 548, 548, 548, 548, 548, 548, 166, 166, 166, - 166, 218, 195, 191, 191, 176, 178, 213, 191, 191, - 191, 191, 191, 192, 192, 192, 192, 192, 186, 187, - 188, 189, 190, 215, 213, 216, 545, 546, 428, 547, - 550, 551, 552, 553, 554, 555, 556, 557, 1169, 167, - 168, 169, 193, 170, 171, 172, 164, 173, 174, 175, - 177, 212, 214, 217, 237, 240, 251, 252, 253, 255, - 256, 257, 258, 259, 260, 261, 267, 268, 269, 270, - 276, 288, 289, 313, 314, 434, 435, 436, 607, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 186, 187, 188, 189, 190, - 215, 1169, 196, 197, 198, 199, 238, 179, 180, 200, - 181, 201, 197, 182, 239, 196, 163, 202, 203, 183, - 204, 205, 206, 184, 207, 208, 165, 209, 210, 211, - 185, 869, 560, 1083, 560, 560, 592, 1100, 475, 475, - 744, 646, 648, 609, 560, 668, 432, 475, 621, 692, - 695, 1025, 703, 712, 1021, 719, 558, 558, 558, 558, - 470, 613, 866, 663, 664, 463, 681, 682, 683, 1218, - 984, 984, 984, 984, 247, 247, 463, 978, 985, 355, - 355, 355, 355, 867, 923, 918, 919, 932, 875, 920, - 872, 921, 922, 873, 350, 926, 879, 1126, 1154, 1127, - 878, 245, 245, 245, 245, 242, 248, 841, 1106, 1102, - 1103, 438, 670, 402, 405, 610, 614, 433, 336, 332, - 333, 335, 602, 437, 337, 439, 647, 426, 1273, 1052, - 1273, 1273, 342, 900, 456, 456, 348, 456, 456, 1052, - 1273, 882, 1052, 520, 1052, 1052, 1052, 1052, 1052, 1052, - 1052, 1052, 1052, 343, 342, 1052, 1052, 1052, 1052, 894, - 465, 1273, 881, 508, 599, 509, 1273, 1273, 1273, 1273, - 358, 515, 1273, 1273, 1273, 1354, 1354, 1354, 1354, 862, - 358, 358, 1372, 1372, 630, 667, 895, 883, 1088, 1092, - 940, 358, 358, 1362, 941, 358, 1011, 1372, 1389, 993, - 956, 447, 956, 619, 633, 636, 637, 638, 639, 660, - 661, 662, 716, 718, 564, 569, 562, 358, 358, 1375, - 1375, 400, 983, 1055, 1055, 690, 967, 597, 862, 1047, - 1063, 1064, 456, 456, 456, 456, 456, 456, 456, 456, - 456, 456, 456, 456, 1138, 899, 456, 669, 456, 456, - 1058, 1057, 322, 562, 569, 594, 595, 324, 605, 611, - 1166, 626, 627, 1028, 1028, 1061, 1062, 632, 632, 25, - 320, 306, 1334, 1304, 1304, 1304, 1304, 1304, 1304, 1304, - 1304, 1304, 1304, 702, 1349, 1350, 1014, 843, 5, 986, - 6, 743, 445, 422, 561, 1023, 1018, 1076, 1345, 702, - 1345, 1345, 702, 603, 624, 1323, 1323, 691, 250, 250, - 1345, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, - 1323, 563, 589, 927, 564, 928, 563, 675, 589, 859, - 403, 469, 1356, 1356, 1356, 1356, 338, 887, 271, 319, - 625, 319, 319, 478, 606, 479, 480, 973, 351, 352, - 409, 892, 1320, 1320, 1380, 1381, 1341, 862, 1320, 1320, - 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 982, 417, - 713, 1268, 1264, 414, 415, 1033, 884, 440, 679, 890, - 680, 1149, 419, 420, 421, 1089, 693, 847, 1266, 423, - 440, 747, 1043, 346, 485, 1093, 1059, 1059, 330, 484, - 1347, 1348, 1140, 674, 1070, 1066, 1067, 1091, 896, 995, - 549, 549, 377, 1343, 1343, 1091, 549, 549, 549, 549, - 549, 549, 549, 549, 549, 549, 1269, 1270, 0, 1256, - 0, 847, 0, 847, 615, 857, 0, 945, 1156, 640, - 642, 644, 1256, 0, 0, 0, 0, 608, 1119, 1030, - 0, 0, 752, 752, 1271, 1331, 1332, 886, 717, 673, - 1009, 0, 0, 516, 708, 880, 1117, 1249, 959, 0, - 0, 0, 1250, 1253, 960, 0, 1254, 1263 - ); - - protected array $gotoCheck = array( - 42, 42, 73, 84, 73, 23, 23, 23, 23, 49, - 84, 162, 162, 25, 25, 25, 25, 162, 9, 162, - 162, 162, 162, 162, 162, 162, 162, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 15, 19, 128, 19, 19, 48, 15, 154, 154, - 48, 48, 48, 131, 19, 48, 13, 154, 13, 48, - 48, 48, 48, 48, 48, 48, 107, 107, 107, 107, - 156, 107, 26, 86, 86, 19, 86, 86, 86, 156, - 19, 19, 19, 19, 5, 5, 19, 19, 19, 24, - 24, 24, 24, 27, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 97, 15, 15, 146, 146, 146, - 15, 5, 5, 5, 5, 5, 5, 6, 15, 15, - 15, 66, 66, 59, 59, 59, 59, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 43, 73, 73, - 73, 73, 174, 45, 23, 23, 185, 23, 23, 73, - 73, 35, 73, 76, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 174, 174, 73, 73, 73, 73, 35, - 83, 73, 35, 160, 178, 160, 73, 73, 73, 73, - 14, 160, 73, 73, 73, 9, 9, 9, 9, 22, - 14, 14, 188, 188, 56, 56, 16, 16, 16, 16, - 73, 14, 14, 187, 73, 14, 103, 188, 14, 16, - 9, 83, 9, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 14, 76, 76, 14, 14, 188, - 188, 62, 16, 89, 89, 89, 89, 104, 22, 89, - 89, 89, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 16, 16, 23, 64, 23, 23, - 119, 119, 76, 76, 76, 76, 76, 76, 76, 76, - 155, 76, 76, 107, 107, 120, 120, 108, 108, 76, - 175, 175, 14, 108, 108, 108, 108, 108, 108, 108, - 108, 108, 108, 7, 184, 184, 50, 7, 46, 50, - 46, 50, 113, 14, 50, 50, 50, 115, 131, 7, - 131, 131, 7, 2, 2, 176, 176, 117, 5, 5, - 131, 176, 176, 176, 176, 176, 176, 176, 176, 176, - 176, 9, 9, 65, 14, 65, 9, 121, 9, 18, - 9, 9, 131, 131, 131, 131, 29, 39, 24, 24, - 80, 24, 24, 9, 9, 9, 9, 92, 97, 97, - 28, 9, 177, 177, 9, 9, 131, 22, 177, 177, - 177, 177, 177, 177, 177, 177, 177, 177, 93, 93, - 93, 20, 166, 82, 82, 110, 37, 118, 82, 9, - 82, 153, 82, 82, 82, 130, 82, 12, 14, 82, - 118, 99, 114, 82, 157, 133, 118, 118, 9, 182, - 182, 182, 149, 118, 118, 118, 118, 131, 41, 96, - 179, 179, 138, 131, 131, 131, 179, 179, 179, 179, - 179, 179, 179, 179, 179, 179, 20, 20, -1, 20, - -1, 12, -1, 12, 17, 20, -1, 17, 17, 85, - 85, 85, 20, -1, -1, -1, -1, 8, 8, 17, - -1, -1, 24, 24, 20, 20, 20, 17, 8, 17, - 17, -1, -1, 8, 8, 17, 8, 79, 79, -1, - -1, -1, 79, 79, 79, -1, 79, 17 - ); - - protected array $gotoBase = array( - 0, 0, -289, 0, 0, 203, 227, 406, 569, 8, - 0, 0, 223, -162, 5, -186, -143, 93, 152, -101, - 102, 0, 31, 2, 206, 10, 188, 209, 142, 172, - 0, 0, 0, 0, 0, -104, 0, 166, 0, 149, - 0, 90, -1, 234, 0, 237, -329, 0, -555, -9, - 404, 0, 0, 0, 0, 0, 274, 0, 0, 198, - 0, 0, 309, 0, 141, 439, 6, 0, 0, 0, - 0, 0, 0, -5, 0, 0, 1, 0, 0, 183, - 146, -28, 4, 12, -475, 82, -535, 0, 0, 74, - 0, 0, 151, 196, 0, 0, 89, -267, 0, 108, - 0, 0, 0, 291, 314, 0, 0, 158, 162, 0, - 131, 0, 0, 145, 100, 153, 0, 156, 243, 101, - 112, 167, 0, 0, 0, 0, 0, 0, 161, 0, - 135, 165, 0, 76, 0, 0, 0, 0, -209, 0, - 0, 0, 0, 0, 0, 0, -44, 0, 0, 81, - 0, 0, 0, 157, 134, 148, -76, 77, 0, 0, - -210, 0, -224, 0, 0, 0, 129, 0, 0, 0, - 0, 0, 0, 0, -33, 84, 200, 247, 265, 305, - 0, 0, 231, 0, 36, 236, 0, 292, 7, 0, - 0 - ); - - protected array $gotoDefault = array( - -32768, 521, 754, 4, 755, 949, 830, 839, 585, 539, - 715, 347, 634, 429, 1339, 925, 1155, 604, 858, 1282, - 1288, 464, 861, 327, 741, 937, 908, 909, 406, 393, - 874, 404, 658, 635, 502, 893, 460, 885, 494, 888, - 459, 897, 162, 425, 518, 901, 3, 904, 567, 935, - 988, 394, 912, 395, 686, 914, 588, 916, 917, 401, - 407, 408, 1160, 596, 631, 929, 254, 590, 930, 392, - 931, 939, 397, 399, 696, 474, 513, 507, 418, 1121, - 591, 618, 655, 453, 481, 629, 641, 628, 488, 441, - 424, 326, 972, 980, 495, 472, 994, 349, 1002, 749, - 1168, 649, 497, 1010, 650, 1017, 1020, 540, 541, 486, - 1032, 264, 1035, 498, 1044, 23, 676, 1049, 1050, 677, - 651, 1072, 652, 678, 653, 1074, 471, 586, 1082, 461, - 1090, 1328, 462, 1094, 262, 1097, 277, 353, 376, 442, - 1104, 1105, 9, 1111, 706, 707, 19, 273, 517, 1139, - 697, 1145, 272, 1148, 458, 1167, 457, 1237, 1239, 568, - 499, 1257, 310, 1260, 689, 514, 1265, 454, 1330, 455, - 542, 482, 334, 543, 1373, 305, 356, 331, 559, 311, - 357, 544, 483, 1336, 1344, 328, 31, 1363, 1374, 601, - 623 - ); - - protected array $ruleToNonTerminal = array( - 0, 1, 3, 3, 2, 5, 5, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, - 7, 7, 7, 7, 7, 8, 8, 9, 10, 11, - 11, 11, 12, 12, 13, 13, 14, 15, 15, 16, - 16, 17, 17, 18, 18, 21, 21, 22, 23, 23, - 24, 24, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 29, 29, 30, 30, 32, 34, 34, - 28, 36, 36, 33, 38, 38, 35, 35, 37, 37, - 39, 39, 31, 40, 40, 41, 43, 44, 44, 45, - 45, 46, 46, 48, 47, 47, 47, 47, 49, 49, - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 25, 25, 50, 69, 69, 72, 72, 71, - 70, 70, 63, 75, 75, 76, 76, 77, 77, 78, - 78, 79, 79, 80, 80, 80, 26, 26, 27, 27, - 27, 27, 27, 88, 88, 90, 90, 83, 83, 91, - 91, 92, 92, 92, 84, 84, 87, 87, 85, 85, - 93, 94, 94, 57, 57, 65, 65, 68, 68, 68, - 67, 95, 95, 96, 58, 58, 58, 58, 97, 97, - 98, 98, 99, 99, 100, 101, 101, 102, 102, 103, - 103, 55, 55, 51, 51, 105, 53, 53, 106, 52, - 52, 54, 54, 64, 64, 64, 64, 81, 81, 109, - 109, 111, 111, 112, 112, 112, 112, 112, 112, 112, - 110, 110, 110, 115, 115, 115, 115, 89, 89, 118, - 118, 118, 119, 119, 116, 116, 120, 120, 122, 122, - 123, 123, 117, 124, 124, 121, 125, 125, 125, 125, - 113, 113, 82, 82, 82, 20, 20, 20, 127, 126, - 126, 128, 128, 128, 128, 60, 129, 129, 130, 61, - 132, 132, 133, 133, 134, 134, 86, 135, 135, 135, - 135, 135, 135, 135, 135, 141, 141, 142, 142, 143, - 143, 143, 143, 143, 144, 145, 145, 140, 140, 136, - 136, 139, 139, 147, 147, 146, 146, 146, 146, 146, - 146, 146, 146, 146, 146, 137, 148, 148, 150, 149, - 149, 138, 138, 114, 114, 151, 151, 153, 153, 153, - 152, 152, 62, 104, 154, 154, 56, 56, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 161, 162, 162, 163, 155, 155, 160, 160, - 164, 165, 165, 166, 167, 168, 168, 168, 168, 19, - 19, 73, 73, 73, 73, 156, 156, 156, 156, 170, - 170, 159, 159, 159, 157, 157, 176, 176, 176, 176, - 176, 176, 176, 176, 176, 176, 177, 177, 177, 108, - 179, 179, 179, 179, 158, 158, 158, 158, 158, 158, - 158, 158, 59, 59, 173, 173, 173, 173, 173, 180, - 180, 169, 169, 169, 169, 181, 181, 181, 181, 181, - 74, 74, 66, 66, 66, 66, 131, 131, 131, 131, - 184, 183, 172, 172, 172, 172, 172, 172, 171, 171, - 171, 182, 182, 182, 182, 107, 178, 186, 186, 185, - 185, 187, 187, 187, 187, 187, 187, 187, 187, 175, - 175, 175, 175, 174, 189, 188, 188, 188, 188, 188, - 188, 188, 188, 190, 190, 190, 190 - ); - - protected array $ruleToLength = array( - 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 1, 0, 1, 1, 2, 1, 3, 4, 1, 2, - 0, 1, 1, 1, 1, 4, 3, 5, 4, 3, - 4, 1, 3, 1, 1, 8, 7, 2, 3, 1, - 2, 3, 1, 2, 3, 1, 1, 3, 1, 3, - 1, 2, 2, 3, 1, 3, 2, 3, 1, 3, - 3, 2, 0, 1, 1, 1, 1, 1, 3, 7, - 10, 5, 7, 9, 5, 3, 3, 3, 3, 3, - 3, 1, 2, 5, 7, 9, 6, 5, 6, 3, - 2, 1, 1, 1, 1, 0, 2, 1, 3, 8, - 0, 4, 2, 1, 3, 0, 1, 0, 1, 0, - 1, 3, 1, 1, 1, 1, 8, 9, 7, 8, - 7, 6, 8, 0, 2, 0, 2, 1, 2, 1, - 2, 1, 1, 1, 0, 2, 0, 2, 0, 2, - 2, 1, 3, 1, 4, 1, 4, 1, 1, 4, - 2, 1, 3, 3, 3, 4, 4, 5, 0, 2, - 4, 3, 1, 1, 7, 0, 2, 1, 3, 3, - 4, 1, 4, 0, 2, 5, 0, 2, 6, 0, - 2, 0, 3, 1, 2, 1, 1, 2, 0, 1, - 3, 0, 2, 1, 1, 1, 1, 1, 1, 1, - 7, 9, 6, 1, 2, 1, 1, 1, 1, 1, - 1, 1, 1, 3, 3, 3, 1, 3, 3, 3, - 3, 3, 1, 3, 3, 1, 1, 2, 1, 1, - 0, 1, 0, 2, 2, 2, 4, 3, 1, 1, - 3, 1, 2, 2, 3, 2, 3, 1, 1, 2, - 3, 1, 1, 3, 2, 0, 1, 5, 7, 5, - 6, 10, 3, 5, 1, 1, 3, 0, 2, 4, - 5, 4, 4, 4, 3, 1, 1, 1, 1, 1, - 1, 0, 1, 1, 2, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 1, 3, 1, 1, - 3, 0, 2, 0, 3, 5, 8, 1, 3, 3, - 0, 2, 2, 2, 3, 1, 0, 1, 1, 3, - 3, 3, 4, 4, 1, 1, 2, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 5, 4, 3, - 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 3, 2, 1, - 2, 4, 2, 2, 8, 9, 8, 9, 9, 10, - 9, 10, 8, 3, 2, 2, 1, 1, 0, 4, - 2, 1, 3, 2, 1, 2, 2, 2, 4, 1, - 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, - 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 3, 5, 3, 3, - 4, 1, 1, 3, 1, 1, 1, 1, 1, 3, - 2, 3, 0, 1, 1, 3, 1, 1, 1, 1, - 1, 1, 3, 1, 1, 1, 4, 1, 4, 4, - 0, 1, 1, 1, 3, 3, 1, 4, 2, 2, - 1, 3, 1, 4, 3, 3, 3, 3, 1, 3, - 1, 1, 3, 1, 1, 4, 1, 1, 1, 3, - 1, 1, 2, 1, 3, 4, 3, 2, 0, 2, - 2, 1, 2, 1, 1, 1, 4, 3, 3, 3, - 3, 6, 3, 1, 1, 2, 1 - ); - - protected function initReduceCallbacks(): void { - $this->reduceCallbacks = [ - 0 => null, - 1 => static function ($self, $stackPos) { - $self->semValue = $self->handleNamespaces($self->semStack[$stackPos-(1-1)]); - }, - 2 => static function ($self, $stackPos) { - if ($self->semStack[$stackPos-(2-2)] !== null) { $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; } $self->semValue = $self->semStack[$stackPos-(2-1)];; - }, - 3 => static function ($self, $stackPos) { - $self->semValue = array(); - }, - 4 => static function ($self, $stackPos) { - $nop = $self->maybeCreateZeroLengthNop($self->tokenPos);; - if ($nop !== null) { $self->semStack[$stackPos-(1-1)][] = $nop; } $self->semValue = $self->semStack[$stackPos-(1-1)]; - }, - 5 => null, - 6 => null, - 7 => null, - 8 => null, - 9 => null, - 10 => null, - 11 => null, - 12 => null, - 13 => null, - 14 => null, - 15 => null, - 16 => null, - 17 => null, - 18 => null, - 19 => null, - 20 => null, - 21 => null, - 22 => null, - 23 => null, - 24 => null, - 25 => null, - 26 => null, - 27 => null, - 28 => null, - 29 => null, - 30 => null, - 31 => null, - 32 => null, - 33 => null, - 34 => null, - 35 => null, - 36 => null, - 37 => null, - 38 => null, - 39 => null, - 40 => null, - 41 => null, - 42 => null, - 43 => null, - 44 => null, - 45 => null, - 46 => null, - 47 => null, - 48 => null, - 49 => null, - 50 => null, - 51 => null, - 52 => null, - 53 => null, - 54 => null, - 55 => null, - 56 => null, - 57 => null, - 58 => null, - 59 => null, - 60 => null, - 61 => null, - 62 => null, - 63 => null, - 64 => null, - 65 => null, - 66 => null, - 67 => null, - 68 => null, - 69 => null, - 70 => null, - 71 => null, - 72 => null, - 73 => null, - 74 => null, - 75 => null, - 76 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(1-1)]; if ($self->semValue === "emitError(new Error('Cannot use "getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]))); - }, - 77 => null, - 78 => null, - 79 => null, - 80 => null, - 81 => null, - 82 => null, - 83 => null, - 84 => null, - 85 => static function ($self, $stackPos) { - $self->semValue = new Node\Identifier($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 86 => static function ($self, $stackPos) { - $self->semValue = new Node\Identifier($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 87 => static function ($self, $stackPos) { - $self->semValue = new Node\Identifier($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 88 => static function ($self, $stackPos) { - $self->semValue = new Node\Identifier($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 89 => static function ($self, $stackPos) { - $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 90 => static function ($self, $stackPos) { - $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 91 => static function ($self, $stackPos) { - $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 92 => static function ($self, $stackPos) { - $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 93 => static function ($self, $stackPos) { - $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 94 => null, - 95 => static function ($self, $stackPos) { - $self->semValue = new Name(substr($self->semStack[$stackPos-(1-1)], 1), $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 96 => static function ($self, $stackPos) { - $self->semValue = new Expr\Variable(substr($self->semStack[$stackPos-(1-1)], 1), $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 97 => static function ($self, $stackPos) { - /* nothing */ - }, - 98 => static function ($self, $stackPos) { - /* nothing */ - }, - 99 => static function ($self, $stackPos) { - /* nothing */ - }, - 100 => static function ($self, $stackPos) { - $self->emitError(new Error('A trailing comma is not allowed here', $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]))); - }, - 101 => null, - 102 => null, - 103 => static function ($self, $stackPos) { - $self->semValue = new Node\Attribute($self->semStack[$stackPos-(1-1)], [], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 104 => static function ($self, $stackPos) { - $self->semValue = new Node\Attribute($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 105 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 106 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 107 => static function ($self, $stackPos) { - $self->semValue = new Node\AttributeGroup($self->semStack[$stackPos-(4-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 108 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 109 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)]; - }, - 110 => static function ($self, $stackPos) { - $self->semValue = []; - }, - 111 => null, - 112 => null, - 113 => null, - 114 => null, - 115 => static function ($self, $stackPos) { - $self->semValue = new Stmt\HaltCompiler($self->handleHaltCompiler(), $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 116 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Namespace_($self->semStack[$stackPos-(3-2)], null, $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - $self->semValue->setAttribute('kind', Stmt\Namespace_::KIND_SEMICOLON); - $self->checkNamespace($self->semValue); - }, - 117 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Namespace_($self->semStack[$stackPos-(5-2)], $self->semStack[$stackPos-(5-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); - $self->semValue->setAttribute('kind', Stmt\Namespace_::KIND_BRACED); - $self->checkNamespace($self->semValue); - }, - 118 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Namespace_(null, $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - $self->semValue->setAttribute('kind', Stmt\Namespace_::KIND_BRACED); - $self->checkNamespace($self->semValue); - }, - 119 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Use_($self->semStack[$stackPos-(3-2)], Stmt\Use_::TYPE_NORMAL, $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 120 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Use_($self->semStack[$stackPos-(4-3)], $self->semStack[$stackPos-(4-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 121 => null, - 122 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Const_($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 123 => static function ($self, $stackPos) { - $self->semValue = Stmt\Use_::TYPE_FUNCTION; - }, - 124 => static function ($self, $stackPos) { - $self->semValue = Stmt\Use_::TYPE_CONSTANT; - }, - 125 => static function ($self, $stackPos) { - $self->semValue = new Stmt\GroupUse($self->semStack[$stackPos-(8-3)], $self->semStack[$stackPos-(8-6)], $self->semStack[$stackPos-(8-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos])); - }, - 126 => static function ($self, $stackPos) { - $self->semValue = new Stmt\GroupUse($self->semStack[$stackPos-(7-2)], $self->semStack[$stackPos-(7-5)], Stmt\Use_::TYPE_UNKNOWN, $self->getAttributes($self->tokenStartStack[$stackPos-(7-1)], $self->tokenEndStack[$stackPos])); - }, - 127 => null, - 128 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 129 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 130 => null, - 131 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 132 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 133 => null, - 134 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 135 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 136 => static function ($self, $stackPos) { - $self->semValue = new Node\UseItem($self->semStack[$stackPos-(1-1)], null, Stmt\Use_::TYPE_UNKNOWN, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); $self->checkUseUse($self->semValue, $stackPos-(1-1)); - }, - 137 => static function ($self, $stackPos) { - $self->semValue = new Node\UseItem($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], Stmt\Use_::TYPE_UNKNOWN, $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); $self->checkUseUse($self->semValue, $stackPos-(3-3)); - }, - 138 => static function ($self, $stackPos) { - $self->semValue = new Node\UseItem($self->semStack[$stackPos-(1-1)], null, Stmt\Use_::TYPE_UNKNOWN, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); $self->checkUseUse($self->semValue, $stackPos-(1-1)); - }, - 139 => static function ($self, $stackPos) { - $self->semValue = new Node\UseItem($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], Stmt\Use_::TYPE_UNKNOWN, $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); $self->checkUseUse($self->semValue, $stackPos-(3-3)); - }, - 140 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(1-1)]; $self->semValue->type = Stmt\Use_::TYPE_NORMAL; - }, - 141 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(2-2)]; $self->semValue->type = $self->semStack[$stackPos-(2-1)]; - }, - 142 => null, - 143 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 144 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 145 => static function ($self, $stackPos) { - $self->semValue = new Node\Const_($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 146 => null, - 147 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 148 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 149 => static function ($self, $stackPos) { - $self->semValue = new Node\Const_(new Node\Identifier($self->semStack[$stackPos-(3-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos-(3-1)])), $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 150 => static function ($self, $stackPos) { - $self->semValue = new Node\Const_(new Node\Identifier($self->semStack[$stackPos-(3-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos-(3-1)])), $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 151 => static function ($self, $stackPos) { - if ($self->semStack[$stackPos-(2-2)] !== null) { $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; } $self->semValue = $self->semStack[$stackPos-(2-1)];; - }, - 152 => static function ($self, $stackPos) { - $self->semValue = array(); - }, - 153 => static function ($self, $stackPos) { - $nop = $self->maybeCreateZeroLengthNop($self->tokenPos);; - if ($nop !== null) { $self->semStack[$stackPos-(1-1)][] = $nop; } $self->semValue = $self->semStack[$stackPos-(1-1)]; - }, - 154 => null, - 155 => null, - 156 => null, - 157 => static function ($self, $stackPos) { - throw new Error('__HALT_COMPILER() can only be used from the outermost scope', $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 158 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Block($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 159 => static function ($self, $stackPos) { - $self->semValue = new Stmt\If_($self->semStack[$stackPos-(7-3)], ['stmts' => $self->semStack[$stackPos-(7-5)], 'elseifs' => $self->semStack[$stackPos-(7-6)], 'else' => $self->semStack[$stackPos-(7-7)]], $self->getAttributes($self->tokenStartStack[$stackPos-(7-1)], $self->tokenEndStack[$stackPos])); - }, - 160 => static function ($self, $stackPos) { - $self->semValue = new Stmt\If_($self->semStack[$stackPos-(10-3)], ['stmts' => $self->semStack[$stackPos-(10-6)], 'elseifs' => $self->semStack[$stackPos-(10-7)], 'else' => $self->semStack[$stackPos-(10-8)]], $self->getAttributes($self->tokenStartStack[$stackPos-(10-1)], $self->tokenEndStack[$stackPos])); - }, - 161 => static function ($self, $stackPos) { - $self->semValue = new Stmt\While_($self->semStack[$stackPos-(5-3)], $self->semStack[$stackPos-(5-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); - }, - 162 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Do_($self->semStack[$stackPos-(7-5)], $self->semStack[$stackPos-(7-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(7-1)], $self->tokenEndStack[$stackPos])); - }, - 163 => static function ($self, $stackPos) { - $self->semValue = new Stmt\For_(['init' => $self->semStack[$stackPos-(9-3)], 'cond' => $self->semStack[$stackPos-(9-5)], 'loop' => $self->semStack[$stackPos-(9-7)], 'stmts' => $self->semStack[$stackPos-(9-9)]], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos])); - }, - 164 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Switch_($self->semStack[$stackPos-(5-3)], $self->semStack[$stackPos-(5-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); - }, - 165 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Break_($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 166 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Continue_($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 167 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Return_($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 168 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Global_($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 169 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Static_($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 170 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Echo_($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 171 => static function ($self, $stackPos) { - - $self->semValue = new Stmt\InlineHTML($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - $self->semValue->setAttribute('hasLeadingNewline', $self->inlineHtmlHasLeadingNewline($stackPos-(1-1))); - - }, - 172 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Expression($self->semStack[$stackPos-(2-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 173 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Unset_($self->semStack[$stackPos-(5-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); - }, - 174 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Foreach_($self->semStack[$stackPos-(7-3)], $self->semStack[$stackPos-(7-5)][0], ['keyVar' => null, 'byRef' => $self->semStack[$stackPos-(7-5)][1], 'stmts' => $self->semStack[$stackPos-(7-7)]], $self->getAttributes($self->tokenStartStack[$stackPos-(7-1)], $self->tokenEndStack[$stackPos])); - }, - 175 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Foreach_($self->semStack[$stackPos-(9-3)], $self->semStack[$stackPos-(9-7)][0], ['keyVar' => $self->semStack[$stackPos-(9-5)], 'byRef' => $self->semStack[$stackPos-(9-7)][1], 'stmts' => $self->semStack[$stackPos-(9-9)]], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos])); - }, - 176 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Foreach_($self->semStack[$stackPos-(6-3)], new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(6-4)], $self->tokenEndStack[$stackPos-(6-4)])), ['stmts' => $self->semStack[$stackPos-(6-6)]], $self->getAttributes($self->tokenStartStack[$stackPos-(6-1)], $self->tokenEndStack[$stackPos])); - }, - 177 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Declare_($self->semStack[$stackPos-(5-3)], $self->semStack[$stackPos-(5-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); - }, - 178 => static function ($self, $stackPos) { - $self->semValue = new Stmt\TryCatch($self->semStack[$stackPos-(6-3)], $self->semStack[$stackPos-(6-5)], $self->semStack[$stackPos-(6-6)], $self->getAttributes($self->tokenStartStack[$stackPos-(6-1)], $self->tokenEndStack[$stackPos])); $self->checkTryCatch($self->semValue); - }, - 179 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Goto_($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 180 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Label($self->semStack[$stackPos-(2-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 181 => static function ($self, $stackPos) { - $self->semValue = null; /* means: no statement */ - }, - 182 => null, - 183 => static function ($self, $stackPos) { - $self->semValue = $self->maybeCreateNop($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]); - }, - 184 => static function ($self, $stackPos) { - if ($self->semStack[$stackPos-(1-1)] instanceof Stmt\Block) { $self->semValue = $self->semStack[$stackPos-(1-1)]->stmts; } else if ($self->semStack[$stackPos-(1-1)] === null) { $self->semValue = []; } else { $self->semValue = [$self->semStack[$stackPos-(1-1)]]; }; - }, - 185 => static function ($self, $stackPos) { - $self->semValue = array(); - }, - 186 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)]; - }, - 187 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 188 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 189 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Catch_($self->semStack[$stackPos-(8-3)], $self->semStack[$stackPos-(8-4)], $self->semStack[$stackPos-(8-7)], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos])); - }, - 190 => static function ($self, $stackPos) { - $self->semValue = null; - }, - 191 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Finally_($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 192 => null, - 193 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 194 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 195 => static function ($self, $stackPos) { - $self->semValue = false; - }, - 196 => static function ($self, $stackPos) { - $self->semValue = true; - }, - 197 => static function ($self, $stackPos) { - $self->semValue = false; - }, - 198 => static function ($self, $stackPos) { - $self->semValue = true; - }, - 199 => static function ($self, $stackPos) { - $self->semValue = false; - }, - 200 => static function ($self, $stackPos) { - $self->semValue = true; - }, - 201 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(3-2)]; - }, - 202 => static function ($self, $stackPos) { - $self->semValue = []; - }, - 203 => null, - 204 => static function ($self, $stackPos) { - $self->semValue = new Node\Identifier($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 205 => static function ($self, $stackPos) { - $self->semValue = new Node\Identifier($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 206 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Function_($self->semStack[$stackPos-(8-3)], ['byRef' => $self->semStack[$stackPos-(8-2)], 'params' => $self->semStack[$stackPos-(8-5)], 'returnType' => $self->semStack[$stackPos-(8-7)], 'stmts' => $self->semStack[$stackPos-(8-8)], 'attrGroups' => []], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos])); - }, - 207 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Function_($self->semStack[$stackPos-(9-4)], ['byRef' => $self->semStack[$stackPos-(9-3)], 'params' => $self->semStack[$stackPos-(9-6)], 'returnType' => $self->semStack[$stackPos-(9-8)], 'stmts' => $self->semStack[$stackPos-(9-9)], 'attrGroups' => $self->semStack[$stackPos-(9-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos])); - }, - 208 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Class_($self->semStack[$stackPos-(7-2)], ['type' => $self->semStack[$stackPos-(7-1)], 'extends' => $self->semStack[$stackPos-(7-3)], 'implements' => $self->semStack[$stackPos-(7-4)], 'stmts' => $self->semStack[$stackPos-(7-6)], 'attrGroups' => []], $self->getAttributes($self->tokenStartStack[$stackPos-(7-1)], $self->tokenEndStack[$stackPos])); - $self->checkClass($self->semValue, $stackPos-(7-2)); - }, - 209 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Class_($self->semStack[$stackPos-(8-3)], ['type' => $self->semStack[$stackPos-(8-2)], 'extends' => $self->semStack[$stackPos-(8-4)], 'implements' => $self->semStack[$stackPos-(8-5)], 'stmts' => $self->semStack[$stackPos-(8-7)], 'attrGroups' => $self->semStack[$stackPos-(8-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos])); - $self->checkClass($self->semValue, $stackPos-(8-3)); - }, - 210 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Interface_($self->semStack[$stackPos-(7-3)], ['extends' => $self->semStack[$stackPos-(7-4)], 'stmts' => $self->semStack[$stackPos-(7-6)], 'attrGroups' => $self->semStack[$stackPos-(7-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(7-1)], $self->tokenEndStack[$stackPos])); - $self->checkInterface($self->semValue, $stackPos-(7-3)); - }, - 211 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Trait_($self->semStack[$stackPos-(6-3)], ['stmts' => $self->semStack[$stackPos-(6-5)], 'attrGroups' => $self->semStack[$stackPos-(6-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(6-1)], $self->tokenEndStack[$stackPos])); - }, - 212 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Enum_($self->semStack[$stackPos-(8-3)], ['scalarType' => $self->semStack[$stackPos-(8-4)], 'implements' => $self->semStack[$stackPos-(8-5)], 'stmts' => $self->semStack[$stackPos-(8-7)], 'attrGroups' => $self->semStack[$stackPos-(8-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos])); - $self->checkEnum($self->semValue, $stackPos-(8-3)); - }, - 213 => static function ($self, $stackPos) { - $self->semValue = null; - }, - 214 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(2-2)]; - }, - 215 => static function ($self, $stackPos) { - $self->semValue = null; - }, - 216 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(2-2)]; - }, - 217 => static function ($self, $stackPos) { - $self->semValue = 0; - }, - 218 => null, - 219 => null, - 220 => static function ($self, $stackPos) { - $self->checkClassModifier($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $self->semValue = $self->semStack[$stackPos-(2-1)] | $self->semStack[$stackPos-(2-2)]; - }, - 221 => static function ($self, $stackPos) { - $self->semValue = Modifiers::ABSTRACT; - }, - 222 => static function ($self, $stackPos) { - $self->semValue = Modifiers::FINAL; - }, - 223 => static function ($self, $stackPos) { - $self->semValue = Modifiers::READONLY; - }, - 224 => static function ($self, $stackPos) { - $self->semValue = null; - }, - 225 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(2-2)]; - }, - 226 => static function ($self, $stackPos) { - $self->semValue = array(); - }, - 227 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(2-2)]; - }, - 228 => static function ($self, $stackPos) { - $self->semValue = array(); - }, - 229 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(2-2)]; - }, - 230 => null, - 231 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 232 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 233 => null, - 234 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(4-2)]; - }, - 235 => null, - 236 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(4-2)]; - }, - 237 => static function ($self, $stackPos) { - if ($self->semStack[$stackPos-(1-1)] instanceof Stmt\Block) { $self->semValue = $self->semStack[$stackPos-(1-1)]->stmts; } else if ($self->semStack[$stackPos-(1-1)] === null) { $self->semValue = []; } else { $self->semValue = [$self->semStack[$stackPos-(1-1)]]; }; - }, - 238 => static function ($self, $stackPos) { - $self->semValue = null; - }, - 239 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(4-2)]; - }, - 240 => null, - 241 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 242 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 243 => static function ($self, $stackPos) { - $self->semValue = new Node\DeclareItem($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 244 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(3-2)]; - }, - 245 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(4-3)]; - }, - 246 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(4-2)]; - }, - 247 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(5-3)]; - }, - 248 => static function ($self, $stackPos) { - $self->semValue = array(); - }, - 249 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)]; - }, - 250 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Case_($self->semStack[$stackPos-(4-2)], $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 251 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Case_(null, $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 252 => null, - 253 => null, - 254 => static function ($self, $stackPos) { - $self->semValue = new Expr\Match_($self->semStack[$stackPos-(7-3)], $self->semStack[$stackPos-(7-6)], $self->getAttributes($self->tokenStartStack[$stackPos-(7-1)], $self->tokenEndStack[$stackPos])); - }, - 255 => static function ($self, $stackPos) { - $self->semValue = []; - }, - 256 => null, - 257 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 258 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 259 => static function ($self, $stackPos) { - $self->semValue = new Node\MatchArm($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 260 => static function ($self, $stackPos) { - $self->semValue = new Node\MatchArm(null, $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 261 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(1-1)]; - }, - 262 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(4-2)]; - }, - 263 => static function ($self, $stackPos) { - $self->semValue = array(); - }, - 264 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)]; - }, - 265 => static function ($self, $stackPos) { - $self->semValue = new Stmt\ElseIf_($self->semStack[$stackPos-(5-3)], $self->semStack[$stackPos-(5-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); - }, - 266 => static function ($self, $stackPos) { - $self->semValue = array(); - }, - 267 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)]; - }, - 268 => static function ($self, $stackPos) { - $self->semValue = new Stmt\ElseIf_($self->semStack[$stackPos-(6-3)], $self->semStack[$stackPos-(6-6)], $self->getAttributes($self->tokenStartStack[$stackPos-(6-1)], $self->tokenEndStack[$stackPos])); $self->fixupAlternativeElse($self->semValue); - }, - 269 => static function ($self, $stackPos) { - $self->semValue = null; - }, - 270 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Else_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 271 => static function ($self, $stackPos) { - $self->semValue = null; - }, - 272 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Else_($self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); $self->fixupAlternativeElse($self->semValue); - }, - 273 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)], false); - }, - 274 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(2-2)], true); - }, - 275 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)], false); - }, - 276 => static function ($self, $stackPos) { - $self->semValue = array($self->fixupArrayDestructuring($self->semStack[$stackPos-(1-1)]), false); - }, - 277 => null, - 278 => static function ($self, $stackPos) { - $self->semValue = array(); - }, - 279 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 280 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 281 => static function ($self, $stackPos) { - $self->semValue = 0; - }, - 282 => static function ($self, $stackPos) { - $self->checkModifier($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $self->semValue = $self->semStack[$stackPos-(2-1)] | $self->semStack[$stackPos-(2-2)]; - }, - 283 => static function ($self, $stackPos) { - $self->semValue = Modifiers::PUBLIC; - }, - 284 => static function ($self, $stackPos) { - $self->semValue = Modifiers::PROTECTED; - }, - 285 => static function ($self, $stackPos) { - $self->semValue = Modifiers::PRIVATE; - }, - 286 => static function ($self, $stackPos) { - $self->semValue = Modifiers::PUBLIC_SET; - }, - 287 => static function ($self, $stackPos) { - $self->semValue = Modifiers::PROTECTED_SET; - }, - 288 => static function ($self, $stackPos) { - $self->semValue = Modifiers::PRIVATE_SET; - }, - 289 => static function ($self, $stackPos) { - $self->semValue = Modifiers::READONLY; - }, - 290 => static function ($self, $stackPos) { - $self->semValue = new Node\Param($self->semStack[$stackPos-(7-6)], null, $self->semStack[$stackPos-(7-3)], $self->semStack[$stackPos-(7-4)], $self->semStack[$stackPos-(7-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(7-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(7-2)], $self->semStack[$stackPos-(7-1)], $self->semStack[$stackPos-(7-7)]); - $self->checkParam($self->semValue); - $self->addPropertyNameToHooks($self->semValue); - }, - 291 => static function ($self, $stackPos) { - $self->semValue = new Node\Param($self->semStack[$stackPos-(9-6)], $self->semStack[$stackPos-(9-8)], $self->semStack[$stackPos-(9-3)], $self->semStack[$stackPos-(9-4)], $self->semStack[$stackPos-(9-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(9-2)], $self->semStack[$stackPos-(9-1)], $self->semStack[$stackPos-(9-9)]); - $self->checkParam($self->semValue); - $self->addPropertyNameToHooks($self->semValue); - }, - 292 => static function ($self, $stackPos) { - $self->semValue = new Node\Param(new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(6-1)], $self->tokenEndStack[$stackPos])), null, $self->semStack[$stackPos-(6-3)], $self->semStack[$stackPos-(6-4)], $self->semStack[$stackPos-(6-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(6-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(6-2)], $self->semStack[$stackPos-(6-1)]); - }, - 293 => null, - 294 => static function ($self, $stackPos) { - $self->semValue = new Node\NullableType($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 295 => static function ($self, $stackPos) { - $self->semValue = new Node\UnionType($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 296 => null, - 297 => null, - 298 => static function ($self, $stackPos) { - $self->semValue = new Node\Name('static', $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 299 => static function ($self, $stackPos) { - $self->semValue = $self->handleBuiltinTypes($self->semStack[$stackPos-(1-1)]); - }, - 300 => static function ($self, $stackPos) { - $self->semValue = new Node\Identifier('array', $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 301 => static function ($self, $stackPos) { - $self->semValue = new Node\Identifier('callable', $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 302 => null, - 303 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(3-2)]; - }, - 304 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)]); - }, - 305 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 306 => null, - 307 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(3-2)]; - }, - 308 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)]); - }, - 309 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 310 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)]); - }, - 311 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 312 => static function ($self, $stackPos) { - $self->semValue = new Node\IntersectionType($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 313 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)]); - }, - 314 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 315 => static function ($self, $stackPos) { - $self->semValue = new Node\IntersectionType($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 316 => null, - 317 => static function ($self, $stackPos) { - $self->semValue = new Node\NullableType($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 318 => static function ($self, $stackPos) { - $self->semValue = new Node\UnionType($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 319 => null, - 320 => static function ($self, $stackPos) { - $self->semValue = null; - }, - 321 => null, - 322 => static function ($self, $stackPos) { - $self->semValue = null; - }, - 323 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(2-2)]; - }, - 324 => static function ($self, $stackPos) { - $self->semValue = null; - }, - 325 => static function ($self, $stackPos) { - $self->semValue = array(); - }, - 326 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(4-2)]; - }, - 327 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(3-2)]); - }, - 328 => static function ($self, $stackPos) { - $self->semValue = new Node\VariadicPlaceholder($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 329 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 330 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 331 => static function ($self, $stackPos) { - $self->semValue = new Node\Arg($self->semStack[$stackPos-(1-1)], false, false, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 332 => static function ($self, $stackPos) { - $self->semValue = new Node\Arg($self->semStack[$stackPos-(2-2)], true, false, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 333 => static function ($self, $stackPos) { - $self->semValue = new Node\Arg($self->semStack[$stackPos-(2-2)], false, true, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 334 => static function ($self, $stackPos) { - $self->semValue = new Node\Arg($self->semStack[$stackPos-(3-3)], false, false, $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(3-1)]); - }, - 335 => null, - 336 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 337 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 338 => null, - 339 => null, - 340 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 341 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 342 => static function ($self, $stackPos) { - $self->semValue = new Node\StaticVar($self->semStack[$stackPos-(1-1)], null, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 343 => static function ($self, $stackPos) { - $self->semValue = new Node\StaticVar($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 344 => static function ($self, $stackPos) { - if ($self->semStack[$stackPos-(2-2)] !== null) { $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)]; } else { $self->semValue = $self->semStack[$stackPos-(2-1)]; } - }, - 345 => static function ($self, $stackPos) { - $self->semValue = array(); - }, - 346 => static function ($self, $stackPos) { - $nop = $self->maybeCreateZeroLengthNop($self->tokenPos);; - if ($nop !== null) { $self->semStack[$stackPos-(1-1)][] = $nop; } $self->semValue = $self->semStack[$stackPos-(1-1)]; - }, - 347 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Property($self->semStack[$stackPos-(5-2)], $self->semStack[$stackPos-(5-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(5-3)], $self->semStack[$stackPos-(5-1)]); - }, - 348 => static function ($self, $stackPos) { - $self->semValue = new Stmt\Property($self->semStack[$stackPos-(7-2)], $self->semStack[$stackPos-(7-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(7-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(7-3)], $self->semStack[$stackPos-(7-1)], $self->semStack[$stackPos-(7-6)]); - $self->checkPropertyHooksForMultiProperty($self->semValue, $stackPos-(7-5)); - $self->checkEmptyPropertyHookList($self->semStack[$stackPos-(7-6)], $stackPos-(7-5)); - $self->addPropertyNameToHooks($self->semValue); - }, - 349 => static function ($self, $stackPos) { - $self->semValue = new Stmt\ClassConst($self->semStack[$stackPos-(5-4)], $self->semStack[$stackPos-(5-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(5-1)]); - $self->checkClassConst($self->semValue, $stackPos-(5-2)); - }, - 350 => static function ($self, $stackPos) { - $self->semValue = new Stmt\ClassConst($self->semStack[$stackPos-(6-5)], $self->semStack[$stackPos-(6-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(6-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(6-1)], $self->semStack[$stackPos-(6-4)]); - $self->checkClassConst($self->semValue, $stackPos-(6-2)); - }, - 351 => static function ($self, $stackPos) { - $self->semValue = new Stmt\ClassMethod($self->semStack[$stackPos-(10-5)], ['type' => $self->semStack[$stackPos-(10-2)], 'byRef' => $self->semStack[$stackPos-(10-4)], 'params' => $self->semStack[$stackPos-(10-7)], 'returnType' => $self->semStack[$stackPos-(10-9)], 'stmts' => $self->semStack[$stackPos-(10-10)], 'attrGroups' => $self->semStack[$stackPos-(10-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(10-1)], $self->tokenEndStack[$stackPos])); - $self->checkClassMethod($self->semValue, $stackPos-(10-2)); - }, - 352 => static function ($self, $stackPos) { - $self->semValue = new Stmt\TraitUse($self->semStack[$stackPos-(3-2)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 353 => static function ($self, $stackPos) { - $self->semValue = new Stmt\EnumCase($self->semStack[$stackPos-(5-3)], $self->semStack[$stackPos-(5-4)], $self->semStack[$stackPos-(5-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); - }, - 354 => static function ($self, $stackPos) { - $self->semValue = null; /* will be skipped */ - }, - 355 => static function ($self, $stackPos) { - $self->semValue = array(); - }, - 356 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(3-2)]; - }, - 357 => static function ($self, $stackPos) { - $self->semValue = array(); - }, - 358 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)]; - }, - 359 => static function ($self, $stackPos) { - $self->semValue = new Stmt\TraitUseAdaptation\Precedence($self->semStack[$stackPos-(4-1)][0], $self->semStack[$stackPos-(4-1)][1], $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 360 => static function ($self, $stackPos) { - $self->semValue = new Stmt\TraitUseAdaptation\Alias($self->semStack[$stackPos-(5-1)][0], $self->semStack[$stackPos-(5-1)][1], $self->semStack[$stackPos-(5-3)], $self->semStack[$stackPos-(5-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); - }, - 361 => static function ($self, $stackPos) { - $self->semValue = new Stmt\TraitUseAdaptation\Alias($self->semStack[$stackPos-(4-1)][0], $self->semStack[$stackPos-(4-1)][1], $self->semStack[$stackPos-(4-3)], null, $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 362 => static function ($self, $stackPos) { - $self->semValue = new Stmt\TraitUseAdaptation\Alias($self->semStack[$stackPos-(4-1)][0], $self->semStack[$stackPos-(4-1)][1], null, $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 363 => static function ($self, $stackPos) { - $self->semValue = new Stmt\TraitUseAdaptation\Alias($self->semStack[$stackPos-(4-1)][0], $self->semStack[$stackPos-(4-1)][1], null, $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 364 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)]); - }, - 365 => null, - 366 => static function ($self, $stackPos) { - $self->semValue = array(null, $self->semStack[$stackPos-(1-1)]); - }, - 367 => static function ($self, $stackPos) { - $self->semValue = null; - }, - 368 => null, - 369 => null, - 370 => static function ($self, $stackPos) { - $self->semValue = 0; - }, - 371 => static function ($self, $stackPos) { - $self->semValue = 0; - }, - 372 => null, - 373 => null, - 374 => static function ($self, $stackPos) { - $self->checkModifier($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $self->semValue = $self->semStack[$stackPos-(2-1)] | $self->semStack[$stackPos-(2-2)]; - }, - 375 => static function ($self, $stackPos) { - $self->semValue = Modifiers::PUBLIC; - }, - 376 => static function ($self, $stackPos) { - $self->semValue = Modifiers::PROTECTED; - }, - 377 => static function ($self, $stackPos) { - $self->semValue = Modifiers::PRIVATE; - }, - 378 => static function ($self, $stackPos) { - $self->semValue = Modifiers::PUBLIC_SET; - }, - 379 => static function ($self, $stackPos) { - $self->semValue = Modifiers::PROTECTED_SET; - }, - 380 => static function ($self, $stackPos) { - $self->semValue = Modifiers::PRIVATE_SET; - }, - 381 => static function ($self, $stackPos) { - $self->semValue = Modifiers::STATIC; - }, - 382 => static function ($self, $stackPos) { - $self->semValue = Modifiers::ABSTRACT; - }, - 383 => static function ($self, $stackPos) { - $self->semValue = Modifiers::FINAL; - }, - 384 => static function ($self, $stackPos) { - $self->semValue = Modifiers::READONLY; - }, - 385 => null, - 386 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 387 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 388 => static function ($self, $stackPos) { - $self->semValue = new Node\VarLikeIdentifier(substr($self->semStack[$stackPos-(1-1)], 1), $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 389 => static function ($self, $stackPos) { - $self->semValue = new Node\PropertyItem($self->semStack[$stackPos-(1-1)], null, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 390 => static function ($self, $stackPos) { - $self->semValue = new Node\PropertyItem($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 391 => static function ($self, $stackPos) { - $self->semValue = []; - }, - 392 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)]; - }, - 393 => static function ($self, $stackPos) { - $self->semValue = []; - }, - 394 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(3-2)]; $self->checkEmptyPropertyHookList($self->semStack[$stackPos-(3-2)], $stackPos-(3-1)); - }, - 395 => static function ($self, $stackPos) { - $self->semValue = new Node\PropertyHook($self->semStack[$stackPos-(5-4)], $self->semStack[$stackPos-(5-5)], ['flags' => $self->semStack[$stackPos-(5-2)], 'byRef' => $self->semStack[$stackPos-(5-3)], 'params' => [], 'attrGroups' => $self->semStack[$stackPos-(5-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); - $self->checkPropertyHook($self->semValue, null); - }, - 396 => static function ($self, $stackPos) { - $self->semValue = new Node\PropertyHook($self->semStack[$stackPos-(8-4)], $self->semStack[$stackPos-(8-8)], ['flags' => $self->semStack[$stackPos-(8-2)], 'byRef' => $self->semStack[$stackPos-(8-3)], 'params' => $self->semStack[$stackPos-(8-6)], 'attrGroups' => $self->semStack[$stackPos-(8-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos])); - $self->checkPropertyHook($self->semValue, $stackPos-(8-5)); - }, - 397 => static function ($self, $stackPos) { - $self->semValue = null; - }, - 398 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(3-2)]; - }, - 399 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(3-2)]; - }, - 400 => static function ($self, $stackPos) { - $self->semValue = 0; - }, - 401 => static function ($self, $stackPos) { - $self->checkPropertyHookModifiers($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $self->semValue = $self->semStack[$stackPos-(2-1)] | $self->semStack[$stackPos-(2-2)]; - }, - 402 => null, - 403 => null, - 404 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 405 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 406 => static function ($self, $stackPos) { - $self->semValue = array(); - }, - 407 => null, - 408 => null, - 409 => static function ($self, $stackPos) { - $self->semValue = new Expr\Assign($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 410 => static function ($self, $stackPos) { - $self->semValue = new Expr\Assign($self->fixupArrayDestructuring($self->semStack[$stackPos-(3-1)]), $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 411 => static function ($self, $stackPos) { - $self->semValue = new Expr\Assign($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 412 => static function ($self, $stackPos) { - $self->semValue = new Expr\AssignRef($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 413 => static function ($self, $stackPos) { - $self->semValue = new Expr\AssignRef($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - if (!$self->phpVersion->allowsAssignNewByReference()) { - $self->emitError(new Error('Cannot assign new by reference', $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]))); - } - - }, - 414 => null, - 415 => null, - 416 => static function ($self, $stackPos) { - $self->semValue = new Expr\Clone_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 417 => static function ($self, $stackPos) { - $self->semValue = new Expr\AssignOp\Plus($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 418 => static function ($self, $stackPos) { - $self->semValue = new Expr\AssignOp\Minus($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 419 => static function ($self, $stackPos) { - $self->semValue = new Expr\AssignOp\Mul($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 420 => static function ($self, $stackPos) { - $self->semValue = new Expr\AssignOp\Div($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 421 => static function ($self, $stackPos) { - $self->semValue = new Expr\AssignOp\Concat($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 422 => static function ($self, $stackPos) { - $self->semValue = new Expr\AssignOp\Mod($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 423 => static function ($self, $stackPos) { - $self->semValue = new Expr\AssignOp\BitwiseAnd($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 424 => static function ($self, $stackPos) { - $self->semValue = new Expr\AssignOp\BitwiseOr($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 425 => static function ($self, $stackPos) { - $self->semValue = new Expr\AssignOp\BitwiseXor($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 426 => static function ($self, $stackPos) { - $self->semValue = new Expr\AssignOp\ShiftLeft($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 427 => static function ($self, $stackPos) { - $self->semValue = new Expr\AssignOp\ShiftRight($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 428 => static function ($self, $stackPos) { - $self->semValue = new Expr\AssignOp\Pow($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 429 => static function ($self, $stackPos) { - $self->semValue = new Expr\AssignOp\Coalesce($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 430 => static function ($self, $stackPos) { - $self->semValue = new Expr\PostInc($self->semStack[$stackPos-(2-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 431 => static function ($self, $stackPos) { - $self->semValue = new Expr\PreInc($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 432 => static function ($self, $stackPos) { - $self->semValue = new Expr\PostDec($self->semStack[$stackPos-(2-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 433 => static function ($self, $stackPos) { - $self->semValue = new Expr\PreDec($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 434 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\BooleanOr($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 435 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\BooleanAnd($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 436 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\LogicalOr($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 437 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\LogicalAnd($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 438 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\LogicalXor($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 439 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\BitwiseOr($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 440 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\BitwiseAnd($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 441 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\BitwiseAnd($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 442 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\BitwiseXor($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 443 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\Concat($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 444 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\Plus($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 445 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\Minus($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 446 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\Mul($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 447 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\Div($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 448 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\Mod($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 449 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\ShiftLeft($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 450 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\ShiftRight($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 451 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\Pow($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 452 => static function ($self, $stackPos) { - $self->semValue = new Expr\UnaryPlus($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 453 => static function ($self, $stackPos) { - $self->semValue = new Expr\UnaryMinus($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 454 => static function ($self, $stackPos) { - $self->semValue = new Expr\BooleanNot($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 455 => static function ($self, $stackPos) { - $self->semValue = new Expr\BitwiseNot($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 456 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\Identical($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 457 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\NotIdentical($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 458 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\Equal($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 459 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\NotEqual($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 460 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\Spaceship($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 461 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\Smaller($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 462 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\SmallerOrEqual($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 463 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\Greater($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 464 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\GreaterOrEqual($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 465 => static function ($self, $stackPos) { - $self->semValue = new Expr\Instanceof_($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 466 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(3-2)]; - }, - 467 => static function ($self, $stackPos) { - $self->semValue = new Expr\Ternary($self->semStack[$stackPos-(5-1)], $self->semStack[$stackPos-(5-3)], $self->semStack[$stackPos-(5-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); - }, - 468 => static function ($self, $stackPos) { - $self->semValue = new Expr\Ternary($self->semStack[$stackPos-(4-1)], null, $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 469 => static function ($self, $stackPos) { - $self->semValue = new Expr\BinaryOp\Coalesce($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 470 => static function ($self, $stackPos) { - $self->semValue = new Expr\Isset_($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 471 => static function ($self, $stackPos) { - $self->semValue = new Expr\Empty_($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 472 => static function ($self, $stackPos) { - $self->semValue = new Expr\Include_($self->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 473 => static function ($self, $stackPos) { - $self->semValue = new Expr\Include_($self->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE_ONCE, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 474 => static function ($self, $stackPos) { - $self->semValue = new Expr\Eval_($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 475 => static function ($self, $stackPos) { - $self->semValue = new Expr\Include_($self->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 476 => static function ($self, $stackPos) { - $self->semValue = new Expr\Include_($self->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE_ONCE, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 477 => static function ($self, $stackPos) { - $self->semValue = new Expr\Cast\Int_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 478 => static function ($self, $stackPos) { - $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]); - $attrs['kind'] = $self->getFloatCastKind($self->semStack[$stackPos-(2-1)]); - $self->semValue = new Expr\Cast\Double($self->semStack[$stackPos-(2-2)], $attrs); - }, - 479 => static function ($self, $stackPos) { - $self->semValue = new Expr\Cast\String_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 480 => static function ($self, $stackPos) { - $self->semValue = new Expr\Cast\Array_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 481 => static function ($self, $stackPos) { - $self->semValue = new Expr\Cast\Object_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 482 => static function ($self, $stackPos) { - $self->semValue = new Expr\Cast\Bool_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 483 => static function ($self, $stackPos) { - $self->semValue = new Expr\Cast\Unset_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 484 => static function ($self, $stackPos) { - $self->semValue = $self->createExitExpr($self->semStack[$stackPos-(2-1)], $stackPos-(2-1), $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 485 => static function ($self, $stackPos) { - $self->semValue = new Expr\ErrorSuppress($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 486 => null, - 487 => static function ($self, $stackPos) { - $self->semValue = new Expr\ShellExec($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 488 => static function ($self, $stackPos) { - $self->semValue = new Expr\Print_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 489 => static function ($self, $stackPos) { - $self->semValue = new Expr\Yield_(null, null, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 490 => static function ($self, $stackPos) { - $self->semValue = new Expr\Yield_($self->semStack[$stackPos-(2-2)], null, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 491 => static function ($self, $stackPos) { - $self->semValue = new Expr\Yield_($self->semStack[$stackPos-(4-4)], $self->semStack[$stackPos-(4-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 492 => static function ($self, $stackPos) { - $self->semValue = new Expr\YieldFrom($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 493 => static function ($self, $stackPos) { - $self->semValue = new Expr\Throw_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 494 => static function ($self, $stackPos) { - $self->semValue = new Expr\ArrowFunction(['static' => false, 'byRef' => $self->semStack[$stackPos-(8-2)], 'params' => $self->semStack[$stackPos-(8-4)], 'returnType' => $self->semStack[$stackPos-(8-6)], 'expr' => $self->semStack[$stackPos-(8-8)], 'attrGroups' => []], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos])); - }, - 495 => static function ($self, $stackPos) { - $self->semValue = new Expr\ArrowFunction(['static' => true, 'byRef' => $self->semStack[$stackPos-(9-3)], 'params' => $self->semStack[$stackPos-(9-5)], 'returnType' => $self->semStack[$stackPos-(9-7)], 'expr' => $self->semStack[$stackPos-(9-9)], 'attrGroups' => []], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos])); - }, - 496 => static function ($self, $stackPos) { - $self->semValue = new Expr\Closure(['static' => false, 'byRef' => $self->semStack[$stackPos-(8-2)], 'params' => $self->semStack[$stackPos-(8-4)], 'uses' => $self->semStack[$stackPos-(8-6)], 'returnType' => $self->semStack[$stackPos-(8-7)], 'stmts' => $self->semStack[$stackPos-(8-8)], 'attrGroups' => []], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos])); - }, - 497 => static function ($self, $stackPos) { - $self->semValue = new Expr\Closure(['static' => true, 'byRef' => $self->semStack[$stackPos-(9-3)], 'params' => $self->semStack[$stackPos-(9-5)], 'uses' => $self->semStack[$stackPos-(9-7)], 'returnType' => $self->semStack[$stackPos-(9-8)], 'stmts' => $self->semStack[$stackPos-(9-9)], 'attrGroups' => []], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos])); - }, - 498 => static function ($self, $stackPos) { - $self->semValue = new Expr\ArrowFunction(['static' => false, 'byRef' => $self->semStack[$stackPos-(9-3)], 'params' => $self->semStack[$stackPos-(9-5)], 'returnType' => $self->semStack[$stackPos-(9-7)], 'expr' => $self->semStack[$stackPos-(9-9)], 'attrGroups' => $self->semStack[$stackPos-(9-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos])); - }, - 499 => static function ($self, $stackPos) { - $self->semValue = new Expr\ArrowFunction(['static' => true, 'byRef' => $self->semStack[$stackPos-(10-4)], 'params' => $self->semStack[$stackPos-(10-6)], 'returnType' => $self->semStack[$stackPos-(10-8)], 'expr' => $self->semStack[$stackPos-(10-10)], 'attrGroups' => $self->semStack[$stackPos-(10-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(10-1)], $self->tokenEndStack[$stackPos])); - }, - 500 => static function ($self, $stackPos) { - $self->semValue = new Expr\Closure(['static' => false, 'byRef' => $self->semStack[$stackPos-(9-3)], 'params' => $self->semStack[$stackPos-(9-5)], 'uses' => $self->semStack[$stackPos-(9-7)], 'returnType' => $self->semStack[$stackPos-(9-8)], 'stmts' => $self->semStack[$stackPos-(9-9)], 'attrGroups' => $self->semStack[$stackPos-(9-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos])); - }, - 501 => static function ($self, $stackPos) { - $self->semValue = new Expr\Closure(['static' => true, 'byRef' => $self->semStack[$stackPos-(10-4)], 'params' => $self->semStack[$stackPos-(10-6)], 'uses' => $self->semStack[$stackPos-(10-8)], 'returnType' => $self->semStack[$stackPos-(10-9)], 'stmts' => $self->semStack[$stackPos-(10-10)], 'attrGroups' => $self->semStack[$stackPos-(10-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(10-1)], $self->tokenEndStack[$stackPos])); - }, - 502 => static function ($self, $stackPos) { - $self->semValue = array(new Stmt\Class_(null, ['type' => $self->semStack[$stackPos-(8-2)], 'extends' => $self->semStack[$stackPos-(8-4)], 'implements' => $self->semStack[$stackPos-(8-5)], 'stmts' => $self->semStack[$stackPos-(8-7)], 'attrGroups' => $self->semStack[$stackPos-(8-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos])), $self->semStack[$stackPos-(8-3)]); - $self->checkClass($self->semValue[0], -1); - }, - 503 => static function ($self, $stackPos) { - $self->semValue = new Expr\New_($self->semStack[$stackPos-(3-2)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 504 => static function ($self, $stackPos) { - list($class, $ctorArgs) = $self->semStack[$stackPos-(2-2)]; $self->semValue = new Expr\New_($class, $ctorArgs, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 505 => static function ($self, $stackPos) { - $self->semValue = new Expr\New_($self->semStack[$stackPos-(2-2)], [], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 506 => null, - 507 => null, - 508 => static function ($self, $stackPos) { - $self->semValue = array(); - }, - 509 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(4-3)]; - }, - 510 => null, - 511 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 512 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 513 => static function ($self, $stackPos) { - $self->semValue = new Node\ClosureUse($self->semStack[$stackPos-(2-2)], $self->semStack[$stackPos-(2-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 514 => static function ($self, $stackPos) { - $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 515 => static function ($self, $stackPos) { - $self->semValue = new Expr\FuncCall($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 516 => static function ($self, $stackPos) { - $self->semValue = new Expr\FuncCall($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 517 => static function ($self, $stackPos) { - $self->semValue = new Expr\FuncCall($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 518 => static function ($self, $stackPos) { - $self->semValue = new Expr\StaticCall($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 519 => static function ($self, $stackPos) { - $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 520 => null, - 521 => static function ($self, $stackPos) { - $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 522 => static function ($self, $stackPos) { - $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 523 => static function ($self, $stackPos) { - $self->semValue = new Name\FullyQualified(substr($self->semStack[$stackPos-(1-1)], 1), $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 524 => static function ($self, $stackPos) { - $self->semValue = new Name\Relative(substr($self->semStack[$stackPos-(1-1)], 10), $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 525 => null, - 526 => null, - 527 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(3-2)]; - }, - 528 => static function ($self, $stackPos) { - $self->semValue = new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); $self->errorState = 2; - }, - 529 => null, - 530 => null, - 531 => static function ($self, $stackPos) { - $self->semValue = array(); - }, - 532 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); foreach ($self->semValue as $s) { if ($s instanceof Node\InterpolatedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '`', $self->phpVersion->supportsUnicodeEscapes()); } }; - }, - 533 => static function ($self, $stackPos) { - foreach ($self->semStack[$stackPos-(1-1)] as $s) { if ($s instanceof Node\InterpolatedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '`', $self->phpVersion->supportsUnicodeEscapes()); } }; $self->semValue = $self->semStack[$stackPos-(1-1)]; - }, - 534 => static function ($self, $stackPos) { - $self->semValue = array(); - }, - 535 => null, - 536 => static function ($self, $stackPos) { - $self->semValue = new Expr\ConstFetch($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 537 => static function ($self, $stackPos) { - $self->semValue = new Scalar\MagicConst\Line($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 538 => static function ($self, $stackPos) { - $self->semValue = new Scalar\MagicConst\File($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 539 => static function ($self, $stackPos) { - $self->semValue = new Scalar\MagicConst\Dir($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 540 => static function ($self, $stackPos) { - $self->semValue = new Scalar\MagicConst\Class_($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 541 => static function ($self, $stackPos) { - $self->semValue = new Scalar\MagicConst\Trait_($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 542 => static function ($self, $stackPos) { - $self->semValue = new Scalar\MagicConst\Method($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 543 => static function ($self, $stackPos) { - $self->semValue = new Scalar\MagicConst\Function_($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 544 => static function ($self, $stackPos) { - $self->semValue = new Scalar\MagicConst\Namespace_($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 545 => static function ($self, $stackPos) { - $self->semValue = new Scalar\MagicConst\Property($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 546 => static function ($self, $stackPos) { - $self->semValue = new Expr\ClassConstFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 547 => static function ($self, $stackPos) { - $self->semValue = new Expr\ClassConstFetch($self->semStack[$stackPos-(5-1)], $self->semStack[$stackPos-(5-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); - }, - 548 => static function ($self, $stackPos) { - $self->semValue = new Expr\ClassConstFetch($self->semStack[$stackPos-(3-1)], new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(3-3)], $self->tokenEndStack[$stackPos-(3-3)])), $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); $self->errorState = 2; - }, - 549 => static function ($self, $stackPos) { - $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]); $attrs['kind'] = Expr\Array_::KIND_SHORT; - $self->semValue = new Expr\Array_($self->semStack[$stackPos-(3-2)], $attrs); - }, - 550 => static function ($self, $stackPos) { - $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]); $attrs['kind'] = Expr\Array_::KIND_LONG; - $self->semValue = new Expr\Array_($self->semStack[$stackPos-(4-3)], $attrs); - $self->createdArrays->attach($self->semValue); - }, - 551 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(1-1)]; $self->createdArrays->attach($self->semValue); - }, - 552 => static function ($self, $stackPos) { - $self->semValue = Scalar\String_::fromString($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]), $self->phpVersion->supportsUnicodeEscapes()); - }, - 553 => static function ($self, $stackPos) { - $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]); $attrs['kind'] = Scalar\String_::KIND_DOUBLE_QUOTED; - foreach ($self->semStack[$stackPos-(3-2)] as $s) { if ($s instanceof Node\InterpolatedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '"', $self->phpVersion->supportsUnicodeEscapes()); } }; $self->semValue = new Scalar\InterpolatedString($self->semStack[$stackPos-(3-2)], $attrs); - }, - 554 => static function ($self, $stackPos) { - $self->semValue = $self->parseLNumber($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]), $self->phpVersion->allowsInvalidOctals()); - }, - 555 => static function ($self, $stackPos) { - $self->semValue = Scalar\Float_::fromString($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 556 => null, - 557 => null, - 558 => null, - 559 => static function ($self, $stackPos) { - $self->semValue = $self->parseDocString($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-2)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]), $self->getAttributes($self->tokenStartStack[$stackPos-(3-3)], $self->tokenEndStack[$stackPos-(3-3)]), true); - }, - 560 => static function ($self, $stackPos) { - $self->semValue = $self->parseDocString($self->semStack[$stackPos-(2-1)], '', $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]), $self->getAttributes($self->tokenStartStack[$stackPos-(2-2)], $self->tokenEndStack[$stackPos-(2-2)]), true); - }, - 561 => static function ($self, $stackPos) { - $self->semValue = $self->parseDocString($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-2)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]), $self->getAttributes($self->tokenStartStack[$stackPos-(3-3)], $self->tokenEndStack[$stackPos-(3-3)]), true); - }, - 562 => static function ($self, $stackPos) { - $self->semValue = null; - }, - 563 => null, - 564 => null, - 565 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(3-2)]; - }, - 566 => null, - 567 => null, - 568 => null, - 569 => null, - 570 => null, - 571 => null, - 572 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(3-2)]; - }, - 573 => null, - 574 => null, - 575 => null, - 576 => static function ($self, $stackPos) { - $self->semValue = new Expr\ArrayDimFetch($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 577 => null, - 578 => static function ($self, $stackPos) { - $self->semValue = new Expr\MethodCall($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 579 => static function ($self, $stackPos) { - $self->semValue = new Expr\NullsafeMethodCall($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 580 => static function ($self, $stackPos) { - $self->semValue = null; - }, - 581 => null, - 582 => null, - 583 => null, - 584 => static function ($self, $stackPos) { - $self->semValue = new Expr\PropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 585 => static function ($self, $stackPos) { - $self->semValue = new Expr\NullsafePropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 586 => null, - 587 => static function ($self, $stackPos) { - $self->semValue = new Expr\Variable($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 588 => static function ($self, $stackPos) { - $self->semValue = new Expr\Variable($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 589 => static function ($self, $stackPos) { - $self->semValue = new Expr\Variable(new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])), $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); $self->errorState = 2; - }, - 590 => static function ($self, $stackPos) { - $var = $self->semStack[$stackPos-(1-1)]->name; $self->semValue = \is_string($var) ? new Node\VarLikeIdentifier($var, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])) : $var; - }, - 591 => static function ($self, $stackPos) { - $self->semValue = new Expr\StaticPropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 592 => null, - 593 => static function ($self, $stackPos) { - $self->semValue = new Expr\ArrayDimFetch($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 594 => static function ($self, $stackPos) { - $self->semValue = new Expr\PropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 595 => static function ($self, $stackPos) { - $self->semValue = new Expr\NullsafePropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 596 => static function ($self, $stackPos) { - $self->semValue = new Expr\StaticPropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 597 => static function ($self, $stackPos) { - $self->semValue = new Expr\StaticPropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 598 => null, - 599 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(3-2)]; - }, - 600 => null, - 601 => null, - 602 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(3-2)]; - }, - 603 => null, - 604 => static function ($self, $stackPos) { - $self->semValue = new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); $self->errorState = 2; - }, - 605 => static function ($self, $stackPos) { - $self->semValue = new Expr\List_($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); $self->semValue->setAttribute('kind', Expr\List_::KIND_LIST); - $self->postprocessList($self->semValue); - }, - 606 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(1-1)]; $end = count($self->semValue)-1; if ($self->semValue[$end]->value instanceof Expr\Error) array_pop($self->semValue); - }, - 607 => null, - 608 => static function ($self, $stackPos) { - /* do nothing -- prevent default action of $$=$self->semStack[$1]. See $551. */ - }, - 609 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; - }, - 610 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 611 => static function ($self, $stackPos) { - $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(1-1)], null, false, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 612 => static function ($self, $stackPos) { - $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(2-2)], null, true, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 613 => static function ($self, $stackPos) { - $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(1-1)], null, false, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 614 => static function ($self, $stackPos) { - $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(3-3)], $self->semStack[$stackPos-(3-1)], false, $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 615 => static function ($self, $stackPos) { - $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(4-4)], $self->semStack[$stackPos-(4-1)], true, $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 616 => static function ($self, $stackPos) { - $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(3-3)], $self->semStack[$stackPos-(3-1)], false, $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 617 => static function ($self, $stackPos) { - $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(2-2)], null, false, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]), true); - }, - 618 => static function ($self, $stackPos) { - /* Create an Error node now to remember the position. We'll later either report an error, - or convert this into a null element, depending on whether this is a creation or destructuring context. */ - $attrs = $self->createEmptyElemAttributes($self->tokenPos); - $self->semValue = new Node\ArrayItem(new Expr\Error($attrs), null, false, $attrs); - }, - 619 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)]; - }, - 620 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)]; - }, - 621 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); - }, - 622 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)]); - }, - 623 => static function ($self, $stackPos) { - $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]); $attrs['rawValue'] = $self->semStack[$stackPos-(1-1)]; $self->semValue = new Node\InterpolatedStringPart($self->semStack[$stackPos-(1-1)], $attrs); - }, - 624 => static function ($self, $stackPos) { - $self->semValue = new Expr\Variable($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 625 => null, - 626 => static function ($self, $stackPos) { - $self->semValue = new Expr\ArrayDimFetch($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); - }, - 627 => static function ($self, $stackPos) { - $self->semValue = new Expr\PropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 628 => static function ($self, $stackPos) { - $self->semValue = new Expr\NullsafePropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 629 => static function ($self, $stackPos) { - $self->semValue = new Expr\Variable($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 630 => static function ($self, $stackPos) { - $self->semValue = new Expr\Variable($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, - 631 => static function ($self, $stackPos) { - $self->semValue = new Expr\ArrayDimFetch($self->semStack[$stackPos-(6-2)], $self->semStack[$stackPos-(6-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(6-1)], $self->tokenEndStack[$stackPos])); - }, - 632 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(3-2)]; - }, - 633 => static function ($self, $stackPos) { - $self->semValue = new Scalar\String_($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 634 => static function ($self, $stackPos) { - $self->semValue = $self->parseNumString($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); - }, - 635 => static function ($self, $stackPos) { - $self->semValue = $self->parseNumString('-' . $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); - }, - 636 => null, - ]; - } -} diff --git a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php b/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php deleted file mode 100644 index 667f21f5..00000000 --- a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php +++ /dev/null @@ -1,1286 +0,0 @@ - Map of PHP token IDs to drop */ - protected array $dropTokens; - /** @var int[] Map of external symbols (static::T_*) to internal symbols */ - protected array $tokenToSymbol; - /** @var string[] Map of symbols to their names */ - protected array $symbolToName; - /** @var array Names of the production rules (only necessary for debugging) */ - protected array $productions; - - /** @var int[] Map of states to a displacement into the $action table. The corresponding action for this - * state/symbol pair is $action[$actionBase[$state] + $symbol]. If $actionBase[$state] is 0, the - * action is defaulted, i.e. $actionDefault[$state] should be used instead. */ - protected array $actionBase; - /** @var int[] Table of actions. Indexed according to $actionBase comment. */ - protected array $action; - /** @var int[] Table indexed analogously to $action. If $actionCheck[$actionBase[$state] + $symbol] != $symbol - * then the action is defaulted, i.e. $actionDefault[$state] should be used instead. */ - protected array $actionCheck; - /** @var int[] Map of states to their default action */ - protected array $actionDefault; - /** @var callable[] Semantic action callbacks */ - protected array $reduceCallbacks; - - /** @var int[] Map of non-terminals to a displacement into the $goto table. The corresponding goto state for this - * non-terminal/state pair is $goto[$gotoBase[$nonTerminal] + $state] (unless defaulted) */ - protected array $gotoBase; - /** @var int[] Table of states to goto after reduction. Indexed according to $gotoBase comment. */ - protected array $goto; - /** @var int[] Table indexed analogously to $goto. If $gotoCheck[$gotoBase[$nonTerminal] + $state] != $nonTerminal - * then the goto state is defaulted, i.e. $gotoDefault[$nonTerminal] should be used. */ - protected array $gotoCheck; - /** @var int[] Map of non-terminals to the default state to goto after their reduction */ - protected array $gotoDefault; - - /** @var int[] Map of rules to the non-terminal on their left-hand side, i.e. the non-terminal to use for - * determining the state to goto after reduction. */ - protected array $ruleToNonTerminal; - /** @var int[] Map of rules to the length of their right-hand side, which is the number of elements that have to - * be popped from the stack(s) on reduction. */ - protected array $ruleToLength; - - /* - * The following members are part of the parser state: - */ - - /** @var mixed Temporary value containing the result of last semantic action (reduction) */ - protected $semValue; - /** @var mixed[] Semantic value stack (contains values of tokens and semantic action results) */ - protected array $semStack; - /** @var int[] Token start position stack */ - protected array $tokenStartStack; - /** @var int[] Token end position stack */ - protected array $tokenEndStack; - - /** @var ErrorHandler Error handler */ - protected ErrorHandler $errorHandler; - /** @var int Error state, used to avoid error floods */ - protected int $errorState; - - /** @var \SplObjectStorage|null Array nodes created during parsing, for postprocessing of empty elements. */ - protected ?\SplObjectStorage $createdArrays; - - /** @var Token[] Tokens for the current parse */ - protected array $tokens; - /** @var int Current position in token array */ - protected int $tokenPos; - - /** - * Initialize $reduceCallbacks map. - */ - abstract protected function initReduceCallbacks(): void; - - /** - * Creates a parser instance. - * - * Options: - * * phpVersion: ?PhpVersion, - * - * @param Lexer $lexer A lexer - * @param PhpVersion $phpVersion PHP version to target, defaults to latest supported. This - * option is best-effort: Even if specified, parsing will generally assume the latest - * supported version and only adjust behavior in minor ways, for example by omitting - * errors in older versions and interpreting type hints as a name or identifier depending - * on version. - */ - public function __construct(Lexer $lexer, ?PhpVersion $phpVersion = null) { - $this->lexer = $lexer; - $this->phpVersion = $phpVersion ?? PhpVersion::getNewestSupported(); - - $this->initReduceCallbacks(); - $this->phpTokenToSymbol = $this->createTokenMap(); - $this->dropTokens = array_fill_keys( - [\T_WHITESPACE, \T_OPEN_TAG, \T_COMMENT, \T_DOC_COMMENT, \T_BAD_CHARACTER], true - ); - } - - /** - * Parses PHP code into a node tree. - * - * If a non-throwing error handler is used, the parser will continue parsing after an error - * occurred and attempt to build a partial AST. - * - * @param string $code The source code to parse - * @param ErrorHandler|null $errorHandler Error handler to use for lexer/parser errors, defaults - * to ErrorHandler\Throwing. - * - * @return Node\Stmt[]|null Array of statements (or null non-throwing error handler is used and - * the parser was unable to recover from an error). - */ - public function parse(string $code, ?ErrorHandler $errorHandler = null): ?array { - $this->errorHandler = $errorHandler ?: new ErrorHandler\Throwing(); - $this->createdArrays = new \SplObjectStorage(); - - $this->tokens = $this->lexer->tokenize($code, $this->errorHandler); - $result = $this->doParse(); - - // Report errors for any empty elements used inside arrays. This is delayed until after the main parse, - // because we don't know a priori whether a given array expression will be used in a destructuring context - // or not. - foreach ($this->createdArrays as $node) { - foreach ($node->items as $item) { - if ($item->value instanceof Expr\Error) { - $this->errorHandler->handleError( - new Error('Cannot use empty array elements in arrays', $item->getAttributes())); - } - } - } - - // Clear out some of the interior state, so we don't hold onto unnecessary - // memory between uses of the parser - $this->tokenStartStack = []; - $this->tokenEndStack = []; - $this->semStack = []; - $this->semValue = null; - $this->createdArrays = null; - - if ($result !== null) { - $traverser = new NodeTraverser(new CommentAnnotatingVisitor($this->tokens)); - $traverser->traverse($result); - } - - return $result; - } - - public function getTokens(): array { - return $this->tokens; - } - - /** @return Stmt[]|null */ - protected function doParse(): ?array { - // We start off with no lookahead-token - $symbol = self::SYMBOL_NONE; - $tokenValue = null; - $this->tokenPos = -1; - - // Keep stack of start and end attributes - $this->tokenStartStack = []; - $this->tokenEndStack = [0]; - - // Start off in the initial state and keep a stack of previous states - $state = 0; - $stateStack = [$state]; - - // Semantic value stack (contains values of tokens and semantic action results) - $this->semStack = []; - - // Current position in the stack(s) - $stackPos = 0; - - $this->errorState = 0; - - for (;;) { - //$this->traceNewState($state, $symbol); - - if ($this->actionBase[$state] === 0) { - $rule = $this->actionDefault[$state]; - } else { - if ($symbol === self::SYMBOL_NONE) { - do { - $token = $this->tokens[++$this->tokenPos]; - $tokenId = $token->id; - } while (isset($this->dropTokens[$tokenId])); - - // Map the lexer token id to the internally used symbols. - $tokenValue = $token->text; - if (!isset($this->phpTokenToSymbol[$tokenId])) { - throw new \RangeException(sprintf( - 'The lexer returned an invalid token (id=%d, value=%s)', - $tokenId, $tokenValue - )); - } - $symbol = $this->phpTokenToSymbol[$tokenId]; - - //$this->traceRead($symbol); - } - - $idx = $this->actionBase[$state] + $symbol; - if ((($idx >= 0 && $idx < $this->actionTableSize && $this->actionCheck[$idx] === $symbol) - || ($state < $this->YY2TBLSTATE - && ($idx = $this->actionBase[$state + $this->numNonLeafStates] + $symbol) >= 0 - && $idx < $this->actionTableSize && $this->actionCheck[$idx] === $symbol)) - && ($action = $this->action[$idx]) !== $this->defaultAction) { - /* - * >= numNonLeafStates: shift and reduce - * > 0: shift - * = 0: accept - * < 0: reduce - * = -YYUNEXPECTED: error - */ - if ($action > 0) { - /* shift */ - //$this->traceShift($symbol); - - ++$stackPos; - $stateStack[$stackPos] = $state = $action; - $this->semStack[$stackPos] = $tokenValue; - $this->tokenStartStack[$stackPos] = $this->tokenPos; - $this->tokenEndStack[$stackPos] = $this->tokenPos; - $symbol = self::SYMBOL_NONE; - - if ($this->errorState) { - --$this->errorState; - } - - if ($action < $this->numNonLeafStates) { - continue; - } - - /* $yyn >= numNonLeafStates means shift-and-reduce */ - $rule = $action - $this->numNonLeafStates; - } else { - $rule = -$action; - } - } else { - $rule = $this->actionDefault[$state]; - } - } - - for (;;) { - if ($rule === 0) { - /* accept */ - //$this->traceAccept(); - return $this->semValue; - } - if ($rule !== $this->unexpectedTokenRule) { - /* reduce */ - //$this->traceReduce($rule); - - $ruleLength = $this->ruleToLength[$rule]; - try { - $callback = $this->reduceCallbacks[$rule]; - if ($callback !== null) { - $callback($this, $stackPos); - } elseif ($ruleLength > 0) { - $this->semValue = $this->semStack[$stackPos - $ruleLength + 1]; - } - } catch (Error $e) { - if (-1 === $e->getStartLine()) { - $e->setStartLine($this->tokens[$this->tokenPos]->line); - } - - $this->emitError($e); - // Can't recover from this type of error - return null; - } - - /* Goto - shift nonterminal */ - $lastTokenEnd = $this->tokenEndStack[$stackPos]; - $stackPos -= $ruleLength; - $nonTerminal = $this->ruleToNonTerminal[$rule]; - $idx = $this->gotoBase[$nonTerminal] + $stateStack[$stackPos]; - if ($idx >= 0 && $idx < $this->gotoTableSize && $this->gotoCheck[$idx] === $nonTerminal) { - $state = $this->goto[$idx]; - } else { - $state = $this->gotoDefault[$nonTerminal]; - } - - ++$stackPos; - $stateStack[$stackPos] = $state; - $this->semStack[$stackPos] = $this->semValue; - $this->tokenEndStack[$stackPos] = $lastTokenEnd; - if ($ruleLength === 0) { - // Empty productions use the start attributes of the lookahead token. - $this->tokenStartStack[$stackPos] = $this->tokenPos; - } - } else { - /* error */ - switch ($this->errorState) { - case 0: - $msg = $this->getErrorMessage($symbol, $state); - $this->emitError(new Error($msg, $this->getAttributesForToken($this->tokenPos))); - // Break missing intentionally - // no break - case 1: - case 2: - $this->errorState = 3; - - // Pop until error-expecting state uncovered - while (!( - (($idx = $this->actionBase[$state] + $this->errorSymbol) >= 0 - && $idx < $this->actionTableSize && $this->actionCheck[$idx] === $this->errorSymbol) - || ($state < $this->YY2TBLSTATE - && ($idx = $this->actionBase[$state + $this->numNonLeafStates] + $this->errorSymbol) >= 0 - && $idx < $this->actionTableSize && $this->actionCheck[$idx] === $this->errorSymbol) - ) || ($action = $this->action[$idx]) === $this->defaultAction) { // Not totally sure about this - if ($stackPos <= 0) { - // Could not recover from error - return null; - } - $state = $stateStack[--$stackPos]; - //$this->tracePop($state); - } - - //$this->traceShift($this->errorSymbol); - ++$stackPos; - $stateStack[$stackPos] = $state = $action; - - // We treat the error symbol as being empty, so we reset the end attributes - // to the end attributes of the last non-error symbol - $this->tokenStartStack[$stackPos] = $this->tokenPos; - $this->tokenEndStack[$stackPos] = $this->tokenEndStack[$stackPos - 1]; - break; - - case 3: - if ($symbol === 0) { - // Reached EOF without recovering from error - return null; - } - - //$this->traceDiscard($symbol); - $symbol = self::SYMBOL_NONE; - break 2; - } - } - - if ($state < $this->numNonLeafStates) { - break; - } - - /* >= numNonLeafStates means shift-and-reduce */ - $rule = $state - $this->numNonLeafStates; - } - } - } - - protected function emitError(Error $error): void { - $this->errorHandler->handleError($error); - } - - /** - * Format error message including expected tokens. - * - * @param int $symbol Unexpected symbol - * @param int $state State at time of error - * - * @return string Formatted error message - */ - protected function getErrorMessage(int $symbol, int $state): string { - $expectedString = ''; - if ($expected = $this->getExpectedTokens($state)) { - $expectedString = ', expecting ' . implode(' or ', $expected); - } - - return 'Syntax error, unexpected ' . $this->symbolToName[$symbol] . $expectedString; - } - - /** - * Get limited number of expected tokens in given state. - * - * @param int $state State - * - * @return string[] Expected tokens. If too many, an empty array is returned. - */ - protected function getExpectedTokens(int $state): array { - $expected = []; - - $base = $this->actionBase[$state]; - foreach ($this->symbolToName as $symbol => $name) { - $idx = $base + $symbol; - if ($idx >= 0 && $idx < $this->actionTableSize && $this->actionCheck[$idx] === $symbol - || $state < $this->YY2TBLSTATE - && ($idx = $this->actionBase[$state + $this->numNonLeafStates] + $symbol) >= 0 - && $idx < $this->actionTableSize && $this->actionCheck[$idx] === $symbol - ) { - if ($this->action[$idx] !== $this->unexpectedTokenRule - && $this->action[$idx] !== $this->defaultAction - && $symbol !== $this->errorSymbol - ) { - if (count($expected) === 4) { - /* Too many expected tokens */ - return []; - } - - $expected[] = $name; - } - } - } - - return $expected; - } - - /** - * Get attributes for a node with the given start and end token positions. - * - * @param int $tokenStartPos Token position the node starts at - * @param int $tokenEndPos Token position the node ends at - * @return array Attributes - */ - protected function getAttributes(int $tokenStartPos, int $tokenEndPos): array { - $startToken = $this->tokens[$tokenStartPos]; - $afterEndToken = $this->tokens[$tokenEndPos + 1]; - return [ - 'startLine' => $startToken->line, - 'startTokenPos' => $tokenStartPos, - 'startFilePos' => $startToken->pos, - 'endLine' => $afterEndToken->line, - 'endTokenPos' => $tokenEndPos, - 'endFilePos' => $afterEndToken->pos - 1, - ]; - } - - /** - * Get attributes for a single token at the given token position. - * - * @return array Attributes - */ - protected function getAttributesForToken(int $tokenPos): array { - if ($tokenPos < \count($this->tokens) - 1) { - return $this->getAttributes($tokenPos, $tokenPos); - } - - // Get attributes for the sentinel token. - $token = $this->tokens[$tokenPos]; - return [ - 'startLine' => $token->line, - 'startTokenPos' => $tokenPos, - 'startFilePos' => $token->pos, - 'endLine' => $token->line, - 'endTokenPos' => $tokenPos, - 'endFilePos' => $token->pos, - ]; - } - - /* - * Tracing functions used for debugging the parser. - */ - - /* - protected function traceNewState($state, $symbol): void { - echo '% State ' . $state - . ', Lookahead ' . ($symbol == self::SYMBOL_NONE ? '--none--' : $this->symbolToName[$symbol]) . "\n"; - } - - protected function traceRead($symbol): void { - echo '% Reading ' . $this->symbolToName[$symbol] . "\n"; - } - - protected function traceShift($symbol): void { - echo '% Shift ' . $this->symbolToName[$symbol] . "\n"; - } - - protected function traceAccept(): void { - echo "% Accepted.\n"; - } - - protected function traceReduce($n): void { - echo '% Reduce by (' . $n . ') ' . $this->productions[$n] . "\n"; - } - - protected function tracePop($state): void { - echo '% Recovering, uncovered state ' . $state . "\n"; - } - - protected function traceDiscard($symbol): void { - echo '% Discard ' . $this->symbolToName[$symbol] . "\n"; - } - */ - - /* - * Helper functions invoked by semantic actions - */ - - /** - * Moves statements of semicolon-style namespaces into $ns->stmts and checks various error conditions. - * - * @param Node\Stmt[] $stmts - * @return Node\Stmt[] - */ - protected function handleNamespaces(array $stmts): array { - $hasErrored = false; - $style = $this->getNamespacingStyle($stmts); - if (null === $style) { - // not namespaced, nothing to do - return $stmts; - } - if ('brace' === $style) { - // For braced namespaces we only have to check that there are no invalid statements between the namespaces - $afterFirstNamespace = false; - foreach ($stmts as $stmt) { - if ($stmt instanceof Node\Stmt\Namespace_) { - $afterFirstNamespace = true; - } elseif (!$stmt instanceof Node\Stmt\HaltCompiler - && !$stmt instanceof Node\Stmt\Nop - && $afterFirstNamespace && !$hasErrored) { - $this->emitError(new Error( - 'No code may exist outside of namespace {}', $stmt->getAttributes())); - $hasErrored = true; // Avoid one error for every statement - } - } - return $stmts; - } else { - // For semicolon namespaces we have to move the statements after a namespace declaration into ->stmts - $resultStmts = []; - $targetStmts = &$resultStmts; - $lastNs = null; - foreach ($stmts as $stmt) { - if ($stmt instanceof Node\Stmt\Namespace_) { - if ($lastNs !== null) { - $this->fixupNamespaceAttributes($lastNs); - } - if ($stmt->stmts === null) { - $stmt->stmts = []; - $targetStmts = &$stmt->stmts; - $resultStmts[] = $stmt; - } else { - // This handles the invalid case of mixed style namespaces - $resultStmts[] = $stmt; - $targetStmts = &$resultStmts; - } - $lastNs = $stmt; - } elseif ($stmt instanceof Node\Stmt\HaltCompiler) { - // __halt_compiler() is not moved into the namespace - $resultStmts[] = $stmt; - } else { - $targetStmts[] = $stmt; - } - } - if ($lastNs !== null) { - $this->fixupNamespaceAttributes($lastNs); - } - return $resultStmts; - } - } - - private function fixupNamespaceAttributes(Node\Stmt\Namespace_ $stmt): void { - // We moved the statements into the namespace node, as such the end of the namespace node - // needs to be extended to the end of the statements. - if (empty($stmt->stmts)) { - return; - } - - // We only move the builtin end attributes here. This is the best we can do with the - // knowledge we have. - $endAttributes = ['endLine', 'endFilePos', 'endTokenPos']; - $lastStmt = $stmt->stmts[count($stmt->stmts) - 1]; - foreach ($endAttributes as $endAttribute) { - if ($lastStmt->hasAttribute($endAttribute)) { - $stmt->setAttribute($endAttribute, $lastStmt->getAttribute($endAttribute)); - } - } - } - - /** @return array */ - private function getNamespaceErrorAttributes(Namespace_ $node): array { - $attrs = $node->getAttributes(); - // Adjust end attributes to only cover the "namespace" keyword, not the whole namespace. - if (isset($attrs['startLine'])) { - $attrs['endLine'] = $attrs['startLine']; - } - if (isset($attrs['startTokenPos'])) { - $attrs['endTokenPos'] = $attrs['startTokenPos']; - } - if (isset($attrs['startFilePos'])) { - $attrs['endFilePos'] = $attrs['startFilePos'] + \strlen('namespace') - 1; - } - return $attrs; - } - - /** - * Determine namespacing style (semicolon or brace) - * - * @param Node[] $stmts Top-level statements. - * - * @return null|string One of "semicolon", "brace" or null (no namespaces) - */ - private function getNamespacingStyle(array $stmts): ?string { - $style = null; - $hasNotAllowedStmts = false; - foreach ($stmts as $i => $stmt) { - if ($stmt instanceof Node\Stmt\Namespace_) { - $currentStyle = null === $stmt->stmts ? 'semicolon' : 'brace'; - if (null === $style) { - $style = $currentStyle; - if ($hasNotAllowedStmts) { - $this->emitError(new Error( - 'Namespace declaration statement has to be the very first statement in the script', - $this->getNamespaceErrorAttributes($stmt) - )); - } - } elseif ($style !== $currentStyle) { - $this->emitError(new Error( - 'Cannot mix bracketed namespace declarations with unbracketed namespace declarations', - $this->getNamespaceErrorAttributes($stmt) - )); - // Treat like semicolon style for namespace normalization - return 'semicolon'; - } - continue; - } - - /* declare(), __halt_compiler() and nops can be used before a namespace declaration */ - if ($stmt instanceof Node\Stmt\Declare_ - || $stmt instanceof Node\Stmt\HaltCompiler - || $stmt instanceof Node\Stmt\Nop) { - continue; - } - - /* There may be a hashbang line at the very start of the file */ - if ($i === 0 && $stmt instanceof Node\Stmt\InlineHTML && preg_match('/\A#!.*\r?\n\z/', $stmt->value)) { - continue; - } - - /* Everything else if forbidden before namespace declarations */ - $hasNotAllowedStmts = true; - } - return $style; - } - - /** @return Name|Identifier */ - protected function handleBuiltinTypes(Name $name) { - if (!$name->isUnqualified()) { - return $name; - } - - $lowerName = $name->toLowerString(); - if (!$this->phpVersion->supportsBuiltinType($lowerName)) { - return $name; - } - - return new Node\Identifier($lowerName, $name->getAttributes()); - } - - /** - * Get combined start and end attributes at a stack location - * - * @param int $stackPos Stack location - * - * @return array Combined start and end attributes - */ - protected function getAttributesAt(int $stackPos): array { - return $this->getAttributes($this->tokenStartStack[$stackPos], $this->tokenEndStack[$stackPos]); - } - - protected function getFloatCastKind(string $cast): int { - $cast = strtolower($cast); - if (strpos($cast, 'float') !== false) { - return Double::KIND_FLOAT; - } - - if (strpos($cast, 'real') !== false) { - return Double::KIND_REAL; - } - - return Double::KIND_DOUBLE; - } - - /** @param array $attributes */ - protected function parseLNumber(string $str, array $attributes, bool $allowInvalidOctal = false): Int_ { - try { - return Int_::fromString($str, $attributes, $allowInvalidOctal); - } catch (Error $error) { - $this->emitError($error); - // Use dummy value - return new Int_(0, $attributes); - } - } - - /** - * Parse a T_NUM_STRING token into either an integer or string node. - * - * @param string $str Number string - * @param array $attributes Attributes - * - * @return Int_|String_ Integer or string node. - */ - protected function parseNumString(string $str, array $attributes) { - if (!preg_match('/^(?:0|-?[1-9][0-9]*)$/', $str)) { - return new String_($str, $attributes); - } - - $num = +$str; - if (!is_int($num)) { - return new String_($str, $attributes); - } - - return new Int_($num, $attributes); - } - - /** @param array $attributes */ - protected function stripIndentation( - string $string, int $indentLen, string $indentChar, - bool $newlineAtStart, bool $newlineAtEnd, array $attributes - ): string { - if ($indentLen === 0) { - return $string; - } - - $start = $newlineAtStart ? '(?:(?<=\n)|\A)' : '(?<=\n)'; - $end = $newlineAtEnd ? '(?:(?=[\r\n])|\z)' : '(?=[\r\n])'; - $regex = '/' . $start . '([ \t]*)(' . $end . ')?/'; - return preg_replace_callback( - $regex, - function ($matches) use ($indentLen, $indentChar, $attributes) { - $prefix = substr($matches[1], 0, $indentLen); - if (false !== strpos($prefix, $indentChar === " " ? "\t" : " ")) { - $this->emitError(new Error( - 'Invalid indentation - tabs and spaces cannot be mixed', $attributes - )); - } elseif (strlen($prefix) < $indentLen && !isset($matches[2])) { - $this->emitError(new Error( - 'Invalid body indentation level ' . - '(expecting an indentation level of at least ' . $indentLen . ')', - $attributes - )); - } - return substr($matches[0], strlen($prefix)); - }, - $string - ); - } - - /** - * @param string|(Expr|InterpolatedStringPart)[] $contents - * @param array $attributes - * @param array $endTokenAttributes - */ - protected function parseDocString( - string $startToken, $contents, string $endToken, - array $attributes, array $endTokenAttributes, bool $parseUnicodeEscape - ): Expr { - $kind = strpos($startToken, "'") === false - ? String_::KIND_HEREDOC : String_::KIND_NOWDOC; - - $regex = '/\A[bB]?<<<[ \t]*[\'"]?([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)[\'"]?(?:\r\n|\n|\r)\z/'; - $result = preg_match($regex, $startToken, $matches); - assert($result === 1); - $label = $matches[1]; - - $result = preg_match('/\A[ \t]*/', $endToken, $matches); - assert($result === 1); - $indentation = $matches[0]; - - $attributes['kind'] = $kind; - $attributes['docLabel'] = $label; - $attributes['docIndentation'] = $indentation; - - $indentHasSpaces = false !== strpos($indentation, " "); - $indentHasTabs = false !== strpos($indentation, "\t"); - if ($indentHasSpaces && $indentHasTabs) { - $this->emitError(new Error( - 'Invalid indentation - tabs and spaces cannot be mixed', - $endTokenAttributes - )); - - // Proceed processing as if this doc string is not indented - $indentation = ''; - } - - $indentLen = \strlen($indentation); - $indentChar = $indentHasSpaces ? " " : "\t"; - - if (\is_string($contents)) { - if ($contents === '') { - $attributes['rawValue'] = $contents; - return new String_('', $attributes); - } - - $contents = $this->stripIndentation( - $contents, $indentLen, $indentChar, true, true, $attributes - ); - $contents = preg_replace('~(\r\n|\n|\r)\z~', '', $contents); - $attributes['rawValue'] = $contents; - - if ($kind === String_::KIND_HEREDOC) { - $contents = String_::parseEscapeSequences($contents, null, $parseUnicodeEscape); - } - - return new String_($contents, $attributes); - } else { - assert(count($contents) > 0); - if (!$contents[0] instanceof Node\InterpolatedStringPart) { - // If there is no leading encapsed string part, pretend there is an empty one - $this->stripIndentation( - '', $indentLen, $indentChar, true, false, $contents[0]->getAttributes() - ); - } - - $newContents = []; - foreach ($contents as $i => $part) { - if ($part instanceof Node\InterpolatedStringPart) { - $isLast = $i === \count($contents) - 1; - $part->value = $this->stripIndentation( - $part->value, $indentLen, $indentChar, - $i === 0, $isLast, $part->getAttributes() - ); - if ($isLast) { - $part->value = preg_replace('~(\r\n|\n|\r)\z~', '', $part->value); - } - $part->setAttribute('rawValue', $part->value); - $part->value = String_::parseEscapeSequences($part->value, null, $parseUnicodeEscape); - if ('' === $part->value) { - continue; - } - } - $newContents[] = $part; - } - return new InterpolatedString($newContents, $attributes); - } - } - - protected function createCommentFromToken(Token $token, int $tokenPos): Comment { - assert($token->id === \T_COMMENT || $token->id == \T_DOC_COMMENT); - return \T_DOC_COMMENT === $token->id - ? new Comment\Doc($token->text, $token->line, $token->pos, $tokenPos, - $token->getEndLine(), $token->getEndPos() - 1, $tokenPos) - : new Comment($token->text, $token->line, $token->pos, $tokenPos, - $token->getEndLine(), $token->getEndPos() - 1, $tokenPos); - } - - /** - * Get last comment before the given token position, if any - */ - protected function getCommentBeforeToken(int $tokenPos): ?Comment { - while (--$tokenPos >= 0) { - $token = $this->tokens[$tokenPos]; - if (!isset($this->dropTokens[$token->id])) { - break; - } - - if ($token->id === \T_COMMENT || $token->id === \T_DOC_COMMENT) { - return $this->createCommentFromToken($token, $tokenPos); - } - } - return null; - } - - /** - * Create a zero-length nop to capture preceding comments, if any. - */ - protected function maybeCreateZeroLengthNop(int $tokenPos): ?Nop { - $comment = $this->getCommentBeforeToken($tokenPos); - if ($comment === null) { - return null; - } - - $commentEndLine = $comment->getEndLine(); - $commentEndFilePos = $comment->getEndFilePos(); - $commentEndTokenPos = $comment->getEndTokenPos(); - $attributes = [ - 'startLine' => $commentEndLine, - 'endLine' => $commentEndLine, - 'startFilePos' => $commentEndFilePos + 1, - 'endFilePos' => $commentEndFilePos, - 'startTokenPos' => $commentEndTokenPos + 1, - 'endTokenPos' => $commentEndTokenPos, - ]; - return new Nop($attributes); - } - - protected function maybeCreateNop(int $tokenStartPos, int $tokenEndPos): ?Nop { - if ($this->getCommentBeforeToken($tokenStartPos) === null) { - return null; - } - return new Nop($this->getAttributes($tokenStartPos, $tokenEndPos)); - } - - protected function handleHaltCompiler(): string { - // Prevent the lexer from returning any further tokens. - $nextToken = $this->tokens[$this->tokenPos + 1]; - $this->tokenPos = \count($this->tokens) - 2; - - // Return text after __halt_compiler. - return $nextToken->id === \T_INLINE_HTML ? $nextToken->text : ''; - } - - protected function inlineHtmlHasLeadingNewline(int $stackPos): bool { - $tokenPos = $this->tokenStartStack[$stackPos]; - $token = $this->tokens[$tokenPos]; - assert($token->id == \T_INLINE_HTML); - if ($tokenPos > 0) { - $prevToken = $this->tokens[$tokenPos - 1]; - assert($prevToken->id == \T_CLOSE_TAG); - return false !== strpos($prevToken->text, "\n") - || false !== strpos($prevToken->text, "\r"); - } - return true; - } - - /** - * @return array - */ - protected function createEmptyElemAttributes(int $tokenPos): array { - return $this->getAttributesForToken($tokenPos); - } - - protected function fixupArrayDestructuring(Array_ $node): Expr\List_ { - $this->createdArrays->detach($node); - return new Expr\List_(array_map(function (Node\ArrayItem $item) { - if ($item->value instanceof Expr\Error) { - // We used Error as a placeholder for empty elements, which are legal for destructuring. - return null; - } - if ($item->value instanceof Array_) { - return new Node\ArrayItem( - $this->fixupArrayDestructuring($item->value), - $item->key, $item->byRef, $item->getAttributes()); - } - return $item; - }, $node->items), ['kind' => Expr\List_::KIND_ARRAY] + $node->getAttributes()); - } - - protected function postprocessList(Expr\List_ $node): void { - foreach ($node->items as $i => $item) { - if ($item->value instanceof Expr\Error) { - // We used Error as a placeholder for empty elements, which are legal for destructuring. - $node->items[$i] = null; - } - } - } - - /** @param ElseIf_|Else_ $node */ - protected function fixupAlternativeElse($node): void { - // Make sure a trailing nop statement carrying comments is part of the node. - $numStmts = \count($node->stmts); - if ($numStmts !== 0 && $node->stmts[$numStmts - 1] instanceof Nop) { - $nopAttrs = $node->stmts[$numStmts - 1]->getAttributes(); - if (isset($nopAttrs['endLine'])) { - $node->setAttribute('endLine', $nopAttrs['endLine']); - } - if (isset($nopAttrs['endFilePos'])) { - $node->setAttribute('endFilePos', $nopAttrs['endFilePos']); - } - if (isset($nopAttrs['endTokenPos'])) { - $node->setAttribute('endTokenPos', $nopAttrs['endTokenPos']); - } - } - } - - protected function checkClassModifier(int $a, int $b, int $modifierPos): void { - try { - Modifiers::verifyClassModifier($a, $b); - } catch (Error $error) { - $error->setAttributes($this->getAttributesAt($modifierPos)); - $this->emitError($error); - } - } - - protected function checkModifier(int $a, int $b, int $modifierPos): void { - // Jumping through some hoops here because verifyModifier() is also used elsewhere - try { - Modifiers::verifyModifier($a, $b); - } catch (Error $error) { - $error->setAttributes($this->getAttributesAt($modifierPos)); - $this->emitError($error); - } - } - - protected function checkParam(Param $node): void { - if ($node->variadic && null !== $node->default) { - $this->emitError(new Error( - 'Variadic parameter cannot have a default value', - $node->default->getAttributes() - )); - } - } - - protected function checkTryCatch(TryCatch $node): void { - if (empty($node->catches) && null === $node->finally) { - $this->emitError(new Error( - 'Cannot use try without catch or finally', $node->getAttributes() - )); - } - } - - protected function checkNamespace(Namespace_ $node): void { - if (null !== $node->stmts) { - foreach ($node->stmts as $stmt) { - if ($stmt instanceof Namespace_) { - $this->emitError(new Error( - 'Namespace declarations cannot be nested', $stmt->getAttributes() - )); - } - } - } - } - - private function checkClassName(?Identifier $name, int $namePos): void { - if (null !== $name && $name->isSpecialClassName()) { - $this->emitError(new Error( - sprintf('Cannot use \'%s\' as class name as it is reserved', $name), - $this->getAttributesAt($namePos) - )); - } - } - - /** @param Name[] $interfaces */ - private function checkImplementedInterfaces(array $interfaces): void { - foreach ($interfaces as $interface) { - if ($interface->isSpecialClassName()) { - $this->emitError(new Error( - sprintf('Cannot use \'%s\' as interface name as it is reserved', $interface), - $interface->getAttributes() - )); - } - } - } - - protected function checkClass(Class_ $node, int $namePos): void { - $this->checkClassName($node->name, $namePos); - - if ($node->extends && $node->extends->isSpecialClassName()) { - $this->emitError(new Error( - sprintf('Cannot use \'%s\' as class name as it is reserved', $node->extends), - $node->extends->getAttributes() - )); - } - - $this->checkImplementedInterfaces($node->implements); - } - - protected function checkInterface(Interface_ $node, int $namePos): void { - $this->checkClassName($node->name, $namePos); - $this->checkImplementedInterfaces($node->extends); - } - - protected function checkEnum(Enum_ $node, int $namePos): void { - $this->checkClassName($node->name, $namePos); - $this->checkImplementedInterfaces($node->implements); - } - - protected function checkClassMethod(ClassMethod $node, int $modifierPos): void { - if ($node->flags & Modifiers::STATIC) { - switch ($node->name->toLowerString()) { - case '__construct': - $this->emitError(new Error( - sprintf('Constructor %s() cannot be static', $node->name), - $this->getAttributesAt($modifierPos))); - break; - case '__destruct': - $this->emitError(new Error( - sprintf('Destructor %s() cannot be static', $node->name), - $this->getAttributesAt($modifierPos))); - break; - case '__clone': - $this->emitError(new Error( - sprintf('Clone method %s() cannot be static', $node->name), - $this->getAttributesAt($modifierPos))); - break; - } - } - - if ($node->flags & Modifiers::READONLY) { - $this->emitError(new Error( - sprintf('Method %s() cannot be readonly', $node->name), - $this->getAttributesAt($modifierPos))); - } - } - - protected function checkClassConst(ClassConst $node, int $modifierPos): void { - foreach ([Modifiers::STATIC, Modifiers::ABSTRACT, Modifiers::READONLY] as $modifier) { - if ($node->flags & $modifier) { - $this->emitError(new Error( - "Cannot use '" . Modifiers::toString($modifier) . "' as constant modifier", - $this->getAttributesAt($modifierPos))); - } - } - } - - protected function checkUseUse(UseItem $node, int $namePos): void { - if ($node->alias && $node->alias->isSpecialClassName()) { - $this->emitError(new Error( - sprintf( - 'Cannot use %s as %s because \'%2$s\' is a special class name', - $node->name, $node->alias - ), - $this->getAttributesAt($namePos) - )); - } - } - - protected function checkPropertyHooksForMultiProperty(Property $property, int $hookPos): void { - if (count($property->props) > 1) { - $this->emitError(new Error( - 'Cannot use hooks when declaring multiple properties', $this->getAttributesAt($hookPos))); - } - } - - /** @param PropertyHook[] $hooks */ - protected function checkEmptyPropertyHookList(array $hooks, int $hookPos): void { - if (empty($hooks)) { - $this->emitError(new Error( - 'Property hook list cannot be empty', $this->getAttributesAt($hookPos))); - } - } - - protected function checkPropertyHook(PropertyHook $hook, ?int $paramListPos): void { - $name = $hook->name->toLowerString(); - if ($name !== 'get' && $name !== 'set') { - $this->emitError(new Error( - 'Unknown hook "' . $hook->name . '", expected "get" or "set"', - $hook->name->getAttributes())); - } - if ($name === 'get' && $paramListPos !== null) { - $this->emitError(new Error( - 'get hook must not have a parameter list', $this->getAttributesAt($paramListPos))); - } - } - - protected function checkPropertyHookModifiers(int $a, int $b, int $modifierPos): void { - try { - Modifiers::verifyModifier($a, $b); - } catch (Error $error) { - $error->setAttributes($this->getAttributesAt($modifierPos)); - $this->emitError($error); - } - - if ($b != Modifiers::FINAL) { - $this->emitError(new Error( - 'Cannot use the ' . Modifiers::toString($b) . ' modifier on a property hook', - $this->getAttributesAt($modifierPos))); - } - } - - /** - * @param Property|Param $node - */ - protected function addPropertyNameToHooks(Node $node): void { - if ($node instanceof Property) { - $name = $node->props[0]->name->toString(); - } else { - $name = $node->var->name; - } - foreach ($node->hooks as $hook) { - $hook->setAttribute('propertyName', $name); - } - } - - /** @param array $args */ - private function isSimpleExit(array $args): bool { - if (\count($args) === 0) { - return true; - } - if (\count($args) === 1) { - $arg = $args[0]; - return $arg instanceof Arg && $arg->name === null && - $arg->byRef === false && $arg->unpack === false; - } - return false; - } - - /** - * @param array $args - * @param array $attrs - */ - protected function createExitExpr(string $name, int $namePos, array $args, array $attrs): Expr { - if ($this->isSimpleExit($args)) { - // Create Exit node for backwards compatibility. - $attrs['kind'] = strtolower($name) === 'exit' ? Expr\Exit_::KIND_EXIT : Expr\Exit_::KIND_DIE; - return new Expr\Exit_(\count($args) === 1 ? $args[0]->value : null, $attrs); - } - return new Expr\FuncCall(new Name($name, $this->getAttributesAt($namePos)), $args, $attrs); - } - - /** - * Creates the token map. - * - * The token map maps the PHP internal token identifiers - * to the identifiers used by the Parser. Additionally it - * maps T_OPEN_TAG_WITH_ECHO to T_ECHO and T_CLOSE_TAG to ';'. - * - * @return array The token map - */ - protected function createTokenMap(): array { - $tokenMap = []; - - // Single-char tokens use an identity mapping. - for ($i = 0; $i < 256; ++$i) { - $tokenMap[$i] = $i; - } - - foreach ($this->symbolToName as $name) { - if ($name[0] === 'T') { - $tokenMap[\constant($name)] = constant(static::class . '::' . $name); - } - } - - // T_OPEN_TAG_WITH_ECHO with dropped T_OPEN_TAG results in T_ECHO - $tokenMap[\T_OPEN_TAG_WITH_ECHO] = static::T_ECHO; - // T_CLOSE_TAG is equivalent to ';' - $tokenMap[\T_CLOSE_TAG] = ord(';'); - - // We have created a map from PHP token IDs to external symbol IDs. - // Now map them to the internal symbol ID. - $fullTokenMap = []; - foreach ($tokenMap as $phpToken => $extSymbol) { - $intSymbol = $this->tokenToSymbol[$extSymbol]; - if ($intSymbol === $this->invalidSymbol) { - continue; - } - $fullTokenMap[$phpToken] = $intSymbol; - } - - return $fullTokenMap; - } -} diff --git a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/PhpVersion.php b/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/PhpVersion.php deleted file mode 100644 index 04ff6ddc..00000000 --- a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/PhpVersion.php +++ /dev/null @@ -1,164 +0,0 @@ - 50100, - 'callable' => 50400, - 'bool' => 70000, - 'int' => 70000, - 'float' => 70000, - 'string' => 70000, - 'iterable' => 70100, - 'void' => 70100, - 'object' => 70200, - 'null' => 80000, - 'false' => 80000, - 'mixed' => 80000, - 'never' => 80100, - 'true' => 80200, - ]; - - private function __construct(int $id) { - $this->id = $id; - } - - /** - * Create a PhpVersion object from major and minor version components. - */ - public static function fromComponents(int $major, int $minor): self { - return new self($major * 10000 + $minor * 100); - } - - /** - * Get the newest PHP version supported by this library. Support for this version may be partial, - * if it is still under development. - */ - public static function getNewestSupported(): self { - return self::fromComponents(8, 4); - } - - /** - * Get the host PHP version, that is the PHP version we're currently running on. - */ - public static function getHostVersion(): self { - return self::fromComponents(\PHP_MAJOR_VERSION, \PHP_MINOR_VERSION); - } - - /** - * Parse the version from a string like "8.1". - */ - public static function fromString(string $version): self { - if (!preg_match('/^(\d+)\.(\d+)/', $version, $matches)) { - throw new \LogicException("Invalid PHP version \"$version\""); - } - return self::fromComponents((int) $matches[1], (int) $matches[2]); - } - - /** - * Check whether two versions are the same. - */ - public function equals(PhpVersion $other): bool { - return $this->id === $other->id; - } - - /** - * Check whether this version is greater than or equal to the argument. - */ - public function newerOrEqual(PhpVersion $other): bool { - return $this->id >= $other->id; - } - - /** - * Check whether this version is older than the argument. - */ - public function older(PhpVersion $other): bool { - return $this->id < $other->id; - } - - /** - * Check whether this is the host PHP version. - */ - public function isHostVersion(): bool { - return $this->equals(self::getHostVersion()); - } - - /** - * Check whether this PHP version supports the given builtin type. Type name must be lowercase. - */ - public function supportsBuiltinType(string $type): bool { - $minVersion = self::BUILTIN_TYPE_VERSIONS[$type] ?? null; - return $minVersion !== null && $this->id >= $minVersion; - } - - /** - * Whether this version supports [] array literals. - */ - public function supportsShortArraySyntax(): bool { - return $this->id >= 50400; - } - - /** - * Whether this version supports [] for destructuring. - */ - public function supportsShortArrayDestructuring(): bool { - return $this->id >= 70100; - } - - /** - * Whether this version supports flexible heredoc/nowdoc. - */ - public function supportsFlexibleHeredoc(): bool { - return $this->id >= 70300; - } - - /** - * Whether this version supports trailing commas in parameter lists. - */ - public function supportsTrailingCommaInParamList(): bool { - return $this->id >= 80000; - } - - /** - * Whether this version allows "$var =& new Obj". - */ - public function allowsAssignNewByReference(): bool { - return $this->id < 70000; - } - - /** - * Whether this version allows invalid octals like "08". - */ - public function allowsInvalidOctals(): bool { - return $this->id < 70000; - } - - /** - * Whether this version allows DEL (\x7f) to occur in identifiers. - */ - public function allowsDelInIdentifiers(): bool { - return $this->id < 70100; - } - - /** - * Whether this version supports yield in expression context without parentheses. - */ - public function supportsYieldWithoutParentheses(): bool { - return $this->id >= 70000; - } - - /** - * Whether this version supports unicode escape sequences in strings. - */ - public function supportsUnicodeEscapes(): bool { - return $this->id >= 70000; - } -} diff --git a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php b/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php deleted file mode 100644 index 51c54f7d..00000000 --- a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php +++ /dev/null @@ -1,1192 +0,0 @@ -pAttrGroups($node->attrGroups, true) - . $this->pModifiers($node->flags) - . ($node->type ? $this->p($node->type) . ' ' : '') - . ($node->byRef ? '&' : '') - . ($node->variadic ? '...' : '') - . $this->p($node->var) - . ($node->default ? ' = ' . $this->p($node->default) : '') - . ($node->hooks ? ' {' . $this->pStmts($node->hooks) . $this->nl . '}' : ''); - } - - protected function pArg(Node\Arg $node): string { - return ($node->name ? $node->name->toString() . ': ' : '') - . ($node->byRef ? '&' : '') . ($node->unpack ? '...' : '') - . $this->p($node->value); - } - - protected function pVariadicPlaceholder(Node\VariadicPlaceholder $node): string { - return '...'; - } - - protected function pConst(Node\Const_ $node): string { - return $node->name . ' = ' . $this->p($node->value); - } - - protected function pNullableType(Node\NullableType $node): string { - return '?' . $this->p($node->type); - } - - protected function pUnionType(Node\UnionType $node): string { - $types = []; - foreach ($node->types as $typeNode) { - if ($typeNode instanceof Node\IntersectionType) { - $types[] = '('. $this->p($typeNode) . ')'; - continue; - } - $types[] = $this->p($typeNode); - } - return implode('|', $types); - } - - protected function pIntersectionType(Node\IntersectionType $node): string { - return $this->pImplode($node->types, '&'); - } - - protected function pIdentifier(Node\Identifier $node): string { - return $node->name; - } - - protected function pVarLikeIdentifier(Node\VarLikeIdentifier $node): string { - return '$' . $node->name; - } - - protected function pAttribute(Node\Attribute $node): string { - return $this->p($node->name) - . ($node->args ? '(' . $this->pCommaSeparated($node->args) . ')' : ''); - } - - protected function pAttributeGroup(Node\AttributeGroup $node): string { - return '#[' . $this->pCommaSeparated($node->attrs) . ']'; - } - - // Names - - protected function pName(Name $node): string { - return $node->name; - } - - protected function pName_FullyQualified(Name\FullyQualified $node): string { - return '\\' . $node->name; - } - - protected function pName_Relative(Name\Relative $node): string { - return 'namespace\\' . $node->name; - } - - // Magic Constants - - protected function pScalar_MagicConst_Class(MagicConst\Class_ $node): string { - return '__CLASS__'; - } - - protected function pScalar_MagicConst_Dir(MagicConst\Dir $node): string { - return '__DIR__'; - } - - protected function pScalar_MagicConst_File(MagicConst\File $node): string { - return '__FILE__'; - } - - protected function pScalar_MagicConst_Function(MagicConst\Function_ $node): string { - return '__FUNCTION__'; - } - - protected function pScalar_MagicConst_Line(MagicConst\Line $node): string { - return '__LINE__'; - } - - protected function pScalar_MagicConst_Method(MagicConst\Method $node): string { - return '__METHOD__'; - } - - protected function pScalar_MagicConst_Namespace(MagicConst\Namespace_ $node): string { - return '__NAMESPACE__'; - } - - protected function pScalar_MagicConst_Trait(MagicConst\Trait_ $node): string { - return '__TRAIT__'; - } - - protected function pScalar_MagicConst_Property(MagicConst\Property $node): string { - return '__PROPERTY__'; - } - - // Scalars - - private function indentString(string $str): string { - return str_replace("\n", $this->nl, $str); - } - - protected function pScalar_String(Scalar\String_ $node): string { - $kind = $node->getAttribute('kind', Scalar\String_::KIND_SINGLE_QUOTED); - switch ($kind) { - case Scalar\String_::KIND_NOWDOC: - $label = $node->getAttribute('docLabel'); - if ($label && !$this->containsEndLabel($node->value, $label)) { - $shouldIdent = $this->phpVersion->supportsFlexibleHeredoc(); - $nl = $shouldIdent ? $this->nl : $this->newline; - if ($node->value === '') { - return "<<<'$label'$nl$label{$this->docStringEndToken}"; - } - - // Make sure trailing \r is not combined with following \n into CRLF. - if ($node->value[strlen($node->value) - 1] !== "\r") { - $value = $shouldIdent ? $this->indentString($node->value) : $node->value; - return "<<<'$label'$nl$value$nl$label{$this->docStringEndToken}"; - } - } - /* break missing intentionally */ - // no break - case Scalar\String_::KIND_SINGLE_QUOTED: - return $this->pSingleQuotedString($node->value); - case Scalar\String_::KIND_HEREDOC: - $label = $node->getAttribute('docLabel'); - $escaped = $this->escapeString($node->value, null); - if ($label && !$this->containsEndLabel($escaped, $label)) { - $nl = $this->phpVersion->supportsFlexibleHeredoc() ? $this->nl : $this->newline; - if ($escaped === '') { - return "<<<$label$nl$label{$this->docStringEndToken}"; - } - - return "<<<$label$nl$escaped$nl$label{$this->docStringEndToken}"; - } - /* break missing intentionally */ - // no break - case Scalar\String_::KIND_DOUBLE_QUOTED: - return '"' . $this->escapeString($node->value, '"') . '"'; - } - throw new \Exception('Invalid string kind'); - } - - protected function pScalar_InterpolatedString(Scalar\InterpolatedString $node): string { - if ($node->getAttribute('kind') === Scalar\String_::KIND_HEREDOC) { - $label = $node->getAttribute('docLabel'); - if ($label && !$this->encapsedContainsEndLabel($node->parts, $label)) { - $nl = $this->phpVersion->supportsFlexibleHeredoc() ? $this->nl : $this->newline; - if (count($node->parts) === 1 - && $node->parts[0] instanceof Node\InterpolatedStringPart - && $node->parts[0]->value === '' - ) { - return "<<<$label$nl$label{$this->docStringEndToken}"; - } - - return "<<<$label$nl" . $this->pEncapsList($node->parts, null) - . "$nl$label{$this->docStringEndToken}"; - } - } - return '"' . $this->pEncapsList($node->parts, '"') . '"'; - } - - protected function pScalar_Int(Scalar\Int_ $node): string { - if ($node->value === -\PHP_INT_MAX - 1) { - // PHP_INT_MIN cannot be represented as a literal, - // because the sign is not part of the literal - return '(-' . \PHP_INT_MAX . '-1)'; - } - - $kind = $node->getAttribute('kind', Scalar\Int_::KIND_DEC); - if (Scalar\Int_::KIND_DEC === $kind) { - return (string) $node->value; - } - - if ($node->value < 0) { - $sign = '-'; - $str = (string) -$node->value; - } else { - $sign = ''; - $str = (string) $node->value; - } - switch ($kind) { - case Scalar\Int_::KIND_BIN: - return $sign . '0b' . base_convert($str, 10, 2); - case Scalar\Int_::KIND_OCT: - return $sign . '0' . base_convert($str, 10, 8); - case Scalar\Int_::KIND_HEX: - return $sign . '0x' . base_convert($str, 10, 16); - } - throw new \Exception('Invalid number kind'); - } - - protected function pScalar_Float(Scalar\Float_ $node): string { - if (!is_finite($node->value)) { - if ($node->value === \INF) { - return '1.0E+1000'; - } - if ($node->value === -\INF) { - return '-1.0E+1000'; - } else { - return '\NAN'; - } - } - - // Try to find a short full-precision representation - $stringValue = sprintf('%.16G', $node->value); - if ($node->value !== (float) $stringValue) { - $stringValue = sprintf('%.17G', $node->value); - } - - // %G is locale dependent and there exists no locale-independent alternative. We don't want - // mess with switching locales here, so let's assume that a comma is the only non-standard - // decimal separator we may encounter... - $stringValue = str_replace(',', '.', $stringValue); - - // ensure that number is really printed as float - return preg_match('/^-?[0-9]+$/', $stringValue) ? $stringValue . '.0' : $stringValue; - } - - // Assignments - - protected function pExpr_Assign(Expr\Assign $node, int $precedence, int $lhsPrecedence): string { - return $this->pPrefixOp(Expr\Assign::class, $this->p($node->var) . ' = ', $node->expr, $precedence, $lhsPrecedence); - } - - protected function pExpr_AssignRef(Expr\AssignRef $node, int $precedence, int $lhsPrecedence): string { - return $this->pPrefixOp(Expr\AssignRef::class, $this->p($node->var) . ' =& ', $node->expr, $precedence, $lhsPrecedence); - } - - protected function pExpr_AssignOp_Plus(AssignOp\Plus $node, int $precedence, int $lhsPrecedence): string { - return $this->pPrefixOp(AssignOp\Plus::class, $this->p($node->var) . ' += ', $node->expr, $precedence, $lhsPrecedence); - } - - protected function pExpr_AssignOp_Minus(AssignOp\Minus $node, int $precedence, int $lhsPrecedence): string { - return $this->pPrefixOp(AssignOp\Minus::class, $this->p($node->var) . ' -= ', $node->expr, $precedence, $lhsPrecedence); - } - - protected function pExpr_AssignOp_Mul(AssignOp\Mul $node, int $precedence, int $lhsPrecedence): string { - return $this->pPrefixOp(AssignOp\Mul::class, $this->p($node->var) . ' *= ', $node->expr, $precedence, $lhsPrecedence); - } - - protected function pExpr_AssignOp_Div(AssignOp\Div $node, int $precedence, int $lhsPrecedence): string { - return $this->pPrefixOp(AssignOp\Div::class, $this->p($node->var) . ' /= ', $node->expr, $precedence, $lhsPrecedence); - } - - protected function pExpr_AssignOp_Concat(AssignOp\Concat $node, int $precedence, int $lhsPrecedence): string { - return $this->pPrefixOp(AssignOp\Concat::class, $this->p($node->var) . ' .= ', $node->expr, $precedence, $lhsPrecedence); - } - - protected function pExpr_AssignOp_Mod(AssignOp\Mod $node, int $precedence, int $lhsPrecedence): string { - return $this->pPrefixOp(AssignOp\Mod::class, $this->p($node->var) . ' %= ', $node->expr, $precedence, $lhsPrecedence); - } - - protected function pExpr_AssignOp_BitwiseAnd(AssignOp\BitwiseAnd $node, int $precedence, int $lhsPrecedence): string { - return $this->pPrefixOp(AssignOp\BitwiseAnd::class, $this->p($node->var) . ' &= ', $node->expr, $precedence, $lhsPrecedence); - } - - protected function pExpr_AssignOp_BitwiseOr(AssignOp\BitwiseOr $node, int $precedence, int $lhsPrecedence): string { - return $this->pPrefixOp(AssignOp\BitwiseOr::class, $this->p($node->var) . ' |= ', $node->expr, $precedence, $lhsPrecedence); - } - - protected function pExpr_AssignOp_BitwiseXor(AssignOp\BitwiseXor $node, int $precedence, int $lhsPrecedence): string { - return $this->pPrefixOp(AssignOp\BitwiseXor::class, $this->p($node->var) . ' ^= ', $node->expr, $precedence, $lhsPrecedence); - } - - protected function pExpr_AssignOp_ShiftLeft(AssignOp\ShiftLeft $node, int $precedence, int $lhsPrecedence): string { - return $this->pPrefixOp(AssignOp\ShiftLeft::class, $this->p($node->var) . ' <<= ', $node->expr, $precedence, $lhsPrecedence); - } - - protected function pExpr_AssignOp_ShiftRight(AssignOp\ShiftRight $node, int $precedence, int $lhsPrecedence): string { - return $this->pPrefixOp(AssignOp\ShiftRight::class, $this->p($node->var) . ' >>= ', $node->expr, $precedence, $lhsPrecedence); - } - - protected function pExpr_AssignOp_Pow(AssignOp\Pow $node, int $precedence, int $lhsPrecedence): string { - return $this->pPrefixOp(AssignOp\Pow::class, $this->p($node->var) . ' **= ', $node->expr, $precedence, $lhsPrecedence); - } - - protected function pExpr_AssignOp_Coalesce(AssignOp\Coalesce $node, int $precedence, int $lhsPrecedence): string { - return $this->pPrefixOp(AssignOp\Coalesce::class, $this->p($node->var) . ' ??= ', $node->expr, $precedence, $lhsPrecedence); - } - - // Binary expressions - - protected function pExpr_BinaryOp_Plus(BinaryOp\Plus $node, int $precedence, int $lhsPrecedence): string { - return $this->pInfixOp(BinaryOp\Plus::class, $node->left, ' + ', $node->right, $precedence, $lhsPrecedence); - } - - protected function pExpr_BinaryOp_Minus(BinaryOp\Minus $node, int $precedence, int $lhsPrecedence): string { - return $this->pInfixOp(BinaryOp\Minus::class, $node->left, ' - ', $node->right, $precedence, $lhsPrecedence); - } - - protected function pExpr_BinaryOp_Mul(BinaryOp\Mul $node, int $precedence, int $lhsPrecedence): string { - return $this->pInfixOp(BinaryOp\Mul::class, $node->left, ' * ', $node->right, $precedence, $lhsPrecedence); - } - - protected function pExpr_BinaryOp_Div(BinaryOp\Div $node, int $precedence, int $lhsPrecedence): string { - return $this->pInfixOp(BinaryOp\Div::class, $node->left, ' / ', $node->right, $precedence, $lhsPrecedence); - } - - protected function pExpr_BinaryOp_Concat(BinaryOp\Concat $node, int $precedence, int $lhsPrecedence): string { - return $this->pInfixOp(BinaryOp\Concat::class, $node->left, ' . ', $node->right, $precedence, $lhsPrecedence); - } - - protected function pExpr_BinaryOp_Mod(BinaryOp\Mod $node, int $precedence, int $lhsPrecedence): string { - return $this->pInfixOp(BinaryOp\Mod::class, $node->left, ' % ', $node->right, $precedence, $lhsPrecedence); - } - - protected function pExpr_BinaryOp_BooleanAnd(BinaryOp\BooleanAnd $node, int $precedence, int $lhsPrecedence): string { - return $this->pInfixOp(BinaryOp\BooleanAnd::class, $node->left, ' && ', $node->right, $precedence, $lhsPrecedence); - } - - protected function pExpr_BinaryOp_BooleanOr(BinaryOp\BooleanOr $node, int $precedence, int $lhsPrecedence): string { - return $this->pInfixOp(BinaryOp\BooleanOr::class, $node->left, ' || ', $node->right, $precedence, $lhsPrecedence); - } - - protected function pExpr_BinaryOp_BitwiseAnd(BinaryOp\BitwiseAnd $node, int $precedence, int $lhsPrecedence): string { - return $this->pInfixOp(BinaryOp\BitwiseAnd::class, $node->left, ' & ', $node->right, $precedence, $lhsPrecedence); - } - - protected function pExpr_BinaryOp_BitwiseOr(BinaryOp\BitwiseOr $node, int $precedence, int $lhsPrecedence): string { - return $this->pInfixOp(BinaryOp\BitwiseOr::class, $node->left, ' | ', $node->right, $precedence, $lhsPrecedence); - } - - protected function pExpr_BinaryOp_BitwiseXor(BinaryOp\BitwiseXor $node, int $precedence, int $lhsPrecedence): string { - return $this->pInfixOp(BinaryOp\BitwiseXor::class, $node->left, ' ^ ', $node->right, $precedence, $lhsPrecedence); - } - - protected function pExpr_BinaryOp_ShiftLeft(BinaryOp\ShiftLeft $node, int $precedence, int $lhsPrecedence): string { - return $this->pInfixOp(BinaryOp\ShiftLeft::class, $node->left, ' << ', $node->right, $precedence, $lhsPrecedence); - } - - protected function pExpr_BinaryOp_ShiftRight(BinaryOp\ShiftRight $node, int $precedence, int $lhsPrecedence): string { - return $this->pInfixOp(BinaryOp\ShiftRight::class, $node->left, ' >> ', $node->right, $precedence, $lhsPrecedence); - } - - protected function pExpr_BinaryOp_Pow(BinaryOp\Pow $node, int $precedence, int $lhsPrecedence): string { - return $this->pInfixOp(BinaryOp\Pow::class, $node->left, ' ** ', $node->right, $precedence, $lhsPrecedence); - } - - protected function pExpr_BinaryOp_LogicalAnd(BinaryOp\LogicalAnd $node, int $precedence, int $lhsPrecedence): string { - return $this->pInfixOp(BinaryOp\LogicalAnd::class, $node->left, ' and ', $node->right, $precedence, $lhsPrecedence); - } - - protected function pExpr_BinaryOp_LogicalOr(BinaryOp\LogicalOr $node, int $precedence, int $lhsPrecedence): string { - return $this->pInfixOp(BinaryOp\LogicalOr::class, $node->left, ' or ', $node->right, $precedence, $lhsPrecedence); - } - - protected function pExpr_BinaryOp_LogicalXor(BinaryOp\LogicalXor $node, int $precedence, int $lhsPrecedence): string { - return $this->pInfixOp(BinaryOp\LogicalXor::class, $node->left, ' xor ', $node->right, $precedence, $lhsPrecedence); - } - - protected function pExpr_BinaryOp_Equal(BinaryOp\Equal $node, int $precedence, int $lhsPrecedence): string { - return $this->pInfixOp(BinaryOp\Equal::class, $node->left, ' == ', $node->right, $precedence, $lhsPrecedence); - } - - protected function pExpr_BinaryOp_NotEqual(BinaryOp\NotEqual $node, int $precedence, int $lhsPrecedence): string { - return $this->pInfixOp(BinaryOp\NotEqual::class, $node->left, ' != ', $node->right, $precedence, $lhsPrecedence); - } - - protected function pExpr_BinaryOp_Identical(BinaryOp\Identical $node, int $precedence, int $lhsPrecedence): string { - return $this->pInfixOp(BinaryOp\Identical::class, $node->left, ' === ', $node->right, $precedence, $lhsPrecedence); - } - - protected function pExpr_BinaryOp_NotIdentical(BinaryOp\NotIdentical $node, int $precedence, int $lhsPrecedence): string { - return $this->pInfixOp(BinaryOp\NotIdentical::class, $node->left, ' !== ', $node->right, $precedence, $lhsPrecedence); - } - - protected function pExpr_BinaryOp_Spaceship(BinaryOp\Spaceship $node, int $precedence, int $lhsPrecedence): string { - return $this->pInfixOp(BinaryOp\Spaceship::class, $node->left, ' <=> ', $node->right, $precedence, $lhsPrecedence); - } - - protected function pExpr_BinaryOp_Greater(BinaryOp\Greater $node, int $precedence, int $lhsPrecedence): string { - return $this->pInfixOp(BinaryOp\Greater::class, $node->left, ' > ', $node->right, $precedence, $lhsPrecedence); - } - - protected function pExpr_BinaryOp_GreaterOrEqual(BinaryOp\GreaterOrEqual $node, int $precedence, int $lhsPrecedence): string { - return $this->pInfixOp(BinaryOp\GreaterOrEqual::class, $node->left, ' >= ', $node->right, $precedence, $lhsPrecedence); - } - - protected function pExpr_BinaryOp_Smaller(BinaryOp\Smaller $node, int $precedence, int $lhsPrecedence): string { - return $this->pInfixOp(BinaryOp\Smaller::class, $node->left, ' < ', $node->right, $precedence, $lhsPrecedence); - } - - protected function pExpr_BinaryOp_SmallerOrEqual(BinaryOp\SmallerOrEqual $node, int $precedence, int $lhsPrecedence): string { - return $this->pInfixOp(BinaryOp\SmallerOrEqual::class, $node->left, ' <= ', $node->right, $precedence, $lhsPrecedence); - } - - protected function pExpr_BinaryOp_Coalesce(BinaryOp\Coalesce $node, int $precedence, int $lhsPrecedence): string { - return $this->pInfixOp(BinaryOp\Coalesce::class, $node->left, ' ?? ', $node->right, $precedence, $lhsPrecedence); - } - - protected function pExpr_Instanceof(Expr\Instanceof_ $node, int $precedence, int $lhsPrecedence): string { - return $this->pPostfixOp( - Expr\Instanceof_::class, $node->expr, - ' instanceof ' . $this->pNewOperand($node->class), - $precedence, $lhsPrecedence); - } - - // Unary expressions - - protected function pExpr_BooleanNot(Expr\BooleanNot $node, int $precedence, int $lhsPrecedence): string { - return $this->pPrefixOp(Expr\BooleanNot::class, '!', $node->expr, $precedence, $lhsPrecedence); - } - - protected function pExpr_BitwiseNot(Expr\BitwiseNot $node, int $precedence, int $lhsPrecedence): string { - return $this->pPrefixOp(Expr\BitwiseNot::class, '~', $node->expr, $precedence, $lhsPrecedence); - } - - protected function pExpr_UnaryMinus(Expr\UnaryMinus $node, int $precedence, int $lhsPrecedence): string { - return $this->pPrefixOp(Expr\UnaryMinus::class, '-', $node->expr, $precedence, $lhsPrecedence); - } - - protected function pExpr_UnaryPlus(Expr\UnaryPlus $node, int $precedence, int $lhsPrecedence): string { - return $this->pPrefixOp(Expr\UnaryPlus::class, '+', $node->expr, $precedence, $lhsPrecedence); - } - - protected function pExpr_PreInc(Expr\PreInc $node): string { - return '++' . $this->p($node->var); - } - - protected function pExpr_PreDec(Expr\PreDec $node): string { - return '--' . $this->p($node->var); - } - - protected function pExpr_PostInc(Expr\PostInc $node): string { - return $this->p($node->var) . '++'; - } - - protected function pExpr_PostDec(Expr\PostDec $node): string { - return $this->p($node->var) . '--'; - } - - protected function pExpr_ErrorSuppress(Expr\ErrorSuppress $node, int $precedence, int $lhsPrecedence): string { - return $this->pPrefixOp(Expr\ErrorSuppress::class, '@', $node->expr, $precedence, $lhsPrecedence); - } - - protected function pExpr_YieldFrom(Expr\YieldFrom $node, int $precedence, int $lhsPrecedence): string { - return $this->pPrefixOp(Expr\YieldFrom::class, 'yield from ', $node->expr, $precedence, $lhsPrecedence); - } - - protected function pExpr_Print(Expr\Print_ $node, int $precedence, int $lhsPrecedence): string { - return $this->pPrefixOp(Expr\Print_::class, 'print ', $node->expr, $precedence, $lhsPrecedence); - } - - // Casts - - protected function pExpr_Cast_Int(Cast\Int_ $node, int $precedence, int $lhsPrecedence): string { - return $this->pPrefixOp(Cast\Int_::class, '(int) ', $node->expr, $precedence, $lhsPrecedence); - } - - protected function pExpr_Cast_Double(Cast\Double $node, int $precedence, int $lhsPrecedence): string { - $kind = $node->getAttribute('kind', Cast\Double::KIND_DOUBLE); - if ($kind === Cast\Double::KIND_DOUBLE) { - $cast = '(double)'; - } elseif ($kind === Cast\Double::KIND_FLOAT) { - $cast = '(float)'; - } else { - assert($kind === Cast\Double::KIND_REAL); - $cast = '(real)'; - } - return $this->pPrefixOp(Cast\Double::class, $cast . ' ', $node->expr, $precedence, $lhsPrecedence); - } - - protected function pExpr_Cast_String(Cast\String_ $node, int $precedence, int $lhsPrecedence): string { - return $this->pPrefixOp(Cast\String_::class, '(string) ', $node->expr, $precedence, $lhsPrecedence); - } - - protected function pExpr_Cast_Array(Cast\Array_ $node, int $precedence, int $lhsPrecedence): string { - return $this->pPrefixOp(Cast\Array_::class, '(array) ', $node->expr, $precedence, $lhsPrecedence); - } - - protected function pExpr_Cast_Object(Cast\Object_ $node, int $precedence, int $lhsPrecedence): string { - return $this->pPrefixOp(Cast\Object_::class, '(object) ', $node->expr, $precedence, $lhsPrecedence); - } - - protected function pExpr_Cast_Bool(Cast\Bool_ $node, int $precedence, int $lhsPrecedence): string { - return $this->pPrefixOp(Cast\Bool_::class, '(bool) ', $node->expr, $precedence, $lhsPrecedence); - } - - protected function pExpr_Cast_Unset(Cast\Unset_ $node, int $precedence, int $lhsPrecedence): string { - return $this->pPrefixOp(Cast\Unset_::class, '(unset) ', $node->expr, $precedence, $lhsPrecedence); - } - - // Function calls and similar constructs - - protected function pExpr_FuncCall(Expr\FuncCall $node): string { - return $this->pCallLhs($node->name) - . '(' . $this->pMaybeMultiline($node->args) . ')'; - } - - protected function pExpr_MethodCall(Expr\MethodCall $node): string { - return $this->pDereferenceLhs($node->var) . '->' . $this->pObjectProperty($node->name) - . '(' . $this->pMaybeMultiline($node->args) . ')'; - } - - protected function pExpr_NullsafeMethodCall(Expr\NullsafeMethodCall $node): string { - return $this->pDereferenceLhs($node->var) . '?->' . $this->pObjectProperty($node->name) - . '(' . $this->pMaybeMultiline($node->args) . ')'; - } - - protected function pExpr_StaticCall(Expr\StaticCall $node): string { - return $this->pStaticDereferenceLhs($node->class) . '::' - . ($node->name instanceof Expr - ? ($node->name instanceof Expr\Variable - ? $this->p($node->name) - : '{' . $this->p($node->name) . '}') - : $node->name) - . '(' . $this->pMaybeMultiline($node->args) . ')'; - } - - protected function pExpr_Empty(Expr\Empty_ $node): string { - return 'empty(' . $this->p($node->expr) . ')'; - } - - protected function pExpr_Isset(Expr\Isset_ $node): string { - return 'isset(' . $this->pCommaSeparated($node->vars) . ')'; - } - - protected function pExpr_Eval(Expr\Eval_ $node): string { - return 'eval(' . $this->p($node->expr) . ')'; - } - - protected function pExpr_Include(Expr\Include_ $node, int $precedence, int $lhsPrecedence): string { - static $map = [ - Expr\Include_::TYPE_INCLUDE => 'include', - Expr\Include_::TYPE_INCLUDE_ONCE => 'include_once', - Expr\Include_::TYPE_REQUIRE => 'require', - Expr\Include_::TYPE_REQUIRE_ONCE => 'require_once', - ]; - - return $this->pPrefixOp(Expr\Include_::class, $map[$node->type] . ' ', $node->expr, $precedence, $lhsPrecedence); - } - - protected function pExpr_List(Expr\List_ $node): string { - $syntax = $node->getAttribute('kind', - $this->phpVersion->supportsShortArrayDestructuring() ? Expr\List_::KIND_ARRAY : Expr\List_::KIND_LIST); - if ($syntax === Expr\List_::KIND_ARRAY) { - return '[' . $this->pMaybeMultiline($node->items, true) . ']'; - } else { - return 'list(' . $this->pMaybeMultiline($node->items, true) . ')'; - } - } - - // Other - - protected function pExpr_Error(Expr\Error $node): string { - throw new \LogicException('Cannot pretty-print AST with Error nodes'); - } - - protected function pExpr_Variable(Expr\Variable $node): string { - if ($node->name instanceof Expr) { - return '${' . $this->p($node->name) . '}'; - } else { - return '$' . $node->name; - } - } - - protected function pExpr_Array(Expr\Array_ $node): string { - $syntax = $node->getAttribute('kind', - $this->shortArraySyntax ? Expr\Array_::KIND_SHORT : Expr\Array_::KIND_LONG); - if ($syntax === Expr\Array_::KIND_SHORT) { - return '[' . $this->pMaybeMultiline($node->items, true) . ']'; - } else { - return 'array(' . $this->pMaybeMultiline($node->items, true) . ')'; - } - } - - protected function pKey(?Node $node): string { - if ($node === null) { - return ''; - } - - // => is not really an operator and does not typically participate in precedence resolution. - // However, there is an exception if yield expressions with keys are involved: - // [yield $a => $b] is interpreted as [(yield $a => $b)], so we need to ensure that - // [(yield $a) => $b] is printed with parentheses. We approximate this by lowering the LHS - // precedence to that of yield (which will also print unnecessary parentheses for rare low - // precedence unary operators like include). - $yieldPrecedence = $this->precedenceMap[Expr\Yield_::class][0]; - return $this->p($node, self::MAX_PRECEDENCE, $yieldPrecedence) . ' => '; - } - - protected function pArrayItem(Node\ArrayItem $node): string { - return $this->pKey($node->key) - . ($node->byRef ? '&' : '') - . ($node->unpack ? '...' : '') - . $this->p($node->value); - } - - protected function pExpr_ArrayDimFetch(Expr\ArrayDimFetch $node): string { - return $this->pDereferenceLhs($node->var) - . '[' . (null !== $node->dim ? $this->p($node->dim) : '') . ']'; - } - - protected function pExpr_ConstFetch(Expr\ConstFetch $node): string { - return $this->p($node->name); - } - - protected function pExpr_ClassConstFetch(Expr\ClassConstFetch $node): string { - return $this->pStaticDereferenceLhs($node->class) . '::' . $this->pObjectProperty($node->name); - } - - protected function pExpr_PropertyFetch(Expr\PropertyFetch $node): string { - return $this->pDereferenceLhs($node->var) . '->' . $this->pObjectProperty($node->name); - } - - protected function pExpr_NullsafePropertyFetch(Expr\NullsafePropertyFetch $node): string { - return $this->pDereferenceLhs($node->var) . '?->' . $this->pObjectProperty($node->name); - } - - protected function pExpr_StaticPropertyFetch(Expr\StaticPropertyFetch $node): string { - return $this->pStaticDereferenceLhs($node->class) . '::$' . $this->pObjectProperty($node->name); - } - - protected function pExpr_ShellExec(Expr\ShellExec $node): string { - return '`' . $this->pEncapsList($node->parts, '`') . '`'; - } - - protected function pExpr_Closure(Expr\Closure $node): string { - return $this->pAttrGroups($node->attrGroups, true) - . $this->pStatic($node->static) - . 'function ' . ($node->byRef ? '&' : '') - . '(' . $this->pMaybeMultiline($node->params, $this->phpVersion->supportsTrailingCommaInParamList()) . ')' - . (!empty($node->uses) ? ' use (' . $this->pCommaSeparated($node->uses) . ')' : '') - . (null !== $node->returnType ? ': ' . $this->p($node->returnType) : '') - . ' {' . $this->pStmts($node->stmts) . $this->nl . '}'; - } - - protected function pExpr_Match(Expr\Match_ $node): string { - return 'match (' . $this->p($node->cond) . ') {' - . $this->pCommaSeparatedMultiline($node->arms, true) - . $this->nl - . '}'; - } - - protected function pMatchArm(Node\MatchArm $node): string { - $result = ''; - if ($node->conds) { - for ($i = 0, $c = \count($node->conds); $i + 1 < $c; $i++) { - $result .= $this->p($node->conds[$i]) . ', '; - } - $result .= $this->pKey($node->conds[$i]); - } else { - $result = 'default => '; - } - return $result . $this->p($node->body); - } - - protected function pExpr_ArrowFunction(Expr\ArrowFunction $node, int $precedence, int $lhsPrecedence): string { - return $this->pPrefixOp( - Expr\ArrowFunction::class, - $this->pAttrGroups($node->attrGroups, true) - . $this->pStatic($node->static) - . 'fn' . ($node->byRef ? '&' : '') - . '(' . $this->pMaybeMultiline($node->params, $this->phpVersion->supportsTrailingCommaInParamList()) . ')' - . (null !== $node->returnType ? ': ' . $this->p($node->returnType) : '') - . ' => ', - $node->expr, $precedence, $lhsPrecedence); - } - - protected function pClosureUse(Node\ClosureUse $node): string { - return ($node->byRef ? '&' : '') . $this->p($node->var); - } - - protected function pExpr_New(Expr\New_ $node): string { - if ($node->class instanceof Stmt\Class_) { - $args = $node->args ? '(' . $this->pMaybeMultiline($node->args) . ')' : ''; - return 'new ' . $this->pClassCommon($node->class, $args); - } - return 'new ' . $this->pNewOperand($node->class) - . '(' . $this->pMaybeMultiline($node->args) . ')'; - } - - protected function pExpr_Clone(Expr\Clone_ $node, int $precedence, int $lhsPrecedence): string { - return $this->pPrefixOp(Expr\Clone_::class, 'clone ', $node->expr, $precedence, $lhsPrecedence); - } - - protected function pExpr_Ternary(Expr\Ternary $node, int $precedence, int $lhsPrecedence): string { - // a bit of cheating: we treat the ternary as a binary op where the ?...: part is the operator. - // this is okay because the part between ? and : never needs parentheses. - return $this->pInfixOp(Expr\Ternary::class, - $node->cond, ' ?' . (null !== $node->if ? ' ' . $this->p($node->if) . ' ' : '') . ': ', $node->else, - $precedence, $lhsPrecedence - ); - } - - protected function pExpr_Exit(Expr\Exit_ $node): string { - $kind = $node->getAttribute('kind', Expr\Exit_::KIND_DIE); - return ($kind === Expr\Exit_::KIND_EXIT ? 'exit' : 'die') - . (null !== $node->expr ? '(' . $this->p($node->expr) . ')' : ''); - } - - protected function pExpr_Throw(Expr\Throw_ $node, int $precedence, int $lhsPrecedence): string { - return $this->pPrefixOp(Expr\Throw_::class, 'throw ', $node->expr, $precedence, $lhsPrecedence); - } - - protected function pExpr_Yield(Expr\Yield_ $node, int $precedence, int $lhsPrecedence): string { - if ($node->value === null) { - $opPrecedence = $this->precedenceMap[Expr\Yield_::class][0]; - return $opPrecedence >= $lhsPrecedence ? '(yield)' : 'yield'; - } else { - if (!$this->phpVersion->supportsYieldWithoutParentheses()) { - return '(yield ' . $this->pKey($node->key) . $this->p($node->value) . ')'; - } - return $this->pPrefixOp( - Expr\Yield_::class, 'yield ' . $this->pKey($node->key), - $node->value, $precedence, $lhsPrecedence); - } - } - - // Declarations - - protected function pStmt_Namespace(Stmt\Namespace_ $node): string { - if ($this->canUseSemicolonNamespaces) { - return 'namespace ' . $this->p($node->name) . ';' - . $this->nl . $this->pStmts($node->stmts, false); - } else { - return 'namespace' . (null !== $node->name ? ' ' . $this->p($node->name) : '') - . ' {' . $this->pStmts($node->stmts) . $this->nl . '}'; - } - } - - protected function pStmt_Use(Stmt\Use_ $node): string { - return 'use ' . $this->pUseType($node->type) - . $this->pCommaSeparated($node->uses) . ';'; - } - - protected function pStmt_GroupUse(Stmt\GroupUse $node): string { - return 'use ' . $this->pUseType($node->type) . $this->pName($node->prefix) - . '\{' . $this->pCommaSeparated($node->uses) . '};'; - } - - protected function pUseItem(Node\UseItem $node): string { - return $this->pUseType($node->type) . $this->p($node->name) - . (null !== $node->alias ? ' as ' . $node->alias : ''); - } - - protected function pUseType(int $type): string { - return $type === Stmt\Use_::TYPE_FUNCTION ? 'function ' - : ($type === Stmt\Use_::TYPE_CONSTANT ? 'const ' : ''); - } - - protected function pStmt_Interface(Stmt\Interface_ $node): string { - return $this->pAttrGroups($node->attrGroups) - . 'interface ' . $node->name - . (!empty($node->extends) ? ' extends ' . $this->pCommaSeparated($node->extends) : '') - . $this->nl . '{' . $this->pStmts($node->stmts) . $this->nl . '}'; - } - - protected function pStmt_Enum(Stmt\Enum_ $node): string { - return $this->pAttrGroups($node->attrGroups) - . 'enum ' . $node->name - . ($node->scalarType ? ' : ' . $this->p($node->scalarType) : '') - . (!empty($node->implements) ? ' implements ' . $this->pCommaSeparated($node->implements) : '') - . $this->nl . '{' . $this->pStmts($node->stmts) . $this->nl . '}'; - } - - protected function pStmt_Class(Stmt\Class_ $node): string { - return $this->pClassCommon($node, ' ' . $node->name); - } - - protected function pStmt_Trait(Stmt\Trait_ $node): string { - return $this->pAttrGroups($node->attrGroups) - . 'trait ' . $node->name - . $this->nl . '{' . $this->pStmts($node->stmts) . $this->nl . '}'; - } - - protected function pStmt_EnumCase(Stmt\EnumCase $node): string { - return $this->pAttrGroups($node->attrGroups) - . 'case ' . $node->name - . ($node->expr ? ' = ' . $this->p($node->expr) : '') - . ';'; - } - - protected function pStmt_TraitUse(Stmt\TraitUse $node): string { - return 'use ' . $this->pCommaSeparated($node->traits) - . (empty($node->adaptations) - ? ';' - : ' {' . $this->pStmts($node->adaptations) . $this->nl . '}'); - } - - protected function pStmt_TraitUseAdaptation_Precedence(Stmt\TraitUseAdaptation\Precedence $node): string { - return $this->p($node->trait) . '::' . $node->method - . ' insteadof ' . $this->pCommaSeparated($node->insteadof) . ';'; - } - - protected function pStmt_TraitUseAdaptation_Alias(Stmt\TraitUseAdaptation\Alias $node): string { - return (null !== $node->trait ? $this->p($node->trait) . '::' : '') - . $node->method . ' as' - . (null !== $node->newModifier ? ' ' . rtrim($this->pModifiers($node->newModifier), ' ') : '') - . (null !== $node->newName ? ' ' . $node->newName : '') - . ';'; - } - - protected function pStmt_Property(Stmt\Property $node): string { - return $this->pAttrGroups($node->attrGroups) - . (0 === $node->flags ? 'var ' : $this->pModifiers($node->flags)) - . ($node->type ? $this->p($node->type) . ' ' : '') - . $this->pCommaSeparated($node->props) - . ($node->hooks ? ' {' . $this->pStmts($node->hooks) . $this->nl . '}' : ';'); - } - - protected function pPropertyItem(Node\PropertyItem $node): string { - return '$' . $node->name - . (null !== $node->default ? ' = ' . $this->p($node->default) : ''); - } - - protected function pPropertyHook(Node\PropertyHook $node): string { - return $this->pAttrGroups($node->attrGroups) - . $this->pModifiers($node->flags) - . ($node->byRef ? '&' : '') . $node->name - . ($node->params ? '(' . $this->pMaybeMultiline($node->params, $this->phpVersion->supportsTrailingCommaInParamList()) . ')' : '') - . (\is_array($node->body) ? ' {' . $this->pStmts($node->body) . $this->nl . '}' - : ($node->body !== null ? ' => ' . $this->p($node->body) : '') . ';'); - } - - protected function pStmt_ClassMethod(Stmt\ClassMethod $node): string { - return $this->pAttrGroups($node->attrGroups) - . $this->pModifiers($node->flags) - . 'function ' . ($node->byRef ? '&' : '') . $node->name - . '(' . $this->pMaybeMultiline($node->params, $this->phpVersion->supportsTrailingCommaInParamList()) . ')' - . (null !== $node->returnType ? ': ' . $this->p($node->returnType) : '') - . (null !== $node->stmts - ? $this->nl . '{' . $this->pStmts($node->stmts) . $this->nl . '}' - : ';'); - } - - protected function pStmt_ClassConst(Stmt\ClassConst $node): string { - return $this->pAttrGroups($node->attrGroups) - . $this->pModifiers($node->flags) - . 'const ' - . (null !== $node->type ? $this->p($node->type) . ' ' : '') - . $this->pCommaSeparated($node->consts) . ';'; - } - - protected function pStmt_Function(Stmt\Function_ $node): string { - return $this->pAttrGroups($node->attrGroups) - . 'function ' . ($node->byRef ? '&' : '') . $node->name - . '(' . $this->pMaybeMultiline($node->params, $this->phpVersion->supportsTrailingCommaInParamList()) . ')' - . (null !== $node->returnType ? ': ' . $this->p($node->returnType) : '') - . $this->nl . '{' . $this->pStmts($node->stmts) . $this->nl . '}'; - } - - protected function pStmt_Const(Stmt\Const_ $node): string { - return 'const ' . $this->pCommaSeparated($node->consts) . ';'; - } - - protected function pStmt_Declare(Stmt\Declare_ $node): string { - return 'declare (' . $this->pCommaSeparated($node->declares) . ')' - . (null !== $node->stmts ? ' {' . $this->pStmts($node->stmts) . $this->nl . '}' : ';'); - } - - protected function pDeclareItem(Node\DeclareItem $node): string { - return $node->key . '=' . $this->p($node->value); - } - - // Control flow - - protected function pStmt_If(Stmt\If_ $node): string { - return 'if (' . $this->p($node->cond) . ') {' - . $this->pStmts($node->stmts) . $this->nl . '}' - . ($node->elseifs ? ' ' . $this->pImplode($node->elseifs, ' ') : '') - . (null !== $node->else ? ' ' . $this->p($node->else) : ''); - } - - protected function pStmt_ElseIf(Stmt\ElseIf_ $node): string { - return 'elseif (' . $this->p($node->cond) . ') {' - . $this->pStmts($node->stmts) . $this->nl . '}'; - } - - protected function pStmt_Else(Stmt\Else_ $node): string { - if (\count($node->stmts) === 1 && $node->stmts[0] instanceof Stmt\If_) { - // Print as "else if" rather than "else { if }" - return 'else ' . $this->p($node->stmts[0]); - } - return 'else {' . $this->pStmts($node->stmts) . $this->nl . '}'; - } - - protected function pStmt_For(Stmt\For_ $node): string { - return 'for (' - . $this->pCommaSeparated($node->init) . ';' . (!empty($node->cond) ? ' ' : '') - . $this->pCommaSeparated($node->cond) . ';' . (!empty($node->loop) ? ' ' : '') - . $this->pCommaSeparated($node->loop) - . ') {' . $this->pStmts($node->stmts) . $this->nl . '}'; - } - - protected function pStmt_Foreach(Stmt\Foreach_ $node): string { - return 'foreach (' . $this->p($node->expr) . ' as ' - . (null !== $node->keyVar ? $this->p($node->keyVar) . ' => ' : '') - . ($node->byRef ? '&' : '') . $this->p($node->valueVar) . ') {' - . $this->pStmts($node->stmts) . $this->nl . '}'; - } - - protected function pStmt_While(Stmt\While_ $node): string { - return 'while (' . $this->p($node->cond) . ') {' - . $this->pStmts($node->stmts) . $this->nl . '}'; - } - - protected function pStmt_Do(Stmt\Do_ $node): string { - return 'do {' . $this->pStmts($node->stmts) . $this->nl - . '} while (' . $this->p($node->cond) . ');'; - } - - protected function pStmt_Switch(Stmt\Switch_ $node): string { - return 'switch (' . $this->p($node->cond) . ') {' - . $this->pStmts($node->cases) . $this->nl . '}'; - } - - protected function pStmt_Case(Stmt\Case_ $node): string { - return (null !== $node->cond ? 'case ' . $this->p($node->cond) : 'default') . ':' - . $this->pStmts($node->stmts); - } - - protected function pStmt_TryCatch(Stmt\TryCatch $node): string { - return 'try {' . $this->pStmts($node->stmts) . $this->nl . '}' - . ($node->catches ? ' ' . $this->pImplode($node->catches, ' ') : '') - . ($node->finally !== null ? ' ' . $this->p($node->finally) : ''); - } - - protected function pStmt_Catch(Stmt\Catch_ $node): string { - return 'catch (' . $this->pImplode($node->types, '|') - . ($node->var !== null ? ' ' . $this->p($node->var) : '') - . ') {' . $this->pStmts($node->stmts) . $this->nl . '}'; - } - - protected function pStmt_Finally(Stmt\Finally_ $node): string { - return 'finally {' . $this->pStmts($node->stmts) . $this->nl . '}'; - } - - protected function pStmt_Break(Stmt\Break_ $node): string { - return 'break' . ($node->num !== null ? ' ' . $this->p($node->num) : '') . ';'; - } - - protected function pStmt_Continue(Stmt\Continue_ $node): string { - return 'continue' . ($node->num !== null ? ' ' . $this->p($node->num) : '') . ';'; - } - - protected function pStmt_Return(Stmt\Return_ $node): string { - return 'return' . (null !== $node->expr ? ' ' . $this->p($node->expr) : '') . ';'; - } - - protected function pStmt_Label(Stmt\Label $node): string { - return $node->name . ':'; - } - - protected function pStmt_Goto(Stmt\Goto_ $node): string { - return 'goto ' . $node->name . ';'; - } - - // Other - - protected function pStmt_Expression(Stmt\Expression $node): string { - return $this->p($node->expr) . ';'; - } - - protected function pStmt_Echo(Stmt\Echo_ $node): string { - return 'echo ' . $this->pCommaSeparated($node->exprs) . ';'; - } - - protected function pStmt_Static(Stmt\Static_ $node): string { - return 'static ' . $this->pCommaSeparated($node->vars) . ';'; - } - - protected function pStmt_Global(Stmt\Global_ $node): string { - return 'global ' . $this->pCommaSeparated($node->vars) . ';'; - } - - protected function pStaticVar(Node\StaticVar $node): string { - return $this->p($node->var) - . (null !== $node->default ? ' = ' . $this->p($node->default) : ''); - } - - protected function pStmt_Unset(Stmt\Unset_ $node): string { - return 'unset(' . $this->pCommaSeparated($node->vars) . ');'; - } - - protected function pStmt_InlineHTML(Stmt\InlineHTML $node): string { - $newline = $node->getAttribute('hasLeadingNewline', true) ? $this->newline : ''; - return '?>' . $newline . $node->value . 'remaining; - } - - protected function pStmt_Nop(Stmt\Nop $node): string { - return ''; - } - - protected function pStmt_Block(Stmt\Block $node): string { - return '{' . $this->pStmts($node->stmts) . $this->nl . '}'; - } - - // Helpers - - protected function pClassCommon(Stmt\Class_ $node, string $afterClassToken): string { - return $this->pAttrGroups($node->attrGroups, $node->name === null) - . $this->pModifiers($node->flags) - . 'class' . $afterClassToken - . (null !== $node->extends ? ' extends ' . $this->p($node->extends) : '') - . (!empty($node->implements) ? ' implements ' . $this->pCommaSeparated($node->implements) : '') - . $this->nl . '{' . $this->pStmts($node->stmts) . $this->nl . '}'; - } - - protected function pObjectProperty(Node $node): string { - if ($node instanceof Expr) { - return '{' . $this->p($node) . '}'; - } else { - assert($node instanceof Node\Identifier); - return $node->name; - } - } - - /** @param (Expr|Node\InterpolatedStringPart)[] $encapsList */ - protected function pEncapsList(array $encapsList, ?string $quote): string { - $return = ''; - foreach ($encapsList as $element) { - if ($element instanceof Node\InterpolatedStringPart) { - $return .= $this->escapeString($element->value, $quote); - } else { - $return .= '{' . $this->p($element) . '}'; - } - } - - return $return; - } - - protected function pSingleQuotedString(string $string): string { - // It is idiomatic to only escape backslashes when necessary, i.e. when followed by ', \ or - // the end of the string ('Foo\Bar' instead of 'Foo\\Bar'). However, we also don't want to - // produce an odd number of backslashes, so '\\\\a' should not get rendered as '\\\a', even - // though that would be legal. - $regex = '/\'|\\\\(?=[\'\\\\]|$)|(?<=\\\\)\\\\/'; - return '\'' . preg_replace($regex, '\\\\$0', $string) . '\''; - } - - protected function escapeString(string $string, ?string $quote): string { - if (null === $quote) { - // For doc strings, don't escape newlines - $escaped = addcslashes($string, "\t\f\v$\\"); - // But do escape isolated \r. Combined with the terminating newline, it might get - // interpreted as \r\n and dropped from the string contents. - $escaped = preg_replace('/\r(?!\n)/', '\\r', $escaped); - if ($this->phpVersion->supportsFlexibleHeredoc()) { - $escaped = $this->indentString($escaped); - } - } else { - $escaped = addcslashes($string, "\n\r\t\f\v$" . $quote . "\\"); - } - - // Escape control characters and non-UTF-8 characters. - // Regex based on https://stackoverflow.com/a/11709412/385378. - $regex = '/( - [\x00-\x08\x0E-\x1F] # Control characters - | [\xC0-\xC1] # Invalid UTF-8 Bytes - | [\xF5-\xFF] # Invalid UTF-8 Bytes - | \xE0(?=[\x80-\x9F]) # Overlong encoding of prior code point - | \xF0(?=[\x80-\x8F]) # Overlong encoding of prior code point - | [\xC2-\xDF](?![\x80-\xBF]) # Invalid UTF-8 Sequence Start - | [\xE0-\xEF](?![\x80-\xBF]{2}) # Invalid UTF-8 Sequence Start - | [\xF0-\xF4](?![\x80-\xBF]{3}) # Invalid UTF-8 Sequence Start - | (?<=[\x00-\x7F\xF5-\xFF])[\x80-\xBF] # Invalid UTF-8 Sequence Middle - | (? $part) { - if ($part instanceof Node\InterpolatedStringPart - && $this->containsEndLabel($this->escapeString($part->value, null), $label, $i === 0) - ) { - return true; - } - } - return false; - } - - protected function pDereferenceLhs(Node $node): string { - if (!$this->dereferenceLhsRequiresParens($node)) { - return $this->p($node); - } else { - return '(' . $this->p($node) . ')'; - } - } - - protected function pStaticDereferenceLhs(Node $node): string { - if (!$this->staticDereferenceLhsRequiresParens($node)) { - return $this->p($node); - } else { - return '(' . $this->p($node) . ')'; - } - } - - protected function pCallLhs(Node $node): string { - if (!$this->callLhsRequiresParens($node)) { - return $this->p($node); - } else { - return '(' . $this->p($node) . ')'; - } - } - - protected function pNewOperand(Node $node): string { - if (!$this->newOperandRequiresParens($node)) { - return $this->p($node); - } else { - return '(' . $this->p($node) . ')'; - } - } - - /** - * @param Node[] $nodes - */ - protected function hasNodeWithComments(array $nodes): bool { - foreach ($nodes as $node) { - if ($node && $node->getComments()) { - return true; - } - } - return false; - } - - /** @param Node[] $nodes */ - protected function pMaybeMultiline(array $nodes, bool $trailingComma = false): string { - if (!$this->hasNodeWithComments($nodes)) { - return $this->pCommaSeparated($nodes); - } else { - return $this->pCommaSeparatedMultiline($nodes, $trailingComma) . $this->nl; - } - } - - /** @param Node\AttributeGroup[] $nodes */ - protected function pAttrGroups(array $nodes, bool $inline = false): string { - $result = ''; - $sep = $inline ? ' ' : $this->nl; - foreach ($nodes as $node) { - $result .= $this->p($node) . $sep; - } - - return $result; - } -} diff --git a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php b/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php deleted file mode 100644 index d32be248..00000000 --- a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php +++ /dev/null @@ -1,1693 +0,0 @@ - */ - protected array $precedenceMap = [ - // [precedence, precedenceLHS, precedenceRHS] - // Where the latter two are the precedences to use for the LHS and RHS of a binary operator, - // where 1 is added to one of the sides depending on associativity. This information is not - // used for unary operators and set to -1. - Expr\Clone_::class => [-10, 0, 1], - BinaryOp\Pow::class => [ 0, 0, 1], - Expr\BitwiseNot::class => [ 10, -1, -1], - Expr\UnaryPlus::class => [ 10, -1, -1], - Expr\UnaryMinus::class => [ 10, -1, -1], - Cast\Int_::class => [ 10, -1, -1], - Cast\Double::class => [ 10, -1, -1], - Cast\String_::class => [ 10, -1, -1], - Cast\Array_::class => [ 10, -1, -1], - Cast\Object_::class => [ 10, -1, -1], - Cast\Bool_::class => [ 10, -1, -1], - Cast\Unset_::class => [ 10, -1, -1], - Expr\ErrorSuppress::class => [ 10, -1, -1], - Expr\Instanceof_::class => [ 20, -1, -1], - Expr\BooleanNot::class => [ 30, -1, -1], - BinaryOp\Mul::class => [ 40, 41, 40], - BinaryOp\Div::class => [ 40, 41, 40], - BinaryOp\Mod::class => [ 40, 41, 40], - BinaryOp\Plus::class => [ 50, 51, 50], - BinaryOp\Minus::class => [ 50, 51, 50], - BinaryOp\Concat::class => [ 50, 51, 50], - BinaryOp\ShiftLeft::class => [ 60, 61, 60], - BinaryOp\ShiftRight::class => [ 60, 61, 60], - BinaryOp\Smaller::class => [ 70, 70, 70], - BinaryOp\SmallerOrEqual::class => [ 70, 70, 70], - BinaryOp\Greater::class => [ 70, 70, 70], - BinaryOp\GreaterOrEqual::class => [ 70, 70, 70], - BinaryOp\Equal::class => [ 80, 80, 80], - BinaryOp\NotEqual::class => [ 80, 80, 80], - BinaryOp\Identical::class => [ 80, 80, 80], - BinaryOp\NotIdentical::class => [ 80, 80, 80], - BinaryOp\Spaceship::class => [ 80, 80, 80], - BinaryOp\BitwiseAnd::class => [ 90, 91, 90], - BinaryOp\BitwiseXor::class => [100, 101, 100], - BinaryOp\BitwiseOr::class => [110, 111, 110], - BinaryOp\BooleanAnd::class => [120, 121, 120], - BinaryOp\BooleanOr::class => [130, 131, 130], - BinaryOp\Coalesce::class => [140, 140, 141], - Expr\Ternary::class => [150, 150, 150], - Expr\Assign::class => [160, -1, -1], - Expr\AssignRef::class => [160, -1, -1], - AssignOp\Plus::class => [160, -1, -1], - AssignOp\Minus::class => [160, -1, -1], - AssignOp\Mul::class => [160, -1, -1], - AssignOp\Div::class => [160, -1, -1], - AssignOp\Concat::class => [160, -1, -1], - AssignOp\Mod::class => [160, -1, -1], - AssignOp\BitwiseAnd::class => [160, -1, -1], - AssignOp\BitwiseOr::class => [160, -1, -1], - AssignOp\BitwiseXor::class => [160, -1, -1], - AssignOp\ShiftLeft::class => [160, -1, -1], - AssignOp\ShiftRight::class => [160, -1, -1], - AssignOp\Pow::class => [160, -1, -1], - AssignOp\Coalesce::class => [160, -1, -1], - Expr\YieldFrom::class => [170, -1, -1], - Expr\Yield_::class => [175, -1, -1], - Expr\Print_::class => [180, -1, -1], - BinaryOp\LogicalAnd::class => [190, 191, 190], - BinaryOp\LogicalXor::class => [200, 201, 200], - BinaryOp\LogicalOr::class => [210, 211, 210], - Expr\Include_::class => [220, -1, -1], - Expr\ArrowFunction::class => [230, -1, -1], - Expr\Throw_::class => [240, -1, -1], - ]; - - /** @var int Current indentation level. */ - protected int $indentLevel; - /** @var string String for single level of indentation */ - private string $indent; - /** @var int Width in spaces to indent by. */ - private int $indentWidth; - /** @var bool Whether to use tab indentation. */ - private bool $useTabs; - /** @var int Width in spaces of one tab. */ - private int $tabWidth = 4; - - /** @var string Newline style. Does not include current indentation. */ - protected string $newline; - /** @var string Newline including current indentation. */ - protected string $nl; - /** @var string|null Token placed at end of doc string to ensure it is followed by a newline. - * Null if flexible doc strings are used. */ - protected ?string $docStringEndToken; - /** @var bool Whether semicolon namespaces can be used (i.e. no global namespace is used) */ - protected bool $canUseSemicolonNamespaces; - /** @var bool Whether to use short array syntax if the node specifies no preference */ - protected bool $shortArraySyntax; - /** @var PhpVersion PHP version to target */ - protected PhpVersion $phpVersion; - - /** @var TokenStream|null Original tokens for use in format-preserving pretty print */ - protected ?TokenStream $origTokens; - /** @var Internal\Differ Differ for node lists */ - protected Differ $nodeListDiffer; - /** @var array Map determining whether a certain character is a label character */ - protected array $labelCharMap; - /** - * @var array> Map from token classes and subnode names to FIXUP_* constants. - * This is used during format-preserving prints to place additional parens/braces if necessary. - */ - protected array $fixupMap; - /** - * @var array Map from "{$node->getType()}->{$subNode}" - * to ['left' => $l, 'right' => $r], where $l and $r specify the token type that needs to be stripped - * when removing this node. - */ - protected array $removalMap; - /** - * @var array Map from - * "{$node->getType()}->{$subNode}" to [$find, $beforeToken, $extraLeft, $extraRight]. - * $find is an optional token after which the insertion occurs. $extraLeft/Right - * are optionally added before/after the main insertions. - */ - protected array $insertionMap; - /** - * @var array Map From "{$class}->{$subNode}" to string that should be inserted - * between elements of this list subnode. - */ - protected array $listInsertionMap; - - /** - * @var array - */ - protected array $emptyListInsertionMap; - /** @var array Map from "{$class}->{$subNode}" to [$printFn, $token] - * where $printFn is the function to print the modifiers and $token is the token before which - * the modifiers should be reprinted. */ - protected array $modifierChangeMap; - - /** - * Creates a pretty printer instance using the given options. - * - * Supported options: - * * PhpVersion $phpVersion: The PHP version to target (default to PHP 7.4). This option - * controls compatibility of the generated code with older PHP - * versions in cases where a simple stylistic choice exists (e.g. - * array() vs []). It is safe to pretty-print an AST for a newer - * PHP version while specifying an older target (but the result will - * of course not be compatible with the older version in that case). - * * string $newline: The newline style to use. Should be "\n" (default) or "\r\n". - * * string $indent: The indentation to use. Should either be all spaces or a single - * tab. Defaults to four spaces (" "). - * * bool $shortArraySyntax: Whether to use [] instead of array() as the default array - * syntax, if the node does not specify a format. Defaults to whether - * the phpVersion support short array syntax. - * - * @param array{ - * phpVersion?: PhpVersion, newline?: string, indent?: string, shortArraySyntax?: bool - * } $options Dictionary of formatting options - */ - public function __construct(array $options = []) { - $this->phpVersion = $options['phpVersion'] ?? PhpVersion::fromComponents(7, 4); - - $this->newline = $options['newline'] ?? "\n"; - if ($this->newline !== "\n" && $this->newline != "\r\n") { - throw new \LogicException('Option "newline" must be one of "\n" or "\r\n"'); - } - - $this->shortArraySyntax = - $options['shortArraySyntax'] ?? $this->phpVersion->supportsShortArraySyntax(); - $this->docStringEndToken = - $this->phpVersion->supportsFlexibleHeredoc() ? null : '_DOC_STRING_END_' . mt_rand(); - - $this->indent = $indent = $options['indent'] ?? ' '; - if ($indent === "\t") { - $this->useTabs = true; - $this->indentWidth = $this->tabWidth; - } elseif ($indent === \str_repeat(' ', \strlen($indent))) { - $this->useTabs = false; - $this->indentWidth = \strlen($indent); - } else { - throw new \LogicException('Option "indent" must either be all spaces or a single tab'); - } - } - - /** - * Reset pretty printing state. - */ - protected function resetState(): void { - $this->indentLevel = 0; - $this->nl = $this->newline; - $this->origTokens = null; - } - - /** - * Set indentation level - * - * @param int $level Level in number of spaces - */ - protected function setIndentLevel(int $level): void { - $this->indentLevel = $level; - if ($this->useTabs) { - $tabs = \intdiv($level, $this->tabWidth); - $spaces = $level % $this->tabWidth; - $this->nl = $this->newline . \str_repeat("\t", $tabs) . \str_repeat(' ', $spaces); - } else { - $this->nl = $this->newline . \str_repeat(' ', $level); - } - } - - /** - * Increase indentation level. - */ - protected function indent(): void { - $this->indentLevel += $this->indentWidth; - $this->nl .= $this->indent; - } - - /** - * Decrease indentation level. - */ - protected function outdent(): void { - assert($this->indentLevel >= $this->indentWidth); - $this->setIndentLevel($this->indentLevel - $this->indentWidth); - } - - /** - * Pretty prints an array of statements. - * - * @param Node[] $stmts Array of statements - * - * @return string Pretty printed statements - */ - public function prettyPrint(array $stmts): string { - $this->resetState(); - $this->preprocessNodes($stmts); - - return ltrim($this->handleMagicTokens($this->pStmts($stmts, false))); - } - - /** - * Pretty prints an expression. - * - * @param Expr $node Expression node - * - * @return string Pretty printed node - */ - public function prettyPrintExpr(Expr $node): string { - $this->resetState(); - return $this->handleMagicTokens($this->p($node)); - } - - /** - * Pretty prints a file of statements (includes the opening newline . $this->newline; - } - - $p = "newline . $this->newline . $this->prettyPrint($stmts); - - if ($stmts[0] instanceof Stmt\InlineHTML) { - $p = preg_replace('/^<\?php\s+\?>\r?\n?/', '', $p); - } - if ($stmts[count($stmts) - 1] instanceof Stmt\InlineHTML) { - $p = preg_replace('/<\?php$/', '', rtrim($p)); - } - - return $p; - } - - /** - * Preprocesses the top-level nodes to initialize pretty printer state. - * - * @param Node[] $nodes Array of nodes - */ - protected function preprocessNodes(array $nodes): void { - /* We can use semicolon-namespaces unless there is a global namespace declaration */ - $this->canUseSemicolonNamespaces = true; - foreach ($nodes as $node) { - if ($node instanceof Stmt\Namespace_ && null === $node->name) { - $this->canUseSemicolonNamespaces = false; - break; - } - } - } - - /** - * Handles (and removes) doc-string-end tokens. - */ - protected function handleMagicTokens(string $str): string { - if ($this->docStringEndToken !== null) { - // Replace doc-string-end tokens with nothing or a newline - $str = str_replace( - $this->docStringEndToken . ';' . $this->newline, - ';' . $this->newline, - $str); - $str = str_replace($this->docStringEndToken, $this->newline, $str); - } - - return $str; - } - - /** - * Pretty prints an array of nodes (statements) and indents them optionally. - * - * @param Node[] $nodes Array of nodes - * @param bool $indent Whether to indent the printed nodes - * - * @return string Pretty printed statements - */ - protected function pStmts(array $nodes, bool $indent = true): string { - if ($indent) { - $this->indent(); - } - - $result = ''; - foreach ($nodes as $node) { - $comments = $node->getComments(); - if ($comments) { - $result .= $this->nl . $this->pComments($comments); - if ($node instanceof Stmt\Nop) { - continue; - } - } - - $result .= $this->nl . $this->p($node); - } - - if ($indent) { - $this->outdent(); - } - - return $result; - } - - /** - * Pretty-print an infix operation while taking precedence into account. - * - * @param string $class Node class of operator - * @param Node $leftNode Left-hand side node - * @param string $operatorString String representation of the operator - * @param Node $rightNode Right-hand side node - * @param int $precedence Precedence of parent operator - * @param int $lhsPrecedence Precedence for unary operator on LHS of binary operator - * - * @return string Pretty printed infix operation - */ - protected function pInfixOp( - string $class, Node $leftNode, string $operatorString, Node $rightNode, - int $precedence, int $lhsPrecedence - ): string { - list($opPrecedence, $newPrecedenceLHS, $newPrecedenceRHS) = $this->precedenceMap[$class]; - $prefix = ''; - $suffix = ''; - if ($opPrecedence >= $precedence) { - $prefix = '('; - $suffix = ')'; - $lhsPrecedence = self::MAX_PRECEDENCE; - } - return $prefix . $this->p($leftNode, $newPrecedenceLHS, $newPrecedenceLHS) - . $operatorString . $this->p($rightNode, $newPrecedenceRHS, $lhsPrecedence) . $suffix; - } - - /** - * Pretty-print a prefix operation while taking precedence into account. - * - * @param string $class Node class of operator - * @param string $operatorString String representation of the operator - * @param Node $node Node - * @param int $precedence Precedence of parent operator - * @param int $lhsPrecedence Precedence for unary operator on LHS of binary operator - * - * @return string Pretty printed prefix operation - */ - protected function pPrefixOp(string $class, string $operatorString, Node $node, int $precedence, int $lhsPrecedence): string { - $opPrecedence = $this->precedenceMap[$class][0]; - $prefix = ''; - $suffix = ''; - if ($opPrecedence >= $lhsPrecedence) { - $prefix = '('; - $suffix = ')'; - $lhsPrecedence = self::MAX_PRECEDENCE; - } - $printedArg = $this->p($node, $opPrecedence, $lhsPrecedence); - if (($operatorString === '+' && $printedArg[0] === '+') || - ($operatorString === '-' && $printedArg[0] === '-') - ) { - // Avoid printing +(+$a) as ++$a and similar. - $printedArg = '(' . $printedArg . ')'; - } - return $prefix . $operatorString . $printedArg . $suffix; - } - - /** - * Pretty-print a postfix operation while taking precedence into account. - * - * @param string $class Node class of operator - * @param string $operatorString String representation of the operator - * @param Node $node Node - * @param int $precedence Precedence of parent operator - * @param int $lhsPrecedence Precedence for unary operator on LHS of binary operator - * - * @return string Pretty printed postfix operation - */ - protected function pPostfixOp(string $class, Node $node, string $operatorString, int $precedence, int $lhsPrecedence): string { - $opPrecedence = $this->precedenceMap[$class][0]; - $prefix = ''; - $suffix = ''; - if ($opPrecedence >= $precedence) { - $prefix = '('; - $suffix = ')'; - $lhsPrecedence = self::MAX_PRECEDENCE; - } - if ($opPrecedence < $lhsPrecedence) { - $lhsPrecedence = $opPrecedence; - } - return $prefix . $this->p($node, $opPrecedence, $lhsPrecedence) . $operatorString . $suffix; - } - - /** - * Pretty prints an array of nodes and implodes the printed values. - * - * @param Node[] $nodes Array of Nodes to be printed - * @param string $glue Character to implode with - * - * @return string Imploded pretty printed nodes> $pre - */ - protected function pImplode(array $nodes, string $glue = ''): string { - $pNodes = []; - foreach ($nodes as $node) { - if (null === $node) { - $pNodes[] = ''; - } else { - $pNodes[] = $this->p($node); - } - } - - return implode($glue, $pNodes); - } - - /** - * Pretty prints an array of nodes and implodes the printed values with commas. - * - * @param Node[] $nodes Array of Nodes to be printed - * - * @return string Comma separated pretty printed nodes - */ - protected function pCommaSeparated(array $nodes): string { - return $this->pImplode($nodes, ', '); - } - - /** - * Pretty prints a comma-separated list of nodes in multiline style, including comments. - * - * The result includes a leading newline and one level of indentation (same as pStmts). - * - * @param Node[] $nodes Array of Nodes to be printed - * @param bool $trailingComma Whether to use a trailing comma - * - * @return string Comma separated pretty printed nodes in multiline style - */ - protected function pCommaSeparatedMultiline(array $nodes, bool $trailingComma): string { - $this->indent(); - - $result = ''; - $lastIdx = count($nodes) - 1; - foreach ($nodes as $idx => $node) { - if ($node !== null) { - $comments = $node->getComments(); - if ($comments) { - $result .= $this->nl . $this->pComments($comments); - } - - $result .= $this->nl . $this->p($node); - } else { - $result .= $this->nl; - } - if ($trailingComma || $idx !== $lastIdx) { - $result .= ','; - } - } - - $this->outdent(); - return $result; - } - - /** - * Prints reformatted text of the passed comments. - * - * @param Comment[] $comments List of comments - * - * @return string Reformatted text of comments - */ - protected function pComments(array $comments): string { - $formattedComments = []; - - foreach ($comments as $comment) { - $formattedComments[] = str_replace("\n", $this->nl, $comment->getReformattedText()); - } - - return implode($this->nl, $formattedComments); - } - - /** - * Perform a format-preserving pretty print of an AST. - * - * The format preservation is best effort. For some changes to the AST the formatting will not - * be preserved (at least not locally). - * - * In order to use this method a number of prerequisites must be satisfied: - * * The startTokenPos and endTokenPos attributes in the lexer must be enabled. - * * The CloningVisitor must be run on the AST prior to modification. - * * The original tokens must be provided, using the getTokens() method on the lexer. - * - * @param Node[] $stmts Modified AST with links to original AST - * @param Node[] $origStmts Original AST with token offset information - * @param Token[] $origTokens Tokens of the original code - */ - public function printFormatPreserving(array $stmts, array $origStmts, array $origTokens): string { - $this->initializeNodeListDiffer(); - $this->initializeLabelCharMap(); - $this->initializeFixupMap(); - $this->initializeRemovalMap(); - $this->initializeInsertionMap(); - $this->initializeListInsertionMap(); - $this->initializeEmptyListInsertionMap(); - $this->initializeModifierChangeMap(); - - $this->resetState(); - $this->origTokens = new TokenStream($origTokens, $this->tabWidth); - - $this->preprocessNodes($stmts); - - $pos = 0; - $result = $this->pArray($stmts, $origStmts, $pos, 0, 'File', 'stmts', null); - if (null !== $result) { - $result .= $this->origTokens->getTokenCode($pos, count($origTokens) - 1, 0); - } else { - // Fallback - // TODO Add newline . $this->pStmts($stmts, false); - } - - return $this->handleMagicTokens($result); - } - - protected function pFallback(Node $node, int $precedence, int $lhsPrecedence): string { - return $this->{'p' . $node->getType()}($node, $precedence, $lhsPrecedence); - } - - /** - * Pretty prints a node. - * - * This method also handles formatting preservation for nodes. - * - * @param Node $node Node to be pretty printed - * @param int $precedence Precedence of parent operator - * @param int $lhsPrecedence Precedence for unary operator on LHS of binary operator - * @param bool $parentFormatPreserved Whether parent node has preserved formatting - * - * @return string Pretty printed node - */ - protected function p( - Node $node, int $precedence = self::MAX_PRECEDENCE, int $lhsPrecedence = self::MAX_PRECEDENCE, - bool $parentFormatPreserved = false - ): string { - // No orig tokens means this is a normal pretty print without preservation of formatting - if (!$this->origTokens) { - return $this->{'p' . $node->getType()}($node, $precedence, $lhsPrecedence); - } - - /** @var Node|null $origNode */ - $origNode = $node->getAttribute('origNode'); - if (null === $origNode) { - return $this->pFallback($node, $precedence, $lhsPrecedence); - } - - $class = \get_class($node); - \assert($class === \get_class($origNode)); - - $startPos = $origNode->getStartTokenPos(); - $endPos = $origNode->getEndTokenPos(); - \assert($startPos >= 0 && $endPos >= 0); - - $fallbackNode = $node; - if ($node instanceof Expr\New_ && $node->class instanceof Stmt\Class_) { - // Normalize node structure of anonymous classes - assert($origNode instanceof Expr\New_); - $node = PrintableNewAnonClassNode::fromNewNode($node); - $origNode = PrintableNewAnonClassNode::fromNewNode($origNode); - $class = PrintableNewAnonClassNode::class; - } - - // InlineHTML node does not contain closing and opening PHP tags. If the parent formatting - // is not preserved, then we need to use the fallback code to make sure the tags are - // printed. - if ($node instanceof Stmt\InlineHTML && !$parentFormatPreserved) { - return $this->pFallback($fallbackNode, $precedence, $lhsPrecedence); - } - - $indentAdjustment = $this->indentLevel - $this->origTokens->getIndentationBefore($startPos); - - $type = $node->getType(); - $fixupInfo = $this->fixupMap[$class] ?? null; - - $result = ''; - $pos = $startPos; - foreach ($node->getSubNodeNames() as $subNodeName) { - $subNode = $node->$subNodeName; - $origSubNode = $origNode->$subNodeName; - - if ((!$subNode instanceof Node && $subNode !== null) - || (!$origSubNode instanceof Node && $origSubNode !== null) - ) { - if ($subNode === $origSubNode) { - // Unchanged, can reuse old code - continue; - } - - if (is_array($subNode) && is_array($origSubNode)) { - // Array subnode changed, we might be able to reconstruct it - $listResult = $this->pArray( - $subNode, $origSubNode, $pos, $indentAdjustment, $class, $subNodeName, - $fixupInfo[$subNodeName] ?? null - ); - if (null === $listResult) { - return $this->pFallback($fallbackNode, $precedence, $lhsPrecedence); - } - - $result .= $listResult; - continue; - } - - // Check if this is a modifier change - $key = $class . '->' . $subNodeName; - if (!isset($this->modifierChangeMap[$key])) { - return $this->pFallback($fallbackNode, $precedence, $lhsPrecedence); - } - - [$printFn, $findToken] = $this->modifierChangeMap[$key]; - $result .= $this->$printFn($subNode); - $pos = $this->origTokens->findRight($pos, $findToken); - continue; - } - - $extraLeft = ''; - $extraRight = ''; - if ($origSubNode !== null) { - $subStartPos = $origSubNode->getStartTokenPos(); - $subEndPos = $origSubNode->getEndTokenPos(); - \assert($subStartPos >= 0 && $subEndPos >= 0); - } else { - if ($subNode === null) { - // Both null, nothing to do - continue; - } - - // A node has been inserted, check if we have insertion information for it - $key = $type . '->' . $subNodeName; - if (!isset($this->insertionMap[$key])) { - return $this->pFallback($fallbackNode, $precedence, $lhsPrecedence); - } - - list($findToken, $beforeToken, $extraLeft, $extraRight) = $this->insertionMap[$key]; - if (null !== $findToken) { - $subStartPos = $this->origTokens->findRight($pos, $findToken) - + (int) !$beforeToken; - } else { - $subStartPos = $pos; - } - - if (null === $extraLeft && null !== $extraRight) { - // If inserting on the right only, skipping whitespace looks better - $subStartPos = $this->origTokens->skipRightWhitespace($subStartPos); - } - $subEndPos = $subStartPos - 1; - } - - if (null === $subNode) { - // A node has been removed, check if we have removal information for it - $key = $type . '->' . $subNodeName; - if (!isset($this->removalMap[$key])) { - return $this->pFallback($fallbackNode, $precedence, $lhsPrecedence); - } - - // Adjust positions to account for additional tokens that must be skipped - $removalInfo = $this->removalMap[$key]; - if (isset($removalInfo['left'])) { - $subStartPos = $this->origTokens->skipLeft($subStartPos - 1, $removalInfo['left']) + 1; - } - if (isset($removalInfo['right'])) { - $subEndPos = $this->origTokens->skipRight($subEndPos + 1, $removalInfo['right']) - 1; - } - } - - $result .= $this->origTokens->getTokenCode($pos, $subStartPos, $indentAdjustment); - - if (null !== $subNode) { - $result .= $extraLeft; - - $origIndentLevel = $this->indentLevel; - $this->setIndentLevel(max($this->origTokens->getIndentationBefore($subStartPos) + $indentAdjustment, 0)); - - // If it's the same node that was previously in this position, it certainly doesn't - // need fixup. It's important to check this here, because our fixup checks are more - // conservative than strictly necessary. - if (isset($fixupInfo[$subNodeName]) - && $subNode->getAttribute('origNode') !== $origSubNode - ) { - $fixup = $fixupInfo[$subNodeName]; - $res = $this->pFixup($fixup, $subNode, $class, $subStartPos, $subEndPos); - } else { - $res = $this->p($subNode, self::MAX_PRECEDENCE, self::MAX_PRECEDENCE, true); - } - - $this->safeAppend($result, $res); - $this->setIndentLevel($origIndentLevel); - - $result .= $extraRight; - } - - $pos = $subEndPos + 1; - } - - $result .= $this->origTokens->getTokenCode($pos, $endPos + 1, $indentAdjustment); - return $result; - } - - /** - * Perform a format-preserving pretty print of an array. - * - * @param Node[] $nodes New nodes - * @param Node[] $origNodes Original nodes - * @param int $pos Current token position (updated by reference) - * @param int $indentAdjustment Adjustment for indentation - * @param string $parentNodeClass Class of the containing node. - * @param string $subNodeName Name of array subnode. - * @param null|int $fixup Fixup information for array item nodes - * - * @return null|string Result of pretty print or null if cannot preserve formatting - */ - protected function pArray( - array $nodes, array $origNodes, int &$pos, int $indentAdjustment, - string $parentNodeClass, string $subNodeName, ?int $fixup - ): ?string { - $diff = $this->nodeListDiffer->diffWithReplacements($origNodes, $nodes); - - $mapKey = $parentNodeClass . '->' . $subNodeName; - $insertStr = $this->listInsertionMap[$mapKey] ?? null; - $isStmtList = $subNodeName === 'stmts'; - - $beforeFirstKeepOrReplace = true; - $skipRemovedNode = false; - $delayedAdd = []; - $lastElemIndentLevel = $this->indentLevel; - - $insertNewline = false; - if ($insertStr === "\n") { - $insertStr = ''; - $insertNewline = true; - } - - if ($isStmtList && \count($origNodes) === 1 && \count($nodes) !== 1) { - $startPos = $origNodes[0]->getStartTokenPos(); - $endPos = $origNodes[0]->getEndTokenPos(); - \assert($startPos >= 0 && $endPos >= 0); - if (!$this->origTokens->haveBraces($startPos, $endPos)) { - // This was a single statement without braces, but either additional statements - // have been added, or the single statement has been removed. This requires the - // addition of braces. For now fall back. - // TODO: Try to preserve formatting - return null; - } - } - - $result = ''; - foreach ($diff as $i => $diffElem) { - $diffType = $diffElem->type; - /** @var Node|string|null $arrItem */ - $arrItem = $diffElem->new; - /** @var Node|string|null $origArrItem */ - $origArrItem = $diffElem->old; - - if ($diffType === DiffElem::TYPE_KEEP || $diffType === DiffElem::TYPE_REPLACE) { - $beforeFirstKeepOrReplace = false; - - if ($origArrItem === null || $arrItem === null) { - // We can only handle the case where both are null - if ($origArrItem === $arrItem) { - continue; - } - return null; - } - - if (!$arrItem instanceof Node || !$origArrItem instanceof Node) { - // We can only deal with nodes. This can occur for Names, which use string arrays. - return null; - } - - $itemStartPos = $origArrItem->getStartTokenPos(); - $itemEndPos = $origArrItem->getEndTokenPos(); - \assert($itemStartPos >= 0 && $itemEndPos >= 0 && $itemStartPos >= $pos); - - $origIndentLevel = $this->indentLevel; - $lastElemIndentLevel = max($this->origTokens->getIndentationBefore($itemStartPos) + $indentAdjustment, 0); - $this->setIndentLevel($lastElemIndentLevel); - - $comments = $arrItem->getComments(); - $origComments = $origArrItem->getComments(); - $commentStartPos = $origComments ? $origComments[0]->getStartTokenPos() : $itemStartPos; - \assert($commentStartPos >= 0); - - if ($commentStartPos < $pos) { - // Comments may be assigned to multiple nodes if they start at the same position. - // Make sure we don't try to print them multiple times. - $commentStartPos = $itemStartPos; - } - - if ($skipRemovedNode) { - if ($isStmtList && $this->origTokens->haveTagInRange($pos, $itemStartPos)) { - // We'd remove an opening/closing PHP tag. - // TODO: Preserve formatting. - $this->setIndentLevel($origIndentLevel); - return null; - } - } else { - $result .= $this->origTokens->getTokenCode( - $pos, $commentStartPos, $indentAdjustment); - } - - if (!empty($delayedAdd)) { - /** @var Node $delayedAddNode */ - foreach ($delayedAdd as $delayedAddNode) { - if ($insertNewline) { - $delayedAddComments = $delayedAddNode->getComments(); - if ($delayedAddComments) { - $result .= $this->pComments($delayedAddComments) . $this->nl; - } - } - - $this->safeAppend($result, $this->p($delayedAddNode, self::MAX_PRECEDENCE, self::MAX_PRECEDENCE, true)); - - if ($insertNewline) { - $result .= $insertStr . $this->nl; - } else { - $result .= $insertStr; - } - } - - $delayedAdd = []; - } - - if ($comments !== $origComments) { - if ($comments) { - $result .= $this->pComments($comments) . $this->nl; - } - } else { - $result .= $this->origTokens->getTokenCode( - $commentStartPos, $itemStartPos, $indentAdjustment); - } - - // If we had to remove anything, we have done so now. - $skipRemovedNode = false; - } elseif ($diffType === DiffElem::TYPE_ADD) { - if (null === $insertStr) { - // We don't have insertion information for this list type - return null; - } - - if (!$arrItem instanceof Node) { - // We only support list insertion of nodes. - return null; - } - - // We go multiline if the original code was multiline, - // or if it's an array item with a comment above it. - // Match always uses multiline formatting. - if ($insertStr === ', ' && - ($this->isMultiline($origNodes) || $arrItem->getComments() || - $parentNodeClass === Expr\Match_::class) - ) { - $insertStr = ','; - $insertNewline = true; - } - - if ($beforeFirstKeepOrReplace) { - // Will be inserted at the next "replace" or "keep" element - $delayedAdd[] = $arrItem; - continue; - } - - $itemStartPos = $pos; - $itemEndPos = $pos - 1; - - $origIndentLevel = $this->indentLevel; - $this->setIndentLevel($lastElemIndentLevel); - - if ($insertNewline) { - $result .= $insertStr . $this->nl; - $comments = $arrItem->getComments(); - if ($comments) { - $result .= $this->pComments($comments) . $this->nl; - } - } else { - $result .= $insertStr; - } - } elseif ($diffType === DiffElem::TYPE_REMOVE) { - if (!$origArrItem instanceof Node) { - // We only support removal for nodes - return null; - } - - $itemStartPos = $origArrItem->getStartTokenPos(); - $itemEndPos = $origArrItem->getEndTokenPos(); - \assert($itemStartPos >= 0 && $itemEndPos >= 0); - - // Consider comments part of the node. - $origComments = $origArrItem->getComments(); - if ($origComments) { - $itemStartPos = $origComments[0]->getStartTokenPos(); - } - - if ($i === 0) { - // If we're removing from the start, keep the tokens before the node and drop those after it, - // instead of the other way around. - $result .= $this->origTokens->getTokenCode( - $pos, $itemStartPos, $indentAdjustment); - $skipRemovedNode = true; - } else { - if ($isStmtList && $this->origTokens->haveTagInRange($pos, $itemStartPos)) { - // We'd remove an opening/closing PHP tag. - // TODO: Preserve formatting. - return null; - } - } - - $pos = $itemEndPos + 1; - continue; - } else { - throw new \Exception("Shouldn't happen"); - } - - if (null !== $fixup && $arrItem->getAttribute('origNode') !== $origArrItem) { - $res = $this->pFixup($fixup, $arrItem, null, $itemStartPos, $itemEndPos); - } else { - $res = $this->p($arrItem, self::MAX_PRECEDENCE, self::MAX_PRECEDENCE, true); - } - $this->safeAppend($result, $res); - - $this->setIndentLevel($origIndentLevel); - $pos = $itemEndPos + 1; - } - - if ($skipRemovedNode) { - // TODO: Support removing single node. - return null; - } - - if (!empty($delayedAdd)) { - if (!isset($this->emptyListInsertionMap[$mapKey])) { - return null; - } - - list($findToken, $extraLeft, $extraRight) = $this->emptyListInsertionMap[$mapKey]; - if (null !== $findToken) { - $insertPos = $this->origTokens->findRight($pos, $findToken) + 1; - $result .= $this->origTokens->getTokenCode($pos, $insertPos, $indentAdjustment); - $pos = $insertPos; - } - - $first = true; - $result .= $extraLeft; - foreach ($delayedAdd as $delayedAddNode) { - if (!$first) { - $result .= $insertStr; - if ($insertNewline) { - $result .= $this->nl; - } - } - $result .= $this->p($delayedAddNode, self::MAX_PRECEDENCE, self::MAX_PRECEDENCE, true); - $first = false; - } - $result .= $extraRight === "\n" ? $this->nl : $extraRight; - } - - return $result; - } - - /** - * Print node with fixups. - * - * Fixups here refer to the addition of extra parentheses, braces or other characters, that - * are required to preserve program semantics in a certain context (e.g. to maintain precedence - * or because only certain expressions are allowed in certain places). - * - * @param int $fixup Fixup type - * @param Node $subNode Subnode to print - * @param string|null $parentClass Class of parent node - * @param int $subStartPos Original start pos of subnode - * @param int $subEndPos Original end pos of subnode - * - * @return string Result of fixed-up print of subnode - */ - protected function pFixup(int $fixup, Node $subNode, ?string $parentClass, int $subStartPos, int $subEndPos): string { - switch ($fixup) { - case self::FIXUP_PREC_LEFT: - // We use a conservative approximation where lhsPrecedence == precedence. - if (!$this->origTokens->haveParens($subStartPos, $subEndPos)) { - $precedence = $this->precedenceMap[$parentClass][1]; - return $this->p($subNode, $precedence, $precedence); - } - break; - case self::FIXUP_PREC_RIGHT: - if (!$this->origTokens->haveParens($subStartPos, $subEndPos)) { - $precedence = $this->precedenceMap[$parentClass][2]; - return $this->p($subNode, $precedence, $precedence); - } - break; - case self::FIXUP_PREC_UNARY: - if (!$this->origTokens->haveParens($subStartPos, $subEndPos)) { - $precedence = $this->precedenceMap[$parentClass][0]; - return $this->p($subNode, $precedence, $precedence); - } - break; - case self::FIXUP_CALL_LHS: - if ($this->callLhsRequiresParens($subNode) - && !$this->origTokens->haveParens($subStartPos, $subEndPos) - ) { - return '(' . $this->p($subNode) . ')'; - } - break; - case self::FIXUP_DEREF_LHS: - if ($this->dereferenceLhsRequiresParens($subNode) - && !$this->origTokens->haveParens($subStartPos, $subEndPos) - ) { - return '(' . $this->p($subNode) . ')'; - } - break; - case self::FIXUP_STATIC_DEREF_LHS: - if ($this->staticDereferenceLhsRequiresParens($subNode) - && !$this->origTokens->haveParens($subStartPos, $subEndPos) - ) { - return '(' . $this->p($subNode) . ')'; - } - break; - case self::FIXUP_NEW: - if ($this->newOperandRequiresParens($subNode) - && !$this->origTokens->haveParens($subStartPos, $subEndPos)) { - return '(' . $this->p($subNode) . ')'; - } - break; - case self::FIXUP_BRACED_NAME: - case self::FIXUP_VAR_BRACED_NAME: - if ($subNode instanceof Expr - && !$this->origTokens->haveBraces($subStartPos, $subEndPos) - ) { - return ($fixup === self::FIXUP_VAR_BRACED_NAME ? '$' : '') - . '{' . $this->p($subNode) . '}'; - } - break; - case self::FIXUP_ENCAPSED: - if (!$subNode instanceof Node\InterpolatedStringPart - && !$this->origTokens->haveBraces($subStartPos, $subEndPos) - ) { - return '{' . $this->p($subNode) . '}'; - } - break; - default: - throw new \Exception('Cannot happen'); - } - - // Nothing special to do - return $this->p($subNode); - } - - /** - * Appends to a string, ensuring whitespace between label characters. - * - * Example: "echo" and "$x" result in "echo$x", but "echo" and "x" result in "echo x". - * Without safeAppend the result would be "echox", which does not preserve semantics. - */ - protected function safeAppend(string &$str, string $append): void { - if ($str === "") { - $str = $append; - return; - } - - if ($append === "") { - return; - } - - if (!$this->labelCharMap[$append[0]] - || !$this->labelCharMap[$str[\strlen($str) - 1]]) { - $str .= $append; - } else { - $str .= " " . $append; - } - } - - /** - * Determines whether the LHS of a call must be wrapped in parenthesis. - * - * @param Node $node LHS of a call - * - * @return bool Whether parentheses are required - */ - protected function callLhsRequiresParens(Node $node): bool { - return !($node instanceof Node\Name - || $node instanceof Expr\Variable - || $node instanceof Expr\ArrayDimFetch - || $node instanceof Expr\FuncCall - || $node instanceof Expr\MethodCall - || $node instanceof Expr\NullsafeMethodCall - || $node instanceof Expr\StaticCall - || $node instanceof Expr\Array_); - } - - /** - * Determines whether the LHS of an array/object operation must be wrapped in parentheses. - * - * @param Node $node LHS of dereferencing operation - * - * @return bool Whether parentheses are required - */ - protected function dereferenceLhsRequiresParens(Node $node): bool { - // A constant can occur on the LHS of an array/object deref, but not a static deref. - return $this->staticDereferenceLhsRequiresParens($node) - && !$node instanceof Expr\ConstFetch; - } - - /** - * Determines whether the LHS of a static operation must be wrapped in parentheses. - * - * @param Node $node LHS of dereferencing operation - * - * @return bool Whether parentheses are required - */ - protected function staticDereferenceLhsRequiresParens(Node $node): bool { - return !($node instanceof Expr\Variable - || $node instanceof Node\Name - || $node instanceof Expr\ArrayDimFetch - || $node instanceof Expr\PropertyFetch - || $node instanceof Expr\NullsafePropertyFetch - || $node instanceof Expr\StaticPropertyFetch - || $node instanceof Expr\FuncCall - || $node instanceof Expr\MethodCall - || $node instanceof Expr\NullsafeMethodCall - || $node instanceof Expr\StaticCall - || $node instanceof Expr\Array_ - || $node instanceof Scalar\String_ - || $node instanceof Expr\ClassConstFetch); - } - - /** - * Determines whether an expression used in "new" or "instanceof" requires parentheses. - * - * @param Node $node New or instanceof operand - * - * @return bool Whether parentheses are required - */ - protected function newOperandRequiresParens(Node $node): bool { - if ($node instanceof Node\Name || $node instanceof Expr\Variable) { - return false; - } - if ($node instanceof Expr\ArrayDimFetch || $node instanceof Expr\PropertyFetch || - $node instanceof Expr\NullsafePropertyFetch - ) { - return $this->newOperandRequiresParens($node->var); - } - if ($node instanceof Expr\StaticPropertyFetch) { - return $this->newOperandRequiresParens($node->class); - } - return true; - } - - /** - * Print modifiers, including trailing whitespace. - * - * @param int $modifiers Modifier mask to print - * - * @return string Printed modifiers - */ - protected function pModifiers(int $modifiers): string { - return ($modifiers & Modifiers::FINAL ? 'final ' : '') - . ($modifiers & Modifiers::ABSTRACT ? 'abstract ' : '') - . ($modifiers & Modifiers::PUBLIC ? 'public ' : '') - . ($modifiers & Modifiers::PROTECTED ? 'protected ' : '') - . ($modifiers & Modifiers::PRIVATE ? 'private ' : '') - . ($modifiers & Modifiers::PUBLIC_SET ? 'public(set) ' : '') - . ($modifiers & Modifiers::PROTECTED_SET ? 'protected(set) ' : '') - . ($modifiers & Modifiers::PRIVATE_SET ? 'private(set) ' : '') - . ($modifiers & Modifiers::STATIC ? 'static ' : '') - . ($modifiers & Modifiers::READONLY ? 'readonly ' : ''); - } - - protected function pStatic(bool $static): string { - return $static ? 'static ' : ''; - } - - /** - * Determine whether a list of nodes uses multiline formatting. - * - * @param (Node|null)[] $nodes Node list - * - * @return bool Whether multiline formatting is used - */ - protected function isMultiline(array $nodes): bool { - if (\count($nodes) < 2) { - return false; - } - - $pos = -1; - foreach ($nodes as $node) { - if (null === $node) { - continue; - } - - $endPos = $node->getEndTokenPos() + 1; - if ($pos >= 0) { - $text = $this->origTokens->getTokenCode($pos, $endPos, 0); - if (false === strpos($text, "\n")) { - // We require that a newline is present between *every* item. If the formatting - // is inconsistent, with only some items having newlines, we don't consider it - // as multiline - return false; - } - } - $pos = $endPos; - } - - return true; - } - - /** - * Lazily initializes label char map. - * - * The label char map determines whether a certain character may occur in a label. - */ - protected function initializeLabelCharMap(): void { - if (isset($this->labelCharMap)) { - return; - } - - $this->labelCharMap = []; - for ($i = 0; $i < 256; $i++) { - $chr = chr($i); - $this->labelCharMap[$chr] = $i >= 0x80 || ctype_alnum($chr); - } - - if ($this->phpVersion->allowsDelInIdentifiers()) { - $this->labelCharMap["\x7f"] = true; - } - } - - /** - * Lazily initializes node list differ. - * - * The node list differ is used to determine differences between two array subnodes. - */ - protected function initializeNodeListDiffer(): void { - if (isset($this->nodeListDiffer)) { - return; - } - - $this->nodeListDiffer = new Internal\Differ(function ($a, $b) { - if ($a instanceof Node && $b instanceof Node) { - return $a === $b->getAttribute('origNode'); - } - // Can happen for array destructuring - return $a === null && $b === null; - }); - } - - /** - * Lazily initializes fixup map. - * - * The fixup map is used to determine whether a certain subnode of a certain node may require - * some kind of "fixup" operation, e.g. the addition of parenthesis or braces. - */ - protected function initializeFixupMap(): void { - if (isset($this->fixupMap)) { - return; - } - - $this->fixupMap = [ - Expr\Instanceof_::class => [ - 'expr' => self::FIXUP_PREC_UNARY, - 'class' => self::FIXUP_NEW, - ], - Expr\Ternary::class => [ - 'cond' => self::FIXUP_PREC_LEFT, - 'else' => self::FIXUP_PREC_RIGHT, - ], - Expr\Yield_::class => ['value' => self::FIXUP_PREC_UNARY], - - Expr\FuncCall::class => ['name' => self::FIXUP_CALL_LHS], - Expr\StaticCall::class => ['class' => self::FIXUP_STATIC_DEREF_LHS], - Expr\ArrayDimFetch::class => ['var' => self::FIXUP_DEREF_LHS], - Expr\ClassConstFetch::class => [ - 'class' => self::FIXUP_STATIC_DEREF_LHS, - 'name' => self::FIXUP_BRACED_NAME, - ], - Expr\New_::class => ['class' => self::FIXUP_NEW], - Expr\MethodCall::class => [ - 'var' => self::FIXUP_DEREF_LHS, - 'name' => self::FIXUP_BRACED_NAME, - ], - Expr\NullsafeMethodCall::class => [ - 'var' => self::FIXUP_DEREF_LHS, - 'name' => self::FIXUP_BRACED_NAME, - ], - Expr\StaticPropertyFetch::class => [ - 'class' => self::FIXUP_STATIC_DEREF_LHS, - 'name' => self::FIXUP_VAR_BRACED_NAME, - ], - Expr\PropertyFetch::class => [ - 'var' => self::FIXUP_DEREF_LHS, - 'name' => self::FIXUP_BRACED_NAME, - ], - Expr\NullsafePropertyFetch::class => [ - 'var' => self::FIXUP_DEREF_LHS, - 'name' => self::FIXUP_BRACED_NAME, - ], - Scalar\InterpolatedString::class => [ - 'parts' => self::FIXUP_ENCAPSED, - ], - ]; - - $binaryOps = [ - BinaryOp\Pow::class, BinaryOp\Mul::class, BinaryOp\Div::class, BinaryOp\Mod::class, - BinaryOp\Plus::class, BinaryOp\Minus::class, BinaryOp\Concat::class, - BinaryOp\ShiftLeft::class, BinaryOp\ShiftRight::class, BinaryOp\Smaller::class, - BinaryOp\SmallerOrEqual::class, BinaryOp\Greater::class, BinaryOp\GreaterOrEqual::class, - BinaryOp\Equal::class, BinaryOp\NotEqual::class, BinaryOp\Identical::class, - BinaryOp\NotIdentical::class, BinaryOp\Spaceship::class, BinaryOp\BitwiseAnd::class, - BinaryOp\BitwiseXor::class, BinaryOp\BitwiseOr::class, BinaryOp\BooleanAnd::class, - BinaryOp\BooleanOr::class, BinaryOp\Coalesce::class, BinaryOp\LogicalAnd::class, - BinaryOp\LogicalXor::class, BinaryOp\LogicalOr::class, - ]; - foreach ($binaryOps as $binaryOp) { - $this->fixupMap[$binaryOp] = [ - 'left' => self::FIXUP_PREC_LEFT, - 'right' => self::FIXUP_PREC_RIGHT - ]; - } - - $prefixOps = [ - Expr\Clone_::class, Expr\BitwiseNot::class, Expr\BooleanNot::class, Expr\UnaryPlus::class, Expr\UnaryMinus::class, - Cast\Int_::class, Cast\Double::class, Cast\String_::class, Cast\Array_::class, - Cast\Object_::class, Cast\Bool_::class, Cast\Unset_::class, Expr\ErrorSuppress::class, - Expr\YieldFrom::class, Expr\Print_::class, Expr\Include_::class, - Expr\Assign::class, Expr\AssignRef::class, AssignOp\Plus::class, AssignOp\Minus::class, - AssignOp\Mul::class, AssignOp\Div::class, AssignOp\Concat::class, AssignOp\Mod::class, - AssignOp\BitwiseAnd::class, AssignOp\BitwiseOr::class, AssignOp\BitwiseXor::class, - AssignOp\ShiftLeft::class, AssignOp\ShiftRight::class, AssignOp\Pow::class, AssignOp\Coalesce::class, - Expr\ArrowFunction::class, Expr\Throw_::class, - ]; - foreach ($prefixOps as $prefixOp) { - $this->fixupMap[$prefixOp] = ['expr' => self::FIXUP_PREC_UNARY]; - } - } - - /** - * Lazily initializes the removal map. - * - * The removal map is used to determine which additional tokens should be removed when a - * certain node is replaced by null. - */ - protected function initializeRemovalMap(): void { - if (isset($this->removalMap)) { - return; - } - - $stripBoth = ['left' => \T_WHITESPACE, 'right' => \T_WHITESPACE]; - $stripLeft = ['left' => \T_WHITESPACE]; - $stripRight = ['right' => \T_WHITESPACE]; - $stripDoubleArrow = ['right' => \T_DOUBLE_ARROW]; - $stripColon = ['left' => ':']; - $stripEquals = ['left' => '=']; - $this->removalMap = [ - 'Expr_ArrayDimFetch->dim' => $stripBoth, - 'ArrayItem->key' => $stripDoubleArrow, - 'Expr_ArrowFunction->returnType' => $stripColon, - 'Expr_Closure->returnType' => $stripColon, - 'Expr_Exit->expr' => $stripBoth, - 'Expr_Ternary->if' => $stripBoth, - 'Expr_Yield->key' => $stripDoubleArrow, - 'Expr_Yield->value' => $stripBoth, - 'Param->type' => $stripRight, - 'Param->default' => $stripEquals, - 'Stmt_Break->num' => $stripBoth, - 'Stmt_Catch->var' => $stripLeft, - 'Stmt_ClassConst->type' => $stripRight, - 'Stmt_ClassMethod->returnType' => $stripColon, - 'Stmt_Class->extends' => ['left' => \T_EXTENDS], - 'Stmt_Enum->scalarType' => $stripColon, - 'Stmt_EnumCase->expr' => $stripEquals, - 'Expr_PrintableNewAnonClass->extends' => ['left' => \T_EXTENDS], - 'Stmt_Continue->num' => $stripBoth, - 'Stmt_Foreach->keyVar' => $stripDoubleArrow, - 'Stmt_Function->returnType' => $stripColon, - 'Stmt_If->else' => $stripLeft, - 'Stmt_Namespace->name' => $stripLeft, - 'Stmt_Property->type' => $stripRight, - 'PropertyItem->default' => $stripEquals, - 'Stmt_Return->expr' => $stripBoth, - 'Stmt_StaticVar->default' => $stripEquals, - 'Stmt_TraitUseAdaptation_Alias->newName' => $stripLeft, - 'Stmt_TryCatch->finally' => $stripLeft, - // 'Stmt_Case->cond': Replace with "default" - // 'Stmt_Class->name': Unclear what to do - // 'Stmt_Declare->stmts': Not a plain node - // 'Stmt_TraitUseAdaptation_Alias->newModifier': Not a plain node - ]; - } - - protected function initializeInsertionMap(): void { - if (isset($this->insertionMap)) { - return; - } - - // TODO: "yield" where both key and value are inserted doesn't work - // [$find, $beforeToken, $extraLeft, $extraRight] - $this->insertionMap = [ - 'Expr_ArrayDimFetch->dim' => ['[', false, null, null], - 'ArrayItem->key' => [null, false, null, ' => '], - 'Expr_ArrowFunction->returnType' => [')', false, ': ', null], - 'Expr_Closure->returnType' => [')', false, ': ', null], - 'Expr_Ternary->if' => ['?', false, ' ', ' '], - 'Expr_Yield->key' => [\T_YIELD, false, null, ' => '], - 'Expr_Yield->value' => [\T_YIELD, false, ' ', null], - 'Param->type' => [null, false, null, ' '], - 'Param->default' => [null, false, ' = ', null], - 'Stmt_Break->num' => [\T_BREAK, false, ' ', null], - 'Stmt_Catch->var' => [null, false, ' ', null], - 'Stmt_ClassMethod->returnType' => [')', false, ': ', null], - 'Stmt_ClassConst->type' => [\T_CONST, false, ' ', null], - 'Stmt_Class->extends' => [null, false, ' extends ', null], - 'Stmt_Enum->scalarType' => [null, false, ' : ', null], - 'Stmt_EnumCase->expr' => [null, false, ' = ', null], - 'Expr_PrintableNewAnonClass->extends' => [null, false, ' extends ', null], - 'Stmt_Continue->num' => [\T_CONTINUE, false, ' ', null], - 'Stmt_Foreach->keyVar' => [\T_AS, false, null, ' => '], - 'Stmt_Function->returnType' => [')', false, ': ', null], - 'Stmt_If->else' => [null, false, ' ', null], - 'Stmt_Namespace->name' => [\T_NAMESPACE, false, ' ', null], - 'Stmt_Property->type' => [\T_VARIABLE, true, null, ' '], - 'PropertyItem->default' => [null, false, ' = ', null], - 'Stmt_Return->expr' => [\T_RETURN, false, ' ', null], - 'Stmt_StaticVar->default' => [null, false, ' = ', null], - //'Stmt_TraitUseAdaptation_Alias->newName' => [T_AS, false, ' ', null], // TODO - 'Stmt_TryCatch->finally' => [null, false, ' ', null], - - // 'Expr_Exit->expr': Complicated due to optional () - // 'Stmt_Case->cond': Conversion from default to case - // 'Stmt_Class->name': Unclear - // 'Stmt_Declare->stmts': Not a proper node - // 'Stmt_TraitUseAdaptation_Alias->newModifier': Not a proper node - ]; - } - - protected function initializeListInsertionMap(): void { - if (isset($this->listInsertionMap)) { - return; - } - - $this->listInsertionMap = [ - // special - //'Expr_ShellExec->parts' => '', // TODO These need to be treated more carefully - //'Scalar_InterpolatedString->parts' => '', - Stmt\Catch_::class . '->types' => '|', - UnionType::class . '->types' => '|', - IntersectionType::class . '->types' => '&', - Stmt\If_::class . '->elseifs' => ' ', - Stmt\TryCatch::class . '->catches' => ' ', - - // comma-separated lists - Expr\Array_::class . '->items' => ', ', - Expr\ArrowFunction::class . '->params' => ', ', - Expr\Closure::class . '->params' => ', ', - Expr\Closure::class . '->uses' => ', ', - Expr\FuncCall::class . '->args' => ', ', - Expr\Isset_::class . '->vars' => ', ', - Expr\List_::class . '->items' => ', ', - Expr\MethodCall::class . '->args' => ', ', - Expr\NullsafeMethodCall::class . '->args' => ', ', - Expr\New_::class . '->args' => ', ', - PrintableNewAnonClassNode::class . '->args' => ', ', - Expr\StaticCall::class . '->args' => ', ', - Stmt\ClassConst::class . '->consts' => ', ', - Stmt\ClassMethod::class . '->params' => ', ', - Stmt\Class_::class . '->implements' => ', ', - Stmt\Enum_::class . '->implements' => ', ', - PrintableNewAnonClassNode::class . '->implements' => ', ', - Stmt\Const_::class . '->consts' => ', ', - Stmt\Declare_::class . '->declares' => ', ', - Stmt\Echo_::class . '->exprs' => ', ', - Stmt\For_::class . '->init' => ', ', - Stmt\For_::class . '->cond' => ', ', - Stmt\For_::class . '->loop' => ', ', - Stmt\Function_::class . '->params' => ', ', - Stmt\Global_::class . '->vars' => ', ', - Stmt\GroupUse::class . '->uses' => ', ', - Stmt\Interface_::class . '->extends' => ', ', - Expr\Match_::class . '->arms' => ', ', - Stmt\Property::class . '->props' => ', ', - Stmt\StaticVar::class . '->vars' => ', ', - Stmt\TraitUse::class . '->traits' => ', ', - Stmt\TraitUseAdaptation\Precedence::class . '->insteadof' => ', ', - Stmt\Unset_::class . '->vars' => ', ', - Stmt\UseUse::class . '->uses' => ', ', - MatchArm::class . '->conds' => ', ', - AttributeGroup::class . '->attrs' => ', ', - PropertyHook::class . '->params' => ', ', - - // statement lists - Expr\Closure::class . '->stmts' => "\n", - Stmt\Case_::class . '->stmts' => "\n", - Stmt\Catch_::class . '->stmts' => "\n", - Stmt\Class_::class . '->stmts' => "\n", - Stmt\Enum_::class . '->stmts' => "\n", - PrintableNewAnonClassNode::class . '->stmts' => "\n", - Stmt\Interface_::class . '->stmts' => "\n", - Stmt\Trait_::class . '->stmts' => "\n", - Stmt\ClassMethod::class . '->stmts' => "\n", - Stmt\Declare_::class . '->stmts' => "\n", - Stmt\Do_::class . '->stmts' => "\n", - Stmt\ElseIf_::class . '->stmts' => "\n", - Stmt\Else_::class . '->stmts' => "\n", - Stmt\Finally_::class . '->stmts' => "\n", - Stmt\Foreach_::class . '->stmts' => "\n", - Stmt\For_::class . '->stmts' => "\n", - Stmt\Function_::class . '->stmts' => "\n", - Stmt\If_::class . '->stmts' => "\n", - Stmt\Namespace_::class . '->stmts' => "\n", - Stmt\Block::class . '->stmts' => "\n", - - // Attribute groups - Stmt\Class_::class . '->attrGroups' => "\n", - Stmt\Enum_::class . '->attrGroups' => "\n", - Stmt\EnumCase::class . '->attrGroups' => "\n", - Stmt\Interface_::class . '->attrGroups' => "\n", - Stmt\Trait_::class . '->attrGroups' => "\n", - Stmt\Function_::class . '->attrGroups' => "\n", - Stmt\ClassMethod::class . '->attrGroups' => "\n", - Stmt\ClassConst::class . '->attrGroups' => "\n", - Stmt\Property::class . '->attrGroups' => "\n", - PrintableNewAnonClassNode::class . '->attrGroups' => ' ', - Expr\Closure::class . '->attrGroups' => ' ', - Expr\ArrowFunction::class . '->attrGroups' => ' ', - Param::class . '->attrGroups' => ' ', - PropertyHook::class . '->attrGroups' => ' ', - - Stmt\Switch_::class . '->cases' => "\n", - Stmt\TraitUse::class . '->adaptations' => "\n", - Stmt\TryCatch::class . '->stmts' => "\n", - Stmt\While_::class . '->stmts' => "\n", - PropertyHook::class . '->body' => "\n", - Stmt\Property::class . '->hooks' => "\n", - Param::class . '->hooks' => "\n", - - // dummy for top-level context - 'File->stmts' => "\n", - ]; - } - - protected function initializeEmptyListInsertionMap(): void { - if (isset($this->emptyListInsertionMap)) { - return; - } - - // TODO Insertion into empty statement lists. - - // [$find, $extraLeft, $extraRight] - $this->emptyListInsertionMap = [ - Expr\ArrowFunction::class . '->params' => ['(', '', ''], - Expr\Closure::class . '->uses' => [')', ' use (', ')'], - Expr\Closure::class . '->params' => ['(', '', ''], - Expr\FuncCall::class . '->args' => ['(', '', ''], - Expr\MethodCall::class . '->args' => ['(', '', ''], - Expr\NullsafeMethodCall::class . '->args' => ['(', '', ''], - Expr\New_::class . '->args' => ['(', '', ''], - PrintableNewAnonClassNode::class . '->args' => ['(', '', ''], - PrintableNewAnonClassNode::class . '->implements' => [null, ' implements ', ''], - Expr\StaticCall::class . '->args' => ['(', '', ''], - Stmt\Class_::class . '->implements' => [null, ' implements ', ''], - Stmt\Enum_::class . '->implements' => [null, ' implements ', ''], - Stmt\ClassMethod::class . '->params' => ['(', '', ''], - Stmt\Interface_::class . '->extends' => [null, ' extends ', ''], - Stmt\Function_::class . '->params' => ['(', '', ''], - Stmt\Interface_::class . '->attrGroups' => [null, '', "\n"], - Stmt\Class_::class . '->attrGroups' => [null, '', "\n"], - Stmt\ClassConst::class . '->attrGroups' => [null, '', "\n"], - Stmt\ClassMethod::class . '->attrGroups' => [null, '', "\n"], - Stmt\Function_::class . '->attrGroups' => [null, '', "\n"], - Stmt\Property::class . '->attrGroups' => [null, '', "\n"], - Stmt\Trait_::class . '->attrGroups' => [null, '', "\n"], - Expr\ArrowFunction::class . '->attrGroups' => [null, '', ' '], - Expr\Closure::class . '->attrGroups' => [null, '', ' '], - PrintableNewAnonClassNode::class . '->attrGroups' => [\T_NEW, ' ', ''], - - /* These cannot be empty to start with: - * Expr_Isset->vars - * Stmt_Catch->types - * Stmt_Const->consts - * Stmt_ClassConst->consts - * Stmt_Declare->declares - * Stmt_Echo->exprs - * Stmt_Global->vars - * Stmt_GroupUse->uses - * Stmt_Property->props - * Stmt_StaticVar->vars - * Stmt_TraitUse->traits - * Stmt_TraitUseAdaptation_Precedence->insteadof - * Stmt_Unset->vars - * Stmt_Use->uses - * UnionType->types - */ - - /* TODO - * Stmt_If->elseifs - * Stmt_TryCatch->catches - * Expr_Array->items - * Expr_List->items - * Stmt_For->init - * Stmt_For->cond - * Stmt_For->loop - */ - ]; - } - - protected function initializeModifierChangeMap(): void { - if (isset($this->modifierChangeMap)) { - return; - } - - $this->modifierChangeMap = [ - Stmt\ClassConst::class . '->flags' => ['pModifiers', \T_CONST], - Stmt\ClassMethod::class . '->flags' => ['pModifiers', \T_FUNCTION], - Stmt\Class_::class . '->flags' => ['pModifiers', \T_CLASS], - Stmt\Property::class . '->flags' => ['pModifiers', \T_VARIABLE], - PrintableNewAnonClassNode::class . '->flags' => ['pModifiers', \T_CLASS], - Param::class . '->flags' => ['pModifiers', \T_VARIABLE], - PropertyHook::class . '->flags' => ['pModifiers', \T_STRING], - Expr\Closure::class . '->static' => ['pStatic', \T_FUNCTION], - Expr\ArrowFunction::class . '->static' => ['pStatic', \T_FN], - //Stmt\TraitUseAdaptation\Alias::class . '->newModifier' => 0, // TODO - ]; - - // List of integer subnodes that are not modifiers: - // Expr_Include->type - // Stmt_GroupUse->type - // Stmt_Use->type - // UseItem->type - } -} diff --git a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/compatibility_tokens.php b/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/compatibility_tokens.php deleted file mode 100644 index 13576c42..00000000 --- a/docker/streamline-src/vendor/nikic/php-parser/lib/PhpParser/compatibility_tokens.php +++ /dev/null @@ -1,68 +0,0 @@ - -
    -  ─                   ─        ─    ─
    -│ │                 │ │      │ │  │ │
    -│ │     ──,         │ │  ──, │ │  │ │  ─
    -│/ \   /  │  │   │  │/  /  │ │/ \─│/  │/
    -│   │─/\─/│─/ \─/│─/│──/\─/│─/\─/ │──/│──/
    -        
    -
    by ⚙️ Configured
    -
    {{ $version }}
    - - Create portable PHP CLI applications w/ PHP Micro - - -HTML); diff --git a/docker/streamline-src/vendor/nunomaduro/termwind/src/Actions/StyleToMethod.php b/docker/streamline-src/vendor/nunomaduro/termwind/src/Actions/StyleToMethod.php deleted file mode 100644 index b17bfbf6..00000000 --- a/docker/streamline-src/vendor/nunomaduro/termwind/src/Actions/StyleToMethod.php +++ /dev/null @@ -1,153 +0,0 @@ - 64, - 'md' => 76, - 'lg' => 102, - 'xl' => 128, - '2xl' => 153, - ]; - - /** - * Creates a new action instance. - */ - public function __construct( - private Styles $styles, - private string $style, - ) { - // .. - } - - /** - * Applies multiple styles to the given styles. - */ - public static function multiple(Styles $styles, string $stylesString): Styles - { - $stylesString = self::sortStyles(array_merge( - $styles->defaultStyles(), - array_filter((array) preg_split('/(?![^\[]*\])\s/', $stylesString)) - )); - - foreach ($stylesString as $style) { - $styles = (new self($styles, $style))->__invoke(); - } - - return $styles; - } - - /** - * Converts the given style to a method name. - */ - public function __invoke(string|int ...$arguments): Styles - { - if (StyleRepository::has($this->style)) { - return StyleRepository::get($this->style)($this->styles, ...$arguments); - } - - $method = $this->applyMediaQuery($this->style); - - if ($method === '') { - return $this->styles; - } - - $method = array_filter( - (array) preg_split('/(?![^\[]*\])-/', $method), - fn ($item) => $item !== false - ); - - $method = array_slice($method, 0, count($method) - count($arguments)); - - $methodName = implode(' ', $method); - $methodName = ucwords($methodName); - $methodName = lcfirst($methodName); - $methodName = str_replace(' ', '', $methodName); - - if ($methodName === '') { - throw StyleNotFound::fromStyle($this->style); - } - - if (! method_exists($this->styles, $methodName)) { - $argument = array_pop($method); - - $arguments[] = is_numeric($argument) ? (int) $argument : (string) $argument; - - return $this->__invoke(...$arguments); - } - - // @phpstan-ignore-next-line - return $this->styles - ->setStyle($this->style) - ->$methodName(...array_reverse($arguments)); - } - - /** - * Sorts all the styles based on the correct render order. - * - * @param string[] $styles - * @return string[] - */ - private static function sortStyles(array $styles): array - { - $keys = array_keys(self::MEDIA_QUERY_BREAKPOINTS); - - usort($styles, function ($a, $b) use ($keys) { - $existsA = (bool) preg_match(self::MEDIA_QUERIES_REGEX, $a, $matchesA); - $existsB = (bool) preg_match(self::MEDIA_QUERIES_REGEX, $b, $matchesB); - - if ($existsA && ! $existsB) { - return 1; - } - - if ($existsA && array_search($matchesA[1], $keys, true) > array_search($matchesB[1], $keys, true)) { - return 1; - } - - return -1; - }); - - return $styles; - } - - /** - * Applies the media query if exists. - */ - private function applyMediaQuery(string $method): string - { - $matches = []; - preg_match(self::MEDIA_QUERIES_REGEX, $method, $matches); - - if (count($matches) < 1) { - return $method; - } - - [, $size, $method] = $matches; - - if ((new Terminal)->width() >= self::MEDIA_QUERY_BREAKPOINTS[$size]) { - return $method; - } - - return ''; - } -} diff --git a/docker/streamline-src/vendor/nunomaduro/termwind/src/Components/Anchor.php b/docker/streamline-src/vendor/nunomaduro/termwind/src/Components/Anchor.php deleted file mode 100644 index 2a61731a..00000000 --- a/docker/streamline-src/vendor/nunomaduro/termwind/src/Components/Anchor.php +++ /dev/null @@ -1,7 +0,0 @@ -|string $content - */ - final public function __construct( - protected OutputInterface $output, - protected array|string $content, - Styles|null $styles = null - ) { - $this->styles = $styles ?? new Styles(defaultStyles: static::$defaultStyles); - $this->styles->setElement($this); - } - - /** - * Creates an element instance with the given styles. - * - * @param array|string $content - * @param array $properties - */ - final public static function fromStyles(OutputInterface $output, array|string $content, string $styles = '', array $properties = []): static - { - $element = new static($output, $content); - if ($properties !== []) { - $element->styles->setProperties($properties); - } - - $elementStyles = StyleToMethod::multiple($element->styles, $styles); - - return new static($output, $content, $elementStyles); - } - - /** - * Get the string representation of the element. - */ - public function toString(): string - { - if (is_array($this->content)) { - $inheritance = new InheritStyles; - $this->content = implode('', $inheritance($this->content, $this->styles)); - } - - return $this->styles->format($this->content); - } - - /** - * @param array $arguments - */ - public function __call(string $name, array $arguments): mixed - { - if (method_exists($this->styles, $name)) { - // @phpstan-ignore-next-line - $result = $this->styles->{$name}(...$arguments); - - if (str_starts_with($name, 'get') || str_starts_with($name, 'has')) { - return $result; - } - } - - return $this; - } - - /** - * Sets the content of the element. - * - * @param array|string $content - */ - final public function setContent(array|string $content): static - { - return new static($this->output, $content, $this->styles); - } - - /** - * Renders the string representation of the element on the output. - */ - final public function render(int $options): void - { - $this->output->writeln($this->toString(), $options); - } - - /** - * Get the string representation of the element. - */ - final public function __toString(): string - { - return $this->toString(); - } -} diff --git a/docker/streamline-src/vendor/nunomaduro/termwind/src/Exceptions/ColorNotFound.php b/docker/streamline-src/vendor/nunomaduro/termwind/src/Exceptions/ColorNotFound.php deleted file mode 100644 index 73b4f444..00000000 --- a/docker/streamline-src/vendor/nunomaduro/termwind/src/Exceptions/ColorNotFound.php +++ /dev/null @@ -1,12 +0,0 @@ -render($html, $options); - } -} - -if (! function_exists('Termwind\terminal')) { - /** - * Returns a Terminal instance. - */ - function terminal(): Terminal - { - return new Terminal; - } -} - -if (! function_exists('Termwind\ask')) { - /** - * Renders a prompt to the user. - * - * @param iterable|null $autocomplete - */ - function ask(string $question, ?iterable $autocomplete = null): mixed - { - return (new Question)->ask($question, $autocomplete); - } -} diff --git a/docker/streamline-src/vendor/nunomaduro/termwind/src/Html/CodeRenderer.php b/docker/streamline-src/vendor/nunomaduro/termwind/src/Html/CodeRenderer.php deleted file mode 100644 index f75898bc..00000000 --- a/docker/streamline-src/vendor/nunomaduro/termwind/src/Html/CodeRenderer.php +++ /dev/null @@ -1,279 +0,0 @@ - - */ - private const THEME = [ - self::TOKEN_STRING => 'text-gray', - self::TOKEN_COMMENT => 'text-gray italic', - self::TOKEN_KEYWORD => 'text-magenta strong', - self::TOKEN_DEFAULT => 'strong', - self::TOKEN_HTML => 'text-blue strong', - - self::ACTUAL_LINE_MARK => 'text-red strong', - self::LINE_NUMBER => 'text-gray', - self::MARKED_LINE_NUMBER => 'italic strong', - self::LINE_NUMBER_DIVIDER => 'text-gray', - ]; - - private string $delimiter = self::DELIMITER_UTF8; - - private string $arrow = self::ARROW_SYMBOL_UTF8; - - private const NO_MARK = ' '; - - /** - * Highlights HTML content from a given node and converts to the content element. - */ - public function toElement(Node $node): Element - { - $line = max((int) $node->getAttribute('line'), 0); - $startLine = max((int) $node->getAttribute('start-line'), 1); - - $html = $node->getHtml(); - $lines = explode("\n", $html); - $extraSpaces = $this->findExtraSpaces($lines); - - if ($extraSpaces !== '') { - $lines = array_map(static function (string $line) use ($extraSpaces): string { - return str_starts_with($line, $extraSpaces) ? substr($line, strlen($extraSpaces)) : $line; - }, $lines); - $html = implode("\n", $lines); - } - - $tokenLines = $this->getHighlightedLines(trim($html, "\n"), $startLine); - $lines = $this->colorLines($tokenLines); - $lines = $this->lineNumbers($lines, $line); - - return Termwind::div(trim($lines, "\n")); - } - - /** - * Finds extra spaces which should be removed from HTML. - * - * @param array $lines - */ - private function findExtraSpaces(array $lines): string - { - foreach ($lines as $line) { - if ($line === '') { - continue; - } - - if (preg_replace('/\s+/', '', $line) === '') { - return $line; - } - } - - return ''; - } - - /** - * Returns content split into lines with numbers. - * - * @return array> - */ - private function getHighlightedLines(string $source, int $startLine): array - { - $source = str_replace(["\r\n", "\r"], "\n", $source); - $tokens = $this->tokenize($source); - - return $this->splitToLines($tokens, $startLine - 1); - } - - /** - * Splits content into tokens. - * - * @return array - */ - private function tokenize(string $source): array - { - $tokens = token_get_all($source); - - $output = []; - $currentType = null; - $newType = self::TOKEN_KEYWORD; - $buffer = ''; - - foreach ($tokens as $token) { - if (is_array($token)) { - if ($token[0] !== T_WHITESPACE) { - $newType = match ($token[0]) { - T_OPEN_TAG, T_OPEN_TAG_WITH_ECHO, T_CLOSE_TAG, T_STRING, T_VARIABLE, - T_DIR, T_FILE, T_METHOD_C, T_DNUMBER, T_LNUMBER, T_NS_C, - T_LINE, T_CLASS_C, T_FUNC_C, T_TRAIT_C => self::TOKEN_DEFAULT, - T_COMMENT, T_DOC_COMMENT => self::TOKEN_COMMENT, - T_ENCAPSED_AND_WHITESPACE, T_CONSTANT_ENCAPSED_STRING => self::TOKEN_STRING, - T_INLINE_HTML => self::TOKEN_HTML, - default => self::TOKEN_KEYWORD - }; - } - } else { - $newType = $token === '"' ? self::TOKEN_STRING : self::TOKEN_KEYWORD; - } - - if ($currentType === null) { - $currentType = $newType; - } - - if ($currentType !== $newType) { - $output[] = [$currentType, $buffer]; - $buffer = ''; - $currentType = $newType; - } - - $buffer .= is_array($token) ? $token[1] : $token; - } - - $output[] = [$newType, $buffer]; - - return $output; - } - - /** - * Splits tokens into lines. - * - * @param array $tokens - * @return array> - */ - private function splitToLines(array $tokens, int $startLine): array - { - $lines = []; - - $line = []; - foreach ($tokens as $token) { - foreach (explode("\n", $token[1]) as $count => $tokenLine) { - if ($count > 0) { - $lines[$startLine++] = $line; - $line = []; - } - - if ($tokenLine === '') { - continue; - } - - $line[] = [$token[0], $tokenLine]; - } - } - - $lines[$startLine++] = $line; - - return $lines; - } - - /** - * Applies colors to tokens according to a color schema. - * - * @param array> $tokenLines - * @return array - */ - private function colorLines(array $tokenLines): array - { - $lines = []; - - foreach ($tokenLines as $lineCount => $tokenLine) { - $line = ''; - foreach ($tokenLine as $token) { - [$tokenType, $tokenValue] = $token; - $line .= $this->styleToken($tokenType, $tokenValue); - } - - $lines[$lineCount] = $line; - } - - return $lines; - } - - /** - * Prepends line numbers into lines. - * - * @param array $lines - */ - private function lineNumbers(array $lines, int $markLine): string - { - $lastLine = (int) array_key_last($lines); - $lineLength = strlen((string) ($lastLine + 1)); - $lineLength = $lineLength < self::WIDTH ? self::WIDTH : $lineLength; - - $snippet = ''; - $mark = ' '.$this->arrow.' '; - foreach ($lines as $i => $line) { - $coloredLineNumber = $this->coloredLineNumber(self::LINE_NUMBER, $i, $lineLength); - - if (0 !== $markLine) { - $snippet .= ($markLine === $i + 1 - ? $this->styleToken(self::ACTUAL_LINE_MARK, $mark) - : self::NO_MARK - ); - - $coloredLineNumber = ($markLine === $i + 1 ? - $this->coloredLineNumber(self::MARKED_LINE_NUMBER, $i, $lineLength) : - $coloredLineNumber - ); - } - - $snippet .= $coloredLineNumber; - $snippet .= $this->styleToken(self::LINE_NUMBER_DIVIDER, $this->delimiter); - $snippet .= $line.PHP_EOL; - } - - return $snippet; - } - - /** - * Formats line number and applies color according to a color schema. - */ - private function coloredLineNumber(string $token, int $lineNumber, int $length): string - { - return $this->styleToken( - $token, str_pad((string) ($lineNumber + 1), $length, ' ', STR_PAD_LEFT) - ); - } - - /** - * Formats string and applies color according to a color schema. - */ - private function styleToken(string $token, string $string): string - { - return (string) Termwind::span($string, self::THEME[$token]); - } -} diff --git a/docker/streamline-src/vendor/nunomaduro/termwind/src/Html/TableRenderer.php b/docker/streamline-src/vendor/nunomaduro/termwind/src/Html/TableRenderer.php deleted file mode 100644 index 81859a4b..00000000 --- a/docker/streamline-src/vendor/nunomaduro/termwind/src/Html/TableRenderer.php +++ /dev/null @@ -1,251 +0,0 @@ -output = new BufferedOutput( - // Content should output as is, without changes - OutputInterface::VERBOSITY_NORMAL | OutputInterface::OUTPUT_RAW, - true - ); - - $this->table = new Table($this->output); - } - - /** - * Converts table output to the content element. - */ - public function toElement(Node $node): Element - { - $this->parseTable($node); - $this->table->render(); - - $content = preg_replace('/\n$/', '', $this->output->fetch()) ?? ''; - - return Termwind::div($content, '', [ - 'isFirstChild' => $node->isFirstChild(), - ]); - } - - /** - * Looks for thead, tfoot, tbody, tr elements in a given DOM and appends rows from them to the Symfony table object. - */ - private function parseTable(Node $node): void - { - $style = $node->getAttribute('style'); - if ($style !== '') { - $this->table->setStyle($style); - } - - foreach ($node->getChildNodes() as $child) { - match ($child->getName()) { - 'thead' => $this->parseHeader($child), - 'tfoot' => $this->parseFoot($child), - 'tbody' => $this->parseBody($child), - default => $this->parseRows($child) - }; - } - } - - /** - * Looks for table header title and tr elements in a given thead DOM node and adds them to the Symfony table object. - */ - private function parseHeader(Node $node): void - { - $title = $node->getAttribute('title'); - - if ($title !== '') { - $this->table->getStyle()->setHeaderTitleFormat( - $this->parseTitleStyle($node) - ); - $this->table->setHeaderTitle($title); - } - - foreach ($node->getChildNodes() as $child) { - if ($child->isName('tr')) { - foreach ($this->parseRow($child) as $row) { - if (! is_array($row)) { - continue; - } - $this->table->setHeaders($row); - } - } - } - } - - /** - * Looks for table footer and tr elements in a given tfoot DOM node and adds them to the Symfony table object. - */ - private function parseFoot(Node $node): void - { - $title = $node->getAttribute('title'); - - if ($title !== '') { - $this->table->getStyle()->setFooterTitleFormat( - $this->parseTitleStyle($node) - ); - $this->table->setFooterTitle($title); - } - - foreach ($node->getChildNodes() as $child) { - if ($child->isName('tr')) { - $rows = iterator_to_array($this->parseRow($child)); - if (count($rows) > 0) { - $this->table->addRow(new TableSeparator); - $this->table->addRows($rows); - } - } - } - } - - /** - * Looks for tr elements in a given DOM node and adds them to the Symfony table object. - */ - private function parseBody(Node $node): void - { - foreach ($node->getChildNodes() as $child) { - if ($child->isName('tr')) { - $this->parseRows($child); - } - } - } - - /** - * Parses table tr elements. - */ - private function parseRows(Node $node): void - { - foreach ($this->parseRow($node) as $row) { - $this->table->addRow($row); - } - } - - /** - * Looks for th, td elements in a given DOM node and converts them to a table cells. - * - * @return Iterator|TableSeparator> - */ - private function parseRow(Node $node): Iterator - { - $row = []; - - foreach ($node->getChildNodes() as $child) { - if ($child->isName('th') || $child->isName('td')) { - $align = $child->getAttribute('align'); - - $class = $child->getClassAttribute(); - - if ($child->isName('th')) { - $class .= ' strong'; - } - - $text = (string) (new HtmlRenderer)->parse( - trim(preg_replace('//', "\n", $child->getHtml()) ?? '') - ); - - if ((bool) preg_match(Styles::STYLING_REGEX, $text)) { - $class .= ' font-normal'; - } - - $row[] = new TableCell( - // I need only spaces after applying margin, padding and width except tags. - // There is no place for tags, they broke cell formatting. - (string) Termwind::span($text, $class), - [ - // Gets rowspan and colspan from tr and td tag attributes - 'colspan' => max((int) $child->getAttribute('colspan'), 1), - 'rowspan' => max((int) $child->getAttribute('rowspan'), 1), - - // There are background and foreground and options - 'style' => $this->parseCellStyle( - $class, - $align === '' ? TableCellStyle::DEFAULT_ALIGN : $align - ), - ] - ); - } - } - - if ($row !== []) { - yield $row; - } - - $border = (int) $node->getAttribute('border'); - for ($i = $border; $i--; $i > 0) { - yield new TableSeparator; - } - } - - /** - * Parses tr, td tag class attribute and passes bg, fg and options to a table cell style. - */ - private function parseCellStyle(string $styles, string $align = TableCellStyle::DEFAULT_ALIGN): TableCellStyle - { - // I use this empty span for getting styles for bg, fg and options - // It will be a good idea to get properties without element object and then pass them to an element object - $element = Termwind::span('%s', $styles); - - $styles = []; - - $colors = $element->getProperties()['colors'] ?? []; - - foreach ($colors as $option => $content) { - if (in_array($option, ['fg', 'bg'], true)) { - $content = is_array($content) ? array_pop($content) : $content; - - $styles[] = "$option=$content"; - } - } - - // If there are no styles we don't need extra tags - if ($styles === []) { - $cellFormat = '%s'; - } else { - $cellFormat = '<'.implode(';', $styles).'>%s'; - } - - return new TableCellStyle([ - 'align' => $align, - 'cellFormat' => $cellFormat, - ]); - } - - /** - * Get styled representation of title. - */ - private function parseTitleStyle(Node $node): string - { - return (string) Termwind::span(' %s ', $node->getClassAttribute()); - } -} diff --git a/docker/streamline-src/vendor/nunomaduro/termwind/src/HtmlRenderer.php b/docker/streamline-src/vendor/nunomaduro/termwind/src/HtmlRenderer.php deleted file mode 100644 index 4f4d6b83..00000000 --- a/docker/streamline-src/vendor/nunomaduro/termwind/src/HtmlRenderer.php +++ /dev/null @@ -1,116 +0,0 @@ -parse($html)->render($options); - } - - /** - * Parses the given html. - */ - public function parse(string $html): Components\Element - { - $dom = new DOMDocument; - - if (strip_tags($html) === $html) { - return Termwind::span($html); - } - - $html = ''.trim($html); - $dom->loadHTML($html, LIBXML_NOERROR | LIBXML_COMPACT | LIBXML_HTML_NODEFDTD | LIBXML_NOBLANKS | LIBXML_NOXMLDECL); - - /** @var DOMNode $body */ - $body = $dom->getElementsByTagName('body')->item(0); - $el = $this->convert(new Node($body)); - - // @codeCoverageIgnoreStart - return is_string($el) - ? Termwind::span($el) - : $el; - // @codeCoverageIgnoreEnd - } - - /** - * Convert a tree of DOM nodes to a tree of termwind elements. - */ - private function convert(Node $node): Components\Element|string - { - $children = []; - - if ($node->isName('table')) { - return (new TableRenderer)->toElement($node); - } elseif ($node->isName('code')) { - return (new CodeRenderer)->toElement($node); - } elseif ($node->isName('pre')) { - return (new PreRenderer)->toElement($node); - } - - foreach ($node->getChildNodes() as $child) { - $children[] = $this->convert($child); - } - - $children = array_filter($children, fn ($child) => $child !== ''); - - return $this->toElement($node, $children); - } - - /** - * Convert a given DOM node to it's termwind element equivalent. - * - * @param array $children - */ - private function toElement(Node $node, array $children): Components\Element|string - { - if ($node->isText() || $node->isComment()) { - return (string) $node; - } - - /** @var array $properties */ - $properties = [ - 'isFirstChild' => $node->isFirstChild(), - ]; - - $styles = $node->getClassAttribute(); - - return match ($node->getName()) { - 'body' => $children[0], // Pick only the first element from the body node - 'div' => Termwind::div($children, $styles, $properties), - 'p' => Termwind::paragraph($children, $styles, $properties), - 'ul' => Termwind::ul($children, $styles, $properties), - 'ol' => Termwind::ol($children, $styles, $properties), - 'li' => Termwind::li($children, $styles, $properties), - 'dl' => Termwind::dl($children, $styles, $properties), - 'dt' => Termwind::dt($children, $styles, $properties), - 'dd' => Termwind::dd($children, $styles, $properties), - 'span' => Termwind::span($children, $styles, $properties), - 'br' => Termwind::breakLine($styles, $properties), - 'strong' => Termwind::span($children, $styles, $properties)->strong(), - 'b' => Termwind::span($children, $styles, $properties)->fontBold(), - 'em', 'i' => Termwind::span($children, $styles, $properties)->italic(), - 'u' => Termwind::span($children, $styles, $properties)->underline(), - 's' => Termwind::span($children, $styles, $properties)->lineThrough(), - 'a' => Termwind::anchor($children, $styles, $properties)->href($node->getAttribute('href')), - 'hr' => Termwind::hr($styles, $properties), - default => Termwind::div($children, $styles, $properties), - }; - } -} diff --git a/docker/streamline-src/vendor/nunomaduro/termwind/src/Question.php b/docker/streamline-src/vendor/nunomaduro/termwind/src/Question.php deleted file mode 100644 index f20682bd..00000000 --- a/docker/streamline-src/vendor/nunomaduro/termwind/src/Question.php +++ /dev/null @@ -1,93 +0,0 @@ -helper = $helper ?? new QuestionHelper; - } - - /** - * Sets the streamable input implementation. - */ - public static function setStreamableInput(StreamableInputInterface|null $streamableInput): void - { - self::$streamableInput = $streamableInput ?? new ArgvInput; - } - - /** - * Gets the streamable input implementation. - */ - public static function getStreamableInput(): StreamableInputInterface - { - return self::$streamableInput ??= new ArgvInput; - } - - /** - * Renders a prompt to the user. - * - * @param iterable|null $autocomplete - */ - public function ask(string $question, ?iterable $autocomplete = null): mixed - { - $html = (new HtmlRenderer)->parse($question)->toString(); - - $question = new SymfonyQuestion($html); - - if ($autocomplete !== null) { - $question->setAutocompleterValues($autocomplete); - } - - $output = Termwind::getRenderer(); - - if ($output instanceof SymfonyStyle) { - $property = (new ReflectionClass(SymfonyStyle::class)) - ->getProperty('questionHelper'); - - $property->setAccessible(true); - - $currentHelper = $property->isInitialized($output) - ? $property->getValue($output) - : new SymfonyQuestionHelper; - - $property->setValue($output, new QuestionHelper); - - try { - return $output->askQuestion($question); - } finally { - $property->setValue($output, $currentHelper); - } - } - - return $this->helper->ask( - self::getStreamableInput(), - Termwind::getRenderer(), - $question, - ); - } -} diff --git a/docker/streamline-src/vendor/nunomaduro/termwind/src/Repositories/Styles.php b/docker/streamline-src/vendor/nunomaduro/termwind/src/Repositories/Styles.php deleted file mode 100644 index 8c1d6f67..00000000 --- a/docker/streamline-src/vendor/nunomaduro/termwind/src/Repositories/Styles.php +++ /dev/null @@ -1,58 +0,0 @@ - - */ - private static array $storage = []; - - /** - * Creates a new style from the given arguments. - * - * @param (Closure(StylesValueObject $element, string|int ...$arguments): StylesValueObject)|null $callback - */ - public static function create(string $name, ?Closure $callback = null): Style - { - self::$storage[$name] = $style = new Style( - $callback ?? static fn (StylesValueObject $styles) => $styles - ); - - return $style; - } - - /** - * Removes all existing styles. - */ - public static function flush(): void - { - self::$storage = []; - } - - /** - * Checks a style with the given name exists. - */ - public static function has(string $name): bool - { - return array_key_exists($name, self::$storage); - } - - /** - * Gets the style with the given name. - */ - public static function get(string $name): Style - { - return self::$storage[$name]; - } -} diff --git a/docker/streamline-src/vendor/nunomaduro/termwind/src/Terminal.php b/docker/streamline-src/vendor/nunomaduro/termwind/src/Terminal.php deleted file mode 100644 index d49b941a..00000000 --- a/docker/streamline-src/vendor/nunomaduro/termwind/src/Terminal.php +++ /dev/null @@ -1,50 +0,0 @@ -terminal = $terminal ?? new ConsoleTerminal; - } - - /** - * Gets the terminal width. - */ - public function width(): int - { - return $this->terminal->getWidth(); - } - - /** - * Gets the terminal height. - */ - public function height(): int - { - return $this->terminal->getHeight(); - } - - /** - * Clears the terminal screen. - */ - public function clear(): void - { - Termwind::getRenderer()->write("\ec"); - } -} diff --git a/docker/streamline-src/vendor/nunomaduro/termwind/src/Termwind.php b/docker/streamline-src/vendor/nunomaduro/termwind/src/Termwind.php deleted file mode 100644 index 6dcaaed7..00000000 --- a/docker/streamline-src/vendor/nunomaduro/termwind/src/Termwind.php +++ /dev/null @@ -1,300 +0,0 @@ -|string $content - * @param array $properties - */ - public static function div(array|string $content = '', string $styles = '', array $properties = []): Components\Div - { - $content = self::prepareElements($content, $styles); - - return Components\Div::fromStyles( - self::getRenderer(), $content, $styles, $properties - ); - } - - /** - * Creates a paragraph element instance. - * - * @param array|string $content - * @param array $properties - */ - public static function paragraph(array|string $content = '', string $styles = '', array $properties = []): Components\Paragraph - { - $content = self::prepareElements($content, $styles); - - return Components\Paragraph::fromStyles( - self::getRenderer(), $content, $styles, $properties - ); - } - - /** - * Creates a span element instance with the given style. - * - * @param array|string $content - * @param array $properties - */ - public static function span(array|string $content = '', string $styles = '', array $properties = []): Components\Span - { - $content = self::prepareElements($content, $styles); - - return Components\Span::fromStyles( - self::getRenderer(), $content, $styles, $properties - ); - } - - /** - * Creates an element instance with raw content. - * - * @param array|string $content - */ - public static function raw(array|string $content = ''): Components\Raw - { - return Components\Raw::fromStyles( - self::getRenderer(), $content - ); - } - - /** - * Creates an anchor element instance with the given style. - * - * @param array|string $content - * @param array $properties - */ - public static function anchor(array|string $content = '', string $styles = '', array $properties = []): Components\Anchor - { - $content = self::prepareElements($content, $styles); - - return Components\Anchor::fromStyles( - self::getRenderer(), $content, $styles, $properties - ); - } - - /** - * Creates an unordered list instance. - * - * @param array $content - * @param array $properties - */ - public static function ul(array $content = [], string $styles = '', array $properties = []): Components\Ul - { - $ul = Components\Ul::fromStyles( - self::getRenderer(), '', $styles, $properties - ); - - $content = self::prepareElements( - $content, - $styles, - static function ($li) use ($ul): string|Element { - if (is_string($li)) { - return $li; - } - - if (! $li instanceof Components\Li) { - throw new InvalidChild('Unordered lists only accept `li` as child'); - } - - return match (true) { - $li->hasStyle('list-none') => $li, - $ul->hasStyle('list-none') => $li->addStyle('list-none'), - $ul->hasStyle('list-square') => $li->addStyle('list-square'), - $ul->hasStyle('list-disc') => $li->addStyle('list-disc'), - default => $li->addStyle('list-none'), - }; - } - ); - - return $ul->setContent($content); - } - - /** - * Creates an ordered list instance. - * - * @param array $content - * @param array $properties - */ - public static function ol(array $content = [], string $styles = '', array $properties = []): Components\Ol - { - $ol = Components\Ol::fromStyles( - self::getRenderer(), '', $styles, $properties - ); - - $index = 0; - - $content = self::prepareElements( - $content, - $styles, - static function ($li) use ($ol, &$index): string|Element { - if (is_string($li)) { - return $li; - } - - if (! $li instanceof Components\Li) { - throw new InvalidChild('Ordered lists only accept `li` as child'); - } - - return match (true) { - $li->hasStyle('list-none') => $li->addStyle('list-none'), - $ol->hasStyle('list-none') => $li->addStyle('list-none'), - $ol->hasStyle('list-decimal') => $li->addStyle('list-decimal-'.(++$index)), - default => $li->addStyle('list-none'), - }; - } - ); - - return $ol->setContent($content); - } - - /** - * Creates a list item instance. - * - * @param array|string $content - * @param array $properties - */ - public static function li(array|string $content = '', string $styles = '', array $properties = []): Components\Li - { - $content = self::prepareElements($content, $styles); - - return Components\Li::fromStyles( - self::getRenderer(), $content, $styles, $properties - ); - } - - /** - * Creates a description list instance. - * - * @param array $content - * @param array $properties - */ - public static function dl(array $content = [], string $styles = '', array $properties = []): Components\Dl - { - $content = self::prepareElements( - $content, - $styles, - static function ($element): string|Element { - if (is_string($element)) { - return $element; - } - - if (! $element instanceof Components\Dt && ! $element instanceof Components\Dd) { - throw new InvalidChild('Description lists only accept `dt` and `dd` as children'); - } - - return $element; - } - ); - - return Components\Dl::fromStyles( - self::getRenderer(), $content, $styles, $properties - ); - } - - /** - * Creates a description term instance. - * - * @param array|string $content - * @param array $properties - */ - public static function dt(array|string $content = '', string $styles = '', array $properties = []): Components\Dt - { - $content = self::prepareElements($content, $styles); - - return Components\Dt::fromStyles( - self::getRenderer(), $content, $styles, $properties - ); - } - - /** - * Creates a description details instance. - * - * @param array|string $content - * @param array $properties - */ - public static function dd(array|string $content = '', string $styles = '', array $properties = []): Components\Dd - { - $content = self::prepareElements($content, $styles); - - return Components\Dd::fromStyles( - self::getRenderer(), $content, $styles, $properties - ); - } - - /** - * Creates a horizontal rule instance. - * - * @param array $properties - */ - public static function hr(string $styles = '', array $properties = []): Components\Hr - { - return Components\Hr::fromStyles( - self::getRenderer(), '', $styles, $properties - ); - } - - /** - * Creates an break line element instance. - * - * @param array $properties - */ - public static function breakLine(string $styles = '', array $properties = []): Components\BreakLine - { - return Components\BreakLine::fromStyles( - self::getRenderer(), '', $styles, $properties - ); - } - - /** - * Gets the current renderer instance. - */ - public static function getRenderer(): OutputInterface - { - return self::$renderer ??= new ConsoleOutput; - } - - /** - * Convert child elements to a string. - * - * @param array|string $elements - * @return array - */ - private static function prepareElements($elements, string $styles = '', Closure|null $callback = null): array - { - if ($callback === null) { - $callback = static fn ($element): string|Element => $element; - } - - $elements = is_array($elements) ? $elements : [$elements]; - - return array_map($callback, $elements); - } -} diff --git a/docker/streamline-src/vendor/nunomaduro/termwind/src/ValueObjects/Node.php b/docker/streamline-src/vendor/nunomaduro/termwind/src/ValueObjects/Node.php deleted file mode 100644 index d42ca795..00000000 --- a/docker/streamline-src/vendor/nunomaduro/termwind/src/ValueObjects/Node.php +++ /dev/null @@ -1,203 +0,0 @@ -node->nodeValue ?? ''; - } - - /** - * Gets child nodes of the node. - * - * @return Generator - */ - public function getChildNodes(): Generator - { - foreach ($this->node->childNodes as $node) { - yield new self($node); - } - } - - /** - * Checks if the node is a text. - */ - public function isText(): bool - { - return $this->node instanceof \DOMText; - } - - /** - * Checks if the node is a comment. - */ - public function isComment(): bool - { - return $this->node instanceof \DOMComment; - } - - /** - * Compares the current node name with a given name. - */ - public function isName(string $name): bool - { - return $this->getName() === $name; - } - - /** - * Returns the current node type name. - */ - public function getName(): string - { - return $this->node->nodeName; - } - - /** - * Returns value of [class] attribute. - */ - public function getClassAttribute(): string - { - return $this->getAttribute('class'); - } - - /** - * Returns value of attribute with a given name. - */ - public function getAttribute(string $name): string - { - if ($this->node instanceof \DOMElement) { - return $this->node->getAttribute($name); - } - - return ''; - } - - /** - * Checks if the node is empty. - */ - public function isEmpty(): bool - { - return $this->isText() && preg_replace('/\s+/', '', $this->getValue()) === ''; - } - - /** - * Gets the previous sibling from the node. - */ - public function getPreviousSibling(): static|null - { - $node = $this->node; - - while ($node = $node->previousSibling) { - $node = new self($node); - - if ($node->isEmpty()) { - $node = $node->node; - - continue; - } - - if (! $node->isComment()) { - return $node; - } - - $node = $node->node; - } - - return is_null($node) ? null : new self($node); - } - - /** - * Gets the next sibling from the node. - */ - public function getNextSibling(): static|null - { - $node = $this->node; - - while ($node = $node->nextSibling) { - $node = new self($node); - - if ($node->isEmpty()) { - $node = $node->node; - - continue; - } - - if (! $node->isComment()) { - return $node; - } - - $node = $node->node; - } - - return is_null($node) ? null : new self($node); - } - - /** - * Checks if the node is the first child. - */ - public function isFirstChild(): bool - { - return is_null($this->getPreviousSibling()); - } - - /** - * Gets the inner HTML representation of the node including child nodes. - */ - public function getHtml(): string - { - $html = ''; - foreach ($this->node->childNodes as $child) { - if ($child->ownerDocument instanceof \DOMDocument) { - $html .= $child->ownerDocument->saveXML($child); - } - } - - return html_entity_decode($html); - } - - /** - * Converts the node to a string. - */ - public function __toString(): string - { - if ($this->isComment()) { - return ''; - } - - if ($this->getValue() === ' ') { - return ' '; - } - - if ($this->isEmpty()) { - return ''; - } - - $text = preg_replace('/\s+/', ' ', $this->getValue()) ?? ''; - - if (is_null($this->getPreviousSibling())) { - $text = ltrim($text); - } - - if (is_null($this->getNextSibling())) { - $text = rtrim($text); - } - - return $text; - } -} diff --git a/docker/streamline-src/vendor/nunomaduro/termwind/src/ValueObjects/Style.php b/docker/streamline-src/vendor/nunomaduro/termwind/src/ValueObjects/Style.php deleted file mode 100644 index f1242e8a..00000000 --- a/docker/streamline-src/vendor/nunomaduro/termwind/src/ValueObjects/Style.php +++ /dev/null @@ -1,70 +0,0 @@ -callback; - - $this->callback = static function ( - Styles $formatter, - string|int ...$arguments - ) use ($callback, $styles): Styles { - $formatter = $callback($formatter, ...$arguments); - - return StyleToMethod::multiple($formatter, $styles); - }; - } - - /** - * Sets the color to the style. - */ - public function color(string $color): void - { - if (preg_match('/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/', $color) < 1) { - throw new InvalidColor(sprintf('The color %s is invalid.', $color)); - } - - $this->color = $color; - } - - /** - * Gets the color. - */ - public function getColor(): string - { - return $this->color; - } - - /** - * Styles the given formatter with this style. - */ - public function __invoke(Styles $styles, string|int ...$arguments): Styles - { - return ($this->callback)($styles, ...$arguments); - } -} diff --git a/docker/streamline-src/vendor/nunomaduro/termwind/src/ValueObjects/Styles.php b/docker/streamline-src/vendor/nunomaduro/termwind/src/ValueObjects/Styles.php deleted file mode 100644 index b29ee056..00000000 --- a/docker/streamline-src/vendor/nunomaduro/termwind/src/ValueObjects/Styles.php +++ /dev/null @@ -1,1060 +0,0 @@ -|\\e\[\d+m/"; - - /** @var array */ - private array $styles = []; - - private ?Element $element = null; - - /** - * Creates a Style formatter instance. - * - * @param array $properties - * @param array, array): string> $textModifiers - * @param array): string> $styleModifiers - * @param string[] $defaultStyles - */ - final public function __construct( - private array $properties = [ - 'colors' => [], - 'options' => [], - 'isFirstChild' => false, - ], - private array $textModifiers = [], - private array $styleModifiers = [], - private array $defaultStyles = [] - ) {} - - /** - * @return $this - */ - public function setElement(Element $element): self - { - $this->element = $element; - - return $this; - } - - /** - * Gets default styles. - * - * @return string[] - */ - public function defaultStyles(): array - { - return $this->defaultStyles; - } - - /** - * Gets the element's style properties. - * - * @return array - */ - final public function getProperties(): array - { - return $this->properties; - } - - /** - * Sets the element's style properties. - * - * @param array $properties - */ - public function setProperties(array $properties): self - { - $this->properties = $properties; - - return $this; - } - - /** - * Sets the styles to the element. - */ - final public function setStyle(string $style): self - { - $this->styles = array_unique(array_merge($this->styles, [$style])); - - return $this; - } - - /** - * Checks if the element has the style. - */ - final public function hasStyle(string $style): bool - { - return in_array($style, $this->styles, true); - } - - /** - * Adds a style to the element. - */ - final public function addStyle(string $style): self - { - return StyleToMethod::multiple($this, $style); - } - - /** - * Inherit styles from given Styles object. - */ - final public function inheritFromStyles(self $styles): self - { - foreach (['ml', 'mr', 'pl', 'pr', 'width', 'minWidth', 'maxWidth', 'spaceY', 'spaceX'] as $style) { - $this->properties['parentStyles'][$style] = array_merge( - $this->properties['parentStyles'][$style] ?? [], - $styles->properties['parentStyles'][$style] ?? [] - ); - - $this->properties['parentStyles'][$style][] = $styles->properties['styles'][$style] ?? 0; - } - - $this->properties['parentStyles']['justifyContent'] = $styles->properties['styles']['justifyContent'] ?? false; - - foreach (['bg', 'fg'] as $colorType) { - $value = (array) ($this->properties['colors'][$colorType] ?? []); - $parentValue = (array) ($styles->properties['colors'][$colorType] ?? []); - - if ($value === [] && $parentValue !== []) { - $this->properties['colors'][$colorType] = $styles->properties['colors'][$colorType]; - } - } - - if (! is_null($this->properties['options']['bold'] ?? null) || - ! is_null($styles->properties['options']['bold'] ?? null)) { - $this->properties['options']['bold'] = $this->properties['options']['bold'] - ?? $styles->properties['options']['bold'] - ?? false; - } - - return $this; - } - - /** - * Adds a background color to the element. - */ - final public function bg(string $color, int $variant = 0): self - { - return $this->with(['colors' => [ - 'bg' => $this->getColorVariant($color, $variant), - ]]); - } - - /** - * Adds a bold style to the element. - */ - final public function fontBold(): self - { - return $this->with(['options' => [ - 'bold' => true, - ]]); - } - - /** - * Removes the bold style on the element. - */ - final public function fontNormal(): self - { - return $this->with(['options' => [ - 'bold' => false, - ]]); - } - - /** - * Adds a bold style to the element. - */ - final public function strong(): self - { - $this->styleModifiers[__METHOD__] = static fn ($text): string => sprintf("\e[1m%s\e[0m", $text); - - return $this; - } - - /** - * Adds an italic style to the element. - */ - final public function italic(): self - { - $this->styleModifiers[__METHOD__] = static fn ($text): string => sprintf("\e[3m%s\e[0m", $text); - - return $this; - } - - /** - * Adds an underline style. - */ - final public function underline(): self - { - $this->styleModifiers[__METHOD__] = static fn ($text): string => sprintf("\e[4m%s\e[0m", $text); - - return $this; - } - - /** - * Adds the given margin left to the element. - */ - final public function ml(int $margin): self - { - return $this->with(['styles' => [ - 'ml' => $margin, - ]]); - } - - /** - * Adds the given margin right to the element. - */ - final public function mr(int $margin): self - { - return $this->with(['styles' => [ - 'mr' => $margin, - ]]); - } - - /** - * Adds the given margin bottom to the element. - */ - final public function mb(int $margin): self - { - return $this->with(['styles' => [ - 'mb' => $margin, - ]]); - } - - /** - * Adds the given margin top to the element. - */ - final public function mt(int $margin): self - { - return $this->with(['styles' => [ - 'mt' => $margin, - ]]); - } - - /** - * Adds the given horizontal margin to the element. - */ - final public function mx(int $margin): self - { - return $this->with(['styles' => [ - 'ml' => $margin, - 'mr' => $margin, - ]]); - } - - /** - * Adds the given vertical margin to the element. - */ - final public function my(int $margin): self - { - return $this->with(['styles' => [ - 'mt' => $margin, - 'mb' => $margin, - ]]); - } - - /** - * Adds the given margin to the element. - */ - final public function m(int $margin): self - { - return $this->my($margin)->mx($margin); - } - - /** - * Adds the given padding left to the element. - */ - final public function pl(int $padding): static - { - return $this->with(['styles' => [ - 'pl' => $padding, - ]]); - } - - /** - * Adds the given padding right. - */ - final public function pr(int $padding): static - { - return $this->with(['styles' => [ - 'pr' => $padding, - ]]); - } - - /** - * Adds the given horizontal padding. - */ - final public function px(int $padding): self - { - return $this->pl($padding)->pr($padding); - } - - /** - * Adds the given padding top. - */ - final public function pt(int $padding): static - { - return $this->with(['styles' => [ - 'pt' => $padding, - ]]); - } - - /** - * Adds the given padding bottom. - */ - final public function pb(int $padding): static - { - return $this->with(['styles' => [ - 'pb' => $padding, - ]]); - } - - /** - * Adds the given vertical padding. - */ - final public function py(int $padding): self - { - return $this->pt($padding)->pb($padding); - } - - /** - * Adds the given padding. - */ - final public function p(int $padding): self - { - return $this->pt($padding)->pr($padding)->pb($padding)->pl($padding); - } - - /** - * Adds the given vertical margin to the childs, ignoring the first child. - */ - final public function spaceY(int $space): self - { - return $this->with(['styles' => [ - 'spaceY' => $space, - ]]); - } - - /** - * Adds the given horizontal margin to the childs, ignoring the first child. - */ - final public function spaceX(int $space): self - { - return $this->with(['styles' => [ - 'spaceX' => $space, - ]]); - } - - /** - * Adds a border on top of each element. - */ - final public function borderT(int $width = 1): self - { - if (! $this->element instanceof Hr) { - throw new InvalidStyle('`border-t` can only be used on an "hr" element.'); - } - - $this->styleModifiers[__METHOD__] = function ($text, $styles): string { - $length = $this->getLength($text); - if ($length < 1) { - $margins = (int) ($styles['ml'] ?? 0) + ($styles['mr'] ?? 0); - - return str_repeat('─', self::getParentWidth($this->properties['parentStyles'] ?? []) - $margins); - } - - return str_repeat('─', $length); - }; - - return $this; - } - - /** - * Adds a text alignment or color to the element. - */ - final public function text(string $value, int $variant = 0): self - { - if (in_array($value, ['left', 'right', 'center'], true)) { - return $this->with(['styles' => [ - 'text-align' => $value, - ]]); - } - - return $this->with(['colors' => [ - 'fg' => $this->getColorVariant($value, $variant), - ]]); - } - - /** - * Truncates the text of the element. - */ - final public function truncate(int $limit = 0, string $end = '…'): self - { - $this->textModifiers[__METHOD__] = function ($text, $styles) use ($limit, $end): string { - $width = $styles['width'] ?? 0; - - if (is_string($width)) { - $width = self::calcWidthFromFraction( - $width, - $styles, - $this->properties['parentStyles'] ?? [] - ); - } - - [, $paddingRight, , $paddingLeft] = $this->getPaddings(); - $width -= $paddingRight + $paddingLeft; - - $limit = $limit > 0 ? $limit : $width; - if ($limit === 0) { - return $text; - } - - $limit -= mb_strwidth($end, 'UTF-8'); - - if ($this->getLength($text) <= $limit) { - return $text; - } - - return rtrim(self::trimText($text, $limit).$end); - }; - - return $this; - } - - /** - * Forces the width of the element. - */ - final public function w(int|string $width): static - { - return $this->with(['styles' => [ - 'width' => $width, - ]]); - } - - /** - * Forces the element width to the full width of the terminal. - */ - final public function wFull(): static - { - return $this->w('1/1'); - } - - /** - * Removes the width set on the element. - */ - final public function wAuto(): static - { - return $this->with(['styles' => [ - 'width' => null, - ]]); - } - - /** - * Defines a minimum width of an element. - */ - final public function minW(int|string $width): static - { - return $this->with(['styles' => [ - 'minWidth' => $width, - ]]); - } - - /** - * Defines a maximum width of an element. - */ - final public function maxW(int|string $width): static - { - return $this->with(['styles' => [ - 'maxWidth' => $width, - ]]); - } - - /** - * Makes the element's content uppercase. - */ - final public function uppercase(): self - { - $this->textModifiers[__METHOD__] = static fn ($text): string => mb_strtoupper($text, 'UTF-8'); - - return $this; - } - - /** - * Makes the element's content lowercase. - */ - final public function lowercase(): self - { - $this->textModifiers[__METHOD__] = static fn ($text): string => mb_strtolower($text, 'UTF-8'); - - return $this; - } - - /** - * Makes the element's content capitalize. - */ - final public function capitalize(): self - { - $this->textModifiers[__METHOD__] = static fn ($text): string => mb_convert_case($text, MB_CASE_TITLE, 'UTF-8'); - - return $this; - } - - /** - * Makes the element's content in snakecase. - */ - final public function snakecase(): self - { - $this->textModifiers[__METHOD__] = static fn ($text): string => mb_strtolower( - (string) preg_replace(['/([a-z\d])([A-Z])/', '/([^_])([A-Z][a-z])/'], '$1_$2', $text), - 'UTF-8' - ); - - return $this; - } - - /** - * Makes the element's content with a line through. - */ - final public function lineThrough(): self - { - $this->styleModifiers[__METHOD__] = static fn ($text): string => sprintf("\e[9m%s\e[0m", $text); - - return $this; - } - - /** - * Makes the element's content invisible. - */ - final public function invisible(): self - { - $this->styleModifiers[__METHOD__] = static fn ($text): string => sprintf("\e[8m%s\e[0m", $text); - - return $this; - } - - /** - * Do not display element's content. - */ - final public function hidden(): self - { - return $this->with(['styles' => [ - 'display' => 'hidden', - ]]); - } - - /** - * Makes a line break before the element's content. - */ - final public function block(): self - { - return $this->with(['styles' => [ - 'display' => 'block', - ]]); - } - - /** - * Makes an element eligible to work with flex-1 element's style. - */ - final public function flex(): self - { - return $this->with(['styles' => [ - 'display' => 'flex', - ]]); - } - - /** - * Makes an element grow and shrink as needed, ignoring the initial size. - */ - final public function flex1(): self - { - return $this->with(['styles' => [ - 'flex-1' => true, - ]]); - } - - /** - * Justifies childs along the element with an equal amount of space between. - */ - final public function justifyBetween(): self - { - return $this->with(['styles' => [ - 'justifyContent' => 'between', - ]]); - } - - /** - * Justifies childs along the element with an equal amount of space between - * each item and half around. - */ - final public function justifyAround(): self - { - return $this->with(['styles' => [ - 'justifyContent' => 'around', - ]]); - } - - /** - * Justifies childs along the element with an equal amount of space around each item. - */ - final public function justifyEvenly(): self - { - return $this->with(['styles' => [ - 'justifyContent' => 'evenly', - ]]); - } - - /** - * Justifies childs along the center of the container’s main axis. - */ - final public function justifyCenter(): self - { - return $this->with(['styles' => [ - 'justifyContent' => 'center', - ]]); - } - - /** - * Repeats the string given until it fills all the content. - */ - final public function contentRepeat(string $string): self - { - $string = preg_replace("/\[?'?([^'|\]]+)'?\]?/", '$1', $string) ?? ''; - - $this->textModifiers[__METHOD__] = static fn (): string => str_repeat($string, (int) floor(terminal()->width() / mb_strlen($string, 'UTF-8'))); - - return $this->with(['styles' => [ - 'contentRepeat' => true, - ]]); - } - - /** - * Prepends text to the content. - */ - final public function prepend(string $string): self - { - $this->textModifiers[__METHOD__] = static fn ($text): string => $string.$text; - - return $this; - } - - /** - * Appends text to the content. - */ - final public function append(string $string): self - { - $this->textModifiers[__METHOD__] = static fn ($text): string => $text.$string; - - return $this; - } - - /** - * Prepends the list style type to the content. - */ - final public function list(string $type, int $index = 0): self - { - if (! $this->element instanceof Ul && ! $this->element instanceof Ol && ! $this->element instanceof Li) { - throw new InvalidStyle(sprintf( - 'Style list-none cannot be used with %s', - $this->element !== null ? $this->element::class : 'unknown element' - )); - } - - if (! $this->element instanceof Li) { - return $this; - } - - return match ($type) { - 'square' => $this->prepend('▪ '), - 'disc' => $this->prepend('• '), - 'decimal' => $this->prepend(sprintf('%d. ', $index)), - default => $this, - }; - } - - /** - * Adds the given properties to the element. - * - * @param array $properties - */ - public function with(array $properties): self - { - $this->properties = array_replace_recursive($this->properties, $properties); - - return $this; - } - - /** - * Sets the href property to the element. - */ - final public function href(string $href): self - { - $href = str_replace('%', '%%', $href); - - return $this->with(['href' => array_filter([$href])]); - } - - /** - * Formats a given string. - */ - final public function format(string $content): string - { - foreach ($this->textModifiers as $modifier) { - $content = $modifier( - $content, - $this->properties['styles'] ?? [], - $this->properties['parentStyles'] ?? [] - ); - } - - $content = $this->applyWidth($content); - - foreach ($this->styleModifiers as $modifier) { - $content = $modifier($content, $this->properties['styles'] ?? []); - } - - return $this->applyStyling($content); - } - - /** - * Get the format string including required styles. - */ - private function getFormatString(): string - { - $styles = []; - - /** @var array $href */ - $href = $this->properties['href'] ?? []; - if ($href !== []) { - $styles[] = sprintf('href=%s', array_pop($href)); - } - - $colors = $this->properties['colors'] ?? []; - - foreach ($colors as $option => $content) { - if (in_array($option, ['fg', 'bg'], true)) { - $content = is_array($content) ? array_pop($content) : $content; - - $styles[] = "$option=$content"; - } - } - - $options = $this->properties['options'] ?? []; - - if ($options !== []) { - $options = array_keys(array_filter( - $options, fn ($option) => $option === true - )); - $styles[] = count($options) > 0 - ? 'options='.implode(',', $options) - : 'options=,'; - } - - // If there are no styles we don't need extra tags - if ($styles === []) { - return '%s%s%s%s%s'; - } - - return '%s<'.implode(';', $styles).'>%s%s%s%s'; - } - - /** - * Get the margins applied to the element. - * - * @return array{0: int, 1: int, 2: int, 3: int} - */ - private function getMargins(): array - { - $isFirstChild = (bool) $this->properties['isFirstChild']; - - $spaceY = $this->properties['parentStyles']['spaceY'] ?? []; - $spaceY = ! $isFirstChild ? end($spaceY) : 0; - - $spaceX = $this->properties['parentStyles']['spaceX'] ?? []; - $spaceX = ! $isFirstChild ? end($spaceX) : 0; - - return [ - $spaceY > 0 ? $spaceY : $this->properties['styles']['mt'] ?? 0, - $this->properties['styles']['mr'] ?? 0, - $this->properties['styles']['mb'] ?? 0, - $spaceX > 0 ? $spaceX : $this->properties['styles']['ml'] ?? 0, - ]; - } - - /** - * Get the paddings applied to the element. - * - * @return array{0: int, 1: int, 2: int, 3: int} - */ - private function getPaddings(): array - { - return [ - $this->properties['styles']['pt'] ?? 0, - $this->properties['styles']['pr'] ?? 0, - $this->properties['styles']['pb'] ?? 0, - $this->properties['styles']['pl'] ?? 0, - ]; - } - - /** - * It applies the correct width for the content. - */ - private function applyWidth(string $content): string - { - $styles = $this->properties['styles'] ?? []; - $minWidth = $styles['minWidth'] ?? -1; - $width = max($styles['width'] ?? -1, $minWidth); - $maxWidth = $styles['maxWidth'] ?? 0; - - if ($width < 0) { - return $content; - } - - if ($width === 0) { - return ''; - } - - if (is_string($width)) { - $width = self::calcWidthFromFraction( - $width, - $styles, - $this->properties['parentStyles'] ?? [] - ); - } - - if ($maxWidth > 0) { - $width = min($styles['maxWidth'], $width); - } - - $width -= ($styles['pl'] ?? 0) + ($styles['pr'] ?? 0); - $length = $this->getLength($content); - - preg_match_all("/\n+/", $content, $matches); - - $width *= count($matches[0] ?? []) + 1; // @phpstan-ignore-line - $width += mb_strlen($matches[0][0] ?? '', 'UTF-8'); - - if ($length <= $width) { - $space = $width - $length; - - return match ($styles['text-align'] ?? '') { - 'right' => str_repeat(' ', $space).$content, - 'center' => str_repeat(' ', (int) floor($space / 2)).$content.str_repeat(' ', (int) ceil($space / 2)), - default => $content.str_repeat(' ', $space), - }; - } - - return self::trimText($content, $width); - } - - /** - * It applies the styling for the content. - */ - private function applyStyling(string $content): string - { - $display = $this->properties['styles']['display'] ?? 'inline'; - - if ($display === 'hidden') { - return ''; - } - - $isFirstChild = (bool) $this->properties['isFirstChild']; - - [$marginTop, $marginRight, $marginBottom, $marginLeft] = $this->getMargins(); - [$paddingTop, $paddingRight, $paddingBottom, $paddingLeft] = $this->getPaddings(); - - $content = (string) preg_replace('/\r[ \t]?/', "\n", - (string) preg_replace( - '/\n/', - str_repeat(' ', $marginRight + $paddingRight) - ."\n". - str_repeat(' ', $marginLeft + $paddingLeft), - $content) - ); - - $formatted = sprintf( - $this->getFormatString(), - str_repeat(' ', $marginLeft), - str_repeat(' ', $paddingLeft), - $content, - str_repeat(' ', $paddingRight), - str_repeat(' ', $marginRight), - ); - - $empty = str_replace( - $content, - str_repeat(' ', $this->getLength($content)), - $formatted - ); - - $items = []; - - if (in_array($display, ['block', 'flex'], true) && ! $isFirstChild) { - $items[] = "\n"; - } - - if ($marginTop > 0) { - $items[] = str_repeat("\n", $marginTop); - } - - if ($paddingTop > 0) { - $items[] = $empty."\n"; - } - - $items[] = $formatted; - - if ($paddingBottom > 0) { - $items[] = "\n".$empty; - } - - if ($marginBottom > 0) { - $items[] = str_repeat("\n", $marginBottom); - } - - return implode('', $items); - } - - /** - * Get the length of the text provided without the styling tags. - */ - public function getLength(?string $text = null): int - { - return mb_strlen(preg_replace( - self::STYLING_REGEX, - '', - $text ?? $this->element?->toString() ?? '' - ) ?? '', 'UTF-8'); - } - - /** - * Get the length of the element without margins. - */ - public function getInnerWidth(): int - { - $innerLength = $this->getLength(); - [, $marginRight, , $marginLeft] = $this->getMargins(); - - return $innerLength - $marginLeft - $marginRight; - } - - /** - * Get the constant variant color from Color class. - */ - private function getColorVariant(string $color, int $variant): string - { - if ($variant > 0) { - $color .= '-'.$variant; - } - - if (StyleRepository::has($color)) { - return StyleRepository::get($color)->getColor(); - } - - $colorConstant = mb_strtoupper(str_replace('-', '_', $color), 'UTF-8'); - - if (! defined(Color::class."::$colorConstant")) { - throw new ColorNotFound($colorConstant); - } - - return constant(Color::class."::$colorConstant"); - } - - /** - * Calculates the width based on the fraction provided. - * - * @param array $styles - * @param array> $parentStyles - */ - private static function calcWidthFromFraction(string $fraction, array $styles, array $parentStyles): int - { - $width = self::getParentWidth($parentStyles); - - preg_match('/(\d+)\/(\d+)/', $fraction, $matches); - - if (count($matches) !== 3 || $matches[2] === '0') { - throw new InvalidStyle(sprintf('Style [%s] is invalid.', "w-$fraction")); - } - - $width = (int) floor($width * $matches[1] / $matches[2]); - $width -= ($styles['ml'] ?? 0) + ($styles['mr'] ?? 0); - - return $width; - } - - /** - * Gets the width of the parent element. - * - * @param array> $styles - */ - public static function getParentWidth(array $styles): int - { - $width = terminal()->width(); - foreach ($styles['width'] ?? [] as $index => $parentWidth) { - $minWidth = (int) $styles['minWidth'][$index]; - $maxWidth = (int) $styles['maxWidth'][$index]; - $margins = (int) $styles['ml'][$index] + (int) $styles['mr'][$index]; - - $parentWidth = max($parentWidth, $minWidth); - - if ($parentWidth < 1) { - $parentWidth = $width; - } elseif (is_int($parentWidth)) { - $parentWidth += $margins; - } - - preg_match('/(\d+)\/(\d+)/', (string) $parentWidth, $matches); - - $width = count($matches) !== 3 - ? (int) $parentWidth - : (int) floor($width * $matches[1] / $matches[2]); - - if ($maxWidth > 0) { - $width = min($maxWidth, $width); - } - - $width -= $margins; - $width -= (int) $styles['pl'][$index] + (int) $styles['pr'][$index]; - } - - return $width; - } - - /** - * It trims the text properly ignoring all escape codes and - * `` tags. - */ - private static function trimText(string $text, int $width): string - { - preg_match_all(self::STYLING_REGEX, $text, $matches, PREG_OFFSET_CAPTURE); - $text = rtrim(mb_strimwidth(preg_replace(self::STYLING_REGEX, '', $text) ?? '', 0, $width, '', 'UTF-8')); - - // @phpstan-ignore-next-line - foreach ($matches[0] ?? [] as [$part, $index]) { - $text = substr($text, 0, $index).$part.substr($text, $index, null); - } - - return $text; - } -} diff --git a/docker/streamline-src/vendor/owen-it/laravel-auditing/composer.json b/docker/streamline-src/vendor/owen-it/laravel-auditing/composer.json deleted file mode 100644 index f2039acf..00000000 --- a/docker/streamline-src/vendor/owen-it/laravel-auditing/composer.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "name": "owen-it/laravel-auditing", - "description": "Audit changes of your Eloquent models in Laravel/Lumen", - "keywords": [ - "accountability", - "audit", - "auditing", - "changes", - "eloquent", - "history", - "log", - "logging", - "observer", - "laravel", - "lumen", - "record", - "revision", - "tracking" - ], - "homepage": "https://laravel-auditing.com", - "type": "package", - "license": "MIT", - "support": { - "issues": "https://github.com/owen-it/laravel-auditing/issues", - "source": "https://github.com/owen-it/laravel-auditing" - }, - "authors": [ - { - "name": "Antério Vieira", - "email": "anteriovieira@gmail.com" - }, - { - "name": "Raphael França", - "email": "raphaelfrancabsb@gmail.com" - }, - { - "name": "Morten D. Hansen", - "email": "morten@visia.dk" - } - ], - "require": { - "php": "^7.3|^8.0", - "illuminate/console": "^7.0|^8.0|^9.0|^10.0|^11.0", - "illuminate/database": "^7.0|^8.0|^9.0|^10.0|^11.0", - "illuminate/filesystem": "^7.0|^8.0|^9.0|^10.0|^11.0", - "ext-json": "*" - }, - "require-dev": { - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "mockery/mockery": "^1.0", - "orchestra/testbench": "^5.0|^6.0|^7.0|^8.0|^9.0", - "laravel/legacy-factories": "*" - }, - "autoload": { - "psr-4": { - "OwenIt\\Auditing\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "OwenIt\\Auditing\\Tests\\": "tests/" - } - }, - "suggest": { - "irazasyed/larasupport": "Needed to publish the package configuration in Lumen" - }, - "extra": { - "branch-alias": { - "dev-master": "v13-dev" - }, - "laravel": { - "providers": [ - "OwenIt\\Auditing\\AuditingServiceProvider" - ] - } - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/docker/streamline-src/vendor/owen-it/laravel-auditing/config/audit.php b/docker/streamline-src/vendor/owen-it/laravel-auditing/config/audit.php deleted file mode 100644 index d6cee429..00000000 --- a/docker/streamline-src/vendor/owen-it/laravel-auditing/config/audit.php +++ /dev/null @@ -1,198 +0,0 @@ - env('AUDITING_ENABLED', true), - - /* - |-------------------------------------------------------------------------- - | Audit Implementation - |-------------------------------------------------------------------------- - | - | Define which Audit model implementation should be used. - | - */ - - 'implementation' => OwenIt\Auditing\Models\Audit::class, - - /* - |-------------------------------------------------------------------------- - | User Morph prefix & Guards - |-------------------------------------------------------------------------- - | - | Define the morph prefix and authentication guards for the User resolver. - | - */ - - 'user' => [ - 'morph_prefix' => 'user', - 'guards' => [ - 'web', - 'api' - ], - 'resolver' => OwenIt\Auditing\Resolvers\UserResolver::class - ], - - /* - |-------------------------------------------------------------------------- - | Audit Resolvers - |-------------------------------------------------------------------------- - | - | Define the IP Address, User Agent and URL resolver implementations. - | - */ - 'resolvers' => [ - 'ip_address' => OwenIt\Auditing\Resolvers\IpAddressResolver::class, - 'user_agent' => OwenIt\Auditing\Resolvers\UserAgentResolver::class, - 'url' => OwenIt\Auditing\Resolvers\UrlResolver::class, - ], - - /* - |-------------------------------------------------------------------------- - | Audit Events - |-------------------------------------------------------------------------- - | - | The Eloquent events that trigger an Audit. - | - */ - - 'events' => [ - 'created', - 'updated', - 'deleted', - 'restored' - ], - - /* - |-------------------------------------------------------------------------- - | Strict Mode - |-------------------------------------------------------------------------- - | - | Enable the strict mode when auditing? - | - */ - - 'strict' => false, - - /* - |-------------------------------------------------------------------------- - | Global exclude - |-------------------------------------------------------------------------- - | - | Have something you always want to exclude by default? - add it here. - | Note that this is overwritten (not merged) with local exclude - | - */ - - 'exclude' => [], - - /* - |-------------------------------------------------------------------------- - | Empty Values - |-------------------------------------------------------------------------- - | - | Should Audit records be stored when the recorded old_values & new_values - | are both empty? - | - | Some events may be empty on purpose. Use allowed_empty_values to exclude - | those from the empty values check. For example when auditing - | model retrieved events which will never have new and old values. - | - | - */ - - 'empty_values' => true, - 'allowed_empty_values' => [ - 'retrieved' - ], - - /* - |-------------------------------------------------------------------------- - | Allowed Array Values - |-------------------------------------------------------------------------- - | - | Should the array values be audited? - | - | By default, array values are not allowed. This is to prevent performance - | issues when storing large amounts of data. You can override this by - | setting allow_array_values to true. - */ - 'allowed_array_values' => false, - - /* - |-------------------------------------------------------------------------- - | Audit Timestamps - |-------------------------------------------------------------------------- - | - | Should the created_at, updated_at and deleted_at timestamps be audited? - | - */ - - 'timestamps' => false, - - /* - |-------------------------------------------------------------------------- - | Audit Threshold - |-------------------------------------------------------------------------- - | - | Specify a threshold for the amount of Audit records a model can have. - | Zero means no limit. - | - */ - - 'threshold' => 0, - - /* - |-------------------------------------------------------------------------- - | Audit Driver - |-------------------------------------------------------------------------- - | - | The default audit driver used to keep track of changes. - | - */ - - 'driver' => 'database', - - /* - |-------------------------------------------------------------------------- - | Audit Driver Configurations - |-------------------------------------------------------------------------- - | - | Available audit drivers and respective configurations. - | - */ - - 'drivers' => [ - 'database' => [ - 'table' => 'audits', - 'connection' => null, - ], - ], - - /* - |-------------------------------------------------------------------------- - | Audit Queue Configurations - |-------------------------------------------------------------------------- - | - | Available audit queue configurations. - | - */ - - 'queue' => [ - 'enable' => false, - 'connection' => 'sync', - 'queue' => 'default', - 'delay' => 0, - ], - - /* - |-------------------------------------------------------------------------- - | Audit Console - |-------------------------------------------------------------------------- - | - | Whether console events should be audited (eg. php artisan db:seed). - | - */ - - 'console' => false, -]; diff --git a/docker/streamline-src/vendor/owen-it/laravel-auditing/src/Audit.php b/docker/streamline-src/vendor/owen-it/laravel-auditing/src/Audit.php deleted file mode 100644 index a99d80fa..00000000 --- a/docker/streamline-src/vendor/owen-it/laravel-auditing/src/Audit.php +++ /dev/null @@ -1,300 +0,0 @@ -morphTo(); - } - - /** - * {@inheritdoc} - */ - public function user() - { - $morphPrefix = Config::get('audit.user.morph_prefix', 'user'); - - return $this->morphTo(__FUNCTION__, $morphPrefix . '_type', $morphPrefix . '_id'); - } - - /** - * {@inheritdoc} - */ - public function getConnectionName() - { - return Config::get('audit.drivers.database.connection'); - } - - /** - * {@inheritdoc} - */ - public function getTable(): string - { - return Config::get('audit.drivers.database.table', parent::getTable()); - } - - /** - * {@inheritdoc} - */ - public function resolveData(): array - { - $morphPrefix = Config::get('audit.user.morph_prefix', 'user'); - - // Metadata - $this->data = [ - 'audit_id' => $this->getKey(), - 'audit_event' => $this->event, - 'audit_tags' => $this->tags, - 'audit_created_at' => $this->serializeDate($this->{$this->getCreatedAtColumn()}), - 'audit_updated_at' => $this->serializeDate($this->{$this->getUpdatedAtColumn()}), - 'user_id' => $this->getAttribute($morphPrefix . '_id'), - 'user_type' => $this->getAttribute($morphPrefix . '_type'), - ]; - - // add resolvers data to metadata - $resolverData = []; - foreach (array_keys(Config::get('audit.resolvers', [])) as $name) { - $resolverData['audit_' . $name] = $this->$name; - } - $this->data = array_merge($this->data, $resolverData); - - if ($this->user) { - foreach ($this->user->getArrayableAttributes() as $attribute => $value) { - $this->data['user_' . $attribute] = $value; - } - } - - $this->metadata = array_keys($this->data); - - // Modified Auditable attributes - foreach ($this->new_values ?? [] as $key => $value) { - $this->data['new_' . $key] = $value; - } - - foreach ($this->old_values ?? [] as $key => $value) { - $this->data['old_' . $key] = $value; - } - - $this->modified = array_diff_key(array_keys($this->data), $this->metadata); - - return $this->data; - } - - /** - * Get the formatted value of an Eloquent model. - * - * @param Model $model - * @param string $key - * @param mixed $value - * - * @return mixed - */ - protected function getFormattedValue(Model $model, string $key, $value) - { - // Apply defined get mutator - if ($model->hasGetMutator($key)) { - return $model->mutateAttribute($key, $value); - } - - if (method_exists($model, 'hasAttributeMutator') && $model->hasAttributeMutator($key)) { - return $model->mutateAttributeMarkedAttribute($key, $value); - } - - if (array_key_exists( - $key, - $model->getCasts() - ) && $model->getCasts()[$key] == 'Illuminate\Database\Eloquent\Casts\AsArrayObject') { - $arrayObject = new \Illuminate\Database\Eloquent\Casts\ArrayObject(json_decode($value, true) ?: []); - return $arrayObject; - } - - // Cast to native PHP type - if ($model->hasCast($key)) { - if ($model->getCastType($key) == 'datetime' ) { - $value = $this->castDatetimeUTC($model, $value); - } - - unset($model->classCastCache[$key]); - - return $model->castAttribute($key, $value); - } - - // Honour DateTime attribute - if ($value !== null && in_array($key, $model->getDates(), true)) { - return $model->asDateTime($this->castDatetimeUTC($model, $value)); - } - - return $value; - } - - private function castDatetimeUTC($model, $value) - { - if (!is_string($value)) { - return $value; - } - - if (preg_match('/^(\d{4})-(\d{1,2})-(\d{1,2})$/', $value)) { - return Date::instance(Carbon::createFromFormat('Y-m-d', $value, Date::now('UTC')->getTimezone())->startOfDay()); - } - - if (preg_match('/^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/', $value)) { - return Date::instance(Carbon::createFromFormat('Y-m-d H:i:s', $value, Date::now('UTC')->getTimezone())); - } - - try { - return Date::createFromFormat($model->getDateFormat(), $value, Date::now('UTC')->getTimezone()); - } catch (InvalidArgumentException $e) { - return $value; - } - } - - /** - * {@inheritdoc} - */ - public function getDataValue(string $key) - { - if (!array_key_exists($key, $this->data)) { - return; - } - - $value = $this->data[$key]; - - // User value - if ($this->user && Str::startsWith($key, 'user_')) { - return $this->getFormattedValue($this->user, substr($key, 5), $value); - } - - // Auditable value - if ($this->auditable && Str::startsWith($key, ['new_', 'old_'])) { - $attribute = substr($key, 4); - - return $this->getFormattedValue( - $this->auditable, - $attribute, - $this->decodeAttributeValue($this->auditable, $attribute, $value) - ); - } - - return $value; - } - - /** - * Decode attribute value. - * - * @param Contracts\Auditable $auditable - * @param string $attribute - * @param mixed $value - * - * @return mixed - */ - protected function decodeAttributeValue(Contracts\Auditable $auditable, string $attribute, $value) - { - $attributeModifiers = $auditable->getAttributeModifiers(); - - if (!array_key_exists($attribute, $attributeModifiers)) { - return $value; - } - - $attributeDecoder = $attributeModifiers[$attribute]; - - if (is_subclass_of($attributeDecoder, AttributeEncoder::class)) { - return call_user_func([$attributeDecoder, 'decode'], $value); - } - - return $value; - } - - /** - * {@inheritdoc} - */ - public function getMetadata(bool $json = false, int $options = 0, int $depth = 512) - { - if (empty($this->data)) { - $this->resolveData(); - } - - $metadata = []; - - foreach ($this->metadata as $key) { - $value = $this->getDataValue($key); - $metadata[$key] = $value; - - if ($value instanceof DateTimeInterface) { - $metadata[$key] = !is_null($this->auditable) ? $this->auditable->serializeDate($value) : $this->serializeDate($value); - } - } - - return $json ? json_encode($metadata, $options, $depth) : $metadata; - } - - /** - * {@inheritdoc} - */ - public function getModified(bool $json = false, int $options = 0, int $depth = 512) - { - if (empty($this->data)) { - $this->resolveData(); - } - - $modified = []; - - foreach ($this->modified as $key) { - $attribute = substr($key, 4); - $state = substr($key, 0, 3); - - $value = $this->getDataValue($key); - $modified[$attribute][$state] = $value; - - if ($value instanceof DateTimeInterface) { - $modified[$attribute][$state] = !is_null($this->auditable) ? $this->auditable->serializeDate($value) : $this->serializeDate($value); - } - } - - return $json ? json_encode($modified, $options, $depth) : $modified; - } - - /** - * Get the Audit tags as an array. - * - * @return array - */ - public function getTags(): array - { - return preg_split('/,/', $this->tags, -1, PREG_SPLIT_NO_EMPTY); - } -} diff --git a/docker/streamline-src/vendor/owen-it/laravel-auditing/src/Auditable.php b/docker/streamline-src/vendor/owen-it/laravel-auditing/src/Auditable.php deleted file mode 100644 index 3696afb2..00000000 --- a/docker/streamline-src/vendor/owen-it/laravel-auditing/src/Auditable.php +++ /dev/null @@ -1,872 +0,0 @@ -morphMany( - Config::get('audit.implementation', Models\Audit::class), - 'auditable' - ); - } - - /** - * Resolve the Auditable attributes to exclude from the Audit. - * - * @return void - */ - protected function resolveAuditExclusions() - { - $this->excludedAttributes = $this->getAuditExclude(); - - // When in strict mode, hidden and non visible attributes are excluded - if ($this->getAuditStrict()) { - // Hidden attributes - $this->excludedAttributes = array_merge($this->excludedAttributes, $this->hidden); - - // Non visible attributes - if ($this->visible) { - $invisible = array_diff(array_keys($this->attributes), $this->visible); - - $this->excludedAttributes = array_merge($this->excludedAttributes, $invisible); - } - } - - // Exclude Timestamps - if (!$this->getAuditTimestamps()) { - if ($this->getCreatedAtColumn()) { - $this->excludedAttributes[] = $this->getCreatedAtColumn(); - } - if ($this->getUpdatedAtColumn()) { - $this->excludedAttributes[] = $this->getUpdatedAtColumn(); - } - if (in_array(SoftDeletes::class, class_uses_recursive(get_class($this)))) { - $this->excludedAttributes[] = $this->getDeletedAtColumn(); - } - } - - // Valid attributes are all those that made it out of the exclusion array - $attributes = Arr::except($this->attributes, $this->excludedAttributes); - - foreach ($attributes as $attribute => $value) { - // Apart from null, non scalar values will be excluded - if ( - (is_array($value) && !Config::get('audit.allowed_array_values', false)) || - (is_object($value) && - !method_exists($value, '__toString') && - !($value instanceof \UnitEnum)) - ) { - $this->excludedAttributes[] = $attribute; - } - } - } - - /** - * @return array - */ - public function getAuditExclude(): array - { - return $this->auditExclude ?? Config::get('audit.exclude', []); - } - - /** - * @return array - */ - public function getAuditInclude(): array - { - return $this->auditInclude ?? []; - } - - /** - * Get the old/new attributes of a retrieved event. - * - * @return array - */ - protected function getRetrievedEventAttributes(): array - { - // This is a read event with no attribute changes, - // only metadata will be stored in the Audit - - return [ - [], - [], - ]; - } - - /** - * Get the old/new attributes of a created event. - * - * @return array - */ - protected function getCreatedEventAttributes(): array - { - $new = []; - - foreach ($this->attributes as $attribute => $value) { - if ($this->isAttributeAuditable($attribute)) { - $new[$attribute] = $value; - } - } - - return [ - [], - $new, - ]; - } - - protected function getCustomEventAttributes(): array - { - return [ - $this->auditCustomOld, - $this->auditCustomNew - ]; - } - - /** - * Get the old/new attributes of an updated event. - * - * @return array - */ - protected function getUpdatedEventAttributes(): array - { - $old = []; - $new = []; - - foreach ($this->getDirty() as $attribute => $value) { - if ($this->isAttributeAuditable($attribute)) { - $old[$attribute] = Arr::get($this->original, $attribute); - $new[$attribute] = Arr::get($this->attributes, $attribute); - } - } - - return [ - $old, - $new, - ]; - } - - /** - * Get the old/new attributes of a deleted event. - * - * @return array - */ - protected function getDeletedEventAttributes(): array - { - $old = []; - - foreach ($this->attributes as $attribute => $value) { - if ($this->isAttributeAuditable($attribute)) { - $old[$attribute] = $value; - } - } - - return [ - $old, - [], - ]; - } - - /** - * Get the old/new attributes of a restored event. - * - * @return array - */ - protected function getRestoredEventAttributes(): array - { - // A restored event is just a deleted event in reverse - return array_reverse($this->getDeletedEventAttributes()); - } - - /** - * {@inheritdoc} - */ - public function readyForAuditing(): bool - { - if (static::$auditingDisabled || Models\Audit::$auditingGloballyDisabled) { - return false; - } - - if ($this->isCustomEvent) { - return true; - } - - return $this->isEventAuditable($this->auditEvent); - } - - /** - * Modify attribute value. - * - * @param string $attribute - * @param mixed $value - * - * @return mixed - * @throws AuditingException - * - */ - protected function modifyAttributeValue(string $attribute, $value) - { - $attributeModifiers = $this->getAttributeModifiers(); - - if (!array_key_exists($attribute, $attributeModifiers)) { - return $value; - } - - $attributeModifier = $attributeModifiers[$attribute]; - - if (is_subclass_of($attributeModifier, AttributeRedactor::class)) { - return call_user_func([$attributeModifier, 'redact'], $value); - } - - if (is_subclass_of($attributeModifier, AttributeEncoder::class)) { - return call_user_func([$attributeModifier, 'encode'], $value); - } - - throw new AuditingException(sprintf('Invalid AttributeModifier implementation: %s', $attributeModifier)); - } - - /** - * {@inheritdoc} - */ - public function toAudit(): array - { - if (!$this->readyForAuditing()) { - throw new AuditingException('A valid audit event has not been set'); - } - - $attributeGetter = $this->resolveAttributeGetter($this->auditEvent); - - if (!method_exists($this, $attributeGetter)) { - throw new AuditingException(sprintf( - 'Unable to handle "%s" event, %s() method missing', - $this->auditEvent, - $attributeGetter - )); - } - - $this->resolveAuditExclusions(); - - list($old, $new) = $this->$attributeGetter(); - - if ($this->getAttributeModifiers() && !$this->isCustomEvent) { - foreach ($old as $attribute => $value) { - $old[$attribute] = $this->modifyAttributeValue($attribute, $value); - } - - foreach ($new as $attribute => $value) { - $new[$attribute] = $this->modifyAttributeValue($attribute, $value); - } - } - - $morphPrefix = Config::get('audit.user.morph_prefix', 'user'); - - $tags = implode(',', $this->generateTags()); - - $user = $this->resolveUser(); - - return $this->transformAudit(array_merge([ - 'old_values' => $old, - 'new_values' => $new, - 'event' => $this->auditEvent, - 'auditable_id' => $this->getKey(), - 'auditable_type' => $this->getMorphClass(), - $morphPrefix . '_id' => $user ? $user->getAuthIdentifier() : null, - $morphPrefix . '_type' => $user ? $user->getMorphClass() : null, - 'tags' => empty($tags) ? null : $tags, - ], $this->runResolvers())); - } - - /** - * {@inheritdoc} - */ - public function transformAudit(array $data): array - { - return $data; - } - - /** - * Resolve the User. - * - * @return mixed|null - * @throws AuditingException - * - */ - protected function resolveUser() - { - if (!empty($this->preloadedResolverData['user'] ?? null)) { - return $this->preloadedResolverData['user']; - } - - $userResolver = Config::get('audit.user.resolver'); - - if (is_null($userResolver) && Config::has('audit.resolver') && !Config::has('audit.user.resolver')) { - trigger_error( - 'The config file audit.php is not updated to the new version 13.0. Please see https://laravel-auditing.com/guide/upgrading.html', - E_USER_DEPRECATED - ); - $userResolver = Config::get('audit.resolver.user'); - } - - if (is_subclass_of($userResolver, \OwenIt\Auditing\Contracts\UserResolver::class)) { - return call_user_func([$userResolver, 'resolve'], $this); - } - - throw new AuditingException('Invalid UserResolver implementation'); - } - - protected function runResolvers(): array - { - $resolved = []; - $resolvers = Config::get('audit.resolvers', []); - if (empty($resolvers) && Config::has('audit.resolver')) { - trigger_error( - 'The config file audit.php is not updated to the new version 13.0. Please see https://laravel-auditing.com/guide/upgrading.html', - E_USER_DEPRECATED - ); - $resolvers = Config::get('audit.resolver', []); - } - - foreach ($resolvers as $name => $implementation) { - if (empty($implementation)) { - continue; - } - - if (!is_subclass_of($implementation, Resolver::class)) { - throw new AuditingException('Invalid Resolver implementation for: ' . $name); - } - $resolved[$name] = call_user_func([$implementation, 'resolve'], $this); - } - return $resolved; - } - - public function preloadResolverData() - { - $this->preloadedResolverData = $this->runResolvers(); - - $user = $this->resolveUser(); - if (!empty($user)) { - $this->preloadedResolverData['user'] = $user; - } - - return $this; - } - - /** - * Determine if an attribute is eligible for auditing. - * - * @param string $attribute - * - * @return bool - */ - protected function isAttributeAuditable(string $attribute): bool - { - // The attribute should not be audited - if (in_array($attribute, $this->excludedAttributes, true)) { - return false; - } - - // The attribute is auditable when explicitly - // listed or when the include array is empty - $include = $this->getAuditInclude(); - - return empty($include) || in_array($attribute, $include, true); - } - - /** - * Determine whether an event is auditable. - * - * @param string $event - * - * @return bool - */ - protected function isEventAuditable($event): bool - { - return is_string($this->resolveAttributeGetter($event)); - } - - /** - * Attribute getter method resolver. - * - * @param string $event - * - * @return string|null - */ - protected function resolveAttributeGetter($event) - { - if (empty($event)) { - return; - } - - if ($this->isCustomEvent) { - return 'getCustomEventAttributes'; - } - - foreach ($this->getAuditEvents() as $key => $value) { - $auditableEvent = is_int($key) ? $value : $key; - - $auditableEventRegex = sprintf('/%s/', preg_replace('/\*+/', '.*', $auditableEvent)); - - if (preg_match($auditableEventRegex, $event)) { - return is_int($key) ? sprintf('get%sEventAttributes', ucfirst($event)) : $value; - } - } - } - - /** - * {@inheritdoc} - */ - public function setAuditEvent(string $event): Contracts\Auditable - { - $this->auditEvent = $this->isEventAuditable($event) ? $event : null; - - return $this; - } - - /** - * {@inheritdoc} - */ - public function getAuditEvent() - { - return $this->auditEvent; - } - - /** - * {@inheritdoc} - */ - public function getAuditEvents(): array - { - return $this->auditEvents ?? Config::get('audit.events', [ - 'created', - 'updated', - 'deleted', - 'restored', - ]); - } - - /** - * Is Auditing disabled. - * - * @return bool - */ - public static function isAuditingDisabled(): bool - { - return static::$auditingDisabled || Models\Audit::$auditingGloballyDisabled; - } - - /** - * Disable Auditing. - * - * @return void - */ - public static function disableAuditing() - { - static::$auditingDisabled = true; - } - - /** - * Enable Auditing. - * - * @return void - */ - public static function enableAuditing() - { - static::$auditingDisabled = false; - } - - /** - * Execute a callback while auditing is disabled. - * - * @param callable $callback - * @param bool $globally - * - * @return mixed - */ - public static function withoutAuditing(callable $callback, bool $globally = false) - { - $auditingDisabled = static::$auditingDisabled; - - static::disableAuditing(); - Models\Audit::$auditingGloballyDisabled = $globally; - - try { - return $callback(); - } finally { - Models\Audit::$auditingGloballyDisabled = false; - static::$auditingDisabled = $auditingDisabled; - } - } - - /** - * Determine whether auditing is enabled. - * - * @return bool - */ - public static function isAuditingEnabled(): bool - { - if (App::runningInConsole()) { - return Config::get('audit.enabled', true) && Config::get('audit.console', false); - } - - return Config::get('audit.enabled', true); - } - - /** - * {@inheritdoc} - */ - public function getAuditStrict(): bool - { - return $this->auditStrict ?? Config::get('audit.strict', false); - } - - /** - * {@inheritdoc} - */ - public function getAuditTimestamps(): bool - { - return $this->auditTimestamps ?? Config::get('audit.timestamps', false); - } - - /** - * {@inheritdoc} - */ - public function getAuditDriver() - { - return $this->auditDriver ?? Config::get('audit.driver', 'database'); - } - - /** - * {@inheritdoc} - */ - public function getAuditThreshold(): int - { - return $this->auditThreshold ?? Config::get('audit.threshold', 0); - } - - /** - * {@inheritdoc} - */ - public function getAttributeModifiers(): array - { - return $this->attributeModifiers ?? []; - } - - /** - * {@inheritdoc} - */ - public function generateTags(): array - { - return []; - } - - /** - * {@inheritdoc} - */ - public function transitionTo(Contracts\Audit $audit, bool $old = false): Contracts\Auditable - { - // The Audit must be for an Auditable model of this type - if ($this->getMorphClass() !== $audit->auditable_type) { - throw new AuditableTransitionException(sprintf( - 'Expected Auditable type %s, got %s instead', - $this->getMorphClass(), - $audit->auditable_type - )); - } - - // The Audit must be for this specific Auditable model - if ($this->getKey() !== $audit->auditable_id) { - throw new AuditableTransitionException(sprintf( - 'Expected Auditable id (%s)%s, got (%s)%s instead', - gettype($this->getKey()), - $this->getKey(), - gettype($audit->auditable_id), - $audit->auditable_id - )); - } - - // Redacted data should not be used when transitioning states - foreach ($this->getAttributeModifiers() as $attribute => $modifier) { - if (is_subclass_of($modifier, AttributeRedactor::class)) { - throw new AuditableTransitionException('Cannot transition states when an AttributeRedactor is set'); - } - } - - // The attribute compatibility between the Audit and the Auditable model must be met - $modified = $audit->getModified(); - - if ($incompatibilities = array_diff_key($modified, $this->getAttributes())) { - throw new AuditableTransitionException(sprintf( - 'Incompatibility between [%s:%s] and [%s:%s]', - $this->getMorphClass(), - $this->getKey(), - get_class($audit), - $audit->getKey() - ), array_keys($incompatibilities)); - } - - $key = $old ? 'old' : 'new'; - - foreach ($modified as $attribute => $value) { - if (array_key_exists($key, $value)) { - $this->setAttribute($attribute, $value[$key]); - } - } - - return $this; - } - - /* - |-------------------------------------------------------------------------- - | Pivot help methods - |-------------------------------------------------------------------------- - | - | Methods for auditing pivot actions - | - */ - - /** - * @param string $relationName - * @param mixed $id - * @param array $attributes - * @param bool $touch - * @param array $columns - * @param \Closure|null $callback - * @return void - * @throws AuditingException - */ - public function auditAttach(string $relationName, $id, array $attributes = [], $touch = true, $columns = ['*'], $callback = null) - { - $this->validateRelationshipMethodExistence($relationName, 'attach'); - - $relationCall = $this->{$relationName}(); - - if ($callback instanceof \Closure) { - $this->applyClosureToRelationship($relationCall, $callback); - } - - $old = $relationCall->get($columns); - $relationCall->attach($id, $attributes, $touch); - $new = $relationCall->get($columns); - - $this->dispatchRelationAuditEvent($relationName, 'attach', $old, $new); - } - - /** - * @param string $relationName - * @param mixed $ids - * @param bool $touch - * @param array $columns - * @param \Closure|null $callback - * @return int - * @throws AuditingException - */ - public function auditDetach(string $relationName, $ids = null, $touch = true, $columns = ['*'], $callback = null) - { - $this->validateRelationshipMethodExistence($relationName, 'detach'); - - $relationCall = $this->{$relationName}(); - - if ($callback instanceof \Closure) { - $this->applyClosureToRelationship($relationCall, $callback); - } - - $old = $relationCall->get($columns); - $results = $relationCall->detach($ids, $touch); - $new = $relationCall->get($columns); - - $this->dispatchRelationAuditEvent($relationName, 'detach', $old, $new); - - return empty($results) ? 0 : $results; - } - - /** - * @param string $relationName - * @param Collection|Model|array $ids - * @param bool $detaching - * @param array $columns - * @param \Closure|null $callback - * @return array - * @throws AuditingException - */ - public function auditSync(string $relationName, $ids, $detaching = true, $columns = ['*'], $callback = null) - { - $this->validateRelationshipMethodExistence($relationName, 'sync'); - - $relationCall = $this->{$relationName}(); - - if ($callback instanceof \Closure) { - $this->applyClosureToRelationship($relationCall, $callback); - } - - $old = $relationCall->get($columns); - $changes = $relationCall->sync($ids, $detaching); - - if (collect($changes)->flatten()->isEmpty()) { - $old = $new = collect([]); - } else { - $new = $relationCall->get($columns); - } - - $this->dispatchRelationAuditEvent($relationName, 'sync', $old, $new); - - return $changes; - } - - /** - * @param string $relationName - * @param Collection|Model|array $ids - * @param array $columns - * @param \Closure|null $callback - * @return array - * @throws AuditingException - */ - public function auditSyncWithoutDetaching(string $relationName, $ids, $columns = ['*'], $callback = null) - { - $this->validateRelationshipMethodExistence($relationName, 'syncWithoutDetaching'); - - return $this->auditSync($relationName, $ids, false, $columns, $callback); - } - - /** - * @param string $relationName - * @param Collection|Model|array $ids - * @param array $values - * @param bool $detaching - * @param array $columns - * @param \Closure|null $callback - * @return array - */ - public function auditSyncWithPivotValues(string $relationName, $ids, array $values, bool $detaching = true, $columns = ['*'], $callback = null) - { - $this->validateRelationshipMethodExistence($relationName, 'syncWithPivotValues'); - - if ($ids instanceof Model) { - $ids = $ids->getKey(); - } elseif ($ids instanceof \Illuminate\Database\Eloquent\Collection) { - $ids = $ids->isEmpty() ? [] : $ids->pluck($ids->first()->getKeyName())->toArray(); - } elseif ($ids instanceof Collection) { - $ids = $ids->toArray(); - } - - return $this->auditSync($relationName, collect(Arr::wrap($ids))->mapWithKeys(function ($id) use ($values) { - return [$id => $values]; - }), $detaching, $columns, $callback); - } - - /** - * @param string $relationName - * @param string $event - * @param Collection $old - * @param Collection $new - * @return void - */ - private function dispatchRelationAuditEvent($relationName, $event, $old, $new) - { - $this->auditCustomOld[$relationName] = $old->diff($new)->toArray(); - $this->auditCustomNew[$relationName] = $new->diff($old)->toArray(); - - if ( - empty($this->auditCustomOld[$relationName]) && - empty($this->auditCustomNew[$relationName]) - ) { - $this->auditCustomOld = $this->auditCustomNew = []; - } - - $this->auditEvent = $event; - $this->isCustomEvent = true; - Event::dispatch(AuditCustom::class, [$this]); - $this->auditCustomOld = $this->auditCustomNew = []; - $this->isCustomEvent = false; - } - - private function validateRelationshipMethodExistence(string $relationName, string $methodName): void - { - if (!method_exists($this, $relationName) || !method_exists($this->{$relationName}(), $methodName)) { - throw new AuditingException("Relationship $relationName was not found or does not support method $methodName"); - } - } - - private function applyClosureToRelationship(BelongsToMany $relation, \Closure $closure): void - { - try { - $closure($relation); - } catch (\Throwable $exception) { - throw new AuditingException("Invalid Closure for {$relation->getRelationName()} Relationship"); - } - } -} diff --git a/docker/streamline-src/vendor/owen-it/laravel-auditing/src/AuditableObserver.php b/docker/streamline-src/vendor/owen-it/laravel-auditing/src/AuditableObserver.php deleted file mode 100644 index 42867c14..00000000 --- a/docker/streamline-src/vendor/owen-it/laravel-auditing/src/AuditableObserver.php +++ /dev/null @@ -1,134 +0,0 @@ -dispatchAudit($model->setAuditEvent('retrieved')); - } - - /** - * Handle the created event. - * - * @param \OwenIt\Auditing\Contracts\Auditable $model - * - * @return void - */ - public function created(Auditable $model) - { - $this->dispatchAudit($model->setAuditEvent('created')); - } - - /** - * Handle the updated event. - * - * @param \OwenIt\Auditing\Contracts\Auditable $model - * - * @return void - */ - public function updated(Auditable $model) - { - // Ignore the updated event when restoring - if (!static::$restoring) { - $this->dispatchAudit($model->setAuditEvent('updated')); - } - } - - /** - * Handle the deleted event. - * - * @param \OwenIt\Auditing\Contracts\Auditable $model - * - * @return void - */ - public function deleted(Auditable $model) - { - $this->dispatchAudit($model->setAuditEvent('deleted')); - } - - /** - * Handle the restoring event. - * - * @param \OwenIt\Auditing\Contracts\Auditable $model - * - * @return void - */ - public function restoring(Auditable $model) - { - // When restoring a model, an updated event is also fired. - // By keeping track of the main event that took place, - // we avoid creating a second audit with wrong values - static::$restoring = true; - } - - /** - * Handle the restored event. - * - * @param \OwenIt\Auditing\Contracts\Auditable $model - * - * @return void - */ - public function restored(Auditable $model) - { - $this->dispatchAudit($model->setAuditEvent('restored')); - - // Once the model is restored, we need to put everything back - // as before, in case a legitimate update event is fired - static::$restoring = false; - } - - protected function dispatchAudit(Auditable $model) - { - if (!$model->readyForAuditing()) { - return; - } - - $model->preloadResolverData(); - if (!Config::get('audit.queue.enable', false)) { - Auditor::execute($model); - return; - } - - if (!$this->fireDispatchingAuditEvent($model)) { - return; - } - - // Unload the relations to prevent large amounts of unnecessary data from being serialized. - app()->make('events')->dispatch(new DispatchAudit($model->withoutRelations())); - } - - /** - * Fire the Auditing event. - * - * @param \OwenIt\Auditing\Contracts\Auditable $model - * - * @return bool - */ - protected function fireDispatchingAuditEvent(Auditable $model): bool - { - return app()->make('events') - ->until(new DispatchingAudit($model)) !== false; - } -} diff --git a/docker/streamline-src/vendor/owen-it/laravel-auditing/src/AuditingServiceProvider.php b/docker/streamline-src/vendor/owen-it/laravel-auditing/src/AuditingServiceProvider.php deleted file mode 100644 index 855e724c..00000000 --- a/docker/streamline-src/vendor/owen-it/laravel-auditing/src/AuditingServiceProvider.php +++ /dev/null @@ -1,72 +0,0 @@ -registerPublishing(); - $this->mergeConfigFrom(__DIR__ . '/../config/audit.php', 'audit'); - - Event::listen(AuditCustom::class, RecordCustomAudit::class); - Event::listen(DispatchAudit::class, ProcessDispatchAudit::class); - } - - /** - * Register the service provider. - * - * @return void - */ - public function register() - { - $this->commands([ - AuditDriverCommand::class, - AuditResolverCommand::class, - InstallCommand::class, - ]); - - $this->app->singleton(Auditor::class, function ($app) { - return new \OwenIt\Auditing\Auditor($app); - }); - } - - /** - * Register the package's publishable resources. - * - * @return void - */ - private function registerPublishing() - { - if ($this->app->runningInConsole()) { - // Lumen lacks a config_path() helper, so we use base_path() - $this->publishes([ - __DIR__ . '/../config/audit.php' => base_path('config/audit.php'), - ], 'config'); - - if (!class_exists('CreateAuditsTable')) { - $this->publishes([ - __DIR__ . '/../database/migrations/audits.stub' => database_path( - sprintf('migrations/%s_create_audits_table.php', date('Y_m_d_His')) - ), - ], 'migrations'); - } - } - } -} diff --git a/docker/streamline-src/vendor/owen-it/laravel-auditing/src/Contracts/Auditor.php b/docker/streamline-src/vendor/owen-it/laravel-auditing/src/Contracts/Auditor.php deleted file mode 100644 index 87d68838..00000000 --- a/docker/streamline-src/vendor/owen-it/laravel-auditing/src/Contracts/Auditor.php +++ /dev/null @@ -1,18 +0,0 @@ -audits()->getModel()), 'create'], $model->toAudit()); - } - - /** - * {@inheritdoc} - */ - public function prune(Auditable $model): bool - { - if (($threshold = $model->getAuditThreshold()) > 0) { - $auditClass = get_class($model->audits()->getModel()); - $auditModel = new $auditClass; - - return $model->audits() - ->leftJoinSub( - $model->audits()->select($auditModel->getKeyName())->limit($threshold)->latest(), - 'audit_threshold', - function ($join) use ($auditModel) { - $join->on( - $auditModel->gettable().'.'.$auditModel->getKeyName(), - '=', - 'audit_threshold.'.$auditModel->getKeyName() - ); - } - ) - ->whereNull('audit_threshold.'.$auditModel->getKeyName()) - ->delete() > 0; - } - - return false; - } -} diff --git a/docker/streamline-src/vendor/owen-it/laravel-auditing/src/Events/Audited.php b/docker/streamline-src/vendor/owen-it/laravel-auditing/src/Events/Audited.php deleted file mode 100644 index ad527c71..00000000 --- a/docker/streamline-src/vendor/owen-it/laravel-auditing/src/Events/Audited.php +++ /dev/null @@ -1,45 +0,0 @@ -model = $model; - $this->driver = $driver; - $this->audit = $audit; - } -} diff --git a/docker/streamline-src/vendor/owen-it/laravel-auditing/src/Events/DispatchAudit.php b/docker/streamline-src/vendor/owen-it/laravel-auditing/src/Events/DispatchAudit.php deleted file mode 100644 index 3acfd144..00000000 --- a/docker/streamline-src/vendor/owen-it/laravel-auditing/src/Events/DispatchAudit.php +++ /dev/null @@ -1,110 +0,0 @@ -model = $model; - } - - /** - * Prepare the instance values for serialization. - * - * @return array - */ - public function __serialize() - { - $values = [ - 'class' => get_class($this->model), - 'model_data' => [ - 'exists' => true, - 'connection' => $this->model->getQueueableConnection() - ] - ]; - - $customProperties = array_merge([ - 'attributes', - 'original', - 'excludedAttributes', - 'auditEvent', - 'auditExclude', - 'auditCustomOld', - 'auditCustomNew', - 'isCustomEvent', - 'preloadedResolverData', - ], $this->model->auditEventSerializedProperties ?? []); - - $reflection = new ReflectionClass($this->model); - - foreach ($customProperties as $key) { - try { - $values['model_data'][$key] = $this->getModelPropertyValue($reflection, $key); - } catch (\Throwable $e){ - // - } - } - - return $values; - } - - /** - * Restore the model after serialization. - * - * @param array $values - * @return array - */ - public function __unserialize(array $values) - { - $this->model = new $values['class']; - - $reflection = new ReflectionClass($this->model); - foreach ($values['model_data'] as $key => $value) { - $this->setModelPropertyValue($reflection, $key, $value); - } - - return $values; - } - - /** - * Set the property value for the given property. - */ - protected function setModelPropertyValue(ReflectionClass $reflection, string $name, $value) - { - $property = $reflection->getProperty($name); - - $property->setAccessible(true); - - $property->setValue($this->model, $value); - } - - /** - * Get the property value for the given property. - * - * @return mixed - */ - protected function getModelPropertyValue(ReflectionClass $reflection, string $name) - { - $property = $reflection->getProperty($name); - - $property->setAccessible(true); - - return $property->getValue($this->model); - } -} diff --git a/docker/streamline-src/vendor/owen-it/laravel-auditing/src/Exceptions/AuditableTransitionException.php b/docker/streamline-src/vendor/owen-it/laravel-auditing/src/Exceptions/AuditableTransitionException.php deleted file mode 100644 index bfadf980..00000000 --- a/docker/streamline-src/vendor/owen-it/laravel-auditing/src/Exceptions/AuditableTransitionException.php +++ /dev/null @@ -1,35 +0,0 @@ -incompatibilities = $incompatibilities; - } - - /** - * Get the attribute incompatibilities. - * - * @return array - */ - public function getIncompatibilities(): array - { - return $this->incompatibilities; - } -} diff --git a/docker/streamline-src/vendor/owen-it/laravel-auditing/src/Models/Audit.php b/docker/streamline-src/vendor/owen-it/laravel-auditing/src/Models/Audit.php deleted file mode 100644 index 187b01b9..00000000 --- a/docker/streamline-src/vendor/owen-it/laravel-auditing/src/Models/Audit.php +++ /dev/null @@ -1,44 +0,0 @@ - 'json', - 'new_values' => 'json', - // Note: Please do not add 'auditable_id' in here, as it will break non-integer PK models - ]; - - public function getSerializedDate($date) - { - return $this->serializeDate($date); - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/CHANGELOG.md b/docker/streamline-src/vendor/phar-io/manifest/CHANGELOG.md deleted file mode 100644 index f363b169..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/CHANGELOG.md +++ /dev/null @@ -1,45 +0,0 @@ -# Changelog - -All notable changes to phar-io/manifest are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. - -## [2.0.4] - 03-03-2024 - -### Changed - -- Make `EMail` an optional attribute for author -- Stick with PHP 7.2 compatibilty -- Do not use implict nullable type (thanks @sebastianbergmann), this should make things work on PHP 8.4 - -## [2.0.3] - 20.07.2021 - -- Fixed PHP 7.2 / PHP 7.3 incompatibility introduced in previous release - -## [2.0.2] - 20.07.2021 - -- Fixed PHP 8.1 deprecation notice - -## [2.0.1] - 27.06.2020 - -This release now supports the use of PHP 7.2+ and ^8.0 - -## [2.0.0] - 10.05.2020 - -This release now requires PHP 7.2+ - -### Changed - -- Upgraded to phar-io/version 3.0 - - Version strings `v1.2.3` will now be converted to valid semantic version strings `1.2.3` - - Abreviated strings like `1.0` will get expaneded to `1.0.0` - -### Unreleased - -[Unreleased]: https://github.com/phar-io/manifest/compare/2.1.0...HEAD -[2.1.0]: https://github.com/phar-io/manifest/compare/2.0.3...2.1.0 -[2.0.3]: https://github.com/phar-io/manifest/compare/2.0.2...2.0.3 -[2.0.2]: https://github.com/phar-io/manifest/compare/2.0.1...2.0.2 -[2.0.1]: https://github.com/phar-io/manifest/compare/2.0.0...2.0.1 -[2.0.0]: https://github.com/phar-io/manifest/compare/1.0.1...2.0.0 -[1.0.3]: https://github.com/phar-io/manifest/compare/1.0.2...1.0.3 -[1.0.2]: https://github.com/phar-io/manifest/compare/1.0.1...1.0.2 -[1.0.1]: https://github.com/phar-io/manifest/compare/1.0.0...1.0.1 diff --git a/docker/streamline-src/vendor/phar-io/manifest/README.md b/docker/streamline-src/vendor/phar-io/manifest/README.md deleted file mode 100644 index fae2c9a7..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/README.md +++ /dev/null @@ -1,178 +0,0 @@ -# Manifest - -Component for reading [phar.io](https://phar.io/) manifest information from a [PHP Archive (PHAR)](http://php.net/phar). - -## Installation - -You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): - - composer require phar-io/manifest - -If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency: - - composer require --dev phar-io/manifest - -## Usage Examples - -### Read from `manifest.xml` -```php -use PharIo\Manifest\ManifestLoader; -use PharIo\Manifest\ManifestSerializer; - -$manifest = ManifestLoader::fromFile('manifest.xml'); - -var_dump($manifest); - -echo (new ManifestSerializer)->serializeToString($manifest); -``` - -
    - Output - -```shell -object(PharIo\Manifest\Manifest)#14 (6) { - ["name":"PharIo\Manifest\Manifest":private]=> - object(PharIo\Manifest\ApplicationName)#10 (1) { - ["name":"PharIo\Manifest\ApplicationName":private]=> - string(12) "some/library" - } - ["version":"PharIo\Manifest\Manifest":private]=> - object(PharIo\Version\Version)#12 (5) { - ["originalVersionString":"PharIo\Version\Version":private]=> - string(5) "1.0.0" - ["major":"PharIo\Version\Version":private]=> - object(PharIo\Version\VersionNumber)#13 (1) { - ["value":"PharIo\Version\VersionNumber":private]=> - int(1) - } - ["minor":"PharIo\Version\Version":private]=> - object(PharIo\Version\VersionNumber)#23 (1) { - ["value":"PharIo\Version\VersionNumber":private]=> - int(0) - } - ["patch":"PharIo\Version\Version":private]=> - object(PharIo\Version\VersionNumber)#22 (1) { - ["value":"PharIo\Version\VersionNumber":private]=> - int(0) - } - ["preReleaseSuffix":"PharIo\Version\Version":private]=> - NULL - } - ["type":"PharIo\Manifest\Manifest":private]=> - object(PharIo\Manifest\Library)#6 (0) { - } - ["copyrightInformation":"PharIo\Manifest\Manifest":private]=> - object(PharIo\Manifest\CopyrightInformation)#19 (2) { - ["authors":"PharIo\Manifest\CopyrightInformation":private]=> - object(PharIo\Manifest\AuthorCollection)#9 (1) { - ["authors":"PharIo\Manifest\AuthorCollection":private]=> - array(1) { - [0]=> - object(PharIo\Manifest\Author)#15 (2) { - ["name":"PharIo\Manifest\Author":private]=> - string(13) "Reiner Zufall" - ["email":"PharIo\Manifest\Author":private]=> - object(PharIo\Manifest\Email)#16 (1) { - ["email":"PharIo\Manifest\Email":private]=> - string(16) "reiner@zufall.de" - } - } - } - } - ["license":"PharIo\Manifest\CopyrightInformation":private]=> - object(PharIo\Manifest\License)#11 (2) { - ["name":"PharIo\Manifest\License":private]=> - string(12) "BSD-3-Clause" - ["url":"PharIo\Manifest\License":private]=> - object(PharIo\Manifest\Url)#18 (1) { - ["url":"PharIo\Manifest\Url":private]=> - string(26) "https://domain.tld/LICENSE" - } - } - } - ["requirements":"PharIo\Manifest\Manifest":private]=> - object(PharIo\Manifest\RequirementCollection)#17 (1) { - ["requirements":"PharIo\Manifest\RequirementCollection":private]=> - array(1) { - [0]=> - object(PharIo\Manifest\PhpVersionRequirement)#20 (1) { - ["versionConstraint":"PharIo\Manifest\PhpVersionRequirement":private]=> - object(PharIo\Version\SpecificMajorAndMinorVersionConstraint)#24 (3) { - ["originalValue":"PharIo\Version\AbstractVersionConstraint":private]=> - string(3) "7.0" - ["major":"PharIo\Version\SpecificMajorAndMinorVersionConstraint":private]=> - int(7) - ["minor":"PharIo\Version\SpecificMajorAndMinorVersionConstraint":private]=> - int(0) - } - } - } - } - ["bundledComponents":"PharIo\Manifest\Manifest":private]=> - object(PharIo\Manifest\BundledComponentCollection)#8 (1) { - ["bundledComponents":"PharIo\Manifest\BundledComponentCollection":private]=> - array(0) { - } - } -} - - - - - - - - - - - -``` -
    - -### Create via API -```php -$bundled = new \PharIo\Manifest\BundledComponentCollection(); -$bundled->add( - new \PharIo\Manifest\BundledComponent('vendor/packageA', new \PharIo\Version\Version('1.2.3-dev') - ) -); - -$manifest = new PharIo\Manifest\Manifest( - new \PharIo\Manifest\ApplicationName('vendor/package'), - new \PharIo\Version\Version('1.0.0'), - new \PharIo\Manifest\Library(), - new \PharIo\Manifest\CopyrightInformation( - new \PharIo\Manifest\AuthorCollection(), - new \PharIo\Manifest\License( - 'BSD-3-Clause', - new \PharIo\Manifest\Url('https://spdx.org/licenses/BSD-3-Clause.html') - ) - ), - new \PharIo\Manifest\RequirementCollection(), - $bundled -); - -echo (new ManifestSerializer)->serializeToString($manifest); -``` - -
    - Output - -```xml - - - - - - - - - - - - - -``` - -
    - diff --git a/docker/streamline-src/vendor/phar-io/manifest/composer.json b/docker/streamline-src/vendor/phar-io/manifest/composer.json deleted file mode 100644 index dc5fa458..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/composer.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "phar-io/manifest", - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "license": "BSD-3-Clause", - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "support": { - "issues": "https://github.com/phar-io/manifest/issues" - }, - "require": { - "php": "^7.2 || ^8.0", - "ext-dom": "*", - "ext-phar": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "phar-io/version": "^3.0.1" - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/composer.lock b/docker/streamline-src/vendor/phar-io/manifest/composer.lock deleted file mode 100644 index fe18e08b..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/composer.lock +++ /dev/null @@ -1,76 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "279b3c4fe44357abd924fdcc0cfa5664", - "packages": [ - { - "name": "phar-io/version", - "version": "3.2.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Library for handling version information and constraints", - "support": { - "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.2.1" - }, - "time": "2022-02-21T01:04:05+00:00" - } - ], - "packages-dev": [], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": [], - "prefer-stable": false, - "prefer-lowest": false, - "platform": { - "php": "^7.2 || ^8.0", - "ext-dom": "*", - "ext-phar": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*" - }, - "platform-dev": [], - "plugin-api-version": "2.3.0" -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/ManifestDocumentMapper.php b/docker/streamline-src/vendor/phar-io/manifest/src/ManifestDocumentMapper.php deleted file mode 100644 index 3da6403f..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/ManifestDocumentMapper.php +++ /dev/null @@ -1,151 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -use PharIo\Version\Exception as VersionException; -use PharIo\Version\Version; -use PharIo\Version\VersionConstraintParser; -use Throwable; -use function sprintf; - -class ManifestDocumentMapper { - public function map(ManifestDocument $document): Manifest { - try { - $contains = $document->getContainsElement(); - $type = $this->mapType($contains); - $copyright = $this->mapCopyright($document->getCopyrightElement()); - $requirements = $this->mapRequirements($document->getRequiresElement()); - $bundledComponents = $this->mapBundledComponents($document); - - return new Manifest( - new ApplicationName($contains->getName()), - new Version($contains->getVersion()), - $type, - $copyright, - $requirements, - $bundledComponents - ); - } catch (Throwable $e) { - throw new ManifestDocumentMapperException($e->getMessage(), (int)$e->getCode(), $e); - } - } - - private function mapType(ContainsElement $contains): Type { - switch ($contains->getType()) { - case 'application': - return Type::application(); - case 'library': - return Type::library(); - case 'extension': - return $this->mapExtension($contains->getExtensionElement()); - } - - throw new ManifestDocumentMapperException( - sprintf('Unsupported type %s', $contains->getType()) - ); - } - - private function mapCopyright(CopyrightElement $copyright): CopyrightInformation { - $authors = new AuthorCollection(); - - foreach ($copyright->getAuthorElements() as $authorElement) { - $authors->add( - new Author( - $authorElement->getName(), - $authorElement->hasEMail() ? new Email($authorElement->getEmail()) : null - ) - ); - } - - $licenseElement = $copyright->getLicenseElement(); - $license = new License( - $licenseElement->getType(), - new Url($licenseElement->getUrl()) - ); - - return new CopyrightInformation( - $authors, - $license - ); - } - - private function mapRequirements(RequiresElement $requires): RequirementCollection { - $collection = new RequirementCollection(); - $phpElement = $requires->getPHPElement(); - $parser = new VersionConstraintParser; - - try { - $versionConstraint = $parser->parse($phpElement->getVersion()); - } catch (VersionException $e) { - throw new ManifestDocumentMapperException( - sprintf('Unsupported version constraint - %s', $e->getMessage()), - (int)$e->getCode(), - $e - ); - } - - $collection->add( - new PhpVersionRequirement( - $versionConstraint - ) - ); - - if (!$phpElement->hasExtElements()) { - return $collection; - } - - foreach ($phpElement->getExtElements() as $extElement) { - $collection->add( - new PhpExtensionRequirement($extElement->getName()) - ); - } - - return $collection; - } - - private function mapBundledComponents(ManifestDocument $document): BundledComponentCollection { - $collection = new BundledComponentCollection(); - - if (!$document->hasBundlesElement()) { - return $collection; - } - - foreach ($document->getBundlesElement()->getComponentElements() as $componentElement) { - $collection->add( - new BundledComponent( - $componentElement->getName(), - new Version( - $componentElement->getVersion() - ) - ) - ); - } - - return $collection; - } - - private function mapExtension(ExtensionElement $extension): Extension { - try { - $versionConstraint = (new VersionConstraintParser)->parse($extension->getCompatible()); - - return Type::extension( - new ApplicationName($extension->getFor()), - $versionConstraint - ); - } catch (VersionException $e) { - throw new ManifestDocumentMapperException( - sprintf('Unsupported version constraint - %s', $e->getMessage()), - (int)$e->getCode(), - $e - ); - } - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/ManifestLoader.php b/docker/streamline-src/vendor/phar-io/manifest/src/ManifestLoader.php deleted file mode 100644 index f467d2d3..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/ManifestLoader.php +++ /dev/null @@ -1,47 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -use function sprintf; - -class ManifestLoader { - public static function fromFile(string $filename): Manifest { - try { - return (new ManifestDocumentMapper())->map( - ManifestDocument::fromFile($filename) - ); - } catch (Exception $e) { - throw new ManifestLoaderException( - sprintf('Loading %s failed.', $filename), - (int)$e->getCode(), - $e - ); - } - } - - public static function fromPhar(string $filename): Manifest { - return self::fromFile('phar://' . $filename . '/manifest.xml'); - } - - public static function fromString(string $manifest): Manifest { - try { - return (new ManifestDocumentMapper())->map( - ManifestDocument::fromString($manifest) - ); - } catch (Exception $e) { - throw new ManifestLoaderException( - 'Processing string failed', - (int)$e->getCode(), - $e - ); - } - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/ManifestSerializer.php b/docker/streamline-src/vendor/phar-io/manifest/src/ManifestSerializer.php deleted file mode 100644 index 48b8efdd..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/ManifestSerializer.php +++ /dev/null @@ -1,172 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -use PharIo\Version\AnyVersionConstraint; -use PharIo\Version\Version; -use PharIo\Version\VersionConstraint; -use XMLWriter; -use function count; -use function file_put_contents; -use function str_repeat; - -/** @psalm-suppress MissingConstructor */ -class ManifestSerializer { - /** @var XMLWriter */ - private $xmlWriter; - - public function serializeToFile(Manifest $manifest, string $filename): void { - file_put_contents( - $filename, - $this->serializeToString($manifest) - ); - } - - public function serializeToString(Manifest $manifest): string { - $this->startDocument(); - - $this->addContains($manifest->getName(), $manifest->getVersion(), $manifest->getType()); - $this->addCopyright($manifest->getCopyrightInformation()); - $this->addRequirements($manifest->getRequirements()); - $this->addBundles($manifest->getBundledComponents()); - - return $this->finishDocument(); - } - - private function startDocument(): void { - $xmlWriter = new XMLWriter(); - $xmlWriter->openMemory(); - $xmlWriter->setIndent(true); - $xmlWriter->setIndentString(str_repeat(' ', 4)); - $xmlWriter->startDocument('1.0', 'UTF-8'); - $xmlWriter->startElement('phar'); - $xmlWriter->writeAttribute('xmlns', 'https://phar.io/xml/manifest/1.0'); - - $this->xmlWriter = $xmlWriter; - } - - private function finishDocument(): string { - $this->xmlWriter->endElement(); - $this->xmlWriter->endDocument(); - - return $this->xmlWriter->outputMemory(); - } - - private function addContains(ApplicationName $name, Version $version, Type $type): void { - $this->xmlWriter->startElement('contains'); - $this->xmlWriter->writeAttribute('name', $name->asString()); - $this->xmlWriter->writeAttribute('version', $version->getVersionString()); - - switch (true) { - case $type->isApplication(): { - $this->xmlWriter->writeAttribute('type', 'application'); - - break; - } - - case $type->isLibrary(): { - $this->xmlWriter->writeAttribute('type', 'library'); - - break; - } - - case $type->isExtension(): { - $this->xmlWriter->writeAttribute('type', 'extension'); - /* @var $type Extension */ - $this->addExtension( - $type->getApplicationName(), - $type->getVersionConstraint() - ); - - break; - } - - default: { - $this->xmlWriter->writeAttribute('type', 'custom'); - } - } - - $this->xmlWriter->endElement(); - } - - private function addCopyright(CopyrightInformation $copyrightInformation): void { - $this->xmlWriter->startElement('copyright'); - - foreach ($copyrightInformation->getAuthors() as $author) { - $this->xmlWriter->startElement('author'); - $this->xmlWriter->writeAttribute('name', $author->getName()); - $this->xmlWriter->writeAttribute('email', $author->getEmail()->asString()); - $this->xmlWriter->endElement(); - } - - $license = $copyrightInformation->getLicense(); - - $this->xmlWriter->startElement('license'); - $this->xmlWriter->writeAttribute('type', $license->getName()); - $this->xmlWriter->writeAttribute('url', $license->getUrl()->asString()); - $this->xmlWriter->endElement(); - - $this->xmlWriter->endElement(); - } - - private function addRequirements(RequirementCollection $requirementCollection): void { - $phpRequirement = new AnyVersionConstraint(); - $extensions = []; - - foreach ($requirementCollection as $requirement) { - if ($requirement instanceof PhpVersionRequirement) { - $phpRequirement = $requirement->getVersionConstraint(); - - continue; - } - - if ($requirement instanceof PhpExtensionRequirement) { - $extensions[] = $requirement->asString(); - } - } - - $this->xmlWriter->startElement('requires'); - $this->xmlWriter->startElement('php'); - $this->xmlWriter->writeAttribute('version', $phpRequirement->asString()); - - foreach ($extensions as $extension) { - $this->xmlWriter->startElement('ext'); - $this->xmlWriter->writeAttribute('name', $extension); - $this->xmlWriter->endElement(); - } - - $this->xmlWriter->endElement(); - $this->xmlWriter->endElement(); - } - - private function addBundles(BundledComponentCollection $bundledComponentCollection): void { - if (count($bundledComponentCollection) === 0) { - return; - } - $this->xmlWriter->startElement('bundles'); - - foreach ($bundledComponentCollection as $bundledComponent) { - $this->xmlWriter->startElement('component'); - $this->xmlWriter->writeAttribute('name', $bundledComponent->getName()); - $this->xmlWriter->writeAttribute('version', $bundledComponent->getVersion()->getVersionString()); - $this->xmlWriter->endElement(); - } - - $this->xmlWriter->endElement(); - } - - private function addExtension(ApplicationName $applicationName, VersionConstraint $versionConstraint): void { - $this->xmlWriter->startElement('extension'); - $this->xmlWriter->writeAttribute('for', $applicationName->asString()); - $this->xmlWriter->writeAttribute('compatible', $versionConstraint->asString()); - $this->xmlWriter->endElement(); - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/exceptions/ElementCollectionException.php b/docker/streamline-src/vendor/phar-io/manifest/src/exceptions/ElementCollectionException.php deleted file mode 100644 index 7528afc8..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/exceptions/ElementCollectionException.php +++ /dev/null @@ -1,16 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -use InvalidArgumentException; - -class ElementCollectionException extends InvalidArgumentException implements Exception { -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/exceptions/Exception.php b/docker/streamline-src/vendor/phar-io/manifest/src/exceptions/Exception.php deleted file mode 100644 index 0c135d3c..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/exceptions/Exception.php +++ /dev/null @@ -1,16 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -use Throwable; - -interface Exception extends Throwable { -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php b/docker/streamline-src/vendor/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php deleted file mode 100644 index ecfe5142..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php +++ /dev/null @@ -1,17 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -use InvalidArgumentException; - -class InvalidApplicationNameException extends InvalidArgumentException implements Exception { - public const InvalidFormat = 2; -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/exceptions/InvalidEmailException.php b/docker/streamline-src/vendor/phar-io/manifest/src/exceptions/InvalidEmailException.php deleted file mode 100644 index 24240551..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/exceptions/InvalidEmailException.php +++ /dev/null @@ -1,16 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -use InvalidArgumentException; - -class InvalidEmailException extends InvalidArgumentException implements Exception { -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/exceptions/InvalidUrlException.php b/docker/streamline-src/vendor/phar-io/manifest/src/exceptions/InvalidUrlException.php deleted file mode 100644 index c8b192b1..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/exceptions/InvalidUrlException.php +++ /dev/null @@ -1,16 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -use InvalidArgumentException; - -class InvalidUrlException extends InvalidArgumentException implements Exception { -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/exceptions/ManifestDocumentException.php b/docker/streamline-src/vendor/phar-io/manifest/src/exceptions/ManifestDocumentException.php deleted file mode 100644 index 0a158e6e..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/exceptions/ManifestDocumentException.php +++ /dev/null @@ -1,16 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -use RuntimeException; - -class ManifestDocumentException extends RuntimeException implements Exception { -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/exceptions/ManifestDocumentLoadingException.php b/docker/streamline-src/vendor/phar-io/manifest/src/exceptions/ManifestDocumentLoadingException.php deleted file mode 100644 index 816af120..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/exceptions/ManifestDocumentLoadingException.php +++ /dev/null @@ -1,47 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -use LibXMLError; -use function sprintf; - -class ManifestDocumentLoadingException extends \Exception implements Exception { - /** @var LibXMLError[] */ - private $libxmlErrors; - - /** - * ManifestDocumentLoadingException constructor. - * - * @param LibXMLError[] $libxmlErrors - */ - public function __construct(array $libxmlErrors) { - $this->libxmlErrors = $libxmlErrors; - $first = $this->libxmlErrors[0]; - - parent::__construct( - sprintf( - '%s (Line: %d / Column: %d / File: %s)', - $first->message, - $first->line, - $first->column, - $first->file - ), - $first->code - ); - } - - /** - * @return LibXMLError[] - */ - public function getLibxmlErrors(): array { - return $this->libxmlErrors; - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/exceptions/ManifestDocumentMapperException.php b/docker/streamline-src/vendor/phar-io/manifest/src/exceptions/ManifestDocumentMapperException.php deleted file mode 100644 index 0d1a5f5a..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/exceptions/ManifestDocumentMapperException.php +++ /dev/null @@ -1,16 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -use RuntimeException; - -class ManifestDocumentMapperException extends RuntimeException implements Exception { -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/exceptions/ManifestElementException.php b/docker/streamline-src/vendor/phar-io/manifest/src/exceptions/ManifestElementException.php deleted file mode 100644 index 46f82e32..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/exceptions/ManifestElementException.php +++ /dev/null @@ -1,16 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -use RuntimeException; - -class ManifestElementException extends RuntimeException implements Exception { -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/exceptions/ManifestLoaderException.php b/docker/streamline-src/vendor/phar-io/manifest/src/exceptions/ManifestLoaderException.php deleted file mode 100644 index d00ed190..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/exceptions/ManifestLoaderException.php +++ /dev/null @@ -1,14 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -class ManifestLoaderException extends \Exception implements Exception { -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/values/Application.php b/docker/streamline-src/vendor/phar-io/manifest/src/values/Application.php deleted file mode 100644 index 11a44d9c..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/values/Application.php +++ /dev/null @@ -1,17 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -class Application extends Type { - public function isApplication(): bool { - return true; - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/values/ApplicationName.php b/docker/streamline-src/vendor/phar-io/manifest/src/values/ApplicationName.php deleted file mode 100644 index 1a0ad1e2..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/values/ApplicationName.php +++ /dev/null @@ -1,41 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -use function preg_match; -use function sprintf; - -class ApplicationName { - /** @var string */ - private $name; - - public function __construct(string $name) { - $this->ensureValidFormat($name); - $this->name = $name; - } - - public function asString(): string { - return $this->name; - } - - public function isEqual(ApplicationName $name): bool { - return $this->name === $name->name; - } - - private function ensureValidFormat(string $name): void { - if (!preg_match('#\w/\w#', $name)) { - throw new InvalidApplicationNameException( - sprintf('Format of name "%s" is not valid - expected: vendor/packagename', $name), - InvalidApplicationNameException::InvalidFormat - ); - } - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/values/Author.php b/docker/streamline-src/vendor/phar-io/manifest/src/values/Author.php deleted file mode 100644 index 7b243aac..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/values/Author.php +++ /dev/null @@ -1,57 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -use function sprintf; - -class Author { - /** @var string */ - private $name; - - /** @var null|Email */ - private $email; - - public function __construct(string $name, ?Email $email = null) { - $this->name = $name; - $this->email = $email; - } - - public function asString(): string { - if (!$this->hasEmail()) { - return $this->name; - } - - return sprintf( - '%s <%s>', - $this->name, - $this->email->asString() - ); - } - - public function getName(): string { - return $this->name; - } - - /** - * @psalm-assert-if-true Email $this->email - */ - public function hasEmail(): bool { - return $this->email !== null; - } - - public function getEmail(): Email { - if (!$this->hasEmail()) { - throw new NoEmailAddressException(); - } - - return $this->email; - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/values/AuthorCollection.php b/docker/streamline-src/vendor/phar-io/manifest/src/values/AuthorCollection.php deleted file mode 100644 index 549876da..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/values/AuthorCollection.php +++ /dev/null @@ -1,40 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -use Countable; -use IteratorAggregate; -use function count; - -/** @template-implements IteratorAggregate */ -class AuthorCollection implements Countable, IteratorAggregate { - /** @var Author[] */ - private $authors = []; - - public function add(Author $author): void { - $this->authors[] = $author; - } - - /** - * @return Author[] - */ - public function getAuthors(): array { - return $this->authors; - } - - public function count(): int { - return count($this->authors); - } - - public function getIterator(): AuthorCollectionIterator { - return new AuthorCollectionIterator($this); - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/values/AuthorCollectionIterator.php b/docker/streamline-src/vendor/phar-io/manifest/src/values/AuthorCollectionIterator.php deleted file mode 100644 index 36fee9f7..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/values/AuthorCollectionIterator.php +++ /dev/null @@ -1,47 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -use Iterator; -use function count; - -/** @template-implements Iterator */ -class AuthorCollectionIterator implements Iterator { - /** @var Author[] */ - private $authors; - - /** @var int */ - private $position = 0; - - public function __construct(AuthorCollection $authors) { - $this->authors = $authors->getAuthors(); - } - - public function rewind(): void { - $this->position = 0; - } - - public function valid(): bool { - return $this->position < count($this->authors); - } - - public function key(): int { - return $this->position; - } - - public function current(): Author { - return $this->authors[$this->position]; - } - - public function next(): void { - $this->position++; - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/values/BundledComponent.php b/docker/streamline-src/vendor/phar-io/manifest/src/values/BundledComponent.php deleted file mode 100644 index 58170368..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/values/BundledComponent.php +++ /dev/null @@ -1,34 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -use PharIo\Version\Version; - -class BundledComponent { - /** @var string */ - private $name; - - /** @var Version */ - private $version; - - public function __construct(string $name, Version $version) { - $this->name = $name; - $this->version = $version; - } - - public function getName(): string { - return $this->name; - } - - public function getVersion(): Version { - return $this->version; - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/values/BundledComponentCollection.php b/docker/streamline-src/vendor/phar-io/manifest/src/values/BundledComponentCollection.php deleted file mode 100644 index 28aaa06c..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/values/BundledComponentCollection.php +++ /dev/null @@ -1,40 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -use Countable; -use IteratorAggregate; -use function count; - -/** @template-implements IteratorAggregate */ -class BundledComponentCollection implements Countable, IteratorAggregate { - /** @var BundledComponent[] */ - private $bundledComponents = []; - - public function add(BundledComponent $bundledComponent): void { - $this->bundledComponents[] = $bundledComponent; - } - - /** - * @return BundledComponent[] - */ - public function getBundledComponents(): array { - return $this->bundledComponents; - } - - public function count(): int { - return count($this->bundledComponents); - } - - public function getIterator(): BundledComponentCollectionIterator { - return new BundledComponentCollectionIterator($this); - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/values/BundledComponentCollectionIterator.php b/docker/streamline-src/vendor/phar-io/manifest/src/values/BundledComponentCollectionIterator.php deleted file mode 100644 index 5c72817d..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/values/BundledComponentCollectionIterator.php +++ /dev/null @@ -1,47 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -use Iterator; -use function count; - -/** @template-implements Iterator */ -class BundledComponentCollectionIterator implements Iterator { - /** @var BundledComponent[] */ - private $bundledComponents; - - /** @var int */ - private $position = 0; - - public function __construct(BundledComponentCollection $bundledComponents) { - $this->bundledComponents = $bundledComponents->getBundledComponents(); - } - - public function rewind(): void { - $this->position = 0; - } - - public function valid(): bool { - return $this->position < count($this->bundledComponents); - } - - public function key(): int { - return $this->position; - } - - public function current(): BundledComponent { - return $this->bundledComponents[$this->position]; - } - - public function next(): void { - $this->position++; - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/values/CopyrightInformation.php b/docker/streamline-src/vendor/phar-io/manifest/src/values/CopyrightInformation.php deleted file mode 100644 index b4468ed7..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/values/CopyrightInformation.php +++ /dev/null @@ -1,32 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -class CopyrightInformation { - /** @var AuthorCollection */ - private $authors; - - /** @var License */ - private $license; - - public function __construct(AuthorCollection $authors, License $license) { - $this->authors = $authors; - $this->license = $license; - } - - public function getAuthors(): AuthorCollection { - return $this->authors; - } - - public function getLicense(): License { - return $this->license; - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/values/Email.php b/docker/streamline-src/vendor/phar-io/manifest/src/values/Email.php deleted file mode 100644 index dbaff84a..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/values/Email.php +++ /dev/null @@ -1,35 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -use const FILTER_VALIDATE_EMAIL; -use function filter_var; - -class Email { - /** @var string */ - private $email; - - public function __construct(string $email) { - $this->ensureEmailIsValid($email); - - $this->email = $email; - } - - public function asString(): string { - return $this->email; - } - - private function ensureEmailIsValid(string $url): void { - if (filter_var($url, FILTER_VALIDATE_EMAIL) === false) { - throw new InvalidEmailException; - } - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/values/Extension.php b/docker/streamline-src/vendor/phar-io/manifest/src/values/Extension.php deleted file mode 100644 index abcd2f89..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/values/Extension.php +++ /dev/null @@ -1,47 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -use PharIo\Version\Version; -use PharIo\Version\VersionConstraint; - -class Extension extends Type { - /** @var ApplicationName */ - private $application; - - /** @var VersionConstraint */ - private $versionConstraint; - - public function __construct(ApplicationName $application, VersionConstraint $versionConstraint) { - $this->application = $application; - $this->versionConstraint = $versionConstraint; - } - - public function getApplicationName(): ApplicationName { - return $this->application; - } - - public function getVersionConstraint(): VersionConstraint { - return $this->versionConstraint; - } - - public function isExtension(): bool { - return true; - } - - public function isExtensionFor(ApplicationName $name): bool { - return $this->application->isEqual($name); - } - - public function isCompatibleWith(ApplicationName $name, Version $version): bool { - return $this->isExtensionFor($name) && $this->versionConstraint->complies($version); - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/values/Library.php b/docker/streamline-src/vendor/phar-io/manifest/src/values/Library.php deleted file mode 100644 index 97c292dc..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/values/Library.php +++ /dev/null @@ -1,17 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -class Library extends Type { - public function isLibrary(): bool { - return true; - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/values/License.php b/docker/streamline-src/vendor/phar-io/manifest/src/values/License.php deleted file mode 100644 index c2d94299..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/values/License.php +++ /dev/null @@ -1,32 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -class License { - /** @var string */ - private $name; - - /** @var Url */ - private $url; - - public function __construct(string $name, Url $url) { - $this->name = $name; - $this->url = $url; - } - - public function getName(): string { - return $this->name; - } - - public function getUrl(): Url { - return $this->url; - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/values/Manifest.php b/docker/streamline-src/vendor/phar-io/manifest/src/values/Manifest.php deleted file mode 100644 index 36466820..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/values/Manifest.php +++ /dev/null @@ -1,93 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -use PharIo\Version\Version; - -class Manifest { - /** @var ApplicationName */ - private $name; - - /** @var Version */ - private $version; - - /** @var Type */ - private $type; - - /** @var CopyrightInformation */ - private $copyrightInformation; - - /** @var RequirementCollection */ - private $requirements; - - /** @var BundledComponentCollection */ - private $bundledComponents; - - public function __construct(ApplicationName $name, Version $version, Type $type, CopyrightInformation $copyrightInformation, RequirementCollection $requirements, BundledComponentCollection $bundledComponents) { - $this->name = $name; - $this->version = $version; - $this->type = $type; - $this->copyrightInformation = $copyrightInformation; - $this->requirements = $requirements; - $this->bundledComponents = $bundledComponents; - } - - public function getName(): ApplicationName { - return $this->name; - } - - public function getVersion(): Version { - return $this->version; - } - - public function getType(): Type { - return $this->type; - } - - public function getCopyrightInformation(): CopyrightInformation { - return $this->copyrightInformation; - } - - public function getRequirements(): RequirementCollection { - return $this->requirements; - } - - public function getBundledComponents(): BundledComponentCollection { - return $this->bundledComponents; - } - - public function isApplication(): bool { - return $this->type->isApplication(); - } - - public function isLibrary(): bool { - return $this->type->isLibrary(); - } - - public function isExtension(): bool { - return $this->type->isExtension(); - } - - public function isExtensionFor(ApplicationName $application, ?Version $version = null): bool { - if (!$this->isExtension()) { - return false; - } - - /** @var Extension $type */ - $type = $this->type; - - if ($version !== null) { - return $type->isCompatibleWith($application, $version); - } - - return $type->isExtensionFor($application); - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/values/PhpExtensionRequirement.php b/docker/streamline-src/vendor/phar-io/manifest/src/values/PhpExtensionRequirement.php deleted file mode 100644 index f81bd259..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/values/PhpExtensionRequirement.php +++ /dev/null @@ -1,24 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -class PhpExtensionRequirement implements Requirement { - /** @var string */ - private $extension; - - public function __construct(string $extension) { - $this->extension = $extension; - } - - public function asString(): string { - return $this->extension; - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/values/PhpVersionRequirement.php b/docker/streamline-src/vendor/phar-io/manifest/src/values/PhpVersionRequirement.php deleted file mode 100644 index fb30c3b8..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/values/PhpVersionRequirement.php +++ /dev/null @@ -1,26 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -use PharIo\Version\VersionConstraint; - -class PhpVersionRequirement implements Requirement { - /** @var VersionConstraint */ - private $versionConstraint; - - public function __construct(VersionConstraint $versionConstraint) { - $this->versionConstraint = $versionConstraint; - } - - public function getVersionConstraint(): VersionConstraint { - return $this->versionConstraint; - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/values/Requirement.php b/docker/streamline-src/vendor/phar-io/manifest/src/values/Requirement.php deleted file mode 100644 index d4b46401..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/values/Requirement.php +++ /dev/null @@ -1,14 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -interface Requirement { -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/values/RequirementCollection.php b/docker/streamline-src/vendor/phar-io/manifest/src/values/RequirementCollection.php deleted file mode 100644 index e4fe2a11..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/values/RequirementCollection.php +++ /dev/null @@ -1,40 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -use Countable; -use IteratorAggregate; -use function count; - -/** @template-implements IteratorAggregate */ -class RequirementCollection implements Countable, IteratorAggregate { - /** @var Requirement[] */ - private $requirements = []; - - public function add(Requirement $requirement): void { - $this->requirements[] = $requirement; - } - - /** - * @return Requirement[] - */ - public function getRequirements(): array { - return $this->requirements; - } - - public function count(): int { - return count($this->requirements); - } - - public function getIterator(): RequirementCollectionIterator { - return new RequirementCollectionIterator($this); - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/values/RequirementCollectionIterator.php b/docker/streamline-src/vendor/phar-io/manifest/src/values/RequirementCollectionIterator.php deleted file mode 100644 index a587468c..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/values/RequirementCollectionIterator.php +++ /dev/null @@ -1,47 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -use Iterator; -use function count; - -/** @template-implements Iterator */ -class RequirementCollectionIterator implements Iterator { - /** @var Requirement[] */ - private $requirements; - - /** @var int */ - private $position = 0; - - public function __construct(RequirementCollection $requirements) { - $this->requirements = $requirements->getRequirements(); - } - - public function rewind(): void { - $this->position = 0; - } - - public function valid(): bool { - return $this->position < count($this->requirements); - } - - public function key(): int { - return $this->position; - } - - public function current(): Requirement { - return $this->requirements[$this->position]; - } - - public function next(): void { - $this->position++; - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/values/Type.php b/docker/streamline-src/vendor/phar-io/manifest/src/values/Type.php deleted file mode 100644 index 231e7fd9..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/values/Type.php +++ /dev/null @@ -1,42 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -use PharIo\Version\VersionConstraint; - -abstract class Type { - public static function application(): Application { - return new Application; - } - - public static function library(): Library { - return new Library; - } - - public static function extension(ApplicationName $application, VersionConstraint $versionConstraint): Extension { - return new Extension($application, $versionConstraint); - } - - /** @psalm-assert-if-true Application $this */ - public function isApplication(): bool { - return false; - } - - /** @psalm-assert-if-true Library $this */ - public function isLibrary(): bool { - return false; - } - - /** @psalm-assert-if-true Extension $this */ - public function isExtension(): bool { - return false; - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/values/Url.php b/docker/streamline-src/vendor/phar-io/manifest/src/values/Url.php deleted file mode 100644 index 98061554..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/values/Url.php +++ /dev/null @@ -1,38 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -use const FILTER_VALIDATE_URL; -use function filter_var; - -class Url { - /** @var string */ - private $url; - - public function __construct(string $url) { - $this->ensureUrlIsValid($url); - - $this->url = $url; - } - - public function asString(): string { - return $this->url; - } - - /** - * @throws InvalidUrlException - */ - private function ensureUrlIsValid(string $url): void { - if (filter_var($url, FILTER_VALIDATE_URL) === false) { - throw new InvalidUrlException; - } - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/xml/AuthorElement.php b/docker/streamline-src/vendor/phar-io/manifest/src/xml/AuthorElement.php deleted file mode 100644 index b33eb3ca..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/xml/AuthorElement.php +++ /dev/null @@ -1,25 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -class AuthorElement extends ManifestElement { - public function getName(): string { - return $this->getAttributeValue('name'); - } - - public function getEmail(): string { - return $this->getAttributeValue('email'); - } - - public function hasEMail(): bool { - return $this->hasAttribute('email'); - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/xml/AuthorElementCollection.php b/docker/streamline-src/vendor/phar-io/manifest/src/xml/AuthorElementCollection.php deleted file mode 100644 index 0a2a2a38..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/xml/AuthorElementCollection.php +++ /dev/null @@ -1,19 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -class AuthorElementCollection extends ElementCollection { - public function current(): AuthorElement { - return new AuthorElement( - $this->getCurrentElement() - ); - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/xml/BundlesElement.php b/docker/streamline-src/vendor/phar-io/manifest/src/xml/BundlesElement.php deleted file mode 100644 index ef721a66..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/xml/BundlesElement.php +++ /dev/null @@ -1,19 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -class BundlesElement extends ManifestElement { - public function getComponentElements(): ComponentElementCollection { - return new ComponentElementCollection( - $this->getChildrenByName('component') - ); - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/xml/ComponentElement.php b/docker/streamline-src/vendor/phar-io/manifest/src/xml/ComponentElement.php deleted file mode 100644 index 84373c47..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/xml/ComponentElement.php +++ /dev/null @@ -1,21 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -class ComponentElement extends ManifestElement { - public function getName(): string { - return $this->getAttributeValue('name'); - } - - public function getVersion(): string { - return $this->getAttributeValue('version'); - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/xml/ComponentElementCollection.php b/docker/streamline-src/vendor/phar-io/manifest/src/xml/ComponentElementCollection.php deleted file mode 100644 index cd9ad5dd..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/xml/ComponentElementCollection.php +++ /dev/null @@ -1,19 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -class ComponentElementCollection extends ElementCollection { - public function current(): ComponentElement { - return new ComponentElement( - $this->getCurrentElement() - ); - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/xml/ContainsElement.php b/docker/streamline-src/vendor/phar-io/manifest/src/xml/ContainsElement.php deleted file mode 100644 index 55a9c605..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/xml/ContainsElement.php +++ /dev/null @@ -1,31 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -class ContainsElement extends ManifestElement { - public function getName(): string { - return $this->getAttributeValue('name'); - } - - public function getVersion(): string { - return $this->getAttributeValue('version'); - } - - public function getType(): string { - return $this->getAttributeValue('type'); - } - - public function getExtensionElement(): ExtensionElement { - return new ExtensionElement( - $this->getChildByName('extension') - ); - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/xml/CopyrightElement.php b/docker/streamline-src/vendor/phar-io/manifest/src/xml/CopyrightElement.php deleted file mode 100644 index c11415a5..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/xml/CopyrightElement.php +++ /dev/null @@ -1,25 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -class CopyrightElement extends ManifestElement { - public function getAuthorElements(): AuthorElementCollection { - return new AuthorElementCollection( - $this->getChildrenByName('author') - ); - } - - public function getLicenseElement(): LicenseElement { - return new LicenseElement( - $this->getChildByName('license') - ); - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/xml/ElementCollection.php b/docker/streamline-src/vendor/phar-io/manifest/src/xml/ElementCollection.php deleted file mode 100644 index 9e1de569..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/xml/ElementCollection.php +++ /dev/null @@ -1,68 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -use DOMElement; -use DOMNodeList; -use Iterator; -use ReturnTypeWillChange; -use function count; -use function get_class; -use function sprintf; - -/** @template-implements Iterator */ -abstract class ElementCollection implements Iterator { - /** @var DOMElement[] */ - private $nodes = []; - - /** @var int */ - private $position; - - public function __construct(DOMNodeList $nodeList) { - $this->position = 0; - $this->importNodes($nodeList); - } - - #[ReturnTypeWillChange] - abstract public function current(); - - public function next(): void { - $this->position++; - } - - public function key(): int { - return $this->position; - } - - public function valid(): bool { - return $this->position < count($this->nodes); - } - - public function rewind(): void { - $this->position = 0; - } - - protected function getCurrentElement(): DOMElement { - return $this->nodes[$this->position]; - } - - private function importNodes(DOMNodeList $nodeList): void { - foreach ($nodeList as $node) { - if (!$node instanceof DOMElement) { - throw new ElementCollectionException( - sprintf('\DOMElement expected, got \%s', get_class($node)) - ); - } - - $this->nodes[] = $node; - } - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/xml/ExtElement.php b/docker/streamline-src/vendor/phar-io/manifest/src/xml/ExtElement.php deleted file mode 100644 index 6a88a05d..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/xml/ExtElement.php +++ /dev/null @@ -1,17 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -class ExtElement extends ManifestElement { - public function getName(): string { - return $this->getAttributeValue('name'); - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/xml/ExtElementCollection.php b/docker/streamline-src/vendor/phar-io/manifest/src/xml/ExtElementCollection.php deleted file mode 100644 index 3eec9463..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/xml/ExtElementCollection.php +++ /dev/null @@ -1,19 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -class ExtElementCollection extends ElementCollection { - public function current(): ExtElement { - return new ExtElement( - $this->getCurrentElement() - ); - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/xml/ExtensionElement.php b/docker/streamline-src/vendor/phar-io/manifest/src/xml/ExtensionElement.php deleted file mode 100644 index 22016a01..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/xml/ExtensionElement.php +++ /dev/null @@ -1,21 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -class ExtensionElement extends ManifestElement { - public function getFor(): string { - return $this->getAttributeValue('for'); - } - - public function getCompatible(): string { - return $this->getAttributeValue('compatible'); - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/xml/LicenseElement.php b/docker/streamline-src/vendor/phar-io/manifest/src/xml/LicenseElement.php deleted file mode 100644 index d9f4cb26..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/xml/LicenseElement.php +++ /dev/null @@ -1,21 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -class LicenseElement extends ManifestElement { - public function getType(): string { - return $this->getAttributeValue('type'); - } - - public function getUrl(): string { - return $this->getAttributeValue('url'); - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/xml/ManifestDocument.php b/docker/streamline-src/vendor/phar-io/manifest/src/xml/ManifestDocument.php deleted file mode 100644 index 87458686..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/xml/ManifestDocument.php +++ /dev/null @@ -1,115 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -use DOMDocument; -use DOMElement; -use Throwable; -use function count; -use function file_get_contents; -use function is_file; -use function libxml_clear_errors; -use function libxml_get_errors; -use function libxml_use_internal_errors; -use function sprintf; - -class ManifestDocument { - public const XMLNS = 'https://phar.io/xml/manifest/1.0'; - - /** @var DOMDocument */ - private $dom; - - public static function fromFile(string $filename): ManifestDocument { - if (!is_file($filename)) { - throw new ManifestDocumentException( - sprintf('File "%s" not found', $filename) - ); - } - - return self::fromString( - file_get_contents($filename) - ); - } - - public static function fromString(string $xmlString): ManifestDocument { - $prev = libxml_use_internal_errors(true); - libxml_clear_errors(); - - try { - $dom = new DOMDocument(); - $dom->loadXML($xmlString); - $errors = libxml_get_errors(); - libxml_use_internal_errors($prev); - } catch (Throwable $t) { - throw new ManifestDocumentException($t->getMessage(), 0, $t); - } - - if (count($errors) !== 0) { - throw new ManifestDocumentLoadingException($errors); - } - - return new self($dom); - } - - private function __construct(DOMDocument $dom) { - $this->ensureCorrectDocumentType($dom); - - $this->dom = $dom; - } - - public function getContainsElement(): ContainsElement { - return new ContainsElement( - $this->fetchElementByName('contains') - ); - } - - public function getCopyrightElement(): CopyrightElement { - return new CopyrightElement( - $this->fetchElementByName('copyright') - ); - } - - public function getRequiresElement(): RequiresElement { - return new RequiresElement( - $this->fetchElementByName('requires') - ); - } - - public function hasBundlesElement(): bool { - return $this->dom->getElementsByTagNameNS(self::XMLNS, 'bundles')->length === 1; - } - - public function getBundlesElement(): BundlesElement { - return new BundlesElement( - $this->fetchElementByName('bundles') - ); - } - - private function ensureCorrectDocumentType(DOMDocument $dom): void { - $root = $dom->documentElement; - - if ($root->localName !== 'phar' || $root->namespaceURI !== self::XMLNS) { - throw new ManifestDocumentException('Not a phar.io manifest document'); - } - } - - private function fetchElementByName(string $elementName): DOMElement { - $element = $this->dom->getElementsByTagNameNS(self::XMLNS, $elementName)->item(0); - - if (!$element instanceof DOMElement) { - throw new ManifestDocumentException( - sprintf('Element %s missing', $elementName) - ); - } - - return $element; - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/xml/ManifestElement.php b/docker/streamline-src/vendor/phar-io/manifest/src/xml/ManifestElement.php deleted file mode 100644 index 461ba0c9..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/xml/ManifestElement.php +++ /dev/null @@ -1,72 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -use DOMElement; -use DOMNodeList; -use function sprintf; - -class ManifestElement { - public const XMLNS = 'https://phar.io/xml/manifest/1.0'; - - /** @var DOMElement */ - private $element; - - public function __construct(DOMElement $element) { - $this->element = $element; - } - - protected function getAttributeValue(string $name): string { - if (!$this->element->hasAttribute($name)) { - throw new ManifestElementException( - sprintf( - 'Attribute %s not set on element %s', - $name, - $this->element->localName - ) - ); - } - - return $this->element->getAttribute($name); - } - - protected function hasAttribute(string $name): bool { - return $this->element->hasAttribute($name); - } - - protected function getChildByName(string $elementName): DOMElement { - $element = $this->element->getElementsByTagNameNS(self::XMLNS, $elementName)->item(0); - - if (!$element instanceof DOMElement) { - throw new ManifestElementException( - sprintf('Element %s missing', $elementName) - ); - } - - return $element; - } - - protected function getChildrenByName(string $elementName): DOMNodeList { - $elementList = $this->element->getElementsByTagNameNS(self::XMLNS, $elementName); - - if ($elementList->length === 0) { - throw new ManifestElementException( - sprintf('Element(s) %s missing', $elementName) - ); - } - - return $elementList; - } - - protected function hasChild(string $elementName): bool { - return $this->element->getElementsByTagNameNS(self::XMLNS, $elementName)->length !== 0; - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/xml/PhpElement.php b/docker/streamline-src/vendor/phar-io/manifest/src/xml/PhpElement.php deleted file mode 100644 index 9340c2e6..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/xml/PhpElement.php +++ /dev/null @@ -1,27 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -class PhpElement extends ManifestElement { - public function getVersion(): string { - return $this->getAttributeValue('version'); - } - - public function hasExtElements(): bool { - return $this->hasChild('ext'); - } - - public function getExtElements(): ExtElementCollection { - return new ExtElementCollection( - $this->getChildrenByName('ext') - ); - } -} diff --git a/docker/streamline-src/vendor/phar-io/manifest/src/xml/RequiresElement.php b/docker/streamline-src/vendor/phar-io/manifest/src/xml/RequiresElement.php deleted file mode 100644 index 73ba54ca..00000000 --- a/docker/streamline-src/vendor/phar-io/manifest/src/xml/RequiresElement.php +++ /dev/null @@ -1,19 +0,0 @@ -, Sebastian Heuer , Sebastian Bergmann and contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - */ -namespace PharIo\Manifest; - -class RequiresElement extends ManifestElement { - public function getPHPElement(): PhpElement { - return new PhpElement( - $this->getChildByName('php') - ); - } -} diff --git a/docker/streamline-src/vendor/phpoption/phpoption/composer.json b/docker/streamline-src/vendor/phpoption/phpoption/composer.json deleted file mode 100644 index 91dd6fb7..00000000 --- a/docker/streamline-src/vendor/phpoption/phpoption/composer.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "name": "phpoption/phpoption", - "description": "Option Type for PHP", - "keywords": ["php", "option", "language", "type"], - "license": "Apache-2.0", - "authors": [ - { - "name": "Johannes M. Schmitt", - "email": "schmittjoh@gmail.com", - "homepage": "https://github.com/schmittjoh" - }, - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - } - ], - "require": { - "php": "^7.2.5 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" - }, - "autoload": { - "psr-4": { - "PhpOption\\": "src/PhpOption/" - } - }, - "autoload-dev": { - "psr-4": { - "PhpOption\\Tests\\": "tests/PhpOption/Tests/" - } - }, - "config": { - "allow-plugins": { - "bamarni/composer-bin-plugin": true - }, - "preferred-install": "dist" - }, - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - }, - "branch-alias": { - "dev-master": "1.9-dev" - } - } -} diff --git a/docker/streamline-src/vendor/phpoption/phpoption/src/PhpOption/Option.php b/docker/streamline-src/vendor/phpoption/phpoption/src/PhpOption/Option.php deleted file mode 100644 index 91fab9ca..00000000 --- a/docker/streamline-src/vendor/phpoption/phpoption/src/PhpOption/Option.php +++ /dev/null @@ -1,434 +0,0 @@ - - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -namespace PhpOption; - -use ArrayAccess; -use IteratorAggregate; - -/** - * @template T - * - * @implements IteratorAggregate - */ -abstract class Option implements IteratorAggregate -{ - /** - * Creates an option given a return value. - * - * This is intended for consuming existing APIs and allows you to easily - * convert them to an option. By default, we treat ``null`` as the None - * case, and everything else as Some. - * - * @template S - * - * @param S $value The actual return value. - * @param S $noneValue The value which should be considered "None"; null by - * default. - * - * @return Option - */ - public static function fromValue($value, $noneValue = null) - { - if ($value === $noneValue) { - return None::create(); - } - - return new Some($value); - } - - /** - * Creates an option from an array's value. - * - * If the key does not exist in the array, the array is not actually an - * array, or the array's value at the given key is null, None is returned. - * Otherwise, Some is returned wrapping the value at the given key. - * - * @template S - * - * @param array|ArrayAccess|null $array A potential array or \ArrayAccess value. - * @param string|int|null $key The key to check. - * - * @return Option - */ - public static function fromArraysValue($array, $key) - { - if ($key === null || !(is_array($array) || $array instanceof ArrayAccess) || !isset($array[$key])) { - return None::create(); - } - - return new Some($array[$key]); - } - - /** - * Creates a lazy-option with the given callback. - * - * This is also a helper constructor for lazy-consuming existing APIs where - * the return value is not yet an option. By default, we treat ``null`` as - * None case, and everything else as Some. - * - * @template S - * - * @param callable $callback The callback to evaluate. - * @param array $arguments The arguments for the callback. - * @param S $noneValue The value which should be considered "None"; - * null by default. - * - * @return LazyOption - */ - public static function fromReturn($callback, array $arguments = [], $noneValue = null) - { - return new LazyOption(static function () use ($callback, $arguments, $noneValue) { - /** @var mixed */ - $return = call_user_func_array($callback, $arguments); - - if ($return === $noneValue) { - return None::create(); - } - - return new Some($return); - }); - } - - /** - * Option factory, which creates new option based on passed value. - * - * If value is already an option, it simply returns. If value is callable, - * LazyOption with passed callback created and returned. If Option - * returned from callback, it returns directly. On other case value passed - * to Option::fromValue() method. - * - * @template S - * - * @param Option|callable|S $value - * @param S $noneValue Used when $value is mixed or - * callable, for None-check. - * - * @return Option|LazyOption - */ - public static function ensure($value, $noneValue = null) - { - if ($value instanceof self) { - return $value; - } elseif (is_callable($value)) { - return new LazyOption(static function () use ($value, $noneValue) { - /** @var mixed */ - $return = $value(); - - if ($return instanceof self) { - return $return; - } else { - return self::fromValue($return, $noneValue); - } - }); - } else { - return self::fromValue($value, $noneValue); - } - } - - /** - * Lift a function so that it accepts Option as parameters. - * - * We return a new closure that wraps the original callback. If any of the - * parameters passed to the lifted function is empty, the function will - * return a value of None. Otherwise, we will pass all parameters to the - * original callback and return the value inside a new Option, unless an - * Option is returned from the function, in which case, we use that. - * - * @template S - * - * @param callable $callback - * @param mixed $noneValue - * - * @return callable - */ - public static function lift($callback, $noneValue = null) - { - return static function () use ($callback, $noneValue) { - /** @var array */ - $args = func_get_args(); - - $reduced_args = array_reduce( - $args, - /** @param bool $status */ - static function ($status, self $o) { - return $o->isEmpty() ? true : $status; - }, - false - ); - // if at least one parameter is empty, return None - if ($reduced_args) { - return None::create(); - } - - $args = array_map( - /** @return T */ - static function (self $o) { - // it is safe to do so because the fold above checked - // that all arguments are of type Some - /** @var T */ - return $o->get(); - }, - $args - ); - - return self::ensure(call_user_func_array($callback, $args), $noneValue); - }; - } - - /** - * Returns the value if available, or throws an exception otherwise. - * - * @throws \RuntimeException If value is not available. - * - * @return T - */ - abstract public function get(); - - /** - * Returns the value if available, or the default value if not. - * - * @template S - * - * @param S $default - * - * @return T|S - */ - abstract public function getOrElse($default); - - /** - * Returns the value if available, or the results of the callable. - * - * This is preferable over ``getOrElse`` if the computation of the default - * value is expensive. - * - * @template S - * - * @param callable():S $callable - * - * @return T|S - */ - abstract public function getOrCall($callable); - - /** - * Returns the value if available, or throws the passed exception. - * - * @param \Exception $ex - * - * @return T - */ - abstract public function getOrThrow(\Exception $ex); - - /** - * Returns true if no value is available, false otherwise. - * - * @return bool - */ - abstract public function isEmpty(); - - /** - * Returns true if a value is available, false otherwise. - * - * @return bool - */ - abstract public function isDefined(); - - /** - * Returns this option if non-empty, or the passed option otherwise. - * - * This can be used to try multiple alternatives, and is especially useful - * with lazy evaluating options: - * - * ```php - * $repo->findSomething() - * ->orElse(new LazyOption(array($repo, 'findSomethingElse'))) - * ->orElse(new LazyOption(array($repo, 'createSomething'))); - * ``` - * - * @param Option $else - * - * @return Option - */ - abstract public function orElse(self $else); - - /** - * This is similar to map() below except that the return value has no meaning; - * the passed callable is simply executed if the option is non-empty, and - * ignored if the option is empty. - * - * In all cases, the return value of the callable is discarded. - * - * ```php - * $comment->getMaybeFile()->ifDefined(function($file) { - * // Do something with $file here. - * }); - * ``` - * - * If you're looking for something like ``ifEmpty``, you can use ``getOrCall`` - * and ``getOrElse`` in these cases. - * - * @deprecated Use forAll() instead. - * - * @param callable(T):mixed $callable - * - * @return void - */ - abstract public function ifDefined($callable); - - /** - * This is similar to map() except that the return value of the callable has no meaning. - * - * The passed callable is simply executed if the option is non-empty, and ignored if the - * option is empty. This method is preferred for callables with side-effects, while map() - * is intended for callables without side-effects. - * - * @param callable(T):mixed $callable - * - * @return Option - */ - abstract public function forAll($callable); - - /** - * Applies the callable to the value of the option if it is non-empty, - * and returns the return value of the callable wrapped in Some(). - * - * If the option is empty, then the callable is not applied. - * - * ```php - * (new Some("foo"))->map('strtoupper')->get(); // "FOO" - * ``` - * - * @template S - * - * @param callable(T):S $callable - * - * @return Option - */ - abstract public function map($callable); - - /** - * Applies the callable to the value of the option if it is non-empty, and - * returns the return value of the callable directly. - * - * In contrast to ``map``, the return value of the callable is expected to - * be an Option itself; it is not automatically wrapped in Some(). - * - * @template S - * - * @param callable(T):Option $callable must return an Option - * - * @return Option - */ - abstract public function flatMap($callable); - - /** - * If the option is empty, it is returned immediately without applying the callable. - * - * If the option is non-empty, the callable is applied, and if it returns true, - * the option itself is returned; otherwise, None is returned. - * - * @param callable(T):bool $callable - * - * @return Option - */ - abstract public function filter($callable); - - /** - * If the option is empty, it is returned immediately without applying the callable. - * - * If the option is non-empty, the callable is applied, and if it returns false, - * the option itself is returned; otherwise, None is returned. - * - * @param callable(T):bool $callable - * - * @return Option - */ - abstract public function filterNot($callable); - - /** - * If the option is empty, it is returned immediately. - * - * If the option is non-empty, and its value does not equal the passed value - * (via a shallow comparison ===), then None is returned. Otherwise, the - * Option is returned. - * - * In other words, this will filter all but the passed value. - * - * @param T $value - * - * @return Option - */ - abstract public function select($value); - - /** - * If the option is empty, it is returned immediately. - * - * If the option is non-empty, and its value does equal the passed value (via - * a shallow comparison ===), then None is returned; otherwise, the Option is - * returned. - * - * In other words, this will let all values through except the passed value. - * - * @param T $value - * - * @return Option - */ - abstract public function reject($value); - - /** - * Binary operator for the initial value and the option's value. - * - * If empty, the initial value is returned. If non-empty, the callable - * receives the initial value and the option's value as arguments. - * - * ```php - * - * $some = new Some(5); - * $none = None::create(); - * $result = $some->foldLeft(1, function($a, $b) { return $a + $b; }); // int(6) - * $result = $none->foldLeft(1, function($a, $b) { return $a + $b; }); // int(1) - * - * // This can be used instead of something like the following: - * $option = Option::fromValue($integerOrNull); - * $result = 1; - * if ( ! $option->isEmpty()) { - * $result += $option->get(); - * } - * ``` - * - * @template S - * - * @param S $initialValue - * @param callable(S, T):S $callable - * - * @return S - */ - abstract public function foldLeft($initialValue, $callable); - - /** - * foldLeft() but with reversed arguments for the callable. - * - * @template S - * - * @param S $initialValue - * @param callable(T, S):S $callable - * - * @return S - */ - abstract public function foldRight($initialValue, $callable); -} diff --git a/docker/streamline-src/vendor/phpstan/phpstan/README.md b/docker/streamline-src/vendor/phpstan/phpstan/README.md deleted file mode 100644 index e3bb9406..00000000 --- a/docker/streamline-src/vendor/phpstan/phpstan/README.md +++ /dev/null @@ -1,108 +0,0 @@ -

    PHPStan - PHP Static Analysis Tool

    - -

    - PHPStan -

    - -

    - Build Status - Latest Stable Version - Total Downloads - License - PHPStan Enabled -

    - ------- - -PHPStan focuses on finding errors in your code without actually running it. It catches whole classes of bugs -even before you write tests for the code. It moves PHP closer to compiled languages in the sense that the correctness of each line of the code -can be checked before you run the actual line. - -**[Read more about PHPStan »](https://phpstan.org/)** - -**[Try out PHPStan on the on-line playground! »](https://phpstan.org/try)** - -## Sponsors - -TheCodingMachine -    -Private Packagist -
    -CDN77 -    -Blackfire.io -
    -iO -    -Fame Helsinki -
    -ShipMonk -    -Togetter -
    -RightCapital -    -ContentKing -
    -ZOL -    -EdgeNext -
    -Shopware -    -Craft CMS -
    -Worksome -    -campoint AG -
    -Crisp.nl -    -Inviqa -
    -GetResponse -    -Shoptet -
    -Route4Me: Route Optimizer and Route Planner Software -    -TicketSwap - - -[**You can now sponsor my open-source work on PHPStan through GitHub Sponsors.**](https://github.com/sponsors/ondrejmirtes) - -Does GitHub already have your 💳? Do you use PHPStan to find 🐛 before they reach production? [Send a couple of 💸 a month my way too.](https://github.com/sponsors/ondrejmirtes) Thank you! - -One-time donations [through Revolut.me](https://revolut.me/ondrejmirtes) are also accepted. To request an invoice, [contact me](mailto:ondrej@mirtes.cz) through e-mail. - -## Documentation - -All the documentation lives on the [phpstan.org website](https://phpstan.org/): - -* [Getting Started & User Guide](https://phpstan.org/user-guide/getting-started) -* [Config Reference](https://phpstan.org/config-reference) -* [PHPDocs Basics](https://phpstan.org/writing-php-code/phpdocs-basics) & [PHPDoc Types](https://phpstan.org/writing-php-code/phpdoc-types) -* [Extension Library](https://phpstan.org/user-guide/extension-library) -* [Developing Extensions](https://phpstan.org/developing-extensions/extension-types) -* [API Reference](https://apiref.phpstan.org/) - -## PHPStan Pro - -PHPStan Pro is a paid add-on on top of open-source PHPStan Static Analysis Tool with these premium features: - -* Web UI for browsing found errors, you can click and open your editor of choice on the offending line. -* Continuous analysis (watch mode): scans changed files in the background, refreshes the UI automatically. - -Try it on PHPStan 0.12.45 or later by running it with the `--pro` option. You can create an account either by following the on-screen instructions, or by visiting [account.phpstan.com](https://account.phpstan.com/). - -After 30-day free trial period it costs 7 EUR for individuals monthly, 70 EUR for teams (up to 25 members). By paying for PHPStan Pro, you're supporting the development of open-source PHPStan. - -You can read more about it on [PHPStan's website](https://phpstan.org/blog/introducing-phpstan-pro). - -## Code of Conduct - -This project adheres to a [Contributor Code of Conduct](https://github.com/phpstan/phpstan/blob/master/CODE_OF_CONDUCT.md). By participating in this project and its community, you are expected to uphold this code. - -## Contributing - -Any contributions are welcome. PHPStan's source code open to pull requests lives at [`phpstan/phpstan-src`](https://github.com/phpstan/phpstan-src). diff --git a/docker/streamline-src/vendor/phpstan/phpstan/bootstrap.php b/docker/streamline-src/vendor/phpstan/phpstan/bootstrap.php deleted file mode 100644 index 2d950b09..00000000 --- a/docker/streamline-src/vendor/phpstan/phpstan/bootstrap.php +++ /dev/null @@ -1,135 +0,0 @@ -loadClass($class); - - return; - } - if (strpos($class, 'PHPStan\\') !== 0 || strpos($class, 'PHPStan\\PhpDocParser\\') === 0) { - return; - } - - if (!in_array('phar', stream_get_wrappers(), true)) { - throw new \Exception('Phar wrapper is not registered. Please review your php.ini settings.'); - } - - if (!self::$polyfillsLoaded) { - self::$polyfillsLoaded = true; - - if ( - PHP_VERSION_ID < 80000 - && empty($GLOBALS['__composer_autoload_files']['a4a119a56e50fbb293281d9a48007e0e']) - && !class_exists(\Symfony\Polyfill\Php80\Php80::class, false) - ) { - $GLOBALS['__composer_autoload_files']['a4a119a56e50fbb293281d9a48007e0e'] = true; - require_once 'phar://' . __DIR__ . '/phpstan.phar/vendor/symfony/polyfill-php80/Php80.php'; - require_once 'phar://' . __DIR__ . '/phpstan.phar/vendor/symfony/polyfill-php80/bootstrap.php'; - } - - if ( - empty($GLOBALS['__composer_autoload_files']['0e6d7bf4a5811bfa5cf40c5ccd6fae6a']) - && !class_exists(\Symfony\Polyfill\Mbstring\Mbstring::class, false) - ) { - $GLOBALS['__composer_autoload_files']['0e6d7bf4a5811bfa5cf40c5ccd6fae6a'] = true; - require_once 'phar://' . __DIR__ . '/phpstan.phar/vendor/symfony/polyfill-mbstring/Mbstring.php'; - require_once 'phar://' . __DIR__ . '/phpstan.phar/vendor/symfony/polyfill-mbstring/bootstrap.php'; - } - - if ( - empty($GLOBALS['__composer_autoload_files']['e69f7f6ee287b969198c3c9d6777bd38']) - && !class_exists(\Symfony\Polyfill\Intl\Normalizer\Normalizer::class, false) - ) { - $GLOBALS['__composer_autoload_files']['e69f7f6ee287b969198c3c9d6777bd38'] = true; - require_once 'phar://' . __DIR__ . '/phpstan.phar/vendor/symfony/polyfill-intl-normalizer/Normalizer.php'; - require_once 'phar://' . __DIR__ . '/phpstan.phar/vendor/symfony/polyfill-intl-normalizer/bootstrap.php'; - } - - if ( - PHP_VERSION_ID < 70300 - && empty($GLOBALS['__composer_autoload_files']['0d59ee240a4cd96ddbb4ff164fccea4d']) - && !class_exists(\Symfony\Polyfill\Php73\Php73::class, false) - ) { - $GLOBALS['__composer_autoload_files']['0d59ee240a4cd96ddbb4ff164fccea4d'] = true; - // already loaded by bootstrap inside the hrtime condition - // require_once 'phar://' . __DIR__ . '/phpstan.phar/vendor/symfony/polyfill-php73/Php73.php'; - require_once 'phar://' . __DIR__ . '/phpstan.phar/vendor/symfony/polyfill-php73/bootstrap.php'; - } - - if ( - PHP_VERSION_ID < 70400 - && empty($GLOBALS['__composer_autoload_files']['b686b8e46447868025a15ce5d0cb2634']) - && !class_exists(\Symfony\Polyfill\Php74\Php74::class, false) - ) { - $GLOBALS['__composer_autoload_files']['b686b8e46447868025a15ce5d0cb2634'] = true; - require_once 'phar://' . __DIR__ . '/phpstan.phar/vendor/symfony/polyfill-php74/Php74.php'; - require_once 'phar://' . __DIR__ . '/phpstan.phar/vendor/symfony/polyfill-php74/bootstrap.php'; - } - - if ( - !extension_loaded('intl') - && empty($GLOBALS['__composer_autoload_files']['8825ede83f2f289127722d4e842cf7e8']) - && !class_exists(\Symfony\Polyfill\Intl\Grapheme\Grapheme::class, false) - ) { - $GLOBALS['__composer_autoload_files']['8825ede83f2f289127722d4e842cf7e8'] = true; - require_once 'phar://' . __DIR__ . '/phpstan.phar/vendor/symfony/polyfill-intl-grapheme/Grapheme.php'; - require_once 'phar://' . __DIR__ . '/phpstan.phar/vendor/symfony/polyfill-intl-grapheme/bootstrap.php'; - } - - if ( - PHP_VERSION_ID < 80100 - && empty ($GLOBALS['__composer_autoload_files']['23c18046f52bef3eea034657bafda50f']) - && !class_exists(\Symfony\Polyfill\Php81\Php81::class, false) - ) { - $GLOBALS['__composer_autoload_files']['23c18046f52bef3eea034657bafda50f'] = true; - require_once 'phar://' . __DIR__ . '/phpstan.phar/vendor/symfony/polyfill-php81/Php81.php'; - require_once 'phar://' . __DIR__ . '/phpstan.phar/vendor/symfony/polyfill-php81/bootstrap.php'; - } - } - - $filename = str_replace('\\', DIRECTORY_SEPARATOR, $class); - if (strpos($class, 'PHPStan\\BetterReflection\\') === 0) { - $filename = substr($filename, strlen('PHPStan\\BetterReflection\\')); - $filepath = 'phar://' . __DIR__ . '/phpstan.phar/vendor/ondrejmirtes/better-reflection/src/' . $filename . '.php'; - } else { - $filename = substr($filename, strlen('PHPStan\\')); - $filepath = 'phar://' . __DIR__ . '/phpstan.phar/src/' . $filename . '.php'; - } - - if (!file_exists($filepath)) { - return; - } - - require $filepath; - } -} - -spl_autoload_register([PharAutoloader::class, 'loadClass']); diff --git a/docker/streamline-src/vendor/phpstan/phpstan/composer.json b/docker/streamline-src/vendor/phpstan/phpstan/composer.json deleted file mode 100644 index 07faa85b..00000000 --- a/docker/streamline-src/vendor/phpstan/phpstan/composer.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "phpstan/phpstan", - "description": "PHPStan - PHP Static Analysis Tool", - "license": ["MIT"], - "keywords": ["dev", "static analysis"], - "require": { - "php": "^7.2|^8.0" - }, - "conflict": { - "phpstan/phpstan-shim": "*" - }, - "bin": [ - "phpstan", - "phpstan.phar" - ], - "autoload": { - "files": ["bootstrap.php"] - }, - "support": { - "issues": "https://github.com/phpstan/phpstan/issues", - "forum": "https://github.com/phpstan/phpstan/discussions", - "source": "https://github.com/phpstan/phpstan-src", - "docs": "https://phpstan.org/user-guide/getting-started", - "security": "https://github.com/phpstan/phpstan/security/policy" - } -} diff --git a/docker/streamline-src/vendor/phpstan/phpstan/phpstan.phar b/docker/streamline-src/vendor/phpstan/phpstan/phpstan.phar deleted file mode 100755 index bd20a387..00000000 Binary files a/docker/streamline-src/vendor/phpstan/phpstan/phpstan.phar and /dev/null differ diff --git a/docker/streamline-src/vendor/phpstan/phpstan/phpstan.phar.asc b/docker/streamline-src/vendor/phpstan/phpstan/phpstan.phar.asc deleted file mode 100644 index f115775b..00000000 --- a/docker/streamline-src/vendor/phpstan/phpstan/phpstan.phar.asc +++ /dev/null @@ -1,16 +0,0 @@ ------BEGIN PGP SIGNATURE----- - -iQIzBAABCgAdFiEEynwsejDI6OEnSoR2UcZzBf/C5cAFAmd6tdcACgkQUcZzBf/C -5cBrxg//cdUi9fwIVaZJmYz2L9JmQ+/sG8LvaOhb6kfHv4tU0yhli7ugBtOyZWRe -kNmMBFSeF/DMtw/Jf5IXbdnxjbnHcaKzKVeGGXIWQ6+4dmhQ+iApAywaasmAGSwS -jQKX5z1+FTScy0LYL6wDVJR/A3OTIAyFBj87rdNK20mB+twKzxM69jc5OPFLo8An -yzEZRWiibgewkf2BF9ryoC5iNRBJh7rc/zVj7uf57I/uyRhmPce0WXjBdwn5YIbS -8jcWql5x9H1mxjF8oyJf1cLy1sRcZbmG6NlG1Mj1SwtJxiKblb1G8jmpAhwGXw1W -M0TsGxhz5nbAHPd1yQTzFgrf4hljGWDdwznYZm7Yf93bp4ANKqLKJ8Uv8VNGsDU1 -V5t49nnlPR6CFr+Tt52KWgRDUVIqZkObpy8XXl9gutah30+UjS06OgmQwjagspBg -zisT7ZKnpwC50l3strW0nS8fdgVhsOO7c++Zuyo0rRj7PBrKF2Hvy4S5jiRhBkP4 -VAjyBVyTW1xfbwp5FgmD9HTRodYj0rLblV4JKR+qkS6QVt1JWSafwVl7RQJ1Wywb -kPoNv2dG9rMxXXXpidtWC56UwGFz4vvUBK0N5DbxOtVu9Sdl0B/U17Trp4myNXWP -qTeneOEVDJ3OD7s8Dxnz4GYOmPGvICy4RPR+kE8tFRQae6OU/dM= -=9uT3 ------END PGP SIGNATURE----- diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/ChangeLog-10.1.md b/docker/streamline-src/vendor/phpunit/php-code-coverage/ChangeLog-10.1.md deleted file mode 100644 index 27cb92fb..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/ChangeLog-10.1.md +++ /dev/null @@ -1,132 +0,0 @@ -# ChangeLog - -All notable changes are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. - -## [10.1.16] - 2024-08-22 - -### Changed - -* Updated dependencies (so that users that install using Composer's `--prefer-lowest` CLI option also get recent versions) - -## [10.1.15] - 2024-06-29 - -### Fixed - -* [#967](https://github.com/sebastianbergmann/php-code-coverage/issues/967): Identification of executable lines for `match` expressions does not work correctly - -## [10.1.14] - 2024-03-12 - -### Fixed - -* [#1033](https://github.com/sebastianbergmann/php-code-coverage/issues/1033): `@codeCoverageIgnore` annotation does not work on `enum` - -## [10.1.13] - 2024-03-09 - -### Changed - -* [#1032](https://github.com/sebastianbergmann/php-code-coverage/pull/1032): Pad lines in code coverage report only when colors are shown - -## [10.1.12] - 2024-03-02 - -### Changed - -* Do not use implicitly nullable parameters - -## [10.1.11] - 2023-12-21 - -### Changed - -* This component is now compatible with `nikic/php-parser` 5.0 - -## [10.1.10] - 2023-12-11 - -### Fixed - -* [#1023](https://github.com/sebastianbergmann/php-code-coverage/issues/1023): Branch Coverage and Path Coverage are not correctly reported for traits - -## [10.1.9] - 2023-11-23 - -### Fixed - -* [#1020](https://github.com/sebastianbergmann/php-code-coverage/issues/1020): Single line method is ignored - -## [10.1.8] - 2023-11-15 - -### Fixed - -* [#1018](https://github.com/sebastianbergmann/php-code-coverage/issues/1018): Interface methods are not ignored when their signature is split over multiple lines - -## [10.1.7] - 2023-10-04 - -### Fixed - -* [#1014](https://github.com/sebastianbergmann/php-code-coverage/issues/1014): Incorrect statement count in coverage report for constructor property promotion - -## [10.1.6] - 2023-09-19 - -### Fixed - -* [#1012](https://github.com/sebastianbergmann/php-code-coverage/issues/1012): Cobertura report pulls functions from report scope, not the individual element - -## [10.1.5] - 2023-09-12 - -### Changed - -* [#1011](https://github.com/sebastianbergmann/php-code-coverage/pull/1011): Avoid serialization of cache data in PHP report - -## [10.1.4] - 2023-08-31 - -### Fixed - -* Exceptions of type `SebastianBergmann\Template\Exception` are now properly handled - -## [10.1.3] - 2023-07-26 - -### Changed - -* The result of `CodeCoverage::getReport()` is now cached - -### Fixed - -* Static analysis cache keys do not include configuration settings that affect source code parsing -* The Clover, Cobertura, Crap4j, and PHP report writers no longer create a `php:` directory when they should write to `php://stdout`, for instance - -## [10.1.2] - 2023-05-22 - -### Fixed - -* [#998](https://github.com/sebastianbergmann/php-code-coverage/pull/998): Group Use Declarations are not handled properly - -## [10.1.1] - 2023-04-17 - -### Fixed - -* [#994](https://github.com/sebastianbergmann/php-code-coverage/issues/994): Argument `$linesToBeIgnored` of `CodeCoverage::stop()` has no effect for files that are not executed at all - -## [10.1.0] - 2023-04-13 - -### Added - -* [#982](https://github.com/sebastianbergmann/php-code-coverage/issues/982): Add option to ignore lines from code coverage - -### Deprecated - -* The `SebastianBergmann\CodeCoverage\Filter::includeDirectory()`, `SebastianBergmann\CodeCoverage\Filter::excludeDirectory()`, and `SebastianBergmann\CodeCoverage\Filter::excludeFile()` methods are now deprecated - -[10.1.16]: https://github.com/sebastianbergmann/php-code-coverage/compare/10.1.15...10.1.16 -[10.1.15]: https://github.com/sebastianbergmann/php-code-coverage/compare/10.1.14...10.1.15 -[10.1.14]: https://github.com/sebastianbergmann/php-code-coverage/compare/10.1.13...10.1.14 -[10.1.13]: https://github.com/sebastianbergmann/php-code-coverage/compare/10.1.12...10.1.13 -[10.1.12]: https://github.com/sebastianbergmann/php-code-coverage/compare/10.1.11...10.1.12 -[10.1.11]: https://github.com/sebastianbergmann/php-code-coverage/compare/10.1.10...10.1.11 -[10.1.10]: https://github.com/sebastianbergmann/php-code-coverage/compare/10.1.9...10.1.10 -[10.1.9]: https://github.com/sebastianbergmann/php-code-coverage/compare/10.1.8...10.1.9 -[10.1.8]: https://github.com/sebastianbergmann/php-code-coverage/compare/10.1.7...10.1.8 -[10.1.7]: https://github.com/sebastianbergmann/php-code-coverage/compare/10.1.6...10.1.7 -[10.1.6]: https://github.com/sebastianbergmann/php-code-coverage/compare/10.1.5...10.1.6 -[10.1.5]: https://github.com/sebastianbergmann/php-code-coverage/compare/10.1.4...10.1.5 -[10.1.4]: https://github.com/sebastianbergmann/php-code-coverage/compare/10.1.3...10.1.4 -[10.1.3]: https://github.com/sebastianbergmann/php-code-coverage/compare/10.1.2...10.1.3 -[10.1.2]: https://github.com/sebastianbergmann/php-code-coverage/compare/10.1.1...10.1.2 -[10.1.1]: https://github.com/sebastianbergmann/php-code-coverage/compare/10.1.0...10.1.1 -[10.1.0]: https://github.com/sebastianbergmann/php-code-coverage/compare/10.0.2...10.1.0 diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/LICENSE b/docker/streamline-src/vendor/phpunit/php-code-coverage/LICENSE deleted file mode 100644 index 89f05309..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -BSD 3-Clause License - -Copyright (c) 2009-2024, Sebastian Bergmann -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/composer.json b/docker/streamline-src/vendor/phpunit/php-code-coverage/composer.json deleted file mode 100644 index 855b369e..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/composer.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "name": "phpunit/php-code-coverage", - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "type": "library", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "license": "BSD-3-Clause", - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy" - }, - "config": { - "platform": { - "php": "8.1.0" - }, - "optimize-autoloader": true, - "sort-packages": true - }, - "prefer-stable": true, - "require": { - "php": ">=8.1", - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.19.1 || ^5.1.0", - "phpunit/php-file-iterator": "^4.1.0", - "phpunit/php-text-template": "^3.0.1", - "sebastian/code-unit-reverse-lookup": "^3.0.0", - "sebastian/complexity": "^3.2.0", - "sebastian/environment": "^6.1.0", - "sebastian/lines-of-code": "^2.0.2", - "sebastian/version": "^4.0.1", - "theseer/tokenizer": "^1.2.3" - }, - "require-dev": { - "phpunit/phpunit": "^10.1" - }, - "suggest": { - "ext-pcov": "PHP extension that provides line coverage", - "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "autoload-dev": { - "files": [ - "tests/TestCase.php", - "tests/_files/BankAccountTest.php" - ] - }, - "extra": { - "branch-alias": { - "dev-main": "10.1.x-dev" - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/CodeCoverage.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/CodeCoverage.php deleted file mode 100644 index 805fd822..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/CodeCoverage.php +++ /dev/null @@ -1,631 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage; - -use function array_diff; -use function array_diff_key; -use function array_flip; -use function array_keys; -use function array_merge; -use function array_merge_recursive; -use function array_unique; -use function count; -use function explode; -use function is_array; -use function is_file; -use function sort; -use ReflectionClass; -use SebastianBergmann\CodeCoverage\Data\ProcessedCodeCoverageData; -use SebastianBergmann\CodeCoverage\Data\RawCodeCoverageData; -use SebastianBergmann\CodeCoverage\Driver\Driver; -use SebastianBergmann\CodeCoverage\Node\Builder; -use SebastianBergmann\CodeCoverage\Node\Directory; -use SebastianBergmann\CodeCoverage\StaticAnalysis\CachingFileAnalyser; -use SebastianBergmann\CodeCoverage\StaticAnalysis\FileAnalyser; -use SebastianBergmann\CodeCoverage\StaticAnalysis\ParsingFileAnalyser; -use SebastianBergmann\CodeCoverage\Test\TestSize\TestSize; -use SebastianBergmann\CodeCoverage\Test\TestStatus\TestStatus; -use SebastianBergmann\CodeUnitReverseLookup\Wizard; - -/** - * Provides collection functionality for PHP code coverage information. - * - * @psalm-type TestType = array{ - * size: string, - * status: string, - * } - */ -final class CodeCoverage -{ - private const UNCOVERED_FILES = 'UNCOVERED_FILES'; - private readonly Driver $driver; - private readonly Filter $filter; - private readonly Wizard $wizard; - private bool $checkForUnintentionallyCoveredCode = false; - private bool $includeUncoveredFiles = true; - private bool $ignoreDeprecatedCode = false; - private ?string $currentId = null; - private ?TestSize $currentSize = null; - private ProcessedCodeCoverageData $data; - private bool $useAnnotationsForIgnoringCode = true; - - /** - * @psalm-var array> - */ - private array $linesToBeIgnored = []; - - /** - * @psalm-var array - */ - private array $tests = []; - - /** - * @psalm-var list - */ - private array $parentClassesExcludedFromUnintentionallyCoveredCodeCheck = []; - private ?FileAnalyser $analyser = null; - private ?string $cacheDirectory = null; - private ?Directory $cachedReport = null; - - public function __construct(Driver $driver, Filter $filter) - { - $this->driver = $driver; - $this->filter = $filter; - $this->data = new ProcessedCodeCoverageData; - $this->wizard = new Wizard; - } - - /** - * Returns the code coverage information as a graph of node objects. - */ - public function getReport(): Directory - { - if ($this->cachedReport === null) { - $this->cachedReport = (new Builder($this->analyser()))->build($this); - } - - return $this->cachedReport; - } - - /** - * Clears collected code coverage data. - */ - public function clear(): void - { - $this->currentId = null; - $this->currentSize = null; - $this->data = new ProcessedCodeCoverageData; - $this->tests = []; - $this->cachedReport = null; - } - - /** - * @internal - */ - public function clearCache(): void - { - $this->cachedReport = null; - } - - /** - * Returns the filter object used. - */ - public function filter(): Filter - { - return $this->filter; - } - - /** - * Returns the collected code coverage data. - */ - public function getData(bool $raw = false): ProcessedCodeCoverageData - { - if (!$raw) { - if ($this->includeUncoveredFiles) { - $this->addUncoveredFilesFromFilter(); - } - } - - return $this->data; - } - - /** - * Sets the coverage data. - */ - public function setData(ProcessedCodeCoverageData $data): void - { - $this->data = $data; - } - - /** - * @psalm-return array - */ - public function getTests(): array - { - return $this->tests; - } - - /** - * @psalm-param array $tests - */ - public function setTests(array $tests): void - { - $this->tests = $tests; - } - - public function start(string $id, ?TestSize $size = null, bool $clear = false): void - { - if ($clear) { - $this->clear(); - } - - $this->currentId = $id; - $this->currentSize = $size; - - $this->driver->start(); - - $this->cachedReport = null; - } - - /** - * @psalm-param array> $linesToBeIgnored - */ - public function stop(bool $append = true, ?TestStatus $status = null, array|false $linesToBeCovered = [], array $linesToBeUsed = [], array $linesToBeIgnored = []): RawCodeCoverageData - { - $data = $this->driver->stop(); - - $this->linesToBeIgnored = array_merge_recursive( - $this->linesToBeIgnored, - $linesToBeIgnored, - ); - - $this->append($data, null, $append, $status, $linesToBeCovered, $linesToBeUsed, $linesToBeIgnored); - - $this->currentId = null; - $this->currentSize = null; - $this->cachedReport = null; - - return $data; - } - - /** - * @psalm-param array> $linesToBeIgnored - * - * @throws ReflectionException - * @throws TestIdMissingException - * @throws UnintentionallyCoveredCodeException - */ - public function append(RawCodeCoverageData $rawData, ?string $id = null, bool $append = true, ?TestStatus $status = null, array|false $linesToBeCovered = [], array $linesToBeUsed = [], array $linesToBeIgnored = []): void - { - if ($id === null) { - $id = $this->currentId; - } - - if ($id === null) { - throw new TestIdMissingException; - } - - $this->cachedReport = null; - - if ($status === null) { - $status = TestStatus::unknown(); - } - - $size = $this->currentSize; - - if ($size === null) { - $size = TestSize::unknown(); - } - - $this->applyFilter($rawData); - - $this->applyExecutableLinesFilter($rawData); - - if ($this->useAnnotationsForIgnoringCode) { - $this->applyIgnoredLinesFilter($rawData, $linesToBeIgnored); - } - - $this->data->initializeUnseenData($rawData); - - if (!$append) { - return; - } - - if ($id === self::UNCOVERED_FILES) { - return; - } - - $this->applyCoversAndUsesFilter( - $rawData, - $linesToBeCovered, - $linesToBeUsed, - $size, - ); - - if (empty($rawData->lineCoverage())) { - return; - } - - $this->tests[$id] = [ - 'size' => $size->asString(), - 'status' => $status->asString(), - ]; - - $this->data->markCodeAsExecutedByTestCase($id, $rawData); - } - - /** - * Merges the data from another instance. - */ - public function merge(self $that): void - { - $this->filter->includeFiles( - $that->filter()->files(), - ); - - $this->data->merge($that->data); - - $this->tests = array_merge($this->tests, $that->getTests()); - - $this->cachedReport = null; - } - - public function enableCheckForUnintentionallyCoveredCode(): void - { - $this->checkForUnintentionallyCoveredCode = true; - } - - public function disableCheckForUnintentionallyCoveredCode(): void - { - $this->checkForUnintentionallyCoveredCode = false; - } - - public function includeUncoveredFiles(): void - { - $this->includeUncoveredFiles = true; - } - - public function excludeUncoveredFiles(): void - { - $this->includeUncoveredFiles = false; - } - - public function enableAnnotationsForIgnoringCode(): void - { - $this->useAnnotationsForIgnoringCode = true; - } - - public function disableAnnotationsForIgnoringCode(): void - { - $this->useAnnotationsForIgnoringCode = false; - } - - public function ignoreDeprecatedCode(): void - { - $this->ignoreDeprecatedCode = true; - } - - public function doNotIgnoreDeprecatedCode(): void - { - $this->ignoreDeprecatedCode = false; - } - - /** - * @psalm-assert-if-true !null $this->cacheDirectory - */ - public function cachesStaticAnalysis(): bool - { - return $this->cacheDirectory !== null; - } - - public function cacheStaticAnalysis(string $directory): void - { - $this->cacheDirectory = $directory; - } - - public function doNotCacheStaticAnalysis(): void - { - $this->cacheDirectory = null; - } - - /** - * @throws StaticAnalysisCacheNotConfiguredException - */ - public function cacheDirectory(): string - { - if (!$this->cachesStaticAnalysis()) { - throw new StaticAnalysisCacheNotConfiguredException( - 'The static analysis cache is not configured', - ); - } - - return $this->cacheDirectory; - } - - /** - * @psalm-param class-string $className - */ - public function excludeSubclassesOfThisClassFromUnintentionallyCoveredCodeCheck(string $className): void - { - $this->parentClassesExcludedFromUnintentionallyCoveredCodeCheck[] = $className; - } - - public function enableBranchAndPathCoverage(): void - { - $this->driver->enableBranchAndPathCoverage(); - } - - public function disableBranchAndPathCoverage(): void - { - $this->driver->disableBranchAndPathCoverage(); - } - - public function collectsBranchAndPathCoverage(): bool - { - return $this->driver->collectsBranchAndPathCoverage(); - } - - public function detectsDeadCode(): bool - { - return $this->driver->detectsDeadCode(); - } - - /** - * @throws ReflectionException - * @throws UnintentionallyCoveredCodeException - */ - private function applyCoversAndUsesFilter(RawCodeCoverageData $rawData, array|false $linesToBeCovered, array $linesToBeUsed, TestSize $size): void - { - if ($linesToBeCovered === false) { - $rawData->clear(); - - return; - } - - if (empty($linesToBeCovered)) { - return; - } - - if ($this->checkForUnintentionallyCoveredCode && !$size->isMedium() && !$size->isLarge()) { - $this->performUnintentionallyCoveredCodeCheck($rawData, $linesToBeCovered, $linesToBeUsed); - } - - $rawLineData = $rawData->lineCoverage(); - $filesWithNoCoverage = array_diff_key($rawLineData, $linesToBeCovered); - - foreach (array_keys($filesWithNoCoverage) as $fileWithNoCoverage) { - $rawData->removeCoverageDataForFile($fileWithNoCoverage); - } - - if (is_array($linesToBeCovered)) { - foreach ($linesToBeCovered as $fileToBeCovered => $includedLines) { - $rawData->keepLineCoverageDataOnlyForLines($fileToBeCovered, $includedLines); - $rawData->keepFunctionCoverageDataOnlyForLines($fileToBeCovered, $includedLines); - } - } - } - - private function applyFilter(RawCodeCoverageData $data): void - { - if ($this->filter->isEmpty()) { - return; - } - - foreach (array_keys($data->lineCoverage()) as $filename) { - if ($this->filter->isExcluded($filename)) { - $data->removeCoverageDataForFile($filename); - } - } - } - - private function applyExecutableLinesFilter(RawCodeCoverageData $data): void - { - foreach (array_keys($data->lineCoverage()) as $filename) { - if (!$this->filter->isFile($filename)) { - continue; - } - - $linesToBranchMap = $this->analyser()->executableLinesIn($filename); - - $data->keepLineCoverageDataOnlyForLines( - $filename, - array_keys($linesToBranchMap), - ); - - $data->markExecutableLineByBranch( - $filename, - $linesToBranchMap, - ); - } - } - - /** - * @psalm-param array> $linesToBeIgnored - */ - private function applyIgnoredLinesFilter(RawCodeCoverageData $data, array $linesToBeIgnored): void - { - foreach (array_keys($data->lineCoverage()) as $filename) { - if (!$this->filter->isFile($filename)) { - continue; - } - - if (isset($linesToBeIgnored[$filename])) { - $data->removeCoverageDataForLines( - $filename, - $linesToBeIgnored[$filename], - ); - } - - $data->removeCoverageDataForLines( - $filename, - $this->analyser()->ignoredLinesFor($filename), - ); - } - } - - /** - * @throws UnintentionallyCoveredCodeException - */ - private function addUncoveredFilesFromFilter(): void - { - $uncoveredFiles = array_diff( - $this->filter->files(), - $this->data->coveredFiles(), - ); - - foreach ($uncoveredFiles as $uncoveredFile) { - if (is_file($uncoveredFile)) { - $this->append( - RawCodeCoverageData::fromUncoveredFile( - $uncoveredFile, - $this->analyser(), - ), - self::UNCOVERED_FILES, - linesToBeIgnored: $this->linesToBeIgnored, - ); - } - } - } - - /** - * @throws ReflectionException - * @throws UnintentionallyCoveredCodeException - */ - private function performUnintentionallyCoveredCodeCheck(RawCodeCoverageData $data, array $linesToBeCovered, array $linesToBeUsed): void - { - $allowedLines = $this->getAllowedLines( - $linesToBeCovered, - $linesToBeUsed, - ); - - $unintentionallyCoveredUnits = []; - - foreach ($data->lineCoverage() as $file => $_data) { - foreach ($_data as $line => $flag) { - if ($flag === 1 && !isset($allowedLines[$file][$line])) { - $unintentionallyCoveredUnits[] = $this->wizard->lookup($file, $line); - } - } - } - - $unintentionallyCoveredUnits = $this->processUnintentionallyCoveredUnits($unintentionallyCoveredUnits); - - if (!empty($unintentionallyCoveredUnits)) { - throw new UnintentionallyCoveredCodeException( - $unintentionallyCoveredUnits, - ); - } - } - - private function getAllowedLines(array $linesToBeCovered, array $linesToBeUsed): array - { - $allowedLines = []; - - foreach (array_keys($linesToBeCovered) as $file) { - if (!isset($allowedLines[$file])) { - $allowedLines[$file] = []; - } - - $allowedLines[$file] = array_merge( - $allowedLines[$file], - $linesToBeCovered[$file], - ); - } - - foreach (array_keys($linesToBeUsed) as $file) { - if (!isset($allowedLines[$file])) { - $allowedLines[$file] = []; - } - - $allowedLines[$file] = array_merge( - $allowedLines[$file], - $linesToBeUsed[$file], - ); - } - - foreach (array_keys($allowedLines) as $file) { - $allowedLines[$file] = array_flip( - array_unique($allowedLines[$file]), - ); - } - - return $allowedLines; - } - - /** - * @param list $unintentionallyCoveredUnits - * - * @throws ReflectionException - * - * @return list - */ - private function processUnintentionallyCoveredUnits(array $unintentionallyCoveredUnits): array - { - $unintentionallyCoveredUnits = array_unique($unintentionallyCoveredUnits); - $processed = []; - - foreach ($unintentionallyCoveredUnits as $unintentionallyCoveredUnit) { - $tmp = explode('::', $unintentionallyCoveredUnit); - - if (count($tmp) !== 2) { - $processed[] = $unintentionallyCoveredUnit; - - continue; - } - - try { - $class = new ReflectionClass($tmp[0]); - - foreach ($this->parentClassesExcludedFromUnintentionallyCoveredCodeCheck as $parentClass) { - if ($class->isSubclassOf($parentClass)) { - continue 2; - } - } - } catch (\ReflectionException $e) { - throw new ReflectionException( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - - $processed[] = $tmp[0]; - } - - $processed = array_unique($processed); - - sort($processed); - - return $processed; - } - - private function analyser(): FileAnalyser - { - if ($this->analyser !== null) { - return $this->analyser; - } - - $this->analyser = new ParsingFileAnalyser( - $this->useAnnotationsForIgnoringCode, - $this->ignoreDeprecatedCode, - ); - - if ($this->cachesStaticAnalysis()) { - $this->analyser = new CachingFileAnalyser( - $this->cacheDirectory, - $this->analyser, - $this->useAnnotationsForIgnoringCode, - $this->ignoreDeprecatedCode, - ); - } - - return $this->analyser; - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Data/ProcessedCodeCoverageData.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Data/ProcessedCodeCoverageData.php deleted file mode 100644 index 28834c24..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Data/ProcessedCodeCoverageData.php +++ /dev/null @@ -1,278 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Data; - -use function array_key_exists; -use function array_keys; -use function array_merge; -use function array_unique; -use function count; -use function is_array; -use function ksort; -use SebastianBergmann\CodeCoverage\Driver\Driver; - -/** - * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage - * - * @psalm-import-type XdebugFunctionCoverageType from \SebastianBergmann\CodeCoverage\Driver\XdebugDriver - * - * @psalm-type TestIdType = string - */ -final class ProcessedCodeCoverageData -{ - /** - * Line coverage data. - * An array of filenames, each having an array of linenumbers, each executable line having an array of testcase ids. - * - * @psalm-var array>> - */ - private array $lineCoverage = []; - - /** - * Function coverage data. - * Maintains base format of raw data (@see https://xdebug.org/docs/code_coverage), but each 'hit' entry is an array - * of testcase ids. - * - * @psalm-var array, - * out: array, - * out_hit: array, - * }>, - * paths: array, - * hit: list, - * }>, - * hit: list - * }>> - */ - private array $functionCoverage = []; - - public function initializeUnseenData(RawCodeCoverageData $rawData): void - { - foreach ($rawData->lineCoverage() as $file => $lines) { - if (!isset($this->lineCoverage[$file])) { - $this->lineCoverage[$file] = []; - - foreach ($lines as $k => $v) { - $this->lineCoverage[$file][$k] = $v === Driver::LINE_NOT_EXECUTABLE ? null : []; - } - } - } - - foreach ($rawData->functionCoverage() as $file => $functions) { - foreach ($functions as $functionName => $functionData) { - if (isset($this->functionCoverage[$file][$functionName])) { - $this->initPreviouslySeenFunction($file, $functionName, $functionData); - } else { - $this->initPreviouslyUnseenFunction($file, $functionName, $functionData); - } - } - } - } - - public function markCodeAsExecutedByTestCase(string $testCaseId, RawCodeCoverageData $executedCode): void - { - foreach ($executedCode->lineCoverage() as $file => $lines) { - foreach ($lines as $k => $v) { - if ($v === Driver::LINE_EXECUTED) { - $this->lineCoverage[$file][$k][] = $testCaseId; - } - } - } - - foreach ($executedCode->functionCoverage() as $file => $functions) { - foreach ($functions as $functionName => $functionData) { - foreach ($functionData['branches'] as $branchId => $branchData) { - if ($branchData['hit'] === Driver::BRANCH_HIT) { - $this->functionCoverage[$file][$functionName]['branches'][$branchId]['hit'][] = $testCaseId; - } - } - - foreach ($functionData['paths'] as $pathId => $pathData) { - if ($pathData['hit'] === Driver::BRANCH_HIT) { - $this->functionCoverage[$file][$functionName]['paths'][$pathId]['hit'][] = $testCaseId; - } - } - } - } - } - - public function setLineCoverage(array $lineCoverage): void - { - $this->lineCoverage = $lineCoverage; - } - - public function lineCoverage(): array - { - ksort($this->lineCoverage); - - return $this->lineCoverage; - } - - public function setFunctionCoverage(array $functionCoverage): void - { - $this->functionCoverage = $functionCoverage; - } - - public function functionCoverage(): array - { - ksort($this->functionCoverage); - - return $this->functionCoverage; - } - - public function coveredFiles(): array - { - ksort($this->lineCoverage); - - return array_keys($this->lineCoverage); - } - - public function renameFile(string $oldFile, string $newFile): void - { - $this->lineCoverage[$newFile] = $this->lineCoverage[$oldFile]; - - if (isset($this->functionCoverage[$oldFile])) { - $this->functionCoverage[$newFile] = $this->functionCoverage[$oldFile]; - } - - unset($this->lineCoverage[$oldFile], $this->functionCoverage[$oldFile]); - } - - public function merge(self $newData): void - { - foreach ($newData->lineCoverage as $file => $lines) { - if (!isset($this->lineCoverage[$file])) { - $this->lineCoverage[$file] = $lines; - - continue; - } - - // we should compare the lines if any of two contains data - $compareLineNumbers = array_unique( - array_merge( - array_keys($this->lineCoverage[$file]), - array_keys($newData->lineCoverage[$file]), - ), - ); - - foreach ($compareLineNumbers as $line) { - $thatPriority = $this->priorityForLine($newData->lineCoverage[$file], $line); - $thisPriority = $this->priorityForLine($this->lineCoverage[$file], $line); - - if ($thatPriority > $thisPriority) { - $this->lineCoverage[$file][$line] = $newData->lineCoverage[$file][$line]; - } elseif ($thatPriority === $thisPriority && is_array($this->lineCoverage[$file][$line])) { - $this->lineCoverage[$file][$line] = array_unique( - array_merge($this->lineCoverage[$file][$line], $newData->lineCoverage[$file][$line]), - ); - } - } - } - - foreach ($newData->functionCoverage as $file => $functions) { - if (!isset($this->functionCoverage[$file])) { - $this->functionCoverage[$file] = $functions; - - continue; - } - - foreach ($functions as $functionName => $functionData) { - if (isset($this->functionCoverage[$file][$functionName])) { - $this->initPreviouslySeenFunction($file, $functionName, $functionData); - } else { - $this->initPreviouslyUnseenFunction($file, $functionName, $functionData); - } - - foreach ($functionData['branches'] as $branchId => $branchData) { - $this->functionCoverage[$file][$functionName]['branches'][$branchId]['hit'] = array_unique(array_merge($this->functionCoverage[$file][$functionName]['branches'][$branchId]['hit'], $branchData['hit'])); - } - - foreach ($functionData['paths'] as $pathId => $pathData) { - $this->functionCoverage[$file][$functionName]['paths'][$pathId]['hit'] = array_unique(array_merge($this->functionCoverage[$file][$functionName]['paths'][$pathId]['hit'], $pathData['hit'])); - } - } - } - } - - /** - * Determine the priority for a line. - * - * 1 = the line is not set - * 2 = the line has not been tested - * 3 = the line is dead code - * 4 = the line has been tested - * - * During a merge, a higher number is better. - */ - private function priorityForLine(array $data, int $line): int - { - if (!array_key_exists($line, $data)) { - return 1; - } - - if (is_array($data[$line]) && count($data[$line]) === 0) { - return 2; - } - - if ($data[$line] === null) { - return 3; - } - - return 4; - } - - /** - * For a function we have never seen before, copy all data over and simply init the 'hit' array. - * - * @psalm-param XdebugFunctionCoverageType $functionData - */ - private function initPreviouslyUnseenFunction(string $file, string $functionName, array $functionData): void - { - $this->functionCoverage[$file][$functionName] = $functionData; - - foreach (array_keys($functionData['branches']) as $branchId) { - $this->functionCoverage[$file][$functionName]['branches'][$branchId]['hit'] = []; - } - - foreach (array_keys($functionData['paths']) as $pathId) { - $this->functionCoverage[$file][$functionName]['paths'][$pathId]['hit'] = []; - } - } - - /** - * For a function we have seen before, only copy over and init the 'hit' array for any unseen branches and paths. - * Techniques such as mocking and where the contents of a file are different vary during tests (e.g. compiling - * containers) mean that the functions inside a file cannot be relied upon to be static. - * - * @psalm-param XdebugFunctionCoverageType $functionData - */ - private function initPreviouslySeenFunction(string $file, string $functionName, array $functionData): void - { - foreach ($functionData['branches'] as $branchId => $branchData) { - if (!isset($this->functionCoverage[$file][$functionName]['branches'][$branchId])) { - $this->functionCoverage[$file][$functionName]['branches'][$branchId] = $branchData; - $this->functionCoverage[$file][$functionName]['branches'][$branchId]['hit'] = []; - } - } - - foreach ($functionData['paths'] as $pathId => $pathData) { - if (!isset($this->functionCoverage[$file][$functionName]['paths'][$pathId])) { - $this->functionCoverage[$file][$functionName]['paths'][$pathId] = $pathData; - $this->functionCoverage[$file][$functionName]['paths'][$pathId]['hit'] = []; - } - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Data/RawCodeCoverageData.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Data/RawCodeCoverageData.php deleted file mode 100644 index 49cefbbe..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Data/RawCodeCoverageData.php +++ /dev/null @@ -1,281 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Data; - -use function array_diff; -use function array_diff_key; -use function array_flip; -use function array_intersect; -use function array_intersect_key; -use function count; -use function explode; -use function file_get_contents; -use function in_array; -use function is_file; -use function preg_replace; -use function range; -use function str_ends_with; -use function str_starts_with; -use function trim; -use SebastianBergmann\CodeCoverage\Driver\Driver; -use SebastianBergmann\CodeCoverage\StaticAnalysis\FileAnalyser; - -/** - * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage - * - * @psalm-import-type XdebugFunctionsCoverageType from \SebastianBergmann\CodeCoverage\Driver\XdebugDriver - * @psalm-import-type XdebugCodeCoverageWithoutPathCoverageType from \SebastianBergmann\CodeCoverage\Driver\XdebugDriver - * @psalm-import-type XdebugCodeCoverageWithPathCoverageType from \SebastianBergmann\CodeCoverage\Driver\XdebugDriver - */ -final class RawCodeCoverageData -{ - /** - * @var array> - */ - private static array $emptyLineCache = []; - - /** - * @psalm-var XdebugCodeCoverageWithoutPathCoverageType - */ - private array $lineCoverage; - - /** - * @psalm-var array - */ - private array $functionCoverage; - - /** - * @psalm-param XdebugCodeCoverageWithoutPathCoverageType $rawCoverage - */ - public static function fromXdebugWithoutPathCoverage(array $rawCoverage): self - { - return new self($rawCoverage, []); - } - - /** - * @psalm-param XdebugCodeCoverageWithPathCoverageType $rawCoverage - */ - public static function fromXdebugWithPathCoverage(array $rawCoverage): self - { - $lineCoverage = []; - $functionCoverage = []; - - foreach ($rawCoverage as $file => $fileCoverageData) { - // Xdebug annotates the function name of traits, strip that off - foreach ($fileCoverageData['functions'] as $existingKey => $data) { - if (str_ends_with($existingKey, '}') && !str_starts_with($existingKey, '{')) { // don't want to catch {main} - $newKey = preg_replace('/\{.*}$/', '', $existingKey); - $fileCoverageData['functions'][$newKey] = $data; - unset($fileCoverageData['functions'][$existingKey]); - } - } - - $lineCoverage[$file] = $fileCoverageData['lines']; - $functionCoverage[$file] = $fileCoverageData['functions']; - } - - return new self($lineCoverage, $functionCoverage); - } - - public static function fromUncoveredFile(string $filename, FileAnalyser $analyser): self - { - $lineCoverage = []; - - foreach ($analyser->executableLinesIn($filename) as $line => $branch) { - $lineCoverage[$line] = Driver::LINE_NOT_EXECUTED; - } - - return new self([$filename => $lineCoverage], []); - } - - /** - * @psalm-param XdebugCodeCoverageWithoutPathCoverageType $lineCoverage - * @psalm-param array $functionCoverage - */ - private function __construct(array $lineCoverage, array $functionCoverage) - { - $this->lineCoverage = $lineCoverage; - $this->functionCoverage = $functionCoverage; - - $this->skipEmptyLines(); - } - - public function clear(): void - { - $this->lineCoverage = $this->functionCoverage = []; - } - - /** - * @psalm-return XdebugCodeCoverageWithoutPathCoverageType - */ - public function lineCoverage(): array - { - return $this->lineCoverage; - } - - /** - * @psalm-return array - */ - public function functionCoverage(): array - { - return $this->functionCoverage; - } - - public function removeCoverageDataForFile(string $filename): void - { - unset($this->lineCoverage[$filename], $this->functionCoverage[$filename]); - } - - /** - * @param int[] $lines - */ - public function keepLineCoverageDataOnlyForLines(string $filename, array $lines): void - { - if (!isset($this->lineCoverage[$filename])) { - return; - } - - $this->lineCoverage[$filename] = array_intersect_key( - $this->lineCoverage[$filename], - array_flip($lines), - ); - } - - /** - * @param int[] $linesToBranchMap - */ - public function markExecutableLineByBranch(string $filename, array $linesToBranchMap): void - { - if (!isset($this->lineCoverage[$filename])) { - return; - } - - $linesByBranch = []; - - foreach ($linesToBranchMap as $line => $branch) { - $linesByBranch[$branch][] = $line; - } - - foreach ($this->lineCoverage[$filename] as $line => $lineStatus) { - if (!isset($linesToBranchMap[$line])) { - continue; - } - - $branch = $linesToBranchMap[$line]; - - if (!isset($linesByBranch[$branch])) { - continue; - } - - foreach ($linesByBranch[$branch] as $lineInBranch) { - $this->lineCoverage[$filename][$lineInBranch] = $lineStatus; - } - - if (Driver::LINE_EXECUTED === $lineStatus) { - unset($linesByBranch[$branch]); - } - } - } - - /** - * @param int[] $lines - */ - public function keepFunctionCoverageDataOnlyForLines(string $filename, array $lines): void - { - if (!isset($this->functionCoverage[$filename])) { - return; - } - - foreach ($this->functionCoverage[$filename] as $functionName => $functionData) { - foreach ($functionData['branches'] as $branchId => $branch) { - if (count(array_diff(range($branch['line_start'], $branch['line_end']), $lines)) > 0) { - unset($this->functionCoverage[$filename][$functionName]['branches'][$branchId]); - - foreach ($functionData['paths'] as $pathId => $path) { - if (in_array($branchId, $path['path'], true)) { - unset($this->functionCoverage[$filename][$functionName]['paths'][$pathId]); - } - } - } - } - } - } - - /** - * @param int[] $lines - */ - public function removeCoverageDataForLines(string $filename, array $lines): void - { - if (empty($lines)) { - return; - } - - if (!isset($this->lineCoverage[$filename])) { - return; - } - - $this->lineCoverage[$filename] = array_diff_key( - $this->lineCoverage[$filename], - array_flip($lines), - ); - - if (isset($this->functionCoverage[$filename])) { - foreach ($this->functionCoverage[$filename] as $functionName => $functionData) { - foreach ($functionData['branches'] as $branchId => $branch) { - if (count(array_intersect($lines, range($branch['line_start'], $branch['line_end']))) > 0) { - unset($this->functionCoverage[$filename][$functionName]['branches'][$branchId]); - - foreach ($functionData['paths'] as $pathId => $path) { - if (in_array($branchId, $path['path'], true)) { - unset($this->functionCoverage[$filename][$functionName]['paths'][$pathId]); - } - } - } - } - } - } - } - - /** - * At the end of a file, the PHP interpreter always sees an implicit return. Where this occurs in a file that has - * e.g. a class definition, that line cannot be invoked from a test and results in confusing coverage. This engine - * implementation detail therefore needs to be masked which is done here by simply ensuring that all empty lines - * are skipped over for coverage purposes. - * - * @see https://github.com/sebastianbergmann/php-code-coverage/issues/799 - */ - private function skipEmptyLines(): void - { - foreach ($this->lineCoverage as $filename => $coverage) { - foreach ($this->getEmptyLinesForFile($filename) as $emptyLine) { - unset($this->lineCoverage[$filename][$emptyLine]); - } - } - } - - private function getEmptyLinesForFile(string $filename): array - { - if (!isset(self::$emptyLineCache[$filename])) { - self::$emptyLineCache[$filename] = []; - - if (is_file($filename)) { - $sourceLines = explode("\n", file_get_contents($filename)); - - foreach ($sourceLines as $line => $source) { - if (trim($source) === '') { - self::$emptyLineCache[$filename][] = ($line + 1); - } - } - } - } - - return self::$emptyLineCache[$filename]; - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Driver/Driver.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Driver/Driver.php deleted file mode 100644 index cfbed9cf..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Driver/Driver.php +++ /dev/null @@ -1,128 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Driver; - -use function sprintf; -use SebastianBergmann\CodeCoverage\BranchAndPathCoverageNotSupportedException; -use SebastianBergmann\CodeCoverage\Data\RawCodeCoverageData; -use SebastianBergmann\CodeCoverage\DeadCodeDetectionNotSupportedException; - -/** - * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage - */ -abstract class Driver -{ - /** - * @var int - * - * @see http://xdebug.org/docs/code_coverage - */ - public const LINE_NOT_EXECUTABLE = -2; - - /** - * @var int - * - * @see http://xdebug.org/docs/code_coverage - */ - public const LINE_NOT_EXECUTED = -1; - - /** - * @var int - * - * @see http://xdebug.org/docs/code_coverage - */ - public const LINE_EXECUTED = 1; - - /** - * @var int - * - * @see http://xdebug.org/docs/code_coverage - */ - public const BRANCH_NOT_HIT = 0; - - /** - * @var int - * - * @see http://xdebug.org/docs/code_coverage - */ - public const BRANCH_HIT = 1; - private bool $collectBranchAndPathCoverage = false; - private bool $detectDeadCode = false; - - public function canCollectBranchAndPathCoverage(): bool - { - return false; - } - - public function collectsBranchAndPathCoverage(): bool - { - return $this->collectBranchAndPathCoverage; - } - - /** - * @throws BranchAndPathCoverageNotSupportedException - */ - public function enableBranchAndPathCoverage(): void - { - if (!$this->canCollectBranchAndPathCoverage()) { - throw new BranchAndPathCoverageNotSupportedException( - sprintf( - '%s does not support branch and path coverage', - $this->nameAndVersion(), - ), - ); - } - - $this->collectBranchAndPathCoverage = true; - } - - public function disableBranchAndPathCoverage(): void - { - $this->collectBranchAndPathCoverage = false; - } - - public function canDetectDeadCode(): bool - { - return false; - } - - public function detectsDeadCode(): bool - { - return $this->detectDeadCode; - } - - /** - * @throws DeadCodeDetectionNotSupportedException - */ - public function enableDeadCodeDetection(): void - { - if (!$this->canDetectDeadCode()) { - throw new DeadCodeDetectionNotSupportedException( - sprintf( - '%s does not support dead code detection', - $this->nameAndVersion(), - ), - ); - } - - $this->detectDeadCode = true; - } - - public function disableDeadCodeDetection(): void - { - $this->detectDeadCode = false; - } - - abstract public function nameAndVersion(): string; - - abstract public function start(): void; - - abstract public function stop(): RawCodeCoverageData; -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Driver/XdebugDriver.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Driver/XdebugDriver.php deleted file mode 100644 index 37f4572d..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Driver/XdebugDriver.php +++ /dev/null @@ -1,162 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Driver; - -use const XDEBUG_CC_BRANCH_CHECK; -use const XDEBUG_CC_DEAD_CODE; -use const XDEBUG_CC_UNUSED; -use const XDEBUG_FILTER_CODE_COVERAGE; -use const XDEBUG_PATH_INCLUDE; -use function explode; -use function extension_loaded; -use function getenv; -use function in_array; -use function ini_get; -use function phpversion; -use function version_compare; -use function xdebug_get_code_coverage; -use function xdebug_info; -use function xdebug_set_filter; -use function xdebug_start_code_coverage; -use function xdebug_stop_code_coverage; -use SebastianBergmann\CodeCoverage\Data\RawCodeCoverageData; -use SebastianBergmann\CodeCoverage\Filter; - -/** - * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage - * - * @see https://xdebug.org/docs/code_coverage#xdebug_get_code_coverage - * - * @psalm-type XdebugLinesCoverageType = array - * @psalm-type XdebugBranchCoverageType = array{ - * op_start: int, - * op_end: int, - * line_start: int, - * line_end: int, - * hit: int, - * out: array, - * out_hit: array, - * } - * @psalm-type XdebugPathCoverageType = array{ - * path: array, - * hit: int, - * } - * @psalm-type XdebugFunctionCoverageType = array{ - * branches: array, - * paths: array, - * } - * @psalm-type XdebugFunctionsCoverageType = array - * @psalm-type XdebugPathAndBranchesCoverageType = array{ - * lines: XdebugLinesCoverageType, - * functions: XdebugFunctionsCoverageType, - * } - * @psalm-type XdebugCodeCoverageWithoutPathCoverageType = array - * @psalm-type XdebugCodeCoverageWithPathCoverageType = array - */ -final class XdebugDriver extends Driver -{ - /** - * @throws XdebugNotAvailableException - * @throws XdebugNotEnabledException - */ - public function __construct(Filter $filter) - { - $this->ensureXdebugIsAvailable(); - $this->ensureXdebugCodeCoverageFeatureIsEnabled(); - - if (!$filter->isEmpty()) { - xdebug_set_filter( - XDEBUG_FILTER_CODE_COVERAGE, - XDEBUG_PATH_INCLUDE, - $filter->files(), - ); - } - } - - public function canCollectBranchAndPathCoverage(): bool - { - return true; - } - - public function canDetectDeadCode(): bool - { - return true; - } - - public function start(): void - { - $flags = XDEBUG_CC_UNUSED; - - if ($this->detectsDeadCode() || $this->collectsBranchAndPathCoverage()) { - $flags |= XDEBUG_CC_DEAD_CODE; - } - - if ($this->collectsBranchAndPathCoverage()) { - $flags |= XDEBUG_CC_BRANCH_CHECK; - } - - xdebug_start_code_coverage($flags); - } - - public function stop(): RawCodeCoverageData - { - $data = xdebug_get_code_coverage(); - - xdebug_stop_code_coverage(); - - if ($this->collectsBranchAndPathCoverage()) { - /* @var XdebugCodeCoverageWithPathCoverageType $data */ - return RawCodeCoverageData::fromXdebugWithPathCoverage($data); - } - - /* @var XdebugCodeCoverageWithoutPathCoverageType $data */ - return RawCodeCoverageData::fromXdebugWithoutPathCoverage($data); - } - - public function nameAndVersion(): string - { - return 'Xdebug ' . phpversion('xdebug'); - } - - /** - * @throws XdebugNotAvailableException - */ - private function ensureXdebugIsAvailable(): void - { - if (!extension_loaded('xdebug')) { - throw new XdebugNotAvailableException; - } - } - - /** - * @throws XdebugNotEnabledException - */ - private function ensureXdebugCodeCoverageFeatureIsEnabled(): void - { - if (version_compare(phpversion('xdebug'), '3.1', '>=')) { - if (!in_array('coverage', xdebug_info('mode'), true)) { - throw new XdebugNotEnabledException; - } - - return; - } - - $mode = getenv('XDEBUG_MODE'); - - if ($mode === false || $mode === '') { - $mode = ini_get('xdebug.mode'); - } - - if ($mode === false || - !in_array('coverage', explode(',', $mode), true)) { - throw new XdebugNotEnabledException; - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Exception/XdebugNotEnabledException.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Exception/XdebugNotEnabledException.php deleted file mode 100644 index a8df4645..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Exception/XdebugNotEnabledException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Driver; - -use RuntimeException; -use SebastianBergmann\CodeCoverage\Exception; - -final class XdebugNotEnabledException extends RuntimeException implements Exception -{ - public function __construct() - { - parent::__construct('XDEBUG_MODE=coverage (environment variable) or xdebug.mode=coverage (PHP configuration setting) has to be set'); - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Node/AbstractNode.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Node/AbstractNode.php deleted file mode 100644 index 3f21a50e..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Node/AbstractNode.php +++ /dev/null @@ -1,250 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Node; - -use const DIRECTORY_SEPARATOR; -use function array_merge; -use function str_ends_with; -use function str_replace; -use function substr; -use Countable; -use SebastianBergmann\CodeCoverage\Util\Percentage; - -/** - * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage - * - * @psalm-import-type LinesOfCodeType from \SebastianBergmann\CodeCoverage\StaticAnalysis\FileAnalyser - * @psalm-import-type ProcessedFunctionType from \SebastianBergmann\CodeCoverage\Node\File - * @psalm-import-type ProcessedClassType from \SebastianBergmann\CodeCoverage\Node\File - * @psalm-import-type ProcessedTraitType from \SebastianBergmann\CodeCoverage\Node\File - */ -abstract class AbstractNode implements Countable -{ - private readonly string $name; - private string $pathAsString; - private array $pathAsArray; - private readonly ?AbstractNode $parent; - private string $id; - - public function __construct(string $name, ?self $parent = null) - { - if (str_ends_with($name, DIRECTORY_SEPARATOR)) { - $name = substr($name, 0, -1); - } - - $this->name = $name; - $this->parent = $parent; - - $this->processId(); - $this->processPath(); - } - - public function name(): string - { - return $this->name; - } - - public function id(): string - { - return $this->id; - } - - public function pathAsString(): string - { - return $this->pathAsString; - } - - public function pathAsArray(): array - { - return $this->pathAsArray; - } - - public function parent(): ?self - { - return $this->parent; - } - - public function percentageOfTestedClasses(): Percentage - { - return Percentage::fromFractionAndTotal( - $this->numberOfTestedClasses(), - $this->numberOfClasses(), - ); - } - - public function percentageOfTestedTraits(): Percentage - { - return Percentage::fromFractionAndTotal( - $this->numberOfTestedTraits(), - $this->numberOfTraits(), - ); - } - - public function percentageOfTestedClassesAndTraits(): Percentage - { - return Percentage::fromFractionAndTotal( - $this->numberOfTestedClassesAndTraits(), - $this->numberOfClassesAndTraits(), - ); - } - - public function percentageOfTestedFunctions(): Percentage - { - return Percentage::fromFractionAndTotal( - $this->numberOfTestedFunctions(), - $this->numberOfFunctions(), - ); - } - - public function percentageOfTestedMethods(): Percentage - { - return Percentage::fromFractionAndTotal( - $this->numberOfTestedMethods(), - $this->numberOfMethods(), - ); - } - - public function percentageOfTestedFunctionsAndMethods(): Percentage - { - return Percentage::fromFractionAndTotal( - $this->numberOfTestedFunctionsAndMethods(), - $this->numberOfFunctionsAndMethods(), - ); - } - - public function percentageOfExecutedLines(): Percentage - { - return Percentage::fromFractionAndTotal( - $this->numberOfExecutedLines(), - $this->numberOfExecutableLines(), - ); - } - - public function percentageOfExecutedBranches(): Percentage - { - return Percentage::fromFractionAndTotal( - $this->numberOfExecutedBranches(), - $this->numberOfExecutableBranches(), - ); - } - - public function percentageOfExecutedPaths(): Percentage - { - return Percentage::fromFractionAndTotal( - $this->numberOfExecutedPaths(), - $this->numberOfExecutablePaths(), - ); - } - - public function numberOfClassesAndTraits(): int - { - return $this->numberOfClasses() + $this->numberOfTraits(); - } - - public function numberOfTestedClassesAndTraits(): int - { - return $this->numberOfTestedClasses() + $this->numberOfTestedTraits(); - } - - public function classesAndTraits(): array - { - return array_merge($this->classes(), $this->traits()); - } - - public function numberOfFunctionsAndMethods(): int - { - return $this->numberOfFunctions() + $this->numberOfMethods(); - } - - public function numberOfTestedFunctionsAndMethods(): int - { - return $this->numberOfTestedFunctions() + $this->numberOfTestedMethods(); - } - - /** - * @psalm-return array - */ - abstract public function classes(): array; - - /** - * @psalm-return array - */ - abstract public function traits(): array; - - /** - * @psalm-return array - */ - abstract public function functions(): array; - - /** - * @psalm-return LinesOfCodeType - */ - abstract public function linesOfCode(): array; - - abstract public function numberOfExecutableLines(): int; - - abstract public function numberOfExecutedLines(): int; - - abstract public function numberOfExecutableBranches(): int; - - abstract public function numberOfExecutedBranches(): int; - - abstract public function numberOfExecutablePaths(): int; - - abstract public function numberOfExecutedPaths(): int; - - abstract public function numberOfClasses(): int; - - abstract public function numberOfTestedClasses(): int; - - abstract public function numberOfTraits(): int; - - abstract public function numberOfTestedTraits(): int; - - abstract public function numberOfMethods(): int; - - abstract public function numberOfTestedMethods(): int; - - abstract public function numberOfFunctions(): int; - - abstract public function numberOfTestedFunctions(): int; - - private function processId(): void - { - if ($this->parent === null) { - $this->id = 'index'; - - return; - } - - $parentId = $this->parent->id(); - - if ($parentId === 'index') { - $this->id = str_replace(':', '_', $this->name); - } else { - $this->id = $parentId . '/' . $this->name; - } - } - - private function processPath(): void - { - if ($this->parent === null) { - $this->pathAsArray = [$this]; - $this->pathAsString = $this->name; - - return; - } - - $this->pathAsArray = $this->parent->pathAsArray(); - $this->pathAsString = $this->parent->pathAsString() . DIRECTORY_SEPARATOR . $this->name; - - $this->pathAsArray[] = $this; - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Node/Builder.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Node/Builder.php deleted file mode 100644 index 5ed6f866..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Node/Builder.php +++ /dev/null @@ -1,269 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Node; - -use const DIRECTORY_SEPARATOR; -use function array_shift; -use function basename; -use function count; -use function dirname; -use function explode; -use function implode; -use function is_file; -use function str_ends_with; -use function str_replace; -use function str_starts_with; -use function substr; -use SebastianBergmann\CodeCoverage\CodeCoverage; -use SebastianBergmann\CodeCoverage\Data\ProcessedCodeCoverageData; -use SebastianBergmann\CodeCoverage\StaticAnalysis\FileAnalyser; - -/** - * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage - * - * @psalm-import-type TestType from \SebastianBergmann\CodeCoverage\CodeCoverage - */ -final class Builder -{ - private readonly FileAnalyser $analyser; - - public function __construct(FileAnalyser $analyser) - { - $this->analyser = $analyser; - } - - public function build(CodeCoverage $coverage): Directory - { - $data = clone $coverage->getData(); // clone because path munging is destructive to the original data - $commonPath = $this->reducePaths($data); - $root = new Directory( - $commonPath, - null, - ); - - $this->addItems( - $root, - $this->buildDirectoryStructure($data), - $coverage->getTests(), - ); - - return $root; - } - - /** - * @psalm-param array $tests - */ - private function addItems(Directory $root, array $items, array $tests): void - { - foreach ($items as $key => $value) { - $key = (string) $key; - - if (str_ends_with($key, '/f')) { - $key = substr($key, 0, -2); - $filename = $root->pathAsString() . DIRECTORY_SEPARATOR . $key; - - if (is_file($filename)) { - $root->addFile( - new File( - $key, - $root, - $value['lineCoverage'], - $value['functionCoverage'], - $tests, - $this->analyser->classesIn($filename), - $this->analyser->traitsIn($filename), - $this->analyser->functionsIn($filename), - $this->analyser->linesOfCodeFor($filename), - ), - ); - } - } else { - $child = $root->addDirectory($key); - - $this->addItems($child, $value, $tests); - } - } - } - - /** - * Builds an array representation of the directory structure. - * - * For instance, - * - * - * Array - * ( - * [Money.php] => Array - * ( - * ... - * ) - * - * [MoneyBag.php] => Array - * ( - * ... - * ) - * ) - * - * - * is transformed into - * - * - * Array - * ( - * [.] => Array - * ( - * [Money.php] => Array - * ( - * ... - * ) - * - * [MoneyBag.php] => Array - * ( - * ... - * ) - * ) - * ) - * - * - * @psalm-return array, functionCoverage: array>}>> - */ - private function buildDirectoryStructure(ProcessedCodeCoverageData $data): array - { - $result = []; - - foreach ($data->coveredFiles() as $originalPath) { - $path = explode(DIRECTORY_SEPARATOR, $originalPath); - $pointer = &$result; - $max = count($path); - - for ($i = 0; $i < $max; $i++) { - $type = ''; - - if ($i === ($max - 1)) { - $type = '/f'; - } - - $pointer = &$pointer[$path[$i] . $type]; - } - - $pointer = [ - 'lineCoverage' => $data->lineCoverage()[$originalPath] ?? [], - 'functionCoverage' => $data->functionCoverage()[$originalPath] ?? [], - ]; - } - - return $result; - } - - /** - * Reduces the paths by cutting the longest common start path. - * - * For instance, - * - * - * Array - * ( - * [/home/sb/Money/Money.php] => Array - * ( - * ... - * ) - * - * [/home/sb/Money/MoneyBag.php] => Array - * ( - * ... - * ) - * ) - * - * - * is reduced to - * - * - * Array - * ( - * [Money.php] => Array - * ( - * ... - * ) - * - * [MoneyBag.php] => Array - * ( - * ... - * ) - * ) - * - */ - private function reducePaths(ProcessedCodeCoverageData $coverage): string - { - if (empty($coverage->coveredFiles())) { - return '.'; - } - - $commonPath = ''; - $paths = $coverage->coveredFiles(); - - if (count($paths) === 1) { - $commonPath = dirname($paths[0]) . DIRECTORY_SEPARATOR; - $coverage->renameFile($paths[0], basename($paths[0])); - - return $commonPath; - } - - $max = count($paths); - - for ($i = 0; $i < $max; $i++) { - // strip phar:// prefixes - if (str_starts_with($paths[$i], 'phar://')) { - $paths[$i] = substr($paths[$i], 7); - $paths[$i] = str_replace('/', DIRECTORY_SEPARATOR, $paths[$i]); - } - $paths[$i] = explode(DIRECTORY_SEPARATOR, $paths[$i]); - - if (empty($paths[$i][0])) { - $paths[$i][0] = DIRECTORY_SEPARATOR; - } - } - - $done = false; - $max = count($paths); - - while (!$done) { - for ($i = 0; $i < $max - 1; $i++) { - if (!isset($paths[$i][0]) || - !isset($paths[$i + 1][0]) || - $paths[$i][0] !== $paths[$i + 1][0]) { - $done = true; - - break; - } - } - - if (!$done) { - $commonPath .= $paths[0][0]; - - if ($paths[0][0] !== DIRECTORY_SEPARATOR) { - $commonPath .= DIRECTORY_SEPARATOR; - } - - for ($i = 0; $i < $max; $i++) { - array_shift($paths[$i]); - } - } - } - - $original = $coverage->coveredFiles(); - $max = count($original); - - for ($i = 0; $i < $max; $i++) { - $coverage->renameFile($original[$i], implode(DIRECTORY_SEPARATOR, $paths[$i])); - } - - return substr($commonPath, 0, -1); - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Node/CrapIndex.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Node/CrapIndex.php deleted file mode 100644 index 7173276c..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Node/CrapIndex.php +++ /dev/null @@ -1,43 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Node; - -use function sprintf; - -/** - * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage - */ -final class CrapIndex -{ - private readonly int $cyclomaticComplexity; - private readonly float $codeCoverage; - - public function __construct(int $cyclomaticComplexity, float $codeCoverage) - { - $this->cyclomaticComplexity = $cyclomaticComplexity; - $this->codeCoverage = $codeCoverage; - } - - public function asString(): string - { - if ($this->codeCoverage === 0.0) { - return (string) ($this->cyclomaticComplexity ** 2 + $this->cyclomaticComplexity); - } - - if ($this->codeCoverage >= 95) { - return (string) $this->cyclomaticComplexity; - } - - return sprintf( - '%01.2F', - $this->cyclomaticComplexity ** 2 * (1 - $this->codeCoverage / 100) ** 3 + $this->cyclomaticComplexity, - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Node/Directory.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Node/Directory.php deleted file mode 100644 index 176318bd..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Node/Directory.php +++ /dev/null @@ -1,370 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Node; - -use function array_merge; -use function count; -use IteratorAggregate; -use RecursiveIteratorIterator; - -/** - * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage - * - * @psalm-import-type LinesOfCodeType from \SebastianBergmann\CodeCoverage\StaticAnalysis\FileAnalyser - */ -final class Directory extends AbstractNode implements IteratorAggregate -{ - /** - * @var list - */ - private array $children = []; - - /** - * @var list - */ - private array $directories = []; - - /** - * @var list - */ - private array $files = []; - private ?array $classes = null; - private ?array $traits = null; - private ?array $functions = null; - - /** - * @psalm-var null|LinesOfCodeType - */ - private ?array $linesOfCode = null; - private int $numFiles = -1; - private int $numExecutableLines = -1; - private int $numExecutedLines = -1; - private int $numExecutableBranches = -1; - private int $numExecutedBranches = -1; - private int $numExecutablePaths = -1; - private int $numExecutedPaths = -1; - private int $numClasses = -1; - private int $numTestedClasses = -1; - private int $numTraits = -1; - private int $numTestedTraits = -1; - private int $numMethods = -1; - private int $numTestedMethods = -1; - private int $numFunctions = -1; - private int $numTestedFunctions = -1; - - public function count(): int - { - if ($this->numFiles === -1) { - $this->numFiles = 0; - - foreach ($this->children as $child) { - $this->numFiles += count($child); - } - } - - return $this->numFiles; - } - - public function getIterator(): RecursiveIteratorIterator - { - return new RecursiveIteratorIterator( - new Iterator($this), - RecursiveIteratorIterator::SELF_FIRST, - ); - } - - public function addDirectory(string $name): self - { - $directory = new self($name, $this); - - $this->children[] = $directory; - $this->directories[] = &$this->children[count($this->children) - 1]; - - return $directory; - } - - public function addFile(File $file): void - { - $this->children[] = $file; - $this->files[] = &$this->children[count($this->children) - 1]; - - $this->numExecutableLines = -1; - $this->numExecutedLines = -1; - } - - public function directories(): array - { - return $this->directories; - } - - public function files(): array - { - return $this->files; - } - - public function children(): array - { - return $this->children; - } - - public function classes(): array - { - if ($this->classes === null) { - $this->classes = []; - - foreach ($this->children as $child) { - $this->classes = array_merge( - $this->classes, - $child->classes(), - ); - } - } - - return $this->classes; - } - - public function traits(): array - { - if ($this->traits === null) { - $this->traits = []; - - foreach ($this->children as $child) { - $this->traits = array_merge( - $this->traits, - $child->traits(), - ); - } - } - - return $this->traits; - } - - public function functions(): array - { - if ($this->functions === null) { - $this->functions = []; - - foreach ($this->children as $child) { - $this->functions = array_merge( - $this->functions, - $child->functions(), - ); - } - } - - return $this->functions; - } - - /** - * @psalm-return LinesOfCodeType - */ - public function linesOfCode(): array - { - if ($this->linesOfCode === null) { - $this->linesOfCode = [ - 'linesOfCode' => 0, - 'commentLinesOfCode' => 0, - 'nonCommentLinesOfCode' => 0, - ]; - - foreach ($this->children as $child) { - $childLinesOfCode = $child->linesOfCode(); - - $this->linesOfCode['linesOfCode'] += $childLinesOfCode['linesOfCode']; - $this->linesOfCode['commentLinesOfCode'] += $childLinesOfCode['commentLinesOfCode']; - $this->linesOfCode['nonCommentLinesOfCode'] += $childLinesOfCode['nonCommentLinesOfCode']; - } - } - - return $this->linesOfCode; - } - - public function numberOfExecutableLines(): int - { - if ($this->numExecutableLines === -1) { - $this->numExecutableLines = 0; - - foreach ($this->children as $child) { - $this->numExecutableLines += $child->numberOfExecutableLines(); - } - } - - return $this->numExecutableLines; - } - - public function numberOfExecutedLines(): int - { - if ($this->numExecutedLines === -1) { - $this->numExecutedLines = 0; - - foreach ($this->children as $child) { - $this->numExecutedLines += $child->numberOfExecutedLines(); - } - } - - return $this->numExecutedLines; - } - - public function numberOfExecutableBranches(): int - { - if ($this->numExecutableBranches === -1) { - $this->numExecutableBranches = 0; - - foreach ($this->children as $child) { - $this->numExecutableBranches += $child->numberOfExecutableBranches(); - } - } - - return $this->numExecutableBranches; - } - - public function numberOfExecutedBranches(): int - { - if ($this->numExecutedBranches === -1) { - $this->numExecutedBranches = 0; - - foreach ($this->children as $child) { - $this->numExecutedBranches += $child->numberOfExecutedBranches(); - } - } - - return $this->numExecutedBranches; - } - - public function numberOfExecutablePaths(): int - { - if ($this->numExecutablePaths === -1) { - $this->numExecutablePaths = 0; - - foreach ($this->children as $child) { - $this->numExecutablePaths += $child->numberOfExecutablePaths(); - } - } - - return $this->numExecutablePaths; - } - - public function numberOfExecutedPaths(): int - { - if ($this->numExecutedPaths === -1) { - $this->numExecutedPaths = 0; - - foreach ($this->children as $child) { - $this->numExecutedPaths += $child->numberOfExecutedPaths(); - } - } - - return $this->numExecutedPaths; - } - - public function numberOfClasses(): int - { - if ($this->numClasses === -1) { - $this->numClasses = 0; - - foreach ($this->children as $child) { - $this->numClasses += $child->numberOfClasses(); - } - } - - return $this->numClasses; - } - - public function numberOfTestedClasses(): int - { - if ($this->numTestedClasses === -1) { - $this->numTestedClasses = 0; - - foreach ($this->children as $child) { - $this->numTestedClasses += $child->numberOfTestedClasses(); - } - } - - return $this->numTestedClasses; - } - - public function numberOfTraits(): int - { - if ($this->numTraits === -1) { - $this->numTraits = 0; - - foreach ($this->children as $child) { - $this->numTraits += $child->numberOfTraits(); - } - } - - return $this->numTraits; - } - - public function numberOfTestedTraits(): int - { - if ($this->numTestedTraits === -1) { - $this->numTestedTraits = 0; - - foreach ($this->children as $child) { - $this->numTestedTraits += $child->numberOfTestedTraits(); - } - } - - return $this->numTestedTraits; - } - - public function numberOfMethods(): int - { - if ($this->numMethods === -1) { - $this->numMethods = 0; - - foreach ($this->children as $child) { - $this->numMethods += $child->numberOfMethods(); - } - } - - return $this->numMethods; - } - - public function numberOfTestedMethods(): int - { - if ($this->numTestedMethods === -1) { - $this->numTestedMethods = 0; - - foreach ($this->children as $child) { - $this->numTestedMethods += $child->numberOfTestedMethods(); - } - } - - return $this->numTestedMethods; - } - - public function numberOfFunctions(): int - { - if ($this->numFunctions === -1) { - $this->numFunctions = 0; - - foreach ($this->children as $child) { - $this->numFunctions += $child->numberOfFunctions(); - } - } - - return $this->numFunctions; - } - - public function numberOfTestedFunctions(): int - { - if ($this->numTestedFunctions === -1) { - $this->numTestedFunctions = 0; - - foreach ($this->children as $child) { - $this->numTestedFunctions += $child->numberOfTestedFunctions(); - } - } - - return $this->numTestedFunctions; - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Node/File.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Node/File.php deleted file mode 100644 index 7029e8a5..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Node/File.php +++ /dev/null @@ -1,688 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Node; - -use function array_filter; -use function count; -use function range; - -/** - * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage - * - * @psalm-import-type CodeUnitFunctionType from \SebastianBergmann\CodeCoverage\StaticAnalysis\CodeUnitFindingVisitor - * @psalm-import-type CodeUnitMethodType from \SebastianBergmann\CodeCoverage\StaticAnalysis\CodeUnitFindingVisitor - * @psalm-import-type CodeUnitClassType from \SebastianBergmann\CodeCoverage\StaticAnalysis\CodeUnitFindingVisitor - * @psalm-import-type CodeUnitTraitType from \SebastianBergmann\CodeCoverage\StaticAnalysis\CodeUnitFindingVisitor - * @psalm-import-type LinesOfCodeType from \SebastianBergmann\CodeCoverage\StaticAnalysis\FileAnalyser - * @psalm-import-type LinesType from \SebastianBergmann\CodeCoverage\StaticAnalysis\FileAnalyser - * - * @psalm-type ProcessedFunctionType = array{ - * functionName: string, - * namespace: string, - * signature: string, - * startLine: int, - * endLine: int, - * executableLines: int, - * executedLines: int, - * executableBranches: int, - * executedBranches: int, - * executablePaths: int, - * executedPaths: int, - * ccn: int, - * coverage: int|float, - * crap: int|string, - * link: string - * } - * @psalm-type ProcessedMethodType = array{ - * methodName: string, - * visibility: string, - * signature: string, - * startLine: int, - * endLine: int, - * executableLines: int, - * executedLines: int, - * executableBranches: int, - * executedBranches: int, - * executablePaths: int, - * executedPaths: int, - * ccn: int, - * coverage: float|int, - * crap: int|string, - * link: string - * } - * @psalm-type ProcessedClassType = array{ - * className: string, - * namespace: string, - * methods: array, - * startLine: int, - * executableLines: int, - * executedLines: int, - * executableBranches: int, - * executedBranches: int, - * executablePaths: int, - * executedPaths: int, - * ccn: int, - * coverage: int|float, - * crap: int|string, - * link: string - * } - * @psalm-type ProcessedTraitType = array{ - * traitName: string, - * namespace: string, - * methods: array, - * startLine: int, - * executableLines: int, - * executedLines: int, - * executableBranches: int, - * executedBranches: int, - * executablePaths: int, - * executedPaths: int, - * ccn: int, - * coverage: float|int, - * crap: int|string, - * link: string - * } - */ -final class File extends AbstractNode -{ - /** - * @psalm-var array> - */ - private array $lineCoverageData; - private array $functionCoverageData; - private readonly array $testData; - private int $numExecutableLines = 0; - private int $numExecutedLines = 0; - private int $numExecutableBranches = 0; - private int $numExecutedBranches = 0; - private int $numExecutablePaths = 0; - private int $numExecutedPaths = 0; - - /** - * @psalm-var array - */ - private array $classes = []; - - /** - * @psalm-var array - */ - private array $traits = []; - - /** - * @psalm-var array - */ - private array $functions = []; - - /** - * @psalm-var LinesOfCodeType - */ - private readonly array $linesOfCode; - private ?int $numClasses = null; - private int $numTestedClasses = 0; - private ?int $numTraits = null; - private int $numTestedTraits = 0; - private ?int $numMethods = null; - private ?int $numTestedMethods = null; - private ?int $numTestedFunctions = null; - - /** - * @var array - */ - private array $codeUnitsByLine = []; - - /** - * @psalm-param array> $lineCoverageData - * @psalm-param LinesOfCodeType $linesOfCode - * @psalm-param array $classes - * @psalm-param array $traits - * @psalm-param array $functions - */ - public function __construct(string $name, AbstractNode $parent, array $lineCoverageData, array $functionCoverageData, array $testData, array $classes, array $traits, array $functions, array $linesOfCode) - { - parent::__construct($name, $parent); - - $this->lineCoverageData = $lineCoverageData; - $this->functionCoverageData = $functionCoverageData; - $this->testData = $testData; - $this->linesOfCode = $linesOfCode; - - $this->calculateStatistics($classes, $traits, $functions); - } - - public function count(): int - { - return 1; - } - - /** - * @psalm-return array> - */ - public function lineCoverageData(): array - { - return $this->lineCoverageData; - } - - public function functionCoverageData(): array - { - return $this->functionCoverageData; - } - - public function testData(): array - { - return $this->testData; - } - - public function classes(): array - { - return $this->classes; - } - - public function traits(): array - { - return $this->traits; - } - - public function functions(): array - { - return $this->functions; - } - - public function linesOfCode(): array - { - return $this->linesOfCode; - } - - public function numberOfExecutableLines(): int - { - return $this->numExecutableLines; - } - - public function numberOfExecutedLines(): int - { - return $this->numExecutedLines; - } - - public function numberOfExecutableBranches(): int - { - return $this->numExecutableBranches; - } - - public function numberOfExecutedBranches(): int - { - return $this->numExecutedBranches; - } - - public function numberOfExecutablePaths(): int - { - return $this->numExecutablePaths; - } - - public function numberOfExecutedPaths(): int - { - return $this->numExecutedPaths; - } - - public function numberOfClasses(): int - { - if ($this->numClasses === null) { - $this->numClasses = 0; - - foreach ($this->classes as $class) { - foreach ($class['methods'] as $method) { - if ($method['executableLines'] > 0) { - $this->numClasses++; - - continue 2; - } - } - } - } - - return $this->numClasses; - } - - public function numberOfTestedClasses(): int - { - return $this->numTestedClasses; - } - - public function numberOfTraits(): int - { - if ($this->numTraits === null) { - $this->numTraits = 0; - - foreach ($this->traits as $trait) { - foreach ($trait['methods'] as $method) { - if ($method['executableLines'] > 0) { - $this->numTraits++; - - continue 2; - } - } - } - } - - return $this->numTraits; - } - - public function numberOfTestedTraits(): int - { - return $this->numTestedTraits; - } - - public function numberOfMethods(): int - { - if ($this->numMethods === null) { - $this->numMethods = 0; - - foreach ($this->classes as $class) { - foreach ($class['methods'] as $method) { - if ($method['executableLines'] > 0) { - $this->numMethods++; - } - } - } - - foreach ($this->traits as $trait) { - foreach ($trait['methods'] as $method) { - if ($method['executableLines'] > 0) { - $this->numMethods++; - } - } - } - } - - return $this->numMethods; - } - - public function numberOfTestedMethods(): int - { - if ($this->numTestedMethods === null) { - $this->numTestedMethods = 0; - - foreach ($this->classes as $class) { - foreach ($class['methods'] as $method) { - if ($method['executableLines'] > 0 && - $method['coverage'] === 100) { - $this->numTestedMethods++; - } - } - } - - foreach ($this->traits as $trait) { - foreach ($trait['methods'] as $method) { - if ($method['executableLines'] > 0 && - $method['coverage'] === 100) { - $this->numTestedMethods++; - } - } - } - } - - return $this->numTestedMethods; - } - - public function numberOfFunctions(): int - { - return count($this->functions); - } - - public function numberOfTestedFunctions(): int - { - if ($this->numTestedFunctions === null) { - $this->numTestedFunctions = 0; - - foreach ($this->functions as $function) { - if ($function['executableLines'] > 0 && - $function['coverage'] === 100) { - $this->numTestedFunctions++; - } - } - } - - return $this->numTestedFunctions; - } - - /** - * @psalm-param array $classes - * @psalm-param array $traits - * @psalm-param array $functions - */ - private function calculateStatistics(array $classes, array $traits, array $functions): void - { - foreach (range(1, $this->linesOfCode['linesOfCode']) as $lineNumber) { - $this->codeUnitsByLine[$lineNumber] = []; - } - - $this->processClasses($classes); - $this->processTraits($traits); - $this->processFunctions($functions); - - foreach (range(1, $this->linesOfCode['linesOfCode']) as $lineNumber) { - if (isset($this->lineCoverageData[$lineNumber])) { - foreach ($this->codeUnitsByLine[$lineNumber] as &$codeUnit) { - $codeUnit['executableLines']++; - } - - unset($codeUnit); - - $this->numExecutableLines++; - - if (count($this->lineCoverageData[$lineNumber]) > 0) { - foreach ($this->codeUnitsByLine[$lineNumber] as &$codeUnit) { - $codeUnit['executedLines']++; - } - - unset($codeUnit); - - $this->numExecutedLines++; - } - } - } - - foreach ($this->traits as &$trait) { - foreach ($trait['methods'] as &$method) { - $methodLineCoverage = $method['executableLines'] ? ($method['executedLines'] / $method['executableLines']) * 100 : 100; - $methodBranchCoverage = $method['executableBranches'] ? ($method['executedBranches'] / $method['executableBranches']) * 100 : 0; - $methodPathCoverage = $method['executablePaths'] ? ($method['executedPaths'] / $method['executablePaths']) * 100 : 0; - - $method['coverage'] = $methodBranchCoverage ?: $methodLineCoverage; - $method['crap'] = (new CrapIndex($method['ccn'], $methodPathCoverage ?: $methodLineCoverage))->asString(); - - $trait['ccn'] += $method['ccn']; - } - - unset($method); - - $traitLineCoverage = $trait['executableLines'] ? ($trait['executedLines'] / $trait['executableLines']) * 100 : 100; - $traitBranchCoverage = $trait['executableBranches'] ? ($trait['executedBranches'] / $trait['executableBranches']) * 100 : 0; - $traitPathCoverage = $trait['executablePaths'] ? ($trait['executedPaths'] / $trait['executablePaths']) * 100 : 0; - - $trait['coverage'] = $traitBranchCoverage ?: $traitLineCoverage; - $trait['crap'] = (new CrapIndex($trait['ccn'], $traitPathCoverage ?: $traitLineCoverage))->asString(); - - if ($trait['executableLines'] > 0 && $trait['coverage'] === 100) { - $this->numTestedClasses++; - } - } - - unset($trait); - - foreach ($this->classes as &$class) { - foreach ($class['methods'] as &$method) { - $methodLineCoverage = $method['executableLines'] ? ($method['executedLines'] / $method['executableLines']) * 100 : 100; - $methodBranchCoverage = $method['executableBranches'] ? ($method['executedBranches'] / $method['executableBranches']) * 100 : 0; - $methodPathCoverage = $method['executablePaths'] ? ($method['executedPaths'] / $method['executablePaths']) * 100 : 0; - - $method['coverage'] = $methodBranchCoverage ?: $methodLineCoverage; - $method['crap'] = (new CrapIndex($method['ccn'], $methodPathCoverage ?: $methodLineCoverage))->asString(); - - $class['ccn'] += $method['ccn']; - } - - unset($method); - - $classLineCoverage = $class['executableLines'] ? ($class['executedLines'] / $class['executableLines']) * 100 : 100; - $classBranchCoverage = $class['executableBranches'] ? ($class['executedBranches'] / $class['executableBranches']) * 100 : 0; - $classPathCoverage = $class['executablePaths'] ? ($class['executedPaths'] / $class['executablePaths']) * 100 : 0; - - $class['coverage'] = $classBranchCoverage ?: $classLineCoverage; - $class['crap'] = (new CrapIndex($class['ccn'], $classPathCoverage ?: $classLineCoverage))->asString(); - - if ($class['executableLines'] > 0 && $class['coverage'] === 100) { - $this->numTestedClasses++; - } - } - - unset($class); - - foreach ($this->functions as &$function) { - $functionLineCoverage = $function['executableLines'] ? ($function['executedLines'] / $function['executableLines']) * 100 : 100; - $functionBranchCoverage = $function['executableBranches'] ? ($function['executedBranches'] / $function['executableBranches']) * 100 : 0; - $functionPathCoverage = $function['executablePaths'] ? ($function['executedPaths'] / $function['executablePaths']) * 100 : 0; - - $function['coverage'] = $functionBranchCoverage ?: $functionLineCoverage; - $function['crap'] = (new CrapIndex($function['ccn'], $functionPathCoverage ?: $functionLineCoverage))->asString(); - - if ($function['coverage'] === 100) { - $this->numTestedFunctions++; - } - } - } - - /** - * @psalm-param array $classes - */ - private function processClasses(array $classes): void - { - $link = $this->id() . '.html#'; - - foreach ($classes as $className => $class) { - $this->classes[$className] = [ - 'className' => $className, - 'namespace' => $class['namespace'], - 'methods' => [], - 'startLine' => $class['startLine'], - 'executableLines' => 0, - 'executedLines' => 0, - 'executableBranches' => 0, - 'executedBranches' => 0, - 'executablePaths' => 0, - 'executedPaths' => 0, - 'ccn' => 0, - 'coverage' => 0, - 'crap' => 0, - 'link' => $link . $class['startLine'], - ]; - - foreach ($class['methods'] as $methodName => $method) { - $methodData = $this->newMethod($className, $methodName, $method, $link); - $this->classes[$className]['methods'][$methodName] = $methodData; - - $this->classes[$className]['executableBranches'] += $methodData['executableBranches']; - $this->classes[$className]['executedBranches'] += $methodData['executedBranches']; - $this->classes[$className]['executablePaths'] += $methodData['executablePaths']; - $this->classes[$className]['executedPaths'] += $methodData['executedPaths']; - - $this->numExecutableBranches += $methodData['executableBranches']; - $this->numExecutedBranches += $methodData['executedBranches']; - $this->numExecutablePaths += $methodData['executablePaths']; - $this->numExecutedPaths += $methodData['executedPaths']; - - foreach (range($method['startLine'], $method['endLine']) as $lineNumber) { - $this->codeUnitsByLine[$lineNumber] = [ - &$this->classes[$className], - &$this->classes[$className]['methods'][$methodName], - ]; - } - } - } - } - - /** - * @psalm-param array $traits - */ - private function processTraits(array $traits): void - { - $link = $this->id() . '.html#'; - - foreach ($traits as $traitName => $trait) { - $this->traits[$traitName] = [ - 'traitName' => $traitName, - 'namespace' => $trait['namespace'], - 'methods' => [], - 'startLine' => $trait['startLine'], - 'executableLines' => 0, - 'executedLines' => 0, - 'executableBranches' => 0, - 'executedBranches' => 0, - 'executablePaths' => 0, - 'executedPaths' => 0, - 'ccn' => 0, - 'coverage' => 0, - 'crap' => 0, - 'link' => $link . $trait['startLine'], - ]; - - foreach ($trait['methods'] as $methodName => $method) { - $methodData = $this->newMethod($traitName, $methodName, $method, $link); - $this->traits[$traitName]['methods'][$methodName] = $methodData; - - $this->traits[$traitName]['executableBranches'] += $methodData['executableBranches']; - $this->traits[$traitName]['executedBranches'] += $methodData['executedBranches']; - $this->traits[$traitName]['executablePaths'] += $methodData['executablePaths']; - $this->traits[$traitName]['executedPaths'] += $methodData['executedPaths']; - - $this->numExecutableBranches += $methodData['executableBranches']; - $this->numExecutedBranches += $methodData['executedBranches']; - $this->numExecutablePaths += $methodData['executablePaths']; - $this->numExecutedPaths += $methodData['executedPaths']; - - foreach (range($method['startLine'], $method['endLine']) as $lineNumber) { - $this->codeUnitsByLine[$lineNumber] = [ - &$this->traits[$traitName], - &$this->traits[$traitName]['methods'][$methodName], - ]; - } - } - } - } - - /** - * @psalm-param array $functions - */ - private function processFunctions(array $functions): void - { - $link = $this->id() . '.html#'; - - foreach ($functions as $functionName => $function) { - $this->functions[$functionName] = [ - 'functionName' => $functionName, - 'namespace' => $function['namespace'], - 'signature' => $function['signature'], - 'startLine' => $function['startLine'], - 'endLine' => $function['endLine'], - 'executableLines' => 0, - 'executedLines' => 0, - 'executableBranches' => 0, - 'executedBranches' => 0, - 'executablePaths' => 0, - 'executedPaths' => 0, - 'ccn' => $function['ccn'], - 'coverage' => 0, - 'crap' => 0, - 'link' => $link . $function['startLine'], - ]; - - foreach (range($function['startLine'], $function['endLine']) as $lineNumber) { - $this->codeUnitsByLine[$lineNumber] = [&$this->functions[$functionName]]; - } - - if (isset($this->functionCoverageData[$functionName]['branches'])) { - $this->functions[$functionName]['executableBranches'] = count( - $this->functionCoverageData[$functionName]['branches'], - ); - - $this->functions[$functionName]['executedBranches'] = count( - array_filter( - $this->functionCoverageData[$functionName]['branches'], - static function (array $branch) - { - return (bool) $branch['hit']; - }, - ), - ); - } - - if (isset($this->functionCoverageData[$functionName]['paths'])) { - $this->functions[$functionName]['executablePaths'] = count( - $this->functionCoverageData[$functionName]['paths'], - ); - - $this->functions[$functionName]['executedPaths'] = count( - array_filter( - $this->functionCoverageData[$functionName]['paths'], - static function (array $path) - { - return (bool) $path['hit']; - }, - ), - ); - } - - $this->numExecutableBranches += $this->functions[$functionName]['executableBranches']; - $this->numExecutedBranches += $this->functions[$functionName]['executedBranches']; - $this->numExecutablePaths += $this->functions[$functionName]['executablePaths']; - $this->numExecutedPaths += $this->functions[$functionName]['executedPaths']; - } - } - - /** - * @psalm-param CodeUnitMethodType $method - * - * @psalm-return ProcessedMethodType - */ - private function newMethod(string $className, string $methodName, array $method, string $link): array - { - $methodData = [ - 'methodName' => $methodName, - 'visibility' => $method['visibility'], - 'signature' => $method['signature'], - 'startLine' => $method['startLine'], - 'endLine' => $method['endLine'], - 'executableLines' => 0, - 'executedLines' => 0, - 'executableBranches' => 0, - 'executedBranches' => 0, - 'executablePaths' => 0, - 'executedPaths' => 0, - 'ccn' => $method['ccn'], - 'coverage' => 0, - 'crap' => 0, - 'link' => $link . $method['startLine'], - ]; - - $key = $className . '->' . $methodName; - - if (isset($this->functionCoverageData[$key]['branches'])) { - $methodData['executableBranches'] = count( - $this->functionCoverageData[$key]['branches'], - ); - - $methodData['executedBranches'] = count( - array_filter( - $this->functionCoverageData[$key]['branches'], - static function (array $branch) - { - return (bool) $branch['hit']; - }, - ), - ); - } - - if (isset($this->functionCoverageData[$key]['paths'])) { - $methodData['executablePaths'] = count( - $this->functionCoverageData[$key]['paths'], - ); - - $methodData['executedPaths'] = count( - array_filter( - $this->functionCoverageData[$key]['paths'], - static function (array $path) - { - return (bool) $path['hit']; - }, - ), - ); - } - - return $methodData; - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Clover.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Clover.php deleted file mode 100644 index 8a24236f..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Clover.php +++ /dev/null @@ -1,258 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Report; - -use function count; -use function dirname; -use function file_put_contents; -use function is_string; -use function ksort; -use function max; -use function range; -use function str_contains; -use function time; -use DOMDocument; -use SebastianBergmann\CodeCoverage\CodeCoverage; -use SebastianBergmann\CodeCoverage\Driver\WriteOperationFailedException; -use SebastianBergmann\CodeCoverage\Node\File; -use SebastianBergmann\CodeCoverage\Util\Filesystem; - -final class Clover -{ - /** - * @throws WriteOperationFailedException - */ - public function process(CodeCoverage $coverage, ?string $target = null, ?string $name = null): string - { - $time = (string) time(); - - $xmlDocument = new DOMDocument('1.0', 'UTF-8'); - $xmlDocument->formatOutput = true; - - $xmlCoverage = $xmlDocument->createElement('coverage'); - $xmlCoverage->setAttribute('generated', $time); - $xmlDocument->appendChild($xmlCoverage); - - $xmlProject = $xmlDocument->createElement('project'); - $xmlProject->setAttribute('timestamp', $time); - - if (is_string($name)) { - $xmlProject->setAttribute('name', $name); - } - - $xmlCoverage->appendChild($xmlProject); - - $packages = []; - $report = $coverage->getReport(); - - foreach ($report as $item) { - if (!$item instanceof File) { - continue; - } - - /* @var File $item */ - - $xmlFile = $xmlDocument->createElement('file'); - $xmlFile->setAttribute('name', $item->pathAsString()); - - $classes = $item->classesAndTraits(); - $coverageData = $item->lineCoverageData(); - $lines = []; - $namespace = 'global'; - - foreach ($classes as $className => $class) { - $classStatements = 0; - $coveredClassStatements = 0; - $coveredMethods = 0; - $classMethods = 0; - - foreach ($class['methods'] as $methodName => $method) { - if ($method['executableLines'] == 0) { - continue; - } - - $classMethods++; - $classStatements += $method['executableLines']; - $coveredClassStatements += $method['executedLines']; - - if ($method['coverage'] == 100) { - $coveredMethods++; - } - - $methodCount = 0; - - foreach (range($method['startLine'], $method['endLine']) as $line) { - if (isset($coverageData[$line])) { - $methodCount = max($methodCount, count($coverageData[$line])); - } - } - - $lines[$method['startLine']] = [ - 'ccn' => $method['ccn'], - 'count' => $methodCount, - 'crap' => $method['crap'], - 'type' => 'method', - 'visibility' => $method['visibility'], - 'name' => $methodName, - ]; - } - - if (!empty($class['package']['namespace'])) { - $namespace = $class['package']['namespace']; - } - - $xmlClass = $xmlDocument->createElement('class'); - $xmlClass->setAttribute('name', $className); - $xmlClass->setAttribute('namespace', $namespace); - - if (!empty($class['package']['fullPackage'])) { - $xmlClass->setAttribute( - 'fullPackage', - $class['package']['fullPackage'], - ); - } - - if (!empty($class['package']['category'])) { - $xmlClass->setAttribute( - 'category', - $class['package']['category'], - ); - } - - if (!empty($class['package']['package'])) { - $xmlClass->setAttribute( - 'package', - $class['package']['package'], - ); - } - - if (!empty($class['package']['subpackage'])) { - $xmlClass->setAttribute( - 'subpackage', - $class['package']['subpackage'], - ); - } - - $xmlFile->appendChild($xmlClass); - - $xmlMetrics = $xmlDocument->createElement('metrics'); - $xmlMetrics->setAttribute('complexity', (string) $class['ccn']); - $xmlMetrics->setAttribute('methods', (string) $classMethods); - $xmlMetrics->setAttribute('coveredmethods', (string) $coveredMethods); - $xmlMetrics->setAttribute('conditionals', (string) $class['executableBranches']); - $xmlMetrics->setAttribute('coveredconditionals', (string) $class['executedBranches']); - $xmlMetrics->setAttribute('statements', (string) $classStatements); - $xmlMetrics->setAttribute('coveredstatements', (string) $coveredClassStatements); - $xmlMetrics->setAttribute('elements', (string) ($classMethods + $classStatements + $class['executableBranches'])); - $xmlMetrics->setAttribute('coveredelements', (string) ($coveredMethods + $coveredClassStatements + $class['executedBranches'])); - $xmlClass->appendChild($xmlMetrics); - } - - foreach ($coverageData as $line => $data) { - if ($data === null || isset($lines[$line])) { - continue; - } - - $lines[$line] = [ - 'count' => count($data), 'type' => 'stmt', - ]; - } - - ksort($lines); - - foreach ($lines as $line => $data) { - $xmlLine = $xmlDocument->createElement('line'); - $xmlLine->setAttribute('num', (string) $line); - $xmlLine->setAttribute('type', $data['type']); - - if (isset($data['name'])) { - $xmlLine->setAttribute('name', $data['name']); - } - - if (isset($data['visibility'])) { - $xmlLine->setAttribute('visibility', $data['visibility']); - } - - if (isset($data['ccn'])) { - $xmlLine->setAttribute('complexity', (string) $data['ccn']); - } - - if (isset($data['crap'])) { - $xmlLine->setAttribute('crap', (string) $data['crap']); - } - - $xmlLine->setAttribute('count', (string) $data['count']); - $xmlFile->appendChild($xmlLine); - } - - $linesOfCode = $item->linesOfCode(); - - $xmlMetrics = $xmlDocument->createElement('metrics'); - $xmlMetrics->setAttribute('loc', (string) $linesOfCode['linesOfCode']); - $xmlMetrics->setAttribute('ncloc', (string) $linesOfCode['nonCommentLinesOfCode']); - $xmlMetrics->setAttribute('classes', (string) $item->numberOfClassesAndTraits()); - $xmlMetrics->setAttribute('methods', (string) $item->numberOfMethods()); - $xmlMetrics->setAttribute('coveredmethods', (string) $item->numberOfTestedMethods()); - $xmlMetrics->setAttribute('conditionals', (string) $item->numberOfExecutableBranches()); - $xmlMetrics->setAttribute('coveredconditionals', (string) $item->numberOfExecutedBranches()); - $xmlMetrics->setAttribute('statements', (string) $item->numberOfExecutableLines()); - $xmlMetrics->setAttribute('coveredstatements', (string) $item->numberOfExecutedLines()); - $xmlMetrics->setAttribute('elements', (string) ($item->numberOfMethods() + $item->numberOfExecutableLines() + $item->numberOfExecutableBranches())); - $xmlMetrics->setAttribute('coveredelements', (string) ($item->numberOfTestedMethods() + $item->numberOfExecutedLines() + $item->numberOfExecutedBranches())); - $xmlFile->appendChild($xmlMetrics); - - if ($namespace === 'global') { - $xmlProject->appendChild($xmlFile); - } else { - if (!isset($packages[$namespace])) { - $packages[$namespace] = $xmlDocument->createElement( - 'package', - ); - - $packages[$namespace]->setAttribute('name', $namespace); - $xmlProject->appendChild($packages[$namespace]); - } - - $packages[$namespace]->appendChild($xmlFile); - } - } - - $linesOfCode = $report->linesOfCode(); - - $xmlMetrics = $xmlDocument->createElement('metrics'); - $xmlMetrics->setAttribute('files', (string) count($report)); - $xmlMetrics->setAttribute('loc', (string) $linesOfCode['linesOfCode']); - $xmlMetrics->setAttribute('ncloc', (string) $linesOfCode['nonCommentLinesOfCode']); - $xmlMetrics->setAttribute('classes', (string) $report->numberOfClassesAndTraits()); - $xmlMetrics->setAttribute('methods', (string) $report->numberOfMethods()); - $xmlMetrics->setAttribute('coveredmethods', (string) $report->numberOfTestedMethods()); - $xmlMetrics->setAttribute('conditionals', (string) $report->numberOfExecutableBranches()); - $xmlMetrics->setAttribute('coveredconditionals', (string) $report->numberOfExecutedBranches()); - $xmlMetrics->setAttribute('statements', (string) $report->numberOfExecutableLines()); - $xmlMetrics->setAttribute('coveredstatements', (string) $report->numberOfExecutedLines()); - $xmlMetrics->setAttribute('elements', (string) ($report->numberOfMethods() + $report->numberOfExecutableLines() + $report->numberOfExecutableBranches())); - $xmlMetrics->setAttribute('coveredelements', (string) ($report->numberOfTestedMethods() + $report->numberOfExecutedLines() + $report->numberOfExecutedBranches())); - $xmlProject->appendChild($xmlMetrics); - - $buffer = $xmlDocument->saveXML(); - - if ($target !== null) { - if (!str_contains($target, '://')) { - Filesystem::createDirectory(dirname($target)); - } - - if (@file_put_contents($target, $buffer) === false) { - throw new WriteOperationFailedException($target); - } - } - - return $buffer; - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Cobertura.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Cobertura.php deleted file mode 100644 index 7ff5582d..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Cobertura.php +++ /dev/null @@ -1,309 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Report; - -use function basename; -use function count; -use function dirname; -use function file_put_contents; -use function preg_match; -use function range; -use function str_contains; -use function str_replace; -use function time; -use DOMImplementation; -use SebastianBergmann\CodeCoverage\CodeCoverage; -use SebastianBergmann\CodeCoverage\Driver\WriteOperationFailedException; -use SebastianBergmann\CodeCoverage\Node\File; -use SebastianBergmann\CodeCoverage\Util\Filesystem; - -final class Cobertura -{ - /** - * @throws WriteOperationFailedException - */ - public function process(CodeCoverage $coverage, ?string $target = null): string - { - $time = (string) time(); - - $report = $coverage->getReport(); - - $implementation = new DOMImplementation; - - $documentType = $implementation->createDocumentType( - 'coverage', - '', - 'http://cobertura.sourceforge.net/xml/coverage-04.dtd', - ); - - $document = $implementation->createDocument('', '', $documentType); - $document->xmlVersion = '1.0'; - $document->encoding = 'UTF-8'; - $document->formatOutput = true; - - $coverageElement = $document->createElement('coverage'); - - $linesValid = $report->numberOfExecutableLines(); - $linesCovered = $report->numberOfExecutedLines(); - $lineRate = $linesValid === 0 ? 0 : ($linesCovered / $linesValid); - $coverageElement->setAttribute('line-rate', (string) $lineRate); - - $branchesValid = $report->numberOfExecutableBranches(); - $branchesCovered = $report->numberOfExecutedBranches(); - $branchRate = $branchesValid === 0 ? 0 : ($branchesCovered / $branchesValid); - $coverageElement->setAttribute('branch-rate', (string) $branchRate); - - $coverageElement->setAttribute('lines-covered', (string) $report->numberOfExecutedLines()); - $coverageElement->setAttribute('lines-valid', (string) $report->numberOfExecutableLines()); - $coverageElement->setAttribute('branches-covered', (string) $report->numberOfExecutedBranches()); - $coverageElement->setAttribute('branches-valid', (string) $report->numberOfExecutableBranches()); - $coverageElement->setAttribute('complexity', ''); - $coverageElement->setAttribute('version', '0.4'); - $coverageElement->setAttribute('timestamp', $time); - - $document->appendChild($coverageElement); - - $sourcesElement = $document->createElement('sources'); - $coverageElement->appendChild($sourcesElement); - - $sourceElement = $document->createElement('source', $report->pathAsString()); - $sourcesElement->appendChild($sourceElement); - - $packagesElement = $document->createElement('packages'); - $coverageElement->appendChild($packagesElement); - - $complexity = 0; - - foreach ($report as $item) { - if (!$item instanceof File) { - continue; - } - - $packageElement = $document->createElement('package'); - $packageComplexity = 0; - - $packageElement->setAttribute('name', str_replace($report->pathAsString() . DIRECTORY_SEPARATOR, '', $item->pathAsString())); - - $linesValid = $item->numberOfExecutableLines(); - $linesCovered = $item->numberOfExecutedLines(); - $lineRate = $linesValid === 0 ? 0 : ($linesCovered / $linesValid); - - $packageElement->setAttribute('line-rate', (string) $lineRate); - - $branchesValid = $item->numberOfExecutableBranches(); - $branchesCovered = $item->numberOfExecutedBranches(); - $branchRate = $branchesValid === 0 ? 0 : ($branchesCovered / $branchesValid); - - $packageElement->setAttribute('branch-rate', (string) $branchRate); - - $packageElement->setAttribute('complexity', ''); - $packagesElement->appendChild($packageElement); - - $classesElement = $document->createElement('classes'); - - $packageElement->appendChild($classesElement); - - $classes = $item->classesAndTraits(); - $coverageData = $item->lineCoverageData(); - - foreach ($classes as $className => $class) { - $complexity += $class['ccn']; - $packageComplexity += $class['ccn']; - - if (!empty($class['package']['namespace'])) { - $className = $class['package']['namespace'] . '\\' . $className; - } - - $linesValid = $class['executableLines']; - $linesCovered = $class['executedLines']; - $lineRate = $linesValid === 0 ? 0 : ($linesCovered / $linesValid); - - $branchesValid = $class['executableBranches']; - $branchesCovered = $class['executedBranches']; - $branchRate = $branchesValid === 0 ? 0 : ($branchesCovered / $branchesValid); - - $classElement = $document->createElement('class'); - - $classElement->setAttribute('name', $className); - $classElement->setAttribute('filename', str_replace($report->pathAsString() . DIRECTORY_SEPARATOR, '', $item->pathAsString())); - $classElement->setAttribute('line-rate', (string) $lineRate); - $classElement->setAttribute('branch-rate', (string) $branchRate); - $classElement->setAttribute('complexity', (string) $class['ccn']); - - $classesElement->appendChild($classElement); - - $methodsElement = $document->createElement('methods'); - - $classElement->appendChild($methodsElement); - - $classLinesElement = $document->createElement('lines'); - - $classElement->appendChild($classLinesElement); - - foreach ($class['methods'] as $methodName => $method) { - if ($method['executableLines'] === 0) { - continue; - } - - preg_match("/\((.*?)\)/", $method['signature'], $signature); - - $linesValid = $method['executableLines']; - $linesCovered = $method['executedLines']; - $lineRate = $linesValid === 0 ? 0 : ($linesCovered / $linesValid); - - $branchesValid = $method['executableBranches']; - $branchesCovered = $method['executedBranches']; - $branchRate = $branchesValid === 0 ? 0 : ($branchesCovered / $branchesValid); - - $methodElement = $document->createElement('method'); - - $methodElement->setAttribute('name', $methodName); - $methodElement->setAttribute('signature', $signature[1]); - $methodElement->setAttribute('line-rate', (string) $lineRate); - $methodElement->setAttribute('branch-rate', (string) $branchRate); - $methodElement->setAttribute('complexity', (string) $method['ccn']); - - $methodLinesElement = $document->createElement('lines'); - - $methodElement->appendChild($methodLinesElement); - - foreach (range($method['startLine'], $method['endLine']) as $line) { - if (!isset($coverageData[$line])) { - continue; - } - $methodLineElement = $document->createElement('line'); - - $methodLineElement->setAttribute('number', (string) $line); - $methodLineElement->setAttribute('hits', (string) count($coverageData[$line])); - - $methodLinesElement->appendChild($methodLineElement); - - $classLineElement = $methodLineElement->cloneNode(); - - $classLinesElement->appendChild($classLineElement); - } - - $methodsElement->appendChild($methodElement); - } - } - - if ($item->numberOfFunctions() === 0) { - $packageElement->setAttribute('complexity', (string) $packageComplexity); - - continue; - } - - $functionsComplexity = 0; - $functionsLinesValid = 0; - $functionsLinesCovered = 0; - $functionsBranchesValid = 0; - $functionsBranchesCovered = 0; - - $classElement = $document->createElement('class'); - $classElement->setAttribute('name', basename($item->pathAsString())); - $classElement->setAttribute('filename', str_replace($report->pathAsString() . DIRECTORY_SEPARATOR, '', $item->pathAsString())); - - $methodsElement = $document->createElement('methods'); - - $classElement->appendChild($methodsElement); - - $classLinesElement = $document->createElement('lines'); - - $classElement->appendChild($classLinesElement); - - $functions = $item->functions(); - - foreach ($functions as $functionName => $function) { - if ($function['executableLines'] === 0) { - continue; - } - - $complexity += $function['ccn']; - $packageComplexity += $function['ccn']; - $functionsComplexity += $function['ccn']; - - $linesValid = $function['executableLines']; - $linesCovered = $function['executedLines']; - $lineRate = $linesValid === 0 ? 0 : ($linesCovered / $linesValid); - - $functionsLinesValid += $linesValid; - $functionsLinesCovered += $linesCovered; - - $branchesValid = $function['executableBranches']; - $branchesCovered = $function['executedBranches']; - $branchRate = $branchesValid === 0 ? 0 : ($branchesCovered / $branchesValid); - - $functionsBranchesValid += $branchesValid; - $functionsBranchesCovered += $branchesValid; - - $methodElement = $document->createElement('method'); - - $methodElement->setAttribute('name', $functionName); - $methodElement->setAttribute('signature', $function['signature']); - $methodElement->setAttribute('line-rate', (string) $lineRate); - $methodElement->setAttribute('branch-rate', (string) $branchRate); - $methodElement->setAttribute('complexity', (string) $function['ccn']); - - $methodLinesElement = $document->createElement('lines'); - - $methodElement->appendChild($methodLinesElement); - - foreach (range($function['startLine'], $function['endLine']) as $line) { - if (!isset($coverageData[$line])) { - continue; - } - $methodLineElement = $document->createElement('line'); - - $methodLineElement->setAttribute('number', (string) $line); - $methodLineElement->setAttribute('hits', (string) count($coverageData[$line])); - - $methodLinesElement->appendChild($methodLineElement); - - $classLineElement = $methodLineElement->cloneNode(); - - $classLinesElement->appendChild($classLineElement); - } - - $methodsElement->appendChild($methodElement); - } - - $packageElement->setAttribute('complexity', (string) $packageComplexity); - - if ($functionsLinesValid === 0) { - continue; - } - - $lineRate = $functionsLinesCovered / $functionsLinesValid; - $branchRate = $functionsBranchesValid === 0 ? 0 : ($functionsBranchesCovered / $functionsBranchesValid); - - $classElement->setAttribute('line-rate', (string) $lineRate); - $classElement->setAttribute('branch-rate', (string) $branchRate); - $classElement->setAttribute('complexity', (string) $functionsComplexity); - - $classesElement->appendChild($classElement); - } - - $coverageElement->setAttribute('complexity', (string) $complexity); - - $buffer = $document->saveXML(); - - if ($target !== null) { - if (!str_contains($target, '://')) { - Filesystem::createDirectory(dirname($target)); - } - - if (@file_put_contents($target, $buffer) === false) { - throw new WriteOperationFailedException($target); - } - } - - return $buffer; - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Crap4j.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Crap4j.php deleted file mode 100644 index cb1bde60..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Crap4j.php +++ /dev/null @@ -1,153 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Report; - -use function date; -use function dirname; -use function file_put_contents; -use function htmlspecialchars; -use function is_string; -use function round; -use function str_contains; -use DOMDocument; -use SebastianBergmann\CodeCoverage\CodeCoverage; -use SebastianBergmann\CodeCoverage\Driver\WriteOperationFailedException; -use SebastianBergmann\CodeCoverage\Node\File; -use SebastianBergmann\CodeCoverage\Util\Filesystem; - -final class Crap4j -{ - private readonly int $threshold; - - public function __construct(int $threshold = 30) - { - $this->threshold = $threshold; - } - - /** - * @throws WriteOperationFailedException - */ - public function process(CodeCoverage $coverage, ?string $target = null, ?string $name = null): string - { - $document = new DOMDocument('1.0', 'UTF-8'); - $document->formatOutput = true; - - $root = $document->createElement('crap_result'); - $document->appendChild($root); - - $project = $document->createElement('project', is_string($name) ? $name : ''); - $root->appendChild($project); - $root->appendChild($document->createElement('timestamp', date('Y-m-d H:i:s'))); - - $stats = $document->createElement('stats'); - $methodsNode = $document->createElement('methods'); - - $report = $coverage->getReport(); - unset($coverage); - - $fullMethodCount = 0; - $fullCrapMethodCount = 0; - $fullCrapLoad = 0; - $fullCrap = 0; - - foreach ($report as $item) { - $namespace = 'global'; - - if (!$item instanceof File) { - continue; - } - - $file = $document->createElement('file'); - $file->setAttribute('name', $item->pathAsString()); - - $classes = $item->classesAndTraits(); - - foreach ($classes as $className => $class) { - foreach ($class['methods'] as $methodName => $method) { - $crapLoad = $this->crapLoad((float) $method['crap'], $method['ccn'], $method['coverage']); - - $fullCrap += $method['crap']; - $fullCrapLoad += $crapLoad; - $fullMethodCount++; - - if ($method['crap'] >= $this->threshold) { - $fullCrapMethodCount++; - } - - $methodNode = $document->createElement('method'); - - if (!empty($class['namespace'])) { - $namespace = $class['namespace']; - } - - $methodNode->appendChild($document->createElement('package', $namespace)); - $methodNode->appendChild($document->createElement('className', $className)); - $methodNode->appendChild($document->createElement('methodName', $methodName)); - $methodNode->appendChild($document->createElement('methodSignature', htmlspecialchars($method['signature']))); - $methodNode->appendChild($document->createElement('fullMethod', htmlspecialchars($method['signature']))); - $methodNode->appendChild($document->createElement('crap', (string) $this->roundValue((float) $method['crap']))); - $methodNode->appendChild($document->createElement('complexity', (string) $method['ccn'])); - $methodNode->appendChild($document->createElement('coverage', (string) $this->roundValue($method['coverage']))); - $methodNode->appendChild($document->createElement('crapLoad', (string) round($crapLoad))); - - $methodsNode->appendChild($methodNode); - } - } - } - - $stats->appendChild($document->createElement('name', 'Method Crap Stats')); - $stats->appendChild($document->createElement('methodCount', (string) $fullMethodCount)); - $stats->appendChild($document->createElement('crapMethodCount', (string) $fullCrapMethodCount)); - $stats->appendChild($document->createElement('crapLoad', (string) round($fullCrapLoad))); - $stats->appendChild($document->createElement('totalCrap', (string) $fullCrap)); - - $crapMethodPercent = 0; - - if ($fullMethodCount > 0) { - $crapMethodPercent = $this->roundValue((100 * $fullCrapMethodCount) / $fullMethodCount); - } - - $stats->appendChild($document->createElement('crapMethodPercent', (string) $crapMethodPercent)); - - $root->appendChild($stats); - $root->appendChild($methodsNode); - - $buffer = $document->saveXML(); - - if ($target !== null) { - if (!str_contains($target, '://')) { - Filesystem::createDirectory(dirname($target)); - } - - if (@file_put_contents($target, $buffer) === false) { - throw new WriteOperationFailedException($target); - } - } - - return $buffer; - } - - private function crapLoad(float $crapValue, int $cyclomaticComplexity, float $coveragePercent): float - { - $crapLoad = 0; - - if ($crapValue >= $this->threshold) { - $crapLoad += $cyclomaticComplexity * (1.0 - $coveragePercent / 100); - $crapLoad += $cyclomaticComplexity / $this->threshold; - } - - return $crapLoad; - } - - private function roundValue(float $value): float - { - return round($value, 2); - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Html/CustomCssFile.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Html/CustomCssFile.php deleted file mode 100644 index 70a7230c..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Html/CustomCssFile.php +++ /dev/null @@ -1,50 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Report\Html; - -use function is_file; -use SebastianBergmann\CodeCoverage\InvalidArgumentException; - -/** - * @psalm-immutable - */ -final class CustomCssFile -{ - private readonly string $path; - - public static function default(): self - { - return new self(__DIR__ . '/Renderer/Template/css/custom.css'); - } - - /** - * @throws InvalidArgumentException - */ - public static function from(string $path): self - { - if (!is_file($path)) { - throw new InvalidArgumentException( - '$path does not exist', - ); - } - - return new self($path); - } - - private function __construct(string $path) - { - $this->path = $path; - } - - public function path(): string - { - return $this->path; - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Html/Facade.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Html/Facade.php deleted file mode 100644 index b376eb5d..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Html/Facade.php +++ /dev/null @@ -1,153 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Report\Html; - -use const DIRECTORY_SEPARATOR; -use function copy; -use function date; -use function dirname; -use function str_ends_with; -use SebastianBergmann\CodeCoverage\CodeCoverage; -use SebastianBergmann\CodeCoverage\FileCouldNotBeWrittenException; -use SebastianBergmann\CodeCoverage\Node\Directory as DirectoryNode; -use SebastianBergmann\CodeCoverage\Report\Thresholds; -use SebastianBergmann\CodeCoverage\Util\Filesystem; -use SebastianBergmann\Template\Exception; -use SebastianBergmann\Template\Template; - -final class Facade -{ - private readonly string $templatePath; - private readonly string $generator; - private readonly Colors $colors; - private readonly Thresholds $thresholds; - private readonly CustomCssFile $customCssFile; - - public function __construct(string $generator = '', ?Colors $colors = null, ?Thresholds $thresholds = null, ?CustomCssFile $customCssFile = null) - { - $this->generator = $generator; - $this->colors = $colors ?? Colors::default(); - $this->thresholds = $thresholds ?? Thresholds::default(); - $this->customCssFile = $customCssFile ?? CustomCssFile::default(); - $this->templatePath = __DIR__ . '/Renderer/Template/'; - } - - public function process(CodeCoverage $coverage, string $target): void - { - $target = $this->directory($target); - $report = $coverage->getReport(); - $date = date('D M j G:i:s T Y'); - - $dashboard = new Dashboard( - $this->templatePath, - $this->generator, - $date, - $this->thresholds, - $coverage->collectsBranchAndPathCoverage(), - ); - - $directory = new Directory( - $this->templatePath, - $this->generator, - $date, - $this->thresholds, - $coverage->collectsBranchAndPathCoverage(), - ); - - $file = new File( - $this->templatePath, - $this->generator, - $date, - $this->thresholds, - $coverage->collectsBranchAndPathCoverage(), - ); - - $directory->render($report, $target . 'index.html'); - $dashboard->render($report, $target . 'dashboard.html'); - - foreach ($report as $node) { - $id = $node->id(); - - if ($node instanceof DirectoryNode) { - Filesystem::createDirectory($target . $id); - - $directory->render($node, $target . $id . '/index.html'); - $dashboard->render($node, $target . $id . '/dashboard.html'); - } else { - $dir = dirname($target . $id); - - Filesystem::createDirectory($dir); - - $file->render($node, $target . $id); - } - } - - $this->copyFiles($target); - $this->renderCss($target); - } - - private function copyFiles(string $target): void - { - $dir = $this->directory($target . '_css'); - - copy($this->templatePath . 'css/bootstrap.min.css', $dir . 'bootstrap.min.css'); - copy($this->templatePath . 'css/nv.d3.min.css', $dir . 'nv.d3.min.css'); - copy($this->customCssFile->path(), $dir . 'custom.css'); - copy($this->templatePath . 'css/octicons.css', $dir . 'octicons.css'); - - $dir = $this->directory($target . '_icons'); - copy($this->templatePath . 'icons/file-code.svg', $dir . 'file-code.svg'); - copy($this->templatePath . 'icons/file-directory.svg', $dir . 'file-directory.svg'); - - $dir = $this->directory($target . '_js'); - copy($this->templatePath . 'js/bootstrap.min.js', $dir . 'bootstrap.min.js'); - copy($this->templatePath . 'js/popper.min.js', $dir . 'popper.min.js'); - copy($this->templatePath . 'js/d3.min.js', $dir . 'd3.min.js'); - copy($this->templatePath . 'js/jquery.min.js', $dir . 'jquery.min.js'); - copy($this->templatePath . 'js/nv.d3.min.js', $dir . 'nv.d3.min.js'); - copy($this->templatePath . 'js/file.js', $dir . 'file.js'); - } - - private function renderCss(string $target): void - { - $template = new Template($this->templatePath . 'css/style.css', '{{', '}}'); - - $template->setVar( - [ - 'success-low' => $this->colors->successLow(), - 'success-medium' => $this->colors->successMedium(), - 'success-high' => $this->colors->successHigh(), - 'warning' => $this->colors->warning(), - 'danger' => $this->colors->danger(), - ], - ); - - try { - $template->renderTo($this->directory($target . '_css') . 'style.css'); - } catch (Exception $e) { - throw new FileCouldNotBeWrittenException( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - } - - private function directory(string $directory): string - { - if (!str_ends_with($directory, DIRECTORY_SEPARATOR)) { - $directory .= DIRECTORY_SEPARATOR; - } - - Filesystem::createDirectory($directory); - - return $directory; - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer.php deleted file mode 100644 index 6ce7b8fe..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer.php +++ /dev/null @@ -1,286 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Report\Html; - -use function array_pop; -use function count; -use function sprintf; -use function str_repeat; -use function substr_count; -use SebastianBergmann\CodeCoverage\Node\AbstractNode; -use SebastianBergmann\CodeCoverage\Node\Directory as DirectoryNode; -use SebastianBergmann\CodeCoverage\Node\File as FileNode; -use SebastianBergmann\CodeCoverage\Report\Thresholds; -use SebastianBergmann\CodeCoverage\Version; -use SebastianBergmann\Environment\Runtime; -use SebastianBergmann\Template\Template; - -/** - * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage - */ -abstract class Renderer -{ - protected string $templatePath; - protected string $generator; - protected string $date; - protected Thresholds $thresholds; - protected bool $hasBranchCoverage; - protected string $version; - - public function __construct(string $templatePath, string $generator, string $date, Thresholds $thresholds, bool $hasBranchCoverage) - { - $this->templatePath = $templatePath; - $this->generator = $generator; - $this->date = $date; - $this->thresholds = $thresholds; - $this->version = Version::id(); - $this->hasBranchCoverage = $hasBranchCoverage; - } - - protected function renderItemTemplate(Template $template, array $data): string - { - $numSeparator = ' / '; - - if (isset($data['numClasses']) && $data['numClasses'] > 0) { - $classesLevel = $this->colorLevel($data['testedClassesPercent']); - - $classesNumber = $data['numTestedClasses'] . $numSeparator . - $data['numClasses']; - - $classesBar = $this->coverageBar( - $data['testedClassesPercent'], - ); - } else { - $classesLevel = ''; - $classesNumber = '0' . $numSeparator . '0'; - $classesBar = ''; - $data['testedClassesPercentAsString'] = 'n/a'; - } - - if ($data['numMethods'] > 0) { - $methodsLevel = $this->colorLevel($data['testedMethodsPercent']); - - $methodsNumber = $data['numTestedMethods'] . $numSeparator . - $data['numMethods']; - - $methodsBar = $this->coverageBar( - $data['testedMethodsPercent'], - ); - } else { - $methodsLevel = ''; - $methodsNumber = '0' . $numSeparator . '0'; - $methodsBar = ''; - $data['testedMethodsPercentAsString'] = 'n/a'; - } - - if ($data['numExecutableLines'] > 0) { - $linesLevel = $this->colorLevel($data['linesExecutedPercent']); - - $linesNumber = $data['numExecutedLines'] . $numSeparator . - $data['numExecutableLines']; - - $linesBar = $this->coverageBar( - $data['linesExecutedPercent'], - ); - } else { - $linesLevel = ''; - $linesNumber = '0' . $numSeparator . '0'; - $linesBar = ''; - $data['linesExecutedPercentAsString'] = 'n/a'; - } - - if ($data['numExecutablePaths'] > 0) { - $pathsLevel = $this->colorLevel($data['pathsExecutedPercent']); - - $pathsNumber = $data['numExecutedPaths'] . $numSeparator . - $data['numExecutablePaths']; - - $pathsBar = $this->coverageBar( - $data['pathsExecutedPercent'], - ); - } else { - $pathsLevel = ''; - $pathsNumber = '0' . $numSeparator . '0'; - $pathsBar = ''; - $data['pathsExecutedPercentAsString'] = 'n/a'; - } - - if ($data['numExecutableBranches'] > 0) { - $branchesLevel = $this->colorLevel($data['branchesExecutedPercent']); - - $branchesNumber = $data['numExecutedBranches'] . $numSeparator . - $data['numExecutableBranches']; - - $branchesBar = $this->coverageBar( - $data['branchesExecutedPercent'], - ); - } else { - $branchesLevel = ''; - $branchesNumber = '0' . $numSeparator . '0'; - $branchesBar = ''; - $data['branchesExecutedPercentAsString'] = 'n/a'; - } - - $template->setVar( - [ - 'icon' => $data['icon'] ?? '', - 'crap' => $data['crap'] ?? '', - 'name' => $data['name'], - 'lines_bar' => $linesBar, - 'lines_executed_percent' => $data['linesExecutedPercentAsString'], - 'lines_level' => $linesLevel, - 'lines_number' => $linesNumber, - 'paths_bar' => $pathsBar, - 'paths_executed_percent' => $data['pathsExecutedPercentAsString'], - 'paths_level' => $pathsLevel, - 'paths_number' => $pathsNumber, - 'branches_bar' => $branchesBar, - 'branches_executed_percent' => $data['branchesExecutedPercentAsString'], - 'branches_level' => $branchesLevel, - 'branches_number' => $branchesNumber, - 'methods_bar' => $methodsBar, - 'methods_tested_percent' => $data['testedMethodsPercentAsString'], - 'methods_level' => $methodsLevel, - 'methods_number' => $methodsNumber, - 'classes_bar' => $classesBar, - 'classes_tested_percent' => $data['testedClassesPercentAsString'] ?? '', - 'classes_level' => $classesLevel, - 'classes_number' => $classesNumber, - ], - ); - - return $template->render(); - } - - protected function setCommonTemplateVariables(Template $template, AbstractNode $node): void - { - $template->setVar( - [ - 'id' => $node->id(), - 'full_path' => $node->pathAsString(), - 'path_to_root' => $this->pathToRoot($node), - 'breadcrumbs' => $this->breadcrumbs($node), - 'date' => $this->date, - 'version' => $this->version, - 'runtime' => $this->runtimeString(), - 'generator' => $this->generator, - 'low_upper_bound' => $this->thresholds->lowUpperBound(), - 'high_lower_bound' => $this->thresholds->highLowerBound(), - ], - ); - } - - protected function breadcrumbs(AbstractNode $node): string - { - $breadcrumbs = ''; - $path = $node->pathAsArray(); - $pathToRoot = []; - $max = count($path); - - if ($node instanceof FileNode) { - $max--; - } - - for ($i = 0; $i < $max; $i++) { - $pathToRoot[] = str_repeat('../', $i); - } - - foreach ($path as $step) { - if ($step !== $node) { - $breadcrumbs .= $this->inactiveBreadcrumb( - $step, - array_pop($pathToRoot), - ); - } else { - $breadcrumbs .= $this->activeBreadcrumb($step); - } - } - - return $breadcrumbs; - } - - protected function activeBreadcrumb(AbstractNode $node): string - { - $buffer = sprintf( - ' ' . "\n", - $node->name(), - ); - - if ($node instanceof DirectoryNode) { - $buffer .= ' ' . "\n"; - } - - return $buffer; - } - - protected function inactiveBreadcrumb(AbstractNode $node, string $pathToRoot): string - { - return sprintf( - ' ' . "\n", - $pathToRoot, - $node->name(), - ); - } - - protected function pathToRoot(AbstractNode $node): string - { - $id = $node->id(); - $depth = substr_count($id, '/'); - - if ($id !== 'index' && - $node instanceof DirectoryNode) { - $depth++; - } - - return str_repeat('../', $depth); - } - - protected function coverageBar(float $percent): string - { - $level = $this->colorLevel($percent); - - $templateName = $this->templatePath . ($this->hasBranchCoverage ? 'coverage_bar_branch.html' : 'coverage_bar.html'); - $template = new Template( - $templateName, - '{{', - '}}', - ); - - $template->setVar(['level' => $level, 'percent' => sprintf('%.2F', $percent)]); - - return $template->render(); - } - - protected function colorLevel(float $percent): string - { - if ($percent <= $this->thresholds->lowUpperBound()) { - return 'danger'; - } - - if ($percent > $this->thresholds->lowUpperBound() && - $percent < $this->thresholds->highLowerBound()) { - return 'warning'; - } - - return 'success'; - } - - private function runtimeString(): string - { - $runtime = new Runtime; - - return sprintf( - '%s %s', - $runtime->getVendorUrl(), - $runtime->getName(), - $runtime->getVersion(), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php deleted file mode 100644 index cf21cf9d..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php +++ /dev/null @@ -1,298 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Report\Html; - -use function array_values; -use function arsort; -use function asort; -use function count; -use function explode; -use function floor; -use function json_encode; -use function sprintf; -use function str_replace; -use SebastianBergmann\CodeCoverage\FileCouldNotBeWrittenException; -use SebastianBergmann\CodeCoverage\Node\AbstractNode; -use SebastianBergmann\CodeCoverage\Node\Directory as DirectoryNode; -use SebastianBergmann\Template\Exception; -use SebastianBergmann\Template\Template; - -/** - * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage - */ -final class Dashboard extends Renderer -{ - public function render(DirectoryNode $node, string $file): void - { - $classes = $node->classesAndTraits(); - $templateName = $this->templatePath . ($this->hasBranchCoverage ? 'dashboard_branch.html' : 'dashboard.html'); - $template = new Template( - $templateName, - '{{', - '}}', - ); - - $this->setCommonTemplateVariables($template, $node); - - $baseLink = $node->id() . '/'; - $complexity = $this->complexity($classes, $baseLink); - $coverageDistribution = $this->coverageDistribution($classes); - $insufficientCoverage = $this->insufficientCoverage($classes, $baseLink); - $projectRisks = $this->projectRisks($classes, $baseLink); - - $template->setVar( - [ - 'insufficient_coverage_classes' => $insufficientCoverage['class'], - 'insufficient_coverage_methods' => $insufficientCoverage['method'], - 'project_risks_classes' => $projectRisks['class'], - 'project_risks_methods' => $projectRisks['method'], - 'complexity_class' => $complexity['class'], - 'complexity_method' => $complexity['method'], - 'class_coverage_distribution' => $coverageDistribution['class'], - 'method_coverage_distribution' => $coverageDistribution['method'], - ], - ); - - try { - $template->renderTo($file); - } catch (Exception $e) { - throw new FileCouldNotBeWrittenException( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - } - - protected function activeBreadcrumb(AbstractNode $node): string - { - return sprintf( - ' ' . "\n" . - ' ' . "\n", - $node->name(), - ); - } - - /** - * Returns the data for the Class/Method Complexity charts. - */ - private function complexity(array $classes, string $baseLink): array - { - $result = ['class' => [], 'method' => []]; - - foreach ($classes as $className => $class) { - foreach ($class['methods'] as $methodName => $method) { - if ($className !== '*') { - $methodName = $className . '::' . $methodName; - } - - $result['method'][] = [ - $method['coverage'], - $method['ccn'], - sprintf( - '%s', - str_replace($baseLink, '', $method['link']), - $methodName, - ), - ]; - } - - $result['class'][] = [ - $class['coverage'], - $class['ccn'], - sprintf( - '%s', - str_replace($baseLink, '', $class['link']), - $className, - ), - ]; - } - - return [ - 'class' => json_encode($result['class']), - 'method' => json_encode($result['method']), - ]; - } - - /** - * Returns the data for the Class / Method Coverage Distribution chart. - */ - private function coverageDistribution(array $classes): array - { - $result = [ - 'class' => [ - '0%' => 0, - '0-10%' => 0, - '10-20%' => 0, - '20-30%' => 0, - '30-40%' => 0, - '40-50%' => 0, - '50-60%' => 0, - '60-70%' => 0, - '70-80%' => 0, - '80-90%' => 0, - '90-100%' => 0, - '100%' => 0, - ], - 'method' => [ - '0%' => 0, - '0-10%' => 0, - '10-20%' => 0, - '20-30%' => 0, - '30-40%' => 0, - '40-50%' => 0, - '50-60%' => 0, - '60-70%' => 0, - '70-80%' => 0, - '80-90%' => 0, - '90-100%' => 0, - '100%' => 0, - ], - ]; - - foreach ($classes as $class) { - foreach ($class['methods'] as $methodName => $method) { - if ($method['coverage'] === 0) { - $result['method']['0%']++; - } elseif ($method['coverage'] === 100) { - $result['method']['100%']++; - } else { - $key = floor($method['coverage'] / 10) * 10; - $key = $key . '-' . ($key + 10) . '%'; - $result['method'][$key]++; - } - } - - if ($class['coverage'] === 0) { - $result['class']['0%']++; - } elseif ($class['coverage'] === 100) { - $result['class']['100%']++; - } else { - $key = floor($class['coverage'] / 10) * 10; - $key = $key . '-' . ($key + 10) . '%'; - $result['class'][$key]++; - } - } - - return [ - 'class' => json_encode(array_values($result['class'])), - 'method' => json_encode(array_values($result['method'])), - ]; - } - - /** - * Returns the classes / methods with insufficient coverage. - */ - private function insufficientCoverage(array $classes, string $baseLink): array - { - $leastTestedClasses = []; - $leastTestedMethods = []; - $result = ['class' => '', 'method' => '']; - - foreach ($classes as $className => $class) { - foreach ($class['methods'] as $methodName => $method) { - if ($method['coverage'] < $this->thresholds->highLowerBound()) { - $key = $methodName; - - if ($className !== '*') { - $key = $className . '::' . $methodName; - } - - $leastTestedMethods[$key] = $method['coverage']; - } - } - - if ($class['coverage'] < $this->thresholds->highLowerBound()) { - $leastTestedClasses[$className] = $class['coverage']; - } - } - - asort($leastTestedClasses); - asort($leastTestedMethods); - - foreach ($leastTestedClasses as $className => $coverage) { - $result['class'] .= sprintf( - '
    ' . "\n", - str_replace($baseLink, '', $classes[$className]['link']), - $className, - $coverage, - ); - } - - foreach ($leastTestedMethods as $methodName => $coverage) { - [$class, $method] = explode('::', $methodName); - - $result['method'] .= sprintf( - ' ' . "\n", - str_replace($baseLink, '', $classes[$class]['methods'][$method]['link']), - $methodName, - $method, - $coverage, - ); - } - - return $result; - } - - /** - * Returns the project risks according to the CRAP index. - */ - private function projectRisks(array $classes, string $baseLink): array - { - $classRisks = []; - $methodRisks = []; - $result = ['class' => '', 'method' => '']; - - foreach ($classes as $className => $class) { - foreach ($class['methods'] as $methodName => $method) { - if ($method['coverage'] < $this->thresholds->highLowerBound() && $method['ccn'] > 1) { - $key = $methodName; - - if ($className !== '*') { - $key = $className . '::' . $methodName; - } - - $methodRisks[$key] = $method['crap']; - } - } - - if ($class['coverage'] < $this->thresholds->highLowerBound() && - $class['ccn'] > count($class['methods'])) { - $classRisks[$className] = $class['crap']; - } - } - - arsort($classRisks); - arsort($methodRisks); - - foreach ($classRisks as $className => $crap) { - $result['class'] .= sprintf( - ' ' . "\n", - str_replace($baseLink, '', $classes[$className]['link']), - $className, - $crap, - ); - } - - foreach ($methodRisks as $methodName => $crap) { - [$class, $method] = explode('::', $methodName); - - $result['method'] .= sprintf( - ' ' . "\n", - str_replace($baseLink, '', $classes[$class]['methods'][$method]['link']), - $methodName, - $method, - $crap, - ); - } - - return $result; - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php deleted file mode 100644 index 1d7334b3..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php +++ /dev/null @@ -1,123 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Report\Html; - -use function count; -use function sprintf; -use function str_repeat; -use SebastianBergmann\CodeCoverage\FileCouldNotBeWrittenException; -use SebastianBergmann\CodeCoverage\Node\AbstractNode as Node; -use SebastianBergmann\CodeCoverage\Node\Directory as DirectoryNode; -use SebastianBergmann\Template\Exception; -use SebastianBergmann\Template\Template; - -/** - * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage - */ -final class Directory extends Renderer -{ - public function render(DirectoryNode $node, string $file): void - { - $templateName = $this->templatePath . ($this->hasBranchCoverage ? 'directory_branch.html' : 'directory.html'); - $template = new Template($templateName, '{{', '}}'); - - $this->setCommonTemplateVariables($template, $node); - - $items = $this->renderItem($node, true); - - foreach ($node->directories() as $item) { - $items .= $this->renderItem($item); - } - - foreach ($node->files() as $item) { - $items .= $this->renderItem($item); - } - - $template->setVar( - [ - 'id' => $node->id(), - 'items' => $items, - ], - ); - - try { - $template->renderTo($file); - } catch (Exception $e) { - throw new FileCouldNotBeWrittenException( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - } - - private function renderItem(Node $node, bool $total = false): string - { - $data = [ - 'numClasses' => $node->numberOfClassesAndTraits(), - 'numTestedClasses' => $node->numberOfTestedClassesAndTraits(), - 'numMethods' => $node->numberOfFunctionsAndMethods(), - 'numTestedMethods' => $node->numberOfTestedFunctionsAndMethods(), - 'linesExecutedPercent' => $node->percentageOfExecutedLines()->asFloat(), - 'linesExecutedPercentAsString' => $node->percentageOfExecutedLines()->asString(), - 'numExecutedLines' => $node->numberOfExecutedLines(), - 'numExecutableLines' => $node->numberOfExecutableLines(), - 'branchesExecutedPercent' => $node->percentageOfExecutedBranches()->asFloat(), - 'branchesExecutedPercentAsString' => $node->percentageOfExecutedBranches()->asString(), - 'numExecutedBranches' => $node->numberOfExecutedBranches(), - 'numExecutableBranches' => $node->numberOfExecutableBranches(), - 'pathsExecutedPercent' => $node->percentageOfExecutedPaths()->asFloat(), - 'pathsExecutedPercentAsString' => $node->percentageOfExecutedPaths()->asString(), - 'numExecutedPaths' => $node->numberOfExecutedPaths(), - 'numExecutablePaths' => $node->numberOfExecutablePaths(), - 'testedMethodsPercent' => $node->percentageOfTestedFunctionsAndMethods()->asFloat(), - 'testedMethodsPercentAsString' => $node->percentageOfTestedFunctionsAndMethods()->asString(), - 'testedClassesPercent' => $node->percentageOfTestedClassesAndTraits()->asFloat(), - 'testedClassesPercentAsString' => $node->percentageOfTestedClassesAndTraits()->asString(), - ]; - - if ($total) { - $data['name'] = 'Total'; - } else { - $up = str_repeat('../', count($node->pathAsArray()) - 2); - $data['icon'] = sprintf('', $up); - - if ($node instanceof DirectoryNode) { - $data['name'] = sprintf( - '%s', - $node->name(), - $node->name(), - ); - $data['icon'] = sprintf('', $up); - } elseif ($this->hasBranchCoverage) { - $data['name'] = sprintf( - '%s [line] [branch] [path]', - $node->name(), - $node->name(), - $node->name(), - $node->name(), - ); - } else { - $data['name'] = sprintf( - '%s', - $node->name(), - $node->name(), - ); - } - } - - $templateName = $this->templatePath . ($this->hasBranchCoverage ? 'directory_item_branch.html' : 'directory_item.html'); - - return $this->renderItemTemplate( - new Template($templateName, '{{', '}}'), - $data, - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php deleted file mode 100644 index 005c1db3..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php +++ /dev/null @@ -1,1130 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Report\Html; - -use const ENT_COMPAT; -use const ENT_HTML401; -use const ENT_SUBSTITUTE; -use const T_ABSTRACT; -use const T_ARRAY; -use const T_AS; -use const T_BREAK; -use const T_CALLABLE; -use const T_CASE; -use const T_CATCH; -use const T_CLASS; -use const T_CLONE; -use const T_COMMENT; -use const T_CONST; -use const T_CONTINUE; -use const T_DECLARE; -use const T_DEFAULT; -use const T_DO; -use const T_DOC_COMMENT; -use const T_ECHO; -use const T_ELSE; -use const T_ELSEIF; -use const T_EMPTY; -use const T_ENDDECLARE; -use const T_ENDFOR; -use const T_ENDFOREACH; -use const T_ENDIF; -use const T_ENDSWITCH; -use const T_ENDWHILE; -use const T_EVAL; -use const T_EXIT; -use const T_EXTENDS; -use const T_FINAL; -use const T_FINALLY; -use const T_FOR; -use const T_FOREACH; -use const T_FUNCTION; -use const T_GLOBAL; -use const T_GOTO; -use const T_HALT_COMPILER; -use const T_IF; -use const T_IMPLEMENTS; -use const T_INCLUDE; -use const T_INCLUDE_ONCE; -use const T_INLINE_HTML; -use const T_INSTANCEOF; -use const T_INSTEADOF; -use const T_INTERFACE; -use const T_ISSET; -use const T_LIST; -use const T_NAMESPACE; -use const T_NEW; -use const T_PRINT; -use const T_PRIVATE; -use const T_PROTECTED; -use const T_PUBLIC; -use const T_REQUIRE; -use const T_REQUIRE_ONCE; -use const T_RETURN; -use const T_STATIC; -use const T_SWITCH; -use const T_THROW; -use const T_TRAIT; -use const T_TRY; -use const T_UNSET; -use const T_USE; -use const T_VAR; -use const T_WHILE; -use const T_YIELD; -use const T_YIELD_FROM; -use function array_key_exists; -use function array_keys; -use function array_merge; -use function array_pop; -use function array_unique; -use function count; -use function explode; -use function file_get_contents; -use function htmlspecialchars; -use function is_string; -use function ksort; -use function range; -use function sort; -use function sprintf; -use function str_ends_with; -use function str_replace; -use function token_get_all; -use function trim; -use SebastianBergmann\CodeCoverage\FileCouldNotBeWrittenException; -use SebastianBergmann\CodeCoverage\Node\File as FileNode; -use SebastianBergmann\CodeCoverage\Util\Percentage; -use SebastianBergmann\Template\Exception; -use SebastianBergmann\Template\Template; - -/** - * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage - */ -final class File extends Renderer -{ - /** - * @psalm-var array - */ - private const KEYWORD_TOKENS = [ - T_ABSTRACT => true, - T_ARRAY => true, - T_AS => true, - T_BREAK => true, - T_CALLABLE => true, - T_CASE => true, - T_CATCH => true, - T_CLASS => true, - T_CLONE => true, - T_CONST => true, - T_CONTINUE => true, - T_DECLARE => true, - T_DEFAULT => true, - T_DO => true, - T_ECHO => true, - T_ELSE => true, - T_ELSEIF => true, - T_EMPTY => true, - T_ENDDECLARE => true, - T_ENDFOR => true, - T_ENDFOREACH => true, - T_ENDIF => true, - T_ENDSWITCH => true, - T_ENDWHILE => true, - T_ENUM => true, - T_EVAL => true, - T_EXIT => true, - T_EXTENDS => true, - T_FINAL => true, - T_FINALLY => true, - T_FN => true, - T_FOR => true, - T_FOREACH => true, - T_FUNCTION => true, - T_GLOBAL => true, - T_GOTO => true, - T_HALT_COMPILER => true, - T_IF => true, - T_IMPLEMENTS => true, - T_INCLUDE => true, - T_INCLUDE_ONCE => true, - T_INSTANCEOF => true, - T_INSTEADOF => true, - T_INTERFACE => true, - T_ISSET => true, - T_LIST => true, - T_MATCH => true, - T_NAMESPACE => true, - T_NEW => true, - T_PRINT => true, - T_PRIVATE => true, - T_PROTECTED => true, - T_PUBLIC => true, - T_READONLY => true, - T_REQUIRE => true, - T_REQUIRE_ONCE => true, - T_RETURN => true, - T_STATIC => true, - T_SWITCH => true, - T_THROW => true, - T_TRAIT => true, - T_TRY => true, - T_UNSET => true, - T_USE => true, - T_VAR => true, - T_WHILE => true, - T_YIELD => true, - T_YIELD_FROM => true, - ]; - private static array $formattedSourceCache = []; - private int $htmlSpecialCharsFlags = ENT_COMPAT | ENT_HTML401 | ENT_SUBSTITUTE; - - public function render(FileNode $node, string $file): void - { - $templateName = $this->templatePath . ($this->hasBranchCoverage ? 'file_branch.html' : 'file.html'); - $template = new Template($templateName, '{{', '}}'); - $this->setCommonTemplateVariables($template, $node); - - $template->setVar( - [ - 'items' => $this->renderItems($node), - 'lines' => $this->renderSourceWithLineCoverage($node), - 'legend' => '

    Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

    ', - 'structure' => '', - ], - ); - - try { - $template->renderTo($file . '.html'); - } catch (Exception $e) { - throw new FileCouldNotBeWrittenException( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - - if ($this->hasBranchCoverage) { - $template->setVar( - [ - 'items' => $this->renderItems($node), - 'lines' => $this->renderSourceWithBranchCoverage($node), - 'legend' => '

    Fully coveredPartially coveredNot covered

    ', - 'structure' => $this->renderBranchStructure($node), - ], - ); - - try { - $template->renderTo($file . '_branch.html'); - } catch (Exception $e) { - throw new FileCouldNotBeWrittenException( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - - $template->setVar( - [ - 'items' => $this->renderItems($node), - 'lines' => $this->renderSourceWithPathCoverage($node), - 'legend' => '

    Fully coveredPartially coveredNot covered

    ', - 'structure' => $this->renderPathStructure($node), - ], - ); - - try { - $template->renderTo($file . '_path.html'); - } catch (Exception $e) { - throw new FileCouldNotBeWrittenException( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - } - } - - private function renderItems(FileNode $node): string - { - $templateName = $this->templatePath . ($this->hasBranchCoverage ? 'file_item_branch.html' : 'file_item.html'); - $template = new Template($templateName, '{{', '}}'); - - $methodTemplateName = $this->templatePath . ($this->hasBranchCoverage ? 'method_item_branch.html' : 'method_item.html'); - $methodItemTemplate = new Template( - $methodTemplateName, - '{{', - '}}', - ); - - $items = $this->renderItemTemplate( - $template, - [ - 'name' => 'Total', - 'numClasses' => $node->numberOfClassesAndTraits(), - 'numTestedClasses' => $node->numberOfTestedClassesAndTraits(), - 'numMethods' => $node->numberOfFunctionsAndMethods(), - 'numTestedMethods' => $node->numberOfTestedFunctionsAndMethods(), - 'linesExecutedPercent' => $node->percentageOfExecutedLines()->asFloat(), - 'linesExecutedPercentAsString' => $node->percentageOfExecutedLines()->asString(), - 'numExecutedLines' => $node->numberOfExecutedLines(), - 'numExecutableLines' => $node->numberOfExecutableLines(), - 'branchesExecutedPercent' => $node->percentageOfExecutedBranches()->asFloat(), - 'branchesExecutedPercentAsString' => $node->percentageOfExecutedBranches()->asString(), - 'numExecutedBranches' => $node->numberOfExecutedBranches(), - 'numExecutableBranches' => $node->numberOfExecutableBranches(), - 'pathsExecutedPercent' => $node->percentageOfExecutedPaths()->asFloat(), - 'pathsExecutedPercentAsString' => $node->percentageOfExecutedPaths()->asString(), - 'numExecutedPaths' => $node->numberOfExecutedPaths(), - 'numExecutablePaths' => $node->numberOfExecutablePaths(), - 'testedMethodsPercent' => $node->percentageOfTestedFunctionsAndMethods()->asFloat(), - 'testedMethodsPercentAsString' => $node->percentageOfTestedFunctionsAndMethods()->asString(), - 'testedClassesPercent' => $node->percentageOfTestedClassesAndTraits()->asFloat(), - 'testedClassesPercentAsString' => $node->percentageOfTestedClassesAndTraits()->asString(), - 'crap' => 'CRAP', - ], - ); - - $items .= $this->renderFunctionItems( - $node->functions(), - $methodItemTemplate, - ); - - $items .= $this->renderTraitOrClassItems( - $node->traits(), - $template, - $methodItemTemplate, - ); - - $items .= $this->renderTraitOrClassItems( - $node->classes(), - $template, - $methodItemTemplate, - ); - - return $items; - } - - private function renderTraitOrClassItems(array $items, Template $template, Template $methodItemTemplate): string - { - $buffer = ''; - - if (empty($items)) { - return $buffer; - } - - foreach ($items as $name => $item) { - $numMethods = 0; - $numTestedMethods = 0; - - foreach ($item['methods'] as $method) { - if ($method['executableLines'] > 0) { - $numMethods++; - - if ($method['executedLines'] === $method['executableLines']) { - $numTestedMethods++; - } - } - } - - if ($item['executableLines'] > 0) { - $numClasses = 1; - $numTestedClasses = $numTestedMethods === $numMethods ? 1 : 0; - $linesExecutedPercentAsString = Percentage::fromFractionAndTotal( - $item['executedLines'], - $item['executableLines'], - )->asString(); - $branchesExecutedPercentAsString = Percentage::fromFractionAndTotal( - $item['executedBranches'], - $item['executableBranches'], - )->asString(); - $pathsExecutedPercentAsString = Percentage::fromFractionAndTotal( - $item['executedPaths'], - $item['executablePaths'], - )->asString(); - } else { - $numClasses = 0; - $numTestedClasses = 0; - $linesExecutedPercentAsString = 'n/a'; - $branchesExecutedPercentAsString = 'n/a'; - $pathsExecutedPercentAsString = 'n/a'; - } - - $testedMethodsPercentage = Percentage::fromFractionAndTotal( - $numTestedMethods, - $numMethods, - ); - - $testedClassesPercentage = Percentage::fromFractionAndTotal( - $numTestedMethods === $numMethods ? 1 : 0, - 1, - ); - - $buffer .= $this->renderItemTemplate( - $template, - [ - 'name' => $this->abbreviateClassName($name), - 'numClasses' => $numClasses, - 'numTestedClasses' => $numTestedClasses, - 'numMethods' => $numMethods, - 'numTestedMethods' => $numTestedMethods, - 'linesExecutedPercent' => Percentage::fromFractionAndTotal( - $item['executedLines'], - $item['executableLines'], - )->asFloat(), - 'linesExecutedPercentAsString' => $linesExecutedPercentAsString, - 'numExecutedLines' => $item['executedLines'], - 'numExecutableLines' => $item['executableLines'], - 'branchesExecutedPercent' => Percentage::fromFractionAndTotal( - $item['executedBranches'], - $item['executableBranches'], - )->asFloat(), - 'branchesExecutedPercentAsString' => $branchesExecutedPercentAsString, - 'numExecutedBranches' => $item['executedBranches'], - 'numExecutableBranches' => $item['executableBranches'], - 'pathsExecutedPercent' => Percentage::fromFractionAndTotal( - $item['executedPaths'], - $item['executablePaths'], - )->asFloat(), - 'pathsExecutedPercentAsString' => $pathsExecutedPercentAsString, - 'numExecutedPaths' => $item['executedPaths'], - 'numExecutablePaths' => $item['executablePaths'], - 'testedMethodsPercent' => $testedMethodsPercentage->asFloat(), - 'testedMethodsPercentAsString' => $testedMethodsPercentage->asString(), - 'testedClassesPercent' => $testedClassesPercentage->asFloat(), - 'testedClassesPercentAsString' => $testedClassesPercentage->asString(), - 'crap' => $item['crap'], - ], - ); - - foreach ($item['methods'] as $method) { - $buffer .= $this->renderFunctionOrMethodItem( - $methodItemTemplate, - $method, - ' ', - ); - } - } - - return $buffer; - } - - private function renderFunctionItems(array $functions, Template $template): string - { - if (empty($functions)) { - return ''; - } - - $buffer = ''; - - foreach ($functions as $function) { - $buffer .= $this->renderFunctionOrMethodItem( - $template, - $function, - ); - } - - return $buffer; - } - - private function renderFunctionOrMethodItem(Template $template, array $item, string $indent = ''): string - { - $numMethods = 0; - $numTestedMethods = 0; - - if ($item['executableLines'] > 0) { - $numMethods = 1; - - if ($item['executedLines'] === $item['executableLines']) { - $numTestedMethods = 1; - } - } - - $executedLinesPercentage = Percentage::fromFractionAndTotal( - $item['executedLines'], - $item['executableLines'], - ); - - $executedBranchesPercentage = Percentage::fromFractionAndTotal( - $item['executedBranches'], - $item['executableBranches'], - ); - - $executedPathsPercentage = Percentage::fromFractionAndTotal( - $item['executedPaths'], - $item['executablePaths'], - ); - - $testedMethodsPercentage = Percentage::fromFractionAndTotal( - $numTestedMethods, - 1, - ); - - return $this->renderItemTemplate( - $template, - [ - 'name' => sprintf( - '%s%s', - $indent, - $item['startLine'], - htmlspecialchars($item['signature'], $this->htmlSpecialCharsFlags), - $item['functionName'] ?? $item['methodName'], - ), - 'numMethods' => $numMethods, - 'numTestedMethods' => $numTestedMethods, - 'linesExecutedPercent' => $executedLinesPercentage->asFloat(), - 'linesExecutedPercentAsString' => $executedLinesPercentage->asString(), - 'numExecutedLines' => $item['executedLines'], - 'numExecutableLines' => $item['executableLines'], - 'branchesExecutedPercent' => $executedBranchesPercentage->asFloat(), - 'branchesExecutedPercentAsString' => $executedBranchesPercentage->asString(), - 'numExecutedBranches' => $item['executedBranches'], - 'numExecutableBranches' => $item['executableBranches'], - 'pathsExecutedPercent' => $executedPathsPercentage->asFloat(), - 'pathsExecutedPercentAsString' => $executedPathsPercentage->asString(), - 'numExecutedPaths' => $item['executedPaths'], - 'numExecutablePaths' => $item['executablePaths'], - 'testedMethodsPercent' => $testedMethodsPercentage->asFloat(), - 'testedMethodsPercentAsString' => $testedMethodsPercentage->asString(), - 'crap' => $item['crap'], - ], - ); - } - - private function renderSourceWithLineCoverage(FileNode $node): string - { - $linesTemplate = new Template($this->templatePath . 'lines.html.dist', '{{', '}}'); - $singleLineTemplate = new Template($this->templatePath . 'line.html.dist', '{{', '}}'); - - $coverageData = $node->lineCoverageData(); - $testData = $node->testData(); - $codeLines = $this->loadFile($node->pathAsString()); - $lines = ''; - $i = 1; - - foreach ($codeLines as $line) { - $trClass = ''; - $popoverContent = ''; - $popoverTitle = ''; - - if (array_key_exists($i, $coverageData)) { - $numTests = ($coverageData[$i] ? count($coverageData[$i]) : 0); - - if ($coverageData[$i] === null) { - $trClass = 'warning'; - } elseif ($numTests === 0) { - $trClass = 'danger'; - } else { - if ($numTests > 1) { - $popoverTitle = $numTests . ' tests cover line ' . $i; - } else { - $popoverTitle = '1 test covers line ' . $i; - } - - $lineCss = 'covered-by-large-tests'; - $popoverContent = '
      '; - - foreach ($coverageData[$i] as $test) { - if ($lineCss === 'covered-by-large-tests' && $testData[$test]['size'] === 'medium') { - $lineCss = 'covered-by-medium-tests'; - } elseif ($testData[$test]['size'] === 'small') { - $lineCss = 'covered-by-small-tests'; - } - - $popoverContent .= $this->createPopoverContentForTest($test, $testData[$test]); - } - - $popoverContent .= '
    '; - $trClass = $lineCss . ' popin'; - } - } - - $popover = ''; - - if (!empty($popoverTitle)) { - $popover = sprintf( - ' data-title="%s" data-content="%s" data-placement="top" data-html="true"', - $popoverTitle, - htmlspecialchars($popoverContent, $this->htmlSpecialCharsFlags), - ); - } - - $lines .= $this->renderLine($singleLineTemplate, $i, $line, $trClass, $popover); - - $i++; - } - - $linesTemplate->setVar(['lines' => $lines]); - - return $linesTemplate->render(); - } - - private function renderSourceWithBranchCoverage(FileNode $node): string - { - $linesTemplate = new Template($this->templatePath . 'lines.html.dist', '{{', '}}'); - $singleLineTemplate = new Template($this->templatePath . 'line.html.dist', '{{', '}}'); - - $functionCoverageData = $node->functionCoverageData(); - $testData = $node->testData(); - $codeLines = $this->loadFile($node->pathAsString()); - - $lineData = []; - - /** @var int $line */ - foreach (array_keys($codeLines) as $line) { - $lineData[$line + 1] = [ - 'includedInBranches' => 0, - 'includedInHitBranches' => 0, - 'tests' => [], - ]; - } - - foreach ($functionCoverageData as $method) { - foreach ($method['branches'] as $branch) { - foreach (range($branch['line_start'], $branch['line_end']) as $line) { - if (!isset($lineData[$line])) { // blank line at end of file is sometimes included here - continue; - } - - $lineData[$line]['includedInBranches']++; - - if ($branch['hit']) { - $lineData[$line]['includedInHitBranches']++; - $lineData[$line]['tests'] = array_unique(array_merge($lineData[$line]['tests'], $branch['hit'])); - } - } - } - } - - $lines = ''; - $i = 1; - - /** @var string $line */ - foreach ($codeLines as $line) { - $trClass = ''; - $popover = ''; - - if ($lineData[$i]['includedInBranches'] > 0) { - $lineCss = 'success'; - - if ($lineData[$i]['includedInHitBranches'] === 0) { - $lineCss = 'danger'; - } elseif ($lineData[$i]['includedInHitBranches'] !== $lineData[$i]['includedInBranches']) { - $lineCss = 'warning'; - } - - $popoverContent = '
      '; - - if (count($lineData[$i]['tests']) === 1) { - $popoverTitle = '1 test covers line ' . $i; - } else { - $popoverTitle = count($lineData[$i]['tests']) . ' tests cover line ' . $i; - } - $popoverTitle .= '. These are covering ' . $lineData[$i]['includedInHitBranches'] . ' out of the ' . $lineData[$i]['includedInBranches'] . ' code branches.'; - - foreach ($lineData[$i]['tests'] as $test) { - $popoverContent .= $this->createPopoverContentForTest($test, $testData[$test]); - } - - $popoverContent .= '
    '; - $trClass = $lineCss . ' popin'; - - $popover = sprintf( - ' data-title="%s" data-content="%s" data-placement="top" data-html="true"', - $popoverTitle, - htmlspecialchars($popoverContent, $this->htmlSpecialCharsFlags), - ); - } - - $lines .= $this->renderLine($singleLineTemplate, $i, $line, $trClass, $popover); - - $i++; - } - - $linesTemplate->setVar(['lines' => $lines]); - - return $linesTemplate->render(); - } - - private function renderSourceWithPathCoverage(FileNode $node): string - { - $linesTemplate = new Template($this->templatePath . 'lines.html.dist', '{{', '}}'); - $singleLineTemplate = new Template($this->templatePath . 'line.html.dist', '{{', '}}'); - - $functionCoverageData = $node->functionCoverageData(); - $testData = $node->testData(); - $codeLines = $this->loadFile($node->pathAsString()); - - $lineData = []; - - /** @var int $line */ - foreach (array_keys($codeLines) as $line) { - $lineData[$line + 1] = [ - 'includedInPaths' => [], - 'includedInHitPaths' => [], - 'tests' => [], - ]; - } - - foreach ($functionCoverageData as $method) { - foreach ($method['paths'] as $pathId => $path) { - foreach ($path['path'] as $branchTaken) { - foreach (range($method['branches'][$branchTaken]['line_start'], $method['branches'][$branchTaken]['line_end']) as $line) { - if (!isset($lineData[$line])) { - continue; - } - $lineData[$line]['includedInPaths'][] = $pathId; - - if ($path['hit']) { - $lineData[$line]['includedInHitPaths'][] = $pathId; - $lineData[$line]['tests'] = array_unique(array_merge($lineData[$line]['tests'], $path['hit'])); - } - } - } - } - } - - $lines = ''; - $i = 1; - - /** @var string $line */ - foreach ($codeLines as $line) { - $trClass = ''; - $popover = ''; - $includedInPathsCount = count(array_unique($lineData[$i]['includedInPaths'])); - $includedInHitPathsCount = count(array_unique($lineData[$i]['includedInHitPaths'])); - - if ($includedInPathsCount > 0) { - $lineCss = 'success'; - - if ($includedInHitPathsCount === 0) { - $lineCss = 'danger'; - } elseif ($includedInHitPathsCount !== $includedInPathsCount) { - $lineCss = 'warning'; - } - - $popoverContent = '
      '; - - if (count($lineData[$i]['tests']) === 1) { - $popoverTitle = '1 test covers line ' . $i; - } else { - $popoverTitle = count($lineData[$i]['tests']) . ' tests cover line ' . $i; - } - $popoverTitle .= '. These are covering ' . $includedInHitPathsCount . ' out of the ' . $includedInPathsCount . ' code paths.'; - - foreach ($lineData[$i]['tests'] as $test) { - $popoverContent .= $this->createPopoverContentForTest($test, $testData[$test]); - } - - $popoverContent .= '
    '; - $trClass = $lineCss . ' popin'; - - $popover = sprintf( - ' data-title="%s" data-content="%s" data-placement="top" data-html="true"', - $popoverTitle, - htmlspecialchars($popoverContent, $this->htmlSpecialCharsFlags), - ); - } - - $lines .= $this->renderLine($singleLineTemplate, $i, $line, $trClass, $popover); - - $i++; - } - - $linesTemplate->setVar(['lines' => $lines]); - - return $linesTemplate->render(); - } - - private function renderBranchStructure(FileNode $node): string - { - $branchesTemplate = new Template($this->templatePath . 'branches.html.dist', '{{', '}}'); - - $coverageData = $node->functionCoverageData(); - $testData = $node->testData(); - $codeLines = $this->loadFile($node->pathAsString()); - $branches = ''; - - ksort($coverageData); - - foreach ($coverageData as $methodName => $methodData) { - if (!$methodData['branches']) { - continue; - } - - $branchStructure = ''; - - foreach ($methodData['branches'] as $branch) { - $branchStructure .= $this->renderBranchLines($branch, $codeLines, $testData); - } - - if ($branchStructure !== '') { // don't show empty branches - $branches .= '
    ' . $this->abbreviateMethodName($methodName) . '
    ' . "\n"; - $branches .= $branchStructure; - } - } - - $branchesTemplate->setVar(['branches' => $branches]); - - return $branchesTemplate->render(); - } - - private function renderBranchLines(array $branch, array $codeLines, array $testData): string - { - $linesTemplate = new Template($this->templatePath . 'lines.html.dist', '{{', '}}'); - $singleLineTemplate = new Template($this->templatePath . 'line.html.dist', '{{', '}}'); - - $lines = ''; - - $branchLines = range($branch['line_start'], $branch['line_end']); - sort($branchLines); // sometimes end_line < start_line - - /** @var int $line */ - foreach ($branchLines as $line) { - if (!isset($codeLines[$line])) { // blank line at end of file is sometimes included here - continue; - } - - $popoverContent = ''; - $popoverTitle = ''; - - $numTests = count($branch['hit']); - - if ($numTests === 0) { - $trClass = 'danger'; - } else { - $lineCss = 'covered-by-large-tests'; - $popoverContent = '
      '; - - if ($numTests > 1) { - $popoverTitle = $numTests . ' tests cover this branch'; - } else { - $popoverTitle = '1 test covers this branch'; - } - - foreach ($branch['hit'] as $test) { - if ($lineCss === 'covered-by-large-tests' && $testData[$test]['size'] === 'medium') { - $lineCss = 'covered-by-medium-tests'; - } elseif ($testData[$test]['size'] === 'small') { - $lineCss = 'covered-by-small-tests'; - } - - $popoverContent .= $this->createPopoverContentForTest($test, $testData[$test]); - } - $trClass = $lineCss . ' popin'; - } - - $popover = ''; - - if (!empty($popoverTitle)) { - $popover = sprintf( - ' data-title="%s" data-content="%s" data-placement="top" data-html="true"', - $popoverTitle, - htmlspecialchars($popoverContent, $this->htmlSpecialCharsFlags), - ); - } - - $lines .= $this->renderLine($singleLineTemplate, $line, $codeLines[$line - 1], $trClass, $popover); - } - - if ($lines === '') { - return ''; - } - - $linesTemplate->setVar(['lines' => $lines]); - - return $linesTemplate->render(); - } - - private function renderPathStructure(FileNode $node): string - { - $pathsTemplate = new Template($this->templatePath . 'paths.html.dist', '{{', '}}'); - - $coverageData = $node->functionCoverageData(); - $testData = $node->testData(); - $codeLines = $this->loadFile($node->pathAsString()); - $paths = ''; - - ksort($coverageData); - - foreach ($coverageData as $methodName => $methodData) { - if (!$methodData['paths']) { - continue; - } - - $pathStructure = ''; - - if (count($methodData['paths']) > 100) { - $pathStructure .= '

      ' . count($methodData['paths']) . ' is too many paths to sensibly render, consider refactoring your code to bring this number down.

      '; - - continue; - } - - foreach ($methodData['paths'] as $path) { - $pathStructure .= $this->renderPathLines($path, $methodData['branches'], $codeLines, $testData); - } - - if ($pathStructure !== '') { - $paths .= '
      ' . $this->abbreviateMethodName($methodName) . '
      ' . "\n"; - $paths .= $pathStructure; - } - } - - $pathsTemplate->setVar(['paths' => $paths]); - - return $pathsTemplate->render(); - } - - private function renderPathLines(array $path, array $branches, array $codeLines, array $testData): string - { - $linesTemplate = new Template($this->templatePath . 'lines.html.dist', '{{', '}}'); - $singleLineTemplate = new Template($this->templatePath . 'line.html.dist', '{{', '}}'); - - $lines = ''; - $first = true; - - foreach ($path['path'] as $branchId) { - if ($first) { - $first = false; - } else { - $lines .= '
    ' . "\n"; - } - - $branchLines = range($branches[$branchId]['line_start'], $branches[$branchId]['line_end']); - sort($branchLines); // sometimes end_line < start_line - - /** @var int $line */ - foreach ($branchLines as $line) { - if (!isset($codeLines[$line])) { // blank line at end of file is sometimes included here - continue; - } - - $popoverContent = ''; - $popoverTitle = ''; - - $numTests = count($path['hit']); - - if ($numTests === 0) { - $trClass = 'danger'; - } else { - $lineCss = 'covered-by-large-tests'; - $popoverContent = '
      '; - - if ($numTests > 1) { - $popoverTitle = $numTests . ' tests cover this path'; - } else { - $popoverTitle = '1 test covers this path'; - } - - foreach ($path['hit'] as $test) { - if ($lineCss === 'covered-by-large-tests' && $testData[$test]['size'] === 'medium') { - $lineCss = 'covered-by-medium-tests'; - } elseif ($testData[$test]['size'] === 'small') { - $lineCss = 'covered-by-small-tests'; - } - - $popoverContent .= $this->createPopoverContentForTest($test, $testData[$test]); - } - - $trClass = $lineCss . ' popin'; - } - - $popover = ''; - - if (!empty($popoverTitle)) { - $popover = sprintf( - ' data-title="%s" data-content="%s" data-placement="top" data-html="true"', - $popoverTitle, - htmlspecialchars($popoverContent, $this->htmlSpecialCharsFlags), - ); - } - - $lines .= $this->renderLine($singleLineTemplate, $line, $codeLines[$line - 1], $trClass, $popover); - } - } - - if ($lines === '') { - return ''; - } - - $linesTemplate->setVar(['lines' => $lines]); - - return $linesTemplate->render(); - } - - private function renderLine(Template $template, int $lineNumber, string $lineContent, string $class, string $popover): string - { - $template->setVar( - [ - 'lineNumber' => $lineNumber, - 'lineContent' => $lineContent, - 'class' => $class, - 'popover' => $popover, - ], - ); - - return $template->render(); - } - - private function loadFile(string $file): array - { - if (isset(self::$formattedSourceCache[$file])) { - return self::$formattedSourceCache[$file]; - } - - $buffer = file_get_contents($file); - $tokens = token_get_all($buffer); - $result = ['']; - $i = 0; - $stringFlag = false; - $fileEndsWithNewLine = str_ends_with($buffer, "\n"); - - unset($buffer); - - foreach ($tokens as $j => $token) { - if (is_string($token)) { - if ($token === '"' && $tokens[$j - 1] !== '\\') { - $result[$i] .= sprintf( - '%s', - htmlspecialchars($token, $this->htmlSpecialCharsFlags), - ); - - $stringFlag = !$stringFlag; - } else { - $result[$i] .= sprintf( - '%s', - htmlspecialchars($token, $this->htmlSpecialCharsFlags), - ); - } - - continue; - } - - [$token, $value] = $token; - - $value = str_replace( - ["\t", ' '], - ['    ', ' '], - htmlspecialchars($value, $this->htmlSpecialCharsFlags), - ); - - if ($value === "\n") { - $result[++$i] = ''; - } else { - $lines = explode("\n", $value); - - foreach ($lines as $jj => $line) { - $line = trim($line); - - if ($line !== '') { - if ($stringFlag) { - $colour = 'string'; - } else { - $colour = 'default'; - - if ($this->isInlineHtml($token)) { - $colour = 'html'; - } elseif ($this->isComment($token)) { - $colour = 'comment'; - } elseif ($this->isKeyword($token)) { - $colour = 'keyword'; - } - } - - $result[$i] .= sprintf( - '%s', - $colour, - $line, - ); - } - - if (isset($lines[$jj + 1])) { - $result[++$i] = ''; - } - } - } - } - - if ($fileEndsWithNewLine) { - unset($result[count($result) - 1]); - } - - self::$formattedSourceCache[$file] = $result; - - return $result; - } - - private function abbreviateClassName(string $className): string - { - $tmp = explode('\\', $className); - - if (count($tmp) > 1) { - $className = sprintf( - '%s', - $className, - array_pop($tmp), - ); - } - - return $className; - } - - private function abbreviateMethodName(string $methodName): string - { - $parts = explode('->', $methodName); - - if (count($parts) === 2) { - return $this->abbreviateClassName($parts[0]) . '->' . $parts[1]; - } - - return $methodName; - } - - private function createPopoverContentForTest(string $test, array $testData): string - { - $testCSS = ''; - - switch ($testData['status']) { - case 'success': - $testCSS = match ($testData['size']) { - 'small' => ' class="covered-by-small-tests"', - 'medium' => ' class="covered-by-medium-tests"', - // no break - default => ' class="covered-by-large-tests"', - }; - - break; - - case 'failure': - $testCSS = ' class="danger"'; - - break; - } - - return sprintf( - '%s', - $testCSS, - htmlspecialchars($test, $this->htmlSpecialCharsFlags), - ); - } - - private function isComment(int $token): bool - { - return $token === T_COMMENT || $token === T_DOC_COMMENT; - } - - private function isInlineHtml(int $token): bool - { - return $token === T_INLINE_HTML; - } - - private function isKeyword(int $token): bool - { - return isset(self::KEYWORD_TOKENS[$token]); - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/PHP.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/PHP.php deleted file mode 100644 index 6f46f990..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/PHP.php +++ /dev/null @@ -1,41 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Report; - -use function dirname; -use function file_put_contents; -use function serialize; -use function str_contains; -use SebastianBergmann\CodeCoverage\CodeCoverage; -use SebastianBergmann\CodeCoverage\Driver\WriteOperationFailedException; -use SebastianBergmann\CodeCoverage\Util\Filesystem; - -final class PHP -{ - public function process(CodeCoverage $coverage, ?string $target = null): string - { - $coverage->clearCache(); - - $buffer = " - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Report; - -use const PHP_EOL; -use function array_map; -use function date; -use function ksort; -use function max; -use function sprintf; -use function str_pad; -use function strlen; -use SebastianBergmann\CodeCoverage\CodeCoverage; -use SebastianBergmann\CodeCoverage\Node\File; -use SebastianBergmann\CodeCoverage\Util\Percentage; - -final class Text -{ - /** - * @var string - */ - private const COLOR_GREEN = "\x1b[30;42m"; - - /** - * @var string - */ - private const COLOR_YELLOW = "\x1b[30;43m"; - - /** - * @var string - */ - private const COLOR_RED = "\x1b[37;41m"; - - /** - * @var string - */ - private const COLOR_HEADER = "\x1b[1;37;40m"; - - /** - * @var string - */ - private const COLOR_RESET = "\x1b[0m"; - private readonly Thresholds $thresholds; - private readonly bool $showUncoveredFiles; - private readonly bool $showOnlySummary; - - public function __construct(Thresholds $thresholds, bool $showUncoveredFiles = false, bool $showOnlySummary = false) - { - $this->thresholds = $thresholds; - $this->showUncoveredFiles = $showUncoveredFiles; - $this->showOnlySummary = $showOnlySummary; - } - - public function process(CodeCoverage $coverage, bool $showColors = false): string - { - $hasBranchCoverage = !empty($coverage->getData(true)->functionCoverage()); - - $output = PHP_EOL . PHP_EOL; - $report = $coverage->getReport(); - - $colors = [ - 'header' => '', - 'classes' => '', - 'methods' => '', - 'lines' => '', - 'branches' => '', - 'paths' => '', - 'reset' => '', - ]; - - if ($showColors) { - $colors['classes'] = $this->coverageColor( - $report->numberOfTestedClassesAndTraits(), - $report->numberOfClassesAndTraits(), - ); - - $colors['methods'] = $this->coverageColor( - $report->numberOfTestedMethods(), - $report->numberOfMethods(), - ); - - $colors['lines'] = $this->coverageColor( - $report->numberOfExecutedLines(), - $report->numberOfExecutableLines(), - ); - - $colors['branches'] = $this->coverageColor( - $report->numberOfExecutedBranches(), - $report->numberOfExecutableBranches(), - ); - - $colors['paths'] = $this->coverageColor( - $report->numberOfExecutedPaths(), - $report->numberOfExecutablePaths(), - ); - - $colors['reset'] = self::COLOR_RESET; - $colors['header'] = self::COLOR_HEADER; - } - - $classes = sprintf( - ' Classes: %6s (%d/%d)', - Percentage::fromFractionAndTotal( - $report->numberOfTestedClassesAndTraits(), - $report->numberOfClassesAndTraits(), - )->asString(), - $report->numberOfTestedClassesAndTraits(), - $report->numberOfClassesAndTraits(), - ); - - $methods = sprintf( - ' Methods: %6s (%d/%d)', - Percentage::fromFractionAndTotal( - $report->numberOfTestedMethods(), - $report->numberOfMethods(), - )->asString(), - $report->numberOfTestedMethods(), - $report->numberOfMethods(), - ); - - $paths = ''; - $branches = ''; - - if ($hasBranchCoverage) { - $paths = sprintf( - ' Paths: %6s (%d/%d)', - Percentage::fromFractionAndTotal( - $report->numberOfExecutedPaths(), - $report->numberOfExecutablePaths(), - )->asString(), - $report->numberOfExecutedPaths(), - $report->numberOfExecutablePaths(), - ); - - $branches = sprintf( - ' Branches: %6s (%d/%d)', - Percentage::fromFractionAndTotal( - $report->numberOfExecutedBranches(), - $report->numberOfExecutableBranches(), - )->asString(), - $report->numberOfExecutedBranches(), - $report->numberOfExecutableBranches(), - ); - } - - $lines = sprintf( - ' Lines: %6s (%d/%d)', - Percentage::fromFractionAndTotal( - $report->numberOfExecutedLines(), - $report->numberOfExecutableLines(), - )->asString(), - $report->numberOfExecutedLines(), - $report->numberOfExecutableLines(), - ); - - $padding = max(array_map('strlen', [$classes, $methods, $lines])); - - if ($this->showOnlySummary) { - $title = 'Code Coverage Report Summary:'; - $padding = max($padding, strlen($title)); - - $output .= $this->format($colors['header'], $padding, $title); - } else { - $date = date(' Y-m-d H:i:s'); - $title = 'Code Coverage Report:'; - - $output .= $this->format($colors['header'], $padding, $title); - $output .= $this->format($colors['header'], $padding, $date); - $output .= $this->format($colors['header'], $padding, ''); - $output .= $this->format($colors['header'], $padding, ' Summary:'); - } - - $output .= $this->format($colors['classes'], $padding, $classes); - $output .= $this->format($colors['methods'], $padding, $methods); - - if ($hasBranchCoverage) { - $output .= $this->format($colors['paths'], $padding, $paths); - $output .= $this->format($colors['branches'], $padding, $branches); - } - $output .= $this->format($colors['lines'], $padding, $lines); - - if ($this->showOnlySummary) { - return $output . PHP_EOL; - } - - $classCoverage = []; - - foreach ($report as $item) { - if (!$item instanceof File) { - continue; - } - - $classes = $item->classesAndTraits(); - - foreach ($classes as $className => $class) { - $classExecutableLines = 0; - $classExecutedLines = 0; - $classExecutableBranches = 0; - $classExecutedBranches = 0; - $classExecutablePaths = 0; - $classExecutedPaths = 0; - $coveredMethods = 0; - $classMethods = 0; - - foreach ($class['methods'] as $method) { - if ($method['executableLines'] == 0) { - continue; - } - - $classMethods++; - $classExecutableLines += $method['executableLines']; - $classExecutedLines += $method['executedLines']; - $classExecutableBranches += $method['executableBranches']; - $classExecutedBranches += $method['executedBranches']; - $classExecutablePaths += $method['executablePaths']; - $classExecutedPaths += $method['executedPaths']; - - if ($method['coverage'] == 100) { - $coveredMethods++; - } - } - - $classCoverage[$className] = [ - 'namespace' => $class['namespace'], - 'className' => $className, - 'methodsCovered' => $coveredMethods, - 'methodCount' => $classMethods, - 'statementsCovered' => $classExecutedLines, - 'statementCount' => $classExecutableLines, - 'branchesCovered' => $classExecutedBranches, - 'branchesCount' => $classExecutableBranches, - 'pathsCovered' => $classExecutedPaths, - 'pathsCount' => $classExecutablePaths, - ]; - } - } - - ksort($classCoverage); - - $methodColor = ''; - $pathsColor = ''; - $branchesColor = ''; - $linesColor = ''; - $resetColor = ''; - - foreach ($classCoverage as $fullQualifiedPath => $classInfo) { - if ($this->showUncoveredFiles || $classInfo['statementsCovered'] != 0) { - if ($showColors) { - $methodColor = $this->coverageColor($classInfo['methodsCovered'], $classInfo['methodCount']); - $pathsColor = $this->coverageColor($classInfo['pathsCovered'], $classInfo['pathsCount']); - $branchesColor = $this->coverageColor($classInfo['branchesCovered'], $classInfo['branchesCount']); - $linesColor = $this->coverageColor($classInfo['statementsCovered'], $classInfo['statementCount']); - $resetColor = $colors['reset']; - } - - $output .= PHP_EOL . $fullQualifiedPath . PHP_EOL - . ' ' . $methodColor . 'Methods: ' . $this->printCoverageCounts($classInfo['methodsCovered'], $classInfo['methodCount'], 2) . $resetColor . ' '; - - if ($hasBranchCoverage) { - $output .= ' ' . $pathsColor . 'Paths: ' . $this->printCoverageCounts($classInfo['pathsCovered'], $classInfo['pathsCount'], 3) . $resetColor . ' ' - . ' ' . $branchesColor . 'Branches: ' . $this->printCoverageCounts($classInfo['branchesCovered'], $classInfo['branchesCount'], 3) . $resetColor . ' '; - } - $output .= ' ' . $linesColor . 'Lines: ' . $this->printCoverageCounts($classInfo['statementsCovered'], $classInfo['statementCount'], 3) . $resetColor; - } - } - - return $output . PHP_EOL; - } - - private function coverageColor(int $numberOfCoveredElements, int $totalNumberOfElements): string - { - $coverage = Percentage::fromFractionAndTotal( - $numberOfCoveredElements, - $totalNumberOfElements, - ); - - if ($coverage->asFloat() >= $this->thresholds->highLowerBound()) { - return self::COLOR_GREEN; - } - - if ($coverage->asFloat() > $this->thresholds->lowUpperBound()) { - return self::COLOR_YELLOW; - } - - return self::COLOR_RED; - } - - private function printCoverageCounts(int $numberOfCoveredElements, int $totalNumberOfElements, int $precision): string - { - $format = '%' . $precision . 's'; - - return Percentage::fromFractionAndTotal( - $numberOfCoveredElements, - $totalNumberOfElements, - )->asFixedWidthString() . - ' (' . sprintf($format, $numberOfCoveredElements) . '/' . - sprintf($format, $totalNumberOfElements) . ')'; - } - - private function format(string $color, int $padding, false|string $string): string - { - if ($color === '') { - return (string) $string . PHP_EOL; - } - - return $color . str_pad((string) $string, $padding) . self::COLOR_RESET . PHP_EOL; - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Thresholds.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Thresholds.php deleted file mode 100644 index af6c6ce5..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Thresholds.php +++ /dev/null @@ -1,56 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Report; - -use SebastianBergmann\CodeCoverage\InvalidArgumentException; - -/** - * @psalm-immutable - */ -final class Thresholds -{ - private readonly int $lowUpperBound; - private readonly int $highLowerBound; - - public static function default(): self - { - return new self(50, 90); - } - - /** - * @throws InvalidArgumentException - */ - public static function from(int $lowUpperBound, int $highLowerBound): self - { - if ($lowUpperBound > $highLowerBound) { - throw new InvalidArgumentException( - '$lowUpperBound must not be larger than $highLowerBound', - ); - } - - return new self($lowUpperBound, $highLowerBound); - } - - private function __construct(int $lowUpperBound, int $highLowerBound) - { - $this->lowUpperBound = $lowUpperBound; - $this->highLowerBound = $highLowerBound; - } - - public function lowUpperBound(): int - { - return $this->lowUpperBound; - } - - public function highLowerBound(): int - { - return $this->highLowerBound; - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Xml/BuildInformation.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Xml/BuildInformation.php deleted file mode 100644 index 264bf713..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Xml/BuildInformation.php +++ /dev/null @@ -1,79 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Report\Xml; - -use function phpversion; -use DateTimeImmutable; -use DOMElement; -use SebastianBergmann\Environment\Runtime; - -/** - * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage - */ -final class BuildInformation -{ - private readonly DOMElement $contextNode; - - public function __construct(DOMElement $contextNode) - { - $this->contextNode = $contextNode; - } - - public function setRuntimeInformation(Runtime $runtime): void - { - $runtimeNode = $this->nodeByName('runtime'); - - $runtimeNode->setAttribute('name', $runtime->getName()); - $runtimeNode->setAttribute('version', $runtime->getVersion()); - $runtimeNode->setAttribute('url', $runtime->getVendorUrl()); - - $driverNode = $this->nodeByName('driver'); - - if ($runtime->hasXdebug()) { - $driverNode->setAttribute('name', 'xdebug'); - $driverNode->setAttribute('version', phpversion('xdebug')); - } - - if ($runtime->hasPCOV()) { - $driverNode->setAttribute('name', 'pcov'); - $driverNode->setAttribute('version', phpversion('pcov')); - } - } - - public function setBuildTime(DateTimeImmutable $date): void - { - $this->contextNode->setAttribute('time', $date->format('D M j G:i:s T Y')); - } - - public function setGeneratorVersions(string $phpUnitVersion, string $coverageVersion): void - { - $this->contextNode->setAttribute('phpunit', $phpUnitVersion); - $this->contextNode->setAttribute('coverage', $coverageVersion); - } - - private function nodeByName(string $name): DOMElement - { - $node = $this->contextNode->getElementsByTagNameNS( - 'https://schema.phpunit.de/coverage/1.0', - $name, - )->item(0); - - if (!$node) { - $node = $this->contextNode->appendChild( - $this->contextNode->ownerDocument->createElementNS( - 'https://schema.phpunit.de/coverage/1.0', - $name, - ), - ); - } - - return $node; - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Xml/Coverage.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Xml/Coverage.php deleted file mode 100644 index bb41dfb5..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Xml/Coverage.php +++ /dev/null @@ -1,63 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Report\Xml; - -use DOMElement; -use SebastianBergmann\CodeCoverage\ReportAlreadyFinalizedException; -use XMLWriter; - -/** - * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage - */ -final class Coverage -{ - private readonly XMLWriter $writer; - private readonly DOMElement $contextNode; - private bool $finalized = false; - - public function __construct(DOMElement $context, string $line) - { - $this->contextNode = $context; - - $this->writer = new XMLWriter; - $this->writer->openMemory(); - $this->writer->startElementNS(null, $context->nodeName, 'https://schema.phpunit.de/coverage/1.0'); - $this->writer->writeAttribute('nr', $line); - } - - /** - * @throws ReportAlreadyFinalizedException - */ - public function addTest(string $test): void - { - if ($this->finalized) { - throw new ReportAlreadyFinalizedException; - } - - $this->writer->startElement('covered'); - $this->writer->writeAttribute('by', $test); - $this->writer->endElement(); - } - - public function finalize(): void - { - $this->writer->endElement(); - - $fragment = $this->contextNode->ownerDocument->createDocumentFragment(); - $fragment->appendXML($this->writer->outputMemory()); - - $this->contextNode->parentNode->replaceChild( - $fragment, - $this->contextNode, - ); - - $this->finalized = true; - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Xml/Facade.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Xml/Facade.php deleted file mode 100644 index 3264718c..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Xml/Facade.php +++ /dev/null @@ -1,304 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Report\Xml; - -use const DIRECTORY_SEPARATOR; -use const PHP_EOL; -use function count; -use function dirname; -use function file_get_contents; -use function file_put_contents; -use function is_array; -use function is_dir; -use function is_file; -use function is_writable; -use function libxml_clear_errors; -use function libxml_get_errors; -use function libxml_use_internal_errors; -use function sprintf; -use function strlen; -use function substr; -use DateTimeImmutable; -use DOMDocument; -use SebastianBergmann\CodeCoverage\CodeCoverage; -use SebastianBergmann\CodeCoverage\Driver\PathExistsButIsNotDirectoryException; -use SebastianBergmann\CodeCoverage\Driver\WriteOperationFailedException; -use SebastianBergmann\CodeCoverage\Node\AbstractNode; -use SebastianBergmann\CodeCoverage\Node\Directory as DirectoryNode; -use SebastianBergmann\CodeCoverage\Node\File as FileNode; -use SebastianBergmann\CodeCoverage\Util\Filesystem as DirectoryUtil; -use SebastianBergmann\CodeCoverage\Version; -use SebastianBergmann\CodeCoverage\XmlException; -use SebastianBergmann\Environment\Runtime; - -final class Facade -{ - private string $target; - private Project $project; - private readonly string $phpUnitVersion; - - public function __construct(string $version) - { - $this->phpUnitVersion = $version; - } - - /** - * @throws XmlException - */ - public function process(CodeCoverage $coverage, string $target): void - { - if (substr($target, -1, 1) !== DIRECTORY_SEPARATOR) { - $target .= DIRECTORY_SEPARATOR; - } - - $this->target = $target; - $this->initTargetDirectory($target); - - $report = $coverage->getReport(); - - $this->project = new Project( - $coverage->getReport()->name(), - ); - - $this->setBuildInformation(); - $this->processTests($coverage->getTests()); - $this->processDirectory($report, $this->project); - - $this->saveDocument($this->project->asDom(), 'index'); - } - - private function setBuildInformation(): void - { - $buildNode = $this->project->buildInformation(); - $buildNode->setRuntimeInformation(new Runtime); - $buildNode->setBuildTime(new DateTimeImmutable); - $buildNode->setGeneratorVersions($this->phpUnitVersion, Version::id()); - } - - /** - * @throws PathExistsButIsNotDirectoryException - * @throws WriteOperationFailedException - */ - private function initTargetDirectory(string $directory): void - { - if (is_file($directory)) { - if (!is_dir($directory)) { - throw new PathExistsButIsNotDirectoryException($directory); - } - - if (!is_writable($directory)) { - throw new WriteOperationFailedException($directory); - } - } - - DirectoryUtil::createDirectory($directory); - } - - /** - * @throws XmlException - */ - private function processDirectory(DirectoryNode $directory, Node $context): void - { - $directoryName = $directory->name(); - - if ($this->project->projectSourceDirectory() === $directoryName) { - $directoryName = '/'; - } - - $directoryObject = $context->addDirectory($directoryName); - - $this->setTotals($directory, $directoryObject->totals()); - - foreach ($directory->directories() as $node) { - $this->processDirectory($node, $directoryObject); - } - - foreach ($directory->files() as $node) { - $this->processFile($node, $directoryObject); - } - } - - /** - * @throws XmlException - */ - private function processFile(FileNode $file, Directory $context): void - { - $fileObject = $context->addFile( - $file->name(), - $file->id() . '.xml', - ); - - $this->setTotals($file, $fileObject->totals()); - - $path = substr( - $file->pathAsString(), - strlen($this->project->projectSourceDirectory()), - ); - - $fileReport = new Report($path); - - $this->setTotals($file, $fileReport->totals()); - - foreach ($file->classesAndTraits() as $unit) { - $this->processUnit($unit, $fileReport); - } - - foreach ($file->functions() as $function) { - $this->processFunction($function, $fileReport); - } - - foreach ($file->lineCoverageData() as $line => $tests) { - if (!is_array($tests) || count($tests) === 0) { - continue; - } - - $coverage = $fileReport->lineCoverage((string) $line); - - foreach ($tests as $test) { - $coverage->addTest($test); - } - - $coverage->finalize(); - } - - $fileReport->source()->setSourceCode( - file_get_contents($file->pathAsString()), - ); - - $this->saveDocument($fileReport->asDom(), $file->id()); - } - - private function processUnit(array $unit, Report $report): void - { - if (isset($unit['className'])) { - $unitObject = $report->classObject($unit['className']); - } else { - $unitObject = $report->traitObject($unit['traitName']); - } - - $unitObject->setLines( - $unit['startLine'], - $unit['executableLines'], - $unit['executedLines'], - ); - - $unitObject->setCrap((float) $unit['crap']); - $unitObject->setNamespace($unit['namespace']); - - foreach ($unit['methods'] as $method) { - $methodObject = $unitObject->addMethod($method['methodName']); - $methodObject->setSignature($method['signature']); - $methodObject->setLines((string) $method['startLine'], (string) $method['endLine']); - $methodObject->setCrap($method['crap']); - $methodObject->setTotals( - (string) $method['executableLines'], - (string) $method['executedLines'], - (string) $method['coverage'], - ); - } - } - - private function processFunction(array $function, Report $report): void - { - $functionObject = $report->functionObject($function['functionName']); - - $functionObject->setSignature($function['signature']); - $functionObject->setLines((string) $function['startLine']); - $functionObject->setCrap($function['crap']); - $functionObject->setTotals((string) $function['executableLines'], (string) $function['executedLines'], (string) $function['coverage']); - } - - private function processTests(array $tests): void - { - $testsObject = $this->project->tests(); - - foreach ($tests as $test => $result) { - $testsObject->addTest($test, $result); - } - } - - private function setTotals(AbstractNode $node, Totals $totals): void - { - $loc = $node->linesOfCode(); - - $totals->setNumLines( - $loc['linesOfCode'], - $loc['commentLinesOfCode'], - $loc['nonCommentLinesOfCode'], - $node->numberOfExecutableLines(), - $node->numberOfExecutedLines(), - ); - - $totals->setNumClasses( - $node->numberOfClasses(), - $node->numberOfTestedClasses(), - ); - - $totals->setNumTraits( - $node->numberOfTraits(), - $node->numberOfTestedTraits(), - ); - - $totals->setNumMethods( - $node->numberOfMethods(), - $node->numberOfTestedMethods(), - ); - - $totals->setNumFunctions( - $node->numberOfFunctions(), - $node->numberOfTestedFunctions(), - ); - } - - private function targetDirectory(): string - { - return $this->target; - } - - /** - * @throws XmlException - */ - private function saveDocument(DOMDocument $document, string $name): void - { - $filename = sprintf('%s/%s.xml', $this->targetDirectory(), $name); - - $document->formatOutput = true; - $document->preserveWhiteSpace = false; - $this->initTargetDirectory(dirname($filename)); - - file_put_contents($filename, $this->documentAsString($document)); - } - - /** - * @throws XmlException - * - * @see https://bugs.php.net/bug.php?id=79191 - */ - private function documentAsString(DOMDocument $document): string - { - $xmlErrorHandling = libxml_use_internal_errors(true); - $xml = $document->saveXML(); - - if ($xml === false) { - $message = 'Unable to generate the XML'; - - foreach (libxml_get_errors() as $error) { - $message .= PHP_EOL . $error->message; - } - - throw new XmlException($message); - } - - libxml_clear_errors(); - libxml_use_internal_errors($xmlErrorHandling); - - return $xml; - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Xml/File.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Xml/File.php deleted file mode 100644 index 69b27510..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Xml/File.php +++ /dev/null @@ -1,80 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Report\Xml; - -use DOMDocument; -use DOMElement; - -/** - * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage - */ -class File -{ - private readonly DOMDocument $dom; - private readonly DOMElement $contextNode; - - public function __construct(DOMElement $context) - { - $this->dom = $context->ownerDocument; - $this->contextNode = $context; - } - - public function totals(): Totals - { - $totalsContainer = $this->contextNode->firstChild; - - if (!$totalsContainer) { - $totalsContainer = $this->contextNode->appendChild( - $this->dom->createElementNS( - 'https://schema.phpunit.de/coverage/1.0', - 'totals', - ), - ); - } - - return new Totals($totalsContainer); - } - - public function lineCoverage(string $line): Coverage - { - $coverage = $this->contextNode->getElementsByTagNameNS( - 'https://schema.phpunit.de/coverage/1.0', - 'coverage', - )->item(0); - - if (!$coverage) { - $coverage = $this->contextNode->appendChild( - $this->dom->createElementNS( - 'https://schema.phpunit.de/coverage/1.0', - 'coverage', - ), - ); - } - - $lineNode = $coverage->appendChild( - $this->dom->createElementNS( - 'https://schema.phpunit.de/coverage/1.0', - 'line', - ), - ); - - return new Coverage($lineNode, $line); - } - - protected function contextNode(): DOMElement - { - return $this->contextNode; - } - - protected function dom(): DOMDocument - { - return $this->dom; - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Xml/Node.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Xml/Node.php deleted file mode 100644 index b2ba54b2..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Xml/Node.php +++ /dev/null @@ -1,86 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Report\Xml; - -use DOMDocument; -use DOMElement; - -/** - * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage - */ -abstract class Node -{ - private DOMDocument $dom; - private DOMElement $contextNode; - - public function __construct(DOMElement $context) - { - $this->setContextNode($context); - } - - public function dom(): DOMDocument - { - return $this->dom; - } - - public function totals(): Totals - { - $totalsContainer = $this->contextNode()->firstChild; - - if (!$totalsContainer) { - $totalsContainer = $this->contextNode()->appendChild( - $this->dom->createElementNS( - 'https://schema.phpunit.de/coverage/1.0', - 'totals', - ), - ); - } - - return new Totals($totalsContainer); - } - - public function addDirectory(string $name): Directory - { - $dirNode = $this->dom()->createElementNS( - 'https://schema.phpunit.de/coverage/1.0', - 'directory', - ); - - $dirNode->setAttribute('name', $name); - $this->contextNode()->appendChild($dirNode); - - return new Directory($dirNode); - } - - public function addFile(string $name, string $href): File - { - $fileNode = $this->dom()->createElementNS( - 'https://schema.phpunit.de/coverage/1.0', - 'file', - ); - - $fileNode->setAttribute('name', $name); - $fileNode->setAttribute('href', $href); - $this->contextNode()->appendChild($fileNode); - - return new File($fileNode); - } - - protected function setContextNode(DOMElement $context): void - { - $this->dom = $context->ownerDocument; - $this->contextNode = $context; - } - - protected function contextNode(): DOMElement - { - return $this->contextNode; - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Xml/Project.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Xml/Project.php deleted file mode 100644 index b450beb4..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Xml/Project.php +++ /dev/null @@ -1,90 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Report\Xml; - -use DOMDocument; - -/** - * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage - */ -final class Project extends Node -{ - public function __construct(string $directory) - { - $this->init(); - $this->setProjectSourceDirectory($directory); - } - - public function projectSourceDirectory(): string - { - return $this->contextNode()->getAttribute('source'); - } - - public function buildInformation(): BuildInformation - { - $buildNode = $this->dom()->getElementsByTagNameNS( - 'https://schema.phpunit.de/coverage/1.0', - 'build', - )->item(0); - - if (!$buildNode) { - $buildNode = $this->dom()->documentElement->appendChild( - $this->dom()->createElementNS( - 'https://schema.phpunit.de/coverage/1.0', - 'build', - ), - ); - } - - return new BuildInformation($buildNode); - } - - public function tests(): Tests - { - $testsNode = $this->contextNode()->getElementsByTagNameNS( - 'https://schema.phpunit.de/coverage/1.0', - 'tests', - )->item(0); - - if (!$testsNode) { - $testsNode = $this->contextNode()->appendChild( - $this->dom()->createElementNS( - 'https://schema.phpunit.de/coverage/1.0', - 'tests', - ), - ); - } - - return new Tests($testsNode); - } - - public function asDom(): DOMDocument - { - return $this->dom(); - } - - private function init(): void - { - $dom = new DOMDocument; - $dom->loadXML(''); - - $this->setContextNode( - $dom->getElementsByTagNameNS( - 'https://schema.phpunit.de/coverage/1.0', - 'project', - )->item(0), - ); - } - - private function setProjectSourceDirectory(string $name): void - { - $this->contextNode()->setAttribute('source', $name); - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Xml/Report.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Xml/Report.php deleted file mode 100644 index 09d10341..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Xml/Report.php +++ /dev/null @@ -1,99 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Report\Xml; - -use function basename; -use function dirname; -use DOMDocument; - -/** - * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage - */ -final class Report extends File -{ - public function __construct(string $name) - { - $dom = new DOMDocument; - $dom->loadXML(''); - - $contextNode = $dom->getElementsByTagNameNS( - 'https://schema.phpunit.de/coverage/1.0', - 'file', - )->item(0); - - parent::__construct($contextNode); - - $this->setName($name); - } - - public function asDom(): DOMDocument - { - return $this->dom(); - } - - public function functionObject($name): Method - { - $node = $this->contextNode()->appendChild( - $this->dom()->createElementNS( - 'https://schema.phpunit.de/coverage/1.0', - 'function', - ), - ); - - return new Method($node, $name); - } - - public function classObject($name): Unit - { - return $this->unitObject('class', $name); - } - - public function traitObject($name): Unit - { - return $this->unitObject('trait', $name); - } - - public function source(): Source - { - $source = $this->contextNode()->getElementsByTagNameNS( - 'https://schema.phpunit.de/coverage/1.0', - 'source', - )->item(0); - - if (!$source) { - $source = $this->contextNode()->appendChild( - $this->dom()->createElementNS( - 'https://schema.phpunit.de/coverage/1.0', - 'source', - ), - ); - } - - return new Source($source); - } - - private function setName(string $name): void - { - $this->contextNode()->setAttribute('name', basename($name)); - $this->contextNode()->setAttribute('path', dirname($name)); - } - - private function unitObject(string $tagName, $name): Unit - { - $node = $this->contextNode()->appendChild( - $this->dom()->createElementNS( - 'https://schema.phpunit.de/coverage/1.0', - $tagName, - ), - ); - - return new Unit($node, $name); - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Xml/Source.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Xml/Source.php deleted file mode 100644 index cd1fb90c..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Xml/Source.php +++ /dev/null @@ -1,41 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Report\Xml; - -use DOMElement; -use TheSeer\Tokenizer\NamespaceUri; -use TheSeer\Tokenizer\Tokenizer; -use TheSeer\Tokenizer\XMLSerializer; - -/** - * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage - */ -final class Source -{ - private readonly DOMElement $context; - - public function __construct(DOMElement $context) - { - $this->context = $context; - } - - public function setSourceCode(string $source): void - { - $context = $this->context; - - $tokens = (new Tokenizer)->parse($source); - $srcDom = (new XMLSerializer(new NamespaceUri($context->namespaceURI)))->toDom($tokens); - - $context->parentNode->replaceChild( - $context->ownerDocument->importNode($srcDom->documentElement, true), - $context, - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Xml/Tests.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Xml/Tests.php deleted file mode 100644 index 44d6010b..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Xml/Tests.php +++ /dev/null @@ -1,44 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Report\Xml; - -use DOMElement; - -/** - * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage - * - * @psalm-import-type TestType from \SebastianBergmann\CodeCoverage\CodeCoverage - */ -final class Tests -{ - private readonly DOMElement $contextNode; - - public function __construct(DOMElement $context) - { - $this->contextNode = $context; - } - - /** - * @param TestType $result - */ - public function addTest(string $test, array $result): void - { - $node = $this->contextNode->appendChild( - $this->contextNode->ownerDocument->createElementNS( - 'https://schema.phpunit.de/coverage/1.0', - 'test', - ), - ); - - $node->setAttribute('name', $test); - $node->setAttribute('size', $result['size']); - $node->setAttribute('status', $result['status']); - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Xml/Totals.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Xml/Totals.php deleted file mode 100644 index 239f6d43..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Xml/Totals.php +++ /dev/null @@ -1,123 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Report\Xml; - -use function sprintf; -use DOMElement; -use DOMNode; -use SebastianBergmann\CodeCoverage\Util\Percentage; - -/** - * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage - */ -final class Totals -{ - private readonly DOMNode $container; - private readonly DOMElement $linesNode; - private readonly DOMElement $methodsNode; - private readonly DOMElement $functionsNode; - private readonly DOMElement $classesNode; - private readonly DOMElement $traitsNode; - - public function __construct(DOMElement $container) - { - $this->container = $container; - $dom = $container->ownerDocument; - - $this->linesNode = $dom->createElementNS( - 'https://schema.phpunit.de/coverage/1.0', - 'lines', - ); - - $this->methodsNode = $dom->createElementNS( - 'https://schema.phpunit.de/coverage/1.0', - 'methods', - ); - - $this->functionsNode = $dom->createElementNS( - 'https://schema.phpunit.de/coverage/1.0', - 'functions', - ); - - $this->classesNode = $dom->createElementNS( - 'https://schema.phpunit.de/coverage/1.0', - 'classes', - ); - - $this->traitsNode = $dom->createElementNS( - 'https://schema.phpunit.de/coverage/1.0', - 'traits', - ); - - $container->appendChild($this->linesNode); - $container->appendChild($this->methodsNode); - $container->appendChild($this->functionsNode); - $container->appendChild($this->classesNode); - $container->appendChild($this->traitsNode); - } - - public function container(): DOMNode - { - return $this->container; - } - - public function setNumLines(int $loc, int $cloc, int $ncloc, int $executable, int $executed): void - { - $this->linesNode->setAttribute('total', (string) $loc); - $this->linesNode->setAttribute('comments', (string) $cloc); - $this->linesNode->setAttribute('code', (string) $ncloc); - $this->linesNode->setAttribute('executable', (string) $executable); - $this->linesNode->setAttribute('executed', (string) $executed); - $this->linesNode->setAttribute( - 'percent', - $executable === 0 ? '0' : sprintf('%01.2F', Percentage::fromFractionAndTotal($executed, $executable)->asFloat()), - ); - } - - public function setNumClasses(int $count, int $tested): void - { - $this->classesNode->setAttribute('count', (string) $count); - $this->classesNode->setAttribute('tested', (string) $tested); - $this->classesNode->setAttribute( - 'percent', - $count === 0 ? '0' : sprintf('%01.2F', Percentage::fromFractionAndTotal($tested, $count)->asFloat()), - ); - } - - public function setNumTraits(int $count, int $tested): void - { - $this->traitsNode->setAttribute('count', (string) $count); - $this->traitsNode->setAttribute('tested', (string) $tested); - $this->traitsNode->setAttribute( - 'percent', - $count === 0 ? '0' : sprintf('%01.2F', Percentage::fromFractionAndTotal($tested, $count)->asFloat()), - ); - } - - public function setNumMethods(int $count, int $tested): void - { - $this->methodsNode->setAttribute('count', (string) $count); - $this->methodsNode->setAttribute('tested', (string) $tested); - $this->methodsNode->setAttribute( - 'percent', - $count === 0 ? '0' : sprintf('%01.2F', Percentage::fromFractionAndTotal($tested, $count)->asFloat()), - ); - } - - public function setNumFunctions(int $count, int $tested): void - { - $this->functionsNode->setAttribute('count', (string) $count); - $this->functionsNode->setAttribute('tested', (string) $tested); - $this->functionsNode->setAttribute( - 'percent', - $count === 0 ? '0' : sprintf('%01.2F', Percentage::fromFractionAndTotal($tested, $count)->asFloat()), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Xml/Unit.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Xml/Unit.php deleted file mode 100644 index ea1a47f2..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Report/Xml/Unit.php +++ /dev/null @@ -1,75 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Report\Xml; - -use DOMElement; - -/** - * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage - */ -final class Unit -{ - private readonly DOMElement $contextNode; - - public function __construct(DOMElement $context, string $name) - { - $this->contextNode = $context; - - $this->setName($name); - } - - public function setLines(int $start, int $executable, int $executed): void - { - $this->contextNode->setAttribute('start', (string) $start); - $this->contextNode->setAttribute('executable', (string) $executable); - $this->contextNode->setAttribute('executed', (string) $executed); - } - - public function setCrap(float $crap): void - { - $this->contextNode->setAttribute('crap', (string) $crap); - } - - public function setNamespace(string $namespace): void - { - $node = $this->contextNode->getElementsByTagNameNS( - 'https://schema.phpunit.de/coverage/1.0', - 'namespace', - )->item(0); - - if (!$node) { - $node = $this->contextNode->appendChild( - $this->contextNode->ownerDocument->createElementNS( - 'https://schema.phpunit.de/coverage/1.0', - 'namespace', - ), - ); - } - - $node->setAttribute('name', $namespace); - } - - public function addMethod(string $name): Method - { - $node = $this->contextNode->appendChild( - $this->contextNode->ownerDocument->createElementNS( - 'https://schema.phpunit.de/coverage/1.0', - 'method', - ), - ); - - return new Method($node, $name); - } - - private function setName(string $name): void - { - $this->contextNode->setAttribute('name', $name); - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/StaticAnalysis/CacheWarmer.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/StaticAnalysis/CacheWarmer.php deleted file mode 100644 index 47cc756c..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/StaticAnalysis/CacheWarmer.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\StaticAnalysis; - -use SebastianBergmann\CodeCoverage\Filter; - -final class CacheWarmer -{ - public function warmCache(string $cacheDirectory, bool $useAnnotationsForIgnoringCode, bool $ignoreDeprecatedCode, Filter $filter): void - { - $analyser = new CachingFileAnalyser( - $cacheDirectory, - new ParsingFileAnalyser( - $useAnnotationsForIgnoringCode, - $ignoreDeprecatedCode, - ), - $useAnnotationsForIgnoringCode, - $ignoreDeprecatedCode, - ); - - foreach ($filter->files() as $file) { - $analyser->process($file); - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/StaticAnalysis/CachingFileAnalyser.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/StaticAnalysis/CachingFileAnalyser.php deleted file mode 100644 index 2ce4d604..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/StaticAnalysis/CachingFileAnalyser.php +++ /dev/null @@ -1,182 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\StaticAnalysis; - -use function file_get_contents; -use function file_put_contents; -use function implode; -use function is_file; -use function md5; -use function serialize; -use function unserialize; -use SebastianBergmann\CodeCoverage\Util\Filesystem; -use SebastianBergmann\FileIterator\Facade as FileIteratorFacade; - -/** - * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage - * - * @psalm-import-type LinesOfCodeType from \SebastianBergmann\CodeCoverage\StaticAnalysis\FileAnalyser - */ -final class CachingFileAnalyser implements FileAnalyser -{ - private static ?string $cacheVersion = null; - private readonly string $directory; - private readonly FileAnalyser $analyser; - private readonly bool $useAnnotationsForIgnoringCode; - private readonly bool $ignoreDeprecatedCode; - private array $cache = []; - - public function __construct(string $directory, FileAnalyser $analyser, bool $useAnnotationsForIgnoringCode, bool $ignoreDeprecatedCode) - { - Filesystem::createDirectory($directory); - - $this->analyser = $analyser; - $this->directory = $directory; - $this->useAnnotationsForIgnoringCode = $useAnnotationsForIgnoringCode; - $this->ignoreDeprecatedCode = $ignoreDeprecatedCode; - } - - public function classesIn(string $filename): array - { - if (!isset($this->cache[$filename])) { - $this->process($filename); - } - - return $this->cache[$filename]['classesIn']; - } - - public function traitsIn(string $filename): array - { - if (!isset($this->cache[$filename])) { - $this->process($filename); - } - - return $this->cache[$filename]['traitsIn']; - } - - public function functionsIn(string $filename): array - { - if (!isset($this->cache[$filename])) { - $this->process($filename); - } - - return $this->cache[$filename]['functionsIn']; - } - - /** - * @psalm-return LinesOfCodeType - */ - public function linesOfCodeFor(string $filename): array - { - if (!isset($this->cache[$filename])) { - $this->process($filename); - } - - return $this->cache[$filename]['linesOfCodeFor']; - } - - public function executableLinesIn(string $filename): array - { - if (!isset($this->cache[$filename])) { - $this->process($filename); - } - - return $this->cache[$filename]['executableLinesIn']; - } - - public function ignoredLinesFor(string $filename): array - { - if (!isset($this->cache[$filename])) { - $this->process($filename); - } - - return $this->cache[$filename]['ignoredLinesFor']; - } - - public function process(string $filename): void - { - $cache = $this->read($filename); - - if ($cache !== false) { - $this->cache[$filename] = $cache; - - return; - } - - $this->cache[$filename] = [ - 'classesIn' => $this->analyser->classesIn($filename), - 'traitsIn' => $this->analyser->traitsIn($filename), - 'functionsIn' => $this->analyser->functionsIn($filename), - 'linesOfCodeFor' => $this->analyser->linesOfCodeFor($filename), - 'ignoredLinesFor' => $this->analyser->ignoredLinesFor($filename), - 'executableLinesIn' => $this->analyser->executableLinesIn($filename), - ]; - - $this->write($filename, $this->cache[$filename]); - } - - private function read(string $filename): array|false - { - $cacheFile = $this->cacheFile($filename); - - if (!is_file($cacheFile)) { - return false; - } - - return unserialize( - file_get_contents($cacheFile), - ['allowed_classes' => false], - ); - } - - private function write(string $filename, array $data): void - { - file_put_contents( - $this->cacheFile($filename), - serialize($data), - ); - } - - private function cacheFile(string $filename): string - { - $cacheKey = md5( - implode( - "\0", - [ - $filename, - file_get_contents($filename), - self::cacheVersion(), - $this->useAnnotationsForIgnoringCode, - $this->ignoreDeprecatedCode, - ], - ), - ); - - return $this->directory . DIRECTORY_SEPARATOR . $cacheKey; - } - - private static function cacheVersion(): string - { - if (self::$cacheVersion !== null) { - return self::$cacheVersion; - } - - $buffer = []; - - foreach ((new FileIteratorFacade)->getFilesAsArray(__DIR__, '.php') as $file) { - $buffer[] = $file; - $buffer[] = file_get_contents($file); - } - - self::$cacheVersion = md5(implode("\0", $buffer)); - - return self::$cacheVersion; - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/StaticAnalysis/CodeUnitFindingVisitor.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/StaticAnalysis/CodeUnitFindingVisitor.php deleted file mode 100644 index 5530221d..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/StaticAnalysis/CodeUnitFindingVisitor.php +++ /dev/null @@ -1,360 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\StaticAnalysis; - -use function assert; -use function implode; -use function rtrim; -use function trim; -use PhpParser\Node; -use PhpParser\Node\ComplexType; -use PhpParser\Node\Identifier; -use PhpParser\Node\IntersectionType; -use PhpParser\Node\Name; -use PhpParser\Node\NullableType; -use PhpParser\Node\Stmt\Class_; -use PhpParser\Node\Stmt\ClassMethod; -use PhpParser\Node\Stmt\Enum_; -use PhpParser\Node\Stmt\Function_; -use PhpParser\Node\Stmt\Interface_; -use PhpParser\Node\Stmt\Trait_; -use PhpParser\Node\UnionType; -use PhpParser\NodeTraverser; -use PhpParser\NodeVisitorAbstract; -use SebastianBergmann\Complexity\CyclomaticComplexityCalculatingVisitor; - -/** - * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage - * - * @psalm-type CodeUnitFunctionType = array{ - * name: string, - * namespacedName: string, - * namespace: string, - * signature: string, - * startLine: int, - * endLine: int, - * ccn: int - * } - * @psalm-type CodeUnitMethodType = array{ - * methodName: string, - * signature: string, - * visibility: string, - * startLine: int, - * endLine: int, - * ccn: int - * } - * @psalm-type CodeUnitClassType = array{ - * name: string, - * namespacedName: string, - * namespace: string, - * startLine: int, - * endLine: int, - * methods: array - * } - * @psalm-type CodeUnitTraitType = array{ - * name: string, - * namespacedName: string, - * namespace: string, - * startLine: int, - * endLine: int, - * methods: array - * } - */ -final class CodeUnitFindingVisitor extends NodeVisitorAbstract -{ - /** - * @psalm-var array - */ - private array $classes = []; - - /** - * @psalm-var array - */ - private array $traits = []; - - /** - * @psalm-var array - */ - private array $functions = []; - - public function enterNode(Node $node): void - { - if ($node instanceof Class_) { - if ($node->isAnonymous()) { - return; - } - - $this->processClass($node); - } - - if ($node instanceof Trait_) { - $this->processTrait($node); - } - - if (!$node instanceof ClassMethod && !$node instanceof Function_) { - return; - } - - if ($node instanceof ClassMethod) { - $parentNode = $node->getAttribute('parent'); - - if ($parentNode instanceof Class_ && $parentNode->isAnonymous()) { - return; - } - - $this->processMethod($node); - - return; - } - - $this->processFunction($node); - } - - /** - * @psalm-return array - */ - public function classes(): array - { - return $this->classes; - } - - /** - * @psalm-return array - */ - public function traits(): array - { - return $this->traits; - } - - /** - * @psalm-return array - */ - public function functions(): array - { - return $this->functions; - } - - private function cyclomaticComplexity(ClassMethod|Function_ $node): int - { - $nodes = $node->getStmts(); - - if ($nodes === null) { - return 0; - } - - $traverser = new NodeTraverser; - - $cyclomaticComplexityCalculatingVisitor = new CyclomaticComplexityCalculatingVisitor; - - $traverser->addVisitor($cyclomaticComplexityCalculatingVisitor); - - /* @noinspection UnusedFunctionResultInspection */ - $traverser->traverse($nodes); - - return $cyclomaticComplexityCalculatingVisitor->cyclomaticComplexity(); - } - - private function signature(ClassMethod|Function_ $node): string - { - $signature = ($node->returnsByRef() ? '&' : '') . $node->name->toString() . '('; - $parameters = []; - - foreach ($node->getParams() as $parameter) { - assert(isset($parameter->var->name)); - - $parameterAsString = ''; - - if ($parameter->type !== null) { - $parameterAsString = $this->type($parameter->type) . ' '; - } - - $parameterAsString .= '$' . $parameter->var->name; - - /* @todo Handle default values */ - - $parameters[] = $parameterAsString; - } - - $signature .= implode(', ', $parameters) . ')'; - - $returnType = $node->getReturnType(); - - if ($returnType !== null) { - $signature .= ': ' . $this->type($returnType); - } - - return $signature; - } - - private function type(ComplexType|Identifier|Name $type): string - { - if ($type instanceof NullableType) { - return '?' . $type->type; - } - - if ($type instanceof UnionType) { - return $this->unionTypeAsString($type); - } - - if ($type instanceof IntersectionType) { - return $this->intersectionTypeAsString($type); - } - - return $type->toString(); - } - - private function visibility(ClassMethod $node): string - { - if ($node->isPrivate()) { - return 'private'; - } - - if ($node->isProtected()) { - return 'protected'; - } - - return 'public'; - } - - private function processClass(Class_ $node): void - { - $name = $node->name->toString(); - $namespacedName = $node->namespacedName->toString(); - - $this->classes[$namespacedName] = [ - 'name' => $name, - 'namespacedName' => $namespacedName, - 'namespace' => $this->namespace($namespacedName, $name), - 'startLine' => $node->getStartLine(), - 'endLine' => $node->getEndLine(), - 'methods' => [], - ]; - } - - private function processTrait(Trait_ $node): void - { - $name = $node->name->toString(); - $namespacedName = $node->namespacedName->toString(); - - $this->traits[$namespacedName] = [ - 'name' => $name, - 'namespacedName' => $namespacedName, - 'namespace' => $this->namespace($namespacedName, $name), - 'startLine' => $node->getStartLine(), - 'endLine' => $node->getEndLine(), - 'methods' => [], - ]; - } - - private function processMethod(ClassMethod $node): void - { - $parentNode = $node->getAttribute('parent'); - - if ($parentNode instanceof Interface_) { - return; - } - - assert($parentNode instanceof Class_ || $parentNode instanceof Trait_ || $parentNode instanceof Enum_); - assert(isset($parentNode->name)); - assert(isset($parentNode->namespacedName)); - assert($parentNode->namespacedName instanceof Name); - - $parentName = $parentNode->name->toString(); - $parentNamespacedName = $parentNode->namespacedName->toString(); - - if ($parentNode instanceof Class_) { - $storage = &$this->classes; - } else { - $storage = &$this->traits; - } - - if (!isset($storage[$parentNamespacedName])) { - $storage[$parentNamespacedName] = [ - 'name' => $parentName, - 'namespacedName' => $parentNamespacedName, - 'namespace' => $this->namespace($parentNamespacedName, $parentName), - 'startLine' => $parentNode->getStartLine(), - 'endLine' => $parentNode->getEndLine(), - 'methods' => [], - ]; - } - - $storage[$parentNamespacedName]['methods'][$node->name->toString()] = [ - 'methodName' => $node->name->toString(), - 'signature' => $this->signature($node), - 'visibility' => $this->visibility($node), - 'startLine' => $node->getStartLine(), - 'endLine' => $node->getEndLine(), - 'ccn' => $this->cyclomaticComplexity($node), - ]; - } - - private function processFunction(Function_ $node): void - { - assert(isset($node->name)); - assert(isset($node->namespacedName)); - assert($node->namespacedName instanceof Name); - - $name = $node->name->toString(); - $namespacedName = $node->namespacedName->toString(); - - $this->functions[$namespacedName] = [ - 'name' => $name, - 'namespacedName' => $namespacedName, - 'namespace' => $this->namespace($namespacedName, $name), - 'signature' => $this->signature($node), - 'startLine' => $node->getStartLine(), - 'endLine' => $node->getEndLine(), - 'ccn' => $this->cyclomaticComplexity($node), - ]; - } - - private function namespace(string $namespacedName, string $name): string - { - return trim(rtrim($namespacedName, $name), '\\'); - } - - private function unionTypeAsString(UnionType $node): string - { - $types = []; - - foreach ($node->types as $type) { - if ($type instanceof IntersectionType) { - $types[] = '(' . $this->intersectionTypeAsString($type) . ')'; - - continue; - } - - $types[] = $this->typeAsString($type); - } - - return implode('|', $types); - } - - private function intersectionTypeAsString(IntersectionType $node): string - { - $types = []; - - foreach ($node->types as $type) { - $types[] = $this->typeAsString($type); - } - - return implode('&', $types); - } - - private function typeAsString(Identifier|Name $node): string - { - if ($node instanceof Name) { - return $node->toCodeString(); - } - - return $node->toString(); - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/StaticAnalysis/ExecutableLinesFindingVisitor.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/StaticAnalysis/ExecutableLinesFindingVisitor.php deleted file mode 100644 index a15894da..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/StaticAnalysis/ExecutableLinesFindingVisitor.php +++ /dev/null @@ -1,413 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\StaticAnalysis; - -use function array_diff_key; -use function assert; -use function count; -use function current; -use function end; -use function explode; -use function max; -use function preg_match; -use function preg_quote; -use function range; -use function reset; -use function sprintf; -use PhpParser\Node; -use PhpParser\NodeVisitorAbstract; - -/** - * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage - * - * @psalm-import-type LinesType from \SebastianBergmann\CodeCoverage\StaticAnalysis\FileAnalyser - */ -final class ExecutableLinesFindingVisitor extends NodeVisitorAbstract -{ - private int $nextBranch = 0; - private readonly string $source; - - /** - * @psalm-var LinesType - */ - private array $executableLinesGroupedByBranch = []; - - /** - * @psalm-var array - */ - private array $unsets = []; - - /** - * @psalm-var array - */ - private array $commentsToCheckForUnset = []; - - public function __construct(string $source) - { - $this->source = $source; - } - - public function enterNode(Node $node): void - { - foreach ($node->getComments() as $comment) { - $commentLine = $comment->getStartLine(); - - if (!isset($this->executableLinesGroupedByBranch[$commentLine])) { - continue; - } - - foreach (explode("\n", $comment->getText()) as $text) { - $this->commentsToCheckForUnset[$commentLine] = $text; - $commentLine++; - } - } - - if ($node instanceof Node\Scalar\String_ || - $node instanceof Node\Scalar\EncapsedStringPart) { - $startLine = $node->getStartLine() + 1; - $endLine = $node->getEndLine() - 1; - - if ($startLine <= $endLine) { - foreach (range($startLine, $endLine) as $line) { - unset($this->executableLinesGroupedByBranch[$line]); - } - } - - return; - } - - if ($node instanceof Node\Stmt\Interface_) { - foreach (range($node->getStartLine(), $node->getEndLine()) as $line) { - $this->unsets[$line] = true; - } - - return; - } - - if ($node instanceof Node\Stmt\Declare_ || - $node instanceof Node\Stmt\DeclareDeclare || - $node instanceof Node\Stmt\Else_ || - $node instanceof Node\Stmt\EnumCase || - $node instanceof Node\Stmt\Finally_ || - $node instanceof Node\Stmt\GroupUse || - $node instanceof Node\Stmt\Label || - $node instanceof Node\Stmt\Namespace_ || - $node instanceof Node\Stmt\Nop || - $node instanceof Node\Stmt\Switch_ || - $node instanceof Node\Stmt\TryCatch || - $node instanceof Node\Stmt\Use_ || - $node instanceof Node\Stmt\UseUse || - $node instanceof Node\Expr\ConstFetch || - $node instanceof Node\Expr\Variable || - $node instanceof Node\Expr\Throw_ || - $node instanceof Node\ComplexType || - $node instanceof Node\Const_ || - $node instanceof Node\Identifier || - $node instanceof Node\Name || - $node instanceof Node\Param || - $node instanceof Node\Scalar) { - return; - } - - if ($node instanceof Node\Expr\Match_) { - foreach ($node->arms as $arm) { - $this->setLineBranch( - $arm->body->getStartLine(), - $arm->body->getEndLine(), - ++$this->nextBranch, - ); - } - - return; - } - - /* - * nikic/php-parser ^4.18 represents throw statements - * as Stmt\Throw_ objects - */ - if ($node instanceof Node\Stmt\Throw_) { - $this->setLineBranch($node->expr->getEndLine(), $node->expr->getEndLine(), ++$this->nextBranch); - - return; - } - - /* - * nikic/php-parser ^5 represents throw statements - * as Stmt\Expression objects that contain an - * Expr\Throw_ object - */ - if ($node instanceof Node\Stmt\Expression && $node->expr instanceof Node\Expr\Throw_) { - $this->setLineBranch($node->expr->expr->getEndLine(), $node->expr->expr->getEndLine(), ++$this->nextBranch); - - return; - } - - if ($node instanceof Node\Stmt\Enum_ || - $node instanceof Node\Stmt\Function_ || - $node instanceof Node\Stmt\Class_ || - $node instanceof Node\Stmt\ClassMethod || - $node instanceof Node\Expr\Closure || - $node instanceof Node\Stmt\Trait_) { - if ($node instanceof Node\Stmt\Function_ || $node instanceof Node\Stmt\ClassMethod) { - $unsets = []; - - foreach ($node->getParams() as $param) { - foreach (range($param->getStartLine(), $param->getEndLine()) as $line) { - $unsets[$line] = true; - } - } - - unset($unsets[$node->getEndLine()]); - - $this->unsets += $unsets; - } - - $isConcreteClassLike = $node instanceof Node\Stmt\Enum_ || $node instanceof Node\Stmt\Class_ || $node instanceof Node\Stmt\Trait_; - - if (null !== $node->stmts) { - foreach ($node->stmts as $stmt) { - if ($stmt instanceof Node\Stmt\Nop) { - continue; - } - - foreach (range($stmt->getStartLine(), $stmt->getEndLine()) as $line) { - unset($this->executableLinesGroupedByBranch[$line]); - - if ( - $isConcreteClassLike && - !$stmt instanceof Node\Stmt\ClassMethod - ) { - $this->unsets[$line] = true; - } - } - } - } - - if ($isConcreteClassLike) { - return; - } - - $hasEmptyBody = [] === $node->stmts || - null === $node->stmts || - ( - 1 === count($node->stmts) && - $node->stmts[0] instanceof Node\Stmt\Nop - ); - - if ($hasEmptyBody) { - if ($node->getEndLine() === $node->getStartLine() && isset($this->executableLinesGroupedByBranch[$node->getStartLine()])) { - return; - } - - $this->setLineBranch($node->getEndLine(), $node->getEndLine(), ++$this->nextBranch); - - return; - } - - return; - } - - if ($node instanceof Node\Expr\ArrowFunction) { - $startLine = max( - $node->getStartLine() + 1, - $node->expr->getStartLine(), - ); - - $endLine = $node->expr->getEndLine(); - - if ($endLine < $startLine) { - return; - } - - $this->setLineBranch($startLine, $endLine, ++$this->nextBranch); - - return; - } - - if ($node instanceof Node\Expr\Ternary) { - if (null !== $node->if && - $node->getStartLine() !== $node->if->getEndLine()) { - $this->setLineBranch($node->if->getStartLine(), $node->if->getEndLine(), ++$this->nextBranch); - } - - if ($node->getStartLine() !== $node->else->getEndLine()) { - $this->setLineBranch($node->else->getStartLine(), $node->else->getEndLine(), ++$this->nextBranch); - } - - return; - } - - if ($node instanceof Node\Expr\BinaryOp\Coalesce) { - if ($node->getStartLine() !== $node->getEndLine()) { - $this->setLineBranch($node->getEndLine(), $node->getEndLine(), ++$this->nextBranch); - } - - return; - } - - if ($node instanceof Node\Stmt\If_ || - $node instanceof Node\Stmt\ElseIf_ || - $node instanceof Node\Stmt\Case_) { - if (null === $node->cond) { - return; - } - - $this->setLineBranch( - $node->cond->getStartLine(), - $node->cond->getStartLine(), - ++$this->nextBranch, - ); - - return; - } - - if ($node instanceof Node\Stmt\For_) { - $startLine = null; - $endLine = null; - - if ([] !== $node->init) { - $startLine = $node->init[0]->getStartLine(); - - end($node->init); - - $endLine = current($node->init)->getEndLine(); - - reset($node->init); - } - - if ([] !== $node->cond) { - if (null === $startLine) { - $startLine = $node->cond[0]->getStartLine(); - } - - end($node->cond); - - $endLine = current($node->cond)->getEndLine(); - - reset($node->cond); - } - - if ([] !== $node->loop) { - if (null === $startLine) { - $startLine = $node->loop[0]->getStartLine(); - } - - end($node->loop); - - $endLine = current($node->loop)->getEndLine(); - - reset($node->loop); - } - - if (null === $startLine || null === $endLine) { - return; - } - - $this->setLineBranch( - $startLine, - $endLine, - ++$this->nextBranch, - ); - - return; - } - - if ($node instanceof Node\Stmt\Foreach_) { - $this->setLineBranch( - $node->expr->getStartLine(), - $node->valueVar->getEndLine(), - ++$this->nextBranch, - ); - - return; - } - - if ($node instanceof Node\Stmt\While_ || - $node instanceof Node\Stmt\Do_) { - $this->setLineBranch( - $node->cond->getStartLine(), - $node->cond->getEndLine(), - ++$this->nextBranch, - ); - - return; - } - - if ($node instanceof Node\Stmt\Catch_) { - assert([] !== $node->types); - $startLine = $node->types[0]->getStartLine(); - end($node->types); - $endLine = current($node->types)->getEndLine(); - - $this->setLineBranch( - $startLine, - $endLine, - ++$this->nextBranch, - ); - - return; - } - - if ($node instanceof Node\Expr\CallLike) { - if (isset($this->executableLinesGroupedByBranch[$node->getStartLine()])) { - $branch = $this->executableLinesGroupedByBranch[$node->getStartLine()]; - } else { - $branch = ++$this->nextBranch; - } - - $this->setLineBranch($node->getStartLine(), $node->getEndLine(), $branch); - - return; - } - - if (isset($this->executableLinesGroupedByBranch[$node->getStartLine()])) { - return; - } - - $this->setLineBranch($node->getStartLine(), $node->getEndLine(), ++$this->nextBranch); - } - - public function afterTraverse(array $nodes): void - { - $lines = explode("\n", $this->source); - - foreach ($lines as $lineNumber => $line) { - $lineNumber++; - - if (1 === preg_match('/^\s*$/', $line) || - ( - isset($this->commentsToCheckForUnset[$lineNumber]) && - 1 === preg_match(sprintf('/^\s*%s\s*$/', preg_quote($this->commentsToCheckForUnset[$lineNumber], '/')), $line) - )) { - unset($this->executableLinesGroupedByBranch[$lineNumber]); - } - } - - $this->executableLinesGroupedByBranch = array_diff_key( - $this->executableLinesGroupedByBranch, - $this->unsets, - ); - } - - /** - * @psalm-return LinesType - */ - public function executableLinesGroupedByBranch(): array - { - return $this->executableLinesGroupedByBranch; - } - - private function setLineBranch(int $start, int $end, int $branch): void - { - foreach (range($start, $end) as $line) { - $this->executableLinesGroupedByBranch[$line] = $branch; - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/StaticAnalysis/IgnoredLinesFindingVisitor.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/StaticAnalysis/IgnoredLinesFindingVisitor.php deleted file mode 100644 index a3be120b..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/StaticAnalysis/IgnoredLinesFindingVisitor.php +++ /dev/null @@ -1,121 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\StaticAnalysis; - -use function assert; -use function str_contains; -use PhpParser\Node; -use PhpParser\Node\Attribute; -use PhpParser\Node\Stmt\Class_; -use PhpParser\Node\Stmt\ClassMethod; -use PhpParser\Node\Stmt\Enum_; -use PhpParser\Node\Stmt\Function_; -use PhpParser\Node\Stmt\Interface_; -use PhpParser\Node\Stmt\Trait_; -use PhpParser\NodeVisitorAbstract; - -/** - * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage - */ -final class IgnoredLinesFindingVisitor extends NodeVisitorAbstract -{ - /** - * @psalm-var array - */ - private array $ignoredLines = []; - private readonly bool $useAnnotationsForIgnoringCode; - private readonly bool $ignoreDeprecated; - - public function __construct(bool $useAnnotationsForIgnoringCode, bool $ignoreDeprecated) - { - $this->useAnnotationsForIgnoringCode = $useAnnotationsForIgnoringCode; - $this->ignoreDeprecated = $ignoreDeprecated; - } - - public function enterNode(Node $node): void - { - if (!$node instanceof Class_ && - !$node instanceof Trait_ && - !$node instanceof Interface_ && - !$node instanceof Enum_ && - !$node instanceof ClassMethod && - !$node instanceof Function_ && - !$node instanceof Attribute) { - return; - } - - if ($node instanceof Class_ && $node->isAnonymous()) { - return; - } - - if ($node instanceof Class_ || - $node instanceof Trait_ || - $node instanceof Interface_ || - $node instanceof Attribute) { - $this->ignoredLines[] = $node->getStartLine(); - - assert($node->name !== null); - - // Workaround for https://github.com/nikic/PHP-Parser/issues/886 - $this->ignoredLines[] = $node->name->getStartLine(); - } - - if (!$this->useAnnotationsForIgnoringCode) { - return; - } - - if ($node instanceof Interface_) { - return; - } - - if ($node instanceof Attribute && - $node->name->toString() === 'PHPUnit\Framework\Attributes\CodeCoverageIgnore') { - $attributeGroup = $node->getAttribute('parent'); - $attributedNode = $attributeGroup->getAttribute('parent'); - - for ($line = $attributedNode->getStartLine(); $line <= $attributedNode->getEndLine(); $line++) { - $this->ignoredLines[] = $line; - } - - return; - } - - $this->processDocComment($node); - } - - /** - * @psalm-return array - */ - public function ignoredLines(): array - { - return $this->ignoredLines; - } - - private function processDocComment(Node $node): void - { - $docComment = $node->getDocComment(); - - if ($docComment === null) { - return; - } - - if (str_contains($docComment->getText(), '@codeCoverageIgnore')) { - for ($line = $node->getStartLine(); $line <= $node->getEndLine(); $line++) { - $this->ignoredLines[] = $line; - } - } - - if ($this->ignoreDeprecated && str_contains($docComment->getText(), '@deprecated')) { - for ($line = $node->getStartLine(); $line <= $node->getEndLine(); $line++) { - $this->ignoredLines[] = $line; - } - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/StaticAnalysis/ParsingFileAnalyser.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/StaticAnalysis/ParsingFileAnalyser.php deleted file mode 100644 index ae2619fa..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/StaticAnalysis/ParsingFileAnalyser.php +++ /dev/null @@ -1,247 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\StaticAnalysis; - -use function array_merge; -use function array_unique; -use function assert; -use function file_get_contents; -use function is_array; -use function max; -use function range; -use function sort; -use function sprintf; -use function substr_count; -use function token_get_all; -use function trim; -use PhpParser\Error; -use PhpParser\NodeTraverser; -use PhpParser\NodeVisitor\NameResolver; -use PhpParser\NodeVisitor\ParentConnectingVisitor; -use PhpParser\ParserFactory; -use SebastianBergmann\CodeCoverage\ParserException; -use SebastianBergmann\LinesOfCode\LineCountingVisitor; - -/** - * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage - * - * @psalm-import-type CodeUnitFunctionType from \SebastianBergmann\CodeCoverage\StaticAnalysis\CodeUnitFindingVisitor - * @psalm-import-type CodeUnitMethodType from \SebastianBergmann\CodeCoverage\StaticAnalysis\CodeUnitFindingVisitor - * @psalm-import-type CodeUnitClassType from \SebastianBergmann\CodeCoverage\StaticAnalysis\CodeUnitFindingVisitor - * @psalm-import-type CodeUnitTraitType from \SebastianBergmann\CodeCoverage\StaticAnalysis\CodeUnitFindingVisitor - * @psalm-import-type LinesOfCodeType from \SebastianBergmann\CodeCoverage\StaticAnalysis\FileAnalyser - * @psalm-import-type LinesType from \SebastianBergmann\CodeCoverage\StaticAnalysis\FileAnalyser - */ -final class ParsingFileAnalyser implements FileAnalyser -{ - /** - * @psalm-var array> - */ - private array $classes = []; - - /** - * @psalm-var array> - */ - private array $traits = []; - - /** - * @psalm-var array> - */ - private array $functions = []; - - /** - * @var array - */ - private array $linesOfCode = []; - - /** - * @var array - */ - private array $ignoredLines = []; - - /** - * @var array - */ - private array $executableLines = []; - private readonly bool $useAnnotationsForIgnoringCode; - private readonly bool $ignoreDeprecatedCode; - - public function __construct(bool $useAnnotationsForIgnoringCode, bool $ignoreDeprecatedCode) - { - $this->useAnnotationsForIgnoringCode = $useAnnotationsForIgnoringCode; - $this->ignoreDeprecatedCode = $ignoreDeprecatedCode; - } - - public function classesIn(string $filename): array - { - $this->analyse($filename); - - return $this->classes[$filename]; - } - - public function traitsIn(string $filename): array - { - $this->analyse($filename); - - return $this->traits[$filename]; - } - - public function functionsIn(string $filename): array - { - $this->analyse($filename); - - return $this->functions[$filename]; - } - - public function linesOfCodeFor(string $filename): array - { - $this->analyse($filename); - - return $this->linesOfCode[$filename]; - } - - public function executableLinesIn(string $filename): array - { - $this->analyse($filename); - - return $this->executableLines[$filename]; - } - - public function ignoredLinesFor(string $filename): array - { - $this->analyse($filename); - - return $this->ignoredLines[$filename]; - } - - /** - * @throws ParserException - */ - private function analyse(string $filename): void - { - if (isset($this->classes[$filename])) { - return; - } - - $source = file_get_contents($filename); - $linesOfCode = max(substr_count($source, "\n") + 1, substr_count($source, "\r") + 1); - - if ($linesOfCode === 0 && !empty($source)) { - $linesOfCode = 1; - } - - assert($linesOfCode > 0); - - $parser = (new ParserFactory)->createForHostVersion(); - - try { - $nodes = $parser->parse($source); - - assert($nodes !== null); - - $traverser = new NodeTraverser; - $codeUnitFindingVisitor = new CodeUnitFindingVisitor; - $lineCountingVisitor = new LineCountingVisitor($linesOfCode); - $ignoredLinesFindingVisitor = new IgnoredLinesFindingVisitor($this->useAnnotationsForIgnoringCode, $this->ignoreDeprecatedCode); - $executableLinesFindingVisitor = new ExecutableLinesFindingVisitor($source); - - $traverser->addVisitor(new NameResolver); - $traverser->addVisitor(new ParentConnectingVisitor); - $traverser->addVisitor($codeUnitFindingVisitor); - $traverser->addVisitor($lineCountingVisitor); - $traverser->addVisitor($ignoredLinesFindingVisitor); - $traverser->addVisitor($executableLinesFindingVisitor); - - /* @noinspection UnusedFunctionResultInspection */ - $traverser->traverse($nodes); - // @codeCoverageIgnoreStart - } catch (Error $error) { - throw new ParserException( - sprintf( - 'Cannot parse %s: %s', - $filename, - $error->getMessage(), - ), - $error->getCode(), - $error, - ); - } - // @codeCoverageIgnoreEnd - - $this->classes[$filename] = $codeUnitFindingVisitor->classes(); - $this->traits[$filename] = $codeUnitFindingVisitor->traits(); - $this->functions[$filename] = $codeUnitFindingVisitor->functions(); - $this->executableLines[$filename] = $executableLinesFindingVisitor->executableLinesGroupedByBranch(); - $this->ignoredLines[$filename] = []; - - $this->findLinesIgnoredByLineBasedAnnotations($filename, $source, $this->useAnnotationsForIgnoringCode); - - $this->ignoredLines[$filename] = array_unique( - array_merge( - $this->ignoredLines[$filename], - $ignoredLinesFindingVisitor->ignoredLines(), - ), - ); - - sort($this->ignoredLines[$filename]); - - $result = $lineCountingVisitor->result(); - - $this->linesOfCode[$filename] = [ - 'linesOfCode' => $result->linesOfCode(), - 'commentLinesOfCode' => $result->commentLinesOfCode(), - 'nonCommentLinesOfCode' => $result->nonCommentLinesOfCode(), - ]; - } - - private function findLinesIgnoredByLineBasedAnnotations(string $filename, string $source, bool $useAnnotationsForIgnoringCode): void - { - if (!$useAnnotationsForIgnoringCode) { - return; - } - - $start = false; - - foreach (token_get_all($source) as $token) { - if (!is_array($token) || - !(T_COMMENT === $token[0] || T_DOC_COMMENT === $token[0])) { - continue; - } - - $comment = trim($token[1]); - - if ($comment === '// @codeCoverageIgnore' || - $comment === '//@codeCoverageIgnore') { - $this->ignoredLines[$filename][] = $token[2]; - - continue; - } - - if ($comment === '// @codeCoverageIgnoreStart' || - $comment === '//@codeCoverageIgnoreStart') { - $start = $token[2]; - - continue; - } - - if ($comment === '// @codeCoverageIgnoreEnd' || - $comment === '//@codeCoverageIgnoreEnd') { - if (false === $start) { - $start = $token[2]; - } - - $this->ignoredLines[$filename] = array_merge( - $this->ignoredLines[$filename], - range($start, $token[2]), - ); - } - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Util/Filesystem.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Util/Filesystem.php deleted file mode 100644 index 0e99b159..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Util/Filesystem.php +++ /dev/null @@ -1,37 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Util; - -use function is_dir; -use function mkdir; -use function sprintf; - -/** - * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage - */ -final class Filesystem -{ - /** - * @throws DirectoryCouldNotBeCreatedException - */ - public static function createDirectory(string $directory): void - { - $success = !(!is_dir($directory) && !@mkdir($directory, 0o777, true) && !is_dir($directory)); - - if (!$success) { - throw new DirectoryCouldNotBeCreatedException( - sprintf( - 'Directory "%s" could not be created', - $directory, - ), - ); - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Version.php b/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Version.php deleted file mode 100644 index 80b27f4d..00000000 --- a/docker/streamline-src/vendor/phpunit/php-code-coverage/src/Version.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage; - -use function dirname; -use SebastianBergmann\Version as VersionId; - -final class Version -{ - private static string $version = ''; - - public static function id(): string - { - if (self::$version === '') { - self::$version = (new VersionId('10.1.16', dirname(__DIR__)))->asString(); - } - - return self::$version; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/ChangeLog-10.5.md b/docker/streamline-src/vendor/phpunit/phpunit/ChangeLog-10.5.md deleted file mode 100644 index 9b1fd6fc..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/ChangeLog-10.5.md +++ /dev/null @@ -1,406 +0,0 @@ -# Changes in PHPUnit 10.5 - -All notable changes of the PHPUnit 10.5 release series are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles. - -## [10.5.40] - 2024-12-21 - -### Fixed - -* [#6082](https://github.com/sebastianbergmann/phpunit/issues/6082): `assertArrayHasKey()`, `assertArrayNotHasKey()`, `arrayHasKey()`, and `ArrayHasKey::__construct()` do not support all possible key types -* [#6087](https://github.com/sebastianbergmann/phpunit/issues/6087): `--migrate-configuration` does not remove `beStrictAboutTodoAnnotatedTests` attribute from XML configuration file - -## [10.5.39] - 2024-12-11 - -### Added - -* [#6081](https://github.com/sebastianbergmann/phpunit/pull/6081): `DefaultResultCache::mergeWith()` for merging result cache instances - -### Fixed - -* [#6066](https://github.com/sebastianbergmann/phpunit/pull/6066): TeamCity logger does not handle error/skipped events in before-class methods correctly - -## [10.5.38] - 2024-10-28 - -### Changed - -* [#6012](https://github.com/sebastianbergmann/phpunit/pull/6012): Remove empty lines between TeamCity events - -## [10.5.37] - 2024-10-19 - -### Fixed - -* [#5982](https://github.com/sebastianbergmann/phpunit/pull/5982): Typo in exception message - -## [10.5.36] - 2024-10-08 - -### Changed - -* [#5957](https://github.com/sebastianbergmann/phpunit/pull/5957): Skip data provider build when requirements are not satisfied -* [#5969](https://github.com/sebastianbergmann/phpunit/pull/5969): Check for requirements before creating a separate process -* Updated regular expressions used by `StringMatchesFormatDescription` constraint to be consistent with PHP's `run-tests.php` - -### Fixed - -* [#5965](https://github.com/sebastianbergmann/phpunit/issues/5965): `PHPUnit\Framework\Exception` does not handle string error codes (`PDOException` with error code `'HY000'`, for example) - -## [10.5.35] - 2024-09-19 - -### Changed - -* [#5956](https://github.com/sebastianbergmann/phpunit/issues/5956): Deprecation of the `E_STRICT` constant in PHP 8.4 - -### Fixed - -* [#5950](https://github.com/sebastianbergmann/phpunit/pull/5950): TestDox text should not be `trim()`med when it contains `$` character -* The attribute parser will no longer try to instantiate attribute classes that do not exist - -## [10.5.34] - 2024-09-13 - -### Fixed - -* [#5931](https://github.com/sebastianbergmann/phpunit/pull/5931): Reverted addition of `name` property on `` element in JUnit XML logfile -* [#5946](https://github.com/sebastianbergmann/phpunit/issues/5946): `Callback` throws a `TypeError` when checking a `callable` has variadic parameters - -## [10.5.33] - 2024-09-09 - -### Fixed - -* [#4584](https://github.com/sebastianbergmann/phpunit/issues/4584): `assertJsonStringEqualsJsonString()` considers objects with sequential numeric keys equal to be arrays -* [#4625](https://github.com/sebastianbergmann/phpunit/issues/4625): Generator yielding keys that are neither integer or string leads to hard-to-understand error message when used as data provider -* [#4674](https://github.com/sebastianbergmann/phpunit/issues/4674): JSON assertions should treat objects as unordered -* [#5891](https://github.com/sebastianbergmann/phpunit/issues/5891): `Callback` constraint does not handle variadic arguments correctly when used for mock object expectations -* [#5929](https://github.com/sebastianbergmann/phpunit/issues/5929): TestDox output containing `$` at the beginning gets truncated when used with a data provider - -## [10.5.32] - 2024-09-04 - -### Added - -* [#5937](https://github.com/sebastianbergmann/phpunit/issues/5937): `failOnPhpunitDeprecation` attribute on the `` element of the XML configuration file and `--fail-on-phpunit-deprecation` CLI option for controlling whether PHPUnit deprecations should be considered when determining the test runner's shell exit code (default: do not consider) -* `displayDetailsOnPhpunitDeprecations` attribute on the `` element of the XML configuration file and `--display-phpunit-deprecations` CLI option for controlling whether details on PHPUnit deprecations should be displayed (default: do not display) - -### Changed - -* [#5937](https://github.com/sebastianbergmann/phpunit/issues/5937): PHPUnit deprecations will, by default, no longer affect the test runner's shell exit code. This can optionally be turned back on using the `--fail-on-phpunit-deprecation` CLI option or the `failOnPhpunitDeprecation="true"` attribute on the `` element of the XML configuration file. -* Details for PHPUnit deprecations will, by default, no longer be displayed. This can optionally be turned back on using the `--display-phpunit-deprecations` CLI option or the `displayDetailsOnPhpunitDeprecations` attribute on the `` element of the XML configuration file. - -## [10.5.31] - 2024-09-03 - -### Changed - -* [#5931](https://github.com/sebastianbergmann/phpunit/pull/5931): `name` property on `` element in JUnit XML logfile -* Removed `.phpstorm.meta.php` file as methods such as `TestCase::createStub()` use generics / template types for their return types and PhpStorm, for example, uses that information - -### Fixed - -* [#5884](https://github.com/sebastianbergmann/phpunit/issues/5884): TestDox printer does not consider that issues can be suppressed by attribute, baseline, source location, or `@` operator - -## [10.5.30] - 2024-08-13 - -### Changed - -* Improved error message when stubbed method is called more often than return values were configured for it - -## [10.5.29] - 2024-07-30 - -### Fixed - -* [#5887](https://github.com/sebastianbergmann/phpunit/pull/5887): Issue baseline generator does not correctly handle ignoring suppressed issues -* [#5908](https://github.com/sebastianbergmann/phpunit/issues/5908): `--list-tests` and `--list-tests-xml` CLI options do not report error when data provider method throws exception - -## [10.5.28] - 2024-07-18 - -### Fixed - -* [#5898](https://github.com/sebastianbergmann/phpunit/issues/5898): `Test\Passed` event is not emitted for PHPT tests -* `--coverage-filter` CLI option could not be used multiple times - -## [10.5.27] - 2024-07-10 - -### Changed - -* Updated dependencies (so that users that install using Composer's `--prefer-lowest` CLI option also get recent versions) - -### Fixed - -* [#5892](https://github.com/sebastianbergmann/phpunit/issues/5892): Errors during write of `phpunit.xml` are not handled correctly when `--generate-configuration` is used - -## [10.5.26] - 2024-07-08 - -### Added - -* `--only-summary-for-coverage-text` CLI option to reduce the code coverage report in text format to a summary -* `--show-uncovered-for-coverage-text` CLI option to expand the code coverage report in text format to include a list of uncovered files - -## [10.5.25] - 2024-07-03 - -### Changed - -* Updated dependencies for PHAR distribution - -## [10.5.24] - 2024-06-20 - -### Changed - -* [#5877](https://github.com/sebastianbergmann/phpunit/pull/5877): Use `array_pop()` instead of `array_shift()` for processing `Test` objects in `TestSuite::run()` and optimize `TestSuite::isEmpty()` - -## [10.5.23] - 2024-06-20 - -### Changed - -* [#5875](https://github.com/sebastianbergmann/phpunit/pull/5875): Also destruct `TestCase` objects early that use a data provider - -## [10.5.22] - 2024-06-19 - -### Changed - -* [#5871](https://github.com/sebastianbergmann/phpunit/pull/5871): Do not collect unnecessary information using `debug_backtrace()` - -## [10.5.21] - 2024-06-15 - -### Changed - -* [#5861](https://github.com/sebastianbergmann/phpunit/pull/5861): Destroy `TestCase` object after its test was run - -## [10.5.20] - 2024-04-24 - -* [#5771](https://github.com/sebastianbergmann/phpunit/issues/5771): JUnit XML logger may crash when test that is run in separate process exits unexpectedly -* [#5819](https://github.com/sebastianbergmann/phpunit/issues/5819): Duplicate keys from different data providers are not handled properly - -## [10.5.19] - 2024-04-17 - -### Fixed - -* [#5818](https://github.com/sebastianbergmann/phpunit/issues/5818): Calling `method()` on a test stub created using `createStubForIntersectionOfInterfaces()` throws an unexpected exception - -## [10.5.18] - 2024-04-14 - -### Deprecated - -* [#5812](https://github.com/sebastianbergmann/phpunit/pull/5812): Support for string array keys in data sets returned by data provider methods that do not match the parameter names of the test method(s) that use(s) them - -### Fixed - -* [#5795](https://github.com/sebastianbergmann/phpunit/issues/5795): Using `@testWith` annotation may generate `PHP Warning: Uninitialized string offset 0` - -## [10.5.17] - 2024-04-05 - -### Changed - -* The namespaces of dependencies are now prefixed with `PHPUnitPHAR` instead of just `PHPUnit` for the PHAR distribution of PHPUnit - -## [10.5.16] - 2024-03-28 - -### Changed - -* [#5766](https://github.com/sebastianbergmann/phpunit/pull/5766): Do not use a shell in `proc_open()` if not really needed -* [#5772](https://github.com/sebastianbergmann/phpunit/pull/5772): Cleanup process handling after dropping temp-file handling - -### Fixed - -* [#5570](https://github.com/sebastianbergmann/phpunit/pull/5570): Windows does not support exclusive locks on stdout - -## [10.5.15] - 2024-03-22 - -### Fixed - -* [#5765](https://github.com/sebastianbergmann/phpunit/pull/5765): Be more forgiving with error handlers that do not respect error suppression - -## [10.5.14] - 2024-03-21 - -### Changed - -* [#5747](https://github.com/sebastianbergmann/phpunit/pull/5747): Cache result of `Groups::groups()` -* [#5748](https://github.com/sebastianbergmann/phpunit/pull/5748): Improve performance of `NamePrettifier::prettifyTestMethodName()` -* [#5750](https://github.com/sebastianbergmann/phpunit/pull/5750): Micro-optimize `NamePrettifier::prettifyTestMethodName()` once again - -### Fixed - -* [#5760](https://github.com/sebastianbergmann/phpunit/issues/5760): TestDox printer does not display details about exceptions raised in before-test methods - -## [10.5.13] - 2024-03-12 - -### Changed - -* [#5727](https://github.com/sebastianbergmann/phpunit/pull/5727): Prevent duplicate call of `NamePrettifier::prettifyTestMethodName()` -* [#5739](https://github.com/sebastianbergmann/phpunit/pull/5739): Micro-optimize `NamePrettifier::prettifyTestMethodName()` -* [#5740](https://github.com/sebastianbergmann/phpunit/pull/5740): Micro-optimize `TestRunner::runTestWithTimeout()` -* [#5741](https://github.com/sebastianbergmann/phpunit/pull/5741): Save call to `Telemetry\System::snapshot()` -* [#5742](https://github.com/sebastianbergmann/phpunit/pull/5742): Prevent file IO when not strictly necessary -* [#5743](https://github.com/sebastianbergmann/phpunit/pull/5743): Prevent unnecessary `ExecutionOrderDependency::getTarget()` call -* [#5744](https://github.com/sebastianbergmann/phpunit/pull/5744): Simplify `NamePrettifier::prettifyTestMethodName()` - -### Fixed - -* [#5351](https://github.com/sebastianbergmann/phpunit/issues/5351): Incorrect code coverage metadata does not prevent code coverage data from being collected -* [#5746](https://github.com/sebastianbergmann/phpunit/issues/5746): Using `-d` CLI option multiple times triggers warning - -## [10.5.12] - 2024-03-09 - -### Fixed - -* [#5652](https://github.com/sebastianbergmann/phpunit/issues/5652): `HRTime::duration()` throws `InvalidArgumentException` - -## [10.5.11] - 2024-02-25 - -### Fixed - -* [#5704](https://github.com/sebastianbergmann/phpunit/issues/5704#issuecomment-1951105254): No warning when CLI options are used multiple times -* [#5707](https://github.com/sebastianbergmann/phpunit/issues/5707): `--fail-on-empty-test-suite` CLI option is not documented in `--help` output -* No warning when the `#[CoversClass]` and `#[UsesClass]` attributes are used with the name of an interface -* Resource usage information is printed when the `--debug` CLI option is used - -## [10.5.10] - 2024-02-04 - -### Changed - -* Improve output of `--check-version` CLI option -* Improve description of `--check-version` CLI option - -### Fixed - -* [#5692](https://github.com/sebastianbergmann/phpunit/issues/5692): `--log-events-text` and `--log-events-verbose-text` require the destination file to exit - -## [10.5.9] - 2024-01-22 - -### Changed - -* Show help for `--manifest`, `--sbom`, and `--composer-lock` when the PHAR is used - -### Fixed - -* [#5676](https://github.com/sebastianbergmann/phpunit/issues/5676): PHPUnit's test runner overwrites custom error handler registered using `set_error_handler()` in bootstrap script - -## [10.5.8] - 2024-01-19 - -### Fixed - -* [#5673](https://github.com/sebastianbergmann/phpunit/issues/5673): Confusing error message when migration of a configuration is requested that does not need to be migrated - -## [10.5.7] - 2024-01-14 - -### Fixed - -* [#5662](https://github.com/sebastianbergmann/phpunit/issues/5662): PHPUnit errors out on startup when the `ctype` extension is not loaded but a polyfill for it was installed - -## [10.5.6] - 2024-01-13 - -### Added - -* Added the `--debug` CLI option as an alias for `--no-output --log-events-text php://stdout` - -### Fixed - -* [#5455](https://github.com/sebastianbergmann/phpunit/issues/5455): `willReturnCallback()` does not pass unknown named variadic arguments to callback -* [#5488](https://github.com/sebastianbergmann/phpunit/issues/5488): Details about tests that are considered risky are not displayed when the TestDox result printer is used -* [#5516](https://github.com/sebastianbergmann/phpunit/issues/5516): Assertions that use the `LogicalNot` constraint (`assertNotEquals()`, `assertStringNotContainsString()`, ...) can generate confusing failure messages -* [#5518](https://github.com/sebastianbergmann/phpunit/issues/5518): Details about deprecations, notices, and warnings are not displayed when the TestDox result printer is used -* [#5574](https://github.com/sebastianbergmann/phpunit/issues/5574): Wrong backtrace line is reported -* [#5633](https://github.com/sebastianbergmann/phpunit/pull/5633): `--log-events-text` and `--log-events-verbose-text` CLI options do not handle absolute and relative paths -* [#5634](https://github.com/sebastianbergmann/phpunit/pull/5634): Exceptions in the destructor of a test double are ignored -* [#5641](https://github.com/sebastianbergmann/phpunit/issues/5641): The `TestSuite` value object returned by `TestSuite\Filtered::testSuite()` contains all tests instead of only the filtered tests - -## [10.5.5] - 2023-12-27 - -### Fixed - -* [#5619](https://github.com/sebastianbergmann/phpunit/pull/5619): Reverted change introduced in PHPUnit 10.5.4 that broke backward compatibility - -## [10.5.4] - 2023-12-27 - -### Fixed - -* [#5592](https://github.com/sebastianbergmann/phpunit/issues/5592): Error Handler prevents `error_get_last()` usage in tests -* [#5592](https://github.com/sebastianbergmann/phpunit/issues/5592): `E_USER_ERROR` does not abort test execution -* [#5612](https://github.com/sebastianbergmann/phpunit/issues/5612): Empty `` element in XML configuration after migrating configuration -* [#5616](https://github.com/sebastianbergmann/phpunit/issues/5616): Values from data provider are not shown for failed test -* [#5619](https://github.com/sebastianbergmann/phpunit/pull/5619): Check and restore error/exception global handlers -* [#5621](https://github.com/sebastianbergmann/phpunit/issues/5621): Name of data set is missing from TeamCity output - -## [10.5.3] - 2023-12-13 - -### Changed - -* Make PHAR build reproducible (the only remaining differences were in the timestamps for the files in the PHAR) - -### Deprecated - -* `Test\AssertionFailed` and `Test\AssertionSucceeded` events -* `PHPUnit\Runner\Extension\Facade::requireExportOfObjects()` and `PHPUnit\Runner\Extension\Facade::requiresExportOfObjects()` -* `registerMockObjectsFromTestArgumentsRecursively` attribute on the `` element of the XML configuration file -* `PHPUnit\TextUI\Configuration\Configuration::registerMockObjectsFromTestArgumentsRecursively()` - -### Fixed - -* [#5614](https://github.com/sebastianbergmann/phpunit/issues/5614): Infinite recursion when data provider provides recursive array - -## [10.5.2] - 2023-12-05 - -### Fixed - -* [#5561](https://github.com/sebastianbergmann/phpunit/issues/5561): JUnit XML logger does not handle assertion failures in before-test methods -* [#5567](https://github.com/sebastianbergmann/phpunit/issues/5567): Infinite recursion when recursive / self-referencing arrays are checked whether they contain only scalar values - -## [10.5.1] - 2023-12-01 - -### Fixed - -* [#5593](https://github.com/sebastianbergmann/phpunit/issues/5593): Return Value Generator fails to correctly create test stub for method with `static` return type declaration when used recursively -* [#5596](https://github.com/sebastianbergmann/phpunit/issues/5596): `PHPUnit\Framework\TestCase` has `@internal` annotation in PHAR - -## [10.5.0] - 2023-12-01 - -### Added - -* [#5532](https://github.com/sebastianbergmann/phpunit/issues/5532): `#[IgnoreDeprecations]` attribute to ignore `E_(USER_)DEPRECATED` issues on test class and test method level -* [#5551](https://github.com/sebastianbergmann/phpunit/issues/5551): Support for omitting parameter default values for `willReturnMap()` -* [#5577](https://github.com/sebastianbergmann/phpunit/issues/5577): `--composer-lock` CLI option for PHAR binary that displays the `composer.lock` used to build the PHAR - -### Changed - -* `MockBuilder::disableAutoReturnValueGeneration()` and `MockBuilder::enableAutoReturnValueGeneration()` are no longer deprecated - -### Fixed - -* [#5563](https://github.com/sebastianbergmann/phpunit/issues/5563): `createMockForIntersectionOfInterfaces()` does not automatically register mock object for expectation verification - -[10.5.40]: https://github.com/sebastianbergmann/phpunit/compare/10.5.39...10.5.40 -[10.5.39]: https://github.com/sebastianbergmann/phpunit/compare/10.5.38...10.5.39 -[10.5.38]: https://github.com/sebastianbergmann/phpunit/compare/10.5.37...10.5.38 -[10.5.37]: https://github.com/sebastianbergmann/phpunit/compare/10.5.36...10.5.37 -[10.5.36]: https://github.com/sebastianbergmann/phpunit/compare/10.5.35...10.5.36 -[10.5.35]: https://github.com/sebastianbergmann/phpunit/compare/10.5.34...10.5.35 -[10.5.34]: https://github.com/sebastianbergmann/phpunit/compare/10.5.33...10.5.34 -[10.5.33]: https://github.com/sebastianbergmann/phpunit/compare/10.5.32...10.5.33 -[10.5.32]: https://github.com/sebastianbergmann/phpunit/compare/10.5.31...10.5.32 -[10.5.31]: https://github.com/sebastianbergmann/phpunit/compare/10.5.30...10.5.31 -[10.5.30]: https://github.com/sebastianbergmann/phpunit/compare/10.5.29...10.5.30 -[10.5.29]: https://github.com/sebastianbergmann/phpunit/compare/10.5.28...10.5.29 -[10.5.28]: https://github.com/sebastianbergmann/phpunit/compare/10.5.27...10.5.28 -[10.5.27]: https://github.com/sebastianbergmann/phpunit/compare/10.5.26...10.5.27 -[10.5.26]: https://github.com/sebastianbergmann/phpunit/compare/10.5.25...10.5.26 -[10.5.25]: https://github.com/sebastianbergmann/phpunit/compare/10.5.24...10.5.25 -[10.5.24]: https://github.com/sebastianbergmann/phpunit/compare/10.5.23...10.5.24 -[10.5.23]: https://github.com/sebastianbergmann/phpunit/compare/10.5.22...10.5.23 -[10.5.22]: https://github.com/sebastianbergmann/phpunit/compare/10.5.21...10.5.22 -[10.5.21]: https://github.com/sebastianbergmann/phpunit/compare/10.5.20...10.5.21 -[10.5.20]: https://github.com/sebastianbergmann/phpunit/compare/10.5.19...10.5.20 -[10.5.19]: https://github.com/sebastianbergmann/phpunit/compare/10.5.18...10.5.19 -[10.5.18]: https://github.com/sebastianbergmann/phpunit/compare/10.5.17...10.5.18 -[10.5.17]: https://github.com/sebastianbergmann/phpunit/compare/10.5.16...10.5.17 -[10.5.16]: https://github.com/sebastianbergmann/phpunit/compare/10.5.15...10.5.16 -[10.5.15]: https://github.com/sebastianbergmann/phpunit/compare/10.5.14...10.5.15 -[10.5.14]: https://github.com/sebastianbergmann/phpunit/compare/10.5.13...10.5.14 -[10.5.13]: https://github.com/sebastianbergmann/phpunit/compare/10.5.12...10.5.13 -[10.5.12]: https://github.com/sebastianbergmann/phpunit/compare/10.5.11...10.5.12 -[10.5.11]: https://github.com/sebastianbergmann/phpunit/compare/10.5.10...10.5.11 -[10.5.10]: https://github.com/sebastianbergmann/phpunit/compare/10.5.9...10.5.10 -[10.5.9]: https://github.com/sebastianbergmann/phpunit/compare/10.5.8...10.5.9 -[10.5.8]: https://github.com/sebastianbergmann/phpunit/compare/10.5.7...10.5.8 -[10.5.7]: https://github.com/sebastianbergmann/phpunit/compare/10.5.6...10.5.7 -[10.5.6]: https://github.com/sebastianbergmann/phpunit/compare/10.5.5...10.5.6 -[10.5.5]: https://github.com/sebastianbergmann/phpunit/compare/10.5.4...10.5.5 -[10.5.4]: https://github.com/sebastianbergmann/phpunit/compare/10.5.3...10.5.4 -[10.5.3]: https://github.com/sebastianbergmann/phpunit/compare/10.5.2...10.5.3 -[10.5.2]: https://github.com/sebastianbergmann/phpunit/compare/10.5.1...10.5.2 -[10.5.1]: https://github.com/sebastianbergmann/phpunit/compare/10.5.0...10.5.1 -[10.5.0]: https://github.com/sebastianbergmann/phpunit/compare/10.4.2...10.5.0 diff --git a/docker/streamline-src/vendor/phpunit/phpunit/DEPRECATIONS.md b/docker/streamline-src/vendor/phpunit/phpunit/DEPRECATIONS.md deleted file mode 100644 index 75d1b3ea..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/DEPRECATIONS.md +++ /dev/null @@ -1,92 +0,0 @@ -# Deprecations - -## Soft Deprecations - -This functionality is currently [soft-deprecated](https://phpunit.de/backward-compatibility.html#soft-deprecation): - -### Writing Tests - -#### Assertions, Constraints, and Expectations - -| Issue | Description | Since | Replacement | -|-------------------------------------------------------------------|----------------------------------------------|--------|-------------| -| [#5472](https://github.com/sebastianbergmann/phpunit/issues/5472) | `Assert::assertStringNotMatchesFormat()` | 10.4.0 | | -| [#5472](https://github.com/sebastianbergmann/phpunit/issues/5472) | `Assert::assertStringNotMatchesFormatFile()` | 10.4.0 | | - -#### Test Double API - -| Issue | Description | Since | Replacement | -|-------------------------------------------------------------------|---------------------------------------------------|--------|-----------------------------------------------------------------------------------------| -| [#5240](https://github.com/sebastianbergmann/phpunit/issues/5240) | `TestCase::createTestProxy()` | 10.1.0 | | -| [#5241](https://github.com/sebastianbergmann/phpunit/issues/5241) | `TestCase::getMockForAbstractClass()` | 10.1.0 | | -| [#5242](https://github.com/sebastianbergmann/phpunit/issues/5242) | `TestCase::getMockFromWsdl()` | 10.1.0 | | -| [#5243](https://github.com/sebastianbergmann/phpunit/issues/5243) | `TestCase::getMockForTrait()` | 10.1.0 | | -| [#5244](https://github.com/sebastianbergmann/phpunit/issues/5244) | `TestCase::getObjectForTrait()` | 10.1.0 | | -| [#5305](https://github.com/sebastianbergmann/phpunit/issues/5305) | `MockBuilder::getMockForAbstractClass()` | 10.1.0 | | -| [#5306](https://github.com/sebastianbergmann/phpunit/issues/5306) | `MockBuilder::getMockForTrait()` | 10.1.0 | | -| [#5307](https://github.com/sebastianbergmann/phpunit/issues/5307) | `MockBuilder::disableProxyingToOriginalMethods()` | 10.1.0 | | -| [#5307](https://github.com/sebastianbergmann/phpunit/issues/5307) | `MockBuilder::enableProxyingToOriginalMethods()` | 10.1.0 | | -| [#5307](https://github.com/sebastianbergmann/phpunit/issues/5307) | `MockBuilder::setProxyTarget()` | 10.1.0 | | -| [#5308](https://github.com/sebastianbergmann/phpunit/issues/5308) | `MockBuilder::allowMockingUnknownTypes()` | 10.1.0 | | -| [#5308](https://github.com/sebastianbergmann/phpunit/issues/5308) | `MockBuilder::disallowMockingUnknownTypes()` | 10.1.0 | | -| [#5309](https://github.com/sebastianbergmann/phpunit/issues/5309) | `MockBuilder::disableAutoload()` | 10.1.0 | | -| [#5309](https://github.com/sebastianbergmann/phpunit/issues/5309) | `MockBuilder::enableAutoload()` | 10.1.0 | | -| [#5315](https://github.com/sebastianbergmann/phpunit/issues/5315) | `MockBuilder::disableArgumentCloning()` | 10.1.0 | | -| [#5315](https://github.com/sebastianbergmann/phpunit/issues/5315) | `MockBuilder::enableArgumentCloning()` | 10.1.0 | | -| [#5320](https://github.com/sebastianbergmann/phpunit/issues/5320) | `MockBuilder::addMethods()` | 10.1.0 | | -| [#5423](https://github.com/sebastianbergmann/phpunit/issues/5423) | `TestCase::onConsecutiveCalls()` | 10.3.0 | Use `$double->willReturn()` instead of `$double->will($this->onConsecutiveCalls())` | -| [#5423](https://github.com/sebastianbergmann/phpunit/issues/5423) | `TestCase::returnArgument()` | 10.3.0 | Use `$double->willReturnArgument()` instead of `$double->will($this->returnArgument())` | -| [#5423](https://github.com/sebastianbergmann/phpunit/issues/5423) | `TestCase::returnCallback()` | 10.3.0 | Use `$double->willReturnCallback()` instead of `$double->will($this->returnCallback())` | -| [#5423](https://github.com/sebastianbergmann/phpunit/issues/5423) | `TestCase::returnSelf()` | 10.3.0 | Use `$double->willReturnSelf()` instead of `$double->will($this->returnSelf())` | -| [#5423](https://github.com/sebastianbergmann/phpunit/issues/5423) | `TestCase::returnValue()` | 10.3.0 | Use `$double->willReturn()` instead of `$double->will($this->returnValue())` | -| [#5423](https://github.com/sebastianbergmann/phpunit/issues/5423) | `TestCase::returnValueMap()` | 10.3.0 | Use `$double->willReturnMap()` instead of `$double->will($this->returnValueMap())` | - -#### Miscellaneous - -| Issue | Description | Since | Replacement | -|-------------------------------------------------------------------|----------------------------------------------------------------|--------|--------------------------------------------------------------------| -| [#5236](https://github.com/sebastianbergmann/phpunit/issues/5236) | `PHPUnit\Framework\Attributes\CodeCoverageIgnore()` | 10.1.0 | | -| [#5214](https://github.com/sebastianbergmann/phpunit/issues/5214) | `TestCase::iniSet()` | 10.3.0 | | -| [#5216](https://github.com/sebastianbergmann/phpunit/issues/5216) | `TestCase::setLocale()` | 10.3.0 | | -| [#5236](https://github.com/sebastianbergmann/phpunit/issues/5513) | `PHPUnit\Framework\Attributes\IgnoreClassForCodeCoverage()` | 10.4.0 | Use `@codeCoverageIgnore` annotation in the class' doc-comment | -| [#5236](https://github.com/sebastianbergmann/phpunit/issues/5513) | `PHPUnit\Framework\Attributes\IgnoreMethodForCodeCoverage()` | 10.4.0 | Use `@codeCoverageIgnore` annotation in the method's doc-comment | -| [#5236](https://github.com/sebastianbergmann/phpunit/issues/5513) | `PHPUnit\Framework\Attributes\IgnoreFunctionForCodeCoverage()` | 10.4.0 | Use `@codeCoverageIgnore` annotation in the function's doc-comment | - -### Running Tests - -| Issue | Description | Since | Replacement | -|-------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------|--------|-------------| -| [#5481](https://github.com/sebastianbergmann/phpunit/issues/5481) | `dataSet` attribute for `testCaseMethod` elements in the XML document generated by `--list-tests-xml` | 10.4.0 | | - -### Extending PHPUnit - -| Issue | Description | Since | Replacement | -|-------|------------------------------------------------------------------------------------------------------------------------------|--------|--------------------------------------------------------------------------------| -| | `PHPUnit\TextUI\Configuration\Configuration::coverageExcludeDirectories()` | 10.2.0 | `PHPUnit\TextUI\Configuration\Configuration::source()->excludeDirectories()` | -| | `PHPUnit\TextUI\Configuration\Configuration::coverageExcludeFiles()` | 10.2.0 | `PHPUnit\TextUI\Configuration\Configuration::source()->excludeFiles()` | -| | `PHPUnit\TextUI\Configuration\Configuration::coverageIncludeDirectories()` | 10.2.0 | `PHPUnit\TextUI\Configuration\Configuration::source()->includeDirectories()` | -| | `PHPUnit\TextUI\Configuration\Configuration::coverageIncludeFiles()` | 10.2.0 | `PHPUnit\TextUI\Configuration\Configuration::source()->includeFiles()` | -| | `PHPUnit\TextUI\Configuration\Configuration::loadPharExtensions()` | 10.2.0 | `PHPUnit\TextUI\Configuration\Configuration::noExtensions()` | -| | `PHPUnit\TextUI\Configuration\Configuration::hasNonEmptyListOfFilesToBeIncludedInCodeCoverageReport()` | 10.2.0 | `PHPUnit\TextUI\Configuration\Configuration::source()->notEmpty()` | -| | `PHPUnit\TextUI\Configuration\Configuration::restrictDeprecations()` | 10.2.0 | `PHPUnit\TextUI\Configuration\Configuration::source()->restrictDeprecations()` | -| | `PHPUnit\TextUI\Configuration\Configuration::restrictNotices()` | 10.2.0 | `PHPUnit\TextUI\Configuration\Configuration::source()->restrictNotices()` | -| | `PHPUnit\TextUI\Configuration\Configuration::restrictWarnings()` | 10.2.0 | `PHPUnit\TextUI\Configuration\Configuration::source()->restrictWarnings()` | -| | `PHPUnit\TextUI\Configuration\Configuration::cliArgument()` | 10.4.0 | `PHPUnit\TextUI\Configuration\Configuration::cliArguments()[0]` | -| | `PHPUnit\TextUI\Configuration\Configuration::hasCliArgument()` | 10.4.0 | `PHPUnit\TextUI\Configuration\Configuration::hasCliArguments()` | -| | `PHPUnit\Framework\Constraint\Constraint::exporter()` | 10.4.0 | | -| | `PHPUnit\TextUI\Configuration\Configuration::registerMockObjectsFromTestArgumentsRecursively()` | 10.5.3 | | -| | `Test\AssertionFailed` and `Test\AssertionSucceeded` events | 10.5.3 | | -| | `PHPUnit\Runner\Extension\Facade::requireExportOfObjects()` and `PHPUnit\Runner\Extension\Facade::requiresExportOfObjects()` | 10.5.3 | | - -## Hard Deprecations - -This functionality is currently [hard-deprecated](https://phpunit.de/backward-compatibility.html#hard-deprecation): - -### Writing Tests - -#### Miscellaneous - -| Issue | Description | Since | Replacement | -|-------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------|---------|-------------| -| [#5100](https://github.com/sebastianbergmann/phpunit/issues/5100) | Support for non-static data provider methods, non-public data provider methods, and data provider methods that declare parameters | 10.0.0 | | -| [#5812](https://github.com/sebastianbergmann/phpunit/pull/5812) | Support for string array keys in data sets returned by data provider methods that do not match the parameter names of the test method(s) that use(s) them | 10.5.18 | | diff --git a/docker/streamline-src/vendor/phpunit/phpunit/README.md b/docker/streamline-src/vendor/phpunit/phpunit/README.md deleted file mode 100644 index 1ca144ae..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/README.md +++ /dev/null @@ -1,34 +0,0 @@ -# PHPUnit - -[![Latest Stable Version](https://poser.pugx.org/phpunit/phpunit/v)](https://packagist.org/packages/phpunit/phpunit) -[![CI Status](https://github.com/sebastianbergmann/phpunit/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/phpunit/actions) -[![codecov](https://codecov.io/gh/sebastianbergmann/phpunit/branch/main/graph/badge.svg)](https://codecov.io/gh/sebastianbergmann/phpunit) - -PHPUnit is a programmer-oriented testing framework for PHP. It is an instance of the xUnit architecture for unit testing frameworks. - -## Installation - -We distribute a [PHP Archive (PHAR)](https://php.net/phar) that has all required (as well as some optional) dependencies of PHPUnit bundled in a single file: - -```bash -$ wget https://phar.phpunit.de/phpunit-X.Y.phar - -$ php phpunit-X.Y.phar --version -``` - -Please replace `X.Y` with the version of PHPUnit you are interested in. - -Alternatively, you may use [Composer](https://getcomposer.org/) to download and install PHPUnit as well as its dependencies. Please refer to the [documentation](https://phpunit.de/documentation.html) for details on how to install PHPUnit. - -## Contribute - -Please refer to [CONTRIBUTING.md](https://github.com/sebastianbergmann/phpunit/blob/main/.github/CONTRIBUTING.md) for information on how to contribute to PHPUnit and its related projects. - -## List of Contributors - -Thanks to everyone who has contributed to PHPUnit! You can find a detailed list of contributors on every PHPUnit related package on GitHub. This list shows only the major components: - -* [PHPUnit](https://github.com/sebastianbergmann/phpunit/graphs/contributors) -* [php-code-coverage](https://github.com/sebastianbergmann/php-code-coverage/graphs/contributors) - -A very special thanks to everyone who has contributed to the [documentation](https://github.com/sebastianbergmann/phpunit-documentation-english/graphs/contributors). diff --git a/docker/streamline-src/vendor/phpunit/phpunit/composer.json b/docker/streamline-src/vendor/phpunit/phpunit/composer.json deleted file mode 100644 index bc1f73cb..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/composer.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "name": "phpunit/phpunit", - "description": "The PHP Unit Testing framework.", - "type": "library", - "keywords": [ - "phpunit", - "xunit", - "testing" - ], - "homepage": "https://phpunit.de/", - "license": "BSD-3-Clause", - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "security": "https://github.com/sebastianbergmann/phpunit/security/policy" - }, - "prefer-stable": true, - "require": { - "php": ">=8.1", - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.12.1", - "phar-io/manifest": "^2.0.4", - "phar-io/version": "^3.2.1", - "phpunit/php-code-coverage": "^10.1.16", - "phpunit/php-file-iterator": "^4.1.0", - "phpunit/php-invoker": "^4.0.0", - "phpunit/php-text-template": "^3.0.1", - "phpunit/php-timer": "^6.0.0", - "sebastian/cli-parser": "^2.0.1", - "sebastian/code-unit": "^2.0.0", - "sebastian/comparator": "^5.0.3", - "sebastian/diff": "^5.1.1", - "sebastian/environment": "^6.1.0", - "sebastian/exporter": "^5.1.2", - "sebastian/global-state": "^6.0.2", - "sebastian/object-enumerator": "^5.0.0", - "sebastian/recursion-context": "^5.0.0", - "sebastian/type": "^4.0.0", - "sebastian/version": "^4.0.1" - }, - "config": { - "platform": { - "php": "8.1.0" - }, - "optimize-autoloader": true, - "sort-packages": true - }, - "suggest": { - "ext-soap": "To be able to generate mocks based on WSDL files" - }, - "bin": [ - "phpunit" - ], - "autoload": { - "classmap": [ - "src/" - ], - "files": [ - "src/Framework/Assert/Functions.php" - ] - }, - "autoload-dev": { - "classmap": [ - "tests/_files" - ], - "files": [ - "tests/unit/Event/AbstractEventTestCase.php", - "tests/unit/Framework/MockObject/TestDoubleTestCase.php", - "tests/unit/Metadata/Parser/AnnotationParserTestCase.php", - "tests/unit/Metadata/Parser/AttributeParserTestCase.php", - "tests/_files/CoverageNamespacedFunctionTest.php", - "tests/_files/CoveredFunction.php", - "tests/_files/Generator.php", - "tests/_files/NamespaceCoveredFunction.php", - "tests/end-to-end/code-coverage/ignore-function-using-attribute/src/CoveredFunction.php" - ] - }, - "extra": { - "branch-alias": { - "dev-main": "10.5-dev" - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/composer.lock b/docker/streamline-src/vendor/phpunit/phpunit/composer.lock deleted file mode 100644 index 9cef1ed2..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/composer.lock +++ /dev/null @@ -1,1553 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "1d92bc903b3b4a03ad2d073e61c577ee", - "packages": [ - { - "name": "myclabs/deep-copy", - "version": "1.12.1", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/123267b2c49fbf30d78a7b2d333f6be754b94845", - "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "conflict": { - "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3 <3.2.2" - }, - "require-dev": { - "doctrine/collections": "^1.6.8", - "doctrine/common": "^2.13.3 || ^3.2.2", - "phpspec/prophecy": "^1.10", - "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" - }, - "type": "library", - "autoload": { - "files": [ - "src/DeepCopy/deep_copy.php" - ], - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.12.1" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2024-11-08T17:47:46+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v5.3.1", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "8eea230464783aa9671db8eea6f8c6ac5285794b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/8eea230464783aa9671db8eea6f8c6ac5285794b", - "reference": "8eea230464783aa9671db8eea6f8c6ac5285794b", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "ext-json": "*", - "ext-tokenizer": "*", - "php": ">=7.4" - }, - "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^9.0" - }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.3.1" - }, - "time": "2024-10-08T18:51:32+00:00" - }, - { - "name": "phar-io/manifest", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "54750ef60c58e43759730615a392c31c80e23176" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", - "reference": "54750ef60c58e43759730615a392c31c80e23176", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-phar": "*", - "ext-xmlwriter": "*", - "phar-io/version": "^3.0.1", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "support": { - "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2024-03-03T12:33:53+00:00" - }, - { - "name": "phar-io/version", - "version": "3.2.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Library for handling version information and constraints", - "support": { - "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.2.1" - }, - "time": "2022-02-21T01:04:05+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "10.1.16", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "7e308268858ed6baedc8704a304727d20bc07c77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7e308268858ed6baedc8704a304727d20bc07c77", - "reference": "7e308268858ed6baedc8704a304727d20bc07c77", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.19.1 || ^5.1.0", - "php": ">=8.1", - "phpunit/php-file-iterator": "^4.1.0", - "phpunit/php-text-template": "^3.0.1", - "sebastian/code-unit-reverse-lookup": "^3.0.0", - "sebastian/complexity": "^3.2.0", - "sebastian/environment": "^6.1.0", - "sebastian/lines-of-code": "^2.0.2", - "sebastian/version": "^4.0.1", - "theseer/tokenizer": "^1.2.3" - }, - "require-dev": { - "phpunit/phpunit": "^10.1" - }, - "suggest": { - "ext-pcov": "PHP extension that provides line coverage", - "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "10.1.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.16" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-08-22T04:31:57+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "4.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", - "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-08-31T06:24:48+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "4.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", - "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^10.0" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Invoke callables with a timeout", - "homepage": "https://github.com/sebastianbergmann/php-invoker/", - "keywords": [ - "process" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:56:09+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "3.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", - "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-08-31T14:07:24+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "6.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", - "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:57:52+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/c34583b87e7b7a8055bf6c450c2c77ce32a24084", - "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for parsing CLI options", - "homepage": "https://github.com/sebastianbergmann/cli-parser", - "support": { - "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-02T07:12:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", - "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the PHP code units", - "homepage": "https://github.com/sebastianbergmann/code-unit", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:58:43+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", - "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:59:15+00:00" - }, - { - "name": "sebastian/comparator", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", - "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-mbstring": "*", - "php": ">=8.1", - "sebastian/diff": "^5.0", - "sebastian/exporter": "^5.0" - }, - "require-dev": { - "phpunit/phpunit": "^10.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/comparator/issues", - "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-10-18T14:56:07+00:00" - }, - { - "name": "sebastian/complexity", - "version": "3.2.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "68ff824baeae169ec9f2137158ee529584553799" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", - "reference": "68ff824baeae169ec9f2137158ee529584553799", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.2-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "security": "https://github.com/sebastianbergmann/complexity/security/policy", - "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-12-21T08:37:17+00:00" - }, - { - "name": "sebastian/diff", - "version": "5.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e", - "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0", - "symfony/process": "^6.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/5.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-02T07:15:17+00:00" - }, - { - "name": "sebastian/environment", - "version": "6.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "8074dbcd93529b357029f5cc5058fd3e43666984" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/8074dbcd93529b357029f5cc5058fd3e43666984", - "reference": "8074dbcd93529b357029f5cc5058fd3e43666984", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "https://github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "security": "https://github.com/sebastianbergmann/environment/security/policy", - "source": "https://github.com/sebastianbergmann/environment/tree/6.1.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-23T08:47:14+00:00" - }, - { - "name": "sebastian/exporter", - "version": "5.1.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "955288482d97c19a372d3f31006ab3f37da47adf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/955288482d97c19a372d3f31006ab3f37da47adf", - "reference": "955288482d97c19a372d3f31006ab3f37da47adf", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": ">=8.1", - "sebastian/recursion-context": "^5.0" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "https://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/exporter/issues", - "security": "https://github.com/sebastianbergmann/exporter/security/policy", - "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-02T07:17:12+00:00" - }, - { - "name": "sebastian/global-state", - "version": "6.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", - "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "sebastian/object-reflector": "^3.0", - "sebastian/recursion-context": "^5.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "https://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "security": "https://github.com/sebastianbergmann/global-state/security/policy", - "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-02T07:19:19+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", - "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for counting the lines of code in PHP source code", - "homepage": "https://github.com/sebastianbergmann/lines-of-code", - "support": { - "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-12-21T08:38:20+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "5.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", - "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "sebastian/object-reflector": "^3.0", - "sebastian/recursion-context": "^5.0" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T07:08:32+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", - "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T07:06:18+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "5.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "05909fb5bc7df4c52992396d0116aed689f93712" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", - "reference": "05909fb5bc7df4c52992396d0116aed689f93712", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "https://github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T07:05:40+00:00" - }, - { - "name": "sebastian/type", - "version": "4.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", - "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the types of the PHP type system", - "homepage": "https://github.com/sebastianbergmann/type", - "support": { - "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T07:10:45+00:00" - }, - { - "name": "sebastian/version", - "version": "4.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", - "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "support": { - "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-07T11:34:05+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.3", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.3" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2024-03-03T12:36:25+00:00" - } - ], - "packages-dev": [], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": {}, - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": ">=8.1", - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "ext-xmlwriter": "*" - }, - "platform-dev": {}, - "platform-overrides": { - "php": "8.1.0" - }, - "plugin-api-version": "2.6.0" -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/phpunit.xsd b/docker/streamline-src/vendor/phpunit/phpunit/phpunit.xsd deleted file mode 100644 index 8fa5451a..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/phpunit.xsd +++ /dev/null @@ -1,323 +0,0 @@ - - - - - This Schema file defines the rules by which the XML configuration file of PHPUnit 10.5 may be structured. - - - - - - Root Element - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The main type specifying the document structure - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Dispatcher/CollectingDispatcher.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Dispatcher/CollectingDispatcher.php deleted file mode 100644 index c431b93e..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Dispatcher/CollectingDispatcher.php +++ /dev/null @@ -1,39 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Event; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class CollectingDispatcher implements Dispatcher -{ - private EventCollection $events; - - public function __construct() - { - $this->events = new EventCollection; - } - - public function dispatch(Event $event): void - { - $this->events->add($event); - } - - public function flush(): EventCollection - { - $events = $this->events; - - $this->events = new EventCollection; - - return $events; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php deleted file mode 100644 index 6895facb..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php +++ /dev/null @@ -1,60 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Event; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class DeferringDispatcher implements SubscribableDispatcher -{ - private readonly SubscribableDispatcher $dispatcher; - private EventCollection $events; - private bool $recording = true; - - public function __construct(SubscribableDispatcher $dispatcher) - { - $this->dispatcher = $dispatcher; - $this->events = new EventCollection; - } - - public function registerTracer(Tracer\Tracer $tracer): void - { - $this->dispatcher->registerTracer($tracer); - } - - public function registerSubscriber(Subscriber $subscriber): void - { - $this->dispatcher->registerSubscriber($subscriber); - } - - public function dispatch(Event $event): void - { - if ($this->recording) { - $this->events->add($event); - - return; - } - - $this->dispatcher->dispatch($event); - } - - public function flush(): void - { - $this->recording = false; - - foreach ($this->events as $event) { - $this->dispatcher->dispatch($event); - } - - $this->events = new EventCollection; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php deleted file mode 100644 index 8e83d746..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php +++ /dev/null @@ -1,139 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Event; - -use const PHP_EOL; -use function array_key_exists; -use function dirname; -use function sprintf; -use function str_starts_with; -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class DirectDispatcher implements SubscribableDispatcher -{ - private readonly TypeMap $typeMap; - - /** - * @psalm-var array> - */ - private array $subscribers = []; - - /** - * @psalm-var list - */ - private array $tracers = []; - - public function __construct(TypeMap $map) - { - $this->typeMap = $map; - } - - public function registerTracer(Tracer\Tracer $tracer): void - { - $this->tracers[] = $tracer; - } - - /** - * @throws MapError - * @throws UnknownSubscriberTypeException - */ - public function registerSubscriber(Subscriber $subscriber): void - { - if (!$this->typeMap->isKnownSubscriberType($subscriber)) { - throw new UnknownSubscriberTypeException( - sprintf( - 'Subscriber "%s" does not implement any known interface - did you forget to register it?', - $subscriber::class, - ), - ); - } - - $eventClassName = $this->typeMap->map($subscriber); - - if (!array_key_exists($eventClassName, $this->subscribers)) { - $this->subscribers[$eventClassName] = []; - } - - $this->subscribers[$eventClassName][] = $subscriber; - } - - /** - * @throws Throwable - * @throws UnknownEventTypeException - */ - public function dispatch(Event $event): void - { - $eventClassName = $event::class; - - if (!$this->typeMap->isKnownEventType($event)) { - throw new UnknownEventTypeException( - sprintf( - 'Unknown event type "%s"', - $eventClassName, - ), - ); - } - - foreach ($this->tracers as $tracer) { - try { - $tracer->trace($event); - // @codeCoverageIgnoreStart - } catch (Throwable $t) { - $this->handleThrowable($t); - } - // @codeCoverageIgnoreEnd - } - - if (!array_key_exists($eventClassName, $this->subscribers)) { - return; - } - - foreach ($this->subscribers[$eventClassName] as $subscriber) { - try { - $subscriber->notify($event); - } catch (Throwable $t) { - $this->handleThrowable($t); - } - } - } - - /** - * @throws Throwable - */ - public function handleThrowable(Throwable $t): void - { - if ($this->isThrowableFromThirdPartySubscriber($t)) { - Facade::emitter()->testRunnerTriggeredWarning( - sprintf( - 'Exception in third-party event subscriber: %s%s%s', - $t->getMessage(), - PHP_EOL, - $t->getTraceAsString(), - ), - ); - - return; - } - - // @codeCoverageIgnoreStart - throw $t; - // @codeCoverageIgnoreEnd - } - - private function isThrowableFromThirdPartySubscriber(Throwable $t): bool - { - return !str_starts_with($t->getFile(), dirname(__DIR__, 2)); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Dispatcher/Dispatcher.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Dispatcher/Dispatcher.php deleted file mode 100644 index e7086539..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Dispatcher/Dispatcher.php +++ /dev/null @@ -1,23 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Event; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This interface is not covered by the backward compatibility promise for PHPUnit - */ -interface Dispatcher -{ - /** - * @throws UnknownEventTypeException - */ - public function dispatch(Event $event): void; -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Dispatcher/SubscribableDispatcher.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Dispatcher/SubscribableDispatcher.php deleted file mode 100644 index c4393da1..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Dispatcher/SubscribableDispatcher.php +++ /dev/null @@ -1,25 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Event; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This interface is not covered by the backward compatibility promise for PHPUnit - */ -interface SubscribableDispatcher extends Dispatcher -{ - /** - * @throws UnknownSubscriberTypeException - */ - public function registerSubscriber(Subscriber $subscriber): void; - - public function registerTracer(Tracer\Tracer $tracer): void; -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php deleted file mode 100644 index 07528570..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php +++ /dev/null @@ -1,1230 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Event; - -use PHPUnit\Event\Code\ClassMethod; -use PHPUnit\Event\Code\ComparisonFailure; -use PHPUnit\Event\Code\Throwable; -use PHPUnit\Event\Test\DataProviderMethodCalled; -use PHPUnit\Event\Test\DataProviderMethodFinished; -use PHPUnit\Event\TestSuite\Filtered as TestSuiteFiltered; -use PHPUnit\Event\TestSuite\Finished as TestSuiteFinished; -use PHPUnit\Event\TestSuite\Loaded as TestSuiteLoaded; -use PHPUnit\Event\TestSuite\Skipped as TestSuiteSkipped; -use PHPUnit\Event\TestSuite\Sorted as TestSuiteSorted; -use PHPUnit\Event\TestSuite\Started as TestSuiteStarted; -use PHPUnit\Event\TestSuite\TestSuite; -use PHPUnit\Framework\Constraint; -use PHPUnit\TextUI\Configuration\Configuration; -use PHPUnit\Util\Exporter; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class DispatchingEmitter implements Emitter -{ - private readonly Dispatcher $dispatcher; - private readonly Telemetry\System $system; - private readonly Telemetry\Snapshot $startSnapshot; - private Telemetry\Snapshot $previousSnapshot; - private bool $exportObjects = false; - - public function __construct(Dispatcher $dispatcher, Telemetry\System $system) - { - $this->dispatcher = $dispatcher; - $this->system = $system; - - $this->startSnapshot = $system->snapshot(); - $this->previousSnapshot = $this->startSnapshot; - } - - /** - * @deprecated - */ - public function exportObjects(): void - { - $this->exportObjects = true; - } - - /** - * @deprecated - */ - public function exportsObjects(): bool - { - return $this->exportObjects; - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function applicationStarted(): void - { - $this->dispatcher->dispatch( - new Application\Started( - $this->telemetryInfo(), - new Runtime\Runtime, - ), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testRunnerStarted(): void - { - $this->dispatcher->dispatch( - new TestRunner\Started( - $this->telemetryInfo(), - ), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testRunnerConfigured(Configuration $configuration): void - { - $this->dispatcher->dispatch( - new TestRunner\Configured( - $this->telemetryInfo(), - $configuration, - ), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testRunnerBootstrapFinished(string $filename): void - { - $this->dispatcher->dispatch( - new TestRunner\BootstrapFinished( - $this->telemetryInfo(), - $filename, - ), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testRunnerLoadedExtensionFromPhar(string $filename, string $name, string $version): void - { - $this->dispatcher->dispatch( - new TestRunner\ExtensionLoadedFromPhar( - $this->telemetryInfo(), - $filename, - $name, - $version, - ), - ); - } - - /** - * @psalm-param class-string $className - * @psalm-param array $parameters - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testRunnerBootstrappedExtension(string $className, array $parameters): void - { - $this->dispatcher->dispatch( - new TestRunner\ExtensionBootstrapped( - $this->telemetryInfo(), - $className, - $parameters, - ), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function dataProviderMethodCalled(ClassMethod $testMethod, ClassMethod $dataProviderMethod): void - { - $this->dispatcher->dispatch( - new DataProviderMethodCalled( - $this->telemetryInfo(), - $testMethod, - $dataProviderMethod, - ), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function dataProviderMethodFinished(ClassMethod $testMethod, ClassMethod ...$calledMethods): void - { - $this->dispatcher->dispatch( - new DataProviderMethodFinished( - $this->telemetryInfo(), - $testMethod, - ...$calledMethods, - ), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testSuiteLoaded(TestSuite $testSuite): void - { - $this->dispatcher->dispatch( - new TestSuiteLoaded( - $this->telemetryInfo(), - $testSuite, - ), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testSuiteFiltered(TestSuite $testSuite): void - { - $this->dispatcher->dispatch( - new TestSuiteFiltered( - $this->telemetryInfo(), - $testSuite, - ), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testSuiteSorted(int $executionOrder, int $executionOrderDefects, bool $resolveDependencies): void - { - $this->dispatcher->dispatch( - new TestSuiteSorted( - $this->telemetryInfo(), - $executionOrder, - $executionOrderDefects, - $resolveDependencies, - ), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testRunnerEventFacadeSealed(): void - { - $this->dispatcher->dispatch( - new TestRunner\EventFacadeSealed( - $this->telemetryInfo(), - ), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testRunnerExecutionStarted(TestSuite $testSuite): void - { - $this->dispatcher->dispatch( - new TestRunner\ExecutionStarted( - $this->telemetryInfo(), - $testSuite, - ), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testRunnerDisabledGarbageCollection(): void - { - $this->dispatcher->dispatch( - new TestRunner\GarbageCollectionDisabled($this->telemetryInfo()), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testRunnerTriggeredGarbageCollection(): void - { - $this->dispatcher->dispatch( - new TestRunner\GarbageCollectionTriggered($this->telemetryInfo()), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testSuiteSkipped(TestSuite $testSuite, string $message): void - { - $this->dispatcher->dispatch( - new TestSuiteSkipped( - $this->telemetryInfo(), - $testSuite, - $message, - ), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testSuiteStarted(TestSuite $testSuite): void - { - $this->dispatcher->dispatch( - new TestSuiteStarted( - $this->telemetryInfo(), - $testSuite, - ), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testPreparationStarted(Code\Test $test): void - { - $this->dispatcher->dispatch( - new Test\PreparationStarted( - $this->telemetryInfo(), - $test, - ), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testPreparationFailed(Code\Test $test): void - { - $this->dispatcher->dispatch( - new Test\PreparationFailed( - $this->telemetryInfo(), - $test, - ), - ); - } - - /** - * @psalm-param class-string $testClassName - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testBeforeFirstTestMethodCalled(string $testClassName, ClassMethod $calledMethod): void - { - $this->dispatcher->dispatch( - new Test\BeforeFirstTestMethodCalled( - $this->telemetryInfo(), - $testClassName, - $calledMethod, - ), - ); - } - - /** - * @psalm-param class-string $testClassName - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testBeforeFirstTestMethodErrored(string $testClassName, ClassMethod $calledMethod, Throwable $throwable): void - { - $this->dispatcher->dispatch( - new Test\BeforeFirstTestMethodErrored( - $this->telemetryInfo(), - $testClassName, - $calledMethod, - $throwable, - ), - ); - } - - /** - * @psalm-param class-string $testClassName - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testBeforeFirstTestMethodFinished(string $testClassName, ClassMethod ...$calledMethods): void - { - $this->dispatcher->dispatch( - new Test\BeforeFirstTestMethodFinished( - $this->telemetryInfo(), - $testClassName, - ...$calledMethods, - ), - ); - } - - /** - * @psalm-param class-string $testClassName - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testBeforeTestMethodCalled(string $testClassName, ClassMethod $calledMethod): void - { - $this->dispatcher->dispatch( - new Test\BeforeTestMethodCalled( - $this->telemetryInfo(), - $testClassName, - $calledMethod, - ), - ); - } - - /** - * @psalm-param class-string $testClassName - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testBeforeTestMethodFinished(string $testClassName, ClassMethod ...$calledMethods): void - { - $this->dispatcher->dispatch( - new Test\BeforeTestMethodFinished( - $this->telemetryInfo(), - $testClassName, - ...$calledMethods, - ), - ); - } - - /** - * @psalm-param class-string $testClassName - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testPreConditionCalled(string $testClassName, ClassMethod $calledMethod): void - { - $this->dispatcher->dispatch( - new Test\PreConditionCalled( - $this->telemetryInfo(), - $testClassName, - $calledMethod, - ), - ); - } - - /** - * @psalm-param class-string $testClassName - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testPreConditionFinished(string $testClassName, ClassMethod ...$calledMethods): void - { - $this->dispatcher->dispatch( - new Test\PreConditionFinished( - $this->telemetryInfo(), - $testClassName, - ...$calledMethods, - ), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testPrepared(Code\Test $test): void - { - $this->dispatcher->dispatch( - new Test\Prepared( - $this->telemetryInfo(), - $test, - ), - ); - } - - /** - * @psalm-param class-string $className - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testRegisteredComparator(string $className): void - { - $this->dispatcher->dispatch( - new Test\ComparatorRegistered( - $this->telemetryInfo(), - $className, - ), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - * - * @deprecated - */ - public function testAssertionSucceeded(mixed $value, Constraint\Constraint $constraint, string $message): void - { - $this->dispatcher->dispatch( - new Test\AssertionSucceeded( - $this->telemetryInfo(), - Exporter::export($value, $this->exportObjects), - $constraint->toString($this->exportObjects), - $constraint->count(), - $message, - ), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - * - * @deprecated - */ - public function testAssertionFailed(mixed $value, Constraint\Constraint $constraint, string $message): void - { - $this->dispatcher->dispatch( - new Test\AssertionFailed( - $this->telemetryInfo(), - Exporter::export($value, $this->exportObjects), - $constraint->toString($this->exportObjects), - $constraint->count(), - $message, - ), - ); - } - - /** - * @psalm-param class-string $className - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testCreatedMockObject(string $className): void - { - $this->dispatcher->dispatch( - new Test\MockObjectCreated( - $this->telemetryInfo(), - $className, - ), - ); - } - - /** - * @psalm-param list $interfaces - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testCreatedMockObjectForIntersectionOfInterfaces(array $interfaces): void - { - $this->dispatcher->dispatch( - new Test\MockObjectForIntersectionOfInterfacesCreated( - $this->telemetryInfo(), - $interfaces, - ), - ); - } - - /** - * @psalm-param trait-string $traitName - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testCreatedMockObjectForTrait(string $traitName): void - { - $this->dispatcher->dispatch( - new Test\MockObjectForTraitCreated( - $this->telemetryInfo(), - $traitName, - ), - ); - } - - /** - * @psalm-param class-string $className - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testCreatedMockObjectForAbstractClass(string $className): void - { - $this->dispatcher->dispatch( - new Test\MockObjectForAbstractClassCreated( - $this->telemetryInfo(), - $className, - ), - ); - } - - /** - * @psalm-param class-string $originalClassName - * @psalm-param class-string $mockClassName - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testCreatedMockObjectFromWsdl(string $wsdlFile, string $originalClassName, string $mockClassName, array $methods, bool $callOriginalConstructor, array $options): void - { - $this->dispatcher->dispatch( - new Test\MockObjectFromWsdlCreated( - $this->telemetryInfo(), - $wsdlFile, - $originalClassName, - $mockClassName, - $methods, - $callOriginalConstructor, - $options, - ), - ); - } - - /** - * @psalm-param class-string $className - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testCreatedPartialMockObject(string $className, string ...$methodNames): void - { - $this->dispatcher->dispatch( - new Test\PartialMockObjectCreated( - $this->telemetryInfo(), - $className, - ...$methodNames, - ), - ); - } - - /** - * @psalm-param class-string $className - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testCreatedTestProxy(string $className, array $constructorArguments): void - { - $this->dispatcher->dispatch( - new Test\TestProxyCreated( - $this->telemetryInfo(), - $className, - Exporter::export($constructorArguments, $this->exportObjects), - ), - ); - } - - /** - * @psalm-param class-string $className - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testCreatedStub(string $className): void - { - $this->dispatcher->dispatch( - new Test\TestStubCreated( - $this->telemetryInfo(), - $className, - ), - ); - } - - /** - * @psalm-param list $interfaces - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testCreatedStubForIntersectionOfInterfaces(array $interfaces): void - { - $this->dispatcher->dispatch( - new Test\TestStubForIntersectionOfInterfacesCreated( - $this->telemetryInfo(), - $interfaces, - ), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testErrored(Code\Test $test, Throwable $throwable): void - { - $this->dispatcher->dispatch( - new Test\Errored( - $this->telemetryInfo(), - $test, - $throwable, - ), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testFailed(Code\Test $test, Throwable $throwable, ?ComparisonFailure $comparisonFailure): void - { - $this->dispatcher->dispatch( - new Test\Failed( - $this->telemetryInfo(), - $test, - $throwable, - $comparisonFailure, - ), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testPassed(Code\Test $test): void - { - $this->dispatcher->dispatch( - new Test\Passed( - $this->telemetryInfo(), - $test, - ), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testConsideredRisky(Code\Test $test, string $message): void - { - $this->dispatcher->dispatch( - new Test\ConsideredRisky( - $this->telemetryInfo(), - $test, - $message, - ), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testMarkedAsIncomplete(Code\Test $test, Throwable $throwable): void - { - $this->dispatcher->dispatch( - new Test\MarkedIncomplete( - $this->telemetryInfo(), - $test, - $throwable, - ), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testSkipped(Code\Test $test, string $message): void - { - $this->dispatcher->dispatch( - new Test\Skipped( - $this->telemetryInfo(), - $test, - $message, - ), - ); - } - - /** - * @psalm-param non-empty-string $message - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testTriggeredPhpunitDeprecation(Code\Test $test, string $message): void - { - $this->dispatcher->dispatch( - new Test\PhpunitDeprecationTriggered( - $this->telemetryInfo(), - $test, - $message, - ), - ); - } - - /** - * @psalm-param non-empty-string $message - * @psalm-param non-empty-string $file - * @psalm-param positive-int $line - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testTriggeredPhpDeprecation(Code\Test $test, string $message, string $file, int $line, bool $suppressed, bool $ignoredByBaseline, bool $ignoredByTest): void - { - $this->dispatcher->dispatch( - new Test\PhpDeprecationTriggered( - $this->telemetryInfo(), - $test, - $message, - $file, - $line, - $suppressed, - $ignoredByBaseline, - $ignoredByTest, - ), - ); - } - - /** - * @psalm-param non-empty-string $message - * @psalm-param non-empty-string $file - * @psalm-param positive-int $line - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testTriggeredDeprecation(Code\Test $test, string $message, string $file, int $line, bool $suppressed, bool $ignoredByBaseline, bool $ignoredByTest): void - { - $this->dispatcher->dispatch( - new Test\DeprecationTriggered( - $this->telemetryInfo(), - $test, - $message, - $file, - $line, - $suppressed, - $ignoredByBaseline, - $ignoredByTest, - ), - ); - } - - /** - * @psalm-param non-empty-string $message - * @psalm-param non-empty-string $file - * @psalm-param positive-int $line - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testTriggeredError(Code\Test $test, string $message, string $file, int $line, bool $suppressed): void - { - $this->dispatcher->dispatch( - new Test\ErrorTriggered( - $this->telemetryInfo(), - $test, - $message, - $file, - $line, - $suppressed, - ), - ); - } - - /** - * @psalm-param non-empty-string $message - * @psalm-param non-empty-string $file - * @psalm-param positive-int $line - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testTriggeredNotice(Code\Test $test, string $message, string $file, int $line, bool $suppressed, bool $ignoredByBaseline): void - { - $this->dispatcher->dispatch( - new Test\NoticeTriggered( - $this->telemetryInfo(), - $test, - $message, - $file, - $line, - $suppressed, - $ignoredByBaseline, - ), - ); - } - - /** - * @psalm-param non-empty-string $message - * @psalm-param non-empty-string $file - * @psalm-param positive-int $line - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testTriggeredPhpNotice(Code\Test $test, string $message, string $file, int $line, bool $suppressed, bool $ignoredByBaseline): void - { - $this->dispatcher->dispatch( - new Test\PhpNoticeTriggered( - $this->telemetryInfo(), - $test, - $message, - $file, - $line, - $suppressed, - $ignoredByBaseline, - ), - ); - } - - /** - * @psalm-param non-empty-string $message - * @psalm-param non-empty-string $file - * @psalm-param positive-int $line - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testTriggeredWarning(Code\Test $test, string $message, string $file, int $line, bool $suppressed, bool $ignoredByBaseline): void - { - $this->dispatcher->dispatch( - new Test\WarningTriggered( - $this->telemetryInfo(), - $test, - $message, - $file, - $line, - $suppressed, - $ignoredByBaseline, - ), - ); - } - - /** - * @psalm-param non-empty-string $message - * @psalm-param non-empty-string $file - * @psalm-param positive-int $line - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testTriggeredPhpWarning(Code\Test $test, string $message, string $file, int $line, bool $suppressed, bool $ignoredByBaseline): void - { - $this->dispatcher->dispatch( - new Test\PhpWarningTriggered( - $this->telemetryInfo(), - $test, - $message, - $file, - $line, - $suppressed, - $ignoredByBaseline, - ), - ); - } - - /** - * @psalm-param non-empty-string $message - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testTriggeredPhpunitError(Code\Test $test, string $message): void - { - $this->dispatcher->dispatch( - new Test\PhpunitErrorTriggered( - $this->telemetryInfo(), - $test, - $message, - ), - ); - } - - /** - * @psalm-param non-empty-string $message - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testTriggeredPhpunitWarning(Code\Test $test, string $message): void - { - $this->dispatcher->dispatch( - new Test\PhpunitWarningTriggered( - $this->telemetryInfo(), - $test, - $message, - ), - ); - } - - /** - * @psalm-param non-empty-string $output - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testPrintedUnexpectedOutput(string $output): void - { - $this->dispatcher->dispatch( - new Test\PrintedUnexpectedOutput( - $this->telemetryInfo(), - $output, - ), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testFinished(Code\Test $test, int $numberOfAssertionsPerformed): void - { - $this->dispatcher->dispatch( - new Test\Finished( - $this->telemetryInfo(), - $test, - $numberOfAssertionsPerformed, - ), - ); - } - - /** - * @psalm-param class-string $testClassName - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testPostConditionCalled(string $testClassName, ClassMethod $calledMethod): void - { - $this->dispatcher->dispatch( - new Test\PostConditionCalled( - $this->telemetryInfo(), - $testClassName, - $calledMethod, - ), - ); - } - - /** - * @psalm-param class-string $testClassName - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testPostConditionFinished(string $testClassName, ClassMethod ...$calledMethods): void - { - $this->dispatcher->dispatch( - new Test\PostConditionFinished( - $this->telemetryInfo(), - $testClassName, - ...$calledMethods, - ), - ); - } - - /** - * @psalm-param class-string $testClassName - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testAfterTestMethodCalled(string $testClassName, ClassMethod $calledMethod): void - { - $this->dispatcher->dispatch( - new Test\AfterTestMethodCalled( - $this->telemetryInfo(), - $testClassName, - $calledMethod, - ), - ); - } - - /** - * @psalm-param class-string $testClassName - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testAfterTestMethodFinished(string $testClassName, ClassMethod ...$calledMethods): void - { - $this->dispatcher->dispatch( - new Test\AfterTestMethodFinished( - $this->telemetryInfo(), - $testClassName, - ...$calledMethods, - ), - ); - } - - /** - * @psalm-param class-string $testClassName - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testAfterLastTestMethodCalled(string $testClassName, ClassMethod $calledMethod): void - { - $this->dispatcher->dispatch( - new Test\AfterLastTestMethodCalled( - $this->telemetryInfo(), - $testClassName, - $calledMethod, - ), - ); - } - - /** - * @psalm-param class-string $testClassName - * - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testAfterLastTestMethodFinished(string $testClassName, ClassMethod ...$calledMethods): void - { - $this->dispatcher->dispatch( - new Test\AfterLastTestMethodFinished( - $this->telemetryInfo(), - $testClassName, - ...$calledMethods, - ), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testSuiteFinished(TestSuite $testSuite): void - { - $this->dispatcher->dispatch( - new TestSuiteFinished( - $this->telemetryInfo(), - $testSuite, - ), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testRunnerTriggeredDeprecation(string $message): void - { - $this->dispatcher->dispatch( - new TestRunner\DeprecationTriggered( - $this->telemetryInfo(), - $message, - ), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testRunnerTriggeredWarning(string $message): void - { - $this->dispatcher->dispatch( - new TestRunner\WarningTriggered( - $this->telemetryInfo(), - $message, - ), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testRunnerEnabledGarbageCollection(): void - { - $this->dispatcher->dispatch( - new TestRunner\GarbageCollectionEnabled($this->telemetryInfo()), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testRunnerExecutionAborted(): void - { - $this->dispatcher->dispatch( - new TestRunner\ExecutionAborted($this->telemetryInfo()), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testRunnerExecutionFinished(): void - { - $this->dispatcher->dispatch( - new TestRunner\ExecutionFinished($this->telemetryInfo()), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function testRunnerFinished(): void - { - $this->dispatcher->dispatch( - new TestRunner\Finished($this->telemetryInfo()), - ); - } - - /** - * @throws InvalidArgumentException - * @throws UnknownEventTypeException - */ - public function applicationFinished(int $shellExitCode): void - { - $this->dispatcher->dispatch( - new Application\Finished( - $this->telemetryInfo(), - $shellExitCode, - ), - ); - } - - /** - * @throws InvalidArgumentException - */ - private function telemetryInfo(): Telemetry\Info - { - $current = $this->system->snapshot(); - - $info = new Telemetry\Info( - $current, - $current->time()->duration($this->startSnapshot->time()), - $current->memoryUsage()->diff($this->startSnapshot->memoryUsage()), - $current->time()->duration($this->previousSnapshot->time()), - $current->memoryUsage()->diff($this->previousSnapshot->memoryUsage()), - ); - - $this->previousSnapshot = $current; - - return $info; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Emitter/Emitter.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Emitter/Emitter.php deleted file mode 100644 index c66cbdc0..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Emitter/Emitter.php +++ /dev/null @@ -1,310 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Event; - -use PHPUnit\Event\Code\ClassMethod; -use PHPUnit\Event\Code\ComparisonFailure; -use PHPUnit\Event\Code\Throwable; -use PHPUnit\Event\TestSuite\TestSuite; -use PHPUnit\Framework\Constraint; -use PHPUnit\TextUI\Configuration\Configuration; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -interface Emitter -{ - /** - * @deprecated - */ - public function exportObjects(): void; - - /** - * @deprecated - */ - public function exportsObjects(): bool; - - public function applicationStarted(): void; - - public function testRunnerStarted(): void; - - public function testRunnerConfigured(Configuration $configuration): void; - - public function testRunnerBootstrapFinished(string $filename): void; - - public function testRunnerLoadedExtensionFromPhar(string $filename, string $name, string $version): void; - - /** - * @psalm-param class-string $className - * @psalm-param array $parameters - */ - public function testRunnerBootstrappedExtension(string $className, array $parameters): void; - - public function dataProviderMethodCalled(ClassMethod $testMethod, ClassMethod $dataProviderMethod): void; - - public function dataProviderMethodFinished(ClassMethod $testMethod, ClassMethod ...$calledMethods): void; - - public function testSuiteLoaded(TestSuite $testSuite): void; - - public function testSuiteFiltered(TestSuite $testSuite): void; - - public function testSuiteSorted(int $executionOrder, int $executionOrderDefects, bool $resolveDependencies): void; - - public function testRunnerEventFacadeSealed(): void; - - public function testRunnerExecutionStarted(TestSuite $testSuite): void; - - public function testRunnerDisabledGarbageCollection(): void; - - public function testRunnerTriggeredGarbageCollection(): void; - - public function testSuiteSkipped(TestSuite $testSuite, string $message): void; - - public function testSuiteStarted(TestSuite $testSuite): void; - - public function testPreparationStarted(Code\Test $test): void; - - public function testPreparationFailed(Code\Test $test): void; - - /** - * @psalm-param class-string $testClassName - */ - public function testBeforeFirstTestMethodCalled(string $testClassName, ClassMethod $calledMethod): void; - - /** - * @psalm-param class-string $testClassName - */ - public function testBeforeFirstTestMethodErrored(string $testClassName, ClassMethod $calledMethod, Throwable $throwable): void; - - /** - * @psalm-param class-string $testClassName - */ - public function testBeforeFirstTestMethodFinished(string $testClassName, ClassMethod ...$calledMethods): void; - - /** - * @psalm-param class-string $testClassName - */ - public function testBeforeTestMethodCalled(string $testClassName, ClassMethod $calledMethod): void; - - /** - * @psalm-param class-string $testClassName - */ - public function testBeforeTestMethodFinished(string $testClassName, ClassMethod ...$calledMethods): void; - - /** - * @psalm-param class-string $testClassName - */ - public function testPreConditionCalled(string $testClassName, ClassMethod $calledMethod): void; - - /** - * @psalm-param class-string $testClassName - */ - public function testPreConditionFinished(string $testClassName, ClassMethod ...$calledMethods): void; - - public function testPrepared(Code\Test $test): void; - - /** - * @psalm-param class-string $className - */ - public function testRegisteredComparator(string $className): void; - - /** - * @deprecated - */ - public function testAssertionSucceeded(mixed $value, Constraint\Constraint $constraint, string $message): void; - - /** - * @deprecated - */ - public function testAssertionFailed(mixed $value, Constraint\Constraint $constraint, string $message): void; - - /** - * @psalm-param class-string $className - */ - public function testCreatedMockObject(string $className): void; - - /** - * @psalm-param list $interfaces - */ - public function testCreatedMockObjectForIntersectionOfInterfaces(array $interfaces): void; - - /** - * @psalm-param trait-string $traitName - */ - public function testCreatedMockObjectForTrait(string $traitName): void; - - /** - * @psalm-param class-string $className - */ - public function testCreatedMockObjectForAbstractClass(string $className): void; - - /** - * @psalm-param class-string $originalClassName - * @psalm-param class-string $mockClassName - */ - public function testCreatedMockObjectFromWsdl(string $wsdlFile, string $originalClassName, string $mockClassName, array $methods, bool $callOriginalConstructor, array $options): void; - - /** - * @psalm-param class-string $className - */ - public function testCreatedPartialMockObject(string $className, string ...$methodNames): void; - - /** - * @psalm-param class-string $className - */ - public function testCreatedTestProxy(string $className, array $constructorArguments): void; - - /** - * @psalm-param class-string $className - */ - public function testCreatedStub(string $className): void; - - /** - * @psalm-param list $interfaces - */ - public function testCreatedStubForIntersectionOfInterfaces(array $interfaces): void; - - public function testErrored(Code\Test $test, Throwable $throwable): void; - - public function testFailed(Code\Test $test, Throwable $throwable, ?ComparisonFailure $comparisonFailure): void; - - public function testPassed(Code\Test $test): void; - - /** - * @psalm-param non-empty-string $message - */ - public function testConsideredRisky(Code\Test $test, string $message): void; - - public function testMarkedAsIncomplete(Code\Test $test, Throwable $throwable): void; - - /** - * @psalm-param non-empty-string $message - */ - public function testSkipped(Code\Test $test, string $message): void; - - /** - * @psalm-param non-empty-string $message - */ - public function testTriggeredPhpunitDeprecation(Code\Test $test, string $message): void; - - /** - * @psalm-param non-empty-string $message - * @psalm-param non-empty-string $file - * @psalm-param positive-int $line - */ - public function testTriggeredPhpDeprecation(Code\Test $test, string $message, string $file, int $line, bool $suppressed, bool $ignoredByBaseline, bool $ignoredByTest): void; - - /** - * @psalm-param non-empty-string $message - * @psalm-param non-empty-string $file - * @psalm-param positive-int $line - */ - public function testTriggeredDeprecation(Code\Test $test, string $message, string $file, int $line, bool $suppressed, bool $ignoredByBaseline, bool $ignoredByTest): void; - - /** - * @psalm-param non-empty-string $message - * @psalm-param non-empty-string $file - * @psalm-param positive-int $line - */ - public function testTriggeredError(Code\Test $test, string $message, string $file, int $line, bool $suppressed): void; - - /** - * @psalm-param non-empty-string $message - * @psalm-param non-empty-string $file - * @psalm-param positive-int $line - */ - public function testTriggeredNotice(Code\Test $test, string $message, string $file, int $line, bool $suppressed, bool $ignoredByBaseline): void; - - /** - * @psalm-param non-empty-string $message - * @psalm-param non-empty-string $file - * @psalm-param positive-int $line - */ - public function testTriggeredPhpNotice(Code\Test $test, string $message, string $file, int $line, bool $suppressed, bool $ignoredByBaseline): void; - - /** - * @psalm-param non-empty-string $message - * @psalm-param non-empty-string $file - * @psalm-param positive-int $line - */ - public function testTriggeredWarning(Code\Test $test, string $message, string $file, int $line, bool $suppressed, bool $ignoredByBaseline): void; - - /** - * @psalm-param non-empty-string $message - * @psalm-param non-empty-string $file - * @psalm-param positive-int $line - */ - public function testTriggeredPhpWarning(Code\Test $test, string $message, string $file, int $line, bool $suppressed, bool $ignoredByBaseline): void; - - /** - * @psalm-param non-empty-string $message - */ - public function testTriggeredPhpunitError(Code\Test $test, string $message): void; - - /** - * @psalm-param non-empty-string $message - */ - public function testTriggeredPhpunitWarning(Code\Test $test, string $message): void; - - /** - * @psalm-param non-empty-string $output - */ - public function testPrintedUnexpectedOutput(string $output): void; - - public function testFinished(Code\Test $test, int $numberOfAssertionsPerformed): void; - - /** - * @psalm-param class-string $testClassName - */ - public function testPostConditionCalled(string $testClassName, ClassMethod $calledMethod): void; - - /** - * @psalm-param class-string $testClassName - */ - public function testPostConditionFinished(string $testClassName, ClassMethod ...$calledMethods): void; - - /** - * @psalm-param class-string $testClassName - */ - public function testAfterTestMethodCalled(string $testClassName, ClassMethod $calledMethod): void; - - /** - * @psalm-param class-string $testClassName - */ - public function testAfterTestMethodFinished(string $testClassName, ClassMethod ...$calledMethods): void; - - /** - * @psalm-param class-string $testClassName - */ - public function testAfterLastTestMethodCalled(string $testClassName, ClassMethod $calledMethod): void; - - /** - * @psalm-param class-string $testClassName - */ - public function testAfterLastTestMethodFinished(string $testClassName, ClassMethod ...$calledMethods): void; - - public function testSuiteFinished(TestSuite $testSuite): void; - - public function testRunnerTriggeredDeprecation(string $message): void; - - public function testRunnerTriggeredWarning(string $message): void; - - public function testRunnerEnabledGarbageCollection(): void; - - public function testRunnerExecutionAborted(): void; - - public function testRunnerExecutionFinished(): void; - - public function testRunnerFinished(): void; - - public function applicationFinished(int $shellExitCode): void; -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodErrored.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodErrored.php deleted file mode 100644 index 959b1350..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodErrored.php +++ /dev/null @@ -1,84 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Event\Test; - -use const PHP_EOL; -use function sprintf; -use PHPUnit\Event\Code; -use PHPUnit\Event\Code\Throwable; -use PHPUnit\Event\Event; -use PHPUnit\Event\Telemetry; - -/** - * @psalm-immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final class BeforeFirstTestMethodErrored implements Event -{ - private readonly Telemetry\Info $telemetryInfo; - - /** - * @psalm-var class-string - */ - private readonly string $testClassName; - private readonly Code\ClassMethod $calledMethod; - private readonly Throwable $throwable; - - /** - * @psalm-param class-string $testClassName - */ - public function __construct(Telemetry\Info $telemetryInfo, string $testClassName, Code\ClassMethod $calledMethod, Throwable $throwable) - { - $this->telemetryInfo = $telemetryInfo; - $this->testClassName = $testClassName; - $this->calledMethod = $calledMethod; - $this->throwable = $throwable; - } - - public function telemetryInfo(): Telemetry\Info - { - return $this->telemetryInfo; - } - - /** - * @psalm-return class-string - */ - public function testClassName(): string - { - return $this->testClassName; - } - - public function calledMethod(): Code\ClassMethod - { - return $this->calledMethod; - } - - public function throwable(): Throwable - { - return $this->throwable; - } - - public function asString(): string - { - $message = $this->throwable->message(); - - if (!empty($message)) { - $message = PHP_EOL . $message; - } - - return sprintf( - 'Before First Test Method Errored (%s::%s)%s', - $this->calledMethod->className(), - $this->calledMethod->methodName(), - $message, - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodFinished.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodFinished.php deleted file mode 100644 index bd521dfb..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodFinished.php +++ /dev/null @@ -1,76 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Event\Test; - -use const PHP_EOL; -use function sprintf; -use PHPUnit\Event\Code\ClassMethod; -use PHPUnit\Event\Event; -use PHPUnit\Event\Telemetry; - -/** - * @psalm-immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final class DataProviderMethodFinished implements Event -{ - private readonly Telemetry\Info $telemetryInfo; - private readonly ClassMethod $testMethod; - - /** - * @psalm-var list - */ - private readonly array $calledMethods; - - public function __construct(Telemetry\Info $telemetryInfo, ClassMethod $testMethod, ClassMethod ...$calledMethods) - { - $this->telemetryInfo = $telemetryInfo; - $this->testMethod = $testMethod; - $this->calledMethods = $calledMethods; - } - - public function telemetryInfo(): Telemetry\Info - { - return $this->telemetryInfo; - } - - public function testMethod(): ClassMethod - { - return $this->testMethod; - } - - /** - * @psalm-return list - */ - public function calledMethods(): array - { - return $this->calledMethods; - } - - public function asString(): string - { - $buffer = sprintf( - 'Data Provider Method Finished for %s::%s:', - $this->testMethod->className(), - $this->testMethod->methodName(), - ); - - foreach ($this->calledMethods as $calledMethod) { - $buffer .= sprintf( - PHP_EOL . '- %s::%s', - $calledMethod->className(), - $calledMethod->methodName(), - ); - } - - return $buffer; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Events/Test/PrintedUnexpectedOutput.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Events/Test/PrintedUnexpectedOutput.php deleted file mode 100644 index 308332e8..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Events/Test/PrintedUnexpectedOutput.php +++ /dev/null @@ -1,61 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Event\Test; - -use const PHP_EOL; -use function sprintf; -use PHPUnit\Event\Event; -use PHPUnit\Event\Telemetry; - -/** - * @psalm-immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final class PrintedUnexpectedOutput implements Event -{ - private readonly Telemetry\Info $telemetryInfo; - - /** - * @psalm-var non-empty-string - */ - private readonly string $output; - - /** - * @psalm-param non-empty-string $output - */ - public function __construct(Telemetry\Info $telemetryInfo, string $output) - { - $this->telemetryInfo = $telemetryInfo; - $this->output = $output; - } - - public function telemetryInfo(): Telemetry\Info - { - return $this->telemetryInfo; - } - - /** - * @psalm-return non-empty-string - */ - public function output(): string - { - return $this->output; - } - - public function asString(): string - { - return sprintf( - 'Test Printed Unexpected Output%s%s', - PHP_EOL, - $this->output, - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Exception/NoTestCaseObjectOnCallStackException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Exception/NoTestCaseObjectOnCallStackException.php deleted file mode 100644 index 35b4c25a..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Exception/NoTestCaseObjectOnCallStackException.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Event\Code; - -use PHPUnit\Event\Exception; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class NoTestCaseObjectOnCallStackException extends RuntimeException implements Exception -{ - public function __construct() - { - parent::__construct('Cannot find TestCase object on call stack'); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Facade.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Facade.php deleted file mode 100644 index c0a15e25..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Facade.php +++ /dev/null @@ -1,269 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Event; - -use function gc_status; -use PHPUnit\Event\Telemetry\HRTime; -use PHPUnit\Event\Telemetry\Php81GarbageCollectorStatusProvider; -use PHPUnit\Event\Telemetry\Php83GarbageCollectorStatusProvider; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Facade -{ - private static ?self $instance = null; - private Emitter $emitter; - private ?TypeMap $typeMap = null; - private ?DeferringDispatcher $deferringDispatcher = null; - private bool $sealed = false; - - public static function instance(): self - { - if (self::$instance === null) { - self::$instance = new self; - } - - return self::$instance; - } - - public static function emitter(): Emitter - { - return self::instance()->emitter; - } - - public function __construct() - { - $this->emitter = $this->createDispatchingEmitter(); - } - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - public function registerSubscribers(Subscriber ...$subscribers): void - { - foreach ($subscribers as $subscriber) { - $this->registerSubscriber($subscriber); - } - } - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - public function registerSubscriber(Subscriber $subscriber): void - { - if ($this->sealed) { - throw new EventFacadeIsSealedException; - } - - $this->deferredDispatcher()->registerSubscriber($subscriber); - } - - /** - * @throws EventFacadeIsSealedException - */ - public function registerTracer(Tracer\Tracer $tracer): void - { - if ($this->sealed) { - throw new EventFacadeIsSealedException; - } - - $this->deferredDispatcher()->registerTracer($tracer); - } - - /** - * @codeCoverageIgnore - * - * @noinspection PhpUnused - */ - public function initForIsolation(HRTime $offset, bool $exportObjects): CollectingDispatcher - { - $dispatcher = new CollectingDispatcher; - - $this->emitter = new DispatchingEmitter( - $dispatcher, - new Telemetry\System( - new Telemetry\SystemStopWatchWithOffset($offset), - new Telemetry\SystemMemoryMeter, - $this->garbageCollectorStatusProvider(), - ), - ); - - if ($exportObjects) { - $this->emitter->exportObjects(); - } - - $this->sealed = true; - - return $dispatcher; - } - - public function forward(EventCollection $events): void - { - $dispatcher = $this->deferredDispatcher(); - - foreach ($events as $event) { - $dispatcher->dispatch($event); - } - } - - public function seal(): void - { - $this->deferredDispatcher()->flush(); - - $this->sealed = true; - - $this->emitter->testRunnerEventFacadeSealed(); - } - - private function createDispatchingEmitter(): DispatchingEmitter - { - return new DispatchingEmitter( - $this->deferredDispatcher(), - $this->createTelemetrySystem(), - ); - } - - private function createTelemetrySystem(): Telemetry\System - { - return new Telemetry\System( - new Telemetry\SystemStopWatch, - new Telemetry\SystemMemoryMeter, - $this->garbageCollectorStatusProvider(), - ); - } - - private function deferredDispatcher(): DeferringDispatcher - { - if ($this->deferringDispatcher === null) { - $this->deferringDispatcher = new DeferringDispatcher( - new DirectDispatcher($this->typeMap()), - ); - } - - return $this->deferringDispatcher; - } - - private function typeMap(): TypeMap - { - if ($this->typeMap === null) { - $typeMap = new TypeMap; - - $this->registerDefaultTypes($typeMap); - - $this->typeMap = $typeMap; - } - - return $this->typeMap; - } - - private function registerDefaultTypes(TypeMap $typeMap): void - { - $defaultEvents = [ - Application\Started::class, - Application\Finished::class, - - Test\DataProviderMethodCalled::class, - Test\DataProviderMethodFinished::class, - Test\MarkedIncomplete::class, - Test\AfterLastTestMethodCalled::class, - Test\AfterLastTestMethodFinished::class, - Test\AfterTestMethodCalled::class, - Test\AfterTestMethodFinished::class, - Test\AssertionSucceeded::class, - Test\AssertionFailed::class, - Test\BeforeFirstTestMethodCalled::class, - Test\BeforeFirstTestMethodErrored::class, - Test\BeforeFirstTestMethodFinished::class, - Test\BeforeTestMethodCalled::class, - Test\BeforeTestMethodFinished::class, - Test\ComparatorRegistered::class, - Test\ConsideredRisky::class, - Test\DeprecationTriggered::class, - Test\Errored::class, - Test\ErrorTriggered::class, - Test\Failed::class, - Test\Finished::class, - Test\NoticeTriggered::class, - Test\Passed::class, - Test\PhpDeprecationTriggered::class, - Test\PhpNoticeTriggered::class, - Test\PhpunitDeprecationTriggered::class, - Test\PhpunitErrorTriggered::class, - Test\PhpunitWarningTriggered::class, - Test\PhpWarningTriggered::class, - Test\PostConditionCalled::class, - Test\PostConditionFinished::class, - Test\PreConditionCalled::class, - Test\PreConditionFinished::class, - Test\PreparationStarted::class, - Test\Prepared::class, - Test\PreparationFailed::class, - Test\PrintedUnexpectedOutput::class, - Test\Skipped::class, - Test\WarningTriggered::class, - - Test\MockObjectCreated::class, - Test\MockObjectForAbstractClassCreated::class, - Test\MockObjectForIntersectionOfInterfacesCreated::class, - Test\MockObjectForTraitCreated::class, - Test\MockObjectFromWsdlCreated::class, - Test\PartialMockObjectCreated::class, - Test\TestProxyCreated::class, - Test\TestStubCreated::class, - Test\TestStubForIntersectionOfInterfacesCreated::class, - - TestRunner\BootstrapFinished::class, - TestRunner\Configured::class, - TestRunner\EventFacadeSealed::class, - TestRunner\ExecutionAborted::class, - TestRunner\ExecutionFinished::class, - TestRunner\ExecutionStarted::class, - TestRunner\ExtensionLoadedFromPhar::class, - TestRunner\ExtensionBootstrapped::class, - TestRunner\Finished::class, - TestRunner\Started::class, - TestRunner\DeprecationTriggered::class, - TestRunner\WarningTriggered::class, - TestRunner\GarbageCollectionDisabled::class, - TestRunner\GarbageCollectionTriggered::class, - TestRunner\GarbageCollectionEnabled::class, - - TestSuite\Filtered::class, - TestSuite\Finished::class, - TestSuite\Loaded::class, - TestSuite\Skipped::class, - TestSuite\Sorted::class, - TestSuite\Started::class, - ]; - - foreach ($defaultEvents as $eventClass) { - $typeMap->addMapping( - $eventClass . 'Subscriber', - $eventClass, - ); - } - } - - private function garbageCollectorStatusProvider(): Telemetry\GarbageCollectorStatusProvider - { - if (!isset(gc_status()['running'])) { - // @codeCoverageIgnoreStart - return new Php81GarbageCollectorStatusProvider; - // @codeCoverageIgnoreEnd - } - - return new Php83GarbageCollectorStatusProvider; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/TypeMap.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Event/TypeMap.php deleted file mode 100644 index df5e79cc..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/TypeMap.php +++ /dev/null @@ -1,192 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Event; - -use function array_key_exists; -use function class_exists; -use function class_implements; -use function in_array; -use function interface_exists; -use function sprintf; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TypeMap -{ - /** - * @psalm-var array - */ - private array $mapping = []; - - /** - * @psalm-param class-string $subscriberInterface - * @psalm-param class-string $eventClass - * - * @throws EventAlreadyAssignedException - * @throws InvalidEventException - * @throws InvalidSubscriberException - * @throws SubscriberTypeAlreadyRegisteredException - * @throws UnknownEventException - * @throws UnknownSubscriberException - */ - public function addMapping(string $subscriberInterface, string $eventClass): void - { - $this->ensureSubscriberInterfaceExists($subscriberInterface); - $this->ensureSubscriberInterfaceExtendsInterface($subscriberInterface); - $this->ensureEventClassExists($eventClass); - $this->ensureEventClassImplementsEventInterface($eventClass); - $this->ensureSubscriberWasNotAlreadyRegistered($subscriberInterface); - $this->ensureEventWasNotAlreadyAssigned($eventClass); - - $this->mapping[$subscriberInterface] = $eventClass; - } - - public function isKnownSubscriberType(Subscriber $subscriber): bool - { - foreach (class_implements($subscriber) as $interface) { - if (array_key_exists($interface, $this->mapping)) { - return true; - } - } - - return false; - } - - public function isKnownEventType(Event $event): bool - { - return in_array($event::class, $this->mapping, true); - } - - /** - * @psalm-return class-string - * - * @throws MapError - */ - public function map(Subscriber $subscriber): string - { - foreach (class_implements($subscriber) as $interface) { - if (array_key_exists($interface, $this->mapping)) { - return $this->mapping[$interface]; - } - } - - throw new MapError( - sprintf( - 'Subscriber "%s" does not implement a known interface', - $subscriber::class, - ), - ); - } - - /** - * @psalm-param class-string $subscriberInterface - * - * @throws UnknownSubscriberException - */ - private function ensureSubscriberInterfaceExists(string $subscriberInterface): void - { - if (!interface_exists($subscriberInterface)) { - throw new UnknownSubscriberException( - sprintf( - 'Subscriber "%s" does not exist or is not an interface', - $subscriberInterface, - ), - ); - } - } - - /** - * @psalm-param class-string $eventClass - * - * @throws UnknownEventException - */ - private function ensureEventClassExists(string $eventClass): void - { - if (!class_exists($eventClass)) { - throw new UnknownEventException( - sprintf( - 'Event class "%s" does not exist', - $eventClass, - ), - ); - } - } - - /** - * @psalm-param class-string $subscriberInterface - * - * @throws InvalidSubscriberException - */ - private function ensureSubscriberInterfaceExtendsInterface(string $subscriberInterface): void - { - if (!in_array(Subscriber::class, class_implements($subscriberInterface), true)) { - throw new InvalidSubscriberException( - sprintf( - 'Subscriber "%s" does not extend Subscriber interface', - $subscriberInterface, - ), - ); - } - } - - /** - * @psalm-param class-string $eventClass - * - * @throws InvalidEventException - */ - private function ensureEventClassImplementsEventInterface(string $eventClass): void - { - if (!in_array(Event::class, class_implements($eventClass), true)) { - throw new InvalidEventException( - sprintf( - 'Event "%s" does not implement Event interface', - $eventClass, - ), - ); - } - } - - /** - * @psalm-param class-string $subscriberInterface - * - * @throws SubscriberTypeAlreadyRegisteredException - */ - private function ensureSubscriberWasNotAlreadyRegistered(string $subscriberInterface): void - { - if (array_key_exists($subscriberInterface, $this->mapping)) { - throw new SubscriberTypeAlreadyRegisteredException( - sprintf( - 'Subscriber type "%s" already registered', - $subscriberInterface, - ), - ); - } - } - - /** - * @psalm-param class-string $eventClass - * - * @throws EventAlreadyAssignedException - */ - private function ensureEventWasNotAlreadyAssigned(string $eventClass): void - { - if (in_array($eventClass, $this->mapping, true)) { - throw new EventAlreadyAssignedException( - sprintf( - 'Event "%s" already assigned', - $eventClass, - ), - ); - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/ComparisonFailureBuilder.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/ComparisonFailureBuilder.php deleted file mode 100644 index ece03427..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/ComparisonFailureBuilder.php +++ /dev/null @@ -1,70 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Event\Code; - -use function is_bool; -use function is_scalar; -use function print_r; -use PHPUnit\Framework\ExpectationFailedException; -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ComparisonFailureBuilder -{ - public static function from(Throwable $t): ?ComparisonFailure - { - if (!$t instanceof ExpectationFailedException) { - return null; - } - - if (!$t->getComparisonFailure()) { - return null; - } - - $expectedAsString = $t->getComparisonFailure()->getExpectedAsString(); - - if (empty($expectedAsString)) { - $expectedAsString = self::mapScalarValueToString($t->getComparisonFailure()->getExpected()); - } - - $actualAsString = $t->getComparisonFailure()->getActualAsString(); - - if (empty($actualAsString)) { - $actualAsString = self::mapScalarValueToString($t->getComparisonFailure()->getActual()); - } - - return new ComparisonFailure( - $expectedAsString, - $actualAsString, - $t->getComparisonFailure()->getDiff(), - ); - } - - private static function mapScalarValueToString(mixed $value): string - { - if ($value === null) { - return 'null'; - } - - if (is_bool($value)) { - return $value ? 'true' : 'false'; - } - - if (is_scalar($value)) { - return print_r($value, true); - } - - return ''; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Telemetry/GarbageCollectorStatusProvider.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Telemetry/GarbageCollectorStatusProvider.php deleted file mode 100644 index 09bede2e..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Telemetry/GarbageCollectorStatusProvider.php +++ /dev/null @@ -1,20 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Event\Telemetry; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This interface is not covered by the backward compatibility promise for PHPUnit - */ -interface GarbageCollectorStatusProvider -{ - public function status(): GarbageCollectorStatus; -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Telemetry/HRTime.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Telemetry/HRTime.php deleted file mode 100644 index df2aa656..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Telemetry/HRTime.php +++ /dev/null @@ -1,106 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Event\Telemetry; - -use function sprintf; -use PHPUnit\Event\InvalidArgumentException; - -/** - * @psalm-immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final class HRTime -{ - private readonly int $seconds; - private readonly int $nanoseconds; - - /** - * @throws InvalidArgumentException - */ - public static function fromSecondsAndNanoseconds(int $seconds, int $nanoseconds): self - { - return new self( - $seconds, - $nanoseconds, - ); - } - - /** - * @throws InvalidArgumentException - */ - private function __construct(int $seconds, int $nanoseconds) - { - $this->ensureNotNegative($seconds, 'seconds'); - $this->ensureNotNegative($nanoseconds, 'nanoseconds'); - $this->ensureNanoSecondsInRange($nanoseconds); - - $this->seconds = $seconds; - $this->nanoseconds = $nanoseconds; - } - - public function seconds(): int - { - return $this->seconds; - } - - public function nanoseconds(): int - { - return $this->nanoseconds; - } - - public function duration(self $start): Duration - { - $seconds = $this->seconds - $start->seconds(); - $nanoseconds = $this->nanoseconds - $start->nanoseconds(); - - if ($nanoseconds < 0) { - $seconds--; - - $nanoseconds += 1000000000; - } - - if ($seconds < 0) { - return Duration::fromSecondsAndNanoseconds(0, 0); - } - - return Duration::fromSecondsAndNanoseconds( - $seconds, - $nanoseconds, - ); - } - - /** - * @throws InvalidArgumentException - */ - private function ensureNotNegative(int $value, string $type): void - { - if ($value < 0) { - throw new InvalidArgumentException( - sprintf( - 'Value for %s must not be negative.', - $type, - ), - ); - } - } - - /** - * @throws InvalidArgumentException - */ - private function ensureNanoSecondsInRange(int $nanoseconds): void - { - if ($nanoseconds > 999999999) { - throw new InvalidArgumentException( - 'Value for nanoseconds must not be greater than 999999999.', - ); - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Telemetry/MemoryMeter.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Telemetry/MemoryMeter.php deleted file mode 100644 index 4d116ff3..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Telemetry/MemoryMeter.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Event\Telemetry; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This interface is not covered by the backward compatibility promise for PHPUnit - */ -interface MemoryMeter -{ - public function memoryUsage(): MemoryUsage; - - public function peakMemoryUsage(): MemoryUsage; -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Telemetry/Php81GarbageCollectorStatusProvider.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Telemetry/Php81GarbageCollectorStatusProvider.php deleted file mode 100644 index a96eff39..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Telemetry/Php81GarbageCollectorStatusProvider.php +++ /dev/null @@ -1,42 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Event\Telemetry; - -use function gc_status; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @codeCoverageIgnore - */ -final class Php81GarbageCollectorStatusProvider implements GarbageCollectorStatusProvider -{ - public function status(): GarbageCollectorStatus - { - $status = gc_status(); - - return new GarbageCollectorStatus( - $status['runs'], - $status['collected'], - $status['threshold'], - $status['roots'], - null, - null, - null, - null, - null, - null, - null, - null, - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Telemetry/Php83GarbageCollectorStatusProvider.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Telemetry/Php83GarbageCollectorStatusProvider.php deleted file mode 100644 index ffac76ff..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Telemetry/Php83GarbageCollectorStatusProvider.php +++ /dev/null @@ -1,40 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Event\Telemetry; - -use function gc_status; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Php83GarbageCollectorStatusProvider implements GarbageCollectorStatusProvider -{ - public function status(): GarbageCollectorStatus - { - $status = gc_status(); - - return new GarbageCollectorStatus( - $status['runs'], - $status['collected'], - $status['threshold'], - $status['roots'], - $status['application_time'], - $status['collector_time'], - $status['destructor_time'], - $status['free_time'], - $status['running'], - $status['protected'], - $status['full'], - $status['buffer_size'], - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Telemetry/StopWatch.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Telemetry/StopWatch.php deleted file mode 100644 index 07ce5227..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Telemetry/StopWatch.php +++ /dev/null @@ -1,20 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Event\Telemetry; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This interface is not covered by the backward compatibility promise for PHPUnit - */ -interface StopWatch -{ - public function current(): HRTime; -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Telemetry/System.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Telemetry/System.php deleted file mode 100644 index 368054de..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Telemetry/System.php +++ /dev/null @@ -1,39 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Event\Telemetry; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class System -{ - private readonly StopWatch $stopWatch; - private readonly MemoryMeter $memoryMeter; - private readonly GarbageCollectorStatusProvider $garbageCollectorStatusProvider; - - public function __construct(StopWatch $stopWatch, MemoryMeter $memoryMeter, GarbageCollectorStatusProvider $garbageCollectorStatusProvider) - { - $this->stopWatch = $stopWatch; - $this->memoryMeter = $memoryMeter; - $this->garbageCollectorStatusProvider = $garbageCollectorStatusProvider; - } - - public function snapshot(): Snapshot - { - return new Snapshot( - $this->stopWatch->current(), - $this->memoryMeter->memoryUsage(), - $this->memoryMeter->peakMemoryUsage(), - $this->garbageCollectorStatusProvider->status(), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Telemetry/SystemMemoryMeter.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Telemetry/SystemMemoryMeter.php deleted file mode 100644 index f5256650..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Telemetry/SystemMemoryMeter.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Event\Telemetry; - -use function memory_get_peak_usage; -use function memory_get_usage; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class SystemMemoryMeter implements MemoryMeter -{ - public function memoryUsage(): MemoryUsage - { - return MemoryUsage::fromBytes(memory_get_usage(true)); - } - - public function peakMemoryUsage(): MemoryUsage - { - return MemoryUsage::fromBytes(memory_get_peak_usage(true)); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Telemetry/SystemStopWatch.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Telemetry/SystemStopWatch.php deleted file mode 100644 index 9c9373e5..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Telemetry/SystemStopWatch.php +++ /dev/null @@ -1,29 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Event\Telemetry; - -use function hrtime; -use PHPUnit\Event\InvalidArgumentException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class SystemStopWatch implements StopWatch -{ - /** - * @throws InvalidArgumentException - */ - public function current(): HRTime - { - return HRTime::fromSecondsAndNanoseconds(...hrtime()); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Telemetry/SystemStopWatchWithOffset.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Telemetry/SystemStopWatchWithOffset.php deleted file mode 100644 index d27fd98c..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Telemetry/SystemStopWatchWithOffset.php +++ /dev/null @@ -1,46 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Event\Telemetry; - -use function hrtime; -use PHPUnit\Event\InvalidArgumentException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @codeCoverageIgnore - */ -final class SystemStopWatchWithOffset implements StopWatch -{ - private ?HRTime $offset; - - public function __construct(HRTime $offset) - { - $this->offset = $offset; - } - - /** - * @throws InvalidArgumentException - */ - public function current(): HRTime - { - if ($this->offset !== null) { - $offset = $this->offset; - - $this->offset = null; - - return $offset; - } - - return HRTime::fromSecondsAndNanoseconds(...hrtime()); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Test/TestDoxBuilder.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Test/TestDoxBuilder.php deleted file mode 100644 index e5919797..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Test/TestDoxBuilder.php +++ /dev/null @@ -1,53 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Event\Code; - -use PHPUnit\Event\TestData\MoreThanOneDataSetFromDataProviderException; -use PHPUnit\Framework\TestCase; -use PHPUnit\Logging\TestDox\NamePrettifier; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestDoxBuilder -{ - /** - * @throws MoreThanOneDataSetFromDataProviderException - */ - public static function fromTestCase(TestCase $testCase): TestDox - { - $prettifier = new NamePrettifier; - - return new TestDox( - $prettifier->prettifyTestClassName($testCase::class), - $prettifier->prettifyTestCase($testCase, false), - $prettifier->prettifyTestCase($testCase, true), - ); - } - - /** - * @psalm-param class-string $className - * @psalm-param non-empty-string $methodName - */ - public static function fromClassNameAndMethodName(string $className, string $methodName): TestDox - { - $prettifier = new NamePrettifier; - - $prettifiedMethodName = $prettifier->prettifyTestMethodName($methodName); - - return new TestDox( - $prettifier->prettifyTestClassName($className), - $prettifiedMethodName, - $prettifiedMethodName, - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Test/TestMethodBuilder.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Test/TestMethodBuilder.php deleted file mode 100644 index 25ccf02f..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/Test/TestMethodBuilder.php +++ /dev/null @@ -1,99 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Event\Code; - -use const DEBUG_BACKTRACE_IGNORE_ARGS; -use const DEBUG_BACKTRACE_PROVIDE_OBJECT; -use function assert; -use function debug_backtrace; -use function is_numeric; -use PHPUnit\Event\Facade as EventFacade; -use PHPUnit\Event\TestData\DataFromDataProvider; -use PHPUnit\Event\TestData\DataFromTestDependency; -use PHPUnit\Event\TestData\MoreThanOneDataSetFromDataProviderException; -use PHPUnit\Event\TestData\TestDataCollection; -use PHPUnit\Framework\TestCase; -use PHPUnit\Metadata\Parser\Registry as MetadataRegistry; -use PHPUnit\Util\Exporter; -use PHPUnit\Util\Reflection; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestMethodBuilder -{ - /** - * @throws MoreThanOneDataSetFromDataProviderException - */ - public static function fromTestCase(TestCase $testCase): TestMethod - { - $methodName = $testCase->name(); - - assert(!empty($methodName)); - - $location = Reflection::sourceLocationFor($testCase::class, $methodName); - - return new TestMethod( - $testCase::class, - $methodName, - $location['file'], - $location['line'], - TestDoxBuilder::fromTestCase($testCase), - MetadataRegistry::parser()->forClassAndMethod($testCase::class, $methodName), - self::dataFor($testCase), - ); - } - - /** - * @throws NoTestCaseObjectOnCallStackException - */ - public static function fromCallStack(): TestMethod - { - foreach (debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT | DEBUG_BACKTRACE_IGNORE_ARGS) as $frame) { - if (isset($frame['object']) && $frame['object'] instanceof TestCase) { - return $frame['object']->valueObjectForEvents(); - } - } - - throw new NoTestCaseObjectOnCallStackException; - } - - /** - * @throws MoreThanOneDataSetFromDataProviderException - */ - private static function dataFor(TestCase $testCase): TestDataCollection - { - $testData = []; - - if ($testCase->usesDataProvider()) { - $dataSetName = $testCase->dataName(); - - if (is_numeric($dataSetName)) { - $dataSetName = (int) $dataSetName; - } - - $testData[] = DataFromDataProvider::from( - $dataSetName, - Exporter::export($testCase->providedData(), EventFacade::emitter()->exportsObjects()), - $testCase->dataSetAsStringWithData(), - ); - } - - if ($testCase->hasDependencyInput()) { - $testData[] = DataFromTestDependency::from( - Exporter::export($testCase->dependencyInput(), EventFacade::emitter()->exportsObjects()), - ); - } - - return TestDataCollection::fromArray($testData); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/TestSuite/TestSuiteBuilder.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/TestSuite/TestSuiteBuilder.php deleted file mode 100644 index 96a29375..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/TestSuite/TestSuiteBuilder.php +++ /dev/null @@ -1,112 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Event\TestSuite; - -use function explode; -use PHPUnit\Event\Code\Test; -use PHPUnit\Event\Code\TestCollection; -use PHPUnit\Event\RuntimeException; -use PHPUnit\Framework\DataProviderTestSuite; -use PHPUnit\Framework\TestCase; -use PHPUnit\Framework\TestSuite as FrameworkTestSuite; -use PHPUnit\Runner\PhptTestCase; -use ReflectionClass; -use ReflectionException; -use ReflectionMethod; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestSuiteBuilder -{ - /** - * @throws RuntimeException - */ - public static function from(FrameworkTestSuite $testSuite): TestSuite - { - $tests = []; - - self::process($testSuite, $tests); - - if ($testSuite instanceof DataProviderTestSuite) { - [$className, $methodName] = explode('::', $testSuite->name()); - - try { - $reflector = new ReflectionMethod($className, $methodName); - - return new TestSuiteForTestMethodWithDataProvider( - $testSuite->name(), - $testSuite->count(), - TestCollection::fromArray($tests), - $className, - $methodName, - $reflector->getFileName(), - $reflector->getStartLine(), - ); - // @codeCoverageIgnoreStart - } catch (ReflectionException $e) { - throw new RuntimeException( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - // @codeCoverageIgnoreEnd - } - - if ($testSuite->isForTestClass()) { - try { - $reflector = new ReflectionClass($testSuite->name()); - - return new TestSuiteForTestClass( - $testSuite->name(), - $testSuite->count(), - TestCollection::fromArray($tests), - $reflector->getFileName(), - $reflector->getStartLine(), - ); - // @codeCoverageIgnoreStart - } catch (ReflectionException $e) { - throw new RuntimeException( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - // @codeCoverageIgnoreEnd - } - - return new TestSuiteWithName( - $testSuite->name(), - $testSuite->count(), - TestCollection::fromArray($tests), - ); - } - - /** - * @psalm-param list $tests - */ - private static function process(FrameworkTestSuite $testSuite, array &$tests): void - { - foreach ($testSuite->getIterator() as $test) { - if ($test instanceof FrameworkTestSuite) { - self::process($test, $tests); - - continue; - } - - if ($test instanceof TestCase || $test instanceof PhptTestCase) { - $tests[] = $test->valueObjectForEvents(); - } - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/ThrowableBuilder.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/ThrowableBuilder.php deleted file mode 100644 index 4c12b6ed..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Event/Value/ThrowableBuilder.php +++ /dev/null @@ -1,44 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Event\Code; - -use PHPUnit\Event\NoPreviousThrowableException; -use PHPUnit\Framework\Exception; -use PHPUnit\Util\Filter; -use PHPUnit\Util\ThrowableToStringMapper; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ThrowableBuilder -{ - /** - * @throws Exception - * @throws NoPreviousThrowableException - */ - public static function from(\Throwable $t): Throwable - { - $previous = $t->getPrevious(); - - if ($previous !== null) { - $previous = self::from($previous); - } - - return new Throwable( - $t::class, - $t->getMessage(), - ThrowableToStringMapper::map($t), - Filter::getFilteredStacktrace($t, false), - $previous, - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Assert.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Assert.php deleted file mode 100644 index dd248772..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Assert.php +++ /dev/null @@ -1,2332 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -use function class_exists; -use function count; -use function file_get_contents; -use function interface_exists; -use function is_bool; -use ArrayAccess; -use Countable; -use Generator; -use PHPUnit\Event; -use PHPUnit\Framework\Constraint\ArrayHasKey; -use PHPUnit\Framework\Constraint\Callback; -use PHPUnit\Framework\Constraint\Constraint; -use PHPUnit\Framework\Constraint\Count; -use PHPUnit\Framework\Constraint\DirectoryExists; -use PHPUnit\Framework\Constraint\FileExists; -use PHPUnit\Framework\Constraint\GreaterThan; -use PHPUnit\Framework\Constraint\IsAnything; -use PHPUnit\Framework\Constraint\IsEmpty; -use PHPUnit\Framework\Constraint\IsEqual; -use PHPUnit\Framework\Constraint\IsEqualCanonicalizing; -use PHPUnit\Framework\Constraint\IsEqualIgnoringCase; -use PHPUnit\Framework\Constraint\IsEqualWithDelta; -use PHPUnit\Framework\Constraint\IsFalse; -use PHPUnit\Framework\Constraint\IsFinite; -use PHPUnit\Framework\Constraint\IsIdentical; -use PHPUnit\Framework\Constraint\IsInfinite; -use PHPUnit\Framework\Constraint\IsInstanceOf; -use PHPUnit\Framework\Constraint\IsJson; -use PHPUnit\Framework\Constraint\IsList; -use PHPUnit\Framework\Constraint\IsNan; -use PHPUnit\Framework\Constraint\IsNull; -use PHPUnit\Framework\Constraint\IsReadable; -use PHPUnit\Framework\Constraint\IsTrue; -use PHPUnit\Framework\Constraint\IsType; -use PHPUnit\Framework\Constraint\IsWritable; -use PHPUnit\Framework\Constraint\JsonMatches; -use PHPUnit\Framework\Constraint\LessThan; -use PHPUnit\Framework\Constraint\LogicalAnd; -use PHPUnit\Framework\Constraint\LogicalNot; -use PHPUnit\Framework\Constraint\LogicalOr; -use PHPUnit\Framework\Constraint\LogicalXor; -use PHPUnit\Framework\Constraint\ObjectEquals; -use PHPUnit\Framework\Constraint\ObjectHasProperty; -use PHPUnit\Framework\Constraint\RegularExpression; -use PHPUnit\Framework\Constraint\SameSize; -use PHPUnit\Framework\Constraint\StringContains; -use PHPUnit\Framework\Constraint\StringEndsWith; -use PHPUnit\Framework\Constraint\StringEqualsStringIgnoringLineEndings; -use PHPUnit\Framework\Constraint\StringMatchesFormatDescription; -use PHPUnit\Framework\Constraint\StringStartsWith; -use PHPUnit\Framework\Constraint\TraversableContainsEqual; -use PHPUnit\Framework\Constraint\TraversableContainsIdentical; -use PHPUnit\Framework\Constraint\TraversableContainsOnly; -use PHPUnit\Util\Xml\Loader as XmlLoader; -use PHPUnit\Util\Xml\XmlException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -abstract class Assert -{ - private static int $count = 0; - - /** - * Asserts that an array has a specified key. - * - * @throws Exception - * @throws ExpectationFailedException - */ - final public static function assertArrayHasKey(mixed $key, array|ArrayAccess $array, string $message = ''): void - { - $constraint = new ArrayHasKey($key); - - static::assertThat($array, $constraint, $message); - } - - /** - * Asserts that an array does not have a specified key. - * - * @throws Exception - * @throws ExpectationFailedException - */ - final public static function assertArrayNotHasKey(mixed $key, array|ArrayAccess $array, string $message = ''): void - { - $constraint = new LogicalNot( - new ArrayHasKey($key), - ); - - static::assertThat($array, $constraint, $message); - } - - /** - * @throws ExpectationFailedException - */ - final public static function assertIsList(mixed $array, string $message = ''): void - { - static::assertThat( - $array, - new IsList, - $message, - ); - } - - /** - * Asserts that a haystack contains a needle. - * - * @throws Exception - * @throws ExpectationFailedException - */ - final public static function assertContains(mixed $needle, iterable $haystack, string $message = ''): void - { - $constraint = new TraversableContainsIdentical($needle); - - static::assertThat($haystack, $constraint, $message); - } - - /** - * @throws ExpectationFailedException - */ - final public static function assertContainsEquals(mixed $needle, iterable $haystack, string $message = ''): void - { - $constraint = new TraversableContainsEqual($needle); - - static::assertThat($haystack, $constraint, $message); - } - - /** - * Asserts that a haystack does not contain a needle. - * - * @throws Exception - * @throws ExpectationFailedException - */ - final public static function assertNotContains(mixed $needle, iterable $haystack, string $message = ''): void - { - $constraint = new LogicalNot( - new TraversableContainsIdentical($needle), - ); - - static::assertThat($haystack, $constraint, $message); - } - - /** - * @throws ExpectationFailedException - */ - final public static function assertNotContainsEquals(mixed $needle, iterable $haystack, string $message = ''): void - { - $constraint = new LogicalNot(new TraversableContainsEqual($needle)); - - static::assertThat($haystack, $constraint, $message); - } - - /** - * Asserts that a haystack contains only values of a given type. - * - * @throws Exception - * @throws ExpectationFailedException - */ - final public static function assertContainsOnly(string $type, iterable $haystack, ?bool $isNativeType = null, string $message = ''): void - { - if ($isNativeType === null) { - $isNativeType = self::isNativeType($type); - } - - static::assertThat( - $haystack, - new TraversableContainsOnly( - $type, - $isNativeType, - ), - $message, - ); - } - - /** - * Asserts that a haystack contains only instances of a given class name. - * - * @throws Exception - * @throws ExpectationFailedException - */ - final public static function assertContainsOnlyInstancesOf(string $className, iterable $haystack, string $message = ''): void - { - static::assertThat( - $haystack, - new TraversableContainsOnly( - $className, - false, - ), - $message, - ); - } - - /** - * Asserts that a haystack does not contain only values of a given type. - * - * @throws Exception - * @throws ExpectationFailedException - */ - final public static function assertNotContainsOnly(string $type, iterable $haystack, ?bool $isNativeType = null, string $message = ''): void - { - if ($isNativeType === null) { - $isNativeType = self::isNativeType($type); - } - - static::assertThat( - $haystack, - new LogicalNot( - new TraversableContainsOnly( - $type, - $isNativeType, - ), - ), - $message, - ); - } - - /** - * Asserts the number of elements of an array, Countable or Traversable. - * - * @throws Exception - * @throws ExpectationFailedException - * @throws GeneratorNotSupportedException - */ - final public static function assertCount(int $expectedCount, Countable|iterable $haystack, string $message = ''): void - { - if ($haystack instanceof Generator) { - throw GeneratorNotSupportedException::fromParameterName('$haystack'); - } - - static::assertThat( - $haystack, - new Count($expectedCount), - $message, - ); - } - - /** - * Asserts the number of elements of an array, Countable or Traversable. - * - * @throws Exception - * @throws ExpectationFailedException - * @throws GeneratorNotSupportedException - */ - final public static function assertNotCount(int $expectedCount, Countable|iterable $haystack, string $message = ''): void - { - if ($haystack instanceof Generator) { - throw GeneratorNotSupportedException::fromParameterName('$haystack'); - } - - $constraint = new LogicalNot( - new Count($expectedCount), - ); - - static::assertThat($haystack, $constraint, $message); - } - - /** - * Asserts that two variables are equal. - * - * @throws ExpectationFailedException - */ - final public static function assertEquals(mixed $expected, mixed $actual, string $message = ''): void - { - $constraint = new IsEqual($expected); - - static::assertThat($actual, $constraint, $message); - } - - /** - * Asserts that two variables are equal (canonicalizing). - * - * @throws ExpectationFailedException - */ - final public static function assertEqualsCanonicalizing(mixed $expected, mixed $actual, string $message = ''): void - { - $constraint = new IsEqualCanonicalizing($expected); - - static::assertThat($actual, $constraint, $message); - } - - /** - * Asserts that two variables are equal (ignoring case). - * - * @throws ExpectationFailedException - */ - final public static function assertEqualsIgnoringCase(mixed $expected, mixed $actual, string $message = ''): void - { - $constraint = new IsEqualIgnoringCase($expected); - - static::assertThat($actual, $constraint, $message); - } - - /** - * Asserts that two variables are equal (with delta). - * - * @throws ExpectationFailedException - */ - final public static function assertEqualsWithDelta(mixed $expected, mixed $actual, float $delta, string $message = ''): void - { - $constraint = new IsEqualWithDelta( - $expected, - $delta, - ); - - static::assertThat($actual, $constraint, $message); - } - - /** - * Asserts that two variables are not equal. - * - * @throws ExpectationFailedException - */ - final public static function assertNotEquals(mixed $expected, mixed $actual, string $message = ''): void - { - $constraint = new LogicalNot( - new IsEqual($expected), - ); - - static::assertThat($actual, $constraint, $message); - } - - /** - * Asserts that two variables are not equal (canonicalizing). - * - * @throws ExpectationFailedException - */ - final public static function assertNotEqualsCanonicalizing(mixed $expected, mixed $actual, string $message = ''): void - { - $constraint = new LogicalNot( - new IsEqualCanonicalizing($expected), - ); - - static::assertThat($actual, $constraint, $message); - } - - /** - * Asserts that two variables are not equal (ignoring case). - * - * @throws ExpectationFailedException - */ - final public static function assertNotEqualsIgnoringCase(mixed $expected, mixed $actual, string $message = ''): void - { - $constraint = new LogicalNot( - new IsEqualIgnoringCase($expected), - ); - - static::assertThat($actual, $constraint, $message); - } - - /** - * Asserts that two variables are not equal (with delta). - * - * @throws ExpectationFailedException - */ - final public static function assertNotEqualsWithDelta(mixed $expected, mixed $actual, float $delta, string $message = ''): void - { - $constraint = new LogicalNot( - new IsEqualWithDelta( - $expected, - $delta, - ), - ); - - static::assertThat($actual, $constraint, $message); - } - - /** - * @throws ExpectationFailedException - */ - final public static function assertObjectEquals(object $expected, object $actual, string $method = 'equals', string $message = ''): void - { - static::assertThat( - $actual, - static::objectEquals($expected, $method), - $message, - ); - } - - /** - * Asserts that a variable is empty. - * - * @throws ExpectationFailedException - * @throws GeneratorNotSupportedException - * - * @psalm-assert empty $actual - */ - final public static function assertEmpty(mixed $actual, string $message = ''): void - { - if ($actual instanceof Generator) { - throw GeneratorNotSupportedException::fromParameterName('$actual'); - } - - static::assertThat($actual, static::isEmpty(), $message); - } - - /** - * Asserts that a variable is not empty. - * - * @throws ExpectationFailedException - * @throws GeneratorNotSupportedException - * - * @psalm-assert !empty $actual - */ - final public static function assertNotEmpty(mixed $actual, string $message = ''): void - { - if ($actual instanceof Generator) { - throw GeneratorNotSupportedException::fromParameterName('$actual'); - } - - static::assertThat($actual, static::logicalNot(static::isEmpty()), $message); - } - - /** - * Asserts that a value is greater than another value. - * - * @throws ExpectationFailedException - */ - final public static function assertGreaterThan(mixed $expected, mixed $actual, string $message = ''): void - { - static::assertThat($actual, static::greaterThan($expected), $message); - } - - /** - * Asserts that a value is greater than or equal to another value. - * - * @throws ExpectationFailedException - */ - final public static function assertGreaterThanOrEqual(mixed $expected, mixed $actual, string $message = ''): void - { - static::assertThat( - $actual, - static::greaterThanOrEqual($expected), - $message, - ); - } - - /** - * Asserts that a value is smaller than another value. - * - * @throws ExpectationFailedException - */ - final public static function assertLessThan(mixed $expected, mixed $actual, string $message = ''): void - { - static::assertThat($actual, static::lessThan($expected), $message); - } - - /** - * Asserts that a value is smaller than or equal to another value. - * - * @throws ExpectationFailedException - */ - final public static function assertLessThanOrEqual(mixed $expected, mixed $actual, string $message = ''): void - { - static::assertThat($actual, static::lessThanOrEqual($expected), $message); - } - - /** - * Asserts that the contents of one file is equal to the contents of another - * file. - * - * @throws ExpectationFailedException - */ - final public static function assertFileEquals(string $expected, string $actual, string $message = ''): void - { - static::assertFileExists($expected, $message); - static::assertFileExists($actual, $message); - - $constraint = new IsEqual(file_get_contents($expected)); - - static::assertThat(file_get_contents($actual), $constraint, $message); - } - - /** - * Asserts that the contents of one file is equal to the contents of another - * file (canonicalizing). - * - * @throws ExpectationFailedException - */ - final public static function assertFileEqualsCanonicalizing(string $expected, string $actual, string $message = ''): void - { - static::assertFileExists($expected, $message); - static::assertFileExists($actual, $message); - - $constraint = new IsEqualCanonicalizing( - file_get_contents($expected), - ); - - static::assertThat(file_get_contents($actual), $constraint, $message); - } - - /** - * Asserts that the contents of one file is equal to the contents of another - * file (ignoring case). - * - * @throws ExpectationFailedException - */ - final public static function assertFileEqualsIgnoringCase(string $expected, string $actual, string $message = ''): void - { - static::assertFileExists($expected, $message); - static::assertFileExists($actual, $message); - - $constraint = new IsEqualIgnoringCase(file_get_contents($expected)); - - static::assertThat(file_get_contents($actual), $constraint, $message); - } - - /** - * Asserts that the contents of one file is not equal to the contents of - * another file. - * - * @throws ExpectationFailedException - */ - final public static function assertFileNotEquals(string $expected, string $actual, string $message = ''): void - { - static::assertFileExists($expected, $message); - static::assertFileExists($actual, $message); - - $constraint = new LogicalNot( - new IsEqual(file_get_contents($expected)), - ); - - static::assertThat(file_get_contents($actual), $constraint, $message); - } - - /** - * Asserts that the contents of one file is not equal to the contents of another - * file (canonicalizing). - * - * @throws ExpectationFailedException - */ - final public static function assertFileNotEqualsCanonicalizing(string $expected, string $actual, string $message = ''): void - { - static::assertFileExists($expected, $message); - static::assertFileExists($actual, $message); - - $constraint = new LogicalNot( - new IsEqualCanonicalizing(file_get_contents($expected)), - ); - - static::assertThat(file_get_contents($actual), $constraint, $message); - } - - /** - * Asserts that the contents of one file is not equal to the contents of another - * file (ignoring case). - * - * @throws ExpectationFailedException - */ - final public static function assertFileNotEqualsIgnoringCase(string $expected, string $actual, string $message = ''): void - { - static::assertFileExists($expected, $message); - static::assertFileExists($actual, $message); - - $constraint = new LogicalNot( - new IsEqualIgnoringCase(file_get_contents($expected)), - ); - - static::assertThat(file_get_contents($actual), $constraint, $message); - } - - /** - * Asserts that the contents of a string is equal - * to the contents of a file. - * - * @throws ExpectationFailedException - */ - final public static function assertStringEqualsFile(string $expectedFile, string $actualString, string $message = ''): void - { - static::assertFileExists($expectedFile, $message); - - $constraint = new IsEqual(file_get_contents($expectedFile)); - - static::assertThat($actualString, $constraint, $message); - } - - /** - * Asserts that the contents of a string is equal - * to the contents of a file (canonicalizing). - * - * @throws ExpectationFailedException - */ - final public static function assertStringEqualsFileCanonicalizing(string $expectedFile, string $actualString, string $message = ''): void - { - static::assertFileExists($expectedFile, $message); - - $constraint = new IsEqualCanonicalizing(file_get_contents($expectedFile)); - - static::assertThat($actualString, $constraint, $message); - } - - /** - * Asserts that the contents of a string is equal - * to the contents of a file (ignoring case). - * - * @throws ExpectationFailedException - */ - final public static function assertStringEqualsFileIgnoringCase(string $expectedFile, string $actualString, string $message = ''): void - { - static::assertFileExists($expectedFile, $message); - - $constraint = new IsEqualIgnoringCase(file_get_contents($expectedFile)); - - static::assertThat($actualString, $constraint, $message); - } - - /** - * Asserts that the contents of a string is not equal - * to the contents of a file. - * - * @throws ExpectationFailedException - */ - final public static function assertStringNotEqualsFile(string $expectedFile, string $actualString, string $message = ''): void - { - static::assertFileExists($expectedFile, $message); - - $constraint = new LogicalNot( - new IsEqual(file_get_contents($expectedFile)), - ); - - static::assertThat($actualString, $constraint, $message); - } - - /** - * Asserts that the contents of a string is not equal - * to the contents of a file (canonicalizing). - * - * @throws ExpectationFailedException - */ - final public static function assertStringNotEqualsFileCanonicalizing(string $expectedFile, string $actualString, string $message = ''): void - { - static::assertFileExists($expectedFile, $message); - - $constraint = new LogicalNot( - new IsEqualCanonicalizing(file_get_contents($expectedFile)), - ); - - static::assertThat($actualString, $constraint, $message); - } - - /** - * Asserts that the contents of a string is not equal - * to the contents of a file (ignoring case). - * - * @throws ExpectationFailedException - */ - final public static function assertStringNotEqualsFileIgnoringCase(string $expectedFile, string $actualString, string $message = ''): void - { - static::assertFileExists($expectedFile, $message); - - $constraint = new LogicalNot( - new IsEqualIgnoringCase(file_get_contents($expectedFile)), - ); - - static::assertThat($actualString, $constraint, $message); - } - - /** - * Asserts that a file/dir is readable. - * - * @throws ExpectationFailedException - */ - final public static function assertIsReadable(string $filename, string $message = ''): void - { - static::assertThat($filename, new IsReadable, $message); - } - - /** - * Asserts that a file/dir exists and is not readable. - * - * @throws ExpectationFailedException - */ - final public static function assertIsNotReadable(string $filename, string $message = ''): void - { - static::assertThat($filename, new LogicalNot(new IsReadable), $message); - } - - /** - * Asserts that a file/dir exists and is writable. - * - * @throws ExpectationFailedException - */ - final public static function assertIsWritable(string $filename, string $message = ''): void - { - static::assertThat($filename, new IsWritable, $message); - } - - /** - * Asserts that a file/dir exists and is not writable. - * - * @throws ExpectationFailedException - */ - final public static function assertIsNotWritable(string $filename, string $message = ''): void - { - static::assertThat($filename, new LogicalNot(new IsWritable), $message); - } - - /** - * Asserts that a directory exists. - * - * @throws ExpectationFailedException - */ - final public static function assertDirectoryExists(string $directory, string $message = ''): void - { - static::assertThat($directory, new DirectoryExists, $message); - } - - /** - * Asserts that a directory does not exist. - * - * @throws ExpectationFailedException - */ - final public static function assertDirectoryDoesNotExist(string $directory, string $message = ''): void - { - static::assertThat($directory, new LogicalNot(new DirectoryExists), $message); - } - - /** - * Asserts that a directory exists and is readable. - * - * @throws ExpectationFailedException - */ - final public static function assertDirectoryIsReadable(string $directory, string $message = ''): void - { - self::assertDirectoryExists($directory, $message); - self::assertIsReadable($directory, $message); - } - - /** - * Asserts that a directory exists and is not readable. - * - * @throws ExpectationFailedException - */ - final public static function assertDirectoryIsNotReadable(string $directory, string $message = ''): void - { - self::assertDirectoryExists($directory, $message); - self::assertIsNotReadable($directory, $message); - } - - /** - * Asserts that a directory exists and is writable. - * - * @throws ExpectationFailedException - */ - final public static function assertDirectoryIsWritable(string $directory, string $message = ''): void - { - self::assertDirectoryExists($directory, $message); - self::assertIsWritable($directory, $message); - } - - /** - * Asserts that a directory exists and is not writable. - * - * @throws ExpectationFailedException - */ - final public static function assertDirectoryIsNotWritable(string $directory, string $message = ''): void - { - self::assertDirectoryExists($directory, $message); - self::assertIsNotWritable($directory, $message); - } - - /** - * Asserts that a file exists. - * - * @throws ExpectationFailedException - */ - final public static function assertFileExists(string $filename, string $message = ''): void - { - static::assertThat($filename, new FileExists, $message); - } - - /** - * Asserts that a file does not exist. - * - * @throws ExpectationFailedException - */ - final public static function assertFileDoesNotExist(string $filename, string $message = ''): void - { - static::assertThat($filename, new LogicalNot(new FileExists), $message); - } - - /** - * Asserts that a file exists and is readable. - * - * @throws ExpectationFailedException - */ - final public static function assertFileIsReadable(string $file, string $message = ''): void - { - self::assertFileExists($file, $message); - self::assertIsReadable($file, $message); - } - - /** - * Asserts that a file exists and is not readable. - * - * @throws ExpectationFailedException - */ - final public static function assertFileIsNotReadable(string $file, string $message = ''): void - { - self::assertFileExists($file, $message); - self::assertIsNotReadable($file, $message); - } - - /** - * Asserts that a file exists and is writable. - * - * @throws ExpectationFailedException - */ - final public static function assertFileIsWritable(string $file, string $message = ''): void - { - self::assertFileExists($file, $message); - self::assertIsWritable($file, $message); - } - - /** - * Asserts that a file exists and is not writable. - * - * @throws ExpectationFailedException - */ - final public static function assertFileIsNotWritable(string $file, string $message = ''): void - { - self::assertFileExists($file, $message); - self::assertIsNotWritable($file, $message); - } - - /** - * Asserts that a condition is true. - * - * @throws ExpectationFailedException - * - * @psalm-assert true $condition - */ - final public static function assertTrue(mixed $condition, string $message = ''): void - { - static::assertThat($condition, static::isTrue(), $message); - } - - /** - * Asserts that a condition is not true. - * - * @throws ExpectationFailedException - * - * @psalm-assert !true $condition - */ - final public static function assertNotTrue(mixed $condition, string $message = ''): void - { - static::assertThat($condition, static::logicalNot(static::isTrue()), $message); - } - - /** - * Asserts that a condition is false. - * - * @throws ExpectationFailedException - * - * @psalm-assert false $condition - */ - final public static function assertFalse(mixed $condition, string $message = ''): void - { - static::assertThat($condition, static::isFalse(), $message); - } - - /** - * Asserts that a condition is not false. - * - * @throws ExpectationFailedException - * - * @psalm-assert !false $condition - */ - final public static function assertNotFalse(mixed $condition, string $message = ''): void - { - static::assertThat($condition, static::logicalNot(static::isFalse()), $message); - } - - /** - * Asserts that a variable is null. - * - * @throws ExpectationFailedException - * - * @psalm-assert null $actual - */ - final public static function assertNull(mixed $actual, string $message = ''): void - { - static::assertThat($actual, static::isNull(), $message); - } - - /** - * Asserts that a variable is not null. - * - * @throws ExpectationFailedException - * - * @psalm-assert !null $actual - */ - final public static function assertNotNull(mixed $actual, string $message = ''): void - { - static::assertThat($actual, static::logicalNot(static::isNull()), $message); - } - - /** - * Asserts that a variable is finite. - * - * @throws ExpectationFailedException - */ - final public static function assertFinite(mixed $actual, string $message = ''): void - { - static::assertThat($actual, static::isFinite(), $message); - } - - /** - * Asserts that a variable is infinite. - * - * @throws ExpectationFailedException - */ - final public static function assertInfinite(mixed $actual, string $message = ''): void - { - static::assertThat($actual, static::isInfinite(), $message); - } - - /** - * Asserts that a variable is nan. - * - * @throws ExpectationFailedException - */ - final public static function assertNan(mixed $actual, string $message = ''): void - { - static::assertThat($actual, static::isNan(), $message); - } - - /** - * Asserts that an object has a specified property. - * - * @throws ExpectationFailedException - */ - final public static function assertObjectHasProperty(string $propertyName, object $object, string $message = ''): void - { - static::assertThat( - $object, - new ObjectHasProperty($propertyName), - $message, - ); - } - - /** - * Asserts that an object does not have a specified property. - * - * @throws ExpectationFailedException - */ - final public static function assertObjectNotHasProperty(string $propertyName, object $object, string $message = ''): void - { - static::assertThat( - $object, - new LogicalNot( - new ObjectHasProperty($propertyName), - ), - $message, - ); - } - - /** - * Asserts that two variables have the same type and value. - * Used on objects, it asserts that two variables reference - * the same object. - * - * @throws ExpectationFailedException - * - * @psalm-template ExpectedType - * - * @psalm-param ExpectedType $expected - * - * @psalm-assert =ExpectedType $actual - */ - final public static function assertSame(mixed $expected, mixed $actual, string $message = ''): void - { - static::assertThat( - $actual, - new IsIdentical($expected), - $message, - ); - } - - /** - * Asserts that two variables do not have the same type and value. - * Used on objects, it asserts that two variables do not reference - * the same object. - * - * @throws ExpectationFailedException - */ - final public static function assertNotSame(mixed $expected, mixed $actual, string $message = ''): void - { - if (is_bool($expected) && is_bool($actual)) { - static::assertNotEquals($expected, $actual, $message); - } - - static::assertThat( - $actual, - new LogicalNot( - new IsIdentical($expected), - ), - $message, - ); - } - - /** - * Asserts that a variable is of a given type. - * - * @throws Exception - * @throws ExpectationFailedException - * @throws UnknownClassOrInterfaceException - * - * @psalm-template ExpectedType of object - * - * @psalm-param class-string $expected - * - * @psalm-assert =ExpectedType $actual - */ - final public static function assertInstanceOf(string $expected, mixed $actual, string $message = ''): void - { - if (!class_exists($expected) && !interface_exists($expected)) { - throw new UnknownClassOrInterfaceException($expected); - } - - static::assertThat( - $actual, - new IsInstanceOf($expected), - $message, - ); - } - - /** - * Asserts that a variable is not of a given type. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-template ExpectedType of object - * - * @psalm-param class-string $expected - * - * @psalm-assert !ExpectedType $actual - */ - final public static function assertNotInstanceOf(string $expected, mixed $actual, string $message = ''): void - { - if (!class_exists($expected) && !interface_exists($expected)) { - throw new UnknownClassOrInterfaceException($expected); - } - - static::assertThat( - $actual, - new LogicalNot( - new IsInstanceOf($expected), - ), - $message, - ); - } - - /** - * Asserts that a variable is of type array. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert array $actual - */ - final public static function assertIsArray(mixed $actual, string $message = ''): void - { - static::assertThat( - $actual, - new IsType(IsType::TYPE_ARRAY), - $message, - ); - } - - /** - * Asserts that a variable is of type bool. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert bool $actual - */ - final public static function assertIsBool(mixed $actual, string $message = ''): void - { - static::assertThat( - $actual, - new IsType(IsType::TYPE_BOOL), - $message, - ); - } - - /** - * Asserts that a variable is of type float. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert float $actual - */ - final public static function assertIsFloat(mixed $actual, string $message = ''): void - { - static::assertThat( - $actual, - new IsType(IsType::TYPE_FLOAT), - $message, - ); - } - - /** - * Asserts that a variable is of type int. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert int $actual - */ - final public static function assertIsInt(mixed $actual, string $message = ''): void - { - static::assertThat( - $actual, - new IsType(IsType::TYPE_INT), - $message, - ); - } - - /** - * Asserts that a variable is of type numeric. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert numeric $actual - */ - final public static function assertIsNumeric(mixed $actual, string $message = ''): void - { - static::assertThat( - $actual, - new IsType(IsType::TYPE_NUMERIC), - $message, - ); - } - - /** - * Asserts that a variable is of type object. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert object $actual - */ - final public static function assertIsObject(mixed $actual, string $message = ''): void - { - static::assertThat( - $actual, - new IsType(IsType::TYPE_OBJECT), - $message, - ); - } - - /** - * Asserts that a variable is of type resource. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert resource $actual - */ - final public static function assertIsResource(mixed $actual, string $message = ''): void - { - static::assertThat( - $actual, - new IsType(IsType::TYPE_RESOURCE), - $message, - ); - } - - /** - * Asserts that a variable is of type resource and is closed. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert resource $actual - */ - final public static function assertIsClosedResource(mixed $actual, string $message = ''): void - { - static::assertThat( - $actual, - new IsType(IsType::TYPE_CLOSED_RESOURCE), - $message, - ); - } - - /** - * Asserts that a variable is of type string. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert string $actual - */ - final public static function assertIsString(mixed $actual, string $message = ''): void - { - static::assertThat( - $actual, - new IsType(IsType::TYPE_STRING), - $message, - ); - } - - /** - * Asserts that a variable is of type scalar. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert scalar $actual - */ - final public static function assertIsScalar(mixed $actual, string $message = ''): void - { - static::assertThat( - $actual, - new IsType(IsType::TYPE_SCALAR), - $message, - ); - } - - /** - * Asserts that a variable is of type callable. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert callable $actual - */ - final public static function assertIsCallable(mixed $actual, string $message = ''): void - { - static::assertThat( - $actual, - new IsType(IsType::TYPE_CALLABLE), - $message, - ); - } - - /** - * Asserts that a variable is of type iterable. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert iterable $actual - */ - final public static function assertIsIterable(mixed $actual, string $message = ''): void - { - static::assertThat( - $actual, - new IsType(IsType::TYPE_ITERABLE), - $message, - ); - } - - /** - * Asserts that a variable is not of type array. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert !array $actual - */ - final public static function assertIsNotArray(mixed $actual, string $message = ''): void - { - static::assertThat( - $actual, - new LogicalNot(new IsType(IsType::TYPE_ARRAY)), - $message, - ); - } - - /** - * Asserts that a variable is not of type bool. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert !bool $actual - */ - final public static function assertIsNotBool(mixed $actual, string $message = ''): void - { - static::assertThat( - $actual, - new LogicalNot(new IsType(IsType::TYPE_BOOL)), - $message, - ); - } - - /** - * Asserts that a variable is not of type float. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert !float $actual - */ - final public static function assertIsNotFloat(mixed $actual, string $message = ''): void - { - static::assertThat( - $actual, - new LogicalNot(new IsType(IsType::TYPE_FLOAT)), - $message, - ); - } - - /** - * Asserts that a variable is not of type int. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert !int $actual - */ - final public static function assertIsNotInt(mixed $actual, string $message = ''): void - { - static::assertThat( - $actual, - new LogicalNot(new IsType(IsType::TYPE_INT)), - $message, - ); - } - - /** - * Asserts that a variable is not of type numeric. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert !numeric $actual - */ - final public static function assertIsNotNumeric(mixed $actual, string $message = ''): void - { - static::assertThat( - $actual, - new LogicalNot(new IsType(IsType::TYPE_NUMERIC)), - $message, - ); - } - - /** - * Asserts that a variable is not of type object. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert !object $actual - */ - final public static function assertIsNotObject(mixed $actual, string $message = ''): void - { - static::assertThat( - $actual, - new LogicalNot(new IsType(IsType::TYPE_OBJECT)), - $message, - ); - } - - /** - * Asserts that a variable is not of type resource. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert !resource $actual - */ - final public static function assertIsNotResource(mixed $actual, string $message = ''): void - { - static::assertThat( - $actual, - new LogicalNot(new IsType(IsType::TYPE_RESOURCE)), - $message, - ); - } - - /** - * Asserts that a variable is not of type resource. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert !resource $actual - */ - final public static function assertIsNotClosedResource(mixed $actual, string $message = ''): void - { - static::assertThat( - $actual, - new LogicalNot(new IsType(IsType::TYPE_CLOSED_RESOURCE)), - $message, - ); - } - - /** - * Asserts that a variable is not of type string. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert !string $actual - */ - final public static function assertIsNotString(mixed $actual, string $message = ''): void - { - static::assertThat( - $actual, - new LogicalNot(new IsType(IsType::TYPE_STRING)), - $message, - ); - } - - /** - * Asserts that a variable is not of type scalar. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert !scalar $actual - */ - final public static function assertIsNotScalar(mixed $actual, string $message = ''): void - { - static::assertThat( - $actual, - new LogicalNot(new IsType(IsType::TYPE_SCALAR)), - $message, - ); - } - - /** - * Asserts that a variable is not of type callable. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert !callable $actual - */ - final public static function assertIsNotCallable(mixed $actual, string $message = ''): void - { - static::assertThat( - $actual, - new LogicalNot(new IsType(IsType::TYPE_CALLABLE)), - $message, - ); - } - - /** - * Asserts that a variable is not of type iterable. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert !iterable $actual - */ - final public static function assertIsNotIterable(mixed $actual, string $message = ''): void - { - static::assertThat( - $actual, - new LogicalNot(new IsType(IsType::TYPE_ITERABLE)), - $message, - ); - } - - /** - * Asserts that a string matches a given regular expression. - * - * @throws ExpectationFailedException - */ - final public static function assertMatchesRegularExpression(string $pattern, string $string, string $message = ''): void - { - static::assertThat($string, new RegularExpression($pattern), $message); - } - - /** - * Asserts that a string does not match a given regular expression. - * - * @throws ExpectationFailedException - */ - final public static function assertDoesNotMatchRegularExpression(string $pattern, string $string, string $message = ''): void - { - static::assertThat( - $string, - new LogicalNot( - new RegularExpression($pattern), - ), - $message, - ); - } - - /** - * Assert that the size of two arrays (or `Countable` or `Traversable` objects) - * is the same. - * - * @throws Exception - * @throws ExpectationFailedException - * @throws GeneratorNotSupportedException - */ - final public static function assertSameSize(Countable|iterable $expected, Countable|iterable $actual, string $message = ''): void - { - if ($expected instanceof Generator) { - throw GeneratorNotSupportedException::fromParameterName('$expected'); - } - - if ($actual instanceof Generator) { - throw GeneratorNotSupportedException::fromParameterName('$actual'); - } - - static::assertThat( - $actual, - new SameSize($expected), - $message, - ); - } - - /** - * Assert that the size of two arrays (or `Countable` or `Traversable` objects) - * is not the same. - * - * @throws Exception - * @throws ExpectationFailedException - * @throws GeneratorNotSupportedException - */ - final public static function assertNotSameSize(Countable|iterable $expected, Countable|iterable $actual, string $message = ''): void - { - if ($expected instanceof Generator) { - throw GeneratorNotSupportedException::fromParameterName('$expected'); - } - - if ($actual instanceof Generator) { - throw GeneratorNotSupportedException::fromParameterName('$actual'); - } - - static::assertThat( - $actual, - new LogicalNot( - new SameSize($expected), - ), - $message, - ); - } - - /** - * @throws ExpectationFailedException - */ - final public static function assertStringContainsStringIgnoringLineEndings(string $needle, string $haystack, string $message = ''): void - { - static::assertThat($haystack, new StringContains($needle, false, true), $message); - } - - /** - * Asserts that two strings are equal except for line endings. - * - * @throws ExpectationFailedException - */ - final public static function assertStringEqualsStringIgnoringLineEndings(string $expected, string $actual, string $message = ''): void - { - static::assertThat($actual, new StringEqualsStringIgnoringLineEndings($expected), $message); - } - - /** - * Asserts that a string matches a given format string. - * - * @throws ExpectationFailedException - */ - final public static function assertFileMatchesFormat(string $format, string $actualFile, string $message = ''): void - { - static::assertFileExists($actualFile, $message); - - static::assertThat( - file_get_contents($actualFile), - new StringMatchesFormatDescription($format), - $message, - ); - } - - /** - * Asserts that a string matches a given format string. - * - * @throws ExpectationFailedException - */ - final public static function assertFileMatchesFormatFile(string $formatFile, string $actualFile, string $message = ''): void - { - static::assertFileExists($formatFile, $message); - static::assertFileExists($actualFile, $message); - - static::assertThat( - file_get_contents($actualFile), - new StringMatchesFormatDescription(file_get_contents($formatFile)), - $message, - ); - } - - /** - * Asserts that a string matches a given format string. - * - * @throws ExpectationFailedException - */ - final public static function assertStringMatchesFormat(string $format, string $string, string $message = ''): void - { - static::assertThat($string, new StringMatchesFormatDescription($format), $message); - } - - /** - * Asserts that a string does not match a given format string. - * - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5472 - */ - final public static function assertStringNotMatchesFormat(string $format, string $string, string $message = ''): void - { - static::assertThat( - $string, - new LogicalNot( - new StringMatchesFormatDescription($format), - ), - $message, - ); - } - - /** - * Asserts that a string matches a given format file. - * - * @throws ExpectationFailedException - */ - final public static function assertStringMatchesFormatFile(string $formatFile, string $string, string $message = ''): void - { - static::assertFileExists($formatFile, $message); - - static::assertThat( - $string, - new StringMatchesFormatDescription( - file_get_contents($formatFile), - ), - $message, - ); - } - - /** - * Asserts that a string does not match a given format string. - * - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5472 - */ - final public static function assertStringNotMatchesFormatFile(string $formatFile, string $string, string $message = ''): void - { - static::assertFileExists($formatFile, $message); - - static::assertThat( - $string, - new LogicalNot( - new StringMatchesFormatDescription( - file_get_contents($formatFile), - ), - ), - $message, - ); - } - - /** - * Asserts that a string starts with a given prefix. - * - * @psalm-param non-empty-string $prefix - * - * @throws ExpectationFailedException - * @throws InvalidArgumentException - */ - final public static function assertStringStartsWith(string $prefix, string $string, string $message = ''): void - { - static::assertThat($string, new StringStartsWith($prefix), $message); - } - - /** - * Asserts that a string starts not with a given prefix. - * - * @psalm-param non-empty-string $prefix - * - * @throws ExpectationFailedException - * @throws InvalidArgumentException - */ - final public static function assertStringStartsNotWith(string $prefix, string $string, string $message = ''): void - { - static::assertThat( - $string, - new LogicalNot( - new StringStartsWith($prefix), - ), - $message, - ); - } - - /** - * @throws ExpectationFailedException - */ - final public static function assertStringContainsString(string $needle, string $haystack, string $message = ''): void - { - $constraint = new StringContains($needle); - - static::assertThat($haystack, $constraint, $message); - } - - /** - * @throws ExpectationFailedException - */ - final public static function assertStringContainsStringIgnoringCase(string $needle, string $haystack, string $message = ''): void - { - $constraint = new StringContains($needle, true); - - static::assertThat($haystack, $constraint, $message); - } - - /** - * @throws ExpectationFailedException - */ - final public static function assertStringNotContainsString(string $needle, string $haystack, string $message = ''): void - { - $constraint = new LogicalNot(new StringContains($needle)); - - static::assertThat($haystack, $constraint, $message); - } - - /** - * @throws ExpectationFailedException - */ - final public static function assertStringNotContainsStringIgnoringCase(string $needle, string $haystack, string $message = ''): void - { - $constraint = new LogicalNot(new StringContains($needle, true)); - - static::assertThat($haystack, $constraint, $message); - } - - /** - * Asserts that a string ends with a given suffix. - * - * @psalm-param non-empty-string $suffix - * - * @throws ExpectationFailedException - * @throws InvalidArgumentException - */ - final public static function assertStringEndsWith(string $suffix, string $string, string $message = ''): void - { - static::assertThat($string, new StringEndsWith($suffix), $message); - } - - /** - * Asserts that a string ends not with a given suffix. - * - * @psalm-param non-empty-string $suffix - * - * @throws ExpectationFailedException - * @throws InvalidArgumentException - */ - final public static function assertStringEndsNotWith(string $suffix, string $string, string $message = ''): void - { - static::assertThat( - $string, - new LogicalNot( - new StringEndsWith($suffix), - ), - $message, - ); - } - - /** - * Asserts that two XML files are equal. - * - * @throws Exception - * @throws ExpectationFailedException - * @throws XmlException - */ - final public static function assertXmlFileEqualsXmlFile(string $expectedFile, string $actualFile, string $message = ''): void - { - $expected = (new XmlLoader)->loadFile($expectedFile); - $actual = (new XmlLoader)->loadFile($actualFile); - - static::assertEquals($expected, $actual, $message); - } - - /** - * Asserts that two XML files are not equal. - * - * @throws \PHPUnit\Util\Exception - * @throws ExpectationFailedException - */ - final public static function assertXmlFileNotEqualsXmlFile(string $expectedFile, string $actualFile, string $message = ''): void - { - $expected = (new XmlLoader)->loadFile($expectedFile); - $actual = (new XmlLoader)->loadFile($actualFile); - - static::assertNotEquals($expected, $actual, $message); - } - - /** - * Asserts that two XML documents are equal. - * - * @throws ExpectationFailedException - * @throws XmlException - */ - final public static function assertXmlStringEqualsXmlFile(string $expectedFile, string $actualXml, string $message = ''): void - { - $expected = (new XmlLoader)->loadFile($expectedFile); - $actual = (new XmlLoader)->load($actualXml); - - static::assertEquals($expected, $actual, $message); - } - - /** - * Asserts that two XML documents are not equal. - * - * @throws ExpectationFailedException - * @throws XmlException - */ - final public static function assertXmlStringNotEqualsXmlFile(string $expectedFile, string $actualXml, string $message = ''): void - { - $expected = (new XmlLoader)->loadFile($expectedFile); - $actual = (new XmlLoader)->load($actualXml); - - static::assertNotEquals($expected, $actual, $message); - } - - /** - * Asserts that two XML documents are equal. - * - * @throws ExpectationFailedException - * @throws XmlException - */ - final public static function assertXmlStringEqualsXmlString(string $expectedXml, string $actualXml, string $message = ''): void - { - $expected = (new XmlLoader)->load($expectedXml); - $actual = (new XmlLoader)->load($actualXml); - - static::assertEquals($expected, $actual, $message); - } - - /** - * Asserts that two XML documents are not equal. - * - * @throws ExpectationFailedException - * @throws XmlException - */ - final public static function assertXmlStringNotEqualsXmlString(string $expectedXml, string $actualXml, string $message = ''): void - { - $expected = (new XmlLoader)->load($expectedXml); - $actual = (new XmlLoader)->load($actualXml); - - static::assertNotEquals($expected, $actual, $message); - } - - /** - * Evaluates a PHPUnit\Framework\Constraint matcher object. - * - * @throws ExpectationFailedException - */ - final public static function assertThat(mixed $value, Constraint $constraint, string $message = ''): void - { - self::$count += count($constraint); - - $hasFailed = true; - - try { - $constraint->evaluate($value, $message); - - $hasFailed = false; - } finally { - if ($hasFailed) { - Event\Facade::emitter()->testAssertionFailed( - $value, - $constraint, - $message, - ); - } else { - Event\Facade::emitter()->testAssertionSucceeded( - $value, - $constraint, - $message, - ); - } - } - } - - /** - * Asserts that a string is a valid JSON string. - * - * @throws ExpectationFailedException - */ - final public static function assertJson(string $actual, string $message = ''): void - { - static::assertThat($actual, static::isJson(), $message); - } - - /** - * Asserts that two given JSON encoded objects or arrays are equal. - * - * @throws ExpectationFailedException - */ - final public static function assertJsonStringEqualsJsonString(string $expectedJson, string $actualJson, string $message = ''): void - { - static::assertJson($expectedJson, $message); - static::assertJson($actualJson, $message); - - static::assertThat($actualJson, new JsonMatches($expectedJson), $message); - } - - /** - * Asserts that two given JSON encoded objects or arrays are not equal. - * - * @throws ExpectationFailedException - */ - final public static function assertJsonStringNotEqualsJsonString(string $expectedJson, string $actualJson, string $message = ''): void - { - static::assertJson($expectedJson, $message); - static::assertJson($actualJson, $message); - - static::assertThat( - $actualJson, - new LogicalNot( - new JsonMatches($expectedJson), - ), - $message, - ); - } - - /** - * Asserts that the generated JSON encoded object and the content of the given file are equal. - * - * @throws ExpectationFailedException - */ - final public static function assertJsonStringEqualsJsonFile(string $expectedFile, string $actualJson, string $message = ''): void - { - static::assertFileExists($expectedFile, $message); - $expectedJson = file_get_contents($expectedFile); - - static::assertJson($expectedJson, $message); - static::assertJson($actualJson, $message); - - static::assertThat($actualJson, new JsonMatches($expectedJson), $message); - } - - /** - * Asserts that the generated JSON encoded object and the content of the given file are not equal. - * - * @throws ExpectationFailedException - */ - final public static function assertJsonStringNotEqualsJsonFile(string $expectedFile, string $actualJson, string $message = ''): void - { - static::assertFileExists($expectedFile, $message); - $expectedJson = file_get_contents($expectedFile); - - static::assertJson($expectedJson, $message); - static::assertJson($actualJson, $message); - - static::assertThat( - $actualJson, - new LogicalNot( - new JsonMatches($expectedJson), - ), - $message, - ); - } - - /** - * Asserts that two JSON files are equal. - * - * @throws ExpectationFailedException - */ - final public static function assertJsonFileEqualsJsonFile(string $expectedFile, string $actualFile, string $message = ''): void - { - static::assertFileExists($expectedFile, $message); - static::assertFileExists($actualFile, $message); - - $actualJson = file_get_contents($actualFile); - $expectedJson = file_get_contents($expectedFile); - - static::assertJson($expectedJson, $message); - static::assertJson($actualJson, $message); - - $constraintExpected = new JsonMatches( - $expectedJson, - ); - - $constraintActual = new JsonMatches($actualJson); - - static::assertThat($expectedJson, $constraintActual, $message); - static::assertThat($actualJson, $constraintExpected, $message); - } - - /** - * Asserts that two JSON files are not equal. - * - * @throws ExpectationFailedException - */ - final public static function assertJsonFileNotEqualsJsonFile(string $expectedFile, string $actualFile, string $message = ''): void - { - static::assertFileExists($expectedFile, $message); - static::assertFileExists($actualFile, $message); - - $actualJson = file_get_contents($actualFile); - $expectedJson = file_get_contents($expectedFile); - - static::assertJson($expectedJson, $message); - static::assertJson($actualJson, $message); - - $constraintExpected = new JsonMatches( - $expectedJson, - ); - - $constraintActual = new JsonMatches($actualJson); - - static::assertThat($expectedJson, new LogicalNot($constraintActual), $message); - static::assertThat($actualJson, new LogicalNot($constraintExpected), $message); - } - - /** - * @throws Exception - */ - final public static function logicalAnd(mixed ...$constraints): LogicalAnd - { - return LogicalAnd::fromConstraints(...$constraints); - } - - final public static function logicalOr(mixed ...$constraints): LogicalOr - { - return LogicalOr::fromConstraints(...$constraints); - } - - final public static function logicalNot(Constraint $constraint): LogicalNot - { - return new LogicalNot($constraint); - } - - final public static function logicalXor(mixed ...$constraints): LogicalXor - { - return LogicalXor::fromConstraints(...$constraints); - } - - final public static function anything(): IsAnything - { - return new IsAnything; - } - - final public static function isTrue(): IsTrue - { - return new IsTrue; - } - - /** - * @psalm-template CallbackInput of mixed - * - * @psalm-param callable(CallbackInput $callback): bool $callback - * - * @psalm-return Callback - */ - final public static function callback(callable $callback): Callback - { - return new Callback($callback); - } - - final public static function isFalse(): IsFalse - { - return new IsFalse; - } - - final public static function isJson(): IsJson - { - return new IsJson; - } - - final public static function isNull(): IsNull - { - return new IsNull; - } - - final public static function isFinite(): IsFinite - { - return new IsFinite; - } - - final public static function isInfinite(): IsInfinite - { - return new IsInfinite; - } - - final public static function isNan(): IsNan - { - return new IsNan; - } - - final public static function containsEqual(mixed $value): TraversableContainsEqual - { - return new TraversableContainsEqual($value); - } - - final public static function containsIdentical(mixed $value): TraversableContainsIdentical - { - return new TraversableContainsIdentical($value); - } - - /** - * @throws Exception - */ - final public static function containsOnly(string $type): TraversableContainsOnly - { - return new TraversableContainsOnly($type); - } - - /** - * @throws Exception - */ - final public static function containsOnlyInstancesOf(string $className): TraversableContainsOnly - { - return new TraversableContainsOnly($className, false); - } - - final public static function arrayHasKey(mixed $key): ArrayHasKey - { - return new ArrayHasKey($key); - } - - final public static function isList(): IsList - { - return new IsList; - } - - final public static function equalTo(mixed $value): IsEqual - { - return new IsEqual($value, 0.0, false, false); - } - - final public static function equalToCanonicalizing(mixed $value): IsEqualCanonicalizing - { - return new IsEqualCanonicalizing($value); - } - - final public static function equalToIgnoringCase(mixed $value): IsEqualIgnoringCase - { - return new IsEqualIgnoringCase($value); - } - - final public static function equalToWithDelta(mixed $value, float $delta): IsEqualWithDelta - { - return new IsEqualWithDelta($value, $delta); - } - - final public static function isEmpty(): IsEmpty - { - return new IsEmpty; - } - - final public static function isWritable(): IsWritable - { - return new IsWritable; - } - - final public static function isReadable(): IsReadable - { - return new IsReadable; - } - - final public static function directoryExists(): DirectoryExists - { - return new DirectoryExists; - } - - final public static function fileExists(): FileExists - { - return new FileExists; - } - - final public static function greaterThan(mixed $value): GreaterThan - { - return new GreaterThan($value); - } - - final public static function greaterThanOrEqual(mixed $value): LogicalOr - { - return static::logicalOr( - new IsEqual($value), - new GreaterThan($value), - ); - } - - final public static function identicalTo(mixed $value): IsIdentical - { - return new IsIdentical($value); - } - - /** - * @throws UnknownClassOrInterfaceException - */ - final public static function isInstanceOf(string $className): IsInstanceOf - { - return new IsInstanceOf($className); - } - - /** - * @psalm-param 'array'|'boolean'|'bool'|'double'|'float'|'integer'|'int'|'null'|'numeric'|'object'|'real'|'resource'|'resource (closed)'|'string'|'scalar'|'callable'|'iterable' $type - * - * @throws Exception - */ - final public static function isType(string $type): IsType - { - return new IsType($type); - } - - final public static function lessThan(mixed $value): LessThan - { - return new LessThan($value); - } - - final public static function lessThanOrEqual(mixed $value): LogicalOr - { - return static::logicalOr( - new IsEqual($value), - new LessThan($value), - ); - } - - final public static function matchesRegularExpression(string $pattern): RegularExpression - { - return new RegularExpression($pattern); - } - - final public static function matches(string $string): StringMatchesFormatDescription - { - return new StringMatchesFormatDescription($string); - } - - /** - * @psalm-param non-empty-string $prefix - * - * @throws InvalidArgumentException - */ - final public static function stringStartsWith(string $prefix): StringStartsWith - { - return new StringStartsWith($prefix); - } - - final public static function stringContains(string $string, bool $case = true): StringContains - { - return new StringContains($string, $case); - } - - /** - * @psalm-param non-empty-string $suffix - * - * @throws InvalidArgumentException - */ - final public static function stringEndsWith(string $suffix): StringEndsWith - { - return new StringEndsWith($suffix); - } - - final public static function stringEqualsStringIgnoringLineEndings(string $string): StringEqualsStringIgnoringLineEndings - { - return new StringEqualsStringIgnoringLineEndings($string); - } - - final public static function countOf(int $count): Count - { - return new Count($count); - } - - final public static function objectEquals(object $object, string $method = 'equals'): ObjectEquals - { - return new ObjectEquals($object, $method); - } - - /** - * Fails a test with the given message. - * - * @throws AssertionFailedError - */ - final public static function fail(string $message = ''): never - { - self::$count++; - - throw new AssertionFailedError($message); - } - - /** - * Mark the test as incomplete. - * - * @throws IncompleteTestError - */ - final public static function markTestIncomplete(string $message = ''): never - { - throw new IncompleteTestError($message); - } - - /** - * Mark the test as skipped. - * - * @throws SkippedWithMessageException - */ - final public static function markTestSkipped(string $message = ''): never - { - throw new SkippedWithMessageException($message); - } - - /** - * Return the current assertion count. - */ - final public static function getCount(): int - { - return self::$count; - } - - /** - * Reset the assertion counter. - */ - final public static function resetCount(): void - { - self::$count = 0; - } - - private static function isNativeType(string $type): bool - { - return match ($type) { - 'numeric', 'integer', 'int', 'iterable', 'float', 'string', 'boolean', 'bool', 'null', 'array', 'object', 'resource', 'scalar' => true, - default => false, - }; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Assert/Functions.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Assert/Functions.php deleted file mode 100644 index 41e9c32a..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Assert/Functions.php +++ /dev/null @@ -1,2707 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -use function func_get_args; -use function function_exists; -use ArrayAccess; -use Countable; -use PHPUnit\Framework\Constraint\ArrayHasKey; -use PHPUnit\Framework\Constraint\Callback; -use PHPUnit\Framework\Constraint\Constraint; -use PHPUnit\Framework\Constraint\Count; -use PHPUnit\Framework\Constraint\DirectoryExists; -use PHPUnit\Framework\Constraint\FileExists; -use PHPUnit\Framework\Constraint\GreaterThan; -use PHPUnit\Framework\Constraint\IsAnything; -use PHPUnit\Framework\Constraint\IsEmpty; -use PHPUnit\Framework\Constraint\IsEqual; -use PHPUnit\Framework\Constraint\IsEqualCanonicalizing; -use PHPUnit\Framework\Constraint\IsEqualIgnoringCase; -use PHPUnit\Framework\Constraint\IsEqualWithDelta; -use PHPUnit\Framework\Constraint\IsFalse; -use PHPUnit\Framework\Constraint\IsFinite; -use PHPUnit\Framework\Constraint\IsIdentical; -use PHPUnit\Framework\Constraint\IsInfinite; -use PHPUnit\Framework\Constraint\IsInstanceOf; -use PHPUnit\Framework\Constraint\IsJson; -use PHPUnit\Framework\Constraint\IsList; -use PHPUnit\Framework\Constraint\IsNan; -use PHPUnit\Framework\Constraint\IsNull; -use PHPUnit\Framework\Constraint\IsReadable; -use PHPUnit\Framework\Constraint\IsTrue; -use PHPUnit\Framework\Constraint\IsType; -use PHPUnit\Framework\Constraint\IsWritable; -use PHPUnit\Framework\Constraint\LessThan; -use PHPUnit\Framework\Constraint\LogicalAnd; -use PHPUnit\Framework\Constraint\LogicalNot; -use PHPUnit\Framework\Constraint\LogicalOr; -use PHPUnit\Framework\Constraint\LogicalXor; -use PHPUnit\Framework\Constraint\ObjectEquals; -use PHPUnit\Framework\Constraint\RegularExpression; -use PHPUnit\Framework\Constraint\StringContains; -use PHPUnit\Framework\Constraint\StringEndsWith; -use PHPUnit\Framework\Constraint\StringEqualsStringIgnoringLineEndings; -use PHPUnit\Framework\Constraint\StringMatchesFormatDescription; -use PHPUnit\Framework\Constraint\StringStartsWith; -use PHPUnit\Framework\Constraint\TraversableContainsEqual; -use PHPUnit\Framework\Constraint\TraversableContainsIdentical; -use PHPUnit\Framework\Constraint\TraversableContainsOnly; -use PHPUnit\Framework\MockObject\Rule\AnyInvokedCount as AnyInvokedCountMatcher; -use PHPUnit\Framework\MockObject\Rule\InvokedAtLeastCount as InvokedAtLeastCountMatcher; -use PHPUnit\Framework\MockObject\Rule\InvokedAtLeastOnce as InvokedAtLeastOnceMatcher; -use PHPUnit\Framework\MockObject\Rule\InvokedAtMostCount as InvokedAtMostCountMatcher; -use PHPUnit\Framework\MockObject\Rule\InvokedCount as InvokedCountMatcher; -use PHPUnit\Framework\MockObject\Stub\ConsecutiveCalls as ConsecutiveCallsStub; -use PHPUnit\Framework\MockObject\Stub\Exception as ExceptionStub; -use PHPUnit\Framework\MockObject\Stub\ReturnArgument as ReturnArgumentStub; -use PHPUnit\Framework\MockObject\Stub\ReturnCallback as ReturnCallbackStub; -use PHPUnit\Framework\MockObject\Stub\ReturnSelf as ReturnSelfStub; -use PHPUnit\Framework\MockObject\Stub\ReturnStub; -use PHPUnit\Framework\MockObject\Stub\ReturnValueMap as ReturnValueMapStub; -use PHPUnit\Util\Xml\XmlException; -use Throwable; - -if (!function_exists('PHPUnit\Framework\assertArrayHasKey')) { - /** - * Asserts that an array has a specified key. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertArrayHasKey - */ - function assertArrayHasKey(mixed $key, array|ArrayAccess $array, string $message = ''): void - { - Assert::assertArrayHasKey(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertArrayNotHasKey')) { - /** - * Asserts that an array does not have a specified key. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertArrayNotHasKey - */ - function assertArrayNotHasKey(mixed $key, array|ArrayAccess $array, string $message = ''): void - { - Assert::assertArrayNotHasKey(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertIsList')) { - /** - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertIsList - */ - function assertIsList(mixed $array, string $message = ''): void - { - Assert::assertIsList(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertContains')) { - /** - * Asserts that a haystack contains a needle. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertContains - */ - function assertContains(mixed $needle, iterable $haystack, string $message = ''): void - { - Assert::assertContains(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertContainsEquals')) { - /** - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertContainsEquals - */ - function assertContainsEquals(mixed $needle, iterable $haystack, string $message = ''): void - { - Assert::assertContainsEquals(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertNotContains')) { - /** - * Asserts that a haystack does not contain a needle. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertNotContains - */ - function assertNotContains(mixed $needle, iterable $haystack, string $message = ''): void - { - Assert::assertNotContains(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertNotContainsEquals')) { - /** - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertNotContainsEquals - */ - function assertNotContainsEquals(mixed $needle, iterable $haystack, string $message = ''): void - { - Assert::assertNotContainsEquals(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertContainsOnly')) { - /** - * Asserts that a haystack contains only values of a given type. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertContainsOnly - */ - function assertContainsOnly(string $type, iterable $haystack, ?bool $isNativeType = null, string $message = ''): void - { - Assert::assertContainsOnly(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertContainsOnlyInstancesOf')) { - /** - * Asserts that a haystack contains only instances of a given class name. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertContainsOnlyInstancesOf - */ - function assertContainsOnlyInstancesOf(string $className, iterable $haystack, string $message = ''): void - { - Assert::assertContainsOnlyInstancesOf(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertNotContainsOnly')) { - /** - * Asserts that a haystack does not contain only values of a given type. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertNotContainsOnly - */ - function assertNotContainsOnly(string $type, iterable $haystack, ?bool $isNativeType = null, string $message = ''): void - { - Assert::assertNotContainsOnly(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertCount')) { - /** - * Asserts the number of elements of an array, Countable or Traversable. - * - * @throws Exception - * @throws ExpectationFailedException - * @throws GeneratorNotSupportedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertCount - */ - function assertCount(int $expectedCount, Countable|iterable $haystack, string $message = ''): void - { - Assert::assertCount(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertNotCount')) { - /** - * Asserts the number of elements of an array, Countable or Traversable. - * - * @throws Exception - * @throws ExpectationFailedException - * @throws GeneratorNotSupportedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertNotCount - */ - function assertNotCount(int $expectedCount, Countable|iterable $haystack, string $message = ''): void - { - Assert::assertNotCount(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertEquals')) { - /** - * Asserts that two variables are equal. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertEquals - */ - function assertEquals(mixed $expected, mixed $actual, string $message = ''): void - { - Assert::assertEquals(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertEqualsCanonicalizing')) { - /** - * Asserts that two variables are equal (canonicalizing). - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertEqualsCanonicalizing - */ - function assertEqualsCanonicalizing(mixed $expected, mixed $actual, string $message = ''): void - { - Assert::assertEqualsCanonicalizing(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertEqualsIgnoringCase')) { - /** - * Asserts that two variables are equal (ignoring case). - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertEqualsIgnoringCase - */ - function assertEqualsIgnoringCase(mixed $expected, mixed $actual, string $message = ''): void - { - Assert::assertEqualsIgnoringCase(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertEqualsWithDelta')) { - /** - * Asserts that two variables are equal (with delta). - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertEqualsWithDelta - */ - function assertEqualsWithDelta(mixed $expected, mixed $actual, float $delta, string $message = ''): void - { - Assert::assertEqualsWithDelta(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertNotEquals')) { - /** - * Asserts that two variables are not equal. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertNotEquals - */ - function assertNotEquals(mixed $expected, mixed $actual, string $message = ''): void - { - Assert::assertNotEquals(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertNotEqualsCanonicalizing')) { - /** - * Asserts that two variables are not equal (canonicalizing). - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertNotEqualsCanonicalizing - */ - function assertNotEqualsCanonicalizing(mixed $expected, mixed $actual, string $message = ''): void - { - Assert::assertNotEqualsCanonicalizing(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertNotEqualsIgnoringCase')) { - /** - * Asserts that two variables are not equal (ignoring case). - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertNotEqualsIgnoringCase - */ - function assertNotEqualsIgnoringCase(mixed $expected, mixed $actual, string $message = ''): void - { - Assert::assertNotEqualsIgnoringCase(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertNotEqualsWithDelta')) { - /** - * Asserts that two variables are not equal (with delta). - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertNotEqualsWithDelta - */ - function assertNotEqualsWithDelta(mixed $expected, mixed $actual, float $delta, string $message = ''): void - { - Assert::assertNotEqualsWithDelta(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertObjectEquals')) { - /** - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertObjectEquals - */ - function assertObjectEquals(object $expected, object $actual, string $method = 'equals', string $message = ''): void - { - Assert::assertObjectEquals(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertEmpty')) { - /** - * Asserts that a variable is empty. - * - * @throws ExpectationFailedException - * @throws GeneratorNotSupportedException - * - * @psalm-assert empty $actual - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertEmpty - */ - function assertEmpty(mixed $actual, string $message = ''): void - { - Assert::assertEmpty(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertNotEmpty')) { - /** - * Asserts that a variable is not empty. - * - * @throws ExpectationFailedException - * @throws GeneratorNotSupportedException - * - * @psalm-assert !empty $actual - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertNotEmpty - */ - function assertNotEmpty(mixed $actual, string $message = ''): void - { - Assert::assertNotEmpty(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertGreaterThan')) { - /** - * Asserts that a value is greater than another value. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertGreaterThan - */ - function assertGreaterThan(mixed $expected, mixed $actual, string $message = ''): void - { - Assert::assertGreaterThan(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertGreaterThanOrEqual')) { - /** - * Asserts that a value is greater than or equal to another value. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertGreaterThanOrEqual - */ - function assertGreaterThanOrEqual(mixed $expected, mixed $actual, string $message = ''): void - { - Assert::assertGreaterThanOrEqual(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertLessThan')) { - /** - * Asserts that a value is smaller than another value. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertLessThan - */ - function assertLessThan(mixed $expected, mixed $actual, string $message = ''): void - { - Assert::assertLessThan(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertLessThanOrEqual')) { - /** - * Asserts that a value is smaller than or equal to another value. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertLessThanOrEqual - */ - function assertLessThanOrEqual(mixed $expected, mixed $actual, string $message = ''): void - { - Assert::assertLessThanOrEqual(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertFileEquals')) { - /** - * Asserts that the contents of one file is equal to the contents of another - * file. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertFileEquals - */ - function assertFileEquals(string $expected, string $actual, string $message = ''): void - { - Assert::assertFileEquals(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertFileEqualsCanonicalizing')) { - /** - * Asserts that the contents of one file is equal to the contents of another - * file (canonicalizing). - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertFileEqualsCanonicalizing - */ - function assertFileEqualsCanonicalizing(string $expected, string $actual, string $message = ''): void - { - Assert::assertFileEqualsCanonicalizing(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertFileEqualsIgnoringCase')) { - /** - * Asserts that the contents of one file is equal to the contents of another - * file (ignoring case). - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertFileEqualsIgnoringCase - */ - function assertFileEqualsIgnoringCase(string $expected, string $actual, string $message = ''): void - { - Assert::assertFileEqualsIgnoringCase(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertFileNotEquals')) { - /** - * Asserts that the contents of one file is not equal to the contents of - * another file. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertFileNotEquals - */ - function assertFileNotEquals(string $expected, string $actual, string $message = ''): void - { - Assert::assertFileNotEquals(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertFileNotEqualsCanonicalizing')) { - /** - * Asserts that the contents of one file is not equal to the contents of another - * file (canonicalizing). - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertFileNotEqualsCanonicalizing - */ - function assertFileNotEqualsCanonicalizing(string $expected, string $actual, string $message = ''): void - { - Assert::assertFileNotEqualsCanonicalizing(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertFileNotEqualsIgnoringCase')) { - /** - * Asserts that the contents of one file is not equal to the contents of another - * file (ignoring case). - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertFileNotEqualsIgnoringCase - */ - function assertFileNotEqualsIgnoringCase(string $expected, string $actual, string $message = ''): void - { - Assert::assertFileNotEqualsIgnoringCase(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertStringEqualsFile')) { - /** - * Asserts that the contents of a string is equal - * to the contents of a file. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertStringEqualsFile - */ - function assertStringEqualsFile(string $expectedFile, string $actualString, string $message = ''): void - { - Assert::assertStringEqualsFile(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertStringEqualsFileCanonicalizing')) { - /** - * Asserts that the contents of a string is equal - * to the contents of a file (canonicalizing). - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertStringEqualsFileCanonicalizing - */ - function assertStringEqualsFileCanonicalizing(string $expectedFile, string $actualString, string $message = ''): void - { - Assert::assertStringEqualsFileCanonicalizing(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertStringEqualsFileIgnoringCase')) { - /** - * Asserts that the contents of a string is equal - * to the contents of a file (ignoring case). - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertStringEqualsFileIgnoringCase - */ - function assertStringEqualsFileIgnoringCase(string $expectedFile, string $actualString, string $message = ''): void - { - Assert::assertStringEqualsFileIgnoringCase(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertStringNotEqualsFile')) { - /** - * Asserts that the contents of a string is not equal - * to the contents of a file. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertStringNotEqualsFile - */ - function assertStringNotEqualsFile(string $expectedFile, string $actualString, string $message = ''): void - { - Assert::assertStringNotEqualsFile(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertStringNotEqualsFileCanonicalizing')) { - /** - * Asserts that the contents of a string is not equal - * to the contents of a file (canonicalizing). - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertStringNotEqualsFileCanonicalizing - */ - function assertStringNotEqualsFileCanonicalizing(string $expectedFile, string $actualString, string $message = ''): void - { - Assert::assertStringNotEqualsFileCanonicalizing(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertStringNotEqualsFileIgnoringCase')) { - /** - * Asserts that the contents of a string is not equal - * to the contents of a file (ignoring case). - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertStringNotEqualsFileIgnoringCase - */ - function assertStringNotEqualsFileIgnoringCase(string $expectedFile, string $actualString, string $message = ''): void - { - Assert::assertStringNotEqualsFileIgnoringCase(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertIsReadable')) { - /** - * Asserts that a file/dir is readable. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertIsReadable - */ - function assertIsReadable(string $filename, string $message = ''): void - { - Assert::assertIsReadable(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertIsNotReadable')) { - /** - * Asserts that a file/dir exists and is not readable. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertIsNotReadable - */ - function assertIsNotReadable(string $filename, string $message = ''): void - { - Assert::assertIsNotReadable(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertIsWritable')) { - /** - * Asserts that a file/dir exists and is writable. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertIsWritable - */ - function assertIsWritable(string $filename, string $message = ''): void - { - Assert::assertIsWritable(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertIsNotWritable')) { - /** - * Asserts that a file/dir exists and is not writable. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertIsNotWritable - */ - function assertIsNotWritable(string $filename, string $message = ''): void - { - Assert::assertIsNotWritable(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertDirectoryExists')) { - /** - * Asserts that a directory exists. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertDirectoryExists - */ - function assertDirectoryExists(string $directory, string $message = ''): void - { - Assert::assertDirectoryExists(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertDirectoryDoesNotExist')) { - /** - * Asserts that a directory does not exist. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertDirectoryDoesNotExist - */ - function assertDirectoryDoesNotExist(string $directory, string $message = ''): void - { - Assert::assertDirectoryDoesNotExist(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertDirectoryIsReadable')) { - /** - * Asserts that a directory exists and is readable. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertDirectoryIsReadable - */ - function assertDirectoryIsReadable(string $directory, string $message = ''): void - { - Assert::assertDirectoryIsReadable(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertDirectoryIsNotReadable')) { - /** - * Asserts that a directory exists and is not readable. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertDirectoryIsNotReadable - */ - function assertDirectoryIsNotReadable(string $directory, string $message = ''): void - { - Assert::assertDirectoryIsNotReadable(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertDirectoryIsWritable')) { - /** - * Asserts that a directory exists and is writable. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertDirectoryIsWritable - */ - function assertDirectoryIsWritable(string $directory, string $message = ''): void - { - Assert::assertDirectoryIsWritable(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertDirectoryIsNotWritable')) { - /** - * Asserts that a directory exists and is not writable. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertDirectoryIsNotWritable - */ - function assertDirectoryIsNotWritable(string $directory, string $message = ''): void - { - Assert::assertDirectoryIsNotWritable(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertFileExists')) { - /** - * Asserts that a file exists. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertFileExists - */ - function assertFileExists(string $filename, string $message = ''): void - { - Assert::assertFileExists(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertFileDoesNotExist')) { - /** - * Asserts that a file does not exist. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertFileDoesNotExist - */ - function assertFileDoesNotExist(string $filename, string $message = ''): void - { - Assert::assertFileDoesNotExist(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertFileIsReadable')) { - /** - * Asserts that a file exists and is readable. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertFileIsReadable - */ - function assertFileIsReadable(string $file, string $message = ''): void - { - Assert::assertFileIsReadable(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertFileIsNotReadable')) { - /** - * Asserts that a file exists and is not readable. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertFileIsNotReadable - */ - function assertFileIsNotReadable(string $file, string $message = ''): void - { - Assert::assertFileIsNotReadable(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertFileIsWritable')) { - /** - * Asserts that a file exists and is writable. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertFileIsWritable - */ - function assertFileIsWritable(string $file, string $message = ''): void - { - Assert::assertFileIsWritable(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertFileIsNotWritable')) { - /** - * Asserts that a file exists and is not writable. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertFileIsNotWritable - */ - function assertFileIsNotWritable(string $file, string $message = ''): void - { - Assert::assertFileIsNotWritable(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertTrue')) { - /** - * Asserts that a condition is true. - * - * @throws ExpectationFailedException - * - * @psalm-assert true $condition - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertTrue - */ - function assertTrue(mixed $condition, string $message = ''): void - { - Assert::assertTrue(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertNotTrue')) { - /** - * Asserts that a condition is not true. - * - * @throws ExpectationFailedException - * - * @psalm-assert !true $condition - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertNotTrue - */ - function assertNotTrue(mixed $condition, string $message = ''): void - { - Assert::assertNotTrue(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertFalse')) { - /** - * Asserts that a condition is false. - * - * @throws ExpectationFailedException - * - * @psalm-assert false $condition - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertFalse - */ - function assertFalse(mixed $condition, string $message = ''): void - { - Assert::assertFalse(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertNotFalse')) { - /** - * Asserts that a condition is not false. - * - * @throws ExpectationFailedException - * - * @psalm-assert !false $condition - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertNotFalse - */ - function assertNotFalse(mixed $condition, string $message = ''): void - { - Assert::assertNotFalse(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertNull')) { - /** - * Asserts that a variable is null. - * - * @throws ExpectationFailedException - * - * @psalm-assert null $actual - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertNull - */ - function assertNull(mixed $actual, string $message = ''): void - { - Assert::assertNull(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertNotNull')) { - /** - * Asserts that a variable is not null. - * - * @throws ExpectationFailedException - * - * @psalm-assert !null $actual - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertNotNull - */ - function assertNotNull(mixed $actual, string $message = ''): void - { - Assert::assertNotNull(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertFinite')) { - /** - * Asserts that a variable is finite. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertFinite - */ - function assertFinite(mixed $actual, string $message = ''): void - { - Assert::assertFinite(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertInfinite')) { - /** - * Asserts that a variable is infinite. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertInfinite - */ - function assertInfinite(mixed $actual, string $message = ''): void - { - Assert::assertInfinite(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertNan')) { - /** - * Asserts that a variable is nan. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertNan - */ - function assertNan(mixed $actual, string $message = ''): void - { - Assert::assertNan(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertObjectHasProperty')) { - /** - * Asserts that an object has a specified property. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertObjectHasProperty - */ - function assertObjectHasProperty(string $propertyName, object $object, string $message = ''): void - { - Assert::assertObjectHasProperty(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertObjectNotHasProperty')) { - /** - * Asserts that an object does not have a specified property. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertObjectNotHasProperty - */ - function assertObjectNotHasProperty(string $propertyName, object $object, string $message = ''): void - { - Assert::assertObjectNotHasProperty(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertSame')) { - /** - * Asserts that two variables have the same type and value. - * Used on objects, it asserts that two variables reference - * the same object. - * - * @throws ExpectationFailedException - * - * @psalm-template ExpectedType - * - * @psalm-param ExpectedType $expected - * - * @psalm-assert =ExpectedType $actual - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertSame - */ - function assertSame(mixed $expected, mixed $actual, string $message = ''): void - { - Assert::assertSame(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertNotSame')) { - /** - * Asserts that two variables do not have the same type and value. - * Used on objects, it asserts that two variables do not reference - * the same object. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertNotSame - */ - function assertNotSame(mixed $expected, mixed $actual, string $message = ''): void - { - Assert::assertNotSame(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertInstanceOf')) { - /** - * Asserts that a variable is of a given type. - * - * @throws Exception - * @throws ExpectationFailedException - * @throws UnknownClassOrInterfaceException - * - * @psalm-template ExpectedType of object - * - * @psalm-param class-string $expected - * - * @psalm-assert =ExpectedType $actual - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertInstanceOf - */ - function assertInstanceOf(string $expected, mixed $actual, string $message = ''): void - { - Assert::assertInstanceOf(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertNotInstanceOf')) { - /** - * Asserts that a variable is not of a given type. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-template ExpectedType of object - * - * @psalm-param class-string $expected - * - * @psalm-assert !ExpectedType $actual - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertNotInstanceOf - */ - function assertNotInstanceOf(string $expected, mixed $actual, string $message = ''): void - { - Assert::assertNotInstanceOf(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertIsArray')) { - /** - * Asserts that a variable is of type array. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert array $actual - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertIsArray - */ - function assertIsArray(mixed $actual, string $message = ''): void - { - Assert::assertIsArray(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertIsBool')) { - /** - * Asserts that a variable is of type bool. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert bool $actual - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertIsBool - */ - function assertIsBool(mixed $actual, string $message = ''): void - { - Assert::assertIsBool(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertIsFloat')) { - /** - * Asserts that a variable is of type float. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert float $actual - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertIsFloat - */ - function assertIsFloat(mixed $actual, string $message = ''): void - { - Assert::assertIsFloat(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertIsInt')) { - /** - * Asserts that a variable is of type int. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert int $actual - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertIsInt - */ - function assertIsInt(mixed $actual, string $message = ''): void - { - Assert::assertIsInt(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertIsNumeric')) { - /** - * Asserts that a variable is of type numeric. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert numeric $actual - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertIsNumeric - */ - function assertIsNumeric(mixed $actual, string $message = ''): void - { - Assert::assertIsNumeric(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertIsObject')) { - /** - * Asserts that a variable is of type object. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert object $actual - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertIsObject - */ - function assertIsObject(mixed $actual, string $message = ''): void - { - Assert::assertIsObject(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertIsResource')) { - /** - * Asserts that a variable is of type resource. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert resource $actual - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertIsResource - */ - function assertIsResource(mixed $actual, string $message = ''): void - { - Assert::assertIsResource(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertIsClosedResource')) { - /** - * Asserts that a variable is of type resource and is closed. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert resource $actual - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertIsClosedResource - */ - function assertIsClosedResource(mixed $actual, string $message = ''): void - { - Assert::assertIsClosedResource(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertIsString')) { - /** - * Asserts that a variable is of type string. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert string $actual - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertIsString - */ - function assertIsString(mixed $actual, string $message = ''): void - { - Assert::assertIsString(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertIsScalar')) { - /** - * Asserts that a variable is of type scalar. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert scalar $actual - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertIsScalar - */ - function assertIsScalar(mixed $actual, string $message = ''): void - { - Assert::assertIsScalar(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertIsCallable')) { - /** - * Asserts that a variable is of type callable. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert callable $actual - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertIsCallable - */ - function assertIsCallable(mixed $actual, string $message = ''): void - { - Assert::assertIsCallable(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertIsIterable')) { - /** - * Asserts that a variable is of type iterable. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert iterable $actual - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertIsIterable - */ - function assertIsIterable(mixed $actual, string $message = ''): void - { - Assert::assertIsIterable(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertIsNotArray')) { - /** - * Asserts that a variable is not of type array. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert !array $actual - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertIsNotArray - */ - function assertIsNotArray(mixed $actual, string $message = ''): void - { - Assert::assertIsNotArray(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertIsNotBool')) { - /** - * Asserts that a variable is not of type bool. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert !bool $actual - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertIsNotBool - */ - function assertIsNotBool(mixed $actual, string $message = ''): void - { - Assert::assertIsNotBool(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertIsNotFloat')) { - /** - * Asserts that a variable is not of type float. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert !float $actual - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertIsNotFloat - */ - function assertIsNotFloat(mixed $actual, string $message = ''): void - { - Assert::assertIsNotFloat(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertIsNotInt')) { - /** - * Asserts that a variable is not of type int. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert !int $actual - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertIsNotInt - */ - function assertIsNotInt(mixed $actual, string $message = ''): void - { - Assert::assertIsNotInt(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertIsNotNumeric')) { - /** - * Asserts that a variable is not of type numeric. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert !numeric $actual - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertIsNotNumeric - */ - function assertIsNotNumeric(mixed $actual, string $message = ''): void - { - Assert::assertIsNotNumeric(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertIsNotObject')) { - /** - * Asserts that a variable is not of type object. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert !object $actual - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertIsNotObject - */ - function assertIsNotObject(mixed $actual, string $message = ''): void - { - Assert::assertIsNotObject(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertIsNotResource')) { - /** - * Asserts that a variable is not of type resource. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert !resource $actual - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertIsNotResource - */ - function assertIsNotResource(mixed $actual, string $message = ''): void - { - Assert::assertIsNotResource(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertIsNotClosedResource')) { - /** - * Asserts that a variable is not of type resource. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert !resource $actual - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertIsNotClosedResource - */ - function assertIsNotClosedResource(mixed $actual, string $message = ''): void - { - Assert::assertIsNotClosedResource(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertIsNotString')) { - /** - * Asserts that a variable is not of type string. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert !string $actual - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertIsNotString - */ - function assertIsNotString(mixed $actual, string $message = ''): void - { - Assert::assertIsNotString(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertIsNotScalar')) { - /** - * Asserts that a variable is not of type scalar. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert !scalar $actual - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertIsNotScalar - */ - function assertIsNotScalar(mixed $actual, string $message = ''): void - { - Assert::assertIsNotScalar(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertIsNotCallable')) { - /** - * Asserts that a variable is not of type callable. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert !callable $actual - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertIsNotCallable - */ - function assertIsNotCallable(mixed $actual, string $message = ''): void - { - Assert::assertIsNotCallable(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertIsNotIterable')) { - /** - * Asserts that a variable is not of type iterable. - * - * @throws Exception - * @throws ExpectationFailedException - * - * @psalm-assert !iterable $actual - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertIsNotIterable - */ - function assertIsNotIterable(mixed $actual, string $message = ''): void - { - Assert::assertIsNotIterable(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertMatchesRegularExpression')) { - /** - * Asserts that a string matches a given regular expression. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertMatchesRegularExpression - */ - function assertMatchesRegularExpression(string $pattern, string $string, string $message = ''): void - { - Assert::assertMatchesRegularExpression(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertDoesNotMatchRegularExpression')) { - /** - * Asserts that a string does not match a given regular expression. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertDoesNotMatchRegularExpression - */ - function assertDoesNotMatchRegularExpression(string $pattern, string $string, string $message = ''): void - { - Assert::assertDoesNotMatchRegularExpression(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertSameSize')) { - /** - * Assert that the size of two arrays (or `Countable` or `Traversable` objects) - * is the same. - * - * @throws Exception - * @throws ExpectationFailedException - * @throws GeneratorNotSupportedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertSameSize - */ - function assertSameSize(Countable|iterable $expected, Countable|iterable $actual, string $message = ''): void - { - Assert::assertSameSize(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertNotSameSize')) { - /** - * Assert that the size of two arrays (or `Countable` or `Traversable` objects) - * is not the same. - * - * @throws Exception - * @throws ExpectationFailedException - * @throws GeneratorNotSupportedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertNotSameSize - */ - function assertNotSameSize(Countable|iterable $expected, Countable|iterable $actual, string $message = ''): void - { - Assert::assertNotSameSize(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertStringContainsStringIgnoringLineEndings')) { - /** - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertStringContainsStringIgnoringLineEndings - */ - function assertStringContainsStringIgnoringLineEndings(string $needle, string $haystack, string $message = ''): void - { - Assert::assertStringContainsStringIgnoringLineEndings(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertStringEqualsStringIgnoringLineEndings')) { - /** - * Asserts that two strings are equal except for line endings. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertStringEqualsStringIgnoringLineEndings - */ - function assertStringEqualsStringIgnoringLineEndings(string $expected, string $actual, string $message = ''): void - { - Assert::assertStringEqualsStringIgnoringLineEndings(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertFileMatchesFormat')) { - /** - * Asserts that a string matches a given format string. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertFileMatchesFormat - */ - function assertFileMatchesFormat(string $format, string $actualFile, string $message = ''): void - { - Assert::assertFileMatchesFormat(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertFileMatchesFormatFile')) { - /** - * Asserts that a string matches a given format string. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertFileMatchesFormatFile - */ - function assertFileMatchesFormatFile(string $formatFile, string $actualFile, string $message = ''): void - { - Assert::assertFileMatchesFormatFile(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertStringMatchesFormat')) { - /** - * Asserts that a string matches a given format string. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertStringMatchesFormat - */ - function assertStringMatchesFormat(string $format, string $string, string $message = ''): void - { - Assert::assertStringMatchesFormat(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertStringNotMatchesFormat')) { - /** - * Asserts that a string does not match a given format string. - * - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5472 - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertStringNotMatchesFormat - */ - function assertStringNotMatchesFormat(string $format, string $string, string $message = ''): void - { - Assert::assertStringNotMatchesFormat(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertStringMatchesFormatFile')) { - /** - * Asserts that a string matches a given format file. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertStringMatchesFormatFile - */ - function assertStringMatchesFormatFile(string $formatFile, string $string, string $message = ''): void - { - Assert::assertStringMatchesFormatFile(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertStringNotMatchesFormatFile')) { - /** - * Asserts that a string does not match a given format string. - * - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5472 - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertStringNotMatchesFormatFile - */ - function assertStringNotMatchesFormatFile(string $formatFile, string $string, string $message = ''): void - { - Assert::assertStringNotMatchesFormatFile(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertStringStartsWith')) { - /** - * Asserts that a string starts with a given prefix. - * - * @psalm-param non-empty-string $prefix - * - * @throws ExpectationFailedException - * @throws InvalidArgumentException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertStringStartsWith - */ - function assertStringStartsWith(string $prefix, string $string, string $message = ''): void - { - Assert::assertStringStartsWith(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertStringStartsNotWith')) { - /** - * Asserts that a string starts not with a given prefix. - * - * @psalm-param non-empty-string $prefix - * - * @throws ExpectationFailedException - * @throws InvalidArgumentException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertStringStartsNotWith - */ - function assertStringStartsNotWith(string $prefix, string $string, string $message = ''): void - { - Assert::assertStringStartsNotWith(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertStringContainsString')) { - /** - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertStringContainsString - */ - function assertStringContainsString(string $needle, string $haystack, string $message = ''): void - { - Assert::assertStringContainsString(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertStringContainsStringIgnoringCase')) { - /** - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertStringContainsStringIgnoringCase - */ - function assertStringContainsStringIgnoringCase(string $needle, string $haystack, string $message = ''): void - { - Assert::assertStringContainsStringIgnoringCase(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertStringNotContainsString')) { - /** - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertStringNotContainsString - */ - function assertStringNotContainsString(string $needle, string $haystack, string $message = ''): void - { - Assert::assertStringNotContainsString(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertStringNotContainsStringIgnoringCase')) { - /** - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertStringNotContainsStringIgnoringCase - */ - function assertStringNotContainsStringIgnoringCase(string $needle, string $haystack, string $message = ''): void - { - Assert::assertStringNotContainsStringIgnoringCase(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertStringEndsWith')) { - /** - * Asserts that a string ends with a given suffix. - * - * @psalm-param non-empty-string $suffix - * - * @throws ExpectationFailedException - * @throws InvalidArgumentException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertStringEndsWith - */ - function assertStringEndsWith(string $suffix, string $string, string $message = ''): void - { - Assert::assertStringEndsWith(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertStringEndsNotWith')) { - /** - * Asserts that a string ends not with a given suffix. - * - * @psalm-param non-empty-string $suffix - * - * @throws ExpectationFailedException - * @throws InvalidArgumentException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertStringEndsNotWith - */ - function assertStringEndsNotWith(string $suffix, string $string, string $message = ''): void - { - Assert::assertStringEndsNotWith(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertXmlFileEqualsXmlFile')) { - /** - * Asserts that two XML files are equal. - * - * @throws Exception - * @throws ExpectationFailedException - * @throws XmlException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertXmlFileEqualsXmlFile - */ - function assertXmlFileEqualsXmlFile(string $expectedFile, string $actualFile, string $message = ''): void - { - Assert::assertXmlFileEqualsXmlFile(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertXmlFileNotEqualsXmlFile')) { - /** - * Asserts that two XML files are not equal. - * - * @throws \PHPUnit\Util\Exception - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertXmlFileNotEqualsXmlFile - */ - function assertXmlFileNotEqualsXmlFile(string $expectedFile, string $actualFile, string $message = ''): void - { - Assert::assertXmlFileNotEqualsXmlFile(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertXmlStringEqualsXmlFile')) { - /** - * Asserts that two XML documents are equal. - * - * @throws ExpectationFailedException - * @throws XmlException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertXmlStringEqualsXmlFile - */ - function assertXmlStringEqualsXmlFile(string $expectedFile, string $actualXml, string $message = ''): void - { - Assert::assertXmlStringEqualsXmlFile(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertXmlStringNotEqualsXmlFile')) { - /** - * Asserts that two XML documents are not equal. - * - * @throws ExpectationFailedException - * @throws XmlException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertXmlStringNotEqualsXmlFile - */ - function assertXmlStringNotEqualsXmlFile(string $expectedFile, string $actualXml, string $message = ''): void - { - Assert::assertXmlStringNotEqualsXmlFile(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertXmlStringEqualsXmlString')) { - /** - * Asserts that two XML documents are equal. - * - * @throws ExpectationFailedException - * @throws XmlException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertXmlStringEqualsXmlString - */ - function assertXmlStringEqualsXmlString(string $expectedXml, string $actualXml, string $message = ''): void - { - Assert::assertXmlStringEqualsXmlString(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertXmlStringNotEqualsXmlString')) { - /** - * Asserts that two XML documents are not equal. - * - * @throws ExpectationFailedException - * @throws XmlException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertXmlStringNotEqualsXmlString - */ - function assertXmlStringNotEqualsXmlString(string $expectedXml, string $actualXml, string $message = ''): void - { - Assert::assertXmlStringNotEqualsXmlString(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertThat')) { - /** - * Evaluates a PHPUnit\Framework\Constraint matcher object. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertThat - */ - function assertThat(mixed $value, Constraint $constraint, string $message = ''): void - { - Assert::assertThat(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertJson')) { - /** - * Asserts that a string is a valid JSON string. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertJson - */ - function assertJson(string $actual, string $message = ''): void - { - Assert::assertJson(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertJsonStringEqualsJsonString')) { - /** - * Asserts that two given JSON encoded objects or arrays are equal. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertJsonStringEqualsJsonString - */ - function assertJsonStringEqualsJsonString(string $expectedJson, string $actualJson, string $message = ''): void - { - Assert::assertJsonStringEqualsJsonString(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertJsonStringNotEqualsJsonString')) { - /** - * Asserts that two given JSON encoded objects or arrays are not equal. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertJsonStringNotEqualsJsonString - */ - function assertJsonStringNotEqualsJsonString(string $expectedJson, string $actualJson, string $message = ''): void - { - Assert::assertJsonStringNotEqualsJsonString(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertJsonStringEqualsJsonFile')) { - /** - * Asserts that the generated JSON encoded object and the content of the given file are equal. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertJsonStringEqualsJsonFile - */ - function assertJsonStringEqualsJsonFile(string $expectedFile, string $actualJson, string $message = ''): void - { - Assert::assertJsonStringEqualsJsonFile(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertJsonStringNotEqualsJsonFile')) { - /** - * Asserts that the generated JSON encoded object and the content of the given file are not equal. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertJsonStringNotEqualsJsonFile - */ - function assertJsonStringNotEqualsJsonFile(string $expectedFile, string $actualJson, string $message = ''): void - { - Assert::assertJsonStringNotEqualsJsonFile(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertJsonFileEqualsJsonFile')) { - /** - * Asserts that two JSON files are equal. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertJsonFileEqualsJsonFile - */ - function assertJsonFileEqualsJsonFile(string $expectedFile, string $actualFile, string $message = ''): void - { - Assert::assertJsonFileEqualsJsonFile(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\assertJsonFileNotEqualsJsonFile')) { - /** - * Asserts that two JSON files are not equal. - * - * @throws ExpectationFailedException - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @see Assert::assertJsonFileNotEqualsJsonFile - */ - function assertJsonFileNotEqualsJsonFile(string $expectedFile, string $actualFile, string $message = ''): void - { - Assert::assertJsonFileNotEqualsJsonFile(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\logicalAnd')) { - function logicalAnd(mixed ...$constraints): LogicalAnd - { - return Assert::logicalAnd(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\logicalOr')) { - function logicalOr(mixed ...$constraints): LogicalOr - { - return Assert::logicalOr(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\logicalNot')) { - function logicalNot(Constraint $constraint): LogicalNot - { - return Assert::logicalNot(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\logicalXor')) { - function logicalXor(mixed ...$constraints): LogicalXor - { - return Assert::logicalXor(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\anything')) { - function anything(): IsAnything - { - return Assert::anything(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\isTrue')) { - function isTrue(): IsTrue - { - return Assert::isTrue(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\isFalse')) { - function isFalse(): IsFalse - { - return Assert::isFalse(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\isJson')) { - function isJson(): IsJson - { - return Assert::isJson(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\isNull')) { - function isNull(): IsNull - { - return Assert::isNull(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\isFinite')) { - function isFinite(): IsFinite - { - return Assert::isFinite(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\isInfinite')) { - function isInfinite(): IsInfinite - { - return Assert::isInfinite(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\isNan')) { - function isNan(): IsNan - { - return Assert::isNan(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\containsEqual')) { - function containsEqual(mixed $value): TraversableContainsEqual - { - return Assert::containsEqual(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\containsIdentical')) { - function containsIdentical(mixed $value): TraversableContainsIdentical - { - return Assert::containsIdentical(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\containsOnly')) { - function containsOnly(string $type): TraversableContainsOnly - { - return Assert::containsOnly(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\containsOnlyInstancesOf')) { - function containsOnlyInstancesOf(string $className): TraversableContainsOnly - { - return Assert::containsOnlyInstancesOf(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\arrayHasKey')) { - function arrayHasKey(mixed $key): ArrayHasKey - { - return Assert::arrayHasKey(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\isList')) { - function isList(): IsList - { - return Assert::isList(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\equalTo')) { - function equalTo(mixed $value): IsEqual - { - return Assert::equalTo(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\equalToCanonicalizing')) { - function equalToCanonicalizing(mixed $value): IsEqualCanonicalizing - { - return Assert::equalToCanonicalizing(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\equalToIgnoringCase')) { - function equalToIgnoringCase(mixed $value): IsEqualIgnoringCase - { - return Assert::equalToIgnoringCase(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\equalToWithDelta')) { - function equalToWithDelta(mixed $value, float $delta): IsEqualWithDelta - { - return Assert::equalToWithDelta(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\isEmpty')) { - function isEmpty(): IsEmpty - { - return Assert::isEmpty(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\isWritable')) { - function isWritable(): IsWritable - { - return Assert::isWritable(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\isReadable')) { - function isReadable(): IsReadable - { - return Assert::isReadable(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\directoryExists')) { - function directoryExists(): DirectoryExists - { - return Assert::directoryExists(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\fileExists')) { - function fileExists(): FileExists - { - return Assert::fileExists(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\greaterThan')) { - function greaterThan(mixed $value): GreaterThan - { - return Assert::greaterThan(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\greaterThanOrEqual')) { - function greaterThanOrEqual(mixed $value): LogicalOr - { - return Assert::greaterThanOrEqual(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\identicalTo')) { - function identicalTo(mixed $value): IsIdentical - { - return Assert::identicalTo(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\isInstanceOf')) { - function isInstanceOf(string $className): IsInstanceOf - { - return Assert::isInstanceOf(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\isType')) { - function isType(string $type): IsType - { - return Assert::isType(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\lessThan')) { - function lessThan(mixed $value): LessThan - { - return Assert::lessThan(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\lessThanOrEqual')) { - function lessThanOrEqual(mixed $value): LogicalOr - { - return Assert::lessThanOrEqual(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\matchesRegularExpression')) { - function matchesRegularExpression(string $pattern): RegularExpression - { - return Assert::matchesRegularExpression(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\matches')) { - function matches(string $string): StringMatchesFormatDescription - { - return Assert::matches(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\stringStartsWith')) { - function stringStartsWith(string $prefix): StringStartsWith - { - return Assert::stringStartsWith(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\stringContains')) { - function stringContains(string $string, bool $case = true): StringContains - { - return Assert::stringContains(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\stringEndsWith')) { - function stringEndsWith(string $suffix): StringEndsWith - { - return Assert::stringEndsWith(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\stringEqualsStringIgnoringLineEndings')) { - function stringEqualsStringIgnoringLineEndings(string $string): StringEqualsStringIgnoringLineEndings - { - return Assert::stringEqualsStringIgnoringLineEndings(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\countOf')) { - function countOf(int $count): Count - { - return Assert::countOf(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\objectEquals')) { - function objectEquals(object $object, string $method = 'equals'): ObjectEquals - { - return Assert::objectEquals(...func_get_args()); - } -} - -if (!function_exists('PHPUnit\Framework\callback')) { - /** - * @psalm-template CallbackInput of mixed - * - * @psalm-param callable(CallbackInput $callback): bool $callback - * - * @psalm-return Callback - */ - function callback(callable $callback): Callback - { - return Assert::callback($callback); - } -} - -if (!function_exists('PHPUnit\Framework\any')) { - /** - * Returns a matcher that matches when the method is executed - * zero or more times. - */ - function any(): AnyInvokedCountMatcher - { - return new AnyInvokedCountMatcher; - } -} - -if (!function_exists('PHPUnit\Framework\never')) { - /** - * Returns a matcher that matches when the method is never executed. - */ - function never(): InvokedCountMatcher - { - return new InvokedCountMatcher(0); - } -} - -if (!function_exists('PHPUnit\Framework\atLeast')) { - /** - * Returns a matcher that matches when the method is executed - * at least N times. - */ - function atLeast(int $requiredInvocations): InvokedAtLeastCountMatcher - { - return new InvokedAtLeastCountMatcher( - $requiredInvocations, - ); - } -} - -if (!function_exists('PHPUnit\Framework\atLeastOnce')) { - /** - * Returns a matcher that matches when the method is executed at least once. - */ - function atLeastOnce(): InvokedAtLeastOnceMatcher - { - return new InvokedAtLeastOnceMatcher; - } -} - -if (!function_exists('PHPUnit\Framework\once')) { - /** - * Returns a matcher that matches when the method is executed exactly once. - */ - function once(): InvokedCountMatcher - { - return new InvokedCountMatcher(1); - } -} - -if (!function_exists('PHPUnit\Framework\exactly')) { - /** - * Returns a matcher that matches when the method is executed - * exactly $count times. - */ - function exactly(int $count): InvokedCountMatcher - { - return new InvokedCountMatcher($count); - } -} - -if (!function_exists('PHPUnit\Framework\atMost')) { - /** - * Returns a matcher that matches when the method is executed - * at most N times. - */ - function atMost(int $allowedInvocations): InvokedAtMostCountMatcher - { - return new InvokedAtMostCountMatcher($allowedInvocations); - } -} - -if (!function_exists('PHPUnit\Framework\returnValue')) { - function returnValue(mixed $value): ReturnStub - { - return new ReturnStub($value); - } -} - -if (!function_exists('PHPUnit\Framework\returnValueMap')) { - function returnValueMap(array $valueMap): ReturnValueMapStub - { - return new ReturnValueMapStub($valueMap); - } -} - -if (!function_exists('PHPUnit\Framework\returnArgument')) { - function returnArgument(int $argumentIndex): ReturnArgumentStub - { - return new ReturnArgumentStub($argumentIndex); - } -} - -if (!function_exists('PHPUnit\Framework\returnCallback')) { - function returnCallback(callable $callback): ReturnCallbackStub - { - return new ReturnCallbackStub($callback); - } -} - -if (!function_exists('PHPUnit\Framework\returnSelf')) { - /** - * Returns the current object. - * - * This method is useful when mocking a fluent interface. - */ - function returnSelf(): ReturnSelfStub - { - return new ReturnSelfStub; - } -} - -if (!function_exists('PHPUnit\Framework\throwException')) { - function throwException(Throwable $exception): ExceptionStub - { - return new ExceptionStub($exception); - } -} - -if (!function_exists('PHPUnit\Framework\onConsecutiveCalls')) { - function onConsecutiveCalls(): ConsecutiveCallsStub - { - $arguments = func_get_args(); - - return new ConsecutiveCallsStub($arguments); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/Callback.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/Callback.php deleted file mode 100644 index 8a0e1b8a..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/Callback.php +++ /dev/null @@ -1,73 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\Constraint; - -use Closure; -use ReflectionFunction; - -/** - * @psalm-template CallbackInput of mixed - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final class Callback extends Constraint -{ - /** - * @psalm-var callable(CallbackInput $input): bool - */ - private readonly mixed $callback; - - /** - * @psalm-param callable(CallbackInput $input): bool $callback - */ - public function __construct(callable $callback) - { - $this->callback = $callback; - } - - /** - * Returns a string representation of the constraint. - */ - public function toString(): string - { - return 'is accepted by specified callback'; - } - - /** - * @psalm-suppress ArgumentTypeCoercion - */ - public function isVariadic(): bool - { - foreach ((new ReflectionFunction(Closure::fromCallable($this->callback)))->getParameters() as $parameter) { - if ($parameter->isVariadic()) { - return true; - } - } - - return false; - } - - /** - * Evaluates the constraint for parameter $value. Returns true if the - * constraint is met, false otherwise. - * - * @psalm-param CallbackInput $other - * - * @psalm-suppress InvalidArgument - */ - protected function matches(mixed $other): bool - { - if ($this->isVariadic()) { - return ($this->callback)(...$other); - } - - return ($this->callback)($other); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/Constraint.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/Constraint.php deleted file mode 100644 index 1fead9ad..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/Constraint.php +++ /dev/null @@ -1,264 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\Constraint; - -use function gettype; -use function sprintf; -use function strtolower; -use Countable; -use PHPUnit\Framework\ExpectationFailedException; -use PHPUnit\Framework\SelfDescribing; -use PHPUnit\Util\Exporter; -use SebastianBergmann\Comparator\ComparisonFailure; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -abstract class Constraint implements Countable, SelfDescribing -{ - /** - * Evaluates the constraint for parameter $other. - * - * If $returnResult is set to false (the default), an exception is thrown - * in case of a failure. null is returned otherwise. - * - * If $returnResult is true, the result of the evaluation is returned as - * a boolean value instead: true in case of success, false in case of a - * failure. - * - * @throws ExpectationFailedException - */ - public function evaluate(mixed $other, string $description = '', bool $returnResult = false): ?bool - { - $success = false; - - if ($this->matches($other)) { - $success = true; - } - - if ($returnResult) { - return $success; - } - - if (!$success) { - $this->fail($other, $description); - } - - return null; - } - - /** - * Counts the number of constraint elements. - */ - public function count(): int - { - return 1; - } - - /** - * @deprecated - */ - protected function exporter(): \SebastianBergmann\Exporter\Exporter - { - return new \SebastianBergmann\Exporter\Exporter; - } - - /** - * Evaluates the constraint for parameter $other. Returns true if the - * constraint is met, false otherwise. - * - * This method can be overridden to implement the evaluation algorithm. - */ - protected function matches(mixed $other): bool - { - return false; - } - - /** - * Throws an exception for the given compared value and test description. - * - * @throws ExpectationFailedException - */ - protected function fail(mixed $other, string $description, ?ComparisonFailure $comparisonFailure = null): never - { - $failureDescription = sprintf( - 'Failed asserting that %s.', - $this->failureDescription($other), - ); - - $additionalFailureDescription = $this->additionalFailureDescription($other); - - if ($additionalFailureDescription) { - $failureDescription .= "\n" . $additionalFailureDescription; - } - - if (!empty($description)) { - $failureDescription = $description . "\n" . $failureDescription; - } - - throw new ExpectationFailedException( - $failureDescription, - $comparisonFailure, - ); - } - - /** - * Return additional failure description where needed. - * - * The function can be overridden to provide additional failure - * information like a diff - */ - protected function additionalFailureDescription(mixed $other): string - { - return ''; - } - - /** - * Returns the description of the failure. - * - * The beginning of failure messages is "Failed asserting that" in most - * cases. This method should return the second part of that sentence. - * - * To provide additional failure information additionalFailureDescription - * can be used. - */ - protected function failureDescription(mixed $other): string - { - return Exporter::export($other, true) . ' ' . $this->toString(true); - } - - /** - * Returns a custom string representation of the constraint object when it - * appears in context of an $operator expression. - * - * The purpose of this method is to provide meaningful descriptive string - * in context of operators such as LogicalNot. Native PHPUnit constraints - * are supported out of the box by LogicalNot, but externally developed - * ones had no way to provide correct strings in this context. - * - * The method shall return empty string, when it does not handle - * customization by itself. - */ - protected function toStringInContext(Operator $operator, mixed $role): string - { - return ''; - } - - /** - * Returns the description of the failure when this constraint appears in - * context of an $operator expression. - * - * The purpose of this method is to provide meaningful failure description - * in context of operators such as LogicalNot. Native PHPUnit constraints - * are supported out of the box by LogicalNot, but externally developed - * ones had no way to provide correct messages in this context. - * - * The method shall return empty string, when it does not handle - * customization by itself. - */ - protected function failureDescriptionInContext(Operator $operator, mixed $role, mixed $other): string - { - $string = $this->toStringInContext($operator, $role); - - if ($string === '') { - return ''; - } - - return Exporter::export($other, true) . ' ' . $string; - } - - /** - * Reduces the sub-expression starting at $this by skipping degenerate - * sub-expression and returns first descendant constraint that starts - * a non-reducible sub-expression. - * - * Returns $this for terminal constraints and for operators that start - * non-reducible sub-expression, or the nearest descendant of $this that - * starts a non-reducible sub-expression. - * - * A constraint expression may be modelled as a tree with non-terminal - * nodes (operators) and terminal nodes. For example: - * - * LogicalOr (operator, non-terminal) - * + LogicalAnd (operator, non-terminal) - * | + IsType('int') (terminal) - * | + GreaterThan(10) (terminal) - * + LogicalNot (operator, non-terminal) - * + IsType('array') (terminal) - * - * A degenerate sub-expression is a part of the tree, that effectively does - * not contribute to the evaluation of the expression it appears in. An example - * of degenerate sub-expression is a BinaryOperator constructed with single - * operand or nested BinaryOperators, each with single operand. An - * expression involving a degenerate sub-expression is equivalent to a - * reduced expression with the degenerate sub-expression removed, for example - * - * LogicalAnd (operator) - * + LogicalOr (degenerate operator) - * | + LogicalAnd (degenerate operator) - * | + IsType('int') (terminal) - * + GreaterThan(10) (terminal) - * - * is equivalent to - * - * LogicalAnd (operator) - * + IsType('int') (terminal) - * + GreaterThan(10) (terminal) - * - * because the subexpression - * - * + LogicalOr - * + LogicalAnd - * + - - * - * is degenerate. Calling reduce() on the LogicalOr object above, as well - * as on LogicalAnd, shall return the IsType('int') instance. - * - * Other specific reductions can be implemented, for example cascade of - * LogicalNot operators - * - * + LogicalNot - * + LogicalNot - * +LogicalNot - * + IsTrue - * - * can be reduced to - * - * LogicalNot - * + IsTrue - */ - protected function reduce(): self - { - return $this; - } - - /** - * @psalm-return non-empty-string - */ - protected function valueToTypeStringFragment(mixed $value): string - { - $type = strtolower(gettype($value)); - - if ($type === 'double') { - $type = 'float'; - } - - if ($type === 'resource (closed)') { - $type = 'closed resource'; - } - - return match ($type) { - 'array', 'integer', 'object' => 'an ' . $type . ' ', - 'boolean', 'closed resource', 'float', 'resource', 'string' => 'a ' . $type . ' ', - 'null' => 'null ', - default => 'a value of ' . $type . ' ', - }; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/Exception.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/Exception.php deleted file mode 100644 index 3bbae762..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/Exception.php +++ /dev/null @@ -1,81 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\Constraint; - -use function sprintf; -use PHPUnit\Util\Filter; -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Exception extends Constraint -{ - private readonly string $className; - - public function __construct(string $className) - { - $this->className = $className; - } - - /** - * Returns a string representation of the constraint. - */ - public function toString(): string - { - return sprintf( - 'exception of type "%s"', - $this->className, - ); - } - - /** - * Evaluates the constraint for parameter $other. Returns true if the - * constraint is met, false otherwise. - */ - protected function matches(mixed $other): bool - { - return $other instanceof $this->className; - } - - /** - * Returns the description of the failure. - * - * The beginning of failure messages is "Failed asserting that" in most - * cases. This method should return the second part of that sentence. - * - * @throws \PHPUnit\Framework\Exception - */ - protected function failureDescription(mixed $other): string - { - if ($other === null) { - return sprintf( - 'exception of type "%s" is thrown', - $this->className, - ); - } - - $message = ''; - - if ($other instanceof Throwable) { - $message = '. Message was: "' . $other->getMessage() . '" at' - . "\n" . Filter::getFilteredStacktrace($other); - } - - return sprintf( - 'exception of type "%s" matches expected exception "%s"%s', - $other::class, - $this->className, - $message, - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionCode.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionCode.php deleted file mode 100644 index 338588ee..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionCode.php +++ /dev/null @@ -1,57 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\Constraint; - -use function sprintf; -use PHPUnit\Util\Exporter; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ExceptionCode extends Constraint -{ - private readonly int|string $expectedCode; - - public function __construct(int|string $expected) - { - $this->expectedCode = $expected; - } - - public function toString(): string - { - return 'exception code is ' . $this->expectedCode; - } - - /** - * Evaluates the constraint for parameter $other. Returns true if the - * constraint is met, false otherwise. - */ - protected function matches(mixed $other): bool - { - return (string) $other === (string) $this->expectedCode; - } - - /** - * Returns the description of the failure. - * - * The beginning of failure messages is "Failed asserting that" in most - * cases. This method should return the second part of that sentence. - */ - protected function failureDescription(mixed $other): string - { - return sprintf( - '%s is equal to expected exception code %s', - Exporter::export($other, true), - Exporter::export($this->expectedCode, true), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageIsOrContains.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageIsOrContains.php deleted file mode 100644 index ae920903..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageIsOrContains.php +++ /dev/null @@ -1,69 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\Constraint; - -use function sprintf; -use function str_contains; -use PHPUnit\Util\Exporter; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ExceptionMessageIsOrContains extends Constraint -{ - private readonly string $expectedMessage; - - public function __construct(string $expectedMessage) - { - $this->expectedMessage = $expectedMessage; - } - - public function toString(): string - { - if ($this->expectedMessage === '') { - return 'exception message is empty'; - } - - return 'exception message contains ' . Exporter::export($this->expectedMessage); - } - - protected function matches(mixed $other): bool - { - if ($this->expectedMessage === '') { - return $other === ''; - } - - return str_contains((string) $other, $this->expectedMessage); - } - - /** - * Returns the description of the failure. - * - * The beginning of failure messages is "Failed asserting that" in most - * cases. This method should return the second part of that sentence. - */ - protected function failureDescription(mixed $other): string - { - if ($this->expectedMessage === '') { - return sprintf( - "exception message is empty but is '%s'", - $other, - ); - } - - return sprintf( - "exception message '%s' contains '%s'", - $other, - $this->expectedMessage, - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageMatchesRegularExpression.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageMatchesRegularExpression.php deleted file mode 100644 index 611af037..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageMatchesRegularExpression.php +++ /dev/null @@ -1,73 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\Constraint; - -use function preg_match; -use function sprintf; -use Exception; -use PHPUnit\Util\Exporter; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ExceptionMessageMatchesRegularExpression extends Constraint -{ - private readonly string $regularExpression; - - public function __construct(string $regularExpression) - { - $this->regularExpression = $regularExpression; - } - - public function toString(): string - { - return 'exception message matches ' . Exporter::export($this->regularExpression); - } - - /** - * Evaluates the constraint for parameter $other. Returns true if the - * constraint is met, false otherwise. - * - * @throws \PHPUnit\Framework\Exception - * @throws Exception - */ - protected function matches(mixed $other): bool - { - $match = @preg_match($this->regularExpression, (string) $other); - - if ($match === false) { - throw new \PHPUnit\Framework\Exception( - sprintf( - 'Invalid expected exception message regular expression given: %s', - $this->regularExpression, - ), - ); - } - - return $match === 1; - } - - /** - * Returns the description of the failure. - * - * The beginning of failure messages is "Failed asserting that" in most - * cases. This method should return the second part of that sentence. - */ - protected function failureDescription(mixed $other): string - { - return sprintf( - "exception message '%s' matches '%s'", - $other, - $this->regularExpression, - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php deleted file mode 100644 index dc3be3b4..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php +++ /dev/null @@ -1,97 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\Constraint; - -use function json_decode; -use function sprintf; -use PHPUnit\Framework\ExpectationFailedException; -use PHPUnit\Util\InvalidJsonException; -use PHPUnit\Util\Json; -use SebastianBergmann\Comparator\ComparisonFailure; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final class JsonMatches extends Constraint -{ - private readonly string $value; - - public function __construct(string $value) - { - $this->value = $value; - } - - /** - * Returns a string representation of the object. - */ - public function toString(): string - { - return sprintf( - 'matches JSON string "%s"', - $this->value, - ); - } - - /** - * Evaluates the constraint for parameter $other. Returns true if the - * constraint is met, false otherwise. - * - * This method can be overridden to implement the evaluation algorithm. - */ - protected function matches(mixed $other): bool - { - [$error, $recodedOther] = Json::canonicalize($other); - - if ($error) { - return false; - } - - [$error, $recodedValue] = Json::canonicalize($this->value); - - if ($error) { - return false; - } - - return $recodedOther == $recodedValue; - } - - /** - * Throws an exception for the given compared value and test description. - * - * @throws ExpectationFailedException - * @throws InvalidJsonException - */ - protected function fail(mixed $other, string $description, ?ComparisonFailure $comparisonFailure = null): never - { - if ($comparisonFailure === null) { - [$error, $recodedOther] = Json::canonicalize($other); - - if ($error) { - parent::fail($other, $description); - } - - [$error, $recodedValue] = Json::canonicalize($this->value); - - if ($error) { - parent::fail($other, $description); - } - - $comparisonFailure = new ComparisonFailure( - json_decode($this->value), - json_decode($other), - Json::prettify($recodedValue), - Json::prettify($recodedOther), - 'Failed asserting that two json values are equal.', - ); - } - - parent::fail($other, $description, $comparisonFailure); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/UnaryOperator.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/UnaryOperator.php deleted file mode 100644 index d6ac6e3f..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/UnaryOperator.php +++ /dev/null @@ -1,128 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\Constraint; - -use function count; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -abstract class UnaryOperator extends Operator -{ - private readonly Constraint $constraint; - - public function __construct(mixed $constraint) - { - $this->constraint = $this->checkConstraint($constraint); - } - - /** - * Returns the number of operands (constraints). - */ - public function arity(): int - { - return 1; - } - - /** - * Returns a string representation of the constraint. - */ - public function toString(): string - { - $reduced = $this->reduce(); - - if ($reduced !== $this) { - return $reduced->toString(); - } - - $constraint = $this->constraint->reduce(); - - if ($this->constraintNeedsParentheses($constraint)) { - return $this->operator() . '( ' . $constraint->toString() . ' )'; - } - - $string = $constraint->toStringInContext($this, 0); - - if ($string === '') { - return $this->transformString($constraint->toString()); - } - - return $string; - } - - /** - * Counts the number of constraint elements. - */ - public function count(): int - { - return count($this->constraint); - } - - /** - * Returns the description of the failure. - * - * The beginning of failure messages is "Failed asserting that" in most - * cases. This method should return the second part of that sentence. - */ - protected function failureDescription(mixed $other): string - { - $reduced = $this->reduce(); - - if ($reduced !== $this) { - return $reduced->failureDescription($other); - } - - $constraint = $this->constraint->reduce(); - - if ($this->constraintNeedsParentheses($constraint)) { - return $this->operator() . '( ' . $constraint->failureDescription($other) . ' )'; - } - - $string = $constraint->failureDescriptionInContext($this, 0, $other); - - if ($string === '') { - return $this->transformString($constraint->failureDescription($other)); - } - - return $string; - } - - /** - * Transforms string returned by the member constraint's toString() or - * failureDescription() such that it reflects constraint's participation in - * this expression. - * - * The method may be overwritten in a subclass to apply default - * transformation in case the operand constraint does not provide its own - * custom strings via toStringInContext() or failureDescriptionInContext(). - */ - protected function transformString(string $string): string - { - return $string; - } - - /** - * Provides access to $this->constraint for subclasses. - */ - final protected function constraint(): Constraint - { - return $this->constraint; - } - - /** - * Returns true if the $constraint needs to be wrapped with parentheses. - */ - protected function constraintNeedsParentheses(Constraint $constraint): bool - { - $constraint = $constraint->reduce(); - - return $constraint instanceof self || parent::constraintNeedsParentheses($constraint); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/String/IsJson.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/String/IsJson.php deleted file mode 100644 index 79b2c704..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/String/IsJson.php +++ /dev/null @@ -1,91 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\Constraint; - -use const JSON_ERROR_CTRL_CHAR; -use const JSON_ERROR_DEPTH; -use const JSON_ERROR_NONE; -use const JSON_ERROR_STATE_MISMATCH; -use const JSON_ERROR_SYNTAX; -use const JSON_ERROR_UTF8; -use function is_string; -use function json_decode; -use function json_last_error; -use function sprintf; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final class IsJson extends Constraint -{ - /** - * Returns a string representation of the constraint. - */ - public function toString(): string - { - return 'is valid JSON'; - } - - /** - * Evaluates the constraint for parameter $other. Returns true if the - * constraint is met, false otherwise. - */ - protected function matches(mixed $other): bool - { - if (!is_string($other) || $other === '') { - return false; - } - - json_decode($other); - - if (json_last_error()) { - return false; - } - - return true; - } - - /** - * Returns the description of the failure. - * - * The beginning of failure messages is "Failed asserting that" in most - * cases. This method should return the second part of that sentence. - */ - protected function failureDescription(mixed $other): string - { - if (!is_string($other)) { - return $this->valueToTypeStringFragment($other) . 'is valid JSON'; - } - - if ($other === '') { - return 'an empty string is valid JSON'; - } - - return sprintf( - 'a string is valid JSON (%s)', - $this->determineJsonError($other), - ); - } - - private function determineJsonError(string $json): string - { - json_decode($json); - - return match (json_last_error()) { - JSON_ERROR_NONE => '', - JSON_ERROR_DEPTH => 'Maximum stack depth exceeded', - JSON_ERROR_STATE_MISMATCH => 'Underflow or the modes mismatch', - JSON_ERROR_CTRL_CHAR => 'Unexpected control character found', - JSON_ERROR_SYNTAX => 'Syntax error, malformed JSON', - JSON_ERROR_UTF8 => 'Malformed UTF-8 characters, possibly incorrectly encoded', - default => 'Unknown error', - }; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringMatchesFormatDescription.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringMatchesFormatDescription.php deleted file mode 100644 index f9659e2e..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringMatchesFormatDescription.php +++ /dev/null @@ -1,117 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\Constraint; - -use const DIRECTORY_SEPARATOR; -use const PHP_EOL; -use function explode; -use function implode; -use function preg_match; -use function preg_quote; -use function preg_replace; -use function strtr; -use SebastianBergmann\Diff\Differ; -use SebastianBergmann\Diff\Output\UnifiedDiffOutputBuilder; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final class StringMatchesFormatDescription extends Constraint -{ - private readonly string $formatDescription; - - public function __construct(string $formatDescription) - { - $this->formatDescription = $formatDescription; - } - - public function toString(): string - { - return 'matches format description:' . PHP_EOL . $this->formatDescription; - } - - /** - * Evaluates the constraint for parameter $other. Returns true if the - * constraint is met, false otherwise. - */ - protected function matches(mixed $other): bool - { - $other = $this->convertNewlines($other); - - $matches = preg_match( - $this->regularExpressionForFormatDescription( - $this->convertNewlines($this->formatDescription), - ), - $other, - ); - - return $matches > 0; - } - - protected function failureDescription(mixed $other): string - { - return 'string matches format description'; - } - - protected function additionalFailureDescription(mixed $other): string - { - $from = explode("\n", $this->formatDescription); - $to = explode("\n", $this->convertNewlines($other)); - - foreach ($from as $index => $line) { - if (isset($to[$index]) && $line !== $to[$index]) { - $line = $this->regularExpressionForFormatDescription($line); - - if (preg_match($line, $to[$index]) > 0) { - $from[$index] = $to[$index]; - } - } - } - - $from = implode("\n", $from); - $to = implode("\n", $to); - - return $this->differ()->diff($from, $to); - } - - private function regularExpressionForFormatDescription(string $string): string - { - $string = strtr( - preg_quote($string, '/'), - [ - '%%' => '%', - '%e' => preg_quote(DIRECTORY_SEPARATOR, '/'), - '%s' => '[^\r\n]+', - '%S' => '[^\r\n]*', - '%a' => '.+?', - '%A' => '.*?', - '%w' => '\s*', - '%i' => '[+-]?\d+', - '%d' => '\d+', - '%x' => '[0-9a-fA-F]+', - '%f' => '[+-]?(?:\d+|(?=\.\d))(?:\.\d+)?(?:[Ee][+-]?\d+)?', - '%c' => '.', - '%0' => '\x00', - ], - ); - - return '/^' . $string . '$/s'; - } - - private function convertNewlines(string $text): string - { - return preg_replace('/\r\n/', "\n", $text); - } - - private function differ(): Differ - { - return new Differ(new UnifiedDiffOutputBuilder("--- Expected\n+++ Actual\n")); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/ArrayHasKey.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/ArrayHasKey.php deleted file mode 100644 index db8251e1..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/ArrayHasKey.php +++ /dev/null @@ -1,64 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\Constraint; - -use function array_key_exists; -use function is_array; -use ArrayAccess; -use PHPUnit\Util\Exporter; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final class ArrayHasKey extends Constraint -{ - private readonly mixed $key; - - public function __construct(mixed $key) - { - $this->key = $key; - } - - /** - * Returns a string representation of the constraint. - */ - public function toString(): string - { - return 'has the key ' . Exporter::export($this->key); - } - - /** - * Evaluates the constraint for parameter $other. Returns true if the - * constraint is met, false otherwise. - */ - protected function matches(mixed $other): bool - { - if (is_array($other)) { - return array_key_exists($this->key, $other); - } - - if ($other instanceof ArrayAccess) { - return $other->offsetExists($this->key); - } - - return false; - } - - /** - * Returns the description of the failure. - * - * The beginning of failure messages is "Failed asserting that" in most - * cases. This method should return the second part of that sentence. - */ - protected function failureDescription(mixed $other): string - { - return 'an array ' . $this->toString(true); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsOnly.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsOnly.php deleted file mode 100644 index 274d76ff..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsOnly.php +++ /dev/null @@ -1,75 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\Constraint; - -use PHPUnit\Framework\Exception; -use PHPUnit\Framework\ExpectationFailedException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final class TraversableContainsOnly extends Constraint -{ - private Constraint $constraint; - private readonly string $type; - - /** - * @throws Exception - */ - public function __construct(string $type, bool $isNativeType = true) - { - if ($isNativeType) { - $this->constraint = new IsType($type); - } else { - $this->constraint = new IsInstanceOf($type); - } - - $this->type = $type; - } - - /** - * Evaluates the constraint for parameter $other. - * - * If $returnResult is set to false (the default), an exception is thrown - * in case of a failure. null is returned otherwise. - * - * If $returnResult is true, the result of the evaluation is returned as - * a boolean value instead: true in case of success, false in case of a - * failure. - * - * @throws ExpectationFailedException - */ - public function evaluate(mixed $other, string $description = '', bool $returnResult = false): bool - { - $success = true; - - foreach ($other as $item) { - if (!$this->constraint->evaluate($item, '', true)) { - $success = false; - - break; - } - } - - if (!$success && !$returnResult) { - $this->fail($other, $description); - } - - return $success; - } - - /** - * Returns a string representation of the constraint. - */ - public function toString(): string - { - return 'contains only values of type "' . $this->type . '"'; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/DataProviderTestSuite.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/DataProviderTestSuite.php deleted file mode 100644 index e506cec4..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/DataProviderTestSuite.php +++ /dev/null @@ -1,76 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -use function explode; -use PHPUnit\Framework\TestSize\TestSize; -use PHPUnit\Metadata\Api\Groups; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class DataProviderTestSuite extends TestSuite -{ - /** - * @psalm-var list - */ - private array $dependencies = []; - private ?array $providedTests = null; - - /** - * @psalm-param list $dependencies - */ - public function setDependencies(array $dependencies): void - { - $this->dependencies = $dependencies; - - foreach ($this->tests() as $test) { - if (!$test instanceof TestCase) { - continue; - } - - $test->setDependencies($dependencies); - } - } - - /** - * @psalm-return list - */ - public function provides(): array - { - if ($this->providedTests === null) { - $this->providedTests = [new ExecutionOrderDependency($this->name())]; - } - - return $this->providedTests; - } - - /** - * @psalm-return list - */ - public function requires(): array - { - // A DataProviderTestSuite does not have to traverse its child tests - // as these are inherited and cannot reference dataProvider rows directly - return $this->dependencies; - } - - /** - * Returns the size of each test created using the data provider(s). - */ - public function size(): TestSize - { - [$className, $methodName] = explode('::', $this->name()); - - return (new Groups)->size($className, $methodName); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/AssertionFailedError.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/AssertionFailedError.php deleted file mode 100644 index 6bd59c4a..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/AssertionFailedError.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -class AssertionFailedError extends Exception implements SelfDescribing -{ - /** - * Wrapper for getMessage() which is declared as final. - */ - public function toString(): string - { - return $this->getMessage(); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/CodeCoverageException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/CodeCoverageException.php deleted file mode 100644 index 41169ff1..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/CodeCoverageException.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -class CodeCoverageException extends Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/EmptyStringException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/EmptyStringException.php deleted file mode 100644 index f5980cd7..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/EmptyStringException.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class EmptyStringException extends InvalidArgumentException -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/Exception.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/Exception.php deleted file mode 100644 index 4c2e2957..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/Exception.php +++ /dev/null @@ -1,82 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -use function array_keys; -use function get_object_vars; -use function is_int; -use function sprintf; -use RuntimeException; -use Throwable; - -/** - * Base class for all PHPUnit Framework exceptions. - * - * Ensures that exceptions thrown during a test run do not leave stray - * references behind. - * - * Every Exception contains a stack trace. Each stack frame contains the 'args' - * of the called function. The function arguments can contain references to - * instantiated objects. The references prevent the objects from being - * destructed (until test results are eventually printed), so memory cannot be - * freed up. - * - * With enabled process isolation, test results are serialized in the child - * process and unserialized in the parent process. The stack trace of Exceptions - * may contain objects that cannot be serialized or unserialized (e.g., PDO - * connections). Unserializing user-space objects from the child process into - * the parent would break the intended encapsulation of process isolation. - * - * @see http://fabien.potencier.org/article/9/php-serialization-stack-traces-and-exceptions - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -class Exception extends RuntimeException implements \PHPUnit\Exception -{ - protected array $serializableTrace; - - public function __construct(string $message = '', int|string $code = 0, ?Throwable $previous = null) - { - /** - * @see https://github.com/sebastianbergmann/phpunit/issues/5965 - */ - if (!is_int($code)) { - $message .= sprintf( - ' (exception code: %s)', - $code, - ); - - $code = 0; - } - - parent::__construct($message, $code, $previous); - - $this->serializableTrace = $this->getTrace(); - - foreach (array_keys($this->serializableTrace) as $key) { - unset($this->serializableTrace[$key]['args']); - } - } - - public function __sleep(): array - { - return array_keys(get_object_vars($this)); - } - - /** - * Returns the serializable trace (without 'args'). - */ - public function getSerializableTrace(): array - { - return $this->serializableTrace; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/ExpectationFailedException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/ExpectationFailedException.php deleted file mode 100644 index bff863f9..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/ExpectationFailedException.php +++ /dev/null @@ -1,41 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -use Exception; -use SebastianBergmann\Comparator\ComparisonFailure; - -/** - * Exception for expectations which failed their check. - * - * The exception contains the error message and optionally a - * SebastianBergmann\Comparator\ComparisonFailure which is used to - * generate diff output of the failed expectations. - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ExpectationFailedException extends AssertionFailedError -{ - protected ?ComparisonFailure $comparisonFailure = null; - - public function __construct(string $message, ?ComparisonFailure $comparisonFailure = null, ?Exception $previous = null) - { - $this->comparisonFailure = $comparisonFailure; - - parent::__construct($message, 0, $previous); - } - - public function getComparisonFailure(): ?ComparisonFailure - { - return $this->comparisonFailure; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/GeneratorNotSupportedException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/GeneratorNotSupportedException.php deleted file mode 100644 index b3b17953..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/GeneratorNotSupportedException.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -use function sprintf; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class GeneratorNotSupportedException extends InvalidArgumentException -{ - public static function fromParameterName(string $parameterName): self - { - return new self( - sprintf( - 'Passing an argument of type Generator for the %s parameter is not supported', - $parameterName, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/Incomplete/IncompleteTest.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/Incomplete/IncompleteTest.php deleted file mode 100644 index 4492ef22..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/Incomplete/IncompleteTest.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -interface IncompleteTest extends Throwable -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/Incomplete/IncompleteTestError.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/Incomplete/IncompleteTestError.php deleted file mode 100644 index a45564da..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/Incomplete/IncompleteTestError.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class IncompleteTestError extends AssertionFailedError implements IncompleteTest -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/InvalidArgumentException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/InvalidArgumentException.php deleted file mode 100644 index 700abf03..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/InvalidArgumentException.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -abstract class InvalidArgumentException extends Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/InvalidCoversTargetException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/InvalidCoversTargetException.php deleted file mode 100644 index c6300d9e..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/InvalidCoversTargetException.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class InvalidCoversTargetException extends CodeCoverageException -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/InvalidDataProviderException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/InvalidDataProviderException.php deleted file mode 100644 index a29f4bde..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/InvalidDataProviderException.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class InvalidDataProviderException extends Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/InvalidDependencyException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/InvalidDependencyException.php deleted file mode 100644 index 8a636fd4..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/InvalidDependencyException.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class InvalidDependencyException extends AssertionFailedError implements SkippedTest -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/NoChildTestSuiteException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/NoChildTestSuiteException.php deleted file mode 100644 index e59df81d..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/NoChildTestSuiteException.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class NoChildTestSuiteException extends Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ActualValueIsNotAnObjectException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ActualValueIsNotAnObjectException.php deleted file mode 100644 index 258b940a..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ActualValueIsNotAnObjectException.php +++ /dev/null @@ -1,25 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ActualValueIsNotAnObjectException extends Exception -{ - public function __construct() - { - parent::__construct( - 'Actual value is not an object', - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotAcceptParameterTypeException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotAcceptParameterTypeException.php deleted file mode 100644 index 74d00a17..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotAcceptParameterTypeException.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -use function sprintf; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ComparisonMethodDoesNotAcceptParameterTypeException extends Exception -{ - public function __construct(string $className, string $methodName, string $type) - { - parent::__construct( - sprintf( - '%s is not an accepted argument type for comparison method %s::%s().', - $type, - $className, - $methodName, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareBoolReturnTypeException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareBoolReturnTypeException.php deleted file mode 100644 index 62dc7e8c..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareBoolReturnTypeException.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -use function sprintf; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ComparisonMethodDoesNotDeclareBoolReturnTypeException extends Exception -{ - public function __construct(string $className, string $methodName) - { - parent::__construct( - sprintf( - 'Comparison method %s::%s() does not declare bool return type.', - $className, - $methodName, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareExactlyOneParameterException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareExactlyOneParameterException.php deleted file mode 100644 index d5760744..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareExactlyOneParameterException.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -use function sprintf; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ComparisonMethodDoesNotDeclareExactlyOneParameterException extends Exception -{ - public function __construct(string $className, string $methodName) - { - parent::__construct( - sprintf( - 'Comparison method %s::%s() does not declare exactly one parameter.', - $className, - $methodName, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareParameterTypeException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareParameterTypeException.php deleted file mode 100644 index 65718682..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareParameterTypeException.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -use function sprintf; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ComparisonMethodDoesNotDeclareParameterTypeException extends Exception -{ - public function __construct(string $className, string $methodName) - { - parent::__construct( - sprintf( - 'Parameter of comparison method %s::%s() does not have a declared type.', - $className, - $methodName, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotExistException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotExistException.php deleted file mode 100644 index 94590b51..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotExistException.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -use function sprintf; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ComparisonMethodDoesNotExistException extends Exception -{ - public function __construct(string $className, string $methodName) - { - parent::__construct( - sprintf( - 'Comparison method %s::%s() does not exist.', - $className, - $methodName, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/PhptAssertionFailedError.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/PhptAssertionFailedError.php deleted file mode 100644 index 73f602aa..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/PhptAssertionFailedError.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -/** - * @psalm-immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class PhptAssertionFailedError extends AssertionFailedError -{ - private readonly string $syntheticFile; - private readonly int $syntheticLine; - private readonly array $syntheticTrace; - private readonly string $diff; - - public function __construct(string $message, int $code, string $file, int $line, array $trace, string $diff) - { - parent::__construct($message, $code); - - $this->syntheticFile = $file; - $this->syntheticLine = $line; - $this->syntheticTrace = $trace; - $this->diff = $diff; - } - - public function syntheticFile(): string - { - return $this->syntheticFile; - } - - public function syntheticLine(): int - { - return $this->syntheticLine; - } - - public function syntheticTrace(): array - { - return $this->syntheticTrace; - } - - public function diff(): string - { - return $this->diff; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/ProcessIsolationException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/ProcessIsolationException.php deleted file mode 100644 index e59c9c60..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/ProcessIsolationException.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ProcessIsolationException extends Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/Skipped/SkippedTest.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/Skipped/SkippedTest.php deleted file mode 100644 index ab2f6749..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/Skipped/SkippedTest.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -interface SkippedTest extends Throwable -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/Skipped/SkippedTestSuiteError.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/Skipped/SkippedTestSuiteError.php deleted file mode 100644 index d3a4788b..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/Skipped/SkippedTestSuiteError.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class SkippedTestSuiteError extends AssertionFailedError implements SkippedTest -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/Skipped/SkippedWithMessageException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/Skipped/SkippedWithMessageException.php deleted file mode 100644 index d09a760a..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/Skipped/SkippedWithMessageException.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class SkippedWithMessageException extends AssertionFailedError implements SkippedTest -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/UnknownClassOrInterfaceException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/UnknownClassOrInterfaceException.php deleted file mode 100644 index 6a10f97f..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/UnknownClassOrInterfaceException.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -use function sprintf; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class UnknownClassOrInterfaceException extends InvalidArgumentException -{ - public function __construct(string $name) - { - parent::__construct( - sprintf( - 'Class or interface "%s" does not exist', - $name, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/UnknownTypeException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/UnknownTypeException.php deleted file mode 100644 index b58b695c..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Exception/UnknownTypeException.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -use function sprintf; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class UnknownTypeException extends InvalidArgumentException -{ - public function __construct(string $name) - { - parent::__construct( - sprintf( - 'Type "%s" is not known', - $name, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/ExecutionOrderDependency.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/ExecutionOrderDependency.php deleted file mode 100644 index 091628cc..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/ExecutionOrderDependency.php +++ /dev/null @@ -1,193 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -use function array_filter; -use function array_map; -use function array_values; -use function explode; -use function in_array; -use function str_contains; -use PHPUnit\Metadata\DependsOnClass; -use PHPUnit\Metadata\DependsOnMethod; -use Stringable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ExecutionOrderDependency implements Stringable -{ - private string $className = ''; - private string $methodName = ''; - private readonly bool $shallowClone; - private readonly bool $deepClone; - - public static function invalid(): self - { - return new self( - '', - '', - false, - false, - ); - } - - public static function forClass(DependsOnClass $metadata): self - { - return new self( - $metadata->className(), - 'class', - $metadata->deepClone(), - $metadata->shallowClone(), - ); - } - - public static function forMethod(DependsOnMethod $metadata): self - { - return new self( - $metadata->className(), - $metadata->methodName(), - $metadata->deepClone(), - $metadata->shallowClone(), - ); - } - - /** - * @psalm-param list $dependencies - * - * @psalm-return list - */ - public static function filterInvalid(array $dependencies): array - { - return array_values( - array_filter( - $dependencies, - static fn (self $d) => $d->isValid(), - ), - ); - } - - /** - * @psalm-param list $existing - * @psalm-param list $additional - * - * @psalm-return list - */ - public static function mergeUnique(array $existing, array $additional): array - { - $existingTargets = array_map( - static fn ($dependency) => $dependency->getTarget(), - $existing, - ); - - foreach ($additional as $dependency) { - $additionalTarget = $dependency->getTarget(); - - if (in_array($additionalTarget, $existingTargets, true)) { - continue; - } - - $existingTargets[] = $additionalTarget; - $existing[] = $dependency; - } - - return $existing; - } - - /** - * @psalm-param list $left - * @psalm-param list $right - * - * @psalm-return list - */ - public static function diff(array $left, array $right): array - { - if ($right === []) { - return $left; - } - - if ($left === []) { - return []; - } - - $diff = []; - $rightTargets = array_map( - static fn ($dependency) => $dependency->getTarget(), - $right, - ); - - foreach ($left as $dependency) { - if (in_array($dependency->getTarget(), $rightTargets, true)) { - continue; - } - - $diff[] = $dependency; - } - - return $diff; - } - - public function __construct(string $classOrCallableName, ?string $methodName = null, bool $deepClone = false, bool $shallowClone = false) - { - $this->deepClone = $deepClone; - $this->shallowClone = $shallowClone; - - if ($classOrCallableName === '') { - return; - } - - if (str_contains($classOrCallableName, '::')) { - [$this->className, $this->methodName] = explode('::', $classOrCallableName); - } else { - $this->className = $classOrCallableName; - $this->methodName = !empty($methodName) ? $methodName : 'class'; - } - } - - public function __toString(): string - { - return $this->getTarget(); - } - - public function isValid(): bool - { - // Invalid dependencies can be declared and are skipped by the runner - return $this->className !== '' && $this->methodName !== ''; - } - - public function shallowClone(): bool - { - return $this->shallowClone; - } - - public function deepClone(): bool - { - return $this->deepClone; - } - - public function targetIsClass(): bool - { - return $this->methodName === 'class'; - } - - public function getTarget(): string - { - return $this->isValid() - ? $this->className . '::' . $this->methodName - : ''; - } - - public function getTargetClassName(): string - { - return $this->className; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/ConfigurableMethod.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/ConfigurableMethod.php deleted file mode 100644 index 54d408c0..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/ConfigurableMethod.php +++ /dev/null @@ -1,83 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject; - -use SebastianBergmann\Type\Type; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ConfigurableMethod -{ - /** - * @psalm-var non-empty-string - */ - private readonly string $name; - - /** - * @psalm-var array - */ - private readonly array $defaultParameterValues; - - /** - * @psalm-var non-negative-int - */ - private readonly int $numberOfParameters; - private readonly Type $returnType; - - /** - * @psalm-param non-empty-string $name - * @psalm-param array $defaultParameterValues - * @psalm-param non-negative-int $numberOfParameters - */ - public function __construct(string $name, array $defaultParameterValues, int $numberOfParameters, Type $returnType) - { - $this->name = $name; - $this->defaultParameterValues = $defaultParameterValues; - $this->numberOfParameters = $numberOfParameters; - $this->returnType = $returnType; - } - - /** - * @psalm-return non-empty-string - */ - public function name(): string - { - return $this->name; - } - - /** - * @psalm-return array - */ - public function defaultParameterValues(): array - { - return $this->defaultParameterValues; - } - - /** - * @psalm-return non-negative-int - */ - public function numberOfParameters(): int - { - return $this->numberOfParameters; - } - - public function mayReturn(mixed $value): bool - { - return $this->returnType->isAssignable(Type::fromValue($value, false)); - } - - public function returnTypeDeclaration(): string - { - return $this->returnType->asString(); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/BadMethodCallException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/BadMethodCallException.php deleted file mode 100644 index e8ddadda..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/BadMethodCallException.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class BadMethodCallException extends \BadMethodCallException implements Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php deleted file mode 100644 index 6cb399e5..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject; - -use function sprintf; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class CannotUseOnlyMethodsException extends \PHPUnit\Framework\Exception implements Exception -{ - public function __construct(string $type, string $methodName) - { - parent::__construct( - sprintf( - 'Trying to configure method "%s" with onlyMethods(), but it does not exist in class "%s"', - $methodName, - $type, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/Exception.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/Exception.php deleted file mode 100644 index f7994f20..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/Exception.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject; - -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -interface Exception extends Throwable -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php deleted file mode 100644 index faf8a498..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject; - -use function get_debug_type; -use function sprintf; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class IncompatibleReturnValueException extends \PHPUnit\Framework\Exception implements Exception -{ - public function __construct(ConfigurableMethod $method, mixed $value) - { - parent::__construct( - sprintf( - 'Method %s may not return value of type %s, its declared return type is "%s"', - $method->name(), - get_debug_type($value), - $method->returnTypeDeclaration(), - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MatchBuilderNotFoundException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MatchBuilderNotFoundException.php deleted file mode 100644 index 8bf8967b..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MatchBuilderNotFoundException.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject; - -use function sprintf; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class MatchBuilderNotFoundException extends \PHPUnit\Framework\Exception implements Exception -{ - public function __construct(string $id) - { - parent::__construct( - sprintf( - 'No builder found for match builder identification <%s>', - $id, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MatcherAlreadyRegisteredException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MatcherAlreadyRegisteredException.php deleted file mode 100644 index de62b867..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MatcherAlreadyRegisteredException.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject; - -use function sprintf; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class MatcherAlreadyRegisteredException extends \PHPUnit\Framework\Exception implements Exception -{ - public function __construct(string $id) - { - parent::__construct( - sprintf( - 'Matcher with id <%s> is already registered', - $id, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodCannotBeConfiguredException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodCannotBeConfiguredException.php deleted file mode 100644 index 4d39b5d9..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodCannotBeConfiguredException.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject; - -use function sprintf; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class MethodCannotBeConfiguredException extends \PHPUnit\Framework\Exception implements Exception -{ - public function __construct(string $method) - { - parent::__construct( - sprintf( - 'Trying to configure method "%s" which cannot be configured because it does not exist, has not been specified, is final, or is static', - $method, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameAlreadyConfiguredException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameAlreadyConfiguredException.php deleted file mode 100644 index e4a37592..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameAlreadyConfiguredException.php +++ /dev/null @@ -1,23 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class MethodNameAlreadyConfiguredException extends \PHPUnit\Framework\Exception implements Exception -{ - public function __construct() - { - parent::__construct('Method name is already configured'); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameNotConfiguredException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameNotConfiguredException.php deleted file mode 100644 index 25c11341..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameNotConfiguredException.php +++ /dev/null @@ -1,23 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class MethodNameNotConfiguredException extends \PHPUnit\Framework\Exception implements Exception -{ - public function __construct() - { - parent::__construct('Method name is not configured'); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodParametersAlreadyConfiguredException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodParametersAlreadyConfiguredException.php deleted file mode 100644 index fba96cf4..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodParametersAlreadyConfiguredException.php +++ /dev/null @@ -1,23 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class MethodParametersAlreadyConfiguredException extends \PHPUnit\Framework\Exception implements Exception -{ - public function __construct() - { - parent::__construct('Method parameters already configured'); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php deleted file mode 100644 index cf193f10..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject; - -use function sprintf; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ReturnValueNotConfiguredException extends \PHPUnit\Framework\Exception implements Exception -{ - public function __construct(Invocation $invocation) - { - parent::__construct( - sprintf( - 'No return value is configured for %s::%s() and return value generation is disabled', - $invocation->className(), - $invocation->methodName(), - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/RuntimeException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/RuntimeException.php deleted file mode 100644 index b99a903e..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/RuntimeException.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class RuntimeException extends \RuntimeException implements Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ClassIsEnumerationException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ClassIsEnumerationException.php deleted file mode 100644 index e2cde18b..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ClassIsEnumerationException.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Generator; - -use function sprintf; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ClassIsEnumerationException extends \PHPUnit\Framework\Exception implements Exception -{ - public function __construct(string $className) - { - parent::__construct( - sprintf( - 'Class "%s" is an enumeration and cannot be doubled', - $className, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ClassIsFinalException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ClassIsFinalException.php deleted file mode 100644 index f10100b9..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ClassIsFinalException.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Generator; - -use function sprintf; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ClassIsFinalException extends \PHPUnit\Framework\Exception implements Exception -{ - public function __construct(string $className) - { - parent::__construct( - sprintf( - 'Class "%s" is declared "final" and cannot be doubled', - $className, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ClassIsReadonlyException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ClassIsReadonlyException.php deleted file mode 100644 index 2b549c7a..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ClassIsReadonlyException.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Generator; - -use function sprintf; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ClassIsReadonlyException extends \PHPUnit\Framework\Exception implements Exception -{ - public function __construct(string $className) - { - parent::__construct( - sprintf( - 'Class "%s" is declared "readonly" and cannot be doubled', - $className, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/DuplicateMethodException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/DuplicateMethodException.php deleted file mode 100644 index f9a0a766..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/DuplicateMethodException.php +++ /dev/null @@ -1,37 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Generator; - -use function array_diff_assoc; -use function array_unique; -use function implode; -use function sprintf; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class DuplicateMethodException extends \PHPUnit\Framework\Exception implements Exception -{ - /** - * @psalm-param list $methods - */ - public function __construct(array $methods) - { - parent::__construct( - sprintf( - 'Cannot double using a method list that contains duplicates: "%s" (duplicate: "%s")', - implode(', ', $methods), - implode(', ', array_unique(array_diff_assoc($methods, array_unique($methods)))), - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/Exception.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/Exception.php deleted file mode 100644 index 8d62606f..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/Exception.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Generator; - -use PHPUnit\Framework\MockObject\Exception as BaseException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This interface is not covered by the backward compatibility promise for PHPUnit - */ -interface Exception extends BaseException -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/InvalidMethodNameException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/InvalidMethodNameException.php deleted file mode 100644 index 32296ce3..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/InvalidMethodNameException.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Generator; - -use function sprintf; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class InvalidMethodNameException extends \PHPUnit\Framework\Exception implements Exception -{ - public function __construct(string $method) - { - parent::__construct( - sprintf( - 'Cannot double method with invalid name "%s"', - $method, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/OriginalConstructorInvocationRequiredException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/OriginalConstructorInvocationRequiredException.php deleted file mode 100644 index b284d94d..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/OriginalConstructorInvocationRequiredException.php +++ /dev/null @@ -1,23 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Generator; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class OriginalConstructorInvocationRequiredException extends \PHPUnit\Framework\Exception implements Exception -{ - public function __construct() - { - parent::__construct('Proxying to original methods requires invoking the original constructor'); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ReflectionException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ReflectionException.php deleted file mode 100644 index f4a84f18..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ReflectionException.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Generator; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ReflectionException extends \PHPUnit\Framework\Exception implements Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/RuntimeException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/RuntimeException.php deleted file mode 100644 index eed41c37..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/RuntimeException.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Generator; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class RuntimeException extends \PHPUnit\Framework\Exception implements Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/SoapExtensionNotAvailableException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/SoapExtensionNotAvailableException.php deleted file mode 100644 index f6f513b8..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/SoapExtensionNotAvailableException.php +++ /dev/null @@ -1,25 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Generator; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class SoapExtensionNotAvailableException extends \PHPUnit\Framework\Exception implements Exception -{ - public function __construct() - { - parent::__construct( - 'The SOAP extension is required to generate a test double from WSDL', - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownClassException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownClassException.php deleted file mode 100644 index c5127459..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownClassException.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Generator; - -use function sprintf; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class UnknownClassException extends \PHPUnit\Framework\Exception implements Exception -{ - public function __construct(string $className) - { - parent::__construct( - sprintf( - 'Class "%s" does not exist', - $className, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownTraitException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownTraitException.php deleted file mode 100644 index a536b156..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownTraitException.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Generator; - -use function sprintf; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5243 - */ -final class UnknownTraitException extends \PHPUnit\Framework\Exception implements Exception -{ - public function __construct(string $traitName) - { - parent::__construct( - sprintf( - 'Trait "%s" does not exist', - $traitName, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownTypeException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownTypeException.php deleted file mode 100644 index cd1e1e07..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownTypeException.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Generator; - -use function sprintf; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class UnknownTypeException extends \PHPUnit\Framework\Exception implements Exception -{ - public function __construct(string $type) - { - parent::__construct( - sprintf( - 'Class or interface "%s" does not exist', - $type, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Generator.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Generator.php deleted file mode 100644 index e4a63abd..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/Generator.php +++ /dev/null @@ -1,1074 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Generator; - -use const PHP_EOL; -use const PREG_OFFSET_CAPTURE; -use const WSDL_CACHE_NONE; -use function array_merge; -use function array_pop; -use function array_unique; -use function assert; -use function class_exists; -use function count; -use function explode; -use function extension_loaded; -use function implode; -use function in_array; -use function interface_exists; -use function is_array; -use function is_object; -use function md5; -use function method_exists; -use function mt_rand; -use function preg_match; -use function preg_match_all; -use function range; -use function serialize; -use function sort; -use function sprintf; -use function str_contains; -use function str_replace; -use function strlen; -use function strpos; -use function substr; -use function trait_exists; -use Exception; -use Iterator; -use IteratorAggregate; -use PHPUnit\Framework\InvalidArgumentException; -use PHPUnit\Framework\MockObject\ConfigurableMethod; -use PHPUnit\Framework\MockObject\DoubledCloneMethod; -use PHPUnit\Framework\MockObject\Method; -use PHPUnit\Framework\MockObject\MockObject; -use PHPUnit\Framework\MockObject\MockObjectApi; -use PHPUnit\Framework\MockObject\MockObjectInternal; -use PHPUnit\Framework\MockObject\ProxiedCloneMethod; -use PHPUnit\Framework\MockObject\Stub; -use PHPUnit\Framework\MockObject\StubApi; -use PHPUnit\Framework\MockObject\StubInternal; -use ReflectionClass; -use ReflectionMethod; -use SoapClient; -use SoapFault; -use Throwable; -use Traversable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Generator -{ - use TemplateLoader; - - /** - * @var array - */ - private const EXCLUDED_METHOD_NAMES = [ - '__CLASS__' => true, - '__DIR__' => true, - '__FILE__' => true, - '__FUNCTION__' => true, - '__LINE__' => true, - '__METHOD__' => true, - '__NAMESPACE__' => true, - '__TRAIT__' => true, - '__clone' => true, - '__halt_compiler' => true, - ]; - - /** - * @psalm-var array - */ - private static array $cache = []; - - /** - * Returns a test double for the specified class. - * - * @throws ClassIsEnumerationException - * @throws ClassIsFinalException - * @throws ClassIsReadonlyException - * @throws DuplicateMethodException - * @throws InvalidMethodNameException - * @throws NameAlreadyInUseException - * @throws OriginalConstructorInvocationRequiredException - * @throws ReflectionException - * @throws RuntimeException - * @throws UnknownTypeException - */ - public function testDouble(string $type, bool $mockObject, ?array $methods = [], array $arguments = [], string $mockClassName = '', bool $callOriginalConstructor = true, bool $callOriginalClone = true, bool $callAutoload = true, bool $cloneArguments = true, bool $callOriginalMethods = false, ?object $proxyTarget = null, bool $allowMockingUnknownTypes = true, bool $returnValueGeneration = true): MockObject|Stub - { - if ($type === Traversable::class) { - $type = Iterator::class; - } - - if (!$allowMockingUnknownTypes) { - $this->ensureKnownType($type, $callAutoload); - } - - $this->ensureValidMethods($methods); - $this->ensureNameForTestDoubleClassIsAvailable($mockClassName); - - if (!$callOriginalConstructor && $callOriginalMethods) { - throw new OriginalConstructorInvocationRequiredException; - } - - $mock = $this->generate( - $type, - $mockObject, - $methods, - $mockClassName, - $callOriginalClone, - $callAutoload, - $cloneArguments, - $callOriginalMethods, - ); - - $object = $this->getObject( - $mock, - $type, - $callOriginalConstructor, - $arguments, - $callOriginalMethods, - $proxyTarget, - $returnValueGeneration, - ); - - assert($object instanceof $type); - - if ($mockObject) { - assert($object instanceof MockObject); - } else { - assert($object instanceof Stub); - } - - return $object; - } - - /** - * @psalm-param list $interfaces - * - * @throws RuntimeException - * @throws UnknownTypeException - */ - public function testDoubleForInterfaceIntersection(array $interfaces, bool $mockObject, bool $callAutoload = true): MockObject|Stub - { - if (count($interfaces) < 2) { - throw new RuntimeException('At least two interfaces must be specified'); - } - - foreach ($interfaces as $interface) { - if (!interface_exists($interface, $callAutoload)) { - throw new UnknownTypeException($interface); - } - } - - sort($interfaces); - - $methods = []; - - foreach ($interfaces as $interface) { - $methods = array_merge($methods, $this->namesOfMethodsIn($interface)); - } - - if (count(array_unique($methods)) < count($methods)) { - throw new RuntimeException('Interfaces must not declare the same method'); - } - - $unqualifiedNames = []; - - foreach ($interfaces as $interface) { - $parts = explode('\\', $interface); - $unqualifiedNames[] = array_pop($parts); - } - - sort($unqualifiedNames); - - do { - $intersectionName = sprintf( - 'Intersection_%s_%s', - implode('_', $unqualifiedNames), - substr(md5((string) mt_rand()), 0, 8), - ); - } while (interface_exists($intersectionName, false)); - - $template = $this->loadTemplate('intersection.tpl'); - - $template->setVar( - [ - 'intersection' => $intersectionName, - 'interfaces' => implode(', ', $interfaces), - ], - ); - - eval($template->render()); - - return $this->testDouble($intersectionName, $mockObject); - } - - /** - * Returns a mock object for the specified abstract class with all abstract - * methods of the class mocked. - * - * Concrete methods to mock can be specified with the $mockedMethods parameter. - * - * @throws ClassIsEnumerationException - * @throws ClassIsFinalException - * @throws ClassIsReadonlyException - * @throws DuplicateMethodException - * @throws InvalidArgumentException - * @throws InvalidMethodNameException - * @throws NameAlreadyInUseException - * @throws OriginalConstructorInvocationRequiredException - * @throws ReflectionException - * @throws RuntimeException - * @throws UnknownClassException - * @throws UnknownTypeException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5241 - */ - public function mockObjectForAbstractClass(string $originalClassName, array $arguments = [], string $mockClassName = '', bool $callOriginalConstructor = true, bool $callOriginalClone = true, bool $callAutoload = true, ?array $mockedMethods = null, bool $cloneArguments = true): MockObject - { - if (class_exists($originalClassName, $callAutoload) || - interface_exists($originalClassName, $callAutoload)) { - $reflector = $this->reflectClass($originalClassName); - $methods = $mockedMethods; - - foreach ($reflector->getMethods() as $method) { - if ($method->isAbstract() && !in_array($method->getName(), $methods ?? [], true)) { - $methods[] = $method->getName(); - } - } - - if (empty($methods)) { - $methods = null; - } - - $mockObject = $this->testDouble( - $originalClassName, - true, - $methods, - $arguments, - $mockClassName, - $callOriginalConstructor, - $callOriginalClone, - $callAutoload, - $cloneArguments, - ); - - assert($mockObject instanceof $originalClassName); - assert($mockObject instanceof MockObject); - - return $mockObject; - } - - throw new UnknownClassException($originalClassName); - } - - /** - * Returns a mock object for the specified trait with all abstract methods - * of the trait mocked. Concrete methods to mock can be specified with the - * `$mockedMethods` parameter. - * - * @psalm-param trait-string $traitName - * - * @throws ClassIsEnumerationException - * @throws ClassIsFinalException - * @throws ClassIsReadonlyException - * @throws DuplicateMethodException - * @throws InvalidArgumentException - * @throws InvalidMethodNameException - * @throws NameAlreadyInUseException - * @throws OriginalConstructorInvocationRequiredException - * @throws ReflectionException - * @throws RuntimeException - * @throws UnknownClassException - * @throws UnknownTraitException - * @throws UnknownTypeException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5243 - */ - public function mockObjectForTrait(string $traitName, array $arguments = [], string $mockClassName = '', bool $callOriginalConstructor = true, bool $callOriginalClone = true, bool $callAutoload = true, ?array $mockedMethods = null, bool $cloneArguments = true): MockObject - { - if (!trait_exists($traitName, $callAutoload)) { - throw new UnknownTraitException($traitName); - } - - $className = $this->generateClassName( - $traitName, - '', - 'Trait_', - ); - - $classTemplate = $this->loadTemplate('trait_class.tpl'); - - $classTemplate->setVar( - [ - 'prologue' => 'abstract ', - 'class_name' => $className['className'], - 'trait_name' => $traitName, - ], - ); - - $mockTrait = new MockTrait($classTemplate->render(), $className['className']); - $mockTrait->generate(); - - return $this->mockObjectForAbstractClass($className['className'], $arguments, $mockClassName, $callOriginalConstructor, $callOriginalClone, $callAutoload, $mockedMethods, $cloneArguments); - } - - /** - * Returns an object for the specified trait. - * - * @psalm-param trait-string $traitName - * - * @throws ReflectionException - * @throws RuntimeException - * @throws UnknownTraitException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5244 - */ - public function objectForTrait(string $traitName, string $traitClassName = '', bool $callAutoload = true, bool $callOriginalConstructor = false, array $arguments = []): object - { - if (!trait_exists($traitName, $callAutoload)) { - throw new UnknownTraitException($traitName); - } - - $className = $this->generateClassName( - $traitName, - $traitClassName, - 'Trait_', - ); - - $classTemplate = $this->loadTemplate('trait_class.tpl'); - - $classTemplate->setVar( - [ - 'prologue' => '', - 'class_name' => $className['className'], - 'trait_name' => $traitName, - ], - ); - - return $this->getObject( - new MockTrait( - $classTemplate->render(), - $className['className'], - ), - '', - $callOriginalConstructor, - $arguments, - ); - } - - /** - * @throws ClassIsEnumerationException - * @throws ClassIsFinalException - * @throws ClassIsReadonlyException - * @throws ReflectionException - * @throws RuntimeException - * - * @todo This method is only public because it is used to test generated code in PHPT tests - * - * @see https://github.com/sebastianbergmann/phpunit/issues/5476 - */ - public function generate(string $type, bool $mockObject, ?array $methods = null, string $mockClassName = '', bool $callOriginalClone = true, bool $callAutoload = true, bool $cloneArguments = true, bool $callOriginalMethods = false): MockClass - { - if ($mockClassName !== '') { - return $this->generateCodeForTestDoubleClass( - $type, - $mockObject, - $methods, - $mockClassName, - $callOriginalClone, - $callAutoload, - $cloneArguments, - $callOriginalMethods, - ); - } - - $key = md5( - $type . - ($mockObject ? 'MockObject' : 'TestStub') . - serialize($methods) . - serialize($callOriginalClone) . - serialize($cloneArguments) . - serialize($callOriginalMethods), - ); - - if (!isset(self::$cache[$key])) { - self::$cache[$key] = $this->generateCodeForTestDoubleClass( - $type, - $mockObject, - $methods, - $mockClassName, - $callOriginalClone, - $callAutoload, - $cloneArguments, - $callOriginalMethods, - ); - } - - return self::$cache[$key]; - } - - /** - * @throws RuntimeException - * @throws SoapExtensionNotAvailableException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5242 - */ - public function generateClassFromWsdl(string $wsdlFile, string $className, array $methods = [], array $options = []): string - { - if (!extension_loaded('soap')) { - throw new SoapExtensionNotAvailableException; - } - - $options['cache_wsdl'] = WSDL_CACHE_NONE; - - try { - $client = new SoapClient($wsdlFile, $options); - $_methods = array_unique($client->__getFunctions()); - - unset($client); - } catch (SoapFault $e) { - throw new RuntimeException( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - - sort($_methods); - - $methodTemplate = $this->loadTemplate('wsdl_method.tpl'); - $methodsBuffer = ''; - - foreach ($_methods as $method) { - preg_match_all('/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*\(/', $method, $matches, PREG_OFFSET_CAPTURE); - - $lastFunction = array_pop($matches[0]); - $nameStart = $lastFunction[1]; - $nameEnd = $nameStart + strlen($lastFunction[0]) - 1; - $name = str_replace('(', '', $lastFunction[0]); - - if (empty($methods) || in_array($name, $methods, true)) { - $arguments = explode( - ',', - str_replace(')', '', substr($method, $nameEnd + 1)), - ); - - foreach (range(0, count($arguments) - 1) as $i) { - $parameterStart = strpos($arguments[$i], '$'); - - if (!$parameterStart) { - continue; - } - - $arguments[$i] = substr($arguments[$i], $parameterStart); - } - - $methodTemplate->setVar( - [ - 'method_name' => $name, - 'arguments' => implode(', ', $arguments), - ], - ); - - $methodsBuffer .= $methodTemplate->render(); - } - } - - $optionsBuffer = '['; - - foreach ($options as $key => $value) { - $optionsBuffer .= $key . ' => ' . $value; - } - - $optionsBuffer .= ']'; - - $classTemplate = $this->loadTemplate('wsdl_class.tpl'); - $namespace = ''; - - if (str_contains($className, '\\')) { - $parts = explode('\\', $className); - $className = array_pop($parts); - $namespace = 'namespace ' . implode('\\', $parts) . ';' . "\n\n"; - } - - $classTemplate->setVar( - [ - 'namespace' => $namespace, - 'class_name' => $className, - 'wsdl' => $wsdlFile, - 'options' => $optionsBuffer, - 'methods' => $methodsBuffer, - ], - ); - - return $classTemplate->render(); - } - - /** - * @throws ReflectionException - * - * @psalm-return list - */ - public function mockClassMethods(string $className, bool $callOriginalMethods, bool $cloneArguments): array - { - $class = $this->reflectClass($className); - $methods = []; - - foreach ($class->getMethods() as $method) { - if (($method->isPublic() || $method->isAbstract()) && $this->canMethodBeDoubled($method)) { - $methods[] = MockMethod::fromReflection($method, $callOriginalMethods, $cloneArguments); - } - } - - return $methods; - } - - /** - * @psalm-param class-string $interfaceName - * - * @throws ReflectionException - * - * @psalm-return list - */ - private function userDefinedInterfaceMethods(string $interfaceName): array - { - $interface = $this->reflectClass($interfaceName); - $methods = []; - - foreach ($interface->getMethods() as $method) { - if (!$method->isUserDefined()) { - continue; - } - - $methods[] = $method; - } - - return $methods; - } - - /** - * @throws ReflectionException - * @throws RuntimeException - */ - private function getObject(MockType $mockClass, string $type = '', bool $callOriginalConstructor = false, array $arguments = [], bool $callOriginalMethods = false, ?object $proxyTarget = null, bool $returnValueGeneration = true): object - { - $className = $mockClass->generate(); - $object = $this->instantiate($className, $callOriginalConstructor, $arguments); - - if ($callOriginalMethods) { - $this->instantiateProxyTarget($proxyTarget, $object, $type, $arguments); - } - - if ($object instanceof StubInternal) { - $object->__phpunit_setReturnValueGeneration($returnValueGeneration); - } - - return $object; - } - - /** - * @throws ClassIsEnumerationException - * @throws ClassIsFinalException - * @throws ClassIsReadonlyException - * @throws ReflectionException - * @throws RuntimeException - */ - private function generateCodeForTestDoubleClass(string $type, bool $mockObject, ?array $explicitMethods, string $mockClassName, bool $callOriginalClone, bool $callAutoload, bool $cloneArguments, bool $callOriginalMethods): MockClass - { - $classTemplate = $this->loadTemplate('test_double_class.tpl'); - $additionalInterfaces = []; - $doubledCloneMethod = false; - $proxiedCloneMethod = false; - $isClass = false; - $isInterface = false; - $class = null; - $mockMethods = new MockMethodSet; - $testDoubleClassPrefix = $mockObject ? 'MockObject_' : 'TestStub_'; - - $_mockClassName = $this->generateClassName( - $type, - $mockClassName, - $testDoubleClassPrefix, - ); - - if (class_exists($_mockClassName['fullClassName'], $callAutoload)) { - $isClass = true; - } elseif (interface_exists($_mockClassName['fullClassName'], $callAutoload)) { - $isInterface = true; - } - - if (!$isClass && !$isInterface) { - $prologue = 'class ' . $_mockClassName['originalClassName'] . "\n{\n}\n\n"; - - if (!empty($_mockClassName['namespaceName'])) { - $prologue = 'namespace ' . $_mockClassName['namespaceName'] . - " {\n\n" . $prologue . "}\n\n" . - "namespace {\n\n"; - - $epilogue = "\n\n}"; - } - - $doubledCloneMethod = true; - } else { - $class = $this->reflectClass($_mockClassName['fullClassName']); - - if ($class->isEnum()) { - throw new ClassIsEnumerationException($_mockClassName['fullClassName']); - } - - if ($class->isFinal()) { - throw new ClassIsFinalException($_mockClassName['fullClassName']); - } - - if (method_exists($class, 'isReadOnly') && $class->isReadOnly()) { - throw new ClassIsReadonlyException($_mockClassName['fullClassName']); - } - - // @see https://github.com/sebastianbergmann/phpunit/issues/2995 - if ($isInterface && $class->implementsInterface(Throwable::class)) { - $actualClassName = Exception::class; - $additionalInterfaces[] = $class->getName(); - $isInterface = false; - $class = $this->reflectClass($actualClassName); - - foreach ($this->userDefinedInterfaceMethods($_mockClassName['fullClassName']) as $method) { - $methodName = $method->getName(); - - if ($class->hasMethod($methodName)) { - $classMethod = $class->getMethod($methodName); - - if (!$this->canMethodBeDoubled($classMethod)) { - continue; - } - } - - $mockMethods->addMethods( - MockMethod::fromReflection($method, $callOriginalMethods, $cloneArguments), - ); - } - - $_mockClassName = $this->generateClassName( - $actualClassName, - $_mockClassName['className'], - $testDoubleClassPrefix, - ); - } - - // @see https://github.com/sebastianbergmann/phpunit-mock-objects/issues/103 - if ($isInterface && $class->implementsInterface(Traversable::class) && - !$class->implementsInterface(Iterator::class) && - !$class->implementsInterface(IteratorAggregate::class)) { - $additionalInterfaces[] = Iterator::class; - - $mockMethods->addMethods( - ...$this->mockClassMethods(Iterator::class, $callOriginalMethods, $cloneArguments), - ); - } - - if ($class->hasMethod('__clone')) { - $cloneMethod = $class->getMethod('__clone'); - - if (!$cloneMethod->isFinal()) { - if ($callOriginalClone && !$isInterface) { - $proxiedCloneMethod = true; - } else { - $doubledCloneMethod = true; - } - } - } else { - $doubledCloneMethod = true; - } - } - - if ($isClass && $explicitMethods === []) { - $mockMethods->addMethods( - ...$this->mockClassMethods($_mockClassName['fullClassName'], $callOriginalMethods, $cloneArguments), - ); - } - - if ($isInterface && ($explicitMethods === [] || $explicitMethods === null)) { - $mockMethods->addMethods( - ...$this->interfaceMethods($_mockClassName['fullClassName'], $cloneArguments), - ); - } - - if (is_array($explicitMethods)) { - foreach ($explicitMethods as $methodName) { - if ($class !== null && $class->hasMethod($methodName)) { - $method = $class->getMethod($methodName); - - if ($this->canMethodBeDoubled($method)) { - $mockMethods->addMethods( - MockMethod::fromReflection($method, $callOriginalMethods, $cloneArguments), - ); - } - } else { - $mockMethods->addMethods( - MockMethod::fromName( - $_mockClassName['fullClassName'], - $methodName, - $cloneArguments, - ), - ); - } - } - } - - $mockedMethods = ''; - $configurable = []; - - foreach ($mockMethods->asArray() as $mockMethod) { - $mockedMethods .= $mockMethod->generateCode(); - - $configurable[] = new ConfigurableMethod( - $mockMethod->methodName(), - $mockMethod->defaultParameterValues(), - $mockMethod->numberOfParameters(), - $mockMethod->returnType(), - ); - } - - /** @psalm-var trait-string[] $traits */ - $traits = [StubApi::class]; - - if ($mockObject) { - $traits[] = MockObjectApi::class; - } - - if (!$mockMethods->hasMethod('method') && (!isset($class) || !$class->hasMethod('method'))) { - $traits[] = Method::class; - } - - if ($doubledCloneMethod) { - $traits[] = DoubledCloneMethod::class; - } - - if ($proxiedCloneMethod) { - $traits[] = ProxiedCloneMethod::class; - } - - $useStatements = ''; - - foreach ($traits as $trait) { - $useStatements .= sprintf( - ' use %s;' . PHP_EOL, - $trait, - ); - } - - unset($traits); - - $classTemplate->setVar( - [ - 'prologue' => $prologue ?? '', - 'epilogue' => $epilogue ?? '', - 'class_declaration' => $this->generateTestDoubleClassDeclaration( - $mockObject, - $_mockClassName, - $isInterface, - $additionalInterfaces, - ), - 'use_statements' => $useStatements, - 'mock_class_name' => $_mockClassName['className'], - 'mocked_methods' => $mockedMethods, - ], - ); - - return new MockClass( - $classTemplate->render(), - $_mockClassName['className'], - $configurable, - ); - } - - private function generateClassName(string $type, string $className, string $prefix): array - { - if ($type[0] === '\\') { - $type = substr($type, 1); - } - - $classNameParts = explode('\\', $type); - - if (count($classNameParts) > 1) { - $type = array_pop($classNameParts); - $namespaceName = implode('\\', $classNameParts); - $fullClassName = $namespaceName . '\\' . $type; - } else { - $namespaceName = ''; - $fullClassName = $type; - } - - if ($className === '') { - do { - $className = $prefix . $type . '_' . - substr(md5((string) mt_rand()), 0, 8); - } while (class_exists($className, false)); - } - - return [ - 'className' => $className, - 'originalClassName' => $type, - 'fullClassName' => $fullClassName, - 'namespaceName' => $namespaceName, - ]; - } - - private function generateTestDoubleClassDeclaration(bool $mockObject, array $mockClassName, bool $isInterface, array $additionalInterfaces = []): string - { - if ($mockObject) { - $additionalInterfaces[] = MockObjectInternal::class; - } else { - $additionalInterfaces[] = StubInternal::class; - } - - $buffer = 'class '; - $interfaces = implode(', ', $additionalInterfaces); - - if ($isInterface) { - $buffer .= sprintf( - '%s implements %s', - $mockClassName['className'], - $interfaces, - ); - - if (!in_array($mockClassName['originalClassName'], $additionalInterfaces, true)) { - $buffer .= ', '; - - if (!empty($mockClassName['namespaceName'])) { - $buffer .= $mockClassName['namespaceName'] . '\\'; - } - - $buffer .= $mockClassName['originalClassName']; - } - } else { - $buffer .= sprintf( - '%s extends %s%s implements %s', - $mockClassName['className'], - !empty($mockClassName['namespaceName']) ? $mockClassName['namespaceName'] . '\\' : '', - $mockClassName['originalClassName'], - $interfaces, - ); - } - - return $buffer; - } - - private function canMethodBeDoubled(ReflectionMethod $method): bool - { - if ($method->isConstructor()) { - return false; - } - - if ($method->isDestructor()) { - return false; - } - - if ($method->isFinal()) { - return false; - } - - if ($method->isPrivate()) { - return false; - } - - return !$this->isMethodNameExcluded($method->getName()); - } - - private function isMethodNameExcluded(string $name): bool - { - return isset(self::EXCLUDED_METHOD_NAMES[$name]); - } - - /** - * @throws UnknownTypeException - */ - private function ensureKnownType(string $type, bool $callAutoload): void - { - if (!class_exists($type, $callAutoload) && !interface_exists($type, $callAutoload)) { - throw new UnknownTypeException($type); - } - } - - /** - * @throws DuplicateMethodException - * @throws InvalidMethodNameException - */ - private function ensureValidMethods(?array $methods): void - { - if ($methods === null) { - return; - } - - foreach ($methods as $method) { - if (!preg_match('~[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*~', (string) $method)) { - throw new InvalidMethodNameException((string) $method); - } - } - - if ($methods !== array_unique($methods)) { - throw new DuplicateMethodException($methods); - } - } - - /** - * @throws NameAlreadyInUseException - * @throws ReflectionException - */ - private function ensureNameForTestDoubleClassIsAvailable(string $className): void - { - if ($className === '') { - return; - } - - if (class_exists($className, false) || - interface_exists($className, false) || - trait_exists($className, false)) { - throw new NameAlreadyInUseException($className); - } - } - - /** - * @psalm-param class-string $className - * - * @throws ReflectionException - */ - private function instantiate(string $className, bool $callOriginalConstructor, array $arguments): object - { - if ($callOriginalConstructor) { - if (count($arguments) === 0) { - return new $className; - } - - try { - return (new ReflectionClass($className))->newInstanceArgs($arguments); - // @codeCoverageIgnoreStart - } catch (\ReflectionException $e) { - throw new ReflectionException( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - // @codeCoverageIgnoreEnd - } - - try { - return (new ReflectionClass($className))->newInstanceWithoutConstructor(); - // @codeCoverageIgnoreStart - } catch (\ReflectionException $e) { - throw new ReflectionException( - $e->getMessage(), - $e->getCode(), - $e, - ); - // @codeCoverageIgnoreEnd - } - } - - /** - * @psalm-param class-string $type - * - * @throws ReflectionException - */ - private function instantiateProxyTarget(?object $proxyTarget, object $object, string $type, array $arguments): void - { - if (!is_object($proxyTarget)) { - assert(class_exists($type)); - - if (count($arguments) === 0) { - $proxyTarget = new $type; - } else { - $class = new ReflectionClass($type); - - try { - $proxyTarget = $class->newInstanceArgs($arguments); - // @codeCoverageIgnoreStart - } catch (\ReflectionException $e) { - throw new ReflectionException( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - // @codeCoverageIgnoreEnd - } - } - - $object->__phpunit_setOriginalObject($proxyTarget); - } - - /** - * @psalm-param class-string $className - * - * @throws ReflectionException - */ - private function reflectClass(string $className): ReflectionClass - { - try { - $class = new ReflectionClass($className); - // @codeCoverageIgnoreStart - } catch (\ReflectionException $e) { - throw new ReflectionException( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - // @codeCoverageIgnoreEnd - - return $class; - } - - /** - * @psalm-param class-string $classOrInterfaceName - * - * @psalm-return list - * - * @throws ReflectionException - */ - private function namesOfMethodsIn(string $classOrInterfaceName): array - { - $class = $this->reflectClass($classOrInterfaceName); - $methods = []; - - foreach ($class->getMethods() as $method) { - if ($method->isPublic() || $method->isAbstract()) { - $methods[] = $method->getName(); - } - } - - return $methods; - } - - /** - * @psalm-param class-string $interfaceName - * - * @psalm-return list - * - * @throws ReflectionException - */ - private function interfaceMethods(string $interfaceName, bool $cloneArguments): array - { - $class = $this->reflectClass($interfaceName); - $methods = []; - - foreach ($class->getMethods() as $method) { - $methods[] = MockMethod::fromReflection($method, false, $cloneArguments); - } - - return $methods; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/MockClass.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/MockClass.php deleted file mode 100644 index 8fe3c827..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/MockClass.php +++ /dev/null @@ -1,70 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Generator; - -use function call_user_func; -use function class_exists; -use PHPUnit\Framework\MockObject\ConfigurableMethod; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class MockClass implements MockType -{ - private readonly string $classCode; - - /** - * @psalm-var class-string - */ - private readonly string $mockName; - - /** - * @psalm-var list - */ - private readonly array $configurableMethods; - - /** - * @psalm-param class-string $mockName - * @psalm-param list $configurableMethods - */ - public function __construct(string $classCode, string $mockName, array $configurableMethods) - { - $this->classCode = $classCode; - $this->mockName = $mockName; - $this->configurableMethods = $configurableMethods; - } - - /** - * @psalm-return class-string - */ - public function generate(): string - { - if (!class_exists($this->mockName, false)) { - eval($this->classCode); - - call_user_func( - [ - $this->mockName, - '__phpunit_initConfigurableMethods', - ], - ...$this->configurableMethods, - ); - } - - return $this->mockName; - } - - public function classCode(): string - { - return $this->classCode; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/MockMethod.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/MockMethod.php deleted file mode 100644 index 497cd114..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/MockMethod.php +++ /dev/null @@ -1,396 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Generator; - -use function count; -use function explode; -use function implode; -use function is_object; -use function is_string; -use function preg_match; -use function preg_replace; -use function sprintf; -use function str_contains; -use function strlen; -use function strpos; -use function substr; -use function substr_count; -use function trim; -use function var_export; -use ReflectionMethod; -use ReflectionParameter; -use SebastianBergmann\Type\ReflectionMapper; -use SebastianBergmann\Type\Type; -use SebastianBergmann\Type\UnknownType; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class MockMethod -{ - use TemplateLoader; - - /** - * @psalm-var class-string - */ - private readonly string $className; - - /** - * @psalm-var non-empty-string - */ - private readonly string $methodName; - private readonly bool $cloneArguments; - private readonly string $modifier; - private readonly string $argumentsForDeclaration; - private readonly string $argumentsForCall; - private readonly Type $returnType; - private readonly string $reference; - private readonly bool $callOriginalMethod; - private readonly bool $static; - private readonly ?string $deprecation; - - /** - * @psalm-var array - */ - private readonly array $defaultParameterValues; - - /** - * @psalm-var non-negative-int - */ - private readonly int $numberOfParameters; - - /** - * @throws ReflectionException - * @throws RuntimeException - */ - public static function fromReflection(ReflectionMethod $method, bool $callOriginalMethod, bool $cloneArguments): self - { - if ($method->isPrivate()) { - $modifier = 'private'; - } elseif ($method->isProtected()) { - $modifier = 'protected'; - } else { - $modifier = 'public'; - } - - if ($method->isStatic()) { - $modifier .= ' static'; - } - - if ($method->returnsReference()) { - $reference = '&'; - } else { - $reference = ''; - } - - $docComment = $method->getDocComment(); - - if (is_string($docComment) && - preg_match('#\*[ \t]*+@deprecated[ \t]*+(.*?)\r?+\n[ \t]*+\*(?:[ \t]*+@|/$)#s', $docComment, $deprecation)) { - $deprecation = trim(preg_replace('#[ \t]*\r?\n[ \t]*+\*[ \t]*+#', ' ', $deprecation[1])); - } else { - $deprecation = null; - } - - return new self( - $method->getDeclaringClass()->getName(), - $method->getName(), - $cloneArguments, - $modifier, - self::methodParametersForDeclaration($method), - self::methodParametersForCall($method), - self::methodParametersDefaultValues($method), - count($method->getParameters()), - (new ReflectionMapper)->fromReturnType($method), - $reference, - $callOriginalMethod, - $method->isStatic(), - $deprecation, - ); - } - - /** - * @param class-string $className - * @param non-empty-string $methodName - */ - public static function fromName(string $className, string $methodName, bool $cloneArguments): self - { - return new self( - $className, - $methodName, - $cloneArguments, - 'public', - '', - '', - [], - 0, - new UnknownType, - '', - false, - false, - null, - ); - } - - /** - * @psalm-param class-string $className - * @psalm-param non-empty-string $methodName - * @psalm-param array $defaultParameterValues - * @psalm-param non-negative-int $numberOfParameters - */ - private function __construct(string $className, string $methodName, bool $cloneArguments, string $modifier, string $argumentsForDeclaration, string $argumentsForCall, array $defaultParameterValues, int $numberOfParameters, Type $returnType, string $reference, bool $callOriginalMethod, bool $static, ?string $deprecation) - { - $this->className = $className; - $this->methodName = $methodName; - $this->cloneArguments = $cloneArguments; - $this->modifier = $modifier; - $this->argumentsForDeclaration = $argumentsForDeclaration; - $this->argumentsForCall = $argumentsForCall; - $this->defaultParameterValues = $defaultParameterValues; - $this->numberOfParameters = $numberOfParameters; - $this->returnType = $returnType; - $this->reference = $reference; - $this->callOriginalMethod = $callOriginalMethod; - $this->static = $static; - $this->deprecation = $deprecation; - } - - /** - * @psalm-return non-empty-string - */ - public function methodName(): string - { - return $this->methodName; - } - - /** - * @throws RuntimeException - */ - public function generateCode(): string - { - if ($this->static) { - $templateFile = 'doubled_static_method.tpl'; - } else { - $templateFile = sprintf( - '%s_method.tpl', - $this->callOriginalMethod ? 'proxied' : 'doubled', - ); - } - - $deprecation = $this->deprecation; - $returnResult = ''; - - if (!$this->returnType->isNever() && !$this->returnType->isVoid()) { - $returnResult = <<<'EOT' - - - return $__phpunit_result; -EOT; - } - - if (null !== $this->deprecation) { - $deprecation = "The {$this->className}::{$this->methodName} method is deprecated ({$this->deprecation})."; - $deprecationTemplate = $this->loadTemplate('deprecation.tpl'); - - $deprecationTemplate->setVar( - [ - 'deprecation' => var_export($deprecation, true), - ], - ); - - $deprecation = $deprecationTemplate->render(); - } - - $template = $this->loadTemplate($templateFile); - - $argumentsCount = 0; - - if (str_contains($this->argumentsForCall, '...')) { - $argumentsCount = null; - } elseif (!empty($this->argumentsForCall)) { - $argumentsCount = substr_count($this->argumentsForCall, ',') + 1; - } - - $template->setVar( - [ - 'arguments_decl' => $this->argumentsForDeclaration, - 'arguments_call' => $this->argumentsForCall, - 'return_declaration' => !empty($this->returnType->asString()) ? (': ' . $this->returnType->asString()) : '', - 'return_type' => $this->returnType->asString(), - 'arguments_count' => $argumentsCount, - 'class_name' => $this->className, - 'method_name' => $this->methodName, - 'modifier' => $this->modifier, - 'reference' => $this->reference, - 'clone_arguments' => $this->cloneArguments ? 'true' : 'false', - 'deprecation' => $deprecation, - 'return_result' => $returnResult, - ], - ); - - return $template->render(); - } - - public function returnType(): Type - { - return $this->returnType; - } - - /** - * @psalm-return array - */ - public function defaultParameterValues(): array - { - return $this->defaultParameterValues; - } - - /** - * @psalm-return non-negative-int - */ - public function numberOfParameters(): int - { - return $this->numberOfParameters; - } - - /** - * Returns the parameters of a function or method. - * - * @throws RuntimeException - */ - private static function methodParametersForDeclaration(ReflectionMethod $method): string - { - $parameters = []; - $types = (new ReflectionMapper)->fromParameterTypes($method); - - foreach ($method->getParameters() as $i => $parameter) { - $name = '$' . $parameter->getName(); - - /* Note: PHP extensions may use empty names for reference arguments - * or "..." for methods taking a variable number of arguments. - */ - if ($name === '$' || $name === '$...') { - $name = '$arg' . $i; - } - - $default = ''; - $reference = ''; - $typeDeclaration = ''; - - if (!$types[$i]->type()->isUnknown()) { - $typeDeclaration = $types[$i]->type()->asString() . ' '; - } - - if ($parameter->isPassedByReference()) { - $reference = '&'; - } - - if ($parameter->isVariadic()) { - $name = '...' . $name; - } elseif ($parameter->isDefaultValueAvailable()) { - $default = ' = ' . self::exportDefaultValue($parameter); - } elseif ($parameter->isOptional()) { - $default = ' = null'; - } - - $parameters[] = $typeDeclaration . $reference . $name . $default; - } - - return implode(', ', $parameters); - } - - /** - * Returns the parameters of a function or method. - * - * @throws ReflectionException - */ - private static function methodParametersForCall(ReflectionMethod $method): string - { - $parameters = []; - - foreach ($method->getParameters() as $i => $parameter) { - $name = '$' . $parameter->getName(); - - /* Note: PHP extensions may use empty names for reference arguments - * or "..." for methods taking a variable number of arguments. - */ - if ($name === '$' || $name === '$...') { - $name = '$arg' . $i; - } - - if ($parameter->isVariadic()) { - continue; - } - - if ($parameter->isPassedByReference()) { - $parameters[] = '&' . $name; - } else { - $parameters[] = $name; - } - } - - return implode(', ', $parameters); - } - - /** - * @throws ReflectionException - */ - private static function exportDefaultValue(ReflectionParameter $parameter): string - { - try { - $defaultValue = $parameter->getDefaultValue(); - - if (!is_object($defaultValue)) { - return var_export($defaultValue, true); - } - - $parameterAsString = $parameter->__toString(); - - return explode( - ' = ', - substr( - substr( - $parameterAsString, - strpos($parameterAsString, ' ') + strlen(' '), - ), - 0, - -2, - ), - )[1]; - // @codeCoverageIgnoreStart - } catch (\ReflectionException $e) { - throw new ReflectionException( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - // @codeCoverageIgnoreEnd - } - - /** - * @psalm-return array - */ - private static function methodParametersDefaultValues(ReflectionMethod $method): array - { - $result = []; - - foreach ($method->getParameters() as $i => $parameter) { - if (!$parameter->isDefaultValueAvailable()) { - continue; - } - - $result[$i] = $parameter->getDefaultValue(); - } - - return $result; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/MockMethodSet.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/MockMethodSet.php deleted file mode 100644 index 92785cc1..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/MockMethodSet.php +++ /dev/null @@ -1,47 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Generator; - -use function array_key_exists; -use function array_values; -use function strtolower; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class MockMethodSet -{ - /** - * @psalm-var array - */ - private array $methods = []; - - public function addMethods(MockMethod ...$methods): void - { - foreach ($methods as $method) { - $this->methods[strtolower($method->methodName())] = $method; - } - } - - /** - * @psalm-return list - */ - public function asArray(): array - { - return array_values($this->methods); - } - - public function hasMethod(string $methodName): bool - { - return array_key_exists(strtolower($methodName), $this->methods); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/MockTrait.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/MockTrait.php deleted file mode 100644 index 2e78a6a3..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/MockTrait.php +++ /dev/null @@ -1,50 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Generator; - -use function class_exists; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5243 - */ -final class MockTrait implements MockType -{ - private readonly string $classCode; - - /** - * @psalm-var class-string - */ - private readonly string $mockName; - - /** - * @psalm-param class-string $mockName - */ - public function __construct(string $classCode, string $mockName) - { - $this->classCode = $classCode; - $this->mockName = $mockName; - } - - /** - * @psalm-return class-string - */ - public function generate(): string - { - if (!class_exists($this->mockName, false)) { - eval($this->classCode); - } - - return $this->mockName; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/MockType.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/MockType.php deleted file mode 100644 index 6003d987..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/MockType.php +++ /dev/null @@ -1,23 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Generator; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -interface MockType -{ - /** - * @psalm-return class-string - */ - public function generate(): string; -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/TemplateLoader.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/TemplateLoader.php deleted file mode 100644 index 37545fc9..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/TemplateLoader.php +++ /dev/null @@ -1,39 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Generator; - -use SebastianBergmann\Template\Template; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This trait is not covered by the backward compatibility promise for PHPUnit - */ -trait TemplateLoader -{ - /** - * @psalm-var array - */ - private static array $templates = []; - - /** - * @psalm-suppress MissingThrowsDocblock - */ - private function loadTemplate(string $template): Template - { - $filename = __DIR__ . '/templates/' . $template; - - if (!isset(self::$templates[$filename])) { - self::$templates[$filename] = new Template($filename); - } - - return self::$templates[$filename]; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/templates/doubled_method.tpl b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/templates/doubled_method.tpl deleted file mode 100644 index 1b1b663f..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/templates/doubled_method.tpl +++ /dev/null @@ -1,35 +0,0 @@ - - {modifier} function {reference}{method_name}({arguments_decl}){return_declaration} - {{deprecation} - $__phpunit_definedVariables = get_defined_vars(); - $__phpunit_namedVariadicParameters = []; - - foreach ($__phpunit_definedVariables as $__phpunit_definedVariableName => $__phpunit_definedVariableValue) { - if ((new ReflectionParameter([__CLASS__, __FUNCTION__], $__phpunit_definedVariableName))->isVariadic()) { - foreach ($__phpunit_definedVariableValue as $__phpunit_key => $__phpunit_namedValue) { - if (is_string($__phpunit_key)) { - $__phpunit_namedVariadicParameters[$__phpunit_key] = $__phpunit_namedValue; - } - } - } - } - - $__phpunit_arguments = [{arguments_call}]; - $__phpunit_count = func_num_args(); - - if ({arguments_count} !== null && $__phpunit_count > {arguments_count}) { - $__phpunit_arguments_tmp = func_get_args(); - - for ($__phpunit_i = {arguments_count}; $__phpunit_i < $__phpunit_count; $__phpunit_i++) { - $__phpunit_arguments[] = $__phpunit_arguments_tmp[$__phpunit_i]; - } - } - - $__phpunit_arguments = array_merge($__phpunit_arguments, $__phpunit_namedVariadicParameters); - - $__phpunit_result = $this->__phpunit_getInvocationHandler()->invoke( - new \PHPUnit\Framework\MockObject\Invocation( - '{class_name}', '{method_name}', $__phpunit_arguments, '{return_type}', $this, {clone_arguments} - ) - );{return_result} - } diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php deleted file mode 100644 index 3e99351e..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php +++ /dev/null @@ -1,491 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject; - -use function array_merge; -use function assert; -use function trait_exists; -use PHPUnit\Framework\Exception; -use PHPUnit\Framework\InvalidArgumentException; -use PHPUnit\Framework\MockObject\Generator\CannotUseAddMethodsException; -use PHPUnit\Framework\MockObject\Generator\ClassIsEnumerationException; -use PHPUnit\Framework\MockObject\Generator\ClassIsFinalException; -use PHPUnit\Framework\MockObject\Generator\ClassIsReadonlyException; -use PHPUnit\Framework\MockObject\Generator\DuplicateMethodException; -use PHPUnit\Framework\MockObject\Generator\Generator; -use PHPUnit\Framework\MockObject\Generator\InvalidMethodNameException; -use PHPUnit\Framework\MockObject\Generator\NameAlreadyInUseException; -use PHPUnit\Framework\MockObject\Generator\OriginalConstructorInvocationRequiredException; -use PHPUnit\Framework\MockObject\Generator\ReflectionException; -use PHPUnit\Framework\MockObject\Generator\RuntimeException; -use PHPUnit\Framework\MockObject\Generator\UnknownTypeException; -use PHPUnit\Framework\TestCase; -use ReflectionClass; - -/** - * @psalm-template MockedType - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final class MockBuilder -{ - private readonly TestCase $testCase; - - /** - * @psalm-var class-string|trait-string - */ - private readonly string $type; - - /** - * @psalm-var list - */ - private array $methods = []; - private bool $emptyMethodsArray = false; - - /** - * @psalm-var ?class-string - */ - private ?string $mockClassName = null; - private array $constructorArgs = []; - private bool $originalConstructor = true; - private bool $originalClone = true; - private bool $autoload = true; - private bool $cloneArguments = false; - private bool $callOriginalMethods = false; - private ?object $proxyTarget = null; - private bool $allowMockingUnknownTypes = true; - private bool $returnValueGeneration = true; - private readonly Generator $generator; - - /** - * @psalm-param class-string|trait-string $type - */ - public function __construct(TestCase $testCase, string $type) - { - $this->testCase = $testCase; - $this->type = $type; - $this->generator = new Generator; - } - - /** - * Creates a mock object using a fluent interface. - * - * @throws ClassIsEnumerationException - * @throws ClassIsFinalException - * @throws ClassIsReadonlyException - * @throws DuplicateMethodException - * @throws InvalidArgumentException - * @throws InvalidMethodNameException - * @throws NameAlreadyInUseException - * @throws OriginalConstructorInvocationRequiredException - * @throws ReflectionException - * @throws RuntimeException - * @throws UnknownTypeException - * - * @psalm-return MockObject&MockedType - */ - public function getMock(): MockObject - { - $object = $this->generator->testDouble( - $this->type, - true, - !$this->emptyMethodsArray ? $this->methods : null, - $this->constructorArgs, - $this->mockClassName ?? '', - $this->originalConstructor, - $this->originalClone, - $this->autoload, - $this->cloneArguments, - $this->callOriginalMethods, - $this->proxyTarget, - $this->allowMockingUnknownTypes, - $this->returnValueGeneration, - ); - - assert($object instanceof $this->type); - assert($object instanceof MockObject); - - $this->testCase->registerMockObject($object); - - return $object; - } - - /** - * Creates a mock object for an abstract class using a fluent interface. - * - * @psalm-return MockObject&MockedType - * - * @throws Exception - * @throws ReflectionException - * @throws RuntimeException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5305 - */ - public function getMockForAbstractClass(): MockObject - { - $object = $this->generator->mockObjectForAbstractClass( - $this->type, - $this->constructorArgs, - $this->mockClassName ?? '', - $this->originalConstructor, - $this->originalClone, - $this->autoload, - $this->methods, - $this->cloneArguments, - ); - - assert($object instanceof MockObject); - - $this->testCase->registerMockObject($object); - - return $object; - } - - /** - * Creates a mock object for a trait using a fluent interface. - * - * @psalm-return MockObject&MockedType - * - * @throws Exception - * @throws ReflectionException - * @throws RuntimeException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5306 - */ - public function getMockForTrait(): MockObject - { - assert(trait_exists($this->type)); - - $object = $this->generator->mockObjectForTrait( - $this->type, - $this->constructorArgs, - $this->mockClassName ?? '', - $this->originalConstructor, - $this->originalClone, - $this->autoload, - $this->methods, - $this->cloneArguments, - ); - - assert($object instanceof MockObject); - - $this->testCase->registerMockObject($object); - - return $object; - } - - /** - * Specifies the subset of methods to mock, requiring each to exist in the class. - * - * @psalm-param list $methods - * - * @throws CannotUseOnlyMethodsException - * @throws ReflectionException - * - * @return $this - */ - public function onlyMethods(array $methods): self - { - if (empty($methods)) { - $this->emptyMethodsArray = true; - - return $this; - } - - try { - $reflector = new ReflectionClass($this->type); - // @codeCoverageIgnoreStart - } catch (\ReflectionException $e) { - throw new ReflectionException( - $e->getMessage(), - $e->getCode(), - $e, - ); - // @codeCoverageIgnoreEnd - } - - foreach ($methods as $method) { - if (!$reflector->hasMethod($method)) { - throw new CannotUseOnlyMethodsException($this->type, $method); - } - } - - $this->methods = array_merge($this->methods, $methods); - - return $this; - } - - /** - * Specifies methods that don't exist in the class which you want to mock. - * - * @psalm-param list $methods - * - * @throws CannotUseAddMethodsException - * @throws ReflectionException - * @throws RuntimeException - * - * @return $this - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5320 - */ - public function addMethods(array $methods): self - { - if (empty($methods)) { - $this->emptyMethodsArray = true; - - return $this; - } - - try { - $reflector = new ReflectionClass($this->type); - // @codeCoverageIgnoreStart - } catch (\ReflectionException $e) { - throw new ReflectionException( - $e->getMessage(), - $e->getCode(), - $e, - ); - // @codeCoverageIgnoreEnd - } - - foreach ($methods as $method) { - if ($reflector->hasMethod($method)) { - throw new CannotUseAddMethodsException($this->type, $method); - } - } - - $this->methods = array_merge($this->methods, $methods); - - return $this; - } - - /** - * Specifies the arguments for the constructor. - * - * @return $this - */ - public function setConstructorArgs(array $arguments): self - { - $this->constructorArgs = $arguments; - - return $this; - } - - /** - * Specifies the name for the mock class. - * - * @psalm-param class-string $name - * - * @return $this - */ - public function setMockClassName(string $name): self - { - $this->mockClassName = $name; - - return $this; - } - - /** - * Disables the invocation of the original constructor. - * - * @return $this - */ - public function disableOriginalConstructor(): self - { - $this->originalConstructor = false; - - return $this; - } - - /** - * Enables the invocation of the original constructor. - * - * @return $this - */ - public function enableOriginalConstructor(): self - { - $this->originalConstructor = true; - - return $this; - } - - /** - * Disables the invocation of the original clone constructor. - * - * @return $this - */ - public function disableOriginalClone(): self - { - $this->originalClone = false; - - return $this; - } - - /** - * Enables the invocation of the original clone constructor. - * - * @return $this - */ - public function enableOriginalClone(): self - { - $this->originalClone = true; - - return $this; - } - - /** - * Disables the use of class autoloading while creating the mock object. - * - * @return $this - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5309 - * - * @codeCoverageIgnore - */ - public function disableAutoload(): self - { - $this->autoload = false; - - return $this; - } - - /** - * Enables the use of class autoloading while creating the mock object. - * - * @return $this - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5309 - */ - public function enableAutoload(): self - { - $this->autoload = true; - - return $this; - } - - /** - * Disables the cloning of arguments passed to mocked methods. - * - * @return $this - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5315 - */ - public function disableArgumentCloning(): self - { - $this->cloneArguments = false; - - return $this; - } - - /** - * Enables the cloning of arguments passed to mocked methods. - * - * @return $this - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5315 - */ - public function enableArgumentCloning(): self - { - $this->cloneArguments = true; - - return $this; - } - - /** - * Enables the invocation of the original methods. - * - * @return $this - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5307 - * - * @codeCoverageIgnore - */ - public function enableProxyingToOriginalMethods(): self - { - $this->callOriginalMethods = true; - - return $this; - } - - /** - * Disables the invocation of the original methods. - * - * @return $this - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5307 - */ - public function disableProxyingToOriginalMethods(): self - { - $this->callOriginalMethods = false; - $this->proxyTarget = null; - - return $this; - } - - /** - * Sets the proxy target. - * - * @return $this - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5307 - * - * @codeCoverageIgnore - */ - public function setProxyTarget(object $object): self - { - $this->proxyTarget = $object; - - return $this; - } - - /** - * @return $this - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5308 - */ - public function allowMockingUnknownTypes(): self - { - $this->allowMockingUnknownTypes = true; - - return $this; - } - - /** - * @return $this - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5308 - */ - public function disallowMockingUnknownTypes(): self - { - $this->allowMockingUnknownTypes = false; - - return $this; - } - - /** - * @return $this - */ - public function enableAutoReturnValueGeneration(): self - { - $this->returnValueGeneration = true; - - return $this; - } - - /** - * @return $this - */ - public function disableAutoReturnValueGeneration(): self - { - $this->returnValueGeneration = false; - - return $this; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/DoubledCloneMethod.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/DoubledCloneMethod.php deleted file mode 100644 index 17ad85d7..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/DoubledCloneMethod.php +++ /dev/null @@ -1,23 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This trait is not covered by the backward compatibility promise for PHPUnit - */ -trait DoubledCloneMethod -{ - public function __clone(): void - { - $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationHandler(); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/Method.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/Method.php deleted file mode 100644 index ef77e3cb..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/Method.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject; - -use function call_user_func_array; -use function func_get_args; -use PHPUnit\Framework\MockObject\Builder\InvocationMocker; -use PHPUnit\Framework\MockObject\Rule\AnyInvokedCount; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This trait is not covered by the backward compatibility promise for PHPUnit - */ -trait Method -{ - public function method(): InvocationMocker - { - $expects = $this->expects(new AnyInvokedCount); - - return call_user_func_array( - [$expects, 'method'], - func_get_args(), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/MockObjectApi.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/MockObjectApi.php deleted file mode 100644 index 28b55d6b..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/MockObjectApi.php +++ /dev/null @@ -1,54 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject; - -use PHPUnit\Framework\MockObject\Builder\InvocationMocker as InvocationMockerBuilder; -use PHPUnit\Framework\MockObject\Rule\InvocationOrder; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This trait is not covered by the backward compatibility promise for PHPUnit - */ -trait MockObjectApi -{ - private object $__phpunit_originalObject; - - /** @noinspection MagicMethodsValidityInspection */ - public function __phpunit_hasMatchers(): bool - { - return $this->__phpunit_getInvocationHandler()->hasMatchers(); - } - - /** @noinspection MagicMethodsValidityInspection */ - public function __phpunit_setOriginalObject(object $originalObject): void - { - $this->__phpunit_originalObject = $originalObject; - } - - /** @noinspection MagicMethodsValidityInspection */ - public function __phpunit_verify(bool $unsetInvocationMocker = true): void - { - $this->__phpunit_getInvocationHandler()->verify(); - - if ($unsetInvocationMocker) { - $this->__phpunit_unsetInvocationMocker(); - } - } - - abstract public function __phpunit_getInvocationHandler(): InvocationHandler; - - abstract public function __phpunit_unsetInvocationMocker(): void; - - public function expects(InvocationOrder $matcher): InvocationMockerBuilder - { - return $this->__phpunit_getInvocationHandler()->expects($matcher); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/ProxiedCloneMethod.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/ProxiedCloneMethod.php deleted file mode 100644 index 4099a641..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/ProxiedCloneMethod.php +++ /dev/null @@ -1,25 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This trait is not covered by the backward compatibility promise for PHPUnit - */ -trait ProxiedCloneMethod -{ - public function __clone(): void - { - $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationHandler(); - - parent::__clone(); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/StubApi.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/StubApi.php deleted file mode 100644 index 10dfe4cd..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/StubApi.php +++ /dev/null @@ -1,56 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This trait is not covered by the backward compatibility promise for PHPUnit - */ -trait StubApi -{ - /** - * @psalm-var list - */ - private static array $__phpunit_configurableMethods; - private bool $__phpunit_returnValueGeneration = true; - private ?InvocationHandler $__phpunit_invocationMocker = null; - - /** @noinspection MagicMethodsValidityInspection */ - public static function __phpunit_initConfigurableMethods(ConfigurableMethod ...$configurableMethods): void - { - static::$__phpunit_configurableMethods = $configurableMethods; - } - - /** @noinspection MagicMethodsValidityInspection */ - public function __phpunit_setReturnValueGeneration(bool $returnValueGeneration): void - { - $this->__phpunit_returnValueGeneration = $returnValueGeneration; - } - - /** @noinspection MagicMethodsValidityInspection */ - public function __phpunit_getInvocationHandler(): InvocationHandler - { - if ($this->__phpunit_invocationMocker === null) { - $this->__phpunit_invocationMocker = new InvocationHandler( - static::$__phpunit_configurableMethods, - $this->__phpunit_returnValueGeneration, - ); - } - - return $this->__phpunit_invocationMocker; - } - - /** @noinspection MagicMethodsValidityInspection */ - public function __phpunit_unsetInvocationMocker(): void - { - $this->__phpunit_invocationMocker = null; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/Identity.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/Identity.php deleted file mode 100644 index 07a9d37c..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/Identity.php +++ /dev/null @@ -1,25 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Builder; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -interface Identity -{ - /** - * Sets the identification of the expectation to $id. - * - * @note The identifier is unique per mock object. - */ - public function id(string $id): self; -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/MethodNameMatch.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/MethodNameMatch.php deleted file mode 100644 index c25e8df7..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/MethodNameMatch.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Builder; - -use PHPUnit\Framework\Constraint\Constraint; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -interface MethodNameMatch extends ParametersMatch -{ - /** - * Adds a new method name match and returns the parameter match object for - * further matching possibilities. - */ - public function method(Constraint|string $constraint): self; -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/ParametersMatch.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/ParametersMatch.php deleted file mode 100644 index 96493d44..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/ParametersMatch.php +++ /dev/null @@ -1,51 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Builder; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -interface ParametersMatch extends Stub -{ - /** - * Defines the expectation which must occur before the current is valid. - */ - public function after(string $id): Stub; - - /** - * Sets the parameters to match for, each parameter to this function will - * be part of match. To perform specific matches or constraints create a - * new PHPUnit\Framework\Constraint\Constraint and use it for the parameter. - * If the parameter value is not a constraint it will use the - * PHPUnit\Framework\Constraint\IsEqual for the value. - * - * Some examples: - * - * // match first parameter with value 2 - * $b->with(2); - * // match first parameter with value 'smock' and second identical to 42 - * $b->with('smock', new PHPUnit\Framework\Constraint\IsEqual(42)); - * - */ - public function with(mixed ...$arguments): self; - - /** - * Sets a rule which allows any kind of parameters. - * - * Some examples: - * - * // match any number of parameters - * $b->withAnyParameters(); - * - */ - public function withAnyParameters(): self; -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/Stub.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/Stub.php deleted file mode 100644 index fce47549..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/Stub.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Builder; - -use PHPUnit\Framework\MockObject\Stub\Stub as BaseStub; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -interface Stub extends Identity -{ - /** - * Stubs the matching method with the stub object $stub. Any invocations of - * the matched method will now be handled by the stub instead. - */ - public function will(BaseStub $stub): Identity; -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/MockObjectInternal.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/MockObjectInternal.php deleted file mode 100644 index fe5bbdf6..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/MockObjectInternal.php +++ /dev/null @@ -1,24 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This interface is not covered by the backward compatibility promise for PHPUnit - */ -interface MockObjectInternal extends MockObject, StubInternal -{ - public function __phpunit_hasMatchers(): bool; - - public function __phpunit_setOriginalObject(object $originalObject): void; - - public function __phpunit_verify(bool $unsetInvocationMocker = true): void; -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/StubInternal.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/StubInternal.php deleted file mode 100644 index 91f6464f..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/StubInternal.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This interface is not covered by the backward compatibility promise for PHPUnit - */ -interface StubInternal extends Stub -{ - public static function __phpunit_initConfigurableMethods(ConfigurableMethod ...$configurableMethods): void; - - public function __phpunit_getInvocationHandler(): InvocationHandler; - - public function __phpunit_setReturnValueGeneration(bool $returnValueGeneration): void; - - public function __phpunit_unsetInvocationMocker(): void; -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Invocation.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Invocation.php deleted file mode 100644 index 008b372b..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Invocation.php +++ /dev/null @@ -1,152 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject; - -use function array_map; -use function implode; -use function is_object; -use function sprintf; -use function str_starts_with; -use function strtolower; -use function substr; -use PHPUnit\Framework\SelfDescribing; -use PHPUnit\Util\Cloner; -use SebastianBergmann\Exporter\Exporter; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Invocation implements SelfDescribing -{ - /** - * @psalm-var class-string - */ - private readonly string $className; - - /** - * @psalm-var non-empty-string - */ - private readonly string $methodName; - private readonly array $parameters; - private readonly string $returnType; - private readonly bool $isReturnTypeNullable; - private readonly bool $proxiedCall; - private readonly MockObjectInternal|StubInternal $object; - - /** - * @psalm-param class-string $className - * @psalm-param non-empty-string $methodName - */ - public function __construct(string $className, string $methodName, array $parameters, string $returnType, MockObjectInternal|StubInternal $object, bool $cloneObjects = false, bool $proxiedCall = false) - { - $this->className = $className; - $this->methodName = $methodName; - $this->object = $object; - $this->proxiedCall = $proxiedCall; - - if (strtolower($methodName) === '__tostring') { - $returnType = 'string'; - } - - if (str_starts_with($returnType, '?')) { - $returnType = substr($returnType, 1); - $this->isReturnTypeNullable = true; - } else { - $this->isReturnTypeNullable = false; - } - - $this->returnType = $returnType; - - if (!$cloneObjects) { - $this->parameters = $parameters; - - return; - } - - foreach ($parameters as $key => $value) { - if (is_object($value)) { - $parameters[$key] = Cloner::clone($value); - } - } - - $this->parameters = $parameters; - } - - /** - * @psalm-return class-string - */ - public function className(): string - { - return $this->className; - } - - /** - * @psalm-return non-empty-string - */ - public function methodName(): string - { - return $this->methodName; - } - - public function parameters(): array - { - return $this->parameters; - } - - /** - * @throws Exception - */ - public function generateReturnValue(): mixed - { - if ($this->returnType === 'never') { - throw new NeverReturningMethodException( - $this->className, - $this->methodName, - ); - } - - if ($this->isReturnTypeNullable || $this->proxiedCall) { - return null; - } - - return (new ReturnValueGenerator)->generate( - $this->className, - $this->methodName, - $this->object::class, - $this->returnType, - ); - } - - public function toString(): string - { - $exporter = new Exporter; - - return sprintf( - '%s::%s(%s)%s', - $this->className, - $this->methodName, - implode( - ', ', - array_map( - [$exporter, 'shortenedExport'], - $this->parameters, - ), - ), - $this->returnType ? sprintf(': %s', $this->returnType) : '', - ); - } - - public function object(): MockObjectInternal|StubInternal - { - return $this->object; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/InvocationHandler.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/InvocationHandler.php deleted file mode 100644 index 4228d17d..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/InvocationHandler.php +++ /dev/null @@ -1,154 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject; - -use function strtolower; -use Exception; -use PHPUnit\Framework\MockObject\Builder\InvocationMocker; -use PHPUnit\Framework\MockObject\Rule\InvocationOrder; -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class InvocationHandler -{ - /** - * @psalm-var list - */ - private array $matchers = []; - - /** - * @psalm-var array - */ - private array $matcherMap = []; - - /** - * @psalm-var list - */ - private readonly array $configurableMethods; - private readonly bool $returnValueGeneration; - - /** - * @psalm-param list $configurableMethods - */ - public function __construct(array $configurableMethods, bool $returnValueGeneration) - { - $this->configurableMethods = $configurableMethods; - $this->returnValueGeneration = $returnValueGeneration; - } - - public function hasMatchers(): bool - { - foreach ($this->matchers as $matcher) { - if ($matcher->hasMatchers()) { - return true; - } - } - - return false; - } - - /** - * Looks up the match builder with identification $id and returns it. - */ - public function lookupMatcher(string $id): ?Matcher - { - return $this->matcherMap[$id] ?? null; - } - - /** - * Registers a matcher with the identification $id. The matcher can later be - * looked up using lookupMatcher() to figure out if it has been invoked. - * - * @throws MatcherAlreadyRegisteredException - */ - public function registerMatcher(string $id, Matcher $matcher): void - { - if (isset($this->matcherMap[$id])) { - throw new MatcherAlreadyRegisteredException($id); - } - - $this->matcherMap[$id] = $matcher; - } - - public function expects(InvocationOrder $rule): InvocationMocker - { - $matcher = new Matcher($rule); - $this->addMatcher($matcher); - - return new InvocationMocker( - $this, - $matcher, - ...$this->configurableMethods, - ); - } - - /** - * @throws \PHPUnit\Framework\MockObject\Exception - * @throws Exception - */ - public function invoke(Invocation $invocation): mixed - { - $exception = null; - $hasReturnValue = false; - $returnValue = null; - - foreach ($this->matchers as $match) { - try { - if ($match->matches($invocation)) { - $value = $match->invoked($invocation); - - if (!$hasReturnValue) { - $returnValue = $value; - $hasReturnValue = true; - } - } - } catch (Exception $e) { - $exception = $e; - } - } - - if ($exception !== null) { - throw $exception; - } - - if ($hasReturnValue) { - return $returnValue; - } - - if (!$this->returnValueGeneration) { - if (strtolower($invocation->methodName()) === '__tostring') { - return ''; - } - - throw new ReturnValueNotConfiguredException($invocation); - } - - return $invocation->generateReturnValue(); - } - - /** - * @throws Throwable - */ - public function verify(): void - { - foreach ($this->matchers as $matcher) { - $matcher->verify(); - } - } - - private function addMatcher(Matcher $matcher): void - { - $this->matchers[] = $matcher; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Matcher.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Matcher.php deleted file mode 100644 index 128a5856..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Matcher.php +++ /dev/null @@ -1,212 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject; - -use function sprintf; -use PHPUnit\Framework\ExpectationFailedException; -use PHPUnit\Framework\MockObject\Rule\AnyInvokedCount; -use PHPUnit\Framework\MockObject\Rule\AnyParameters; -use PHPUnit\Framework\MockObject\Rule\InvocationOrder; -use PHPUnit\Framework\MockObject\Rule\InvokedAtMostCount; -use PHPUnit\Framework\MockObject\Rule\InvokedCount; -use PHPUnit\Framework\MockObject\Rule\MethodName; -use PHPUnit\Framework\MockObject\Rule\ParametersRule; -use PHPUnit\Framework\MockObject\Stub\Stub; -use PHPUnit\Util\ThrowableToStringMapper; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Matcher -{ - private readonly InvocationOrder $invocationRule; - private ?string $afterMatchBuilderId = null; - private ?MethodName $methodNameRule = null; - private ?ParametersRule $parametersRule = null; - private ?Stub $stub = null; - - public function __construct(InvocationOrder $rule) - { - $this->invocationRule = $rule; - } - - public function hasMatchers(): bool - { - return !$this->invocationRule instanceof AnyInvokedCount; - } - - public function hasMethodNameRule(): bool - { - return $this->methodNameRule !== null; - } - - public function methodNameRule(): MethodName - { - return $this->methodNameRule; - } - - public function setMethodNameRule(MethodName $rule): void - { - $this->methodNameRule = $rule; - } - - public function hasParametersRule(): bool - { - return $this->parametersRule !== null; - } - - public function setParametersRule(ParametersRule $rule): void - { - $this->parametersRule = $rule; - } - - public function setStub(Stub $stub): void - { - $this->stub = $stub; - } - - public function setAfterMatchBuilderId(string $id): void - { - $this->afterMatchBuilderId = $id; - } - - /** - * @throws Exception - * @throws ExpectationFailedException - * @throws MatchBuilderNotFoundException - * @throws MethodNameNotConfiguredException - * @throws RuntimeException - */ - public function invoked(Invocation $invocation): mixed - { - if ($this->methodNameRule === null) { - throw new MethodNameNotConfiguredException; - } - - if ($this->afterMatchBuilderId !== null) { - $matcher = $invocation->object() - ->__phpunit_getInvocationHandler() - ->lookupMatcher($this->afterMatchBuilderId); - - if (!$matcher) { - throw new MatchBuilderNotFoundException($this->afterMatchBuilderId); - } - } - - $this->invocationRule->invoked($invocation); - - try { - $this->parametersRule?->apply($invocation); - } catch (ExpectationFailedException $e) { - throw new ExpectationFailedException( - sprintf( - "Expectation failed for %s when %s\n%s", - $this->methodNameRule->toString(), - $this->invocationRule->toString(), - $e->getMessage(), - ), - $e->getComparisonFailure(), - ); - } - - if ($this->stub) { - return $this->stub->invoke($invocation); - } - - return $invocation->generateReturnValue(); - } - - /** - * @throws ExpectationFailedException - * @throws MatchBuilderNotFoundException - * @throws MethodNameNotConfiguredException - * @throws RuntimeException - */ - public function matches(Invocation $invocation): bool - { - if ($this->afterMatchBuilderId !== null) { - $matcher = $invocation->object() - ->__phpunit_getInvocationHandler() - ->lookupMatcher($this->afterMatchBuilderId); - - if (!$matcher) { - throw new MatchBuilderNotFoundException($this->afterMatchBuilderId); - } - - if (!$matcher->invocationRule->hasBeenInvoked()) { - return false; - } - } - - if ($this->methodNameRule === null) { - throw new MethodNameNotConfiguredException; - } - - if (!$this->invocationRule->matches($invocation)) { - return false; - } - - try { - if (!$this->methodNameRule->matches($invocation)) { - return false; - } - } catch (ExpectationFailedException $e) { - throw new ExpectationFailedException( - sprintf( - "Expectation failed for %s when %s\n%s", - $this->methodNameRule->toString(), - $this->invocationRule->toString(), - $e->getMessage(), - ), - $e->getComparisonFailure(), - ); - } - - return true; - } - - /** - * @throws ExpectationFailedException - * @throws MethodNameNotConfiguredException - */ - public function verify(): void - { - if ($this->methodNameRule === null) { - throw new MethodNameNotConfiguredException; - } - - try { - $this->invocationRule->verify(); - - if ($this->parametersRule === null) { - $this->parametersRule = new AnyParameters; - } - - $invocationIsAny = $this->invocationRule instanceof AnyInvokedCount; - $invocationIsNever = $this->invocationRule instanceof InvokedCount && $this->invocationRule->isNever(); - $invocationIsAtMost = $this->invocationRule instanceof InvokedAtMostCount; - - if (!$invocationIsAny && !$invocationIsNever && !$invocationIsAtMost) { - $this->parametersRule->verify(); - } - } catch (ExpectationFailedException $e) { - throw new ExpectationFailedException( - sprintf( - "Expectation failed for %s when %s.\n%s", - $this->methodNameRule->toString(), - $this->invocationRule->toString(), - ThrowableToStringMapper::map($e), - ), - ); - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/MethodNameConstraint.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/MethodNameConstraint.php deleted file mode 100644 index db17134b..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/MethodNameConstraint.php +++ /dev/null @@ -1,42 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject; - -use function sprintf; -use function strtolower; -use PHPUnit\Framework\Constraint\Constraint; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class MethodNameConstraint extends Constraint -{ - private readonly string $methodName; - - public function __construct(string $methodName) - { - $this->methodName = $methodName; - } - - public function toString(): string - { - return sprintf( - 'is "%s"', - $this->methodName, - ); - } - - protected function matches(mixed $other): bool - { - return strtolower($this->methodName) === strtolower((string) $other); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/ReturnValueGenerator.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/ReturnValueGenerator.php deleted file mode 100644 index 7cf1cd6a..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/ReturnValueGenerator.php +++ /dev/null @@ -1,250 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject; - -use function array_keys; -use function array_map; -use function explode; -use function in_array; -use function interface_exists; -use function sprintf; -use function str_contains; -use function str_ends_with; -use function str_starts_with; -use function substr; -use PHPUnit\Framework\MockObject\Generator\Generator; -use ReflectionClass; -use stdClass; -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ReturnValueGenerator -{ - /** - * @psalm-param class-string $className - * @psalm-param non-empty-string $methodName - * @psalm-param class-string $stubClassName - * - * @throws Exception - */ - public function generate(string $className, string $methodName, string $stubClassName, string $returnType): mixed - { - $intersection = false; - $union = false; - - if (str_contains($returnType, '|')) { - $types = explode('|', $returnType); - $union = true; - - foreach (array_keys($types) as $key) { - if (str_starts_with($types[$key], '(') && str_ends_with($types[$key], ')')) { - $types[$key] = substr($types[$key], 1, -1); - } - } - } elseif (str_contains($returnType, '&')) { - $types = explode('&', $returnType); - $intersection = true; - } else { - $types = [$returnType]; - } - - if (!$intersection) { - $lowerTypes = array_map('strtolower', $types); - - if (in_array('', $lowerTypes, true) || - in_array('null', $lowerTypes, true) || - in_array('mixed', $lowerTypes, true) || - in_array('void', $lowerTypes, true)) { - return null; - } - - if (in_array('true', $lowerTypes, true)) { - return true; - } - - if (in_array('false', $lowerTypes, true) || - in_array('bool', $lowerTypes, true)) { - return false; - } - - if (in_array('float', $lowerTypes, true)) { - return 0.0; - } - - if (in_array('int', $lowerTypes, true)) { - return 0; - } - - if (in_array('string', $lowerTypes, true)) { - return ''; - } - - if (in_array('array', $lowerTypes, true)) { - return []; - } - - if (in_array('static', $lowerTypes, true)) { - return $this->newInstanceOf($stubClassName, $className, $methodName); - } - - if (in_array('object', $lowerTypes, true)) { - return new stdClass; - } - - if (in_array('callable', $lowerTypes, true) || - in_array('closure', $lowerTypes, true)) { - return static function (): void - { - }; - } - - if (in_array('traversable', $lowerTypes, true) || - in_array('generator', $lowerTypes, true) || - in_array('iterable', $lowerTypes, true)) { - $generator = static function (): \Generator - { - yield from []; - }; - - return $generator(); - } - - if (!$union) { - return $this->testDoubleFor($returnType, $className, $methodName); - } - } - - if ($union) { - foreach ($types as $type) { - if (str_contains($type, '&')) { - $_types = explode('&', $type); - - if ($this->onlyInterfaces($_types)) { - return $this->testDoubleForIntersectionOfInterfaces($_types, $className, $methodName); - } - } - } - } - - if ($intersection && $this->onlyInterfaces($types)) { - return $this->testDoubleForIntersectionOfInterfaces($types, $className, $methodName); - } - - $reason = ''; - - if ($union) { - $reason = ' because the declared return type is a union'; - } elseif ($intersection) { - $reason = ' because the declared return type is an intersection'; - } - - throw new RuntimeException( - sprintf( - 'Return value for %s::%s() cannot be generated%s, please configure a return value for this method', - $className, - $methodName, - $reason, - ), - ); - } - - /** - * @psalm-param non-empty-list $types - */ - private function onlyInterfaces(array $types): bool - { - foreach ($types as $type) { - if (!interface_exists($type)) { - return false; - } - } - - return true; - } - - /** - * @psalm-param class-string $stubClassName - * @psalm-param class-string $className - * @psalm-param non-empty-string $methodName - * - * @throws RuntimeException - */ - private function newInstanceOf(string $stubClassName, string $className, string $methodName): Stub - { - try { - return (new ReflectionClass($stubClassName))->newInstanceWithoutConstructor(); - // @codeCoverageIgnoreStart - } catch (Throwable $t) { - throw new RuntimeException( - sprintf( - 'Return value for %s::%s() cannot be generated: %s', - $className, - $methodName, - $t->getMessage(), - ), - ); - // @codeCoverageIgnoreEnd - } - } - - /** - * @psalm-param class-string $type - * @psalm-param class-string $className - * @psalm-param non-empty-string $methodName - * - * @throws RuntimeException - */ - private function testDoubleFor(string $type, string $className, string $methodName): Stub - { - try { - return (new Generator)->testDouble($type, false, [], [], '', false); - // @codeCoverageIgnoreStart - } catch (Throwable $t) { - throw new RuntimeException( - sprintf( - 'Return value for %s::%s() cannot be generated: %s', - $className, - $methodName, - $t->getMessage(), - ), - ); - // @codeCoverageIgnoreEnd - } - } - - /** - * @psalm-param non-empty-list $types - * @psalm-param class-string $className - * @psalm-param non-empty-string $methodName - * - * @throws RuntimeException - */ - private function testDoubleForIntersectionOfInterfaces(array $types, string $className, string $methodName): Stub - { - try { - return (new Generator)->testDoubleForInterfaceIntersection($types, false); - // @codeCoverageIgnoreStart - } catch (Throwable $t) { - throw new RuntimeException( - sprintf( - 'Return value for %s::%s() cannot be generated: %s', - $className, - $methodName, - $t->getMessage(), - ), - ); - // @codeCoverageIgnoreEnd - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/AnyInvokedCount.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/AnyInvokedCount.php deleted file mode 100644 index 382f9308..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/AnyInvokedCount.php +++ /dev/null @@ -1,34 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Rule; - -use PHPUnit\Framework\MockObject\Invocation as BaseInvocation; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class AnyInvokedCount extends InvocationOrder -{ - public function toString(): string - { - return 'invoked zero or more times'; - } - - public function verify(): void - { - } - - public function matches(BaseInvocation $invocation): bool - { - return true; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/AnyParameters.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/AnyParameters.php deleted file mode 100644 index 01a54d1b..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/AnyParameters.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Rule; - -use PHPUnit\Framework\MockObject\Invocation as BaseInvocation; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class AnyParameters implements ParametersRule -{ - public function apply(BaseInvocation $invocation): void - { - } - - public function verify(): void - { - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvocationOrder.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvocationOrder.php deleted file mode 100644 index 5d8429d8..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvocationOrder.php +++ /dev/null @@ -1,52 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Rule; - -use function count; -use PHPUnit\Framework\MockObject\Invocation as BaseInvocation; -use PHPUnit\Framework\SelfDescribing; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -abstract class InvocationOrder implements SelfDescribing -{ - /** - * @psalm-var list - */ - private array $invocations = []; - - public function numberOfInvocations(): int - { - return count($this->invocations); - } - - public function hasBeenInvoked(): bool - { - return count($this->invocations) > 0; - } - - final public function invoked(BaseInvocation $invocation): void - { - $this->invocations[] = $invocation; - - $this->invokedDo($invocation); - } - - abstract public function matches(BaseInvocation $invocation): bool; - - abstract public function verify(): void; - - protected function invokedDo(BaseInvocation $invocation): void - { - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedAtLeastCount.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedAtLeastCount.php deleted file mode 100644 index a78d933d..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedAtLeastCount.php +++ /dev/null @@ -1,66 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Rule; - -use function sprintf; -use PHPUnit\Framework\ExpectationFailedException; -use PHPUnit\Framework\MockObject\Invocation as BaseInvocation; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class InvokedAtLeastCount extends InvocationOrder -{ - private readonly int $requiredInvocations; - - public function __construct(int $requiredInvocations) - { - $this->requiredInvocations = $requiredInvocations; - } - - public function toString(): string - { - return sprintf( - 'invoked at least %d time%s', - $this->requiredInvocations, - $this->requiredInvocations !== 1 ? 's' : '', - ); - } - - /** - * Verifies that the current expectation is valid. If everything is OK the - * code should just return, if not it must throw an exception. - * - * @throws ExpectationFailedException - */ - public function verify(): void - { - $actualInvocations = $this->numberOfInvocations(); - - if ($actualInvocations < $this->requiredInvocations) { - throw new ExpectationFailedException( - sprintf( - 'Expected invocation at least %d time%s but it occurred %d time%s.', - $this->requiredInvocations, - $this->requiredInvocations !== 1 ? 's' : '', - $actualInvocations, - $actualInvocations !== 1 ? 's' : '', - ), - ); - } - } - - public function matches(BaseInvocation $invocation): bool - { - return true; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedAtLeastOnce.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedAtLeastOnce.php deleted file mode 100644 index 91026f53..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedAtLeastOnce.php +++ /dev/null @@ -1,48 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Rule; - -use PHPUnit\Framework\ExpectationFailedException; -use PHPUnit\Framework\MockObject\Invocation as BaseInvocation; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class InvokedAtLeastOnce extends InvocationOrder -{ - public function toString(): string - { - return 'invoked at least once'; - } - - /** - * Verifies that the current expectation is valid. If everything is OK the - * code should just return, if not it must throw an exception. - * - * @throws ExpectationFailedException - */ - public function verify(): void - { - $count = $this->numberOfInvocations(); - - if ($count < 1) { - throw new ExpectationFailedException( - 'Expected invocation at least once but it never occurred.', - ); - } - } - - public function matches(BaseInvocation $invocation): bool - { - return true; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedAtMostCount.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedAtMostCount.php deleted file mode 100644 index 0cfda5e1..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedAtMostCount.php +++ /dev/null @@ -1,66 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Rule; - -use function sprintf; -use PHPUnit\Framework\ExpectationFailedException; -use PHPUnit\Framework\MockObject\Invocation as BaseInvocation; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class InvokedAtMostCount extends InvocationOrder -{ - private readonly int $allowedInvocations; - - public function __construct(int $allowedInvocations) - { - $this->allowedInvocations = $allowedInvocations; - } - - public function toString(): string - { - return sprintf( - 'invoked at most %d time%s', - $this->allowedInvocations, - $this->allowedInvocations !== 1 ? 's' : '', - ); - } - - /** - * Verifies that the current expectation is valid. If everything is OK the - * code should just return, if not it must throw an exception. - * - * @throws ExpectationFailedException - */ - public function verify(): void - { - $actualInvocations = $this->numberOfInvocations(); - - if ($actualInvocations > $this->allowedInvocations) { - throw new ExpectationFailedException( - sprintf( - 'Expected invocation at most %d time%s but it occurred %d time%s.', - $this->allowedInvocations, - $this->allowedInvocations !== 1 ? 's' : '', - $actualInvocations, - $actualInvocations !== 1 ? 's' : '', - ), - ); - } - } - - public function matches(BaseInvocation $invocation): bool - { - return true; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedCount.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedCount.php deleted file mode 100644 index 3f0e505a..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedCount.php +++ /dev/null @@ -1,94 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Rule; - -use function sprintf; -use PHPUnit\Framework\ExpectationFailedException; -use PHPUnit\Framework\MockObject\Invocation as BaseInvocation; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class InvokedCount extends InvocationOrder -{ - private readonly int $expectedCount; - - public function __construct(int $expectedCount) - { - $this->expectedCount = $expectedCount; - } - - public function isNever(): bool - { - return $this->expectedCount === 0; - } - - public function toString(): string - { - return sprintf( - 'invoked %d time%s', - $this->expectedCount, - $this->expectedCount !== 1 ? 's' : '', - ); - } - - public function matches(BaseInvocation $invocation): bool - { - return true; - } - - /** - * Verifies that the current expectation is valid. If everything is OK the - * code should just return, if not it must throw an exception. - * - * @throws ExpectationFailedException - */ - public function verify(): void - { - $actualCount = $this->numberOfInvocations(); - - if ($actualCount !== $this->expectedCount) { - throw new ExpectationFailedException( - sprintf( - 'Method was expected to be called %d time%s, actually called %d time%s.', - $this->expectedCount, - $this->expectedCount !== 1 ? 's' : '', - $actualCount, - $actualCount !== 1 ? 's' : '', - ), - ); - } - } - - /** - * @throws ExpectationFailedException - */ - protected function invokedDo(BaseInvocation $invocation): void - { - $count = $this->numberOfInvocations(); - - if ($count > $this->expectedCount) { - $message = $invocation->toString() . ' '; - - $message .= match ($this->expectedCount) { - 0 => 'was not expected to be called.', - 1 => 'was not expected to be called more than once.', - default => sprintf( - 'was not expected to be called more than %d times.', - $this->expectedCount, - ), - }; - - throw new ExpectationFailedException($message); - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/MethodName.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/MethodName.php deleted file mode 100644 index 8ca6da68..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/MethodName.php +++ /dev/null @@ -1,60 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Rule; - -use function is_string; -use PHPUnit\Framework\Constraint\Constraint; -use PHPUnit\Framework\ExpectationFailedException; -use PHPUnit\Framework\InvalidArgumentException; -use PHPUnit\Framework\MockObject\Invocation as BaseInvocation; -use PHPUnit\Framework\MockObject\MethodNameConstraint; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class MethodName -{ - private readonly Constraint $constraint; - - /** - * @throws InvalidArgumentException - */ - public function __construct(Constraint|string $constraint) - { - if (is_string($constraint)) { - $constraint = new MethodNameConstraint($constraint); - } - - $this->constraint = $constraint; - } - - public function toString(): string - { - return 'method name ' . $this->constraint->toString(); - } - - /** - * @throws ExpectationFailedException - */ - public function matches(BaseInvocation $invocation): bool - { - return $this->matchesName($invocation->methodName()); - } - - /** - * @throws ExpectationFailedException - */ - public function matchesName(string $methodName): bool - { - return (bool) $this->constraint->evaluate($methodName, '', true); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/Parameters.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/Parameters.php deleted file mode 100644 index 61c79187..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/Parameters.php +++ /dev/null @@ -1,141 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Rule; - -use function count; -use function sprintf; -use Exception; -use PHPUnit\Framework\Constraint\Callback; -use PHPUnit\Framework\Constraint\Constraint; -use PHPUnit\Framework\Constraint\IsAnything; -use PHPUnit\Framework\Constraint\IsEqual; -use PHPUnit\Framework\ExpectationFailedException; -use PHPUnit\Framework\MockObject\Invocation as BaseInvocation; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Parameters implements ParametersRule -{ - /** - * @psalm-var list - */ - private array $parameters = []; - private ?BaseInvocation $invocation = null; - private null|bool|ExpectationFailedException $parameterVerificationResult; - - /** - * @throws \PHPUnit\Framework\Exception - */ - public function __construct(array $parameters) - { - foreach ($parameters as $parameter) { - if (!($parameter instanceof Constraint)) { - $parameter = new IsEqual( - $parameter, - ); - } - - $this->parameters[] = $parameter; - } - } - - /** - * @throws Exception - */ - public function apply(BaseInvocation $invocation): void - { - $this->invocation = $invocation; - $this->parameterVerificationResult = null; - - try { - $this->parameterVerificationResult = $this->doVerify(); - } catch (ExpectationFailedException $e) { - $this->parameterVerificationResult = $e; - - throw $this->parameterVerificationResult; - } - } - - /** - * Checks if the invocation $invocation matches the current rules. If it - * does the rule will get the invoked() method called which should check - * if an expectation is met. - * - * @throws ExpectationFailedException - */ - public function verify(): void - { - $this->doVerify(); - } - - /** - * @throws ExpectationFailedException - */ - private function doVerify(): bool - { - if (isset($this->parameterVerificationResult)) { - return $this->guardAgainstDuplicateEvaluationOfParameterConstraints(); - } - - if ($this->invocation === null) { - throw new ExpectationFailedException('Doubled method does not exist.'); - } - - if (count($this->invocation->parameters()) < count($this->parameters)) { - $message = 'Parameter count for invocation %s is too low.'; - - // The user called `->with($this->anything())`, but may have meant - // `->withAnyParameters()`. - // - // @see https://github.com/sebastianbergmann/phpunit-mock-objects/issues/199 - if (count($this->parameters) === 1 && - $this->parameters[0]::class === IsAnything::class) { - $message .= "\nTo allow 0 or more parameters with any value, omit ->with() or use ->withAnyParameters() instead."; - } - - throw new ExpectationFailedException( - sprintf($message, $this->invocation->toString()), - ); - } - - foreach ($this->parameters as $i => $parameter) { - if ($parameter instanceof Callback && $parameter->isVariadic()) { - $other = $this->invocation->parameters(); - } else { - $other = $this->invocation->parameters()[$i]; - } - $parameter->evaluate( - $other, - sprintf( - 'Parameter %s for invocation %s does not match expected value.', - $i, - $this->invocation->toString(), - ), - ); - } - - return true; - } - - /** - * @throws ExpectationFailedException - */ - private function guardAgainstDuplicateEvaluationOfParameterConstraints(): bool - { - if ($this->parameterVerificationResult instanceof ExpectationFailedException) { - throw $this->parameterVerificationResult; - } - - return (bool) $this->parameterVerificationResult; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ConsecutiveCalls.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ConsecutiveCalls.php deleted file mode 100644 index 7b1297de..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ConsecutiveCalls.php +++ /dev/null @@ -1,53 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Stub; - -use function array_shift; -use function count; -use PHPUnit\Framework\MockObject\Invocation; -use PHPUnit\Framework\MockObject\NoMoreReturnValuesConfiguredException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ConsecutiveCalls implements Stub -{ - private array $stack; - private int $numberOfConfiguredReturnValues; - - public function __construct(array $stack) - { - $this->stack = $stack; - $this->numberOfConfiguredReturnValues = count($stack); - } - - /** - * @throws NoMoreReturnValuesConfiguredException - */ - public function invoke(Invocation $invocation): mixed - { - if (empty($this->stack)) { - throw new NoMoreReturnValuesConfiguredException( - $invocation, - $this->numberOfConfiguredReturnValues, - ); - } - - $value = array_shift($this->stack); - - if ($value instanceof Stub) { - $value = $value->invoke($invocation); - } - - return $value; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/Exception.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/Exception.php deleted file mode 100644 index a17fe97b..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/Exception.php +++ /dev/null @@ -1,36 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Stub; - -use PHPUnit\Framework\MockObject\Invocation; -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Exception implements Stub -{ - private readonly Throwable $exception; - - public function __construct(Throwable $exception) - { - $this->exception = $exception; - } - - /** - * @throws Throwable - */ - public function invoke(Invocation $invocation): never - { - throw $this->exception; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnArgument.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnArgument.php deleted file mode 100644 index 18fdce0f..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnArgument.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Stub; - -use PHPUnit\Framework\MockObject\Invocation; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ReturnArgument implements Stub -{ - private readonly int $argumentIndex; - - public function __construct(int $argumentIndex) - { - $this->argumentIndex = $argumentIndex; - } - - public function invoke(Invocation $invocation): mixed - { - return $invocation->parameters()[$this->argumentIndex] ?? null; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnCallback.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnCallback.php deleted file mode 100644 index 4e4cd531..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnCallback.php +++ /dev/null @@ -1,36 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Stub; - -use function call_user_func_array; -use PHPUnit\Framework\MockObject\Invocation; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ReturnCallback implements Stub -{ - /** - * @var callable - */ - private $callback; - - public function __construct(callable $callback) - { - $this->callback = $callback; - } - - public function invoke(Invocation $invocation): mixed - { - return call_user_func_array($this->callback, $invocation->parameters()); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnReference.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnReference.php deleted file mode 100644 index 448df452..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnReference.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Stub; - -use PHPUnit\Framework\MockObject\Invocation; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ReturnReference implements Stub -{ - private mixed $reference; - - public function __construct(mixed &$reference) - { - $this->reference = &$reference; - } - - public function invoke(Invocation $invocation): mixed - { - return $this->reference; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnSelf.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnSelf.php deleted file mode 100644 index 4101d71a..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnSelf.php +++ /dev/null @@ -1,29 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Stub; - -use PHPUnit\Framework\MockObject\Invocation; -use PHPUnit\Framework\MockObject\RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ReturnSelf implements Stub -{ - /** - * @throws RuntimeException - */ - public function invoke(Invocation $invocation): object - { - return $invocation->object(); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnStub.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnStub.php deleted file mode 100644 index 278c4da9..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnStub.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Stub; - -use PHPUnit\Framework\MockObject\Invocation; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ReturnStub implements Stub -{ - private readonly mixed $value; - - public function __construct(mixed $value) - { - $this->value = $value; - } - - public function invoke(Invocation $invocation): mixed - { - return $this->value; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnValueMap.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnValueMap.php deleted file mode 100644 index b1b62c5f..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnValueMap.php +++ /dev/null @@ -1,49 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Stub; - -use function array_pop; -use function count; -use function is_array; -use PHPUnit\Framework\MockObject\Invocation; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ReturnValueMap implements Stub -{ - private readonly array $valueMap; - - public function __construct(array $valueMap) - { - $this->valueMap = $valueMap; - } - - public function invoke(Invocation $invocation): mixed - { - $parameterCount = count($invocation->parameters()); - - foreach ($this->valueMap as $map) { - if (!is_array($map) || $parameterCount !== (count($map) - 1)) { - continue; - } - - $return = array_pop($map); - - if ($invocation->parameters() === $map) { - return $return; - } - } - - return null; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/Stub.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/Stub.php deleted file mode 100644 index 46d9e53a..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/Stub.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Stub; - -use PHPUnit\Framework\MockObject\Invocation; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -interface Stub -{ - /** - * Fakes the processing of the invocation $invocation by returning a - * specific value. - */ - public function invoke(Invocation $invocation): mixed; -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Reorderable.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Reorderable.php deleted file mode 100644 index cc035d96..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/Reorderable.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -interface Reorderable -{ - public function sortId(): string; - - /** - * @psalm-return list - */ - public function provides(): array; - - /** - * @psalm-return list - */ - public function requires(): array; -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/SelfDescribing.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/SelfDescribing.php deleted file mode 100644 index 122c31b5..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/SelfDescribing.php +++ /dev/null @@ -1,23 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -interface SelfDescribing -{ - /** - * Returns a string representation of the object. - */ - public function toString(): string; -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestBuilder.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestBuilder.php deleted file mode 100644 index 9bf77b31..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestBuilder.php +++ /dev/null @@ -1,282 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -use function assert; -use PHPUnit\Metadata\Api\DataProvider; -use PHPUnit\Metadata\Api\Groups; -use PHPUnit\Metadata\Api\Requirements; -use PHPUnit\Metadata\BackupGlobals; -use PHPUnit\Metadata\BackupStaticProperties; -use PHPUnit\Metadata\ExcludeGlobalVariableFromBackup; -use PHPUnit\Metadata\ExcludeStaticPropertyFromBackup; -use PHPUnit\Metadata\Parser\Registry as MetadataRegistry; -use PHPUnit\Metadata\PreserveGlobalState; -use PHPUnit\TextUI\Configuration\Registry as ConfigurationRegistry; -use ReflectionClass; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestBuilder -{ - /** - * @psalm-param non-empty-string $methodName - * - * @throws InvalidDataProviderException - */ - public function build(ReflectionClass $theClass, string $methodName): Test - { - $className = $theClass->getName(); - - $data = null; - - if ($this->requirementsSatisfied($className, $methodName)) { - $data = (new DataProvider)->providedData($className, $methodName); - } - - if ($data !== null) { - return $this->buildDataProviderTestSuite( - $methodName, - $className, - $data, - $this->shouldTestMethodBeRunInSeparateProcess($className, $methodName), - $this->shouldGlobalStateBePreserved($className, $methodName), - $this->shouldAllTestMethodsOfTestClassBeRunInSingleSeparateProcess($className), - $this->backupSettings($className, $methodName), - ); - } - - $test = new $className($methodName); - - assert($test instanceof TestCase); - - $this->configureTestCase( - $test, - $this->shouldTestMethodBeRunInSeparateProcess($className, $methodName), - $this->shouldGlobalStateBePreserved($className, $methodName), - $this->shouldAllTestMethodsOfTestClassBeRunInSingleSeparateProcess($className), - $this->backupSettings($className, $methodName), - ); - - return $test; - } - - /** - * @psalm-param class-string $className - * @psalm-param non-empty-string $methodName - * @psalm-param array{backupGlobals: ?bool, backupGlobalsExcludeList: list, backupStaticProperties: ?bool, backupStaticPropertiesExcludeList: array>} $backupSettings - */ - private function buildDataProviderTestSuite(string $methodName, string $className, array $data, bool $runTestInSeparateProcess, ?bool $preserveGlobalState, bool $runClassInSeparateProcess, array $backupSettings): DataProviderTestSuite - { - $dataProviderTestSuite = DataProviderTestSuite::empty( - $className . '::' . $methodName, - ); - - $groups = (new Groups)->groups($className, $methodName); - - foreach ($data as $_dataName => $_data) { - $_test = new $className($methodName); - - assert($_test instanceof TestCase); - - $_test->setData($_dataName, $_data); - - $this->configureTestCase( - $_test, - $runTestInSeparateProcess, - $preserveGlobalState, - $runClassInSeparateProcess, - $backupSettings, - ); - - $dataProviderTestSuite->addTest($_test, $groups); - } - - return $dataProviderTestSuite; - } - - /** - * @psalm-param array{backupGlobals: ?bool, backupGlobalsExcludeList: list, backupStaticProperties: ?bool, backupStaticPropertiesExcludeList: array>} $backupSettings - */ - private function configureTestCase(TestCase $test, bool $runTestInSeparateProcess, ?bool $preserveGlobalState, bool $runClassInSeparateProcess, array $backupSettings): void - { - if ($runTestInSeparateProcess) { - $test->setRunTestInSeparateProcess(true); - } - - if ($runClassInSeparateProcess) { - $test->setRunClassInSeparateProcess(true); - } - - if ($preserveGlobalState !== null) { - $test->setPreserveGlobalState($preserveGlobalState); - } - - if ($backupSettings['backupGlobals'] !== null) { - $test->setBackupGlobals($backupSettings['backupGlobals']); - } else { - $test->setBackupGlobals(ConfigurationRegistry::get()->backupGlobals()); - } - - $test->setBackupGlobalsExcludeList($backupSettings['backupGlobalsExcludeList']); - - if ($backupSettings['backupStaticProperties'] !== null) { - $test->setBackupStaticProperties($backupSettings['backupStaticProperties']); - } else { - $test->setBackupStaticProperties(ConfigurationRegistry::get()->backupStaticProperties()); - } - - $test->setBackupStaticPropertiesExcludeList($backupSettings['backupStaticPropertiesExcludeList']); - } - - /** - * @psalm-param class-string $className - * @psalm-param non-empty-string $methodName - * - * @psalm-return array{backupGlobals: ?bool, backupGlobalsExcludeList: list, backupStaticProperties: ?bool, backupStaticPropertiesExcludeList: array>} - */ - private function backupSettings(string $className, string $methodName): array - { - $metadataForClass = MetadataRegistry::parser()->forClass($className); - $metadataForMethod = MetadataRegistry::parser()->forMethod($className, $methodName); - $metadataForClassAndMethod = MetadataRegistry::parser()->forClassAndMethod($className, $methodName); - - $backupGlobals = null; - $backupGlobalsExcludeList = []; - - if ($metadataForMethod->isBackupGlobals()->isNotEmpty()) { - $metadata = $metadataForMethod->isBackupGlobals()->asArray()[0]; - - assert($metadata instanceof BackupGlobals); - - if ($metadata->enabled()) { - $backupGlobals = true; - } - } elseif ($metadataForClass->isBackupGlobals()->isNotEmpty()) { - $metadata = $metadataForClass->isBackupGlobals()->asArray()[0]; - - assert($metadata instanceof BackupGlobals); - - if ($metadata->enabled()) { - $backupGlobals = true; - } - } - - foreach ($metadataForClassAndMethod->isExcludeGlobalVariableFromBackup() as $metadata) { - assert($metadata instanceof ExcludeGlobalVariableFromBackup); - - $backupGlobalsExcludeList[] = $metadata->globalVariableName(); - } - - $backupStaticProperties = null; - $backupStaticPropertiesExcludeList = []; - - if ($metadataForMethod->isBackupStaticProperties()->isNotEmpty()) { - $metadata = $metadataForMethod->isBackupStaticProperties()->asArray()[0]; - - assert($metadata instanceof BackupStaticProperties); - - if ($metadata->enabled()) { - $backupStaticProperties = true; - } - } elseif ($metadataForClass->isBackupStaticProperties()->isNotEmpty()) { - $metadata = $metadataForClass->isBackupStaticProperties()->asArray()[0]; - - assert($metadata instanceof BackupStaticProperties); - - if ($metadata->enabled()) { - $backupStaticProperties = true; - } - } - - foreach ($metadataForClassAndMethod->isExcludeStaticPropertyFromBackup() as $metadata) { - assert($metadata instanceof ExcludeStaticPropertyFromBackup); - - if (!isset($backupStaticPropertiesExcludeList[$metadata->className()])) { - $backupStaticPropertiesExcludeList[$metadata->className()] = []; - } - - $backupStaticPropertiesExcludeList[$metadata->className()][] = $metadata->propertyName(); - } - - return [ - 'backupGlobals' => $backupGlobals, - 'backupGlobalsExcludeList' => $backupGlobalsExcludeList, - 'backupStaticProperties' => $backupStaticProperties, - 'backupStaticPropertiesExcludeList' => $backupStaticPropertiesExcludeList, - ]; - } - - /** - * @psalm-param class-string $className - * @psalm-param non-empty-string $methodName - */ - private function shouldGlobalStateBePreserved(string $className, string $methodName): ?bool - { - $metadataForMethod = MetadataRegistry::parser()->forMethod($className, $methodName); - - if ($metadataForMethod->isPreserveGlobalState()->isNotEmpty()) { - $metadata = $metadataForMethod->isPreserveGlobalState()->asArray()[0]; - - assert($metadata instanceof PreserveGlobalState); - - return $metadata->enabled(); - } - - $metadataForClass = MetadataRegistry::parser()->forClass($className); - - if ($metadataForClass->isPreserveGlobalState()->isNotEmpty()) { - $metadata = $metadataForClass->isPreserveGlobalState()->asArray()[0]; - - assert($metadata instanceof PreserveGlobalState); - - return $metadata->enabled(); - } - - return null; - } - - /** - * @psalm-param class-string $className - * @psalm-param non-empty-string $methodName - */ - private function shouldTestMethodBeRunInSeparateProcess(string $className, string $methodName): bool - { - if (MetadataRegistry::parser()->forClass($className)->isRunTestsInSeparateProcesses()->isNotEmpty()) { - return true; - } - - if (MetadataRegistry::parser()->forMethod($className, $methodName)->isRunInSeparateProcess()->isNotEmpty()) { - return true; - } - - return false; - } - - /** - * @psalm-param class-string $className - */ - private function shouldAllTestMethodsOfTestClassBeRunInSingleSeparateProcess(string $className): bool - { - return MetadataRegistry::parser()->forClass($className)->isRunClassInSeparateProcess()->isNotEmpty(); - } - - /** - * @psalm-param class-string $className - * @psalm-param non-empty-string $methodName - */ - private function requirementsSatisfied(string $className, string $methodName): bool - { - return (new Requirements)->requirementsNotSatisfiedFor($className, $methodName) === []; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestCase.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestCase.php deleted file mode 100644 index 8d32c6a4..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestCase.php +++ /dev/null @@ -1,2385 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -use const LC_ALL; -use const LC_COLLATE; -use const LC_CTYPE; -use const LC_MONETARY; -use const LC_NUMERIC; -use const LC_TIME; -use const PATHINFO_FILENAME; -use const PHP_EOL; -use const PHP_URL_PATH; -use function array_is_list; -use function array_keys; -use function array_map; -use function array_merge; -use function array_values; -use function assert; -use function basename; -use function chdir; -use function class_exists; -use function clearstatcache; -use function count; -use function defined; -use function explode; -use function getcwd; -use function implode; -use function in_array; -use function ini_set; -use function is_array; -use function is_callable; -use function is_int; -use function is_object; -use function is_string; -use function libxml_clear_errors; -use function method_exists; -use function ob_end_clean; -use function ob_get_clean; -use function ob_get_contents; -use function ob_get_level; -use function ob_start; -use function parse_url; -use function pathinfo; -use function preg_replace; -use function setlocale; -use function sprintf; -use function str_contains; -use function trim; -use AssertionError; -use DeepCopy\DeepCopy; -use PHPUnit\Event; -use PHPUnit\Event\NoPreviousThrowableException; -use PHPUnit\Event\RuntimeException; -use PHPUnit\Event\TestData\MoreThanOneDataSetFromDataProviderException; -use PHPUnit\Framework\Constraint\Exception as ExceptionConstraint; -use PHPUnit\Framework\Constraint\ExceptionCode; -use PHPUnit\Framework\Constraint\ExceptionMessageIsOrContains; -use PHPUnit\Framework\Constraint\ExceptionMessageMatchesRegularExpression; -use PHPUnit\Framework\MockObject\Exception as MockObjectException; -use PHPUnit\Framework\MockObject\Generator\Generator as MockGenerator; -use PHPUnit\Framework\MockObject\MockBuilder; -use PHPUnit\Framework\MockObject\MockObject; -use PHPUnit\Framework\MockObject\MockObjectInternal; -use PHPUnit\Framework\MockObject\Rule\AnyInvokedCount as AnyInvokedCountMatcher; -use PHPUnit\Framework\MockObject\Rule\InvokedAtLeastCount as InvokedAtLeastCountMatcher; -use PHPUnit\Framework\MockObject\Rule\InvokedAtLeastOnce as InvokedAtLeastOnceMatcher; -use PHPUnit\Framework\MockObject\Rule\InvokedAtMostCount as InvokedAtMostCountMatcher; -use PHPUnit\Framework\MockObject\Rule\InvokedCount as InvokedCountMatcher; -use PHPUnit\Framework\MockObject\Stub; -use PHPUnit\Framework\MockObject\Stub\ConsecutiveCalls as ConsecutiveCallsStub; -use PHPUnit\Framework\MockObject\Stub\Exception as ExceptionStub; -use PHPUnit\Framework\MockObject\Stub\ReturnArgument as ReturnArgumentStub; -use PHPUnit\Framework\MockObject\Stub\ReturnCallback as ReturnCallbackStub; -use PHPUnit\Framework\MockObject\Stub\ReturnSelf as ReturnSelfStub; -use PHPUnit\Framework\MockObject\Stub\ReturnStub; -use PHPUnit\Framework\MockObject\Stub\ReturnValueMap as ReturnValueMapStub; -use PHPUnit\Framework\TestSize\TestSize; -use PHPUnit\Framework\TestStatus\TestStatus; -use PHPUnit\Metadata\Api\Groups; -use PHPUnit\Metadata\Api\HookMethods; -use PHPUnit\Metadata\Api\Requirements; -use PHPUnit\Metadata\Parser\Registry as MetadataRegistry; -use PHPUnit\TestRunner\TestResult\PassedTests; -use PHPUnit\TextUI\Configuration\Registry as ConfigurationRegistry; -use PHPUnit\Util\Cloner; -use PHPUnit\Util\Test as TestUtil; -use ReflectionClass; -use ReflectionException; -use ReflectionMethod; -use ReflectionObject; -use ReflectionParameter; -use SebastianBergmann\CodeCoverage\UnintentionallyCoveredCodeException; -use SebastianBergmann\Comparator\Comparator; -use SebastianBergmann\Comparator\Factory as ComparatorFactory; -use SebastianBergmann\Diff\Differ; -use SebastianBergmann\Diff\Output\UnifiedDiffOutputBuilder; -use SebastianBergmann\Exporter\Exporter; -use SebastianBergmann\GlobalState\ExcludeList as GlobalStateExcludeList; -use SebastianBergmann\GlobalState\Restorer; -use SebastianBergmann\GlobalState\Snapshot; -use SebastianBergmann\Invoker\TimeoutException; -use SebastianBergmann\ObjectEnumerator\Enumerator; -use SebastianBergmann\RecursionContext\Context; -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -abstract class TestCase extends Assert implements Reorderable, SelfDescribing, Test -{ - private const LOCALE_CATEGORIES = [LC_ALL, LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, LC_TIME]; - private ?bool $backupGlobals = null; - - /** - * @psalm-var list - */ - private array $backupGlobalsExcludeList = []; - private ?bool $backupStaticProperties = null; - - /** - * @psalm-var array> - */ - private array $backupStaticPropertiesExcludeList = []; - private ?Snapshot $snapshot = null; - private ?bool $runClassInSeparateProcess = null; - private ?bool $runTestInSeparateProcess = null; - private bool $preserveGlobalState = false; - private bool $inIsolation = false; - private ?string $expectedException = null; - private ?string $expectedExceptionMessage = null; - private ?string $expectedExceptionMessageRegExp = null; - private null|int|string $expectedExceptionCode = null; - - /** - * @psalm-var list - */ - private array $providedTests = []; - private array $data = []; - private int|string $dataName = ''; - - /** - * @psalm-var non-empty-string - */ - private string $name; - - /** - * @psalm-var list - */ - private array $groups = []; - - /** - * @psalm-var list - */ - private array $dependencies = []; - private array $dependencyInput = []; - - /** - * @psalm-var array - */ - private array $iniSettings = []; - private array $locale = []; - - /** - * @psalm-var list - */ - private array $mockObjects = []; - private bool $registerMockObjectsFromTestArgumentsRecursively = false; - private TestStatus $status; - private int $numberOfAssertionsPerformed = 0; - private mixed $testResult = null; - private string $output = ''; - private ?string $outputExpectedRegex = null; - private ?string $outputExpectedString = null; - private bool $outputBufferingActive = false; - private int $outputBufferingLevel; - private bool $outputRetrievedForAssertion = false; - private bool $doesNotPerformAssertions = false; - - /** - * @psalm-var list - */ - private array $customComparators = []; - private ?Event\Code\TestMethod $testValueObjectForEvents = null; - private bool $wasPrepared = false; - - /** - * @psalm-var array - */ - private array $failureTypes = []; - - /** - * Returns a matcher that matches when the method is executed - * zero or more times. - */ - final public static function any(): AnyInvokedCountMatcher - { - return new AnyInvokedCountMatcher; - } - - /** - * Returns a matcher that matches when the method is never executed. - */ - final public static function never(): InvokedCountMatcher - { - return new InvokedCountMatcher(0); - } - - /** - * Returns a matcher that matches when the method is executed - * at least N times. - */ - final public static function atLeast(int $requiredInvocations): InvokedAtLeastCountMatcher - { - return new InvokedAtLeastCountMatcher( - $requiredInvocations, - ); - } - - /** - * Returns a matcher that matches when the method is executed at least once. - */ - final public static function atLeastOnce(): InvokedAtLeastOnceMatcher - { - return new InvokedAtLeastOnceMatcher; - } - - /** - * Returns a matcher that matches when the method is executed exactly once. - */ - final public static function once(): InvokedCountMatcher - { - return new InvokedCountMatcher(1); - } - - /** - * Returns a matcher that matches when the method is executed - * exactly $count times. - */ - final public static function exactly(int $count): InvokedCountMatcher - { - return new InvokedCountMatcher($count); - } - - /** - * Returns a matcher that matches when the method is executed - * at most N times. - */ - final public static function atMost(int $allowedInvocations): InvokedAtMostCountMatcher - { - return new InvokedAtMostCountMatcher($allowedInvocations); - } - - /** - * @deprecated Use $double->willReturn() instead of $double->will($this->returnValue()) - * @see https://github.com/sebastianbergmann/phpunit/issues/5423 - * - * @codeCoverageIgnore - */ - final public static function returnValue(mixed $value): ReturnStub - { - return new ReturnStub($value); - } - - /** - * @deprecated Use $double->willReturnMap() instead of $double->will($this->returnValueMap()) - * @see https://github.com/sebastianbergmann/phpunit/issues/5423 - * - * @codeCoverageIgnore - */ - final public static function returnValueMap(array $valueMap): ReturnValueMapStub - { - return new ReturnValueMapStub($valueMap); - } - - /** - * @deprecated Use $double->willReturnArgument() instead of $double->will($this->returnArgument()) - * @see https://github.com/sebastianbergmann/phpunit/issues/5423 - * - * @codeCoverageIgnore - */ - final public static function returnArgument(int $argumentIndex): ReturnArgumentStub - { - return new ReturnArgumentStub($argumentIndex); - } - - /** - * @deprecated Use $double->willReturnCallback() instead of $double->will($this->returnCallback()) - * @see https://github.com/sebastianbergmann/phpunit/issues/5423 - * - * @codeCoverageIgnore - */ - final public static function returnCallback(callable $callback): ReturnCallbackStub - { - return new ReturnCallbackStub($callback); - } - - /** - * @deprecated Use $double->willReturnSelf() instead of $double->will($this->returnSelf()) - * @see https://github.com/sebastianbergmann/phpunit/issues/5423 - * - * @codeCoverageIgnore - */ - final public static function returnSelf(): ReturnSelfStub - { - return new ReturnSelfStub; - } - - final public static function throwException(Throwable $exception): ExceptionStub - { - return new ExceptionStub($exception); - } - - /** - * @deprecated Use $double->willReturn() instead of $double->will($this->onConsecutiveCalls()) - * @see https://github.com/sebastianbergmann/phpunit/issues/5423 - * @see https://github.com/sebastianbergmann/phpunit/issues/5425 - * - * @codeCoverageIgnore - */ - final public static function onConsecutiveCalls(mixed ...$arguments): ConsecutiveCallsStub - { - return new ConsecutiveCallsStub($arguments); - } - - /** - * @psalm-param non-empty-string $name - * - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - public function __construct(string $name) - { - $this->setName($name); - - $this->status = TestStatus::unknown(); - } - - /** - * This method is called before the first test of this test class is run. - * - * @codeCoverageIgnore - */ - public static function setUpBeforeClass(): void - { - } - - /** - * This method is called after the last test of this test class is run. - * - * @codeCoverageIgnore - */ - public static function tearDownAfterClass(): void - { - } - - /** - * This method is called before each test. - * - * @codeCoverageIgnore - */ - protected function setUp(): void - { - } - - /** - * Performs assertions shared by all tests of a test case. - * - * This method is called between setUp() and test. - * - * @codeCoverageIgnore - */ - protected function assertPreConditions(): void - { - } - - /** - * Performs assertions shared by all tests of a test case. - * - * This method is called between test and tearDown(). - * - * @codeCoverageIgnore - */ - protected function assertPostConditions(): void - { - } - - /** - * This method is called after each test. - * - * @codeCoverageIgnore - */ - protected function tearDown(): void - { - } - - /** - * Returns a string representation of the test case. - * - * @throws Exception - * - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - public function toString(): string - { - $buffer = sprintf( - '%s::%s', - (new ReflectionClass($this))->getName(), - $this->name, - ); - - return $buffer . $this->dataSetAsStringWithData(); - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function count(): int - { - return 1; - } - - final public function getActualOutputForAssertion(): string - { - $this->outputRetrievedForAssertion = true; - - return $this->output(); - } - - final public function expectOutputRegex(string $expectedRegex): void - { - $this->outputExpectedRegex = $expectedRegex; - } - - final public function expectOutputString(string $expectedString): void - { - $this->outputExpectedString = $expectedString; - } - - /** - * @psalm-param class-string $exception - */ - final public function expectException(string $exception): void - { - $this->expectedException = $exception; - } - - final public function expectExceptionCode(int|string $code): void - { - $this->expectedExceptionCode = $code; - } - - final public function expectExceptionMessage(string $message): void - { - $this->expectedExceptionMessage = $message; - } - - final public function expectExceptionMessageMatches(string $regularExpression): void - { - $this->expectedExceptionMessageRegExp = $regularExpression; - } - - /** - * Sets up an expectation for an exception to be raised by the code under test. - * Information for expected exception class, expected exception message, and - * expected exception code are retrieved from a given Exception object. - */ - final public function expectExceptionObject(\Exception $exception): void - { - $this->expectException($exception::class); - $this->expectExceptionMessage($exception->getMessage()); - $this->expectExceptionCode($exception->getCode()); - } - - final public function expectNotToPerformAssertions(): void - { - $this->doesNotPerformAssertions = true; - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function status(): TestStatus - { - return $this->status; - } - - /** - * @throws \PHPUnit\Runner\Exception - * @throws \PHPUnit\Util\Exception - * @throws \SebastianBergmann\CodeCoverage\InvalidArgumentException - * @throws \SebastianBergmann\Template\InvalidArgumentException - * @throws CodeCoverageException - * @throws Exception - * @throws MoreThanOneDataSetFromDataProviderException - * @throws NoPreviousThrowableException - * @throws ProcessIsolationException - * @throws UnintentionallyCoveredCodeException - * - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function run(): void - { - if (!$this->handleDependencies()) { - return; - } - - if (!$this->shouldRunInSeparateProcess() || $this->requirementsNotSatisfied()) { - (new TestRunner)->run($this); - } else { - (new TestRunner)->runInSeparateProcess( - $this, - $this->runClassInSeparateProcess && !$this->runTestInSeparateProcess, - $this->preserveGlobalState, - ); - } - } - - /** - * Returns a builder object to create mock objects using a fluent interface. - * - * @psalm-template RealInstanceType of object - * - * @psalm-param class-string $className - * - * @psalm-return MockBuilder - */ - final public function getMockBuilder(string $className): MockBuilder - { - return new MockBuilder($this, $className); - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function groups(): array - { - return $this->groups; - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function setGroups(array $groups): void - { - $this->groups = $groups; - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function nameWithDataSet(): string - { - return $this->name . $this->dataSetAsString(); - } - - /** - * @psalm-return non-empty-string - * - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function name(): string - { - return $this->name; - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function size(): TestSize - { - return (new Groups)->size( - static::class, - $this->name, - ); - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function hasUnexpectedOutput(): bool - { - if ($this->output === '') { - return false; - } - - if ($this->expectsOutput()) { - return false; - } - - return true; - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function output(): string - { - if (!$this->outputBufferingActive) { - return $this->output; - } - - return (string) ob_get_contents(); - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function doesNotPerformAssertions(): bool - { - return $this->doesNotPerformAssertions; - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function expectsOutput(): bool - { - return $this->hasExpectationOnOutput() || $this->outputRetrievedForAssertion; - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - * - * @deprecated - * - * @codeCoverageIgnore - */ - final public function registerMockObjectsFromTestArgumentsRecursively(): void - { - $this->registerMockObjectsFromTestArgumentsRecursively = true; - } - - /** - * @throws Throwable - * - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function runBare(): void - { - $emitter = Event\Facade::emitter(); - - $emitter->testPreparationStarted( - $this->valueObjectForEvents(), - ); - - $this->snapshotGlobalState(); - $this->startOutputBuffering(); - clearstatcache(); - - $hookMethods = (new HookMethods)->hookMethods(static::class); - $hasMetRequirements = false; - $this->numberOfAssertionsPerformed = 0; - $currentWorkingDirectory = getcwd(); - - try { - $this->checkRequirements(); - $hasMetRequirements = true; - - if ($this->inIsolation) { - // @codeCoverageIgnoreStart - $this->invokeBeforeClassHookMethods($hookMethods, $emitter); - // @codeCoverageIgnoreEnd - } - - if (method_exists(static::class, $this->name) && - MetadataRegistry::parser()->forClassAndMethod(static::class, $this->name)->isDoesNotPerformAssertions()->isNotEmpty()) { - $this->doesNotPerformAssertions = true; - } - - $this->invokeBeforeTestHookMethods($hookMethods, $emitter); - $this->invokePreConditionHookMethods($hookMethods, $emitter); - - $emitter->testPrepared( - $this->valueObjectForEvents(), - ); - - $this->wasPrepared = true; - $this->testResult = $this->runTest(); - - $this->verifyMockObjects(); - $this->invokePostConditionHookMethods($hookMethods, $emitter); - - $this->status = TestStatus::success(); - } catch (IncompleteTest $e) { - $this->status = TestStatus::incomplete($e->getMessage()); - - $emitter->testMarkedAsIncomplete( - $this->valueObjectForEvents(), - Event\Code\ThrowableBuilder::from($e), - ); - } catch (SkippedTest $e) { - $this->status = TestStatus::skipped($e->getMessage()); - - $emitter->testSkipped( - $this->valueObjectForEvents(), - $e->getMessage(), - ); - } catch (AssertionError|AssertionFailedError $e) { - if (!$this->wasPrepared) { - $this->wasPrepared = true; - - $emitter->testPreparationFailed( - $this->valueObjectForEvents(), - ); - } - - $this->status = TestStatus::failure($e->getMessage()); - - $emitter->testFailed( - $this->valueObjectForEvents(), - Event\Code\ThrowableBuilder::from($e), - Event\Code\ComparisonFailureBuilder::from($e), - ); - } catch (TimeoutException $e) { - $this->status = TestStatus::risky($e->getMessage()); - } catch (Throwable $_e) { - if ($this->isRegisteredFailure($_e)) { - $this->status = TestStatus::failure($_e->getMessage()); - - $emitter->testFailed( - $this->valueObjectForEvents(), - Event\Code\ThrowableBuilder::from($_e), - null, - ); - } else { - $e = $this->transformException($_e); - - $this->status = TestStatus::error($e->getMessage()); - - $emitter->testErrored( - $this->valueObjectForEvents(), - Event\Code\ThrowableBuilder::from($e), - ); - } - } - - $outputBufferingStopped = false; - - if (!isset($e) && - $this->hasExpectationOnOutput() && - $this->stopOutputBuffering()) { - $outputBufferingStopped = true; - - $this->performAssertionsOnOutput(); - } - - if ($this->status->isSuccess()) { - $emitter->testPassed( - $this->valueObjectForEvents(), - ); - - if (!$this->usesDataProvider()) { - PassedTests::instance()->testMethodPassed( - $this->valueObjectForEvents(), - $this->testResult, - ); - } - } - - try { - $this->mockObjects = []; - } catch (Throwable $t) { - Event\Facade::emitter()->testErrored( - $this->valueObjectForEvents(), - Event\Code\ThrowableBuilder::from($t), - ); - } - - // Tear down the fixture. An exception raised in tearDown() will be - // caught and passed on when no exception was raised before. - try { - if ($hasMetRequirements) { - $this->invokeAfterTestHookMethods($hookMethods, $emitter); - - if ($this->inIsolation) { - // @codeCoverageIgnoreStart - $this->invokeAfterClassHookMethods($hookMethods, $emitter); - // @codeCoverageIgnoreEnd - } - } - } catch (AssertionError|AssertionFailedError $e) { - $this->status = TestStatus::failure($e->getMessage()); - - $emitter->testFailed( - $this->valueObjectForEvents(), - Event\Code\ThrowableBuilder::from($e), - Event\Code\ComparisonFailureBuilder::from($e), - ); - } catch (Throwable $exceptionRaisedDuringTearDown) { - if (!isset($e)) { - $this->status = TestStatus::error($exceptionRaisedDuringTearDown->getMessage()); - $e = $exceptionRaisedDuringTearDown; - - $emitter->testErrored( - $this->valueObjectForEvents(), - Event\Code\ThrowableBuilder::from($exceptionRaisedDuringTearDown), - ); - } - } - - if (!$outputBufferingStopped) { - $this->stopOutputBuffering(); - } - - clearstatcache(); - - if ($currentWorkingDirectory !== getcwd()) { - chdir($currentWorkingDirectory); - } - - $this->restoreGlobalState(); - $this->unregisterCustomComparators(); - $this->cleanupIniSettings(); - $this->cleanupLocaleSettings(); - libxml_clear_errors(); - - $this->testValueObjectForEvents = null; - - if (isset($e)) { - $this->onNotSuccessfulTest($e); - } - } - - /** - * @psalm-param non-empty-string $name - * - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function setName(string $name): void - { - $this->name = $name; - - if (is_callable($this->sortId(), true)) { - $this->providedTests = [new ExecutionOrderDependency($this->sortId())]; - } - } - - /** - * @psalm-param list $dependencies - * - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function setDependencies(array $dependencies): void - { - $this->dependencies = $dependencies; - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - * - * @codeCoverageIgnore - */ - final public function setDependencyInput(array $dependencyInput): void - { - $this->dependencyInput = $dependencyInput; - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function dependencyInput(): array - { - return $this->dependencyInput; - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function hasDependencyInput(): bool - { - return !empty($this->dependencyInput); - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function setBackupGlobals(bool $backupGlobals): void - { - $this->backupGlobals = $backupGlobals; - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function setBackupGlobalsExcludeList(array $backupGlobalsExcludeList): void - { - $this->backupGlobalsExcludeList = $backupGlobalsExcludeList; - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function setBackupStaticProperties(bool $backupStaticProperties): void - { - $this->backupStaticProperties = $backupStaticProperties; - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function setBackupStaticPropertiesExcludeList(array $backupStaticPropertiesExcludeList): void - { - $this->backupStaticPropertiesExcludeList = $backupStaticPropertiesExcludeList; - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function setRunTestInSeparateProcess(bool $runTestInSeparateProcess): void - { - if ($this->runTestInSeparateProcess === null) { - $this->runTestInSeparateProcess = $runTestInSeparateProcess; - } - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function setRunClassInSeparateProcess(bool $runClassInSeparateProcess): void - { - $this->runClassInSeparateProcess = $runClassInSeparateProcess; - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function setPreserveGlobalState(bool $preserveGlobalState): void - { - $this->preserveGlobalState = $preserveGlobalState; - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - * - * @codeCoverageIgnore - */ - final public function setInIsolation(bool $inIsolation): void - { - $this->inIsolation = $inIsolation; - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - * - * @codeCoverageIgnore - */ - final public function result(): mixed - { - return $this->testResult; - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function setResult(mixed $result): void - { - $this->testResult = $result; - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function registerMockObject(MockObject $mockObject): void - { - assert($mockObject instanceof MockObjectInternal); - - $this->mockObjects[] = $mockObject; - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function addToAssertionCount(int $count): void - { - $this->numberOfAssertionsPerformed += $count; - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function numberOfAssertionsPerformed(): int - { - return $this->numberOfAssertionsPerformed; - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function usesDataProvider(): bool - { - return !empty($this->data); - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function dataName(): int|string - { - return $this->dataName; - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function dataSetAsString(): string - { - $buffer = ''; - - if (!empty($this->data)) { - if (is_int($this->dataName)) { - $buffer .= sprintf(' with data set #%d', $this->dataName); - } else { - $buffer .= sprintf(' with data set "%s"', $this->dataName); - } - } - - return $buffer; - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function dataSetAsStringWithData(): string - { - if (empty($this->data)) { - return ''; - } - - return $this->dataSetAsString() . sprintf( - ' (%s)', - (new Exporter)->shortenedRecursiveExport($this->data), - ); - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function providedData(): array - { - return $this->data; - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function sortId(): string - { - $id = $this->name; - - if (!str_contains($id, '::')) { - $id = static::class . '::' . $id; - } - - if ($this->usesDataProvider()) { - $id .= $this->dataSetAsString(); - } - - return $id; - } - - /** - * @psalm-return list - * - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function provides(): array - { - return $this->providedTests; - } - - /** - * @psalm-return list - * - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function requires(): array - { - return $this->dependencies; - } - - /** - * @throws RuntimeException - * - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function setData(int|string $dataName, array $data): void - { - $this->dataName = $dataName; - $this->data = $data; - - if (array_is_list($data)) { - return; - } - - try { - $reflector = new ReflectionMethod($this, $this->name); - $parameters = array_map(static fn (ReflectionParameter $parameter) => $parameter->name, $reflector->getParameters()); - - foreach (array_keys($data) as $parameter) { - if (is_string($parameter) && !in_array($parameter, $parameters, true)) { - Event\Facade::emitter()->testTriggeredPhpunitDeprecation( - $this->valueObjectForEvents(), - sprintf( - 'Providing invalid named argument $%s for method %s::%s() is deprecated and will not be supported in PHPUnit 11.0.', - $parameter, - $this::class, - $this->name, - ), - ); - } - } - // @codeCoverageIgnoreStart - } catch (ReflectionException $e) { - throw new RuntimeException( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - // @codeCoverageIgnoreEnd - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - * - * @throws MoreThanOneDataSetFromDataProviderException - */ - final public function valueObjectForEvents(): Event\Code\TestMethod - { - if ($this->testValueObjectForEvents !== null) { - return $this->testValueObjectForEvents; - } - - $this->testValueObjectForEvents = Event\Code\TestMethodBuilder::fromTestCase($this); - - return $this->testValueObjectForEvents; - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - final public function wasPrepared(): bool - { - return $this->wasPrepared; - } - - final protected function registerComparator(Comparator $comparator): void - { - ComparatorFactory::getInstance()->register($comparator); - - Event\Facade::emitter()->testRegisteredComparator($comparator::class); - - $this->customComparators[] = $comparator; - } - - /** - * @psalm-param class-string $classOrInterface - */ - final protected function registerFailureType(string $classOrInterface): void - { - $this->failureTypes[$classOrInterface] = true; - } - - /** - * @throws AssertionFailedError - * @throws Exception - * @throws ExpectationFailedException - * @throws Throwable - * - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - protected function runTest(): mixed - { - $testArguments = array_merge($this->data, $this->dependencyInput); - - $this->registerMockObjectsFromTestArguments($testArguments); - - try { - $testResult = $this->{$this->name}(...array_values($testArguments)); - } catch (Throwable $exception) { - if (!$this->shouldExceptionExpectationsBeVerified($exception)) { - throw $exception; - } - - $this->verifyExceptionExpectations($exception); - - return null; - } - - $this->expectedExceptionWasNotRaised(); - - return $testResult; - } - - /** - * This method is a wrapper for the ini_set() function that automatically - * resets the modified php.ini setting to its original value after the - * test is run. - * - * @throws Exception - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5214 - * - * @codeCoverageIgnore - */ - protected function iniSet(string $varName, string $newValue): void - { - $currentValue = ini_set($varName, $newValue); - - if ($currentValue !== false) { - $this->iniSettings[$varName] = $currentValue; - } else { - throw new Exception( - sprintf( - 'INI setting "%s" could not be set to "%s".', - $varName, - $newValue, - ), - ); - } - } - - /** - * This method is a wrapper for the setlocale() function that automatically - * resets the locale to its original value after the test is run. - * - * @throws Exception - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5216 - * - * @codeCoverageIgnore - */ - protected function setLocale(mixed ...$arguments): void - { - if (count($arguments) < 2) { - throw new Exception; - } - - [$category, $locale] = $arguments; - - if (!in_array($category, self::LOCALE_CATEGORIES, true)) { - throw new Exception; - } - - if (!is_array($locale) && !is_string($locale)) { - throw new Exception; - } - - $this->locale[$category] = setlocale($category, '0'); - - $result = setlocale(...$arguments); - - if ($result === false) { - throw new Exception( - 'The locale functionality is not implemented on your platform, ' . - 'the specified locale does not exist or the category name is ' . - 'invalid.', - ); - } - } - - /** - * Creates a mock object for the specified interface or class. - * - * @psalm-template RealInstanceType of object - * - * @psalm-param class-string $originalClassName - * - * @psalm-return MockObject&RealInstanceType - * - * @throws InvalidArgumentException - * @throws MockObjectException - * @throws NoPreviousThrowableException - */ - protected function createMock(string $originalClassName): MockObject - { - $mock = (new MockGenerator)->testDouble( - $originalClassName, - true, - callOriginalConstructor: false, - callOriginalClone: false, - cloneArguments: false, - allowMockingUnknownTypes: false, - ); - - assert($mock instanceof $originalClassName); - assert($mock instanceof MockObject); - - $this->registerMockObject($mock); - - Event\Facade::emitter()->testCreatedMockObject($originalClassName); - - return $mock; - } - - /** - * @psalm-param list $interfaces - * - * @throws MockObjectException - */ - protected function createMockForIntersectionOfInterfaces(array $interfaces): MockObject - { - $mock = (new MockGenerator)->testDoubleForInterfaceIntersection($interfaces, true); - - assert($mock instanceof MockObject); - - $this->registerMockObject($mock); - - Event\Facade::emitter()->testCreatedMockObjectForIntersectionOfInterfaces($interfaces); - - return $mock; - } - - /** - * Creates (and configures) a mock object for the specified interface or class. - * - * @psalm-template RealInstanceType of object - * - * @psalm-param class-string $originalClassName - * - * @psalm-return MockObject&RealInstanceType - * - * @throws InvalidArgumentException - * @throws MockObjectException - * @throws NoPreviousThrowableException - */ - protected function createConfiguredMock(string $originalClassName, array $configuration): MockObject - { - $o = $this->createMock($originalClassName); - - foreach ($configuration as $method => $return) { - $o->method($method)->willReturn($return); - } - - return $o; - } - - /** - * Creates a partial mock object for the specified interface or class. - * - * @psalm-param list $methods - * - * @psalm-template RealInstanceType of object - * - * @psalm-param class-string $originalClassName - * - * @psalm-return MockObject&RealInstanceType - * - * @throws InvalidArgumentException - * @throws MockObjectException - */ - protected function createPartialMock(string $originalClassName, array $methods): MockObject - { - $partialMock = $this->getMockBuilder($originalClassName) - ->disableOriginalConstructor() - ->disableOriginalClone() - ->disableArgumentCloning() - ->disallowMockingUnknownTypes() - ->onlyMethods($methods) - ->getMock(); - - Event\Facade::emitter()->testCreatedPartialMockObject( - $originalClassName, - ...$methods, - ); - - return $partialMock; - } - - /** - * Creates a test proxy for the specified class. - * - * @psalm-template RealInstanceType of object - * - * @psalm-param class-string $originalClassName - * - * @psalm-return MockObject&RealInstanceType - * - * @throws InvalidArgumentException - * @throws MockObjectException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5240 - */ - protected function createTestProxy(string $originalClassName, array $constructorArguments = []): MockObject - { - $testProxy = $this->getMockBuilder($originalClassName) - ->setConstructorArgs($constructorArguments) - ->enableProxyingToOriginalMethods() - ->getMock(); - - Event\Facade::emitter()->testCreatedTestProxy( - $originalClassName, - $constructorArguments, - ); - - return $testProxy; - } - - /** - * Creates a mock object for the specified abstract class with all abstract - * methods of the class mocked. Concrete methods are not mocked by default. - * To mock concrete methods, use the 7th parameter ($mockedMethods). - * - * @psalm-template RealInstanceType of object - * - * @psalm-param class-string $originalClassName - * - * @psalm-return MockObject&RealInstanceType - * - * @throws InvalidArgumentException - * @throws MockObjectException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5241 - */ - protected function getMockForAbstractClass(string $originalClassName, array $arguments = [], string $mockClassName = '', bool $callOriginalConstructor = true, bool $callOriginalClone = true, bool $callAutoload = true, array $mockedMethods = [], bool $cloneArguments = false): MockObject - { - $mockObject = (new MockGenerator)->mockObjectForAbstractClass( - $originalClassName, - $arguments, - $mockClassName, - $callOriginalConstructor, - $callOriginalClone, - $callAutoload, - $mockedMethods, - $cloneArguments, - ); - - $this->registerMockObject($mockObject); - - Event\Facade::emitter()->testCreatedMockObjectForAbstractClass($originalClassName); - - assert($mockObject instanceof $originalClassName); - assert($mockObject instanceof MockObject); - - return $mockObject; - } - - /** - * Creates a mock object based on the given WSDL file. - * - * @throws MockObjectException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5242 - */ - protected function getMockFromWsdl(string $wsdlFile, string $originalClassName = '', string $mockClassName = '', array $methods = [], bool $callOriginalConstructor = true, array $options = []): MockObject - { - if ($originalClassName === '') { - $fileName = pathinfo(basename(parse_url($wsdlFile, PHP_URL_PATH)), PATHINFO_FILENAME); - $originalClassName = preg_replace('/\W/', '', $fileName); - } - - if (!class_exists($originalClassName)) { - eval( - (new MockGenerator)->generateClassFromWsdl( - $wsdlFile, - $originalClassName, - $methods, - $options, - ) - ); - } - - $mockObject = (new MockGenerator)->testDouble( - $originalClassName, - true, - $methods, - ['', $options], - $mockClassName, - $callOriginalConstructor, - false, - false, - ); - - Event\Facade::emitter()->testCreatedMockObjectFromWsdl( - $wsdlFile, - $originalClassName, - $mockClassName, - $methods, - $callOriginalConstructor, - $options, - ); - - assert($mockObject instanceof MockObject); - - $this->registerMockObject($mockObject); - - return $mockObject; - } - - /** - * Creates a mock object for the specified trait with all abstract methods - * of the trait mocked. Concrete methods to mock can be specified with the - * `$mockedMethods` parameter. - * - * @psalm-param trait-string $traitName - * - * @throws InvalidArgumentException - * @throws MockObjectException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5243 - */ - protected function getMockForTrait(string $traitName, array $arguments = [], string $mockClassName = '', bool $callOriginalConstructor = true, bool $callOriginalClone = true, bool $callAutoload = true, array $mockedMethods = [], bool $cloneArguments = false): MockObject - { - $mockObject = (new MockGenerator)->mockObjectForTrait( - $traitName, - $arguments, - $mockClassName, - $callOriginalConstructor, - $callOriginalClone, - $callAutoload, - $mockedMethods, - $cloneArguments, - ); - - $this->registerMockObject($mockObject); - - Event\Facade::emitter()->testCreatedMockObjectForTrait($traitName); - - return $mockObject; - } - - /** - * Creates an object that uses the specified trait. - * - * @psalm-param trait-string $traitName - * - * @throws MockObjectException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5244 - */ - protected function getObjectForTrait(string $traitName, array $arguments = [], string $traitClassName = '', bool $callOriginalConstructor = true, bool $callOriginalClone = true, bool $callAutoload = true): object - { - return (new MockGenerator)->objectForTrait( - $traitName, - $traitClassName, - $callAutoload, - $callOriginalConstructor, - $arguments, - ); - } - - protected function transformException(Throwable $t): Throwable - { - return $t; - } - - /** - * This method is called when a test method did not execute successfully. - * - * @throws Throwable - */ - protected function onNotSuccessfulTest(Throwable $t): never - { - throw $t; - } - - /** - * @throws Throwable - */ - private function verifyMockObjects(): void - { - foreach ($this->mockObjects as $mockObject) { - if ($mockObject->__phpunit_hasMatchers()) { - $this->numberOfAssertionsPerformed++; - } - - $mockObject->__phpunit_verify( - $this->shouldInvocationMockerBeReset($mockObject), - ); - } - } - - /** - * @throws SkippedTest - */ - private function checkRequirements(): void - { - if (!$this->name || !method_exists($this, $this->name)) { - return; - } - - $missingRequirements = (new Requirements)->requirementsNotSatisfiedFor( - static::class, - $this->name, - ); - - if (!empty($missingRequirements)) { - $this->markTestSkipped(implode(PHP_EOL, $missingRequirements)); - } - } - - private function handleDependencies(): bool - { - if ([] === $this->dependencies || $this->inIsolation) { - return true; - } - - $passedTests = PassedTests::instance(); - - foreach ($this->dependencies as $dependency) { - if (!$dependency->isValid()) { - $this->markErrorForInvalidDependency(); - - return false; - } - - if ($dependency->targetIsClass()) { - $dependencyClassName = $dependency->getTargetClassName(); - - if (!class_exists($dependencyClassName)) { - $this->markErrorForInvalidDependency($dependency); - - return false; - } - - if (!$passedTests->hasTestClassPassed($dependencyClassName)) { - $this->markSkippedForMissingDependency($dependency); - - return false; - } - - continue; - } - - $dependencyTarget = $dependency->getTarget(); - - if (!$passedTests->hasTestMethodPassed($dependencyTarget)) { - if (!$this->isCallableTestMethod($dependencyTarget)) { - $this->markErrorForInvalidDependency($dependency); - } else { - $this->markSkippedForMissingDependency($dependency); - } - - return false; - } - - if ($passedTests->isGreaterThan($dependencyTarget, $this->size())) { - Event\Facade::emitter()->testConsideredRisky( - $this->valueObjectForEvents(), - 'This test depends on a test that is larger than itself', - ); - - return false; - } - - $returnValue = $passedTests->returnValue($dependencyTarget); - - if ($dependency->deepClone()) { - $deepCopy = new DeepCopy; - $deepCopy->skipUncloneable(false); - - $this->dependencyInput[$dependencyTarget] = $deepCopy->copy($returnValue); - } elseif ($dependency->shallowClone()) { - $this->dependencyInput[$dependencyTarget] = clone $returnValue; - } else { - $this->dependencyInput[$dependencyTarget] = $returnValue; - } - } - - $this->testValueObjectForEvents = null; - - return true; - } - - /** - * @throws Exception - * @throws MoreThanOneDataSetFromDataProviderException - * @throws NoPreviousThrowableException - */ - private function markErrorForInvalidDependency(?ExecutionOrderDependency $dependency = null): void - { - $message = 'This test has an invalid dependency'; - - if ($dependency !== null) { - $message = sprintf( - 'This test depends on "%s" which does not exist', - $dependency->targetIsClass() ? $dependency->getTargetClassName() : $dependency->getTarget(), - ); - } - - $exception = new InvalidDependencyException($message); - - Event\Facade::emitter()->testErrored( - $this->valueObjectForEvents(), - Event\Code\ThrowableBuilder::from($exception), - ); - - $this->status = TestStatus::error($message); - } - - /** - * @throws MoreThanOneDataSetFromDataProviderException - */ - private function markSkippedForMissingDependency(ExecutionOrderDependency $dependency): void - { - $message = sprintf( - 'This test depends on "%s" to pass', - $dependency->getTarget(), - ); - - Event\Facade::emitter()->testSkipped( - $this->valueObjectForEvents(), - $message, - ); - - $this->status = TestStatus::skipped($message); - } - - private function startOutputBuffering(): void - { - ob_start(); - - $this->outputBufferingActive = true; - $this->outputBufferingLevel = ob_get_level(); - } - - /** - * @throws MoreThanOneDataSetFromDataProviderException - */ - private function stopOutputBuffering(): bool - { - $bufferingLevel = ob_get_level(); - - if ($bufferingLevel !== $this->outputBufferingLevel) { - if ($bufferingLevel > $this->outputBufferingLevel) { - $message = 'Test code or tested code did not close its own output buffers'; - } else { - $message = 'Test code or tested code closed output buffers other than its own'; - } - - while (ob_get_level() >= $this->outputBufferingLevel) { - ob_end_clean(); - } - - Event\Facade::emitter()->testConsideredRisky( - $this->valueObjectForEvents(), - $message, - ); - - $this->status = TestStatus::risky($message); - - return false; - } - - $this->output = ob_get_clean(); - - $this->outputBufferingActive = false; - $this->outputBufferingLevel = ob_get_level(); - - return true; - } - - private function snapshotGlobalState(): void - { - if ($this->runTestInSeparateProcess || $this->inIsolation || - (!$this->backupGlobals && !$this->backupStaticProperties)) { - return; - } - - $snapshot = $this->createGlobalStateSnapshot($this->backupGlobals === true); - - $this->snapshot = $snapshot; - } - - /** - * @throws MoreThanOneDataSetFromDataProviderException - */ - private function restoreGlobalState(): void - { - if (!$this->snapshot instanceof Snapshot) { - return; - } - - if (ConfigurationRegistry::get()->beStrictAboutChangesToGlobalState()) { - $this->compareGlobalStateSnapshots( - $this->snapshot, - $this->createGlobalStateSnapshot($this->backupGlobals === true), - ); - } - - $restorer = new Restorer; - - if ($this->backupGlobals) { - $restorer->restoreGlobalVariables($this->snapshot); - } - - if ($this->backupStaticProperties) { - $restorer->restoreStaticProperties($this->snapshot); - } - - $this->snapshot = null; - } - - private function createGlobalStateSnapshot(bool $backupGlobals): Snapshot - { - $excludeList = new GlobalStateExcludeList; - - foreach ($this->backupGlobalsExcludeList as $globalVariable) { - $excludeList->addGlobalVariable($globalVariable); - } - - if (!defined('PHPUNIT_TESTSUITE')) { - $excludeList->addClassNamePrefix('PHPUnit'); - $excludeList->addClassNamePrefix('SebastianBergmann\CodeCoverage'); - $excludeList->addClassNamePrefix('SebastianBergmann\FileIterator'); - $excludeList->addClassNamePrefix('SebastianBergmann\Invoker'); - $excludeList->addClassNamePrefix('SebastianBergmann\Template'); - $excludeList->addClassNamePrefix('SebastianBergmann\Timer'); - $excludeList->addStaticProperty(ComparatorFactory::class, 'instance'); - - foreach ($this->backupStaticPropertiesExcludeList as $class => $properties) { - foreach ($properties as $property) { - $excludeList->addStaticProperty($class, $property); - } - } - } - - return new Snapshot( - $excludeList, - $backupGlobals, - (bool) $this->backupStaticProperties, - false, - false, - false, - false, - false, - false, - false, - ); - } - - /** - * @throws MoreThanOneDataSetFromDataProviderException - */ - private function compareGlobalStateSnapshots(Snapshot $before, Snapshot $after): void - { - $backupGlobals = $this->backupGlobals === null || $this->backupGlobals; - - if ($backupGlobals) { - $this->compareGlobalStateSnapshotPart( - $before->globalVariables(), - $after->globalVariables(), - "--- Global variables before the test\n+++ Global variables after the test\n", - ); - - $this->compareGlobalStateSnapshotPart( - $before->superGlobalVariables(), - $after->superGlobalVariables(), - "--- Super-global variables before the test\n+++ Super-global variables after the test\n", - ); - } - - if ($this->backupStaticProperties) { - $this->compareGlobalStateSnapshotPart( - $before->staticProperties(), - $after->staticProperties(), - "--- Static properties before the test\n+++ Static properties after the test\n", - ); - } - } - - /** - * @throws MoreThanOneDataSetFromDataProviderException - */ - private function compareGlobalStateSnapshotPart(array $before, array $after, string $header): void - { - if ($before != $after) { - $differ = new Differ(new UnifiedDiffOutputBuilder($header)); - $exporter = new Exporter; - - Event\Facade::emitter()->testConsideredRisky( - $this->valueObjectForEvents(), - 'This test modified global state but was not expected to do so' . PHP_EOL . - trim( - $differ->diff( - $exporter->export($before), - $exporter->export($after), - ), - ), - ); - } - } - - private function shouldInvocationMockerBeReset(MockObject $mock): bool - { - $enumerator = new Enumerator; - - if (in_array($mock, $enumerator->enumerate($this->dependencyInput), true)) { - return false; - } - - if (!is_array($this->testResult) && !is_object($this->testResult)) { - return true; - } - - return !in_array($mock, $enumerator->enumerate($this->testResult), true); - } - - /** - * @deprecated - */ - private function registerMockObjectsFromTestArguments(array $testArguments, Context $context = new Context): void - { - if ($this->registerMockObjectsFromTestArgumentsRecursively) { - foreach ((new Enumerator)->enumerate($testArguments) as $object) { - if ($object instanceof MockObject) { - $this->registerMockObject($object); - } - } - } else { - foreach ($testArguments as &$testArgument) { - if ($testArgument instanceof MockObject) { - $testArgument = Cloner::clone($testArgument); - - $this->registerMockObject($testArgument); - } elseif (is_array($testArgument) && !$context->contains($testArgument)) { - $testArgumentCopy = $testArgument; - $context->add($testArgument); - - $this->registerMockObjectsFromTestArguments( - $testArgumentCopy, - $context, - ); - } - } - } - } - - private function unregisterCustomComparators(): void - { - $factory = ComparatorFactory::getInstance(); - - foreach ($this->customComparators as $comparator) { - $factory->unregister($comparator); - } - - $this->customComparators = []; - } - - private function cleanupIniSettings(): void - { - foreach ($this->iniSettings as $varName => $oldValue) { - ini_set($varName, $oldValue); - } - - $this->iniSettings = []; - } - - private function cleanupLocaleSettings(): void - { - foreach ($this->locale as $category => $locale) { - setlocale($category, $locale); - } - - $this->locale = []; - } - - /** - * @throws Exception - */ - private function shouldExceptionExpectationsBeVerified(Throwable $throwable): bool - { - $result = false; - - if ($this->expectedException !== null || $this->expectedExceptionCode !== null || $this->expectedExceptionMessage !== null || $this->expectedExceptionMessageRegExp !== null) { - $result = true; - } - - if ($throwable instanceof Exception) { - $result = false; - } - - if (is_string($this->expectedException)) { - try { - $reflector = new ReflectionClass($this->expectedException); - // @codeCoverageIgnoreStart - } catch (ReflectionException $e) { - throw new Exception( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - // @codeCoverageIgnoreEnd - - if ($this->expectedException === 'PHPUnit\Framework\Exception' || - $this->expectedException === '\PHPUnit\Framework\Exception' || - $reflector->isSubclassOf(Exception::class)) { - $result = true; - } - } - - return $result; - } - - private function shouldRunInSeparateProcess(): bool - { - if ($this->inIsolation) { - return false; - } - - if ($this->runTestInSeparateProcess) { - return true; - } - - if ($this->runClassInSeparateProcess) { - return true; - } - - return ConfigurationRegistry::get()->processIsolation(); - } - - private function isCallableTestMethod(string $dependency): bool - { - [$className, $methodName] = explode('::', $dependency); - - if (!class_exists($className)) { - return false; - } - - $class = new ReflectionClass($className); - - if (!$class->isSubclassOf(__CLASS__)) { - return false; - } - - if (!$class->hasMethod($methodName)) { - return false; - } - - return TestUtil::isTestMethod( - $class->getMethod($methodName), - ); - } - - /** - * @throws Exception - * @throws ExpectationFailedException - * @throws MoreThanOneDataSetFromDataProviderException - * @throws NoPreviousThrowableException - */ - private function performAssertionsOnOutput(): void - { - try { - if ($this->outputExpectedRegex !== null) { - $this->assertMatchesRegularExpression($this->outputExpectedRegex, $this->output); - } elseif ($this->outputExpectedString !== null) { - $this->assertSame($this->outputExpectedString, $this->output); - } - } catch (ExpectationFailedException $e) { - $this->status = TestStatus::failure($e->getMessage()); - - Event\Facade::emitter()->testFailed( - $this->valueObjectForEvents(), - Event\Code\ThrowableBuilder::from($e), - Event\Code\ComparisonFailureBuilder::from($e), - ); - - throw $e; - } - } - - /** - * @throws Throwable - * - * @codeCoverageIgnore - */ - private function invokeBeforeClassHookMethods(array $hookMethods, Event\Emitter $emitter): void - { - $this->invokeHookMethods( - $hookMethods['beforeClass'], - $emitter, - 'testBeforeFirstTestMethodCalled', - 'testBeforeFirstTestMethodFinished', - ); - } - - /** - * @throws Throwable - */ - private function invokeBeforeTestHookMethods(array $hookMethods, Event\Emitter $emitter): void - { - $this->invokeHookMethods( - $hookMethods['before'], - $emitter, - 'testBeforeTestMethodCalled', - 'testBeforeTestMethodFinished', - ); - } - - /** - * @throws Throwable - */ - private function invokePreConditionHookMethods(array $hookMethods, Event\Emitter $emitter): void - { - $this->invokeHookMethods( - $hookMethods['preCondition'], - $emitter, - 'testPreConditionCalled', - 'testPreConditionFinished', - ); - } - - /** - * @throws Throwable - */ - private function invokePostConditionHookMethods(array $hookMethods, Event\Emitter $emitter): void - { - $this->invokeHookMethods( - $hookMethods['postCondition'], - $emitter, - 'testPostConditionCalled', - 'testPostConditionFinished', - ); - } - - /** - * @throws Throwable - */ - private function invokeAfterTestHookMethods(array $hookMethods, Event\Emitter $emitter): void - { - $this->invokeHookMethods( - $hookMethods['after'], - $emitter, - 'testAfterTestMethodCalled', - 'testAfterTestMethodFinished', - ); - } - - /** - * @throws Throwable - * - * @codeCoverageIgnore - */ - private function invokeAfterClassHookMethods(array $hookMethods, Event\Emitter $emitter): void - { - $this->invokeHookMethods( - $hookMethods['afterClass'], - $emitter, - 'testAfterLastTestMethodCalled', - 'testAfterLastTestMethodFinished', - ); - } - - /** - * @psalm-param list $hookMethods - * @psalm-param 'testBeforeFirstTestMethodCalled'|'testBeforeTestMethodCalled'|'testPreConditionCalled'|'testPostConditionCalled'|'testAfterTestMethodCalled'|'testAfterLastTestMethodCalled' $calledMethod - * @psalm-param 'testBeforeFirstTestMethodFinished'|'testBeforeTestMethodFinished'|'testPreConditionFinished'|'testPostConditionFinished'|'testAfterTestMethodFinished'|'testAfterLastTestMethodFinished' $finishedMethod - * - * @throws Throwable - */ - private function invokeHookMethods(array $hookMethods, Event\Emitter $emitter, string $calledMethod, string $finishedMethod): void - { - $methodsInvoked = []; - - foreach ($hookMethods as $methodName) { - if ($this->methodDoesNotExistOrIsDeclaredInTestCase($methodName)) { - continue; - } - - try { - $this->{$methodName}(); - } catch (Throwable $t) { - } - - $methodInvoked = new Event\Code\ClassMethod( - static::class, - $methodName, - ); - - $emitter->{$calledMethod}( - static::class, - $methodInvoked - ); - - $methodsInvoked[] = $methodInvoked; - - if (isset($t)) { - break; - } - } - - if (!empty($methodsInvoked)) { - $emitter->{$finishedMethod}( - static::class, - ...$methodsInvoked - ); - } - - if (isset($t)) { - throw $t; - } - } - - private function methodDoesNotExistOrIsDeclaredInTestCase(string $methodName): bool - { - $reflector = new ReflectionObject($this); - - return !$reflector->hasMethod($methodName) || - $reflector->getMethod($methodName)->getDeclaringClass()->getName() === self::class; - } - - /** - * @throws ExpectationFailedException - */ - private function verifyExceptionExpectations(\Exception|Throwable $exception): void - { - if ($this->expectedException !== null) { - $this->assertThat( - $exception, - new ExceptionConstraint( - $this->expectedException, - ), - ); - } - - if ($this->expectedExceptionMessage !== null) { - $this->assertThat( - $exception->getMessage(), - new ExceptionMessageIsOrContains( - $this->expectedExceptionMessage, - ), - ); - } - - if ($this->expectedExceptionMessageRegExp !== null) { - $this->assertThat( - $exception->getMessage(), - new ExceptionMessageMatchesRegularExpression( - $this->expectedExceptionMessageRegExp, - ), - ); - } - - if ($this->expectedExceptionCode !== null) { - $this->assertThat( - $exception->getCode(), - new ExceptionCode( - $this->expectedExceptionCode, - ), - ); - } - } - - /** - * @throws AssertionFailedError - */ - private function expectedExceptionWasNotRaised(): void - { - if ($this->expectedException !== null) { - $this->assertThat( - null, - new ExceptionConstraint($this->expectedException), - ); - } elseif ($this->expectedExceptionMessage !== null) { - $this->numberOfAssertionsPerformed++; - - throw new AssertionFailedError( - sprintf( - 'Failed asserting that exception with message "%s" is thrown', - $this->expectedExceptionMessage, - ), - ); - } elseif ($this->expectedExceptionMessageRegExp !== null) { - $this->numberOfAssertionsPerformed++; - - throw new AssertionFailedError( - sprintf( - 'Failed asserting that exception with message matching "%s" is thrown', - $this->expectedExceptionMessageRegExp, - ), - ); - } elseif ($this->expectedExceptionCode !== null) { - $this->numberOfAssertionsPerformed++; - - throw new AssertionFailedError( - sprintf( - 'Failed asserting that exception with code "%s" is thrown', - $this->expectedExceptionCode, - ), - ); - } - } - - private function isRegisteredFailure(Throwable $t): bool - { - foreach (array_keys($this->failureTypes) as $failureType) { - if ($t instanceof $failureType) { - return true; - } - } - - return false; - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - private function hasExpectationOnOutput(): bool - { - return is_string($this->outputExpectedString) || is_string($this->outputExpectedRegex); - } - - private function requirementsNotSatisfied(): bool - { - return (new Requirements)->requirementsNotSatisfiedFor(static::class, $this->name) !== []; - } - - /** - * Creates a test stub for the specified interface or class. - * - * @psalm-template RealInstanceType of object - * - * @psalm-param class-string $originalClassName - * - * @psalm-return Stub&RealInstanceType - * - * @throws InvalidArgumentException - * @throws MockObjectException - * @throws NoPreviousThrowableException - */ - protected static function createStub(string $originalClassName): Stub - { - $stub = (new MockGenerator)->testDouble( - $originalClassName, - true, - callOriginalConstructor: false, - callOriginalClone: false, - cloneArguments: false, - allowMockingUnknownTypes: false, - ); - - Event\Facade::emitter()->testCreatedStub($originalClassName); - - assert($stub instanceof $originalClassName); - assert($stub instanceof Stub); - - return $stub; - } - - /** - * @psalm-param list $interfaces - * - * @throws MockObjectException - */ - protected static function createStubForIntersectionOfInterfaces(array $interfaces): Stub - { - $stub = (new MockGenerator)->testDoubleForInterfaceIntersection($interfaces, true); - - Event\Facade::emitter()->testCreatedStubForIntersectionOfInterfaces($interfaces); - - return $stub; - } - - /** - * Creates (and configures) a test stub for the specified interface or class. - * - * @psalm-template RealInstanceType of object - * - * @psalm-param class-string $originalClassName - * - * @psalm-return Stub&RealInstanceType - * - * @throws InvalidArgumentException - * @throws MockObjectException - * @throws NoPreviousThrowableException - */ - final protected static function createConfiguredStub(string $originalClassName, array $configuration): Stub - { - $o = self::createStub($originalClassName); - - foreach ($configuration as $method => $return) { - $o->method($method)->willReturn($return); - } - - return $o; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestRunner.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestRunner.php deleted file mode 100644 index 04e7c060..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestRunner.php +++ /dev/null @@ -1,470 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -use const PHP_EOL; -use function assert; -use function defined; -use function error_clear_last; -use function extension_loaded; -use function get_include_path; -use function hrtime; -use function serialize; -use function sprintf; -use function sys_get_temp_dir; -use function tempnam; -use function unlink; -use function var_export; -use AssertionError; -use PHPUnit\Event; -use PHPUnit\Event\NoPreviousThrowableException; -use PHPUnit\Event\TestData\MoreThanOneDataSetFromDataProviderException; -use PHPUnit\Metadata\Api\CodeCoverage as CodeCoverageMetadataApi; -use PHPUnit\Metadata\Parser\Registry as MetadataRegistry; -use PHPUnit\Runner\CodeCoverage; -use PHPUnit\Runner\ErrorHandler; -use PHPUnit\TextUI\Configuration\Configuration; -use PHPUnit\TextUI\Configuration\Registry as ConfigurationRegistry; -use PHPUnit\Util\GlobalState; -use PHPUnit\Util\PHP\AbstractPhpProcess; -use ReflectionClass; -use SebastianBergmann\CodeCoverage\Exception as OriginalCodeCoverageException; -use SebastianBergmann\CodeCoverage\InvalidArgumentException; -use SebastianBergmann\CodeCoverage\UnintentionallyCoveredCodeException; -use SebastianBergmann\Invoker\Invoker; -use SebastianBergmann\Invoker\TimeoutException; -use SebastianBergmann\Template\Template; -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestRunner -{ - private ?bool $timeLimitCanBeEnforced = null; - private readonly Configuration $configuration; - - public function __construct() - { - $this->configuration = ConfigurationRegistry::get(); - } - - /** - * @throws \PHPUnit\Runner\Exception - * @throws CodeCoverageException - * @throws InvalidArgumentException - * @throws MoreThanOneDataSetFromDataProviderException - * @throws UnintentionallyCoveredCodeException - */ - public function run(TestCase $test): void - { - Assert::resetCount(); - - if ($this->configuration->registerMockObjectsFromTestArgumentsRecursively()) { - $test->registerMockObjectsFromTestArgumentsRecursively(); - } - - $shouldCodeCoverageBeCollected = (new CodeCoverageMetadataApi)->shouldCodeCoverageBeCollectedFor( - $test::class, - $test->name(), - ); - - $error = false; - $failure = false; - $incomplete = false; - $risky = false; - $skipped = false; - - error_clear_last(); - - if ($this->shouldErrorHandlerBeUsed($test)) { - ErrorHandler::instance()->enable(); - } - - $collectCodeCoverage = CodeCoverage::instance()->isActive() && - $shouldCodeCoverageBeCollected; - - if ($collectCodeCoverage) { - CodeCoverage::instance()->start($test); - } - - try { - if ($this->canTimeLimitBeEnforced() && - $this->shouldTimeLimitBeEnforced($test)) { - $risky = $this->runTestWithTimeout($test); - } else { - $test->runBare(); - } - } catch (AssertionFailedError $e) { - $failure = true; - - if ($e instanceof IncompleteTestError) { - $incomplete = true; - } elseif ($e instanceof SkippedTest) { - $skipped = true; - } - } catch (AssertionError $e) { - $test->addToAssertionCount(1); - - $failure = true; - $frame = $e->getTrace()[0]; - - assert(isset($frame['file'])); - assert(isset($frame['line'])); - - $e = new AssertionFailedError( - sprintf( - '%s in %s:%s', - $e->getMessage(), - $frame['file'], - $frame['line'], - ), - ); - } catch (Throwable $e) { - $error = true; - } - - $test->addToAssertionCount(Assert::getCount()); - - if ($this->configuration->reportUselessTests() && - !$test->doesNotPerformAssertions() && - $test->numberOfAssertionsPerformed() === 0) { - $risky = true; - } - - if (!$error && !$failure && !$incomplete && !$skipped && !$risky && - $this->configuration->requireCoverageMetadata() && - !$this->hasCoverageMetadata($test::class, $test->name())) { - Event\Facade::emitter()->testConsideredRisky( - $test->valueObjectForEvents(), - 'This test does not define a code coverage target but is expected to do so', - ); - - $risky = true; - } - - if ($collectCodeCoverage) { - $append = !$risky && !$incomplete && !$skipped; - $linesToBeCovered = []; - $linesToBeUsed = []; - - if ($append) { - try { - $linesToBeCovered = (new CodeCoverageMetadataApi)->linesToBeCovered( - $test::class, - $test->name(), - ); - - $linesToBeUsed = (new CodeCoverageMetadataApi)->linesToBeUsed( - $test::class, - $test->name(), - ); - } catch (InvalidCoversTargetException $cce) { - Event\Facade::emitter()->testTriggeredPhpunitWarning( - $test->valueObjectForEvents(), - $cce->getMessage(), - ); - - $append = false; - } - } - - try { - CodeCoverage::instance()->stop( - $append, - $linesToBeCovered, - $linesToBeUsed, - ); - } catch (UnintentionallyCoveredCodeException $cce) { - Event\Facade::emitter()->testConsideredRisky( - $test->valueObjectForEvents(), - 'This test executed code that is not listed as code to be covered or used:' . - PHP_EOL . - $cce->getMessage(), - ); - } catch (OriginalCodeCoverageException $cce) { - $error = true; - - $e = $e ?? $cce; - } - } - - ErrorHandler::instance()->disable(); - - if (!$error && - !$incomplete && - !$skipped && - $this->configuration->reportUselessTests() && - !$test->doesNotPerformAssertions() && - $test->numberOfAssertionsPerformed() === 0) { - Event\Facade::emitter()->testConsideredRisky( - $test->valueObjectForEvents(), - 'This test did not perform any assertions', - ); - } - - if ($test->doesNotPerformAssertions() && - $test->numberOfAssertionsPerformed() > 0) { - Event\Facade::emitter()->testConsideredRisky( - $test->valueObjectForEvents(), - sprintf( - 'This test is not expected to perform assertions but performed %d assertion%s', - $test->numberOfAssertionsPerformed(), - $test->numberOfAssertionsPerformed() > 1 ? 's' : '', - ), - ); - } - - if ($test->hasUnexpectedOutput()) { - Event\Facade::emitter()->testPrintedUnexpectedOutput($test->output()); - } - - if ($this->configuration->disallowTestOutput() && $test->hasUnexpectedOutput()) { - Event\Facade::emitter()->testConsideredRisky( - $test->valueObjectForEvents(), - sprintf( - 'This test printed output: %s', - $test->output(), - ), - ); - } - - if ($test->wasPrepared()) { - Event\Facade::emitter()->testFinished( - $test->valueObjectForEvents(), - $test->numberOfAssertionsPerformed(), - ); - } - } - - /** - * @throws \PHPUnit\Runner\Exception - * @throws \PHPUnit\Util\Exception - * @throws \SebastianBergmann\Template\InvalidArgumentException - * @throws Exception - * @throws MoreThanOneDataSetFromDataProviderException - * @throws NoPreviousThrowableException - * @throws ProcessIsolationException - */ - public function runInSeparateProcess(TestCase $test, bool $runEntireClass, bool $preserveGlobalState): void - { - $class = new ReflectionClass($test); - - if ($runEntireClass) { - $template = new Template( - __DIR__ . '/../Util/PHP/Template/TestCaseClass.tpl', - ); - } else { - $template = new Template( - __DIR__ . '/../Util/PHP/Template/TestCaseMethod.tpl', - ); - } - - $bootstrap = ''; - $constants = ''; - $globals = ''; - $includedFiles = ''; - $iniSettings = ''; - - if (ConfigurationRegistry::get()->hasBootstrap()) { - $bootstrap = ConfigurationRegistry::get()->bootstrap(); - } - - if ($preserveGlobalState) { - $constants = GlobalState::getConstantsAsString(); - $globals = GlobalState::getGlobalsAsString(); - $includedFiles = GlobalState::getIncludedFilesAsString(); - $iniSettings = GlobalState::getIniSettingsAsString(); - } - - $exportObjects = Event\Facade::emitter()->exportsObjects() ? 'true' : 'false'; - $coverage = CodeCoverage::instance()->isActive() ? 'true' : 'false'; - $linesToBeIgnored = var_export(CodeCoverage::instance()->linesToBeIgnored(), true); - - if (defined('PHPUNIT_COMPOSER_INSTALL')) { - $composerAutoload = var_export(PHPUNIT_COMPOSER_INSTALL, true); - } else { - $composerAutoload = '\'\''; - } - - if (defined('__PHPUNIT_PHAR__')) { - $phar = var_export(__PHPUNIT_PHAR__, true); - } else { - $phar = '\'\''; - } - - $data = var_export(serialize($test->providedData()), true); - $dataName = var_export($test->dataName(), true); - $dependencyInput = var_export(serialize($test->dependencyInput()), true); - $includePath = var_export(get_include_path(), true); - // must do these fixes because TestCaseMethod.tpl has unserialize('{data}') in it, and we can't break BC - // the lines above used to use addcslashes() rather than var_export(), which breaks null byte escape sequences - $data = "'." . $data . ".'"; - $dataName = "'.(" . $dataName . ").'"; - $dependencyInput = "'." . $dependencyInput . ".'"; - $includePath = "'." . $includePath . ".'"; - $offset = hrtime(); - $serializedConfiguration = $this->saveConfigurationForChildProcess(); - $processResultFile = tempnam(sys_get_temp_dir(), 'phpunit_'); - - $var = [ - 'bootstrap' => $bootstrap, - 'composerAutoload' => $composerAutoload, - 'phar' => $phar, - 'filename' => $class->getFileName(), - 'className' => $class->getName(), - 'collectCodeCoverageInformation' => $coverage, - 'linesToBeIgnored' => $linesToBeIgnored, - 'data' => $data, - 'dataName' => $dataName, - 'dependencyInput' => $dependencyInput, - 'constants' => $constants, - 'globals' => $globals, - 'include_path' => $includePath, - 'included_files' => $includedFiles, - 'iniSettings' => $iniSettings, - 'name' => $test->name(), - 'offsetSeconds' => $offset[0], - 'offsetNanoseconds' => $offset[1], - 'serializedConfiguration' => $serializedConfiguration, - 'processResultFile' => $processResultFile, - 'exportObjects' => $exportObjects, - ]; - - if (!$runEntireClass) { - $var['methodName'] = $test->name(); - } - - $template->setVar($var); - - $php = AbstractPhpProcess::factory(); - $php->runTestJob($template->render(), $test, $processResultFile); - - @unlink($serializedConfiguration); - } - - /** - * @psalm-param class-string $className - * @psalm-param non-empty-string $methodName - */ - private function hasCoverageMetadata(string $className, string $methodName): bool - { - foreach (MetadataRegistry::parser()->forClassAndMethod($className, $methodName) as $metadata) { - if ($metadata->isCovers()) { - return true; - } - - if ($metadata->isCoversClass()) { - return true; - } - - if ($metadata->isCoversFunction()) { - return true; - } - - if ($metadata->isCoversNothing()) { - return true; - } - } - - return false; - } - - private function canTimeLimitBeEnforced(): bool - { - if ($this->timeLimitCanBeEnforced !== null) { - return $this->timeLimitCanBeEnforced; - } - - $this->timeLimitCanBeEnforced = (new Invoker)->canInvokeWithTimeout(); - - return $this->timeLimitCanBeEnforced; - } - - private function shouldTimeLimitBeEnforced(TestCase $test): bool - { - if (!$this->configuration->enforceTimeLimit()) { - return false; - } - - if (!(($this->configuration->defaultTimeLimit() || $test->size()->isKnown()))) { - return false; - } - - if (extension_loaded('xdebug') && xdebug_is_debugger_active()) { - return false; - } - - return true; - } - - /** - * @throws Throwable - */ - private function runTestWithTimeout(TestCase $test): bool - { - $_timeout = $this->configuration->defaultTimeLimit(); - $testSize = $test->size(); - - if ($testSize->isSmall()) { - $_timeout = $this->configuration->timeoutForSmallTests(); - } elseif ($testSize->isMedium()) { - $_timeout = $this->configuration->timeoutForMediumTests(); - } elseif ($testSize->isLarge()) { - $_timeout = $this->configuration->timeoutForLargeTests(); - } - - try { - (new Invoker)->invoke([$test, 'runBare'], [], $_timeout); - } catch (TimeoutException) { - Event\Facade::emitter()->testConsideredRisky( - $test->valueObjectForEvents(), - sprintf( - 'This test was aborted after %d second%s', - $_timeout, - $_timeout !== 1 ? 's' : '', - ), - ); - - return true; - } - - return false; - } - - /** - * @throws ProcessIsolationException - */ - private function saveConfigurationForChildProcess(): string - { - $path = tempnam(sys_get_temp_dir(), 'phpunit_'); - - if ($path === false) { - throw new ProcessIsolationException; - } - - if (!ConfigurationRegistry::saveTo($path)) { - throw new ProcessIsolationException; - } - - return $path; - } - - private function shouldErrorHandlerBeUsed(TestCase $test): bool - { - if (MetadataRegistry::parser()->forMethod($test::class, $test->name())->isWithoutErrorHandler()->isNotEmpty()) { - return false; - } - - return true; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestSize/Known.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestSize/Known.php deleted file mode 100644 index ea8cb293..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestSize/Known.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\TestSize; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @psalm-immutable - */ -abstract class Known extends TestSize -{ - /** - * @psalm-assert-if-true Known $this - */ - public function isKnown(): bool - { - return true; - } - - abstract public function isGreaterThan(self $other): bool; -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestSize/Large.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestSize/Large.php deleted file mode 100644 index 833dbc06..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestSize/Large.php +++ /dev/null @@ -1,38 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\TestSize; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @psalm-immutable - */ -final class Large extends Known -{ - /** - * @psalm-assert-if-true Large $this - */ - public function isLarge(): bool - { - return true; - } - - public function isGreaterThan(TestSize $other): bool - { - return !$other->isLarge(); - } - - public function asString(): string - { - return 'large'; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestSize/Medium.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestSize/Medium.php deleted file mode 100644 index dd934bed..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestSize/Medium.php +++ /dev/null @@ -1,38 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\TestSize; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @psalm-immutable - */ -final class Medium extends Known -{ - /** - * @psalm-assert-if-true Medium $this - */ - public function isMedium(): bool - { - return true; - } - - public function isGreaterThan(TestSize $other): bool - { - return $other->isSmall(); - } - - public function asString(): string - { - return 'medium'; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestSize/Small.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestSize/Small.php deleted file mode 100644 index eb7250db..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestSize/Small.php +++ /dev/null @@ -1,38 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\TestSize; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @psalm-immutable - */ -final class Small extends Known -{ - /** - * @psalm-assert-if-true Small $this - */ - public function isSmall(): bool - { - return true; - } - - public function isGreaterThan(TestSize $other): bool - { - return false; - } - - public function asString(): string - { - return 'small'; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestSize/TestSize.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestSize/TestSize.php deleted file mode 100644 index 82b0bb23..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestSize/TestSize.php +++ /dev/null @@ -1,82 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\TestSize; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @psalm-immutable - */ -abstract class TestSize -{ - public static function unknown(): self - { - return new Unknown; - } - - public static function small(): self - { - return new Small; - } - - public static function medium(): self - { - return new Medium; - } - - public static function large(): self - { - return new Large; - } - - /** - * @psalm-assert-if-true Known $this - */ - public function isKnown(): bool - { - return false; - } - - /** - * @psalm-assert-if-true Unknown $this - */ - public function isUnknown(): bool - { - return false; - } - - /** - * @psalm-assert-if-true Small $this - */ - public function isSmall(): bool - { - return false; - } - - /** - * @psalm-assert-if-true Medium $this - */ - public function isMedium(): bool - { - return false; - } - - /** - * @psalm-assert-if-true Large $this - */ - public function isLarge(): bool - { - return false; - } - - abstract public function asString(): string; -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestSize/Unknown.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestSize/Unknown.php deleted file mode 100644 index 5089f3f2..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestSize/Unknown.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\TestSize; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @psalm-immutable - */ -final class Unknown extends TestSize -{ - /** - * @psalm-assert-if-true Unknown $this - */ - public function isUnknown(): bool - { - return true; - } - - public function asString(): string - { - return 'unknown'; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/Deprecation.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/Deprecation.php deleted file mode 100644 index 545f6aac..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/Deprecation.php +++ /dev/null @@ -1,38 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\TestStatus; - -/** - * @psalm-immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Deprecation extends Known -{ - /** - * @psalm-assert-if-true Deprecation $this - */ - public function isDeprecation(): bool - { - return true; - } - - public function asInt(): int - { - return 4; - } - - public function asString(): string - { - return 'deprecation'; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/Error.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/Error.php deleted file mode 100644 index 8dedfdfc..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/Error.php +++ /dev/null @@ -1,38 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\TestStatus; - -/** - * @psalm-immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Error extends Known -{ - /** - * @psalm-assert-if-true Error $this - */ - public function isError(): bool - { - return true; - } - - public function asInt(): int - { - return 8; - } - - public function asString(): string - { - return 'error'; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/Failure.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/Failure.php deleted file mode 100644 index 2568445b..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/Failure.php +++ /dev/null @@ -1,38 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\TestStatus; - -/** - * @psalm-immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Failure extends Known -{ - /** - * @psalm-assert-if-true Failure $this - */ - public function isFailure(): bool - { - return true; - } - - public function asInt(): int - { - return 7; - } - - public function asString(): string - { - return 'failure'; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/Incomplete.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/Incomplete.php deleted file mode 100644 index 6b81dce9..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/Incomplete.php +++ /dev/null @@ -1,38 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\TestStatus; - -/** - * @psalm-immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Incomplete extends Known -{ - /** - * @psalm-assert-if-true Incomplete $this - */ - public function isIncomplete(): bool - { - return true; - } - - public function asInt(): int - { - return 2; - } - - public function asString(): string - { - return 'incomplete'; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/Known.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/Known.php deleted file mode 100644 index 30838d38..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/Known.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\TestStatus; - -/** - * @psalm-immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -abstract class Known extends TestStatus -{ - /** - * @psalm-assert-if-true Known $this - */ - public function isKnown(): bool - { - return true; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/Notice.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/Notice.php deleted file mode 100644 index 322db6f7..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/Notice.php +++ /dev/null @@ -1,38 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\TestStatus; - -/** - * @psalm-immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Notice extends Known -{ - /** - * @psalm-assert-if-true Notice $this - */ - public function isNotice(): bool - { - return true; - } - - public function asInt(): int - { - return 3; - } - - public function asString(): string - { - return 'notice'; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/Risky.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/Risky.php deleted file mode 100644 index 7e7db701..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/Risky.php +++ /dev/null @@ -1,38 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\TestStatus; - -/** - * @psalm-immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Risky extends Known -{ - /** - * @psalm-assert-if-true Risky $this - */ - public function isRisky(): bool - { - return true; - } - - public function asInt(): int - { - return 5; - } - - public function asString(): string - { - return 'risky'; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/Skipped.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/Skipped.php deleted file mode 100644 index 345aae95..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/Skipped.php +++ /dev/null @@ -1,38 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\TestStatus; - -/** - * @psalm-immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Skipped extends Known -{ - /** - * @psalm-assert-if-true Skipped $this - */ - public function isSkipped(): bool - { - return true; - } - - public function asInt(): int - { - return 1; - } - - public function asString(): string - { - return 'skipped'; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/Success.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/Success.php deleted file mode 100644 index 973fbdf5..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/Success.php +++ /dev/null @@ -1,38 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\TestStatus; - -/** - * @psalm-immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Success extends Known -{ - /** - * @psalm-assert-if-true Success $this - */ - public function isSuccess(): bool - { - return true; - } - - public function asInt(): int - { - return 0; - } - - public function asString(): string - { - return 'success'; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/TestStatus.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/TestStatus.php deleted file mode 100644 index 44484083..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/TestStatus.php +++ /dev/null @@ -1,195 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\TestStatus; - -/** - * @psalm-immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -abstract class TestStatus -{ - private readonly string $message; - - public static function from(int $status): self - { - return match ($status) { - 0 => self::success(), - 1 => self::skipped(), - 2 => self::incomplete(), - 3 => self::notice(), - 4 => self::deprecation(), - 5 => self::risky(), - 6 => self::warning(), - 7 => self::failure(), - 8 => self::error(), - default => self::unknown(), - }; - } - - public static function unknown(): self - { - return new Unknown; - } - - public static function success(): self - { - return new Success; - } - - public static function skipped(string $message = ''): self - { - return new Skipped($message); - } - - public static function incomplete(string $message = ''): self - { - return new Incomplete($message); - } - - public static function notice(string $message = ''): self - { - return new Notice($message); - } - - public static function deprecation(string $message = ''): self - { - return new Deprecation($message); - } - - public static function failure(string $message = ''): self - { - return new Failure($message); - } - - public static function error(string $message = ''): self - { - return new Error($message); - } - - public static function warning(string $message = ''): self - { - return new Warning($message); - } - - public static function risky(string $message = ''): self - { - return new Risky($message); - } - - private function __construct(string $message = '') - { - $this->message = $message; - } - - /** - * @psalm-assert-if-true Known $this - */ - public function isKnown(): bool - { - return false; - } - - /** - * @psalm-assert-if-true Unknown $this - */ - public function isUnknown(): bool - { - return false; - } - - /** - * @psalm-assert-if-true Success $this - */ - public function isSuccess(): bool - { - return false; - } - - /** - * @psalm-assert-if-true Skipped $this - */ - public function isSkipped(): bool - { - return false; - } - - /** - * @psalm-assert-if-true Incomplete $this - */ - public function isIncomplete(): bool - { - return false; - } - - /** - * @psalm-assert-if-true Notice $this - */ - public function isNotice(): bool - { - return false; - } - - /** - * @psalm-assert-if-true Deprecation $this - */ - public function isDeprecation(): bool - { - return false; - } - - /** - * @psalm-assert-if-true Failure $this - */ - public function isFailure(): bool - { - return false; - } - - /** - * @psalm-assert-if-true Error $this - */ - public function isError(): bool - { - return false; - } - - /** - * @psalm-assert-if-true Warning $this - */ - public function isWarning(): bool - { - return false; - } - - /** - * @psalm-assert-if-true Risky $this - */ - public function isRisky(): bool - { - return false; - } - - public function message(): string - { - return $this->message; - } - - public function isMoreImportantThan(self $other): bool - { - return $this->asInt() > $other->asInt(); - } - - abstract public function asInt(): int; - - abstract public function asString(): string; -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/Unknown.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/Unknown.php deleted file mode 100644 index 7a391638..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/Unknown.php +++ /dev/null @@ -1,38 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\TestStatus; - -/** - * @psalm-immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Unknown extends TestStatus -{ - /** - * @psalm-assert-if-true Unknown $this - */ - public function isUnknown(): bool - { - return true; - } - - public function asInt(): int - { - return -1; - } - - public function asString(): string - { - return 'unknown'; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/Warning.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/Warning.php deleted file mode 100644 index ebb05b0f..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestStatus/Warning.php +++ /dev/null @@ -1,38 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\TestStatus; - -/** - * @psalm-immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Warning extends Known -{ - /** - * @psalm-assert-if-true Warning $this - */ - public function isWarning(): bool - { - return true; - } - - public function asInt(): int - { - return 6; - } - - public function asString(): string - { - return 'warning'; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestSuite.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestSuite.php deleted file mode 100644 index 42245f8b..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestSuite.php +++ /dev/null @@ -1,716 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -use const PHP_EOL; -use function array_keys; -use function array_map; -use function array_pop; -use function array_reverse; -use function assert; -use function call_user_func; -use function class_exists; -use function count; -use function implode; -use function is_callable; -use function is_file; -use function is_subclass_of; -use function sprintf; -use function str_ends_with; -use function str_starts_with; -use function trim; -use Iterator; -use IteratorAggregate; -use PHPUnit\Event; -use PHPUnit\Event\Code\TestMethod; -use PHPUnit\Event\NoPreviousThrowableException; -use PHPUnit\Metadata\Api\Dependencies; -use PHPUnit\Metadata\Api\Groups; -use PHPUnit\Metadata\Api\HookMethods; -use PHPUnit\Metadata\Api\Requirements; -use PHPUnit\Metadata\MetadataCollection; -use PHPUnit\Runner\Exception as RunnerException; -use PHPUnit\Runner\Filter\Factory; -use PHPUnit\Runner\PhptTestCase; -use PHPUnit\Runner\TestSuiteLoader; -use PHPUnit\TestRunner\TestResult\Facade as TestResultFacade; -use PHPUnit\Util\Filter; -use PHPUnit\Util\Reflection; -use PHPUnit\Util\Test as TestUtil; -use ReflectionClass; -use ReflectionMethod; -use SebastianBergmann\CodeCoverage\InvalidArgumentException; -use SebastianBergmann\CodeCoverage\UnintentionallyCoveredCodeException; -use Throwable; - -/** - * @template-implements IteratorAggregate - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -class TestSuite implements IteratorAggregate, Reorderable, SelfDescribing, Test -{ - /** - * @psalm-var non-empty-string - */ - private string $name; - - /** - * @psalm-var array> - */ - private array $groups = []; - - /** - * @psalm-var ?list - */ - private ?array $requiredTests = null; - - /** - * @psalm-var list - */ - private array $tests = []; - - /** - * @psalm-var ?list - */ - private ?array $providedTests = null; - private ?Factory $iteratorFilter = null; - private bool $wasRun = false; - - /** - * @psalm-param non-empty-string $name - */ - public static function empty(string $name): static - { - return new static($name); - } - - /** - * @psalm-param class-string $className - */ - public static function fromClassName(string $className): static - { - assert(class_exists($className)); - - $class = new ReflectionClass($className); - - return static::fromClassReflector($class); - } - - public static function fromClassReflector(ReflectionClass $class): static - { - $testSuite = new static($class->getName()); - - $constructor = $class->getConstructor(); - - if ($constructor !== null && !$constructor->isPublic()) { - Event\Facade::emitter()->testRunnerTriggeredWarning( - sprintf( - 'Class "%s" has no public constructor.', - $class->getName(), - ), - ); - - return $testSuite; - } - - foreach (Reflection::publicMethodsInTestClass($class) as $method) { - if ($method->getDeclaringClass()->getName() === Assert::class) { - continue; - } - - if ($method->getDeclaringClass()->getName() === TestCase::class) { - continue; - } - - if (!TestUtil::isTestMethod($method)) { - continue; - } - - $testSuite->addTestMethod($class, $method); - } - - if ($testSuite->isEmpty()) { - Event\Facade::emitter()->testRunnerTriggeredWarning( - sprintf( - 'No tests found in class "%s".', - $class->getName(), - ), - ); - } - - return $testSuite; - } - - /** - * @psalm-param non-empty-string $name - */ - final private function __construct(string $name) - { - $this->name = $name; - } - - /** - * Returns a string representation of the test suite. - */ - public function toString(): string - { - return $this->name(); - } - - /** - * Adds a test to the suite. - */ - public function addTest(Test $test, array $groups = []): void - { - $class = new ReflectionClass($test); - - if ($class->isAbstract()) { - return; - } - - $this->tests[] = $test; - $this->clearCaches(); - - if ($test instanceof self && empty($groups)) { - $groups = $test->groups(); - } - - if ($this->containsOnlyVirtualGroups($groups)) { - $groups[] = 'default'; - } - - foreach ($groups as $group) { - if (!isset($this->groups[$group])) { - $this->groups[$group] = [$test]; - } else { - $this->groups[$group][] = $test; - } - } - - if ($test instanceof TestCase) { - $test->setGroups($groups); - } - } - - /** - * Adds the tests from the given class to the suite. - * - * @throws Exception - */ - public function addTestSuite(ReflectionClass $testClass): void - { - if ($testClass->isAbstract()) { - throw new Exception( - sprintf( - 'Class %s is abstract', - $testClass->getName(), - ), - ); - } - - if (!$testClass->isSubclassOf(TestCase::class)) { - throw new Exception( - sprintf( - 'Class %s is not a subclass of %s', - $testClass->getName(), - TestCase::class, - ), - ); - } - - $this->addTest(self::fromClassReflector($testClass)); - } - - /** - * Wraps both addTest() and addTestSuite - * as well as the separate import statements for the user's convenience. - * - * If the named file cannot be read or there are no new tests that can be - * added, a PHPUnit\Framework\WarningTestCase will be created instead, - * leaving the current test run untouched. - * - * @throws Exception - */ - public function addTestFile(string $filename): void - { - try { - if (str_ends_with($filename, '.phpt') && is_file($filename)) { - $this->addTest(new PhptTestCase($filename)); - } else { - $this->addTestSuite( - (new TestSuiteLoader)->load($filename), - ); - } - } catch (RunnerException $e) { - Event\Facade::emitter()->testRunnerTriggeredWarning( - $e->getMessage(), - ); - } - } - - /** - * Wrapper for addTestFile() that adds multiple test files. - * - * @throws Exception - */ - public function addTestFiles(iterable $fileNames): void - { - foreach ($fileNames as $filename) { - $this->addTestFile((string) $filename); - } - } - - /** - * Counts the number of test cases that will be run by this test. - */ - public function count(): int - { - $numTests = 0; - - foreach ($this as $test) { - $numTests += count($test); - } - - return $numTests; - } - - public function isEmpty(): bool - { - foreach ($this as $test) { - if (count($test) !== 0) { - return false; - } - } - - return true; - } - - /** - * @psalm-return non-empty-string - */ - public function name(): string - { - return $this->name; - } - - /** - * Returns the test groups of the suite. - * - * @psalm-return list - */ - public function groups(): array - { - return array_map( - 'strval', - array_keys($this->groups), - ); - } - - public function groupDetails(): array - { - return $this->groups; - } - - /** - * @throws CodeCoverageException - * @throws Event\RuntimeException - * @throws Exception - * @throws InvalidArgumentException - * @throws NoPreviousThrowableException - * @throws UnintentionallyCoveredCodeException - */ - public function run(): void - { - if ($this->wasRun) { - // @codeCoverageIgnoreStart - throw new Exception('The tests aggregated by this TestSuite were already run'); - // @codeCoverageIgnoreEnd - } - - $this->wasRun = true; - - if ($this->isEmpty()) { - return; - } - - $emitter = Event\Facade::emitter(); - $testSuiteValueObjectForEvents = Event\TestSuite\TestSuiteBuilder::from($this); - - $emitter->testSuiteStarted($testSuiteValueObjectForEvents); - - if (!$this->invokeMethodsBeforeFirstTest($emitter, $testSuiteValueObjectForEvents)) { - return; - } - - /** @psalm-var list $tests */ - $tests = []; - - foreach ($this as $test) { - $tests[] = $test; - } - - $tests = array_reverse($tests); - - $this->tests = []; - $this->groups = []; - - while (($test = array_pop($tests)) !== null) { - if (TestResultFacade::shouldStop()) { - $emitter->testRunnerExecutionAborted(); - - break; - } - - $test->run(); - } - - $this->invokeMethodsAfterLastTest($emitter); - - $emitter->testSuiteFinished($testSuiteValueObjectForEvents); - } - - /** - * Returns the tests as an enumeration. - * - * @psalm-return list - */ - public function tests(): array - { - return $this->tests; - } - - /** - * Set tests of the test suite. - * - * @psalm-param list $tests - */ - public function setTests(array $tests): void - { - $this->tests = $tests; - } - - /** - * Mark the test suite as skipped. - * - * @throws SkippedTestSuiteError - */ - public function markTestSuiteSkipped(string $message = ''): never - { - throw new SkippedTestSuiteError($message); - } - - /** - * Returns an iterator for this test suite. - */ - public function getIterator(): Iterator - { - $iterator = new TestSuiteIterator($this); - - if ($this->iteratorFilter !== null) { - $iterator = $this->iteratorFilter->factory($iterator, $this); - } - - return $iterator; - } - - public function injectFilter(Factory $filter): void - { - $this->iteratorFilter = $filter; - - foreach ($this as $test) { - if ($test instanceof self) { - $test->injectFilter($filter); - } - } - } - - /** - * @psalm-return list - */ - public function provides(): array - { - if ($this->providedTests === null) { - $this->providedTests = []; - - if (is_callable($this->sortId(), true)) { - $this->providedTests[] = new ExecutionOrderDependency($this->sortId()); - } - - foreach ($this->tests as $test) { - if (!($test instanceof Reorderable)) { - continue; - } - - $this->providedTests = ExecutionOrderDependency::mergeUnique($this->providedTests, $test->provides()); - } - } - - return $this->providedTests; - } - - /** - * @psalm-return list - */ - public function requires(): array - { - if ($this->requiredTests === null) { - $this->requiredTests = []; - - foreach ($this->tests as $test) { - if (!($test instanceof Reorderable)) { - continue; - } - - $this->requiredTests = ExecutionOrderDependency::mergeUnique( - ExecutionOrderDependency::filterInvalid($this->requiredTests), - $test->requires(), - ); - } - - $this->requiredTests = ExecutionOrderDependency::diff($this->requiredTests, $this->provides()); - } - - return $this->requiredTests; - } - - public function sortId(): string - { - return $this->name() . '::class'; - } - - /** - * @psalm-assert-if-true class-string $this->name - */ - public function isForTestClass(): bool - { - return class_exists($this->name, false) && is_subclass_of($this->name, TestCase::class); - } - - /** - * @throws Event\TestData\MoreThanOneDataSetFromDataProviderException - * @throws Exception - */ - protected function addTestMethod(ReflectionClass $class, ReflectionMethod $method): void - { - $className = $class->getName(); - $methodName = $method->getName(); - - assert(!empty($methodName)); - - try { - $test = (new TestBuilder)->build($class, $methodName); - } catch (InvalidDataProviderException $e) { - Event\Facade::emitter()->testTriggeredPhpunitError( - new TestMethod( - $className, - $methodName, - $class->getFileName(), - $method->getStartLine(), - Event\Code\TestDoxBuilder::fromClassNameAndMethodName( - $className, - $methodName, - ), - MetadataCollection::fromArray([]), - Event\TestData\TestDataCollection::fromArray([]), - ), - sprintf( - "The data provider specified for %s::%s is invalid\n%s", - $className, - $methodName, - $this->throwableToString($e), - ), - ); - - return; - } - - if ($test instanceof TestCase || $test instanceof DataProviderTestSuite) { - $test->setDependencies( - Dependencies::dependencies($class->getName(), $methodName), - ); - } - - $this->addTest( - $test, - (new Groups)->groups($class->getName(), $methodName), - ); - } - - private function clearCaches(): void - { - $this->providedTests = null; - $this->requiredTests = null; - } - - private function containsOnlyVirtualGroups(array $groups): bool - { - foreach ($groups as $group) { - if (!str_starts_with($group, '__phpunit_')) { - return false; - } - } - - return true; - } - - private function methodDoesNotExistOrIsDeclaredInTestCase(string $methodName): bool - { - $reflector = new ReflectionClass($this->name); - - return !$reflector->hasMethod($methodName) || - $reflector->getMethod($methodName)->getDeclaringClass()->getName() === TestCase::class; - } - - /** - * @throws Exception - */ - private function throwableToString(Throwable $t): string - { - $message = $t->getMessage(); - - if (empty(trim($message))) { - $message = ''; - } - - if ($t instanceof InvalidDataProviderException) { - return sprintf( - "%s\n%s", - $message, - Filter::getFilteredStacktrace($t), - ); - } - - return sprintf( - "%s: %s\n%s", - $t::class, - $message, - Filter::getFilteredStacktrace($t), - ); - } - - /** - * @throws Exception - * @throws NoPreviousThrowableException - */ - private function invokeMethodsBeforeFirstTest(Event\Emitter $emitter, Event\TestSuite\TestSuite $testSuiteValueObjectForEvents): bool - { - if (!$this->isForTestClass()) { - return true; - } - - $methodsCalledBeforeFirstTest = []; - - $beforeClassMethods = (new HookMethods)->hookMethods($this->name)['beforeClass']; - - try { - foreach ($beforeClassMethods as $beforeClassMethod) { - if ($this->methodDoesNotExistOrIsDeclaredInTestCase($beforeClassMethod)) { - continue; - } - - if ($missingRequirements = (new Requirements)->requirementsNotSatisfiedFor($this->name, $beforeClassMethod)) { - $this->markTestSuiteSkipped(implode(PHP_EOL, $missingRequirements)); - } - - $methodCalledBeforeFirstTest = new Event\Code\ClassMethod( - $this->name, - $beforeClassMethod, - ); - - $emitter->testBeforeFirstTestMethodCalled( - $this->name, - $methodCalledBeforeFirstTest, - ); - - $methodsCalledBeforeFirstTest[] = $methodCalledBeforeFirstTest; - - call_user_func([$this->name, $beforeClassMethod]); - } - } catch (SkippedTest|SkippedTestSuiteError $e) { - $emitter->testSuiteSkipped( - $testSuiteValueObjectForEvents, - $e->getMessage(), - ); - - return false; - } catch (Throwable $t) { - assert(isset($methodCalledBeforeFirstTest)); - - $emitter->testBeforeFirstTestMethodErrored( - $this->name, - $methodCalledBeforeFirstTest, - Event\Code\ThrowableBuilder::from($t), - ); - - if (!empty($methodsCalledBeforeFirstTest)) { - $emitter->testBeforeFirstTestMethodFinished( - $this->name, - ...$methodsCalledBeforeFirstTest, - ); - } - - return false; - } - - if (!empty($methodsCalledBeforeFirstTest)) { - $emitter->testBeforeFirstTestMethodFinished( - $this->name, - ...$methodsCalledBeforeFirstTest, - ); - } - - return true; - } - - private function invokeMethodsAfterLastTest(Event\Emitter $emitter): void - { - if (!$this->isForTestClass()) { - return; - } - - $methodsCalledAfterLastTest = []; - - $afterClassMethods = (new HookMethods)->hookMethods($this->name)['afterClass']; - - foreach ($afterClassMethods as $afterClassMethod) { - if ($this->methodDoesNotExistOrIsDeclaredInTestCase($afterClassMethod)) { - continue; - } - - try { - call_user_func([$this->name, $afterClassMethod]); - - $methodCalledAfterLastTest = new Event\Code\ClassMethod( - $this->name, - $afterClassMethod, - ); - - $emitter->testAfterLastTestMethodCalled( - $this->name, - $methodCalledAfterLastTest, - ); - - $methodsCalledAfterLastTest[] = $methodCalledAfterLastTest; - } catch (Throwable) { - // @todo - } - } - - if (!empty($methodsCalledAfterLastTest)) { - $emitter->testAfterLastTestMethodFinished( - $this->name, - ...$methodsCalledAfterLastTest, - ); - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestSuiteIterator.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestSuiteIterator.php deleted file mode 100644 index 8af01218..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Framework/TestSuiteIterator.php +++ /dev/null @@ -1,84 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -use function assert; -use function count; -use RecursiveIterator; - -/** - * @template-implements RecursiveIterator - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestSuiteIterator implements RecursiveIterator -{ - private int $position = 0; - - /** - * @psalm-var list - */ - private readonly array $tests; - - public function __construct(TestSuite $testSuite) - { - $this->tests = $testSuite->tests(); - } - - public function rewind(): void - { - $this->position = 0; - } - - public function valid(): bool - { - return $this->position < count($this->tests); - } - - public function key(): int - { - return $this->position; - } - - public function current(): Test - { - return $this->tests[$this->position]; - } - - public function next(): void - { - $this->position++; - } - - /** - * @throws NoChildTestSuiteException - */ - public function getChildren(): self - { - if (!$this->hasChildren()) { - throw new NoChildTestSuiteException( - 'The current item is not a TestSuite instance and therefore does not have any children.', - ); - } - - $current = $this->current(); - - assert($current instanceof TestSuite); - - return new self($current); - } - - public function hasChildren(): bool - { - return $this->valid() && $this->current() instanceof TestSuite; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/EventLogger.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/EventLogger.php deleted file mode 100644 index 08350213..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/EventLogger.php +++ /dev/null @@ -1,68 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging; - -use const FILE_APPEND; -use const LOCK_EX; -use const PHP_EOL; -use const PHP_OS_FAMILY; -use function file_put_contents; -use function implode; -use function preg_split; -use function str_repeat; -use function strlen; -use PHPUnit\Event\Event; -use PHPUnit\Event\Tracer\Tracer; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class EventLogger implements Tracer -{ - private readonly string $path; - private readonly bool $includeTelemetryInfo; - - public function __construct(string $path, bool $includeTelemetryInfo) - { - $this->path = $path; - $this->includeTelemetryInfo = $includeTelemetryInfo; - } - - public function trace(Event $event): void - { - $telemetryInfo = $this->telemetryInfo($event); - $indentation = PHP_EOL . str_repeat(' ', strlen($telemetryInfo)); - $lines = preg_split('/\r\n|\r|\n/', $event->asString()); - - $flags = FILE_APPEND; - - if (!(PHP_OS_FAMILY === 'Windows' || PHP_OS_FAMILY === 'Darwin') || - $this->path !== 'php://stdout') { - $flags |= LOCK_EX; - } - - file_put_contents( - $this->path, - $telemetryInfo . implode($indentation, $lines) . PHP_EOL, - $flags, - ); - } - - private function telemetryInfo(Event $event): string - { - if (!$this->includeTelemetryInfo) { - return ''; - } - - return $event->telemetryInfo()->asString() . ' '; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/JunitXmlLogger.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/JunitXmlLogger.php deleted file mode 100644 index f68bdc99..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/JunitXmlLogger.php +++ /dev/null @@ -1,446 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\JUnit; - -use const PHP_EOL; -use function assert; -use function basename; -use function is_int; -use function sprintf; -use function str_replace; -use function trim; -use DOMDocument; -use DOMElement; -use PHPUnit\Event\Code\Test; -use PHPUnit\Event\Code\TestMethod; -use PHPUnit\Event\EventFacadeIsSealedException; -use PHPUnit\Event\Facade; -use PHPUnit\Event\InvalidArgumentException; -use PHPUnit\Event\Telemetry\HRTime; -use PHPUnit\Event\Telemetry\Info; -use PHPUnit\Event\Test\Errored; -use PHPUnit\Event\Test\Failed; -use PHPUnit\Event\Test\Finished; -use PHPUnit\Event\Test\MarkedIncomplete; -use PHPUnit\Event\Test\PreparationStarted; -use PHPUnit\Event\Test\Prepared; -use PHPUnit\Event\Test\Skipped; -use PHPUnit\Event\TestSuite\Started; -use PHPUnit\Event\UnknownSubscriberTypeException; -use PHPUnit\TextUI\Output\Printer; -use PHPUnit\Util\Xml; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class JunitXmlLogger -{ - private readonly Printer $printer; - private DOMDocument $document; - private DOMElement $root; - - /** - * @var DOMElement[] - */ - private array $testSuites = []; - - /** - * @psalm-var array - */ - private array $testSuiteTests = [0]; - - /** - * @psalm-var array - */ - private array $testSuiteAssertions = [0]; - - /** - * @psalm-var array - */ - private array $testSuiteErrors = [0]; - - /** - * @psalm-var array - */ - private array $testSuiteFailures = [0]; - - /** - * @psalm-var array - */ - private array $testSuiteSkipped = [0]; - - /** - * @psalm-var array - */ - private array $testSuiteTimes = [0]; - private int $testSuiteLevel = 0; - private ?DOMElement $currentTestCase = null; - private ?HRTime $time = null; - private bool $prepared = false; - private bool $preparationFailed = false; - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - public function __construct(Printer $printer, Facade $facade) - { - $this->printer = $printer; - - $this->registerSubscribers($facade); - $this->createDocument(); - } - - public function flush(): void - { - $this->printer->print($this->document->saveXML()); - - $this->printer->flush(); - } - - public function testSuiteStarted(Started $event): void - { - $testSuite = $this->document->createElement('testsuite'); - $testSuite->setAttribute('name', $event->testSuite()->name()); - - if ($event->testSuite()->isForTestClass()) { - $testSuite->setAttribute('file', $event->testSuite()->file()); - } - - if ($this->testSuiteLevel > 0) { - $this->testSuites[$this->testSuiteLevel]->appendChild($testSuite); - } else { - $this->root->appendChild($testSuite); - } - - $this->testSuiteLevel++; - $this->testSuites[$this->testSuiteLevel] = $testSuite; - $this->testSuiteTests[$this->testSuiteLevel] = 0; - $this->testSuiteAssertions[$this->testSuiteLevel] = 0; - $this->testSuiteErrors[$this->testSuiteLevel] = 0; - $this->testSuiteFailures[$this->testSuiteLevel] = 0; - $this->testSuiteSkipped[$this->testSuiteLevel] = 0; - $this->testSuiteTimes[$this->testSuiteLevel] = 0; - } - - public function testSuiteFinished(): void - { - $this->testSuites[$this->testSuiteLevel]->setAttribute( - 'tests', - (string) $this->testSuiteTests[$this->testSuiteLevel], - ); - - $this->testSuites[$this->testSuiteLevel]->setAttribute( - 'assertions', - (string) $this->testSuiteAssertions[$this->testSuiteLevel], - ); - - $this->testSuites[$this->testSuiteLevel]->setAttribute( - 'errors', - (string) $this->testSuiteErrors[$this->testSuiteLevel], - ); - - $this->testSuites[$this->testSuiteLevel]->setAttribute( - 'failures', - (string) $this->testSuiteFailures[$this->testSuiteLevel], - ); - - $this->testSuites[$this->testSuiteLevel]->setAttribute( - 'skipped', - (string) $this->testSuiteSkipped[$this->testSuiteLevel], - ); - - $this->testSuites[$this->testSuiteLevel]->setAttribute( - 'time', - sprintf('%F', $this->testSuiteTimes[$this->testSuiteLevel]), - ); - - if ($this->testSuiteLevel > 1) { - $this->testSuiteTests[$this->testSuiteLevel - 1] += $this->testSuiteTests[$this->testSuiteLevel]; - $this->testSuiteAssertions[$this->testSuiteLevel - 1] += $this->testSuiteAssertions[$this->testSuiteLevel]; - $this->testSuiteErrors[$this->testSuiteLevel - 1] += $this->testSuiteErrors[$this->testSuiteLevel]; - $this->testSuiteFailures[$this->testSuiteLevel - 1] += $this->testSuiteFailures[$this->testSuiteLevel]; - $this->testSuiteSkipped[$this->testSuiteLevel - 1] += $this->testSuiteSkipped[$this->testSuiteLevel]; - $this->testSuiteTimes[$this->testSuiteLevel - 1] += $this->testSuiteTimes[$this->testSuiteLevel]; - } - - $this->testSuiteLevel--; - } - - /** - * @throws InvalidArgumentException - */ - public function testPreparationStarted(PreparationStarted $event): void - { - $this->createTestCase($event); - } - - /** - * @throws InvalidArgumentException - */ - public function testPreparationFailed(): void - { - $this->preparationFailed = true; - } - - /** - * @throws InvalidArgumentException - */ - public function testPrepared(): void - { - $this->prepared = true; - } - - /** - * @throws InvalidArgumentException - */ - public function testFinished(Finished $event): void - { - if (!$this->prepared || $this->preparationFailed) { - return; - } - - $this->handleFinish($event->telemetryInfo(), $event->numberOfAssertionsPerformed()); - } - - /** - * @throws InvalidArgumentException - */ - public function testMarkedIncomplete(MarkedIncomplete $event): void - { - $this->handleIncompleteOrSkipped($event); - } - - /** - * @throws InvalidArgumentException - */ - public function testSkipped(Skipped $event): void - { - $this->handleIncompleteOrSkipped($event); - } - - /** - * @throws InvalidArgumentException - */ - public function testErrored(Errored $event): void - { - $this->handleFault($event, 'error'); - - $this->testSuiteErrors[$this->testSuiteLevel]++; - } - - /** - * @throws InvalidArgumentException - */ - public function testFailed(Failed $event): void - { - $this->handleFault($event, 'failure'); - - $this->testSuiteFailures[$this->testSuiteLevel]++; - } - - /** - * @throws InvalidArgumentException - */ - private function handleFinish(Info $telemetryInfo, int $numberOfAssertionsPerformed): void - { - assert($this->currentTestCase !== null); - assert($this->time !== null); - - $time = $telemetryInfo->time()->duration($this->time)->asFloat(); - - $this->testSuiteAssertions[$this->testSuiteLevel] += $numberOfAssertionsPerformed; - - $this->currentTestCase->setAttribute( - 'assertions', - (string) $numberOfAssertionsPerformed, - ); - - $this->currentTestCase->setAttribute( - 'time', - sprintf('%F', $time), - ); - - $this->testSuites[$this->testSuiteLevel]->appendChild( - $this->currentTestCase, - ); - - $this->testSuiteTests[$this->testSuiteLevel]++; - $this->testSuiteTimes[$this->testSuiteLevel] += $time; - - $this->currentTestCase = null; - $this->time = null; - $this->prepared = false; - } - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - private function registerSubscribers(Facade $facade): void - { - $facade->registerSubscribers( - new TestSuiteStartedSubscriber($this), - new TestSuiteFinishedSubscriber($this), - new TestPreparationStartedSubscriber($this), - new TestPreparationFailedSubscriber($this), - new TestPreparedSubscriber($this), - new TestFinishedSubscriber($this), - new TestErroredSubscriber($this), - new TestFailedSubscriber($this), - new TestMarkedIncompleteSubscriber($this), - new TestSkippedSubscriber($this), - new TestRunnerExecutionFinishedSubscriber($this), - ); - } - - private function createDocument(): void - { - $this->document = new DOMDocument('1.0', 'UTF-8'); - $this->document->formatOutput = true; - - $this->root = $this->document->createElement('testsuites'); - $this->document->appendChild($this->root); - } - - /** - * @throws InvalidArgumentException - */ - private function handleFault(Errored|Failed $event, string $type): void - { - if (!$this->prepared) { - $this->createTestCase($event); - } - - assert($this->currentTestCase !== null); - - $buffer = $this->testAsString($event->test()); - - $throwable = $event->throwable(); - $buffer .= trim( - $throwable->description() . PHP_EOL . - $throwable->stackTrace(), - ); - - $fault = $this->document->createElement( - $type, - Xml::prepareString($buffer), - ); - - $fault->setAttribute('type', $throwable->className()); - - $this->currentTestCase->appendChild($fault); - - if (!$this->prepared) { - $this->handleFinish($event->telemetryInfo(), 0); - } - } - - /** - * @throws InvalidArgumentException - */ - private function handleIncompleteOrSkipped(MarkedIncomplete|Skipped $event): void - { - if (!$this->prepared) { - $this->createTestCase($event); - } - - assert($this->currentTestCase !== null); - - $skipped = $this->document->createElement('skipped'); - - $this->currentTestCase->appendChild($skipped); - - $this->testSuiteSkipped[$this->testSuiteLevel]++; - - if (!$this->prepared) { - $this->handleFinish($event->telemetryInfo(), 0); - } - } - - /** - * @throws InvalidArgumentException - */ - private function testAsString(Test $test): string - { - if ($test->isPhpt()) { - return basename($test->file()); - } - - assert($test instanceof TestMethod); - - return sprintf( - '%s::%s%s', - $test->className(), - $this->name($test), - PHP_EOL, - ); - } - - /** - * @throws InvalidArgumentException - */ - private function name(Test $test): string - { - if ($test->isPhpt()) { - return basename($test->file()); - } - - assert($test instanceof TestMethod); - - if (!$test->testData()->hasDataFromDataProvider()) { - return $test->methodName(); - } - - $dataSetName = $test->testData()->dataFromDataProvider()->dataSetName(); - - if (is_int($dataSetName)) { - return sprintf( - '%s with data set #%d', - $test->methodName(), - $dataSetName, - ); - } - - return sprintf( - '%s with data set "%s"', - $test->methodName(), - $dataSetName, - ); - } - - /** - * @throws InvalidArgumentException - * - * @psalm-assert !null $this->currentTestCase - */ - private function createTestCase(Errored|Failed|MarkedIncomplete|PreparationStarted|Prepared|Skipped $event): void - { - $testCase = $this->document->createElement('testcase'); - - $test = $event->test(); - - $testCase->setAttribute('name', $this->name($test)); - $testCase->setAttribute('file', $test->file()); - - if ($test->isTestMethod()) { - assert($test instanceof TestMethod); - - $testCase->setAttribute('line', (string) $test->line()); - $testCase->setAttribute('class', $test->className()); - $testCase->setAttribute('classname', str_replace('\\', '.', $test->className())); - } - - $this->currentTestCase = $testCase; - $this->time = $event->telemetryInfo()->time(); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/Subscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/Subscriber.php deleted file mode 100644 index 7067461e..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/Subscriber.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\JUnit; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -abstract class Subscriber -{ - private readonly JunitXmlLogger $logger; - - public function __construct(JunitXmlLogger $logger) - { - $this->logger = $logger; - } - - protected function logger(): JunitXmlLogger - { - return $this->logger; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestErroredSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestErroredSubscriber.php deleted file mode 100644 index 1c5ca7be..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestErroredSubscriber.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\JUnit; - -use PHPUnit\Event\InvalidArgumentException; -use PHPUnit\Event\Test\Errored; -use PHPUnit\Event\Test\ErroredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestErroredSubscriber extends Subscriber implements ErroredSubscriber -{ - /** - * @throws InvalidArgumentException - */ - public function notify(Errored $event): void - { - $this->logger()->testErrored($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestFailedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestFailedSubscriber.php deleted file mode 100644 index 286012ae..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestFailedSubscriber.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\JUnit; - -use PHPUnit\Event\InvalidArgumentException; -use PHPUnit\Event\Test\Failed; -use PHPUnit\Event\Test\FailedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestFailedSubscriber extends Subscriber implements FailedSubscriber -{ - /** - * @throws InvalidArgumentException - */ - public function notify(Failed $event): void - { - $this->logger()->testFailed($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestFinishedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestFinishedSubscriber.php deleted file mode 100644 index 3f3ecac1..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestFinishedSubscriber.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\JUnit; - -use PHPUnit\Event\InvalidArgumentException; -use PHPUnit\Event\Test\Finished; -use PHPUnit\Event\Test\FinishedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestFinishedSubscriber extends Subscriber implements FinishedSubscriber -{ - /** - * @throws InvalidArgumentException - */ - public function notify(Finished $event): void - { - $this->logger()->testFinished($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestMarkedIncompleteSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestMarkedIncompleteSubscriber.php deleted file mode 100644 index 5354427e..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestMarkedIncompleteSubscriber.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\JUnit; - -use PHPUnit\Event\InvalidArgumentException; -use PHPUnit\Event\Test\MarkedIncomplete; -use PHPUnit\Event\Test\MarkedIncompleteSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestMarkedIncompleteSubscriber extends Subscriber implements MarkedIncompleteSubscriber -{ - /** - * @throws InvalidArgumentException - */ - public function notify(MarkedIncomplete $event): void - { - $this->logger()->testMarkedIncomplete($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestPreparationFailedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestPreparationFailedSubscriber.php deleted file mode 100644 index d052f8dd..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestPreparationFailedSubscriber.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\JUnit; - -use PHPUnit\Event\InvalidArgumentException; -use PHPUnit\Event\Test\PreparationFailed; -use PHPUnit\Event\Test\PreparationFailedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestPreparationFailedSubscriber extends Subscriber implements PreparationFailedSubscriber -{ - /** - * @throws InvalidArgumentException - */ - public function notify(PreparationFailed $event): void - { - $this->logger()->testPreparationFailed(); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestPreparationStartedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestPreparationStartedSubscriber.php deleted file mode 100644 index 91ce18f7..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestPreparationStartedSubscriber.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\JUnit; - -use PHPUnit\Event\InvalidArgumentException; -use PHPUnit\Event\Test\PreparationStarted; -use PHPUnit\Event\Test\PreparationStartedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestPreparationStartedSubscriber extends Subscriber implements PreparationStartedSubscriber -{ - /** - * @throws InvalidArgumentException - */ - public function notify(PreparationStarted $event): void - { - $this->logger()->testPreparationStarted($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestPreparedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestPreparedSubscriber.php deleted file mode 100644 index d3de506b..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestPreparedSubscriber.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\JUnit; - -use PHPUnit\Event\InvalidArgumentException; -use PHPUnit\Event\Test\Prepared; -use PHPUnit\Event\Test\PreparedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestPreparedSubscriber extends Subscriber implements PreparedSubscriber -{ - /** - * @throws InvalidArgumentException - */ - public function notify(Prepared $event): void - { - $this->logger()->testPrepared(); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestRunnerExecutionFinishedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestRunnerExecutionFinishedSubscriber.php deleted file mode 100644 index b544b04f..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestRunnerExecutionFinishedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\JUnit; - -use PHPUnit\Event\TestRunner\ExecutionFinished; -use PHPUnit\Event\TestRunner\ExecutionFinishedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestRunnerExecutionFinishedSubscriber extends Subscriber implements ExecutionFinishedSubscriber -{ - public function notify(ExecutionFinished $event): void - { - $this->logger()->flush(); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestSkippedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestSkippedSubscriber.php deleted file mode 100644 index 383b89db..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestSkippedSubscriber.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\JUnit; - -use PHPUnit\Event\InvalidArgumentException; -use PHPUnit\Event\Test\Skipped; -use PHPUnit\Event\Test\SkippedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestSkippedSubscriber extends Subscriber implements SkippedSubscriber -{ - /** - * @throws InvalidArgumentException - */ - public function notify(Skipped $event): void - { - $this->logger()->testSkipped($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestSuiteFinishedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestSuiteFinishedSubscriber.php deleted file mode 100644 index 122f4aa7..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestSuiteFinishedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\JUnit; - -use PHPUnit\Event\TestSuite\Finished; -use PHPUnit\Event\TestSuite\FinishedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestSuiteFinishedSubscriber extends Subscriber implements FinishedSubscriber -{ - public function notify(Finished $event): void - { - $this->logger()->testSuiteFinished(); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestSuiteStartedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestSuiteStartedSubscriber.php deleted file mode 100644 index c213d774..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestSuiteStartedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\JUnit; - -use PHPUnit\Event\TestSuite\Started; -use PHPUnit\Event\TestSuite\StartedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestSuiteStartedSubscriber extends Subscriber implements StartedSubscriber -{ - public function notify(Started $event): void - { - $this->logger()->testSuiteStarted($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/Subscriber/Subscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/Subscriber/Subscriber.php deleted file mode 100644 index ae72b8b4..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/Subscriber/Subscriber.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TeamCity; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -abstract class Subscriber -{ - private readonly TeamCityLogger $logger; - - public function __construct(TeamCityLogger $logger) - { - $this->logger = $logger; - } - - protected function logger(): TeamCityLogger - { - return $this->logger; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestConsideredRiskySubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestConsideredRiskySubscriber.php deleted file mode 100644 index ab266347..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestConsideredRiskySubscriber.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TeamCity; - -use PHPUnit\Event\InvalidArgumentException; -use PHPUnit\Event\Test\ConsideredRisky; -use PHPUnit\Event\Test\ConsideredRiskySubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestConsideredRiskySubscriber extends Subscriber implements ConsideredRiskySubscriber -{ - /** - * @throws InvalidArgumentException - */ - public function notify(ConsideredRisky $event): void - { - $this->logger()->testConsideredRisky($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestErroredSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestErroredSubscriber.php deleted file mode 100644 index 2c4141b4..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestErroredSubscriber.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TeamCity; - -use PHPUnit\Event\InvalidArgumentException; -use PHPUnit\Event\Test\Errored; -use PHPUnit\Event\Test\ErroredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestErroredSubscriber extends Subscriber implements ErroredSubscriber -{ - /** - * @throws InvalidArgumentException - */ - public function notify(Errored $event): void - { - $this->logger()->testErrored($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestFailedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestFailedSubscriber.php deleted file mode 100644 index 248cc1b5..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestFailedSubscriber.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TeamCity; - -use PHPUnit\Event\InvalidArgumentException; -use PHPUnit\Event\Test\Failed; -use PHPUnit\Event\Test\FailedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestFailedSubscriber extends Subscriber implements FailedSubscriber -{ - /** - * @throws InvalidArgumentException - */ - public function notify(Failed $event): void - { - $this->logger()->testFailed($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestFinishedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestFinishedSubscriber.php deleted file mode 100644 index 82eaab66..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestFinishedSubscriber.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TeamCity; - -use PHPUnit\Event\InvalidArgumentException; -use PHPUnit\Event\Test\Finished; -use PHPUnit\Event\Test\FinishedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestFinishedSubscriber extends Subscriber implements FinishedSubscriber -{ - /** - * @throws InvalidArgumentException - */ - public function notify(Finished $event): void - { - $this->logger()->testFinished($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestMarkedIncompleteSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestMarkedIncompleteSubscriber.php deleted file mode 100644 index d0cb9214..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestMarkedIncompleteSubscriber.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TeamCity; - -use PHPUnit\Event\InvalidArgumentException; -use PHPUnit\Event\Test\MarkedIncomplete; -use PHPUnit\Event\Test\MarkedIncompleteSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestMarkedIncompleteSubscriber extends Subscriber implements MarkedIncompleteSubscriber -{ - /** - * @throws InvalidArgumentException - */ - public function notify(MarkedIncomplete $event): void - { - $this->logger()->testMarkedIncomplete($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestPreparedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestPreparedSubscriber.php deleted file mode 100644 index 34e92007..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestPreparedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TeamCity; - -use PHPUnit\Event\Test\Prepared; -use PHPUnit\Event\Test\PreparedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestPreparedSubscriber extends Subscriber implements PreparedSubscriber -{ - public function notify(Prepared $event): void - { - $this->logger()->testPrepared($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestRunnerExecutionFinishedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestRunnerExecutionFinishedSubscriber.php deleted file mode 100644 index e87aa21d..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestRunnerExecutionFinishedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TeamCity; - -use PHPUnit\Event\TestRunner\ExecutionFinished; -use PHPUnit\Event\TestRunner\ExecutionFinishedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestRunnerExecutionFinishedSubscriber extends Subscriber implements ExecutionFinishedSubscriber -{ - public function notify(ExecutionFinished $event): void - { - $this->logger()->flush(); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSkippedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSkippedSubscriber.php deleted file mode 100644 index 17951c36..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSkippedSubscriber.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TeamCity; - -use PHPUnit\Event\InvalidArgumentException; -use PHPUnit\Event\Test\Skipped; -use PHPUnit\Event\Test\SkippedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestSkippedSubscriber extends Subscriber implements SkippedSubscriber -{ - /** - * @throws InvalidArgumentException - */ - public function notify(Skipped $event): void - { - $this->logger()->testSkipped($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSuiteFinishedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSuiteFinishedSubscriber.php deleted file mode 100644 index ff96fb22..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSuiteFinishedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TeamCity; - -use PHPUnit\Event\TestSuite\Finished; -use PHPUnit\Event\TestSuite\FinishedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestSuiteFinishedSubscriber extends Subscriber implements FinishedSubscriber -{ - public function notify(Finished $event): void - { - $this->logger()->testSuiteFinished($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSuiteStartedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSuiteStartedSubscriber.php deleted file mode 100644 index 6bebe6a7..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSuiteStartedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TeamCity; - -use PHPUnit\Event\TestSuite\Started; -use PHPUnit\Event\TestSuite\StartedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestSuiteStartedSubscriber extends Subscriber implements StartedSubscriber -{ - public function notify(Started $event): void - { - $this->logger()->testSuiteStarted($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/TeamCityLogger.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/TeamCityLogger.php deleted file mode 100644 index 47600a12..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TeamCity/TeamCityLogger.php +++ /dev/null @@ -1,425 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TeamCity; - -use function assert; -use function getmypid; -use function ini_get; -use function is_a; -use function round; -use function sprintf; -use function str_replace; -use function stripos; -use PHPUnit\Event\Code\TestMethod; -use PHPUnit\Event\Code\Throwable; -use PHPUnit\Event\Event; -use PHPUnit\Event\EventFacadeIsSealedException; -use PHPUnit\Event\Facade; -use PHPUnit\Event\InvalidArgumentException; -use PHPUnit\Event\Telemetry\HRTime; -use PHPUnit\Event\Test\BeforeFirstTestMethodErrored; -use PHPUnit\Event\Test\ConsideredRisky; -use PHPUnit\Event\Test\Errored; -use PHPUnit\Event\Test\Failed; -use PHPUnit\Event\Test\Finished; -use PHPUnit\Event\Test\MarkedIncomplete; -use PHPUnit\Event\Test\Prepared; -use PHPUnit\Event\Test\Skipped; -use PHPUnit\Event\TestSuite\Finished as TestSuiteFinished; -use PHPUnit\Event\TestSuite\Skipped as TestSuiteSkipped; -use PHPUnit\Event\TestSuite\Started as TestSuiteStarted; -use PHPUnit\Event\TestSuite\TestSuiteForTestClass; -use PHPUnit\Event\TestSuite\TestSuiteForTestMethodWithDataProvider; -use PHPUnit\Event\UnknownSubscriberTypeException; -use PHPUnit\Framework\Exception as FrameworkException; -use PHPUnit\TextUI\Output\Printer; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TeamCityLogger -{ - private readonly Printer $printer; - private bool $isSummaryTestCountPrinted = false; - private ?HRTime $time = null; - private ?int $flowId; - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - public function __construct(Printer $printer, Facade $facade) - { - $this->printer = $printer; - - $this->registerSubscribers($facade); - $this->setFlowId(); - } - - public function testSuiteStarted(TestSuiteStarted $event): void - { - $testSuite = $event->testSuite(); - - if (!$this->isSummaryTestCountPrinted) { - $this->isSummaryTestCountPrinted = true; - - $this->writeMessage( - 'testCount', - ['count' => $testSuite->count()], - ); - } - - $parameters = ['name' => $testSuite->name()]; - - if ($testSuite->isForTestClass()) { - assert($testSuite instanceof TestSuiteForTestClass); - - $parameters['locationHint'] = sprintf( - 'php_qn://%s::\\%s', - $testSuite->file(), - $testSuite->name(), - ); - } elseif ($testSuite->isForTestMethodWithDataProvider()) { - assert($testSuite instanceof TestSuiteForTestMethodWithDataProvider); - - $parameters['locationHint'] = sprintf( - 'php_qn://%s::\\%s', - $testSuite->file(), - $testSuite->name(), - ); - - $parameters['name'] = $testSuite->methodName(); - } - - $this->writeMessage('testSuiteStarted', $parameters); - } - - public function testSuiteFinished(TestSuiteFinished $event): void - { - $testSuite = $event->testSuite(); - - $parameters = ['name' => $testSuite->name()]; - - if ($testSuite->isForTestMethodWithDataProvider()) { - assert($testSuite instanceof TestSuiteForTestMethodWithDataProvider); - - $parameters['name'] = $testSuite->methodName(); - } - - $this->writeMessage('testSuiteFinished', $parameters); - } - - public function testPrepared(Prepared $event): void - { - $test = $event->test(); - - $parameters = [ - 'name' => $test->name(), - ]; - - if ($test->isTestMethod()) { - assert($test instanceof TestMethod); - - $parameters['locationHint'] = sprintf( - 'php_qn://%s::\\%s::%s', - $test->file(), - $test->className(), - $test->name(), - ); - } - - $this->writeMessage('testStarted', $parameters); - - $this->time = $event->telemetryInfo()->time(); - } - - /** - * @throws InvalidArgumentException - */ - public function testMarkedIncomplete(MarkedIncomplete $event): void - { - if ($this->time === null) { - // @codeCoverageIgnoreStart - $this->time = $event->telemetryInfo()->time(); - // @codeCoverageIgnoreEnd - } - - $this->writeMessage( - 'testIgnored', - [ - 'name' => $event->test()->name(), - 'message' => $event->throwable()->message(), - 'details' => $this->details($event->throwable()), - 'duration' => $this->duration($event), - ], - ); - } - - /** - * @throws InvalidArgumentException - */ - public function testSkipped(Skipped $event): void - { - if ($this->time === null) { - $this->time = $event->telemetryInfo()->time(); - } - - $parameters = [ - 'name' => $event->test()->name(), - 'message' => $event->message(), - ]; - - $parameters['duration'] = $this->duration($event); - - $this->writeMessage('testIgnored', $parameters); - } - - /** - * @throws InvalidArgumentException - */ - public function testSuiteSkipped(TestSuiteSkipped $event): void - { - if ($this->time === null) { - $this->time = $event->telemetryInfo()->time(); - } - - $parameters = [ - 'name' => $event->testSuite()->name(), - 'message' => $event->message(), - ]; - - $parameters['duration'] = $this->duration($event); - - $this->writeMessage('testIgnored', $parameters); - $this->writeMessage('testSuiteFinished', $parameters); - } - - /** - * @throws InvalidArgumentException - */ - public function beforeFirstTestMethodErrored(BeforeFirstTestMethodErrored $event): void - { - if ($this->time === null) { - $this->time = $event->telemetryInfo()->time(); - } - - $parameters = [ - 'name' => $event->testClassName(), - 'message' => $this->message($event->throwable()), - 'details' => $this->details($event->throwable()), - 'duration' => $this->duration($event), - ]; - - $this->writeMessage('testFailed', $parameters); - $this->writeMessage('testSuiteFinished', $parameters); - } - - /** - * @throws InvalidArgumentException - */ - public function testErrored(Errored $event): void - { - if ($this->time === null) { - $this->time = $event->telemetryInfo()->time(); - } - - $this->writeMessage( - 'testFailed', - [ - 'name' => $event->test()->name(), - 'message' => $this->message($event->throwable()), - 'details' => $this->details($event->throwable()), - 'duration' => $this->duration($event), - ], - ); - } - - /** - * @throws InvalidArgumentException - */ - public function testFailed(Failed $event): void - { - if ($this->time === null) { - // @codeCoverageIgnoreStart - $this->time = $event->telemetryInfo()->time(); - // @codeCoverageIgnoreEnd - } - - $parameters = [ - 'name' => $event->test()->name(), - 'message' => $this->message($event->throwable()), - 'details' => $this->details($event->throwable()), - 'duration' => $this->duration($event), - ]; - - if ($event->hasComparisonFailure()) { - $parameters['type'] = 'comparisonFailure'; - $parameters['actual'] = $event->comparisonFailure()->actual(); - $parameters['expected'] = $event->comparisonFailure()->expected(); - } - - $this->writeMessage('testFailed', $parameters); - } - - /** - * @throws InvalidArgumentException - */ - public function testConsideredRisky(ConsideredRisky $event): void - { - if ($this->time === null) { - // @codeCoverageIgnoreStart - $this->time = $event->telemetryInfo()->time(); - // @codeCoverageIgnoreEnd - } - - $this->writeMessage( - 'testFailed', - [ - 'name' => $event->test()->name(), - 'message' => $event->message(), - 'details' => '', - 'duration' => $this->duration($event), - ], - ); - } - - /** - * @throws InvalidArgumentException - */ - public function testFinished(Finished $event): void - { - $this->writeMessage( - 'testFinished', - [ - 'name' => $event->test()->name(), - 'duration' => $this->duration($event), - ], - ); - - $this->time = null; - } - - public function flush(): void - { - $this->printer->flush(); - } - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - private function registerSubscribers(Facade $facade): void - { - $facade->registerSubscribers( - new TestSuiteStartedSubscriber($this), - new TestSuiteFinishedSubscriber($this), - new TestPreparedSubscriber($this), - new TestFinishedSubscriber($this), - new TestErroredSubscriber($this), - new TestFailedSubscriber($this), - new TestMarkedIncompleteSubscriber($this), - new TestSkippedSubscriber($this), - new TestSuiteSkippedSubscriber($this), - new TestConsideredRiskySubscriber($this), - new TestRunnerExecutionFinishedSubscriber($this), - new TestSuiteBeforeFirstTestMethodErroredSubscriber($this), - ); - } - - private function setFlowId(): void - { - if (stripos(ini_get('disable_functions'), 'getmypid') === false) { - $this->flowId = getmypid(); - } - } - - private function writeMessage(string $eventName, array $parameters = []): void - { - $this->printer->print( - sprintf( - '##teamcity[%s', - $eventName, - ), - ); - - if ($this->flowId !== null) { - $parameters['flowId'] = $this->flowId; - } - - foreach ($parameters as $key => $value) { - $this->printer->print( - sprintf( - " %s='%s'", - $key, - $this->escape((string) $value), - ), - ); - } - - $this->printer->print("]\n"); - } - - /** - * @throws InvalidArgumentException - */ - private function duration(Event $event): int - { - if ($this->time === null) { - // @codeCoverageIgnoreStart - return 0; - // @codeCoverageIgnoreEnd - } - - return (int) round($event->telemetryInfo()->time()->duration($this->time)->asFloat() * 1000); - } - - private function escape(string $string): string - { - return str_replace( - ['|', "'", "\n", "\r", ']', '['], - ['||', "|'", '|n', '|r', '|]', '|['], - $string, - ); - } - - private function message(Throwable $throwable): string - { - if (is_a($throwable->className(), FrameworkException::class, true)) { - return $throwable->message(); - } - - $buffer = $throwable->className(); - - if (!empty($throwable->message())) { - $buffer .= ': ' . $throwable->message(); - } - - return $buffer; - } - - private function details(Throwable $throwable): string - { - $buffer = $throwable->stackTrace(); - - while ($throwable->hasPrevious()) { - $throwable = $throwable->previous(); - - $buffer .= sprintf( - "\nCaused by\n%s\n%s", - $throwable->description(), - $throwable->stackTrace(), - ); - } - - return $buffer; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/HtmlRenderer.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/HtmlRenderer.php deleted file mode 100644 index 35bc243e..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/HtmlRenderer.php +++ /dev/null @@ -1,158 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use function sprintf; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class HtmlRenderer -{ - /** - * @var string - */ - private const PAGE_HEADER = <<<'EOT' - - - - - Test Documentation - - - -EOT; - - /** - * @var string - */ - private const CLASS_HEADER = <<<'EOT' - -

      %s

      -
        - -EOT; - - /** - * @var string - */ - private const CLASS_FOOTER = <<<'EOT' -
      -EOT; - - /** - * @var string - */ - private const PAGE_FOOTER = <<<'EOT' - - - -EOT; - - /** - * @psalm-param array $tests - */ - public function render(array $tests): string - { - $buffer = self::PAGE_HEADER; - - foreach ($tests as $prettifiedClassName => $_tests) { - $buffer .= sprintf( - self::CLASS_HEADER, - $prettifiedClassName, - ); - - foreach ($this->reduce($_tests) as $prettifiedMethodName => $outcome) { - $buffer .= sprintf( - "
    • %s
    • \n", - $outcome, - $prettifiedMethodName, - ); - } - - $buffer .= self::CLASS_FOOTER; - } - - return $buffer . self::PAGE_FOOTER; - } - - /** - * @psalm-return array - */ - private function reduce(TestResultCollection $tests): array - { - $result = []; - - foreach ($tests as $test) { - $prettifiedMethodName = $test->test()->testDox()->prettifiedMethodName(); - - if (!isset($result[$prettifiedMethodName])) { - $result[$prettifiedMethodName] = $test->status()->isSuccess() ? 'success' : 'defect'; - - continue; - } - - if ($test->status()->isSuccess()) { - continue; - } - - $result[$prettifiedMethodName] = 'defect'; - } - - return $result; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/NamePrettifier.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/NamePrettifier.php deleted file mode 100644 index a8c0c4f0..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/NamePrettifier.php +++ /dev/null @@ -1,305 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use function array_key_exists; -use function array_keys; -use function array_map; -use function array_pop; -use function array_values; -use function assert; -use function class_exists; -use function explode; -use function gettype; -use function implode; -use function is_bool; -use function is_float; -use function is_int; -use function is_object; -use function is_scalar; -use function method_exists; -use function preg_quote; -use function preg_replace; -use function rtrim; -use function sprintf; -use function str_contains; -use function str_ends_with; -use function str_replace; -use function str_starts_with; -use function strlen; -use function strtolower; -use function strtoupper; -use function substr; -use function trim; -use PHPUnit\Framework\TestCase; -use PHPUnit\Metadata\Parser\Registry as MetadataRegistry; -use PHPUnit\Metadata\TestDox; -use PHPUnit\Util\Color; -use ReflectionEnum; -use ReflectionMethod; -use ReflectionObject; -use SebastianBergmann\Exporter\Exporter; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class NamePrettifier -{ - /** - * @psalm-var array - */ - private static array $strings = []; - - /** - * @psalm-param class-string $className - */ - public function prettifyTestClassName(string $className): string - { - if (class_exists($className)) { - $classLevelTestDox = MetadataRegistry::parser()->forClass($className)->isTestDox(); - - if ($classLevelTestDox->isNotEmpty()) { - $classLevelTestDox = $classLevelTestDox->asArray()[0]; - - assert($classLevelTestDox instanceof TestDox); - - return $classLevelTestDox->text(); - } - } - - $parts = explode('\\', $className); - $className = array_pop($parts); - - if (str_ends_with($className, 'Test')) { - $className = substr($className, 0, strlen($className) - strlen('Test')); - } - - if (str_starts_with($className, 'Tests')) { - $className = substr($className, strlen('Tests')); - } elseif (str_starts_with($className, 'Test')) { - $className = substr($className, strlen('Test')); - } - - if (empty($className)) { - $className = 'UnnamedTests'; - } - - if (!empty($parts)) { - $parts[] = $className; - $fullyQualifiedName = implode('\\', $parts); - } else { - $fullyQualifiedName = $className; - } - - $result = preg_replace('/(?<=[[:lower:]])(?=[[:upper:]])/u', ' ', $className); - - if ($fullyQualifiedName !== $className) { - return $result . ' (' . $fullyQualifiedName . ')'; - } - - return $result; - } - - // NOTE: this method is on a hot path and very performance sensitive. change with care. - public function prettifyTestMethodName(string $name): string - { - if ($name === '') { - return ''; - } - - $string = rtrim($name, '0123456789'); - - if (array_key_exists($string, self::$strings)) { - $name = $string; - } elseif ($string === $name) { - self::$strings[$string] = 1; - } - - if (str_starts_with($name, 'test_')) { - $name = substr($name, 5); - } elseif (str_starts_with($name, 'test')) { - $name = substr($name, 4); - } - - if ($name === '') { - return ''; - } - - $name[0] = strtoupper($name[0]); - - $noUnderscore = str_replace('_', ' ', $name); - - if ($noUnderscore !== $name) { - return trim($noUnderscore); - } - - $wasNumeric = false; - - $buffer = ''; - - $len = strlen($name); - - for ($i = 0; $i < $len; $i++) { - if ($i > 0 && $name[$i] >= 'A' && $name[$i] <= 'Z') { - $buffer .= ' ' . strtolower($name[$i]); - } else { - $isNumeric = $name[$i] >= '0' && $name[$i] <= '9'; - - if (!$wasNumeric && $isNumeric) { - $buffer .= ' '; - $wasNumeric = true; - } - - if ($wasNumeric && !$isNumeric) { - $wasNumeric = false; - } - - $buffer .= $name[$i]; - } - } - - return $buffer; - } - - public function prettifyTestCase(TestCase $test, bool $colorize): string - { - $annotationWithPlaceholders = false; - $methodLevelTestDox = MetadataRegistry::parser()->forMethod($test::class, $test->name())->isTestDox()->isMethodLevel(); - - if ($methodLevelTestDox->isNotEmpty()) { - $methodLevelTestDox = $methodLevelTestDox->asArray()[0]; - - assert($methodLevelTestDox instanceof TestDox); - - $result = $methodLevelTestDox->text(); - - if (str_contains($result, '$')) { - $annotation = $result; - $providedData = $this->mapTestMethodParameterNamesToProvidedDataValues($test, $colorize); - - $variables = array_map( - static fn (string $variable): string => sprintf( - '/%s(?=\b)/', - preg_quote($variable, '/'), - ), - array_keys($providedData), - ); - - $result = preg_replace($variables, $providedData, $annotation); - - $annotationWithPlaceholders = true; - } - } else { - $result = $this->prettifyTestMethodName($test->name()); - } - - if (!$annotationWithPlaceholders && $test->usesDataProvider()) { - $result .= $this->prettifyDataSet($test, $colorize); - } - - return $result; - } - - public function prettifyDataSet(TestCase $test, bool $colorize): string - { - if (!$colorize) { - return $test->dataSetAsString(); - } - - if (is_int($test->dataName())) { - return Color::dim(' with data set ') . Color::colorize('fg-cyan', (string) $test->dataName()); - } - - return Color::dim(' with ') . Color::colorize('fg-cyan', Color::visualizeWhitespace($test->dataName())); - } - - private function mapTestMethodParameterNamesToProvidedDataValues(TestCase $test, bool $colorize): array - { - assert(method_exists($test, $test->name())); - - /** @noinspection PhpUnhandledExceptionInspection */ - $reflector = new ReflectionMethod($test::class, $test->name()); - - $providedData = []; - $providedDataValues = array_values($test->providedData()); - $i = 0; - - $providedData['$_dataName'] = $test->dataName(); - - foreach ($reflector->getParameters() as $parameter) { - if (!array_key_exists($i, $providedDataValues) && $parameter->isDefaultValueAvailable()) { - $providedDataValues[$i] = $parameter->getDefaultValue(); - } - - $value = $providedDataValues[$i++] ?? null; - - if (is_object($value)) { - $value = $this->objectToString($value); - } - - if (!is_scalar($value)) { - $value = gettype($value); - - if ($value === 'NULL') { - $value = 'null'; - } - } - - if (is_bool($value) || is_int($value) || is_float($value)) { - $value = (new Exporter)->export($value); - } - - if ($value === '') { - if ($colorize) { - $value = Color::colorize('dim,underlined', 'empty'); - } else { - $value = "''"; - } - } - - $providedData['$' . $parameter->getName()] = str_replace('$', '\\$', $value); - } - - if ($colorize) { - $providedData = array_map( - static fn ($value) => Color::colorize('fg-cyan', Color::visualizeWhitespace((string) $value, true)), - $providedData, - ); - } - - return $providedData; - } - - /** - * @return non-empty-string - */ - private function objectToString(object $value): string - { - $reflector = new ReflectionObject($value); - - if ($reflector->isEnum()) { - $enumReflector = new ReflectionEnum($value); - - if ($enumReflector->isBacked()) { - return $value->value; - } - - return $value->name; - } - - if ($reflector->hasMethod('__toString')) { - return $value->__toString(); - } - - return $value::class; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/PlainTextRenderer.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/PlainTextRenderer.php deleted file mode 100644 index 8d11c1c2..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/PlainTextRenderer.php +++ /dev/null @@ -1,79 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use function sprintf; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class PlainTextRenderer -{ - /** - * @psalm-param array $tests - */ - public function render(array $tests): string - { - $buffer = ''; - - foreach ($tests as $prettifiedClassName => $_tests) { - $buffer .= $prettifiedClassName . "\n"; - - foreach ($this->reduce($_tests) as $prettifiedMethodName => $outcome) { - $buffer .= sprintf( - ' [%s] %s' . "\n", - $outcome, - $prettifiedMethodName, - ); - } - - $buffer .= "\n"; - } - - return $buffer; - } - - /** - * @psalm-return array - */ - private function reduce(TestResultCollection $tests): array - { - $result = []; - - foreach ($tests as $test) { - $prettifiedMethodName = $test->test()->testDox()->prettifiedMethodName(); - - $success = true; - - if ($test->status()->isError() || - $test->status()->isFailure() || - $test->status()->isIncomplete() || - $test->status()->isSkipped()) { - $success = false; - } - - if (!isset($result[$prettifiedMethodName])) { - $result[$prettifiedMethodName] = $success ? 'x' : ' '; - - continue; - } - - if ($success) { - continue; - } - - $result[$prettifiedMethodName] = ' '; - } - - return $result; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/Subscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/Subscriber.php deleted file mode 100644 index 9d7e347c..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/Subscriber.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -abstract class Subscriber -{ - private readonly TestResultCollector $collector; - - public function __construct(TestResultCollector $collector) - { - $this->collector = $collector; - } - - protected function collector(): TestResultCollector - { - return $this->collector; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestConsideredRiskySubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestConsideredRiskySubscriber.php deleted file mode 100644 index 9bace366..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestConsideredRiskySubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\Test\ConsideredRisky; -use PHPUnit\Event\Test\ConsideredRiskySubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestConsideredRiskySubscriber extends Subscriber implements ConsideredRiskySubscriber -{ - public function notify(ConsideredRisky $event): void - { - $this->collector()->testConsideredRisky($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestErroredSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestErroredSubscriber.php deleted file mode 100644 index bd5c56ef..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestErroredSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\Test\Errored; -use PHPUnit\Event\Test\ErroredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestErroredSubscriber extends Subscriber implements ErroredSubscriber -{ - public function notify(Errored $event): void - { - $this->collector()->testErrored($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestFailedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestFailedSubscriber.php deleted file mode 100644 index 8efe91c1..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestFailedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\Test\Failed; -use PHPUnit\Event\Test\FailedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestFailedSubscriber extends Subscriber implements FailedSubscriber -{ - public function notify(Failed $event): void - { - $this->collector()->testFailed($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestFinishedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestFinishedSubscriber.php deleted file mode 100644 index 2ec85f87..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestFinishedSubscriber.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\InvalidArgumentException; -use PHPUnit\Event\Test\Finished; -use PHPUnit\Event\Test\FinishedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestFinishedSubscriber extends Subscriber implements FinishedSubscriber -{ - /** - * @throws InvalidArgumentException - */ - public function notify(Finished $event): void - { - $this->collector()->testFinished($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestMarkedIncompleteSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestMarkedIncompleteSubscriber.php deleted file mode 100644 index 6c2e4077..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestMarkedIncompleteSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\Test\MarkedIncomplete; -use PHPUnit\Event\Test\MarkedIncompleteSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestMarkedIncompleteSubscriber extends Subscriber implements MarkedIncompleteSubscriber -{ - public function notify(MarkedIncomplete $event): void - { - $this->collector()->testMarkedIncomplete($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestPassedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestPassedSubscriber.php deleted file mode 100644 index 2821d8e3..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestPassedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\Test\Passed; -use PHPUnit\Event\Test\PassedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestPassedSubscriber extends Subscriber implements PassedSubscriber -{ - public function notify(Passed $event): void - { - $this->collector()->testPassed($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestPreparedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestPreparedSubscriber.php deleted file mode 100644 index a2bf06a9..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestPreparedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\Test\Prepared; -use PHPUnit\Event\Test\PreparedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestPreparedSubscriber extends Subscriber implements PreparedSubscriber -{ - public function notify(Prepared $event): void - { - $this->collector()->testPrepared($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestSkippedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestSkippedSubscriber.php deleted file mode 100644 index f6ea04b0..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestSkippedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\Test\Skipped; -use PHPUnit\Event\Test\SkippedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestSkippedSubscriber extends Subscriber implements SkippedSubscriber -{ - public function notify(Skipped $event): void - { - $this->collector()->testSkipped($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredDeprecationSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredDeprecationSubscriber.php deleted file mode 100644 index 15872b72..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredDeprecationSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\Test\DeprecationTriggered; -use PHPUnit\Event\Test\DeprecationTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredDeprecationSubscriber extends Subscriber implements DeprecationTriggeredSubscriber -{ - public function notify(DeprecationTriggered $event): void - { - $this->collector()->testTriggeredDeprecation($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredNoticeSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredNoticeSubscriber.php deleted file mode 100644 index a6d5a0a8..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredNoticeSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\Test\NoticeTriggered; -use PHPUnit\Event\Test\NoticeTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredNoticeSubscriber extends Subscriber implements NoticeTriggeredSubscriber -{ - public function notify(NoticeTriggered $event): void - { - $this->collector()->testTriggeredNotice($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpDeprecationSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpDeprecationSubscriber.php deleted file mode 100644 index bcdd3947..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpDeprecationSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\Test\PhpDeprecationTriggered; -use PHPUnit\Event\Test\PhpDeprecationTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredPhpDeprecationSubscriber extends Subscriber implements PhpDeprecationTriggeredSubscriber -{ - public function notify(PhpDeprecationTriggered $event): void - { - $this->collector()->testTriggeredPhpDeprecation($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpNoticeSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpNoticeSubscriber.php deleted file mode 100644 index 2601c197..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpNoticeSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\Test\PhpNoticeTriggered; -use PHPUnit\Event\Test\PhpNoticeTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredPhpNoticeSubscriber extends Subscriber implements PhpNoticeTriggeredSubscriber -{ - public function notify(PhpNoticeTriggered $event): void - { - $this->collector()->testTriggeredPhpNotice($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpWarningSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpWarningSubscriber.php deleted file mode 100644 index 3af20b89..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpWarningSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\Test\PhpWarningTriggered; -use PHPUnit\Event\Test\PhpWarningTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredPhpWarningSubscriber extends Subscriber implements PhpWarningTriggeredSubscriber -{ - public function notify(PhpWarningTriggered $event): void - { - $this->collector()->testTriggeredPhpWarning($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php deleted file mode 100644 index 9fc4f268..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\Test\PhpunitDeprecationTriggered; -use PHPUnit\Event\Test\PhpunitDeprecationTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredPhpunitDeprecationSubscriber extends Subscriber implements PhpunitDeprecationTriggeredSubscriber -{ - public function notify(PhpunitDeprecationTriggered $event): void - { - $this->collector()->testTriggeredPhpunitDeprecation($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitErrorSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitErrorSubscriber.php deleted file mode 100644 index 43f32d95..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitErrorSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\Test\PhpunitErrorTriggered; -use PHPUnit\Event\Test\PhpunitErrorTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredPhpunitErrorSubscriber extends Subscriber implements PhpunitErrorTriggeredSubscriber -{ - public function notify(PhpunitErrorTriggered $event): void - { - $this->collector()->testTriggeredPhpunitError($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitWarningSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitWarningSubscriber.php deleted file mode 100644 index 3774b828..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitWarningSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\Test\PhpunitWarningTriggered; -use PHPUnit\Event\Test\PhpunitWarningTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredPhpunitWarningSubscriber extends Subscriber implements PhpunitWarningTriggeredSubscriber -{ - public function notify(PhpunitWarningTriggered $event): void - { - $this->collector()->testTriggeredPhpunitWarning($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredWarningSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredWarningSubscriber.php deleted file mode 100644 index fc8979dc..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredWarningSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\Test\WarningTriggered; -use PHPUnit\Event\Test\WarningTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredWarningSubscriber extends Subscriber implements WarningTriggeredSubscriber -{ - public function notify(WarningTriggered $event): void - { - $this->collector()->testTriggeredWarning($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResult.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResult.php deleted file mode 100644 index 74c6e9df..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResult.php +++ /dev/null @@ -1,58 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\Code\TestMethod; -use PHPUnit\Event\Code\Throwable; -use PHPUnit\Framework\TestStatus\TestStatus; - -/** - * @psalm-immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestResult -{ - private readonly TestMethod $test; - private readonly TestStatus $status; - private readonly ?Throwable $throwable; - - public function __construct(TestMethod $test, TestStatus $status, ?Throwable $throwable) - { - $this->test = $test; - $this->status = $status; - $this->throwable = $throwable; - } - - public function test(): TestMethod - { - return $this->test; - } - - public function status(): TestStatus - { - return $this->status; - } - - /** - * @psalm-assert-if-true !null $this->throwable - */ - public function hasThrowable(): bool - { - return $this->throwable !== null; - } - - public function throwable(): ?Throwable - { - return $this->throwable; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollection.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollection.php deleted file mode 100644 index 1ef1d83d..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollection.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use IteratorAggregate; - -/** - * @template-implements IteratorAggregate - * - * @psalm-immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestResultCollection implements IteratorAggregate -{ - /** - * @psalm-var list - */ - private readonly array $testResults; - - /** - * @psalm-param list $testResults - */ - public static function fromArray(array $testResults): self - { - return new self(...$testResults); - } - - private function __construct(TestResult ...$testResults) - { - $this->testResults = $testResults; - } - - /** - * @psalm-return list - */ - public function asArray(): array - { - return $this->testResults; - } - - public function getIterator(): TestResultCollectionIterator - { - return new TestResultCollectionIterator($this); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollectionIterator.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollectionIterator.php deleted file mode 100644 index b409fe11..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollectionIterator.php +++ /dev/null @@ -1,59 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use function count; -use Iterator; - -/** - * @template-implements Iterator - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestResultCollectionIterator implements Iterator -{ - /** - * @psalm-var list - */ - private readonly array $testResults; - private int $position = 0; - - public function __construct(TestResultCollection $testResults) - { - $this->testResults = $testResults->asArray(); - } - - public function rewind(): void - { - $this->position = 0; - } - - public function valid(): bool - { - return $this->position < count($this->testResults); - } - - public function key(): int - { - return $this->position; - } - - public function current(): TestResult - { - return $this->testResults[$this->position]; - } - - public function next(): void - { - $this->position++; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollector.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollector.php deleted file mode 100644 index df1de66b..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollector.php +++ /dev/null @@ -1,447 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use function array_keys; -use function array_merge; -use function assert; -use function is_subclass_of; -use function ksort; -use function uksort; -use function usort; -use PHPUnit\Event\Code\TestMethod; -use PHPUnit\Event\Code\Throwable; -use PHPUnit\Event\EventFacadeIsSealedException; -use PHPUnit\Event\Facade; -use PHPUnit\Event\InvalidArgumentException; -use PHPUnit\Event\Test\ConsideredRisky; -use PHPUnit\Event\Test\DeprecationTriggered; -use PHPUnit\Event\Test\Errored; -use PHPUnit\Event\Test\Failed; -use PHPUnit\Event\Test\Finished; -use PHPUnit\Event\Test\MarkedIncomplete; -use PHPUnit\Event\Test\NoticeTriggered; -use PHPUnit\Event\Test\Passed; -use PHPUnit\Event\Test\PhpDeprecationTriggered; -use PHPUnit\Event\Test\PhpNoticeTriggered; -use PHPUnit\Event\Test\PhpunitDeprecationTriggered; -use PHPUnit\Event\Test\PhpunitErrorTriggered; -use PHPUnit\Event\Test\PhpunitWarningTriggered; -use PHPUnit\Event\Test\PhpWarningTriggered; -use PHPUnit\Event\Test\Prepared; -use PHPUnit\Event\Test\Skipped; -use PHPUnit\Event\Test\WarningTriggered; -use PHPUnit\Event\UnknownSubscriberTypeException; -use PHPUnit\Framework\TestStatus\TestStatus; -use PHPUnit\Logging\TestDox\TestResult as TestDoxTestMethod; -use PHPUnit\TextUI\Configuration\Source; -use PHPUnit\TextUI\Configuration\SourceFilter; -use ReflectionMethod; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestResultCollector -{ - private readonly Source $source; - - /** - * @psalm-var array> - */ - private array $tests = []; - private ?TestStatus $status = null; - private ?Throwable $throwable = null; - private bool $prepared = false; - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - public function __construct(Facade $facade, Source $source) - { - $this->source = $source; - - $this->registerSubscribers($facade); - } - - /** - * @psalm-return array - */ - public function testMethodsGroupedByClass(): array - { - $result = []; - - foreach ($this->tests as $prettifiedClassName => $tests) { - $testsByDeclaringClass = []; - - foreach ($tests as $test) { - $declaringClassName = (new ReflectionMethod($test->test()->className(), $test->test()->methodName()))->getDeclaringClass()->getName(); - - if (!isset($testsByDeclaringClass[$declaringClassName])) { - $testsByDeclaringClass[$declaringClassName] = []; - } - - $testsByDeclaringClass[$declaringClassName][] = $test; - } - - foreach (array_keys($testsByDeclaringClass) as $declaringClassName) { - usort( - $testsByDeclaringClass[$declaringClassName], - static function (TestDoxTestMethod $a, TestDoxTestMethod $b): int - { - return $a->test()->line() <=> $b->test()->line(); - }, - ); - } - - uksort( - $testsByDeclaringClass, - /** - * @psalm-param class-string $a - * @psalm-param class-string $b - */ - static function (string $a, string $b): int - { - if (is_subclass_of($b, $a)) { - return -1; - } - - if (is_subclass_of($a, $b)) { - return 1; - } - - return 0; - }, - ); - - $tests = []; - - foreach ($testsByDeclaringClass as $_tests) { - $tests = array_merge($tests, $_tests); - } - - $result[$prettifiedClassName] = TestResultCollection::fromArray($tests); - } - - ksort($result); - - return $result; - } - - public function testPrepared(Prepared $event): void - { - if (!$event->test()->isTestMethod()) { - return; - } - - $this->status = TestStatus::unknown(); - $this->throwable = null; - $this->prepared = true; - } - - public function testErrored(Errored $event): void - { - if (!$event->test()->isTestMethod()) { - return; - } - - $this->status = TestStatus::error($event->throwable()->message()); - $this->throwable = $event->throwable(); - - if (!$this->prepared) { - $test = $event->test(); - - assert($test instanceof TestMethod); - - $this->process($test); - } - } - - public function testFailed(Failed $event): void - { - if (!$event->test()->isTestMethod()) { - return; - } - - $this->status = TestStatus::failure($event->throwable()->message()); - $this->throwable = $event->throwable(); - } - - public function testPassed(Passed $event): void - { - if (!$event->test()->isTestMethod()) { - return; - } - - $this->updateTestStatus(TestStatus::success()); - } - - public function testSkipped(Skipped $event): void - { - if (!$event->test()->isTestMethod()) { - return; - } - - $this->updateTestStatus(TestStatus::skipped($event->message())); - } - - public function testMarkedIncomplete(MarkedIncomplete $event): void - { - if (!$event->test()->isTestMethod()) { - return; - } - - $this->updateTestStatus(TestStatus::incomplete($event->throwable()->message())); - - $this->throwable = $event->throwable(); - } - - public function testConsideredRisky(ConsideredRisky $event): void - { - if (!$event->test()->isTestMethod()) { - return; - } - - $this->updateTestStatus(TestStatus::risky()); - } - - public function testTriggeredDeprecation(DeprecationTriggered $event): void - { - if (!$event->test()->isTestMethod()) { - return; - } - - if ($event->ignoredByTest()) { - return; - } - - if ($event->ignoredByBaseline()) { - return; - } - - if (!$this->source->ignoreSuppressionOfDeprecations() && $event->wasSuppressed()) { - return; - } - - if ($this->source->restrictDeprecations() && !(new SourceFilter)->includes($this->source, $event->file())) { - return; - } - - $this->updateTestStatus(TestStatus::deprecation()); - } - - public function testTriggeredNotice(NoticeTriggered $event): void - { - if (!$event->test()->isTestMethod()) { - return; - } - - if ($event->ignoredByBaseline()) { - return; - } - - if (!$this->source->ignoreSuppressionOfNotices() && $event->wasSuppressed()) { - return; - } - - if ($this->source->restrictNotices() && !(new SourceFilter)->includes($this->source, $event->file())) { - return; - } - - $this->updateTestStatus(TestStatus::notice()); - } - - public function testTriggeredWarning(WarningTriggered $event): void - { - if (!$event->test()->isTestMethod()) { - return; - } - - if ($event->ignoredByBaseline()) { - return; - } - - if (!$this->source->ignoreSuppressionOfWarnings() && $event->wasSuppressed()) { - return; - } - - if ($this->source->restrictWarnings() && !(new SourceFilter)->includes($this->source, $event->file())) { - return; - } - - $this->updateTestStatus(TestStatus::warning()); - } - - public function testTriggeredPhpDeprecation(PhpDeprecationTriggered $event): void - { - if (!$event->test()->isTestMethod()) { - return; - } - - if ($event->ignoredByTest()) { - return; - } - - if ($event->ignoredByBaseline()) { - return; - } - - if (!$this->source->ignoreSuppressionOfPhpDeprecations() && $event->wasSuppressed()) { - return; - } - - if ($this->source->restrictDeprecations() && !(new SourceFilter)->includes($this->source, $event->file())) { - return; - } - - $this->updateTestStatus(TestStatus::deprecation()); - } - - public function testTriggeredPhpNotice(PhpNoticeTriggered $event): void - { - if (!$event->test()->isTestMethod()) { - return; - } - - if ($event->ignoredByBaseline()) { - return; - } - - if (!$this->source->ignoreSuppressionOfPhpNotices() && $event->wasSuppressed()) { - return; - } - - if ($this->source->restrictNotices() && !(new SourceFilter)->includes($this->source, $event->file())) { - return; - } - - $this->updateTestStatus(TestStatus::notice()); - } - - public function testTriggeredPhpWarning(PhpWarningTriggered $event): void - { - if (!$event->test()->isTestMethod()) { - return; - } - - if ($event->ignoredByBaseline()) { - return; - } - - if (!$this->source->ignoreSuppressionOfPhpWarnings() && $event->wasSuppressed()) { - return; - } - - if ($this->source->restrictWarnings() && !(new SourceFilter)->includes($this->source, $event->file())) { - return; - } - - $this->updateTestStatus(TestStatus::warning()); - } - - public function testTriggeredPhpunitDeprecation(PhpunitDeprecationTriggered $event): void - { - if (!$event->test()->isTestMethod()) { - return; - } - - $this->updateTestStatus(TestStatus::deprecation()); - } - - public function testTriggeredPhpunitError(PhpunitErrorTriggered $event): void - { - if (!$event->test()->isTestMethod()) { - return; - } - - $this->updateTestStatus(TestStatus::error()); - } - - public function testTriggeredPhpunitWarning(PhpunitWarningTriggered $event): void - { - if (!$event->test()->isTestMethod()) { - return; - } - - $this->updateTestStatus(TestStatus::warning()); - } - - /** - * @throws InvalidArgumentException - */ - public function testFinished(Finished $event): void - { - if (!$event->test()->isTestMethod()) { - return; - } - - $test = $event->test(); - - assert($test instanceof TestMethod); - - $this->process($test); - - $this->status = null; - $this->throwable = null; - $this->prepared = false; - } - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - private function registerSubscribers(Facade $facade): void - { - $facade->registerSubscribers( - new TestConsideredRiskySubscriber($this), - new TestErroredSubscriber($this), - new TestFailedSubscriber($this), - new TestFinishedSubscriber($this), - new TestMarkedIncompleteSubscriber($this), - new TestPassedSubscriber($this), - new TestPreparedSubscriber($this), - new TestSkippedSubscriber($this), - new TestTriggeredDeprecationSubscriber($this), - new TestTriggeredNoticeSubscriber($this), - new TestTriggeredPhpDeprecationSubscriber($this), - new TestTriggeredPhpNoticeSubscriber($this), - new TestTriggeredPhpunitDeprecationSubscriber($this), - new TestTriggeredPhpunitErrorSubscriber($this), - new TestTriggeredPhpunitWarningSubscriber($this), - new TestTriggeredPhpWarningSubscriber($this), - new TestTriggeredWarningSubscriber($this), - ); - } - - private function updateTestStatus(TestStatus $status): void - { - if ($this->status !== null && - $this->status->isMoreImportantThan($status)) { - return; - } - - $this->status = $status; - } - - private function process(TestMethod $test): void - { - if (!isset($this->tests[$test->testDox()->prettifiedClassName()])) { - $this->tests[$test->testDox()->prettifiedClassName()] = []; - } - - $this->tests[$test->testDox()->prettifiedClassName()][] = new TestDoxTestMethod( - $test, - $this->status, - $this->throwable, - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Api/CodeCoverage.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Api/CodeCoverage.php deleted file mode 100644 index fe5fab56..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Api/CodeCoverage.php +++ /dev/null @@ -1,317 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata\Api; - -use function array_unique; -use function array_values; -use function assert; -use function count; -use function interface_exists; -use function sprintf; -use function str_starts_with; -use PHPUnit\Framework\CodeCoverageException; -use PHPUnit\Framework\InvalidCoversTargetException; -use PHPUnit\Framework\TestSuite; -use PHPUnit\Metadata\Covers; -use PHPUnit\Metadata\CoversClass; -use PHPUnit\Metadata\CoversDefaultClass; -use PHPUnit\Metadata\CoversFunction; -use PHPUnit\Metadata\IgnoreClassForCodeCoverage; -use PHPUnit\Metadata\IgnoreFunctionForCodeCoverage; -use PHPUnit\Metadata\IgnoreMethodForCodeCoverage; -use PHPUnit\Metadata\Parser\Registry; -use PHPUnit\Metadata\Uses; -use PHPUnit\Metadata\UsesClass; -use PHPUnit\Metadata\UsesDefaultClass; -use PHPUnit\Metadata\UsesFunction; -use RecursiveIteratorIterator; -use SebastianBergmann\CodeUnit\CodeUnitCollection; -use SebastianBergmann\CodeUnit\Exception as CodeUnitException; -use SebastianBergmann\CodeUnit\InvalidCodeUnitException; -use SebastianBergmann\CodeUnit\Mapper; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class CodeCoverage -{ - /** - * @psalm-param class-string $className - * @psalm-param non-empty-string $methodName - * - * @psalm-return array>|false - * - * @throws CodeCoverageException - */ - public function linesToBeCovered(string $className, string $methodName): array|false - { - if (!$this->shouldCodeCoverageBeCollectedFor($className, $methodName)) { - return false; - } - - $metadataForClass = Registry::parser()->forClass($className); - $classShortcut = null; - - if ($metadataForClass->isCoversDefaultClass()->isNotEmpty()) { - if (count($metadataForClass->isCoversDefaultClass()) > 1) { - throw new CodeCoverageException( - sprintf( - 'More than one @coversDefaultClass annotation for class or interface "%s"', - $className, - ), - ); - } - - $metadata = $metadataForClass->isCoversDefaultClass()->asArray()[0]; - - assert($metadata instanceof CoversDefaultClass); - - $classShortcut = $metadata->className(); - } - - $codeUnits = CodeUnitCollection::fromList(); - $mapper = new Mapper; - - foreach (Registry::parser()->forClassAndMethod($className, $methodName) as $metadata) { - if (!$metadata->isCoversClass() && !$metadata->isCoversFunction() && !$metadata->isCovers()) { - continue; - } - - assert($metadata instanceof CoversClass || $metadata instanceof CoversFunction || $metadata instanceof Covers); - - if ($metadata->isCoversClass() || $metadata->isCoversFunction()) { - $codeUnits = $codeUnits->mergeWith($this->mapToCodeUnits($metadata)); - } elseif ($metadata->isCovers()) { - assert($metadata instanceof Covers); - - $target = $metadata->target(); - - if (interface_exists($target)) { - throw new InvalidCoversTargetException( - sprintf( - 'Trying to @cover interface "%s".', - $target, - ), - ); - } - - if ($classShortcut !== null && str_starts_with($target, '::')) { - $target = $classShortcut . $target; - } - - try { - $codeUnits = $codeUnits->mergeWith($mapper->stringToCodeUnits($target)); - } catch (InvalidCodeUnitException $e) { - throw new InvalidCoversTargetException( - sprintf( - '"@covers %s" is invalid', - $target, - ), - $e->getCode(), - $e, - ); - } - } - } - - return $mapper->codeUnitsToSourceLines($codeUnits); - } - - /** - * @psalm-param class-string $className - * @psalm-param non-empty-string $methodName - * - * @psalm-return array> - * - * @throws CodeCoverageException - */ - public function linesToBeUsed(string $className, string $methodName): array - { - $metadataForClass = Registry::parser()->forClass($className); - $classShortcut = null; - - if ($metadataForClass->isUsesDefaultClass()->isNotEmpty()) { - if (count($metadataForClass->isUsesDefaultClass()) > 1) { - throw new CodeCoverageException( - sprintf( - 'More than one @usesDefaultClass annotation for class or interface "%s"', - $className, - ), - ); - } - - $metadata = $metadataForClass->isUsesDefaultClass()->asArray()[0]; - - assert($metadata instanceof UsesDefaultClass); - - $classShortcut = $metadata->className(); - } - - $codeUnits = CodeUnitCollection::fromList(); - $mapper = new Mapper; - - foreach (Registry::parser()->forClassAndMethod($className, $methodName) as $metadata) { - if (!$metadata->isUsesClass() && !$metadata->isUsesFunction() && !$metadata->isUses()) { - continue; - } - - assert($metadata instanceof UsesClass || $metadata instanceof UsesFunction || $metadata instanceof Uses); - - if ($metadata->isUsesClass() || $metadata->isUsesFunction()) { - $codeUnits = $codeUnits->mergeWith($this->mapToCodeUnits($metadata)); - } elseif ($metadata->isUses()) { - assert($metadata instanceof Uses); - - $target = $metadata->target(); - - if ($classShortcut !== null && str_starts_with($target, '::')) { - $target = $classShortcut . $target; - } - - try { - $codeUnits = $codeUnits->mergeWith($mapper->stringToCodeUnits($target)); - } catch (InvalidCodeUnitException $e) { - throw new InvalidCoversTargetException( - sprintf( - '"@uses %s" is invalid', - $target, - ), - $e->getCode(), - $e, - ); - } - } - } - - return $mapper->codeUnitsToSourceLines($codeUnits); - } - - /** - * @psalm-return array> - */ - public function linesToBeIgnored(TestSuite $testSuite): array - { - $codeUnits = CodeUnitCollection::fromList(); - $mapper = new Mapper; - - foreach ($this->testCaseClassesIn($testSuite) as $testCaseClassName) { - $codeUnits = $codeUnits->mergeWith( - $this->codeUnitsIgnoredBy($testCaseClassName), - ); - } - - return $mapper->codeUnitsToSourceLines($codeUnits); - } - - /** - * @psalm-param class-string $className - * @psalm-param non-empty-string $methodName - */ - public function shouldCodeCoverageBeCollectedFor(string $className, string $methodName): bool - { - $metadataForClass = Registry::parser()->forClass($className); - $metadataForMethod = Registry::parser()->forMethod($className, $methodName); - - if ($metadataForMethod->isCoversNothing()->isNotEmpty()) { - return false; - } - - if ($metadataForMethod->isCovers()->isNotEmpty() || - $metadataForMethod->isCoversClass()->isNotEmpty() || - $metadataForMethod->isCoversFunction()->isNotEmpty()) { - return true; - } - - if ($metadataForClass->isCoversNothing()->isNotEmpty()) { - return false; - } - - return true; - } - - /** - * @psalm-return list - */ - private function testCaseClassesIn(TestSuite $testSuite): array - { - $classNames = []; - - foreach (new RecursiveIteratorIterator($testSuite) as $test) { - $classNames[] = $test::class; - } - - return array_values(array_unique($classNames)); - } - - /** - * @psalm-param class-string $className - */ - private function codeUnitsIgnoredBy(string $className): CodeUnitCollection - { - $codeUnits = CodeUnitCollection::fromList(); - $mapper = new Mapper; - - foreach (Registry::parser()->forClass($className) as $metadata) { - if ($metadata instanceof IgnoreClassForCodeCoverage) { - $codeUnits = $codeUnits->mergeWith( - $mapper->stringToCodeUnits($metadata->className()), - ); - } - - if ($metadata instanceof IgnoreMethodForCodeCoverage) { - $codeUnits = $codeUnits->mergeWith( - $mapper->stringToCodeUnits($metadata->className() . '::' . $metadata->methodName()), - ); - } - - if ($metadata instanceof IgnoreFunctionForCodeCoverage) { - $codeUnits = $codeUnits->mergeWith( - $mapper->stringToCodeUnits('::' . $metadata->functionName()), - ); - } - } - - return $codeUnits; - } - - /** - * @throws InvalidCoversTargetException - */ - private function mapToCodeUnits(CoversClass|CoversFunction|UsesClass|UsesFunction $metadata): CodeUnitCollection - { - $mapper = new Mapper; - - try { - return $mapper->stringToCodeUnits($metadata->asStringForCodeUnitMapper()); - } catch (CodeUnitException $e) { - if ($metadata->isCoversClass() || $metadata->isUsesClass()) { - if (interface_exists($metadata->className())) { - $type = 'Interface'; - } else { - $type = 'Class'; - } - } else { - $type = 'Function'; - } - - throw new InvalidCoversTargetException( - sprintf( - '%s "%s" is not a valid target for code coverage', - $type, - $metadata->asStringForCodeUnitMapper(), - ), - $e->getCode(), - $e, - ); - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Api/DataProvider.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Api/DataProvider.php deleted file mode 100644 index 6f5921cd..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Api/DataProvider.php +++ /dev/null @@ -1,313 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata\Api; - -use const JSON_ERROR_NONE; -use const PREG_OFFSET_CAPTURE; -use function array_key_exists; -use function assert; -use function explode; -use function get_debug_type; -use function is_array; -use function is_int; -use function is_string; -use function json_decode; -use function json_last_error; -use function json_last_error_msg; -use function preg_match; -use function preg_replace; -use function rtrim; -use function sprintf; -use function str_replace; -use function strlen; -use function substr; -use function trim; -use PHPUnit\Event; -use PHPUnit\Event\Code\TestMethod; -use PHPUnit\Event\TestData\MoreThanOneDataSetFromDataProviderException; -use PHPUnit\Event\TestData\TestDataCollection; -use PHPUnit\Framework\InvalidDataProviderException; -use PHPUnit\Metadata\DataProvider as DataProviderMetadata; -use PHPUnit\Metadata\MetadataCollection; -use PHPUnit\Metadata\Parser\Registry as MetadataRegistry; -use PHPUnit\Metadata\TestWith; -use PHPUnit\Util\Reflection; -use ReflectionClass; -use ReflectionMethod; -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class DataProvider -{ - /** - * @psalm-param class-string $className - * @psalm-param non-empty-string $methodName - * - * @throws InvalidDataProviderException - */ - public function providedData(string $className, string $methodName): ?array - { - $dataProvider = MetadataRegistry::parser()->forMethod($className, $methodName)->isDataProvider(); - $testWith = MetadataRegistry::parser()->forMethod($className, $methodName)->isTestWith(); - - if ($dataProvider->isEmpty() && $testWith->isEmpty()) { - return $this->dataProvidedByTestWithAnnotation($className, $methodName); - } - - if ($dataProvider->isNotEmpty()) { - $data = $this->dataProvidedByMethods($className, $methodName, $dataProvider); - } else { - $data = $this->dataProvidedByMetadata($testWith); - } - - if ($data === []) { - throw new InvalidDataProviderException( - 'Empty data set provided by data provider', - ); - } - - foreach ($data as $key => $value) { - if (!is_array($value)) { - throw new InvalidDataProviderException( - sprintf( - 'Data set %s is invalid', - is_int($key) ? '#' . $key : '"' . $key . '"', - ), - ); - } - } - - return $data; - } - - /** - * @psalm-param class-string $className - * @psalm-param non-empty-string $methodName - * - * @throws InvalidDataProviderException - */ - private function dataProvidedByMethods(string $className, string $methodName, MetadataCollection $dataProvider): array - { - $testMethod = new Event\Code\ClassMethod($className, $methodName); - $methodsCalled = []; - $result = []; - - foreach ($dataProvider as $_dataProvider) { - assert($_dataProvider instanceof DataProviderMetadata); - - $dataProviderMethod = new Event\Code\ClassMethod($_dataProvider->className(), $_dataProvider->methodName()); - - Event\Facade::emitter()->dataProviderMethodCalled( - $testMethod, - $dataProviderMethod, - ); - - $methodsCalled[] = $dataProviderMethod; - - try { - $class = new ReflectionClass($_dataProvider->className()); - $method = $class->getMethod($_dataProvider->methodName()); - $object = null; - - if (!$method->isPublic()) { - Event\Facade::emitter()->testTriggeredPhpunitDeprecation( - $this->valueObjectForTestMethodWithoutTestData( - $className, - $methodName, - ), - sprintf( - 'Data Provider method %s::%s() is not public', - $_dataProvider->className(), - $_dataProvider->methodName(), - ), - ); - } - - if (!$method->isStatic()) { - Event\Facade::emitter()->testTriggeredPhpunitDeprecation( - $this->valueObjectForTestMethodWithoutTestData( - $className, - $methodName, - ), - sprintf( - 'Data Provider method %s::%s() is not static', - $_dataProvider->className(), - $_dataProvider->methodName(), - ), - ); - - $object = $class->newInstanceWithoutConstructor(); - } - - if ($method->getNumberOfParameters() === 0) { - $data = $method->invoke($object); - } else { - Event\Facade::emitter()->testTriggeredPhpunitDeprecation( - $this->valueObjectForTestMethodWithoutTestData( - $className, - $methodName, - ), - sprintf( - 'Data Provider method %s::%s() expects an argument', - $_dataProvider->className(), - $_dataProvider->methodName(), - ), - ); - - $data = $method->invoke($object, $_dataProvider->methodName()); - } - } catch (Throwable $e) { - Event\Facade::emitter()->dataProviderMethodFinished( - $testMethod, - ...$methodsCalled, - ); - - throw new InvalidDataProviderException( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - - foreach ($data as $key => $value) { - if (is_int($key)) { - $result[] = $value; - } elseif (is_string($key)) { - if (array_key_exists($key, $result)) { - Event\Facade::emitter()->dataProviderMethodFinished( - $testMethod, - ...$methodsCalled, - ); - - throw new InvalidDataProviderException( - sprintf( - 'The key "%s" has already been defined by a previous data provider', - $key, - ), - ); - } - - $result[$key] = $value; - } else { - throw new InvalidDataProviderException( - sprintf( - 'The key must be an integer or a string, %s given', - get_debug_type($key), - ), - ); - } - } - } - - Event\Facade::emitter()->dataProviderMethodFinished( - $testMethod, - ...$methodsCalled, - ); - - return $result; - } - - private function dataProvidedByMetadata(MetadataCollection $testWith): array - { - $result = []; - - foreach ($testWith as $_testWith) { - assert($_testWith instanceof TestWith); - - $result[] = $_testWith->data(); - } - - return $result; - } - - /** - * @psalm-param class-string $className - * - * @throws InvalidDataProviderException - */ - private function dataProvidedByTestWithAnnotation(string $className, string $methodName): ?array - { - $docComment = (new ReflectionMethod($className, $methodName))->getDocComment(); - - if ($docComment === false) { - return null; - } - - $docComment = str_replace("\r\n", "\n", $docComment); - $docComment = preg_replace('/\n\s*\*\s?/', "\n", $docComment); - $docComment = substr($docComment, 0, -1); - $docComment = rtrim($docComment, "\n"); - - if (!preg_match('/@testWith\s+/', $docComment, $matches, PREG_OFFSET_CAPTURE)) { - return null; - } - - $offset = strlen($matches[0][0]) + (int) $matches[0][1]; - $annotationContent = substr($docComment, $offset); - $data = []; - - foreach (explode("\n", $annotationContent) as $candidateRow) { - $candidateRow = trim($candidateRow); - - if ($candidateRow === '' || $candidateRow[0] !== '[') { - break; - } - - $dataSet = json_decode($candidateRow, true); - - if (json_last_error() !== JSON_ERROR_NONE) { - throw new InvalidDataProviderException( - 'The data set for the @testWith annotation cannot be parsed: ' . json_last_error_msg(), - ); - } - - $data[] = $dataSet; - } - - if (!$data) { - throw new InvalidDataProviderException( - 'The data set for the @testWith annotation cannot be parsed.', - ); - } - - return $data; - } - - /** - * @psalm-param class-string $className - * @psalm-param non-empty-string $methodName - * - * @throws MoreThanOneDataSetFromDataProviderException - */ - private function valueObjectForTestMethodWithoutTestData(string $className, string $methodName): TestMethod - { - $location = Reflection::sourceLocationFor($className, $methodName); - - return new TestMethod( - $className, - $methodName, - $location['file'], - $location['line'], - Event\Code\TestDoxBuilder::fromClassNameAndMethodName( - $className, - $methodName, - ), - MetadataRegistry::parser()->forClassAndMethod( - $className, - $methodName, - ), - TestDataCollection::fromArray([]), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Api/Dependencies.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Api/Dependencies.php deleted file mode 100644 index 1b20df98..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Api/Dependencies.php +++ /dev/null @@ -1,57 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata\Api; - -use function assert; -use PHPUnit\Framework\ExecutionOrderDependency; -use PHPUnit\Metadata\DependsOnClass; -use PHPUnit\Metadata\DependsOnMethod; -use PHPUnit\Metadata\Parser\Registry; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Dependencies -{ - /** - * @psalm-param class-string $className - * @psalm-param non-empty-string $methodName - * - * @psalm-return list - */ - public static function dependencies(string $className, string $methodName): array - { - $dependencies = []; - - foreach (Registry::parser()->forClassAndMethod($className, $methodName)->isDepends() as $metadata) { - if ($metadata->isDependsOnClass()) { - assert($metadata instanceof DependsOnClass); - - $dependencies[] = ExecutionOrderDependency::forClass($metadata); - - continue; - } - - assert($metadata instanceof DependsOnMethod); - - if (empty($metadata->methodName())) { - $dependencies[] = ExecutionOrderDependency::invalid(); - - continue; - } - - $dependencies[] = ExecutionOrderDependency::forMethod($metadata); - } - - return $dependencies; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Api/Groups.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Api/Groups.php deleted file mode 100644 index dca8ef64..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Api/Groups.php +++ /dev/null @@ -1,132 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata\Api; - -use function array_flip; -use function array_key_exists; -use function array_unique; -use function assert; -use function strtolower; -use function trim; -use PHPUnit\Framework\TestSize\TestSize; -use PHPUnit\Metadata\Covers; -use PHPUnit\Metadata\CoversClass; -use PHPUnit\Metadata\CoversFunction; -use PHPUnit\Metadata\Group; -use PHPUnit\Metadata\Parser\Registry; -use PHPUnit\Metadata\Uses; -use PHPUnit\Metadata\UsesClass; -use PHPUnit\Metadata\UsesFunction; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Groups -{ - /** - * @var array> - */ - private static array $groupCache = []; - - /** - * @psalm-param class-string $className - * @psalm-param non-empty-string $methodName - * - * @psalm-return array - */ - public function groups(string $className, string $methodName, bool $includeVirtual = true): array - { - $key = $className . '::' . $methodName . '::' . $includeVirtual; - - if (array_key_exists($key, self::$groupCache)) { - return self::$groupCache[$key]; - } - - $groups = []; - - foreach (Registry::parser()->forClassAndMethod($className, $methodName)->isGroup() as $group) { - assert($group instanceof Group); - - $groups[] = $group->groupName(); - } - - if ($groups === []) { - $groups[] = 'default'; - } - - if (!$includeVirtual) { - return self::$groupCache[$key] = array_unique($groups); - } - - foreach (Registry::parser()->forClassAndMethod($className, $methodName) as $metadata) { - if ($metadata->isCoversClass() || $metadata->isCoversFunction()) { - assert($metadata instanceof CoversClass || $metadata instanceof CoversFunction); - - $groups[] = '__phpunit_covers_' . $this->canonicalizeName($metadata->asStringForCodeUnitMapper()); - - continue; - } - - if ($metadata->isCovers()) { - assert($metadata instanceof Covers); - - $groups[] = '__phpunit_covers_' . $this->canonicalizeName($metadata->target()); - - continue; - } - - if ($metadata->isUsesClass() || $metadata->isUsesFunction()) { - assert($metadata instanceof UsesClass || $metadata instanceof UsesFunction); - - $groups[] = '__phpunit_uses_' . $this->canonicalizeName($metadata->asStringForCodeUnitMapper()); - - continue; - } - - if ($metadata->isUses()) { - assert($metadata instanceof Uses); - - $groups[] = '__phpunit_uses_' . $this->canonicalizeName($metadata->target()); - } - } - - return self::$groupCache[$key] = array_unique($groups); - } - - /** - * @psalm-param class-string $className - * @psalm-param non-empty-string $methodName - */ - public function size(string $className, string $methodName): TestSize - { - $groups = array_flip($this->groups($className, $methodName)); - - if (isset($groups['large'])) { - return TestSize::large(); - } - - if (isset($groups['medium'])) { - return TestSize::medium(); - } - - if (isset($groups['small'])) { - return TestSize::small(); - } - - return TestSize::unknown(); - } - - private function canonicalizeName(string $name): string - { - return strtolower(trim($name, '\\')); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Api/HookMethods.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Api/HookMethods.php deleted file mode 100644 index 89b8c2c7..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Api/HookMethods.php +++ /dev/null @@ -1,108 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata\Api; - -use function array_unshift; -use function assert; -use function class_exists; -use PHPUnit\Metadata\Parser\Registry; -use PHPUnit\Util\Reflection; -use ReflectionClass; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class HookMethods -{ - /** - * @psalm-var array, before: list, preCondition: list, postCondition: list, after: list, afterClass: list}> - */ - private static array $hookMethods = []; - - /** - * @psalm-param class-string $className - * - * @psalm-return array{beforeClass: list, before: list, preCondition: list, postCondition: list, after: list, afterClass: list} - */ - public function hookMethods(string $className): array - { - if (!class_exists($className)) { - return self::emptyHookMethodsArray(); - } - - if (isset(self::$hookMethods[$className])) { - return self::$hookMethods[$className]; - } - - self::$hookMethods[$className] = self::emptyHookMethodsArray(); - - foreach (Reflection::methodsInTestClass(new ReflectionClass($className)) as $method) { - $methodName = $method->getName(); - - assert(!empty($methodName)); - - $metadata = Registry::parser()->forMethod($className, $methodName); - - if ($method->isStatic()) { - if ($metadata->isBeforeClass()->isNotEmpty()) { - array_unshift( - self::$hookMethods[$className]['beforeClass'], - $methodName, - ); - } - - if ($metadata->isAfterClass()->isNotEmpty()) { - self::$hookMethods[$className]['afterClass'][] = $methodName; - } - } - - if ($metadata->isBefore()->isNotEmpty()) { - array_unshift( - self::$hookMethods[$className]['before'], - $methodName, - ); - } - - if ($metadata->isPreCondition()->isNotEmpty()) { - array_unshift( - self::$hookMethods[$className]['preCondition'], - $methodName, - ); - } - - if ($metadata->isPostCondition()->isNotEmpty()) { - self::$hookMethods[$className]['postCondition'][] = $methodName; - } - - if ($metadata->isAfter()->isNotEmpty()) { - self::$hookMethods[$className]['after'][] = $methodName; - } - } - - return self::$hookMethods[$className]; - } - - /** - * @psalm-return array{beforeClass: list, before: list, preCondition: list, postCondition: list, after: list, afterClass: list} - */ - private function emptyHookMethodsArray(): array - { - return [ - 'beforeClass' => ['setUpBeforeClass'], - 'before' => ['setUp'], - 'preCondition' => ['assertPreConditions'], - 'postCondition' => ['assertPostConditions'], - 'after' => ['tearDown'], - 'afterClass' => ['tearDownAfterClass'], - ]; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Api/Requirements.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Api/Requirements.php deleted file mode 100644 index 922421f4..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Api/Requirements.php +++ /dev/null @@ -1,154 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata\Api; - -use const PHP_OS; -use const PHP_OS_FAMILY; -use const PHP_VERSION; -use function addcslashes; -use function assert; -use function extension_loaded; -use function function_exists; -use function ini_get; -use function method_exists; -use function phpversion; -use function preg_match; -use function sprintf; -use PHPUnit\Metadata\Parser\Registry; -use PHPUnit\Metadata\RequiresFunction; -use PHPUnit\Metadata\RequiresMethod; -use PHPUnit\Metadata\RequiresOperatingSystem; -use PHPUnit\Metadata\RequiresOperatingSystemFamily; -use PHPUnit\Metadata\RequiresPhp; -use PHPUnit\Metadata\RequiresPhpExtension; -use PHPUnit\Metadata\RequiresPhpunit; -use PHPUnit\Metadata\RequiresSetting; -use PHPUnit\Runner\Version; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Requirements -{ - /** - * @psalm-param class-string $className - * @psalm-param non-empty-string $methodName - * - * @psalm-return list - */ - public function requirementsNotSatisfiedFor(string $className, string $methodName): array - { - $notSatisfied = []; - - foreach (Registry::parser()->forClassAndMethod($className, $methodName) as $metadata) { - if ($metadata->isRequiresPhp()) { - assert($metadata instanceof RequiresPhp); - - if (!$metadata->versionRequirement()->isSatisfiedBy(PHP_VERSION)) { - $notSatisfied[] = sprintf( - 'PHP %s is required.', - $metadata->versionRequirement()->asString(), - ); - } - } - - if ($metadata->isRequiresPhpExtension()) { - assert($metadata instanceof RequiresPhpExtension); - - if (!extension_loaded($metadata->extension()) || - ($metadata->hasVersionRequirement() && - !$metadata->versionRequirement()->isSatisfiedBy(phpversion($metadata->extension())))) { - $notSatisfied[] = sprintf( - 'PHP extension %s%s is required.', - $metadata->extension(), - $metadata->hasVersionRequirement() ? (' ' . $metadata->versionRequirement()->asString()) : '', - ); - } - } - - if ($metadata->isRequiresPhpunit()) { - assert($metadata instanceof RequiresPhpunit); - - if (!$metadata->versionRequirement()->isSatisfiedBy(Version::id())) { - $notSatisfied[] = sprintf( - 'PHPUnit %s is required.', - $metadata->versionRequirement()->asString(), - ); - } - } - - if ($metadata->isRequiresOperatingSystemFamily()) { - assert($metadata instanceof RequiresOperatingSystemFamily); - - if ($metadata->operatingSystemFamily() !== PHP_OS_FAMILY) { - $notSatisfied[] = sprintf( - 'Operating system %s is required.', - $metadata->operatingSystemFamily(), - ); - } - } - - if ($metadata->isRequiresOperatingSystem()) { - assert($metadata instanceof RequiresOperatingSystem); - - $pattern = sprintf( - '/%s/i', - addcslashes($metadata->operatingSystem(), '/'), - ); - - if (!preg_match($pattern, PHP_OS)) { - $notSatisfied[] = sprintf( - 'Operating system %s is required.', - $metadata->operatingSystem(), - ); - } - } - - if ($metadata->isRequiresFunction()) { - assert($metadata instanceof RequiresFunction); - - if (!function_exists($metadata->functionName())) { - $notSatisfied[] = sprintf( - 'Function %s() is required.', - $metadata->functionName(), - ); - } - } - - if ($metadata->isRequiresMethod()) { - assert($metadata instanceof RequiresMethod); - - if (!method_exists($metadata->className(), $metadata->methodName())) { - $notSatisfied[] = sprintf( - 'Method %s::%s() is required.', - $metadata->className(), - $metadata->methodName(), - ); - } - } - - if ($metadata->isRequiresSetting()) { - assert($metadata instanceof RequiresSetting); - - if (ini_get($metadata->setting()) !== $metadata->value()) { - $notSatisfied[] = sprintf( - 'Setting "%s" is required to be "%s".', - $metadata->setting(), - $metadata->value(), - ); - } - } - } - - return $notSatisfied; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Exception/AnnotationsAreNotSupportedForInternalClassesException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Exception/AnnotationsAreNotSupportedForInternalClassesException.php deleted file mode 100644 index ddff62e0..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Exception/AnnotationsAreNotSupportedForInternalClassesException.php +++ /dev/null @@ -1,35 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -use function sprintf; -use PHPUnit\Exception; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class AnnotationsAreNotSupportedForInternalClassesException extends RuntimeException implements Exception -{ - /** - * @psalm-param class-string $className - */ - public function __construct(string $className) - { - parent::__construct( - sprintf( - 'Annotations can only be parsed for user-defined classes, trying to parse annotations for class "%s"', - $className, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Exception/ReflectionException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Exception/ReflectionException.php deleted file mode 100644 index 04e0d229..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Exception/ReflectionException.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -use PHPUnit\Exception; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ReflectionException extends RuntimeException implements Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Parser/Annotation/DocBlock.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Parser/Annotation/DocBlock.php deleted file mode 100644 index c2afdb26..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Parser/Annotation/DocBlock.php +++ /dev/null @@ -1,267 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata\Annotation\Parser; - -use function array_filter; -use function array_map; -use function array_merge; -use function array_values; -use function count; -use function preg_match; -use function preg_match_all; -use function preg_replace; -use function preg_split; -use function realpath; -use function substr; -use function trim; -use PharIo\Version\Exception as PharIoVersionException; -use PharIo\Version\VersionConstraintParser; -use PHPUnit\Metadata\AnnotationsAreNotSupportedForInternalClassesException; -use PHPUnit\Metadata\InvalidVersionRequirementException; -use ReflectionClass; -use ReflectionFunctionAbstract; -use ReflectionMethod; - -/** - * This is an abstraction around a PHPUnit-specific docBlock, - * allowing us to ask meaningful questions about a specific - * reflection symbol. - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class DocBlock -{ - private const REGEX_REQUIRES_VERSION = '/@requires\s+(?PPHP(?:Unit)?)\s+(?P[<>=!]{0,2})\s*(?P[\d\.-]+(dev|(RC|alpha|beta)[\d\.])?)[ \t]*\r?$/m'; - private const REGEX_REQUIRES_VERSION_CONSTRAINT = '/@requires\s+(?PPHP(?:Unit)?)\s+(?P[\d\t \-.|~^]+)[ \t]*\r?$/m'; - private const REGEX_REQUIRES_OS = '/@requires\s+(?POS(?:FAMILY)?)\s+(?P.+?)[ \t]*\r?$/m'; - private const REGEX_REQUIRES_SETTING = '/@requires\s+(?Psetting)\s+(?P([^ ]+?))\s*(?P[\w\.-]+[\w\.]?)?[ \t]*\r?$/m'; - private const REGEX_REQUIRES = '/@requires\s+(?Pfunction|extension)\s+(?P([^\s<>=!]+))\s*(?P[<>=!]{0,2})\s*(?P[\d\.-]+[\d\.]?)?[ \t]*\r?$/m'; - private readonly string $docComment; - - /** - * @psalm-var array> pre-parsed annotations indexed by name and occurrence index - */ - private readonly array $symbolAnnotations; - - /** - * @psalm-var null|(array{ - * __OFFSET: array&array{__FILE: string}, - * setting?: array, - * extension_versions?: array - * }&array< - * string, - * string|array{version: string, operator: string}|array{constraint: string}|array - * >) - */ - private ?array $parsedRequirements = null; - private readonly int $startLine; - private readonly string $fileName; - - /** - * @throws AnnotationsAreNotSupportedForInternalClassesException - */ - public static function ofClass(ReflectionClass $class): self - { - if ($class->isInternal()) { - throw new AnnotationsAreNotSupportedForInternalClassesException($class->getName()); - } - - return new self( - (string) $class->getDocComment(), - self::extractAnnotationsFromReflector($class), - $class->getStartLine(), - $class->getFileName(), - ); - } - - /** - * @throws AnnotationsAreNotSupportedForInternalClassesException - */ - public static function ofMethod(ReflectionMethod $method): self - { - if ($method->getDeclaringClass()->isInternal()) { - throw new AnnotationsAreNotSupportedForInternalClassesException($method->getDeclaringClass()->getName()); - } - - return new self( - (string) $method->getDocComment(), - self::extractAnnotationsFromReflector($method), - $method->getStartLine(), - $method->getFileName(), - ); - } - - /** - * Note: we do not preserve an instance of the reflection object, since it cannot be safely (de-)serialized. - * - * @param array> $symbolAnnotations - */ - private function __construct(string $docComment, array $symbolAnnotations, int $startLine, string $fileName) - { - $this->docComment = $docComment; - $this->symbolAnnotations = $symbolAnnotations; - $this->startLine = $startLine; - $this->fileName = $fileName; - } - - /** - * @psalm-return array{ - * __OFFSET: array&array{__FILE: string}, - * setting?: array, - * extension_versions?: array - * }&array< - * string, - * string|array{version: string, operator: string}|array{constraint: string}|array - * > - * - * @throws InvalidVersionRequirementException - */ - public function requirements(): array - { - if ($this->parsedRequirements !== null) { - return $this->parsedRequirements; - } - - $offset = $this->startLine; - $requires = []; - $recordedSettings = []; - $extensionVersions = []; - $recordedOffsets = [ - '__FILE' => realpath($this->fileName), - ]; - - // Trim docblock markers, split it into lines and rewind offset to start of docblock - $lines = preg_replace(['#^/\*{2}#', '#\*/$#'], '', preg_split('/\r\n|\r|\n/', $this->docComment)); - $offset -= count($lines); - - foreach ($lines as $line) { - if (preg_match(self::REGEX_REQUIRES_OS, $line, $matches)) { - $requires[$matches['name']] = $matches['value']; - $recordedOffsets[$matches['name']] = $offset; - } - - if (preg_match(self::REGEX_REQUIRES_VERSION, $line, $matches)) { - $requires[$matches['name']] = [ - 'version' => $matches['version'], - 'operator' => $matches['operator'], - ]; - - $recordedOffsets[$matches['name']] = $offset; - } - - if (preg_match(self::REGEX_REQUIRES_VERSION_CONSTRAINT, $line, $matches)) { - if (!empty($requires[$matches['name']])) { - $offset++; - - continue; - } - - try { - $versionConstraintParser = new VersionConstraintParser; - - $requires[$matches['name'] . '_constraint'] = [ - 'constraint' => $versionConstraintParser->parse(trim($matches['constraint'])), - ]; - - $recordedOffsets[$matches['name'] . '_constraint'] = $offset; - } catch (PharIoVersionException $e) { - throw new InvalidVersionRequirementException( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - } - - if (preg_match(self::REGEX_REQUIRES_SETTING, $line, $matches)) { - $recordedSettings[$matches['setting']] = $matches['value']; - $recordedOffsets['__SETTING_' . $matches['setting']] = $offset; - } - - if (preg_match(self::REGEX_REQUIRES, $line, $matches)) { - $name = $matches['name'] . 's'; - - if (!isset($requires[$name])) { - $requires[$name] = []; - } - - $requires[$name][] = $matches['value']; - $recordedOffsets[$matches['name'] . '_' . $matches['value']] = $offset; - - if ($name === 'extensions' && !empty($matches['version'])) { - $extensionVersions[$matches['value']] = [ - 'version' => $matches['version'], - 'operator' => $matches['operator'], - ]; - } - } - - $offset++; - } - - return $this->parsedRequirements = array_merge( - $requires, - ['__OFFSET' => $recordedOffsets], - array_filter( - [ - 'setting' => $recordedSettings, - 'extension_versions' => $extensionVersions, - ], - ), - ); - } - - public function symbolAnnotations(): array - { - return $this->symbolAnnotations; - } - - /** - * @psalm-return array> - */ - private static function parseDocBlock(string $docBlock): array - { - // Strip away the docblock header and footer to ease parsing of one line annotations - $docBlock = substr($docBlock, 3, -2); - $annotations = []; - - if (preg_match_all('/@(?P[A-Za-z_-]+)(?:[ \t]+(?P.*?))?[ \t]*\r?$/m', $docBlock, $matches)) { - $numMatches = count($matches[0]); - - for ($i = 0; $i < $numMatches; $i++) { - $annotations[$matches['name'][$i]][] = $matches['value'][$i]; - } - } - - return $annotations; - } - - private static function extractAnnotationsFromReflector(ReflectionClass|ReflectionFunctionAbstract $reflector): array - { - $annotations = []; - - if ($reflector instanceof ReflectionClass) { - $annotations = array_merge( - $annotations, - ...array_map( - static fn (ReflectionClass $trait): array => self::parseDocBlock((string) $trait->getDocComment()), - array_values($reflector->getTraits()), - ), - ); - } - - return array_merge( - $annotations, - self::parseDocBlock((string) $reflector->getDocComment()), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Parser/Annotation/Registry.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Parser/Annotation/Registry.php deleted file mode 100644 index 51397a70..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Parser/Annotation/Registry.php +++ /dev/null @@ -1,98 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata\Annotation\Parser; - -use function array_key_exists; -use PHPUnit\Metadata\AnnotationsAreNotSupportedForInternalClassesException; -use PHPUnit\Metadata\ReflectionException; -use ReflectionClass; -use ReflectionMethod; - -/** - * Reflection information, and therefore DocBlock information, is static within - * a single PHP process. It is therefore okay to use a Singleton registry here. - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Registry -{ - private static ?Registry $instance = null; - - /** - * @psalm-var array indexed by class name - */ - private array $classDocBlocks = []; - - /** - * @psalm-var array> indexed by class name and method name - */ - private array $methodDocBlocks = []; - - public static function getInstance(): self - { - return self::$instance ?? self::$instance = new self; - } - - /** - * @psalm-param class-string $class - * - * @throws AnnotationsAreNotSupportedForInternalClassesException - * @throws ReflectionException - */ - public function forClassName(string $class): DocBlock - { - if (array_key_exists($class, $this->classDocBlocks)) { - return $this->classDocBlocks[$class]; - } - - try { - $reflection = new ReflectionClass($class); - // @codeCoverageIgnoreStart - } catch (\ReflectionException $e) { - throw new ReflectionException( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - // @codeCoverageIgnoreEnd - - return $this->classDocBlocks[$class] = DocBlock::ofClass($reflection); - } - - /** - * @psalm-param class-string $classInHierarchy - * - * @throws AnnotationsAreNotSupportedForInternalClassesException - * @throws ReflectionException - */ - public function forMethod(string $classInHierarchy, string $method): DocBlock - { - if (isset($this->methodDocBlocks[$classInHierarchy][$method])) { - return $this->methodDocBlocks[$classInHierarchy][$method]; - } - - try { - $reflection = new ReflectionMethod($classInHierarchy, $method); - // @codeCoverageIgnoreStart - } catch (\ReflectionException $e) { - throw new ReflectionException( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - // @codeCoverageIgnoreEnd - - return $this->methodDocBlocks[$classInHierarchy][$method] = DocBlock::ofMethod($reflection); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Parser/AnnotationParser.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Parser/AnnotationParser.php deleted file mode 100644 index 1d485c72..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Parser/AnnotationParser.php +++ /dev/null @@ -1,568 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata\Parser; - -use function array_merge; -use function assert; -use function class_exists; -use function count; -use function explode; -use function method_exists; -use function preg_replace; -use function rtrim; -use function sprintf; -use function str_contains; -use function str_starts_with; -use function strlen; -use function substr; -use function trim; -use PHPUnit\Event\Facade as EventFacade; -use PHPUnit\Metadata\Annotation\Parser\Registry as AnnotationRegistry; -use PHPUnit\Metadata\AnnotationsAreNotSupportedForInternalClassesException; -use PHPUnit\Metadata\InvalidVersionRequirementException; -use PHPUnit\Metadata\Metadata; -use PHPUnit\Metadata\MetadataCollection; -use PHPUnit\Metadata\ReflectionException; -use PHPUnit\Metadata\Version\ComparisonRequirement; -use PHPUnit\Metadata\Version\ConstraintRequirement; -use PHPUnit\Util\InvalidVersionOperatorException; -use PHPUnit\Util\VersionComparisonOperator; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class AnnotationParser implements Parser -{ - /** - * @psalm-param class-string $className - * - * @throws AnnotationsAreNotSupportedForInternalClassesException - * @throws InvalidVersionOperatorException - * @throws ReflectionException - */ - public function forClass(string $className): MetadataCollection - { - assert(class_exists($className)); - - $result = []; - - foreach (AnnotationRegistry::getInstance()->forClassName($className)->symbolAnnotations() as $annotation => $values) { - switch ($annotation) { - case 'backupGlobals': - $result[] = Metadata::backupGlobalsOnClass($this->stringToBool($values[0])); - - break; - - case 'backupStaticAttributes': - case 'backupStaticProperties': - $result[] = Metadata::backupStaticPropertiesOnClass($this->stringToBool($values[0])); - - break; - - case 'covers': - foreach ($values as $value) { - $value = $this->cleanUpCoversOrUsesTarget($value); - - $result[] = Metadata::coversOnClass($value); - } - - break; - - case 'coversDefaultClass': - foreach ($values as $value) { - $result[] = Metadata::coversDefaultClass($value); - } - - break; - - case 'coversNothing': - $result[] = Metadata::coversNothingOnClass(); - - break; - - case 'doesNotPerformAssertions': - $result[] = Metadata::doesNotPerformAssertionsOnClass(); - - break; - - case 'group': - case 'ticket': - foreach ($values as $value) { - $result[] = Metadata::groupOnClass($value); - } - - break; - - case 'large': - $result[] = Metadata::groupOnClass('large'); - - break; - - case 'medium': - $result[] = Metadata::groupOnClass('medium'); - - break; - - case 'preserveGlobalState': - $result[] = Metadata::preserveGlobalStateOnClass($this->stringToBool($values[0])); - - break; - - case 'runClassInSeparateProcess': - $result[] = Metadata::runClassInSeparateProcess(); - - break; - - case 'runTestsInSeparateProcesses': - $result[] = Metadata::runTestsInSeparateProcesses(); - - break; - - case 'small': - $result[] = Metadata::groupOnClass('small'); - - break; - - case 'testdox': - $result[] = Metadata::testDoxOnClass($values[0]); - - break; - - case 'uses': - foreach ($values as $value) { - $value = $this->cleanUpCoversOrUsesTarget($value); - - $result[] = Metadata::usesOnClass($value); - } - - break; - - case 'usesDefaultClass': - foreach ($values as $value) { - $result[] = Metadata::usesDefaultClass($value); - } - - break; - } - } - - try { - $result = array_merge( - $result, - $this->parseRequirements( - AnnotationRegistry::getInstance()->forClassName($className)->requirements(), - 'class', - ), - ); - } catch (InvalidVersionRequirementException $e) { - EventFacade::emitter()->testRunnerTriggeredWarning( - sprintf( - 'Class %s is annotated using an invalid version requirement: %s', - $className, - $e->getMessage(), - ), - ); - } - - return MetadataCollection::fromArray($result); - } - - /** - * @psalm-param class-string $className - * @psalm-param non-empty-string $methodName - * - * @throws AnnotationsAreNotSupportedForInternalClassesException - * @throws InvalidVersionOperatorException - * @throws ReflectionException - */ - public function forMethod(string $className, string $methodName): MetadataCollection - { - assert(class_exists($className)); - assert(method_exists($className, $methodName)); - - $result = []; - - foreach (AnnotationRegistry::getInstance()->forMethod($className, $methodName)->symbolAnnotations() as $annotation => $values) { - switch ($annotation) { - case 'after': - $result[] = Metadata::after(); - - break; - - case 'afterClass': - $result[] = Metadata::afterClass(); - - break; - - case 'backupGlobals': - $result[] = Metadata::backupGlobalsOnMethod($this->stringToBool($values[0])); - - break; - - case 'backupStaticAttributes': - case 'backupStaticProperties': - $result[] = Metadata::backupStaticPropertiesOnMethod($this->stringToBool($values[0])); - - break; - - case 'before': - $result[] = Metadata::before(); - - break; - - case 'beforeClass': - $result[] = Metadata::beforeClass(); - - break; - - case 'covers': - foreach ($values as $value) { - $value = $this->cleanUpCoversOrUsesTarget($value); - - $result[] = Metadata::coversOnMethod($value); - } - - break; - - case 'coversNothing': - $result[] = Metadata::coversNothingOnMethod(); - - break; - - case 'dataProvider': - foreach ($values as $value) { - $value = rtrim($value, " ()\n\r\t\v\x00"); - - if (str_contains($value, '::')) { - $result[] = Metadata::dataProvider(...explode('::', $value)); - - continue; - } - - $result[] = Metadata::dataProvider($className, $value); - } - - break; - - case 'depends': - foreach ($values as $value) { - $deepClone = false; - $shallowClone = false; - - if (str_starts_with($value, 'clone ')) { - $deepClone = true; - $value = substr($value, strlen('clone ')); - } elseif (str_starts_with($value, '!clone ')) { - $value = substr($value, strlen('!clone ')); - } elseif (str_starts_with($value, 'shallowClone ')) { - $shallowClone = true; - $value = substr($value, strlen('shallowClone ')); - } elseif (str_starts_with($value, '!shallowClone ')) { - $value = substr($value, strlen('!shallowClone ')); - } - - if (str_contains($value, '::')) { - [$_className, $_methodName] = explode('::', $value); - - assert($_className !== ''); - assert($_methodName !== ''); - - if ($_methodName === 'class') { - $result[] = Metadata::dependsOnClass($_className, $deepClone, $shallowClone); - - continue; - } - - $result[] = Metadata::dependsOnMethod($_className, $_methodName, $deepClone, $shallowClone); - - continue; - } - - $result[] = Metadata::dependsOnMethod($className, $value, $deepClone, $shallowClone); - } - - break; - - case 'doesNotPerformAssertions': - $result[] = Metadata::doesNotPerformAssertionsOnMethod(); - - break; - - case 'excludeGlobalVariableFromBackup': - foreach ($values as $value) { - $result[] = Metadata::excludeGlobalVariableFromBackupOnMethod($value); - } - - break; - - case 'excludeStaticPropertyFromBackup': - foreach ($values as $value) { - $tmp = explode(' ', $value); - - if (count($tmp) !== 2) { - continue; - } - - $result[] = Metadata::excludeStaticPropertyFromBackupOnMethod( - trim($tmp[0]), - trim($tmp[1]), - ); - } - - break; - - case 'group': - case 'ticket': - foreach ($values as $value) { - $result[] = Metadata::groupOnMethod($value); - } - - break; - - case 'large': - $result[] = Metadata::groupOnMethod('large'); - - break; - - case 'medium': - $result[] = Metadata::groupOnMethod('medium'); - - break; - - case 'postCondition': - $result[] = Metadata::postCondition(); - - break; - - case 'preCondition': - $result[] = Metadata::preCondition(); - - break; - - case 'preserveGlobalState': - $result[] = Metadata::preserveGlobalStateOnMethod($this->stringToBool($values[0])); - - break; - - case 'runInSeparateProcess': - $result[] = Metadata::runInSeparateProcess(); - - break; - - case 'small': - $result[] = Metadata::groupOnMethod('small'); - - break; - - case 'test': - $result[] = Metadata::test(); - - break; - - case 'testdox': - $result[] = Metadata::testDoxOnMethod($values[0]); - - break; - - case 'uses': - foreach ($values as $value) { - $value = $this->cleanUpCoversOrUsesTarget($value); - - $result[] = Metadata::usesOnMethod($value); - } - - break; - } - } - - if (method_exists($className, $methodName)) { - try { - $result = array_merge( - $result, - $this->parseRequirements( - AnnotationRegistry::getInstance()->forMethod($className, $methodName)->requirements(), - 'method', - ), - ); - } catch (InvalidVersionRequirementException $e) { - EventFacade::emitter()->testRunnerTriggeredWarning( - sprintf( - 'Method %s::%s is annotated using an invalid version requirement: %s', - $className, - $methodName, - $e->getMessage(), - ), - ); - } - } - - return MetadataCollection::fromArray($result); - } - - /** - * @psalm-param class-string $className - * @psalm-param non-empty-string $methodName - * - * @throws AnnotationsAreNotSupportedForInternalClassesException - * @throws InvalidVersionOperatorException - * @throws ReflectionException - */ - public function forClassAndMethod(string $className, string $methodName): MetadataCollection - { - return $this->forClass($className)->mergeWith( - $this->forMethod($className, $methodName), - ); - } - - private function stringToBool(string $value): bool - { - if ($value === 'enabled') { - return true; - } - - return false; - } - - private function cleanUpCoversOrUsesTarget(string $value): string - { - $value = preg_replace('/[\s()]+$/', '', $value); - - return explode(' ', $value, 2)[0]; - } - - /** - * @psalm-return list - * - * @throws InvalidVersionOperatorException - */ - private function parseRequirements(array $requirements, string $level): array - { - $result = []; - - if (!empty($requirements['PHP'])) { - $versionRequirement = new ComparisonRequirement( - $requirements['PHP']['version'], - new VersionComparisonOperator(empty($requirements['PHP']['operator']) ? '>=' : $requirements['PHP']['operator']), - ); - - if ($level === 'class') { - $result[] = Metadata::requiresPhpOnClass($versionRequirement); - } else { - $result[] = Metadata::requiresPhpOnMethod($versionRequirement); - } - } elseif (!empty($requirements['PHP_constraint'])) { - $versionRequirement = new ConstraintRequirement($requirements['PHP_constraint']['constraint']); - - if ($level === 'class') { - $result[] = Metadata::requiresPhpOnClass($versionRequirement); - } else { - $result[] = Metadata::requiresPhpOnMethod($versionRequirement); - } - } - - if (!empty($requirements['extensions'])) { - foreach ($requirements['extensions'] as $extension) { - if (isset($requirements['extension_versions'][$extension])) { - continue; - } - - if ($level === 'class') { - $result[] = Metadata::requiresPhpExtensionOnClass($extension, null); - } else { - $result[] = Metadata::requiresPhpExtensionOnMethod($extension, null); - } - } - } - - if (!empty($requirements['extension_versions'])) { - foreach ($requirements['extension_versions'] as $extension => $version) { - $versionRequirement = new ComparisonRequirement( - $version['version'], - new VersionComparisonOperator(empty($version['operator']) ? '>=' : $version['operator']), - ); - - if ($level === 'class') { - $result[] = Metadata::requiresPhpExtensionOnClass($extension, $versionRequirement); - } else { - $result[] = Metadata::requiresPhpExtensionOnMethod($extension, $versionRequirement); - } - } - } - - if (!empty($requirements['PHPUnit'])) { - $versionRequirement = new ComparisonRequirement( - $requirements['PHPUnit']['version'], - new VersionComparisonOperator(empty($requirements['PHPUnit']['operator']) ? '>=' : $requirements['PHPUnit']['operator']), - ); - - if ($level === 'class') { - $result[] = Metadata::requiresPhpunitOnClass($versionRequirement); - } else { - $result[] = Metadata::requiresPhpunitOnMethod($versionRequirement); - } - } elseif (!empty($requirements['PHPUnit_constraint'])) { - $versionRequirement = new ConstraintRequirement($requirements['PHPUnit_constraint']['constraint']); - - if ($level === 'class') { - $result[] = Metadata::requiresPhpunitOnClass($versionRequirement); - } else { - $result[] = Metadata::requiresPhpunitOnMethod($versionRequirement); - } - } - - if (!empty($requirements['OSFAMILY'])) { - if ($level === 'class') { - $result[] = Metadata::requiresOperatingSystemFamilyOnClass($requirements['OSFAMILY']); - } else { - $result[] = Metadata::requiresOperatingSystemFamilyOnMethod($requirements['OSFAMILY']); - } - } - - if (!empty($requirements['OS'])) { - if ($level === 'class') { - $result[] = Metadata::requiresOperatingSystemOnClass($requirements['OS']); - } else { - $result[] = Metadata::requiresOperatingSystemOnMethod($requirements['OS']); - } - } - - if (!empty($requirements['functions'])) { - foreach ($requirements['functions'] as $function) { - $pieces = explode('::', $function); - - if (count($pieces) === 2) { - if ($level === 'class') { - $result[] = Metadata::requiresMethodOnClass($pieces[0], $pieces[1]); - } else { - $result[] = Metadata::requiresMethodOnMethod($pieces[0], $pieces[1]); - } - } elseif ($level === 'class') { - $result[] = Metadata::requiresFunctionOnClass($function); - } else { - $result[] = Metadata::requiresFunctionOnMethod($function); - } - } - } - - if (!empty($requirements['setting'])) { - foreach ($requirements['setting'] as $setting => $value) { - if ($level === 'class') { - $result[] = Metadata::requiresSettingOnClass($setting, $value); - } else { - $result[] = Metadata::requiresSettingOnMethod($setting, $value); - } - } - } - - return $result; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Parser/AttributeParser.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Parser/AttributeParser.php deleted file mode 100644 index 9a19f89a..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Parser/AttributeParser.php +++ /dev/null @@ -1,674 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata\Parser; - -use const JSON_THROW_ON_ERROR; -use function assert; -use function class_exists; -use function json_decode; -use function method_exists; -use function str_starts_with; -use PHPUnit\Framework\Attributes\After; -use PHPUnit\Framework\Attributes\AfterClass; -use PHPUnit\Framework\Attributes\BackupGlobals; -use PHPUnit\Framework\Attributes\BackupStaticProperties; -use PHPUnit\Framework\Attributes\Before; -use PHPUnit\Framework\Attributes\BeforeClass; -use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\CoversFunction; -use PHPUnit\Framework\Attributes\CoversNothing; -use PHPUnit\Framework\Attributes\DataProvider; -use PHPUnit\Framework\Attributes\DataProviderExternal; -use PHPUnit\Framework\Attributes\Depends; -use PHPUnit\Framework\Attributes\DependsExternal; -use PHPUnit\Framework\Attributes\DependsExternalUsingDeepClone; -use PHPUnit\Framework\Attributes\DependsExternalUsingShallowClone; -use PHPUnit\Framework\Attributes\DependsOnClass; -use PHPUnit\Framework\Attributes\DependsOnClassUsingDeepClone; -use PHPUnit\Framework\Attributes\DependsOnClassUsingShallowClone; -use PHPUnit\Framework\Attributes\DependsUsingDeepClone; -use PHPUnit\Framework\Attributes\DependsUsingShallowClone; -use PHPUnit\Framework\Attributes\DoesNotPerformAssertions; -use PHPUnit\Framework\Attributes\ExcludeGlobalVariableFromBackup; -use PHPUnit\Framework\Attributes\ExcludeStaticPropertyFromBackup; -use PHPUnit\Framework\Attributes\Group; -use PHPUnit\Framework\Attributes\IgnoreClassForCodeCoverage; -use PHPUnit\Framework\Attributes\IgnoreDeprecations; -use PHPUnit\Framework\Attributes\IgnoreFunctionForCodeCoverage; -use PHPUnit\Framework\Attributes\IgnoreMethodForCodeCoverage; -use PHPUnit\Framework\Attributes\Large; -use PHPUnit\Framework\Attributes\Medium; -use PHPUnit\Framework\Attributes\PostCondition; -use PHPUnit\Framework\Attributes\PreCondition; -use PHPUnit\Framework\Attributes\PreserveGlobalState; -use PHPUnit\Framework\Attributes\RequiresFunction; -use PHPUnit\Framework\Attributes\RequiresMethod; -use PHPUnit\Framework\Attributes\RequiresOperatingSystem; -use PHPUnit\Framework\Attributes\RequiresOperatingSystemFamily; -use PHPUnit\Framework\Attributes\RequiresPhp; -use PHPUnit\Framework\Attributes\RequiresPhpExtension; -use PHPUnit\Framework\Attributes\RequiresPhpunit; -use PHPUnit\Framework\Attributes\RequiresSetting; -use PHPUnit\Framework\Attributes\RunClassInSeparateProcess; -use PHPUnit\Framework\Attributes\RunInSeparateProcess; -use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses; -use PHPUnit\Framework\Attributes\Small; -use PHPUnit\Framework\Attributes\Test; -use PHPUnit\Framework\Attributes\TestDox; -use PHPUnit\Framework\Attributes\TestWith; -use PHPUnit\Framework\Attributes\TestWithJson; -use PHPUnit\Framework\Attributes\Ticket; -use PHPUnit\Framework\Attributes\UsesClass; -use PHPUnit\Framework\Attributes\UsesFunction; -use PHPUnit\Framework\Attributes\WithoutErrorHandler; -use PHPUnit\Metadata\Metadata; -use PHPUnit\Metadata\MetadataCollection; -use PHPUnit\Metadata\Version\ConstraintRequirement; -use ReflectionClass; -use ReflectionMethod; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class AttributeParser implements Parser -{ - /** - * @psalm-param class-string $className - */ - public function forClass(string $className): MetadataCollection - { - assert(class_exists($className)); - - $result = []; - - foreach ((new ReflectionClass($className))->getAttributes() as $attribute) { - if (!str_starts_with($attribute->getName(), 'PHPUnit\\Framework\\Attributes\\')) { - continue; - } - - if (!class_exists($attribute->getName())) { - continue; - } - - $attributeInstance = $attribute->newInstance(); - - switch ($attribute->getName()) { - case BackupGlobals::class: - assert($attributeInstance instanceof BackupGlobals); - - $result[] = Metadata::backupGlobalsOnClass($attributeInstance->enabled()); - - break; - - case BackupStaticProperties::class: - assert($attributeInstance instanceof BackupStaticProperties); - - $result[] = Metadata::backupStaticPropertiesOnClass($attributeInstance->enabled()); - - break; - - case CoversClass::class: - assert($attributeInstance instanceof CoversClass); - - $result[] = Metadata::coversClass($attributeInstance->className()); - - break; - - case CoversFunction::class: - assert($attributeInstance instanceof CoversFunction); - - $result[] = Metadata::coversFunction($attributeInstance->functionName()); - - break; - - case CoversNothing::class: - $result[] = Metadata::coversNothingOnClass(); - - break; - - case DoesNotPerformAssertions::class: - $result[] = Metadata::doesNotPerformAssertionsOnClass(); - - break; - - case ExcludeGlobalVariableFromBackup::class: - assert($attributeInstance instanceof ExcludeGlobalVariableFromBackup); - - $result[] = Metadata::excludeGlobalVariableFromBackupOnClass($attributeInstance->globalVariableName()); - - break; - - case ExcludeStaticPropertyFromBackup::class: - assert($attributeInstance instanceof ExcludeStaticPropertyFromBackup); - - $result[] = Metadata::excludeStaticPropertyFromBackupOnClass( - $attributeInstance->className(), - $attributeInstance->propertyName(), - ); - - break; - - case Group::class: - assert($attributeInstance instanceof Group); - - $result[] = Metadata::groupOnClass($attributeInstance->name()); - - break; - - case Large::class: - $result[] = Metadata::groupOnClass('large'); - - break; - - case Medium::class: - $result[] = Metadata::groupOnClass('medium'); - - break; - - case IgnoreClassForCodeCoverage::class: - assert($attributeInstance instanceof IgnoreClassForCodeCoverage); - - $result[] = Metadata::ignoreClassForCodeCoverage($attributeInstance->className()); - - break; - - case IgnoreDeprecations::class: - assert($attributeInstance instanceof IgnoreDeprecations); - - $result[] = Metadata::ignoreDeprecationsOnClass(); - - break; - - case IgnoreMethodForCodeCoverage::class: - assert($attributeInstance instanceof IgnoreMethodForCodeCoverage); - - $result[] = Metadata::ignoreMethodForCodeCoverage($attributeInstance->className(), $attributeInstance->methodName()); - - break; - - case IgnoreFunctionForCodeCoverage::class: - assert($attributeInstance instanceof IgnoreFunctionForCodeCoverage); - - $result[] = Metadata::ignoreFunctionForCodeCoverage($attributeInstance->functionName()); - - break; - - case PreserveGlobalState::class: - assert($attributeInstance instanceof PreserveGlobalState); - - $result[] = Metadata::preserveGlobalStateOnClass($attributeInstance->enabled()); - - break; - - case RequiresMethod::class: - assert($attributeInstance instanceof RequiresMethod); - - $result[] = Metadata::requiresMethodOnClass( - $attributeInstance->className(), - $attributeInstance->methodName(), - ); - - break; - - case RequiresFunction::class: - assert($attributeInstance instanceof RequiresFunction); - - $result[] = Metadata::requiresFunctionOnClass($attributeInstance->functionName()); - - break; - - case RequiresOperatingSystem::class: - assert($attributeInstance instanceof RequiresOperatingSystem); - - $result[] = Metadata::requiresOperatingSystemOnClass($attributeInstance->regularExpression()); - - break; - - case RequiresOperatingSystemFamily::class: - assert($attributeInstance instanceof RequiresOperatingSystemFamily); - - $result[] = Metadata::requiresOperatingSystemFamilyOnClass($attributeInstance->operatingSystemFamily()); - - break; - - case RequiresPhp::class: - assert($attributeInstance instanceof RequiresPhp); - - $result[] = Metadata::requiresPhpOnClass( - ConstraintRequirement::from( - $attributeInstance->versionRequirement(), - ), - ); - - break; - - case RequiresPhpExtension::class: - assert($attributeInstance instanceof RequiresPhpExtension); - - $versionConstraint = null; - $versionRequirement = $attributeInstance->versionRequirement(); - - if ($versionRequirement !== null) { - $versionConstraint = ConstraintRequirement::from($versionRequirement); - } - - $result[] = Metadata::requiresPhpExtensionOnClass( - $attributeInstance->extension(), - $versionConstraint, - ); - - break; - - case RequiresPhpunit::class: - assert($attributeInstance instanceof RequiresPhpunit); - - $result[] = Metadata::requiresPhpunitOnClass( - ConstraintRequirement::from( - $attributeInstance->versionRequirement(), - ), - ); - - break; - - case RequiresSetting::class: - assert($attributeInstance instanceof RequiresSetting); - - $result[] = Metadata::requiresSettingOnClass( - $attributeInstance->setting(), - $attributeInstance->value(), - ); - - break; - - case RunClassInSeparateProcess::class: - $result[] = Metadata::runClassInSeparateProcess(); - - break; - - case RunTestsInSeparateProcesses::class: - $result[] = Metadata::runTestsInSeparateProcesses(); - - break; - - case Small::class: - $result[] = Metadata::groupOnClass('small'); - - break; - - case TestDox::class: - assert($attributeInstance instanceof TestDox); - - $result[] = Metadata::testDoxOnClass($attributeInstance->text()); - - break; - - case Ticket::class: - assert($attributeInstance instanceof Ticket); - - $result[] = Metadata::groupOnClass($attributeInstance->text()); - - break; - - case UsesClass::class: - assert($attributeInstance instanceof UsesClass); - - $result[] = Metadata::usesClass($attributeInstance->className()); - - break; - - case UsesFunction::class: - assert($attributeInstance instanceof UsesFunction); - - $result[] = Metadata::usesFunction($attributeInstance->functionName()); - - break; - } - } - - return MetadataCollection::fromArray($result); - } - - /** - * @psalm-param class-string $className - * @psalm-param non-empty-string $methodName - */ - public function forMethod(string $className, string $methodName): MetadataCollection - { - assert(class_exists($className)); - assert(method_exists($className, $methodName)); - - $result = []; - - foreach ((new ReflectionMethod($className, $methodName))->getAttributes() as $attribute) { - if (!str_starts_with($attribute->getName(), 'PHPUnit\\Framework\\Attributes\\')) { - continue; - } - - if (!class_exists($attribute->getName())) { - continue; - } - - $attributeInstance = $attribute->newInstance(); - - switch ($attribute->getName()) { - case After::class: - $result[] = Metadata::after(); - - break; - - case AfterClass::class: - $result[] = Metadata::afterClass(); - - break; - - case BackupGlobals::class: - assert($attributeInstance instanceof BackupGlobals); - - $result[] = Metadata::backupGlobalsOnMethod($attributeInstance->enabled()); - - break; - - case BackupStaticProperties::class: - assert($attributeInstance instanceof BackupStaticProperties); - - $result[] = Metadata::backupStaticPropertiesOnMethod($attributeInstance->enabled()); - - break; - - case Before::class: - $result[] = Metadata::before(); - - break; - - case BeforeClass::class: - $result[] = Metadata::beforeClass(); - - break; - - case CoversNothing::class: - $result[] = Metadata::coversNothingOnMethod(); - - break; - - case DataProvider::class: - assert($attributeInstance instanceof DataProvider); - - $result[] = Metadata::dataProvider($className, $attributeInstance->methodName()); - - break; - - case DataProviderExternal::class: - assert($attributeInstance instanceof DataProviderExternal); - - $result[] = Metadata::dataProvider($attributeInstance->className(), $attributeInstance->methodName()); - - break; - - case Depends::class: - assert($attributeInstance instanceof Depends); - - $result[] = Metadata::dependsOnMethod($className, $attributeInstance->methodName(), false, false); - - break; - - case DependsUsingDeepClone::class: - assert($attributeInstance instanceof DependsUsingDeepClone); - - $result[] = Metadata::dependsOnMethod($className, $attributeInstance->methodName(), true, false); - - break; - - case DependsUsingShallowClone::class: - assert($attributeInstance instanceof DependsUsingShallowClone); - - $result[] = Metadata::dependsOnMethod($className, $attributeInstance->methodName(), false, true); - - break; - - case DependsExternal::class: - assert($attributeInstance instanceof DependsExternal); - - $result[] = Metadata::dependsOnMethod($attributeInstance->className(), $attributeInstance->methodName(), false, false); - - break; - - case DependsExternalUsingDeepClone::class: - assert($attributeInstance instanceof DependsExternalUsingDeepClone); - - $result[] = Metadata::dependsOnMethod($attributeInstance->className(), $attributeInstance->methodName(), true, false); - - break; - - case DependsExternalUsingShallowClone::class: - assert($attributeInstance instanceof DependsExternalUsingShallowClone); - - $result[] = Metadata::dependsOnMethod($attributeInstance->className(), $attributeInstance->methodName(), false, true); - - break; - - case DependsOnClass::class: - assert($attributeInstance instanceof DependsOnClass); - - $result[] = Metadata::dependsOnClass($attributeInstance->className(), false, false); - - break; - - case DependsOnClassUsingDeepClone::class: - assert($attributeInstance instanceof DependsOnClassUsingDeepClone); - - $result[] = Metadata::dependsOnClass($attributeInstance->className(), true, false); - - break; - - case DependsOnClassUsingShallowClone::class: - assert($attributeInstance instanceof DependsOnClassUsingShallowClone); - - $result[] = Metadata::dependsOnClass($attributeInstance->className(), false, true); - - break; - - case DoesNotPerformAssertions::class: - assert($attributeInstance instanceof DoesNotPerformAssertions); - - $result[] = Metadata::doesNotPerformAssertionsOnMethod(); - - break; - - case ExcludeGlobalVariableFromBackup::class: - assert($attributeInstance instanceof ExcludeGlobalVariableFromBackup); - - $result[] = Metadata::excludeGlobalVariableFromBackupOnMethod($attributeInstance->globalVariableName()); - - break; - - case ExcludeStaticPropertyFromBackup::class: - assert($attributeInstance instanceof ExcludeStaticPropertyFromBackup); - - $result[] = Metadata::excludeStaticPropertyFromBackupOnMethod( - $attributeInstance->className(), - $attributeInstance->propertyName(), - ); - - break; - - case Group::class: - assert($attributeInstance instanceof Group); - - $result[] = Metadata::groupOnMethod($attributeInstance->name()); - - break; - - case IgnoreDeprecations::class: - assert($attributeInstance instanceof IgnoreDeprecations); - - $result[] = Metadata::ignoreDeprecationsOnMethod(); - - break; - - case PostCondition::class: - $result[] = Metadata::postCondition(); - - break; - - case PreCondition::class: - $result[] = Metadata::preCondition(); - - break; - - case PreserveGlobalState::class: - assert($attributeInstance instanceof PreserveGlobalState); - - $result[] = Metadata::preserveGlobalStateOnMethod($attributeInstance->enabled()); - - break; - - case RequiresMethod::class: - assert($attributeInstance instanceof RequiresMethod); - - $result[] = Metadata::requiresMethodOnMethod( - $attributeInstance->className(), - $attributeInstance->methodName(), - ); - - break; - - case RequiresFunction::class: - assert($attributeInstance instanceof RequiresFunction); - - $result[] = Metadata::requiresFunctionOnMethod($attributeInstance->functionName()); - - break; - - case RequiresOperatingSystem::class: - assert($attributeInstance instanceof RequiresOperatingSystem); - - $result[] = Metadata::requiresOperatingSystemOnMethod($attributeInstance->regularExpression()); - - break; - - case RequiresOperatingSystemFamily::class: - assert($attributeInstance instanceof RequiresOperatingSystemFamily); - - $result[] = Metadata::requiresOperatingSystemFamilyOnMethod($attributeInstance->operatingSystemFamily()); - - break; - - case RequiresPhp::class: - assert($attributeInstance instanceof RequiresPhp); - - $result[] = Metadata::requiresPhpOnMethod( - ConstraintRequirement::from( - $attributeInstance->versionRequirement(), - ), - ); - - break; - - case RequiresPhpExtension::class: - assert($attributeInstance instanceof RequiresPhpExtension); - - $versionConstraint = null; - $versionRequirement = $attributeInstance->versionRequirement(); - - if ($versionRequirement !== null) { - $versionConstraint = ConstraintRequirement::from($versionRequirement); - } - - $result[] = Metadata::requiresPhpExtensionOnMethod( - $attributeInstance->extension(), - $versionConstraint, - ); - - break; - - case RequiresPhpunit::class: - assert($attributeInstance instanceof RequiresPhpunit); - - $result[] = Metadata::requiresPhpunitOnMethod( - ConstraintRequirement::from( - $attributeInstance->versionRequirement(), - ), - ); - - break; - - case RequiresSetting::class: - assert($attributeInstance instanceof RequiresSetting); - - $result[] = Metadata::requiresSettingOnMethod( - $attributeInstance->setting(), - $attributeInstance->value(), - ); - - break; - - case RunInSeparateProcess::class: - $result[] = Metadata::runInSeparateProcess(); - - break; - - case Test::class: - $result[] = Metadata::test(); - - break; - - case TestDox::class: - assert($attributeInstance instanceof TestDox); - - $result[] = Metadata::testDoxOnMethod($attributeInstance->text()); - - break; - - case TestWith::class: - assert($attributeInstance instanceof TestWith); - - $result[] = Metadata::testWith($attributeInstance->data()); - - break; - - case TestWithJson::class: - assert($attributeInstance instanceof TestWithJson); - - $result[] = Metadata::testWith(json_decode($attributeInstance->json(), true, 512, JSON_THROW_ON_ERROR)); - - break; - - case Ticket::class: - assert($attributeInstance instanceof Ticket); - - $result[] = Metadata::groupOnMethod($attributeInstance->text()); - - break; - - case WithoutErrorHandler::class: - assert($attributeInstance instanceof WithoutErrorHandler); - - $result[] = Metadata::withoutErrorHandler(); - - break; - } - } - - return MetadataCollection::fromArray($result); - } - - /** - * @psalm-param class-string $className - * @psalm-param non-empty-string $methodName - */ - public function forClassAndMethod(string $className, string $methodName): MetadataCollection - { - return $this->forClass($className)->mergeWith( - $this->forMethod($className, $methodName), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Parser/CachingParser.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Parser/CachingParser.php deleted file mode 100644 index a383006f..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Parser/CachingParser.php +++ /dev/null @@ -1,88 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata\Parser; - -use function assert; -use function class_exists; -use function method_exists; -use PHPUnit\Metadata\MetadataCollection; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class CachingParser implements Parser -{ - private readonly Parser $reader; - private array $classCache = []; - private array $methodCache = []; - private array $classAndMethodCache = []; - - public function __construct(Parser $reader) - { - $this->reader = $reader; - } - - /** - * @psalm-param class-string $className - */ - public function forClass(string $className): MetadataCollection - { - assert(class_exists($className)); - - if (isset($this->classCache[$className])) { - return $this->classCache[$className]; - } - - $this->classCache[$className] = $this->reader->forClass($className); - - return $this->classCache[$className]; - } - - /** - * @psalm-param class-string $className - * @psalm-param non-empty-string $methodName - */ - public function forMethod(string $className, string $methodName): MetadataCollection - { - assert(class_exists($className)); - assert(method_exists($className, $methodName)); - - $key = $className . '::' . $methodName; - - if (isset($this->methodCache[$key])) { - return $this->methodCache[$key]; - } - - $this->methodCache[$key] = $this->reader->forMethod($className, $methodName); - - return $this->methodCache[$key]; - } - - /** - * @psalm-param class-string $className - * @psalm-param non-empty-string $methodName - */ - public function forClassAndMethod(string $className, string $methodName): MetadataCollection - { - $key = $className . '::' . $methodName; - - if (isset($this->classAndMethodCache[$key])) { - return $this->classAndMethodCache[$key]; - } - - $this->classAndMethodCache[$key] = $this->forClass($className)->mergeWith( - $this->forMethod($className, $methodName), - ); - - return $this->classAndMethodCache[$key]; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Parser/Parser.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Parser/Parser.php deleted file mode 100644 index 2af9191d..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Parser/Parser.php +++ /dev/null @@ -1,37 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata\Parser; - -use PHPUnit\Metadata\MetadataCollection; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -interface Parser -{ - /** - * @psalm-param class-string $className - */ - public function forClass(string $className): MetadataCollection; - - /** - * @psalm-param class-string $className - * @psalm-param non-empty-string $methodName - */ - public function forMethod(string $className, string $methodName): MetadataCollection; - - /** - * @psalm-param class-string $className - * @psalm-param non-empty-string $methodName - */ - public function forClassAndMethod(string $className, string $methodName): MetadataCollection; -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Parser/ParserChain.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Parser/ParserChain.php deleted file mode 100644 index 89d69dce..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Parser/ParserChain.php +++ /dev/null @@ -1,77 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata\Parser; - -use function assert; -use function class_exists; -use function method_exists; -use PHPUnit\Metadata\MetadataCollection; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ParserChain implements Parser -{ - private readonly Parser $attributeReader; - private readonly Parser $annotationReader; - - public function __construct(Parser $attributeReader, Parser $annotationReader) - { - $this->attributeReader = $attributeReader; - $this->annotationReader = $annotationReader; - } - - /** - * @psalm-param class-string $className - */ - public function forClass(string $className): MetadataCollection - { - assert(class_exists($className)); - - $metadata = $this->attributeReader->forClass($className); - - if (!$metadata->isEmpty()) { - return $metadata; - } - - return $this->annotationReader->forClass($className); - } - - /** - * @psalm-param class-string $className - * @psalm-param non-empty-string $methodName - */ - public function forMethod(string $className, string $methodName): MetadataCollection - { - assert(class_exists($className)); - assert(method_exists($className, $methodName)); - - $metadata = $this->attributeReader->forMethod($className, $methodName); - - if (!$metadata->isEmpty()) { - return $metadata; - } - - return $this->annotationReader->forMethod($className, $methodName); - } - - /** - * @psalm-param class-string $className - * @psalm-param non-empty-string $methodName - */ - public function forClassAndMethod(string $className, string $methodName): MetadataCollection - { - return $this->forClass($className)->mergeWith( - $this->forMethod($className, $methodName), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Parser/Registry.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Parser/Registry.php deleted file mode 100644 index a68ab014..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Metadata/Parser/Registry.php +++ /dev/null @@ -1,38 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata\Parser; - -/** - * Attribute and annotation information is static within a single PHP process. - * It is therefore okay to use a Singleton registry here. - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Registry -{ - private static ?Parser $instance = null; - - public static function parser(): Parser - { - return self::$instance ?? self::$instance = self::build(); - } - - private static function build(): Parser - { - return new CachingParser( - new ParserChain( - new AttributeParser, - new AnnotationParser, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Baseline.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Baseline.php deleted file mode 100644 index 3e386171..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Baseline.php +++ /dev/null @@ -1,61 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Baseline; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Baseline -{ - public const VERSION = 1; - - /** - * @psalm-var array>> - */ - private array $issues = []; - - public function add(Issue $issue): void - { - if (!isset($this->issues[$issue->file()])) { - $this->issues[$issue->file()] = []; - } - - if (!isset($this->issues[$issue->file()][$issue->line()])) { - $this->issues[$issue->file()][$issue->line()] = []; - } - - $this->issues[$issue->file()][$issue->line()][] = $issue; - } - - public function has(Issue $issue): bool - { - if (!isset($this->issues[$issue->file()][$issue->line()])) { - return false; - } - - foreach ($this->issues[$issue->file()][$issue->line()] as $_issue) { - if ($_issue->equals($issue)) { - return true; - } - } - - return false; - } - - /** - * @psalm-return array>> - */ - public function groupedByFileAndLine(): array - { - return $this->issues; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Exception/CannotLoadBaselineException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Exception/CannotLoadBaselineException.php deleted file mode 100644 index c5590136..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Exception/CannotLoadBaselineException.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Baseline; - -use PHPUnit\Runner\Exception; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class CannotLoadBaselineException extends RuntimeException implements Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Exception/FileDoesNotHaveLineException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Exception/FileDoesNotHaveLineException.php deleted file mode 100644 index 20c6ca03..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Exception/FileDoesNotHaveLineException.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Baseline; - -use function sprintf; -use PHPUnit\Runner\Exception; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class FileDoesNotHaveLineException extends RuntimeException implements Exception -{ - public function __construct(string $file, int $line) - { - parent::__construct( - sprintf( - 'File "%s" does not have line %d', - $file, - $line, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Generator.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Generator.php deleted file mode 100644 index 97c89f0a..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Generator.php +++ /dev/null @@ -1,120 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Baseline; - -use PHPUnit\Event\EventFacadeIsSealedException; -use PHPUnit\Event\Facade; -use PHPUnit\Event\Test\DeprecationTriggered; -use PHPUnit\Event\Test\NoticeTriggered; -use PHPUnit\Event\Test\PhpDeprecationTriggered; -use PHPUnit\Event\Test\PhpNoticeTriggered; -use PHPUnit\Event\Test\PhpWarningTriggered; -use PHPUnit\Event\Test\WarningTriggered; -use PHPUnit\Event\UnknownSubscriberTypeException; -use PHPUnit\Runner\FileDoesNotExistException; -use PHPUnit\TextUI\Configuration\Source; -use PHPUnit\TextUI\Configuration\SourceFilter; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Generator -{ - private Baseline $baseline; - private readonly Source $source; - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - public function __construct(Facade $facade, Source $source) - { - $facade->registerSubscribers( - new TestTriggeredDeprecationSubscriber($this), - new TestTriggeredNoticeSubscriber($this), - new TestTriggeredPhpDeprecationSubscriber($this), - new TestTriggeredPhpNoticeSubscriber($this), - new TestTriggeredPhpWarningSubscriber($this), - new TestTriggeredWarningSubscriber($this), - ); - - $this->baseline = new Baseline; - $this->source = $source; - } - - public function baseline(): Baseline - { - return $this->baseline; - } - - /** - * @throws FileDoesNotExistException - * @throws FileDoesNotHaveLineException - */ - public function testTriggeredIssue(DeprecationTriggered|NoticeTriggered|PhpDeprecationTriggered|PhpNoticeTriggered|PhpWarningTriggered|WarningTriggered $event): void - { - if ($event->wasSuppressed() && !$this->isSuppressionIgnored($event)) { - return; - } - - if ($this->restrict($event) && !(new SourceFilter)->includes($this->source, $event->file())) { - return; - } - - $this->baseline->add( - Issue::from( - $event->file(), - $event->line(), - null, - $event->message(), - ), - ); - } - - private function restrict(DeprecationTriggered|NoticeTriggered|PhpDeprecationTriggered|PhpNoticeTriggered|PhpWarningTriggered|WarningTriggered $event): bool - { - if ($event instanceof WarningTriggered || $event instanceof PhpWarningTriggered) { - return $this->source->restrictWarnings(); - } - - if ($event instanceof NoticeTriggered || $event instanceof PhpNoticeTriggered) { - return $this->source->restrictNotices(); - } - - return $this->source->restrictDeprecations(); - } - - private function isSuppressionIgnored(DeprecationTriggered|NoticeTriggered|PhpDeprecationTriggered|PhpNoticeTriggered|PhpWarningTriggered|WarningTriggered $event): bool - { - if ($event instanceof WarningTriggered) { - return $this->source->ignoreSuppressionOfWarnings(); - } - - if ($event instanceof PhpWarningTriggered) { - return $this->source->ignoreSuppressionOfPhpWarnings(); - } - - if ($event instanceof PhpNoticeTriggered) { - return $this->source->ignoreSuppressionOfPhpNotices(); - } - - if ($event instanceof NoticeTriggered) { - return $this->source->ignoreSuppressionOfNotices(); - } - - if ($event instanceof PhpDeprecationTriggered) { - return $this->source->ignoreSuppressionOfPhpDeprecations(); - } - - return $this->source->ignoreSuppressionOfDeprecations(); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Issue.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Issue.php deleted file mode 100644 index 074a8f4e..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Issue.php +++ /dev/null @@ -1,147 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Baseline; - -use const FILE_IGNORE_NEW_LINES; -use function assert; -use function file; -use function is_file; -use function sha1; -use PHPUnit\Runner\FileDoesNotExistException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Issue -{ - /** - * @psalm-var non-empty-string - */ - private readonly string $file; - - /** - * @psalm-var positive-int - */ - private readonly int $line; - - /** - * @psalm-var non-empty-string - */ - private readonly string $hash; - - /** - * @psalm-var non-empty-string - */ - private readonly string $description; - - /** - * @psalm-param non-empty-string $file - * @psalm-param positive-int $line - * @psalm-param ?non-empty-string $hash - * @psalm-param non-empty-string $description - * - * @throws FileDoesNotExistException - * @throws FileDoesNotHaveLineException - */ - public static function from(string $file, int $line, ?string $hash, string $description): self - { - if ($hash === null) { - $hash = self::calculateHash($file, $line); - } - - return new self($file, $line, $hash, $description); - } - - /** - * @psalm-param non-empty-string $file - * @psalm-param positive-int $line - * @psalm-param non-empty-string $hash - * @psalm-param non-empty-string $description - */ - private function __construct(string $file, int $line, string $hash, string $description) - { - $this->file = $file; - $this->line = $line; - $this->hash = $hash; - $this->description = $description; - } - - /** - * @psalm-return non-empty-string - */ - public function file(): string - { - return $this->file; - } - - /** - * @psalm-return positive-int - */ - public function line(): int - { - return $this->line; - } - - /** - * @psalm-return non-empty-string - */ - public function hash(): string - { - return $this->hash; - } - - /** - * @psalm-return non-empty-string - */ - public function description(): string - { - return $this->description; - } - - public function equals(self $other): bool - { - return $this->file() === $other->file() && - $this->line() === $other->line() && - $this->hash() === $other->hash() && - $this->description() === $other->description(); - } - - /** - * @psalm-param non-empty-string $file - * @psalm-param positive-int $line - * - * @psalm-return non-empty-string - * - * @throws FileDoesNotExistException - * @throws FileDoesNotHaveLineException - */ - private static function calculateHash(string $file, int $line): string - { - $lines = @file($file, FILE_IGNORE_NEW_LINES); - - if ($lines === false && !is_file($file)) { - throw new FileDoesNotExistException($file); - } - - $key = $line - 1; - - if (!isset($lines[$key])) { - throw new FileDoesNotHaveLineException($file, $line); - } - - $hash = sha1($lines[$key]); - - assert($hash !== ''); - - return $hash; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Reader.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Reader.php deleted file mode 100644 index 09529b4d..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Reader.php +++ /dev/null @@ -1,102 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Baseline; - -use const DIRECTORY_SEPARATOR; -use function assert; -use function dirname; -use function is_file; -use function realpath; -use function sprintf; -use function str_replace; -use function trim; -use DOMElement; -use DOMXPath; -use PHPUnit\Util\Xml\Loader as XmlLoader; -use PHPUnit\Util\Xml\XmlException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Reader -{ - /** - * @psalm-param non-empty-string $baselineFile - * - * @throws CannotLoadBaselineException - */ - public function read(string $baselineFile): Baseline - { - if (!is_file($baselineFile)) { - throw new CannotLoadBaselineException( - sprintf( - 'Cannot read baseline %s, file does not exist', - $baselineFile, - ), - ); - } - - try { - $document = (new XmlLoader)->loadFile($baselineFile); - } catch (XmlException $e) { - throw new CannotLoadBaselineException( - sprintf( - 'Cannot read baseline: %s', - trim($e->getMessage()), - ), - ); - } - - $version = (int) $document->documentElement->getAttribute('version'); - - if ($version !== Baseline::VERSION) { - throw new CannotLoadBaselineException( - sprintf( - 'Cannot read baseline %s, version %d is not supported', - $baselineFile, - $version, - ), - ); - } - - $baseline = new Baseline; - $baselineDirectory = dirname(realpath($baselineFile)); - $xpath = new DOMXPath($document); - - foreach ($xpath->query('file') as $fileElement) { - assert($fileElement instanceof DOMElement); - - $file = $baselineDirectory . DIRECTORY_SEPARATOR . str_replace('/', DIRECTORY_SEPARATOR, $fileElement->getAttribute('path')); - - foreach ($xpath->query('line', $fileElement) as $lineElement) { - assert($lineElement instanceof DOMElement); - - $line = (int) $lineElement->getAttribute('number'); - $hash = $lineElement->getAttribute('hash'); - - foreach ($xpath->query('issue', $lineElement) as $issueElement) { - assert($issueElement instanceof DOMElement); - - $description = $issueElement->textContent; - - assert($line > 0); - assert(!empty($hash)); - assert(!empty($description)); - - $baseline->add(Issue::from($file, $line, $hash, $description)); - } - } - } - - return $baseline; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/RelativePathCalculator.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/RelativePathCalculator.php deleted file mode 100644 index 5172d617..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/RelativePathCalculator.php +++ /dev/null @@ -1,105 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Baseline; - -use function array_fill; -use function array_merge; -use function array_slice; -use function assert; -use function count; -use function explode; -use function implode; -use function str_replace; -use function strpos; -use function substr; -use function trim; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @see Copied from https://github.com/phpstan/phpstan-src/blob/1.10.33/src/File/ParentDirectoryRelativePathHelper.php - */ -final class RelativePathCalculator -{ - /** - * @psalm-var non-empty-string $baselineDirectory - */ - private readonly string $baselineDirectory; - - /** - * @psalm-param non-empty-string $baselineDirectory - */ - public function __construct(string $baselineDirectory) - { - $this->baselineDirectory = $baselineDirectory; - } - - /** - * @psalm-param non-empty-string $filename - * - * @psalm-return non-empty-string - */ - public function calculate(string $filename): string - { - $result = implode('/', $this->parts($filename)); - - assert($result !== ''); - - return $result; - } - - /** - * @psalm-param non-empty-string $filename - * - * @psalm-return list - */ - public function parts(string $filename): array - { - $schemePosition = strpos($filename, '://'); - - if ($schemePosition !== false) { - $filename = substr($filename, $schemePosition + 3); - - assert($filename !== ''); - } - - $parentParts = explode('/', trim(str_replace('\\', '/', $this->baselineDirectory), '/')); - $parentPartsCount = count($parentParts); - $filenameParts = explode('/', trim(str_replace('\\', '/', $filename), '/')); - $filenamePartsCount = count($filenameParts); - - $i = 0; - - for (; $i < $filenamePartsCount; $i++) { - if ($parentPartsCount < $i + 1) { - break; - } - - $parentPath = implode('/', array_slice($parentParts, 0, $i + 1)); - $filenamePath = implode('/', array_slice($filenameParts, 0, $i + 1)); - - if ($parentPath !== $filenamePath) { - break; - } - } - - if ($i === 0) { - return [$filename]; - } - - $dotsCount = $parentPartsCount - $i; - - assert($dotsCount >= 0); - - return array_merge(array_fill(0, $dotsCount, '..'), array_slice($filenameParts, $i)); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/Subscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/Subscriber.php deleted file mode 100644 index 5007bfc8..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/Subscriber.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Baseline; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -abstract class Subscriber -{ - private readonly Generator $generator; - - public function __construct(Generator $generator) - { - $this->generator = $generator; - } - - protected function generator(): Generator - { - return $this->generator; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredDeprecationSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredDeprecationSubscriber.php deleted file mode 100644 index 62c8ed16..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredDeprecationSubscriber.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Baseline; - -use PHPUnit\Event\Test\DeprecationTriggered; -use PHPUnit\Event\Test\DeprecationTriggeredSubscriber; -use PHPUnit\Runner\FileDoesNotExistException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredDeprecationSubscriber extends Subscriber implements DeprecationTriggeredSubscriber -{ - /** - * @throws FileDoesNotExistException - * @throws FileDoesNotHaveLineException - */ - public function notify(DeprecationTriggered $event): void - { - $this->generator()->testTriggeredIssue($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredNoticeSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredNoticeSubscriber.php deleted file mode 100644 index 9eec35ff..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredNoticeSubscriber.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Baseline; - -use PHPUnit\Event\Test\NoticeTriggered; -use PHPUnit\Event\Test\NoticeTriggeredSubscriber; -use PHPUnit\Runner\FileDoesNotExistException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredNoticeSubscriber extends Subscriber implements NoticeTriggeredSubscriber -{ - /** - * @throws FileDoesNotExistException - * @throws FileDoesNotHaveLineException - */ - public function notify(NoticeTriggered $event): void - { - $this->generator()->testTriggeredIssue($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpDeprecationSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpDeprecationSubscriber.php deleted file mode 100644 index 43ae6445..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpDeprecationSubscriber.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Baseline; - -use PHPUnit\Event\Test\PhpDeprecationTriggered; -use PHPUnit\Event\Test\PhpDeprecationTriggeredSubscriber; -use PHPUnit\Runner\FileDoesNotExistException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredPhpDeprecationSubscriber extends Subscriber implements PhpDeprecationTriggeredSubscriber -{ - /** - * @throws FileDoesNotExistException - * @throws FileDoesNotHaveLineException - */ - public function notify(PhpDeprecationTriggered $event): void - { - $this->generator()->testTriggeredIssue($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpNoticeSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpNoticeSubscriber.php deleted file mode 100644 index d3e9625d..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpNoticeSubscriber.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Baseline; - -use PHPUnit\Event\Test\PhpNoticeTriggered; -use PHPUnit\Event\Test\PhpNoticeTriggeredSubscriber; -use PHPUnit\Runner\FileDoesNotExistException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredPhpNoticeSubscriber extends Subscriber implements PhpNoticeTriggeredSubscriber -{ - /** - * @throws FileDoesNotExistException - * @throws FileDoesNotHaveLineException - */ - public function notify(PhpNoticeTriggered $event): void - { - $this->generator()->testTriggeredIssue($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpWarningSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpWarningSubscriber.php deleted file mode 100644 index 00bd4b5e..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpWarningSubscriber.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Baseline; - -use PHPUnit\Event\Test\PhpWarningTriggered; -use PHPUnit\Event\Test\PhpWarningTriggeredSubscriber; -use PHPUnit\Runner\FileDoesNotExistException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredPhpWarningSubscriber extends Subscriber implements PhpWarningTriggeredSubscriber -{ - /** - * @throws FileDoesNotExistException - * @throws FileDoesNotHaveLineException - */ - public function notify(PhpWarningTriggered $event): void - { - $this->generator()->testTriggeredIssue($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredWarningSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredWarningSubscriber.php deleted file mode 100644 index ed21fe86..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredWarningSubscriber.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Baseline; - -use PHPUnit\Event\Test\WarningTriggered; -use PHPUnit\Event\Test\WarningTriggeredSubscriber; -use PHPUnit\Runner\FileDoesNotExistException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredWarningSubscriber extends Subscriber implements WarningTriggeredSubscriber -{ - /** - * @throws FileDoesNotExistException - * @throws FileDoesNotHaveLineException - */ - public function notify(WarningTriggered $event): void - { - $this->generator()->testTriggeredIssue($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Writer.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Writer.php deleted file mode 100644 index 87032697..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Baseline/Writer.php +++ /dev/null @@ -1,67 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Baseline; - -use function assert; -use function dirname; -use function file_put_contents; -use XMLWriter; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Writer -{ - /** - * @psalm-param non-empty-string $baselineFile - */ - public function write(string $baselineFile, Baseline $baseline): void - { - $pathCalculator = new RelativePathCalculator(dirname($baselineFile)); - - $writer = new XMLWriter; - - $writer->openMemory(); - $writer->setIndent(true); - $writer->startDocument(); - - $writer->startElement('files'); - $writer->writeAttribute('version', (string) Baseline::VERSION); - - foreach ($baseline->groupedByFileAndLine() as $file => $lines) { - assert(!empty($file)); - - $writer->startElement('file'); - $writer->writeAttribute('path', $pathCalculator->calculate($file)); - - foreach ($lines as $line => $issues) { - $writer->startElement('line'); - $writer->writeAttribute('number', (string) $line); - $writer->writeAttribute('hash', $issues[0]->hash()); - - foreach ($issues as $issue) { - $writer->startElement('issue'); - $writer->writeCData($issue->description()); - $writer->endElement(); - } - - $writer->endElement(); - } - - $writer->endElement(); - } - - $writer->endElement(); - - file_put_contents($baselineFile, $writer->outputMemory()); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/CodeCoverage.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/CodeCoverage.php deleted file mode 100644 index 0fd420ae..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/CodeCoverage.php +++ /dev/null @@ -1,426 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use function file_put_contents; -use function sprintf; -use PHPUnit\Event\Facade as EventFacade; -use PHPUnit\Event\TestData\MoreThanOneDataSetFromDataProviderException; -use PHPUnit\Framework\TestCase; -use PHPUnit\TextUI\Configuration\CodeCoverageFilterRegistry; -use PHPUnit\TextUI\Configuration\Configuration; -use PHPUnit\TextUI\Output\Printer; -use SebastianBergmann\CodeCoverage\Driver\Driver; -use SebastianBergmann\CodeCoverage\Driver\Selector; -use SebastianBergmann\CodeCoverage\Exception as CodeCoverageException; -use SebastianBergmann\CodeCoverage\Filter; -use SebastianBergmann\CodeCoverage\Report\Clover as CloverReport; -use SebastianBergmann\CodeCoverage\Report\Cobertura as CoberturaReport; -use SebastianBergmann\CodeCoverage\Report\Crap4j as Crap4jReport; -use SebastianBergmann\CodeCoverage\Report\Html\Colors; -use SebastianBergmann\CodeCoverage\Report\Html\CustomCssFile; -use SebastianBergmann\CodeCoverage\Report\Html\Facade as HtmlReport; -use SebastianBergmann\CodeCoverage\Report\PHP as PhpReport; -use SebastianBergmann\CodeCoverage\Report\Text as TextReport; -use SebastianBergmann\CodeCoverage\Report\Thresholds; -use SebastianBergmann\CodeCoverage\Report\Xml\Facade as XmlReport; -use SebastianBergmann\CodeCoverage\Test\TestSize\TestSize; -use SebastianBergmann\CodeCoverage\Test\TestStatus\TestStatus; -use SebastianBergmann\Comparator\Comparator; -use SebastianBergmann\Timer\NoActiveTimerException; -use SebastianBergmann\Timer\Timer; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @codeCoverageIgnore - */ -final class CodeCoverage -{ - private static ?self $instance = null; - private ?\SebastianBergmann\CodeCoverage\CodeCoverage $codeCoverage = null; - private ?Driver $driver = null; - private bool $collecting = false; - private ?TestCase $test = null; - private ?Timer $timer = null; - - /** - * @psalm-var array> - */ - private array $linesToBeIgnored = []; - - public static function instance(): self - { - if (self::$instance === null) { - self::$instance = new self; - } - - return self::$instance; - } - - public function init(Configuration $configuration, CodeCoverageFilterRegistry $codeCoverageFilterRegistry, bool $extensionRequiresCodeCoverageCollection): void - { - $codeCoverageFilterRegistry->init($configuration); - - if (!$configuration->hasCoverageReport() && !$extensionRequiresCodeCoverageCollection) { - return; - } - - $this->activate($codeCoverageFilterRegistry->get(), $configuration->pathCoverage()); - - if (!$this->isActive()) { - return; - } - - if ($configuration->hasCoverageCacheDirectory()) { - $this->codeCoverage()->cacheStaticAnalysis($configuration->coverageCacheDirectory()); - } - - $this->codeCoverage()->excludeSubclassesOfThisClassFromUnintentionallyCoveredCodeCheck(Comparator::class); - - if ($configuration->strictCoverage()) { - $this->codeCoverage()->enableCheckForUnintentionallyCoveredCode(); - } - - if ($configuration->ignoreDeprecatedCodeUnitsFromCodeCoverage()) { - $this->codeCoverage()->ignoreDeprecatedCode(); - } else { - $this->codeCoverage()->doNotIgnoreDeprecatedCode(); - } - - if ($configuration->disableCodeCoverageIgnore()) { - $this->codeCoverage()->disableAnnotationsForIgnoringCode(); - } else { - $this->codeCoverage()->enableAnnotationsForIgnoringCode(); - } - - if ($configuration->includeUncoveredFiles()) { - $this->codeCoverage()->includeUncoveredFiles(); - } else { - $this->codeCoverage()->excludeUncoveredFiles(); - } - - if ($codeCoverageFilterRegistry->get()->isEmpty()) { - if (!$codeCoverageFilterRegistry->configured()) { - EventFacade::emitter()->testRunnerTriggeredWarning( - 'No filter is configured, code coverage will not be processed', - ); - } else { - EventFacade::emitter()->testRunnerTriggeredWarning( - 'Incorrect filter configuration, code coverage will not be processed', - ); - } - - $this->deactivate(); - } - } - - /** - * @psalm-assert-if-true !null $this->instance - */ - public function isActive(): bool - { - return $this->codeCoverage !== null; - } - - public function codeCoverage(): \SebastianBergmann\CodeCoverage\CodeCoverage - { - return $this->codeCoverage; - } - - public function driver(): Driver - { - return $this->driver; - } - - /** - * @throws MoreThanOneDataSetFromDataProviderException - */ - public function start(TestCase $test): void - { - if ($this->collecting) { - return; - } - - $size = TestSize::unknown(); - - if ($test->size()->isSmall()) { - $size = TestSize::small(); - } elseif ($test->size()->isMedium()) { - $size = TestSize::medium(); - } elseif ($test->size()->isLarge()) { - $size = TestSize::large(); - } - - $this->test = $test; - - $this->codeCoverage->start( - $test->valueObjectForEvents()->id(), - $size, - ); - - $this->collecting = true; - } - - public function stop(bool $append, array|false $linesToBeCovered = [], array $linesToBeUsed = []): void - { - if (!$this->collecting) { - return; - } - - $status = TestStatus::unknown(); - - if ($this->test !== null) { - if ($this->test->status()->isSuccess()) { - $status = TestStatus::success(); - } else { - $status = TestStatus::failure(); - } - } - - /* @noinspection UnusedFunctionResultInspection */ - $this->codeCoverage->stop($append, $status, $linesToBeCovered, $linesToBeUsed, $this->linesToBeIgnored); - - $this->test = null; - $this->collecting = false; - } - - public function deactivate(): void - { - $this->driver = null; - $this->codeCoverage = null; - $this->test = null; - } - - public function generateReports(Printer $printer, Configuration $configuration): void - { - if (!$this->isActive()) { - return; - } - - if ($configuration->hasCoveragePhp()) { - $this->codeCoverageGenerationStart($printer, 'PHP'); - - try { - $writer = new PhpReport; - $writer->process($this->codeCoverage(), $configuration->coveragePhp()); - - $this->codeCoverageGenerationSucceeded($printer); - - unset($writer); - } catch (CodeCoverageException $e) { - $this->codeCoverageGenerationFailed($printer, $e); - } - } - - if ($configuration->hasCoverageClover()) { - $this->codeCoverageGenerationStart($printer, 'Clover XML'); - - try { - $writer = new CloverReport; - $writer->process($this->codeCoverage(), $configuration->coverageClover()); - - $this->codeCoverageGenerationSucceeded($printer); - - unset($writer); - } catch (CodeCoverageException $e) { - $this->codeCoverageGenerationFailed($printer, $e); - } - } - - if ($configuration->hasCoverageCobertura()) { - $this->codeCoverageGenerationStart($printer, 'Cobertura XML'); - - try { - $writer = new CoberturaReport; - $writer->process($this->codeCoverage(), $configuration->coverageCobertura()); - - $this->codeCoverageGenerationSucceeded($printer); - - unset($writer); - } catch (CodeCoverageException $e) { - $this->codeCoverageGenerationFailed($printer, $e); - } - } - - if ($configuration->hasCoverageCrap4j()) { - $this->codeCoverageGenerationStart($printer, 'Crap4J XML'); - - try { - $writer = new Crap4jReport($configuration->coverageCrap4jThreshold()); - $writer->process($this->codeCoverage(), $configuration->coverageCrap4j()); - - $this->codeCoverageGenerationSucceeded($printer); - - unset($writer); - } catch (CodeCoverageException $e) { - $this->codeCoverageGenerationFailed($printer, $e); - } - } - - if ($configuration->hasCoverageHtml()) { - $this->codeCoverageGenerationStart($printer, 'HTML'); - - try { - $customCssFile = CustomCssFile::default(); - - if ($configuration->hasCoverageHtmlCustomCssFile()) { - $customCssFile = CustomCssFile::from($configuration->coverageHtmlCustomCssFile()); - } - - $writer = new HtmlReport( - sprintf( - ' and PHPUnit %s', - Version::id(), - ), - Colors::from( - $configuration->coverageHtmlColorSuccessLow(), - $configuration->coverageHtmlColorSuccessMedium(), - $configuration->coverageHtmlColorSuccessHigh(), - $configuration->coverageHtmlColorWarning(), - $configuration->coverageHtmlColorDanger(), - ), - Thresholds::from( - $configuration->coverageHtmlLowUpperBound(), - $configuration->coverageHtmlHighLowerBound(), - ), - $customCssFile, - ); - - $writer->process($this->codeCoverage(), $configuration->coverageHtml()); - - $this->codeCoverageGenerationSucceeded($printer); - - unset($writer); - } catch (CodeCoverageException $e) { - $this->codeCoverageGenerationFailed($printer, $e); - } - } - - if ($configuration->hasCoverageText()) { - $processor = new TextReport( - Thresholds::default(), - $configuration->coverageTextShowUncoveredFiles(), - $configuration->coverageTextShowOnlySummary(), - ); - - $textReport = $processor->process($this->codeCoverage(), $configuration->colors()); - - if ($configuration->coverageText() === 'php://stdout') { - if (!$configuration->noOutput() && !$configuration->debug()) { - $printer->print($textReport); - } - } else { - file_put_contents($configuration->coverageText(), $textReport); - } - } - - if ($configuration->hasCoverageXml()) { - $this->codeCoverageGenerationStart($printer, 'PHPUnit XML'); - - try { - $writer = new XmlReport(Version::id()); - $writer->process($this->codeCoverage(), $configuration->coverageXml()); - - $this->codeCoverageGenerationSucceeded($printer); - - unset($writer); - } catch (CodeCoverageException $e) { - $this->codeCoverageGenerationFailed($printer, $e); - } - } - } - - /** - * @psalm-param array> $linesToBeIgnored - */ - public function ignoreLines(array $linesToBeIgnored): void - { - $this->linesToBeIgnored = $linesToBeIgnored; - } - - /** - * @psalm-return array> - */ - public function linesToBeIgnored(): array - { - return $this->linesToBeIgnored; - } - - private function activate(Filter $filter, bool $pathCoverage): void - { - try { - if ($pathCoverage) { - $this->driver = (new Selector)->forLineAndPathCoverage($filter); - } else { - $this->driver = (new Selector)->forLineCoverage($filter); - } - - $this->codeCoverage = new \SebastianBergmann\CodeCoverage\CodeCoverage( - $this->driver, - $filter, - ); - } catch (CodeCoverageException $e) { - EventFacade::emitter()->testRunnerTriggeredWarning( - $e->getMessage(), - ); - } - } - - private function codeCoverageGenerationStart(Printer $printer, string $format): void - { - $printer->print( - sprintf( - "\nGenerating code coverage report in %s format ... ", - $format, - ), - ); - - $this->timer()->start(); - } - - /** - * @throws NoActiveTimerException - */ - private function codeCoverageGenerationSucceeded(Printer $printer): void - { - $printer->print( - sprintf( - "done [%s]\n", - $this->timer()->stop()->asString(), - ), - ); - } - - /** - * @throws NoActiveTimerException - */ - private function codeCoverageGenerationFailed(Printer $printer, CodeCoverageException $e): void - { - $printer->print( - sprintf( - "failed [%s]\n%s\n", - $this->timer()->stop()->asString(), - $e->getMessage(), - ), - ); - } - - private function timer(): Timer - { - if ($this->timer === null) { - $this->timer = new Timer; - } - - return $this->timer; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ErrorHandler.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ErrorHandler.php deleted file mode 100644 index f3357f3d..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ErrorHandler.php +++ /dev/null @@ -1,226 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use const E_COMPILE_ERROR; -use const E_COMPILE_WARNING; -use const E_CORE_ERROR; -use const E_CORE_WARNING; -use const E_DEPRECATED; -use const E_ERROR; -use const E_NOTICE; -use const E_PARSE; -use const E_RECOVERABLE_ERROR; -use const E_STRICT; -use const E_USER_DEPRECATED; -use const E_USER_ERROR; -use const E_USER_NOTICE; -use const E_USER_WARNING; -use const E_WARNING; -use function defined; -use function error_reporting; -use function restore_error_handler; -use function set_error_handler; -use PHPUnit\Event; -use PHPUnit\Event\Code\NoTestCaseObjectOnCallStackException; -use PHPUnit\Runner\Baseline\Baseline; -use PHPUnit\Runner\Baseline\Issue; -use PHPUnit\Util\ExcludeList; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ErrorHandler -{ - private const UNHANDLEABLE_LEVELS = E_ERROR | E_PARSE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING; - private const INSUPPRESSIBLE_LEVELS = E_ERROR | E_PARSE | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR; - private static ?self $instance = null; - private ?Baseline $baseline = null; - private bool $enabled = false; - private ?int $originalErrorReportingLevel = null; - - public static function instance(): self - { - return self::$instance ?? self::$instance = new self; - } - - /** - * @throws NoTestCaseObjectOnCallStackException - */ - public function __invoke(int $errorNumber, string $errorString, string $errorFile, int $errorLine): bool - { - $suppressed = (error_reporting() & ~self::INSUPPRESSIBLE_LEVELS) === 0; - - if ($suppressed && (new ExcludeList)->isExcluded($errorFile)) { - return false; - } - - /** - * E_STRICT is deprecated since PHP 8.4. - * - * @see https://github.com/sebastianbergmann/phpunit/issues/5956 - */ - if (defined('E_STRICT') && $errorNumber === @E_STRICT) { - $errorNumber = E_NOTICE; - } - - $test = Event\Code\TestMethodBuilder::fromCallStack(); - - $ignoredByBaseline = $this->ignoredByBaseline($errorFile, $errorLine, $errorString); - $ignoredByTest = $test->metadata()->isIgnoreDeprecations()->isNotEmpty(); - - switch ($errorNumber) { - case E_NOTICE: - Event\Facade::emitter()->testTriggeredPhpNotice( - $test, - $errorString, - $errorFile, - $errorLine, - $suppressed, - $ignoredByBaseline, - ); - - break; - - case E_USER_NOTICE: - Event\Facade::emitter()->testTriggeredNotice( - $test, - $errorString, - $errorFile, - $errorLine, - $suppressed, - $ignoredByBaseline, - ); - - break; - - case E_WARNING: - Event\Facade::emitter()->testTriggeredPhpWarning( - $test, - $errorString, - $errorFile, - $errorLine, - $suppressed, - $ignoredByBaseline, - ); - - break; - - case E_USER_WARNING: - Event\Facade::emitter()->testTriggeredWarning( - $test, - $errorString, - $errorFile, - $errorLine, - $suppressed, - $ignoredByBaseline, - ); - - break; - - case E_DEPRECATED: - Event\Facade::emitter()->testTriggeredPhpDeprecation( - $test, - $errorString, - $errorFile, - $errorLine, - $suppressed, - $ignoredByBaseline, - $ignoredByTest, - ); - - break; - - case E_USER_DEPRECATED: - Event\Facade::emitter()->testTriggeredDeprecation( - $test, - $errorString, - $errorFile, - $errorLine, - $suppressed, - $ignoredByBaseline, - $ignoredByTest, - ); - - break; - - case E_USER_ERROR: - Event\Facade::emitter()->testTriggeredError( - $test, - $errorString, - $errorFile, - $errorLine, - $suppressed, - ); - - throw new ErrorException('E_USER_ERROR was triggered'); - - default: - return false; - } - - return false; - } - - public function enable(): void - { - if ($this->enabled) { - return; - } - - $oldErrorHandler = set_error_handler($this); - - if ($oldErrorHandler !== null) { - restore_error_handler(); - - return; - } - - $this->enabled = true; - $this->originalErrorReportingLevel = error_reporting(); - - error_reporting($this->originalErrorReportingLevel & self::UNHANDLEABLE_LEVELS); - } - - public function disable(): void - { - if (!$this->enabled) { - return; - } - - restore_error_handler(); - - error_reporting(error_reporting() | $this->originalErrorReportingLevel); - - $this->enabled = false; - $this->originalErrorReportingLevel = null; - } - - public function use(Baseline $baseline): void - { - $this->baseline = $baseline; - } - - /** - * @psalm-param non-empty-string $file - * @psalm-param positive-int $line - * @psalm-param non-empty-string $description - */ - private function ignoredByBaseline(string $file, int $line, string $description): bool - { - if ($this->baseline === null) { - return false; - } - - return $this->baseline->has(Issue::from($file, $line, null, $description)); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Exception/ClassCannotBeFoundException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Exception/ClassCannotBeFoundException.php deleted file mode 100644 index 701cbb5b..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Exception/ClassCannotBeFoundException.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use function sprintf; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ClassCannotBeFoundException extends RuntimeException implements Exception -{ - public function __construct(string $className, string $file) - { - parent::__construct( - sprintf( - 'Class %s cannot be found in %s', - $className, - $file, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Exception/ClassDoesNotExtendTestCaseException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Exception/ClassDoesNotExtendTestCaseException.php deleted file mode 100644 index c9d5474e..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Exception/ClassDoesNotExtendTestCaseException.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use function sprintf; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ClassDoesNotExtendTestCaseException extends RuntimeException implements Exception -{ - public function __construct(string $className, string $file) - { - parent::__construct( - sprintf( - 'Class %s declared in %s does not extend PHPUnit\Framework\TestCase', - $className, - $file, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Exception/ClassIsAbstractException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Exception/ClassIsAbstractException.php deleted file mode 100644 index bf947589..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Exception/ClassIsAbstractException.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use function sprintf; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ClassIsAbstractException extends RuntimeException implements Exception -{ - public function __construct(string $className, string $file) - { - parent::__construct( - sprintf( - 'Class %s declared in %s is abstract', - $className, - $file, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Exception/ErrorException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Exception/ErrorException.php deleted file mode 100644 index 954684e9..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Exception/ErrorException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use Error; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ErrorException extends Error implements Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Exception/Exception.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Exception/Exception.php deleted file mode 100644 index ea0cf424..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Exception/Exception.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -interface Exception extends \PHPUnit\Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Exception/FileDoesNotExistException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Exception/FileDoesNotExistException.php deleted file mode 100644 index 5b84c785..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Exception/FileDoesNotExistException.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use function sprintf; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class FileDoesNotExistException extends RuntimeException implements Exception -{ - public function __construct(string $file) - { - parent::__construct( - sprintf( - 'File "%s" does not exist', - $file, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Exception/InvalidOrderException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Exception/InvalidOrderException.php deleted file mode 100644 index 016ec85e..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Exception/InvalidOrderException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class InvalidOrderException extends RuntimeException implements Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Exception/InvalidPhptFileException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Exception/InvalidPhptFileException.php deleted file mode 100644 index d1f593b8..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Exception/InvalidPhptFileException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class InvalidPhptFileException extends RuntimeException implements Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Exception/ParameterDoesNotExistException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Exception/ParameterDoesNotExistException.php deleted file mode 100644 index 5d7a0967..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Exception/ParameterDoesNotExistException.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use function sprintf; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ParameterDoesNotExistException extends RuntimeException implements Exception -{ - public function __construct(string $name) - { - parent::__construct( - sprintf( - 'Parameter "%s" does not exist', - $name, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Exception/PhptExternalFileCannotBeLoadedException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Exception/PhptExternalFileCannotBeLoadedException.php deleted file mode 100644 index 33977155..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Exception/PhptExternalFileCannotBeLoadedException.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use function sprintf; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class PhptExternalFileCannotBeLoadedException extends RuntimeException implements Exception -{ - public function __construct(string $section, string $file) - { - parent::__construct( - sprintf( - 'Could not load --%s-- %s for PHPT file', - $section . '_EXTERNAL', - $file, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Exception/UnsupportedPhptSectionException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Exception/UnsupportedPhptSectionException.php deleted file mode 100644 index ca8647e6..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Exception/UnsupportedPhptSectionException.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use function sprintf; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class UnsupportedPhptSectionException extends RuntimeException implements Exception -{ - public function __construct(string $section) - { - parent::__construct( - sprintf( - 'PHPUnit does not support PHPT %s sections', - $section, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Extension/ExtensionBootstrapper.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Extension/ExtensionBootstrapper.php deleted file mode 100644 index 4a7b5fa7..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Extension/ExtensionBootstrapper.php +++ /dev/null @@ -1,97 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Extension; - -use const PHP_EOL; -use function assert; -use function class_exists; -use function class_implements; -use function in_array; -use function sprintf; -use PHPUnit\Event\Facade as EventFacade; -use PHPUnit\TextUI\Configuration\Configuration; -use ReflectionClass; -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ExtensionBootstrapper -{ - private readonly Configuration $configuration; - private readonly Facade $facade; - - public function __construct(Configuration $configuration, Facade $facade) - { - $this->configuration = $configuration; - $this->facade = $facade; - } - - /** - * @psalm-param class-string $className - * @psalm-param array $parameters - */ - public function bootstrap(string $className, array $parameters): void - { - if (!class_exists($className)) { - EventFacade::emitter()->testRunnerTriggeredWarning( - sprintf( - 'Cannot bootstrap extension because class %s does not exist', - $className, - ), - ); - - return; - } - - if (!in_array(Extension::class, class_implements($className), true)) { - EventFacade::emitter()->testRunnerTriggeredWarning( - sprintf( - 'Cannot bootstrap extension because class %s does not implement interface %s', - $className, - Extension::class, - ), - ); - - return; - } - - try { - $instance = (new ReflectionClass($className))->newInstance(); - - assert($instance instanceof Extension); - - $instance->bootstrap( - $this->configuration, - $this->facade, - ParameterCollection::fromArray($parameters), - ); - } catch (Throwable $t) { - EventFacade::emitter()->testRunnerTriggeredWarning( - sprintf( - 'Bootstrapping of extension %s failed: %s%s%s', - $className, - $t->getMessage(), - PHP_EOL, - $t->getTraceAsString(), - ), - ); - - return; - } - - EventFacade::emitter()->testRunnerBootstrappedExtension( - $className, - $parameters, - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Extension/PharLoader.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Extension/PharLoader.php deleted file mode 100644 index bf79712e..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Extension/PharLoader.php +++ /dev/null @@ -1,150 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Extension; - -use function count; -use function explode; -use function extension_loaded; -use function implode; -use function is_file; -use function sprintf; -use function str_contains; -use PharIo\Manifest\ApplicationName; -use PharIo\Manifest\Exception as ManifestException; -use PharIo\Manifest\ManifestLoader; -use PharIo\Version\Version as PharIoVersion; -use PHPUnit\Event; -use PHPUnit\Runner\Version; -use SebastianBergmann\FileIterator\Facade as FileIteratorFacade; -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class PharLoader -{ - /** - * @psalm-param non-empty-string $directory - * - * @psalm-return list - */ - public function loadPharExtensionsInDirectory(string $directory): array - { - $pharExtensionLoaded = extension_loaded('phar'); - $loadedExtensions = []; - - foreach ((new FileIteratorFacade)->getFilesAsArray($directory, '.phar') as $file) { - if (!$pharExtensionLoaded) { - Event\Facade::emitter()->testRunnerTriggeredWarning( - sprintf( - 'Cannot load extension from %s because the PHAR extension is not available', - $file, - ), - ); - - continue; - } - - if (!is_file('phar://' . $file . '/manifest.xml')) { - Event\Facade::emitter()->testRunnerTriggeredWarning( - sprintf( - '%s is not an extension for PHPUnit', - $file, - ), - ); - - continue; - } - - try { - $applicationName = new ApplicationName('phpunit/phpunit'); - $version = new PharIoVersion($this->phpunitVersion()); - $manifest = ManifestLoader::fromFile('phar://' . $file . '/manifest.xml'); - - if (!$manifest->isExtensionFor($applicationName)) { - Event\Facade::emitter()->testRunnerTriggeredWarning( - sprintf( - '%s is not an extension for PHPUnit', - $file, - ), - ); - - continue; - } - - if (!$manifest->isExtensionFor($applicationName, $version)) { - Event\Facade::emitter()->testRunnerTriggeredWarning( - sprintf( - '%s is not compatible with PHPUnit %s', - $file, - Version::series(), - ), - ); - - continue; - } - } catch (ManifestException $e) { - Event\Facade::emitter()->testRunnerTriggeredWarning( - sprintf( - 'Cannot load extension from %s: %s', - $file, - $e->getMessage(), - ), - ); - - continue; - } - - try { - /** @psalm-suppress UnresolvableInclude */ - @require $file; - } catch (Throwable $t) { - Event\Facade::emitter()->testRunnerTriggeredWarning( - sprintf( - 'Cannot load extension from %s: %s', - $file, - $t->getMessage(), - ), - ); - - continue; - } - - $loadedExtensions[] = $manifest->getName()->asString() . ' ' . $manifest->getVersion()->getVersionString(); - - Event\Facade::emitter()->testRunnerLoadedExtensionFromPhar( - $file, - $manifest->getName()->asString(), - $manifest->getVersion()->getVersionString(), - ); - } - - return $loadedExtensions; - } - - private function phpunitVersion(): string - { - $version = Version::id(); - - if (!str_contains($version, '-')) { - return $version; - } - - $parts = explode('.', explode('-', $version)[0]); - - if (count($parts) === 2) { - $parts[] = 0; - } - - return implode('.', $parts); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php deleted file mode 100644 index 63a26b44..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php +++ /dev/null @@ -1,25 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Filter; - -use function in_array; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ExcludeGroupFilterIterator extends GroupFilterIterator -{ - protected function doAccept(int $id): bool - { - return !in_array($id, $this->groupTests, true); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Filter/Factory.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Filter/Factory.php deleted file mode 100644 index 4afa5d99..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Filter/Factory.php +++ /dev/null @@ -1,81 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Filter; - -use function assert; -use FilterIterator; -use Iterator; -use PHPUnit\Framework\TestSuite; -use ReflectionClass; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Factory -{ - /** - * @psalm-var array - */ - private array $filters = []; - - /** - * @psalm-param list $testIds - */ - public function addTestIdFilter(array $testIds): void - { - $this->filters[] = [ - new ReflectionClass(TestIdFilterIterator::class), $testIds, - ]; - } - - /** - * @psalm-param list $groups - */ - public function addExcludeGroupFilter(array $groups): void - { - $this->filters[] = [ - new ReflectionClass(ExcludeGroupFilterIterator::class), $groups, - ]; - } - - /** - * @psalm-param list $groups - */ - public function addIncludeGroupFilter(array $groups): void - { - $this->filters[] = [ - new ReflectionClass(IncludeGroupFilterIterator::class), $groups, - ]; - } - - /** - * @psalm-param non-empty-string $name - */ - public function addNameFilter(string $name): void - { - $this->filters[] = [ - new ReflectionClass(NameFilterIterator::class), $name, - ]; - } - - public function factory(Iterator $iterator, TestSuite $suite): FilterIterator - { - foreach ($this->filters as $filter) { - [$class, $arguments] = $filter; - $iterator = $class->newInstance($iterator, $arguments, $suite); - } - - assert($iterator instanceof FilterIterator); - - return $iterator; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php deleted file mode 100644 index f2114de9..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php +++ /dev/null @@ -1,65 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Filter; - -use function array_map; -use function array_push; -use function in_array; -use function spl_object_id; -use PHPUnit\Framework\Test; -use PHPUnit\Framework\TestSuite; -use RecursiveFilterIterator; -use RecursiveIterator; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -abstract class GroupFilterIterator extends RecursiveFilterIterator -{ - /** - * @psalm-var list - */ - protected array $groupTests = []; - - /** - * @psalm-param RecursiveIterator $iterator - * @psalm-param list $groups - */ - public function __construct(RecursiveIterator $iterator, array $groups, TestSuite $suite) - { - parent::__construct($iterator); - - foreach ($suite->groupDetails() as $group => $tests) { - if (in_array((string) $group, $groups, true)) { - $testHashes = array_map( - 'spl_object_id', - $tests, - ); - - array_push($this->groupTests, ...$testHashes); - } - } - } - - public function accept(): bool - { - $test = $this->getInnerIterator()->current(); - - if ($test instanceof TestSuite) { - return true; - } - - return $this->doAccept(spl_object_id($test)); - } - - abstract protected function doAccept(int $id): bool; -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php deleted file mode 100644 index 34b0652a..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php +++ /dev/null @@ -1,25 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Filter; - -use function in_array; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class IncludeGroupFilterIterator extends GroupFilterIterator -{ - protected function doAccept(int $id): bool - { - return in_array($id, $this->groupTests, true); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php deleted file mode 100644 index 5b0c63bb..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php +++ /dev/null @@ -1,142 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Filter; - -use function end; -use function implode; -use function preg_match; -use function sprintf; -use function str_replace; -use function substr; -use Exception; -use PHPUnit\Framework\SelfDescribing; -use PHPUnit\Framework\Test; -use PHPUnit\Framework\TestCase; -use PHPUnit\Framework\TestSuite; -use RecursiveFilterIterator; -use RecursiveIterator; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class NameFilterIterator extends RecursiveFilterIterator -{ - private ?string $filter = null; - private ?int $filterMin = null; - private ?int $filterMax = null; - - /** - * @psalm-param RecursiveIterator $iterator - * @psalm-param non-empty-string $filter - * - * @throws Exception - */ - public function __construct(RecursiveIterator $iterator, string $filter) - { - parent::__construct($iterator); - - $this->setFilter($filter); - } - - public function accept(): bool - { - $test = $this->getInnerIterator()->current(); - - if ($test instanceof TestSuite) { - return true; - } - - $tmp = $this->describe($test); - - if ($tmp[0] !== '') { - $name = implode('::', $tmp); - } else { - $name = $tmp[1]; - } - - $accepted = @preg_match($this->filter, $name, $matches); - - if ($accepted && isset($this->filterMax)) { - $set = end($matches); - $accepted = $set >= $this->filterMin && $set <= $this->filterMax; - } - - return (bool) $accepted; - } - - /** - * @throws Exception - */ - private function setFilter(string $filter): void - { - if (preg_match('/[a-zA-Z0-9]/', substr($filter, 0, 1)) === 1 || @preg_match($filter, '') === false) { - // Handles: - // * testAssertEqualsSucceeds#4 - // * testAssertEqualsSucceeds#4-8 - if (preg_match('/^(.*?)#(\d+)(?:-(\d+))?$/', $filter, $matches)) { - if (isset($matches[3]) && $matches[2] < $matches[3]) { - $filter = sprintf( - '%s.*with data set #(\d+)$', - $matches[1], - ); - - $this->filterMin = (int) $matches[2]; - $this->filterMax = (int) $matches[3]; - } else { - $filter = sprintf( - '%s.*with data set #%s$', - $matches[1], - $matches[2], - ); - } - } // Handles: - // * testDetermineJsonError@JSON_ERROR_NONE - // * testDetermineJsonError@JSON.* - elseif (preg_match('/^(.*?)@(.+)$/', $filter, $matches)) { - $filter = sprintf( - '%s.*with data set "%s"$', - $matches[1], - $matches[2], - ); - } - - // Escape delimiters in regular expression. Do NOT use preg_quote, - // to keep magic characters. - $filter = sprintf( - '/%s/i', - str_replace( - '/', - '\\/', - $filter, - ), - ); - } - - $this->filter = $filter; - } - - /** - * @psalm-return array{0: string, 1: string} - */ - private function describe(Test $test): array - { - if ($test instanceof TestCase) { - return [$test::class, $test->nameWithDataSet()]; - } - - if ($test instanceof SelfDescribing) { - return ['', $test->toString()]; - } - - return ['', $test::class]; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Filter/TestIdFilterIterator.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Filter/TestIdFilterIterator.php deleted file mode 100644 index 3c6c7738..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Filter/TestIdFilterIterator.php +++ /dev/null @@ -1,63 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Filter; - -use function in_array; -use PHPUnit\Event\TestData\MoreThanOneDataSetFromDataProviderException; -use PHPUnit\Event\TestData\NoDataSetFromDataProviderException; -use PHPUnit\Framework\Test; -use PHPUnit\Framework\TestCase; -use PHPUnit\Framework\TestSuite; -use PHPUnit\Runner\PhptTestCase; -use RecursiveFilterIterator; -use RecursiveIterator; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestIdFilterIterator extends RecursiveFilterIterator -{ - /** - * @psalm-var non-empty-list - */ - private readonly array $testIds; - - /** - * @psalm-param RecursiveIterator $iterator - * @psalm-param non-empty-list $testIds - */ - public function __construct(RecursiveIterator $iterator, array $testIds) - { - parent::__construct($iterator); - - $this->testIds = $testIds; - } - - public function accept(): bool - { - $test = $this->getInnerIterator()->current(); - - if ($test instanceof TestSuite) { - return true; - } - - if (!$test instanceof TestCase && !$test instanceof PhptTestCase) { - return false; - } - - try { - return in_array($test->valueObjectForEvents()->id(), $this->testIds, true); - } catch (MoreThanOneDataSetFromDataProviderException|NoDataSetFromDataProviderException) { - return false; - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/GarbageCollection/GarbageCollectionHandler.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/GarbageCollection/GarbageCollectionHandler.php deleted file mode 100644 index be460557..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/GarbageCollection/GarbageCollectionHandler.php +++ /dev/null @@ -1,89 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\GarbageCollection; - -use function gc_collect_cycles; -use function gc_disable; -use function gc_enable; -use PHPUnit\Event\EventFacadeIsSealedException; -use PHPUnit\Event\Facade; -use PHPUnit\Event\UnknownSubscriberTypeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class GarbageCollectionHandler -{ - private readonly Facade $facade; - private readonly int $threshold; - private int $tests = 0; - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - public function __construct(Facade $facade, int $threshold) - { - $this->facade = $facade; - $this->threshold = $threshold; - - $this->registerSubscribers(); - } - - public function executionStarted(): void - { - gc_disable(); - - $this->facade->emitter()->testRunnerDisabledGarbageCollection(); - - gc_collect_cycles(); - - $this->facade->emitter()->testRunnerTriggeredGarbageCollection(); - } - - public function executionFinished(): void - { - gc_collect_cycles(); - - $this->facade->emitter()->testRunnerTriggeredGarbageCollection(); - - gc_enable(); - - $this->facade->emitter()->testRunnerEnabledGarbageCollection(); - } - - public function testFinished(): void - { - $this->tests++; - - if ($this->tests === $this->threshold) { - gc_collect_cycles(); - - $this->facade->emitter()->testRunnerTriggeredGarbageCollection(); - - $this->tests = 0; - } - } - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - private function registerSubscribers(): void - { - $this->facade->registerSubscribers( - new ExecutionStartedSubscriber($this), - new ExecutionFinishedSubscriber($this), - new TestFinishedSubscriber($this), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/ExecutionFinishedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/ExecutionFinishedSubscriber.php deleted file mode 100644 index 7721d0d3..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/ExecutionFinishedSubscriber.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\GarbageCollection; - -use PHPUnit\Event\InvalidArgumentException; -use PHPUnit\Event\TestRunner\ExecutionFinished; -use PHPUnit\Event\TestRunner\ExecutionFinishedSubscriber as TestRunnerExecutionFinishedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ExecutionFinishedSubscriber extends Subscriber implements TestRunnerExecutionFinishedSubscriber -{ - /** - * @throws \PHPUnit\Framework\InvalidArgumentException - * @throws InvalidArgumentException - */ - public function notify(ExecutionFinished $event): void - { - $this->handler()->executionFinished(); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/ExecutionStartedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/ExecutionStartedSubscriber.php deleted file mode 100644 index 2cccb217..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/ExecutionStartedSubscriber.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\GarbageCollection; - -use PHPUnit\Event\InvalidArgumentException; -use PHPUnit\Event\TestRunner\ExecutionStarted; -use PHPUnit\Event\TestRunner\ExecutionStartedSubscriber as TestRunnerExecutionStartedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ExecutionStartedSubscriber extends Subscriber implements TestRunnerExecutionStartedSubscriber -{ - /** - * @throws \PHPUnit\Framework\InvalidArgumentException - * @throws InvalidArgumentException - */ - public function notify(ExecutionStarted $event): void - { - $this->handler()->executionStarted(); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/Subscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/Subscriber.php deleted file mode 100644 index c3b08c6f..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/Subscriber.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\GarbageCollection; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -abstract class Subscriber -{ - private readonly GarbageCollectionHandler $handler; - - public function __construct(GarbageCollectionHandler $handler) - { - $this->handler = $handler; - } - - protected function handler(): GarbageCollectionHandler - { - return $this->handler; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/TestFinishedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/TestFinishedSubscriber.php deleted file mode 100644 index 35806c4c..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/TestFinishedSubscriber.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\GarbageCollection; - -use PHPUnit\Event\InvalidArgumentException; -use PHPUnit\Event\Test\Finished; -use PHPUnit\Event\Test\FinishedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestFinishedSubscriber extends Subscriber implements FinishedSubscriber -{ - /** - * @throws \PHPUnit\Framework\InvalidArgumentException - * @throws InvalidArgumentException - */ - public function notify(Finished $event): void - { - $this->handler()->testFinished(); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/PhptTestCase.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/PhptTestCase.php deleted file mode 100644 index b6a442b6..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/PhptTestCase.php +++ /dev/null @@ -1,844 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use const DEBUG_BACKTRACE_IGNORE_ARGS; -use const DIRECTORY_SEPARATOR; -use function array_merge; -use function basename; -use function debug_backtrace; -use function defined; -use function dirname; -use function explode; -use function extension_loaded; -use function file; -use function file_get_contents; -use function file_put_contents; -use function is_array; -use function is_file; -use function is_readable; -use function is_string; -use function ltrim; -use function preg_match; -use function preg_replace; -use function preg_split; -use function realpath; -use function rtrim; -use function str_contains; -use function str_replace; -use function str_starts_with; -use function strncasecmp; -use function substr; -use function trim; -use function unlink; -use function unserialize; -use function var_export; -use PHPUnit\Event\Code\Phpt; -use PHPUnit\Event\Code\ThrowableBuilder; -use PHPUnit\Event\Facade as EventFacade; -use PHPUnit\Event\NoPreviousThrowableException; -use PHPUnit\Framework\Assert; -use PHPUnit\Framework\AssertionFailedError; -use PHPUnit\Framework\ExecutionOrderDependency; -use PHPUnit\Framework\ExpectationFailedException; -use PHPUnit\Framework\IncompleteTestError; -use PHPUnit\Framework\PhptAssertionFailedError; -use PHPUnit\Framework\Reorderable; -use PHPUnit\Framework\SelfDescribing; -use PHPUnit\Framework\Test; -use PHPUnit\TextUI\Configuration\Registry as ConfigurationRegistry; -use PHPUnit\Util\PHP\AbstractPhpProcess; -use SebastianBergmann\CodeCoverage\Data\RawCodeCoverageData; -use SebastianBergmann\CodeCoverage\InvalidArgumentException; -use SebastianBergmann\CodeCoverage\ReflectionException; -use SebastianBergmann\CodeCoverage\Test\TestSize\TestSize; -use SebastianBergmann\CodeCoverage\Test\TestStatus\TestStatus; -use SebastianBergmann\CodeCoverage\TestIdMissingException; -use SebastianBergmann\CodeCoverage\UnintentionallyCoveredCodeException; -use SebastianBergmann\Template\Template; -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class PhptTestCase implements Reorderable, SelfDescribing, Test -{ - /** - * @psalm-var non-empty-string - */ - private readonly string $filename; - private readonly AbstractPhpProcess $phpUtil; - private string $output = ''; - - /** - * Constructs a test case with the given filename. - * - * @psalm-param non-empty-string $filename - * - * @throws Exception - */ - public function __construct(string $filename, ?AbstractPhpProcess $phpUtil = null) - { - $this->filename = $filename; - $this->phpUtil = $phpUtil ?: AbstractPhpProcess::factory(); - } - - /** - * Counts the number of test cases executed by run(TestResult result). - */ - public function count(): int - { - return 1; - } - - /** - * Runs a test and collects its result in a TestResult instance. - * - * @throws \PHPUnit\Framework\Exception - * @throws \SebastianBergmann\Template\InvalidArgumentException - * @throws Exception - * @throws InvalidArgumentException - * @throws NoPreviousThrowableException - * @throws ReflectionException - * @throws TestIdMissingException - * @throws UnintentionallyCoveredCodeException - * - * @noinspection RepetitiveMethodCallsInspection - */ - public function run(): void - { - $emitter = EventFacade::emitter(); - - $emitter->testPreparationStarted( - $this->valueObjectForEvents(), - ); - - try { - $sections = $this->parse(); - } catch (Exception $e) { - $emitter->testPrepared($this->valueObjectForEvents()); - $emitter->testErrored($this->valueObjectForEvents(), ThrowableBuilder::from($e)); - $emitter->testFinished($this->valueObjectForEvents(), 0); - - return; - } - - $code = $this->render($sections['FILE']); - $xfail = false; - $settings = $this->parseIniSection($this->settings(CodeCoverage::instance()->isActive())); - - $emitter->testPrepared($this->valueObjectForEvents()); - - if (isset($sections['INI'])) { - $settings = $this->parseIniSection($sections['INI'], $settings); - } - - if (isset($sections['ENV'])) { - $env = $this->parseEnvSection($sections['ENV']); - $this->phpUtil->setEnv($env); - } - - $this->phpUtil->setUseStderrRedirection(true); - - if ($this->shouldTestBeSkipped($sections, $settings)) { - return; - } - - if (isset($sections['XFAIL'])) { - $xfail = trim($sections['XFAIL']); - } - - if (isset($sections['STDIN'])) { - $this->phpUtil->setStdin($sections['STDIN']); - } - - if (isset($sections['ARGS'])) { - $this->phpUtil->setArgs($sections['ARGS']); - } - - if (CodeCoverage::instance()->isActive()) { - $codeCoverageCacheDirectory = null; - - if (CodeCoverage::instance()->codeCoverage()->cachesStaticAnalysis()) { - /** @psalm-suppress MissingThrowsDocblock */ - $codeCoverageCacheDirectory = CodeCoverage::instance()->codeCoverage()->cacheDirectory(); - } - - $this->renderForCoverage( - $code, - CodeCoverage::instance()->codeCoverage()->collectsBranchAndPathCoverage(), - $codeCoverageCacheDirectory, - ); - } - - $jobResult = $this->phpUtil->runJob($code, $this->stringifyIni($settings)); - $this->output = $jobResult['stdout'] ?? ''; - - if (CodeCoverage::instance()->isActive()) { - $coverage = $this->cleanupForCoverage(); - - CodeCoverage::instance()->codeCoverage()->start($this->filename, TestSize::large()); - - CodeCoverage::instance()->codeCoverage()->append( - $coverage, - $this->filename, - true, - TestStatus::unknown(), - ); - } - - $passed = true; - - try { - $this->assertPhptExpectation($sections, $this->output); - } catch (AssertionFailedError $e) { - $failure = $e; - - if ($xfail !== false) { - $failure = new IncompleteTestError($xfail, 0, $e); - } elseif ($e instanceof ExpectationFailedException) { - $comparisonFailure = $e->getComparisonFailure(); - - if ($comparisonFailure) { - $diff = $comparisonFailure->getDiff(); - } else { - $diff = $e->getMessage(); - } - - $hint = $this->getLocationHintFromDiff($diff, $sections); - $trace = array_merge($hint, debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS)); - $failure = new PhptAssertionFailedError( - $e->getMessage(), - 0, - (string) $trace[0]['file'], - (int) $trace[0]['line'], - $trace, - $comparisonFailure ? $diff : '', - ); - } - - if ($failure instanceof IncompleteTestError) { - $emitter->testMarkedAsIncomplete($this->valueObjectForEvents(), ThrowableBuilder::from($failure)); - } else { - $emitter->testFailed($this->valueObjectForEvents(), ThrowableBuilder::from($failure), null); - } - - $passed = false; - } catch (Throwable $t) { - $emitter->testErrored($this->valueObjectForEvents(), ThrowableBuilder::from($t)); - - $passed = false; - } - - if ($passed) { - $emitter->testPassed($this->valueObjectForEvents()); - } - - $this->runClean($sections, CodeCoverage::instance()->isActive()); - - $emitter->testFinished($this->valueObjectForEvents(), 1); - } - - /** - * Returns the name of the test case. - */ - public function getName(): string - { - return $this->toString(); - } - - /** - * Returns a string representation of the test case. - */ - public function toString(): string - { - return $this->filename; - } - - public function usesDataProvider(): bool - { - return false; - } - - public function numberOfAssertionsPerformed(): int - { - return 1; - } - - public function output(): string - { - return $this->output; - } - - public function hasOutput(): bool - { - return !empty($this->output); - } - - public function sortId(): string - { - return $this->filename; - } - - /** - * @psalm-return list - */ - public function provides(): array - { - return []; - } - - /** - * @psalm-return list - */ - public function requires(): array - { - return []; - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - public function valueObjectForEvents(): Phpt - { - return new Phpt($this->filename); - } - - /** - * Parse --INI-- section key value pairs and return as array. - */ - private function parseIniSection(array|string $content, array $ini = []): array - { - if (is_string($content)) { - $content = explode("\n", trim($content)); - } - - foreach ($content as $setting) { - if (!str_contains($setting, '=')) { - continue; - } - - $setting = explode('=', $setting, 2); - $name = trim($setting[0]); - $value = trim($setting[1]); - - if ($name === 'extension' || $name === 'zend_extension') { - if (!isset($ini[$name])) { - $ini[$name] = []; - } - - $ini[$name][] = $value; - - continue; - } - - $ini[$name] = $value; - } - - return $ini; - } - - private function parseEnvSection(string $content): array - { - $env = []; - - foreach (explode("\n", trim($content)) as $e) { - $e = explode('=', trim($e), 2); - - if ($e[0] !== '' && isset($e[1])) { - $env[$e[0]] = $e[1]; - } - } - - return $env; - } - - /** - * @throws Exception - * @throws ExpectationFailedException - */ - private function assertPhptExpectation(array $sections, string $output): void - { - $assertions = [ - 'EXPECT' => 'assertEquals', - 'EXPECTF' => 'assertStringMatchesFormat', - 'EXPECTREGEX' => 'assertMatchesRegularExpression', - ]; - - $actual = preg_replace('/\r\n/', "\n", trim($output)); - - foreach ($assertions as $sectionName => $sectionAssertion) { - if (isset($sections[$sectionName])) { - $sectionContent = preg_replace('/\r\n/', "\n", trim($sections[$sectionName])); - $expected = $sectionName === 'EXPECTREGEX' ? "/{$sectionContent}/" : $sectionContent; - - Assert::$sectionAssertion($expected, $actual); - - return; - } - } - - throw new InvalidPhptFileException; - } - - private function shouldTestBeSkipped(array $sections, array $settings): bool - { - if (!isset($sections['SKIPIF'])) { - return false; - } - - $skipif = $this->render($sections['SKIPIF']); - $jobResult = $this->phpUtil->runJob($skipif, $this->stringifyIni($settings)); - - if (!strncasecmp('skip', ltrim($jobResult['stdout']), 4)) { - $message = ''; - - if (preg_match('/^\s*skip\s*(.+)\s*/i', $jobResult['stdout'], $skipMatch)) { - $message = substr($skipMatch[1], 2); - } - - EventFacade::emitter()->testSkipped( - $this->valueObjectForEvents(), - $message, - ); - - EventFacade::emitter()->testFinished($this->valueObjectForEvents(), 0); - - return true; - } - - return false; - } - - private function runClean(array $sections, bool $collectCoverage): void - { - $this->phpUtil->setStdin(''); - $this->phpUtil->setArgs(''); - - if (isset($sections['CLEAN'])) { - $cleanCode = $this->render($sections['CLEAN']); - - $this->phpUtil->runJob($cleanCode, $this->settings($collectCoverage)); - } - } - - /** - * @throws Exception - */ - private function parse(): array - { - $sections = []; - $section = ''; - - $unsupportedSections = [ - 'CGI', - 'COOKIE', - 'DEFLATE_POST', - 'EXPECTHEADERS', - 'EXTENSIONS', - 'GET', - 'GZIP_POST', - 'HEADERS', - 'PHPDBG', - 'POST', - 'POST_RAW', - 'PUT', - 'REDIRECTTEST', - 'REQUEST', - ]; - - $lineNr = 0; - - foreach (file($this->filename) as $line) { - $lineNr++; - - if (preg_match('/^--([_A-Z]+)--/', $line, $result)) { - $section = $result[1]; - $sections[$section] = ''; - $sections[$section . '_offset'] = $lineNr; - - continue; - } - - if (empty($section)) { - throw new InvalidPhptFileException; - } - - $sections[$section] .= $line; - } - - if (isset($sections['FILEEOF'])) { - $sections['FILE'] = rtrim($sections['FILEEOF'], "\r\n"); - unset($sections['FILEEOF']); - } - - $this->parseExternal($sections); - - if (!$this->validate($sections)) { - throw new InvalidPhptFileException; - } - - foreach ($unsupportedSections as $section) { - if (isset($sections[$section])) { - throw new UnsupportedPhptSectionException($section); - } - } - - return $sections; - } - - /** - * @throws Exception - */ - private function parseExternal(array &$sections): void - { - $allowSections = [ - 'FILE', - 'EXPECT', - 'EXPECTF', - 'EXPECTREGEX', - ]; - $testDirectory = dirname($this->filename) . DIRECTORY_SEPARATOR; - - foreach ($allowSections as $section) { - if (isset($sections[$section . '_EXTERNAL'])) { - $externalFilename = trim($sections[$section . '_EXTERNAL']); - - if (!is_file($testDirectory . $externalFilename) || - !is_readable($testDirectory . $externalFilename)) { - throw new PhptExternalFileCannotBeLoadedException( - $section, - $testDirectory . $externalFilename, - ); - } - - $sections[$section] = file_get_contents($testDirectory . $externalFilename); - } - } - } - - private function validate(array $sections): bool - { - $requiredSections = [ - 'FILE', - [ - 'EXPECT', - 'EXPECTF', - 'EXPECTREGEX', - ], - ]; - - foreach ($requiredSections as $section) { - if (is_array($section)) { - $foundSection = false; - - foreach ($section as $anySection) { - if (isset($sections[$anySection])) { - $foundSection = true; - - break; - } - } - - if (!$foundSection) { - return false; - } - - continue; - } - - if (!isset($sections[$section])) { - return false; - } - } - - return true; - } - - private function render(string $code): string - { - return str_replace( - [ - '__DIR__', - '__FILE__', - ], - [ - "'" . dirname($this->filename) . "'", - "'" . $this->filename . "'", - ], - $code, - ); - } - - private function getCoverageFiles(): array - { - $baseDir = dirname(realpath($this->filename)) . DIRECTORY_SEPARATOR; - $basename = basename($this->filename, 'phpt'); - - return [ - 'coverage' => $baseDir . $basename . 'coverage', - 'job' => $baseDir . $basename . 'php', - ]; - } - - /** - * @throws \SebastianBergmann\Template\InvalidArgumentException - */ - private function renderForCoverage(string &$job, bool $pathCoverage, ?string $codeCoverageCacheDirectory): void - { - $files = $this->getCoverageFiles(); - - $template = new Template( - __DIR__ . '/../Util/PHP/Template/PhptTestCase.tpl', - ); - - $composerAutoload = '\'\''; - - if (defined('PHPUNIT_COMPOSER_INSTALL')) { - $composerAutoload = var_export(PHPUNIT_COMPOSER_INSTALL, true); - } - - $phar = '\'\''; - - if (defined('__PHPUNIT_PHAR__')) { - $phar = var_export(__PHPUNIT_PHAR__, true); - } - - if ($codeCoverageCacheDirectory === null) { - $codeCoverageCacheDirectory = 'null'; - } else { - $codeCoverageCacheDirectory = "'" . $codeCoverageCacheDirectory . "'"; - } - - $bootstrap = ''; - - if (ConfigurationRegistry::get()->hasBootstrap()) { - $bootstrap = ConfigurationRegistry::get()->bootstrap(); - } - - $template->setVar( - [ - 'bootstrap' => $bootstrap, - 'composerAutoload' => $composerAutoload, - 'phar' => $phar, - 'job' => $files['job'], - 'coverageFile' => $files['coverage'], - 'driverMethod' => $pathCoverage ? 'forLineAndPathCoverage' : 'forLineCoverage', - 'codeCoverageCacheDirectory' => $codeCoverageCacheDirectory, - ], - ); - - file_put_contents($files['job'], $job); - - $job = $template->render(); - } - - private function cleanupForCoverage(): RawCodeCoverageData - { - $coverage = RawCodeCoverageData::fromXdebugWithoutPathCoverage([]); - $files = $this->getCoverageFiles(); - - $buffer = false; - - if (is_file($files['coverage'])) { - $buffer = @file_get_contents($files['coverage']); - } - - if ($buffer !== false) { - $coverage = @unserialize($buffer); - - if ($coverage === false) { - $coverage = RawCodeCoverageData::fromXdebugWithoutPathCoverage([]); - } - } - - foreach ($files as $file) { - @unlink($file); - } - - return $coverage; - } - - private function stringifyIni(array $ini): array - { - $settings = []; - - foreach ($ini as $key => $value) { - if (is_array($value)) { - foreach ($value as $val) { - $settings[] = $key . '=' . $val; - } - - continue; - } - - $settings[] = $key . '=' . $value; - } - - return $settings; - } - - private function getLocationHintFromDiff(string $message, array $sections): array - { - $needle = ''; - $previousLine = ''; - $block = 'message'; - - foreach (preg_split('/\r\n|\r|\n/', $message) as $line) { - $line = trim($line); - - if ($block === 'message' && $line === '--- Expected') { - $block = 'expected'; - } - - if ($block === 'expected' && $line === '@@ @@') { - $block = 'diff'; - } - - if ($block === 'diff') { - if (str_starts_with($line, '+')) { - $needle = $this->getCleanDiffLine($previousLine); - - break; - } - - if (str_starts_with($line, '-')) { - $needle = $this->getCleanDiffLine($line); - - break; - } - } - - if (!empty($line)) { - $previousLine = $line; - } - } - - return $this->getLocationHint($needle, $sections); - } - - private function getCleanDiffLine(string $line): string - { - if (preg_match('/^[\-+]([\'\"]?)(.*)\1$/', $line, $matches)) { - $line = $matches[2]; - } - - return $line; - } - - private function getLocationHint(string $needle, array $sections): array - { - $needle = trim($needle); - - if (empty($needle)) { - return [[ - 'file' => realpath($this->filename), - 'line' => 1, - ]]; - } - - $search = [ - // 'FILE', - 'EXPECT', - 'EXPECTF', - 'EXPECTREGEX', - ]; - - foreach ($search as $section) { - if (!isset($sections[$section])) { - continue; - } - - if (isset($sections[$section . '_EXTERNAL'])) { - $externalFile = trim($sections[$section . '_EXTERNAL']); - - return [ - [ - 'file' => realpath(dirname($this->filename) . DIRECTORY_SEPARATOR . $externalFile), - 'line' => 1, - ], - [ - 'file' => realpath($this->filename), - 'line' => ($sections[$section . '_EXTERNAL_offset'] ?? 0) + 1, - ], - ]; - } - - $sectionOffset = $sections[$section . '_offset'] ?? 0; - $offset = $sectionOffset + 1; - - foreach (preg_split('/\r\n|\r|\n/', $sections[$section]) as $line) { - if (str_contains($line, $needle)) { - return [ - [ - 'file' => realpath($this->filename), - 'line' => $offset, - ], - ]; - } - - $offset++; - } - } - - return [ - [ - 'file' => realpath($this->filename), - 'line' => 1, - ], - ]; - } - - /** - * @psalm-return list - */ - private function settings(bool $collectCoverage): array - { - $settings = [ - 'allow_url_fopen=1', - 'auto_append_file=', - 'auto_prepend_file=', - 'disable_functions=', - 'display_errors=1', - 'docref_ext=.html', - 'docref_root=', - 'error_append_string=', - 'error_prepend_string=', - 'error_reporting=-1', - 'html_errors=0', - 'log_errors=0', - 'open_basedir=', - 'output_buffering=Off', - 'output_handler=', - 'report_memleaks=0', - 'report_zend_debug=0', - ]; - - if (extension_loaded('pcov')) { - if ($collectCoverage) { - $settings[] = 'pcov.enabled=1'; - } else { - $settings[] = 'pcov.enabled=0'; - } - } - - if (extension_loaded('xdebug')) { - if ($collectCoverage) { - $settings[] = 'xdebug.mode=coverage'; - } else { - $settings[] = 'xdebug.mode=off'; - } - } - - return $settings; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/DefaultResultCache.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/DefaultResultCache.php deleted file mode 100644 index e7704d81..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/DefaultResultCache.php +++ /dev/null @@ -1,166 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\ResultCache; - -use const DIRECTORY_SEPARATOR; -use const LOCK_EX; -use function array_keys; -use function assert; -use function dirname; -use function file_get_contents; -use function file_put_contents; -use function is_array; -use function is_dir; -use function is_file; -use function json_decode; -use function json_encode; -use PHPUnit\Framework\TestStatus\TestStatus; -use PHPUnit\Runner\DirectoryDoesNotExistException; -use PHPUnit\Runner\Exception; -use PHPUnit\Util\Filesystem; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class DefaultResultCache implements ResultCache -{ - /** - * @var int - */ - private const VERSION = 1; - - /** - * @var string - */ - private const DEFAULT_RESULT_CACHE_FILENAME = '.phpunit.result.cache'; - private readonly string $cacheFilename; - - /** - * @psalm-var array - */ - private array $defects = []; - - /** - * @psalm-var array - */ - private array $times = []; - - public function __construct(?string $filepath = null) - { - if ($filepath !== null && is_dir($filepath)) { - $filepath .= DIRECTORY_SEPARATOR . self::DEFAULT_RESULT_CACHE_FILENAME; - } - - $this->cacheFilename = $filepath ?? $_ENV['PHPUNIT_RESULT_CACHE'] ?? self::DEFAULT_RESULT_CACHE_FILENAME; - } - - public function setStatus(string $id, TestStatus $status): void - { - if ($status->isSuccess()) { - return; - } - - $this->defects[$id] = $status; - } - - public function status(string $id): TestStatus - { - return $this->defects[$id] ?? TestStatus::unknown(); - } - - public function setTime(string $id, float $time): void - { - $this->times[$id] = $time; - } - - public function time(string $id): float - { - return $this->times[$id] ?? 0.0; - } - - public function mergeWith(self $other): void - { - foreach ($other->defects as $id => $defect) { - $this->defects[$id] = $defect; - } - - foreach ($other->times as $id => $time) { - $this->times[$id] = $time; - } - } - - public function load(): void - { - if (!is_file($this->cacheFilename)) { - return; - } - - $contents = file_get_contents($this->cacheFilename); - - if ($contents === false) { - return; - } - - $data = json_decode( - $contents, - true, - ); - - if ($data === null) { - return; - } - - if (!isset($data['version'])) { - return; - } - - if ($data['version'] !== self::VERSION) { - return; - } - - assert(isset($data['defects']) && is_array($data['defects'])); - assert(isset($data['times']) && is_array($data['times'])); - - foreach (array_keys($data['defects']) as $test) { - $data['defects'][$test] = TestStatus::from($data['defects'][$test]); - } - - $this->defects = $data['defects']; - $this->times = $data['times']; - } - - /** - * @throws Exception - */ - public function persist(): void - { - if (!Filesystem::createDirectory(dirname($this->cacheFilename))) { - throw new DirectoryDoesNotExistException(dirname($this->cacheFilename)); - } - - $data = [ - 'version' => self::VERSION, - 'defects' => [], - 'times' => $this->times, - ]; - - foreach ($this->defects as $test => $status) { - $data['defects'][$test] = $status->asInt(); - } - - file_put_contents( - $this->cacheFilename, - json_encode($data), - LOCK_EX, - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/NullResultCache.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/NullResultCache.php deleted file mode 100644 index f0cc4c30..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/NullResultCache.php +++ /dev/null @@ -1,46 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\ResultCache; - -use PHPUnit\Framework\TestStatus\TestStatus; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class NullResultCache implements ResultCache -{ - public function setStatus(string $id, TestStatus $status): void - { - } - - public function status(string $id): TestStatus - { - return TestStatus::unknown(); - } - - public function setTime(string $id, float $time): void - { - } - - public function time(string $id): float - { - return 0; - } - - public function load(): void - { - } - - public function persist(): void - { - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/ResultCache.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/ResultCache.php deleted file mode 100644 index 74efe251..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/ResultCache.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\ResultCache; - -use PHPUnit\Framework\TestStatus\TestStatus; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -interface ResultCache -{ - public function setStatus(string $id, TestStatus $status): void; - - public function status(string $id): TestStatus; - - public function setTime(string $id, float $time): void; - - public function time(string $id): float; - - public function load(): void; - - public function persist(): void; -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/ResultCacheHandler.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/ResultCacheHandler.php deleted file mode 100644 index 927725a8..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/ResultCacheHandler.php +++ /dev/null @@ -1,157 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\ResultCache; - -use function round; -use PHPUnit\Event\Event; -use PHPUnit\Event\EventFacadeIsSealedException; -use PHPUnit\Event\Facade; -use PHPUnit\Event\Telemetry\HRTime; -use PHPUnit\Event\Test\ConsideredRisky; -use PHPUnit\Event\Test\Errored; -use PHPUnit\Event\Test\Failed; -use PHPUnit\Event\Test\Finished; -use PHPUnit\Event\Test\MarkedIncomplete; -use PHPUnit\Event\Test\Prepared; -use PHPUnit\Event\Test\Skipped; -use PHPUnit\Event\UnknownSubscriberTypeException; -use PHPUnit\Framework\InvalidArgumentException; -use PHPUnit\Framework\TestStatus\TestStatus; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ResultCacheHandler -{ - private readonly ResultCache $cache; - private ?HRTime $time = null; - private int $testSuite = 0; - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - public function __construct(ResultCache $cache, Facade $facade) - { - $this->cache = $cache; - - $this->registerSubscribers($facade); - } - - public function testSuiteStarted(): void - { - $this->testSuite++; - } - - public function testSuiteFinished(): void - { - $this->testSuite--; - - if ($this->testSuite === 0) { - $this->cache->persist(); - } - } - - public function testPrepared(Prepared $event): void - { - $this->time = $event->telemetryInfo()->time(); - } - - public function testMarkedIncomplete(MarkedIncomplete $event): void - { - $this->cache->setStatus( - $event->test()->id(), - TestStatus::incomplete($event->throwable()->message()), - ); - } - - public function testConsideredRisky(ConsideredRisky $event): void - { - $this->cache->setStatus( - $event->test()->id(), - TestStatus::risky($event->message()), - ); - } - - public function testErrored(Errored $event): void - { - $this->cache->setStatus( - $event->test()->id(), - TestStatus::error($event->throwable()->message()), - ); - } - - public function testFailed(Failed $event): void - { - $this->cache->setStatus( - $event->test()->id(), - TestStatus::failure($event->throwable()->message()), - ); - } - - /** - * @throws \PHPUnit\Event\InvalidArgumentException - * @throws InvalidArgumentException - */ - public function testSkipped(Skipped $event): void - { - $this->cache->setStatus( - $event->test()->id(), - TestStatus::skipped($event->message()), - ); - - $this->cache->setTime($event->test()->id(), $this->duration($event)); - } - - /** - * @throws \PHPUnit\Event\InvalidArgumentException - * @throws InvalidArgumentException - */ - public function testFinished(Finished $event): void - { - $this->cache->setTime($event->test()->id(), $this->duration($event)); - - $this->time = null; - } - - /** - * @throws \PHPUnit\Event\InvalidArgumentException - * @throws InvalidArgumentException - */ - private function duration(Event $event): float - { - if ($this->time === null) { - return 0.0; - } - - return round($event->telemetryInfo()->time()->duration($this->time)->asFloat(), 3); - } - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - private function registerSubscribers(Facade $facade): void - { - $facade->registerSubscribers( - new TestSuiteStartedSubscriber($this), - new TestSuiteFinishedSubscriber($this), - new TestPreparedSubscriber($this), - new TestMarkedIncompleteSubscriber($this), - new TestConsideredRiskySubscriber($this), - new TestErroredSubscriber($this), - new TestFailedSubscriber($this), - new TestSkippedSubscriber($this), - new TestFinishedSubscriber($this), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/Subscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/Subscriber.php deleted file mode 100644 index 254b36a4..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/Subscriber.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\ResultCache; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -abstract class Subscriber -{ - private readonly ResultCacheHandler $handler; - - public function __construct(ResultCacheHandler $handler) - { - $this->handler = $handler; - } - - protected function handler(): ResultCacheHandler - { - return $this->handler; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestConsideredRiskySubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestConsideredRiskySubscriber.php deleted file mode 100644 index 5675f46d..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestConsideredRiskySubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\ResultCache; - -use PHPUnit\Event\Test\ConsideredRisky; -use PHPUnit\Event\Test\ConsideredRiskySubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestConsideredRiskySubscriber extends Subscriber implements ConsideredRiskySubscriber -{ - public function notify(ConsideredRisky $event): void - { - $this->handler()->testConsideredRisky($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestErroredSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestErroredSubscriber.php deleted file mode 100644 index 6acc7fbf..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestErroredSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\ResultCache; - -use PHPUnit\Event\Test\Errored; -use PHPUnit\Event\Test\ErroredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestErroredSubscriber extends Subscriber implements ErroredSubscriber -{ - public function notify(Errored $event): void - { - $this->handler()->testErrored($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestFailedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestFailedSubscriber.php deleted file mode 100644 index d9528986..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestFailedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\ResultCache; - -use PHPUnit\Event\Test\Failed; -use PHPUnit\Event\Test\FailedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestFailedSubscriber extends Subscriber implements FailedSubscriber -{ - public function notify(Failed $event): void - { - $this->handler()->testFailed($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestFinishedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestFinishedSubscriber.php deleted file mode 100644 index d0457379..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestFinishedSubscriber.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\ResultCache; - -use PHPUnit\Event\InvalidArgumentException; -use PHPUnit\Event\Test\Finished; -use PHPUnit\Event\Test\FinishedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestFinishedSubscriber extends Subscriber implements FinishedSubscriber -{ - /** - * @throws \PHPUnit\Framework\InvalidArgumentException - * @throws InvalidArgumentException - */ - public function notify(Finished $event): void - { - $this->handler()->testFinished($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestMarkedIncompleteSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestMarkedIncompleteSubscriber.php deleted file mode 100644 index e9838359..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestMarkedIncompleteSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\ResultCache; - -use PHPUnit\Event\Test\MarkedIncomplete; -use PHPUnit\Event\Test\MarkedIncompleteSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestMarkedIncompleteSubscriber extends Subscriber implements MarkedIncompleteSubscriber -{ - public function notify(MarkedIncomplete $event): void - { - $this->handler()->testMarkedIncomplete($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestPreparedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestPreparedSubscriber.php deleted file mode 100644 index 6e7cd77a..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestPreparedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\ResultCache; - -use PHPUnit\Event\Test\Prepared; -use PHPUnit\Event\Test\PreparedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestPreparedSubscriber extends Subscriber implements PreparedSubscriber -{ - public function notify(Prepared $event): void - { - $this->handler()->testPrepared($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestSkippedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestSkippedSubscriber.php deleted file mode 100644 index b9ad4e34..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestSkippedSubscriber.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\ResultCache; - -use PHPUnit\Event\InvalidArgumentException; -use PHPUnit\Event\Test\Skipped; -use PHPUnit\Event\Test\SkippedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestSkippedSubscriber extends Subscriber implements SkippedSubscriber -{ - /** - * @throws \PHPUnit\Framework\InvalidArgumentException - * @throws InvalidArgumentException - */ - public function notify(Skipped $event): void - { - $this->handler()->testSkipped($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestSuiteFinishedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestSuiteFinishedSubscriber.php deleted file mode 100644 index 1c6fef3a..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestSuiteFinishedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\ResultCache; - -use PHPUnit\Event\TestSuite\Finished; -use PHPUnit\Event\TestSuite\FinishedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestSuiteFinishedSubscriber extends Subscriber implements FinishedSubscriber -{ - public function notify(Finished $event): void - { - $this->handler()->testSuiteFinished(); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestSuiteStartedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestSuiteStartedSubscriber.php deleted file mode 100644 index e56874fa..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestSuiteStartedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\ResultCache; - -use PHPUnit\Event\TestSuite\Started; -use PHPUnit\Event\TestSuite\StartedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestSuiteStartedSubscriber extends Subscriber implements StartedSubscriber -{ - public function notify(Started $event): void - { - $this->handler()->testSuiteStarted(); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Collector.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Collector.php deleted file mode 100644 index c26eef16..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Collector.php +++ /dev/null @@ -1,660 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use function array_values; -use function assert; -use function implode; -use function str_contains; -use PHPUnit\Event\Code\TestMethod; -use PHPUnit\Event\EventFacadeIsSealedException; -use PHPUnit\Event\Facade; -use PHPUnit\Event\Test\BeforeFirstTestMethodErrored; -use PHPUnit\Event\Test\ConsideredRisky; -use PHPUnit\Event\Test\DeprecationTriggered; -use PHPUnit\Event\Test\Errored; -use PHPUnit\Event\Test\ErrorTriggered; -use PHPUnit\Event\Test\Failed; -use PHPUnit\Event\Test\Finished; -use PHPUnit\Event\Test\MarkedIncomplete; -use PHPUnit\Event\Test\NoticeTriggered; -use PHPUnit\Event\Test\PhpDeprecationTriggered; -use PHPUnit\Event\Test\PhpNoticeTriggered; -use PHPUnit\Event\Test\PhpunitDeprecationTriggered; -use PHPUnit\Event\Test\PhpunitErrorTriggered; -use PHPUnit\Event\Test\PhpunitWarningTriggered; -use PHPUnit\Event\Test\PhpWarningTriggered; -use PHPUnit\Event\Test\Skipped as TestSkipped; -use PHPUnit\Event\Test\WarningTriggered; -use PHPUnit\Event\TestRunner\DeprecationTriggered as TestRunnerDeprecationTriggered; -use PHPUnit\Event\TestRunner\ExecutionStarted; -use PHPUnit\Event\TestRunner\WarningTriggered as TestRunnerWarningTriggered; -use PHPUnit\Event\TestSuite\Finished as TestSuiteFinished; -use PHPUnit\Event\TestSuite\Skipped as TestSuiteSkipped; -use PHPUnit\Event\TestSuite\Started as TestSuiteStarted; -use PHPUnit\Event\TestSuite\TestSuiteForTestClass; -use PHPUnit\Event\TestSuite\TestSuiteForTestMethodWithDataProvider; -use PHPUnit\Event\UnknownSubscriberTypeException; -use PHPUnit\TestRunner\TestResult\Issues\Issue; -use PHPUnit\TextUI\Configuration\Source; -use PHPUnit\TextUI\Configuration\SourceFilter; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Collector -{ - private readonly Source $source; - private int $numberOfTests = 0; - private int $numberOfTestsRun = 0; - private int $numberOfAssertions = 0; - private bool $prepared = false; - private bool $currentTestSuiteForTestClassFailed = false; - - /** - * @psalm-var non-negative-int - */ - private int $numberOfIssuesIgnoredByBaseline = 0; - - /** - * @psalm-var list - */ - private array $testErroredEvents = []; - - /** - * @psalm-var list - */ - private array $testFailedEvents = []; - - /** - * @psalm-var list - */ - private array $testMarkedIncompleteEvents = []; - - /** - * @psalm-var list - */ - private array $testSuiteSkippedEvents = []; - - /** - * @psalm-var list - */ - private array $testSkippedEvents = []; - - /** - * @psalm-var array> - */ - private array $testConsideredRiskyEvents = []; - - /** - * @psalm-var array> - */ - private array $testTriggeredPhpunitDeprecationEvents = []; - - /** - * @psalm-var array> - */ - private array $testTriggeredPhpunitErrorEvents = []; - - /** - * @psalm-var array> - */ - private array $testTriggeredPhpunitWarningEvents = []; - - /** - * @psalm-var list - */ - private array $testRunnerTriggeredWarningEvents = []; - - /** - * @psalm-var list - */ - private array $testRunnerTriggeredDeprecationEvents = []; - - /** - * @psalm-var array - */ - private array $errors = []; - - /** - * @psalm-var array - */ - private array $deprecations = []; - - /** - * @psalm-var array - */ - private array $notices = []; - - /** - * @psalm-var array - */ - private array $warnings = []; - - /** - * @psalm-var array - */ - private array $phpDeprecations = []; - - /** - * @psalm-var array - */ - private array $phpNotices = []; - - /** - * @psalm-var array - */ - private array $phpWarnings = []; - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - public function __construct(Facade $facade, Source $source) - { - $facade->registerSubscribers( - new ExecutionStartedSubscriber($this), - new TestSuiteSkippedSubscriber($this), - new TestSuiteStartedSubscriber($this), - new TestSuiteFinishedSubscriber($this), - new TestPreparedSubscriber($this), - new TestFinishedSubscriber($this), - new BeforeTestClassMethodErroredSubscriber($this), - new TestErroredSubscriber($this), - new TestFailedSubscriber($this), - new TestMarkedIncompleteSubscriber($this), - new TestSkippedSubscriber($this), - new TestConsideredRiskySubscriber($this), - new TestTriggeredDeprecationSubscriber($this), - new TestTriggeredErrorSubscriber($this), - new TestTriggeredNoticeSubscriber($this), - new TestTriggeredPhpDeprecationSubscriber($this), - new TestTriggeredPhpNoticeSubscriber($this), - new TestTriggeredPhpunitDeprecationSubscriber($this), - new TestTriggeredPhpunitErrorSubscriber($this), - new TestTriggeredPhpunitWarningSubscriber($this), - new TestTriggeredPhpWarningSubscriber($this), - new TestTriggeredWarningSubscriber($this), - new TestRunnerTriggeredDeprecationSubscriber($this), - new TestRunnerTriggeredWarningSubscriber($this), - ); - - $this->source = $source; - } - - public function result(): TestResult - { - return new TestResult( - $this->numberOfTests, - $this->numberOfTestsRun, - $this->numberOfAssertions, - $this->testErroredEvents, - $this->testFailedEvents, - $this->testConsideredRiskyEvents, - $this->testSuiteSkippedEvents, - $this->testSkippedEvents, - $this->testMarkedIncompleteEvents, - $this->testTriggeredPhpunitDeprecationEvents, - $this->testTriggeredPhpunitErrorEvents, - $this->testTriggeredPhpunitWarningEvents, - $this->testRunnerTriggeredDeprecationEvents, - $this->testRunnerTriggeredWarningEvents, - array_values($this->errors), - array_values($this->deprecations), - array_values($this->notices), - array_values($this->warnings), - array_values($this->phpDeprecations), - array_values($this->phpNotices), - array_values($this->phpWarnings), - $this->numberOfIssuesIgnoredByBaseline, - ); - } - - public function executionStarted(ExecutionStarted $event): void - { - $this->numberOfTests = $event->testSuite()->count(); - } - - public function testSuiteSkipped(TestSuiteSkipped $event): void - { - $testSuite = $event->testSuite(); - - if (!$testSuite->isForTestClass()) { - return; - } - - $this->testSuiteSkippedEvents[] = $event; - } - - public function testSuiteStarted(TestSuiteStarted $event): void - { - $testSuite = $event->testSuite(); - - if (!$testSuite->isForTestClass()) { - return; - } - - $this->currentTestSuiteForTestClassFailed = false; - } - - public function testSuiteFinished(TestSuiteFinished $event): void - { - if ($this->currentTestSuiteForTestClassFailed) { - return; - } - - $testSuite = $event->testSuite(); - - if ($testSuite->isWithName()) { - return; - } - - if ($testSuite->isForTestMethodWithDataProvider()) { - assert($testSuite instanceof TestSuiteForTestMethodWithDataProvider); - - $test = $testSuite->tests()->asArray()[0]; - - assert($test instanceof TestMethod); - - PassedTests::instance()->testMethodPassed($test, null); - - return; - } - - assert($testSuite instanceof TestSuiteForTestClass); - - PassedTests::instance()->testClassPassed($testSuite->className()); - } - - public function testPrepared(): void - { - $this->prepared = true; - } - - public function testFinished(Finished $event): void - { - $this->numberOfAssertions += $event->numberOfAssertionsPerformed(); - - $this->numberOfTestsRun++; - - $this->prepared = false; - } - - public function beforeTestClassMethodErrored(BeforeFirstTestMethodErrored $event): void - { - $this->testErroredEvents[] = $event; - - $this->numberOfTestsRun++; - } - - public function testErrored(Errored $event): void - { - $this->testErroredEvents[] = $event; - - $this->currentTestSuiteForTestClassFailed = true; - - /* - * @todo Eliminate this special case - */ - if (str_contains($event->asString(), 'Test was run in child process and ended unexpectedly')) { - return; - } - - if (!$this->prepared) { - $this->numberOfTestsRun++; - } - } - - public function testFailed(Failed $event): void - { - $this->testFailedEvents[] = $event; - - $this->currentTestSuiteForTestClassFailed = true; - } - - public function testMarkedIncomplete(MarkedIncomplete $event): void - { - $this->testMarkedIncompleteEvents[] = $event; - } - - public function testSkipped(TestSkipped $event): void - { - $this->testSkippedEvents[] = $event; - - if (!$this->prepared) { - $this->numberOfTestsRun++; - } - } - - public function testConsideredRisky(ConsideredRisky $event): void - { - if (!isset($this->testConsideredRiskyEvents[$event->test()->id()])) { - $this->testConsideredRiskyEvents[$event->test()->id()] = []; - } - - $this->testConsideredRiskyEvents[$event->test()->id()][] = $event; - } - - public function testTriggeredDeprecation(DeprecationTriggered $event): void - { - if ($event->ignoredByTest()) { - return; - } - - if ($event->ignoredByBaseline()) { - $this->numberOfIssuesIgnoredByBaseline++; - - return; - } - - if (!$this->source->ignoreSuppressionOfDeprecations() && $event->wasSuppressed()) { - return; - } - - if ($this->source->restrictDeprecations() && !(new SourceFilter)->includes($this->source, $event->file())) { - return; - } - - $id = $this->issueId($event); - - if (!isset($this->deprecations[$id])) { - $this->deprecations[$id] = Issue::from( - $event->file(), - $event->line(), - $event->message(), - $event->test(), - ); - - return; - } - - $this->deprecations[$id]->triggeredBy($event->test()); - } - - public function testTriggeredPhpDeprecation(PhpDeprecationTriggered $event): void - { - if ($event->ignoredByTest()) { - return; - } - - if ($event->ignoredByBaseline()) { - $this->numberOfIssuesIgnoredByBaseline++; - - return; - } - - if (!$this->source->ignoreSuppressionOfPhpDeprecations() && $event->wasSuppressed()) { - return; - } - - if ($this->source->restrictDeprecations() && !(new SourceFilter)->includes($this->source, $event->file())) { - return; - } - - $id = $this->issueId($event); - - if (!isset($this->phpDeprecations[$id])) { - $this->phpDeprecations[$id] = Issue::from( - $event->file(), - $event->line(), - $event->message(), - $event->test(), - ); - - return; - } - - $this->phpDeprecations[$id]->triggeredBy($event->test()); - } - - public function testTriggeredPhpunitDeprecation(PhpunitDeprecationTriggered $event): void - { - if (!isset($this->testTriggeredPhpunitDeprecationEvents[$event->test()->id()])) { - $this->testTriggeredPhpunitDeprecationEvents[$event->test()->id()] = []; - } - - $this->testTriggeredPhpunitDeprecationEvents[$event->test()->id()][] = $event; - } - - public function testTriggeredError(ErrorTriggered $event): void - { - if (!$this->source->ignoreSuppressionOfErrors() && $event->wasSuppressed()) { - return; - } - - $id = $this->issueId($event); - - if (!isset($this->errors[$id])) { - $this->errors[$id] = Issue::from( - $event->file(), - $event->line(), - $event->message(), - $event->test(), - ); - - return; - } - - $this->errors[$id]->triggeredBy($event->test()); - } - - public function testTriggeredNotice(NoticeTriggered $event): void - { - if ($event->ignoredByBaseline()) { - $this->numberOfIssuesIgnoredByBaseline++; - - return; - } - - if (!$this->source->ignoreSuppressionOfNotices() && $event->wasSuppressed()) { - return; - } - - if ($this->source->restrictNotices() && !(new SourceFilter)->includes($this->source, $event->file())) { - return; - } - - $id = $this->issueId($event); - - if (!isset($this->notices[$id])) { - $this->notices[$id] = Issue::from( - $event->file(), - $event->line(), - $event->message(), - $event->test(), - ); - - return; - } - - $this->notices[$id]->triggeredBy($event->test()); - } - - public function testTriggeredPhpNotice(PhpNoticeTriggered $event): void - { - if ($event->ignoredByBaseline()) { - $this->numberOfIssuesIgnoredByBaseline++; - - return; - } - - if (!$this->source->ignoreSuppressionOfPhpNotices() && $event->wasSuppressed()) { - return; - } - - if ($this->source->restrictNotices() && !(new SourceFilter)->includes($this->source, $event->file())) { - return; - } - - $id = $this->issueId($event); - - if (!isset($this->phpNotices[$id])) { - $this->phpNotices[$id] = Issue::from( - $event->file(), - $event->line(), - $event->message(), - $event->test(), - ); - - return; - } - - $this->phpNotices[$id]->triggeredBy($event->test()); - } - - public function testTriggeredWarning(WarningTriggered $event): void - { - if ($event->ignoredByBaseline()) { - $this->numberOfIssuesIgnoredByBaseline++; - - return; - } - - if (!$this->source->ignoreSuppressionOfWarnings() && $event->wasSuppressed()) { - return; - } - - if ($this->source->restrictWarnings() && !(new SourceFilter)->includes($this->source, $event->file())) { - return; - } - - $id = $this->issueId($event); - - if (!isset($this->warnings[$id])) { - $this->warnings[$id] = Issue::from( - $event->file(), - $event->line(), - $event->message(), - $event->test(), - ); - - return; - } - - $this->warnings[$id]->triggeredBy($event->test()); - } - - public function testTriggeredPhpWarning(PhpWarningTriggered $event): void - { - if ($event->ignoredByBaseline()) { - $this->numberOfIssuesIgnoredByBaseline++; - - return; - } - - if (!$this->source->ignoreSuppressionOfPhpWarnings() && $event->wasSuppressed()) { - return; - } - - if ($this->source->restrictWarnings() && !(new SourceFilter)->includes($this->source, $event->file())) { - return; - } - - $id = $this->issueId($event); - - if (!isset($this->phpWarnings[$id])) { - $this->phpWarnings[$id] = Issue::from( - $event->file(), - $event->line(), - $event->message(), - $event->test(), - ); - - return; - } - - $this->phpWarnings[$id]->triggeredBy($event->test()); - } - - public function testTriggeredPhpunitError(PhpunitErrorTriggered $event): void - { - if (!isset($this->testTriggeredPhpunitErrorEvents[$event->test()->id()])) { - $this->testTriggeredPhpunitErrorEvents[$event->test()->id()] = []; - } - - $this->testTriggeredPhpunitErrorEvents[$event->test()->id()][] = $event; - } - - public function testTriggeredPhpunitWarning(PhpunitWarningTriggered $event): void - { - if (!isset($this->testTriggeredPhpunitWarningEvents[$event->test()->id()])) { - $this->testTriggeredPhpunitWarningEvents[$event->test()->id()] = []; - } - - $this->testTriggeredPhpunitWarningEvents[$event->test()->id()][] = $event; - } - - public function testRunnerTriggeredDeprecation(TestRunnerDeprecationTriggered $event): void - { - $this->testRunnerTriggeredDeprecationEvents[] = $event; - } - - public function testRunnerTriggeredWarning(TestRunnerWarningTriggered $event): void - { - $this->testRunnerTriggeredWarningEvents[] = $event; - } - - public function hasErroredTests(): bool - { - return !empty($this->testErroredEvents); - } - - public function hasFailedTests(): bool - { - return !empty($this->testFailedEvents); - } - - public function hasRiskyTests(): bool - { - return !empty($this->testConsideredRiskyEvents); - } - - public function hasSkippedTests(): bool - { - return !empty($this->testSkippedEvents); - } - - public function hasIncompleteTests(): bool - { - return !empty($this->testMarkedIncompleteEvents); - } - - public function hasDeprecations(): bool - { - return !empty($this->deprecations) || - !empty($this->phpDeprecations) || - !empty($this->testTriggeredPhpunitDeprecationEvents) || - !empty($this->testRunnerTriggeredDeprecationEvents); - } - - public function hasNotices(): bool - { - return !empty($this->notices) || - !empty($this->phpNotices); - } - - public function hasWarnings(): bool - { - return !empty($this->warnings) || - !empty($this->phpWarnings) || - !empty($this->testTriggeredPhpunitWarningEvents) || - !empty($this->testRunnerTriggeredWarningEvents); - } - - /** - * @psalm-return non-empty-string - */ - private function issueId(DeprecationTriggered|ErrorTriggered|NoticeTriggered|PhpDeprecationTriggered|PhpNoticeTriggered|PhpWarningTriggered|WarningTriggered $event): string - { - return implode(':', [$event->file(), $event->line(), $event->message()]); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Facade.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Facade.php deleted file mode 100644 index 75b7471e..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Facade.php +++ /dev/null @@ -1,105 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\EventFacadeIsSealedException; -use PHPUnit\Event\Facade as EventFacade; -use PHPUnit\Event\UnknownSubscriberTypeException; -use PHPUnit\TextUI\Configuration\Registry as ConfigurationRegistry; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Facade -{ - private static ?Collector $collector = null; - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - public static function init(): void - { - self::collector(); - } - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - public static function result(): TestResult - { - return self::collector()->result(); - } - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - public static function shouldStop(): bool - { - $configuration = ConfigurationRegistry::get(); - $collector = self::collector(); - - if (($configuration->stopOnDefect() || $configuration->stopOnError()) && $collector->hasErroredTests()) { - return true; - } - - if (($configuration->stopOnDefect() || $configuration->stopOnFailure()) && $collector->hasFailedTests()) { - return true; - } - - if (($configuration->stopOnDefect() || $configuration->stopOnWarning()) && $collector->hasWarnings()) { - return true; - } - - if (($configuration->stopOnDefect() || $configuration->stopOnRisky()) && $collector->hasRiskyTests()) { - return true; - } - - if ($configuration->stopOnDeprecation() && $collector->hasDeprecations()) { - return true; - } - - if ($configuration->stopOnNotice() && $collector->hasNotices()) { - return true; - } - - if ($configuration->stopOnIncomplete() && $collector->hasIncompleteTests()) { - return true; - } - - if ($configuration->stopOnSkipped() && $collector->hasSkippedTests()) { - return true; - } - - return false; - } - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - private static function collector(): Collector - { - if (self::$collector === null) { - $configuration = ConfigurationRegistry::get(); - - self::$collector = new Collector( - EventFacade::instance(), - $configuration->source(), - ); - } - - return self::$collector; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Issue.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Issue.php deleted file mode 100644 index dcfd17f8..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Issue.php +++ /dev/null @@ -1,115 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult\Issues; - -use PHPUnit\Event\Code\Test; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Issue -{ - /** - * @psalm-var non-empty-string - */ - private readonly string $file; - - /** - * @psalm-var positive-int - */ - private readonly int $line; - - /** - * @psalm-var non-empty-string - */ - private readonly string $description; - - /** - * @psalm-var non-empty-array - */ - private array $triggeringTests; - - /** - * @psalm-param non-empty-string $file - * @psalm-param positive-int $line - * @psalm-param non-empty-string $description - */ - public static function from(string $file, int $line, string $description, Test $triggeringTest): self - { - return new self($file, $line, $description, $triggeringTest); - } - - /** - * @psalm-param non-empty-string $file - * @psalm-param positive-int $line - * @psalm-param non-empty-string $description - */ - private function __construct(string $file, int $line, string $description, Test $triggeringTest) - { - $this->file = $file; - $this->line = $line; - $this->description = $description; - - $this->triggeringTests = [ - $triggeringTest->id() => [ - 'test' => $triggeringTest, - 'count' => 1, - ], - ]; - } - - public function triggeredBy(Test $test): void - { - if (isset($this->triggeringTests[$test->id()])) { - $this->triggeringTests[$test->id()]['count']++; - - return; - } - - $this->triggeringTests[$test->id()] = [ - 'test' => $test, - 'count' => 1, - ]; - } - - /** - * @psalm-return non-empty-string - */ - public function file(): string - { - return $this->file; - } - - /** - * @psalm-return positive-int - */ - public function line(): int - { - return $this->line; - } - - /** - * @psalm-return non-empty-string - */ - public function description(): string - { - return $this->description; - } - - /** - * @psalm-return non-empty-array - */ - public function triggeringTests(): array - { - return $this->triggeringTests; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/PassedTests.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/PassedTests.php deleted file mode 100644 index b448bc86..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/PassedTests.php +++ /dev/null @@ -1,124 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use function array_merge; -use function assert; -use function in_array; -use PHPUnit\Event\Code\TestMethod; -use PHPUnit\Framework\TestSize\Known; -use PHPUnit\Framework\TestSize\TestSize; -use PHPUnit\Metadata\Api\Groups; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class PassedTests -{ - private static ?self $instance = null; - - /** - * @psalm-var list - */ - private array $passedTestClasses = []; - - /** - * @psalm-var array - */ - private array $passedTestMethods = []; - - public static function instance(): self - { - if (self::$instance !== null) { - return self::$instance; - } - - self::$instance = new self; - - return self::$instance; - } - - /** - * @psalm-param class-string $className - */ - public function testClassPassed(string $className): void - { - $this->passedTestClasses[] = $className; - } - - public function testMethodPassed(TestMethod $test, mixed $returnValue): void - { - $size = (new Groups)->size( - $test->className(), - $test->methodName(), - ); - - $this->passedTestMethods[$test->className() . '::' . $test->methodName()] = [ - 'returnValue' => $returnValue, - 'size' => $size, - ]; - } - - public function import(self $other): void - { - $this->passedTestClasses = array_merge( - $this->passedTestClasses, - $other->passedTestClasses, - ); - - $this->passedTestMethods = array_merge( - $this->passedTestMethods, - $other->passedTestMethods, - ); - } - - /** - * @psalm-param class-string $className - */ - public function hasTestClassPassed(string $className): bool - { - return in_array($className, $this->passedTestClasses, true); - } - - public function hasTestMethodPassed(string $method): bool - { - return isset($this->passedTestMethods[$method]); - } - - public function isGreaterThan(string $method, TestSize $other): bool - { - if ($other->isUnknown()) { - return false; - } - - assert($other instanceof Known); - - $size = $this->passedTestMethods[$method]['size']; - - if ($size->isUnknown()) { - return false; - } - - assert($size instanceof Known); - - return $size->isGreaterThan($other); - } - - public function returnValue(string $method): mixed - { - if (isset($this->passedTestMethods[$method])) { - return $this->passedTestMethods[$method]['returnValue']; - } - - return null; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/BeforeTestClassMethodErroredSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/BeforeTestClassMethodErroredSubscriber.php deleted file mode 100644 index c9facc24..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/BeforeTestClassMethodErroredSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\BeforeFirstTestMethodErrored; -use PHPUnit\Event\Test\BeforeFirstTestMethodErroredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class BeforeTestClassMethodErroredSubscriber extends Subscriber implements BeforeFirstTestMethodErroredSubscriber -{ - public function notify(BeforeFirstTestMethodErrored $event): void - { - $this->collector()->beforeTestClassMethodErrored($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/ExecutionStartedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/ExecutionStartedSubscriber.php deleted file mode 100644 index 56f16d76..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/ExecutionStartedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\TestRunner\ExecutionStarted; -use PHPUnit\Event\TestRunner\ExecutionStartedSubscriber as TestRunnerExecutionStartedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ExecutionStartedSubscriber extends Subscriber implements TestRunnerExecutionStartedSubscriber -{ - public function notify(ExecutionStarted $event): void - { - $this->collector()->executionStarted($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/Subscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/Subscriber.php deleted file mode 100644 index f9abbb77..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/Subscriber.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -abstract class Subscriber -{ - private readonly Collector $collector; - - public function __construct(Collector $collector) - { - $this->collector = $collector; - } - - protected function collector(): Collector - { - return $this->collector; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestConsideredRiskySubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestConsideredRiskySubscriber.php deleted file mode 100644 index b3656e43..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestConsideredRiskySubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\ConsideredRisky; -use PHPUnit\Event\Test\ConsideredRiskySubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestConsideredRiskySubscriber extends Subscriber implements ConsideredRiskySubscriber -{ - public function notify(ConsideredRisky $event): void - { - $this->collector()->testConsideredRisky($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestErroredSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestErroredSubscriber.php deleted file mode 100644 index 272c9924..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestErroredSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\Errored; -use PHPUnit\Event\Test\ErroredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestErroredSubscriber extends Subscriber implements ErroredSubscriber -{ - public function notify(Errored $event): void - { - $this->collector()->testErrored($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestFailedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestFailedSubscriber.php deleted file mode 100644 index c0b059df..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestFailedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\Failed; -use PHPUnit\Event\Test\FailedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestFailedSubscriber extends Subscriber implements FailedSubscriber -{ - public function notify(Failed $event): void - { - $this->collector()->testFailed($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestFinishedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestFinishedSubscriber.php deleted file mode 100644 index 6ce115b4..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestFinishedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\Finished; -use PHPUnit\Event\Test\FinishedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestFinishedSubscriber extends Subscriber implements FinishedSubscriber -{ - public function notify(Finished $event): void - { - $this->collector()->testFinished($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestMarkedIncompleteSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestMarkedIncompleteSubscriber.php deleted file mode 100644 index b57a0984..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestMarkedIncompleteSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\MarkedIncomplete; -use PHPUnit\Event\Test\MarkedIncompleteSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestMarkedIncompleteSubscriber extends Subscriber implements MarkedIncompleteSubscriber -{ - public function notify(MarkedIncomplete $event): void - { - $this->collector()->testMarkedIncomplete($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestPreparedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestPreparedSubscriber.php deleted file mode 100644 index b68c0d5e..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestPreparedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\Prepared; -use PHPUnit\Event\Test\PreparedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestPreparedSubscriber extends Subscriber implements PreparedSubscriber -{ - public function notify(Prepared $event): void - { - $this->collector()->testPrepared(); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestRunnerTriggeredDeprecationSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestRunnerTriggeredDeprecationSubscriber.php deleted file mode 100644 index 0550adae..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestRunnerTriggeredDeprecationSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\TestRunner\DeprecationTriggered; -use PHPUnit\Event\TestRunner\DeprecationTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestRunnerTriggeredDeprecationSubscriber extends Subscriber implements DeprecationTriggeredSubscriber -{ - public function notify(DeprecationTriggered $event): void - { - $this->collector()->testRunnerTriggeredDeprecation($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestRunnerTriggeredWarningSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestRunnerTriggeredWarningSubscriber.php deleted file mode 100644 index b66e7494..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestRunnerTriggeredWarningSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\TestRunner\WarningTriggered; -use PHPUnit\Event\TestRunner\WarningTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestRunnerTriggeredWarningSubscriber extends Subscriber implements WarningTriggeredSubscriber -{ - public function notify(WarningTriggered $event): void - { - $this->collector()->testRunnerTriggeredWarning($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSkippedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSkippedSubscriber.php deleted file mode 100644 index 4cc44545..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSkippedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\Skipped; -use PHPUnit\Event\Test\SkippedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestSkippedSubscriber extends Subscriber implements SkippedSubscriber -{ - public function notify(Skipped $event): void - { - $this->collector()->testSkipped($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSuiteFinishedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSuiteFinishedSubscriber.php deleted file mode 100644 index 125cd519..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSuiteFinishedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\TestSuite\Finished; -use PHPUnit\Event\TestSuite\FinishedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestSuiteFinishedSubscriber extends Subscriber implements FinishedSubscriber -{ - public function notify(Finished $event): void - { - $this->collector()->testSuiteFinished($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSuiteSkippedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSuiteSkippedSubscriber.php deleted file mode 100644 index bf26b15c..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSuiteSkippedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\TestSuite\Skipped; -use PHPUnit\Event\TestSuite\SkippedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestSuiteSkippedSubscriber extends Subscriber implements SkippedSubscriber -{ - public function notify(Skipped $event): void - { - $this->collector()->testSuiteSkipped($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSuiteStartedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSuiteStartedSubscriber.php deleted file mode 100644 index ef8c8d09..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSuiteStartedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\TestSuite\Started; -use PHPUnit\Event\TestSuite\StartedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestSuiteStartedSubscriber extends Subscriber implements StartedSubscriber -{ - public function notify(Started $event): void - { - $this->collector()->testSuiteStarted($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredDeprecationSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredDeprecationSubscriber.php deleted file mode 100644 index 6185723e..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredDeprecationSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\DeprecationTriggered; -use PHPUnit\Event\Test\DeprecationTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredDeprecationSubscriber extends Subscriber implements DeprecationTriggeredSubscriber -{ - public function notify(DeprecationTriggered $event): void - { - $this->collector()->testTriggeredDeprecation($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredErrorSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredErrorSubscriber.php deleted file mode 100644 index c5daf0d7..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredErrorSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\ErrorTriggered; -use PHPUnit\Event\Test\ErrorTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredErrorSubscriber extends Subscriber implements ErrorTriggeredSubscriber -{ - public function notify(ErrorTriggered $event): void - { - $this->collector()->testTriggeredError($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredNoticeSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredNoticeSubscriber.php deleted file mode 100644 index e0c4b55a..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredNoticeSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\NoticeTriggered; -use PHPUnit\Event\Test\NoticeTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredNoticeSubscriber extends Subscriber implements NoticeTriggeredSubscriber -{ - public function notify(NoticeTriggered $event): void - { - $this->collector()->testTriggeredNotice($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpDeprecationSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpDeprecationSubscriber.php deleted file mode 100644 index b0ddcba0..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpDeprecationSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\PhpDeprecationTriggered; -use PHPUnit\Event\Test\PhpDeprecationTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredPhpDeprecationSubscriber extends Subscriber implements PhpDeprecationTriggeredSubscriber -{ - public function notify(PhpDeprecationTriggered $event): void - { - $this->collector()->testTriggeredPhpDeprecation($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpNoticeSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpNoticeSubscriber.php deleted file mode 100644 index 3f6e54c3..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpNoticeSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\PhpNoticeTriggered; -use PHPUnit\Event\Test\PhpNoticeTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredPhpNoticeSubscriber extends Subscriber implements PhpNoticeTriggeredSubscriber -{ - public function notify(PhpNoticeTriggered $event): void - { - $this->collector()->testTriggeredPhpNotice($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpWarningSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpWarningSubscriber.php deleted file mode 100644 index c8af2899..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpWarningSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\PhpWarningTriggered; -use PHPUnit\Event\Test\PhpWarningTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredPhpWarningSubscriber extends Subscriber implements PhpWarningTriggeredSubscriber -{ - public function notify(PhpWarningTriggered $event): void - { - $this->collector()->testTriggeredPhpWarning($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php deleted file mode 100644 index 704895be..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\PhpunitDeprecationTriggered; -use PHPUnit\Event\Test\PhpunitDeprecationTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredPhpunitDeprecationSubscriber extends Subscriber implements PhpunitDeprecationTriggeredSubscriber -{ - public function notify(PhpunitDeprecationTriggered $event): void - { - $this->collector()->testTriggeredPhpunitDeprecation($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpunitErrorSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpunitErrorSubscriber.php deleted file mode 100644 index 0fcb0176..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpunitErrorSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\PhpunitErrorTriggered; -use PHPUnit\Event\Test\PhpunitErrorTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredPhpunitErrorSubscriber extends Subscriber implements PhpunitErrorTriggeredSubscriber -{ - public function notify(PhpunitErrorTriggered $event): void - { - $this->collector()->testTriggeredPhpunitError($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpunitWarningSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpunitWarningSubscriber.php deleted file mode 100644 index 6c6c49ad..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpunitWarningSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\PhpunitWarningTriggered; -use PHPUnit\Event\Test\PhpunitWarningTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredPhpunitWarningSubscriber extends Subscriber implements PhpunitWarningTriggeredSubscriber -{ - public function notify(PhpunitWarningTriggered $event): void - { - $this->collector()->testTriggeredPhpunitWarning($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredWarningSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredWarningSubscriber.php deleted file mode 100644 index a68d1e23..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredWarningSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\WarningTriggered; -use PHPUnit\Event\Test\WarningTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredWarningSubscriber extends Subscriber implements WarningTriggeredSubscriber -{ - public function notify(WarningTriggered $event): void - { - $this->collector()->testTriggeredWarning($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/TestResult.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/TestResult.php deleted file mode 100644 index db9d4559..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestResult/TestResult.php +++ /dev/null @@ -1,576 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use function count; -use PHPUnit\Event\Test\BeforeFirstTestMethodErrored; -use PHPUnit\Event\Test\ConsideredRisky; -use PHPUnit\Event\Test\Errored; -use PHPUnit\Event\Test\Failed; -use PHPUnit\Event\Test\MarkedIncomplete; -use PHPUnit\Event\Test\PhpunitDeprecationTriggered; -use PHPUnit\Event\Test\PhpunitErrorTriggered; -use PHPUnit\Event\Test\PhpunitWarningTriggered; -use PHPUnit\Event\Test\Skipped as TestSkipped; -use PHPUnit\Event\TestRunner\DeprecationTriggered as TestRunnerDeprecationTriggered; -use PHPUnit\Event\TestRunner\WarningTriggered as TestRunnerWarningTriggered; -use PHPUnit\Event\TestSuite\Skipped as TestSuiteSkipped; -use PHPUnit\TestRunner\TestResult\Issues\Issue; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestResult -{ - private readonly int $numberOfTests; - private readonly int $numberOfTestsRun; - private readonly int $numberOfAssertions; - - /** - * @psalm-var list - */ - private readonly array $testErroredEvents; - - /** - * @psalm-var list - */ - private readonly array $testFailedEvents; - - /** - * @psalm-var list - */ - private readonly array $testMarkedIncompleteEvents; - - /** - * @psalm-var list - */ - private readonly array $testSuiteSkippedEvents; - - /** - * @psalm-var list - */ - private readonly array $testSkippedEvents; - - /** - * @psalm-var array> - */ - private readonly array $testConsideredRiskyEvents; - - /** - * @psalm-var array> - */ - private readonly array $testTriggeredPhpunitDeprecationEvents; - - /** - * @psalm-var array> - */ - private readonly array $testTriggeredPhpunitErrorEvents; - - /** - * @psalm-var array> - */ - private readonly array $testTriggeredPhpunitWarningEvents; - - /** - * @psalm-var list - */ - private readonly array $testRunnerTriggeredDeprecationEvents; - - /** - * @psalm-var list - */ - private readonly array $testRunnerTriggeredWarningEvents; - - /** - * @psalm-var list - */ - private readonly array $errors; - - /** - * @psalm-var list - */ - private readonly array $deprecations; - - /** - * @psalm-var list - */ - private readonly array $notices; - - /** - * @psalm-var list - */ - private readonly array $warnings; - - /** - * @psalm-var list - */ - private readonly array $phpDeprecations; - - /** - * @psalm-var list - */ - private readonly array $phpNotices; - - /** - * @psalm-var list - */ - private readonly array $phpWarnings; - - /** - * @psalm-var non-negative-int - */ - private readonly int $numberOfIssuesIgnoredByBaseline; - - /** - * @psalm-param list $testErroredEvents - * @psalm-param list $testFailedEvents - * @psalm-param array> $testConsideredRiskyEvents - * @psalm-param list $testSuiteSkippedEvents - * @psalm-param list $testSkippedEvents - * @psalm-param list $testMarkedIncompleteEvents - * @psalm-param array> $testTriggeredPhpunitDeprecationEvents - * @psalm-param array> $testTriggeredPhpunitErrorEvents - * @psalm-param array> $testTriggeredPhpunitWarningEvents - * @psalm-param list $testRunnerTriggeredDeprecationEvents - * @psalm-param list $testRunnerTriggeredWarningEvents - * @psalm-param list $errors - * @psalm-param list $deprecations - * @psalm-param list $notices - * @psalm-param list $warnings - * @psalm-param list $phpDeprecations - * @psalm-param list $phpNotices - * @psalm-param list $phpWarnings - * @psalm-param non-negative-int $numberOfIssuesIgnoredByBaseline - */ - public function __construct(int $numberOfTests, int $numberOfTestsRun, int $numberOfAssertions, array $testErroredEvents, array $testFailedEvents, array $testConsideredRiskyEvents, array $testSuiteSkippedEvents, array $testSkippedEvents, array $testMarkedIncompleteEvents, array $testTriggeredPhpunitDeprecationEvents, array $testTriggeredPhpunitErrorEvents, array $testTriggeredPhpunitWarningEvents, array $testRunnerTriggeredDeprecationEvents, array $testRunnerTriggeredWarningEvents, array $errors, array $deprecations, array $notices, array $warnings, array $phpDeprecations, array $phpNotices, array $phpWarnings, int $numberOfIssuesIgnoredByBaseline) - { - $this->numberOfTests = $numberOfTests; - $this->numberOfTestsRun = $numberOfTestsRun; - $this->numberOfAssertions = $numberOfAssertions; - $this->testErroredEvents = $testErroredEvents; - $this->testFailedEvents = $testFailedEvents; - $this->testConsideredRiskyEvents = $testConsideredRiskyEvents; - $this->testSuiteSkippedEvents = $testSuiteSkippedEvents; - $this->testSkippedEvents = $testSkippedEvents; - $this->testMarkedIncompleteEvents = $testMarkedIncompleteEvents; - $this->testTriggeredPhpunitDeprecationEvents = $testTriggeredPhpunitDeprecationEvents; - $this->testTriggeredPhpunitErrorEvents = $testTriggeredPhpunitErrorEvents; - $this->testTriggeredPhpunitWarningEvents = $testTriggeredPhpunitWarningEvents; - $this->testRunnerTriggeredDeprecationEvents = $testRunnerTriggeredDeprecationEvents; - $this->testRunnerTriggeredWarningEvents = $testRunnerTriggeredWarningEvents; - $this->errors = $errors; - $this->deprecations = $deprecations; - $this->notices = $notices; - $this->warnings = $warnings; - $this->phpDeprecations = $phpDeprecations; - $this->phpNotices = $phpNotices; - $this->phpWarnings = $phpWarnings; - $this->numberOfIssuesIgnoredByBaseline = $numberOfIssuesIgnoredByBaseline; - } - - public function numberOfTestsRun(): int - { - return $this->numberOfTestsRun; - } - - public function numberOfAssertions(): int - { - return $this->numberOfAssertions; - } - - /** - * @psalm-return list - */ - public function testErroredEvents(): array - { - return $this->testErroredEvents; - } - - public function numberOfTestErroredEvents(): int - { - return count($this->testErroredEvents); - } - - public function hasTestErroredEvents(): bool - { - return $this->numberOfTestErroredEvents() > 0; - } - - /** - * @psalm-return list - */ - public function testFailedEvents(): array - { - return $this->testFailedEvents; - } - - public function numberOfTestFailedEvents(): int - { - return count($this->testFailedEvents); - } - - public function hasTestFailedEvents(): bool - { - return $this->numberOfTestFailedEvents() > 0; - } - - /** - * @psalm-return array> - */ - public function testConsideredRiskyEvents(): array - { - return $this->testConsideredRiskyEvents; - } - - public function numberOfTestsWithTestConsideredRiskyEvents(): int - { - return count($this->testConsideredRiskyEvents); - } - - public function hasTestConsideredRiskyEvents(): bool - { - return $this->numberOfTestsWithTestConsideredRiskyEvents() > 0; - } - - /** - * @psalm-return list - */ - public function testSuiteSkippedEvents(): array - { - return $this->testSuiteSkippedEvents; - } - - public function numberOfTestSuiteSkippedEvents(): int - { - return count($this->testSuiteSkippedEvents); - } - - public function hasTestSuiteSkippedEvents(): bool - { - return $this->numberOfTestSuiteSkippedEvents() > 0; - } - - /** - * @psalm-return list - */ - public function testSkippedEvents(): array - { - return $this->testSkippedEvents; - } - - public function numberOfTestSkippedEvents(): int - { - return count($this->testSkippedEvents); - } - - public function hasTestSkippedEvents(): bool - { - return $this->numberOfTestSkippedEvents() > 0; - } - - /** - * @psalm-return list - */ - public function testMarkedIncompleteEvents(): array - { - return $this->testMarkedIncompleteEvents; - } - - public function numberOfTestMarkedIncompleteEvents(): int - { - return count($this->testMarkedIncompleteEvents); - } - - public function hasTestMarkedIncompleteEvents(): bool - { - return $this->numberOfTestMarkedIncompleteEvents() > 0; - } - - /** - * @psalm-return array> - */ - public function testTriggeredPhpunitDeprecationEvents(): array - { - return $this->testTriggeredPhpunitDeprecationEvents; - } - - public function numberOfTestsWithTestTriggeredPhpunitDeprecationEvents(): int - { - return count($this->testTriggeredPhpunitDeprecationEvents); - } - - public function hasTestTriggeredPhpunitDeprecationEvents(): bool - { - return $this->numberOfTestsWithTestTriggeredPhpunitDeprecationEvents() > 0; - } - - /** - * @psalm-return array> - */ - public function testTriggeredPhpunitErrorEvents(): array - { - return $this->testTriggeredPhpunitErrorEvents; - } - - public function numberOfTestsWithTestTriggeredPhpunitErrorEvents(): int - { - return count($this->testTriggeredPhpunitErrorEvents); - } - - public function hasTestTriggeredPhpunitErrorEvents(): bool - { - return $this->numberOfTestsWithTestTriggeredPhpunitErrorEvents() > 0; - } - - /** - * @psalm-return array> - */ - public function testTriggeredPhpunitWarningEvents(): array - { - return $this->testTriggeredPhpunitWarningEvents; - } - - public function numberOfTestsWithTestTriggeredPhpunitWarningEvents(): int - { - return count($this->testTriggeredPhpunitWarningEvents); - } - - public function hasTestTriggeredPhpunitWarningEvents(): bool - { - return $this->numberOfTestsWithTestTriggeredPhpunitWarningEvents() > 0; - } - - /** - * @psalm-return list - */ - public function testRunnerTriggeredDeprecationEvents(): array - { - return $this->testRunnerTriggeredDeprecationEvents; - } - - public function numberOfTestRunnerTriggeredDeprecationEvents(): int - { - return count($this->testRunnerTriggeredDeprecationEvents); - } - - public function hasTestRunnerTriggeredDeprecationEvents(): bool - { - return $this->numberOfTestRunnerTriggeredDeprecationEvents() > 0; - } - - /** - * @psalm-return list - */ - public function testRunnerTriggeredWarningEvents(): array - { - return $this->testRunnerTriggeredWarningEvents; - } - - public function numberOfTestRunnerTriggeredWarningEvents(): int - { - return count($this->testRunnerTriggeredWarningEvents); - } - - public function hasTestRunnerTriggeredWarningEvents(): bool - { - return $this->numberOfTestRunnerTriggeredWarningEvents() > 0; - } - - public function wasSuccessful(): bool - { - return $this->wasSuccessfulIgnoringPhpunitWarnings() && - !$this->hasTestTriggeredPhpunitErrorEvents() && - !$this->hasTestRunnerTriggeredWarningEvents() && - !$this->hasTestTriggeredPhpunitWarningEvents(); - } - - public function wasSuccessfulIgnoringPhpunitWarnings(): bool - { - return !$this->hasTestErroredEvents() && - !$this->hasTestFailedEvents(); - } - - public function wasSuccessfulAndNoTestHasIssues(): bool - { - return $this->wasSuccessful() && !$this->hasTestsWithIssues(); - } - - public function hasTestsWithIssues(): bool - { - return $this->hasRiskyTests() || - $this->hasIncompleteTests() || - $this->hasDeprecations() || - !empty($this->errors) || - $this->hasNotices() || - $this->hasWarnings(); - } - - /** - * @psalm-return list - */ - public function errors(): array - { - return $this->errors; - } - - /** - * @psalm-return list - */ - public function deprecations(): array - { - return $this->deprecations; - } - - /** - * @psalm-return list - */ - public function notices(): array - { - return $this->notices; - } - - /** - * @psalm-return list - */ - public function warnings(): array - { - return $this->warnings; - } - - /** - * @psalm-return list - */ - public function phpDeprecations(): array - { - return $this->phpDeprecations; - } - - /** - * @psalm-return list - */ - public function phpNotices(): array - { - return $this->phpNotices; - } - - /** - * @psalm-return list - */ - public function phpWarnings(): array - { - return $this->phpWarnings; - } - - public function hasTests(): bool - { - return $this->numberOfTests > 0; - } - - public function hasErrors(): bool - { - return $this->numberOfErrors() > 0; - } - - public function numberOfErrors(): int - { - return $this->numberOfTestErroredEvents() + - count($this->errors) + - $this->numberOfTestsWithTestTriggeredPhpunitErrorEvents(); - } - - public function hasDeprecations(): bool - { - return $this->numberOfDeprecations() > 0; - } - - public function hasPhpOrUserDeprecations(): bool - { - return $this->numberOfPhpOrUserDeprecations() > 0; - } - - public function numberOfPhpOrUserDeprecations(): int - { - return count($this->deprecations) + - count($this->phpDeprecations); - } - - public function hasPhpunitDeprecations(): bool - { - return $this->numberOfPhpunitDeprecations() > 0; - } - - public function numberOfPhpunitDeprecations(): int - { - return count($this->testTriggeredPhpunitDeprecationEvents) + - count($this->testRunnerTriggeredDeprecationEvents); - } - - public function numberOfDeprecations(): int - { - return count($this->deprecations) + - count($this->phpDeprecations) + - count($this->testTriggeredPhpunitDeprecationEvents) + - count($this->testRunnerTriggeredDeprecationEvents); - } - - public function hasNotices(): bool - { - return $this->numberOfNotices() > 0; - } - - public function numberOfNotices(): int - { - return count($this->notices) + - count($this->phpNotices); - } - - public function hasWarnings(): bool - { - return $this->numberOfWarnings() > 0; - } - - public function numberOfWarnings(): int - { - return count($this->warnings) + - count($this->phpWarnings) + - count($this->testTriggeredPhpunitWarningEvents) + - count($this->testRunnerTriggeredWarningEvents); - } - - public function hasIncompleteTests(): bool - { - return !empty($this->testMarkedIncompleteEvents); - } - - public function hasRiskyTests(): bool - { - return !empty($this->testConsideredRiskyEvents); - } - - public function hasSkippedTests(): bool - { - return !empty($this->testSkippedEvents); - } - - public function hasIssuesIgnoredByBaseline(): bool - { - return $this->numberOfIssuesIgnoredByBaseline > 0; - } - - /** - * @psalm-return non-negative-int - */ - public function numberOfIssuesIgnoredByBaseline(): int - { - return $this->numberOfIssuesIgnoredByBaseline; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestSuiteLoader.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestSuiteLoader.php deleted file mode 100644 index e3b984cf..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestSuiteLoader.php +++ /dev/null @@ -1,143 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use function array_diff; -use function array_values; -use function basename; -use function get_declared_classes; -use function realpath; -use function str_ends_with; -use function strpos; -use function strtolower; -use function substr; -use PHPUnit\Framework\TestCase; -use ReflectionClass; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestSuiteLoader -{ - /** - * @psalm-var list - */ - private static array $declaredClasses = []; - - /** - * @psalm-var array> - */ - private static array $fileToClassesMap = []; - - /** - * @throws Exception - */ - public function load(string $suiteClassFile): ReflectionClass - { - $suiteClassFile = realpath($suiteClassFile); - $suiteClassName = $this->classNameFromFileName($suiteClassFile); - $loadedClasses = $this->loadSuiteClassFile($suiteClassFile); - - foreach ($loadedClasses as $className) { - /** @noinspection PhpUnhandledExceptionInspection */ - $class = new ReflectionClass($className); - - if ($class->isAnonymous()) { - continue; - } - - if ($class->getFileName() !== $suiteClassFile) { - continue; - } - - if (!$class->isSubclassOf(TestCase::class)) { - continue; - } - - if (!str_ends_with(strtolower($class->getShortName()), strtolower($suiteClassName))) { - continue; - } - - if (!$class->isAbstract()) { - return $class; - } - - $e = new ClassIsAbstractException($class->getName(), $suiteClassFile); - } - - if (isset($e)) { - throw $e; - } - - foreach ($loadedClasses as $className) { - if (str_ends_with(strtolower($className), strtolower($suiteClassName))) { - throw new ClassDoesNotExtendTestCaseException($className, $suiteClassFile); - } - } - - throw new ClassCannotBeFoundException($suiteClassName, $suiteClassFile); - } - - private function classNameFromFileName(string $suiteClassFile): string - { - $className = basename($suiteClassFile, '.php'); - $dotPos = strpos($className, '.'); - - if ($dotPos !== false) { - $className = substr($className, 0, $dotPos); - } - - return $className; - } - - /** - * @psalm-return list - */ - private function loadSuiteClassFile(string $suiteClassFile): array - { - if (isset(self::$fileToClassesMap[$suiteClassFile])) { - return self::$fileToClassesMap[$suiteClassFile]; - } - - if (empty(self::$declaredClasses)) { - self::$declaredClasses = get_declared_classes(); - } - - require_once $suiteClassFile; - - $loadedClasses = array_values( - array_diff( - get_declared_classes(), - self::$declaredClasses, - ), - ); - - foreach ($loadedClasses as $loadedClass) { - /** @noinspection PhpUnhandledExceptionInspection */ - $class = new ReflectionClass($loadedClass); - - if (!isset(self::$fileToClassesMap[$class->getFileName()])) { - self::$fileToClassesMap[$class->getFileName()] = []; - } - - self::$fileToClassesMap[$class->getFileName()][] = $class->getName(); - } - - self::$declaredClasses = get_declared_classes(); - - if (empty($loadedClasses)) { - return self::$declaredClasses; - } - - return $loadedClasses; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestSuiteSorter.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestSuiteSorter.php deleted file mode 100644 index b5c0c19d..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/TestSuiteSorter.php +++ /dev/null @@ -1,344 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use function array_diff; -use function array_merge; -use function array_reverse; -use function array_splice; -use function count; -use function in_array; -use function max; -use function shuffle; -use function usort; -use PHPUnit\Framework\DataProviderTestSuite; -use PHPUnit\Framework\Reorderable; -use PHPUnit\Framework\Test; -use PHPUnit\Framework\TestCase; -use PHPUnit\Framework\TestSuite; -use PHPUnit\Runner\ResultCache\NullResultCache; -use PHPUnit\Runner\ResultCache\ResultCache; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestSuiteSorter -{ - /** - * @var int - */ - public const ORDER_DEFAULT = 0; - - /** - * @var int - */ - public const ORDER_RANDOMIZED = 1; - - /** - * @var int - */ - public const ORDER_REVERSED = 2; - - /** - * @var int - */ - public const ORDER_DEFECTS_FIRST = 3; - - /** - * @var int - */ - public const ORDER_DURATION = 4; - - /** - * @var int - */ - public const ORDER_SIZE = 5; - - private const SIZE_SORT_WEIGHT = [ - 'small' => 1, - 'medium' => 2, - 'large' => 3, - 'unknown' => 4, - ]; - - /** - * @psalm-var array Associative array of (string => DEFECT_SORT_WEIGHT) elements - */ - private array $defectSortOrder = []; - private readonly ResultCache $cache; - - /** - * @psalm-var array A list of normalized names of tests before reordering - */ - private array $originalExecutionOrder = []; - - /** - * @psalm-var array A list of normalized names of tests affected by reordering - */ - private array $executionOrder = []; - - public function __construct(?ResultCache $cache = null) - { - $this->cache = $cache ?? new NullResultCache; - } - - /** - * @throws Exception - */ - public function reorderTestsInSuite(Test $suite, int $order, bool $resolveDependencies, int $orderDefects, bool $isRootTestSuite = true): void - { - $allowedOrders = [ - self::ORDER_DEFAULT, - self::ORDER_REVERSED, - self::ORDER_RANDOMIZED, - self::ORDER_DURATION, - self::ORDER_SIZE, - ]; - - if (!in_array($order, $allowedOrders, true)) { - throw new InvalidOrderException; - } - - $allowedOrderDefects = [ - self::ORDER_DEFAULT, - self::ORDER_DEFECTS_FIRST, - ]; - - if (!in_array($orderDefects, $allowedOrderDefects, true)) { - throw new InvalidOrderException; - } - - if ($isRootTestSuite) { - $this->originalExecutionOrder = $this->calculateTestExecutionOrder($suite); - } - - if ($suite instanceof TestSuite) { - foreach ($suite as $_suite) { - $this->reorderTestsInSuite($_suite, $order, $resolveDependencies, $orderDefects, false); - } - - if ($orderDefects === self::ORDER_DEFECTS_FIRST) { - $this->addSuiteToDefectSortOrder($suite); - } - - $this->sort($suite, $order, $resolveDependencies, $orderDefects); - } - - if ($isRootTestSuite) { - $this->executionOrder = $this->calculateTestExecutionOrder($suite); - } - } - - public function getOriginalExecutionOrder(): array - { - return $this->originalExecutionOrder; - } - - public function getExecutionOrder(): array - { - return $this->executionOrder; - } - - private function sort(TestSuite $suite, int $order, bool $resolveDependencies, int $orderDefects): void - { - if (empty($suite->tests())) { - return; - } - - if ($order === self::ORDER_REVERSED) { - $suite->setTests($this->reverse($suite->tests())); - } elseif ($order === self::ORDER_RANDOMIZED) { - $suite->setTests($this->randomize($suite->tests())); - } elseif ($order === self::ORDER_DURATION) { - $suite->setTests($this->sortByDuration($suite->tests())); - } elseif ($order === self::ORDER_SIZE) { - $suite->setTests($this->sortBySize($suite->tests())); - } - - if ($orderDefects === self::ORDER_DEFECTS_FIRST) { - $suite->setTests($this->sortDefectsFirst($suite->tests())); - } - - if ($resolveDependencies && !($suite instanceof DataProviderTestSuite)) { - $tests = $suite->tests(); - - $suite->setTests($this->resolveDependencies($tests)); - } - } - - private function addSuiteToDefectSortOrder(TestSuite $suite): void - { - $max = 0; - - foreach ($suite->tests() as $test) { - if (!$test instanceof Reorderable) { - continue; - } - - if (!isset($this->defectSortOrder[$test->sortId()])) { - $this->defectSortOrder[$test->sortId()] = $this->cache->status($test->sortId())->asInt(); - $max = max($max, $this->defectSortOrder[$test->sortId()]); - } - } - - $this->defectSortOrder[$suite->sortId()] = $max; - } - - private function reverse(array $tests): array - { - return array_reverse($tests); - } - - private function randomize(array $tests): array - { - shuffle($tests); - - return $tests; - } - - private function sortDefectsFirst(array $tests): array - { - usort( - $tests, - fn ($left, $right) => $this->cmpDefectPriorityAndTime($left, $right), - ); - - return $tests; - } - - private function sortByDuration(array $tests): array - { - usort( - $tests, - fn ($left, $right) => $this->cmpDuration($left, $right), - ); - - return $tests; - } - - private function sortBySize(array $tests): array - { - usort( - $tests, - fn ($left, $right) => $this->cmpSize($left, $right), - ); - - return $tests; - } - - /** - * Comparator callback function to sort tests for "reach failure as fast as possible". - * - * 1. sort tests by defect weight defined in self::DEFECT_SORT_WEIGHT - * 2. when tests are equally defective, sort the fastest to the front - * 3. do not reorder successful tests - */ - private function cmpDefectPriorityAndTime(Test $a, Test $b): int - { - if (!($a instanceof Reorderable && $b instanceof Reorderable)) { - return 0; - } - - $priorityA = $this->defectSortOrder[$a->sortId()] ?? 0; - $priorityB = $this->defectSortOrder[$b->sortId()] ?? 0; - - if ($priorityB <=> $priorityA) { - // Sort defect weight descending - return $priorityB <=> $priorityA; - } - - if ($priorityA || $priorityB) { - return $this->cmpDuration($a, $b); - } - - // do not change execution order - return 0; - } - - /** - * Compares test duration for sorting tests by duration ascending. - */ - private function cmpDuration(Test $a, Test $b): int - { - if (!($a instanceof Reorderable && $b instanceof Reorderable)) { - return 0; - } - - return $this->cache->time($a->sortId()) <=> $this->cache->time($b->sortId()); - } - - /** - * Compares test size for sorting tests small->medium->large->unknown. - */ - private function cmpSize(Test $a, Test $b): int - { - $sizeA = ($a instanceof TestCase || $a instanceof DataProviderTestSuite) - ? $a->size()->asString() - : 'unknown'; - $sizeB = ($b instanceof TestCase || $b instanceof DataProviderTestSuite) - ? $b->size()->asString() - : 'unknown'; - - return self::SIZE_SORT_WEIGHT[$sizeA] <=> self::SIZE_SORT_WEIGHT[$sizeB]; - } - - /** - * Reorder Tests within a TestCase in such a way as to resolve as many dependencies as possible. - * The algorithm will leave the tests in original running order when it can. - * For more details see the documentation for test dependencies. - * - * Short description of algorithm: - * 1. Pick the next Test from remaining tests to be checked for dependencies. - * 2. If the test has no dependencies: mark done, start again from the top - * 3. If the test has dependencies but none left to do: mark done, start again from the top - * 4. When we reach the end add any leftover tests to the end. These will be marked 'skipped' during execution. - * - * @psalm-param array $tests - * - * @psalm-return array - */ - private function resolveDependencies(array $tests): array - { - $newTestOrder = []; - $i = 0; - $provided = []; - - do { - if ([] === array_diff($tests[$i]->requires(), $provided)) { - $provided = array_merge($provided, $tests[$i]->provides()); - $newTestOrder = array_merge($newTestOrder, array_splice($tests, $i, 1)); - $i = 0; - } else { - $i++; - } - } while (!empty($tests) && ($i < count($tests))); - - return array_merge($newTestOrder, $tests); - } - - private function calculateTestExecutionOrder(Test $suite): array - { - $tests = []; - - if ($suite instanceof TestSuite) { - foreach ($suite->tests() as $test) { - if (!$test instanceof TestSuite && $test instanceof Reorderable) { - $tests[] = $test->sortId(); - } else { - $tests = array_merge($tests, $this->calculateTestExecutionOrder($test)); - } - } - } - - return $tests; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Version.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Version.php deleted file mode 100644 index e224de86..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Runner/Version.php +++ /dev/null @@ -1,63 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use function array_slice; -use function dirname; -use function explode; -use function implode; -use function str_contains; -use SebastianBergmann\Version as VersionId; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final class Version -{ - private static string $pharVersion = ''; - private static string $version = ''; - - /** - * Returns the current version of PHPUnit. - */ - public static function id(): string - { - if (self::$pharVersion !== '') { - return self::$pharVersion; - } - - if (self::$version === '') { - self::$version = (new VersionId('10.5.40', dirname(__DIR__, 2)))->asString(); - } - - return self::$version; - } - - public static function series(): string - { - if (str_contains(self::id(), '-')) { - $version = explode('-', self::id(), 2)[0]; - } else { - $version = self::id(); - } - - return implode('.', array_slice(explode('.', $version), 0, 2)); - } - - public static function majorVersionNumber(): int - { - return (int) explode('.', self::series())[0]; - } - - public static function getVersionString(): string - { - return 'PHPUnit ' . self::id() . ' by Sebastian Bergmann and contributors.'; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Application.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Application.php deleted file mode 100644 index d99c2433..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Application.php +++ /dev/null @@ -1,754 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI; - -use const PHP_EOL; -use const PHP_VERSION; -use function is_file; -use function is_readable; -use function printf; -use function realpath; -use function sprintf; -use function trim; -use function unlink; -use PHPUnit\Event\EventFacadeIsSealedException; -use PHPUnit\Event\Facade as EventFacade; -use PHPUnit\Event\UnknownSubscriberTypeException; -use PHPUnit\Framework\TestSuite; -use PHPUnit\Logging\EventLogger; -use PHPUnit\Logging\JUnit\JunitXmlLogger; -use PHPUnit\Logging\TeamCity\TeamCityLogger; -use PHPUnit\Logging\TestDox\HtmlRenderer as TestDoxHtmlRenderer; -use PHPUnit\Logging\TestDox\PlainTextRenderer as TestDoxTextRenderer; -use PHPUnit\Logging\TestDox\TestResultCollector as TestDoxResultCollector; -use PHPUnit\Metadata\Api\CodeCoverage as CodeCoverageMetadataApi; -use PHPUnit\Runner\Baseline\CannotLoadBaselineException; -use PHPUnit\Runner\Baseline\Generator as BaselineGenerator; -use PHPUnit\Runner\Baseline\Reader; -use PHPUnit\Runner\Baseline\Writer; -use PHPUnit\Runner\CodeCoverage; -use PHPUnit\Runner\DirectoryDoesNotExistException; -use PHPUnit\Runner\ErrorHandler; -use PHPUnit\Runner\Extension\ExtensionBootstrapper; -use PHPUnit\Runner\Extension\Facade as ExtensionFacade; -use PHPUnit\Runner\Extension\PharLoader; -use PHPUnit\Runner\GarbageCollection\GarbageCollectionHandler; -use PHPUnit\Runner\ResultCache\DefaultResultCache; -use PHPUnit\Runner\ResultCache\NullResultCache; -use PHPUnit\Runner\ResultCache\ResultCache; -use PHPUnit\Runner\ResultCache\ResultCacheHandler; -use PHPUnit\Runner\TestSuiteSorter; -use PHPUnit\Runner\Version; -use PHPUnit\TestRunner\TestResult\Facade as TestResultFacade; -use PHPUnit\TextUI\CliArguments\Builder; -use PHPUnit\TextUI\CliArguments\Configuration as CliConfiguration; -use PHPUnit\TextUI\CliArguments\Exception as ArgumentsException; -use PHPUnit\TextUI\CliArguments\XmlConfigurationFileFinder; -use PHPUnit\TextUI\Command\AtLeastVersionCommand; -use PHPUnit\TextUI\Command\GenerateConfigurationCommand; -use PHPUnit\TextUI\Command\ListGroupsCommand; -use PHPUnit\TextUI\Command\ListTestsAsTextCommand; -use PHPUnit\TextUI\Command\ListTestsAsXmlCommand; -use PHPUnit\TextUI\Command\ListTestSuitesCommand; -use PHPUnit\TextUI\Command\MigrateConfigurationCommand; -use PHPUnit\TextUI\Command\Result; -use PHPUnit\TextUI\Command\ShowHelpCommand; -use PHPUnit\TextUI\Command\ShowVersionCommand; -use PHPUnit\TextUI\Command\VersionCheckCommand; -use PHPUnit\TextUI\Command\WarmCodeCoverageCacheCommand; -use PHPUnit\TextUI\Configuration\CodeCoverageFilterRegistry; -use PHPUnit\TextUI\Configuration\Configuration; -use PHPUnit\TextUI\Configuration\PhpHandler; -use PHPUnit\TextUI\Configuration\Registry; -use PHPUnit\TextUI\Configuration\TestSuiteBuilder; -use PHPUnit\TextUI\Output\DefaultPrinter; -use PHPUnit\TextUI\Output\Facade as OutputFacade; -use PHPUnit\TextUI\Output\Printer; -use PHPUnit\TextUI\XmlConfiguration\Configuration as XmlConfiguration; -use PHPUnit\TextUI\XmlConfiguration\DefaultConfiguration; -use PHPUnit\TextUI\XmlConfiguration\Loader; -use PHPUnit\Util\Http\PhpDownloader; -use SebastianBergmann\Timer\Timer; -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Application -{ - public function run(array $argv): int - { - try { - EventFacade::emitter()->applicationStarted(); - - $cliConfiguration = $this->buildCliConfiguration($argv); - $pathToXmlConfigurationFile = (new XmlConfigurationFileFinder)->find($cliConfiguration); - - $this->executeCommandsThatOnlyRequireCliConfiguration($cliConfiguration, $pathToXmlConfigurationFile); - - $xmlConfiguration = $this->loadXmlConfiguration($pathToXmlConfigurationFile); - - $configuration = Registry::init( - $cliConfiguration, - $xmlConfiguration, - ); - - (new PhpHandler)->handle($configuration->php()); - - if ($configuration->hasBootstrap()) { - $this->loadBootstrapScript($configuration->bootstrap()); - } - - $this->executeCommandsThatRequireCompleteConfiguration($configuration, $cliConfiguration); - - $testSuite = $this->buildTestSuite($configuration); - - $this->executeCommandsThatRequireCliConfigurationAndTestSuite($cliConfiguration, $testSuite); - $this->executeHelpCommandWhenThereIsNothingElseToDo($configuration, $testSuite); - - $pharExtensions = null; - $extensionRequiresCodeCoverageCollection = false; - $extensionReplacesOutput = false; - $extensionReplacesProgressOutput = false; - $extensionReplacesResultOutput = false; - $extensionRequiresExportOfObjects = false; - - if (!$configuration->noExtensions()) { - if ($configuration->hasPharExtensionDirectory()) { - $pharExtensions = (new PharLoader)->loadPharExtensionsInDirectory( - $configuration->pharExtensionDirectory(), - ); - } - - $bootstrappedExtensions = $this->bootstrapExtensions($configuration); - $extensionRequiresCodeCoverageCollection = $bootstrappedExtensions['requiresCodeCoverageCollection']; - $extensionReplacesOutput = $bootstrappedExtensions['replacesOutput']; - $extensionReplacesProgressOutput = $bootstrappedExtensions['replacesProgressOutput']; - $extensionReplacesResultOutput = $bootstrappedExtensions['replacesResultOutput']; - $extensionRequiresExportOfObjects = $bootstrappedExtensions['requiresExportOfObjects']; - } - - if ($extensionRequiresExportOfObjects) { - EventFacade::emitter()->exportObjects(); - } - - CodeCoverage::instance()->init( - $configuration, - CodeCoverageFilterRegistry::instance(), - $extensionRequiresCodeCoverageCollection, - ); - - if (CodeCoverage::instance()->isActive()) { - CodeCoverage::instance()->ignoreLines( - (new CodeCoverageMetadataApi)->linesToBeIgnored($testSuite), - ); - } - - $printer = OutputFacade::init( - $configuration, - $extensionReplacesProgressOutput, - $extensionReplacesResultOutput, - ); - - if (!$configuration->debug() && !$extensionReplacesOutput) { - $this->writeRuntimeInformation($printer, $configuration); - $this->writePharExtensionInformation($printer, $pharExtensions); - $this->writeRandomSeedInformation($printer, $configuration); - - $printer->print(PHP_EOL); - } - - if ($configuration->debug()) { - EventFacade::instance()->registerTracer( - new EventLogger( - 'php://stdout', - false, - ), - ); - } - - $this->registerLogfileWriters($configuration); - - $testDoxResultCollector = $this->testDoxResultCollector($configuration); - - TestResultFacade::init(); - - $resultCache = $this->initializeTestResultCache($configuration); - - if ($configuration->controlGarbageCollector()) { - new GarbageCollectionHandler( - EventFacade::instance(), - $configuration->numberOfTestsBeforeGarbageCollection(), - ); - } - - $baselineGenerator = $this->configureBaseline($configuration); - - EventFacade::instance()->seal(); - - $timer = new Timer; - $timer->start(); - - $runner = new TestRunner; - - $runner->run( - $configuration, - $resultCache, - $testSuite, - ); - - $duration = $timer->stop(); - - $testDoxResult = null; - - if (isset($testDoxResultCollector)) { - $testDoxResult = $testDoxResultCollector->testMethodsGroupedByClass(); - } - - if ($testDoxResult !== null && - $configuration->hasLogfileTestdoxHtml()) { - try { - OutputFacade::printerFor($configuration->logfileTestdoxHtml())->print( - (new TestDoxHtmlRenderer)->render($testDoxResult), - ); - } catch (DirectoryDoesNotExistException|InvalidSocketException $e) { - EventFacade::emitter()->testRunnerTriggeredWarning( - sprintf( - 'Cannot log test results in TestDox HTML format to "%s": %s', - $configuration->logfileTestdoxHtml(), - $e->getMessage(), - ), - ); - } - } - - if ($testDoxResult !== null && - $configuration->hasLogfileTestdoxText()) { - try { - OutputFacade::printerFor($configuration->logfileTestdoxText())->print( - (new TestDoxTextRenderer)->render($testDoxResult), - ); - } catch (DirectoryDoesNotExistException|InvalidSocketException $e) { - EventFacade::emitter()->testRunnerTriggeredWarning( - sprintf( - 'Cannot log test results in TestDox plain text format to "%s": %s', - $configuration->logfileTestdoxText(), - $e->getMessage(), - ), - ); - } - } - - $result = TestResultFacade::result(); - - if (!$extensionReplacesResultOutput && !$configuration->debug()) { - OutputFacade::printResult($result, $testDoxResult, $duration); - } - - CodeCoverage::instance()->generateReports($printer, $configuration); - - if (isset($baselineGenerator)) { - (new Writer)->write( - $configuration->generateBaseline(), - $baselineGenerator->baseline(), - ); - - $printer->print( - sprintf( - PHP_EOL . 'Baseline written to %s.' . PHP_EOL, - realpath($configuration->generateBaseline()), - ), - ); - } - - $shellExitCode = (new ShellExitCodeCalculator)->calculate( - $configuration->failOnDeprecation(), - $configuration->failOnPhpunitDeprecation(), - $configuration->failOnEmptyTestSuite(), - $configuration->failOnIncomplete(), - $configuration->failOnNotice(), - $configuration->failOnRisky(), - $configuration->failOnSkipped(), - $configuration->failOnWarning(), - $result, - ); - - EventFacade::emitter()->applicationFinished($shellExitCode); - - return $shellExitCode; - // @codeCoverageIgnoreStart - } catch (Throwable $t) { - $this->exitWithCrashMessage($t); - } - // @codeCoverageIgnoreEnd - } - - private function execute(Command\Command $command, bool $requiresResultCollectedFromEvents = false): never - { - if ($requiresResultCollectedFromEvents) { - try { - TestResultFacade::init(); - EventFacade::instance()->seal(); - - $resultCollectedFromEvents = TestResultFacade::result(); - } catch (EventFacadeIsSealedException|UnknownSubscriberTypeException) { - } - } - - print Version::getVersionString() . PHP_EOL . PHP_EOL; - - $result = $command->execute(); - - print $result->output(); - - $shellExitCode = $result->shellExitCode(); - - if (isset($resultCollectedFromEvents) && - $resultCollectedFromEvents->hasTestTriggeredPhpunitErrorEvents()) { - $shellExitCode = Result::EXCEPTION; - - print PHP_EOL . PHP_EOL . 'There were errors:' . PHP_EOL; - - foreach ($resultCollectedFromEvents->testTriggeredPhpunitErrorEvents() as $events) { - foreach ($events as $event) { - print PHP_EOL . trim($event->message()) . PHP_EOL; - } - } - } - - exit($shellExitCode); - } - - private function loadBootstrapScript(string $filename): void - { - if (!is_readable($filename)) { - $this->exitWithErrorMessage( - sprintf( - 'Cannot open bootstrap script "%s"', - $filename, - ), - ); - } - - try { - include_once $filename; - } catch (Throwable $t) { - $message = sprintf( - 'Error in bootstrap script: %s:%s%s%s%s', - $t::class, - PHP_EOL, - $t->getMessage(), - PHP_EOL, - $t->getTraceAsString(), - ); - - while ($t = $t->getPrevious()) { - $message .= sprintf( - '%s%sPrevious error: %s:%s%s%s%s', - PHP_EOL, - PHP_EOL, - $t::class, - PHP_EOL, - $t->getMessage(), - PHP_EOL, - $t->getTraceAsString(), - ); - } - - $this->exitWithErrorMessage($message); - } - - EventFacade::emitter()->testRunnerBootstrapFinished($filename); - } - - private function buildCliConfiguration(array $argv): CliConfiguration - { - try { - $cliConfiguration = (new Builder)->fromParameters($argv); - } catch (ArgumentsException $e) { - $this->exitWithErrorMessage($e->getMessage()); - } - - return $cliConfiguration; - } - - private function loadXmlConfiguration(false|string $configurationFile): XmlConfiguration - { - if ($configurationFile === false) { - return DefaultConfiguration::create(); - } - - try { - return (new Loader)->load($configurationFile); - } catch (Throwable $e) { - $this->exitWithErrorMessage($e->getMessage()); - } - } - - private function buildTestSuite(Configuration $configuration): TestSuite - { - try { - return (new TestSuiteBuilder)->build($configuration); - } catch (Exception $e) { - $this->exitWithErrorMessage($e->getMessage()); - } - } - - /** - * @psalm-return array{requiresCodeCoverageCollection: bool, replacesOutput: bool, replacesProgressOutput: bool, replacesResultOutput: bool, requiresExportOfObjects: bool} - */ - private function bootstrapExtensions(Configuration $configuration): array - { - $facade = new ExtensionFacade; - - $extensionBootstrapper = new ExtensionBootstrapper( - $configuration, - $facade, - ); - - foreach ($configuration->extensionBootstrappers() as $bootstrapper) { - $extensionBootstrapper->bootstrap( - $bootstrapper['className'], - $bootstrapper['parameters'], - ); - } - - return [ - 'requiresCodeCoverageCollection' => $facade->requiresCodeCoverageCollection(), - 'replacesOutput' => $facade->replacesOutput(), - 'replacesProgressOutput' => $facade->replacesProgressOutput(), - 'replacesResultOutput' => $facade->replacesResultOutput(), - 'requiresExportOfObjects' => $facade->requiresExportOfObjects(), - ]; - } - - private function executeCommandsThatOnlyRequireCliConfiguration(CliConfiguration $cliConfiguration, false|string $configurationFile): void - { - if ($cliConfiguration->generateConfiguration()) { - $this->execute(new GenerateConfigurationCommand); - } - - if ($cliConfiguration->migrateConfiguration()) { - if ($configurationFile === false) { - $this->exitWithErrorMessage('No configuration file found to migrate'); - } - - $this->execute(new MigrateConfigurationCommand(realpath($configurationFile))); - } - - if ($cliConfiguration->hasAtLeastVersion()) { - $this->execute(new AtLeastVersionCommand($cliConfiguration->atLeastVersion())); - } - - if ($cliConfiguration->version()) { - $this->execute(new ShowVersionCommand); - } - - if ($cliConfiguration->checkVersion()) { - $this->execute(new VersionCheckCommand(new PhpDownloader, Version::majorVersionNumber(), Version::id())); - } - - if ($cliConfiguration->help()) { - $this->execute(new ShowHelpCommand(Result::SUCCESS)); - } - } - - private function executeCommandsThatRequireCliConfigurationAndTestSuite(CliConfiguration $cliConfiguration, TestSuite $testSuite): void - { - if ($cliConfiguration->listGroups()) { - $this->execute(new ListGroupsCommand($testSuite), true); - } - - if ($cliConfiguration->listTests()) { - $this->execute(new ListTestsAsTextCommand($testSuite), true); - } - - if ($cliConfiguration->hasListTestsXml()) { - $this->execute( - new ListTestsAsXmlCommand( - $cliConfiguration->listTestsXml(), - $testSuite, - ), - true, - ); - } - } - - private function executeCommandsThatRequireCompleteConfiguration(Configuration $configuration, CliConfiguration $cliConfiguration): void - { - if ($cliConfiguration->listSuites()) { - $this->execute(new ListTestSuitesCommand($configuration->testSuite())); - } - - if ($cliConfiguration->warmCoverageCache()) { - $this->execute(new WarmCodeCoverageCacheCommand($configuration, CodeCoverageFilterRegistry::instance())); - } - } - - private function executeHelpCommandWhenThereIsNothingElseToDo(Configuration $configuration, TestSuite $testSuite): void - { - if ($testSuite->isEmpty() && !$configuration->hasCliArguments() && $configuration->testSuite()->isEmpty()) { - $this->execute(new ShowHelpCommand(Result::FAILURE)); - } - } - - private function writeRuntimeInformation(Printer $printer, Configuration $configuration): void - { - $printer->print(Version::getVersionString() . PHP_EOL . PHP_EOL); - - $runtime = 'PHP ' . PHP_VERSION; - - if (CodeCoverage::instance()->isActive()) { - $runtime .= ' with ' . CodeCoverage::instance()->driver()->nameAndVersion(); - } - - $this->writeMessage($printer, 'Runtime', $runtime); - - if ($configuration->hasConfigurationFile()) { - $this->writeMessage( - $printer, - 'Configuration', - $configuration->configurationFile(), - ); - } - } - - /** - * @psalm-param ?list $pharExtensions - */ - private function writePharExtensionInformation(Printer $printer, ?array $pharExtensions): void - { - if ($pharExtensions === null) { - return; - } - - foreach ($pharExtensions as $extension) { - $this->writeMessage( - $printer, - 'Extension', - $extension, - ); - } - } - - private function writeMessage(Printer $printer, string $type, string $message): void - { - $printer->print( - sprintf( - "%-15s%s\n", - $type . ':', - $message, - ), - ); - } - - private function writeRandomSeedInformation(Printer $printer, Configuration $configuration): void - { - if ($configuration->executionOrder() === TestSuiteSorter::ORDER_RANDOMIZED) { - $this->writeMessage( - $printer, - 'Random Seed', - (string) $configuration->randomOrderSeed(), - ); - } - } - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - private function registerLogfileWriters(Configuration $configuration): void - { - if ($configuration->hasLogEventsText()) { - if (is_file($configuration->logEventsText())) { - unlink($configuration->logEventsText()); - } - - EventFacade::instance()->registerTracer( - new EventLogger( - $configuration->logEventsText(), - false, - ), - ); - } - - if ($configuration->hasLogEventsVerboseText()) { - if (is_file($configuration->logEventsVerboseText())) { - unlink($configuration->logEventsVerboseText()); - } - - EventFacade::instance()->registerTracer( - new EventLogger( - $configuration->logEventsVerboseText(), - true, - ), - ); - - EventFacade::emitter()->exportObjects(); - } - - if ($configuration->hasLogfileJunit()) { - try { - new JunitXmlLogger( - OutputFacade::printerFor($configuration->logfileJunit()), - EventFacade::instance(), - ); - } catch (DirectoryDoesNotExistException|InvalidSocketException $e) { - EventFacade::emitter()->testRunnerTriggeredWarning( - sprintf( - 'Cannot log test results in JUnit XML format to "%s": %s', - $configuration->logfileJunit(), - $e->getMessage(), - ), - ); - } - } - - if ($configuration->hasLogfileTeamcity()) { - try { - new TeamCityLogger( - DefaultPrinter::from( - $configuration->logfileTeamcity(), - ), - EventFacade::instance(), - ); - } catch (DirectoryDoesNotExistException|InvalidSocketException $e) { - EventFacade::emitter()->testRunnerTriggeredWarning( - sprintf( - 'Cannot log test results in TeamCity format to "%s": %s', - $configuration->logfileTeamcity(), - $e->getMessage(), - ), - ); - } - } - } - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - private function testDoxResultCollector(Configuration $configuration): ?TestDoxResultCollector - { - if ($configuration->hasLogfileTestdoxHtml() || - $configuration->hasLogfileTestdoxText() || - $configuration->outputIsTestDox()) { - return new TestDoxResultCollector( - EventFacade::instance(), - $configuration->source(), - ); - } - - return null; - } - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - private function initializeTestResultCache(Configuration $configuration): ResultCache - { - if ($configuration->cacheResult()) { - $cache = new DefaultResultCache($configuration->testResultCacheFile()); - - new ResultCacheHandler($cache, EventFacade::instance()); - - return $cache; - } - - return new NullResultCache; - } - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - private function configureBaseline(Configuration $configuration): ?BaselineGenerator - { - if ($configuration->hasGenerateBaseline()) { - return new BaselineGenerator( - EventFacade::instance(), - $configuration->source(), - ); - } - - if ($configuration->source()->useBaseline()) { - /** @psalm-suppress MissingThrowsDocblock */ - $baselineFile = $configuration->source()->baseline(); - $baseline = null; - - try { - $baseline = (new Reader)->read($baselineFile); - } catch (CannotLoadBaselineException $e) { - EventFacade::emitter()->testRunnerTriggeredWarning($e->getMessage()); - } - - if ($baseline !== null) { - ErrorHandler::instance()->use($baseline); - } - } - - return null; - } - - /** - * @codeCoverageIgnore - */ - private function exitWithCrashMessage(Throwable $t): never - { - $message = $t->getMessage(); - - if (empty(trim($message))) { - $message = '(no message)'; - } - - printf( - '%s%sAn error occurred inside PHPUnit.%s%sMessage: %s', - PHP_EOL, - PHP_EOL, - PHP_EOL, - PHP_EOL, - $message, - ); - - $first = true; - - if ($t->getPrevious()) { - $t = $t->getPrevious(); - } - - do { - printf( - '%s%s: %s:%d%s%s%s%s', - PHP_EOL, - $first ? 'Location' : 'Caused by', - $t->getFile(), - $t->getLine(), - PHP_EOL, - PHP_EOL, - $t->getTraceAsString(), - PHP_EOL, - ); - - $first = false; - } while ($t = $t->getPrevious()); - - exit(Result::CRASH); - } - - private function exitWithErrorMessage(string $message): never - { - print Version::getVersionString() . PHP_EOL . PHP_EOL . $message . PHP_EOL; - - exit(Result::EXCEPTION); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Command.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Command.php deleted file mode 100644 index 4194551e..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Command.php +++ /dev/null @@ -1,20 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Command; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -interface Command -{ - public function execute(): Result; -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Commands/AtLeastVersionCommand.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Commands/AtLeastVersionCommand.php deleted file mode 100644 index 06d78358..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Commands/AtLeastVersionCommand.php +++ /dev/null @@ -1,37 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Command; - -use function version_compare; -use PHPUnit\Runner\Version; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class AtLeastVersionCommand implements Command -{ - private readonly string $version; - - public function __construct(string $version) - { - $this->version = $version; - } - - public function execute(): Result - { - if (version_compare(Version::id(), $this->version, '>=')) { - return Result::from(); - } - - return Result::from('', Result::FAILURE); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Commands/GenerateConfigurationCommand.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Commands/GenerateConfigurationCommand.php deleted file mode 100644 index b71d8b04..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Commands/GenerateConfigurationCommand.php +++ /dev/null @@ -1,103 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Command; - -use const PHP_EOL; -use const STDIN; -use function fgets; -use function file_put_contents; -use function getcwd; -use function sprintf; -use function trim; -use PHPUnit\Runner\Version; -use PHPUnit\TextUI\XmlConfiguration\Generator; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class GenerateConfigurationCommand implements Command -{ - public function execute(): Result - { - print 'Generating phpunit.xml in ' . getcwd() . PHP_EOL . PHP_EOL; - print 'Bootstrap script (relative to path shown above; default: vendor/autoload.php): '; - - $bootstrapScript = $this->read(); - - print 'Tests directory (relative to path shown above; default: tests): '; - - $testsDirectory = $this->read(); - - print 'Source directory (relative to path shown above; default: src): '; - - $src = $this->read(); - - print 'Cache directory (relative to path shown above; default: .phpunit.cache): '; - - $cacheDirectory = $this->read(); - - if ($bootstrapScript === '') { - $bootstrapScript = 'vendor/autoload.php'; - } - - if ($testsDirectory === '') { - $testsDirectory = 'tests'; - } - - if ($src === '') { - $src = 'src'; - } - - if ($cacheDirectory === '') { - $cacheDirectory = '.phpunit.cache'; - } - - $generator = new Generator; - - $result = @file_put_contents( - 'phpunit.xml', - $generator->generateDefaultConfiguration( - Version::series(), - $bootstrapScript, - $testsDirectory, - $src, - $cacheDirectory, - ), - ); - - if ($result !== false) { - return Result::from( - sprintf( - PHP_EOL . 'Generated phpunit.xml in %s.' . PHP_EOL . - 'Make sure to exclude the %s directory from version control.' . PHP_EOL, - getcwd(), - $cacheDirectory, - ), - ); - } - - // @codeCoverageIgnoreStart - return Result::from( - sprintf( - PHP_EOL . 'Could not write phpunit.xml in %s.' . PHP_EOL, - getcwd(), - ), - Result::EXCEPTION, - ); - // @codeCoverageIgnoreEnd - } - - private function read(): string - { - return trim(fgets(STDIN)); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListGroupsCommand.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListGroupsCommand.php deleted file mode 100644 index f5f0fac0..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListGroupsCommand.php +++ /dev/null @@ -1,83 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Command; - -use const PHP_EOL; -use function sort; -use function sprintf; -use function str_starts_with; -use PHPUnit\Framework\TestSuite; -use PHPUnit\TextUI\Configuration\Registry; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ListGroupsCommand implements Command -{ - private readonly TestSuite $suite; - - public function __construct(TestSuite $suite) - { - $this->suite = $suite; - } - - public function execute(): Result - { - $buffer = $this->warnAboutConflictingOptions(); - $buffer .= 'Available test group(s):' . PHP_EOL; - - $groups = $this->suite->groups(); - sort($groups); - - foreach ($groups as $group) { - if (str_starts_with($group, '__phpunit_')) { - continue; - } - - $buffer .= sprintf( - ' - %s' . PHP_EOL, - $group, - ); - } - - return Result::from($buffer); - } - - private function warnAboutConflictingOptions(): string - { - $buffer = ''; - - $configuration = Registry::get(); - - if ($configuration->hasFilter()) { - $buffer .= 'The --filter and --list-groups options cannot be combined, --filter is ignored' . PHP_EOL; - } - - if ($configuration->hasGroups()) { - $buffer .= 'The --group and --list-groups options cannot be combined, --group is ignored' . PHP_EOL; - } - - if ($configuration->hasExcludeGroups()) { - $buffer .= 'The --exclude-group and --list-groups options cannot be combined, --exclude-group is ignored' . PHP_EOL; - } - - if ($configuration->includeTestSuite() !== '') { - $buffer .= 'The --testsuite and --list-groups options cannot be combined, --exclude-group is ignored' . PHP_EOL; - } - - if (!empty($buffer)) { - $buffer .= PHP_EOL; - } - - return $buffer; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListTestSuitesCommand.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListTestSuitesCommand.php deleted file mode 100644 index 77c2cbb6..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListTestSuitesCommand.php +++ /dev/null @@ -1,74 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Command; - -use const PHP_EOL; -use function sprintf; -use PHPUnit\TextUI\Configuration\Registry; -use PHPUnit\TextUI\Configuration\TestSuiteCollection; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ListTestSuitesCommand implements Command -{ - private readonly TestSuiteCollection $suites; - - public function __construct(TestSuiteCollection $suites) - { - $this->suites = $suites; - } - - public function execute(): Result - { - $buffer = $this->warnAboutConflictingOptions(); - $buffer .= 'Available test suite(s):' . PHP_EOL; - - foreach ($this->suites as $suite) { - $buffer .= sprintf( - ' - %s' . PHP_EOL, - $suite->name(), - ); - } - - return Result::from($buffer); - } - - private function warnAboutConflictingOptions(): string - { - $buffer = ''; - - $configuration = Registry::get(); - - if ($configuration->hasFilter()) { - $buffer .= 'The --filter and --list-suites options cannot be combined, --filter is ignored' . PHP_EOL; - } - - if ($configuration->hasGroups()) { - $buffer .= 'The --group and --list-suites options cannot be combined, --group is ignored' . PHP_EOL; - } - - if ($configuration->hasExcludeGroups()) { - $buffer .= 'The --exclude-group and --list-suites options cannot be combined, --exclude-group is ignored' . PHP_EOL; - } - - if ($configuration->includeTestSuite() !== '') { - $buffer .= 'The --testsuite and --list-suites options cannot be combined, --exclude-group is ignored' . PHP_EOL; - } - - if (!empty($buffer)) { - $buffer .= PHP_EOL; - } - - return $buffer; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListTestsAsTextCommand.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListTestsAsTextCommand.php deleted file mode 100644 index 0d377011..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListTestsAsTextCommand.php +++ /dev/null @@ -1,87 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Command; - -use const PHP_EOL; -use function sprintf; -use function str_replace; -use PHPUnit\Framework\TestCase; -use PHPUnit\Framework\TestSuite; -use PHPUnit\Runner\PhptTestCase; -use PHPUnit\TextUI\Configuration\Registry; -use RecursiveIteratorIterator; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ListTestsAsTextCommand implements Command -{ - private readonly TestSuite $suite; - - public function __construct(TestSuite $suite) - { - $this->suite = $suite; - } - - public function execute(): Result - { - $buffer = $this->warnAboutConflictingOptions(); - - $buffer .= 'Available test(s):' . PHP_EOL; - - foreach (new RecursiveIteratorIterator($this->suite) as $test) { - if ($test instanceof TestCase) { - $name = sprintf( - '%s::%s', - $test::class, - str_replace(' with data set ', '', $test->nameWithDataSet()), - ); - } elseif ($test instanceof PhptTestCase) { - $name = $test->getName(); - } else { - continue; - } - - $buffer .= sprintf( - ' - %s' . PHP_EOL, - $name, - ); - } - - return Result::from($buffer); - } - - private function warnAboutConflictingOptions(): string - { - $buffer = ''; - - $configuration = Registry::get(); - - if ($configuration->hasFilter()) { - $buffer .= 'The --filter and --list-tests options cannot be combined, --filter is ignored' . PHP_EOL; - } - - if ($configuration->hasGroups()) { - $buffer .= 'The --group and --list-tests options cannot be combined, --group is ignored' . PHP_EOL; - } - - if ($configuration->hasExcludeGroups()) { - $buffer .= 'The --exclude-group and --list-tests options cannot be combined, --exclude-group is ignored' . PHP_EOL; - } - - if (!empty($buffer)) { - $buffer .= PHP_EOL; - } - - return $buffer; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListTestsAsXmlCommand.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListTestsAsXmlCommand.php deleted file mode 100644 index 5a1085f1..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListTestsAsXmlCommand.php +++ /dev/null @@ -1,142 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Command; - -use const PHP_EOL; -use function file_put_contents; -use function implode; -use function sprintf; -use function str_replace; -use PHPUnit\Framework\TestCase; -use PHPUnit\Framework\TestSuite; -use PHPUnit\Runner\PhptTestCase; -use PHPUnit\TextUI\Configuration\Registry; -use RecursiveIteratorIterator; -use XMLWriter; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ListTestsAsXmlCommand implements Command -{ - private readonly string $filename; - private readonly TestSuite $suite; - - public function __construct(string $filename, TestSuite $suite) - { - $this->filename = $filename; - $this->suite = $suite; - } - - public function execute(): Result - { - $buffer = $this->warnAboutConflictingOptions(); - $writer = new XMLWriter; - - $writer->openMemory(); - $writer->setIndent(true); - $writer->startDocument(); - $writer->startElement('tests'); - - $currentTestCase = null; - - foreach (new RecursiveIteratorIterator($this->suite) as $test) { - if ($test instanceof TestCase) { - if ($test::class !== $currentTestCase) { - if ($currentTestCase !== null) { - $writer->endElement(); - } - - $writer->startElement('testCaseClass'); - $writer->writeAttribute('name', $test::class); - - $currentTestCase = $test::class; - } - - $writer->startElement('testCaseMethod'); - $writer->writeAttribute('id', $test->valueObjectForEvents()->id()); - $writer->writeAttribute('name', $test->name()); - $writer->writeAttribute('groups', implode(',', $test->groups())); - - /** - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5481 - */ - if (!empty($test->dataSetAsString())) { - $writer->writeAttribute( - 'dataSet', - str_replace( - ' with data set ', - '', - $test->dataSetAsString(), - ), - ); - } - - $writer->endElement(); - - continue; - } - - if ($test instanceof PhptTestCase) { - if ($currentTestCase !== null) { - $writer->endElement(); - - $currentTestCase = null; - } - - $writer->startElement('phptFile'); - $writer->writeAttribute('path', $test->getName()); - $writer->endElement(); - } - } - - if ($currentTestCase !== null) { - $writer->endElement(); - } - - $writer->endElement(); - - file_put_contents($this->filename, $writer->outputMemory()); - - $buffer .= sprintf( - 'Wrote list of tests that would have been run to %s' . PHP_EOL, - $this->filename, - ); - - return Result::from($buffer); - } - - private function warnAboutConflictingOptions(): string - { - $buffer = ''; - - $configuration = Registry::get(); - - if ($configuration->hasFilter()) { - $buffer .= 'The --filter and --list-tests-xml options cannot be combined, --filter is ignored' . PHP_EOL; - } - - if ($configuration->hasGroups()) { - $buffer .= 'The --group and --list-tests-xml options cannot be combined, --group is ignored' . PHP_EOL; - } - - if ($configuration->hasExcludeGroups()) { - $buffer .= 'The --exclude-group and --list-tests-xml options cannot be combined, --exclude-group is ignored' . PHP_EOL; - } - - if (!empty($buffer)) { - $buffer .= PHP_EOL; - } - - return $buffer; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Commands/MigrateConfigurationCommand.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Commands/MigrateConfigurationCommand.php deleted file mode 100644 index cde391ab..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Commands/MigrateConfigurationCommand.php +++ /dev/null @@ -1,64 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Command; - -use const PHP_EOL; -use function copy; -use function file_put_contents; -use function sprintf; -use PHPUnit\TextUI\XmlConfiguration\Migrator; -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class MigrateConfigurationCommand implements Command -{ - private readonly string $filename; - - public function __construct(string $filename) - { - $this->filename = $filename; - } - - public function execute(): Result - { - try { - $migrated = (new Migrator)->migrate($this->filename); - - copy($this->filename, $this->filename . '.bak'); - - file_put_contents($this->filename, $migrated); - - return Result::from( - sprintf( - 'Created backup: %s.bak%sMigrated configuration: %s%s', - $this->filename, - PHP_EOL, - $this->filename, - PHP_EOL, - ), - ); - } catch (Throwable $t) { - return Result::from( - sprintf( - 'Migration of %s failed:%s%s%s', - $this->filename, - PHP_EOL, - $t->getMessage(), - PHP_EOL, - ), - Result::FAILURE, - ); - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ShowHelpCommand.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ShowHelpCommand.php deleted file mode 100644 index 654cbb88..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ShowHelpCommand.php +++ /dev/null @@ -1,35 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Command; - -use PHPUnit\TextUI\Help; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ShowHelpCommand implements Command -{ - private readonly int $shellExitCode; - - public function __construct(int $shellExitCode) - { - $this->shellExitCode = $shellExitCode; - } - - public function execute(): Result - { - return Result::from( - (new Help)->generate(), - $this->shellExitCode, - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ShowVersionCommand.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ShowVersionCommand.php deleted file mode 100644 index b1e66510..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ShowVersionCommand.php +++ /dev/null @@ -1,23 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Command; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ShowVersionCommand implements Command -{ - public function execute(): Result - { - return Result::from(); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Commands/VersionCheckCommand.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Commands/VersionCheckCommand.php deleted file mode 100644 index 95dabba8..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Commands/VersionCheckCommand.php +++ /dev/null @@ -1,74 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Command; - -use const PHP_EOL; -use function assert; -use function sprintf; -use function version_compare; -use PHPUnit\Util\Http\Downloader; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class VersionCheckCommand implements Command -{ - private readonly Downloader $downloader; - private readonly int $majorVersionNumber; - private readonly string $versionId; - - public function __construct(Downloader $downloader, int $majorVersionNumber, string $versionId) - { - $this->downloader = $downloader; - $this->majorVersionNumber = $majorVersionNumber; - $this->versionId = $versionId; - } - - public function execute(): Result - { - $latestVersion = $this->downloader->download('https://phar.phpunit.de/latest-version-of/phpunit'); - - assert($latestVersion !== false); - - $latestCompatibleVersion = $this->downloader->download('https://phar.phpunit.de/latest-version-of/phpunit-' . $this->majorVersionNumber); - - assert($latestCompatibleVersion !== false); - - $notLatest = version_compare($latestVersion, $this->versionId, '>'); - $notLatestCompatible = version_compare($latestCompatibleVersion, $this->versionId, '>'); - - if (!$notLatest && !$notLatestCompatible) { - return Result::from( - 'You are using the latest version of PHPUnit.' . PHP_EOL, - ); - } - - $buffer = 'You are not using the latest version of PHPUnit.' . PHP_EOL; - - if ($notLatestCompatible) { - $buffer .= sprintf( - 'The latest version compatible with PHPUnit %s is PHPUnit %s.' . PHP_EOL, - $this->versionId, - $latestCompatibleVersion, - ); - } - - if ($notLatest) { - $buffer .= sprintf( - 'The latest version is PHPUnit %s.' . PHP_EOL, - $latestVersion, - ); - } - - return Result::from($buffer); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Commands/WarmCodeCoverageCacheCommand.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Commands/WarmCodeCoverageCacheCommand.php deleted file mode 100644 index fa8256e7..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Commands/WarmCodeCoverageCacheCommand.php +++ /dev/null @@ -1,81 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Command; - -use const PHP_EOL; -use function printf; -use PHPUnit\TextUI\Configuration\CodeCoverageFilterRegistry; -use PHPUnit\TextUI\Configuration\Configuration; -use PHPUnit\TextUI\Configuration\NoCoverageCacheDirectoryException; -use SebastianBergmann\CodeCoverage\StaticAnalysis\CacheWarmer; -use SebastianBergmann\Timer\NoActiveTimerException; -use SebastianBergmann\Timer\Timer; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @codeCoverageIgnore - */ -final class WarmCodeCoverageCacheCommand implements Command -{ - private readonly Configuration $configuration; - private readonly CodeCoverageFilterRegistry $codeCoverageFilterRegistry; - - public function __construct(Configuration $configuration, CodeCoverageFilterRegistry $codeCoverageFilterRegistry) - { - $this->configuration = $configuration; - $this->codeCoverageFilterRegistry = $codeCoverageFilterRegistry; - } - - /** - * @throws NoActiveTimerException - * @throws NoCoverageCacheDirectoryException - */ - public function execute(): Result - { - if (!$this->configuration->hasCoverageCacheDirectory()) { - return Result::from( - 'Cache for static analysis has not been configured' . PHP_EOL, - Result::FAILURE, - ); - } - - $this->codeCoverageFilterRegistry->init($this->configuration, true); - - if (!$this->codeCoverageFilterRegistry->configured()) { - return Result::from( - 'Filter for code coverage has not been configured' . PHP_EOL, - Result::FAILURE, - ); - } - - $timer = new Timer; - $timer->start(); - - print 'Warming cache for static analysis ... '; - - (new CacheWarmer)->warmCache( - $this->configuration->coverageCacheDirectory(), - !$this->configuration->disableCodeCoverageIgnore(), - $this->configuration->ignoreDeprecatedCodeUnitsFromCodeCoverage(), - $this->codeCoverageFilterRegistry->get(), - ); - - printf( - '[%s]%s', - $timer->stop()->asString(), - PHP_EOL, - ); - - return Result::from(); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Result.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Result.php deleted file mode 100644 index b0544e7a..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Command/Result.php +++ /dev/null @@ -1,48 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Command; - -/** - * @psalm-immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Result -{ - public const SUCCESS = 0; - public const FAILURE = 1; - public const EXCEPTION = 2; - public const CRASH = 255; - private readonly string $output; - private readonly int $shellExitCode; - - public static function from(string $output = '', int $shellExitCode = self::SUCCESS): self - { - return new self($output, $shellExitCode); - } - - private function __construct(string $output, int $shellExitCode) - { - $this->output = $output; - $this->shellExitCode = $shellExitCode; - } - - public function output(): string - { - return $this->output; - } - - public function shellExitCode(): int - { - return $this->shellExitCode; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Cli/Builder.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Cli/Builder.php deleted file mode 100644 index bc3bfd36..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Cli/Builder.php +++ /dev/null @@ -1,1020 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\CliArguments; - -use const DIRECTORY_SEPARATOR; -use function array_map; -use function basename; -use function explode; -use function getcwd; -use function is_file; -use function is_numeric; -use function sprintf; -use PHPUnit\Event\Facade as EventFacade; -use PHPUnit\Runner\TestSuiteSorter; -use PHPUnit\Util\Filesystem; -use SebastianBergmann\CliParser\Exception as CliParserException; -use SebastianBergmann\CliParser\Parser as CliParser; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Builder -{ - private const LONG_OPTIONS = [ - 'atleast-version=', - 'bootstrap=', - 'cache-result', - 'do-not-cache-result', - 'cache-directory=', - 'cache-result-file=', - 'check-version', - 'colors==', - 'columns=', - 'configuration=', - 'coverage-cache=', - 'warm-coverage-cache', - 'coverage-filter=', - 'coverage-clover=', - 'coverage-cobertura=', - 'coverage-crap4j=', - 'coverage-html=', - 'coverage-php=', - 'coverage-text==', - 'only-summary-for-coverage-text', - 'show-uncovered-for-coverage-text', - 'coverage-xml=', - 'path-coverage', - 'disallow-test-output', - 'display-incomplete', - 'display-skipped', - 'display-deprecations', - 'display-phpunit-deprecations', - 'display-errors', - 'display-notices', - 'display-warnings', - 'default-time-limit=', - 'enforce-time-limit', - 'exclude-group=', - 'filter=', - 'generate-baseline=', - 'use-baseline=', - 'ignore-baseline', - 'generate-configuration', - 'globals-backup', - 'group=', - 'covers=', - 'uses=', - 'help', - 'resolve-dependencies', - 'ignore-dependencies', - 'include-path=', - 'list-groups', - 'list-suites', - 'list-tests', - 'list-tests-xml=', - 'log-junit=', - 'log-teamcity=', - 'migrate-configuration', - 'no-configuration', - 'no-coverage', - 'no-logging', - 'no-extensions', - 'no-output', - 'no-progress', - 'no-results', - 'order-by=', - 'process-isolation', - 'dont-report-useless-tests', - 'random-order', - 'random-order-seed=', - 'reverse-order', - 'reverse-list', - 'static-backup', - 'stderr', - 'fail-on-deprecation', - 'fail-on-phpunit-deprecation', - 'fail-on-empty-test-suite', - 'fail-on-incomplete', - 'fail-on-notice', - 'fail-on-risky', - 'fail-on-skipped', - 'fail-on-warning', - 'stop-on-defect', - 'stop-on-deprecation', - 'stop-on-error', - 'stop-on-failure', - 'stop-on-incomplete', - 'stop-on-notice', - 'stop-on-risky', - 'stop-on-skipped', - 'stop-on-warning', - 'strict-coverage', - 'disable-coverage-ignore', - 'strict-global-state', - 'teamcity', - 'testdox', - 'testdox-html=', - 'testdox-text=', - 'test-suffix=', - 'testsuite=', - 'exclude-testsuite=', - 'log-events-text=', - 'log-events-verbose-text=', - 'version', - 'debug', - ]; - private const SHORT_OPTIONS = 'd:c:h'; - - /** - * @psalm-var array - */ - private array $processed = []; - - /** - * @throws Exception - */ - public function fromParameters(array $parameters): Configuration - { - try { - $options = (new CliParser)->parse( - $parameters, - self::SHORT_OPTIONS, - self::LONG_OPTIONS, - ); - } catch (CliParserException $e) { - throw new Exception( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - - $atLeastVersion = null; - $backupGlobals = null; - $backupStaticProperties = null; - $beStrictAboutChangesToGlobalState = null; - $bootstrap = null; - $cacheDirectory = null; - $cacheResult = null; - $cacheResultFile = null; - $checkVersion = false; - $colors = null; - $columns = null; - $configuration = null; - $coverageCacheDirectory = null; - $warmCoverageCache = false; - $coverageFilter = null; - $coverageClover = null; - $coverageCobertura = null; - $coverageCrap4J = null; - $coverageHtml = null; - $coveragePhp = null; - $coverageText = null; - $coverageTextShowUncoveredFiles = null; - $coverageTextShowOnlySummary = null; - $coverageXml = null; - $pathCoverage = null; - $defaultTimeLimit = null; - $disableCodeCoverageIgnore = null; - $disallowTestOutput = null; - $displayIncomplete = null; - $displaySkipped = null; - $displayDeprecations = null; - $displayPhpunitDeprecations = null; - $displayErrors = null; - $displayNotices = null; - $displayWarnings = null; - $enforceTimeLimit = null; - $excludeGroups = null; - $executionOrder = null; - $executionOrderDefects = null; - $failOnDeprecation = null; - $failOnPhpunitDeprecation = null; - $failOnEmptyTestSuite = null; - $failOnIncomplete = null; - $failOnNotice = null; - $failOnRisky = null; - $failOnSkipped = null; - $failOnWarning = null; - $stopOnDefect = null; - $stopOnDeprecation = null; - $stopOnError = null; - $stopOnFailure = null; - $stopOnIncomplete = null; - $stopOnNotice = null; - $stopOnRisky = null; - $stopOnSkipped = null; - $stopOnWarning = null; - $filter = null; - $generateBaseline = null; - $useBaseline = null; - $ignoreBaseline = false; - $generateConfiguration = false; - $migrateConfiguration = false; - $groups = null; - $testsCovering = null; - $testsUsing = null; - $help = false; - $includePath = null; - $iniSettings = []; - $junitLogfile = null; - $listGroups = false; - $listSuites = false; - $listTests = false; - $listTestsXml = null; - $noCoverage = null; - $noExtensions = null; - $noOutput = null; - $noProgress = null; - $noResults = null; - $noLogging = null; - $processIsolation = null; - $randomOrderSeed = null; - $reportUselessTests = null; - $resolveDependencies = null; - $reverseList = null; - $stderr = null; - $strictCoverage = null; - $teamcityLogfile = null; - $testdoxHtmlFile = null; - $testdoxTextFile = null; - $testSuffixes = null; - $testSuite = null; - $excludeTestSuite = null; - $useDefaultConfiguration = true; - $version = false; - $logEventsText = null; - $logEventsVerboseText = null; - $printerTeamCity = null; - $printerTestDox = null; - $debug = false; - - foreach ($options[0] as $option) { - $optionAllowedMultipleTimes = false; - - switch ($option[0]) { - case '--colors': - $colors = $option[1] ?: \PHPUnit\TextUI\Configuration\Configuration::COLOR_AUTO; - - break; - - case '--bootstrap': - $bootstrap = $option[1]; - - break; - - case '--cache-directory': - $cacheDirectory = $option[1]; - - break; - - case '--cache-result': - $cacheResult = true; - - break; - - case '--do-not-cache-result': - $cacheResult = false; - - break; - - case '--cache-result-file': - $cacheResultFile = $option[1]; - - break; - - case '--columns': - if (is_numeric($option[1])) { - $columns = (int) $option[1]; - } elseif ($option[1] === 'max') { - $columns = 'max'; - } - - break; - - case 'c': - case '--configuration': - $configuration = $option[1]; - - break; - - case '--coverage-cache': - $coverageCacheDirectory = $option[1]; - - break; - - case '--warm-coverage-cache': - $warmCoverageCache = true; - - break; - - case '--coverage-clover': - $coverageClover = $option[1]; - - break; - - case '--coverage-cobertura': - $coverageCobertura = $option[1]; - - break; - - case '--coverage-crap4j': - $coverageCrap4J = $option[1]; - - break; - - case '--coverage-html': - $coverageHtml = $option[1]; - - break; - - case '--coverage-php': - $coveragePhp = $option[1]; - - break; - - case '--coverage-text': - if ($option[1] === null) { - $option[1] = 'php://stdout'; - } - - $coverageText = $option[1]; - - break; - - case '--only-summary-for-coverage-text': - $coverageTextShowOnlySummary = true; - - break; - - case '--show-uncovered-for-coverage-text': - $coverageTextShowUncoveredFiles = true; - - break; - - case '--coverage-xml': - $coverageXml = $option[1]; - - break; - - case '--path-coverage': - $pathCoverage = true; - - break; - - case 'd': - $tmp = explode('=', $option[1]); - - if (isset($tmp[0])) { - if (isset($tmp[1])) { - $iniSettings[$tmp[0]] = $tmp[1]; - } else { - $iniSettings[$tmp[0]] = '1'; - } - } - - $optionAllowedMultipleTimes = true; - - break; - - case 'h': - case '--help': - $help = true; - - break; - - case '--filter': - $filter = $option[1]; - - break; - - case '--testsuite': - $testSuite = $option[1]; - - break; - - case '--exclude-testsuite': - $excludeTestSuite = $option[1]; - - break; - - case '--generate-baseline': - $generateBaseline = $option[1]; - - if (basename($generateBaseline) === $generateBaseline) { - $generateBaseline = getcwd() . DIRECTORY_SEPARATOR . $generateBaseline; - } - - break; - - case '--use-baseline': - $useBaseline = $option[1]; - - if (basename($useBaseline) === $useBaseline && !is_file($useBaseline)) { - $useBaseline = getcwd() . DIRECTORY_SEPARATOR . $useBaseline; - } - - break; - - case '--ignore-baseline': - $ignoreBaseline = true; - - break; - - case '--generate-configuration': - $generateConfiguration = true; - - break; - - case '--migrate-configuration': - $migrateConfiguration = true; - - break; - - case '--group': - $groups = explode(',', $option[1]); - - break; - - case '--exclude-group': - $excludeGroups = explode(',', $option[1]); - - break; - - case '--covers': - $testsCovering = array_map('strtolower', explode(',', $option[1])); - - break; - - case '--uses': - $testsUsing = array_map('strtolower', explode(',', $option[1])); - - break; - - case '--test-suffix': - $testSuffixes = explode(',', $option[1]); - - break; - - case '--include-path': - $includePath = $option[1]; - - break; - - case '--list-groups': - $listGroups = true; - - break; - - case '--list-suites': - $listSuites = true; - - break; - - case '--list-tests': - $listTests = true; - - break; - - case '--list-tests-xml': - $listTestsXml = $option[1]; - - break; - - case '--log-junit': - $junitLogfile = $option[1]; - - break; - - case '--log-teamcity': - $teamcityLogfile = $option[1]; - - break; - - case '--order-by': - foreach (explode(',', $option[1]) as $order) { - switch ($order) { - case 'default': - $executionOrder = TestSuiteSorter::ORDER_DEFAULT; - $executionOrderDefects = TestSuiteSorter::ORDER_DEFAULT; - $resolveDependencies = true; - - break; - - case 'defects': - $executionOrderDefects = TestSuiteSorter::ORDER_DEFECTS_FIRST; - - break; - - case 'depends': - $resolveDependencies = true; - - break; - - case 'duration': - $executionOrder = TestSuiteSorter::ORDER_DURATION; - - break; - - case 'no-depends': - $resolveDependencies = false; - - break; - - case 'random': - $executionOrder = TestSuiteSorter::ORDER_RANDOMIZED; - - break; - - case 'reverse': - $executionOrder = TestSuiteSorter::ORDER_REVERSED; - - break; - - case 'size': - $executionOrder = TestSuiteSorter::ORDER_SIZE; - - break; - - default: - throw new Exception( - sprintf( - 'unrecognized --order-by option: %s', - $order, - ), - ); - } - } - - break; - - case '--process-isolation': - $processIsolation = true; - - break; - - case '--stderr': - $stderr = true; - - break; - - case '--fail-on-deprecation': - $failOnDeprecation = true; - - break; - - case '--fail-on-phpunit-deprecation': - $failOnPhpunitDeprecation = true; - - break; - - case '--fail-on-empty-test-suite': - $failOnEmptyTestSuite = true; - - break; - - case '--fail-on-incomplete': - $failOnIncomplete = true; - - break; - - case '--fail-on-notice': - $failOnNotice = true; - - break; - - case '--fail-on-risky': - $failOnRisky = true; - - break; - - case '--fail-on-skipped': - $failOnSkipped = true; - - break; - - case '--fail-on-warning': - $failOnWarning = true; - - break; - - case '--stop-on-defect': - $stopOnDefect = true; - - break; - - case '--stop-on-deprecation': - $stopOnDeprecation = true; - - break; - - case '--stop-on-error': - $stopOnError = true; - - break; - - case '--stop-on-failure': - $stopOnFailure = true; - - break; - - case '--stop-on-incomplete': - $stopOnIncomplete = true; - - break; - - case '--stop-on-notice': - $stopOnNotice = true; - - break; - - case '--stop-on-risky': - $stopOnRisky = true; - - break; - - case '--stop-on-skipped': - $stopOnSkipped = true; - - break; - - case '--stop-on-warning': - $stopOnWarning = true; - - break; - - case '--teamcity': - $printerTeamCity = true; - - break; - - case '--testdox': - $printerTestDox = true; - - break; - - case '--testdox-html': - $testdoxHtmlFile = $option[1]; - - break; - - case '--testdox-text': - $testdoxTextFile = $option[1]; - - break; - - case '--no-configuration': - $useDefaultConfiguration = false; - - break; - - case '--no-extensions': - $noExtensions = true; - - break; - - case '--no-coverage': - $noCoverage = true; - - break; - - case '--no-logging': - $noLogging = true; - - break; - - case '--no-output': - $noOutput = true; - - break; - - case '--no-progress': - $noProgress = true; - - break; - - case '--no-results': - $noResults = true; - - break; - - case '--globals-backup': - $backupGlobals = true; - - break; - - case '--static-backup': - $backupStaticProperties = true; - - break; - - case '--atleast-version': - $atLeastVersion = $option[1]; - - break; - - case '--version': - $version = true; - - break; - - case '--dont-report-useless-tests': - $reportUselessTests = false; - - break; - - case '--strict-coverage': - $strictCoverage = true; - - break; - - case '--disable-coverage-ignore': - $disableCodeCoverageIgnore = true; - - break; - - case '--strict-global-state': - $beStrictAboutChangesToGlobalState = true; - - break; - - case '--disallow-test-output': - $disallowTestOutput = true; - - break; - - case '--display-incomplete': - $displayIncomplete = true; - - break; - - case '--display-skipped': - $displaySkipped = true; - - break; - - case '--display-deprecations': - $displayDeprecations = true; - - break; - - case '--display-phpunit-deprecations': - $displayPhpunitDeprecations = true; - - break; - - case '--display-errors': - $displayErrors = true; - - break; - - case '--display-notices': - $displayNotices = true; - - break; - - case '--display-warnings': - $displayWarnings = true; - - break; - - case '--default-time-limit': - $defaultTimeLimit = (int) $option[1]; - - break; - - case '--enforce-time-limit': - $enforceTimeLimit = true; - - break; - - case '--reverse-list': - $reverseList = true; - - break; - - case '--check-version': - $checkVersion = true; - - break; - - case '--coverage-filter': - if ($coverageFilter === null) { - $coverageFilter = []; - } - - $coverageFilter[] = $option[1]; - - $optionAllowedMultipleTimes = true; - - break; - - case '--random-order': - $executionOrder = TestSuiteSorter::ORDER_RANDOMIZED; - - break; - - case '--random-order-seed': - $randomOrderSeed = (int) $option[1]; - - break; - - case '--resolve-dependencies': - $resolveDependencies = true; - - break; - - case '--ignore-dependencies': - $resolveDependencies = false; - - break; - - case '--reverse-order': - $executionOrder = TestSuiteSorter::ORDER_REVERSED; - - break; - - case '--log-events-text': - $logEventsText = Filesystem::resolveStreamOrFile($option[1]); - - if ($logEventsText === false) { - throw new Exception( - sprintf( - 'The path "%s" specified for the --log-events-text option could not be resolved', - $option[1], - ), - ); - } - - break; - - case '--log-events-verbose-text': - $logEventsVerboseText = Filesystem::resolveStreamOrFile($option[1]); - - if ($logEventsVerboseText === false) { - throw new Exception( - sprintf( - 'The path "%s" specified for the --log-events-verbose-text option could not be resolved', - $option[1], - ), - ); - } - - break; - - case '--debug': - $debug = true; - - break; - } - - if (!$optionAllowedMultipleTimes) { - $this->markProcessed($option[0]); - } - } - - if (empty($iniSettings)) { - $iniSettings = null; - } - - if (empty($coverageFilter)) { - $coverageFilter = null; - } - - return new Configuration( - $options[1], - $atLeastVersion, - $backupGlobals, - $backupStaticProperties, - $beStrictAboutChangesToGlobalState, - $bootstrap, - $cacheDirectory, - $cacheResult, - $cacheResultFile, - $checkVersion, - $colors, - $columns, - $configuration, - $coverageClover, - $coverageCobertura, - $coverageCrap4J, - $coverageHtml, - $coveragePhp, - $coverageText, - $coverageTextShowUncoveredFiles, - $coverageTextShowOnlySummary, - $coverageXml, - $pathCoverage, - $coverageCacheDirectory, - $warmCoverageCache, - $defaultTimeLimit, - $disableCodeCoverageIgnore, - $disallowTestOutput, - $enforceTimeLimit, - $excludeGroups, - $executionOrder, - $executionOrderDefects, - $failOnDeprecation, - $failOnPhpunitDeprecation, - $failOnEmptyTestSuite, - $failOnIncomplete, - $failOnNotice, - $failOnRisky, - $failOnSkipped, - $failOnWarning, - $stopOnDefect, - $stopOnDeprecation, - $stopOnError, - $stopOnFailure, - $stopOnIncomplete, - $stopOnNotice, - $stopOnRisky, - $stopOnSkipped, - $stopOnWarning, - $filter, - $generateBaseline, - $useBaseline, - $ignoreBaseline, - $generateConfiguration, - $migrateConfiguration, - $groups, - $testsCovering, - $testsUsing, - $help, - $includePath, - $iniSettings, - $junitLogfile, - $listGroups, - $listSuites, - $listTests, - $listTestsXml, - $noCoverage, - $noExtensions, - $noOutput, - $noProgress, - $noResults, - $noLogging, - $processIsolation, - $randomOrderSeed, - $reportUselessTests, - $resolveDependencies, - $reverseList, - $stderr, - $strictCoverage, - $teamcityLogfile, - $testdoxHtmlFile, - $testdoxTextFile, - $testSuffixes, - $testSuite, - $excludeTestSuite, - $useDefaultConfiguration, - $displayIncomplete, - $displaySkipped, - $displayDeprecations, - $displayPhpunitDeprecations, - $displayErrors, - $displayNotices, - $displayWarnings, - $version, - $coverageFilter, - $logEventsText, - $logEventsVerboseText, - $printerTeamCity, - $printerTestDox, - $debug, - ); - } - - /** - * @psalm-param non-empty-string $option - */ - private function markProcessed(string $option): void - { - if (!isset($this->processed[$option])) { - $this->processed[$option] = 1; - - return; - } - - $this->processed[$option]++; - - if ($this->processed[$option] === 2) { - EventFacade::emitter()->testRunnerTriggeredWarning( - sprintf( - 'Option %s cannot be used more than once', - $option, - ), - ); - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Cli/Configuration.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Cli/Configuration.php deleted file mode 100644 index 84cb00c1..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Cli/Configuration.php +++ /dev/null @@ -1,2054 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\CliArguments; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @psalm-immutable - */ -final class Configuration -{ - /** - * @psalm-var list - */ - private readonly array $arguments; - private readonly ?string $atLeastVersion; - private readonly ?bool $backupGlobals; - private readonly ?bool $backupStaticProperties; - private readonly ?bool $beStrictAboutChangesToGlobalState; - private readonly ?string $bootstrap; - private readonly ?string $cacheDirectory; - private readonly ?bool $cacheResult; - private readonly ?string $cacheResultFile; - private readonly bool $checkVersion; - private readonly ?string $colors; - private readonly null|int|string $columns; - private readonly ?string $configurationFile; - private readonly ?array $coverageFilter; - private readonly ?string $coverageClover; - private readonly ?string $coverageCobertura; - private readonly ?string $coverageCrap4J; - private readonly ?string $coverageHtml; - private readonly ?string $coveragePhp; - private readonly ?string $coverageText; - private readonly ?bool $coverageTextShowUncoveredFiles; - private readonly ?bool $coverageTextShowOnlySummary; - private readonly ?string $coverageXml; - private readonly ?bool $pathCoverage; - private readonly ?string $coverageCacheDirectory; - private readonly bool $warmCoverageCache; - private readonly ?int $defaultTimeLimit; - private readonly ?bool $disableCodeCoverageIgnore; - private readonly ?bool $disallowTestOutput; - private readonly ?bool $enforceTimeLimit; - private readonly ?array $excludeGroups; - private readonly ?int $executionOrder; - private readonly ?int $executionOrderDefects; - private readonly ?bool $failOnDeprecation; - private readonly ?bool $failOnPhpunitDeprecation; - private readonly ?bool $failOnEmptyTestSuite; - private readonly ?bool $failOnIncomplete; - private readonly ?bool $failOnNotice; - private readonly ?bool $failOnRisky; - private readonly ?bool $failOnSkipped; - private readonly ?bool $failOnWarning; - private readonly ?bool $stopOnDefect; - private readonly ?bool $stopOnDeprecation; - private readonly ?bool $stopOnError; - private readonly ?bool $stopOnFailure; - private readonly ?bool $stopOnIncomplete; - private readonly ?bool $stopOnNotice; - private readonly ?bool $stopOnRisky; - private readonly ?bool $stopOnSkipped; - private readonly ?bool $stopOnWarning; - private readonly ?string $filter; - private readonly ?string $generateBaseline; - private readonly ?string $useBaseline; - private readonly bool $ignoreBaseline; - private readonly bool $generateConfiguration; - private readonly bool $migrateConfiguration; - private readonly ?array $groups; - private readonly ?array $testsCovering; - private readonly ?array $testsUsing; - private readonly bool $help; - private readonly ?string $includePath; - private readonly ?array $iniSettings; - private readonly ?string $junitLogfile; - private readonly bool $listGroups; - private readonly bool $listSuites; - private readonly bool $listTests; - private readonly ?string $listTestsXml; - private readonly ?bool $noCoverage; - private readonly ?bool $noExtensions; - private readonly ?bool $noOutput; - private readonly ?bool $noProgress; - private readonly ?bool $noResults; - private readonly ?bool $noLogging; - private readonly ?bool $processIsolation; - private readonly ?int $randomOrderSeed; - private readonly ?bool $reportUselessTests; - private readonly ?bool $resolveDependencies; - private readonly ?bool $reverseList; - private readonly ?bool $stderr; - private readonly ?bool $strictCoverage; - private readonly ?string $teamcityLogfile; - private readonly ?bool $teamCityPrinter; - private readonly ?string $testdoxHtmlFile; - private readonly ?string $testdoxTextFile; - private readonly ?bool $testdoxPrinter; - - /** - * @psalm-var ?non-empty-list - */ - private readonly ?array $testSuffixes; - private readonly ?string $testSuite; - private readonly ?string $excludeTestSuite; - private readonly bool $useDefaultConfiguration; - private readonly ?bool $displayDetailsOnIncompleteTests; - private readonly ?bool $displayDetailsOnSkippedTests; - private readonly ?bool $displayDetailsOnTestsThatTriggerDeprecations; - private readonly ?bool $displayDetailsOnPhpunitDeprecations; - private readonly ?bool $displayDetailsOnTestsThatTriggerErrors; - private readonly ?bool $displayDetailsOnTestsThatTriggerNotices; - private readonly ?bool $displayDetailsOnTestsThatTriggerWarnings; - private readonly bool $version; - private readonly ?string $logEventsText; - private readonly ?string $logEventsVerboseText; - private readonly bool $debug; - - /** - * @psalm-param list $arguments - * @psalm-param ?non-empty-list $testSuffixes - */ - public function __construct(array $arguments, ?string $atLeastVersion, ?bool $backupGlobals, ?bool $backupStaticProperties, ?bool $beStrictAboutChangesToGlobalState, ?string $bootstrap, ?string $cacheDirectory, ?bool $cacheResult, ?string $cacheResultFile, bool $checkVersion, ?string $colors, null|int|string $columns, ?string $configurationFile, ?string $coverageClover, ?string $coverageCobertura, ?string $coverageCrap4J, ?string $coverageHtml, ?string $coveragePhp, ?string $coverageText, ?bool $coverageTextShowUncoveredFiles, ?bool $coverageTextShowOnlySummary, ?string $coverageXml, ?bool $pathCoverage, ?string $coverageCacheDirectory, bool $warmCoverageCache, ?int $defaultTimeLimit, ?bool $disableCodeCoverageIgnore, ?bool $disallowTestOutput, ?bool $enforceTimeLimit, ?array $excludeGroups, ?int $executionOrder, ?int $executionOrderDefects, ?bool $failOnDeprecation, ?bool $failOnPhpunitDeprecation, ?bool $failOnEmptyTestSuite, ?bool $failOnIncomplete, ?bool $failOnNotice, ?bool $failOnRisky, ?bool $failOnSkipped, ?bool $failOnWarning, ?bool $stopOnDefect, ?bool $stopOnDeprecation, ?bool $stopOnError, ?bool $stopOnFailure, ?bool $stopOnIncomplete, ?bool $stopOnNotice, ?bool $stopOnRisky, ?bool $stopOnSkipped, ?bool $stopOnWarning, ?string $filter, ?string $generateBaseline, ?string $useBaseline, bool $ignoreBaseline, bool $generateConfiguration, bool $migrateConfiguration, ?array $groups, ?array $testsCovering, ?array $testsUsing, bool $help, ?string $includePath, ?array $iniSettings, ?string $junitLogfile, bool $listGroups, bool $listSuites, bool $listTests, ?string $listTestsXml, ?bool $noCoverage, ?bool $noExtensions, ?bool $noOutput, ?bool $noProgress, ?bool $noResults, ?bool $noLogging, ?bool $processIsolation, ?int $randomOrderSeed, ?bool $reportUselessTests, ?bool $resolveDependencies, ?bool $reverseList, ?bool $stderr, ?bool $strictCoverage, ?string $teamcityLogfile, ?string $testdoxHtmlFile, ?string $testdoxTextFile, ?array $testSuffixes, ?string $testSuite, ?string $excludeTestSuite, bool $useDefaultConfiguration, ?bool $displayDetailsOnIncompleteTests, ?bool $displayDetailsOnSkippedTests, ?bool $displayDetailsOnTestsThatTriggerDeprecations, ?bool $displayDetailsOnPhpunitDeprecations, ?bool $displayDetailsOnTestsThatTriggerErrors, ?bool $displayDetailsOnTestsThatTriggerNotices, ?bool $displayDetailsOnTestsThatTriggerWarnings, bool $version, ?array $coverageFilter, ?string $logEventsText, ?string $logEventsVerboseText, ?bool $printerTeamCity, ?bool $printerTestDox, bool $debug) - { - $this->arguments = $arguments; - $this->atLeastVersion = $atLeastVersion; - $this->backupGlobals = $backupGlobals; - $this->backupStaticProperties = $backupStaticProperties; - $this->beStrictAboutChangesToGlobalState = $beStrictAboutChangesToGlobalState; - $this->bootstrap = $bootstrap; - $this->cacheDirectory = $cacheDirectory; - $this->cacheResult = $cacheResult; - $this->cacheResultFile = $cacheResultFile; - $this->checkVersion = $checkVersion; - $this->colors = $colors; - $this->columns = $columns; - $this->configurationFile = $configurationFile; - $this->coverageFilter = $coverageFilter; - $this->coverageClover = $coverageClover; - $this->coverageCobertura = $coverageCobertura; - $this->coverageCrap4J = $coverageCrap4J; - $this->coverageHtml = $coverageHtml; - $this->coveragePhp = $coveragePhp; - $this->coverageText = $coverageText; - $this->coverageTextShowUncoveredFiles = $coverageTextShowUncoveredFiles; - $this->coverageTextShowOnlySummary = $coverageTextShowOnlySummary; - $this->coverageXml = $coverageXml; - $this->pathCoverage = $pathCoverage; - $this->coverageCacheDirectory = $coverageCacheDirectory; - $this->warmCoverageCache = $warmCoverageCache; - $this->defaultTimeLimit = $defaultTimeLimit; - $this->disableCodeCoverageIgnore = $disableCodeCoverageIgnore; - $this->disallowTestOutput = $disallowTestOutput; - $this->enforceTimeLimit = $enforceTimeLimit; - $this->excludeGroups = $excludeGroups; - $this->executionOrder = $executionOrder; - $this->executionOrderDefects = $executionOrderDefects; - $this->failOnDeprecation = $failOnDeprecation; - $this->failOnPhpunitDeprecation = $failOnPhpunitDeprecation; - $this->failOnEmptyTestSuite = $failOnEmptyTestSuite; - $this->failOnIncomplete = $failOnIncomplete; - $this->failOnNotice = $failOnNotice; - $this->failOnRisky = $failOnRisky; - $this->failOnSkipped = $failOnSkipped; - $this->failOnWarning = $failOnWarning; - $this->stopOnDefect = $stopOnDefect; - $this->stopOnDeprecation = $stopOnDeprecation; - $this->stopOnError = $stopOnError; - $this->stopOnFailure = $stopOnFailure; - $this->stopOnIncomplete = $stopOnIncomplete; - $this->stopOnNotice = $stopOnNotice; - $this->stopOnRisky = $stopOnRisky; - $this->stopOnSkipped = $stopOnSkipped; - $this->stopOnWarning = $stopOnWarning; - $this->filter = $filter; - $this->generateBaseline = $generateBaseline; - $this->useBaseline = $useBaseline; - $this->ignoreBaseline = $ignoreBaseline; - $this->generateConfiguration = $generateConfiguration; - $this->migrateConfiguration = $migrateConfiguration; - $this->groups = $groups; - $this->testsCovering = $testsCovering; - $this->testsUsing = $testsUsing; - $this->help = $help; - $this->includePath = $includePath; - $this->iniSettings = $iniSettings; - $this->junitLogfile = $junitLogfile; - $this->listGroups = $listGroups; - $this->listSuites = $listSuites; - $this->listTests = $listTests; - $this->listTestsXml = $listTestsXml; - $this->noCoverage = $noCoverage; - $this->noExtensions = $noExtensions; - $this->noOutput = $noOutput; - $this->noProgress = $noProgress; - $this->noResults = $noResults; - $this->noLogging = $noLogging; - $this->processIsolation = $processIsolation; - $this->randomOrderSeed = $randomOrderSeed; - $this->reportUselessTests = $reportUselessTests; - $this->resolveDependencies = $resolveDependencies; - $this->reverseList = $reverseList; - $this->stderr = $stderr; - $this->strictCoverage = $strictCoverage; - $this->teamcityLogfile = $teamcityLogfile; - $this->testdoxHtmlFile = $testdoxHtmlFile; - $this->testdoxTextFile = $testdoxTextFile; - $this->testSuffixes = $testSuffixes; - $this->testSuite = $testSuite; - $this->excludeTestSuite = $excludeTestSuite; - $this->useDefaultConfiguration = $useDefaultConfiguration; - $this->displayDetailsOnIncompleteTests = $displayDetailsOnIncompleteTests; - $this->displayDetailsOnSkippedTests = $displayDetailsOnSkippedTests; - $this->displayDetailsOnTestsThatTriggerDeprecations = $displayDetailsOnTestsThatTriggerDeprecations; - $this->displayDetailsOnPhpunitDeprecations = $displayDetailsOnPhpunitDeprecations; - $this->displayDetailsOnTestsThatTriggerErrors = $displayDetailsOnTestsThatTriggerErrors; - $this->displayDetailsOnTestsThatTriggerNotices = $displayDetailsOnTestsThatTriggerNotices; - $this->displayDetailsOnTestsThatTriggerWarnings = $displayDetailsOnTestsThatTriggerWarnings; - $this->version = $version; - $this->logEventsText = $logEventsText; - $this->logEventsVerboseText = $logEventsVerboseText; - $this->teamCityPrinter = $printerTeamCity; - $this->testdoxPrinter = $printerTestDox; - $this->debug = $debug; - } - - /** - * @psalm-return list - */ - public function arguments(): array - { - return $this->arguments; - } - - /** - * @psalm-assert-if-true !null $this->atLeastVersion - */ - public function hasAtLeastVersion(): bool - { - return $this->atLeastVersion !== null; - } - - /** - * @throws Exception - */ - public function atLeastVersion(): string - { - if (!$this->hasAtLeastVersion()) { - throw new Exception; - } - - return $this->atLeastVersion; - } - - /** - * @psalm-assert-if-true !null $this->backupGlobals - */ - public function hasBackupGlobals(): bool - { - return $this->backupGlobals !== null; - } - - /** - * @throws Exception - */ - public function backupGlobals(): bool - { - if (!$this->hasBackupGlobals()) { - throw new Exception; - } - - return $this->backupGlobals; - } - - /** - * @psalm-assert-if-true !null $this->backupStaticProperties - */ - public function hasBackupStaticProperties(): bool - { - return $this->backupStaticProperties !== null; - } - - /** - * @throws Exception - */ - public function backupStaticProperties(): bool - { - if (!$this->hasBackupStaticProperties()) { - throw new Exception; - } - - return $this->backupStaticProperties; - } - - /** - * @psalm-assert-if-true !null $this->beStrictAboutChangesToGlobalState - */ - public function hasBeStrictAboutChangesToGlobalState(): bool - { - return $this->beStrictAboutChangesToGlobalState !== null; - } - - /** - * @throws Exception - */ - public function beStrictAboutChangesToGlobalState(): bool - { - if (!$this->hasBeStrictAboutChangesToGlobalState()) { - throw new Exception; - } - - return $this->beStrictAboutChangesToGlobalState; - } - - /** - * @psalm-assert-if-true !null $this->bootstrap - */ - public function hasBootstrap(): bool - { - return $this->bootstrap !== null; - } - - /** - * @throws Exception - */ - public function bootstrap(): string - { - if (!$this->hasBootstrap()) { - throw new Exception; - } - - return $this->bootstrap; - } - - /** - * @psalm-assert-if-true !null $this->cacheDirectory - */ - public function hasCacheDirectory(): bool - { - return $this->cacheDirectory !== null; - } - - /** - * @throws Exception - */ - public function cacheDirectory(): string - { - if (!$this->hasCacheDirectory()) { - throw new Exception; - } - - return $this->cacheDirectory; - } - - /** - * @psalm-assert-if-true !null $this->cacheResult - */ - public function hasCacheResult(): bool - { - return $this->cacheResult !== null; - } - - /** - * @throws Exception - */ - public function cacheResult(): bool - { - if (!$this->hasCacheResult()) { - throw new Exception; - } - - return $this->cacheResult; - } - - /** - * @psalm-assert-if-true !null $this->cacheResultFile - * - * @deprecated - */ - public function hasCacheResultFile(): bool - { - return $this->cacheResultFile !== null; - } - - /** - * @throws Exception - * - * @deprecated - */ - public function cacheResultFile(): string - { - if (!$this->hasCacheResultFile()) { - throw new Exception; - } - - return $this->cacheResultFile; - } - - public function checkVersion(): bool - { - return $this->checkVersion; - } - - /** - * @psalm-assert-if-true !null $this->colors - */ - public function hasColors(): bool - { - return $this->colors !== null; - } - - /** - * @throws Exception - */ - public function colors(): string - { - if (!$this->hasColors()) { - throw new Exception; - } - - return $this->colors; - } - - /** - * @psalm-assert-if-true !null $this->columns - */ - public function hasColumns(): bool - { - return $this->columns !== null; - } - - /** - * @throws Exception - */ - public function columns(): int|string - { - if (!$this->hasColumns()) { - throw new Exception; - } - - return $this->columns; - } - - /** - * @psalm-assert-if-true !null $this->configurationFile - */ - public function hasConfigurationFile(): bool - { - return $this->configurationFile !== null; - } - - /** - * @throws Exception - */ - public function configurationFile(): string - { - if (!$this->hasConfigurationFile()) { - throw new Exception; - } - - return $this->configurationFile; - } - - /** - * @psalm-assert-if-true !null $this->coverageFilter - */ - public function hasCoverageFilter(): bool - { - return $this->coverageFilter !== null; - } - - /** - * @throws Exception - */ - public function coverageFilter(): array - { - if (!$this->hasCoverageFilter()) { - throw new Exception; - } - - return $this->coverageFilter; - } - - /** - * @psalm-assert-if-true !null $this->coverageClover - */ - public function hasCoverageClover(): bool - { - return $this->coverageClover !== null; - } - - /** - * @throws Exception - */ - public function coverageClover(): string - { - if (!$this->hasCoverageClover()) { - throw new Exception; - } - - return $this->coverageClover; - } - - /** - * @psalm-assert-if-true !null $this->coverageCobertura - */ - public function hasCoverageCobertura(): bool - { - return $this->coverageCobertura !== null; - } - - /** - * @throws Exception - */ - public function coverageCobertura(): string - { - if (!$this->hasCoverageCobertura()) { - throw new Exception; - } - - return $this->coverageCobertura; - } - - /** - * @psalm-assert-if-true !null $this->coverageCrap4J - */ - public function hasCoverageCrap4J(): bool - { - return $this->coverageCrap4J !== null; - } - - /** - * @throws Exception - */ - public function coverageCrap4J(): string - { - if (!$this->hasCoverageCrap4J()) { - throw new Exception; - } - - return $this->coverageCrap4J; - } - - /** - * @psalm-assert-if-true !null $this->coverageHtml - */ - public function hasCoverageHtml(): bool - { - return $this->coverageHtml !== null; - } - - /** - * @throws Exception - */ - public function coverageHtml(): string - { - if (!$this->hasCoverageHtml()) { - throw new Exception; - } - - return $this->coverageHtml; - } - - /** - * @psalm-assert-if-true !null $this->coveragePhp - */ - public function hasCoveragePhp(): bool - { - return $this->coveragePhp !== null; - } - - /** - * @throws Exception - */ - public function coveragePhp(): string - { - if (!$this->hasCoveragePhp()) { - throw new Exception; - } - - return $this->coveragePhp; - } - - /** - * @psalm-assert-if-true !null $this->coverageText - */ - public function hasCoverageText(): bool - { - return $this->coverageText !== null; - } - - /** - * @throws Exception - */ - public function coverageText(): string - { - if (!$this->hasCoverageText()) { - throw new Exception; - } - - return $this->coverageText; - } - - /** - * @psalm-assert-if-true !null $this->coverageTextShowUncoveredFiles - */ - public function hasCoverageTextShowUncoveredFiles(): bool - { - return $this->coverageTextShowUncoveredFiles !== null; - } - - /** - * @throws Exception - */ - public function coverageTextShowUncoveredFiles(): bool - { - if (!$this->hasCoverageTextShowUncoveredFiles()) { - throw new Exception; - } - - return $this->coverageTextShowUncoveredFiles; - } - - /** - * @psalm-assert-if-true !null $this->coverageTextShowOnlySummary - */ - public function hasCoverageTextShowOnlySummary(): bool - { - return $this->coverageTextShowOnlySummary !== null; - } - - /** - * @throws Exception - */ - public function coverageTextShowOnlySummary(): bool - { - if (!$this->hasCoverageTextShowOnlySummary()) { - throw new Exception; - } - - return $this->coverageTextShowOnlySummary; - } - - /** - * @psalm-assert-if-true !null $this->coverageXml - */ - public function hasCoverageXml(): bool - { - return $this->coverageXml !== null; - } - - /** - * @throws Exception - */ - public function coverageXml(): string - { - if (!$this->hasCoverageXml()) { - throw new Exception; - } - - return $this->coverageXml; - } - - /** - * @psalm-assert-if-true !null $this->pathCoverage - */ - public function hasPathCoverage(): bool - { - return $this->pathCoverage !== null; - } - - /** - * @throws Exception - */ - public function pathCoverage(): bool - { - if (!$this->hasPathCoverage()) { - throw new Exception; - } - - return $this->pathCoverage; - } - - /** - * @psalm-assert-if-true !null $this->coverageCacheDirectory - * - * @deprecated - */ - public function hasCoverageCacheDirectory(): bool - { - return $this->coverageCacheDirectory !== null; - } - - /** - * @throws Exception - * - * @deprecated - */ - public function coverageCacheDirectory(): string - { - if (!$this->hasCoverageCacheDirectory()) { - throw new Exception; - } - - return $this->coverageCacheDirectory; - } - - public function warmCoverageCache(): bool - { - return $this->warmCoverageCache; - } - - /** - * @psalm-assert-if-true !null $this->defaultTimeLimit - */ - public function hasDefaultTimeLimit(): bool - { - return $this->defaultTimeLimit !== null; - } - - /** - * @throws Exception - */ - public function defaultTimeLimit(): int - { - if (!$this->hasDefaultTimeLimit()) { - throw new Exception; - } - - return $this->defaultTimeLimit; - } - - /** - * @psalm-assert-if-true !null $this->disableCodeCoverageIgnore - */ - public function hasDisableCodeCoverageIgnore(): bool - { - return $this->disableCodeCoverageIgnore !== null; - } - - /** - * @throws Exception - */ - public function disableCodeCoverageIgnore(): bool - { - if (!$this->hasDisableCodeCoverageIgnore()) { - throw new Exception; - } - - return $this->disableCodeCoverageIgnore; - } - - /** - * @psalm-assert-if-true !null $this->disallowTestOutput - */ - public function hasDisallowTestOutput(): bool - { - return $this->disallowTestOutput !== null; - } - - /** - * @throws Exception - */ - public function disallowTestOutput(): bool - { - if (!$this->hasDisallowTestOutput()) { - throw new Exception; - } - - return $this->disallowTestOutput; - } - - /** - * @psalm-assert-if-true !null $this->enforceTimeLimit - */ - public function hasEnforceTimeLimit(): bool - { - return $this->enforceTimeLimit !== null; - } - - /** - * @throws Exception - */ - public function enforceTimeLimit(): bool - { - if (!$this->hasEnforceTimeLimit()) { - throw new Exception; - } - - return $this->enforceTimeLimit; - } - - /** - * @psalm-assert-if-true !null $this->excludeGroups - */ - public function hasExcludeGroups(): bool - { - return $this->excludeGroups !== null; - } - - /** - * @throws Exception - */ - public function excludeGroups(): array - { - if (!$this->hasExcludeGroups()) { - throw new Exception; - } - - return $this->excludeGroups; - } - - /** - * @psalm-assert-if-true !null $this->executionOrder - */ - public function hasExecutionOrder(): bool - { - return $this->executionOrder !== null; - } - - /** - * @throws Exception - */ - public function executionOrder(): int - { - if (!$this->hasExecutionOrder()) { - throw new Exception; - } - - return $this->executionOrder; - } - - /** - * @psalm-assert-if-true !null $this->executionOrderDefects - */ - public function hasExecutionOrderDefects(): bool - { - return $this->executionOrderDefects !== null; - } - - /** - * @throws Exception - */ - public function executionOrderDefects(): int - { - if (!$this->hasExecutionOrderDefects()) { - throw new Exception; - } - - return $this->executionOrderDefects; - } - - /** - * @psalm-assert-if-true !null $this->failOnDeprecation - */ - public function hasFailOnDeprecation(): bool - { - return $this->failOnDeprecation !== null; - } - - /** - * @throws Exception - */ - public function failOnDeprecation(): bool - { - if (!$this->hasFailOnDeprecation()) { - throw new Exception; - } - - return $this->failOnDeprecation; - } - - /** - * @psalm-assert-if-true !null $this->failOnPhpunitDeprecation - */ - public function hasFailOnPhpunitDeprecation(): bool - { - return $this->failOnPhpunitDeprecation !== null; - } - - /** - * @throws Exception - */ - public function failOnPhpunitDeprecation(): bool - { - if (!$this->hasFailOnPhpunitDeprecation()) { - throw new Exception; - } - - return $this->failOnPhpunitDeprecation; - } - - /** - * @psalm-assert-if-true !null $this->failOnEmptyTestSuite - */ - public function hasFailOnEmptyTestSuite(): bool - { - return $this->failOnEmptyTestSuite !== null; - } - - /** - * @throws Exception - */ - public function failOnEmptyTestSuite(): bool - { - if (!$this->hasFailOnEmptyTestSuite()) { - throw new Exception; - } - - return $this->failOnEmptyTestSuite; - } - - /** - * @psalm-assert-if-true !null $this->failOnIncomplete - */ - public function hasFailOnIncomplete(): bool - { - return $this->failOnIncomplete !== null; - } - - /** - * @throws Exception - */ - public function failOnIncomplete(): bool - { - if (!$this->hasFailOnIncomplete()) { - throw new Exception; - } - - return $this->failOnIncomplete; - } - - /** - * @psalm-assert-if-true !null $this->failOnNotice - */ - public function hasFailOnNotice(): bool - { - return $this->failOnNotice !== null; - } - - /** - * @throws Exception - */ - public function failOnNotice(): bool - { - if (!$this->hasFailOnNotice()) { - throw new Exception; - } - - return $this->failOnNotice; - } - - /** - * @psalm-assert-if-true !null $this->failOnRisky - */ - public function hasFailOnRisky(): bool - { - return $this->failOnRisky !== null; - } - - /** - * @throws Exception - */ - public function failOnRisky(): bool - { - if (!$this->hasFailOnRisky()) { - throw new Exception; - } - - return $this->failOnRisky; - } - - /** - * @psalm-assert-if-true !null $this->failOnSkipped - */ - public function hasFailOnSkipped(): bool - { - return $this->failOnSkipped !== null; - } - - /** - * @throws Exception - */ - public function failOnSkipped(): bool - { - if (!$this->hasFailOnSkipped()) { - throw new Exception; - } - - return $this->failOnSkipped; - } - - /** - * @psalm-assert-if-true !null $this->failOnWarning - */ - public function hasFailOnWarning(): bool - { - return $this->failOnWarning !== null; - } - - /** - * @throws Exception - */ - public function failOnWarning(): bool - { - if (!$this->hasFailOnWarning()) { - throw new Exception; - } - - return $this->failOnWarning; - } - - /** - * @psalm-assert-if-true !null $this->stopOnDefect - */ - public function hasStopOnDefect(): bool - { - return $this->stopOnDefect !== null; - } - - /** - * @throws Exception - */ - public function stopOnDefect(): bool - { - if (!$this->hasStopOnDefect()) { - throw new Exception; - } - - return $this->stopOnDefect; - } - - /** - * @psalm-assert-if-true !null $this->stopOnDeprecation - */ - public function hasStopOnDeprecation(): bool - { - return $this->stopOnDeprecation !== null; - } - - /** - * @throws Exception - */ - public function stopOnDeprecation(): bool - { - if (!$this->hasStopOnDeprecation()) { - throw new Exception; - } - - return $this->stopOnDeprecation; - } - - /** - * @psalm-assert-if-true !null $this->stopOnError - */ - public function hasStopOnError(): bool - { - return $this->stopOnError !== null; - } - - /** - * @throws Exception - */ - public function stopOnError(): bool - { - if (!$this->hasStopOnError()) { - throw new Exception; - } - - return $this->stopOnError; - } - - /** - * @psalm-assert-if-true !null $this->stopOnFailure - */ - public function hasStopOnFailure(): bool - { - return $this->stopOnFailure !== null; - } - - /** - * @throws Exception - */ - public function stopOnFailure(): bool - { - if (!$this->hasStopOnFailure()) { - throw new Exception; - } - - return $this->stopOnFailure; - } - - /** - * @psalm-assert-if-true !null $this->stopOnIncomplete - */ - public function hasStopOnIncomplete(): bool - { - return $this->stopOnIncomplete !== null; - } - - /** - * @throws Exception - */ - public function stopOnIncomplete(): bool - { - if (!$this->hasStopOnIncomplete()) { - throw new Exception; - } - - return $this->stopOnIncomplete; - } - - /** - * @psalm-assert-if-true !null $this->stopOnNotice - */ - public function hasStopOnNotice(): bool - { - return $this->stopOnNotice !== null; - } - - /** - * @throws Exception - */ - public function stopOnNotice(): bool - { - if (!$this->hasStopOnNotice()) { - throw new Exception; - } - - return $this->stopOnNotice; - } - - /** - * @psalm-assert-if-true !null $this->stopOnRisky - */ - public function hasStopOnRisky(): bool - { - return $this->stopOnRisky !== null; - } - - /** - * @throws Exception - */ - public function stopOnRisky(): bool - { - if (!$this->hasStopOnRisky()) { - throw new Exception; - } - - return $this->stopOnRisky; - } - - /** - * @psalm-assert-if-true !null $this->stopOnSkipped - */ - public function hasStopOnSkipped(): bool - { - return $this->stopOnSkipped !== null; - } - - /** - * @throws Exception - */ - public function stopOnSkipped(): bool - { - if (!$this->hasStopOnSkipped()) { - throw new Exception; - } - - return $this->stopOnSkipped; - } - - /** - * @psalm-assert-if-true !null $this->stopOnWarning - */ - public function hasStopOnWarning(): bool - { - return $this->stopOnWarning !== null; - } - - /** - * @throws Exception - */ - public function stopOnWarning(): bool - { - if (!$this->hasStopOnWarning()) { - throw new Exception; - } - - return $this->stopOnWarning; - } - - /** - * @psalm-assert-if-true !null $this->filter - */ - public function hasFilter(): bool - { - return $this->filter !== null; - } - - /** - * @throws Exception - */ - public function filter(): string - { - if (!$this->hasFilter()) { - throw new Exception; - } - - return $this->filter; - } - - /** - * @psalm-assert-if-true !null $this->generateBaseline - */ - public function hasGenerateBaseline(): bool - { - return $this->generateBaseline !== null; - } - - /** - * @throws Exception - */ - public function generateBaseline(): string - { - if (!$this->hasGenerateBaseline()) { - throw new Exception; - } - - return $this->generateBaseline; - } - - /** - * @psalm-assert-if-true !null $this->useBaseline - */ - public function hasUseBaseline(): bool - { - return $this->useBaseline !== null; - } - - /** - * @throws Exception - */ - public function useBaseline(): string - { - if (!$this->hasUseBaseline()) { - throw new Exception; - } - - return $this->useBaseline; - } - - public function ignoreBaseline(): bool - { - return $this->ignoreBaseline; - } - - public function generateConfiguration(): bool - { - return $this->generateConfiguration; - } - - public function migrateConfiguration(): bool - { - return $this->migrateConfiguration; - } - - /** - * @psalm-assert-if-true !null $this->groups - */ - public function hasGroups(): bool - { - return $this->groups !== null; - } - - /** - * @throws Exception - */ - public function groups(): array - { - if (!$this->hasGroups()) { - throw new Exception; - } - - return $this->groups; - } - - /** - * @psalm-assert-if-true !null $this->testsCovering - */ - public function hasTestsCovering(): bool - { - return $this->testsCovering !== null; - } - - /** - * @throws Exception - */ - public function testsCovering(): array - { - if (!$this->hasTestsCovering()) { - throw new Exception; - } - - return $this->testsCovering; - } - - /** - * @psalm-assert-if-true !null $this->testsUsing - */ - public function hasTestsUsing(): bool - { - return $this->testsUsing !== null; - } - - /** - * @throws Exception - */ - public function testsUsing(): array - { - if (!$this->hasTestsUsing()) { - throw new Exception; - } - - return $this->testsUsing; - } - - public function help(): bool - { - return $this->help; - } - - /** - * @psalm-assert-if-true !null $this->includePath - */ - public function hasIncludePath(): bool - { - return $this->includePath !== null; - } - - /** - * @throws Exception - */ - public function includePath(): string - { - if (!$this->hasIncludePath()) { - throw new Exception; - } - - return $this->includePath; - } - - /** - * @psalm-assert-if-true !null $this->iniSettings - */ - public function hasIniSettings(): bool - { - return $this->iniSettings !== null; - } - - /** - * @throws Exception - */ - public function iniSettings(): array - { - if (!$this->hasIniSettings()) { - throw new Exception; - } - - return $this->iniSettings; - } - - /** - * @psalm-assert-if-true !null $this->junitLogfile - */ - public function hasJunitLogfile(): bool - { - return $this->junitLogfile !== null; - } - - /** - * @throws Exception - */ - public function junitLogfile(): string - { - if (!$this->hasJunitLogfile()) { - throw new Exception; - } - - return $this->junitLogfile; - } - - public function listGroups(): bool - { - return $this->listGroups; - } - - public function listSuites(): bool - { - return $this->listSuites; - } - - public function listTests(): bool - { - return $this->listTests; - } - - /** - * @psalm-assert-if-true !null $this->listTestsXml - */ - public function hasListTestsXml(): bool - { - return $this->listTestsXml !== null; - } - - /** - * @throws Exception - */ - public function listTestsXml(): string - { - if (!$this->hasListTestsXml()) { - throw new Exception; - } - - return $this->listTestsXml; - } - - /** - * @psalm-assert-if-true !null $this->noCoverage - */ - public function hasNoCoverage(): bool - { - return $this->noCoverage !== null; - } - - /** - * @throws Exception - */ - public function noCoverage(): bool - { - if (!$this->hasNoCoverage()) { - throw new Exception; - } - - return $this->noCoverage; - } - - /** - * @psalm-assert-if-true !null $this->noExtensions - */ - public function hasNoExtensions(): bool - { - return $this->noExtensions !== null; - } - - /** - * @throws Exception - */ - public function noExtensions(): bool - { - if (!$this->hasNoExtensions()) { - throw new Exception; - } - - return $this->noExtensions; - } - - /** - * @psalm-assert-if-true !null $this->noOutput - */ - public function hasNoOutput(): bool - { - return $this->noOutput !== null; - } - - /** - * @throws Exception - */ - public function noOutput(): bool - { - if ($this->noOutput === null) { - throw new Exception; - } - - return $this->noOutput; - } - - /** - * @psalm-assert-if-true !null $this->noProgress - */ - public function hasNoProgress(): bool - { - return $this->noProgress !== null; - } - - /** - * @throws Exception - */ - public function noProgress(): bool - { - if ($this->noProgress === null) { - throw new Exception; - } - - return $this->noProgress; - } - - /** - * @psalm-assert-if-true !null $this->noResults - */ - public function hasNoResults(): bool - { - return $this->noResults !== null; - } - - /** - * @throws Exception - */ - public function noResults(): bool - { - if ($this->noResults === null) { - throw new Exception; - } - - return $this->noResults; - } - - /** - * @psalm-assert-if-true !null $this->noLogging - */ - public function hasNoLogging(): bool - { - return $this->noLogging !== null; - } - - /** - * @throws Exception - */ - public function noLogging(): bool - { - if (!$this->hasNoLogging()) { - throw new Exception; - } - - return $this->noLogging; - } - - /** - * @psalm-assert-if-true !null $this->processIsolation - */ - public function hasProcessIsolation(): bool - { - return $this->processIsolation !== null; - } - - /** - * @throws Exception - */ - public function processIsolation(): bool - { - if (!$this->hasProcessIsolation()) { - throw new Exception; - } - - return $this->processIsolation; - } - - /** - * @psalm-assert-if-true !null $this->randomOrderSeed - */ - public function hasRandomOrderSeed(): bool - { - return $this->randomOrderSeed !== null; - } - - /** - * @throws Exception - */ - public function randomOrderSeed(): int - { - if (!$this->hasRandomOrderSeed()) { - throw new Exception; - } - - return $this->randomOrderSeed; - } - - /** - * @psalm-assert-if-true !null $this->reportUselessTests - */ - public function hasReportUselessTests(): bool - { - return $this->reportUselessTests !== null; - } - - /** - * @throws Exception - */ - public function reportUselessTests(): bool - { - if (!$this->hasReportUselessTests()) { - throw new Exception; - } - - return $this->reportUselessTests; - } - - /** - * @psalm-assert-if-true !null $this->resolveDependencies - */ - public function hasResolveDependencies(): bool - { - return $this->resolveDependencies !== null; - } - - /** - * @throws Exception - */ - public function resolveDependencies(): bool - { - if (!$this->hasResolveDependencies()) { - throw new Exception; - } - - return $this->resolveDependencies; - } - - /** - * @psalm-assert-if-true !null $this->reverseList - */ - public function hasReverseList(): bool - { - return $this->reverseList !== null; - } - - /** - * @throws Exception - */ - public function reverseList(): bool - { - if (!$this->hasReverseList()) { - throw new Exception; - } - - return $this->reverseList; - } - - /** - * @psalm-assert-if-true !null $this->stderr - */ - public function hasStderr(): bool - { - return $this->stderr !== null; - } - - /** - * @throws Exception - */ - public function stderr(): bool - { - if (!$this->hasStderr()) { - throw new Exception; - } - - return $this->stderr; - } - - /** - * @psalm-assert-if-true !null $this->strictCoverage - */ - public function hasStrictCoverage(): bool - { - return $this->strictCoverage !== null; - } - - /** - * @throws Exception - */ - public function strictCoverage(): bool - { - if (!$this->hasStrictCoverage()) { - throw new Exception; - } - - return $this->strictCoverage; - } - - /** - * @psalm-assert-if-true !null $this->teamcityLogfile - */ - public function hasTeamcityLogfile(): bool - { - return $this->teamcityLogfile !== null; - } - - /** - * @throws Exception - */ - public function teamcityLogfile(): string - { - if (!$this->hasTeamcityLogfile()) { - throw new Exception; - } - - return $this->teamcityLogfile; - } - - /** - * @psalm-assert-if-true !null $this->teamcityPrinter - */ - public function hasTeamCityPrinter(): bool - { - return $this->teamCityPrinter !== null; - } - - /** - * @throws Exception - */ - public function teamCityPrinter(): bool - { - if (!$this->hasTeamCityPrinter()) { - throw new Exception; - } - - return $this->teamCityPrinter; - } - - /** - * @psalm-assert-if-true !null $this->testdoxHtmlFile - */ - public function hasTestdoxHtmlFile(): bool - { - return $this->testdoxHtmlFile !== null; - } - - /** - * @throws Exception - */ - public function testdoxHtmlFile(): string - { - if (!$this->hasTestdoxHtmlFile()) { - throw new Exception; - } - - return $this->testdoxHtmlFile; - } - - /** - * @psalm-assert-if-true !null $this->testdoxTextFile - */ - public function hasTestdoxTextFile(): bool - { - return $this->testdoxTextFile !== null; - } - - /** - * @throws Exception - */ - public function testdoxTextFile(): string - { - if (!$this->hasTestdoxTextFile()) { - throw new Exception; - } - - return $this->testdoxTextFile; - } - - /** - * @psalm-assert-if-true !null $this->testdoxPrinter - */ - public function hasTestDoxPrinter(): bool - { - return $this->testdoxPrinter !== null; - } - - /** - * @throws Exception - */ - public function testdoxPrinter(): bool - { - if (!$this->hasTestdoxPrinter()) { - throw new Exception; - } - - return $this->testdoxPrinter; - } - - /** - * @psalm-assert-if-true !null $this->testSuffixes - */ - public function hasTestSuffixes(): bool - { - return $this->testSuffixes !== null; - } - - /** - * @psalm-return non-empty-list - * - * @throws Exception - */ - public function testSuffixes(): array - { - if (!$this->hasTestSuffixes()) { - throw new Exception; - } - - return $this->testSuffixes; - } - - /** - * @psalm-assert-if-true !null $this->testSuite - */ - public function hasTestSuite(): bool - { - return $this->testSuite !== null; - } - - /** - * @throws Exception - */ - public function testSuite(): string - { - if (!$this->hasTestSuite()) { - throw new Exception; - } - - return $this->testSuite; - } - - /** - * @psalm-assert-if-true !null $this->excludedTestSuite - */ - public function hasExcludedTestSuite(): bool - { - return $this->excludeTestSuite !== null; - } - - /** - * @throws Exception - */ - public function excludedTestSuite(): string - { - if (!$this->hasExcludedTestSuite()) { - throw new Exception; - } - - return $this->excludeTestSuite; - } - - public function useDefaultConfiguration(): bool - { - return $this->useDefaultConfiguration; - } - - /** - * @psalm-assert-if-true !null $this->displayDetailsOnIncompleteTests - */ - public function hasDisplayDetailsOnIncompleteTests(): bool - { - return $this->displayDetailsOnIncompleteTests !== null; - } - - /** - * @throws Exception - */ - public function displayDetailsOnIncompleteTests(): bool - { - if (!$this->hasDisplayDetailsOnIncompleteTests()) { - throw new Exception; - } - - return $this->displayDetailsOnIncompleteTests; - } - - /** - * @psalm-assert-if-true !null $this->displayDetailsOnSkippedTests - */ - public function hasDisplayDetailsOnSkippedTests(): bool - { - return $this->displayDetailsOnSkippedTests !== null; - } - - /** - * @throws Exception - */ - public function displayDetailsOnSkippedTests(): bool - { - if (!$this->hasDisplayDetailsOnSkippedTests()) { - throw new Exception; - } - - return $this->displayDetailsOnSkippedTests; - } - - /** - * @psalm-assert-if-true !null $this->displayDetailsOnTestsThatTriggerDeprecations - */ - public function hasDisplayDetailsOnTestsThatTriggerDeprecations(): bool - { - return $this->displayDetailsOnTestsThatTriggerDeprecations !== null; - } - - /** - * @throws Exception - */ - public function displayDetailsOnTestsThatTriggerDeprecations(): bool - { - if (!$this->hasDisplayDetailsOnTestsThatTriggerDeprecations()) { - throw new Exception; - } - - return $this->displayDetailsOnTestsThatTriggerDeprecations; - } - - /** - * @psalm-assert-if-true !null $this->displayDetailsOnPhpunitDeprecations - */ - public function hasDisplayDetailsOnPhpunitDeprecations(): bool - { - return $this->displayDetailsOnPhpunitDeprecations !== null; - } - - /** - * @throws Exception - */ - public function displayDetailsOnPhpunitDeprecations(): bool - { - if (!$this->hasDisplayDetailsOnPhpunitDeprecations()) { - throw new Exception; - } - - return $this->displayDetailsOnPhpunitDeprecations; - } - - /** - * @psalm-assert-if-true !null $this->displayDetailsOnTestsThatTriggerErrors - */ - public function hasDisplayDetailsOnTestsThatTriggerErrors(): bool - { - return $this->displayDetailsOnTestsThatTriggerErrors !== null; - } - - /** - * @throws Exception - */ - public function displayDetailsOnTestsThatTriggerErrors(): bool - { - if (!$this->hasDisplayDetailsOnTestsThatTriggerErrors()) { - throw new Exception; - } - - return $this->displayDetailsOnTestsThatTriggerErrors; - } - - /** - * @psalm-assert-if-true !null $this->displayDetailsOnTestsThatTriggerNotices - */ - public function hasDisplayDetailsOnTestsThatTriggerNotices(): bool - { - return $this->displayDetailsOnTestsThatTriggerNotices !== null; - } - - /** - * @throws Exception - */ - public function displayDetailsOnTestsThatTriggerNotices(): bool - { - if (!$this->hasDisplayDetailsOnTestsThatTriggerNotices()) { - throw new Exception; - } - - return $this->displayDetailsOnTestsThatTriggerNotices; - } - - /** - * @psalm-assert-if-true !null $this->displayDetailsOnTestsThatTriggerWarnings - */ - public function hasDisplayDetailsOnTestsThatTriggerWarnings(): bool - { - return $this->displayDetailsOnTestsThatTriggerWarnings !== null; - } - - /** - * @throws Exception - */ - public function displayDetailsOnTestsThatTriggerWarnings(): bool - { - if (!$this->hasDisplayDetailsOnTestsThatTriggerWarnings()) { - throw new Exception; - } - - return $this->displayDetailsOnTestsThatTriggerWarnings; - } - - public function version(): bool - { - return $this->version; - } - - /** - * @psalm-assert-if-true !null $this->logEventsText - */ - public function hasLogEventsText(): bool - { - return $this->logEventsText !== null; - } - - /** - * @throws Exception - */ - public function logEventsText(): string - { - if (!$this->hasLogEventsText()) { - throw new Exception; - } - - return $this->logEventsText; - } - - /** - * @psalm-assert-if-true !null $this->logEventsVerboseText - */ - public function hasLogEventsVerboseText(): bool - { - return $this->logEventsVerboseText !== null; - } - - /** - * @throws Exception - */ - public function logEventsVerboseText(): string - { - if (!$this->hasLogEventsVerboseText()) { - throw new Exception; - } - - return $this->logEventsVerboseText; - } - - public function debug(): bool - { - return $this->debug; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Cli/Exception.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Cli/Exception.php deleted file mode 100644 index 0d9a5a00..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Cli/Exception.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\CliArguments; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Exception extends RuntimeException implements \PHPUnit\Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Cli/XmlConfigurationFileFinder.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Cli/XmlConfigurationFileFinder.php deleted file mode 100644 index 03ac43a0..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Cli/XmlConfigurationFileFinder.php +++ /dev/null @@ -1,69 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\CliArguments; - -use function getcwd; -use function is_dir; -use function is_file; -use function realpath; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class XmlConfigurationFileFinder -{ - public function find(Configuration $configuration): false|string - { - $useDefaultConfiguration = $configuration->useDefaultConfiguration(); - - if ($configuration->hasConfigurationFile()) { - if (is_dir($configuration->configurationFile())) { - $candidate = $this->configurationFileInDirectory($configuration->configurationFile()); - - if ($candidate !== false) { - return $candidate; - } - - return false; - } - - return $configuration->configurationFile(); - } - - if ($useDefaultConfiguration) { - $candidate = $this->configurationFileInDirectory(getcwd()); - - if ($candidate !== false) { - return $candidate; - } - } - - return false; - } - - private function configurationFileInDirectory(string $directory): false|string - { - $candidates = [ - $directory . '/phpunit.xml', - $directory . '/phpunit.dist.xml', - $directory . '/phpunit.xml.dist', - ]; - - foreach ($candidates as $candidate) { - if (is_file($candidate)) { - return realpath($candidate); - } - } - - return false; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/CodeCoverageFilterRegistry.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/CodeCoverageFilterRegistry.php deleted file mode 100644 index 7051d284..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/CodeCoverageFilterRegistry.php +++ /dev/null @@ -1,78 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use function array_keys; -use function assert; -use SebastianBergmann\CodeCoverage\Filter; - -/** - * CLI options and XML configuration are static within a single PHPUnit process. - * It is therefore okay to use a Singleton registry here. - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class CodeCoverageFilterRegistry -{ - private static ?self $instance = null; - private ?Filter $filter = null; - private bool $configured = false; - - public static function instance(): self - { - if (self::$instance === null) { - self::$instance = new self; - } - - return self::$instance; - } - - /** - * @codeCoverageIgnore - */ - public function get(): Filter - { - assert($this->filter !== null); - - return $this->filter; - } - - /** - * @codeCoverageIgnore - */ - public function init(Configuration $configuration, bool $force = false): void - { - if (!$configuration->hasCoverageReport() && !$force) { - return; - } - - if ($this->configured && !$force) { - return; - } - - $this->filter = new Filter; - - if ($configuration->source()->notEmpty()) { - $this->filter->includeFiles(array_keys((new SourceMapper)->map($configuration->source()))); - - $this->configured = true; - } - } - - /** - * @codeCoverageIgnore - */ - public function configured(): bool - { - return $this->configured; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Configuration.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Configuration.php deleted file mode 100644 index 466c311a..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Configuration.php +++ /dev/null @@ -1,1309 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -/** - * @psalm-immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final class Configuration -{ - public const COLOR_NEVER = 'never'; - public const COLOR_AUTO = 'auto'; - public const COLOR_ALWAYS = 'always'; - public const COLOR_DEFAULT = self::COLOR_NEVER; - - /** - * @psalm-var list - */ - private readonly array $cliArguments; - private readonly ?string $configurationFile; - private readonly ?string $bootstrap; - private readonly bool $cacheResult; - private readonly ?string $cacheDirectory; - private readonly ?string $coverageCacheDirectory; - private readonly Source $source; - private readonly bool $pathCoverage; - private readonly ?string $coverageClover; - private readonly ?string $coverageCobertura; - private readonly ?string $coverageCrap4j; - private readonly int $coverageCrap4jThreshold; - private readonly ?string $coverageHtml; - private readonly int $coverageHtmlLowUpperBound; - private readonly int $coverageHtmlHighLowerBound; - private readonly string $coverageHtmlColorSuccessLow; - private readonly string $coverageHtmlColorSuccessMedium; - private readonly string $coverageHtmlColorSuccessHigh; - private readonly string $coverageHtmlColorWarning; - private readonly string $coverageHtmlColorDanger; - private readonly ?string $coverageHtmlCustomCssFile; - private readonly ?string $coveragePhp; - private readonly ?string $coverageText; - private readonly bool $coverageTextShowUncoveredFiles; - private readonly bool $coverageTextShowOnlySummary; - private readonly ?string $coverageXml; - private readonly string $testResultCacheFile; - private readonly bool $ignoreDeprecatedCodeUnitsFromCodeCoverage; - private readonly bool $disableCodeCoverageIgnore; - private readonly bool $failOnDeprecation; - private readonly bool $failOnPhpunitDeprecation; - private readonly bool $failOnEmptyTestSuite; - private readonly bool $failOnIncomplete; - private readonly bool $failOnNotice; - private readonly bool $failOnRisky; - private readonly bool $failOnSkipped; - private readonly bool $failOnWarning; - private readonly bool $stopOnDefect; - private readonly bool $stopOnDeprecation; - private readonly bool $stopOnError; - private readonly bool $stopOnFailure; - private readonly bool $stopOnIncomplete; - private readonly bool $stopOnNotice; - private readonly bool $stopOnRisky; - private readonly bool $stopOnSkipped; - private readonly bool $stopOnWarning; - private readonly bool $outputToStandardErrorStream; - private readonly int $columns; - private readonly bool $noExtensions; - - /** - * @psalm-var ?non-empty-string - */ - private readonly ?string $pharExtensionDirectory; - - /** - * @psalm-var list}> - */ - private readonly array $extensionBootstrappers; - private readonly bool $backupGlobals; - private readonly bool $backupStaticProperties; - private readonly bool $beStrictAboutChangesToGlobalState; - private readonly bool $colors; - private readonly bool $processIsolation; - private readonly bool $enforceTimeLimit; - private readonly int $defaultTimeLimit; - private readonly int $timeoutForSmallTests; - private readonly int $timeoutForMediumTests; - private readonly int $timeoutForLargeTests; - private readonly bool $reportUselessTests; - private readonly bool $strictCoverage; - private readonly bool $disallowTestOutput; - private readonly bool $displayDetailsOnIncompleteTests; - private readonly bool $displayDetailsOnSkippedTests; - private readonly bool $displayDetailsOnTestsThatTriggerDeprecations; - private readonly bool $displayDetailsOnPhpunitDeprecations; - private readonly bool $displayDetailsOnTestsThatTriggerErrors; - private readonly bool $displayDetailsOnTestsThatTriggerNotices; - private readonly bool $displayDetailsOnTestsThatTriggerWarnings; - private readonly bool $reverseDefectList; - private readonly bool $requireCoverageMetadata; - private readonly bool $registerMockObjectsFromTestArgumentsRecursively; - private readonly bool $noProgress; - private readonly bool $noResults; - private readonly bool $noOutput; - private readonly int $executionOrder; - private readonly int $executionOrderDefects; - private readonly bool $resolveDependencies; - private readonly ?string $logfileTeamcity; - private readonly ?string $logfileJunit; - private readonly ?string $logfileTestdoxHtml; - private readonly ?string $logfileTestdoxText; - private readonly ?string $logEventsText; - private readonly ?string $logEventsVerboseText; - private readonly ?array $testsCovering; - private readonly ?array $testsUsing; - private readonly bool $teamCityOutput; - private readonly bool $testDoxOutput; - private readonly ?string $filter; - private readonly ?array $groups; - private readonly ?array $excludeGroups; - private readonly int $randomOrderSeed; - private readonly bool $includeUncoveredFiles; - private readonly TestSuiteCollection $testSuite; - private readonly string $includeTestSuite; - private readonly string $excludeTestSuite; - private readonly ?string $defaultTestSuite; - - /** - * @psalm-var non-empty-list - */ - private readonly array $testSuffixes; - private readonly Php $php; - private readonly bool $controlGarbageCollector; - private readonly int $numberOfTestsBeforeGarbageCollection; - private readonly ?string $generateBaseline; - private readonly bool $debug; - - /** - * @psalm-param list $cliArguments - * @psalm-param ?non-empty-string $pharExtensionDirectory - * @psalm-param non-empty-list $testSuffixes - * @psalm-param list}> $extensionBootstrappers - */ - public function __construct(array $cliArguments, ?string $configurationFile, ?string $bootstrap, bool $cacheResult, ?string $cacheDirectory, ?string $coverageCacheDirectory, Source $source, string $testResultCacheFile, ?string $coverageClover, ?string $coverageCobertura, ?string $coverageCrap4j, int $coverageCrap4jThreshold, ?string $coverageHtml, int $coverageHtmlLowUpperBound, int $coverageHtmlHighLowerBound, string $coverageHtmlColorSuccessLow, string $coverageHtmlColorSuccessMedium, string $coverageHtmlColorSuccessHigh, string $coverageHtmlColorWarning, string $coverageHtmlColorDanger, ?string $coverageHtmlCustomCssFile, ?string $coveragePhp, ?string $coverageText, bool $coverageTextShowUncoveredFiles, bool $coverageTextShowOnlySummary, ?string $coverageXml, bool $pathCoverage, bool $ignoreDeprecatedCodeUnitsFromCodeCoverage, bool $disableCodeCoverageIgnore, bool $failOnDeprecation, bool $failOnPhpunitDeprecation, bool $failOnEmptyTestSuite, bool $failOnIncomplete, bool $failOnNotice, bool $failOnRisky, bool $failOnSkipped, bool $failOnWarning, bool $stopOnDefect, bool $stopOnDeprecation, bool $stopOnError, bool $stopOnFailure, bool $stopOnIncomplete, bool $stopOnNotice, bool $stopOnRisky, bool $stopOnSkipped, bool $stopOnWarning, bool $outputToStandardErrorStream, int|string $columns, bool $noExtensions, ?string $pharExtensionDirectory, array $extensionBootstrappers, bool $backupGlobals, bool $backupStaticProperties, bool $beStrictAboutChangesToGlobalState, bool $colors, bool $processIsolation, bool $enforceTimeLimit, int $defaultTimeLimit, int $timeoutForSmallTests, int $timeoutForMediumTests, int $timeoutForLargeTests, bool $reportUselessTests, bool $strictCoverage, bool $disallowTestOutput, bool $displayDetailsOnIncompleteTests, bool $displayDetailsOnSkippedTests, bool $displayDetailsOnTestsThatTriggerDeprecations, bool $displayDetailsOnPhpunitDeprecations, bool $displayDetailsOnTestsThatTriggerErrors, bool $displayDetailsOnTestsThatTriggerNotices, bool $displayDetailsOnTestsThatTriggerWarnings, bool $reverseDefectList, bool $requireCoverageMetadata, bool $registerMockObjectsFromTestArgumentsRecursively, bool $noProgress, bool $noResults, bool $noOutput, int $executionOrder, int $executionOrderDefects, bool $resolveDependencies, ?string $logfileTeamcity, ?string $logfileJunit, ?string $logfileTestdoxHtml, ?string $logfileTestdoxText, ?string $logEventsText, ?string $logEventsVerboseText, bool $teamCityOutput, bool $testDoxOutput, ?array $testsCovering, ?array $testsUsing, ?string $filter, ?array $groups, ?array $excludeGroups, int $randomOrderSeed, bool $includeUncoveredFiles, TestSuiteCollection $testSuite, string $includeTestSuite, string $excludeTestSuite, ?string $defaultTestSuite, array $testSuffixes, Php $php, bool $controlGarbageCollector, int $numberOfTestsBeforeGarbageCollection, ?string $generateBaseline, bool $debug) - { - $this->cliArguments = $cliArguments; - $this->configurationFile = $configurationFile; - $this->bootstrap = $bootstrap; - $this->cacheResult = $cacheResult; - $this->cacheDirectory = $cacheDirectory; - $this->coverageCacheDirectory = $coverageCacheDirectory; - $this->source = $source; - $this->testResultCacheFile = $testResultCacheFile; - $this->coverageClover = $coverageClover; - $this->coverageCobertura = $coverageCobertura; - $this->coverageCrap4j = $coverageCrap4j; - $this->coverageCrap4jThreshold = $coverageCrap4jThreshold; - $this->coverageHtml = $coverageHtml; - $this->coverageHtmlLowUpperBound = $coverageHtmlLowUpperBound; - $this->coverageHtmlHighLowerBound = $coverageHtmlHighLowerBound; - $this->coverageHtmlColorSuccessLow = $coverageHtmlColorSuccessLow; - $this->coverageHtmlColorSuccessMedium = $coverageHtmlColorSuccessMedium; - $this->coverageHtmlColorSuccessHigh = $coverageHtmlColorSuccessHigh; - $this->coverageHtmlColorWarning = $coverageHtmlColorWarning; - $this->coverageHtmlColorDanger = $coverageHtmlColorDanger; - $this->coverageHtmlCustomCssFile = $coverageHtmlCustomCssFile; - $this->coveragePhp = $coveragePhp; - $this->coverageText = $coverageText; - $this->coverageTextShowUncoveredFiles = $coverageTextShowUncoveredFiles; - $this->coverageTextShowOnlySummary = $coverageTextShowOnlySummary; - $this->coverageXml = $coverageXml; - $this->pathCoverage = $pathCoverage; - $this->ignoreDeprecatedCodeUnitsFromCodeCoverage = $ignoreDeprecatedCodeUnitsFromCodeCoverage; - $this->disableCodeCoverageIgnore = $disableCodeCoverageIgnore; - $this->failOnDeprecation = $failOnDeprecation; - $this->failOnPhpunitDeprecation = $failOnPhpunitDeprecation; - $this->failOnEmptyTestSuite = $failOnEmptyTestSuite; - $this->failOnIncomplete = $failOnIncomplete; - $this->failOnNotice = $failOnNotice; - $this->failOnRisky = $failOnRisky; - $this->failOnSkipped = $failOnSkipped; - $this->failOnWarning = $failOnWarning; - $this->stopOnDefect = $stopOnDefect; - $this->stopOnDeprecation = $stopOnDeprecation; - $this->stopOnError = $stopOnError; - $this->stopOnFailure = $stopOnFailure; - $this->stopOnIncomplete = $stopOnIncomplete; - $this->stopOnNotice = $stopOnNotice; - $this->stopOnRisky = $stopOnRisky; - $this->stopOnSkipped = $stopOnSkipped; - $this->stopOnWarning = $stopOnWarning; - $this->outputToStandardErrorStream = $outputToStandardErrorStream; - $this->columns = $columns; - $this->noExtensions = $noExtensions; - $this->pharExtensionDirectory = $pharExtensionDirectory; - $this->extensionBootstrappers = $extensionBootstrappers; - $this->backupGlobals = $backupGlobals; - $this->backupStaticProperties = $backupStaticProperties; - $this->beStrictAboutChangesToGlobalState = $beStrictAboutChangesToGlobalState; - $this->colors = $colors; - $this->processIsolation = $processIsolation; - $this->enforceTimeLimit = $enforceTimeLimit; - $this->defaultTimeLimit = $defaultTimeLimit; - $this->timeoutForSmallTests = $timeoutForSmallTests; - $this->timeoutForMediumTests = $timeoutForMediumTests; - $this->timeoutForLargeTests = $timeoutForLargeTests; - $this->reportUselessTests = $reportUselessTests; - $this->strictCoverage = $strictCoverage; - $this->disallowTestOutput = $disallowTestOutput; - $this->displayDetailsOnIncompleteTests = $displayDetailsOnIncompleteTests; - $this->displayDetailsOnSkippedTests = $displayDetailsOnSkippedTests; - $this->displayDetailsOnTestsThatTriggerDeprecations = $displayDetailsOnTestsThatTriggerDeprecations; - $this->displayDetailsOnPhpunitDeprecations = $displayDetailsOnPhpunitDeprecations; - $this->displayDetailsOnTestsThatTriggerErrors = $displayDetailsOnTestsThatTriggerErrors; - $this->displayDetailsOnTestsThatTriggerNotices = $displayDetailsOnTestsThatTriggerNotices; - $this->displayDetailsOnTestsThatTriggerWarnings = $displayDetailsOnTestsThatTriggerWarnings; - $this->reverseDefectList = $reverseDefectList; - $this->requireCoverageMetadata = $requireCoverageMetadata; - $this->registerMockObjectsFromTestArgumentsRecursively = $registerMockObjectsFromTestArgumentsRecursively; - $this->noProgress = $noProgress; - $this->noResults = $noResults; - $this->noOutput = $noOutput; - $this->executionOrder = $executionOrder; - $this->executionOrderDefects = $executionOrderDefects; - $this->resolveDependencies = $resolveDependencies; - $this->logfileTeamcity = $logfileTeamcity; - $this->logfileJunit = $logfileJunit; - $this->logfileTestdoxHtml = $logfileTestdoxHtml; - $this->logfileTestdoxText = $logfileTestdoxText; - $this->logEventsText = $logEventsText; - $this->logEventsVerboseText = $logEventsVerboseText; - $this->teamCityOutput = $teamCityOutput; - $this->testDoxOutput = $testDoxOutput; - $this->testsCovering = $testsCovering; - $this->testsUsing = $testsUsing; - $this->filter = $filter; - $this->groups = $groups; - $this->excludeGroups = $excludeGroups; - $this->randomOrderSeed = $randomOrderSeed; - $this->includeUncoveredFiles = $includeUncoveredFiles; - $this->testSuite = $testSuite; - $this->includeTestSuite = $includeTestSuite; - $this->excludeTestSuite = $excludeTestSuite; - $this->defaultTestSuite = $defaultTestSuite; - $this->testSuffixes = $testSuffixes; - $this->php = $php; - $this->controlGarbageCollector = $controlGarbageCollector; - $this->numberOfTestsBeforeGarbageCollection = $numberOfTestsBeforeGarbageCollection; - $this->generateBaseline = $generateBaseline; - $this->debug = $debug; - } - - /** - * @psalm-assert-if-true !empty $this->cliArguments - */ - public function hasCliArguments(): bool - { - return !empty($this->cliArguments); - } - - /** - * @psalm-return list - */ - public function cliArguments(): array - { - return $this->cliArguments; - } - - /** - * @psalm-assert-if-true !empty $this->cliArguments - * - * @deprecated Use hasCliArguments() instead - */ - public function hasCliArgument(): bool - { - return !empty($this->cliArguments); - } - - /** - * @throws NoCliArgumentException - * - * @return non-empty-string - * - * @deprecated Use cliArguments()[0] instead - */ - public function cliArgument(): string - { - if (!$this->hasCliArguments()) { - throw new NoCliArgumentException; - } - - return $this->cliArguments[0]; - } - - /** - * @psalm-assert-if-true !null $this->configurationFile - */ - public function hasConfigurationFile(): bool - { - return $this->configurationFile !== null; - } - - /** - * @throws NoConfigurationFileException - */ - public function configurationFile(): string - { - if (!$this->hasConfigurationFile()) { - throw new NoConfigurationFileException; - } - - return $this->configurationFile; - } - - /** - * @psalm-assert-if-true !null $this->bootstrap - */ - public function hasBootstrap(): bool - { - return $this->bootstrap !== null; - } - - /** - * @throws NoBootstrapException - */ - public function bootstrap(): string - { - if (!$this->hasBootstrap()) { - throw new NoBootstrapException; - } - - return $this->bootstrap; - } - - public function cacheResult(): bool - { - return $this->cacheResult; - } - - /** - * @psalm-assert-if-true !null $this->cacheDirectory - */ - public function hasCacheDirectory(): bool - { - return $this->cacheDirectory !== null; - } - - /** - * @throws NoCacheDirectoryException - */ - public function cacheDirectory(): string - { - if (!$this->hasCacheDirectory()) { - throw new NoCacheDirectoryException; - } - - return $this->cacheDirectory; - } - - /** - * @psalm-assert-if-true !null $this->coverageCacheDirectory - */ - public function hasCoverageCacheDirectory(): bool - { - return $this->coverageCacheDirectory !== null; - } - - /** - * @throws NoCoverageCacheDirectoryException - */ - public function coverageCacheDirectory(): string - { - if (!$this->hasCoverageCacheDirectory()) { - throw new NoCoverageCacheDirectoryException; - } - - return $this->coverageCacheDirectory; - } - - public function source(): Source - { - return $this->source; - } - - /** - * @deprecated Use source()->restrictDeprecations() instead - */ - public function restrictDeprecations(): bool - { - return $this->source()->restrictDeprecations(); - } - - /** - * @deprecated Use source()->restrictNotices() instead - */ - public function restrictNotices(): bool - { - return $this->source()->restrictNotices(); - } - - /** - * @deprecated Use source()->restrictWarnings() instead - */ - public function restrictWarnings(): bool - { - return $this->source()->restrictWarnings(); - } - - /** - * @deprecated Use source()->notEmpty() instead - */ - public function hasNonEmptyListOfFilesToBeIncludedInCodeCoverageReport(): bool - { - return $this->source->notEmpty(); - } - - /** - * @deprecated Use source()->includeDirectories() instead - */ - public function coverageIncludeDirectories(): FilterDirectoryCollection - { - return $this->source()->includeDirectories(); - } - - /** - * @deprecated Use source()->includeFiles() instead - */ - public function coverageIncludeFiles(): FileCollection - { - return $this->source()->includeFiles(); - } - - /** - * @deprecated Use source()->excludeDirectories() instead - */ - public function coverageExcludeDirectories(): FilterDirectoryCollection - { - return $this->source()->excludeDirectories(); - } - - /** - * @deprecated Use source()->excludeFiles() instead - */ - public function coverageExcludeFiles(): FileCollection - { - return $this->source()->excludeFiles(); - } - - public function testResultCacheFile(): string - { - return $this->testResultCacheFile; - } - - public function ignoreDeprecatedCodeUnitsFromCodeCoverage(): bool - { - return $this->ignoreDeprecatedCodeUnitsFromCodeCoverage; - } - - public function disableCodeCoverageIgnore(): bool - { - return $this->disableCodeCoverageIgnore; - } - - public function pathCoverage(): bool - { - return $this->pathCoverage; - } - - public function hasCoverageReport(): bool - { - return $this->hasCoverageClover() || - $this->hasCoverageCobertura() || - $this->hasCoverageCrap4j() || - $this->hasCoverageHtml() || - $this->hasCoveragePhp() || - $this->hasCoverageText() || - $this->hasCoverageXml(); - } - - /** - * @psalm-assert-if-true !null $this->coverageClover - */ - public function hasCoverageClover(): bool - { - return $this->coverageClover !== null; - } - - /** - * @throws CodeCoverageReportNotConfiguredException - */ - public function coverageClover(): string - { - if (!$this->hasCoverageClover()) { - throw new CodeCoverageReportNotConfiguredException; - } - - return $this->coverageClover; - } - - /** - * @psalm-assert-if-true !null $this->coverageCobertura - */ - public function hasCoverageCobertura(): bool - { - return $this->coverageCobertura !== null; - } - - /** - * @throws CodeCoverageReportNotConfiguredException - */ - public function coverageCobertura(): string - { - if (!$this->hasCoverageCobertura()) { - throw new CodeCoverageReportNotConfiguredException; - } - - return $this->coverageCobertura; - } - - /** - * @psalm-assert-if-true !null $this->coverageCrap4j - */ - public function hasCoverageCrap4j(): bool - { - return $this->coverageCrap4j !== null; - } - - /** - * @throws CodeCoverageReportNotConfiguredException - */ - public function coverageCrap4j(): string - { - if (!$this->hasCoverageCrap4j()) { - throw new CodeCoverageReportNotConfiguredException; - } - - return $this->coverageCrap4j; - } - - public function coverageCrap4jThreshold(): int - { - return $this->coverageCrap4jThreshold; - } - - /** - * @psalm-assert-if-true !null $this->coverageHtml - */ - public function hasCoverageHtml(): bool - { - return $this->coverageHtml !== null; - } - - /** - * @throws CodeCoverageReportNotConfiguredException - */ - public function coverageHtml(): string - { - if (!$this->hasCoverageHtml()) { - throw new CodeCoverageReportNotConfiguredException; - } - - return $this->coverageHtml; - } - - public function coverageHtmlLowUpperBound(): int - { - return $this->coverageHtmlLowUpperBound; - } - - public function coverageHtmlHighLowerBound(): int - { - return $this->coverageHtmlHighLowerBound; - } - - public function coverageHtmlColorSuccessLow(): string - { - return $this->coverageHtmlColorSuccessLow; - } - - public function coverageHtmlColorSuccessMedium(): string - { - return $this->coverageHtmlColorSuccessMedium; - } - - public function coverageHtmlColorSuccessHigh(): string - { - return $this->coverageHtmlColorSuccessHigh; - } - - public function coverageHtmlColorWarning(): string - { - return $this->coverageHtmlColorWarning; - } - - public function coverageHtmlColorDanger(): string - { - return $this->coverageHtmlColorDanger; - } - - /** - * @psalm-assert-if-true !null $this->coverageHtmlCustomCssFile - */ - public function hasCoverageHtmlCustomCssFile(): bool - { - return $this->coverageHtmlCustomCssFile !== null; - } - - /** - * @throws NoCustomCssFileException - */ - public function coverageHtmlCustomCssFile(): string - { - if (!$this->hasCoverageHtmlCustomCssFile()) { - throw new NoCustomCssFileException; - } - - return $this->coverageHtmlCustomCssFile; - } - - /** - * @psalm-assert-if-true !null $this->coveragePhp - */ - public function hasCoveragePhp(): bool - { - return $this->coveragePhp !== null; - } - - /** - * @throws CodeCoverageReportNotConfiguredException - */ - public function coveragePhp(): string - { - if (!$this->hasCoveragePhp()) { - throw new CodeCoverageReportNotConfiguredException; - } - - return $this->coveragePhp; - } - - /** - * @psalm-assert-if-true !null $this->coverageText - */ - public function hasCoverageText(): bool - { - return $this->coverageText !== null; - } - - /** - * @throws CodeCoverageReportNotConfiguredException - */ - public function coverageText(): string - { - if (!$this->hasCoverageText()) { - throw new CodeCoverageReportNotConfiguredException; - } - - return $this->coverageText; - } - - public function coverageTextShowUncoveredFiles(): bool - { - return $this->coverageTextShowUncoveredFiles; - } - - public function coverageTextShowOnlySummary(): bool - { - return $this->coverageTextShowOnlySummary; - } - - /** - * @psalm-assert-if-true !null $this->coverageXml - */ - public function hasCoverageXml(): bool - { - return $this->coverageXml !== null; - } - - /** - * @throws CodeCoverageReportNotConfiguredException - */ - public function coverageXml(): string - { - if (!$this->hasCoverageXml()) { - throw new CodeCoverageReportNotConfiguredException; - } - - return $this->coverageXml; - } - - public function failOnDeprecation(): bool - { - return $this->failOnDeprecation; - } - - public function failOnPhpunitDeprecation(): bool - { - return $this->failOnPhpunitDeprecation; - } - - public function failOnEmptyTestSuite(): bool - { - return $this->failOnEmptyTestSuite; - } - - public function failOnIncomplete(): bool - { - return $this->failOnIncomplete; - } - - public function failOnNotice(): bool - { - return $this->failOnNotice; - } - - public function failOnRisky(): bool - { - return $this->failOnRisky; - } - - public function failOnSkipped(): bool - { - return $this->failOnSkipped; - } - - public function failOnWarning(): bool - { - return $this->failOnWarning; - } - - public function stopOnDefect(): bool - { - return $this->stopOnDefect; - } - - public function stopOnDeprecation(): bool - { - return $this->stopOnDeprecation; - } - - public function stopOnError(): bool - { - return $this->stopOnError; - } - - public function stopOnFailure(): bool - { - return $this->stopOnFailure; - } - - public function stopOnIncomplete(): bool - { - return $this->stopOnIncomplete; - } - - public function stopOnNotice(): bool - { - return $this->stopOnNotice; - } - - public function stopOnRisky(): bool - { - return $this->stopOnRisky; - } - - public function stopOnSkipped(): bool - { - return $this->stopOnSkipped; - } - - public function stopOnWarning(): bool - { - return $this->stopOnWarning; - } - - public function outputToStandardErrorStream(): bool - { - return $this->outputToStandardErrorStream; - } - - public function columns(): int - { - return $this->columns; - } - - /** - * @deprecated Use noExtensions() instead - */ - public function loadPharExtensions(): bool - { - return $this->noExtensions; - } - - public function noExtensions(): bool - { - return $this->noExtensions; - } - - /** - * @psalm-assert-if-true !null $this->pharExtensionDirectory - */ - public function hasPharExtensionDirectory(): bool - { - return $this->pharExtensionDirectory !== null; - } - - /** - * @psalm-return non-empty-string - * - * @throws NoPharExtensionDirectoryException - */ - public function pharExtensionDirectory(): string - { - if (!$this->hasPharExtensionDirectory()) { - throw new NoPharExtensionDirectoryException; - } - - return $this->pharExtensionDirectory; - } - - /** - * @psalm-return list}> - */ - public function extensionBootstrappers(): array - { - return $this->extensionBootstrappers; - } - - public function backupGlobals(): bool - { - return $this->backupGlobals; - } - - public function backupStaticProperties(): bool - { - return $this->backupStaticProperties; - } - - public function beStrictAboutChangesToGlobalState(): bool - { - return $this->beStrictAboutChangesToGlobalState; - } - - public function colors(): bool - { - return $this->colors; - } - - public function processIsolation(): bool - { - return $this->processIsolation; - } - - public function enforceTimeLimit(): bool - { - return $this->enforceTimeLimit; - } - - public function defaultTimeLimit(): int - { - return $this->defaultTimeLimit; - } - - public function timeoutForSmallTests(): int - { - return $this->timeoutForSmallTests; - } - - public function timeoutForMediumTests(): int - { - return $this->timeoutForMediumTests; - } - - public function timeoutForLargeTests(): int - { - return $this->timeoutForLargeTests; - } - - public function reportUselessTests(): bool - { - return $this->reportUselessTests; - } - - public function strictCoverage(): bool - { - return $this->strictCoverage; - } - - public function disallowTestOutput(): bool - { - return $this->disallowTestOutput; - } - - public function displayDetailsOnIncompleteTests(): bool - { - return $this->displayDetailsOnIncompleteTests; - } - - public function displayDetailsOnSkippedTests(): bool - { - return $this->displayDetailsOnSkippedTests; - } - - public function displayDetailsOnTestsThatTriggerDeprecations(): bool - { - return $this->displayDetailsOnTestsThatTriggerDeprecations; - } - - public function displayDetailsOnPhpunitDeprecations(): bool - { - return $this->displayDetailsOnPhpunitDeprecations; - } - - public function displayDetailsOnTestsThatTriggerErrors(): bool - { - return $this->displayDetailsOnTestsThatTriggerErrors; - } - - public function displayDetailsOnTestsThatTriggerNotices(): bool - { - return $this->displayDetailsOnTestsThatTriggerNotices; - } - - public function displayDetailsOnTestsThatTriggerWarnings(): bool - { - return $this->displayDetailsOnTestsThatTriggerWarnings; - } - - public function reverseDefectList(): bool - { - return $this->reverseDefectList; - } - - public function requireCoverageMetadata(): bool - { - return $this->requireCoverageMetadata; - } - - /** - * @deprecated - */ - public function registerMockObjectsFromTestArgumentsRecursively(): bool - { - return $this->registerMockObjectsFromTestArgumentsRecursively; - } - - public function noProgress(): bool - { - return $this->noProgress; - } - - public function noResults(): bool - { - return $this->noResults; - } - - public function noOutput(): bool - { - return $this->noOutput; - } - - public function executionOrder(): int - { - return $this->executionOrder; - } - - public function executionOrderDefects(): int - { - return $this->executionOrderDefects; - } - - public function resolveDependencies(): bool - { - return $this->resolveDependencies; - } - - /** - * @psalm-assert-if-true !null $this->logfileTeamcity - */ - public function hasLogfileTeamcity(): bool - { - return $this->logfileTeamcity !== null; - } - - /** - * @throws LoggingNotConfiguredException - */ - public function logfileTeamcity(): string - { - if (!$this->hasLogfileTeamcity()) { - throw new LoggingNotConfiguredException; - } - - return $this->logfileTeamcity; - } - - /** - * @psalm-assert-if-true !null $this->logfileJunit - */ - public function hasLogfileJunit(): bool - { - return $this->logfileJunit !== null; - } - - /** - * @throws LoggingNotConfiguredException - */ - public function logfileJunit(): string - { - if (!$this->hasLogfileJunit()) { - throw new LoggingNotConfiguredException; - } - - return $this->logfileJunit; - } - - /** - * @psalm-assert-if-true !null $this->logfileTestdoxHtml - */ - public function hasLogfileTestdoxHtml(): bool - { - return $this->logfileTestdoxHtml !== null; - } - - /** - * @throws LoggingNotConfiguredException - */ - public function logfileTestdoxHtml(): string - { - if (!$this->hasLogfileTestdoxHtml()) { - throw new LoggingNotConfiguredException; - } - - return $this->logfileTestdoxHtml; - } - - /** - * @psalm-assert-if-true !null $this->logfileTestdoxText - */ - public function hasLogfileTestdoxText(): bool - { - return $this->logfileTestdoxText !== null; - } - - /** - * @throws LoggingNotConfiguredException - */ - public function logfileTestdoxText(): string - { - if (!$this->hasLogfileTestdoxText()) { - throw new LoggingNotConfiguredException; - } - - return $this->logfileTestdoxText; - } - - /** - * @psalm-assert-if-true !null $this->logEventsText - */ - public function hasLogEventsText(): bool - { - return $this->logEventsText !== null; - } - - /** - * @throws LoggingNotConfiguredException - */ - public function logEventsText(): string - { - if (!$this->hasLogEventsText()) { - throw new LoggingNotConfiguredException; - } - - return $this->logEventsText; - } - - /** - * @psalm-assert-if-true !null $this->logEventsVerboseText - */ - public function hasLogEventsVerboseText(): bool - { - return $this->logEventsVerboseText !== null; - } - - /** - * @throws LoggingNotConfiguredException - */ - public function logEventsVerboseText(): string - { - if (!$this->hasLogEventsVerboseText()) { - throw new LoggingNotConfiguredException; - } - - return $this->logEventsVerboseText; - } - - public function outputIsTeamCity(): bool - { - return $this->teamCityOutput; - } - - public function outputIsTestDox(): bool - { - return $this->testDoxOutput; - } - - /** - * @psalm-assert-if-true !empty $this->testsCovering - */ - public function hasTestsCovering(): bool - { - return !empty($this->testsCovering); - } - - /** - * @psalm-return list - * - * @throws FilterNotConfiguredException - */ - public function testsCovering(): array - { - if (!$this->hasTestsCovering()) { - throw new FilterNotConfiguredException; - } - - return $this->testsCovering; - } - - /** - * @psalm-assert-if-true !empty $this->testsUsing - */ - public function hasTestsUsing(): bool - { - return !empty($this->testsUsing); - } - - /** - * @psalm-return list - * - * @throws FilterNotConfiguredException - */ - public function testsUsing(): array - { - if (!$this->hasTestsUsing()) { - throw new FilterNotConfiguredException; - } - - return $this->testsUsing; - } - - /** - * @psalm-assert-if-true !null $this->filter - */ - public function hasFilter(): bool - { - return $this->filter !== null; - } - - /** - * @throws FilterNotConfiguredException - */ - public function filter(): string - { - if (!$this->hasFilter()) { - throw new FilterNotConfiguredException; - } - - return $this->filter; - } - - /** - * @psalm-assert-if-true !empty $this->groups - */ - public function hasGroups(): bool - { - return !empty($this->groups); - } - - /** - * @throws FilterNotConfiguredException - */ - public function groups(): array - { - if (!$this->hasGroups()) { - throw new FilterNotConfiguredException; - } - - return $this->groups; - } - - /** - * @psalm-assert-if-true !empty $this->excludeGroups - */ - public function hasExcludeGroups(): bool - { - return !empty($this->excludeGroups); - } - - /** - * @throws FilterNotConfiguredException - */ - public function excludeGroups(): array - { - if (!$this->hasExcludeGroups()) { - throw new FilterNotConfiguredException; - } - - return $this->excludeGroups; - } - - public function randomOrderSeed(): int - { - return $this->randomOrderSeed; - } - - public function includeUncoveredFiles(): bool - { - return $this->includeUncoveredFiles; - } - - public function testSuite(): TestSuiteCollection - { - return $this->testSuite; - } - - public function includeTestSuite(): string - { - return $this->includeTestSuite; - } - - public function excludeTestSuite(): string - { - return $this->excludeTestSuite; - } - - /** - * @psalm-assert-if-true !null $this->defaultTestSuite - */ - public function hasDefaultTestSuite(): bool - { - return $this->defaultTestSuite !== null; - } - - /** - * @throws NoDefaultTestSuiteException - */ - public function defaultTestSuite(): string - { - if (!$this->hasDefaultTestSuite()) { - throw new NoDefaultTestSuiteException; - } - - return $this->defaultTestSuite; - } - - /** - * @psalm-return non-empty-list - */ - public function testSuffixes(): array - { - return $this->testSuffixes; - } - - public function php(): Php - { - return $this->php; - } - - public function controlGarbageCollector(): bool - { - return $this->controlGarbageCollector; - } - - public function numberOfTestsBeforeGarbageCollection(): int - { - return $this->numberOfTestsBeforeGarbageCollection; - } - - /** - * @psalm-assert-if-true !null $this->generateBaseline - */ - public function hasGenerateBaseline(): bool - { - return $this->generateBaseline !== null; - } - - /** - * @throws NoBaselineException - */ - public function generateBaseline(): string - { - if (!$this->hasGenerateBaseline()) { - throw new NoBaselineException; - } - - return $this->generateBaseline; - } - - public function debug(): bool - { - return $this->debug; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/CannotFindSchemaException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/CannotFindSchemaException.php deleted file mode 100644 index 6eef052d..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/CannotFindSchemaException.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use PHPUnit\TextUI\Configuration\Exception; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class CannotFindSchemaException extends RuntimeException implements Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/CodeCoverageReportNotConfiguredException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/CodeCoverageReportNotConfiguredException.php deleted file mode 100644 index 83faa0a2..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/CodeCoverageReportNotConfiguredException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class CodeCoverageReportNotConfiguredException extends RuntimeException implements Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/ConfigurationCannotBeBuiltException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/ConfigurationCannotBeBuiltException.php deleted file mode 100644 index e95e0942..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/ConfigurationCannotBeBuiltException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ConfigurationCannotBeBuiltException extends RuntimeException implements Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/Exception.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/Exception.php deleted file mode 100644 index dc49125a..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/Exception.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This interface is not covered by the backward compatibility promise for PHPUnit - */ -interface Exception extends \PHPUnit\TextUI\Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/FilterNotConfiguredException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/FilterNotConfiguredException.php deleted file mode 100644 index 5ae4331f..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/FilterNotConfiguredException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class FilterNotConfiguredException extends RuntimeException implements Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/LoggingNotConfiguredException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/LoggingNotConfiguredException.php deleted file mode 100644 index 63cf9b07..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/LoggingNotConfiguredException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class LoggingNotConfiguredException extends RuntimeException implements Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoBaselineException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoBaselineException.php deleted file mode 100644 index 7611dceb..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoBaselineException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class NoBaselineException extends RuntimeException implements Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoBootstrapException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoBootstrapException.php deleted file mode 100644 index ff1bddf0..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoBootstrapException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class NoBootstrapException extends RuntimeException implements Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCacheDirectoryException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCacheDirectoryException.php deleted file mode 100644 index 215fe21f..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCacheDirectoryException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class NoCacheDirectoryException extends RuntimeException implements Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCliArgumentException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCliArgumentException.php deleted file mode 100644 index 42ed0d49..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCliArgumentException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class NoCliArgumentException extends RuntimeException implements Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoConfigurationFileException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoConfigurationFileException.php deleted file mode 100644 index f8ceb80b..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoConfigurationFileException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class NoConfigurationFileException extends RuntimeException implements Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCoverageCacheDirectoryException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCoverageCacheDirectoryException.php deleted file mode 100644 index 113950b5..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCoverageCacheDirectoryException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class NoCoverageCacheDirectoryException extends RuntimeException implements Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCustomCssFileException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCustomCssFileException.php deleted file mode 100644 index e524c8db..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCustomCssFileException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class NoCustomCssFileException extends RuntimeException implements Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoDefaultTestSuiteException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoDefaultTestSuiteException.php deleted file mode 100644 index 96e7a7ad..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoDefaultTestSuiteException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class NoDefaultTestSuiteException extends RuntimeException implements Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoPharExtensionDirectoryException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoPharExtensionDirectoryException.php deleted file mode 100644 index ce573ca7..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoPharExtensionDirectoryException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class NoPharExtensionDirectoryException extends RuntimeException implements Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Merger.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Merger.php deleted file mode 100644 index 28a7db0f..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Merger.php +++ /dev/null @@ -1,879 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use const DIRECTORY_SEPARATOR; -use const PATH_SEPARATOR; -use function array_diff; -use function assert; -use function dirname; -use function explode; -use function is_int; -use function realpath; -use function time; -use PHPUnit\Event\Facade as EventFacade; -use PHPUnit\Runner\TestSuiteSorter; -use PHPUnit\TextUI\CliArguments\Configuration as CliConfiguration; -use PHPUnit\TextUI\CliArguments\Exception; -use PHPUnit\TextUI\XmlConfiguration\Configuration as XmlConfiguration; -use PHPUnit\TextUI\XmlConfiguration\LoadedFromFileConfiguration; -use PHPUnit\TextUI\XmlConfiguration\SchemaDetector; -use PHPUnit\Util\Filesystem; -use SebastianBergmann\CodeCoverage\Report\Html\Colors; -use SebastianBergmann\CodeCoverage\Report\Thresholds; -use SebastianBergmann\Environment\Console; -use SebastianBergmann\Invoker\Invoker; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Merger -{ - /** - * @throws \PHPUnit\TextUI\XmlConfiguration\Exception - * @throws Exception - * @throws NoCustomCssFileException - */ - public function merge(CliConfiguration $cliConfiguration, XmlConfiguration $xmlConfiguration): Configuration - { - $configurationFile = null; - - if ($xmlConfiguration->wasLoadedFromFile()) { - assert($xmlConfiguration instanceof LoadedFromFileConfiguration); - - $configurationFile = $xmlConfiguration->filename(); - } - - $bootstrap = null; - - if ($cliConfiguration->hasBootstrap()) { - $bootstrap = $cliConfiguration->bootstrap(); - } elseif ($xmlConfiguration->phpunit()->hasBootstrap()) { - $bootstrap = $xmlConfiguration->phpunit()->bootstrap(); - } - - if ($cliConfiguration->hasCacheResult()) { - $cacheResult = $cliConfiguration->cacheResult(); - } else { - $cacheResult = $xmlConfiguration->phpunit()->cacheResult(); - } - - $cacheDirectory = null; - $coverageCacheDirectory = null; - - if ($cliConfiguration->hasCacheDirectory() && Filesystem::createDirectory($cliConfiguration->cacheDirectory())) { - $cacheDirectory = realpath($cliConfiguration->cacheDirectory()); - } elseif ($xmlConfiguration->phpunit()->hasCacheDirectory() && Filesystem::createDirectory($xmlConfiguration->phpunit()->cacheDirectory())) { - $cacheDirectory = realpath($xmlConfiguration->phpunit()->cacheDirectory()); - } - - if ($cacheDirectory !== null) { - $coverageCacheDirectory = $cacheDirectory . DIRECTORY_SEPARATOR . 'code-coverage'; - $testResultCacheFile = $cacheDirectory . DIRECTORY_SEPARATOR . 'test-results'; - } - - if ($coverageCacheDirectory === null) { - if ($cliConfiguration->hasCoverageCacheDirectory() && Filesystem::createDirectory($cliConfiguration->coverageCacheDirectory())) { - $coverageCacheDirectory = realpath($cliConfiguration->coverageCacheDirectory()); - } elseif ($xmlConfiguration->codeCoverage()->hasCacheDirectory()) { - $coverageCacheDirectory = $xmlConfiguration->codeCoverage()->cacheDirectory()->path(); - } - } - - if (!isset($testResultCacheFile)) { - if ($cliConfiguration->hasCacheResultFile()) { - $testResultCacheFile = $cliConfiguration->cacheResultFile(); - } elseif ($xmlConfiguration->phpunit()->hasCacheResultFile()) { - $testResultCacheFile = $xmlConfiguration->phpunit()->cacheResultFile(); - } elseif ($xmlConfiguration->wasLoadedFromFile()) { - $testResultCacheFile = dirname(realpath($xmlConfiguration->filename())) . DIRECTORY_SEPARATOR . '.phpunit.result.cache'; - } else { - $candidate = realpath($_SERVER['PHP_SELF']); - - if ($candidate) { - $testResultCacheFile = dirname($candidate) . DIRECTORY_SEPARATOR . '.phpunit.result.cache'; - } else { - $testResultCacheFile = '.phpunit.result.cache'; - } - } - } - - if ($cliConfiguration->hasDisableCodeCoverageIgnore()) { - $disableCodeCoverageIgnore = $cliConfiguration->disableCodeCoverageIgnore(); - } else { - $disableCodeCoverageIgnore = $xmlConfiguration->codeCoverage()->disableCodeCoverageIgnore(); - } - - if ($cliConfiguration->hasFailOnDeprecation()) { - $failOnDeprecation = $cliConfiguration->failOnDeprecation(); - } else { - $failOnDeprecation = $xmlConfiguration->phpunit()->failOnDeprecation(); - } - - if ($cliConfiguration->hasFailOnPhpunitDeprecation()) { - $failOnPhpunitDeprecation = $cliConfiguration->failOnPhpunitDeprecation(); - } else { - $failOnPhpunitDeprecation = $xmlConfiguration->phpunit()->failOnPhpunitDeprecation(); - } - - if ($cliConfiguration->hasFailOnEmptyTestSuite()) { - $failOnEmptyTestSuite = $cliConfiguration->failOnEmptyTestSuite(); - } else { - $failOnEmptyTestSuite = $xmlConfiguration->phpunit()->failOnEmptyTestSuite(); - } - - if ($cliConfiguration->hasFailOnIncomplete()) { - $failOnIncomplete = $cliConfiguration->failOnIncomplete(); - } else { - $failOnIncomplete = $xmlConfiguration->phpunit()->failOnIncomplete(); - } - - if ($cliConfiguration->hasFailOnNotice()) { - $failOnNotice = $cliConfiguration->failOnNotice(); - } else { - $failOnNotice = $xmlConfiguration->phpunit()->failOnNotice(); - } - - if ($cliConfiguration->hasFailOnRisky()) { - $failOnRisky = $cliConfiguration->failOnRisky(); - } else { - $failOnRisky = $xmlConfiguration->phpunit()->failOnRisky(); - } - - if ($cliConfiguration->hasFailOnSkipped()) { - $failOnSkipped = $cliConfiguration->failOnSkipped(); - } else { - $failOnSkipped = $xmlConfiguration->phpunit()->failOnSkipped(); - } - - if ($cliConfiguration->hasFailOnWarning()) { - $failOnWarning = $cliConfiguration->failOnWarning(); - } else { - $failOnWarning = $xmlConfiguration->phpunit()->failOnWarning(); - } - - if ($cliConfiguration->hasStopOnDefect()) { - $stopOnDefect = $cliConfiguration->stopOnDefect(); - } else { - $stopOnDefect = $xmlConfiguration->phpunit()->stopOnDefect(); - } - - if ($cliConfiguration->hasStopOnDeprecation()) { - $stopOnDeprecation = $cliConfiguration->stopOnDeprecation(); - } else { - $stopOnDeprecation = $xmlConfiguration->phpunit()->stopOnDeprecation(); - } - - if ($cliConfiguration->hasStopOnError()) { - $stopOnError = $cliConfiguration->stopOnError(); - } else { - $stopOnError = $xmlConfiguration->phpunit()->stopOnError(); - } - - if ($cliConfiguration->hasStopOnFailure()) { - $stopOnFailure = $cliConfiguration->stopOnFailure(); - } else { - $stopOnFailure = $xmlConfiguration->phpunit()->stopOnFailure(); - } - - if ($cliConfiguration->hasStopOnIncomplete()) { - $stopOnIncomplete = $cliConfiguration->stopOnIncomplete(); - } else { - $stopOnIncomplete = $xmlConfiguration->phpunit()->stopOnIncomplete(); - } - - if ($cliConfiguration->hasStopOnNotice()) { - $stopOnNotice = $cliConfiguration->stopOnNotice(); - } else { - $stopOnNotice = $xmlConfiguration->phpunit()->stopOnNotice(); - } - - if ($cliConfiguration->hasStopOnRisky()) { - $stopOnRisky = $cliConfiguration->stopOnRisky(); - } else { - $stopOnRisky = $xmlConfiguration->phpunit()->stopOnRisky(); - } - - if ($cliConfiguration->hasStopOnSkipped()) { - $stopOnSkipped = $cliConfiguration->stopOnSkipped(); - } else { - $stopOnSkipped = $xmlConfiguration->phpunit()->stopOnSkipped(); - } - - if ($cliConfiguration->hasStopOnWarning()) { - $stopOnWarning = $cliConfiguration->stopOnWarning(); - } else { - $stopOnWarning = $xmlConfiguration->phpunit()->stopOnWarning(); - } - - if ($cliConfiguration->hasStderr() && $cliConfiguration->stderr()) { - $outputToStandardErrorStream = true; - } else { - $outputToStandardErrorStream = $xmlConfiguration->phpunit()->stderr(); - } - - if ($cliConfiguration->hasColumns()) { - $columns = $cliConfiguration->columns(); - } else { - $columns = $xmlConfiguration->phpunit()->columns(); - } - - if ($columns === 'max') { - $columns = (new Console)->getNumberOfColumns(); - } - - if ($columns < 16) { - $columns = 16; - - EventFacade::emitter()->testRunnerTriggeredWarning( - 'Less than 16 columns requested, number of columns set to 16', - ); - } - - assert(is_int($columns)); - - $noExtensions = false; - - if ($cliConfiguration->hasNoExtensions() && $cliConfiguration->noExtensions()) { - $noExtensions = true; - } - - $pharExtensionDirectory = null; - - if ($xmlConfiguration->phpunit()->hasExtensionsDirectory()) { - $pharExtensionDirectory = $xmlConfiguration->phpunit()->extensionsDirectory(); - } - - $extensionBootstrappers = []; - - foreach ($xmlConfiguration->extensions() as $extension) { - $extensionBootstrappers[] = [ - 'className' => $extension->className(), - 'parameters' => $extension->parameters(), - ]; - } - - if ($cliConfiguration->hasPathCoverage() && $cliConfiguration->pathCoverage()) { - $pathCoverage = $cliConfiguration->pathCoverage(); - } else { - $pathCoverage = $xmlConfiguration->codeCoverage()->pathCoverage(); - } - - $defaultColors = Colors::default(); - $defaultThresholds = Thresholds::default(); - - $coverageClover = null; - $coverageCobertura = null; - $coverageCrap4j = null; - $coverageCrap4jThreshold = 30; - $coverageHtml = null; - $coverageHtmlLowUpperBound = $defaultThresholds->lowUpperBound(); - $coverageHtmlHighLowerBound = $defaultThresholds->highLowerBound(); - $coverageHtmlColorSuccessLow = $defaultColors->successLow(); - $coverageHtmlColorSuccessMedium = $defaultColors->successMedium(); - $coverageHtmlColorSuccessHigh = $defaultColors->successHigh(); - $coverageHtmlColorWarning = $defaultColors->warning(); - $coverageHtmlColorDanger = $defaultColors->danger(); - $coverageHtmlCustomCssFile = null; - $coveragePhp = null; - $coverageText = null; - $coverageTextShowUncoveredFiles = false; - $coverageTextShowOnlySummary = false; - $coverageXml = null; - $coverageFromXmlConfiguration = true; - - if ($cliConfiguration->hasNoCoverage() && $cliConfiguration->noCoverage()) { - $coverageFromXmlConfiguration = false; - } - - if ($cliConfiguration->hasCoverageClover()) { - $coverageClover = $cliConfiguration->coverageClover(); - } elseif ($coverageFromXmlConfiguration && $xmlConfiguration->codeCoverage()->hasClover()) { - $coverageClover = $xmlConfiguration->codeCoverage()->clover()->target()->path(); - } - - if ($cliConfiguration->hasCoverageCobertura()) { - $coverageCobertura = $cliConfiguration->coverageCobertura(); - } elseif ($coverageFromXmlConfiguration && $xmlConfiguration->codeCoverage()->hasCobertura()) { - $coverageCobertura = $xmlConfiguration->codeCoverage()->cobertura()->target()->path(); - } - - if ($xmlConfiguration->codeCoverage()->hasCrap4j()) { - $coverageCrap4jThreshold = $xmlConfiguration->codeCoverage()->crap4j()->threshold(); - } - - if ($cliConfiguration->hasCoverageCrap4J()) { - $coverageCrap4j = $cliConfiguration->coverageCrap4J(); - } elseif ($coverageFromXmlConfiguration && $xmlConfiguration->codeCoverage()->hasCrap4j()) { - $coverageCrap4j = $xmlConfiguration->codeCoverage()->crap4j()->target()->path(); - } - - if ($xmlConfiguration->codeCoverage()->hasHtml()) { - $coverageHtmlHighLowerBound = $xmlConfiguration->codeCoverage()->html()->highLowerBound(); - $coverageHtmlLowUpperBound = $xmlConfiguration->codeCoverage()->html()->lowUpperBound(); - - if ($coverageHtmlLowUpperBound > $coverageHtmlHighLowerBound) { - $coverageHtmlLowUpperBound = $defaultThresholds->lowUpperBound(); - $coverageHtmlHighLowerBound = $defaultThresholds->highLowerBound(); - } - - $coverageHtmlColorSuccessLow = $xmlConfiguration->codeCoverage()->html()->colorSuccessLow(); - $coverageHtmlColorSuccessMedium = $xmlConfiguration->codeCoverage()->html()->colorSuccessMedium(); - $coverageHtmlColorSuccessHigh = $xmlConfiguration->codeCoverage()->html()->colorSuccessHigh(); - $coverageHtmlColorWarning = $xmlConfiguration->codeCoverage()->html()->colorWarning(); - $coverageHtmlColorDanger = $xmlConfiguration->codeCoverage()->html()->colorDanger(); - - if ($xmlConfiguration->codeCoverage()->html()->hasCustomCssFile()) { - $coverageHtmlCustomCssFile = $xmlConfiguration->codeCoverage()->html()->customCssFile(); - } - } - - if ($cliConfiguration->hasCoverageHtml()) { - $coverageHtml = $cliConfiguration->coverageHtml(); - } elseif ($coverageFromXmlConfiguration && $xmlConfiguration->codeCoverage()->hasHtml()) { - $coverageHtml = $xmlConfiguration->codeCoverage()->html()->target()->path(); - } - - if ($cliConfiguration->hasCoveragePhp()) { - $coveragePhp = $cliConfiguration->coveragePhp(); - } elseif ($coverageFromXmlConfiguration && $xmlConfiguration->codeCoverage()->hasPhp()) { - $coveragePhp = $xmlConfiguration->codeCoverage()->php()->target()->path(); - } - - if ($xmlConfiguration->codeCoverage()->hasText()) { - $coverageTextShowUncoveredFiles = $xmlConfiguration->codeCoverage()->text()->showUncoveredFiles(); - $coverageTextShowOnlySummary = $xmlConfiguration->codeCoverage()->text()->showOnlySummary(); - } - - if ($cliConfiguration->hasCoverageTextShowUncoveredFiles()) { - $coverageTextShowUncoveredFiles = $cliConfiguration->coverageTextShowUncoveredFiles(); - } - - if ($cliConfiguration->hasCoverageTextShowOnlySummary()) { - $coverageTextShowOnlySummary = $cliConfiguration->coverageTextShowOnlySummary(); - } - - if ($cliConfiguration->hasCoverageText()) { - $coverageText = $cliConfiguration->coverageText(); - } elseif ($coverageFromXmlConfiguration && $xmlConfiguration->codeCoverage()->hasText()) { - $coverageText = $xmlConfiguration->codeCoverage()->text()->target()->path(); - } - - if ($cliConfiguration->hasCoverageXml()) { - $coverageXml = $cliConfiguration->coverageXml(); - } elseif ($coverageFromXmlConfiguration && $xmlConfiguration->codeCoverage()->hasXml()) { - $coverageXml = $xmlConfiguration->codeCoverage()->xml()->target()->path(); - } - - if ($cliConfiguration->hasBackupGlobals()) { - $backupGlobals = $cliConfiguration->backupGlobals(); - } else { - $backupGlobals = $xmlConfiguration->phpunit()->backupGlobals(); - } - - if ($cliConfiguration->hasBackupStaticProperties()) { - $backupStaticProperties = $cliConfiguration->backupStaticProperties(); - } else { - $backupStaticProperties = $xmlConfiguration->phpunit()->backupStaticProperties(); - } - - if ($cliConfiguration->hasBeStrictAboutChangesToGlobalState()) { - $beStrictAboutChangesToGlobalState = $cliConfiguration->beStrictAboutChangesToGlobalState(); - } else { - $beStrictAboutChangesToGlobalState = $xmlConfiguration->phpunit()->beStrictAboutChangesToGlobalState(); - } - - if ($cliConfiguration->hasProcessIsolation()) { - $processIsolation = $cliConfiguration->processIsolation(); - } else { - $processIsolation = $xmlConfiguration->phpunit()->processIsolation(); - } - - if ($cliConfiguration->hasEnforceTimeLimit()) { - $enforceTimeLimit = $cliConfiguration->enforceTimeLimit(); - } else { - $enforceTimeLimit = $xmlConfiguration->phpunit()->enforceTimeLimit(); - } - - if ($enforceTimeLimit && !(new Invoker)->canInvokeWithTimeout()) { - EventFacade::emitter()->testRunnerTriggeredWarning( - 'The pcntl extension is required for enforcing time limits', - ); - } - - if ($cliConfiguration->hasDefaultTimeLimit()) { - $defaultTimeLimit = $cliConfiguration->defaultTimeLimit(); - } else { - $defaultTimeLimit = $xmlConfiguration->phpunit()->defaultTimeLimit(); - } - - $timeoutForSmallTests = $xmlConfiguration->phpunit()->timeoutForSmallTests(); - $timeoutForMediumTests = $xmlConfiguration->phpunit()->timeoutForMediumTests(); - $timeoutForLargeTests = $xmlConfiguration->phpunit()->timeoutForLargeTests(); - - if ($cliConfiguration->hasReportUselessTests()) { - $reportUselessTests = $cliConfiguration->reportUselessTests(); - } else { - $reportUselessTests = $xmlConfiguration->phpunit()->beStrictAboutTestsThatDoNotTestAnything(); - } - - if ($cliConfiguration->hasStrictCoverage()) { - $strictCoverage = $cliConfiguration->strictCoverage(); - } else { - $strictCoverage = $xmlConfiguration->phpunit()->beStrictAboutCoverageMetadata(); - } - - if ($cliConfiguration->hasDisallowTestOutput()) { - $disallowTestOutput = $cliConfiguration->disallowTestOutput(); - } else { - $disallowTestOutput = $xmlConfiguration->phpunit()->beStrictAboutOutputDuringTests(); - } - - if ($cliConfiguration->hasDisplayDetailsOnIncompleteTests()) { - $displayDetailsOnIncompleteTests = $cliConfiguration->displayDetailsOnIncompleteTests(); - } else { - $displayDetailsOnIncompleteTests = $xmlConfiguration->phpunit()->displayDetailsOnIncompleteTests(); - } - - if ($cliConfiguration->hasDisplayDetailsOnSkippedTests()) { - $displayDetailsOnSkippedTests = $cliConfiguration->displayDetailsOnSkippedTests(); - } else { - $displayDetailsOnSkippedTests = $xmlConfiguration->phpunit()->displayDetailsOnSkippedTests(); - } - - if ($cliConfiguration->hasDisplayDetailsOnTestsThatTriggerDeprecations()) { - $displayDetailsOnTestsThatTriggerDeprecations = $cliConfiguration->displayDetailsOnTestsThatTriggerDeprecations(); - } else { - $displayDetailsOnTestsThatTriggerDeprecations = $xmlConfiguration->phpunit()->displayDetailsOnTestsThatTriggerDeprecations(); - } - - if ($cliConfiguration->hasDisplayDetailsOnPhpunitDeprecations()) { - $displayDetailsOnPhpunitDeprecations = $cliConfiguration->displayDetailsOnPhpunitDeprecations(); - } else { - $displayDetailsOnPhpunitDeprecations = $xmlConfiguration->phpunit()->displayDetailsOnPhpunitDeprecations(); - } - - if ($cliConfiguration->hasDisplayDetailsOnTestsThatTriggerErrors()) { - $displayDetailsOnTestsThatTriggerErrors = $cliConfiguration->displayDetailsOnTestsThatTriggerErrors(); - } else { - $displayDetailsOnTestsThatTriggerErrors = $xmlConfiguration->phpunit()->displayDetailsOnTestsThatTriggerErrors(); - } - - if ($cliConfiguration->hasDisplayDetailsOnTestsThatTriggerNotices()) { - $displayDetailsOnTestsThatTriggerNotices = $cliConfiguration->displayDetailsOnTestsThatTriggerNotices(); - } else { - $displayDetailsOnTestsThatTriggerNotices = $xmlConfiguration->phpunit()->displayDetailsOnTestsThatTriggerNotices(); - } - - if ($cliConfiguration->hasDisplayDetailsOnTestsThatTriggerWarnings()) { - $displayDetailsOnTestsThatTriggerWarnings = $cliConfiguration->displayDetailsOnTestsThatTriggerWarnings(); - } else { - $displayDetailsOnTestsThatTriggerWarnings = $xmlConfiguration->phpunit()->displayDetailsOnTestsThatTriggerWarnings(); - } - - if ($cliConfiguration->hasReverseList()) { - $reverseDefectList = $cliConfiguration->reverseList(); - } else { - $reverseDefectList = $xmlConfiguration->phpunit()->reverseDefectList(); - } - - $requireCoverageMetadata = $xmlConfiguration->phpunit()->requireCoverageMetadata(); - $registerMockObjectsFromTestArgumentsRecursively = $xmlConfiguration->phpunit()->registerMockObjectsFromTestArgumentsRecursively(); - - if ($cliConfiguration->hasExecutionOrder()) { - $executionOrder = $cliConfiguration->executionOrder(); - } else { - $executionOrder = $xmlConfiguration->phpunit()->executionOrder(); - } - - $executionOrderDefects = TestSuiteSorter::ORDER_DEFAULT; - - if ($cliConfiguration->hasExecutionOrderDefects()) { - $executionOrderDefects = $cliConfiguration->executionOrderDefects(); - } elseif ($xmlConfiguration->phpunit()->defectsFirst()) { - $executionOrderDefects = TestSuiteSorter::ORDER_DEFECTS_FIRST; - } - - if ($cliConfiguration->hasResolveDependencies()) { - $resolveDependencies = $cliConfiguration->resolveDependencies(); - } else { - $resolveDependencies = $xmlConfiguration->phpunit()->resolveDependencies(); - } - - $colors = false; - $colorsSupported = (new Console)->hasColorSupport(); - - if ($cliConfiguration->hasColors()) { - if ($cliConfiguration->colors() === Configuration::COLOR_ALWAYS) { - $colors = true; - } elseif ($colorsSupported && $cliConfiguration->colors() === Configuration::COLOR_AUTO) { - $colors = true; - } - } elseif ($xmlConfiguration->phpunit()->colors() === Configuration::COLOR_ALWAYS) { - $colors = true; - } elseif ($colorsSupported && $xmlConfiguration->phpunit()->colors() === Configuration::COLOR_AUTO) { - $colors = true; - } - - $logfileTeamcity = null; - $logfileJunit = null; - $logfileTestdoxHtml = null; - $logfileTestdoxText = null; - $loggingFromXmlConfiguration = true; - - if ($cliConfiguration->hasNoLogging() && $cliConfiguration->noLogging()) { - $loggingFromXmlConfiguration = false; - } - - if ($cliConfiguration->hasTeamcityLogfile()) { - $logfileTeamcity = $cliConfiguration->teamcityLogfile(); - } elseif ($loggingFromXmlConfiguration && $xmlConfiguration->logging()->hasTeamCity()) { - $logfileTeamcity = $xmlConfiguration->logging()->teamCity()->target()->path(); - } - - if ($cliConfiguration->hasJunitLogfile()) { - $logfileJunit = $cliConfiguration->junitLogfile(); - } elseif ($loggingFromXmlConfiguration && $xmlConfiguration->logging()->hasJunit()) { - $logfileJunit = $xmlConfiguration->logging()->junit()->target()->path(); - } - - if ($cliConfiguration->hasTestdoxHtmlFile()) { - $logfileTestdoxHtml = $cliConfiguration->testdoxHtmlFile(); - } elseif ($loggingFromXmlConfiguration && $xmlConfiguration->logging()->hasTestDoxHtml()) { - $logfileTestdoxHtml = $xmlConfiguration->logging()->testDoxHtml()->target()->path(); - } - - if ($cliConfiguration->hasTestdoxTextFile()) { - $logfileTestdoxText = $cliConfiguration->testdoxTextFile(); - } elseif ($loggingFromXmlConfiguration && $xmlConfiguration->logging()->hasTestDoxText()) { - $logfileTestdoxText = $xmlConfiguration->logging()->testDoxText()->target()->path(); - } - - $logEventsText = null; - - if ($cliConfiguration->hasLogEventsText()) { - $logEventsText = $cliConfiguration->logEventsText(); - } - - $logEventsVerboseText = null; - - if ($cliConfiguration->hasLogEventsVerboseText()) { - $logEventsVerboseText = $cliConfiguration->logEventsVerboseText(); - } - - $teamCityOutput = false; - - if ($cliConfiguration->hasTeamCityPrinter() && $cliConfiguration->teamCityPrinter()) { - $teamCityOutput = true; - } - - if ($cliConfiguration->hasTestDoxPrinter() && $cliConfiguration->testdoxPrinter()) { - $testDoxOutput = true; - } else { - $testDoxOutput = $xmlConfiguration->phpunit()->testdoxPrinter(); - } - - $noProgress = false; - - if ($cliConfiguration->hasNoProgress() && $cliConfiguration->noProgress()) { - $noProgress = true; - } - - $noResults = false; - - if ($cliConfiguration->hasNoResults() && $cliConfiguration->noResults()) { - $noResults = true; - } - - $noOutput = false; - - if ($cliConfiguration->hasNoOutput() && $cliConfiguration->noOutput()) { - $noOutput = true; - } - - $testsCovering = null; - - if ($cliConfiguration->hasTestsCovering()) { - $testsCovering = $cliConfiguration->testsCovering(); - } - - $testsUsing = null; - - if ($cliConfiguration->hasTestsUsing()) { - $testsUsing = $cliConfiguration->testsUsing(); - } - - $filter = null; - - if ($cliConfiguration->hasFilter()) { - $filter = $cliConfiguration->filter(); - } - - if ($cliConfiguration->hasGroups()) { - $groups = $cliConfiguration->groups(); - } else { - $groups = $xmlConfiguration->groups()->include()->asArrayOfStrings(); - } - - if ($cliConfiguration->hasExcludeGroups()) { - $excludeGroups = $cliConfiguration->excludeGroups(); - } else { - $excludeGroups = $xmlConfiguration->groups()->exclude()->asArrayOfStrings(); - } - - $excludeGroups = array_diff($excludeGroups, $groups); - - if ($cliConfiguration->hasRandomOrderSeed()) { - $randomOrderSeed = $cliConfiguration->randomOrderSeed(); - } else { - $randomOrderSeed = time(); - } - - if ($xmlConfiguration->wasLoadedFromFile() && $xmlConfiguration->hasValidationErrors()) { - if ((new SchemaDetector)->detect($xmlConfiguration->filename())->detected()) { - EventFacade::emitter()->testRunnerTriggeredDeprecation( - 'Your XML configuration validates against a deprecated schema. Migrate your XML configuration using "--migrate-configuration"!', - ); - } else { - EventFacade::emitter()->testRunnerTriggeredWarning( - "Test results may not be as expected because the XML configuration file did not pass validation:\n" . - $xmlConfiguration->validationErrors(), - ); - } - } - - $includeUncoveredFiles = $xmlConfiguration->codeCoverage()->includeUncoveredFiles(); - - $includePaths = []; - - if ($cliConfiguration->hasIncludePath()) { - foreach (explode(PATH_SEPARATOR, $cliConfiguration->includePath()) as $includePath) { - $includePaths[] = new Directory($includePath); - } - } - - foreach ($xmlConfiguration->php()->includePaths() as $includePath) { - $includePaths[] = $includePath; - } - - $iniSettings = []; - - if ($cliConfiguration->hasIniSettings()) { - foreach ($cliConfiguration->iniSettings() as $name => $value) { - $iniSettings[] = new IniSetting($name, $value); - } - } - - foreach ($xmlConfiguration->php()->iniSettings() as $iniSetting) { - $iniSettings[] = $iniSetting; - } - - $includeTestSuite = ''; - - if ($cliConfiguration->hasTestSuite()) { - $includeTestSuite = $cliConfiguration->testSuite(); - } elseif ($xmlConfiguration->phpunit()->hasDefaultTestSuite()) { - $includeTestSuite = $xmlConfiguration->phpunit()->defaultTestSuite(); - } - - $excludeTestSuite = ''; - - if ($cliConfiguration->hasExcludedTestSuite()) { - $excludeTestSuite = $cliConfiguration->excludedTestSuite(); - } - - $testSuffixes = ['Test.php', '.phpt']; - - if ($cliConfiguration->hasTestSuffixes()) { - $testSuffixes = $cliConfiguration->testSuffixes(); - } - - $sourceIncludeDirectories = []; - - if ($cliConfiguration->hasCoverageFilter()) { - foreach ($cliConfiguration->coverageFilter() as $directory) { - $sourceIncludeDirectories[] = new FilterDirectory($directory, '', '.php'); - } - } - - if ($xmlConfiguration->codeCoverage()->hasNonEmptyListOfFilesToBeIncludedInCodeCoverageReport()) { - foreach ($xmlConfiguration->codeCoverage()->directories() as $directory) { - $sourceIncludeDirectories[] = $directory; - } - - $sourceIncludeFiles = $xmlConfiguration->codeCoverage()->files(); - $sourceExcludeDirectories = $xmlConfiguration->codeCoverage()->excludeDirectories(); - $sourceExcludeFiles = $xmlConfiguration->codeCoverage()->excludeFiles(); - } else { - foreach ($xmlConfiguration->source()->includeDirectories() as $directory) { - $sourceIncludeDirectories[] = $directory; - } - - $sourceIncludeFiles = $xmlConfiguration->source()->includeFiles(); - $sourceExcludeDirectories = $xmlConfiguration->source()->excludeDirectories(); - $sourceExcludeFiles = $xmlConfiguration->source()->excludeFiles(); - } - - $useBaseline = null; - $generateBaseline = null; - - if (!$cliConfiguration->hasGenerateBaseline()) { - if ($cliConfiguration->hasUseBaseline()) { - $useBaseline = $cliConfiguration->useBaseline(); - } elseif ($xmlConfiguration->source()->hasBaseline()) { - $useBaseline = $xmlConfiguration->source()->baseline(); - } - } else { - $generateBaseline = $cliConfiguration->generateBaseline(); - } - - assert($useBaseline !== ''); - assert($generateBaseline !== ''); - - return new Configuration( - $cliConfiguration->arguments(), - $configurationFile, - $bootstrap, - $cacheResult, - $cacheDirectory, - $coverageCacheDirectory, - new Source( - $useBaseline, - $cliConfiguration->ignoreBaseline(), - FilterDirectoryCollection::fromArray($sourceIncludeDirectories), - $sourceIncludeFiles, - $sourceExcludeDirectories, - $sourceExcludeFiles, - $xmlConfiguration->source()->restrictDeprecations(), - $xmlConfiguration->source()->restrictNotices(), - $xmlConfiguration->source()->restrictWarnings(), - $xmlConfiguration->source()->ignoreSuppressionOfDeprecations(), - $xmlConfiguration->source()->ignoreSuppressionOfPhpDeprecations(), - $xmlConfiguration->source()->ignoreSuppressionOfErrors(), - $xmlConfiguration->source()->ignoreSuppressionOfNotices(), - $xmlConfiguration->source()->ignoreSuppressionOfPhpNotices(), - $xmlConfiguration->source()->ignoreSuppressionOfWarnings(), - $xmlConfiguration->source()->ignoreSuppressionOfPhpWarnings(), - ), - $testResultCacheFile, - $coverageClover, - $coverageCobertura, - $coverageCrap4j, - $coverageCrap4jThreshold, - $coverageHtml, - $coverageHtmlLowUpperBound, - $coverageHtmlHighLowerBound, - $coverageHtmlColorSuccessLow, - $coverageHtmlColorSuccessMedium, - $coverageHtmlColorSuccessHigh, - $coverageHtmlColorWarning, - $coverageHtmlColorDanger, - $coverageHtmlCustomCssFile, - $coveragePhp, - $coverageText, - $coverageTextShowUncoveredFiles, - $coverageTextShowOnlySummary, - $coverageXml, - $pathCoverage, - $xmlConfiguration->codeCoverage()->ignoreDeprecatedCodeUnits(), - $disableCodeCoverageIgnore, - $failOnDeprecation, - $failOnPhpunitDeprecation, - $failOnEmptyTestSuite, - $failOnIncomplete, - $failOnNotice, - $failOnRisky, - $failOnSkipped, - $failOnWarning, - $stopOnDefect, - $stopOnDeprecation, - $stopOnError, - $stopOnFailure, - $stopOnIncomplete, - $stopOnNotice, - $stopOnRisky, - $stopOnSkipped, - $stopOnWarning, - $outputToStandardErrorStream, - $columns, - $noExtensions, - $pharExtensionDirectory, - $extensionBootstrappers, - $backupGlobals, - $backupStaticProperties, - $beStrictAboutChangesToGlobalState, - $colors, - $processIsolation, - $enforceTimeLimit, - $defaultTimeLimit, - $timeoutForSmallTests, - $timeoutForMediumTests, - $timeoutForLargeTests, - $reportUselessTests, - $strictCoverage, - $disallowTestOutput, - $displayDetailsOnIncompleteTests, - $displayDetailsOnSkippedTests, - $displayDetailsOnTestsThatTriggerDeprecations, - $displayDetailsOnPhpunitDeprecations, - $displayDetailsOnTestsThatTriggerErrors, - $displayDetailsOnTestsThatTriggerNotices, - $displayDetailsOnTestsThatTriggerWarnings, - $reverseDefectList, - $requireCoverageMetadata, - $registerMockObjectsFromTestArgumentsRecursively, - $noProgress, - $noResults, - $noOutput, - $executionOrder, - $executionOrderDefects, - $resolveDependencies, - $logfileTeamcity, - $logfileJunit, - $logfileTestdoxHtml, - $logfileTestdoxText, - $logEventsText, - $logEventsVerboseText, - $teamCityOutput, - $testDoxOutput, - $testsCovering, - $testsUsing, - $filter, - $groups, - $excludeGroups, - $randomOrderSeed, - $includeUncoveredFiles, - $xmlConfiguration->testSuite(), - $includeTestSuite, - $excludeTestSuite, - $xmlConfiguration->phpunit()->hasDefaultTestSuite() ? $xmlConfiguration->phpunit()->defaultTestSuite() : null, - $testSuffixes, - new Php( - DirectoryCollection::fromArray($includePaths), - IniSettingCollection::fromArray($iniSettings), - $xmlConfiguration->php()->constants(), - $xmlConfiguration->php()->globalVariables(), - $xmlConfiguration->php()->envVariables(), - $xmlConfiguration->php()->postVariables(), - $xmlConfiguration->php()->getVariables(), - $xmlConfiguration->php()->cookieVariables(), - $xmlConfiguration->php()->serverVariables(), - $xmlConfiguration->php()->filesVariables(), - $xmlConfiguration->php()->requestVariables(), - ), - $xmlConfiguration->phpunit()->controlGarbageCollector(), - $xmlConfiguration->phpunit()->numberOfTestsBeforeGarbageCollection(), - $generateBaseline, - $cliConfiguration->debug(), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/PhpHandler.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/PhpHandler.php deleted file mode 100644 index 8bd727f2..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/PhpHandler.php +++ /dev/null @@ -1,123 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use const PATH_SEPARATOR; -use function constant; -use function define; -use function defined; -use function getenv; -use function implode; -use function ini_get; -use function ini_set; -use function putenv; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class PhpHandler -{ - public function handle(Php $configuration): void - { - $this->handleIncludePaths($configuration->includePaths()); - $this->handleIniSettings($configuration->iniSettings()); - $this->handleConstants($configuration->constants()); - $this->handleGlobalVariables($configuration->globalVariables()); - $this->handleServerVariables($configuration->serverVariables()); - $this->handleEnvVariables($configuration->envVariables()); - $this->handleVariables('_POST', $configuration->postVariables()); - $this->handleVariables('_GET', $configuration->getVariables()); - $this->handleVariables('_COOKIE', $configuration->cookieVariables()); - $this->handleVariables('_FILES', $configuration->filesVariables()); - $this->handleVariables('_REQUEST', $configuration->requestVariables()); - } - - private function handleIncludePaths(DirectoryCollection $includePaths): void - { - if (!$includePaths->isEmpty()) { - $includePathsAsStrings = []; - - foreach ($includePaths as $includePath) { - $includePathsAsStrings[] = $includePath->path(); - } - - ini_set( - 'include_path', - implode(PATH_SEPARATOR, $includePathsAsStrings) . - PATH_SEPARATOR . - ini_get('include_path'), - ); - } - } - - private function handleIniSettings(IniSettingCollection $iniSettings): void - { - foreach ($iniSettings as $iniSetting) { - $value = $iniSetting->value(); - - if (defined($value)) { - $value = (string) constant($value); - } - - ini_set($iniSetting->name(), $value); - } - } - - private function handleConstants(ConstantCollection $constants): void - { - foreach ($constants as $constant) { - if (!defined($constant->name())) { - define($constant->name(), $constant->value()); - } - } - } - - private function handleGlobalVariables(VariableCollection $variables): void - { - foreach ($variables as $variable) { - $GLOBALS[$variable->name()] = $variable->value(); - } - } - - private function handleServerVariables(VariableCollection $variables): void - { - foreach ($variables as $variable) { - $_SERVER[$variable->name()] = $variable->value(); - } - } - - private function handleVariables(string $target, VariableCollection $variables): void - { - foreach ($variables as $variable) { - $GLOBALS[$target][$variable->name()] = $variable->value(); - } - } - - private function handleEnvVariables(VariableCollection $variables): void - { - foreach ($variables as $variable) { - $name = $variable->name(); - $value = $variable->value(); - $force = $variable->force(); - - if ($force || getenv($name) === false) { - putenv("{$name}={$value}"); - } - - $value = getenv($name); - - if ($force || !isset($_ENV[$name])) { - $_ENV[$name] = $value; - } - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Registry.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Registry.php deleted file mode 100644 index bde319a7..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Registry.php +++ /dev/null @@ -1,111 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use function assert; -use function file_get_contents; -use function file_put_contents; -use function serialize; -use function unserialize; -use PHPUnit\Event\Facade as EventFacade; -use PHPUnit\TextUI\CliArguments\Configuration as CliConfiguration; -use PHPUnit\TextUI\CliArguments\Exception; -use PHPUnit\TextUI\XmlConfiguration\Configuration as XmlConfiguration; -use PHPUnit\Util\VersionComparisonOperator; - -/** - * CLI options and XML configuration are static within a single PHPUnit process. - * It is therefore okay to use a Singleton registry here. - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Registry -{ - private static ?Configuration $instance = null; - - public static function saveTo(string $path): bool - { - $result = file_put_contents( - $path, - serialize(self::get()), - ); - - if ($result) { - return true; - } - - // @codeCoverageIgnoreStart - return false; - // @codeCoverageIgnoreEnd - } - - /** - * This method is used by the "run test(s) in separate process" templates. - * - * @noinspection PhpUnused - * - * @codeCoverageIgnore - */ - public static function loadFrom(string $path): void - { - self::$instance = unserialize( - file_get_contents($path), - [ - 'allowed_classes' => [ - Configuration::class, - Php::class, - ConstantCollection::class, - Constant::class, - IniSettingCollection::class, - IniSetting::class, - VariableCollection::class, - Variable::class, - DirectoryCollection::class, - Directory::class, - FileCollection::class, - File::class, - FilterDirectoryCollection::class, - FilterDirectory::class, - TestDirectoryCollection::class, - TestDirectory::class, - TestFileCollection::class, - TestFile::class, - TestSuiteCollection::class, - TestSuite::class, - VersionComparisonOperator::class, - Source::class, - ], - ], - ); - } - - public static function get(): Configuration - { - assert(self::$instance instanceof Configuration); - - return self::$instance; - } - - /** - * @throws \PHPUnit\TextUI\XmlConfiguration\Exception - * @throws Exception - * @throws NoCustomCssFileException - */ - public static function init(CliConfiguration $cliConfiguration, XmlConfiguration $xmlConfiguration): Configuration - { - self::$instance = (new Merger)->merge($cliConfiguration, $xmlConfiguration); - - EventFacade::emitter()->testRunnerConfigured(self::$instance); - - return self::$instance; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/SourceFilter.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/SourceFilter.php deleted file mode 100644 index a6b1262b..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/SourceFilter.php +++ /dev/null @@ -1,25 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class SourceFilter -{ - public function includes(Source $source, string $path): bool - { - $files = (new SourceMapper)->map($source); - - return isset($files[$path]); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/SourceMapper.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/SourceMapper.php deleted file mode 100644 index f5d837f9..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/SourceMapper.php +++ /dev/null @@ -1,99 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use function realpath; -use SebastianBergmann\FileIterator\Facade as FileIteratorFacade; -use SplObjectStorage; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class SourceMapper -{ - /** - * @psalm-var SplObjectStorage> - */ - private static ?SplObjectStorage $files = null; - - /** - * @psalm-return array - */ - public function map(Source $source): array - { - if (self::$files === null) { - self::$files = new SplObjectStorage; - } - - if (isset(self::$files[$source])) { - return self::$files[$source]; - } - - $files = []; - - foreach ($source->includeDirectories() as $directory) { - foreach ((new FileIteratorFacade)->getFilesAsArray($directory->path(), $directory->suffix(), $directory->prefix()) as $file) { - $file = realpath($file); - - if (!$file) { - continue; - } - - $files[$file] = true; - } - } - - foreach ($source->includeFiles() as $file) { - $file = realpath($file->path()); - - if (!$file) { - continue; - } - - $files[$file] = true; - } - - foreach ($source->excludeDirectories() as $directory) { - foreach ((new FileIteratorFacade)->getFilesAsArray($directory->path(), $directory->suffix(), $directory->prefix()) as $file) { - $file = realpath($file); - - if (!$file) { - continue; - } - - if (!isset($files[$file])) { - continue; - } - - unset($files[$file]); - } - } - - foreach ($source->excludeFiles() as $file) { - $file = realpath($file->path()); - - if (!$file) { - continue; - } - - if (!isset($files[$file])) { - continue; - } - - unset($files[$file]); - } - - self::$files[$source] = $files; - - return $files; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/TestSuiteBuilder.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/TestSuiteBuilder.php deleted file mode 100644 index 0b948059..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/TestSuiteBuilder.php +++ /dev/null @@ -1,146 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use const PHP_EOL; -use function assert; -use function count; -use function is_dir; -use function is_file; -use function realpath; -use function str_ends_with; -use PHPUnit\Event\Facade as EventFacade; -use PHPUnit\Exception; -use PHPUnit\Framework\TestSuite; -use PHPUnit\Runner\TestSuiteLoader; -use PHPUnit\TextUI\RuntimeException; -use PHPUnit\TextUI\TestDirectoryNotFoundException; -use PHPUnit\TextUI\TestFileNotFoundException; -use PHPUnit\TextUI\XmlConfiguration\TestSuiteMapper; -use SebastianBergmann\FileIterator\Facade as FileIteratorFacade; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestSuiteBuilder -{ - /** - * @throws \PHPUnit\Framework\Exception - * @throws RuntimeException - * @throws TestDirectoryNotFoundException - * @throws TestFileNotFoundException - */ - public function build(Configuration $configuration): TestSuite - { - if ($configuration->hasCliArguments()) { - $arguments = []; - - foreach ($configuration->cliArguments() as $cliArgument) { - $argument = realpath($cliArgument); - - if (!$argument) { - throw new TestFileNotFoundException($cliArgument); - } - - $arguments[] = $argument; - } - - if (count($arguments) === 1) { - $testSuite = $this->testSuiteFromPath( - $arguments[0], - $configuration->testSuffixes(), - ); - } else { - $testSuite = $this->testSuiteFromPathList( - $arguments, - $configuration->testSuffixes(), - ); - } - } - - if (!isset($testSuite)) { - $xmlConfigurationFile = $configuration->hasConfigurationFile() ? $configuration->configurationFile() : 'Root Test Suite'; - - assert(!empty($xmlConfigurationFile)); - - $testSuite = (new TestSuiteMapper)->map( - $xmlConfigurationFile, - $configuration->testSuite(), - $configuration->includeTestSuite(), - $configuration->excludeTestSuite(), - ); - } - - EventFacade::emitter()->testSuiteLoaded(\PHPUnit\Event\TestSuite\TestSuiteBuilder::from($testSuite)); - - return $testSuite; - } - - /** - * @psalm-param non-empty-string $path - * @psalm-param list $suffixes - * @psalm-param ?TestSuite $suite - * - * @throws \PHPUnit\Framework\Exception - */ - private function testSuiteFromPath(string $path, array $suffixes, ?TestSuite $suite = null): TestSuite - { - if (str_ends_with($path, '.phpt') && is_file($path)) { - $suite = $suite ?: TestSuite::empty($path); - $suite->addTestFile($path); - - return $suite; - } - - if (is_dir($path)) { - $files = (new FileIteratorFacade)->getFilesAsArray($path, $suffixes); - - $suite = $suite ?: TestSuite::empty('CLI Arguments'); - $suite->addTestFiles($files); - - return $suite; - } - - try { - $testClass = (new TestSuiteLoader)->load($path); - } catch (Exception $e) { - print $e->getMessage() . PHP_EOL; - - exit(1); - } - - if (!$suite) { - return TestSuite::fromClassReflector($testClass); - } - - $suite->addTestSuite($testClass); - - return $suite; - } - - /** - * @psalm-param list $paths - * @psalm-param list $suffixes - * - * @throws \PHPUnit\Framework\Exception - */ - private function testSuiteFromPathList(array $paths, array $suffixes): TestSuite - { - $suite = TestSuite::empty('CLI Arguments'); - - foreach ($paths as $path) { - $this->testSuiteFromPath($path, $suffixes, $suite); - } - - return $suite; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/CodeCoverage.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/CodeCoverage.php deleted file mode 100644 index 4450970f..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/CodeCoverage.php +++ /dev/null @@ -1,295 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage; - -use function count; -use PHPUnit\TextUI\Configuration\Directory; -use PHPUnit\TextUI\Configuration\FileCollection; -use PHPUnit\TextUI\Configuration\FilterDirectoryCollection; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Clover; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Cobertura; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Crap4j; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Html; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Php; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Text; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Xml; -use PHPUnit\TextUI\XmlConfiguration\Exception; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @psalm-immutable - */ -final class CodeCoverage -{ - private readonly ?Directory $cacheDirectory; - private readonly FilterDirectoryCollection $directories; - private readonly FileCollection $files; - private readonly FilterDirectoryCollection $excludeDirectories; - private readonly FileCollection $excludeFiles; - private readonly bool $pathCoverage; - private readonly bool $includeUncoveredFiles; - private readonly bool $ignoreDeprecatedCodeUnits; - private readonly bool $disableCodeCoverageIgnore; - private readonly ?Clover $clover; - private readonly ?Cobertura $cobertura; - private readonly ?Crap4j $crap4j; - private readonly ?Html $html; - private readonly ?Php $php; - private readonly ?Text $text; - private readonly ?Xml $xml; - - public function __construct(?Directory $cacheDirectory, FilterDirectoryCollection $directories, FileCollection $files, FilterDirectoryCollection $excludeDirectories, FileCollection $excludeFiles, bool $pathCoverage, bool $includeUncoveredFiles, bool $ignoreDeprecatedCodeUnits, bool $disableCodeCoverageIgnore, ?Clover $clover, ?Cobertura $cobertura, ?Crap4j $crap4j, ?Html $html, ?Php $php, ?Text $text, ?Xml $xml) - { - $this->cacheDirectory = $cacheDirectory; - $this->directories = $directories; - $this->files = $files; - $this->excludeDirectories = $excludeDirectories; - $this->excludeFiles = $excludeFiles; - $this->pathCoverage = $pathCoverage; - $this->includeUncoveredFiles = $includeUncoveredFiles; - $this->ignoreDeprecatedCodeUnits = $ignoreDeprecatedCodeUnits; - $this->disableCodeCoverageIgnore = $disableCodeCoverageIgnore; - $this->clover = $clover; - $this->cobertura = $cobertura; - $this->crap4j = $crap4j; - $this->html = $html; - $this->php = $php; - $this->text = $text; - $this->xml = $xml; - } - - /** - * @psalm-assert-if-true !null $this->cacheDirectory - * - * @deprecated - */ - public function hasCacheDirectory(): bool - { - return $this->cacheDirectory !== null; - } - - /** - * @throws Exception - * - * @deprecated - */ - public function cacheDirectory(): Directory - { - if (!$this->hasCacheDirectory()) { - throw new Exception( - 'No cache directory has been configured', - ); - } - - return $this->cacheDirectory; - } - - public function hasNonEmptyListOfFilesToBeIncludedInCodeCoverageReport(): bool - { - return count($this->directories) > 0 || count($this->files) > 0; - } - - public function directories(): FilterDirectoryCollection - { - return $this->directories; - } - - public function files(): FileCollection - { - return $this->files; - } - - public function excludeDirectories(): FilterDirectoryCollection - { - return $this->excludeDirectories; - } - - public function excludeFiles(): FileCollection - { - return $this->excludeFiles; - } - - public function pathCoverage(): bool - { - return $this->pathCoverage; - } - - public function includeUncoveredFiles(): bool - { - return $this->includeUncoveredFiles; - } - - public function ignoreDeprecatedCodeUnits(): bool - { - return $this->ignoreDeprecatedCodeUnits; - } - - public function disableCodeCoverageIgnore(): bool - { - return $this->disableCodeCoverageIgnore; - } - - /** - * @psalm-assert-if-true !null $this->clover - */ - public function hasClover(): bool - { - return $this->clover !== null; - } - - /** - * @throws Exception - */ - public function clover(): Clover - { - if (!$this->hasClover()) { - throw new Exception( - 'Code Coverage report "Clover XML" has not been configured', - ); - } - - return $this->clover; - } - - /** - * @psalm-assert-if-true !null $this->cobertura - */ - public function hasCobertura(): bool - { - return $this->cobertura !== null; - } - - /** - * @throws Exception - */ - public function cobertura(): Cobertura - { - if (!$this->hasCobertura()) { - throw new Exception( - 'Code Coverage report "Cobertura XML" has not been configured', - ); - } - - return $this->cobertura; - } - - /** - * @psalm-assert-if-true !null $this->crap4j - */ - public function hasCrap4j(): bool - { - return $this->crap4j !== null; - } - - /** - * @throws Exception - */ - public function crap4j(): Crap4j - { - if (!$this->hasCrap4j()) { - throw new Exception( - 'Code Coverage report "Crap4J" has not been configured', - ); - } - - return $this->crap4j; - } - - /** - * @psalm-assert-if-true !null $this->html - */ - public function hasHtml(): bool - { - return $this->html !== null; - } - - /** - * @throws Exception - */ - public function html(): Html - { - if (!$this->hasHtml()) { - throw new Exception( - 'Code Coverage report "HTML" has not been configured', - ); - } - - return $this->html; - } - - /** - * @psalm-assert-if-true !null $this->php - */ - public function hasPhp(): bool - { - return $this->php !== null; - } - - /** - * @throws Exception - */ - public function php(): Php - { - if (!$this->hasPhp()) { - throw new Exception( - 'Code Coverage report "PHP" has not been configured', - ); - } - - return $this->php; - } - - /** - * @psalm-assert-if-true !null $this->text - */ - public function hasText(): bool - { - return $this->text !== null; - } - - /** - * @throws Exception - */ - public function text(): Text - { - if (!$this->hasText()) { - throw new Exception( - 'Code Coverage report "Text" has not been configured', - ); - } - - return $this->text; - } - - /** - * @psalm-assert-if-true !null $this->xml - */ - public function hasXml(): bool - { - return $this->xml !== null; - } - - /** - * @throws Exception - */ - public function xml(): Xml - { - if (!$this->hasXml()) { - throw new Exception( - 'Code Coverage report "XML" has not been configured', - ); - } - - return $this->xml; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Clover.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Clover.php deleted file mode 100644 index a815dc46..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Clover.php +++ /dev/null @@ -1,34 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report; - -use PHPUnit\TextUI\Configuration\File; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @psalm-immutable - */ -final class Clover -{ - private readonly File $target; - - public function __construct(File $target) - { - $this->target = $target; - } - - public function target(): File - { - return $this->target; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Cobertura.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Cobertura.php deleted file mode 100644 index c8b560d7..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Cobertura.php +++ /dev/null @@ -1,34 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report; - -use PHPUnit\TextUI\Configuration\File; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @psalm-immutable - */ -final class Cobertura -{ - private readonly File $target; - - public function __construct(File $target) - { - $this->target = $target; - } - - public function target(): File - { - return $this->target; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Crap4j.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Crap4j.php deleted file mode 100644 index eff20d6b..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Crap4j.php +++ /dev/null @@ -1,41 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report; - -use PHPUnit\TextUI\Configuration\File; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @psalm-immutable - */ -final class Crap4j -{ - private readonly File $target; - private readonly int $threshold; - - public function __construct(File $target, int $threshold) - { - $this->target = $target; - $this->threshold = $threshold; - } - - public function target(): File - { - return $this->target; - } - - public function threshold(): int - { - return $this->threshold; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Html.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Html.php deleted file mode 100644 index db6fa53d..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Html.php +++ /dev/null @@ -1,106 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report; - -use PHPUnit\TextUI\Configuration\Directory; -use PHPUnit\TextUI\Configuration\NoCustomCssFileException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @psalm-immutable - */ -final class Html -{ - private readonly Directory $target; - private readonly int $lowUpperBound; - private readonly int $highLowerBound; - private readonly string $colorSuccessLow; - private readonly string $colorSuccessMedium; - private readonly string $colorSuccessHigh; - private readonly string $colorWarning; - private readonly string $colorDanger; - private readonly ?string $customCssFile; - - public function __construct(Directory $target, int $lowUpperBound, int $highLowerBound, string $colorSuccessLow, string $colorSuccessMedium, string $colorSuccessHigh, string $colorWarning, string $colorDanger, ?string $customCssFile) - { - $this->target = $target; - $this->lowUpperBound = $lowUpperBound; - $this->highLowerBound = $highLowerBound; - $this->colorSuccessLow = $colorSuccessLow; - $this->colorSuccessMedium = $colorSuccessMedium; - $this->colorSuccessHigh = $colorSuccessHigh; - $this->colorWarning = $colorWarning; - $this->colorDanger = $colorDanger; - $this->customCssFile = $customCssFile; - } - - public function target(): Directory - { - return $this->target; - } - - public function lowUpperBound(): int - { - return $this->lowUpperBound; - } - - public function highLowerBound(): int - { - return $this->highLowerBound; - } - - public function colorSuccessLow(): string - { - return $this->colorSuccessLow; - } - - public function colorSuccessMedium(): string - { - return $this->colorSuccessMedium; - } - - public function colorSuccessHigh(): string - { - return $this->colorSuccessHigh; - } - - public function colorWarning(): string - { - return $this->colorWarning; - } - - public function colorDanger(): string - { - return $this->colorDanger; - } - - /** - * @psalm-assert-if-true !null $this->customCssFile - */ - public function hasCustomCssFile(): bool - { - return $this->customCssFile !== null; - } - - /** - * @throws NoCustomCssFileException - */ - public function customCssFile(): string - { - if (!$this->hasCustomCssFile()) { - throw new NoCustomCssFileException; - } - - return $this->customCssFile; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Php.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Php.php deleted file mode 100644 index 39a3762d..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Php.php +++ /dev/null @@ -1,34 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report; - -use PHPUnit\TextUI\Configuration\File; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @psalm-immutable - */ -final class Php -{ - private readonly File $target; - - public function __construct(File $target) - { - $this->target = $target; - } - - public function target(): File - { - return $this->target; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Text.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Text.php deleted file mode 100644 index 6ff3c8ce..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Text.php +++ /dev/null @@ -1,48 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report; - -use PHPUnit\TextUI\Configuration\File; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @psalm-immutable - */ -final class Text -{ - private readonly File $target; - private readonly bool $showUncoveredFiles; - private readonly bool $showOnlySummary; - - public function __construct(File $target, bool $showUncoveredFiles, bool $showOnlySummary) - { - $this->target = $target; - $this->showUncoveredFiles = $showUncoveredFiles; - $this->showOnlySummary = $showOnlySummary; - } - - public function target(): File - { - return $this->target; - } - - public function showUncoveredFiles(): bool - { - return $this->showUncoveredFiles; - } - - public function showOnlySummary(): bool - { - return $this->showOnlySummary; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Xml.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Xml.php deleted file mode 100644 index 09dddc0c..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Xml.php +++ /dev/null @@ -1,34 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report; - -use PHPUnit\TextUI\Configuration\Directory; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @psalm-immutable - */ -final class Xml -{ - private readonly Directory $target; - - public function __construct(Directory $target) - { - $this->target = $target; - } - - public function target(): Directory - { - return $this->target; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Configuration.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Configuration.php deleted file mode 100644 index d9a74fa8..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Configuration.php +++ /dev/null @@ -1,104 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use PHPUnit\TextUI\Configuration\ExtensionBootstrapCollection; -use PHPUnit\TextUI\Configuration\Php; -use PHPUnit\TextUI\Configuration\Source; -use PHPUnit\TextUI\Configuration\TestSuiteCollection; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\CodeCoverage; -use PHPUnit\TextUI\XmlConfiguration\Logging\Logging; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @psalm-immutable - */ -abstract class Configuration -{ - private readonly ExtensionBootstrapCollection $extensions; - private readonly Source $source; - private readonly CodeCoverage $codeCoverage; - private readonly Groups $groups; - private readonly Logging $logging; - private readonly Php $php; - private readonly PHPUnit $phpunit; - private readonly TestSuiteCollection $testSuite; - - public function __construct(ExtensionBootstrapCollection $extensions, Source $source, CodeCoverage $codeCoverage, Groups $groups, Logging $logging, Php $php, PHPUnit $phpunit, TestSuiteCollection $testSuite) - { - $this->extensions = $extensions; - $this->source = $source; - $this->codeCoverage = $codeCoverage; - $this->groups = $groups; - $this->logging = $logging; - $this->php = $php; - $this->phpunit = $phpunit; - $this->testSuite = $testSuite; - } - - public function extensions(): ExtensionBootstrapCollection - { - return $this->extensions; - } - - public function source(): Source - { - return $this->source; - } - - public function codeCoverage(): CodeCoverage - { - return $this->codeCoverage; - } - - public function groups(): Groups - { - return $this->groups; - } - - public function logging(): Logging - { - return $this->logging; - } - - public function php(): Php - { - return $this->php; - } - - public function phpunit(): PHPUnit - { - return $this->phpunit; - } - - public function testSuite(): TestSuiteCollection - { - return $this->testSuite; - } - - /** - * @psalm-assert-if-true DefaultConfiguration $this - */ - public function isDefault(): bool - { - return false; - } - - /** - * @psalm-assert-if-true LoadedFromFileConfiguration $this - */ - public function wasLoadedFromFile(): bool - { - return false; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/DefaultConfiguration.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/DefaultConfiguration.php deleted file mode 100644 index 7ec3a168..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/DefaultConfiguration.php +++ /dev/null @@ -1,163 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use PHPUnit\Runner\TestSuiteSorter; -use PHPUnit\TextUI\Configuration\ConstantCollection; -use PHPUnit\TextUI\Configuration\DirectoryCollection; -use PHPUnit\TextUI\Configuration\ExtensionBootstrapCollection; -use PHPUnit\TextUI\Configuration\FileCollection; -use PHPUnit\TextUI\Configuration\FilterDirectoryCollection as CodeCoverageFilterDirectoryCollection; -use PHPUnit\TextUI\Configuration\GroupCollection; -use PHPUnit\TextUI\Configuration\IniSettingCollection; -use PHPUnit\TextUI\Configuration\Php; -use PHPUnit\TextUI\Configuration\Source; -use PHPUnit\TextUI\Configuration\TestSuiteCollection; -use PHPUnit\TextUI\Configuration\VariableCollection; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\CodeCoverage; -use PHPUnit\TextUI\XmlConfiguration\Logging\Logging; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @psalm-immutable - */ -final class DefaultConfiguration extends Configuration -{ - public static function create(): self - { - return new self( - ExtensionBootstrapCollection::fromArray([]), - new Source( - null, - false, - CodeCoverageFilterDirectoryCollection::fromArray([]), - FileCollection::fromArray([]), - CodeCoverageFilterDirectoryCollection::fromArray([]), - FileCollection::fromArray([]), - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - ), - new CodeCoverage( - null, - CodeCoverageFilterDirectoryCollection::fromArray([]), - FileCollection::fromArray([]), - CodeCoverageFilterDirectoryCollection::fromArray([]), - FileCollection::fromArray([]), - false, - true, - false, - false, - null, - null, - null, - null, - null, - null, - null, - ), - new Groups( - GroupCollection::fromArray([]), - GroupCollection::fromArray([]), - ), - new Logging( - null, - null, - null, - null, - ), - new Php( - DirectoryCollection::fromArray([]), - IniSettingCollection::fromArray([]), - ConstantCollection::fromArray([]), - VariableCollection::fromArray([]), - VariableCollection::fromArray([]), - VariableCollection::fromArray([]), - VariableCollection::fromArray([]), - VariableCollection::fromArray([]), - VariableCollection::fromArray([]), - VariableCollection::fromArray([]), - VariableCollection::fromArray([]), - ), - new PHPUnit( - null, - true, - null, - 80, - \PHPUnit\TextUI\Configuration\Configuration::COLOR_DEFAULT, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - null, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - null, - false, - false, - true, - false, - false, - 1, - 1, - 10, - 60, - null, - TestSuiteSorter::ORDER_DEFAULT, - true, - false, - false, - false, - false, - false, - false, - 100, - ), - TestSuiteCollection::fromArray([]), - ); - } - - public function isDefault(): bool - { - return true; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Exception.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Exception.php deleted file mode 100644 index 60c3c9ac..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Exception.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Exception extends RuntimeException implements \PHPUnit\Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Generator.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Generator.php deleted file mode 100644 index 865fb5d4..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Generator.php +++ /dev/null @@ -1,73 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function str_replace; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Generator -{ - /** - * @var string - */ - private const TEMPLATE = <<<'EOT' - - - - - {tests_directory} - - - - - - {src_directory} - - - - -EOT; - - public function generateDefaultConfiguration(string $phpunitVersion, string $bootstrapScript, string $testsDirectory, string $srcDirectory, string $cacheDirectory): string - { - return str_replace( - [ - '{phpunit_version}', - '{bootstrap_script}', - '{tests_directory}', - '{src_directory}', - '{cache_directory}', - ], - [ - $phpunitVersion, - $bootstrapScript, - $testsDirectory, - $srcDirectory, - $cacheDirectory, - ], - self::TEMPLATE, - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Groups.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Groups.php deleted file mode 100644 index d89908ca..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Groups.php +++ /dev/null @@ -1,51 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use PHPUnit\TextUI\Configuration\GroupCollection; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @psalm-immutable - */ -final class Groups -{ - private readonly GroupCollection $include; - private readonly GroupCollection $exclude; - - public function __construct(GroupCollection $include, GroupCollection $exclude) - { - $this->include = $include; - $this->exclude = $exclude; - } - - public function hasInclude(): bool - { - return !$this->include->isEmpty(); - } - - public function include(): GroupCollection - { - return $this->include; - } - - public function hasExclude(): bool - { - return !$this->exclude->isEmpty(); - } - - public function exclude(): GroupCollection - { - return $this->exclude; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/LoadedFromFileConfiguration.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/LoadedFromFileConfiguration.php deleted file mode 100644 index 31106ed9..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/LoadedFromFileConfiguration.php +++ /dev/null @@ -1,67 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use PHPUnit\TextUI\Configuration\ExtensionBootstrapCollection; -use PHPUnit\TextUI\Configuration\Php; -use PHPUnit\TextUI\Configuration\Source; -use PHPUnit\TextUI\Configuration\TestSuiteCollection; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\CodeCoverage; -use PHPUnit\TextUI\XmlConfiguration\Logging\Logging; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @psalm-immutable - */ -final class LoadedFromFileConfiguration extends Configuration -{ - private readonly string $filename; - private readonly ValidationResult $validationResult; - - public function __construct(string $filename, ValidationResult $validationResult, ExtensionBootstrapCollection $extensions, Source $source, CodeCoverage $codeCoverage, Groups $groups, Logging $logging, Php $php, PHPUnit $phpunit, TestSuiteCollection $testSuite) - { - $this->filename = $filename; - $this->validationResult = $validationResult; - - parent::__construct( - $extensions, - $source, - $codeCoverage, - $groups, - $logging, - $php, - $phpunit, - $testSuite, - ); - } - - public function filename(): string - { - return $this->filename; - } - - public function hasValidationErrors(): bool - { - return $this->validationResult->hasValidationErrors(); - } - - public function validationErrors(): string - { - return $this->validationResult->asString(); - } - - public function wasLoadedFromFile(): bool - { - return true; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Loader.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Loader.php deleted file mode 100644 index 228dc785..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Loader.php +++ /dev/null @@ -1,1049 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use const DIRECTORY_SEPARATOR; -use const PHP_VERSION; -use function assert; -use function defined; -use function dirname; -use function explode; -use function is_numeric; -use function preg_match; -use function realpath; -use function str_contains; -use function str_starts_with; -use function strlen; -use function strtolower; -use function substr; -use function trim; -use DOMDocument; -use DOMElement; -use DOMNode; -use DOMXPath; -use PHPUnit\Runner\TestSuiteSorter; -use PHPUnit\Runner\Version; -use PHPUnit\TextUI\Configuration\Configuration; -use PHPUnit\TextUI\Configuration\Constant; -use PHPUnit\TextUI\Configuration\ConstantCollection; -use PHPUnit\TextUI\Configuration\Directory; -use PHPUnit\TextUI\Configuration\DirectoryCollection; -use PHPUnit\TextUI\Configuration\ExtensionBootstrap; -use PHPUnit\TextUI\Configuration\ExtensionBootstrapCollection; -use PHPUnit\TextUI\Configuration\File; -use PHPUnit\TextUI\Configuration\FileCollection; -use PHPUnit\TextUI\Configuration\FilterDirectory; -use PHPUnit\TextUI\Configuration\FilterDirectoryCollection; -use PHPUnit\TextUI\Configuration\Group; -use PHPUnit\TextUI\Configuration\GroupCollection; -use PHPUnit\TextUI\Configuration\IniSetting; -use PHPUnit\TextUI\Configuration\IniSettingCollection; -use PHPUnit\TextUI\Configuration\Php; -use PHPUnit\TextUI\Configuration\Source; -use PHPUnit\TextUI\Configuration\TestDirectory; -use PHPUnit\TextUI\Configuration\TestDirectoryCollection; -use PHPUnit\TextUI\Configuration\TestFile; -use PHPUnit\TextUI\Configuration\TestFileCollection; -use PHPUnit\TextUI\Configuration\TestSuite as TestSuiteConfiguration; -use PHPUnit\TextUI\Configuration\TestSuiteCollection; -use PHPUnit\TextUI\Configuration\Variable; -use PHPUnit\TextUI\Configuration\VariableCollection; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\CodeCoverage; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Clover; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Cobertura; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Crap4j; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Html as CodeCoverageHtml; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Php as CodeCoveragePhp; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Text as CodeCoverageText; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Xml as CodeCoverageXml; -use PHPUnit\TextUI\XmlConfiguration\Logging\Junit; -use PHPUnit\TextUI\XmlConfiguration\Logging\Logging; -use PHPUnit\TextUI\XmlConfiguration\Logging\TeamCity; -use PHPUnit\TextUI\XmlConfiguration\Logging\TestDox\Html as TestDoxHtml; -use PHPUnit\TextUI\XmlConfiguration\Logging\TestDox\Text as TestDoxText; -use PHPUnit\Util\VersionComparisonOperator; -use PHPUnit\Util\Xml\Loader as XmlLoader; -use PHPUnit\Util\Xml\XmlException; -use SebastianBergmann\CodeCoverage\Report\Html\Colors; -use SebastianBergmann\CodeCoverage\Report\Thresholds; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Loader -{ - /** - * @throws Exception - */ - public function load(string $filename): LoadedFromFileConfiguration - { - try { - $document = (new XmlLoader)->loadFile($filename); - } catch (XmlException $e) { - throw new Exception( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - - $xpath = new DOMXPath($document); - - try { - $xsdFilename = (new SchemaFinder)->find(Version::series()); - } catch (CannotFindSchemaException $e) { - throw new Exception( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - - $configurationFileRealpath = realpath($filename); - - return new LoadedFromFileConfiguration( - $configurationFileRealpath, - (new Validator)->validate($document, $xsdFilename), - $this->extensions($xpath), - $this->source($configurationFileRealpath, $xpath), - $this->codeCoverage($configurationFileRealpath, $xpath), - $this->groups($xpath), - $this->logging($configurationFileRealpath, $xpath), - $this->php($configurationFileRealpath, $xpath), - $this->phpunit($configurationFileRealpath, $document), - $this->testSuite($configurationFileRealpath, $xpath), - ); - } - - private function logging(string $filename, DOMXPath $xpath): Logging - { - $junit = null; - $element = $this->element($xpath, 'logging/junit'); - - if ($element) { - $junit = new Junit( - new File( - $this->toAbsolutePath( - $filename, - (string) $this->getStringAttribute($element, 'outputFile'), - ), - ), - ); - } - - $teamCity = null; - $element = $this->element($xpath, 'logging/teamcity'); - - if ($element) { - $teamCity = new TeamCity( - new File( - $this->toAbsolutePath( - $filename, - (string) $this->getStringAttribute($element, 'outputFile'), - ), - ), - ); - } - - $testDoxHtml = null; - $element = $this->element($xpath, 'logging/testdoxHtml'); - - if ($element) { - $testDoxHtml = new TestDoxHtml( - new File( - $this->toAbsolutePath( - $filename, - (string) $this->getStringAttribute($element, 'outputFile'), - ), - ), - ); - } - - $testDoxText = null; - $element = $this->element($xpath, 'logging/testdoxText'); - - if ($element) { - $testDoxText = new TestDoxText( - new File( - $this->toAbsolutePath( - $filename, - (string) $this->getStringAttribute($element, 'outputFile'), - ), - ), - ); - } - - return new Logging( - $junit, - $teamCity, - $testDoxHtml, - $testDoxText, - ); - } - - private function extensions(DOMXPath $xpath): ExtensionBootstrapCollection - { - $extensionBootstrappers = []; - - foreach ($xpath->query('extensions/bootstrap') as $bootstrap) { - assert($bootstrap instanceof DOMElement); - - $parameters = []; - - foreach ($xpath->query('parameter', $bootstrap) as $parameter) { - assert($parameter instanceof DOMElement); - - $parameters[$parameter->getAttribute('name')] = $parameter->getAttribute('value'); - } - - $extensionBootstrappers[] = new ExtensionBootstrap( - $bootstrap->getAttribute('class'), - $parameters, - ); - } - - return ExtensionBootstrapCollection::fromArray($extensionBootstrappers); - } - - /** - * @psalm-return non-empty-string - */ - private function toAbsolutePath(string $filename, string $path): string - { - $path = trim($path); - - if (str_starts_with($path, '/')) { - return $path; - } - - // Matches the following on Windows: - // - \\NetworkComputer\Path - // - \\.\D: - // - \\.\c: - // - C:\Windows - // - C:\windows - // - C:/windows - // - c:/windows - if (defined('PHP_WINDOWS_VERSION_BUILD') && - !empty($path) && - ($path[0] === '\\' || (strlen($path) >= 3 && preg_match('#^[A-Z]:[/\\\]#i', substr($path, 0, 3))))) { - return $path; - } - - if (str_contains($path, '://')) { - return $path; - } - - return dirname($filename) . DIRECTORY_SEPARATOR . $path; - } - - private function source(string $filename, DOMXPath $xpath): Source - { - $baseline = null; - $restrictDeprecations = false; - $restrictNotices = false; - $restrictWarnings = false; - $ignoreSuppressionOfDeprecations = false; - $ignoreSuppressionOfPhpDeprecations = false; - $ignoreSuppressionOfErrors = false; - $ignoreSuppressionOfNotices = false; - $ignoreSuppressionOfPhpNotices = false; - $ignoreSuppressionOfWarnings = false; - $ignoreSuppressionOfPhpWarnings = false; - - $element = $this->element($xpath, 'source'); - - if ($element) { - $baseline = $this->getStringAttribute($element, 'baseline'); - - if ($baseline !== null) { - $baseline = $this->toAbsolutePath($filename, $baseline); - } - - $restrictDeprecations = $this->getBooleanAttribute($element, 'restrictDeprecations', false); - $restrictNotices = $this->getBooleanAttribute($element, 'restrictNotices', false); - $restrictWarnings = $this->getBooleanAttribute($element, 'restrictWarnings', false); - $ignoreSuppressionOfDeprecations = $this->getBooleanAttribute($element, 'ignoreSuppressionOfDeprecations', false); - $ignoreSuppressionOfPhpDeprecations = $this->getBooleanAttribute($element, 'ignoreSuppressionOfPhpDeprecations', false); - $ignoreSuppressionOfErrors = $this->getBooleanAttribute($element, 'ignoreSuppressionOfErrors', false); - $ignoreSuppressionOfNotices = $this->getBooleanAttribute($element, 'ignoreSuppressionOfNotices', false); - $ignoreSuppressionOfPhpNotices = $this->getBooleanAttribute($element, 'ignoreSuppressionOfPhpNotices', false); - $ignoreSuppressionOfWarnings = $this->getBooleanAttribute($element, 'ignoreSuppressionOfWarnings', false); - $ignoreSuppressionOfPhpWarnings = $this->getBooleanAttribute($element, 'ignoreSuppressionOfPhpWarnings', false); - } - - return new Source( - $baseline, - false, - $this->readFilterDirectories($filename, $xpath, 'source/include/directory'), - $this->readFilterFiles($filename, $xpath, 'source/include/file'), - $this->readFilterDirectories($filename, $xpath, 'source/exclude/directory'), - $this->readFilterFiles($filename, $xpath, 'source/exclude/file'), - $restrictDeprecations, - $restrictNotices, - $restrictWarnings, - $ignoreSuppressionOfDeprecations, - $ignoreSuppressionOfPhpDeprecations, - $ignoreSuppressionOfErrors, - $ignoreSuppressionOfNotices, - $ignoreSuppressionOfPhpNotices, - $ignoreSuppressionOfWarnings, - $ignoreSuppressionOfPhpWarnings, - ); - } - - private function codeCoverage(string $filename, DOMXPath $xpath): CodeCoverage - { - $cacheDirectory = null; - $pathCoverage = false; - $includeUncoveredFiles = true; - $ignoreDeprecatedCodeUnits = false; - $disableCodeCoverageIgnore = false; - - $element = $this->element($xpath, 'coverage'); - - if ($element) { - $cacheDirectory = $this->getStringAttribute($element, 'cacheDirectory'); - - if ($cacheDirectory !== null) { - $cacheDirectory = new Directory( - $this->toAbsolutePath($filename, $cacheDirectory), - ); - } - - $pathCoverage = $this->getBooleanAttribute( - $element, - 'pathCoverage', - false, - ); - - $includeUncoveredFiles = $this->getBooleanAttribute( - $element, - 'includeUncoveredFiles', - true, - ); - - $ignoreDeprecatedCodeUnits = $this->getBooleanAttribute( - $element, - 'ignoreDeprecatedCodeUnits', - false, - ); - - $disableCodeCoverageIgnore = $this->getBooleanAttribute( - $element, - 'disableCodeCoverageIgnore', - false, - ); - } - - $clover = null; - $element = $this->element($xpath, 'coverage/report/clover'); - - if ($element) { - $clover = new Clover( - new File( - $this->toAbsolutePath( - $filename, - (string) $this->getStringAttribute($element, 'outputFile'), - ), - ), - ); - } - - $cobertura = null; - $element = $this->element($xpath, 'coverage/report/cobertura'); - - if ($element) { - $cobertura = new Cobertura( - new File( - $this->toAbsolutePath( - $filename, - (string) $this->getStringAttribute($element, 'outputFile'), - ), - ), - ); - } - - $crap4j = null; - $element = $this->element($xpath, 'coverage/report/crap4j'); - - if ($element) { - $crap4j = new Crap4j( - new File( - $this->toAbsolutePath( - $filename, - (string) $this->getStringAttribute($element, 'outputFile'), - ), - ), - $this->getIntegerAttribute($element, 'threshold', 30), - ); - } - - $html = null; - $element = $this->element($xpath, 'coverage/report/html'); - - if ($element) { - $defaultColors = Colors::default(); - $defaultThresholds = Thresholds::default(); - - $html = new CodeCoverageHtml( - new Directory( - $this->toAbsolutePath( - $filename, - (string) $this->getStringAttribute($element, 'outputDirectory'), - ), - ), - $this->getIntegerAttribute($element, 'lowUpperBound', $defaultThresholds->lowUpperBound()), - $this->getIntegerAttribute($element, 'highLowerBound', $defaultThresholds->highLowerBound()), - $this->getStringAttributeWithDefault($element, 'colorSuccessLow', $defaultColors->successLow()), - $this->getStringAttributeWithDefault($element, 'colorSuccessMedium', $defaultColors->successMedium()), - $this->getStringAttributeWithDefault($element, 'colorSuccessHigh', $defaultColors->successHigh()), - $this->getStringAttributeWithDefault($element, 'colorWarning', $defaultColors->warning()), - $this->getStringAttributeWithDefault($element, 'colorDanger', $defaultColors->danger()), - $this->getStringAttribute($element, 'customCssFile'), - ); - } - - $php = null; - $element = $this->element($xpath, 'coverage/report/php'); - - if ($element) { - $php = new CodeCoveragePhp( - new File( - $this->toAbsolutePath( - $filename, - (string) $this->getStringAttribute($element, 'outputFile'), - ), - ), - ); - } - - $text = null; - $element = $this->element($xpath, 'coverage/report/text'); - - if ($element) { - $text = new CodeCoverageText( - new File( - $this->toAbsolutePath( - $filename, - (string) $this->getStringAttribute($element, 'outputFile'), - ), - ), - $this->getBooleanAttribute($element, 'showUncoveredFiles', false), - $this->getBooleanAttribute($element, 'showOnlySummary', false), - ); - } - - $xml = null; - $element = $this->element($xpath, 'coverage/report/xml'); - - if ($element) { - $xml = new CodeCoverageXml( - new Directory( - $this->toAbsolutePath( - $filename, - (string) $this->getStringAttribute($element, 'outputDirectory'), - ), - ), - ); - } - - return new CodeCoverage( - $cacheDirectory, - $this->readFilterDirectories($filename, $xpath, 'coverage/include/directory'), - $this->readFilterFiles($filename, $xpath, 'coverage/include/file'), - $this->readFilterDirectories($filename, $xpath, 'coverage/exclude/directory'), - $this->readFilterFiles($filename, $xpath, 'coverage/exclude/file'), - $pathCoverage, - $includeUncoveredFiles, - $ignoreDeprecatedCodeUnits, - $disableCodeCoverageIgnore, - $clover, - $cobertura, - $crap4j, - $html, - $php, - $text, - $xml, - ); - } - - private function getBoolean(string $value, bool $default): bool - { - if (strtolower($value) === 'false') { - return false; - } - - if (strtolower($value) === 'true') { - return true; - } - - return $default; - } - - private function getValue(string $value): bool|string - { - if (strtolower($value) === 'false') { - return false; - } - - if (strtolower($value) === 'true') { - return true; - } - - return $value; - } - - private function readFilterDirectories(string $filename, DOMXPath $xpath, string $query): FilterDirectoryCollection - { - $directories = []; - - foreach ($xpath->query($query) as $directoryNode) { - assert($directoryNode instanceof DOMElement); - - $directoryPath = $directoryNode->textContent; - - if (!$directoryPath) { - continue; - } - - $directories[] = new FilterDirectory( - $this->toAbsolutePath($filename, $directoryPath), - $directoryNode->hasAttribute('prefix') ? $directoryNode->getAttribute('prefix') : '', - $directoryNode->hasAttribute('suffix') ? $directoryNode->getAttribute('suffix') : '.php', - ); - } - - return FilterDirectoryCollection::fromArray($directories); - } - - private function readFilterFiles(string $filename, DOMXPath $xpath, string $query): FileCollection - { - $files = []; - - foreach ($xpath->query($query) as $file) { - assert($file instanceof DOMNode); - - $filePath = $file->textContent; - - if ($filePath) { - $files[] = new File($this->toAbsolutePath($filename, $filePath)); - } - } - - return FileCollection::fromArray($files); - } - - private function groups(DOMXPath $xpath): Groups - { - $include = []; - $exclude = []; - - foreach ($xpath->query('groups/include/group') as $group) { - assert($group instanceof DOMNode); - - $include[] = new Group($group->textContent); - } - - foreach ($xpath->query('groups/exclude/group') as $group) { - assert($group instanceof DOMNode); - - $exclude[] = new Group($group->textContent); - } - - return new Groups( - GroupCollection::fromArray($include), - GroupCollection::fromArray($exclude), - ); - } - - private function getBooleanAttribute(DOMElement $element, string $attribute, bool $default): bool - { - if (!$element->hasAttribute($attribute)) { - return $default; - } - - return $this->getBoolean( - $element->getAttribute($attribute), - false, - ); - } - - private function getIntegerAttribute(DOMElement $element, string $attribute, int $default): int - { - if (!$element->hasAttribute($attribute)) { - return $default; - } - - return $this->getInteger( - $element->getAttribute($attribute), - $default, - ); - } - - private function getStringAttribute(DOMElement $element, string $attribute): ?string - { - if (!$element->hasAttribute($attribute)) { - return null; - } - - return $element->getAttribute($attribute); - } - - private function getStringAttributeWithDefault(DOMElement $element, string $attribute, string $default): string - { - if (!$element->hasAttribute($attribute)) { - return $default; - } - - return $element->getAttribute($attribute); - } - - private function getInteger(string $value, int $default): int - { - if (is_numeric($value)) { - return (int) $value; - } - - return $default; - } - - private function php(string $filename, DOMXPath $xpath): Php - { - $includePaths = []; - - foreach ($xpath->query('php/includePath') as $includePath) { - assert($includePath instanceof DOMNode); - - $path = $includePath->textContent; - - if ($path) { - $includePaths[] = new Directory($this->toAbsolutePath($filename, $path)); - } - } - - $iniSettings = []; - - foreach ($xpath->query('php/ini') as $ini) { - assert($ini instanceof DOMElement); - - $iniSettings[] = new IniSetting( - $ini->getAttribute('name'), - $ini->getAttribute('value'), - ); - } - - $constants = []; - - foreach ($xpath->query('php/const') as $const) { - assert($const instanceof DOMElement); - - $value = $const->getAttribute('value'); - - $constants[] = new Constant( - $const->getAttribute('name'), - $this->getValue($value), - ); - } - - $variables = [ - 'var' => [], - 'env' => [], - 'post' => [], - 'get' => [], - 'cookie' => [], - 'server' => [], - 'files' => [], - 'request' => [], - ]; - - foreach (['var', 'env', 'post', 'get', 'cookie', 'server', 'files', 'request'] as $array) { - foreach ($xpath->query('php/' . $array) as $var) { - assert($var instanceof DOMElement); - - $name = $var->getAttribute('name'); - $value = $var->getAttribute('value'); - $force = false; - $verbatim = false; - - if ($var->hasAttribute('force')) { - $force = $this->getBoolean($var->getAttribute('force'), false); - } - - if ($var->hasAttribute('verbatim')) { - $verbatim = $this->getBoolean($var->getAttribute('verbatim'), false); - } - - if (!$verbatim) { - $value = $this->getValue($value); - } - - $variables[$array][] = new Variable($name, $value, $force); - } - } - - return new Php( - DirectoryCollection::fromArray($includePaths), - IniSettingCollection::fromArray($iniSettings), - ConstantCollection::fromArray($constants), - VariableCollection::fromArray($variables['var']), - VariableCollection::fromArray($variables['env']), - VariableCollection::fromArray($variables['post']), - VariableCollection::fromArray($variables['get']), - VariableCollection::fromArray($variables['cookie']), - VariableCollection::fromArray($variables['server']), - VariableCollection::fromArray($variables['files']), - VariableCollection::fromArray($variables['request']), - ); - } - - private function phpunit(string $filename, DOMDocument $document): PHPUnit - { - $executionOrder = TestSuiteSorter::ORDER_DEFAULT; - $defectsFirst = false; - $resolveDependencies = $this->getBooleanAttribute($document->documentElement, 'resolveDependencies', true); - - if ($document->documentElement->hasAttribute('executionOrder')) { - foreach (explode(',', $document->documentElement->getAttribute('executionOrder')) as $order) { - switch ($order) { - case 'default': - $executionOrder = TestSuiteSorter::ORDER_DEFAULT; - $defectsFirst = false; - $resolveDependencies = true; - - break; - - case 'depends': - $resolveDependencies = true; - - break; - - case 'no-depends': - $resolveDependencies = false; - - break; - - case 'defects': - $defectsFirst = true; - - break; - - case 'duration': - $executionOrder = TestSuiteSorter::ORDER_DURATION; - - break; - - case 'random': - $executionOrder = TestSuiteSorter::ORDER_RANDOMIZED; - - break; - - case 'reverse': - $executionOrder = TestSuiteSorter::ORDER_REVERSED; - - break; - - case 'size': - $executionOrder = TestSuiteSorter::ORDER_SIZE; - - break; - } - } - } - - $cacheDirectory = $this->getStringAttribute($document->documentElement, 'cacheDirectory'); - - if ($cacheDirectory !== null) { - $cacheDirectory = $this->toAbsolutePath($filename, $cacheDirectory); - } - - $cacheResultFile = $this->getStringAttribute($document->documentElement, 'cacheResultFile'); - - if ($cacheResultFile !== null) { - $cacheResultFile = $this->toAbsolutePath($filename, $cacheResultFile); - } - - $bootstrap = $this->getStringAttribute($document->documentElement, 'bootstrap'); - - if ($bootstrap !== null) { - $bootstrap = $this->toAbsolutePath($filename, $bootstrap); - } - - $extensionsDirectory = $this->getStringAttribute($document->documentElement, 'extensionsDirectory'); - - if ($extensionsDirectory !== null) { - $extensionsDirectory = $this->toAbsolutePath($filename, $extensionsDirectory); - } - - $backupStaticProperties = false; - - if ($document->documentElement->hasAttribute('backupStaticProperties')) { - $backupStaticProperties = $this->getBooleanAttribute($document->documentElement, 'backupStaticProperties', false); - } elseif ($document->documentElement->hasAttribute('backupStaticAttributes')) { - $backupStaticProperties = $this->getBooleanAttribute($document->documentElement, 'backupStaticAttributes', false); - } - - $requireCoverageMetadata = false; - - if ($document->documentElement->hasAttribute('requireCoverageMetadata')) { - $requireCoverageMetadata = $this->getBooleanAttribute($document->documentElement, 'requireCoverageMetadata', false); - } elseif ($document->documentElement->hasAttribute('forceCoversAnnotation')) { - $requireCoverageMetadata = $this->getBooleanAttribute($document->documentElement, 'forceCoversAnnotation', false); - } - - $beStrictAboutCoverageMetadata = false; - - if ($document->documentElement->hasAttribute('beStrictAboutCoverageMetadata')) { - $beStrictAboutCoverageMetadata = $this->getBooleanAttribute($document->documentElement, 'beStrictAboutCoverageMetadata', false); - } elseif ($document->documentElement->hasAttribute('forceCoversAnnotation')) { - $beStrictAboutCoverageMetadata = $this->getBooleanAttribute($document->documentElement, 'beStrictAboutCoversAnnotation', false); - } - - return new PHPUnit( - $cacheDirectory, - $this->getBooleanAttribute($document->documentElement, 'cacheResult', true), - $cacheResultFile, - $this->getColumns($document), - $this->getColors($document), - $this->getBooleanAttribute($document->documentElement, 'stderr', false), - $this->getBooleanAttribute($document->documentElement, 'displayDetailsOnIncompleteTests', false), - $this->getBooleanAttribute($document->documentElement, 'displayDetailsOnSkippedTests', false), - $this->getBooleanAttribute($document->documentElement, 'displayDetailsOnTestsThatTriggerDeprecations', false), - $this->getBooleanAttribute($document->documentElement, 'displayDetailsOnPhpunitDeprecations', false), - $this->getBooleanAttribute($document->documentElement, 'displayDetailsOnTestsThatTriggerErrors', false), - $this->getBooleanAttribute($document->documentElement, 'displayDetailsOnTestsThatTriggerNotices', false), - $this->getBooleanAttribute($document->documentElement, 'displayDetailsOnTestsThatTriggerWarnings', false), - $this->getBooleanAttribute($document->documentElement, 'reverseDefectList', false), - $requireCoverageMetadata, - $bootstrap, - $this->getBooleanAttribute($document->documentElement, 'processIsolation', false), - $this->getBooleanAttribute($document->documentElement, 'failOnDeprecation', false), - $this->getBooleanAttribute($document->documentElement, 'failOnPhpunitDeprecation', false), - $this->getBooleanAttribute($document->documentElement, 'failOnEmptyTestSuite', false), - $this->getBooleanAttribute($document->documentElement, 'failOnIncomplete', false), - $this->getBooleanAttribute($document->documentElement, 'failOnNotice', false), - $this->getBooleanAttribute($document->documentElement, 'failOnRisky', false), - $this->getBooleanAttribute($document->documentElement, 'failOnSkipped', false), - $this->getBooleanAttribute($document->documentElement, 'failOnWarning', false), - $this->getBooleanAttribute($document->documentElement, 'stopOnDefect', false), - $this->getBooleanAttribute($document->documentElement, 'stopOnDeprecation', false), - $this->getBooleanAttribute($document->documentElement, 'stopOnError', false), - $this->getBooleanAttribute($document->documentElement, 'stopOnFailure', false), - $this->getBooleanAttribute($document->documentElement, 'stopOnIncomplete', false), - $this->getBooleanAttribute($document->documentElement, 'stopOnNotice', false), - $this->getBooleanAttribute($document->documentElement, 'stopOnRisky', false), - $this->getBooleanAttribute($document->documentElement, 'stopOnSkipped', false), - $this->getBooleanAttribute($document->documentElement, 'stopOnWarning', false), - $extensionsDirectory, - $this->getBooleanAttribute($document->documentElement, 'beStrictAboutChangesToGlobalState', false), - $this->getBooleanAttribute($document->documentElement, 'beStrictAboutOutputDuringTests', false), - $this->getBooleanAttribute($document->documentElement, 'beStrictAboutTestsThatDoNotTestAnything', true), - $beStrictAboutCoverageMetadata, - $this->getBooleanAttribute($document->documentElement, 'enforceTimeLimit', false), - $this->getIntegerAttribute($document->documentElement, 'defaultTimeLimit', 1), - $this->getIntegerAttribute($document->documentElement, 'timeoutForSmallTests', 1), - $this->getIntegerAttribute($document->documentElement, 'timeoutForMediumTests', 10), - $this->getIntegerAttribute($document->documentElement, 'timeoutForLargeTests', 60), - $this->getStringAttribute($document->documentElement, 'defaultTestSuite'), - $executionOrder, - $resolveDependencies, - $defectsFirst, - $this->getBooleanAttribute($document->documentElement, 'backupGlobals', false), - $backupStaticProperties, - $this->getBooleanAttribute($document->documentElement, 'registerMockObjectsFromTestArgumentsRecursively', false), - $this->getBooleanAttribute($document->documentElement, 'testdox', false), - $this->getBooleanAttribute($document->documentElement, 'controlGarbageCollector', false), - $this->getIntegerAttribute($document->documentElement, 'numberOfTestsBeforeGarbageCollection', 100), - ); - } - - private function getColors(DOMDocument $document): string - { - $colors = Configuration::COLOR_DEFAULT; - - if ($document->documentElement->hasAttribute('colors')) { - /* only allow boolean for compatibility with previous versions - 'always' only allowed from command line */ - if ($this->getBoolean($document->documentElement->getAttribute('colors'), false)) { - $colors = Configuration::COLOR_AUTO; - } else { - $colors = Configuration::COLOR_NEVER; - } - } - - return $colors; - } - - private function getColumns(DOMDocument $document): int|string - { - $columns = 80; - - if ($document->documentElement->hasAttribute('columns')) { - $columns = $document->documentElement->getAttribute('columns'); - - if ($columns !== 'max') { - $columns = $this->getInteger($columns, 80); - } - } - - return $columns; - } - - private function testSuite(string $filename, DOMXPath $xpath): TestSuiteCollection - { - $testSuites = []; - - foreach ($this->getTestSuiteElements($xpath) as $element) { - $exclude = []; - - foreach ($element->getElementsByTagName('exclude') as $excludeNode) { - $excludeFile = $excludeNode->textContent; - - if ($excludeFile) { - $exclude[] = new File($this->toAbsolutePath($filename, $excludeFile)); - } - } - - $directories = []; - - foreach ($element->getElementsByTagName('directory') as $directoryNode) { - assert($directoryNode instanceof DOMElement); - - $directory = $directoryNode->textContent; - - if (empty($directory)) { - continue; - } - - $prefix = ''; - - if ($directoryNode->hasAttribute('prefix')) { - $prefix = $directoryNode->getAttribute('prefix'); - } - - $suffix = 'Test.php'; - - if ($directoryNode->hasAttribute('suffix')) { - $suffix = $directoryNode->getAttribute('suffix'); - } - - $phpVersion = PHP_VERSION; - - if ($directoryNode->hasAttribute('phpVersion')) { - $phpVersion = $directoryNode->getAttribute('phpVersion'); - } - - $phpVersionOperator = new VersionComparisonOperator('>='); - - if ($directoryNode->hasAttribute('phpVersionOperator')) { - $phpVersionOperator = new VersionComparisonOperator($directoryNode->getAttribute('phpVersionOperator')); - } - - $directories[] = new TestDirectory( - $this->toAbsolutePath($filename, $directory), - $prefix, - $suffix, - $phpVersion, - $phpVersionOperator, - ); - } - - $files = []; - - foreach ($element->getElementsByTagName('file') as $fileNode) { - assert($fileNode instanceof DOMElement); - - $file = $fileNode->textContent; - - if (empty($file)) { - continue; - } - - $phpVersion = PHP_VERSION; - - if ($fileNode->hasAttribute('phpVersion')) { - $phpVersion = $fileNode->getAttribute('phpVersion'); - } - - $phpVersionOperator = new VersionComparisonOperator('>='); - - if ($fileNode->hasAttribute('phpVersionOperator')) { - $phpVersionOperator = new VersionComparisonOperator($fileNode->getAttribute('phpVersionOperator')); - } - - $files[] = new TestFile( - $this->toAbsolutePath($filename, $file), - $phpVersion, - $phpVersionOperator, - ); - } - - $name = $element->getAttribute('name'); - - assert(!empty($name)); - - $testSuites[] = new TestSuiteConfiguration( - $name, - TestDirectoryCollection::fromArray($directories), - TestFileCollection::fromArray($files), - FileCollection::fromArray($exclude), - ); - } - - return TestSuiteCollection::fromArray($testSuites); - } - - /** - * @psalm-return list - */ - private function getTestSuiteElements(DOMXPath $xpath): array - { - $elements = []; - - $testSuiteNodes = $xpath->query('testsuites/testsuite'); - - if ($testSuiteNodes->length === 0) { - $testSuiteNodes = $xpath->query('testsuite'); - } - - if ($testSuiteNodes->length === 1) { - $element = $testSuiteNodes->item(0); - - assert($element instanceof DOMElement); - - $elements[] = $element; - } else { - foreach ($testSuiteNodes as $testSuiteNode) { - assert($testSuiteNode instanceof DOMElement); - - $elements[] = $testSuiteNode; - } - } - - return $elements; - } - - private function element(DOMXPath $xpath, string $element): ?DOMElement - { - $nodes = $xpath->query($element); - - if ($nodes->length === 1) { - $node = $nodes->item(0); - - assert($node instanceof DOMElement); - - return $node; - } - - return null; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/Junit.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/Junit.php deleted file mode 100644 index 406aaf2b..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/Junit.php +++ /dev/null @@ -1,34 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration\Logging; - -use PHPUnit\TextUI\Configuration\File; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @psalm-immutable - */ -final class Junit -{ - private readonly File $target; - - public function __construct(File $target) - { - $this->target = $target; - } - - public function target(): File - { - return $this->target; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/Logging.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/Logging.php deleted file mode 100644 index 8fc34394..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/Logging.php +++ /dev/null @@ -1,105 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration\Logging; - -use PHPUnit\TextUI\XmlConfiguration\Exception; -use PHPUnit\TextUI\XmlConfiguration\Logging\TestDox\Html as TestDoxHtml; -use PHPUnit\TextUI\XmlConfiguration\Logging\TestDox\Text as TestDoxText; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @psalm-immutable - */ -final class Logging -{ - private readonly ?Junit $junit; - private readonly ?TeamCity $teamCity; - private readonly ?TestDoxHtml $testDoxHtml; - private readonly ?TestDoxText $testDoxText; - - public function __construct(?Junit $junit, ?TeamCity $teamCity, ?TestDoxHtml $testDoxHtml, ?TestDoxText $testDoxText) - { - $this->junit = $junit; - $this->teamCity = $teamCity; - $this->testDoxHtml = $testDoxHtml; - $this->testDoxText = $testDoxText; - } - - public function hasJunit(): bool - { - return $this->junit !== null; - } - - /** - * @throws Exception - */ - public function junit(): Junit - { - if ($this->junit === null) { - throw new Exception('Logger "JUnit XML" is not configured'); - } - - return $this->junit; - } - - public function hasTeamCity(): bool - { - return $this->teamCity !== null; - } - - /** - * @throws Exception - */ - public function teamCity(): TeamCity - { - if ($this->teamCity === null) { - throw new Exception('Logger "Team City" is not configured'); - } - - return $this->teamCity; - } - - public function hasTestDoxHtml(): bool - { - return $this->testDoxHtml !== null; - } - - /** - * @throws Exception - */ - public function testDoxHtml(): TestDoxHtml - { - if ($this->testDoxHtml === null) { - throw new Exception('Logger "TestDox HTML" is not configured'); - } - - return $this->testDoxHtml; - } - - public function hasTestDoxText(): bool - { - return $this->testDoxText !== null; - } - - /** - * @throws Exception - */ - public function testDoxText(): TestDoxText - { - if ($this->testDoxText === null) { - throw new Exception('Logger "TestDox Text" is not configured'); - } - - return $this->testDoxText; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/TeamCity.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/TeamCity.php deleted file mode 100644 index 2025c1f4..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/TeamCity.php +++ /dev/null @@ -1,34 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration\Logging; - -use PHPUnit\TextUI\Configuration\File; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @psalm-immutable - */ -final class TeamCity -{ - private readonly File $target; - - public function __construct(File $target) - { - $this->target = $target; - } - - public function target(): File - { - return $this->target; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/TestDox/Html.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/TestDox/Html.php deleted file mode 100644 index e52587bb..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/TestDox/Html.php +++ /dev/null @@ -1,34 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration\Logging\TestDox; - -use PHPUnit\TextUI\Configuration\File; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @psalm-immutable - */ -final class Html -{ - private readonly File $target; - - public function __construct(File $target) - { - $this->target = $target; - } - - public function target(): File - { - return $this->target; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/TestDox/Text.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/TestDox/Text.php deleted file mode 100644 index db47a3ef..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/TestDox/Text.php +++ /dev/null @@ -1,34 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration\Logging\TestDox; - -use PHPUnit\TextUI\Configuration\File; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @psalm-immutable - */ -final class Text -{ - private readonly File $target; - - public function __construct(File $target) - { - $this->target = $target; - } - - public function target(): File - { - return $this->target; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/MigrationBuilder.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/MigrationBuilder.php deleted file mode 100644 index 212281fe..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/MigrationBuilder.php +++ /dev/null @@ -1,88 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function version_compare; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class MigrationBuilder -{ - private const AVAILABLE_MIGRATIONS = [ - '8.5' => [ - RemoveLogTypes::class, - ], - - '9.2' => [ - RemoveCacheTokensAttribute::class, - IntroduceCoverageElement::class, - MoveAttributesFromRootToCoverage::class, - MoveAttributesFromFilterWhitelistToCoverage::class, - MoveWhitelistIncludesToCoverage::class, - MoveWhitelistExcludesToCoverage::class, - RemoveEmptyFilter::class, - CoverageCloverToReport::class, - CoverageCrap4jToReport::class, - CoverageHtmlToReport::class, - CoveragePhpToReport::class, - CoverageTextToReport::class, - CoverageXmlToReport::class, - ConvertLogTypes::class, - ], - - '9.5' => [ - RemoveListeners::class, - RemoveTestSuiteLoaderAttributes::class, - RemoveCacheResultFileAttribute::class, - RemoveCoverageElementCacheDirectoryAttribute::class, - RemoveCoverageElementProcessUncoveredFilesAttribute::class, - IntroduceCacheDirectoryAttribute::class, - RenameBackupStaticAttributesAttribute::class, - RemoveBeStrictAboutResourceUsageDuringSmallTestsAttribute::class, - RemoveBeStrictAboutTodoAnnotatedTestsAttribute::class, - RemovePrinterAttributes::class, - RemoveVerboseAttribute::class, - RenameForceCoversAnnotationAttribute::class, - RenameBeStrictAboutCoversAnnotationAttribute::class, - RemoveConversionToExceptionsAttributes::class, - RemoveNoInteractionAttribute::class, - RemoveLoggingElements::class, - RemoveTestDoxGroupsElement::class, - ], - - '10.0' => [ - MoveCoverageDirectoriesToSource::class, - ], - - '10.4' => [ - RemoveBeStrictAboutTodoAnnotatedTestsAttribute::class, - ], - ]; - - public function build(string $fromVersion): array - { - $stack = [new UpdateSchemaLocation]; - - foreach (self::AVAILABLE_MIGRATIONS as $version => $migrations) { - if (version_compare($version, $fromVersion, '<')) { - continue; - } - - foreach ($migrations as $migration) { - $stack[] = new $migration; - } - } - - return $stack; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/MigrationException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/MigrationException.php deleted file mode 100644 index bb35aca6..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/MigrationException.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use PHPUnit\Exception; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class MigrationException extends RuntimeException implements Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/ConvertLogTypes.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/ConvertLogTypes.php deleted file mode 100644 index 43a9bf15..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/ConvertLogTypes.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ConvertLogTypes implements Migration -{ - public function migrate(DOMDocument $document): void - { - $logging = $document->getElementsByTagName('logging')->item(0); - - if (!$logging instanceof DOMElement) { - return; - } - $types = [ - 'junit' => 'junit', - 'teamcity' => 'teamcity', - 'testdox-html' => 'testdoxHtml', - 'testdox-text' => 'testdoxText', - 'testdox-xml' => 'testdoxXml', - 'plain' => 'text', - ]; - - $logNodes = []; - - foreach ($logging->getElementsByTagName('log') as $logNode) { - if (!isset($types[$logNode->getAttribute('type')])) { - continue; - } - - $logNodes[] = $logNode; - } - - foreach ($logNodes as $oldNode) { - $newLogNode = $document->createElement($types[$oldNode->getAttribute('type')]); - $newLogNode->setAttribute('outputFile', $oldNode->getAttribute('target')); - - $logging->replaceChild($newLogNode, $oldNode); - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageCloverToReport.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageCloverToReport.php deleted file mode 100644 index 7d3ee496..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageCloverToReport.php +++ /dev/null @@ -1,34 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class CoverageCloverToReport extends LogToReportMigration -{ - protected function forType(): string - { - return 'coverage-clover'; - } - - protected function toReportFormat(DOMElement $logNode): DOMElement - { - $clover = $logNode->ownerDocument->createElement('clover'); - - $clover->setAttribute('outputFile', $logNode->getAttribute('target')); - - return $clover; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageCrap4jToReport.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageCrap4jToReport.php deleted file mode 100644 index 2b494780..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageCrap4jToReport.php +++ /dev/null @@ -1,35 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class CoverageCrap4jToReport extends LogToReportMigration -{ - protected function forType(): string - { - return 'coverage-crap4j'; - } - - protected function toReportFormat(DOMElement $logNode): DOMElement - { - $crap4j = $logNode->ownerDocument->createElement('crap4j'); - $crap4j->setAttribute('outputFile', $logNode->getAttribute('target')); - - $this->migrateAttributes($logNode, $crap4j, ['threshold']); - - return $crap4j; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageHtmlToReport.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageHtmlToReport.php deleted file mode 100644 index 64af982d..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageHtmlToReport.php +++ /dev/null @@ -1,35 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class CoverageHtmlToReport extends LogToReportMigration -{ - protected function forType(): string - { - return 'coverage-html'; - } - - protected function toReportFormat(DOMElement $logNode): DOMElement - { - $html = $logNode->ownerDocument->createElement('html'); - $html->setAttribute('outputDirectory', $logNode->getAttribute('target')); - - $this->migrateAttributes($logNode, $html, ['lowUpperBound', 'highLowerBound']); - - return $html; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoveragePhpToReport.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoveragePhpToReport.php deleted file mode 100644 index 93868c47..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoveragePhpToReport.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class CoveragePhpToReport extends LogToReportMigration -{ - protected function forType(): string - { - return 'coverage-php'; - } - - protected function toReportFormat(DOMElement $logNode): DOMElement - { - $php = $logNode->ownerDocument->createElement('php'); - $php->setAttribute('outputFile', $logNode->getAttribute('target')); - - return $php; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageTextToReport.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageTextToReport.php deleted file mode 100644 index f50be1d7..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageTextToReport.php +++ /dev/null @@ -1,35 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class CoverageTextToReport extends LogToReportMigration -{ - protected function forType(): string - { - return 'coverage-text'; - } - - protected function toReportFormat(DOMElement $logNode): DOMElement - { - $text = $logNode->ownerDocument->createElement('text'); - $text->setAttribute('outputFile', $logNode->getAttribute('target')); - - $this->migrateAttributes($logNode, $text, ['showUncoveredFiles', 'showOnlySummary']); - - return $text; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageXmlToReport.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageXmlToReport.php deleted file mode 100644 index 2ea7cdc8..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageXmlToReport.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class CoverageXmlToReport extends LogToReportMigration -{ - protected function forType(): string - { - return 'coverage-xml'; - } - - protected function toReportFormat(DOMElement $logNode): DOMElement - { - $xml = $logNode->ownerDocument->createElement('xml'); - $xml->setAttribute('outputDirectory', $logNode->getAttribute('target')); - - return $xml; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/IntroduceCacheDirectoryAttribute.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/IntroduceCacheDirectoryAttribute.php deleted file mode 100644 index fe0e0a2b..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/IntroduceCacheDirectoryAttribute.php +++ /dev/null @@ -1,35 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class IntroduceCacheDirectoryAttribute implements Migration -{ - public function migrate(DOMDocument $document): void - { - $root = $document->documentElement; - - assert($root instanceof DOMElement); - - if ($root->hasAttribute('cacheDirectory')) { - return; - } - - $root->setAttribute('cacheDirectory', '.phpunit.cache'); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/IntroduceCoverageElement.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/IntroduceCoverageElement.php deleted file mode 100644 index 54b5485d..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/IntroduceCoverageElement.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use DOMDocument; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class IntroduceCoverageElement implements Migration -{ - public function migrate(DOMDocument $document): void - { - $coverage = $document->createElement('coverage'); - - $document->documentElement->insertBefore( - $coverage, - $document->documentElement->firstChild, - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/LogToReportMigration.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/LogToReportMigration.php deleted file mode 100644 index 321260b5..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/LogToReportMigration.php +++ /dev/null @@ -1,81 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function sprintf; -use DOMDocument; -use DOMElement; -use DOMXPath; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -abstract class LogToReportMigration implements Migration -{ - /** - * @throws MigrationException - */ - public function migrate(DOMDocument $document): void - { - $coverage = $document->getElementsByTagName('coverage')->item(0); - - if (!$coverage instanceof DOMElement) { - throw new MigrationException('Unexpected state - No coverage element'); - } - - $logNode = $this->findLogNode($document); - - if ($logNode === null) { - return; - } - - $reportChild = $this->toReportFormat($logNode); - - $report = $coverage->getElementsByTagName('report')->item(0); - - if ($report === null) { - $report = $coverage->appendChild($document->createElement('report')); - } - - $report->appendChild($reportChild); - $logNode->parentNode->removeChild($logNode); - } - - protected function migrateAttributes(DOMElement $src, DOMElement $dest, array $attributes): void - { - foreach ($attributes as $attr) { - if (!$src->hasAttribute($attr)) { - continue; - } - - $dest->setAttribute($attr, $src->getAttribute($attr)); - $src->removeAttribute($attr); - } - } - - abstract protected function forType(): string; - - abstract protected function toReportFormat(DOMElement $logNode): DOMElement; - - private function findLogNode(DOMDocument $document): ?DOMElement - { - $logNode = (new DOMXPath($document))->query( - sprintf('//logging/log[@type="%s"]', $this->forType()), - )->item(0); - - if (!$logNode instanceof DOMElement) { - return null; - } - - return $logNode; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/Migration.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/Migration.php deleted file mode 100644 index 05359a2d..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/Migration.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use DOMDocument; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -interface Migration -{ - public function migrate(DOMDocument $document): void; -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php deleted file mode 100644 index b6ed401a..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php +++ /dev/null @@ -1,53 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class MoveAttributesFromFilterWhitelistToCoverage implements Migration -{ - /** - * @throws MigrationException - */ - public function migrate(DOMDocument $document): void - { - $whitelist = $document->getElementsByTagName('whitelist')->item(0); - - if (!$whitelist) { - return; - } - - $coverage = $document->getElementsByTagName('coverage')->item(0); - - if (!$coverage instanceof DOMElement) { - throw new MigrationException('Unexpected state - No coverage element'); - } - - $map = [ - 'addUncoveredFilesFromWhitelist' => 'includeUncoveredFiles', - 'processUncoveredFilesFromWhitelist' => 'processUncoveredFiles', - ]; - - foreach ($map as $old => $new) { - if (!$whitelist->hasAttribute($old)) { - continue; - } - - $coverage->setAttribute($new, $whitelist->getAttribute($old)); - $whitelist->removeAttribute($old); - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveAttributesFromRootToCoverage.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveAttributesFromRootToCoverage.php deleted file mode 100644 index 40b95fec..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveAttributesFromRootToCoverage.php +++ /dev/null @@ -1,52 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class MoveAttributesFromRootToCoverage implements Migration -{ - /** - * @throws MigrationException - */ - public function migrate(DOMDocument $document): void - { - $map = [ - 'disableCodeCoverageIgnore' => 'disableCodeCoverageIgnore', - 'ignoreDeprecatedCodeUnitsFromCodeCoverage' => 'ignoreDeprecatedCodeUnits', - ]; - - $root = $document->documentElement; - - assert($root instanceof DOMElement); - - $coverage = $document->getElementsByTagName('coverage')->item(0); - - if (!$coverage instanceof DOMElement) { - throw new MigrationException('Unexpected state - No coverage element'); - } - - foreach ($map as $old => $new) { - if (!$root->hasAttribute($old)) { - continue; - } - - $coverage->setAttribute($new, $root->getAttribute($old)); - $root->removeAttribute($old); - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveCoverageDirectoriesToSource.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveCoverageDirectoriesToSource.php deleted file mode 100644 index 737c473f..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveCoverageDirectoriesToSource.php +++ /dev/null @@ -1,64 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; -use DOMXPath; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class MoveCoverageDirectoriesToSource implements Migration -{ - /** - * @throws MigrationException - */ - public function migrate(DOMDocument $document): void - { - $source = $document->getElementsByTagName('source')->item(0); - - if ($source !== null) { - return; - } - - $coverage = $document->getElementsByTagName('coverage')->item(0); - - if ($coverage === null) { - return; - } - - $root = $document->documentElement; - - assert($root instanceof DOMElement); - - $source = $document->createElement('source'); - $root->appendChild($source); - - $xpath = new DOMXPath($document); - - foreach (['include', 'exclude'] as $element) { - foreach (SnapshotNodeList::fromNodeList($xpath->query('//coverage/' . $element)) as $node) { - $source->appendChild($node); - } - } - - if ($coverage->childElementCount !== 0) { - return; - } - - assert($coverage->parentNode !== null); - - $coverage->parentNode->removeChild($coverage); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveWhitelistExcludesToCoverage.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveWhitelistExcludesToCoverage.php deleted file mode 100644 index 311fb567..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveWhitelistExcludesToCoverage.php +++ /dev/null @@ -1,73 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use function in_array; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class MoveWhitelistExcludesToCoverage implements Migration -{ - /** - * @throws MigrationException - */ - public function migrate(DOMDocument $document): void - { - $whitelist = $document->getElementsByTagName('whitelist')->item(0); - - if ($whitelist === null) { - return; - } - - $excludeNodes = SnapshotNodeList::fromNodeList($whitelist->getElementsByTagName('exclude')); - - if ($excludeNodes->count() === 0) { - return; - } - - $coverage = $document->getElementsByTagName('coverage')->item(0); - - if (!$coverage instanceof DOMElement) { - throw new MigrationException('Unexpected state - No coverage element'); - } - - $targetExclude = $coverage->getElementsByTagName('exclude')->item(0); - - if ($targetExclude === null) { - $targetExclude = $coverage->appendChild( - $document->createElement('exclude'), - ); - } - - foreach ($excludeNodes as $excludeNode) { - assert($excludeNode instanceof DOMElement); - - foreach (SnapshotNodeList::fromNodeList($excludeNode->childNodes) as $child) { - if (!$child instanceof DOMElement || !in_array($child->nodeName, ['directory', 'file'], true)) { - continue; - } - - $targetExclude->appendChild($child); - } - - if ($excludeNode->getElementsByTagName('*')->count() !== 0) { - throw new MigrationException('Dangling child elements in exclude found.'); - } - - $whitelist->removeChild($excludeNode); - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveWhitelistIncludesToCoverage.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveWhitelistIncludesToCoverage.php deleted file mode 100644 index 19c1f140..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveWhitelistIncludesToCoverage.php +++ /dev/null @@ -1,54 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class MoveWhitelistIncludesToCoverage implements Migration -{ - /** - * @throws MigrationException - */ - public function migrate(DOMDocument $document): void - { - $whitelist = $document->getElementsByTagName('whitelist')->item(0); - - if ($whitelist === null) { - return; - } - - $coverage = $document->getElementsByTagName('coverage')->item(0); - - if (!$coverage instanceof DOMElement) { - throw new MigrationException('Unexpected state - No coverage element'); - } - - $include = $document->createElement('include'); - $coverage->appendChild($include); - - foreach (SnapshotNodeList::fromNodeList($whitelist->childNodes) as $child) { - if (!$child instanceof DOMElement) { - continue; - } - - if (!($child->nodeName === 'directory' || $child->nodeName === 'file')) { - continue; - } - - $include->appendChild($child); - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveBeStrictAboutResourceUsageDuringSmallTestsAttribute.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveBeStrictAboutResourceUsageDuringSmallTestsAttribute.php deleted file mode 100644 index ee49fcfc..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveBeStrictAboutResourceUsageDuringSmallTestsAttribute.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class RemoveBeStrictAboutResourceUsageDuringSmallTestsAttribute implements Migration -{ - public function migrate(DOMDocument $document): void - { - $root = $document->documentElement; - - assert($root instanceof DOMElement); - - if ($root->hasAttribute('beStrictAboutResourceUsageDuringSmallTests')) { - $root->removeAttribute('beStrictAboutResourceUsageDuringSmallTests'); - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveBeStrictAboutTodoAnnotatedTestsAttribute.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveBeStrictAboutTodoAnnotatedTestsAttribute.php deleted file mode 100644 index d7ab28f6..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveBeStrictAboutTodoAnnotatedTestsAttribute.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class RemoveBeStrictAboutTodoAnnotatedTestsAttribute implements Migration -{ - public function migrate(DOMDocument $document): void - { - $root = $document->documentElement; - - assert($root instanceof DOMElement); - - if ($root->hasAttribute('beStrictAboutTodoAnnotatedTests')) { - $root->removeAttribute('beStrictAboutTodoAnnotatedTests'); - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCacheResultFileAttribute.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCacheResultFileAttribute.php deleted file mode 100644 index e283b64d..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCacheResultFileAttribute.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class RemoveCacheResultFileAttribute implements Migration -{ - public function migrate(DOMDocument $document): void - { - $root = $document->documentElement; - - assert($root instanceof DOMElement); - - if ($root->hasAttribute('cacheResultFile')) { - $root->removeAttribute('cacheResultFile'); - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCacheTokensAttribute.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCacheTokensAttribute.php deleted file mode 100644 index 5ab7e041..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCacheTokensAttribute.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class RemoveCacheTokensAttribute implements Migration -{ - public function migrate(DOMDocument $document): void - { - $root = $document->documentElement; - - assert($root instanceof DOMElement); - - if ($root->hasAttribute('cacheTokens')) { - $root->removeAttribute('cacheTokens'); - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveConversionToExceptionsAttributes.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveConversionToExceptionsAttributes.php deleted file mode 100644 index 339b3e20..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveConversionToExceptionsAttributes.php +++ /dev/null @@ -1,45 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class RemoveConversionToExceptionsAttributes implements Migration -{ - public function migrate(DOMDocument $document): void - { - $root = $document->documentElement; - - assert($root instanceof DOMElement); - - if ($root->hasAttribute('convertDeprecationsToExceptions')) { - $root->removeAttribute('convertDeprecationsToExceptions'); - } - - if ($root->hasAttribute('convertErrorsToExceptions')) { - $root->removeAttribute('convertErrorsToExceptions'); - } - - if ($root->hasAttribute('convertNoticesToExceptions')) { - $root->removeAttribute('convertNoticesToExceptions'); - } - - if ($root->hasAttribute('convertWarningsToExceptions')) { - $root->removeAttribute('convertWarningsToExceptions'); - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCoverageElementCacheDirectoryAttribute.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCoverageElementCacheDirectoryAttribute.php deleted file mode 100644 index 4a71bbb8..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCoverageElementCacheDirectoryAttribute.php +++ /dev/null @@ -1,34 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class RemoveCoverageElementCacheDirectoryAttribute implements Migration -{ - public function migrate(DOMDocument $document): void - { - $node = $document->getElementsByTagName('coverage')->item(0); - - if (!$node instanceof DOMElement || $node->parentNode === null) { - return; - } - - if ($node->hasAttribute('cacheDirectory')) { - $node->removeAttribute('cacheDirectory'); - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCoverageElementProcessUncoveredFilesAttribute.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCoverageElementProcessUncoveredFilesAttribute.php deleted file mode 100644 index 720b65c5..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCoverageElementProcessUncoveredFilesAttribute.php +++ /dev/null @@ -1,34 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class RemoveCoverageElementProcessUncoveredFilesAttribute implements Migration -{ - public function migrate(DOMDocument $document): void - { - $node = $document->getElementsByTagName('coverage')->item(0); - - if (!$node instanceof DOMElement || $node->parentNode === null) { - return; - } - - if ($node->hasAttribute('processUncoveredFiles')) { - $node->removeAttribute('processUncoveredFiles'); - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveEmptyFilter.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveEmptyFilter.php deleted file mode 100644 index 2d8fea52..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveEmptyFilter.php +++ /dev/null @@ -1,56 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function sprintf; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class RemoveEmptyFilter implements Migration -{ - /** - * @throws MigrationException - */ - public function migrate(DOMDocument $document): void - { - $whitelist = $document->getElementsByTagName('whitelist')->item(0); - - if ($whitelist instanceof DOMElement) { - $this->ensureEmpty($whitelist); - $whitelist->parentNode->removeChild($whitelist); - } - - $filter = $document->getElementsByTagName('filter')->item(0); - - if ($filter instanceof DOMElement) { - $this->ensureEmpty($filter); - $filter->parentNode->removeChild($filter); - } - } - - /** - * @throws MigrationException - */ - private function ensureEmpty(DOMElement $element): void - { - if ($element->attributes->length > 0) { - throw new MigrationException(sprintf('%s element has unexpected attributes', $element->nodeName)); - } - - if ($element->getElementsByTagName('*')->length > 0) { - throw new MigrationException(sprintf('%s element has unexpected children', $element->nodeName)); - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveListeners.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveListeners.php deleted file mode 100644 index b493d1c7..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveListeners.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class RemoveListeners implements Migration -{ - public function migrate(DOMDocument $document): void - { - $node = $document->getElementsByTagName('listeners')->item(0); - - if (!$node instanceof DOMElement || $node->parentNode === null) { - return; - } - - $node->parentNode->removeChild($node); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveLogTypes.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveLogTypes.php deleted file mode 100644 index 9591f8c9..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveLogTypes.php +++ /dev/null @@ -1,41 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class RemoveLogTypes implements Migration -{ - public function migrate(DOMDocument $document): void - { - $logging = $document->getElementsByTagName('logging')->item(0); - - if (!$logging instanceof DOMElement) { - return; - } - - foreach (SnapshotNodeList::fromNodeList($logging->getElementsByTagName('log')) as $logNode) { - assert($logNode instanceof DOMElement); - - switch ($logNode->getAttribute('type')) { - case 'json': - case 'tap': - $logging->removeChild($logNode); - } - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveLoggingElements.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveLoggingElements.php deleted file mode 100644 index de09f8c4..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveLoggingElements.php +++ /dev/null @@ -1,50 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use DOMDocument; -use DOMElement; -use DOMXPath; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class RemoveLoggingElements implements Migration -{ - public function migrate(DOMDocument $document): void - { - $this->removeTestDoxElement($document); - $this->removeTextElement($document); - } - - private function removeTestDoxElement(DOMDocument $document): void - { - $node = (new DOMXPath($document))->query('logging/testdoxXml')->item(0); - - if (!$node instanceof DOMElement || $node->parentNode === null) { - return; - } - - $node->parentNode->removeChild($node); - } - - private function removeTextElement(DOMDocument $document): void - { - $node = (new DOMXPath($document))->query('logging/text')->item(0); - - if (!$node instanceof DOMElement || $node->parentNode === null) { - return; - } - - $node->parentNode->removeChild($node); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveNoInteractionAttribute.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveNoInteractionAttribute.php deleted file mode 100644 index c3dd3f10..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveNoInteractionAttribute.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class RemoveNoInteractionAttribute implements Migration -{ - public function migrate(DOMDocument $document): void - { - $root = $document->documentElement; - - assert($root instanceof DOMElement); - - if ($root->hasAttribute('noInteraction')) { - $root->removeAttribute('noInteraction'); - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemovePrinterAttributes.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemovePrinterAttributes.php deleted file mode 100644 index 2d1d03fa..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemovePrinterAttributes.php +++ /dev/null @@ -1,37 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class RemovePrinterAttributes implements Migration -{ - public function migrate(DOMDocument $document): void - { - $root = $document->documentElement; - - assert($root instanceof DOMElement); - - if ($root->hasAttribute('printerClass')) { - $root->removeAttribute('printerClass'); - } - - if ($root->hasAttribute('printerFile')) { - $root->removeAttribute('printerFile'); - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveTestDoxGroupsElement.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveTestDoxGroupsElement.php deleted file mode 100644 index eb2f1359..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveTestDoxGroupsElement.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class RemoveTestDoxGroupsElement implements Migration -{ - public function migrate(DOMDocument $document): void - { - $node = $document->getElementsByTagName('testdoxGroups')->item(0); - - if (!$node instanceof DOMElement || $node->parentNode === null) { - return; - } - - $node->parentNode->removeChild($node); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveTestSuiteLoaderAttributes.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveTestSuiteLoaderAttributes.php deleted file mode 100644 index 823c9647..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveTestSuiteLoaderAttributes.php +++ /dev/null @@ -1,37 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class RemoveTestSuiteLoaderAttributes implements Migration -{ - public function migrate(DOMDocument $document): void - { - $root = $document->documentElement; - - assert($root instanceof DOMElement); - - if ($root->hasAttribute('testSuiteLoaderClass')) { - $root->removeAttribute('testSuiteLoaderClass'); - } - - if ($root->hasAttribute('testSuiteLoaderFile')) { - $root->removeAttribute('testSuiteLoaderFile'); - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveVerboseAttribute.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveVerboseAttribute.php deleted file mode 100644 index 0233d8b4..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveVerboseAttribute.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class RemoveVerboseAttribute implements Migration -{ - public function migrate(DOMDocument $document): void - { - $root = $document->documentElement; - - assert($root instanceof DOMElement); - - if ($root->hasAttribute('verbose')) { - $root->removeAttribute('verbose'); - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameBackupStaticAttributesAttribute.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameBackupStaticAttributesAttribute.php deleted file mode 100644 index b04bbdb2..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameBackupStaticAttributesAttribute.php +++ /dev/null @@ -1,40 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class RenameBackupStaticAttributesAttribute implements Migration -{ - public function migrate(DOMDocument $document): void - { - $root = $document->documentElement; - - assert($root instanceof DOMElement); - - if ($root->hasAttribute('backupStaticProperties')) { - return; - } - - if (!$root->hasAttribute('backupStaticAttributes')) { - return; - } - - $root->setAttribute('backupStaticProperties', $root->getAttribute('backupStaticAttributes')); - $root->removeAttribute('backupStaticAttributes'); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameBeStrictAboutCoversAnnotationAttribute.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameBeStrictAboutCoversAnnotationAttribute.php deleted file mode 100644 index 3950e2a3..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameBeStrictAboutCoversAnnotationAttribute.php +++ /dev/null @@ -1,40 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class RenameBeStrictAboutCoversAnnotationAttribute implements Migration -{ - public function migrate(DOMDocument $document): void - { - $root = $document->documentElement; - - assert($root instanceof DOMElement); - - if ($root->hasAttribute('beStrictAboutCoverageMetadata')) { - return; - } - - if (!$root->hasAttribute('beStrictAboutCoversAnnotation')) { - return; - } - - $root->setAttribute('beStrictAboutCoverageMetadata', $root->getAttribute('beStrictAboutCoversAnnotation')); - $root->removeAttribute('beStrictAboutCoversAnnotation'); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameForceCoversAnnotationAttribute.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameForceCoversAnnotationAttribute.php deleted file mode 100644 index c384be21..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameForceCoversAnnotationAttribute.php +++ /dev/null @@ -1,40 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class RenameForceCoversAnnotationAttribute implements Migration -{ - public function migrate(DOMDocument $document): void - { - $root = $document->documentElement; - - assert($root instanceof DOMElement); - - if ($root->hasAttribute('requireCoverageMetadata')) { - return; - } - - if (!$root->hasAttribute('forceCoversAnnotation')) { - return; - } - - $root->setAttribute('requireCoverageMetadata', $root->getAttribute('forceCoversAnnotation')); - $root->removeAttribute('forceCoversAnnotation'); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/UpdateSchemaLocation.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/UpdateSchemaLocation.php deleted file mode 100644 index 6f39eb4c..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/UpdateSchemaLocation.php +++ /dev/null @@ -1,36 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; -use PHPUnit\Runner\Version; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class UpdateSchemaLocation implements Migration -{ - public function migrate(DOMDocument $document): void - { - $root = $document->documentElement; - - assert($root instanceof DOMElement); - - $root->setAttributeNS( - 'http://www.w3.org/2001/XMLSchema-instance', - 'xsi:noNamespaceSchemaLocation', - 'https://schema.phpunit.de/' . Version::series() . '/phpunit.xsd', - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrator.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrator.php deleted file mode 100644 index 278789ff..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrator.php +++ /dev/null @@ -1,51 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use PHPUnit\Runner\Version; -use PHPUnit\Util\Xml\Loader as XmlLoader; -use PHPUnit\Util\Xml\XmlException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Migrator -{ - /** - * @throws Exception - * @throws MigrationException - * @throws XmlException - */ - public function migrate(string $filename): string - { - $origin = (new SchemaDetector)->detect($filename); - - if (!$origin->detected()) { - throw new Exception('The file does not validate against any known schema'); - } - - if ($origin->version() === Version::series()) { - throw new Exception('The file does not need to be migrated'); - } - - $configurationDocument = (new XmlLoader)->loadFile($filename); - - foreach ((new MigrationBuilder)->build($origin->version()) as $migration) { - $migration->migrate($configurationDocument); - } - - $configurationDocument->formatOutput = true; - $configurationDocument->preserveWhiteSpace = false; - - return $configurationDocument->saveXML(); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/SnapshotNodeList.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/SnapshotNodeList.php deleted file mode 100644 index c87d0546..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/SnapshotNodeList.php +++ /dev/null @@ -1,53 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function count; -use ArrayIterator; -use Countable; -use DOMNode; -use DOMNodeList; -use IteratorAggregate; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @template-implements IteratorAggregate - */ -final class SnapshotNodeList implements Countable, IteratorAggregate -{ - /** - * @psalm-var list - */ - private array $nodes = []; - - public static function fromNodeList(DOMNodeList $list): self - { - $snapshot = new self; - - foreach ($list as $node) { - $snapshot->nodes[] = $node; - } - - return $snapshot; - } - - public function count(): int - { - return count($this->nodes); - } - - public function getIterator(): ArrayIterator - { - return new ArrayIterator($this->nodes); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/PHPUnit.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/PHPUnit.php deleted file mode 100644 index ddae10a9..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/PHPUnit.php +++ /dev/null @@ -1,494 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @psalm-immutable - */ -final class PHPUnit -{ - private readonly ?string $cacheDirectory; - private readonly bool $cacheResult; - private readonly ?string $cacheResultFile; - private readonly int|string $columns; - private readonly string $colors; - private readonly bool $stderr; - private readonly bool $displayDetailsOnIncompleteTests; - private readonly bool $displayDetailsOnSkippedTests; - private readonly bool $displayDetailsOnTestsThatTriggerDeprecations; - private readonly bool $displayDetailsOnPhpunitDeprecations; - private readonly bool $displayDetailsOnTestsThatTriggerErrors; - private readonly bool $displayDetailsOnTestsThatTriggerNotices; - private readonly bool $displayDetailsOnTestsThatTriggerWarnings; - private readonly bool $reverseDefectList; - private readonly bool $requireCoverageMetadata; - private readonly ?string $bootstrap; - private readonly bool $processIsolation; - private readonly bool $failOnDeprecation; - private readonly bool $failOnPhpunitDeprecation; - private readonly bool $failOnEmptyTestSuite; - private readonly bool $failOnIncomplete; - private readonly bool $failOnNotice; - private readonly bool $failOnRisky; - private readonly bool $failOnSkipped; - private readonly bool $failOnWarning; - private readonly bool $stopOnDefect; - private readonly bool $stopOnDeprecation; - private readonly bool $stopOnError; - private readonly bool $stopOnFailure; - private readonly bool $stopOnIncomplete; - private readonly bool $stopOnNotice; - private readonly bool $stopOnRisky; - private readonly bool $stopOnSkipped; - private readonly bool $stopOnWarning; - - /** - * @psalm-var ?non-empty-string - */ - private readonly ?string $extensionsDirectory; - private readonly bool $beStrictAboutChangesToGlobalState; - private readonly bool $beStrictAboutOutputDuringTests; - private readonly bool $beStrictAboutTestsThatDoNotTestAnything; - private readonly bool $beStrictAboutCoverageMetadata; - private readonly bool $enforceTimeLimit; - private readonly int $defaultTimeLimit; - private readonly int $timeoutForSmallTests; - private readonly int $timeoutForMediumTests; - private readonly int $timeoutForLargeTests; - private readonly ?string $defaultTestSuite; - private readonly int $executionOrder; - private readonly bool $resolveDependencies; - private readonly bool $defectsFirst; - private readonly bool $backupGlobals; - private readonly bool $backupStaticProperties; - private readonly bool $registerMockObjectsFromTestArgumentsRecursively; - private readonly bool $testdoxPrinter; - private readonly bool $controlGarbageCollector; - private readonly int $numberOfTestsBeforeGarbageCollection; - - /** - * @psalm-param ?non-empty-string $extensionsDirectory - */ - public function __construct(?string $cacheDirectory, bool $cacheResult, ?string $cacheResultFile, int|string $columns, string $colors, bool $stderr, bool $displayDetailsOnIncompleteTests, bool $displayDetailsOnSkippedTests, bool $displayDetailsOnTestsThatTriggerDeprecations, bool $displayDetailsOnPhpunitDeprecations, bool $displayDetailsOnTestsThatTriggerErrors, bool $displayDetailsOnTestsThatTriggerNotices, bool $displayDetailsOnTestsThatTriggerWarnings, bool $reverseDefectList, bool $requireCoverageMetadata, ?string $bootstrap, bool $processIsolation, bool $failOnDeprecation, bool $failOnPhpunitDeprecation, bool $failOnEmptyTestSuite, bool $failOnIncomplete, bool $failOnNotice, bool $failOnRisky, bool $failOnSkipped, bool $failOnWarning, bool $stopOnDefect, bool $stopOnDeprecation, bool $stopOnError, bool $stopOnFailure, bool $stopOnIncomplete, bool $stopOnNotice, bool $stopOnRisky, bool $stopOnSkipped, bool $stopOnWarning, ?string $extensionsDirectory, bool $beStrictAboutChangesToGlobalState, bool $beStrictAboutOutputDuringTests, bool $beStrictAboutTestsThatDoNotTestAnything, bool $beStrictAboutCoverageMetadata, bool $enforceTimeLimit, int $defaultTimeLimit, int $timeoutForSmallTests, int $timeoutForMediumTests, int $timeoutForLargeTests, ?string $defaultTestSuite, int $executionOrder, bool $resolveDependencies, bool $defectsFirst, bool $backupGlobals, bool $backupStaticProperties, bool $registerMockObjectsFromTestArgumentsRecursively, bool $testdoxPrinter, bool $controlGarbageCollector, int $numberOfTestsBeforeGarbageCollection) - { - $this->cacheDirectory = $cacheDirectory; - $this->cacheResult = $cacheResult; - $this->cacheResultFile = $cacheResultFile; - $this->columns = $columns; - $this->colors = $colors; - $this->stderr = $stderr; - $this->displayDetailsOnIncompleteTests = $displayDetailsOnIncompleteTests; - $this->displayDetailsOnSkippedTests = $displayDetailsOnSkippedTests; - $this->displayDetailsOnTestsThatTriggerDeprecations = $displayDetailsOnTestsThatTriggerDeprecations; - $this->displayDetailsOnPhpunitDeprecations = $displayDetailsOnPhpunitDeprecations; - $this->displayDetailsOnTestsThatTriggerErrors = $displayDetailsOnTestsThatTriggerErrors; - $this->displayDetailsOnTestsThatTriggerNotices = $displayDetailsOnTestsThatTriggerNotices; - $this->displayDetailsOnTestsThatTriggerWarnings = $displayDetailsOnTestsThatTriggerWarnings; - $this->reverseDefectList = $reverseDefectList; - $this->requireCoverageMetadata = $requireCoverageMetadata; - $this->bootstrap = $bootstrap; - $this->processIsolation = $processIsolation; - $this->failOnDeprecation = $failOnDeprecation; - $this->failOnPhpunitDeprecation = $failOnPhpunitDeprecation; - $this->failOnEmptyTestSuite = $failOnEmptyTestSuite; - $this->failOnIncomplete = $failOnIncomplete; - $this->failOnNotice = $failOnNotice; - $this->failOnRisky = $failOnRisky; - $this->failOnSkipped = $failOnSkipped; - $this->failOnWarning = $failOnWarning; - $this->stopOnDefect = $stopOnDefect; - $this->stopOnDeprecation = $stopOnDeprecation; - $this->stopOnError = $stopOnError; - $this->stopOnFailure = $stopOnFailure; - $this->stopOnIncomplete = $stopOnIncomplete; - $this->stopOnNotice = $stopOnNotice; - $this->stopOnRisky = $stopOnRisky; - $this->stopOnSkipped = $stopOnSkipped; - $this->stopOnWarning = $stopOnWarning; - $this->extensionsDirectory = $extensionsDirectory; - $this->beStrictAboutChangesToGlobalState = $beStrictAboutChangesToGlobalState; - $this->beStrictAboutOutputDuringTests = $beStrictAboutOutputDuringTests; - $this->beStrictAboutTestsThatDoNotTestAnything = $beStrictAboutTestsThatDoNotTestAnything; - $this->beStrictAboutCoverageMetadata = $beStrictAboutCoverageMetadata; - $this->enforceTimeLimit = $enforceTimeLimit; - $this->defaultTimeLimit = $defaultTimeLimit; - $this->timeoutForSmallTests = $timeoutForSmallTests; - $this->timeoutForMediumTests = $timeoutForMediumTests; - $this->timeoutForLargeTests = $timeoutForLargeTests; - $this->defaultTestSuite = $defaultTestSuite; - $this->executionOrder = $executionOrder; - $this->resolveDependencies = $resolveDependencies; - $this->defectsFirst = $defectsFirst; - $this->backupGlobals = $backupGlobals; - $this->backupStaticProperties = $backupStaticProperties; - $this->registerMockObjectsFromTestArgumentsRecursively = $registerMockObjectsFromTestArgumentsRecursively; - $this->testdoxPrinter = $testdoxPrinter; - $this->controlGarbageCollector = $controlGarbageCollector; - $this->numberOfTestsBeforeGarbageCollection = $numberOfTestsBeforeGarbageCollection; - } - - /** - * @psalm-assert-if-true !null $this->cacheDirectory - */ - public function hasCacheDirectory(): bool - { - return $this->cacheDirectory !== null; - } - - /** - * @throws Exception - */ - public function cacheDirectory(): string - { - if (!$this->hasCacheDirectory()) { - throw new Exception('Cache directory is not configured'); - } - - return $this->cacheDirectory; - } - - public function cacheResult(): bool - { - return $this->cacheResult; - } - - /** - * @psalm-assert-if-true !null $this->cacheResultFile - * - * @deprecated - */ - public function hasCacheResultFile(): bool - { - return $this->cacheResultFile !== null; - } - - /** - * @throws Exception - * - * @deprecated - */ - public function cacheResultFile(): string - { - if (!$this->hasCacheResultFile()) { - throw new Exception('Cache result file is not configured'); - } - - return $this->cacheResultFile; - } - - public function columns(): int|string - { - return $this->columns; - } - - public function colors(): string - { - return $this->colors; - } - - public function stderr(): bool - { - return $this->stderr; - } - - public function displayDetailsOnIncompleteTests(): bool - { - return $this->displayDetailsOnIncompleteTests; - } - - public function displayDetailsOnSkippedTests(): bool - { - return $this->displayDetailsOnSkippedTests; - } - - public function displayDetailsOnTestsThatTriggerDeprecations(): bool - { - return $this->displayDetailsOnTestsThatTriggerDeprecations; - } - - public function displayDetailsOnPhpunitDeprecations(): bool - { - return $this->displayDetailsOnPhpunitDeprecations; - } - - public function displayDetailsOnTestsThatTriggerErrors(): bool - { - return $this->displayDetailsOnTestsThatTriggerErrors; - } - - public function displayDetailsOnTestsThatTriggerNotices(): bool - { - return $this->displayDetailsOnTestsThatTriggerNotices; - } - - public function displayDetailsOnTestsThatTriggerWarnings(): bool - { - return $this->displayDetailsOnTestsThatTriggerWarnings; - } - - public function reverseDefectList(): bool - { - return $this->reverseDefectList; - } - - public function requireCoverageMetadata(): bool - { - return $this->requireCoverageMetadata; - } - - /** - * @psalm-assert-if-true !null $this->bootstrap - */ - public function hasBootstrap(): bool - { - return $this->bootstrap !== null; - } - - /** - * @throws Exception - */ - public function bootstrap(): string - { - if (!$this->hasBootstrap()) { - throw new Exception('Bootstrap script is not configured'); - } - - return $this->bootstrap; - } - - public function processIsolation(): bool - { - return $this->processIsolation; - } - - public function failOnDeprecation(): bool - { - return $this->failOnDeprecation; - } - - public function failOnPhpunitDeprecation(): bool - { - return $this->failOnPhpunitDeprecation; - } - - public function failOnEmptyTestSuite(): bool - { - return $this->failOnEmptyTestSuite; - } - - public function failOnIncomplete(): bool - { - return $this->failOnIncomplete; - } - - public function failOnNotice(): bool - { - return $this->failOnNotice; - } - - public function failOnRisky(): bool - { - return $this->failOnRisky; - } - - public function failOnSkipped(): bool - { - return $this->failOnSkipped; - } - - public function failOnWarning(): bool - { - return $this->failOnWarning; - } - - public function stopOnDefect(): bool - { - return $this->stopOnDefect; - } - - public function stopOnDeprecation(): bool - { - return $this->stopOnDeprecation; - } - - public function stopOnError(): bool - { - return $this->stopOnError; - } - - public function stopOnFailure(): bool - { - return $this->stopOnFailure; - } - - public function stopOnIncomplete(): bool - { - return $this->stopOnIncomplete; - } - - public function stopOnNotice(): bool - { - return $this->stopOnNotice; - } - - public function stopOnRisky(): bool - { - return $this->stopOnRisky; - } - - public function stopOnSkipped(): bool - { - return $this->stopOnSkipped; - } - - public function stopOnWarning(): bool - { - return $this->stopOnWarning; - } - - /** - * @psalm-assert-if-true !null $this->extensionsDirectory - */ - public function hasExtensionsDirectory(): bool - { - return $this->extensionsDirectory !== null; - } - - /** - * @psalm-return non-empty-string - * - * @throws Exception - */ - public function extensionsDirectory(): string - { - if (!$this->hasExtensionsDirectory()) { - throw new Exception('Extensions directory is not configured'); - } - - return $this->extensionsDirectory; - } - - public function beStrictAboutChangesToGlobalState(): bool - { - return $this->beStrictAboutChangesToGlobalState; - } - - public function beStrictAboutOutputDuringTests(): bool - { - return $this->beStrictAboutOutputDuringTests; - } - - public function beStrictAboutTestsThatDoNotTestAnything(): bool - { - return $this->beStrictAboutTestsThatDoNotTestAnything; - } - - public function beStrictAboutCoverageMetadata(): bool - { - return $this->beStrictAboutCoverageMetadata; - } - - public function enforceTimeLimit(): bool - { - return $this->enforceTimeLimit; - } - - public function defaultTimeLimit(): int - { - return $this->defaultTimeLimit; - } - - public function timeoutForSmallTests(): int - { - return $this->timeoutForSmallTests; - } - - public function timeoutForMediumTests(): int - { - return $this->timeoutForMediumTests; - } - - public function timeoutForLargeTests(): int - { - return $this->timeoutForLargeTests; - } - - /** - * @psalm-assert-if-true !null $this->defaultTestSuite - */ - public function hasDefaultTestSuite(): bool - { - return $this->defaultTestSuite !== null; - } - - /** - * @throws Exception - */ - public function defaultTestSuite(): string - { - if (!$this->hasDefaultTestSuite()) { - throw new Exception('Default test suite is not configured'); - } - - return $this->defaultTestSuite; - } - - public function executionOrder(): int - { - return $this->executionOrder; - } - - public function resolveDependencies(): bool - { - return $this->resolveDependencies; - } - - public function defectsFirst(): bool - { - return $this->defectsFirst; - } - - public function backupGlobals(): bool - { - return $this->backupGlobals; - } - - public function backupStaticProperties(): bool - { - return $this->backupStaticProperties; - } - - /** - * @deprecated - */ - public function registerMockObjectsFromTestArgumentsRecursively(): bool - { - return $this->registerMockObjectsFromTestArgumentsRecursively; - } - - public function testdoxPrinter(): bool - { - return $this->testdoxPrinter; - } - - public function controlGarbageCollector(): bool - { - return $this->controlGarbageCollector; - } - - public function numberOfTestsBeforeGarbageCollection(): int - { - return $this->numberOfTestsBeforeGarbageCollection; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/FailedSchemaDetectionResult.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/FailedSchemaDetectionResult.php deleted file mode 100644 index ef413ca0..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/FailedSchemaDetectionResult.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @psalm-immutable - */ -final class FailedSchemaDetectionResult extends SchemaDetectionResult -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SchemaDetectionResult.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SchemaDetectionResult.php deleted file mode 100644 index 7f036f9f..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SchemaDetectionResult.php +++ /dev/null @@ -1,38 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use PHPUnit\Util\Xml\XmlException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @psalm-immutable - */ -abstract class SchemaDetectionResult -{ - /** - * @psalm-assert-if-true SuccessfulSchemaDetectionResult $this - */ - public function detected(): bool - { - return false; - } - - /** - * @throws XmlException - */ - public function version(): string - { - throw new XmlException('No supported schema was detected'); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SchemaDetector.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SchemaDetector.php deleted file mode 100644 index 9ad74c61..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SchemaDetector.php +++ /dev/null @@ -1,41 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use PHPUnit\Util\Xml\Loader; -use PHPUnit\Util\Xml\XmlException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class SchemaDetector -{ - /** - * @throws XmlException - */ - public function detect(string $filename): SchemaDetectionResult - { - $document = (new Loader)->loadFile($filename); - - $schemaFinder = new SchemaFinder; - - foreach ($schemaFinder->available() as $candidate) { - $schema = (new SchemaFinder)->find($candidate); - - if (!(new Validator)->validate($document, $schema)->hasValidationErrors()) { - return new SuccessfulSchemaDetectionResult($candidate); - } - } - - return new FailedSchemaDetectionResult; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SuccessfulSchemaDetectionResult.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SuccessfulSchemaDetectionResult.php deleted file mode 100644 index d7eabb11..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SuccessfulSchemaDetectionResult.php +++ /dev/null @@ -1,49 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @psalm-immutable - */ -final class SuccessfulSchemaDetectionResult extends SchemaDetectionResult -{ - /** - * @psalm-var non-empty-string - */ - private readonly string $version; - - /** - * @psalm-param non-empty-string $version - */ - public function __construct(string $version) - { - $this->version = $version; - } - - /** - * @psalm-assert-if-true SuccessfulSchemaDetectionResult $this - */ - public function detected(): bool - { - return true; - } - - /** - * @psalm-return non-empty-string - */ - public function version(): string - { - return $this->version; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaFinder.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaFinder.php deleted file mode 100644 index b86e8d80..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaFinder.php +++ /dev/null @@ -1,82 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use function defined; -use function is_file; -use function rsort; -use function sprintf; -use DirectoryIterator; -use PHPUnit\Runner\Version; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class SchemaFinder -{ - /** - * @psalm-return non-empty-list - */ - public function available(): array - { - $result = [Version::series()]; - - foreach ((new DirectoryIterator($this->path() . 'schema')) as $file) { - if ($file->isDot()) { - continue; - } - - $version = $file->getBasename('.xsd'); - - assert(!empty($version)); - - $result[] = $version; - } - - rsort($result); - - return $result; - } - - /** - * @throws CannotFindSchemaException - */ - public function find(string $version): string - { - if ($version === Version::series()) { - $filename = $this->path() . 'phpunit.xsd'; - } else { - $filename = $this->path() . 'schema/' . $version . '.xsd'; - } - - if (!is_file($filename)) { - throw new CannotFindSchemaException( - sprintf( - 'Schema for PHPUnit %s is not available', - $version, - ), - ); - } - - return $filename; - } - - private function path(): string - { - if (defined('__PHPUNIT_PHAR_ROOT__')) { - return __PHPUNIT_PHAR_ROOT__ . '/'; - } - - return __DIR__ . '/../../../../'; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/TestSuiteMapper.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/TestSuiteMapper.php deleted file mode 100644 index 7721ca4e..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/TestSuiteMapper.php +++ /dev/null @@ -1,117 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use const PHP_VERSION; -use function array_merge; -use function array_unique; -use function explode; -use function in_array; -use function is_dir; -use function is_file; -use function str_contains; -use function version_compare; -use PHPUnit\Framework\Exception as FrameworkException; -use PHPUnit\Framework\TestSuite as TestSuiteObject; -use PHPUnit\TextUI\Configuration\TestSuiteCollection; -use PHPUnit\TextUI\RuntimeException; -use PHPUnit\TextUI\TestDirectoryNotFoundException; -use PHPUnit\TextUI\TestFileNotFoundException; -use SebastianBergmann\FileIterator\Facade; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestSuiteMapper -{ - /** - * @psalm-param non-empty-string $xmlConfigurationFile, - * - * @throws RuntimeException - * @throws TestDirectoryNotFoundException - * @throws TestFileNotFoundException - */ - public function map(string $xmlConfigurationFile, TestSuiteCollection $configuration, string $filter, string $excludedTestSuites): TestSuiteObject - { - try { - $filterAsArray = $filter ? explode(',', $filter) : []; - $excludedFilterAsArray = $excludedTestSuites ? explode(',', $excludedTestSuites) : []; - $result = TestSuiteObject::empty($xmlConfigurationFile); - - foreach ($configuration as $testSuiteConfiguration) { - if (!empty($filterAsArray) && !in_array($testSuiteConfiguration->name(), $filterAsArray, true)) { - continue; - } - - if (!empty($excludedFilterAsArray) && in_array($testSuiteConfiguration->name(), $excludedFilterAsArray, true)) { - continue; - } - - $exclude = []; - - foreach ($testSuiteConfiguration->exclude()->asArray() as $file) { - $exclude[] = $file->path(); - } - - $files = []; - - foreach ($testSuiteConfiguration->directories() as $directory) { - if (!str_contains($directory->path(), '*') && !is_dir($directory->path())) { - throw new TestDirectoryNotFoundException($directory->path()); - } - - if (!version_compare(PHP_VERSION, $directory->phpVersion(), $directory->phpVersionOperator()->asString())) { - continue; - } - - $files = array_merge( - $files, - (new Facade)->getFilesAsArray( - $directory->path(), - $directory->suffix(), - $directory->prefix(), - $exclude, - ), - ); - } - - foreach ($testSuiteConfiguration->files() as $file) { - if (!is_file($file->path())) { - throw new TestFileNotFoundException($file->path()); - } - - if (!version_compare(PHP_VERSION, $file->phpVersion(), $file->phpVersionOperator()->asString())) { - continue; - } - - $files[] = $file->path(); - } - - if (!empty($files)) { - $testSuite = TestSuiteObject::empty($testSuiteConfiguration->name()); - - $testSuite->addTestFiles(array_unique($files)); - - $result->addTest($testSuite); - } - } - - return $result; - } catch (FrameworkException $e) { - throw new RuntimeException( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Validator/ValidationResult.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Validator/ValidationResult.php deleted file mode 100644 index d62a38b9..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Validator/ValidationResult.php +++ /dev/null @@ -1,73 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use const PHP_EOL; -use function sprintf; -use function trim; -use LibXMLError; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @psalm-immutable - */ -final class ValidationResult -{ - /** - * @psalm-var array> - */ - private readonly array $validationErrors; - - /** - * @psalm-param array $errors - */ - public static function fromArray(array $errors): self - { - $validationErrors = []; - - foreach ($errors as $error) { - if (!isset($validationErrors[$error->line])) { - $validationErrors[$error->line] = []; - } - - $validationErrors[$error->line][] = trim($error->message); - } - - return new self($validationErrors); - } - - private function __construct(array $validationErrors) - { - $this->validationErrors = $validationErrors; - } - - public function hasValidationErrors(): bool - { - return !empty($this->validationErrors); - } - - public function asString(): string - { - $buffer = ''; - - foreach ($this->validationErrors as $line => $validationErrorsOnLine) { - $buffer .= sprintf(PHP_EOL . ' Line %d:' . PHP_EOL, $line); - - foreach ($validationErrorsOnLine as $validationError) { - $buffer .= sprintf(' - %s' . PHP_EOL, $validationError); - } - } - - return $buffer; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Validator/Validator.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Validator/Validator.php deleted file mode 100644 index 7f7889e0..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Validator/Validator.php +++ /dev/null @@ -1,37 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function file_get_contents; -use function libxml_clear_errors; -use function libxml_get_errors; -use function libxml_use_internal_errors; -use DOMDocument; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Validator -{ - public function validate(DOMDocument $document, string $xsdFilename): ValidationResult - { - $originalErrorHandling = libxml_use_internal_errors(true); - - $document->schemaValidateSource(file_get_contents($xsdFilename)); - - $errors = libxml_get_errors(); - libxml_clear_errors(); - libxml_use_internal_errors($originalErrorHandling); - - return ValidationResult::fromArray($errors); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Exception/Exception.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Exception/Exception.php deleted file mode 100644 index 6b370ca0..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Exception/Exception.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI; - -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This interface is not covered by the backward compatibility promise for PHPUnit - */ -interface Exception extends Throwable -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Exception/InvalidSocketException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Exception/InvalidSocketException.php deleted file mode 100644 index 441afd2a..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Exception/InvalidSocketException.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI; - -use function sprintf; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class InvalidSocketException extends RuntimeException implements Exception -{ - public function __construct(string $socket) - { - parent::__construct( - sprintf( - '"%s" does not match "socket://hostname:port" format', - $socket, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Exception/RuntimeException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Exception/RuntimeException.php deleted file mode 100644 index 875a0487..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Exception/RuntimeException.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class RuntimeException extends \RuntimeException implements Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Exception/TestDirectoryNotFoundException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Exception/TestDirectoryNotFoundException.php deleted file mode 100644 index 9b35390c..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Exception/TestDirectoryNotFoundException.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI; - -use function sprintf; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestDirectoryNotFoundException extends RuntimeException implements Exception -{ - public function __construct(string $path) - { - parent::__construct( - sprintf( - 'Test directory "%s" not found', - $path, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Exception/TestFileNotFoundException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Exception/TestFileNotFoundException.php deleted file mode 100644 index 46c9df80..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Exception/TestFileNotFoundException.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI; - -use function sprintf; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestFileNotFoundException extends RuntimeException implements Exception -{ - public function __construct(string $path) - { - parent::__construct( - sprintf( - 'Test file "%s" not found', - $path, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Help.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Help.php deleted file mode 100644 index 4e2b6afa..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Help.php +++ /dev/null @@ -1,303 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI; - -use const PHP_EOL; -use function count; -use function defined; -use function explode; -use function max; -use function preg_replace_callback; -use function str_pad; -use function str_repeat; -use function strlen; -use function wordwrap; -use PHPUnit\Util\Color; -use SebastianBergmann\Environment\Console; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Help -{ - private const LEFT_MARGIN = ' '; - private int $lengthOfLongestOptionName = 0; - private readonly int $columnsAvailableForDescription; - private ?bool $hasColor; - - public function __construct(?int $width = null, ?bool $withColor = null) - { - if ($width === null) { - $width = (new Console)->getNumberOfColumns(); - } - - if ($withColor === null) { - $this->hasColor = (new Console)->hasColorSupport(); - } else { - $this->hasColor = $withColor; - } - - foreach ($this->elements() as $options) { - foreach ($options as $option) { - if (isset($option['arg'])) { - $this->lengthOfLongestOptionName = max($this->lengthOfLongestOptionName, strlen($option['arg'])); - } - } - } - - $this->columnsAvailableForDescription = $width - $this->lengthOfLongestOptionName - 4; - } - - public function generate(): string - { - if ($this->hasColor) { - return $this->writeWithColor(); - } - - return $this->writeWithoutColor(); - } - - private function writeWithoutColor(): string - { - $buffer = ''; - - foreach ($this->elements() as $section => $options) { - $buffer .= "{$section}:" . PHP_EOL; - - if ($section !== 'Usage') { - $buffer .= PHP_EOL; - } - - foreach ($options as $option) { - if (isset($option['spacer'])) { - $buffer .= PHP_EOL; - } - - if (isset($option['text'])) { - $buffer .= self::LEFT_MARGIN . $option['text'] . PHP_EOL; - } - - if (isset($option['arg'])) { - $arg = str_pad($option['arg'], $this->lengthOfLongestOptionName); - - $buffer .= self::LEFT_MARGIN . $arg . ' ' . $option['desc'] . PHP_EOL; - } - } - - $buffer .= PHP_EOL; - } - - return $buffer; - } - - private function writeWithColor(): string - { - $buffer = ''; - - foreach ($this->elements() as $section => $options) { - $buffer .= Color::colorize('fg-yellow', "{$section}:") . PHP_EOL; - - if ($section !== 'Usage') { - $buffer .= PHP_EOL; - } - - foreach ($options as $option) { - if (isset($option['spacer'])) { - $buffer .= PHP_EOL; - } - - if (isset($option['text'])) { - $buffer .= self::LEFT_MARGIN . $option['text'] . PHP_EOL; - } - - if (isset($option['arg'])) { - $arg = Color::colorize('fg-green', str_pad($option['arg'], $this->lengthOfLongestOptionName)); - $arg = preg_replace_callback( - '/(<[^>]+>)/', - static fn ($matches) => Color::colorize('fg-cyan', $matches[0]), - $arg, - ); - - $desc = explode(PHP_EOL, wordwrap($option['desc'], $this->columnsAvailableForDescription, PHP_EOL)); - - $buffer .= self::LEFT_MARGIN . $arg . ' ' . $desc[0] . PHP_EOL; - - for ($i = 1; $i < count($desc); $i++) { - $buffer .= str_repeat(' ', $this->lengthOfLongestOptionName + 3) . $desc[$i] . PHP_EOL; - } - } - } - - $buffer .= PHP_EOL; - } - - return $buffer; - } - - /** - * @psalm-return array> - */ - private function elements(): array - { - $elements = [ - 'Usage' => [ - ['text' => 'phpunit [options] ...'], - ], - - 'Configuration' => [ - ['arg' => '--bootstrap ', 'desc' => 'A PHP script that is included before the tests run'], - ['arg' => '-c|--configuration ', 'desc' => 'Read configuration from XML file'], - ['arg' => '--no-configuration', 'desc' => 'Ignore default configuration file (phpunit.xml)'], - ['arg' => '--no-extensions', 'desc' => 'Do not load PHPUnit extensions'], - ['arg' => '--include-path ', 'desc' => 'Prepend PHP\'s include_path with given path(s)'], - ['arg' => '-d ', 'desc' => 'Sets a php.ini value'], - ['arg' => '--cache-directory ', 'desc' => 'Specify cache directory'], - ['arg' => '--generate-configuration', 'desc' => 'Generate configuration file with suggested settings'], - ['arg' => '--migrate-configuration', 'desc' => 'Migrate configuration file to current format'], - ['arg' => '--generate-baseline ', 'desc' => 'Generate baseline for issues'], - ['arg' => '--use-baseline ', 'desc' => 'Use baseline to ignore issues'], - ['arg' => '--ignore-baseline', 'desc' => 'Do not use baseline to ignore issues'], - ], - - 'Selection' => [ - ['arg' => '--list-suites', 'desc' => 'List available test suites'], - ['arg' => '--testsuite ', 'desc' => 'Only run tests from the specified test suite(s)'], - ['arg' => '--exclude-testsuite ', 'desc' => 'Exclude tests from the specified test suite(s)'], - ['arg' => '--list-groups', 'desc' => 'List available test groups'], - ['arg' => '--group ', 'desc' => 'Only run tests from the specified group(s)'], - ['arg' => '--exclude-group ', 'desc' => 'Exclude tests from the specified group(s)'], - ['arg' => '--covers ', 'desc' => 'Only run tests that intend to cover '], - ['arg' => '--uses ', 'desc' => 'Only run tests that intend to use '], - ['arg' => '--list-tests', 'desc' => 'List available tests'], - ['arg' => '--list-tests-xml ', 'desc' => 'List available tests in XML format'], - ['arg' => '--filter ', 'desc' => 'Filter which tests to run'], - ['arg' => '--test-suffix ', 'desc' => 'Only search for test in files with specified suffix(es). Default: Test.php,.phpt'], - ], - - 'Execution' => [ - ['arg' => '--process-isolation', 'desc' => 'Run each test in a separate PHP process'], - ['arg' => '--globals-backup', 'desc' => 'Backup and restore $GLOBALS for each test'], - ['arg' => '--static-backup', 'desc' => 'Backup and restore static properties for each test'], - ['spacer' => ''], - - ['arg' => '--strict-coverage', 'desc' => 'Be strict about code coverage metadata'], - ['arg' => '--strict-global-state', 'desc' => 'Be strict about changes to global state'], - ['arg' => '--disallow-test-output', 'desc' => 'Be strict about output during tests'], - ['arg' => '--enforce-time-limit', 'desc' => 'Enforce time limit based on test size'], - ['arg' => '--default-time-limit ', 'desc' => 'Timeout in seconds for tests that have no declared size'], - ['arg' => '--dont-report-useless-tests', 'desc' => 'Do not report tests that do not test anything'], - ['spacer' => ''], - - ['arg' => '--stop-on-defect', 'desc' => 'Stop after first error, failure, warning, or risky test'], - ['arg' => '--stop-on-error', 'desc' => 'Stop after first error'], - ['arg' => '--stop-on-failure', 'desc' => 'Stop after first failure'], - ['arg' => '--stop-on-warning', 'desc' => 'Stop after first warning'], - ['arg' => '--stop-on-risky', 'desc' => 'Stop after first risky test'], - ['arg' => '--stop-on-deprecation', 'desc' => 'Stop after first test that triggered a deprecation'], - ['arg' => '--stop-on-notice', 'desc' => 'Stop after first test that triggered a notice'], - ['arg' => '--stop-on-skipped', 'desc' => 'Stop after first skipped test'], - ['arg' => '--stop-on-incomplete', 'desc' => 'Stop after first incomplete test'], - ['spacer' => ''], - - ['arg' => '--fail-on-empty-test-suite', 'desc' => 'Signal failure using shell exit code when no tests were run'], - ['arg' => '--fail-on-warning', 'desc' => 'Signal failure using shell exit code when a warning was triggered'], - ['arg' => '--fail-on-risky', 'desc' => 'Signal failure using shell exit code when a test was considered risky'], - ['arg' => '--fail-on-deprecation', 'desc' => 'Signal failure using shell exit code when a deprecation was triggered'], - ['arg' => '--fail-on-phpunit-deprecation', 'desc' => 'Signal failure using shell exit code when a PHPUnit deprecation was triggered'], - ['arg' => '--fail-on-notice', 'desc' => 'Signal failure using shell exit code when a notice was triggered'], - ['arg' => '--fail-on-skipped', 'desc' => 'Signal failure using shell exit code when a test was skipped'], - ['arg' => '--fail-on-incomplete', 'desc' => 'Signal failure using shell exit code when a test was marked incomplete'], - ['spacer' => ''], - - ['arg' => '--cache-result', 'desc' => 'Write test results to cache file'], - ['arg' => '--do-not-cache-result', 'desc' => 'Do not write test results to cache file'], - ['spacer' => ''], - - ['arg' => '--order-by ', 'desc' => 'Run tests in order: default|defects|depends|duration|no-depends|random|reverse|size'], - ['arg' => '--random-order-seed ', 'desc' => 'Use the specified random seed when running tests in random order'], - ], - - 'Reporting' => [ - ['arg' => '--colors ', 'desc' => 'Use colors in output ("never", "auto" or "always")'], - ['arg' => '--columns ', 'desc' => 'Number of columns to use for progress output'], - ['arg' => '--columns max', 'desc' => 'Use maximum number of columns for progress output'], - ['arg' => '--stderr', 'desc' => 'Write to STDERR instead of STDOUT'], - ['spacer' => ''], - - ['arg' => '--no-progress', 'desc' => 'Disable output of test execution progress'], - ['arg' => '--no-results', 'desc' => 'Disable output of test results'], - ['arg' => '--no-output', 'desc' => 'Disable all output'], - ['spacer' => ''], - - ['arg' => '--display-incomplete', 'desc' => 'Display details for incomplete tests'], - ['arg' => '--display-skipped', 'desc' => 'Display details for skipped tests'], - ['arg' => '--display-deprecations', 'desc' => 'Display details for deprecations triggered by tests'], - ['arg' => '--display-phpunit-deprecations', 'desc' => 'Display details for PHPUnit deprecations'], - ['arg' => '--display-errors', 'desc' => 'Display details for errors triggered by tests'], - ['arg' => '--display-notices', 'desc' => 'Display details for notices triggered by tests'], - ['arg' => '--display-warnings', 'desc' => 'Display details for warnings triggered by tests'], - ['arg' => '--reverse-list', 'desc' => 'Print defects in reverse order'], - ['spacer' => ''], - - ['arg' => '--teamcity', 'desc' => 'Replace default progress and result output with TeamCity format'], - ['arg' => '--testdox', 'desc' => 'Replace default result output with TestDox format'], - ['spacer' => ''], - - ['arg' => '--debug', 'desc' => 'Replace default progress and result output with debugging information'], - ], - - 'Logging' => [ - ['arg' => '--log-junit ', 'desc' => 'Write test results in JUnit XML format to file'], - ['arg' => '--log-teamcity ', 'desc' => 'Write test results in TeamCity format to file'], - ['arg' => '--testdox-html ', 'desc' => 'Write test results in TestDox format (HTML) to file'], - ['arg' => '--testdox-text ', 'desc' => 'Write test results in TestDox format (plain text) to file'], - ['arg' => '--log-events-text ', 'desc' => 'Stream events as plain text to file'], - ['arg' => '--log-events-verbose-text ', 'desc' => 'Stream events as plain text with extended information to file'], - ['arg' => '--no-logging', 'desc' => 'Ignore logging configured in the XML configuration file'], - ], - - 'Code Coverage' => [ - ['arg' => '--coverage-clover ', 'desc' => 'Write code coverage report in Clover XML format to file'], - ['arg' => '--coverage-cobertura ', 'desc' => 'Write code coverage report in Cobertura XML format to file'], - ['arg' => '--coverage-crap4j ', 'desc' => 'Write code coverage report in Crap4J XML format to file'], - ['arg' => '--coverage-html ', 'desc' => 'Write code coverage report in HTML format to directory'], - ['arg' => '--coverage-php ', 'desc' => 'Write serialized code coverage data to file'], - ['arg' => '--coverage-text=', 'desc' => 'Write code coverage report in text format to file [default: standard output]'], - ['arg' => '--only-summary-for-coverage-text', 'desc' => 'Option for code coverage report in text format: only show summary'], - ['arg' => '--show-uncovered-for-coverage-text', 'desc' => 'Option for code coverage report in text format: show uncovered files'], - ['arg' => '--coverage-xml ', 'desc' => 'Write code coverage report in XML format to directory'], - ['arg' => '--warm-coverage-cache', 'desc' => 'Warm static analysis cache'], - ['arg' => '--coverage-filter ', 'desc' => 'Include in code coverage reporting'], - ['arg' => '--path-coverage', 'desc' => 'Report path coverage in addition to line coverage'], - ['arg' => '--disable-coverage-ignore', 'desc' => 'Disable metadata for ignoring code coverage'], - ['arg' => '--no-coverage', 'desc' => 'Ignore code coverage reporting configured in the XML configuration file'], - ], - ]; - - if (defined('__PHPUNIT_PHAR__')) { - $elements['PHAR'] = [ - ['arg' => '--manifest', 'desc' => 'Print Software Bill of Materials (SBOM) in plain-text format'], - ['arg' => '--sbom', 'desc' => 'Print Software Bill of Materials (SBOM) in CycloneDX XML format'], - ['arg' => '--composer-lock', 'desc' => 'Print composer.lock file used to build the PHAR'], - ]; - } - - $elements['Miscellaneous'] = [ - ['arg' => '-h|--help', 'desc' => 'Prints this usage information'], - ['arg' => '--version', 'desc' => 'Prints the version and exits'], - ['arg' => '--atleast-version ', 'desc' => 'Checks that version is greater than and exits'], - ['arg' => '--check-version', 'desc' => 'Checks whether PHPUnit is the latest version and exits'], - ]; - - return $elements; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/ProgressPrinter.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/ProgressPrinter.php deleted file mode 100644 index ec8d3b6c..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/ProgressPrinter.php +++ /dev/null @@ -1,402 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use function floor; -use function sprintf; -use function str_contains; -use function str_repeat; -use function strlen; -use PHPUnit\Event\EventFacadeIsSealedException; -use PHPUnit\Event\Facade; -use PHPUnit\Event\Test\DeprecationTriggered; -use PHPUnit\Event\Test\Errored; -use PHPUnit\Event\Test\ErrorTriggered; -use PHPUnit\Event\Test\NoticeTriggered; -use PHPUnit\Event\Test\PhpDeprecationTriggered; -use PHPUnit\Event\Test\PhpNoticeTriggered; -use PHPUnit\Event\Test\PhpWarningTriggered; -use PHPUnit\Event\Test\WarningTriggered; -use PHPUnit\Event\TestRunner\ExecutionStarted; -use PHPUnit\Event\UnknownSubscriberTypeException; -use PHPUnit\Framework\TestStatus\TestStatus; -use PHPUnit\TextUI\Configuration\Source; -use PHPUnit\TextUI\Configuration\SourceFilter; -use PHPUnit\TextUI\Output\Printer; -use PHPUnit\Util\Color; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ProgressPrinter -{ - private readonly Printer $printer; - private readonly bool $colors; - private readonly int $numberOfColumns; - private readonly Source $source; - private int $column = 0; - private int $numberOfTests = 0; - private int $numberOfTestsWidth = 0; - private int $maxColumn = 0; - private int $numberOfTestsRun = 0; - private ?TestStatus $status = null; - private bool $prepared = false; - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - public function __construct(Printer $printer, Facade $facade, bool $colors, int $numberOfColumns, Source $source) - { - $this->printer = $printer; - $this->colors = $colors; - $this->numberOfColumns = $numberOfColumns; - $this->source = $source; - - $this->registerSubscribers($facade); - } - - public function testRunnerExecutionStarted(ExecutionStarted $event): void - { - $this->numberOfTestsRun = 0; - $this->numberOfTests = $event->testSuite()->count(); - $this->numberOfTestsWidth = strlen((string) $this->numberOfTests); - $this->column = 0; - $this->maxColumn = $this->numberOfColumns - strlen(' / (XXX%)') - (2 * $this->numberOfTestsWidth); - } - - public function beforeTestClassMethodErrored(): void - { - $this->printProgressForError(); - $this->updateTestStatus(TestStatus::error()); - } - - public function testPrepared(): void - { - $this->prepared = true; - } - - public function testSkipped(): void - { - if (!$this->prepared) { - $this->printProgressForSkipped(); - } else { - $this->updateTestStatus(TestStatus::skipped()); - } - } - - public function testMarkedIncomplete(): void - { - $this->updateTestStatus(TestStatus::incomplete()); - } - - public function testTriggeredNotice(NoticeTriggered $event): void - { - if ($event->ignoredByBaseline()) { - return; - } - - if ($this->source->restrictNotices() && - !(new SourceFilter)->includes($this->source, $event->file())) { - return; - } - - if (!$this->source->ignoreSuppressionOfNotices() && $event->wasSuppressed()) { - return; - } - - $this->updateTestStatus(TestStatus::notice()); - } - - public function testTriggeredPhpNotice(PhpNoticeTriggered $event): void - { - if ($event->ignoredByBaseline()) { - return; - } - - if ($this->source->restrictNotices() && - !(new SourceFilter)->includes($this->source, $event->file())) { - return; - } - - if (!$this->source->ignoreSuppressionOfPhpNotices() && $event->wasSuppressed()) { - return; - } - - $this->updateTestStatus(TestStatus::notice()); - } - - public function testTriggeredDeprecation(DeprecationTriggered $event): void - { - if ($event->ignoredByBaseline() || $event->ignoredByTest()) { - return; - } - - if ($this->source->restrictDeprecations() && - !(new SourceFilter)->includes($this->source, $event->file())) { - return; - } - - if (!$this->source->ignoreSuppressionOfDeprecations() && $event->wasSuppressed()) { - return; - } - - $this->updateTestStatus(TestStatus::deprecation()); - } - - public function testTriggeredPhpDeprecation(PhpDeprecationTriggered $event): void - { - if ($event->ignoredByBaseline() || $event->ignoredByTest()) { - return; - } - - if ($this->source->restrictDeprecations() && - !(new SourceFilter)->includes($this->source, $event->file())) { - return; - } - - if (!$this->source->ignoreSuppressionOfPhpDeprecations() && $event->wasSuppressed()) { - return; - } - - $this->updateTestStatus(TestStatus::deprecation()); - } - - public function testTriggeredPhpunitDeprecation(): void - { - $this->updateTestStatus(TestStatus::deprecation()); - } - - public function testConsideredRisky(): void - { - $this->updateTestStatus(TestStatus::risky()); - } - - public function testTriggeredWarning(WarningTriggered $event): void - { - if ($event->ignoredByBaseline()) { - return; - } - - if ($this->source->restrictWarnings() && - !(new SourceFilter)->includes($this->source, $event->file())) { - return; - } - - if (!$this->source->ignoreSuppressionOfWarnings() && $event->wasSuppressed()) { - return; - } - - $this->updateTestStatus(TestStatus::warning()); - } - - public function testTriggeredPhpWarning(PhpWarningTriggered $event): void - { - if ($event->ignoredByBaseline()) { - return; - } - - if ($this->source->restrictWarnings() && - !(new SourceFilter)->includes($this->source, $event->file())) { - return; - } - - if (!$this->source->ignoreSuppressionOfPhpWarnings() && $event->wasSuppressed()) { - return; - } - - $this->updateTestStatus(TestStatus::warning()); - } - - public function testTriggeredPhpunitWarning(): void - { - $this->updateTestStatus(TestStatus::warning()); - } - - public function testTriggeredError(ErrorTriggered $event): void - { - if (!$this->source->ignoreSuppressionOfErrors() && $event->wasSuppressed()) { - return; - } - - $this->updateTestStatus(TestStatus::error()); - } - - public function testFailed(): void - { - $this->updateTestStatus(TestStatus::failure()); - } - - public function testErrored(Errored $event): void - { - /* - * @todo Eliminate this special case - */ - if (str_contains($event->asString(), 'Test was run in child process and ended unexpectedly')) { - $this->updateTestStatus(TestStatus::error()); - - return; - } - - if (!$this->prepared) { - $this->printProgressForError(); - } else { - $this->updateTestStatus(TestStatus::error()); - } - } - - public function testFinished(): void - { - if ($this->status === null) { - $this->printProgressForSuccess(); - } elseif ($this->status->isSkipped()) { - $this->printProgressForSkipped(); - } elseif ($this->status->isIncomplete()) { - $this->printProgressForIncomplete(); - } elseif ($this->status->isRisky()) { - $this->printProgressForRisky(); - } elseif ($this->status->isNotice()) { - $this->printProgressForNotice(); - } elseif ($this->status->isDeprecation()) { - $this->printProgressForDeprecation(); - } elseif ($this->status->isWarning()) { - $this->printProgressForWarning(); - } elseif ($this->status->isFailure()) { - $this->printProgressForFailure(); - } else { - $this->printProgressForError(); - } - - $this->status = null; - $this->prepared = false; - } - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - private function registerSubscribers(Facade $facade): void - { - $facade->registerSubscribers( - new BeforeTestClassMethodErroredSubscriber($this), - new TestConsideredRiskySubscriber($this), - new TestErroredSubscriber($this), - new TestFailedSubscriber($this), - new TestFinishedSubscriber($this), - new TestMarkedIncompleteSubscriber($this), - new TestPreparedSubscriber($this), - new TestRunnerExecutionStartedSubscriber($this), - new TestSkippedSubscriber($this), - new TestTriggeredDeprecationSubscriber($this), - new TestTriggeredNoticeSubscriber($this), - new TestTriggeredPhpDeprecationSubscriber($this), - new TestTriggeredPhpNoticeSubscriber($this), - new TestTriggeredPhpunitDeprecationSubscriber($this), - new TestTriggeredPhpunitWarningSubscriber($this), - new TestTriggeredPhpWarningSubscriber($this), - new TestTriggeredWarningSubscriber($this), - ); - } - - private function updateTestStatus(TestStatus $status): void - { - if ($this->status !== null && - $this->status->isMoreImportantThan($status)) { - return; - } - - $this->status = $status; - } - - private function printProgressForSuccess(): void - { - $this->printProgress('.'); - } - - private function printProgressForSkipped(): void - { - $this->printProgressWithColor('fg-cyan, bold', 'S'); - } - - private function printProgressForIncomplete(): void - { - $this->printProgressWithColor('fg-yellow, bold', 'I'); - } - - private function printProgressForNotice(): void - { - $this->printProgressWithColor('fg-yellow, bold', 'N'); - } - - private function printProgressForDeprecation(): void - { - $this->printProgressWithColor('fg-yellow, bold', 'D'); - } - - private function printProgressForRisky(): void - { - $this->printProgressWithColor('fg-yellow, bold', 'R'); - } - - private function printProgressForWarning(): void - { - $this->printProgressWithColor('fg-yellow, bold', 'W'); - } - - private function printProgressForFailure(): void - { - $this->printProgressWithColor('bg-red, fg-white', 'F'); - } - - private function printProgressForError(): void - { - $this->printProgressWithColor('fg-red, bold', 'E'); - } - - private function printProgressWithColor(string $color, string $progress): void - { - if ($this->colors) { - $progress = Color::colorizeTextBox($color, $progress); - } - - $this->printProgress($progress); - } - - private function printProgress(string $progress): void - { - $this->printer->print($progress); - - $this->column++; - $this->numberOfTestsRun++; - - if ($this->column === $this->maxColumn || $this->numberOfTestsRun === $this->numberOfTests) { - if ($this->numberOfTestsRun === $this->numberOfTests) { - $this->printer->print(str_repeat(' ', $this->maxColumn - $this->column)); - } - - $this->printer->print( - sprintf( - ' %' . $this->numberOfTestsWidth . 'd / %' . - $this->numberOfTestsWidth . 'd (%3s%%)', - $this->numberOfTestsRun, - $this->numberOfTests, - floor(($this->numberOfTestsRun / $this->numberOfTests) * 100), - ), - ); - - if ($this->column === $this->maxColumn) { - $this->column = 0; - $this->printer->print("\n"); - } - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/BeforeTestClassMethodErroredSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/BeforeTestClassMethodErroredSubscriber.php deleted file mode 100644 index 85e63159..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/BeforeTestClassMethodErroredSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\Test\BeforeFirstTestMethodErrored; -use PHPUnit\Event\Test\BeforeFirstTestMethodErroredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class BeforeTestClassMethodErroredSubscriber extends Subscriber implements BeforeFirstTestMethodErroredSubscriber -{ - public function notify(BeforeFirstTestMethodErrored $event): void - { - $this->printer()->beforeTestClassMethodErrored(); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/Subscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/Subscriber.php deleted file mode 100644 index f238ed22..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/Subscriber.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -abstract class Subscriber -{ - private readonly ProgressPrinter $printer; - - public function __construct(ProgressPrinter $printer) - { - $this->printer = $printer; - } - - protected function printer(): ProgressPrinter - { - return $this->printer; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestConsideredRiskySubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestConsideredRiskySubscriber.php deleted file mode 100644 index f72056de..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestConsideredRiskySubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\Test\ConsideredRisky; -use PHPUnit\Event\Test\ConsideredRiskySubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestConsideredRiskySubscriber extends Subscriber implements ConsideredRiskySubscriber -{ - public function notify(ConsideredRisky $event): void - { - $this->printer()->testConsideredRisky(); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestErroredSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestErroredSubscriber.php deleted file mode 100644 index 2c07b789..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestErroredSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\Test\Errored; -use PHPUnit\Event\Test\ErroredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestErroredSubscriber extends Subscriber implements ErroredSubscriber -{ - public function notify(Errored $event): void - { - $this->printer()->testErrored($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestFailedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestFailedSubscriber.php deleted file mode 100644 index 27f33037..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestFailedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\Test\Failed; -use PHPUnit\Event\Test\FailedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestFailedSubscriber extends Subscriber implements FailedSubscriber -{ - public function notify(Failed $event): void - { - $this->printer()->testFailed(); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestFinishedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestFinishedSubscriber.php deleted file mode 100644 index fa4d95cb..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestFinishedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\Test\Finished; -use PHPUnit\Event\Test\FinishedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestFinishedSubscriber extends Subscriber implements FinishedSubscriber -{ - public function notify(Finished $event): void - { - $this->printer()->testFinished(); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestMarkedIncompleteSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestMarkedIncompleteSubscriber.php deleted file mode 100644 index 2be2d1f1..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestMarkedIncompleteSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\Test\MarkedIncomplete; -use PHPUnit\Event\Test\MarkedIncompleteSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestMarkedIncompleteSubscriber extends Subscriber implements MarkedIncompleteSubscriber -{ - public function notify(MarkedIncomplete $event): void - { - $this->printer()->testMarkedIncomplete(); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestPreparedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestPreparedSubscriber.php deleted file mode 100644 index 2225ea0e..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestPreparedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\Test\Prepared; -use PHPUnit\Event\Test\PreparedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestPreparedSubscriber extends Subscriber implements PreparedSubscriber -{ - public function notify(Prepared $event): void - { - $this->printer()->testPrepared(); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestRunnerExecutionStartedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestRunnerExecutionStartedSubscriber.php deleted file mode 100644 index 666dcc93..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestRunnerExecutionStartedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\TestRunner\ExecutionStarted; -use PHPUnit\Event\TestRunner\ExecutionStartedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestRunnerExecutionStartedSubscriber extends Subscriber implements ExecutionStartedSubscriber -{ - public function notify(ExecutionStarted $event): void - { - $this->printer()->testRunnerExecutionStarted($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestSkippedSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestSkippedSubscriber.php deleted file mode 100644 index 2b05a753..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestSkippedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\Test\Skipped; -use PHPUnit\Event\Test\SkippedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestSkippedSubscriber extends Subscriber implements SkippedSubscriber -{ - public function notify(Skipped $event): void - { - $this->printer()->testSkipped(); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredDeprecationSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredDeprecationSubscriber.php deleted file mode 100644 index d7eb7970..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredDeprecationSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\Test\DeprecationTriggered; -use PHPUnit\Event\Test\DeprecationTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredDeprecationSubscriber extends Subscriber implements DeprecationTriggeredSubscriber -{ - public function notify(DeprecationTriggered $event): void - { - $this->printer()->testTriggeredDeprecation($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredErrorSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredErrorSubscriber.php deleted file mode 100644 index 049a1e6d..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredErrorSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\Test\ErrorTriggered; -use PHPUnit\Event\Test\ErrorTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredErrorSubscriber extends Subscriber implements ErrorTriggeredSubscriber -{ - public function notify(ErrorTriggered $event): void - { - $this->printer()->testTriggeredError($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredNoticeSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredNoticeSubscriber.php deleted file mode 100644 index e396c961..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredNoticeSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\Test\NoticeTriggered; -use PHPUnit\Event\Test\NoticeTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredNoticeSubscriber extends Subscriber implements NoticeTriggeredSubscriber -{ - public function notify(NoticeTriggered $event): void - { - $this->printer()->testTriggeredNotice($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpDeprecationSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpDeprecationSubscriber.php deleted file mode 100644 index 65a24208..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpDeprecationSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\Test\PhpDeprecationTriggered; -use PHPUnit\Event\Test\PhpDeprecationTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredPhpDeprecationSubscriber extends Subscriber implements PhpDeprecationTriggeredSubscriber -{ - public function notify(PhpDeprecationTriggered $event): void - { - $this->printer()->testTriggeredPhpDeprecation($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpNoticeSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpNoticeSubscriber.php deleted file mode 100644 index f783fbc1..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpNoticeSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\Test\PhpNoticeTriggered; -use PHPUnit\Event\Test\PhpNoticeTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredPhpNoticeSubscriber extends Subscriber implements PhpNoticeTriggeredSubscriber -{ - public function notify(PhpNoticeTriggered $event): void - { - $this->printer()->testTriggeredPhpNotice($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpWarningSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpWarningSubscriber.php deleted file mode 100644 index 18e723bd..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpWarningSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\Test\PhpWarningTriggered; -use PHPUnit\Event\Test\PhpWarningTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredPhpWarningSubscriber extends Subscriber implements PhpWarningTriggeredSubscriber -{ - public function notify(PhpWarningTriggered $event): void - { - $this->printer()->testTriggeredPhpWarning($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php deleted file mode 100644 index f273f8aa..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\Test\PhpunitDeprecationTriggered; -use PHPUnit\Event\Test\PhpunitDeprecationTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredPhpunitDeprecationSubscriber extends Subscriber implements PhpunitDeprecationTriggeredSubscriber -{ - public function notify(PhpunitDeprecationTriggered $event): void - { - $this->printer()->testTriggeredPhpunitDeprecation(); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpunitWarningSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpunitWarningSubscriber.php deleted file mode 100644 index 12087c4d..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpunitWarningSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\Test\PhpunitWarningTriggered; -use PHPUnit\Event\Test\PhpunitWarningTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredPhpunitWarningSubscriber extends Subscriber implements PhpunitWarningTriggeredSubscriber -{ - public function notify(PhpunitWarningTriggered $event): void - { - $this->printer()->testTriggeredPhpunitWarning(); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredWarningSubscriber.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredWarningSubscriber.php deleted file mode 100644 index 05188dce..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredWarningSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\Test\WarningTriggered; -use PHPUnit\Event\Test\WarningTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredWarningSubscriber extends Subscriber implements WarningTriggeredSubscriber -{ - public function notify(WarningTriggered $event): void - { - $this->printer()->testTriggeredWarning($event); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ResultPrinter.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ResultPrinter.php deleted file mode 100644 index 4d1d37f1..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Default/ResultPrinter.php +++ /dev/null @@ -1,626 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default; - -use const PHP_EOL; -use function array_keys; -use function array_merge; -use function array_reverse; -use function array_unique; -use function assert; -use function count; -use function explode; -use function ksort; -use function range; -use function sprintf; -use function str_starts_with; -use function strlen; -use function substr; -use function trim; -use PHPUnit\Event\Code\Test; -use PHPUnit\Event\Code\TestMethod; -use PHPUnit\Event\Test\BeforeFirstTestMethodErrored; -use PHPUnit\Event\Test\ConsideredRisky; -use PHPUnit\Event\Test\DeprecationTriggered; -use PHPUnit\Event\Test\ErrorTriggered; -use PHPUnit\Event\Test\NoticeTriggered; -use PHPUnit\Event\Test\PhpDeprecationTriggered; -use PHPUnit\Event\Test\PhpNoticeTriggered; -use PHPUnit\Event\Test\PhpunitDeprecationTriggered; -use PHPUnit\Event\Test\PhpunitErrorTriggered; -use PHPUnit\Event\Test\PhpunitWarningTriggered; -use PHPUnit\Event\Test\PhpWarningTriggered; -use PHPUnit\Event\Test\WarningTriggered; -use PHPUnit\TestRunner\TestResult\Issues\Issue; -use PHPUnit\TestRunner\TestResult\TestResult; -use PHPUnit\TextUI\Output\Printer; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ResultPrinter -{ - private readonly Printer $printer; - private readonly bool $displayPhpunitErrors; - private readonly bool $displayPhpunitWarnings; - private readonly bool $displayTestsWithErrors; - private readonly bool $displayTestsWithFailedAssertions; - private readonly bool $displayRiskyTests; - private readonly bool $displayPhpunitDeprecations; - private readonly bool $displayDetailsOnIncompleteTests; - private readonly bool $displayDetailsOnSkippedTests; - private readonly bool $displayDetailsOnTestsThatTriggerDeprecations; - private readonly bool $displayDetailsOnTestsThatTriggerErrors; - private readonly bool $displayDetailsOnTestsThatTriggerNotices; - private readonly bool $displayDetailsOnTestsThatTriggerWarnings; - private readonly bool $displayDefectsInReverseOrder; - private bool $listPrinted = false; - - public function __construct(Printer $printer, bool $displayPhpunitErrors, bool $displayPhpunitWarnings, bool $displayPhpunitDeprecations, bool $displayTestsWithErrors, bool $displayTestsWithFailedAssertions, bool $displayRiskyTests, bool $displayDetailsOnIncompleteTests, bool $displayDetailsOnSkippedTests, bool $displayDetailsOnTestsThatTriggerDeprecations, bool $displayDetailsOnTestsThatTriggerErrors, bool $displayDetailsOnTestsThatTriggerNotices, bool $displayDetailsOnTestsThatTriggerWarnings, bool $displayDefectsInReverseOrder) - { - $this->printer = $printer; - $this->displayPhpunitErrors = $displayPhpunitErrors; - $this->displayPhpunitWarnings = $displayPhpunitWarnings; - $this->displayPhpunitDeprecations = $displayPhpunitDeprecations; - $this->displayTestsWithErrors = $displayTestsWithErrors; - $this->displayTestsWithFailedAssertions = $displayTestsWithFailedAssertions; - $this->displayRiskyTests = $displayRiskyTests; - $this->displayDetailsOnIncompleteTests = $displayDetailsOnIncompleteTests; - $this->displayDetailsOnSkippedTests = $displayDetailsOnSkippedTests; - $this->displayDetailsOnTestsThatTriggerDeprecations = $displayDetailsOnTestsThatTriggerDeprecations; - $this->displayDetailsOnTestsThatTriggerErrors = $displayDetailsOnTestsThatTriggerErrors; - $this->displayDetailsOnTestsThatTriggerNotices = $displayDetailsOnTestsThatTriggerNotices; - $this->displayDetailsOnTestsThatTriggerWarnings = $displayDetailsOnTestsThatTriggerWarnings; - $this->displayDefectsInReverseOrder = $displayDefectsInReverseOrder; - } - - public function print(TestResult $result): void - { - if ($this->displayPhpunitErrors) { - $this->printPhpunitErrors($result); - } - - if ($this->displayPhpunitWarnings) { - $this->printTestRunnerWarnings($result); - } - - if ($this->displayPhpunitDeprecations) { - $this->printTestRunnerDeprecations($result); - } - - if ($this->displayTestsWithErrors) { - $this->printTestsWithErrors($result); - } - - if ($this->displayTestsWithFailedAssertions) { - $this->printTestsWithFailedAssertions($result); - } - - if ($this->displayPhpunitWarnings) { - $this->printDetailsOnTestsThatTriggeredPhpunitWarnings($result); - } - - if ($this->displayPhpunitDeprecations) { - $this->printDetailsOnTestsThatTriggeredPhpunitDeprecations($result); - } - - if ($this->displayRiskyTests) { - $this->printRiskyTests($result); - } - - if ($this->displayDetailsOnIncompleteTests) { - $this->printIncompleteTests($result); - } - - if ($this->displayDetailsOnSkippedTests) { - $this->printSkippedTestSuites($result); - $this->printSkippedTests($result); - } - - if ($this->displayDetailsOnTestsThatTriggerErrors) { - $this->printIssueList('error', $result->errors()); - } - - if ($this->displayDetailsOnTestsThatTriggerWarnings) { - $this->printIssueList('PHP warning', $result->phpWarnings()); - $this->printIssueList('warning', $result->warnings()); - } - - if ($this->displayDetailsOnTestsThatTriggerNotices) { - $this->printIssueList('PHP notice', $result->phpNotices()); - $this->printIssueList('notice', $result->notices()); - } - - if ($this->displayDetailsOnTestsThatTriggerDeprecations) { - $this->printIssueList('PHP deprecation', $result->phpDeprecations()); - $this->printIssueList('deprecation', $result->deprecations()); - } - } - - private function printPhpunitErrors(TestResult $result): void - { - if (!$result->hasTestTriggeredPhpunitErrorEvents()) { - return; - } - - $elements = $this->mapTestsWithIssuesEventsToElements($result->testTriggeredPhpunitErrorEvents()); - - $this->printListHeaderWithNumber($elements['numberOfTestsWithIssues'], 'PHPUnit error'); - $this->printList($elements['elements']); - } - - private function printDetailsOnTestsThatTriggeredPhpunitDeprecations(TestResult $result): void - { - if (!$result->hasTestTriggeredPhpunitDeprecationEvents()) { - return; - } - - $elements = $this->mapTestsWithIssuesEventsToElements($result->testTriggeredPhpunitDeprecationEvents()); - - $this->printListHeaderWithNumberOfTestsAndNumberOfIssues( - $elements['numberOfTestsWithIssues'], - $elements['numberOfIssues'], - 'PHPUnit deprecation', - ); - - $this->printList($elements['elements']); - } - - private function printTestRunnerWarnings(TestResult $result): void - { - if (!$result->hasTestRunnerTriggeredWarningEvents()) { - return; - } - - $elements = []; - - foreach ($result->testRunnerTriggeredWarningEvents() as $event) { - $elements[] = [ - 'title' => $event->message(), - 'body' => '', - ]; - } - - $this->printListHeaderWithNumber(count($elements), 'PHPUnit test runner warning'); - $this->printList($elements); - } - - private function printTestRunnerDeprecations(TestResult $result): void - { - if (!$result->hasTestRunnerTriggeredDeprecationEvents()) { - return; - } - - $elements = []; - - foreach ($result->testRunnerTriggeredDeprecationEvents() as $event) { - $elements[] = [ - 'title' => $event->message(), - 'body' => '', - ]; - } - - $this->printListHeaderWithNumber(count($elements), 'PHPUnit test runner deprecation'); - $this->printList($elements); - } - - private function printDetailsOnTestsThatTriggeredPhpunitWarnings(TestResult $result): void - { - if (!$result->hasTestTriggeredPhpunitWarningEvents()) { - return; - } - - $elements = $this->mapTestsWithIssuesEventsToElements($result->testTriggeredPhpunitWarningEvents()); - - $this->printListHeaderWithNumberOfTestsAndNumberOfIssues( - $elements['numberOfTestsWithIssues'], - $elements['numberOfIssues'], - 'PHPUnit warning', - ); - - $this->printList($elements['elements']); - } - - private function printTestsWithErrors(TestResult $result): void - { - if (!$result->hasTestErroredEvents()) { - return; - } - - $elements = []; - - foreach ($result->testErroredEvents() as $event) { - if ($event instanceof BeforeFirstTestMethodErrored) { - $title = $event->testClassName(); - } else { - $title = $this->name($event->test()); - } - - $elements[] = [ - 'title' => $title, - 'body' => $event->throwable()->asString(), - ]; - } - - $this->printListHeaderWithNumber(count($elements), 'error'); - $this->printList($elements); - } - - private function printTestsWithFailedAssertions(TestResult $result): void - { - if (!$result->hasTestFailedEvents()) { - return; - } - - $elements = []; - - foreach ($result->testFailedEvents() as $event) { - $body = $event->throwable()->asString(); - - if (str_starts_with($body, 'AssertionError: ')) { - $body = substr($body, strlen('AssertionError: ')); - } - - $elements[] = [ - 'title' => $this->name($event->test()), - 'body' => $body, - ]; - } - - $this->printListHeaderWithNumber(count($elements), 'failure'); - $this->printList($elements); - } - - private function printRiskyTests(TestResult $result): void - { - if (!$result->hasTestConsideredRiskyEvents()) { - return; - } - - $elements = $this->mapTestsWithIssuesEventsToElements($result->testConsideredRiskyEvents()); - - $this->printListHeaderWithNumber($elements['numberOfTestsWithIssues'], 'risky test'); - $this->printList($elements['elements']); - } - - private function printIncompleteTests(TestResult $result): void - { - if (!$result->hasTestMarkedIncompleteEvents()) { - return; - } - - $elements = []; - - foreach ($result->testMarkedIncompleteEvents() as $event) { - $elements[] = [ - 'title' => $this->name($event->test()), - 'body' => $event->throwable()->asString(), - ]; - } - - $this->printListHeaderWithNumber(count($elements), 'incomplete test'); - $this->printList($elements); - } - - private function printSkippedTestSuites(TestResult $result): void - { - if (!$result->hasTestSuiteSkippedEvents()) { - return; - } - - $elements = []; - - foreach ($result->testSuiteSkippedEvents() as $event) { - $elements[] = [ - 'title' => $event->testSuite()->name(), - 'body' => $event->message(), - ]; - } - - $this->printListHeaderWithNumber(count($elements), 'skipped test suite'); - $this->printList($elements); - } - - private function printSkippedTests(TestResult $result): void - { - if (!$result->hasTestSkippedEvents()) { - return; - } - - $elements = []; - - foreach ($result->testSkippedEvents() as $event) { - $elements[] = [ - 'title' => $this->name($event->test()), - 'body' => $event->message(), - ]; - } - - $this->printListHeaderWithNumber(count($elements), 'skipped test'); - $this->printList($elements); - } - - /** - * @psalm-param non-empty-string $type - * @psalm-param list $issues - */ - private function printIssueList(string $type, array $issues): void - { - if (empty($issues)) { - return; - } - - $numberOfUniqueIssues = count($issues); - $triggeringTests = []; - - foreach ($issues as $issue) { - $triggeringTests = array_merge($triggeringTests, array_keys($issue->triggeringTests())); - } - - $numberOfTests = count(array_unique($triggeringTests)); - unset($triggeringTests); - - $this->printListHeader( - sprintf( - '%d test%s triggered %d %s%s:' . PHP_EOL . PHP_EOL, - $numberOfTests, - $numberOfTests !== 1 ? 's' : '', - $numberOfUniqueIssues, - $type, - $numberOfUniqueIssues !== 1 ? 's' : '', - ), - ); - - $i = 1; - - foreach ($issues as $issue) { - $title = sprintf( - '%s:%d', - $issue->file(), - $issue->line(), - ); - - $body = trim($issue->description()) . PHP_EOL . PHP_EOL . 'Triggered by:'; - - $triggeringTests = $issue->triggeringTests(); - - ksort($triggeringTests); - - foreach ($triggeringTests as $triggeringTest) { - $body .= PHP_EOL . PHP_EOL . '* ' . $triggeringTest['test']->id(); - - if ($triggeringTest['count'] > 1) { - $body .= sprintf( - ' (%d times)', - $triggeringTest['count'], - ); - } - - if ($triggeringTest['test']->isTestMethod()) { - $body .= PHP_EOL . ' ' . $triggeringTest['test']->file() . ':' . $triggeringTest['test']->line(); - } - } - - $this->printIssueListElement($i++, $title, $body); - - $this->printer->print(PHP_EOL); - } - } - - private function printListHeaderWithNumberOfTestsAndNumberOfIssues(int $numberOfTestsWithIssues, int $numberOfIssues, string $type): void - { - $this->printListHeader( - sprintf( - "%d test%s triggered %d %s%s:\n\n", - $numberOfTestsWithIssues, - $numberOfTestsWithIssues !== 1 ? 's' : '', - $numberOfIssues, - $type, - $numberOfIssues !== 1 ? 's' : '', - ), - ); - } - - private function printListHeaderWithNumber(int $number, string $type): void - { - $this->printListHeader( - sprintf( - "There %s %d %s%s:\n\n", - ($number === 1) ? 'was' : 'were', - $number, - $type, - ($number === 1) ? '' : 's', - ), - ); - } - - private function printListHeader(string $header): void - { - if ($this->listPrinted) { - $this->printer->print("--\n\n"); - } - - $this->listPrinted = true; - - $this->printer->print($header); - } - - /** - * @psalm-param list $elements - */ - private function printList(array $elements): void - { - $i = 1; - - if ($this->displayDefectsInReverseOrder) { - $elements = array_reverse($elements); - } - - foreach ($elements as $element) { - $this->printListElement($i++, $element['title'], $element['body']); - } - - $this->printer->print("\n"); - } - - private function printListElement(int $number, string $title, string $body): void - { - $body = trim($body); - - $this->printer->print( - sprintf( - "%s%d) %s\n%s%s", - $number > 1 ? "\n" : '', - $number, - $title, - $body, - !empty($body) ? "\n" : '', - ), - ); - } - - private function printIssueListElement(int $number, string $title, string $body): void - { - $body = trim($body); - - $this->printer->print( - sprintf( - "%d) %s\n%s%s", - $number, - $title, - $body, - !empty($body) ? "\n" : '', - ), - ); - } - - private function name(Test $test): string - { - if ($test->isTestMethod()) { - assert($test instanceof TestMethod); - - if (!$test->testData()->hasDataFromDataProvider()) { - return $test->nameWithClass(); - } - - return $test->className() . '::' . $test->methodName() . $test->testData()->dataFromDataProvider()->dataAsStringForResultOutput(); - } - - return $test->name(); - } - - /** - * @psalm-param array> $events - * - * @psalm-return array{numberOfTestsWithIssues: int, numberOfIssues: int, elements: list} - */ - private function mapTestsWithIssuesEventsToElements(array $events): array - { - $elements = []; - $issues = 0; - - foreach ($events as $reasons) { - $test = $reasons[0]->test(); - $testLocation = $this->testLocation($test); - $title = $this->name($test); - $body = ''; - $first = true; - $single = count($reasons) === 1; - - foreach ($reasons as $reason) { - if ($first) { - $first = false; - } else { - $body .= PHP_EOL; - } - - $body .= $this->reasonMessage($reason, $single); - $body .= $this->reasonLocation($reason, $single); - - $issues++; - } - - if (!empty($testLocation)) { - $body .= $testLocation; - } - - $elements[] = [ - 'title' => $title, - 'body' => $body, - ]; - } - - return [ - 'numberOfTestsWithIssues' => count($events), - 'numberOfIssues' => $issues, - 'elements' => $elements, - ]; - } - - private function testLocation(Test $test): string - { - if (!$test->isTestMethod()) { - return ''; - } - - assert($test instanceof TestMethod); - - return sprintf( - '%s%s:%d%s', - PHP_EOL, - $test->file(), - $test->line(), - PHP_EOL, - ); - } - - private function reasonMessage(ConsideredRisky|DeprecationTriggered|ErrorTriggered|NoticeTriggered|PhpDeprecationTriggered|PhpNoticeTriggered|PhpunitDeprecationTriggered|PhpunitErrorTriggered|PhpunitWarningTriggered|PhpWarningTriggered|WarningTriggered $reason, bool $single): string - { - $message = trim($reason->message()); - - if ($single) { - return $message . PHP_EOL; - } - - $lines = explode(PHP_EOL, $message); - $buffer = '* ' . $lines[0] . PHP_EOL; - - if (count($lines) > 1) { - foreach (range(1, count($lines) - 1) as $line) { - $buffer .= ' ' . $lines[$line] . PHP_EOL; - } - } - - return $buffer; - } - - private function reasonLocation(ConsideredRisky|DeprecationTriggered|ErrorTriggered|NoticeTriggered|PhpDeprecationTriggered|PhpNoticeTriggered|PhpunitDeprecationTriggered|PhpunitErrorTriggered|PhpunitWarningTriggered|PhpWarningTriggered|WarningTriggered $reason, bool $single): string - { - if (!$reason instanceof DeprecationTriggered && - !$reason instanceof PhpDeprecationTriggered && - !$reason instanceof ErrorTriggered && - !$reason instanceof NoticeTriggered && - !$reason instanceof PhpNoticeTriggered && - !$reason instanceof WarningTriggered && - !$reason instanceof PhpWarningTriggered) { - return ''; - } - - return sprintf( - '%s%s:%d%s', - $single ? '' : ' ', - $reason->file(), - $reason->line(), - PHP_EOL, - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Facade.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Facade.php deleted file mode 100644 index f08b2d7b..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Facade.php +++ /dev/null @@ -1,281 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output; - -use const PHP_EOL; -use function assert; -use PHPUnit\Event\EventFacadeIsSealedException; -use PHPUnit\Event\Facade as EventFacade; -use PHPUnit\Event\UnknownSubscriberTypeException; -use PHPUnit\Logging\TeamCity\TeamCityLogger; -use PHPUnit\Logging\TestDox\TestResultCollection; -use PHPUnit\Runner\DirectoryDoesNotExistException; -use PHPUnit\TestRunner\TestResult\TestResult; -use PHPUnit\TextUI\CannotOpenSocketException; -use PHPUnit\TextUI\Configuration\Configuration; -use PHPUnit\TextUI\InvalidSocketException; -use PHPUnit\TextUI\Output\Default\ProgressPrinter\ProgressPrinter as DefaultProgressPrinter; -use PHPUnit\TextUI\Output\Default\ResultPrinter as DefaultResultPrinter; -use PHPUnit\TextUI\Output\Default\UnexpectedOutputPrinter; -use PHPUnit\TextUI\Output\TestDox\ResultPrinter as TestDoxResultPrinter; -use SebastianBergmann\Timer\Duration; -use SebastianBergmann\Timer\ResourceUsageFormatter; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Facade -{ - private static ?Printer $printer = null; - private static ?DefaultResultPrinter $defaultResultPrinter = null; - private static ?TestDoxResultPrinter $testDoxResultPrinter = null; - private static ?SummaryPrinter $summaryPrinter = null; - private static bool $defaultProgressPrinter = false; - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - public static function init(Configuration $configuration, bool $extensionReplacesProgressOutput, bool $extensionReplacesResultOutput): Printer - { - self::createPrinter($configuration); - - assert(self::$printer !== null); - - if ($configuration->debug()) { - return self::$printer; - } - - self::createUnexpectedOutputPrinter(); - - if (!$extensionReplacesProgressOutput) { - self::createProgressPrinter($configuration); - } - - if (!$extensionReplacesResultOutput) { - self::createResultPrinter($configuration); - self::createSummaryPrinter($configuration); - } - - if ($configuration->outputIsTeamCity()) { - new TeamCityLogger( - DefaultPrinter::standardOutput(), - EventFacade::instance(), - ); - } - - return self::$printer; - } - - /** - * @psalm-param ?array $testDoxResult - */ - public static function printResult(TestResult $result, ?array $testDoxResult, Duration $duration): void - { - assert(self::$printer !== null); - - if ($result->numberOfTestsRun() > 0) { - if (self::$defaultProgressPrinter) { - self::$printer->print(PHP_EOL . PHP_EOL); - } - - self::$printer->print((new ResourceUsageFormatter)->resourceUsage($duration) . PHP_EOL . PHP_EOL); - } - - if (self::$testDoxResultPrinter !== null && $testDoxResult !== null) { - self::$testDoxResultPrinter->print($testDoxResult); - } - - if (self::$defaultResultPrinter !== null) { - self::$defaultResultPrinter->print($result); - } - - if (self::$summaryPrinter !== null) { - self::$summaryPrinter->print($result); - } - } - - /** - * @throws CannotOpenSocketException - * @throws DirectoryDoesNotExistException - * @throws InvalidSocketException - */ - public static function printerFor(string $target): Printer - { - if ($target === 'php://stdout') { - if (!self::$printer instanceof NullPrinter) { - return self::$printer; - } - - return DefaultPrinter::standardOutput(); - } - - return DefaultPrinter::from($target); - } - - private static function createPrinter(Configuration $configuration): void - { - $printerNeeded = false; - - if ($configuration->debug()) { - $printerNeeded = true; - } - - if ($configuration->outputIsTeamCity()) { - $printerNeeded = true; - } - - if ($configuration->outputIsTestDox()) { - $printerNeeded = true; - } - - if (!$configuration->noOutput() && !$configuration->noProgress()) { - $printerNeeded = true; - } - - if (!$configuration->noOutput() && !$configuration->noResults()) { - $printerNeeded = true; - } - - if ($printerNeeded) { - if ($configuration->outputToStandardErrorStream()) { - self::$printer = DefaultPrinter::standardError(); - - return; - } - - self::$printer = DefaultPrinter::standardOutput(); - - return; - } - - self::$printer = new NullPrinter; - } - - private static function createProgressPrinter(Configuration $configuration): void - { - assert(self::$printer !== null); - - if (!self::useDefaultProgressPrinter($configuration)) { - return; - } - - new DefaultProgressPrinter( - self::$printer, - EventFacade::instance(), - $configuration->colors(), - $configuration->columns(), - $configuration->source(), - ); - - self::$defaultProgressPrinter = true; - } - - private static function useDefaultProgressPrinter(Configuration $configuration): bool - { - if ($configuration->noOutput()) { - return false; - } - - if ($configuration->noProgress()) { - return false; - } - - if ($configuration->outputIsTeamCity()) { - return false; - } - - return true; - } - - private static function createResultPrinter(Configuration $configuration): void - { - assert(self::$printer !== null); - - if ($configuration->outputIsTestDox()) { - self::$defaultResultPrinter = new DefaultResultPrinter( - self::$printer, - true, - true, - $configuration->displayDetailsOnPhpunitDeprecations(), - false, - false, - true, - false, - false, - $configuration->displayDetailsOnTestsThatTriggerDeprecations(), - $configuration->displayDetailsOnTestsThatTriggerErrors(), - $configuration->displayDetailsOnTestsThatTriggerNotices(), - $configuration->displayDetailsOnTestsThatTriggerWarnings(), - $configuration->reverseDefectList(), - ); - } - - if ($configuration->outputIsTestDox()) { - self::$testDoxResultPrinter = new TestDoxResultPrinter( - self::$printer, - $configuration->colors(), - ); - } - - if ($configuration->noOutput() || $configuration->noResults()) { - return; - } - - if (self::$defaultResultPrinter !== null) { - return; - } - - self::$defaultResultPrinter = new DefaultResultPrinter( - self::$printer, - true, - true, - $configuration->displayDetailsOnPhpunitDeprecations(), - true, - true, - true, - $configuration->displayDetailsOnIncompleteTests(), - $configuration->displayDetailsOnSkippedTests(), - $configuration->displayDetailsOnTestsThatTriggerDeprecations(), - $configuration->displayDetailsOnTestsThatTriggerErrors(), - $configuration->displayDetailsOnTestsThatTriggerNotices(), - $configuration->displayDetailsOnTestsThatTriggerWarnings(), - $configuration->reverseDefectList(), - ); - } - - private static function createSummaryPrinter(Configuration $configuration): void - { - assert(self::$printer !== null); - - if (($configuration->noOutput() || $configuration->noResults()) && - !($configuration->outputIsTeamCity() || $configuration->outputIsTestDox())) { - return; - } - - self::$summaryPrinter = new SummaryPrinter( - self::$printer, - $configuration->colors(), - ); - } - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - private static function createUnexpectedOutputPrinter(): void - { - assert(self::$printer !== null); - - new UnexpectedOutputPrinter(self::$printer, EventFacade::instance()); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Printer/DefaultPrinter.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Printer/DefaultPrinter.php deleted file mode 100644 index 38f3b2b5..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Printer/DefaultPrinter.php +++ /dev/null @@ -1,122 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output; - -use function assert; -use function count; -use function dirname; -use function explode; -use function fclose; -use function fopen; -use function fsockopen; -use function fwrite; -use function str_replace; -use function str_starts_with; -use PHPUnit\Runner\DirectoryDoesNotExistException; -use PHPUnit\TextUI\CannotOpenSocketException; -use PHPUnit\TextUI\InvalidSocketException; -use PHPUnit\Util\Filesystem; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class DefaultPrinter implements Printer -{ - /** - * @psalm-var closed-resource|resource - */ - private $stream; - private readonly bool $isPhpStream; - private bool $isOpen; - - /** - * @throws CannotOpenSocketException - * @throws DirectoryDoesNotExistException - * @throws InvalidSocketException - */ - public static function from(string $out): self - { - return new self($out); - } - - /** - * @throws CannotOpenSocketException - * @throws DirectoryDoesNotExistException - * @throws InvalidSocketException - */ - public static function standardOutput(): self - { - return new self('php://stdout'); - } - - /** - * @throws CannotOpenSocketException - * @throws DirectoryDoesNotExistException - * @throws InvalidSocketException - */ - public static function standardError(): self - { - return new self('php://stderr'); - } - - /** - * @throws CannotOpenSocketException - * @throws DirectoryDoesNotExistException - * @throws InvalidSocketException - */ - private function __construct(string $out) - { - $this->isPhpStream = str_starts_with($out, 'php://'); - - if (str_starts_with($out, 'socket://')) { - $tmp = explode(':', str_replace('socket://', '', $out)); - - if (count($tmp) !== 2) { - throw new InvalidSocketException($out); - } - - $stream = @fsockopen($tmp[0], (int) $tmp[1]); - - if ($stream === false) { - throw new CannotOpenSocketException($tmp[0], (int) $tmp[1]); - } - - $this->stream = $stream; - $this->isOpen = true; - - return; - } - - if (!$this->isPhpStream && !Filesystem::createDirectory(dirname($out))) { - throw new DirectoryDoesNotExistException(dirname($out)); - } - - $this->stream = fopen($out, 'wb'); - $this->isOpen = true; - } - - public function print(string $buffer): void - { - assert($this->isOpen); - - fwrite($this->stream, $buffer); - } - - public function flush(): void - { - if ($this->isOpen && $this->isPhpStream) { - fclose($this->stream); - - $this->isOpen = false; - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Printer/NullPrinter.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Printer/NullPrinter.php deleted file mode 100644 index cf27e6b3..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Printer/NullPrinter.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class NullPrinter implements Printer -{ - public function print(string $buffer): void - { - } - - public function flush(): void - { - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Printer/Printer.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Printer/Printer.php deleted file mode 100644 index c9b0fb97..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/Printer/Printer.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This interface is not covered by the backward compatibility promise for PHPUnit - */ -interface Printer -{ - public function print(string $buffer): void; - - public function flush(): void; -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/SummaryPrinter.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/SummaryPrinter.php deleted file mode 100644 index 0c540bb5..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/SummaryPrinter.php +++ /dev/null @@ -1,173 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output; - -use const PHP_EOL; -use function sprintf; -use PHPUnit\TestRunner\TestResult\TestResult; -use PHPUnit\Util\Color; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class SummaryPrinter -{ - private readonly Printer $printer; - private readonly bool $colors; - private bool $countPrinted = false; - - public function __construct(Printer $printer, bool $colors) - { - $this->printer = $printer; - $this->colors = $colors; - } - - public function print(TestResult $result): void - { - if ($result->numberOfTestsRun() === 0) { - $this->printWithColor( - 'fg-black, bg-yellow', - 'No tests executed!', - ); - - return; - } - - if ($result->wasSuccessfulAndNoTestHasIssues() && - !$result->hasTestSuiteSkippedEvents() && - !$result->hasTestSkippedEvents()) { - $this->printWithColor( - 'fg-black, bg-green', - sprintf( - 'OK (%d test%s, %d assertion%s)', - $result->numberOfTestsRun(), - $result->numberOfTestsRun() === 1 ? '' : 's', - $result->numberOfAssertions(), - $result->numberOfAssertions() === 1 ? '' : 's', - ), - ); - - $this->printNumberOfIssuesIgnoredByBaseline($result); - - return; - } - - $color = 'fg-black, bg-yellow'; - - if ($result->wasSuccessful()) { - if (!$result->hasTestsWithIssues()) { - $this->printWithColor( - $color, - 'OK, but some tests were skipped!', - ); - } else { - $this->printWithColor( - $color, - 'OK, but there were issues!', - ); - } - } else { - if ($result->hasTestErroredEvents() || $result->hasTestTriggeredPhpunitErrorEvents()) { - $color = 'fg-white, bg-red'; - - $this->printWithColor( - $color, - 'ERRORS!', - ); - } elseif ($result->hasTestFailedEvents()) { - $color = 'fg-white, bg-red'; - - $this->printWithColor( - $color, - 'FAILURES!', - ); - } elseif ($result->hasWarnings()) { - $this->printWithColor( - $color, - 'WARNINGS!', - ); - } elseif ($result->hasDeprecations()) { - $this->printWithColor( - $color, - 'DEPRECATIONS!', - ); - } elseif ($result->hasNotices()) { - $this->printWithColor( - $color, - 'NOTICES!', - ); - } - } - - $this->printCountString($result->numberOfTestsRun(), 'Tests', $color, true); - $this->printCountString($result->numberOfAssertions(), 'Assertions', $color, true); - $this->printCountString($result->numberOfErrors(), 'Errors', $color); - $this->printCountString($result->numberOfTestFailedEvents(), 'Failures', $color); - $this->printCountString($result->numberOfWarnings(), 'Warnings', $color); - $this->printCountString($result->numberOfPhpOrUserDeprecations(), 'Deprecations', $color); - $this->printCountString($result->numberOfPhpunitDeprecations(), 'PHPUnit Deprecations', $color); - $this->printCountString($result->numberOfNotices(), 'Notices', $color); - $this->printCountString($result->numberOfTestSuiteSkippedEvents() + $result->numberOfTestSkippedEvents(), 'Skipped', $color); - $this->printCountString($result->numberOfTestMarkedIncompleteEvents(), 'Incomplete', $color); - $this->printCountString($result->numberOfTestsWithTestConsideredRiskyEvents(), 'Risky', $color); - $this->printWithColor($color, '.'); - - $this->printNumberOfIssuesIgnoredByBaseline($result); - } - - private function printCountString(int $count, string $name, string $color, bool $always = false): void - { - if ($always || $count > 0) { - $this->printWithColor( - $color, - sprintf( - '%s%s: %d', - $this->countPrinted ? ', ' : '', - $name, - $count, - ), - false, - ); - - $this->countPrinted = true; - } - } - - private function printWithColor(string $color, string $buffer, bool $lf = true): void - { - if ($this->colors) { - $buffer = Color::colorizeTextBox($color, $buffer); - } - - $this->printer->print($buffer); - - if ($lf) { - $this->printer->print(PHP_EOL); - } - } - - private function printNumberOfIssuesIgnoredByBaseline(TestResult $result): void - { - if ($result->hasIssuesIgnoredByBaseline()) { - $this->printer->print( - sprintf( - '%s%d issue%s %s ignored by baseline.%s', - PHP_EOL, - $result->numberOfIssuesIgnoredByBaseline(), - $result->numberOfIssuesIgnoredByBaseline() > 1 ? 's' : '', - $result->numberOfIssuesIgnoredByBaseline() > 1 ? 'were' : 'was', - PHP_EOL, - ), - ); - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/TestDox/ResultPrinter.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/TestDox/ResultPrinter.php deleted file mode 100644 index e063b909..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/Output/TestDox/ResultPrinter.php +++ /dev/null @@ -1,366 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\TestDox; - -use const PHP_EOL; -use function array_map; -use function assert; -use function explode; -use function implode; -use function preg_match; -use function preg_split; -use function rtrim; -use function str_starts_with; -use function trim; -use PHPUnit\Event\Code\Throwable; -use PHPUnit\Framework\TestStatus\TestStatus; -use PHPUnit\Logging\TestDox\TestResult as TestDoxTestResult; -use PHPUnit\Logging\TestDox\TestResultCollection; -use PHPUnit\TextUI\Output\Printer; -use PHPUnit\Util\Color; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ResultPrinter -{ - private readonly Printer $printer; - private readonly bool $colors; - - public function __construct(Printer $printer, bool $colors) - { - $this->printer = $printer; - $this->colors = $colors; - } - - /** - * @psalm-param array $tests - */ - public function print(array $tests): void - { - foreach ($tests as $prettifiedClassName => $_tests) { - $this->printPrettifiedClassName($prettifiedClassName); - - foreach ($_tests as $test) { - $this->printTestResult($test); - } - - $this->printer->print(PHP_EOL); - } - } - - /** - * @psalm-param string $prettifiedClassName - */ - private function printPrettifiedClassName(string $prettifiedClassName): void - { - $buffer = $prettifiedClassName; - - if ($this->colors) { - $buffer = Color::colorizeTextBox('underlined', $buffer); - } - - $this->printer->print($buffer . PHP_EOL); - } - - private function printTestResult(TestDoxTestResult $test): void - { - $this->printTestResultHeader($test); - $this->printTestResultBody($test); - } - - private function printTestResultHeader(TestDoxTestResult $test): void - { - $buffer = ' ' . $this->symbolFor($test->status()) . ' '; - - if ($this->colors) { - $this->printer->print( - Color::colorizeTextBox( - $this->colorFor($test->status()), - $buffer, - ), - ); - } else { - $this->printer->print($buffer); - } - - $this->printer->print($test->test()->testDox()->prettifiedMethodName($this->colors) . PHP_EOL); - } - - private function printTestResultBody(TestDoxTestResult $test): void - { - if ($test->status()->isSuccess()) { - return; - } - - if (!$test->hasThrowable()) { - return; - } - - $this->printTestResultBodyStart($test); - $this->printThrowable($test); - $this->printTestResultBodyEnd($test); - } - - private function printTestResultBodyStart(TestDoxTestResult $test): void - { - $this->printer->print( - $this->prefixLines( - $this->prefixFor('start', $test->status()), - '', - ), - ); - - $this->printer->print(PHP_EOL); - } - - private function printTestResultBodyEnd(TestDoxTestResult $test): void - { - $this->printer->print(PHP_EOL); - - $this->printer->print( - $this->prefixLines( - $this->prefixFor('last', $test->status()), - '', - ), - ); - - $this->printer->print(PHP_EOL); - } - - private function printThrowable(TestDoxTestResult $test): void - { - $throwable = $test->throwable(); - - assert($throwable instanceof Throwable); - - $message = trim($throwable->description()); - $stackTrace = $this->formatStackTrace($throwable->stackTrace()); - $diff = ''; - - if (!empty($message) && $this->colors) { - ['message' => $message, 'diff' => $diff] = $this->colorizeMessageAndDiff( - $message, - $this->messageColorFor($test->status()), - ); - } - - if (!empty($message)) { - $this->printer->print( - $this->prefixLines( - $this->prefixFor('message', $test->status()), - $message, - ), - ); - - $this->printer->print(PHP_EOL); - } - - if (!empty($diff)) { - $this->printer->print( - $this->prefixLines( - $this->prefixFor('diff', $test->status()), - $diff, - ), - ); - - $this->printer->print(PHP_EOL); - } - - if (!empty($stackTrace)) { - if (!empty($message) || !empty($diff)) { - $prefix = $this->prefixFor('default', $test->status()); - } else { - $prefix = $this->prefixFor('trace', $test->status()); - } - - $this->printer->print( - $this->prefixLines($prefix, PHP_EOL . $stackTrace), - ); - } - } - - /** - * @psalm-return array{message: string, diff: string} - */ - private function colorizeMessageAndDiff(string $buffer, string $style): array - { - $lines = $buffer ? array_map('\rtrim', explode(PHP_EOL, $buffer)) : []; - $message = []; - $diff = []; - $insideDiff = false; - - foreach ($lines as $line) { - if ($line === '--- Expected') { - $insideDiff = true; - } - - if (!$insideDiff) { - $message[] = $line; - } else { - if (str_starts_with($line, '-')) { - $line = Color::colorize('fg-red', Color::visualizeWhitespace($line, true)); - } elseif (str_starts_with($line, '+')) { - $line = Color::colorize('fg-green', Color::visualizeWhitespace($line, true)); - } elseif ($line === '@@ @@') { - $line = Color::colorize('fg-cyan', $line); - } - - $diff[] = $line; - } - } - - $message = implode(PHP_EOL, $message); - $diff = implode(PHP_EOL, $diff); - - if (!empty($message)) { - $message = Color::colorizeTextBox($style, $message); - } - - return [ - 'message' => $message, - 'diff' => $diff, - ]; - } - - private function formatStackTrace(string $stackTrace): string - { - if (!$this->colors) { - return rtrim($stackTrace); - } - - $lines = []; - $previousPath = ''; - - foreach (explode(PHP_EOL, $stackTrace) as $line) { - if (preg_match('/^(.*):(\d+)$/', $line, $matches)) { - $lines[] = Color::colorizePath($matches[1], $previousPath) . Color::dim(':') . Color::colorize('fg-blue', $matches[2]) . "\n"; - $previousPath = $matches[1]; - - continue; - } - - $lines[] = $line; - $previousPath = ''; - } - - return rtrim(implode('', $lines)); - } - - private function prefixLines(string $prefix, string $message): string - { - return implode( - PHP_EOL, - array_map( - static fn (string $line) => ' ' . $prefix . ($line ? ' ' . $line : ''), - preg_split('/\r\n|\r|\n/', $message), - ), - ); - } - - /** - * @psalm-param 'default'|'start'|'message'|'diff'|'trace'|'last' $type - */ - private function prefixFor(string $type, TestStatus $status): string - { - if (!$this->colors) { - return '│'; - } - - return Color::colorize( - $this->colorFor($status), - match ($type) { - 'default' => '│', - 'start' => '┐', - 'message' => '├', - 'diff' => '┊', - 'trace' => '╵', - 'last' => '┴', - }, - ); - } - - private function colorFor(TestStatus $status): string - { - if ($status->isSuccess()) { - return 'fg-green'; - } - - if ($status->isError()) { - return 'fg-yellow'; - } - - if ($status->isFailure()) { - return 'fg-red'; - } - - if ($status->isSkipped()) { - return 'fg-cyan'; - } - - if ($status->isIncomplete() || $status->isDeprecation() || $status->isNotice() || $status->isRisky() || $status->isWarning()) { - return 'fg-yellow'; - } - - return 'fg-blue'; - } - - private function messageColorFor(TestStatus $status): string - { - if ($status->isSuccess()) { - return ''; - } - - if ($status->isError()) { - return 'bg-yellow,fg-black'; - } - - if ($status->isFailure()) { - return 'bg-red,fg-white'; - } - - if ($status->isSkipped()) { - return 'fg-cyan'; - } - - if ($status->isIncomplete() || $status->isDeprecation() || $status->isNotice() || $status->isRisky() || $status->isWarning()) { - return 'fg-yellow'; - } - - return 'fg-white,bg-blue'; - } - - private function symbolFor(TestStatus $status): string - { - if ($status->isSuccess()) { - return '✔'; - } - - if ($status->isError() || $status->isFailure()) { - return '✘'; - } - - if ($status->isSkipped()) { - return '↩'; - } - - if ($status->isDeprecation() || $status->isNotice() || $status->isRisky() || $status->isWarning()) { - return '⚠'; - } - - if ($status->isIncomplete()) { - return '∅'; - } - - return '?'; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/ShellExitCodeCalculator.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/ShellExitCodeCalculator.php deleted file mode 100644 index 6a1aad60..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/ShellExitCodeCalculator.php +++ /dev/null @@ -1,73 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI; - -use PHPUnit\TestRunner\TestResult\TestResult; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ShellExitCodeCalculator -{ - private const SUCCESS_EXIT = 0; - private const FAILURE_EXIT = 1; - private const EXCEPTION_EXIT = 2; - - public function calculate(bool $failOnDeprecation, bool $failOnPhpunitDeprecation, bool $failOnEmptyTestSuite, bool $failOnIncomplete, bool $failOnNotice, bool $failOnRisky, bool $failOnSkipped, bool $failOnWarning, TestResult $result): int - { - $returnCode = self::FAILURE_EXIT; - - if ($result->wasSuccessful()) { - $returnCode = self::SUCCESS_EXIT; - } - - if ($failOnEmptyTestSuite && !$result->hasTests()) { - $returnCode = self::FAILURE_EXIT; - } - - if ($result->wasSuccessfulIgnoringPhpunitWarnings()) { - if ($failOnDeprecation && $result->hasPhpOrUserDeprecations()) { - $returnCode = self::FAILURE_EXIT; - } - - if ($failOnPhpunitDeprecation && $result->hasPhpunitDeprecations()) { - $returnCode = self::FAILURE_EXIT; - } - - if ($failOnIncomplete && $result->hasIncompleteTests()) { - $returnCode = self::FAILURE_EXIT; - } - - if ($failOnNotice && $result->hasNotices()) { - $returnCode = self::FAILURE_EXIT; - } - - if ($failOnRisky && $result->hasRiskyTests()) { - $returnCode = self::FAILURE_EXIT; - } - - if ($failOnSkipped && $result->hasSkippedTests()) { - $returnCode = self::FAILURE_EXIT; - } - - if ($failOnWarning && $result->hasWarnings()) { - $returnCode = self::FAILURE_EXIT; - } - } - - if ($result->hasErrors()) { - $returnCode = self::EXCEPTION_EXIT; - } - - return $returnCode; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/TestRunner.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/TestRunner.php deleted file mode 100644 index 2363ca29..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/TestRunner.php +++ /dev/null @@ -1,76 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI; - -use function mt_srand; -use PHPUnit\Event; -use PHPUnit\Framework\TestSuite; -use PHPUnit\Runner\ResultCache\ResultCache; -use PHPUnit\Runner\TestSuiteSorter; -use PHPUnit\TextUI\Configuration\Configuration; -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestRunner -{ - /** - * @throws RuntimeException - */ - public function run(Configuration $configuration, ResultCache $resultCache, TestSuite $suite): void - { - try { - Event\Facade::emitter()->testRunnerStarted(); - - if ($configuration->executionOrder() === TestSuiteSorter::ORDER_RANDOMIZED) { - mt_srand($configuration->randomOrderSeed()); - } - - if ($configuration->executionOrder() !== TestSuiteSorter::ORDER_DEFAULT || - $configuration->executionOrderDefects() !== TestSuiteSorter::ORDER_DEFAULT || - $configuration->resolveDependencies()) { - $resultCache->load(); - - (new TestSuiteSorter($resultCache))->reorderTestsInSuite( - $suite, - $configuration->executionOrder(), - $configuration->resolveDependencies(), - $configuration->executionOrderDefects(), - ); - - Event\Facade::emitter()->testSuiteSorted( - $configuration->executionOrder(), - $configuration->executionOrderDefects(), - $configuration->resolveDependencies(), - ); - } - - (new TestSuiteFilterProcessor)->process($configuration, $suite); - - Event\Facade::emitter()->testRunnerExecutionStarted( - Event\TestSuite\TestSuiteBuilder::from($suite), - ); - - $suite->run(); - - Event\Facade::emitter()->testRunnerExecutionFinished(); - Event\Facade::emitter()->testRunnerFinished(); - } catch (Throwable $t) { - throw new RuntimeException( - $t->getMessage(), - (int) $t->getCode(), - $t, - ); - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/TestSuiteFilterProcessor.php b/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/TestSuiteFilterProcessor.php deleted file mode 100644 index 63ba1b38..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/TextUI/TestSuiteFilterProcessor.php +++ /dev/null @@ -1,84 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI; - -use function array_map; -use PHPUnit\Event; -use PHPUnit\Framework\TestSuite; -use PHPUnit\Runner\Filter\Factory; -use PHPUnit\TextUI\Configuration\Configuration; -use PHPUnit\TextUI\Configuration\FilterNotConfiguredException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestSuiteFilterProcessor -{ - /** - * @throws Event\RuntimeException - * @throws FilterNotConfiguredException - */ - public function process(Configuration $configuration, TestSuite $suite): void - { - $factory = new Factory; - - if (!$configuration->hasFilter() && - !$configuration->hasGroups() && - !$configuration->hasExcludeGroups() && - !$configuration->hasTestsCovering() && - !$configuration->hasTestsUsing()) { - return; - } - - if ($configuration->hasExcludeGroups()) { - $factory->addExcludeGroupFilter( - $configuration->excludeGroups(), - ); - } - - if ($configuration->hasGroups()) { - $factory->addIncludeGroupFilter( - $configuration->groups(), - ); - } - - if ($configuration->hasTestsCovering()) { - $factory->addIncludeGroupFilter( - array_map( - static fn (string $name): string => '__phpunit_covers_' . $name, - $configuration->testsCovering(), - ), - ); - } - - if ($configuration->hasTestsUsing()) { - $factory->addIncludeGroupFilter( - array_map( - static fn (string $name): string => '__phpunit_uses_' . $name, - $configuration->testsUsing(), - ), - ); - } - - if ($configuration->hasFilter()) { - $factory->addNameFilter( - $configuration->filter(), - ); - } - - $suite->injectFilter($factory); - - Event\Facade::emitter()->testSuiteFiltered( - Event\TestSuite\TestSuiteBuilder::from($suite), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Cloner.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Cloner.php deleted file mode 100644 index 7e3e5aa0..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Cloner.php +++ /dev/null @@ -1,36 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Cloner -{ - /** - * @psalm-template OriginalType of object - * - * @psalm-param OriginalType $original - * - * @psalm-return OriginalType - */ - public static function clone(object $original): object - { - try { - return clone $original; - } catch (Throwable) { - return $original; - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Color.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Color.php deleted file mode 100644 index 0e3642ca..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Color.php +++ /dev/null @@ -1,181 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use const DIRECTORY_SEPARATOR; -use const PHP_EOL; -use function array_map; -use function count; -use function explode; -use function implode; -use function max; -use function min; -use function preg_replace; -use function preg_replace_callback; -use function preg_split; -use function sprintf; -use function str_pad; -use function strtr; -use function trim; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Color -{ - /** - * @psalm-var array - */ - private const WHITESPACE_MAP = [ - ' ' => '·', - "\t" => '⇥', - ]; - - /** - * @psalm-var array - */ - private const WHITESPACE_EOL_MAP = [ - ' ' => '·', - "\t" => '⇥', - "\n" => '↵', - "\r" => '⟵', - ]; - - /** - * @psalm-var array - */ - private static array $ansiCodes = [ - 'reset' => '0', - 'bold' => '1', - 'dim' => '2', - 'dim-reset' => '22', - 'underlined' => '4', - 'fg-default' => '39', - 'fg-black' => '30', - 'fg-red' => '31', - 'fg-green' => '32', - 'fg-yellow' => '33', - 'fg-blue' => '34', - 'fg-magenta' => '35', - 'fg-cyan' => '36', - 'fg-white' => '37', - 'bg-default' => '49', - 'bg-black' => '40', - 'bg-red' => '41', - 'bg-green' => '42', - 'bg-yellow' => '43', - 'bg-blue' => '44', - 'bg-magenta' => '45', - 'bg-cyan' => '46', - 'bg-white' => '47', - ]; - - public static function colorize(string $color, string $buffer): string - { - if (trim($buffer) === '') { - return $buffer; - } - - $codes = array_map('\trim', explode(',', $color)); - $styles = []; - - foreach ($codes as $code) { - if (isset(self::$ansiCodes[$code])) { - $styles[] = self::$ansiCodes[$code] ?? ''; - } - } - - if (empty($styles)) { - return $buffer; - } - - return self::optimizeColor(sprintf("\x1b[%sm", implode(';', $styles)) . $buffer . "\x1b[0m"); - } - - public static function colorizeTextBox(string $color, string $buffer): string - { - $lines = preg_split('/\r\n|\r|\n/', $buffer); - $padding = max(array_map('\strlen', $lines)); - - $styledLines = []; - - foreach ($lines as $line) { - $styledLines[] = self::colorize($color, str_pad($line, $padding)); - } - - return implode(PHP_EOL, $styledLines); - } - - public static function colorizePath(string $path, ?string $previousPath = null, bool $colorizeFilename = false): string - { - if ($previousPath === null) { - $previousPath = ''; - } - - $path = explode(DIRECTORY_SEPARATOR, $path); - $previousPath = explode(DIRECTORY_SEPARATOR, $previousPath); - - for ($i = 0; $i < min(count($path), count($previousPath)); $i++) { - if ($path[$i] === $previousPath[$i]) { - $path[$i] = self::dim($path[$i]); - } - } - - if ($colorizeFilename) { - $last = count($path) - 1; - $path[$last] = preg_replace_callback( - '/([\-_.]+|phpt$)/', - static fn ($matches) => self::dim($matches[0]), - $path[$last], - ); - } - - return self::optimizeColor(implode(self::dim(DIRECTORY_SEPARATOR), $path)); - } - - public static function dim(string $buffer): string - { - if (trim($buffer) === '') { - return $buffer; - } - - return "\e[2m{$buffer}\e[22m"; - } - - public static function visualizeWhitespace(string $buffer, bool $visualizeEOL = false): string - { - $replaceMap = $visualizeEOL ? self::WHITESPACE_EOL_MAP : self::WHITESPACE_MAP; - - return preg_replace_callback( - '/\s+/', - static fn ($matches) => self::dim(strtr($matches[0], $replaceMap)), - $buffer, - ); - } - - private static function optimizeColor(string $buffer): string - { - return preg_replace( - [ - "/\e\\[22m\e\\[2m/", - "/\e\\[([^m]*)m\e\\[([1-9][0-9;]*)m/", - "/(\e\\[[^m]*m)+(\e\\[0m)/", - ], - [ - '', - "\e[$1;$2m", - '$2', - ], - $buffer, - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Exception/Exception.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Exception/Exception.php deleted file mode 100644 index 58f42db7..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Exception/Exception.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This interface is not covered by the backward compatibility promise for PHPUnit - */ -interface Exception extends Throwable -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Exception/InvalidDirectoryException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Exception/InvalidDirectoryException.php deleted file mode 100644 index 623af2de..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Exception/InvalidDirectoryException.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use function sprintf; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class InvalidDirectoryException extends RuntimeException implements Exception -{ - public function __construct(string $directory) - { - parent::__construct( - sprintf( - '"%s" is not a directory', - $directory, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Exception/InvalidJsonException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Exception/InvalidJsonException.php deleted file mode 100644 index 224f7115..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Exception/InvalidJsonException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class InvalidJsonException extends RuntimeException implements Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Exception/InvalidVersionOperatorException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Exception/InvalidVersionOperatorException.php deleted file mode 100644 index bc2fe9a0..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Exception/InvalidVersionOperatorException.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use function sprintf; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class InvalidVersionOperatorException extends RuntimeException implements Exception -{ - public function __construct(string $operator) - { - parent::__construct( - sprintf( - '"%s" is not a valid version_compare() operator', - $operator, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Exception/PhpProcessException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Exception/PhpProcessException.php deleted file mode 100644 index 05069ef0..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Exception/PhpProcessException.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util\PHP; - -use PHPUnit\Util\Exception; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class PhpProcessException extends RuntimeException implements Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Exception/XmlException.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Exception/XmlException.php deleted file mode 100644 index 127e1eca..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Exception/XmlException.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util\Xml; - -use PHPUnit\Util\Exception; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class XmlException extends RuntimeException implements Exception -{ -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/ExcludeList.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Util/ExcludeList.php deleted file mode 100644 index 88e80ba4..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/ExcludeList.php +++ /dev/null @@ -1,231 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use const PHP_OS_FAMILY; -use function class_exists; -use function defined; -use function dirname; -use function is_dir; -use function realpath; -use function str_starts_with; -use function sys_get_temp_dir; -use Composer\Autoload\ClassLoader; -use DeepCopy\DeepCopy; -use PharIo\Manifest\Manifest; -use PharIo\Version\Version as PharIoVersion; -use PhpParser\Parser; -use PHPUnit\Framework\TestCase; -use ReflectionClass; -use SebastianBergmann\CliParser\Parser as CliParser; -use SebastianBergmann\CodeCoverage\CodeCoverage; -use SebastianBergmann\CodeUnit\CodeUnit; -use SebastianBergmann\CodeUnitReverseLookup\Wizard; -use SebastianBergmann\Comparator\Comparator; -use SebastianBergmann\Complexity\Calculator; -use SebastianBergmann\Diff\Diff; -use SebastianBergmann\Environment\Runtime; -use SebastianBergmann\Exporter\Exporter; -use SebastianBergmann\FileIterator\Facade as FileIteratorFacade; -use SebastianBergmann\GlobalState\Snapshot; -use SebastianBergmann\Invoker\Invoker; -use SebastianBergmann\LinesOfCode\Counter; -use SebastianBergmann\ObjectEnumerator\Enumerator; -use SebastianBergmann\ObjectReflector\ObjectReflector; -use SebastianBergmann\RecursionContext\Context; -use SebastianBergmann\Template\Template; -use SebastianBergmann\Timer\Timer; -use SebastianBergmann\Type\TypeName; -use SebastianBergmann\Version; -use TheSeer\Tokenizer\Tokenizer; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final class ExcludeList -{ - /** - * @psalm-var array - */ - private const EXCLUDED_CLASS_NAMES = [ - // composer - ClassLoader::class => 1, - - // myclabs/deepcopy - DeepCopy::class => 1, - - // nikic/php-parser - Parser::class => 1, - - // phar-io/manifest - Manifest::class => 1, - - // phar-io/version - PharIoVersion::class => 1, - - // phpunit/phpunit - TestCase::class => 2, - - // phpunit/php-code-coverage - CodeCoverage::class => 1, - - // phpunit/php-file-iterator - FileIteratorFacade::class => 1, - - // phpunit/php-invoker - Invoker::class => 1, - - // phpunit/php-text-template - Template::class => 1, - - // phpunit/php-timer - Timer::class => 1, - - // sebastian/cli-parser - CliParser::class => 1, - - // sebastian/code-unit - CodeUnit::class => 1, - - // sebastian/code-unit-reverse-lookup - Wizard::class => 1, - - // sebastian/comparator - Comparator::class => 1, - - // sebastian/complexity - Calculator::class => 1, - - // sebastian/diff - Diff::class => 1, - - // sebastian/environment - Runtime::class => 1, - - // sebastian/exporter - Exporter::class => 1, - - // sebastian/global-state - Snapshot::class => 1, - - // sebastian/lines-of-code - Counter::class => 1, - - // sebastian/object-enumerator - Enumerator::class => 1, - - // sebastian/object-reflector - ObjectReflector::class => 1, - - // sebastian/recursion-context - Context::class => 1, - - // sebastian/type - TypeName::class => 1, - - // sebastian/version - Version::class => 1, - - // theseer/tokenizer - Tokenizer::class => 1, - ]; - - /** - * @psalm-var list - */ - private static array $directories = []; - private static bool $initialized = false; - private readonly bool $enabled; - - /** - * @psalm-param non-empty-string $directory - * - * @throws InvalidDirectoryException - */ - public static function addDirectory(string $directory): void - { - if (!is_dir($directory)) { - throw new InvalidDirectoryException($directory); - } - - self::$directories[] = realpath($directory); - } - - public function __construct(?bool $enabled = null) - { - if ($enabled === null) { - $enabled = !defined('PHPUNIT_TESTSUITE'); - } - - $this->enabled = $enabled; - } - - /** - * @psalm-return list - */ - public function getExcludedDirectories(): array - { - self::initialize(); - - return self::$directories; - } - - public function isExcluded(string $file): bool - { - if (!$this->enabled) { - return false; - } - - self::initialize(); - - foreach (self::$directories as $directory) { - if (str_starts_with($file, $directory)) { - return true; - } - } - - return false; - } - - private static function initialize(): void - { - if (self::$initialized) { - return; - } - - foreach (self::EXCLUDED_CLASS_NAMES as $className => $parent) { - if (!class_exists($className)) { - continue; - } - - $directory = (new ReflectionClass($className))->getFileName(); - - for ($i = 0; $i < $parent; $i++) { - $directory = dirname($directory); - } - - self::$directories[] = $directory; - } - - /** - * Hide process isolation workaround on Windows: - * tempnam() prefix is limited to first 3 characters. - * - * @see https://php.net/manual/en/function.tempnam.php - */ - if (PHP_OS_FAMILY === 'Windows') { - // @codeCoverageIgnoreStart - self::$directories[] = sys_get_temp_dir() . '\\PHP'; - // @codeCoverageIgnoreEnd - } - - self::$initialized = true; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Exporter.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Exporter.php deleted file mode 100644 index 20cf6f4b..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Exporter.php +++ /dev/null @@ -1,63 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use function is_array; -use function is_scalar; -use SebastianBergmann\RecursionContext\Context; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @deprecated - */ -final class Exporter -{ - public static function export(mixed $value, bool $exportObjects = false): string - { - if (self::isExportable($value) || $exportObjects) { - return (new \SebastianBergmann\Exporter\Exporter)->export($value); - } - - return '{enable export of objects to see this value}'; - } - - private static function isExportable(mixed &$value, ?Context $context = null): bool - { - if (is_scalar($value) || $value === null) { - return true; - } - - if (!is_array($value)) { - return false; - } - - if (!$context) { - $context = new Context; - } - - if ($context->contains($value) !== false) { - return true; - } - - $array = $value; - $context->add($value); - - foreach ($array as &$_value) { - if (!self::isExportable($_value, $context)) { - return false; - } - } - - return true; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Filesystem.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Filesystem.php deleted file mode 100644 index 948ee285..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Filesystem.php +++ /dev/null @@ -1,51 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use const DIRECTORY_SEPARATOR; -use function basename; -use function dirname; -use function is_dir; -use function mkdir; -use function realpath; -use function str_starts_with; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Filesystem -{ - public static function createDirectory(string $directory): bool - { - return !(!is_dir($directory) && !@mkdir($directory, 0o777, true) && !is_dir($directory)); - } - - /** - * @psalm-param non-empty-string $path - * - * @return false|non-empty-string - */ - public static function resolveStreamOrFile(string $path): false|string - { - if (str_starts_with($path, 'php://') || str_starts_with($path, 'socket://')) { - return $path; - } - - $directory = dirname($path); - - if (is_dir($directory)) { - return realpath($directory) . DIRECTORY_SEPARATOR . basename($path); - } - - return false; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Filter.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Filter.php deleted file mode 100644 index 424e35af..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Filter.php +++ /dev/null @@ -1,117 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use function array_unshift; -use function defined; -use function in_array; -use function is_file; -use function realpath; -use function sprintf; -use function str_starts_with; -use PHPUnit\Framework\Exception; -use PHPUnit\Framework\PhptAssertionFailedError; -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Filter -{ - /** - * @throws Exception - */ - public static function getFilteredStacktrace(Throwable $t, bool $unwrap = true): string - { - $filteredStacktrace = ''; - - if ($t instanceof PhptAssertionFailedError) { - $eTrace = $t->syntheticTrace(); - $eFile = $t->syntheticFile(); - $eLine = $t->syntheticLine(); - } elseif ($t instanceof Exception) { - $eTrace = $t->getSerializableTrace(); - $eFile = $t->getFile(); - $eLine = $t->getLine(); - } else { - if ($unwrap && $t->getPrevious()) { - $t = $t->getPrevious(); - } - - $eTrace = $t->getTrace(); - $eFile = $t->getFile(); - $eLine = $t->getLine(); - } - - if (!self::frameExists($eTrace, $eFile, $eLine)) { - array_unshift( - $eTrace, - ['file' => $eFile, 'line' => $eLine], - ); - } - - $prefix = defined('__PHPUNIT_PHAR_ROOT__') ? __PHPUNIT_PHAR_ROOT__ : false; - $excludeList = new ExcludeList; - - foreach ($eTrace as $frame) { - if (self::shouldPrintFrame($frame, $prefix, $excludeList)) { - $filteredStacktrace .= sprintf( - "%s:%s\n", - $frame['file'], - $frame['line'] ?? '?', - ); - } - } - - return $filteredStacktrace; - } - - private static function shouldPrintFrame(array $frame, false|string $prefix, ExcludeList $excludeList): bool - { - if (!isset($frame['file'])) { - return false; - } - - $file = $frame['file']; - $fileIsNotPrefixed = $prefix === false || !str_starts_with($file, $prefix); - - // @see https://github.com/sebastianbergmann/phpunit/issues/4033 - if (isset($GLOBALS['_SERVER']['SCRIPT_NAME'])) { - $script = realpath($GLOBALS['_SERVER']['SCRIPT_NAME']); - } else { - $script = ''; - } - - return $fileIsNotPrefixed && - $file !== $script && - self::fileIsExcluded($file, $excludeList) && - is_file($file); - } - - private static function fileIsExcluded(string $file, ExcludeList $excludeList): bool - { - return (empty($GLOBALS['__PHPUNIT_ISOLATION_EXCLUDE_LIST']) || - !in_array($file, $GLOBALS['__PHPUNIT_ISOLATION_EXCLUDE_LIST'], true)) && - !$excludeList->isExcluded($file); - } - - private static function frameExists(array $trace, string $file, int $line): bool - { - foreach ($trace as $frame) { - if (isset($frame['file'], $frame['line']) && $frame['file'] === $file && $frame['line'] === $line) { - return true; - } - } - - return false; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/GlobalState.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Util/GlobalState.php deleted file mode 100644 index 0e298392..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/GlobalState.php +++ /dev/null @@ -1,289 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use const PHP_MAJOR_VERSION; -use const PHP_MINOR_VERSION; -use function array_keys; -use function array_reverse; -use function array_shift; -use function defined; -use function get_defined_constants; -use function get_included_files; -use function in_array; -use function ini_get_all; -use function is_array; -use function is_file; -use function is_scalar; -use function preg_match; -use function serialize; -use function sprintf; -use function str_ends_with; -use function str_starts_with; -use function strtr; -use function var_export; -use Closure; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class GlobalState -{ - /** - * @psalm-var list - */ - private const SUPER_GLOBAL_ARRAYS = [ - '_ENV', - '_POST', - '_GET', - '_COOKIE', - '_SERVER', - '_FILES', - '_REQUEST', - ]; - - /** - * @psalm-var array> - */ - private const DEPRECATED_INI_SETTINGS = [ - '7.3' => [ - 'iconv.input_encoding' => true, - 'iconv.output_encoding' => true, - 'iconv.internal_encoding' => true, - 'mbstring.func_overload' => true, - 'mbstring.http_input' => true, - 'mbstring.http_output' => true, - 'mbstring.internal_encoding' => true, - 'string.strip_tags' => true, - ], - - '7.4' => [ - 'iconv.input_encoding' => true, - 'iconv.output_encoding' => true, - 'iconv.internal_encoding' => true, - 'mbstring.func_overload' => true, - 'mbstring.http_input' => true, - 'mbstring.http_output' => true, - 'mbstring.internal_encoding' => true, - 'pdo_odbc.db2_instance_name' => true, - 'string.strip_tags' => true, - ], - - '8.0' => [ - 'iconv.input_encoding' => true, - 'iconv.output_encoding' => true, - 'iconv.internal_encoding' => true, - 'mbstring.http_input' => true, - 'mbstring.http_output' => true, - 'mbstring.internal_encoding' => true, - ], - - '8.1' => [ - 'auto_detect_line_endings' => true, - 'filter.default' => true, - 'iconv.input_encoding' => true, - 'iconv.output_encoding' => true, - 'iconv.internal_encoding' => true, - 'mbstring.http_input' => true, - 'mbstring.http_output' => true, - 'mbstring.internal_encoding' => true, - 'oci8.old_oci_close_semantics' => true, - ], - - '8.2' => [ - 'auto_detect_line_endings' => true, - 'filter.default' => true, - 'iconv.input_encoding' => true, - 'iconv.output_encoding' => true, - 'iconv.internal_encoding' => true, - 'mbstring.http_input' => true, - 'mbstring.http_output' => true, - 'mbstring.internal_encoding' => true, - 'oci8.old_oci_close_semantics' => true, - ], - - '8.3' => [ - 'auto_detect_line_endings' => true, - 'filter.default' => true, - 'iconv.input_encoding' => true, - 'iconv.output_encoding' => true, - 'iconv.internal_encoding' => true, - 'mbstring.http_input' => true, - 'mbstring.http_output' => true, - 'mbstring.internal_encoding' => true, - 'oci8.old_oci_close_semantics' => true, - ], - ]; - - /** - * @throws Exception - */ - public static function getIncludedFilesAsString(): string - { - return self::processIncludedFilesAsString(get_included_files()); - } - - /** - * @psalm-param list $files - * - * @throws Exception - */ - public static function processIncludedFilesAsString(array $files): string - { - $excludeList = new ExcludeList; - $prefix = false; - $result = ''; - - if (defined('__PHPUNIT_PHAR__')) { - $prefix = 'phar://' . __PHPUNIT_PHAR__ . '/'; - } - - // Do not process bootstrap script - array_shift($files); - - // If bootstrap script was a Composer bin proxy, skip the second entry as well - if (str_ends_with(strtr($files[0], '\\', '/'), '/phpunit/phpunit/phpunit')) { - array_shift($files); - } - - foreach (array_reverse($files) as $file) { - if (!empty($GLOBALS['__PHPUNIT_ISOLATION_EXCLUDE_LIST']) && - in_array($file, $GLOBALS['__PHPUNIT_ISOLATION_EXCLUDE_LIST'], true)) { - continue; - } - - if ($prefix !== false && str_starts_with($file, $prefix)) { - continue; - } - - // Skip virtual file system protocols - if (preg_match('/^(vfs|phpvfs[a-z0-9]+):/', $file)) { - continue; - } - - if (!$excludeList->isExcluded($file) && is_file($file)) { - $result = 'require_once \'' . $file . "';\n" . $result; - } - } - - return $result; - } - - public static function getIniSettingsAsString(): string - { - $result = ''; - - foreach (ini_get_all(null, false) as $key => $value) { - if (self::isIniSettingDeprecated($key)) { - continue; - } - - $result .= sprintf( - '@ini_set(%s, %s);' . "\n", - self::exportVariable($key), - self::exportVariable((string) $value), - ); - } - - return $result; - } - - public static function getConstantsAsString(): string - { - $constants = get_defined_constants(true); - $result = ''; - - if (isset($constants['user'])) { - foreach ($constants['user'] as $name => $value) { - $result .= sprintf( - 'if (!defined(\'%s\')) define(\'%s\', %s);' . "\n", - $name, - $name, - self::exportVariable($value), - ); - } - } - - return $result; - } - - public static function getGlobalsAsString(): string - { - $result = ''; - - foreach (self::SUPER_GLOBAL_ARRAYS as $superGlobalArray) { - if (isset($GLOBALS[$superGlobalArray]) && is_array($GLOBALS[$superGlobalArray])) { - foreach (array_keys($GLOBALS[$superGlobalArray]) as $key) { - if ($GLOBALS[$superGlobalArray][$key] instanceof Closure) { - continue; - } - - $result .= sprintf( - '$GLOBALS[\'%s\'][\'%s\'] = %s;' . "\n", - $superGlobalArray, - $key, - self::exportVariable($GLOBALS[$superGlobalArray][$key]), - ); - } - } - } - - $excludeList = self::SUPER_GLOBAL_ARRAYS; - $excludeList[] = 'GLOBALS'; - - foreach (array_keys($GLOBALS) as $key) { - if (!$GLOBALS[$key] instanceof Closure && !in_array($key, $excludeList, true)) { - $result .= sprintf( - '$GLOBALS[\'%s\'] = %s;' . "\n", - $key, - self::exportVariable($GLOBALS[$key]), - ); - } - } - - return $result; - } - - private static function exportVariable(mixed $variable): string - { - if (is_scalar($variable) || $variable === null || - (is_array($variable) && self::arrayOnlyContainsScalars($variable))) { - return var_export($variable, true); - } - - return 'unserialize(' . var_export(serialize($variable), true) . ')'; - } - - private static function arrayOnlyContainsScalars(array $array): bool - { - $result = true; - - foreach ($array as $element) { - if (is_array($element)) { - $result = self::arrayOnlyContainsScalars($element); - } elseif (!is_scalar($element) && $element !== null) { - $result = false; - } - - if (!$result) { - break; - } - } - - return $result; - } - - private static function isIniSettingDeprecated(string $iniSetting): bool - { - return isset(self::DEPRECATED_INI_SETTINGS[PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION][$iniSetting]); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Json.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Json.php deleted file mode 100644 index a9b5e2dc..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Json.php +++ /dev/null @@ -1,102 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use const JSON_PRETTY_PRINT; -use const JSON_UNESCAPED_SLASHES; -use const JSON_UNESCAPED_UNICODE; -use const SORT_STRING; -use function is_object; -use function is_scalar; -use function json_decode; -use function json_encode; -use function json_last_error; -use function ksort; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Json -{ - /** - * @throws InvalidJsonException - */ - public static function prettify(string $json): string - { - $decodedJson = json_decode($json, false); - - if (json_last_error()) { - throw new InvalidJsonException; - } - - return json_encode($decodedJson, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); - } - - /** - * To allow comparison of JSON strings, first process them into a consistent - * format so that they can be compared as strings. - * - * @return array ($error, $canonicalized_json) The $error parameter is used - * to indicate an error decoding the json. This is used to avoid ambiguity - * with JSON strings consisting entirely of 'null' or 'false'. - */ - public static function canonicalize(string $json): array - { - $decodedJson = json_decode($json); - - if (json_last_error()) { - return [true, null]; - } - - self::recursiveSort($decodedJson); - - $reencodedJson = json_encode($decodedJson); - - return [false, $reencodedJson]; - } - - /** - * JSON object keys are unordered while PHP array keys are ordered. - * - * Sort all array keys to ensure both the expected and actual values have - * their keys in the same order. - */ - private static function recursiveSort(mixed &$json): void - { - // Nulls, empty arrays, and scalars need no further handling. - if (!$json || is_scalar($json)) { - return; - } - - $isObject = is_object($json); - - if ($isObject) { - // Objects need to be sorted during canonicalization to ensure - // correct comparsion since JSON objects are unordered. It must be - // kept as an object so that the value correctly stays as a JSON - // object instead of potentially being converted to an array. This - // approach ensures that numeric string JSON keys are preserved and - // don't risk being flattened due to PHP's array semantics. - // See #2919, #4584, #4674 - $json = (array) $json; - ksort($json, SORT_STRING); - } - - foreach ($json as &$value) { - self::recursiveSort($value); - } - - if ($isObject) { - $json = (object) $json; - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php deleted file mode 100644 index 054e9e14..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php +++ /dev/null @@ -1,322 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util\PHP; - -use const PHP_BINARY; -use const PHP_SAPI; -use function array_keys; -use function array_merge; -use function assert; -use function explode; -use function file_get_contents; -use function ini_get_all; -use function is_file; -use function restore_error_handler; -use function set_error_handler; -use function trim; -use function unlink; -use function unserialize; -use ErrorException; -use PHPUnit\Event\Code\TestMethodBuilder; -use PHPUnit\Event\Code\ThrowableBuilder; -use PHPUnit\Event\Facade; -use PHPUnit\Event\NoPreviousThrowableException; -use PHPUnit\Event\TestData\MoreThanOneDataSetFromDataProviderException; -use PHPUnit\Framework\AssertionFailedError; -use PHPUnit\Framework\Exception; -use PHPUnit\Framework\Test; -use PHPUnit\Framework\TestCase; -use PHPUnit\Runner\CodeCoverage; -use PHPUnit\TestRunner\TestResult\PassedTests; -use SebastianBergmann\Environment\Runtime; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -abstract class AbstractPhpProcess -{ - protected bool $stderrRedirection = false; - protected string $stdin = ''; - protected string $arguments = ''; - - /** - * @psalm-var array - */ - protected array $env = []; - - public static function factory(): self - { - return new DefaultPhpProcess; - } - - /** - * Defines if should use STDERR redirection or not. - * - * Then $stderrRedirection is TRUE, STDERR is redirected to STDOUT. - */ - public function setUseStderrRedirection(bool $stderrRedirection): void - { - $this->stderrRedirection = $stderrRedirection; - } - - /** - * Returns TRUE if uses STDERR redirection or FALSE if not. - */ - public function useStderrRedirection(): bool - { - return $this->stderrRedirection; - } - - /** - * Sets the input string to be sent via STDIN. - */ - public function setStdin(string $stdin): void - { - $this->stdin = $stdin; - } - - /** - * Returns the input string to be sent via STDIN. - */ - public function getStdin(): string - { - return $this->stdin; - } - - /** - * Sets the string of arguments to pass to the php job. - */ - public function setArgs(string $arguments): void - { - $this->arguments = $arguments; - } - - /** - * Returns the string of arguments to pass to the php job. - */ - public function getArgs(): string - { - return $this->arguments; - } - - /** - * Sets the array of environment variables to start the child process with. - * - * @psalm-param array $env - */ - public function setEnv(array $env): void - { - $this->env = $env; - } - - /** - * Returns the array of environment variables to start the child process with. - */ - public function getEnv(): array - { - return $this->env; - } - - /** - * Runs a single test in a separate PHP process. - * - * @throws \PHPUnit\Runner\Exception - * @throws Exception - * @throws MoreThanOneDataSetFromDataProviderException - * @throws NoPreviousThrowableException - */ - public function runTestJob(string $job, Test $test, string $processResultFile): void - { - $_result = $this->runJob($job); - - $processResult = ''; - - if (is_file($processResultFile)) { - $processResult = file_get_contents($processResultFile); - - @unlink($processResultFile); - } - - $this->processChildResult( - $test, - $processResult, - $_result['stderr'], - ); - } - - /** - * Returns the command based into the configurations. - * - * @return string[] - */ - public function getCommand(array $settings, ?string $file = null): array - { - $runtime = new Runtime; - - $command = []; - $command[] = PHP_BINARY; - - if ($runtime->hasPCOV()) { - $settings = array_merge( - $settings, - $runtime->getCurrentSettings( - array_keys(ini_get_all('pcov')), - ), - ); - } elseif ($runtime->hasXdebug()) { - $settings = array_merge( - $settings, - $runtime->getCurrentSettings( - array_keys(ini_get_all('xdebug')), - ), - ); - } - - $command = array_merge($command, $this->settingsToParameters($settings)); - - if (PHP_SAPI === 'phpdbg') { - $command[] = '-qrr'; - - if (!$file) { - $command[] = 's='; - } - } - - if ($file) { - $command[] = '-f'; - $command[] = $file; - } - - if ($this->arguments) { - if (!$file) { - $command[] = '--'; - } - - foreach (explode(' ', $this->arguments) as $arg) { - $command[] = trim($arg); - } - } - - return $command; - } - - /** - * Runs a single job (PHP code) using a separate PHP process. - */ - abstract public function runJob(string $job, array $settings = []): array; - - /** - * @return list - */ - protected function settingsToParameters(array $settings): array - { - $buffer = []; - - foreach ($settings as $setting) { - $buffer[] = '-d'; - $buffer[] = $setting; - } - - return $buffer; - } - - /** - * @throws \PHPUnit\Runner\Exception - * @throws Exception - * @throws MoreThanOneDataSetFromDataProviderException - * @throws NoPreviousThrowableException - */ - private function processChildResult(Test $test, string $stdout, string $stderr): void - { - if (!empty($stderr)) { - $exception = new Exception(trim($stderr)); - - assert($test instanceof TestCase); - - Facade::emitter()->testErrored( - TestMethodBuilder::fromTestCase($test), - ThrowableBuilder::from($exception), - ); - - return; - } - - set_error_handler( - /** - * @throws ErrorException - */ - static function (int $errno, string $errstr, string $errfile, int $errline): never - { - throw new ErrorException($errstr, $errno, $errno, $errfile, $errline); - }, - ); - - try { - $childResult = unserialize($stdout); - - restore_error_handler(); - - if ($childResult === false) { - $exception = new AssertionFailedError('Test was run in child process and ended unexpectedly'); - - assert($test instanceof TestCase); - - Facade::emitter()->testErrored( - TestMethodBuilder::fromTestCase($test), - ThrowableBuilder::from($exception), - ); - - Facade::emitter()->testFinished( - TestMethodBuilder::fromTestCase($test), - 0, - ); - } - } catch (ErrorException $e) { - restore_error_handler(); - - $childResult = false; - - $exception = new Exception(trim($stdout), 0, $e); - - assert($test instanceof TestCase); - - Facade::emitter()->testErrored( - TestMethodBuilder::fromTestCase($test), - ThrowableBuilder::from($exception), - ); - } - - if ($childResult !== false) { - if (!empty($childResult['output'])) { - $output = $childResult['output']; - } - - Facade::instance()->forward($childResult['events']); - PassedTests::instance()->import($childResult['passedTests']); - - assert($test instanceof TestCase); - - $test->setResult($childResult['testResult']); - $test->addToAssertionCount($childResult['numAssertions']); - - if (CodeCoverage::instance()->isActive() && $childResult['codeCoverage'] instanceof \SebastianBergmann\CodeCoverage\CodeCoverage) { - CodeCoverage::instance()->codeCoverage()->merge( - $childResult['codeCoverage'], - ); - } - } - - if (!empty($output)) { - print $output; - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php deleted file mode 100644 index e933c24e..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php +++ /dev/null @@ -1,148 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util\PHP; - -use function array_merge; -use function fclose; -use function file_put_contents; -use function fwrite; -use function is_array; -use function is_resource; -use function proc_close; -use function proc_open; -use function stream_get_contents; -use function sys_get_temp_dir; -use function tempnam; -use function unlink; -use PHPUnit\Framework\Exception; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -class DefaultPhpProcess extends AbstractPhpProcess -{ - private ?string $tempFile = null; - - /** - * Runs a single job (PHP code) using a separate PHP process. - * - * @psalm-return array{stdout: string, stderr: string} - * - * @throws Exception - * @throws PhpProcessException - */ - public function runJob(string $job, array $settings = []): array - { - if ($this->stdin) { - if (!($this->tempFile = tempnam(sys_get_temp_dir(), 'phpunit_')) || - file_put_contents($this->tempFile, $job) === false) { - throw new PhpProcessException( - 'Unable to write temporary file', - ); - } - - $job = $this->stdin; - } - - return $this->runProcess($job, $settings); - } - - /** - * Handles creating the child process and returning the STDOUT and STDERR. - * - * @psalm-return array{stdout: string, stderr: string} - * - * @throws Exception - * @throws PhpProcessException - */ - protected function runProcess(string $job, array $settings): array - { - $env = null; - - if ($this->env) { - $env = $_SERVER ?? []; - unset($env['argv'], $env['argc']); - $env = array_merge($env, $this->env); - - foreach ($env as $envKey => $envVar) { - if (is_array($envVar)) { - unset($env[$envKey]); - } - } - } - - $pipeSpec = [ - 0 => ['pipe', 'r'], - 1 => ['pipe', 'w'], - 2 => ['pipe', 'w'], - ]; - - if ($this->stderrRedirection) { - $pipeSpec[2] = ['redirect', 1]; - } - - $process = proc_open( - $this->getCommand($settings, $this->tempFile), - $pipeSpec, - $pipes, - null, - $env, - ); - - if (!is_resource($process)) { - throw new PhpProcessException( - 'Unable to spawn worker process', - ); - } - - if ($job) { - $this->process($pipes[0], $job); - } - - fclose($pipes[0]); - - $stderr = $stdout = ''; - - if (isset($pipes[1])) { - $stdout = stream_get_contents($pipes[1]); - - fclose($pipes[1]); - } - - if (isset($pipes[2])) { - $stderr = stream_get_contents($pipes[2]); - - fclose($pipes[2]); - } - - proc_close($process); - - $this->cleanup(); - - return ['stdout' => $stdout, 'stderr' => $stderr]; - } - - /** - * @param resource $pipe - */ - protected function process($pipe, string $job): void - { - fwrite($pipe, $job); - } - - protected function cleanup(): void - { - if ($this->tempFile) { - unlink($this->tempFile); - } - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/PHP/Template/TestCaseClass.tpl b/docker/streamline-src/vendor/phpunit/phpunit/src/Util/PHP/Template/TestCaseClass.tpl deleted file mode 100644 index 0a869c4d..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/PHP/Template/TestCaseClass.tpl +++ /dev/null @@ -1,116 +0,0 @@ -initForIsolation( - PHPUnit\Event\Telemetry\HRTime::fromSecondsAndNanoseconds( - {offsetSeconds}, - {offsetNanoseconds} - ), - {exportObjects}, - ); - - require_once '{filename}'; - - if ({collectCodeCoverageInformation}) { - CodeCoverage::instance()->init(ConfigurationRegistry::get(), CodeCoverageFilterRegistry::instance(), true); - CodeCoverage::instance()->ignoreLines({linesToBeIgnored}); - } - - $test = new {className}('{name}'); - - $test->setData('{dataName}', unserialize('{data}')); - $test->setDependencyInput(unserialize('{dependencyInput}')); - $test->setInIsolation(true); - - ob_end_clean(); - - $test->run(); - - $output = ''; - - if (!$test->expectsOutput()) { - $output = $test->output(); - } - - ini_set('xdebug.scream', '0'); - - // Not every STDOUT target stream is rewindable - @rewind(STDOUT); - - if ($stdout = @stream_get_contents(STDOUT)) { - $output = $stdout . $output; - $streamMetaData = stream_get_meta_data(STDOUT); - - if (!empty($streamMetaData['stream_type']) && 'STDIO' === $streamMetaData['stream_type']) { - @ftruncate(STDOUT, 0); - @rewind(STDOUT); - } - } - - file_put_contents( - '{processResultFile}', - serialize( - [ - 'testResult' => $test->result(), - 'codeCoverage' => {collectCodeCoverageInformation} ? CodeCoverage::instance()->codeCoverage() : null, - 'numAssertions' => $test->numberOfAssertionsPerformed(), - 'output' => $output, - 'events' => $dispatcher->flush(), - 'passedTests' => PassedTests::instance() - ] - ) - ); -} - -function __phpunit_error_handler($errno, $errstr, $errfile, $errline) -{ - return true; -} - -set_error_handler('__phpunit_error_handler'); - -{constants} -{included_files} -{globals} - -restore_error_handler(); - -ConfigurationRegistry::loadFrom('{serializedConfiguration}'); -(new PhpHandler)->handle(ConfigurationRegistry::get()->php()); - -if ('{bootstrap}' !== '') { - require_once '{bootstrap}'; -} - -__phpunit_run_isolated_test(); diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/PHP/Template/TestCaseMethod.tpl b/docker/streamline-src/vendor/phpunit/phpunit/src/Util/PHP/Template/TestCaseMethod.tpl deleted file mode 100644 index 3e508ef6..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/PHP/Template/TestCaseMethod.tpl +++ /dev/null @@ -1,116 +0,0 @@ -initForIsolation( - PHPUnit\Event\Telemetry\HRTime::fromSecondsAndNanoseconds( - {offsetSeconds}, - {offsetNanoseconds} - ), - {exportObjects}, - ); - - require_once '{filename}'; - - if ({collectCodeCoverageInformation}) { - CodeCoverage::instance()->init(ConfigurationRegistry::get(), CodeCoverageFilterRegistry::instance(), true); - CodeCoverage::instance()->ignoreLines({linesToBeIgnored}); - } - - $test = new {className}('{methodName}'); - - $test->setData('{dataName}', unserialize('{data}')); - $test->setDependencyInput(unserialize('{dependencyInput}')); - $test->setInIsolation(true); - - ob_end_clean(); - - $test->run(); - - $output = ''; - - if (!$test->expectsOutput()) { - $output = $test->output(); - } - - ini_set('xdebug.scream', '0'); - - // Not every STDOUT target stream is rewindable - @rewind(STDOUT); - - if ($stdout = @stream_get_contents(STDOUT)) { - $output = $stdout . $output; - $streamMetaData = stream_get_meta_data(STDOUT); - - if (!empty($streamMetaData['stream_type']) && 'STDIO' === $streamMetaData['stream_type']) { - @ftruncate(STDOUT, 0); - @rewind(STDOUT); - } - } - - file_put_contents( - '{processResultFile}', - serialize( - [ - 'testResult' => $test->result(), - 'codeCoverage' => {collectCodeCoverageInformation} ? CodeCoverage::instance()->codeCoverage() : null, - 'numAssertions' => $test->numberOfAssertionsPerformed(), - 'output' => $output, - 'events' => $dispatcher->flush(), - 'passedTests' => PassedTests::instance() - ] - ) - ); -} - -function __phpunit_error_handler($errno, $errstr, $errfile, $errline) -{ - return true; -} - -set_error_handler('__phpunit_error_handler'); - -{constants} -{included_files} -{globals} - -restore_error_handler(); - -ConfigurationRegistry::loadFrom('{serializedConfiguration}'); -(new PhpHandler)->handle(ConfigurationRegistry::get()->php()); - -if ('{bootstrap}' !== '') { - require_once '{bootstrap}'; -} - -__phpunit_run_isolated_test(); diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Reflection.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Reflection.php deleted file mode 100644 index 0aac9259..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Reflection.php +++ /dev/null @@ -1,107 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use function array_keys; -use function array_merge; -use function array_reverse; -use PHPUnit\Framework\Assert; -use PHPUnit\Framework\TestCase; -use ReflectionClass; -use ReflectionException; -use ReflectionMethod; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Reflection -{ - /** - * @psalm-param class-string $className - * @psalm-param non-empty-string $methodName - * - * @psalm-return array{file: non-empty-string, line: non-negative-int} - */ - public static function sourceLocationFor(string $className, string $methodName): array - { - try { - $reflector = new ReflectionMethod($className, $methodName); - - $file = $reflector->getFileName(); - $line = $reflector->getStartLine(); - } catch (ReflectionException) { - $file = 'unknown'; - $line = 0; - } - - return [ - 'file' => $file, - 'line' => $line, - ]; - } - - /** - * @psalm-return list - */ - public static function publicMethodsInTestClass(ReflectionClass $class): array - { - return self::filterAndSortMethods($class, ReflectionMethod::IS_PUBLIC, true); - } - - /** - * @psalm-return list - */ - public static function methodsInTestClass(ReflectionClass $class): array - { - return self::filterAndSortMethods($class, null, false); - } - - /** - * @psalm-return list - */ - private static function filterAndSortMethods(ReflectionClass $class, ?int $filter, bool $sortHighestToLowest): array - { - $methodsByClass = []; - - foreach ($class->getMethods($filter) as $method) { - $declaringClassName = $method->getDeclaringClass()->getName(); - - if ($declaringClassName === TestCase::class) { - continue; - } - - if ($declaringClassName === Assert::class) { - continue; - } - - if (!isset($methodsByClass[$declaringClassName])) { - $methodsByClass[$declaringClassName] = []; - } - - $methodsByClass[$declaringClassName][] = $method; - } - - $classNames = array_keys($methodsByClass); - - if ($sortHighestToLowest) { - $classNames = array_reverse($classNames); - } - - $methods = []; - - foreach ($classNames as $className) { - $methods = array_merge($methods, $methodsByClass[$className]); - } - - return $methods; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Test.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Test.php deleted file mode 100644 index 51d90769..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Test.php +++ /dev/null @@ -1,40 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use function str_starts_with; -use PHPUnit\Metadata\Parser\Registry; -use ReflectionMethod; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Test -{ - public static function isTestMethod(ReflectionMethod $method): bool - { - if (!$method->isPublic()) { - return false; - } - - if (str_starts_with($method->getName(), 'test')) { - return true; - } - - $metadata = Registry::parser()->forMethod( - $method->getDeclaringClass()->getName(), - $method->getName(), - ); - - return $metadata->isTest()->isNotEmpty(); - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/ThrowableToStringMapper.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Util/ThrowableToStringMapper.php deleted file mode 100644 index a0c1289a..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/ThrowableToStringMapper.php +++ /dev/null @@ -1,52 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use function trim; -use PHPUnit\Framework\ExpectationFailedException; -use PHPUnit\Framework\PhptAssertionFailedError; -use PHPUnit\Framework\SelfDescribing; -use PHPUnit\Runner\ErrorException; -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ThrowableToStringMapper -{ - public static function map(Throwable $t): string - { - if ($t instanceof ErrorException) { - return $t->getMessage(); - } - - if ($t instanceof SelfDescribing) { - $buffer = $t->toString(); - - if ($t instanceof ExpectationFailedException && $t->getComparisonFailure()) { - $buffer .= $t->getComparisonFailure()->getDiff(); - } - - if ($t instanceof PhptAssertionFailedError) { - $buffer .= $t->diff(); - } - - if (!empty($buffer)) { - $buffer = trim($buffer) . "\n"; - } - - return $buffer; - } - - return $t::class . ': ' . $t->getMessage() . "\n"; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Xml/Loader.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Xml/Loader.php deleted file mode 100644 index 3a027619..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Xml/Loader.php +++ /dev/null @@ -1,125 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util\Xml; - -use const PHP_OS_FAMILY; -use function chdir; -use function dirname; -use function error_reporting; -use function file_get_contents; -use function getcwd; -use function libxml_get_errors; -use function libxml_use_internal_errors; -use function sprintf; -use DOMDocument; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Loader -{ - /** - * @throws XmlException - */ - public function loadFile(string $filename): DOMDocument - { - $reporting = error_reporting(0); - $contents = file_get_contents($filename); - - error_reporting($reporting); - - if ($contents === false) { - throw new XmlException( - sprintf( - 'Could not read XML from file "%s"', - $filename, - ), - ); - } - - return $this->load($contents, $filename); - } - - /** - * @throws XmlException - */ - public function load(string $actual, ?string $filename = null): DOMDocument - { - if ($actual === '') { - if ($filename === null) { - throw new XmlException('Could not parse XML from empty string'); - } - - throw new XmlException( - sprintf( - 'Could not parse XML from empty file "%s"', - $filename, - ), - ); - } - - $document = new DOMDocument; - $document->preserveWhiteSpace = false; - - $internal = libxml_use_internal_errors(true); - $message = ''; - $reporting = error_reporting(0); - - // Required for XInclude - if ($filename !== null) { - // Required for XInclude on Windows - if (PHP_OS_FAMILY === 'Windows') { - $cwd = getcwd(); - @chdir(dirname($filename)); - } - - $document->documentURI = $filename; - } - - $loaded = $document->loadXML($actual); - - if ($filename !== null) { - $document->xinclude(); - } - - foreach (libxml_get_errors() as $error) { - $message .= "\n" . $error->message; - } - - libxml_use_internal_errors($internal); - error_reporting($reporting); - - if (isset($cwd)) { - @chdir($cwd); - } - - if ($loaded === false || $message !== '') { - if ($filename !== null) { - throw new XmlException( - sprintf( - 'Could not load "%s"%s', - $filename, - $message !== '' ? ":\n" . $message : '', - ), - ); - } - - if ($message === '') { - $message = 'Could not load XML for unknown reason'; - } - - throw new XmlException($message); - } - - return $document; - } -} diff --git a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Xml/Xml.php b/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Xml/Xml.php deleted file mode 100644 index 70c5fec7..00000000 --- a/docker/streamline-src/vendor/phpunit/phpunit/src/Util/Xml/Xml.php +++ /dev/null @@ -1,81 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use const ENT_QUOTES; -use function htmlspecialchars; -use function mb_convert_encoding; -use function ord; -use function preg_replace; -use function strlen; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Xml -{ - /** - * Escapes a string for the use in XML documents. - * - * Any Unicode character is allowed, excluding the surrogate blocks, FFFE, - * and FFFF (not even as character reference). - * - * @see https://www.w3.org/TR/xml/#charsets - */ - public static function prepareString(string $string): string - { - return preg_replace( - '/[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]/', - '', - htmlspecialchars( - self::convertToUtf8($string), - ENT_QUOTES, - ), - ); - } - - private static function convertToUtf8(string $string): string - { - if (!self::isUtf8($string)) { - $string = mb_convert_encoding($string, 'UTF-8'); - } - - return $string; - } - - private static function isUtf8(string $string): bool - { - $length = strlen($string); - - for ($i = 0; $i < $length; $i++) { - if (ord($string[$i]) < 0x80) { - $n = 0; - } elseif ((ord($string[$i]) & 0xE0) === 0xC0) { - $n = 1; - } elseif ((ord($string[$i]) & 0xF0) === 0xE0) { - $n = 2; - } elseif ((ord($string[$i]) & 0xF0) === 0xF0) { - $n = 3; - } else { - return false; - } - - for ($j = 0; $j < $n; $j++) { - if ((++$i === $length) || ((ord($string[$i]) & 0xC0) !== 0x80)) { - return false; - } - } - } - - return true; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner.php b/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner.php deleted file mode 100644 index 9cde20fe..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner.php +++ /dev/null @@ -1,360 +0,0 @@ -yolo = $yolo; - $this->strictTypes = $strictTypes; - - $this->parser = $parser ?? (new ParserFactory())->createParser(); - $this->printer = $printer ?: new Printer(); - $this->traverser = $traverser ?: new NodeTraverser(); - - foreach ($this->getDefaultPasses() as $pass) { - $this->traverser->addVisitor($pass); - } - } - - /** - * Check whether this CodeCleaner is in YOLO mode. - */ - public function yolo(): bool - { - return $this->yolo; - } - - /** - * Get default CodeCleaner passes. - * - * @return CodeCleanerPass[] - */ - private function getDefaultPasses(): array - { - $useStatementPass = new UseStatementPass(); - $namespacePass = new NamespacePass($this); - - // Try to add implicit `use` statements and an implicit namespace, - // based on the file in which the `debug` call was made. - $this->addImplicitDebugContext([$useStatementPass, $namespacePass]); - - // A set of code cleaner passes that don't try to do any validation, and - // only do minimal rewriting to make things work inside the REPL. - // - // When in --yolo mode, these are the only code cleaner passes used. - $rewritePasses = [ - new LeavePsyshAlonePass(), - $useStatementPass, // must run before the namespace pass - new ExitPass(), - new ImplicitReturnPass(), - new MagicConstantsPass(), - $namespacePass, // must run after the implicit return pass - new RequirePass(), - new StrictTypesPass($this->strictTypes), - ]; - - if ($this->yolo) { - return $rewritePasses; - } - - return [ - // Validation passes - new AbstractClassPass(), - new AssignThisVariablePass(), - new CalledClassPass(), - new CallTimePassByReferencePass(), - new FinalClassPass(), - new FunctionContextPass(), - new FunctionReturnInWriteContextPass(), - new IssetPass(), - new LabelContextPass(), - new ListPass(), - new LoopContextPass(), - new PassableByReferencePass(), - new ReturnTypePass(), - new EmptyArrayDimFetchPass(), - new ValidConstructorPass(), - - // Rewriting shenanigans - ...$rewritePasses, - - // Namespace-aware validation (which depends on aforementioned shenanigans) - new ValidClassNamePass(), - new ValidFunctionNamePass(), - ]; - } - - /** - * "Warm up" code cleaner passes when we're coming from a debug call. - * - * This is useful, for example, for `UseStatementPass` and `NamespacePass` - * which keep track of state between calls, to maintain the current - * namespace and a map of use statements. - * - * @param array $passes - */ - private function addImplicitDebugContext(array $passes) - { - $file = $this->getDebugFile(); - if ($file === null) { - return; - } - - try { - $code = @\file_get_contents($file); - if (!$code) { - return; - } - - $stmts = $this->parse($code, true); - if ($stmts === false) { - return; - } - - // Set up a clean traverser for just these code cleaner passes - // @todo Pass visitors directly to once we drop support for PHP-Parser 4.x - $traverser = new NodeTraverser(); - foreach ($passes as $pass) { - $traverser->addVisitor($pass); - } - - $traverser->traverse($stmts); - } catch (\Throwable $e) { - // Don't care. - } - } - - /** - * Search the stack trace for a file in which the user called Psy\debug. - * - * @return string|null - */ - private static function getDebugFile() - { - $trace = \debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS); - - foreach (\array_reverse($trace) as $stackFrame) { - if (!self::isDebugCall($stackFrame)) { - continue; - } - - if (\preg_match('/eval\(/', $stackFrame['file'])) { - \preg_match_all('/([^\(]+)\((\d+)/', $stackFrame['file'], $matches); - - return $matches[1][0]; - } - - return $stackFrame['file']; - } - } - - /** - * Check whether a given backtrace frame is a call to Psy\debug. - * - * @param array $stackFrame - */ - private static function isDebugCall(array $stackFrame): bool - { - $class = isset($stackFrame['class']) ? $stackFrame['class'] : null; - $function = isset($stackFrame['function']) ? $stackFrame['function'] : null; - - return ($class === null && $function === 'Psy\\debug') || - ($class === Shell::class && $function === 'debug'); - } - - /** - * Clean the given array of code. - * - * @throws ParseErrorException if the code is invalid PHP, and cannot be coerced into valid PHP - * - * @param array $codeLines - * @param bool $requireSemicolons - * - * @return string|false Cleaned PHP code, False if the input is incomplete - */ - public function clean(array $codeLines, bool $requireSemicolons = false) - { - $stmts = $this->parse('traverser->traverse($stmts); - - // Work around https://github.com/nikic/PHP-Parser/issues/399 - $oldLocale = \setlocale(\LC_NUMERIC, 0); - \setlocale(\LC_NUMERIC, 'C'); - - $code = $this->printer->prettyPrint($stmts); - - // Now put the locale back - \setlocale(\LC_NUMERIC, $oldLocale); - - return $code; - } - - /** - * Set the current local namespace. - */ - public function setNamespace(?array $namespace = null) - { - $this->namespace = $namespace; - } - - /** - * Get the current local namespace. - * - * @return array|null - */ - public function getNamespace() - { - return $this->namespace; - } - - /** - * Lex and parse a block of code. - * - * @see Parser::parse - * - * @throws ParseErrorException for parse errors that can't be resolved by - * waiting a line to see what comes next - * - * @return array|false A set of statements, or false if incomplete - */ - protected function parse(string $code, bool $requireSemicolons = false) - { - try { - return $this->parser->parse($code); - } catch (\PhpParser\Error $e) { - if ($this->parseErrorIsUnclosedString($e, $code)) { - return false; - } - - if ($this->parseErrorIsUnterminatedComment($e, $code)) { - return false; - } - - if ($this->parseErrorIsTrailingComma($e, $code)) { - return false; - } - - if (!$this->parseErrorIsEOF($e)) { - throw ParseErrorException::fromParseError($e); - } - - if ($requireSemicolons) { - return false; - } - - try { - // Unexpected EOF, try again with an implicit semicolon - return $this->parser->parse($code.';'); - } catch (\PhpParser\Error $e) { - return false; - } - } - } - - private function parseErrorIsEOF(\PhpParser\Error $e): bool - { - $msg = $e->getRawMessage(); - - return ($msg === 'Unexpected token EOF') || (\strpos($msg, 'Syntax error, unexpected EOF') !== false); - } - - /** - * A special test for unclosed single-quoted strings. - * - * Unlike (all?) other unclosed statements, single quoted strings have - * their own special beautiful snowflake syntax error just for - * themselves. - */ - private function parseErrorIsUnclosedString(\PhpParser\Error $e, string $code): bool - { - if ($e->getRawMessage() !== 'Syntax error, unexpected T_ENCAPSED_AND_WHITESPACE') { - return false; - } - - try { - $this->parser->parse($code."';"); - } catch (\Throwable $e) { - return false; - } - - return true; - } - - private function parseErrorIsUnterminatedComment(\PhpParser\Error $e, string $code): bool - { - return $e->getRawMessage() === 'Unterminated comment'; - } - - private function parseErrorIsTrailingComma(\PhpParser\Error $e, string $code): bool - { - return ($e->getRawMessage() === 'A trailing comma is not allowed here') && (\substr(\rtrim($code), -1) === ','); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/AbstractClassPass.php b/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/AbstractClassPass.php deleted file mode 100644 index eed1e8df..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/AbstractClassPass.php +++ /dev/null @@ -1,75 +0,0 @@ -class = $node; - $this->abstractMethods = []; - } elseif ($node instanceof ClassMethod) { - if ($node->isAbstract()) { - $name = \sprintf('%s::%s', $this->class->name, $node->name); - $this->abstractMethods[] = $name; - - if ($node->stmts !== null) { - $msg = \sprintf('Abstract function %s cannot contain body', $name); - throw new FatalErrorException($msg, 0, \E_ERROR, null, $node->getStartLine()); - } - } - } - } - - /** - * @throws FatalErrorException if the node is a non-abstract class with abstract methods - * - * @param Node $node - * - * @return int|Node|Node[]|null Replacement node (or special return value) - */ - public function leaveNode(Node $node) - { - if ($node instanceof Class_) { - $count = \count($this->abstractMethods); - if ($count > 0 && !$node->isAbstract()) { - $msg = \sprintf( - 'Class %s contains %d abstract method%s must therefore be declared abstract or implement the remaining methods (%s)', - $node->name, - $count, - ($count === 1) ? '' : 's', - \implode(', ', $this->abstractMethods) - ); - throw new FatalErrorException($msg, 0, \E_ERROR, null, $node->getStartLine()); - } - } - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/CalledClassPass.php b/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/CalledClassPass.php deleted file mode 100644 index 0ec0c010..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/CalledClassPass.php +++ /dev/null @@ -1,94 +0,0 @@ -inClass = false; - } - - /** - * @throws ErrorException if get_class or get_called_class is called without an object from outside a class - * - * @param Node $node - * - * @return int|Node|null Replacement node (or special return value) - */ - public function enterNode(Node $node) - { - if ($node instanceof Class_ || $node instanceof Trait_) { - $this->inClass = true; - } elseif ($node instanceof FuncCall && !$this->inClass) { - // We'll give any args at all (besides null) a pass. - // Technically we should be checking whether the args are objects, but this will do for now. - // - // @todo switch this to actually validate args when we get context-aware code cleaner passes. - if (!empty($node->args) && !$this->isNull($node->args[0])) { - return; - } - - // We'll ignore name expressions as well (things like `$foo()`) - if (!($node->name instanceof Name)) { - return; - } - - $name = \strtolower($node->name); - if (\in_array($name, ['get_class', 'get_called_class'])) { - $msg = \sprintf('%s() called without object from outside a class', $name); - throw new ErrorException($msg, 0, \E_USER_WARNING, null, $node->getStartLine()); - } - } - } - - /** - * @param Node $node - * - * @return int|Node|Node[]|null Replacement node (or special return value) - */ - public function leaveNode(Node $node) - { - if ($node instanceof Class_) { - $this->inClass = false; - } - } - - private function isNull(Node $node): bool - { - if ($node instanceof VariadicPlaceholder) { - return false; - } - - return $node->value instanceof ConstFetch && \strtolower($node->value->name) === 'null'; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/EmptyArrayDimFetchPass.php b/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/EmptyArrayDimFetchPass.php deleted file mode 100644 index 0429589b..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/EmptyArrayDimFetchPass.php +++ /dev/null @@ -1,66 +0,0 @@ -theseOnesAreFine = []; - } - - /** - * @throws FatalErrorException if the user used empty array dim fetch outside of assignment - * - * @param Node $node - * - * @return int|Node|null Replacement node (or special return value) - */ - public function enterNode(Node $node) - { - if ($node instanceof Assign && $node->var instanceof ArrayDimFetch) { - $this->theseOnesAreFine[] = $node->var; - } elseif ($node instanceof AssignRef && $node->expr instanceof ArrayDimFetch) { - $this->theseOnesAreFine[] = $node->expr; - } elseif ($node instanceof Foreach_ && $node->valueVar instanceof ArrayDimFetch) { - $this->theseOnesAreFine[] = $node->valueVar; - } elseif ($node instanceof ArrayDimFetch && $node->var instanceof ArrayDimFetch) { - // $a[]['b'] = 'c' - if (\in_array($node, $this->theseOnesAreFine)) { - $this->theseOnesAreFine[] = $node->var; - } - } - - if ($node instanceof ArrayDimFetch && $node->dim === null) { - if (!\in_array($node, $this->theseOnesAreFine)) { - throw new FatalErrorException(self::EXCEPTION_MESSAGE, $node->getStartLine()); - } - } - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/FinalClassPass.php b/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/FinalClassPass.php deleted file mode 100644 index cef5e91a..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/FinalClassPass.php +++ /dev/null @@ -1,72 +0,0 @@ -finalClasses = []; - } - - /** - * @throws FatalErrorException if the node is a class that extends a final class - * - * @param Node $node - * - * @return int|Node|null Replacement node (or special return value) - */ - public function enterNode(Node $node) - { - if ($node instanceof Class_) { - if ($node->extends) { - $extends = (string) $node->extends; - if ($this->isFinalClass($extends)) { - $msg = \sprintf('Class %s may not inherit from final class (%s)', $node->name, $extends); - throw new FatalErrorException($msg, 0, \E_ERROR, null, $node->getStartLine()); - } - } - - if ($node->isFinal()) { - $this->finalClasses[\strtolower($node->name)] = true; - } - } - } - - /** - * @param string $name Class name - */ - private function isFinalClass(string $name): bool - { - if (!\class_exists($name)) { - return isset($this->finalClasses[\strtolower($name)]); - } - - $refl = new \ReflectionClass($name); - - return $refl->isFinal(); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/FunctionContextPass.php b/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/FunctionContextPass.php deleted file mode 100644 index d5788911..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/FunctionContextPass.php +++ /dev/null @@ -1,67 +0,0 @@ -functionDepth = 0; - } - - /** - * @return int|Node|null Replacement node (or special return value) - */ - public function enterNode(Node $node) - { - if ($node instanceof FunctionLike) { - $this->functionDepth++; - - return; - } - - // node is inside function context - if ($this->functionDepth !== 0) { - return; - } - - // It causes fatal error. - if ($node instanceof Yield_) { - $msg = 'The "yield" expression can only be used inside a function'; - throw new FatalErrorException($msg, 0, \E_ERROR, null, $node->getStartLine()); - } - } - - /** - * @param \PhpParser\Node $node - * - * @return int|Node|Node[]|null Replacement node (or special return value) - */ - public function leaveNode(Node $node) - { - if ($node instanceof FunctionLike) { - $this->functionDepth--; - } - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/ImplicitReturnPass.php b/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/ImplicitReturnPass.php deleted file mode 100644 index 202a0825..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/ImplicitReturnPass.php +++ /dev/null @@ -1,125 +0,0 @@ -addImplicitReturn($nodes); - } - - /** - * @param array $nodes - * - * @return array - */ - private function addImplicitReturn(array $nodes): array - { - // If nodes is empty, it can't have a return value. - if (empty($nodes)) { - return [new Return_(NoReturnValue::create())]; - } - - $last = \end($nodes); - - // Special case a few types of statements to add an implicit return - // value (even though they technically don't have any return value) - // because showing a return value in these instances is useful and not - // very surprising. - if ($last instanceof If_) { - $last->stmts = $this->addImplicitReturn($last->stmts); - - foreach ($last->elseifs as $elseif) { - $elseif->stmts = $this->addImplicitReturn($elseif->stmts); - } - - if ($last->else) { - $last->else->stmts = $this->addImplicitReturn($last->else->stmts); - } - } elseif ($last instanceof Switch_) { - foreach ($last->cases as $case) { - // only add an implicit return to cases which end in break - $caseLast = \end($case->stmts); - if ($caseLast instanceof Break_) { - $case->stmts = $this->addImplicitReturn(\array_slice($case->stmts, 0, -1)); - $case->stmts[] = $caseLast; - } - } - } elseif ($last instanceof Expr && !($last instanceof Exit_)) { - // @codeCoverageIgnoreStart - $nodes[\count($nodes) - 1] = new Return_($last, [ - 'startLine' => $last->getStartLine(), - 'endLine' => $last->getEndLine(), - ]); - // @codeCoverageIgnoreEnd - } elseif ($last instanceof Expression && !($last->expr instanceof Exit_)) { - $nodes[\count($nodes) - 1] = new Return_($last->expr, [ - 'startLine' => $last->getStartLine(), - 'endLine' => $last->getEndLine(), - ]); - } elseif ($last instanceof Namespace_) { - $last->stmts = $this->addImplicitReturn($last->stmts); - } - - // Return a "no return value" for all non-expression statements, so that - // PsySH can suppress the `null` that `eval()` returns otherwise. - // - // Note that statements special cased above (if/elseif/else, switch) - // _might_ implicitly return a value before this catch-all return is - // reached. - // - // We're not adding a fallback return after namespace statements, - // because code outside namespace statements doesn't really work, and - // there's already an implicit return in the namespace statement anyway. - if (self::isNonExpressionStmt($last)) { - $nodes[] = new Return_(NoReturnValue::create()); - } - - return $nodes; - } - - /** - * Check whether a given node is a non-expression statement. - * - * As of PHP Parser 4.x, Expressions are now instances of Stmt as well, so - * we'll exclude them here. - * - * @param Node $node - */ - private static function isNonExpressionStmt(Node $node): bool - { - return $node instanceof Stmt && - !$node instanceof Expression && - !$node instanceof Return_ && - !$node instanceof Namespace_; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/LabelContextPass.php b/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/LabelContextPass.php deleted file mode 100644 index fa130b15..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/LabelContextPass.php +++ /dev/null @@ -1,97 +0,0 @@ -functionDepth = 0; - $this->labelDeclarations = []; - $this->labelGotos = []; - } - - /** - * @return int|Node|null Replacement node (or special return value) - */ - public function enterNode(Node $node) - { - if ($node instanceof FunctionLike) { - $this->functionDepth++; - - return; - } - - // node is inside function context - if ($this->functionDepth !== 0) { - return; - } - - if ($node instanceof Goto_) { - $this->labelGotos[\strtolower($node->name)] = $node->getStartLine(); - } elseif ($node instanceof Label) { - $this->labelDeclarations[\strtolower($node->name)] = $node->getStartLine(); - } - } - - /** - * @param \PhpParser\Node $node - * - * @return int|Node|Node[]|null Replacement node (or special return value) - */ - public function leaveNode(Node $node) - { - if ($node instanceof FunctionLike) { - $this->functionDepth--; - } - } - - /** - * @return Node[]|null Array of nodes - */ - public function afterTraverse(array $nodes) - { - foreach ($this->labelGotos as $name => $line) { - if (!isset($this->labelDeclarations[$name])) { - $msg = "'goto' to undefined label '{$name}'"; - throw new FatalErrorException($msg, 0, \E_ERROR, null, $line); - } - } - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/ListPass.php b/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/ListPass.php deleted file mode 100644 index 69650855..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/ListPass.php +++ /dev/null @@ -1,95 +0,0 @@ -var instanceof Array_ && !$node->var instanceof List_) { - return; - } - - // Polyfill for PHP-Parser 2.x - $items = isset($node->var->items) ? $node->var->items : $node->var->vars; - - if ($items === [] || $items === [null]) { - throw new ParseErrorException('Cannot use empty list', ['startLine' => $node->var->getStartLine(), 'endLine' => $node->var->getEndLine()]); - } - - $itemFound = false; - foreach ($items as $item) { - if ($item === null) { - continue; - } - - $itemFound = true; - - if (!self::isValidArrayItem($item)) { - $msg = 'Assignments can only happen to writable values'; - throw new ParseErrorException($msg, ['startLine' => $item->getStartLine(), 'endLine' => $item->getEndLine()]); - } - } - - if (!$itemFound) { - throw new ParseErrorException('Cannot use empty list'); - } - } - - /** - * Validate whether a given item in an array is valid for short assignment. - * - * @param Node $item - */ - private static function isValidArrayItem(Node $item): bool - { - $value = ($item instanceof ArrayItem || $item instanceof LegacyArrayItem) ? $item->value : $item; - - while ($value instanceof ArrayDimFetch || $value instanceof PropertyFetch) { - $value = $value->var; - } - - // We just kind of give up if it's a method call. We can't tell if it's - // valid via static analysis. - return $value instanceof Variable || $value instanceof MethodCall || $value instanceof FuncCall; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/LoopContextPass.php b/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/LoopContextPass.php deleted file mode 100644 index 29a0ecf1..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/LoopContextPass.php +++ /dev/null @@ -1,117 +0,0 @@ -loopDepth = 0; - } - - /** - * @throws FatalErrorException if the node is a break or continue in a non-loop or switch context - * @throws FatalErrorException if the node is trying to break out of more nested structures than exist - * @throws FatalErrorException if the node is a break or continue and has a non-numeric argument - * @throws FatalErrorException if the node is a break or continue and has an argument less than 1 - * - * @param Node $node - * - * @return int|Node|null Replacement node (or special return value) - */ - public function enterNode(Node $node) - { - switch (true) { - case $node instanceof Do_: - case $node instanceof For_: - case $node instanceof Foreach_: - case $node instanceof Switch_: - case $node instanceof While_: - $this->loopDepth++; - break; - - case $node instanceof Break_: - case $node instanceof Continue_: - $operator = $node instanceof Break_ ? 'break' : 'continue'; - - if ($this->loopDepth === 0) { - $msg = \sprintf("'%s' not in the 'loop' or 'switch' context", $operator); - throw new FatalErrorException($msg, 0, \E_ERROR, null, $node->getStartLine()); - } - - // @todo Remove LNumber and DNumber once we drop support for PHP-Parser 4.x - if ( - $node->num instanceof LNumber || - $node->num instanceof DNumber || - $node->num instanceof Int_ || - $node->num instanceof Float_ - ) { - $num = $node->num->value; - if ($node->num instanceof DNumber || $num < 1) { - $msg = \sprintf("'%s' operator accepts only positive numbers", $operator); - throw new FatalErrorException($msg, 0, \E_ERROR, null, $node->getStartLine()); - } - - if ($num > $this->loopDepth) { - $msg = \sprintf("Cannot '%s' %d levels", $operator, $num); - throw new FatalErrorException($msg, 0, \E_ERROR, null, $node->getStartLine()); - } - } elseif ($node->num) { - $msg = \sprintf("'%s' operator with non-constant operand is no longer supported", $operator); - throw new FatalErrorException($msg, 0, \E_ERROR, null, $node->getStartLine()); - } - break; - } - } - - /** - * @param Node $node - * - * @return int|Node|Node[]|null Replacement node (or special return value) - */ - public function leaveNode(Node $node) - { - switch (true) { - case $node instanceof Do_: - case $node instanceof For_: - case $node instanceof Foreach_: - case $node instanceof Switch_: - case $node instanceof While_: - $this->loopDepth--; - break; - } - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/NamespaceAwarePass.php b/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/NamespaceAwarePass.php deleted file mode 100644 index 41d1f1df..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/NamespaceAwarePass.php +++ /dev/null @@ -1,85 +0,0 @@ -namespace = []; - $this->currentScope = []; - } - - /** - * @todo should this be final? Extending classes should be sure to either use - * leaveNode or call parent::enterNode() when overloading - * - * @param Node $node - * - * @return int|Node|null Replacement node (or special return value) - */ - public function enterNode(Node $node) - { - if ($node instanceof Namespace_) { - $this->namespace = isset($node->name) ? $this->getParts($node->name) : []; - } - } - - /** - * Get a fully-qualified name (class, function, interface, etc). - * - * @param mixed $name - */ - protected function getFullyQualifiedName($name): string - { - if ($name instanceof FullyQualifiedName) { - return \implode('\\', $this->getParts($name)); - } - - if ($name instanceof Name) { - $name = $this->getParts($name); - } elseif (!\is_array($name)) { - $name = [$name]; - } - - return \implode('\\', \array_merge($this->namespace, $name)); - } - - /** - * Backwards compatibility shim for PHP-Parser 4.x. - * - * At some point we might want to make $namespace a plain string, to match how Name works? - */ - protected function getParts(Name $name): array - { - return \method_exists($name, 'getParts') ? $name->getParts() : $name->parts; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/NamespacePass.php b/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/NamespacePass.php deleted file mode 100644 index 49d9bca2..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/NamespacePass.php +++ /dev/null @@ -1,101 +0,0 @@ -cleaner = $cleaner; - } - - /** - * If this is a standalone namespace line, remember it for later. - * - * Otherwise, apply remembered namespaces to the code until a new namespace - * is encountered. - * - * @param array $nodes - * - * @return Node[]|null Array of nodes - */ - public function beforeTraverse(array $nodes) - { - if (empty($nodes)) { - return $nodes; - } - - $last = \end($nodes); - - if ($last instanceof Namespace_) { - $kind = $last->getAttribute('kind'); - - // Treat all namespace statements pre-PHP-Parser v3.1.2 as "open", - // even though we really have no way of knowing. - if ($kind === null || $kind === Namespace_::KIND_SEMICOLON) { - // Save the current namespace for open namespaces - $this->setNamespace($last->name); - } else { - // Clear the current namespace after a braced namespace - $this->setNamespace(null); - } - - return $nodes; - } - - return $this->namespace ? [new Namespace_($this->namespace, $nodes)] : $nodes; - } - - /** - * Remember the namespace and (re)set the namespace on the CodeCleaner as - * well. - * - * @param Name|null $namespace - */ - private function setNamespace(?Name $namespace) - { - $this->namespace = $namespace; - $this->cleaner->setNamespace($namespace === null ? null : $this->getParts($namespace)); - } - - /** - * Backwards compatibility shim for PHP-Parser 4.x. - * - * At some point we might want to make the namespace a plain string, to match how Name works? - */ - protected function getParts(Name $name): array - { - return \method_exists($name, 'getParts') ? $name->getParts() : $name->parts; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/PassableByReferencePass.php b/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/PassableByReferencePass.php deleted file mode 100644 index 5118c5bb..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/PassableByReferencePass.php +++ /dev/null @@ -1,129 +0,0 @@ -name instanceof Expr || $node->name instanceof Variable) { - return; - } - - $name = (string) $node->name; - - if ($name === 'array_multisort') { - return $this->validateArrayMultisort($node); - } - - try { - $refl = new \ReflectionFunction($name); - } catch (\ReflectionException $e) { - // Well, we gave it a shot! - return; - } - - $args = []; - foreach ($node->args as $position => $arg) { - if ($arg instanceof VariadicPlaceholder) { - continue; - } - - $args[$arg->name !== null ? $arg->name->name : $position] = $arg; - } - - foreach ($refl->getParameters() as $key => $param) { - if (\array_key_exists($key, $args) || \array_key_exists($param->name, $args)) { - $arg = $args[$param->name] ?? $args[$key]; - if ($param->isPassedByReference() && !$this->isPassableByReference($arg)) { - throw new FatalErrorException(self::EXCEPTION_MESSAGE, 0, \E_ERROR, null, $node->getStartLine()); - } - } - } - } - } - - private function isPassableByReference(Node $arg): bool - { - // Unpacked arrays can be passed by reference - if ($arg->value instanceof Array_) { - return $arg->unpack; - } - - // FuncCall, MethodCall and StaticCall are all PHP _warnings_ not fatal errors, so we'll let - // PHP handle those ones :) - return $arg->value instanceof ClassConstFetch || - $arg->value instanceof PropertyFetch || - $arg->value instanceof Variable || - $arg->value instanceof FuncCall || - $arg->value instanceof MethodCall || - $arg->value instanceof StaticCall || - $arg->value instanceof ArrayDimFetch; - } - - /** - * Because array_multisort has a problematic signature... - * - * The argument order is all sorts of wonky, and whether something is passed - * by reference or not depends on the values of the two arguments before it. - * We'll do a good faith attempt at validating this, but err on the side of - * permissive. - * - * This is why you don't design languages where core code and extensions can - * implement APIs that wouldn't be possible in userland code. - * - * @throws FatalErrorException for clearly invalid arguments - * - * @param Node $node - */ - private function validateArrayMultisort(Node $node) - { - $nonPassable = 2; // start with 2 because the first one has to be passable by reference - foreach ($node->args as $arg) { - if ($this->isPassableByReference($arg)) { - $nonPassable = 0; - } elseif (++$nonPassable > 2) { - // There can be *at most* two non-passable-by-reference args in a row. This is about - // as close as we can get to validating the arguments for this function :-/ - throw new FatalErrorException(self::EXCEPTION_MESSAGE, 0, \E_ERROR, null, $node->getStartLine()); - } - } - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/RequirePass.php b/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/RequirePass.php deleted file mode 100644 index 5c8cde49..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/RequirePass.php +++ /dev/null @@ -1,139 +0,0 @@ -isRequireNode($origNode)) { - return; - } - - $node = clone $origNode; - - /* - * rewrite - * - * $foo = require $bar - * - * to - * - * $foo = require \Psy\CodeCleaner\RequirePass::resolve($bar) - */ - // @todo Remove LNumber once we drop support for PHP-Parser 4.x - $arg = \class_exists('PhpParser\Node\Scalar\Int_') ? - new Int_($origNode->getStartLine()) : - new LNumber($origNode->getStartLine()); - - $node->expr = new StaticCall( - new FullyQualifiedName(self::class), - 'resolve', - [new Arg($origNode->expr), new Arg($arg)], - $origNode->getAttributes() - ); - - return $node; - } - - /** - * Runtime validation that $file can be resolved as an include path. - * - * If $file can be resolved, return $file. Otherwise throw a fatal error exception. - * - * If $file collides with a path in the currently running PsySH phar, it will be resolved - * relative to the include path, to prevent PHP from grabbing the phar version of the file. - * - * @throws FatalErrorException when unable to resolve include path for $file - * @throws ErrorException if $file is empty and E_WARNING is included in error_reporting level - * - * @param string $file - * @param int $startLine Line number of the original require expression - * - * @return string Exactly the same as $file, unless $file collides with a path in the currently running phar - */ - public static function resolve($file, $startLine = null): string - { - $file = (string) $file; - - if ($file === '') { - // @todo Shell::handleError would be better here, because we could - // fake the file and line number, but we can't call it statically. - // So we're duplicating some of the logics here. - if (\E_WARNING & \error_reporting()) { - ErrorException::throwException(\E_WARNING, 'Filename cannot be empty', null, $startLine); - } - // @todo trigger an error as fallback? this is pretty ugly… - // trigger_error('Filename cannot be empty', E_USER_WARNING); - } - - $resolvedPath = \stream_resolve_include_path($file); - if ($file === '' || !$resolvedPath) { - $msg = \sprintf("Failed opening required '%s'", $file); - throw new FatalErrorException($msg, 0, \E_ERROR, null, $startLine); - } - - // Special case: if the path is not already relative or absolute, and it would resolve to - // something inside the currently running phar (e.g. `vendor/autoload.php`), we'll resolve - // it relative to the include path so PHP won't grab the phar version. - // - // Note that this only works if the phar has `psysh` in the path. We might want to lift this - // restriction and special case paths that would collide with any running phar? - if ($resolvedPath !== $file && $file[0] !== '.') { - $runningPhar = \Phar::running(); - if (\strpos($runningPhar, 'psysh') !== false && \is_file($runningPhar.\DIRECTORY_SEPARATOR.$file)) { - foreach (self::getIncludePath() as $prefix) { - $resolvedPath = $prefix.\DIRECTORY_SEPARATOR.$file; - if (\is_file($resolvedPath)) { - return $resolvedPath; - } - } - } - } - - return $file; - } - - private function isRequireNode(Node $node): bool - { - return $node instanceof Include_ && \in_array($node->type, self::REQUIRE_TYPES); - } - - private static function getIncludePath(): array - { - if (\PATH_SEPARATOR === ':') { - return \preg_split('#:(?!//)#', \get_include_path()); - } - - return \explode(\PATH_SEPARATOR, \get_include_path()); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/ReturnTypePass.php b/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/ReturnTypePass.php deleted file mode 100644 index 8ab89846..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/ReturnTypePass.php +++ /dev/null @@ -1,119 +0,0 @@ -isFunctionNode($node)) { - $this->returnTypeStack[] = $node->returnType; - - return; - } - - if (!empty($this->returnTypeStack) && $node instanceof Return_) { - $expectedType = \end($this->returnTypeStack); - if ($expectedType === null) { - return; - } - - $msg = null; - - if ($this->typeName($expectedType) === 'void') { - // Void functions - if ($expectedType instanceof NullableType) { - $msg = self::NULLABLE_VOID_MESSAGE; - } elseif ($node->expr instanceof ConstFetch && \strtolower($node->expr->name) === 'null') { - $msg = self::VOID_NULL_MESSAGE; - } elseif ($node->expr !== null) { - $msg = self::VOID_MESSAGE; - } - } else { - // Everything else - if ($node->expr === null) { - $msg = $expectedType instanceof NullableType ? self::NULLABLE_MESSAGE : self::MESSAGE; - } - } - - if ($msg !== null) { - throw new FatalErrorException($msg, 0, \E_ERROR, null, $node->getStartLine()); - } - } - } - - /** - * {@inheritdoc} - * - * @return int|Node|Node[]|null Replacement node (or special return value) - */ - public function leaveNode(Node $node) - { - if (!empty($this->returnTypeStack) && $this->isFunctionNode($node)) { - \array_pop($this->returnTypeStack); - } - } - - private function isFunctionNode(Node $node): bool - { - return $node instanceof Function_ || $node instanceof Closure; - } - - private function typeName(Node $node): string - { - if ($node instanceof UnionType) { - return \implode('|', \array_map([$this, 'typeName'], $node->types)); - } - - if ($node instanceof IntersectionType) { - return \implode('&', \array_map([$this, 'typeName'], $node->types)); - } - - if ($node instanceof NullableType) { - return $this->typeName($node->type); - } - - if ($node instanceof Identifier || $node instanceof Name) { - return $node->toLowerString(); - } - - throw new \InvalidArgumentException('Unable to find type name'); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/StrictTypesPass.php b/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/StrictTypesPass.php deleted file mode 100644 index 8fd6ab71..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/StrictTypesPass.php +++ /dev/null @@ -1,94 +0,0 @@ -strictTypes = $strictTypes; - } - - /** - * If this is a standalone strict types declaration, remember it for later. - * - * Otherwise, apply remembered strict types declaration to to the code until - * a new declaration is encountered. - * - * @throws FatalErrorException if an invalid `strict_types` declaration is found - * - * @param array $nodes - * - * @return Node[]|null Array of nodes - */ - public function beforeTraverse(array $nodes) - { - $prependStrictTypes = $this->strictTypes; - - foreach ($nodes as $node) { - if ($node instanceof Declare_) { - foreach ($node->declares as $declare) { - if ($declare->key->toString() === 'strict_types') { - $value = $declare->value; - // @todo Remove LNumber once we drop support for PHP-Parser 4.x - if ((!$value instanceof LNumber && !$value instanceof Int_) || ($value->value !== 0 && $value->value !== 1)) { - throw new FatalErrorException(self::EXCEPTION_MESSAGE, 0, \E_ERROR, null, $node->getStartLine()); - } - - $this->strictTypes = $value->value === 1; - } - } - } - } - - if ($prependStrictTypes) { - $first = \reset($nodes); - if (!$first instanceof Declare_) { - // @todo Switch to PhpParser\Node\DeclareItem once we drop support for PHP-Parser 4.x - // @todo Remove LNumber once we drop support for PHP-Parser 4.x - $arg = \class_exists('PhpParser\Node\Scalar\Int_') ? new Int_(1) : new LNumber(1); - $declareItem = \class_exists('PhpParser\Node\DeclareItem') ? - new DeclareItem('strict_types', $arg) : - new DeclareDeclare('strict_types', $arg); - $declare = new Declare_([$declareItem]); - \array_unshift($nodes, $declare); - } - } - - return $nodes; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/UseStatementPass.php b/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/UseStatementPass.php deleted file mode 100644 index a2ddc9ef..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/UseStatementPass.php +++ /dev/null @@ -1,142 +0,0 @@ -name ?: '') === \strtolower($this->lastNamespace ?: '')) { - $this->aliases = $this->lastAliases; - } - } - } - - /** - * If this statement is a namespace, forget all the aliases we had. - * - * If it's a use statement, remember the alias for later. Otherwise, apply - * remembered aliases to the code. - * - * @param Node $node - * - * @return int|Node|Node[]|null Replacement node (or special return value) - */ - public function leaveNode(Node $node) - { - // Store a reference to every "use" statement, because we'll need them in a bit. - if ($node instanceof Use_) { - foreach ($node->uses as $useItem) { - $this->aliases[\strtolower($useItem->getAlias())] = $useItem->name; - } - - // @todo Rename to Node_Visitor::REMOVE_NODE once we drop support for PHP-Parser 4.x - return NodeTraverser::REMOVE_NODE; - } - - // Expand every "use" statement in the group into a full, standalone "use" and store 'em with the others. - if ($node instanceof GroupUse) { - foreach ($node->uses as $useItem) { - $this->aliases[\strtolower($useItem->getAlias())] = Name::concat($node->prefix, $useItem->name, [ - 'startLine' => $node->prefix->getAttribute('startLine'), - 'endLine' => $useItem->name->getAttribute('endLine'), - ]); - } - - // @todo Rename to Node_Visitor::REMOVE_NODE once we drop support for PHP-Parser 4.x - return NodeTraverser::REMOVE_NODE; - } - - // Start fresh, since we're done with this namespace. - if ($node instanceof Namespace_) { - $this->lastNamespace = $node->name; - $this->lastAliases = $this->aliases; - $this->aliases = []; - - return; - } - - // Do nothing with UseItem; this an entry in the list of uses in the use statement. - // @todo Remove UseUse once we drop support for PHP-Parser 4.x - if ($node instanceof UseUse || $node instanceof UseItem) { - return; - } - - // For everything else, we'll implicitly thunk all aliases into fully-qualified names. - foreach ($node as $name => $subNode) { - if ($subNode instanceof Name) { - if ($replacement = $this->findAlias($subNode)) { - $node->$name = $replacement; - } - } - } - - return $node; - } - - /** - * Find class/namespace aliases. - * - * @param Name $name - * - * @return FullyQualifiedName|null - */ - private function findAlias(Name $name) - { - $that = \strtolower($name); - foreach ($this->aliases as $alias => $prefix) { - if ($that === $alias) { - return new FullyQualifiedName($prefix->toString()); - } elseif (\substr($that, 0, \strlen($alias) + 1) === $alias.'\\') { - return new FullyQualifiedName($prefix->toString().\substr($name, \strlen($alias))); - } - } - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/ValidClassNamePass.php b/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/ValidClassNamePass.php deleted file mode 100644 index 331ca743..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/ValidClassNamePass.php +++ /dev/null @@ -1,326 +0,0 @@ -conditionalScopes++; - - return; - } - - if ($this->conditionalScopes === 0) { - if ($node instanceof Class_) { - $this->validateClassStatement($node); - } elseif ($node instanceof Interface_) { - $this->validateInterfaceStatement($node); - } elseif ($node instanceof Trait_) { - $this->validateTraitStatement($node); - } - } - } - - /** - * @param Node $node - * - * @return int|Node|Node[]|null Replacement node (or special return value) - */ - public function leaveNode(Node $node) - { - if (self::isConditional($node)) { - $this->conditionalScopes--; - } - } - - private static function isConditional(Node $node): bool - { - return $node instanceof If_ || - $node instanceof While_ || - $node instanceof Do_ || - $node instanceof Switch_ || - $node instanceof Ternary; - } - - /** - * Validate a class definition statement. - * - * @param Class_ $stmt - */ - protected function validateClassStatement(Class_ $stmt) - { - $this->ensureCanDefine($stmt, self::CLASS_TYPE); - if (isset($stmt->extends)) { - $this->ensureClassExists($this->getFullyQualifiedName($stmt->extends), $stmt); - } - $this->ensureInterfacesExist($stmt->implements, $stmt); - } - - /** - * Validate an interface definition statement. - * - * @param Interface_ $stmt - */ - protected function validateInterfaceStatement(Interface_ $stmt) - { - $this->ensureCanDefine($stmt, self::INTERFACE_TYPE); - $this->ensureInterfacesExist($stmt->extends, $stmt); - } - - /** - * Validate a trait definition statement. - * - * @param Trait_ $stmt - */ - protected function validateTraitStatement(Trait_ $stmt) - { - $this->ensureCanDefine($stmt, self::TRAIT_TYPE); - } - - /** - * Ensure that no class, interface or trait name collides with a new definition. - * - * @throws FatalErrorException - * - * @param Stmt $stmt - * @param string $scopeType - */ - protected function ensureCanDefine(Stmt $stmt, string $scopeType = self::CLASS_TYPE) - { - // Anonymous classes don't have a name, and uniqueness shouldn't be enforced. - if ($stmt->name === null) { - return; - } - - $name = $this->getFullyQualifiedName($stmt->name); - - // check for name collisions - $errorType = null; - if ($this->classExists($name)) { - $errorType = self::CLASS_TYPE; - } elseif ($this->interfaceExists($name)) { - $errorType = self::INTERFACE_TYPE; - } elseif ($this->traitExists($name)) { - $errorType = self::TRAIT_TYPE; - } - - if ($errorType !== null) { - throw $this->createError(\sprintf('%s named %s already exists', \ucfirst($errorType), $name), $stmt); - } - - // Store creation for the rest of this code snippet so we can find local - // issue too - $this->currentScope[\strtolower($name)] = $scopeType; - } - - /** - * Ensure that a referenced class exists. - * - * @throws FatalErrorException - * - * @param string $name - * @param Stmt $stmt - */ - protected function ensureClassExists(string $name, Stmt $stmt) - { - if (!$this->classExists($name)) { - throw $this->createError(\sprintf('Class \'%s\' not found', $name), $stmt); - } - } - - /** - * Ensure that a referenced class _or interface_ exists. - * - * @throws FatalErrorException - * - * @param string $name - * @param Stmt $stmt - */ - protected function ensureClassOrInterfaceExists(string $name, Stmt $stmt) - { - if (!$this->classExists($name) && !$this->interfaceExists($name)) { - throw $this->createError(\sprintf('Class \'%s\' not found', $name), $stmt); - } - } - - /** - * Ensure that a referenced class _or trait_ exists. - * - * @throws FatalErrorException - * - * @param string $name - * @param Stmt $stmt - */ - protected function ensureClassOrTraitExists(string $name, Stmt $stmt) - { - if (!$this->classExists($name) && !$this->traitExists($name)) { - throw $this->createError(\sprintf('Class \'%s\' not found', $name), $stmt); - } - } - - /** - * Ensure that a statically called method exists. - * - * @throws FatalErrorException - * - * @param string $class - * @param string $name - * @param Stmt $stmt - */ - protected function ensureMethodExists(string $class, string $name, Stmt $stmt) - { - $this->ensureClassOrTraitExists($class, $stmt); - - // let's pretend all calls to self, parent and static are valid - if (\in_array(\strtolower($class), ['self', 'parent', 'static'])) { - return; - } - - // ... and all calls to classes defined right now - if ($this->findInScope($class) === self::CLASS_TYPE) { - return; - } - - // if method name is an expression, give it a pass for now - if ($name instanceof Expr) { - return; - } - - if (!\method_exists($class, $name) && !\method_exists($class, '__callStatic')) { - throw $this->createError(\sprintf('Call to undefined method %s::%s()', $class, $name), $stmt); - } - } - - /** - * Ensure that a referenced interface exists. - * - * @throws FatalErrorException - * - * @param Interface_[] $interfaces - * @param Stmt $stmt - */ - protected function ensureInterfacesExist(array $interfaces, Stmt $stmt) - { - foreach ($interfaces as $interface) { - /** @var string $name */ - $name = $this->getFullyQualifiedName($interface); - if (!$this->interfaceExists($name)) { - throw $this->createError(\sprintf('Interface \'%s\' not found', $name), $stmt); - } - } - } - - /** - * Check whether a class exists, or has been defined in the current code snippet. - * - * Gives `self`, `static` and `parent` a free pass. - * - * @param string $name - */ - protected function classExists(string $name): bool - { - // Give `self`, `static` and `parent` a pass. This will actually let - // some errors through, since we're not checking whether the keyword is - // being used in a class scope. - if (\in_array(\strtolower($name), ['self', 'static', 'parent'])) { - return true; - } - - return \class_exists($name) || $this->findInScope($name) === self::CLASS_TYPE; - } - - /** - * Check whether an interface exists, or has been defined in the current code snippet. - * - * @param string $name - */ - protected function interfaceExists(string $name): bool - { - return \interface_exists($name) || $this->findInScope($name) === self::INTERFACE_TYPE; - } - - /** - * Check whether a trait exists, or has been defined in the current code snippet. - * - * @param string $name - */ - protected function traitExists(string $name): bool - { - return \trait_exists($name) || $this->findInScope($name) === self::TRAIT_TYPE; - } - - /** - * Find a symbol in the current code snippet scope. - * - * @param string $name - * - * @return string|null - */ - protected function findInScope(string $name) - { - $name = \strtolower($name); - if (isset($this->currentScope[$name])) { - return $this->currentScope[$name]; - } - } - - /** - * Error creation factory. - * - * @param string $msg - * @param Stmt $stmt - */ - protected function createError(string $msg, Stmt $stmt): FatalErrorException - { - return new FatalErrorException($msg, 0, \E_ERROR, null, $stmt->getStartLine()); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/ValidConstructorPass.php b/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/ValidConstructorPass.php deleted file mode 100644 index 8b17c719..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/ValidConstructorPass.php +++ /dev/null @@ -1,121 +0,0 @@ - - */ -class ValidConstructorPass extends CodeCleanerPass -{ - private array $namespace = []; - - /** - * @return Node[]|null Array of nodes - */ - public function beforeTraverse(array $nodes) - { - $this->namespace = []; - } - - /** - * Validate that the constructor is not static and does not have a return type. - * - * @throws FatalErrorException the constructor function is static - * @throws FatalErrorException the constructor function has a return type - * - * @param Node $node - * - * @return int|Node|null Replacement node (or special return value) - */ - public function enterNode(Node $node) - { - if ($node instanceof Namespace_) { - $this->namespace = isset($node->name) ? $this->getParts($node->name) : []; - } elseif ($node instanceof Class_) { - $constructor = null; - foreach ($node->stmts as $stmt) { - if ($stmt instanceof ClassMethod) { - // If we find a new-style constructor, no need to look for the old-style - if ('__construct' === \strtolower($stmt->name)) { - $this->validateConstructor($stmt, $node); - - return; - } - - // We found a possible old-style constructor (unless there is also a __construct method) - if (empty($this->namespace) && \strtolower($node->name) === \strtolower($stmt->name)) { - $constructor = $stmt; - } - } - } - - if ($constructor) { - $this->validateConstructor($constructor, $node); - } - } - } - - /** - * @throws FatalErrorException the constructor function is static - * @throws FatalErrorException the constructor function has a return type - * - * @param Node $constructor - * @param Node $classNode - */ - private function validateConstructor(Node $constructor, Node $classNode) - { - if ($constructor->isStatic()) { - $msg = \sprintf( - 'Constructor %s::%s() cannot be static', - \implode('\\', \array_merge($this->namespace, (array) $classNode->name->toString())), - $constructor->name - ); - throw new FatalErrorException($msg, 0, \E_ERROR, null, $classNode->getStartLine()); - } - - if (\method_exists($constructor, 'getReturnType') && $constructor->getReturnType()) { - $msg = \sprintf( - 'Constructor %s::%s() cannot declare a return type', - \implode('\\', \array_merge($this->namespace, (array) $classNode->name->toString())), - $constructor->name - ); - throw new FatalErrorException($msg, 0, \E_ERROR, null, $classNode->getStartLine()); - } - } - - /** - * Backwards compatibility shim for PHP-Parser 4.x. - * - * At some point we might want to make $namespace a plain string, to match how Name works? - */ - protected function getParts(Name $name): array - { - return \method_exists($name, 'getParts') ? $name->getParts() : $name->parts; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/ValidFunctionNamePass.php b/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/ValidFunctionNamePass.php deleted file mode 100644 index 789364f1..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/CodeCleaner/ValidFunctionNamePass.php +++ /dev/null @@ -1,83 +0,0 @@ -conditionalScopes++; - } elseif ($node instanceof Function_) { - $name = $this->getFullyQualifiedName($node->name); - - // @todo add an "else" here which adds a runtime check for instances where we can't tell - // whether a function is being redefined by static analysis alone. - if ($this->conditionalScopes === 0) { - if (\function_exists($name) || - isset($this->currentScope[\strtolower($name)])) { - $msg = \sprintf('Cannot redeclare %s()', $name); - throw new FatalErrorException($msg, 0, \E_ERROR, null, $node->getStartLine()); - } - } - - $this->currentScope[\strtolower($name)] = true; - } - } - - /** - * @param Node $node - * - * @return int|Node|Node[]|null Replacement node (or special return value) - */ - public function leaveNode(Node $node) - { - if (self::isConditional($node)) { - $this->conditionalScopes--; - } - } - - private static function isConditional(Node $node) - { - return $node instanceof If_ || - $node instanceof While_ || - $node instanceof Do_ || - $node instanceof Switch_; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Command/BufferCommand.php b/docker/streamline-src/vendor/psy/psysh/src/Command/BufferCommand.php deleted file mode 100644 index 5372dd3a..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Command/BufferCommand.php +++ /dev/null @@ -1,83 +0,0 @@ -setName('buffer') - ->setAliases(['buf']) - ->setDefinition([ - new InputOption('clear', '', InputOption::VALUE_NONE, 'Clear the current buffer.'), - ]) - ->setDescription('Show (or clear) the contents of the code input buffer.') - ->setHelp( - <<<'HELP' -Show the contents of the code buffer for the current multi-line expression. - -Optionally, clear the buffer by passing the --clear option. -HELP - ); - } - - /** - * {@inheritdoc} - * - * @return int 0 if everything went fine, or an exit code - */ - protected function execute(InputInterface $input, OutputInterface $output): int - { - $shell = $this->getShell(); - - $buf = $shell->getCodeBuffer(); - if ($input->getOption('clear')) { - $shell->resetCodeBuffer(); - $output->writeln($this->formatLines($buf, 'urgent'), ShellOutput::NUMBER_LINES); - } else { - $output->writeln($this->formatLines($buf), ShellOutput::NUMBER_LINES); - } - - return 0; - } - - /** - * A helper method for wrapping buffer lines in `` and `` formatter strings. - * - * @param array $lines - * @param string $type (default: 'return') - * - * @return array Formatted strings - */ - protected function formatLines(array $lines, string $type = 'return'): array - { - $template = \sprintf('<%s>%%s', $type, $type); - - return \array_map(function ($line) use ($template) { - return \sprintf($template, $line); - }, $lines); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Command/CodeArgumentParser.php b/docker/streamline-src/vendor/psy/psysh/src/Command/CodeArgumentParser.php deleted file mode 100644 index 6d32276f..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Command/CodeArgumentParser.php +++ /dev/null @@ -1,59 +0,0 @@ -parser = $parser ?? (new ParserFactory())->createParser(); - } - - /** - * Lex and parse a string of code into statements. - * - * This is intended for code arguments, so the code string *should not* start with parser->parse($code); - } catch (\PhpParser\Error $e) { - if (\strpos($e->getMessage(), 'unexpected EOF') === false) { - throw ParseErrorException::fromParseError($e); - } - - // If we got an unexpected EOF, let's try it again with a semicolon. - try { - return $this->parser->parse($code.';'); - } catch (\PhpParser\Error $_e) { - // Throw the original error, not the semicolon one. - throw ParseErrorException::fromParseError($e); - } - } - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Command/Command.php b/docker/streamline-src/vendor/psy/psysh/src/Command/Command.php deleted file mode 100644 index 693c5fc3..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Command/Command.php +++ /dev/null @@ -1,271 +0,0 @@ -getApplication(); - if (!$shell instanceof Shell) { - throw new \RuntimeException('PsySH Commands require an instance of Psy\Shell'); - } - - return $shell; - } - - /** - * {@inheritdoc} - */ - public function asText(): string - { - $messages = [ - 'Usage:', - ' '.$this->getSynopsis(), - '', - ]; - - if ($this->getAliases()) { - $messages[] = $this->aliasesAsText(); - } - - if ($this->getArguments()) { - $messages[] = $this->argumentsAsText(); - } - - if ($this->getOptions()) { - $messages[] = $this->optionsAsText(); - } - - if ($help = $this->getProcessedHelp()) { - $messages[] = 'Help:'; - $messages[] = ' '.\str_replace("\n", "\n ", $help)."\n"; - } - - return \implode("\n", $messages); - } - - /** - * {@inheritdoc} - */ - private function getArguments(): array - { - $hidden = $this->getHiddenArguments(); - - return \array_filter($this->getNativeDefinition()->getArguments(), function ($argument) use ($hidden) { - return !\in_array($argument->getName(), $hidden); - }); - } - - /** - * These arguments will be excluded from help output. - * - * @return string[] - */ - protected function getHiddenArguments(): array - { - return ['command']; - } - - /** - * {@inheritdoc} - */ - private function getOptions(): array - { - $hidden = $this->getHiddenOptions(); - - return \array_filter($this->getNativeDefinition()->getOptions(), function ($option) use ($hidden) { - return !\in_array($option->getName(), $hidden); - }); - } - - /** - * These options will be excluded from help output. - * - * @return string[] - */ - protected function getHiddenOptions(): array - { - return ['verbose']; - } - - /** - * Format command aliases as text.. - */ - private function aliasesAsText(): string - { - return 'Aliases: '.\implode(', ', $this->getAliases()).''.\PHP_EOL; - } - - /** - * Format command arguments as text. - */ - private function argumentsAsText(): string - { - $max = $this->getMaxWidth(); - $messages = []; - - $arguments = $this->getArguments(); - if (!empty($arguments)) { - $messages[] = 'Arguments:'; - foreach ($arguments as $argument) { - if (null !== $argument->getDefault() && (!\is_array($argument->getDefault()) || \count($argument->getDefault()))) { - $default = \sprintf(' (default: %s)', $this->formatDefaultValue($argument->getDefault())); - } else { - $default = ''; - } - - $name = $argument->getName(); - $pad = \str_pad('', $max - \strlen($name)); - $description = \str_replace("\n", "\n".\str_pad('', $max + 2, ' '), $argument->getDescription()); - - $messages[] = \sprintf(' %s%s %s%s', $name, $pad, $description, $default); - } - - $messages[] = ''; - } - - return \implode(\PHP_EOL, $messages); - } - - /** - * Format options as text. - */ - private function optionsAsText(): string - { - $max = $this->getMaxWidth(); - $messages = []; - - $options = $this->getOptions(); - if ($options) { - $messages[] = 'Options:'; - - foreach ($options as $option) { - if ($option->acceptValue() && null !== $option->getDefault() && (!\is_array($option->getDefault()) || \count($option->getDefault()))) { - $default = \sprintf(' (default: %s)', $this->formatDefaultValue($option->getDefault())); - } else { - $default = ''; - } - - $multiple = $option->isArray() ? ' (multiple values allowed)' : ''; - $description = \str_replace("\n", "\n".\str_pad('', $max + 2, ' '), $option->getDescription()); - - $optionMax = $max - \strlen($option->getName()) - 2; - $messages[] = \sprintf( - " %s %-{$optionMax}s%s%s%s", - '--'.$option->getName(), - $option->getShortcut() ? \sprintf('(-%s) ', $option->getShortcut()) : '', - $description, - $default, - $multiple - ); - } - - $messages[] = ''; - } - - return \implode(\PHP_EOL, $messages); - } - - /** - * Calculate the maximum padding width for a set of lines. - */ - private function getMaxWidth(): int - { - $max = 0; - - foreach ($this->getOptions() as $option) { - $nameLength = \strlen($option->getName()) + 2; - if ($option->getShortcut()) { - $nameLength += \strlen($option->getShortcut()) + 3; - } - - $max = \max($max, $nameLength); - } - - foreach ($this->getArguments() as $argument) { - $max = \max($max, \strlen($argument->getName())); - } - - return ++$max; - } - - /** - * Format an option default as text. - * - * @param mixed $default - */ - private function formatDefaultValue($default): string - { - if (\is_array($default) && $default === \array_values($default)) { - return \sprintf("['%s']", \implode("', '", $default)); - } - - return \str_replace("\n", '', \var_export($default, true)); - } - - /** - * Get a Table instance. - * - * @return Table - */ - protected function getTable(OutputInterface $output) - { - $style = new TableStyle(); - - // Symfony 4.1 deprecated single-argument style setters. - if (\method_exists($style, 'setVerticalBorderChars')) { - $style->setVerticalBorderChars(' '); - $style->setHorizontalBorderChars(''); - $style->setCrossingChars('', '', '', '', '', '', '', '', ''); - } else { - $style->setVerticalBorderChar(' '); - $style->setHorizontalBorderChar(''); - $style->setCrossingChar(''); - } - - $table = new Table($output); - - return $table - ->setRows([]) - ->setStyle($style); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Command/DocCommand.php b/docker/streamline-src/vendor/psy/psysh/src/Command/DocCommand.php deleted file mode 100644 index 77343dd0..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Command/DocCommand.php +++ /dev/null @@ -1,252 +0,0 @@ -setName('doc') - ->setAliases(['rtfm', 'man']) - ->setDefinition([ - new InputOption('all', 'a', InputOption::VALUE_NONE, 'Show documentation for superclasses as well as the current class.'), - new CodeArgument('target', CodeArgument::REQUIRED, 'Function, class, instance, constant, method or property to document.'), - ]) - ->setDescription('Read the documentation for an object, class, constant, method or property.') - ->setHelp( - <<>>> doc preg_replace ->>> doc Psy\Shell ->>> doc Psy\Shell::debug ->>> \$s = new Psy\Shell ->>> doc \$s->run -HELP - ); - } - - /** - * {@inheritdoc} - * - * @return int 0 if everything went fine, or an exit code - */ - protected function execute(InputInterface $input, OutputInterface $output): int - { - $value = $input->getArgument('target'); - if (ReflectionLanguageConstruct::isLanguageConstruct($value)) { - $reflector = new ReflectionLanguageConstruct($value); - $doc = $this->getManualDocById($value); - } else { - list($target, $reflector) = $this->getTargetAndReflector($value); - $doc = $this->getManualDoc($reflector) ?: DocblockFormatter::format($reflector); - } - - $db = $this->getShell()->getManualDb(); - - if ($output instanceof ShellOutput) { - $output->startPaging(); - } - - // Maybe include the declaring class - if ($reflector instanceof \ReflectionMethod || $reflector instanceof \ReflectionProperty) { - $output->writeln(SignatureFormatter::format($reflector->getDeclaringClass())); - } - - $output->writeln(SignatureFormatter::format($reflector)); - $output->writeln(''); - - if (empty($doc) && !$db) { - $output->writeln('PHP manual not found'); - $output->writeln(' To document core PHP functionality, download the PHP reference manual:'); - $output->writeln(' https://github.com/bobthecow/psysh/wiki/PHP-manual'); - } else { - $output->writeln($doc); - } - - // Implicit --all if the original docblock has an {@inheritdoc} tag. - if ($input->getOption('all') || \stripos($doc, self::INHERIT_DOC_TAG) !== false) { - $parent = $reflector; - foreach ($this->getParentReflectors($reflector) as $parent) { - $output->writeln(''); - $output->writeln('---'); - $output->writeln(''); - - // Maybe include the declaring class - if ($parent instanceof \ReflectionMethod || $parent instanceof \ReflectionProperty) { - $output->writeln(SignatureFormatter::format($parent->getDeclaringClass())); - } - - $output->writeln(SignatureFormatter::format($parent)); - $output->writeln(''); - - if ($doc = $this->getManualDoc($parent) ?: DocblockFormatter::format($parent)) { - $output->writeln($doc); - } - } - } - - if ($output instanceof ShellOutput) { - $output->stopPaging(); - } - - // Set some magic local variables - $this->setCommandScopeVariables($reflector); - - return 0; - } - - private function getManualDoc($reflector) - { - switch (\get_class($reflector)) { - case \ReflectionClass::class: - case \ReflectionObject::class: - case \ReflectionFunction::class: - $id = $reflector->name; - break; - - case \ReflectionMethod::class: - $id = $reflector->class.'::'.$reflector->name; - break; - - case \ReflectionProperty::class: - $id = $reflector->class.'::$'.$reflector->name; - break; - - case \ReflectionClassConstant::class: - // @todo this is going to collide with ReflectionMethod ids - // someday... start running the query by id + type if the DB - // supports it. - $id = $reflector->class.'::'.$reflector->name; - break; - - case ReflectionConstant::class: - $id = $reflector->name; - break; - - default: - return false; - } - - return $this->getManualDocById($id); - } - - /** - * Get all all parent Reflectors for a given Reflector. - * - * For example, passing a Class, Object or TraitReflector will yield all - * traits and parent classes. Passing a Method or PropertyReflector will - * yield Reflectors for the same-named method or property on all traits and - * parent classes. - * - * @return \Generator a whole bunch of \Reflector instances - */ - private function getParentReflectors($reflector): \Generator - { - $seenClasses = []; - - switch (\get_class($reflector)) { - case \ReflectionClass::class: - case \ReflectionObject::class: - foreach ($reflector->getTraits() as $trait) { - if (!\in_array($trait->getName(), $seenClasses)) { - $seenClasses[] = $trait->getName(); - yield $trait; - } - } - - foreach ($reflector->getInterfaces() as $interface) { - if (!\in_array($interface->getName(), $seenClasses)) { - $seenClasses[] = $interface->getName(); - yield $interface; - } - } - - while ($reflector = $reflector->getParentClass()) { - yield $reflector; - - foreach ($reflector->getTraits() as $trait) { - if (!\in_array($trait->getName(), $seenClasses)) { - $seenClasses[] = $trait->getName(); - yield $trait; - } - } - - foreach ($reflector->getInterfaces() as $interface) { - if (!\in_array($interface->getName(), $seenClasses)) { - $seenClasses[] = $interface->getName(); - yield $interface; - } - } - } - - return; - - case \ReflectionMethod::class: - foreach ($this->getParentReflectors($reflector->getDeclaringClass()) as $parent) { - if ($parent->hasMethod($reflector->getName())) { - $parentMethod = $parent->getMethod($reflector->getName()); - if (!\in_array($parentMethod->getDeclaringClass()->getName(), $seenClasses)) { - $seenClasses[] = $parentMethod->getDeclaringClass()->getName(); - yield $parentMethod; - } - } - } - - return; - - case \ReflectionProperty::class: - foreach ($this->getParentReflectors($reflector->getDeclaringClass()) as $parent) { - if ($parent->hasProperty($reflector->getName())) { - $parentProperty = $parent->getProperty($reflector->getName()); - if (!\in_array($parentProperty->getDeclaringClass()->getName(), $seenClasses)) { - $seenClasses[] = $parentProperty->getDeclaringClass()->getName(); - yield $parentProperty; - } - } - } - break; - } - } - - private function getManualDocById($id) - { - if ($db = $this->getShell()->getManualDb()) { - $result = $db->query(\sprintf('SELECT doc FROM php_manual WHERE id = %s', $db->quote($id))); - if ($result !== false) { - return $result->fetchColumn(0); - } - } - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Command/DumpCommand.php b/docker/streamline-src/vendor/psy/psysh/src/Command/DumpCommand.php deleted file mode 100644 index 145851d0..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Command/DumpCommand.php +++ /dev/null @@ -1,90 +0,0 @@ -presenter = $presenter; - } - - /** - * {@inheritdoc} - */ - protected function configure() - { - $this - ->setName('dump') - ->setDefinition([ - new CodeArgument('target', CodeArgument::REQUIRED, 'A target object or primitive to dump.'), - new InputOption('depth', '', InputOption::VALUE_REQUIRED, 'Depth to parse.', 10), - new InputOption('all', 'a', InputOption::VALUE_NONE, 'Include private and protected methods and properties.'), - ]) - ->setDescription('Dump an object or primitive.') - ->setHelp( - <<<'HELP' -Dump an object or primitive. - -This is like var_dump but way awesomer. - -e.g. ->>> dump $_ ->>> dump $someVar ->>> dump $stuff->getAll() -HELP - ); - } - - /** - * {@inheritdoc} - * - * @return int 0 if everything went fine, or an exit code - */ - protected function execute(InputInterface $input, OutputInterface $output): int - { - if (!$output instanceof ShellOutput) { - throw new RuntimeException('DumpCommand requires a ShellOutput'); - } - - $depth = $input->getOption('depth'); - $target = $this->resolveCode($input->getArgument('target')); - $output->page($this->presenter->present($target, $depth, $input->getOption('all') ? Presenter::VERBOSE : 0)); - - if (\is_object($target)) { - $this->setCommandScopeVariables(new \ReflectionObject($target)); - } - - return 0; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Command/EditCommand.php b/docker/streamline-src/vendor/psy/psysh/src/Command/EditCommand.php deleted file mode 100644 index dc4bf7d6..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Command/EditCommand.php +++ /dev/null @@ -1,181 +0,0 @@ -runtimeDir = $runtimeDir; - } - - protected function configure() - { - $this - ->setName('edit') - ->setDefinition([ - new InputArgument('file', InputArgument::OPTIONAL, 'The file to open for editing. If this is not given, edits a temporary file.', null), - new InputOption( - 'exec', - 'e', - InputOption::VALUE_NONE, - 'Execute the file content after editing. This is the default when a file name argument is not given.', - null - ), - new InputOption( - 'no-exec', - 'E', - InputOption::VALUE_NONE, - 'Do not execute the file content after editing. This is the default when a file name argument is given.', - null - ), - ]) - ->setDescription('Open an external editor. Afterwards, get produced code in input buffer.') - ->setHelp('Set the EDITOR environment variable to something you\'d like to use.'); - } - - /** - * @param InputInterface $input - * @param OutputInterface $output - * - * @return int 0 if everything went fine, or an exit code - * - * @throws \InvalidArgumentException when both exec and no-exec flags are given or if a given variable is not found in the current context - * @throws \UnexpectedValueException if file_get_contents on the edited file returns false instead of a string - */ - protected function execute(InputInterface $input, OutputInterface $output): int - { - if ($input->getOption('exec') && - $input->getOption('no-exec')) { - throw new \InvalidArgumentException('The --exec and --no-exec flags are mutually exclusive'); - } - - $filePath = $this->extractFilePath($input->getArgument('file')); - - $execute = $this->shouldExecuteFile( - $input->getOption('exec'), - $input->getOption('no-exec'), - $filePath - ); - - $shouldRemoveFile = false; - - if ($filePath === null) { - $filePath = \tempnam($this->runtimeDir, 'psysh-edit-command'); - $shouldRemoveFile = true; - } - - $editedContent = $this->editFile($filePath, $shouldRemoveFile); - - if ($execute) { - $this->getShell()->addInput($editedContent); - } - - return 0; - } - - /** - * @param bool $execOption - * @param bool $noExecOption - * @param string|null $filePath - */ - private function shouldExecuteFile(bool $execOption, bool $noExecOption, ?string $filePath = null): bool - { - if ($execOption) { - return true; - } - - if ($noExecOption) { - return false; - } - - // By default, code that is edited is executed if there was no given input file path - return $filePath === null; - } - - /** - * @param string|null $fileArgument - * - * @return string|null The file path to edit, null if the input was null, or the value of the referenced variable - * - * @throws \InvalidArgumentException If the variable is not found in the current context - */ - private function extractFilePath(?string $fileArgument = null) - { - // If the file argument was a variable, get it from the context - if ($fileArgument !== null && - $fileArgument !== '' && - $fileArgument[0] === '$') { - $fileArgument = $this->context->get(\preg_replace('/^\$/', '', $fileArgument)); - } - - return $fileArgument; - } - - /** - * @param string $filePath - * @param bool $shouldRemoveFile - * - * @throws \UnexpectedValueException if file_get_contents on $filePath returns false instead of a string - */ - private function editFile(string $filePath, bool $shouldRemoveFile): string - { - $escapedFilePath = \escapeshellarg($filePath); - $editor = (isset($_SERVER['EDITOR']) && $_SERVER['EDITOR']) ? $_SERVER['EDITOR'] : 'nano'; - - $pipes = []; - $proc = \proc_open("{$editor} {$escapedFilePath}", [\STDIN, \STDOUT, \STDERR], $pipes); - \proc_close($proc); - - $editedContent = @\file_get_contents($filePath); - - if ($shouldRemoveFile) { - @\unlink($filePath); - } - - if ($editedContent === false) { - throw new \UnexpectedValueException("Reading {$filePath} returned false"); - } - - return $editedContent; - } - - /** - * Set the Context reference. - * - * @param Context $context - */ - public function setContext(Context $context) - { - $this->context = $context; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Command/HelpCommand.php b/docker/streamline-src/vendor/psy/psysh/src/Command/HelpCommand.php deleted file mode 100644 index c7296f49..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Command/HelpCommand.php +++ /dev/null @@ -1,104 +0,0 @@ -setName('help') - ->setAliases(['?']) - ->setDefinition([ - new InputArgument('command_name', InputArgument::OPTIONAL, 'The command name.', null), - ]) - ->setDescription('Show a list of commands. Type `help [foo]` for information about [foo].') - ->setHelp('My. How meta.'); - } - - /** - * Helper for setting a subcommand to retrieve help for. - * - * @param Command $command - */ - public function setCommand(Command $command) - { - $this->command = $command; - } - - /** - * {@inheritdoc} - * - * @return int 0 if everything went fine, or an exit code - */ - protected function execute(InputInterface $input, OutputInterface $output): int - { - if ($this->command !== null) { - // help for an individual command - $output->page($this->command->asText()); - $this->command = null; - } elseif ($name = $input->getArgument('command_name')) { - // help for an individual command - $output->page($this->getApplication()->get($name)->asText()); - } else { - // list available commands - $commands = $this->getApplication()->all(); - - $table = $this->getTable($output); - - foreach ($commands as $name => $command) { - if ($name !== $command->getName()) { - continue; - } - - if ($command->getAliases()) { - $aliases = \sprintf('Aliases: %s', \implode(', ', $command->getAliases())); - } else { - $aliases = ''; - } - - $table->addRow([ - \sprintf('%s', $name), - $command->getDescription(), - $aliases, - ]); - } - - if ($output instanceof ShellOutput) { - $output->startPaging(); - } - - $table->render(); - - if ($output instanceof ShellOutput) { - $output->stopPaging(); - } - } - - return 0; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Command/HistoryCommand.php b/docker/streamline-src/vendor/psy/psysh/src/Command/HistoryCommand.php deleted file mode 100644 index b4059593..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Command/HistoryCommand.php +++ /dev/null @@ -1,251 +0,0 @@ -filter = new FilterOptions(); - - parent::__construct($name); - } - - /** - * Set the Shell's Readline service. - * - * @param Readline $readline - */ - public function setReadline(Readline $readline) - { - $this->readline = $readline; - } - - /** - * {@inheritdoc} - */ - protected function configure() - { - list($grep, $insensitive, $invert) = FilterOptions::getOptions(); - - $this - ->setName('history') - ->setAliases(['hist']) - ->setDefinition([ - new InputOption('show', 's', InputOption::VALUE_REQUIRED, 'Show the given range of lines.'), - new InputOption('head', 'H', InputOption::VALUE_REQUIRED, 'Display the first N items.'), - new InputOption('tail', 'T', InputOption::VALUE_REQUIRED, 'Display the last N items.'), - - $grep, - $insensitive, - $invert, - - new InputOption('no-numbers', 'N', InputOption::VALUE_NONE, 'Omit line numbers.'), - - new InputOption('save', '', InputOption::VALUE_REQUIRED, 'Save history to a file.'), - new InputOption('replay', '', InputOption::VALUE_NONE, 'Replay.'), - new InputOption('clear', '', InputOption::VALUE_NONE, 'Clear the history.'), - ]) - ->setDescription('Show the Psy Shell history.') - ->setHelp( - <<<'HELP' -Show, search, save or replay the Psy Shell history. - -e.g. ->>> history --grep /[bB]acon/ ->>> history --show 0..10 --replay ->>> history --clear ->>> history --tail 1000 --save somefile.txt -HELP - ); - } - - /** - * {@inheritdoc} - * - * @return int 0 if everything went fine, or an exit code - */ - protected function execute(InputInterface $input, OutputInterface $output): int - { - $this->validateOnlyOne($input, ['show', 'head', 'tail']); - $this->validateOnlyOne($input, ['save', 'replay', 'clear']); - - $history = $this->getHistorySlice( - $input->getOption('show'), - $input->getOption('head'), - $input->getOption('tail') - ); - $highlighted = false; - - $this->filter->bind($input); - if ($this->filter->hasFilter()) { - $matches = []; - $highlighted = []; - foreach ($history as $i => $line) { - if ($this->filter->match($line, $matches)) { - if (isset($matches[0])) { - $chunks = \explode($matches[0], $history[$i]); - $chunks = \array_map([__CLASS__, 'escape'], $chunks); - $glue = \sprintf('%s', self::escape($matches[0])); - - $highlighted[$i] = \implode($glue, $chunks); - } - } else { - unset($history[$i]); - } - } - } - - if ($save = $input->getOption('save')) { - $output->writeln(\sprintf('Saving history in %s...', $save)); - \file_put_contents($save, \implode(\PHP_EOL, $history).\PHP_EOL); - $output->writeln('History saved.'); - } elseif ($input->getOption('replay')) { - if (!($input->getOption('show') || $input->getOption('head') || $input->getOption('tail'))) { - throw new \InvalidArgumentException('You must limit history via --head, --tail or --show before replaying'); - } - - $count = \count($history); - $output->writeln(\sprintf('Replaying %d line%s of history', $count, ($count !== 1) ? 's' : '')); - - $this->getShell()->addInput($history); - } elseif ($input->getOption('clear')) { - $this->clearHistory(); - $output->writeln('History cleared.'); - } else { - $type = $input->getOption('no-numbers') ? 0 : ShellOutput::NUMBER_LINES; - if (!$highlighted) { - $type = $type | OutputInterface::OUTPUT_RAW; - } - - $output->page($highlighted ?: $history, $type); - } - - return 0; - } - - /** - * Extract a range from a string. - * - * @param string $range - * - * @return int[] [ start, end ] - */ - private function extractRange(string $range): array - { - if (\preg_match('/^\d+$/', $range)) { - return [(int) $range, (int) $range + 1]; - } - - $matches = []; - if ($range !== '..' && \preg_match('/^(\d*)\.\.(\d*)$/', $range, $matches)) { - $start = $matches[1] ? (int) $matches[1] : 0; - $end = $matches[2] ? (int) $matches[2] + 1 : \PHP_INT_MAX; - - return [$start, $end]; - } - - throw new \InvalidArgumentException('Unexpected range: '.$range); - } - - /** - * Retrieve a slice of the readline history. - * - * @param string|null $show - * @param string|null $head - * @param string|null $tail - * - * @return array A slice of history - */ - private function getHistorySlice($show, $head, $tail): array - { - $history = $this->readline->listHistory(); - - // don't show the current `history` invocation - \array_pop($history); - - if ($show) { - list($start, $end) = $this->extractRange($show); - $length = $end - $start; - } elseif ($head) { - if (!\preg_match('/^\d+$/', $head)) { - throw new \InvalidArgumentException('Please specify an integer argument for --head'); - } - - $start = 0; - $length = (int) $head; - } elseif ($tail) { - if (!\preg_match('/^\d+$/', $tail)) { - throw new \InvalidArgumentException('Please specify an integer argument for --tail'); - } - - $start = \count($history) - (int) $tail; - $length = (int) $tail + 1; - } else { - return $history; - } - - return \array_slice($history, $start, $length, true); - } - - /** - * Validate that only one of the given $options is set. - * - * @param InputInterface $input - * @param array $options - */ - private function validateOnlyOne(InputInterface $input, array $options) - { - $count = 0; - foreach ($options as $opt) { - if ($input->getOption($opt)) { - $count++; - } - } - - if ($count > 1) { - throw new \InvalidArgumentException('Please specify only one of --'.\implode(', --', $options)); - } - } - - /** - * Clear the readline history. - */ - private function clearHistory() - { - $this->readline->clearHistory(); - } - - public static function escape(string $string): string - { - return OutputFormatter::escape($string); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Command/ListCommand.php b/docker/streamline-src/vendor/psy/psysh/src/Command/ListCommand.php deleted file mode 100644 index 4f084f5b..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Command/ListCommand.php +++ /dev/null @@ -1,275 +0,0 @@ -presenter = $presenter; - } - - /** - * {@inheritdoc} - */ - protected function configure() - { - list($grep, $insensitive, $invert) = FilterOptions::getOptions(); - - $this - ->setName('ls') - ->setAliases(['dir']) - ->setDefinition([ - new CodeArgument('target', CodeArgument::OPTIONAL, 'A target class or object to list.'), - - new InputOption('vars', '', InputOption::VALUE_NONE, 'Display variables.'), - new InputOption('constants', 'c', InputOption::VALUE_NONE, 'Display defined constants.'), - new InputOption('functions', 'f', InputOption::VALUE_NONE, 'Display defined functions.'), - new InputOption('classes', 'k', InputOption::VALUE_NONE, 'Display declared classes.'), - new InputOption('interfaces', 'I', InputOption::VALUE_NONE, 'Display declared interfaces.'), - new InputOption('traits', 't', InputOption::VALUE_NONE, 'Display declared traits.'), - - new InputOption('no-inherit', '', InputOption::VALUE_NONE, 'Exclude inherited methods, properties and constants.'), - - new InputOption('properties', 'p', InputOption::VALUE_NONE, 'Display class or object properties (public properties by default).'), - new InputOption('methods', 'm', InputOption::VALUE_NONE, 'Display class or object methods (public methods by default).'), - - $grep, - $insensitive, - $invert, - - new InputOption('globals', 'g', InputOption::VALUE_NONE, 'Include global variables.'), - new InputOption('internal', 'n', InputOption::VALUE_NONE, 'Limit to internal functions and classes.'), - new InputOption('user', 'u', InputOption::VALUE_NONE, 'Limit to user-defined constants, functions and classes.'), - new InputOption('category', 'C', InputOption::VALUE_REQUIRED, 'Limit to constants in a specific category (e.g. "date").'), - - new InputOption('all', 'a', InputOption::VALUE_NONE, 'Include private and protected methods and properties.'), - new InputOption('long', 'l', InputOption::VALUE_NONE, 'List in long format: includes class names and method signatures.'), - ]) - ->setDescription('List local, instance or class variables, methods and constants.') - ->setHelp( - <<<'HELP' -List variables, constants, classes, interfaces, traits, functions, methods, -and properties. - -Called without options, this will return a list of variables currently in scope. - -If a target object is provided, list properties, constants and methods of that -target. If a class, interface or trait name is passed instead, list constants -and methods on that class. - -e.g. ->>> ls ->>> ls $foo ->>> ls -k --grep mongo -i ->>> ls -al ReflectionClass ->>> ls --constants --category date ->>> ls -l --functions --grep /^array_.*/ ->>> ls -l --properties new DateTime() -HELP - ); - } - - /** - * {@inheritdoc} - * - * @return int 0 if everything went fine, or an exit code - */ - protected function execute(InputInterface $input, OutputInterface $output): int - { - $this->validateInput($input); - $this->initEnumerators(); - - $method = $input->getOption('long') ? 'writeLong' : 'write'; - - if ($target = $input->getArgument('target')) { - list($target, $reflector) = $this->getTargetAndReflector($target); - } else { - $reflector = null; - } - - // @todo something cleaner than this :-/ - if ($output instanceof ShellOutput && $input->getOption('long')) { - $output->startPaging(); - } - - foreach ($this->enumerators as $enumerator) { - $this->$method($output, $enumerator->enumerate($input, $reflector, $target)); - } - - if ($output instanceof ShellOutput && $input->getOption('long')) { - $output->stopPaging(); - } - - // Set some magic local variables - if ($reflector !== null) { - $this->setCommandScopeVariables($reflector); - } - - return 0; - } - - /** - * Initialize Enumerators. - */ - protected function initEnumerators() - { - if (!isset($this->enumerators)) { - $mgr = $this->presenter; - - $this->enumerators = [ - new ClassConstantEnumerator($mgr), - new ClassEnumerator($mgr), - new ConstantEnumerator($mgr), - new FunctionEnumerator($mgr), - new GlobalVariableEnumerator($mgr), - new PropertyEnumerator($mgr), - new MethodEnumerator($mgr), - new VariableEnumerator($mgr, $this->context), - ]; - } - } - - /** - * Write the list items to $output. - * - * @param OutputInterface $output - * @param array $result List of enumerated items - */ - protected function write(OutputInterface $output, array $result) - { - if (\count($result) === 0) { - return; - } - - foreach ($result as $label => $items) { - $names = \array_map([$this, 'formatItemName'], $items); - $output->writeln(\sprintf('%s: %s', $label, \implode(', ', $names))); - } - } - - /** - * Write the list items to $output. - * - * Items are listed one per line, and include the item signature. - * - * @param OutputInterface $output - * @param array $result List of enumerated items - */ - protected function writeLong(OutputInterface $output, array $result) - { - if (\count($result) === 0) { - return; - } - - $table = $this->getTable($output); - - foreach ($result as $label => $items) { - $output->writeln(''); - $output->writeln(\sprintf('%s:', $label)); - - $table->setRows([]); - foreach ($items as $item) { - $table->addRow([$this->formatItemName($item), $item['value']]); - } - - $table->render(); - } - } - - /** - * Format an item name given its visibility. - * - * @param array $item - */ - private function formatItemName(array $item): string - { - return \sprintf('<%s>%s', $item['style'], OutputFormatter::escape($item['name']), $item['style']); - } - - /** - * Validate that input options make sense, provide defaults when called without options. - * - * @throws RuntimeException if options are inconsistent - * - * @param InputInterface $input - */ - private function validateInput(InputInterface $input) - { - if (!$input->getArgument('target')) { - // if no target is passed, there can be no properties or methods - foreach (['properties', 'methods', 'no-inherit'] as $option) { - if ($input->getOption($option)) { - throw new RuntimeException('--'.$option.' does not make sense without a specified target'); - } - } - - foreach (['globals', 'vars', 'constants', 'functions', 'classes', 'interfaces', 'traits'] as $option) { - if ($input->getOption($option)) { - return; - } - } - - // default to --vars if no other options are passed - $input->setOption('vars', true); - } else { - // if a target is passed, classes, functions, etc don't make sense - foreach (['vars', 'globals'] as $option) { - if ($input->getOption($option)) { - throw new RuntimeException('--'.$option.' does not make sense with a specified target'); - } - } - - // @todo ensure that 'functions', 'classes', 'interfaces', 'traits' only accept namespace target? - foreach (['constants', 'properties', 'methods', 'functions', 'classes', 'interfaces', 'traits'] as $option) { - if ($input->getOption($option)) { - return; - } - } - - // default to --constants --properties --methods if no other options are passed - $input->setOption('constants', true); - $input->setOption('properties', true); - $input->setOption('methods', true); - } - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Command/ListCommand/ClassConstantEnumerator.php b/docker/streamline-src/vendor/psy/psysh/src/Command/ListCommand/ClassConstantEnumerator.php deleted file mode 100644 index 9bc56748..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Command/ListCommand/ClassConstantEnumerator.php +++ /dev/null @@ -1,121 +0,0 @@ -getOption('constants')) { - return []; - } - - $noInherit = $input->getOption('no-inherit'); - $constants = $this->prepareConstants($this->getConstants($reflector, $noInherit)); - - if (empty($constants)) { - return []; - } - - $ret = []; - $ret[$this->getKindLabel($reflector)] = $constants; - - return $ret; - } - - /** - * Get defined constants for the given class or object Reflector. - * - * @param \ReflectionClass $reflector - * @param bool $noInherit Exclude inherited constants - * - * @return array - */ - protected function getConstants(\ReflectionClass $reflector, bool $noInherit = false): array - { - $className = $reflector->getName(); - - $constants = []; - foreach ($reflector->getConstants() as $name => $constant) { - $constReflector = new \ReflectionClassConstant($reflector->name, $name); - - if ($noInherit && $constReflector->getDeclaringClass()->getName() !== $className) { - continue; - } - - $constants[$name] = $constReflector; - } - - \ksort($constants, \SORT_NATURAL | \SORT_FLAG_CASE); - - return $constants; - } - - /** - * Prepare formatted constant array. - * - * @param array $constants - * - * @return array - */ - protected function prepareConstants(array $constants): array - { - // My kingdom for a generator. - $ret = []; - - foreach ($constants as $name => $constant) { - if ($this->showItem($name)) { - $ret[$name] = [ - 'name' => $name, - 'style' => self::IS_CONSTANT, - 'value' => $this->presentRef($constant->getValue()), - ]; - } - } - - return $ret; - } - - /** - * Get a label for the particular kind of "class" represented. - * - * @param \ReflectionClass $reflector - */ - protected function getKindLabel(\ReflectionClass $reflector): string - { - if ($reflector->isInterface()) { - return 'Interface Constants'; - } else { - return 'Class Constants'; - } - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Command/ListCommand/ClassEnumerator.php b/docker/streamline-src/vendor/psy/psysh/src/Command/ListCommand/ClassEnumerator.php deleted file mode 100644 index b0edf035..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Command/ListCommand/ClassEnumerator.php +++ /dev/null @@ -1,132 +0,0 @@ -getOption('internal'); - $user = $input->getOption('user'); - $prefix = $reflector === null ? null : \strtolower($reflector->getName()).'\\'; - - $ret = []; - - // only list classes, interfaces and traits if we are specifically asked - - if ($input->getOption('classes')) { - $ret = \array_merge($ret, $this->filterClasses('Classes', \get_declared_classes(), $internal, $user, $prefix)); - } - - if ($input->getOption('interfaces')) { - $ret = \array_merge($ret, $this->filterClasses('Interfaces', \get_declared_interfaces(), $internal, $user, $prefix)); - } - - if ($input->getOption('traits')) { - $ret = \array_merge($ret, $this->filterClasses('Traits', \get_declared_traits(), $internal, $user, $prefix)); - } - - return \array_map([$this, 'prepareClasses'], \array_filter($ret)); - } - - /** - * Filter a list of classes, interfaces or traits. - * - * If $internal or $user is defined, results will be limited to internal or - * user-defined classes as appropriate. - * - * @param string $key - * @param array $classes - * @param bool $internal - * @param bool $user - * @param string $prefix - * - * @return array - */ - protected function filterClasses(string $key, array $classes, bool $internal, bool $user, ?string $prefix = null): array - { - $ret = []; - - if ($internal) { - $ret['Internal '.$key] = \array_filter($classes, function ($class) use ($prefix) { - if ($prefix !== null && \strpos(\strtolower($class), $prefix) !== 0) { - return false; - } - - $refl = new \ReflectionClass($class); - - return $refl->isInternal(); - }); - } - - if ($user) { - $ret['User '.$key] = \array_filter($classes, function ($class) use ($prefix) { - if ($prefix !== null && \strpos(\strtolower($class), $prefix) !== 0) { - return false; - } - - $refl = new \ReflectionClass($class); - - return !$refl->isInternal(); - }); - } - - if (!$user && !$internal) { - $ret[$key] = \array_filter($classes, function ($class) use ($prefix) { - return $prefix === null || \strpos(\strtolower($class), $prefix) === 0; - }); - } - - return $ret; - } - - /** - * Prepare formatted class array. - * - * @param array $classes - * - * @return array - */ - protected function prepareClasses(array $classes): array - { - \natcasesort($classes); - - // My kingdom for a generator. - $ret = []; - - foreach ($classes as $name) { - if ($this->showItem($name)) { - $ret[$name] = [ - 'name' => $name, - 'style' => self::IS_CLASS, - 'value' => $this->presentSignature($name), - ]; - } - } - - return $ret; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Command/ListCommand/ConstantEnumerator.php b/docker/streamline-src/vendor/psy/psysh/src/Command/ListCommand/ConstantEnumerator.php deleted file mode 100644 index c0f7c617..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Command/ListCommand/ConstantEnumerator.php +++ /dev/null @@ -1,175 +0,0 @@ - 'libxml', - 'openssl' => 'OpenSSL', - 'pcre' => 'PCRE', - 'sqlite3' => 'SQLite3', - 'curl' => 'cURL', - 'dom' => 'DOM', - 'ftp' => 'FTP', - 'gd' => 'GD', - 'gmp' => 'GMP', - 'iconv' => 'iconv', - 'json' => 'JSON', - 'ldap' => 'LDAP', - 'mbstring' => 'mbstring', - 'odbc' => 'ODBC', - 'pcntl' => 'PCNTL', - 'pgsql' => 'pgsql', - 'posix' => 'POSIX', - 'mysqli' => 'mysqli', - 'soap' => 'SOAP', - 'exif' => 'EXIF', - 'sysvmsg' => 'sysvmsg', - 'xml' => 'XML', - 'xsl' => 'XSL', - ]; - - /** - * {@inheritdoc} - */ - protected function listItems(InputInterface $input, ?\Reflector $reflector = null, $target = null): array - { - // if we have a reflector, ensure that it's a namespace reflector - if (($target !== null || $reflector !== null) && !$reflector instanceof ReflectionNamespace) { - return []; - } - - // only list constants if we are specifically asked - if (!$input->getOption('constants')) { - return []; - } - - $user = $input->getOption('user'); - $internal = $input->getOption('internal'); - $category = $input->getOption('category'); - - if ($category) { - $category = \strtolower($category); - - if ($category === 'internal') { - $internal = true; - $category = null; - } elseif ($category === 'user') { - $user = true; - $category = null; - } - } - - $ret = []; - - if ($user) { - $ret['User Constants'] = $this->getConstants('user'); - } - - if ($internal) { - $ret['Internal Constants'] = $this->getConstants('internal'); - } - - if ($category) { - $caseCategory = \array_key_exists($category, self::CATEGORY_LABELS) ? self::CATEGORY_LABELS[$category] : \ucfirst($category); - $label = $caseCategory.' Constants'; - $ret[$label] = $this->getConstants($category); - } - - if (!$user && !$internal && !$category) { - $ret['Constants'] = $this->getConstants(); - } - - if ($reflector !== null) { - $prefix = \strtolower($reflector->getName()).'\\'; - - foreach ($ret as $key => $names) { - foreach (\array_keys($names) as $name) { - if (\strpos(\strtolower($name), $prefix) !== 0) { - unset($ret[$key][$name]); - } - } - } - } - - return \array_map([$this, 'prepareConstants'], \array_filter($ret)); - } - - /** - * Get defined constants. - * - * Optionally restrict constants to a given category, e.g. "date". If the - * category is "internal", include all non-user-defined constants. - * - * @param string $category - * - * @return array - */ - protected function getConstants(?string $category = null): array - { - if (!$category) { - return \get_defined_constants(); - } - - $consts = \get_defined_constants(true); - - if ($category === 'internal') { - unset($consts['user']); - - return \array_merge(...\array_values($consts)); - } - - foreach ($consts as $key => $value) { - if (\strtolower($key) === $category) { - return $value; - } - } - - return []; - } - - /** - * Prepare formatted constant array. - * - * @param array $constants - * - * @return array - */ - protected function prepareConstants(array $constants): array - { - // My kingdom for a generator. - $ret = []; - - $names = \array_keys($constants); - \natcasesort($names); - - foreach ($names as $name) { - if ($this->showItem($name)) { - $ret[$name] = [ - 'name' => $name, - 'style' => self::IS_CONSTANT, - 'value' => $this->presentRef($constants[$name]), - ]; - } - } - - return $ret; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Command/ListCommand/Enumerator.php b/docker/streamline-src/vendor/psy/psysh/src/Command/ListCommand/Enumerator.php deleted file mode 100644 index 4cc336c5..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Command/ListCommand/Enumerator.php +++ /dev/null @@ -1,106 +0,0 @@ -filter = new FilterOptions(); - $this->presenter = $presenter; - } - - /** - * Return a list of categorized things with the given input options and target. - * - * @param InputInterface $input - * @param \Reflector|null $reflector - * @param mixed $target - * - * @return array - */ - public function enumerate(InputInterface $input, ?\Reflector $reflector = null, $target = null): array - { - $this->filter->bind($input); - - return $this->listItems($input, $reflector, $target); - } - - /** - * Enumerate specific items with the given input options and target. - * - * Implementing classes should return an array of arrays: - * - * [ - * 'Constants' => [ - * 'FOO' => [ - * 'name' => 'FOO', - * 'style' => 'public', - * 'value' => '123', - * ], - * ], - * ] - * - * @param InputInterface $input - * @param \Reflector|null $reflector - * @param mixed $target - * - * @return array - */ - abstract protected function listItems(InputInterface $input, ?\Reflector $reflector = null, $target = null): array; - - protected function showItem($name) - { - return $this->filter->match($name); - } - - protected function presentRef($value) - { - return $this->presenter->presentRef($value); - } - - protected function presentSignature($target) - { - // This might get weird if the signature is actually for a reflector. Hrm. - if (!$target instanceof \Reflector) { - $target = Mirror::get($target); - } - - return SignatureFormatter::format($target); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Command/ListCommand/FunctionEnumerator.php b/docker/streamline-src/vendor/psy/psysh/src/Command/ListCommand/FunctionEnumerator.php deleted file mode 100644 index fe3891a5..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Command/ListCommand/FunctionEnumerator.php +++ /dev/null @@ -1,116 +0,0 @@ -getOption('functions')) { - return []; - } - - if ($input->getOption('user')) { - $label = 'User Functions'; - $functions = $this->getFunctions('user'); - } elseif ($input->getOption('internal')) { - $label = 'Internal Functions'; - $functions = $this->getFunctions('internal'); - } else { - $label = 'Functions'; - $functions = $this->getFunctions(); - } - - $prefix = $reflector === null ? null : \strtolower($reflector->getName()).'\\'; - $functions = $this->prepareFunctions($functions, $prefix); - - if (empty($functions)) { - return []; - } - - $ret = []; - $ret[$label] = $functions; - - return $ret; - } - - /** - * Get defined functions. - * - * Optionally limit functions to "user" or "internal" functions. - * - * @param string|null $type "user" or "internal" (default: both) - * - * @return array - */ - protected function getFunctions(?string $type = null): array - { - $funcs = \get_defined_functions(); - - if ($type) { - return $funcs[$type]; - } else { - return \array_merge($funcs['internal'], $funcs['user']); - } - } - - /** - * Prepare formatted function array. - * - * @param array $functions - * @param string $prefix - * - * @return array - */ - protected function prepareFunctions(array $functions, ?string $prefix = null): array - { - \natcasesort($functions); - - // My kingdom for a generator. - $ret = []; - - foreach ($functions as $name) { - if ($prefix !== null && \strpos(\strtolower($name), $prefix) !== 0) { - continue; - } - - if ($this->showItem($name)) { - try { - $ret[$name] = [ - 'name' => $name, - 'style' => self::IS_FUNCTION, - 'value' => $this->presentSignature($name), - ]; - } catch (\Throwable $e) { - // Ignore failures. - } - } - } - - return $ret; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Command/ListCommand/GlobalVariableEnumerator.php b/docker/streamline-src/vendor/psy/psysh/src/Command/ListCommand/GlobalVariableEnumerator.php deleted file mode 100644 index 81be16e5..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Command/ListCommand/GlobalVariableEnumerator.php +++ /dev/null @@ -1,92 +0,0 @@ -getOption('globals')) { - return []; - } - - $globals = $this->prepareGlobals($this->getGlobals()); - - if (empty($globals)) { - return []; - } - - return [ - 'Global Variables' => $globals, - ]; - } - - /** - * Get defined global variables. - * - * @return array - */ - protected function getGlobals(): array - { - global $GLOBALS; - - $names = \array_keys($GLOBALS); - \natcasesort($names); - - $ret = []; - foreach ($names as $name) { - $ret[$name] = $GLOBALS[$name]; - } - - return $ret; - } - - /** - * Prepare formatted global variable array. - * - * @param array $globals - * - * @return array - */ - protected function prepareGlobals(array $globals): array - { - // My kingdom for a generator. - $ret = []; - - foreach ($globals as $name => $value) { - if ($this->showItem($name)) { - $fname = '$'.$name; - $ret[$fname] = [ - 'name' => $fname, - 'style' => self::IS_GLOBAL, - 'value' => $this->presentRef($value), - ]; - } - } - - return $ret; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Command/ListCommand/MethodEnumerator.php b/docker/streamline-src/vendor/psy/psysh/src/Command/ListCommand/MethodEnumerator.php deleted file mode 100644 index e7b4503f..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Command/ListCommand/MethodEnumerator.php +++ /dev/null @@ -1,142 +0,0 @@ -getOption('methods')) { - return []; - } - - $showAll = $input->getOption('all'); - $noInherit = $input->getOption('no-inherit'); - $methods = $this->prepareMethods($this->getMethods($showAll, $reflector, $noInherit)); - - if (empty($methods)) { - return []; - } - - $ret = []; - $ret[$this->getKindLabel($reflector)] = $methods; - - return $ret; - } - - /** - * Get defined methods for the given class or object Reflector. - * - * @param bool $showAll Include private and protected methods - * @param \ReflectionClass $reflector - * @param bool $noInherit Exclude inherited methods - * - * @return array - */ - protected function getMethods(bool $showAll, \ReflectionClass $reflector, bool $noInherit = false): array - { - $className = $reflector->getName(); - - $methods = []; - foreach ($reflector->getMethods() as $name => $method) { - // For some reason PHP reflection shows private methods from the parent class, even - // though they're effectively worthless. Let's suppress them here, like --no-inherit - if (($noInherit || $method->isPrivate()) && $method->getDeclaringClass()->getName() !== $className) { - continue; - } - - if ($showAll || $method->isPublic()) { - $methods[$method->getName()] = $method; - } - } - - \ksort($methods, \SORT_NATURAL | \SORT_FLAG_CASE); - - return $methods; - } - - /** - * Prepare formatted method array. - * - * @param array $methods - * - * @return array - */ - protected function prepareMethods(array $methods): array - { - // My kingdom for a generator. - $ret = []; - - foreach ($methods as $name => $method) { - if ($this->showItem($name)) { - $ret[$name] = [ - 'name' => $name, - 'style' => $this->getVisibilityStyle($method), - 'value' => $this->presentSignature($method), - ]; - } - } - - return $ret; - } - - /** - * Get a label for the particular kind of "class" represented. - * - * @param \ReflectionClass $reflector - */ - protected function getKindLabel(\ReflectionClass $reflector): string - { - if ($reflector->isInterface()) { - return 'Interface Methods'; - } elseif (\method_exists($reflector, 'isTrait') && $reflector->isTrait()) { - return 'Trait Methods'; - } else { - return 'Class Methods'; - } - } - - /** - * Get output style for the given method's visibility. - * - * @param \ReflectionMethod $method - */ - private function getVisibilityStyle(\ReflectionMethod $method): string - { - if ($method->isPublic()) { - return self::IS_PUBLIC; - } elseif ($method->isProtected()) { - return self::IS_PROTECTED; - } else { - return self::IS_PRIVATE; - } - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Command/ListCommand/PropertyEnumerator.php b/docker/streamline-src/vendor/psy/psysh/src/Command/ListCommand/PropertyEnumerator.php deleted file mode 100644 index 17661455..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Command/ListCommand/PropertyEnumerator.php +++ /dev/null @@ -1,176 +0,0 @@ -getOption('properties')) { - return []; - } - - $showAll = $input->getOption('all'); - $noInherit = $input->getOption('no-inherit'); - $properties = $this->prepareProperties($this->getProperties($showAll, $reflector, $noInherit), $target); - - if (empty($properties)) { - return []; - } - - $ret = []; - $ret[$this->getKindLabel($reflector)] = $properties; - - return $ret; - } - - /** - * Get defined properties for the given class or object Reflector. - * - * @param bool $showAll Include private and protected properties - * @param \ReflectionClass $reflector - * @param bool $noInherit Exclude inherited properties - * - * @return array - */ - protected function getProperties(bool $showAll, \ReflectionClass $reflector, bool $noInherit = false): array - { - $className = $reflector->getName(); - - $properties = []; - foreach ($reflector->getProperties() as $property) { - if ($noInherit && $property->getDeclaringClass()->getName() !== $className) { - continue; - } - - if ($showAll || $property->isPublic()) { - $properties[$property->getName()] = $property; - } - } - - \ksort($properties, \SORT_NATURAL | \SORT_FLAG_CASE); - - return $properties; - } - - /** - * Prepare formatted property array. - * - * @param array $properties - * - * @return array - */ - protected function prepareProperties(array $properties, $target = null): array - { - // My kingdom for a generator. - $ret = []; - - foreach ($properties as $name => $property) { - if ($this->showItem($name)) { - $fname = '$'.$name; - $ret[$fname] = [ - 'name' => $fname, - 'style' => $this->getVisibilityStyle($property), - 'value' => $this->presentValue($property, $target), - ]; - } - } - - return $ret; - } - - /** - * Get a label for the particular kind of "class" represented. - * - * @param \ReflectionClass $reflector - */ - protected function getKindLabel(\ReflectionClass $reflector): string - { - if (\method_exists($reflector, 'isTrait') && $reflector->isTrait()) { - return 'Trait Properties'; - } else { - return 'Class Properties'; - } - } - - /** - * Get output style for the given property's visibility. - * - * @param \ReflectionProperty $property - */ - private function getVisibilityStyle(\ReflectionProperty $property): string - { - if ($property->isPublic()) { - return self::IS_PUBLIC; - } elseif ($property->isProtected()) { - return self::IS_PROTECTED; - } else { - return self::IS_PRIVATE; - } - } - - /** - * Present the $target's current value for a reflection property. - * - * @param \ReflectionProperty $property - * @param mixed $target - */ - protected function presentValue(\ReflectionProperty $property, $target): string - { - if (!$target) { - return ''; - } - - // If $target is a class or trait (try to) get the default - // value for the property. - if (!\is_object($target)) { - try { - $refl = new \ReflectionClass($target); - $props = $refl->getDefaultProperties(); - if (\array_key_exists($property->name, $props)) { - $suffix = $property->isStatic() ? '' : ' '; - - return $this->presentRef($props[$property->name]).$suffix; - } - } catch (\Throwable $e) { - // Well, we gave it a shot. - } - - return ''; - } - - $property->setAccessible(true); - $value = $property->getValue($target); - - return $this->presentRef($value); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Command/ListCommand/VariableEnumerator.php b/docker/streamline-src/vendor/psy/psysh/src/Command/ListCommand/VariableEnumerator.php deleted file mode 100644 index 133a188d..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Command/ListCommand/VariableEnumerator.php +++ /dev/null @@ -1,137 +0,0 @@ -context = $context; - parent::__construct($presenter); - } - - /** - * {@inheritdoc} - */ - protected function listItems(InputInterface $input, ?\Reflector $reflector = null, $target = null): array - { - // only list variables when no Reflector is present. - if ($reflector !== null || $target !== null) { - return []; - } - - // only list variables if we are specifically asked - if (!$input->getOption('vars')) { - return []; - } - - $showAll = $input->getOption('all'); - $variables = $this->prepareVariables($this->getVariables($showAll)); - - if (empty($variables)) { - return []; - } - - return [ - 'Variables' => $variables, - ]; - } - - /** - * Get scope variables. - * - * @param bool $showAll Include special variables (e.g. $_) - * - * @return array - */ - protected function getVariables(bool $showAll): array - { - $scopeVars = $this->context->getAll(); - \uksort($scopeVars, function ($a, $b) { - $aIndex = \array_search($a, self::SPECIAL_NAMES); - $bIndex = \array_search($b, self::SPECIAL_NAMES); - - if ($aIndex !== false) { - if ($bIndex !== false) { - return $aIndex - $bIndex; - } - - return 1; - } - - if ($bIndex !== false) { - return -1; - } - - return \strnatcasecmp($a, $b); - }); - - $ret = []; - foreach ($scopeVars as $name => $val) { - if (!$showAll && \in_array($name, self::SPECIAL_NAMES)) { - continue; - } - - $ret[$name] = $val; - } - - return $ret; - } - - /** - * Prepare formatted variable array. - * - * @param array $variables - * - * @return array - */ - protected function prepareVariables(array $variables): array - { - // My kingdom for a generator. - $ret = []; - foreach ($variables as $name => $val) { - if ($this->showItem($name)) { - $fname = '$'.$name; - $ret[$fname] = [ - 'name' => $fname, - 'style' => \in_array($name, self::SPECIAL_NAMES) ? self::IS_PRIVATE : self::IS_PUBLIC, - 'value' => $this->presentRef($val), - ]; - } - } - - return $ret; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Command/ParseCommand.php b/docker/streamline-src/vendor/psy/psysh/src/Command/ParseCommand.php deleted file mode 100644 index 550f42bf..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Command/ParseCommand.php +++ /dev/null @@ -1,121 +0,0 @@ -parser = (new ParserFactory())->createParser(); - - parent::__construct($name); - } - - /** - * ContextAware interface. - * - * @param Context $context - */ - public function setContext(Context $context) - { - $this->context = $context; - } - - /** - * PresenterAware interface. - * - * @param Presenter $presenter - */ - public function setPresenter(Presenter $presenter) - { - $this->presenter = clone $presenter; - $this->presenter->addCasters([ - Node::class => function (Node $node, array $a) { - $a = [ - Caster::PREFIX_VIRTUAL.'type' => $node->getType(), - Caster::PREFIX_VIRTUAL.'attributes' => $node->getAttributes(), - ]; - - foreach ($node->getSubNodeNames() as $name) { - $a[Caster::PREFIX_VIRTUAL.$name] = $node->$name; - } - - return $a; - }, - ]); - } - - /** - * {@inheritdoc} - */ - protected function configure() - { - $this - ->setName('parse') - ->setDefinition([ - new CodeArgument('code', CodeArgument::REQUIRED, 'PHP code to parse.'), - new InputOption('depth', '', InputOption::VALUE_REQUIRED, 'Depth to parse.', 10), - ]) - ->setDescription('Parse PHP code and show the abstract syntax tree.') - ->setHelp( - <<<'HELP' -Parse PHP code and show the abstract syntax tree. - -This command is used in the development of PsySH. Given a string of PHP code, -it pretty-prints the PHP Parser parse tree. - -See https://github.com/nikic/PHP-Parser - -It prolly won't be super useful for most of you, but it's here if you want to play. -HELP - ); - } - - /** - * {@inheritdoc} - */ - protected function execute(InputInterface $input, OutputInterface $output): int - { - $code = $input->getArgument('code'); - $depth = $input->getOption('depth'); - - $nodes = $this->parser->parse($code); - $output->page($this->presenter->present($nodes, $depth)); - - $this->context->setReturnValue($nodes); - - return 0; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Command/ReflectingCommand.php b/docker/streamline-src/vendor/psy/psysh/src/Command/ReflectingCommand.php deleted file mode 100644 index 6f055b7a..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Command/ReflectingCommand.php +++ /dev/null @@ -1,326 +0,0 @@ -)(\w+)$/'; - - protected Context $context; - private CodeArgumentParser $parser; - private NodeTraverser $traverser; - private Printer $printer; - - /** - * {@inheritdoc} - */ - public function __construct($name = null) - { - $this->parser = new CodeArgumentParser(); - - // @todo Pass visitor directly to once we drop support for PHP-Parser 4.x - $this->traverser = new NodeTraverser(); - $this->traverser->addVisitor(new SudoVisitor()); - - $this->printer = new Printer(); - - parent::__construct($name); - } - - /** - * ContextAware interface. - * - * @param Context $context - */ - public function setContext(Context $context) - { - $this->context = $context; - } - - /** - * Get the target for a value. - * - * @throws \InvalidArgumentException when the value specified can't be resolved - * - * @param string $valueName Function, class, variable, constant, method or property name - * - * @return array (class or instance name, member name, kind) - */ - protected function getTarget(string $valueName): array - { - $valueName = \trim($valueName); - $matches = []; - switch (true) { - case \preg_match(self::CLASS_OR_FUNC, $valueName, $matches): - return [$this->resolveName($matches[0], true), null, 0]; - - case \preg_match(self::CLASS_MEMBER, $valueName, $matches): - return [$this->resolveName($matches[1]), $matches[2], Mirror::CONSTANT | Mirror::METHOD]; - - case \preg_match(self::CLASS_STATIC, $valueName, $matches): - return [$this->resolveName($matches[1]), $matches[2], Mirror::STATIC_PROPERTY | Mirror::PROPERTY]; - - case \preg_match(self::INSTANCE_MEMBER, $valueName, $matches): - if ($matches[2] === '->') { - $kind = Mirror::METHOD | Mirror::PROPERTY; - } else { - $kind = Mirror::CONSTANT | Mirror::METHOD; - } - - return [$this->resolveObject($matches[1]), $matches[3], $kind]; - - default: - return [$this->resolveObject($valueName), null, 0]; - } - } - - /** - * Resolve a class or function name (with the current shell namespace). - * - * @throws ErrorException when `self` or `static` is used in a non-class scope - * - * @param string $name - * @param bool $includeFunctions (default: false) - */ - protected function resolveName(string $name, bool $includeFunctions = false): string - { - $shell = $this->getShell(); - - // While not *technically* 100% accurate, let's treat `self` and `static` as equivalent. - if (\in_array(\strtolower($name), ['self', 'static'])) { - if ($boundClass = $shell->getBoundClass()) { - return $boundClass; - } - - if ($boundObject = $shell->getBoundObject()) { - return \get_class($boundObject); - } - - $msg = \sprintf('Cannot use "%s" when no class scope is active', \strtolower($name)); - throw new ErrorException($msg, 0, \E_USER_ERROR, "eval()'d code", 1); - } - - if (\substr($name, 0, 1) === '\\') { - return $name; - } - - // Check $name against the current namespace and use statements. - if (self::couldBeClassName($name)) { - try { - $name = $this->resolveCode($name.'::class'); - } catch (RuntimeException $e) { - // /shrug - } - } - - if ($namespace = $shell->getNamespace()) { - $fullName = $namespace.'\\'.$name; - - if (\class_exists($fullName) || \interface_exists($fullName) || ($includeFunctions && \function_exists($fullName))) { - return $fullName; - } - } - - return $name; - } - - /** - * Check whether a given name could be a class name. - */ - protected function couldBeClassName(string $name): bool - { - // Regex based on https://www.php.net/manual/en/language.oop5.basic.php#language.oop5.basic.class - return \preg_match('/^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*(\\\\[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*)*$/', $name) === 1; - } - - /** - * Get a Reflector and documentation for a function, class or instance, constant, method or property. - * - * @param string $valueName Function, class, variable, constant, method or property name - * - * @return array (value, Reflector) - */ - protected function getTargetAndReflector(string $valueName): array - { - list($value, $member, $kind) = $this->getTarget($valueName); - - return [$value, Mirror::get($value, $member, $kind)]; - } - - /** - * Resolve code to a value in the current scope. - * - * @throws RuntimeException when the code does not return a value in the current scope - * - * @param string $code - * - * @return mixed Variable value - */ - protected function resolveCode(string $code) - { - try { - // Add an implicit `sudo` to target resolution. - $nodes = $this->traverser->traverse($this->parser->parse($code)); - $sudoCode = $this->printer->prettyPrint($nodes); - $value = $this->getShell()->execute($sudoCode, true); - } catch (\Throwable $e) { - // Swallow all exceptions? - } - - if (!isset($value) || $value instanceof NoReturnValue) { - throw new RuntimeException('Unknown target: '.$code); - } - - return $value; - } - - /** - * Resolve code to an object in the current scope. - * - * @throws UnexpectedTargetException when the code resolves to a non-object value - * - * @param string $code - * - * @return object Variable instance - */ - private function resolveObject(string $code) - { - $value = $this->resolveCode($code); - - if (!\is_object($value)) { - throw new UnexpectedTargetException($value, 'Unable to inspect a non-object'); - } - - return $value; - } - - /** - * Get a variable from the current shell scope. - * - * @param string $name - * - * @return mixed - */ - protected function getScopeVariable(string $name) - { - return $this->context->get($name); - } - - /** - * Get all scope variables from the current shell scope. - * - * @return array - */ - protected function getScopeVariables(): array - { - return $this->context->getAll(); - } - - /** - * Given a Reflector instance, set command-scope variables in the shell - * execution context. This is used to inject magic $__class, $__method and - * $__file variables (as well as a handful of others). - * - * @param \Reflector $reflector - */ - protected function setCommandScopeVariables(\Reflector $reflector) - { - $vars = []; - - switch (\get_class($reflector)) { - case \ReflectionClass::class: - case \ReflectionObject::class: - $vars['__class'] = $reflector->name; - if ($reflector->inNamespace()) { - $vars['__namespace'] = $reflector->getNamespaceName(); - } - break; - - case \ReflectionMethod::class: - $vars['__method'] = \sprintf('%s::%s', $reflector->class, $reflector->name); - $vars['__class'] = $reflector->class; - $classReflector = $reflector->getDeclaringClass(); - if ($classReflector->inNamespace()) { - $vars['__namespace'] = $classReflector->getNamespaceName(); - } - break; - - case \ReflectionFunction::class: - $vars['__function'] = $reflector->name; - if ($reflector->inNamespace()) { - $vars['__namespace'] = $reflector->getNamespaceName(); - } - break; - - case \ReflectionGenerator::class: - $funcReflector = $reflector->getFunction(); - $vars['__function'] = $funcReflector->name; - if ($funcReflector->inNamespace()) { - $vars['__namespace'] = $funcReflector->getNamespaceName(); - } - if ($fileName = $reflector->getExecutingFile()) { - $vars['__file'] = $fileName; - $vars['__line'] = $reflector->getExecutingLine(); - $vars['__dir'] = \dirname($fileName); - } - break; - - case \ReflectionProperty::class: - case \ReflectionClassConstant::class: - $classReflector = $reflector->getDeclaringClass(); - $vars['__class'] = $classReflector->name; - if ($classReflector->inNamespace()) { - $vars['__namespace'] = $classReflector->getNamespaceName(); - } - // no line for these, but this'll do - if ($fileName = $reflector->getDeclaringClass()->getFileName()) { - $vars['__file'] = $fileName; - $vars['__dir'] = \dirname($fileName); - } - break; - - case ReflectionConstant::class: - if ($reflector->inNamespace()) { - $vars['__namespace'] = $reflector->getNamespaceName(); - } - break; - } - - if ($reflector instanceof \ReflectionClass || $reflector instanceof \ReflectionFunctionAbstract) { - if ($fileName = $reflector->getFileName()) { - $vars['__file'] = $fileName; - $vars['__line'] = $reflector->getStartLine(); - $vars['__dir'] = \dirname($fileName); - } - } - - $this->context->setCommandScopeVariables($vars); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Command/ShowCommand.php b/docker/streamline-src/vendor/psy/psysh/src/Command/ShowCommand.php deleted file mode 100644 index 35703e66..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Command/ShowCommand.php +++ /dev/null @@ -1,293 +0,0 @@ -setName('show') - ->setDefinition([ - new CodeArgument('target', CodeArgument::OPTIONAL, 'Function, class, instance, constant, method or property to show.'), - new InputOption('ex', null, InputOption::VALUE_OPTIONAL, 'Show last exception context. Optionally specify a stack index.', 1), - ]) - ->setDescription('Show the code for an object, class, constant, method or property.') - ->setHelp( - <<show --ex defaults to showing the lines surrounding the location of the last -exception. Invoking it more than once travels up the exception's stack trace, -and providing a number shows the context of the given index of the trace. - -e.g. ->>> show \$myObject ->>> show Psy\Shell::debug ->>> show --ex ->>> show --ex 3 -HELP - ); - } - - /** - * {@inheritdoc} - * - * @return int 0 if everything went fine, or an exit code - */ - protected function execute(InputInterface $input, OutputInterface $output): int - { - // n.b. As far as I can tell, InputInterface doesn't want to tell me - // whether an option with an optional value was actually passed. If you - // call `$input->getOption('ex')`, it will return the default, both when - // `--ex` is specified with no value, and when `--ex` isn't specified at - // all. - // - // So we're doing something sneaky here. If we call `getOptions`, it'll - // return the default value when `--ex` is not present, and `null` if - // `--ex` is passed with no value. /shrug - $opts = $input->getOptions(); - - // Strict comparison to `1` (the default value) here, because `--ex 1` - // will come in as `"1"`. Now we can tell the difference between - // "no --ex present", because it's the integer 1, "--ex with no value", - // because it's `null`, and "--ex 1", because it's the string "1". - if ($opts['ex'] !== 1) { - if ($input->getArgument('target')) { - throw new \InvalidArgumentException('Too many arguments (supply either "target" or "--ex")'); - } - - $this->writeExceptionContext($input, $output); - - return 0; - } - - if ($input->getArgument('target')) { - $this->writeCodeContext($input, $output); - - return 0; - } - - throw new RuntimeException('Not enough arguments (missing: "target")'); - } - - private function writeCodeContext(InputInterface $input, OutputInterface $output) - { - try { - list($target, $reflector) = $this->getTargetAndReflector($input->getArgument('target')); - } catch (UnexpectedTargetException $e) { - // If we didn't get a target and Reflector, maybe we got a filename? - $target = $e->getTarget(); - if (\is_string($target) && \is_file($target) && $code = @\file_get_contents($target)) { - $file = \realpath($target); - if ($file !== $this->context->get('__file')) { - $this->context->setCommandScopeVariables([ - '__file' => $file, - '__dir' => \dirname($file), - ]); - } - - $output->page(CodeFormatter::formatCode($code)); - - return; - } else { - throw $e; - } - } - - // Set some magic local variables - $this->setCommandScopeVariables($reflector); - - try { - $output->page(CodeFormatter::format($reflector)); - } catch (RuntimeException $e) { - $output->writeln(SignatureFormatter::format($reflector)); - throw $e; - } - } - - private function writeExceptionContext(InputInterface $input, OutputInterface $output) - { - $exception = $this->context->getLastException(); - if ($exception !== $this->lastException) { - $this->lastException = null; - $this->lastExceptionIndex = null; - } - - $opts = $input->getOptions(); - if ($opts['ex'] === null) { - if ($this->lastException && $this->lastExceptionIndex !== null) { - $index = $this->lastExceptionIndex + 1; - } else { - $index = 0; - } - } else { - $index = \max(0, (int) $input->getOption('ex') - 1); - } - - $trace = $exception->getTrace(); - \array_unshift($trace, [ - 'file' => $exception->getFile(), - 'line' => $exception->getLine(), - ]); - - if ($index >= \count($trace)) { - $index = 0; - } - - $this->lastException = $exception; - $this->lastExceptionIndex = $index; - - $output->writeln($this->getShell()->formatException($exception)); - $output->writeln('--'); - $this->writeTraceLine($output, $trace, $index); - $this->writeTraceCodeSnippet($output, $trace, $index); - - $this->setCommandScopeVariablesFromContext($trace[$index]); - } - - private function writeTraceLine(OutputInterface $output, array $trace, $index) - { - $file = isset($trace[$index]['file']) ? $this->replaceCwd($trace[$index]['file']) : 'n/a'; - $line = isset($trace[$index]['line']) ? $trace[$index]['line'] : 'n/a'; - - $output->writeln(\sprintf( - 'From %s:%d at level %d of backtrace (of %d):', - OutputFormatter::escape($file), - OutputFormatter::escape($line), - $index + 1, - \count($trace) - )); - } - - private function replaceCwd(string $file): string - { - if ($cwd = \getcwd()) { - $cwd = \rtrim($cwd, \DIRECTORY_SEPARATOR).\DIRECTORY_SEPARATOR; - } - - if ($cwd === false) { - return $file; - } else { - return \preg_replace('/^'.\preg_quote($cwd, '/').'/', '', $file); - } - } - - private function writeTraceCodeSnippet(OutputInterface $output, array $trace, $index) - { - if (!isset($trace[$index]['file'])) { - return; - } - - $file = $trace[$index]['file']; - if ($fileAndLine = $this->extractEvalFileAndLine($file)) { - list($file, $line) = $fileAndLine; - } else { - if (!isset($trace[$index]['line'])) { - return; - } - - $line = $trace[$index]['line']; - } - - if (\is_file($file)) { - $code = @\file_get_contents($file); - } - - if (empty($code)) { - return; - } - - $startLine = \max($line - 5, 0); - $endLine = $line + 5; - - $output->write(CodeFormatter::formatCode($code, $startLine, $endLine, $line), false); - } - - private function setCommandScopeVariablesFromContext(array $context) - { - $vars = []; - - if (isset($context['class'])) { - $vars['__class'] = $context['class']; - if (isset($context['function'])) { - $vars['__method'] = $context['function']; - } - - try { - $refl = new \ReflectionClass($context['class']); - if ($namespace = $refl->getNamespaceName()) { - $vars['__namespace'] = $namespace; - } - } catch (\Throwable $e) { - // oh well - } - } elseif (isset($context['function'])) { - $vars['__function'] = $context['function']; - - try { - $refl = new \ReflectionFunction($context['function']); - if ($namespace = $refl->getNamespaceName()) { - $vars['__namespace'] = $namespace; - } - } catch (\Throwable $e) { - // oh well - } - } - - if (isset($context['file'])) { - $file = $context['file']; - if ($fileAndLine = $this->extractEvalFileAndLine($file)) { - list($file, $line) = $fileAndLine; - } elseif (isset($context['line'])) { - $line = $context['line']; - } - - if (\is_file($file)) { - $vars['__file'] = $file; - if (isset($line)) { - $vars['__line'] = $line; - } - $vars['__dir'] = \dirname($file); - } - } - - $this->context->setCommandScopeVariables($vars); - } - - private function extractEvalFileAndLine(string $file) - { - if (\preg_match('/(.*)\\((\\d+)\\) : eval\\(\\)\'d code$/', $file, $matches)) { - return [$matches[1], $matches[2]]; - } - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Command/SudoCommand.php b/docker/streamline-src/vendor/psy/psysh/src/Command/SudoCommand.php deleted file mode 100644 index b84fbdc5..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Command/SudoCommand.php +++ /dev/null @@ -1,122 +0,0 @@ -parser = new CodeArgumentParser(); - - // @todo Pass visitor directly to once we drop support for PHP-Parser 4.x - $this->traverser = new NodeTraverser(); - $this->traverser->addVisitor(new SudoVisitor()); - - $this->printer = new Printer(); - - parent::__construct($name); - } - - /** - * Set the Shell's Readline service. - * - * @param Readline $readline - */ - public function setReadline(Readline $readline) - { - $this->readline = $readline; - } - - /** - * {@inheritdoc} - */ - protected function configure() - { - $this - ->setName('sudo') - ->setDefinition([ - new CodeArgument('code', CodeArgument::REQUIRED, 'Code to execute.'), - ]) - ->setDescription('Evaluate PHP code, bypassing visibility restrictions.') - ->setHelp( - <<<'HELP' -Evaluate PHP code, bypassing visibility restrictions. - -e.g. ->>> $sekret->whisper("hi") -PHP error: Call to private method Sekret::whisper() from context '' on line 1 - ->>> sudo $sekret->whisper("hi") -=> "hi" - ->>> $sekret->word -PHP error: Cannot access private property Sekret::$word on line 1 - ->>> sudo $sekret->word -=> "hi" - ->>> $sekret->word = "please" -PHP error: Cannot access private property Sekret::$word on line 1 - ->>> sudo $sekret->word = "please" -=> "please" -HELP - ); - } - - /** - * {@inheritdoc} - * - * @return int 0 if everything went fine, or an exit code - */ - protected function execute(InputInterface $input, OutputInterface $output): int - { - $code = $input->getArgument('code'); - - // special case for !! - if ($code === '!!') { - $history = $this->readline->listHistory(); - if (\count($history) < 2) { - throw new \InvalidArgumentException('No previous command to replay'); - } - $code = $history[\count($history) - 2]; - } - - $nodes = $this->traverser->traverse($this->parser->parse($code)); - - $sudoCode = $this->printer->prettyPrint($nodes); - - $shell = $this->getShell(); - $shell->addCode($sudoCode, !$shell->hasCode()); - - return 0; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Command/ThrowUpCommand.php b/docker/streamline-src/vendor/psy/psysh/src/Command/ThrowUpCommand.php deleted file mode 100644 index 0c004254..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Command/ThrowUpCommand.php +++ /dev/null @@ -1,126 +0,0 @@ -parser = new CodeArgumentParser(); - $this->printer = new Printer(); - - parent::__construct($name); - } - - /** - * {@inheritdoc} - */ - protected function configure() - { - $this - ->setName('throw-up') - ->setDefinition([ - new CodeArgument('exception', CodeArgument::OPTIONAL, 'Exception or Error to throw.'), - ]) - ->setDescription('Throw an exception or error out of the Psy Shell.') - ->setHelp( - <<<'HELP' -Throws an exception or error out of the current the Psy Shell instance. - -By default it throws the most recent exception. - -e.g. ->>> throw-up ->>> throw-up $e ->>> throw-up new Exception('WHEEEEEE!') ->>> throw-up "bye!" -HELP - ); - } - - /** - * {@inheritdoc} - * - * @return int 0 if everything went fine, or an exit code - * - * @throws \InvalidArgumentException if there is no exception to throw - */ - protected function execute(InputInterface $input, OutputInterface $output): int - { - $args = $this->prepareArgs($input->getArgument('exception')); - $throwStmt = new Expression(new Throw_(new New_(new FullyQualifiedName(ThrowUpException::class), $args))); - $throwCode = $this->printer->prettyPrint([$throwStmt]); - - $shell = $this->getShell(); - $shell->addCode($throwCode, !$shell->hasCode()); - - return 0; - } - - /** - * Parse the supplied command argument. - * - * If no argument was given, this falls back to `$_e` - * - * @throws \InvalidArgumentException if there is no exception to throw - * - * @param string $code - * - * @return Arg[] - */ - private function prepareArgs(?string $code = null): array - { - if (!$code) { - // Default to last exception if nothing else was supplied - return [new Arg(new Variable('_e'))]; - } - - $nodes = $this->parser->parse($code); - if (\count($nodes) !== 1) { - throw new \InvalidArgumentException('No idea how to throw this'); - } - - $node = $nodes[0]; - $expr = $node->expr; - - $args = [new Arg($expr, false, false, $node->getAttributes())]; - - // Allow throwing via a string, e.g. `throw-up "SUP"` - if ($expr instanceof String_) { - return [new New_(new FullyQualifiedName(\Exception::class), $args)]; - } - - return $args; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Command/TimeitCommand.php b/docker/streamline-src/vendor/psy/psysh/src/Command/TimeitCommand.php deleted file mode 100644 index 964697df..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Command/TimeitCommand.php +++ /dev/null @@ -1,173 +0,0 @@ -Command took %.6f seconds to complete.'; - const AVG_RESULT_MSG = 'Command took %.6f seconds on average (%.6f median; %.6f total) to complete.'; - - // All times stored as nanoseconds! - private static ?int $start = null; - private static array $times = []; - - private CodeArgumentParser $parser; - private NodeTraverser $traverser; - private Printer $printer; - - /** - * {@inheritdoc} - */ - public function __construct($name = null) - { - $this->parser = new CodeArgumentParser(); - - // @todo Pass visitor directly to once we drop support for PHP-Parser 4.x - $this->traverser = new NodeTraverser(); - $this->traverser->addVisitor(new TimeitVisitor()); - - $this->printer = new Printer(); - - parent::__construct($name); - } - - /** - * {@inheritdoc} - */ - protected function configure() - { - $this - ->setName('timeit') - ->setDefinition([ - new InputOption('num', 'n', InputOption::VALUE_REQUIRED, 'Number of iterations.'), - new CodeArgument('code', CodeArgument::REQUIRED, 'Code to execute.'), - ]) - ->setDescription('Profiles with a timer.') - ->setHelp( - <<<'HELP' -Time profiling for functions and commands. - -e.g. ->>> timeit sleep(1) ->>> timeit -n1000 $closure() -HELP - ); - } - - /** - * {@inheritdoc} - * - * @return int 0 if everything went fine, or an exit code - */ - protected function execute(InputInterface $input, OutputInterface $output): int - { - $code = $input->getArgument('code'); - $num = (int) ($input->getOption('num') ?: 1); - - $shell = $this->getShell(); - - $instrumentedCode = $this->instrumentCode($code); - - self::$times = []; - - do { - $_ = $shell->execute($instrumentedCode); - $this->ensureEndMarked(); - } while (\count(self::$times) < $num); - - $shell->writeReturnValue($_); - - $times = self::$times; - self::$times = []; - - if ($num === 1) { - $output->writeln(\sprintf(self::RESULT_MSG, $times[0] / 1e+9)); - } else { - $total = \array_sum($times); - \rsort($times); - $median = $times[\round($num / 2)]; - - $output->writeln(\sprintf(self::AVG_RESULT_MSG, ($total / $num) / 1e+9, $median / 1e+9, $total / 1e+9)); - } - - return 0; - } - - /** - * Internal method for marking the start of timeit execution. - * - * A static call to this method will be injected at the start of the timeit - * input code to instrument the call. We will use the saved start time to - * more accurately calculate time elapsed during execution. - */ - public static function markStart() - { - self::$start = \hrtime(true); - } - - /** - * Internal method for marking the end of timeit execution. - * - * A static call to this method is injected by TimeitVisitor at the end - * of the timeit input code to instrument the call. - * - * Note that this accepts an optional $ret parameter, which is used to pass - * the return value of the last statement back out of timeit. This saves us - * a bunch of code rewriting shenanigans. - * - * @param mixed $ret - * - * @return mixed it just passes $ret right back - */ - public static function markEnd($ret = null) - { - self::$times[] = \hrtime(true) - self::$start; - self::$start = null; - - return $ret; - } - - /** - * Ensure that the end of code execution was marked. - * - * The end *should* be marked in the instrumented code, but just in case - * we'll add a fallback here. - */ - private function ensureEndMarked() - { - if (self::$start !== null) { - self::markEnd(); - } - } - - /** - * Instrument code for timeit execution. - * - * This inserts `markStart` and `markEnd` calls to ensure that (reasonably) - * accurate times are recorded for just the code being executed. - */ - private function instrumentCode(string $code): string - { - return $this->printer->prettyPrint($this->traverser->traverse($this->parser->parse($code))); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Command/TimeitCommand/TimeitVisitor.php b/docker/streamline-src/vendor/psy/psysh/src/Command/TimeitCommand/TimeitVisitor.php deleted file mode 100644 index e2817aff..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Command/TimeitCommand/TimeitVisitor.php +++ /dev/null @@ -1,131 +0,0 @@ -functionDepth = 0; - } - - /** - * {@inheritdoc} - * - * @return int|Node|null Replacement node (or special return value) - */ - public function enterNode(Node $node) - { - // keep track of nested function-like nodes, because they can have - // returns statements... and we don't want to call markEnd for those. - if ($node instanceof FunctionLike) { - $this->functionDepth++; - - return; - } - - // replace any top-level `return` statements with a `markEnd` call - if ($this->functionDepth === 0 && $node instanceof Return_) { - return new Return_($this->getEndCall($node->expr), $node->getAttributes()); - } - } - - /** - * {@inheritdoc} - * - * @return int|Node|Node[]|null Replacement node (or special return value) - */ - public function leaveNode(Node $node) - { - if ($node instanceof FunctionLike) { - $this->functionDepth--; - } - } - - /** - * {@inheritdoc} - * - * @return Node[]|null Array of nodes - */ - public function afterTraverse(array $nodes) - { - // prepend a `markStart` call - \array_unshift($nodes, new Expression($this->getStartCall(), [])); - - // append a `markEnd` call (wrapping the final node, if it's an expression) - $last = $nodes[\count($nodes) - 1]; - if ($last instanceof Expr) { - \array_pop($nodes); - $nodes[] = $this->getEndCall($last); - } elseif ($last instanceof Expression) { - \array_pop($nodes); - $nodes[] = new Expression($this->getEndCall($last->expr), $last->getAttributes()); - } elseif ($last instanceof Return_) { - // nothing to do here, we're already ending with a return call - } else { - $nodes[] = new Expression($this->getEndCall(), []); - } - - return $nodes; - } - - /** - * Get PhpParser AST nodes for a `markStart` call. - * - * @return \PhpParser\Node\Expr\StaticCall - */ - private function getStartCall(): StaticCall - { - return new StaticCall(new FullyQualifiedName(TimeitCommand::class), 'markStart'); - } - - /** - * Get PhpParser AST nodes for a `markEnd` call. - * - * Optionally pass in a return value. - * - * @param Expr|null $arg - */ - private function getEndCall(?Expr $arg = null): StaticCall - { - if ($arg === null) { - $arg = NoReturnValue::create(); - } - - return new StaticCall(new FullyQualifiedName(TimeitCommand::class), 'markEnd', [new Arg($arg)]); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Command/TraceCommand.php b/docker/streamline-src/vendor/psy/psysh/src/Command/TraceCommand.php deleted file mode 100644 index 04a2beb0..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Command/TraceCommand.php +++ /dev/null @@ -1,99 +0,0 @@ -filter = new FilterOptions(); - - parent::__construct($name); - } - - /** - * {@inheritdoc} - */ - protected function configure() - { - list($grep, $insensitive, $invert) = FilterOptions::getOptions(); - - $this - ->setName('trace') - ->setDefinition([ - new InputOption('include-psy', 'p', InputOption::VALUE_NONE, 'Include Psy in the call stack.'), - new InputOption('num', 'n', InputOption::VALUE_REQUIRED, 'Only include NUM lines.'), - - $grep, - $insensitive, - $invert, - ]) - ->setDescription('Show the current call stack.') - ->setHelp( - <<<'HELP' -Show the current call stack. - -Optionally, include PsySH in the call stack by passing the --include-psy option. - -e.g. -> trace -n10 -> trace --include-psy -HELP - ); - } - - /** - * {@inheritdoc} - * - * @return int 0 if everything went fine, or an exit code - */ - protected function execute(InputInterface $input, OutputInterface $output): int - { - $this->filter->bind($input); - $trace = $this->getBacktrace(new \Exception(), $input->getOption('num'), $input->getOption('include-psy')); - $output->page($trace, ShellOutput::NUMBER_LINES); - - return 0; - } - - /** - * Get a backtrace for an exception or error. - * - * Optionally limit the number of rows to include with $count, and exclude - * Psy from the trace. - * - * @param \Throwable $e The exception or error with a backtrace - * @param int $count (default: PHP_INT_MAX) - * @param bool $includePsy (default: true) - * - * @return array Formatted stacktrace lines - */ - protected function getBacktrace(\Throwable $e, ?int $count = null, bool $includePsy = true): array - { - return TraceFormatter::formatTrace($e, $this->filter, $count, $includePsy); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Command/WhereamiCommand.php b/docker/streamline-src/vendor/psy/psysh/src/Command/WhereamiCommand.php deleted file mode 100644 index 68f4c4e2..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Command/WhereamiCommand.php +++ /dev/null @@ -1,156 +0,0 @@ -backtrace = \debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS); - - parent::__construct(); - } - - /** - * {@inheritdoc} - */ - protected function configure() - { - $this - ->setName('whereami') - ->setDefinition([ - new InputOption('num', 'n', InputOption::VALUE_OPTIONAL, 'Number of lines before and after.', '5'), - new InputOption('file', 'f|a', InputOption::VALUE_NONE, 'Show the full source for the current file.'), - ]) - ->setDescription('Show where you are in the code.') - ->setHelp( - <<<'HELP' -Show where you are in the code. - -Optionally, include the number of lines before and after you want to display, -or --file for the whole file. - -e.g. -> whereami -> whereami -n10 -> whereami --file -HELP - ); - } - - /** - * Obtains the correct stack frame in the full backtrace. - * - * @return array - */ - protected function trace(): array - { - foreach (\array_reverse($this->backtrace) as $stackFrame) { - if ($this->isDebugCall($stackFrame)) { - return $stackFrame; - } - } - - return \end($this->backtrace); - } - - private static function isDebugCall(array $stackFrame): bool - { - $class = isset($stackFrame['class']) ? $stackFrame['class'] : null; - $function = isset($stackFrame['function']) ? $stackFrame['function'] : null; - - return ($class === null && $function === 'Psy\\debug') || - ($class === Shell::class && \in_array($function, ['__construct', 'debug'])); - } - - /** - * Determine the file and line based on the specific backtrace. - * - * @return array - */ - protected function fileInfo(): array - { - $stackFrame = $this->trace(); - if (\preg_match('/eval\(/', $stackFrame['file'])) { - \preg_match_all('/([^\(]+)\((\d+)/', $stackFrame['file'], $matches); - $file = $matches[1][0]; - $line = (int) $matches[2][0]; - } else { - $file = $stackFrame['file']; - $line = $stackFrame['line']; - } - - return \compact('file', 'line'); - } - - /** - * {@inheritdoc} - * - * @return int 0 if everything went fine, or an exit code - */ - protected function execute(InputInterface $input, OutputInterface $output): int - { - $info = $this->fileInfo(); - $num = $input->getOption('num'); - $lineNum = $info['line']; - $startLine = \max($lineNum - $num, 1); - $endLine = $lineNum + $num; - $code = \file_get_contents($info['file']); - - if ($input->getOption('file')) { - $startLine = 1; - $endLine = null; - } - - if ($output instanceof ShellOutput) { - $output->startPaging(); - } - - $output->writeln(\sprintf('From %s:%s:', $this->replaceCwd($info['file']), $lineNum)); - $output->write(CodeFormatter::formatCode($code, $startLine, $endLine, $lineNum), false); - - if ($output instanceof ShellOutput) { - $output->stopPaging(); - } - - return 0; - } - - /** - * Replace the given directory from the start of a filepath. - * - * @param string $file - */ - private function replaceCwd(string $file): string - { - $cwd = \getcwd(); - if ($cwd === false) { - return $file; - } - - $cwd = \rtrim($cwd, \DIRECTORY_SEPARATOR).\DIRECTORY_SEPARATOR; - - return \preg_replace('/^'.\preg_quote($cwd, '/').'/', '', $file); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Command/WtfCommand.php b/docker/streamline-src/vendor/psy/psysh/src/Command/WtfCommand.php deleted file mode 100644 index 1b4c7c27..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Command/WtfCommand.php +++ /dev/null @@ -1,129 +0,0 @@ -context = $context; - } - - /** - * {@inheritdoc} - */ - protected function configure() - { - list($grep, $insensitive, $invert) = FilterOptions::getOptions(); - - $this - ->setName('wtf') - ->setAliases(['last-exception', 'wtf?']) - ->setDefinition([ - new InputArgument('incredulity', InputArgument::OPTIONAL | InputArgument::IS_ARRAY, 'Number of lines to show.'), - new InputOption('all', 'a', InputOption::VALUE_NONE, 'Show entire backtrace.'), - - $grep, - $insensitive, - $invert, - ]) - ->setDescription('Show the backtrace of the most recent exception.') - ->setHelp( - <<<'HELP' -Shows a few lines of the backtrace of the most recent exception. - -If you want to see more lines, add more question marks or exclamation marks: - -e.g. ->>> wtf ? ->>> wtf ?!???!?!? - -To see the entire backtrace, pass the -a/--all flag: - -e.g. ->>> wtf -a -HELP - ); - } - - /** - * {@inheritdoc} - * - * @return int 0 if everything went fine, or an exit code - */ - protected function execute(InputInterface $input, OutputInterface $output): int - { - $this->filter->bind($input); - - $incredulity = \implode('', $input->getArgument('incredulity')); - if (\strlen(\preg_replace('/[\\?!]/', '', $incredulity))) { - throw new \InvalidArgumentException('Incredulity must include only "?" and "!"'); - } - - $exception = $this->context->getLastException(); - $count = $input->getOption('all') ? \PHP_INT_MAX : \max(3, \pow(2, \strlen($incredulity) + 1)); - - if ($output instanceof ShellOutput) { - $output->startPaging(); - } - - do { - $traceCount = \count($exception->getTrace()); - $showLines = $count; - // Show the whole trace if we'd only be hiding a few lines - if ($traceCount < \max($count * 1.2, $count + 2)) { - $showLines = \PHP_INT_MAX; - } - - $trace = $this->getBacktrace($exception, $showLines); - $moreLines = $traceCount - \count($trace); - - $output->writeln($this->getShell()->formatException($exception)); - $output->writeln('--'); - $output->write($trace, true, ShellOutput::NUMBER_LINES); - $output->writeln(''); - - if ($moreLines > 0) { - $output->writeln(\sprintf( - '', - $moreLines - )); - $output->writeln(''); - } - } while ($exception = $exception->getPrevious()); - - if ($output instanceof ShellOutput) { - $output->stopPaging(); - } - - return 0; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/ConfigPaths.php b/docker/streamline-src/vendor/psy/psysh/src/ConfigPaths.php deleted file mode 100644 index 2d2ffa2c..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/ConfigPaths.php +++ /dev/null @@ -1,382 +0,0 @@ -overrideDirs($overrides); - - $this->env = $env ?: (\PHP_SAPI === 'cli-server' ? new SystemEnv() : new SuperglobalsEnv()); - } - - /** - * Provide `configDir`, `dataDir` and `runtimeDir` overrides. - * - * If a key is set but empty, the override will be removed. If it is not set - * at all, any existing override will persist. - * - * @param string[] $overrides Directory overrides - */ - public function overrideDirs(array $overrides) - { - if (\array_key_exists('configDir', $overrides)) { - $this->configDir = $overrides['configDir'] ?: null; - } - - if (\array_key_exists('dataDir', $overrides)) { - $this->dataDir = $overrides['dataDir'] ?: null; - } - - if (\array_key_exists('runtimeDir', $overrides)) { - $this->runtimeDir = $overrides['runtimeDir'] ?: null; - } - } - - /** - * Get the current home directory. - */ - public function homeDir(): ?string - { - if ($homeDir = $this->getEnv('HOME') ?: $this->windowsHomeDir()) { - return \strtr($homeDir, '\\', '/'); - } - - return null; - } - - private function windowsHomeDir(): ?string - { - if (\defined('PHP_WINDOWS_VERSION_MAJOR')) { - $homeDrive = $this->getEnv('HOMEDRIVE'); - $homePath = $this->getEnv('HOMEPATH'); - if ($homeDrive && $homePath) { - return $homeDrive.'/'.$homePath; - } - } - - return null; - } - - private function homeConfigDir(): ?string - { - if ($homeConfigDir = $this->getEnv('XDG_CONFIG_HOME')) { - return $homeConfigDir; - } - - $homeDir = $this->homeDir(); - if ($homeDir === null) { - return null; - } - - return $homeDir === '/' ? $homeDir.'.config' : $homeDir.'/.config'; - } - - /** - * Get potential config directory paths. - * - * Returns `~/.psysh`, `%APPDATA%/PsySH` (when on Windows), and all - * XDG Base Directory config directories: - * - * http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html - * - * @return string[] - */ - public function configDirs(): array - { - if ($this->configDir !== null) { - return [$this->configDir]; - } - - $configDirs = $this->getEnvArray('XDG_CONFIG_DIRS') ?: ['/etc/xdg']; - - return $this->allDirNames(\array_merge([$this->homeConfigDir()], $configDirs)); - } - - /** - * Get the current home config directory. - * - * Returns the highest precedence home config directory which actually - * exists. If none of them exists, returns the highest precedence home - * config directory (`%APPDATA%/PsySH` on Windows, `~/.config/psysh` - * everywhere else). - * - * @see self::homeConfigDir - */ - public function currentConfigDir(): ?string - { - if ($this->configDir !== null) { - return $this->configDir; - } - - $configDirs = $this->allDirNames([$this->homeConfigDir()]); - - foreach ($configDirs as $configDir) { - if (@\is_dir($configDir)) { - return $configDir; - } - } - - return $configDirs[0] ?? null; - } - - /** - * Find real config files in config directories. - * - * @param string[] $names Config file names - * - * @return string[] - */ - public function configFiles(array $names): array - { - return $this->allRealFiles($this->configDirs(), $names); - } - - /** - * Get potential data directory paths. - * - * If a `dataDir` option was explicitly set, returns an array containing - * just that directory. - * - * Otherwise, it returns `~/.psysh` and all XDG Base Directory data directories: - * - * http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html - * - * @return string[] - */ - public function dataDirs(): array - { - if ($this->dataDir !== null) { - return [$this->dataDir]; - } - - $homeDataDir = $this->getEnv('XDG_DATA_HOME') ?: $this->homeDir().'/.local/share'; - $dataDirs = $this->getEnvArray('XDG_DATA_DIRS') ?: ['/usr/local/share', '/usr/share']; - - return $this->allDirNames(\array_merge([$homeDataDir], $dataDirs)); - } - - /** - * Find real data files in config directories. - * - * @param string[] $names Config file names - * - * @return string[] - */ - public function dataFiles(array $names): array - { - return $this->allRealFiles($this->dataDirs(), $names); - } - - /** - * Get a runtime directory. - * - * Defaults to `/psysh` inside the system's temp dir. - */ - public function runtimeDir(): string - { - if ($this->runtimeDir !== null) { - return $this->runtimeDir; - } - - // Fallback to a boring old folder in the system temp dir. - $runtimeDir = $this->getEnv('XDG_RUNTIME_DIR') ?: \sys_get_temp_dir(); - - return \strtr($runtimeDir, '\\', '/').'/psysh'; - } - - /** - * Get a list of directories in PATH. - * - * If $PATH is unset/empty it defaults to '/usr/sbin:/usr/bin:/sbin:/bin'. - * - * @return string[] - */ - public function pathDirs(): array - { - return $this->getEnvArray('PATH') ?: ['/usr/sbin', '/usr/bin', '/sbin', '/bin']; - } - - /** - * Locate a command (an executable) in $PATH. - * - * Behaves like 'command -v COMMAND' or 'which COMMAND'. - * If $PATH is unset/empty it defaults to '/usr/sbin:/usr/bin:/sbin:/bin'. - * - * @param string $command the executable to locate - */ - public function which($command): ?string - { - if (!\is_string($command) || $command === '') { - return null; - } - - foreach ($this->pathDirs() as $path) { - $fullpath = $path.\DIRECTORY_SEPARATOR.$command; - if (@\is_file($fullpath) && @\is_executable($fullpath)) { - return $fullpath; - } - } - - return null; - } - - /** - * Get all PsySH directory name candidates given a list of base directories. - * - * This expects that XDG-compatible directory paths will be passed in. - * `psysh` will be added to each of $baseDirs, and we'll throw in `~/.psysh` - * and a couple of Windows-friendly paths as well. - * - * @param string[] $baseDirs base directory paths - * - * @return string[] - */ - private function allDirNames(array $baseDirs): array - { - $baseDirs = \array_filter($baseDirs); - $dirs = \array_map(function ($dir) { - return \strtr($dir, '\\', '/').'/psysh'; - }, $baseDirs); - - // Add ~/.psysh - if ($home = $this->getEnv('HOME')) { - $dirs[] = \strtr($home, '\\', '/').'/.psysh'; - } - - // Add some Windows specific ones :) - if (\defined('PHP_WINDOWS_VERSION_MAJOR')) { - if ($appData = $this->getEnv('APPDATA')) { - // AppData gets preference - \array_unshift($dirs, \strtr($appData, '\\', '/').'/PsySH'); - } - - if ($windowsHomeDir = $this->windowsHomeDir()) { - $dir = \strtr($windowsHomeDir, '\\', '/').'/.psysh'; - if (!\in_array($dir, $dirs)) { - $dirs[] = $dir; - } - } - } - - return $dirs; - } - - /** - * Given a list of directories, and a list of filenames, find the ones that - * are real files. - * - * @return string[] - */ - private function allRealFiles(array $dirNames, array $fileNames): array - { - $files = []; - foreach ($dirNames as $dir) { - foreach ($fileNames as $name) { - $file = $dir.'/'.$name; - if (@\is_file($file)) { - $files[] = $file; - } - } - } - - return $files; - } - - /** - * Ensure that $dir exists and is writable. - * - * Generates E_USER_NOTICE error if the directory is not writable or creatable. - * - * @param string $dir - * - * @return bool False if directory exists but is not writeable, or cannot be created - */ - public static function ensureDir(string $dir): bool - { - if (!\is_dir($dir)) { - // Just try making it and see if it works - @\mkdir($dir, 0700, true); - } - - if (!\is_dir($dir) || !\is_writable($dir)) { - \trigger_error(\sprintf('Writing to directory %s is not allowed.', $dir), \E_USER_NOTICE); - - return false; - } - - return true; - } - - /** - * Ensure that $file exists and is writable, make the parent directory if necessary. - * - * Generates E_USER_NOTICE error if either $file or its directory is not writable. - * - * @param string $file - * - * @return string|false Full path to $file, or false if file is not writable - */ - public static function touchFileWithMkdir(string $file) - { - if (\file_exists($file)) { - if (\is_writable($file)) { - return $file; - } - - \trigger_error(\sprintf('Writing to %s is not allowed.', $file), \E_USER_NOTICE); - - return false; - } - - if (!self::ensureDir(\dirname($file))) { - return false; - } - - \touch($file); - - return $file; - } - - private function getEnv(string $key) - { - return $this->env->get($key); - } - - private function getEnvArray(string $key) - { - if ($value = $this->getEnv($key)) { - return \explode(\PATH_SEPARATOR, $value); - } - - return null; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Configuration.php b/docker/streamline-src/vendor/psy/psysh/src/Configuration.php deleted file mode 100644 index 0018ad9a..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Configuration.php +++ /dev/null @@ -1,1931 +0,0 @@ -configPaths = new ConfigPaths(); - - // explicit configFile option - if (isset($config['configFile'])) { - $this->configFile = $config['configFile']; - } elseif (isset($_SERVER['PSYSH_CONFIG']) && $_SERVER['PSYSH_CONFIG']) { - $this->configFile = $_SERVER['PSYSH_CONFIG']; - } elseif (\PHP_SAPI === 'cli-server' && ($configFile = \getenv('PSYSH_CONFIG'))) { - $this->configFile = $configFile; - } - - // legacy baseDir option - if (isset($config['baseDir'])) { - $msg = "The 'baseDir' configuration option is deprecated; ". - "please specify 'configDir' and 'dataDir' options instead"; - throw new DeprecatedException($msg); - } - - unset($config['configFile'], $config['baseDir']); - - // go go gadget, config! - $this->loadConfig($config); - $this->init(); - } - - /** - * Construct a Configuration object from Symfony Console input. - * - * This is great for adding psysh-compatible command line options to framework- or app-specific - * wrappers. - * - * $input should already be bound to an appropriate InputDefinition (see self::getInputOptions - * if you want to build your own) before calling this method. It's not required, but things work - * a lot better if we do. - * - * @see self::getInputOptions - * - * @throws \InvalidArgumentException - * - * @param InputInterface $input - */ - public static function fromInput(InputInterface $input): self - { - $config = new self(['configFile' => self::getConfigFileFromInput($input)]); - - // Handle --color and --no-color (and --ansi and --no-ansi aliases) - if (self::getOptionFromInput($input, ['color', 'ansi'])) { - $config->setColorMode(self::COLOR_MODE_FORCED); - } elseif (self::getOptionFromInput($input, ['no-color', 'no-ansi'])) { - $config->setColorMode(self::COLOR_MODE_DISABLED); - } - - // Handle verbosity options - if ($verbosity = self::getVerbosityFromInput($input)) { - $config->setVerbosity($verbosity); - } - - // Handle interactive mode - if (self::getOptionFromInput($input, ['interactive', 'interaction'], ['-a', '-i'])) { - $config->setInteractiveMode(self::INTERACTIVE_MODE_FORCED); - } elseif (self::getOptionFromInput($input, ['no-interactive', 'no-interaction'], ['-n'])) { - $config->setInteractiveMode(self::INTERACTIVE_MODE_DISABLED); - } - - // Handle --compact - if (self::getOptionFromInput($input, ['compact'])) { - $config->setTheme('compact'); - } - - // Handle --raw-output - // @todo support raw output with interactive input? - if (!$config->getInputInteractive()) { - if (self::getOptionFromInput($input, ['raw-output'], ['-r'])) { - $config->setRawOutput(true); - } - } - - // Handle --yolo - if (self::getOptionFromInput($input, ['yolo'])) { - $config->setYolo(true); - } - - return $config; - } - - /** - * Get the desired config file from the given input. - * - * @return string|null config file path, or null if none is specified - */ - private static function getConfigFileFromInput(InputInterface $input) - { - // Best case, input is properly bound and validated. - if ($input->hasOption('config')) { - return $input->getOption('config'); - } - - return $input->getParameterOption('--config', null, true) ?: $input->getParameterOption('-c', null, true); - } - - /** - * Get a boolean option from the given input. - * - * This helper allows fallback for unbound and unvalidated input. It's not perfect--for example, - * it can't deal with several short options squished together--but it's better than falling over - * any time someone gives us unbound input. - * - * @return bool true if the option (or an alias) is present - */ - private static function getOptionFromInput(InputInterface $input, array $names, array $otherParams = []): bool - { - // Best case, input is properly bound and validated. - foreach ($names as $name) { - if ($input->hasOption($name) && $input->getOption($name)) { - return true; - } - } - - foreach ($names as $name) { - $otherParams[] = '--'.$name; - } - - foreach ($otherParams as $name) { - if ($input->hasParameterOption($name, true)) { - return true; - } - } - - return false; - } - - /** - * Get the desired verbosity from the given input. - * - * This is a bit more complext than the other options parsers. It handles `--quiet` and - * `--verbose`, along with their short aliases, and fancy things like `-vvv`. - * - * @return string|null configuration constant, or null if no verbosity option is specified - */ - private static function getVerbosityFromInput(InputInterface $input) - { - // --quiet wins! - if (self::getOptionFromInput($input, ['quiet'], ['-q'])) { - return self::VERBOSITY_QUIET; - } - - // Best case, input is properly bound and validated. - // - // Note that if the `--verbose` option is incorrectly defined as `VALUE_NONE` rather than - // `VALUE_OPTIONAL` (as it is in Symfony Console by default) it doesn't actually work with - // multiple verbosity levels as it claims. - // - // We can detect this by checking whether the the value === true, and fall back to unbound - // parsing for this option. - if ($input->hasOption('verbose') && $input->getOption('verbose') !== true) { - switch ($input->getOption('verbose')) { - case '-1': - return self::VERBOSITY_QUIET; - case '0': // explicitly normal, overrides config file default - return self::VERBOSITY_NORMAL; - case '1': - case null: // `--verbose` and `-v` - return self::VERBOSITY_VERBOSE; - case '2': - case 'v': // `-vv` - return self::VERBOSITY_VERY_VERBOSE; - case '3': - case 'vv': // `-vvv` - case 'vvv': - case 'vvvv': - case 'vvvvv': - case 'vvvvvv': - case 'vvvvvvv': - return self::VERBOSITY_DEBUG; - default: // implicitly normal, config file default wins - return; - } - } - - // quiet and normal have to come before verbose, because it eats everything else. - if ($input->hasParameterOption('--verbose=-1', true) || $input->getParameterOption('--verbose', false, true) === '-1') { - return self::VERBOSITY_QUIET; - } - - if ($input->hasParameterOption('--verbose=0', true) || $input->getParameterOption('--verbose', false, true) === '0') { - return self::VERBOSITY_NORMAL; - } - - // `-vvv`, `-vv` and `-v` have to come in descending length order, because `hasParameterOption` matches prefixes. - if ($input->hasParameterOption('-vvv', true) || $input->hasParameterOption('--verbose=3', true) || $input->getParameterOption('--verbose', false, true) === '3') { - return self::VERBOSITY_DEBUG; - } - - if ($input->hasParameterOption('-vv', true) || $input->hasParameterOption('--verbose=2', true) || $input->getParameterOption('--verbose', false, true) === '2') { - return self::VERBOSITY_VERY_VERBOSE; - } - - if ($input->hasParameterOption('-v', true) || $input->hasParameterOption('--verbose=1', true) || $input->hasParameterOption('--verbose', true)) { - return self::VERBOSITY_VERBOSE; - } - } - - /** - * Get a list of input options expected when initializing Configuration via input. - * - * @see self::fromInput - * - * @return InputOption[] - */ - public static function getInputOptions(): array - { - return [ - new InputOption('config', 'c', InputOption::VALUE_REQUIRED, 'Use an alternate PsySH config file location.'), - new InputOption('cwd', null, InputOption::VALUE_REQUIRED, 'Use an alternate working directory.'), - - new InputOption('color', null, InputOption::VALUE_NONE, 'Force colors in output.'), - new InputOption('no-color', null, InputOption::VALUE_NONE, 'Disable colors in output.'), - // --ansi and --no-ansi aliases to match Symfony, Composer, etc. - new InputOption('ansi', null, InputOption::VALUE_NONE, 'Force colors in output.'), - new InputOption('no-ansi', null, InputOption::VALUE_NONE, 'Disable colors in output.'), - - new InputOption('quiet', 'q', InputOption::VALUE_NONE, 'Shhhhhh.'), - new InputOption('verbose', 'v|vv|vvv', InputOption::VALUE_OPTIONAL, 'Increase the verbosity of messages.', '0'), - new InputOption('compact', null, InputOption::VALUE_NONE, 'Run PsySH with compact output.'), - new InputOption('interactive', 'i|a', InputOption::VALUE_NONE, 'Force PsySH to run in interactive mode.'), - new InputOption('no-interactive', 'n', InputOption::VALUE_NONE, 'Run PsySH without interactive input. Requires input from stdin.'), - // --interaction and --no-interaction aliases for compatibility with Symfony, Composer, etc - new InputOption('interaction', null, InputOption::VALUE_NONE, 'Force PsySH to run in interactive mode.'), - new InputOption('no-interaction', null, InputOption::VALUE_NONE, 'Run PsySH without interactive input. Requires input from stdin.'), - new InputOption('raw-output', 'r', InputOption::VALUE_NONE, 'Print var_export-style return values (for non-interactive input)'), - - new InputOption('self-update', 'u', InputOption::VALUE_NONE, 'Update to the latest version'), - - new InputOption('yolo', null, InputOption::VALUE_NONE, 'Run PsySH with minimal input validation. You probably don\'t want this.'), - ]; - } - - /** - * Initialize the configuration. - * - * This checks for the presence of Readline and Pcntl extensions. - * - * If a config file is available, it will be loaded and merged with the current config. - * - * If no custom config file was specified and a local project config file - * is available, it will be loaded and merged with the current config. - */ - public function init() - { - // feature detection - $this->hasReadline = \function_exists('readline'); - $this->hasPcntl = ProcessForker::isSupported(); - - if ($configFile = $this->getConfigFile()) { - $this->loadConfigFile($configFile); - } - - if (!$this->configFile && $localConfig = $this->getLocalConfigFile()) { - $this->loadConfigFile($localConfig); - } - - $this->configPaths->overrideDirs([ - 'configDir' => $this->configDir, - 'dataDir' => $this->dataDir, - 'runtimeDir' => $this->runtimeDir, - ]); - } - - /** - * Get the current PsySH config file. - * - * If a `configFile` option was passed to the Configuration constructor, - * this file will be returned. If not, all possible config directories will - * be searched, and the first `config.php` or `rc.php` file which exists - * will be returned. - * - * If you're trying to decide where to put your config file, pick - * - * ~/.config/psysh/config.php - * - * @return string|null - */ - public function getConfigFile() - { - if (isset($this->configFile)) { - return $this->configFile; - } - - $files = $this->configPaths->configFiles(['config.php', 'rc.php']); - - if (!empty($files)) { - if ($this->warnOnMultipleConfigs && \count($files) > 1) { - $msg = \sprintf('Multiple configuration files found: %s. Using %s', \implode(', ', $files), $files[0]); - \trigger_error($msg, \E_USER_NOTICE); - } - - return $files[0]; - } - } - - /** - * Get the local PsySH config file. - * - * Searches for a project specific config file `.psysh.php` in the current - * working directory. - * - * @return string|null - */ - public function getLocalConfigFile() - { - $localConfig = \getcwd().'/.psysh.php'; - - if (@\is_file($localConfig)) { - return $localConfig; - } - } - - /** - * Load configuration values from an array of options. - * - * @param array $options - */ - public function loadConfig(array $options) - { - foreach (self::AVAILABLE_OPTIONS as $option) { - if (isset($options[$option])) { - $method = 'set'.\ucfirst($option); - $this->$method($options[$option]); - } - } - - // legacy `tabCompletion` option - if (isset($options['tabCompletion'])) { - $msg = '`tabCompletion` is deprecated; use `useTabCompletion` instead.'; - @\trigger_error($msg, \E_USER_DEPRECATED); - - $this->setUseTabCompletion($options['tabCompletion']); - } - - foreach (['commands', 'matchers', 'casters'] as $option) { - if (isset($options[$option])) { - $method = 'add'.\ucfirst($option); - $this->$method($options[$option]); - } - } - - // legacy `tabCompletionMatchers` option - if (isset($options['tabCompletionMatchers'])) { - $msg = '`tabCompletionMatchers` is deprecated; use `matchers` instead.'; - @\trigger_error($msg, \E_USER_DEPRECATED); - - $this->addMatchers($options['tabCompletionMatchers']); - } - } - - /** - * Load a configuration file (default: `$HOME/.config/psysh/config.php`). - * - * This configuration instance will be available to the config file as $config. - * The config file may directly manipulate the configuration, or may return - * an array of options which will be merged with the current configuration. - * - * @throws \InvalidArgumentException if the config file does not exist or returns a non-array result - * - * @param string $file - */ - public function loadConfigFile(string $file) - { - if (!\is_file($file)) { - throw new \InvalidArgumentException(\sprintf('Invalid configuration file specified, %s does not exist', $file)); - } - - $__psysh_config_file__ = $file; - $load = function ($config) use ($__psysh_config_file__) { - $result = require $__psysh_config_file__; - if ($result !== 1) { - return $result; - } - }; - $result = $load($this); - - if (!empty($result)) { - if (\is_array($result)) { - $this->loadConfig($result); - } else { - throw new \InvalidArgumentException('Psy Shell configuration must return an array of options'); - } - } - } - - /** - * Set files to be included by default at the start of each shell session. - * - * @param array $includes - */ - public function setDefaultIncludes(array $includes = []) - { - $this->defaultIncludes = $includes; - } - - /** - * Get files to be included by default at the start of each shell session. - * - * @return string[] - */ - public function getDefaultIncludes(): array - { - return $this->defaultIncludes ?: []; - } - - /** - * Set the shell's config directory location. - * - * @param string $dir - */ - public function setConfigDir(string $dir) - { - $this->configDir = (string) $dir; - - $this->configPaths->overrideDirs([ - 'configDir' => $this->configDir, - 'dataDir' => $this->dataDir, - 'runtimeDir' => $this->runtimeDir, - ]); - } - - /** - * Get the current configuration directory, if any is explicitly set. - * - * @return string|null - */ - public function getConfigDir() - { - return $this->configDir; - } - - /** - * Set the shell's data directory location. - * - * @param string $dir - */ - public function setDataDir(string $dir) - { - $this->dataDir = (string) $dir; - - $this->configPaths->overrideDirs([ - 'configDir' => $this->configDir, - 'dataDir' => $this->dataDir, - 'runtimeDir' => $this->runtimeDir, - ]); - } - - /** - * Get the current data directory, if any is explicitly set. - * - * @return string|null - */ - public function getDataDir() - { - return $this->dataDir; - } - - /** - * Set the shell's temporary directory location. - * - * @param string $dir - */ - public function setRuntimeDir(string $dir) - { - $this->runtimeDir = (string) $dir; - - $this->configPaths->overrideDirs([ - 'configDir' => $this->configDir, - 'dataDir' => $this->dataDir, - 'runtimeDir' => $this->runtimeDir, - ]); - } - - /** - * Get the shell's temporary directory location. - * - * Defaults to `/psysh` inside the system's temp dir unless explicitly - * overridden. - * - * @throws RuntimeException if no temporary directory is set and it is not possible to create one - * - * @param bool $create False to suppress directory creation if it does not exist - */ - public function getRuntimeDir($create = true): string - { - $runtimeDir = $this->configPaths->runtimeDir(); - - if ($create && !\is_dir($runtimeDir)) { - if (!@\mkdir($runtimeDir, 0700, true)) { - throw new RuntimeException(\sprintf('Unable to create PsySH runtime directory. Make sure PHP is able to write to %s in order to continue.', \dirname($runtimeDir))); - } - } - - return $runtimeDir; - } - - /** - * Set the readline history file path. - * - * @param string $file - */ - public function setHistoryFile(string $file) - { - $this->historyFile = ConfigPaths::touchFileWithMkdir($file); - } - - /** - * Get the readline history file path. - * - * Defaults to `/history` inside the shell's base config dir unless - * explicitly overridden. - */ - public function getHistoryFile(): ?string - { - if (isset($this->historyFile)) { - return $this->historyFile; - } - - $files = $this->configPaths->configFiles(['psysh_history', 'history']); - - if (!empty($files)) { - if ($this->warnOnMultipleConfigs && \count($files) > 1) { - $msg = \sprintf('Multiple history files found: %s. Using %s', \implode(', ', $files), $files[0]); - \trigger_error($msg, \E_USER_NOTICE); - } - - $this->setHistoryFile($files[0]); - } else { - // fallback: create our own history file - $configDir = $this->configPaths->currentConfigDir(); - if ($configDir === null) { - return null; - } - - $this->setHistoryFile($configDir.'/psysh_history'); - } - - return $this->historyFile; - } - - /** - * Set the readline max history size. - * - * @param int $value - */ - public function setHistorySize(int $value) - { - $this->historySize = (int) $value; - } - - /** - * Get the readline max history size. - * - * @return int - */ - public function getHistorySize() - { - return $this->historySize; - } - - /** - * Sets whether readline erases old duplicate history entries. - * - * @param bool $value - */ - public function setEraseDuplicates(bool $value) - { - $this->eraseDuplicates = $value; - } - - /** - * Get whether readline erases old duplicate history entries. - * - * @return bool|null - */ - public function getEraseDuplicates() - { - return $this->eraseDuplicates; - } - - /** - * Get a temporary file of type $type for process $pid. - * - * The file will be created inside the current temporary directory. - * - * @see self::getRuntimeDir - * - * @param string $type - * @param int $pid - * - * @return string Temporary file name - */ - public function getTempFile(string $type, int $pid): string - { - return \tempnam($this->getRuntimeDir(), $type.'_'.$pid.'_'); - } - - /** - * Get a filename suitable for a FIFO pipe of $type for process $pid. - * - * The pipe will be created inside the current temporary directory. - * - * @param string $type - * @param int $pid - * - * @return string Pipe name - */ - public function getPipe(string $type, int $pid): string - { - return \sprintf('%s/%s_%s', $this->getRuntimeDir(), $type, $pid); - } - - /** - * Check whether this PHP instance has Readline available. - * - * @return bool True if Readline is available - */ - public function hasReadline(): bool - { - return $this->hasReadline; - } - - /** - * Enable or disable Readline usage. - * - * @param bool $useReadline - */ - public function setUseReadline(bool $useReadline) - { - $this->useReadline = (bool) $useReadline; - } - - /** - * Check whether to use Readline. - * - * If `setUseReadline` as been set to true, but Readline is not actually - * available, this will return false. - * - * @return bool True if the current Shell should use Readline - */ - public function useReadline(): bool - { - return isset($this->useReadline) ? ($this->hasReadline && $this->useReadline) : $this->hasReadline; - } - - /** - * Set the Psy Shell readline service. - * - * @param Readline\Readline $readline - */ - public function setReadline(Readline\Readline $readline) - { - $this->readline = $readline; - } - - /** - * Get the Psy Shell readline service. - * - * By default, this service uses (in order of preference): - * - * * GNU Readline - * * Libedit - * * A transient array-based readline emulation. - * - * @return Readline\Readline - */ - public function getReadline(): Readline\Readline - { - if (!isset($this->readline)) { - $className = $this->getReadlineClass(); - $this->readline = new $className( - $this->getHistoryFile(), - $this->getHistorySize(), - $this->getEraseDuplicates() ?? false - ); - } - - return $this->readline; - } - - /** - * Get the appropriate Readline implementation class name. - * - * @see self::getReadline - */ - private function getReadlineClass(): string - { - if ($this->useReadline()) { - if (Readline\GNUReadline::isSupported()) { - return Readline\GNUReadline::class; - } elseif (Readline\Libedit::isSupported()) { - return Readline\Libedit::class; - } - } - - if (Readline\Userland::isSupported()) { - return Readline\Userland::class; - } - - return Readline\Transient::class; - } - - /** - * Enable or disable bracketed paste. - * - * Note that this only works with readline (not libedit) integration for now. - * - * @param bool $useBracketedPaste - */ - public function setUseBracketedPaste(bool $useBracketedPaste) - { - $this->useBracketedPaste = (bool) $useBracketedPaste; - } - - /** - * Check whether to use bracketed paste with readline. - * - * When this works, it's magical. Tabs in pastes don't try to autcomplete. - * Newlines in paste don't execute code until you get to the end. It makes - * readline act like you'd expect when pasting. - * - * But it often (usually?) does not work. And when it doesn't, it just spews - * escape codes all over the place and generally makes things ugly :( - * - * If `useBracketedPaste` has been set to true, but the current readline - * implementation is anything besides GNU readline, this will return false. - * - * @return bool True if the shell should use bracketed paste - */ - public function useBracketedPaste(): bool - { - $readlineClass = $this->getReadlineClass(); - - return $this->useBracketedPaste && $readlineClass::supportsBracketedPaste(); - - // @todo mebbe turn this on by default some day? - // return $readlineClass::supportsBracketedPaste() && $this->useBracketedPaste !== false; - } - - /** - * Check whether this PHP instance has Pcntl available. - * - * @return bool True if Pcntl is available - */ - public function hasPcntl(): bool - { - return $this->hasPcntl; - } - - /** - * Enable or disable Pcntl usage. - * - * @param bool $usePcntl - */ - public function setUsePcntl(bool $usePcntl) - { - $this->usePcntl = (bool) $usePcntl; - } - - /** - * Check whether to use Pcntl. - * - * If `setUsePcntl` has been set to true, but Pcntl is not actually - * available, this will return false. - * - * @return bool True if the current Shell should use Pcntl - */ - public function usePcntl(): bool - { - if (!isset($this->usePcntl)) { - // Unless pcntl is explicitly *enabled*, don't use it while XDebug is debugging. - // See https://github.com/bobthecow/psysh/issues/742 - if (\function_exists('xdebug_is_debugger_active') && \xdebug_is_debugger_active()) { - return false; - } - - return $this->hasPcntl; - } - - return $this->hasPcntl && $this->usePcntl; - } - - /** - * Check whether to use raw output. - * - * This is set by the --raw-output (-r) flag, and really only makes sense - * when non-interactive, e.g. executing stdin. - * - * @return bool true if raw output is enabled - */ - public function rawOutput(): bool - { - return $this->rawOutput; - } - - /** - * Enable or disable raw output. - * - * @param bool $rawOutput - */ - public function setRawOutput(bool $rawOutput) - { - $this->rawOutput = (bool) $rawOutput; - } - - /** - * Enable or disable strict requirement of semicolons. - * - * @see self::requireSemicolons() - * - * @param bool $requireSemicolons - */ - public function setRequireSemicolons(bool $requireSemicolons) - { - $this->requireSemicolons = (bool) $requireSemicolons; - } - - /** - * Check whether to require semicolons on all statements. - * - * By default, PsySH will automatically insert semicolons at the end of - * statements if they're missing. To strictly require semicolons, set - * `requireSemicolons` to true. - */ - public function requireSemicolons(): bool - { - return $this->requireSemicolons; - } - - /** - * Enable or disable strict types enforcement. - */ - public function setStrictTypes($strictTypes) - { - $this->strictTypes = (bool) $strictTypes; - } - - /** - * Check whether to enforce strict types. - */ - public function strictTypes(): bool - { - return $this->strictTypes; - } - - /** - * Enable or disable Unicode in PsySH specific output. - * - * Note that this does not disable Unicode output in general, it just makes - * it so PsySH won't output any itself. - * - * @param bool $useUnicode - */ - public function setUseUnicode(bool $useUnicode) - { - $this->useUnicode = (bool) $useUnicode; - } - - /** - * Check whether to use Unicode in PsySH specific output. - * - * Note that this does not disable Unicode output in general, it just makes - * it so PsySH won't output any itself. - */ - public function useUnicode(): bool - { - if (isset($this->useUnicode)) { - return $this->useUnicode; - } - - // @todo detect `chsh` != 65001 on Windows and return false - return true; - } - - /** - * Set the error logging level. - * - * @see self::errorLoggingLevel - * - * @param int $errorLoggingLevel - */ - public function setErrorLoggingLevel($errorLoggingLevel) - { - if (\PHP_VERSION_ID < 80400) { - $this->errorLoggingLevel = (\E_ALL | \E_STRICT) & $errorLoggingLevel; - } else { - $this->errorLoggingLevel = \E_ALL & $errorLoggingLevel; - } - } - - /** - * Get the current error logging level. - * - * By default, PsySH will automatically log all errors, regardless of the - * current `error_reporting` level. - * - * Set `errorLoggingLevel` to 0 to prevent logging non-thrown errors. Set it - * to any valid error_reporting value to log only errors which match that - * level. - * - * http://php.net/manual/en/function.error-reporting.php - */ - public function errorLoggingLevel(): int - { - return $this->errorLoggingLevel; - } - - /** - * Set a CodeCleaner service instance. - * - * @param CodeCleaner $cleaner - */ - public function setCodeCleaner(CodeCleaner $cleaner) - { - $this->cleaner = $cleaner; - } - - /** - * Get a CodeCleaner service instance. - * - * If none has been explicitly defined, this will create a new instance. - */ - public function getCodeCleaner(): CodeCleaner - { - if (!isset($this->cleaner)) { - $this->cleaner = new CodeCleaner(null, null, null, $this->yolo(), $this->strictTypes()); - } - - return $this->cleaner; - } - - /** - * Enable or disable running PsySH without input validation. - * - * You don't want this. - */ - public function setYolo($yolo) - { - $this->yolo = (bool) $yolo; - } - - /** - * Check whether to disable input validation. - */ - public function yolo(): bool - { - return $this->yolo; - } - - /** - * Enable or disable tab completion. - * - * @param bool $useTabCompletion - */ - public function setUseTabCompletion(bool $useTabCompletion) - { - $this->useTabCompletion = (bool) $useTabCompletion; - } - - /** - * @deprecated Call `setUseTabCompletion` instead - * - * @param bool $useTabCompletion - */ - public function setTabCompletion(bool $useTabCompletion) - { - @\trigger_error('`setTabCompletion` is deprecated; call `setUseTabCompletion` instead.', \E_USER_DEPRECATED); - - $this->setUseTabCompletion($useTabCompletion); - } - - /** - * Check whether to use tab completion. - * - * If `setUseTabCompletion` has been set to true, but readline is not - * actually available, this will return false. - * - * @return bool True if the current Shell should use tab completion - */ - public function useTabCompletion(): bool - { - return isset($this->useTabCompletion) ? ($this->hasReadline && $this->useTabCompletion) : $this->hasReadline; - } - - /** - * @deprecated Call `useTabCompletion` instead - */ - public function getTabCompletion(): bool - { - @\trigger_error('`getTabCompletion` is deprecated; call `useTabCompletion` instead.', \E_USER_DEPRECATED); - - return $this->useTabCompletion(); - } - - /** - * Set the Shell Output service. - * - * @param ShellOutput $output - */ - public function setOutput(ShellOutput $output) - { - $this->output = $output; - $this->pipedOutput = null; // Reset cached pipe info - - if (isset($this->theme)) { - $output->setTheme($this->theme); - } - - $this->applyFormatterStyles(); - } - - /** - * Get a Shell Output service instance. - * - * If none has been explicitly provided, this will create a new instance - * with the configured verbosity and output pager supplied by self::getPager - * - * @see self::verbosity - * @see self::getPager - */ - public function getOutput(): ShellOutput - { - if (!isset($this->output)) { - $this->setOutput(new ShellOutput( - $this->getOutputVerbosity(), - null, - null, - $this->getPager() ?: null, - $this->theme() - )); - - // This is racy because `getOutputDecorated` needs access to the - // output stream to figure out if it's piped or not, so create it - // first, then update after we have a stream. - $decorated = $this->getOutputDecorated(); - if ($decorated !== null) { - $this->output->setDecorated($decorated); - } - } - - return $this->output; - } - - /** - * Get the decoration (i.e. color) setting for the Shell Output service. - * - * @return bool|null 3-state boolean corresponding to the current color mode - */ - public function getOutputDecorated() - { - switch ($this->colorMode()) { - case self::COLOR_MODE_FORCED: - return true; - case self::COLOR_MODE_DISABLED: - return false; - case self::COLOR_MODE_AUTO: - default: - return $this->outputIsPiped() ? false : null; - } - } - - /** - * Get the interactive setting for shell input. - */ - public function getInputInteractive(): bool - { - switch ($this->interactiveMode()) { - case self::INTERACTIVE_MODE_FORCED: - return true; - case self::INTERACTIVE_MODE_DISABLED: - return false; - case self::INTERACTIVE_MODE_AUTO: - default: - return !$this->inputIsPiped(); - } - } - - /** - * Set the OutputPager service. - * - * If a string is supplied, a ProcOutputPager will be used which shells out - * to the specified command. - * - * `cat` is special-cased to use the PassthruPager directly. - * - * @throws \InvalidArgumentException if $pager is not a string or OutputPager instance - * - * @param string|OutputPager|false $pager - */ - public function setPager($pager) - { - if ($pager === null || $pager === false || $pager === 'cat') { - $pager = false; - } - - if ($pager !== false && !\is_string($pager) && !$pager instanceof OutputPager) { - throw new \InvalidArgumentException('Unexpected pager instance'); - } - - $this->pager = $pager; - } - - /** - * Get an OutputPager instance or a command for an external Proc pager. - * - * If no Pager has been explicitly provided, and Pcntl is available, this - * will default to `cli.pager` ini value, falling back to `which less`. - * - * @return string|OutputPager|false - */ - public function getPager() - { - if (!isset($this->pager) && $this->usePcntl()) { - if (\getenv('TERM') === 'dumb') { - return false; - } - - if ($pager = \ini_get('cli.pager')) { - // use the default pager - $this->pager = $pager; - } elseif ($less = $this->configPaths->which('less')) { - // check for the presence of less... - - // n.b. The busybox less implementation is a bit broken, so - // let's not use it by default. - // - // See https://github.com/bobthecow/psysh/issues/778 - if (@\is_link($less)) { - $link = @\readlink($less); - if ($link !== false && \strpos($link, 'busybox') !== false) { - return false; - } - } - - $this->pager = $less.' -R -F -X'; - } - } - - return $this->pager; - } - - /** - * Set the Shell AutoCompleter service. - * - * @param AutoCompleter $autoCompleter - */ - public function setAutoCompleter(AutoCompleter $autoCompleter) - { - $this->autoCompleter = $autoCompleter; - } - - /** - * Get an AutoCompleter service instance. - */ - public function getAutoCompleter(): AutoCompleter - { - if (!isset($this->autoCompleter)) { - $this->autoCompleter = new AutoCompleter(); - } - - return $this->autoCompleter; - } - - /** - * @deprecated Nothing should be using this anymore - */ - public function getTabCompletionMatchers(): array - { - @\trigger_error('`getTabCompletionMatchers` is no longer used.', \E_USER_DEPRECATED); - - return []; - } - - /** - * Add tab completion matchers to the AutoCompleter. - * - * This will buffer new matchers in the event that the Shell has not yet - * been instantiated. This allows the user to specify matchers in their - * config rc file, despite the fact that their file is needed in the Shell - * constructor. - * - * @param array $matchers - */ - public function addMatchers(array $matchers) - { - $this->newMatchers = \array_merge($this->newMatchers, $matchers); - if (isset($this->shell)) { - $this->doAddMatchers(); - } - } - - /** - * Internal method for adding tab completion matchers. This will set any new - * matchers once a Shell is available. - */ - private function doAddMatchers() - { - if (!empty($this->newMatchers)) { - $this->shell->addMatchers($this->newMatchers); - $this->newMatchers = []; - } - } - - /** - * @deprecated Use `addMatchers` instead - * - * @param array $matchers - */ - public function addTabCompletionMatchers(array $matchers) - { - @\trigger_error('`addTabCompletionMatchers` is deprecated; call `addMatchers` instead.', \E_USER_DEPRECATED); - - $this->addMatchers($matchers); - } - - /** - * Add commands to the Shell. - * - * This will buffer new commands in the event that the Shell has not yet - * been instantiated. This allows the user to specify commands in their - * config rc file, despite the fact that their file is needed in the Shell - * constructor. - * - * @param array $commands - */ - public function addCommands(array $commands) - { - $this->newCommands = \array_merge($this->newCommands, $commands); - if (isset($this->shell)) { - $this->doAddCommands(); - } - } - - /** - * Internal method for adding commands. This will set any new commands once - * a Shell is available. - */ - private function doAddCommands() - { - if (!empty($this->newCommands)) { - $this->shell->addCommands($this->newCommands); - $this->newCommands = []; - } - } - - /** - * Set the Shell backreference and add any new commands to the Shell. - * - * @param Shell $shell - */ - public function setShell(Shell $shell) - { - $this->shell = $shell; - $this->doAddCommands(); - $this->doAddMatchers(); - } - - /** - * Set the PHP manual database file. - * - * This file should be an SQLite database generated from the phpdoc source - * with the `bin/build_manual` script. - * - * @param string $filename - */ - public function setManualDbFile(string $filename) - { - $this->manualDbFile = (string) $filename; - } - - /** - * Get the current PHP manual database file. - * - * @return string|null Default: '~/.local/share/psysh/php_manual.sqlite' - */ - public function getManualDbFile() - { - if (isset($this->manualDbFile)) { - return $this->manualDbFile; - } - - $files = $this->configPaths->dataFiles(['php_manual.sqlite']); - if (!empty($files)) { - if ($this->warnOnMultipleConfigs && \count($files) > 1) { - $msg = \sprintf('Multiple manual database files found: %s. Using %s', \implode(', ', $files), $files[0]); - \trigger_error($msg, \E_USER_NOTICE); - } - - return $this->manualDbFile = $files[0]; - } - } - - /** - * Get a PHP manual database connection. - * - * @return \PDO|null - */ - public function getManualDb() - { - if (!isset($this->manualDb)) { - $dbFile = $this->getManualDbFile(); - if ($dbFile !== null && \is_file($dbFile)) { - try { - $this->manualDb = new \PDO('sqlite:'.$dbFile); - } catch (\PDOException $e) { - if ($e->getMessage() === 'could not find driver') { - throw new RuntimeException('SQLite PDO driver not found', 0, $e); - } else { - throw $e; - } - } - } - } - - return $this->manualDb; - } - - /** - * Add an array of casters definitions. - * - * @param array $casters - */ - public function addCasters(array $casters) - { - $this->getPresenter()->addCasters($casters); - } - - /** - * Get the Presenter service. - */ - public function getPresenter(): Presenter - { - if (!isset($this->presenter)) { - $this->presenter = new Presenter($this->getOutput()->getFormatter(), $this->forceArrayIndexes()); - } - - return $this->presenter; - } - - /** - * Enable or disable warnings on multiple configuration or data files. - * - * @see self::warnOnMultipleConfigs() - * - * @param bool $warnOnMultipleConfigs - */ - public function setWarnOnMultipleConfigs(bool $warnOnMultipleConfigs) - { - $this->warnOnMultipleConfigs = (bool) $warnOnMultipleConfigs; - } - - /** - * Check whether to warn on multiple configuration or data files. - * - * By default, PsySH will use the file with highest precedence, and will - * silently ignore all others. With this enabled, a warning will be emitted - * (but not an exception thrown) if multiple configuration or data files - * are found. - * - * This will default to true in a future release, but is false for now. - */ - public function warnOnMultipleConfigs(): bool - { - return $this->warnOnMultipleConfigs; - } - - /** - * Set the current color mode. - * - * @throws \InvalidArgumentException if the color mode isn't auto, forced or disabled - * - * @param string $colorMode - */ - public function setColorMode(string $colorMode) - { - $validColorModes = [ - self::COLOR_MODE_AUTO, - self::COLOR_MODE_FORCED, - self::COLOR_MODE_DISABLED, - ]; - - if (!\in_array($colorMode, $validColorModes)) { - throw new \InvalidArgumentException('Invalid color mode: '.$colorMode); - } - - $this->colorMode = $colorMode; - } - - /** - * Get the current color mode. - */ - public function colorMode(): string - { - return $this->colorMode; - } - - /** - * Set the shell's interactive mode. - * - * @throws \InvalidArgumentException if interactive mode isn't disabled, forced, or auto - * - * @param string $interactiveMode - */ - public function setInteractiveMode(string $interactiveMode) - { - $validInteractiveModes = [ - self::INTERACTIVE_MODE_AUTO, - self::INTERACTIVE_MODE_FORCED, - self::INTERACTIVE_MODE_DISABLED, - ]; - - if (!\in_array($interactiveMode, $validInteractiveModes)) { - throw new \InvalidArgumentException('Invalid interactive mode: '.$interactiveMode); - } - - $this->interactiveMode = $interactiveMode; - } - - /** - * Get the current interactive mode. - */ - public function interactiveMode(): string - { - return $this->interactiveMode; - } - - /** - * Set an update checker service instance. - * - * @param Checker $checker - */ - public function setChecker(Checker $checker) - { - $this->checker = $checker; - } - - /** - * Get an update checker service instance. - * - * If none has been explicitly defined, this will create a new instance. - */ - public function getChecker(): Checker - { - if (!isset($this->checker)) { - $interval = $this->getUpdateCheck(); - switch ($interval) { - case Checker::ALWAYS: - $this->checker = new GitHubChecker(); - break; - - case Checker::DAILY: - case Checker::WEEKLY: - case Checker::MONTHLY: - $checkFile = $this->getUpdateCheckCacheFile(); - if ($checkFile === false) { - $this->checker = new NoopChecker(); - } else { - $this->checker = new IntervalChecker($checkFile, $interval); - } - break; - - case Checker::NEVER: - $this->checker = new NoopChecker(); - break; - } - } - - return $this->checker; - } - - /** - * Get the current update check interval. - * - * One of 'always', 'daily', 'weekly', 'monthly' or 'never'. If none is - * explicitly set, default to 'weekly'. - */ - public function getUpdateCheck(): string - { - return isset($this->updateCheck) ? $this->updateCheck : Checker::WEEKLY; - } - - /** - * Set the update check interval. - * - * @throws \InvalidArgumentException if the update check interval is unknown - * - * @param string $interval - */ - public function setUpdateCheck(string $interval) - { - $validIntervals = [ - Checker::ALWAYS, - Checker::DAILY, - Checker::WEEKLY, - Checker::MONTHLY, - Checker::NEVER, - ]; - - if (!\in_array($interval, $validIntervals)) { - throw new \InvalidArgumentException('Invalid update check interval: '.$interval); - } - - $this->updateCheck = $interval; - } - - /** - * Get a cache file path for the update checker. - * - * @return string|false Return false if config file/directory is not writable - */ - public function getUpdateCheckCacheFile() - { - $configDir = $this->configPaths->currentConfigDir(); - if ($configDir === null) { - return false; - } - - return ConfigPaths::touchFileWithMkdir($configDir.'/update_check.json'); - } - - /** - * Set the startup message. - * - * @param string $message - */ - public function setStartupMessage(string $message) - { - $this->startupMessage = $message; - } - - /** - * Get the startup message. - * - * @return string|null - */ - public function getStartupMessage() - { - return $this->startupMessage; - } - - /** - * Set the prompt. - * - * @deprecated The `prompt` configuration has been replaced by Themes and support will - * eventually be removed. In the meantime, prompt is applied first by the Theme, then overridden - * by any explicitly defined prompt. - * - * Note that providing a prompt but not a theme config will implicitly use the `classic` theme. - */ - public function setPrompt(string $prompt) - { - $this->prompt = $prompt; - - if (isset($this->theme)) { - $this->theme->setPrompt($prompt); - } - } - - /** - * Get the prompt. - * - * @return string|null - */ - public function getPrompt() - { - return $this->prompt; - } - - /** - * Get the force array indexes. - */ - public function forceArrayIndexes(): bool - { - return $this->forceArrayIndexes; - } - - /** - * Set the force array indexes. - * - * @param bool $forceArrayIndexes - */ - public function setForceArrayIndexes(bool $forceArrayIndexes) - { - $this->forceArrayIndexes = $forceArrayIndexes; - } - - /** - * Set the current output Theme. - * - * @param Theme|string|array $theme Theme (or Theme config) - */ - public function setTheme($theme) - { - if (!$theme instanceof Theme) { - $theme = new Theme($theme); - } - - $this->theme = $theme; - - if (isset($this->prompt)) { - $this->theme->setPrompt($this->prompt); - } - - if (isset($this->output)) { - $this->output->setTheme($theme); - $this->applyFormatterStyles(); - } - } - - /** - * Get the current output Theme. - */ - public function theme(): Theme - { - if (!isset($this->theme)) { - // If a prompt is explicitly set, and a theme is not, base it on the `classic` theme. - $this->theme = $this->prompt ? new Theme('classic') : new Theme(); - } - - if (isset($this->prompt)) { - $this->theme->setPrompt($this->prompt); - } - - return $this->theme; - } - - /** - * Set the shell output formatter styles. - * - * Accepts a map from style name to [fg, bg, options], for example: - * - * [ - * 'error' => ['white', 'red', ['bold']], - * 'warning' => ['black', 'yellow'], - * ] - * - * Foreground, background or options can be null, or even omitted entirely. - * - * @deprecated The `formatterStyles` configuration has been replaced by Themes and support will - * eventually be removed. In the meantime, styles are applied first by the Theme, then - * overridden by any explicitly defined formatter styles. - */ - public function setFormatterStyles(array $formatterStyles) - { - foreach ($formatterStyles as $name => $style) { - $this->formatterStyles[$name] = new OutputFormatterStyle(...$style); - } - - if (isset($this->output)) { - $this->applyFormatterStyles(); - } - } - - /** - * Internal method for applying output formatter style customization. - * - * This is called on initialization of the shell output, and again if the - * formatter styles config is updated. - * - * @deprecated The `formatterStyles` configuration has been replaced by Themes and support will - * eventually be removed. In the meantime, styles are applied first by the Theme, then - * overridden by any explicitly defined formatter styles. - */ - private function applyFormatterStyles() - { - $formatter = $this->output->getFormatter(); - foreach ($this->formatterStyles as $name => $style) { - $formatter->setStyle($name, $style); - } - - $errorFormatter = $this->output->getErrorOutput()->getFormatter(); - foreach (Theme::ERROR_STYLES as $name) { - if (isset($this->formatterStyles[$name])) { - $errorFormatter->setStyle($name, $this->formatterStyles[$name]); - } - } - } - - /** - * Get the configured output verbosity. - */ - public function verbosity(): string - { - return $this->verbosity; - } - - /** - * Set the shell output verbosity. - * - * Accepts OutputInterface verbosity constants. - * - * @throws \InvalidArgumentException if verbosity level is invalid - * - * @param string $verbosity - */ - public function setVerbosity(string $verbosity) - { - $validVerbosityLevels = [ - self::VERBOSITY_QUIET, - self::VERBOSITY_NORMAL, - self::VERBOSITY_VERBOSE, - self::VERBOSITY_VERY_VERBOSE, - self::VERBOSITY_DEBUG, - ]; - - if (!\in_array($verbosity, $validVerbosityLevels)) { - throw new \InvalidArgumentException('Invalid verbosity level: '.$verbosity); - } - - $this->verbosity = $verbosity; - - if (isset($this->output)) { - $this->output->setVerbosity($this->getOutputVerbosity()); - } - } - - /** - * Map the verbosity configuration to OutputInterface verbosity constants. - * - * @return int OutputInterface verbosity level - */ - public function getOutputVerbosity(): int - { - switch ($this->verbosity()) { - case self::VERBOSITY_QUIET: - return OutputInterface::VERBOSITY_QUIET; - case self::VERBOSITY_VERBOSE: - return OutputInterface::VERBOSITY_VERBOSE; - case self::VERBOSITY_VERY_VERBOSE: - return OutputInterface::VERBOSITY_VERY_VERBOSE; - case self::VERBOSITY_DEBUG: - return OutputInterface::VERBOSITY_DEBUG; - case self::VERBOSITY_NORMAL: - default: - return OutputInterface::VERBOSITY_NORMAL; - } - } - - /** - * Guess whether stdin is piped. - * - * This is mostly useful for deciding whether to use non-interactive mode. - */ - public function inputIsPiped(): bool - { - if ($this->pipedInput === null) { - $this->pipedInput = \defined('STDIN') && self::looksLikeAPipe(\STDIN); - } - - return $this->pipedInput; - } - - /** - * Guess whether shell output is piped. - * - * This is mostly useful for deciding whether to use non-decorated output. - */ - public function outputIsPiped(): bool - { - if ($this->pipedOutput === null) { - $this->pipedOutput = self::looksLikeAPipe($this->getOutput()->getStream()); - } - - return $this->pipedOutput; - } - - /** - * Guess whether an input or output stream is piped. - * - * @param resource|int $stream - */ - private static function looksLikeAPipe($stream): bool - { - if (\function_exists('posix_isatty')) { - return !\posix_isatty($stream); - } - - $stat = \fstat($stream); - $mode = $stat['mode'] & 0170000; - - return $mode === 0010000 || $mode === 0040000 || $mode === 0100000 || $mode === 0120000; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Context.php b/docker/streamline-src/vendor/psy/psysh/src/Context.php deleted file mode 100644 index 1062448e..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Context.php +++ /dev/null @@ -1,303 +0,0 @@ -returnValue; - - case '_e': - if (isset($this->lastException)) { - return $this->lastException; - } - break; - - case '__out': - if (isset($this->lastStdout)) { - return $this->lastStdout; - } - break; - - case 'this': - if (isset($this->boundObject)) { - return $this->boundObject; - } - break; - - case '__function': - case '__method': - case '__class': - case '__namespace': - case '__file': - case '__line': - case '__dir': - if (\array_key_exists($name, $this->commandScopeVariables)) { - return $this->commandScopeVariables[$name]; - } - break; - - default: - if (\array_key_exists($name, $this->scopeVariables)) { - return $this->scopeVariables[$name]; - } - break; - } - - throw new \InvalidArgumentException('Unknown variable: $'.$name); - } - - /** - * Get all defined variables. - */ - public function getAll(): array - { - return \array_merge($this->scopeVariables, $this->getSpecialVariables()); - } - - /** - * Get all defined magic variables: $_, $_e, $__out, $__class, $__file, etc. - */ - public function getSpecialVariables(): array - { - $vars = [ - '_' => $this->returnValue, - ]; - - if (isset($this->lastException)) { - $vars['_e'] = $this->lastException; - } - - if (isset($this->lastStdout)) { - $vars['__out'] = $this->lastStdout; - } - - if (isset($this->boundObject)) { - $vars['this'] = $this->boundObject; - } - - return \array_merge($vars, $this->commandScopeVariables); - } - - /** - * Set all scope variables. - * - * This method does *not* set any of the magic variables: $_, $_e, $__out, - * $__class, $__file, etc. - */ - public function setAll(array $vars) - { - foreach (self::SPECIAL_NAMES as $key) { - unset($vars[$key]); - } - - foreach (self::COMMAND_SCOPE_NAMES as $key) { - unset($vars[$key]); - } - - $this->scopeVariables = $vars; - } - - /** - * Set the most recent return value. - * - * @param mixed $value - */ - public function setReturnValue($value) - { - $this->returnValue = $value; - } - - /** - * Get the most recent return value. - * - * @return mixed - */ - public function getReturnValue() - { - return $this->returnValue; - } - - /** - * Set the most recent Exception or Error. - * - * @param \Throwable $e - */ - public function setLastException(\Throwable $e) - { - $this->lastException = $e; - } - - /** - * Get the most recent Exception or Error. - * - * @throws \InvalidArgumentException If no Exception has been caught - * - * @return \Throwable|null - */ - public function getLastException() - { - if (!isset($this->lastException)) { - throw new \InvalidArgumentException('No most-recent exception'); - } - - return $this->lastException; - } - - /** - * Set the most recent output from evaluated code. - */ - public function setLastStdout(string $lastStdout) - { - $this->lastStdout = $lastStdout; - } - - /** - * Get the most recent output from evaluated code. - * - * @throws \InvalidArgumentException If no output has happened yet - * - * @return string|null - */ - public function getLastStdout() - { - if (!isset($this->lastStdout)) { - throw new \InvalidArgumentException('No most-recent output'); - } - - return $this->lastStdout; - } - - /** - * Set the bound object ($this variable) for the interactive shell. - * - * Note that this unsets the bound class, if any exists. - * - * @param object|null $boundObject - */ - public function setBoundObject($boundObject) - { - $this->boundObject = \is_object($boundObject) ? $boundObject : null; - $this->boundClass = null; - } - - /** - * Get the bound object ($this variable) for the interactive shell. - * - * @return object|null - */ - public function getBoundObject() - { - return $this->boundObject; - } - - /** - * Set the bound class (self) for the interactive shell. - * - * Note that this unsets the bound object, if any exists. - * - * @param string|null $boundClass - */ - public function setBoundClass($boundClass) - { - $this->boundClass = (\is_string($boundClass) && $boundClass !== '') ? $boundClass : null; - $this->boundObject = null; - } - - /** - * Get the bound class (self) for the interactive shell. - * - * @return string|null - */ - public function getBoundClass() - { - return $this->boundClass; - } - - /** - * Set command-scope magic variables: $__class, $__file, etc. - */ - public function setCommandScopeVariables(array $commandScopeVariables) - { - $vars = []; - foreach ($commandScopeVariables as $key => $value) { - // kind of type check - if (\is_scalar($value) && \in_array($key, self::COMMAND_SCOPE_NAMES)) { - $vars[$key] = $value; - } - } - - $this->commandScopeVariables = $vars; - } - - /** - * Get command-scope magic variables: $__class, $__file, etc. - */ - public function getCommandScopeVariables(): array - { - return $this->commandScopeVariables; - } - - /** - * Get unused command-scope magic variables names: __class, __file, etc. - * - * This is used by the shell to unset old command-scope variables after a - * new batch is set. - * - * @return array Array of unused variable names - */ - public function getUnusedCommandScopeVariableNames(): array - { - return \array_diff(self::COMMAND_SCOPE_NAMES, \array_keys($this->commandScopeVariables)); - } - - /** - * Check whether a variable name is a magic variable. - */ - public static function isSpecialVariableName(string $name): bool - { - return \in_array($name, self::SPECIAL_NAMES) || \in_array($name, self::COMMAND_SCOPE_NAMES); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Exception/BreakException.php b/docker/streamline-src/vendor/psy/psysh/src/Exception/BreakException.php deleted file mode 100644 index 1b84a83a..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Exception/BreakException.php +++ /dev/null @@ -1,49 +0,0 @@ -rawMessage = $message; - parent::__construct(\sprintf('Exit: %s', $message), $code, $previous); - } - - /** - * Return a raw (unformatted) version of the error message. - */ - public function getRawMessage(): string - { - return $this->rawMessage; - } - - /** - * Throws BreakException. - * - * Since `throw` can not be inserted into arbitrary expressions, it wraps with function call. - * - * @throws BreakException - */ - public static function exitShell() - { - throw new self('Goodbye'); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Exception/ErrorException.php b/docker/streamline-src/vendor/psy/psysh/src/Exception/ErrorException.php deleted file mode 100644 index f32da850..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Exception/ErrorException.php +++ /dev/null @@ -1,112 +0,0 @@ -rawMessage = $message; - - if (!empty($filename) && \preg_match('{Psy[/\\\\]ExecutionLoop}', $filename)) { - $filename = ''; - } - - switch ($severity) { - case \E_NOTICE: - case \E_USER_NOTICE: - $type = 'Notice'; - break; - - case \E_WARNING: - case \E_CORE_WARNING: - case \E_COMPILE_WARNING: - case \E_USER_WARNING: - $type = 'Warning'; - break; - - case \E_DEPRECATED: - case \E_USER_DEPRECATED: - $type = 'Deprecated'; - break; - - case \E_RECOVERABLE_ERROR: - $type = 'Recoverable fatal error'; - break; - - default: - if (\PHP_VERSION_ID < 80400 && $severity === \E_STRICT) { - $type = 'Strict error'; - break; - } - $type = 'Error'; - break; - } - - $message = \sprintf('PHP %s: %s%s on line %d', $type, $message, $filename ? ' in '.$filename : '', $lineno); - parent::__construct($message, $code, $severity, $filename, $lineno, $previous); - } - - /** - * Get the raw (unformatted) message for this error. - */ - public function getRawMessage(): string - { - return $this->rawMessage; - } - - /** - * Helper for throwing an ErrorException. - * - * This allows us to: - * - * set_error_handler([ErrorException::class, 'throwException']); - * - * @throws self - * - * @param int $errno Error type - * @param string $errstr Message - * @param string $errfile Filename - * @param int $errline Line number - */ - public static function throwException($errno, $errstr, $errfile, $errline) - { - throw new self($errstr, 0, $errno, $errfile, $errline); - } - - /** - * Create an ErrorException from an Error. - * - * @deprecated PsySH no longer wraps Errors - * - * @param \Error $e - */ - public static function fromError(\Error $e) - { - @\trigger_error('PsySH no longer wraps Errors', \E_USER_DEPRECATED); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Exception/FatalErrorException.php b/docker/streamline-src/vendor/psy/psysh/src/Exception/FatalErrorException.php deleted file mode 100644 index b8af5bbe..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Exception/FatalErrorException.php +++ /dev/null @@ -1,50 +0,0 @@ -rawMessage = $message; - $message = \sprintf('PHP Fatal error: %s in %s on line %d', $message, $filename ?: "eval()'d code", $lineno); - parent::__construct($message, $code, $severity, $filename, $lineno, $previous); - } - - /** - * Return a raw (unformatted) version of the error message. - */ - public function getRawMessage(): string - { - return $this->rawMessage; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Exception/RuntimeException.php b/docker/streamline-src/vendor/psy/psysh/src/Exception/RuntimeException.php deleted file mode 100644 index b8ea3879..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Exception/RuntimeException.php +++ /dev/null @@ -1,41 +0,0 @@ -rawMessage = $message; - parent::__construct($message, $code, $previous); - } - - /** - * Return a raw (unformatted) version of the error message. - */ - public function getRawMessage(): string - { - return $this->rawMessage; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Exception/UnexpectedTargetException.php b/docker/streamline-src/vendor/psy/psysh/src/Exception/UnexpectedTargetException.php deleted file mode 100644 index b5c0d15c..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Exception/UnexpectedTargetException.php +++ /dev/null @@ -1,38 +0,0 @@ -target = $target; - parent::__construct($message, $code, $previous); - } - - /** - * @return mixed - */ - public function getTarget() - { - return $this->target; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/ExecutionClosure.php b/docker/streamline-src/vendor/psy/psysh/src/ExecutionClosure.php deleted file mode 100644 index 5ae354ac..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/ExecutionClosure.php +++ /dev/null @@ -1,91 +0,0 @@ -setClosure($__psysh__, function () use ($__psysh__) { - try { - // Restore execution scope variables - \extract($__psysh__->getScopeVariables(false)); - - // Buffer stdout; we'll need it later - \ob_start([$__psysh__, 'writeStdout'], 1); - - // Convert all errors to exceptions - \set_error_handler([$__psysh__, 'handleError']); - - // Evaluate the current code buffer - $_ = eval($__psysh__->onExecute($__psysh__->flushCode() ?: self::NOOP_INPUT)); - } catch (\Throwable $_e) { - // Clean up on our way out. - if (\ob_get_level() > 0) { - \ob_end_clean(); - } - - throw $_e; - } finally { - // Won't be needing this anymore - \restore_error_handler(); - } - - // Flush stdout (write to shell output, plus save to magic variable) - \ob_end_flush(); - - // Save execution scope variables for next time - $__psysh__->setScopeVariables(\get_defined_vars()); - - return $_; - }); - } - - /** - * Set the closure instance. - * - * @param Shell $shell - * @param \Closure $closure - */ - protected function setClosure(Shell $shell, \Closure $closure) - { - $that = $shell->getBoundObject(); - - if (\is_object($that)) { - $this->closure = $closure->bindTo($that, \get_class($that)); - } else { - $this->closure = $closure->bindTo(null, $shell->getBoundClass()); - } - } - - /** - * Go go gadget closure. - * - * @return mixed - */ - public function execute() - { - $closure = $this->closure; - - return $closure(); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/ExecutionLoop/ProcessForker.php b/docker/streamline-src/vendor/psy/psysh/src/ExecutionLoop/ProcessForker.php deleted file mode 100644 index 308b71d7..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/ExecutionLoop/ProcessForker.php +++ /dev/null @@ -1,286 +0,0 @@ - 0) { - // This is the main thread. We'll just wait for a while. - - // We won't be needing this one. - \fclose($up); - - // Wait for a return value from the loop process. - $read = [$down]; - $write = null; - $except = null; - - do { - $n = @\stream_select($read, $write, $except, null); - - if ($n === 0) { - throw new \RuntimeException('Process timed out waiting for execution loop'); - } - - if ($n === false) { - $err = \error_get_last(); - if (!isset($err['message']) || \stripos($err['message'], 'interrupted system call') === false) { - $msg = $err['message'] ? - \sprintf('Error waiting for execution loop: %s', $err['message']) : - 'Error waiting for execution loop'; - throw new \RuntimeException($msg); - } - } - } while ($n < 1); - - $content = \stream_get_contents($down); - \fclose($down); - - if ($content) { - $shell->setScopeVariables(@\unserialize($content)); - } - - throw new BreakException('Exiting main thread'); - } - - // This is the child process. It's going to do all the work. - if (!@\cli_set_process_title('psysh (loop)')) { - // Fall back to `setproctitle` if that wasn't succesful. - if (\function_exists('setproctitle')) { - @\setproctitle('psysh (loop)'); - } - } - - // We won't be needing this one. - \fclose($down); - - // Save this; we'll need to close it in `afterRun` - $this->up = $up; - } - - /** - * Create a savegame at the start of each loop iteration. - * - * @param Shell $shell - */ - public function beforeLoop(Shell $shell) - { - $this->createSavegame(); - } - - /** - * Clean up old savegames at the end of each loop iteration. - * - * @param Shell $shell - */ - public function afterLoop(Shell $shell) - { - // if there's an old savegame hanging around, let's kill it. - if (isset($this->savegame)) { - \posix_kill($this->savegame, \SIGKILL); - \pcntl_signal_dispatch(); - } - } - - /** - * After the REPL session ends, send the scope variables back up to the main - * thread (if this is a child thread). - * - * @param Shell $shell - */ - public function afterRun(Shell $shell) - { - // We're a child thread. Send the scope variables back up to the main thread. - if (isset($this->up)) { - \fwrite($this->up, $this->serializeReturn($shell->getScopeVariables(false))); - \fclose($this->up); - - \posix_kill(\posix_getpid(), \SIGKILL); - } - } - - /** - * Create a savegame fork. - * - * The savegame contains the current execution state, and can be resumed in - * the event that the worker dies unexpectedly (for example, by encountering - * a PHP fatal error). - */ - private function createSavegame() - { - // the current process will become the savegame - $this->savegame = \posix_getpid(); - - $pid = \pcntl_fork(); - if ($pid < 0) { - throw new \RuntimeException('Unable to create savegame fork'); - } elseif ($pid > 0) { - // we're the savegame now... let's wait and see what happens - \pcntl_waitpid($pid, $status); - - // worker exited cleanly, let's bail - if (!\pcntl_wexitstatus($status)) { - \posix_kill(\posix_getpid(), \SIGKILL); - } - - // worker didn't exit cleanly, we'll need to have another go - $this->createSavegame(); - } - } - - /** - * Serialize all serializable return values. - * - * A naïve serialization will run into issues if there is a Closure or - * SimpleXMLElement (among other things) in scope when exiting the execution - * loop. We'll just ignore these unserializable classes, and serialize what - * we can. - * - * @param array $return - */ - private function serializeReturn(array $return): string - { - $serializable = []; - - foreach ($return as $key => $value) { - // No need to return magic variables - if (Context::isSpecialVariableName($key)) { - continue; - } - - // Resources and Closures don't error, but they don't serialize well either. - if (\is_resource($value) || $value instanceof \Closure) { - continue; - } - - if (\version_compare(\PHP_VERSION, '8.1', '>=') && $value instanceof \UnitEnum) { - // Enums defined in the REPL session can't be unserialized. - $ref = new \ReflectionObject($value); - if (\strpos($ref->getFileName(), ": eval()'d code") !== false) { - continue; - } - } - - try { - @\serialize($value); - $serializable[$key] = $value; - } catch (\Throwable $e) { - // we'll just ignore this one... - } - } - - return @\serialize($serializable); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/ExecutionLoop/RunkitReloader.php b/docker/streamline-src/vendor/psy/psysh/src/ExecutionLoop/RunkitReloader.php deleted file mode 100644 index 4ba996a5..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/ExecutionLoop/RunkitReloader.php +++ /dev/null @@ -1,140 +0,0 @@ -parser = (new ParserFactory())->createParser(); - } - - /** - * Reload code on input. - * - * @param Shell $shell - * @param string $input - */ - public function onInput(Shell $shell, string $input) - { - $this->reload($shell); - } - - /** - * Look through included files and update anything with a new timestamp. - * - * @param Shell $shell - */ - private function reload(Shell $shell) - { - \clearstatcache(); - $modified = []; - - foreach (\get_included_files() as $file) { - $timestamp = \filemtime($file); - - if (!isset($this->timestamps[$file])) { - $this->timestamps[$file] = $timestamp; - continue; - } - - if ($this->timestamps[$file] === $timestamp) { - continue; - } - - if (!$this->lintFile($file)) { - $msg = \sprintf('Modified file "%s" could not be reloaded', $file); - $shell->writeException(new ParseErrorException($msg)); - continue; - } - - $modified[] = $file; - $this->timestamps[$file] = $timestamp; - } - - // switch (count($modified)) { - // case 0: - // return; - - // case 1: - // printf("Reloading modified file: \"%s\"\n", str_replace(getcwd(), '.', $file)); - // break; - - // default: - // printf("Reloading %d modified files\n", count($modified)); - // break; - // } - - foreach ($modified as $file) { - $flags = ( - RUNKIT_IMPORT_FUNCTIONS | - RUNKIT_IMPORT_CLASSES | - RUNKIT_IMPORT_CLASS_METHODS | - RUNKIT_IMPORT_CLASS_CONSTS | - RUNKIT_IMPORT_CLASS_PROPS | - RUNKIT_IMPORT_OVERRIDE - ); - - // these two const cannot be used with RUNKIT_IMPORT_OVERRIDE in runkit7 - if (\extension_loaded('runkit7')) { - $flags &= ~RUNKIT_IMPORT_CLASS_PROPS & ~RUNKIT_IMPORT_CLASS_STATIC_PROPS; - runkit7_import($file, $flags); - } else { - runkit_import($file, $flags); - } - } - } - - /** - * Should this file be re-imported? - * - * Use PHP-Parser to ensure that the file is valid PHP. - * - * @param string $file - */ - private function lintFile(string $file): bool - { - // first try to parse it - try { - $this->parser->parse(\file_get_contents($file)); - } catch (\Throwable $e) { - return false; - } - - return true; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Formatter/CodeFormatter.php b/docker/streamline-src/vendor/psy/psysh/src/Formatter/CodeFormatter.php deleted file mode 100644 index 98db81e3..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Formatter/CodeFormatter.php +++ /dev/null @@ -1,317 +0,0 @@ -> '; - const NO_LINE_MARKER = ' '; - - const HIGHLIGHT_DEFAULT = 'default'; - const HIGHLIGHT_KEYWORD = 'keyword'; - - const HIGHLIGHT_PUBLIC = 'public'; - const HIGHLIGHT_PROTECTED = 'protected'; - const HIGHLIGHT_PRIVATE = 'private'; - - const HIGHLIGHT_CONST = 'const'; - const HIGHLIGHT_NUMBER = 'number'; - const HIGHLIGHT_STRING = 'string'; - const HIGHLIGHT_COMMENT = 'code_comment'; - const HIGHLIGHT_INLINE_HTML = 'inline_html'; - - private const TOKEN_MAP = [ - // Not highlighted - \T_OPEN_TAG => self::HIGHLIGHT_DEFAULT, - \T_OPEN_TAG_WITH_ECHO => self::HIGHLIGHT_DEFAULT, - \T_CLOSE_TAG => self::HIGHLIGHT_DEFAULT, - \T_STRING => self::HIGHLIGHT_DEFAULT, - \T_VARIABLE => self::HIGHLIGHT_DEFAULT, - \T_NS_SEPARATOR => self::HIGHLIGHT_DEFAULT, - - // Visibility - \T_PUBLIC => self::HIGHLIGHT_PUBLIC, - \T_PROTECTED => self::HIGHLIGHT_PROTECTED, - \T_PRIVATE => self::HIGHLIGHT_PRIVATE, - - // Constants - \T_DIR => self::HIGHLIGHT_CONST, - \T_FILE => self::HIGHLIGHT_CONST, - \T_METHOD_C => self::HIGHLIGHT_CONST, - \T_NS_C => self::HIGHLIGHT_CONST, - \T_LINE => self::HIGHLIGHT_CONST, - \T_CLASS_C => self::HIGHLIGHT_CONST, - \T_FUNC_C => self::HIGHLIGHT_CONST, - \T_TRAIT_C => self::HIGHLIGHT_CONST, - - // Types - \T_DNUMBER => self::HIGHLIGHT_NUMBER, - \T_LNUMBER => self::HIGHLIGHT_NUMBER, - \T_ENCAPSED_AND_WHITESPACE => self::HIGHLIGHT_STRING, - \T_CONSTANT_ENCAPSED_STRING => self::HIGHLIGHT_STRING, - - // Comments - \T_COMMENT => self::HIGHLIGHT_COMMENT, - \T_DOC_COMMENT => self::HIGHLIGHT_COMMENT, - - // @todo something better here? - \T_INLINE_HTML => self::HIGHLIGHT_INLINE_HTML, - ]; - - /** - * Format the code represented by $reflector for shell output. - * - * @param \Reflector $reflector - * - * @return string formatted code - */ - public static function format(\Reflector $reflector): string - { - if (self::isReflectable($reflector)) { - if ($code = @\file_get_contents($reflector->getFileName())) { - return self::formatCode($code, self::getStartLine($reflector), $reflector->getEndLine()); - } - } - - throw new RuntimeException('Source code unavailable'); - } - - /** - * Format code for shell output. - * - * Optionally, restrict by $startLine and $endLine line numbers, or pass $markLine to add a line marker. - * - * @param string $code - * @param int $startLine - * @param int|null $endLine - * @param int|null $markLine - * - * @return string formatted code - */ - public static function formatCode(string $code, int $startLine = 1, ?int $endLine = null, ?int $markLine = null): string - { - $spans = self::tokenizeSpans($code); - $lines = self::splitLines($spans, $startLine, $endLine); - $lines = self::formatLines($lines); - $lines = self::numberLines($lines, $markLine); - - return \implode('', \iterator_to_array($lines)); - } - - /** - * Get the start line for a given Reflector. - * - * Tries to incorporate doc comments if possible. - * - * This is typehinted as \Reflector but we've narrowed the input via self::isReflectable already. - * - * @param \ReflectionClass|\ReflectionFunctionAbstract $reflector - */ - private static function getStartLine(\Reflector $reflector): int - { - $startLine = $reflector->getStartLine(); - - if ($docComment = $reflector->getDocComment()) { - $startLine -= \preg_match_all('/(\r\n?|\n)/', $docComment) + 1; - } - - return \max($startLine, 1); - } - - /** - * Split code into highlight spans. - * - * Tokenize via \token_get_all, then map these tokens to internal highlight types, combining - * adjacent spans of the same highlight type. - * - * @todo consider switching \token_get_all() out for PHP-Parser-based formatting at some point. - * - * @param string $code - * - * @return \Generator [$spanType, $spanText] highlight spans - */ - private static function tokenizeSpans(string $code): \Generator - { - $spanType = null; - $buffer = ''; - - foreach (\token_get_all($code) as $token) { - $nextType = self::nextHighlightType($token, $spanType); - $spanType = $spanType ?: $nextType; - - if ($spanType !== $nextType) { - yield [$spanType, $buffer]; - $spanType = $nextType; - $buffer = ''; - } - - $buffer .= \is_array($token) ? $token[1] : $token; - } - - if ($spanType !== null && $buffer !== '') { - yield [$spanType, $buffer]; - } - } - - /** - * Given a token and the current highlight span type, compute the next type. - * - * @param array|string $token \token_get_all token - * @param string|null $currentType - * - * @return string|null - */ - private static function nextHighlightType($token, $currentType) - { - if ($token === '"') { - return self::HIGHLIGHT_STRING; - } - - if (\is_array($token)) { - if ($token[0] === \T_WHITESPACE) { - return $currentType; - } - - if (\array_key_exists($token[0], self::TOKEN_MAP)) { - return self::TOKEN_MAP[$token[0]]; - } - } - - return self::HIGHLIGHT_KEYWORD; - } - - /** - * Group highlight spans into an array of lines. - * - * Optionally, restrict by start and end line numbers. - * - * @param \Generator $spans as [$spanType, $spanText] pairs - * @param int $startLine - * @param int|null $endLine - * - * @return \Generator lines, each an array of [$spanType, $spanText] pairs - */ - private static function splitLines(\Generator $spans, int $startLine = 1, ?int $endLine = null): \Generator - { - $lineNum = 1; - $buffer = []; - - foreach ($spans as list($spanType, $spanText)) { - foreach (\preg_split('/(\r\n?|\n)/', $spanText) as $index => $spanLine) { - if ($index > 0) { - if ($lineNum >= $startLine) { - yield $lineNum => $buffer; - } - - $lineNum++; - $buffer = []; - - if ($endLine !== null && $lineNum > $endLine) { - return; - } - } - - if ($spanLine !== '') { - $buffer[] = [$spanType, $spanLine]; - } - } - } - - if (!empty($buffer)) { - yield $lineNum => $buffer; - } - } - - /** - * Format lines of highlight spans for shell output. - * - * @param \Generator $spanLines lines, each an array of [$spanType, $spanText] pairs - * - * @return \Generator Formatted lines - */ - private static function formatLines(\Generator $spanLines): \Generator - { - foreach ($spanLines as $lineNum => $spanLine) { - $line = ''; - - foreach ($spanLine as list($spanType, $spanText)) { - if ($spanType === self::HIGHLIGHT_DEFAULT) { - $line .= OutputFormatter::escape($spanText); - } else { - $line .= \sprintf('<%s>%s', $spanType, OutputFormatter::escape($spanText), $spanType); - } - } - - yield $lineNum => $line.\PHP_EOL; - } - } - - /** - * Prepend line numbers to formatted lines. - * - * Lines must be in an associative array with the correct keys in order to be numbered properly. - * - * Optionally, pass $markLine to add a line marker. - * - * @param \Generator $lines Formatted lines - * @param int|null $markLine - * - * @return \Generator Numbered, formatted lines - */ - private static function numberLines(\Generator $lines, ?int $markLine = null): \Generator - { - $lines = \iterator_to_array($lines); - - // Figure out how much space to reserve for line numbers. - \end($lines); - $pad = \strlen(\key($lines)); - - // If $markLine is before or after our line range, don't bother reserving space for the marker. - if ($markLine !== null) { - if ($markLine > \key($lines)) { - $markLine = null; - } - - \reset($lines); - if ($markLine < \key($lines)) { - $markLine = null; - } - } - - foreach ($lines as $lineNum => $line) { - $mark = ''; - if ($markLine !== null) { - $mark = ($markLine === $lineNum) ? self::LINE_MARKER : self::NO_LINE_MARKER; - } - - yield \sprintf("%s: %s", $mark, $lineNum, $line); - } - } - - /** - * Check whether a Reflector instance is reflectable by this formatter. - * - * @phpstan-assert-if-true \ReflectionClass|\ReflectionFunctionAbstract $reflector - * - * @param \Reflector $reflector - */ - private static function isReflectable(\Reflector $reflector): bool - { - return ($reflector instanceof \ReflectionClass || $reflector instanceof \ReflectionFunctionAbstract) && \is_file($reflector->getFileName()); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Formatter/DocblockFormatter.php b/docker/streamline-src/vendor/psy/psysh/src/Formatter/DocblockFormatter.php deleted file mode 100644 index 9a526d1a..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Formatter/DocblockFormatter.php +++ /dev/null @@ -1,166 +0,0 @@ - 'info', - 'var' => 'strong', - ]; - - /** - * Format a docblock. - * - * @param \Reflector $reflector - * - * @return string Formatted docblock - */ - public static function format(\Reflector $reflector): string - { - $docblock = new Docblock($reflector); - $chunks = []; - - if (!empty($docblock->desc)) { - $chunks[] = 'Description:'; - $chunks[] = self::indent(OutputFormatter::escape($docblock->desc), ' '); - $chunks[] = ''; - } - - if (!empty($docblock->tags)) { - foreach ($docblock::$vectors as $name => $vector) { - if (isset($docblock->tags[$name])) { - $chunks[] = \sprintf('%s:', self::inflect($name)); - $chunks[] = self::formatVector($vector, $docblock->tags[$name]); - $chunks[] = ''; - } - } - - $tags = self::formatTags(\array_keys($docblock::$vectors), $docblock->tags); - if (!empty($tags)) { - $chunks[] = $tags; - $chunks[] = ''; - } - } - - return \rtrim(\implode("\n", $chunks)); - } - - /** - * Format a docblock vector, for example, `@throws`, `@param`, or `@return`. - * - * @see DocBlock::$vectors - * - * @param array $vector - * @param array $lines - */ - private static function formatVector(array $vector, array $lines): string - { - $template = [' ']; - foreach ($vector as $type) { - $max = 0; - foreach ($lines as $line) { - $chunk = $line[$type]; - $cur = empty($chunk) ? 0 : \strlen($chunk) + 1; - if ($cur > $max) { - $max = $cur; - } - } - - $template[] = self::getVectorParamTemplate($type, $max); - } - $template = \implode(' ', $template); - - return \implode("\n", \array_map(function ($line) use ($template) { - $escaped = \array_map(function ($l) { - if ($l === null) { - return ''; - } - - return OutputFormatter::escape($l); - }, $line); - - return \rtrim(\vsprintf($template, $escaped)); - }, $lines)); - } - - /** - * Format docblock tags. - * - * @param array $skip Tags to exclude - * @param array $tags Tags to format - * - * @return string formatted tags - */ - private static function formatTags(array $skip, array $tags): string - { - $chunks = []; - - foreach ($tags as $name => $values) { - if (\in_array($name, $skip)) { - continue; - } - - foreach ($values as $value) { - $chunks[] = \sprintf('%s%s %s', self::inflect($name), empty($value) ? '' : ':', OutputFormatter::escape($value)); - } - - $chunks[] = ''; - } - - return \implode("\n", $chunks); - } - - /** - * Get a docblock vector template. - * - * @param string $type Vector type - * @param int $max Pad width - */ - private static function getVectorParamTemplate(string $type, int $max): string - { - if (!isset(self::VECTOR_PARAM_TEMPLATES[$type])) { - return \sprintf('%%-%ds', $max); - } - - return \sprintf('<%s>%%-%ds', self::VECTOR_PARAM_TEMPLATES[$type], $max, self::VECTOR_PARAM_TEMPLATES[$type]); - } - - /** - * Indent a string. - * - * @param string $text String to indent - * @param string $indent (default: ' ') - */ - private static function indent(string $text, string $indent = ' '): string - { - return $indent.\str_replace("\n", "\n".$indent, $text); - } - - /** - * Convert underscored or whitespace separated words into sentence case. - * - * @param string $text - */ - private static function inflect(string $text): string - { - $words = \trim(\preg_replace('/[\s_-]+/', ' ', \preg_replace('/([a-z])([A-Z])/', '$1 $2', $text))); - - return \implode(' ', \array_map('ucfirst', \explode(' ', $words))); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Formatter/TraceFormatter.php b/docker/streamline-src/vendor/psy/psysh/src/Formatter/TraceFormatter.php deleted file mode 100644 index a30b4b8c..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Formatter/TraceFormatter.php +++ /dev/null @@ -1,96 +0,0 @@ -getTrace(); - \array_unshift($trace, [ - 'function' => '', - 'file' => $throwable->getFile() !== null ? $throwable->getFile() : 'n/a', - 'line' => $throwable->getLine() !== null ? $throwable->getLine() : 'n/a', - 'args' => [], - ]); - - if (!$includePsy) { - for ($i = \count($trace) - 1; $i >= 0; $i--) { - $thing = isset($trace[$i]['class']) ? $trace[$i]['class'] : $trace[$i]['function']; - if (\preg_match('/\\\\?Psy\\\\/', $thing)) { - $trace = \array_slice($trace, $i + 1); - break; - } - } - } - - for ($i = 0, $count = \min($count, \count($trace)); $i < $count; $i++) { - $class = isset($trace[$i]['class']) ? $trace[$i]['class'] : ''; - $type = isset($trace[$i]['type']) ? $trace[$i]['type'] : ''; - $function = $trace[$i]['function']; - $file = isset($trace[$i]['file']) ? $trace[$i]['file'] : 'n/a'; - $line = isset($trace[$i]['line']) ? $trace[$i]['line'] : 'n/a'; - - // Make file paths relative to cwd - if ($cwd !== false) { - $file = \preg_replace('/^'.\preg_quote($cwd, '/').'/', '', $file); - } - - // Leave execution loop out of the `eval()'d code` lines - if (\preg_match("#/src/Execution(?:Loop)?Closure.php\(\d+\) : eval\(\)'d code$#", \str_replace('\\', '/', $file))) { - $file = "eval()'d code"; - } - - // Skip any lines that don't match our filter options - if ($filter !== null && !$filter->match(\sprintf('%s%s%s() at %s:%s', $class, $type, $function, $file, $line))) { - continue; - } - - $lines[] = \sprintf( - ' %s%s%s() at %s:%s', - OutputFormatter::escape($class), - OutputFormatter::escape($type), - OutputFormatter::escape($function), - OutputFormatter::escape($file), - OutputFormatter::escape($line) - ); - } - - return $lines; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Input/CodeArgument.php b/docker/streamline-src/vendor/psy/psysh/src/Input/CodeArgument.php deleted file mode 100644 index 2654c943..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Input/CodeArgument.php +++ /dev/null @@ -1,50 +0,0 @@ -validateInput($input); - - if (!$pattern = $input->getOption('grep')) { - $this->filter = false; - - return; - } - - if (!$this->stringIsRegex($pattern)) { - $pattern = '/'.\preg_quote($pattern, '/').'/'; - } - - if ($insensitive = $input->getOption('insensitive')) { - $pattern .= 'i'; - } - - $this->validateRegex($pattern); - - $this->filter = true; - $this->pattern = $pattern; - $this->insensitive = $insensitive; - $this->invert = $input->getOption('invert'); - } - - /** - * Check whether the bound input has filter options. - */ - public function hasFilter(): bool - { - return $this->filter; - } - - /** - * Check whether a string matches the current filter options. - * - * @param string $string - * @param array $matches - */ - public function match(string $string, ?array &$matches = null): bool - { - return $this->filter === false || (\preg_match($this->pattern, $string, $matches) xor $this->invert); - } - - /** - * Validate that grep, invert and insensitive input options are consistent. - * - * @throws RuntimeException if input is invalid - * - * @param InputInterface $input - */ - private function validateInput(InputInterface $input) - { - if (!$input->getOption('grep')) { - foreach (['invert', 'insensitive'] as $option) { - if ($input->getOption($option)) { - throw new RuntimeException('--'.$option.' does not make sense without --grep'); - } - } - } - } - - /** - * Check whether a string appears to be a regular expression. - * - * @param string $string - */ - private function stringIsRegex(string $string): bool - { - return \substr($string, 0, 1) === '/' && \substr($string, -1) === '/' && \strlen($string) >= 3; - } - - /** - * Validate that $pattern is a valid regular expression. - * - * @throws RuntimeException if pattern is invalid - * - * @param string $pattern - */ - private function validateRegex(string $pattern) - { - \set_error_handler([ErrorException::class, 'throwException']); - try { - \preg_match($pattern, ''); - } catch (ErrorException $e) { - throw new RuntimeException(\str_replace('preg_match(): ', 'Invalid regular expression: ', $e->getRawMessage())); - } finally { - \restore_error_handler(); - } - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Input/ShellInput.php b/docker/streamline-src/vendor/psy/psysh/src/Input/ShellInput.php deleted file mode 100644 index 17a39fc6..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Input/ShellInput.php +++ /dev/null @@ -1,333 +0,0 @@ -tokenPairs = $this->tokenize($input); - } - - /** - * {@inheritdoc} - * - * @throws \InvalidArgumentException if $definition has CodeArgument before the final argument position - */ - public function bind(InputDefinition $definition): void - { - $hasCodeArgument = false; - - if ($definition->getArgumentCount() > 0) { - $args = $definition->getArguments(); - $lastArg = \array_pop($args); - foreach ($args as $arg) { - if ($arg instanceof CodeArgument) { - $msg = \sprintf('Unexpected CodeArgument before the final position: %s', $arg->getName()); - throw new \InvalidArgumentException($msg); - } - } - - if ($lastArg instanceof CodeArgument) { - $hasCodeArgument = true; - } - } - - $this->hasCodeArgument = $hasCodeArgument; - - parent::bind($definition); - } - - /** - * Tokenizes a string. - * - * The version of this on StringInput is good, but doesn't handle code - * arguments if they're at all complicated. This does :) - * - * @param string $input The input to tokenize - * - * @return array An array of token/rest pairs - * - * @throws \InvalidArgumentException When unable to parse input (should never happen) - */ - private function tokenize(string $input): array - { - $tokens = []; - $length = \strlen($input); - $cursor = 0; - while ($cursor < $length) { - if (\preg_match('/\s+/A', $input, $match, 0, $cursor)) { - } elseif (\preg_match('/([^="\'\s]+?)(=?)('.StringInput::REGEX_QUOTED_STRING.'+)/A', $input, $match, 0, $cursor)) { - $tokens[] = [ - $match[1].$match[2].\stripcslashes(\str_replace(['"\'', '\'"', '\'\'', '""'], '', \substr($match[3], 1, \strlen($match[3]) - 2))), - \stripcslashes(\substr($input, $cursor)), - ]; - } elseif (\preg_match('/'.StringInput::REGEX_QUOTED_STRING.'/A', $input, $match, 0, $cursor)) { - $tokens[] = [ - \stripcslashes(\substr($match[0], 1, \strlen($match[0]) - 2)), - \stripcslashes(\substr($input, $cursor)), - ]; - } elseif (\preg_match('/'.self::REGEX_STRING.'/A', $input, $match, 0, $cursor)) { - $tokens[] = [ - \stripcslashes($match[1]), - \stripcslashes(\substr($input, $cursor)), - ]; - } else { - // should never happen - // @codeCoverageIgnoreStart - throw new \InvalidArgumentException(\sprintf('Unable to parse input near "... %s ..."', \substr($input, $cursor, 10))); - // @codeCoverageIgnoreEnd - } - - $cursor += \strlen($match[0]); - } - - return $tokens; - } - - /** - * Same as parent, but with some bonus handling for code arguments. - */ - protected function parse(): void - { - $parseOptions = true; - $this->parsed = $this->tokenPairs; - while (null !== $tokenPair = \array_shift($this->parsed)) { - // token is what you'd expect. rest is the remainder of the input - // string, including token, and will be used if this is a code arg. - list($token, $rest) = $tokenPair; - - if ($parseOptions && '' === $token) { - $this->parseShellArgument($token, $rest); - } elseif ($parseOptions && '--' === $token) { - $parseOptions = false; - } elseif ($parseOptions && 0 === \strpos($token, '--')) { - $this->parseLongOption($token); - } elseif ($parseOptions && '-' === $token[0] && '-' !== $token) { - $this->parseShortOption($token); - } else { - $this->parseShellArgument($token, $rest); - } - } - } - - /** - * Parses an argument, with bonus handling for code arguments. - * - * @param string $token The current token - * @param string $rest The remaining unparsed input, including the current token - * - * @throws \RuntimeException When too many arguments are given - */ - private function parseShellArgument(string $token, string $rest) - { - $c = \count($this->arguments); - - // if input is expecting another argument, add it - if ($this->definition->hasArgument($c)) { - $arg = $this->definition->getArgument($c); - - if ($arg instanceof CodeArgument) { - // When we find a code argument, we're done parsing. Add the - // remaining input to the current argument and call it a day. - $this->parsed = []; - $this->arguments[$arg->getName()] = $rest; - } else { - $this->arguments[$arg->getName()] = $arg->isArray() ? [$token] : $token; - } - - return; - } - - // (copypasta) - // - // @codeCoverageIgnoreStart - - // if last argument isArray(), append token to last argument - if ($this->definition->hasArgument($c - 1) && $this->definition->getArgument($c - 1)->isArray()) { - $arg = $this->definition->getArgument($c - 1); - $this->arguments[$arg->getName()][] = $token; - - return; - } - - // unexpected argument - $all = $this->definition->getArguments(); - if (\count($all)) { - throw new \RuntimeException(\sprintf('Too many arguments, expected arguments "%s".', \implode('" "', \array_keys($all)))); - } - - throw new \RuntimeException(\sprintf('No arguments expected, got "%s".', $token)); - // @codeCoverageIgnoreEnd - } - - // Everything below this is copypasta from ArgvInput private methods - // @codeCoverageIgnoreStart - - /** - * Parses a short option. - * - * @param string $token The current token - */ - private function parseShortOption(string $token) - { - $name = \substr($token, 1); - - if (\strlen($name) > 1) { - if ($this->definition->hasShortcut($name[0]) && $this->definition->getOptionForShortcut($name[0])->acceptValue()) { - // an option with a value (with no space) - $this->addShortOption($name[0], \substr($name, 1)); - } else { - $this->parseShortOptionSet($name); - } - } else { - $this->addShortOption($name, null); - } - } - - /** - * Parses a short option set. - * - * @param string $name The current token - * - * @throws \RuntimeException When option given doesn't exist - */ - private function parseShortOptionSet(string $name) - { - $len = \strlen($name); - for ($i = 0; $i < $len; $i++) { - if (!$this->definition->hasShortcut($name[$i])) { - throw new \RuntimeException(\sprintf('The "-%s" option does not exist.', $name[$i])); - } - - $option = $this->definition->getOptionForShortcut($name[$i]); - if ($option->acceptValue()) { - $this->addLongOption($option->getName(), $i === $len - 1 ? null : \substr($name, $i + 1)); - - break; - } else { - $this->addLongOption($option->getName(), null); - } - } - } - - /** - * Parses a long option. - * - * @param string $token The current token - */ - private function parseLongOption(string $token) - { - $name = \substr($token, 2); - - if (false !== $pos = \strpos($name, '=')) { - if (($value = \substr($name, $pos + 1)) === '') { - \array_unshift($this->parsed, [$value, null]); - } - $this->addLongOption(\substr($name, 0, $pos), $value); - } else { - $this->addLongOption($name, null); - } - } - - /** - * Adds a short option value. - * - * @param string $shortcut The short option key - * @param mixed $value The value for the option - * - * @throws \RuntimeException When option given doesn't exist - */ - private function addShortOption(string $shortcut, $value) - { - if (!$this->definition->hasShortcut($shortcut)) { - throw new \RuntimeException(\sprintf('The "-%s" option does not exist.', $shortcut)); - } - - $this->addLongOption($this->definition->getOptionForShortcut($shortcut)->getName(), $value); - } - - /** - * Adds a long option value. - * - * @param string $name The long option key - * @param mixed $value The value for the option - * - * @throws \RuntimeException When option given doesn't exist - */ - private function addLongOption(string $name, $value) - { - if (!$this->definition->hasOption($name)) { - throw new \RuntimeException(\sprintf('The "--%s" option does not exist.', $name)); - } - - $option = $this->definition->getOption($name); - - if (null !== $value && !$option->acceptValue()) { - throw new \RuntimeException(\sprintf('The "--%s" option does not accept a value.', $name)); - } - - if (\in_array($value, ['', null], true) && $option->acceptValue() && \count($this->parsed)) { - // if option accepts an optional or mandatory argument - // let's see if there is one provided - $next = \array_shift($this->parsed); - $nextToken = $next[0]; - if ((isset($nextToken[0]) && '-' !== $nextToken[0]) || \in_array($nextToken, ['', null], true)) { - $value = $nextToken; - } else { - \array_unshift($this->parsed, $next); - } - } - - if ($value === null) { - if ($option->isValueRequired()) { - throw new \RuntimeException(\sprintf('The "--%s" option requires a value.', $name)); - } - - if (!$option->isArray() && !$option->isValueOptional()) { - $value = true; - } - } - - if ($option->isArray()) { - $this->options[$name][] = $value; - } else { - $this->options[$name] = $value; - } - } - - // @codeCoverageIgnoreEnd -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Input/SilentInput.php b/docker/streamline-src/vendor/psy/psysh/src/Input/SilentInput.php deleted file mode 100644 index 1bf5df53..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Input/SilentInput.php +++ /dev/null @@ -1,42 +0,0 @@ -inputString = $inputString; - } - - /** - * To. String. - */ - public function __toString(): string - { - return $this->inputString; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Output/ProcOutputPager.php b/docker/streamline-src/vendor/psy/psysh/src/Output/ProcOutputPager.php deleted file mode 100644 index 6aba44f2..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Output/ProcOutputPager.php +++ /dev/null @@ -1,108 +0,0 @@ -stream = $output->getStream(); - $this->cmd = $cmd; - } - - /** - * Writes a message to the output. - * - * @param string $message A message to write to the output - * @param bool $newline Whether to add a newline or not - * - * @throws \RuntimeException When unable to write output (should never happen) - */ - public function doWrite($message, $newline): void - { - $pipe = $this->getPipe(); - if (false === @\fwrite($pipe, $message.($newline ? \PHP_EOL : ''))) { - // @codeCoverageIgnoreStart - // should never happen - $this->close(); - throw new \RuntimeException('Unable to write output'); - // @codeCoverageIgnoreEnd - } - - \fflush($pipe); - } - - /** - * Close the current pager process. - */ - public function close() - { - if (isset($this->pipe)) { - \fclose($this->pipe); - } - - if (isset($this->proc)) { - $exit = \proc_close($this->proc); - if ($exit !== 0) { - throw new \RuntimeException('Error closing output stream'); - } - } - - $this->pipe = null; - $this->proc = null; - } - - /** - * Get a pipe for paging output. - * - * If no active pager process exists, fork one and return its input pipe. - */ - private function getPipe() - { - if (!isset($this->pipe) || !isset($this->proc)) { - $desc = [['pipe', 'r'], $this->stream, \fopen('php://stderr', 'w')]; - $this->proc = \proc_open($this->cmd, $desc, $pipes); - - if (!\is_resource($this->proc)) { - throw new \RuntimeException('Error opening output stream'); - } - - $this->pipe = $pipes[0]; - } - - return $this->pipe; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Output/ShellOutput.php b/docker/streamline-src/vendor/psy/psysh/src/Output/ShellOutput.php deleted file mode 100644 index 6dd91a47..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Output/ShellOutput.php +++ /dev/null @@ -1,205 +0,0 @@ -theme = $theme ?? new Theme('modern'); - $this->initFormatters(); - - if ($pager === null) { - $this->pager = new PassthruPager($this); - } elseif (\is_string($pager)) { - $this->pager = new ProcOutputPager($this, $pager); - } elseif ($pager instanceof OutputPager) { - $this->pager = $pager; - } else { - throw new \InvalidArgumentException('Unexpected pager parameter: '.$pager); - } - } - - /** - * Page multiple lines of output. - * - * The output pager is started - * - * If $messages is callable, it will be called, passing this output instance - * for rendering. Otherwise, all passed $messages are paged to output. - * - * Upon completion, the output pager is flushed. - * - * @param string|array|\Closure $messages A string, array of strings or a callback - * @param int $type (default: 0) - */ - public function page($messages, int $type = 0) - { - if (\is_string($messages)) { - $messages = (array) $messages; - } - - if (!\is_array($messages) && !\is_callable($messages)) { - throw new \InvalidArgumentException('Paged output requires a string, array or callback'); - } - - $this->startPaging(); - - if (\is_callable($messages)) { - $messages($this); - } else { - $this->write($messages, true, $type); - } - - $this->stopPaging(); - } - - /** - * Start sending output to the output pager. - */ - public function startPaging() - { - $this->paging++; - } - - /** - * Stop paging output and flush the output pager. - */ - public function stopPaging() - { - $this->paging--; - $this->closePager(); - } - - /** - * Writes a message to the output. - * - * Optionally, pass `$type | self::NUMBER_LINES` as the $type parameter to - * number the lines of output. - * - * @throws \InvalidArgumentException When unknown output type is given - * - * @param string|array $messages The message as an array of lines or a single string - * @param bool $newline Whether to add a newline or not - * @param int $type The type of output - */ - public function write($messages, $newline = false, $type = 0): void - { - if ($this->getVerbosity() === self::VERBOSITY_QUIET) { - return; - } - - $messages = (array) $messages; - - if ($type & self::NUMBER_LINES) { - $pad = \strlen((string) \count($messages)); - $template = $this->isDecorated() ? ": %s" : "%{$pad}s: %s"; - - if ($type & self::OUTPUT_RAW) { - $messages = \array_map([OutputFormatter::class, 'escape'], $messages); - } - - foreach ($messages as $i => $line) { - $messages[$i] = \sprintf($template, $i, $line); - } - - // clean this up for super. - $type = $type & ~self::NUMBER_LINES & ~self::OUTPUT_RAW; - } - - parent::write($messages, $newline, $type); - } - - /** - * Writes a message to the output. - * - * Handles paged output, or writes directly to the output stream. - * - * @param string $message A message to write to the output - * @param bool $newline Whether to add a newline or not - */ - public function doWrite($message, $newline): void - { - // @todo Update OutputPager interface to require doWrite - if ($this->paging > 0 && $this->pager instanceof ProcOutputPager) { - $this->pager->doWrite($message, $newline); - } else { - parent::doWrite($message, $newline); - } - } - - /** - * Set the output Theme. - */ - public function setTheme(Theme $theme) - { - $this->theme = $theme; - $this->initFormatters(); - } - - /** - * Flush and close the output pager. - */ - private function closePager() - { - if ($this->paging <= 0) { - $this->pager->close(); - } - } - - /** - * Initialize output formatter styles. - */ - private function initFormatters() - { - $useGrayFallback = !$this->grayExists(); - $this->theme->applyStyles($this->getFormatter(), $useGrayFallback); - $this->theme->applyErrorStyles($this->getErrorOutput()->getFormatter(), $useGrayFallback); - } - - /** - * Checks if the "gray" color exists on the output. - */ - private function grayExists(): bool - { - try { - $this->write(''); - } catch (\InvalidArgumentException $e) { - return false; - } - - return true; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Output/Theme.php b/docker/streamline-src/vendor/psy/psysh/src/Output/Theme.php deleted file mode 100644 index 3c84041e..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Output/Theme.php +++ /dev/null @@ -1,282 +0,0 @@ - true, - ]; - - const CLASSIC_THEME = [ - 'compact' => true, - - 'prompt' => '>>> ', - 'bufferPrompt' => '... ', - 'replayPrompt' => '--> ', - 'returnValue' => '=> ', - ]; - - const DEFAULT_STYLES = [ - 'info' => ['white', 'blue', ['bold']], - 'warning' => ['black', 'yellow'], - 'error' => ['white', 'red', ['bold']], - 'whisper' => ['gray'], - - 'aside' => ['blue'], - 'strong' => [null, null, ['bold']], - 'return' => ['cyan'], - 'urgent' => ['red'], - 'hidden' => ['black'], - - // Visibility - 'public' => [null, null, ['bold']], - 'protected' => ['yellow'], - 'private' => ['red'], - 'global' => ['cyan', null, ['bold']], - 'const' => ['cyan'], - 'class' => ['blue', null, ['underscore']], - 'function' => [null], - 'default' => [null], - - // Types - 'number' => ['magenta'], - 'integer' => ['magenta'], - 'float' => ['yellow'], - 'string' => ['green'], - 'bool' => ['cyan'], - 'keyword' => ['yellow'], - 'comment' => ['blue'], - 'code_comment' => ['gray'], - 'object' => ['blue'], - 'resource' => ['yellow'], - - // Code-specific formatting - 'inline_html' => ['cyan'], - ]; - - const ERROR_STYLES = ['info', 'warning', 'error', 'whisper', 'class']; - - private bool $compact = false; - - private string $prompt = '> '; - private string $bufferPrompt = '. '; - private string $replayPrompt = '- '; - private string $returnValue = '= '; - - private string $grayFallback = 'blue'; - - private array $styles = []; - - /** - * @param string|array $config theme name or config options - */ - public function __construct($config = 'modern') - { - if (\is_string($config)) { - switch ($config) { - case 'modern': - $config = static::MODERN_THEME; - break; - - case 'compact': - $config = static::COMPACT_THEME; - break; - - case 'classic': - $config = static::CLASSIC_THEME; - break; - - default: - \trigger_error(\sprintf('Unknown theme: %s', $config), \E_USER_NOTICE); - $config = static::MODERN_THEME; - break; - } - } - - if (!\is_array($config)) { - throw new \InvalidArgumentException('Invalid theme config'); - } - - foreach ($config as $name => $value) { - switch ($name) { - case 'compact': - $this->setCompact($value); - break; - - case 'prompt': - $this->setPrompt($value); - break; - - case 'bufferPrompt': - $this->setBufferPrompt($value); - break; - - case 'replayPrompt': - $this->setReplayPrompt($value); - break; - - case 'returnValue': - $this->setReturnValue($value); - break; - - case 'grayFallback': - $this->setGrayFallback($value); - break; - } - } - - $this->setStyles($config['styles'] ?? []); - } - - /** - * Enable or disable compact output. - */ - public function setCompact(bool $compact) - { - $this->compact = $compact; - } - - /** - * Get whether to use compact output. - */ - public function compact(): bool - { - return $this->compact; - } - - /** - * Set the prompt string. - */ - public function setPrompt(string $prompt) - { - $this->prompt = $prompt; - } - - /** - * Get the prompt string. - */ - public function prompt(): string - { - return $this->prompt; - } - - /** - * Set the buffer prompt string (used for multi-line input continuation). - */ - public function setBufferPrompt(string $bufferPrompt) - { - $this->bufferPrompt = $bufferPrompt; - } - - /** - * Get the buffer prompt string (used for multi-line input continuation). - */ - public function bufferPrompt(): string - { - return $this->bufferPrompt; - } - - /** - * Set the prompt string used when replaying history. - */ - public function setReplayPrompt(string $replayPrompt) - { - $this->replayPrompt = $replayPrompt; - } - - /** - * Get the prompt string used when replaying history. - */ - public function replayPrompt(): string - { - return $this->replayPrompt; - } - - /** - * Set the return value marker. - */ - public function setReturnValue(string $returnValue) - { - $this->returnValue = $returnValue; - } - - /** - * Get the return value marker. - */ - public function returnValue(): string - { - return $this->returnValue; - } - - /** - * Set the fallback color when "gray" is unavailable. - */ - public function setGrayFallback(string $grayFallback) - { - $this->grayFallback = $grayFallback; - } - - /** - * Set the shell output formatter styles. - * - * Accepts a map from style name to [fg, bg, options], for example: - * - * [ - * 'error' => ['white', 'red', ['bold']], - * 'warning' => ['black', 'yellow'], - * ] - * - * Foreground, background or options can be null, or even omitted entirely. - */ - public function setStyles(array $styles) - { - foreach (\array_keys(static::DEFAULT_STYLES) as $name) { - $this->styles[$name] = $styles[$name] ?? static::DEFAULT_STYLES[$name]; - } - } - - /** - * Apply the current output formatter styles. - */ - public function applyStyles(OutputFormatterInterface $formatter, bool $useGrayFallback) - { - foreach (\array_keys(static::DEFAULT_STYLES) as $name) { - $formatter->setStyle($name, new OutputFormatterStyle(...$this->getStyle($name, $useGrayFallback))); - } - } - - /** - * Apply the current output formatter error styles. - */ - public function applyErrorStyles(OutputFormatterInterface $errorFormatter, bool $useGrayFallback) - { - foreach (static::ERROR_STYLES as $name) { - $errorFormatter->setStyle($name, new OutputFormatterStyle(...$this->getStyle($name, $useGrayFallback))); - } - } - - private function getStyle(string $name, bool $useGrayFallback): array - { - return \array_map(function ($style) use ($useGrayFallback) { - return ($useGrayFallback && $style === 'gray') ? $this->grayFallback : $style; - }, $this->styles[$name]); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Readline/GNUReadline.php b/docker/streamline-src/vendor/psy/psysh/src/Readline/GNUReadline.php deleted file mode 100644 index 52aa9e82..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Readline/GNUReadline.php +++ /dev/null @@ -1,167 +0,0 @@ -historyFile = ($historyFile !== null) ? $historyFile : false; - $this->historySize = $historySize; - $this->eraseDups = $eraseDups; - - \readline_info('readline_name', 'psysh'); - } - - /** - * {@inheritdoc} - */ - public function addHistory(string $line): bool - { - if ($res = \readline_add_history($line)) { - $this->writeHistory(); - } - - return $res; - } - - /** - * {@inheritdoc} - */ - public function clearHistory(): bool - { - if ($res = \readline_clear_history()) { - $this->writeHistory(); - } - - return $res; - } - - /** - * {@inheritdoc} - */ - public function listHistory(): array - { - return \readline_list_history(); - } - - /** - * {@inheritdoc} - */ - public function readHistory(): bool - { - \readline_read_history(); - \readline_clear_history(); - - return \readline_read_history($this->historyFile); - } - - /** - * {@inheritdoc} - */ - public function readline(?string $prompt = null) - { - return \readline($prompt); - } - - /** - * {@inheritdoc} - */ - public function redisplay() - { - \readline_redisplay(); - } - - /** - * {@inheritdoc} - */ - public function writeHistory(): bool - { - // We have to write history first, since it is used - // by Libedit to list history - if ($this->historyFile !== false) { - $res = \readline_write_history($this->historyFile); - } else { - $res = true; - } - - if (!$res || !$this->eraseDups && !$this->historySize > 0) { - return $res; - } - - $hist = $this->listHistory(); - if (!$hist) { - return true; - } - - if ($this->eraseDups) { - // flip-flip technique: removes duplicates, latest entries win. - $hist = \array_flip(\array_flip($hist)); - // sort on keys to get the order back - \ksort($hist); - } - - if ($this->historySize > 0) { - $histsize = \count($hist); - if ($histsize > $this->historySize) { - $hist = \array_slice($hist, $histsize - $this->historySize); - } - } - - \readline_clear_history(); - foreach ($hist as $line) { - \readline_add_history($line); - } - - if ($this->historyFile !== false) { - return \readline_write_history($this->historyFile); - } - - return true; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/AutocompleterPath.php b/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/AutocompleterPath.php deleted file mode 100644 index f1eaca0e..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/AutocompleterPath.php +++ /dev/null @@ -1,194 +0,0 @@ -setRoot($root); - } - - if (null !== $iteratorFactory) { - $this->setIteratorFactory($iteratorFactory); - } - } - - /** - * Complete a word. - * Returns null for no word, a full-word or an array of full-words. - */ - public function complete(&$prefix) - { - $root = $this->getRoot(); - - if (static::PWD === $root) { - $root = \getcwd(); - } - - $path = $root.\DIRECTORY_SEPARATOR.$prefix; - - if (!\is_dir($path)) { - $path = \dirname($path).\DIRECTORY_SEPARATOR; - $prefix = \basename($prefix); - } else { - $prefix = null; - } - - $iteratorFactory = $this->getIteratorFactory() ?: - static::getDefaultIteratorFactory(); - - try { - $iterator = $iteratorFactory($path); - $out = []; - $length = \mb_strlen($prefix); - - foreach ($iterator as $fileinfo) { - $filename = $fileinfo->getFilename(); - - if (null === $prefix || - (\mb_substr($filename, 0, $length) === $prefix)) { - if ($fileinfo->isDir()) { - $out[] = $filename.'/'; - } else { - $out[] = $filename; - } - } - } - } catch (\Exception $e) { - return null; - } - - $count = \count($out); - - if (1 === $count) { - return $out[0]; - } - - if (0 === $count) { - return null; - } - - return $out; - } - - /** - * Get definition of a word. - */ - public function getWordDefinition(): string - { - return '/?[\w\d\\_\-\.]+(/[\w\d\\_\-\.]*)*'; - } - - /** - * Set root. - */ - public function setRoot(string $root) - { - $old = $this->_root; - $this->_root = $root; - - return $old; - } - - /** - * Get root. - */ - public function getRoot() - { - return $this->_root; - } - - /** - * Set iterator factory (a finder). - */ - public function setIteratorFactory(\Closure $iteratorFactory) - { - $old = $this->_iteratorFactory; - $this->_iteratorFactory = $iteratorFactory; - - return $old; - } - - /** - * Get iterator factory. - */ - public function getIteratorFactory() - { - return $this->_iteratorFactory; - } - - /** - * Get default iterator factory (based on \DirectoryIterator). - */ - public static function getDefaultIteratorFactory() - { - return function ($path) { - return new \DirectoryIterator($path); - }; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/ConsoleCursor.php b/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/ConsoleCursor.php deleted file mode 100644 index 8828d8b6..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/ConsoleCursor.php +++ /dev/null @@ -1,695 +0,0 @@ - $repeat) { - return; - } elseif (1 === $repeat) { - $handle = \explode(' ', $steps); - } else { - $handle = \explode(' ', $steps, 1); - } - - $tput = Console::getTput(); - $output = Console::getOutput(); - - foreach ($handle as $step) { - switch ($step) { - case 'u': - case 'up': - case '↑': - $output->writeAll( - \str_replace( - '%p1%d', - $repeat, - $tput->get('parm_up_cursor') - ) - ); - - break; - - case 'U': - case 'UP': - static::moveTo(null, 1); - - break; - - case 'r': - case 'right': - case '→': - $output->writeAll( - \str_replace( - '%p1%d', - $repeat, - $tput->get('parm_right_cursor') - ) - ); - - break; - - case 'R': - case 'RIGHT': - static::moveTo(9999); - - break; - - case 'd': - case 'down': - case '↓': - $output->writeAll( - \str_replace( - '%p1%d', - $repeat, - $tput->get('parm_down_cursor') - ) - ); - - break; - - case 'D': - case 'DOWN': - static::moveTo(null, 9999); - - break; - - case 'l': - case 'left': - case '←': - $output->writeAll( - \str_replace( - '%p1%d', - $repeat, - $tput->get('parm_left_cursor') - ) - ); - - break; - - case 'L': - case 'LEFT': - static::moveTo(1); - - break; - } - } - } - - /** - * Move to the line X and the column Y. - * If null, use the current coordinate. - */ - public static function moveTo(?int $x = null, ?int $y = null) - { - if (null === $x || null === $y) { - $position = static::getPosition(); - - if (null === $x) { - $x = $position['x']; - } - - if (null === $y) { - $y = $position['y']; - } - } - - Console::getOutput()->writeAll( - \str_replace( - ['%i%p1%d', '%p2%d'], - [$y, $x], - Console::getTput()->get('cursor_address') - ) - ); - } - - /** - * Get current position (x and y) of the cursor. - */ - public static function getPosition(): array - { - $tput = Console::getTput(); - $user7 = $tput->get('user7'); - - if (null === $user7) { - return [ - 'x' => 0, - 'y' => 0, - ]; - } - - Console::getOutput()->writeAll($user7); - - $input = Console::getInput(); - - // Read $tput->get('user6'). - $input->read(2); // skip \033 and [. - - $x = null; - $y = null; - $handle = &$y; - - while (true) { - $char = $input->readCharacter(); - - switch ($char) { - case ';': - $handle = &$x; - - break; - - case 'R': - break 2; - - default: - $handle .= $char; - } - } - - return [ - 'x' => (int) $x, - 'y' => (int) $y, - ]; - } - - /** - * Save current position. - */ - public static function save() - { - Console::getOutput()->writeAll( - Console::getTput()->get('save_cursor') - ); - } - - /** - * Restore cursor to the last saved position. - */ - public static function restore() - { - Console::getOutput()->writeAll( - Console::getTput()->get('restore_cursor') - ); - } - - /** - * Clear the screen. - * Part can be: - * • a, all, ↕ : clear entire screen and static::move(1, 1); - * • u, up, ↑ : clear from cursor to beginning of the screen; - * • r, right, → : clear from cursor to the end of the line; - * • d, down, ↓ : clear from cursor to end of the screen; - * • l, left, ← : clear from cursor to beginning of the screen; - * • line, ↔ : clear all the line and static::move(1). - * Parts can be concatenated by a single space. - */ - public static function clear(string $parts = 'all') - { - $tput = Console::getTput(); - $output = Console::getOutput(); - - foreach (\explode(' ', $parts) as $part) { - switch ($part) { - case 'a': - case 'all': - case '↕': - $output->writeAll($tput->get('clear_screen')); - static::moveTo(1, 1); - - break; - - case 'u': - case 'up': - case '↑': - $output->writeAll("\033[1J"); - - break; - - case 'r': - case 'right': - case '→': - $output->writeAll($tput->get('clr_eol')); - - break; - - case 'd': - case 'down': - case '↓': - $output->writeAll($tput->get('clr_eos')); - - break; - - case 'l': - case 'left': - case '←': - $output->writeAll($tput->get('clr_bol')); - - break; - - case 'line': - case '↔': - $output->writeAll("\r".$tput->get('clr_eol')); - - break; - } - } - } - - /** - * Hide the cursor. - */ - public static function hide() - { - Console::getOutput()->writeAll( - Console::getTput()->get('cursor_invisible') - ); - } - - /** - * Show the cursor. - */ - public static function show() - { - Console::getOutput()->writeAll( - Console::getTput()->get('cursor_visible') - ); - } - - /** - * Colorize cursor. - * Attributes can be: - * • n, normal : normal; - * • b, bold : bold; - * • u, underlined : underlined; - * • bl, blink : blink; - * • i, inverse : inverse; - * • !b, !bold : normal weight; - * • !u, !underlined : not underlined; - * • !bl, !blink : steady; - * • !i, !inverse : positive; - * • fg(color), foreground(color) : set foreground to “color”; - * • bg(color), background(color) : set background to “color”. - * “color” can be: - * • default; - * • black; - * • red; - * • green; - * • yellow; - * • blue; - * • magenta; - * • cyan; - * • white; - * • 0-256 (classic palette); - * • #hexa. - * Attributes can be concatenated by a single space. - */ - public static function colorize(string $attributes) - { - static $_rgbTo256 = null; - - if (null === $_rgbTo256) { - $_rgbTo256 = [ - '000000', '800000', '008000', '808000', '000080', '800080', - '008080', 'c0c0c0', '808080', 'ff0000', '00ff00', 'ffff00', - '0000ff', 'ff00ff', '00ffff', 'ffffff', '000000', '00005f', - '000087', '0000af', '0000d7', '0000ff', '005f00', '005f5f', - '005f87', '005faf', '005fd7', '005fff', '008700', '00875f', - '008787', '0087af', '0087d7', '0087ff', '00af00', '00af5f', - '00af87', '00afaf', '00afd7', '00afff', '00d700', '00d75f', - '00d787', '00d7af', '00d7d7', '00d7ff', '00ff00', '00ff5f', - '00ff87', '00ffaf', '00ffd7', '00ffff', '5f0000', '5f005f', - '5f0087', '5f00af', '5f00d7', '5f00ff', '5f5f00', '5f5f5f', - '5f5f87', '5f5faf', '5f5fd7', '5f5fff', '5f8700', '5f875f', - '5f8787', '5f87af', '5f87d7', '5f87ff', '5faf00', '5faf5f', - '5faf87', '5fafaf', '5fafd7', '5fafff', '5fd700', '5fd75f', - '5fd787', '5fd7af', '5fd7d7', '5fd7ff', '5fff00', '5fff5f', - '5fff87', '5fffaf', '5fffd7', '5fffff', '870000', '87005f', - '870087', '8700af', '8700d7', '8700ff', '875f00', '875f5f', - '875f87', '875faf', '875fd7', '875fff', '878700', '87875f', - '878787', '8787af', '8787d7', '8787ff', '87af00', '87af5f', - '87af87', '87afaf', '87afd7', '87afff', '87d700', '87d75f', - '87d787', '87d7af', '87d7d7', '87d7ff', '87ff00', '87ff5f', - '87ff87', '87ffaf', '87ffd7', '87ffff', 'af0000', 'af005f', - 'af0087', 'af00af', 'af00d7', 'af00ff', 'af5f00', 'af5f5f', - 'af5f87', 'af5faf', 'af5fd7', 'af5fff', 'af8700', 'af875f', - 'af8787', 'af87af', 'af87d7', 'af87ff', 'afaf00', 'afaf5f', - 'afaf87', 'afafaf', 'afafd7', 'afafff', 'afd700', 'afd75f', - 'afd787', 'afd7af', 'afd7d7', 'afd7ff', 'afff00', 'afff5f', - 'afff87', 'afffaf', 'afffd7', 'afffff', 'd70000', 'd7005f', - 'd70087', 'd700af', 'd700d7', 'd700ff', 'd75f00', 'd75f5f', - 'd75f87', 'd75faf', 'd75fd7', 'd75fff', 'd78700', 'd7875f', - 'd78787', 'd787af', 'd787d7', 'd787ff', 'd7af00', 'd7af5f', - 'd7af87', 'd7afaf', 'd7afd7', 'd7afff', 'd7d700', 'd7d75f', - 'd7d787', 'd7d7af', 'd7d7d7', 'd7d7ff', 'd7ff00', 'd7ff5f', - 'd7ff87', 'd7ffaf', 'd7ffd7', 'd7ffff', 'ff0000', 'ff005f', - 'ff0087', 'ff00af', 'ff00d7', 'ff00ff', 'ff5f00', 'ff5f5f', - 'ff5f87', 'ff5faf', 'ff5fd7', 'ff5fff', 'ff8700', 'ff875f', - 'ff8787', 'ff87af', 'ff87d7', 'ff87ff', 'ffaf00', 'ffaf5f', - 'ffaf87', 'ffafaf', 'ffafd7', 'ffafff', 'ffd700', 'ffd75f', - 'ffd787', 'ffd7af', 'ffd7d7', 'ffd7ff', 'ffff00', 'ffff5f', - 'ffff87', 'ffffaf', 'ffffd7', 'ffffff', '080808', '121212', - '1c1c1c', '262626', '303030', '3a3a3a', '444444', '4e4e4e', - '585858', '606060', '666666', '767676', '808080', '8a8a8a', - '949494', '9e9e9e', 'a8a8a8', 'b2b2b2', 'bcbcbc', 'c6c6c6', - 'd0d0d0', 'dadada', 'e4e4e4', 'eeeeee', - ]; - } - - $tput = Console::getTput(); - - if (1 >= $tput->count('max_colors')) { - return; - } - - $handle = []; - - foreach (\explode(' ', $attributes) as $attribute) { - switch ($attribute) { - case 'n': - case 'normal': - $handle[] = 0; - - break; - - case 'b': - case 'bold': - $handle[] = 1; - - break; - - case 'u': - case 'underlined': - $handle[] = 4; - - break; - - case 'bl': - case 'blink': - $handle[] = 5; - - break; - - case 'i': - case 'inverse': - $handle[] = 7; - - break; - - case '!b': - case '!bold': - $handle[] = 22; - - break; - - case '!u': - case '!underlined': - $handle[] = 24; - - break; - - case '!bl': - case '!blink': - $handle[] = 25; - - break; - - case '!i': - case '!inverse': - $handle[] = 27; - - break; - - default: - if (0 === \preg_match('#^([^\(]+)\(([^\)]+)\)$#', $attribute, $m)) { - break; - } - - $shift = 0; - - switch ($m[1]) { - case 'fg': - case 'foreground': - $shift = 0; - - break; - - case 'bg': - case 'background': - $shift = 10; - - break; - - default: - break 2; - } - - $_handle = 0; - $_keyword = true; - - switch ($m[2]) { - case 'black': - $_handle = 30; - - break; - - case 'red': - $_handle = 31; - - break; - - case 'green': - $_handle = 32; - - break; - - case 'yellow': - $_handle = 33; - - break; - - case 'blue': - $_handle = 34; - - break; - - case 'magenta': - $_handle = 35; - - break; - - case 'cyan': - $_handle = 36; - - break; - - case 'white': - $_handle = 37; - - break; - - case 'default': - $_handle = 39; - - break; - - default: - $_keyword = false; - - if (256 <= $tput->count('max_colors') && - '#' === $m[2][0]) { - $rgb = \hexdec(\substr($m[2], 1)); - $r = ($rgb >> 16) & 255; - $g = ($rgb >> 8) & 255; - $b = $rgb & 255; - $distance = null; - - foreach ($_rgbTo256 as $i => $_rgb) { - $_rgb = \hexdec($_rgb); - $_r = ($_rgb >> 16) & 255; - $_g = ($_rgb >> 8) & 255; - $_b = $_rgb & 255; - - $d = \sqrt( - ($_r - $r) ** 2 - + ($_g - $g) ** 2 - + ($_b - $b) ** 2 - ); - - if (null === $distance || - $d <= $distance) { - $distance = $d; - $_handle = $i; - } - } - } else { - $_handle = (int) ($m[2]); - } - } - - if (true === $_keyword) { - $handle[] = $_handle + $shift; - } else { - $handle[] = (38 + $shift).';5;'.$_handle; - } - } - } - - Console::getOutput()->writeAll("\033[".\implode(';', $handle).'m'); - - return; - } - - /** - * Change color number to a specific RGB color. - */ - public static function changeColor(int $fromCode, int $toColor) - { - $tput = Console::getTput(); - - if (true !== $tput->has('can_change')) { - return; - } - - $r = ($toColor >> 16) & 255; - $g = ($toColor >> 8) & 255; - $b = $toColor & 255; - - Console::getOutput()->writeAll( - \str_replace( - [ - '%p1%d', - 'rgb:', - '%p2%{255}%*%{1000}%/%2.2X/', - '%p3%{255}%*%{1000}%/%2.2X/', - '%p4%{255}%*%{1000}%/%2.2X', - ], - [ - $fromCode, - '', - \sprintf('%02x', $r), - \sprintf('%02x', $g), - \sprintf('%02x', $b), - ], - $tput->get('initialize_color') - ) - ); - - return; - } - - /** - * Set cursor style. - * Style can be: - * • b, block, ▋: block; - * • u, underline, _: underline; - * • v, vertical, |: vertical. - */ - public static function setStyle(string $style, bool $blink = true) - { - if (\defined('PHP_WINDOWS_VERSION_PLATFORM')) { - return; - } - - switch ($style) { - case 'u': - case 'underline': - case '_': - $_style = 2; - - break; - - case 'v': - case 'vertical': - case '|': - $_style = 5; - - break; - - case 'b': - case 'block': - case '▋': - default: - $_style = 1; - - break; - } - - if (false === $blink) { - ++$_style; - } - - // Not sure what tput entry we can use here… - Console::getOutput()->writeAll("\033[".$_style.' q'); - - return; - } - - /** - * Make a stupid “bip”. - */ - public static function bip() - { - Console::getOutput()->writeAll( - Console::getTput()->get('bell') - ); - } -} - -/* - * Advanced interaction. - */ -Console::advancedInteraction(); diff --git a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/ConsoleInput.php b/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/ConsoleInput.php deleted file mode 100644 index 6b00e2ad..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/ConsoleInput.php +++ /dev/null @@ -1,168 +0,0 @@ -_input = $input; - - return; - } - - /** - * Get underlying stream. - */ - public function getStream(): StreamIn - { - return $this->_input; - } - - /** - * Test for end-of-file. - */ - public function eof(): bool - { - return $this->_input->eof(); - } - - /** - * Read n characters. - */ - public function read(int $length) - { - return $this->_input->read($length); - } - - /** - * Alias of $this->read(). - */ - public function readString(int $length) - { - return $this->_input->readString($length); - } - - /** - * Read a character. - */ - public function readCharacter() - { - return $this->_input->readCharacter(); - } - - /** - * Read a boolean. - */ - public function readBoolean() - { - return $this->_input->readBoolean(); - } - - /** - * Read an integer. - */ - public function readInteger(int $length = 1) - { - return $this->_input->readInteger($length); - } - - /** - * Read a float. - */ - public function readFloat(int $length = 1) - { - return $this->_input->readFloat($length); - } - - /** - * Read an array. - * Alias of the $this->scanf() method. - */ - public function readArray($argument = null) - { - return $this->_input->readArray($argument); - } - - /** - * Read a line. - */ - public function readLine() - { - return $this->_input->readLine(); - } - - /** - * Read all, i.e. read as much as possible. - */ - public function readAll(int $offset = 0) - { - return $this->_input->readAll($offset); - } - - /** - * Parse input from a stream according to a format. - */ - public function scanf(string $format): array - { - return $this->_input->scanf($format); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/ConsoleOutput.php b/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/ConsoleOutput.php deleted file mode 100644 index b7ed2795..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/ConsoleOutput.php +++ /dev/null @@ -1,208 +0,0 @@ -_output = $output; - - return; - } - - /** - * Get the real output stream. - */ - public function getStream(): StreamOut - { - return $this->_output; - } - - /** - * Write n characters. - */ - public function write(string $string, int $length) - { - if (0 > $length) { - throw new ConsoleException('Length must be greater than 0, given %d.', 0, $length); - } - - $out = \substr($string, 0, $length); - - if (true === $this->isMultiplexerConsidered()) { - if (true === Console::isTmuxRunning()) { - $out = - "\033Ptmux;". - \str_replace("\033", "\033\033", $out). - "\033\\"; - } - - $length = \strlen($out); - } - - if (null === $this->_output) { - echo $out; - } else { - $this->_output->write($out, $length); - } - } - - /** - * Write a string. - */ - public function writeString(string $string) - { - $string = (string) $string; - - return $this->write($string, \strlen($string)); - } - - /** - * Write a character. - */ - public function writeCharacter(string $character) - { - return $this->write((string) $character[0], 1); - } - - /** - * Write a boolean. - */ - public function writeBoolean(bool $boolean) - { - return $this->write(((bool) $boolean) ? '1' : '0', 1); - } - - /** - * Write an integer. - */ - public function writeInteger(int $integer) - { - $integer = (string) (int) $integer; - - return $this->write($integer, \strlen($integer)); - } - - /** - * Write a float. - */ - public function writeFloat(float $float) - { - $float = (string) (float) $float; - - return $this->write($float, \strlen($float)); - } - - /** - * Write an array. - */ - public function writeArray(array $array) - { - $array = \var_export($array, true); - - return $this->write($array, \strlen($array)); - } - - /** - * Write a line. - */ - public function writeLine(string $line) - { - if (false === $n = \strpos($line, "\n")) { - return $this->write($line."\n", \strlen($line) + 1); - } - - ++$n; - - return $this->write(\substr($line, 0, $n), $n); - } - - /** - * Write all, i.e. as much as possible. - */ - public function writeAll(string $string) - { - return $this->write($string ?? '', \strlen($string ?? '')); - } - - /** - * Truncate a stream to a given length. - */ - public function truncate(int $size): bool - { - return false; - } - - /** - * Consider the multiplexer (if running) while writing on the output. - */ - public function considerMultiplexer(bool $consider): bool - { - $old = $this->_considerMultiplexer; - $this->_considerMultiplexer = $consider; - - return $old; - } - - /** - * Check whether the multiplexer must be considered or not. - */ - public function isMultiplexerConsidered(): bool - { - return $this->_considerMultiplexer; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/ConsoleProcessus.php b/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/ConsoleProcessus.php deleted file mode 100644 index da729854..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/ConsoleProcessus.php +++ /dev/null @@ -1,892 +0,0 @@ - value, or input). - */ - protected $_options = []; - - /** - * Current working directory. - */ - protected $_cwd = null; - - /** - * Environment. - */ - protected $_environment = null; - - /** - * Timeout. - */ - protected $_timeout = 30; - - /** - * Descriptor. - */ - protected $_descriptors = [ - 0 => ['pipe', 'r'], - 1 => ['pipe', 'w'], - 2 => ['pipe', 'w'], - ]; - - /** - * Pipe descriptors of the processus. - */ - protected $_pipes = null; - - /** - * Seekability of pipes. - */ - protected $_seekable = []; - - /** - * Start a processus. - */ - public function __construct( - string $command, - ?array $options = null, - ?array $descriptors = null, - ?string $cwd = null, - ?array $environment = null, - int $timeout = 30 - ) { - $this->setCommand($command); - - if (null !== $options) { - $this->setOptions($options); - } - - if (null !== $descriptors) { - $this->_descriptors = []; - - foreach ($descriptors as $descriptor => $nature) { - if (isset($this->_descriptors[$descriptor])) { - throw new ConsoleException('Pipe descriptor %d already exists, cannot '.'redefine it.', 0, $descriptor); - } - - $this->_descriptors[$descriptor] = $nature; - } - } - - $this->setCwd($cwd ?: \getcwd()); - - if (null !== $environment) { - $this->setEnvironment($environment); - } - - $this->setTimeout($timeout); - parent::__construct($this->getCommandLine(), null, true); - $this->getListener()->addIds(['input', 'output', 'timeout', 'start', 'stop']); - - return; - } - - /** - * Open the stream and return the associated resource. - */ - protected function &_open(string $streamName, ?StreamContext $context = null) - { - $out = @\proc_open( - $streamName, - $this->_descriptors, - $this->_pipes, - $this->getCwd(), - $this->getEnvironment() - ); - - if (false === $out) { - throw new ConsoleException('Something wrong happen when running %s.', 1, $streamName); - } - - return $out; - } - - /** - * Close the current stream. - */ - protected function _close(): bool - { - foreach ($this->_pipes as $pipe) { - @\fclose($pipe); - } - - return (bool) @\proc_close($this->getStream()); - } - - /** - * Run the process and fire events (amongst start, stop, input, output and - * timeout). - * If an event returns false, it will close the current pipe. - * For a simple run without firing events, use the $this->open() method. - */ - public function run() - { - if (false === $this->isOpened()) { - $this->open(); - } else { - $this->_close(); - $this->_setStream($this->_open( - $this->getStreamName(), - $this->getStreamContext() - )); - } - - $this->getListener()->fire('start', new EventBucket()); - - $_read = []; - $_write = []; - $_except = []; - - foreach ($this->_pipes as $p => $pipe) { - switch ($this->_descriptors[$p][1]) { - case 'r': - \stream_set_blocking($pipe, false); - $_write[] = $pipe; - - break; - - case 'w': - case 'a': - \stream_set_blocking($pipe, true); - $_read[] = $pipe; - - break; - } - } - - while (true) { - foreach ($_read as $i => $r) { - if (false === \is_resource($r)) { - unset($_read[$i]); - } - } - - foreach ($_write as $i => $w) { - if (false === \is_resource($w)) { - unset($_write[$i]); - } - } - - foreach ($_except as $i => $e) { - if (false === \is_resource($e)) { - unset($_except[$i]); - } - } - - if (empty($_read) && empty($_write) && empty($_except)) { - break; - } - - $read = $_read; - $write = $_write; - $except = $_except; - $select = \stream_select($read, $write, $except, $this->getTimeout()); - - if (0 === $select) { - $this->getListener()->fire('timeout', new EventBucket()); - - break; - } - - foreach ($read as $i => $_r) { - $pipe = \array_search($_r, $this->_pipes); - $line = $this->readLine($pipe); - - if (false === $line) { - $result = [false]; - } else { - $result = $this->getListener()->fire( - 'output', - new EventBucket([ - 'pipe' => $pipe, - 'line' => $line, - ]) - ); - } - - if (true === \feof($_r) || \in_array(false, $result, true)) { - \fclose($_r); - unset($_read[$i]); - - break; - } - } - - foreach ($write as $j => $_w) { - $result = $this->getListener()->fire( - 'input', - new EventBucket([ - 'pipe' => \array_search($_w, $this->_pipes), - ]) - ); - - if (true === \feof($_w) || \in_array(false, $result, true)) { - \fclose($_w); - unset($_write[$j]); - } - } - - if (empty($_read)) { - break; - } - } - - $this->getListener()->fire('stop', new EventBucket()); - - return; - } - - /** - * Get pipe resource. - */ - protected function getPipe(int $pipe) - { - if (!isset($this->_pipes[$pipe])) { - throw new ConsoleException('Pipe descriptor %d does not exist, cannot read from it.', 2, $pipe); - } - - return $this->_pipes[$pipe]; - } - - /** - * Check if a pipe is seekable or not. - */ - protected function isPipeSeekable(int $pipe): bool - { - if (!isset($this->_seekable[$pipe])) { - $_pipe = $this->getPipe($pipe); - $data = \stream_get_meta_data($_pipe); - $this->_seekable[$pipe] = $data['seekable']; - } - - return $this->_seekable[$pipe]; - } - - /** - * Test for end-of-file. - */ - public function eof(int $pipe = 1): bool - { - return \feof($this->getPipe($pipe)); - } - - /** - * Read n characters. - */ - public function read(int $length, int $pipe = 1) - { - if (0 > $length) { - throw new ConsoleException('Length must be greater than 0, given %d.', 3, $length); - } - - return \fread($this->getPipe($pipe), $length); - } - - /** - * Alias of $this->read(). - */ - public function readString(int $length, int $pipe = 1) - { - return $this->read($length, $pipe); - } - - /** - * Read a character. - */ - public function readCharacter(int $pipe = 1) - { - return \fgetc($this->getPipe($pipe)); - } - - /** - * Read a boolean. - */ - public function readBoolean(int $pipe = 1) - { - return (bool) $this->read(1, $pipe); - } - - /** - * Read an integer. - */ - public function readInteger(int $length = 1, int $pipe = 1) - { - return (int) $this->read($length, $pipe); - } - - /** - * Read a float. - */ - public function readFloat(int $length = 1, int $pipe = 1) - { - return (float) $this->read($length, $pipe); - } - - /** - * Read an array. - * Alias of the $this->scanf() method. - */ - public function readArray(?string $format = null, int $pipe = 1) - { - return $this->scanf($format, $pipe); - } - - /** - * Read a line. - */ - public function readLine(int $pipe = 1) - { - return \stream_get_line($this->getPipe($pipe), 1 << 15, "\n"); - } - - /** - * Read all, i.e. read as much as possible. - */ - public function readAll(int $offset = -1, int $pipe = 1) - { - $_pipe = $this->getPipe($pipe); - - if (true === $this->isPipeSeekable($pipe)) { - $offset += \ftell($_pipe); - } else { - $offset = -1; - } - - return \stream_get_contents($_pipe, -1, $offset); - } - - /** - * Parse input from a stream according to a format. - */ - public function scanf(string $format, int $pipe = 1): array - { - return \fscanf($this->getPipe($pipe), $format); - } - - /** - * Write n characters. - */ - public function write(string $string, int $length, int $pipe = 0) - { - if (0 > $length) { - throw new ConsoleException('Length must be greater than 0, given %d.', 4, $length); - } - - return \fwrite($this->getPipe($pipe), $string, $length); - } - - /** - * Write a string. - */ - public function writeString(string $string, int $pipe = 0) - { - $string = (string) $string; - - return $this->write($string, \strlen($string), $pipe); - } - - /** - * Write a character. - */ - public function writeCharacter(string $char, int $pipe = 0) - { - return $this->write((string) $char[0], 1, $pipe); - } - - /** - * Write a boolean. - */ - public function writeBoolean(bool $boolean, int $pipe = 0) - { - return $this->write((string) (bool) $boolean, 1, $pipe); - } - - /** - * Write an integer. - */ - public function writeInteger(int $integer, int $pipe = 0) - { - $integer = (string) (int) $integer; - - return $this->write($integer, \strlen($integer), $pipe); - } - - /** - * Write a float. - */ - public function writeFloat(float $float, int $pipe = 0) - { - $float = (string) (float) $float; - - return $this->write($float, \strlen($float), $pipe); - } - - /** - * Write an array. - */ - public function writeArray(array $array, int $pipe = 0) - { - $array = \var_export($array, true); - - return $this->write($array, \strlen($array), $pipe); - } - - /** - * Write a line. - */ - public function writeLine(string $line, int $pipe = 0) - { - if (false === $n = \strpos($line, "\n")) { - return $this->write($line."\n", \strlen($line) + 1, $pipe); - } - - ++$n; - - return $this->write(\substr($line, 0, $n), $n, $pipe); - } - - /** - * Write all, i.e. as much as possible. - */ - public function writeAll(string $string, int $pipe = 0) - { - return $this->write($string, \strlen($string), $pipe); - } - - /** - * Truncate a file to a given length. - */ - public function truncate(int $size, int $pipe = 0): bool - { - return \ftruncate($this->getPipe($pipe), $size); - } - - /** - * Get filename component of path. - */ - public function getBasename(): string - { - return \basename($this->getCommand()); - } - - /** - * Get directory name component of path. - */ - public function getDirname(): string - { - return \dirname($this->getCommand()); - } - - /** - * Get status. - */ - public function getStatus(): array - { - return \proc_get_status($this->getStream()); - } - - /** - * Get exit code (alias of $this->getStatus()['exitcode']);. - */ - public function getExitCode(): int - { - $handle = $this->getStatus(); - - return $handle['exitcode']; - } - - /** - * Whether the processus have ended successfully. - * - * @return bool - */ - public function isSuccessful(): bool - { - return 0 === $this->getExitCode(); - } - - /** - * Terminate the process. - * - * Valid signals are self::SIGHUP, SIGINT, SIGQUIT, SIGABRT, SIGKILL, - * SIGALRM and SIGTERM. - */ - public function terminate(int $signal = self::SIGTERM): bool - { - return \proc_terminate($this->getStream(), $signal); - } - - /** - * Set command name. - */ - protected function setCommand(string $command) - { - $old = $this->_command; - $this->_command = \escapeshellcmd($command); - - return $old; - } - - /** - * Get command name. - */ - public function getCommand() - { - return $this->_command; - } - - /** - * Set command options. - */ - protected function setOptions(array $options): array - { - foreach ($options as &$option) { - $option = \escapeshellarg($option); - } - - $old = $this->_options; - $this->_options = $options; - - return $old; - } - - /** - * Get options. - */ - public function getOptions(): array - { - return $this->_options; - } - - /** - * Get command-line. - */ - public function getCommandLine(): string - { - $out = $this->getCommand(); - - foreach ($this->getOptions() as $key => $value) { - if (!\is_int($key)) { - $out .= ' '.$key.'='.$value; - } else { - $out .= ' '.$value; - } - } - - return $out; - } - - /** - * Set current working directory of the process. - */ - protected function setCwd(string $cwd) - { - $old = $this->_cwd; - $this->_cwd = $cwd; - - return $old; - } - - /** - * Get current working directory of the process. - */ - public function getCwd(): string - { - return $this->_cwd; - } - - /** - * Set environment of the process. - */ - protected function setEnvironment(array $environment) - { - $old = $this->_environment; - $this->_environment = $environment; - - return $old; - } - - /** - * Get environment of the process. - */ - public function getEnvironment() - { - return $this->_environment; - } - - /** - * Set timeout of the process. - */ - public function setTimeout(int $timeout) - { - $old = $this->_timeout; - $this->_timeout = $timeout; - - return $old; - } - - /** - * Get timeout of the process. - */ - public function getTimeout(): int - { - return $this->_timeout; - } - - /** - * Set process title. - */ - public static function setTitle(string $title) - { - \cli_set_process_title($title); - } - - /** - * Get process title. - */ - public static function getTitle() - { - return \cli_get_process_title(); - } - - /** - * Found the place of a binary. - */ - public static function locate(string $binary) - { - if (isset($_ENV['PATH'])) { - $separator = ':'; - $path = &$_ENV['PATH']; - } elseif (isset($_SERVER['PATH'])) { - $separator = ':'; - $path = &$_SERVER['PATH']; - } elseif (isset($_SERVER['Path'])) { - $separator = ';'; - $path = &$_SERVER['Path']; - } else { - return null; - } - - foreach (\explode($separator, $path) as $directory) { - if (true === \file_exists($out = $directory.\DIRECTORY_SEPARATOR.$binary)) { - return $out; - } - } - - return null; - } - - /** - * Quick process execution. - * Returns only the STDOUT. - */ - public static function execute(string $commandLine, bool $escape = true): string - { - if (true === $escape) { - $commandLine = \escapeshellcmd($commandLine); - } - - return \rtrim(\shell_exec($commandLine) ?? ''); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/Exception.php b/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/Exception.php deleted file mode 100644 index 0a08f7a9..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/Exception.php +++ /dev/null @@ -1,79 +0,0 @@ -send(); - - return; - } - - /** - * Sends the exception on `hoa://Event/Exception`. - */ - public function send() - { - Event::notify( - 'hoa://Event/Exception', - $this, - new EventBucket($this) - ); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/ExceptionIdle.php b/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/ExceptionIdle.php deleted file mode 100644 index 29497f06..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/ExceptionIdle.php +++ /dev/null @@ -1,267 +0,0 @@ -_tmpArguments = $arguments; - parent::__construct($message, $code, $previous); - $this->_rawMessage = $message; - $this->message = @\vsprintf($message, $this->getArguments()); - - return; - } - - /** - * Returns the backtrace. - * - * Do not use `Exception::getTrace` any more. - */ - public function getBacktrace() - { - if (null === $this->_trace) { - $this->_trace = $this->getTrace(); - } - - return $this->_trace; - } - - /** - * Returns the previous exception if any. - * - * Do not use `Exception::getPrevious` any more. - */ - public function getPreviousThrow() - { - if (null === $this->_previous) { - $this->_previous = $this->getPrevious(); - } - - return $this->_previous; - } - - /** - * Returns the arguments of the message. - */ - public function getArguments() - { - if (null === $this->_arguments) { - $arguments = $this->_tmpArguments; - - if (!\is_array($arguments)) { - $arguments = [$arguments]; - } - - foreach ($arguments as &$value) { - if (null === $value) { - $value = '(null)'; - } - } - - $this->_arguments = $arguments; - unset($this->_tmpArguments); - } - - return $this->_arguments; - } - - /** - * Returns the raw message. - */ - public function getRawMessage(): string - { - return $this->_rawMessage; - } - - /** - * Returns the message already formatted. - */ - public function getFormattedMessage(): string - { - return $this->getMessage(); - } - - /** - * Returns the source of the exception (class, method, function, main etc.). - */ - public function getFrom(): string - { - $trace = $this->getBacktrace(); - $from = '{main}'; - - if (!empty($trace)) { - $t = $trace[0]; - $from = ''; - - if (isset($t['class'])) { - $from .= $t['class'].'::'; - } - - if (isset($t['function'])) { - $from .= $t['function'].'()'; - } - } - - return $from; - } - - /** - * Raises an exception as a string. - */ - public function raise(bool $includePrevious = false): string - { - $message = $this->getFormattedMessage(); - $trace = $this->getBacktrace(); - $file = '/dev/null'; - $line = -1; - $pre = $this->getFrom(); - - if (!empty($trace)) { - $file = $trace['file'] ?? null; - $line = $trace['line'] ?? null; - } - - $pre .= ': '; - - try { - $out = - $pre.'('.$this->getCode().') '.$message."\n". - 'in '.$this->getFile().' at line '. - $this->getLine().'.'; - } catch (\Exception $e) { - $out = - $pre.'('.$this->getCode().') '.$message."\n". - 'in '.$file.' around line '.$line.'.'; - } - - if (true === $includePrevious && - null !== $previous = $this->getPreviousThrow()) { - $out .= - "\n\n".' ⬇'."\n\n". - 'Nested exception ('.\get_class($previous).'):'."\n". - ($previous instanceof self - ? $previous->raise(true) - : $previous->getMessage()); - } - - return $out; - } - - /** - * Catches uncaught exception (only `Hoa\Exception\Idle` and children). - */ - public static function uncaught(\Throwable $exception) - { - if (!($exception instanceof self)) { - throw $exception; - } - - while (0 < \ob_get_level()) { - \ob_end_flush(); - } - - echo 'Uncaught exception ('.\get_class($exception).'):'."\n". - $exception->raise(true); - } - - /** - * String representation of object. - */ - public function __toString(): string - { - return $this->raise(); - } - - /** - * Enables uncaught exception handler. - * - * This is restricted to Hoa's exceptions only. - */ - public static function enableUncaughtHandler(bool $enable = true) - { - if (false === $enable) { - return \restore_exception_handler(); - } - - return \set_exception_handler(function ($exception) { - return self::uncaught($exception); - }); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/File.php b/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/File.php deleted file mode 100644 index 1db395da..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/File.php +++ /dev/null @@ -1,274 +0,0 @@ -setMode($mode); - - switch ($streamName) { - case '0': - $streamName = 'php://stdin'; - - break; - - case '1': - $streamName = 'php://stdout'; - - break; - - case '2': - $streamName = 'php://stderr'; - - break; - - default: - if (true === \ctype_digit($streamName)) { - $streamName = 'php://fd/'.$streamName; - } - } - - parent::__construct($streamName, $context, $wait); - - return; - } - - /** - * Open the stream and return the associated resource. - */ - protected function &_open(string $streamName, ?StreamContext $context = null) - { - if (\substr($streamName, 0, 4) === 'file' && - false === \is_dir(\dirname($streamName))) { - throw new FileException('Directory %s does not exist. Could not open file %s.', 1, [\dirname($streamName), \basename($streamName)]); - } - - if (null === $context) { - if (false === $out = @\fopen($streamName, $this->getMode(), true)) { - throw new FileException('Failed to open stream %s.', 2, $streamName); - } - - return $out; - } - - $out = @\fopen( - $streamName, - $this->getMode(), - true, - $context->getContext() - ); - - if (false === $out) { - throw new FileException('Failed to open stream %s.', 3, $streamName); - } - - return $out; - } - - /** - * Close the current stream. - */ - protected function _close(): bool - { - return @\fclose($this->getStream()); - } - - /** - * Start a new buffer. - * The callable acts like a light filter. - */ - public function newBuffer($callable = null, ?int $size = null): int - { - $this->setStreamBuffer($size); - - // @todo manage $callable as a filter? - - return 1; - } - - /** - * Flush the output to a stream. - */ - public function flush(): bool - { - return \fflush($this->getStream()); - } - - /** - * Delete buffer. - */ - public function deleteBuffer(): bool - { - return $this->disableStreamBuffer(); - } - - /** - * Get bufffer level. - */ - public function getBufferLevel(): int - { - return 1; - } - - /** - * Get buffer size. - */ - public function getBufferSize(): int - { - return $this->getStreamBufferSize(); - } - - /** - * Portable advisory locking. - */ - public function lock(int $operation): bool - { - return \flock($this->getStream(), $operation); - } - - /** - * Rewind the position of a stream pointer. - */ - public function rewind(): bool - { - return \rewind($this->getStream()); - } - - /** - * Seek on a stream pointer. - */ - public function seek(int $offset, int $whence = StreamPointable::SEEK_SET): int - { - return \fseek($this->getStream(), $offset, $whence); - } - - /** - * Get the current position of the stream pointer. - */ - public function tell(): int - { - $stream = $this->getStream(); - - if (null === $stream) { - return 0; - } - - return \ftell($stream); - } - - /** - * Create a file. - */ - public static function create(string $name) - { - if (\file_exists($name)) { - return true; - } - - return \touch($name); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/FileDirectory.php b/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/FileDirectory.php deleted file mode 100644 index 31adb00f..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/FileDirectory.php +++ /dev/null @@ -1,221 +0,0 @@ -setMode($mode); - parent::__construct($streamName, $context, $wait); - - return; - } - - /** - * Open the stream and return the associated resource. - */ - protected function &_open(string $streamName, ?StreamContext $context = null) - { - if (false === \is_dir($streamName)) { - if ($this->getMode() === self::MODE_READ) { - throw new FileDoesNotExistException('Directory %s does not exist.', 0, $streamName); - } else { - self::create( - $streamName, - $this->getMode(), - null !== $context - ? $context->getContext() - : null - ); - } - } - - $out = null; - - return $out; - } - - /** - * Close the current stream. - */ - protected function _close(): bool - { - return true; - } - - /** - * Recursive copy of a directory. - */ - public function copy(string $to, bool $force = StreamTouchable::DO_NOT_OVERWRITE): bool - { - if (empty($to)) { - throw new FileException('The destination path (to copy) is empty.', 1); - } - - $from = $this->getStreamName(); - $fromLength = \strlen($from) + 1; - $finder = new FileFinder(); - $finder->in($from); - - self::create($to, self::MODE_CREATE_RECURSIVE); - - foreach ($finder as $file) { - $relative = \substr($file->getPathname(), $fromLength); - $_to = $to.\DIRECTORY_SEPARATOR.$relative; - - if (true === $file->isDir()) { - self::create($_to, self::MODE_CREATE); - - continue; - } - - // This is not possible to do `$file->open()->copy(); - // $file->close();` because the file will be opened in read and - // write mode. In a PHAR for instance, this operation is - // forbidden. So a special care must be taken to open file in read - // only mode. - $handle = null; - - if (true === $file->isFile()) { - $handle = new FileRead($file->getPathname()); - } elseif (true === $file->isDir()) { - $handle = new self($file->getPathName()); - } elseif (true === $file->isLink()) { - $handle = new FileLinkRead($file->getPathName()); - } - - if (null !== $handle) { - $handle->copy($_to, $force); - $handle->close(); - } - } - - return true; - } - - /** - * Delete a directory. - */ - public function delete(): bool - { - $from = $this->getStreamName(); - $finder = new FileFinder(); - $finder->in($from) - ->childFirst(); - - foreach ($finder as $file) { - $file->open()->delete(); - $file->close(); - } - - if (null === $this->getStreamContext()) { - return @\rmdir($from); - } - - return @\rmdir($from, $this->getStreamContext()->getContext()); - } - - /** - * Create a directory. - */ - public static function create( - string $name, - string $mode = self::MODE_CREATE_RECURSIVE, - ?string $context = null - ): bool { - if (true === \is_dir($name)) { - return true; - } - - if (empty($name)) { - return false; - } - - if (null !== $context) { - if (false === StreamContext::contextExists($context)) { - throw new FileException('Context %s was not previously declared, cannot retrieve '.'this context.', 2, $context); - } else { - $context = StreamContext::getInstance($context); - } - } - - if (null === $context) { - return @\mkdir( - $name, - 0755, - self::MODE_CREATE_RECURSIVE === $mode - ); - } - - return @\mkdir( - $name, - 0755, - self::MODE_CREATE_RECURSIVE === $mode, - $context->getContext() - ); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/FileGeneric.php b/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/FileGeneric.php deleted file mode 100644 index 767b8045..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/FileGeneric.php +++ /dev/null @@ -1,487 +0,0 @@ -getStreamName()); - } - - /** - * Get directory name component of path. - */ - public function getDirname(): string - { - return \dirname($this->getStreamName()); - } - - /** - * Get size. - */ - public function getSize(): int - { - if (false === $this->getStatistic()) { - return false; - } - - return \filesize($this->getStreamName()); - } - - /** - * Get informations about a file. - */ - public function getStatistic(): array - { - return \fstat($this->getStream()); - } - - /** - * Get last access time of file. - */ - public function getATime(): int - { - return \fileatime($this->getStreamName()); - } - - /** - * Get inode change time of file. - */ - public function getCTime(): int - { - return \filectime($this->getStreamName()); - } - - /** - * Get file modification time. - */ - public function getMTime(): int - { - return \filemtime($this->getStreamName()); - } - - /** - * Get file group. - */ - public function getGroup(): int - { - return \filegroup($this->getStreamName()); - } - - /** - * Get file owner. - */ - public function getOwner(): int - { - return \fileowner($this->getStreamName()); - } - - /** - * Get file permissions. - */ - public function getPermissions(): int - { - return \fileperms($this->getStreamName()); - } - - /** - * Get file permissions as a string. - * Result sould be interpreted like this: - * * s: socket; - * * l: symbolic link; - * * -: regular; - * * b: block special; - * * d: directory; - * * c: character special; - * * p: FIFO pipe; - * * u: unknown. - */ - public function getReadablePermissions(): string - { - $p = $this->getPermissions(); - - if (($p & 0xC000) === 0xC000) { - $out = 's'; - } elseif (($p & 0xA000) === 0xA000) { - $out = 'l'; - } elseif (($p & 0x8000) === 0x8000) { - $out = '-'; - } elseif (($p & 0x6000) === 0x6000) { - $out = 'b'; - } elseif (($p & 0x4000) === 0x4000) { - $out = 'd'; - } elseif (($p & 0x2000) === 0x2000) { - $out = 'c'; - } elseif (($p & 0x1000) === 0x1000) { - $out = 'p'; - } else { - $out = 'u'; - } - - $out .= - (($p & 0x0100) ? 'r' : '-'). - (($p & 0x0080) ? 'w' : '-'). - (($p & 0x0040) ? - (($p & 0x0800) ? 's' : 'x') : - (($p & 0x0800) ? 'S' : '-')). - (($p & 0x0020) ? 'r' : '-'). - (($p & 0x0010) ? 'w' : '-'). - (($p & 0x0008) ? - (($p & 0x0400) ? 's' : 'x') : - (($p & 0x0400) ? 'S' : '-')). - (($p & 0x0004) ? 'r' : '-'). - (($p & 0x0002) ? 'w' : '-'). - (($p & 0x0001) ? - (($p & 0x0200) ? 't' : 'x') : - (($p & 0x0200) ? 'T' : '-')); - - return $out; - } - - /** - * Check if the file is readable. - */ - public function isReadable(): bool - { - return \is_readable($this->getStreamName()); - } - - /** - * Check if the file is writable. - */ - public function isWritable(): bool - { - return \is_writable($this->getStreamName()); - } - - /** - * Check if the file is executable. - */ - public function isExecutable(): bool - { - return \is_executable($this->getStreamName()); - } - - /** - * Clear file status cache. - */ - public function clearStatisticCache() - { - \clearstatcache(true, $this->getStreamName()); - } - - /** - * Clear all files status cache. - */ - public static function clearAllStatisticCaches() - { - \clearstatcache(); - } - - /** - * Set access and modification time of file. - */ - public function touch(?int $time = null, ?int $atime = null): bool - { - if (null === $time) { - $time = \time(); - } - - if (null === $atime) { - $atime = $time; - } - - return \touch($this->getStreamName(), $time, $atime); - } - - /** - * Copy file. - * Return the destination file path if succeed, false otherwise. - */ - public function copy(string $to, bool $force = StreamTouchable::DO_NOT_OVERWRITE): bool - { - $from = $this->getStreamName(); - - if ($force === StreamTouchable::DO_NOT_OVERWRITE && - true === \file_exists($to)) { - return true; - } - - if (null === $this->getStreamContext()) { - return @\copy($from, $to); - } - - return @\copy($from, $to, $this->getStreamContext()->getContext()); - } - - /** - * Move a file. - */ - public function move( - string $name, - bool $force = StreamTouchable::DO_NOT_OVERWRITE, - bool $mkdir = StreamTouchable::DO_NOT_MAKE_DIRECTORY - ): bool { - $from = $this->getStreamName(); - - if ($force === StreamTouchable::DO_NOT_OVERWRITE && - true === \file_exists($name)) { - return false; - } - - if (StreamTouchable::MAKE_DIRECTORY === $mkdir) { - FileDirectory::create( - \dirname($name), - FileDirectory::MODE_CREATE_RECURSIVE - ); - } - - if (null === $this->getStreamContext()) { - return @\rename($from, $name); - } - - return @\rename($from, $name, $this->getStreamContext()->getContext()); - } - - /** - * Delete a file. - */ - public function delete(): bool - { - if (null === $this->getStreamContext()) { - return @\unlink($this->getStreamName()); - } - - return @\unlink( - $this->getStreamName(), - $this->getStreamContext()->getContext() - ); - } - - /** - * Change file group. - */ - public function changeGroup($group): bool - { - return \chgrp($this->getStreamName(), $group); - } - - /** - * Change file mode. - */ - public function changeMode(int $mode): bool - { - return \chmod($this->getStreamName(), $mode); - } - - /** - * Change file owner. - */ - public function changeOwner($user): bool - { - return \chown($this->getStreamName(), $user); - } - - /** - * Change the current umask. - */ - public static function umask(?int $umask = null): int - { - if (null === $umask) { - return \umask(); - } - - return \umask($umask); - } - - /** - * Check if it is a file. - */ - public function isFile(): bool - { - return \is_file($this->getStreamName()); - } - - /** - * Check if it is a link. - */ - public function isLink(): bool - { - return \is_link($this->getStreamName()); - } - - /** - * Check if it is a directory. - */ - public function isDirectory(): bool - { - return \is_dir($this->getStreamName()); - } - - /** - * Check if it is a socket. - */ - public function isSocket(): bool - { - return \filetype($this->getStreamName()) === 'socket'; - } - - /** - * Check if it is a FIFO pipe. - */ - public function isFIFOPipe(): bool - { - return \filetype($this->getStreamName()) === 'fifo'; - } - - /** - * Check if it is character special file. - */ - public function isCharacterSpecial(): bool - { - return \filetype($this->getStreamName()) === 'char'; - } - - /** - * Check if it is block special. - */ - public function isBlockSpecial(): bool - { - return \filetype($this->getStreamName()) === 'block'; - } - - /** - * Check if it is an unknown type. - */ - public function isUnknown(): bool - { - return \filetype($this->getStreamName()) === 'unknown'; - } - - /** - * Set the open mode. - */ - protected function setMode(string $mode) - { - $old = $this->_mode; - $this->_mode = $mode; - - return $old; - } - - /** - * Get the open mode. - */ - public function getMode() - { - return $this->_mode; - } - - /** - * Get inode. - */ - public function getINode(): int - { - return \fileinode($this->getStreamName()); - } - - /** - * Check if the system is case sensitive or not. - */ - public static function isCaseSensitive(): bool - { - return !( - \file_exists(\mb_strtolower(__FILE__)) && - \file_exists(\mb_strtoupper(__FILE__)) - ); - } - - /** - * Get a canonicalized absolute pathname. - */ - public function getRealPath(): string - { - if (false === $out = \realpath($this->getStreamName())) { - return $this->getStreamName(); - } - - return $out; - } - - /** - * Get file extension (if exists). - */ - public function getExtension(): string - { - return \pathinfo( - $this->getStreamName(), - \PATHINFO_EXTENSION - ); - } - - /** - * Get filename without extension. - */ - public function getFilename(): string - { - $file = \basename($this->getStreamName()); - - if (\defined('PATHINFO_FILENAME')) { - return \pathinfo($file, \PATHINFO_FILENAME); - } - - if (\strstr($file, '.')) { - return \substr($file, 0, \strrpos($file, '.')); - } - - return $file; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/FileLink.php b/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/FileLink.php deleted file mode 100644 index e48a4111..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/FileLink.php +++ /dev/null @@ -1,149 +0,0 @@ -getStreamName()); - } - - /** - * Change file group. - */ - public function changeGroup($group): bool - { - return \lchgrp($this->getStreamName(), $group); - } - - /** - * Change file owner. - */ - public function changeOwner($user): bool - { - return \lchown($this->getStreamName(), $user); - } - - /** - * Get file permissions. - */ - public function getPermissions(): int - { - return 41453; // i.e. lrwxr-xr-x - } - - /** - * Get the target of a symbolic link. - */ - public function getTarget(): FileGeneric - { - $target = \dirname($this->getStreamName()).\DIRECTORY_SEPARATOR. - $this->getTargetName(); - $context = null !== $this->getStreamContext() - ? $this->getStreamContext()->getCurrentId() - : null; - - if (true === \is_link($target)) { - return new FileLinkReadWrite( - $target, - File::MODE_APPEND_READ_WRITE, - $context - ); - } elseif (true === \is_file($target)) { - return new FileReadWrite( - $target, - File::MODE_APPEND_READ_WRITE, - $context - ); - } elseif (true === \is_dir($target)) { - return new FileDirectory( - $target, - File::MODE_READ, - $context - ); - } - - throw new FileException('Cannot find an appropriated object that matches with '.'path %s when defining it.', 1, $target); - } - - /** - * Get the target name of a symbolic link. - */ - public function getTargetName(): string - { - return \readlink($this->getStreamName()); - } - - /** - * Create a link. - */ - public static function create(string $name, string $target): bool - { - if (false !== \linkinfo($name)) { - return true; - } - - return \symlink($target, $name); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/FileLinkRead.php b/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/FileLinkRead.php deleted file mode 100644 index ffa4ebcf..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/FileLinkRead.php +++ /dev/null @@ -1,231 +0,0 @@ -getMode(), $createModes)) { - throw new FileException('Open mode are not supported; given %d. Only %s are supported.', 0, [$this->getMode(), \implode(', ', $createModes)]); - } - - \preg_match('#^(\w+)://#', $streamName, $match); - - if (((isset($match[1]) && $match[1] === 'file') || !isset($match[1])) && - !\file_exists($streamName)) { - throw new FileDoesNotExistException('File %s does not exist.', 1, $streamName); - } - - $out = parent::_open($streamName, $context); - - return $out; - } - - /** - * Test for end-of-file. - * - * @return bool - */ - public function eof(): bool - { - return \feof($this->getStream()); - } - - /** - * Read n characters. - * - * @param int $length length - * - * @return string - * - * @throws \Hoa\File\Exception - */ - public function read(int $length) - { - if (0 > $length) { - throw new FileException('Length must be greater than 0, given %d.', 2, $length); - } - - return \fread($this->getStream(), $length); - } - - /** - * Alias of $this->read(). - * - * @param int $length length - * - * @return string - */ - public function readString(int $length) - { - return $this->read($length); - } - - /** - * Read a character. - * - * @return string - */ - public function readCharacter() - { - return \fgetc($this->getStream()); - } - - /** - * Read a boolean. - * - * @return bool - */ - public function readBoolean() - { - return (bool) $this->read(1); - } - - /** - * Read an integer. - * - * @param int $length length - * - * @return int - */ - public function readInteger(int $length = 1) - { - return (int) $this->read($length); - } - - /** - * Read a float. - * - * @param int $length length - * - * @return float - */ - public function readFloat(int $length = 1) - { - return (float) $this->read($length); - } - - /** - * Read an array. - * Alias of the $this->scanf() method. - * - * @param string $format format (see printf's formats) - * - * @return array - */ - public function readArray(?string $format = null) - { - return $this->scanf($format); - } - - /** - * Read a line. - * - * @return string - */ - public function readLine() - { - return \fgets($this->getStream()); - } - - /** - * Read all, i.e. read as much as possible. - * - * @param int $offset offset - * - * @return string - */ - public function readAll(int $offset = 0) - { - return \stream_get_contents($this->getStream(), -1, $offset); - } - - /** - * Parse input from a stream according to a format. - * - * @param string $format format (see printf's formats) - * - * @return array - */ - public function scanf(string $format): array - { - return \fscanf($this->getStream(), $format); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/FileLinkReadWrite.php b/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/FileLinkReadWrite.php deleted file mode 100644 index e930d919..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/FileLinkReadWrite.php +++ /dev/null @@ -1,279 +0,0 @@ -getMode(), $createModes)) { - throw new FileException('Open mode are not supported; given %d. Only %s are supported.', 0, [$this->getMode(), \implode(', ', $createModes)]); - } - - \preg_match('#^(\w+)://#', $streamName, $match); - - if (((isset($match[1]) && $match[1] === 'file') || !isset($match[1])) && - !\file_exists($streamName) && - parent::MODE_READ_WRITE === $this->getMode()) { - throw new FileDoesNotExistException('File %s does not exist.', 1, $streamName); - } - - $out = parent::_open($streamName, $context); - - return $out; - } - - /** - * Test for end-of-file. - */ - public function eof(): bool - { - return \feof($this->getStream()); - } - - /** - * Read n characters. - */ - public function read(int $length) - { - if (0 > $length) { - throw new FileException('Length must be greater than 0, given %d.', 2, $length); - } - - return \fread($this->getStream(), $length); - } - - /** - * Alias of $this->read(). - */ - public function readString(int $length) - { - return $this->read($length); - } - - /** - * Read a character. - */ - public function readCharacter() - { - return \fgetc($this->getStream()); - } - - /** - * Read a boolean. - */ - public function readBoolean() - { - return (bool) $this->read(1); - } - - /** - * Read an integer. - */ - public function readInteger(int $length = 1) - { - return (int) $this->read($length); - } - - /** - * Read a float. - */ - public function readFloat(int $length = 1) - { - return (float) $this->read($length); - } - - /** - * Read an array. - * Alias of the $this->scanf() method. - */ - public function readArray(?string $format = null) - { - return $this->scanf($format); - } - - /** - * Read a line. - */ - public function readLine() - { - return \fgets($this->getStream()); - } - - /** - * Read all, i.e. read as much as possible. - */ - public function readAll(int $offset = 0) - { - return \stream_get_contents($this->getStream(), -1, $offset); - } - - /** - * Parse input from a stream according to a format. - */ - public function scanf(string $format): array - { - return \fscanf($this->getStream(), $format); - } - - /** - * Write n characters. - */ - public function write(string $string, int $length) - { - if (0 > $length) { - throw new FileException('Length must be greater than 0, given %d.', 3, $length); - } - - return \fwrite($this->getStream(), $string, $length); - } - - /** - * Write a string. - */ - public function writeString(string $string) - { - $string = (string) $string; - - return $this->write($string, \strlen($string)); - } - - /** - * Write a character. - */ - public function writeCharacter(string $char) - { - return $this->write((string) $char[0], 1); - } - - /** - * Write a boolean. - */ - public function writeBoolean(bool $boolean) - { - return $this->write((string) (bool) $boolean, 1); - } - - /** - * Write an integer. - */ - public function writeInteger(int $integer) - { - $integer = (string) (int) $integer; - - return $this->write($integer, \strlen($integer)); - } - - /** - * Write a float. - */ - public function writeFloat(float $float) - { - $float = (string) (float) $float; - - return $this->write($float, \strlen($float)); - } - - /** - * Write an array. - */ - public function writeArray(array $array) - { - $array = \var_export($array, true); - - return $this->write($array, \strlen($array)); - } - - /** - * Write a line. - */ - public function writeLine(string $line) - { - if (false === $n = \strpos($line, "\n")) { - return $this->write($line."\n", \strlen($line) + 1); - } - - ++$n; - - return $this->write(\substr($line, 0, $n), $n); - } - - /** - * Write all, i.e. as much as possible. - */ - public function writeAll(string $string) - { - return $this->write($string, \strlen($string)); - } - - /** - * Truncate a file to a given length. - */ - public function truncate(int $size): bool - { - return \ftruncate($this->getStream(), $size); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/FileRead.php b/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/FileRead.php deleted file mode 100644 index f737ba5d..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/FileRead.php +++ /dev/null @@ -1,177 +0,0 @@ -getMode(), $createModes)) { - throw new FileException('Open mode are not supported; given %d. Only %s are supported.', 0, [$this->getMode(), \implode(', ', $createModes)]); - } - - \preg_match('#^(\w+)://#', $streamName, $match); - - if (((isset($match[1]) && $match[1] === 'file') || !isset($match[1])) && - !\file_exists($streamName)) { - throw new FileDoesNotExistException('File %s does not exist.', 1, $streamName); - } - - $out = parent::_open($streamName, $context); - - return $out; - } - - /** - * Test for end-of-file. - */ - public function eof(): bool - { - return \feof($this->getStream()); - } - - /** - * Read n characters. - */ - public function read(int $length) - { - if (0 > $length) { - throw new FileException('Length must be greater than 0, given %d.', 2, $length); - } - - return \fread($this->getStream(), $length); - } - - /** - * Alias of $this->read(). - */ - public function readString(int $length) - { - return $this->read($length); - } - - /** - * Read a character. - */ - public function readCharacter() - { - return \fgetc($this->getStream()); - } - - /** - * Read a boolean. - */ - public function readBoolean() - { - return (bool) $this->read(1); - } - - /** - * Read an integer. - */ - public function readInteger(int $length = 1) - { - return (int) $this->read($length); - } - - /** - * Read a float. - */ - public function readFloat(int $length = 1) - { - return (float) $this->read($length); - } - - /** - * Read an array. - * Alias of the $this->scanf() method. - */ - public function readArray(?string $format = null) - { - return $this->scanf($format); - } - - /** - * Read a line. - */ - public function readLine() - { - return \fgets($this->getStream()); - } - - /** - * Read all, i.e. read as much as possible. - */ - public function readAll(int $offset = 0) - { - return \stream_get_contents($this->getStream(), -1, $offset); - } - - /** - * Parse input from a stream according to a format. - */ - public function scanf(string $format): array - { - return \fscanf($this->getStream(), $format); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/FileReadWrite.php b/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/FileReadWrite.php deleted file mode 100644 index d97aa174..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/FileReadWrite.php +++ /dev/null @@ -1,279 +0,0 @@ -getMode(), $createModes)) { - throw new FileException('Open mode are not supported; given %d. Only %s are supported.', 0, [$this->getMode(), \implode(', ', $createModes)]); - } - - \preg_match('#^(\w+)://#', $streamName, $match); - - if (((isset($match[1]) && $match[1] === 'file') || !isset($match[1])) && - !\file_exists($streamName) && - parent::MODE_READ_WRITE === $this->getMode()) { - throw new FileDoesNotExistException('File %s does not exist.', 1, $streamName); - } - - $out = parent::_open($streamName, $context); - - return $out; - } - - /** - * Test for end-of-file. - */ - public function eof(): bool - { - return \feof($this->getStream()); - } - - /** - * Read n characters. - */ - public function read(int $length) - { - if (0 > $length) { - throw new FileException('Length must be greater than 0, given %d.', 2, $length); - } - - return \fread($this->getStream(), $length); - } - - /** - * Alias of $this->read(). - */ - public function readString(int $length) - { - return $this->read($length); - } - - /** - * Read a character. - */ - public function readCharacter() - { - return \fgetc($this->getStream()); - } - - /** - * Read a boolean. - */ - public function readBoolean() - { - return (bool) $this->read(1); - } - - /** - * Read an integer. - */ - public function readInteger(int $length = 1) - { - return (int) $this->read($length); - } - - /** - * Read a float. - */ - public function readFloat(int $length = 1) - { - return (float) $this->read($length); - } - - /** - * Read an array. - * Alias of the $this->scanf() method. - */ - public function readArray(?string $format = null) - { - return $this->scanf($format); - } - - /** - * Read a line. - */ - public function readLine() - { - return \fgets($this->getStream()); - } - - /** - * Read all, i.e. read as much as possible. - */ - public function readAll(int $offset = 0) - { - return \stream_get_contents($this->getStream(), -1, $offset); - } - - /** - * Parse input from a stream according to a format. - */ - public function scanf(string $format): array - { - return \fscanf($this->getStream(), $format); - } - - /** - * Write n characters. - */ - public function write(string $string, int $length) - { - if (0 > $length) { - throw new FileException('Length must be greater than 0, given %d.', 3, $length); - } - - return \fwrite($this->getStream(), $string, $length); - } - - /** - * Write a string. - */ - public function writeString(string $string) - { - $string = (string) $string; - - return $this->write($string, \strlen($string)); - } - - /** - * Write a character. - */ - public function writeCharacter(string $char) - { - return $this->write((string) $char[0], 1); - } - - /** - * Write a boolean. - */ - public function writeBoolean(bool $boolean) - { - return $this->write((string) (bool) $boolean, 1); - } - - /** - * Write an integer. - */ - public function writeInteger(int $integer) - { - $integer = (string) (int) $integer; - - return $this->write($integer, \strlen($integer)); - } - - /** - * Write a float. - */ - public function writeFloat(float $float) - { - $float = (string) (float) $float; - - return $this->write($float, \strlen($float)); - } - - /** - * Write an array. - */ - public function writeArray(array $array) - { - $array = \var_export($array, true); - - return $this->write($array, \strlen($array)); - } - - /** - * Write a line. - */ - public function writeLine(string $line) - { - if (false === $n = \strpos($line, "\n")) { - return $this->write($line."\n", \strlen($line) + 1); - } - - ++$n; - - return $this->write(\substr($line, 0, $n), $n); - } - - /** - * Write all, i.e. as much as possible. - */ - public function writeAll(string $string) - { - return $this->write($string, \strlen($string)); - } - - /** - * Truncate a file to a given length. - */ - public function truncate(int $size): bool - { - return \ftruncate($this->getStream(), $size); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/IteratorFileSystem.php b/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/IteratorFileSystem.php deleted file mode 100644 index 2ed84315..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/IteratorFileSystem.php +++ /dev/null @@ -1,86 +0,0 @@ -_splFileInfoClass = $splFileInfoClass; - - if (null === $flags) { - parent::__construct($path); - } else { - parent::__construct($path, $flags); - } - - return; - } - - /** - * Current. - * Please, see \FileSystemIterator::current() method. - */ - #[\ReturnTypeWillChange] - public function current() - { - $out = parent::current(); - - if (null !== $this->_splFileInfoClass && - $out instanceof \SplFileInfo) { - $out->setInfoClass($this->_splFileInfoClass); - $out = $out->getFileInfo(); - } - - return $out; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/IteratorRecursiveDirectory.php b/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/IteratorRecursiveDirectory.php deleted file mode 100644 index 80fd02ac..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/IteratorRecursiveDirectory.php +++ /dev/null @@ -1,126 +0,0 @@ -_relativePath = $path; - $this->setSplFileInfoClass($splFileInfoClass); - - return; - } - - /** - * Current. - * Please, see \RecursiveDirectoryIterator::current() method. - */ - #[\ReturnTypeWillChange] - public function current() - { - $out = parent::current(); - - if (null !== $this->_splFileInfoClass && - $out instanceof \SplFileInfo) { - $out->setInfoClass($this->_splFileInfoClass); - $out = $out->getFileInfo(); - - if ($out instanceof IteratorSplFileInfo) { - $out->setRelativePath($this->getRelativePath()); - } - } - - return $out; - } - - /** - * Get children. - * Please, see \RecursiveDirectoryIterator::getChildren() method. - */ - #[\ReturnTypeWillChange] - public function getChildren() - { - $out = parent::getChildren(); - $out->_relativePath = $this->getRelativePath(); - $out->setSplFileInfoClass($this->_splFileInfoClass); - - return $out; - } - - /** - * Set SplFileInfo classname. - */ - public function setSplFileInfoClass($splFileInfoClass) - { - $this->_splFileInfoClass = $splFileInfoClass; - } - - /** - * Get relative path (if given). - */ - public function getRelativePath(): string - { - return $this->_relativePath; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/IteratorSplFileInfo.php b/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/IteratorSplFileInfo.php deleted file mode 100644 index 61fa0806..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/IteratorSplFileInfo.php +++ /dev/null @@ -1,122 +0,0 @@ -getMTime()) { - $this->_hash = \md5($this->getPathname().$mtime); - } - - $this->_relativePath = $relativePath; - - return; - } - - /** - * Get the hash. - */ - public function getHash(): string - { - return $this->_hash; - } - - /** - * Get the MTime. - */ - public function getMTime(): int - { - try { - return parent::getMTime(); - } catch (\RuntimeException $e) { - return -1; - } - } - - /** - * Set relative path. - */ - public function setRelativePath(string $relativePath) - { - $old = $this->_relativePath; - $this->_relativePath = $relativePath; - - return $old; - } - - /** - * Get relative path (if given). - */ - public function getRelativePath() - { - return $this->_relativePath; - } - - /** - * Get relative pathname (if possible). - */ - public function getRelativePathname(): string - { - if (null === $relative = $this->getRelativePath()) { - return $this->getPathname(); - } - - return \substr($this->getPathname(), \strlen($relative)); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/ProtocolNode.php b/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/ProtocolNode.php deleted file mode 100644 index 4a82cf49..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/ProtocolNode.php +++ /dev/null @@ -1,323 +0,0 @@ -_name = $name; - } - - if (null !== $reach) { - $this->_reach = $reach; - } - - foreach ($children as $child) { - $this[] = $child; - } - - return; - } - - /** - * Add a node. - */ - #[\ReturnTypeWillChange] - public function offsetSet($name, $node) - { - if (!($node instanceof self)) { - throw new ProtocolException('Protocol node must extend %s.', 0, __CLASS__); - } - - if (empty($name)) { - $name = $node->getName(); - } - - if (empty($name)) { - throw new ProtocolException('Cannot add a node to the `hoa://` protocol without a name.', 1); - } - - $this->_children[$name] = $node; - } - - /** - * Get a specific node. - */ - public function offsetGet($name): self - { - if (!isset($this[$name])) { - throw new ProtocolException('Node %s does not exist.', 2, $name); - } - - return $this->_children[$name]; - } - - /** - * Check if a node exists. - */ - public function offsetExists($name): bool - { - return true === \array_key_exists($name, $this->_children); - } - - /** - * Remove a node. - */ - #[\ReturnTypeWillChange] - public function offsetUnset($name) - { - unset($this->_children[$name]); - } - - /** - * Resolve a path, i.e. iterate the nodes tree and reach the queue of - * the path. - */ - protected function _resolve(string $path, &$accumulator, ?string $id = null) - { - if (\substr($path, 0, 6) === 'hoa://') { - $path = \substr($path, 6); - } - - if (empty($path)) { - return null; - } - - if (null === $accumulator) { - $accumulator = []; - $posId = \strpos($path, '#'); - - if (false !== $posId) { - $id = \substr($path, $posId + 1); - $path = \substr($path, 0, $posId); - } else { - $id = null; - } - } - - $path = \trim($path, '/'); - $pos = \strpos($path, '/'); - - if (false !== $pos) { - $next = \substr($path, 0, $pos); - } else { - $next = $path; - } - - if (isset($this[$next])) { - if (false === $pos) { - if (null === $id) { - $this->_resolveChoice($this[$next]->reach(), $accumulator); - - return true; - } - - $accumulator = null; - - return $this[$next]->reachId($id); - } - - $tnext = $this[$next]; - $this->_resolveChoice($tnext->reach(), $accumulator); - - return $tnext->_resolve(\substr($path, $pos + 1), $accumulator, $id); - } - - $this->_resolveChoice($this->reach($path), $accumulator); - - return true; - } - - /** - * Resolve choices, i.e. a reach value has a “;”. - */ - protected function _resolveChoice($reach, &$accumulator) - { - if (null === $reach) { - $reach = ''; - } - - if (empty($accumulator)) { - $accumulator = \explode(';', $reach); - - return; - } - - if (false === \strpos($reach, ';')) { - if (false !== $pos = \strrpos($reach, "\r")) { - $reach = \substr($reach, $pos + 1); - - foreach ($accumulator as &$entry) { - $entry = null; - } - } - - foreach ($accumulator as &$entry) { - $entry .= $reach; - } - - return; - } - - $choices = \explode(';', $reach); - $ref = $accumulator; - $accumulator = []; - - foreach ($choices as $choice) { - if (false !== $pos = \strrpos($choice, "\r")) { - $choice = \substr($choice, $pos + 1); - - foreach ($ref as $entry) { - $accumulator[] = $choice; - } - } else { - foreach ($ref as $entry) { - $accumulator[] = $entry.$choice; - } - } - } - - unset($ref); - - return; - } - - /** - * Queue of the node. - * Generic one. Must be overrided in children classes. - */ - public function reach(?string $queue = null) - { - return empty($queue) ? $this->_reach : $queue; - } - - /** - * ID of the component. - * Generic one. Should be overrided in children classes. - */ - public function reachId(string $id) - { - throw new ProtocolException('The node %s has no ID support (tried to reach #%s).', 4, [$this->getName(), $id]); - } - - /** - * Set a new reach value. - */ - public function setReach(string $reach) - { - $old = $this->_reach; - $this->_reach = $reach; - - return $old; - } - - /** - * Get node's name. - */ - public function getName() - { - return $this->_name; - } - - /** - * Get reach's root. - */ - protected function getReach() - { - return $this->_reach; - } - - /** - * Get an iterator. - */ - public function getIterator(): \ArrayIterator - { - return new \ArrayIterator($this->_children); - } - - /** - * Get root the protocol. - */ - public static function getRoot(): Protocol - { - return Protocol::getInstance(); - } - - /** - * Print a tree of component. - */ - public function __toString(): string - { - static $i = 0; - - $out = \str_repeat(' ', $i).$this->getName()."\n"; - - foreach ($this as $node) { - ++$i; - $out .= $node; - --$i; - } - - return $out; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/ProtocolNodeLibrary.php b/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/ProtocolNodeLibrary.php deleted file mode 100644 index 023f0300..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/ProtocolNodeLibrary.php +++ /dev/null @@ -1,90 +0,0 @@ -_reach) as $part) { - $out[] = "\r".$part.\strtolower($head).$queue; - } - - $out[] = "\r".\dirname(__DIR__, 5).$queue; - - return \implode(';', $out); - } - - $out = []; - - foreach (\explode(';', $this->_reach) as $part) { - $pos = \strrpos(\rtrim($part, \DIRECTORY_SEPARATOR), \DIRECTORY_SEPARATOR) + 1; - $head = \substr($part, 0, $pos); - $tail = \substr($part, $pos); - $out[] = $head.\strtolower($tail); - } - - $this->_reach = \implode(';', $out); - - return parent::reach($queue); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/Readline.php b/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/Readline.php deleted file mode 100644 index 614ce52a..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/Readline.php +++ /dev/null @@ -1,1032 +0,0 @@ -_mapping["\033[A"] = [$this, '_bindArrowUp']; - $this->_mapping["\033[B"] = [$this, '_bindArrowDown']; - $this->_mapping["\033[C"] = [$this, '_bindArrowRight']; - $this->_mapping["\033[D"] = [$this, '_bindArrowLeft']; - $this->_mapping["\001"] = [$this, '_bindControlA']; - $this->_mapping["\002"] = [$this, '_bindControlB']; - $this->_mapping["\005"] = [$this, '_bindControlE']; - $this->_mapping["\006"] = [$this, '_bindControlF']; - $this->_mapping["\010"] = - $this->_mapping["\177"] = [$this, '_bindBackspace']; - $this->_mapping["\027"] = [$this, '_bindControlW']; - $this->_mapping["\n"] = [$this, '_bindNewline']; - $this->_mapping["\t"] = [$this, '_bindTab']; - - return; - } - - /** - * Read a line from the input. - */ - public function readLine(?string $prefix = null) - { - $input = Console::getInput(); - - if (true === $input->eof()) { - return false; - } - - $direct = Console::isDirect($input->getStream()->getStream()); - $output = Console::getOutput(); - - if (false === $direct || \defined('PHP_WINDOWS_VERSION_PLATFORM')) { - $out = $input->readLine(); - - if (false === $out) { - return false; - } - - $out = \substr($out, 0, -1); - - if (true === $direct) { - $output->writeAll($prefix); - } else { - $output->writeAll($prefix.$out."\n"); - } - - return $out; - } - - $this->resetLine(); - $this->setPrefix($prefix); - $read = [$input->getStream()->getStream()]; - $write = $except = []; - $output->writeAll($prefix); - - while (true) { - @\stream_select($read, $write, $except, 30, 0); - - if (empty($read)) { - $read = [$input->getStream()->getStream()]; - - continue; - } - - $char = $this->_read(); - $this->_buffer = $char; - $return = $this->_readLine($char); - - if (0 === ($return & self::STATE_NO_ECHO)) { - $output->writeAll($this->_buffer); - } - - if (0 !== ($return & self::STATE_BREAK)) { - break; - } - } - - return $this->getLine(); - } - - /** - * Readline core. - */ - public function _readLine(string $char) - { - if (isset($this->_mapping[$char]) && - \is_callable($this->_mapping[$char])) { - $mapping = $this->_mapping[$char]; - - return $mapping($this); - } - - if (isset($this->_mapping[$char])) { - $this->_buffer = $this->_mapping[$char]; - } elseif (false === Ustring::isCharPrintable($char)) { - ConsoleCursor::bip(); - - return static::STATE_CONTINUE | static::STATE_NO_ECHO; - } - - if ($this->getLineLength() === $this->getLineCurrent()) { - $this->appendLine($this->_buffer); - - return static::STATE_CONTINUE; - } - - $this->insertLine($this->_buffer); - $tail = \mb_substr( - $this->getLine(), - $this->getLineCurrent() - 1 - ); - $this->_buffer = "\033[K".$tail.\str_repeat( - "\033[D", - \mb_strlen($tail) - 1 - ); - - return static::STATE_CONTINUE; - } - - /** - * Add mappings. - */ - public function addMappings(array $mappings) - { - foreach ($mappings as $key => $mapping) { - $this->addMapping($key, $mapping); - } - } - - /** - * Add a mapping. - * Supported key: - * • \e[… for \033[…; - * • \C-… for Ctrl-…; - * • abc for a simple mapping. - * A mapping is a callable that has only one parameter of type - * Hoa\Console\Readline and that returns a self::STATE_* constant. - */ - public function addMapping(string $key, $mapping) - { - if ('\e[' === \substr($key, 0, 3)) { - $this->_mapping["\033[".\substr($key, 3)] = $mapping; - } elseif ('\C-' === \substr($key, 0, 3)) { - $_key = \ord(\strtolower(\substr($key, 3))) - 96; - $this->_mapping[\chr($_key)] = $mapping; - } else { - $this->_mapping[$key] = $mapping; - } - } - - /** - * Add an entry in the history. - */ - public function addHistory(?string $line = null) - { - if (empty($line)) { - return; - } - - $this->_history[] = $line; - $this->_historyCurrent = $this->_historySize++; - } - - /** - * Clear history. - */ - public function clearHistory() - { - unset($this->_history); - $this->_history = []; - $this->_historyCurrent = 0; - $this->_historySize = 1; - } - - /** - * Get an entry in the history. - */ - public function getHistory(?int $i = null) - { - if (null === $i) { - $i = $this->_historyCurrent; - } - - if (!isset($this->_history[$i])) { - return null; - } - - return $this->_history[$i]; - } - - /** - * Go backward in the history. - */ - public function previousHistory() - { - if (0 >= $this->_historyCurrent) { - return $this->getHistory(0); - } - - return $this->getHistory($this->_historyCurrent--); - } - - /** - * Go forward in the history. - */ - public function nextHistory() - { - if ($this->_historyCurrent + 1 >= $this->_historySize) { - return $this->getLine(); - } - - return $this->getHistory(++$this->_historyCurrent); - } - - /** - * Get current line. - */ - public function getLine() - { - return $this->_line; - } - - /** - * Append to current line. - */ - public function appendLine(string $append) - { - $this->_line .= $append; - $this->_lineLength = \mb_strlen($this->_line); - $this->_lineCurrent = $this->_lineLength; - } - - /** - * Insert into current line at the current seek. - */ - public function insertLine(string $insert) - { - if ($this->_lineLength === $this->_lineCurrent) { - return $this->appendLine($insert); - } - - $this->_line = \mb_substr($this->_line, 0, $this->_lineCurrent). - $insert. - \mb_substr($this->_line, $this->_lineCurrent); - $this->_lineLength = \mb_strlen($this->_line); - $this->_lineCurrent += \mb_strlen($insert); - - return; - } - - /** - * Reset current line. - */ - protected function resetLine() - { - $this->_line = null; - $this->_lineCurrent = 0; - $this->_lineLength = 0; - } - - /** - * Get current line seek. - */ - public function getLineCurrent(): int - { - return $this->_lineCurrent; - } - - /** - * Get current line length. - * - * @return int - */ - public function getLineLength(): int - { - return $this->_lineLength; - } - - /** - * Set prefix. - */ - public function setPrefix(string $prefix) - { - $this->_prefix = $prefix; - } - - /** - * Get prefix. - */ - public function getPrefix() - { - return $this->_prefix; - } - - /** - * Get buffer. Not for user. - */ - public function getBuffer() - { - return $this->_buffer; - } - - /** - * Set an autocompleter. - */ - public function setAutocompleter(Autocompleter $autocompleter) - { - $old = $this->_autocompleter; - $this->_autocompleter = $autocompleter; - - return $old; - } - - /** - * Get the autocompleter. - * - * @return ?Autocompleter - */ - public function getAutocompleter() - { - return $this->_autocompleter; - } - - /** - * Read on input. Not for user. - */ - public function _read(int $length = 512): string - { - return Console::getInput()->read($length); - } - - /** - * Set current line. Not for user. - */ - public function setLine(string $line) - { - $this->_line = $line; - $this->_lineLength = \mb_strlen($this->_line ?: ''); - $this->_lineCurrent = $this->_lineLength; - } - - /** - * Set current line seek. Not for user. - */ - public function setLineCurrent(int $current) - { - $this->_lineCurrent = $current; - } - - /** - * Set line length. Not for user. - */ - public function setLineLength(int $length) - { - $this->_lineLength = $length; - } - - /** - * Set buffer. Not for user. - */ - public function setBuffer(string $buffer) - { - $this->_buffer = $buffer; - } - - /** - * Up arrow binding. - * Go backward in the history. - */ - public function _bindArrowUp(self $self): int - { - if (0 === (static::STATE_CONTINUE & static::STATE_NO_ECHO)) { - ConsoleCursor::clear('↔'); - Console::getOutput()->writeAll($self->getPrefix()); - } - $buffer = $self->previousHistory() ?? ''; - $self->setBuffer($buffer); - $self->setLine($buffer); - - return static::STATE_CONTINUE; - } - - /** - * Down arrow binding. - * Go forward in the history. - */ - public function _bindArrowDown(self $self): int - { - if (0 === (static::STATE_CONTINUE & static::STATE_NO_ECHO)) { - ConsoleCursor::clear('↔'); - Console::getOutput()->writeAll($self->getPrefix()); - } - - $self->setBuffer($buffer = $self->nextHistory()); - $self->setLine($buffer); - - return static::STATE_CONTINUE; - } - - /** - * Right arrow binding. - * Move cursor to the right. - */ - public function _bindArrowRight(self $self): int - { - if ($self->getLineLength() > $self->getLineCurrent()) { - if (0 === (static::STATE_CONTINUE & static::STATE_NO_ECHO)) { - ConsoleCursor::move('→'); - } - - $self->setLineCurrent($self->getLineCurrent() + 1); - } - - $self->setBuffer(''); - - return static::STATE_CONTINUE; - } - - /** - * Left arrow binding. - * Move cursor to the left. - */ - public function _bindArrowLeft(self $self): int - { - if (0 < $self->getLineCurrent()) { - if (0 === (static::STATE_CONTINUE & static::STATE_NO_ECHO)) { - ConsoleCursor::move('←'); - } - - $self->setLineCurrent($self->getLineCurrent() - 1); - } - - $self->setBuffer(''); - - return static::STATE_CONTINUE; - } - - /** - * Backspace and Control-H binding. - * Delete the first character at the right of the cursor. - */ - public function _bindBackspace(self $self): int - { - $buffer = ''; - - if (0 < $self->getLineCurrent()) { - if (0 === (static::STATE_CONTINUE & static::STATE_NO_ECHO)) { - ConsoleCursor::move('←'); - ConsoleCursor::clear('→'); - } - - if ($self->getLineLength() === $current = $self->getLineCurrent()) { - $self->setLine(\mb_substr($self->getLine(), 0, -1)); - } else { - $line = $self->getLine(); - $current = $self->getLineCurrent(); - $tail = \mb_substr($line, $current); - $buffer = $tail.\str_repeat("\033[D", \mb_strlen($tail)); - $self->setLine(\mb_substr($line, 0, $current - 1).$tail); - $self->setLineCurrent($current - 1); - } - } - - $self->setBuffer($buffer); - - return static::STATE_CONTINUE; - } - - /** - * Control-A binding. - * Move cursor to beginning of line. - */ - public function _bindControlA(self $self): int - { - for ($i = $self->getLineCurrent() - 1; 0 <= $i; --$i) { - $self->_bindArrowLeft($self); - } - - return static::STATE_CONTINUE; - } - - /** - * Control-B binding. - * Move cursor backward one word. - */ - public function _bindControlB(self $self): int - { - $current = $self->getLineCurrent(); - - if (0 === $current) { - return static::STATE_CONTINUE; - } - - $words = \preg_split( - '#\b#u', - $self->getLine(), - -1, - \PREG_SPLIT_OFFSET_CAPTURE | \PREG_SPLIT_NO_EMPTY - ); - - for ( - $i = 0, $max = \count($words) - 1; - $i < $max && $words[$i + 1][1] < $current; - ++$i - ) { - } - - for ($j = $words[$i][1] + 1; $current >= $j; ++$j) { - $self->_bindArrowLeft($self); - } - - return static::STATE_CONTINUE; - } - - /** - * Control-E binding. - * Move cursor to end of line. - */ - public function _bindControlE(self $self): int - { - for ( - $i = $self->getLineCurrent(), $max = $self->getLineLength(); - $i < $max; - ++$i - ) { - $self->_bindArrowRight($self); - } - - return static::STATE_CONTINUE; - } - - /** - * Control-F binding. - * Move cursor forward one word. - */ - public function _bindControlF(self $self): int - { - $current = $self->getLineCurrent(); - - if ($self->getLineLength() === $current) { - return static::STATE_CONTINUE; - } - - $words = \preg_split( - '#\b#u', - $self->getLine(), - -1, - \PREG_SPLIT_OFFSET_CAPTURE | \PREG_SPLIT_NO_EMPTY - ); - - for ( - $i = 0, $max = \count($words) - 1; - $i < $max && $words[$i][1] < $current; - ++$i - ) { - } - - if (!isset($words[$i + 1])) { - $words[$i + 1] = [1 => $self->getLineLength()]; - } - - for ($j = $words[$i + 1][1]; $j > $current; --$j) { - $self->_bindArrowRight($self); - } - - return static::STATE_CONTINUE; - } - - /** - * Control-W binding. - * Delete first backward word. - */ - public function _bindControlW(self $self): int - { - $current = $self->getLineCurrent(); - - if (0 === $current) { - return static::STATE_CONTINUE; - } - - $words = \preg_split( - '#\b#u', - $self->getLine(), - -1, - \PREG_SPLIT_OFFSET_CAPTURE | \PREG_SPLIT_NO_EMPTY - ); - - for ( - $i = 0, $max = \count($words) - 1; - $i < $max && $words[$i + 1][1] < $current; - ++$i - ) { - } - - for ($j = $words[$i][1] + 1; $current >= $j; ++$j) { - $self->_bindBackspace($self); - } - - return static::STATE_CONTINUE; - } - - /** - * Newline binding. - */ - public function _bindNewline(self $self): int - { - $self->addHistory($self->getLine()); - - return static::STATE_BREAK; - } - - /** - * Tab binding. - */ - public function _bindTab(self $self): int - { - $output = Console::getOutput(); - $autocompleter = $self->getAutocompleter(); - $state = static::STATE_CONTINUE | static::STATE_NO_ECHO; - - if (null === $autocompleter) { - return $state; - } - - $current = $self->getLineCurrent(); - $line = $self->getLine(); - - if (0 === $current) { - return $state; - } - - $matches = \preg_match_all( - '#'.$autocompleter->getWordDefinition().'$#u', - \mb_substr($line, 0, $current), - $words - ); - - if (0 === $matches) { - return $state; - } - - $word = $words[0][0]; - - if ('' === \trim($word)) { - return $state; - } - - $solution = $autocompleter->complete($word); - $length = \mb_strlen($word); - - if (null === $solution) { - return $state; - } - - if (\is_array($solution)) { - $_solution = $solution; - $count = \count($_solution) - 1; - $cWidth = 0; - $window = ConsoleWindow::getSize(); - $wWidth = $window['x']; - $cursor = ConsoleCursor::getPosition(); - - \array_walk($_solution, function (&$value) use (&$cWidth) { - $handle = \mb_strlen($value); - - if ($handle > $cWidth) { - $cWidth = $handle; - } - - return; - }); - \array_walk($_solution, function (&$value) use (&$cWidth) { - $handle = \mb_strlen($value); - - if ($handle >= $cWidth) { - return; - } - - $value .= \str_repeat(' ', $cWidth - $handle); - - return; - }); - - $mColumns = (int) \floor($wWidth / ($cWidth + 2)); - $mLines = (int) \ceil(($count + 1) / $mColumns); - --$mColumns; - $i = 0; - - if (0 > $window['y'] - $cursor['y'] - $mLines) { - ConsoleWindow::scroll('↑', $mLines); - ConsoleCursor::move('↑', $mLines); - } - - ConsoleCursor::save(); - ConsoleCursor::hide(); - ConsoleCursor::move('↓ LEFT'); - ConsoleCursor::clear('↓'); - - foreach ($_solution as $j => $s) { - $output->writeAll("\033[0m".$s."\033[0m"); - - if ($i++ < $mColumns) { - $output->writeAll(' '); - } else { - $i = 0; - - if (isset($_solution[$j + 1])) { - $output->writeAll("\n"); - } - } - } - - ConsoleCursor::restore(); - ConsoleCursor::show(); - - ++$mColumns; - $input = Console::getInput(); - $read = [$input->getStream()->getStream()]; - $write = $except = []; - $mColumn = -1; - $mLine = -1; - $coord = -1; - $unselect = function () use ( - &$mColumn, - &$mLine, - &$coord, - &$_solution, - &$cWidth, - $output - ) { - ConsoleCursor::save(); - ConsoleCursor::hide(); - ConsoleCursor::move('↓ LEFT'); - ConsoleCursor::move('→', $mColumn * ($cWidth + 2)); - ConsoleCursor::move('↓', $mLine); - $output->writeAll("\033[0m".$_solution[$coord]."\033[0m"); - ConsoleCursor::restore(); - ConsoleCursor::show(); - - return; - }; - $select = function () use ( - &$mColumn, - &$mLine, - &$coord, - &$_solution, - &$cWidth, - $output - ) { - ConsoleCursor::save(); - ConsoleCursor::hide(); - ConsoleCursor::move('↓ LEFT'); - ConsoleCursor::move('→', $mColumn * ($cWidth + 2)); - ConsoleCursor::move('↓', $mLine); - $output->writeAll("\033[7m".$_solution[$coord]."\033[0m"); - ConsoleCursor::restore(); - ConsoleCursor::show(); - - return; - }; - $init = function () use ( - &$mColumn, - &$mLine, - &$coord, - &$select - ) { - $mColumn = 0; - $mLine = 0; - $coord = 0; - $select(); - - return; - }; - - while (true) { - @\stream_select($read, $write, $except, 30, 0); - - if (empty($read)) { - $read = [$input->getStream()->getStream()]; - - continue; - } - - switch ($char = $self->_read()) { - case "\033[A": - if (-1 === $mColumn && -1 === $mLine) { - $init(); - - break; - } - - $unselect(); - $coord = \max(0, $coord - $mColumns); - $mLine = (int) \floor($coord / $mColumns); - $mColumn = $coord % $mColumns; - $select(); - - break; - - case "\033[B": - if (-1 === $mColumn && -1 === $mLine) { - $init(); - - break; - } - - $unselect(); - $coord = \min($count, $coord + $mColumns); - $mLine = (int) \floor($coord / $mColumns); - $mColumn = $coord % $mColumns; - $select(); - - break; - - case "\t": - case "\033[C": - if (-1 === $mColumn && -1 === $mLine) { - $init(); - - break; - } - - $unselect(); - $coord = \min($count, $coord + 1); - $mLine = (int) \floor($coord / $mColumns); - $mColumn = $coord % $mColumns; - $select(); - - break; - - case "\033[D": - if (-1 === $mColumn && -1 === $mLine) { - $init(); - - break; - } - - $unselect(); - $coord = \max(0, $coord - 1); - $mLine = (int) \floor($coord / $mColumns); - $mColumn = $coord % $mColumns; - $select(); - - break; - - case "\n": - if (-1 !== $mColumn && -1 !== $mLine) { - $tail = \mb_substr($line, $current); - $current -= $length; - $self->setLine( - \mb_substr($line, 0, $current). - $solution[$coord]. - $tail - ); - $self->setLineCurrent( - $current + \mb_strlen($solution[$coord]) - ); - - ConsoleCursor::move('←', $length); - $output->writeAll($solution[$coord]); - ConsoleCursor::clear('→'); - $output->writeAll($tail); - ConsoleCursor::move('←', \mb_strlen($tail)); - } - - // no break - default: - $mColumn = -1; - $mLine = -1; - $coord = -1; - ConsoleCursor::save(); - ConsoleCursor::move('↓ LEFT'); - ConsoleCursor::clear('↓'); - ConsoleCursor::restore(); - - if ("\033" !== $char && "\n" !== $char) { - $self->setBuffer($char); - - return $self->_readLine($char); - } - - break 2; - } - } - - return $state; - } - - $tail = \mb_substr($line, $current); - $current -= $length; - $self->setLine( - \mb_substr($line, 0, $current). - $solution. - $tail - ); - $self->setLineCurrent( - $current + \mb_strlen($solution) - ); - - ConsoleCursor::move('←', $length); - $output->writeAll($solution); - ConsoleCursor::clear('→'); - $output->writeAll($tail); - ConsoleCursor::move('←', \mb_strlen($tail)); - - return $state; - } -} - -/* - * Advanced interaction. - */ -Console::advancedInteraction(); diff --git a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/Stream.php b/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/Stream.php deleted file mode 100644 index 7a7bd8e4..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/Stream.php +++ /dev/null @@ -1,571 +0,0 @@ -_open()` method. Please, see the `self::_getStream()` method. - */ - public function __construct(string $streamName, ?string $context = null, bool $wait = false) - { - $this->_streamName = $streamName; - $this->_context = $context; - $this->_hasBeenDeferred = $wait; - $this->setListener( - new EventListener( - $this, - [ - 'authrequire', - 'authresult', - 'complete', - 'connect', - 'failure', - 'mimetype', - 'progress', - 'redirect', - 'resolve', - 'size', - ] - ) - ); - - if (true === $wait) { - return; - } - - $this->open(); - - return; - } - - /** - * Get a stream in the register. - * If the stream does not exist, try to open it by calling the - * $handler->_open() method. - */ - private static function &_getStream( - string $streamName, - self $handler, - ?string $context = null - ): array { - $name = \md5($streamName); - - if (null !== $context) { - if (false === StreamContext::contextExists($context)) { - throw new StreamException('Context %s was not previously declared, cannot retrieve '.'this context.', 0, $context); - } - - $context = StreamContext::getInstance($context); - } - - if (!isset(self::$_register[$name])) { - self::$_register[$name] = [ - self::NAME => $streamName, - self::HANDLER => $handler, - self::RESOURCE => $handler->_open($streamName, $context), - self::CONTEXT => $context, - ]; - Event::register( - 'hoa://Event/Stream/'.$streamName, - $handler - ); - // Add :open-ready? - Event::register( - 'hoa://Event/Stream/'.$streamName.':close-before', - $handler - ); - } else { - $handler->_borrowing = true; - } - - if (null === self::$_register[$name][self::RESOURCE]) { - self::$_register[$name][self::RESOURCE] - = $handler->_open($streamName, $context); - } - - return self::$_register[$name]; - } - - /** - * Open the stream and return the associated resource. - * Note: This method is protected, but do not forget that it could be - * overloaded into a public context. - */ - abstract protected function &_open(string $streamName, ?StreamContext $context = null); - - /** - * Close the current stream. - * Note: this method is protected, but do not forget that it could be - * overloaded into a public context. - */ - abstract protected function _close(): bool; - - /** - * Open the stream. - */ - final public function open(): self - { - $context = $this->_context; - - if (true === $this->hasBeenDeferred()) { - if (null === $context) { - $handle = StreamContext::getInstance(\uniqid()); - $handle->setParameters([ - 'notification' => [$this, '_notify'], - ]); - $context = $handle->getId(); - } elseif (true === StreamContext::contextExists($context)) { - $handle = StreamContext::getInstance($context); - $parameters = $handle->getParameters(); - - if (!isset($parameters['notification'])) { - $handle->setParameters([ - 'notification' => [$this, '_notify'], - ]); - } - } - } - - $this->_bufferSize = self::DEFAULT_BUFFER_SIZE; - $this->_bucket = self::_getStream( - $this->_streamName, - $this, - $context - ); - - return $this; - } - - /** - * Close the current stream. - */ - final public function close() - { - $streamName = $this->getStreamName(); - - if (null === $streamName) { - return; - } - - $name = \md5($streamName); - - if (!isset(self::$_register[$name])) { - return; - } - - Event::notify( - 'hoa://Event/Stream/'.$streamName.':close-before', - $this, - new EventBucket() - ); - - if (false === $this->_close()) { - return; - } - - unset(self::$_register[$name]); - $this->_bucket[self::HANDLER] = null; - Event::unregister( - 'hoa://Event/Stream/'.$streamName - ); - Event::unregister( - 'hoa://Event/Stream/'.$streamName.':close-before' - ); - - return; - } - - /** - * Get the current stream name. - */ - public function getStreamName() - { - if (empty($this->_bucket)) { - return null; - } - - return $this->_bucket[self::NAME]; - } - - /** - * Get the current stream. - */ - public function getStream() - { - if (empty($this->_bucket)) { - return null; - } - - return $this->_bucket[self::RESOURCE]; - } - - /** - * Get the current stream context. - */ - public function getStreamContext() - { - if (empty($this->_bucket)) { - return null; - } - - return $this->_bucket[self::CONTEXT]; - } - - /** - * Get stream handler according to its name. - */ - public static function getStreamHandler(string $streamName) - { - $name = \md5($streamName); - - if (!isset(self::$_register[$name])) { - return null; - } - - return self::$_register[$name][self::HANDLER]; - } - - /** - * Set the current stream. Useful to manage a stack of streams (e.g. socket - * and select). Notice that it could be unsafe to use this method without - * taking time to think about it two minutes. Resource of type “Unknown” is - * considered as valid. - */ - public function _setStream($stream) - { - if (false === \is_resource($stream) && - ('resource' !== \gettype($stream) || - 'Unknown' !== \get_resource_type($stream))) { - throw new StreamException('Try to change the stream resource with an invalid one; '.'given %s.', 1, \gettype($stream)); - } - - $old = $this->_bucket[self::RESOURCE]; - $this->_bucket[self::RESOURCE] = $stream; - - return $old; - } - - /** - * Check if the stream is opened. - */ - public function isOpened(): bool - { - return \is_resource($this->getStream()); - } - - /** - * Set the timeout period. - */ - public function setStreamTimeout(int $seconds, int $microseconds = 0): bool - { - return \stream_set_timeout($this->getStream(), $seconds, $microseconds); - } - - /** - * Whether the opening of the stream has been deferred. - */ - protected function hasBeenDeferred() - { - return $this->_hasBeenDeferred; - } - - /** - * Check whether the connection has timed out or not. - * This is basically a shortcut of `getStreamMetaData` + the `timed_out` - * index, but the resulting code is more readable. - */ - public function hasTimedOut(): bool - { - $metaData = $this->getStreamMetaData(); - - return true === $metaData['timed_out']; - } - - /** - * Set blocking/non-blocking mode. - */ - public function setStreamBlocking(bool $mode): bool - { - return \stream_set_blocking($this->getStream(), $mode); - } - - /** - * Set stream buffer. - * Output using fwrite() (or similar function) is normally buffered at 8 Ko. - * This means that if there are two processes wanting to write to the same - * output stream, each is paused after 8 Ko of data to allow the other to - * write. - */ - public function setStreamBuffer(int $buffer): bool - { - // Zero means success. - $out = 0 === \stream_set_write_buffer($this->getStream(), $buffer); - - if (true === $out) { - $this->_bufferSize = $buffer; - } - - return $out; - } - - /** - * Disable stream buffering. - * Alias of $this->setBuffer(0). - */ - public function disableStreamBuffer(): bool - { - return $this->setStreamBuffer(0); - } - - /** - * Get stream buffer size. - */ - public function getStreamBufferSize(): int - { - return $this->_bufferSize; - } - - /** - * Get stream wrapper name. - */ - public function getStreamWrapperName(): string - { - if (false === $pos = \strpos($this->getStreamName(), '://')) { - return 'file'; - } - - return \substr($this->getStreamName(), 0, $pos); - } - - /** - * Get stream meta data. - */ - public function getStreamMetaData(): array - { - return \stream_get_meta_data($this->getStream()); - } - - /** - * Whether this stream is already opened by another handler. - */ - public function isBorrowing(): bool - { - return $this->_borrowing; - } - - /** - * Notification callback. - */ - public function _notify( - int $ncode, - int $severity, - $message, - $code, - $transferred, - $max - ) { - static $_map = [ - \STREAM_NOTIFY_AUTH_REQUIRED => 'authrequire', - \STREAM_NOTIFY_AUTH_RESULT => 'authresult', - \STREAM_NOTIFY_COMPLETED => 'complete', - \STREAM_NOTIFY_CONNECT => 'connect', - \STREAM_NOTIFY_FAILURE => 'failure', - \STREAM_NOTIFY_MIME_TYPE_IS => 'mimetype', - \STREAM_NOTIFY_PROGRESS => 'progress', - \STREAM_NOTIFY_REDIRECTED => 'redirect', - \STREAM_NOTIFY_RESOLVE => 'resolve', - \STREAM_NOTIFY_FILE_SIZE_IS => 'size', - ]; - - $this->getListener()->fire($_map[$ncode], new EventBucket([ - 'code' => $code, - 'severity' => $severity, - 'message' => $message, - 'transferred' => $transferred, - 'max' => $max, - ])); - } - - /** - * Call the $handler->close() method on each stream in the static stream - * register. - * This method does not check the return value of $handler->close(). Thus, - * if a stream is persistent, the $handler->close() should do anything. It - * is a very generic method. - */ - final public static function _Hoa_Stream() - { - foreach (self::$_register as $entry) { - $entry[self::HANDLER]->close(); - } - - return; - } - - /** - * Transform object to string. - */ - public function __toString(): string - { - return $this->getStreamName(); - } - - /** - * Close the stream when destructing. - */ - public function __destruct() - { - if (false === $this->isOpened()) { - return; - } - - $this->close(); - - return; - } -} - -/** - * Class \Hoa\Stream\_Protocol. - * - * The `hoa://Library/Stream` node. - * - * @license New BSD License - */ -class _Protocol extends ProtocolNode -{ - /** - * Component's name. - * - * @var string - */ - protected $_name = 'Stream'; - - /** - * ID of the component. - * - * @param string $id ID of the component - * - * @return mixed - */ - public function reachId(string $id) - { - return Stream::getStreamHandler($id); - } -} - -/* - * Shutdown method. - */ -\register_shutdown_function([Stream::class, '_Hoa_Stream']); - -/** - * Add the `hoa://Library/Stream` node. Should be use to reach/get an entry - * in the stream register. - */ -$protocol = Protocol::getInstance(); -$protocol['Library'][] = new _Protocol(); diff --git a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/StreamBufferable.php b/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/StreamBufferable.php deleted file mode 100644 index 6a0c363e..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Readline/Hoa/StreamBufferable.php +++ /dev/null @@ -1,73 +0,0 @@ -historyFile === false) { - return []; - } - - $history = \file_get_contents($this->historyFile); - if (!$history) { - return []; - } - - // libedit doesn't seem to support non-unix line separators. - $history = \explode("\n", $history); - - // remove history signature if it exists - if ($history[0] === '_HiStOrY_V2_') { - \array_shift($history); - } - - // decode the line - $history = \array_map([$this, 'parseHistoryLine'], $history); - - // filter empty lines & comments - return \array_values(\array_filter($history)); - } - - /** - * {@inheritdoc} - */ - public function writeHistory(): bool - { - $res = parent::writeHistory(); - - // Libedit apparently refuses to save history if the history file is not - // owned by the user, even if it is writable. Warn when this happens. - // - // See https://github.com/bobthecow/psysh/issues/552 - if ($res === false && !$this->hasWarnedOwnership) { - if (\is_file($this->historyFile) && \is_writable($this->historyFile)) { - $this->hasWarnedOwnership = true; - $msg = \sprintf('Error writing history file, check file ownership: %s', $this->historyFile); - \trigger_error($msg, \E_USER_NOTICE); - } - } - - return $res; - } - - /** - * From GNUReadline (readline/histfile.c & readline/histexpand.c): - * lines starting with "\0" are comments or timestamps; - * if "\0" is found in an entry, - * everything from it until the next line is a comment. - * - * @param string $line The history line to parse - * - * @return string|null - */ - protected function parseHistoryLine(string $line) - { - // empty line, comment or timestamp - if (!$line || $line[0] === "\0") { - return; - } - // if "\0" is found in an entry, then - // everything from it until the end of line is a comment. - if (($pos = \strpos($line, "\0")) !== false) { - $line = \substr($line, 0, $pos); - } - - return ($line !== '') ? Str::unvis($line) : null; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Readline/Readline.php b/docker/streamline-src/vendor/psy/psysh/src/Readline/Readline.php deleted file mode 100644 index 429b2b1f..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Readline/Readline.php +++ /dev/null @@ -1,86 +0,0 @@ -history = []; - $this->historySize = $historySize; - $this->eraseDups = $eraseDups ?? false; - } - - /** - * {@inheritdoc} - */ - public function addHistory(string $line): bool - { - if ($this->eraseDups) { - if (($key = \array_search($line, $this->history)) !== false) { - unset($this->history[$key]); - } - } - - $this->history[] = $line; - - if ($this->historySize > 0) { - $histsize = \count($this->history); - if ($histsize > $this->historySize) { - $this->history = \array_slice($this->history, $histsize - $this->historySize); - } - } - - $this->history = \array_values($this->history); - - return true; - } - - /** - * {@inheritdoc} - */ - public function clearHistory(): bool - { - $this->history = []; - - return true; - } - - /** - * {@inheritdoc} - */ - public function listHistory(): array - { - return $this->history; - } - - /** - * {@inheritdoc} - */ - public function readHistory(): bool - { - return true; - } - - /** - * {@inheritdoc} - * - * @throws BreakException if user hits Ctrl+D - * - * @return false|string - */ - public function readline(?string $prompt = null) - { - echo $prompt; - - return \rtrim(\fgets($this->getStdin()), "\n\r"); - } - - /** - * {@inheritdoc} - */ - public function redisplay() - { - // noop - } - - /** - * {@inheritdoc} - */ - public function writeHistory(): bool - { - return true; - } - - /** - * Get a STDIN file handle. - * - * @throws BreakException if user hits Ctrl+D - * - * @return resource - */ - private function getStdin() - { - if (!isset($this->stdin)) { - $this->stdin = \fopen('php://stdin', 'r'); - } - - if (\feof($this->stdin)) { - throw new BreakException('Ctrl+D'); - } - - return $this->stdin; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Readline/Userland.php b/docker/streamline-src/vendor/psy/psysh/src/Readline/Userland.php deleted file mode 100644 index 18d2a2aa..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Readline/Userland.php +++ /dev/null @@ -1,161 +0,0 @@ -hoaReadline = new HoaReadline(); - $this->hoaReadline->addMapping('\C-l', function () { - $this->redisplay(); - - return HoaReadline::STATE_NO_ECHO; - }); - - $this->tput = new HoaConsoleTput(); - HoaConsole::setTput($this->tput); - - $this->input = new HoaConsoleInput(); - HoaConsole::setInput($this->input); - - $this->output = new HoaConsoleOutput(); - HoaConsole::setOutput($this->output); - } - - /** - * Bootstrap some things that Hoa used to do itself. - */ - public static function bootstrapHoa(bool $withTerminalResize = false) - { - // A side effect registers hoa:// stream wrapper - \class_exists('Psy\Readline\Hoa\ProtocolWrapper'); - - // A side effect registers hoa://Library/Stream - \class_exists('Psy\Readline\Hoa\Stream'); - - // A side effect binds terminal resize - $withTerminalResize && \class_exists('Psy\Readline\Hoa\ConsoleWindow'); - } - - /** - * {@inheritdoc} - */ - public function addHistory(string $line): bool - { - $this->hoaReadline->addHistory($line); - - return true; - } - - /** - * {@inheritdoc} - */ - public function clearHistory(): bool - { - $this->hoaReadline->clearHistory(); - - return true; - } - - /** - * {@inheritdoc} - */ - public function listHistory(): array - { - $i = 0; - $list = []; - while (($item = $this->hoaReadline->getHistory($i++)) !== null) { - $list[] = $item; - } - - return $list; - } - - /** - * {@inheritdoc} - */ - public function readHistory(): bool - { - return true; - } - - /** - * {@inheritdoc} - * - * @throws BreakException if user hits Ctrl+D - * - * @return string - */ - public function readline(?string $prompt = null) - { - $this->lastPrompt = $prompt; - - return $this->hoaReadline->readLine($prompt); - } - - /** - * {@inheritdoc} - */ - public function redisplay() - { - $currentLine = $this->hoaReadline->getLine(); - HoaConsoleCursor::clear('all'); - echo $this->lastPrompt, $currentLine; - } - - /** - * {@inheritdoc} - */ - public function writeHistory(): bool - { - return true; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Reflection/ReflectionConstant.php b/docker/streamline-src/vendor/psy/psysh/src/Reflection/ReflectionConstant.php deleted file mode 100644 index 246aedc2..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Reflection/ReflectionConstant.php +++ /dev/null @@ -1,171 +0,0 @@ -name = $name; - - if (!\defined($name) && !self::isMagicConstant($name)) { - throw new \InvalidArgumentException('Unknown constant: '.$name); - } - - if (!self::isMagicConstant($name)) { - $this->value = @\constant($name); - } - } - - /** - * Exports a reflection. - * - * @param string $name - * @param bool $return pass true to return the export, as opposed to emitting it - * - * @return string|null - */ - public static function export(string $name, bool $return = false) - { - $refl = new self($name); - $value = $refl->getValue(); - - $str = \sprintf('Constant [ %s %s ] { %s }', \gettype($value), $refl->getName(), $value); - - if ($return) { - return $str; - } - - echo $str."\n"; - } - - public static function isMagicConstant($name) - { - return \in_array($name, self::MAGIC_CONSTANTS); - } - - /** - * Get the constant's docblock. - * - * @return false - */ - public function getDocComment(): bool - { - return false; - } - - /** - * Gets the constant name. - */ - public function getName(): string - { - return $this->name; - } - - /** - * Gets the namespace name. - * - * Returns '' when the constant is not namespaced. - */ - public function getNamespaceName(): string - { - if (!$this->inNamespace()) { - return ''; - } - - return \preg_replace('/\\\\[^\\\\]+$/', '', $this->name); - } - - /** - * Gets the value of the constant. - * - * @return mixed - */ - public function getValue() - { - return $this->value; - } - - /** - * Checks if this constant is defined in a namespace. - */ - public function inNamespace(): bool - { - return \strpos($this->name, '\\') !== false; - } - - /** - * To string. - */ - public function __toString(): string - { - return $this->getName(); - } - - /** - * Gets the constant's file name. - * - * Currently returns null, because if it returns a file name the signature - * formatter will barf. - */ - public function getFileName() - { - return; - // return $this->class->getFileName(); - } - - /** - * Get the code start line. - * - * @throws \RuntimeException - */ - public function getStartLine() - { - throw new \RuntimeException('Not yet implemented because it\'s unclear what I should do here :)'); - } - - /** - * Get the code end line. - * - * @throws \RuntimeException - */ - public function getEndLine() - { - return $this->getStartLine(); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Reflection/ReflectionLanguageConstruct.php b/docker/streamline-src/vendor/psy/psysh/src/Reflection/ReflectionLanguageConstruct.php deleted file mode 100644 index e7be671b..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Reflection/ReflectionLanguageConstruct.php +++ /dev/null @@ -1,159 +0,0 @@ - [ - 'var' => [], - '...' => [ - 'isOptional' => true, - 'defaultValue' => null, - ], - ], - - 'unset' => [ - 'var' => [], - '...' => [ - 'isOptional' => true, - 'defaultValue' => null, - ], - ], - - 'empty' => [ - 'var' => [], - ], - - 'echo' => [ - 'arg1' => [], - '...' => [ - 'isOptional' => true, - 'defaultValue' => null, - ], - ], - - 'print' => [ - 'arg' => [], - ], - - 'die' => [ - 'status' => [ - 'isOptional' => true, - 'defaultValue' => 0, - ], - ], - - 'exit' => [ - 'status' => [ - 'isOptional' => true, - 'defaultValue' => 0, - ], - ], - ]; - - /** - * Construct a ReflectionLanguageConstruct object. - * - * @param string $keyword - */ - public function __construct(string $keyword) - { - if (!self::isLanguageConstruct($keyword)) { - throw new \InvalidArgumentException('Unknown language construct: '.$keyword); - } - - $this->keyword = $keyword; - } - - /** - * This can't (and shouldn't) do anything :). - * - * @throws \RuntimeException - */ - public static function export($name) - { - throw new \RuntimeException('Not yet implemented because it\'s unclear what I should do here :)'); - } - - /** - * Get language construct name. - */ - public function getName(): string - { - return $this->keyword; - } - - /** - * None of these return references. - */ - public function returnsReference(): bool - { - return false; - } - - /** - * Get language construct params. - * - * @return array - */ - public function getParameters(): array - { - $params = []; - foreach (self::LANGUAGE_CONSTRUCTS[$this->keyword] as $parameter => $opts) { - $params[] = new ReflectionLanguageConstructParameter($this->keyword, $parameter, $opts); - } - - return $params; - } - - /** - * Gets the file name from a language construct. - * - * (Hint: it always returns false) - * - * @todo remove \ReturnTypeWillChange attribute after dropping support for PHP 7.x (when we can use union types) - * - * @return string|false (false) - */ - #[\ReturnTypeWillChange] - public function getFileName() - { - return false; - } - - /** - * To string. - */ - public function __toString(): string - { - return $this->getName(); - } - - /** - * Check whether keyword is a (known) language construct. - * - * @param string $keyword - */ - public static function isLanguageConstruct(string $keyword): bool - { - return \array_key_exists($keyword, self::LANGUAGE_CONSTRUCTS); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Reflection/ReflectionLanguageConstructParameter.php b/docker/streamline-src/vendor/psy/psysh/src/Reflection/ReflectionLanguageConstructParameter.php deleted file mode 100644 index c06530cc..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Reflection/ReflectionLanguageConstructParameter.php +++ /dev/null @@ -1,115 +0,0 @@ -function = $function; - $this->parameter = $parameter; - $this->opts = $opts; - } - - /** - * No class here. - */ - public function getClass(): ?\ReflectionClass - { - return null; - } - - /** - * Is the param an array? - * - * @return bool - */ - public function isArray(): bool - { - return \array_key_exists('isArray', $this->opts) && $this->opts['isArray']; - } - - /** - * Get param default value. - * - * @todo remove \ReturnTypeWillChange attribute after dropping support for PHP 7.x (when we can use mixed type) - * - * @return mixed - */ - #[\ReturnTypeWillChange] - public function getDefaultValue() - { - if ($this->isDefaultValueAvailable()) { - return $this->opts['defaultValue']; - } - - return null; - } - - /** - * Get param name. - * - * @return string - */ - public function getName(): string - { - return $this->parameter; - } - - /** - * Is the param optional? - * - * @return bool - */ - public function isOptional(): bool - { - return \array_key_exists('isOptional', $this->opts) && $this->opts['isOptional']; - } - - /** - * Does the param have a default value? - * - * @return bool - */ - public function isDefaultValueAvailable(): bool - { - return \array_key_exists('defaultValue', $this->opts); - } - - /** - * Is the param passed by reference? - * - * (I don't think this is true for anything we need to fake a param for) - * - * @return bool - */ - public function isPassedByReference(): bool - { - return \array_key_exists('isPassedByReference', $this->opts) && $this->opts['isPassedByReference']; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Reflection/ReflectionNamespace.php b/docker/streamline-src/vendor/psy/psysh/src/Reflection/ReflectionNamespace.php deleted file mode 100644 index ba2e6a19..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Reflection/ReflectionNamespace.php +++ /dev/null @@ -1,60 +0,0 @@ -name = $name; - } - - /** - * Gets the constant name. - * - * @return string - */ - public function getName(): string - { - return $this->name; - } - - /** - * This can't (and shouldn't) do anything :). - * - * @throws \RuntimeException - */ - public static function export($name) - { - throw new \RuntimeException('Not yet implemented because it\'s unclear what I should do here :)'); - } - - /** - * To string. - * - * @return string - */ - public function __toString(): string - { - return $this->getName(); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Shell.php b/docker/streamline-src/vendor/psy/psysh/src/Shell.php deleted file mode 100644 index cc8c0cd8..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Shell.php +++ /dev/null @@ -1,1665 +0,0 @@ -run(); - * - * @author Justin Hileman - */ -class Shell extends Application -{ - const VERSION = 'v0.12.7'; - - private Configuration $config; - private CodeCleaner $cleaner; - private OutputInterface $output; - private ?int $originalVerbosity = null; - private Readline $readline; - private array $inputBuffer; - /** @var string|false|null */ - private $code = null; - private array $codeBuffer = []; - private bool $codeBufferOpen = false; - private array $codeStack; - private string $stdoutBuffer; - private Context $context; - private array $includes; - private bool $outputWantsNewline = false; - private array $loopListeners; - private ?AutoCompleter $autoCompleter = null; - private array $matchers = []; - private ?CommandsMatcher $commandsMatcher = null; - private bool $lastExecSuccess = true; - private bool $nonInteractive = false; - private ?int $errorReporting = null; - - /** - * Create a new Psy Shell. - * - * @param Configuration|null $config (default: null) - */ - public function __construct(?Configuration $config = null) - { - $this->config = $config ?: new Configuration(); - $this->cleaner = $this->config->getCodeCleaner(); - $this->context = new Context(); - $this->includes = []; - $this->readline = $this->config->getReadline(); - $this->inputBuffer = []; - $this->codeStack = []; - $this->stdoutBuffer = ''; - $this->loopListeners = $this->getDefaultLoopListeners(); - - parent::__construct('Psy Shell', self::VERSION); - - $this->config->setShell($this); - - // Register the current shell session's config with \Psy\info - \Psy\info($this->config); - } - - /** - * Check whether the first thing in a backtrace is an include call. - * - * This is used by the psysh bin to decide whether to start a shell on boot, - * or to simply autoload the library. - */ - public static function isIncluded(array $trace): bool - { - $isIncluded = isset($trace[0]['function']) && - \in_array($trace[0]['function'], ['require', 'include', 'require_once', 'include_once']); - - // Detect Composer PHP bin proxies. - if ($isIncluded && \array_key_exists('_composer_autoload_path', $GLOBALS) && \preg_match('{[\\\\/]psysh$}', $trace[0]['file'])) { - // If we're in a bin proxy, we'll *always* see one include, but we - // care if we see a second immediately after that. - return isset($trace[1]['function']) && - \in_array($trace[1]['function'], ['require', 'include', 'require_once', 'include_once']); - } - - return $isIncluded; - } - - /** - * Check if the currently running PsySH bin is a phar archive. - */ - public static function isPhar(): bool - { - return \class_exists("\Phar") && \Phar::running() !== '' && \strpos(__FILE__, \Phar::running(true)) === 0; - } - - /** - * Invoke a Psy Shell from the current context. - * - * @see Psy\debug - * @deprecated will be removed in 1.0. Use \Psy\debug instead - * - * @param array $vars Scope variables from the calling context (default: []) - * @param object|string $bindTo Bound object ($this) or class (self) value for the shell - * - * @return array Scope variables from the debugger session - */ - public static function debug(array $vars = [], $bindTo = null): array - { - @\trigger_error('`Psy\\Shell::debug` is deprecated; call `Psy\\debug` instead.', \E_USER_DEPRECATED); - - return \Psy\debug($vars, $bindTo); - } - - /** - * Adds a command object. - * - * {@inheritdoc} - * - * @param BaseCommand $command A Symfony Console Command object - * - * @return BaseCommand The registered command - */ - public function add(BaseCommand $command): BaseCommand - { - if ($ret = parent::add($command)) { - if ($ret instanceof ContextAware) { - $ret->setContext($this->context); - } - - if ($ret instanceof PresenterAware) { - $ret->setPresenter($this->config->getPresenter()); - } - - if (isset($this->commandsMatcher)) { - $this->commandsMatcher->setCommands($this->all()); - } - } - - return $ret; - } - - /** - * Gets the default input definition. - * - * @return InputDefinition An InputDefinition instance - */ - protected function getDefaultInputDefinition(): InputDefinition - { - return new InputDefinition([ - new InputArgument('command', InputArgument::REQUIRED, 'The command to execute'), - new InputOption('--help', '-h', InputOption::VALUE_NONE, 'Display this help message.'), - ]); - } - - /** - * Gets the default commands that should always be available. - * - * @return array An array of default Command instances - */ - protected function getDefaultCommands(): array - { - $sudo = new Command\SudoCommand(); - $sudo->setReadline($this->readline); - - $hist = new Command\HistoryCommand(); - $hist->setReadline($this->readline); - - return [ - new Command\HelpCommand(), - new Command\ListCommand(), - new Command\DumpCommand(), - new Command\DocCommand(), - new Command\ShowCommand(), - new Command\WtfCommand(), - new Command\WhereamiCommand(), - new Command\ThrowUpCommand(), - new Command\TimeitCommand(), - new Command\TraceCommand(), - new Command\BufferCommand(), - new Command\ClearCommand(), - new Command\EditCommand($this->config->getRuntimeDir(false)), - // new Command\PsyVersionCommand(), - $sudo, - $hist, - new Command\ExitCommand(), - ]; - } - - /** - * @return Matcher\AbstractMatcher[] - */ - protected function getDefaultMatchers(): array - { - // Store the Commands Matcher for later. If more commands are added, - // we'll update the Commands Matcher too. - $this->commandsMatcher = new CommandsMatcher($this->all()); - - return [ - $this->commandsMatcher, - new Matcher\KeywordsMatcher(), - new Matcher\VariablesMatcher(), - new Matcher\ConstantsMatcher(), - new Matcher\FunctionsMatcher(), - new Matcher\ClassNamesMatcher(), - new Matcher\ClassMethodsMatcher(), - new Matcher\ClassAttributesMatcher(), - new Matcher\ObjectMethodsMatcher(), - new Matcher\ObjectAttributesMatcher(), - new Matcher\ClassMethodDefaultParametersMatcher(), - new Matcher\ObjectMethodDefaultParametersMatcher(), - new Matcher\FunctionDefaultParametersMatcher(), - ]; - } - - /** - * Gets the default command loop listeners. - * - * @return array An array of Execution Loop Listener instances - */ - protected function getDefaultLoopListeners(): array - { - $listeners = []; - - if (ProcessForker::isSupported() && $this->config->usePcntl()) { - $listeners[] = new ProcessForker(); - } - - if (RunkitReloader::isSupported()) { - $listeners[] = new RunkitReloader(); - } - - return $listeners; - } - - /** - * Add tab completion matchers. - * - * @param array $matchers - */ - public function addMatchers(array $matchers) - { - $this->matchers = \array_merge($this->matchers, $matchers); - - if (isset($this->autoCompleter)) { - $this->addMatchersToAutoCompleter($matchers); - } - } - - /** - * @deprecated Call `addMatchers` instead - * - * @param array $matchers - */ - public function addTabCompletionMatchers(array $matchers) - { - @\trigger_error('`addTabCompletionMatchers` is deprecated; call `addMatchers` instead.', \E_USER_DEPRECATED); - - $this->addMatchers($matchers); - } - - /** - * Set the Shell output. - * - * @param OutputInterface $output - */ - public function setOutput(OutputInterface $output) - { - $this->output = $output; - $this->originalVerbosity = $output->getVerbosity(); - } - - /** - * Runs PsySH. - * - * @param InputInterface|null $input An Input instance - * @param OutputInterface|null $output An Output instance - * - * @return int 0 if everything went fine, or an error code - */ - public function run(?InputInterface $input = null, ?OutputInterface $output = null): int - { - // We'll just ignore the input passed in, and set up our own! - $input = new ArrayInput([]); - - if ($output === null) { - $output = $this->config->getOutput(); - } - - $this->setAutoExit(false); - $this->setCatchExceptions(false); - - try { - return parent::run($input, $output); - } catch (\Throwable $e) { - $this->writeException($e); - } - - return 1; - } - - /** - * Runs PsySH. - * - * @throws \Throwable if thrown via the `throw-up` command - * - * @param InputInterface $input An Input instance - * @param OutputInterface $output An Output instance - * - * @return int 0 if everything went fine, or an error code - */ - public function doRun(InputInterface $input, OutputInterface $output): int - { - $this->setOutput($output); - $this->resetCodeBuffer(); - - if ($input->isInteractive()) { - // @todo should it be possible to have raw output in an interactive run? - return $this->doInteractiveRun(); - } else { - return $this->doNonInteractiveRun($this->config->rawOutput()); - } - } - - /** - * Run PsySH in interactive mode. - * - * Initializes tab completion and readline history, then spins up the - * execution loop. - * - * @throws \Throwable if thrown via the `throw-up` command - * - * @return int 0 if everything went fine, or an error code - */ - private function doInteractiveRun(): int - { - $this->initializeTabCompletion(); - $this->readline->readHistory(); - - $this->output->writeln($this->getHeader()); - $this->writeVersionInfo(); - $this->writeStartupMessage(); - - try { - $this->beforeRun(); - $this->loadIncludes(); - $loop = new ExecutionLoopClosure($this); - $loop->execute(); - $this->afterRun(); - } catch (ThrowUpException $e) { - throw $e->getPrevious(); - } catch (BreakException $e) { - // The ProcessForker throws a BreakException to finish the main thread. - } - - return 0; - } - - /** - * Run PsySH in non-interactive mode. - * - * Note that this isn't very useful unless you supply "include" arguments at - * the command line, or code via stdin. - * - * @param bool $rawOutput - * - * @return int 0 if everything went fine, or an error code - */ - private function doNonInteractiveRun(bool $rawOutput): int - { - $this->nonInteractive = true; - - // If raw output is enabled (or output is piped) we don't want startup messages. - if (!$rawOutput && !$this->config->outputIsPiped()) { - $this->output->writeln($this->getHeader()); - $this->writeVersionInfo(); - $this->writeStartupMessage(); - } - - $this->beforeRun(); - $this->loadIncludes(); - - // For non-interactive execution, read only from the input buffer or from piped input. - // Otherwise it'll try to readline and hang, waiting for user input with no indication of - // what's holding things up. - if (!empty($this->inputBuffer) || $this->config->inputIsPiped()) { - $this->getInput(false); - } - - if ($this->hasCode()) { - $ret = $this->execute($this->flushCode()); - $this->writeReturnValue($ret, $rawOutput); - } - - $this->afterRun(); - $this->nonInteractive = false; - - return 0; - } - - /** - * Configures the input and output instances based on the user arguments and options. - */ - protected function configureIO(InputInterface $input, OutputInterface $output): void - { - // @todo overrides via environment variables (or should these happen in config? ... probably config) - $input->setInteractive($this->config->getInputInteractive()); - - if ($this->config->getOutputDecorated() !== null) { - $output->setDecorated($this->config->getOutputDecorated()); - } - - $output->setVerbosity($this->config->getOutputVerbosity()); - } - - /** - * Load user-defined includes. - */ - private function loadIncludes() - { - // Load user-defined includes - $load = function (self $__psysh__) { - \set_error_handler([$__psysh__, 'handleError']); - foreach ($__psysh__->getIncludes() as $__psysh_include__) { - try { - include_once $__psysh_include__; - } catch (\Exception $_e) { - $__psysh__->writeException($_e); - } - } - \restore_error_handler(); - unset($__psysh_include__); - - // Override any new local variables with pre-defined scope variables - \extract($__psysh__->getScopeVariables(false)); - - // ... then add the whole mess of variables back. - $__psysh__->setScopeVariables(\get_defined_vars()); - }; - - $load($this); - } - - /** - * Read user input. - * - * This will continue fetching user input until the code buffer contains - * valid code. - * - * @throws BreakException if user hits Ctrl+D - * - * @param bool $interactive - */ - public function getInput(bool $interactive = true) - { - $this->codeBufferOpen = false; - - do { - // reset output verbosity (in case it was altered by a subcommand) - $this->output->setVerbosity($this->originalVerbosity); - - $input = $this->readline(); - - /* - * Handle Ctrl+D. It behaves differently in different cases: - * - * 1) In an expression, like a function or "if" block, clear the input buffer - * 2) At top-level session, behave like the exit command - * 3) When non-interactive, return, because that's the end of stdin - */ - if ($input === false) { - if (!$interactive) { - return; - } - - $this->output->writeln(''); - - if ($this->hasCode()) { - $this->resetCodeBuffer(); - } else { - throw new BreakException('Ctrl+D'); - } - } - - // handle empty input - if (\trim($input) === '' && !$this->codeBufferOpen) { - continue; - } - - $input = $this->onInput($input); - - // If the input isn't in an open string or comment, check for commands to run. - if ($this->hasCommand($input) && !$this->inputInOpenStringOrComment($input)) { - $this->addHistory($input); - $this->runCommand($input); - - continue; - } - - $this->addCode($input); - } while (!$interactive || !$this->hasValidCode()); - } - - /** - * Check whether the code buffer (plus current input) is in an open string or comment. - * - * @param string $input current line of input - * - * @return bool true if the input is in an open string or comment - */ - private function inputInOpenStringOrComment(string $input): bool - { - if (!$this->hasCode()) { - return false; - } - - $code = $this->codeBuffer; - $code[] = $input; - $tokens = @\token_get_all('loopListeners as $listener) { - $listener->beforeRun($this); - } - } - - /** - * Run execution loop listeners at the start of each loop. - */ - public function beforeLoop() - { - foreach ($this->loopListeners as $listener) { - $listener->beforeLoop($this); - } - } - - /** - * Run execution loop listeners on user input. - * - * @param string $input - */ - public function onInput(string $input): string - { - foreach ($this->loopListeners as $listeners) { - if (($return = $listeners->onInput($this, $input)) !== null) { - $input = $return; - } - } - - return $input; - } - - /** - * Run execution loop listeners on code to be executed. - * - * @param string $code - */ - public function onExecute(string $code): string - { - $this->errorReporting = \error_reporting(); - - foreach ($this->loopListeners as $listener) { - if (($return = $listener->onExecute($this, $code)) !== null) { - $code = $return; - } - } - - $output = $this->output; - if ($output instanceof ConsoleOutput) { - $output = $output->getErrorOutput(); - } - - $output->writeln(\sprintf('%s', OutputFormatter::escape($code)), ConsoleOutput::VERBOSITY_DEBUG); - - return $code; - } - - /** - * Run execution loop listeners after each loop. - */ - public function afterLoop() - { - foreach ($this->loopListeners as $listener) { - $listener->afterLoop($this); - } - } - - /** - * Run execution loop listers after the shell session. - */ - protected function afterRun() - { - foreach ($this->loopListeners as $listener) { - $listener->afterRun($this); - } - } - - /** - * Set the variables currently in scope. - * - * @param array $vars - */ - public function setScopeVariables(array $vars) - { - $this->context->setAll($vars); - } - - /** - * Return the set of variables currently in scope. - * - * @param bool $includeBoundObject Pass false to exclude 'this'. If you're - * passing the scope variables to `extract` - * you _must_ exclude 'this' - * - * @return array Associative array of scope variables - */ - public function getScopeVariables(bool $includeBoundObject = true): array - { - $vars = $this->context->getAll(); - - if (!$includeBoundObject) { - unset($vars['this']); - } - - return $vars; - } - - /** - * Return the set of magic variables currently in scope. - * - * @param bool $includeBoundObject Pass false to exclude 'this'. If you're - * passing the scope variables to `extract` - * you _must_ exclude 'this' - * - * @return array Associative array of magic scope variables - */ - public function getSpecialScopeVariables(bool $includeBoundObject = true): array - { - $vars = $this->context->getSpecialVariables(); - - if (!$includeBoundObject) { - unset($vars['this']); - } - - return $vars; - } - - /** - * Return the set of variables currently in scope which differ from the - * values passed as $currentVars. - * - * This is used inside the Execution Loop Closure to pick up scope variable - * changes made by commands while the loop is running. - * - * @param array $currentVars - * - * @return array Associative array of scope variables which differ from $currentVars - */ - public function getScopeVariablesDiff(array $currentVars): array - { - $newVars = []; - - foreach ($this->getScopeVariables(false) as $key => $value) { - if (!\array_key_exists($key, $currentVars) || $currentVars[$key] !== $value) { - $newVars[$key] = $value; - } - } - - return $newVars; - } - - /** - * Get the set of unused command-scope variable names. - * - * @return array Array of unused variable names - */ - public function getUnusedCommandScopeVariableNames(): array - { - return $this->context->getUnusedCommandScopeVariableNames(); - } - - /** - * Get the set of variable names currently in scope. - * - * @return array Array of variable names - */ - public function getScopeVariableNames(): array - { - return \array_keys($this->context->getAll()); - } - - /** - * Get a scope variable value by name. - * - * @param string $name - * - * @return mixed - */ - public function getScopeVariable(string $name) - { - return $this->context->get($name); - } - - /** - * Set the bound object ($this variable) for the interactive shell. - * - * @param object|null $boundObject - */ - public function setBoundObject($boundObject) - { - $this->context->setBoundObject($boundObject); - } - - /** - * Get the bound object ($this variable) for the interactive shell. - * - * @return object|null - */ - public function getBoundObject() - { - return $this->context->getBoundObject(); - } - - /** - * Set the bound class (self) for the interactive shell. - * - * @param string|null $boundClass - */ - public function setBoundClass($boundClass) - { - $this->context->setBoundClass($boundClass); - } - - /** - * Get the bound class (self) for the interactive shell. - * - * @return string|null - */ - public function getBoundClass() - { - return $this->context->getBoundClass(); - } - - /** - * Add includes, to be parsed and executed before running the interactive shell. - * - * @param array $includes - */ - public function setIncludes(array $includes = []) - { - $this->includes = $includes; - } - - /** - * Get PHP files to be parsed and executed before running the interactive shell. - * - * @return string[] - */ - public function getIncludes(): array - { - return \array_merge($this->config->getDefaultIncludes(), $this->includes); - } - - /** - * Check whether this shell's code buffer contains code. - * - * @return bool True if the code buffer contains code - */ - public function hasCode(): bool - { - return !empty($this->codeBuffer); - } - - /** - * Check whether the code in this shell's code buffer is valid. - * - * If the code is valid, the code buffer should be flushed and evaluated. - * - * @return bool True if the code buffer content is valid - */ - protected function hasValidCode(): bool - { - return !$this->codeBufferOpen && $this->code !== false; - } - - /** - * Add code to the code buffer. - * - * @param string $code - * @param bool $silent - */ - public function addCode(string $code, bool $silent = false) - { - try { - // Code lines ending in \ keep the buffer open - if (\substr(\rtrim($code), -1) === '\\') { - $this->codeBufferOpen = true; - $code = \substr(\rtrim($code), 0, -1); - } else { - $this->codeBufferOpen = false; - } - - $this->codeBuffer[] = $silent ? new SilentInput($code) : $code; - $this->code = $this->cleaner->clean($this->codeBuffer, $this->config->requireSemicolons()); - } catch (\Throwable $e) { - // Add failed code blocks to the readline history. - $this->addCodeBufferToHistory(); - - throw $e; - } - } - - /** - * Set the code buffer. - * - * This is mostly used by `Shell::execute`. Any existing code in the input - * buffer is pushed onto a stack and will come back after this new code is - * executed. - * - * @throws \InvalidArgumentException if $code isn't a complete statement - * - * @param string $code - * @param bool $silent - */ - private function setCode(string $code, bool $silent = false) - { - if ($this->hasCode()) { - $this->codeStack[] = [$this->codeBuffer, $this->codeBufferOpen, $this->code]; - } - - $this->resetCodeBuffer(); - try { - $this->addCode($code, $silent); - } catch (\Throwable $e) { - $this->popCodeStack(); - - throw $e; - } - - if (!$this->hasValidCode()) { - $this->popCodeStack(); - - throw new \InvalidArgumentException('Unexpected end of input'); - } - } - - /** - * Get the current code buffer. - * - * This is useful for commands which manipulate the buffer. - * - * @return string[] - */ - public function getCodeBuffer(): array - { - return $this->codeBuffer; - } - - /** - * Run a Psy Shell command given the user input. - * - * @throws \InvalidArgumentException if the input is not a valid command - * - * @param string $input User input string - * - * @return mixed Who knows? - */ - protected function runCommand(string $input) - { - $command = $this->getCommand($input); - - if (empty($command)) { - throw new \InvalidArgumentException('Command not found: '.$input); - } - - $input = new ShellInput(\str_replace('\\', '\\\\', \rtrim($input, " \t\n\r\0\x0B;"))); - - if (!$input->hasParameterOption(['--help', '-h'])) { - try { - return $command->run($input, $this->output); - } catch (\Exception $e) { - if (!self::needsInputHelp($e)) { - throw $e; - } - - $this->writeException($e); - - $this->output->writeln('--'); - if (!$this->config->theme()->compact()) { - $this->output->writeln(''); - } - } - } - - $helpCommand = $this->get('help'); - if (!$helpCommand instanceof Command\HelpCommand) { - throw new RuntimeException('Invalid help command instance'); - } - $helpCommand->setCommand($command); - - return $helpCommand->run(new StringInput(''), $this->output); - } - - /** - * Check whether a given input error would benefit from --help. - * - * @return bool - */ - private static function needsInputHelp(\Exception $e): bool - { - if (!($e instanceof \RuntimeException || $e instanceof SymfonyConsoleException)) { - return false; - } - - $inputErrors = [ - 'Not enough arguments', - 'option does not accept a value', - 'option does not exist', - 'option requires a value', - ]; - - $msg = $e->getMessage(); - foreach ($inputErrors as $errorMsg) { - if (\strpos($msg, $errorMsg) !== false) { - return true; - } - } - - return false; - } - - /** - * Reset the current code buffer. - * - * This should be run after evaluating user input, catching exceptions, or - * on demand by commands such as BufferCommand. - */ - public function resetCodeBuffer() - { - $this->codeBuffer = []; - $this->code = false; - } - - /** - * Inject input into the input buffer. - * - * This is useful for commands which want to replay history. - * - * @param string|array $input - * @param bool $silent - */ - public function addInput($input, bool $silent = false) - { - foreach ((array) $input as $line) { - $this->inputBuffer[] = $silent ? new SilentInput($line) : $line; - } - } - - /** - * Flush the current (valid) code buffer. - * - * If the code buffer is valid, resets the code buffer and returns the - * current code. - * - * @return string|null PHP code buffer contents - */ - public function flushCode() - { - if ($this->hasValidCode()) { - $this->addCodeBufferToHistory(); - $code = $this->code; - $this->popCodeStack(); - - return $code; - } - } - - /** - * Reset the code buffer and restore any code pushed during `execute` calls. - */ - private function popCodeStack() - { - $this->resetCodeBuffer(); - - if (empty($this->codeStack)) { - return; - } - - list($codeBuffer, $codeBufferOpen, $code) = \array_pop($this->codeStack); - - $this->codeBuffer = $codeBuffer; - $this->codeBufferOpen = $codeBufferOpen; - $this->code = $code; - } - - /** - * (Possibly) add a line to the readline history. - * - * Like Bash, if the line starts with a space character, it will be omitted - * from history. Note that an entire block multi-line code input will be - * omitted iff the first line begins with a space. - * - * Additionally, if a line is "silent", i.e. it was initially added with the - * silent flag, it will also be omitted. - * - * @param string|SilentInput $line - */ - private function addHistory($line) - { - if ($line instanceof SilentInput) { - return; - } - - // Skip empty lines and lines starting with a space - if (\trim($line) !== '' && \substr($line, 0, 1) !== ' ') { - $this->readline->addHistory($line); - } - } - - /** - * Filter silent input from code buffer, write the rest to readline history. - */ - private function addCodeBufferToHistory() - { - $codeBuffer = \array_filter($this->codeBuffer, function ($line) { - return !$line instanceof SilentInput; - }); - - $this->addHistory(\implode("\n", $codeBuffer)); - } - - /** - * Get the current evaluation scope namespace. - * - * @see CodeCleaner::getNamespace - * - * @return string|null Current code namespace - */ - public function getNamespace() - { - if ($namespace = $this->cleaner->getNamespace()) { - return \implode('\\', $namespace); - } - } - - /** - * Write a string to stdout. - * - * This is used by the shell loop for rendering output from evaluated code. - * - * @param string $out - * @param int $phase Output buffering phase - */ - public function writeStdout(string $out, int $phase = \PHP_OUTPUT_HANDLER_END) - { - if ($phase & \PHP_OUTPUT_HANDLER_START) { - if ($this->output instanceof ShellOutput) { - $this->output->startPaging(); - } - } - - $isCleaning = $phase & \PHP_OUTPUT_HANDLER_CLEAN; - - // Incremental flush - if ($out !== '' && !$isCleaning) { - $this->output->write($out, false, OutputInterface::OUTPUT_RAW); - $this->outputWantsNewline = (\substr($out, -1) !== "\n"); - $this->stdoutBuffer .= $out; - } - - // Output buffering is done! - if ($phase & \PHP_OUTPUT_HANDLER_END) { - // Write an extra newline if stdout didn't end with one - if ($this->outputWantsNewline) { - if (!$this->config->rawOutput() && !$this->config->outputIsPiped()) { - $this->output->writeln(\sprintf('%s', $this->config->useUnicode() ? '⏎' : '\\n')); - } else { - $this->output->writeln(''); - } - $this->outputWantsNewline = false; - } - - // Save the stdout buffer as $__out - if ($this->stdoutBuffer !== '') { - $this->context->setLastStdout($this->stdoutBuffer); - $this->stdoutBuffer = ''; - } - - if ($this->output instanceof ShellOutput) { - $this->output->stopPaging(); - } - } - } - - /** - * Write a return value to stdout. - * - * The return value is formatted or pretty-printed, and rendered in a - * visibly distinct manner (in this case, as cyan). - * - * @see self::presentValue - * - * @param mixed $ret - * @param bool $rawOutput Write raw var_export-style values - */ - public function writeReturnValue($ret, bool $rawOutput = false) - { - $this->lastExecSuccess = true; - - if ($ret instanceof NoReturnValue) { - return; - } - - $this->context->setReturnValue($ret); - - if ($rawOutput) { - $formatted = \var_export($ret, true); - } else { - $prompt = $this->config->theme()->returnValue(); - $indent = \str_repeat(' ', \strlen($prompt)); - $formatted = $this->presentValue($ret); - $formattedRetValue = \sprintf('%s', $prompt); - - $formatted = $formattedRetValue.\str_replace(\PHP_EOL, \PHP_EOL.$indent, $formatted); - } - - if ($this->output instanceof ShellOutput) { - $this->output->page($formatted.\PHP_EOL); - } else { - $this->output->writeln($formatted); - } - } - - /** - * Renders a caught Exception or Error. - * - * Exceptions are formatted according to severity. ErrorExceptions which were - * warnings or Strict errors aren't rendered as harshly as real errors. - * - * Stores $e as the last Exception in the Shell Context. - * - * @param \Throwable $e An exception or error instance - */ - public function writeException(\Throwable $e) - { - // No need to write the break exception during a non-interactive run. - if ($e instanceof BreakException && $this->nonInteractive) { - $this->resetCodeBuffer(); - - return; - } - - // Break exceptions don't count :) - if (!$e instanceof BreakException) { - $this->lastExecSuccess = false; - $this->context->setLastException($e); - } - - $output = $this->output; - if ($output instanceof ConsoleOutput) { - $output = $output->getErrorOutput(); - } - - if (!$this->config->theme()->compact()) { - $output->writeln(''); - } - - $output->writeln($this->formatException($e)); - - if (!$this->config->theme()->compact()) { - $output->writeln(''); - } - - // Include an exception trace (as long as this isn't a BreakException). - if (!$e instanceof BreakException && $output->getVerbosity() >= OutputInterface::VERBOSITY_VERBOSE) { - $trace = TraceFormatter::formatTrace($e); - if (\count($trace) !== 0) { - $output->writeln('--'); - $output->write($trace, true); - $output->writeln(''); - } - } - - $this->resetCodeBuffer(); - } - - /** - * Check whether the last exec was successful. - * - * Returns true if a return value was logged rather than an exception. - */ - public function getLastExecSuccess(): bool - { - return $this->lastExecSuccess; - } - - /** - * Helper for formatting an exception or error for writeException(). - * - * @todo extract this to somewhere it makes more sense - * - * @param \Throwable $e - */ - public function formatException(\Throwable $e): string - { - $indent = $this->config->theme()->compact() ? '' : ' '; - - if ($e instanceof BreakException) { - return \sprintf('%s INFO %s.', $indent, \rtrim($e->getRawMessage(), '.')); - } elseif ($e instanceof PsyException) { - $message = $e->getLine() > 1 - ? \sprintf('%s in %s on line %d', $e->getRawMessage(), $e->getFile(), $e->getLine()) - : \sprintf('%s in %s', $e->getRawMessage(), $e->getFile()); - - $messageLabel = \strtoupper($this->getMessageLabel($e)); - } else { - $message = $e->getMessage(); - $messageLabel = $this->getMessageLabel($e); - } - - $message = \preg_replace( - "#(\\w:)?([\\\\/]\\w+)*[\\\\/]src[\\\\/]Execution(?:Loop)?Closure.php\(\d+\) : eval\(\)'d code#", - "eval()'d code", - $message - ); - - $message = \str_replace(" in eval()'d code", '', $message); - $message = \trim($message); - - // Ensures the given string ends with punctuation... - if (!empty($message) && !\in_array(\substr($message, -1), ['.', '?', '!', ':'])) { - $message = "$message."; - } - - // Ensures the given message only contains relative paths... - $message = \str_replace(\getcwd().\DIRECTORY_SEPARATOR, '', $message); - - $severity = ($e instanceof \ErrorException) ? $this->getSeverity($e) : 'error'; - - return \sprintf('%s<%s> %s %s', $indent, $severity, $messageLabel, $severity, OutputFormatter::escape($message)); - } - - /** - * Helper for getting an output style for the given ErrorException's level. - * - * @param \ErrorException $e - */ - protected function getSeverity(\ErrorException $e): string - { - $severity = $e->getSeverity(); - if ($severity & \error_reporting()) { - switch ($severity) { - case \E_WARNING: - case \E_NOTICE: - case \E_CORE_WARNING: - case \E_COMPILE_WARNING: - case \E_USER_WARNING: - case \E_USER_NOTICE: - case \E_USER_DEPRECATED: - case \E_DEPRECATED: - return 'warning'; - - default: - if ((\PHP_VERSION_ID < 80400) && $severity === \E_STRICT) { - return 'warning'; - } - - return 'error'; - } - } else { - // Since this is below the user's reporting threshold, it's always going to be a warning. - return 'warning'; - } - } - - /** - * Helper for getting an output style for the given ErrorException's level. - * - * @param \Throwable $e - */ - protected function getMessageLabel(\Throwable $e): string - { - if ($e instanceof \ErrorException) { - $severity = $e->getSeverity(); - - if ($severity & \error_reporting()) { - switch ($severity) { - case \E_WARNING: - return 'Warning'; - case \E_NOTICE: - return 'Notice'; - case \E_CORE_WARNING: - return 'Core Warning'; - case \E_COMPILE_WARNING: - return 'Compile Warning'; - case \E_USER_WARNING: - return 'User Warning'; - case \E_USER_NOTICE: - return 'User Notice'; - case \E_USER_DEPRECATED: - return 'User Deprecated'; - case \E_DEPRECATED: - return 'Deprecated'; - case \E_STRICT: - return 'Strict'; - } - } - } - - if ($e instanceof PsyException || $e instanceof SymfonyConsoleException) { - $exceptionShortName = (new \ReflectionClass($e))->getShortName(); - $typeParts = \preg_split('/(?=[A-Z])/', $exceptionShortName); - - switch ($exceptionShortName) { - case 'RuntimeException': - case 'LogicException': - // These ones look weird without 'Exception' - break; - default: - if (\end($typeParts) === 'Exception') { - \array_pop($typeParts); - } - break; - } - - return \trim(\strtoupper(\implode(' ', $typeParts))); - } - - return \get_class($e); - } - - /** - * Execute code in the shell execution context. - * - * @param string $code - * @param bool $throwExceptions - * - * @return mixed - */ - public function execute(string $code, bool $throwExceptions = false) - { - $this->setCode($code, true); - $closure = new ExecutionClosure($this); - - if ($throwExceptions) { - return $closure->execute(); - } - - try { - return $closure->execute(); - } catch (\Throwable $_e) { - $this->writeException($_e); - } - } - - /** - * Helper for throwing an ErrorException. - * - * This allows us to: - * - * set_error_handler([$psysh, 'handleError']); - * - * Unlike ErrorException::throwException, this error handler respects error - * levels; i.e. it logs warnings and notices, but doesn't throw exceptions. - * This should probably only be used in the inner execution loop of the - * shell, as most of the time a thrown exception is much more useful. - * - * If the error type matches the `errorLoggingLevel` config, it will be - * logged as well, regardless of the `error_reporting` level. - * - * @see \Psy\Exception\ErrorException::throwException - * @see \Psy\Shell::writeException - * - * @throws \Psy\Exception\ErrorException depending on the error level - * - * @param int $errno Error type - * @param string $errstr Message - * @param string $errfile Filename - * @param int $errline Line number - */ - public function handleError($errno, $errstr, $errfile, $errline) - { - // This is an error worth throwing. - // - // n.b. Technically we can't handle all of these in userland code, but - // we'll list 'em all for good measure - if ($errno & (\E_ERROR | \E_PARSE | \E_CORE_ERROR | \E_COMPILE_ERROR | \E_USER_ERROR | \E_RECOVERABLE_ERROR)) { - ErrorException::throwException($errno, $errstr, $errfile, $errline); - } - - // When errors are suppressed, the error_reporting value will differ - // from when we started executing. In that case, we won't log errors. - $errorsSuppressed = $this->errorReporting !== null && $this->errorReporting !== \error_reporting(); - - // Otherwise log it and continue. - if ($errno & \error_reporting() || (!$errorsSuppressed && ($errno & $this->config->errorLoggingLevel()))) { - $this->writeException(new ErrorException($errstr, 0, $errno, $errfile, $errline)); - } - } - - /** - * Format a value for display. - * - * @see Presenter::present - * - * @param mixed $val - * - * @return string Formatted value - */ - protected function presentValue($val): string - { - return $this->config->getPresenter()->present($val); - } - - /** - * Get a command (if one exists) for the current input string. - * - * @param string $input - * - * @return BaseCommand|null - */ - protected function getCommand(string $input) - { - $input = new StringInput($input); - if ($name = $input->getFirstArgument()) { - return $this->get($name); - } - } - - /** - * Check whether a command is set for the current input string. - * - * @param string $input - * - * @return bool True if the shell has a command for the given input - */ - protected function hasCommand(string $input): bool - { - if (\preg_match('/([^\s]+?)(?:\s|$)/A', \ltrim($input), $match)) { - return $this->has($match[1]); - } - - return false; - } - - /** - * Get the current input prompt. - * - * @return string|null - */ - protected function getPrompt() - { - if ($this->output->isQuiet()) { - return null; - } - - $theme = $this->config->theme(); - - if ($this->hasCode()) { - return $theme->bufferPrompt(); - } - - return $theme->prompt(); - } - - /** - * Read a line of user input. - * - * This will return a line from the input buffer (if any exist). Otherwise, - * it will ask the user for input. - * - * If readline is enabled, this delegates to readline. Otherwise, it's an - * ugly `fgets` call. - * - * @param bool $interactive - * - * @return string|false One line of user input - */ - protected function readline(bool $interactive = true) - { - $prompt = $this->config->theme()->replayPrompt(); - - if (!empty($this->inputBuffer)) { - $line = \array_shift($this->inputBuffer); - if (!$line instanceof SilentInput) { - $this->output->writeln(\sprintf('%s', $prompt, OutputFormatter::escape($line))); - } - - return $line; - } - - $bracketedPaste = $interactive && $this->config->useBracketedPaste(); - - if ($bracketedPaste) { - \printf("\e[?2004h"); // Enable bracketed paste - } - - $line = $this->readline->readline($this->getPrompt()); - - if ($bracketedPaste) { - \printf("\e[?2004l"); // ... and disable it again - } - - return $line; - } - - /** - * Get the shell output header. - */ - protected function getHeader(): string - { - return \sprintf('%s by Justin Hileman', self::getVersionHeader($this->config->useUnicode())); - } - - /** - * Get the current version of Psy Shell. - * - * @deprecated call self::getVersionHeader instead - */ - public function getVersion(): string - { - @\trigger_error('`getVersion` is deprecated; call `self::getVersionHeader` instead.', \E_USER_DEPRECATED); - - return self::getVersionHeader($this->config->useUnicode()); - } - - /** - * Get a pretty header including the current version of Psy Shell. - * - * @param bool $useUnicode - */ - public static function getVersionHeader(bool $useUnicode = false): string - { - $separator = $useUnicode ? '—' : '-'; - - return \sprintf('Psy Shell %s (PHP %s %s %s)', self::VERSION, \PHP_VERSION, $separator, \PHP_SAPI); - } - - /** - * Get a PHP manual database instance. - * - * @return \PDO|null - */ - public function getManualDb() - { - return $this->config->getManualDb(); - } - - /** - * Initialize tab completion matchers. - * - * If tab completion is enabled this adds tab completion matchers to the - * auto completer and sets context if needed. - */ - protected function initializeTabCompletion() - { - if (!$this->config->useTabCompletion()) { - return; - } - - $this->autoCompleter = $this->config->getAutoCompleter(); - - // auto completer needs shell to be linked to configuration because of - // the context aware matchers - $this->addMatchersToAutoCompleter($this->getDefaultMatchers()); - $this->addMatchersToAutoCompleter($this->matchers); - - $this->autoCompleter->activate(); - } - - /** - * Add matchers to the auto completer, setting context if needed. - * - * @param array $matchers - */ - private function addMatchersToAutoCompleter(array $matchers) - { - foreach ($matchers as $matcher) { - if ($matcher instanceof ContextAware) { - $matcher->setContext($this->context); - } - $this->autoCompleter->addMatcher($matcher); - } - } - - /** - * @todo Implement prompt to start update - * - * @return void|string - */ - protected function writeVersionInfo() - { - if (\PHP_SAPI !== 'cli') { - return; - } - - try { - $client = $this->config->getChecker(); - if (!$client->isLatest()) { - $this->output->writeln(\sprintf('New version is available at psysh.org/psysh (current: %s, latest: %s)', self::VERSION, $client->getLatest())); - } - } catch (\InvalidArgumentException $e) { - $this->output->writeln($e->getMessage()); - } - } - - /** - * Write a startup message if set. - */ - protected function writeStartupMessage() - { - $message = $this->config->getStartupMessage(); - if ($message !== null && $message !== '') { - $this->output->writeln($message); - } - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Sudo.php b/docker/streamline-src/vendor/psy/psysh/src/Sudo.php deleted file mode 100644 index 54016f93..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Sudo.php +++ /dev/null @@ -1,203 +0,0 @@ -property - */ - public static function fetchProperty($object, string $property) - { - $prop = self::getProperty(new \ReflectionObject($object), $property); - - return $prop->getValue($object); - } - - /** - * Assign the value of a property of an object, bypassing visibility restrictions. - * - * @param object $object - * @param string $property property name - * @param mixed $value - * - * @return mixed Value of $object->property - */ - public static function assignProperty($object, string $property, $value) - { - $prop = self::getProperty(new \ReflectionObject($object), $property); - $prop->setValue($object, $value); - - return $value; - } - - /** - * Call a method on an object, bypassing visibility restrictions. - * - * @param object $object - * @param string $method method name - * @param mixed $args... - * - * @return mixed - */ - public static function callMethod($object, string $method, ...$args) - { - $refl = new \ReflectionObject($object); - $reflMethod = $refl->getMethod($method); - $reflMethod->setAccessible(true); - - return $reflMethod->invokeArgs($object, $args); - } - - /** - * Fetch a property of a class, bypassing visibility restrictions. - * - * @param string|object $class class name or instance - * @param string $property property name - * - * @return mixed Value of $class::$property - */ - public static function fetchStaticProperty($class, string $property) - { - $prop = self::getProperty(new \ReflectionClass($class), $property); - $prop->setAccessible(true); - - return $prop->getValue(); - } - - /** - * Assign the value of a static property of a class, bypassing visibility restrictions. - * - * @param string|object $class class name or instance - * @param string $property property name - * @param mixed $value - * - * @return mixed Value of $class::$property - */ - public static function assignStaticProperty($class, string $property, $value) - { - $prop = self::getProperty(new \ReflectionClass($class), $property); - $refl = $prop->getDeclaringClass(); - - if (\method_exists($refl, 'setStaticPropertyValue')) { - $refl->setStaticPropertyValue($property, $value); - } else { - $prop->setValue($value); - } - - return $value; - } - - /** - * Call a static method on a class, bypassing visibility restrictions. - * - * @param string|object $class class name or instance - * @param string $method method name - * @param mixed $args... - * - * @return mixed - */ - public static function callStatic($class, string $method, ...$args) - { - $refl = new \ReflectionClass($class); - $reflMethod = $refl->getMethod($method); - $reflMethod->setAccessible(true); - - return $reflMethod->invokeArgs(null, $args); - } - - /** - * Fetch a class constant, bypassing visibility restrictions. - * - * @param string|object $class class name or instance - * @param string $const constant name - * - * @return mixed - */ - public static function fetchClassConst($class, string $const) - { - $refl = new \ReflectionClass($class); - - // Special case the ::class magic constant, because `getConstant` does the wrong thing here. - if ($const === 'class') { - return $refl->getName(); - } - - do { - if ($refl->hasConstant($const)) { - return $refl->getConstant($const); - } - - $refl = $refl->getParentClass(); - } while ($refl !== false); - - return false; - } - - /** - * Construct an instance of a class, bypassing private constructors. - * - * @param string $class class name - * @param mixed $args... - */ - public static function newInstance(string $class, ...$args) - { - $refl = new \ReflectionClass($class); - $instance = $refl->newInstanceWithoutConstructor(); - - $constructor = $refl->getConstructor(); - $constructor->setAccessible(true); - $constructor->invokeArgs($instance, $args); - - return $instance; - } - - /** - * Get a ReflectionProperty from an object (or its parent classes). - * - * @throws \ReflectionException if neither the object nor any of its parents has this property - * - * @param \ReflectionClass $refl - * @param string $property property name - * - * @return \ReflectionProperty - */ - private static function getProperty(\ReflectionClass $refl, string $property): \ReflectionProperty - { - $firstException = null; - do { - try { - $prop = $refl->getProperty($property); - $prop->setAccessible(true); - - return $prop; - } catch (\ReflectionException $e) { - if ($firstException === null) { - $firstException = $e; - } - - $refl = $refl->getParentClass(); - } - } while ($refl !== false); - - throw $firstException; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/TabCompletion/AutoCompleter.php b/docker/streamline-src/vendor/psy/psysh/src/TabCompletion/AutoCompleter.php deleted file mode 100644 index 1be9caa9..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/TabCompletion/AutoCompleter.php +++ /dev/null @@ -1,112 +0,0 @@ - - */ -class AutoCompleter -{ - /** @var Matcher\AbstractMatcher[] */ - protected $matchers; - - /** - * Register a tab completion Matcher. - * - * @param AbstractMatcher $matcher - */ - public function addMatcher(AbstractMatcher $matcher) - { - $this->matchers[] = $matcher; - } - - /** - * Activate readline tab completion. - */ - public function activate() - { - \readline_completion_function([&$this, 'callback']); - } - - /** - * Handle readline completion. - * - * @param string $input Readline current word - * @param int $index Current word index - * @param array $info readline_info() data - * - * @return array - */ - public function processCallback(string $input, int $index, array $info = []): array - { - // Some (Windows?) systems provide incomplete `readline_info`, so let's - // try to work around it. - $line = $info['line_buffer']; - if (isset($info['end'])) { - $line = \substr($line, 0, $info['end']); - } - if ($line === '' && $input !== '') { - $line = $input; - } - - $tokens = \token_get_all('matchers as $matcher) { - if ($matcher->hasMatched($tokens)) { - $matches = \array_merge($matcher->getMatches($tokens, $info), $matches); - } - } - - $matches = \array_unique($matches); - - return !empty($matches) ? $matches : ['']; - } - - /** - * The readline_completion_function callback handler. - * - * @see processCallback - * - * @param string $input - * @param int $index - * - * @return array - */ - public function callback(string $input, int $index): array - { - return $this->processCallback($input, $index, \readline_info()); - } - - /** - * Remove readline callback handler on destruct. - */ - public function __destruct() - { - // PHP didn't implement the whole readline API when they first switched - // to libedit. And they still haven't. - if (\function_exists('readline_callback_handler_remove')) { - \readline_callback_handler_remove(); - } - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/TabCompletion/Matcher/ClassNamesMatcher.php b/docker/streamline-src/vendor/psy/psysh/src/TabCompletion/Matcher/ClassNamesMatcher.php deleted file mode 100644 index 32a34640..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/TabCompletion/Matcher/ClassNamesMatcher.php +++ /dev/null @@ -1,78 +0,0 @@ - - */ -class ClassNamesMatcher extends AbstractMatcher -{ - /** - * {@inheritdoc} - */ - public function getMatches(array $tokens, array $info = []): array - { - $class = $this->getNamespaceAndClass($tokens); - if ($class !== '' && $class[0] === '\\') { - $class = \substr($class, 1, \strlen($class)); - } - $quotedClass = \preg_quote($class); - - return \array_map( - function ($className) use ($class) { - // get the number of namespace separators - $nsPos = \substr_count($class, '\\'); - $pieces = \explode('\\', $className); - - // $methods = Mirror::get($class); - return \implode('\\', \array_slice($pieces, $nsPos, \count($pieces))); - }, - \array_filter( - \array_merge(\get_declared_classes(), \get_declared_interfaces()), - function ($className) use ($quotedClass) { - return AbstractMatcher::startsWith($quotedClass, $className); - } - ) - ); - } - - /** - * {@inheritdoc} - */ - public function hasMatched(array $tokens): bool - { - $token = \array_pop($tokens); - $prevToken = \array_pop($tokens); - - $ignoredTokens = [ - self::T_INCLUDE, self::T_INCLUDE_ONCE, self::T_REQUIRE, self::T_REQUIRE_ONCE, - ]; - - switch (true) { - case self::hasToken([$ignoredTokens], $token): - case self::hasToken([$ignoredTokens], $prevToken): - case \is_string($token) && $token === '$': - return false; - case self::hasToken([self::T_NEW, self::T_OPEN_TAG, self::T_NS_SEPARATOR, self::T_STRING], $prevToken): - case self::hasToken([self::T_NEW, self::T_OPEN_TAG, self::T_NS_SEPARATOR], $token): - case self::hasToken([self::T_OPEN_TAG, self::T_VARIABLE], $token): - case self::isOperator($token): - return true; - } - - return false; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Util/Mirror.php b/docker/streamline-src/vendor/psy/psysh/src/Util/Mirror.php deleted file mode 100644 index 9dd0c1b0..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Util/Mirror.php +++ /dev/null @@ -1,149 +0,0 @@ -hasConstant($member)) { - return new \ReflectionClassConstant($value, $member); - } elseif ($filter & self::METHOD && $class->hasMethod($member)) { - return $class->getMethod($member); - } elseif ($filter & self::PROPERTY && $class->hasProperty($member)) { - return $class->getProperty($member); - } elseif ($filter & self::STATIC_PROPERTY && $class->hasProperty($member) && $class->getProperty($member)->isStatic()) { - return $class->getProperty($member); - } else { - throw new RuntimeException(\sprintf('Unknown member %s on class %s', $member, \is_object($value) ? \get_class($value) : $value)); - } - } - - /** - * Get a ReflectionClass (or ReflectionObject, or ReflectionNamespace) if possible. - * - * @throws \InvalidArgumentException if $value is not a namespace or class name or instance - * - * @param mixed $value - * - * @return \ReflectionClass|ReflectionNamespace - */ - private static function getClass($value) - { - if (\is_object($value)) { - return new \ReflectionObject($value); - } - - if (!\is_string($value)) { - throw new \InvalidArgumentException('Mirror expects an object or class'); - } - - if (\class_exists($value) || \interface_exists($value) || \trait_exists($value)) { - return new \ReflectionClass($value); - } - - $namespace = \preg_replace('/(^\\\\|\\\\$)/', '', $value); - if (self::namespaceExists($namespace)) { - return new ReflectionNamespace($namespace); - } - - throw new \InvalidArgumentException('Unknown namespace, class or function: '.$value); - } - - /** - * Check declared namespaces for a given namespace. - */ - private static function namespaceExists(string $value): bool - { - return \in_array(\strtolower($value), self::getDeclaredNamespaces()); - } - - /** - * Get an array of all currently declared namespaces. - * - * Note that this relies on at least one function, class, interface, trait - * or constant to have been declared in that namespace. - */ - private static function getDeclaredNamespaces(): array - { - $functions = \get_defined_functions(); - - $allNames = \array_merge( - $functions['internal'], - $functions['user'], - \get_declared_classes(), - \get_declared_interfaces(), - \get_declared_traits(), - \array_keys(\get_defined_constants()) - ); - - $namespaces = []; - foreach ($allNames as $name) { - $chunks = \explode('\\', \strtolower($name)); - - // the last one is the function or class or whatever... - \array_pop($chunks); - - while (!empty($chunks)) { - $namespaces[\implode('\\', $chunks)] = true; - \array_pop($chunks); - } - } - - $namespaceNames = \array_keys($namespaces); - - \sort($namespaceNames); - - return $namespaceNames; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/Util/Str.php b/docker/streamline-src/vendor/psy/psysh/src/Util/Str.php deleted file mode 100644 index dd126d1b..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/Util/Str.php +++ /dev/null @@ -1,111 +0,0 @@ -filter = $filter; - - return parent::cloneVar($var, $filter); - } - - /** - * {@inheritdoc} - */ - protected function castResource(Stub $stub, $isNested): array - { - return Caster::EXCLUDE_VERBOSE & $this->filter ? [] : parent::castResource($stub, $isNested); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/VarDumper/Dumper.php b/docker/streamline-src/vendor/psy/psysh/src/VarDumper/Dumper.php deleted file mode 100644 index 54b5ac2d..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/VarDumper/Dumper.php +++ /dev/null @@ -1,108 +0,0 @@ - '\0', - "\t" => '\t', - "\n" => '\n', - "\v" => '\v', - "\f" => '\f', - "\r" => '\r', - "\033" => '\e', - ]; - - public function __construct(OutputFormatter $formatter, $forceArrayIndexes = false) - { - $this->formatter = $formatter; - $this->forceArrayIndexes = $forceArrayIndexes; - parent::__construct(); - $this->setColors(false); - } - - /** - * {@inheritdoc} - */ - public function enterHash(Cursor $cursor, $type, $class, $hasChild): void - { - if (Cursor::HASH_INDEXED === $type || Cursor::HASH_ASSOC === $type) { - $class = 0; - } - parent::enterHash($cursor, $type, $class, $hasChild); - } - - /** - * {@inheritdoc} - */ - protected function dumpKey(Cursor $cursor): void - { - if ($this->forceArrayIndexes || Cursor::HASH_INDEXED !== $cursor->hashType) { - parent::dumpKey($cursor); - } - } - - protected function style($style, $value, $attr = []): string - { - if ('ref' === $style) { - $value = \strtr($value, '@', '#'); - } - - $styled = ''; - $cchr = $this->styles['cchr']; - - $chunks = \preg_split(self::CONTROL_CHARS, $value, -1, \PREG_SPLIT_NO_EMPTY | \PREG_SPLIT_DELIM_CAPTURE); - foreach ($chunks as $chunk) { - if (\preg_match(self::ONLY_CONTROL_CHARS, $chunk)) { - $chars = ''; - $i = 0; - do { - $chars .= isset(self::CONTROL_CHARS_MAP[$chunk[$i]]) ? self::CONTROL_CHARS_MAP[$chunk[$i]] : \sprintf('\x%02X', \ord($chunk[$i])); - } while (isset($chunk[++$i])); - - $chars = $this->formatter->escape($chars); - $styled .= "<{$cchr}>{$chars}"; - } else { - $styled .= $this->formatter->escape($chunk); - } - } - - $style = $this->styles[$style]; - - return "<{$style}>{$styled}"; - } - - /** - * {@inheritdoc} - */ - protected function dumpLine($depth, $endOfValue = false): void - { - if ($endOfValue && 0 < $depth) { - $this->line .= ','; - } - $this->line = $this->formatter->format($this->line); - parent::dumpLine($depth, $endOfValue); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/VarDumper/Presenter.php b/docker/streamline-src/vendor/psy/psysh/src/VarDumper/Presenter.php deleted file mode 100644 index b76aed33..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/VarDumper/Presenter.php +++ /dev/null @@ -1,137 +0,0 @@ - 'number', - 'integer' => 'integer', - 'float' => 'float', - 'const' => 'const', - 'str' => 'string', - 'cchr' => 'default', - 'note' => 'class', - 'ref' => 'default', - 'public' => 'public', - 'protected' => 'protected', - 'private' => 'private', - 'meta' => 'comment', - 'key' => 'comment', - 'index' => 'number', - ]; - - public function __construct(OutputFormatter $formatter, $forceArrayIndexes = false) - { - // Work around https://github.com/symfony/symfony/issues/23572 - $oldLocale = \setlocale(\LC_NUMERIC, 0); - \setlocale(\LC_NUMERIC, 'C'); - - $this->dumper = new Dumper($formatter, $forceArrayIndexes); - $this->dumper->setStyles(self::STYLES); - - // Now put the locale back - \setlocale(\LC_NUMERIC, $oldLocale); - - $this->cloner = new Cloner(); - $this->cloner->addCasters(['*' => function ($obj, array $a, Stub $stub, $isNested, $filter = 0) { - if ($filter || $isNested) { - if ($obj instanceof \Throwable) { - $a = Caster::filter($a, Caster::EXCLUDE_NOT_IMPORTANT | Caster::EXCLUDE_EMPTY, self::IMPORTANT_EXCEPTIONS); - } else { - $a = Caster::filter($a, Caster::EXCLUDE_PROTECTED | Caster::EXCLUDE_PRIVATE); - } - } - - return $a; - }]); - } - - /** - * Register casters. - * - * @see http://symfony.com/doc/current/components/var_dumper/advanced.html#casters - * - * @param callable[] $casters A map of casters - */ - public function addCasters(array $casters) - { - $this->cloner->addCasters($casters); - } - - /** - * Present a reference to the value. - * - * @param mixed $value - */ - public function presentRef($value): string - { - return $this->present($value, 0); - } - - /** - * Present a full representation of the value. - * - * If $depth is 0, the value will be presented as a ref instead. - * - * @param mixed $value - * @param int $depth (default: null) - * @param int $options One of Presenter constants - */ - public function present($value, ?int $depth = null, int $options = 0): string - { - $data = $this->cloner->cloneVar($value, !($options & self::VERBOSE) ? Caster::EXCLUDE_VERBOSE : 0); - - if (null !== $depth) { - $data = $data->withMaxDepth($depth); - } - - // Work around https://github.com/symfony/symfony/issues/23572 - $oldLocale = \setlocale(\LC_NUMERIC, 0); - \setlocale(\LC_NUMERIC, 'C'); - - $output = ''; - $this->dumper->dump($data, function ($line, $depth) use (&$output) { - if ($depth >= 0) { - if ('' !== $output) { - $output .= \PHP_EOL; - } - $output .= \str_repeat(' ', $depth).$line; - } - }); - - // Now put the locale back - \setlocale(\LC_NUMERIC, $oldLocale); - - return OutputFormatter::escape($output); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/VersionUpdater/Downloader/CurlDownloader.php b/docker/streamline-src/vendor/psy/psysh/src/VersionUpdater/Downloader/CurlDownloader.php deleted file mode 100644 index 5b40917b..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/VersionUpdater/Downloader/CurlDownloader.php +++ /dev/null @@ -1,89 +0,0 @@ -tempDir = $tempDir; - } - - /** {@inheritDoc} */ - public function download(string $url): bool - { - $tempDir = $this->tempDir ?: \sys_get_temp_dir(); - $this->outputFile = \tempnam($tempDir, 'psysh-archive-'); - $targetName = $this->outputFile.'.tar.gz'; - - if (!\rename($this->outputFile, $targetName)) { - return false; - } - - $this->outputFile = $targetName; - - $outputHandle = \fopen($this->outputFile, 'w'); - if (!$outputHandle) { - return false; - } - $curl = \curl_init(); - \curl_setopt_array($curl, [ - \CURLOPT_FAILONERROR => true, - \CURLOPT_HEADER => 0, - \CURLOPT_FOLLOWLOCATION => true, - \CURLOPT_TIMEOUT => 10, - \CURLOPT_FILE => $outputHandle, - \CURLOPT_HTTPHEADER => [ - 'User-Agent' => 'PsySH/'.Shell::VERSION, - ], - ]); - \curl_setopt($curl, \CURLOPT_URL, $url); - $result = \curl_exec($curl); - $error = \curl_error($curl); - \curl_close($curl); - - \fclose($outputHandle); - - if (!$result) { - throw new ErrorException('cURL Error: '.$error); - } - - return (bool) $result; - } - - /** {@inheritDoc} */ - public function getFilename(): string - { - if ($this->outputFile === null) { - throw new RuntimeException('Call download() first'); - } - - return $this->outputFile; - } - - /** {@inheritDoc} */ - public function cleanup() - { - if ($this->outputFile !== null && \file_exists($this->outputFile)) { - \unlink($this->outputFile); - } - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/VersionUpdater/Downloader/FileDownloader.php b/docker/streamline-src/vendor/psy/psysh/src/VersionUpdater/Downloader/FileDownloader.php deleted file mode 100644 index 2af6f696..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/VersionUpdater/Downloader/FileDownloader.php +++ /dev/null @@ -1,61 +0,0 @@ -tempDir = $tempDir; - } - - /** {@inheritDoc} */ - public function download(string $url): bool - { - $tempDir = $this->tempDir ?: \sys_get_temp_dir(); - $this->outputFile = \tempnam($tempDir, 'psysh-archive-'); - $targetName = $this->outputFile.'.tar.gz'; - - if (!\rename($this->outputFile, $targetName)) { - return false; - } - - $this->outputFile = $targetName; - - return (bool) \file_put_contents($this->outputFile, \file_get_contents($url)); - } - - /** {@inheritDoc} */ - public function getFilename(): string - { - if ($this->outputFile === null) { - throw new RuntimeException('Call download() first'); - } - - return $this->outputFile; - } - - /** {@inheritDoc} */ - public function cleanup() - { - if ($this->outputFile !== null && \file_exists($this->outputFile)) { - \unlink($this->outputFile); - } - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/VersionUpdater/GitHubChecker.php b/docker/streamline-src/vendor/psy/psysh/src/VersionUpdater/GitHubChecker.php deleted file mode 100644 index 62209d2e..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/VersionUpdater/GitHubChecker.php +++ /dev/null @@ -1,81 +0,0 @@ -getLatest(), '>='); - } - - public function getLatest(): string - { - if (!isset($this->latest)) { - $this->setLatest($this->getVersionFromTag()); - } - - return $this->latest; - } - - public function setLatest(string $version) - { - $this->latest = $version; - } - - private function getVersionFromTag(): ?string - { - $contents = $this->fetchLatestRelease(); - if (!$contents || !isset($contents->tag_name)) { - throw new \InvalidArgumentException('Unable to check for updates'); - } - $this->setLatest($contents->tag_name); - - return $this->getLatest(); - } - - /** - * Set to public to make testing easier. - * - * @return mixed - */ - public function fetchLatestRelease() - { - $context = \stream_context_create([ - 'http' => [ - 'user_agent' => 'PsySH/'.Shell::VERSION, - 'timeout' => 1.0, - ], - ]); - - \set_error_handler(function () { - // Just ignore all errors with this. The checker will throw an exception - // if it doesn't work :) - }); - - $result = @\file_get_contents(self::URL, false, $context); - - \restore_error_handler(); - - return \json_decode($result); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/VersionUpdater/Installer.php b/docker/streamline-src/vendor/psy/psysh/src/VersionUpdater/Installer.php deleted file mode 100644 index c346799a..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/VersionUpdater/Installer.php +++ /dev/null @@ -1,133 +0,0 @@ -tempDirectory = $tempDirectory ?: \sys_get_temp_dir(); - $this->installLocation = \Phar::running(false); - } - - /** - * Public to allow the Downloader to use the temporary directory if it's been set. - */ - public function getTempDirectory(): string - { - return $this->tempDirectory; - } - - /** - * Verify the currently installed PsySH phar is writable so it can be replaced. - */ - public function isInstallLocationWritable(): bool - { - return \is_writable($this->installLocation); - } - - /** - * Verify the temporary directory is writable so downloads and backups can be saved there. - */ - public function isTempDirectoryWritable(): bool - { - return \is_writable($this->tempDirectory); - } - - /** - * Verifies the downloaded archive can be extracted with \PharData. - */ - public function isValidSource(string $sourceArchive): bool - { - if (!\class_exists('\PharData')) { - return false; - } - $pharArchive = new \PharData($sourceArchive); - - return $pharArchive->valid(); - } - - /** - * Extract the "psysh" phar from the archive and move it, replacing the currently installed phar. - */ - public function install(string $sourceArchive): bool - { - $pharArchive = new \PharData($sourceArchive); - $outputDirectory = \tempnam($this->tempDirectory, 'psysh-'); - - // remove the temp file, and replace it with a sub-directory - if (!\unlink($outputDirectory) || !\mkdir($outputDirectory, 0700)) { - return false; - } - - $pharArchive->extractTo($outputDirectory, ['psysh'], true); - - $renamed = \rename($outputDirectory.'/psysh', $this->installLocation); - - // Remove the sub-directory created to extract the psysh binary/phar - \rmdir($outputDirectory); - - return $renamed; - } - - /** - * Create a backup of the currently installed PsySH phar in the temporary directory with a version number postfix. - */ - public function createBackup(string $version): bool - { - $backupFilename = $this->getBackupFilename($version); - - if (\file_exists($backupFilename) && !\is_writable($backupFilename)) { - return false; - } - - return \rename($this->installLocation, $backupFilename); - } - - /** - * Restore the backup file to the original PsySH install location. - * - * @throws ErrorException If the backup file could not be found - */ - public function restoreFromBackup(string $version): bool - { - $backupFilename = $this->getBackupFilename($version); - - if (!\file_exists($backupFilename)) { - throw new ErrorException("Cannot restore from backup. File not found! [{$backupFilename}]"); - } - - return \rename($backupFilename, $this->installLocation); - } - - /** - * Get the full path for the backup target file location. - */ - public function getBackupFilename(string $version): string - { - $installFilename = \basename($this->installLocation); - - return \sprintf('%s/%s.%s', $this->tempDirectory, $installFilename, $version); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/VersionUpdater/IntervalChecker.php b/docker/streamline-src/vendor/psy/psysh/src/VersionUpdater/IntervalChecker.php deleted file mode 100644 index 4833fbdd..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/VersionUpdater/IntervalChecker.php +++ /dev/null @@ -1,72 +0,0 @@ -cacheFile = $cacheFile; - $this->interval = $interval; - } - - public function fetchLatestRelease() - { - // Read the cached file - $cached = \json_decode(@\file_get_contents($this->cacheFile, false)); - if ($cached && isset($cached->last_check) && isset($cached->release)) { - $now = new \DateTime(); - $lastCheck = new \DateTime($cached->last_check); - if ($lastCheck >= $now->sub($this->getDateInterval())) { - return $cached->release; - } - } - - // Fall back to fetching from GitHub - $release = parent::fetchLatestRelease(); - if ($release && isset($release->tag_name)) { - $this->updateCache($release); - } - - return $release; - } - - /** - * @throws \RuntimeException if interval passed to constructor is not supported - */ - private function getDateInterval(): \DateInterval - { - switch ($this->interval) { - case Checker::DAILY: - return new \DateInterval('P1D'); - case Checker::WEEKLY: - return new \DateInterval('P1W'); - case Checker::MONTHLY: - return new \DateInterval('P1M'); - } - - throw new \RuntimeException('Invalid interval configured'); - } - - private function updateCache($release) - { - $data = [ - 'last_check' => \date(\DATE_ATOM), - 'release' => $release, - ]; - - \file_put_contents($this->cacheFile, \json_encode($data)); - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/VersionUpdater/SelfUpdate.php b/docker/streamline-src/vendor/psy/psysh/src/VersionUpdater/SelfUpdate.php deleted file mode 100644 index b970d18a..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/VersionUpdater/SelfUpdate.php +++ /dev/null @@ -1,174 +0,0 @@ -checker = $checker; - $this->installer = $installer; - } - - /** - * Allow the downloader to be injected for testing. - * - * @return void - */ - public function setDownloader(Downloader $downloader) - { - $this->downloader = $downloader; - } - - /** - * Get the currently set Downloader or create one based on the capabilities of the php environment. - * - * @throws ErrorException if a downloader cannot be created for the php environment - */ - private function getDownloader(): Downloader - { - if (!isset($this->downloader)) { - return Downloader\Factory::getDownloader(); - } - - return $this->downloader; - } - - /** - * Build the download URL for the latest release. - * - * The file name used in the URL will include the flavour postfix extracted from the current version - * if it's present - */ - private function getAssetUrl(string $latestVersion): string - { - $versionPostfix = ''; - if (\strpos(Shell::VERSION, '+')) { - $versionPostfix = '-'.\substr(Shell::VERSION, \strpos(Shell::VERSION, '+') + 1); - } - $downloadFilename = \sprintf('psysh-%s%s.tar.gz', $latestVersion, $versionPostfix); - - // check if latest release data contains an asset matching the filename? - - return \sprintf('%s/%s/%s', self::URL_PREFIX, $latestVersion, $downloadFilename); - } - - /** - * Execute the self-update process. - * - * @throws ErrorException if the current version is not restored when installation fails - */ - public function run(InputInterface $input, OutputInterface $output): int - { - $currentVersion = Shell::VERSION; - - // already have the latest version? - if ($this->checker->isLatest()) { - // current version is latest version... - $output->writeln('Current version is up-to-date.'); - - return self::SUCCESS; - } - - // can overwrite current version? - if (!$this->installer->isInstallLocationWritable()) { - $output->writeln('Installed version is not writable.'); - - return self::FAILURE; - } - // can download to, and create a backup in the temp directory? - if (!$this->installer->isTempDirectoryWritable()) { - $output->writeln('Temporary directory is not writable.'); - - return self::FAILURE; - } - - $latestVersion = $this->checker->getLatest(); - $downloadUrl = $this->getAssetUrl($latestVersion); - - $output->write("Downloading PsySH $latestVersion ..."); - - try { - $downloader = $this->getDownloader(); - $downloader->setTempDir($this->installer->getTempDirectory()); - $downloaded = $downloader->download($downloadUrl); - } catch (ErrorException $e) { - $output->write(' Failed.'); - $output->writeln(\sprintf('%s', $e->getMessage())); - - return self::FAILURE; - } - - if (!$downloaded) { - $output->writeln('Download failed.'); - $downloader->cleanup(); - - return self::FAILURE; - } else { - $output->write(' OK'.\PHP_EOL); - } - - $downloadedFile = $downloader->getFilename(); - - if (!$this->installer->isValidSource($downloadedFile)) { - $downloader->cleanup(); - $output->writeln('Downloaded file is not a valid archive.'); - - return self::FAILURE; - } - - // create backup as bin.old-version in the temporary directory - $backupCreated = $this->installer->createBackup($currentVersion); - if (!$backupCreated) { - $downloader->cleanup(); - $output->writeln('Failed to create a backup of the current version.'); - - return self::FAILURE; - } elseif ($input->getOption('verbose')) { - $backupFilename = $this->installer->getBackupFilename($currentVersion); - $output->writeln('Created backup of current version: '.$backupFilename); - } - - if (!$this->installer->install($downloadedFile)) { - $this->installer->restoreFromBackup($currentVersion); - $downloader->cleanup(); - $output->writeln("Failed to install new PsySH version $latestVersion."); - - return self::FAILURE; - } - - // Remove the downloaded archive file from the temporary directory - $downloader->cleanup(); - - $output->writeln("Updated PsySH from $currentVersion to $latestVersion"); - - return self::SUCCESS; - } -} diff --git a/docker/streamline-src/vendor/psy/psysh/src/functions.php b/docker/streamline-src/vendor/psy/psysh/src/functions.php deleted file mode 100644 index 7b58344e..00000000 --- a/docker/streamline-src/vendor/psy/psysh/src/functions.php +++ /dev/null @@ -1,478 +0,0 @@ -setScopeVariables($vars); - - // Show a couple of lines of call context for the debug session. - // - // @todo come up with a better way of doing this which doesn't involve injecting input :-P - if ($sh->has('whereami')) { - $sh->addInput('whereami -n2', true); - } - - if (\is_string($bindTo)) { - $sh->setBoundClass($bindTo); - } elseif ($bindTo !== null) { - $sh->setBoundObject($bindTo); - } - - $sh->run(); - - return $sh->getScopeVariables(false); - } -} - -if (!\function_exists('Psy\\info')) { - /** - * Get a bunch of debugging info about the current PsySH environment and - * configuration. - * - * If a Configuration param is passed, that configuration is stored and - * used for the current shell session, and no debugging info is returned. - * - * @param Configuration|null $config - * - * @return array|null - */ - function info(?Configuration $config = null) - { - static $lastConfig; - if ($config !== null) { - $lastConfig = $config; - - return; - } - - $prettyPath = function ($path) { - return $path; - }; - - $homeDir = (new ConfigPaths())->homeDir(); - if ($homeDir && $homeDir = \rtrim($homeDir, '/')) { - $homePattern = '#^'.\preg_quote($homeDir, '#').'/#'; - $prettyPath = function ($path) use ($homePattern) { - if (\is_string($path)) { - return \preg_replace($homePattern, '~/', $path); - } else { - return $path; - } - }; - } - - $config = $lastConfig ?: new Configuration(); - $configEnv = (isset($_SERVER['PSYSH_CONFIG']) && $_SERVER['PSYSH_CONFIG']) ? $_SERVER['PSYSH_CONFIG'] : false; - if ($configEnv === false && \PHP_SAPI === 'cli-server') { - $configEnv = \getenv('PSYSH_CONFIG'); - } - - $shellInfo = [ - 'PsySH version' => Shell::VERSION, - ]; - - $core = [ - 'PHP version' => \PHP_VERSION, - 'OS' => \PHP_OS, - 'default includes' => $config->getDefaultIncludes(), - 'require semicolons' => $config->requireSemicolons(), - 'strict types' => $config->strictTypes(), - 'error logging level' => $config->errorLoggingLevel(), - 'config file' => [ - 'default config file' => $prettyPath($config->getConfigFile()), - 'local config file' => $prettyPath($config->getLocalConfigFile()), - 'PSYSH_CONFIG env' => $prettyPath($configEnv), - ], - // 'config dir' => $config->getConfigDir(), - // 'data dir' => $config->getDataDir(), - // 'runtime dir' => $config->getRuntimeDir(), - ]; - - // Use an explicit, fresh update check here, rather than relying on whatever is in $config. - $checker = new GitHubChecker(); - $updateAvailable = null; - $latest = null; - try { - $updateAvailable = !$checker->isLatest(); - $latest = $checker->getLatest(); - } catch (\Throwable $e) { - } - - $updates = [ - 'update available' => $updateAvailable, - 'latest release version' => $latest, - 'update check interval' => $config->getUpdateCheck(), - 'update cache file' => $prettyPath($config->getUpdateCheckCacheFile()), - ]; - - $input = [ - 'interactive mode' => $config->interactiveMode(), - 'input interactive' => $config->getInputInteractive(), - 'yolo' => $config->yolo(), - ]; - - if ($config->hasReadline()) { - $info = \readline_info(); - - $readline = [ - 'readline available' => true, - 'readline enabled' => $config->useReadline(), - 'readline service' => \get_class($config->getReadline()), - ]; - - if (isset($info['library_version'])) { - $readline['readline library'] = $info['library_version']; - } - - if (isset($info['readline_name']) && $info['readline_name'] !== '') { - $readline['readline name'] = $info['readline_name']; - } - } else { - $readline = [ - 'readline available' => false, - ]; - } - - $output = [ - 'color mode' => $config->colorMode(), - 'output decorated' => $config->getOutputDecorated(), - 'output verbosity' => $config->verbosity(), - 'output pager' => $config->getPager(), - ]; - - $theme = $config->theme(); - // @todo show styles (but only if they're different than default?) - $output['theme'] = [ - 'compact' => $theme->compact(), - 'prompt' => $theme->prompt(), - 'bufferPrompt' => $theme->bufferPrompt(), - 'replayPrompt' => $theme->replayPrompt(), - 'returnValue' => $theme->returnValue(), - ]; - - $pcntl = [ - 'pcntl available' => ProcessForker::isPcntlSupported(), - 'posix available' => ProcessForker::isPosixSupported(), - ]; - - if ($disabledPcntl = ProcessForker::disabledPcntlFunctions()) { - $pcntl['disabled pcntl functions'] = $disabledPcntl; - } - - if ($disabledPosix = ProcessForker::disabledPosixFunctions()) { - $pcntl['disabled posix functions'] = $disabledPosix; - } - - $pcntl['use pcntl'] = $config->usePcntl(); - - $history = [ - 'history file' => $prettyPath($config->getHistoryFile()), - 'history size' => $config->getHistorySize(), - 'erase duplicates' => $config->getEraseDuplicates(), - ]; - - $docs = [ - 'manual db file' => $prettyPath($config->getManualDbFile()), - 'sqlite available' => true, - ]; - - try { - if ($db = $config->getManualDb()) { - if ($q = $db->query('SELECT * FROM meta;')) { - $q->setFetchMode(\PDO::FETCH_KEY_PAIR); - $meta = $q->fetchAll(); - - foreach ($meta as $key => $val) { - switch ($key) { - case 'built_at': - $d = new \DateTime('@'.$val); - $val = $d->format(\DateTime::RFC2822); - break; - } - $key = 'db '.\str_replace('_', ' ', $key); - $docs[$key] = $val; - } - } else { - $docs['db schema'] = '0.1.0'; - } - } - } catch (Exception\RuntimeException $e) { - if ($e->getMessage() === 'SQLite PDO driver not found') { - $docs['sqlite available'] = false; - } else { - throw $e; - } - } - - $autocomplete = [ - 'tab completion enabled' => $config->useTabCompletion(), - 'bracketed paste' => $config->useBracketedPaste(), - ]; - - // Shenanigans, but totally justified. - try { - if ($shell = Sudo::fetchProperty($config, 'shell')) { - $shellClass = \get_class($shell); - if ($shellClass !== 'Psy\\Shell') { - $shellInfo = [ - 'PsySH version' => $shell::VERSION, - 'Shell class' => $shellClass, - ]; - } - - try { - $core['loop listeners'] = \array_map('get_class', Sudo::fetchProperty($shell, 'loopListeners')); - } catch (\ReflectionException $e) { - // shrug - } - - $core['commands'] = \array_map('get_class', $shell->all()); - - try { - $autocomplete['custom matchers'] = \array_map('get_class', Sudo::fetchProperty($shell, 'matchers')); - } catch (\ReflectionException $e) { - // shrug - } - } - } catch (\ReflectionException $e) { - // shrug - } - - // @todo Show Presenter / custom casters. - - return \array_merge($shellInfo, $core, \compact('updates', 'pcntl', 'input', 'readline', 'output', 'history', 'docs', 'autocomplete')); - } -} - -if (!\function_exists('Psy\\bin')) { - /** - * `psysh` command line executable. - * - * @return \Closure - */ - function bin(): \Closure - { - return function () { - if (!isset($_SERVER['PSYSH_IGNORE_ENV']) || !$_SERVER['PSYSH_IGNORE_ENV']) { - if (\defined('HHVM_VERSION_ID')) { - \fwrite(\STDERR, 'PsySH v0.11 and higher does not support HHVM. Install an older version, or set the environment variable PSYSH_IGNORE_ENV=1 to override this restriction and proceed anyway.'.\PHP_EOL); - exit(1); - } - - if (\PHP_VERSION_ID < 70400) { - \fwrite(\STDERR, 'PHP 7.4.0 or higher is required. You can set the environment variable PSYSH_IGNORE_ENV=1 to override this restriction and proceed anyway.'.\PHP_EOL); - exit(1); - } - - if (\PHP_VERSION_ID > 89999) { - \fwrite(\STDERR, 'PHP 9 or higher is not supported. You can set the environment variable PSYSH_IGNORE_ENV=1 to override this restriction and proceed anyway.'.\PHP_EOL); - exit(1); - } - - if (!\function_exists('json_encode')) { - \fwrite(\STDERR, 'The JSON extension is required. Please install it. You can set the environment variable PSYSH_IGNORE_ENV=1 to override this restriction and proceed anyway.'.\PHP_EOL); - exit(1); - } - - if (!\function_exists('token_get_all')) { - \fwrite(\STDERR, 'The Tokenizer extension is required. Please install it. You can set the environment variable PSYSH_IGNORE_ENV=1 to override this restriction and proceed anyway.'.\PHP_EOL); - exit(1); - } - } - - $usageException = null; - $shellIsPhar = Shell::isPhar(); - - $input = new ArgvInput(); - try { - $input->bind(new InputDefinition(\array_merge(Configuration::getInputOptions(), [ - new InputOption('help', 'h', InputOption::VALUE_NONE), - new InputOption('version', 'V', InputOption::VALUE_NONE), - new InputOption('self-update', 'u', InputOption::VALUE_NONE), - - new InputArgument('include', InputArgument::IS_ARRAY), - ]))); - } catch (\RuntimeException $e) { - $usageException = $e; - } - - try { - $config = Configuration::fromInput($input); - } catch (\InvalidArgumentException $e) { - $usageException = $e; - } - - // Handle --help - if (!isset($config) || $usageException !== null || $input->getOption('help')) { - if ($usageException !== null) { - echo $usageException->getMessage().\PHP_EOL.\PHP_EOL; - } - - $version = Shell::getVersionHeader(false); - $argv = isset($_SERVER['argv']) ? $_SERVER['argv'] : []; - $name = $argv ? \basename(\reset($argv)) : 'psysh'; - - echo <<getOption('version')) { - echo Shell::getVersionHeader($config->useUnicode()).\PHP_EOL; - exit(0); - } - - // Handle --self-update - if ($input->getOption('self-update')) { - if (!$shellIsPhar) { - \fwrite(\STDERR, 'The --self-update option can only be used with with a phar based install.'.\PHP_EOL); - exit(1); - } - $selfUpdate = new SelfUpdate(new GitHubChecker(), new Installer()); - $result = $selfUpdate->run($input, $config->getOutput()); - exit($result); - } - - $shell = new Shell($config); - - // Pass additional arguments to Shell as 'includes' - $shell->setIncludes($input->getArgument('include')); - - try { - // And go! - $shell->run(); - } catch (\Throwable $e) { - \fwrite(\STDERR, $e->getMessage().\PHP_EOL); - - // @todo this triggers the "exited unexpectedly" logic in the - // ForkingLoop, so we can't exit(1) after starting the shell... - // fix this :) - - // exit(1); - } - }; - } -} diff --git a/docker/streamline-src/vendor/ramsey/uuid/composer.json b/docker/streamline-src/vendor/ramsey/uuid/composer.json deleted file mode 100644 index 8139b54e..00000000 --- a/docker/streamline-src/vendor/ramsey/uuid/composer.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "name": "ramsey/uuid", - "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", - "license": "MIT", - "type": "library", - "keywords": [ - "uuid", - "identifier", - "guid" - ], - "require": { - "php": "^8.0", - "ext-json": "*", - "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12", - "ramsey/collection": "^1.2 || ^2.0" - }, - "require-dev": { - "captainhook/captainhook": "^5.10", - "captainhook/plugin-composer": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "doctrine/annotations": "^1.8", - "ergebnis/composer-normalize": "^2.15", - "mockery/mockery": "^1.3", - "paragonie/random-lib": "^2", - "php-mock/php-mock": "^2.2", - "php-mock/php-mock-mockery": "^1.3", - "php-parallel-lint/php-parallel-lint": "^1.1", - "phpbench/phpbench": "^1.0", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-mockery": "^1.1", - "phpstan/phpstan-phpunit": "^1.1", - "phpunit/phpunit": "^8.5 || ^9", - "ramsey/composer-repl": "^1.4", - "slevomat/coding-standard": "^8.4", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "replace": { - "rhumsaa/uuid": "self.version" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", - "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", - "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", - "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." - }, - "minimum-stability": "dev", - "prefer-stable": true, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "autoload-dev": { - "psr-4": { - "Ramsey\\Uuid\\Benchmark\\": "tests/benchmark/", - "Ramsey\\Uuid\\StaticAnalysis\\": "tests/static-analysis/", - "Ramsey\\Uuid\\Test\\": "tests/" - } - }, - "config": { - "allow-plugins": { - "captainhook/plugin-composer": true, - "ergebnis/composer-normalize": true, - "phpstan/extension-installer": true, - "dealerdirect/phpcodesniffer-composer-installer": true, - "ramsey/composer-repl": true - }, - "sort-packages": true - }, - "extra": { - "captainhook": { - "force-install": true - } - }, - "scripts": { - "analyze": [ - "@phpstan", - "@psalm" - ], - "build:clean": "git clean -fX build/", - "lint": "parallel-lint src tests", - "lint:paths": "parallel-lint", - "phpbench": "phpbench run", - "phpcbf": "phpcbf -vpw --cache=build/cache/phpcs.cache", - "phpcs": "phpcs --cache=build/cache/phpcs.cache", - "phpstan": [ - "phpstan analyse --no-progress --memory-limit=1G", - "phpstan analyse -c phpstan-tests.neon --no-progress --memory-limit=1G" - ], - "phpunit": "phpunit --verbose --colors=always", - "phpunit-coverage": "phpunit --verbose --colors=always --coverage-html build/coverage", - "psalm": "psalm --show-info=false --config=psalm.xml", - "test": [ - "@lint", - "@phpbench", - "@phpcs", - "@phpstan", - "@psalm", - "@phpunit" - ] - } -} diff --git a/docker/streamline-src/vendor/ramsey/uuid/src/Math/BrickMathCalculator.php b/docker/streamline-src/vendor/ramsey/uuid/src/Math/BrickMathCalculator.php deleted file mode 100644 index f065acd4..00000000 --- a/docker/streamline-src/vendor/ramsey/uuid/src/Math/BrickMathCalculator.php +++ /dev/null @@ -1,146 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Math; - -use Brick\Math\BigDecimal; -use Brick\Math\BigInteger; -use Brick\Math\Exception\MathException; -use Brick\Math\RoundingMode as BrickMathRounding; -use Ramsey\Uuid\Exception\InvalidArgumentException; -use Ramsey\Uuid\Type\Decimal; -use Ramsey\Uuid\Type\Hexadecimal; -use Ramsey\Uuid\Type\Integer as IntegerObject; -use Ramsey\Uuid\Type\NumberInterface; - -/** - * A calculator using the brick/math library for arbitrary-precision arithmetic - * - * @psalm-immutable - */ -final class BrickMathCalculator implements CalculatorInterface -{ - private const ROUNDING_MODE_MAP = [ - RoundingMode::UNNECESSARY => BrickMathRounding::UNNECESSARY, - RoundingMode::UP => BrickMathRounding::UP, - RoundingMode::DOWN => BrickMathRounding::DOWN, - RoundingMode::CEILING => BrickMathRounding::CEILING, - RoundingMode::FLOOR => BrickMathRounding::FLOOR, - RoundingMode::HALF_UP => BrickMathRounding::HALF_UP, - RoundingMode::HALF_DOWN => BrickMathRounding::HALF_DOWN, - RoundingMode::HALF_CEILING => BrickMathRounding::HALF_CEILING, - RoundingMode::HALF_FLOOR => BrickMathRounding::HALF_FLOOR, - RoundingMode::HALF_EVEN => BrickMathRounding::HALF_EVEN, - ]; - - public function add(NumberInterface $augend, NumberInterface ...$addends): NumberInterface - { - $sum = BigInteger::of($augend->toString()); - - foreach ($addends as $addend) { - $sum = $sum->plus($addend->toString()); - } - - return new IntegerObject((string) $sum); - } - - public function subtract(NumberInterface $minuend, NumberInterface ...$subtrahends): NumberInterface - { - $difference = BigInteger::of($minuend->toString()); - - foreach ($subtrahends as $subtrahend) { - $difference = $difference->minus($subtrahend->toString()); - } - - return new IntegerObject((string) $difference); - } - - public function multiply(NumberInterface $multiplicand, NumberInterface ...$multipliers): NumberInterface - { - $product = BigInteger::of($multiplicand->toString()); - - foreach ($multipliers as $multiplier) { - $product = $product->multipliedBy($multiplier->toString()); - } - - return new IntegerObject((string) $product); - } - - public function divide( - int $roundingMode, - int $scale, - NumberInterface $dividend, - NumberInterface ...$divisors - ): NumberInterface { - $brickRounding = $this->getBrickRoundingMode($roundingMode); - - $quotient = BigDecimal::of($dividend->toString()); - - foreach ($divisors as $divisor) { - $quotient = $quotient->dividedBy($divisor->toString(), $scale, $brickRounding); - } - - if ($scale === 0) { - return new IntegerObject((string) $quotient->toBigInteger()); - } - - return new Decimal((string) $quotient); - } - - public function fromBase(string $value, int $base): IntegerObject - { - try { - return new IntegerObject((string) BigInteger::fromBase($value, $base)); - } catch (MathException | \InvalidArgumentException $exception) { - throw new InvalidArgumentException( - $exception->getMessage(), - (int) $exception->getCode(), - $exception - ); - } - } - - public function toBase(IntegerObject $value, int $base): string - { - try { - return BigInteger::of($value->toString())->toBase($base); - } catch (MathException | \InvalidArgumentException $exception) { - throw new InvalidArgumentException( - $exception->getMessage(), - (int) $exception->getCode(), - $exception - ); - } - } - - public function toHexadecimal(IntegerObject $value): Hexadecimal - { - return new Hexadecimal($this->toBase($value, 16)); - } - - public function toInteger(Hexadecimal $value): IntegerObject - { - return $this->fromBase($value->toString(), 16); - } - - /** - * Maps ramsey/uuid rounding modes to those used by brick/math - * - * @return BrickMathRounding::* - */ - private function getBrickRoundingMode(int $roundingMode) - { - return self::ROUNDING_MODE_MAP[$roundingMode] ?? BrickMathRounding::UNNECESSARY; - } -} diff --git a/docker/streamline-src/vendor/sebastian/cli-parser/ChangeLog.md b/docker/streamline-src/vendor/sebastian/cli-parser/ChangeLog.md deleted file mode 100644 index 0cc528ea..00000000 --- a/docker/streamline-src/vendor/sebastian/cli-parser/ChangeLog.md +++ /dev/null @@ -1,30 +0,0 @@ -# ChangeLog - -All notable changes are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles. - -## [2.0.1] - 2024-03-02 - -### Changed - -* Do not use implicitly nullable parameters - -## [2.0.0] - 2023-02-03 - -### Removed - -* This component is no longer supported on PHP 7.3, PHP 7.4, and PHP 8.0 - -## [1.0.1] - 2020-09-28 - -### Changed - -* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` - -## [1.0.0] - 2020-08-12 - -* Initial release - -[2.0.1]: https://github.com/sebastianbergmann/cli-parser/compare/2.0.0...2.0.1 -[2.0.0]: https://github.com/sebastianbergmann/cli-parser/compare/1.0.1...2.0.0 -[1.0.1]: https://github.com/sebastianbergmann/cli-parser/compare/1.0.0...1.0.1 -[1.0.0]: https://github.com/sebastianbergmann/cli-parser/compare/bb7bb3297957927962b0a3335befe7b66f7462e9...1.0.0 diff --git a/docker/streamline-src/vendor/sebastian/cli-parser/LICENSE b/docker/streamline-src/vendor/sebastian/cli-parser/LICENSE deleted file mode 100644 index edaedf61..00000000 --- a/docker/streamline-src/vendor/sebastian/cli-parser/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -BSD 3-Clause License - -Copyright (c) 2020-2024, Sebastian Bergmann -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/docker/streamline-src/vendor/sebastian/cli-parser/SECURITY.md b/docker/streamline-src/vendor/sebastian/cli-parser/SECURITY.md deleted file mode 100644 index d88ff001..00000000 --- a/docker/streamline-src/vendor/sebastian/cli-parser/SECURITY.md +++ /dev/null @@ -1,30 +0,0 @@ -# Security Policy - -If you believe you have found a security vulnerability in the library that is developed in this repository, please report it to us through coordinated disclosure. - -**Please do not report security vulnerabilities through public GitHub issues, discussions, or pull requests.** - -Instead, please email `sebastian@phpunit.de`. - -Please include as much of the information listed below as you can to help us better understand and resolve the issue: - -* The type of issue -* Full paths of source file(s) related to the manifestation of the issue -* The location of the affected source code (tag/branch/commit or direct URL) -* Any special configuration required to reproduce the issue -* Step-by-step instructions to reproduce the issue -* Proof-of-concept or exploit code (if possible) -* Impact of the issue, including how an attacker might exploit the issue - -This information will help us triage your report more quickly. - -## Web Context - -The library that is developed in this repository was either extracted from [PHPUnit](https://github.com/sebastianbergmann/phpunit) or developed specifically as a dependency for PHPUnit. - -The library is developed with a focus on development environments and the command-line. No specific testing or hardening with regard to using the library in an HTTP or web context or with untrusted input data is performed. The library might also contain functionality that intentionally exposes internal application data for debugging purposes. - -If the library is used in a web application, the application developer is responsible for filtering inputs or escaping outputs as necessary and for verifying that the used functionality is safe for use within the intended context. - -Vulnerabilities specific to the use outside a development context will be fixed as applicable, provided that the fix does not have an averse effect on the primary use case for development purposes. - diff --git a/docker/streamline-src/vendor/sebastian/cli-parser/composer.json b/docker/streamline-src/vendor/sebastian/cli-parser/composer.json deleted file mode 100644 index 51b74472..00000000 --- a/docker/streamline-src/vendor/sebastian/cli-parser/composer.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "sebastian/cli-parser", - "description": "Library for parsing CLI options", - "type": "library", - "homepage": "https://github.com/sebastianbergmann/cli-parser", - "license": "BSD-3-Clause", - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "support": { - "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "security": "https://github.com/sebastianbergmann/cli-parser/security/policy" - }, - "prefer-stable": true, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "config": { - "platform": { - "php": "8.1.0" - }, - "optimize-autoloader": true, - "sort-packages": true - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "extra": { - "branch-alias": { - "dev-main": "2.0-dev" - } - } -} diff --git a/docker/streamline-src/vendor/sebastian/cli-parser/src/Parser.php b/docker/streamline-src/vendor/sebastian/cli-parser/src/Parser.php deleted file mode 100644 index ab2d975c..00000000 --- a/docker/streamline-src/vendor/sebastian/cli-parser/src/Parser.php +++ /dev/null @@ -1,206 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CliParser; - -use function array_map; -use function array_merge; -use function array_shift; -use function array_slice; -use function assert; -use function count; -use function current; -use function explode; -use function is_array; -use function is_int; -use function is_string; -use function key; -use function next; -use function preg_replace; -use function reset; -use function sort; -use function str_ends_with; -use function str_starts_with; -use function strlen; -use function strstr; -use function substr; - -final class Parser -{ - /** - * @psalm-param list $argv - * @psalm-param list $longOptions - * - * @psalm-return array{0: array, 1: array} - * - * @throws AmbiguousOptionException - * @throws OptionDoesNotAllowArgumentException - * @throws RequiredOptionArgumentMissingException - * @throws UnknownOptionException - */ - public function parse(array $argv, string $shortOptions, ?array $longOptions = null): array - { - if (empty($argv)) { - return [[], []]; - } - - $options = []; - $nonOptions = []; - - if ($longOptions) { - sort($longOptions); - } - - if (isset($argv[0][0]) && $argv[0][0] !== '-') { - array_shift($argv); - } - - reset($argv); - - $argv = array_map('trim', $argv); - - while (false !== $arg = current($argv)) { - $i = key($argv); - - assert(is_int($i)); - - next($argv); - - if ($arg === '') { - continue; - } - - if ($arg === '--') { - $nonOptions = array_merge($nonOptions, array_slice($argv, $i + 1)); - - break; - } - - if ($arg[0] !== '-' || (strlen($arg) > 1 && $arg[1] === '-' && !$longOptions)) { - $nonOptions[] = $arg; - - continue; - } - - if (strlen($arg) > 1 && $arg[1] === '-' && is_array($longOptions)) { - $this->parseLongOption( - substr($arg, 2), - $longOptions, - $options, - $argv, - ); - - continue; - } - - $this->parseShortOption( - substr($arg, 1), - $shortOptions, - $options, - $argv, - ); - } - - return [$options, $nonOptions]; - } - - /** - * @throws RequiredOptionArgumentMissingException - */ - private function parseShortOption(string $argument, string $shortOptions, array &$options, array &$argv): void - { - $argumentLength = strlen($argument); - - for ($i = 0; $i < $argumentLength; $i++) { - $option = $argument[$i]; - $optionArgument = null; - - if ($argument[$i] === ':' || ($spec = strstr($shortOptions, $option)) === false) { - throw new UnknownOptionException('-' . $option); - } - - if (strlen($spec) > 1 && $spec[1] === ':') { - if ($i + 1 < $argumentLength) { - $options[] = [$option, substr($argument, $i + 1)]; - - break; - } - - if (!(strlen($spec) > 2 && $spec[2] === ':')) { - $optionArgument = current($argv); - - if (!$optionArgument) { - throw new RequiredOptionArgumentMissingException('-' . $option); - } - - assert(is_string($optionArgument)); - - next($argv); - } - } - - $options[] = [$option, $optionArgument]; - } - } - - /** - * @psalm-param list $longOptions - * - * @throws AmbiguousOptionException - * @throws OptionDoesNotAllowArgumentException - * @throws RequiredOptionArgumentMissingException - * @throws UnknownOptionException - */ - private function parseLongOption(string $argument, array $longOptions, array &$options, array &$argv): void - { - $count = count($longOptions); - $list = explode('=', $argument); - $option = $list[0]; - $optionArgument = null; - - if (count($list) > 1) { - $optionArgument = $list[1]; - } - - $optionLength = strlen($option); - - foreach ($longOptions as $i => $longOption) { - $opt_start = substr($longOption, 0, $optionLength); - - if ($opt_start !== $option) { - continue; - } - - $opt_rest = substr($longOption, $optionLength); - - if ($opt_rest !== '' && $i + 1 < $count && $option[0] !== '=' && str_starts_with($longOptions[$i + 1], $option)) { - throw new AmbiguousOptionException('--' . $option); - } - - if (str_ends_with($longOption, '=')) { - if (!str_ends_with($longOption, '==') && !strlen((string) $optionArgument)) { - if (false === $optionArgument = current($argv)) { - throw new RequiredOptionArgumentMissingException('--' . $option); - } - - next($argv); - } - } elseif ($optionArgument) { - throw new OptionDoesNotAllowArgumentException('--' . $option); - } - - $fullOption = '--' . preg_replace('/={1,2}$/', '', $longOption); - $options[] = [$fullOption, $optionArgument]; - - return; - } - - throw new UnknownOptionException('--' . $option); - } -} diff --git a/docker/streamline-src/vendor/sebastian/cli-parser/src/exceptions/AmbiguousOptionException.php b/docker/streamline-src/vendor/sebastian/cli-parser/src/exceptions/AmbiguousOptionException.php deleted file mode 100644 index 99eb625a..00000000 --- a/docker/streamline-src/vendor/sebastian/cli-parser/src/exceptions/AmbiguousOptionException.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CliParser; - -use function sprintf; -use RuntimeException; - -final class AmbiguousOptionException extends RuntimeException implements Exception -{ - public function __construct(string $option) - { - parent::__construct( - sprintf( - 'Option "%s" is ambiguous', - $option, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/sebastian/cli-parser/src/exceptions/OptionDoesNotAllowArgumentException.php b/docker/streamline-src/vendor/sebastian/cli-parser/src/exceptions/OptionDoesNotAllowArgumentException.php deleted file mode 100644 index 7fea616b..00000000 --- a/docker/streamline-src/vendor/sebastian/cli-parser/src/exceptions/OptionDoesNotAllowArgumentException.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CliParser; - -use function sprintf; -use RuntimeException; - -final class OptionDoesNotAllowArgumentException extends RuntimeException implements Exception -{ - public function __construct(string $option) - { - parent::__construct( - sprintf( - 'Option "%s" does not allow an argument', - $option, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/sebastian/cli-parser/src/exceptions/RequiredOptionArgumentMissingException.php b/docker/streamline-src/vendor/sebastian/cli-parser/src/exceptions/RequiredOptionArgumentMissingException.php deleted file mode 100644 index 9add49a9..00000000 --- a/docker/streamline-src/vendor/sebastian/cli-parser/src/exceptions/RequiredOptionArgumentMissingException.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CliParser; - -use function sprintf; -use RuntimeException; - -final class RequiredOptionArgumentMissingException extends RuntimeException implements Exception -{ - public function __construct(string $option) - { - parent::__construct( - sprintf( - 'Required argument for option "%s" is missing', - $option, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/sebastian/cli-parser/src/exceptions/UnknownOptionException.php b/docker/streamline-src/vendor/sebastian/cli-parser/src/exceptions/UnknownOptionException.php deleted file mode 100644 index 560c7ad2..00000000 --- a/docker/streamline-src/vendor/sebastian/cli-parser/src/exceptions/UnknownOptionException.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CliParser; - -use function sprintf; -use RuntimeException; - -final class UnknownOptionException extends RuntimeException implements Exception -{ - public function __construct(string $option) - { - parent::__construct( - sprintf( - 'Unknown option "%s"', - $option, - ), - ); - } -} diff --git a/docker/streamline-src/vendor/sebastian/comparator/ChangeLog.md b/docker/streamline-src/vendor/sebastian/comparator/ChangeLog.md deleted file mode 100644 index d0ce173f..00000000 --- a/docker/streamline-src/vendor/sebastian/comparator/ChangeLog.md +++ /dev/null @@ -1,181 +0,0 @@ -# ChangeLog - -All notable changes are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. - -## [5.0.3] - 2024-10-18 - -### Fixed - -* Reverted [#113](https://github.com/sebastianbergmann/comparator/pull/113) as it broke backward compatibility - -## [5.0.2] - 2024-08-12 - -### Fixed - -* [#112](https://github.com/sebastianbergmann/comparator/issues/112): Arrays with different keys and the same values are considered equal in canonicalize mode - -## [5.0.1] - 2023-08-14 - -### Fixed - -* `MockObjectComparator` only works on instances of `PHPUnit\Framework\MockObject\MockObject`, but not on instances of `PHPUnit\Framework\MockObject\Stub` -* `MockObjectComparator` only ignores the `$__phpunit_invocationMocker` property, but not other properties with names prefixed with `__phpunit_` - -## [5.0.0] - 2023-02-03 - -### Changed - -* Methods now have parameter and return type declarations -* `Comparator::$factory` is now private, use `Comparator::factory()` instead -* `ComparisonFailure`, `DOMNodeComparator`, `DateTimeComparator`, `ExceptionComparator`, `MockObjectComparator`, `NumericComparator`, `ResourceComparator`, `SplObjectStorageComparator`, and `TypeComparator` are now `final` -* `ScalarComparator` and `DOMNodeComparator` now use `mb_strtolower($string, 'UTF-8')` instead of `strtolower($string)` - -### Removed - -* Removed `$identical` parameter from `ComparisonFailure::__construct()` -* Removed `Comparator::$exporter` -* Removed support for PHP 7.3, PHP 7.4, and PHP 8.0 - -## [4.0.8] - 2022-09-14 - -### Fixed - -* [#102](https://github.com/sebastianbergmann/comparator/pull/102): Fix `float` comparison precision - -## [4.0.7] - 2022-09-14 - -### Fixed - -* [#99](https://github.com/sebastianbergmann/comparator/pull/99): Fix weak comparison between `'0'` and `false` - -## [4.0.6] - 2020-10-26 - -### Fixed - -* `SebastianBergmann\Comparator\Exception` now correctly extends `\Throwable` - -## [4.0.5] - 2020-09-30 - -### Fixed - -* [#89](https://github.com/sebastianbergmann/comparator/pull/89): Handle PHP 8 `ValueError` - -## [4.0.4] - 2020-09-28 - -### Changed - -* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` - -## [4.0.3] - 2020-06-26 - -### Added - -* This component is now supported on PHP 8 - -## [4.0.2] - 2020-06-15 - -### Fixed - -* [#85](https://github.com/sebastianbergmann/comparator/issues/85): Version 4.0.1 breaks backward compatibility - -## [4.0.1] - 2020-06-15 - -### Changed - -* Tests etc. are now ignored for archive exports - -## [4.0.0] - 2020-02-07 - -### Removed - -* Removed support for PHP 7.1 and PHP 7.2 - -## [3.0.5] - 2022-09-14 - -### Fixed - -* [#102](https://github.com/sebastianbergmann/comparator/pull/102): Fix `float` comparison precision - -## [3.0.4] - 2022-09-14 - -### Fixed - -* [#99](https://github.com/sebastianbergmann/comparator/pull/99): Fix weak comparison between `'0'` and `false` - -## [3.0.3] - 2020-11-30 - -### Changed - -* Changed PHP version constraint in `composer.json` from `^7.1` to `>=7.1` - -## [3.0.2] - 2018-07-12 - -### Changed - -* By default, `MockObjectComparator` is now tried before all other (default) comparators - -## [3.0.1] - 2018-06-14 - -### Fixed - -* [#53](https://github.com/sebastianbergmann/comparator/pull/53): `DOMNodeComparator` ignores `$ignoreCase` parameter -* [#58](https://github.com/sebastianbergmann/comparator/pull/58): `ScalarComparator` does not handle extremely ugly string comparison edge cases - -## [3.0.0] - 2018-04-18 - -### Fixed - -* [#48](https://github.com/sebastianbergmann/comparator/issues/48): `DateTimeComparator` does not support fractional second deltas - -### Removed - -* Removed support for PHP 7.0 - -## [2.1.3] - 2018-02-01 - -### Changed - -* This component is now compatible with version 3 of `sebastian/diff` - -## [2.1.2] - 2018-01-12 - -### Fixed - -* Fix comparison of `DateTimeImmutable` objects - -## [2.1.1] - 2017-12-22 - -### Fixed - -* [phpunit/#2923](https://github.com/sebastianbergmann/phpunit/issues/2923): Unexpected failed date matching - -## [2.1.0] - 2017-11-03 - -### Added - -* Added `SebastianBergmann\Comparator\Factory::reset()` to unregister all non-default comparators -* Added support for `phpunit/phpunit-mock-objects` version `^5.0` - -[5.0.3]: https://github.com/sebastianbergmann/comparator/compare/5.0.2...5.0.3 -[5.0.2]: https://github.com/sebastianbergmann/comparator/compare/5.0.1...5.0.2 -[5.0.1]: https://github.com/sebastianbergmann/comparator/compare/5.0.0...5.0.1 -[5.0.0]: https://github.com/sebastianbergmann/comparator/compare/4.0.8...5.0.0 -[4.0.8]: https://github.com/sebastianbergmann/comparator/compare/4.0.7...4.0.8 -[4.0.7]: https://github.com/sebastianbergmann/comparator/compare/4.0.6...4.0.7 -[4.0.6]: https://github.com/sebastianbergmann/comparator/compare/4.0.5...4.0.6 -[4.0.5]: https://github.com/sebastianbergmann/comparator/compare/4.0.4...4.0.5 -[4.0.4]: https://github.com/sebastianbergmann/comparator/compare/4.0.3...4.0.4 -[4.0.3]: https://github.com/sebastianbergmann/comparator/compare/4.0.2...4.0.3 -[4.0.2]: https://github.com/sebastianbergmann/comparator/compare/4.0.1...4.0.2 -[4.0.1]: https://github.com/sebastianbergmann/comparator/compare/4.0.0...4.0.1 -[4.0.0]: https://github.com/sebastianbergmann/comparator/compare/3.0.5...4.0.0 -[3.0.5]: https://github.com/sebastianbergmann/comparator/compare/3.0.4...3.0.5 -[3.0.4]: https://github.com/sebastianbergmann/comparator/compare/3.0.3...3.0.4 -[3.0.3]: https://github.com/sebastianbergmann/comparator/compare/3.0.2...3.0.3 -[3.0.2]: https://github.com/sebastianbergmann/comparator/compare/3.0.1...3.0.2 -[3.0.1]: https://github.com/sebastianbergmann/comparator/compare/3.0.0...3.0.1 -[3.0.0]: https://github.com/sebastianbergmann/comparator/compare/2.1.3...3.0.0 -[2.1.3]: https://github.com/sebastianbergmann/comparator/compare/2.1.2...2.1.3 -[2.1.2]: https://github.com/sebastianbergmann/comparator/compare/2.1.1...2.1.2 -[2.1.1]: https://github.com/sebastianbergmann/comparator/compare/2.1.0...2.1.1 -[2.1.0]: https://github.com/sebastianbergmann/comparator/compare/2.0.2...2.1.0 diff --git a/docker/streamline-src/vendor/sebastian/comparator/LICENSE b/docker/streamline-src/vendor/sebastian/comparator/LICENSE deleted file mode 100644 index 5b4705a4..00000000 --- a/docker/streamline-src/vendor/sebastian/comparator/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -BSD 3-Clause License - -Copyright (c) 2002-2024, Sebastian Bergmann -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/docker/streamline-src/vendor/sebastian/comparator/composer.json b/docker/streamline-src/vendor/sebastian/comparator/composer.json deleted file mode 100644 index 16bf5255..00000000 --- a/docker/streamline-src/vendor/sebastian/comparator/composer.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "sebastian/comparator", - "description": "Provides the functionality to compare PHP values for equality", - "keywords": ["comparator","compare","equality"], - "homepage": "https://github.com/sebastianbergmann/comparator", - "license": "BSD-3-Clause", - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - } - ], - "support": { - "issues": "https://github.com/sebastianbergmann/comparator/issues", - "security": "https://github.com/sebastianbergmann/comparator/security/policy" - }, - "prefer-stable": true, - "require": { - "php": ">=8.1", - "sebastian/diff": "^5.0", - "sebastian/exporter": "^5.0", - "ext-dom": "*", - "ext-mbstring": "*" - }, - "require-dev": { - "phpunit/phpunit": "^10.5" - }, - "config": { - "platform": { - "php": "8.1.0" - }, - "optimize-autoloader": true, - "sort-packages": true - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "autoload-dev": { - "classmap": [ - "tests/_fixture" - ] - }, - "extra": { - "branch-alias": { - "dev-main": "5.0-dev" - } - } -} - diff --git a/docker/streamline-src/vendor/sebastian/comparator/src/ArrayComparator.php b/docker/streamline-src/vendor/sebastian/comparator/src/ArrayComparator.php deleted file mode 100644 index 75508327..00000000 --- a/docker/streamline-src/vendor/sebastian/comparator/src/ArrayComparator.php +++ /dev/null @@ -1,127 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Comparator; - -use function array_key_exists; -use function assert; -use function is_array; -use function sort; -use function sprintf; -use function str_replace; -use function trim; -use SebastianBergmann\Exporter\Exporter; - -/** - * Arrays are equal if they contain the same key-value pairs. - * The order of the keys does not matter. - * The types of key-value pairs do not matter. - */ -class ArrayComparator extends Comparator -{ - public function accepts(mixed $expected, mixed $actual): bool - { - return is_array($expected) && is_array($actual); - } - - /** - * @throws ComparisonFailure - */ - public function assertEquals(mixed $expected, mixed $actual, float $delta = 0.0, bool $canonicalize = false, bool $ignoreCase = false, array &$processed = []): void - { - assert(is_array($expected)); - assert(is_array($actual)); - - if ($canonicalize) { - sort($expected); - sort($actual); - } - - $remaining = $actual; - $actualAsString = "Array (\n"; - $expectedAsString = "Array (\n"; - $equal = true; - $exporter = new Exporter; - - foreach ($expected as $key => $value) { - unset($remaining[$key]); - - if (!array_key_exists($key, $actual)) { - $expectedAsString .= sprintf( - " %s => %s\n", - $exporter->export($key), - $exporter->shortenedExport($value), - ); - - $equal = false; - - continue; - } - - try { - $comparator = $this->factory()->getComparatorFor($value, $actual[$key]); - $comparator->assertEquals($value, $actual[$key], $delta, $canonicalize, $ignoreCase, $processed); - - $expectedAsString .= sprintf( - " %s => %s\n", - $exporter->export($key), - $exporter->shortenedExport($value), - ); - - $actualAsString .= sprintf( - " %s => %s\n", - $exporter->export($key), - $exporter->shortenedExport($actual[$key]), - ); - } catch (ComparisonFailure $e) { - $expectedAsString .= sprintf( - " %s => %s\n", - $exporter->export($key), - $e->getExpectedAsString() ? $this->indent($e->getExpectedAsString()) : $exporter->shortenedExport($e->getExpected()), - ); - - $actualAsString .= sprintf( - " %s => %s\n", - $exporter->export($key), - $e->getActualAsString() ? $this->indent($e->getActualAsString()) : $exporter->shortenedExport($e->getActual()), - ); - - $equal = false; - } - } - - foreach ($remaining as $key => $value) { - $actualAsString .= sprintf( - " %s => %s\n", - $exporter->export($key), - $exporter->shortenedExport($value), - ); - - $equal = false; - } - - $expectedAsString .= ')'; - $actualAsString .= ')'; - - if (!$equal) { - throw new ComparisonFailure( - $expected, - $actual, - $expectedAsString, - $actualAsString, - 'Failed asserting that two arrays are equal.', - ); - } - } - - private function indent(string $lines): string - { - return trim(str_replace("\n", "\n ", $lines)); - } -} diff --git a/docker/streamline-src/vendor/sebastian/comparator/src/DOMNodeComparator.php b/docker/streamline-src/vendor/sebastian/comparator/src/DOMNodeComparator.php deleted file mode 100644 index e78a401f..00000000 --- a/docker/streamline-src/vendor/sebastian/comparator/src/DOMNodeComparator.php +++ /dev/null @@ -1,80 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Comparator; - -use function assert; -use function mb_strtolower; -use function sprintf; -use DOMDocument; -use DOMNode; -use ValueError; - -final class DOMNodeComparator extends ObjectComparator -{ - public function accepts(mixed $expected, mixed $actual): bool - { - return $expected instanceof DOMNode && $actual instanceof DOMNode; - } - - /** - * @throws ComparisonFailure - */ - public function assertEquals(mixed $expected, mixed $actual, float $delta = 0.0, bool $canonicalize = false, bool $ignoreCase = false, array &$processed = []): void - { - assert($expected instanceof DOMNode); - assert($actual instanceof DOMNode); - - $expectedAsString = $this->nodeToText($expected, true, $ignoreCase); - $actualAsString = $this->nodeToText($actual, true, $ignoreCase); - - if ($expectedAsString !== $actualAsString) { - $type = $expected instanceof DOMDocument ? 'documents' : 'nodes'; - - throw new ComparisonFailure( - $expected, - $actual, - $expectedAsString, - $actualAsString, - sprintf("Failed asserting that two DOM %s are equal.\n", $type), - ); - } - } - - /** - * Returns the normalized, whitespace-cleaned, and indented textual - * representation of a DOMNode. - */ - private function nodeToText(DOMNode $node, bool $canonicalize, bool $ignoreCase): string - { - if ($canonicalize) { - $document = new DOMDocument; - - try { - $c14n = $node->C14N(); - - assert(!empty($c14n)); - - @$document->loadXML($c14n); - } catch (ValueError) { - } - - $node = $document; - } - - $document = $node instanceof DOMDocument ? $node : $node->ownerDocument; - - $document->formatOutput = true; - $document->normalizeDocument(); - - $text = $node instanceof DOMDocument ? $node->saveXML() : $document->saveXML($node); - - return $ignoreCase ? mb_strtolower($text, 'UTF-8') : $text; - } -} diff --git a/docker/streamline-src/vendor/sebastian/comparator/src/DateTimeComparator.php b/docker/streamline-src/vendor/sebastian/comparator/src/DateTimeComparator.php deleted file mode 100644 index 16792d77..00000000 --- a/docker/streamline-src/vendor/sebastian/comparator/src/DateTimeComparator.php +++ /dev/null @@ -1,73 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Comparator; - -use function abs; -use function assert; -use function floor; -use function sprintf; -use DateInterval; -use DateTimeInterface; -use DateTimeZone; - -final class DateTimeComparator extends ObjectComparator -{ - public function accepts(mixed $expected, mixed $actual): bool - { - return ($expected instanceof DateTimeInterface) && - ($actual instanceof DateTimeInterface); - } - - /** - * @throws ComparisonFailure - */ - public function assertEquals(mixed $expected, mixed $actual, float $delta = 0.0, bool $canonicalize = false, bool $ignoreCase = false, array &$processed = []): void - { - assert($expected instanceof DateTimeInterface); - assert($actual instanceof DateTimeInterface); - - $absDelta = abs($delta); - $delta = new DateInterval(sprintf('PT%dS', $absDelta)); - $delta->f = $absDelta - floor($absDelta); - - $actualClone = (clone $actual) - ->setTimezone(new DateTimeZone('UTC')); - - $expectedLower = (clone $expected) - ->setTimezone(new DateTimeZone('UTC')) - ->sub($delta); - - $expectedUpper = (clone $expected) - ->setTimezone(new DateTimeZone('UTC')) - ->add($delta); - - if ($actualClone < $expectedLower || $actualClone > $expectedUpper) { - throw new ComparisonFailure( - $expected, - $actual, - $this->dateTimeToString($expected), - $this->dateTimeToString($actual), - 'Failed asserting that two DateTime objects are equal.', - ); - } - } - - /** - * Returns an ISO 8601 formatted string representation of a datetime or - * 'Invalid DateTimeInterface object' if the provided DateTimeInterface was not properly - * initialized. - */ - private function dateTimeToString(DateTimeInterface $datetime): string - { - $string = $datetime->format('Y-m-d\TH:i:s.uO'); - - return $string ?: 'Invalid DateTimeInterface object'; - } -} diff --git a/docker/streamline-src/vendor/sebastian/comparator/src/ExceptionComparator.php b/docker/streamline-src/vendor/sebastian/comparator/src/ExceptionComparator.php deleted file mode 100644 index b44dd816..00000000 --- a/docker/streamline-src/vendor/sebastian/comparator/src/ExceptionComparator.php +++ /dev/null @@ -1,41 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Comparator; - -use function assert; -use Exception; - -/** - * Compares Exception instances for equality. - */ -final class ExceptionComparator extends ObjectComparator -{ - public function accepts(mixed $expected, mixed $actual): bool - { - return $expected instanceof Exception && $actual instanceof Exception; - } - - protected function toArray(object $object): array - { - assert($object instanceof Exception); - - $array = parent::toArray($object); - - unset( - $array['file'], - $array['line'], - $array['trace'], - $array['string'], - $array['xdebug_message'], - ); - - return $array; - } -} diff --git a/docker/streamline-src/vendor/sebastian/comparator/src/NumericComparator.php b/docker/streamline-src/vendor/sebastian/comparator/src/NumericComparator.php deleted file mode 100644 index 3d783edb..00000000 --- a/docker/streamline-src/vendor/sebastian/comparator/src/NumericComparator.php +++ /dev/null @@ -1,67 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Comparator; - -use function abs; -use function is_float; -use function is_infinite; -use function is_nan; -use function is_numeric; -use function is_string; -use function sprintf; -use SebastianBergmann\Exporter\Exporter; - -final class NumericComparator extends ScalarComparator -{ - public function accepts(mixed $expected, mixed $actual): bool - { - // all numerical values, but not if both of them are strings - return is_numeric($expected) && is_numeric($actual) && - !(is_string($expected) && is_string($actual)); - } - - /** - * @throws ComparisonFailure - */ - public function assertEquals(mixed $expected, mixed $actual, float $delta = 0.0, bool $canonicalize = false, bool $ignoreCase = false): void - { - if ($this->isInfinite($actual) && $this->isInfinite($expected)) { - return; - } - - if (($this->isInfinite($actual) xor $this->isInfinite($expected)) || - ($this->isNan($actual) || $this->isNan($expected)) || - abs($actual - $expected) > $delta) { - $exporter = new Exporter; - - throw new ComparisonFailure( - $expected, - $actual, - '', - '', - sprintf( - 'Failed asserting that %s matches expected %s.', - $exporter->export($actual), - $exporter->export($expected), - ), - ); - } - } - - private function isInfinite(mixed $value): bool - { - return is_float($value) && is_infinite($value); - } - - private function isNan(mixed $value): bool - { - return is_float($value) && is_nan($value); - } -} diff --git a/docker/streamline-src/vendor/sebastian/comparator/src/ObjectComparator.php b/docker/streamline-src/vendor/sebastian/comparator/src/ObjectComparator.php deleted file mode 100644 index 95f97ed1..00000000 --- a/docker/streamline-src/vendor/sebastian/comparator/src/ObjectComparator.php +++ /dev/null @@ -1,88 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Comparator; - -use function assert; -use function in_array; -use function is_object; -use function sprintf; -use function substr_replace; -use SebastianBergmann\Exporter\Exporter; - -class ObjectComparator extends ArrayComparator -{ - public function accepts(mixed $expected, mixed $actual): bool - { - return is_object($expected) && is_object($actual); - } - - /** - * @throws ComparisonFailure - */ - public function assertEquals(mixed $expected, mixed $actual, float $delta = 0.0, bool $canonicalize = false, bool $ignoreCase = false, array &$processed = []): void - { - assert(is_object($expected)); - assert(is_object($actual)); - - if ($actual::class !== $expected::class) { - $exporter = new Exporter; - - throw new ComparisonFailure( - $expected, - $actual, - $exporter->export($expected), - $exporter->export($actual), - sprintf( - '%s is not instance of expected class "%s".', - $exporter->export($actual), - $expected::class, - ), - ); - } - - // don't compare twice to allow for cyclic dependencies - if (in_array([$actual, $expected], $processed, true) || - in_array([$expected, $actual], $processed, true)) { - return; - } - - $processed[] = [$actual, $expected]; - - // don't compare objects if they are identical - // this helps to avoid the error "maximum function nesting level reached" - // CAUTION: this conditional clause is not tested - if ($actual !== $expected) { - try { - parent::assertEquals( - $this->toArray($expected), - $this->toArray($actual), - $delta, - $canonicalize, - $ignoreCase, - $processed, - ); - } catch (ComparisonFailure $e) { - throw new ComparisonFailure( - $expected, - $actual, - // replace "Array" with "MyClass object" - substr_replace($e->getExpectedAsString(), $expected::class . ' Object', 0, 5), - substr_replace($e->getActualAsString(), $actual::class . ' Object', 0, 5), - 'Failed asserting that two objects are equal.', - ); - } - } - } - - protected function toArray(object $object): array - { - return (new Exporter)->toArray($object); - } -} diff --git a/docker/streamline-src/vendor/sebastian/comparator/src/ResourceComparator.php b/docker/streamline-src/vendor/sebastian/comparator/src/ResourceComparator.php deleted file mode 100644 index 16995623..00000000 --- a/docker/streamline-src/vendor/sebastian/comparator/src/ResourceComparator.php +++ /dev/null @@ -1,42 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Comparator; - -use function assert; -use function is_resource; -use SebastianBergmann\Exporter\Exporter; - -final class ResourceComparator extends Comparator -{ - public function accepts(mixed $expected, mixed $actual): bool - { - return is_resource($expected) && is_resource($actual); - } - - /** - * @throws ComparisonFailure - */ - public function assertEquals(mixed $expected, mixed $actual, float $delta = 0.0, bool $canonicalize = false, bool $ignoreCase = false): void - { - assert(is_resource($expected)); - assert(is_resource($actual)); - - $exporter = new Exporter; - - if ($actual != $expected) { - throw new ComparisonFailure( - $expected, - $actual, - $exporter->export($expected), - $exporter->export($actual), - ); - } - } -} diff --git a/docker/streamline-src/vendor/sebastian/comparator/src/ScalarComparator.php b/docker/streamline-src/vendor/sebastian/comparator/src/ScalarComparator.php deleted file mode 100644 index 79c50457..00000000 --- a/docker/streamline-src/vendor/sebastian/comparator/src/ScalarComparator.php +++ /dev/null @@ -1,81 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Comparator; - -use function is_bool; -use function is_object; -use function is_scalar; -use function is_string; -use function mb_strtolower; -use function method_exists; -use function sprintf; -use SebastianBergmann\Exporter\Exporter; - -/** - * Compares scalar or NULL values for equality. - */ -class ScalarComparator extends Comparator -{ - public function accepts(mixed $expected, mixed $actual): bool - { - return ((is_scalar($expected) xor null === $expected) && - (is_scalar($actual) xor null === $actual)) || - // allow comparison between strings and objects featuring __toString() - (is_string($expected) && is_object($actual) && method_exists($actual, '__toString')) || - (is_object($expected) && method_exists($expected, '__toString') && is_string($actual)); - } - - /** - * @throws ComparisonFailure - */ - public function assertEquals(mixed $expected, mixed $actual, float $delta = 0.0, bool $canonicalize = false, bool $ignoreCase = false): void - { - $expectedToCompare = $expected; - $actualToCompare = $actual; - $exporter = new Exporter; - - // always compare as strings to avoid strange behaviour - // otherwise 0 == 'Foobar' - if ((is_string($expected) && !is_bool($actual)) || (is_string($actual) && !is_bool($expected))) { - $expectedToCompare = (string) $expectedToCompare; - $actualToCompare = (string) $actualToCompare; - - if ($ignoreCase) { - $expectedToCompare = mb_strtolower($expectedToCompare, 'UTF-8'); - $actualToCompare = mb_strtolower($actualToCompare, 'UTF-8'); - } - } - - if ($expectedToCompare !== $actualToCompare && is_string($expected) && is_string($actual)) { - throw new ComparisonFailure( - $expected, - $actual, - $exporter->export($expected), - $exporter->export($actual), - 'Failed asserting that two strings are equal.', - ); - } - - if ($expectedToCompare != $actualToCompare) { - throw new ComparisonFailure( - $expected, - $actual, - // no diff is required - '', - '', - sprintf( - 'Failed asserting that %s matches expected %s.', - $exporter->export($actual), - $exporter->export($expected), - ), - ); - } - } -} diff --git a/docker/streamline-src/vendor/sebastian/comparator/src/SplObjectStorageComparator.php b/docker/streamline-src/vendor/sebastian/comparator/src/SplObjectStorageComparator.php deleted file mode 100644 index a1eeda39..00000000 --- a/docker/streamline-src/vendor/sebastian/comparator/src/SplObjectStorageComparator.php +++ /dev/null @@ -1,57 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Comparator; - -use function assert; -use SebastianBergmann\Exporter\Exporter; -use SplObjectStorage; - -final class SplObjectStorageComparator extends Comparator -{ - public function accepts(mixed $expected, mixed $actual): bool - { - return $expected instanceof SplObjectStorage && $actual instanceof SplObjectStorage; - } - - /** - * @throws ComparisonFailure - */ - public function assertEquals(mixed $expected, mixed $actual, float $delta = 0.0, bool $canonicalize = false, bool $ignoreCase = false): void - { - assert($expected instanceof SplObjectStorage); - assert($actual instanceof SplObjectStorage); - - $exporter = new Exporter; - - foreach ($actual as $object) { - if (!$expected->contains($object)) { - throw new ComparisonFailure( - $expected, - $actual, - $exporter->export($expected), - $exporter->export($actual), - 'Failed asserting that two objects are equal.', - ); - } - } - - foreach ($expected as $object) { - if (!$actual->contains($object)) { - throw new ComparisonFailure( - $expected, - $actual, - $exporter->export($expected), - $exporter->export($actual), - 'Failed asserting that two objects are equal.', - ); - } - } - } -} diff --git a/docker/streamline-src/vendor/sebastian/comparator/src/TypeComparator.php b/docker/streamline-src/vendor/sebastian/comparator/src/TypeComparator.php deleted file mode 100644 index 67994e9f..00000000 --- a/docker/streamline-src/vendor/sebastian/comparator/src/TypeComparator.php +++ /dev/null @@ -1,43 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Comparator; - -use function gettype; -use function sprintf; -use SebastianBergmann\Exporter\Exporter; - -final class TypeComparator extends Comparator -{ - public function accepts(mixed $expected, mixed $actual): bool - { - return true; - } - - /** - * @throws ComparisonFailure - */ - public function assertEquals(mixed $expected, mixed $actual, float $delta = 0.0, bool $canonicalize = false, bool $ignoreCase = false): void - { - if (gettype($expected) != gettype($actual)) { - throw new ComparisonFailure( - $expected, - $actual, - // we don't need a diff - '', - '', - sprintf( - '%s does not match expected type "%s".', - (new Exporter)->shortenedExport($actual), - gettype($expected), - ), - ); - } - } -} diff --git a/docker/streamline-src/vendor/sebastian/diff/ChangeLog.md b/docker/streamline-src/vendor/sebastian/diff/ChangeLog.md deleted file mode 100644 index 10c54529..00000000 --- a/docker/streamline-src/vendor/sebastian/diff/ChangeLog.md +++ /dev/null @@ -1,148 +0,0 @@ -# ChangeLog - -All notable changes are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. - -## [5.1.1] - 2024-03-02 - -### Changed - -* Do not use implicitly nullable parameters - -## [5.1.0] - 2023-12-22 - -### Added - -* `SebastianBergmann\Diff\Chunk::start()`, `SebastianBergmann\Diff\Chunk::startRange()`, `SebastianBergmann\Diff\Chunk::end()`, `SebastianBergmann\Diff\Chunk::endRange()`, and `SebastianBergmann\Diff\Chunk::lines()` -* `SebastianBergmann\Diff\Diff::from()`, `SebastianBergmann\Diff\Diff::to()`, and `SebastianBergmann\Diff\Diff::chunks()` -* `SebastianBergmann\Diff\Line::content()` and `SebastianBergmann\Diff\Diff::type()` -* `SebastianBergmann\Diff\Line::isAdded()`,`SebastianBergmann\Diff\Line::isRemoved()`, and `SebastianBergmann\Diff\Line::isUnchanged()` - -### Changed - -* `SebastianBergmann\Diff\Diff` now implements `IteratorAggregate`, iterating over it yields the aggregated `SebastianBergmann\Diff\Chunk` objects -* `SebastianBergmann\Diff\Chunk` now implements `IteratorAggregate`, iterating over it yields the aggregated `SebastianBergmann\Diff\Line` objects - -### Deprecated - -* `SebastianBergmann\Diff\Chunk::getStart()`, `SebastianBergmann\Diff\Chunk::getStartRange()`, `SebastianBergmann\Diff\Chunk::getEnd()`, `SebastianBergmann\Diff\Chunk::getEndRange()`, and `SebastianBergmann\Diff\Chunk::getLines()` -* `SebastianBergmann\Diff\Diff::getFrom()`, `SebastianBergmann\Diff\Diff::getTo()`, and `SebastianBergmann\Diff\Diff::getChunks()` -* `SebastianBergmann\Diff\Line::getContent()` and `SebastianBergmann\Diff\Diff::getType()` - -## [5.0.3] - 2023-05-01 - -### Changed - -* [#119](https://github.com/sebastianbergmann/diff/pull/119): Improve performance of `TimeEfficientLongestCommonSubsequenceCalculator` - -## [5.0.2] - 2023-05-01 - -### Changed - -* [#118](https://github.com/sebastianbergmann/diff/pull/118): Improve performance of `MemoryEfficientLongestCommonSubsequenceCalculator` - -## [5.0.1] - 2023-03-23 - -### Fixed - -* [#115](https://github.com/sebastianbergmann/diff/pull/115): `Parser::parseFileDiff()` does not handle diffs correctly that only add lines or only remove lines - -## [5.0.0] - 2023-02-03 - -### Changed - -* Passing a `DiffOutputBuilderInterface` instance to `Differ::__construct()` is no longer optional - -### Removed - -* Removed support for PHP 7.3, PHP 7.4, and PHP 8.0 - -## [4.0.4] - 2020-10-26 - -### Fixed - -* `SebastianBergmann\Diff\Exception` now correctly extends `\Throwable` - -## [4.0.3] - 2020-09-28 - -### Changed - -* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` - -## [4.0.2] - 2020-06-30 - -### Added - -* This component is now supported on PHP 8 - -## [4.0.1] - 2020-05-08 - -### Fixed - -* [#99](https://github.com/sebastianbergmann/diff/pull/99): Regression in unified diff output of identical strings - -## [4.0.0] - 2020-02-07 - -### Removed - -* Removed support for PHP 7.1 and PHP 7.2 - -## [3.0.2] - 2019-02-04 - -### Changed - -* `Chunk::setLines()` now ensures that the `$lines` array only contains `Line` objects - -## [3.0.1] - 2018-06-10 - -### Fixed - -* Removed `"minimum-stability": "dev",` from `composer.json` - -## [3.0.0] - 2018-02-01 - -* The `StrictUnifiedDiffOutputBuilder` implementation of the `DiffOutputBuilderInterface` was added - -### Changed - -* The default `DiffOutputBuilderInterface` implementation now generates context lines (unchanged lines) - -### Removed - -* Removed support for PHP 7.0 - -### Fixed - -* [#70](https://github.com/sebastianbergmann/diff/issues/70): Diffing of arrays no longer works - -## [2.0.1] - 2017-08-03 - -### Fixed - -* [#66](https://github.com/sebastianbergmann/diff/pull/66): Restored backwards compatibility for PHPUnit 6.1.4, 6.2.0, 6.2.1, 6.2.2, and 6.2.3 - -## [2.0.0] - 2017-07-11 [YANKED] - -### Added - -* [#64](https://github.com/sebastianbergmann/diff/pull/64): Show line numbers for chunks of a diff - -### Removed - -* This component is no longer supported on PHP 5.6 - -[5.1.1]: https://github.com/sebastianbergmann/diff/compare/5.1.0...5.1.1 -[5.1.0]: https://github.com/sebastianbergmann/diff/compare/5.0.3...5.1.0 -[5.0.3]: https://github.com/sebastianbergmann/diff/compare/5.0.2...5.0.3 -[5.0.2]: https://github.com/sebastianbergmann/diff/compare/5.0.1...5.0.2 -[5.0.1]: https://github.com/sebastianbergmann/diff/compare/5.0.0...5.0.1 -[5.0.0]: https://github.com/sebastianbergmann/diff/compare/4.0.4...5.0.0 -[4.0.4]: https://github.com/sebastianbergmann/diff/compare/4.0.3...4.0.4 -[4.0.3]: https://github.com/sebastianbergmann/diff/compare/4.0.2...4.0.3 -[4.0.2]: https://github.com/sebastianbergmann/diff/compare/4.0.1...4.0.2 -[4.0.1]: https://github.com/sebastianbergmann/diff/compare/4.0.0...4.0.1 -[4.0.0]: https://github.com/sebastianbergmann/diff/compare/3.0.2...4.0.0 -[3.0.2]: https://github.com/sebastianbergmann/diff/compare/3.0.1...3.0.2 -[3.0.1]: https://github.com/sebastianbergmann/diff/compare/3.0.0...3.0.1 -[3.0.0]: https://github.com/sebastianbergmann/diff/compare/2.0...3.0.0 -[2.0.1]: https://github.com/sebastianbergmann/diff/compare/c341c98ce083db77f896a0aa64f5ee7652915970...2.0.1 -[2.0.0]: https://github.com/sebastianbergmann/diff/compare/1.4...c341c98ce083db77f896a0aa64f5ee7652915970 diff --git a/docker/streamline-src/vendor/sebastian/diff/LICENSE b/docker/streamline-src/vendor/sebastian/diff/LICENSE deleted file mode 100644 index 5b4705a4..00000000 --- a/docker/streamline-src/vendor/sebastian/diff/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -BSD 3-Clause License - -Copyright (c) 2002-2024, Sebastian Bergmann -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/docker/streamline-src/vendor/sebastian/diff/composer.json b/docker/streamline-src/vendor/sebastian/diff/composer.json deleted file mode 100644 index c6ebec9c..00000000 --- a/docker/streamline-src/vendor/sebastian/diff/composer.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "sebastian/diff", - "description": "Diff implementation", - "keywords": ["diff", "udiff", "unidiff", "unified diff"], - "homepage": "https://github.com/sebastianbergmann/diff", - "license": "BSD-3-Clause", - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "security": "https://github.com/sebastianbergmann/diff/security/policy" - }, - "prefer-stable": true, - "config": { - "platform": { - "php": "8.1.0" - }, - "optimize-autoloader": true, - "sort-packages": true - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0", - "symfony/process": "^6.4" - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "autoload-dev": { - "classmap": [ - "tests/" - ] - }, - "extra": { - "branch-alias": { - "dev-main": "5.1-dev" - } - } -} diff --git a/docker/streamline-src/vendor/sebastian/diff/src/Differ.php b/docker/streamline-src/vendor/sebastian/diff/src/Differ.php deleted file mode 100644 index 801fe02a..00000000 --- a/docker/streamline-src/vendor/sebastian/diff/src/Differ.php +++ /dev/null @@ -1,239 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Diff; - -use const PHP_INT_SIZE; -use const PREG_SPLIT_DELIM_CAPTURE; -use const PREG_SPLIT_NO_EMPTY; -use function array_shift; -use function array_unshift; -use function array_values; -use function count; -use function current; -use function end; -use function is_string; -use function key; -use function min; -use function preg_split; -use function prev; -use function reset; -use function str_ends_with; -use function substr; -use SebastianBergmann\Diff\Output\DiffOutputBuilderInterface; - -final class Differ -{ - public const OLD = 0; - public const ADDED = 1; - public const REMOVED = 2; - public const DIFF_LINE_END_WARNING = 3; - public const NO_LINE_END_EOF_WARNING = 4; - private DiffOutputBuilderInterface $outputBuilder; - - public function __construct(DiffOutputBuilderInterface $outputBuilder) - { - $this->outputBuilder = $outputBuilder; - } - - public function diff(array|string $from, array|string $to, ?LongestCommonSubsequenceCalculator $lcs = null): string - { - $diff = $this->diffToArray($from, $to, $lcs); - - return $this->outputBuilder->getDiff($diff); - } - - public function diffToArray(array|string $from, array|string $to, ?LongestCommonSubsequenceCalculator $lcs = null): array - { - if (is_string($from)) { - $from = $this->splitStringByLines($from); - } - - if (is_string($to)) { - $to = $this->splitStringByLines($to); - } - - [$from, $to, $start, $end] = self::getArrayDiffParted($from, $to); - - if ($lcs === null) { - $lcs = $this->selectLcsImplementation($from, $to); - } - - $common = $lcs->calculate(array_values($from), array_values($to)); - $diff = []; - - foreach ($start as $token) { - $diff[] = [$token, self::OLD]; - } - - reset($from); - reset($to); - - foreach ($common as $token) { - while (($fromToken = reset($from)) !== $token) { - $diff[] = [array_shift($from), self::REMOVED]; - } - - while (($toToken = reset($to)) !== $token) { - $diff[] = [array_shift($to), self::ADDED]; - } - - $diff[] = [$token, self::OLD]; - - array_shift($from); - array_shift($to); - } - - while (($token = array_shift($from)) !== null) { - $diff[] = [$token, self::REMOVED]; - } - - while (($token = array_shift($to)) !== null) { - $diff[] = [$token, self::ADDED]; - } - - foreach ($end as $token) { - $diff[] = [$token, self::OLD]; - } - - if ($this->detectUnmatchedLineEndings($diff)) { - array_unshift($diff, ["#Warning: Strings contain different line endings!\n", self::DIFF_LINE_END_WARNING]); - } - - return $diff; - } - - private function splitStringByLines(string $input): array - { - return preg_split('/(.*\R)/', $input, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); - } - - private function selectLcsImplementation(array $from, array $to): LongestCommonSubsequenceCalculator - { - // We do not want to use the time-efficient implementation if its memory - // footprint will probably exceed this value. Note that the footprint - // calculation is only an estimation for the matrix and the LCS method - // will typically allocate a bit more memory than this. - $memoryLimit = 100 * 1024 * 1024; - - if ($this->calculateEstimatedFootprint($from, $to) > $memoryLimit) { - return new MemoryEfficientLongestCommonSubsequenceCalculator; - } - - return new TimeEfficientLongestCommonSubsequenceCalculator; - } - - private function calculateEstimatedFootprint(array $from, array $to): float|int - { - $itemSize = PHP_INT_SIZE === 4 ? 76 : 144; - - return $itemSize * min(count($from), count($to)) ** 2; - } - - private function detectUnmatchedLineEndings(array $diff): bool - { - $newLineBreaks = ['' => true]; - $oldLineBreaks = ['' => true]; - - foreach ($diff as $entry) { - if (self::OLD === $entry[1]) { - $ln = $this->getLinebreak($entry[0]); - $oldLineBreaks[$ln] = true; - $newLineBreaks[$ln] = true; - } elseif (self::ADDED === $entry[1]) { - $newLineBreaks[$this->getLinebreak($entry[0])] = true; - } elseif (self::REMOVED === $entry[1]) { - $oldLineBreaks[$this->getLinebreak($entry[0])] = true; - } - } - - // if either input or output is a single line without breaks than no warning should be raised - if (['' => true] === $newLineBreaks || ['' => true] === $oldLineBreaks) { - return false; - } - - // two-way compare - foreach ($newLineBreaks as $break => $set) { - if (!isset($oldLineBreaks[$break])) { - return true; - } - } - - foreach ($oldLineBreaks as $break => $set) { - if (!isset($newLineBreaks[$break])) { - return true; - } - } - - return false; - } - - private function getLinebreak($line): string - { - if (!is_string($line)) { - return ''; - } - - $lc = substr($line, -1); - - if ("\r" === $lc) { - return "\r"; - } - - if ("\n" !== $lc) { - return ''; - } - - if (str_ends_with($line, "\r\n")) { - return "\r\n"; - } - - return "\n"; - } - - private static function getArrayDiffParted(array &$from, array &$to): array - { - $start = []; - $end = []; - - reset($to); - - foreach ($from as $k => $v) { - $toK = key($to); - - if ($toK === $k && $v === $to[$k]) { - $start[$k] = $v; - - unset($from[$k], $to[$k]); - } else { - break; - } - } - - end($from); - end($to); - - do { - $fromK = key($from); - $toK = key($to); - - if (null === $fromK || null === $toK || current($from) !== current($to)) { - break; - } - - prev($from); - prev($to); - - $end = [$fromK => $from[$fromK]] + $end; - unset($from[$fromK], $to[$toK]); - } while (true); - - return [$from, $to, $start, $end]; - } -} diff --git a/docker/streamline-src/vendor/sebastian/diff/src/Exception/ConfigurationException.php b/docker/streamline-src/vendor/sebastian/diff/src/Exception/ConfigurationException.php deleted file mode 100644 index b2abf0cb..00000000 --- a/docker/streamline-src/vendor/sebastian/diff/src/Exception/ConfigurationException.php +++ /dev/null @@ -1,37 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Diff; - -use function gettype; -use function is_object; -use function sprintf; -use Exception; - -final class ConfigurationException extends InvalidArgumentException -{ - public function __construct( - string $option, - string $expected, - $value, - int $code = 0, - ?Exception $previous = null - ) { - parent::__construct( - sprintf( - 'Option "%s" must be %s, got "%s".', - $option, - $expected, - is_object($value) ? $value::class : (null === $value ? '' : gettype($value) . '#' . $value), - ), - $code, - $previous, - ); - } -} diff --git a/docker/streamline-src/vendor/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php b/docker/streamline-src/vendor/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php deleted file mode 100644 index b9846c37..00000000 --- a/docker/streamline-src/vendor/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php +++ /dev/null @@ -1,97 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Diff; - -use function array_fill; -use function array_merge; -use function array_reverse; -use function array_slice; -use function count; -use function in_array; -use function max; - -final class MemoryEfficientLongestCommonSubsequenceCalculator implements LongestCommonSubsequenceCalculator -{ - /** - * @inheritDoc - */ - public function calculate(array $from, array $to): array - { - $cFrom = count($from); - $cTo = count($to); - - if ($cFrom === 0) { - return []; - } - - if ($cFrom === 1) { - if (in_array($from[0], $to, true)) { - return [$from[0]]; - } - - return []; - } - - $i = (int) ($cFrom / 2); - $fromStart = array_slice($from, 0, $i); - $fromEnd = array_slice($from, $i); - $llB = $this->length($fromStart, $to); - $llE = $this->length(array_reverse($fromEnd), array_reverse($to)); - $jMax = 0; - $max = 0; - - for ($j = 0; $j <= $cTo; $j++) { - $m = $llB[$j] + $llE[$cTo - $j]; - - if ($m >= $max) { - $max = $m; - $jMax = $j; - } - } - - $toStart = array_slice($to, 0, $jMax); - $toEnd = array_slice($to, $jMax); - - return array_merge( - $this->calculate($fromStart, $toStart), - $this->calculate($fromEnd, $toEnd), - ); - } - - private function length(array $from, array $to): array - { - $current = array_fill(0, count($to) + 1, 0); - $cFrom = count($from); - $cTo = count($to); - - for ($i = 0; $i < $cFrom; $i++) { - $prev = $current; - - for ($j = 0; $j < $cTo; $j++) { - if ($from[$i] === $to[$j]) { - $current[$j + 1] = $prev[$j] + 1; - } else { - /** - * @noinspection PhpConditionCanBeReplacedWithMinMaxCallInspection - * - * We do not use max() here to avoid the function call overhead - */ - if ($current[$j] > $prev[$j + 1]) { - $current[$j + 1] = $current[$j]; - } else { - $current[$j + 1] = $prev[$j + 1]; - } - } - } - } - - return $current; - } -} diff --git a/docker/streamline-src/vendor/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php b/docker/streamline-src/vendor/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php deleted file mode 100644 index a2a73b67..00000000 --- a/docker/streamline-src/vendor/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php +++ /dev/null @@ -1,326 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Diff\Output; - -use function array_merge; -use function array_splice; -use function count; -use function fclose; -use function fopen; -use function fwrite; -use function is_bool; -use function is_int; -use function is_string; -use function max; -use function min; -use function sprintf; -use function stream_get_contents; -use function substr; -use SebastianBergmann\Diff\ConfigurationException; -use SebastianBergmann\Diff\Differ; - -/** - * Strict Unified diff output builder. - * - * Generates (strict) Unified diff's (unidiffs) with hunks. - */ -final class StrictUnifiedDiffOutputBuilder implements DiffOutputBuilderInterface -{ - private static array $default = [ - 'collapseRanges' => true, // ranges of length one are rendered with the trailing `,1` - 'commonLineThreshold' => 6, // number of same lines before ending a new hunk and creating a new one (if needed) - 'contextLines' => 3, // like `diff: -u, -U NUM, --unified[=NUM]`, for patch/git apply compatibility best to keep at least @ 3 - 'fromFile' => null, - 'fromFileDate' => null, - 'toFile' => null, - 'toFileDate' => null, - ]; - private bool $changed; - private bool $collapseRanges; - - /** - * @psalm-var positive-int - */ - private int $commonLineThreshold; - private string $header; - - /** - * @psalm-var positive-int - */ - private int $contextLines; - - public function __construct(array $options = []) - { - $options = array_merge(self::$default, $options); - - if (!is_bool($options['collapseRanges'])) { - throw new ConfigurationException('collapseRanges', 'a bool', $options['collapseRanges']); - } - - if (!is_int($options['contextLines']) || $options['contextLines'] < 0) { - throw new ConfigurationException('contextLines', 'an int >= 0', $options['contextLines']); - } - - if (!is_int($options['commonLineThreshold']) || $options['commonLineThreshold'] <= 0) { - throw new ConfigurationException('commonLineThreshold', 'an int > 0', $options['commonLineThreshold']); - } - - $this->assertString($options, 'fromFile'); - $this->assertString($options, 'toFile'); - $this->assertStringOrNull($options, 'fromFileDate'); - $this->assertStringOrNull($options, 'toFileDate'); - - $this->header = sprintf( - "--- %s%s\n+++ %s%s\n", - $options['fromFile'], - null === $options['fromFileDate'] ? '' : "\t" . $options['fromFileDate'], - $options['toFile'], - null === $options['toFileDate'] ? '' : "\t" . $options['toFileDate'], - ); - - $this->collapseRanges = $options['collapseRanges']; - $this->commonLineThreshold = $options['commonLineThreshold']; - $this->contextLines = $options['contextLines']; - } - - public function getDiff(array $diff): string - { - if (0 === count($diff)) { - return ''; - } - - $this->changed = false; - - $buffer = fopen('php://memory', 'r+b'); - fwrite($buffer, $this->header); - - $this->writeDiffHunks($buffer, $diff); - - if (!$this->changed) { - fclose($buffer); - - return ''; - } - - $diff = stream_get_contents($buffer, -1, 0); - - fclose($buffer); - - // If the last char is not a linebreak: add it. - // This might happen when both the `from` and `to` do not have a trailing linebreak - $last = substr($diff, -1); - - return "\n" !== $last && "\r" !== $last - ? $diff . "\n" - : $diff; - } - - private function writeDiffHunks($output, array $diff): void - { - // detect "No newline at end of file" and insert into `$diff` if needed - - $upperLimit = count($diff); - - if (0 === $diff[$upperLimit - 1][1]) { - $lc = substr($diff[$upperLimit - 1][0], -1); - - if ("\n" !== $lc) { - array_splice($diff, $upperLimit, 0, [["\n\\ No newline at end of file\n", Differ::NO_LINE_END_EOF_WARNING]]); - } - } else { - // search back for the last `+` and `-` line, - // check if it has a trailing linebreak, else add a warning under it - $toFind = [1 => true, 2 => true]; - - for ($i = $upperLimit - 1; $i >= 0; $i--) { - if (isset($toFind[$diff[$i][1]])) { - unset($toFind[$diff[$i][1]]); - $lc = substr($diff[$i][0], -1); - - if ("\n" !== $lc) { - array_splice($diff, $i + 1, 0, [["\n\\ No newline at end of file\n", Differ::NO_LINE_END_EOF_WARNING]]); - } - - if (!count($toFind)) { - break; - } - } - } - } - - // write hunks to output buffer - - $cutOff = max($this->commonLineThreshold, $this->contextLines); - $hunkCapture = false; - $sameCount = $toRange = $fromRange = 0; - $toStart = $fromStart = 1; - $i = 0; - - /** @var int $i */ - foreach ($diff as $i => $entry) { - if (0 === $entry[1]) { // same - if (false === $hunkCapture) { - $fromStart++; - $toStart++; - - continue; - } - - $sameCount++; - $toRange++; - $fromRange++; - - if ($sameCount === $cutOff) { - $contextStartOffset = ($hunkCapture - $this->contextLines) < 0 - ? $hunkCapture - : $this->contextLines; - - // note: $contextEndOffset = $this->contextLines; - // - // because we never go beyond the end of the diff. - // with the cutoff/contextlines here the follow is never true; - // - // if ($i - $cutOff + $this->contextLines + 1 > \count($diff)) { - // $contextEndOffset = count($diff) - 1; - // } - // - // ; that would be true for a trailing incomplete hunk case which is dealt with after this loop - - $this->writeHunk( - $diff, - $hunkCapture - $contextStartOffset, - $i - $cutOff + $this->contextLines + 1, - $fromStart - $contextStartOffset, - $fromRange - $cutOff + $contextStartOffset + $this->contextLines, - $toStart - $contextStartOffset, - $toRange - $cutOff + $contextStartOffset + $this->contextLines, - $output, - ); - - $fromStart += $fromRange; - $toStart += $toRange; - - $hunkCapture = false; - $sameCount = $toRange = $fromRange = 0; - } - - continue; - } - - $sameCount = 0; - - if ($entry[1] === Differ::NO_LINE_END_EOF_WARNING) { - continue; - } - - $this->changed = true; - - if (false === $hunkCapture) { - $hunkCapture = $i; - } - - if (Differ::ADDED === $entry[1]) { // added - $toRange++; - } - - if (Differ::REMOVED === $entry[1]) { // removed - $fromRange++; - } - } - - if (false === $hunkCapture) { - return; - } - - // we end here when cutoff (commonLineThreshold) was not reached, but we were capturing a hunk, - // do not render hunk till end automatically because the number of context lines might be less than the commonLineThreshold - - $contextStartOffset = $hunkCapture - $this->contextLines < 0 - ? $hunkCapture - : $this->contextLines; - - // prevent trying to write out more common lines than there are in the diff _and_ - // do not write more than configured through the context lines - $contextEndOffset = min($sameCount, $this->contextLines); - - $fromRange -= $sameCount; - $toRange -= $sameCount; - - $this->writeHunk( - $diff, - $hunkCapture - $contextStartOffset, - $i - $sameCount + $contextEndOffset + 1, - $fromStart - $contextStartOffset, - $fromRange + $contextStartOffset + $contextEndOffset, - $toStart - $contextStartOffset, - $toRange + $contextStartOffset + $contextEndOffset, - $output, - ); - } - - private function writeHunk( - array $diff, - int $diffStartIndex, - int $diffEndIndex, - int $fromStart, - int $fromRange, - int $toStart, - int $toRange, - $output - ): void { - fwrite($output, '@@ -' . $fromStart); - - if (!$this->collapseRanges || 1 !== $fromRange) { - fwrite($output, ',' . $fromRange); - } - - fwrite($output, ' +' . $toStart); - - if (!$this->collapseRanges || 1 !== $toRange) { - fwrite($output, ',' . $toRange); - } - - fwrite($output, " @@\n"); - - for ($i = $diffStartIndex; $i < $diffEndIndex; $i++) { - if ($diff[$i][1] === Differ::ADDED) { - $this->changed = true; - fwrite($output, '+' . $diff[$i][0]); - } elseif ($diff[$i][1] === Differ::REMOVED) { - $this->changed = true; - fwrite($output, '-' . $diff[$i][0]); - } elseif ($diff[$i][1] === Differ::OLD) { - fwrite($output, ' ' . $diff[$i][0]); - } elseif ($diff[$i][1] === Differ::NO_LINE_END_EOF_WARNING) { - $this->changed = true; - fwrite($output, $diff[$i][0]); - } - // } elseif ($diff[$i][1] === Differ::DIFF_LINE_END_WARNING) { // custom comment inserted by PHPUnit/diff package - // skip - // } else { - // unknown/invalid - // } - } - } - - private function assertString(array $options, string $option): void - { - if (!is_string($options[$option])) { - throw new ConfigurationException($option, 'a string', $options[$option]); - } - } - - private function assertStringOrNull(array $options, string $option): void - { - if (null !== $options[$option] && !is_string($options[$option])) { - throw new ConfigurationException($option, 'a string or ', $options[$option]); - } - } -} diff --git a/docker/streamline-src/vendor/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php b/docker/streamline-src/vendor/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php deleted file mode 100644 index 683ab1b6..00000000 --- a/docker/streamline-src/vendor/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php +++ /dev/null @@ -1,257 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Diff\Output; - -use function array_splice; -use function count; -use function fclose; -use function fopen; -use function fwrite; -use function max; -use function min; -use function str_ends_with; -use function stream_get_contents; -use function substr; -use SebastianBergmann\Diff\Differ; - -/** - * Builds a diff string representation in unified diff format in chunks. - */ -final class UnifiedDiffOutputBuilder extends AbstractChunkOutputBuilder -{ - private bool $collapseRanges = true; - private int $commonLineThreshold = 6; - - /** - * @psalm-var positive-int - */ - private int $contextLines = 3; - private string $header; - private bool $addLineNumbers; - - public function __construct(string $header = "--- Original\n+++ New\n", bool $addLineNumbers = false) - { - $this->header = $header; - $this->addLineNumbers = $addLineNumbers; - } - - public function getDiff(array $diff): string - { - $buffer = fopen('php://memory', 'r+b'); - - if ('' !== $this->header) { - fwrite($buffer, $this->header); - - if (!str_ends_with($this->header, "\n")) { - fwrite($buffer, "\n"); - } - } - - if (0 !== count($diff)) { - $this->writeDiffHunks($buffer, $diff); - } - - $diff = stream_get_contents($buffer, -1, 0); - - fclose($buffer); - - // If the diff is non-empty and last char is not a linebreak: add it. - // This might happen when both the `from` and `to` do not have a trailing linebreak - $last = substr($diff, -1); - - return '' !== $diff && "\n" !== $last && "\r" !== $last - ? $diff . "\n" - : $diff; - } - - private function writeDiffHunks($output, array $diff): void - { - // detect "No newline at end of file" and insert into `$diff` if needed - - $upperLimit = count($diff); - - if (0 === $diff[$upperLimit - 1][1]) { - $lc = substr($diff[$upperLimit - 1][0], -1); - - if ("\n" !== $lc) { - array_splice($diff, $upperLimit, 0, [["\n\\ No newline at end of file\n", Differ::NO_LINE_END_EOF_WARNING]]); - } - } else { - // search back for the last `+` and `-` line, - // check if it has trailing linebreak, else add a warning under it - $toFind = [1 => true, 2 => true]; - - for ($i = $upperLimit - 1; $i >= 0; $i--) { - if (isset($toFind[$diff[$i][1]])) { - unset($toFind[$diff[$i][1]]); - $lc = substr($diff[$i][0], -1); - - if ("\n" !== $lc) { - array_splice($diff, $i + 1, 0, [["\n\\ No newline at end of file\n", Differ::NO_LINE_END_EOF_WARNING]]); - } - - if (!count($toFind)) { - break; - } - } - } - } - - // write hunks to output buffer - - $cutOff = max($this->commonLineThreshold, $this->contextLines); - $hunkCapture = false; - $sameCount = $toRange = $fromRange = 0; - $toStart = $fromStart = 1; - $i = 0; - - /** @var int $i */ - foreach ($diff as $i => $entry) { - if (0 === $entry[1]) { // same - if (false === $hunkCapture) { - $fromStart++; - $toStart++; - - continue; - } - - $sameCount++; - $toRange++; - $fromRange++; - - if ($sameCount === $cutOff) { - $contextStartOffset = ($hunkCapture - $this->contextLines) < 0 - ? $hunkCapture - : $this->contextLines; - - // note: $contextEndOffset = $this->contextLines; - // - // because we never go beyond the end of the diff. - // with the cutoff/contextlines here the follow is never true; - // - // if ($i - $cutOff + $this->contextLines + 1 > \count($diff)) { - // $contextEndOffset = count($diff) - 1; - // } - // - // ; that would be true for a trailing incomplete hunk case which is dealt with after this loop - - $this->writeHunk( - $diff, - $hunkCapture - $contextStartOffset, - $i - $cutOff + $this->contextLines + 1, - $fromStart - $contextStartOffset, - $fromRange - $cutOff + $contextStartOffset + $this->contextLines, - $toStart - $contextStartOffset, - $toRange - $cutOff + $contextStartOffset + $this->contextLines, - $output, - ); - - $fromStart += $fromRange; - $toStart += $toRange; - - $hunkCapture = false; - $sameCount = $toRange = $fromRange = 0; - } - - continue; - } - - $sameCount = 0; - - if ($entry[1] === Differ::NO_LINE_END_EOF_WARNING) { - continue; - } - - if (false === $hunkCapture) { - $hunkCapture = $i; - } - - if (Differ::ADDED === $entry[1]) { - $toRange++; - } - - if (Differ::REMOVED === $entry[1]) { - $fromRange++; - } - } - - if (false === $hunkCapture) { - return; - } - - // we end here when cutoff (commonLineThreshold) was not reached, but we were capturing a hunk, - // do not render hunk till end automatically because the number of context lines might be less than the commonLineThreshold - - $contextStartOffset = $hunkCapture - $this->contextLines < 0 - ? $hunkCapture - : $this->contextLines; - - // prevent trying to write out more common lines than there are in the diff _and_ - // do not write more than configured through the context lines - $contextEndOffset = min($sameCount, $this->contextLines); - - $fromRange -= $sameCount; - $toRange -= $sameCount; - - $this->writeHunk( - $diff, - $hunkCapture - $contextStartOffset, - $i - $sameCount + $contextEndOffset + 1, - $fromStart - $contextStartOffset, - $fromRange + $contextStartOffset + $contextEndOffset, - $toStart - $contextStartOffset, - $toRange + $contextStartOffset + $contextEndOffset, - $output, - ); - } - - private function writeHunk( - array $diff, - int $diffStartIndex, - int $diffEndIndex, - int $fromStart, - int $fromRange, - int $toStart, - int $toRange, - $output - ): void { - if ($this->addLineNumbers) { - fwrite($output, '@@ -' . $fromStart); - - if (!$this->collapseRanges || 1 !== $fromRange) { - fwrite($output, ',' . $fromRange); - } - - fwrite($output, ' +' . $toStart); - - if (!$this->collapseRanges || 1 !== $toRange) { - fwrite($output, ',' . $toRange); - } - - fwrite($output, " @@\n"); - } else { - fwrite($output, "@@ @@\n"); - } - - for ($i = $diffStartIndex; $i < $diffEndIndex; $i++) { - if ($diff[$i][1] === Differ::ADDED) { - fwrite($output, '+' . $diff[$i][0]); - } elseif ($diff[$i][1] === Differ::REMOVED) { - fwrite($output, '-' . $diff[$i][0]); - } elseif ($diff[$i][1] === Differ::OLD) { - fwrite($output, ' ' . $diff[$i][0]); - } elseif ($diff[$i][1] === Differ::NO_LINE_END_EOF_WARNING) { - fwrite($output, "\n"); // $diff[$i][0] - } else { /* Not changed (old) Differ::OLD or Warning Differ::DIFF_LINE_END_WARNING */ - fwrite($output, ' ' . $diff[$i][0]); - } - } - } -} diff --git a/docker/streamline-src/vendor/sebastian/diff/src/Parser.php b/docker/streamline-src/vendor/sebastian/diff/src/Parser.php deleted file mode 100644 index 9293fc91..00000000 --- a/docker/streamline-src/vendor/sebastian/diff/src/Parser.php +++ /dev/null @@ -1,112 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Diff; - -use function array_pop; -use function assert; -use function count; -use function max; -use function preg_match; -use function preg_split; - -/** - * Unified diff parser. - */ -final class Parser -{ - /** - * @return Diff[] - */ - public function parse(string $string): array - { - $lines = preg_split('(\r\n|\r|\n)', $string); - - if (!empty($lines) && $lines[count($lines) - 1] === '') { - array_pop($lines); - } - - $lineCount = count($lines); - $diffs = []; - $diff = null; - $collected = []; - - for ($i = 0; $i < $lineCount; $i++) { - if (preg_match('#^---\h+"?(?P[^\\v\\t"]+)#', $lines[$i], $fromMatch) && - preg_match('#^\\+\\+\\+\\h+"?(?P[^\\v\\t"]+)#', $lines[$i + 1], $toMatch)) { - if ($diff !== null) { - $this->parseFileDiff($diff, $collected); - - $diffs[] = $diff; - $collected = []; - } - - assert(!empty($fromMatch['file'])); - assert(!empty($toMatch['file'])); - - $diff = new Diff($fromMatch['file'], $toMatch['file']); - - $i++; - } else { - if (preg_match('/^(?:diff --git |index [\da-f.]+|[+-]{3} [ab])/', $lines[$i])) { - continue; - } - - $collected[] = $lines[$i]; - } - } - - if ($diff !== null && count($collected)) { - $this->parseFileDiff($diff, $collected); - - $diffs[] = $diff; - } - - return $diffs; - } - - private function parseFileDiff(Diff $diff, array $lines): void - { - $chunks = []; - $chunk = null; - $diffLines = []; - - foreach ($lines as $line) { - if (preg_match('/^@@\s+-(?P\d+)(?:,\s*(?P\d+))?\s+\+(?P\d+)(?:,\s*(?P\d+))?\s+@@/', $line, $match, PREG_UNMATCHED_AS_NULL)) { - $chunk = new Chunk( - (int) $match['start'], - isset($match['startrange']) ? max(0, (int) $match['startrange']) : 1, - (int) $match['end'], - isset($match['endrange']) ? max(0, (int) $match['endrange']) : 1, - ); - - $chunks[] = $chunk; - $diffLines = []; - - continue; - } - - if (preg_match('/^(?P[+ -])?(?P.*)/', $line, $match)) { - $type = Line::UNCHANGED; - - if ($match['type'] === '+') { - $type = Line::ADDED; - } elseif ($match['type'] === '-') { - $type = Line::REMOVED; - } - - $diffLines[] = new Line($type, $match['line']); - - $chunk?->setLines($diffLines); - } - } - - $diff->setChunks($chunks); - } -} diff --git a/docker/streamline-src/vendor/sebastian/environment/ChangeLog.md b/docker/streamline-src/vendor/sebastian/environment/ChangeLog.md deleted file mode 100644 index d3f29e16..00000000 --- a/docker/streamline-src/vendor/sebastian/environment/ChangeLog.md +++ /dev/null @@ -1,207 +0,0 @@ -# Changes in sebastianbergmann/environment - -All notable changes in `sebastianbergmann/environment` are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. - -## [6.1.0] - 2024-03-23 - -### Added - -* [#72](https://github.com/sebastianbergmann/environment/pull/72): `Runtime::getRawBinary()` - -## [6.0.1] - 2023-04-11 - -### Fixed - -* [#68](https://github.com/sebastianbergmann/environment/pull/68): The Just-in-Time compiler is disabled when `opcache.jit_buffer_size` is set to `0` -* [#70](https://github.com/sebastianbergmann/environment/pull/70): The first `0` of `opcache.jit` only disables CPU-specific optimizations, not the Just-in-Time compiler itself - -## [6.0.0] - 2023-02-03 - -### Removed - -* Removed `SebastianBergmann\Environment\OperatingSystem::getFamily()` because this component is no longer supported on PHP versions that do not have `PHP_OS_FAMILY` -* Removed `SebastianBergmann\Environment\Runtime::isHHVM()` -* This component is no longer supported on PHP 7.3, PHP 7.4, and PHP 8.0 - -## [5.1.5] - 2022-MM-DD - -### Fixed - -* [#59](https://github.com/sebastianbergmann/environment/issues/59): Wrong usage of `stream_isatty()`, `fstat()` used without checking whether the function is available - -## [5.1.4] - 2022-04-03 - -### Fixed - -* [#63](https://github.com/sebastianbergmann/environment/pull/63): `Runtime::getCurrentSettings()` does not correctly process INI settings - -## [5.1.3] - 2020-09-28 - -### Changed - -* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` - -## [5.1.2] - 2020-06-26 - -### Added - -* This component is now supported on PHP 8 - -## [5.1.1] - 2020-06-15 - -### Changed - -* Tests etc. are now ignored for archive exports - -## [5.1.0] - 2020-04-14 - -### Added - -* `Runtime::performsJustInTimeCompilation()` returns `true` if PHP 8's JIT is active, `false` otherwise - -## [5.0.2] - 2020-03-31 - -### Fixed - -* [#55](https://github.com/sebastianbergmann/environment/issues/55): `stty` command is executed even if no tty is available - -## [5.0.1] - 2020-02-19 - -### Changed - -* `Runtime::getNameWithVersionAndCodeCoverageDriver()` now prioritizes PCOV over Xdebug when both extensions are loaded (just like php-code-coverage does) - -## [5.0.0] - 2020-02-07 - -### Removed - -* This component is no longer supported on PHP 7.1 and PHP 7.2 - -## [4.2.3] - 2019-11-20 - -### Changed - -* [#50](https://github.com/sebastianbergmann/environment/pull/50): Windows improvements to console capabilities - -### Fixed - -* [#49](https://github.com/sebastianbergmann/environment/issues/49): Detection how OpCache handles docblocks does not work correctly when PHPDBG is used - -## [4.2.2] - 2019-05-05 - -### Fixed - -* [#44](https://github.com/sebastianbergmann/environment/pull/44): `TypeError` in `Console::getNumberOfColumnsInteractive()` - -## [4.2.1] - 2019-04-25 - -### Fixed - -* Fixed an issue in `Runtime::getCurrentSettings()` - -## [4.2.0] - 2019-04-25 - -### Added - -* [#36](https://github.com/sebastianbergmann/environment/pull/36): `Runtime::getCurrentSettings()` - -## [4.1.0] - 2019-02-01 - -### Added - -* Implemented `Runtime::getNameWithVersionAndCodeCoverageDriver()` method -* [#34](https://github.com/sebastianbergmann/environment/pull/34): Support for PCOV extension - -## [4.0.2] - 2019-01-28 - -### Fixed - -* [#33](https://github.com/sebastianbergmann/environment/issues/33): `Runtime::discardsComments()` returns true too eagerly - -### Removed - -* Removed support for Zend Optimizer+ in `Runtime::discardsComments()` - -## [4.0.1] - 2018-11-25 - -### Fixed - -* [#31](https://github.com/sebastianbergmann/environment/issues/31): Regressions in `Console` class - -## [4.0.0] - 2018-10-23 [YANKED] - -### Fixed - -* [#25](https://github.com/sebastianbergmann/environment/pull/25): `Console::hasColorSupport()` does not work on Windows - -### Removed - -* This component is no longer supported on PHP 7.0 - -## [3.1.0] - 2017-07-01 - -### Added - -* [#21](https://github.com/sebastianbergmann/environment/issues/21): Equivalent of `PHP_OS_FAMILY` (for PHP < 7.2) - -## [3.0.4] - 2017-06-20 - -### Fixed - -* [#20](https://github.com/sebastianbergmann/environment/pull/20): PHP 7 mode of HHVM not forced - -## [3.0.3] - 2017-05-18 - -### Fixed - -* [#18](https://github.com/sebastianbergmann/environment/issues/18): `Uncaught TypeError: preg_match() expects parameter 2 to be string, null given` - -## [3.0.2] - 2017-04-21 - -### Fixed - -* [#17](https://github.com/sebastianbergmann/environment/issues/17): `Uncaught TypeError: trim() expects parameter 1 to be string, boolean given` - -## [3.0.1] - 2017-04-21 - -### Fixed - -* Fixed inverted logic in `Runtime::discardsComments()` - -## [3.0.0] - 2017-04-21 - -### Added - -* Implemented `Runtime::discardsComments()` for querying whether the PHP runtime discards annotations - -### Removed - -* This component is no longer supported on PHP 5.6 - -[6.1.0]: https://github.com/sebastianbergmann/environment/compare/6.0.1...6.1.0 -[6.0.1]: https://github.com/sebastianbergmann/environment/compare/6.0.0...6.0.1 -[6.0.0]: https://github.com/sebastianbergmann/environment/compare/5.1.5...6.0.0 -[5.1.5]: https://github.com/sebastianbergmann/environment/compare/5.1.4...5.1.5 -[5.1.4]: https://github.com/sebastianbergmann/environment/compare/5.1.3...5.1.4 -[5.1.3]: https://github.com/sebastianbergmann/environment/compare/5.1.2...5.1.3 -[5.1.2]: https://github.com/sebastianbergmann/environment/compare/5.1.1...5.1.2 -[5.1.1]: https://github.com/sebastianbergmann/environment/compare/5.1.0...5.1.1 -[5.1.0]: https://github.com/sebastianbergmann/environment/compare/5.0.2...5.1.0 -[5.0.2]: https://github.com/sebastianbergmann/environment/compare/5.0.1...5.0.2 -[5.0.1]: https://github.com/sebastianbergmann/environment/compare/5.0.0...5.0.1 -[5.0.0]: https://github.com/sebastianbergmann/environment/compare/4.2.3...5.0.0 -[4.2.3]: https://github.com/sebastianbergmann/environment/compare/4.2.2...4.2.3 -[4.2.2]: https://github.com/sebastianbergmann/environment/compare/4.2.1...4.2.2 -[4.2.1]: https://github.com/sebastianbergmann/environment/compare/4.2.0...4.2.1 -[4.2.0]: https://github.com/sebastianbergmann/environment/compare/4.1.0...4.2.0 -[4.1.0]: https://github.com/sebastianbergmann/environment/compare/4.0.2...4.1.0 -[4.0.2]: https://github.com/sebastianbergmann/environment/compare/4.0.1...4.0.2 -[4.0.1]: https://github.com/sebastianbergmann/environment/compare/66691f8e2dc4641909166b275a9a4f45c0e89092...4.0.1 -[4.0.0]: https://github.com/sebastianbergmann/environment/compare/3.1.0...66691f8e2dc4641909166b275a9a4f45c0e89092 -[3.1.0]: https://github.com/sebastianbergmann/environment/compare/3.0...3.1.0 -[3.0.4]: https://github.com/sebastianbergmann/environment/compare/3.0.3...3.0.4 -[3.0.3]: https://github.com/sebastianbergmann/environment/compare/3.0.2...3.0.3 -[3.0.2]: https://github.com/sebastianbergmann/environment/compare/3.0.1...3.0.2 -[3.0.1]: https://github.com/sebastianbergmann/environment/compare/3.0.0...3.0.1 -[3.0.0]: https://github.com/sebastianbergmann/environment/compare/2.0...3.0.0 - diff --git a/docker/streamline-src/vendor/sebastian/environment/LICENSE b/docker/streamline-src/vendor/sebastian/environment/LICENSE deleted file mode 100644 index aecdbc7e..00000000 --- a/docker/streamline-src/vendor/sebastian/environment/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -BSD 3-Clause License - -Copyright (c) 2014-2024, Sebastian Bergmann -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/docker/streamline-src/vendor/sebastian/environment/composer.json b/docker/streamline-src/vendor/sebastian/environment/composer.json deleted file mode 100644 index 61e41932..00000000 --- a/docker/streamline-src/vendor/sebastian/environment/composer.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "sebastian/environment", - "description": "Provides functionality to handle HHVM/PHP environments", - "keywords": ["environment","hhvm","xdebug"], - "homepage": "https://github.com/sebastianbergmann/environment", - "license": "BSD-3-Clause", - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "security": "https://github.com/sebastianbergmann/environment/security/policy" - }, - "config": { - "platform": { - "php": "8.1.0" - }, - "optimize-autoloader": true, - "sort-packages": true - }, - "prefer-stable": true, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "suggest": { - "ext-posix": "*" - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "extra": { - "branch-alias": { - "dev-main": "6.1-dev" - } - } -} diff --git a/docker/streamline-src/vendor/sebastian/environment/src/Console.php b/docker/streamline-src/vendor/sebastian/environment/src/Console.php deleted file mode 100644 index 4f5943c7..00000000 --- a/docker/streamline-src/vendor/sebastian/environment/src/Console.php +++ /dev/null @@ -1,187 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Environment; - -use const DIRECTORY_SEPARATOR; -use const STDIN; -use const STDOUT; -use function defined; -use function fclose; -use function fstat; -use function function_exists; -use function getenv; -use function is_resource; -use function is_string; -use function posix_isatty; -use function preg_match; -use function proc_close; -use function proc_open; -use function sapi_windows_vt100_support; -use function shell_exec; -use function stream_get_contents; -use function stream_isatty; -use function trim; - -final class Console -{ - /** - * @var int - */ - public const STDIN = 0; - - /** - * @var int - */ - public const STDOUT = 1; - - /** - * @var int - */ - public const STDERR = 2; - - /** - * Returns true if STDOUT supports colorization. - * - * This code has been copied and adapted from - * Symfony\Component\Console\Output\StreamOutput. - */ - public function hasColorSupport(): bool - { - if ('Hyper' === getenv('TERM_PROGRAM')) { - return true; - } - - if ($this->isWindows()) { - // @codeCoverageIgnoreStart - return (defined('STDOUT') && function_exists('sapi_windows_vt100_support') && @sapi_windows_vt100_support(STDOUT)) || - false !== getenv('ANSICON') || - 'ON' === getenv('ConEmuANSI') || - 'xterm' === getenv('TERM'); - // @codeCoverageIgnoreEnd - } - - if (!defined('STDOUT')) { - // @codeCoverageIgnoreStart - return false; - // @codeCoverageIgnoreEnd - } - - return $this->isInteractive(STDOUT); - } - - /** - * Returns the number of columns of the terminal. - * - * @codeCoverageIgnore - */ - public function getNumberOfColumns(): int - { - if (!$this->isInteractive(defined('STDIN') ? STDIN : self::STDIN)) { - return 80; - } - - if ($this->isWindows()) { - return $this->getNumberOfColumnsWindows(); - } - - return $this->getNumberOfColumnsInteractive(); - } - - /** - * Returns if the file descriptor is an interactive terminal or not. - * - * Normally, we want to use a resource as a parameter, yet sadly it's not always available, - * eg when running code in interactive console (`php -a`), STDIN/STDOUT/STDERR constants are not defined. - * - * @param int|resource $fileDescriptor - */ - public function isInteractive($fileDescriptor = self::STDOUT): bool - { - if (is_resource($fileDescriptor)) { - if (function_exists('stream_isatty') && @stream_isatty($fileDescriptor)) { - return true; - } - - if (function_exists('fstat')) { - $stat = @fstat(STDOUT); - - return $stat && 0o020000 === ($stat['mode'] & 0o170000); - } - - return false; - } - - return function_exists('posix_isatty') && @posix_isatty($fileDescriptor); - } - - private function isWindows(): bool - { - return DIRECTORY_SEPARATOR === '\\'; - } - - /** - * @codeCoverageIgnore - */ - private function getNumberOfColumnsInteractive(): int - { - if (function_exists('shell_exec') && preg_match('#\d+ (\d+)#', shell_exec('stty size') ?: '', $match) === 1) { - if ((int) $match[1] > 0) { - return (int) $match[1]; - } - } - - if (function_exists('shell_exec') && preg_match('#columns = (\d+);#', shell_exec('stty') ?: '', $match) === 1) { - if ((int) $match[1] > 0) { - return (int) $match[1]; - } - } - - return 80; - } - - /** - * @codeCoverageIgnore - */ - private function getNumberOfColumnsWindows(): int - { - $ansicon = getenv('ANSICON'); - $columns = 80; - - if (is_string($ansicon) && preg_match('/^(\d+)x\d+ \(\d+x(\d+)\)$/', trim($ansicon), $matches)) { - $columns = (int) $matches[1]; - } elseif (function_exists('proc_open')) { - $process = proc_open( - 'mode CON', - [ - 1 => ['pipe', 'w'], - 2 => ['pipe', 'w'], - ], - $pipes, - null, - null, - ['suppress_errors' => true], - ); - - if (is_resource($process)) { - $info = stream_get_contents($pipes[1]); - - fclose($pipes[1]); - fclose($pipes[2]); - proc_close($process); - - if (preg_match('/--------+\r?\n.+?(\d+)\r?\n.+?(\d+)\r?\n/', $info, $matches)) { - $columns = (int) $matches[2]; - } - } - } - - return $columns - 1; - } -} diff --git a/docker/streamline-src/vendor/sebastian/environment/src/Runtime.php b/docker/streamline-src/vendor/sebastian/environment/src/Runtime.php deleted file mode 100644 index f9ec057e..00000000 --- a/docker/streamline-src/vendor/sebastian/environment/src/Runtime.php +++ /dev/null @@ -1,294 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Environment; - -use const PHP_BINARY; -use const PHP_BINDIR; -use const PHP_MAJOR_VERSION; -use const PHP_SAPI; -use const PHP_VERSION; -use function array_map; -use function array_merge; -use function escapeshellarg; -use function explode; -use function extension_loaded; -use function ini_get; -use function is_readable; -use function parse_ini_file; -use function php_ini_loaded_file; -use function php_ini_scanned_files; -use function phpversion; -use function sprintf; -use function strrpos; - -final class Runtime -{ - private static string $rawBinary; - private static bool $initialized = false; - - /** - * Returns true when Xdebug or PCOV is available or - * the runtime used is PHPDBG. - */ - public function canCollectCodeCoverage(): bool - { - return $this->hasXdebug() || $this->hasPCOV() || $this->hasPHPDBGCodeCoverage(); - } - - /** - * Returns true when Zend OPcache is loaded, enabled, - * and is configured to discard comments. - */ - public function discardsComments(): bool - { - if (!$this->isOpcacheActive()) { - return false; - } - - if (ini_get('opcache.save_comments') !== '0') { - return false; - } - - return true; - } - - /** - * Returns true when Zend OPcache is loaded, enabled, - * and is configured to perform just-in-time compilation. - */ - public function performsJustInTimeCompilation(): bool - { - if (PHP_MAJOR_VERSION < 8) { - return false; - } - - if (!$this->isOpcacheActive()) { - return false; - } - - if (ini_get('opcache.jit_buffer_size') === '0') { - return false; - } - - $jit = ini_get('opcache.jit'); - - if (($jit === 'disable') || ($jit === 'off')) { - return false; - } - - if (strrpos($jit, '0') === 3) { - return false; - } - - return true; - } - - /** - * Returns the raw path to the binary of the current runtime. - */ - public function getRawBinary(): string - { - if (self::$initialized) { - return self::$rawBinary; - } - - if (PHP_BINARY !== '') { - self::$rawBinary = PHP_BINARY; - self::$initialized = true; - - return self::$rawBinary; - } - - // @codeCoverageIgnoreStart - $possibleBinaryLocations = [ - PHP_BINDIR . '/php', - PHP_BINDIR . '/php-cli.exe', - PHP_BINDIR . '/php.exe', - ]; - - foreach ($possibleBinaryLocations as $binary) { - if (is_readable($binary)) { - self::$rawBinary = $binary; - self::$initialized = true; - - return self::$rawBinary; - } - } - - self::$rawBinary = 'php'; - self::$initialized = true; - - return self::$rawBinary; - // @codeCoverageIgnoreEnd - } - - /** - * Returns the escaped path to the binary of the current runtime. - */ - public function getBinary(): string - { - return escapeshellarg($this->getRawBinary()); - } - - public function getNameWithVersion(): string - { - return $this->getName() . ' ' . $this->getVersion(); - } - - public function getNameWithVersionAndCodeCoverageDriver(): string - { - if ($this->hasPCOV()) { - return sprintf( - '%s with PCOV %s', - $this->getNameWithVersion(), - phpversion('pcov'), - ); - } - - if ($this->hasXdebug()) { - return sprintf( - '%s with Xdebug %s', - $this->getNameWithVersion(), - phpversion('xdebug'), - ); - } - - return $this->getNameWithVersion(); - } - - public function getName(): string - { - if ($this->isPHPDBG()) { - // @codeCoverageIgnoreStart - return 'PHPDBG'; - // @codeCoverageIgnoreEnd - } - - return 'PHP'; - } - - public function getVendorUrl(): string - { - return 'https://www.php.net/'; - } - - public function getVersion(): string - { - return PHP_VERSION; - } - - /** - * Returns true when the runtime used is PHP and Xdebug is loaded. - */ - public function hasXdebug(): bool - { - return $this->isPHP() && extension_loaded('xdebug'); - } - - /** - * Returns true when the runtime used is PHP without the PHPDBG SAPI. - */ - public function isPHP(): bool - { - return !$this->isPHPDBG(); - } - - /** - * Returns true when the runtime used is PHP with the PHPDBG SAPI. - */ - public function isPHPDBG(): bool - { - return PHP_SAPI === 'phpdbg'; - } - - /** - * Returns true when the runtime used is PHP with the PHPDBG SAPI - * and the phpdbg_*_oplog() functions are available (PHP >= 7.0). - */ - public function hasPHPDBGCodeCoverage(): bool - { - return $this->isPHPDBG(); - } - - /** - * Returns true when the runtime used is PHP with PCOV loaded and enabled. - */ - public function hasPCOV(): bool - { - return $this->isPHP() && extension_loaded('pcov') && ini_get('pcov.enabled'); - } - - /** - * Parses the loaded php.ini file (if any) as well as all - * additional php.ini files from the additional ini dir for - * a list of all configuration settings loaded from files - * at startup. Then checks for each php.ini setting passed - * via the `$values` parameter whether this setting has - * been changed at runtime. Returns an array of strings - * where each string has the format `key=value` denoting - * the name of a changed php.ini setting with its new value. - * - * @return string[] - */ - public function getCurrentSettings(array $values): array - { - $diff = []; - $files = []; - - if ($file = php_ini_loaded_file()) { - $files[] = $file; - } - - if ($scanned = php_ini_scanned_files()) { - $files = array_merge( - $files, - array_map( - 'trim', - explode(",\n", $scanned), - ), - ); - } - - foreach ($files as $ini) { - $config = parse_ini_file($ini, true); - - foreach ($values as $value) { - $set = ini_get($value); - - if (empty($set)) { - continue; - } - - if ((!isset($config[$value]) || ($set !== $config[$value]))) { - $diff[$value] = sprintf('%s=%s', $value, $set); - } - } - } - - return $diff; - } - - private function isOpcacheActive(): bool - { - if (!extension_loaded('Zend OPcache')) { - return false; - } - - if ((PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') && ini_get('opcache.enable_cli') === '1') { - return true; - } - - if (PHP_SAPI !== 'cli' && PHP_SAPI !== 'phpdbg' && ini_get('opcache.enable') === '1') { - return true; - } - - return false; - } -} diff --git a/docker/streamline-src/vendor/sebastian/exporter/ChangeLog.md b/docker/streamline-src/vendor/sebastian/exporter/ChangeLog.md deleted file mode 100644 index f261d31c..00000000 --- a/docker/streamline-src/vendor/sebastian/exporter/ChangeLog.md +++ /dev/null @@ -1,117 +0,0 @@ -# ChangeLog - -All notable changes are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles. - -## [5.1.2] - 2024-03-02 - -### Changed - -* Do not use implicitly nullable parameters - -## [5.1.1] - 2023-09-24 - -### Changed - -* [#52](https://github.com/sebastianbergmann/exporter/pull/52): Optimize export of large arrays and object graphs - -## [5.1.0] - 2023-09-18 - -### Changed - -* [#51](https://github.com/sebastianbergmann/exporter/pull/51): Export arrays using short array syntax - -## [5.0.1] - 2023-09-08 - -### Fixed - -* [#49](https://github.com/sebastianbergmann/exporter/issues/49): `Exporter::toArray()` changes `SplObjectStorage` index - -## [5.0.0] - 2023-02-03 - -### Changed - -* [#42](https://github.com/sebastianbergmann/exporter/pull/42): Improve export of enumerations - -### Removed - -* This component is no longer supported on PHP 7.3, PHP 7.4 and PHP 8.0 - -## [4.0.5] - 2022-09-14 - -### Fixed - -* [#47](https://github.com/sebastianbergmann/exporter/pull/47): Fix `float` export precision - -## [4.0.4] - 2021-11-11 - -### Changed - -* [#37](https://github.com/sebastianbergmann/exporter/pull/37): Improve export of closed resources - -## [4.0.3] - 2020-09-28 - -### Changed - -* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` - -## [4.0.2] - 2020-06-26 - -### Added - -* This component is now supported on PHP 8 - -## [4.0.1] - 2020-06-15 - -### Changed - -* Tests etc. are now ignored for archive exports - -## [4.0.0] - 2020-02-07 - -### Removed - -* This component is no longer supported on PHP 7.0, PHP 7.1, and PHP 7.2 - -## [3.1.5] - 2022-09-14 - -### Fixed - -* [#47](https://github.com/sebastianbergmann/exporter/pull/47): Fix `float` export precision - -## [3.1.4] - 2021-11-11 - -### Changed - -* [#38](https://github.com/sebastianbergmann/exporter/pull/38): Improve export of closed resources - -## [3.1.3] - 2020-11-30 - -### Changed - -* Changed PHP version constraint in `composer.json` from `^7.0` to `>=7.0` - -## [3.1.2] - 2019-09-14 - -### Fixed - -* [#29](https://github.com/sebastianbergmann/exporter/pull/29): Second parameter for `str_repeat()` must be an integer - -### Removed - -* Remove HHVM-specific code that is no longer needed - -[5.1.2]: https://github.com/sebastianbergmann/exporter/compare/5.1.1...5.1.2 -[5.1.1]: https://github.com/sebastianbergmann/exporter/compare/5.1.0...5.1.1 -[5.1.0]: https://github.com/sebastianbergmann/exporter/compare/5.0.1...5.1.0 -[5.0.1]: https://github.com/sebastianbergmann/exporter/compare/5.0.0...5.0.1 -[5.0.0]: https://github.com/sebastianbergmann/exporter/compare/4.0.5...5.0.0 -[4.0.5]: https://github.com/sebastianbergmann/exporter/compare/4.0.4...4.0.5 -[4.0.4]: https://github.com/sebastianbergmann/exporter/compare/4.0.3...4.0.4 -[4.0.3]: https://github.com/sebastianbergmann/exporter/compare/4.0.2...4.0.3 -[4.0.2]: https://github.com/sebastianbergmann/exporter/compare/4.0.1...4.0.2 -[4.0.1]: https://github.com/sebastianbergmann/exporter/compare/4.0.0...4.0.1 -[4.0.0]: https://github.com/sebastianbergmann/exporter/compare/3.1.2...4.0.0 -[3.1.5]: https://github.com/sebastianbergmann/exporter/compare/3.1.4...3.1.5 -[3.1.4]: https://github.com/sebastianbergmann/exporter/compare/3.1.3...3.1.4 -[3.1.3]: https://github.com/sebastianbergmann/exporter/compare/3.1.2...3.1.3 -[3.1.2]: https://github.com/sebastianbergmann/exporter/compare/3.1.1...3.1.2 diff --git a/docker/streamline-src/vendor/sebastian/exporter/LICENSE b/docker/streamline-src/vendor/sebastian/exporter/LICENSE deleted file mode 100644 index 5b4705a4..00000000 --- a/docker/streamline-src/vendor/sebastian/exporter/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -BSD 3-Clause License - -Copyright (c) 2002-2024, Sebastian Bergmann -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/docker/streamline-src/vendor/sebastian/exporter/src/Exporter.php b/docker/streamline-src/vendor/sebastian/exporter/src/Exporter.php deleted file mode 100644 index 05770759..00000000 --- a/docker/streamline-src/vendor/sebastian/exporter/src/Exporter.php +++ /dev/null @@ -1,339 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Exporter; - -use function bin2hex; -use function count; -use function get_resource_type; -use function gettype; -use function implode; -use function ini_get; -use function ini_set; -use function is_array; -use function is_float; -use function is_object; -use function is_resource; -use function is_string; -use function mb_strlen; -use function mb_substr; -use function preg_match; -use function spl_object_id; -use function sprintf; -use function str_repeat; -use function str_replace; -use function var_export; -use BackedEnum; -use SebastianBergmann\RecursionContext\Context; -use SplObjectStorage; -use UnitEnum; - -final class Exporter -{ - /** - * Exports a value as a string. - * - * The output of this method is similar to the output of print_r(), but - * improved in various aspects: - * - * - NULL is rendered as "null" (instead of "") - * - TRUE is rendered as "true" (instead of "1") - * - FALSE is rendered as "false" (instead of "") - * - Strings are always quoted with single quotes - * - Carriage returns and newlines are normalized to \n - * - Recursion and repeated rendering is treated properly - */ - public function export(mixed $value, int $indentation = 0): string - { - return $this->recursiveExport($value, $indentation); - } - - public function shortenedRecursiveExport(array &$data, ?Context $context = null): string - { - $result = []; - $exporter = new self; - - if (!$context) { - $context = new Context; - } - - $array = $data; - - /* @noinspection UnusedFunctionResultInspection */ - $context->add($data); - - foreach ($array as $key => $value) { - if (is_array($value)) { - if ($context->contains($data[$key]) !== false) { - $result[] = '*RECURSION*'; - } else { - $result[] = sprintf('[%s]', $this->shortenedRecursiveExport($data[$key], $context)); - } - } else { - $result[] = $exporter->shortenedExport($value); - } - } - - return implode(', ', $result); - } - - /** - * Exports a value into a single-line string. - * - * The output of this method is similar to the output of - * SebastianBergmann\Exporter\Exporter::export(). - * - * Newlines are replaced by the visible string '\n'. - * Contents of arrays and objects (if any) are replaced by '...'. - */ - public function shortenedExport(mixed $value): string - { - if (is_string($value)) { - $string = str_replace("\n", '', $this->export($value)); - - if (mb_strlen($string) > 40) { - return mb_substr($string, 0, 30) . '...' . mb_substr($string, -7); - } - - return $string; - } - - if ($value instanceof BackedEnum) { - return sprintf( - '%s Enum (%s, %s)', - $value::class, - $value->name, - $this->export($value->value), - ); - } - - if ($value instanceof UnitEnum) { - return sprintf( - '%s Enum (%s)', - $value::class, - $value->name, - ); - } - - if (is_object($value)) { - return sprintf( - '%s Object (%s)', - $value::class, - count($this->toArray($value)) > 0 ? '...' : '', - ); - } - - if (is_array($value)) { - return sprintf( - '[%s]', - count($value) > 0 ? '...' : '', - ); - } - - return $this->export($value); - } - - /** - * Converts an object to an array containing all of its private, protected - * and public properties. - */ - public function toArray(mixed $value): array - { - if (!is_object($value)) { - return (array) $value; - } - - $array = []; - - foreach ((array) $value as $key => $val) { - // Exception traces commonly reference hundreds to thousands of - // objects currently loaded in memory. Including them in the result - // has a severe negative performance impact. - if ("\0Error\0trace" === $key || "\0Exception\0trace" === $key) { - continue; - } - - // properties are transformed to keys in the following way: - // private $propertyName => "\0ClassName\0propertyName" - // protected $propertyName => "\0*\0propertyName" - // public $propertyName => "propertyName" - if (preg_match('/^\0.+\0(.+)$/', (string) $key, $matches)) { - $key = $matches[1]; - } - - // See https://github.com/php/php-src/commit/5721132 - if ($key === "\0gcdata") { - continue; - } - - $array[$key] = $val; - } - - // Some internal classes like SplObjectStorage do not work with the - // above (fast) mechanism nor with reflection in Zend. - // Format the output similarly to print_r() in this case - if ($value instanceof SplObjectStorage) { - foreach ($value as $_value) { - $array['Object #' . spl_object_id($_value)] = [ - 'obj' => $_value, - 'inf' => $value->getInfo(), - ]; - } - - $value->rewind(); - } - - return $array; - } - - private function recursiveExport(mixed &$value, int $indentation, ?Context $processed = null): string - { - if ($value === null) { - return 'null'; - } - - if ($value === true) { - return 'true'; - } - - if ($value === false) { - return 'false'; - } - - if (is_float($value)) { - $precisionBackup = ini_get('precision'); - - ini_set('precision', '-1'); - - try { - $valueStr = (string) $value; - - if ((string) (int) $value === $valueStr) { - return $valueStr . '.0'; - } - - return $valueStr; - } finally { - ini_set('precision', $precisionBackup); - } - } - - if (gettype($value) === 'resource (closed)') { - return 'resource (closed)'; - } - - if (is_resource($value)) { - return sprintf( - 'resource(%d) of type (%s)', - $value, - get_resource_type($value), - ); - } - - if ($value instanceof BackedEnum) { - return sprintf( - '%s Enum #%d (%s, %s)', - $value::class, - spl_object_id($value), - $value->name, - $this->export($value->value, $indentation), - ); - } - - if ($value instanceof UnitEnum) { - return sprintf( - '%s Enum #%d (%s)', - $value::class, - spl_object_id($value), - $value->name, - ); - } - - if (is_string($value)) { - // Match for most non-printable chars somewhat taking multibyte chars into account - if (preg_match('/[^\x09-\x0d\x1b\x20-\xff]/', $value)) { - return 'Binary String: 0x' . bin2hex($value); - } - - return "'" . - str_replace( - '', - "\n", - str_replace( - ["\r\n", "\n\r", "\r", "\n"], - ['\r\n', '\n\r', '\r', '\n'], - $value, - ), - ) . - "'"; - } - - $whitespace = str_repeat(' ', 4 * $indentation); - - if (!$processed) { - $processed = new Context; - } - - if (is_array($value)) { - if (($key = $processed->contains($value)) !== false) { - return 'Array &' . $key; - } - - $array = $value; - $key = $processed->add($value); - $values = ''; - - if (count($array) > 0) { - foreach ($array as $k => $v) { - $values .= - $whitespace - . ' ' . - $this->recursiveExport($k, $indentation) - . ' => ' . - $this->recursiveExport($value[$k], $indentation + 1, $processed) - . ",\n"; - } - - $values = "\n" . $values . $whitespace; - } - - return 'Array &' . (string) $key . ' [' . $values . ']'; - } - - if (is_object($value)) { - $class = $value::class; - - if ($processed->contains($value)) { - return $class . ' Object #' . spl_object_id($value); - } - - $processed->add($value); - $values = ''; - $array = $this->toArray($value); - - if (count($array) > 0) { - foreach ($array as $k => $v) { - $values .= - $whitespace - . ' ' . - $this->recursiveExport($k, $indentation) - . ' => ' . - $this->recursiveExport($v, $indentation + 1, $processed) - . ",\n"; - } - - $values = "\n" . $values . $whitespace; - } - - return $class . ' Object #' . spl_object_id($value) . ' (' . $values . ')'; - } - - return var_export($value, true); - } -} diff --git a/docker/streamline-src/vendor/sebastian/global-state/ChangeLog.md b/docker/streamline-src/vendor/sebastian/global-state/ChangeLog.md deleted file mode 100644 index 03f25470..00000000 --- a/docker/streamline-src/vendor/sebastian/global-state/ChangeLog.md +++ /dev/null @@ -1,108 +0,0 @@ -# Changes in sebastian/global-state - -All notable changes in `sebastian/global-state` are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles. - -## [6.0.2] - 2024-03-02 - -### Changed - -* Do not use implicitly nullable parameters - -## [6.0.1] - 2023-07-19 - -### Changed - -* Changed usage of `ReflectionProperty::setValue()` to be compatible with PHP 8.3 - -## [6.0.0] - 2023-02-03 - -### Changed - -* Renamed `SebastianBergmann\GlobalState\ExcludeList::addStaticAttribute()` to `SebastianBergmann\GlobalState\ExcludeList::addStaticProperty()` -* Renamed `SebastianBergmann\GlobalState\ExcludeList::isStaticAttributeExcluded()` to `SebastianBergmann\GlobalState\ExcludeList::isStaticPropertyExcluded()` -* Renamed `SebastianBergmann\GlobalState\Restorer::restoreStaticAttributes()` to `SebastianBergmann\GlobalState\Restorer::restoreStaticProperties()` -* Renamed `SebastianBergmann\GlobalState\Snapshot::staticAttributes()` to `SebastianBergmann\GlobalState\Snapshot::staticProperties()` - -### Removed - -* Removed `SebastianBergmann\GlobalState\Restorer::restoreFunctions()` -* This component is no longer supported on PHP 7.3, PHP 7.4 and PHP 8.0 - -## [5.0.5] - 2022-02-14 - -### Fixed - -* [#34](https://github.com/sebastianbergmann/global-state/pull/34): Uninitialised typed static properties are not handled correctly - -## [5.0.4] - 2022-02-10 - -### Fixed - -* The `$includeTraits` parameter of `SebastianBergmann\GlobalState\Snapshot::__construct()` is not respected - -## [5.0.3] - 2021-06-11 - -### Changed - -* `SebastianBergmann\GlobalState\CodeExporter::globalVariables()` now generates code that is compatible with PHP 8.1 - -## [5.0.2] - 2020-10-26 - -### Fixed - -* `SebastianBergmann\GlobalState\Exception` now correctly extends `\Throwable` - -## [5.0.1] - 2020-09-28 - -### Changed - -* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` - -## [5.0.0] - 2020-08-07 - -### Changed - -* The `SebastianBergmann\GlobalState\Blacklist` class has been renamed to `SebastianBergmann\GlobalState\ExcludeList` - -## [4.0.0] - 2020-02-07 - -### Removed - -* This component is no longer supported on PHP 7.2 - -## [3.0.2] - 2022-02-10 - -### Fixed - -* The `$includeTraits` parameter of `SebastianBergmann\GlobalState\Snapshot::__construct()` is not respected - -## [3.0.1] - 2020-11-30 - -### Changed - -* Changed PHP version constraint in `composer.json` from `^7.2` to `>=7.2` - -## [3.0.0] - 2019-02-01 - -### Changed - -* `Snapshot::canBeSerialized()` now recursively checks arrays and object graphs for variables that cannot be serialized - -### Removed - -* This component is no longer supported on PHP 7.0 and PHP 7.1 - -[6.0.2]: https://github.com/sebastianbergmann/global-state/compare/6.0.1...6.0.2 -[6.0.1]: https://github.com/sebastianbergmann/global-state/compare/6.0.0...6.0.1 -[6.0.0]: https://github.com/sebastianbergmann/global-state/compare/5.0.5...6.0.0 -[5.0.5]: https://github.com/sebastianbergmann/global-state/compare/5.0.4...5.0.5 -[5.0.4]: https://github.com/sebastianbergmann/global-state/compare/5.0.3...5.0.4 -[5.0.3]: https://github.com/sebastianbergmann/global-state/compare/5.0.2...5.0.3 -[5.0.2]: https://github.com/sebastianbergmann/global-state/compare/5.0.1...5.0.2 -[5.0.1]: https://github.com/sebastianbergmann/global-state/compare/5.0.0...5.0.1 -[5.0.0]: https://github.com/sebastianbergmann/global-state/compare/4.0.0...5.0.0 -[4.0.0]: https://github.com/sebastianbergmann/global-state/compare/3.0.2...4.0.0 -[3.0.2]: https://github.com/sebastianbergmann/phpunit/compare/3.0.1...3.0.2 -[3.0.1]: https://github.com/sebastianbergmann/phpunit/compare/3.0.0...3.0.1 -[3.0.0]: https://github.com/sebastianbergmann/phpunit/compare/2.0.0...3.0.0 - diff --git a/docker/streamline-src/vendor/sebastian/global-state/LICENSE b/docker/streamline-src/vendor/sebastian/global-state/LICENSE deleted file mode 100644 index bdb57ec6..00000000 --- a/docker/streamline-src/vendor/sebastian/global-state/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -BSD 3-Clause License - -Copyright (c) 2001-2024, Sebastian Bergmann -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/docker/streamline-src/vendor/sebastian/global-state/composer.json b/docker/streamline-src/vendor/sebastian/global-state/composer.json deleted file mode 100644 index d38d64d2..00000000 --- a/docker/streamline-src/vendor/sebastian/global-state/composer.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "name": "sebastian/global-state", - "description": "Snapshotting of global state", - "keywords": ["global state"], - "homepage": "https://www.github.com/sebastianbergmann/global-state", - "license": "BSD-3-Clause", - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "security": "https://github.com/sebastianbergmann/global-state/security/policy" - }, - "prefer-stable": true, - "config": { - "platform": { - "php": "8.1.0" - }, - "optimize-autoloader": true, - "sort-packages": true - }, - "require": { - "php": ">=8.1", - "sebastian/object-reflector": "^3.0", - "sebastian/recursion-context": "^5.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^10.0" - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "autoload-dev": { - "classmap": [ - "tests/_fixture/" - ], - "files": [ - "tests/_fixture/SnapshotFunctions.php" - ] - }, - "extra": { - "branch-alias": { - "dev-main": "6.0-dev" - } - } -} diff --git a/docker/streamline-src/vendor/sebastian/global-state/src/CodeExporter.php b/docker/streamline-src/vendor/sebastian/global-state/src/CodeExporter.php deleted file mode 100644 index 6b720811..00000000 --- a/docker/streamline-src/vendor/sebastian/global-state/src/CodeExporter.php +++ /dev/null @@ -1,106 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\GlobalState; - -use const PHP_EOL; -use function is_array; -use function is_scalar; -use function serialize; -use function sprintf; -use function var_export; - -final class CodeExporter -{ - public function constants(Snapshot $snapshot): string - { - $result = ''; - - foreach ($snapshot->constants() as $name => $value) { - $result .= sprintf( - 'if (!defined(\'%s\')) define(\'%s\', %s);' . "\n", - $name, - $name, - $this->exportVariable($value), - ); - } - - return $result; - } - - public function globalVariables(Snapshot $snapshot): string - { - $result = <<<'EOT' -call_user_func( - function () - { - foreach (array_keys($GLOBALS) as $key) { - unset($GLOBALS[$key]); - } - } -); - - -EOT; - - foreach ($snapshot->globalVariables() as $name => $value) { - $result .= sprintf( - '$GLOBALS[%s] = %s;' . PHP_EOL, - $this->exportVariable($name), - $this->exportVariable($value), - ); - } - - return $result; - } - - public function iniSettings(Snapshot $snapshot): string - { - $result = ''; - - foreach ($snapshot->iniSettings() as $key => $value) { - $result .= sprintf( - '@ini_set(%s, %s);' . "\n", - $this->exportVariable($key), - $this->exportVariable($value), - ); - } - - return $result; - } - - private function exportVariable(mixed $variable): string - { - if (is_scalar($variable) || null === $variable || - (is_array($variable) && $this->arrayOnlyContainsScalars($variable))) { - return var_export($variable, true); - } - - return 'unserialize(' . var_export(serialize($variable), true) . ')'; - } - - private function arrayOnlyContainsScalars(array $array): bool - { - $result = true; - - foreach ($array as $element) { - if (is_array($element)) { - $result = $this->arrayOnlyContainsScalars($element); - } elseif (!is_scalar($element) && null !== $element) { - $result = false; - } - - if ($result === false) { - break; - } - } - - return $result; - } -} diff --git a/docker/streamline-src/vendor/sebastian/global-state/src/ExcludeList.php b/docker/streamline-src/vendor/sebastian/global-state/src/ExcludeList.php deleted file mode 100644 index 3754e814..00000000 --- a/docker/streamline-src/vendor/sebastian/global-state/src/ExcludeList.php +++ /dev/null @@ -1,95 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\GlobalState; - -use function in_array; -use function str_starts_with; -use ReflectionClass; - -final class ExcludeList -{ - private array $globalVariables = []; - private array $classes = []; - private array $classNamePrefixes = []; - private array $parentClasses = []; - private array $interfaces = []; - private array $staticProperties = []; - - public function addGlobalVariable(string $variableName): void - { - $this->globalVariables[$variableName] = true; - } - - public function addClass(string $className): void - { - $this->classes[] = $className; - } - - public function addSubclassesOf(string $className): void - { - $this->parentClasses[] = $className; - } - - public function addImplementorsOf(string $interfaceName): void - { - $this->interfaces[] = $interfaceName; - } - - public function addClassNamePrefix(string $classNamePrefix): void - { - $this->classNamePrefixes[] = $classNamePrefix; - } - - public function addStaticProperty(string $className, string $propertyName): void - { - if (!isset($this->staticProperties[$className])) { - $this->staticProperties[$className] = []; - } - - $this->staticProperties[$className][$propertyName] = true; - } - - public function isGlobalVariableExcluded(string $variableName): bool - { - return isset($this->globalVariables[$variableName]); - } - - /** - * @psalm-param class-string $className - */ - public function isStaticPropertyExcluded(string $className, string $propertyName): bool - { - if (in_array($className, $this->classes, true)) { - return true; - } - - foreach ($this->classNamePrefixes as $prefix) { - if (str_starts_with($className, $prefix)) { - return true; - } - } - - $class = new ReflectionClass($className); - - foreach ($this->parentClasses as $type) { - if ($class->isSubclassOf($type)) { - return true; - } - } - - foreach ($this->interfaces as $type) { - if ($class->implementsInterface($type)) { - return true; - } - } - - return isset($this->staticProperties[$className][$propertyName]); - } -} diff --git a/docker/streamline-src/vendor/sebastian/global-state/src/Restorer.php b/docker/streamline-src/vendor/sebastian/global-state/src/Restorer.php deleted file mode 100644 index d84e155e..00000000 --- a/docker/streamline-src/vendor/sebastian/global-state/src/Restorer.php +++ /dev/null @@ -1,106 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\GlobalState; - -use function array_diff; -use function array_key_exists; -use function array_keys; -use function array_merge; -use function in_array; -use function is_array; -use ReflectionClass; -use ReflectionProperty; - -final class Restorer -{ - public function restoreGlobalVariables(Snapshot $snapshot): void - { - $superGlobalArrays = $snapshot->superGlobalArrays(); - - foreach ($superGlobalArrays as $superGlobalArray) { - $this->restoreSuperGlobalArray($snapshot, $superGlobalArray); - } - - $globalVariables = $snapshot->globalVariables(); - - foreach (array_keys($GLOBALS) as $key) { - if ($key !== 'GLOBALS' && - !in_array($key, $superGlobalArrays, true) && - !$snapshot->excludeList()->isGlobalVariableExcluded($key)) { - if (array_key_exists($key, $globalVariables)) { - $GLOBALS[$key] = $globalVariables[$key]; - } else { - unset($GLOBALS[$key]); - } - } - } - } - - public function restoreStaticProperties(Snapshot $snapshot): void - { - $current = new Snapshot($snapshot->excludeList(), false, false, false, false, true, false, false, false, false); - $newClasses = array_diff($current->classes(), $snapshot->classes()); - - unset($current); - - foreach ($snapshot->staticProperties() as $className => $staticProperties) { - foreach ($staticProperties as $name => $value) { - $reflector = new ReflectionProperty($className, $name); - $reflector->setValue(null, $value); - } - } - - foreach ($newClasses as $className) { - $class = new ReflectionClass($className); - $defaults = $class->getDefaultProperties(); - - foreach ($class->getProperties() as $property) { - if (!$property->isStatic()) { - continue; - } - - $name = $property->getName(); - - if ($snapshot->excludeList()->isStaticPropertyExcluded($className, $name)) { - continue; - } - - if (!isset($defaults[$name])) { - continue; - } - - $property->setValue(null, $defaults[$name]); - } - } - } - - private function restoreSuperGlobalArray(Snapshot $snapshot, string $superGlobalArray): void - { - $superGlobalVariables = $snapshot->superGlobalVariables(); - - if (isset($GLOBALS[$superGlobalArray], $superGlobalVariables[$superGlobalArray]) && - is_array($GLOBALS[$superGlobalArray])) { - $keys = array_keys( - array_merge( - $GLOBALS[$superGlobalArray], - $superGlobalVariables[$superGlobalArray], - ), - ); - - foreach ($keys as $key) { - if (isset($superGlobalVariables[$superGlobalArray][$key])) { - $GLOBALS[$superGlobalArray][$key] = $superGlobalVariables[$superGlobalArray][$key]; - } else { - unset($GLOBALS[$superGlobalArray][$key]); - } - } - } - } -} diff --git a/docker/streamline-src/vendor/sebastian/global-state/src/Snapshot.php b/docker/streamline-src/vendor/sebastian/global-state/src/Snapshot.php deleted file mode 100644 index 310c8566..00000000 --- a/docker/streamline-src/vendor/sebastian/global-state/src/Snapshot.php +++ /dev/null @@ -1,371 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\GlobalState; - -use function array_keys; -use function array_merge; -use function array_reverse; -use function assert; -use function func_get_args; -use function get_declared_classes; -use function get_declared_interfaces; -use function get_declared_traits; -use function get_defined_constants; -use function get_defined_functions; -use function get_included_files; -use function in_array; -use function ini_get_all; -use function is_array; -use function is_object; -use function is_resource; -use function is_scalar; -use function serialize; -use function unserialize; -use ReflectionClass; -use SebastianBergmann\ObjectReflector\ObjectReflector; -use SebastianBergmann\RecursionContext\Context; -use Throwable; - -/** - * A snapshot of global state. - */ -class Snapshot -{ - private ExcludeList $excludeList; - private array $globalVariables = []; - private array $superGlobalArrays = []; - private array $superGlobalVariables = []; - private array $staticProperties = []; - private array $iniSettings = []; - private array $includedFiles = []; - private array $constants = []; - private array $functions = []; - private array $interfaces = []; - private array $classes = []; - private array $traits = []; - - public function __construct(?ExcludeList $excludeList = null, bool $includeGlobalVariables = true, bool $includeStaticProperties = true, bool $includeConstants = true, bool $includeFunctions = true, bool $includeClasses = true, bool $includeInterfaces = true, bool $includeTraits = true, bool $includeIniSettings = true, bool $includeIncludedFiles = true) - { - $this->excludeList = $excludeList ?: new ExcludeList; - - if ($includeConstants) { - $this->snapshotConstants(); - } - - if ($includeFunctions) { - $this->snapshotFunctions(); - } - - if ($includeClasses || $includeStaticProperties) { - $this->snapshotClasses(); - } - - if ($includeInterfaces) { - $this->snapshotInterfaces(); - } - - if ($includeGlobalVariables) { - $this->setupSuperGlobalArrays(); - $this->snapshotGlobals(); - } - - if ($includeStaticProperties) { - $this->snapshotStaticProperties(); - } - - if ($includeIniSettings) { - $this->iniSettings = ini_get_all(null, false); - } - - if ($includeIncludedFiles) { - $this->includedFiles = get_included_files(); - } - - if ($includeTraits) { - $this->traits = get_declared_traits(); - } - } - - public function excludeList(): ExcludeList - { - return $this->excludeList; - } - - public function globalVariables(): array - { - return $this->globalVariables; - } - - public function superGlobalVariables(): array - { - return $this->superGlobalVariables; - } - - public function superGlobalArrays(): array - { - return $this->superGlobalArrays; - } - - public function staticProperties(): array - { - return $this->staticProperties; - } - - public function iniSettings(): array - { - return $this->iniSettings; - } - - public function includedFiles(): array - { - return $this->includedFiles; - } - - public function constants(): array - { - return $this->constants; - } - - public function functions(): array - { - return $this->functions; - } - - public function interfaces(): array - { - return $this->interfaces; - } - - public function classes(): array - { - return $this->classes; - } - - public function traits(): array - { - return $this->traits; - } - - private function snapshotConstants(): void - { - $constants = get_defined_constants(true); - - if (isset($constants['user'])) { - $this->constants = $constants['user']; - } - } - - private function snapshotFunctions(): void - { - $functions = get_defined_functions(); - - $this->functions = $functions['user']; - } - - private function snapshotClasses(): void - { - foreach (array_reverse(get_declared_classes()) as $className) { - $class = new ReflectionClass($className); - - if (!$class->isUserDefined()) { - break; - } - - $this->classes[] = $className; - } - - $this->classes = array_reverse($this->classes); - } - - private function snapshotInterfaces(): void - { - foreach (array_reverse(get_declared_interfaces()) as $interfaceName) { - $class = new ReflectionClass($interfaceName); - - if (!$class->isUserDefined()) { - break; - } - - $this->interfaces[] = $interfaceName; - } - - $this->interfaces = array_reverse($this->interfaces); - } - - private function snapshotGlobals(): void - { - $superGlobalArrays = $this->superGlobalArrays(); - - foreach ($superGlobalArrays as $superGlobalArray) { - $this->snapshotSuperGlobalArray($superGlobalArray); - } - - foreach (array_keys($GLOBALS) as $key) { - if ($key !== 'GLOBALS' && - !in_array($key, $superGlobalArrays, true) && - $this->canBeSerialized($GLOBALS[$key]) && - !$this->excludeList->isGlobalVariableExcluded($key)) { - /* @noinspection UnserializeExploitsInspection */ - $this->globalVariables[$key] = unserialize(serialize($GLOBALS[$key])); - } - } - } - - private function snapshotSuperGlobalArray(string $superGlobalArray): void - { - $this->superGlobalVariables[$superGlobalArray] = []; - - if (isset($GLOBALS[$superGlobalArray]) && is_array($GLOBALS[$superGlobalArray])) { - foreach ($GLOBALS[$superGlobalArray] as $key => $value) { - /* @noinspection UnserializeExploitsInspection */ - $this->superGlobalVariables[$superGlobalArray][$key] = unserialize(serialize($value)); - } - } - } - - private function snapshotStaticProperties(): void - { - foreach ($this->classes as $className) { - $class = new ReflectionClass($className); - $snapshot = []; - - foreach ($class->getProperties() as $property) { - if ($property->isStatic()) { - $name = $property->getName(); - - if ($this->excludeList->isStaticPropertyExcluded($className, $name)) { - continue; - } - - if (!$property->isInitialized()) { - continue; - } - - $value = $property->getValue(); - - if ($this->canBeSerialized($value)) { - /* @noinspection UnserializeExploitsInspection */ - $snapshot[$name] = unserialize(serialize($value)); - } - } - } - - if (!empty($snapshot)) { - $this->staticProperties[$className] = $snapshot; - } - } - } - - private function setupSuperGlobalArrays(): void - { - $this->superGlobalArrays = [ - '_ENV', - '_POST', - '_GET', - '_COOKIE', - '_SERVER', - '_FILES', - '_REQUEST', - ]; - } - - private function canBeSerialized(mixed $variable): bool - { - if (is_scalar($variable) || $variable === null) { - return true; - } - - if (is_resource($variable)) { - return false; - } - - foreach ($this->enumerateObjectsAndResources($variable) as $value) { - if (is_resource($value)) { - return false; - } - - if (is_object($value)) { - $class = new ReflectionClass($value); - - if ($class->isAnonymous()) { - return false; - } - - try { - @serialize($value); - } catch (Throwable $t) { - return false; - } - } - } - - return true; - } - - private function enumerateObjectsAndResources(mixed $variable): array - { - if (isset(func_get_args()[1])) { - $processed = func_get_args()[1]; - } else { - $processed = new Context; - } - - assert($processed instanceof Context); - - $result = []; - - if ($processed->contains($variable)) { - return $result; - } - - $array = $variable; - - /* @noinspection UnusedFunctionResultInspection */ - $processed->add($variable); - - if (is_array($variable)) { - foreach ($array as $element) { - if (!is_array($element) && !is_object($element) && !is_resource($element)) { - continue; - } - - if (!is_resource($element)) { - /** @noinspection SlowArrayOperationsInLoopInspection */ - $result = array_merge( - $result, - $this->enumerateObjectsAndResources($element, $processed), - ); - } else { - $result[] = $element; - } - } - } else { - $result[] = $variable; - - foreach ((new ObjectReflector)->getProperties($variable) as $value) { - if (!is_array($value) && !is_object($value) && !is_resource($value)) { - continue; - } - - if (!is_resource($value)) { - /** @noinspection SlowArrayOperationsInLoopInspection */ - $result = array_merge( - $result, - $this->enumerateObjectsAndResources($value, $processed), - ); - } else { - $result[] = $value; - } - } - } - - return $result; - } -} diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/CHANGELOG.md b/docker/streamline-src/vendor/squizlabs/php_codesniffer/CHANGELOG.md deleted file mode 100644 index 4f055159..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/CHANGELOG.md +++ /dev/null @@ -1,7557 +0,0 @@ -# Changelog - -The file documents changes to the PHP_CodeSniffer project. - -## [Unreleased] - -_Nothing yet._ - -## [3.11.2] - 2024-12-11 - -### Changed -- Generators/HTML + Markdown: the output will now be empty (no page header/footer) when there are no docs to display. [#687] - - This is in line with the Text Generator which already didn't produce output if there are no docs. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch. -- Generators/HTML: only display a Table of Contents when there is more than one sniff with documentation. [#697] - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch. -- Generators/HTML: improved handling of line breaks in `` blocks. [#723] - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch. -- Generators/Markdown: improved compatibility with the variety of available markdown parsers. [#722] - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch. -- Generators/Markdown: improved handling of line breaks in `` blocks. [#737] - - This prevents additional paragraphs from being displayed as code blocks. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch. -- Generic.NamingConventions.UpperCaseConstantName: the exact token containing the non-uppercase constant name will now be identified with more accuracy. [#665] - - Thanks to [Rodrigo Primo][@rodrigoprimo] for the patch. -- Generic.Functions.OpeningFunctionBraceKernighanRitchie: minor improvement to the error message wording. [#736] - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch. -- Various housekeeping, including improvements to the tests and documentation. - - Thanks to [Rodrigo Primo][@rodrigoprimo] and [Juliette Reinders Folmer][@jrfnl] for their contributions. - -### Fixed -- Fixed bug [#527] : Squiz.Arrays.ArrayDeclaration: short lists within a foreach condition should be ignored. - - Thanks to [Rodrigo Primo][@rodrigoprimo] for the patch. -- Fixed bug [#665] : Generic.NamingConventions.UpperCaseConstantName: false positives and false negatives when code uses unconventional spacing and comments when calling `define()`. - - Thanks to [Rodrigo Primo][@rodrigoprimo] for the patch. -- Fixed bug [#665] : Generic.NamingConventions.UpperCaseConstantName: false positive when a constant named `DEFINE` is encountered. - - Thanks to [Rodrigo Primo][@rodrigoprimo] for the patch. -- Fixed bug [#665] : Generic.NamingConventions.UpperCaseConstantName: false positive for attribute class called `define`. - - Thanks to [Rodrigo Primo][@rodrigoprimo] for the patch. -- Fixed bug [#665] : Generic.NamingConventions.UpperCaseConstantName: false positive when handling the instantiation of a class named `define`. - - Thanks to [Rodrigo Primo][@rodrigoprimo] for the patch. -- Fixed bug [#688] : Generators/Markdown could leave error_reporting in an incorrect state. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch. -- Fixed bug [#698] : Generators/Markdown : link in the documentation footer would not parse as a link. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch. -- Fixed bug [#738] : Generators/Text: stray blank lines after code sample titles. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch. -- Fixed bug [#739] : Generators/HTML + Markdown: multi-space whitespace within a code sample title was folded into a single space. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch. - -[#527]: https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/527 -[#665]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/665 -[#687]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/687 -[#688]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/688 -[#697]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/697 -[#698]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/698 -[#722]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/722 -[#723]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/723 -[#736]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/736 -[#737]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/737 -[#738]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/738 -[#739]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/739 - -## [3.11.1] - 2024-11-16 - -### Changed -- Output from the `--generator=...` feature will respect the OS-expected EOL char in more places. [#671] - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch. -- Various housekeeping, including improvements to the tests and documentation. - - Thanks to [Bartosz Dziewoński][@MatmaRex] and [Juliette Reinders Folmer][@jrfnl] for their contributions. - -### Fixed -- Fixed bug [#674] : Generic.WhiteSpace.HereNowdocIdentifierSpacing broken XML documentation - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch. -- Fixed bug [#675] : InvalidArgumentException when a ruleset includes a sniff by file name and the included sniff does not comply with the PHPCS naming conventions. - - Notwithstanding this fix, it is strongly recommended to ensure custom sniff classes comply with the PHPCS naming conventions. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch. - -[#671]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/671 -[#674]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/674 -[#675]: https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/675 - -## [3.11.0] - 2024-11-12 - -### Added -- Runtime support for PHP 8.4. All known PHP 8.4 deprecation notices have been fixed. - - Syntax support for new PHP 8.4 features will follow in a future release. - - If you find any PHP 8.4 deprecation notices which were missed, please report them. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patches. -- Tokenizer support for PHP 8.3 "yield from" expressions with a comment between the keywords. [#529], [#647] - - Sniffs explicitly handling T_YIELD_FROM tokens may need updating. The PR description contains example code for use by sniff developers. - - Additionally, the following sniff has been updated to support "yield from" expressions with comments: - - Generic.WhiteSpace.LanguageConstructSpacing - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch. -- New `Generic.WhiteSpace.HereNowdocIdentifierSpacing` sniff. [#586], [#637] - - Forbid whitespace between the `<<<` and the identifier string in heredoc/nowdoc start tokens. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch. -- New `Generic.Strings.UnnecessaryHeredoc` sniff. [#633] - - Warns about heredocs without interpolation or expressions in the body text and can auto-fix these to nowdocs. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch. -- Documentation for the following sniffs: - - Generic.Arrays.ArrayIndent - - Squiz.PHP.Heredoc - - Thanks to [Rodrigo Primo][@rodrigoprimo] and [Juliette Reinders Folmer][@jrfnl] for the patches. - -### Changed -- The Common::getSniffCode() method will now throw an InvalidArgumentException exception if an invalid `$sniffClass` is passed. [#524], [#625] - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch. -- Documentation generated using the `--generator=...` feature will now always be presented in natural order based on the sniff name(s). [#668] - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch. -- Minor improvements to the display of runtime information. [#658] - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch. -- Squiz.Commenting.PostStatementComment: trailing annotations in PHP files will now be reported under a separate, non-auto-fixable error code `AnnotationFound`. [#560], [#627] - - This prevents (tooling related) annotations from taking on a different meaning when moved by the fixer. - - The separate error code also allows for selectively excluding it to prevent the sniff from triggering on trailing annotations, while still forbidding other trailing comments. - - Thanks to [Rodrigo Primo][@rodrigoprimo] for the patch. -- Squiz.ControlStructures.ForEachLoopDeclaration: the `SpacingAfterOpen` error code has been replaced by the `SpaceAfterOpen` error code. The latter is a pre-existing code. The former appears to have been a typo. [#582] - - Thanks to [Dan Wallis][@fredden] for the patch. -- The following sniff(s) have received efficiency improvements: - - Generic.Classes.DuplicateClassName - - Generic.NamingConventions.ConstructorName - - Thanks to [Rodrigo Primo][@rodrigoprimo] and [Juliette Reinders Folmer][@jrfnl] for the patches. -- Various housekeeping, including improvements to the tests and documentation. - - Thanks to [Rodrigo Primo][@rodrigoprimo] and [Juliette Reinders Folmer][@jrfnl] for their contributions. - -### Fixed -- Fixed bug [#3808][sq-3808] : Generic.WhiteSpace.ScopeIndent would throw false positive for tab indented multi-token yield from expression. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#630] : The tokenizer could inadvertently transform "normal" parentheses to DNF parentheses, when a function call was preceded by a switch-case / alternative syntax control structure colon. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#645] : On PHP 5.4, if yield was used as the declaration name for a function declared to return by reference, the function name would incorrectly be tokenized as T_YIELD instead of T_STRING. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#647] : Tokenizer not applying tab replacement in single token "yield from" keywords. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#647] : Generic.WhiteSpace.DisallowSpaceIndent did not flag space indentation in multi-line yield from. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#647] : Generic.WhiteSpace.DisallowTabIndent did not flag tabs inside yield from. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#652] : Generic.NamingConventions.ConstructorName: false positives for PHP-4 style calls to PHP-4 style parent constructor when a method with the same name as the parent class was called on another class. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#652] : Generic.NamingConventions.ConstructorName: false negatives for PHP-4 style calls to parent constructor for function calls with whitespace and comments in unconventional places. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#653] : Generic.Classes.DuplicateClassName : the sniff did not skip namespace keywords used as operators, which could lead to false positives. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#653] : Generic.Classes.DuplicateClassName : sniff going into an infinite loop during live coding. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#653] : Generic.Classes.DuplicateClassName : false positives/negatives when a namespace declaration contained whitespace or comments in unconventional places. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#653] : Generic.Classes.DuplicateClassName : namespace for a file going in/out of PHP was not remembered/applied correctly. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch - -[sq-3808]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3808 -[#524]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/524 -[#529]: https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/529 -[#560]: https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/560 -[#582]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/582 -[#586]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/586 -[#625]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/625 -[#627]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/627 -[#630]: https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/630 -[#633]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/633 -[#637]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/637 -[#645]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/645 -[#647]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/647 -[#652]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/652 -[#653]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/653 -[#658]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/658 -[#668]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/668 - -## [3.10.3] - 2024-09-18 - -### Changed -- Various housekeeping, including improvements to the tests and documentation. - - Thanks to [Rodrigo Primo][@rodrigoprimo] and [Juliette Reinders Folmer][@jrfnl] for their contributions. - -### Fixed -- Fixed bug [#553] : Squiz.Classes.SelfMemberReference: false negative(s) when namespace operator was encountered between the namespace declaration and the OO declaration. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#579] : AbstractPatternSniff: potential PHP notice during live coding. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#580] : Squiz.Formatting.OperatorBracket: potential PHP notice during live coding. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#581] : PSR12.ControlStructures.ControlStructureSpacing: prevent fixer conflict by correctly handling multiple empty newlines before the first condition in a multi-line control structure. - - Thanks to [Dan Wallis][@fredden] for the patch. -- Fixed bug [#585] : Tokenizer not applying tab replacement in heredoc/nowdoc openers. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#588] : Squiz.PHP.EmbeddedPhp false positive when checking spaces after a PHP short open tag. - - Thanks to [Rodrigo Primo][@rodrigoprimo] for the patch. -- Fixed bug [#597] : Generic.PHP.LowerCaseKeyword did not flag nor fix non-lowercase anonymous class keywords. - - Thanks to [Marek Štípek][@maryo] for the patch. -- Fixed bug [#598] : Squiz.PHP.DisallowMultipleAssignments: false positive on assignments to variable property on object stored in array. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#608] : Squiz.Functions.MultiLineFunctionDeclaration did not take (parameter) attributes into account when checking for one parameter per line. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch - -### Other -- The provenance of PHAR files associated with a release can now be verified via [GitHub Artifact Attestations][ghattest] using the [GitHub CLI tool][ghcli] with the following command: `gh attestation verify [phpcs|phpcbf].phar -o PHPCSStandards`. [#574] - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch. - -[#553]: https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/553 -[#574]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/574 -[#579]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/579 -[#580]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/580 -[#581]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/581 -[#585]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/585 -[#588]: https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/588 -[#597]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/597 -[#598]: https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/598 -[#608]: https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/608 - -[ghcli]: https://cli.github.com/ -[ghattest]: https://docs.github.com/en/actions/security-for-github-actions/using-artifact-attestations/using-artifact-attestations-to-establish-provenance-for-builds - -## [3.10.2] - 2024-07-22 - -### Changed -- The following sniff(s) have received efficiency improvements: - - Generic.Functions.FunctionCallArgumentSpacing - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch. -- The array format of the information passed to the `Reports::generateFileReport()` method is now documented in the Reports interface. [#523] - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch. -- Various housekeeping, including improvements to the tests and documentation. - - Thanks to [Bill Ruddock][@biinari], [Dan Wallis][@fredden], [Klaus Purer][@klausi], [Rodrigo Primo][@rodrigoprimo] and [Juliette Reinders Folmer][@jrfnl] for their contributions. - -### Fixed -- Fixed bug [#513] : Generic.Functions.FunctionCallArgumentSpacing did not ignore the body of a match expressions passed as a function argument, which could lead to false positives. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#533] : Generic.WhiteSpace.DisallowTabIndent: tab indentation for heredoc/nowdoc closers will no longer be auto-fixed to prevent parse errors. The issue will still be reported. - - The error code for heredoc/nowdoc indentation using tabs has been made more specific - `TabsUsedHeredocCloser` - to allow for selectively excluding the indentation check for heredoc/nowdoc closers. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#534] : Generic.WhiteSpace.DisallowSpaceIndent did not report on space indentation for PHP 7.3 flexible heredoc/nowdoc closers. - - Closers using space indentation will be reported with a dedicated error code: `SpacesUsedHeredocCloser`. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#537] : Squiz.PHP.DisallowMultipleAssignments false positive for list assignments at the start of a new PHP block after an embedded PHP statement. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#551] : Squiz.PHP.DisallowMultipleAssignments prevent false positive for function parameters during live coding. - - Thanks to [Rodrigo Primo][@rodrigoprimo] for the patch. -- Fixed bug [#554] : Generic.CodeAnalysis.UselessOverridingMethod edge case false negative when the call to the parent method would end on a PHP close tag. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#555] : Squiz.Classes.SelfMemberReference edge case false negative when the namespace declaration would end on a PHP close tag. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch - -[#513]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/513 -[#523]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/523 -[#533]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/533 -[#534]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/534 -[#537]: https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/537 -[#551]: https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/551 -[#554]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/554 -[#555]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/555 - -## [3.10.1] - 2024-05-22 - -### Added -- Documentation for the following sniffs: - - Generic.Commenting.DocComment - - Thanks to [Rodrigo Primo][@rodrigoprimo] for the patch. - -### Changed -- The following have received efficiency improvements: - - Type handling in the PHP Tokenizer - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch. -- Various housekeeping, including improvements to the tests and documentation. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for their contributions. - -### Fixed -- Fixed bug [#110], [#437], [#475] : `File::findStartOfStatement()`: the start of statement/expression determination for tokens in parentheses/short array brackets/others scopes, nested within match expressions, was incorrect in most cases. - The trickle down effect of the bug fixes made to the `File::findStartOfStatement()` method, is that the Generic.WhiteSpace.ScopeIndent and the PEAR.WhiteSpace.ScopeIndent sniffs should now be able to correctly determine and fix the indent for match expressions containing nested expressions. - These fixes also fix an issue with the `Squiz.Arrays.ArrayDeclaration` sniff and possibly other, unreported bugs. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#504] : The tokenizer could inadvertently mistake the last parameter in a function call using named arguments for a DNF type. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#508] : Tokenizer/PHP: extra hardening against handling parse errors in the type handling layer. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch - -[#110]: https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/110 -[#437]: https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/437 -[#475]: https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/475 -[#504]: https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/504 -[#508]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/508 - -## [3.10.0] - 2024-05-20 - -### Added -- Tokenizer support for PHP 8.2 Disjunctive Normal Form (DNF) types. [#3731][sq-3731], [#387], [#461] - - Includes new `T_TYPE_OPEN_PARENTHESIS` and `T_TYPE_CLOSE_PARENTHESIS` tokens to represent the parentheses in DNF types. - - These new tokens, like other parentheses, will have the `parenthesis_opener` and `parenthesis_closer` token array indexes set and the tokens between them will have the `nested_parenthesis` index. - - The `File::getMethodProperties()`, `File::getMethodParameters()` and `File::getMemberProperties()` methods now all support DNF types. [#471], [#472], [#473] - - Additionally, the following sniff has been updated to support DNF types: - - Generic.PHP.LowerCaseType [#478] - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patches. -- Documentation for the following sniffs: - - Squiz.WhiteSpace.FunctionClosingBraceSpace - - Thanks to [Przemek Hernik][@przemekhernik] for the patch. - -### Changed -- The help screens have received a face-lift for improved usability and readability. [#447] - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch and thanks to [Colin Stewart][@costdev], [Gary Jones][@GaryJones] and [@mbomb007] for reviewing. -- The Squiz.Commenting.ClosingDeclarationComment sniff will now also examine and flag closing comments for traits. [#442] - - Thanks to [Rodrigo Primo][@rodrigoprimo] for the patch. -- The following sniff(s) have efficiency improvements: - - Generic.Arrays.ArrayIndent - - Thanks to [Rodrigo Primo][@rodrigoprimo] for the patch. -- The autoloader will now always return a boolean value indicating whether it has loaded a class or not. [#479] - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch. -- Various housekeeping, including improvements to the tests and documentation. - - Thanks to [Dan Wallis][@fredden], [Danny van der Sluijs][@DannyvdSluijs], [Rodrigo Primo][@rodrigoprimo] and [Juliette Reinders Folmer][@jrfnl] for their contributions. - -### Fixed -- Fixed bug [#466] : Generic.Functions.CallTimePassByReference was not flagging call-time pass-by-reference in class instantiations using the self/parent/static keywords. - - Thanks to [Rodrigo Primo][@rodrigoprimo] for the patch. -- Fixed bug [#494] : edge case bug in tokenization of an empty block comment. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#494] : edge case bug in tokenization of an empty single-line DocBlock. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#499] : Generic.ControlStructures.InlineControlStructure now handles statements with a comment between `else` and `if` correctly. - - Thanks to [Rodrigo Primo][@rodrigoprimo] for the patch. - -[sq-3731]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3731 -[#387]: https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/387 -[#442]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/442 -[#447]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/447 -[#461]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/461 -[#466]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/466 -[#471]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/471 -[#472]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/472 -[#473]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/473 -[#478]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/478 -[#479]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/479 -[#494]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/494 -[#499]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/499 - -## [3.9.2] - 2024-04-24 - -### Changed -- The Generic.ControlStructures.DisallowYodaConditions sniff no longer listens for the null coalesce operator. [#458] - - Thanks to [Rodrigo Primo][@rodrigoprimo] for the patch. -- Various housekeeping, including improvements to the tests and documentation. - - Thanks to [Dan Wallis][@fredden], [Rodrigo Primo][@rodrigoprimo] and [Juliette Reinders Folmer][@jrfnl] for their contributions. - -### Fixed -- Fixed bug [#381] : Squiz.Commenting.ClosingDeclarationComment could throw the wrong error when the close brace being examined is at the very end of a file. - - Thanks to [Rodrigo Primo][@rodrigoprimo] for the patch. -- Fixed bug [#385] : Generic.CodeAnalysis.JumbledIncrementer improved handling of parse errors/live coding. - - Thanks to [Rodrigo Primo][@rodrigoprimo] for the patch. -- Fixed bug [#394] : Generic.Functions.CallTimePassByReference was not flagging call-time pass-by-reference in anonymous class instantiations - - Thanks to [Rodrigo Primo][@rodrigoprimo] for the patch. -- Fixed bug [#420] : PEAR.Functions.FunctionDeclaration could run into a blocking PHP notice while fixing code containing a parse error. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#421] : File::getMethodProperties() small performance improvement & more defensive coding. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#423] : PEAR.WhiteSpace.ScopeClosingBrace would have a fixer conflict with itself when a close tag was preceded by non-empty inline HTML. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#424] : PSR2.Classes.ClassDeclaration using namespace relative interface names in the extends/implements part of a class declaration would lead to a fixer conflict. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#427] : Squiz.Operators.OperatorSpacing would have a fixer conflict with itself when an operator was preceeded by a new line and the previous line ended in a comment. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#430] : Squiz.ControlStructures.ForLoopDeclaration: fixed potential undefined array index notice - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#431] : PSR2.Classes.ClassDeclaration will no longer try to auto-fix multi-line interface implements statements if these are interlaced with comments on their own line. This prevents a potential fixer conflict. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#453] : Arrow function tokenization was broken when the return type was a stand-alone `true` or `false`; or contained `true` or `false` as part of a union type. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch - -### Other -- [ESLint 9.0] has been released and changes the supported configuration file format. - The (deprecated) `Generic.Debug.ESLint` sniff only supports the "old" configuration file formats and when using the sniff to run ESLint, the `ESLINT_USE_FLAT_CONFIG=false` environment variable will need to be set when using ESLint >= 9.0. - For more information, see [#436]. - - -[ESLint 9.0]: https://eslint.org/blog/2024/04/eslint-v9.0.0-released/#flat-config-is-now-the-default-and-has-some-changes - -[#381]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/381 -[#385]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/385 -[#394]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/394 -[#420]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/420 -[#421]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/421 -[#423]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/423 -[#424]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/424 -[#427]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/427 -[#430]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/430 -[#431]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/431 -[#436]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/436 -[#453]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/453 -[#458]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/458 - -## [3.9.1] - 2024-03-31 - -### Added -- Documentation for the following sniffs: - - Generic.PHP.RequireStrictTypes - - Squiz.WhiteSpace.MemberVarSpacing - - Squiz.WhiteSpace.ScopeClosingBrace - - Squiz.WhiteSpace.SuperfluousWhitespace - - Thanks to [Jay McPartland][@jaymcp] and [Rodrigo Primo][@rodrigoprimo] for the patches. - -### Changed -- The following sniffs have received performance related improvements: - - Generic.CodeAnalysis.UselessOverridingMethod - - Generic.Files.ByteOrderMark - - Thanks to [Rodrigo Primo][@rodrigoprimo] for the patches. -- Performance improvement for the "Diff" report. Should be most notable for Windows users. [#355] - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch. -- The test suite has received some performance improvements. Should be most notable contributors using Windows. [#351] - - External standards with sniff tests using the PHP_CodeSniffer native test framework will also benefit from these changes. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch. -- Various housekeeping, including improvements to the tests and documentation. - - Thanks to [Jay McPartland][@jaymcp], [João Pedro Oliveira][@jpoliveira08], [Rodrigo Primo][@rodrigoprimo] and [Juliette Reinders Folmer][@jrfnl] for their contributions. - -### Fixed -- Fixed bug [#289] : Squiz.WhiteSpace.OperatorSpacing and PSR12.Operators.OperatorSpacing : improved fixer conflict protection by more strenuously avoiding handling operators in declare statements. - - Thanks to [Dan Wallis][@fredden] for the patch. -- Fixed bug [#366] : Generic.CodeAnalysis.UselessOverridingMethod : prevent false negative when the declared method name and the called method name do not use the same case. - - Thanks to [Rodrigo Primo][@rodrigoprimo] for the patch. -- Fixed bug [#368] : Squiz.Arrays.ArrayDeclaration fixer did not handle static closures correctly when moving array items to their own line. - - Thanks to [Michał Bundyra][@michalbundyra] for the patch. -- Fixed bug [#404] : Test framework : fixed PHP 8.4 deprecation notice. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch - -[#289]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/289 -[#351]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/351 -[#355]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/355 -[#366]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/366 -[#368]: https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/368 -[#404]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/404 - -## [3.9.0] - 2024-02-16 - -### Added -- Tokenizer support for PHP 8.3 typed class constants. [#321] - - Additionally, the following sniffs have been updated to support typed class constants: - - Generic.NamingConventions.UpperCaseConstantName [#332] - - Generic.PHP.LowerCaseConstant [#330] - - Generic.PHP.LowerCaseType [#331] - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patches -- Tokenizer support for PHP 8.3 readonly anonymous classes. [#309] - - Additionally, the following sniffs have been updated to support readonly anonymous classes: - - PSR12.Classes.ClassInstantiation [#324] - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patches -- New `PHP_CodeSniffer\Sniffs\DeprecatedSniff` interface to allow for marking a sniff as deprecated. [#281] - - If a ruleset uses deprecated sniffs, deprecation notices will be shown to the end-user before the scan starts. - When running in `-q` (quiet) mode, the deprecation notices will be hidden. - - Deprecated sniffs will still run and using them will have no impact on the exit code for a scan. - - In ruleset "explain"-mode (`-e`) an asterix `*` will show next to deprecated sniffs. - - Sniff maintainers are advised to read through the PR description for full details on how to use this feature for their own (deprecated) sniffs. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- New `Generic.CodeAnalysis.RequireExplicitBooleanOperatorPrecedence` sniff. [#197] - - Forbid mixing different binary boolean operators within a single expression without making precedence clear using parentheses - - Thanks to [Tim Düsterhus][@TimWolla] for the contribution -- Squiz.PHP.EmbeddedPhp : the sniff will now also examine the formatting of embedded PHP statements using short open echo tags. [#27] - - Includes a new `ShortOpenEchoNoSemicolon` errorcode to allow for selectively ignoring missing semicolons in single line embedded PHP snippets within short open echo tags. - - The other error codes are the same and do not distinguish between what type of open tag was used. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Documentation for the following sniffs: - - Generic.WhiteSpace.IncrementDecrementSpacing - - PSR12.ControlStructures.ControlStructureSpacing - - PSR12.Files.ImportStatement - - PSR12.Functions.ReturnTypeDeclaration - - PSR12.Properties.ConstantVisibility - - Thanks to [Denis Žoljom][@dingo-d] and [Rodrigo Primo][@rodrigoprimo] for the patches - -### Changed -- The Performance report can now also be used for a `phpcbf` run. [#308] - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Sniff tests which extend the PHPCS native `AbstractSniffUnitTest` class will now show a (non-build-breaking) warning when test case files contain fixable errors/warnings, but there is no corresponding `.fixed` file available in the test suite to verify the fixes against. [#336] - - The warning is only displayed on PHPUnit 7.3.0 and higher. - - The warning will be elevated to a test failure in PHPCS 4.0. - - Thanks to [Dan Wallis][@fredden] for the patch -- The following sniffs have received performance related improvements: - - Squiz.PHP.EmbeddedPhp - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Various housekeeping, including improvements to the tests and documentation - - Thanks to [Dan Wallis][@fredden], [Joachim Noreiko][@joachim-n], [Remi Collet][@remicollet], [Rodrigo Primo][@rodrigoprimo] and [Juliette Reinders Folmer][@jrfnl] for their contributions - -### Deprecated -- Support for scanning JavaScript and CSS files. See [#2448][sq-2448]. - - This also means that all sniffs which are only aimed at JavaScript or CSS files are now deprecated. - - The Javascript and CSS Tokenizers, all Javascript and CSS specific sniffs, and support for JS and CSS in select sniffs which support multiple file types, will be removed in version 4.0.0. -- The abstract `PHP_CodeSniffer\Filters\ExactMatch::getBlacklist()` and `PHP_CodeSniffer\Filters\ExactMatch::getWhitelist()` methods are deprecated and will be removed in the 4.0 release. See [#198]. - - In version 4.0, these methods will be replaced with abstract `ExactMatch::getDisallowedFiles()` and `ExactMatch::getAllowedFiles()` methods - - To make Filters extending `ExactMatch` cross-version compatible with both PHP_CodeSniffer 3.9.0+ as well as 4.0+, implement the new `getDisallowedFiles()` and `getAllowedFiles()` methods. - - When both the `getDisallowedFiles()` and `getAllowedFiles()` methods as well as the `getBlacklist()` and `getWhitelist()` are available, the new methods will take precedence over the old methods. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- The MySource standard and all sniffs in it. See [#2471][sq-2471]. - - The MySource standard and all sniffs in it will be removed in version 4.0.0. -- The `Zend.Debug.CodeAnalyzer` sniff. See [#277]. - - This sniff will be removed in version 4.0.0. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch - -### Fixed -- Fixed bug [#127] : Squiz.Commenting.FunctionComment : The `MissingParamType` error code will now be used instead of `MissingParamName` when a parameter name is provided, but not its type. Additionally, invalid type hint suggestions will no longer be provided in these cases. - - Thanks to [Dan Wallis][@fredden] for the patch -- Fixed bug [#196] : Squiz.PHP.EmbeddedPhp : fixer will no longer leave behind trailing whitespace when moving code to another line. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#196] : Squiz.PHP.EmbeddedPhp : will now determine the needed indent with higher precision in multiple situations. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#196] : Squiz.PHP.EmbeddedPhp : fixer will no longer insert a stray new line when the closer of a multi-line embedded PHP block and the opener of the next multi-line embedded PHP block would be on the same line. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#235] : Generic.CodeAnalysis.ForLoopWithTestFunctionCall : prevent a potential PHP 8.3 deprecation notice during live coding - - Thanks to [Rodrigo Primo][@rodrigoprimo] for the patch -- Fixed bug [#288] : Generic.WhiteSpace.IncrementDecrementSpacing : error message for post-in/decrement will now correctly inform about new lines found before the operator. - - Thanks to [Rodrigo Primo][@rodrigoprimo] for the patch -- Fixed bug [#296] : Generic.WhiteSpace.ArbitraryParenthesesSpacing : false positive for non-arbitrary parentheses when these follow the scope closer of a `switch` `case`. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#307] : PSR2.Classes.ClassDeclaration : space between a modifier keyword and the `class` keyword was not checked when the space included a new line or comment. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#325] : Squiz.Operators.IncrementDecrementUsage : the sniff was underreporting when there was (no) whitespace and/or comments in unexpected places. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#335] : PSR12.Files.DeclareStatement : bow out in a certain parse error situation to prevent incorrect auto-fixes from being made. - - Thanks to [Dan Wallis][@fredden] for the patch -- Fixed bug [#340] : Squiz.Commenting.ClosingDeclarationComment : no longer adds a stray newline when adding a missing comment. - - Thanks to [Dan Wallis][@fredden] for the patch - -### Other -- A "Community cc list" has been introduced to ping maintainers of external standards and integrators for input regarding change proposals for PHP_CodeSniffer which may impact them. [#227] - - For anyone who missed the discussion about this and is interested to be on this list, please feel invited to submit a PR to add yourself. - The list is located in the `.github` folder. - -[sq-2448]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2448 -[sq-2471]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2471 -[#27]: https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/27 -[#127]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/127 -[#196]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/196 -[#197]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/197 -[#198]: https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/198 -[#227]: https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/227 -[#235]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/235 -[#277]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/277 -[#281]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/281 -[#288]: https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/288 -[#296]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/296 -[#307]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/307 -[#308]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/308 -[#309]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/309 -[#321]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/321 -[#324]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/324 -[#325]: https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/325 -[#330]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/330 -[#331]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/331 -[#332]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/332 -[#335]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/335 -[#336]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/336 -[#340]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/340 - -## [3.8.1] - 2024-01-11 - -### Added -- Documentation has been added for the following sniffs: - - Generic.CodeAnalysis.EmptyPHPStatement - - Generic.Formatting.SpaceBeforeCast - - Generic.PHP.Syntax - - Generic.WhiteSpace.LanguageConstructSpacing - - PSR12.Classes.ClosingBrace - - PSR12.Classes.OpeningBraceSpace - - PSR12.ControlStructures.BooleanOperatorPlacement - - PSR12.Files.OpenTag - - Thanks to [Rodrigo Primo][@rodrigoprimo] and [Denis Žoljom][@dingo-d] for the patches - -### Changed -- GitHub releases will now always only contain unversioned release assets (PHARS + asc files) (same as it previously was in the squizlabs repo). See [#205] for context. - - Thanks to [Shivam Mathur][@shivammathur] for opening a discussion about this -- Various housekeeping, includes improvements to the tests and documentation - - Thanks to [Dan Wallis][@fredden], [Lucas Hoffmann][@lucc], [Rodrigo Primo][@rodrigoprimo] and [Juliette Reinders Folmer][@jrfnl] for their contributions - -### Fixed -- Fixed bug [#124] : Report Full : avoid unnecessarily wrapping lines when `-s` is used - - Thanks to [Brad Jorsch][@anomiex] for the patch -- Fixed bug [#124] : Report Full : fix incorrect bolding of pipes when `-s` is used and messages wraps - - Thanks to [Brad Jorsch][@anomiex] for the patch -- Fixed bug [#150] : Squiz.WhiteSpace.KeywordSpacing : prevent a PHP notice when run during live coding - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#154] : Report Full : delimiter line calculation could go wonky on wide screens when a report contains multi-line messages - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#178] : Squiz.Commenting.VariableComment : docblocks were incorrectly being flagged as missing when a property declaration used PHP native union/intersection type declarations - - Thanks to [Ferdinand Kuhl][@fcool] for the patch -- Fixed bug [#211] : Squiz.Commenting.VariableComment : docblocks were incorrectly being flagged as missing when a property declaration used PHP 8.2+ stand-alone `true`/`false`/`null` type declarations - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#211] : Squiz.Commenting.VariableComment : docblocks were incorrectly being flagged as missing when a property declaration used PHP native `parent`, `self` or a namespace relative class name type declaration - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#226] : Generic.CodeAnalysis.ForLoopShouldBeWhileLoop : prevent a potential PHP 8.3 deprecation notice during live coding - - Thanks to [Rodrigo Primo][@rodrigoprimo] for the patch - -[#124]: https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/124 -[#150]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/150 -[#154]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/154 -[#178]: https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/178 -[#205]: https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/205 -[#211]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/211 -[#226]: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/226 - -## [3.8.0] - 2023-12-08 - -[Squizlabs/PHP_CodeSniffer](https://github.com/squizlabs/PHP_CodeSniffer) is dead. Long live [PHPCSStandards/PHP_CodeSniffer](https://github.com/PHPCSStandards/PHP_CodeSniffer)! - -### Breaking Changes -- The `squizlabs/PHP_CodeSniffer` repository has been abandoned. The `PHPCSStandards/PHP_CodeSniffer` repository will serve as the continuation of the project. For more information about this change, please read the [announcement](https://github.com/squizlabs/PHP_CodeSniffer/issues/3932). - - Installation of PHP_CodeSniffer via PEAR is no longer supported. - - Users will need to switch to another installation method. - - Note: this does not affect the PEAR sniffs. - - For Composer users, nothing changes. - - **_In contrast to earlier information, the `squizlabs/php_codesniffer` package now points to the new repository and everything will continue to work as before._** - - PHIVE users may need to clear the PHIVE URL cache. - - PHIVE users who don't use the package alias, but refer to the package URL, will need to update the URL from `https://squizlabs.github.io/PHP_CodeSniffer/phars/` to `https://phars.phpcodesniffer.com/phars/`. - - Users who download the PHAR files using curl or wget, will need to update the download URL from `https://squizlabs.github.io/PHP_CodeSniffer/[phpcs|phpcbf].phar` or `https://github.com/squizlabs/PHP_CodeSniffer/releases/latest/download/[phpcs|phpcbf].phar` to `https://phars.phpcodesniffer.com/[phpcs|phpcbf].phar`. - - For users who install PHP_CodeSniffer via the [Setup-PHP](https://github.com/shivammathur/setup-php/) action runner for GitHub Actions, nothing changes. - - Users using a git clone will need to update the clone address from `git@github.com:squizlabs/PHP_CodeSniffer.git` to `git@github.com:PHPCSStandards/PHP_CodeSniffer.git`. - - Contributors will need to fork the new repo and add both the new fork as well as the new repo as remotes to their local git copy of PHP_CodeSniffer. - - Users who have (valid) open issues or pull requests in the `squizlabs/PHP_CodeSniffer` repository are invited to resubmit these to the `PHPCSStandards/PHP_CodeSniffer` repository. - -### Added -- Runtime support for PHP 8.3. All known PHP 8.3 deprecation notices have been fixed - - Syntax support for new PHP 8.3 features will follow in a future release - - If you find any PHP 8.3 deprecation notices which were missed, please report them - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patches -- Added support for PHP 8.2 readonly classes to File::getClassProperties() through a new is_readonly array index in the return value - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Added support for PHP 8.2 readonly classes to a number of sniffs - - Generic.CodeAnalysis.UnnecessaryFinalModifier - - PEAR.Commenting.ClassComment - - PEAR.Commenting.FileComment - - PSR1.Files.SideEffects - - PSR2.Classes.ClassDeclaration - - PSR12.Files.FileHeader - - Squiz.Classes.ClassDeclaration - - Squiz.Classes.LowercaseClassKeywords - - Squiz.Commenting.ClassComment - - Squiz.Commenting.DocCommentAlignment - - Squiz.Commenting.FileComment - - Squiz.Commenting.InlineComment - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Added support for PHP 8.2 `true` as a stand-alone type declaration - - The `File::getMethodProperties()`, `File::getMethodParameters()` and `File::getMemberProperties()` methods now all support the `true` type - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Added support for PHP 8.2 `true` as a stand-alone type to a number of sniffs - - Generic.PHP.LowerCaseType - - PSr12.Functions.NullableTypeDeclaration - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Added a Performance report to allow for finding "slow" sniffs - - To run this report, run PHPCS with --report=Performance. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.PHP.RequireStrictTypes : new warning for when there is a declare statement, but the strict_types directive is set to 0 - - The warning can be turned off by excluding the `Generic.PHP.RequireStrictTypes.Disabled` error code - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.Commenting.FunctionComment : new `ParamNameUnexpectedAmpersandPrefix` error for parameters annotated as passed by reference while the parameter is not passed by reference - - Thanks to [Dan Wallis][@fredden] for the patch -- Documentation has been added for the following sniffs: - - PSR2.Files.ClosingTag - - PSR2.Methods.FunctionCallSignature - - PSR2.Methods.FunctionClosingBrace - - Thanks to [Atsushi Okui][@blue32a] for the patch -- Support for PHPUnit 8 and 9 to the test suite - - Test suites for external standards which run via the PHPCS native test suite can now run on PHPUnit 4-9 (was 4-7) - - If any of these tests use the PHPUnit `setUp()`/`tearDown()` methods or overload the `setUp()` in the `AbstractSniffUnitTest` test case, they will need to be adjusted. See the [PR details for further information](https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/59/commits/bc302dd977877a22c5e60d42a2f6b7d9e9192dab) - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch - -### Changed -- Changes have been made to the way PHPCS handles invalid sniff properties being set in a custom ruleset - - Fixes PHP 8.2 deprecation notices for properties set in a (custom) ruleset for complete standards/complete sniff categories - - Invalid sniff properties set for individual sniffs will now result in an error and halt the execution of PHPCS - - A descriptive error message is provided to allow users to fix their ruleset - - Sniff properties set for complete standards/complete sniff categories will now only be set on sniffs which explicitly support the property - - The property will be silently ignored for those sniffs which do not support the property - - Invalid sniff properties set for sniffs via inline annotations will result in an informative `Internal.PropertyDoesNotExist` errror on line 1 of the scanned file, but will not halt the execution of PHPCS - - For sniff developers, it is strongly recommended for sniffs to explicitly declare any user-adjustable public properties - - If dynamic properties need to be supported for a sniff, either declare the magic __set()/__get()/__isset()/__unset() methods on the sniff or let the sniff extend stdClass - - Note: The `#[\AllowDynamicProperties]` attribute will have no effect for properties which are being set in rulesets - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- The third parameter for the Ruleset::setSniffProperty() method has been changed to expect an array - - Sniff developers/integrators of PHPCS may need to make some small adjustments to allow for this change - - Existing code will continue to work but will throw a deprecation error - - The backwards compatiblity layer will be removed in PHPCS 4.0 - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- When using `auto` report width (the default) a value of 80 columns will be used if the width cannot be determined - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Sniff error messages are now more informative to help bugs get reported to the correct project - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.CodeAnalysis.UnusedFunctionParameter will now ignore magic methods for which the signature is defined by PHP - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.Functions.OpeningFunctionBraceBsdAllman will now check the brace indent before the opening brace for empty functions - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.Functions.OpeningFunctionBraceKernighanRitchie will now check the spacing before the opening brace for empty functions - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.WhiteSpace.IncrementDecrementSpacing now detects more spacing issues - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- PSR2.Classes.PropertyDeclaration now enforces that the readonly modifier comes after the visibility modifier - - PSR2 and PSR12 do not have documented rules for this as they pre-date the readonly modifier - - PSR-PER has been used to confirm the order of this keyword so it can be applied to PSR2 and PSR12 correctly - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- PEAR.Commenting.FunctionComment + Squiz.Commenting.FunctionComment: the SpacingAfter error can now be auto-fixed - - Thanks to [Dan Wallis][@fredden] for the patch -- Squiz.PHP.InnerFunctions sniff no longer reports on OO methods for OO structures declared within a function or closure - - Thanks to [@Daimona] for the patch -- Squiz.PHP.NonExecutableCode will now also flag redundant return statements just before a closure close brace - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Runtime performance improvement for PHPCS CLI users. The improvement should be most noticeable for users on Windows. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- The following sniffs have received performance related improvements: - - Generic.PHP.LowerCaseConstant - - Generic.PHP.LowerCaseType - - PSR12.Files.OpenTag - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patches -- The -e (explain) command will now list sniffs in natural order - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Tests using the PHPCS native test framework with multiple test case files will now run the test case files in numeric order. - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- The following sniffs have received minor message readability improvements: - - Generic.Arrays.ArrayIndent - - Generic.Formatting.SpaceAfterCast - - Generic.Formatting.SpaceAfterNot - - Generic.WhiteSpace.SpreadOperatorSpacingAfter - - Squiz.Arrays.ArrayDeclaration - - Squiz.Commenting.DocCommentAlignment - - Squiz.ControlStructures.ControlSignature - - Thanks to [Danny van der Sluijs][@DannyvdSluijs] and [Juliette Reinders Folmer][@jrfnl] for the patches -- Improved README syntax highlighting - - Thanks to [Benjamin Loison][@Benjamin-Loison] for the patch -- Various documentation improvements - - Thanks to [Andrew Dawes][@AndrewDawes], [Danny van der Sluijs][@DannyvdSluijs] and [Juliette Reinders Folmer][@jrfnl] for the patches - -### Removed -- Removed support for installation via PEAR - - Use composer or the PHAR files instead - -### Fixed -- Fixed bug [#2857][sq-2857] : Squiz/NonExecutableCode: prevent false positives when exit is used in a ternary expression or as default with null coalesce - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3386][sq-3386] : PSR1/SideEffects : improved recognition of disable/enable annotations - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3557][sq-3557] : Squiz.Arrays.ArrayDeclaration will now ignore PHP 7.4 array unpacking when determining whether an array is associative - - Thanks to [Volker Dusch][@edorian] for the patch -- Fixed bug [#3592][sq-3592] : Squiz/NonExecutableCode: prevent false positives when a PHP 8.0+ inline throw expression is encountered - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3715][sq-3715] : Generic/UnusedFunctionParameter: fixed incorrect errorcode for closures/arrow functions nested within extended classes/classes which implement - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3717][sq-3717] : Squiz.Commenting.FunctionComment: fixed false positive for `InvalidNoReturn` when type is never - - Thanks to [Choraimy Kroonstuiver][@axlon] for the patch -- Fixed bug [#3720][sq-3720] : Generic/RequireStrictTypes : will now bow out silently in case of parse errors/live coding instead of throwing false positives/false negatives - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3720][sq-3720] : Generic/RequireStrictTypes : did not handle multi-directive declare statements - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3722][sq-3722] : Potential "Uninitialized string offset 1" in octal notation backfill - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3736][sq-3736] : PEAR/FunctionDeclaration: prevent fixer removing the close brace (and creating a parse error) when there is no space between the open brace and close brace of a function - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3739][sq-3739] : PEAR/FunctionDeclaration: prevent fixer conflict, and potentially creating a parse error, for unconventionally formatted return types - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3770][sq-3770] : Squiz/NonExecutableCode: prevent false positives for switching between PHP and HTML - - Thanks to [Dan Wallis][@fredden] for the patch -- Fixed bug [#3773][sq-3773] : Tokenizer/PHP: tokenization of the readonly keyword when used in combination with PHP 8.2 disjunctive normal types - - Thanks to [Dan Wallis][@fredden] and [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3776][sq-3776] : Generic/JSHint: error when JSHint is not available - - Thanks to [Dan Wallis][@fredden] for the patch -- Fixed bug [#3777][sq-3777] : Squiz/NonExecutableCode: slew of bug fixes, mostly related to modern PHP - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3778][sq-3778] : Squiz/LowercasePHPFunctions: bug fix for class names in attributes - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3779][sq-3779] : Generic/ForbiddenFunctions: bug fix for class names in attributes - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3785][sq-3785] : Squiz.Commenting.FunctionComment: potential "Uninitialized string offset 0" when a type contains a duplicate pipe symbol - - Thanks to [Dan Wallis][@fredden] for the patch -- Fixed bug [#3787][sq-3787] : `PEAR/Squiz/[MultiLine]FunctionDeclaration`: allow for PHP 8.1 new in initializers - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3789][sq-3789] : Incorrect tokenization for ternary operator with `match` inside of it - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3790][sq-3790] : PSR12/AnonClassDeclaration: prevent fixer creating parse error when there was no space before the open brace - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3797][sq-3797] : Tokenizer/PHP: more context sensitive keyword fixes - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3801][sq-3801] : File::getMethodParameters(): allow for readonly promoted properties without visibility - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3805][sq-3805] : Generic/FunctionCallArgumentSpacing: prevent fixer conflict over PHP 7.3+ trailing comma's in function calls - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3806][sq-3806] : Squiz.PHP.InnerFunctions sniff now correctly reports inner functions declared within a closure - - Thanks to [@Daimona] for the patch -- Fixed bug [#3809][sq-3809] : GitBlame report was broken when passing a basepath - - Thanks to [Chris][@datengraben] for the patch -- Fixed bug [#3813][sq-3813] : Squiz.Commenting.FunctionComment: false positive for parameter name mismatch on parameters annotated as passed by reference - - Thanks to [Dan Wallis][@fredden] for the patch -- Fixed bug [#3833][sq-3833] : Generic.PHP.LowerCaseType: fixed potential undefined array index notice - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3846][sq-3846] : PSR2.Classes.ClassDeclaration.CloseBraceAfterBody : fixer will no longer remove indentation on the close brace line - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3854][sq-3854] : Fatal error when using Gitblame report in combination with `--basepath` and running from project subdirectory - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3856][sq-3856] : PSR12.Traits.UseDeclaration was using the wrong error code - SpacingAfterAs - for spacing issues after the `use` keyword - - These will now be reported using the SpacingAfterUse error code - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3856][sq-3856] : PSR12.Traits.UseDeclaration did not check spacing after `use` keyword for multi-line trait use statements - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3867][sq-3867] : Tokenizer/PHP: union type and intersection type operators were not correctly tokenized for static properties without explicit visibility - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3877][sq-3877] : Filter names can be case-sensitive. The -h help text will now display the correct case for the available filters - - Thanks to [@simonsan] for the patch -- Fixed bug [#3893][sq-3893] : Generic/DocComment : the SpacingAfterTagGroup fixer could accidentally remove ignore annotations - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3898][sq-3898] : Squiz/NonExecutableCode : the sniff could get confused over comments in unexpected places - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3904][sq-3904] : Squiz/FunctionSpacing : prevent potential fixer conflict - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3906][sq-3906] : Tokenizer/CSS: bug fix related to the unsupported slash comment syntax - - Thanks to [Dan Wallis][@fredden] for the patch -- Fixed bug [#3913][sq-3913] : Config did not always correctly store unknown "long" arguments in the `$unknown` property - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch - -Thanks go to [Dan Wallis][@fredden] and [Danny van der Sluijs][@DannyvdSluijs] for reviewing quite a few of the PRs for this release. -Additionally, thanks to [Alexander Turek][@derrabus] for consulting on the repo change over. - -[sq-2857]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2857 -[sq-3386]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3386 -[sq-3557]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3557 -[sq-3592]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3592 -[sq-3715]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3715 -[sq-3717]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3717 -[sq-3720]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3720 -[sq-3722]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3722 -[sq-3736]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3736 -[sq-3739]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3739 -[sq-3770]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3770 -[sq-3773]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3773 -[sq-3776]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3776 -[sq-3777]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3777 -[sq-3778]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3778 -[sq-3779]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3779 -[sq-3785]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3785 -[sq-3787]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3787 -[sq-3789]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3789 -[sq-3790]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3790 -[sq-3797]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3797 -[sq-3801]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3801 -[sq-3805]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3805 -[sq-3806]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3806 -[sq-3809]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3809 -[sq-3813]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3813 -[sq-3833]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3833 -[sq-3846]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3846 -[sq-3854]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3854 -[sq-3856]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3856 -[sq-3867]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3867 -[sq-3877]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3877 -[sq-3893]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3893 -[sq-3898]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3898 -[sq-3904]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3904 -[sq-3906]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3906 -[sq-3913]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3913 - -## [3.7.2] - 2023-02-23 - -### Changed -- Newer versions of Composer will now suggest installing PHPCS using require-dev instead of require - - Thanks to [Gary Jones][@GaryJones] for the patch -- A custom Out Of Memory error will now be shown if PHPCS or PHPCBF run out of memory during a run - - Error message provides actionable information about how to fix the problem and ensures the error is not silent - - Thanks to [Juliette Reinders Folmer][@jrfnl] and [Alain Schlesser][@schlessera] for the patch -- Generic.PHP.LowerCaseType sniff now correctly examines types inside arrow functions - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.Formatting.OperatorBracket no longer reports false positives in match() structures - -### Fixed -- Fixed bug [#3616][sq-3616] : Squiz.PHP.DisallowComparisonAssignment false positive for PHP 8 match expression - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3618][sq-3618] : Generic.WhiteSpace.ArbitraryParenthesesSpacing false positive for return new parent() - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3632][sq-3632] : Short list not tokenized correctly in control structures without braces - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3639][sq-3639] : Tokenizer not applying tab replacement to heredoc/nowdoc closers - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3640][sq-3640] : Generic.WhiteSpace.DisallowTabIndent not reporting errors for PHP 7.3 flexible heredoc/nowdoc syntax - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3645][sq-3645] : PHPCS can show 0 exit code when running in parallel even if child process has fatal error - - Thanks to [Alex Panshin][@enl] for the patch -- Fixed bug [#3653][sq-3653] : False positives for match() in OperatorSpacingSniff - - Thanks to [Jaroslav Hanslík][@kukulich] for the patch -- Fixed bug [#3666][sq-3666] : PEAR.Functions.FunctionCallSignature incorrect indent fix when checking mixed HTML/PHP files -- Fixed bug [#3668][sq-3668] : PSR12.Classes.ClassInstantiation.MissingParentheses false positive when instantiating parent classes - - Similar issues also fixed in Generic.Functions.FunctionCallArgumentSpacing and Squiz.Formatting.OperatorBracket - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3672][sq-3672] : Incorrect ScopeIndent.IncorrectExact report for match inside array literal -- Fixed bug [#3694][sq-3694] : Generic.WhiteSpace.SpreadOperatorSpacingAfter does not ignore spread operator in PHP 8.1 first class callables - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch - -[sq-3616]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3616 -[sq-3618]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3618 -[sq-3632]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3632 -[sq-3639]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3639 -[sq-3640]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3640 -[sq-3645]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3645 -[sq-3653]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3653 -[sq-3666]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3666 -[sq-3668]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3668 -[sq-3672]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3672 -[sq-3694]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3694 - -## [3.7.1] - 2022-06-18 - -### Fixed -- Fixed bug [#3609][sq-3609] : Methods/constants with name empty/isset/unset are always reported as error - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch - -[sq-3609]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3609 - -## [3.7.0] - 2022-06-13 - -### Added -- Added support for PHP 8.1 explicit octal notation - - This new syntax has been backfilled for PHP versions less than 8.1 - - Thanks to [Mark Baker][@MarkBaker] for the patch - - Thanks to [Juliette Reinders Folmer][@jrfnl] for additional fixes -- Added support for PHP 8.1 enums - - This new syntax has been backfilled for PHP versions less than 8.1 - - Includes a new T_ENUM_CASE token to represent the case statements inside an enum - - Thanks to [Jaroslav Hanslík][@kukulich] for the patch - - Thanks to [Juliette Reinders Folmer][@jrfnl] for additional core and sniff support -- Added support for the PHP 8.1 readonly token - - Tokenizing of the readonly keyword has been backfilled for PHP versions less than 8.1 - - Thanks to [Jaroslav Hanslík][@kukulich] for the patch -- Added support for PHP 8.1 intersection types - - Includes a new T_TYPE_INTERSECTION token to represent the ampersand character inside intersection types - - Thanks to [Jaroslav Hanslík][@kukulich] for the patch - -### Changed -- File::getMethodParameters now supports the new PHP 8.1 readonly token - - When constructor property promotion is used, a new property_readonly array index is included in the return value - - This is a boolean value indicating if the property is readonly - - If the readonly token is detected, a new readonly_token array index is included in the return value - - This contains the token index of the readonly keyword - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Support for new PHP 8.1 readonly keyword has been added to the following sniffs: - - Generic.PHP.LowerCaseKeyword - - PSR2.Classes.PropertyDeclaration - - Squiz.Commenting.BlockComment - - Squiz.Commenting.DocCommentAlignment - - Squiz.Commenting.VariableComment - - Squiz.WhiteSpace.ScopeKeywordSpacing - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patches -- The parallel feature is now more efficient and runs faster in some situations due to improved process management - - Thanks to [Sergei Morozov][@morozov] for the patch -- The list of installed coding standards now has consistent ordering across all platforms - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.PHP.UpperCaseConstant and Generic.PHP.LowerCaseConstant now ignore type declarations - - These sniffs now only report errors for true/false/null when used as values - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.PHP.LowerCaseType now supports the PHP 8.1 never type - - Thanks to [Jaroslav Hanslík][@kukulich] for the patch - -### Fixed -- Fixed bug [#3502][sq-3502] : A match statement within an array produces Squiz.Arrays.ArrayDeclaration.NoKeySpecified -- Fixed bug [#3503][sq-3503] : Squiz.Commenting.FunctionComment.ThrowsNoFullStop false positive when one line @throw -- Fixed bug [#3505][sq-3505] : The nullsafe operator is not counted in Generic.Metrics.CyclomaticComplexity - - Thanks to [Mark Baker][@MarkBaker] for the patch -- Fixed bug [#3526][sq-3526] : PSR12.Properties.ConstantVisibility false positive when using public final const syntax - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3530][sq-3530] : Line indented incorrectly false positive when using match-expression inside switch case -- Fixed bug [#3534][sq-3534] : Name of typed enum tokenized as T_GOTO_LABEL - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3546][sq-3546] : Tokenizer/PHP: bug fix - parent/static keywords in class instantiations - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3550][sq-3550] : False positive from PSR2.ControlStructures.SwitchDeclaration.TerminatingComment when using trailing comment - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3575][sq-3575] : Squiz.Scope.MethodScope misses visibility keyword on previous line - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3604][sq-3604] : Tokenizer/PHP: bug fix for double quoted strings using ${ - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch - -[sq-3502]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3502 -[sq-3503]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3503 -[sq-3505]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3505 -[sq-3526]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3526 -[sq-3530]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3530 -[sq-3534]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3534 -[sq-3546]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3546 -[sq-3550]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3550 -[sq-3575]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3575 -[sq-3604]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3604 - -## [3.6.2] - 2021-12-13 - -### Changed -- Processing large code bases that use tab indenting inside comments and strings will now be faster - - Thanks to [Thiemo Kreuz][@thiemowmde] for the patch - -### Fixed -- Fixed bug [#3388][sq-3388] : phpcs does not work when run from WSL drives - - Thanks to [Juliette Reinders Folmer][@jrfnl] and [Graham Wharton][@gwharton] for the patch -- Fixed bug [#3422][sq-3422] : Squiz.WhiteSpace.ScopeClosingBrace fixer removes HTML content when fixing closing brace alignment - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3437][sq-3437] : PSR12 does not forbid blank lines at the start of the class body - - Added new PSR12.Classes.OpeningBraceSpace sniff to enforce this -- Fixed bug [#3440][sq-3440] : Squiz.WhiteSpace.MemberVarSpacing false positives when attributes used without docblock - - Thanks to [Vadim Borodavko][@javer] for the patch -- Fixed bug [#3448][sq-3448] : PHP 8.1 deprecation notice while generating running time value - - Thanks to [Juliette Reinders Folmer][@jrfnl] and [Andy Postnikov][@andypost] for the patch -- Fixed bug [#3456][sq-3456] : PSR12.Classes.ClassInstantiation.MissingParentheses false positive using attributes on anonymous class - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3460][sq-3460] : Generic.Formatting.MultipleStatementAlignment false positive on closure with parameters - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3468][sq-3468] : do/while loops are double-counted in Generic.Metrics.CyclomaticComplexity - - Thanks to [Mark Baker][@MarkBaker] for the patch -- Fixed bug [#3469][sq-3469] : Ternary Operator and Null Coalescing Operator are not counted in Generic.Metrics.CyclomaticComplexity - - Thanks to [Mark Baker][@MarkBaker] for the patch -- Fixed bug [#3472][sq-3472] : PHP 8 match() expression is not counted in Generic.Metrics.CyclomaticComplexity - - Thanks to [Mark Baker][@MarkBaker] for the patch - -[sq-3388]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3388 -[sq-3422]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3422 -[sq-3437]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3437 -[sq-3440]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3440 -[sq-3448]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3448 -[sq-3456]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3456 -[sq-3460]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3460 -[sq-3468]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3468 -[sq-3469]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3469 -[sq-3472]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3472 - -## [3.6.1] - 2021-10-11 - -### Changed -- PHPCS annotations can now be specified using hash-style comments - - Previously, only slash-style and block-style comments could be used to do things like disable errors - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- The new PHP 8.1 tokenization for ampersands has been reverted to use the existing PHP_CodeSniffer method - - The PHP 8.1 tokens T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG and T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG are unused - - Ampersands continue to be tokenized as T_BITWISE_AND for all PHP versions - - Thanks to [Juliette Reinders Folmer][@jrfnl] and [Anna Filina][@afilina] for the patch -- File::getMethodParameters() no longer incorrectly returns argument attributes in the type hint array index - - A new has_attributes array index is available and set to TRUE if the argument has attributes defined - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed an issue where some sniffs would not run on PHP files that only used the short echo tag - - The following sniffs were affected: - - Generic.Files.ExecutableFile - - Generic.Files.LowercasedFilename - - Generic.Files.LineEndings - - Generic.Files.EndFileNewline - - Generic.Files.EndFileNoNewline - - Generic.PHP.ClosingPHPTag - - Generic.PHP.Syntax - - Generic.VersionControl.GitMergeConflict - - Generic.WhiteSpace.DisallowSpaceIndent - - Generic.WhiteSpace.DisallowTabIndent - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.Commenting.BlockComment now correctly applies rules for block comments after a short echo tag - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch - -### Fixed -- Generic.NamingConventions.ConstructorName no longer throws deprecation notices on PHP 8.1 - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed false positives when using attributes in the following sniffs: - - PEAR.Commenting.FunctionComment - - Squiz.Commenting.InlineComment - - Squiz.Commenting.BlockComment - - Squiz.Commenting.VariableComment - - Squiz.WhiteSpace.MemberVarSpacing - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3294][sq-3294] : Bug in attribute tokenization when content contains PHP end token or attribute closer on new line - - Thanks to [Alessandro Chitolina][@alekitto] for the patch - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the tests -- Fixed bug [#3296][sq-3296] : PSR2.ControlStructures.SwitchDeclaration takes phpcs:ignore as content of case body -- Fixed bug [#3297][sq-3297] : PSR2.ControlStructures.SwitchDeclaration.TerminatingComment does not handle try/finally blocks - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3302][sq-3302] : PHP 8.0 | Tokenizer/PHP: bugfix for union types using namespace operator - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3303][sq-3303] : findStartOfStatement() doesn't work with T_OPEN_TAG_WITH_ECHO -- Fixed bug [#3316][sq-3316] : Arrow function not tokenized correctly when using null in union type -- Fixed bug [#3317][sq-3317] : Problem with how phpcs handles ignored files when running in parallel - - Thanks to [Emil Andersson][@emil-nasso] for the patch -- Fixed bug [#3324][sq-3324] : PHPCS hangs processing some nested arrow functions inside a function call -- Fixed bug [#3326][sq-3326] : Generic.Formatting.MultipleStatementAlignment error with const DEFAULT - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3333][sq-3333] : Squiz.Objects.ObjectInstantiation: null coalesce operators are not recognized as assignment - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3340][sq-3340] : Ensure interface and trait names are always tokenized as T_STRING - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3342][sq-3342] : PSR12/Squiz/PEAR standards all error on promoted properties with docblocks - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3345][sq-3345] : IF statement with no braces and double catch turned into syntax error by auto-fixer - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3352][sq-3352] : PSR2.ControlStructures.SwitchDeclaration can remove comments on the same line as the case statement while fixing - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3357][sq-3357] : Generic.Functions.OpeningFunctionBraceBsdAllman removes return type when additional lines are present - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3362][sq-3362] : Generic.WhiteSpace.ScopeIndent false positive for arrow functions inside arrays -- Fixed bug [#3384][sq-3384] : Squiz.Commenting.FileComment.SpacingAfterComment false positive on empty file -- Fixed bug [#3394][sq-3394] : Fix PHP 8.1 auto_detect_line_endings deprecation notice -- Fixed bug [#3400][sq-3400] : PHP 8.1: prevent deprecation notices about missing return types - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3424][sq-3424] : PHPCS fails when using PHP 8 Constructor property promotion with attributes - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3425][sq-3425] : PHP 8.1 | Runner::processChildProcs(): fix passing null to non-nullable bug - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3445][sq-3445] : Nullable parameter after attribute incorrectly tokenized as ternary operator - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch - -[sq-3294]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3294 -[sq-3296]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3296 -[sq-3297]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3297 -[sq-3302]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3302 -[sq-3303]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3303 -[sq-3316]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3316 -[sq-3317]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3317 -[sq-3324]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3324 -[sq-3326]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3326 -[sq-3333]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3333 -[sq-3340]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3340 -[sq-3342]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3342 -[sq-3345]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3345 -[sq-3352]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3352 -[sq-3357]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3357 -[sq-3362]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3362 -[sq-3384]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3384 -[sq-3394]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3394 -[sq-3400]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3400 -[sq-3424]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3424 -[sq-3425]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3425 -[sq-3445]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3445 - -## [3.6.0] - 2021-04-09 - -### Added -- Added support for PHP 8.0 union types - - A new T_TYPE_UNION token is available to represent the pipe character - - File::getMethodParameters(), getMethodProperties(), and getMemberProperties() will now return union types - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Added support for PHP 8.0 named function call arguments - - A new T_PARAM_NAME token is available to represent the label with the name of the function argument in it - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Added support for PHP 8.0 attributes - - The PHP-supplied T_ATTRIBUTE token marks the start of an attribute - - A new T_ATTRIBUTE_END token is available to mark the end of an attribute - - New attribute_owner and attribute_closer indexes are available in the tokens array for all tokens inside an attribute - - Tokenizing of attributes has been backfilled for older PHP versions - - The following sniffs have been updated to support attributes: - - PEAR.Commenting.ClassComment - - PEAR.Commenting.FileComment - - PSR1.Files.SideEffects - - PSR12.Files.FileHeader - - Squiz.Commenting.ClassComment - - Squiz.Commenting.FileComment - - Squiz.WhiteSpace.FunctionSpacing - - Thanks to [Vadim Borodavko][@javer] for the patch - - Thanks to [Alessandro Chitolina][@alekitto] for the patch -- Added support for PHP 8.0 dereferencing of text strings with interpolated variables - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Added support for PHP 8.0 match expressions - - Match expressions are now tokenized with parenthesis and scope openers and closers - - Sniffs can listen for the T_MATCH token to process match expressions - - Note that the case and default statements inside match expressions do not have scopes set - - A new T_MATCH_ARROW token is available to represent the arrows in match expressions - - A new T_MATCH_DEFAULT token is available to represent the default keyword in match expressions - - All tokenizing of match expressions has been backfilled for older PHP versions - - The following sniffs have been updated to support match expressions: - - Generic.CodeAnalysis.AssignmentInCondition - - Generic.CodeAnalysis.EmptyPHPStatement - - Thanks to [Vadim Borodavko][@javer] for the patch - - Generic.CodeAnalysis.EmptyStatement - - Generic.PHP.LowerCaseKeyword - - PEAR.ControlStructures.ControlSignature - - PSR12.ControlStructures.BooleanOperatorPlacement - - Squiz.Commenting.LongConditionClosingComment - - Squiz.Commenting.PostStatementComment - - Squiz.ControlStructures.LowercaseDeclaration - - Squiz.ControlStructures.ControlSignature - - Squiz.Formatting.OperatorBracket - - Squiz.PHP.DisallowMultipleAssignments - - Squiz.Objects.ObjectInstantiation - - Squiz.WhiteSpace.ControlStructureSpacing - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Added Generic.NamingConventions.AbstractClassNamePrefix to enforce that class names are prefixed with "Abstract" - - Thanks to [Anna Borzenko][@annechko] for the contribution -- Added Generic.NamingConventions.InterfaceNameSuffix to enforce that interface names are suffixed with "Interface" - - Thanks to [Anna Borzenko][@annechko] for the contribution -- Added Generic.NamingConventions.TraitNameSuffix to enforce that trait names are suffixed with "Trait" - - Thanks to [Anna Borzenko][@annechko] for the contribution - -### Changed -- The value of the T_FN_ARROW token has changed from "T_FN_ARROW" to "PHPCS_T_FN_ARROW" to avoid package conflicts - - This will have no impact on custom sniffs unless they are specifically looking at the value of the T_FN_ARROW constant - - If sniffs are just using constant to find arrow functions, they will continue to work without modification - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- File::findStartOfStatement() now works correctly when passed the last token in a statement -- File::getMethodParameters() now supports PHP 8.0 constructor property promotion - - Returned method params now include a "property_visibility" and "visibility_token" index if property promotion is detected - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- File::getMethodProperties() now includes a "return_type_end_token" index in the return value - - This indicates the last token in the return type, which is helpful when checking union types - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Include patterns are now ignored when processing STDIN - - Previously, checks using include patterns were excluded when processing STDIN when no file path was provided via --stdin-path - - Now, all include and exclude rules are ignored when no file path is provided, allowing all checks to run - - If you want include and exclude rules enforced when checking STDIN, use --stdin-path to set the file path - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Spaces are now correctly escaped in the paths to external on Windows - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.CodeAnalysis.UnusedFunctionParameter can now be configured to ignore variable usage for specific type hints - - This allows you to suppress warnings for some variables that are not required, but leave warnings for others - - Set the ignoreTypeHints array property to a list of type hints to ignore - - Thanks to [Petr Bugyík][@o5] for the patch -- Generic.Formatting.MultipleStatementAlignment can now align statements at the start of the assignment token - - Previously, the sniff enforced that the values were aligned, even if this meant the assignment tokens were not - - Now, the sniff can enforce that the assignment tokens are aligned, even if this means the values are not - - Set the "alignAtEnd" sniff property to "false" to align the assignment tokens - - The default remains at "true", so the assigned values are aligned - - Thanks to [John P. Bloch][@johnpbloch] for the patch -- Generic.PHP.LowerCaseType now supports checking of typed properties - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.PHP.LowerCaseType now supports checking of union types - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- PEAR.Commenting.FunctionComment and Squiz.Commenting.FunctionComment sniffs can now ignore private and protected methods - - Set the "minimumVisibility" sniff property to "protected" to ignore private methods - - Set the "minimumVisibility" sniff property to "public" to ignore both private and protected methods - - The default remains at "private", so all methods are checked - - Thanks to [Vincent Langlet][@VincentLanglet] for the patch -- PEAR.Commenting.FunctionComment and Squiz.Commenting.FunctionComment sniffs can now ignore return tags in any method - - Previously, only `__construct()` and `__destruct()` were ignored - - Set the list of method names to ignore in the "specialMethods" sniff property - - The default remains at "__construct" and "__destruct" only - - Thanks to [Vincent Langlet][@VincentLanglet] for the patch -- PSR2.ControlStructures.SwitchDeclaration now supports nested switch statements where every branch terminates - - Previously, if a CASE only contained a SWITCH and no direct terminating statement, a fall-through error was displayed - - Now, the error is suppressed if every branch of the SWITCH has a terminating statement - - Thanks to [Vincent Langlet][@VincentLanglet] for the patch -- The PSR2.Methods.FunctionCallSignature.SpaceBeforeCloseBracket error message is now reported on the closing parenthesis token - - Previously, the error was being reported on the function keyword, leading to confusing line numbers in the error report -- Squiz.Commenting.FunctionComment is now able to ignore function comments that are only inheritdoc statements - - Set the skipIfInheritdoc sniff property to "true" to skip checking function comments if the content is only {@inhertidoc} - - The default remains at "false", so these comments will continue to report errors - - Thanks to [Jess Myrbo][@xjm] for the patch -- Squiz.Commenting.FunctionComment now supports the PHP 8 mixed type - - Thanks to [Vadim Borodavko][@javer] for the patch -- Squiz.PHP.NonExecutableCode now has improved handling of syntax errors - - Thanks to [Thiemo Kreuz][@thiemowmde] for the patch -- Squiz.WhiteSpace.ScopeKeywordSpacing now checks spacing when using PHP 8.0 constructor property promotion - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch - -### Fixed -- Fixed an issue that could occur when checking files on network drives, such as with WSL2 on Windows 10 - - This works around a long-standing PHP bug with is_readable() - - Thanks to [Michael S][@codebymikey] for the patch -- Fixed a number of false positives in the Squiz.PHP.DisallowMultipleAssignments sniff - - Sniff no longer errors for default value assignments in arrow functions - - Sniff no longer errors for assignments on first line of closure - - Sniff no longer errors for assignments after a goto label - - Thanks to [Jaroslav Hanslík][@kukulich] for the patch -- Fixed bug [#2913][sq-2913] : Generic.WhiteSpace.ScopeIndent false positive when opening and closing tag on same line inside conditional -- Fixed bug [#2992][sq-2992] : Enabling caching using a ruleset produces invalid cache files when using --sniffs and --exclude CLI args -- Fixed bug [#3003][sq-3003] : Squiz.Formatting.OperatorBracket autofix incorrect when assignment used with null coalescing operator -- Fixed bug [#3145][sq-3145] : Autoloading of sniff fails when multiple classes declared in same file -- Fixed bug [#3157][sq-3157] : PSR2.ControlStructures.SwitchDeclaration.BreakIndent false positive when case keyword is not indented -- Fixed bug [#3163][sq-3163] : Undefined index error with pre-commit hook using husky on PHP 7.4 - - Thanks to [Ismo Vuorinen][@ivuorinen] for the patch -- Fixed bug [#3165][sq-3165] : Squiz.PHP.DisallowComparisonAssignment false positive when comparison inside closure -- Fixed bug [#3167][sq-3167] : Generic.WhiteSpace.ScopeIndent false positive when using PHP 8.0 constructor property promotion -- Fixed bug [#3170][sq-3170] : Squiz.WhiteSpace.OperatorSpacing false positive when using negation with string concat - - This also fixes the same issue in the PSR12.Operators.OperatorSpacing sniff -- Fixed bug [#3177][sq-3177] : Incorrect tokenization of GOTO statements in mixed PHP/HTML files - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3184][sq-3184] : PSR2.Namespace.NamespaceDeclaration false positive on namespace operator - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3188][sq-3188] : Squiz.WhiteSpace.ScopeKeywordSpacing false positive for static return type - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3192][sq-3192] : findStartOfStatement doesn't work correctly inside switch - - Thanks to [Vincent Langlet][@VincentLanglet] for the patch -- Fixed bug [#3195][sq-3195] : Generic.WhiteSpace.ScopeIndent confusing message when combination of tabs and spaces found -- Fixed bug [#3197][sq-3197] : Squiz.NamingConventions.ValidVariableName does not use correct error code for all member vars -- Fixed bug [#3219][sq-3219] : Generic.Formatting.MultipleStatementAlignment false positive for empty anonymous classes and closures -- Fixed bug [#3258][sq-3258] : Squiz.Formatting.OperatorBracket duplicate error messages for unary minus - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3273][sq-3273] : Squiz.Functions.FunctionDeclarationArgumentSpacing reports line break as 0 spaces between parenthesis -- Fixed bug [#3277][sq-3277] : Nullable static return typehint causes whitespace error -- Fixed bug [#3284][sq-3284] : Unused parameter false positive when using array index in arrow function - -[sq-2913]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2913 -[sq-2992]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2992 -[sq-3003]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3003 -[sq-3145]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3145 -[sq-3157]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3157 -[sq-3163]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3163 -[sq-3165]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3165 -[sq-3167]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3167 -[sq-3170]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3170 -[sq-3177]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3177 -[sq-3184]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3184 -[sq-3188]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3188 -[sq-3192]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3192 -[sq-3195]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3195 -[sq-3197]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3197 -[sq-3219]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3219 -[sq-3258]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3258 -[sq-3273]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3273 -[sq-3277]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3277 -[sq-3284]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3284 - -## [3.5.8] - 2020-10-23 - -### Removed -- Reverted a change to the way include/exclude patterns are processed for STDIN content - - This change is not backwards compatible and will be re-introduced in version 3.6.0 - -## [3.5.7] - 2020-10-23 - -### Added -- The PHP 8.0 T_NULLSAFE_OBJECT_OPERATOR token has been made available for older versions - - Existing sniffs that check for T_OBJECT_OPERATOR have been modified to apply the same rules for the nullsafe object operator - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- The new method of PHP 8.0 tokenizing for namespaced names has been reverted to the pre 8.0 method - - This maintains backwards compatible for existing sniffs on PHP 8.0 - - This change will be removed in PHPCS 4.0 as the PHP 8.0 tokenizing method will be backported for pre 8.0 versions - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Added support for changes to the way PHP 8.0 tokenizes hash comments - - The existing PHP 5-7 behaviour has been replicated for version 8, so no sniff changes are required - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Running the unit tests now includes warnings in the found and fixable error code counts - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- PSR12.Functions.NullableTypeDeclaration now supports the PHP8 static return type - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch - -### Changed -- The autoloader has been changed to fix sniff class name detection issues that may occur when running on PHP 7.4+ - - Thanks to [Eloy Lafuente][@stronk7] for the patch -- PSR12.ControlStructures.BooleanOperatorPlacement.FoundMixed error message is now more accurate when using the allowOnly setting - - Thanks to [Vincent Langlet][@VincentLanglet] for the patch - -### Fixed -- Fixed Squiz.Formatting.OperatorBracket false positive when exiting with a negative number -- Fixed Squiz.PHP.DisallowComparisonAssignment false positive for methods called on an object -- Fixed bug [#2882][sq-2882] : Generic.Arrays.ArrayIndent can request close brace indent to be less than the statement indent level -- Fixed bug [#2883][sq-2883] : Generic.WhiteSpace.ScopeIndent.Incorrect issue after NOWDOC -- Fixed bug [#2975][sq-2975] : Undefined offset in PSR12.Functions.ReturnTypeDeclaration when checking function return type inside ternary -- Fixed bug [#2988][sq-2988] : Undefined offset in Squiz.Strings.ConcatenationSpacing during live coding - - Thanks to [Thiemo Kreuz][@thiemowmde] for the patch -- Fixed bug [#2989][sq-2989] : Incorrect auto-fixing in Generic.ControlStructures.InlineControlStructure during live coding - - Thanks to [Thiemo Kreuz][@thiemowmde] for the patch -- Fixed bug [#3007][sq-3007] : Directory exclude pattern improperly excludes directories with names that start the same - - Thanks to [Steve Talbot][@SteveTalbot] for the patch -- Fixed bug [#3043][sq-3043] : Squiz.WhiteSpace.OperatorSpacing false positive for negation in arrow function - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3049][sq-3049] : Incorrect error with arrow function and parameter passed as reference - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3053][sq-3053] : PSR2 incorrect fix when multiple use statements on same line do not have whitespace between them -- Fixed bug [#3058][sq-3058] : Progress gets unaligned when 100% happens at the end of the available dots -- Fixed bug [#3059][sq-3059] : Squiz.Arrays.ArrayDeclaration false positive when using type casting - - Thanks to [Sergei Morozov][@morozov] for the patch -- Fixed bug [#3060][sq-3060] : Squiz.Arrays.ArrayDeclaration false positive for static functions - - Thanks to [Sergei Morozov][@morozov] for the patch -- Fixed bug [#3065][sq-3065] : Should not fix Squiz.Arrays.ArrayDeclaration.SpaceBeforeComma if comment between element and comma - - Thanks to [Sergei Morozov][@morozov] for the patch -- Fixed bug [#3066][sq-3066] : No support for namespace operator used in type declarations - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3075][sq-3075] : PSR12.ControlStructures.BooleanOperatorPlacement false positive when operator is the only content on line -- Fixed bug [#3099][sq-3099] : Squiz.WhiteSpace.OperatorSpacing false positive when exiting with negative number - - Thanks to [Sergei Morozov][@morozov] for the patch -- Fixed bug [#3102][sq-3102] : PSR12.Squiz.OperatorSpacing false positive for default values of arrow functions - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#3124][sq-3124] : PSR-12 not reporting error for empty lines with only whitespace -- Fixed bug [#3135][sq-3135] : Ignore annotations are broken on PHP 8.0 - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch - -[sq-2882]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2882 -[sq-2883]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2883 -[sq-2975]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2975 -[sq-2988]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2988 -[sq-2989]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2989 -[sq-3007]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3007 -[sq-3043]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3043 -[sq-3049]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3049 -[sq-3053]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3053 -[sq-3058]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3058 -[sq-3059]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3059 -[sq-3060]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3060 -[sq-3065]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3065 -[sq-3066]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3066 -[sq-3075]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3075 -[sq-3099]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3099 -[sq-3102]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3102 -[sq-3124]: https://github.com/squizlabs/PHP_CodeSniffer/issues/3124 -[sq-3135]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3135 - -## [3.5.6] - 2020-08-10 - -### Added -- Added support for PHP 8.0 magic constant dereferencing - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Added support for changes to the way PHP 8.0 tokenizes comments - - The existing PHP 5-7 behaviour has been replicated for version 8, so no sniff changes are required - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- `File::getMethodProperties()` now detects the PHP 8.0 static return type - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- The PHP 8.0 static return type is now supported for arrow functions - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch - -### Changed -- The cache is no longer used if the list of loaded PHP extensions changes - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- `Generic.NamingConventions.CamelCapsFunctionName` no longer reports `__serialize` and `__unserialize` as invalid names - - Thanks to [Filip Š][@filips123] for the patch -- `PEAR.NamingConventions.ValidFunctionName` no longer reports `__serialize` and `__unserialize` as invalid names - - Thanks to [Filip Š][@filips123] for the patch -- `Squiz.Scope.StaticThisUsage` now detects usage of `$this` inside closures and arrow functions - - Thanks to [Michał Bundyra][@michalbundyra] for the patch - -### Fixed -- Fixed bug [#2877][sq-2877] : PEAR.Functions.FunctionCallSignature false positive for array of functions - - Thanks to [Vincent Langlet][@VincentLanglet] for the patch -- Fixed bug [#2888][sq-2888] : PSR12.Files.FileHeader blank line error with multiple namespaces in one file -- Fixed bug [#2926][sq-2926] : phpcs hangs when using arrow functions that return heredoc -- Fixed bug [#2943][sq-2943] : Redundant semicolon added to a file when fixing PSR2.Files.ClosingTag.NotAllowed -- Fixed bug [#2967][sq-2967] : Markdown generator does not output headings correctly - - Thanks to [Petr Bugyík][@o5] for the patch -- Fixed bug [#2977][sq-2977] : File::isReference() does not detect return by reference for closures - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#2994][sq-2994] : Generic.Formatting.DisallowMultipleStatements false positive for FOR loop with no body -- Fixed bug [#3033][sq-3033] : Error generated during tokenizing of goto statements on PHP 8 - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch - -[sq-2877]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2877 -[sq-2888]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2888 -[sq-2926]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2926 -[sq-2943]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2943 -[sq-2967]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2967 -[sq-2977]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2977 -[sq-2994]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2994 -[sq-3033]: https://github.com/squizlabs/PHP_CodeSniffer/pull/3033 - -## [3.5.5] - 2020-04-17 - -### Changed -- The T_FN backfill now works more reliably so T_FN tokens only ever represent real arrow functions - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed an issue where including sniffs using paths containing multiple dots would silently fail -- Generic.CodeAnalysis.EmptyPHPStatement now detects empty statements at the start of control structures - -### Fixed -- Error wording in PEAR.Functions.FunctionCallSignature now always uses "parenthesis" instead of sometimes using "bracket" - - Thanks to [Vincent Langlet][@VincentLanglet] for the patch -- Fixed bug [#2787][sq-2787] : Squiz.PHP.DisallowMultipleAssignments not ignoring typed property declarations - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#2810][sq-2810] : PHPCBF fails to fix file with empty statement at start on control structure -- Fixed bug [#2812][sq-2812] : Squiz.Arrays.ArrayDeclaration not detecting some arrays with multiple arguments on the same line - - Thanks to [Jakub Chábek][@grongor] for the patch -- Fixed bug [#2826][sq-2826] : Generic.WhiteSpace.ArbitraryParenthesesSpacing doesn't detect issues for statements directly after a control structure - - Thanks to [Vincent Langlet][@VincentLanglet] for the patch -- Fixed bug [#2848][sq-2848] : PSR12.Files.FileHeader false positive for file with mixed PHP and HTML and no file header -- Fixed bug [#2849][sq-2849] : Generic.WhiteSpace.ScopeIndent false positive with arrow function inside array -- Fixed bug [#2850][sq-2850] : Generic.PHP.LowerCaseKeyword complains __HALT_COMPILER is uppercase -- Fixed bug [#2853][sq-2853] : Undefined variable error when using Info report - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#2865][sq-2865] : Double arrow tokenized as T_STRING when placed after function named "fn" -- Fixed bug [#2867][sq-2867] : Incorrect scope matching when arrow function used inside IF condition -- Fixed bug [#2868][sq-2868] : phpcs:ignore annotation doesn't work inside a docblock -- Fixed bug [#2878][sq-2878] : PSR12.Files.FileHeader conflicts with Generic.Files.LineEndings -- Fixed bug [#2895][sq-2895] : PSR2.Methods.FunctionCallSignature.MultipleArguments false positive with arrow function argument - -[sq-2787]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2787 -[sq-2810]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2810 -[sq-2812]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2812 -[sq-2826]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2826 -[sq-2848]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2848 -[sq-2849]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2849 -[sq-2850]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2850 -[sq-2853]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2853 -[sq-2865]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2865 -[sq-2867]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2867 -[sq-2868]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2868 -[sq-2878]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2878 -[sq-2895]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2895 - -## [3.5.4] - 2020-01-31 - -### Changed -- The PHP 7.4 numeric separator backfill now works correctly for more float formats - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- The PHP 7.4 numeric separator backfill is no longer run on PHP version 7.4.0 or greater -- File::getCondition() now accepts a 3rd argument that allows for the closest matching token to be returned - - By default, it continues to return the first matched token found from the top of the file -- Fixed detection of array return types for arrow functions -- Added Generic.PHP.DisallowRequestSuperglobal to ban the use of the $_REQUEST superglobal - - Thanks to [Jeantwan Teuma][@Morerice] for the contribution -- Generic.ControlStructures.InlineControlStructure no longer shows errors for WHILE and FOR statements without a body - - Previously it required these to have curly braces, but there were no statements to enclose in them - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- PSR12.ControlStructures.BooleanOperatorPlacement can now be configured to enforce a specific operator position - - By default, the sniff ensures that operators are all at the beginning or end of lines, but not a mix of both - - Set the allowOnly property to "first" to enforce all boolean operators to be at the start of a line - - Set the allowOnly property to "last" to enforce all boolean operators to be at the end of a line - - Thanks to [Vincent Langlet][@VincentLanglet] for the patch -- PSR12.Files.ImportStatement now auto-fixes import statements by removing the leading slash - - Thanks to [Michał Bundyra][@michalbundyra] for the patch -- Squiz.ControlStructures.ForLoopDeclaration now has a setting to ignore newline characters - - Default remains FALSE, so newlines are not allowed within FOR definitions - - Override the "ignoreNewlines" setting in a ruleset.xml file to change -- Squiz.PHP.InnerFunctions now handles multiple nested anon classes correctly - -### Fixed -- Fixed bug [#2497][sq-2497] : Sniff properties not set when referencing a sniff using relative paths or non-native slashes - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#2657][sq-2657] : Squiz.WhiteSpace.FunctionSpacing can remove spaces between comment and first/last method during auto-fixing - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#2688][sq-2688] : Case statements not tokenized correctly when switch is contained within ternary -- Fixed bug [#2698][sq-2698] : PHPCS throws errors determining auto report width when shell_exec is disabled - - Thanks to [Matthew Peveler][@MasterOdin] for the patch -- Fixed bug [#2730][sq-2730] : PSR12.ControlStructures.ControlStructureSpacing does not ignore comments between conditions - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#2732][sq-2732] : PSR12.Files.FileHeader misidentifies file header in mixed content file -- Fixed bug [#2745][sq-2745] : AbstractArraySniff wrong indices when mixed coalesce and ternary values - - Thanks to [Michał Bundyra][@michalbundyra] for the patch -- Fixed bug [#2748][sq-2748] : Wrong end of statement for fn closures - - Thanks to [Michał Bundyra][@michalbundyra] for the patch -- Fixed bug [#2751][sq-2751] : Autoload relative paths first to avoid confusion with files from the global include path - - Thanks to [Klaus Purer][@klausi] for the patch -- Fixed bug [#2763][sq-2763] : PSR12 standard reports errors for multi-line FOR definitions -- Fixed bug [#2768][sq-2768] : Generic.Files.LineLength false positive for non-breakable strings at exactly the soft limit - - Thanks to [Alex Miles][@ghostal] for the patch -- Fixed bug [#2773][sq-2773] : PSR2.Methods.FunctionCallSignature false positive when arrow function has array return type -- Fixed bug [#2790][sq-2790] : PSR12.Traits.UseDeclaration ignores block comments - - Thanks to [Vincent Langlet][@VincentLanglet] for the patch -- Fixed bug [#2791][sq-2791] : PSR12.Functions.NullableTypeDeclaration false positive when ternary operator used with instanceof - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#2802][sq-2802] : Can't specify a report file path using the tilde shortcut -- Fixed bug [#2804][sq-2804] : PHP4-style typed properties not tokenized correctly - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#2805][sq-2805] : Undefined Offset notice during live coding of arrow functions - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#2843][sq-2843] : Tokenizer does not support alternative syntax for declare statements - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch - -[sq-2497]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2497 -[sq-2657]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2657 -[sq-2688]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2688 -[sq-2698]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2698 -[sq-2730]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2730 -[sq-2732]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2732 -[sq-2745]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2745 -[sq-2748]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2748 -[sq-2751]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2751 -[sq-2763]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2763 -[sq-2768]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2768 -[sq-2773]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2773 -[sq-2790]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2790 -[sq-2791]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2791 -[sq-2802]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2802 -[sq-2804]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2804 -[sq-2805]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2805 -[sq-2843]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2843 - -## [3.5.3] - 2019-12-04 - -### Changed -- The PHP 7.4 T_FN token has been made available for older versions - - T_FN represents the fn string used for arrow functions - - The double arrow becomes the scope opener, and uses a new T_FN_ARROW token type - - The token after the statement (normally a semicolon) becomes the scope closer - - The token is also associated with the opening and closing parenthesis of the statement - - Any functions named "fn" will have a T_FN token for the function name, but have no scope information - - Thanks to [Michał Bundyra][@michalbundyra] for the help with this change -- PHP 7.4 numeric separators are now tokenized in the same way when using older PHP versions - - Previously, a number like 1_000 would tokenize as T_LNUMBER (1), T_STRING (_000) - - Now, the number tokenizes as T_LNUMBER (1_000) - - Sniff developers should consider how numbers with underscores impact their custom sniffs -- The PHPCS file cache now takes file permissions into account - - The cache is now invalidated for a file when its permissions are changed -- File::getMethodParameters() now supports arrow functions -- File::getMethodProperties() now supports arrow functions -- Added Fixer::changeCodeBlockIndent() to change the indent of a code block while auto-fixing - - Can be used to either increase or decrease the indent - - Useful when moving the start position of something like a closure, where you want the content to also move -- Added Generic.Files.ExecutableFile sniff - - Ensures that files are not executable - - Thanks to [Matthew Peveler][@MasterOdin] for the contribution -- Generic.CodeAnalysis.EmptyPhpStatement now reports unnecessary semicolons after control structure closing braces - - Thanks to [Vincent Langlet][@VincentLanglet] for the patch -- Generic.PHP.LowerCaseKeyword now enforces that the "fn" keyword is lowercase - - Thanks to [Michał Bundyra][@michalbundyra] for the patch -- Generic.WhiteSpace.ScopeIndent now supports static arrow functions -- PEAR.Functions.FunctionCallSignature now adjusts the indent of function argument contents during auto-fixing - - Previously, only the first line of an argument was changed, leading to inconsistent indents - - This change also applies to PSR2.Methods.FunctionCallSignature -- PSR2.ControlStructures.ControlStructureSpacing now checks whitespace before the closing parenthesis of multi-line control structures - - Previously, it incorrectly applied the whitespace check for single-line definitions only -- PSR12.Functions.ReturnTypeDeclaration now checks the return type of arrow functions - - Thanks to [Michał Bundyra][@michalbundyra] for the patch -- PSR12.Traits.UseDeclaration now ensures all trait import statements are grouped together - - Previously, the trait import section of the class ended when the first non-import statement was found - - Checking now continues throughout the class to ensure all statements are grouped together - - This also ensures that empty lines are not requested after an import statement that isn't the last one -- Squiz.Functions.LowercaseFunctionKeywords now enforces that the "fn" keyword is lowercase - - Thanks to [Michał Bundyra][@michalbundyra] for the patch - -### Fixed -- Fixed bug [#2586][sq-2586] : Generic.WhiteSpace.ScopeIndent false positives when indenting open tags at a non tab-stop -- Fixed bug [#2638][sq-2638] : Squiz.CSS.DuplicateClassDefinitionSniff sees comments as part of the class name - - Thanks to [Raphael Horber][@rhorber] for the patch -- Fixed bug [#2640][sq-2640] : Squiz.WhiteSpace.OperatorSpacing false positives for some negation operators - - Thanks to [Jakub Chábek][@grongor] and [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#2674][sq-2674] : Squiz.Functions.FunctionDeclarationArgumentSpacing prints wrong argument name in error message -- Fixed bug [#2676][sq-2676] : PSR12.Files.FileHeader locks up when file ends with multiple inline comments -- Fixed bug [#2678][sq-2678] : PSR12.Classes.AnonClassDeclaration incorrectly enforcing that closing brace be on a line by itself -- Fixed bug [#2685][sq-2685] : File::getMethodParameters() setting typeHintEndToken for vars with no type hint - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#2694][sq-2694] : AbstractArraySniff produces invalid indices when using ternary operator - - Thanks to [Michał Bundyra][@michalbundyra] for the patch -- Fixed bug [#2702][sq-2702] : Generic.WhiteSpace.ScopeIndent false positive when using ternary operator with short arrays - -[sq-2586]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2586 -[sq-2638]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2638 -[sq-2640]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2640 -[sq-2674]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2674 -[sq-2676]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2676 -[sq-2678]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2678 -[sq-2685]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2685 -[sq-2694]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2694 -[sq-2702]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2702 - -## [3.5.2] - 2019-10-28 - -### Changed -- Generic.ControlStructures.DisallowYodaConditions now returns less false positives - - False positives were being returned for array comparisons, or when performing some function calls -- Squiz.WhiteSpace.SemicolonSpacing.Incorrect error message now escapes newlines and tabs - - Provides a clearer error message as whitespace is now visible - - Also allows for better output for report types such as CSV and XML -- The error message for PSR12.Files.FileHeader.SpacingAfterBlock has been made clearer - - It now uses the wording from the published PSR-12 standard to indicate that blocks must be separated by a blank line - - Thanks to [Craig Duncan][@duncan3dc] for the patch - -### Fixed -- Fixed bug [#2654][sq-2654] : Incorrect indentation for arguments of multiline function calls -- Fixed bug [#2656][sq-2656] : Squiz.WhiteSpace.MemberVarSpacing removes comments before first member var during auto fixing - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#2663][sq-2663] : Generic.NamingConventions.ConstructorName complains about old constructor in interfaces -- Fixed bug [#2664][sq-2664] : PSR12.Files.OpenTag incorrectly identifies PHP file with only an opening tag -- Fixed bug [#2665][sq-2665] : PSR12.Files.ImportStatement should not apply to traits -- Fixed bug [#2673][sq-2673] : PSR12.Traits.UseDeclaration does not allow comments or blank lines between use statements - -[sq-2654]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2654 -[sq-2656]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2656 -[sq-2663]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2663 -[sq-2664]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2664 -[sq-2665]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2665 -[sq-2673]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2673 - -## [3.5.1] - 2019-10-17 - -### Changed -- Very very verbose diff report output has slightly changed to improve readability - - Output is printed when running PHPCS with the --report=diff and -vvv command line arguments - - Fully qualified class names have been replaced with sniff codes - - Tokens being changed now display the line number they are on -- PSR2, PSR12, and PEAR standards now correctly check for blank lines at the start of function calls - - This check has been missing from these standards, but has now been implemented - - When using the PEAR standard, the error code is PEAR.Functions.FunctionCallSignature.FirstArgumentPosition - - When using PSR2 or PSR12, the error code is PSR2.Methods.FunctionCallSignature.FirstArgumentPosition -- PSR12.ControlStructures.BooleanOperatorPlacement no longer complains when multiple expressions appear on the same line - - Previously, boolean operators were enforced to appear at the start or end of lines only - - Boolean operators can now appear in the middle of the line -- PSR12.Files.FileHeader no longer ignores comments preceding a use, namespace, or declare statement -- PSR12.Files.FileHeader now allows a hashbang line at the top of the file - -### Fixed -- Fixed bug [#2506][sq-2506] : PSR2 standard can't auto fix multi-line function call inside a string concat statement -- Fixed bug [#2530][sq-2530] : PEAR.Commenting.FunctionComment does not support intersection types in comments -- Fixed bug [#2615][sq-2615] : Constant visibility false positive on non-class constants -- Fixed bug [#2616][sq-2616] : PSR12.Files.FileHeader false positive when file only contains docblock -- Fixed bug [#2619][sq-2619] : PSR12.Files.FileHeader locks up when inline comment is the last content in a file -- Fixed bug [#2621][sq-2621] : PSR12.Classes.AnonClassDeclaration.CloseBraceSameLine false positive for anon class passed as function argument - - Thanks to [Martins Sipenko][@martinssipenko] for the patch -- Fixed bug [#2623][sq-2623] : PSR12.ControlStructures.ControlStructureSpacing not ignoring indentation inside multi-line string arguments -- Fixed bug [#2624][sq-2624] : PSR12.Traits.UseDeclaration doesnt apply the correct indent during auto fixing -- Fixed bug [#2626][sq-2626] : PSR12.Files.FileHeader detects @var annotations as file docblocks -- Fixed bug [#2628][sq-2628] : PSR12.Traits.UseDeclaration does not allow comments above a USE declaration -- Fixed bug [#2632][sq-2632] : Incorrect indentation of lines starting with "static" inside closures -- Fixed bug [#2641][sq-2641] : PSR12.Functions.NullableTypeDeclaration false positive when using new static() - -[sq-2506]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2506 -[sq-2530]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2530 -[sq-2615]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2615 -[sq-2616]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2616 -[sq-2619]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2619 -[sq-2621]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2621 -[sq-2623]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2623 -[sq-2624]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2624 -[sq-2626]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2626 -[sq-2628]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2628 -[sq-2632]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2632 -[sq-2641]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2641 - -## [3.5.0] - 2019-09-27 - -### Changed -- The included PSR12 standard is now complete and ready to use - - Check your code using PSR-12 by running PHPCS with --standard=PSR12 -- Added support for PHP 7.4 typed properties - - The nullable operator is now tokenized as T_NULLABLE inside property types, as it is elsewhere - - To get the type of a member var, use the File::getMemberProperties() method, which now contains a "type" array index - - This contains the type of the member var, or a blank string if not specified - - If the type is nullable, the return type will contain the leading ? - - If a type is specified, the position of the first token in the type will be set in a "type_token" array index - - If a type is specified, the position of the last token in the type will be set in a "type_end_token" array index - - If the type is nullable, a "nullable_type" array index will also be set to TRUE - - If the type contains namespace information, it will be cleaned of whitespace and comments in the return value -- The PSR1 standard now correctly bans alternate PHP tags - - Previously, it only banned short open tags and not the pre-7.0 alternate tags -- Added support for only checking files that have been locally staged in a git repo - - Use --filter=gitstaged to check these files - - You still need to give PHPCS a list of files or directories in which to apply the filter - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the contribution -- JSON reports now end with a newline character -- The phpcs.xsd schema now validates phpcs-only and phpcbf-only attributes correctly - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- The tokenizer now correctly identifies inline control structures in more cases -- All helper methods inside the File class now throw RuntimeException instead of TokenizerException - - Some tokenizer methods were also throwing RuntimeException but now correctly throw TokenizerException - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- The File::getMethodParameters() method now returns more information, and supports closure USE groups - - If a type hint is specified, the position of the last token in the hint will be set in a "type_hint_end_token" array index - - If a default is specified, the position of the first token in the default value will be set in a "default_token" array index - - If a default is specified, the position of the equals sign will be set in a "default_equal_token" array index - - If the param is not the last, the position of the comma will be set in a "comma_token" array index - - If the param is passed by reference, the position of the reference operator will be set in a "reference_token" array index - - If the param is variable length, the position of the variadic operator will be set in a "variadic_token" array index -- The T_LIST token and it's opening and closing parentheses now contain references to each other in the tokens array - - Uses the same parenthesis_opener/closer/owner indexes as other tokens - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- The T_ANON_CLASS token and it's opening and closing parentheses now contain references to each other in the tokens array - - Uses the same parenthesis_opener/closer/owner indexes as other tokens - - Only applicable if the anon class is passing arguments to the constructor - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- The PHP 7.4 T_BAD_CHARACTER token has been made available for older versions - - Allows you to safely look for this token, but it will not appear unless checking with PHP 7.4+ -- Metrics are now available for Squiz.WhiteSpace.FunctionSpacing - - Use the "info" report to see blank lines before/after functions - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Metrics are now available for Squiz.WhiteSpace.MemberVarSpacing - - Use the "info" report to see blank lines before member vars - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Added Generic.ControlStructures.DisallowYodaConditions sniff - - Ban the use of Yoda conditions - - Thanks to [Mponos George][@gmponos] for the contribution -- Added Generic.PHP.RequireStrictTypes sniff - - Enforce the use of a strict types declaration in PHP files -- Added Generic.WhiteSpace.SpreadOperatorSpacingAfter sniff - - Checks whitespace between the spread operator and the variable/function call it applies to - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the contribution -- Added PSR12.Classes.AnonClassDeclaration sniff - - Enforces the formatting of anonymous classes -- Added PSR12.Classes.ClosingBrace sniff - - Enforces that closing braces of classes/interfaces/traits/functions are not followed by a comment or statement -- Added PSR12.ControlStructures.BooleanOperatorPlacement sniff - - Enforces that boolean operators between conditions are consistently at the start or end of the line -- Added PSR12.ControlStructures.ControlStructureSpacing sniff - - Enforces that spacing and indents are correct inside control structure parenthesis -- Added PSR12.Files.DeclareStatement sniff - - Enforces the formatting of declare statements within a file -- Added PSR12.Files.FileHeader sniff - - Enforces the order and formatting of file header blocks -- Added PSR12.Files.ImportStatement sniff - - Enforces the formatting of import statements within a file -- Added PSR12.Files.OpenTag sniff - - Enforces that the open tag is on a line by itself when used at the start of a PHP-only file -- Added PSR12.Functions.ReturnTypeDeclaration sniff - - Enforces the formatting of return type declarations in functions and closures -- Added PSR12.Properties.ConstantVisibility sniff - - Enforces that constants must have their visibility defined - - Uses a warning instead of an error due to this conditionally requiring the project to support PHP 7.1+ -- Added PSR12.Traits.UseDeclaration sniff - - Enforces the formatting of trait import statements within a class -- Generic.Files.LineLength ignoreComments property now ignores comments at the end of a line - - Previously, this property was incorrectly causing the sniff to ignore any line that ended with a comment - - Now, the trailing comment is not included in the line length, but the rest of the line is still checked -- Generic.Files.LineLength now only ignores unwrappable comments when the comment is on a line by itself - - Previously, a short unwrappable comment at the end of the line would have the sniff ignore the entire line -- Generic.Functions.FunctionCallArgumentSpacing no longer checks spacing around assignment operators inside function calls - - Use the Squiz.WhiteSpace.OperatorSpacing sniff to enforce spacing around assignment operators - - Note that this sniff checks spacing around all assignment operators, not just inside function calls - - The Generic.Functions.FunctionCallArgumentSpacing.NoSpaceBeforeEquals error has been removed - - Use Squiz.WhiteSpace.OperatorSpacing.NoSpaceBefore instead - - The Generic.Functions.FunctionCallArgumentSpacing.NoSpaceAfterEquals error has been removed - - Use Squiz.WhiteSpace.OperatorSpacing.NoSpaceAfter instead - - This also changes the PEAR/PSR2/PSR12 standards so they no longer check assignment operators inside function calls - - They were previously checking these operators when they should not have - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.WhiteSpace.ScopeIndent no longer performs exact indents checking for chained method calls - - Other sniffs can be used to enforce chained method call indent rules - - Thanks to [Pieter Frenssen][@pfrenssen] for the patch -- PEAR.WhiteSpace.ObjectOperatorIndent now supports multi-level chained statements - - When enabled, chained calls must be indented 1 level more or less than the previous line - - Set the new "multilevel" setting to TRUE in a ruleset.xml file to enable this behaviour - - Thanks to [Marcos Passos][@marcospassos] for the patch -- PSR2.ControlStructures.ControlStructureSpacing now allows whitespace after the opening parenthesis if followed by a comment - - Thanks to [Michał Bundyra][@michalbundyra] for the patch -- PSR2.Classes.PropertyDeclaration now enforces a single space after a property type keyword - - The PSR2 standard itself excludes this new check as it is not defined in the written standard - - Using the PSR12 standard will enforce this check -- Squiz.Commenting.BlockComment no longer requires blank line before comment if it's the first content after the PHP open tag - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.Functions.FunctionDeclarationArgumentSpacing now has more accurate error messages - - This includes renaming the SpaceAfterDefault error code to SpaceAfterEquals, which reflects the real error -- Squiz.Functions.FunctionDeclarationArgumentSpacing now checks for no space after a reference operator - - If you don't want this new behaviour, exclude the SpacingAfterReference error message in a ruleset.xml file -- Squiz.Functions.FunctionDeclarationArgumentSpacing now checks for no space after a variadic operator - - If you don't want this new behaviour, exclude the SpacingAfterVariadic error message in a ruleset.xml file -- Squiz.Functions.MultiLineFunctionDeclaration now has improved fixing for the FirstParamSpacing and UseFirstParamSpacing errors -- Squiz.Operators.IncrementDecrementUsage now suggests pre-increment of variables instead of post-increment - - This change does not enforce pre-increment over post-increment; only the suggestion has changed - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.PHP.DisallowMultipleAssignments now has a second error code for when assignments are found inside control structure conditions - - The new error code is Squiz.PHP.DisallowMultipleAssignments.FoundInControlStructure - - All other multiple assignment cases use the existing error code Squiz.PHP.DisallowMultipleAssignments.Found - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.WhiteSpace.FunctionSpacing now applies beforeFirst and afterLast spacing rules to nested functions - - Previously, these rules only applied to the first and last function in a class, interface, or trait - - These rules now apply to functions nested in any statement block, including other functions and conditions -- Squiz.WhiteSpace.OperatorSpacing now has improved handling of parse errors - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.WhiteSpace.OperatorSpacing now checks spacing around the instanceof operator - - Thanks to [Jakub Chábek][@grongor] for the patch -- Squiz.WhiteSpace.OperatorSpacing can now enforce a single space before assignment operators - - Previously, the sniff this spacing as multiple assignment operators are sometimes aligned - - Now, you can set the ignoreSpacingBeforeAssignments sniff property to FALSE to enable checking - - Default remains TRUE, so spacing before assignments is not checked by default - - Thanks to [Jakub Chábek][@grongor] for the patch - -### Fixed -- Fixed bug [#2391][sq-2391] : Sniff-specific ignore rules inside rulesets are filtering out too many files - - Thanks to [Juliette Reinders Folmer][@jrfnl] and [Willington Vega][@wvega] for the patch -- Fixed bug [#2478][sq-2478] : FunctionCommentThrowTag.WrongNumber when exception is thrown once but built conditionally -- Fixed bug [#2479][sq-2479] : Generic.WhiteSpace.ScopeIndent error when using array destructing with exact indent checking -- Fixed bug [#2498][sq-2498] : Squiz.Arrays.ArrayDeclaration.MultiLineNotAllowed autofix breaks heredoc -- Fixed bug [#2502][sq-2502] : Generic.WhiteSpace.ScopeIndent false positives with nested switch indentation and case fall-through -- Fixed bug [#2504][sq-2504] : Generic.WhiteSpace.ScopeIndent false positives with nested arrays and nowdoc string -- Fixed bug [#2511][sq-2511] : PSR2 standard not checking if closing paren of single-line function declaration is on new line -- Fixed bug [#2512][sq-2512] : Squiz.PHP.NonExecutableCode does not support alternate SWITCH control structure - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#2522][sq-2522] : Text generator throws error when code sample line is too long - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#2526][sq-2526] : XML report format has bad syntax on Windows - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#2529][sq-2529] : Generic.Formatting.MultipleStatementAlignment wrong error for assign in string concat -- Fixed bug [#2534][sq-2534] : Unresolvable installed_paths can lead to open_basedir errors - - Thanks to [Oliver Nowak][@ndm2] for the patch -- Fixed bug [#2541][sq-2541] : Text doc generator does not allow for multi-line rule explanations - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#2549][sq-2549] : Searching for a phpcs.xml file can throw warnings due to open_basedir restrictions - - Thanks to [Matthew Peveler][@MasterOdin] for the patch -- Fixed bug [#2558][sq-2558] : PHP 7.4 throwing offset syntax with curly braces is deprecated message - - Thanks to [Matthew Peveler][@MasterOdin] for the patch -- Fixed bug [#2561][sq-2561] : PHP 7.4 compatibility fix / implode argument order - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#2562][sq-2562] : Inline WHILE triggers SpaceBeforeSemicolon incorrectly - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#2565][sq-2565] : Generic.ControlStructures.InlineControlStructure confused by mixed short/long tags - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#2566][sq-2566] : Author tag email validation doesn't support all TLDs - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#2575][sq-2575] : Custom error messages don't have data replaced when cache is enabled -- Fixed bug [#2601][sq-2601] : Squiz.WhiteSpace.FunctionSpacing incorrect fix when spacing is 0 -- Fixed bug [#2608][sq-2608] : PSR2 throws errors for use statements when multiple namespaces are defined in a file - -[sq-2391]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2391 -[sq-2478]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2478 -[sq-2479]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2479 -[sq-2498]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2498 -[sq-2502]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2502 -[sq-2504]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2504 -[sq-2511]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2511 -[sq-2512]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2512 -[sq-2522]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2522 -[sq-2526]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2526 -[sq-2529]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2529 -[sq-2534]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2534 -[sq-2541]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2541 -[sq-2549]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2549 -[sq-2558]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2558 -[sq-2561]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2561 -[sq-2562]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2562 -[sq-2565]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2565 -[sq-2566]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2566 -[sq-2575]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2575 -[sq-2601]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2601 -[sq-2608]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2608 - -## [3.4.2] - 2019-04-11 - -### Changed -- Squiz.Arrays.ArrayDeclaration now has improved handling of syntax errors - -### Fixed -- Fixed an issue where the PCRE JIT on PHP 7.3 caused PHPCS to die when using the parallel option - - PHPCS now disables the PCRE JIT before running -- Fixed bug [#2368][sq-2368] : MySource.PHP.AjaxNullComparison throws error when first function has no doc comment -- Fixed bug [#2414][sq-2414] : Indention false positive in switch/case/if combination -- Fixed bug [#2423][sq-2423] : Squiz.Formatting.OperatorBracket.MissingBrackets error with static -- Fixed bug [#2450][sq-2450] : Indentation false positive when closure containing nested IF conditions used as function argument -- Fixed bug [#2452][sq-2452] : LowercasePHPFunctions sniff failing on "new \File()" -- Fixed bug [#2453][sq-2453] : Squiz.CSS.SemicolonSpacingSniff false positive when style name proceeded by an asterisk - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#2464][sq-2464] : Fixer conflict between Generic.WhiteSpace.ScopeIndent and Squiz.WhiteSpace.ScopeClosingBrace when class indented 1 space -- Fixed bug [#2465][sq-2465] : Excluding a sniff by path is not working -- Fixed bug [#2467][sq-2467] : PHP open/close tags inside CSS files are replaced with internal PHPCS token strings when auto fixing - -[sq-2368]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2368 -[sq-2414]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2414 -[sq-2423]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2423 -[sq-2450]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2450 -[sq-2452]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2452 -[sq-2453]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2453 -[sq-2464]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2464 -[sq-2465]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2465 -[sq-2467]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2467 - -## [3.4.1] - 2019-03-19 - -### Changed -- The PEAR installable version of PHPCS was missing some files, which have been re-included in this release - - The code report was not previously available for PEAR installs - - The Generic.Formatting.SpaceBeforeCast sniff was not previously available for PEAR installs - - The Generic.WhiteSpace.LanguageConstructSpacing sniff was not previously available for PEAR installs - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- PHPCS will now refuse to run if any of the required PHP extensions are not loaded - - Previously, PHPCS only relied on requirements being checked by PEAR and Composer - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Ruleset XML parsing errors are now displayed in a readable format so they are easier to correct - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- The PSR2 standard no longer throws duplicate errors for spacing around FOR loop parentheses - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- T_PHPCS_SET tokens now contain sniffCode, sniffProperty, and sniffPropertyValue indexes - - Sniffs can use this information instead of having to parse the token content manually -- Added more guard code for syntax errors to various CSS sniffs - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.Commenting.DocComment error messages now contain the name of the comment tag that caused the error - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.ControlStructures.InlineControlStructure now handles syntax errors correctly - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.Debug.JSHint now longer requires rhino and can be run directly from the npm install - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.Files.LineEndings no longer adds superfluous new line at the end of JS and CSS files - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.Formatting.DisallowMultipleStatements no longer tries to fix lines containing phpcs:ignore statements - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.Functions.FunctionCallArgumentSpacing now has improved performance and anonymous class support - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.WhiteSpace.ScopeIndent now respects changes to the "exact" property using phpcs:set mid-way through a file - - This allows you to change the "exact" rule for only some parts of a file -- Generic.WhiteSpace.ScopeIndent now disables exact indent checking inside all arrays - - Previously, this was only done when using long array syntax, but it now works for short array syntax as well -- PEAR.Classes.ClassDeclaration now has improved handling of PHPCS annotations and tab indents -- PSR12.Classes.ClassInstantiation has changed its error code from MissingParenthesis to MissingParentheses -- PSR12.Keywords.ShortFormTypeKeywords now ignores all spacing inside type casts during both checking and fixing - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.Classes.LowercaseClassKeywords now examines the class keyword for anonymous classes - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.ControlStructures.ControlSignature now has improved handling of parse errors - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.Commenting.PostStatementComment fixer no longer adds a blank line at the start of a JS file that begins with a comment - - Fixes a conflict between this sniff and the Squiz.WhiteSpace.SuperfluousWhitespace sniff - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.Commenting.PostStatementComment now ignores comments inside control structure conditions, such as FOR loops - - Fixes a conflict between this sniff and the Squiz.ControlStructures.ForLoopDeclaration sniff - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.Commenting.FunctionCommentThrowTag now has improved support for unknown exception types and namespaces - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.ControlStructures.ForLoopDeclaration has improved whitespace, closure, and empty expression support - - The SpacingAfterSecondNoThird error code has been removed as part of these fixes - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.CSS.ClassDefinitionOpeningBraceSpace now handles comments and indentation correctly - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.CSS.ClassDefinitionClosingBrace now handles comments, indentation, and multiple statements on the same line correctly - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.CSS.Opacity now handles comments correctly - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.CSS.SemicolonSpacing now handles comments and syntax errors correctly - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.NamingConventions.ValidVariableName now supports variables inside anonymous classes correctly - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.PHP.LowercasePHPFunctions now handles use statements, namespaces, and comments correctly - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.WhiteSpace.FunctionSpacing now fixes function spacing correctly when a function is the first content in a file - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.WhiteSpace.SuperfluousWhitespace no longer throws errors for spacing between functions and properties in anon classes - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Zend.Files.ClosingTag no longer adds a semicolon during fixing of a file that only contains a comment - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Zend.NamingConventions.ValidVariableName now supports variables inside anonymous classes correctly - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch - -### Fixed -- Fixed bug [#2298][sq-2298] : PSR2.Classes.ClassDeclaration allows extended class on new line - - Thanks to [Michał Bundyra][@michalbundyra] for the patch -- Fixed bug [#2337][sq-2337] : Generic.WhiteSpace.ScopeIndent incorrect error when multi-line function call starts on same line as open tag -- Fixed bug [#2348][sq-2348] : Cache not invalidated when changing a ruleset included by another -- Fixed bug [#2376][sq-2376] : Using __halt_compiler() breaks Generic.PHP.ForbiddenFunctions unless it's last in the function list - - Thanks to [Sijun Zhu][@Billz95] for the patch -- Fixed bug [#2393][sq-2393] : The gitmodified filter will infinitely loop when encountering deleted file paths - - Thanks to [Lucas Manzke][@lmanzke] for the patch -- Fixed bug [#2396][sq-2396] : Generic.WhiteSpace.ScopeIndent incorrect error when multi-line IF condition mixed with HTML -- Fixed bug [#2431][sq-2431] : Use function/const not tokenized as T_STRING when preceded by comment - -[sq-2298]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2298 -[sq-2337]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2337 -[sq-2348]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2348 -[sq-2376]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2376 -[sq-2393]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2393 -[sq-2396]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2396 -[sq-2431]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2431 - -## [3.4.0] - 2018-12-20 - -### Deprecated -- The Generic.Formatting.NoSpaceAfterCast sniff has been deprecated and will be removed in version 4 - - The functionality of this sniff is now available in the Generic.Formatting.SpaceAfterCast sniff - - Include the Generic.Formatting.SpaceAfterCast sniff and set the "spacing" property to "0" - - As soon as possible, replace all instances of the old sniff code with the new sniff code and property setting - - The existing sniff will continue to work until version 4 has been released - -### Changed -- Rule include patterns in a ruleset.xml file are now evaluated as OR instead of AND - - Previously, a file had to match every include pattern and no exclude patterns to be included - - Now, a file must match at least one include pattern and no exclude patterns to be included - - This is a bug fix as include patterns are already documented to work this way -- New token T_BITWISE_NOT added for the bitwise not operator - - This token was previously tokenized as T_NONE - - Any sniffs specifically looking for T_NONE tokens with a tilde as the contents must now also look for T_BITWISE_NOT - - Sniffs can continue looking for T_NONE as well as T_BITWISE_NOT to support older PHP_CodeSniffer versions -- All types of binary casting are now tokenized as T_BINARY_CAST - - Previously, the 'b' in 'b"some string with $var"' would be a T_BINARY_CAST, but only when the string contained a var - - This change ensures the 'b' is always tokenized as T_BINARY_CAST - - This change also converts '(binary)' from T_STRING_CAST to T_BINARY_CAST - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the help with this patch -- Array properties set inside a ruleset.xml file can now extend a previous value instead of always overwriting it - - e.g., if you include a ruleset that defines forbidden functions, can you now add to that list instead of having to redefine it - - To use this feature, add extends="true" to the property tag - - e.g., property name="forbiddenFunctionNames" type="array" extend="true" - - Thanks to [Michael Moravec][@Majkl578] for the patch -- If $XDG_CACHE_HOME is set and points to a valid directory, it will be used for caching instead of the system temp directory -- PHPCBF now disables parallel running if you are passing content on STDIN - - Stops an error from being shown after the fixed output is printed -- The progress report now shows files with tokenizer errors as skipped (S) instead of a warning (W) - - The tokenizer error is still displayed in reports as normal - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- The Squiz standard now ensures there is no space between an increment/decrement operator and its variable -- The File::getMethodProperties() method now includes a has_body array index in the return value - - FALSE if the method has no body (as with abstract and interface methods) or TRUE otherwise - - Thanks to [Chris Wilkinson][@thewilkybarkid] for the patch -- The File::getTokensAsString() method now throws an exception if the $start param is invalid - - If the $length param is invalid, an empty string will be returned - - Stops an infinite loop when the function is passed invalid data - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Added new Generic.CodeAnalysis.EmptyPHPStatement sniff - - Warns when it finds empty PHP open/close tag combinations or superfluous semicolons - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the contribution -- Added new Generic.Formatting.SpaceBeforeCast sniff - - Ensures there is exactly 1 space before a type cast, unless the cast statement is indented or multi-line - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the contribution -- Added new Generic.VersionControl.GitMergeConflict sniff - - Detects merge conflict artifacts left in files - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the contribution -- Added Generic.WhiteSpace.IncrementDecrementSpacing sniff - - Ensures there is no space between the operator and the variable it applies to - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the contribution -- Added PSR12.Functions.NullableTypeDeclaration sniff - - Ensures there is no space after the question mark in a nullable type declaration - - Thanks to [Timo Schinkel][@timoschinkel] for the contribution -- A number of sniffs have improved support for methods in anonymous classes - - These sniffs would often throw the same error twice for functions in nested classes - - Error messages have also been changed to be less confusing - - The full list of affected sniffs is: - - Generic.NamingConventions.CamelCapsFunctionName - - PEAR.NamingConventions.ValidFunctionName - - PSR1.Methods.CamelCapsMethodName - - PSR2.Methods.MethodDeclaration - - Squiz.Scope.MethodScope - - Squiz.Scope.StaticThisUsage - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.CodeAnalysis.UnusedFunctionParameter now only skips functions with empty bodies when the class implements an interface - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.CodeAnalysis.UnusedFunctionParameter now has additional error codes to indicate where unused params were found - - The new error code prefixes are: - - FoundInExtendedClass: when the class extends another - - FoundInImplementedInterface: when the class implements an interface - - Found: used in all other cases, including closures - - The new error code suffixes are: - - BeforeLastUsed: the unused param was positioned before the last used param in the function signature - - AfterLastUsed: the unused param was positioned after the last used param in the function signature - - This makes the new error code list for this sniff: - - Found - - FoundBeforeLastUsed - - FoundAfterLastUsed - - FoundInExtendedClass - - FoundInExtendedClassBeforeLastUsed - - FoundInExtendedClassAfterLastUsed - - FoundInImplementedInterface - - FoundInImplementedInterfaceBeforeLastUsed - - FoundInImplementedInterfaceAfterLastUsed - - These errors code make it easier for specific cases to be ignored or promoted using a ruleset.xml file - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the contribution -- Generic.Classes.DuplicateClassName now inspects traits for duplicate names as well as classes and interfaces - - Thanks to [Chris Wilkinson][@thewilkybarkid] for the patch -- Generic.Files.InlineHTML now ignores a BOM at the start of the file - - Thanks to [Chris Wilkinson][@thewilkybarkid] for the patch -- Generic.PHP.CharacterBeforePHPOpeningTag now ignores a BOM at the start of the file - - Thanks to [Chris Wilkinson][@thewilkybarkid] for the patch -- Generic.Formatting.SpaceAfterCast now has a setting to specify how many spaces are required after a type cast - - Default remains 1 - - Override the "spacing" setting in a ruleset.xml file to change - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.Formatting.SpaceAfterCast now has a setting to ignore newline characters after a type cast - - Default remains FALSE, so newlines are not allowed - - Override the "ignoreNewlines" setting in a ruleset.xml file to change - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.Formatting.SpaceAfterNot now has a setting to specify how many spaces are required after a NOT operator - - Default remains 1 - - Override the "spacing" setting in a ruleset.xml file to change - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.Formatting.SpaceAfterNot now has a setting to ignore newline characters after the NOT operator - - Default remains FALSE, so newlines are not allowed - - Override the "ignoreNewlines" setting in a ruleset.xml file to change - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- PEAR.Functions.FunctionDeclaration now checks spacing before the opening parenthesis of functions with no body - - Thanks to [Chris Wilkinson][@thewilkybarkid] for the patch -- PEAR.Functions.FunctionDeclaration now enforces no space before the semicolon in functions with no body - - Thanks to [Chris Wilkinson][@thewilkybarkid] for the patch -- PSR2.Classes.PropertyDeclaration now checks the order of property modifier keywords - - This is a rule that is documented in PSR-2 but was not enforced by the included PSR2 standard until now - - This sniff is also able to fix the order of the modifier keywords if they are incorrect - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- PSR2.Methods.MethodDeclaration now checks method declarations inside traits - - Thanks to [Chris Wilkinson][@thewilkybarkid] for the patch -- Squiz.Commenting.InlineComment now has better detection of comment block boundaries -- Squiz.Classes.ClassFileName now checks that a trait name matches the filename - - Thanks to [Chris Wilkinson][@thewilkybarkid] for the patch -- Squiz.Classes.SelfMemberReference now supports scoped declarations and anonymous classes - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.Classes.SelfMemberReference now fixes multiple errors at once, increasing fixer performance - - Thanks to [Gabriel Ostrolucký][@ostrolucky] for the patch -- Squiz.Functions.LowercaseFunctionKeywords now checks abstract and final prefixes, and auto-fixes errors - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.Objects.ObjectMemberComma.Missing has been renamed to Squiz.Objects.ObjectMemberComma.Found - - The error is thrown when the comma is found but not required, so the error code was incorrect - - If you are referencing the old error code in a ruleset XML file, please use the new code instead - - If you wish to maintain backwards compatibility, you can provide rules for both the old and new codes - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.WhiteSpace.ObjectOperatorSpacing is now more tolerant of parse errors -- Squiz.WhiteSpace.ObjectOperatorSpacing now fixes errors more efficiently - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch - -### Fixed -- Fixed bug [#2109][sq-2109] : Generic.Functions.CallTimePassByReference false positive for bitwise and used in function argument -- Fixed bug [#2165][sq-2165] : Conflict between Squiz.Arrays.ArrayDeclaration and ScopeIndent sniffs when heredoc used in array -- Fixed bug [#2167][sq-2167] : Generic.WhiteSpace.ScopeIndent shows invalid error when scope opener indented inside inline HTML -- Fixed bug [#2178][sq-2178] : Generic.NamingConventions.ConstructorName matches methods in anon classes with same name as containing class - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#2190][sq-2190] : PEAR.Functions.FunctionCallSignature incorrect error when encountering trailing PHPCS annotation - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#2194][sq-2194] : Generic.Whitespace.LanguageConstructSpacing should not be checking namespace operators - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#2202][sq-2202] : Squiz.WhiteSpace.OperatorSpacing throws error for negative index when using curly braces for string access - - Same issue fixed in Squiz.Formatting.OperatorBracket - - Thanks to [Andreas Buchenrieder][@anbuc] for the patch -- Fixed bug [#2210][sq-2210] : Generic.NamingConventions.CamelCapsFunctionName not ignoring SoapClient __getCookies() method - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#2211][sq-2211] : PSR2.Methods.MethodDeclaration gets confused over comments between modifier keywords - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#2212][sq-2212] : FUNCTION and CONST in use groups being tokenized as T_FUNCTION and T_CONST - - Thanks to [Chris Wilkinson][@thewilkybarkid] for the patch -- Fixed bug [#2214][sq-2214] : File::getMemberProperties() is recognizing method params as properties - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#2236][sq-2236] : Memory info measurement unit is Mb but probably should be MB -- Fixed bug [#2246][sq-2246] : CSS tokenizer does not tokenize class names correctly when they contain the string NEW - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#2278][sq-2278] : Squiz.Operators.ComparisonOperatorUsage false positive when inline IF contained in parentheses - - Thanks to [Arnout Boks][@aboks] for the patch -- Fixed bug [#2284][sq-2284] : Squiz.Functions.FunctionDeclarationArgumentSpacing removing type hint during fixing - - Thanks to [Michał Bundyra][@michalbundyra] for the patch -- Fixed bug [#2297][sq-2297] : Anonymous class not tokenized correctly when used as argument to another anon class - - Thanks to [Michał Bundyra][@michalbundyra] for the patch - -[sq-2109]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2109 -[sq-2165]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2165 -[sq-2167]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2167 -[sq-2178]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2178 -[sq-2190]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2190 -[sq-2194]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2194 -[sq-2202]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2202 -[sq-2210]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2210 -[sq-2211]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2211 -[sq-2212]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2212 -[sq-2214]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2214 -[sq-2236]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2236 -[sq-2246]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2246 -[sq-2278]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2278 -[sq-2284]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2284 -[sq-2297]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2297 - -## [2.9.2] - 2018-11-08 - -### Changed -- PHPCS should now run under PHP 7.3 without deprecation warnings - - Thanks to [Nick Wilde][@NickDickinsonWilde] for the patch - -### Fixed -- Fixed bug [#1496][sq-1496] : Squiz.Strings.DoubleQuoteUsage not unescaping dollar sign when fixing - - Thanks to [Michał Bundyra][@michalbundyra] for the patch -- Fixed bug [#1549][sq-1549] : Squiz.PHP.EmbeddedPhp fixer conflict with // comment before PHP close tag - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#1890][sq-1890] : Incorrect Squiz.WhiteSpace.ControlStructureSpacing.NoLineAfterClose error between catch and finally statements - -## [3.3.2] - 2018-09-24 - -### Changed -- Fixed a problem where the report cache was not being cleared when the sniffs inside a standard were updated -- The info report (--report=info) now has improved formatting for metrics that span multiple lines - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- The unit test runner now skips .bak files when looking for test cases - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- The Squiz standard now ensures underscores are not used to indicate visibility of private members vars and methods - - Previously, this standard enforced the use of underscores -- Generic.PHP.NoSilencedErrors error messages now contain a code snippet to show the context of the error - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.Arrays.ArrayDeclaration no longer reports errors for a comma on a line new after a here/nowdoc - - Also stops a parse error being generated when auto-fixing - - The SpaceBeforeComma error message has been changed to only have one data value instead of two -- Squiz.Commenting.FunctionComment no longer errors when trying to fix indents of multi-line param comments -- Squiz.Formatting.OperatorBracket now correctly fixes statements that contain strings -- Squiz.PHP.CommentedOutCode now ignores more @-style annotations and includes better comment block detection - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch - -### Fixed -- Fixed a problem where referencing a relative file path in a ruleset XML file could add unnecessary sniff exclusions - - This didn't actually exclude anything, but caused verbose output to list strange exclusion rules -- Fixed bug [#2110][sq-2110] : Squiz.WhiteSpace.FunctionSpacing is removing indents from the start of functions when fixing - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#2115][sq-2115] : Squiz.Commenting.VariableComment not checking var types when the @var line contains a comment -- Fixed bug [#2120][sq-2120] : Tokenizer fails to match T_INLINE_ELSE when used after function call containing closure -- Fixed bug [#2121][sq-2121] : Squiz.PHP.DisallowMultipleAssignments false positive in while loop conditions - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#2127][sq-2127] : File::findExtendedClassName() doesn't support nested classes - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#2138][sq-2138] : Tokenizer detects wrong token for PHP ::class feature with spaces -- Fixed bug [#2143][sq-2143] : PSR2.Namespaces.UseDeclaration does not properly fix "use function" and "use const" statements - - Thanks to [Chris Wilkinson][@thewilkybarkid] for the patch -- Fixed bug [#2144][sq-2144] : Squiz.Arrays.ArrayDeclaration does incorrect align calculation in array with cyrillic keys -- Fixed bug [#2146][sq-2146] : Zend.Files.ClosingTag removes closing tag from end of file without inserting a semicolon -- Fixed bug [#2151][sq-2151] : XML schema not updated with the new array property syntax - -[sq-2110]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2110 -[sq-2115]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2115 -[sq-2120]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2120 -[sq-2121]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2121 -[sq-2127]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2127 -[sq-2138]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2138 -[sq-2143]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2143 -[sq-2144]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2144 -[sq-2146]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2146 -[sq-2151]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2151 - -## [3.3.1] - 2018-07-27 - -### Removed -- Support for HHVM has been dropped due to recent unfixed bugs and HHVM refocus on Hack only - - Thanks to [Walt Sorensen][@photodude] and [Juliette Reinders Folmer][@jrfnl] for helping to remove all HHVM exceptions from the core - -### Changed -- The full report (the default report) now has improved word wrapping for multi-line messages and sniff codes - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- The summary report now sorts files based on their directory location instead of just a basic string sort - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- The source report now orders error codes by name when they have the same number of errors - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- The junit report no longer generates validation errors with the Jenkins xUnit plugin - - Thanks to [Nikolay Geo][@nicholascus] for the patch -- Generic.Commenting.DocComment no longer generates the SpacingBeforeTags error if tags are the first content in the docblock - - The sniff will still generate a MissingShort error if there is no short comment - - This allows the MissingShort error to be suppressed in a ruleset to make short descriptions optional -- Generic.Functions.FunctionCallArgumentSpacing now properly fixes multi-line function calls with leading commas - - Previously, newlines between function arguments would be removed - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.PHP.Syntax will now use PHP_BINARY instead of trying to discover the executable path - - This ensures that the sniff will always syntax check files using the PHP version that PHPCS is running under - - Setting the `php_path` config var will still override this value as normal - - Thanks to [Willem Stuursma-Ruwen][@willemstuursma] for the patch -- PSR2.Namespaces.UseDeclaration now supports commas at the end of group use declarations - - Also improves checking and fixing for use statements containing parse errors - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.Arrays.ArrayDeclaration no longer removes the array opening brace while fixing - - This could occur when the opening brace was on a new line and the first array key directly followed - - This change also stops the KeyNotAligned error message being incorrectly reported in these cases -- Squiz.Arrays.ArrayDeclaration no longer tries to change multi-line arrays to single line when they contain comments - - Fixes a conflict between this sniff and some indentation sniffs -- Squiz.Classes.ClassDeclaration no longer enforces spacing rules when a class is followed by a function - - Fixes a conflict between this sniff and the Squiz.WhiteSpace.FunctionSpacing sniff -- The Squiz.Classes.ValidClassName.NotCamelCaps message now references PascalCase instead of CamelCase - - The "CamelCase class name" metric produced by the sniff has been changed to "PascalCase class name" - - This reflects the fact that the class name check is actually a Pascal Case check and not really Camel Case - - Thanks to [Tom H Anderson][@TomHAnderson] for the patch -- Squiz.Commenting.InlineComment no longer enforces spacing rules when an inline comment is followed by a docblock - - Fixes a conflict between this sniff and the Squiz.WhiteSpace.FunctionSpacing sniff -- Squiz.WhiteSpace.OperatorSpacing no longer tries to fix operator spacing if the next content is a comment on a new line - - Fixes a conflict between this sniff and the Squiz.Commenting.PostStatementComment sniff - - Also stops PHPCS annotations from being moved to a different line, potentially changing their meaning - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.WhiteSpace.FunctionSpacing no longer checks spacing of functions at the top of an embedded PHP block - - Fixes a conflict between this sniff and the Squiz.PHP.EmbeddedPHP sniff - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.WhiteSpace.MemberVarSpacing no longer checks spacing before member vars that come directly after methods - - Fixes a conflict between this sniff and the Squiz.WhiteSpace.FunctionSpacing sniff -- Squiz.WhiteSpace.SuperfluousWhitespace now recognizes unicode whitespace at the start and end of a file - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch - -### Fixed -- Fixed bug [#2029][sq-2029] : Squiz.Scope.MemberVarScope throws fatal error when a property is found in an interface - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#2047][sq-2047] : PSR12.Classes.ClassInstantiation false positive when instantiating class from array index -- Fixed bug [#2048][sq-2048] : GenericFormatting.MultipleStatementAlignment false positive when assigning values inside an array -- Fixed bug [#2053][sq-2053] : PSR12.Classes.ClassInstantiation incorrectly fix when using member vars and some variable formats -- Fixed bug [#2065][sq-2065] : Generic.ControlStructures.InlineControlStructure fixing fails when inline control structure contains closure -- Fixed bug [#2072][sq-2072] : Squiz.Arrays.ArrayDeclaration throws NoComma error when array value is a shorthand IF statement -- Fixed bug [#2082][sq-2082] : File with "defined() or define()" syntax triggers PSR1.Files.SideEffects.FoundWithSymbols -- Fixed bug [#2095][sq-2095] : PSR2.Namespaces.NamespaceDeclaration does not handle namespaces defined over multiple lines - -[sq-2029]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2029 -[sq-2047]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2047 -[sq-2048]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2048 -[sq-2053]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2053 -[sq-2065]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2065 -[sq-2072]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2072 -[sq-2082]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2082 -[sq-2095]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2095 - -## [3.3.0] - 2018-06-07 - -### Deprecated -- The Squiz.WhiteSpace.LanguageConstructSpacing sniff has been deprecated and will be removed in version 4 - - The sniff has been moved to the Generic standard, with a new code of Generic.WhiteSpace.LanguageConstructSpacing - - As soon as possible, replace all instances of the old sniff code with the new sniff code in your ruleset.xml files - - The existing Squiz sniff will continue to work until version 4 has been released - - The new Generic sniff now also checks many more language constructs to enforce additional spacing rules - - Thanks to [Mponos George][@gmponos] for the contribution -- The current method for setting array properties in ruleset files has been deprecated and will be removed in version 4 - - Currently, setting an array value uses the string syntax "print=>echo,create_function=>null" - - Now, individual array elements are specified using a new "element" tag with "key" and "value" attributes - - For example, element key="print" value="echo" - - Thanks to [Michał Bundyra][@michalbundyra] for the patch -- The T_ARRAY_HINT token has been deprecated and will be removed in version 4 - - The token was used to ensure array type hints were not tokenized as T_ARRAY, but no other type hints were given a special token - - Array type hints now use the standard T_STRING token instead - - Sniffs referencing this token type will continue to run without error until version 4, but will not find any T_ARRAY_HINT tokens -- The T_RETURN_TYPE token has been deprecated and will be removed in version 4 - - The token was used to ensure array/self/parent/callable return types were tokenized consistently - - For namespaced return types, only the last part of the string (the class name) was tokenized as T_RETURN_TYPE - - This was not consistent and so return types are now left using their original token types so they are not skipped by sniffs - - The exception are array return types, which are tokenized as T_STRING instead of T_ARRAY, as they are for type hints - - Sniffs referencing this token type will continue to run without error until version 4, but will not find any T_RETUTN_TYPE tokens - - To get the return type of a function, use the File::getMethodProperties() method, which now contains a "return_type" array index - - This contains the return type of the function or closer, or a blank string if not specified - - If the return type is nullable, the return type will contain the leading ? - - A nullable_return_type array index in the return value will also be set to true - - If the return type contains namespace information, it will be cleaned of whitespace and comments - - To access the original return value string, use the main tokens array - -### Added -- This release contains an incomplete version of the PSR-12 coding standard - - Errors found using this standard should be valid, but it will miss a lot of violations until it is complete - - If you'd like to test and help, you can use the standard by running PHPCS with --standard=PSR12 - -### Changed -- Config values set using --runtime-set now override any config values set in rulesets or the CodeSniffer.conf file -- You can now apply include-pattern rules to individual message codes in a ruleset like you can with exclude-pattern rules - - Previously, include-pattern rules only applied to entire sniffs - - If a message code has both include and exclude patterns, the exclude patterns will be ignored -- Using PHPCS annotations to selectively re-enable sniffs is now more flexible - - Previously, you could only re-enable a sniff/category/standard using the exact same code that was disabled - - Now, you can disable a standard and only re-enable a specific category or sniff - - Or, you can disable a specific sniff and have it re-enable when you re-enable the category or standard -- The value of array sniff properties can now be set using phpcs:set annotations - - e.g., phpcs:set Standard.Category.SniffName property[] key=>value,key2=>value2 - - Thanks to [Michał Bundyra][@michalbundyra] for the patch -- PHPCS annotations now remain as T_PHPCS_* tokens instead of reverting to comment tokens when --ignore-annotations is used - - This stops sniffs (especially commenting sniffs) from generating a large number of false errors when ignoring - - Any custom sniffs that are using the T_PHPCS_* tokens to detect annotations may need to be changed to ignore them - - Check $phpcsFile->config->annotations to see if annotations are enabled and ignore when false -- You can now use fully or partially qualified class names for custom reports instead of absolute file paths - - To support this, you must specify an autoload file in your ruleset.xml file and use it to register an autoloader - - Your autoloader will need to load your custom report class when requested - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- The JSON report format now does escaping in error source codes as well as error messages - - Thanks to [Martin Vasel][@marvasDE] for the patch -- Invalid installed_paths values are now ignored instead of causing a fatal error -- Improved testability of custom rulesets by allowing the installed standards to be overridden - - Thanks to [Timo Schinkel][@timoschinkel] for the patch -- The key used for caching PHPCS runs now includes all set config values - - This fixes a problem where changing config values (e.g., via --runtime-set) used an incorrect cache file -- The "Function opening brace placement" metric has been separated into function and closure metrics in the info report - - Closures are no longer included in the "Function opening brace placement" metric - - A new "Closure opening brace placement" metric now shows information for closures -- Multi-line T_YIELD_FROM statements are now replicated properly for older PHP versions -- The PSR2 standard no longer produces 2 error messages when the AS keyword in a foreach loop is not lowercase -- Specifying a path to a non-existent dir when using the `--report-[reportType]=/path/to/report` CLI option no longer throws an exception - - This now prints a readable error message, as it does when using `--report-file` -- The File::getMethodParamaters() method now includes a type_hint_token array index in the return value - - Provides the position in the token stack of the first token in the type hint -- The File::getMethodProperties() method now includes a return_type_token array index in the return value - - Provides the position in the token stack of the first token in the return type -- The File::getTokensAsString() method can now optionally return original (non tab-replaced) content - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Removed Squiz.PHP.DisallowObEndFlush from the Squiz standard - - If you use this sniff and want to continue banning ob_end_flush(), use Generic.PHP.ForbiddenFunctions instead - - You will need to set the forbiddenFunctions property in your ruleset.xml file -- Removed Squiz.PHP.ForbiddenFunctions from the Squiz standard - - Replaced by using the forbiddenFunctions property of Generic.PHP.ForbiddenFunctions in the Squiz ruleset.xml - - Functionality of the Squiz standard remains the same, but the error codes are now different - - Previously, Squiz.PHP.ForbiddenFunctions.Found and Squiz.PHP.ForbiddenFunctions.FoundWithAlternative - - Now, Generic.PHP.ForbiddenFunctions.Found and Generic.PHP.ForbiddenFunctions.FoundWithAlternative -- Added new Generic.PHP.LowerCaseType sniff - - Ensures PHP types used for type hints, return types, and type casting are lowercase - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the contribution -- Added new Generic.WhiteSpace.ArbitraryParenthesesSpacing sniff - - Generates an error for whitespace inside parenthesis that don't belong to a function call/declaration or control structure - - Generates a warning for any empty parenthesis found - - Allows the required spacing to be set using the spacing sniff property (default is 0) - - Allows newlines to be used by setting the ignoreNewlines sniff property (default is false) - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the contribution -- Added new PSR12.Classes.ClassInstantiation sniff - - Ensures parenthesis are used when instantiating a new class -- Added new PSR12.Keywords.ShortFormTypeKeywords sniff - - Ensures the short form of PHP types is used when type casting -- Added new PSR12.Namespaces.CompundNamespaceDepth sniff - - Ensures compound namespace use statements have a max depth of 2 levels - - The max depth can be changed by setting the 'maxDepth' sniff property in a ruleset.xml file -- Added new PSR12.Operators.OperatorSpacing sniff - - Ensures operators are preceded and followed by at least 1 space -- Improved core support for grouped property declarations - - Also improves support in Squiz.WhiteSpace.ScopeKeywordSpacing and Squiz.WhiteSpace.MemberVarSpacing - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.Commenting.DocComment now produces a NonParamGroup error when tags are mixed in with the @param tag group - - It would previously throw either a NonParamGroup or ParamGroup error depending on the order of tags - - This change allows the NonParamGroup error to be suppressed in a ruleset to allow the @param group to contain other tags - - Thanks to [Phil Davis][@phil-davis] for the patch -- Generic.Commenting.DocComment now continues checks param tags even if the doc comment short description is missing - - This change allows the MissingShort error to be suppressed in a ruleset without all other errors being suppressed as well - - Thanks to [Phil Davis][@phil-davis] for the patch -- Generic.CodeAnalysis.AssignmentInCondition now reports a different error code for assignments found in WHILE conditions - - The return value of a function call is often assigned in a WHILE condition, so this change makes it easier to exclude these cases - - The new code for this error message is Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition - - The error code for all other cases remains as Generic.CodeAnalysis.AssignmentInCondition.Found - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.Functions.OpeningFunctionBraceBsdAllman now longer leaves trailing whitespace when moving the opening brace during fixing - - Also applies to fixes made by PEAR.Functions.FunctionDeclaration and Squiz.Functions.MultiLineFunctionDeclaration -- Generic.WhiteSpace.ScopeIndent now does a better job of fixing the indent of multi-line comments -- Generic.WhiteSpace.ScopeIndent now does a better job of fixing the indent of PHP open and close tags -- PEAR.Commenting.FunctionComment now report a different error code for param comment lines with too much padding - - Previously, any lines of a param comment that don't start at the exact comment position got the same error code - - Now, only comment lines with too little padding use ParamCommentAlignment as they are clearly mistakes - - Comment lines with too much padding may be using precision alignment as now use ParamCommentAlignmentExceeded - - This allows for excessive padding to be excluded from a ruleset while continuing to enforce a minimum padding -- PEAR.WhiteSpace.ObjectOperatorIndent now checks the indent of more chained operators - - Previously, it only checked chains beginning with a variable - - Now, it checks chains beginning with function calls, static class names, etc -- Squiz.Arrays.ArrayDeclaration now continues checking array formatting even if the key indent is not correct - - Allows for using different array indent rules while still checking/fixing double arrow and value alignment -- Squiz.Commenting.BlockComment has improved support for tab-indented comments - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.Commenting.BlockComment auto fixing no longer breaks when two block comments follow each other - - Also stopped single-line block comments from being auto fixed when they are embedded in other code - - Also fixed as issue found when PHPCS annotations were used inside a block comment - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.Commenting.BlockComment.LastLineIndent is now able to be fixed with phpcbf - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.Commenting.BlockComment now aligns star-prefixed lines under the opening tag while fixing, instead of indenting them - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.Commenting.FunctionComment.IncorrectTypeHint message no longer contains cut-off suggested type hints -- Squiz.Commenting.InlineComment now uses a new error code for inline comments at the end of a function - - Previously, all inline comments followed by a blank line threw a Squiz.Commenting.InlineComment.SpacingAfter error - - Now, inline comments at the end of a function will instead throw Squiz.Commenting.InlineComment.SpacingAfterAtFunctionEnd - - If you previously excluded SpacingAfter, add an exclusion for SpacingAfterAtFunctionEnd to your ruleset as well - - If you previously only included SpacingAfter, consider including SpacingAfterAtFunctionEnd as well - - The Squiz standard now excludes SpacingAfterAtFunctionEnd as the blank line is checked elsewhere - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.ControlStructures.ControlSignature now errors when a comment follows the closing brace of an earlier body - - Applies to catch, finally, else, elseif, and do/while structures - - The included PSR2 standard now enforces this rule - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.Formatting.OperatorBracket.MissingBrackets message has been changed to remove the word "arithmetic" - - The sniff checks more than just arithmetic operators, so the message is now clearer -- Sniffs.Operators.ComparisonOperatorUsage now detects more cases of implicit true comparisons - - It could previously be confused by comparisons used as function arguments -- Squiz.PHP.CommentedOutCode now ignores simple @-style annotation comments so they are not flagged as commented out code - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.PHP.CommentedOutCode now ignores a greater number of short comments so they are not flagged as commented out code - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.PHP.DisallowComparisonAssignment no longer errors when using the null coalescing operator - - Given this operator is used almost exclusively to assign values, it didn't make sense to generate an error -- Squiz.WhiteSpacing.FunctionSpacing now has a property to specify how many blank lines should be before the first class method - - Only applies when a method is the first code block in a class (i.e., there are no member vars before it) - - Override the 'spacingBeforeFirst' property in a ruleset.xml file to change - - If not set, the sniff will use whatever value is set for the existing 'spacing' property -- Squiz.WhiteSpacing.FunctionSpacing now has a property to specify how many blank lines should be after the last class method - - Only applies when a method is the last code block in a class (i.e., there are no member vars after it) - - Override the 'spacingAfterLast' property in a ruleset.xml file to change - - If not set, the sniff will use whatever value is set for the existing 'spacing' property - -### Fixed -- Fixed bug [#1863][sq-1863] : File::findEndOfStatement() not working when passed a scope opener -- Fixed bug [#1876][sq-1876] : PSR2.Namespaces.UseDeclaration not giving error for use statements before the namespace declaration - - Adds a new PSR2.Namespaces.UseDeclaration.UseBeforeNamespace error message -- Fixed bug [#1881][sq-1881] : Generic.Arrays.ArrayIndent is indenting sub-arrays incorrectly when comma not used after the last value -- Fixed bug [#1882][sq-1882] : Conditional with missing braces confused by indirect variables -- Fixed bug [#1915][sq-1915] : JS tokenizer fails to tokenize regular expression proceeded by boolean not operator -- Fixed bug [#1920][sq-1920] : Directory exclude pattern improperly excludes files with names that start the same - - Thanks to [Jeff Puckett][@jpuck] for the patch -- Fixed bug [#1922][sq-1922] : Equal sign alignment check broken when list syntax used before assignment operator -- Fixed bug [#1925][sq-1925] : Generic.Formatting.MultipleStatementAlignment skipping assignments within closures -- Fixed bug [#1931][sq-1931] : Generic opening brace placement sniffs do not correctly support function return types -- Fixed bug [#1932][sq-1932] : Generic.ControlStructures.InlineControlStructure fixer moves new PHPCS annotations -- Fixed bug [#1938][sq-1938] : Generic opening brace placement sniffs incorrectly move PHPCS annotations - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#1939][sq-1939] : phpcs:set annotations do not cause the line they are on to be ignored - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#1949][sq-1949] : Squiz.PHP.DisallowMultipleAssignments false positive when using namespaces with static assignments -- Fixed bug [#1959][sq-1959] : SquizMultiLineFunctionDeclaration error when param has trailing comment - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#1963][sq-1963] : Squiz.Scope.MemberVarScope does not work for multiline member declaration - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#1971][sq-1971] : Short array list syntax not correctly tokenized if short array is the first content in a file -- Fixed bug [#1979][sq-1979] : Tokenizer does not change heredoc to nowdoc token if the start tag contains spaces -- Fixed bug [#1982][sq-1982] : Squiz.Arrays.ArrayDeclaration fixer sometimes puts a comma in front of the last array value -- Fixed bug [#1993][sq-1993] : PSR1/PSR2 not reporting or fixing short open tags -- Fixed bug [#1996][sq-1996] : Custom report paths don't work on case-sensitive filesystems -- Fixed bug [#2006][sq-2006] : Squiz.Functions.FunctionDeclarationArgumentSpacing fixer removes comment between parens when no args - - The SpacingAfterOpenHint error message has been removed - - It is replaced by the existing SpacingAfterOpen message - - The error message format for the SpacingAfterOpen and SpacingBeforeClose messages has been changed - - These used to contain 3 pieces of data, but now only contain 2 - - If you have customised the error messages of this sniff, please review your ruleset after upgrading -- Fixed bug [#2018][sq-2018] : Generic.Formatting.MultipleStatementAlignment does see PHP close tag as end of statement block - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#2027][sq-2027] : PEAR.NamingConventions.ValidFunctionName error when function name includes double underscore - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch - -[sq-1863]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1863 -[sq-1876]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1876 -[sq-1881]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1881 -[sq-1882]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1882 -[sq-1915]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1915 -[sq-1920]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1920 -[sq-1922]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1922 -[sq-1925]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1925 -[sq-1931]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1931 -[sq-1932]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1932 -[sq-1938]: https://github.com/squizlabs/PHP_CodeSniffer/pull/1938 -[sq-1939]: https://github.com/squizlabs/PHP_CodeSniffer/pull/1939 -[sq-1949]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1949 -[sq-1959]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1959 -[sq-1963]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1963 -[sq-1971]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1971 -[sq-1979]: https://github.com/squizlabs/PHP_CodeSniffer/pull/1979 -[sq-1982]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1982 -[sq-1993]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1993 -[sq-1996]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1996 -[sq-2006]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2006 -[sq-2018]: https://github.com/squizlabs/PHP_CodeSniffer/pull/2018 -[sq-2027]: https://github.com/squizlabs/PHP_CodeSniffer/issues/2027 - -## [3.2.3] - 2018-02-21 - -### Changed -- The new phpcs: comment syntax can now be prefixed with an at symbol ( @phpcs: ) - - This restores the behaviour of the previous syntax where these comments are ignored by doc generators -- The current PHP version ID is now used to generate cache files - - This ensures that only cache files generated by the current PHP version are selected - - This change fixes caching issues when using sniffs that produce errors based on the current PHP version -- A new Tokens::$phpcsCommentTokens array is now available for sniff developers to detect phpcs: comment syntax - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- The PEAR.Commenting.FunctionComment.Missing error message now includes the name of the function - - Thanks to [Yorman Arias][@cixtor] for the patch -- The PEAR.Commenting.ClassComment.Missing and Squiz.Commenting.ClassComment.Missing error messages now include the name of the class - - Thanks to [Yorman Arias][@cixtor] for the patch -- PEAR.Functions.FunctionCallSignature now only forces alignment at a specific tab stop while fixing - - It was enforcing this during checking, but this meant invalid errors if the OpeningIndent message was being muted - - This fixes incorrect errors when using the PSR2 standard with some code blocks -- Generic.Files.LineLength now ignores lines that only contain phpcs: annotation comments - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.Formatting.MultipleStatementAlignment now skips over arrays containing comments - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.PHP.Syntax now forces display_errors to ON when linting - - Thanks to [Raúl Arellano][@raul338] for the patch -- PSR2.Namespaces.UseDeclaration has improved syntax error handling and closure detection - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.PHP.CommentedOutCode now has improved comment block detection for improved accuracy - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.PHP.NonExecutableCode could fatal error while fixing file with syntax error -- Squiz.PHP.NonExecutableCode now detects unreachable code after a goto statement - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.WhiteSpace.LanguageConstructSpacing has improved syntax error handling while fixing - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Improved phpcs: annotation syntax handling for a number of sniffs - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Improved auto-fixing of files with incomplete comment blocks for various commenting sniffs - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch - -### Fixed -- Fixed test suite compatibility with PHPUnit 7 -- Fixed bug [#1793][sq-1793] : PSR2 forcing exact indent for function call opening statements -- Fixed bug [#1803][sq-1803] : Squiz.WhiteSpace.ScopeKeywordSpacing removes member var name while fixing if no space after scope keyword -- Fixed bug [#1817][sq-1817] : Blank line not enforced after control structure if comment on same line as closing brace -- Fixed bug [#1827][sq-1827] : A phpcs:enable comment is not tokenized correctly if it is outside a phpcs:disable block - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#1828][sq-1828] : Squiz.WhiteSpace.SuperfluousWhiteSpace ignoreBlankLines property ignores whitespace after single line comments - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#1840][sq-1840] : When a comment has too many asterisks, phpcbf gives FAILED TO FIX error -- Fixed bug [#1867][sq-1867] : Can't use phpcs:ignore where the next line is HTML -- Fixed bug [#1870][sq-1870] : Invalid warning in multiple assignments alignment with closure or anon class -- Fixed bug [#1890][sq-1890] : Incorrect Squiz.WhiteSpace.ControlStructureSpacing.NoLineAfterClose error between catch and finally statements -- Fixed bug [#1891][sq-1891] : Comment on last USE statement causes false positive for PSR2.Namespaces.UseDeclaration.SpaceAfterLastUse - - Thanks to [Matt Coleman][@iammattcoleman], [Daniel Hensby][@dhensby], and [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#1901][sq-1901] : Fixed PHPCS annotations in multi-line tab-indented comments + not ignoring whole line for phpcs:set - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch - -[sq-1793]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1793 -[sq-1803]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1803 -[sq-1817]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1817 -[sq-1827]: https://github.com/squizlabs/PHP_CodeSniffer/pull/1827 -[sq-1828]: https://github.com/squizlabs/PHP_CodeSniffer/pull/1828 -[sq-1840]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1840 -[sq-1867]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1867 -[sq-1870]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1870 -[sq-1890]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1890 -[sq-1891]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1891 -[sq-1901]: https://github.com/squizlabs/PHP_CodeSniffer/pull/1901 - -## [3.2.2] - 2017-12-20 - -### Changed -- Disabled STDIN detection on Windows - - This fixes a problem with IDE plugins (e.g., PHPStorm) hanging on Windows - -## [3.2.1] - 2017-12-18 - -### Changed -- Empty diffs are no longer followed by a newline character (request [#1781][sq-1781]) -- Generic.Functions.OpeningFunctionBraceKernighanRitchie no longer complains when the open brace is followed by a close tag - - This makes the sniff more useful when used in templates - - Thanks to [Joseph Zidell][@josephzidell] for the patch - -### Fixed -- Fixed problems with some scripts and plugins waiting for STDIN - - This was a notable problem with IDE plugins (e.g., PHPStorm) and build systems -- Fixed bug [#1782][sq-1782] : Incorrect detection of operator in ternary + anonymous function - -[sq-1781]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1781 -[sq-1782]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1782 - -## [3.2.0] - 2017-12-13 - -### Deprecated -- This release deprecates the @codingStandards comment syntax used for sending commands to PHP_CodeSniffer - - The existing syntax will continue to work in all version 3 releases, but will be removed in version 4 - - The comment formats have been replaced by a shorter syntax: - - @codingStandardsIgnoreFile becomes phpcs:ignoreFile - - @codingStandardsIgnoreStart becomes phpcs:disable - - @codingStandardsIgnoreEnd becomes phpcs:enable - - @codingStandardsIgnoreLine becomes phpcs:ignore - - @codingStandardsChangeSetting becomes phpcs:set - - The new syntax allows for additional developer comments to be added after a -- separator - - This is useful for describing why a code block is being ignored, or why a setting is being changed - - E.g., phpcs:disable -- This code block must be left as-is. - - Comments using the new syntax are assigned new comment token types to allow them to be detected: - - phpcs:ignoreFile has the token T_PHPCS_IGNORE_FILE - - phpcs:disable has the token T_PHPCS_DISABLE - - phpcs:enable has the token T_PHPCS_ENABLE - - phpcs:ignore has the token T_PHPCS_IGNORE - - phpcs:set has the token T_PHPCS_SET - -### Changed -- The phpcs:disable and phpcs:ignore comments can now selectively ignore specific sniffs (request [#604][sq-604]) - - E.g., phpcs:disable Generic.Commenting.Todo.Found for a specific message - - E.g., phpcs:disable Generic.Commenting.Todo for a whole sniff - - E.g., phpcs:disable Generic.Commenting for a whole category of sniffs - - E.g., phpcs:disable Generic for a whole standard - - Multiple sniff codes can be specified by comma separating them - - E.g., phpcs:disable Generic.Commenting.Todo,PSR1.Files -- @codingStandardsIgnoreLine comments now only ignore the following line if they are on a line by themselves - - If they are at the end of an existing line, they will only ignore the line they are on - - Stops some lines from accidentally being ignored - - Same rule applies for the new phpcs:ignore comment syntax -- PSR1.Files.SideEffects now respects the new phpcs:disable comment syntax - - The sniff will no longer check any code that is between phpcs:disable and phpcs:enable comments - - The sniff does not support phpcs:ignore; you must wrap code structures with disable/enable comments - - Previously, there was no way to have this sniff ignore parts of a file -- Fixed a problem where PHPCS would sometimes hang waiting for STDIN, or read incomplete versions of large files - - Thanks to [Arne Jørgensen][@arnested] for the patch -- Array properties specified in ruleset files now have their keys and values trimmed - - This saves having to do this in individual sniffs and stops errors introduced by whitespace in rulesets - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Added phpcs.xsd to allow validation of ruleset XML files - - Thanks to [Renaat De Muynck][@renaatdemuynck] for the contribution -- File paths specified using --stdin-path can now point to fake file locations (request [#1488][sq-1488]) - - Previously, STDIN files using fake file paths were excluded from checking -- Setting an empty basepath (--basepath=) on the CLI will now clear a basepath set directly in a ruleset - - Thanks to [Xaver Loppenstedt][@xalopp] for the patch -- Ignore patterns are now checked on symlink target paths instead of symlink source paths - - Restores previous behaviour of this feature -- Metrics were being double counted when multiple sniffs were recording the same metric -- Added support for bash process substitution - - Thanks to [Scott Dutton][@exussum12] for the contribution -- Files included in the cache file code hash are now sorted to aid in cache file reuse across servers -- Windows BAT files can now be used outside a PEAR install - - You must have the path to PHP set in your PATH environment variable - - Thanks to [Joris Debonnet][@JorisDebonnet] for the patch -- The JS unsigned right shift assignment operator is now properly classified as an assignment operator - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- The AbstractVariableSniff abstract sniff now supports anonymous classes and nested functions - - Also fixes an issue with Squiz.Scope.MemberVarScope where member vars of anonymous classes were not being checked -- Added AbstractArraySniff to make it easier to create sniffs that check array formatting - - Allows for checking of single and multi line arrays easily - - Provides a parsed structure of the array including positions of keys, values, and double arrows -- Added Generic.Arrays.ArrayIndent to enforce a single tab stop indent for array keys in multi-line arrays - - Also ensures the close brace is on a new line and indented to the same level as the original statement - - Allows for the indent size to be set using an "indent" property of the sniff -- Added Generic.PHP.DiscourageGoto to warn about the use of the GOTO language construct - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the contribution -- Generic.Debug.ClosureLinter was not running the gjslint command - - Thanks to [Michał Bundyra][@michalbundyra] for the patch -- Generic.WhiteSpace.DisallowSpaceIndent now fixes space indents in multi-line block comments - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.WhiteSpace.DisallowSpaceIndent now fixes mixed space/tab indents more accurately - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.WhiteSpace.DisallowTabIndent now fixes tab indents in multi-line block comments - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- PEAR.Functions.FunctionDeclaration no longer errors when a function declaration is the first content in a JS file - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- PEAR.Functions.FunctionCallSignature now requires the function name to be indented to an exact tab stop - - If the function name is not the start of the statement, the opening statement must be indented correctly instead - - Added a new fixable error code PEAR.Functions.FunctionCallSignature.OpeningIndent for this error -- Squiz.Functions.FunctionDeclarationArgumentSpacing is no longer confused about comments in function declarations - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.PHP.NonExecutableCode error messages now indicate which line the code block ending is on - - Makes it easier to identify where the code block exited or returned - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.Commenting.FunctionComment now supports nullable type hints -- Squiz.Commenting.FunctionCommentThrowTag no longer assigns throw tags inside anon classes to the enclosing function -- Squiz.WhiteSpace.SemicolonSpacing now ignores semicolons used for empty statements inside FOR conditions - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.ControlStructures.ControlSignature now allows configuring the number of spaces before the colon in alternative syntax - - Override the 'requiredSpacesBeforeColon' setting in a ruleset.xml file to change - - Default remains at 1 - - Thanks to [Nikola Kovacs][@nkovacs] for the patch -- The Squiz standard now ensures array keys are indented 4 spaces from the main statement - - Previously, this standard aligned keys 1 space from the start of the array keyword -- The Squiz standard now ensures array end braces are aligned with the main statement - - Previously, this standard aligned the close brace with the start of the array keyword -- The standard for PHP_CodeSniffer itself now enforces short array syntax -- The standard for PHP_CodeSniffer itself now uses the Generic.Arrays/ArrayIndent sniff rules -- Improved fixer conflicts and syntax error handling for a number of sniffs - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch - -### Fixed -- Fixed bug [#1462][sq-1462] : Error processing cyrillic strings in Tokenizer -- Fixed bug [#1573][sq-1573] : Squiz.WhiteSpace.LanguageConstructSpacing does not properly check for tabs and newlines - - Thanks to [Michał Bundyra][@michalbundyra] for the patch -- Fixed bug [#1590][sq-1590] : InlineControlStructure CBF issue while adding braces to an if that's returning a nested function -- Fixed bug [#1718][sq-1718] : Unclosed strings at EOF sometimes tokenized as T_WHITESPACE by the JS tokenizer -- Fixed bug [#1731][sq-1731] : Directory exclusions do not work as expected when a single file name is passed to phpcs -- Fixed bug [#1737][sq-1737] : Squiz.CSS.EmptyStyleDefinition sees comment as style definition and fails to report error -- Fixed bug [#1746][sq-1746] : Very large reports can sometimes become garbled when using the parallel option -- Fixed bug [#1747][sq-1747] : Squiz.Scope.StaticThisUsage incorrectly looking inside closures -- Fixed bug [#1757][sq-1757] : Unknown type hint "object" in Squiz.Commenting.FunctionComment -- Fixed bug [#1758][sq-1758] : PHPCS gets stuck creating file list when processing circular symlinks -- Fixed bug [#1761][sq-1761] : Generic.WhiteSpace.ScopeIndent error on multi-line function call with static closure argument -- Fixed bug [#1762][sq-1762] : `Generic.WhiteSpace.Disallow[Space/Tab]Indent` not inspecting content before open tag - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#1769][sq-1769] : Custom "define" function triggers a warning about declaring new symbols -- Fixed bug [#1776][sq-1776] : Squiz.Scope.StaticThisUsage incorrectly looking inside anon classes -- Fixed bug [#1777][sq-1777] : Generic.WhiteSpace.ScopeIndent incorrect indent errors when self called function proceeded by comment - -[sq-604]: https://github.com/squizlabs/PHP_CodeSniffer/issues/604 -[sq-1462]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1462 -[sq-1488]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1488 -[sq-1573]: https://github.com/squizlabs/PHP_CodeSniffer/pull/1573 -[sq-1590]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1590 -[sq-1718]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1718 -[sq-1731]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1731 -[sq-1737]: https://github.com/squizlabs/PHP_CodeSniffer/pull/1737 -[sq-1746]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1746 -[sq-1747]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1747 -[sq-1757]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1757 -[sq-1758]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1758 -[sq-1761]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1761 -[sq-1762]: https://github.com/squizlabs/PHP_CodeSniffer/pull/1762 -[sq-1769]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1769 -[sq-1776]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1776 -[sq-1777]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1777 - -## [3.1.1] - 2017-10-17 - -### Changed -- Restored preference of non-dist files over dist files for phpcs.xml and phpcs.xml.dist - - The order that the files are searched is now: .phpcs.xml, phpcs.xml, .phpcs.xml.dist, phpcs.xml.dist - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Progress output now correctly shows skipped files -- Progress output now shows 100% when the file list has finished processing (request [#1697][sq-1697]) -- Stopped some IDEs complaining about testing class aliases - - Thanks to [Vytautas Stankus][@svycka] for the patch -- Squiz.Commenting.InlineComment incorrectly identified comment blocks in some cases, muting some errors - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch - -### Fixed -- Fixed bug [#1512][sq-1512] : PEAR.Functions.FunctionCallSignature enforces spaces when no arguments if required spaces is not 0 -- Fixed bug [#1522][sq-1522] : Squiz Arrays.ArrayDeclaration and Strings.ConcatenationSpacing fixers causing parse errors with here/nowdocs -- Fixed bug [#1570][sq-1570] : Squiz.Arrays.ArrayDeclaration fixer removes comments between array keyword and open parentheses -- Fixed bug [#1604][sq-1604] : File::isReference has problems with some bitwise operators and class property references - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#1645][sq-1645] : Squiz.Commenting.InlineComment will fail to fix comments at the end of the file - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#1656][sq-1656] : Using the --sniffs argument has a problem with case sensitivity -- Fixed bug [#1657][sq-1657] : Uninitialized string offset: 0 when sniffing CSS -- Fixed bug [#1669][sq-1669] : Temporary expression proceeded by curly brace is detected as function call -- Fixed bug [#1681][sq-1681] : Huge arrays are super slow to scan with Squiz.Arrays.ArrayDeclaration sniff -- Fixed bug [#1694][sq-1694] : Squiz.Arrays.ArrayBracketSpacing is removing some comments during fixing - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#1702][sq-1702] : Generic.WhiteSpaceDisallowSpaceIndent fixer bug when line only contains superfluous whitespace - -[sq-1512]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1512 -[sq-1522]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1522 -[sq-1570]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1570 -[sq-1604]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1604 -[sq-1645]: https://github.com/squizlabs/PHP_CodeSniffer/pull/1645 -[sq-1656]: https://github.com/squizlabs/PHP_CodeSniffer/pull/1656 -[sq-1657]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1657 -[sq-1669]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1669 -[sq-1681]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1681 -[sq-1694]: https://github.com/squizlabs/PHP_CodeSniffer/pull/1694 -[sq-1697]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1697 -[sq-1702]: https://github.com/squizlabs/PHP_CodeSniffer/pull/1702 - -## [3.1.0] - 2017-09-20 - -### Changed -- This release includes a change to support newer versions of PHPUnit (versions 4, 5, and 6 are now supported) - - The custom PHP_CodeSniffer test runner now requires a bootstrap file - - Developers with custom standards using the PHP_CodeSniffer test runner will need to do one of the following: - - run your unit tests from the PHP_CodeSniffer root dir so the bootstrap file is included - - specify the PHP_CodeSniffer bootstrap file on the command line: `phpunit --bootstrap=/path/to/phpcs/tests/bootstrap.php` - - require the PHP_CodeSniffer bootstrap file from your own bootstrap file - - If you don't run PHP_CodeSniffer unit tests, this change will not affect you - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- A phpcs.xml or phpcs.xml.dist file now takes precedence over the default_standard config setting - - Thanks to [Björn Fischer][@Fischer-Bjoern] for the patch -- Both phpcs.xml and phpcs.xml.dist files can now be prefixed with a dot (request [#1566][sq-1566]) - - The order that the files are searched is: .phpcs.xml, .phpcs.xml.dist, phpcs.xml, phpcs.xml.dist -- The autoloader will now search for files during unit tests runs from the same locations as during normal phpcs runs - - Allows for easier unit testing of custom standards that use helper classes or custom namespaces -- Include patterns for sniffs now use OR logic instead of AND logic - - Previously, a file had to be in each of the include patterns to be processed by a sniff - - Now, a file has to only be in at least one of the patterns - - This change reflects the original intention of the feature -- PHPCS will now follow symlinks under the list of checked directories - - This previously only worked if you specified the path to a symlink on the command line -- Output from --config-show, --config-set, and --config-delete now includes the path to the loaded config file -- PHPCS now cleanly exits if its config file is not readable - - Previously, a combination of PHP notices and PHPCS errors would be generated -- Comment tokens that start with /** are now always tokenized as docblocks - - Thanks to [Michał Bundyra][@michalbundyra] for the patch -- The PHP-supplied T_YIELD and T_YIELD_FROM token have been replicated for older PHP versions - - Thanks to [Michał Bundyra][@michalbundyra] for the patch -- Added new Generic.CodeAnalysis.AssignmentInCondition sniff to warn about variable assignments inside conditions - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the contribution -- Added Generic.Files.OneObjectStructurePerFile sniff to ensure there is a single class/interface/trait per file - - Thanks to [Mponos George][@gmponos] for the contribution -- Function call sniffs now check variable function names and self/static object creation - - Specific sniffs are Generic.Functions.FunctionCallArgumentSpacing, PEAR.Functions.FunctionCallSignature, and PSR2.Methods.FunctionCallSignature - - Thanks to [Michał Bundyra][@michalbundyra] for the patch -- Generic.Files.LineLength can now be configured to ignore all comment lines, no matter their length - - Set the ignoreComments property to TRUE (default is FALSE) in your ruleset.xml file to enable this - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.PHP.LowerCaseKeyword now checks self, parent, yield, yield from, and closure (function) keywords - - Thanks to [Michał Bundyra][@michalbundyra] for the patch -- PEAR.Functions.FunctionDeclaration now removes a blank line if it creates one by moving the curly brace during fixing -- Squiz.Commenting.FunctionCommentThrowTag now supports PHP 7.1 multi catch exceptions -- Squiz.Formatting.OperatorBracket no longer throws errors for PHP 7.1 multi catch exceptions -- Squiz.Commenting.LongConditionClosingComment now supports finally statements -- Squiz.Formatting.OperatorBracket now correctly fixes pipe separated flags -- Squiz.Formatting.OperatorBracket now correctly fixes statements containing short array syntax -- Squiz.PHP.EmbeddedPhp now properly fixes cases where the only content in an embedded PHP block is a comment - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.WhiteSpace.ControlStructureSpacing now ignores comments when checking blank lines at the top of control structures -- Squiz.WhiteSpace.ObjectOperatorSpacing now detects and fixes spaces around double colons - - Thanks to [Julius Šmatavičius][@bondas83] for the patch -- Squiz.WhiteSpace.MemberVarSpacing can now be configured to check any number of blank lines between member vars - - Set the spacing property (default is 1) in your ruleset.xml file to set the spacing -- Squiz.WhiteSpace.MemberVarSpacing can now be configured to check a different number of blank lines before the first member var - - Set the spacingBeforeFirst property (default is 1) in your ruleset.xml file to set the spacing -- Added a new PHP_CodeSniffer\Util\Tokens::$ooScopeTokens static member var for quickly checking object scope - - Includes T_CLASS, T_ANON_CLASS, T_INTERFACE, and T_TRAIT - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- PHP_CodeSniffer\Files\File::findExtendedClassName() now supports extended interfaces - - Thanks to [Martin Hujer][@mhujer] for the patch - -### Fixed -- Fixed bug [#1550][sq-1550] : Squiz.Commenting.FunctionComment false positive when function contains closure -- Fixed bug [#1577][sq-1577] : Generic.InlineControlStructureSniff breaks with a comment between body and condition in do while loops -- Fixed bug [#1581][sq-1581] : Sniffs not loaded when one-standard directories are being registered in installed_paths -- Fixed bug [#1591][sq-1591] : Autoloader failing to load arbitrary files when installed_paths only set via a custom ruleset -- Fixed bug [#1605][sq-1605] : Squiz.WhiteSpace.OperatorSpacing false positive on unary minus after comment - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#1615][sq-1615] : Uncaught RuntimeException when phpcbf fails to fix files -- Fixed bug [#1637][sq-1637] : Generic.WhiteSpaceScopeIndent closure argument indenting incorrect with multi-line strings -- Fixed bug [#1638][sq-1638] : Squiz.WhiteSpace.ScopeClosingBrace closure argument indenting incorrect with multi-line strings -- Fixed bug [#1640][sq-1640] : Squiz.Strings.DoubleQuoteUsage replaces tabs with spaces when fixing - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch - -[sq-1550]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1550 -[sq-1566]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1566 -[sq-1577]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1577 -[sq-1581]: https://github.com/squizlabs/PHP_CodeSniffer/pull/1581 -[sq-1591]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1591 -[sq-1605]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1605 -[sq-1615]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1615 -[sq-1637]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1637 -[sq-1638]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1638 -[sq-1640]: https://github.com/squizlabs/PHP_CodeSniffer/pull/1640 - -## [3.0.2] - 2017-07-18 - -### Changed -- The code report now gracefully handles tokenizer exceptions -- The phpcs and phpcbf scripts are now the only places that exit() in the code - - This allows for easier usage of core PHPCS functions from external scripts - - If you are calling Runner::runPHPCS() or Runner::runPHPCBF() directly, you will get back the full range of exit codes - - If not, catch the new DeepExitException to get the error message ($e->getMessage()) and exit code ($e->getCode()); -- NOWDOC tokens are now considered conditions, just as HEREDOC tokens are - - This makes it easier to find the start and end of a NOWDOC from any token within it - - Thanks to [Michał Bundyra][@michalbundyra] for the patch -- Custom autoloaders are now only included once in case multiple standards are using the same one - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Improved tokenizing of fallthrough CASE and DEFAULT statements that share a closing statement and use curly braces -- Improved the error message when Squiz.ControlStructures.ControlSignature detects a newline after the closing parenthesis - -### Fixed -- Fixed a problem where the source report was not printing the correct number of errors found -- Fixed a problem where the --cache=/path/to/cachefile CLI argument was not working -- Fixed bug [#1465][sq-1465] : Generic.WhiteSpace.ScopeIndent reports incorrect errors when indenting double arrows in short arrays -- Fixed bug [#1478][sq-1478] : Indentation in fallthrough CASE that contains a closure -- Fixed bug [#1497][sq-1497] : Fatal error if composer prepend-autoloader is set to false - - Thanks to [Kunal Mehta][@legoktm] for the patch -- Fixed bug [#1503][sq-1503] : Alternative control structure syntax not always recognized as scoped -- Fixed bug [#1523][sq-1523] : Fatal error when using the --suffix argument - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#1526][sq-1526] : Use of basepath setting can stop PHPCBF being able to write fixed files -- Fixed bug [#1530][sq-1530] : Generic.WhiteSpace.ScopeIndent can increase indent too much for lines within code blocks -- Fixed bug [#1547][sq-1547] : Wrong token type for backslash in use function - - Thanks to [Michał Bundyra][@michalbundyra] for the patch -- Fixed bug [#1549][sq-1549] : Squiz.PHP.EmbeddedPhp fixer conflict with // comment before PHP close tag - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#1560][sq-1560] : Squiz.Commenting.FunctionComment fatal error when fixing additional param comment lines that have no indent - -[sq-1465]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1465 -[sq-1478]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1478 -[sq-1497]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1497 -[sq-1503]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1503 -[sq-1523]: https://github.com/squizlabs/PHP_CodeSniffer/pull/1523 -[sq-1526]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1526 -[sq-1530]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1530 -[sq-1547]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1547 -[sq-1549]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1549 -[sq-1560]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1560 - -## [3.0.1] - 2017-06-14 - -### Security -- This release contains a fix for a security advisory related to the improper handling of a shell command - - A properly crafted filename would allow for arbitrary code execution when using the --filter=gitmodified command line option - - All version 3 users are encouraged to upgrade to this version, especially if you are checking 3rd-party code - - e.g., you run PHPCS over libraries that you did not write - - e.g., you provide a web service that runs PHPCS over user-uploaded files or 3rd-party repositories - - e.g., you allow external tool paths to be set by user-defined values - - If you are unable to upgrade but you check 3rd-party code, ensure you are not using the Git modified filter - - This advisory does not affect PHP_CodeSniffer version 2. - - Thanks to [Sergei Morozov][@morozov] for the report and patch - -### Changed -- Arguments on the command line now override or merge with those specified in a ruleset.xml file in all cases -- PHPCS now stops looking for a phpcs.xml file as soon as one is found, favoring the closest one to the current dir -- Added missing help text for the --stdin-path CLI option to --help -- Re-added missing help text for the --file-list and --bootstrap CLI options to --help -- Runner::runPHPCS() and Runner::runPHPCBF() now return an exit code instead of exiting directly (request [#1484][sq-1484]) -- The Squiz standard now enforces short array syntax by default -- The autoloader is now working correctly with classes created with class_alias() -- The autoloader will now search for files inside all directories in the installed_paths config var - - This allows autoloading of files inside included custom coding standards without manually requiring them -- You can now specify a namespace for a custom coding standard, used by the autoloader to load non-sniff helper files - - Also used by the autoloader to help other standards directly include sniffs for your standard - - Set the value to the namespace prefix you are using for sniff files (everything up to \Sniffs\) - - e.g., if your namespace format is MyProject\CS\Standard\Sniffs\Category set the namespace to MyProject\CS\Standard - - If omitted, the namespace is assumed to be the same as the directory name containing the ruleset.xml file - - The namespace is set in the ruleset tag of the ruleset.xml file - - e.g., ruleset name="My Coding Standard" namespace="MyProject\CS\Standard" -- Rulesets can now specify custom autoloaders using the new autoload tag - - Autoloaders are included while the ruleset is being processed and before any custom sniffs are included - - Allows for very custom autoloading of helper classes well before the boostrap files are included -- The PEAR standard now includes Squiz.Commenting.DocCommentAlignment - - It previously broke comments onto multiple lines, but didn't align them - -### Fixed -- Fixed a problem where excluding a message from a custom standard's own sniff would exclude the whole sniff - - This caused some PSR2 errors to be under-reported -- Fixed bug [#1442][sq-1442] : T_NULLABLE detection not working for nullable parameters and return type hints in some cases -- Fixed bug [#1447][sq-1447] : Running the unit tests with a PHPUnit config file breaks the test suite - - Unknown arguments were not being handled correctly, but are now stored in $config->unknown -- Fixed bug [#1449][sq-1449] : Generic.Classes.OpeningBraceSameLine doesn't detect comment before opening brace - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#1450][sq-1450] : Coding standard located under an installed_path with the same directory name throws an error - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#1451][sq-1451] : Sniff exclusions/restrictions don't work with custom sniffs unless they use the PHP_CodeSniffer NS -- Fixed bug [#1454][sq-1454] : Squiz.WhiteSpace.OperatorSpacing is not checking spacing on either side of a short ternary operator - - Thanks to [Mponos George][@gmponos] for the patch -- Fixed bug [#1495][sq-1495] : Setting an invalid installed path breaks all commands -- Fixed bug [#1496][sq-1496] : Squiz.Strings.DoubleQuoteUsage not unescaping dollar sign when fixing - - Thanks to [Michał Bundyra][@michalbundyra] for the patch -- Fixed bug [#1501][sq-1501] : Interactive mode is broken -- Fixed bug [#1504][sq-1504] : PSR2.Namespaces.UseDeclaration hangs fixing use statement with no trailing code - -[sq-1447]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1447 -[sq-1449]: https://github.com/squizlabs/PHP_CodeSniffer/pull/1449 -[sq-1450]: https://github.com/squizlabs/PHP_CodeSniffer/pull/1450 -[sq-1451]: https://github.com/squizlabs/PHP_CodeSniffer/pull/1451 -[sq-1454]: https://github.com/squizlabs/PHP_CodeSniffer/pull/1454 -[sq-1484]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1484 -[sq-1495]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1495 -[sq-1496]: https://github.com/squizlabs/PHP_CodeSniffer/pull/1496 -[sq-1501]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1501 -[sq-1504]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1504 - -## [2.9.1] - 2017-05-22 - -### Fixed -- Fixed bug [#1442][sq-1442] : T_NULLABLE detection not working for nullable parameters and return type hints in some cases -- Fixed bug [#1448][sq-1448] : Generic.Classes.OpeningBraceSameLine doesn't detect comment before opening brace - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch - -[sq-1442]: https://github.com/squizlabs/PHP_CodeSniffer/pull/1442 -[sq-1448]: https://github.com/squizlabs/PHP_CodeSniffer/pull/1448 - -## [3.0.0] - 2017-05-04 - -### Changed -- Added an --ignore-annotations command line argument to ignore all @codingStandards annotations in code comments (request [#811][sq-811]) -- This allows you to force errors to be shown that would otherwise be ignored by code comments - - Also stop files being able to change sniff properties midway through processing -- An error is now reported if no sniffs were registered to be run (request [#1129][sq-1129]) -- The autoloader will now search for files inside the directory of any loaded coding standard - - This allows autoloading of any file inside a custom coding standard without manually requiring them - - Ensure your namespace begins with your coding standard's directory name and follows PSR-4 - - e.g., StandardName\Sniffs\CategoryName\AbstractHelper or StandardName\Helpers\StringSniffHelper -- Fixed an error where STDIN was sometimes not checked when using the --parallel CLI option -- The is_closure index has been removed from the return value of File::getMethodProperties() - - This value was always false because T_FUNCTION tokens are never closures - - Closures have a token type of T_CLOSURE -- The File::isAnonymousFunction() method has been removed - - This function always returned false because it only accepted T_FUNCTION tokens, which are never closures - - Closures have a token type of T_CLOSURE -- Includes all changes from the 2.9.0 release - -### Fixed -- Fixed bug [#834][sq-834] : PSR2.ControlStructures.SwitchDeclaration does not handle if branches with returns - - Thanks to [Fabian Wiget][@fabacino] for the patch - -[sq-811]: https://github.com/squizlabs/PHP_CodeSniffer/issues/811 -[sq-834]: https://github.com/squizlabs/PHP_CodeSniffer/issues/834 -[sq-1129]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1129 - -## [3.0.0RC4] - 2017-03-02 - -### Security -- This release contains a fix for a security advisory related to the improper handling of shell commands - - Uses of shell_exec() and exec() were not escaping filenames and configuration settings in most cases - - A properly crafted filename or configuration option would allow for arbitrary code execution when using some features - - All users are encouraged to upgrade to this version, especially if you are checking 3rd-party code - - e.g., you run PHPCS over libraries that you did not write - - e.g., you provide a web service that runs PHPCS over user-uploaded files or 3rd-party repositories - - e.g., you allow external tool paths to be set by user-defined values - - If you are unable to upgrade but you check 3rd-party code, ensure you are not using the following features: - - The diff report - - The notify-send report - - The Generic.PHP.Syntax sniff - - The Generic.Debug.CSSLint sniff - - The Generic.Debug.ClosureLinter sniff - - The Generic.Debug.JSHint sniff - - The Squiz.Debug.JSLint sniff - - The Squiz.Debug.JavaScriptLint sniff - - The Zend.Debug.CodeAnalyzer sniff - - Thanks to [Klaus Purer][@klausi] for the report - -### Changed -- The indent property of PEAR.Classes.ClassDeclaration has been removed - - Instead of calculating the indent of the brace, it just ensures the brace is aligned with the class keyword - - Other sniffs can be used to ensure the class itself is indented correctly -- Invalid exclude rules inside a ruleset.xml file are now ignored instead of potentially causing out of memory errors - - Using the -vv command line argument now also shows the invalid exclude rule as XML -- Includes all changes from the 2.8.1 release - -### Fixed -- Fixed bug [#1333][sq-1333] : The new autoloader breaks some frameworks with custom autoloaders -- Fixed bug [#1334][sq-1334] : Undefined offset when explaining standard with custom sniffs - -[sq-1333]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1333 -[sq-1334]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1334 - -## [3.0.0RC3] - 2017-02-02 - -### Changed -- Added support for ES6 class declarations - - Previously, these class were tokenized as JS objects but are now tokenized as normal T_CLASS structures -- Added support for ES6 method declarations, where the "function" keyword is not used - - Previously, these methods were tokenized as JS objects (fixes bug [#1251][sq-1251]) - - The name of the ES6 method is now assigned the T_FUNCTION keyword and treated like a normal function - - Custom sniffs that support JS and listen for T_FUNCTION tokens can't assume the token represents the word "function" - - Check the contents of the token first, or use $phpcsFile->getDeclarationName($stackPtr) if you just want its name - - There is no change for custom sniffs that only check PHP code -- PHPCBF exit codes have been changed so they are now more useful (request [#1270][sq-1270]) - - Exit code 0 is now used to indicate that no fixable errors were found, and so nothing was fixed - - Exit code 1 is now used to indicate that all fixable errors were fixed correctly - - Exit code 2 is now used to indicate that PHPCBF failed to fix some of the fixable errors it found - - Exit code 3 is now used for general script execution errors -- Added PEAR.Commenting.FileComment.ParamCommentAlignment to check alignment of multi-line param comments -- Includes all changes from the 2.8.0 release - -### Fixed -- Fixed an issue where excluding a file using a @codingStandardsIgnoreFile comment would produce errors - - For PHPCS, it would show empty files being processed - - For PHPCBF, it would produce a PHP error -- Fixed bug [#1233][sq-1233] : Can't set config data inside ruleset.xml file -- Fixed bug [#1241][sq-1241] : CodeSniffer.conf not working with 3.x PHAR file - -[sq-1233]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1233 -[sq-1241]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1241 -[sq-1251]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1251 -[sq-1270]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1270 - -## [3.0.0RC2] - 2016-11-30 - -### Changed -- Made the Runner class easier to use with wrapper scripts -- Full usage information is no longer printed when a usage error is encountered (request [#1186][sq-1186]) - - Makes it a lot easier to find and read the error message that was printed -- Includes all changes from the 2.7.1 release - -### Fixed -- Fixed an undefined var name error that could be produced while running PHPCBF -- Fixed bug [#1167][sq-1167] : 3.0.0RC1 PHAR does not work with PEAR standard -- Fixed bug [#1208][sq-1208] : Excluding files doesn't work when using STDIN with a filename specified - -[sq-1167]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1167 -[sq-1186]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1186 -[sq-1208]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1208 - -## [3.0.0RC1] - 2016-09-02 - -### Changed -- Progress output now shows E and W in green when a file has fixable errors or warnings - - Only supported if colors are enabled -- PHPCBF no longer produces verbose output by default (request [#699][sq-699]) - - Use the -v command line argument to show verbose fixing output - - Use the -q command line argument to disable verbose information if enabled by default -- PHPBF now prints a summary report after fixing files - - Report shows files that were fixed, how many errors were fixed, and how many remain -- PHPCBF now supports the -p command line argument to print progress information - - Prints a green F for files where fixes occurred - - Prints a red E for files that could not be fixed due to an error - - Use the -q command line argument to disable progress information if enabled by default -- Running unit tests using --verbose no longer throws errors -- Includes all changes from the 2.7.0 release - -### Fixed -- Fixed shell error appearing on some systems when trying to find executable paths - -[sq-699]: https://github.com/squizlabs/PHP_CodeSniffer/issues/699 - -## [3.0.0a1] - 2016-07-20 - -### Changed -- Min PHP version increased from 5.1.2 to 5.4.0 -- Added optional caching of results between runs (request [#530][sq-530]) - - Enable the cache by using the --cache command line argument - - If you want the cache file written somewhere specific, use --cache=/path/to/cacheFile - - Use the command "phpcs --config-set cache true" to turn caching on by default - - Use the --no-cache command line argument to disable caching if it is being turned on automatically -- Add support for checking file in parallel (request [#421][sq-421]) - - Tell PHPCS how many files to check at once using the --parallel command line argument - - To check 100 files at once, using --parallel=100 - - To disable parallel checking if it is being turned on automatically, use --parallel=1 - - Requires PHP to be compiled with the PCNTL package -- The default encoding has been changed from iso-8859-1 to utf-8 (request [#760][sq-760]) - - The --encoding command line argument still works, but you no longer have to set it to process files as utf-8 - - If encoding is being set to utf-8 in a ruleset or on the CLI, it can be safely removed - - If the iconv PHP extension is not installed, standard non-multibyte aware functions will be used -- Added a new "code" report type to show a code snippet for each error (request [#419][sq-419]) - - The line containing the error is printed, along with 2 lines above and below it to show context - - The location of the errors is underlined in the code snippet if you also use --colors - - Use --report=code to generate this report -- Added support for custom filtering of the file list - - Developers can write their own filter classes to perform custom filtering of the list before the run starts - - Use the command line arg `--filter=/path/to/filter.php` to specify a filter to use - - Extend \PHP_CodeSniffer\Filters\Filter to also support the core PHPCS extension and path filtering - - Extend \PHP_CodeSniffer\Filters\ExactMatch to get the core filtering and the ability to use blacklists and whitelists - - The included \PHP_CodeSniffer\Filters\GitModified filter is a good example of an ExactMatch filter -- Added support for only checking files that have been locally modified or added in a git repo - - Use --filter=gitmodified to check these files - - You still need to give PHPCS a list of files or directories in which to check -- Added automatic discovery of executable paths (request [#571][sq-571]) - - Thanks to [Sergei Morozov][@morozov] for the patch -- You must now pass "-" on the command line to have PHPCS wait for STDIN - - E.g., phpcs --standard=PSR2 - - - You can still pipe content via STDIN as normal as PHPCS will see this and process it - - But without the "-", PHPCS will throw an error if no content or files are passed to it -- All PHP errors generated by sniffs are caught, re-thrown as exceptions, and reported in the standard error reports - - This should stop bugs inside sniffs causing infinite loops - - Also stops invalid reports being produced as errors don't print to the screen directly -- Sniff codes are no longer optional - - If a sniff throws an error or a warning, it must specify an internal code for that message -- The installed_paths config setting can now point directly to a standard - - Previously, it had to always point to the directory in which the standard lives -- Multiple reports can now be specified using the --report command line argument - - Report types are separated by commas - - E.g., --report=full,summary,info - - Previously, you had to use one argument for each report such as --report=full --report=summary --report=info -- You can now set the severity, message type, and exclude patterns for an entire sniff, category, or standard - - Previously, this was only available for a single message -- You can now include a single sniff code in a ruleset instead of having to include an entire sniff - - Including a sniff code will automatically exclude all other messages from that sniff - - If the sniff is already included by an imported standard, set the sniff severity to 0 and include the specific message you want -- PHPCBF no longer uses patch - - Files are now always overwritten - - The --no-patch option has been removed -- Added a --basepath option to strip a directory from the front of file paths in output (request [#470][sq-470]) - - The basepath is absolute or relative to the current directory - - E.g., to output paths relative to current dir in reports, use --basepath=. -- Ignore rules are now checked when using STDIN (request [#733][sq-733]) -- Added an include-pattern tag to rulesets to include a sniff for specific files and folders only (request [#656][sq-656]) - - This is the exact opposite of the exclude-pattern tag - - This option is only usable within sniffs, not globally like exclude-patterns are -- Added a new -m option to stop error messages from being recorded, which saves a lot of memory - - PHPCBF always uses this setting to reduce memory as it never outputs error messages - - Setting the $recordErrors member var inside custom report classes is no longer supported (use -m instead) -- Exit code 2 is now used to indicate fixable errors were found (request [#930][sq-930]) - - Exit code 3 is now used for general script execution errors - - Exit code 1 is used to indicate that coding standard errors were found, but none are fixable - - Exit code 0 is unchanged and continues to mean no coding standard errors found - -### Removed -- The included PHPCS standard has been removed - - All rules are now found inside the phpcs.xml.dist file - - Running "phpcs" without any arguments from a git clone will use this ruleset -- The included SVN pre-commit hook has been removed - - Hooks for version control systems will no longer be maintained within the PHPCS project - -[sq-419]: https://github.com/squizlabs/PHP_CodeSniffer/issues/419 -[sq-421]: https://github.com/squizlabs/PHP_CodeSniffer/issues/421 -[sq-470]: https://github.com/squizlabs/PHP_CodeSniffer/issues/470 -[sq-530]: https://github.com/squizlabs/PHP_CodeSniffer/issues/530 -[sq-571]: https://github.com/squizlabs/PHP_CodeSniffer/pull/571 -[sq-656]: https://github.com/squizlabs/PHP_CodeSniffer/issues/656 -[sq-733]: https://github.com/squizlabs/PHP_CodeSniffer/issues/733 -[sq-760]: https://github.com/squizlabs/PHP_CodeSniffer/issues/760 -[sq-930]: https://github.com/squizlabs/PHP_CodeSniffer/issues/930 - -## [2.9.0] - 2017-05-04 - -### Changed -- Added Generic.Debug.ESLint sniff to run ESLint over JS files and report errors - - Set eslint path using: phpcs --config-set eslint_path /path/to/eslint - - Thanks to [Ryan McCue][@rmccue] for the contribution -- T_POW is now properly considered an arithmetic operator, and will be checked as such - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- T_SPACESHIP and T_COALESCE are now properly considered comparison operators, and will be checked as such - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.PHP.DisallowShortOpenTag now warns about possible short open tags even when short_open_tag is set to OFF - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.WhiteSpace.DisallowTabIndent now finds and fixes improper use of spaces anywhere inside the line indent - - Previously, only the first part of the indent was used to determine the indent type - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- PEAR.Commenting.ClassComment now supports checking of traits as well as classes and interfaces - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.Commenting.FunctionCommentThrowTag now supports re-throwing exceptions (request [#946][sq-946]) - - Thanks to [Samuel Levy][@samlev] for the patch -- Squiz.PHP.DisallowMultipleAssignments now ignores PHP4-style member var assignments - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.WhiteSpace.FunctionSpacing now ignores spacing above functions when they are preceded by inline comments - - Stops conflicts between this sniff and comment spacing sniffs -- Squiz.WhiteSpace.OperatorSpacing no longer checks the equal sign in declare statements - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Added missing error codes for a couple of sniffs so they can now be customised as normal - -### Fixed -- Fixed bug [#1266][sq-1266] : PEAR.WhiteSpace.ScopeClosingBrace can throw an error while fixing mixed PHP/HTML -- Fixed bug [#1364][sq-1364] : Yield From values are not recognised as returned values in Squiz FunctionComment sniff -- Fixed bug [#1373][sq-1373] : Error in tab expansion results in white-space of incorrect size - - Thanks to [Mark Clements][@MarkMaldaba] for the patch -- Fixed bug [#1381][sq-1381] : Tokenizer: dereferencing incorrectly identified as short array -- Fixed bug [#1387][sq-1387] : Squiz.ControlStructures.ControlSignature does not handle alt syntax when checking space after closing brace -- Fixed bug [#1392][sq-1392] : Scope indent calculated incorrectly when using array destructuring -- Fixed bug [#1394][sq-1394] : integer type hints appearing as TypeHintMissing instead of ScalarTypeHintMissing - - PHP 7 type hints were also being shown when run under PHP 5 in some cases -- Fixed bug [#1405][sq-1405] : Squiz.WhiteSpace.ScopeClosingBrace fails to fix closing brace within indented PHP tags -- Fixed bug [#1421][sq-1421] : Ternaries used in constant scalar expression for param default misidentified by tokenizer -- Fixed bug [#1431][sq-1431] : PHPCBF can't fix short open tags when they are not followed by a space - - Thanks to [Gonçalo Queirós][@ghunti] for the patch -- Fixed bug [#1432][sq-1432] : PHPCBF can make invalid fixes to inline JS control structures that make use of JS objects - -[sq-946]: https://github.com/squizlabs/PHP_CodeSniffer/pull/946 -[sq-1266]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1266 -[sq-1364]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1364 -[sq-1373]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1373 -[sq-1381]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1381 -[sq-1387]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1387 -[sq-1392]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1392 -[sq-1394]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1394 -[sq-1405]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1405 -[sq-1421]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1421 -[sq-1431]: https://github.com/squizlabs/PHP_CodeSniffer/pull/1431 -[sq-1432]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1432 - -## [2.8.1] - 2017-03-02 - -### Security -- This release contains a fix for a security advisory related to the improper handling of shell commands - - Uses of shell_exec() and exec() were not escaping filenames and configuration settings in most cases - - A properly crafted filename or configuration option would allow for arbitrary code execution when using some features - - All users are encouraged to upgrade to this version, especially if you are checking 3rd-party code - - e.g., you run PHPCS over libraries that you did not write - - e.g., you provide a web service that runs PHPCS over user-uploaded files or 3rd-party repositories - - e.g., you allow external tool paths to be set by user-defined values - - If you are unable to upgrade but you check 3rd-party code, ensure you are not using the following features: - - The diff report - - The notify-send report - - The Generic.PHP.Syntax sniff - - The Generic.Debug.CSSLint sniff - - The Generic.Debug.ClosureLinter sniff - - The Generic.Debug.JSHint sniff - - The Squiz.Debug.JSLint sniff - - The Squiz.Debug.JavaScriptLint sniff - - The Zend.Debug.CodeAnalyzer sniff - - Thanks to [Klaus Purer][@klausi] for the report - -### Changed -- The PHP-supplied T_COALESCE_EQUAL token has been replicated for PHP versions before 7.2 -- PEAR.Functions.FunctionDeclaration now reports an error for blank lines found inside a function declaration -- PEAR.Functions.FunctionDeclaration no longer reports indent errors for blank lines in a function declaration -- Squiz.Functions.MultiLineFunctionDeclaration no longer reports errors for blank lines in a function declaration - - It would previously report that only one argument is allowed per line -- Squiz.Commenting.FunctionComment now corrects multi-line param comment padding more accurately -- Squiz.Commenting.FunctionComment now properly fixes pipe-separated param types -- Squiz.Commenting.FunctionComment now works correctly when function return types also contain a comment - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.ControlStructures.InlineIfDeclaration now supports the elvis operator - - As this is not a real PHP operator, it enforces no spaces between ? and : when the THEN statement is empty -- Squiz.ControlStructures.InlineIfDeclaration is now able to fix the spacing errors it reports - -### Fixed -- Fixed bug [#1340][sq-1340] : STDIN file contents not being populated in some cases - - Thanks to [David Biňovec][@david-binda] for the patch -- Fixed bug [#1344][sq-1344] : PEAR.Functions.FunctionCallSignatureSniff throws error for blank comment lines -- Fixed bug [#1347][sq-1347] : PSR2.Methods.FunctionCallSignature strips some comments during fixing - - Thanks to [Algirdas Gurevicius][@uniquexor] for the patch -- Fixed bug [#1349][sq-1349] : Squiz.Strings.DoubleQuoteUsage.NotRequired message is badly formatted when string contains a CR newline char - - Thanks to [Algirdas Gurevicius][@uniquexor] for the patch -- Fixed bug [#1350][sq-1350] : Invalid Squiz.Formatting.OperatorBracket error when using namespaces -- Fixed bug [#1369][sq-1369] : Empty line in multi-line function declaration cause infinite loop - -[sq-1340]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1340 -[sq-1344]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1344 -[sq-1347]: https://github.com/squizlabs/PHP_CodeSniffer/pull/1347 -[sq-1349]: https://github.com/squizlabs/PHP_CodeSniffer/pull/1349 -[sq-1350]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1350 -[sq-1369]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1369 - -## [2.8.0] - 2017-02-02 - -### Changed -- The Internal.NoCodeFound error is no longer generated for content sourced from STDIN - - This should stop some Git hooks generating errors because PHPCS is trying to process the refs passed on STDIN -- Squiz.Commenting.DocCommentAlignment now checks comments on class properties defined using the VAR keyword - - Thanks to [Klaus Purer][@klausi] for the patch -- The getMethodParameters() method now recognises "self" as a valid type hint - - The return array now contains a new "content" index containing the raw content of the param definition - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- The getMethodParameters() method now supports nullable types - - The return array now contains a new "nullable_type" index set to true or false for each method param - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- The getMethodParameters() method now supports closures - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Added more guard code for JS files with syntax errors (request [#1271][sq-1271] and request [#1272][sq-1272]) -- Added more guard code for CSS files with syntax errors (request [#1304][sq-1304]) -- PEAR.Commenting.FunctionComment fixers now correctly handle multi-line param comments -- AbstractVariableSniff now supports anonymous classes - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.NamingConventions.ConstructorName and PEAR.NamingConventions.ValidVariable now support anonymous classes -- Generic.NamingConventions.CamelCapsFunctionName and PEAR.NamingConventions.ValidFunctionName now support anonymous classes - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.CodeAnalysis.UnusedFunctionParameter and PEAR.Functions.ValidDefaultValue now support closures - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- PEAR.NamingConventions.ValidClassName and Squiz.Classes.ValidClassName now support traits - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.Functions.FunctionCallArgumentSpacing now supports closures other PHP-provided functions - - Thanks to [Algirdas Gurevicius][@uniquexor] for the patch -- Fixed an error where a nullable type character was detected as an inline then token - - A new T_NULLABLE token has been added to represent the ? nullable type character - - Thanks to [Jaroslav Hanslík][@kukulich] for the patch -- Squiz.WhiteSpace.SemicolonSpacing no longer removes comments while fixing the placement of semicolons - - Thanks to [Algirdas Gurevicius][@uniquexor] for the patch - -### Fixed -- Fixed bug [#1230][sq-1230] : JS tokeniser incorrectly tokenises bitwise shifts as comparison - - Thanks to [Ryan McCue][@rmccue] for the patch -- Fixed bug [#1237][sq-1237] : Uninitialized string offset in PHP Tokenizer on PHP 5.2 -- Fixed bug [#1239][sq-1239] : Warning when static method name is 'default' -- Fixed bug [#1240][sq-1240] : False positive for function names starting with triple underscore - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#1245][sq-1245] : SELF is not recognised as T_SELF token in: return new self -- Fixed bug [#1246][sq-1246] : A mix of USE statements with and without braces can cause the tokenizer to mismatch brace tokens - - Thanks to [Michał Bundyra][@michalbundyra] for the patch -- Fixed bug [#1249][sq-1249] : GitBlame report requires a .git directory -- Fixed bug [#1252][sq-1252] : Squiz.Strings.ConcatenationSpacing fix creates syntax error when joining a number to a string -- Fixed bug [#1253][sq-1253] : Generic.ControlStructures.InlineControlStructure fix creates syntax error fixing if-try/catch -- Fixed bug [#1255][sq-1255] : Inconsistent indentation check results when ELSE on new line -- Fixed bug [#1257][sq-1257] : Double dash in CSS class name can lead to "Named colours are forbidden" false positives -- Fixed bug [#1260][sq-1260] : Syntax errors not being shown when error_prepend_string is set - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Fixed bug [#1264][sq-1264] : Array return type hint is sometimes detected as T_ARRAY_HINT instead of T_RETURN_TYPE - - Thanks to [Jaroslav Hanslík][@kukulich] for the patch -- Fixed bug [#1265][sq-1265] : ES6 arrow function raises unexpected operator spacing errors -- Fixed bug [#1267][sq-1267] : Fixer incorrectly handles filepaths with repeated dir names - - Thanks to [Sergey Ovchinnikov][@orx0r] for the patch -- Fixed bug [#1276][sq-1276] : Commenting.FunctionComment.InvalidReturnVoid conditional issue with anonymous classes -- Fixed bug [#1277][sq-1277] : Squiz.PHP.DisallowMultipleAssignments.Found error when var assignment is on the same line as an open tag -- Fixed bug [#1284][sq-1284] : Squiz.Arrays.ArrayBracketSpacing.SpaceBeforeBracket false positive match for short list syntax - -[sq-1230]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1230 -[sq-1237]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1237 -[sq-1239]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1239 -[sq-1240]: https://github.com/squizlabs/PHP_CodeSniffer/pull/1240 -[sq-1245]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1245 -[sq-1246]: https://github.com/squizlabs/PHP_CodeSniffer/pull/1246 -[sq-1249]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1249 -[sq-1252]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1252 -[sq-1253]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1253 -[sq-1255]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1255 -[sq-1257]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1257 -[sq-1260]: https://github.com/squizlabs/PHP_CodeSniffer/pull/1260 -[sq-1264]: https://github.com/squizlabs/PHP_CodeSniffer/pull/1264 -[sq-1265]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1265 -[sq-1267]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1267 -[sq-1271]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1271 -[sq-1272]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1272 -[sq-1276]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1276 -[sq-1277]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1277 -[sq-1284]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1284 -[sq-1304]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1304 - -## [2.7.1] - 2016-11-30 - -### Changed -- Squiz.ControlStructures.ControlSignature.SpaceAfterCloseParenthesis fix now removes unnecessary whitespace -- Squiz.Formatting.OperatorBracket no longer errors for negative array indexes used within a function call -- Squiz.PHP.EmbeddedPhp no longer expects a semicolon after statements that are only opening a scope -- Fixed a problem where the content of T_DOC_COMMENT_CLOSE_TAG tokens could sometimes be (boolean) false -- Developers of custom standards with custom test runners can now have their standards ignored by the built-in test runner - - Set the value of an environment variable called PHPCS_IGNORE_TESTS with a comma separated list of your standard names - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- The unit test runner now loads the test sniff outside of the standard's ruleset so that exclude rules do not get applied - - This may have caused problems when testing custom sniffs inside custom standards - - Also makes the unit tests runs a little faster -- The SVN pre-commit hook now works correctly when installed via composer - - Thanks to [Sergey][@sserbin] for the patch - -### Fixed -- Fixed bug [#1135][sq-1135] : PEAR.ControlStructures.MultiLineCondition.CloseBracketNewLine not detected if preceded by multiline function call -- Fixed bug [#1138][sq-1138] : PEAR.ControlStructures.MultiLineCondition.Alignment not detected if closing brace is first token on line -- Fixed bug [#1141][sq-1141] : Sniffs that check EOF newlines don't detect newlines properly when the last token is a doc block -- Fixed bug [#1150][sq-1150] : Squiz.Strings.EchoedStrings does not properly fix bracketed statements -- Fixed bug [#1156][sq-1156] : Generic.Formatting.DisallowMultipleStatements errors when multiple short echo tags are used on the same line - - Thanks to [Nikola Kovacs][@nkovacs] for the patch -- Fixed bug [#1161][sq-1161] : Absolute report path is treated like a relative path if it also exists within the current directory -- Fixed bug [#1170][sq-1170] : Javascript regular expression literal not recognized after comparison operator -- Fixed bug [#1180][sq-1180] : Class constant named FUNCTION is incorrectly tokenized -- Fixed bug [#1181][sq-1181] : Squiz.Operators.IncrementDecrementUsage.NoBrackets false positive when incrementing properties - - Thanks to [Jürgen Henge-Ernst][@hernst42] for the patch -- Fixed bug [#1188][sq-1188] : Generic.WhiteSpace.ScopeIndent issues with inline HTML and multi-line function signatures -- Fixed bug [#1190][sq-1190] : phpcbf on if/else with trailing comment generates erroneous code -- Fixed bug [#1191][sq-1191] : Javascript sniffer fails with function called "Function" -- Fixed bug [#1203][sq-1203] : Inconsistent behavior of PHP_CodeSniffer_File::findEndOfStatement -- Fixed bug [#1218][sq-1218] : CASE conditions using class constants named NAMESPACE/INTERFACE/TRAIT etc are incorrectly tokenized -- Fixed bug [#1221][sq-1221] : Indented function call with multiple closure arguments can cause scope indent error -- Fixed bug [#1224][sq-1224] : PHPCBF fails to fix code with heredoc/nowdoc as first argument to a function - -[sq-1135]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1135 -[sq-1138]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1138 -[sq-1141]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1141 -[sq-1150]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1150 -[sq-1156]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1156 -[sq-1161]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1161 -[sq-1170]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1170 -[sq-1180]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1180 -[sq-1181]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1181 -[sq-1188]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1188 -[sq-1190]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1190 -[sq-1191]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1191 -[sq-1203]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1203 -[sq-1218]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1218 -[sq-1221]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1221 -[sq-1224]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1224 - -## [2.7.0] - 2016-09-02 - -### Changed -- Added --file-list command line argument to allow a list of files and directories to be specified in an external file - - Useful if you have a generated list of files to check that would be too long for the command line - - File and directory paths are listed one per line - - Usage is: phpcs --file-list=/path/to/file-list ... - - Thanks to [Blotzu][@andrei-propertyguru] for the patch -- Values set using @codingStandardsChangeSetting comments can now contain spaces -- Sniff unit tests can now specify a list of test files instead of letting the runner pick them (request [#1078][sq-1078]) - - Useful if a sniff needs to exclude files based on the environment, or is checking filenames - - Override the new getTestFiles() method to specify your own list of test files -- Generic.Functions.OpeningFunctionBraceKernighanRitchie now ignores spacing for function return types - - The sniff code Generic.Functions.OpeningFunctionBraceKernighanRitchie.SpaceAfterBracket has been removed - - Replaced by Generic.Functions.OpeningFunctionBraceKernighanRitchie.SpaceBeforeBrace - - The new error message is slightly clearer as it indicates that a single space is needed before the brace -- Squiz.Commenting.LongConditionClosingComment now allows for the length of a code block to be configured - - Set the lineLimit property (default is 20) in your ruleset.xml file to set the code block length - - When the code block length is reached, the sniff will enforce a closing comment after the closing brace - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.Commenting.LongConditionClosingComment now allows for the end comment format to be configured - - Set the commentFormat property (default is "//end %s") in your ruleset.xml file to set the format - - The placeholder %s will be replaced with the type of condition opener, e.g., "//end foreach" - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Generic.PHPForbiddenFunctions now allows forbidden functions to have mixed case - - Previously, it would only do a strtolower comparison - - Error message now shows what case was found in the code and what the correct case should be - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Added Generic.Classes.OpeningBraceSameLine to ensure opening brace of class/interface/trait is on the same line as the declaration - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Added Generic.PHP.BacktickOperator to ban the use of the backtick operator for running shell commands - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Added Generic.PHP.DisallowAlternativePHPTags to ban the use of alternate PHP tags - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Squiz.WhiteSpace.LanguageConstructSpacing no longer checks for spaces if parenthesis are being used (request [#1062][sq-1062]) - - Makes this sniff more compatible with those that check parenthesis spacing of function calls -- Squiz.WhiteSpace.ObjectOperatorSpacing now has a setting to ignore newline characters around object operators - - Default remains FALSE, so newlines are not allowed - - Override the "ignoreNewlines" setting in a ruleset.xml file to change - - Thanks to [Alex Howansky][@AlexHowansky] for the patch -- Squiz.Scope.MethodScope now sniffs traits as well as classes and interfaces - - Thanks to [Jesse Donat][@donatj] for the patch -- PHPCBF is now able to fix Squiz.SelfMemberReference.IncorrectCase errors - - Thanks to [Nikola Kovacs][@nkovacs] for the patch -- PHPCBF is now able to fix Squiz.Commenting.VariableComment.IncorrectVarType - - Thanks to [Walt Sorensen][@photodude] for the patch -- PHPCBF is now able to fix Generic.PHP.DisallowShortOpenTag - - Thanks to [Juliette Reinders Folmer][@jrfnl] for the patch -- Improved the formatting of the end brace when auto fixing InlineControlStructure errors (request [#1121][sq-1121]) -- Generic.Functions.OpeningFunctionBraceKernighanRitchie.BraceOnNewLine fix no longer leaves blank line after brace (request [#1085][sq-1085]) -- Generic UpperCaseConstantNameSniff now allows lowercase namespaces in constant definitions - - Thanks to [Daniel Schniepp][@dschniepp] for the patch -- Squiz DoubleQuoteUsageSniff is now more tolerant of syntax errors caused by mismatched string tokens -- A few sniffs that produce errors based on the current PHP version can now be told to run using a specific PHP version - - Set the `php_version` config var using `--config-set`, `--runtime-set`, or in a ruleset to specify a specific PHP version - - The format of the PHP version is the same as the `PHP_VERSION_ID` constant (e.g., 50403 for version 5.4.3) - - Supported sniffs are Generic.PHP.DisallowAlternativePHPTags, PSR1.Classes.ClassDeclaration, Squiz.Commenting.FunctionComment - - Thanks to [Finlay Beaton][@ofbeaton] for the patch - -### Fixed -- Fixed bug [#985][sq-985] : Duplicate class definition detection generates false-positives in media queries - - Thanks to [Raphael Horber][@rhorber] for the patch -- Fixed bug [#1014][sq-1014] : Squiz VariableCommentSniff doesn't always detect a missing comment -- Fixed bug [#1066][sq-1066] : Undefined index: quiet in `CLI.php` during unit test run with `-v` command line arg -- Fixed bug [#1072][sq-1072] : Squiz.SelfMemberReference.NotUsed not detected if leading namespace separator is used -- Fixed bug [#1089][sq-1089] : Rulesets cannot be loaded if the path contains urlencoded characters -- Fixed bug [#1091][sq-1091] : PEAR and Squiz FunctionComment sniffs throw errors for some invalid @param line formats -- Fixed bug [#1092][sq-1092] : PEAR.Functions.ValidDefaultValue should not flag type hinted methods with a NULL default argument -- Fixed bug [#1095][sq-1095] : Generic LineEndings sniff replaces tabs with spaces with --tab-width is set -- Fixed bug [#1096][sq-1096] : Squiz FunctionDeclarationArgumentSpacing gives incorrect error/fix when variadic operator is followed by a space -- Fixed bug [#1099][sq-1099] : Group use declarations are incorrectly fixed by the PSR2 standard - - Thanks to [Jason McCreary][@jasonmccreary] for the patch -- Fixed bug [#1101][sq-1101] : Incorrect indent errors when breaking out of PHP inside an IF statement -- Fixed bug [#1102][sq-1102] : Squiz.Formatting.OperatorBracket.MissingBrackets faulty bracketing fix -- Fixed bug [#1109][sq-1109] : Wrong scope indent reported in anonymous class -- Fixed bug [#1112][sq-1112] : File docblock not recognized when require_once follows it -- Fixed bug [#1120][sq-1120] : InlineControlStructureSniff does not handle auto-fixing for control structures that make function calls -- Fixed bug [#1124][sq-1124] : Squiz.Operators.ComparisonOperatorUsage does not detect bracketed conditions for inline IF statements - - Thanks to [Raphael Horber][@rhorber] for the patch - -[sq-985]: https://github.com/squizlabs/PHP_CodeSniffer/issues/985 -[sq-1014]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1014 -[sq-1062]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1062 -[sq-1066]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1066 -[sq-1072]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1072 -[sq-1078]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1078 -[sq-1085]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1085 -[sq-1089]: https://github.com/squizlabs/PHP_CodeSniffer/pull/1089 -[sq-1091]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1091 -[sq-1092]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1092 -[sq-1095]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1095 -[sq-1096]: https://github.com/squizlabs/PHP_CodeSniffer/pull/1096 -[sq-1099]: https://github.com/squizlabs/PHP_CodeSniffer/pull/1099 -[sq-1101]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1101 -[sq-1102]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1102 -[sq-1109]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1109 -[sq-1112]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1112 -[sq-1120]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1120 -[sq-1121]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1121 -[sq-1124]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1124 - -## [2.6.2] - 2016-07-14 - -### Changed -- Added a new --exclude CLI argument to exclude a list of sniffs from checking and fixing (request [#904][sq-904]) - - Accepts the same sniff codes as the --sniffs command line argument, but provides the opposite functionality -- Added a new -q command line argument to disable progress and verbose information from being printed (request [#969][sq-969]) - - Useful if a coding standard hard-codes progress or verbose output but you want PHPCS to be quiet - - Use the command "phpcs --config-set quiet true" to turn quiet mode on by default -- Generic LineLength sniff no longer errors for comments that cannot be broken out onto a new line (request [#766][sq-766]) - - A typical case is a comment that contains a very long URL - - The comment is ignored if putting the URL on an indented new comment line would be longer than the allowed length -- Settings extensions in a ruleset no longer causes PHP notices during unit testing - - Thanks to [Klaus Purer][@klausi] for the patch -- Version control reports now show which errors are fixable if you are showing sources -- Added a new sniff to enforce a single space after a NOT operator (request [#1051][sq-1051]) - - Include in a ruleset using the code Generic.Formatting.SpaceAfterNot -- The Squiz.Commenting.BlockComment sniff now supports tabs for indenting comment lines (request [#1056][sq-1056]) - -### Fixed -- Fixed bug [#790][sq-790] : Incorrect missing @throws error in methods that use closures -- Fixed bug [#908][sq-908] : PSR2 standard is not checking that closing brace is on line following the body -- Fixed bug [#945][sq-945] : Incorrect indent behavior using deep-nested function and arrays -- Fixed bug [#961][sq-961] : Two anonymous functions passed as function/method arguments cause indentation false positive -- Fixed bug [#1005][sq-1005] : Using global composer vendor autoload breaks PHP lowercase built-in function sniff - - Thanks to [Michael Butler][@michaelbutler] for the patch -- Fixed bug [#1007][sq-1007] : Squiz Unreachable code detection is not working properly with a closure inside a case -- Fixed bug [#1023][sq-1023] : PSR2.Classes.ClassDeclaration fails if class extends base class and "implements" is on trailing line -- Fixed bug [#1026][sq-1026] : Arrays in comma delimited class properties cause ScopeIndent to increase indent -- Fixed bug [#1028][sq-1028] : Squiz ArrayDeclaration incorrectly fixes multi-line array where end bracket is not on a new line -- Fixed bug [#1034][sq-1034] : Squiz FunctionDeclarationArgumentSpacing gives incorrect error when first arg is a variadic -- Fixed bug [#1036][sq-1036] : Adjacent assignments aligned analysis statement wrong -- Fixed bug [#1049][sq-1049] : Version control reports can show notices when the report width is very small -- Fixed bug [#21050][pear-21050] : PEAR MultiLineCondition sniff suppresses errors on last condition line - -[sq-766]: https://github.com/squizlabs/PHP_CodeSniffer/issues/766 -[sq-790]: https://github.com/squizlabs/PHP_CodeSniffer/issues/790 -[sq-904]: https://github.com/squizlabs/PHP_CodeSniffer/issues/904 -[sq-908]: https://github.com/squizlabs/PHP_CodeSniffer/issues/908 -[sq-945]: https://github.com/squizlabs/PHP_CodeSniffer/issues/945 -[sq-961]: https://github.com/squizlabs/PHP_CodeSniffer/issues/961 -[sq-969]: https://github.com/squizlabs/PHP_CodeSniffer/issues/969 -[sq-1005]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1005 -[sq-1007]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1007 -[sq-1023]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1023 -[sq-1026]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1026 -[sq-1028]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1028 -[sq-1034]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1034 -[sq-1036]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1036 -[sq-1049]: https://github.com/squizlabs/PHP_CodeSniffer/pull/1049 -[sq-1051]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1051 -[sq-1056]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1056 -[pear-21050]: https://pear.php.net/bugs/bug.php?id=21050 - -## [2.6.1] - 2016-05-31 - -### Changed -- The PHP-supplied T_COALESCE token has been replicated for PHP versions before 7.0 -- Function return types of self, parent and callable are now tokenized as T_RETURN_TYPE - - Thanks to [Jaroslav Hanslík][@kukulich] for the patch -- The default_standard config setting now allows multiple standards to be listed, like on the command line - - Thanks to [Michael Mayer][@schnittstabil] for the patch -- Installations done via composer now only include the composer autoloader for PHP 5.3.2+ (request [#942][sq-942]) -- Added a rollbackChangeset() method to the Fixer class to purposely rollback the active changeset - -### Fixed -- Fixed bug [#940][sq-940] : Auto-fixing issue encountered with inconsistent use of braces -- Fixed bug [#943][sq-943] : Squiz.PHP.InnerFunctions.NotAllowed reported in anonymous classes -- Fixed bug [#944][sq-944] : PHP warning when running the latest phar -- Fixed bug [#951][sq-951] : InlineIfDeclaration: invalid error produced with UTF-8 string -- Fixed bug [#957][sq-957] : Operator spacing sniff errors when plus is used as part of a number - - Thanks to [Klaus Purer][@klausi] for the patch -- Fixed bug [#959][sq-959] : Call-time pass-by-reference false positive if there is a square bracket before the ampersand - - Thanks to [Konstantin Leboev][@realmfoo] for the patch -- Fixed bug [#962][sq-962] : Null coalescing operator (??) not detected as a token - - Thanks to [Joel Posti][@joelposti] for the patch -- Fixed bug [#973][sq-973] : Anonymous class declaration and PSR1.Files.SideEffects.FoundWithSymbols -- Fixed bug [#974][sq-974] : Error when file ends with "function" -- Fixed bug [#979][sq-979] : Anonymous function with return type hint is not refactored as expected -- Fixed bug [#983][sq-983] : Squiz.WhiteSpace.MemberVarSpacing.AfterComment fails to fix error when comment is not a docblock -- Fixed bug [#1010][sq-1010] : Squiz NonExecutableCode sniff does not detect boolean OR - - Thanks to [Derek Henderson][@2shediac] for the patch -- Fixed bug [#1015][sq-1015] : The Squiz.Commenting.FunctionComment sniff doesn't allow description in @return tag - - Thanks to [Alexander Obuhovich][@aik099] for the patch -- Fixed bug [#1022][sq-1022] : Duplicate spaces after opening bracket error with PSR2 standard -- Fixed bug [#1025][sq-1025] : Syntax error in JS file can cause undefined index for parenthesis_closer - -[sq-940]: https://github.com/squizlabs/PHP_CodeSniffer/issues/940 -[sq-942]: https://github.com/squizlabs/PHP_CodeSniffer/issues/942 -[sq-943]: https://github.com/squizlabs/PHP_CodeSniffer/issues/943 -[sq-944]: https://github.com/squizlabs/PHP_CodeSniffer/issues/944 -[sq-951]: https://github.com/squizlabs/PHP_CodeSniffer/issues/951 -[sq-957]: https://github.com/squizlabs/PHP_CodeSniffer/pull/957 -[sq-959]: https://github.com/squizlabs/PHP_CodeSniffer/issues/959 -[sq-962]: https://github.com/squizlabs/PHP_CodeSniffer/issues/962 -[sq-973]: https://github.com/squizlabs/PHP_CodeSniffer/issues/973 -[sq-974]: https://github.com/squizlabs/PHP_CodeSniffer/issues/974 -[sq-979]: https://github.com/squizlabs/PHP_CodeSniffer/issues/979 -[sq-983]: https://github.com/squizlabs/PHP_CodeSniffer/issues/983 -[sq-1010]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1010 -[sq-1015]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1015 -[sq-1022]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1022 -[sq-1025]: https://github.com/squizlabs/PHP_CodeSniffer/issues/1025 - -## [2.6.0] - 2016-04-04 - -### Changed -- Paths used when setting CLI arguments inside ruleset.xml files are now relative to the ruleset location (request [#847][sq-847]) - - This change only applies to paths within ARG tags, used to set CLI arguments - - Previously, the paths were relative to the directory PHPCS was being run from - - Absolute paths are still allowed and work the same way they always have - - This change allows ruleset.xml files to be more portable -- Content passed via STDIN will now be processed even if files are specified on the command line or in a ruleset -- When passing content via STDIN, you can now specify the file path to use on the command line (request [#934][sq-934]) - - This allows sniffs that check file paths to work correctly - - This is the same functionality provided by the phpcs_input_file line, except it is available on the command line -- Files processed with custom tokenizers will no longer be skipped if they appear minified (request [#877][sq-877]) - - If the custom tokenizer wants minified files skipped, it can set a $skipMinified member var to TRUE - - See the included JS and CSS tokenizers for an example -- Config vars set in ruleset.xml files are now processed earlier, allowing them to be used during sniff registration - - Among other things, this allows the installed_paths config var to be set in ruleset.xml files - - Thanks to [Pieter Frenssen][@pfrenssen] for the patch -- Improved detection of regular expressions in the JS tokenizer -- Generic PHP Syntax sniff now uses PHP_BINARY (if available) to determine the path to PHP if no other path is available - - You can still manually set `php_path` to use a specific binary for testing - - Thanks to [Andrew Berry][@deviantintegral] for the patch -- The PHP-supplied T_POW_EQUAL token has been replicated for PHP versions before 5.6 -- Added support for PHP7 use group declarations (request [#878][sq-878]) - - New tokens T_OPEN_USE_GROUP and T_CLOSE_USE_GROUP are assigned to the open and close curly braces -- Generic ScopeIndent sniff now reports errors for every line that needs the indent changed (request [#903][sq-903]) - - Previously, it ignored lines that were indented correctly in the context of their block - - This change produces more technically accurate error messages, but is much more verbose -- The PSR2 and Squiz standards now allow multi-line default values in function declarations (request [#542][sq-542]) - - Previously, these would automatically make the function a multi-line declaration -- Squiz InlineCommentSniff now allows docblocks on require(_once) and include(_once) statements - - Thanks to [Gary Jones][@GaryJones] for the patch -- Squiz and PEAR Class and File sniffs no longer assume the first comment in a file is always a file comment - - phpDocumentor assigns the comment to the file only if it is not followed by a structural element - - These sniffs now follow this same rule -- Squiz ClassCommentSniff no longer checks for blank lines before class comments - - Removes the error Squiz.Commenting.ClassComment.SpaceBefore -- Renamed Squiz.CSS.Opacity.SpacingAfterPoint to Squiz.CSS.Opacity.DecimalPrecision - - Please update your ruleset if you are referencing this error code directly -- Fixed PHP tokenizer problem that caused an infinite loop when checking a comment with specific content -- Generic Disallow Space and Tab indent sniffs now detect and fix indents inside embedded HTML chunks (request [#882][sq-882]) -- Squiz CSS IndentationSniff no longer assumes the class opening brace is at the end of a line -- Squiz FunctionCommentThrowTagSniff now ignores non-docblock comments -- Squiz ComparisonOperatorUsageSniff now allows conditions like while(true) -- PEAR FunctionCallSignatureSniff (and the Squiz and PSR2 sniffs that use it) now correctly check the first argument - - Further fix for bug [#698][sq-698] - -### Fixed -- Fixed bug [#791][sq-791] : codingStandardsChangeSetting settings not working with namespaces -- Fixed bug [#872][sq-872] : Incorrect detection of blank lines between CSS class names -- Fixed bug [#879][sq-879] : Generic InlineControlStructureSniff can create parse error when case/if/elseif/else have mixed brace and braceless definitions -- Fixed bug [#883][sq-883] : PSR2 is not checking for blank lines at the start and end of control structures -- Fixed bug [#884][sq-884] : Incorrect indentation notice for anonymous classes -- Fixed bug [#887][sq-887] : Using curly braces for a shared CASE/DEFAULT statement can generate an error in PSR2 SwitchDeclaration -- Fixed bug [#889][sq-889] : Closure inside catch/else/elseif causes indentation error -- Fixed bug [#890][sq-890] : Function call inside returned short array value can cause indentation error inside CASE statements -- Fixed bug [#897][sq-897] : Generic.Functions.CallTimePassByReference.NotAllowed false positive when short array syntax -- Fixed bug [#900][sq-900] : Squiz.Functions.FunctionDeclarationArgumentSpacing bug when no space between type hint and argument -- Fixed bug [#902][sq-902] : T_OR_EQUAL and T_POW_EQUAL are not seen as assignment tokens -- Fixed bug [#910][sq-910] : Unrecognized "extends" and indentation on anonymous classes -- Fixed bug [#915][sq-915] : JS Tokenizer generates errors when processing some decimals -- Fixed bug [#928][sq-928] : Endless loop when sniffing a PHP file with a git merge conflict inside a function -- Fixed bug [#937][sq-937] : Shebang can cause PSR1 SideEffects warning - - Thanks to [Clay Loveless][@claylo] for the patch -- Fixed bug [#938][sq-938] : CallTimePassByReferenceSniff ignores functions with return value - -[sq-542]: https://github.com/squizlabs/PHP_CodeSniffer/issues/542 -[sq-791]: https://github.com/squizlabs/PHP_CodeSniffer/issues/791 -[sq-847]: https://github.com/squizlabs/PHP_CodeSniffer/issues/847 -[sq-872]: https://github.com/squizlabs/PHP_CodeSniffer/issues/872 -[sq-877]: https://github.com/squizlabs/PHP_CodeSniffer/issues/877 -[sq-878]: https://github.com/squizlabs/PHP_CodeSniffer/issues/878 -[sq-879]: https://github.com/squizlabs/PHP_CodeSniffer/issues/879 -[sq-882]: https://github.com/squizlabs/PHP_CodeSniffer/issues/882 -[sq-883]: https://github.com/squizlabs/PHP_CodeSniffer/issues/883 -[sq-884]: https://github.com/squizlabs/PHP_CodeSniffer/issues/884 -[sq-887]: https://github.com/squizlabs/PHP_CodeSniffer/issues/887 -[sq-889]: https://github.com/squizlabs/PHP_CodeSniffer/issues/889 -[sq-890]: https://github.com/squizlabs/PHP_CodeSniffer/issues/890 -[sq-897]: https://github.com/squizlabs/PHP_CodeSniffer/issues/897 -[sq-900]: https://github.com/squizlabs/PHP_CodeSniffer/issues/900 -[sq-902]: https://github.com/squizlabs/PHP_CodeSniffer/issues/902 -[sq-903]: https://github.com/squizlabs/PHP_CodeSniffer/issues/903 -[sq-910]: https://github.com/squizlabs/PHP_CodeSniffer/issues/910 -[sq-915]: https://github.com/squizlabs/PHP_CodeSniffer/issues/915 -[sq-928]: https://github.com/squizlabs/PHP_CodeSniffer/issues/928 -[sq-934]: https://github.com/squizlabs/PHP_CodeSniffer/issues/934 -[sq-937]: https://github.com/squizlabs/PHP_CodeSniffer/pull/937 -[sq-938]: https://github.com/squizlabs/PHP_CodeSniffer/issues/938 - -## [2.5.1] - 2016-01-20 - -### Changed -- The PHP-supplied T_SPACESHIP token has been replicated for PHP versions before 7.0 -- T_SPACESHIP is now correctly identified as an operator - - Thanks to [Alexander Obuhovich][@aik099] for the patch -- Generic LowerCaseKeyword now ensures array type hints are lowercase as well - - Thanks to [Mathieu Rochette][@mathroc] for the patch -- Squiz ComparisonOperatorUsageSniff no longer hangs on JS FOR loops that don't use semicolons -- PHP_CodesSniffer now includes the composer `autoload.php` file, if there is one - - Thanks to [Klaus Purer][@klausi] for the patch -- Added error Squiz.Commenting.FunctionComment.ScalarTypeHintMissing for PHP7 only (request [#858][sq-858]) - - These errors were previously reported as Squiz.Commenting.FunctionComment.TypeHintMissing on PHP7 - - Disable this error message in a ruleset.xml file if your code needs to run on both PHP5 and PHP7 -- The PHP 5.6 __debugInfo magic method no longer produces naming convention errors - - Thanks to [Michael Nowack][@syranez] for the patch -- PEAR and Squiz FunctionComment sniffs now support variadic functions (request [#841][sq-841]) - -### Fixed -- Fixed bug [#622][sq-622] : Wrong detection of Squiz.CSS.DuplicateStyleDefinition with media queries -- Fixed bug [#752][sq-752] : The missing exception error is reported in first found DocBlock -- Fixed bug [#794][sq-794] : PSR2 MultiLineFunctionDeclaration forbids comments after opening parenthesis of a multiline call -- Fixed bug [#820][sq-820] : PEAR/PSR2 FunctionCallSignature sniffs suggest wrong indent when there are multiple arguments on a line -- Fixed bug [#822][sq-822] : Ruleset hard-coded file paths are not used if not running from the same directory as the ruleset -- Fixed bug [#825][sq-825] : FunctionCallArgumentSpacing sniff complains about more than one space before comment in multi-line function call -- Fixed bug [#828][sq-828] : Null classname is tokenized as T_NULL instead of T_STRING -- Fixed bug [#829][sq-829] : Short array argument not fixed correctly when multiple function arguments are on the same line -- Fixed bug [#831][sq-831] : PHPCS freezes in an infinite loop under Windows if no standard is passed -- Fixed bug [#832][sq-832] : Tokenizer does not support context sensitive parsing - - Thanks to [Jaroslav Hanslík][@kukulich] for the patch -- Fixed bug [#835][sq-835] : PEAR.Functions.FunctionCallSignature broken when closure uses return types -- Fixed bug [#838][sq-838] : CSS indentation fixer changes color codes - - Thanks to [Klaus Purer][@klausi] for the patch -- Fixed bug [#839][sq-839] : "__()" method is marked as not camel caps - - Thanks to [Tim Bezhashvyly][@tim-bezhashvyly] for the patch -- Fixed bug [#852][sq-852] : Generic.Commenting.DocComment not finding errors when long description is omitted -- Fixed bug [#854][sq-854] : Return typehints in interfaces are not reported as T_RETURN_TYPE - - Thanks to [Jaroslav Hanslík][@kukulich] for the patch -- Fixed bug [#855][sq-855] : Capital letter detection for multibyte strings doesn't work correctly -- Fixed bug [#857][sq-857] : PSR2.ControlStructure.SwitchDeclaration shouldn't check indent of curly brace closers -- Fixed bug [#859][sq-859] : Switch statement indention issue when returning function call with closure -- Fixed bug [#861][sq-861] : Single-line arrays and function calls can generate incorrect indentation errors -- Fixed bug [#867][sq-867] : Squiz.Strings.DoubleQuoteUsage broken for some escape codes - - Thanks to [Jack Blower][@ElvenSpellmaker] for the help with the fix -- Fixed bug [#21005][pear-21005] : Incorrect indent detection when multiple properties are initialized to arrays -- Fixed bug [#21010][pear-21010] : Incorrect missing colon detection in CSS when first style is not on new line -- Fixed bug [#21011][pear-21011] : Incorrect error message text when newline found after opening brace - -[sq-622]: https://github.com/squizlabs/PHP_CodeSniffer/issues/622 -[sq-752]: https://github.com/squizlabs/PHP_CodeSniffer/issues/752 -[sq-794]: https://github.com/squizlabs/PHP_CodeSniffer/issues/794 -[sq-820]: https://github.com/squizlabs/PHP_CodeSniffer/issues/820 -[sq-822]: https://github.com/squizlabs/PHP_CodeSniffer/issues/822 -[sq-825]: https://github.com/squizlabs/PHP_CodeSniffer/issues/825 -[sq-828]: https://github.com/squizlabs/PHP_CodeSniffer/issues/828 -[sq-829]: https://github.com/squizlabs/PHP_CodeSniffer/issues/829 -[sq-831]: https://github.com/squizlabs/PHP_CodeSniffer/issues/831 -[sq-832]: https://github.com/squizlabs/PHP_CodeSniffer/issues/832 -[sq-835]: https://github.com/squizlabs/PHP_CodeSniffer/issues/835 -[sq-838]: https://github.com/squizlabs/PHP_CodeSniffer/pull/838 -[sq-839]: https://github.com/squizlabs/PHP_CodeSniffer/issues/839 -[sq-841]: https://github.com/squizlabs/PHP_CodeSniffer/issues/841 -[sq-852]: https://github.com/squizlabs/PHP_CodeSniffer/issues/852 -[sq-854]: https://github.com/squizlabs/PHP_CodeSniffer/issues/854 -[sq-855]: https://github.com/squizlabs/PHP_CodeSniffer/pull/855 -[sq-857]: https://github.com/squizlabs/PHP_CodeSniffer/issues/857 -[sq-858]: https://github.com/squizlabs/PHP_CodeSniffer/issues/858 -[sq-859]: https://github.com/squizlabs/PHP_CodeSniffer/issues/859 -[sq-861]: https://github.com/squizlabs/PHP_CodeSniffer/issues/861 -[sq-867]: https://github.com/squizlabs/PHP_CodeSniffer/issues/867 -[pear-21005]: https://pear.php.net/bugs/bug.php?id=21005 -[pear-21010]: https://pear.php.net/bugs/bug.php?id=21010 -[pear-21011]: https://pear.php.net/bugs/bug.php?id=21011 - -## [2.5.0] - 2015-12-11 - -### Changed -- PHPCS will now look for a phpcs.xml file in parent directories as well as the current directory (request [#626][sq-626]) -- PHPCS will now use a phpcs.xml file even if files are specified on the command line - - This file is still only used if no standard is specified on the command line -- Added support for a phpcs.xml.dist file (request [#583][sq-583]) - - If both a phpcs.xml and phpcs.xml.dist file are present, the phpcs.xml file will be used -- Added support for setting PHP ini values in ruleset.xml files (request [#560][sq-560]) - - Setting the value of the new ini tags to name="memory_limit" value="32M" is the same as -d memory_limit=32M -- Added support for one or more bootstrap files to be run before processing begins - - Use the --bootstrap=file,file,file command line argument to include bootstrap files - - Useful if you want to override some of the high-level settings of PHPCS or PHPCBF - - Thanks to [John Maguire][@johnmaguire] for the patch -- Added additional verbose output for CSS tokenizing -- Squiz ComparisonOperatorUsageSniff now checks FOR, WHILE and DO-WHILE statements - - Thanks to [Arnout Boks][@aboks] for the patch - -### Fixed -- Fixed bug [#660][sq-660] : Syntax checks can fail on Windows with PHP5.6 -- Fixed bug [#784][sq-784] : $this->trait is seen as a T_TRAIT token -- Fixed bug [#786][sq-786] : Switch indent issue with short array notation -- Fixed bug [#787][sq-787] : SpacingAfterDefaultBreak confused by multi-line statements -- Fixed bug [#797][sq-797] : Parsing CSS url() value breaks further parsing -- Fixed bug [#805][sq-805] : Squiz.Commenting.FunctionComment.InvalidTypeHint on Scalar types on PHP7 -- Fixed bug [#807][sq-807] : Cannot fix line endings when open PHP tag is not on the first line -- Fixed bug [#808][sq-808] : JS tokenizer incorrectly setting some function and class names to control structure tokens -- Fixed bug [#809][sq-809] : PHPCBF can break a require_once statement with a space before the open parenthesis -- Fixed bug [#813][sq-813] : PEAR FunctionCallSignature checks wrong indent when first token on line is part of a multi-line string - -[sq-560]: https://github.com/squizlabs/PHP_CodeSniffer/issues/560 -[sq-583]: https://github.com/squizlabs/PHP_CodeSniffer/issues/583 -[sq-626]: https://github.com/squizlabs/PHP_CodeSniffer/issues/626 -[sq-660]: https://github.com/squizlabs/PHP_CodeSniffer/pull/660 -[sq-784]: https://github.com/squizlabs/PHP_CodeSniffer/issues/784 -[sq-786]: https://github.com/squizlabs/PHP_CodeSniffer/issues/786 -[sq-787]: https://github.com/squizlabs/PHP_CodeSniffer/issues/787 -[sq-797]: https://github.com/squizlabs/PHP_CodeSniffer/issues/797 -[sq-805]: https://github.com/squizlabs/PHP_CodeSniffer/issues/805 -[sq-807]: https://github.com/squizlabs/PHP_CodeSniffer/issues/807 -[sq-808]: https://github.com/squizlabs/PHP_CodeSniffer/issues/808 -[sq-809]: https://github.com/squizlabs/PHP_CodeSniffer/issues/809 -[sq-813]: https://github.com/squizlabs/PHP_CodeSniffer/issues/813 - -## [2.4.0] - 2015-11-24 - -### Changed -- Added support for PHP 7 anonymous classes - - Anonymous classes are now tokenized as T_ANON_CLASS and ignored by normal class sniffs -- Added support for PHP 7 function return type declarations - - Return types are now tokenized as T_RETURN_TYPE -- Fixed tokenizing of the XOR operator, which was incorrectly identified as a power operator (bug [#765][sq-765]) - - The T_POWER token has been removed and replaced by the T_BITWISE_XOR token - - The PHP-supplied T_POW token has been replicated for PHP versions before 5.6 -- Traits are now tokenized in PHP versions before 5.4 to make testing easier -- Improved regular expression detection in JS files -- PEAR FunctionCallSignatureSniff now properly detects indents in more mixed HTML/PHP code blocks -- Full report now properly indents lines when newlines are found inside error messages -- Generating documentation without specifying a standard now uses the default standard instead - - Thanks to [Ken Guest][@kenguest] for the patch -- Generic InlineControlStructureSniff now supports braceless do/while loops in JS - - Thanks to [Pieter Frenssen][@pfrenssen] for the patch -- Added more guard code for function declarations with syntax errors - - Thanks to Yun Young-jin for the patch -- Added more guard code for foreach declarations with syntax errors - - Thanks to [Johan de Ruijter][@johanderuijter] for the patch -- Added more guard code for class declarations with syntax errors -- Squiz ArrayDeclarationSniff now has guard code for arrays with syntax errors -- Generic InlineControlStructureSniff now correctly fixes ELSEIF statements - -### Fixed -- Fixed bug [#601][sq-601] : Expected type hint int[]; found array in Squiz FunctionCommentSniff - - Thanks to [Scato Eggen][@scato] for the patch -- Fixed bug [#625][sq-625] : Consider working around T_HASHBANG in HHVM 3.5.x and 3.6.x - - Thanks to [Kunal Mehta][@legoktm] for the patch -- Fixed bug [#692][sq-692] : Comment tokenizer can break when using mbstring function overloading -- Fixed bug [#694][sq-694] : Long sniff codes can cause PHP warnings in source report when showing error codes -- Fixed bug [#698][sq-698] : PSR2.Methods.FunctionCallSignature.Indent forces exact indent of ternary operator parameters -- Fixed bug [#704][sq-704] : ScopeIndent can fail when an opening parenthesis is on a line by itself -- Fixed bug [#707][sq-707] : Squiz MethodScopeSniff doesn't handle nested functions -- Fixed bug [#709][sq-709] : Squiz.Sniffs.Whitespace.ScopeClosingBraceSniff marking indented endif in mixed inline HTML blocks -- Fixed bug [#711][sq-711] : Sniffing from STDIN shows Generic.Files.LowercasedFilename.NotFound error -- Fixed bug [#714][sq-714] : Fixes suppression of errors using docblocks - - Thanks to [Andrzej Karmazyn][@akarmazyn] for the patch -- Fixed bug [#716][sq-716] : JSON report is invalid when messages contain newlines or tabs - - Thanks to [Pieter Frenssen][@pfrenssen] for the patch -- Fixed bug [#723][sq-723] : ScopeIndent can fail when multiple array closers are on the same line -- Fixed bug [#730][sq-730] : ScopeIndent can fail when a short array opening square bracket is on a line by itself -- Fixed bug [#732][sq-732] : PHP Notice if @package name is made up of all invalid characters - - Adds new error code PEAR.Commenting.FileComment.InvalidPackageValue -- Fixed bug [#748][sq-748] : Auto fix for Squiz.Commenting.BlockComment.WrongEnd is incorrect - - Thanks to [J.D. Grimes][@JDGrimes] for the patch -- Fixed bug [#753][sq-753] : PSR2 standard shouldn't require space after USE block when next code is a closing tag -- Fixed bug [#768][sq-768] : PEAR FunctionCallSignature sniff forbids comments after opening parenthesis of a multiline call -- Fixed bug [#769][sq-769] : Incorrect detection of variable reference operator when used with short array syntax - - Thanks to [Klaus Purer][@klausi] for the patch -- Fixed bug [#772][sq-772] : Syntax error when using PHPCBF on alternative style foreach loops -- Fixed bug [#773][sq-773] : Syntax error when stripping trailing PHP close tag and previous statement has no semicolon -- Fixed bug [#778][sq-778] : PHPCBF creates invalid PHP for inline FOREACH containing multiple control structures -- Fixed bug [#781][sq-781] : Incorrect checking for PHP7 return types on multi-line function declarations -- Fixed bug [#782][sq-782] : Conditional function declarations cause fixing conflicts in Squiz standard - - Squiz.ControlStructures.ControlSignature no longer enforces a single newline after open brace - - Squiz.WhiteSpace.ControlStructureSpacing can be used to check spacing at the start/end of control structures - -[sq-601]: https://github.com/squizlabs/PHP_CodeSniffer/issues/601 -[sq-625]: https://github.com/squizlabs/PHP_CodeSniffer/issues/625 -[sq-692]: https://github.com/squizlabs/PHP_CodeSniffer/pull/692 -[sq-694]: https://github.com/squizlabs/PHP_CodeSniffer/issues/694 -[sq-698]: https://github.com/squizlabs/PHP_CodeSniffer/issues/698 -[sq-704]: https://github.com/squizlabs/PHP_CodeSniffer/issues/704 -[sq-707]: https://github.com/squizlabs/PHP_CodeSniffer/pull/707 -[sq-709]: https://github.com/squizlabs/PHP_CodeSniffer/issues/709 -[sq-711]: https://github.com/squizlabs/PHP_CodeSniffer/issues/711 -[sq-714]: https://github.com/squizlabs/PHP_CodeSniffer/pull/714 -[sq-716]: https://github.com/squizlabs/PHP_CodeSniffer/pull/716 -[sq-723]: https://github.com/squizlabs/PHP_CodeSniffer/issues/723 -[sq-730]: https://github.com/squizlabs/PHP_CodeSniffer/pull/730 -[sq-732]: https://github.com/squizlabs/PHP_CodeSniffer/pull/732 -[sq-748]: https://github.com/squizlabs/PHP_CodeSniffer/pull/748 -[sq-753]: https://github.com/squizlabs/PHP_CodeSniffer/issues/753 -[sq-765]: https://github.com/squizlabs/PHP_CodeSniffer/issues/765 -[sq-768]: https://github.com/squizlabs/PHP_CodeSniffer/issues/768 -[sq-769]: https://github.com/squizlabs/PHP_CodeSniffer/pull/769 -[sq-772]: https://github.com/squizlabs/PHP_CodeSniffer/issues/772 -[sq-773]: https://github.com/squizlabs/PHP_CodeSniffer/issues/773 -[sq-778]: https://github.com/squizlabs/PHP_CodeSniffer/issues/778 -[sq-781]: https://github.com/squizlabs/PHP_CodeSniffer/issues/781 -[sq-782]: https://github.com/squizlabs/PHP_CodeSniffer/issues/782 - -## [2.3.4] - 2015-09-09 - -### Changed -- JSON report format now includes the fixable status for each error message and the total number of fixable errors -- Added more guard code for function declarations with syntax errors -- Added tokenizer support for the PHP declare construct - - Thanks to [Andy Blyler][@ablyler] for the patch -- Generic UnnecessaryStringConcatSniff can now allow strings concatenated over multiple lines - - Set the allowMultiline property to TRUE (default is FALSE) in your ruleset.xml file to enable this - - By default, concat used only for getting around line length limits still generates an error - - Thanks to [Stefan Lenselink][@stefanlenselink] for the contribution -- Invalid byte sequences no longer throw iconv_strlen() errors (request [#639][sq-639]) - - Thanks to [Willem Stuursma][@willemstuursma] for the patch -- Generic TodoSniff and FixmeSniff are now better at processing strings with invalid characters -- PEAR FunctionCallSignatureSniff now ignores indentation of inline HTML content -- Squiz ControlSignatureSniff now supports control structures with only inline HTML content - -### Fixed -- Fixed bug [#636][sq-636] : Some class names cause CSS tokenizer to hang -- Fixed bug [#638][sq-638] : VCS blame reports output error content from the blame commands for files not under VC -- Fixed bug [#642][sq-642] : Method params incorrectly detected when default value uses short array syntax - - Thanks to [Josh Davis][@joshdavis11] for the patch -- Fixed bug [#644][sq-644] : PEAR ScopeClosingBrace sniff does not work with mixed HTML/PHP -- Fixed bug [#645][sq-645] : FunctionSignature and ScopeIndent sniffs don't detect indents correctly when PHP open tag is not on a line by itself -- Fixed bug [#648][sq-648] : Namespace not tokenized correctly when followed by multiple use statements -- Fixed bug [#654][sq-654] : Comments affect indent check for BSDAllman brace style -- Fixed bug [#658][sq-658] : Squiz.Functions.FunctionDeclarationSpacing error for multi-line declarations with required spaces greater than zero - - Thanks to [J.D. Grimes][@JDGrimes] for the patch -- Fixed bug [#663][sq-663] : No space after class name generates: Class name "" is not in camel caps format -- Fixed bug [#667][sq-667] : Scope indent check can go into infinite loop due to some parse errors -- Fixed bug [#670][sq-670] : Endless loop in PSR1 SideEffects sniffer if no semicolon after last statement - - Thanks to [Thomas Jarosch][@thomasjfox] for the patch -- Fixed bug [#672][sq-672] : Call-time pass-by-reference false positive -- Fixed bug [#683][sq-683] : Comments are incorrectly reported by PSR2.ControlStructures.SwitchDeclaration sniff -- Fixed bug [#687][sq-687] : ScopeIndent does not check indent correctly for method prefixes like public and abstract -- Fixed bug [#689][sq-689] : False error on some comments after class closing brace - -[sq-636]: https://github.com/squizlabs/PHP_CodeSniffer/issues/636 -[sq-638]: https://github.com/squizlabs/PHP_CodeSniffer/issues/638 -[sq-639]: https://github.com/squizlabs/PHP_CodeSniffer/pull/639 -[sq-642]: https://github.com/squizlabs/PHP_CodeSniffer/pull/642 -[sq-644]: https://github.com/squizlabs/PHP_CodeSniffer/issues/644 -[sq-645]: https://github.com/squizlabs/PHP_CodeSniffer/issues/645 -[sq-648]: https://github.com/squizlabs/PHP_CodeSniffer/issues/648 -[sq-654]: https://github.com/squizlabs/PHP_CodeSniffer/issues/654 -[sq-658]: https://github.com/squizlabs/PHP_CodeSniffer/pull/658 -[sq-663]: https://github.com/squizlabs/PHP_CodeSniffer/issues/663 -[sq-667]: https://github.com/squizlabs/PHP_CodeSniffer/issues/667 -[sq-670]: https://github.com/squizlabs/PHP_CodeSniffer/pull/670 -[sq-672]: https://github.com/squizlabs/PHP_CodeSniffer/issues/672 -[sq-683]: https://github.com/squizlabs/PHP_CodeSniffer/issues/683 -[sq-687]: https://github.com/squizlabs/PHP_CodeSniffer/issues/687 -[sq-689]: https://github.com/squizlabs/PHP_CodeSniffer/issues/689 - -## [2.3.3] - 2015-06-24 - -### Changed -- Improved the performance of the CSS tokenizer, especially on very large CSS files (thousands of lines) - - Thanks to [Klaus Purer][@klausi] for the patch -- Defined tokens for lower PHP versions are now phpcs-specific strings instead of ints - - Stops conflict with other projects, like PHP_CodeCoverage -- Added more guard code for syntax errors to various sniffs -- Improved support for older HHVM versions - - Thanks to [Kunal Mehta][@legoktm] for the patch -- Squiz ValidLogicalOperatorsSniff now ignores XOR as type casting is different when using the ^ operator (request [#567][sq-567]) -- Squiz CommentedOutCodeSniff is now better at ignoring URLs inside comments -- Squiz ControlSignatureSniff is now better at checking embedded PHP code -- Squiz ScopeClosingBraceSniff is now better at checking embedded PHP code - -### Fixed -- Fixed bug [#584][sq-584] : Squiz.Arrays.ArrayDeclaration sniff gives incorrect NoComma error for multiline string values -- Fixed bug [#589][sq-589] : PEAR.Functions.FunctionCallSignature sniff not checking all function calls -- Fixed bug [#592][sq-592] : USE statement tokenizing can sometimes result in mismatched scopes -- Fixed bug [#594][sq-594] : Tokenizer issue on closure that returns by reference -- Fixed bug [#595][sq-595] : Colons in CSS selectors within media queries throw false positives - - Thanks to [Klaus Purer][@klausi] for the patch -- Fixed bug [#598][sq-598] : PHPCBF can break function/use closure brace placement -- Fixed bug [#603][sq-603] : Squiz ControlSignatureSniff hard-codes opener type while fixing -- Fixed bug [#605][sq-605] : Auto report-width specified in ruleset.xml ignored -- Fixed bug [#611][sq-611] : Invalid numeric literal on CSS files under PHP7 -- Fixed bug [#612][sq-612] : Multi-file diff generating incorrectly if files do not end with EOL char -- Fixed bug [#615][sq-615] : Squiz OperatorBracketSniff incorrectly reports and fixes operations using self:: -- Fixed bug [#616][sq-616] : Squiz DisallowComparisonAssignmentSniff inconsistent errors with inline IF statements -- Fixed bug [#617][sq-617] : Space after switch keyword in PSR-2 is not being enforced -- Fixed bug [#621][sq-621] : PSR2 SwitchDeclaration sniff doesn't detect, or correctly fix, case body on same line as statement - -[sq-567]: https://github.com/squizlabs/PHP_CodeSniffer/issues/567 -[sq-584]: https://github.com/squizlabs/PHP_CodeSniffer/issues/584 -[sq-589]: https://github.com/squizlabs/PHP_CodeSniffer/issues/589 -[sq-592]: https://github.com/squizlabs/PHP_CodeSniffer/issues/592 -[sq-594]: https://github.com/squizlabs/PHP_CodeSniffer/issues/594 -[sq-595]: https://github.com/squizlabs/PHP_CodeSniffer/pull/595 -[sq-598]: https://github.com/squizlabs/PHP_CodeSniffer/issues/598 -[sq-603]: https://github.com/squizlabs/PHP_CodeSniffer/issues/603 -[sq-605]: https://github.com/squizlabs/PHP_CodeSniffer/issues/605 -[sq-611]: https://github.com/squizlabs/PHP_CodeSniffer/issues/611 -[sq-612]: https://github.com/squizlabs/PHP_CodeSniffer/issues/612 -[sq-615]: https://github.com/squizlabs/PHP_CodeSniffer/issues/615 -[sq-616]: https://github.com/squizlabs/PHP_CodeSniffer/issues/616 -[sq-617]: https://github.com/squizlabs/PHP_CodeSniffer/issues/617 -[sq-621]: https://github.com/squizlabs/PHP_CodeSniffer/issues/621 - -## [2.3.2] - 2015-04-29 - -### Changed -- The error message for PSR2.ControlStructures.SwitchDeclaration.WrongOpenercase is now clearer (request [#579][sq-579]) - -### Fixed -- Fixed bug [#545][sq-545] : Long list of CASE statements can cause tokenizer to reach a depth limit -- Fixed bug [#565][sq-565] : Squiz.WhiteSpace.OperatorSpacing reports negative number in short array - - Thanks to [Vašek Purchart][@VasekPurchart] for the patch - - Same fix also applied to Squiz.Formatting.OperatorBracket -- Fixed bug [#569][sq-569] : Generic ScopeIndentSniff throws PHP notices in JS files -- Fixed bug [#570][sq-570] : Phar class fatals in PHP less than 5.3 - -[sq-545]: https://github.com/squizlabs/PHP_CodeSniffer/issues/545 -[sq-565]: https://github.com/squizlabs/PHP_CodeSniffer/pull/565 -[sq-569]: https://github.com/squizlabs/PHP_CodeSniffer/pull/569 -[sq-570]: https://github.com/squizlabs/PHP_CodeSniffer/issues/570 -[sq-579]: https://github.com/squizlabs/PHP_CodeSniffer/issues/579 - -## [2.3.1] - 2015-04-23 - -### Changed -- PHPCS can now exit with 0 even if errors are found - - Set the ignore_errors_on_exit config variable to 1 to set this behaviour - - Use with the ignore_warnings_on_exit config variable to never return a non-zero exit code -- Added Generic DisallowLongArraySyntaxSniff to enforce the use of the PHP short array syntax (request [#483][sq-483]) - - Thanks to [Xaver Loppenstedt][@xalopp] for helping with tests -- Added Generic DisallowShortArraySyntaxSniff to ban the use of the PHP short array syntax (request [#483][sq-483]) - - Thanks to [Xaver Loppenstedt][@xalopp] for helping with tests -- Generic ScopeIndentSniff no longer does exact checking for content inside parenthesis (request [#528][sq-528]) - - Only applies to custom coding standards that set the "exact" flag to TRUE -- Squiz ConcatenationSpacingSniff now has a setting to ignore newline characters around operators (request [#511][sq-511]) - - Default remains FALSE, so newlines are not allowed - - Override the "ignoreNewlines" setting in a ruleset.xml file to change -- Squiz InlineCommentSniff no longer checks the last char of a comment if the first char is not a letter (request [#505][sq-505]) -- The Squiz standard has increased the max padding for statement alignment from 12 to 20 - -### Fixed -- Fixed bug [#479][sq-479] : Yielded values are not recognised as returned values in Squiz FunctionComment sniff -- Fixed bug [#512][sq-512] : Endless loop whilst parsing mixture of control structure styles -- Fixed bug [#515][sq-515] : Spaces in JS block incorrectly flagged as indentation error -- Fixed bug [#523][sq-523] : Generic ScopeIndent errors for IF in FINALLY -- Fixed bug [#527][sq-527] : Closure inside IF statement is not tokenized correctly -- Fixed bug [#529][sq-529] : Squiz.Strings.EchoedStrings gives false positive when echoing using an inline condition -- Fixed bug [#537][sq-537] : Using --config-set is breaking phpcs.phar -- Fixed bug [#543][sq-543] : SWITCH with closure in condition generates inline control structure error -- Fixed bug [#551][sq-551] : Multiple catch blocks not checked in Squiz.ControlStructures.ControlSignature sniff -- Fixed bug [#554][sq-554] : ScopeIndentSniff causes errors when encountering an unmatched parenthesis -- Fixed bug [#558][sq-558] : PHPCBF adds brace for ELSE IF split over multiple lines -- Fixed bug [#564][sq-564] : Generic MultipleStatementAlignment sniff reports incorrect errors for multiple assignments on a single line - -[sq-479]: https://github.com/squizlabs/PHP_CodeSniffer/issues/479 -[sq-483]: https://github.com/squizlabs/PHP_CodeSniffer/issues/483 -[sq-505]: https://github.com/squizlabs/PHP_CodeSniffer/issues/505 -[sq-511]: https://github.com/squizlabs/PHP_CodeSniffer/issues/511 -[sq-512]: https://github.com/squizlabs/PHP_CodeSniffer/issues/512 -[sq-515]: https://github.com/squizlabs/PHP_CodeSniffer/issues/515 -[sq-523]: https://github.com/squizlabs/PHP_CodeSniffer/issues/523 -[sq-527]: https://github.com/squizlabs/PHP_CodeSniffer/issues/527 -[sq-528]: https://github.com/squizlabs/PHP_CodeSniffer/issues/528 -[sq-529]: https://github.com/squizlabs/PHP_CodeSniffer/issues/529 -[sq-537]: https://github.com/squizlabs/PHP_CodeSniffer/issues/537 -[sq-543]: https://github.com/squizlabs/PHP_CodeSniffer/issues/543 -[sq-551]: https://github.com/squizlabs/PHP_CodeSniffer/issues/551 -[sq-554]: https://github.com/squizlabs/PHP_CodeSniffer/issues/554 -[sq-558]: https://github.com/squizlabs/PHP_CodeSniffer/issues/558 -[sq-564]: https://github.com/squizlabs/PHP_CodeSniffer/issues/564 - -## [2.3.0] - 2015-03-04 - -### Changed -- The existence of the main config file is now cached to reduce is_file() calls when it doesn't exist (request [#486][sq-486]) -- Abstract classes inside the Sniffs directory are now ignored even if they are named `[Name]Sniff.php` (request [#476][sq-476]) - - Thanks to [David Vernet][@Decave] for the patch -- PEAR and Squiz FileComment sniffs no longer have @ in their error codes - - e.g., PEAR.Commenting.FileComment.Duplicate@categoryTag becomes PEAR.Commenting.FileComment.DuplicateCategoryTag - - e.g., Squiz.Commenting.FileComment.Missing@categoryTag becomes Squiz.Commenting.FileComment.MissingCategoryTag -- PEAR MultiLineConditionSniff now allows comment lines inside multi-line IF statement conditions - - Thanks to [Klaus Purer][@klausi] for the patch -- Generic ForbiddenFunctionsSniff now supports setting null replacements in ruleset files (request [#263][sq-263]) -- Generic opening function brace sniffs now support checking of closures - - Set the checkClosures property to TRUE (default is FALSE) in your ruleset.xml file to enable this - - Can also set the checkFunctions property to FALSE (default is TRUE) in your ruleset.xml file to only check closures - - Affects OpeningFunctionBraceBsdAllmanSniff and OpeningFunctionBraceKernighanRitchieSniff -- Generic OpeningFunctionBraceKernighanRitchieSniff can now fix all the errors it finds -- Generic OpeningFunctionBraceKernighanRitchieSniff now allows empty functions with braces next to each other -- Generic OpeningFunctionBraceBsdAllmanSniff now allows empty functions with braces next to each other -- Improved auto report width for the "full" report -- Improved conflict detection during auto fixing -- Generic ScopeIndentSniff is no longer confused by empty closures -- Squiz ControlSignatureSniff now always ignores comments (fixes bug [#490][sq-490]) - - Include the Squiz.Commenting.PostStatementComment sniff in your ruleset.xml to ban these comments again -- Squiz OperatorSpacingSniff no longer throws errors for code in the form ($foo || -1 === $bar) -- Fixed errors tokenizing T_ELSEIF tokens on HHVM 3.5 -- Squiz ArrayDeclarationSniff is no longer tricked by comments after array values -- PEAR IncludingFileSniff no longer produces invalid code when removing parenthesis from require/include statements - -### Fixed -- Fixed bug [#415][sq-415] : The @codingStandardsIgnoreStart has no effect during fixing -- Fixed bug [#432][sq-432] : Properties of custom sniffs cannot be configured -- Fixed bug [#453][sq-453] : PSR2 standard does not allow closing tag for mixed PHP/HTML files -- Fixed bug [#457][sq-457] : FunctionCallSignature sniffs do not support here/nowdoc syntax and can cause syntax error when fixing -- Fixed bug [#466][sq-466] : PropertyLabelSpacing JS fixer issue when there is no space after colon -- Fixed bug [#473][sq-473] : Writing a report for an empty folder to existing file includes the existing contents -- Fixed bug [#485][sq-485] : PHP notice in Squiz.Commenting.FunctionComment when checking malformed @throws comment -- Fixed bug [#491][sq-491] : Generic InlineControlStructureSniff can correct with missing semicolon - - Thanks to [Jesse Donat][@donatj] for the patch -- Fixed bug [#492][sq-492] : Use statements don't increase the scope indent -- Fixed bug [#493][sq-493] : PSR1_Sniffs_Methods_CamelCapsMethodNameSniff false positives for some magic method detection - - Thanks to [Andreas Möller][@localheinz] for the patch -- Fixed bug [#496][sq-496] : Closures in PSR2 are not checked for a space after the function keyword -- Fixed bug [#497][sq-497] : Generic InlineControlStructureSniff does not support alternative SWITCH syntax -- Fixed bug [#500][sq-500] : Functions not supported as values in Squiz ArrayDeclaration sniff -- Fixed bug [#501][sq-501] : ScopeClosingBrace and ScopeIndent conflict with closures used as array values - - Generic ScopeIndentSniff may now report fewer errors for closures, but perform the same fixes -- Fixed bug [#502][sq-502] : PSR1 SideEffectsSniff sees declare() statements as side effects - -[sq-415]: https://github.com/squizlabs/PHP_CodeSniffer/issues/415 -[sq-432]: https://github.com/squizlabs/PHP_CodeSniffer/issues/432 -[sq-453]: https://github.com/squizlabs/PHP_CodeSniffer/issues/453 -[sq-457]: https://github.com/squizlabs/PHP_CodeSniffer/issues/457 -[sq-466]: https://github.com/squizlabs/PHP_CodeSniffer/issues/466 -[sq-473]: https://github.com/squizlabs/PHP_CodeSniffer/issues/473 -[sq-476]: https://github.com/squizlabs/PHP_CodeSniffer/issues/476 -[sq-485]: https://github.com/squizlabs/PHP_CodeSniffer/issues/485 -[sq-486]: https://github.com/squizlabs/PHP_CodeSniffer/issues/486 -[sq-490]: https://github.com/squizlabs/PHP_CodeSniffer/issues/490 -[sq-491]: https://github.com/squizlabs/PHP_CodeSniffer/pull/491 -[sq-492]: https://github.com/squizlabs/PHP_CodeSniffer/pull/492 -[sq-493]: https://github.com/squizlabs/PHP_CodeSniffer/pull/493 -[sq-496]: https://github.com/squizlabs/PHP_CodeSniffer/issues/496 -[sq-497]: https://github.com/squizlabs/PHP_CodeSniffer/issues/497 -[sq-500]: https://github.com/squizlabs/PHP_CodeSniffer/issues/500 -[sq-501]: https://github.com/squizlabs/PHP_CodeSniffer/issues/501 -[sq-502]: https://github.com/squizlabs/PHP_CodeSniffer/issues/502 - -## [2.2.0] - 2015-01-22 - -### Changed -- Added (hopefully) tastefully used colors to report and progress output for the phpcs command - - Use the --colors command line argument to use colors in output - - Use the command "phpcs --config-set colors true" to turn colors on by default - - Use the --no-colors command line argument to turn colors off when the config value is set -- Added support for using the full terminal width for report output - - Use the --report-width=auto command line argument to auto-size the reports - - Use the command "phpcs --config-set report_width auto" to use auto-sizing by default -- Reports will now size to fit inside the report width setting instead of always using padding to fill the space -- If no files or standards are specified, PHPCS will now look for a phpcs.xml file in the current directory - - This file has the same format as a standard ruleset.xml file - - The phpcs.xml file should specify (at least) files to process and a standard/sniffs to use - - Useful for running the phpcs and phpcbf commands without any arguments at the top of a repository -- Default file paths can now be specified in a ruleset.xml file using the "file" tag - - File paths are only processed if no files were specified on the command line -- Extensions specified on the CLI are now merged with those set in ruleset.xml files - - Previously, the ruleset.xml file setting replaced the CLI setting completely -- Squiz coding standard now requires lowercase PHP constants (true, false and null) - - Removed Squiz.NamingConventions.ConstantCase sniff as the rule is now consistent across PHP and JS files -- Squiz FunctionOpeningBraceSpaceSniff no longer does additional checks for JS functions - - PHP and JS functions and closures are now treated the same way -- Squiz MultiLineFunctionDeclarationSniff now supports JS files -- Interactive mode no longer breaks if you also specify a report type on the command line -- PEAR InlineCommentSniff now fixes the Perl-style comments that it finds (request [#375][sq-375]) -- PSR2 standard no longer fixes the placement of docblock open tags as comments are excluded from this standard -- PSR2 standard now sets a default tab width of 4 spaces -- Generic DocCommentSniff now only disallows lowercase letters at the start of a long/short comment (request [#377][sq-377]) - - All non-letter characters are now allowed, including markdown special characters and numbers -- Generic DisallowMultipleStatementsSniff now allows multiple open/close tags on the same line (request [#423][sq-423]) -- Generic CharacterBeforePHPOpeningTagSniff now only checks the first PHP tag it finds (request [#423][sq-423]) -- Generic CharacterBeforePHPOpeningTagSniff now allows a shebang line at the start of the file (request [#20481][pear-20481]) -- Generic InlineHTMLUnitTest now allows a shebang line at the start of the file (request [#20481][pear-20481]) -- PEAR ObjectOperatorIndentSniff now only checks object operators at the start of a line -- PEAR FileComment and ClassComment sniffs no longer have @ in their error codes - - E.g., PEAR.Commenting.FileComment.Missing@categoryTag becomes PEAR.Commenting.FileComment.MissingCategoryTag - - Thanks to [Grzegorz Rygielski][@grzr] for the patch -- Squiz ControlStructureSpacingSniff no longer enforces a blank line before CATCH statements -- Squiz FunctionCommentSniff now fixes the return type in the @return tag (request [#392][sq-392]) -- Squiz BlockCommentSniff now only disallows lowercase letters at the start of the comment -- Squiz InlineCommentSniff now only disallows lowercase letters at the start of the comment -- Squiz OperatorSpacingSniff now has a setting to ignore newline characters around operators (request [#348][sq-348]) - - Default remains FALSE, so newlines are not allowed - - Override the "ignoreNewlines" setting in a ruleset.xml file to change -- PSR2 ControlStructureSpacingSniff now checks for, and fixes, newlines after the opening parenthesis -- Added a markdown document generator (--generator=markdown to use) - - Thanks to [Stefano Kowalke][@Konafets] for the contribution - -### Fixed -- Fixed bug [#379][sq-379] : Squiz.Arrays.ArrayDeclaration.NoCommaAfterLast incorrectly detects comments -- Fixed bug [#382][sq-382] : JS tokenizer incorrect for inline conditionally created immediately invoked anon function -- Fixed bug [#383][sq-383] : Squiz.Arrays.ArrayDeclaration.ValueNoNewline incorrectly detects nested arrays -- Fixed bug [#386][sq-386] : Undefined offset in Squiz.FunctionComment sniff when param has no comment -- Fixed bug [#390][sq-390] : Indentation of non-control structures isn't adjusted when containing structure is fixed -- Fixed bug [#400][sq-400] : InlineControlStructureSniff fails to fix when statement has no semicolon -- Fixed bug [#401][sq-401] : PHPCBF no-patch option shows an error when there are no fixable violations in a file -- Fixed bug [#405][sq-405] : The "Squiz.WhiteSpace.FunctionSpacing" sniff removes class "}" during fixing -- Fixed bug [#407][sq-407] : PEAR.ControlStructures.MultiLineCondition doesn't account for comments at the end of lines -- Fixed bug [#410][sq-410] : The "Squiz.WhiteSpace.MemberVarSpacing" not respecting "var" -- Fixed bug [#411][sq-411] : Generic.WhiteSpace.ScopeIndent.Incorrect - false positive with multiple arrays in argument list -- Fixed bug [#412][sq-412] : PSR2 multi-line detection doesn't work for inline IF and string concats -- Fixed bug [#414][sq-414] : Squiz.WhiteSpace.MemberVarSpacing - inconsistent checking of member vars with comment -- Fixed bug [#433][sq-433] : Wrong detection of Squiz.Arrays.ArrayDeclaration.KeyNotAligned when key contains space -- Fixed bug [#434][sq-434] : False positive for spacing around "=>" in inline array within foreach -- Fixed bug [#452][sq-452] : Ruleset exclude-pattern for specific sniff code ignored when using CLI --ignore option -- Fixed bug [#20482][pear-20482] : Scope indent sniff can get into infinite loop when processing a parse error - -[sq-348]: https://github.com/squizlabs/PHP_CodeSniffer/issues/348 -[sq-375]: https://github.com/squizlabs/PHP_CodeSniffer/issues/375 -[sq-377]: https://github.com/squizlabs/PHP_CodeSniffer/issues/377 -[sq-379]: https://github.com/squizlabs/PHP_CodeSniffer/issues/379 -[sq-382]: https://github.com/squizlabs/PHP_CodeSniffer/issues/382 -[sq-383]: https://github.com/squizlabs/PHP_CodeSniffer/issues/383 -[sq-386]: https://github.com/squizlabs/PHP_CodeSniffer/issues/386 -[sq-390]: https://github.com/squizlabs/PHP_CodeSniffer/issues/390 -[sq-392]: https://github.com/squizlabs/PHP_CodeSniffer/issues/392 -[sq-400]: https://github.com/squizlabs/PHP_CodeSniffer/issues/400 -[sq-401]: https://github.com/squizlabs/PHP_CodeSniffer/issues/401 -[sq-405]: https://github.com/squizlabs/PHP_CodeSniffer/issues/405 -[sq-407]: https://github.com/squizlabs/PHP_CodeSniffer/issues/407 -[sq-410]: https://github.com/squizlabs/PHP_CodeSniffer/issues/410 -[sq-411]: https://github.com/squizlabs/PHP_CodeSniffer/issues/411 -[sq-412]: https://github.com/squizlabs/PHP_CodeSniffer/issues/412 -[sq-414]: https://github.com/squizlabs/PHP_CodeSniffer/issues/414 -[sq-423]: https://github.com/squizlabs/PHP_CodeSniffer/issues/423 -[sq-433]: https://github.com/squizlabs/PHP_CodeSniffer/issues/433 -[sq-434]: https://github.com/squizlabs/PHP_CodeSniffer/issues/434 -[sq-452]: https://github.com/squizlabs/PHP_CodeSniffer/issues/452 -[pear-20481]: https://pear.php.net/bugs/bug.php?id=20481 -[pear-20482]: https://pear.php.net/bugs/bug.php?id=20482 - -## [2.1.0] - 2014-12-18 - -### Changed -- Time and memory output is now shown if progress information is also shown (request [#335][sq-335]) -- A tilde can now be used to reference a user's home directory in a path to a standard (request [#353][sq-353]) -- Added PHP_CodeSniffer_File::findStartOfStatement() to find the first non-whitespace token in a statement - - Possible alternative for code using PHP_CodeSniffer_File::findPrevious() with the local flag set -- Added PHP_CodeSniffer_File::findEndOfStatement() to find the last non-whitespace token in a statement - - Possible alternative for code using PHP_CodeSniffer_File::findNext() with the local flag set -- Generic opening function brace sniffs now ensure the opening brace is the last content on the line - - Affects OpeningFunctionBraceBsdAllmanSniff and OpeningFunctionBraceKernighanRitchieSniff - - Also enforced in PEAR FunctionDeclarationSniff and Squiz MultiLineFunctionDeclarationSniff -- Generic DisallowTabIndentSniff now replaces tabs everywhere it finds them, except in strings and here/now docs -- Generic EmptyStatementSniff error codes now contain the type of empty statement detected (request [#314][sq-314]) - - All messages generated by this sniff are now errors (empty CATCH was previously a warning) - - Message code `Generic.CodeAnalysis.EmptyStatement.NotAllowed` has been removed - - Message code `Generic.CodeAnalysis.EmptyStatement.NotAllowedWarning` has been removed - - New message codes have the format `Generic.CodeAnalysis.EmptyStatement.Detected[TYPE]` - - Example code is `Generic.CodeAnalysis.EmptyStatement.DetectedCATCH` - - You can now use a custom ruleset to change messages to warnings and to exclude them -- PEAR and Squiz FunctionCommentSniffs no longer ban `@return` tags for constructors and destructors - - Removed message PEAR.Commenting.FunctionComment.ReturnNotRequired - - Removed message Squiz.Commenting.FunctionComment.ReturnNotRequired - - Change initiated by request [#324][sq-324] and request [#369][sq-369] -- Squiz EmptyStatementSniff has been removed - - Squiz standard now includes Generic EmptyStatementSniff and turns off the empty CATCH error -- Squiz ControlSignatureSniff fixes now retain comments between the closing parenthesis and open brace -- Squiz SuperfluousWhitespaceSniff now checks for extra blank lines inside closures - - Thanks to [Sertan Danis][@sertand] for the patch -- Squiz ArrayDeclarationSniff now skips function calls while checking multi-line arrays - -### Fixed -- Fixed bug [#337][sq-337] : False positive with anonymous functions in Generic_Sniffs_WhiteSpace_ScopeIndentSniff -- Fixed bug [#339][sq-339] : reformatting brace location can result in broken code -- Fixed bug [#342][sq-342] : Nested ternary operators not tokenized correctly -- Fixed bug [#345][sq-345] : Javascript regex not tokenized when inside array -- Fixed bug [#346][sq-346] : PHP path can't be determined in some cases in "phpcs.bat" (on Windows XP) -- Fixed bug [#358][sq-358] : False positives for Generic_Sniffs_WhiteSpace_ScopeIndentSniff -- Fixed bug [#361][sq-361] : Sniff-specific exclude patterns don't work for Windows -- Fixed bug [#364][sq-364] : Don't interpret "use function" as declaration -- Fixed bug [#366][sq-366] : phpcbf with PSR2 errors on control structure alternative syntax -- Fixed bug [#367][sq-367] : Nested Anonymous Functions Causing False Negative -- Fixed bug [#371][sq-371] : Shorthand binary cast causes tokenizer errors - - New token T_BINARY_CAST added for the b"string" cast format (the 'b' is the T_BINARY_CAST token) -- Fixed bug [#372][sq-372] : phpcbf parse problem, wrong brace placement for inline IF -- Fixed bug [#373][sq-373] : Double quote usage fix removing too many double quotes -- Fixed bug [#20196][pear-20196] : 1.5.2 breaks scope_closer position - -[sq-314]: https://github.com/squizlabs/PHP_CodeSniffer/issues/314 -[sq-324]: https://github.com/squizlabs/PHP_CodeSniffer/issues/324 -[sq-335]: https://github.com/squizlabs/PHP_CodeSniffer/issues/335 -[sq-337]: https://github.com/squizlabs/PHP_CodeSniffer/issues/337 -[sq-339]: https://github.com/squizlabs/PHP_CodeSniffer/issues/339 -[sq-342]: https://github.com/squizlabs/PHP_CodeSniffer/issues/342 -[sq-345]: https://github.com/squizlabs/PHP_CodeSniffer/issues/345 -[sq-346]: https://github.com/squizlabs/PHP_CodeSniffer/issues/346 -[sq-353]: https://github.com/squizlabs/PHP_CodeSniffer/issues/353 -[sq-358]: https://github.com/squizlabs/PHP_CodeSniffer/issues/358 -[sq-361]: https://github.com/squizlabs/PHP_CodeSniffer/issues/361 -[sq-364]: https://github.com/squizlabs/PHP_CodeSniffer/pull/364 -[sq-366]: https://github.com/squizlabs/PHP_CodeSniffer/issues/366 -[sq-367]: https://github.com/squizlabs/PHP_CodeSniffer/issues/367 -[sq-369]: https://github.com/squizlabs/PHP_CodeSniffer/issues/369 -[sq-371]: https://github.com/squizlabs/PHP_CodeSniffer/issues/371 -[sq-372]: https://github.com/squizlabs/PHP_CodeSniffer/issues/372 -[sq-373]: https://github.com/squizlabs/PHP_CodeSniffer/issues/373 -[pear-20196]: https://pear.php.net/bugs/bug.php?id=20196 - -## [2.0.0] - 2014-12-05 - -### Changed -- JS tokenizer now sets functions as T_CLOSUREs if the function is anonymous -- JS tokenizer now sets all objects to T_OBJECT - - Object end braces are set to a new token T_CLOSE_OBJECT - - T_OBJECT tokens no longer act like scopes; i.e., they have no condition/opener/closer - - T_PROPERTY tokens no longer act like scopes; i.e., they have no condition/opener/closer - - T_OBJECT tokens have a bracket_closer instead, which can be used to find the ending - - T_CLOSE_OBJECT tokens have a bracket_opener -- Improved regular expression detection in the JS tokenizer -- You can now get PHP_CodeSniffer to ignore a single line by putting @codingStandardsIgnoreLine in a comment - - When the comment is found, the comment line and the following line will be ignored - - Thanks to [Andy Bulford][@abulford] for the contribution -- PHPCBF now prints output when it is changing into directories -- Improved conflict detection during auto fixing -- The -vvv command line argument will now output the current file content for each loop during fixing -- Generic ScopeIndentSniff now checks that open/close PHP tags are aligned to the correct column -- PEAR FunctionCallSignatureSniff now checks indent of closing parenthesis even if it is not on a line by itself -- PEAR FunctionCallSignatureSniff now supports JS files -- PEAR MultiLineConditionSniff now supports JS files -- Squiz DocCommentAlignmentSniff now supports JS files -- Fixed a problem correcting the closing brace line in Squiz ArrayDeclarationSniff -- Fixed a problem auto-fixing the Squiz.WhiteSpace.FunctionClosingBraceSpace.SpacingBeforeNestedClose error -- Squiz EmbeddedPhpSniff no longer reports incorrect alignment of tags when they are not on new lines -- Squiz EmbeddedPhpSniff now aligns open tags correctly when moving them onto a new line -- Improved fixing of arrays with multiple values in Squiz ArrayDeclarationSniff -- Improved detection of function comments in Squiz FunctionCommentSpacingSniff -- Improved fixing of lines after cases statements in Squiz SwitchDeclarationSniff - -### Fixed -- Fixed bug [#311][sq-311] : Suppression of function prototype breaks checking of lines within function -- Fixed bug [#320][sq-320] : Code sniffer indentation issue -- Fixed bug [#333][sq-333] : Nested ternary operators causing problems - -[sq-320]: https://github.com/squizlabs/PHP_CodeSniffer/issues/320 -[sq-333]: https://github.com/squizlabs/PHP_CodeSniffer/issues/333 - -## [1.5.6] - 2014-12-05 - -### Changed -- JS tokenizer now detects xor statements correctly -- The --config-show command now pretty-prints the config values - - Thanks to [Ken Guest][@kenguest] for the patch -- Setting and removing config values now catches exceptions if the config file is not writable - - Thanks to [Ken Guest][@kenguest] for the patch -- Setting and removing config values now prints a message to confirm the action and show old values -- You can now get PHP_CodeSniffer to ignore a single line by putting @codingStandardsIgnoreLine in a comment - - When the comment is found, the comment line and the following line will be ignored - - Thanks to [Andy Bulford][@abulford] for the contribution -- Generic ConstructorNameSniff no longer errors for PHP4 style constructors when __construct() is present - - Thanks to [Thibaud Fabre][@fabre-thibaud] for the patch - -### Fixed -- Fixed bug [#280][sq-280] : The --config-show option generates error when there is no config file -- Fixed bug [#306][sq-306] : File containing only a namespace declaration raises undefined index notice -- Fixed bug [#308][sq-308] : Squiz InlineIfDeclarationSniff fails on ternary operators inside closure -- Fixed bug [#310][sq-310] : Variadics not recognized by tokenizer -- Fixed bug [#311][sq-311] : Suppression of function prototype breaks checking of lines within function - -[sq-311]: https://github.com/squizlabs/PHP_CodeSniffer/issues/311 - -## [2.0.0RC4] - 2014-11-07 - -### Changed -- JS tokenizer now detects xor statements correctly -- Improved detection of properties and objects in the JS tokenizer -- Generic ScopeIndentSniff can now fix indents using tabs instead of spaces - - Set the tabIndent property to TRUE in your ruleset.xml file to enable this - - It is important to also set a tab-width setting, either in the ruleset or on the command line, for accuracy -- Generic ScopeIndentSniff now checks and auto-fixes JS files -- Generic DisallowSpaceIndentSniff is now able to replace space indents with tab indents during fixing -- Support for phpcs-only and phpcbf-only attributes has been added to all ruleset.xml elements - - Allows parts of the ruleset to only apply when using a specific tool - - Useful for doing things like excluding indent fixes but still reporting indent errors -- Unit tests can now set command line arguments during a test run - - Override getCliValues() and pass an array of CLI arguments for each file being tested -- File-wide sniff properties can now be set using T_INLINE_HTML content during unit test runs - - Sniffs that start checking at the open tag can only, normally, have properties set using a ruleset -- Generic ConstructorNameSniff no longer errors for PHP4 style constructors when __construct() is present - - Thanks to [Thibaud Fabre][@fabre-thibaud] for the patch -- Generic DocCommentSniff now checks that the end comment tag is on a new line -- Generic MultipleStatementAlignmentSniff no longer skips assignments for closures -- Squiz DocCommentAlignment sniff now has better checking for single line doc block -- Running unit tests with the -v CLI argument no longer generates PHP errors - -### Fixed -- Fixed bug [#295][sq-295] : ScopeIndentSniff hangs when processing nested closures -- Fixed bug [#298][sq-298] : False positive in ScopeIndentSniff when anonymous functions are used with method chaining -- Fixed bug [#302][sq-302] : Fixing code in Squiz InlineComment sniff can remove some comment text -- Fixed bug [#303][sq-303] : Open and close tag on same line can cause a PHP notice checking scope indent -- Fixed bug [#306][sq-306] : File containing only a namespace declaration raises undefined index notice -- Fixed bug [#307][sq-307] : Conditional breaks in case statements get incorrect indentations -- Fixed bug [#308][sq-308] : Squiz InlineIfDeclarationSniff fails on ternary operators inside closure -- Fixed bug [#310][sq-310] : Variadics not recognized by tokenizer - -[sq-295]: https://github.com/squizlabs/PHP_CodeSniffer/issues/295 -[sq-298]: https://github.com/squizlabs/PHP_CodeSniffer/issues/298 -[sq-302]: https://github.com/squizlabs/PHP_CodeSniffer/issues/302 -[sq-303]: https://github.com/squizlabs/PHP_CodeSniffer/issues/303 -[sq-306]: https://github.com/squizlabs/PHP_CodeSniffer/issues/306 -[sq-307]: https://github.com/squizlabs/PHP_CodeSniffer/issues/307 -[sq-308]: https://github.com/squizlabs/PHP_CodeSniffer/issues/308 -[sq-310]: https://github.com/squizlabs/PHP_CodeSniffer/issues/310 - -## [2.0.0RC3] - 2014-10-16 - -### Changed -- Improved default output for PHPCBF and removed the options to print verbose and progress output -- If a .fixed file is supplied for a unit test file, the auto fixes will be checked against it during testing - - See Generic ScopeIndentUnitTest.inc and ScopeIndentUnitTest.inc.fixed for an example -- Fixer token replacement methods now return TRUE if the change was accepted and FALSE if rejected -- The --config-show command now pretty-prints the config values - - Thanks to [Ken Guest][@kenguest] for the patch -- Setting and removing config values now catches exceptions if the config file is not writable - - Thanks to [Ken Guest][@kenguest] for the patch -- Setting and removing config values now prints a message to confirm the action and show old values -- Generic ScopeIndentSniff has been completely rewritten to improve fixing and embedded PHP detection -- Generic DisallowTabIndent and DisallowSpaceIndent sniffs now detect indents at the start of block comments -- Generic DisallowTabIndent and DisallowSpaceIndent sniffs now detect indents inside multi-line strings -- Generic DisallowTabIndentSniff now replaces tabs inside doc block comments -- Squiz ControlStructureSpacingSniff error codes have been corrected; they were reversed -- Squiz EmbeddedPhpSniff now checks open and close tag indents and fixes some errors -- Squiz FileCommentSniff no longer throws incorrect blank line before comment errors in JS files -- Squiz ClassDeclarationSniff now has better checking for blank lines after a closing brace -- Removed error Squiz.Classes.ClassDeclaration.NoNewlineAfterCloseBrace (request [#285][sq-285]) - - Already handled by Squiz.Classes.ClassDeclaration.CloseBraceSameLine - -### Fixed -- Fixed bug [#280][sq-280] : The --config-show option generates error when there is no config file - -[sq-280]: https://github.com/squizlabs/PHP_CodeSniffer/issues/280 -[sq-285]: https://github.com/squizlabs/PHP_CodeSniffer/issues/285 - -## [2.0.0RC2] - 2014-09-26 - -### Changed -- Minified JS and CSS files are now detected and skipped (fixes bug [#252][sq-252] and bug [#19899][pear-19899]) - - A warning will be added to the file so it can be found in the report and ignored in the future -- Fixed incorrect length of JS object operator tokens -- PHP tokenizer no longer converts class/function names to special tokens types - - Class/function names such as parent and true would become special tokens such as T_PARENT and T_TRUE -- PHPCS can now exit with 0 if only warnings were found (request [#262][sq-262]) - - Set the ignore_warnings_on_exit config variable to 1 to set this behaviour - - Default remains at exiting with 0 only if no errors and no warnings were found - - Also changes return value of PHP_CodeSniffer_Reporting::printReport() -- Rulesets can now set associative array properties - - property `name="[property]" type="array" value="foo=>bar,baz=>qux"` -- Generic ForbiddenFunctionsSniff now has a public property called forbiddenFunctions (request [#263][sq-263]) - - Override the property in a ruleset.xml file to define forbidden functions and their replacements - - A replacement of NULL indicates that no replacement is available - - e.g., value="delete=>unset,print=>echo,create_function=>null" - - Custom sniffs overriding this one will need to change the visibility of their member var -- Improved closure support in Generic ScopeIndentSniff -- Improved indented PHP tag support in Generic ScopeIndentSniff -- Improved fixing of mixed line indents in Generic ScopeIndentSniff -- Added conflict detection to the file fixer - - If 2 sniffs look to be conflicting, one change will be ignored to allow a fix to occur -- Generic CamelCapsFunctionNameSniff now ignores a single leading underscore - - Thanks to [Alex Slobodiskiy][@xt99] for the patch -- Standards can now be located within hidden directories (further fix for bug [#20323][pear-20323]) - - Thanks to [Klaus Purer][@klausi] for the patch -- Sniff ignore patterns now replace Win dir separators like file ignore patterns already did -- Exclude patterns now use backtick delimiters, allowing all special characters to work correctly again - - Thanks to [Jeremy Edgell][@jedgell] for the patch -- Errors converted to warnings in a ruleset (and vice versa) now retain their fixable status - - Thanks to [Alexander Obuhovich][@aik099] for the patch -- Squiz ConcatenationSpacingSniff now has a setting to specify how many spaces there should be around concat operators - - Default remains at 0 - - Override the "spacing" setting in a ruleset.xml file to change -- Added auto-fixes for Squiz InlineCommentSniff -- Generic DocCommentSniff now correctly fixes additional blank lines at the end of a comment -- Squiz OperatorBracketSniff now correctly fixes operations that include arrays -- Zend ClosingTagSniff fix now correctly leaves closing tags when followed by HTML -- Added Generic SyntaxSniff to check for syntax errors in PHP files - - Thanks to [Blaine Schmeisser][@bayleedev] for the contribution -- Added Generic OneTraitPerFileSniff to check that only one trait is defined in each file - - Thanks to [Alexander Obuhovich][@aik099] for the contribution -- Squiz DiscouragedFunctionsSniff now warns about var_dump() -- PEAR ValidFunctionNameSniff no longer throws an error for _() -- Squiz and PEAR FunctionCommentSniffs now support _() -- Generic DisallowTabIndentSniff now checks for, and fixes, mixed indents again -- Generic UpperCaseConstantSniff and LowerCaseConstantSniff now ignore function names - -### Fixed -- Fixed bug [#243][sq-243] : Missing DocBlock not detected -- Fixed bug [#248][sq-248] : FunctionCommentSniff expects ampersand on param name -- Fixed bug [#265][sq-265] : False positives with type hints in ForbiddenFunctionsSniff -- Fixed bug [#20373][pear-20373] : Inline comment sniff tab handling way -- Fixed bug [#20377][pear-20377] : Error when trying to execute phpcs with report=json -- Fixed bug [#20378][pear-20378] : Report appended to existing file if no errors found in run -- Fixed bug [#20381][pear-20381] : Invalid "Comment closer must be on a new line" - - Thanks to [Brad Kent][@bkdotcom] for the patch -- Fixed bug [#20402][pear-20402] : SVN pre-commit hook fails due to unknown argument error - -[sq-243]: https://github.com/squizlabs/PHP_CodeSniffer/issues/243 -[sq-252]: https://github.com/squizlabs/PHP_CodeSniffer/issues/252 -[sq-262]: https://github.com/squizlabs/PHP_CodeSniffer/issues/262 -[sq-263]: https://github.com/squizlabs/PHP_CodeSniffer/issues/263 -[pear-19899]: https://pear.php.net/bugs/bug.php?id=19899 -[pear-20377]: https://pear.php.net/bugs/bug.php?id=20377 -[pear-20402]: https://pear.php.net/bugs/bug.php?id=20402 - -## [1.5.5] - 2014-09-25 - -### Changed -- PHP tokenizer no longer converts class/function names to special tokens types - - Class/function names such as parent and true would become special tokens such as T_PARENT and T_TRUE -- Improved closure support in Generic ScopeIndentSniff -- Improved indented PHP tag support in Generic ScopeIndentSniff -- Generic CamelCapsFunctionNameSniff now ignores a single leading underscore - - Thanks to [Alex Slobodiskiy][@xt99] for the patch -- Standards can now be located within hidden directories (further fix for bug [#20323][pear-20323]) - - Thanks to [Klaus Purer][@klausi] for the patch -- Added Generic SyntaxSniff to check for syntax errors in PHP files - - Thanks to [Blaine Schmeisser][@bayleedev] for the contribution -- Squiz DiscouragedFunctionsSniff now warns about var_dump() -- PEAR ValidFunctionNameSniff no longer throws an error for _() -- Squiz and PEAR FunctionCommentSnif now support _() -- Generic UpperCaseConstantSniff and LowerCaseConstantSniff now ignore function names - -### Fixed -- Fixed bug [#248][sq-248] : FunctionCommentSniff expects ampersand on param name -- Fixed bug [#265][sq-265] : False positives with type hints in ForbiddenFunctionsSniff -- Fixed bug [#20373][pear-20373] : Inline comment sniff tab handling way -- Fixed bug [#20378][pear-20378] : Report appended to existing file if no errors found in run -- Fixed bug [#20381][pear-20381] : Invalid "Comment closer must be on a new line" - - Thanks to [Brad Kent][@bkdotcom] for the patch -- Fixed bug [#20386][pear-20386] : Squiz.Commenting.ClassComment.SpacingBefore thrown if first block comment - -[sq-248]: https://github.com/squizlabs/PHP_CodeSniffer/issues/248 -[sq-265]: https://github.com/squizlabs/PHP_CodeSniffer/pull/265 -[pear-20373]: https://pear.php.net/bugs/bug.php?id=20373 -[pear-20378]: https://pear.php.net/bugs/bug.php?id=20378 -[pear-20381]: https://pear.php.net/bugs/bug.php?id=20381 -[pear-20386]: https://pear.php.net/bugs/bug.php?id=20386 - -## [2.0.0RC1] - 2014-08-06 - -### Changed -- PHPCBF will now fix incorrect newline characters in a file -- PHPCBF now exits cleanly when there are no errors to fix -- Added phpcbf.bat file for Windows -- Verbose option no longer errors when using a phar file with a space in the path -- Fixed a reporting error when using HHVM - - Thanks to [Martins Sipenko][@martinssipenko] for the patch -- addFixableError() and addFixableWarning() now only return true if the fixer is enabled - - Saves checking ($phpcsFile->fixer->enabled === true) before every fix -- Added addErrorOnLine() and addWarningOnLine() to add a non-fixable violation to a line at column 1 - - Useful if you are generating errors using an external tool or parser and only know line numbers - - Thanks to [Ondřej Mirtes][@ondrejmirtes] for the patch -- CSS tokenizer now identifies embedded PHP code using the new T_EMBEDDED_PHP token type - - The entire string of PHP is contained in a single token -- PHP tokenizer contains better detection of short array syntax -- Unit test runner now also test any standards installed under the installed_paths config var -- Exclude patterns now use {} delimiters, allowing the | special character to work correctly again -- The filtering component of the --extensions argument is now ignored again when passing filenames - - Can still be used to specify a custom tokenizer for each extension when passing filenames - - If no tokenizer is specified, default values will be used for common file extensions -- Diff report now produces relative paths on Windows, where possible (further fix for bug [#20234][pear-20234]) -- If a token's content has been modified by the tab-width setting, it will now have an orig_content in the tokens array -- Generic DisallowSpaceIndent and DisallowTabIndent sniffs now check original indent content even when tab-width is set - - Previously, setting --tab-width would force both to check the indent as spaces -- Fixed a problem where PHPCBF could replace tabs with too many spaces when changing indents -- Fixed a problem that could occur with line numbers when using HHVM to check files with Windows newline characters -- Removed use of sys_get_temp_dir() as this is not supported by the min PHP version -- Squiz ArrayDeclarationSniff now supports short array syntax -- Squiz ControlSignatureSniff no longer uses the Abstract Pattern sniff - - If you are extending this sniff, you'll need to rewrite your code - - The rewrite allows this sniff to fix all control structure formatting issues it finds -- The installed_paths config var now accepts relative paths - - The paths are relative to the PHP_CodeSniffer install directory - - Thanks to [Weston Ruter][@westonruter] for the patch -- Generic ScopeIndentSniff now accounts for different open tag indents -- PEAR FunctionDeclarationSniff now ignores short arrays when checking indent - - Thanks to [Daniel Tschinder][@danez] for the patch -- PSR2 FunctionCallSignatureSniff now treats multi-line strings as a single-line argument, like arrays and closures - - Thanks to [Dawid Nowak][@MacDada] for the patch -- PSR2 UseDeclarationSniff now checks for a single space after the USE keyword -- Generic ForbiddenFunctionsSniff now detects calls to functions in the global namespace - - Thanks to [Ole Martin Handeland][@olemartinorg] for the patch -- Generic LowerCaseConstantSniff and UpperCaseConstantSniff now ignore namespaces beginning with TRUE/FALSE/NULL - - Thanks to [Renan Gonçalves][@renan] for the patch -- Squiz InlineCommentSniff no longer requires a blank line after post-statement comments (request [#20299][pear-20299]) -- Squiz SelfMemberReferenceSniff now works correctly with namespaces -- Squiz FunctionCommentSniff is now more relaxed when checking namespaced type hints -- Tab characters are now encoded in abstract pattern error messages - - Thanks to [Blaine Schmeisser][@bayleedev] for the patch -- Invalid sniff codes passed to --sniffs now show a friendly error message (request [#20313][pear-20313]) -- Generic LineLengthSniff now shows a warning if the iconv module is disabled (request [#20314][pear-20314]) -- Source report no longer shows errors if category or sniff names ends in an uppercase error - - Thanks to [Jonathan Marcil][@jmarcil] for the patch - -### Fixed -- Fixed bug [#20261][pear-20261] : phpcbf has an endless fixing loop -- Fixed bug [#20268][pear-20268] : Incorrect documentation titles in PEAR documentation -- Fixed bug [#20296][pear-20296] : new array notion in function comma check fails -- Fixed bug [#20297][pear-20297] : phar does not work when renamed it to phpcs -- Fixed bug [#20307][pear-20307] : PHP_CodeSniffer_Standards_AbstractVariableSniff analyze traits -- Fixed bug [#20308][pear-20308] : Squiz.ValidVariableNameSniff - wrong variable usage -- Fixed bug [#20309][pear-20309] : Use "member variable" term in sniff "processMemberVar" method -- Fixed bug [#20310][pear-20310] : PSR2 does not check for space after function name -- Fixed bug [#20322][pear-20322] : Display rules set to type=error even when suppressing warnings -- Fixed bug [#20323][pear-20323] : PHPCS tries to load sniffs from hidden directories -- Fixed bug [#20346][pear-20346] : Fixer endless loop with Squiz.CSS sniffs -- Fixed bug [#20355][pear-20355] : No sniffs are registered with PHAR on Windows - -[pear-20261]: https://pear.php.net/bugs/bug.php?id=20261 -[pear-20297]: https://pear.php.net/bugs/bug.php?id=20297 -[pear-20346]: https://pear.php.net/bugs/bug.php?id=20346 -[pear-20355]: https://pear.php.net/bugs/bug.php?id=20355 - -## [1.5.4] - 2014-08-06 - -### Changed -- Removed use of sys_get_temp_dir() as this is not supported by the min PHP version -- The installed_paths config var now accepts relative paths - - The paths are relative to the PHP_CodeSniffer install directory - - Thanks to [Weston Ruter][@westonruter] for the patch -- Generic ScopeIndentSniff now accounts for different open tag indents -- PEAR FunctionDeclarationSniff now ignores short arrays when checking indent - - Thanks to [Daniel Tschinder][@danez] for the patch -- PSR2 FunctionCallSignatureSniff now treats multi-line strings as a single-line argument, like arrays and closures - - Thanks to [Dawid Nowak][@MacDada] for the patch -- Generic ForbiddenFunctionsSniff now detects calls to functions in the global namespace - - Thanks to [Ole Martin Handeland][@olemartinorg] for the patch -- Generic LowerCaseConstantSniff and UpperCaseConstantSniff now ignore namespaces beginning with TRUE/FALSE/NULL - - Thanks to [Renan Gonçalves][@renan] for the patch -- Squiz InlineCommentSniff no longer requires a blank line after post-statement comments (request [#20299][pear-20299]) -- Squiz SelfMemberReferenceSniff now works correctly with namespaces -- Tab characters are now encoded in abstract pattern error messages - - Thanks to [Blaine Schmeisser][@bayleedev] for the patch -- Invalid sniff codes passed to --sniffs now show a friendly error message (request [#20313][pear-20313]) -- Generic LineLengthSniff now shows a warning if the iconv module is disabled (request [#20314][pear-20314]) -- Source report no longer shows errors if category or sniff names ends in an uppercase error - - Thanks to [Jonathan Marcil][@jmarcil] for the patch - -### Fixed -- Fixed bug [#20268][pear-20268] : Incorrect documentation titles in PEAR documentation -- Fixed bug [#20296][pear-20296] : new array notion in function comma check fails -- Fixed bug [#20307][pear-20307] : PHP_CodeSniffer_Standards_AbstractVariableSniff analyze traits -- Fixed bug [#20308][pear-20308] : Squiz.ValidVariableNameSniff - wrong variable usage -- Fixed bug [#20309][pear-20309] : Use "member variable" term in sniff "processMemberVar" method -- Fixed bug [#20310][pear-20310] : PSR2 does not check for space after function name -- Fixed bug [#20322][pear-20322] : Display rules set to type=error even when suppressing warnings -- Fixed bug [#20323][pear-20323] : PHPCS tries to load sniffs from hidden directories - -[pear-20268]: https://pear.php.net/bugs/bug.php?id=20268 -[pear-20296]: https://pear.php.net/bugs/bug.php?id=20296 -[pear-20299]: https://pear.php.net/bugs/bug.php?id=20299 -[pear-20307]: https://pear.php.net/bugs/bug.php?id=20307 -[pear-20308]: https://pear.php.net/bugs/bug.php?id=20308 -[pear-20309]: https://pear.php.net/bugs/bug.php?id=20309 -[pear-20310]: https://pear.php.net/bugs/bug.php?id=20310 -[pear-20313]: https://pear.php.net/bugs/bug.php?id=20313 -[pear-20314]: https://pear.php.net/bugs/bug.php?id=20314 -[pear-20322]: https://pear.php.net/bugs/bug.php?id=20322 -[pear-20323]: https://pear.php.net/bugs/bug.php?id=20323 - -## [2.0.0a2] - 2014-05-01 - -### Changed -- Added report type --report=info to show information about the checked code to make building a standard easier - - Checks a number of things, such as what line length you use, and spacing are brackets, but not everything - - Still highly experimental -- Generic LineLengthSniff now shows warnings for long lines referring to licence and VCS information - - It previously ignored these lines, but at the expense of performance -- Generic DisallowTabIndent and DisallowSpaceIndent sniffs no longer error when detecting mixed indent types - - Only the first type of indent found on a line (space or indent) is considered -- Lots of little performance improvements that can add up to a substantial saving over large code bases - - Added a "length" array index to tokens so you don't need to call strlen() of them, or deal with encoding - - Can now use isset() to find tokens inside the PHP_CodeSniffer_Tokens static vars instead of in_array() -- Custom reports can now specify a $recordErrors member var; this previously only worked for built-in reports - - When set to FALSE, error messages will not be recorded and only totals will be returned - - This can save significant memory while processing a large code base -- Removed dependence on PHP_Timer -- PHP tokenizer now supports DEFAULT statements opened with a T_SEMICOLON -- The Squiz and PHPCS standards have increased the max padding for statement alignment from 8 to 12 -- Squiz EchoedStringsSniff now supports statements without a semicolon, such as PHP embedded in HTML -- Squiz DoubleQuoteUsageSniff now properly replaces escaped double quotes when fixing a doubled quoted string -- Improved detection of nested IF statements that use the alternate IF/ENDIF syntax -- PSR1 CamelCapsMethodNameSniff now ignores magic methods - - Thanks to [Eser Ozvataf][@eser] for the patch -- PSR1 SideEffectsSniff now ignores methods named define() -- PSR1 and PEAR ClassDeclarationSniffs now support traits (request [#20208][pear-20208]) -- PSR2 ControlStructureSpacingSniff now allows newlines before/after parentheses - - Thanks to [Maurus Cuelenaere][@mcuelenaere] for the patch -- PSR2 ControlStructureSpacingSniff now checks TRY and CATCH statements -- Squiz SuperfluousWhitespaceSniff now detects whitespace at the end of block comment lines - - Thanks to [Klaus Purer][@klausi] for the patch -- Squiz LowercasePHPFunctionsSniff no longer reports errors for namespaced functions - - Thanks to [Max Galbusera][@maxgalbu] for the patch -- Squiz SwitchDeclarationSniff now allows exit() as a breaking statement for case/default -- Squiz ValidVariableNameSniff and Zend ValidVariableNameSniff now ignore additional PHP reserved vars - - Thanks to Mikuláš Dítě and Adrian Crepaz for the patch -- Sniff code Squiz.WhiteSpace.MemberVarSpacing.After changed to Squiz.WhiteSpace.MemberVarSpacing.Incorrect (request [#20241][pear-20241]) - -### Fixed -- Fixed bug [#20200][pear-20200] : Invalid JSON produced with specific error message -- Fixed bug [#20204][pear-20204] : Ruleset exclude checks are case sensitive -- Fixed bug [#20213][pear-20213] : Invalid error, Inline IF must be declared on single line -- Fixed bug [#20225][pear-20225] : array_merge() that takes more than one line generates error -- Fixed bug [#20230][pear-20230] : Squiz ControlStructureSpacing sniff assumes specific condition formatting -- Fixed bug [#20234][pear-20234] : phpcbf patch command absolute paths -- Fixed bug [#20240][pear-20240] : Squiz block comment sniff fails when newline present -- Fixed bug [#20247][pear-20247] : The Squiz.WhiteSpace.ControlStructureSpacing sniff and do-while - - Thanks to [Alexander Obuhovich][@aik099] for the patch -- Fixed bug [#20248][pear-20248] : The Squiz_Sniffs_WhiteSpace_ControlStructureSpacingSniff sniff and empty scope -- Fixed bug [#20252][pear-20252] : Unitialized string offset when package name starts with underscore - -[pear-20234]: https://pear.php.net/bugs/bug.php?id=20234 - -## [1.5.3] - 2014-05-01 - -### Changed -- Improved detection of nested IF statements that use the alternate IF/ENDIF syntax -- PHP tokenizer now supports DEFAULT statements opened with a T_SEMICOLON -- PSR1 CamelCapsMethodNameSniff now ignores magic methods - - Thanks to [Eser Ozvataf][@eser] for the patch -- PSR1 SideEffectsSniff now ignores methods named define() -- PSR1 and PEAR ClassDeclarationSniffs now support traits (request [#20208][pear-20208]) -- PSR2 ControlStructureSpacingSniff now allows newlines before/after parentheses - - Thanks to [Maurus Cuelenaere][@mcuelenaere] for the patch -- Squiz LowercasePHPFunctionsSniff no longer reports errors for namespaced functions - - Thanks to [Max Galbusera][@maxgalbu] for the patch -- Squiz SwitchDeclarationSniff now allows exit() as a breaking statement for case/default -- Squiz ValidVariableNameSniff and Zend ValidVariableNameSniff now ignore additional PHP reserved vars - - Thanks to Mikuláš Dítě and Adrian Crepaz for the patch -- Sniff code Squiz.WhiteSpace.MemberVarSpacing.After changed to Squiz.WhiteSpace.MemberVarSpacing.Incorrect (request [#20241][pear-20241]) - -### Fixed -- Fixed bug [#20200][pear-20200] : Invalid JSON produced with specific error message -- Fixed bug [#20204][pear-20204] : Ruleset exclude checks are case sensitive -- Fixed bug [#20213][pear-20213] : Invalid error, Inline IF must be declared on single line -- Fixed bug [#20225][pear-20225] : array_merge() that takes more than one line generates error -- Fixed bug [#20230][pear-20230] : Squiz ControlStructureSpacing sniff assumes specific condition formatting -- Fixed bug [#20240][pear-20240] : Squiz block comment sniff fails when newline present -- Fixed bug [#20247][pear-20247] : The Squiz.WhiteSpace.ControlStructureSpacing sniff and do-while - - Thanks to [Alexander Obuhovich][@aik099] for the patch -- Fixed bug [#20248][pear-20248] : The Squiz_Sniffs_WhiteSpace_ControlStructureSpacingSniff sniff and empty scope -- Fixed bug [#20252][pear-20252] : Uninitialized string offset when package name starts with underscore - -[pear-20200]: https://pear.php.net/bugs/bug.php?id=20200 -[pear-20204]: https://pear.php.net/bugs/bug.php?id=20204 -[pear-20208]: https://pear.php.net/bugs/bug.php?id=20208 -[pear-20213]: https://pear.php.net/bugs/bug.php?id=20213 -[pear-20225]: https://pear.php.net/bugs/bug.php?id=20225 -[pear-20230]: https://pear.php.net/bugs/bug.php?id=20230 -[pear-20240]: https://pear.php.net/bugs/bug.php?id=20240 -[pear-20241]: https://pear.php.net/bugs/bug.php?id=20241 -[pear-20247]: https://pear.php.net/bugs/bug.php?id=20247 -[pear-20248]: https://pear.php.net/bugs/bug.php?id=20248 -[pear-20252]: https://pear.php.net/bugs/bug.php?id=20252 - -## [2.0.0a1] - 2014-02-05 - -### Changed -- Added the phpcbf script to automatically fix many errors found by the phpcs script -- Added report type --report=diff to show suggested changes to fix coding standard violations -- The --report argument now allows for custom reports to be used - - Use the full path to your custom report class as the report name -- The --extensions argument is now respected when passing filenames; not just with directories -- The --extensions argument now allows you to specify the tokenizer for each extension - - e.g., `--extensions=module/php,es/js` -- Command line arguments can now be set in ruleset files - - e.g., `arg name="report" value="summary"` (print summary report; same as `--report=summary`) - - e.g., `arg value="sp"` (print source and progress information; same as `-sp`) - - The `-vvv`, `--sniffs`, `--standard` and `-l` command line arguments cannot be set in this way -- Sniff process() methods can now optionally return a token to ignore up to - - If returned, the sniff will not be executed again until the passed token is reached in the file - - Useful if you are looking for tokens like T_OPEN_TAG but only want to process the first one -- Removed the comment parser classes and replaced it with a simple comment tokenizer - - T_DOC_COMMENT tokens are now tokenized into T_DOC_COMMENT_* tokens so they can be used more easily - - This change requires a significant rewrite of sniffs that use the comment parser - - This change requires minor changes to sniffs that listen for T_DOC_COMMENT tokens directly -- Added Generic DocCommentSniff to check generic doc block formatting - - Removed doc block formatting checks from PEAR ClassCommentSniff - - Removed doc block formatting checks from PEAR FileCommentSniff - - Removed doc block formatting checks from PEAR FunctionCommentSniff - - Removed doc block formatting checks from Squiz ClassCommentSniff - - Removed doc block formatting checks from Squiz FileCommentSniff - - Removed doc block formatting checks from Squiz FunctionCommentSniff - - Removed doc block formatting checks from Squiz VariableCommentSniff -- Squiz DocCommentAlignmentSniff has had its error codes changed - - NoSpaceBeforeTag becomes NoSpaceAfterStar - - SpaceBeforeTag becomes SpaceAfterStar - - SpaceBeforeAsterisk becomes SpaceBeforeStar -- Generic MultipleStatementAlignment now aligns assignments within a block so they fit within their max padding setting - - The sniff previously requested the padding as 1 space if max padding was exceeded - - It now aligns the assignment with surrounding assignments if it can - - Removed property ignoreMultiline as multi-line assignments are now handled correctly and should not be ignored -- Squiz FunctionClosingBraceSpaceSniff now requires a blank line before the brace in all cases except function args -- Added error Squiz.Commenting.ClassComment.SpacingAfter to ensure there are no blank lines after a class comment -- Added error Squiz.WhiteSpace.MemberVarSpacing.AfterComment to ensure there are no blank lines after a member var comment - - Fixes have also been corrected to not strip the member var comment or indent under some circumstances - - Thanks to [Mark Scherer][@dereuromark] for help with this fix -- Added error Squiz.Commenting.FunctionCommentThrowTag.Missing to ensure a throw is documented -- Removed error Squiz.Commenting.FunctionCommentThrowTag.WrongType -- Content passed via STDIN can now specify the filename to use so that sniffs can run the correct filename checks - - Ensure the first line of the content is: phpcs_input_file: /path/to/file -- Squiz coding standard now enforces no closing PHP tag at the end of a pure PHP file -- Squiz coding standard now enforces a single newline character at the end of the file -- Squiz ClassDeclarationSniff no longer checks for a PHP ending tag after a class definition -- Squiz ControlStructureSpacingSniff now checks TRY and CATCH statements as well -- Removed MySource ChannelExceptionSniff - -## [1.5.2] - 2014-02-05 - -### Changed -- Improved support for the PHP 5.5. classname::class syntax - - PSR2 SwitchDeclarationSniff no longer throws errors when this syntax is used in CASE conditions -- Improved support for negative checks of instanceOf in Squiz ComparisonOperatorUsageSniff - - Thanks to [Martin Winkel][@storeman] for the patch -- Generic FunctionCallArgumentSpacingSniff now longer complains about space before comma when using here/nowdocs - - Thanks to [Richard van Velzen][@rvanvelzen] for the patch -- Generic LowerCaseConstantSniff and UpperCaseConstantSniff now ignore class constants - - Thanks to [Kristopher Wilson][@mrkrstphr] for the patch -- PEAR FunctionCallSignatureSniff now has settings to specify how many spaces should appear before/after parentheses - - Override the 'requiredSpacesAfterOpen' and 'requiredSpacesBeforeClose' settings in a ruleset.xml file to change - - Default remains at 0 for both - - Thanks to [Astinus Eberhard][@Astinus-Eberhard] for the patch -- PSR2 ControlStructureSpacingSniff now has settings to specify how many spaces should appear before/after parentheses - - Override the 'requiredSpacesAfterOpen' and 'requiredSpacesBeforeClose' settings in a ruleset.xml file to change - - Default remains at 0 for both - - Thanks to [Astinus Eberhard][@Astinus-Eberhard] for the patch -- Squiz ForEachLoopDeclarationSniff now has settings to specify how many spaces should appear before/after parentheses - - Override the 'requiredSpacesAfterOpen' and 'requiredSpacesBeforeClose' settings in a ruleset.xml file to change - - Default remains at 0 for both - - Thanks to [Astinus Eberhard][@Astinus-Eberhard] for the patch -- Squiz ForLoopDeclarationSniff now has settings to specify how many spaces should appear before/after parentheses - - Override the 'requiredSpacesAfterOpen' and 'requiredSpacesBeforeClose' settings in a ruleset.xml file to change - - Default remains at 0 for both - - Thanks to [Astinus Eberhard][@Astinus-Eberhard] for the patch -- Squiz FunctionDeclarationArgumentSpacingSniff now has settings to specify how many spaces should appear before/after parentheses - - Override the 'requiredSpacesAfterOpen' and 'requiredSpacesBeforeClose' settings in a ruleset.xml file to change - - Default remains at 0 for both - - Thanks to [Astinus Eberhard][@Astinus-Eberhard] for the patch -- Removed UnusedFunctionParameter, CyclomaticComplexity and NestingLevel from the Squiz standard -- Generic FixmeSniff and TodoSniff now work correctly with accented characters - -### Fixed -- Fixed bug [#20145][pear-20145] : Custom ruleset preferences directory over installed standard -- Fixed bug [#20147][pear-20147] : phpcs-svn-pre-commit - no more default error report -- Fixed bug [#20151][pear-20151] : Problem handling "if(): ... else: ... endif;" syntax -- Fixed bug [#20190][pear-20190] : Invalid regex in Squiz_Sniffs_WhiteSpace_SuperfluousWhitespaceSniff - -[pear-20145]: https://pear.php.net/bugs/bug.php?id=20145 -[pear-20147]: https://pear.php.net/bugs/bug.php?id=20147 -[pear-20151]: https://pear.php.net/bugs/bug.php?id=20151 -[pear-20190]: https://pear.php.net/bugs/bug.php?id=20190 - -## [1.5.1] - 2013-12-12 - -### Changed -- Config values can now be set at runtime using the command line argument `--runtime-set key value` - - Runtime values are the same as config values, but are not written to the main config file - - Thanks to [Wim Godden][@wimg] for the patch -- Config values can now be set in ruleset files - - e.g., config name="zend_ca_path" value="/path/to/ZendCodeAnalyzer" - - Can not be used to set config values that override command line values, such as show_warnings - - Thanks to [Jonathan Marcil][@jmarcil] for helping with the patch -- Added a new installed_paths config value to allow for the setting of directories that contain standards - - By default, standards have to be installed into the CodeSniffer/Standards directory to be considered installed - - New config value allows a list of paths to be set in addition to this internal path - - Installed standards appear when using the -i arg, and can be referenced in rulesets using only their name - - Set paths by running: phpcs --config-set installed_paths /path/one,/path/two,... -- PSR2 ClassDeclarationSniff now allows a list of extended interfaces to be split across multiple lines -- Squiz DoubleQuoteUsageSniff now allows \b in double quoted strings -- Generic ForbiddenFunctionsSniff now ignores object creation - - This is a further fix for bug [#20100][pear-20100] : incorrect Function mysql() has been deprecated report - -### Fixed -- Fixed bug [#20136][pear-20136] : Squiz_Sniffs_WhiteSpace_ScopeKeywordSpacingSniff and Traits -- Fixed bug [#20138][pear-20138] : Protected property underscore and camel caps issue (in trait with Zend) - - Thanks to [Gaetan Rousseau][@Naelyth] for the patch -- Fixed bug [#20139][pear-20139] : No report file generated on success - -[pear-20136]: https://pear.php.net/bugs/bug.php?id=20136 -[pear-20138]: https://pear.php.net/bugs/bug.php?id=20138 -[pear-20139]: https://pear.php.net/bugs/bug.php?id=20139 - -## [1.5.0] - 2013-11-28 - -### Changed -- Doc generation is now working again for installed standards - - Includes a fix for limiting the docs to specific sniffs -- Generic ScopeIndentSniff now allows for ignored tokens to be set via ruleset.xml files - - E.g., to ignore comments, override a property using: - - name="ignoreIndentationTokens" type="array" value="T_COMMENT,T_DOC_COMMENT" -- PSR2 standard now ignores comments when checking indentation rules -- Generic UpperCaseConstantNameSniff no longer reports errors where constants are used (request [#20090][pear-20090]) - - It still reports errors where constants are defined -- Individual messages can now be excluded in ruleset.xml files using the exclude tag (request [#20091][pear-20091]) - - Setting message severity to 0 continues to be supported -- Squiz OperatorSpacingSniff no longer throws errors for the ?: short ternary operator - - Thanks to [Antoine Musso][@hashar] for the patch -- Comment parser now supports non-English characters when splitting comment lines into words - - Thanks to [Nik Sun][@CandySunPlus] for the patch -- Exit statements are now recognised as valid closers for CASE and DEFAULT blocks - - Thanks to [Maksim Kochkin][@ksimka] for the patch -- PHP_CodeSniffer_CLI::process() can now be passed an incomplete array of CLI values - - Missing values will be set to the CLI defaults - - Thanks to [Maksim Kochkin][@ksimka] for the patch - -### Fixed -- Fixed bug [#20093][pear-20093] : Bug with ternary operator token -- Fixed bug [#20097][pear-20097] : `CLI.php` throws error in PHP 5.2 -- Fixed bug [#20100][pear-20100] : incorrect Function mysql() has been deprecated report -- Fixed bug [#20119][pear-20119] : PHP warning: invalid argument to str_repeat() in SVN blame report with -s -- Fixed bug [#20123][pear-20123] : PSR2 complains about an empty second statement in for-loop -- Fixed bug [#20131][pear-20131] : PHP errors in svnblame report, if there are files not under version control -- Fixed bug [#20133][pear-20133] : Allow "HG: hg_id" as value for @version tag - -[pear-20090]: https://pear.php.net/bugs/bug.php?id=20090 -[pear-20091]: https://pear.php.net/bugs/bug.php?id=20091 -[pear-20093]: https://pear.php.net/bugs/bug.php?id=20093 - -## [1.4.8] - 2013-11-26 - -### Changed -- Generic ScopeIndentSniff now allows for ignored tokens to be set via ruleset.xml files - - E.g., to ignore comments, override a property using: - - name="ignoreIndentationTokens" type="array" value="T_COMMENT,T_DOC_COMMENT" -- PSR2 standard now ignores comments when checking indentation rules -- Squiz OperatorSpacingSniff no longer throws errors for the ?: short ternary operator - - Thanks to [Antoine Musso][@hashar] for the patch -- Comment parser now supports non-English characters when splitting comment lines into words - - Thanks to [Nik Sun][@CandySunPlus] for the patch -- Exit statements are now recognised as valid closers for CASE and DEFAULT blocks - - Thanks to [Maksim Kochkin][@ksimka] for the patch -- PHP_CodeSniffer_CLI::process() can now be passed an incomplete array of CLI values - - Missing values will be set to the CLI defaults - - Thanks to [Maksim Kochkin][@ksimka] for the patch - -### Fixed -- Fixed bug [#20097][pear-20097] : `CLI.php` throws error in PHP 5.2 -- Fixed bug [#20100][pear-20100] : incorrect Function mysql() has been deprecated report -- Fixed bug [#20119][pear-20119] : PHP warning: invalid argument to str_repeat() in SVN blame report with -s -- Fixed bug [#20123][pear-20123] : PSR2 complains about an empty second statement in for-loop -- Fixed bug [#20131][pear-20131] : PHP errors in svnblame report, if there are files not under version control -- Fixed bug [#20133][pear-20133] : Allow "HG: hg_id" as value for @version tag - -[pear-20097]: https://pear.php.net/bugs/bug.php?id=20097 -[pear-20100]: https://pear.php.net/bugs/bug.php?id=20100 -[pear-20119]: https://pear.php.net/bugs/bug.php?id=20119 -[pear-20123]: https://pear.php.net/bugs/bug.php?id=20123 -[pear-20131]: https://pear.php.net/bugs/bug.php?id=20131 -[pear-20133]: https://pear.php.net/bugs/bug.php?id=20133 - -## [1.5.0RC4] - 2013-09-26 - -### Changed -- You can now restrict violations to individual sniff codes using the --sniffs command line argument - - Previously, this only restricted violations to an entire sniff and not individual messages - - If you have scripts calling PHP_CodeSniffer::process() or creating PHP_CodeSniffer_File objects, you must update your code - - The array of restrictions passed to PHP_CodeSniffer::process() must now be an array of sniff codes instead of class names - - The PHP_CodeSniffer_File::__construct() method now requires an array of restrictions to be passed -- Doc generation is now working again -- Progress information now shows the percentage complete at the end of each line -- Added report type --report=junit to show the error list in a JUnit compatible format - - Thanks to [Oleg Lobach][@bladeofsteel] for the contribution -- Added support for the PHP 5.4 callable type hint -- Fixed problem where some file content could be ignored when checking STDIN -- Version information is now printed when installed via composer or run from a Git clone (request [#20050][pear-20050]) -- Added Squiz DisallowBooleanStatementSniff to ban boolean operators outside of control structure conditions -- The CSS tokenizer is now more reliable when encountering 'list' and 'break' strings -- Coding standard ignore comments can now appear instead doc blocks as well as inline comments - - Thanks to [Stuart Langley][@sjlangley] for the patch -- Generic LineLengthSniff now ignores SVN URL and Head URL comments - - Thanks to [Karl DeBisschop][@kdebisschop] for the patch -- PEAR MultiLineConditionSniff now has a setting to specify how many spaces code should be indented - - Default remains at 4; override the 'indent' setting in a ruleset.xml file to change - - Thanks to [Szabolcs Sulik][@blerou] for the patch -- PEAR MultiLineAssignmentSniff now has a setting to specify how many spaces code should be indented - - Default remains at 4; override the 'indent' setting in a ruleset.xml file to change - - Thanks to [Szabolcs Sulik][@blerou] for the patch -- PEAR FunctionDeclarationSniff now has a setting to specify how many spaces code should be indented - - Default remains at 4; override the 'indent' setting in a ruleset.xml file to change - - Thanks to [Szabolcs Sulik][@blerou] for the patch -- Squiz SwitchDeclarationSniff now has a setting to specify how many spaces code should be indented - - Default remains at 4; override the 'indent' setting in a ruleset.xml file to change - - Thanks to [Szabolcs Sulik][@blerou] for the patch -- Squiz CSS IndentationSniff now has a setting to specify how many spaces code should be indented - - Default remains at 4; override the 'indent' setting in a ruleset.xml file to change - - Thanks to [Hugo Fonseca][@fonsecas72] for the patch -- Squiz and MySource File and Function comment sniffs now allow all tags and don't require a particular licence -- Squiz standard now allows lines to be 120 characters long before warning; up from 85 -- Squiz LowercaseStyleDefinitionSniff no longer throws errors for class names in nested style definitions -- Squiz ClassFileNameSniff no longer throws errors when checking STDIN -- Squiz CSS sniffs no longer generate errors for IE filters -- Squiz CSS IndentationSniff no longer sees comments as blank lines -- Squiz LogicalOperatorSpacingSniff now ignores whitespace at the end of a line -- Squiz.Scope.MethodScope.Missing error message now mentions 'visibility' instead of 'scope modifier' - - Thanks to [Renat Akhmedyanov][@r3nat] for the patch -- Added support for the PSR2 multi-line arguments errata -- The PSR2 standard no longer throws errors for additional spacing after a type hint -- PSR UseDeclarationSniff no longer throws errors for USE statements inside TRAITs - -### Fixed -- Fixed cases where code was incorrectly assigned the T_GOTO_LABEL token when used in a complex CASE condition -- Fixed bug [#20026][pear-20026] : Check for multi-line arrays that should be single-line is slightly wrong - - Adds new error message for single-line arrays that end with a comma -- Fixed bug [#20029][pear-20029] : ForbiddenFunction sniff incorrectly recognizes methods in USE clauses -- Fixed bug [#20043][pear-20043] : Mis-interpretation of Foo::class -- Fixed bug [#20044][pear-20044] : PSR1 camelCase check does not ignore leading underscores -- Fixed bug [#20045][pear-20045] : Errors about indentation for closures with multi-line 'use' in functions -- Fixed bug [#20051][pear-20051] : Undefined index: scope_opener / scope_closer - - Thanks to [Anthon Pang][@robocoder] for the patch - -[pear-20051]: https://pear.php.net/bugs/bug.php?id=20051 - -## [1.4.7] - 2013-09-26 - -### Changed -- Added report type --report=junit to show the error list in a JUnit compatible format - - Thanks to [Oleg Lobach][@bladeofsteel] for the contribution -- Added support for the PHP 5.4 callable type hint -- Fixed problem where some file content could be ignored when checking STDIN -- Version information is now printed when installed via composer or run from a Git clone (request [#20050][pear-20050]) -- The CSS tokenizer is now more reliable when encountering 'list' and 'break' strings -- Coding standard ignore comments can now appear instead doc blocks as well as inline comments - - Thanks to [Stuart Langley][@sjlangley] for the patch -- Generic LineLengthSniff now ignores SVN URL and Head URL comments - - Thanks to [Karl DeBisschop][@kdebisschop] for the patch -- PEAR MultiLineConditionSniff now has a setting to specify how many spaces code should be indented - - Default remains at 4; override the 'indent' setting in a ruleset.xml file to change - - Thanks to [Szabolcs Sulik][@blerou] for the patch -- PEAR MultiLineAssignmentSniff now has a setting to specify how many spaces code should be indented - - Default remains at 4; override the 'indent' setting in a ruleset.xml file to change - - Thanks to [Szabolcs Sulik][@blerou] for the patch -- PEAR FunctionDeclarationSniff now has a setting to specify how many spaces code should be indented - - Default remains at 4; override the 'indent' setting in a ruleset.xml file to change - - Thanks to [Szabolcs Sulik][@blerou] for the patch -- Squiz SwitchDeclarationSniff now has a setting to specify how many spaces code should be indented - - Default remains at 4; override the 'indent' setting in a ruleset.xml file to change - - Thanks to [Szabolcs Sulik][@blerou] for the patch -- Squiz CSS IndentationSniff now has a setting to specify how many spaces code should be indented - - Default remains at 4; override the 'indent' setting in a ruleset.xml file to change - - Thanks to [Hugo Fonseca][@fonsecas72] for the patch -- Squiz and MySource File and Function comment sniffs now allow all tags and don't require a particular licence -- Squiz LowercaseStyleDefinitionSniff no longer throws errors for class names in nested style definitions -- Squiz ClassFileNameSniff no longer throws errors when checking STDIN -- Squiz CSS sniffs no longer generate errors for IE filters -- Squiz CSS IndentationSniff no longer sees comments as blank lines -- Squiz LogicalOperatorSpacingSniff now ignores whitespace at the end of a line -- Squiz.Scope.MethodScope.Missing error message now mentions 'visibility' instead of 'scope modifier' - - Thanks to [Renat Akhmedyanov][@r3nat] for the patch -- Added support for the PSR2 multi-line arguments errata -- The PSR2 standard no longer throws errors for additional spacing after a type hint -- PSR UseDeclarationSniff no longer throws errors for USE statements inside TRAITs - -### Fixed -- Fixed bug [#20026][pear-20026] : Check for multi-line arrays that should be single-line is slightly wrong - - Adds new error message for single-line arrays that end with a comma -- Fixed bug [#20029][pear-20029] : ForbiddenFunction sniff incorrectly recognizes methods in USE clauses -- Fixed bug [#20043][pear-20043] : Mis-interpretation of Foo::class -- Fixed bug [#20044][pear-20044] : PSR1 camelCase check does not ignore leading underscores -- Fixed bug [#20045][pear-20045] : Errors about indentation for closures with multi-line 'use' in functions - -[pear-20026]: https://pear.php.net/bugs/bug.php?id=20026 -[pear-20029]: https://pear.php.net/bugs/bug.php?id=20029 -[pear-20043]: https://pear.php.net/bugs/bug.php?id=20043 -[pear-20044]: https://pear.php.net/bugs/bug.php?id=20044 -[pear-20045]: https://pear.php.net/bugs/bug.php?id=20045 -[pear-20050]: https://pear.php.net/bugs/bug.php?id=20050 - -## [1.5.0RC3] - 2013-07-25 - -### Changed -- Added report type --report=json to show the error list and total counts for all checked files - - Thanks to [Jeffrey Fisher][@jeffslofish] for the contribution -- PHP_CodeSniffer::isCamelCaps now allows for acronyms at the start of a string if the strict flag is FALSE - - acronyms are defined as at least 2 uppercase characters in a row - - e.g., the following is now valid camel caps with strict set to FALSE: XMLParser -- The PHP tokenizer now tokenizes goto labels as T_GOTO_LABEL instead of T_STRING followed by T_COLON -- The JS tokenizer now has support for the T_THROW token -- Symlinked directories inside CodeSniffer/Standards and in ruleset.xml files are now supported - - Only available since PHP 5.2.11 and 5.3.1 - - Thanks to [Maik Penz][@goatherd] for the patch -- The JS tokenizer now correctly identifies T_INLINE_ELSE tokens instead of leaving them as T_COLON - - Thanks to [Arnout Boks][@aboks] for the patch -- Explaining a standard (phpcs -e) that uses namespaces now works correctly -- Restricting a check to specific sniffs (phpcs --sniffs=...) now works correctly with namespaced sniffs - - Thanks to [Maik Penz][@goatherd] for the patch -- Docs added for the entire Generic standard, and many sniffs from other standards are now documented as well - - Thanks to [Spencer Rinehart][@nubs] for the contribution -- Clearer error message for when the sniff class name does not match the directory structure -- Generated HTML docs now correctly show the open PHP tag in code comparison blocks -- Added Generic InlineHTMLSniff to ensure a file only contains PHP code -- Added Squiz ShorthandSizeSniff to check that CSS sizes are using shorthand notation only when 1 or 2 values are used -- Added Squiz ForbiddenStylesSniff to ban the use of some deprecated browser-specific styles -- Added Squiz NamedColoursSniff to ban the use of colour names -- PSR2 standard no longer enforces no whitespace between the closing parenthesis of a function call and the semicolon -- PSR2 ClassDeclarationSniff now ignores empty classes when checking the end brace position -- PSR2 SwitchDeclarationSniff no longer reports errors for empty lines between CASE statements -- PEAR ObjectOperatorIndentSniff now has a setting to specify how many spaces code should be indented - - Default remains at 4; override the indent setting in a ruleset.xml file to change - - Thanks to [Andrey Mindubaev][@covex-nn] for the patch -- Squiz FileExtensionSniff now supports traits - - Thanks to [Lucas Green][@mythril] for the patch -- Squiz ArrayDeclarationSniff no longer reports errors for no comma at the end of a line that contains a function call -- Squiz SwitchDeclarationSniff now supports T_CONTINUE and T_THROW as valid case/default breaking statements -- Squiz CommentedOutCodeSniff is now better at ignoring commented out HTML, XML and regular expressions -- Squiz DisallowComparisonAssignmentSniff no longer throws errors for the third expression in a FOR statement -- Squiz ColourDefinitionSniff no longer throws errors for some CSS class names -- Squiz ControlStructureSpacingSniff now supports all types of CASE/DEFAULT breaking statements -- Generic CallTimePassByReferenceSniff now reports errors for functions called using a variable - - Thanks to [Maik Penz][@goatherd] for the patch -- Generic ConstructorNameSniff no longer throws a notice for abstract constructors inside abstract classes - - Thanks to [Spencer Rinehart][@nubs] for the patch -- Squiz ComparisonOperatorUsageSniff now checks inside elseif statements - - Thanks to [Arnout Boks][@aboks] for the patch -- Squiz OperatorSpacingSniff now reports errors for no spacing around inline then and else tokens - - Thanks to [Arnout Boks][@aboks] for the patch - -### Fixed -- Fixed bug [#19811][pear-19811] : Comments not ignored in all cases in AbstractPatternSniff - - Thanks to [Erik Wiffin][@erikwiffin] for the patch -- Fixed bug [#19892][pear-19892] : ELSE with no braces causes incorrect SWITCH break statement indentation error -- Fixed bug [#19897][pear-19897] : Indenting warnings in templates not consistent -- Fixed bug [#19908][pear-19908] : PEAR MultiLineCondition Does Not Apply elseif -- Fixed bug [#19930][pear-19930] : option --report-file generate an empty file -- Fixed bug [#19935][pear-19935] : notify-send reports do not vanish in gnome-shell - - Thanks to [Christian Weiske][@cweiske] for the patch -- Fixed bug [#19944][pear-19944] : docblock squiz sniff "return void" trips over return in lambda function -- Fixed bug [#19953][pear-19953] : PSR2 - Spaces before interface name for abstract class -- Fixed bug [#19956][pear-19956] : phpcs warns for Type Hint missing Resource -- Fixed bug [#19957][pear-19957] : Does not understand trait method aliasing -- Fixed bug [#19968][pear-19968] : Permission denied on excluded directory -- Fixed bug [#19969][pear-19969] : Sniffs with namespace not recognized in reports -- Fixed bug [#19997][pear-19997] : Class names incorrectly detected as constants - -[pear-19930]: https://pear.php.net/bugs/bug.php?id=19930 - -## [1.4.6] - 2013-07-25 - -### Changed -- Added report type --report=json to show the error list and total counts for all checked files - - Thanks to [Jeffrey Fisher][@jeffslofish] for the contribution -- The JS tokenizer now has support for the T_THROW token -- Symlinked directories inside CodeSniffer/Standards and in ruleset.xml files are now supported - - Only available since PHP 5.2.11 and 5.3.1 - - Thanks to [Maik Penz][@goatherd] for the patch -- The JS tokenizer now correctly identifies T_INLINE_ELSE tokens instead of leaving them as T_COLON - - Thanks to [Arnout Boks][@aboks] for the patch -- Explaining a standard (phpcs -e) that uses namespaces now works correctly -- Restricting a check to specific sniffs (phpcs --sniffs=...) now works correctly with namespaced sniffs - - Thanks to [Maik Penz][@goatherd] for the patch -- Docs added for the entire Generic standard, and many sniffs from other standards are now documented as well - - Thanks to [Spencer Rinehart][@nubs] for the contribution -- Clearer error message for when the sniff class name does not match the directory structure -- Generated HTML docs now correctly show the open PHP tag in code comparison blocks -- Added Generic InlineHTMLSniff to ensure a file only contains PHP code -- Added Squiz ShorthandSizeSniff to check that CSS sizes are using shorthand notation only when 1 or 2 values are used -- Added Squiz ForbiddenStylesSniff to ban the use of some deprecated browser-specific styles -- Added Squiz NamedColoursSniff to ban the use of colour names -- PSR2 standard no longer enforces no whitespace between the closing parenthesis of a function call and the semicolon -- PSR2 ClassDeclarationSniff now ignores empty classes when checking the end brace position -- PSR2 SwitchDeclarationSniff no longer reports errors for empty lines between CASE statements -- PEAR ObjectOperatorIndentSniff now has a setting to specify how many spaces code should be indented - - Default remains at 4; override the indent setting in a ruleset.xml file to change - - Thanks to [Andrey Mindubaev][@covex-nn] for the patch -- Squiz FileExtensionSniff now supports traits - - Thanks to [Lucas Green][@mythril] for the patch -- Squiz ArrayDeclarationSniff no longer reports errors for no comma at the end of a line that contains a function call -- Squiz SwitchDeclarationSniff now supports T_CONTINUE and T_THROW as valid case/default breaking statements -- Squiz CommentedOutCodeSniff is now better at ignoring commented out HTML, XML and regular expressions -- Squiz DisallowComparisonAssignmentSniff no longer throws errors for the third expression in a FOR statement -- Squiz ColourDefinitionSniff no longer throws errors for some CSS class names -- Squiz ControlStructureSpacingSniff now supports all types of CASE/DEFAULT breaking statements -- Generic CallTimePassByReferenceSniff now reports errors for functions called using a variable - - Thanks to [Maik Penz][@goatherd] for the patch -- Generic ConstructorNameSniff no longer throws a notice for abstract constructors inside abstract classes - - Thanks to [Spencer Rinehart][@nubs] for the patch -- Squiz ComparisonOperatorUsageSniff now checks inside elseif statements - - Thanks to [Arnout Boks][@aboks] for the patch -- Squiz OperatorSpacingSniff now reports errors for no spacing around inline then and else tokens - - Thanks to [Arnout Boks][@aboks] for the patch - -### Fixed -- Fixed bug [#19811][pear-19811] : Comments not ignored in all cases in AbstractPatternSniff - - Thanks to [Erik Wiffin][@erikwiffin] for the patch -- Fixed bug [#19892][pear-19892] : ELSE with no braces causes incorrect SWITCH break statement indentation error -- Fixed bug [#19897][pear-19897] : Indenting warnings in templates not consistent -- Fixed bug [#19908][pear-19908] : PEAR MultiLineCondition Does Not Apply elseif -- Fixed bug [#19913][pear-19913] : Running phpcs in interactive mode causes warnings - - Thanks to [Harald Franndorfer][pear-gemineye] for the patch -- Fixed bug [#19935][pear-19935] : notify-send reports do not vanish in gnome-shell - - Thanks to [Christian Weiske][@cweiske] for the patch -- Fixed bug [#19944][pear-19944] : docblock squiz sniff "return void" trips over return in lambda function -- Fixed bug [#19953][pear-19953] : PSR2 - Spaces before interface name for abstract class -- Fixed bug [#19956][pear-19956] : phpcs warns for Type Hint missing Resource -- Fixed bug [#19957][pear-19957] : Does not understand trait method aliasing -- Fixed bug [#19968][pear-19968] : Permission denied on excluded directory -- Fixed bug [#19969][pear-19969] : Sniffs with namespace not recognized in reports -- Fixed bug [#19997][pear-19997] : Class names incorrectly detected as constants - -[pear-19811]: https://pear.php.net/bugs/bug.php?id=19811 -[pear-19892]: https://pear.php.net/bugs/bug.php?id=19892 -[pear-19897]: https://pear.php.net/bugs/bug.php?id=19897 -[pear-19908]: https://pear.php.net/bugs/bug.php?id=19908 -[pear-19913]: https://pear.php.net/bugs/bug.php?id=19913 -[pear-19935]: https://pear.php.net/bugs/bug.php?id=19935 -[pear-19944]: https://pear.php.net/bugs/bug.php?id=19944 -[pear-19953]: https://pear.php.net/bugs/bug.php?id=19953 -[pear-19956]: https://pear.php.net/bugs/bug.php?id=19956 -[pear-19957]: https://pear.php.net/bugs/bug.php?id=19957 -[pear-19968]: https://pear.php.net/bugs/bug.php?id=19968 -[pear-19969]: https://pear.php.net/bugs/bug.php?id=19969 -[pear-19997]: https://pear.php.net/bugs/bug.php?id=19997 - -## [1.5.0RC2] - 2013-04-04 - -### Changed -- Ruleset processing has been rewritten to be more predictable - - Provides much better support for relative paths inside ruleset files - - May mean that sniffs that were previously ignored are now being included when importing external rulesets - - Ruleset processing output can be seen by using the -vv command line argument - - Internal sniff registering functions have all changed, so please review custom scripts -- You can now pass multiple coding standards on the command line, comma separated (request [#19144][pear-19144]) - - Works with built-in or custom standards and rulesets, or a mix of both -- You can now exclude directories or whole standards in a ruleset XML file (request [#19731][pear-19731]) - - e.g., exclude "Generic.Commenting" or just "Generic" - - You can also pass in a path to a directory instead, if you know it -- Added Generic LowerCaseKeywordSniff to ensure all PHP keywords are defined in lowercase - - The PSR2 and Squiz standards now use this sniff -- Added Generic SAPIUsageSniff to ensure the `PHP_SAPI` constant is used instead of `php_sapi_name()` (request [#19863][pear-19863]) -- Squiz FunctionSpacingSniff now has a setting to specify how many lines there should between functions (request [#19843][pear-19843]) - - Default remains at 2 - - Override the "spacing" setting in a ruleset.xml file to change -- Squiz LowercasePHPFunctionSniff no longer throws errors for the limited set of PHP keywords it was checking - - Add a rule for Generic.PHP.LowerCaseKeyword to your ruleset to replicate this functionality -- Added support for the PHP 5.4 T_CALLABLE token so it can be used in lower PHP versions -- Generic EndFileNoNewlineSniff now supports checking of CSS and JS files -- PSR2 SwitchDeclarationSniff now has a setting to specify how many spaces code should be indented - - Default remains at 4; override the indent setting in a ruleset.xml file to change - - Thanks to [Asher Snyder][@asnyder] for the patch -- Generic ScopeIndentSniff now has a setting to specify a list of tokens that should be ignored - - The first token on the line is checked and the whole line is ignored if the token is in the array - - Thanks to [Eloy Lafuente][@stronk7] for the patch -- Squiz LowercaseClassKeywordsSniff now checks for the TRAIT keyword - - Thanks to [Anthon Pang][@robocoder] for the patch -- If you create your own PHP_CodeSniffer object, PHPCS will no longer exit when an unknown argument is found - - This allows you to create wrapper scripts for PHPCS more easily -- PSR2 MethodDeclarationSniff no longer generates a notice for methods named "_" - - Thanks to [Bart S][@zBart] for the patch -- Squiz BlockCommentSniff no longer reports that a blank line between a scope closer and block comment is invalid -- Generic DuplicateClassNameSniff no longer reports an invalid error if multiple PHP open tags exist in a file -- Generic DuplicateClassNameSniff no longer reports duplicate errors if multiple PHP open tags exist in a file - -### Fixed -- Fixed bug [#19819][pear-19819] : Freeze with syntax error in use statement -- Fixed bug [#19820][pear-19820] : Wrong message level in Generic_Sniffs_CodeAnalysis_EmptyStatementSniff -- Fixed bug [#19859][pear-19859] : CodeSniffer::setIgnorePatterns API changed -- Fixed bug [#19871][pear-19871] : findExtendedClassName doesn't return FQCN on namespaced classes -- Fixed bug [#19879][pear-19879] : bitwise and operator interpreted as reference by value - -[pear-19144]: https://pear.php.net/bugs/bug.php?id=19144 -[pear-19731]: https://pear.php.net/bugs/bug.php?id=19731 - -## [1.4.5] - 2013-04-04 - -### Changed -- Added Generic LowerCaseKeywordSniff to ensure all PHP keywords are defined in lowercase - - The PSR2 and Squiz standards now use this sniff -- Added Generic SAPIUsageSniff to ensure the `PHP_SAPI` constant is used instead of `php_sapi_name()` (request [#19863][pear-19863]) -- Squiz FunctionSpacingSniff now has a setting to specify how many lines there should between functions (request [#19843][pear-19843]) - - Default remains at 2 - - Override the "spacing" setting in a ruleset.xml file to change -- Squiz LowercasePHPFunctionSniff no longer throws errors for the limited set of PHP keywords it was checking - - Add a rule for Generic.PHP.LowerCaseKeyword to your ruleset to replicate this functionality -- Added support for the PHP 5.4 T_CALLABLE token so it can be used in lower PHP versions -- Generic EndFileNoNewlineSniff now supports checking of CSS and JS files -- PSR2 SwitchDeclarationSniff now has a setting to specify how many spaces code should be indented - - Default remains at 4; override the indent setting in a ruleset.xml file to change - - Thanks to [Asher Snyder][@asnyder] for the patch -- Generic ScopeIndentSniff now has a setting to specify a list of tokens that should be ignored - - The first token on the line is checked and the whole line is ignored if the token is in the array - - Thanks to [Eloy Lafuente][@stronk7] for the patch -- Squiz LowercaseClassKeywordsSniff now checks for the TRAIT keyword - - Thanks to [Anthon Pang][@robocoder] for the patch -- If you create your own PHP_CodeSniffer object, PHPCS will no longer exit when an unknown argument is found - - This allows you to create wrapper scripts for PHPCS more easily -- PSR2 MethodDeclarationSniff no longer generates a notice for methods named "_" - - Thanks to [Bart S][@zBart] for the patch -- Squiz BlockCommentSniff no longer reports that a blank line between a scope closer and block comment is invalid -- Generic DuplicateClassNameSniff no longer reports an invalid error if multiple PHP open tags exist in a file -- Generic DuplicateClassNameSniff no longer reports duplicate errors if multiple PHP open tags exist in a file - -### Fixed -- Fixed bug [#19819][pear-19819] : Freeze with syntax error in use statement -- Fixed bug [#19820][pear-19820] : Wrong message level in Generic_Sniffs_CodeAnalysis_EmptyStatementSniff -- Fixed bug [#19859][pear-19859] : CodeSniffer::setIgnorePatterns API changed -- Fixed bug [#19871][pear-19871] : findExtendedClassName doesn't return FQCN on namespaced classes -- Fixed bug [#19879][pear-19879] : bitwise and operator interpreted as reference by value - -[pear-19819]: https://pear.php.net/bugs/bug.php?id=19819 -[pear-19820]: https://pear.php.net/bugs/bug.php?id=19820 -[pear-19843]: https://pear.php.net/bugs/bug.php?id=19843 -[pear-19859]: https://pear.php.net/bugs/bug.php?id=19859 -[pear-19863]: https://pear.php.net/bugs/bug.php?id=19863 -[pear-19871]: https://pear.php.net/bugs/bug.php?id=19871 -[pear-19879]: https://pear.php.net/bugs/bug.php?id=19879 - -## [1.5.0RC1] - 2013-02-08 - -### Changed -- Reports have been completely rewritten to consume far less memory - - Each report is incrementally written to the file system during a run and then printed out when the run ends - - There is no longer a need to keep the list of errors and warnings in memory during a run -- Multi-file sniff support has been removed because they are too memory intensive - - If you have a custom multi-file sniff, you can convert it into a standard sniff quite easily - - See `CodeSniffer/Standards/Generic/Sniffs/Classes/DuplicateClassNameSniff.php` for an example - -## [1.4.4] - 2013-02-07 - -### Changed -- Ignored lines no longer cause the summary report to show incorrect error and warning counts - - Thanks to [Bert Van Hauwaert][@becoded] for the patch -- Added Generic CSSLintSniff to run CSSLint over a CSS file and report warnings - - Set full command to run CSSLint using phpcs --config-set csslint_path /path/to/csslint - - Thanks to [Roman Levishchenko][@index0h] for the contribution -- Added PSR2 ControlStructureSpacingSniff to ensure there are no spaces before and after parenthesis in control structures - - Fixes bug [#19732][pear-19732] : PSR2: some control structures errors not reported -- Squiz commenting sniffs now support non-English characters when checking for capital letters - - Thanks to [Roman Levishchenko][@index0h] for the patch -- Generic EndFileNewlineSniff now supports JS and CSS files - - Thanks to [Denis Ryabkov][@dryabkov] for the patch -- PSR1 SideEffectsSniff no longer reports constant declarations as side effects -- Notifysend report now supports notify-send versions before 0.7.3 - - Thanks to [Ken Guest][@kenguest] for the patch -- PEAR and Squiz FunctionCommentSniffs no longer report errors for misaligned argument comments when they are blank - - Thanks to [Thomas Peterson][@boonkerz] for the patch -- Squiz FunctionDeclarationArgumentSpacingSniff now works correctly for equalsSpacing values greater than 0 - - Thanks to [Klaus Purer][@klausi] for the patch -- Squiz SuperfluousWhitespaceSniff no longer throws errors for CSS files with no newline at the end -- Squiz SuperfluousWhitespaceSniff now allows a single newline at the end of JS and CSS files - -### Fixed -- Fixed bug [#19755][pear-19755] : Token of T_CLASS type has no scope_opener and scope_closer keys -- Fixed bug [#19759][pear-19759] : Squiz.PHP.NonExecutableCode fails for return function()... -- Fixed bug [#19763][pear-19763] : Use statements for traits not recognised correctly for PSR2 code style -- Fixed bug [#19764][pear-19764] : Instead of for traits throws uppercase constant name errors -- Fixed bug [#19772][pear-19772] : PSR2_Sniffs_Namespaces_UseDeclarationSniff does not properly recognize last use -- Fixed bug [#19775][pear-19775] : False positive in NonExecutableCode sniff when not using curly braces -- Fixed bug [#19782][pear-19782] : Invalid found size functions in loop when using object operator -- Fixed bug [#19799][pear-19799] : config folder is not created automatically -- Fixed bug [#19804][pear-19804] : JS Tokenizer wrong /**/ parsing - -[pear-19732]: https://pear.php.net/bugs/bug.php?id=19732 -[pear-19755]: https://pear.php.net/bugs/bug.php?id=19755 -[pear-19759]: https://pear.php.net/bugs/bug.php?id=19759 -[pear-19763]: https://pear.php.net/bugs/bug.php?id=19763 -[pear-19764]: https://pear.php.net/bugs/bug.php?id=19764 -[pear-19772]: https://pear.php.net/bugs/bug.php?id=19772 -[pear-19775]: https://pear.php.net/bugs/bug.php?id=19775 -[pear-19782]: https://pear.php.net/bugs/bug.php?id=19782 -[pear-19799]: https://pear.php.net/bugs/bug.php?id=19799 -[pear-19804]: https://pear.php.net/bugs/bug.php?id=19804 - -## [1.4.3] - 2012-12-04 - -### Changed -- Added support for the PHP 5.5 T_FINALLY token to detect try/catch/finally statements -- Added empty CodeSniffer.conf to enable config settings for Composer installs -- Added Generic EndFileNoNewlineSniff to ensure there is no newline at the end of a file -- Autoloader can now load PSR-0 compliant classes - - Thanks to [Maik Penz][@goatherd] for the patch -- Squiz NonExecutableCodeSniff no longer throws error for multi-line RETURNs inside CASE statements - - Thanks to [Marc Ypes][@ceeram] for the patch -- Squiz OperatorSpacingSniff no longer reports errors for negative numbers inside inline THEN statements - - Thanks to [Klaus Purer][@klausi] for the patch -- Squiz OperatorSpacingSniff no longer reports errors for the assignment of operations involving negative numbers -- Squiz SelfMemberReferenceSniff can no longer get into an infinite loop when checking a static call with a namespace - - Thanks to [Andy Grunwald][@andygrunwald] for the patch - -### Fixed -- Fixed bug [#19699][pear-19699] : Generic.Files.LineLength giving false positives when tab-width is used -- Fixed bug [#19726][pear-19726] : Wrong number of spaces expected after instanceof static -- Fixed bug [#19727][pear-19727] : PSR2: no error reported when using } elseif { - -[pear-19699]: https://pear.php.net/bugs/bug.php?id=19699 -[pear-19726]: https://pear.php.net/bugs/bug.php?id=19726 -[pear-19727]: https://pear.php.net/bugs/bug.php?id=19727 - -## [1.4.2] - 2012-11-09 - -### Changed -- PHP_CodeSniffer can now be installed using Composer - - Require `squizlabs/php_codesniffer` in your `composer.json` file - - Thanks to [Rob Bast][@alcohol], [Stephen Rees-Carter][@valorin], [Stefano Kowalke][@Konafets] and [Ivan Habunek][@ihabunek] for help with this -- Squiz BlockCommentSniff and InlineCommentSniff no longer report errors for trait block comments -- Squiz SelfMemberReferenceSniff now supports namespaces - - Thanks to [Andy Grunwald][@andygrunwald] for the patch -- Squiz FileCommentSniff now uses tag names inside the error codes for many messages - - This allows you to exclude specific missing, out of order etc., tags -- Squiz SuperfluousWhitespaceSniff now has an option to ignore blank lines - - This will stop errors being reported for lines that contain only whitespace - - Set the ignoreBlankLines property to TRUE in your ruleset.xml file to enable this -- PSR2 no longer reports errors for whitespace at the end of blank lines - -### Fixed -- Fixed gitblame report not working on Windows - - Thanks to [Rogerio Prado de Jesus][@rogeriopradoj] -- Fixed an incorrect error in Squiz OperatorSpacingSniff for default values inside a closure definition -- Fixed bug [#19691][pear-19691] : SubversionPropertiesSniff fails to find missing properties - - Thanks to [Kevin Winahradsky][pear-kwinahradsky] for the patch -- Fixed bug [#19692][pear-19692] : DisallowMultipleAssignments is triggered by a closure -- Fixed bug [#19693][pear-19693] : exclude-patterns no longer work on specific messages -- Fixed bug [#19694][pear-19694] : Squiz.PHP.LowercasePHPFunctions incorrectly matches return by ref functions - -[pear-19691]: https://pear.php.net/bugs/bug.php?id=19691 -[pear-19692]: https://pear.php.net/bugs/bug.php?id=19692 -[pear-19693]: https://pear.php.net/bugs/bug.php?id=19693 -[pear-19694]: https://pear.php.net/bugs/bug.php?id=19694 - -## [1.4.1] - 2012-11-02 - -### Changed -- All ignore patterns have been reverted to being checked against the absolute path of a file - - Patterns can be specified to be relative in a ruleset.xml file, but nowhere else - - e.g., `^tests/*` -- Added support for PHP tokenizing of T_INLINE_ELSE colons, so this token type is now available - - Custom sniffs that rely on looking for T_COLON tokens inside inline if statements must be changed to use the new token - - Fixes bug [#19666][pear-19666] : PSR1.Files.SideEffects throws a notice Undefined index: scope_closer -- Messages can now be changed from errors to warnings (and vice versa) inside ruleset.xml files - - As you would with "message" and "severity", specify a "type" tag under a "rule" tag and set the value to "error" or "warning" -- PHP_CodeSniffer will now generate a warning on files that it detects have mixed line endings - - This warning has the code Internal.LineEndings.Mixed and can be overridden in a ruleset.xml file - - Thanks to [Vit Brunner][@tasuki] for help with this -- Sniffs inside PHP 5.3 namespaces are now supported, along with the existing underscore-style emulated namespaces - - For example: namespace MyStandard\Sniffs\Arrays; class ArrayDeclarationSniff implements \PHP_CodeSniffer_Sniff { ... - - Thanks to [Till Klampaeckel][@till] for the patch -- Generic DuplicateClassNameSniff is no longer a multi-file sniff, so it won't max out your memory - - Multi-file sniff support should be considered deprecated as standard sniffs can now do the same thing -- Added Generic DisallowSpaceIndent to check that files are indented using tabs -- Added Generic OneClassPerFileSniff to check that only one class is defined in each file - - Thanks to [Andy Grunwald][@andygrunwald] for the contribution -- Added Generic OneInterfacePerFileSniff to check that only one interface is defined in each file - - Thanks to [Andy Grunwald][@andygrunwald] for the contribution -- Added Generic LowercasedFilenameSniff to check that filenames are lowercase - - Thanks to [Andy Grunwald][@andygrunwald] for the contribution -- Added Generic ClosingPHPTagSniff to check that each open PHP tag has a corresponding close tag - - Thanks to [Andy Grunwald][@andygrunwald] for the contribution -- Added Generic CharacterBeforePHPOpeningTagSniff to check that the open PHP tag is the first content in a file - - Thanks to [Andy Grunwald][@andygrunwald] for the contribution -- Fixed incorrect errors in Squiz OperatorBracketSniff and OperatorSpacingSniff for negative numbers in CASE statements - - Thanks to [Arnout Boks][@aboks] for the patch -- Generic CamelCapsFunctionNameSniff no longer enforces exact case matching for PHP magic methods -- Generic CamelCapsFunctionNameSniff no longer throws errors for overridden SOAPClient methods prefixed with double underscores - - Thanks to [Dorian Villet][@gnutix] for the patch -- PEAR ValidFunctionNameSniff now supports traits -- PSR1 ClassDeclarationSniff no longer throws an error for non-namespaced code if PHP version is less than 5.3.0 - -### Fixed -- Fixed bug [#19616][pear-19616] : Nested switches cause false error in PSR2 -- Fixed bug [#19629][pear-19629] : PSR2 error for inline comments on multi-line argument lists -- Fixed bug [#19644][pear-19644] : Alternative syntax, e.g. if/endif triggers Inline Control Structure error -- Fixed bug [#19655][pear-19655] : Closures reporting as multi-line when they are not -- Fixed bug [#19675][pear-19675] : Improper indent of nested anonymous function bodies in a call -- Fixed bug [#19685][pear-19685] : PSR2 catch-22 with empty third statement in for loop -- Fixed bug [#19687][pear-19687] : Anonymous functions inside arrays marked as indented incorrectly in PSR2 - -[pear-19616]: https://pear.php.net/bugs/bug.php?id=19616 -[pear-19629]: https://pear.php.net/bugs/bug.php?id=19629 -[pear-19644]: https://pear.php.net/bugs/bug.php?id=19644 -[pear-19655]: https://pear.php.net/bugs/bug.php?id=19655 -[pear-19666]: https://pear.php.net/bugs/bug.php?id=19666 -[pear-19675]: https://pear.php.net/bugs/bug.php?id=19675 -[pear-19685]: https://pear.php.net/bugs/bug.php?id=19685 -[pear-19687]: https://pear.php.net/bugs/bug.php?id=19687 - -## [1.4.0] - 2012-09-26 - -### Changed -- Added PSR1 and PSR2 coding standards that can be used to check your code against these guidelines -- PHP 5.4 short array syntax is now detected and tokens are assigned to the open and close characters - - New tokens are T_OPEN_SHORT_ARRAY and T_CLOSE_SHORT_ARRAY as PHP does not define its own -- Added the ability to explain a coding standard by listing the sniffs that it includes - - The sniff list includes all imported and native sniffs - - Explain a standard by using the `-e` and `--standard=[standard]` command line arguments - - E.g., `phpcs -e --standard=Squiz` - - Thanks to [Ben Selby][@benmatselby] for the idea -- Added report to show results using notify-send - - Use --report=notifysend to generate the report - - Thanks to [Christian Weiske][@cweiske] for the contribution -- The JS tokenizer now recognises RETURN as a valid closer for CASE and DEFAULT inside switch statements -- AbstractPatternSniff now sets the ignoreComments option using a public var rather than through the constructor - - This allows the setting to be overwritten in ruleset.xml files - - Old method remains for backwards compatibility -- Generic LowerCaseConstantSniff and UpperCaseConstantSniff no longer report errors on classes named True, False or Null -- PEAR ValidFunctionNameSniff no longer enforces exact case matching for PHP magic methods -- Squiz SwitchDeclarationSniff now allows RETURN statements to close a CASE or DEFAULT statement -- Squiz BlockCommentSniff now correctly reports an error for blank lines before blocks at the start of a control structure - -### Fixed -- Fixed a PHP notice generated when loading custom array settings from a ruleset.xml file -- Fixed bug [#17908][pear-17908] : CodeSniffer does not recognise optional @params - - Thanks to [Pete Walker][pear-pete] for the patch -- Fixed bug [#19538][pear-19538] : Function indentation code sniffer checks inside short arrays -- Fixed bug [#19565][pear-19565] : Non-Executable Code Sniff Broken for Case Statements with both return and break -- Fixed bug [#19612][pear-19612] : Invalid @package suggestion - -[pear-17908]: https://pear.php.net/bugs/bug.php?id=17908 -[pear-19538]: https://pear.php.net/bugs/bug.php?id=19538 -[pear-19565]: https://pear.php.net/bugs/bug.php?id=19565 -[pear-19612]: https://pear.php.net/bugs/bug.php?id=19612 - -## [1.3.6] - 2012-08-08 - -### Changed -- Memory usage has been dramatically reduced when using the summary report - - Reduced memory is only available when displaying a single summary report to the screen - - PHP_CodeSniffer will not generate any messages in this case, storing only error counts instead - - Impact is most notable with very high error and warning counts -- Significantly improved the performance of Squiz NonExecutableCodeSniff -- Ignore patterns now check the relative path of a file based on the dir being checked - - Allows ignore patterns to become more generic as the path to the code is no longer included when checking - - Thanks to [Kristof Coomans][@kristofser] for the patch -- Sniff settings can now be changed by specifying a special comment format inside a file - - e.g., // @codingStandardsChangeSetting PEAR.Functions.FunctionCallSignature allowMultipleArguments false - - If you change a setting, don't forget to change it back -- Added Generic EndFileNewlineSniff to ensure PHP files end with a newline character -- PEAR FunctionCallSignatureSniff now includes a setting to force one argument per line in multi-line calls - - Set allowMultipleArguments to false -- Squiz standard now enforces one argument per line in multi-line function calls -- Squiz FunctionDeclarationArgumentSpacingSniff now supports closures -- Squiz OperatorSpacingSniff no longer throws an error for negative values inside an inline THEN statement - - Thanks to [Klaus Purer][@klausi] for the patch -- Squiz FunctionCommentSniff now throws an error for not closing a comment with */ - - Thanks to [Klaus Purer][@klausi] for the patch -- Summary report no longer shows two lines of PHP_Timer output when showing sources - -### Fixed -- Fixed undefined variable error in PEAR FunctionCallSignatureSniff for lines with no indent -- Fixed bug [#19502][pear-19502] : Generic.Files.LineEndingsSniff fails if no new-lines in file -- Fixed bug [#19508][pear-19508] : switch+return: Closing brace indented incorrectly -- Fixed bug [#19532][pear-19532] : The PSR-2 standard don't recognize Null in class names -- Fixed bug [#19546][pear-19546] : Error thrown for __call() method in traits - -[pear-19502]: https://pear.php.net/bugs/bug.php?id=19502 -[pear-19508]: https://pear.php.net/bugs/bug.php?id=19508 -[pear-19532]: https://pear.php.net/bugs/bug.php?id=19532 -[pear-19546]: https://pear.php.net/bugs/bug.php?id=19546 - -## [1.3.5] - 2012-07-12 - -### Changed -- Added Generic CamelCapsFunctionNameSniff to just check if function and method names use camel caps - - Does not allow underscore prefixes for private/protected methods - - Defaults to strict checking, where two uppercase characters can not be next to each other - - Strict checking can be disabled in a ruleset.xml file -- Squiz FunctionDeclarationArgumentSpacing now has a setting to specify how many spaces should surround equals signs - - Default remains at 0 - - Override the equalsSpacing setting in a ruleset.xml file to change -- Squiz ClassDeclarationSniff now throws errors for > 1 space before extends/implements class name with ns separator -- Squiz standard now warns about deprecated functions using Generic DeprecatedFunctionsSniff -- PEAR FunctionDeclarationSniff now reports an error for multiple spaces after the FUNCTION keyword and around USE -- PEAR FunctionDeclarationSniff now supports closures -- Squiz MultiLineFunctionDeclarationSniff now supports closures -- Exclude rules written for Unix systems will now work correctly on Windows - - Thanks to [Walter Tamboer][@waltertamboer] for the patch -- The PHP tokenizer now recognises T_RETURN as a valid closer for T_CASE and T_DEFAULT inside switch statements - -### Fixed -- Fixed duplicate message codes in Generic OpeningFunctionBraceKernighanRitchieSniff -- Fixed bug [#18651][pear-18651] : PHPUnit Test cases for custom standards are not working on Windows -- Fixed bug [#19416][pear-19416] : Shorthand arrays cause bracket spacing errors -- Fixed bug [#19421][pear-19421] : phpcs doesn't recognize ${x} as equivalent to $x -- Fixed bug [#19428][pear-19428] : PHPCS Report "hgblame" doesn't support windows paths - - Thanks to [Justin Rovang][@rovangju] for the patch -- Fixed bug [#19448][pear-19448] : Problem with detecting remote standards -- Fixed bug [#19463][pear-19463] : Anonymous functions incorrectly being flagged by NonExecutableCodeSniff -- Fixed bug [#19469][pear-19469] : PHP_CodeSniffer_File::getMemberProperties() sets wrong scope -- Fixed bug [#19471][pear-19471] : phpcs on Windows, when using Zend standard, doesn't catch problems - - Thanks to [Ivan Habunek][@ihabunek] for the patch -- Fixed bug [#19478][pear-19478] : Incorrect indent detection in PEAR standard - - Thanks to [Shane Auckland][@shanethehat] for the patch -- Fixed bug [#19483][pear-19483] : Blame Reports fail with space in directory name - -[pear-18651]: https://pear.php.net/bugs/bug.php?id=18651 -[pear-19416]: https://pear.php.net/bugs/bug.php?id=19416 -[pear-19421]: https://pear.php.net/bugs/bug.php?id=19421 -[pear-19428]: https://pear.php.net/bugs/bug.php?id=19428 -[pear-19448]: https://pear.php.net/bugs/bug.php?id=19448 -[pear-19463]: https://pear.php.net/bugs/bug.php?id=19463 -[pear-19469]: https://pear.php.net/bugs/bug.php?id=19469 -[pear-19471]: https://pear.php.net/bugs/bug.php?id=19471 -[pear-19478]: https://pear.php.net/bugs/bug.php?id=19478 -[pear-19483]: https://pear.php.net/bugs/bug.php?id=19483 - -## [1.3.4] - 2012-05-17 - -### Changed -- Added missing package.xml entries for new Generic FixmeSniff - - Thanks to [Jaroslav Hanslík][@kukulich] for the patch -- Expected indents for PEAR ScopeClosingBraceSniff and FunctionCallSignatureSniff can now be set in ruleset files - - Both sniffs use a variable called "indent" - - Thanks to [Thomas Despoix][pear-tomdesp] for the patch -- Standards designed to be installed in the PHPCS Standards dir will now work outside this dir as well - - In particular, allows the Drupal CS to work without needing to symlink it into the PHPCS install - - Thanks to [Peter Philipp][@das-peter] for the patch -- Rule references for standards, directories and specific sniffs can now be relative in ruleset.xml files - - For example: `ref="../MyStandard/Sniffs/Commenting/DisallowHashCommentsSniff.php"` -- Symlinked standards now work correctly, allowing aliasing of installed standards (request [#19417][pear-19417]) - - Thanks to [Tom Klingenberg][@ktomk] for the patch -- Squiz ObjectInstantiationSniff now allows objects to be returned without assigning them to a variable -- Added Squiz.Commenting.FileComment.MissingShort error message for file comments that only contains tags - - Also stops undefined index errors being generated for these comments -- Debug option -vv now shows tokenizer status for CSS files -- Added support for new gjslint error formats - - Thanks to [Meck][@yesmeck] for the patch -- Generic ScopeIndentSniff now allows comment indents to not be exact even if the exact flag is set - - The start of the comment is still checked for exact indentation as normal -- Fixed an issue in AbstractPatternSniff where comments were not being ignored in some cases -- Fixed an issue in Zend ClosingTagSniff where the closing tag was not always being detected correctly - - Thanks to [Jonathan Robson][@jnrbsn] for the patch -- Fixed an issue in Generic FunctionCallArgumentSpacingSniff where closures could cause incorrect errors -- Fixed an issue in Generic UpperCaseConstantNameSniff where errors were incorrectly reported on goto statements - - Thanks to [Tom Klingenberg][@ktomk] for the patch -- PEAR FileCommentSniff and ClassCommentSniff now support author emails with a single character in the local part - - E.g., `a@me.com` - - Thanks to Denis Shapkin for the patch - -### Fixed -- Fixed bug [#19290][pear-19290] : Generic indent sniffer fails for anonymous functions -- Fixed bug [#19324][pear-19324] : Setting show_warnings configuration option does not work -- Fixed bug [#19354][pear-19354] : Not recognizing references passed to method -- Fixed bug [#19361][pear-19361] : CSS tokenizer generates errors when PHP embedded in CSS file -- Fixed bug [#19374][pear-19374] : HEREDOC/NOWDOC Indentation problems -- Fixed bug [#19381][pear-19381] : traits and indentations in traits are not handled properly -- Fixed bug [#19394][pear-19394] : Notice in NonExecutableCodeSniff -- Fixed bug [#19402][pear-19402] : Syntax error when executing phpcs on Windows with parens in PHP path - - Thanks to [Tom Klingenberg][@ktomk] for the patch -- Fixed bug [#19411][pear-19411] : magic method error on __construct() - - The fix required a rewrite of AbstractScopeSniff, so please test any sniffs that extend this class -- Fixed bug [#19412][pear-19412] : Incorrect error about assigning objects to variables when inside inline IF -- Fixed bug [#19413][pear-19413] : PHP_CodeSniffer thinks I haven't used a parameter when I have -- Fixed bug [#19414][pear-19414] : PHP_CodeSniffer seems to not track variables correctly in heredocs - -[pear-19290]: https://pear.php.net/bugs/bug.php?id=19290 -[pear-19324]: https://pear.php.net/bugs/bug.php?id=19324 -[pear-19354]: https://pear.php.net/bugs/bug.php?id=19354 -[pear-19361]: https://pear.php.net/bugs/bug.php?id=19361 -[pear-19374]: https://pear.php.net/bugs/bug.php?id=19374 -[pear-19381]: https://pear.php.net/bugs/bug.php?id=19381 -[pear-19394]: https://pear.php.net/bugs/bug.php?id=19394 -[pear-19402]: https://pear.php.net/bugs/bug.php?id=19402 -[pear-19411]: https://pear.php.net/bugs/bug.php?id=19411 -[pear-19412]: https://pear.php.net/bugs/bug.php?id=19412 -[pear-19413]: https://pear.php.net/bugs/bug.php?id=19413 -[pear-19414]: https://pear.php.net/bugs/bug.php?id=19414 -[pear-19417]: https://pear.php.net/bugs/bug.php?id=19417 - -## [1.3.3] - 2012-02-07 - -### Changed -- Added new Generic FixmeSniff that shows error messages for all FIXME comments left in your code - - Thanks to [Sam Graham][@illusori] for the contribution -- The maxPercentage setting in the Squiz CommentedOutCodeSniff can now be overridden in a ruleset.xml file - - Thanks to [Volker Dusch][@edorian] for the patch -- The Checkstyle and XML reports now use XMLWriter - - Only change in output is that empty file tags are no longer produced for files with no violations - - Thanks to [Sebastian Bergmann][@sebastianbergmann] for the patch -- Added PHP_CodeSniffer_Tokens::$bracketTokens to give sniff writers fast access to open and close bracket tokens -- Fixed an issue in AbstractPatternSniff where EOL tokens were not being correctly checked in some cases -- PHP_CodeSniffer_File::getTokensAsString() now detects incorrect length value (request [#19313][pear-19313]) - -### Fixed -- Fixed bug [#19114][pear-19114] : CodeSniffer checks extension even for single file -- Fixed bug [#19171][pear-19171] : Show sniff codes option is ignored by some report types - - Thanks to [Dominic Scheirlinck][@dominics] for the patch -- Fixed bug [#19188][pear-19188] : Lots of PHP Notices when analyzing the Symfony framework - - First issue was list-style.. lines in CSS files not properly adjusting open/close bracket positions - - Second issue was notices caused by bug [#19137][pear-19137] -- Fixed bug [#19208][pear-19208] : UpperCaseConstantName reports class members - - Was also a problem with LowerCaseConstantName as well -- Fixed bug [#19256][pear-19256] : T_DOC_COMMENT in CSS files breaks ClassDefinitionNameSpacingSniff - - Thanks to [Klaus Purer][@klausi] for the patch -- Fixed bug [#19264][pear-19264] : Squiz.PHP.NonExecutableCode does not handle RETURN in CASE without BREAK -- Fixed bug [#19270][pear-19270] : DuplicateClassName does not handle namespaces correctly -- Fixed bug [#19283][pear-19283] : CSS @media rules cause false positives - - Thanks to [Klaus Purer][@klausi] for the patch - -[pear-19114]: https://pear.php.net/bugs/bug.php?id=19114 -[pear-19137]: https://pear.php.net/bugs/bug.php?id=19137 -[pear-19171]: https://pear.php.net/bugs/bug.php?id=19171 -[pear-19188]: https://pear.php.net/bugs/bug.php?id=19188 -[pear-19208]: https://pear.php.net/bugs/bug.php?id=19208 -[pear-19256]: https://pear.php.net/bugs/bug.php?id=19256 -[pear-19264]: https://pear.php.net/bugs/bug.php?id=19264 -[pear-19270]: https://pear.php.net/bugs/bug.php?id=19270 -[pear-19283]: https://pear.php.net/bugs/bug.php?id=19283 -[pear-19313]: https://pear.php.net/bugs/bug.php?id=19313 - -## [1.3.2] - 2011-12-01 - -### Changed -- Added Generic JSHintSniff to run jshint.js over a JS file and report warnings - - Set jshint path using phpcs --config-set jshint_path /path/to/jshint-rhino.js - - Set rhino path using phpcs --config-set rhino_path /path/to/rhino - - Thanks to Alexander Weiß for the contribution -- Nowdocs are now tokenized using PHP_CodeSniffer specific T_NOWDOC tokens for easier identification -- Generic UpperCaseConstantNameSniff no longer throws errors for namespaces - - Thanks to [Jaroslav Hanslík][@kukulich] for the patch -- Squiz NonExecutableCodeSniff now detects code after thrown exceptions - - Thanks to [Jaroslav Hanslík][@kukulich] for the patch -- Squiz OperatorSpacingSniff now ignores references - - Thanks to [Jaroslav Hanslík][@kukulich] for the patch -- Squiz FunctionCommentSniff now reports a missing function comment if it finds a standard code comment instead -- Squiz FunctionCommentThrownTagSniff no longer reports errors if it can't find a function comment - -### Fixed -- Fixed unit tests not running under Windows - - Thanks to [Jaroslav Hanslík][@kukulich] for the patch -- Fixed bug [#18964][pear-18964] : "$stackPtr must be of type T_VARIABLE" on heredocs and nowdocs -- Fixed bug [#18973][pear-18973] : phpcs is looking for variables in a nowdoc -- Fixed bug [#18974][pear-18974] : Blank line causes "Multi-line function call not indented correctly" - - Adds new error message to ban empty lines in multi-line function calls -- Fixed bug [#18975][pear-18975] : "Closing parenthesis must be on a line by itself" also causes indentation error - -[pear-18964]: https://pear.php.net/bugs/bug.php?id=18964 -[pear-18973]: https://pear.php.net/bugs/bug.php?id=18973 -[pear-18974]: https://pear.php.net/bugs/bug.php?id=18974 -[pear-18975]: https://pear.php.net/bugs/bug.php?id=18975 - -## 1.3.1 - 2011-11-03 - -### Changed -- All report file command line arguments now work with relative paths (request [#17240][pear-17240]) -- The extensions command line argument now supports multi-part file extensions (request [#17227][pear-17227]) -- Added report type --report=hgblame to show number of errors/warnings committed by authors in a Mercurial repository - - Has the same functionality as the svnblame report - - Thanks to [Ben Selby][@benmatselby] for the patch -- Added T_BACKTICK token type to make detection of backticks easier (request [#18799][pear-18799]) -- Added pattern matching support to Generic ForbiddenFunctionsSniff - - If you are extending it and overriding register() or addError() you will need to review your sniff -- Namespaces are now recognised as scope openers, although they do not require braces (request [#18043][pear-18043]) -- Added new ByteOrderMarkSniff to Generic standard (request [#18194][pear-18194]) - - Throws an error if a byte order mark is found in any PHP file - - Thanks to [Piotr Karas][pear-ryba] for the contribution -- PHP_Timer output is no longer included in reports when being written to a file (request [#18252][pear-18252]) - - Also now shown for all report types if nothing is being printed to the screen -- Generic DeprecatedFunctionSniff now reports functions as deprecated and not simply forbidden (request [#18288][pear-18288]) -- PHPCS now accepts file contents from STDIN (request [#18447][pear-18447]) - - Example usage: `cat temp.php | phpcs [options]` -OR- `phpcs [options] < temp.php` - - Not every sniff will work correctly due to the lack of a valid file path -- PHP_CodeSniffer_Exception no longer extends PEAR_Exception (request [#18483][pear-18483]) - - PEAR_Exception added a requirement that PEAR had to be installed - - PHP_CodeSniffer is not used as a library, so unlikely to have any impact -- PEAR FileCommentSniff now allows GIT IDs in the version tag (request [#14874][pear-14874]) -- AbstractVariableSniff now supports heredocs - - Also includes some variable detection fixes - - Thanks to [Sam Graham][@illusori] for the patch -- Squiz FileCommentSniff now enforces rule that package names cannot start with the word Squiz -- MySource AssignThisSniff now allows "this" to be assigned to the private var _self -- PEAR ClassDeclaration sniff now supports indentation checks when using the alternate namespace syntax - - PEAR.Classes.ClassDeclaration.SpaceBeforeBrace message now contains 2 variables instead of 1 - - Sniff allows overriding of the default indent level, which is set to 4 - - Fixes bug [#18933][pear-18933] : Alternative namespace declaration syntax confuses scope sniffs - -### Fixed -- Fixed issue in Squiz FileCommentSniff where suggested package name was the same as the incorrect package name -- Fixed some issues with Squiz ArrayDeclarationSniff when using function calls in array values -- Fixed doc generation so it actually works again - - Also now works when being run from an SVN checkout as well as when installed as a PEAR package - - Should fix bug [#18949][pear-18949] : Call to private method from static -- Fixed bug [#18465][pear-18465] : "self::" does not work in lambda functions - - Also corrects conversion of T_FUNCTION tokens to T_CLOSURE, which was not fixing token condition arrays -- Fixed bug [#18543][pear-18543] : CSS Tokenizer deletes too many # -- Fixed bug [#18624][pear-18624] : @throws namespace problem - - Thanks to [Gavin Davies][pear-boxgav] for the patch -- Fixed bug [#18628][pear-18628] : Generic.Files.LineLength gives incorrect results with Windows line-endings -- Fixed bug [#18633][pear-18633] : CSS Tokenizer doesn't replace T_LIST tokens inside some styles -- Fixed bug [#18657][pear-18657] : anonymous functions wrongly indented -- Fixed bug [#18670][pear-18670] : UpperCaseConstantNameSniff fails on dynamic retrieval of class constant -- Fixed bug [#18709][pear-18709] : Code sniffer sniffs file even if it's in --ignore - - Thanks to [Artem Lopata][@biozshock] for the patch -- Fixed bug [#18762][pear-18762] : Incorrect handling of define and constant in UpperCaseConstantNameSniff - - Thanks to [Thomas Baker][pear-bakert] for the patch -- Fixed bug [#18769][pear-18769] : CSS Tokenizer doesn't replace T_BREAK tokens inside some styles -- Fixed bug [#18835][pear-18835] : Unreachable errors of inline returns of closure functions - - Thanks to [Patrick Schmidt][pear-woellchen] for the patch -- Fixed bug [#18839][pear-18839] : Fix miscount of warnings in `AbstractSniffUnitTest.php` - - Thanks to [Sam Graham][@illusori] for the patch -- Fixed bug [#18844][pear-18844] : Generic_Sniffs_CodeAnalysis_UnusedFunctionParameterSniff with empty body - - Thanks to [Dmitri Medvedev][pear-dvino] for the patch -- Fixed bug [#18847][pear-18847] : Running Squiz_Sniffs_Classes_ClassDeclarationSniff results in PHP notice -- Fixed bug [#18868][pear-18868] : jslint+rhino: errors/warnings not detected - - Thanks to [Christian Weiske][@cweiske] for the patch -- Fixed bug [#18879][pear-18879] : phpcs-svn-pre-commit requires escapeshellarg - - Thanks to [Bjorn Katuin][pear-bjorn] for the patch -- Fixed bug [#18951][pear-18951] : weird behaviour with closures and multi-line use () params - -[pear-14874]: https://pear.php.net/bugs/bug.php?id=14874 -[pear-17227]: https://pear.php.net/bugs/bug.php?id=17227 -[pear-17240]: https://pear.php.net/bugs/bug.php?id=17240 -[pear-18043]: https://pear.php.net/bugs/bug.php?id=18043 -[pear-18194]: https://pear.php.net/bugs/bug.php?id=18194 -[pear-18252]: https://pear.php.net/bugs/bug.php?id=18252 -[pear-18288]: https://pear.php.net/bugs/bug.php?id=18288 -[pear-18447]: https://pear.php.net/bugs/bug.php?id=18447 -[pear-18465]: https://pear.php.net/bugs/bug.php?id=18465 -[pear-18483]: https://pear.php.net/bugs/bug.php?id=18483 -[pear-18543]: https://pear.php.net/bugs/bug.php?id=18543 -[pear-18624]: https://pear.php.net/bugs/bug.php?id=18624 -[pear-18628]: https://pear.php.net/bugs/bug.php?id=18628 -[pear-18633]: https://pear.php.net/bugs/bug.php?id=18633 -[pear-18657]: https://pear.php.net/bugs/bug.php?id=18657 -[pear-18670]: https://pear.php.net/bugs/bug.php?id=18670 -[pear-18709]: https://pear.php.net/bugs/bug.php?id=18709 -[pear-18762]: https://pear.php.net/bugs/bug.php?id=18762 -[pear-18769]: https://pear.php.net/bugs/bug.php?id=18769 -[pear-18799]: https://pear.php.net/bugs/bug.php?id=18799 -[pear-18835]: https://pear.php.net/bugs/bug.php?id=18835 -[pear-18839]: https://pear.php.net/bugs/bug.php?id=18839 -[pear-18844]: https://pear.php.net/bugs/bug.php?id=18844 -[pear-18847]: https://pear.php.net/bugs/bug.php?id=18847 -[pear-18868]: https://pear.php.net/bugs/bug.php?id=18868 -[pear-18879]: https://pear.php.net/bugs/bug.php?id=18879 -[pear-18933]: https://pear.php.net/bugs/bug.php?id=18933 -[pear-18949]: https://pear.php.net/bugs/bug.php?id=18949 -[pear-18951]: https://pear.php.net/bugs/bug.php?id=18951 - -## 1.3.0 - 2011-03-17 - -### Changed -- Add a new token T_CLOSURE that replaces T_FUNCTION if the function keyword is anonymous -- Many Squiz sniffs no longer report errors when checking closures; they are now ignored -- Fixed some error messages in PEAR MultiLineConditionSniff that were not using placeholders for message data -- AbstractVariableSniff now correctly finds variable names wrapped with curly braces inside double quoted strings -- PEAR FunctionDeclarationSniff now ignores arrays in argument default values when checking multi-line declarations - -### Fixed -- Fixed bug [#18200][pear-18200] : Using custom named ruleset file as standard no longer works -- Fixed bug [#18196][pear-18196] : PEAR MultiLineCondition.SpaceBeforeOpenBrace not consistent with newline chars -- Fixed bug [#18204][pear-18204] : FunctionCommentThrowTag picks wrong exception type when throwing function call -- Fixed bug [#18222][pear-18222] : Add __invoke method to PEAR standard -- Fixed bug [#18235][pear-18235] : Invalid error generation in Squiz.Commenting.FunctionCommentThrowTag -- Fixed bug [#18250][pear-18250] : --standard with relative path skips Standards' "implicit" sniffs -- Fixed bug [#18274][pear-18274] : Multi-line IF and function call indent rules conflict -- Fixed bug [#18282][pear-18282] : Squiz doesn't handle final keyword before function comments - - Thanks to [Dave Perrett][pear-recurser] for the patch -- Fixed bug [#18336][pear-18336] : Function isUnderscoreName gives PHP notices - -[pear-18196]: https://pear.php.net/bugs/bug.php?id=18196 -[pear-18200]: https://pear.php.net/bugs/bug.php?id=18200 -[pear-18204]: https://pear.php.net/bugs/bug.php?id=18204 -[pear-18222]: https://pear.php.net/bugs/bug.php?id=18222 -[pear-18235]: https://pear.php.net/bugs/bug.php?id=18235 -[pear-18250]: https://pear.php.net/bugs/bug.php?id=18250 -[pear-18274]: https://pear.php.net/bugs/bug.php?id=18274 -[pear-18282]: https://pear.php.net/bugs/bug.php?id=18282 -[pear-18336]: https://pear.php.net/bugs/bug.php?id=18336 - -## 1.3.0RC2 - 2011-01-14 - -### Changed -- You can now print multiple reports for each run and print each to the screen or a file (request [#12434][pear-12434]) - - Format is `--report-[report][=file]` (e.g., `--report-xml=out.xml`) - - Printing to screen is done by leaving `[file]` empty (e.g., `--report-xml`) - - Multiple reports can be specified in this way (e.g., `--report-summary --report-xml=out.xml`) - - The standard `--report` and `--report-file` command line arguments are unchanged -- Added `-d` command line argument to set `php.ini` settings while running (request [#17244][pear-17244]) - - Usage is: `phpcs -d memory_limit=32M -d ...` - - Thanks to [Ben Selby][@benmatselby] for the patch -- Added -p command line argument to show progress during a run - - Dot means pass, E means errors found, W means only warnings found and S means skipped file - - Particularly good for runs where you are checking more than 100 files - - Enable by default with --config-set show_progress 1 - - Will not print anything if you are already printing verbose output - - This has caused a big change in the way PHP_CodeSniffer processes files (API changes around processing) -- You can now add exclude rules for individual sniffs or error messages (request [#17903][pear-17903]) - - Only available when using a ruleset.xml file to specify rules - - Uses the same exclude-pattern tags as normal but allows them inside rule tags -- Using the -vvv option will now print a list of sniffs executed for each file and how long they took to process -- Added Generic ClosureLinterSniff to run Google's gjslint over your JS files -- The XML and CSV reports now include the severity of the error (request [#18165][pear-18165]) - - The Severity column in the CSV report has been renamed to Type, and a new Severity column added for this -- Fixed issue with Squiz FunctionCommentSniff reporting incorrect type hint when default value uses namespace - - Thanks to Anti Veeranna for the patch -- Generic FileLengthSniff now uses iconv_strlen to check line length if an encoding is specified (request [#14237][pear-14237]) -- Generic UnnecessaryStringConcatSniff now allows strings to be combined to form a PHP open or close tag -- Squiz SwitchDeclarationSniff no longer reports indentation errors for BREAK statements inside IF conditions -- Interactive mode now always prints the full error report (ignores command line) -- Improved regular expression detection in JavaScript files - - Added new T_TYPEOF token that can be used to target the typeof JS operator - - Fixes bug [#17611][pear-17611] : Regular expression tokens not recognised -- Squiz ScopeIndentSniff removed - - Squiz standard no longer requires additional indents between ob_* methods - - Also removed Squiz OutputBufferingIndentSniff that was checking the same thing -- PHP_CodeSniffer_File::getMemberProperties() performance improved significantly - - Improves performance of Squiz ValidVariableNameSniff significantly -- Squiz OperatorSpacingSniff performance improved significantly -- Squiz NonExecutableCodeSniff performance improved significantly - - Will throw duplicate errors in some cases now, but these should be rare -- MySource IncludeSystemSniff performance improved significantly -- MySource JoinStringsSniff no longer reports an error when using join() on a named JS array -- Warnings are now reported for each file when they cannot be opened instead of stopping the script - - Hide warnings with the -n command line argument - - Can override the warnings using the code Internal.DetectLineEndings - -### Fixed -- Fixed bug [#17693][pear-17693] : issue with pre-commit hook script with filenames that start with v -- Fixed bug [#17860][pear-17860] : isReference function fails with references in array - - Thanks to [Lincoln Maskey][pear-ljmaskey] for the patch -- Fixed bug [#17902][pear-17902] : Cannot run tests when tests are symlinked into tests dir - - Thanks to [Matt Button][@BRMatt] for the patch -- Fixed bug [#17928][pear-17928] : Improve error message for Generic_Sniffs_PHP_UpperCaseConstantSniff - - Thanks to [Stefano Kowalke][@Konafets] for the patch -- Fixed bug [#18039][pear-18039] : JS Tokenizer crash when ] is last character in file -- Fixed bug [#18047][pear-18047] : Incorrect handling of namespace aliases as constants - - Thanks to [Dmitri Medvedev][pear-dvino] for the patch -- Fixed bug [#18072][pear-18072] : Impossible to exclude path from processing when symlinked -- Fixed bug [#18073][pear-18073] : Squiz.PHP.NonExecutableCode fault -- Fixed bug [#18117][pear-18117] : PEAR coding standard: Method constructor not sniffed as a function -- Fixed bug [#18135][pear-18135] : Generic FunctionCallArgumentSpacingSniff reports function declaration errors -- Fixed bug [#18140][pear-18140] : Generic scope indent in exact mode: strange expected/found values for switch -- Fixed bug [#18145][pear-18145] : Sniffs are not loaded for custom ruleset file - - Thanks to [Scott McCammon][pear-mccammos] for the patch -- Fixed bug [#18152][pear-18152] : While and do-while with AbstractPatternSniff -- Fixed bug [#18191][pear-18191] : Squiz.PHP.LowercasePHPFunctions does not work with new Date() -- Fixed bug [#18193][pear-18193] : CodeSniffer doesn't reconize CR (\r) line endings - -[pear-12434]: https://pear.php.net/bugs/bug.php?id=12434 -[pear-14237]: https://pear.php.net/bugs/bug.php?id=14237 -[pear-17244]: https://pear.php.net/bugs/bug.php?id=17244 -[pear-17611]: https://pear.php.net/bugs/bug.php?id=17611 -[pear-17693]: https://pear.php.net/bugs/bug.php?id=17693 -[pear-17860]: https://pear.php.net/bugs/bug.php?id=17860 -[pear-17902]: https://pear.php.net/bugs/bug.php?id=17902 -[pear-17903]: https://pear.php.net/bugs/bug.php?id=17903 -[pear-17928]: https://pear.php.net/bugs/bug.php?id=17928 -[pear-18039]: https://pear.php.net/bugs/bug.php?id=18039 -[pear-18047]: https://pear.php.net/bugs/bug.php?id=18047 -[pear-18072]: https://pear.php.net/bugs/bug.php?id=18072 -[pear-18073]: https://pear.php.net/bugs/bug.php?id=18073 -[pear-18117]: https://pear.php.net/bugs/bug.php?id=18117 -[pear-18135]: https://pear.php.net/bugs/bug.php?id=18135 -[pear-18140]: https://pear.php.net/bugs/bug.php?id=18140 -[pear-18145]: https://pear.php.net/bugs/bug.php?id=18145 -[pear-18152]: https://pear.php.net/bugs/bug.php?id=18152 -[pear-18165]: https://pear.php.net/bugs/bug.php?id=18165 -[pear-18191]: https://pear.php.net/bugs/bug.php?id=18191 -[pear-18193]: https://pear.php.net/bugs/bug.php?id=18193 - -## 1.3.0RC1 - 2010-09-03 - -### Changed -- Added exclude pattern support to ruleset.xml file so you can specify ignore patterns in a standard (request [#17683][pear-17683]) - - Use new exclude-pattern tags to include the ignore rules into your ruleset.xml file - - See CodeSniffer/Standards/PHPCS/ruleset.xml for an example -- Added new --encoding command line argument to specify the encoding of the files being checked - - When set to utf-8, stops the XML-based reports from double-encoding - - When set to something else, helps the XML-based reports encode to utf-8 - - Default value is iso-8859-1 but can be changed with `--config-set encoding [value]` -- The report is no longer printed to screen when using the --report-file command line option (request [#17467][pear-17467]) - - If you want to print it to screen as well, use the -v command line argument -- The SVN and GIT blame reports now also show percentage of reported errors per author (request [#17606][pear-17606]) - - Thanks to [Ben Selby][@benmatselby] for the patch -- Updated the SVN pre-commit hook to work with the new severity levels feature -- Generic SubversionPropertiesSniff now allows properties to have NULL values (request [#17682][pear-17682]) - - A null value indicates that the property should exist but the value should not be checked -- Generic UpperCaseConstantName Sniff now longer complains about the PHPUnit_MAIN_METHOD constant (request [#17798][pear-17798]) -- Squiz FileComment sniff now checks JS files as well as PHP files -- Squiz FunctionCommentSniff now supports namespaces in type hints - -### Fixed -- Fixed a problem in Squiz OutputBufferingIndentSniff where block comments were reported as not indented -- Fixed bug [#17092][pear-17092] : Problems with utf8_encode and htmlspecialchars with non-ascii chars - - Use the new --encoding=utf-8 command line argument if your files are utf-8 encoded -- Fixed bug [#17629][pear-17629] : PHP_CodeSniffer_Tokens::$booleanOperators missing T_LOGICAL_XOR - - Thanks to [Matthew Turland][@elazar] for the patch -- Fixed bug [#17699][pear-17699] : Fatal error generating code coverage with PHPUnit 5.3.0RC1 -- Fixed bug [#17718][pear-17718] : Namespace 'use' statement: used global class name is recognized as constant -- Fixed bug [#17734][pear-17734] : Generic SubversionPropertiesSniff complains on non SVN files -- Fixed bug [#17742][pear-17742] : EmbeddedPhpSniff reacts negatively to file without closing PHP tag -- Fixed bug [#17823][pear-17823] : Notice: Please no longer include `PHPUnit/Framework.php` - -[pear-17092]: https://pear.php.net/bugs/bug.php?id=17092 -[pear-17467]: https://pear.php.net/bugs/bug.php?id=17467 -[pear-17606]: https://pear.php.net/bugs/bug.php?id=17606 -[pear-17629]: https://pear.php.net/bugs/bug.php?id=17629 -[pear-17682]: https://pear.php.net/bugs/bug.php?id=17682 -[pear-17683]: https://pear.php.net/bugs/bug.php?id=17683 -[pear-17699]: https://pear.php.net/bugs/bug.php?id=17699 -[pear-17718]: https://pear.php.net/bugs/bug.php?id=17718 -[pear-17734]: https://pear.php.net/bugs/bug.php?id=17734 -[pear-17742]: https://pear.php.net/bugs/bug.php?id=17742 -[pear-17798]: https://pear.php.net/bugs/bug.php?id=17798 -[pear-17823]: https://pear.php.net/bugs/bug.php?id=17823 - -## 1.3.0a1 - 2010-07-15 - -### Changed -- All `CodingStandard.php` files have been replaced by `ruleset.xml` files - - Custom standards will need to be converted over to this new format to continue working -- You can specify a path to your own custom ruleset.xml file by using the --standard command line arg - - e.g., phpcs --standard=/path/to/my/ruleset.xml -- Added a new report type --report=gitblame to show how many errors and warnings were committed by each author - - Has the same functionality as the svnblame report - - Thanks to [Ben Selby][@benmatselby] for the patch -- A new token type T_DOLLAR has been added to allow you to sniff for variable variables (feature request [#17095][pear-17095]) - - Thanks to [Ian Young][pear-youngian] for the patch -- JS tokenizer now supports T_POWER (^) and T_MOD_EQUAL (%=) tokens (feature request [#17441][pear-17441]) -- If you have PHP_Timer installed, you'll now get a time/memory summary at the end of a script run - - Only happens when printing reports that are designed to be read on the command line -- Added Generic DeprecatedFunctionsSniff to warn about the use of deprecated functions (feature request [#16694][pear-16694]) - - Thanks to [Sebastian Bergmann][@sebastianbergmann] for the patch -- Added Squiz LogicalOperatorSniff to ensure that logical operators are surrounded by single spaces -- Added MySource ChannelExceptionSniff to ensure action files only throw ChannelException -- Added new method getClassProperties() for sniffs to use to determine if a class is abstract and/or final - - Thanks to [Christian Kaps][@akkie] for the patch -- Generic UpperCaseConstantSniff no longer throws errors about namespaces - - Thanks to [Christian Kaps][@akkie] for the patch -- Squiz OperatorBracketSniff now correctly checks value assignments in arrays -- Squiz LongConditionClosingCommentSniff now requires a comment for long CASE statements that use curly braces -- Squiz LongConditionClosingCommentSniff now requires an exact comment match on the brace -- MySource IncludeSystemSniff now ignores DOMDocument usage -- MySource IncludeSystemSniff no longer requires inclusion of systems that are being implemented -- Removed found and expected messages from Squiz ConcatenationSpacingSniff because they were messy and not helpful - -### Fixed -- Fixed a problem where Generic CodeAnalysisSniff could show warnings if checking multi-line strings -- Fixed error messages in Squiz ArrayDeclarationSniff reporting incorrect number of found and expected spaces -- Fixed bug [#17048][pear-17048] : False positive in Squiz_WhiteSpace_ScopeKeywordSpacingSniff -- Fixed bug [#17054][pear-17054] : phpcs more strict than PEAR CS regarding function parameter spacing -- Fixed bug [#17096][pear-17096] : Notice: Undefined index: `scope_condition` in `ScopeClosingBraceSniff.php` - - Moved PEAR.Functions.FunctionCallArgumentSpacing to Generic.Functions.FunctionCallArgumentSpacing -- Fixed bug [#17144][pear-17144] : Deprecated: Function eregi() is deprecated -- Fixed bug [#17236][pear-17236] : PHP Warning due to token_get_all() in DoubleQuoteUsageSniff -- Fixed bug [#17243][pear-17243] : Alternate Switch Syntax causes endless loop of Notices in SwitchDeclaration -- Fixed bug [#17313][pear-17313] : Bug with switch case structure -- Fixed bug [#17331][pear-17331] : Possible parse error: interfaces may not include member vars -- Fixed bug [#17337][pear-17337] : CSS tokenizer fails on quotes urls -- Fixed bug [#17420][pear-17420] : Uncaught exception when comment before function brace -- Fixed bug [#17503][pear-17503] : closures formatting is not supported - -[pear-16694]: https://pear.php.net/bugs/bug.php?id=16694 -[pear-17048]: https://pear.php.net/bugs/bug.php?id=17048 -[pear-17054]: https://pear.php.net/bugs/bug.php?id=17054 -[pear-17095]: https://pear.php.net/bugs/bug.php?id=17095 -[pear-17096]: https://pear.php.net/bugs/bug.php?id=17096 -[pear-17144]: https://pear.php.net/bugs/bug.php?id=17144 -[pear-17236]: https://pear.php.net/bugs/bug.php?id=17236 -[pear-17243]: https://pear.php.net/bugs/bug.php?id=17243 -[pear-17313]: https://pear.php.net/bugs/bug.php?id=17313 -[pear-17331]: https://pear.php.net/bugs/bug.php?id=17331 -[pear-17337]: https://pear.php.net/bugs/bug.php?id=17337 -[pear-17420]: https://pear.php.net/bugs/bug.php?id=17420 -[pear-17441]: https://pear.php.net/bugs/bug.php?id=17441 -[pear-17503]: https://pear.php.net/bugs/bug.php?id=17503 - -## 1.2.2 - 2010-01-27 - -### Changed -- The core PHP_CodeSniffer_File methods now understand the concept of closures (feature request [#16866][pear-16866]) - - Thanks to [Christian Kaps][@akkie] for the sample code -- Sniffs can now specify violation codes for each error and warning they add - - Future versions will allow you to override messages and severities using these codes - - Specifying a code is optional, but will be required if you wish to support overriding -- All reports have been broken into separate classes - - Command line usage and report output remains the same - - Thanks to Gabriele Santini for the patch -- Added an interactive mode that can be enabled using the -a command line argument - - Scans files and stops when it finds a file with errors - - Waits for user input to recheck the file (hopefully you fixed the errors) or skip the file - - Useful for very large code bases where full rechecks take a while -- The reports now show the correct number of errors and warnings found -- The isCamelCaps method now allows numbers in class names -- The JS tokenizer now correctly identifies boolean and bitwise AND and OR tokens -- The JS tokenizer now correctly identifies regular expressions used in conditions -- PEAR ValidFunctionNameSniff now ignores closures -- Squiz standard now uses the PEAR setting of 85 chars for LineLengthSniff -- Squiz ControlStructureSpacingSniff now ensure there are no spaces around parentheses -- Squiz LongConditionClosingCommentSniff now checks for comments at the end of try/catch statements -- Squiz LongConditionClosingCommentSniff now checks validity of comments for short structures if they exist -- Squiz IncrementDecrementUsageSniff now has better checking to ensure it only looks at simple variable assignments -- Squiz PostStatementCommentSniff no longer throws errors for end function comments -- Squiz InlineCommentSniff no longer throws errors for end function comments -- Squiz OperatorBracketSniff now allows simple arithmetic operations in SWITCH conditions -- Squiz ValidFunctionNameSniff now ignores closures -- Squiz MethodScopeSniff now ignores closures -- Squiz ClosingDeclarationCommentSniff now ignores closures -- Squiz GlobalFunctionSniff now ignores closures -- Squiz DisallowComparisonAssignmentSniff now ignores the assigning of arrays -- Squiz DisallowObjectStringIndexSniff now allows indexes that contain dots and reserved words -- Squiz standard now throws nesting level and cyclomatic complexity errors at much higher levels -- Squiz CommentedOutCodeSniff now ignores common comment framing characters -- Squiz ClassCommentSniff now ensures the open comment tag is the only content on the first line -- Squiz FileCommentSniff now ensures the open comment tag is the only content on the first line -- Squiz FunctionCommentSniff now ensures the open comment tag is the only content on the first line -- Squiz VariableCommentSniff now ensures the open comment tag is the only content on the first line -- Squiz NonExecutableCodeSniff now warns about empty return statements that are not required -- Removed ForbiddenStylesSniff from Squiz standard - - It is now in the MySource standard as BrowserSpecificStylesSniff - - New BrowserSpecificStylesSniff ignores files with browser-specific suffixes -- MySource IncludeSystemSniff no longer throws errors when extending the Exception class -- MySource IncludeSystemSniff no longer throws errors for the abstract widget class -- MySource IncludeSystemSniff and UnusedSystemSniff now allow includes inside IF statements -- MySource IncludeSystemSniff no longer throws errors for included widgets inside methods -- MySource GetRequestDataSniff now throws errors for using $_FILES -- MySource CreateWidgetTypeCallbackSniff now allows return statements in nested functions -- MySource DisallowSelfActionsSniff now ignores abstract classes - -### Fixed -- Fixed a problem with the SVN pre-commit hook for PHP versions without vertical whitespace regex support -- Fixed bug [#16740][pear-16740] : False positives for heredoc strings and unused parameter sniff -- Fixed bug [#16794][pear-16794] : ValidLogicalOperatorsSniff doesn't report operators not in lowercase -- Fixed bug [#16804][pear-16804] : Report filename is shortened too much -- Fixed bug [#16821][pear-16821] : Bug in Squiz_Sniffs_WhiteSpace_OperatorSpacingSniff - - Thanks to [Jaroslav Hanslík][@kukulich] for the patch -- Fixed bug [#16836][pear-16836] : Notice raised when using semicolon to open case -- Fixed bug [#16855][pear-16855] : Generic standard sniffs incorrectly for define() method -- Fixed bug [#16865][pear-16865] : Two bugs in Squiz_Sniffs_WhiteSpace_OperatorSpacingSniff - - Thanks to [Jaroslav Hanslík][@kukulich] for the patch -- Fixed bug [#16902][pear-16902] : Inline If Declaration bug -- Fixed bug [#16960][pear-16960] : False positive for late static binding in Squiz/ScopeKeywordSpacingSniff - - Thanks to [Jakub Tománek][pear-thezero] for the patch -- Fixed bug [#16976][pear-16976] : The phpcs attempts to process symbolic links that don't resolve to files -- Fixed bug [#17017][pear-17017] : Including one file in the files sniffed alters errors reported for another file - -[pear-16740]: https://pear.php.net/bugs/bug.php?id=16740 -[pear-16794]: https://pear.php.net/bugs/bug.php?id=16794 -[pear-16804]: https://pear.php.net/bugs/bug.php?id=16804 -[pear-16821]: https://pear.php.net/bugs/bug.php?id=16821 -[pear-16836]: https://pear.php.net/bugs/bug.php?id=16836 -[pear-16855]: https://pear.php.net/bugs/bug.php?id=16855 -[pear-16865]: https://pear.php.net/bugs/bug.php?id=16865 -[pear-16866]: https://pear.php.net/bugs/bug.php?id=16866 -[pear-16902]: https://pear.php.net/bugs/bug.php?id=16902 -[pear-16960]: https://pear.php.net/bugs/bug.php?id=16960 -[pear-16976]: https://pear.php.net/bugs/bug.php?id=16976 -[pear-17017]: https://pear.php.net/bugs/bug.php?id=17017 - -## 1.2.1 - 2009-11-17 - -### Changed -- Added a new report type --report=svnblame to show how many errors and warnings were committed by each author - - Also shows the percentage of their code that are errors and warnings - - Requires you to have the SVN command in your path - - Make sure SVN is storing usernames and passwords (if required) or you will need to enter them for each file - - You can also use the -s command line argument to see the different types of errors authors are committing - - You can use the -v command line argument to see all authors, even if they have no errors or warnings -- Added a new command line argument --report-width to allow you to set the column width of screen reports - - Reports won't accept values less than 70 or else they get too small - - Can also be set via a config var: phpcs --config-set report_width 100 -- You can now get PHP_CodeSniffer to ignore a whole file by adding @codingStandardsIgnoreFile in the content - - If you put it in the first two lines the file won't even be tokenized, so it will be much quicker -- Reports now print their file lists in alphabetical order -- PEAR FunctionDeclarationSniff now reports error for incorrect closing bracket placement in multi-line definitions -- Added Generic CallTimePassByReferenceSniff to prohibit the passing of variables into functions by reference - - Thanks to Florian Grandel for the contribution -- Added Squiz DisallowComparisonAssignmentSniff to ban the assignment of comparison values to a variable -- Added Squiz DuplicateStyleDefinitionSniff to check for duplicate CSS styles in a single class block -- Squiz ArrayDeclarationSniff no longer checks the case of array indexes because that is not its job -- Squiz PostStatementCommentSniff now allows end comments for class member functions -- Squiz InlineCommentSniff now supports the checking of JS files -- MySource CreateWidgetTypeCallbackSniff now allows the callback to be passed to another function -- MySource CreateWidgetTypeCallbackSniff now correctly ignores callbacks used inside conditions -- Generic MultipleStatementAlignmentSniff now enforces a single space before equals sign if max padding is reached -- Fixed a problem in the JS tokenizer where regular expressions containing \// were not converted correctly -- Fixed a problem tokenizing CSS files where multiple ID targets on a line would look like comments -- Fixed a problem tokenizing CSS files where class names containing a colon looked like style definitions -- Fixed a problem tokenizing CSS files when style statements had empty url() calls -- Fixed a problem tokenizing CSS colours with the letter E in first half of the code -- Squiz ColonSpacingSniff now ensures it is only checking style definitions in CSS files and not class names -- Squiz DisallowComparisonAssignmentSniff no longer reports errors when assigning the return value of a function -- CSS tokenizer now correctly supports multi-line comments -- When only the case of var names differ for function comments, the error now indicates the case is different - -### Fixed -- Fixed an issue with Generic UnnecessaryStringConcatSniff where it incorrectly suggested removing a concat -- Fixed bug [#16530][pear-16530] : ScopeIndentSniff reports false positive -- Fixed bug [#16533][pear-16533] : Duplicate errors and warnings -- Fixed bug [#16563][pear-16563] : Check file extensions problem in phpcs-svn-pre-commit - - Thanks to [Kaijung Chen][pear-et3w503] for the patch -- Fixed bug [#16592][pear-16592] : Object operator indentation incorrect when first operator is on a new line -- Fixed bug [#16641][pear-16641] : Notice output -- Fixed bug [#16682][pear-16682] : Squiz_Sniffs_Strings_DoubleQuoteUsageSniff reports string "\0" as invalid -- Fixed bug [#16683][pear-16683] : Typing error in PHP_CodeSniffer_CommentParser_AbstractParser -- Fixed bug [#16684][pear-16684] : Bug in Squiz_Sniffs_PHP_NonExecutableCodeSniff -- Fixed bug [#16692][pear-16692] : Spaces in paths in Squiz_Sniffs_Debug_JavaScriptLintSniff - - Thanks to [Jaroslav Hanslík][@kukulich] for the patch -- Fixed bug [#16696][pear-16696] : Spelling error in MultiLineConditionSniff -- Fixed bug [#16697][pear-16697] : MultiLineConditionSniff incorrect result with inline IF -- Fixed bug [#16698][pear-16698] : Notice in JavaScript Tokenizer -- Fixed bug [#16736][pear-16736] : Multi-files sniffs aren't processed when FILE is a single directory - - Thanks to [Alexey Shein][pear-conf] for the patch -- Fixed bug [#16792][pear-16792] : Bug in Generic_Sniffs_PHP_ForbiddenFunctionsSniff - -[pear-16530]: https://pear.php.net/bugs/bug.php?id=16530 -[pear-16533]: https://pear.php.net/bugs/bug.php?id=16533 -[pear-16563]: https://pear.php.net/bugs/bug.php?id=16563 -[pear-16592]: https://pear.php.net/bugs/bug.php?id=16592 -[pear-16641]: https://pear.php.net/bugs/bug.php?id=16641 -[pear-16682]: https://pear.php.net/bugs/bug.php?id=16682 -[pear-16683]: https://pear.php.net/bugs/bug.php?id=16683 -[pear-16684]: https://pear.php.net/bugs/bug.php?id=16684 -[pear-16692]: https://pear.php.net/bugs/bug.php?id=16692 -[pear-16696]: https://pear.php.net/bugs/bug.php?id=16696 -[pear-16697]: https://pear.php.net/bugs/bug.php?id=16697 -[pear-16698]: https://pear.php.net/bugs/bug.php?id=16698 -[pear-16736]: https://pear.php.net/bugs/bug.php?id=16736 -[pear-16792]: https://pear.php.net/bugs/bug.php?id=16792 - -## 1.2.0 - 2009-08-17 - -### Changed -- Installed standards are now favoured over custom standards when using the cmd line arg with relative paths -- Unit tests now use a lot less memory while running -- Squiz standard now uses Generic EmptyStatementSniff but throws errors instead of warnings -- Squiz standard now uses Generic UnusedFunctionParameterSniff -- Removed unused ValidArrayIndexNameSniff from the Squiz standard - -### Fixed -- Fixed bug [#16424][pear-16424] : SubversionPropertiesSniff print PHP Warning -- Fixed bug [#16450][pear-16450] : Constant `PHP_CODESNIFFER_VERBOSITY` already defined (unit tests) -- Fixed bug [#16453][pear-16453] : function declaration long line splitted error -- Fixed bug [#16482][pear-16482] : phpcs-svn-pre-commit ignores extensions parameter - -[pear-16424]: https://pear.php.net/bugs/bug.php?id=16424 -[pear-16450]: https://pear.php.net/bugs/bug.php?id=16450 -[pear-16453]: https://pear.php.net/bugs/bug.php?id=16453 -[pear-16482]: https://pear.php.net/bugs/bug.php?id=16482 - -## 1.2.0RC3 - 2009-07-07 - -### Changed -- You can now use @codingStandardsIgnoreStart and @...End comments to suppress messages (feature request [#14002][pear-14002]) -- A warning is now included for files without any code when short_open_tag is set to Off (feature request [#12952][pear-12952]) -- You can now use relative paths to your custom standards with the --standard cmd line arg (feature request [#14967][pear-14967]) -- You can now override magic methods and functions in PEAR ValidFunctionNameSniff (feature request [#15830][pear-15830]) -- MySource IncludeSystemSniff now recognises widget action classes -- MySource IncludeSystemSniff now knows about unit test classes and changes rules accordingly - -[pear-12952]: https://pear.php.net/bugs/bug.php?id=12952 -[pear-14002]: https://pear.php.net/bugs/bug.php?id=14002 -[pear-14967]: https://pear.php.net/bugs/bug.php?id=14967 -[pear-15830]: https://pear.php.net/bugs/bug.php?id=15830 - -## 1.2.0RC2 - 2009-05-25 - -### Changed -- Test suite can now be run using the full path to `AllTests.php` (feature request [#16179][pear-16179]) - -### Fixed -- Fixed bug [#15980][pear-15980] : PHP_CodeSniffer change PHP current directory - - Thanks to [Dolly Aswin Harahap][pear-dollyaswin] for the patch -- Fixed bug [#16001][pear-16001] : Notice triggered -- Fixed bug [#16054][pear-16054] : phpcs-svn-pre-commit not showing any errors -- Fixed bug [#16071][pear-16071] : Fatal error: Uncaught PHP_CodeSniffer_Exception -- Fixed bug [#16170][pear-16170] : Undefined Offset -1 in `MultiLineConditionSniff.php` on line 68 -- Fixed bug [#16175][pear-16175] : Bug in Squiz-IncrementDecrementUsageSniff - -[pear-15980]: https://pear.php.net/bugs/bug.php?id=15980 -[pear-16001]: https://pear.php.net/bugs/bug.php?id=16001 -[pear-16054]: https://pear.php.net/bugs/bug.php?id=16054 -[pear-16071]: https://pear.php.net/bugs/bug.php?id=16071 -[pear-16170]: https://pear.php.net/bugs/bug.php?id=16170 -[pear-16175]: https://pear.php.net/bugs/bug.php?id=16175 -[pear-16179]: https://pear.php.net/bugs/bug.php?id=16179 - -## 1.2.0RC1 - 2009-03-09 - -### Changed -- Reports that are output to a file now include a trailing newline at the end of the file -- Fixed sniff names not shown in -vvv token processing output -- Added Generic SubversionPropertiesSniff to check that specific svn props are set for files - - Thanks to Jack Bates for the contribution -- The PHP version check can now be overridden in classes that extend PEAR FileCommentSniff - - Thanks to [Helgi Þormar Þorbjörnsson][@helgi] for the suggestion -- Added Generic ConstructorNameSniff to check for PHP4 constructor name usage - - Thanks to Leif Wickland for the contribution -- Squiz standard now supports multi-line function and condition sniffs from PEAR standard -- Squiz standard now uses Generic ConstructorNameSniff -- Added MySource GetRequestDataSniff to ensure REQUEST, GET and POST are not accessed directly -- Squiz OperatorBracketSniff now allows square brackets in simple unbracketed operations - -### Fixed -- Fixed the incorrect tokenizing of multi-line block comments in CSS files -- Fixed bug [#15383][pear-15383] : Uncaught PHP_CodeSniffer_Exception -- Fixed bug [#15408][pear-15408] : An unexpected exception has been caught: Undefined offset: 2 -- Fixed bug [#15519][pear-15519] : Uncaught PHP_CodeSniffer_Exception -- Fixed bug [#15624][pear-15624] : Pre-commit hook fails with PHP errors -- Fixed bug [#15661][pear-15661] : Uncaught PHP_CodeSniffer_Exception -- Fixed bug [#15722][pear-15722] : "declare(encoding = 'utf-8');" leads to "Missing file doc comment" -- Fixed bug [#15910][pear-15910] : Object operator indention not calculated correctly - -[pear-15383]: https://pear.php.net/bugs/bug.php?id=15383 -[pear-15408]: https://pear.php.net/bugs/bug.php?id=15408 -[pear-15519]: https://pear.php.net/bugs/bug.php?id=15519 -[pear-15624]: https://pear.php.net/bugs/bug.php?id=15624 -[pear-15661]: https://pear.php.net/bugs/bug.php?id=15661 -[pear-15722]: https://pear.php.net/bugs/bug.php?id=15722 -[pear-15910]: https://pear.php.net/bugs/bug.php?id=15910 - -## 1.2.0a1 - 2008-12-18 - -### Changed -- PHP_CodeSniffer now has a CSS tokenizer for checking CSS files -- Added support for a new multi-file sniff that sniffs all processed files at once -- Added new output format --report=emacs to output errors using the emacs standard compile output format - - Thanks to Len Trigg for the contribution -- Reports can now be written to a file using the --report-file command line argument (feature request [#14953][pear-14953]) - - The report is also written to screen when using this argument -- The CheckStyle, CSV and XML reports now include a source for each error and warning (feature request [#13242][pear-13242]) - - A new report type --report=source can be used to show you the most common errors in your files -- Added new command line argument -s to show error sources in all reports -- Added new command line argument --sniffs to specify a list of sniffs to restrict checking to - - Uses the sniff source codes that are optionally displayed in reports -- Changed the max width of error lines from 80 to 79 chars to stop blank lines in the default windows cmd window -- PHP_CodeSniffer now has a token for an asperand (@ symbol) so sniffs can listen for them - - Thanks to Andy Brockhurst for the patch -- Added Generic DuplicateClassNameSniff that will warn if the same class name is used in multiple files - - Not currently used by any standard; more of a multi-file sniff sample than anything useful -- Added Generic NoSilencedErrorsSniff that warns if PHP errors are being silenced using the @ symbol - - Thanks to Andy Brockhurst for the contribution -- Added Generic UnnecessaryStringConcatSniff that checks for two strings being concatenated -- Added PEAR FunctionDeclarationSniff to enforce the new multi-line function declaration PEAR standard -- Added PEAR MultiLineAssignmentSniff to enforce the correct indentation of multi-line assignments -- Added PEAR MultiLineConditionSniff to enforce the new multi-line condition PEAR standard -- Added PEAR ObjectOperatorIndentSniff to enforce the new chained function call PEAR standard -- Added MySource DisallowSelfActionSniff to ban the use of self::method() calls in Action classes -- Added MySource DebugCodeSniff to ban the use of Debug::method() calls -- Added MySource CreateWidgetTypeCallback sniff to check callback usage in widget type create methods -- Added Squiz DisallowObjectStringIndexSniff that forces object dot notation in JavaScript files - - Thanks to [Sertan Danis][@sertand] for the contribution -- Added Squiz DiscouragedFunctionsSniff to warn when using debug functions -- Added Squiz PropertyLabelSniff to check whitespace around colons in JS property and label declarations -- Added Squiz DuplicatePropertySniff to check for duplicate property names in JS classes -- Added Squiz ColonSpacingSniff to check for spacing around colons in CSS style definitions -- Added Squiz SemicolonSpacingSniff to check for spacing around semicolons in CSS style definitions -- Added Squiz IndentationSniff to check for correct indentation of CSS files -- Added Squiz ColourDefinitionSniff to check that CSS colours are defined in uppercase and using shorthand -- Added Squiz EmptyStyleDefinitionSniff to check for CSS style definitions without content -- Added Squiz EmptyClassDefinitionSniff to check for CSS class definitions without content -- Added Squiz ClassDefinitionOpeningBraceSpaceSniff to check for spaces around opening brace of CSS class definitions -- Added Squiz ClassDefinitionClosingBraceSpaceSniff to check for a single blank line after CSS class definitions -- Added Squiz ClassDefinitionNameSpacingSniff to check for a blank lines inside CSS class definition names -- Added Squiz DisallowMultipleStyleDefinitionsSniff to check for multiple style definitions on a single line -- Added Squiz DuplicateClassDefinitionSniff to check for duplicate CSS class blocks that can be merged -- Added Squiz ForbiddenStylesSniff to check for usage of browser specific styles -- Added Squiz OpacitySniff to check for incorrect opacity values in CSS -- Added Squiz LowercaseStyleDefinitionSniff to check for styles that are not defined in lowercase -- Added Squiz MissingColonSniff to check for style definitions where the colon has been forgotten -- Added Squiz MultiLineFunctionDeclarationSniff to check that multi-line declarations contain one param per line -- Added Squiz JSLintSniff to check for JS errors using the jslint.js script through Rhino - - Set jslint path using phpcs --config-set jslint_path /path/to/jslint.js - - Set rhino path using phpcs --config-set rhino_path /path/to/rhino -- Added Generic TodoSniff that warns about comments that contain the word TODO -- Removed MultipleStatementAlignmentSniff from the PEAR standard as alignment is now optional -- Generic ForbiddenFunctionsSniff now has protected member var to specify if it should use errors or warnings -- Generic MultipleStatementAlignmentSniff now has correct error message if assignment is on a new line -- Generic MultipleStatementAlignmentSniff now has protected member var to allow it to ignore multi-line assignments -- Generic LineEndingsSniff now supports checking of JS files -- Generic LineEndingsSniff now supports checking of CSS files -- Generic DisallowTabIndentSniff now supports checking of CSS files -- Squiz DoubleQuoteUsageSniff now bans the use of variables in double quoted strings in favour of concatenation -- Squiz SuperfluousWhitespaceSniff now supports checking of JS files -- Squiz SuperfluousWhitespaceSniff now supports checking of CSS files -- Squiz DisallowInlineIfSniff now supports checking of JS files -- Squiz SemicolonSpacingSniff now supports checking of JS files -- Squiz PostStatementCommentSniff now supports checking of JS files -- Squiz FunctionOpeningBraceSpacingSniff now supports checking of JS files -- Squiz FunctionClosingBraceSpacingSniff now supports checking of JS files - - Empty JS functions must have their opening and closing braces next to each other -- Squiz ControlStructureSpacingSniff now supports checking of JS files -- Squiz LongConditionClosingCommentSniff now supports checking of JS files -- Squiz OperatorSpacingSniff now supports checking of JS files -- Squiz SwitchDeclarationSniff now supports checking of JS files -- Squiz CommentedOutCodeSniff now supports checking of CSS files -- Squiz DisallowSizeFunctionsInLoopsSniff now supports checking of JS files for the use of object.length -- Squiz DisallowSizeFunctionsInLoopsSniff no longer complains about size functions outside of the FOR condition -- Squiz ControlStructureSpacingSniff now bans blank lines at the end of a control structure -- Squiz ForLoopDeclarationSniff no longer throws errors for JS FOR loops without semicolons -- Squiz MultipleStatementAlignmentSniff no longer throws errors if a statement would take more than 8 spaces to align -- Squiz standard now uses Generic TodoSniff -- Squiz standard now uses Generic UnnecessaryStringConcatSniff -- Squiz standard now uses PEAR MultiLineAssignmentSniff -- Squiz standard now uses PEAR MultiLineConditionSniff -- Zend standard now uses OpeningFunctionBraceBsdAllmanSniff (feature request [#14647][pear-14647]) -- MySource JoinStringsSniff now bans the use of inline array joins and suggests the + operator -- Fixed incorrect errors that can be generated from abstract scope sniffs when moving to a new file -- Core tokenizer now matches orphaned curly braces in the same way as square brackets -- Whitespace tokens at the end of JS files are now added to the token stack -- JavaScript tokenizer now identifies properties and labels as new token types -- JavaScript tokenizer now identifies object definitions as a new token type and matches curly braces for them -- JavaScript tokenizer now identifies DIV_EQUAL and MUL_EQUAL tokens -- Improved regular expression detection in the JavaScript tokenizer -- Improve AbstractPatternSniff support so it can listen for any token type, not just weighted tokens - -### Fixed -- Fixed Squiz DoubleQuoteUsageSniff so it works correctly with short_open_tag=Off -- Fixed bug [#14409][pear-14409] : Output of warnings to log file -- Fixed bug [#14520][pear-14520] : Notice: Undefined offset: 1 in `CodeSniffer/File.php` on line -- Fixed bug [#14637][pear-14637] : Call to processUnknownArguments() misses second parameter $pos - - Thanks to [Peter Buri][pear-burci] for the patch -- Fixed bug [#14889][pear-14889] : Lack of clarity: licence or license -- Fixed bug [#15008][pear-15008] : Nested Parentheses in Control Structure Sniffs -- Fixed bug [#15091][pear-15091] : pre-commit hook attempts to sniff folders - - Thanks to [Bruce Weirdan][pear-weirdan] for the patch -- Fixed bug [#15124][pear-15124] : `AbstractParser.php` uses deprecated `split()` function - - Thanks to [Sebastian Bergmann][@sebastianbergmann] for the patch -- Fixed bug [#15188][pear-15188] : PHPCS vs HEREDOC strings -- Fixed bug [#15231][pear-15231] : Notice: Uninitialized string offset: 0 in `FileCommentSniff.php` on line 555 -- Fixed bug [#15336][pear-15336] : Notice: Undefined offset: 2 in `CodeSniffer/File.php` on line - -[pear-13242]: https://pear.php.net/bugs/bug.php?id=13242 -[pear-14409]: https://pear.php.net/bugs/bug.php?id=14409 -[pear-14520]: https://pear.php.net/bugs/bug.php?id=14520 -[pear-14637]: https://pear.php.net/bugs/bug.php?id=14637 -[pear-14647]: https://pear.php.net/bugs/bug.php?id=14647 -[pear-14889]: https://pear.php.net/bugs/bug.php?id=14889 -[pear-14953]: https://pear.php.net/bugs/bug.php?id=14953 -[pear-15008]: https://pear.php.net/bugs/bug.php?id=15008 -[pear-15091]: https://pear.php.net/bugs/bug.php?id=15091 -[pear-15124]: https://pear.php.net/bugs/bug.php?id=15124 -[pear-15188]: https://pear.php.net/bugs/bug.php?id=15188 -[pear-15231]: https://pear.php.net/bugs/bug.php?id=15231 -[pear-15336]: https://pear.php.net/bugs/bug.php?id=15336 - -## 1.1.0 - 2008-07-14 - -### Changed -- PEAR FileCommentSniff now allows tag orders to be overridden in child classes - - Thanks to Jeff Hodsdon for the patch -- Added Generic DisallowMultipleStatementsSniff to ensure there is only one statement per line -- Squiz standard now uses DisallowMultipleStatementsSniff - -### Fixed -- Fixed error in Zend ValidVariableNameSniff when checking vars in form: $class->{$var} -- Fixed bug [#14077][pear-14077] : Fatal error: Uncaught PHP_CodeSniffer_Exception: $stackPtr is not a class member -- Fixed bug [#14168][pear-14168] : Global Function -> Static Method and __autoload() -- Fixed bug [#14238][pear-14238] : Line length not checked at last line of a file -- Fixed bug [#14249][pear-14249] : wrong detection of scope_opener -- Fixed bug [#14250][pear-14250] : ArrayDeclarationSniff emit warnings at malformed array -- Fixed bug [#14251][pear-14251] : --extensions option doesn't work - -## 1.1.0RC3 - 2008-07-03 - -### Changed -- PEAR FileCommentSniff now allows tag orders to be overridden in child classes - - Thanks to Jeff Hodsdon for the patch -- Added Generic DisallowMultipleStatementsSniff to ensure there is only one statement per line -- Squiz standard now uses DisallowMultipleStatementsSniff - -### Fixed -- Fixed error in Zend ValidVariableNameSniff when checking vars in form: $class->{$var} -- Fixed bug [#14077][pear-14077] : Fatal error: Uncaught PHP_CodeSniffer_Exception: $stackPtr is not a class member -- Fixed bug [#14168][pear-14168] : Global Function -> Static Method and __autoload() -- Fixed bug [#14238][pear-14238] : Line length not checked at last line of a file -- Fixed bug [#14249][pear-14249] : wrong detection of scope_opener -- Fixed bug [#14250][pear-14250] : ArrayDeclarationSniff emit warnings at malformed array -- Fixed bug [#14251][pear-14251] : --extensions option doesn't work - -[pear-14077]: https://pear.php.net/bugs/bug.php?id=14077 -[pear-14168]: https://pear.php.net/bugs/bug.php?id=14168 -[pear-14238]: https://pear.php.net/bugs/bug.php?id=14238 -[pear-14249]: https://pear.php.net/bugs/bug.php?id=14249 -[pear-14250]: https://pear.php.net/bugs/bug.php?id=14250 -[pear-14251]: https://pear.php.net/bugs/bug.php?id=14251 - -## 1.1.0RC2 - 2008-06-13 - -### Changed -- Permission denied errors now stop script execution but still display current errors (feature request [#14076][pear-14076]) -- Added Squiz ValidArrayIndexNameSniff to ensure array indexes do not use camel case -- Squiz ArrayDeclarationSniff now ensures arrays are not declared with camel case index values -- PEAR ValidVariableNameSniff now alerts about a possible parse error for member vars inside an interface - -### Fixed -- Fixed bug [#13921][pear-13921] : js parsing fails for comments on last line of file -- Fixed bug [#13922][pear-13922] : crash in case of malformed (but tokenized) PHP file - - PEAR and Squiz ClassDeclarationSniff now throw warnings for possible parse errors - - Squiz ValidClassNameSniff now throws warning for possible parse errors - - Squiz ClosingDeclarationCommentSniff now throws additional warnings for parse errors - -[pear-13921]: https://pear.php.net/bugs/bug.php?id=13921 -[pear-13922]: https://pear.php.net/bugs/bug.php?id=13922 -[pear-14076]: https://pear.php.net/bugs/bug.php?id=14076 - -## 1.1.0RC1 - 2008-05-13 - -### Changed -- Added support for multiple tokenizers so PHP_CodeSniffer can check more than just PHP files - - PHP_CodeSniffer now has a JS tokenizer for checking JavaScript files - - Sniffs need to be updated to work with additional tokenizers, or new sniffs written for them -- phpcs now exits with status 2 if the tokenizer extension has been disabled (feature request [#13269][pear-13269]) -- Added scripts/phpcs-svn-pre-commit that can be used as an SVN pre-commit hook - - Also reworked the way the phpcs script works to make it easier to wrap it with other functionality - - Thanks to Jack Bates for the contribution -- Fixed error in phpcs error message when a supplied file does not exist -- Fixed a cosmetic error in AbstractPatternSniff where the "found" string was missing some content -- Added sniffs that implement part of the PMD rule catalog to the Generic standard - - Thanks to [Manuel Pichler][@manuelpichler] for the contribution of all these sniffs. -- Squiz FunctionCommentThrowTagSniff no longer throws errors for function that only throw variables -- Generic ScopeIndentSniff now has private member to enforce exact indent matching -- Replaced Squiz DisallowCountInLoopsSniff with Squiz DisallowSizeFunctionsInLoopsSniff - - Thanks to Jan Miczaika for the sniff -- Squiz BlockCommentSniff now checks inline doc block comments -- Squiz InlineCommentSniff now checks inline doc block comments -- Squiz BlockCommentSniff now checks for no blank line before first comment in a function -- Squiz DocCommentAlignmentSniff now ignores inline doc block comments -- Squiz ControlStructureSpacingSniff now ensures no blank lines at the start of control structures -- Squiz ControlStructureSpacingSniff now ensures no blank lines between control structure closing braces -- Squiz IncrementDecrementUsageSniff now ensures inc/dec ops are bracketed in string concats -- Squiz IncrementDecrementUsageSniff now ensures inc/dec ops are not used in arithmetic operations -- Squiz FunctionCommentSniff no longer throws errors if return value is mixed but function returns void somewhere -- Squiz OperatorBracketSniff no allows function call brackets to count as operator brackets -- Squiz DoubleQuoteUsageSniff now supports \x \f and \v (feature request [#13365][pear-13365]) -- Squiz ComparisonOperatorUsageSniff now supports JS files -- Squiz ControlSignatureSniff now supports JS files -- Squiz ForLoopDeclarationSniff now supports JS files -- Squiz OperatorBracketSniff now supports JS files -- Squiz InlineControlStructureSniff now supports JS files -- Generic LowerCaseConstantSniff now supports JS files -- Generic DisallowTabIndentSniff now supports JS files -- Generic MultipleStatementAlignmentSniff now supports JS files -- Added Squiz ObjectMemberCommaSniff to ensure the last member of a JS object is not followed by a comma -- Added Squiz ConstantCaseSniff to ensure the PHP constants are uppercase and JS lowercase -- Added Squiz JavaScriptLintSniff to check JS files with JSL - - Set path using phpcs --config-set jsl_path /path/to/jsl -- Added MySource FirebugConsoleSniff to ban the use of "console" for JS variable and function names -- Added MySource JoinStringsSniff to enforce the use of join() to concatenate JS strings -- Added MySource AssignThisSniff to ensure this is only assigned to a var called self -- Added MySource DisallowNewWidgetSniff to ban manual creation of widget objects -- Removed warning shown in Zend CodeAnalyzerSniff when the ZCA path is not set - -### Fixed -- Fixed error in Squiz ValidVariableNameSniff when checking vars in the form $obj->$var -- Fixed error in Squiz DisallowMultipleAssignmentsSniff when checking vars in the form $obj->$var -- Fixed error in Squiz InlineCommentSniff where comments for class constants were seen as inline -- Fixed error in Squiz BlockCommentSniff where comments for class constants were not ignored -- Fixed error in Squiz OperatorBracketSniff where negative numbers were ignored during comparisons -- Fixed error in Squiz FunctionSpacingSniff where functions after member vars reported incorrect spacing -- Fixed bug [#13062][pear-13062] : Interface comments aren't handled in PEAR standard - - Thanks to [Manuel Pichler][@manuelpichler] for the path -- Fixed bug [#13119][pear-13119] : PHP minimum requirement need to be fix -- Fixed bug [#13156][pear-13156] : Bug in Squiz_Sniffs_PHP_NonExecutableCodeSniff -- Fixed bug [#13158][pear-13158] : Strange behaviour in AbstractPatternSniff -- Fixed bug [#13169][pear-13169] : Undefined variables -- Fixed bug [#13178][pear-13178] : Catch exception in `File.php` -- Fixed bug [#13254][pear-13254] : Notices output in checkstyle report causes XML issues -- Fixed bug [#13446][pear-13446] : crash with src of phpMyAdmin - - Thanks to [Manuel Pichler][@manuelpichler] for the path - -[pear-13062]: https://pear.php.net/bugs/bug.php?id=13062 -[pear-13119]: https://pear.php.net/bugs/bug.php?id=13119 -[pear-13156]: https://pear.php.net/bugs/bug.php?id=13156 -[pear-13158]: https://pear.php.net/bugs/bug.php?id=13158 -[pear-13169]: https://pear.php.net/bugs/bug.php?id=13169 -[pear-13178]: https://pear.php.net/bugs/bug.php?id=13178 -[pear-13254]: https://pear.php.net/bugs/bug.php?id=13254 -[pear-13269]: https://pear.php.net/bugs/bug.php?id=13269 -[pear-13365]: https://pear.php.net/bugs/bug.php?id=13365 -[pear-13446]: https://pear.php.net/bugs/bug.php?id=13446 - -## 1.0.1a1 - 2008-04-21 - -### Changed -- Fixed error in PEAR ValidClassNameSniff when checking class names with double underscores -- Moved Squiz InlineControlStructureSniff into Generic standard -- PEAR standard now throws warnings for inline control structures -- Squiz OutputBufferingIndentSniff now ignores the indentation of inline HTML -- MySource IncludeSystemSniff now ignores usage of ZipArchive -- Removed "function" from error messages for Generic function brace sniffs (feature request [#13820][pear-13820]) -- Generic UpperCaseConstantSniff no longer throws errors for declare(ticks = ...) - - Thanks to Josh Snyder for the patch -- Squiz ClosingDeclarationCommentSniff and AbstractVariableSniff now throw warnings for possible parse errors - -### Fixed -- Fixed bug [#13827][pear-13827] : AbstractVariableSniff throws "undefined index" -- Fixed bug [#13846][pear-13846] : Bug in Squiz.NonExecutableCodeSniff -- Fixed bug [#13849][pear-13849] : infinite loop in PHP_CodeSniffer_File::findNext() - -[pear-13820]: https://pear.php.net/bugs/bug.php?id=13820 -[pear-13827]: https://pear.php.net/bugs/bug.php?id=13827 -[pear-13846]: https://pear.php.net/bugs/bug.php?id=13846 -[pear-13849]: https://pear.php.net/bugs/bug.php?id=13849 - -## 1.0.1 - 2008-02-04 - -### Changed -- Squiz ArrayDeclarationSniff now throws error if the array keyword is followed by a space -- Squiz ArrayDeclarationSniff now throws error for empty multi-line arrays -- Squiz ArrayDeclarationSniff now throws error for multi-line arrays with a single value -- Squiz DocCommentAlignmentSniff now checks for a single space before tags inside docblocks -- Squiz ForbiddenFunctionsSniff now disallows is_null() to force use of (=== NULL) instead -- Squiz VariableCommentSniff now continues throwing errors after the first one is found -- Squiz SuperfluousWhitespaceSniff now throws errors for multiple blank lines inside functions -- MySource IncludedSystemSniff now checks extended class names -- MySource UnusedSystemSniff now checks extended and implemented class names -- MySource IncludedSystemSniff now supports includeWidget() -- MySource UnusedSystemSniff now supports includeWidget() -- Added PEAR ValidVariableNameSniff to check that only private member vars are prefixed with an underscore -- Added Squiz DisallowCountInLoopsSniff to check for the use of count() in FOR and WHILE loop conditions -- Added MySource UnusedSystemSniff to check for included classes that are never used - -### Fixed -- Fixed a problem that caused the parentheses map to sometimes contain incorrect values -- Fixed bug [#12767][pear-12767] : Cant run phpcs from dir with PEAR subdir -- Fixed bug [#12773][pear-12773] : Reserved variables are not detected in strings - - Thanks to [Wilfried Loche][pear-wloche] for the patch -- Fixed bug [#12832][pear-12832] : Tab to space conversion does not work -- Fixed bug [#12888][pear-12888] : extra space indentation = Notice: Uninitialized string offset... -- Fixed bug [#12909][pear-12909] : Default generateDocs function does not work under linux - - Thanks to [Paul Smith][pear-thing2b] for the patch -- Fixed bug [#12957][pear-12957] : PHP 5.3 magic method __callStatic - - Thanks to [Manuel Pichler][@manuelpichler] for the patch - -[pear-12767]: https://pear.php.net/bugs/bug.php?id=12767 -[pear-12773]: https://pear.php.net/bugs/bug.php?id=12773 -[pear-12832]: https://pear.php.net/bugs/bug.php?id=12832 -[pear-12888]: https://pear.php.net/bugs/bug.php?id=12888 -[pear-12909]: https://pear.php.net/bugs/bug.php?id=12909 -[pear-12957]: https://pear.php.net/bugs/bug.php?id=12957 - -## 1.0.0 - 2007-12-21 - -### Changed -- You can now specify the full path to a coding standard on the command line (feature request [#11886][pear-11886]) - - This allows you to use standards that are stored outside of PHP_CodeSniffer's own Standard dir - - You can also specify full paths in the `CodingStandard.php` include and exclude methods - - Classes, dirs and files need to be names as if the standard was part of PHP_CodeSniffer - - Thanks to Dirk Thomas for the doc generator patch and testing -- Modified the scope map to keep checking after 3 lines for some tokens (feature request [#12561][pear-12561]) - - Those tokens that must have an opener (like T_CLASS) now keep looking until EOF - - Other tokens (like T_FUNCTION) still stop after 3 lines for performance -- You can now escape commas in ignore patterns so they can be matched in file names - - Thanks to [Carsten Wiedmann][pear-cwiedmann] for the patch -- Config data is now cached in a global var so the file system is not hit so often - - You can also set config data temporarily for the script if you are using your own external script - - Pass TRUE as the third argument to PHP_CodeSniffer::setConfigData() -- PEAR ClassDeclarationSniff no longer throws errors for multi-line class declarations -- Squiz ClassDeclarationSniff now ensures there is one blank line after a class closing brace -- Squiz ClassDeclarationSniff now throws errors for a missing end PHP tag after the end class tag -- Squiz IncrementDecrementUsageSniff no longer throws errors when -= and += are being used with vars -- Squiz SwitchDeclarationSniff now throws errors for switch statements that do not contain a case statement - - Thanks to [Sertan Danis][@sertand] for the patch -- MySource IncludeSystemSniff no longer throws errors for the Util package - -### Fixed -- Fixed bug [#12621][pear-12621] : "space after AS" check is wrong - - Thanks to [Satoshi Oikawa][pear-renoiv] for the patch -- Fixed bug [#12645][pear-12645] : error message is wrong - - Thanks to [Satoshi Oikawa][pear-renoiv] for the patch -- Fixed bug [#12651][pear-12651] : Increment/Decrement Operators Usage at -1 - -[pear-11886]: https://pear.php.net/bugs/bug.php?id=11886 -[pear-12561]: https://pear.php.net/bugs/bug.php?id=12561 -[pear-12621]: https://pear.php.net/bugs/bug.php?id=12621 -[pear-12645]: https://pear.php.net/bugs/bug.php?id=12645 -[pear-12651]: https://pear.php.net/bugs/bug.php?id=12651 - -## 1.0.0RC3 - 2007-11-30 - -### Changed -- Added new command line argument --tab-width that will convert tabs to spaces before testing - - This allows you to use the existing sniffs that check for spaces even when you use tabs - - Can also be set via a config var: phpcs --config-set tab_width 4 - - A value of zero (the default) tells PHP_CodeSniffer not to replace tabs with spaces -- You can now change the default report format from "full" to something else - - Run: phpcs `--config-set report_format [format]` -- Improved performance by optimising the way the scope map is created during tokenizing -- Added new Squiz DisallowInlineIfSniff to disallow the usage of inline IF statements -- Fixed incorrect errors being thrown for nested switches in Squiz SwitchDeclarationSniff -- PEAR FunctionCommentSniff no longer complains about missing comments for @throws tags -- PEAR FunctionCommentSniff now throws error for missing exception class name for @throws tags -- PHP_CodeSniffer_File::isReference() now correctly returns for functions that return references -- Generic LineLengthSniff no longer warns about @version lines with CVS or SVN id tags -- Generic LineLengthSniff no longer warns about @license lines with long URLs -- Squiz FunctionCommentThrowTagSniff no longer complains about throwing variables -- Squiz ComparisonOperatorUsageSniff no longer throws incorrect errors for inline IF statements -- Squiz DisallowMultipleAssignmentsSniff no longer throws errors for assignments in inline IF statements - -### Fixed -- Fixed bug [#12455][pear-12455] : CodeSniffer treats content inside heredoc as PHP code -- Fixed bug [#12471][pear-12471] : Checkstyle report is broken -- Fixed bug [#12476][pear-12476] : PHP4 destructors are reported as error -- Fixed bug [#12513][pear-12513] : Checkstyle XML messages need to be utf8_encode()d - - Thanks to [Sebastian Bergmann][@sebastianbergmann] for the patch. -- Fixed bug [#12517][pear-12517] : getNewlineAfter() and dos files - -[pear-12455]: https://pear.php.net/bugs/bug.php?id=12455 -[pear-12471]: https://pear.php.net/bugs/bug.php?id=12471 -[pear-12476]: https://pear.php.net/bugs/bug.php?id=12476 -[pear-12513]: https://pear.php.net/bugs/bug.php?id=12513 -[pear-12517]: https://pear.php.net/bugs/bug.php?id=12517 - -## 1.0.0RC2 - 2007-11-14 - -### Changed -- Added a new Checkstyle report format - - Like the current XML format but modified to look like Checkstyle output - - Thanks to [Manuel Pichler][@manuelpichler] for helping get the format correct -- You can now hide warnings by default - - Run: phpcs --config-set show_warnings 0 - - If warnings are hidden by default, use the new -w command line argument to override -- Added new command line argument --config-delete to delete a config value and revert to the default -- Improved overall performance by optimising tokenizing and next/prev methods (feature request [#12421][pear-12421]) - - Thanks to [Christian Weiske][@cweiske] for the patch -- Added FunctionCallSignatureSniff to Squiz standard -- Added @subpackage support to file and class comment sniffs in PEAR standard (feature request [#12382][pear-12382]) - - Thanks to [Carsten Wiedmann][pear-cwiedmann] for the patch -- An error is now displayed if you use a PHP version less than 5.1.0 (feature request [#12380][pear-12380]) - - Thanks to [Carsten Wiedmann][pear-cwiedmann] for the patch -- phpcs now exits with status 2 if it receives invalid input (feature request [#12380][pear-12380]) - - This is distinct from status 1, which indicates errors or warnings were found -- Added new Squiz LanguageConstructSpacingSniff to throw errors for additional whitespace after echo etc. -- Removed Squiz ValidInterfaceNameSniff -- PEAR FunctionCommentSniff no longer complains about unknown tags - -### Fixed -- Fixed incorrect errors about missing function comments in PEAR FunctionCommentSniff -- Fixed incorrect function docblock detection in Squiz FunctionCommentSniff -- Fixed incorrect errors for list() in Squiz DisallowMultipleAssignmentsSniff -- Errors no longer thrown if control structure is followed by a CASE's BREAK in Squiz ControlStructureSpacingSniff -- Fixed bug [#12368][pear-12368] : Autoloader cannot be found due to include_path override - - Thanks to [Richard Quadling][pear-rquadling] for the patch -- Fixed bug [#12378][pear-12378] : equal sign alignments problem with while() - -[pear-12368]: https://pear.php.net/bugs/bug.php?id=12368 -[pear-12378]: https://pear.php.net/bugs/bug.php?id=12378 -[pear-12380]: https://pear.php.net/bugs/bug.php?id=12380 -[pear-12382]: https://pear.php.net/bugs/bug.php?id=12382 -[pear-12421]: https://pear.php.net/bugs/bug.php?id=12421 - -## 1.0.0RC1 - 2007-11-01 - -### Changed -- Main phpcs script can now be run from a CVS checkout without installing the package -- Added a new CSV report format - - Header row indicates what position each element is in - - Always use the header row to determine positions rather than assuming the format, as it may change -- XML and CSV report formats now contain information about which column the error occurred at - - Useful if you want to highlight the token that caused the error in a custom application -- Square bracket tokens now have bracket_opener and bracket_closer set -- Added new Squiz SemicolonSpacingSniff to throw errors if whitespace is found before a semicolon -- Added new Squiz ArrayBracketSpacingSniff to throw errors if whitespace is found around square brackets -- Added new Squiz ObjectOperatorSpacingSniff to throw errors if whitespace is found around object operators -- Added new Squiz DisallowMultipleAssignmentsSniff to throw errors if multiple assignments are on the same line -- Added new Squiz ScopeKeywordSpacingSniff to throw errors if there is not a single space after a scope modifier -- Added new Squiz ObjectInstantiationSniff to throw errors if new objects are not assigned to a variable -- Added new Squiz FunctionDuplicateArgumentSniff to throw errors if argument is declared multiple times in a function -- Added new Squiz FunctionOpeningBraceSpaceSniff to ensure there are no blank lines after a function open brace -- Added new Squiz CommentedOutCodeSniff to warn about comments that looks like they are commented out code blocks -- Added CyclomaticComplexitySniff to Squiz standard -- Added NestingLevelSniff to Squiz standard -- Squiz ForbiddenFunctionsSniff now recommends echo() instead of print() -- Squiz ValidLogicalOperatorsSniff now recommends ^ instead of xor -- Squiz SwitchDeclarationSniff now contains more checks - - A single space is required after the case keyword - - No space is allowed before the colon in a case or default statement - - All switch statements now require a default case - - Default case must contain a break statement - - Empty default case must contain a comment describing why the default is ignored - - Empty case statements are not allowed - - Case and default statements must not be followed by a blank line - - Break statements must be followed by a blank line or the closing brace - - There must be no blank line before a break statement -- Squiz standard is now using the PEAR IncludingFileSniff -- PEAR ClassCommentSniff no longer complains about unknown tags -- PEAR FileCommentSniff no longer complains about unknown tags -- PEAR FileCommentSniff now accepts multiple @copyright tags -- Squiz BlockCommentSniff now checks that comment starts with a capital letter -- Squiz InlineCommentSniff now has better checking to ensure comment starts with a capital letter -- Squiz ClassCommentSniff now checks that short and long comments start with a capital letter -- Squiz FunctionCommentSniff now checks that short, long and param comments start with a capital letter -- Squiz VariableCommentSniff now checks that short and long comments start with a capital letter - -### Fixed -- Fixed error with multi-token array indexes in Squiz ArrayDeclarationSniff -- Fixed error with checking shorthand IF statements without a semicolon in Squiz InlineIfDeclarationSniff -- Fixed error where constants used as default values in function declarations were seen as type hints -- Fixed bug [#12316][pear-12316] : PEAR is no longer the default standard -- Fixed bug [#12321][pear-12321] : wrong detection of missing function docblock - -[pear-12316]: https://pear.php.net/bugs/bug.php?id=12316 -[pear-12321]: https://pear.php.net/bugs/bug.php?id=12321 - -## 0.9.0 - 2007-09-24 - -### Changed -- Added a config system for setting config data across phpcs runs -- You can now change the default coding standard from PEAR to something else - - Run: phpcs `--config-set default_standard [standard]` -- Added new Zend coding standard to check code against the Zend Framework standards - - The complete standard is not yet implemented - - Specify --standard=Zend to use - - Thanks to Johann-Peter Hartmann for the contribution of some sniffs - - Thanks to Holger Kral for the Code Analyzer sniff - -## 0.8.0 - 2007-08-08 - -### Changed -- Added new XML report format; --report=xml (feature request [#11535][pear-11535]) - - Thanks to [Brett Bieber][@saltybeagle] for the patch -- Added new command line argument --ignore to specify a list of files to skip (feature request [#11556][pear-11556]) -- Added PHPCS and MySource coding standards into the core install -- Scope map no longer gets confused by curly braces that act as string offsets -- Removed `CodeSniffer/SniffException.php` as it is no longer used -- Unit tests can now be run directly from a CVS checkout -- Made private vars and functions protected in PHP_CodeSniffer class so this package can be overridden -- Added new Metrics category to Generic coding standard - - Contains Cyclomatic Complexity and Nesting Level sniffs - - Thanks to Johann-Peter Hartmann for the contribution -- Added new Generic DisallowTabIndentSniff to throw errors if tabs are used for indentation (feature request [#11738][pear-11738]) - - PEAR and Squiz standards use this new sniff to throw more specific indentation errors -- Generic MultipleStatementAlignmentSniff has new private var to set a padding size limit (feature request [#11555][pear-11555]) -- Generic MultipleStatementAlignmentSniff can now handle assignments that span multiple lines (feature request [#11561][pear-11561]) -- Generic LineLengthSniff now has a max line length after which errors are thrown instead of warnings - - BC BREAK: Override the protected member var absoluteLineLimit and set it to zero in custom LineLength sniffs - - Thanks to Johann-Peter Hartmann for the contribution -- Comment sniff errors about incorrect tag orders are now more descriptive (feature request [#11693][pear-11693]) - -### Fixed -- Fixed bug [#11473][pear-11473] : Invalid CamelCaps name when numbers used in names - -[pear-11473]: https://pear.php.net/bugs/bug.php?id=11473 -[pear-11535]: https://pear.php.net/bugs/bug.php?id=11535 -[pear-11555]: https://pear.php.net/bugs/bug.php?id=11555 -[pear-11556]: https://pear.php.net/bugs/bug.php?id=11556 -[pear-11561]: https://pear.php.net/bugs/bug.php?id=11561 -[pear-11693]: https://pear.php.net/bugs/bug.php?id=11693 -[pear-11738]: https://pear.php.net/bugs/bug.php?id=11738 - -## 0.7.0 - 2007-07-02 - -### Changed -- BC BREAK: EOL character is now auto-detected and used instead of hard-coded \n - - Pattern sniffs must now specify "EOL" instead of "\n" or "\r\n" to use auto-detection - - Please use $phpcsFile->eolChar to check for newlines instead of hard-coding "\n" or "\r\n" - - Comment parser classes now require you to pass $phpcsFile as an additional argument -- BC BREAK: Included and excluded sniffs now require `.php` extension - - Please update your coding standard classes and add `.php` to all sniff entries - - See `CodeSniffer/Standards/PEAR/PEARCodingStandard.php` for an example -- Fixed error where including a directory of sniffs in a coding standard class did not work -- Coding standard classes can now specify a list of sniffs to exclude as well as include (feature request [#11056][pear-11056]) -- Two uppercase characters can now be placed side-by-side in class names in Squiz ValidClassNameSniff -- SVN tags now allowed in PEAR file doc blocks (feature request [#11038][pear-11038]) - - Thanks to [Torsten Roehr][pear-troehr] for the patch -- Private methods in commenting sniffs and comment parser are now protected (feature request [#11087][pear-11087]) -- Added Generic LineEndingsSniff to check the EOL character of a file -- PEAR standard now only throws one error per file for incorrect line endings (eg. /r/n) -- Command line arg -v now shows number of registered sniffs -- Command line arg -vvv now shows list of registered sniffs -- Squiz ControlStructureSpacingSniff no longer throws errors if the control structure is at the end of the script -- Squiz FunctionCommentSniff now throws error for "return void" if function has return statement -- Squiz FunctionCommentSniff now throws error for functions that return void but specify something else -- Squiz ValidVariableNameSniff now allows multiple uppercase letters in a row -- Squiz ForEachLoopDeclarationSniff now throws error for AS keyword not being lowercase -- Squiz SwitchDeclarationSniff now throws errors for CASE/DEFAULT/BREAK keywords not being lowercase -- Squiz ArrayDeclarationSniff now handles multi-token array values when checking alignment -- Squiz standard now enforces a space after cast tokens -- Generic MultipleStatementAlignmentSniff no longer gets confused by assignments inside FOR conditions -- Generic MultipleStatementAlignmentSniff no longer gets confused by the use of list() -- Added Generic SpaceAfterCastSniff to ensure there is a single space after a cast token -- Added Generic NoSpaceAfterCastSniff to ensure there is no whitespace after a cast token -- Added PEAR ClassDeclarationSniff to ensure the opening brace of a class is on the line after the keyword -- Added Squiz ScopeClosingBraceSniff to ensure closing braces are aligned correctly -- Added Squiz EvalSniff to discourage the use of eval() -- Added Squiz LowercaseDeclarationSniff to ensure all declaration keywords are lowercase -- Added Squiz LowercaseClassKeywordsSniff to ensure all class declaration keywords are lowercase -- Added Squiz LowercaseFunctionKeywordsSniff to ensure all function declaration keywords are lowercase -- Added Squiz LowercasePHPFunctionsSniff to ensure all calls to inbuilt PHP functions are lowercase -- Added Squiz CastSpacingSniff to ensure cast statements don't contain whitespace -- Errors no longer thrown when checking 0 length files with verbosity on - -### Fixed -- Fixed bug [#11105][pear-11105] : getIncludedSniffs() not working anymore - - Thanks to [Blair Robertson][pear-adviva] for the patch -- Fixed bug [#11120][pear-11120] : Uninitialized string offset in `AbstractParser.php` on line 200 - -[pear-11038]: https://pear.php.net/bugs/bug.php?id=11038 -[pear-11056]: https://pear.php.net/bugs/bug.php?id=11056 -[pear-11087]: https://pear.php.net/bugs/bug.php?id=11087 -[pear-11105]: https://pear.php.net/bugs/bug.php?id=11105 -[pear-11120]: https://pear.php.net/bugs/bug.php?id=11120 - -## 0.6.0 - 2007-05-15 - -### Changed -- The number of errors and warnings found is now shown for each file while checking the file if verbosity is enabled -- Now using PHP_EOL instead of hard-coded \n so output looks good on Windows (feature request [#10761][pear-10761]) - - Thanks to [Carsten Wiedmann][pear-cwiedmann] for the patch. -- phpcs now exits with status 0 (no errors) or 1 (errors found) (feature request [#10348][pear-10348]) -- Added new -l command line argument to stop recursion into directories (feature request [#10979][pear-10979]) - -### Fixed -- Fixed variable name error causing incorrect error message in Squiz ValidVariableNameSniff -- Fixed bug [#10757][pear-10757] : Error in ControlSignatureSniff -- Fixed bugs [#10751][pear-10751], [#10777][pear-10777] : Sniffer class paths handled incorrectly in Windows - - Thanks to [Carsten Wiedmann][pear-cwiedmann] for the patch. -- Fixed bug [#10961][pear-10961] : Error "Last parameter comment requires a blank newline after it" thrown -- Fixed bug [#10983][pear-10983] : phpcs outputs notices when checking invalid PHP -- Fixed bug [#10980][pear-10980] : Incorrect warnings for equals sign - -[pear-10348]: https://pear.php.net/bugs/bug.php?id=10348 -[pear-10751]: https://pear.php.net/bugs/bug.php?id=10751 -[pear-10757]: https://pear.php.net/bugs/bug.php?id=10757 -[pear-10761]: https://pear.php.net/bugs/bug.php?id=10761 -[pear-10777]: https://pear.php.net/bugs/bug.php?id=10777 -[pear-10961]: https://pear.php.net/bugs/bug.php?id=10961 -[pear-10979]: https://pear.php.net/bugs/bug.php?id=10979 -[pear-10980]: https://pear.php.net/bugs/bug.php?id=10980 -[pear-10983]: https://pear.php.net/bugs/bug.php?id=10983 - -## 0.5.0 - 2007-04-17 - -### Changed -- BC BREAK: Coding standards now require a class to be added so PHP_CodeSniffer can get information from them - - Please read the end user docs for info about the new class required for all coding standards -- Coding standards can now include sniffs from other standards, or whole standards, without writing new sniff files -- PHP_CodeSniffer_File::isReference() now correctly returns for references in function declarations -- PHP_CodeSniffer_File::isReference() now returns false if you don't pass it a T_BITWISE_AND token -- PHP_CodeSniffer_File now stores the absolute path to the file so sniffs can check file locations correctly -- Fixed undefined index error in AbstractVariableSniff for variables inside an interface function definition -- Added MemberVarSpacingSniff to Squiz standard to enforce one-line spacing between member vars -- Add FunctionCommentThrowTagSniff to Squiz standard to check that @throws tags are correct - -### Fixed -- Fixed problems caused by references and type hints in Squiz FunctionDeclarationArgumentSpacingSniff -- Fixed problems with errors not being thrown for some misaligned @param comments in Squiz FunctionCommentSniff -- Fixed badly spaced comma error being thrown for "extends" class in Squiz ClassDeclarationSniff -- Errors no longer thrown for class method names in Generic ForbiddenFunctionsSniff -- Errors no longer thrown for type hints in front of references in Generic UpperCaseConstantNameSniff -- Errors no longer thrown for correctly indented buffered lines in Squiz ScopeIndexSniff -- Errors no longer thrown for user-defined functions named as forbidden functions in Generic ForbiddenFunctionsSniff -- Errors no longer thrown on __autoload functions in PEAR ValidFunctionNameSniff -- Errors now thrown for __autoload methods in PEAR ValidFunctionNameSniff -- Errors now thrown if constructors or destructors have @return tags in Squiz FunctionCommentSniff -- Errors now thrown if @throws tags don't start with a capital and end with a full stop in Squiz FunctionCommentSniff -- Errors now thrown for invalid @var tag values in Squiz VariableCommentSniff -- Errors now thrown for missing doc comment in Squiz VariableCommentSniff -- Errors now thrown for unspaced operators in FOR loop declarations in Squiz OperatorSpacingSniff -- Errors now thrown for using ob_get_clean/flush functions to end buffers in Squiz OutputBufferingIndentSniff -- Errors now thrown for all missing member variable comments in Squiz VariableCommentSniff - -## 0.4.0 - 2007-02-19 - -### Changed -- Standard name specified with --standard command line argument is no longer case sensitive -- Long error and warning messages are now wrapped to 80 characters in the full error report (thanks Endre Czirbesz) -- Shortened a lot of error and warning messages so they don't take up so much room -- Squiz FunctionCommentSniff now checks that param comments start with a capital letter and end with a full stop -- Squiz FunctionSpacingSniff now reports incorrect lines below function on closing brace, not function keyword -- Squiz FileCommentSniff now checks that there are no blank lines between the open PHP tag and the comment -- PHP_CodeSniffer_File::isReference() now returns correctly when checking refs on right side of => - -### Fixed -- Fixed incorrect error with switch closing brace in Squiz SwitchDeclarationSniff -- Fixed missing error when multiple statements are not aligned correctly with object operators -- Fixed incorrect errors for some PHP special variables in Squiz ValidVariableNameSniff -- Fixed incorrect errors for arrays that only contain other arrays in Squiz ArrayDeclarationSniff -- Fixed bug [#9844][pear-9844] : throw new Exception(\n accidentally reported as error but it ain't - -[pear-9844]: https://pear.php.net/bugs/bug.php?id=9844 - -## 0.3.0 - 2007-01-11 - -### Changed -- Updated package.xml to version 2 -- Specifying coding standard on command line is now optional, even if you have multiple standards installed - - PHP_CodeSniffer uses the PEAR coding standard by default if no standard is specified -- New command line option, --extensions, to specify a comma separated list of file extensions to check -- Converted all unit tests to PHPUnit 3 format -- Added new coding standard, Squiz, that can be used as an alternative to PEAR - - also contains more examples of sniffs - - some may be moved into the Generic coding standard if required -- Added MultipleStatementAlignmentSniff to Generic standard -- Added ScopeIndentSniff to Generic standard -- Added ForbiddenFunctionsSniff to Generic standard -- Added FileCommentSniff to PEAR standard -- Added ClassCommentSniff to PEAR standard -- Added FunctionCommentSniff to PEAR standard -- Change MultipleStatementSniff to MultipleStatementAlignmentSniff in PEAR standard -- Replaced Methods directory with Functions directory in Generic and PEAR standards - - also renamed some of the sniffs in those directories -- Updated file, class and method comments for all files - -### Fixed -- Fixed bug [#9274][pear-9274] : nested_parenthesis element not set for open and close parenthesis tokens -- Fixed bug [#9411][pear-9411] : too few pattern characters cause incorrect error report - -[pear-9411]: https://pear.php.net/bugs/bug.php?id=9411 - -## 0.2.1 - 2006-11-09 - -### Fixed -- Fixed bug [#9274][pear-9274] : nested_parenthesis element not set for open and close parenthesis tokens - -[pear-9274]: https://pear.php.net/bugs/bug.php?id=9274 - -## 0.2.0 - 2006-10-13 - -### Changed -- Added a generic standards package that will contain generic sniffs to be used in specific coding standards - - thanks to Frederic Poeydomenge for the idea -- Changed PEAR standard to use generic sniffs where available -- Added LowerCaseConstantSniff to Generic standard -- Added UpperCaseConstantSniff to Generic standard -- Added DisallowShortOpenTagSniff to Generic standard -- Added LineLengthSniff to Generic standard -- Added UpperCaseConstantNameSniff to Generic standard -- Added OpeningMethodBraceBsdAllmanSniff to Generic standard (contrib by Frederic Poeydomenge) -- Added OpeningMethodBraceKernighanRitchieSniff to Generic standard (contrib by Frederic Poeydomenge) -- Added framework for core PHP_CodeSniffer unit tests -- Added unit test for PHP_CodeSniffer:isCamelCaps method -- ScopeClosingBraceSniff now checks indentation of BREAK statements -- Added new command line arg (-vv) to show developer debug output - -### Fixed -- Fixed some coding standard errors -- Fixed bug [#8834][pear-8834] : Massive memory consumption -- Fixed bug [#8836][pear-8836] : path case issues in package.xml -- Fixed bug [#8843][pear-8843] : confusion on nested switch() -- Fixed bug [#8841][pear-8841] : comments taken as whitespace -- Fixed bug [#8884][pear-8884] : another problem with nested switch() statements - -[pear-8834]: https://pear.php.net/bugs/bug.php?id=8834 -[pear-8836]: https://pear.php.net/bugs/bug.php?id=8836 -[pear-8841]: https://pear.php.net/bugs/bug.php?id=8841 -[pear-8843]: https://pear.php.net/bugs/bug.php?id=8843 -[pear-8884]: https://pear.php.net/bugs/bug.php?id=8884 - -## 0.1.1 - 2006-09-25 - -### Changed -- Added unit tests for all PEAR sniffs -- Exception class now extends from PEAR_Exception - -### Fixed -- Fixed summary report so files without errors but with warnings are not shown when warnings are hidden - -## 0.1.0 - 2006-09-19 - -### Changed -- Reorganised package contents to conform to PEAR standards -- Changed version numbering to conform to PEAR standards -- Removed duplicate `require_once()` of `Exception.php` from `CodeSniffer.php` - -## 0.0.5 - 2006-09-18 - -### Fixed -- Fixed `.bat` file for situation where `php.ini` cannot be found so `include_path` is not set - -## 0.0.4 - 2006-08-28 - -### Changed -- Added .bat file for easier running of PHP_CodeSniffer on Windows -- Sniff that checks method names now works for PHP4 style code where there is no scope keyword -- Sniff that checks method names now works for PHP4 style constructors -- Sniff that checks method names no longer incorrectly reports error with magic methods -- Sniff that checks method names now reports errors with non-magic methods prefixed with __ -- Sniff that checks for constant names no longer incorrectly reports errors with heredoc strings -- Sniff that checks for constant names no longer incorrectly reports errors with created objects -- Sniff that checks indentation no longer incorrectly reports errors with heredoc strings -- Sniff that checks indentation now correctly reports errors with improperly indented multi-line strings -- Sniff that checks function declarations now checks for spaces before and after an equals sign for default values -- Sniff that checks function declarations no longer incorrectly reports errors with multi-line declarations -- Sniff that checks included code no longer incorrectly reports errors when return value is used conditionally -- Sniff that checks opening brace of function no longer incorrectly reports errors with multi-line declarations -- Sniff that checks spacing after commas in function calls no longer reports too many errors for some code -- Sniff that checks control structure declarations now gives more descriptive error message - -## 0.0.3 - 2006-08-22 - -### Changed -- Added sniff to check for invalid class and interface names -- Added sniff to check for invalid function and method names -- Added sniff to warn if line is greater than 85 characters -- Added sniff to check that function calls are in the correct format -- Added command line arg to print current version (--version) - -### Fixed -- Fixed error where comments were not allowed on the same line as a control structure declaration - -## 0.0.2 - 2006-07-25 - -### Changed -- Removed the including of checked files to stop errors caused by parsing them -- Removed the use of reflection so checked files do not have to be included -- Memory usage has been greatly reduced -- Much faster tokenizing and checking times -- Reworked the PEAR coding standard sniffs (much faster now) -- Fix some bugs with the PEAR scope indentation standard -- Better checking for installed coding standards -- Can now accept multiple files and dirs on the command line -- Added an option to list installed coding standards -- Added an option to print a summary report (number of errors and warnings shown for each file) -- Added an option to hide warnings from reports -- Added an option to print verbose output (so you know what is going on) -- Reordered command line args to put switches first (although order is not enforced) -- Switches can now be specified together (e.g. `phpcs -nv`) as well as separately (`phpcs -n -v`) - -## 0.0.1 - 2006-07-19 - -### Added -- Initial preview release - - - -[Unreleased]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/master...HEAD -[3.11.2]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.11.1...3.11.2 -[3.11.1]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.11.0...3.11.1 -[3.11.0]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.10.3...3.11.0 -[3.10.3]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.10.2...3.10.3 -[3.10.2]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.10.1...3.10.2 -[3.10.1]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.10.0...3.10.1 -[3.10.0]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.9.2...3.10.0 -[3.9.2]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.9.1...3.9.2 -[3.9.1]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.9.0...3.9.1 -[3.9.0]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.8.1...3.9.0 -[3.8.1]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.8.0...3.8.1 -[3.8.0]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.7.2...3.8.0 -[3.7.2]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.7.1...3.7.2 -[3.7.1]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.7.0...3.7.1 -[3.7.0]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.6.2...3.7.0 -[3.6.2]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.6.1...3.6.2 -[3.6.1]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.6.0...3.6.1 -[3.6.0]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.5.8...3.6.0 -[3.5.8]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.5.7...3.5.8 -[3.5.7]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.5.6...3.5.7 -[3.5.6]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.5.5...3.5.6 -[3.5.5]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.5.4...3.5.5 -[3.5.4]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.5.3...3.5.4 -[3.5.3]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.5.2...3.5.3 -[3.5.2]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.5.1...3.5.2 -[3.5.1]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.5.0...3.5.1 -[3.5.0]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.4.2...3.5.0 -[3.4.2]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.4.1...3.4.2 -[3.4.1]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.4.0...3.4.1 -[3.4.0]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.3.2...3.4.0 -[3.3.2]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.3.1...3.3.2 -[3.3.1]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.3.0...3.3.1 -[3.3.0]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.2.3...3.3.0 -[3.2.3]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.2.2...3.2.3 -[3.2.2]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.2.1...3.2.2 -[3.2.1]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.2.0...3.2.1 -[3.2.0]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.1.1...3.2.0 -[3.1.1]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.1.0...3.1.1 -[3.1.0]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.0.2...3.1.0 -[3.0.2]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.0.1...3.0.2 -[3.0.1]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.0.0...3.0.1 -[3.0.0]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.0.0RC4...3.0.0 -[3.0.0RC4]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.0.0RC3...3.0.0RC4 -[3.0.0RC3]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.0.0RC2...3.0.0RC3 -[3.0.0RC2]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.0.0RC1...3.0.0RC2 -[3.0.0RC1]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.0.0a1...3.0.0RC1 -[3.0.0a1]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/2.9.2...3.0.0a1 -[2.9.2]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/2.9.1...2.9.2 -[2.9.1]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/2.9.0...2.9.1 -[2.9.0]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/2.8.1...2.9.0 -[2.8.1]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/2.8.0...2.8.1 -[2.8.0]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/2.7.1...2.8.0 -[2.7.1]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/2.7.0...2.7.1 -[2.7.0]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/2.6.2...2.7.0 -[2.6.2]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/2.6.1...2.6.2 -[2.6.1]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/2.6.0...2.6.1 -[2.6.0]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/2.5.1...2.6.0 -[2.5.1]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/2.5.0...2.5.1 -[2.5.0]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/2.4.0...2.5.0 -[2.4.0]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/2.3.4...2.4.0 -[2.3.4]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/2.3.3...2.3.4 -[2.3.3]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/2.3.2...2.3.3 -[2.3.2]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/2.3.1...2.3.2 -[2.3.1]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/2.3.0...2.3.1 -[2.3.0]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/2.2.0...2.3.0 -[2.2.0]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/2.1.0...2.2.0 -[2.1.0]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/2.0.0...2.1.0 -[2.0.0]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/2.0.0RC4...2.0.0 -[2.0.0RC4]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/2.0.0RC3...2.0.0RC4 -[2.0.0RC3]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/2.0.0RC2...2.0.0RC3 -[2.0.0RC2]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/2.0.0RC1...2.0.0RC2 -[2.0.0RC1]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/2.0.0a2...2.0.0RC1 -[2.0.0a2]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/2.0.0a1...2.0.0a2 -[2.0.0a1]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/1.5.6...2.0.0a1 -[1.5.6]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/1.5.5...1.5.6 -[1.5.5]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/1.5.4...1.5.5 -[1.5.4]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/1.5.3...1.5.4 -[1.5.3]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/1.5.2...1.5.3 -[1.5.2]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/1.5.1...1.5.2 -[1.5.1]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/1.5.0...1.5.1 -[1.5.0]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/1.5.0RC4...1.5.0 -[1.5.0RC4]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/1.5.0RC3...1.5.0RC4 -[1.5.0RC3]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/1.5.0RC2...1.5.0RC3 -[1.5.0RC2]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/1.5.0RC1...1.5.0RC2 -[1.5.0RC1]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/1.4.8...1.5.0RC1 -[1.4.8]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/1.4.7...1.4.8 -[1.4.7]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/1.4.6...1.4.7 -[1.4.6]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/1.4.5...1.4.6 -[1.4.5]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/1.4.4...1.4.5 -[1.4.4]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/1.4.3...1.4.4 -[1.4.3]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/1.4.2...1.4.3 -[1.4.2]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/1.4.1...1.4.2 -[1.4.1]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/1.4.0...1.4.1 -[1.4.0]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/1.3.6...1.4.0 -[1.3.6]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/1.3.5...1.3.6 -[1.3.5]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/1.3.4...1.3.5 -[1.3.4]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/1.3.3...1.3.4 -[1.3.3]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/1.3.2...1.3.3 -[1.3.2]: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/1.3.1...1.3.2 - - - -[@2shediac]: https://github.com/2shediac -[@ablyler]: https://github.com/ablyler -[@aboks]: https://github.com/aboks -[@abulford]: https://github.com/abulford -[@afilina]: https://github.com/afilina -[@aik099]: https://github.com/aik099 -[@akarmazyn]: https://github.com/akarmazyn -[@akkie]: https://github.com/akkie -[@alcohol]: https://github.com/alcohol -[@alekitto]: https://github.com/alekitto -[@AlexHowansky]: https://github.com/AlexHowansky -[@anbuc]: https://github.com/anbuc -[@andrei-propertyguru]: https://github.com/andrei-propertyguru -[@AndrewDawes]: https://github.com/AndrewDawes -[@andygrunwald]: https://github.com/andygrunwald -[@andypost]: https://github.com/andypost -[@annechko]: https://github.com/annechko -[@anomiex]: https://github.com/anomiex -[@arnested]: https://github.com/arnested -[@asnyder]: https://github.com/asnyder -[@Astinus-Eberhard]: https://github.com/Astinus-Eberhard -[@axlon]: https://github.com/axlon -[@bayleedev]: https://github.com/bayleedev -[@becoded]: https://github.com/becoded -[@Benjamin-Loison]: https://github.com/Benjamin-Loison -[@benmatselby]: https://github.com/benmatselby -[@biinari]: https://github.com/biinari -[@Billz95]: https://github.com/Billz95 -[@biozshock]: https://github.com/biozshock -[@bkdotcom]: https://github.com/bkdotcom -[@bladeofsteel]: https://github.com/bladeofsteel -[@blerou]: https://github.com/blerou -[@blue32a]: https://github.com/blue32a -[@bondas83]: https://github.com/bondas83 -[@boonkerz]: https://github.com/boonkerz -[@BRMatt]: https://github.com/BRMatt -[@CandySunPlus]: https://github.com/CandySunPlus -[@ceeram]: https://github.com/ceeram -[@cixtor]: https://github.com/cixtor -[@claylo]: https://github.com/claylo -[@codebymikey]: https://github.com/codebymikey -[@costdev]: https://github.com/costdev -[@covex-nn]: https://github.com/covex-nn -[@cweiske]: https://github.com/cweiske -[@Daimona]: https://github.com/Daimona -[@danez]: https://github.com/danez -[@DannyvdSluijs]: https://github.com/DannyvdSluijs -[@das-peter]: https://github.com/das-peter -[@datengraben]: https://github.com/datengraben -[@david-binda]: https://github.com/david-binda -[@Decave]: https://github.com/Decave -[@dereuromark]: https://github.com/dereuromark -[@derrabus]: https://github.com/derrabus -[@deviantintegral]: https://github.com/deviantintegral -[@dhensby]: https://github.com/dhensby -[@dingo-d]: https://github.com/dingo-d -[@dominics]: https://github.com/dominics -[@donatj]: https://github.com/donatj -[@dryabkov]: https://github.com/dryabkov -[@dschniepp]: https://github.com/dschniepp -[@duncan3dc]: https://github.com/duncan3dc -[@edorian]: https://github.com/edorian -[@elazar]: https://github.com/elazar -[@ElvenSpellmaker]: https://github.com/ElvenSpellmaker -[@emil-nasso]: https://github.com/emil-nasso -[@enl]: https://github.com/enl -[@erikwiffin]: https://github.com/erikwiffin -[@eser]: https://github.com/eser -[@exussum12]: https://github.com/exussum12 -[@fabacino]: https://github.com/fabacino -[@fabre-thibaud]: https://github.com/fabre-thibaud -[@fcool]: https://github.com/fcool -[@filips123]: https://github.com/filips123 -[@Fischer-Bjoern]: https://github.com/Fischer-Bjoern -[@fonsecas72]: https://github.com/fonsecas72 -[@fredden]: https://github.com/fredden -[@GaryJones]: https://github.com/GaryJones -[@ghostal]: https://github.com/ghostal -[@ghunti]: https://github.com/ghunti -[@gmponos]: https://github.com/gmponos -[@gnutix]: https://github.com/gnutix -[@goatherd]: https://github.com/goatherd -[@grongor]: https://github.com/grongor -[@grzr]: https://github.com/grzr -[@gwharton]: https://github.com/gwharton -[@hashar]: https://github.com/hashar -[@helgi]: https://github.com/helgi -[@hernst42]: https://github.com/hernst42 -[@iammattcoleman]: https://github.com/iammattcoleman -[@ihabunek]: https://github.com/ihabunek -[@illusori]: https://github.com/illusori -[@index0h]: https://github.com/index0h -[@ivuorinen]: https://github.com/ivuorinen -[@jasonmccreary]: https://github.com/jasonmccreary -[@javer]: https://github.com/javer -[@jaymcp]: https://github.com/jaymcp -[@JDGrimes]: https://github.com/JDGrimes -[@jedgell]: https://github.com/jedgell -[@jeffslofish]: https://github.com/jeffslofish -[@jmarcil]: https://github.com/jmarcil -[@jnrbsn]: https://github.com/jnrbsn -[@joachim-n]: https://github.com/joachim-n -[@joelposti]: https://github.com/joelposti -[@johanderuijter]: https://github.com/johanderuijter -[@johnmaguire]: https://github.com/johnmaguire -[@johnpbloch]: https://github.com/johnpbloch -[@JorisDebonnet]: https://github.com/JorisDebonnet -[@josephzidell]: https://github.com/josephzidell -[@joshdavis11]: https://github.com/joshdavis11 -[@jpoliveira08]: https://github.com/jpoliveira08 -[@jpuck]: https://github.com/jpuck -[@jrfnl]: https://github.com/jrfnl -[@kdebisschop]: https://github.com/kdebisschop -[@kenguest]: https://github.com/kenguest -[@klausi]: https://github.com/klausi -[@Konafets]: https://github.com/Konafets -[@kristofser]: https://github.com/kristofser -[@ksimka]: https://github.com/ksimka -[@ktomk]: https://github.com/ktomk -[@kukulich]: https://github.com/kukulich -[@legoktm]: https://github.com/legoktm -[@lmanzke]: https://github.com/lmanzke -[@localheinz]: https://github.com/localheinz -[@lucc]: https://github.com/lucc -[@MacDada]: https://github.com/MacDada -[@Majkl578]: https://github.com/Majkl578 -[@manuelpichler]: https://github.com/manuelpichler -[@marcospassos]: https://github.com/marcospassos -[@MarkBaker]: https://github.com/MarkBaker -[@MarkMaldaba]: https://github.com/MarkMaldaba -[@martinssipenko]: https://github.com/martinssipenko -[@marvasDE]: https://github.com/marvasDE -[@maryo]: https://github.com/maryo -[@MasterOdin]: https://github.com/MasterOdin -[@mathroc]: https://github.com/mathroc -[@MatmaRex]: https://github.com/MatmaRex -[@maxgalbu]: https://github.com/maxgalbu -[@mcuelenaere]: https://github.com/mcuelenaere -[@mhujer]: https://github.com/mhujer -[@michaelbutler]: https://github.com/michaelbutler -[@michalbundyra]: https://github.com/michalbundyra -[@Morerice]: https://github.com/Morerice -[@mbomb007]: https://github.com/mbomb007 -[@morozov]: https://github.com/morozov -[@mrkrstphr]: https://github.com/mrkrstphr -[@mythril]: https://github.com/mythril -[@Naelyth]: https://github.com/Naelyth -[@ndm2]: https://github.com/ndm2 -[@nicholascus]: https://github.com/nicholascus -[@NickDickinsonWilde]: https://github.com/NickDickinsonWilde -[@nkovacs]: https://github.com/nkovacs -[@nubs]: https://github.com/nubs -[@o5]: https://github.com/o5 -[@ofbeaton]: https://github.com/ofbeaton -[@olemartinorg]: https://github.com/olemartinorg -[@ondrejmirtes]: https://github.com/ondrejmirtes -[@orx0r]: https://github.com/orx0r -[@ostrolucky]: https://github.com/ostrolucky -[@pfrenssen]: https://github.com/pfrenssen -[@phil-davis]: https://github.com/phil-davis -[@photodude]: https://github.com/photodude -[@przemekhernik]: https://github.com/przemekhernik -[@r3nat]: https://github.com/r3nat -[@raul338]: https://github.com/raul338 -[@realmfoo]: https://github.com/realmfoo -[@remicollet]: https://github.com/remicollet -[@renaatdemuynck]: https://github.com/renaatdemuynck -[@renan]: https://github.com/renan -[@rhorber]: https://github.com/rhorber -[@rmccue]: https://github.com/rmccue -[@robocoder]: https://github.com/robocoder -[@rodrigoprimo]: https://github.com/rodrigoprimo -[@rogeriopradoj]: https://github.com/rogeriopradoj -[@rovangju]: https://github.com/rovangju -[@rvanvelzen]: https://github.com/rvanvelzen -[@saltybeagle]: https://github.com/saltybeagle -[@samlev]: https://github.com/samlev -[@scato]: https://github.com/scato -[@schlessera]: https://github.com/schlessera -[@schnittstabil]: https://github.com/schnittstabil -[@sebastianbergmann]: https://github.com/sebastianbergmann -[@sertand]: https://github.com/sertand -[@shanethehat]: https://github.com/shanethehat -[@shivammathur]: https://github.com/shivammathur -[@simonsan]: https://github.com/simonsan -[@sjlangley]: https://github.com/sjlangley -[@sserbin]: https://github.com/sserbin -[@stefanlenselink]: https://github.com/stefanlenselink -[@SteveTalbot]: https://github.com/SteveTalbot -[@storeman]: https://github.com/storeman -[@stronk7]: https://github.com/stronk7 -[@svycka]: https://github.com/svycka -[@syranez]: https://github.com/syranez -[@tasuki]: https://github.com/tasuki -[@tim-bezhashvyly]: https://github.com/tim-bezhashvyly -[@TomHAnderson]: https://github.com/TomHAnderson -[@thewilkybarkid]: https://github.com/thewilkybarkid -[@thiemowmde]: https://github.com/thiemowmde -[@thomasjfox]: https://github.com/thomasjfox -[@till]: https://github.com/till -[@timoschinkel]: https://github.com/timoschinkel -[@TimWolla]: https://github.com/TimWolla -[@uniquexor]: https://github.com/uniquexor -[@valorin]: https://github.com/valorin -[@VasekPurchart]: https://github.com/VasekPurchart -[@VincentLanglet]: https://github.com/VincentLanglet -[@waltertamboer]: https://github.com/waltertamboer -[@westonruter]: https://github.com/westonruter -[@willemstuursma]: https://github.com/willemstuursma -[@wimg]: https://github.com/wimg -[@wvega]: https://github.com/wvega -[@xalopp]: https://github.com/xalopp -[@xjm]: https://github.com/xjm -[@xt99]: https://github.com/xt99 -[@yesmeck]: https://github.com/yesmeck -[@zBart]: https://github.com/zBart -[pear-adviva]: https://pear.php.net/user/adviva -[pear-bakert]: https://pear.php.net/user/bakert -[pear-bjorn]: https://pear.php.net/user/bjorn -[pear-boxgav]: https://pear.php.net/user/boxgav -[pear-burci]: https://pear.php.net/user/burci -[pear-conf]: https://pear.php.net/user/conf -[pear-cwiedmann]: https://pear.php.net/user/cwiedmann -[pear-dollyaswin]: https://pear.php.net/user/dollyaswin -[pear-dvino]: https://pear.php.net/user/dvino -[pear-et3w503]: https://pear.php.net/user/et3w503 -[pear-gemineye]: https://pear.php.net/user/gemineye -[pear-kwinahradsky]: https://pear.php.net/user/kwinahradsky -[pear-ljmaskey]: https://pear.php.net/user/ljmaskey -[pear-mccammos]: https://pear.php.net/user/mccammos -[pear-pete]: https://pear.php.net/user/pete -[pear-recurser]: https://pear.php.net/user/recurser -[pear-renoiv]: https://pear.php.net/user/renoiv -[pear-rquadling]: https://pear.php.net/user/rquadling -[pear-ryba]: https://pear.php.net/user/ryba -[pear-thezero]: https://pear.php.net/user/thezero -[pear-thing2b]: https://pear.php.net/user/thing2b -[pear-tomdesp]: https://pear.php.net/user/tomdesp -[pear-troehr]: https://pear.php.net/user/troehr -[pear-weirdan]: https://pear.php.net/user/weirdan -[pear-wloche]: https://pear.php.net/user/wloche -[pear-woellchen]: https://pear.php.net/user/woellchen -[pear-youngian]: https://pear.php.net/user/youngian - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/README.md b/docker/streamline-src/vendor/squizlabs/php_codesniffer/README.md deleted file mode 100644 index 9a500edd..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/README.md +++ /dev/null @@ -1,153 +0,0 @@ -# PHP_CodeSniffer - - - -> [!NOTE] -> This package is the official continuation of the now abandoned [PHP_CodeSniffer package which was created by Squizlabs](https://github.com/squizlabs/PHP_CodeSniffer). - -## About - -PHP_CodeSniffer is a set of two PHP scripts; the main `phpcs` script that tokenizes PHP, JavaScript and CSS files to detect violations of a defined coding standard, and a second `phpcbf` script to automatically correct coding standard violations. PHP_CodeSniffer is an essential development tool that ensures your code remains clean and consistent. - - -## Requirements - -PHP_CodeSniffer requires PHP version 5.4.0 or greater, although individual sniffs may have additional requirements such as external applications and scripts. See the [Configuration Options manual page](https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki/Configuration-Options) for a list of these requirements. - -If you're using PHP_CodeSniffer as part of a team, or you're running it on a [CI](https://en.wikipedia.org/wiki/Continuous_integration) server, you may want to configure your project's settings [using a configuration file](https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki/Advanced-Usage#using-a-default-configuration-file). - - -## Installation - -The easiest way to get started with PHP_CodeSniffer is to download the Phar files for each of the commands: -```bash -# Download using curl -curl -OL https://phars.phpcodesniffer.com/phpcs.phar -curl -OL https://phars.phpcodesniffer.com/phpcbf.phar - -# Or download using wget -wget https://phars.phpcodesniffer.com/phpcs.phar -wget https://phars.phpcodesniffer.com/phpcbf.phar - -# Then test the downloaded PHARs -php phpcs.phar -h -php phpcbf.phar -h -``` - -These Phars are signed with the official Release key for PHPCS with the -fingerprint `689D AD77 8FF0 8760 E046 228B A978 2203 05CD 5C32`. - -As of PHP_CodeSniffer 3.10.3, the provenance of PHAR files associated with a release can be verified via [GitHub Artifact Attestations](https://docs.github.com/en/actions/security-for-github-actions/using-artifact-attestations/using-artifact-attestations-to-establish-provenance-for-builds) using the [GitHub CLI tool](https://cli.github.com/) with the following command: `gh attestation verify [phpcs|phpcbf].phar -o PHPCSStandards`. - -### Composer -If you use Composer, you can install PHP_CodeSniffer system-wide with the following command: -```bash -composer global require "squizlabs/php_codesniffer=*" -``` -Make sure you have the composer bin dir in your PATH. The default value is `~/.composer/vendor/bin/`, but you can check the value that you need to use by running `composer global config bin-dir --absolute`. - -Or alternatively, include a dependency for `squizlabs/php_codesniffer` in your `composer.json` file. For example: - -```json -{ - "require-dev": { - "squizlabs/php_codesniffer": "^3.0" - } -} -``` - -You will then be able to run PHP_CodeSniffer from the vendor bin directory: -```bash -./vendor/bin/phpcs -h -./vendor/bin/phpcbf -h -``` - -### Phive -If you use Phive, you can install PHP_CodeSniffer as a project tool using the following commands: -```bash -phive install --trust-gpg-keys 689DAD778FF08760E046228BA978220305CD5C32 phpcs -phive install --trust-gpg-keys 689DAD778FF08760E046228BA978220305CD5C32 phpcbf -``` -You will then be able to run PHP_CodeSniffer from the `tools` directory: -```bash -./tools/phpcs -h -./tools/phpcbf -h -``` - -### Git Clone -You can also download the PHP_CodeSniffer source and run the `phpcs` and `phpcbf` commands directly from the Git clone: -```bash -git clone https://github.com/PHPCSStandards/PHP_CodeSniffer.git -cd PHP_CodeSniffer -php bin/phpcs -h -php bin/phpcbf -h -``` - -## Getting Started - -The default coding standard used by PHP_CodeSniffer is the PEAR coding standard. To check a file against the PEAR coding standard, simply specify the file's location: -```bash -phpcs /path/to/code/myfile.php -``` -Or if you wish to check an entire directory you can specify the directory location instead of a file. -```bash -phpcs /path/to/code-directory -``` -If you wish to check your code against the PSR-12 coding standard, use the `--standard` command line argument: -```bash -phpcs --standard=PSR12 /path/to/code-directory -``` - -If PHP_CodeSniffer finds any coding standard errors, a report will be shown after running the command. - -Full usage information and example reports are available on the [usage page](https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki/Usage). - -## Documentation - -The documentation for PHP_CodeSniffer is available on the [GitHub wiki](https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki). - -## Issues - -Bug reports and feature requests can be submitted on the [GitHub Issue Tracker](https://github.com/PHPCSStandards/PHP_CodeSniffer/issues). - -## Contributing - -See [CONTRIBUTING.md](.github/CONTRIBUTING.md) for information. - -## Versioning - -PHP_CodeSniffer uses a `MAJOR.MINOR.PATCH` version number format. - -The `MAJOR` version is incremented when: -- backwards-incompatible changes are made to how the `phpcs` or `phpcbf` commands are used, or -- backwards-incompatible changes are made to the `ruleset.xml` format, or -- backwards-incompatible changes are made to the API used by sniff developers, or -- custom PHP_CodeSniffer token types are removed, or -- existing sniffs are removed from PHP_CodeSniffer entirely - -The `MINOR` version is incremented when: -- new backwards-compatible features are added to the `phpcs` and `phpcbf` commands, or -- backwards-compatible changes are made to the `ruleset.xml` format, or -- backwards-compatible changes are made to the API used by sniff developers, or -- new sniffs are added to an included standard, or -- existing sniffs are removed from an included standard - -> NOTE: Backwards-compatible changes to the API used by sniff developers will allow an existing sniff to continue running without producing fatal errors but may not result in the sniff reporting the same errors as it did previously without changes being required. - -The `PATCH` version is incremented when: -- backwards-compatible bug fixes are made - -> NOTE: As PHP_CodeSniffer exists to report and fix issues, most bugs are the result of coding standard errors being incorrectly reported or coding standard errors not being reported when they should be. This means that the messages produced by PHP_CodeSniffer, and the fixes it makes, are likely to be different between PATCH versions. diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/autoload.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/autoload.php deleted file mode 100644 index 6221401e..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/autoload.php +++ /dev/null @@ -1,345 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer; - -use Composer\Autoload\ClassLoader; -use Exception; - -if (class_exists('PHP_CodeSniffer\Autoload', false) === false) { - class Autoload - { - - /** - * The composer autoloader. - * - * @var \Composer\Autoload\ClassLoader - */ - private static $composerAutoloader = null; - - /** - * A mapping of file names to class names. - * - * @var array - */ - private static $loadedClasses = []; - - /** - * A mapping of class names to file names. - * - * @var array - */ - private static $loadedFiles = []; - - /** - * A list of additional directories to search during autoloading. - * - * This is typically a list of coding standard directories. - * - * @var string[] - */ - private static $searchPaths = []; - - - /** - * Loads a class. - * - * This method only loads classes that exist in the PHP_CodeSniffer namespace. - * All other classes are ignored and loaded by subsequent autoloaders. - * - * @param string $class The name of the class to load. - * - * @return bool - */ - public static function load($class) - { - // Include the composer autoloader if there is one, but re-register it - // so this autoloader runs before the composer one as we need to include - // all files so we can figure out what the class/interface/trait name is. - if (self::$composerAutoloader === null) { - // Make sure we don't try to load any of Composer's classes - // while the autoloader is being setup. - if (strpos($class, 'Composer\\') === 0) { - return false; - } - - if (strpos(__DIR__, 'phar://') !== 0 - && @file_exists(__DIR__.'/../../autoload.php') === true - ) { - self::$composerAutoloader = include __DIR__.'/../../autoload.php'; - if (self::$composerAutoloader instanceof ClassLoader) { - self::$composerAutoloader->unregister(); - self::$composerAutoloader->register(); - } else { - // Something went wrong, so keep going without the autoloader - // although namespaced sniffs might error. - self::$composerAutoloader = false; - } - } else { - self::$composerAutoloader = false; - } - }//end if - - $ds = DIRECTORY_SEPARATOR; - $path = false; - - if (substr($class, 0, 16) === 'PHP_CodeSniffer\\') { - if (substr($class, 0, 22) === 'PHP_CodeSniffer\Tests\\') { - $isInstalled = !is_dir(__DIR__.$ds.'tests'); - if ($isInstalled === false) { - $path = __DIR__.$ds.'tests'; - } else { - $path = '@test_dir@'.$ds.'PHP_CodeSniffer'.$ds.'CodeSniffer'; - } - - $path .= $ds.substr(str_replace('\\', $ds, $class), 22).'.php'; - } else { - $path = __DIR__.$ds.'src'.$ds.substr(str_replace('\\', $ds, $class), 16).'.php'; - } - } - - // See if the composer autoloader knows where the class is. - if ($path === false && self::$composerAutoloader !== false) { - $path = self::$composerAutoloader->findFile($class); - } - - // See if the class is inside one of our alternate search paths. - if ($path === false) { - foreach (self::$searchPaths as $searchPath => $nsPrefix) { - $className = $class; - if ($nsPrefix !== '' && substr($class, 0, strlen($nsPrefix)) === $nsPrefix) { - $className = substr($class, (strlen($nsPrefix) + 1)); - } - - $path = $searchPath.$ds.str_replace('\\', $ds, $className).'.php'; - if (is_file($path) === true) { - break; - } - - $path = false; - } - } - - if ($path !== false && is_file($path) === true) { - self::loadFile($path); - return true; - } - - return false; - - }//end load() - - - /** - * Includes a file and tracks what class or interface was loaded as a result. - * - * @param string $path The path of the file to load. - * - * @return string The fully qualified name of the class in the loaded file. - */ - public static function loadFile($path) - { - if (strpos(__DIR__, 'phar://') !== 0) { - $path = realpath($path); - if ($path === false) { - return false; - } - } - - if (isset(self::$loadedClasses[$path]) === true) { - return self::$loadedClasses[$path]; - } - - $classesBeforeLoad = [ - 'classes' => get_declared_classes(), - 'interfaces' => get_declared_interfaces(), - 'traits' => get_declared_traits(), - ]; - - include $path; - - $classesAfterLoad = [ - 'classes' => get_declared_classes(), - 'interfaces' => get_declared_interfaces(), - 'traits' => get_declared_traits(), - ]; - - $className = self::determineLoadedClass($classesBeforeLoad, $classesAfterLoad); - - self::$loadedClasses[$path] = $className; - self::$loadedFiles[$className] = $path; - return self::$loadedClasses[$path]; - - }//end loadFile() - - - /** - * Determine which class was loaded based on the before and after lists of loaded classes. - * - * @param array $classesBeforeLoad The classes/interfaces/traits before the file was included. - * @param array $classesAfterLoad The classes/interfaces/traits after the file was included. - * - * @return string The fully qualified name of the class in the loaded file. - */ - public static function determineLoadedClass($classesBeforeLoad, $classesAfterLoad) - { - $className = null; - - $newClasses = array_diff($classesAfterLoad['classes'], $classesBeforeLoad['classes']); - if (PHP_VERSION_ID < 70400) { - $newClasses = array_reverse($newClasses); - } - - // Since PHP 7.4 get_declared_classes() does not guarantee any order, making - // it impossible to use order to determine which is the parent and which is the child. - // Let's reduce the list of candidates by removing all the classes known to be "parents". - // That way, at the end, only the "main" class just included will remain. - $newClasses = array_reduce( - $newClasses, - function ($remaining, $current) { - return array_diff($remaining, class_parents($current)); - }, - $newClasses - ); - - foreach ($newClasses as $name) { - if (isset(self::$loadedFiles[$name]) === false) { - $className = $name; - break; - } - } - - if ($className === null) { - $newClasses = array_reverse(array_diff($classesAfterLoad['interfaces'], $classesBeforeLoad['interfaces'])); - foreach ($newClasses as $name) { - if (isset(self::$loadedFiles[$name]) === false) { - $className = $name; - break; - } - } - } - - if ($className === null) { - $newClasses = array_reverse(array_diff($classesAfterLoad['traits'], $classesBeforeLoad['traits'])); - foreach ($newClasses as $name) { - if (isset(self::$loadedFiles[$name]) === false) { - $className = $name; - break; - } - } - } - - return $className; - - }//end determineLoadedClass() - - - /** - * Adds a directory to search during autoloading. - * - * @param string $path The path to the directory to search. - * @param string $nsPrefix The namespace prefix used by files under this path. - * - * @return void - */ - public static function addSearchPath($path, $nsPrefix='') - { - self::$searchPaths[$path] = rtrim(trim((string) $nsPrefix), '\\'); - - }//end addSearchPath() - - - /** - * Retrieve the namespaces and paths registered by external standards. - * - * @return array - */ - public static function getSearchPaths() - { - return self::$searchPaths; - - }//end getSearchPaths() - - - /** - * Gets the class name for the given file path. - * - * @param string $path The name of the file. - * - * @throws \Exception If the file path has not been loaded. - * @return string - */ - public static function getLoadedClassName($path) - { - if (isset(self::$loadedClasses[$path]) === false) { - throw new Exception("Cannot get class name for $path; file has not been included"); - } - - return self::$loadedClasses[$path]; - - }//end getLoadedClassName() - - - /** - * Gets the file path for the given class name. - * - * @param string $class The name of the class. - * - * @throws \Exception If the class name has not been loaded. - * @return string - */ - public static function getLoadedFileName($class) - { - if (isset(self::$loadedFiles[$class]) === false) { - throw new Exception("Cannot get file name for $class; class has not been included"); - } - - return self::$loadedFiles[$class]; - - }//end getLoadedFileName() - - - /** - * Gets the mapping of file names to class names. - * - * @return array - */ - public static function getLoadedClasses() - { - return self::$loadedClasses; - - }//end getLoadedClasses() - - - /** - * Gets the mapping of class names to file names. - * - * @return array - */ - public static function getLoadedFiles() - { - return self::$loadedFiles; - - }//end getLoadedFiles() - - - }//end class - - // Register the autoloader before any existing autoloaders to ensure - // it gets a chance to hear about every autoload request, and record - // the file and class name for it. - spl_autoload_register(__NAMESPACE__.'\Autoload::load', true, true); -}//end if diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/bin/phpcbf b/docker/streamline-src/vendor/squizlabs/php_codesniffer/bin/phpcbf deleted file mode 100755 index c804bdf1..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/bin/phpcbf +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env php - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -require_once __DIR__.'/../autoload.php'; - -$runner = new PHP_CodeSniffer\Runner(); -$exitCode = $runner->runPHPCBF(); -exit($exitCode); diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/bin/phpcs b/docker/streamline-src/vendor/squizlabs/php_codesniffer/bin/phpcs deleted file mode 100755 index d098bf87..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/bin/phpcs +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env php - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -require_once __DIR__.'/../autoload.php'; - -$runner = new PHP_CodeSniffer\Runner(); -$exitCode = $runner->runPHPCS(); -exit($exitCode); diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/composer.json b/docker/streamline-src/vendor/squizlabs/php_codesniffer/composer.json deleted file mode 100644 index 28cdb07b..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/composer.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "name": "squizlabs/php_codesniffer", - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "license": "BSD-3-Clause", - "type": "library", - "keywords": [ - "phpcs", - "standards", - "static analysis" - ], - "authors": [ - { - "name": "Greg Sherwood", - "role": "Former lead" - }, - { - "name": "Juliette Reinders Folmer", - "role": "Current lead" - }, - { - "name": "Contributors", - "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors" - } - ], - "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer", - "support": { - "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues", - "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki", - "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer", - "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy" - }, - "require": { - "php": ">=5.4.0", - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" - }, - "bin": [ - "bin/phpcbf", - "bin/phpcs" - ], - "config": { - "lock": false - }, - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "scripts": { - "cs": [ - "@php ./bin/phpcs" - ], - "cbf": [ - "@php ./bin/phpcbf" - ], - "test": [ - "Composer\\Config::disableProcessTimeout", - "@php ./vendor/phpunit/phpunit/phpunit tests/AllTests.php --no-coverage" - ], - "coverage": [ - "Composer\\Config::disableProcessTimeout", - "@php ./vendor/phpunit/phpunit/phpunit tests/AllTests.php -d max_execution_time=0" - ], - "coverage-local": [ - "Composer\\Config::disableProcessTimeout", - "@php ./vendor/phpunit/phpunit/phpunit tests/AllTests.php --coverage-html ./build/coverage-html -d max_execution_time=0" - ], - "build": [ - "Composer\\Config::disableProcessTimeout", - "@php -d phar.readonly=0 -f ./scripts/build-phar.php" - ], - "check-all": [ - "@cs", - "@test" - ] - }, - "scripts-descriptions": { - "cs": "Check for code style violations.", - "cbf": "Fix code style violations.", - "test": "Run the unit tests without code coverage.", - "coverage": "Run the unit tests with code coverage.", - "coverage-local": "Run the unit tests with code coverage and generate an HTML report in a 'build' directory.", - "build": "Create PHAR files for PHPCS and PHPCBF.", - "check-all": "Run all checks (phpcs, tests)." - } -} diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Config.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Config.php deleted file mode 100644 index dda15a55..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Config.php +++ /dev/null @@ -1,1661 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer; - -use Exception; -use Phar; -use PHP_CodeSniffer\Exceptions\DeepExitException; -use PHP_CodeSniffer\Exceptions\RuntimeException; -use PHP_CodeSniffer\Util\Common; -use PHP_CodeSniffer\Util\Help; -use PHP_CodeSniffer\Util\Standards; - -/** - * Stores the configuration used to run PHPCS and PHPCBF. - * - * @property string[] $files The files and directories to check. - * @property string[] $standards The standards being used for checking. - * @property int $verbosity How verbose the output should be. - * 0: no unnecessary output - * 1: basic output for files being checked - * 2: ruleset and file parsing output - * 3: sniff execution output - * @property bool $interactive Enable interactive checking mode. - * @property int $parallel Check files in parallel. - * @property bool $cache Enable the use of the file cache. - * @property string $cacheFile Path to the file where the cache data should be written - * @property bool $colors Display colours in output. - * @property bool $explain Explain the coding standards. - * @property bool $local Process local files in directories only (no recursion). - * @property bool $showSources Show sniff source codes in report output. - * @property bool $showProgress Show basic progress information while running. - * @property bool $quiet Quiet mode; disables progress and verbose output. - * @property bool $annotations Process phpcs: annotations. - * @property int $tabWidth How many spaces each tab is worth. - * @property string $encoding The encoding of the files being checked. - * @property string[] $sniffs The sniffs that should be used for checking. - * If empty, all sniffs in the supplied standards will be used. - * @property string[] $exclude The sniffs that should be excluded from checking. - * If empty, all sniffs in the supplied standards will be used. - * @property string[] $ignored Regular expressions used to ignore files and folders during checking. - * @property string $reportFile A file where the report output should be written. - * @property string $generator The documentation generator to use. - * @property string $filter The filter to use for the run. - * @property string[] $bootstrap One of more files to include before the run begins. - * @property int|string $reportWidth The maximum number of columns that reports should use for output. - * Set to "auto" for have this value changed to the width of the terminal. - * @property int $errorSeverity The minimum severity an error must have to be displayed. - * @property int $warningSeverity The minimum severity a warning must have to be displayed. - * @property bool $recordErrors Record the content of error messages as well as error counts. - * @property string $suffix A suffix to add to fixed files. - * @property string $basepath A file system location to strip from the paths of files shown in reports. - * @property bool $stdin Read content from STDIN instead of supplied files. - * @property string $stdinContent Content passed directly to PHPCS on STDIN. - * @property string $stdinPath The path to use for content passed on STDIN. - * @property bool $trackTime Whether or not to track sniff run time. - * - * @property array $extensions File extensions that should be checked, and what tokenizer to use. - * E.g., array('inc' => 'PHP'); - * @property array $reports The reports to use for printing output after the run. - * The format of the array is: - * array( - * 'reportName1' => 'outputFile', - * 'reportName2' => null, - * ); - * If the array value is NULL, the report will be written to the screen. - * - * @property string[] $unknown Any arguments gathered on the command line that are unknown to us. - * E.g., using `phpcs -c` will give array('c'); - */ -class Config -{ - - /** - * The current version. - * - * @var string - */ - const VERSION = '3.11.2'; - - /** - * Package stability; either stable, beta or alpha. - * - * @var string - */ - const STABILITY = 'stable'; - - /** - * Default report width when no report width is provided and 'auto' does not yield a valid width. - * - * @var int - */ - const DEFAULT_REPORT_WIDTH = 80; - - /** - * An array of settings that PHPCS and PHPCBF accept. - * - * This array is not meant to be accessed directly. Instead, use the settings - * as if they are class member vars so the __get() and __set() magic methods - * can be used to validate the values. For example, to set the verbosity level to - * level 2, use $this->verbosity = 2; instead of accessing this property directly. - * - * Each of these settings is described in the class comment property list. - * - * @var array - */ - private $settings = [ - 'files' => null, - 'standards' => null, - 'verbosity' => null, - 'interactive' => null, - 'parallel' => null, - 'cache' => null, - 'cacheFile' => null, - 'colors' => null, - 'explain' => null, - 'local' => null, - 'showSources' => null, - 'showProgress' => null, - 'quiet' => null, - 'annotations' => null, - 'tabWidth' => null, - 'encoding' => null, - 'extensions' => null, - 'sniffs' => null, - 'exclude' => null, - 'ignored' => null, - 'reportFile' => null, - 'generator' => null, - 'filter' => null, - 'bootstrap' => null, - 'reports' => null, - 'basepath' => null, - 'reportWidth' => null, - 'errorSeverity' => null, - 'warningSeverity' => null, - 'recordErrors' => null, - 'suffix' => null, - 'stdin' => null, - 'stdinContent' => null, - 'stdinPath' => null, - 'trackTime' => null, - 'unknown' => null, - ]; - - /** - * Whether or not to kill the process when an unknown command line arg is found. - * - * If FALSE, arguments that are not command line options or file/directory paths - * will be ignored and execution will continue. These values will be stored in - * $this->unknown. - * - * @var boolean - */ - public $dieOnUnknownArg; - - /** - * The current command line arguments we are processing. - * - * @var string[] - */ - private $cliArgs = []; - - /** - * Command line values that the user has supplied directly. - * - * @var array> - */ - private static $overriddenDefaults = []; - - /** - * Config file data that has been loaded for the run. - * - * @var array - */ - private static $configData = null; - - /** - * The full path to the config data file that has been loaded. - * - * @var string - */ - private static $configDataFile = null; - - /** - * Automatically discovered executable utility paths. - * - * @var array - */ - private static $executablePaths = []; - - - /** - * Get the value of an inaccessible property. - * - * @param string $name The name of the property. - * - * @return mixed - * @throws \PHP_CodeSniffer\Exceptions\RuntimeException If the setting name is invalid. - */ - public function __get($name) - { - if (array_key_exists($name, $this->settings) === false) { - throw new RuntimeException("ERROR: unable to get value of property \"$name\""); - } - - // Figure out what the terminal width needs to be for "auto". - if ($name === 'reportWidth' && $this->settings[$name] === 'auto') { - if (function_exists('shell_exec') === true) { - $dimensions = shell_exec('stty size 2>&1'); - if (is_string($dimensions) === true && preg_match('|\d+ (\d+)|', $dimensions, $matches) === 1) { - $this->settings[$name] = (int) $matches[1]; - } - } - - if ($this->settings[$name] === 'auto') { - // If shell_exec wasn't available or didn't yield a usable value, set to the default. - // This will prevent subsequent retrievals of the reportWidth from making another call to stty. - $this->settings[$name] = self::DEFAULT_REPORT_WIDTH; - } - } - - return $this->settings[$name]; - - }//end __get() - - - /** - * Set the value of an inaccessible property. - * - * @param string $name The name of the property. - * @param mixed $value The value of the property. - * - * @return void - * @throws \PHP_CodeSniffer\Exceptions\RuntimeException If the setting name is invalid. - */ - public function __set($name, $value) - { - if (array_key_exists($name, $this->settings) === false) { - throw new RuntimeException("Can't __set() $name; setting doesn't exist"); - } - - switch ($name) { - case 'reportWidth' : - if (is_string($value) === true && $value === 'auto') { - // Nothing to do. Leave at 'auto'. - break; - } - - if (is_int($value) === true) { - $value = abs($value); - } else if (is_string($value) === true && preg_match('`^\d+$`', $value) === 1) { - $value = (int) $value; - } else { - $value = self::DEFAULT_REPORT_WIDTH; - } - break; - - case 'standards' : - $cleaned = []; - - // Check if the standard name is valid, or if the case is invalid. - $installedStandards = Standards::getInstalledStandards(); - foreach ($value as $standard) { - foreach ($installedStandards as $validStandard) { - if (strtolower($standard) === strtolower($validStandard)) { - $standard = $validStandard; - break; - } - } - - $cleaned[] = $standard; - } - - $value = $cleaned; - break; - - // Only track time when explicitly needed. - case 'verbosity': - if ($value > 2) { - $this->settings['trackTime'] = true; - } - break; - case 'reports': - $reports = array_change_key_case($value, CASE_LOWER); - if (array_key_exists('performance', $reports) === true) { - $this->settings['trackTime'] = true; - } - break; - - default : - // No validation required. - break; - }//end switch - - $this->settings[$name] = $value; - - }//end __set() - - - /** - * Check if the value of an inaccessible property is set. - * - * @param string $name The name of the property. - * - * @return bool - */ - public function __isset($name) - { - return isset($this->settings[$name]); - - }//end __isset() - - - /** - * Unset the value of an inaccessible property. - * - * @param string $name The name of the property. - * - * @return void - */ - public function __unset($name) - { - $this->settings[$name] = null; - - }//end __unset() - - - /** - * Get the array of all config settings. - * - * @return array - */ - public function getSettings() - { - return $this->settings; - - }//end getSettings() - - - /** - * Set the array of all config settings. - * - * @param array $settings The array of config settings. - * - * @return void - */ - public function setSettings($settings) - { - return $this->settings = $settings; - - }//end setSettings() - - - /** - * Creates a Config object and populates it with command line values. - * - * @param array $cliArgs An array of values gathered from CLI args. - * @param bool $dieOnUnknownArg Whether or not to kill the process when an - * unknown command line arg is found. - * - * @return void - */ - public function __construct(array $cliArgs=[], $dieOnUnknownArg=true) - { - if (defined('PHP_CODESNIFFER_IN_TESTS') === true) { - // Let everything through during testing so that we can - // make use of PHPUnit command line arguments as well. - $this->dieOnUnknownArg = false; - } else { - $this->dieOnUnknownArg = $dieOnUnknownArg; - } - - if (empty($cliArgs) === true) { - $cliArgs = $_SERVER['argv']; - array_shift($cliArgs); - } - - $this->restoreDefaults(); - $this->setCommandLineValues($cliArgs); - - if (isset(self::$overriddenDefaults['standards']) === false) { - // They did not supply a standard to use. - // Look for a default ruleset in the current directory or higher. - $currentDir = getcwd(); - - $defaultFiles = [ - '.phpcs.xml', - 'phpcs.xml', - '.phpcs.xml.dist', - 'phpcs.xml.dist', - ]; - - do { - foreach ($defaultFiles as $defaultFilename) { - $default = $currentDir.DIRECTORY_SEPARATOR.$defaultFilename; - if (is_file($default) === true) { - $this->standards = [$default]; - break(2); - } - } - - $lastDir = $currentDir; - $currentDir = dirname($currentDir); - } while ($currentDir !== '.' && $currentDir !== $lastDir && Common::isReadable($currentDir) === true); - }//end if - - if (defined('STDIN') === false - || stripos(PHP_OS, 'WIN') === 0 - ) { - return; - } - - $handle = fopen('php://stdin', 'r'); - - // Check for content on STDIN. - if ($this->stdin === true - || (Common::isStdinATTY() === false - && feof($handle) === false) - ) { - $readStreams = [$handle]; - $writeSteams = null; - - $fileContents = ''; - while (is_resource($handle) === true && feof($handle) === false) { - // Set a timeout of 200ms. - if (stream_select($readStreams, $writeSteams, $writeSteams, 0, 200000) === 0) { - break; - } - - $fileContents .= fgets($handle); - } - - if (trim($fileContents) !== '') { - $this->stdin = true; - $this->stdinContent = $fileContents; - self::$overriddenDefaults['stdin'] = true; - self::$overriddenDefaults['stdinContent'] = true; - } - }//end if - - fclose($handle); - - }//end __construct() - - - /** - * Set the command line values. - * - * @param array $args An array of command line arguments to set. - * - * @return void - */ - public function setCommandLineValues($args) - { - $this->cliArgs = $args; - $numArgs = count($args); - - for ($i = 0; $i < $numArgs; $i++) { - $arg = $this->cliArgs[$i]; - if ($arg === '') { - continue; - } - - if ($arg[0] === '-') { - if ($arg === '-') { - // Asking to read from STDIN. - $this->stdin = true; - self::$overriddenDefaults['stdin'] = true; - continue; - } - - if ($arg === '--') { - // Empty argument, ignore it. - continue; - } - - if ($arg[1] === '-') { - $this->processLongArgument(substr($arg, 2), $i); - } else { - $switches = str_split($arg); - foreach ($switches as $switch) { - if ($switch === '-') { - continue; - } - - $this->processShortArgument($switch, $i); - } - } - } else { - $this->processUnknownArgument($arg, $i); - }//end if - }//end for - - }//end setCommandLineValues() - - - /** - * Restore default values for all possible command line arguments. - * - * @return void - */ - public function restoreDefaults() - { - $this->files = []; - $this->standards = ['PEAR']; - $this->verbosity = 0; - $this->interactive = false; - $this->cache = false; - $this->cacheFile = null; - $this->colors = false; - $this->explain = false; - $this->local = false; - $this->showSources = false; - $this->showProgress = false; - $this->quiet = false; - $this->annotations = true; - $this->parallel = 1; - $this->tabWidth = 0; - $this->encoding = 'utf-8'; - $this->extensions = [ - 'php' => 'PHP', - 'inc' => 'PHP', - 'js' => 'JS', - 'css' => 'CSS', - ]; - $this->sniffs = []; - $this->exclude = []; - $this->ignored = []; - $this->reportFile = null; - $this->generator = null; - $this->filter = null; - $this->bootstrap = []; - $this->basepath = null; - $this->reports = ['full' => null]; - $this->reportWidth = 'auto'; - $this->errorSeverity = 5; - $this->warningSeverity = 5; - $this->recordErrors = true; - $this->suffix = ''; - $this->stdin = false; - $this->stdinContent = null; - $this->stdinPath = null; - $this->trackTime = false; - $this->unknown = []; - - $standard = self::getConfigData('default_standard'); - if ($standard !== null) { - $this->standards = explode(',', $standard); - } - - $reportFormat = self::getConfigData('report_format'); - if ($reportFormat !== null) { - $this->reports = [$reportFormat => null]; - } - - $tabWidth = self::getConfigData('tab_width'); - if ($tabWidth !== null) { - $this->tabWidth = (int) $tabWidth; - } - - $encoding = self::getConfigData('encoding'); - if ($encoding !== null) { - $this->encoding = strtolower($encoding); - } - - $severity = self::getConfigData('severity'); - if ($severity !== null) { - $this->errorSeverity = (int) $severity; - $this->warningSeverity = (int) $severity; - } - - $severity = self::getConfigData('error_severity'); - if ($severity !== null) { - $this->errorSeverity = (int) $severity; - } - - $severity = self::getConfigData('warning_severity'); - if ($severity !== null) { - $this->warningSeverity = (int) $severity; - } - - $showWarnings = self::getConfigData('show_warnings'); - if ($showWarnings !== null) { - $showWarnings = (bool) $showWarnings; - if ($showWarnings === false) { - $this->warningSeverity = 0; - } - } - - $reportWidth = self::getConfigData('report_width'); - if ($reportWidth !== null) { - $this->reportWidth = $reportWidth; - } - - $showProgress = self::getConfigData('show_progress'); - if ($showProgress !== null) { - $this->showProgress = (bool) $showProgress; - } - - $quiet = self::getConfigData('quiet'); - if ($quiet !== null) { - $this->quiet = (bool) $quiet; - } - - $colors = self::getConfigData('colors'); - if ($colors !== null) { - $this->colors = (bool) $colors; - } - - if (defined('PHP_CODESNIFFER_IN_TESTS') === false) { - $cache = self::getConfigData('cache'); - if ($cache !== null) { - $this->cache = (bool) $cache; - } - - $parallel = self::getConfigData('parallel'); - if ($parallel !== null) { - $this->parallel = max((int) $parallel, 1); - } - } - - }//end restoreDefaults() - - - /** - * Processes a short (-e) command line argument. - * - * @param string $arg The command line argument. - * @param int $pos The position of the argument on the command line. - * - * @return void - * @throws \PHP_CodeSniffer\Exceptions\DeepExitException - */ - public function processShortArgument($arg, $pos) - { - switch ($arg) { - case 'h': - case '?': - ob_start(); - $this->printUsage(); - $output = ob_get_contents(); - ob_end_clean(); - throw new DeepExitException($output, 0); - case 'i' : - ob_start(); - Standards::printInstalledStandards(); - $output = ob_get_contents(); - ob_end_clean(); - throw new DeepExitException($output, 0); - case 'v' : - if ($this->quiet === true) { - // Ignore when quiet mode is enabled. - break; - } - - $this->verbosity++; - self::$overriddenDefaults['verbosity'] = true; - break; - case 'l' : - $this->local = true; - self::$overriddenDefaults['local'] = true; - break; - case 's' : - $this->showSources = true; - self::$overriddenDefaults['showSources'] = true; - break; - case 'a' : - $this->interactive = true; - self::$overriddenDefaults['interactive'] = true; - break; - case 'e': - $this->explain = true; - self::$overriddenDefaults['explain'] = true; - break; - case 'p' : - if ($this->quiet === true) { - // Ignore when quiet mode is enabled. - break; - } - - $this->showProgress = true; - self::$overriddenDefaults['showProgress'] = true; - break; - case 'q' : - // Quiet mode disables a few other settings as well. - $this->quiet = true; - $this->showProgress = false; - $this->verbosity = 0; - - self::$overriddenDefaults['quiet'] = true; - break; - case 'm' : - $this->recordErrors = false; - self::$overriddenDefaults['recordErrors'] = true; - break; - case 'd' : - $ini = explode('=', $this->cliArgs[($pos + 1)]); - $this->cliArgs[($pos + 1)] = ''; - if (isset($ini[1]) === true) { - ini_set($ini[0], $ini[1]); - } else { - ini_set($ini[0], true); - } - break; - case 'n' : - if (isset(self::$overriddenDefaults['warningSeverity']) === false) { - $this->warningSeverity = 0; - self::$overriddenDefaults['warningSeverity'] = true; - } - break; - case 'w' : - if (isset(self::$overriddenDefaults['warningSeverity']) === false) { - $this->warningSeverity = $this->errorSeverity; - self::$overriddenDefaults['warningSeverity'] = true; - } - break; - default: - if ($this->dieOnUnknownArg === false) { - $unknown = $this->unknown; - $unknown[] = $arg; - $this->unknown = $unknown; - } else { - $this->processUnknownArgument('-'.$arg, $pos); - } - }//end switch - - }//end processShortArgument() - - - /** - * Processes a long (--example) command-line argument. - * - * @param string $arg The command line argument. - * @param int $pos The position of the argument on the command line. - * - * @return void - * @throws \PHP_CodeSniffer\Exceptions\DeepExitException - */ - public function processLongArgument($arg, $pos) - { - switch ($arg) { - case 'help': - ob_start(); - $this->printUsage(); - $output = ob_get_contents(); - ob_end_clean(); - throw new DeepExitException($output, 0); - case 'version': - $output = 'PHP_CodeSniffer version '.self::VERSION.' ('.self::STABILITY.') '; - $output .= 'by Squiz and PHPCSStandards'.PHP_EOL; - throw new DeepExitException($output, 0); - case 'colors': - if (isset(self::$overriddenDefaults['colors']) === true) { - break; - } - - $this->colors = true; - self::$overriddenDefaults['colors'] = true; - break; - case 'no-colors': - if (isset(self::$overriddenDefaults['colors']) === true) { - break; - } - - $this->colors = false; - self::$overriddenDefaults['colors'] = true; - break; - case 'cache': - if (isset(self::$overriddenDefaults['cache']) === true) { - break; - } - - if (defined('PHP_CODESNIFFER_IN_TESTS') === false) { - $this->cache = true; - self::$overriddenDefaults['cache'] = true; - } - break; - case 'no-cache': - if (isset(self::$overriddenDefaults['cache']) === true) { - break; - } - - $this->cache = false; - self::$overriddenDefaults['cache'] = true; - break; - case 'ignore-annotations': - if (isset(self::$overriddenDefaults['annotations']) === true) { - break; - } - - $this->annotations = false; - self::$overriddenDefaults['annotations'] = true; - break; - case 'config-set': - if (isset($this->cliArgs[($pos + 1)]) === false - || isset($this->cliArgs[($pos + 2)]) === false - ) { - $error = 'ERROR: Setting a config option requires a name and value'.PHP_EOL.PHP_EOL; - $error .= $this->printShortUsage(true); - throw new DeepExitException($error, 3); - } - - $key = $this->cliArgs[($pos + 1)]; - $value = $this->cliArgs[($pos + 2)]; - $current = self::getConfigData($key); - - try { - $this->setConfigData($key, $value); - } catch (Exception $e) { - throw new DeepExitException($e->getMessage().PHP_EOL, 3); - } - - $output = 'Using config file: '.self::$configDataFile.PHP_EOL.PHP_EOL; - - if ($current === null) { - $output .= "Config value \"$key\" added successfully".PHP_EOL; - } else { - $output .= "Config value \"$key\" updated successfully; old value was \"$current\"".PHP_EOL; - } - throw new DeepExitException($output, 0); - case 'config-delete': - if (isset($this->cliArgs[($pos + 1)]) === false) { - $error = 'ERROR: Deleting a config option requires the name of the option'.PHP_EOL.PHP_EOL; - $error .= $this->printShortUsage(true); - throw new DeepExitException($error, 3); - } - - $output = 'Using config file: '.self::$configDataFile.PHP_EOL.PHP_EOL; - - $key = $this->cliArgs[($pos + 1)]; - $current = self::getConfigData($key); - if ($current === null) { - $output .= "Config value \"$key\" has not been set".PHP_EOL; - } else { - try { - $this->setConfigData($key, null); - } catch (Exception $e) { - throw new DeepExitException($e->getMessage().PHP_EOL, 3); - } - - $output .= "Config value \"$key\" removed successfully; old value was \"$current\"".PHP_EOL; - } - throw new DeepExitException($output, 0); - case 'config-show': - ob_start(); - $data = self::getAllConfigData(); - echo 'Using config file: '.self::$configDataFile.PHP_EOL.PHP_EOL; - $this->printConfigData($data); - $output = ob_get_contents(); - ob_end_clean(); - throw new DeepExitException($output, 0); - case 'runtime-set': - if (isset($this->cliArgs[($pos + 1)]) === false - || isset($this->cliArgs[($pos + 2)]) === false - ) { - $error = 'ERROR: Setting a runtime config option requires a name and value'.PHP_EOL.PHP_EOL; - $error .= $this->printShortUsage(true); - throw new DeepExitException($error, 3); - } - - $key = $this->cliArgs[($pos + 1)]; - $value = $this->cliArgs[($pos + 2)]; - $this->cliArgs[($pos + 1)] = ''; - $this->cliArgs[($pos + 2)] = ''; - self::setConfigData($key, $value, true); - if (isset(self::$overriddenDefaults['runtime-set']) === false) { - self::$overriddenDefaults['runtime-set'] = []; - } - - self::$overriddenDefaults['runtime-set'][$key] = true; - break; - default: - if (substr($arg, 0, 7) === 'sniffs=') { - if (isset(self::$overriddenDefaults['sniffs']) === true) { - break; - } - - $sniffs = explode(',', substr($arg, 7)); - foreach ($sniffs as $sniff) { - if (substr_count($sniff, '.') !== 2) { - $error = 'ERROR: The specified sniff code "'.$sniff.'" is invalid'.PHP_EOL.PHP_EOL; - $error .= $this->printShortUsage(true); - throw new DeepExitException($error, 3); - } - } - - $this->sniffs = $sniffs; - self::$overriddenDefaults['sniffs'] = true; - } else if (substr($arg, 0, 8) === 'exclude=') { - if (isset(self::$overriddenDefaults['exclude']) === true) { - break; - } - - $sniffs = explode(',', substr($arg, 8)); - foreach ($sniffs as $sniff) { - if (substr_count($sniff, '.') !== 2) { - $error = 'ERROR: The specified sniff code "'.$sniff.'" is invalid'.PHP_EOL.PHP_EOL; - $error .= $this->printShortUsage(true); - throw new DeepExitException($error, 3); - } - } - - $this->exclude = $sniffs; - self::$overriddenDefaults['exclude'] = true; - } else if (defined('PHP_CODESNIFFER_IN_TESTS') === false - && substr($arg, 0, 6) === 'cache=' - ) { - if ((isset(self::$overriddenDefaults['cache']) === true - && $this->cache === false) - || isset(self::$overriddenDefaults['cacheFile']) === true - ) { - break; - } - - // Turn caching on. - $this->cache = true; - self::$overriddenDefaults['cache'] = true; - - $this->cacheFile = Common::realpath(substr($arg, 6)); - - // It may not exist and return false instead. - if ($this->cacheFile === false) { - $this->cacheFile = substr($arg, 6); - - $dir = dirname($this->cacheFile); - if (is_dir($dir) === false) { - $error = 'ERROR: The specified cache file path "'.$this->cacheFile.'" points to a non-existent directory'.PHP_EOL.PHP_EOL; - $error .= $this->printShortUsage(true); - throw new DeepExitException($error, 3); - } - - if ($dir === '.') { - // Passed cache file is a file in the current directory. - $this->cacheFile = getcwd().'/'.basename($this->cacheFile); - } else { - if ($dir[0] === '/') { - // An absolute path. - $dir = Common::realpath($dir); - } else { - $dir = Common::realpath(getcwd().'/'.$dir); - } - - if ($dir !== false) { - // Cache file path is relative. - $this->cacheFile = $dir.'/'.basename($this->cacheFile); - } - } - }//end if - - self::$overriddenDefaults['cacheFile'] = true; - - if (is_dir($this->cacheFile) === true) { - $error = 'ERROR: The specified cache file path "'.$this->cacheFile.'" is a directory'.PHP_EOL.PHP_EOL; - $error .= $this->printShortUsage(true); - throw new DeepExitException($error, 3); - } - } else if (substr($arg, 0, 10) === 'bootstrap=') { - $files = explode(',', substr($arg, 10)); - $bootstrap = []; - foreach ($files as $file) { - $path = Common::realpath($file); - if ($path === false) { - $error = 'ERROR: The specified bootstrap file "'.$file.'" does not exist'.PHP_EOL.PHP_EOL; - $error .= $this->printShortUsage(true); - throw new DeepExitException($error, 3); - } - - $bootstrap[] = $path; - } - - $this->bootstrap = array_merge($this->bootstrap, $bootstrap); - self::$overriddenDefaults['bootstrap'] = true; - } else if (substr($arg, 0, 10) === 'file-list=') { - $fileList = substr($arg, 10); - $path = Common::realpath($fileList); - if ($path === false) { - $error = 'ERROR: The specified file list "'.$fileList.'" does not exist'.PHP_EOL.PHP_EOL; - $error .= $this->printShortUsage(true); - throw new DeepExitException($error, 3); - } - - $files = file($path); - foreach ($files as $inputFile) { - $inputFile = trim($inputFile); - - // Skip empty lines. - if ($inputFile === '') { - continue; - } - - $this->processFilePath($inputFile); - } - } else if (substr($arg, 0, 11) === 'stdin-path=') { - if (isset(self::$overriddenDefaults['stdinPath']) === true) { - break; - } - - $this->stdinPath = Common::realpath(substr($arg, 11)); - - // It may not exist and return false instead, so use whatever they gave us. - if ($this->stdinPath === false) { - $this->stdinPath = trim(substr($arg, 11)); - } - - self::$overriddenDefaults['stdinPath'] = true; - } else if (PHP_CODESNIFFER_CBF === false && substr($arg, 0, 12) === 'report-file=') { - if (isset(self::$overriddenDefaults['reportFile']) === true) { - break; - } - - $this->reportFile = Common::realpath(substr($arg, 12)); - - // It may not exist and return false instead. - if ($this->reportFile === false) { - $this->reportFile = substr($arg, 12); - - $dir = Common::realpath(dirname($this->reportFile)); - if (is_dir($dir) === false) { - $error = 'ERROR: The specified report file path "'.$this->reportFile.'" points to a non-existent directory'.PHP_EOL.PHP_EOL; - $error .= $this->printShortUsage(true); - throw new DeepExitException($error, 3); - } - - $this->reportFile = $dir.'/'.basename($this->reportFile); - }//end if - - self::$overriddenDefaults['reportFile'] = true; - - if (is_dir($this->reportFile) === true) { - $error = 'ERROR: The specified report file path "'.$this->reportFile.'" is a directory'.PHP_EOL.PHP_EOL; - $error .= $this->printShortUsage(true); - throw new DeepExitException($error, 3); - } - } else if (substr($arg, 0, 13) === 'report-width=') { - if (isset(self::$overriddenDefaults['reportWidth']) === true) { - break; - } - - $this->reportWidth = substr($arg, 13); - self::$overriddenDefaults['reportWidth'] = true; - } else if (substr($arg, 0, 9) === 'basepath=') { - if (isset(self::$overriddenDefaults['basepath']) === true) { - break; - } - - self::$overriddenDefaults['basepath'] = true; - - if (substr($arg, 9) === '') { - $this->basepath = null; - break; - } - - $this->basepath = Common::realpath(substr($arg, 9)); - - // It may not exist and return false instead. - if ($this->basepath === false) { - $this->basepath = substr($arg, 9); - } - - if (is_dir($this->basepath) === false) { - $error = 'ERROR: The specified basepath "'.$this->basepath.'" points to a non-existent directory'.PHP_EOL.PHP_EOL; - $error .= $this->printShortUsage(true); - throw new DeepExitException($error, 3); - } - } else if ((substr($arg, 0, 7) === 'report=' || substr($arg, 0, 7) === 'report-')) { - $reports = []; - - if ($arg[6] === '-') { - // This is a report with file output. - $split = strpos($arg, '='); - if ($split === false) { - $report = substr($arg, 7); - $output = null; - } else { - $report = substr($arg, 7, ($split - 7)); - $output = substr($arg, ($split + 1)); - if ($output === false) { - $output = null; - } else { - $dir = Common::realpath(dirname($output)); - if (is_dir($dir) === false) { - $error = 'ERROR: The specified '.$report.' report file path "'.$output.'" points to a non-existent directory'.PHP_EOL.PHP_EOL; - $error .= $this->printShortUsage(true); - throw new DeepExitException($error, 3); - } - - $output = $dir.'/'.basename($output); - - if (is_dir($output) === true) { - $error = 'ERROR: The specified '.$report.' report file path "'.$output.'" is a directory'.PHP_EOL.PHP_EOL; - $error .= $this->printShortUsage(true); - throw new DeepExitException($error, 3); - } - }//end if - }//end if - - $reports[$report] = $output; - } else { - // This is a single report. - if (isset(self::$overriddenDefaults['reports']) === true) { - break; - } - - $reportNames = explode(',', substr($arg, 7)); - foreach ($reportNames as $report) { - $reports[$report] = null; - } - }//end if - - // Remove the default value so the CLI value overrides it. - if (isset(self::$overriddenDefaults['reports']) === false) { - $this->reports = $reports; - } else { - $this->reports = array_merge($this->reports, $reports); - } - - self::$overriddenDefaults['reports'] = true; - } else if (substr($arg, 0, 7) === 'filter=') { - if (isset(self::$overriddenDefaults['filter']) === true) { - break; - } - - $this->filter = substr($arg, 7); - self::$overriddenDefaults['filter'] = true; - } else if (substr($arg, 0, 9) === 'standard=') { - $standards = trim(substr($arg, 9)); - if ($standards !== '') { - $this->standards = explode(',', $standards); - } - - self::$overriddenDefaults['standards'] = true; - } else if (substr($arg, 0, 11) === 'extensions=') { - if (isset(self::$overriddenDefaults['extensions']) === true) { - break; - } - - $extensions = explode(',', substr($arg, 11)); - $newExtensions = []; - foreach ($extensions as $ext) { - $slash = strpos($ext, '/'); - if ($slash !== false) { - // They specified the tokenizer too. - list($ext, $tokenizer) = explode('/', $ext); - $newExtensions[$ext] = strtoupper($tokenizer); - continue; - } - - if (isset($this->extensions[$ext]) === true) { - $newExtensions[$ext] = $this->extensions[$ext]; - } else { - $newExtensions[$ext] = 'PHP'; - } - } - - $this->extensions = $newExtensions; - self::$overriddenDefaults['extensions'] = true; - } else if (substr($arg, 0, 7) === 'suffix=') { - if (isset(self::$overriddenDefaults['suffix']) === true) { - break; - } - - $this->suffix = substr($arg, 7); - self::$overriddenDefaults['suffix'] = true; - } else if (substr($arg, 0, 9) === 'parallel=') { - if (isset(self::$overriddenDefaults['parallel']) === true) { - break; - } - - $this->parallel = max((int) substr($arg, 9), 1); - self::$overriddenDefaults['parallel'] = true; - } else if (substr($arg, 0, 9) === 'severity=') { - $this->errorSeverity = (int) substr($arg, 9); - $this->warningSeverity = $this->errorSeverity; - if (isset(self::$overriddenDefaults['errorSeverity']) === false) { - self::$overriddenDefaults['errorSeverity'] = true; - } - - if (isset(self::$overriddenDefaults['warningSeverity']) === false) { - self::$overriddenDefaults['warningSeverity'] = true; - } - } else if (substr($arg, 0, 15) === 'error-severity=') { - if (isset(self::$overriddenDefaults['errorSeverity']) === true) { - break; - } - - $this->errorSeverity = (int) substr($arg, 15); - self::$overriddenDefaults['errorSeverity'] = true; - } else if (substr($arg, 0, 17) === 'warning-severity=') { - if (isset(self::$overriddenDefaults['warningSeverity']) === true) { - break; - } - - $this->warningSeverity = (int) substr($arg, 17); - self::$overriddenDefaults['warningSeverity'] = true; - } else if (substr($arg, 0, 7) === 'ignore=') { - if (isset(self::$overriddenDefaults['ignored']) === true) { - break; - } - - // Split the ignore string on commas, unless the comma is escaped - // using 1 or 3 slashes (\, or \\\,). - $patterns = preg_split( - '/(?<=(?ignored = $ignored; - self::$overriddenDefaults['ignored'] = true; - } else if (substr($arg, 0, 10) === 'generator=' - && PHP_CODESNIFFER_CBF === false - ) { - if (isset(self::$overriddenDefaults['generator']) === true) { - break; - } - - $this->generator = substr($arg, 10); - self::$overriddenDefaults['generator'] = true; - } else if (substr($arg, 0, 9) === 'encoding=') { - if (isset(self::$overriddenDefaults['encoding']) === true) { - break; - } - - $this->encoding = strtolower(substr($arg, 9)); - self::$overriddenDefaults['encoding'] = true; - } else if (substr($arg, 0, 10) === 'tab-width=') { - if (isset(self::$overriddenDefaults['tabWidth']) === true) { - break; - } - - $this->tabWidth = (int) substr($arg, 10); - self::$overriddenDefaults['tabWidth'] = true; - } else { - if ($this->dieOnUnknownArg === false) { - $eqPos = strpos($arg, '='); - try { - $unknown = $this->unknown; - - if ($eqPos === false) { - $unknown[$arg] = $arg; - } else { - $value = substr($arg, ($eqPos + 1)); - $arg = substr($arg, 0, $eqPos); - $unknown[$arg] = $value; - } - - $this->unknown = $unknown; - } catch (RuntimeException $e) { - // Value is not valid, so just ignore it. - } - } else { - $this->processUnknownArgument('--'.$arg, $pos); - } - }//end if - break; - }//end switch - - }//end processLongArgument() - - - /** - * Processes an unknown command line argument. - * - * Assumes all unknown arguments are files and folders to check. - * - * @param string $arg The command line argument. - * @param int $pos The position of the argument on the command line. - * - * @return void - * @throws \PHP_CodeSniffer\Exceptions\DeepExitException - */ - public function processUnknownArgument($arg, $pos) - { - // We don't know about any additional switches; just files. - if ($arg[0] === '-') { - if ($this->dieOnUnknownArg === false) { - return; - } - - $error = "ERROR: option \"$arg\" not known".PHP_EOL.PHP_EOL; - $error .= $this->printShortUsage(true); - throw new DeepExitException($error, 3); - } - - $this->processFilePath($arg); - - }//end processUnknownArgument() - - - /** - * Processes a file path and add it to the file list. - * - * @param string $path The path to the file to add. - * - * @return void - * @throws \PHP_CodeSniffer\Exceptions\DeepExitException - */ - public function processFilePath($path) - { - // If we are processing STDIN, don't record any files to check. - if ($this->stdin === true) { - return; - } - - $file = Common::realpath($path); - if (file_exists($file) === false) { - if ($this->dieOnUnknownArg === false) { - return; - } - - $error = 'ERROR: The file "'.$path.'" does not exist.'.PHP_EOL.PHP_EOL; - $error .= $this->printShortUsage(true); - throw new DeepExitException($error, 3); - } else { - // Can't modify the files array directly because it's not a real - // class member, so need to use this little get/modify/set trick. - $files = $this->files; - $files[] = $file; - $this->files = $files; - self::$overriddenDefaults['files'] = true; - } - - }//end processFilePath() - - - /** - * Prints out the usage information for this script. - * - * @return void - */ - public function printUsage() - { - echo PHP_EOL; - - if (PHP_CODESNIFFER_CBF === true) { - $this->printPHPCBFUsage(); - } else { - $this->printPHPCSUsage(); - } - - echo PHP_EOL; - - }//end printUsage() - - - /** - * Prints out the short usage information for this script. - * - * @param bool $return If TRUE, the usage string is returned - * instead of output to screen. - * - * @return string|void - */ - public function printShortUsage($return=false) - { - if (PHP_CODESNIFFER_CBF === true) { - $usage = 'Run "phpcbf --help" for usage information'; - } else { - $usage = 'Run "phpcs --help" for usage information'; - } - - $usage .= PHP_EOL.PHP_EOL; - - if ($return === true) { - return $usage; - } - - echo $usage; - - }//end printShortUsage() - - - /** - * Prints out the usage information for PHPCS. - * - * @return void - */ - public function printPHPCSUsage() - { - $longOptions = explode(',', Help::DEFAULT_LONG_OPTIONS); - $longOptions[] = 'cache'; - $longOptions[] = 'no-cache'; - $longOptions[] = 'report'; - $longOptions[] = 'report-file'; - $longOptions[] = 'report-report'; - $longOptions[] = 'config-explain'; - $longOptions[] = 'config-set'; - $longOptions[] = 'config-delete'; - $longOptions[] = 'config-show'; - $longOptions[] = 'generator'; - - $shortOptions = Help::DEFAULT_SHORT_OPTIONS.'aems'; - - (new Help($this, $longOptions, $shortOptions))->display(); - - }//end printPHPCSUsage() - - - /** - * Prints out the usage information for PHPCBF. - * - * @return void - */ - public function printPHPCBFUsage() - { - $longOptions = explode(',', Help::DEFAULT_LONG_OPTIONS); - $longOptions[] = 'suffix'; - $shortOptions = Help::DEFAULT_SHORT_OPTIONS; - - (new Help($this, $longOptions, $shortOptions))->display(); - - }//end printPHPCBFUsage() - - - /** - * Get a single config value. - * - * @param string $key The name of the config value. - * - * @return string|null - * @see setConfigData() - * @see getAllConfigData() - */ - public static function getConfigData($key) - { - $phpCodeSnifferConfig = self::getAllConfigData(); - - if ($phpCodeSnifferConfig === null) { - return null; - } - - if (isset($phpCodeSnifferConfig[$key]) === false) { - return null; - } - - return $phpCodeSnifferConfig[$key]; - - }//end getConfigData() - - - /** - * Get the path to an executable utility. - * - * @param string $name The name of the executable utility. - * - * @return string|null - * @see getConfigData() - */ - public static function getExecutablePath($name) - { - $data = self::getConfigData($name.'_path'); - if ($data !== null) { - return $data; - } - - if ($name === "php") { - // For php, we know the executable path. There's no need to look it up. - return PHP_BINARY; - } - - if (array_key_exists($name, self::$executablePaths) === true) { - return self::$executablePaths[$name]; - } - - if (stripos(PHP_OS, 'WIN') === 0) { - $cmd = 'where '.escapeshellarg($name).' 2> nul'; - } else { - $cmd = 'which '.escapeshellarg($name).' 2> /dev/null'; - } - - $result = exec($cmd, $output, $retVal); - if ($retVal !== 0) { - $result = null; - } - - self::$executablePaths[$name] = $result; - return $result; - - }//end getExecutablePath() - - - /** - * Set a single config value. - * - * @param string $key The name of the config value. - * @param string|null $value The value to set. If null, the config - * entry is deleted, reverting it to the - * default value. - * @param boolean $temp Set this config data temporarily for this - * script run. This will not write the config - * data to the config file. - * - * @return bool - * @see getConfigData() - * @throws \PHP_CodeSniffer\Exceptions\DeepExitException If the config file can not be written. - */ - public static function setConfigData($key, $value, $temp=false) - { - if (isset(self::$overriddenDefaults['runtime-set']) === true - && isset(self::$overriddenDefaults['runtime-set'][$key]) === true - ) { - return false; - } - - if ($temp === false) { - $path = ''; - if (is_callable('\Phar::running') === true) { - $path = Phar::running(false); - } - - if ($path !== '') { - $configFile = dirname($path).DIRECTORY_SEPARATOR.'CodeSniffer.conf'; - } else { - $configFile = dirname(__DIR__).DIRECTORY_SEPARATOR.'CodeSniffer.conf'; - } - - if (is_file($configFile) === true - && is_writable($configFile) === false - ) { - $error = 'ERROR: Config file '.$configFile.' is not writable'.PHP_EOL.PHP_EOL; - throw new DeepExitException($error, 3); - } - }//end if - - $phpCodeSnifferConfig = self::getAllConfigData(); - - if ($value === null) { - if (isset($phpCodeSnifferConfig[$key]) === true) { - unset($phpCodeSnifferConfig[$key]); - } - } else { - $phpCodeSnifferConfig[$key] = $value; - } - - if ($temp === false) { - $output = '<'.'?php'."\n".' $phpCodeSnifferConfig = '; - $output .= var_export($phpCodeSnifferConfig, true); - $output .= ";\n?".'>'; - - if (file_put_contents($configFile, $output) === false) { - $error = 'ERROR: Config file '.$configFile.' could not be written'.PHP_EOL.PHP_EOL; - throw new DeepExitException($error, 3); - } - - self::$configDataFile = $configFile; - } - - self::$configData = $phpCodeSnifferConfig; - - // If the installed paths are being set, make sure all known - // standards paths are added to the autoloader. - if ($key === 'installed_paths') { - $installedStandards = Standards::getInstalledStandardDetails(); - foreach ($installedStandards as $details) { - Autoload::addSearchPath($details['path'], $details['namespace']); - } - } - - return true; - - }//end setConfigData() - - - /** - * Get all config data. - * - * @return array - * @see getConfigData() - * @throws \PHP_CodeSniffer\Exceptions\DeepExitException If the config file could not be read. - */ - public static function getAllConfigData() - { - if (self::$configData !== null) { - return self::$configData; - } - - $path = ''; - if (is_callable('\Phar::running') === true) { - $path = Phar::running(false); - } - - if ($path !== '') { - $configFile = dirname($path).DIRECTORY_SEPARATOR.'CodeSniffer.conf'; - } else { - $configFile = dirname(__DIR__).DIRECTORY_SEPARATOR.'CodeSniffer.conf'; - if (is_file($configFile) === false - && strpos('@data_dir@', '@data_dir') === false - ) { - $configFile = '@data_dir@/PHP_CodeSniffer/CodeSniffer.conf'; - } - } - - if (is_file($configFile) === false) { - self::$configData = []; - return []; - } - - if (Common::isReadable($configFile) === false) { - $error = 'ERROR: Config file '.$configFile.' is not readable'.PHP_EOL.PHP_EOL; - throw new DeepExitException($error, 3); - } - - include $configFile; - self::$configDataFile = $configFile; - self::$configData = $phpCodeSnifferConfig; - return self::$configData; - - }//end getAllConfigData() - - - /** - * Prints out the gathered config data. - * - * @param array $data The config data to print. - * - * @return void - */ - public function printConfigData($data) - { - $max = 0; - $keys = array_keys($data); - foreach ($keys as $key) { - $len = strlen($key); - if (strlen($key) > $max) { - $max = $len; - } - } - - if ($max === 0) { - return; - } - - $max += 2; - ksort($data); - foreach ($data as $name => $value) { - echo str_pad($name.': ', $max).$value.PHP_EOL; - } - - }//end printConfigData() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Exceptions/DeepExitException.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Exceptions/DeepExitException.php deleted file mode 100644 index 6943e033..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Exceptions/DeepExitException.php +++ /dev/null @@ -1,20 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Exceptions; - -use Exception; - -class DeepExitException extends Exception -{ - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Exceptions/RuntimeException.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Exceptions/RuntimeException.php deleted file mode 100644 index 25eacd0b..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Exceptions/RuntimeException.php +++ /dev/null @@ -1,17 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Exceptions; - -use RuntimeException as PHPRuntimeException; - -class RuntimeException extends PHPRuntimeException -{ - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Exceptions/TokenizerException.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Exceptions/TokenizerException.php deleted file mode 100644 index 1cf53d62..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Exceptions/TokenizerException.php +++ /dev/null @@ -1,17 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Exceptions; - -use Exception; - -class TokenizerException extends Exception -{ - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Files/DummyFile.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Files/DummyFile.php deleted file mode 100644 index f5dc7cc7..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Files/DummyFile.php +++ /dev/null @@ -1,82 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Files; - -use PHP_CodeSniffer\Config; -use PHP_CodeSniffer\Ruleset; - -class DummyFile extends File -{ - - - /** - * Creates a DummyFile object and sets the content. - * - * @param string $content The content of the file. - * @param \PHP_CodeSniffer\Ruleset $ruleset The ruleset used for the run. - * @param \PHP_CodeSniffer\Config $config The config data for the run. - * - * @return void - */ - public function __construct($content, Ruleset $ruleset, Config $config) - { - $this->setContent($content); - - // See if a filename was defined in the content. - // This is done by including: phpcs_input_file: [file path] - // as the first line of content. - $path = 'STDIN'; - if ($content !== '') { - if (substr($content, 0, 17) === 'phpcs_input_file:') { - $eolPos = strpos($content, $this->eolChar); - $filename = trim(substr($content, 17, ($eolPos - 17))); - $content = substr($content, ($eolPos + strlen($this->eolChar))); - $path = $filename; - - $this->setContent($content); - } - } - - // The CLI arg overrides anything passed in the content. - if ($config->stdinPath !== null) { - $path = $config->stdinPath; - } - - parent::__construct($path, $ruleset, $config); - - }//end __construct() - - - /** - * Set the error, warning, and fixable counts for the file. - * - * @param int $errorCount The number of errors found. - * @param int $warningCount The number of warnings found. - * @param int $fixableCount The number of fixable errors found. - * @param int $fixedCount The number of errors that were fixed. - * - * @return void - */ - public function setErrorCounts($errorCount, $warningCount, $fixableCount, $fixedCount) - { - $this->errorCount = $errorCount; - $this->warningCount = $warningCount; - $this->fixableCount = $fixableCount; - $this->fixedCount = $fixedCount; - - }//end setErrorCounts() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Files/File.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Files/File.php deleted file mode 100644 index 29b15c0e..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Files/File.php +++ /dev/null @@ -1,2954 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Files; - -use PHP_CodeSniffer\Config; -use PHP_CodeSniffer\Exceptions\RuntimeException; -use PHP_CodeSniffer\Exceptions\TokenizerException; -use PHP_CodeSniffer\Fixer; -use PHP_CodeSniffer\Ruleset; -use PHP_CodeSniffer\Util\Common; -use PHP_CodeSniffer\Util\Tokens; - -class File -{ - - /** - * The absolute path to the file associated with this object. - * - * @var string - */ - public $path = ''; - - /** - * The content of the file. - * - * @var string - */ - protected $content = ''; - - /** - * The config data for the run. - * - * @var \PHP_CodeSniffer\Config - */ - public $config = null; - - /** - * The ruleset used for the run. - * - * @var \PHP_CodeSniffer\Ruleset - */ - public $ruleset = null; - - /** - * If TRUE, the entire file is being ignored. - * - * @var boolean - */ - public $ignored = false; - - /** - * The EOL character this file uses. - * - * @var string - */ - public $eolChar = ''; - - /** - * The Fixer object to control fixing errors. - * - * @var \PHP_CodeSniffer\Fixer - */ - public $fixer = null; - - /** - * The tokenizer being used for this file. - * - * @var \PHP_CodeSniffer\Tokenizers\Tokenizer - */ - public $tokenizer = null; - - /** - * The name of the tokenizer being used for this file. - * - * @var string - */ - public $tokenizerType = 'PHP'; - - /** - * Was the file loaded from cache? - * - * If TRUE, the file was loaded from a local cache. - * If FALSE, the file was tokenized and processed fully. - * - * @var boolean - */ - public $fromCache = false; - - /** - * The number of tokens in this file. - * - * Stored here to save calling count() everywhere. - * - * @var integer - */ - public $numTokens = 0; - - /** - * The tokens stack map. - * - * @var array - */ - protected $tokens = []; - - /** - * The errors raised from sniffs. - * - * @var array - * @see getErrors() - */ - protected $errors = []; - - /** - * The warnings raised from sniffs. - * - * @var array - * @see getWarnings() - */ - protected $warnings = []; - - /** - * The metrics recorded by sniffs. - * - * @var array - * @see getMetrics() - */ - protected $metrics = []; - - /** - * The metrics recorded for each token. - * - * Stops the same metric being recorded for the same token twice. - * - * @var array - * @see getMetrics() - */ - private $metricTokens = []; - - /** - * The total number of errors raised. - * - * @var integer - */ - protected $errorCount = 0; - - /** - * The total number of warnings raised. - * - * @var integer - */ - protected $warningCount = 0; - - /** - * The total number of errors and warnings that can be fixed. - * - * @var integer - */ - protected $fixableCount = 0; - - /** - * The total number of errors and warnings that were fixed. - * - * @var integer - */ - protected $fixedCount = 0; - - /** - * TRUE if errors are being replayed from the cache. - * - * @var boolean - */ - protected $replayingErrors = false; - - /** - * An array of sniffs that are being ignored. - * - * @var array - */ - protected $ignoredListeners = []; - - /** - * An array of message codes that are being ignored. - * - * @var array - */ - protected $ignoredCodes = []; - - /** - * An array of sniffs listening to this file's processing. - * - * @var \PHP_CodeSniffer\Sniffs\Sniff[] - */ - protected $listeners = []; - - /** - * The class name of the sniff currently processing the file. - * - * @var string - */ - protected $activeListener = ''; - - /** - * An array of sniffs being processed and how long they took. - * - * @var array - * @see getListenerTimes() - */ - protected $listenerTimes = []; - - /** - * A cache of often used config settings to improve performance. - * - * Storing them here saves 10k+ calls to __get() in the Config class. - * - * @var array - */ - protected $configCache = []; - - - /** - * Constructs a file. - * - * @param string $path The absolute path to the file to process. - * @param \PHP_CodeSniffer\Ruleset $ruleset The ruleset used for the run. - * @param \PHP_CodeSniffer\Config $config The config data for the run. - * - * @return void - */ - public function __construct($path, Ruleset $ruleset, Config $config) - { - $this->path = $path; - $this->ruleset = $ruleset; - $this->config = $config; - $this->fixer = new Fixer(); - - $parts = explode('.', $path); - $extension = array_pop($parts); - if (isset($config->extensions[$extension]) === true) { - $this->tokenizerType = $config->extensions[$extension]; - } else { - // Revert to default. - $this->tokenizerType = 'PHP'; - } - - $this->configCache['cache'] = $this->config->cache; - $this->configCache['sniffs'] = array_map('strtolower', $this->config->sniffs); - $this->configCache['exclude'] = array_map('strtolower', $this->config->exclude); - $this->configCache['errorSeverity'] = $this->config->errorSeverity; - $this->configCache['warningSeverity'] = $this->config->warningSeverity; - $this->configCache['recordErrors'] = $this->config->recordErrors; - $this->configCache['trackTime'] = $this->config->trackTime; - $this->configCache['ignorePatterns'] = $this->ruleset->ignorePatterns; - $this->configCache['includePatterns'] = $this->ruleset->includePatterns; - - }//end __construct() - - - /** - * Set the content of the file. - * - * Setting the content also calculates the EOL char being used. - * - * @param string $content The file content. - * - * @return void - */ - public function setContent($content) - { - $this->content = $content; - $this->tokens = []; - - try { - $this->eolChar = Common::detectLineEndings($content); - } catch (RuntimeException $e) { - $this->addWarningOnLine($e->getMessage(), 1, 'Internal.DetectLineEndings'); - return; - } - - }//end setContent() - - - /** - * Reloads the content of the file. - * - * By default, we have no idea where our content comes from, - * so we can't do anything. - * - * @return void - */ - public function reloadContent() - { - - }//end reloadContent() - - - /** - * Disables caching of this file. - * - * @return void - */ - public function disableCaching() - { - $this->configCache['cache'] = false; - - }//end disableCaching() - - - /** - * Starts the stack traversal and tells listeners when tokens are found. - * - * @return void - */ - public function process() - { - if ($this->ignored === true) { - return; - } - - $this->errors = []; - $this->warnings = []; - $this->errorCount = 0; - $this->warningCount = 0; - $this->fixableCount = 0; - - $this->parse(); - - // Check if tokenizer errors cause this file to be ignored. - if ($this->ignored === true) { - return; - } - - $this->fixer->startFile($this); - - if (PHP_CODESNIFFER_VERBOSITY > 2) { - echo "\t*** START TOKEN PROCESSING ***".PHP_EOL; - } - - $foundCode = false; - $listenerIgnoreTo = []; - $inTests = defined('PHP_CODESNIFFER_IN_TESTS'); - $checkAnnotations = $this->config->annotations; - $annotationErrors = []; - - // Foreach of the listeners that have registered to listen for this - // token, get them to process it. - foreach ($this->tokens as $stackPtr => $token) { - // Check for ignored lines. - if ($checkAnnotations === true - && ($token['code'] === T_COMMENT - || $token['code'] === T_PHPCS_IGNORE_FILE - || $token['code'] === T_PHPCS_SET - || $token['code'] === T_DOC_COMMENT_STRING - || $token['code'] === T_DOC_COMMENT_TAG - || ($inTests === true && $token['code'] === T_INLINE_HTML)) - ) { - $commentText = ltrim($this->tokens[$stackPtr]['content'], " \t/*#"); - $commentTextLower = strtolower($commentText); - if (strpos($commentText, '@codingStandards') !== false) { - if (strpos($commentText, '@codingStandardsIgnoreFile') !== false) { - // Ignoring the whole file, just a little late. - $this->errors = []; - $this->warnings = []; - $this->errorCount = 0; - $this->warningCount = 0; - $this->fixableCount = 0; - return; - } else if (strpos($commentText, '@codingStandardsChangeSetting') !== false) { - $start = strpos($commentText, '@codingStandardsChangeSetting'); - $comment = substr($commentText, ($start + 30)); - $parts = explode(' ', $comment); - if (count($parts) >= 2) { - $sniffParts = explode('.', $parts[0]); - if (count($sniffParts) >= 3) { - // If the sniff code is not known to us, it has not been registered in this run. - // But don't throw an error as it could be there for a different standard to use. - if (isset($this->ruleset->sniffCodes[$parts[0]]) === true) { - $listenerCode = array_shift($parts); - $propertyCode = array_shift($parts); - $settings = [ - 'value' => rtrim(implode(' ', $parts), " */\r\n"), - 'scope' => 'sniff', - ]; - $listenerClass = $this->ruleset->sniffCodes[$listenerCode]; - $this->ruleset->setSniffProperty($listenerClass, $propertyCode, $settings); - } - } - } - }//end if - } else if (substr($commentTextLower, 0, 16) === 'phpcs:ignorefile' - || substr($commentTextLower, 0, 17) === '@phpcs:ignorefile' - ) { - // Ignoring the whole file, just a little late. - $this->errors = []; - $this->warnings = []; - $this->errorCount = 0; - $this->warningCount = 0; - $this->fixableCount = 0; - return; - } else if (substr($commentTextLower, 0, 9) === 'phpcs:set' - || substr($commentTextLower, 0, 10) === '@phpcs:set' - ) { - if (isset($token['sniffCode']) === true) { - $listenerCode = $token['sniffCode']; - if (isset($this->ruleset->sniffCodes[$listenerCode]) === true) { - $propertyCode = $token['sniffProperty']; - $settings = [ - 'value' => $token['sniffPropertyValue'], - 'scope' => 'sniff', - ]; - $listenerClass = $this->ruleset->sniffCodes[$listenerCode]; - try { - $this->ruleset->setSniffProperty($listenerClass, $propertyCode, $settings); - } catch (RuntimeException $e) { - // Non-existant property being set via an inline annotation. - // This is typically a PHPCS test case file, but we can't throw an error on the annotation - // line as it would get ignored. We also don't want this error to block - // the scan of the current file, so collect these and throw later. - $annotationErrors[] = 'Line '.$token['line'].': '.str_replace('Ruleset invalid. ', '', $e->getMessage()); - } - } - } - }//end if - }//end if - - if (PHP_CODESNIFFER_VERBOSITY > 2) { - $type = $token['type']; - $content = Common::prepareForOutput($token['content']); - echo "\t\tProcess token $stackPtr: $type => $content".PHP_EOL; - } - - if ($token['code'] !== T_INLINE_HTML) { - $foundCode = true; - } - - if (isset($this->ruleset->tokenListeners[$token['code']]) === false) { - continue; - } - - foreach ($this->ruleset->tokenListeners[$token['code']] as $listenerData) { - if (isset($this->ignoredListeners[$listenerData['class']]) === true - || (isset($listenerIgnoreTo[$listenerData['class']]) === true - && $listenerIgnoreTo[$listenerData['class']] > $stackPtr) - ) { - // This sniff is ignoring past this token, or the whole file. - continue; - } - - // Make sure this sniff supports the tokenizer - // we are currently using. - $class = $listenerData['class']; - - if (isset($listenerData['tokenizers'][$this->tokenizerType]) === false) { - continue; - } - - if (trim($this->path, '\'"') !== 'STDIN') { - // If the file path matches one of our ignore patterns, skip it. - // While there is support for a type of each pattern - // (absolute or relative) we don't actually support it here. - foreach ($listenerData['ignore'] as $pattern) { - // We assume a / directory separator, as do the exclude rules - // most developers write, so we need a special case for any system - // that is different. - if (DIRECTORY_SEPARATOR === '\\') { - $pattern = str_replace('/', '\\\\', $pattern); - } - - $pattern = '`'.$pattern.'`i'; - if (preg_match($pattern, $this->path) === 1) { - $this->ignoredListeners[$class] = true; - continue(2); - } - } - - // If the file path does not match one of our include patterns, skip it. - // While there is support for a type of each pattern - // (absolute or relative) we don't actually support it here. - if (empty($listenerData['include']) === false) { - $included = false; - foreach ($listenerData['include'] as $pattern) { - // We assume a / directory separator, as do the exclude rules - // most developers write, so we need a special case for any system - // that is different. - if (DIRECTORY_SEPARATOR === '\\') { - $pattern = str_replace('/', '\\\\', $pattern); - } - - $pattern = '`'.$pattern.'`i'; - if (preg_match($pattern, $this->path) === 1) { - $included = true; - break; - } - } - - if ($included === false) { - $this->ignoredListeners[$class] = true; - continue; - } - }//end if - }//end if - - $this->activeListener = $class; - - if ($this->configCache['trackTime'] === true) { - $startTime = microtime(true); - } - - if (PHP_CODESNIFFER_VERBOSITY > 2) { - echo "\t\t\tProcessing ".$this->activeListener.'... '; - } - - $ignoreTo = $this->ruleset->sniffs[$class]->process($this, $stackPtr); - if ($ignoreTo !== null) { - $listenerIgnoreTo[$this->activeListener] = $ignoreTo; - } - - if ($this->configCache['trackTime'] === true) { - $timeTaken = (microtime(true) - $startTime); - if (isset($this->listenerTimes[$this->activeListener]) === false) { - $this->listenerTimes[$this->activeListener] = 0; - } - - $this->listenerTimes[$this->activeListener] += $timeTaken; - } - - if (PHP_CODESNIFFER_VERBOSITY > 2) { - $timeTaken = round(($timeTaken), 4); - echo "DONE in $timeTaken seconds".PHP_EOL; - } - - $this->activeListener = ''; - }//end foreach - }//end foreach - - // If short open tags are off but the file being checked uses - // short open tags, the whole content will be inline HTML - // and nothing will be checked. So try and handle this case. - // We don't show this error for STDIN because we can't be sure the content - // actually came directly from the user. It could be something like - // refs from a Git pre-push hook. - if ($foundCode === false && $this->tokenizerType === 'PHP' && $this->path !== 'STDIN') { - $shortTags = (bool) ini_get('short_open_tag'); - if ($shortTags === false) { - $error = 'No PHP code was found in this file and short open tags are not allowed by this install of PHP. This file may be using short open tags but PHP does not allow them.'; - $this->addWarning($error, null, 'Internal.NoCodeFound'); - } - } - - if ($annotationErrors !== []) { - $error = 'Encountered invalid inline phpcs:set annotations. Found:'.PHP_EOL; - $error .= implode(PHP_EOL, $annotationErrors); - - $this->addWarning($error, null, 'Internal.PropertyDoesNotExist'); - } - - if (PHP_CODESNIFFER_VERBOSITY > 2) { - echo "\t*** END TOKEN PROCESSING ***".PHP_EOL; - echo "\t*** START SNIFF PROCESSING REPORT ***".PHP_EOL; - - arsort($this->listenerTimes, SORT_NUMERIC); - foreach ($this->listenerTimes as $listener => $timeTaken) { - echo "\t$listener: ".round(($timeTaken), 4).' secs'.PHP_EOL; - } - - echo "\t*** END SNIFF PROCESSING REPORT ***".PHP_EOL; - } - - $this->fixedCount += $this->fixer->getFixCount(); - - }//end process() - - - /** - * Tokenizes the file and prepares it for the test run. - * - * @return void - */ - public function parse() - { - if (empty($this->tokens) === false) { - // File has already been parsed. - return; - } - - try { - $tokenizerClass = 'PHP_CodeSniffer\Tokenizers\\'.$this->tokenizerType; - $this->tokenizer = new $tokenizerClass($this->content, $this->config, $this->eolChar); - $this->tokens = $this->tokenizer->getTokens(); - } catch (TokenizerException $e) { - $this->ignored = true; - $this->addWarning($e->getMessage(), null, 'Internal.Tokenizer.Exception'); - if (PHP_CODESNIFFER_VERBOSITY > 0) { - echo "[$this->tokenizerType => tokenizer error]... "; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo PHP_EOL; - } - } - - return; - } - - $this->numTokens = count($this->tokens); - - // Check for mixed line endings as these can cause tokenizer errors and we - // should let the user know that the results they get may be incorrect. - // This is done by removing all backslashes, removing the newline char we - // detected, then converting newlines chars into text. If any backslashes - // are left at the end, we have additional newline chars in use. - $contents = str_replace('\\', '', $this->content); - $contents = str_replace($this->eolChar, '', $contents); - $contents = str_replace("\n", '\n', $contents); - $contents = str_replace("\r", '\r', $contents); - if (strpos($contents, '\\') !== false) { - $error = 'File has mixed line endings; this may cause incorrect results'; - $this->addWarningOnLine($error, 1, 'Internal.LineEndings.Mixed'); - } - - if (PHP_CODESNIFFER_VERBOSITY > 0) { - if ($this->numTokens === 0) { - $numLines = 0; - } else { - $numLines = $this->tokens[($this->numTokens - 1)]['line']; - } - - echo "[$this->tokenizerType => $this->numTokens tokens in $numLines lines]... "; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo PHP_EOL; - } - } - - }//end parse() - - - /** - * Returns the token stack for this file. - * - * @return array - */ - public function getTokens() - { - return $this->tokens; - - }//end getTokens() - - - /** - * Remove vars stored in this file that are no longer required. - * - * @return void - */ - public function cleanUp() - { - $this->listenerTimes = null; - $this->content = null; - $this->tokens = null; - $this->metricTokens = null; - $this->tokenizer = null; - $this->fixer = null; - $this->config = null; - $this->ruleset = null; - - }//end cleanUp() - - - /** - * Records an error against a specific token in the file. - * - * @param string $error The error message. - * @param int $stackPtr The stack position where the error occurred. - * @param string $code A violation code unique to the sniff message. - * @param array $data Replacements for the error message. - * @param int $severity The severity level for this error. A value of 0 - * will be converted into the default severity level. - * @param boolean $fixable Can the error be fixed by the sniff? - * - * @return boolean - */ - public function addError( - $error, - $stackPtr, - $code, - $data=[], - $severity=0, - $fixable=false - ) { - if ($stackPtr === null) { - $line = 1; - $column = 1; - } else { - $line = $this->tokens[$stackPtr]['line']; - $column = $this->tokens[$stackPtr]['column']; - } - - return $this->addMessage(true, $error, $line, $column, $code, $data, $severity, $fixable); - - }//end addError() - - - /** - * Records a warning against a specific token in the file. - * - * @param string $warning The error message. - * @param int $stackPtr The stack position where the error occurred. - * @param string $code A violation code unique to the sniff message. - * @param array $data Replacements for the warning message. - * @param int $severity The severity level for this warning. A value of 0 - * will be converted into the default severity level. - * @param boolean $fixable Can the warning be fixed by the sniff? - * - * @return boolean - */ - public function addWarning( - $warning, - $stackPtr, - $code, - $data=[], - $severity=0, - $fixable=false - ) { - if ($stackPtr === null) { - $line = 1; - $column = 1; - } else { - $line = $this->tokens[$stackPtr]['line']; - $column = $this->tokens[$stackPtr]['column']; - } - - return $this->addMessage(false, $warning, $line, $column, $code, $data, $severity, $fixable); - - }//end addWarning() - - - /** - * Records an error against a specific line in the file. - * - * @param string $error The error message. - * @param int $line The line on which the error occurred. - * @param string $code A violation code unique to the sniff message. - * @param array $data Replacements for the error message. - * @param int $severity The severity level for this error. A value of 0 - * will be converted into the default severity level. - * - * @return boolean - */ - public function addErrorOnLine( - $error, - $line, - $code, - $data=[], - $severity=0 - ) { - return $this->addMessage(true, $error, $line, 1, $code, $data, $severity, false); - - }//end addErrorOnLine() - - - /** - * Records a warning against a specific line in the file. - * - * @param string $warning The error message. - * @param int $line The line on which the warning occurred. - * @param string $code A violation code unique to the sniff message. - * @param array $data Replacements for the warning message. - * @param int $severity The severity level for this warning. A value of 0 will - * will be converted into the default severity level. - * - * @return boolean - */ - public function addWarningOnLine( - $warning, - $line, - $code, - $data=[], - $severity=0 - ) { - return $this->addMessage(false, $warning, $line, 1, $code, $data, $severity, false); - - }//end addWarningOnLine() - - - /** - * Records a fixable error against a specific token in the file. - * - * Returns true if the error was recorded and should be fixed. - * - * @param string $error The error message. - * @param int $stackPtr The stack position where the error occurred. - * @param string $code A violation code unique to the sniff message. - * @param array $data Replacements for the error message. - * @param int $severity The severity level for this error. A value of 0 - * will be converted into the default severity level. - * - * @return boolean - */ - public function addFixableError( - $error, - $stackPtr, - $code, - $data=[], - $severity=0 - ) { - $recorded = $this->addError($error, $stackPtr, $code, $data, $severity, true); - if ($recorded === true && $this->fixer->enabled === true) { - return true; - } - - return false; - - }//end addFixableError() - - - /** - * Records a fixable warning against a specific token in the file. - * - * Returns true if the warning was recorded and should be fixed. - * - * @param string $warning The error message. - * @param int $stackPtr The stack position where the error occurred. - * @param string $code A violation code unique to the sniff message. - * @param array $data Replacements for the warning message. - * @param int $severity The severity level for this warning. A value of 0 - * will be converted into the default severity level. - * - * @return boolean - */ - public function addFixableWarning( - $warning, - $stackPtr, - $code, - $data=[], - $severity=0 - ) { - $recorded = $this->addWarning($warning, $stackPtr, $code, $data, $severity, true); - if ($recorded === true && $this->fixer->enabled === true) { - return true; - } - - return false; - - }//end addFixableWarning() - - - /** - * Adds an error to the error stack. - * - * @param boolean $error Is this an error message? - * @param string $message The text of the message. - * @param int $line The line on which the message occurred. - * @param int $column The column at which the message occurred. - * @param string $code A violation code unique to the sniff message. - * @param array $data Replacements for the message. - * @param int $severity The severity level for this message. A value of 0 - * will be converted into the default severity level. - * @param boolean $fixable Can the problem be fixed by the sniff? - * - * @return boolean - */ - protected function addMessage($error, $message, $line, $column, $code, $data, $severity, $fixable) - { - // Check if this line is ignoring all message codes. - if (isset($this->tokenizer->ignoredLines[$line]['.all']) === true) { - return false; - } - - // Work out which sniff generated the message. - $parts = explode('.', $code); - if ($parts[0] === 'Internal') { - // An internal message. - $listenerCode = ''; - if ($this->activeListener !== '') { - $listenerCode = Common::getSniffCode($this->activeListener); - } - - $sniffCode = $code; - $checkCodes = [$sniffCode]; - } else { - if ($parts[0] !== $code) { - // The full message code has been passed in. - $sniffCode = $code; - $listenerCode = substr($sniffCode, 0, strrpos($sniffCode, '.')); - } else { - $listenerCode = Common::getSniffCode($this->activeListener); - $sniffCode = $listenerCode.'.'.$code; - $parts = explode('.', $sniffCode); - } - - $checkCodes = [ - $sniffCode, - $parts[0].'.'.$parts[1].'.'.$parts[2], - $parts[0].'.'.$parts[1], - $parts[0], - ]; - }//end if - - if (isset($this->tokenizer->ignoredLines[$line]) === true) { - // Check if this line is ignoring this specific message. - $ignored = false; - foreach ($checkCodes as $checkCode) { - if (isset($this->tokenizer->ignoredLines[$line][$checkCode]) === true) { - $ignored = true; - break; - } - } - - // If it is ignored, make sure there is no exception in place. - if ($ignored === true - && isset($this->tokenizer->ignoredLines[$line]['.except']) === true - ) { - foreach ($checkCodes as $checkCode) { - if (isset($this->tokenizer->ignoredLines[$line]['.except'][$checkCode]) === true) { - $ignored = false; - break; - } - } - } - - if ($ignored === true) { - return false; - } - }//end if - - $includeAll = true; - if ($this->configCache['cache'] === false - || $this->configCache['recordErrors'] === false - ) { - $includeAll = false; - } - - // Filter out any messages for sniffs that shouldn't have run - // due to the use of the --sniffs command line argument. - if ($includeAll === false - && ((empty($this->configCache['sniffs']) === false - && in_array(strtolower($listenerCode), $this->configCache['sniffs'], true) === false) - || (empty($this->configCache['exclude']) === false - && in_array(strtolower($listenerCode), $this->configCache['exclude'], true) === true)) - ) { - return false; - } - - // If we know this sniff code is being ignored for this file, return early. - foreach ($checkCodes as $checkCode) { - if (isset($this->ignoredCodes[$checkCode]) === true) { - return false; - } - } - - $oppositeType = 'warning'; - if ($error === false) { - $oppositeType = 'error'; - } - - foreach ($checkCodes as $checkCode) { - // Make sure this message type has not been set to the opposite message type. - if (isset($this->ruleset->ruleset[$checkCode]['type']) === true - && $this->ruleset->ruleset[$checkCode]['type'] === $oppositeType - ) { - $error = !$error; - break; - } - } - - if ($error === true) { - $configSeverity = $this->configCache['errorSeverity']; - $messageCount = &$this->errorCount; - $messages = &$this->errors; - } else { - $configSeverity = $this->configCache['warningSeverity']; - $messageCount = &$this->warningCount; - $messages = &$this->warnings; - } - - if ($includeAll === false && $configSeverity === 0) { - // Don't bother doing any processing as these messages are just going to - // be hidden in the reports anyway. - return false; - } - - if ($severity === 0) { - $severity = 5; - } - - foreach ($checkCodes as $checkCode) { - // Make sure we are interested in this severity level. - if (isset($this->ruleset->ruleset[$checkCode]['severity']) === true) { - $severity = $this->ruleset->ruleset[$checkCode]['severity']; - break; - } - } - - if ($includeAll === false && $configSeverity > $severity) { - return false; - } - - // Make sure we are not ignoring this file. - $included = null; - if (trim($this->path, '\'"') === 'STDIN') { - $included = true; - } else { - foreach ($checkCodes as $checkCode) { - $patterns = null; - - if (isset($this->configCache['includePatterns'][$checkCode]) === true) { - $patterns = $this->configCache['includePatterns'][$checkCode]; - $excluding = false; - } else if (isset($this->configCache['ignorePatterns'][$checkCode]) === true) { - $patterns = $this->configCache['ignorePatterns'][$checkCode]; - $excluding = true; - } - - if ($patterns === null) { - continue; - } - - foreach ($patterns as $pattern => $type) { - // While there is support for a type of each pattern - // (absolute or relative) we don't actually support it here. - $replacements = [ - '\\,' => ',', - '*' => '.*', - ]; - - // We assume a / directory separator, as do the exclude rules - // most developers write, so we need a special case for any system - // that is different. - if (DIRECTORY_SEPARATOR === '\\') { - $replacements['/'] = '\\\\'; - } - - $pattern = '`'.strtr($pattern, $replacements).'`i'; - $matched = preg_match($pattern, $this->path); - - if ($matched === 0) { - if ($excluding === false && $included === null) { - // This file path is not being included. - $included = false; - } - - continue; - } - - if ($excluding === true) { - // This file path is being excluded. - $this->ignoredCodes[$checkCode] = true; - return false; - } - - // This file path is being included. - $included = true; - break; - }//end foreach - }//end foreach - }//end if - - if ($included === false) { - // There were include rules set, but this file - // path didn't match any of them. - return false; - } - - $messageCount++; - if ($fixable === true) { - $this->fixableCount++; - } - - if ($this->configCache['recordErrors'] === false - && $includeAll === false - ) { - return true; - } - - // See if there is a custom error message format to use. - // But don't do this if we are replaying errors because replayed - // errors have already used the custom format and have had their - // data replaced. - if ($this->replayingErrors === false - && isset($this->ruleset->ruleset[$sniffCode]['message']) === true - ) { - $message = $this->ruleset->ruleset[$sniffCode]['message']; - } - - if (empty($data) === false) { - $message = vsprintf($message, $data); - } - - if (isset($messages[$line]) === false) { - $messages[$line] = []; - } - - if (isset($messages[$line][$column]) === false) { - $messages[$line][$column] = []; - } - - $messages[$line][$column][] = [ - 'message' => $message, - 'source' => $sniffCode, - 'listener' => $this->activeListener, - 'severity' => $severity, - 'fixable' => $fixable, - ]; - - if (PHP_CODESNIFFER_VERBOSITY > 1 - && $this->fixer->enabled === true - && $fixable === true - ) { - @ob_end_clean(); - echo "\tE: [Line $line] $message ($sniffCode)".PHP_EOL; - ob_start(); - } - - return true; - - }//end addMessage() - - - /** - * Record a metric about the file being examined. - * - * @param int $stackPtr The stack position where the metric was recorded. - * @param string $metric The name of the metric being recorded. - * @param string $value The value of the metric being recorded. - * - * @return boolean - */ - public function recordMetric($stackPtr, $metric, $value) - { - if (isset($this->metrics[$metric]) === false) { - $this->metrics[$metric] = ['values' => [$value => 1]]; - $this->metricTokens[$metric][$stackPtr] = true; - } else if (isset($this->metricTokens[$metric][$stackPtr]) === false) { - $this->metricTokens[$metric][$stackPtr] = true; - if (isset($this->metrics[$metric]['values'][$value]) === false) { - $this->metrics[$metric]['values'][$value] = 1; - } else { - $this->metrics[$metric]['values'][$value]++; - } - } - - return true; - - }//end recordMetric() - - - /** - * Returns the number of errors raised. - * - * @return int - */ - public function getErrorCount() - { - return $this->errorCount; - - }//end getErrorCount() - - - /** - * Returns the number of warnings raised. - * - * @return int - */ - public function getWarningCount() - { - return $this->warningCount; - - }//end getWarningCount() - - - /** - * Returns the number of fixable errors/warnings raised. - * - * @return int - */ - public function getFixableCount() - { - return $this->fixableCount; - - }//end getFixableCount() - - - /** - * Returns the number of fixed errors/warnings. - * - * @return int - */ - public function getFixedCount() - { - return $this->fixedCount; - - }//end getFixedCount() - - - /** - * Returns the list of ignored lines. - * - * @return array - */ - public function getIgnoredLines() - { - return $this->tokenizer->ignoredLines; - - }//end getIgnoredLines() - - - /** - * Returns the errors raised from processing this file. - * - * @return array - */ - public function getErrors() - { - return $this->errors; - - }//end getErrors() - - - /** - * Returns the warnings raised from processing this file. - * - * @return array - */ - public function getWarnings() - { - return $this->warnings; - - }//end getWarnings() - - - /** - * Returns the metrics found while processing this file. - * - * @return array - */ - public function getMetrics() - { - return $this->metrics; - - }//end getMetrics() - - - /** - * Returns the time taken processing this file for each invoked sniff. - * - * @return array - */ - public function getListenerTimes() - { - return $this->listenerTimes; - - }//end getListenerTimes() - - - /** - * Returns the absolute filename of this file. - * - * @return string - */ - public function getFilename() - { - return $this->path; - - }//end getFilename() - - - /** - * Returns the declaration name for classes, interfaces, traits, enums, and functions. - * - * @param int $stackPtr The position of the declaration token which - * declared the class, interface, trait, or function. - * - * @return string|null The name of the class, interface, trait, or function; - * or NULL if the function or class is anonymous. - * @throws \PHP_CodeSniffer\Exceptions\RuntimeException If the specified token is not of type - * T_FUNCTION, T_CLASS, T_ANON_CLASS, - * T_CLOSURE, T_TRAIT, T_ENUM, or T_INTERFACE. - */ - public function getDeclarationName($stackPtr) - { - $tokenCode = $this->tokens[$stackPtr]['code']; - - if ($tokenCode === T_ANON_CLASS || $tokenCode === T_CLOSURE) { - return null; - } - - if ($tokenCode !== T_FUNCTION - && $tokenCode !== T_CLASS - && $tokenCode !== T_INTERFACE - && $tokenCode !== T_TRAIT - && $tokenCode !== T_ENUM - ) { - throw new RuntimeException('Token type "'.$this->tokens[$stackPtr]['type'].'" is not T_FUNCTION, T_CLASS, T_INTERFACE, T_TRAIT or T_ENUM'); - } - - if ($tokenCode === T_FUNCTION - && strtolower($this->tokens[$stackPtr]['content']) !== 'function' - ) { - // This is a function declared without the "function" keyword. - // So this token is the function name. - return $this->tokens[$stackPtr]['content']; - } - - $content = null; - for ($i = $stackPtr; $i < $this->numTokens; $i++) { - if ($this->tokens[$i]['code'] === T_STRING) { - $content = $this->tokens[$i]['content']; - break; - } - } - - return $content; - - }//end getDeclarationName() - - - /** - * Returns the method parameters for the specified function token. - * - * Also supports passing in a USE token for a closure use group. - * - * Each parameter is in the following format: - * - * - * 0 => array( - * 'name' => string, // The variable name. - * 'token' => integer, // The stack pointer to the variable name. - * 'content' => string, // The full content of the variable definition. - * 'has_attributes' => boolean, // Does the parameter have one or more attributes attached ? - * 'pass_by_reference' => boolean, // Is the variable passed by reference? - * 'reference_token' => integer|false, // The stack pointer to the reference operator - * // or FALSE if the param is not passed by reference. - * 'variable_length' => boolean, // Is the param of variable length through use of `...` ? - * 'variadic_token' => integer|false, // The stack pointer to the ... operator - * // or FALSE if the param is not variable length. - * 'type_hint' => string, // The type hint for the variable. - * 'type_hint_token' => integer|false, // The stack pointer to the start of the type hint - * // or FALSE if there is no type hint. - * 'type_hint_end_token' => integer|false, // The stack pointer to the end of the type hint - * // or FALSE if there is no type hint. - * 'nullable_type' => boolean, // TRUE if the type is preceded by the nullability - * // operator. - * 'comma_token' => integer|false, // The stack pointer to the comma after the param - * // or FALSE if this is the last param. - * ) - * - * - * Parameters with default values have additional array indexes of: - * 'default' => string, // The full content of the default value. - * 'default_token' => integer, // The stack pointer to the start of the default value. - * 'default_equal_token' => integer, // The stack pointer to the equals sign. - * - * Parameters declared using PHP 8 constructor property promotion, have these additional array indexes: - * 'property_visibility' => string, // The property visibility as declared. - * 'visibility_token' => integer|false, // The stack pointer to the visibility modifier token - * // or FALSE if the visibility is not explicitly declared. - * 'property_readonly' => boolean, // TRUE if the readonly keyword was found. - * 'readonly_token' => integer, // The stack pointer to the readonly modifier token. - * // This index will only be set if the property is readonly. - * - * @param int $stackPtr The position in the stack of the function token - * to acquire the parameters for. - * - * @return array - * @throws \PHP_CodeSniffer\Exceptions\RuntimeException If the specified $stackPtr is not of - * type T_FUNCTION, T_CLOSURE, T_USE, - * or T_FN. - */ - public function getMethodParameters($stackPtr) - { - if ($this->tokens[$stackPtr]['code'] !== T_FUNCTION - && $this->tokens[$stackPtr]['code'] !== T_CLOSURE - && $this->tokens[$stackPtr]['code'] !== T_USE - && $this->tokens[$stackPtr]['code'] !== T_FN - ) { - throw new RuntimeException('$stackPtr must be of type T_FUNCTION or T_CLOSURE or T_USE or T_FN'); - } - - if ($this->tokens[$stackPtr]['code'] === T_USE) { - $opener = $this->findNext(T_OPEN_PARENTHESIS, ($stackPtr + 1)); - if ($opener === false || isset($this->tokens[$opener]['parenthesis_owner']) === true) { - throw new RuntimeException('$stackPtr was not a valid T_USE'); - } - } else { - if (isset($this->tokens[$stackPtr]['parenthesis_opener']) === false) { - // Live coding or syntax error, so no params to find. - return []; - } - - $opener = $this->tokens[$stackPtr]['parenthesis_opener']; - } - - if (isset($this->tokens[$opener]['parenthesis_closer']) === false) { - // Live coding or syntax error, so no params to find. - return []; - } - - $closer = $this->tokens[$opener]['parenthesis_closer']; - - $vars = []; - $currVar = null; - $paramStart = ($opener + 1); - $defaultStart = null; - $equalToken = null; - $paramCount = 0; - $hasAttributes = false; - $passByReference = false; - $referenceToken = false; - $variableLength = false; - $variadicToken = false; - $typeHint = ''; - $typeHintToken = false; - $typeHintEndToken = false; - $nullableType = false; - $visibilityToken = null; - $readonlyToken = null; - - for ($i = $paramStart; $i <= $closer; $i++) { - // Check to see if this token has a parenthesis or bracket opener. If it does - // it's likely to be an array which might have arguments in it. This - // could cause problems in our parsing below, so lets just skip to the - // end of it. - if ($this->tokens[$i]['code'] !== T_TYPE_OPEN_PARENTHESIS - && isset($this->tokens[$i]['parenthesis_opener']) === true - ) { - // Don't do this if it's the close parenthesis for the method. - if ($i !== $this->tokens[$i]['parenthesis_closer']) { - $i = $this->tokens[$i]['parenthesis_closer']; - continue; - } - } - - if (isset($this->tokens[$i]['bracket_opener']) === true) { - if ($i !== $this->tokens[$i]['bracket_closer']) { - $i = $this->tokens[$i]['bracket_closer']; - continue; - } - } - - switch ($this->tokens[$i]['code']) { - case T_ATTRIBUTE: - $hasAttributes = true; - - // Skip to the end of the attribute. - $i = $this->tokens[$i]['attribute_closer']; - break; - case T_BITWISE_AND: - if ($defaultStart === null) { - $passByReference = true; - $referenceToken = $i; - } - break; - case T_VARIABLE: - $currVar = $i; - break; - case T_ELLIPSIS: - $variableLength = true; - $variadicToken = $i; - break; - case T_CALLABLE: - if ($typeHintToken === false) { - $typeHintToken = $i; - } - - $typeHint .= $this->tokens[$i]['content']; - $typeHintEndToken = $i; - break; - case T_SELF: - case T_PARENT: - case T_STATIC: - // Self and parent are valid, static invalid, but was probably intended as type hint. - if (isset($defaultStart) === false) { - if ($typeHintToken === false) { - $typeHintToken = $i; - } - - $typeHint .= $this->tokens[$i]['content']; - $typeHintEndToken = $i; - } - break; - case T_STRING: - // This is a string, so it may be a type hint, but it could - // also be a constant used as a default value. - $prevComma = false; - for ($t = $i; $t >= $opener; $t--) { - if ($this->tokens[$t]['code'] === T_COMMA) { - $prevComma = $t; - break; - } - } - - if ($prevComma !== false) { - $nextEquals = false; - for ($t = $prevComma; $t < $i; $t++) { - if ($this->tokens[$t]['code'] === T_EQUAL) { - $nextEquals = $t; - break; - } - } - - if ($nextEquals !== false) { - break; - } - } - - if ($defaultStart === null) { - if ($typeHintToken === false) { - $typeHintToken = $i; - } - - $typeHint .= $this->tokens[$i]['content']; - $typeHintEndToken = $i; - } - break; - case T_NAMESPACE: - case T_NS_SEPARATOR: - case T_TYPE_UNION: - case T_TYPE_INTERSECTION: - case T_TYPE_OPEN_PARENTHESIS: - case T_TYPE_CLOSE_PARENTHESIS: - case T_FALSE: - case T_TRUE: - case T_NULL: - // Part of a type hint or default value. - if ($defaultStart === null) { - if ($typeHintToken === false) { - $typeHintToken = $i; - } - - $typeHint .= $this->tokens[$i]['content']; - $typeHintEndToken = $i; - } - break; - case T_NULLABLE: - if ($defaultStart === null) { - $nullableType = true; - $typeHint .= $this->tokens[$i]['content']; - $typeHintEndToken = $i; - } - break; - case T_PUBLIC: - case T_PROTECTED: - case T_PRIVATE: - if ($defaultStart === null) { - $visibilityToken = $i; - } - break; - case T_READONLY: - if ($defaultStart === null) { - $readonlyToken = $i; - } - break; - case T_CLOSE_PARENTHESIS: - case T_COMMA: - // If it's null, then there must be no parameters for this - // method. - if ($currVar === null) { - continue 2; - } - - $vars[$paramCount] = []; - $vars[$paramCount]['token'] = $currVar; - $vars[$paramCount]['name'] = $this->tokens[$currVar]['content']; - $vars[$paramCount]['content'] = trim($this->getTokensAsString($paramStart, ($i - $paramStart))); - - if ($defaultStart !== null) { - $vars[$paramCount]['default'] = trim($this->getTokensAsString($defaultStart, ($i - $defaultStart))); - $vars[$paramCount]['default_token'] = $defaultStart; - $vars[$paramCount]['default_equal_token'] = $equalToken; - } - - $vars[$paramCount]['has_attributes'] = $hasAttributes; - $vars[$paramCount]['pass_by_reference'] = $passByReference; - $vars[$paramCount]['reference_token'] = $referenceToken; - $vars[$paramCount]['variable_length'] = $variableLength; - $vars[$paramCount]['variadic_token'] = $variadicToken; - $vars[$paramCount]['type_hint'] = $typeHint; - $vars[$paramCount]['type_hint_token'] = $typeHintToken; - $vars[$paramCount]['type_hint_end_token'] = $typeHintEndToken; - $vars[$paramCount]['nullable_type'] = $nullableType; - - if ($visibilityToken !== null || $readonlyToken !== null) { - $vars[$paramCount]['property_visibility'] = 'public'; - $vars[$paramCount]['visibility_token'] = false; - $vars[$paramCount]['property_readonly'] = false; - - if ($visibilityToken !== null) { - $vars[$paramCount]['property_visibility'] = $this->tokens[$visibilityToken]['content']; - $vars[$paramCount]['visibility_token'] = $visibilityToken; - } - - if ($readonlyToken !== null) { - $vars[$paramCount]['property_readonly'] = true; - $vars[$paramCount]['readonly_token'] = $readonlyToken; - } - } - - if ($this->tokens[$i]['code'] === T_COMMA) { - $vars[$paramCount]['comma_token'] = $i; - } else { - $vars[$paramCount]['comma_token'] = false; - } - - // Reset the vars, as we are about to process the next parameter. - $currVar = null; - $paramStart = ($i + 1); - $defaultStart = null; - $equalToken = null; - $hasAttributes = false; - $passByReference = false; - $referenceToken = false; - $variableLength = false; - $variadicToken = false; - $typeHint = ''; - $typeHintToken = false; - $typeHintEndToken = false; - $nullableType = false; - $visibilityToken = null; - $readonlyToken = null; - - $paramCount++; - break; - case T_EQUAL: - $defaultStart = $this->findNext(Tokens::$emptyTokens, ($i + 1), null, true); - $equalToken = $i; - break; - }//end switch - }//end for - - return $vars; - - }//end getMethodParameters() - - - /** - * Returns the visibility and implementation properties of a method. - * - * The format of the return value is: - * - * array( - * 'scope' => string, // Public, private, or protected - * 'scope_specified' => boolean, // TRUE if the scope keyword was found. - * 'return_type' => string, // The return type of the method. - * 'return_type_token' => integer|false, // The stack pointer to the start of the return type - * // or FALSE if there is no return type. - * 'return_type_end_token' => integer|false, // The stack pointer to the end of the return type - * // or FALSE if there is no return type. - * 'nullable_return_type' => boolean, // TRUE if the return type is preceded by the - * // nullability operator. - * 'is_abstract' => boolean, // TRUE if the abstract keyword was found. - * 'is_final' => boolean, // TRUE if the final keyword was found. - * 'is_static' => boolean, // TRUE if the static keyword was found. - * 'has_body' => boolean, // TRUE if the method has a body - * ); - * - * - * @param int $stackPtr The position in the stack of the function token to - * acquire the properties for. - * - * @return array - * @throws \PHP_CodeSniffer\Exceptions\RuntimeException If the specified position is not a - * T_FUNCTION, T_CLOSURE, or T_FN token. - */ - public function getMethodProperties($stackPtr) - { - if ($this->tokens[$stackPtr]['code'] !== T_FUNCTION - && $this->tokens[$stackPtr]['code'] !== T_CLOSURE - && $this->tokens[$stackPtr]['code'] !== T_FN - ) { - throw new RuntimeException('$stackPtr must be of type T_FUNCTION or T_CLOSURE or T_FN'); - } - - if ($this->tokens[$stackPtr]['code'] === T_FUNCTION) { - $valid = [ - T_PUBLIC => T_PUBLIC, - T_PRIVATE => T_PRIVATE, - T_PROTECTED => T_PROTECTED, - T_STATIC => T_STATIC, - T_FINAL => T_FINAL, - T_ABSTRACT => T_ABSTRACT, - T_WHITESPACE => T_WHITESPACE, - T_COMMENT => T_COMMENT, - T_DOC_COMMENT => T_DOC_COMMENT, - ]; - } else { - $valid = [ - T_STATIC => T_STATIC, - T_WHITESPACE => T_WHITESPACE, - T_COMMENT => T_COMMENT, - T_DOC_COMMENT => T_DOC_COMMENT, - ]; - } - - $scope = 'public'; - $scopeSpecified = false; - $isAbstract = false; - $isFinal = false; - $isStatic = false; - - for ($i = ($stackPtr - 1); $i > 0; $i--) { - if (isset($valid[$this->tokens[$i]['code']]) === false) { - break; - } - - switch ($this->tokens[$i]['code']) { - case T_PUBLIC: - $scope = 'public'; - $scopeSpecified = true; - break; - case T_PRIVATE: - $scope = 'private'; - $scopeSpecified = true; - break; - case T_PROTECTED: - $scope = 'protected'; - $scopeSpecified = true; - break; - case T_ABSTRACT: - $isAbstract = true; - break; - case T_FINAL: - $isFinal = true; - break; - case T_STATIC: - $isStatic = true; - break; - }//end switch - }//end for - - $returnType = ''; - $returnTypeToken = false; - $returnTypeEndToken = false; - $nullableReturnType = false; - $hasBody = true; - - if (isset($this->tokens[$stackPtr]['parenthesis_closer']) === true) { - $scopeOpener = null; - if (isset($this->tokens[$stackPtr]['scope_opener']) === true) { - $scopeOpener = $this->tokens[$stackPtr]['scope_opener']; - } - - $valid = [ - T_STRING => T_STRING, - T_CALLABLE => T_CALLABLE, - T_SELF => T_SELF, - T_PARENT => T_PARENT, - T_STATIC => T_STATIC, - T_FALSE => T_FALSE, - T_TRUE => T_TRUE, - T_NULL => T_NULL, - T_NAMESPACE => T_NAMESPACE, - T_NS_SEPARATOR => T_NS_SEPARATOR, - T_TYPE_UNION => T_TYPE_UNION, - T_TYPE_INTERSECTION => T_TYPE_INTERSECTION, - T_TYPE_OPEN_PARENTHESIS => T_TYPE_OPEN_PARENTHESIS, - T_TYPE_CLOSE_PARENTHESIS => T_TYPE_CLOSE_PARENTHESIS, - ]; - - for ($i = $this->tokens[$stackPtr]['parenthesis_closer']; $i < $this->numTokens; $i++) { - if (($scopeOpener === null && $this->tokens[$i]['code'] === T_SEMICOLON) - || ($scopeOpener !== null && $i === $scopeOpener) - ) { - // End of function definition. - break; - } - - if ($this->tokens[$i]['code'] === T_USE) { - // Skip over closure use statements. - for ($j = ($i + 1); $j < $this->numTokens && isset(Tokens::$emptyTokens[$this->tokens[$j]['code']]) === true; $j++); - if ($this->tokens[$j]['code'] === T_OPEN_PARENTHESIS) { - if (isset($this->tokens[$j]['parenthesis_closer']) === false) { - // Live coding/parse error, stop parsing. - break; - } - - $i = $this->tokens[$j]['parenthesis_closer']; - continue; - } - } - - if ($this->tokens[$i]['code'] === T_NULLABLE) { - $nullableReturnType = true; - } - - if (isset($valid[$this->tokens[$i]['code']]) === true) { - if ($returnTypeToken === false) { - $returnTypeToken = $i; - } - - $returnType .= $this->tokens[$i]['content']; - $returnTypeEndToken = $i; - } - }//end for - - if ($this->tokens[$stackPtr]['code'] === T_FN) { - $bodyToken = T_FN_ARROW; - } else { - $bodyToken = T_OPEN_CURLY_BRACKET; - } - - $end = $this->findNext([$bodyToken, T_SEMICOLON], $this->tokens[$stackPtr]['parenthesis_closer']); - $hasBody = $this->tokens[$end]['code'] === $bodyToken; - }//end if - - if ($returnType !== '' && $nullableReturnType === true) { - $returnType = '?'.$returnType; - } - - return [ - 'scope' => $scope, - 'scope_specified' => $scopeSpecified, - 'return_type' => $returnType, - 'return_type_token' => $returnTypeToken, - 'return_type_end_token' => $returnTypeEndToken, - 'nullable_return_type' => $nullableReturnType, - 'is_abstract' => $isAbstract, - 'is_final' => $isFinal, - 'is_static' => $isStatic, - 'has_body' => $hasBody, - ]; - - }//end getMethodProperties() - - - /** - * Returns the visibility and implementation properties of a class member var. - * - * The format of the return value is: - * - * - * array( - * 'scope' => string, // Public, private, or protected. - * 'scope_specified' => boolean, // TRUE if the scope was explicitly specified. - * 'is_static' => boolean, // TRUE if the static keyword was found. - * 'is_readonly' => boolean, // TRUE if the readonly keyword was found. - * 'type' => string, // The type of the var (empty if no type specified). - * 'type_token' => integer|false, // The stack pointer to the start of the type - * // or FALSE if there is no type. - * 'type_end_token' => integer|false, // The stack pointer to the end of the type - * // or FALSE if there is no type. - * 'nullable_type' => boolean, // TRUE if the type is preceded by the nullability - * // operator. - * ); - * - * - * @param int $stackPtr The position in the stack of the T_VARIABLE token to - * acquire the properties for. - * - * @return array - * @throws \PHP_CodeSniffer\Exceptions\RuntimeException If the specified position is not a - * T_VARIABLE token, or if the position is not - * a class member variable. - */ - public function getMemberProperties($stackPtr) - { - if ($this->tokens[$stackPtr]['code'] !== T_VARIABLE) { - throw new RuntimeException('$stackPtr must be of type T_VARIABLE'); - } - - $conditions = array_keys($this->tokens[$stackPtr]['conditions']); - $ptr = array_pop($conditions); - if (isset($this->tokens[$ptr]) === false - || ($this->tokens[$ptr]['code'] !== T_CLASS - && $this->tokens[$ptr]['code'] !== T_ANON_CLASS - && $this->tokens[$ptr]['code'] !== T_TRAIT) - ) { - if (isset($this->tokens[$ptr]) === true - && ($this->tokens[$ptr]['code'] === T_INTERFACE - || $this->tokens[$ptr]['code'] === T_ENUM) - ) { - // T_VARIABLEs in interfaces/enums can actually be method arguments - // but they won't be seen as being inside the method because there - // are no scope openers and closers for abstract methods. If it is in - // parentheses, we can be pretty sure it is a method argument. - if (isset($this->tokens[$stackPtr]['nested_parenthesis']) === false - || empty($this->tokens[$stackPtr]['nested_parenthesis']) === true - ) { - $error = 'Possible parse error: %ss may not include member vars'; - $code = sprintf('Internal.ParseError.%sHasMemberVar', ucfirst($this->tokens[$ptr]['content'])); - $data = [strtolower($this->tokens[$ptr]['content'])]; - $this->addWarning($error, $stackPtr, $code, $data); - return []; - } - } else { - throw new RuntimeException('$stackPtr is not a class member var'); - } - }//end if - - // Make sure it's not a method parameter. - if (empty($this->tokens[$stackPtr]['nested_parenthesis']) === false) { - $parenthesis = array_keys($this->tokens[$stackPtr]['nested_parenthesis']); - $deepestOpen = array_pop($parenthesis); - if ($deepestOpen > $ptr - && isset($this->tokens[$deepestOpen]['parenthesis_owner']) === true - && $this->tokens[$this->tokens[$deepestOpen]['parenthesis_owner']]['code'] === T_FUNCTION - ) { - throw new RuntimeException('$stackPtr is not a class member var'); - } - } - - $valid = [ - T_PUBLIC => T_PUBLIC, - T_PRIVATE => T_PRIVATE, - T_PROTECTED => T_PROTECTED, - T_STATIC => T_STATIC, - T_VAR => T_VAR, - T_READONLY => T_READONLY, - ]; - - $valid += Tokens::$emptyTokens; - - $scope = 'public'; - $scopeSpecified = false; - $isStatic = false; - $isReadonly = false; - - $startOfStatement = $this->findPrevious( - [ - T_SEMICOLON, - T_OPEN_CURLY_BRACKET, - T_CLOSE_CURLY_BRACKET, - T_ATTRIBUTE_END, - ], - ($stackPtr - 1) - ); - - for ($i = ($startOfStatement + 1); $i < $stackPtr; $i++) { - if (isset($valid[$this->tokens[$i]['code']]) === false) { - break; - } - - switch ($this->tokens[$i]['code']) { - case T_PUBLIC: - $scope = 'public'; - $scopeSpecified = true; - break; - case T_PRIVATE: - $scope = 'private'; - $scopeSpecified = true; - break; - case T_PROTECTED: - $scope = 'protected'; - $scopeSpecified = true; - break; - case T_STATIC: - $isStatic = true; - break; - case T_READONLY: - $isReadonly = true; - break; - } - }//end for - - $type = ''; - $typeToken = false; - $typeEndToken = false; - $nullableType = false; - - if ($i < $stackPtr) { - // We've found a type. - $valid = [ - T_STRING => T_STRING, - T_CALLABLE => T_CALLABLE, - T_SELF => T_SELF, - T_PARENT => T_PARENT, - T_FALSE => T_FALSE, - T_TRUE => T_TRUE, - T_NULL => T_NULL, - T_NAMESPACE => T_NAMESPACE, - T_NS_SEPARATOR => T_NS_SEPARATOR, - T_TYPE_UNION => T_TYPE_UNION, - T_TYPE_INTERSECTION => T_TYPE_INTERSECTION, - T_TYPE_OPEN_PARENTHESIS => T_TYPE_OPEN_PARENTHESIS, - T_TYPE_CLOSE_PARENTHESIS => T_TYPE_CLOSE_PARENTHESIS, - ]; - - for ($i; $i < $stackPtr; $i++) { - if ($this->tokens[$i]['code'] === T_VARIABLE) { - // Hit another variable in a group definition. - break; - } - - if ($this->tokens[$i]['code'] === T_NULLABLE) { - $nullableType = true; - } - - if (isset($valid[$this->tokens[$i]['code']]) === true) { - $typeEndToken = $i; - if ($typeToken === false) { - $typeToken = $i; - } - - $type .= $this->tokens[$i]['content']; - } - } - - if ($type !== '' && $nullableType === true) { - $type = '?'.$type; - } - }//end if - - return [ - 'scope' => $scope, - 'scope_specified' => $scopeSpecified, - 'is_static' => $isStatic, - 'is_readonly' => $isReadonly, - 'type' => $type, - 'type_token' => $typeToken, - 'type_end_token' => $typeEndToken, - 'nullable_type' => $nullableType, - ]; - - }//end getMemberProperties() - - - /** - * Returns the visibility and implementation properties of a class. - * - * The format of the return value is: - * - * array( - * 'is_abstract' => boolean, // TRUE if the abstract keyword was found. - * 'is_final' => boolean, // TRUE if the final keyword was found. - * 'is_readonly' => boolean, // TRUE if the readonly keyword was found. - * ); - * - * - * @param int $stackPtr The position in the stack of the T_CLASS token to - * acquire the properties for. - * - * @return array - * @throws \PHP_CodeSniffer\Exceptions\RuntimeException If the specified position is not a - * T_CLASS token. - */ - public function getClassProperties($stackPtr) - { - if ($this->tokens[$stackPtr]['code'] !== T_CLASS) { - throw new RuntimeException('$stackPtr must be of type T_CLASS'); - } - - $valid = [ - T_FINAL => T_FINAL, - T_ABSTRACT => T_ABSTRACT, - T_READONLY => T_READONLY, - T_WHITESPACE => T_WHITESPACE, - T_COMMENT => T_COMMENT, - T_DOC_COMMENT => T_DOC_COMMENT, - ]; - - $isAbstract = false; - $isFinal = false; - $isReadonly = false; - - for ($i = ($stackPtr - 1); $i > 0; $i--) { - if (isset($valid[$this->tokens[$i]['code']]) === false) { - break; - } - - switch ($this->tokens[$i]['code']) { - case T_ABSTRACT: - $isAbstract = true; - break; - - case T_FINAL: - $isFinal = true; - break; - - case T_READONLY: - $isReadonly = true; - break; - } - }//end for - - return [ - 'is_abstract' => $isAbstract, - 'is_final' => $isFinal, - 'is_readonly' => $isReadonly, - ]; - - }//end getClassProperties() - - - /** - * Determine if the passed token is a reference operator. - * - * Returns true if the specified token position represents a reference. - * Returns false if the token represents a bitwise operator. - * - * @param int $stackPtr The position of the T_BITWISE_AND token. - * - * @return boolean - */ - public function isReference($stackPtr) - { - if ($this->tokens[$stackPtr]['code'] !== T_BITWISE_AND) { - return false; - } - - $tokenBefore = $this->findPrevious( - Tokens::$emptyTokens, - ($stackPtr - 1), - null, - true - ); - - if ($this->tokens[$tokenBefore]['code'] === T_FUNCTION - || $this->tokens[$tokenBefore]['code'] === T_CLOSURE - || $this->tokens[$tokenBefore]['code'] === T_FN - ) { - // Function returns a reference. - return true; - } - - if ($this->tokens[$tokenBefore]['code'] === T_DOUBLE_ARROW) { - // Inside a foreach loop or array assignment, this is a reference. - return true; - } - - if ($this->tokens[$tokenBefore]['code'] === T_AS) { - // Inside a foreach loop, this is a reference. - return true; - } - - if (isset(Tokens::$assignmentTokens[$this->tokens[$tokenBefore]['code']]) === true) { - // This is directly after an assignment. It's a reference. Even if - // it is part of an operation, the other tests will handle it. - return true; - } - - $tokenAfter = $this->findNext( - Tokens::$emptyTokens, - ($stackPtr + 1), - null, - true - ); - - if ($this->tokens[$tokenAfter]['code'] === T_NEW) { - return true; - } - - if (isset($this->tokens[$stackPtr]['nested_parenthesis']) === true) { - $brackets = $this->tokens[$stackPtr]['nested_parenthesis']; - $lastBracket = array_pop($brackets); - if (isset($this->tokens[$lastBracket]['parenthesis_owner']) === true) { - $owner = $this->tokens[$this->tokens[$lastBracket]['parenthesis_owner']]; - if ($owner['code'] === T_FUNCTION - || $owner['code'] === T_CLOSURE - || $owner['code'] === T_FN - ) { - $params = $this->getMethodParameters($this->tokens[$lastBracket]['parenthesis_owner']); - foreach ($params as $param) { - if ($param['reference_token'] === $stackPtr) { - // Function parameter declared to be passed by reference. - return true; - } - } - }//end if - } else { - $prev = false; - for ($t = ($this->tokens[$lastBracket]['parenthesis_opener'] - 1); $t >= 0; $t--) { - if ($this->tokens[$t]['code'] !== T_WHITESPACE) { - $prev = $t; - break; - } - } - - if ($prev !== false && $this->tokens[$prev]['code'] === T_USE) { - // Closure use by reference. - return true; - } - }//end if - }//end if - - // Pass by reference in function calls and assign by reference in arrays. - if ($this->tokens[$tokenBefore]['code'] === T_OPEN_PARENTHESIS - || $this->tokens[$tokenBefore]['code'] === T_COMMA - || $this->tokens[$tokenBefore]['code'] === T_OPEN_SHORT_ARRAY - ) { - if ($this->tokens[$tokenAfter]['code'] === T_VARIABLE) { - return true; - } else { - $skip = Tokens::$emptyTokens; - $skip[] = T_NS_SEPARATOR; - $skip[] = T_SELF; - $skip[] = T_PARENT; - $skip[] = T_STATIC; - $skip[] = T_STRING; - $skip[] = T_NAMESPACE; - $skip[] = T_DOUBLE_COLON; - - $nextSignificantAfter = $this->findNext( - $skip, - ($stackPtr + 1), - null, - true - ); - if ($this->tokens[$nextSignificantAfter]['code'] === T_VARIABLE) { - return true; - } - }//end if - }//end if - - return false; - - }//end isReference() - - - /** - * Returns the content of the tokens from the specified start position in - * the token stack for the specified length. - * - * @param int $start The position to start from in the token stack. - * @param int $length The length of tokens to traverse from the start pos. - * @param bool $origContent Whether the original content or the tab replaced - * content should be used. - * - * @return string The token contents. - * @throws \PHP_CodeSniffer\Exceptions\RuntimeException If the specified position does not exist. - */ - public function getTokensAsString($start, $length, $origContent=false) - { - if (is_int($start) === false || isset($this->tokens[$start]) === false) { - throw new RuntimeException('The $start position for getTokensAsString() must exist in the token stack'); - } - - if (is_int($length) === false || $length <= 0) { - return ''; - } - - $str = ''; - $end = ($start + $length); - if ($end > $this->numTokens) { - $end = $this->numTokens; - } - - for ($i = $start; $i < $end; $i++) { - // If tabs are being converted to spaces by the tokeniser, the - // original content should be used instead of the converted content. - if ($origContent === true && isset($this->tokens[$i]['orig_content']) === true) { - $str .= $this->tokens[$i]['orig_content']; - } else { - $str .= $this->tokens[$i]['content']; - } - } - - return $str; - - }//end getTokensAsString() - - - /** - * Returns the position of the previous specified token(s). - * - * If a value is specified, the previous token of the specified type(s) - * containing the specified value will be returned. - * - * Returns false if no token can be found. - * - * @param int|string|array $types The type(s) of tokens to search for. - * @param int $start The position to start searching from in the - * token stack. - * @param int|null $end The end position to fail if no token is found. - * if not specified or null, end will default to - * the start of the token stack. - * @param bool $exclude If true, find the previous token that is NOT of - * the types specified in $types. - * @param string|null $value The value that the token(s) must be equal to. - * If value is omitted, tokens with any value will - * be returned. - * @param bool $local If true, tokens outside the current statement - * will not be checked. IE. checking will stop - * at the previous semicolon found. - * - * @return int|false - * @see findNext() - */ - public function findPrevious( - $types, - $start, - $end=null, - $exclude=false, - $value=null, - $local=false - ) { - $types = (array) $types; - - if ($end === null) { - $end = 0; - } - - for ($i = $start; $i >= $end; $i--) { - $found = (bool) $exclude; - foreach ($types as $type) { - if ($this->tokens[$i]['code'] === $type) { - $found = !$exclude; - break; - } - } - - if ($found === true) { - if ($value === null) { - return $i; - } else if ($this->tokens[$i]['content'] === $value) { - return $i; - } - } - - if ($local === true) { - if (isset($this->tokens[$i]['scope_opener']) === true - && $i === $this->tokens[$i]['scope_closer'] - ) { - $i = $this->tokens[$i]['scope_opener']; - } else if (isset($this->tokens[$i]['bracket_opener']) === true - && $i === $this->tokens[$i]['bracket_closer'] - ) { - $i = $this->tokens[$i]['bracket_opener']; - } else if (isset($this->tokens[$i]['parenthesis_opener']) === true - && $i === $this->tokens[$i]['parenthesis_closer'] - ) { - $i = $this->tokens[$i]['parenthesis_opener']; - } else if ($this->tokens[$i]['code'] === T_SEMICOLON) { - break; - } - } - }//end for - - return false; - - }//end findPrevious() - - - /** - * Returns the position of the next specified token(s). - * - * If a value is specified, the next token of the specified type(s) - * containing the specified value will be returned. - * - * Returns false if no token can be found. - * - * @param int|string|array $types The type(s) of tokens to search for. - * @param int $start The position to start searching from in the - * token stack. - * @param int|null $end The end position to fail if no token is found. - * if not specified or null, end will default to - * the end of the token stack. - * @param bool $exclude If true, find the next token that is NOT of - * a type specified in $types. - * @param string|null $value The value that the token(s) must be equal to. - * If value is omitted, tokens with any value will - * be returned. - * @param bool $local If true, tokens outside the current statement - * will not be checked. i.e., checking will stop - * at the next semicolon found. - * - * @return int|false - * @see findPrevious() - */ - public function findNext( - $types, - $start, - $end=null, - $exclude=false, - $value=null, - $local=false - ) { - $types = (array) $types; - - if ($end === null || $end > $this->numTokens) { - $end = $this->numTokens; - } - - for ($i = $start; $i < $end; $i++) { - $found = (bool) $exclude; - foreach ($types as $type) { - if ($this->tokens[$i]['code'] === $type) { - $found = !$exclude; - break; - } - } - - if ($found === true) { - if ($value === null) { - return $i; - } else if ($this->tokens[$i]['content'] === $value) { - return $i; - } - } - - if ($local === true && $this->tokens[$i]['code'] === T_SEMICOLON) { - break; - } - }//end for - - return false; - - }//end findNext() - - - /** - * Returns the position of the first non-whitespace token in a statement. - * - * @param int $start The position to start searching from in the token stack. - * @param int|string|array $ignore Token types that should not be considered stop points. - * - * @return int - */ - public function findStartOfStatement($start, $ignore=null) - { - $startTokens = Tokens::$blockOpeners; - $startTokens[T_OPEN_SHORT_ARRAY] = true; - $startTokens[T_OPEN_TAG] = true; - $startTokens[T_OPEN_TAG_WITH_ECHO] = true; - - $endTokens = [ - T_CLOSE_TAG => true, - T_COLON => true, - T_COMMA => true, - T_DOUBLE_ARROW => true, - T_MATCH_ARROW => true, - T_SEMICOLON => true, - ]; - - if ($ignore !== null) { - $ignore = (array) $ignore; - foreach ($ignore as $code) { - if (isset($startTokens[$code]) === true) { - unset($startTokens[$code]); - } - - if (isset($endTokens[$code]) === true) { - unset($endTokens[$code]); - } - } - } - - // If the start token is inside the case part of a match expression, - // find the start of the condition. If it's in the statement part, find - // the token that comes after the match arrow. - if (empty($this->tokens[$start]['conditions']) === false) { - $conditions = $this->tokens[$start]['conditions']; - $lastConditionOwner = end($conditions); - $matchExpression = key($conditions); - - if ($lastConditionOwner === T_MATCH - // Check if the $start token is at the same parentheses nesting level as the match token. - && ((empty($this->tokens[$matchExpression]['nested_parenthesis']) === true - && empty($this->tokens[$start]['nested_parenthesis']) === true) - || ((empty($this->tokens[$matchExpression]['nested_parenthesis']) === false - && empty($this->tokens[$start]['nested_parenthesis']) === false) - && $this->tokens[$matchExpression]['nested_parenthesis'] === $this->tokens[$start]['nested_parenthesis'])) - ) { - // Walk back to the previous match arrow (if it exists). - $lastComma = null; - $inNestedExpression = false; - for ($prevMatch = $start; $prevMatch > $this->tokens[$matchExpression]['scope_opener']; $prevMatch--) { - if ($prevMatch !== $start && $this->tokens[$prevMatch]['code'] === T_MATCH_ARROW) { - break; - } - - if ($prevMatch !== $start && $this->tokens[$prevMatch]['code'] === T_COMMA) { - $lastComma = $prevMatch; - continue; - } - - // Skip nested statements. - if (isset($this->tokens[$prevMatch]['bracket_opener']) === true - && $prevMatch === $this->tokens[$prevMatch]['bracket_closer'] - ) { - $prevMatch = $this->tokens[$prevMatch]['bracket_opener']; - continue; - } - - if (isset($this->tokens[$prevMatch]['parenthesis_opener']) === true - && $prevMatch === $this->tokens[$prevMatch]['parenthesis_closer'] - ) { - $prevMatch = $this->tokens[$prevMatch]['parenthesis_opener']; - continue; - } - - // Stop if we're _within_ a nested short array statement, which may contain comma's too. - // No need to deal with parentheses, those are handled above via the `nested_parenthesis` checks. - if (isset($this->tokens[$prevMatch]['bracket_opener']) === true - && $this->tokens[$prevMatch]['bracket_closer'] > $start - ) { - $inNestedExpression = true; - break; - } - }//end for - - if ($inNestedExpression === false) { - // $prevMatch will now either be the scope opener or a match arrow. - // If it is the scope opener, go the first non-empty token after. $start will have been part of the first condition. - if ($prevMatch <= $this->tokens[$matchExpression]['scope_opener']) { - // We're before the arrow in the first case. - $next = $this->findNext(Tokens::$emptyTokens, ($this->tokens[$matchExpression]['scope_opener'] + 1), null, true); - if ($next === false) { - // Shouldn't be possible. - return $start; - } - - return $next; - } - - // Okay, so we found a match arrow. - // If $start was part of the "next" condition, the last comma will be set. - // Otherwise, $start must have been part of a return expression. - if (isset($lastComma) === true && $lastComma > $prevMatch) { - $prevMatch = $lastComma; - } - - // In both cases, go to the first non-empty token after. - $next = $this->findNext(Tokens::$emptyTokens, ($prevMatch + 1), null, true); - if ($next === false) { - // Shouldn't be possible. - return $start; - } - - return $next; - }//end if - }//end if - }//end if - - $lastNotEmpty = $start; - - // If we are starting at a token that ends a scope block, skip to - // the start and continue from there. - // If we are starting at a token that ends a statement, skip this - // token so we find the true start of the statement. - while (isset($endTokens[$this->tokens[$start]['code']]) === true - || (isset($this->tokens[$start]['scope_condition']) === true - && $start === $this->tokens[$start]['scope_closer']) - ) { - if (isset($this->tokens[$start]['scope_condition']) === true) { - $start = $this->tokens[$start]['scope_condition']; - } else { - $start--; - } - } - - for ($i = $start; $i >= 0; $i--) { - if (isset($startTokens[$this->tokens[$i]['code']]) === true - || isset($endTokens[$this->tokens[$i]['code']]) === true - ) { - // Found the end of the previous statement. - return $lastNotEmpty; - } - - if (isset($this->tokens[$i]['scope_opener']) === true - && $i === $this->tokens[$i]['scope_closer'] - && $this->tokens[$i]['code'] !== T_CLOSE_PARENTHESIS - && $this->tokens[$i]['code'] !== T_END_NOWDOC - && $this->tokens[$i]['code'] !== T_END_HEREDOC - && $this->tokens[$i]['code'] !== T_BREAK - && $this->tokens[$i]['code'] !== T_RETURN - && $this->tokens[$i]['code'] !== T_CONTINUE - && $this->tokens[$i]['code'] !== T_THROW - && $this->tokens[$i]['code'] !== T_EXIT - ) { - // Found the end of the previous scope block. - return $lastNotEmpty; - } - - // Skip nested statements. - if (isset($this->tokens[$i]['bracket_opener']) === true - && $i === $this->tokens[$i]['bracket_closer'] - ) { - $i = $this->tokens[$i]['bracket_opener']; - } else if (isset($this->tokens[$i]['parenthesis_opener']) === true - && $i === $this->tokens[$i]['parenthesis_closer'] - ) { - $i = $this->tokens[$i]['parenthesis_opener']; - } else if ($this->tokens[$i]['code'] === T_CLOSE_USE_GROUP) { - $start = $this->findPrevious(T_OPEN_USE_GROUP, ($i - 1)); - if ($start !== false) { - $i = $start; - } - }//end if - - if (isset(Tokens::$emptyTokens[$this->tokens[$i]['code']]) === false) { - $lastNotEmpty = $i; - } - }//end for - - return 0; - - }//end findStartOfStatement() - - - /** - * Returns the position of the last non-whitespace token in a statement. - * - * @param int $start The position to start searching from in the token stack. - * @param int|string|array $ignore Token types that should not be considered stop points. - * - * @return int - */ - public function findEndOfStatement($start, $ignore=null) - { - $endTokens = [ - T_COLON => true, - T_COMMA => true, - T_DOUBLE_ARROW => true, - T_SEMICOLON => true, - T_CLOSE_PARENTHESIS => true, - T_CLOSE_SQUARE_BRACKET => true, - T_CLOSE_CURLY_BRACKET => true, - T_CLOSE_SHORT_ARRAY => true, - T_OPEN_TAG => true, - T_CLOSE_TAG => true, - ]; - - if ($ignore !== null) { - $ignore = (array) $ignore; - foreach ($ignore as $code) { - unset($endTokens[$code]); - } - } - - // If the start token is inside the case part of a match expression, - // advance to the match arrow and continue looking for the - // end of the statement from there so that we skip over commas. - if ($this->tokens[$start]['code'] !== T_MATCH_ARROW) { - $matchExpression = $this->getCondition($start, T_MATCH); - if ($matchExpression !== false) { - $beforeArrow = true; - $prevMatchArrow = $this->findPrevious(T_MATCH_ARROW, ($start - 1), $this->tokens[$matchExpression]['scope_opener']); - if ($prevMatchArrow !== false) { - $prevComma = $this->findNext(T_COMMA, ($prevMatchArrow + 1), $start); - if ($prevComma === false) { - // No comma between this token and the last match arrow, - // so this token exists after the arrow and we can continue - // checking as normal. - $beforeArrow = false; - } - } - - if ($beforeArrow === true) { - $nextMatchArrow = $this->findNext(T_MATCH_ARROW, ($start + 1), $this->tokens[$matchExpression]['scope_closer']); - if ($nextMatchArrow !== false) { - $start = $nextMatchArrow; - } - } - }//end if - }//end if - - $lastNotEmpty = $start; - for ($i = $start; $i < $this->numTokens; $i++) { - if ($i !== $start && isset($endTokens[$this->tokens[$i]['code']]) === true) { - // Found the end of the statement. - if ($this->tokens[$i]['code'] === T_CLOSE_PARENTHESIS - || $this->tokens[$i]['code'] === T_CLOSE_SQUARE_BRACKET - || $this->tokens[$i]['code'] === T_CLOSE_CURLY_BRACKET - || $this->tokens[$i]['code'] === T_CLOSE_SHORT_ARRAY - || $this->tokens[$i]['code'] === T_OPEN_TAG - || $this->tokens[$i]['code'] === T_CLOSE_TAG - ) { - return $lastNotEmpty; - } - - return $i; - } - - // Skip nested statements. - if (isset($this->tokens[$i]['scope_closer']) === true - && ($i === $this->tokens[$i]['scope_opener'] - || $i === $this->tokens[$i]['scope_condition']) - ) { - if ($this->tokens[$i]['code'] === T_FN) { - $lastNotEmpty = $this->tokens[$i]['scope_closer']; - $i = ($this->tokens[$i]['scope_closer'] - 1); - continue; - } - - if ($i === $start && isset(Tokens::$scopeOpeners[$this->tokens[$i]['code']]) === true) { - return $this->tokens[$i]['scope_closer']; - } - - $i = $this->tokens[$i]['scope_closer']; - } else if (isset($this->tokens[$i]['bracket_closer']) === true - && $i === $this->tokens[$i]['bracket_opener'] - ) { - $i = $this->tokens[$i]['bracket_closer']; - } else if (isset($this->tokens[$i]['parenthesis_closer']) === true - && $i === $this->tokens[$i]['parenthesis_opener'] - ) { - $i = $this->tokens[$i]['parenthesis_closer']; - } else if ($this->tokens[$i]['code'] === T_OPEN_USE_GROUP) { - $end = $this->findNext(T_CLOSE_USE_GROUP, ($i + 1)); - if ($end !== false) { - $i = $end; - } - }//end if - - if (isset(Tokens::$emptyTokens[$this->tokens[$i]['code']]) === false) { - $lastNotEmpty = $i; - } - }//end for - - return ($this->numTokens - 1); - - }//end findEndOfStatement() - - - /** - * Returns the position of the first token on a line, matching given type. - * - * Returns false if no token can be found. - * - * @param int|string|array $types The type(s) of tokens to search for. - * @param int $start The position to start searching from in the - * token stack. - * @param bool $exclude If true, find the token that is NOT of - * the types specified in $types. - * @param string $value The value that the token must be equal to. - * If value is omitted, tokens with any value will - * be returned. - * - * @return int|false The first token which matches on the line containing the start - * token, between the start of the line and the start token. - * Note: The first token matching might be the start token. - * FALSE when no matching token could be found between the start of - * the line and the start token. - */ - public function findFirstOnLine($types, $start, $exclude=false, $value=null) - { - if (is_array($types) === false) { - $types = [$types]; - } - - $foundToken = false; - - for ($i = $start; $i >= 0; $i--) { - if ($this->tokens[$i]['line'] < $this->tokens[$start]['line']) { - break; - } - - $found = $exclude; - foreach ($types as $type) { - if ($exclude === false) { - if ($this->tokens[$i]['code'] === $type) { - $found = true; - break; - } - } else { - if ($this->tokens[$i]['code'] === $type) { - $found = false; - break; - } - } - } - - if ($found === true) { - if ($value === null) { - $foundToken = $i; - } else if ($this->tokens[$i]['content'] === $value) { - $foundToken = $i; - } - } - }//end for - - return $foundToken; - - }//end findFirstOnLine() - - - /** - * Determine if the passed token has a condition of one of the passed types. - * - * @param int $stackPtr The position of the token we are checking. - * @param int|string|array $types The type(s) of tokens to search for. - * - * @return boolean - */ - public function hasCondition($stackPtr, $types) - { - // Check for the existence of the token. - if (isset($this->tokens[$stackPtr]) === false) { - return false; - } - - // Make sure the token has conditions. - if (empty($this->tokens[$stackPtr]['conditions']) === true) { - return false; - } - - $types = (array) $types; - $conditions = $this->tokens[$stackPtr]['conditions']; - - foreach ($types as $type) { - if (in_array($type, $conditions, true) === true) { - // We found a token with the required type. - return true; - } - } - - return false; - - }//end hasCondition() - - - /** - * Return the position of the condition for the passed token. - * - * Returns FALSE if the token does not have the condition. - * - * @param int $stackPtr The position of the token we are checking. - * @param int|string $type The type of token to search for. - * @param bool $first If TRUE, will return the matched condition - * furthest away from the passed token. - * If FALSE, will return the matched condition - * closest to the passed token. - * - * @return int|false - */ - public function getCondition($stackPtr, $type, $first=true) - { - // Check for the existence of the token. - if (isset($this->tokens[$stackPtr]) === false) { - return false; - } - - // Make sure the token has conditions. - if (empty($this->tokens[$stackPtr]['conditions']) === true) { - return false; - } - - $conditions = $this->tokens[$stackPtr]['conditions']; - if ($first === false) { - $conditions = array_reverse($conditions, true); - } - - foreach ($conditions as $token => $condition) { - if ($condition === $type) { - return $token; - } - } - - return false; - - }//end getCondition() - - - /** - * Returns the name of the class that the specified class extends. - * (works for classes, anonymous classes and interfaces) - * - * Returns FALSE on error or if there is no extended class name. - * - * @param int $stackPtr The stack position of the class. - * - * @return string|false - */ - public function findExtendedClassName($stackPtr) - { - // Check for the existence of the token. - if (isset($this->tokens[$stackPtr]) === false) { - return false; - } - - if ($this->tokens[$stackPtr]['code'] !== T_CLASS - && $this->tokens[$stackPtr]['code'] !== T_ANON_CLASS - && $this->tokens[$stackPtr]['code'] !== T_INTERFACE - ) { - return false; - } - - if (isset($this->tokens[$stackPtr]['scope_opener']) === false) { - return false; - } - - $classOpenerIndex = $this->tokens[$stackPtr]['scope_opener']; - $extendsIndex = $this->findNext(T_EXTENDS, $stackPtr, $classOpenerIndex); - if ($extendsIndex === false) { - return false; - } - - $find = [ - T_NS_SEPARATOR, - T_STRING, - T_WHITESPACE, - ]; - - $end = $this->findNext($find, ($extendsIndex + 1), ($classOpenerIndex + 1), true); - $name = $this->getTokensAsString(($extendsIndex + 1), ($end - $extendsIndex - 1)); - $name = trim($name); - - if ($name === '') { - return false; - } - - return $name; - - }//end findExtendedClassName() - - - /** - * Returns the names of the interfaces that the specified class or enum implements. - * - * Returns FALSE on error or if there are no implemented interface names. - * - * @param int $stackPtr The stack position of the class or enum token. - * - * @return array|false - */ - public function findImplementedInterfaceNames($stackPtr) - { - // Check for the existence of the token. - if (isset($this->tokens[$stackPtr]) === false) { - return false; - } - - if ($this->tokens[$stackPtr]['code'] !== T_CLASS - && $this->tokens[$stackPtr]['code'] !== T_ANON_CLASS - && $this->tokens[$stackPtr]['code'] !== T_ENUM - ) { - return false; - } - - if (isset($this->tokens[$stackPtr]['scope_closer']) === false) { - return false; - } - - $classOpenerIndex = $this->tokens[$stackPtr]['scope_opener']; - $implementsIndex = $this->findNext(T_IMPLEMENTS, $stackPtr, $classOpenerIndex); - if ($implementsIndex === false) { - return false; - } - - $find = [ - T_NS_SEPARATOR, - T_STRING, - T_WHITESPACE, - T_COMMA, - ]; - - $end = $this->findNext($find, ($implementsIndex + 1), ($classOpenerIndex + 1), true); - $name = $this->getTokensAsString(($implementsIndex + 1), ($end - $implementsIndex - 1)); - $name = trim($name); - - if ($name === '') { - return false; - } else { - $names = explode(',', $name); - $names = array_map('trim', $names); - return $names; - } - - }//end findImplementedInterfaceNames() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Files/FileList.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Files/FileList.php deleted file mode 100644 index ab52e338..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Files/FileList.php +++ /dev/null @@ -1,261 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Files; - -use Countable; -use FilesystemIterator; -use Iterator; -use PHP_CodeSniffer\Autoload; -use PHP_CodeSniffer\Config; -use PHP_CodeSniffer\Exceptions\DeepExitException; -use PHP_CodeSniffer\Ruleset; -use PHP_CodeSniffer\Util\Common; -use RecursiveArrayIterator; -use RecursiveDirectoryIterator; -use RecursiveIteratorIterator; -use ReturnTypeWillChange; - -class FileList implements Iterator, Countable -{ - - /** - * A list of file paths that are included in the list. - * - * @var array - */ - private $files = []; - - /** - * The number of files in the list. - * - * @var integer - */ - private $numFiles = 0; - - /** - * The config data for the run. - * - * @var \PHP_CodeSniffer\Config - */ - public $config = null; - - /** - * The ruleset used for the run. - * - * @var \PHP_CodeSniffer\Ruleset - */ - public $ruleset = null; - - /** - * An array of patterns to use for skipping files. - * - * @var array - */ - protected $ignorePatterns = []; - - - /** - * Constructs a file list and loads in an array of file paths to process. - * - * @param \PHP_CodeSniffer\Config $config The config data for the run. - * @param \PHP_CodeSniffer\Ruleset $ruleset The ruleset used for the run. - * - * @return void - */ - public function __construct(Config $config, Ruleset $ruleset) - { - $this->ruleset = $ruleset; - $this->config = $config; - - $paths = $config->files; - foreach ($paths as $path) { - $isPharFile = Common::isPharFile($path); - if (is_dir($path) === true || $isPharFile === true) { - if ($isPharFile === true) { - $path = 'phar://'.$path; - } - - $filterClass = $this->getFilterClass(); - - $di = new RecursiveDirectoryIterator($path, (RecursiveDirectoryIterator::SKIP_DOTS | FilesystemIterator::FOLLOW_SYMLINKS)); - $filter = new $filterClass($di, $path, $config, $ruleset); - $iterator = new RecursiveIteratorIterator($filter); - - foreach ($iterator as $file) { - $this->files[$file->getPathname()] = null; - $this->numFiles++; - } - } else { - $this->addFile($path); - }//end if - }//end foreach - - reset($this->files); - - }//end __construct() - - - /** - * Add a file to the list. - * - * If a file object has already been created, it can be passed here. - * If it is left NULL, it will be created when accessed. - * - * @param string $path The path to the file being added. - * @param \PHP_CodeSniffer\Files\File $file The file being added. - * - * @return void - */ - public function addFile($path, $file=null) - { - // No filtering is done for STDIN when the filename - // has not been specified. - if ($path === 'STDIN') { - $this->files[$path] = $file; - $this->numFiles++; - return; - } - - $filterClass = $this->getFilterClass(); - - $di = new RecursiveArrayIterator([$path]); - $filter = new $filterClass($di, $path, $this->config, $this->ruleset); - $iterator = new RecursiveIteratorIterator($filter); - - foreach ($iterator as $path) { - $this->files[$path] = $file; - $this->numFiles++; - } - - }//end addFile() - - - /** - * Get the class name of the filter being used for the run. - * - * @return string - * @throws \PHP_CodeSniffer\Exceptions\DeepExitException If the specified filter could not be found. - */ - private function getFilterClass() - { - $filterType = $this->config->filter; - - if ($filterType === null) { - $filterClass = '\PHP_CodeSniffer\Filters\Filter'; - } else { - if (strpos($filterType, '.') !== false) { - // This is a path to a custom filter class. - $filename = realpath($filterType); - if ($filename === false) { - $error = "ERROR: Custom filter \"$filterType\" not found".PHP_EOL; - throw new DeepExitException($error, 3); - } - - $filterClass = Autoload::loadFile($filename); - } else { - $filterClass = '\PHP_CodeSniffer\Filters\\'.$filterType; - } - } - - return $filterClass; - - }//end getFilterClass() - - - /** - * Rewind the iterator to the first file. - * - * @return void - */ - #[ReturnTypeWillChange] - public function rewind() - { - reset($this->files); - - }//end rewind() - - - /** - * Get the file that is currently being processed. - * - * @return \PHP_CodeSniffer\Files\File - */ - #[ReturnTypeWillChange] - public function current() - { - $path = key($this->files); - if (isset($this->files[$path]) === false) { - $this->files[$path] = new LocalFile($path, $this->ruleset, $this->config); - } - - return $this->files[$path]; - - }//end current() - - - /** - * Return the file path of the current file being processed. - * - * @return string|null Path name or `null` when the end of the iterator has been reached. - */ - #[ReturnTypeWillChange] - public function key() - { - return key($this->files); - - }//end key() - - - /** - * Move forward to the next file. - * - * @return void - */ - #[ReturnTypeWillChange] - public function next() - { - next($this->files); - - }//end next() - - - /** - * Checks if current position is valid. - * - * @return boolean - */ - #[ReturnTypeWillChange] - public function valid() - { - if (current($this->files) === false) { - return false; - } - - return true; - - }//end valid() - - - /** - * Return the number of files in the list. - * - * @return integer - */ - #[ReturnTypeWillChange] - public function count() - { - return $this->numFiles; - - }//end count() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Files/LocalFile.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Files/LocalFile.php deleted file mode 100644 index babfe69c..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Files/LocalFile.php +++ /dev/null @@ -1,219 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Files; - -use PHP_CodeSniffer\Config; -use PHP_CodeSniffer\Ruleset; -use PHP_CodeSniffer\Util\Cache; -use PHP_CodeSniffer\Util\Common; - -class LocalFile extends File -{ - - - /** - * Creates a LocalFile object and sets the content. - * - * @param string $path The absolute path to the file. - * @param \PHP_CodeSniffer\Ruleset $ruleset The ruleset used for the run. - * @param \PHP_CodeSniffer\Config $config The config data for the run. - * - * @return void - */ - public function __construct($path, Ruleset $ruleset, Config $config) - { - $this->path = trim($path); - if (Common::isReadable($this->path) === false) { - parent::__construct($this->path, $ruleset, $config); - $error = 'Error opening file; file no longer exists or you do not have access to read the file'; - $this->addMessage(true, $error, 1, 1, 'Internal.LocalFile', [], 5, false); - $this->ignored = true; - return; - } - - // Before we go and spend time tokenizing this file, just check - // to see if there is a tag up top to indicate that the whole - // file should be ignored. It must be on one of the first two lines. - if ($config->annotations === true) { - $handle = fopen($this->path, 'r'); - if ($handle !== false) { - $firstContent = fgets($handle); - $firstContent .= fgets($handle); - fclose($handle); - - if (strpos($firstContent, '@codingStandardsIgnoreFile') !== false - || stripos($firstContent, 'phpcs:ignorefile') !== false - ) { - // We are ignoring the whole file. - $this->ignored = true; - return; - } - } - } - - $this->reloadContent(); - - parent::__construct($this->path, $ruleset, $config); - - }//end __construct() - - - /** - * Loads the latest version of the file's content from the file system. - * - * @return void - */ - public function reloadContent() - { - $this->setContent(file_get_contents($this->path)); - - }//end reloadContent() - - - /** - * Processes the file. - * - * @return void - */ - public function process() - { - if ($this->ignored === true) { - return; - } - - if ($this->configCache['cache'] === false) { - parent::process(); - return; - } - - $hash = md5_file($this->path); - $hash .= fileperms($this->path); - $cache = Cache::get($this->path); - if ($cache !== false && $cache['hash'] === $hash) { - // We can't filter metrics, so just load all of them. - $this->metrics = $cache['metrics']; - - if ($this->configCache['recordErrors'] === true) { - // Replay the cached errors and warnings to filter out the ones - // we don't need for this specific run. - $this->configCache['cache'] = false; - $this->replayErrors($cache['errors'], $cache['warnings']); - $this->configCache['cache'] = true; - } else { - $this->errorCount = $cache['errorCount']; - $this->warningCount = $cache['warningCount']; - $this->fixableCount = $cache['fixableCount']; - } - - if (PHP_CODESNIFFER_VERBOSITY > 0 - || (PHP_CODESNIFFER_CBF === true && empty($this->config->files) === false) - ) { - echo "[loaded from cache]... "; - } - - $this->numTokens = $cache['numTokens']; - $this->fromCache = true; - return; - }//end if - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo PHP_EOL; - } - - parent::process(); - - $cache = [ - 'hash' => $hash, - 'errors' => $this->errors, - 'warnings' => $this->warnings, - 'metrics' => $this->metrics, - 'errorCount' => $this->errorCount, - 'warningCount' => $this->warningCount, - 'fixableCount' => $this->fixableCount, - 'numTokens' => $this->numTokens, - ]; - - Cache::set($this->path, $cache); - - // During caching, we don't filter out errors in any way, so - // we need to do that manually now by replaying them. - if ($this->configCache['recordErrors'] === true) { - $this->configCache['cache'] = false; - $this->replayErrors($this->errors, $this->warnings); - $this->configCache['cache'] = true; - } - - }//end process() - - - /** - * Clears and replays error and warnings for the file. - * - * Replaying errors and warnings allows for filtering rules to be changed - * and then errors and warnings to be reapplied with the new rules. This is - * particularly useful while caching. - * - * @param array $errors The list of errors to replay. - * @param array $warnings The list of warnings to replay. - * - * @return void - */ - private function replayErrors($errors, $warnings) - { - $this->errors = []; - $this->warnings = []; - $this->errorCount = 0; - $this->warningCount = 0; - $this->fixableCount = 0; - - $this->replayingErrors = true; - - foreach ($errors as $line => $lineErrors) { - foreach ($lineErrors as $column => $colErrors) { - foreach ($colErrors as $error) { - $this->activeListener = $error['listener']; - $this->addMessage( - true, - $error['message'], - $line, - $column, - $error['source'], - [], - $error['severity'], - $error['fixable'] - ); - } - } - } - - foreach ($warnings as $line => $lineErrors) { - foreach ($lineErrors as $column => $colErrors) { - foreach ($colErrors as $error) { - $this->activeListener = $error['listener']; - $this->addMessage( - false, - $error['message'], - $line, - $column, - $error['source'], - [], - $error['severity'], - $error['fixable'] - ); - } - } - } - - $this->replayingErrors = false; - - }//end replayErrors() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Filters/ExactMatch.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Filters/ExactMatch.php deleted file mode 100644 index 89517b83..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Filters/ExactMatch.php +++ /dev/null @@ -1,156 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Filters; - -use PHP_CodeSniffer\Util\Common; - -abstract class ExactMatch extends Filter -{ - - /** - * A list of files to exclude. - * - * @var array - */ - private $disallowedFiles = null; - - /** - * A list of files to include. - * - * If the allowed files list is empty, only files in the disallowed files list will be excluded. - * - * @var array - */ - private $allowedFiles = null; - - - /** - * Check whether the current element of the iterator is acceptable. - * - * If a file is both disallowed and allowed, it will be deemed unacceptable. - * - * @return bool - */ - public function accept() - { - if (parent::accept() === false) { - return false; - } - - if ($this->disallowedFiles === null) { - $this->disallowedFiles = $this->getDisallowedFiles(); - - // BC-layer. - if ($this->disallowedFiles === null) { - $this->disallowedFiles = $this->getBlacklist(); - } - } - - if ($this->allowedFiles === null) { - $this->allowedFiles = $this->getAllowedFiles(); - - // BC-layer. - if ($this->allowedFiles === null) { - $this->allowedFiles = $this->getWhitelist(); - } - } - - $filePath = Common::realpath($this->current()); - - // If a file is both disallowed and allowed, the disallowed files list takes precedence. - if (isset($this->disallowedFiles[$filePath]) === true) { - return false; - } - - if (empty($this->allowedFiles) === true && empty($this->disallowedFiles) === false) { - // We are only checking the disallowed files list, so everything else should be allowed. - return true; - } - - return isset($this->allowedFiles[$filePath]); - - }//end accept() - - - /** - * Returns an iterator for the current entry. - * - * Ensures that the disallowed files list and the allowed files list are preserved so they don't have - * to be generated each time. - * - * @return \RecursiveIterator - */ - public function getChildren() - { - $children = parent::getChildren(); - $children->disallowedFiles = $this->disallowedFiles; - $children->allowedFiles = $this->allowedFiles; - return $children; - - }//end getChildren() - - - /** - * Get a list of file paths to exclude. - * - * @deprecated 3.9.0 Implement the `getDisallowedFiles()` method instead. - * The `getDisallowedFiles()` method will be made abstract and therefore required - * in v4.0 and this method will be removed. - * If both methods are implemented, the new `getDisallowedFiles()` method will take precedence. - * - * @return array - */ - abstract protected function getBlacklist(); - - - /** - * Get a list of file paths to include. - * - * @deprecated 3.9.0 Implement the `getAllowedFiles()` method instead. - * The `getAllowedFiles()` method will be made abstract and therefore required - * in v4.0 and this method will be removed. - * If both methods are implemented, the new `getAllowedFiles()` method will take precedence. - * - * @return array - */ - abstract protected function getWhitelist(); - - - /** - * Get a list of file paths to exclude. - * - * @since 3.9.0 Replaces the deprecated `getBlacklist()` method. - * - * @return array|null - */ - protected function getDisallowedFiles() - { - return null; - - }//end getDisallowedFiles() - - - /** - * Get a list of file paths to include. - * - * @since 3.9.0 Replaces the deprecated `getWhitelist()` method. - * - * @return array|null - */ - protected function getAllowedFiles() - { - return null; - - }//end getAllowedFiles() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Filters/Filter.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Filters/Filter.php deleted file mode 100644 index 8376d15c..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Filters/Filter.php +++ /dev/null @@ -1,288 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Filters; - -use FilesystemIterator; -use PHP_CodeSniffer\Config; -use PHP_CodeSniffer\Ruleset; -use PHP_CodeSniffer\Util\Common; -use RecursiveDirectoryIterator; -use RecursiveFilterIterator; -use ReturnTypeWillChange; - -class Filter extends RecursiveFilterIterator -{ - - /** - * The top-level path we are filtering. - * - * @var string - */ - protected $basedir = null; - - /** - * The config data for the run. - * - * @var \PHP_CodeSniffer\Config - */ - protected $config = null; - - /** - * The ruleset used for the run. - * - * @var \PHP_CodeSniffer\Ruleset - */ - protected $ruleset = null; - - /** - * A list of ignore patterns that apply to directories only. - * - * @var array - */ - protected $ignoreDirPatterns = null; - - /** - * A list of ignore patterns that apply to files only. - * - * @var array - */ - protected $ignoreFilePatterns = null; - - /** - * A list of file paths we've already accepted. - * - * Used to ensure we aren't following circular symlinks. - * - * @var array - */ - protected $acceptedPaths = []; - - - /** - * Constructs a filter. - * - * @param \RecursiveIterator $iterator The iterator we are using to get file paths. - * @param string $basedir The top-level path we are filtering. - * @param \PHP_CodeSniffer\Config $config The config data for the run. - * @param \PHP_CodeSniffer\Ruleset $ruleset The ruleset used for the run. - * - * @return void - */ - public function __construct($iterator, $basedir, Config $config, Ruleset $ruleset) - { - parent::__construct($iterator); - $this->basedir = $basedir; - $this->config = $config; - $this->ruleset = $ruleset; - - }//end __construct() - - - /** - * Check whether the current element of the iterator is acceptable. - * - * Files are checked for allowed extensions and ignore patterns. - * Directories are checked for ignore patterns only. - * - * @return bool - */ - #[ReturnTypeWillChange] - public function accept() - { - $filePath = $this->current(); - $realPath = Common::realpath($filePath); - - if ($realPath !== false) { - // It's a real path somewhere, so record it - // to check for circular symlinks. - if (isset($this->acceptedPaths[$realPath]) === true) { - // We've been here before. - return false; - } - } - - $filePath = $this->current(); - if (is_dir($filePath) === true) { - if ($this->config->local === true) { - return false; - } - } else if ($this->shouldProcessFile($filePath) === false) { - return false; - } - - if ($this->shouldIgnorePath($filePath) === true) { - return false; - } - - $this->acceptedPaths[$realPath] = true; - return true; - - }//end accept() - - - /** - * Returns an iterator for the current entry. - * - * Ensures that the ignore patterns are preserved so they don't have - * to be generated each time. - * - * @return \RecursiveIterator - */ - #[ReturnTypeWillChange] - public function getChildren() - { - $filterClass = get_called_class(); - $children = new $filterClass( - new RecursiveDirectoryIterator($this->current(), (RecursiveDirectoryIterator::SKIP_DOTS | FilesystemIterator::FOLLOW_SYMLINKS)), - $this->basedir, - $this->config, - $this->ruleset - ); - - // Set the ignore patterns so we don't have to generate them again. - $children->ignoreDirPatterns = $this->ignoreDirPatterns; - $children->ignoreFilePatterns = $this->ignoreFilePatterns; - $children->acceptedPaths = $this->acceptedPaths; - return $children; - - }//end getChildren() - - - /** - * Checks filtering rules to see if a file should be checked. - * - * Checks both file extension filters and path ignore filters. - * - * @param string $path The path to the file being checked. - * - * @return bool - */ - protected function shouldProcessFile($path) - { - // Check that the file's extension is one we are checking. - // We are strict about checking the extension and we don't - // let files through with no extension or that start with a dot. - $fileName = basename($path); - $fileParts = explode('.', $fileName); - if ($fileParts[0] === $fileName || $fileParts[0] === '') { - return false; - } - - // Checking multi-part file extensions, so need to create a - // complete extension list and make sure one is allowed. - $extensions = []; - array_shift($fileParts); - while (empty($fileParts) === false) { - $extensions[implode('.', $fileParts)] = 1; - array_shift($fileParts); - } - - $matches = array_intersect_key($extensions, $this->config->extensions); - if (empty($matches) === true) { - return false; - } - - return true; - - }//end shouldProcessFile() - - - /** - * Checks filtering rules to see if a path should be ignored. - * - * @param string $path The path to the file or directory being checked. - * - * @return bool - */ - protected function shouldIgnorePath($path) - { - if ($this->ignoreFilePatterns === null) { - $this->ignoreDirPatterns = []; - $this->ignoreFilePatterns = []; - - $ignorePatterns = $this->config->ignored; - $rulesetIgnorePatterns = $this->ruleset->getIgnorePatterns(); - foreach ($rulesetIgnorePatterns as $pattern => $type) { - // Ignore standard/sniff specific exclude rules. - if (is_array($type) === true) { - continue; - } - - $ignorePatterns[$pattern] = $type; - } - - foreach ($ignorePatterns as $pattern => $type) { - // If the ignore pattern ends with /* then it is ignoring an entire directory. - if (substr($pattern, -2) === '/*') { - // Need to check this pattern for dirs as well as individual file paths. - $this->ignoreFilePatterns[$pattern] = $type; - - $pattern = substr($pattern, 0, -2).'(?=/|$)'; - $this->ignoreDirPatterns[$pattern] = $type; - } else { - // This is a file-specific pattern, so only need to check this - // for individual file paths. - $this->ignoreFilePatterns[$pattern] = $type; - } - } - }//end if - - $relativePath = $path; - if (strpos($path, $this->basedir) === 0) { - // The +1 cuts off the directory separator as well. - $relativePath = substr($path, (strlen($this->basedir) + 1)); - } - - if (is_dir($path) === true) { - $ignorePatterns = $this->ignoreDirPatterns; - } else { - $ignorePatterns = $this->ignoreFilePatterns; - } - - foreach ($ignorePatterns as $pattern => $type) { - // Maintains backwards compatibility in case the ignore pattern does - // not have a relative/absolute value. - if (is_int($pattern) === true) { - $pattern = $type; - $type = 'absolute'; - } - - $replacements = [ - '\\,' => ',', - '*' => '.*', - ]; - - // We assume a / directory separator, as do the exclude rules - // most developers write, so we need a special case for any system - // that is different. - if (DIRECTORY_SEPARATOR === '\\') { - $replacements['/'] = '\\\\'; - } - - $pattern = strtr($pattern, $replacements); - - if ($type === 'relative') { - $testPath = $relativePath; - } else { - $testPath = $path; - } - - $pattern = '`'.$pattern.'`i'; - if (preg_match($pattern, $testPath) === 1) { - return true; - } - }//end foreach - - return false; - - }//end shouldIgnorePath() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Filters/GitModified.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Filters/GitModified.php deleted file mode 100644 index 3337287b..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Filters/GitModified.php +++ /dev/null @@ -1,124 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Filters; - -use PHP_CodeSniffer\Util\Common; - -class GitModified extends ExactMatch -{ - - - /** - * Get a list of file paths to exclude. - * - * @since 3.9.0 - * - * @return array - */ - protected function getDisallowedFiles() - { - return []; - - }//end getDisallowedFiles() - - - /** - * Get a list of file paths to exclude. - * - * @deprecated 3.9.0 Overload the `getDisallowedFiles()` method instead. - * - * @codeCoverageIgnore - * - * @return array - */ - protected function getBlacklist() - { - return $this->getDisallowedFiles(); - - }//end getBlacklist() - - - /** - * Get a list of file paths to include. - * - * @since 3.9.0 - * - * @return array - */ - protected function getAllowedFiles() - { - $modified = []; - - $cmd = 'git ls-files -o -m --exclude-standard -- '.escapeshellarg($this->basedir); - $output = $this->exec($cmd); - - $basedir = $this->basedir; - if (is_dir($basedir) === false) { - $basedir = dirname($basedir); - } - - foreach ($output as $path) { - $path = Common::realpath($path); - - if ($path === false) { - continue; - } - - do { - $modified[$path] = true; - $path = dirname($path); - } while ($path !== $basedir); - } - - return $modified; - - }//end getAllowedFiles() - - - /** - * Get a list of file paths to include. - * - * @deprecated 3.9.0 Overload the `getAllowedFiles()` method instead. - * - * @codeCoverageIgnore - * - * @return array - */ - protected function getWhitelist() - { - return $this->getAllowedFiles(); - - }//end getWhitelist() - - - /** - * Execute an external command. - * - * {@internal This method is only needed to allow for mocking the return value - * to test the class logic.} - * - * @param string $cmd Command. - * - * @return array - */ - protected function exec($cmd) - { - $output = []; - $lastLine = exec($cmd, $output); - if ($lastLine === false) { - return []; - } - - return $output; - - }//end exec() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Filters/GitStaged.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Filters/GitStaged.php deleted file mode 100644 index 7a764314..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Filters/GitStaged.php +++ /dev/null @@ -1,126 +0,0 @@ - - * @copyright 2018 Juliette Reinders Folmer. All rights reserved. - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Filters; - -use PHP_CodeSniffer\Util\Common; - -class GitStaged extends ExactMatch -{ - - - /** - * Get a list of file paths to exclude. - * - * @since 3.9.0 - * - * @return array - */ - protected function getDisallowedFiles() - { - return []; - - }//end getDisallowedFiles() - - - /** - * Get a list of file paths to exclude. - * - * @deprecated 3.9.0 Overload the `getDisallowedFiles()` method instead. - * - * @codeCoverageIgnore - * - * @return array - */ - protected function getBlacklist() - { - return $this->getDisallowedFiles(); - - }//end getBlacklist() - - - /** - * Get a list of file paths to include. - * - * @since 3.9.0 - * - * @return array - */ - protected function getAllowedFiles() - { - $modified = []; - - $cmd = 'git diff --cached --name-only -- '.escapeshellarg($this->basedir); - $output = $this->exec($cmd); - - $basedir = $this->basedir; - if (is_dir($basedir) === false) { - $basedir = dirname($basedir); - } - - foreach ($output as $path) { - $path = Common::realpath($path); - if ($path === false) { - // Skip deleted files. - continue; - } - - do { - $modified[$path] = true; - $path = dirname($path); - } while ($path !== $basedir); - } - - return $modified; - - }//end getAllowedFiles() - - - /** - * Get a list of file paths to include. - * - * @deprecated 3.9.0 Overload the `getAllowedFiles()` method instead. - * - * @codeCoverageIgnore - * - * @return array - */ - protected function getWhitelist() - { - return $this->getAllowedFiles(); - - }//end getWhitelist() - - - /** - * Execute an external command. - * - * {@internal This method is only needed to allow for mocking the return value - * to test the class logic.} - * - * @param string $cmd Command. - * - * @return array - */ - protected function exec($cmd) - { - $output = []; - $lastLine = exec($cmd, $output); - if ($lastLine === false) { - return []; - } - - return $output; - - }//end exec() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Fixer.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Fixer.php deleted file mode 100644 index b429825f..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Fixer.php +++ /dev/null @@ -1,846 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer; - -use PHP_CodeSniffer\Exceptions\RuntimeException; -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Util\Common; - -class Fixer -{ - - /** - * Is the fixer enabled and fixing a file? - * - * Sniffs should check this value to ensure they are not - * doing extra processing to prepare for a fix when fixing is - * not required. - * - * @var boolean - */ - public $enabled = false; - - /** - * The number of times we have looped over a file. - * - * @var integer - */ - public $loops = 0; - - /** - * The file being fixed. - * - * @var \PHP_CodeSniffer\Files\File - */ - private $currentFile = null; - - /** - * The list of tokens that make up the file contents. - * - * This is a simplified list which just contains the token content and nothing - * else. This is the array that is updated as fixes are made, not the file's - * token array. Imploding this array will give you the file content back. - * - * @var array - */ - private $tokens = []; - - /** - * A list of tokens that have already been fixed. - * - * We don't allow the same token to be fixed more than once each time - * through a file as this can easily cause conflicts between sniffs. - * - * @var int[] - */ - private $fixedTokens = []; - - /** - * The last value of each fixed token. - * - * If a token is being "fixed" back to its last value, the fix is - * probably conflicting with another. - * - * @var array> - */ - private $oldTokenValues = []; - - /** - * A list of tokens that have been fixed during a changeset. - * - * All changes in changeset must be able to be applied, or else - * the entire changeset is rejected. - * - * @var array - */ - private $changeset = []; - - /** - * Is there an open changeset. - * - * @var boolean - */ - private $inChangeset = false; - - /** - * Is the current fixing loop in conflict? - * - * @var boolean - */ - private $inConflict = false; - - /** - * The number of fixes that have been performed. - * - * @var integer - */ - private $numFixes = 0; - - - /** - * Starts fixing a new file. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being fixed. - * - * @return void - */ - public function startFile(File $phpcsFile) - { - $this->currentFile = $phpcsFile; - $this->numFixes = 0; - $this->fixedTokens = []; - - $tokens = $phpcsFile->getTokens(); - $this->tokens = []; - foreach ($tokens as $index => $token) { - if (isset($token['orig_content']) === true) { - $this->tokens[$index] = $token['orig_content']; - } else { - $this->tokens[$index] = $token['content']; - } - } - - }//end startFile() - - - /** - * Attempt to fix the file by processing it until no fixes are made. - * - * @return boolean - */ - public function fixFile() - { - $fixable = $this->currentFile->getFixableCount(); - if ($fixable === 0) { - // Nothing to fix. - return false; - } - - $this->enabled = true; - - $this->loops = 0; - while ($this->loops < 50) { - ob_start(); - - // Only needed once file content has changed. - $contents = $this->getContents(); - - if (PHP_CODESNIFFER_VERBOSITY > 2) { - @ob_end_clean(); - echo '---START FILE CONTENT---'.PHP_EOL; - $lines = explode($this->currentFile->eolChar, $contents); - $max = strlen(count($lines)); - foreach ($lines as $lineNum => $line) { - $lineNum++; - echo str_pad($lineNum, $max, ' ', STR_PAD_LEFT).'|'.$line.PHP_EOL; - } - - echo '--- END FILE CONTENT ---'.PHP_EOL; - ob_start(); - } - - $this->inConflict = false; - $this->currentFile->ruleset->populateTokenListeners(); - $this->currentFile->setContent($contents); - $this->currentFile->process(); - ob_end_clean(); - - $this->loops++; - - if (PHP_CODESNIFFER_CBF === true && PHP_CODESNIFFER_VERBOSITY > 0) { - echo "\r".str_repeat(' ', 80)."\r"; - echo "\t=> Fixing file: $this->numFixes/$fixable violations remaining [made $this->loops pass"; - if ($this->loops > 1) { - echo 'es'; - } - - echo ']... '; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo PHP_EOL; - } - } - - if ($this->numFixes === 0 && $this->inConflict === false) { - // Nothing left to do. - break; - } else if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t* fixed $this->numFixes violations, starting loop ".($this->loops + 1).' *'.PHP_EOL; - } - }//end while - - $this->enabled = false; - - if ($this->numFixes > 0) { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - if (ob_get_level() > 0) { - ob_end_clean(); - } - - echo "\t*** Reached maximum number of loops with $this->numFixes violations left unfixed ***".PHP_EOL; - ob_start(); - } - - return false; - } - - return true; - - }//end fixFile() - - - /** - * Generates a text diff of the original file and the new content. - * - * @param string $filePath Optional file path to diff the file against. - * If not specified, the original version of the - * file will be used. - * @param boolean $colors Print coloured output or not. - * - * @return string - * - * @throws \PHP_CodeSniffer\Exceptions\RuntimeException When the diff command fails. - */ - public function generateDiff($filePath=null, $colors=true) - { - if ($filePath === null) { - $filePath = $this->currentFile->getFilename(); - } - - $cwd = getcwd().DIRECTORY_SEPARATOR; - if (strpos($filePath, $cwd) === 0) { - $filename = substr($filePath, strlen($cwd)); - } else { - $filename = $filePath; - } - - $contents = $this->getContents(); - - $tempName = tempnam(sys_get_temp_dir(), 'phpcs-fixer'); - $fixedFile = fopen($tempName, 'w'); - fwrite($fixedFile, $contents); - - // We must use something like shell_exec() or proc_open() because whitespace at the end - // of lines is critical to diff files. - // Using proc_open() instead of shell_exec improves performance on Windows significantly, - // while the results are the same (though more code is needed to get the results). - // This is specifically due to proc_open allowing to set the "bypass_shell" option. - $filename = escapeshellarg($filename); - $cmd = "diff -u -L$filename -LPHP_CodeSniffer $filename \"$tempName\""; - - // Stream 0 = STDIN, 1 = STDOUT, 2 = STDERR. - $descriptorspec = [ - 0 => [ - 'pipe', - 'r', - ], - 1 => [ - 'pipe', - 'w', - ], - 2 => [ - 'pipe', - 'w', - ], - ]; - - $options = null; - if (stripos(PHP_OS, 'WIN') === 0) { - $options = ['bypass_shell' => true]; - } - - $process = proc_open($cmd, $descriptorspec, $pipes, $cwd, null, $options); - if (is_resource($process) === false) { - throw new RuntimeException('Could not obtain a resource to execute the diff command.'); - } - - // We don't need these. - fclose($pipes[0]); - fclose($pipes[2]); - - // Stdout will contain the actual diff. - $diff = stream_get_contents($pipes[1]); - fclose($pipes[1]); - - proc_close($process); - - fclose($fixedFile); - if (is_file($tempName) === true) { - unlink($tempName); - } - - if ($diff === false || $diff === '') { - return ''; - } - - if ($colors === false) { - return $diff; - } - - $diffLines = explode(PHP_EOL, $diff); - if (count($diffLines) === 1) { - // Seems to be required for cygwin. - $diffLines = explode("\n", $diff); - } - - $diff = []; - foreach ($diffLines as $line) { - if (isset($line[0]) === true) { - switch ($line[0]) { - case '-': - $diff[] = "\033[31m$line\033[0m"; - break; - case '+': - $diff[] = "\033[32m$line\033[0m"; - break; - default: - $diff[] = $line; - } - } - } - - $diff = implode(PHP_EOL, $diff); - - return $diff; - - }//end generateDiff() - - - /** - * Get a count of fixes that have been performed on the file. - * - * This value is reset every time a new file is started, or an existing - * file is restarted. - * - * @return int - */ - public function getFixCount() - { - return $this->numFixes; - - }//end getFixCount() - - - /** - * Get the current content of the file, as a string. - * - * @return string - */ - public function getContents() - { - $contents = implode($this->tokens); - return $contents; - - }//end getContents() - - - /** - * Get the current fixed content of a token. - * - * This function takes changesets into account so should be used - * instead of directly accessing the token array. - * - * @param int $stackPtr The position of the token in the token stack. - * - * @return string - */ - public function getTokenContent($stackPtr) - { - if ($this->inChangeset === true - && isset($this->changeset[$stackPtr]) === true - ) { - return $this->changeset[$stackPtr]; - } else { - return $this->tokens[$stackPtr]; - } - - }//end getTokenContent() - - - /** - * Start recording actions for a changeset. - * - * @return void|false - */ - public function beginChangeset() - { - if ($this->inConflict === true) { - return false; - } - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $bt = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); - if ($bt[1]['class'] === __CLASS__) { - $sniff = 'Fixer'; - } else { - $sniff = Common::getSniffCode($bt[1]['class']); - } - - $line = $bt[0]['line']; - - @ob_end_clean(); - echo "\t=> Changeset started by $sniff:$line".PHP_EOL; - ob_start(); - } - - $this->changeset = []; - $this->inChangeset = true; - - }//end beginChangeset() - - - /** - * Stop recording actions for a changeset, and apply logged changes. - * - * @return boolean - */ - public function endChangeset() - { - if ($this->inConflict === true) { - return false; - } - - $this->inChangeset = false; - - $success = true; - $applied = []; - foreach ($this->changeset as $stackPtr => $content) { - $success = $this->replaceToken($stackPtr, $content); - if ($success === false) { - break; - } else { - $applied[] = $stackPtr; - } - } - - if ($success === false) { - // Rolling back all changes. - foreach ($applied as $stackPtr) { - $this->revertToken($stackPtr); - } - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - @ob_end_clean(); - echo "\t=> Changeset failed to apply".PHP_EOL; - ob_start(); - } - } else if (PHP_CODESNIFFER_VERBOSITY > 1) { - $fixes = count($this->changeset); - @ob_end_clean(); - echo "\t=> Changeset ended: $fixes changes applied".PHP_EOL; - ob_start(); - } - - $this->changeset = []; - return true; - - }//end endChangeset() - - - /** - * Stop recording actions for a changeset, and discard logged changes. - * - * @return void - */ - public function rollbackChangeset() - { - $this->inChangeset = false; - $this->inConflict = false; - - if (empty($this->changeset) === false) { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $bt = debug_backtrace(); - if ($bt[1]['class'] === 'PHP_CodeSniffer\Fixer') { - $sniff = $bt[2]['class']; - $line = $bt[1]['line']; - } else { - $sniff = $bt[1]['class']; - $line = $bt[0]['line']; - } - - $sniff = Common::getSniffCode($sniff); - - $numChanges = count($this->changeset); - - @ob_end_clean(); - echo "\t\tR: $sniff:$line rolled back the changeset ($numChanges changes)".PHP_EOL; - echo "\t=> Changeset rolled back".PHP_EOL; - ob_start(); - } - - $this->changeset = []; - }//end if - - }//end rollbackChangeset() - - - /** - * Replace the entire contents of a token. - * - * @param int $stackPtr The position of the token in the token stack. - * @param string $content The new content of the token. - * - * @return bool If the change was accepted. - */ - public function replaceToken($stackPtr, $content) - { - if ($this->inConflict === true) { - return false; - } - - if ($this->inChangeset === false - && isset($this->fixedTokens[$stackPtr]) === true - ) { - $indent = "\t"; - if (empty($this->changeset) === false) { - $indent .= "\t"; - } - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - @ob_end_clean(); - echo "$indent* token $stackPtr has already been modified, skipping *".PHP_EOL; - ob_start(); - } - - return false; - } - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $bt = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); - if ($bt[1]['class'] === 'PHP_CodeSniffer\Fixer') { - $sniff = $bt[2]['class']; - $line = $bt[1]['line']; - } else { - $sniff = $bt[1]['class']; - $line = $bt[0]['line']; - } - - $sniff = Common::getSniffCode($sniff); - - $tokens = $this->currentFile->getTokens(); - $type = $tokens[$stackPtr]['type']; - $tokenLine = $tokens[$stackPtr]['line']; - $oldContent = Common::prepareForOutput($this->tokens[$stackPtr]); - $newContent = Common::prepareForOutput($content); - if (trim($this->tokens[$stackPtr]) === '' && isset($this->tokens[($stackPtr + 1)]) === true) { - // Add some context for whitespace only changes. - $append = Common::prepareForOutput($this->tokens[($stackPtr + 1)]); - $oldContent .= $append; - $newContent .= $append; - } - }//end if - - if ($this->inChangeset === true) { - $this->changeset[$stackPtr] = $content; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - @ob_end_clean(); - echo "\t\tQ: $sniff:$line replaced token $stackPtr ($type on line $tokenLine) \"$oldContent\" => \"$newContent\"".PHP_EOL; - ob_start(); - } - - return true; - } - - if (isset($this->oldTokenValues[$stackPtr]) === false) { - $this->oldTokenValues[$stackPtr] = [ - 'curr' => $content, - 'prev' => $this->tokens[$stackPtr], - 'loop' => $this->loops, - ]; - } else { - if ($this->oldTokenValues[$stackPtr]['prev'] === $content - && $this->oldTokenValues[$stackPtr]['loop'] === ($this->loops - 1) - ) { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $indent = "\t"; - if (empty($this->changeset) === false) { - $indent .= "\t"; - } - - $loop = $this->oldTokenValues[$stackPtr]['loop']; - - @ob_end_clean(); - echo "$indent**** $sniff:$line has possible conflict with another sniff on loop $loop; caused by the following change ****".PHP_EOL; - echo "$indent**** replaced token $stackPtr ($type on line $tokenLine) \"$oldContent\" => \"$newContent\" ****".PHP_EOL; - } - - if ($this->oldTokenValues[$stackPtr]['loop'] >= ($this->loops - 1)) { - $this->inConflict = true; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "$indent**** ignoring all changes until next loop ****".PHP_EOL; - } - } - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - ob_start(); - } - - return false; - }//end if - - $this->oldTokenValues[$stackPtr]['prev'] = $this->oldTokenValues[$stackPtr]['curr']; - $this->oldTokenValues[$stackPtr]['curr'] = $content; - $this->oldTokenValues[$stackPtr]['loop'] = $this->loops; - }//end if - - $this->fixedTokens[$stackPtr] = $this->tokens[$stackPtr]; - $this->tokens[$stackPtr] = $content; - $this->numFixes++; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $indent = "\t"; - if (empty($this->changeset) === false) { - $indent .= "\tA: "; - } - - if (ob_get_level() > 0) { - ob_end_clean(); - } - - echo "$indent$sniff:$line replaced token $stackPtr ($type on line $tokenLine) \"$oldContent\" => \"$newContent\"".PHP_EOL; - ob_start(); - } - - return true; - - }//end replaceToken() - - - /** - * Reverts the previous fix made to a token. - * - * @param int $stackPtr The position of the token in the token stack. - * - * @return bool If a change was reverted. - */ - public function revertToken($stackPtr) - { - if (isset($this->fixedTokens[$stackPtr]) === false) { - return false; - } - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $bt = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); - if ($bt[1]['class'] === 'PHP_CodeSniffer\Fixer') { - $sniff = $bt[2]['class']; - $line = $bt[1]['line']; - } else { - $sniff = $bt[1]['class']; - $line = $bt[0]['line']; - } - - $sniff = Common::getSniffCode($sniff); - - $tokens = $this->currentFile->getTokens(); - $type = $tokens[$stackPtr]['type']; - $tokenLine = $tokens[$stackPtr]['line']; - $oldContent = Common::prepareForOutput($this->tokens[$stackPtr]); - $newContent = Common::prepareForOutput($this->fixedTokens[$stackPtr]); - if (trim($this->tokens[$stackPtr]) === '' && isset($tokens[($stackPtr + 1)]) === true) { - // Add some context for whitespace only changes. - $append = Common::prepareForOutput($this->tokens[($stackPtr + 1)]); - $oldContent .= $append; - $newContent .= $append; - } - }//end if - - $this->tokens[$stackPtr] = $this->fixedTokens[$stackPtr]; - unset($this->fixedTokens[$stackPtr]); - $this->numFixes--; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $indent = "\t"; - if (empty($this->changeset) === false) { - $indent .= "\tR: "; - } - - @ob_end_clean(); - echo "$indent$sniff:$line reverted token $stackPtr ($type on line $tokenLine) \"$oldContent\" => \"$newContent\"".PHP_EOL; - ob_start(); - } - - return true; - - }//end revertToken() - - - /** - * Replace the content of a token with a part of its current content. - * - * @param int $stackPtr The position of the token in the token stack. - * @param int $start The first character to keep. - * @param int $length The number of characters to keep. If NULL, the content of - * the token from $start to the end of the content is kept. - * - * @return bool If the change was accepted. - */ - public function substrToken($stackPtr, $start, $length=null) - { - $current = $this->getTokenContent($stackPtr); - - if ($length === null) { - $newContent = substr($current, $start); - } else { - $newContent = substr($current, $start, $length); - } - - return $this->replaceToken($stackPtr, $newContent); - - }//end substrToken() - - - /** - * Adds a newline to end of a token's content. - * - * @param int $stackPtr The position of the token in the token stack. - * - * @return bool If the change was accepted. - */ - public function addNewline($stackPtr) - { - $current = $this->getTokenContent($stackPtr); - return $this->replaceToken($stackPtr, $current.$this->currentFile->eolChar); - - }//end addNewline() - - - /** - * Adds a newline to the start of a token's content. - * - * @param int $stackPtr The position of the token in the token stack. - * - * @return bool If the change was accepted. - */ - public function addNewlineBefore($stackPtr) - { - $current = $this->getTokenContent($stackPtr); - return $this->replaceToken($stackPtr, $this->currentFile->eolChar.$current); - - }//end addNewlineBefore() - - - /** - * Adds content to the end of a token's current content. - * - * @param int $stackPtr The position of the token in the token stack. - * @param string $content The content to add. - * - * @return bool If the change was accepted. - */ - public function addContent($stackPtr, $content) - { - $current = $this->getTokenContent($stackPtr); - return $this->replaceToken($stackPtr, $current.$content); - - }//end addContent() - - - /** - * Adds content to the start of a token's current content. - * - * @param int $stackPtr The position of the token in the token stack. - * @param string $content The content to add. - * - * @return bool If the change was accepted. - */ - public function addContentBefore($stackPtr, $content) - { - $current = $this->getTokenContent($stackPtr); - return $this->replaceToken($stackPtr, $content.$current); - - }//end addContentBefore() - - - /** - * Adjust the indent of a code block. - * - * @param int $start The position of the token in the token stack - * to start adjusting the indent from. - * @param int $end The position of the token in the token stack - * to end adjusting the indent. - * @param int $change The number of spaces to adjust the indent by - * (positive or negative). - * - * @return void - */ - public function changeCodeBlockIndent($start, $end, $change) - { - $tokens = $this->currentFile->getTokens(); - - $baseIndent = ''; - if ($change > 0) { - $baseIndent = str_repeat(' ', $change); - } - - $useChangeset = false; - if ($this->inChangeset === false) { - $this->beginChangeset(); - $useChangeset = true; - } - - for ($i = $start; $i <= $end; $i++) { - if ($tokens[$i]['column'] !== 1 - || $tokens[($i + 1)]['line'] !== $tokens[$i]['line'] - ) { - continue; - } - - $length = 0; - if ($tokens[$i]['code'] === T_WHITESPACE - || $tokens[$i]['code'] === T_DOC_COMMENT_WHITESPACE - ) { - $length = $tokens[$i]['length']; - - $padding = ($length + $change); - if ($padding > 0) { - $padding = str_repeat(' ', $padding); - } else { - $padding = ''; - } - - $newContent = $padding.ltrim($tokens[$i]['content']); - } else { - $newContent = $baseIndent.$tokens[$i]['content']; - } - - $this->replaceToken($i, $newContent); - }//end for - - if ($useChangeset === true) { - $this->endChangeset(); - } - - }//end changeCodeBlockIndent() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Generators/Generator.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Generators/Generator.php deleted file mode 100644 index 873ac3f3..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Generators/Generator.php +++ /dev/null @@ -1,128 +0,0 @@ - - * @author Juliette Reinders Folmer - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @copyright 2024 PHPCSStandards and contributors - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Generators; - -use DOMDocument; -use DOMNode; -use PHP_CodeSniffer\Autoload; -use PHP_CodeSniffer\Ruleset; - -abstract class Generator -{ - - /** - * The ruleset used for the run. - * - * @var \PHP_CodeSniffer\Ruleset - */ - public $ruleset = null; - - /** - * XML documentation files used to produce the final output. - * - * @var string[] - */ - public $docFiles = []; - - - /** - * Constructs a doc generator. - * - * @param \PHP_CodeSniffer\Ruleset $ruleset The ruleset used for the run. - * - * @see generate() - */ - public function __construct(Ruleset $ruleset) - { - $this->ruleset = $ruleset; - - $find = [ - DIRECTORY_SEPARATOR.'Sniffs'.DIRECTORY_SEPARATOR, - 'Sniff.php', - ]; - $replace = [ - DIRECTORY_SEPARATOR.'Docs'.DIRECTORY_SEPARATOR, - 'Standard.xml', - ]; - - foreach ($ruleset->sniffs as $className => $sniffClass) { - $file = Autoload::getLoadedFileName($className); - $docFile = str_replace($find, $replace, $file); - - if (is_file($docFile) === true) { - $this->docFiles[] = $docFile; - } - } - - // Always present the docs in a consistent alphabetical order. - sort($this->docFiles, (SORT_NATURAL | SORT_FLAG_CASE)); - - }//end __construct() - - - /** - * Retrieves the title of the sniff from the DOMNode supplied. - * - * @param \DOMNode $doc The DOMNode object for the sniff. - * It represents the "documentation" tag in the XML - * standard file. - * - * @return string - */ - protected function getTitle(DOMNode $doc) - { - return $doc->getAttribute('title'); - - }//end getTitle() - - - /** - * Generates the documentation for a standard. - * - * It's probably wise for doc generators to override this method so they - * have control over how the docs are produced. Otherwise, the processSniff - * method should be overridden to output content for each sniff. - * - * @return void - * @see processSniff() - */ - public function generate() - { - foreach ($this->docFiles as $file) { - $doc = new DOMDocument(); - $doc->load($file); - $documentation = $doc->getElementsByTagName('documentation')->item(0); - $this->processSniff($documentation); - } - - }//end generate() - - - /** - * Process the documentation for a single sniff. - * - * Doc generators must implement this function to produce output. - * - * @param \DOMNode $doc The DOMNode object for the sniff. - * It represents the "documentation" tag in the XML - * standard file. - * - * @return void - * @see generate() - */ - abstract protected function processSniff(DOMNode $doc); - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Generators/HTML.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Generators/HTML.php deleted file mode 100644 index ba05d072..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Generators/HTML.php +++ /dev/null @@ -1,316 +0,0 @@ - - * @author Juliette Reinders Folmer - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @copyright 2024 PHPCSStandards and contributors - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Generators; - -use DOMDocument; -use DOMNode; -use PHP_CodeSniffer\Config; - -class HTML extends Generator -{ - - /** - * Stylesheet for the HTML output. - * - * @var string - */ - const STYLESHEET = ''; - - - /** - * Generates the documentation for a standard. - * - * @return void - * @see processSniff() - */ - public function generate() - { - if (empty($this->docFiles) === true) { - return; - } - - ob_start(); - $this->printHeader(); - $this->printToc(); - - foreach ($this->docFiles as $file) { - $doc = new DOMDocument(); - $doc->load($file); - $documentation = $doc->getElementsByTagName('documentation')->item(0); - $this->processSniff($documentation); - } - - $this->printFooter(); - - $content = ob_get_contents(); - ob_end_clean(); - - echo $content; - - }//end generate() - - - /** - * Print the header of the HTML page. - * - * @return void - */ - protected function printHeader() - { - $standard = $this->ruleset->name; - echo ''.PHP_EOL; - echo ' '.PHP_EOL; - echo " $standard Coding Standards".PHP_EOL; - echo ' '.str_replace("\n", PHP_EOL, self::STYLESHEET).PHP_EOL; - echo ' '.PHP_EOL; - echo ' '.PHP_EOL; - echo "

      $standard Coding Standards

      ".PHP_EOL; - - }//end printHeader() - - - /** - * Print the table of contents for the standard. - * - * The TOC is just an unordered list of bookmarks to sniffs on the page. - * - * @return void - */ - protected function printToc() - { - // Only show a TOC when there are two or more docs to display. - if (count($this->docFiles) < 2) { - return; - } - - echo '

      Table of Contents

      '.PHP_EOL; - echo '
        '.PHP_EOL; - - foreach ($this->docFiles as $file) { - $doc = new DOMDocument(); - $doc->load($file); - $documentation = $doc->getElementsByTagName('documentation')->item(0); - $title = $this->getTitle($documentation); - echo '
      • $title
      • ".PHP_EOL; - } - - echo '
      '.PHP_EOL; - - }//end printToc() - - - /** - * Print the footer of the HTML page. - * - * @return void - */ - protected function printFooter() - { - // Turn off errors so we don't get timezone warnings if people - // don't have their timezone set. - $errorLevel = error_reporting(0); - echo '
      '; - echo 'Documentation generated on '.date('r'); - echo ' by PHP_CodeSniffer '.Config::VERSION.''; - echo '
      '.PHP_EOL; - error_reporting($errorLevel); - - echo ' '.PHP_EOL; - echo ''.PHP_EOL; - - }//end printFooter() - - - /** - * Process the documentation for a single sniff. - * - * @param \DOMNode $doc The DOMNode object for the sniff. - * It represents the "documentation" tag in the XML - * standard file. - * - * @return void - */ - public function processSniff(DOMNode $doc) - { - $title = $this->getTitle($doc); - echo ' '.PHP_EOL; - echo "

      $title

      ".PHP_EOL; - - foreach ($doc->childNodes as $node) { - if ($node->nodeName === 'standard') { - $this->printTextBlock($node); - } else if ($node->nodeName === 'code_comparison') { - $this->printCodeComparisonBlock($node); - } - } - - }//end processSniff() - - - /** - * Print a text block found in a standard. - * - * @param \DOMNode $node The DOMNode object for the text block. - * - * @return void - */ - protected function printTextBlock(DOMNode $node) - { - $content = trim($node->nodeValue); - $content = htmlspecialchars($content, (ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401)); - - // Allow only em tags. - $content = str_replace('<em>', '', $content); - $content = str_replace('</em>', '', $content); - - $nodeLines = explode("\n", $content); - $lineCount = count($nodeLines); - $lines = []; - - for ($i = 0; $i < $lineCount; $i++) { - $currentLine = trim($nodeLines[$i]); - - if (isset($nodeLines[($i + 1)]) === false) { - // We're at the end of the text, just add the line. - $lines[] = $currentLine; - } else { - $nextLine = trim($nodeLines[($i + 1)]); - if ($nextLine === '') { - // Next line is a blank line, end the paragraph and start a new one. - // Also skip over the blank line. - $lines[] = $currentLine.'

      '.PHP_EOL.'

      '; - ++$i; - } else { - // Next line is not blank, so just add a line break. - $lines[] = $currentLine.'
      '.PHP_EOL; - } - } - } - - echo '

      '.implode('', $lines).'

      '.PHP_EOL; - - }//end printTextBlock() - - - /** - * Print a code comparison block found in a standard. - * - * @param \DOMNode $node The DOMNode object for the code comparison block. - * - * @return void - */ - protected function printCodeComparisonBlock(DOMNode $node) - { - $codeBlocks = $node->getElementsByTagName('code'); - - $firstTitle = trim($codeBlocks->item(0)->getAttribute('title')); - $firstTitle = str_replace(' ', '  ', $firstTitle); - $first = trim($codeBlocks->item(0)->nodeValue); - $first = str_replace('', $first); - $first = str_replace(' ', ' ', $first); - $first = str_replace('', '', $first); - $first = str_replace('', '', $first); - - $secondTitle = trim($codeBlocks->item(1)->getAttribute('title')); - $secondTitle = str_replace(' ', '  ', $secondTitle); - $second = trim($codeBlocks->item(1)->nodeValue); - $second = str_replace('', $second); - $second = str_replace(' ', ' ', $second); - $second = str_replace('', '', $second); - $second = str_replace('', '', $second); - - echo '
    %s%d%%
    %s%d%%
    %s%d
    %s%d
     
    '.PHP_EOL; - echo ' '.PHP_EOL; - echo " ".PHP_EOL; - echo " ".PHP_EOL; - echo ' '.PHP_EOL; - echo ' '.PHP_EOL; - echo " ".PHP_EOL; - echo " ".PHP_EOL; - echo ' '.PHP_EOL; - echo '
    $firstTitle$secondTitle
    $first$second
    '.PHP_EOL; - - }//end printCodeComparisonBlock() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Generators/Markdown.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Generators/Markdown.php deleted file mode 100644 index 55ef3972..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Generators/Markdown.php +++ /dev/null @@ -1,195 +0,0 @@ - - * @author Juliette Reinders Folmer - * @copyright 2014 Arroba IT - * @copyright 2024 PHPCSStandards and contributors - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Generators; - -use DOMDocument; -use DOMNode; -use PHP_CodeSniffer\Config; - -class Markdown extends Generator -{ - - - /** - * Generates the documentation for a standard. - * - * @return void - * @see processSniff() - */ - public function generate() - { - if (empty($this->docFiles) === true) { - return; - } - - ob_start(); - $this->printHeader(); - - foreach ($this->docFiles as $file) { - $doc = new DOMDocument(); - $doc->load($file); - $documentation = $doc->getElementsByTagName('documentation')->item(0); - $this->processSniff($documentation); - } - - $this->printFooter(); - $content = ob_get_contents(); - ob_end_clean(); - - echo $content; - - }//end generate() - - - /** - * Print the markdown header. - * - * @return void - */ - protected function printHeader() - { - $standard = $this->ruleset->name; - - echo "# $standard Coding Standard".PHP_EOL; - - }//end printHeader() - - - /** - * Print the markdown footer. - * - * @return void - */ - protected function printFooter() - { - // Turn off errors so we don't get timezone warnings if people - // don't have their timezone set. - $errorLevel = error_reporting(0); - echo PHP_EOL.'Documentation generated on '.date('r'); - echo ' by [PHP_CodeSniffer '.Config::VERSION.'](https://github.com/PHPCSStandards/PHP_CodeSniffer)'.PHP_EOL; - error_reporting($errorLevel); - - }//end printFooter() - - - /** - * Process the documentation for a single sniff. - * - * @param \DOMNode $doc The DOMNode object for the sniff. - * It represents the "documentation" tag in the XML - * standard file. - * - * @return void - */ - protected function processSniff(DOMNode $doc) - { - $title = $this->getTitle($doc); - echo PHP_EOL."## $title".PHP_EOL.PHP_EOL; - - foreach ($doc->childNodes as $node) { - if ($node->nodeName === 'standard') { - $this->printTextBlock($node); - } else if ($node->nodeName === 'code_comparison') { - $this->printCodeComparisonBlock($node); - } - } - - }//end processSniff() - - - /** - * Print a text block found in a standard. - * - * @param \DOMNode $node The DOMNode object for the text block. - * - * @return void - */ - protected function printTextBlock(DOMNode $node) - { - $content = trim($node->nodeValue); - $content = htmlspecialchars($content, (ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401)); - $content = str_replace('<em>', '*', $content); - $content = str_replace('</em>', '*', $content); - - $nodeLines = explode("\n", $content); - $lineCount = count($nodeLines); - $lines = []; - - for ($i = 0; $i < $lineCount; $i++) { - $currentLine = trim($nodeLines[$i]); - if ($currentLine === '') { - // The text contained a blank line. Respect this. - $lines[] = ''; - continue; - } - - // Check if the _next_ line is blank. - if (isset($nodeLines[($i + 1)]) === false - || trim($nodeLines[($i + 1)]) === '' - ) { - // Next line is blank, just add the line. - $lines[] = $currentLine; - } else { - // Ensure that line breaks are respected in markdown. - $lines[] = $currentLine.' '; - } - } - - echo implode(PHP_EOL, $lines).PHP_EOL; - - }//end printTextBlock() - - - /** - * Print a code comparison block found in a standard. - * - * @param \DOMNode $node The DOMNode object for the code comparison block. - * - * @return void - */ - protected function printCodeComparisonBlock(DOMNode $node) - { - $codeBlocks = $node->getElementsByTagName('code'); - - $firstTitle = trim($codeBlocks->item(0)->getAttribute('title')); - $firstTitle = str_replace(' ', '  ', $firstTitle); - $first = trim($codeBlocks->item(0)->nodeValue); - $first = str_replace("\n", PHP_EOL.' ', $first); - $first = str_replace('', '', $first); - $first = str_replace('', '', $first); - - $secondTitle = trim($codeBlocks->item(1)->getAttribute('title')); - $secondTitle = str_replace(' ', '  ', $secondTitle); - $second = trim($codeBlocks->item(1)->nodeValue); - $second = str_replace("\n", PHP_EOL.' ', $second); - $second = str_replace('', '', $second); - $second = str_replace('', '', $second); - - echo ' '.PHP_EOL; - echo ' '.PHP_EOL; - echo " ".PHP_EOL; - echo " ".PHP_EOL; - echo ' '.PHP_EOL; - echo ' '.PHP_EOL; - echo ''.PHP_EOL; - echo ''.PHP_EOL; - echo ' '.PHP_EOL; - echo '
    $firstTitle$secondTitle
    '.PHP_EOL.PHP_EOL; - echo " $first".PHP_EOL.PHP_EOL; - echo ''.PHP_EOL.PHP_EOL; - echo " $second".PHP_EOL.PHP_EOL; - echo '
    '.PHP_EOL; - - }//end printCodeComparisonBlock() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Generators/Text.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Generators/Text.php deleted file mode 100644 index e57556d0..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Generators/Text.php +++ /dev/null @@ -1,259 +0,0 @@ - - * @author Juliette Reinders Folmer - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @copyright 2024 PHPCSStandards and contributors - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Generators; - -use DOMNode; - -class Text extends Generator -{ - - - /** - * Process the documentation for a single sniff. - * - * @param \DOMNode $doc The DOMNode object for the sniff. - * It represents the "documentation" tag in the XML - * standard file. - * - * @return void - */ - public function processSniff(DOMNode $doc) - { - $this->printTitle($doc); - - foreach ($doc->childNodes as $node) { - if ($node->nodeName === 'standard') { - $this->printTextBlock($node); - } else if ($node->nodeName === 'code_comparison') { - $this->printCodeComparisonBlock($node); - } - } - - }//end processSniff() - - - /** - * Prints the title area for a single sniff. - * - * @param \DOMNode $doc The DOMNode object for the sniff. - * It represents the "documentation" tag in the XML - * standard file. - * - * @return void - */ - protected function printTitle(DOMNode $doc) - { - $title = $this->getTitle($doc); - $standard = $this->ruleset->name; - $displayTitle = "$standard CODING STANDARD: $title"; - $titleLength = strlen($displayTitle); - - echo PHP_EOL; - echo str_repeat('-', ($titleLength + 4)); - echo strtoupper(PHP_EOL."| $displayTitle |".PHP_EOL); - echo str_repeat('-', ($titleLength + 4)); - echo PHP_EOL.PHP_EOL; - - }//end printTitle() - - - /** - * Print a text block found in a standard. - * - * @param \DOMNode $node The DOMNode object for the text block. - * - * @return void - */ - protected function printTextBlock(DOMNode $node) - { - $text = trim($node->nodeValue); - $text = str_replace('', '*', $text); - $text = str_replace('', '*', $text); - - $nodeLines = explode("\n", $text); - $lines = []; - - foreach ($nodeLines as $currentLine) { - $currentLine = trim($currentLine); - if ($currentLine === '') { - // The text contained a blank line. Respect this. - $lines[] = ''; - continue; - } - - $tempLine = ''; - $words = explode(' ', $currentLine); - - foreach ($words as $word) { - $currentLength = strlen($tempLine.$word); - if ($currentLength < 99) { - $tempLine .= $word.' '; - continue; - } - - if ($currentLength === 99 || $currentLength === 100) { - // We are already at the edge, so we are done. - $lines[] = $tempLine.$word; - $tempLine = ''; - } else { - $lines[] = rtrim($tempLine); - $tempLine = $word.' '; - } - }//end foreach - - if ($tempLine !== '') { - $lines[] = rtrim($tempLine); - } - }//end foreach - - echo implode(PHP_EOL, $lines).PHP_EOL.PHP_EOL; - - }//end printTextBlock() - - - /** - * Print a code comparison block found in a standard. - * - * @param \DOMNode $node The DOMNode object for the code comparison block. - * - * @return void - */ - protected function printCodeComparisonBlock(DOMNode $node) - { - $codeBlocks = $node->getElementsByTagName('code'); - $first = trim($codeBlocks->item(0)->nodeValue); - $firstTitle = trim($codeBlocks->item(0)->getAttribute('title')); - - $firstTitleLines = []; - $tempTitle = ''; - $words = explode(' ', $firstTitle); - - foreach ($words as $word) { - if (strlen($tempTitle.$word) >= 45) { - if (strlen($tempTitle.$word) === 45) { - // Adding the extra space will push us to the edge - // so we are done. - $firstTitleLines[] = $tempTitle.$word; - $tempTitle = ''; - } else if (strlen($tempTitle.$word) === 46) { - // We are already at the edge, so we are done. - $firstTitleLines[] = $tempTitle.$word; - $tempTitle = ''; - } else { - $firstTitleLines[] = $tempTitle; - $tempTitle = $word.' '; - } - } else { - $tempTitle .= $word.' '; - } - }//end foreach - - if ($tempTitle !== '') { - $firstTitleLines[] = $tempTitle; - } - - $first = str_replace('', '', $first); - $first = str_replace('', '', $first); - $firstLines = explode("\n", $first); - - $second = trim($codeBlocks->item(1)->nodeValue); - $secondTitle = trim($codeBlocks->item(1)->getAttribute('title')); - - $secondTitleLines = []; - $tempTitle = ''; - $words = explode(' ', $secondTitle); - - foreach ($words as $word) { - if (strlen($tempTitle.$word) >= 45) { - if (strlen($tempTitle.$word) === 45) { - // Adding the extra space will push us to the edge - // so we are done. - $secondTitleLines[] = $tempTitle.$word; - $tempTitle = ''; - } else if (strlen($tempTitle.$word) === 46) { - // We are already at the edge, so we are done. - $secondTitleLines[] = $tempTitle.$word; - $tempTitle = ''; - } else { - $secondTitleLines[] = $tempTitle; - $tempTitle = $word.' '; - } - } else { - $tempTitle .= $word.' '; - } - }//end foreach - - if ($tempTitle !== '') { - $secondTitleLines[] = $tempTitle; - } - - $second = str_replace('', '', $second); - $second = str_replace('', '', $second); - $secondLines = explode("\n", $second); - - $maxCodeLines = max(count($firstLines), count($secondLines)); - $maxTitleLines = max(count($firstTitleLines), count($secondTitleLines)); - - echo str_repeat('-', 41); - echo ' CODE COMPARISON '; - echo str_repeat('-', 42).PHP_EOL; - - for ($i = 0; $i < $maxTitleLines; $i++) { - if (isset($firstTitleLines[$i]) === true) { - $firstLineText = $firstTitleLines[$i]; - } else { - $firstLineText = ''; - } - - if (isset($secondTitleLines[$i]) === true) { - $secondLineText = $secondTitleLines[$i]; - } else { - $secondLineText = ''; - } - - echo '| '; - echo $firstLineText.str_repeat(' ', (46 - strlen($firstLineText))); - echo ' | '; - echo $secondLineText.str_repeat(' ', (47 - strlen($secondLineText))); - echo ' |'.PHP_EOL; - }//end for - - echo str_repeat('-', 100).PHP_EOL; - - for ($i = 0; $i < $maxCodeLines; $i++) { - if (isset($firstLines[$i]) === true) { - $firstLineText = $firstLines[$i]; - } else { - $firstLineText = ''; - } - - if (isset($secondLines[$i]) === true) { - $secondLineText = $secondLines[$i]; - } else { - $secondLineText = ''; - } - - echo '| '; - echo $firstLineText.str_repeat(' ', max(0, (47 - strlen($firstLineText)))); - echo '| '; - echo $secondLineText.str_repeat(' ', max(0, (48 - strlen($secondLineText)))); - echo '|'.PHP_EOL; - }//end for - - echo str_repeat('-', 100).PHP_EOL.PHP_EOL; - - }//end printCodeComparisonBlock() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reporter.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reporter.php deleted file mode 100644 index 824031a4..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reporter.php +++ /dev/null @@ -1,445 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer; - -use PHP_CodeSniffer\Exceptions\DeepExitException; -use PHP_CodeSniffer\Exceptions\RuntimeException; -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Reports\Report; -use PHP_CodeSniffer\Util\Common; - -class Reporter -{ - - /** - * The config data for the run. - * - * @var \PHP_CodeSniffer\Config - */ - public $config = null; - - /** - * Total number of files that contain errors or warnings. - * - * @var integer - */ - public $totalFiles = 0; - - /** - * Total number of errors found during the run. - * - * @var integer - */ - public $totalErrors = 0; - - /** - * Total number of warnings found during the run. - * - * @var integer - */ - public $totalWarnings = 0; - - /** - * Total number of errors/warnings that can be fixed. - * - * @var integer - */ - public $totalFixable = 0; - - /** - * Total number of errors/warnings that were fixed. - * - * @var integer - */ - public $totalFixed = 0; - - /** - * When the PHPCS run started. - * - * @var float - */ - public static $startTime = 0; - - /** - * A cache of report objects. - * - * @var array - */ - private $reports = []; - - /** - * A cache of opened temporary files. - * - * @var array - */ - private $tmpFiles = []; - - - /** - * Initialise the reporter. - * - * All reports specified in the config will be created and their - * output file (or a temp file if none is specified) initialised by - * clearing the current contents. - * - * @param \PHP_CodeSniffer\Config $config The config data for the run. - * - * @return void - * @throws \PHP_CodeSniffer\Exceptions\DeepExitException If a custom report class could not be found. - * @throws \PHP_CodeSniffer\Exceptions\RuntimeException If a report class is incorrectly set up. - */ - public function __construct(Config $config) - { - $this->config = $config; - - foreach ($config->reports as $type => $output) { - if ($output === null) { - $output = $config->reportFile; - } - - $reportClassName = ''; - if (strpos($type, '.') !== false) { - // This is a path to a custom report class. - $filename = realpath($type); - if ($filename === false) { - $error = "ERROR: Custom report \"$type\" not found".PHP_EOL; - throw new DeepExitException($error, 3); - } - - $reportClassName = Autoload::loadFile($filename); - } else if (class_exists('PHP_CodeSniffer\Reports\\'.ucfirst($type)) === true) { - // PHPCS native report. - $reportClassName = 'PHP_CodeSniffer\Reports\\'.ucfirst($type); - } else if (class_exists($type) === true) { - // FQN of a custom report. - $reportClassName = $type; - } else { - // OK, so not a FQN, try and find the report using the registered namespaces. - $registeredNamespaces = Autoload::getSearchPaths(); - $trimmedType = ltrim($type, '\\'); - - foreach ($registeredNamespaces as $nsPrefix) { - if ($nsPrefix === '') { - continue; - } - - if (class_exists($nsPrefix.'\\'.$trimmedType) === true) { - $reportClassName = $nsPrefix.'\\'.$trimmedType; - break; - } - } - }//end if - - if ($reportClassName === '') { - $error = "ERROR: Class file for report \"$type\" not found".PHP_EOL; - throw new DeepExitException($error, 3); - } - - $reportClass = new $reportClassName(); - if (($reportClass instanceof Report) === false) { - throw new RuntimeException('Class "'.$reportClassName.'" must implement the "PHP_CodeSniffer\Report" interface.'); - } - - $this->reports[$type] = [ - 'output' => $output, - 'class' => $reportClass, - ]; - - if ($output === null) { - // Using a temp file. - // This needs to be set in the constructor so that all - // child procs use the same report file when running in parallel. - $this->tmpFiles[$type] = tempnam(sys_get_temp_dir(), 'phpcs'); - file_put_contents($this->tmpFiles[$type], ''); - } else { - file_put_contents($output, ''); - } - }//end foreach - - }//end __construct() - - - /** - * Generates and prints final versions of all reports. - * - * Returns TRUE if any of the reports output content to the screen - * or FALSE if all reports were silently printed to a file. - * - * @return bool - */ - public function printReports() - { - $toScreen = false; - foreach ($this->reports as $type => $report) { - if ($report['output'] === null) { - $toScreen = true; - } - - $this->printReport($type); - } - - return $toScreen; - - }//end printReports() - - - /** - * Generates and prints a single final report. - * - * @param string $report The report type to print. - * - * @return void - */ - public function printReport($report) - { - $reportClass = $this->reports[$report]['class']; - $reportFile = $this->reports[$report]['output']; - - if ($reportFile !== null) { - $filename = $reportFile; - $toScreen = false; - } else { - if (isset($this->tmpFiles[$report]) === true) { - $filename = $this->tmpFiles[$report]; - } else { - $filename = null; - } - - $toScreen = true; - } - - $reportCache = ''; - if ($filename !== null) { - $reportCache = file_get_contents($filename); - } - - ob_start(); - $reportClass->generate( - $reportCache, - $this->totalFiles, - $this->totalErrors, - $this->totalWarnings, - $this->totalFixable, - $this->config->showSources, - $this->config->reportWidth, - $this->config->interactive, - $toScreen - ); - $generatedReport = ob_get_contents(); - ob_end_clean(); - - if ($this->config->colors !== true || $reportFile !== null) { - $generatedReport = Common::stripColors($generatedReport); - } - - if ($reportFile !== null) { - if (PHP_CODESNIFFER_VERBOSITY > 0) { - echo $generatedReport; - } - - file_put_contents($reportFile, $generatedReport.PHP_EOL); - } else { - echo $generatedReport; - if ($filename !== null && file_exists($filename) === true) { - unlink($filename); - unset($this->tmpFiles[$report]); - } - } - - }//end printReport() - - - /** - * Caches the result of a single processed file for all reports. - * - * The report content that is generated is appended to the output file - * assigned to each report. This content may be an intermediate report format - * and not reflect the final report output. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file that has been processed. - * - * @return void - */ - public function cacheFileReport(File $phpcsFile) - { - if (isset($this->config->reports) === false) { - // This happens during unit testing, or any time someone just wants - // the error data and not the printed report. - return; - } - - $reportData = $this->prepareFileReport($phpcsFile); - $errorsShown = false; - - foreach ($this->reports as $type => $report) { - $reportClass = $report['class']; - - ob_start(); - $result = $reportClass->generateFileReport($reportData, $phpcsFile, $this->config->showSources, $this->config->reportWidth); - if ($result === true) { - $errorsShown = true; - } - - $generatedReport = ob_get_contents(); - ob_end_clean(); - - if ($report['output'] === null) { - // Using a temp file. - if (isset($this->tmpFiles[$type]) === false) { - // When running in interactive mode, the reporter prints the full - // report many times, which will unlink the temp file. So we need - // to create a new one if it doesn't exist. - $this->tmpFiles[$type] = tempnam(sys_get_temp_dir(), 'phpcs'); - file_put_contents($this->tmpFiles[$type], ''); - } - - file_put_contents($this->tmpFiles[$type], $generatedReport, (FILE_APPEND | LOCK_EX)); - } else { - file_put_contents($report['output'], $generatedReport, (FILE_APPEND | LOCK_EX)); - }//end if - }//end foreach - - if ($errorsShown === true || PHP_CODESNIFFER_CBF === true) { - $this->totalFiles++; - $this->totalErrors += $reportData['errors']; - $this->totalWarnings += $reportData['warnings']; - - // When PHPCBF is running, we need to use the fixable error values - // after the report has run and fixed what it can. - if (PHP_CODESNIFFER_CBF === true) { - $this->totalFixable += $phpcsFile->getFixableCount(); - $this->totalFixed += $phpcsFile->getFixedCount(); - } else { - $this->totalFixable += $reportData['fixable']; - } - } - - }//end cacheFileReport() - - - /** - * Generate summary information to be used during report generation. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file that has been processed. - * - * @return array Prepared report data. - * The format of prepared data is as follows: - * ``` - * array( - * 'filename' => string The name of the current file. - * 'errors' => int The number of errors seen in the current file. - * 'warnings' => int The number of warnings seen in the current file. - * 'fixable' => int The number of fixable issues seen in the current file. - * 'messages' => array( - * int => array( - * int => array( - * int => array( - * 'message' => string The error/warning message. - * 'source' => string The full error code for the message. - * 'severity' => int The severity of the message. - * 'fixable' => bool Whether this error/warning is auto-fixable. - * 'type' => string The type of message. Either 'ERROR' or 'WARNING'. - * ) - * ) - * ) - * ) - * ) - * ``` - */ - public function prepareFileReport(File $phpcsFile) - { - $report = [ - 'filename' => Common::stripBasepath($phpcsFile->getFilename(), $this->config->basepath), - 'errors' => $phpcsFile->getErrorCount(), - 'warnings' => $phpcsFile->getWarningCount(), - 'fixable' => $phpcsFile->getFixableCount(), - 'messages' => [], - ]; - - if ($report['errors'] === 0 && $report['warnings'] === 0) { - // Perfect score! - return $report; - } - - if ($this->config->recordErrors === false) { - $message = 'Errors are not being recorded but this report requires error messages. '; - $message .= 'This report will not show the correct information.'; - $report['messages'][1][1] = [ - [ - 'message' => $message, - 'source' => 'Internal.RecordErrors', - 'severity' => 5, - 'fixable' => false, - 'type' => 'ERROR', - ], - ]; - return $report; - } - - $errors = []; - - // Merge errors and warnings. - foreach ($phpcsFile->getErrors() as $line => $lineErrors) { - foreach ($lineErrors as $column => $colErrors) { - $newErrors = []; - foreach ($colErrors as $data) { - $newErrors[] = [ - 'message' => $data['message'], - 'source' => $data['source'], - 'severity' => $data['severity'], - 'fixable' => $data['fixable'], - 'type' => 'ERROR', - ]; - } - - $errors[$line][$column] = $newErrors; - } - - ksort($errors[$line]); - }//end foreach - - foreach ($phpcsFile->getWarnings() as $line => $lineWarnings) { - foreach ($lineWarnings as $column => $colWarnings) { - $newWarnings = []; - foreach ($colWarnings as $data) { - $newWarnings[] = [ - 'message' => $data['message'], - 'source' => $data['source'], - 'severity' => $data['severity'], - 'fixable' => $data['fixable'], - 'type' => 'WARNING', - ]; - } - - if (isset($errors[$line]) === false) { - $errors[$line] = []; - } - - if (isset($errors[$line][$column]) === true) { - $errors[$line][$column] = array_merge( - $newWarnings, - $errors[$line][$column] - ); - } else { - $errors[$line][$column] = $newWarnings; - } - }//end foreach - - ksort($errors[$line]); - }//end foreach - - ksort($errors); - $report['messages'] = $errors; - return $report; - - }//end prepareFileReport() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Cbf.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Cbf.php deleted file mode 100644 index d3b70fab..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Cbf.php +++ /dev/null @@ -1,254 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Reports; - -use PHP_CodeSniffer\Exceptions\DeepExitException; -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Util\Timing; - -class Cbf implements Report -{ - - - /** - * Generate a partial report for a single processed file. - * - * Function should return TRUE if it printed or stored data about the file - * and FALSE if it ignored the file. Returning TRUE indicates that the file and - * its data should be counted in the grand totals. - * - * @param array $report Prepared report data. - * See the {@see Report} interface for a detailed specification. - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being reported on. - * @param bool $showSources Show sources? - * @param int $width Maximum allowed line width. - * - * @return bool - * @throws \PHP_CodeSniffer\Exceptions\DeepExitException - */ - public function generateFileReport($report, File $phpcsFile, $showSources=false, $width=80) - { - $errors = $phpcsFile->getFixableCount(); - if ($errors !== 0) { - if (PHP_CODESNIFFER_VERBOSITY > 0) { - ob_end_clean(); - $startTime = microtime(true); - echo "\t=> Fixing file: $errors/$errors violations remaining"; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo PHP_EOL; - } - } - - $fixed = $phpcsFile->fixer->fixFile(); - } - - if ($phpcsFile->config->stdin === true) { - // Replacing STDIN, so output current file to STDOUT - // even if nothing was fixed. Exit here because we - // can't process any more than 1 file in this setup. - $fixedContent = $phpcsFile->fixer->getContents(); - throw new DeepExitException($fixedContent, 1); - } - - if ($errors === 0) { - return false; - } - - if (PHP_CODESNIFFER_VERBOSITY > 0) { - if ($fixed === false) { - echo 'ERROR'; - } else { - echo 'DONE'; - } - - $timeTaken = ((microtime(true) - $startTime) * 1000); - if ($timeTaken < 1000) { - $timeTaken = round($timeTaken); - echo " in {$timeTaken}ms".PHP_EOL; - } else { - $timeTaken = round(($timeTaken / 1000), 2); - echo " in $timeTaken secs".PHP_EOL; - } - } - - if ($fixed === true) { - // The filename in the report may be truncated due to a basepath setting - // but we are using it for writing here and not display, - // so find the correct path if basepath is in use. - $newFilename = $report['filename'].$phpcsFile->config->suffix; - if ($phpcsFile->config->basepath !== null) { - $newFilename = $phpcsFile->config->basepath.DIRECTORY_SEPARATOR.$newFilename; - } - - $newContent = $phpcsFile->fixer->getContents(); - file_put_contents($newFilename, $newContent); - - if (PHP_CODESNIFFER_VERBOSITY > 0) { - if ($newFilename === $report['filename']) { - echo "\t=> File was overwritten".PHP_EOL; - } else { - echo "\t=> Fixed file written to ".basename($newFilename).PHP_EOL; - } - } - } - - if (PHP_CODESNIFFER_VERBOSITY > 0) { - ob_start(); - } - - $errorCount = $phpcsFile->getErrorCount(); - $warningCount = $phpcsFile->getWarningCount(); - $fixableCount = $phpcsFile->getFixableCount(); - $fixedCount = ($errors - $fixableCount); - echo $report['filename'].">>$errorCount>>$warningCount>>$fixableCount>>$fixedCount".PHP_EOL; - - return $fixed; - - }//end generateFileReport() - - - /** - * Prints a summary of fixed files. - * - * @param string $cachedData Any partial report data that was returned from - * generateFileReport during the run. - * @param int $totalFiles Total number of files processed during the run. - * @param int $totalErrors Total number of errors found during the run. - * @param int $totalWarnings Total number of warnings found during the run. - * @param int $totalFixable Total number of problems that can be fixed. - * @param bool $showSources Show sources? - * @param int $width Maximum allowed line width. - * @param bool $interactive Are we running in interactive mode? - * @param bool $toScreen Is the report being printed to screen? - * - * @return void - */ - public function generate( - $cachedData, - $totalFiles, - $totalErrors, - $totalWarnings, - $totalFixable, - $showSources=false, - $width=80, - $interactive=false, - $toScreen=true - ) { - $lines = explode(PHP_EOL, $cachedData); - array_pop($lines); - - if (empty($lines) === true) { - echo PHP_EOL.'No fixable errors were found'.PHP_EOL; - return; - } - - $reportFiles = []; - $maxLength = 0; - $totalFixed = 0; - $failures = 0; - - foreach ($lines as $line) { - $parts = explode('>>', $line); - $fileLen = strlen($parts[0]); - $reportFiles[$parts[0]] = [ - 'errors' => $parts[1], - 'warnings' => $parts[2], - 'fixable' => $parts[3], - 'fixed' => $parts[4], - 'strlen' => $fileLen, - ]; - - $maxLength = max($maxLength, $fileLen); - - $totalFixed += $parts[4]; - - if ($parts[3] > 0) { - $failures++; - } - } - - $width = min($width, ($maxLength + 21)); - $width = max($width, 70); - - echo PHP_EOL."\033[1m".'PHPCBF RESULT SUMMARY'."\033[0m".PHP_EOL; - echo str_repeat('-', $width).PHP_EOL; - echo "\033[1m".'FILE'.str_repeat(' ', ($width - 20)).'FIXED REMAINING'."\033[0m".PHP_EOL; - echo str_repeat('-', $width).PHP_EOL; - - foreach ($reportFiles as $file => $data) { - $padding = ($width - 18 - $data['strlen']); - if ($padding < 0) { - $file = '...'.substr($file, (($padding * -1) + 3)); - $padding = 0; - } - - echo $file.str_repeat(' ', $padding).' '; - - if ($data['fixable'] > 0) { - echo "\033[31mFAILED TO FIX\033[0m".PHP_EOL; - continue; - } - - $remaining = ($data['errors'] + $data['warnings']); - - if ($data['fixed'] !== 0) { - echo $data['fixed']; - echo str_repeat(' ', (7 - strlen((string) $data['fixed']))); - } else { - echo '0 '; - } - - if ($remaining !== 0) { - echo $remaining; - } else { - echo '0'; - } - - echo PHP_EOL; - }//end foreach - - echo str_repeat('-', $width).PHP_EOL; - echo "\033[1mA TOTAL OF $totalFixed ERROR"; - if ($totalFixed !== 1) { - echo 'S'; - } - - $numFiles = count($reportFiles); - echo ' WERE FIXED IN '.$numFiles.' FILE'; - if ($numFiles !== 1) { - echo 'S'; - } - - echo "\033[0m"; - - if ($failures > 0) { - echo PHP_EOL.str_repeat('-', $width).PHP_EOL; - echo "\033[1mPHPCBF FAILED TO FIX $failures FILE"; - if ($failures !== 1) { - echo 'S'; - } - - echo "\033[0m"; - } - - echo PHP_EOL.str_repeat('-', $width).PHP_EOL.PHP_EOL; - - if ($toScreen === true && $interactive === false) { - Timing::printRunTime(); - } - - }//end generate() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Checkstyle.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Checkstyle.php deleted file mode 100644 index 8640561f..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Checkstyle.php +++ /dev/null @@ -1,111 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Reports; - -use PHP_CodeSniffer\Config; -use PHP_CodeSniffer\Files\File; -use XMLWriter; - -class Checkstyle implements Report -{ - - - /** - * Generate a partial report for a single processed file. - * - * Function should return TRUE if it printed or stored data about the file - * and FALSE if it ignored the file. Returning TRUE indicates that the file and - * its data should be counted in the grand totals. - * - * @param array $report Prepared report data. - * See the {@see Report} interface for a detailed specification. - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being reported on. - * @param bool $showSources Show sources? - * @param int $width Maximum allowed line width. - * - * @return bool - */ - public function generateFileReport($report, File $phpcsFile, $showSources=false, $width=80) - { - $out = new XMLWriter; - $out->openMemory(); - $out->setIndent(true); - - if ($report['errors'] === 0 && $report['warnings'] === 0) { - // Nothing to print. - return false; - } - - $out->startElement('file'); - $out->writeAttribute('name', $report['filename']); - - foreach ($report['messages'] as $line => $lineErrors) { - foreach ($lineErrors as $column => $colErrors) { - foreach ($colErrors as $error) { - $error['type'] = strtolower($error['type']); - if ($phpcsFile->config->encoding !== 'utf-8') { - $error['message'] = iconv($phpcsFile->config->encoding, 'utf-8', $error['message']); - } - - $out->startElement('error'); - $out->writeAttribute('line', $line); - $out->writeAttribute('column', $column); - $out->writeAttribute('severity', $error['type']); - $out->writeAttribute('message', $error['message']); - $out->writeAttribute('source', $error['source']); - $out->endElement(); - } - } - }//end foreach - - $out->endElement(); - echo $out->flush(); - - return true; - - }//end generateFileReport() - - - /** - * Prints all violations for processed files, in a Checkstyle format. - * - * @param string $cachedData Any partial report data that was returned from - * generateFileReport during the run. - * @param int $totalFiles Total number of files processed during the run. - * @param int $totalErrors Total number of errors found during the run. - * @param int $totalWarnings Total number of warnings found during the run. - * @param int $totalFixable Total number of problems that can be fixed. - * @param bool $showSources Show sources? - * @param int $width Maximum allowed line width. - * @param bool $interactive Are we running in interactive mode? - * @param bool $toScreen Is the report being printed to screen? - * - * @return void - */ - public function generate( - $cachedData, - $totalFiles, - $totalErrors, - $totalWarnings, - $totalFixable, - $showSources=false, - $width=80, - $interactive=false, - $toScreen=true - ) { - echo ''.PHP_EOL; - echo ''.PHP_EOL; - echo $cachedData; - echo ''.PHP_EOL; - - }//end generate() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Code.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Code.php deleted file mode 100644 index c97e1681..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Code.php +++ /dev/null @@ -1,365 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Reports; - -use Exception; -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Util\Common; -use PHP_CodeSniffer\Util\Timing; - -class Code implements Report -{ - - - /** - * Generate a partial report for a single processed file. - * - * Function should return TRUE if it printed or stored data about the file - * and FALSE if it ignored the file. Returning TRUE indicates that the file and - * its data should be counted in the grand totals. - * - * @param array $report Prepared report data. - * See the {@see Report} interface for a detailed specification. - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being reported on. - * @param bool $showSources Show sources? - * @param int $width Maximum allowed line width. - * - * @return bool - */ - public function generateFileReport($report, File $phpcsFile, $showSources=false, $width=80) - { - if ($report['errors'] === 0 && $report['warnings'] === 0) { - // Nothing to print. - return false; - } - - // How many lines to show above and below the error line. - $surroundingLines = 2; - - $file = $report['filename']; - $tokens = $phpcsFile->getTokens(); - if (empty($tokens) === true) { - if (PHP_CODESNIFFER_VERBOSITY === 1) { - $startTime = microtime(true); - echo 'CODE report is parsing '.basename($file).' '; - } else if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "CODE report is forcing parse of $file".PHP_EOL; - } - - try { - $phpcsFile->parse(); - } catch (Exception $e) { - // This is a second parse, so ignore exceptions. - // They would have been added to the file's error list already. - } - - if (PHP_CODESNIFFER_VERBOSITY === 1) { - $timeTaken = ((microtime(true) - $startTime) * 1000); - if ($timeTaken < 1000) { - $timeTaken = round($timeTaken); - echo "DONE in {$timeTaken}ms"; - } else { - $timeTaken = round(($timeTaken / 1000), 2); - echo "DONE in $timeTaken secs"; - } - - echo PHP_EOL; - } - - $tokens = $phpcsFile->getTokens(); - }//end if - - // Create an array that maps lines to the first token on the line. - $lineTokens = []; - $lastLine = 0; - $stackPtr = 0; - foreach ($tokens as $stackPtr => $token) { - if ($token['line'] !== $lastLine) { - if ($lastLine > 0) { - $lineTokens[$lastLine]['end'] = ($stackPtr - 1); - } - - $lastLine++; - $lineTokens[$lastLine] = [ - 'start' => $stackPtr, - 'end' => null, - ]; - } - } - - // Make sure the last token in the file sits on an imaginary - // last line so it is easier to generate code snippets at the - // end of the file. - $lineTokens[$lastLine]['end'] = $stackPtr; - - // Determine the longest code line we will be showing. - $maxSnippetLength = 0; - $eolLen = strlen($phpcsFile->eolChar); - foreach ($report['messages'] as $line => $lineErrors) { - $startLine = max(($line - $surroundingLines), 1); - $endLine = min(($line + $surroundingLines), $lastLine); - - $maxLineNumLength = strlen($endLine); - - for ($i = $startLine; $i <= $endLine; $i++) { - if ($i === 1) { - continue; - } - - $lineLength = ($tokens[($lineTokens[$i]['start'] - 1)]['column'] + $tokens[($lineTokens[$i]['start'] - 1)]['length'] - $eolLen); - $maxSnippetLength = max($lineLength, $maxSnippetLength); - } - } - - $maxSnippetLength += ($maxLineNumLength + 8); - - // Determine the longest error message we will be showing. - $maxErrorLength = 0; - foreach ($report['messages'] as $lineErrors) { - foreach ($lineErrors as $colErrors) { - foreach ($colErrors as $error) { - $length = strlen($error['message']); - if ($showSources === true) { - $length += (strlen($error['source']) + 3); - } - - $maxErrorLength = max($maxErrorLength, ($length + 1)); - } - } - } - - // The padding that all lines will require that are printing an error message overflow. - if ($report['warnings'] > 0) { - $typeLength = 7; - } else { - $typeLength = 5; - } - - $errorPadding = str_repeat(' ', ($maxLineNumLength + 7)); - $errorPadding .= str_repeat(' ', $typeLength); - $errorPadding .= ' '; - if ($report['fixable'] > 0) { - $errorPadding .= ' '; - } - - $errorPaddingLength = strlen($errorPadding); - - // The maximum amount of space an error message can use. - $maxErrorSpace = ($width - $errorPaddingLength); - if ($showSources === true) { - // Account for the chars used to print colors. - $maxErrorSpace += 8; - } - - // Figure out the max report width we need and can use. - $fileLength = strlen($file); - $maxWidth = max(($fileLength + 6), ($maxErrorLength + $errorPaddingLength)); - $width = max(min($width, $maxWidth), $maxSnippetLength); - if ($width < 70) { - $width = 70; - } - - // Print the file header. - echo PHP_EOL."\033[1mFILE: "; - if ($fileLength <= ($width - 6)) { - echo $file; - } else { - echo '...'.substr($file, ($fileLength - ($width - 6))); - } - - echo "\033[0m".PHP_EOL; - echo str_repeat('-', $width).PHP_EOL; - - echo "\033[1m".'FOUND '.$report['errors'].' ERROR'; - if ($report['errors'] !== 1) { - echo 'S'; - } - - if ($report['warnings'] > 0) { - echo ' AND '.$report['warnings'].' WARNING'; - if ($report['warnings'] !== 1) { - echo 'S'; - } - } - - echo ' AFFECTING '.count($report['messages']).' LINE'; - if (count($report['messages']) !== 1) { - echo 'S'; - } - - echo "\033[0m".PHP_EOL; - - foreach ($report['messages'] as $line => $lineErrors) { - $startLine = max(($line - $surroundingLines), 1); - $endLine = min(($line + $surroundingLines), $lastLine); - - $snippet = ''; - if (isset($lineTokens[$startLine]) === true) { - for ($i = $lineTokens[$startLine]['start']; $i <= $lineTokens[$endLine]['end']; $i++) { - $snippetLine = $tokens[$i]['line']; - if ($lineTokens[$snippetLine]['start'] === $i) { - // Starting a new line. - if ($snippetLine === $line) { - $snippet .= "\033[1m".'>> '; - } else { - $snippet .= ' '; - } - - $snippet .= str_repeat(' ', ($maxLineNumLength - strlen($snippetLine))); - $snippet .= $snippetLine.': '; - if ($snippetLine === $line) { - $snippet .= "\033[0m"; - } - } - - if (isset($tokens[$i]['orig_content']) === true) { - $tokenContent = $tokens[$i]['orig_content']; - } else { - $tokenContent = $tokens[$i]['content']; - } - - if (strpos($tokenContent, "\t") !== false) { - $token = $tokens[$i]; - $token['content'] = $tokenContent; - if (stripos(PHP_OS, 'WIN') === 0) { - $tab = "\000"; - } else { - $tab = "\033[30;1m»\033[0m"; - } - - $phpcsFile->tokenizer->replaceTabsInToken($token, $tab, "\000"); - $tokenContent = $token['content']; - } - - $tokenContent = Common::prepareForOutput($tokenContent, ["\r", "\n", "\t"]); - $tokenContent = str_replace("\000", ' ', $tokenContent); - - $underline = false; - if ($snippetLine === $line && isset($lineErrors[$tokens[$i]['column']]) === true) { - $underline = true; - } - - // Underline invisible characters as well. - if ($underline === true && trim($tokenContent) === '') { - $snippet .= "\033[4m".' '."\033[0m".$tokenContent; - } else { - if ($underline === true) { - $snippet .= "\033[4m"; - } - - $snippet .= $tokenContent; - - if ($underline === true) { - $snippet .= "\033[0m"; - } - } - }//end for - }//end if - - echo str_repeat('-', $width).PHP_EOL; - - foreach ($lineErrors as $colErrors) { - foreach ($colErrors as $error) { - $padding = ($maxLineNumLength - strlen($line)); - echo 'LINE '.str_repeat(' ', $padding).$line.': '; - - if ($error['type'] === 'ERROR') { - echo "\033[31mERROR\033[0m"; - if ($report['warnings'] > 0) { - echo ' '; - } - } else { - echo "\033[33mWARNING\033[0m"; - } - - echo ' '; - if ($report['fixable'] > 0) { - echo '['; - if ($error['fixable'] === true) { - echo 'x'; - } else { - echo ' '; - } - - echo '] '; - } - - $message = $error['message']; - $message = str_replace("\n", "\n".$errorPadding, $message); - if ($showSources === true) { - $message = "\033[1m".$message."\033[0m".' ('.$error['source'].')'; - } - - $errorMsg = wordwrap( - $message, - $maxErrorSpace, - PHP_EOL.$errorPadding - ); - - echo $errorMsg.PHP_EOL; - }//end foreach - }//end foreach - - echo str_repeat('-', $width).PHP_EOL; - echo rtrim($snippet).PHP_EOL; - }//end foreach - - echo str_repeat('-', $width).PHP_EOL; - if ($report['fixable'] > 0) { - echo "\033[1m".'PHPCBF CAN FIX THE '.$report['fixable'].' MARKED SNIFF VIOLATIONS AUTOMATICALLY'."\033[0m".PHP_EOL; - echo str_repeat('-', $width).PHP_EOL; - } - - return true; - - }//end generateFileReport() - - - /** - * Prints all errors and warnings for each file processed. - * - * @param string $cachedData Any partial report data that was returned from - * generateFileReport during the run. - * @param int $totalFiles Total number of files processed during the run. - * @param int $totalErrors Total number of errors found during the run. - * @param int $totalWarnings Total number of warnings found during the run. - * @param int $totalFixable Total number of problems that can be fixed. - * @param bool $showSources Show sources? - * @param int $width Maximum allowed line width. - * @param bool $interactive Are we running in interactive mode? - * @param bool $toScreen Is the report being printed to screen? - * - * @return void - */ - public function generate( - $cachedData, - $totalFiles, - $totalErrors, - $totalWarnings, - $totalFixable, - $showSources=false, - $width=80, - $interactive=false, - $toScreen=true - ) { - if ($cachedData === '') { - return; - } - - echo $cachedData; - - if ($toScreen === true && $interactive === false) { - Timing::printRunTime(); - } - - }//end generate() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Csv.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Csv.php deleted file mode 100644 index ed7caca3..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Csv.php +++ /dev/null @@ -1,92 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Reports; - -use PHP_CodeSniffer\Files\File; - -class Csv implements Report -{ - - - /** - * Generate a partial report for a single processed file. - * - * Function should return TRUE if it printed or stored data about the file - * and FALSE if it ignored the file. Returning TRUE indicates that the file and - * its data should be counted in the grand totals. - * - * @param array $report Prepared report data. - * See the {@see Report} interface for a detailed specification. - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being reported on. - * @param bool $showSources Show sources? - * @param int $width Maximum allowed line width. - * - * @return bool - */ - public function generateFileReport($report, File $phpcsFile, $showSources=false, $width=80) - { - if ($report['errors'] === 0 && $report['warnings'] === 0) { - // Nothing to print. - return false; - } - - foreach ($report['messages'] as $line => $lineErrors) { - foreach ($lineErrors as $column => $colErrors) { - foreach ($colErrors as $error) { - $filename = str_replace('"', '\"', $report['filename']); - $message = str_replace('"', '\"', $error['message']); - $type = strtolower($error['type']); - $source = $error['source']; - $severity = $error['severity']; - $fixable = (int) $error['fixable']; - echo "\"$filename\",$line,$column,$type,\"$message\",$source,$severity,$fixable".PHP_EOL; - } - } - } - - return true; - - }//end generateFileReport() - - - /** - * Generates a csv report. - * - * @param string $cachedData Any partial report data that was returned from - * generateFileReport during the run. - * @param int $totalFiles Total number of files processed during the run. - * @param int $totalErrors Total number of errors found during the run. - * @param int $totalWarnings Total number of warnings found during the run. - * @param int $totalFixable Total number of problems that can be fixed. - * @param bool $showSources Show sources? - * @param int $width Maximum allowed line width. - * @param bool $interactive Are we running in interactive mode? - * @param bool $toScreen Is the report being printed to screen? - * - * @return void - */ - public function generate( - $cachedData, - $totalFiles, - $totalErrors, - $totalWarnings, - $totalFixable, - $showSources=false, - $width=80, - $interactive=false, - $toScreen=true - ) { - echo 'File,Line,Column,Type,Message,Source,Severity,Fixable'.PHP_EOL; - echo $cachedData; - - }//end generate() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Diff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Diff.php deleted file mode 100644 index 9580b4e9..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Diff.php +++ /dev/null @@ -1,131 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Reports; - -use PHP_CodeSniffer\Files\File; - -class Diff implements Report -{ - - - /** - * Generate a partial report for a single processed file. - * - * Function should return TRUE if it printed or stored data about the file - * and FALSE if it ignored the file. Returning TRUE indicates that the file and - * its data should be counted in the grand totals. - * - * @param array $report Prepared report data. - * See the {@see Report} interface for a detailed specification. - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being reported on. - * @param bool $showSources Show sources? - * @param int $width Maximum allowed line width. - * - * @return bool - */ - public function generateFileReport($report, File $phpcsFile, $showSources=false, $width=80) - { - $errors = $phpcsFile->getFixableCount(); - if ($errors === 0) { - return false; - } - - $phpcsFile->disableCaching(); - $tokens = $phpcsFile->getTokens(); - if (empty($tokens) === true) { - if (PHP_CODESNIFFER_VERBOSITY === 1) { - $startTime = microtime(true); - echo 'DIFF report is parsing '.basename($report['filename']).' '; - } else if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo 'DIFF report is forcing parse of '.$report['filename'].PHP_EOL; - } - - $phpcsFile->parse(); - - if (PHP_CODESNIFFER_VERBOSITY === 1) { - $timeTaken = ((microtime(true) - $startTime) * 1000); - if ($timeTaken < 1000) { - $timeTaken = round($timeTaken); - echo "DONE in {$timeTaken}ms"; - } else { - $timeTaken = round(($timeTaken / 1000), 2); - echo "DONE in $timeTaken secs"; - } - - echo PHP_EOL; - } - - $phpcsFile->fixer->startFile($phpcsFile); - }//end if - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - ob_end_clean(); - echo "\t*** START FILE FIXING ***".PHP_EOL; - } - - $fixed = $phpcsFile->fixer->fixFile(); - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t*** END FILE FIXING ***".PHP_EOL; - ob_start(); - } - - if ($fixed === false) { - return false; - } - - $diff = $phpcsFile->fixer->generateDiff(); - if ($diff === '') { - // Nothing to print. - return false; - } - - echo $diff.PHP_EOL; - return true; - - }//end generateFileReport() - - - /** - * Prints all errors and warnings for each file processed. - * - * @param string $cachedData Any partial report data that was returned from - * generateFileReport during the run. - * @param int $totalFiles Total number of files processed during the run. - * @param int $totalErrors Total number of errors found during the run. - * @param int $totalWarnings Total number of warnings found during the run. - * @param int $totalFixable Total number of problems that can be fixed. - * @param bool $showSources Show sources? - * @param int $width Maximum allowed line width. - * @param bool $interactive Are we running in interactive mode? - * @param bool $toScreen Is the report being printed to screen? - * - * @return void - */ - public function generate( - $cachedData, - $totalFiles, - $totalErrors, - $totalWarnings, - $totalFixable, - $showSources=false, - $width=80, - $interactive=false, - $toScreen=true - ) { - echo $cachedData; - if ($toScreen === true && $cachedData !== '') { - echo PHP_EOL; - } - - }//end generate() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Emacs.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Emacs.php deleted file mode 100644 index 076768a7..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Emacs.php +++ /dev/null @@ -1,91 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Reports; - -use PHP_CodeSniffer\Files\File; - -class Emacs implements Report -{ - - - /** - * Generate a partial report for a single processed file. - * - * Function should return TRUE if it printed or stored data about the file - * and FALSE if it ignored the file. Returning TRUE indicates that the file and - * its data should be counted in the grand totals. - * - * @param array $report Prepared report data. - * See the {@see Report} interface for a detailed specification. - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being reported on. - * @param bool $showSources Show sources? - * @param int $width Maximum allowed line width. - * - * @return bool - */ - public function generateFileReport($report, File $phpcsFile, $showSources=false, $width=80) - { - if ($report['errors'] === 0 && $report['warnings'] === 0) { - // Nothing to print. - return false; - } - - foreach ($report['messages'] as $line => $lineErrors) { - foreach ($lineErrors as $column => $colErrors) { - foreach ($colErrors as $error) { - $message = $error['message']; - if ($showSources === true) { - $message .= ' ('.$error['source'].')'; - } - - $type = strtolower($error['type']); - echo $report['filename'].':'.$line.':'.$column.': '.$type.' - '.$message.PHP_EOL; - } - } - } - - return true; - - }//end generateFileReport() - - - /** - * Generates an emacs report. - * - * @param string $cachedData Any partial report data that was returned from - * generateFileReport during the run. - * @param int $totalFiles Total number of files processed during the run. - * @param int $totalErrors Total number of errors found during the run. - * @param int $totalWarnings Total number of warnings found during the run. - * @param int $totalFixable Total number of problems that can be fixed. - * @param bool $showSources Show sources? - * @param int $width Maximum allowed line width. - * @param bool $interactive Are we running in interactive mode? - * @param bool $toScreen Is the report being printed to screen? - * - * @return void - */ - public function generate( - $cachedData, - $totalFiles, - $totalErrors, - $totalWarnings, - $totalFixable, - $showSources=false, - $width=80, - $interactive=false, - $toScreen=true - ) { - echo $cachedData; - - }//end generate() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Full.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Full.php deleted file mode 100644 index 9af4efae..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Full.php +++ /dev/null @@ -1,260 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Reports; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Util\Timing; - -class Full implements Report -{ - - - /** - * Generate a partial report for a single processed file. - * - * Function should return TRUE if it printed or stored data about the file - * and FALSE if it ignored the file. Returning TRUE indicates that the file and - * its data should be counted in the grand totals. - * - * @param array $report Prepared report data. - * See the {@see Report} interface for a detailed specification. - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being reported on. - * @param bool $showSources Show sources? - * @param int $width Maximum allowed line width. - * - * @return bool - */ - public function generateFileReport($report, File $phpcsFile, $showSources=false, $width=80) - { - if ($report['errors'] === 0 && $report['warnings'] === 0) { - // Nothing to print. - return false; - } - - // The length of the word ERROR or WARNING; used for padding. - if ($report['warnings'] > 0) { - $typeLength = 7; - } else { - $typeLength = 5; - } - - // Work out the max line number length for formatting. - $maxLineNumLength = max(array_map('strlen', array_keys($report['messages']))); - - // The padding that all lines will require that are - // printing an error message overflow. - $paddingLine2 = str_repeat(' ', ($maxLineNumLength + 1)); - $paddingLine2 .= ' | '; - $paddingLine2 .= str_repeat(' ', $typeLength); - $paddingLine2 .= ' | '; - if ($report['fixable'] > 0) { - $paddingLine2 .= ' '; - } - - $paddingLength = strlen($paddingLine2); - - // Make sure the report width isn't too big. - $maxErrorLength = 0; - foreach ($report['messages'] as $lineErrors) { - foreach ($lineErrors as $colErrors) { - foreach ($colErrors as $error) { - // Start with the presumption of a single line error message. - $length = strlen($error['message']); - $srcLength = (strlen($error['source']) + 3); - if ($showSources === true) { - $length += $srcLength; - } - - // ... but also handle multi-line messages correctly. - if (strpos($error['message'], "\n") !== false) { - $errorLines = explode("\n", $error['message']); - $length = max(array_map('strlen', $errorLines)); - - if ($showSources === true) { - $lastLine = array_pop($errorLines); - $length = max($length, (strlen($lastLine) + $srcLength)); - } - } - - $maxErrorLength = max($maxErrorLength, ($length + 1)); - }//end foreach - }//end foreach - }//end foreach - - $file = $report['filename']; - $fileLength = strlen($file); - $maxWidth = max(($fileLength + 6), ($maxErrorLength + $paddingLength)); - $width = min($width, $maxWidth); - if ($width < 70) { - $width = 70; - } - - echo PHP_EOL."\033[1mFILE: "; - if ($fileLength <= ($width - 6)) { - echo $file; - } else { - echo '...'.substr($file, ($fileLength - ($width - 6))); - } - - echo "\033[0m".PHP_EOL; - echo str_repeat('-', $width).PHP_EOL; - - echo "\033[1m".'FOUND '.$report['errors'].' ERROR'; - if ($report['errors'] !== 1) { - echo 'S'; - } - - if ($report['warnings'] > 0) { - echo ' AND '.$report['warnings'].' WARNING'; - if ($report['warnings'] !== 1) { - echo 'S'; - } - } - - echo ' AFFECTING '.count($report['messages']).' LINE'; - if (count($report['messages']) !== 1) { - echo 'S'; - } - - echo "\033[0m".PHP_EOL; - echo str_repeat('-', $width).PHP_EOL; - - // The maximum amount of space an error message can use. - $maxErrorSpace = ($width - $paddingLength - 1); - - $beforeMsg = ''; - $afterMsg = ''; - if ($showSources === true) { - $beforeMsg = "\033[1m"; - $afterMsg = "\033[0m"; - } - - $beforeAfterLength = strlen($beforeMsg.$afterMsg); - - foreach ($report['messages'] as $line => $lineErrors) { - foreach ($lineErrors as $colErrors) { - foreach ($colErrors as $error) { - $errorMsg = wordwrap( - $error['message'], - $maxErrorSpace - ); - - // Add the padding _after_ the wordwrap as the message itself may contain line breaks - // and those lines will also need to receive padding. - $errorMsg = str_replace("\n", $afterMsg.PHP_EOL.$paddingLine2.$beforeMsg, $errorMsg); - $errorMsg = $beforeMsg.$errorMsg.$afterMsg; - - if ($showSources === true) { - $lastMsg = $errorMsg; - $startPosLastLine = strrpos($errorMsg, PHP_EOL.$paddingLine2.$beforeMsg); - if ($startPosLastLine !== false) { - // Message is multiline. Grab the text of last line of the message, including the color codes. - $lastMsg = substr($errorMsg, ($startPosLastLine + strlen(PHP_EOL.$paddingLine2))); - } - - // When show sources is used, the message itself will be bolded, so we need to correct the length. - $sourceSuffix = '('.$error['source'].')'; - - $lastMsgPlusSourceLength = strlen($lastMsg); - // Add space + source suffix length. - $lastMsgPlusSourceLength += (1 + strlen($sourceSuffix)); - // Correct for the color codes. - $lastMsgPlusSourceLength -= $beforeAfterLength; - - if ($lastMsgPlusSourceLength > $maxErrorSpace) { - $errorMsg .= PHP_EOL.$paddingLine2.$sourceSuffix; - } else { - $errorMsg .= ' '.$sourceSuffix; - } - }//end if - - // The padding that goes on the front of the line. - $padding = ($maxLineNumLength - strlen($line)); - - echo ' '.str_repeat(' ', $padding).$line.' | '; - if ($error['type'] === 'ERROR') { - echo "\033[31mERROR\033[0m"; - if ($report['warnings'] > 0) { - echo ' '; - } - } else { - echo "\033[33mWARNING\033[0m"; - } - - echo ' | '; - if ($report['fixable'] > 0) { - echo '['; - if ($error['fixable'] === true) { - echo 'x'; - } else { - echo ' '; - } - - echo '] '; - } - - echo $errorMsg.PHP_EOL; - }//end foreach - }//end foreach - }//end foreach - - echo str_repeat('-', $width).PHP_EOL; - if ($report['fixable'] > 0) { - echo "\033[1m".'PHPCBF CAN FIX THE '.$report['fixable'].' MARKED SNIFF VIOLATIONS AUTOMATICALLY'."\033[0m".PHP_EOL; - echo str_repeat('-', $width).PHP_EOL; - } - - echo PHP_EOL; - return true; - - }//end generateFileReport() - - - /** - * Prints all errors and warnings for each file processed. - * - * @param string $cachedData Any partial report data that was returned from - * generateFileReport during the run. - * @param int $totalFiles Total number of files processed during the run. - * @param int $totalErrors Total number of errors found during the run. - * @param int $totalWarnings Total number of warnings found during the run. - * @param int $totalFixable Total number of problems that can be fixed. - * @param bool $showSources Show sources? - * @param int $width Maximum allowed line width. - * @param bool $interactive Are we running in interactive mode? - * @param bool $toScreen Is the report being printed to screen? - * - * @return void - */ - public function generate( - $cachedData, - $totalFiles, - $totalErrors, - $totalWarnings, - $totalFixable, - $showSources=false, - $width=80, - $interactive=false, - $toScreen=true - ) { - if ($cachedData === '') { - return; - } - - echo $cachedData; - - if ($toScreen === true && $interactive === false) { - Timing::printRunTime(); - } - - }//end generate() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Info.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Info.php deleted file mode 100644 index 9f1f45aa..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Info.php +++ /dev/null @@ -1,173 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Reports; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Util\Timing; - -class Info implements Report -{ - - - /** - * Generate a partial report for a single processed file. - * - * Function should return TRUE if it printed or stored data about the file - * and FALSE if it ignored the file. Returning TRUE indicates that the file and - * its data should be counted in the grand totals. - * - * @param array $report Prepared report data. - * See the {@see Report} interface for a detailed specification. - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being reported on. - * @param bool $showSources Show sources? - * @param int $width Maximum allowed line width. - * - * @return bool - */ - public function generateFileReport($report, File $phpcsFile, $showSources=false, $width=80) - { - $metrics = $phpcsFile->getMetrics(); - foreach ($metrics as $metric => $data) { - foreach ($data['values'] as $value => $count) { - echo "$metric>>$value>>$count".PHP_EOL; - } - } - - return true; - - }//end generateFileReport() - - - /** - * Prints the recorded metrics. - * - * @param string $cachedData Any partial report data that was returned from - * generateFileReport during the run. - * @param int $totalFiles Total number of files processed during the run. - * @param int $totalErrors Total number of errors found during the run. - * @param int $totalWarnings Total number of warnings found during the run. - * @param int $totalFixable Total number of problems that can be fixed. - * @param bool $showSources Show sources? - * @param int $width Maximum allowed line width. - * @param bool $interactive Are we running in interactive mode? - * @param bool $toScreen Is the report being printed to screen? - * - * @return void - */ - public function generate( - $cachedData, - $totalFiles, - $totalErrors, - $totalWarnings, - $totalFixable, - $showSources=false, - $width=80, - $interactive=false, - $toScreen=true - ) { - $lines = explode(PHP_EOL, $cachedData); - array_pop($lines); - - if (empty($lines) === true) { - return; - } - - $metrics = []; - foreach ($lines as $line) { - $parts = explode('>>', $line); - $metric = $parts[0]; - $value = $parts[1]; - $count = $parts[2]; - if (isset($metrics[$metric]) === false) { - $metrics[$metric] = []; - } - - if (isset($metrics[$metric][$value]) === false) { - $metrics[$metric][$value] = $count; - } else { - $metrics[$metric][$value] += $count; - } - } - - ksort($metrics); - - echo PHP_EOL."\033[1m".'PHP CODE SNIFFER INFORMATION REPORT'."\033[0m".PHP_EOL; - echo str_repeat('-', 70).PHP_EOL; - - foreach ($metrics as $metric => $values) { - if (count($values) === 1) { - $count = reset($values); - $value = key($values); - - echo "$metric: \033[4m$value\033[0m [$count/$count, 100%]".PHP_EOL; - } else { - $totalCount = 0; - $valueWidth = 0; - foreach ($values as $value => $count) { - $totalCount += $count; - $valueWidth = max($valueWidth, strlen($value)); - } - - // Length of the total string, plus however many - // thousands separators there are. - $countWidth = strlen($totalCount); - $thousandSeparatorCount = floor($countWidth / 3); - $countWidth += $thousandSeparatorCount; - - // Account for 'total' line. - $valueWidth = max(5, $valueWidth); - - echo "$metric:".PHP_EOL; - - ksort($values, SORT_NATURAL); - arsort($values); - - $percentPrefixWidth = 0; - $percentWidth = 6; - foreach ($values as $value => $count) { - $percent = round(($count / $totalCount * 100), 2); - $percentPrefix = ''; - if ($percent === 0.00) { - $percent = 0.01; - $percentPrefix = '<'; - $percentPrefixWidth = 2; - $percentWidth = 4; - } - - printf( - "\t%-{$valueWidth}s => %{$countWidth}s (%{$percentPrefixWidth}s%{$percentWidth}.2f%%)".PHP_EOL, - $value, - number_format($count), - $percentPrefix, - $percent - ); - } - - echo "\t".str_repeat('-', ($valueWidth + $countWidth + 15)).PHP_EOL; - printf( - "\t%-{$valueWidth}s => %{$countWidth}s (100.00%%)".PHP_EOL, - 'total', - number_format($totalCount) - ); - }//end if - - echo PHP_EOL; - }//end foreach - - echo str_repeat('-', 70).PHP_EOL; - - if ($toScreen === true && $interactive === false) { - Timing::printRunTime(); - } - - }//end generate() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Json.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Json.php deleted file mode 100644 index 67c8b5e6..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Json.php +++ /dev/null @@ -1,107 +0,0 @@ - - * @author Greg Sherwood - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Reports; - -use PHP_CodeSniffer\Files\File; - -class Json implements Report -{ - - - /** - * Generate a partial report for a single processed file. - * - * Function should return TRUE if it printed or stored data about the file - * and FALSE if it ignored the file. Returning TRUE indicates that the file and - * its data should be counted in the grand totals. - * - * @param array $report Prepared report data. - * See the {@see Report} interface for a detailed specification. - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being reported on. - * @param bool $showSources Show sources? - * @param int $width Maximum allowed line width. - * - * @return bool - */ - public function generateFileReport($report, File $phpcsFile, $showSources=false, $width=80) - { - $filename = str_replace('\\', '\\\\', $report['filename']); - $filename = str_replace('"', '\"', $filename); - $filename = str_replace('/', '\/', $filename); - echo '"'.$filename.'":{'; - echo '"errors":'.$report['errors'].',"warnings":'.$report['warnings'].',"messages":['; - - $messages = ''; - foreach ($report['messages'] as $line => $lineErrors) { - foreach ($lineErrors as $column => $colErrors) { - foreach ($colErrors as $error) { - $error['message'] = str_replace("\n", '\n', $error['message']); - $error['message'] = str_replace("\r", '\r', $error['message']); - $error['message'] = str_replace("\t", '\t', $error['message']); - - $fixable = false; - if ($error['fixable'] === true) { - $fixable = true; - } - - $messagesObject = (object) $error; - $messagesObject->line = $line; - $messagesObject->column = $column; - $messagesObject->fixable = $fixable; - - $messages .= json_encode($messagesObject).","; - } - } - }//end foreach - - echo rtrim($messages, ','); - echo ']},'; - - return true; - - }//end generateFileReport() - - - /** - * Generates a JSON report. - * - * @param string $cachedData Any partial report data that was returned from - * generateFileReport during the run. - * @param int $totalFiles Total number of files processed during the run. - * @param int $totalErrors Total number of errors found during the run. - * @param int $totalWarnings Total number of warnings found during the run. - * @param int $totalFixable Total number of problems that can be fixed. - * @param bool $showSources Show sources? - * @param int $width Maximum allowed line width. - * @param bool $interactive Are we running in interactive mode? - * @param bool $toScreen Is the report being printed to screen? - * - * @return void - */ - public function generate( - $cachedData, - $totalFiles, - $totalErrors, - $totalWarnings, - $totalFixable, - $showSources=false, - $width=80, - $interactive=false, - $toScreen=true - ) { - echo '{"totals":{"errors":'.$totalErrors.',"warnings":'.$totalWarnings.',"fixable":'.$totalFixable.'},"files":{'; - echo rtrim($cachedData, ','); - echo "}}".PHP_EOL; - - }//end generate() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Junit.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Junit.php deleted file mode 100644 index aaeeb177..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Junit.php +++ /dev/null @@ -1,133 +0,0 @@ - - * @author Greg Sherwood - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Reports; - -use PHP_CodeSniffer\Config; -use PHP_CodeSniffer\Files\File; -use XMLWriter; - -class Junit implements Report -{ - - - /** - * Generate a partial report for a single processed file. - * - * Function should return TRUE if it printed or stored data about the file - * and FALSE if it ignored the file. Returning TRUE indicates that the file and - * its data should be counted in the grand totals. - * - * @param array $report Prepared report data. - * See the {@see Report} interface for a detailed specification. - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being reported on. - * @param bool $showSources Show sources? - * @param int $width Maximum allowed line width. - * - * @return bool - */ - public function generateFileReport($report, File $phpcsFile, $showSources=false, $width=80) - { - $out = new XMLWriter; - $out->openMemory(); - $out->setIndent(true); - - $out->startElement('testsuite'); - $out->writeAttribute('name', $report['filename']); - $out->writeAttribute('errors', 0); - - if (count($report['messages']) === 0) { - $out->writeAttribute('tests', 1); - $out->writeAttribute('failures', 0); - - $out->startElement('testcase'); - $out->writeAttribute('name', $report['filename']); - $out->endElement(); - } else { - $failures = ($report['errors'] + $report['warnings']); - $out->writeAttribute('tests', $failures); - $out->writeAttribute('failures', $failures); - - foreach ($report['messages'] as $line => $lineErrors) { - foreach ($lineErrors as $column => $colErrors) { - foreach ($colErrors as $error) { - $out->startElement('testcase'); - $out->writeAttribute('name', $error['source'].' at '.$report['filename']." ($line:$column)"); - - $error['type'] = strtolower($error['type']); - if ($phpcsFile->config->encoding !== 'utf-8') { - $error['message'] = iconv($phpcsFile->config->encoding, 'utf-8', $error['message']); - } - - $out->startElement('failure'); - $out->writeAttribute('type', $error['type']); - $out->writeAttribute('message', $error['message']); - $out->endElement(); - - $out->endElement(); - } - } - } - }//end if - - $out->endElement(); - echo $out->flush(); - return true; - - }//end generateFileReport() - - - /** - * Prints all violations for processed files, in a proprietary XML format. - * - * @param string $cachedData Any partial report data that was returned from - * generateFileReport during the run. - * @param int $totalFiles Total number of files processed during the run. - * @param int $totalErrors Total number of errors found during the run. - * @param int $totalWarnings Total number of warnings found during the run. - * @param int $totalFixable Total number of problems that can be fixed. - * @param bool $showSources Show sources? - * @param int $width Maximum allowed line width. - * @param bool $interactive Are we running in interactive mode? - * @param bool $toScreen Is the report being printed to screen? - * - * @return void - */ - public function generate( - $cachedData, - $totalFiles, - $totalErrors, - $totalWarnings, - $totalFixable, - $showSources=false, - $width=80, - $interactive=false, - $toScreen=true - ) { - // Figure out the total number of tests. - $tests = 0; - $matches = []; - preg_match_all('/tests="([0-9]+)"/', $cachedData, $matches); - if (isset($matches[1]) === true) { - foreach ($matches[1] as $match) { - $tests += $match; - } - } - - $failures = ($totalErrors + $totalWarnings); - echo ''.PHP_EOL; - echo ''.PHP_EOL; - echo $cachedData; - echo ''.PHP_EOL; - - }//end generate() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Notifysend.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Notifysend.php deleted file mode 100644 index 839d9903..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Notifysend.php +++ /dev/null @@ -1,243 +0,0 @@ - - * @author Greg Sherwood - * @copyright 2012-2014 Christian Weiske - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Reports; - -use PHP_CodeSniffer\Config; -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Util\Common; - -class Notifysend implements Report -{ - - /** - * Notification timeout in milliseconds. - * - * @var integer - */ - protected $timeout = 3000; - - /** - * Path to notify-send command. - * - * @var string - */ - protected $path = 'notify-send'; - - /** - * Show "ok, all fine" messages. - * - * @var boolean - */ - protected $showOk = true; - - /** - * Version of installed notify-send executable. - * - * @var string - */ - protected $version = null; - - - /** - * Load configuration data. - */ - public function __construct() - { - $path = Config::getExecutablePath('notifysend'); - if ($path !== null) { - $this->path = Common::escapeshellcmd($path); - } - - $timeout = Config::getConfigData('notifysend_timeout'); - if ($timeout !== null) { - $this->timeout = (int) $timeout; - } - - $showOk = Config::getConfigData('notifysend_showok'); - if ($showOk !== null) { - $this->showOk = (bool) $showOk; - } - - $this->version = str_replace( - 'notify-send ', - '', - exec($this->path.' --version') - ); - - }//end __construct() - - - /** - * Generate a partial report for a single processed file. - * - * Function should return TRUE if it printed or stored data about the file - * and FALSE if it ignored the file. Returning TRUE indicates that the file and - * its data should be counted in the grand totals. - * - * @param array $report Prepared report data. - * See the {@see Report} interface for a detailed specification. - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being reported on. - * @param bool $showSources Show sources? - * @param int $width Maximum allowed line width. - * - * @return bool - */ - public function generateFileReport($report, File $phpcsFile, $showSources=false, $width=80) - { - echo $report['filename'].PHP_EOL; - - // We want this file counted in the total number - // of checked files even if it has no errors. - return true; - - }//end generateFileReport() - - - /** - * Generates a summary of errors and warnings for each file processed. - * - * @param string $cachedData Any partial report data that was returned from - * generateFileReport during the run. - * @param int $totalFiles Total number of files processed during the run. - * @param int $totalErrors Total number of errors found during the run. - * @param int $totalWarnings Total number of warnings found during the run. - * @param int $totalFixable Total number of problems that can be fixed. - * @param bool $showSources Show sources? - * @param int $width Maximum allowed line width. - * @param bool $interactive Are we running in interactive mode? - * @param bool $toScreen Is the report being printed to screen? - * - * @return void - */ - public function generate( - $cachedData, - $totalFiles, - $totalErrors, - $totalWarnings, - $totalFixable, - $showSources=false, - $width=80, - $interactive=false, - $toScreen=true - ) { - $checkedFiles = explode(PHP_EOL, trim($cachedData)); - - $msg = $this->generateMessage($checkedFiles, $totalErrors, $totalWarnings); - if ($msg === null) { - if ($this->showOk === true) { - $this->notifyAllFine(); - } - } else { - $this->notifyErrors($msg); - } - - }//end generate() - - - /** - * Generate the error message to show to the user. - * - * @param string[] $checkedFiles The files checked during the run. - * @param int $totalErrors Total number of errors found during the run. - * @param int $totalWarnings Total number of warnings found during the run. - * - * @return string|null Error message or NULL if no error/warning found. - */ - protected function generateMessage($checkedFiles, $totalErrors, $totalWarnings) - { - if ($totalErrors === 0 && $totalWarnings === 0) { - // Nothing to print. - return null; - } - - $totalFiles = count($checkedFiles); - - $msg = ''; - if ($totalFiles > 1) { - $msg .= 'Checked '.$totalFiles.' files'.PHP_EOL; - } else { - $msg .= $checkedFiles[0].PHP_EOL; - } - - if ($totalWarnings > 0) { - $msg .= $totalWarnings.' warnings'.PHP_EOL; - } - - if ($totalErrors > 0) { - $msg .= $totalErrors.' errors'.PHP_EOL; - } - - return $msg; - - }//end generateMessage() - - - /** - * Tell the user that all is fine and no error/warning has been found. - * - * @return void - */ - protected function notifyAllFine() - { - $cmd = $this->getBasicCommand(); - $cmd .= ' -i info'; - $cmd .= ' "PHP CodeSniffer: Ok"'; - $cmd .= ' "All fine"'; - exec($cmd); - - }//end notifyAllFine() - - - /** - * Tell the user that errors/warnings have been found. - * - * @param string $msg Message to display. - * - * @return void - */ - protected function notifyErrors($msg) - { - $cmd = $this->getBasicCommand(); - $cmd .= ' -i error'; - $cmd .= ' "PHP CodeSniffer: Error"'; - $cmd .= ' '.escapeshellarg(trim($msg)); - exec($cmd); - - }//end notifyErrors() - - - /** - * Generate and return the basic notify-send command string to execute. - * - * @return string Shell command with common parameters. - */ - protected function getBasicCommand() - { - $cmd = $this->path; - $cmd .= ' --category dev.validate'; - $cmd .= ' -h int:transient:1'; - $cmd .= ' -t '.(int) $this->timeout; - if (version_compare($this->version, '0.7.3', '>=') === true) { - $cmd .= ' -a phpcs'; - } - - return $cmd; - - }//end getBasicCommand() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Performance.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Performance.php deleted file mode 100644 index 84369899..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Performance.php +++ /dev/null @@ -1,161 +0,0 @@ - - * @copyright 2023 Juliette Reinders Folmer. All rights reserved. - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Reports; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Util\Common; -use PHP_CodeSniffer\Util\Timing; - -class Performance implements Report -{ - - - /** - * Generate a partial report for a single processed file. - * - * Function should return TRUE if it printed or stored data about the file - * and FALSE if it ignored the file. Returning TRUE indicates that the file and - * its data should be counted in the grand totals. - * - * @param array $report Prepared report data. - * See the {@see Report} interface for a detailed specification. - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being reported on. - * @param bool $showSources Show sources? - * @param int $width Maximum allowed line width. - * - * @return bool - */ - public function generateFileReport($report, File $phpcsFile, $showSources=false, $width=80) - { - $times = $phpcsFile->getListenerTimes(); - foreach ($times as $sniff => $time) { - echo "$sniff>>$time".PHP_EOL; - } - - return true; - - }//end generateFileReport() - - - /** - * Prints the sniff performance report. - * - * @param string $cachedData Any partial report data that was returned from - * generateFileReport during the run. - * @param int $totalFiles Total number of files processed during the run. - * @param int $totalErrors Total number of errors found during the run. - * @param int $totalWarnings Total number of warnings found during the run. - * @param int $totalFixable Total number of problems that can be fixed. - * @param bool $showSources Show sources? - * @param int $width Maximum allowed line width. - * @param bool $interactive Are we running in interactive mode? - * @param bool $toScreen Is the report being printed to screen? - * - * @return void - */ - public function generate( - $cachedData, - $totalFiles, - $totalErrors, - $totalWarnings, - $totalFixable, - $showSources=false, - $width=80, - $interactive=false, - $toScreen=true - ) { - $lines = explode(PHP_EOL, $cachedData); - array_pop($lines); - - if (empty($lines) === true) { - return; - } - - // First collect the accumulated timings. - $timings = []; - $totalSniffTime = 0; - foreach ($lines as $line) { - $parts = explode('>>', $line); - $sniffClass = $parts[0]; - $time = $parts[1]; - - if (isset($timings[$sniffClass]) === false) { - $timings[$sniffClass] = 0; - } - - $timings[$sniffClass] += $time; - $totalSniffTime += $time; - } - - // Next, tidy up the sniff names and determine max needed column width. - $totalTimes = []; - $maxNameWidth = 0; - foreach ($timings as $sniffClass => $secs) { - $sniffCode = Common::getSniffCode($sniffClass); - $maxNameWidth = max($maxNameWidth, strlen($sniffCode)); - $totalTimes[$sniffCode] = $secs; - } - - // Leading space + up to 12 chars for the number. - $maxTimeWidth = 13; - // Leading space, open parenthesis, up to 5 chars for the number, space + % and close parenthesis. - $maxPercWidth = 10; - // Calculate the maximum width available for the sniff name. - $maxNameWidth = min(($width - $maxTimeWidth - $maxPercWidth), max(($width - $maxTimeWidth - $maxPercWidth), $maxNameWidth)); - - arsort($totalTimes); - - echo PHP_EOL."\033[1m".'PHP CODE SNIFFER SNIFF PERFORMANCE REPORT'."\033[0m".PHP_EOL; - echo str_repeat('-', $width).PHP_EOL; - echo "\033[1m".'SNIFF'.str_repeat(' ', ($width - 31)).'TIME TAKEN (SECS) (%)'."\033[0m".PHP_EOL; - echo str_repeat('-', $width).PHP_EOL; - - // Mark sniffs which take more than twice as long as the average processing time per sniff - // in orange and when they take more than three times as long as the average, - // mark them in red. - $avgSniffTime = ($totalSniffTime / count($totalTimes)); - $doubleAvgSniffTime = (2 * $avgSniffTime); - $tripleAvgSniffTime = (3 * $avgSniffTime); - - $format = "%- {$maxNameWidth}.{$maxNameWidth}s % 12.6f (% 5.1f %%)".PHP_EOL; - $formatBold = "\033[1m%- {$maxNameWidth}.{$maxNameWidth}s % 12.6f (% 5.1f %%)\033[0m".PHP_EOL; - $formatWarning = "%- {$maxNameWidth}.{$maxNameWidth}s \033[33m% 12.6f (% 5.1f %%)\033[0m".PHP_EOL; - $formatError = "%- {$maxNameWidth}.{$maxNameWidth}s \033[31m% 12.6f (% 5.1f %%)\033[0m".PHP_EOL; - - foreach ($totalTimes as $sniff => $time) { - $percent = round((($time / $totalSniffTime) * 100), 1); - - if ($time > $tripleAvgSniffTime) { - printf($formatError, $sniff, $time, $percent); - } else if ($time > $doubleAvgSniffTime) { - printf($formatWarning, $sniff, $time, $percent); - } else { - printf($format, $sniff, $time, $percent); - } - } - - echo str_repeat('-', $width).PHP_EOL; - printf($formatBold, 'TOTAL SNIFF PROCESSING TIME', $totalSniffTime, 100); - - $runTime = (Timing::getDuration() / 1000); - $phpcsTime = ($runTime - $totalSniffTime); - - echo PHP_EOL.str_repeat('-', $width).PHP_EOL; - printf($format, 'Time taken by sniffs', $totalSniffTime, round((($totalSniffTime / $runTime) * 100), 1)); - printf($format, 'Time taken by PHPCS runner', $phpcsTime, round((($phpcsTime / $runTime) * 100), 1)); - - echo str_repeat('-', $width).PHP_EOL; - printf($formatBold, 'TOTAL RUN TIME', $runTime, 100); - echo str_repeat('-', $width).PHP_EOL; - - }//end generate() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Report.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Report.php deleted file mode 100644 index 52d7883b..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Report.php +++ /dev/null @@ -1,87 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Reports; - -use PHP_CodeSniffer\Files\File; - -interface Report -{ - - - /** - * Generate a partial report for a single processed file. - * - * Function should return TRUE if it printed or stored data about the file - * and FALSE if it ignored the file. Returning TRUE indicates that the file and - * its data should be counted in the grand totals. - * - * The format of the `$report` parameter the function receives is as follows: - * ``` - * array( - * 'filename' => string The name of the current file. - * 'errors' => int The number of errors seen in the current file. - * 'warnings' => int The number of warnings seen in the current file. - * 'fixable' => int The number of fixable issues seen in the current file. - * 'messages' => array( - * int => array( - * int => array( - * int => array( - * 'message' => string The error/warning message. - * 'source' => string The full error code for the message. - * 'severity' => int The severity of the message. - * 'fixable' => bool Whether this error/warning is auto-fixable. - * 'type' => string The type of message. Either 'ERROR' or 'WARNING'. - * ) - * ) - * ) - * ) - * ) - * ``` - * - * @param array $report Prepared report data. - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being reported on. - * @param bool $showSources Show sources? - * @param int $width Maximum allowed line width. - * - * @return bool - */ - public function generateFileReport($report, File $phpcsFile, $showSources=false, $width=80); - - - /** - * Generate the actual report. - * - * @param string $cachedData Any partial report data that was returned from - * generateFileReport during the run. - * @param int $totalFiles Total number of files processed during the run. - * @param int $totalErrors Total number of errors found during the run. - * @param int $totalWarnings Total number of warnings found during the run. - * @param int $totalFixable Total number of problems that can be fixed. - * @param bool $showSources Show sources? - * @param int $width Maximum allowed line width. - * @param bool $interactive Are we running in interactive mode? - * @param bool $toScreen Is the report being printed to screen? - * - * @return void - */ - public function generate( - $cachedData, - $totalFiles, - $totalErrors, - $totalWarnings, - $totalFixable, - $showSources=false, - $width=80, - $interactive=false, - $toScreen=true - ); - - -}//end interface diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Source.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Source.php deleted file mode 100644 index deedb3eb..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Source.php +++ /dev/null @@ -1,337 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Reports; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Util\Timing; - -class Source implements Report -{ - - - /** - * Generate a partial report for a single processed file. - * - * Function should return TRUE if it printed or stored data about the file - * and FALSE if it ignored the file. Returning TRUE indicates that the file and - * its data should be counted in the grand totals. - * - * @param array $report Prepared report data. - * See the {@see Report} interface for a detailed specification. - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being reported on. - * @param bool $showSources Show sources? - * @param int $width Maximum allowed line width. - * - * @return bool - */ - public function generateFileReport($report, File $phpcsFile, $showSources=false, $width=80) - { - if ($report['errors'] === 0 && $report['warnings'] === 0) { - // Nothing to print. - return false; - } - - $sources = []; - - foreach ($report['messages'] as $lineErrors) { - foreach ($lineErrors as $colErrors) { - foreach ($colErrors as $error) { - $src = $error['source']; - if (isset($sources[$src]) === false) { - $sources[$src] = [ - 'fixable' => (int) $error['fixable'], - 'count' => 1, - ]; - } else { - $sources[$src]['count']++; - } - } - } - } - - foreach ($sources as $source => $data) { - echo $source.'>>'.$data['fixable'].'>>'.$data['count'].PHP_EOL; - } - - return true; - - }//end generateFileReport() - - - /** - * Prints the source of all errors and warnings. - * - * @param string $cachedData Any partial report data that was returned from - * generateFileReport during the run. - * @param int $totalFiles Total number of files processed during the run. - * @param int $totalErrors Total number of errors found during the run. - * @param int $totalWarnings Total number of warnings found during the run. - * @param int $totalFixable Total number of problems that can be fixed. - * @param bool $showSources Show sources? - * @param int $width Maximum allowed line width. - * @param bool $interactive Are we running in interactive mode? - * @param bool $toScreen Is the report being printed to screen? - * - * @return void - */ - public function generate( - $cachedData, - $totalFiles, - $totalErrors, - $totalWarnings, - $totalFixable, - $showSources=false, - $width=80, - $interactive=false, - $toScreen=true - ) { - $lines = explode(PHP_EOL, $cachedData); - array_pop($lines); - - if (empty($lines) === true) { - return; - } - - $sources = []; - $maxLength = 0; - - foreach ($lines as $line) { - $parts = explode('>>', $line); - $source = $parts[0]; - $fixable = (bool) $parts[1]; - $count = $parts[2]; - - if (isset($sources[$source]) === false) { - if ($showSources === true) { - $parts = null; - $sniff = $source; - } else { - $parts = explode('.', $source); - if ($parts[0] === 'Internal') { - $parts[2] = $parts[1]; - $parts[1] = ''; - } - - $parts[1] = $this->makeFriendlyName($parts[1]); - - $sniff = $this->makeFriendlyName($parts[2]); - if (isset($parts[3]) === true) { - $name = $this->makeFriendlyName($parts[3]); - $name[0] = strtolower($name[0]); - $sniff .= ' '.$name; - unset($parts[3]); - } - - $parts[2] = $sniff; - }//end if - - $maxLength = max($maxLength, strlen($sniff)); - - $sources[$source] = [ - 'count' => $count, - 'fixable' => $fixable, - 'parts' => $parts, - ]; - } else { - $sources[$source]['count'] += $count; - }//end if - }//end foreach - - if ($showSources === true) { - $width = min($width, ($maxLength + 11)); - } else { - $width = min($width, ($maxLength + 41)); - } - - $width = max($width, 70); - - // Sort the data based on counts and source code. - $sourceCodes = array_keys($sources); - $counts = []; - foreach ($sources as $source => $data) { - $counts[$source] = $data['count']; - } - - array_multisort($counts, SORT_DESC, $sourceCodes, SORT_ASC, SORT_NATURAL, $sources); - - echo PHP_EOL."\033[1mPHP CODE SNIFFER VIOLATION SOURCE SUMMARY\033[0m".PHP_EOL; - echo str_repeat('-', $width).PHP_EOL."\033[1m"; - if ($showSources === true) { - if ($totalFixable > 0) { - echo ' SOURCE'.str_repeat(' ', ($width - 15)).'COUNT'.PHP_EOL; - } else { - echo 'SOURCE'.str_repeat(' ', ($width - 11)).'COUNT'.PHP_EOL; - } - } else { - if ($totalFixable > 0) { - echo ' STANDARD CATEGORY SNIFF'.str_repeat(' ', ($width - 44)).'COUNT'.PHP_EOL; - } else { - echo 'STANDARD CATEGORY SNIFF'.str_repeat(' ', ($width - 40)).'COUNT'.PHP_EOL; - } - } - - echo "\033[0m".str_repeat('-', $width).PHP_EOL; - - $fixableSources = 0; - - if ($showSources === true) { - $maxSniffWidth = ($width - 7); - } else { - $maxSniffWidth = ($width - 37); - } - - if ($totalFixable > 0) { - $maxSniffWidth -= 4; - } - - foreach ($sources as $source => $sourceData) { - if ($totalFixable > 0) { - echo '['; - if ($sourceData['fixable'] === true) { - echo 'x'; - $fixableSources++; - } else { - echo ' '; - } - - echo '] '; - } - - if ($showSources === true) { - if (strlen($source) > $maxSniffWidth) { - $source = substr($source, 0, $maxSniffWidth); - } - - echo $source; - if ($totalFixable > 0) { - echo str_repeat(' ', ($width - 9 - strlen($source))); - } else { - echo str_repeat(' ', ($width - 5 - strlen($source))); - } - } else { - $parts = $sourceData['parts']; - - if (strlen($parts[0]) > 8) { - $parts[0] = substr($parts[0], 0, ((strlen($parts[0]) - 8) * -1)); - } - - echo $parts[0].str_repeat(' ', (10 - strlen($parts[0]))); - - $category = $parts[1]; - if (strlen($category) > 18) { - $category = substr($category, 0, ((strlen($category) - 18) * -1)); - } - - echo $category.str_repeat(' ', (20 - strlen($category))); - - $sniff = $parts[2]; - if (strlen($sniff) > $maxSniffWidth) { - $sniff = substr($sniff, 0, $maxSniffWidth); - } - - if ($totalFixable > 0) { - echo $sniff.str_repeat(' ', ($width - 39 - strlen($sniff))); - } else { - echo $sniff.str_repeat(' ', ($width - 35 - strlen($sniff))); - } - }//end if - - echo $sourceData['count'].PHP_EOL; - }//end foreach - - echo str_repeat('-', $width).PHP_EOL; - echo "\033[1m".'A TOTAL OF '.($totalErrors + $totalWarnings).' SNIFF VIOLATION'; - if (($totalErrors + $totalWarnings) > 1) { - echo 'S'; - } - - echo ' WERE FOUND IN '.count($sources).' SOURCE'; - if (count($sources) !== 1) { - echo 'S'; - } - - echo "\033[0m"; - - if ($totalFixable > 0) { - echo PHP_EOL.str_repeat('-', $width).PHP_EOL; - echo "\033[1mPHPCBF CAN FIX THE $fixableSources MARKED SOURCES AUTOMATICALLY ($totalFixable VIOLATIONS IN TOTAL)\033[0m"; - } - - echo PHP_EOL.str_repeat('-', $width).PHP_EOL.PHP_EOL; - - if ($toScreen === true && $interactive === false) { - Timing::printRunTime(); - } - - }//end generate() - - - /** - * Converts a camel caps name into a readable string. - * - * @param string $name The camel caps name to convert. - * - * @return string - */ - public function makeFriendlyName($name) - { - if (trim($name) === '') { - return ''; - } - - $friendlyName = ''; - $length = strlen($name); - - $lastWasUpper = false; - $lastWasNumeric = false; - for ($i = 0; $i < $length; $i++) { - if (is_numeric($name[$i]) === true) { - if ($lastWasNumeric === false) { - $friendlyName .= ' '; - } - - $lastWasUpper = false; - $lastWasNumeric = true; - } else { - $lastWasNumeric = false; - - $char = strtolower($name[$i]); - if ($char === $name[$i]) { - // Lowercase. - $lastWasUpper = false; - } else { - // Uppercase. - if ($lastWasUpper === false) { - $friendlyName .= ' '; - if ($i < ($length - 1)) { - $next = $name[($i + 1)]; - if (strtolower($next) === $next) { - // Next char is lowercase so it is a word boundary. - $name[$i] = strtolower($name[$i]); - } - } - } - - $lastWasUpper = true; - } - }//end if - - $friendlyName .= $name[$i]; - }//end for - - $friendlyName = trim($friendlyName); - $friendlyName[0] = strtoupper($friendlyName[0]); - - return $friendlyName; - - }//end makeFriendlyName() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Summary.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Summary.php deleted file mode 100644 index 165ad64b..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Summary.php +++ /dev/null @@ -1,184 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Reports; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Util\Timing; - -class Summary implements Report -{ - - - /** - * Generate a partial report for a single processed file. - * - * Function should return TRUE if it printed or stored data about the file - * and FALSE if it ignored the file. Returning TRUE indicates that the file and - * its data should be counted in the grand totals. - * - * @param array $report Prepared report data. - * See the {@see Report} interface for a detailed specification. - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being reported on. - * @param bool $showSources Show sources? - * @param int $width Maximum allowed line width. - * - * @return bool - */ - public function generateFileReport($report, File $phpcsFile, $showSources=false, $width=80) - { - if (PHP_CODESNIFFER_VERBOSITY === 0 - && $report['errors'] === 0 - && $report['warnings'] === 0 - ) { - // Nothing to print. - return false; - } - - echo $report['filename'].'>>'.$report['errors'].'>>'.$report['warnings'].PHP_EOL; - return true; - - }//end generateFileReport() - - - /** - * Generates a summary of errors and warnings for each file processed. - * - * @param string $cachedData Any partial report data that was returned from - * generateFileReport during the run. - * @param int $totalFiles Total number of files processed during the run. - * @param int $totalErrors Total number of errors found during the run. - * @param int $totalWarnings Total number of warnings found during the run. - * @param int $totalFixable Total number of problems that can be fixed. - * @param bool $showSources Show sources? - * @param int $width Maximum allowed line width. - * @param bool $interactive Are we running in interactive mode? - * @param bool $toScreen Is the report being printed to screen? - * - * @return void - */ - public function generate( - $cachedData, - $totalFiles, - $totalErrors, - $totalWarnings, - $totalFixable, - $showSources=false, - $width=80, - $interactive=false, - $toScreen=true - ) { - $lines = explode(PHP_EOL, $cachedData); - array_pop($lines); - - if (empty($lines) === true) { - return; - } - - $reportFiles = []; - $maxLength = 0; - - foreach ($lines as $line) { - $parts = explode('>>', $line); - $fileLen = strlen($parts[0]); - $reportFiles[$parts[0]] = [ - 'errors' => $parts[1], - 'warnings' => $parts[2], - 'strlen' => $fileLen, - ]; - - $maxLength = max($maxLength, $fileLen); - } - - uksort( - $reportFiles, - function ($keyA, $keyB) { - $pathPartsA = explode(DIRECTORY_SEPARATOR, $keyA); - $pathPartsB = explode(DIRECTORY_SEPARATOR, $keyB); - - do { - $partA = array_shift($pathPartsA); - $partB = array_shift($pathPartsB); - } while ($partA === $partB && empty($pathPartsA) === false && empty($pathPartsB) === false); - - if (empty($pathPartsA) === false && empty($pathPartsB) === true) { - return 1; - } else if (empty($pathPartsA) === true && empty($pathPartsB) === false) { - return -1; - } else { - return strcasecmp($partA, $partB); - } - } - ); - - $width = min($width, ($maxLength + 21)); - $width = max($width, 70); - - echo PHP_EOL."\033[1m".'PHP CODE SNIFFER REPORT SUMMARY'."\033[0m".PHP_EOL; - echo str_repeat('-', $width).PHP_EOL; - echo "\033[1m".'FILE'.str_repeat(' ', ($width - 20)).'ERRORS WARNINGS'."\033[0m".PHP_EOL; - echo str_repeat('-', $width).PHP_EOL; - - foreach ($reportFiles as $file => $data) { - $padding = ($width - 18 - $data['strlen']); - if ($padding < 0) { - $file = '...'.substr($file, (($padding * -1) + 3)); - $padding = 0; - } - - echo $file.str_repeat(' ', $padding).' '; - if ($data['errors'] !== 0) { - echo "\033[31m".$data['errors']."\033[0m"; - echo str_repeat(' ', (8 - strlen((string) $data['errors']))); - } else { - echo '0 '; - } - - if ($data['warnings'] !== 0) { - echo "\033[33m".$data['warnings']."\033[0m"; - } else { - echo '0'; - } - - echo PHP_EOL; - }//end foreach - - echo str_repeat('-', $width).PHP_EOL; - echo "\033[1mA TOTAL OF $totalErrors ERROR"; - if ($totalErrors !== 1) { - echo 'S'; - } - - echo ' AND '.$totalWarnings.' WARNING'; - if ($totalWarnings !== 1) { - echo 'S'; - } - - echo ' WERE FOUND IN '.$totalFiles.' FILE'; - if ($totalFiles !== 1) { - echo 'S'; - } - - echo "\033[0m"; - - if ($totalFixable > 0) { - echo PHP_EOL.str_repeat('-', $width).PHP_EOL; - echo "\033[1mPHPCBF CAN FIX $totalFixable OF THESE SNIFF VIOLATIONS AUTOMATICALLY\033[0m"; - } - - echo PHP_EOL.str_repeat('-', $width).PHP_EOL.PHP_EOL; - - if ($toScreen === true && $interactive === false) { - Timing::printRunTime(); - } - - }//end generate() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/VersionControl.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/VersionControl.php deleted file mode 100644 index 296846c7..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/VersionControl.php +++ /dev/null @@ -1,377 +0,0 @@ - - * @author Greg Sherwood - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Reports; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Util\Timing; - -abstract class VersionControl implements Report -{ - - /** - * The name of the report we want in the output. - * - * @var string - */ - protected $reportName = 'VERSION CONTROL'; - - - /** - * Generate a partial report for a single processed file. - * - * Function should return TRUE if it printed or stored data about the file - * and FALSE if it ignored the file. Returning TRUE indicates that the file and - * its data should be counted in the grand totals. - * - * @param array $report Prepared report data. - * See the {@see Report} interface for a detailed specification. - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being reported on. - * @param bool $showSources Show sources? - * @param int $width Maximum allowed line width. - * - * @return bool - */ - public function generateFileReport($report, File $phpcsFile, $showSources=false, $width=80) - { - $blames = $this->getBlameContent($phpcsFile->getFilename()); - - $authorCache = []; - $praiseCache = []; - $sourceCache = []; - - foreach ($report['messages'] as $line => $lineErrors) { - $author = 'Unknown'; - if (isset($blames[($line - 1)]) === true) { - $blameAuthor = $this->getAuthor($blames[($line - 1)]); - if ($blameAuthor !== false) { - $author = $blameAuthor; - } - } - - if (isset($authorCache[$author]) === false) { - $authorCache[$author] = 0; - $praiseCache[$author] = [ - 'good' => 0, - 'bad' => 0, - ]; - } - - $praiseCache[$author]['bad']++; - - foreach ($lineErrors as $colErrors) { - foreach ($colErrors as $error) { - $authorCache[$author]++; - - if ($showSources === true) { - $source = $error['source']; - if (isset($sourceCache[$author][$source]) === false) { - $sourceCache[$author][$source] = [ - 'count' => 1, - 'fixable' => $error['fixable'], - ]; - } else { - $sourceCache[$author][$source]['count']++; - } - } - } - } - - unset($blames[($line - 1)]); - }//end foreach - - // Now go through and give the authors some credit for - // all the lines that do not have errors. - foreach ($blames as $line) { - $author = $this->getAuthor($line); - if ($author === false) { - $author = 'Unknown'; - } - - if (isset($authorCache[$author]) === false) { - // This author doesn't have any errors. - if (PHP_CODESNIFFER_VERBOSITY === 0) { - continue; - } - - $authorCache[$author] = 0; - $praiseCache[$author] = [ - 'good' => 0, - 'bad' => 0, - ]; - } - - $praiseCache[$author]['good']++; - }//end foreach - - foreach ($authorCache as $author => $errors) { - echo "AUTHOR>>$author>>$errors".PHP_EOL; - } - - foreach ($praiseCache as $author => $praise) { - echo "PRAISE>>$author>>".$praise['good'].'>>'.$praise['bad'].PHP_EOL; - } - - foreach ($sourceCache as $author => $sources) { - foreach ($sources as $source => $sourceData) { - $count = $sourceData['count']; - $fixable = (int) $sourceData['fixable']; - echo "SOURCE>>$author>>$source>>$count>>$fixable".PHP_EOL; - } - } - - return true; - - }//end generateFileReport() - - - /** - * Prints the author of all errors and warnings, as given by "version control blame". - * - * @param string $cachedData Any partial report data that was returned from - * generateFileReport during the run. - * @param int $totalFiles Total number of files processed during the run. - * @param int $totalErrors Total number of errors found during the run. - * @param int $totalWarnings Total number of warnings found during the run. - * @param int $totalFixable Total number of problems that can be fixed. - * @param bool $showSources Show sources? - * @param int $width Maximum allowed line width. - * @param bool $interactive Are we running in interactive mode? - * @param bool $toScreen Is the report being printed to screen? - * - * @return void - */ - public function generate( - $cachedData, - $totalFiles, - $totalErrors, - $totalWarnings, - $totalFixable, - $showSources=false, - $width=80, - $interactive=false, - $toScreen=true - ) { - $errorsShown = ($totalErrors + $totalWarnings); - if ($errorsShown === 0) { - // Nothing to show. - return; - } - - $lines = explode(PHP_EOL, $cachedData); - array_pop($lines); - - if (empty($lines) === true) { - return; - } - - $authorCache = []; - $praiseCache = []; - $sourceCache = []; - - foreach ($lines as $line) { - $parts = explode('>>', $line); - switch ($parts[0]) { - case 'AUTHOR': - if (isset($authorCache[$parts[1]]) === false) { - $authorCache[$parts[1]] = $parts[2]; - } else { - $authorCache[$parts[1]] += $parts[2]; - } - break; - case 'PRAISE': - if (isset($praiseCache[$parts[1]]) === false) { - $praiseCache[$parts[1]] = [ - 'good' => $parts[2], - 'bad' => $parts[3], - ]; - } else { - $praiseCache[$parts[1]]['good'] += $parts[2]; - $praiseCache[$parts[1]]['bad'] += $parts[3]; - } - break; - case 'SOURCE': - if (isset($praiseCache[$parts[1]]) === false) { - $praiseCache[$parts[1]] = []; - } - - if (isset($sourceCache[$parts[1]][$parts[2]]) === false) { - $sourceCache[$parts[1]][$parts[2]] = [ - 'count' => $parts[3], - 'fixable' => (bool) $parts[4], - ]; - } else { - $sourceCache[$parts[1]][$parts[2]]['count'] += $parts[3]; - } - break; - default: - break; - }//end switch - }//end foreach - - // Make sure the report width isn't too big. - $maxLength = 0; - foreach ($authorCache as $author => $count) { - $maxLength = max($maxLength, strlen($author)); - if ($showSources === true && isset($sourceCache[$author]) === true) { - foreach ($sourceCache[$author] as $source => $sourceData) { - if ($source === 'count') { - continue; - } - - $maxLength = max($maxLength, (strlen($source) + 9)); - } - } - } - - $width = min($width, ($maxLength + 30)); - $width = max($width, 70); - arsort($authorCache); - - echo PHP_EOL."\033[1m".'PHP CODE SNIFFER '.$this->reportName.' BLAME SUMMARY'."\033[0m".PHP_EOL; - echo str_repeat('-', $width).PHP_EOL."\033[1m"; - if ($showSources === true) { - echo 'AUTHOR SOURCE'.str_repeat(' ', ($width - 43)).'(Author %) (Overall %) COUNT'.PHP_EOL; - echo str_repeat('-', $width).PHP_EOL; - } else { - echo 'AUTHOR'.str_repeat(' ', ($width - 34)).'(Author %) (Overall %) COUNT'.PHP_EOL; - echo str_repeat('-', $width).PHP_EOL; - } - - echo "\033[0m"; - - if ($showSources === true) { - $maxSniffWidth = ($width - 15); - - if ($totalFixable > 0) { - $maxSniffWidth -= 4; - } - } - - $fixableSources = 0; - - foreach ($authorCache as $author => $count) { - if ($praiseCache[$author]['good'] === 0) { - $percent = 0; - } else { - $total = ($praiseCache[$author]['bad'] + $praiseCache[$author]['good']); - $percent = round(($praiseCache[$author]['bad'] / $total * 100), 2); - } - - $overallPercent = '('.round((($count / $errorsShown) * 100), 2).')'; - $authorPercent = '('.$percent.')'; - $line = str_repeat(' ', (6 - strlen($count))).$count; - $line = str_repeat(' ', (12 - strlen($overallPercent))).$overallPercent.$line; - $line = str_repeat(' ', (11 - strlen($authorPercent))).$authorPercent.$line; - $line = $author.str_repeat(' ', ($width - strlen($author) - strlen($line))).$line; - - if ($showSources === true) { - $line = "\033[1m$line\033[0m"; - } - - echo $line.PHP_EOL; - - if ($showSources === true && isset($sourceCache[$author]) === true) { - $errors = $sourceCache[$author]; - asort($errors); - $errors = array_reverse($errors); - - foreach ($errors as $source => $sourceData) { - if ($source === 'count') { - continue; - } - - $count = $sourceData['count']; - - $srcLength = strlen($source); - if ($srcLength > $maxSniffWidth) { - $source = substr($source, 0, $maxSniffWidth); - } - - $line = str_repeat(' ', (5 - strlen($count))).$count; - - echo ' '; - if ($totalFixable > 0) { - echo '['; - if ($sourceData['fixable'] === true) { - echo 'x'; - $fixableSources++; - } else { - echo ' '; - } - - echo '] '; - } - - echo $source; - if ($totalFixable > 0) { - echo str_repeat(' ', ($width - 18 - strlen($source))); - } else { - echo str_repeat(' ', ($width - 14 - strlen($source))); - } - - echo $line.PHP_EOL; - }//end foreach - }//end if - }//end foreach - - echo str_repeat('-', $width).PHP_EOL; - echo "\033[1m".'A TOTAL OF '.$errorsShown.' SNIFF VIOLATION'; - if ($errorsShown !== 1) { - echo 'S'; - } - - echo ' WERE COMMITTED BY '.count($authorCache).' AUTHOR'; - if (count($authorCache) !== 1) { - echo 'S'; - } - - echo "\033[0m"; - - if ($totalFixable > 0) { - if ($showSources === true) { - echo PHP_EOL.str_repeat('-', $width).PHP_EOL; - echo "\033[1mPHPCBF CAN FIX THE $fixableSources MARKED SOURCES AUTOMATICALLY ($totalFixable VIOLATIONS IN TOTAL)\033[0m"; - } else { - echo PHP_EOL.str_repeat('-', $width).PHP_EOL; - echo "\033[1mPHPCBF CAN FIX $totalFixable OF THESE SNIFF VIOLATIONS AUTOMATICALLY\033[0m"; - } - } - - echo PHP_EOL.str_repeat('-', $width).PHP_EOL.PHP_EOL; - - if ($toScreen === true && $interactive === false) { - Timing::printRunTime(); - } - - }//end generate() - - - /** - * Extract the author from a blame line. - * - * @param string $line Line to parse. - * - * @return mixed string or false if impossible to recover. - */ - abstract protected function getAuthor($line); - - - /** - * Gets the blame output. - * - * @param string $filename File to blame. - * - * @return array - */ - abstract protected function getBlameContent($filename); - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Xml.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Xml.php deleted file mode 100644 index 68276d80..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Reports/Xml.php +++ /dev/null @@ -1,128 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Reports; - -use PHP_CodeSniffer\Config; -use PHP_CodeSniffer\Files\File; -use XMLWriter; - -class Xml implements Report -{ - - - /** - * Generate a partial report for a single processed file. - * - * Function should return TRUE if it printed or stored data about the file - * and FALSE if it ignored the file. Returning TRUE indicates that the file and - * its data should be counted in the grand totals. - * - * @param array $report Prepared report data. - * See the {@see Report} interface for a detailed specification. - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being reported on. - * @param bool $showSources Show sources? - * @param int $width Maximum allowed line width. - * - * @return bool - */ - public function generateFileReport($report, File $phpcsFile, $showSources=false, $width=80) - { - $out = new XMLWriter; - $out->openMemory(); - $out->setIndent(true); - $out->setIndentString(' '); - $out->startDocument('1.0', 'UTF-8'); - - if ($report['errors'] === 0 && $report['warnings'] === 0) { - // Nothing to print. - return false; - } - - $out->startElement('file'); - $out->writeAttribute('name', $report['filename']); - $out->writeAttribute('errors', $report['errors']); - $out->writeAttribute('warnings', $report['warnings']); - $out->writeAttribute('fixable', $report['fixable']); - - foreach ($report['messages'] as $line => $lineErrors) { - foreach ($lineErrors as $column => $colErrors) { - foreach ($colErrors as $error) { - $error['type'] = strtolower($error['type']); - if ($phpcsFile->config->encoding !== 'utf-8') { - $error['message'] = iconv($phpcsFile->config->encoding, 'utf-8', $error['message']); - } - - $out->startElement($error['type']); - $out->writeAttribute('line', $line); - $out->writeAttribute('column', $column); - $out->writeAttribute('source', $error['source']); - $out->writeAttribute('severity', $error['severity']); - $out->writeAttribute('fixable', (int) $error['fixable']); - $out->text($error['message']); - $out->endElement(); - } - } - }//end foreach - - $out->endElement(); - - // Remove the start of the document because we will - // add that manually later. We only have it in here to - // properly set the encoding. - $content = $out->flush(); - if (strpos($content, PHP_EOL) !== false) { - $content = substr($content, (strpos($content, PHP_EOL) + strlen(PHP_EOL))); - } else if (strpos($content, "\n") !== false) { - $content = substr($content, (strpos($content, "\n") + 1)); - } - - echo $content; - - return true; - - }//end generateFileReport() - - - /** - * Prints all violations for processed files, in a proprietary XML format. - * - * @param string $cachedData Any partial report data that was returned from - * generateFileReport during the run. - * @param int $totalFiles Total number of files processed during the run. - * @param int $totalErrors Total number of errors found during the run. - * @param int $totalWarnings Total number of warnings found during the run. - * @param int $totalFixable Total number of problems that can be fixed. - * @param bool $showSources Show sources? - * @param int $width Maximum allowed line width. - * @param bool $interactive Are we running in interactive mode? - * @param bool $toScreen Is the report being printed to screen? - * - * @return void - */ - public function generate( - $cachedData, - $totalFiles, - $totalErrors, - $totalWarnings, - $totalFixable, - $showSources=false, - $width=80, - $interactive=false, - $toScreen=true - ) { - echo ''.PHP_EOL; - echo ''.PHP_EOL; - echo $cachedData; - echo ''.PHP_EOL; - - }//end generate() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Ruleset.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Ruleset.php deleted file mode 100644 index baa0f32c..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Ruleset.php +++ /dev/null @@ -1,1623 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer; - -use PHP_CodeSniffer\Exceptions\RuntimeException; -use PHP_CodeSniffer\Sniffs\DeprecatedSniff; -use PHP_CodeSniffer\Util\Common; -use PHP_CodeSniffer\Util\Standards; -use RecursiveDirectoryIterator; -use RecursiveIteratorIterator; -use ReflectionClass; -use stdClass; - -class Ruleset -{ - - /** - * The name of the coding standard being used. - * - * If a top-level standard includes other standards, or sniffs - * from other standards, only the name of the top-level standard - * will be stored in here. - * - * If multiple top-level standards are being loaded into - * a single ruleset object, this will store a comma separated list - * of the top-level standard names. - * - * @var string - */ - public $name = ''; - - /** - * A list of file paths for the ruleset files being used. - * - * @var string[] - */ - public $paths = []; - - /** - * A list of regular expressions used to ignore specific sniffs for files and folders. - * - * Is also used to set global exclude patterns. - * The key is the regular expression and the value is the type - * of ignore pattern (absolute or relative). - * - * @var array - */ - public $ignorePatterns = []; - - /** - * A list of regular expressions used to include specific sniffs for files and folders. - * - * The key is the sniff code and the value is an array with - * the key being a regular expression and the value is the type - * of ignore pattern (absolute or relative). - * - * @var array> - */ - public $includePatterns = []; - - /** - * An array of sniff objects that are being used to check files. - * - * The key is the fully qualified name of the sniff class - * and the value is the sniff object. - * - * @var array - */ - public $sniffs = []; - - /** - * A mapping of sniff codes to fully qualified class names. - * - * The key is the sniff code and the value - * is the fully qualified name of the sniff class. - * - * @var array - */ - public $sniffCodes = []; - - /** - * An array of token types and the sniffs that are listening for them. - * - * The key is the token name being listened for and the value - * is the sniff object. - * - * @var array>> - */ - public $tokenListeners = []; - - /** - * An array of rules from the ruleset.xml file. - * - * It may be empty, indicating that the ruleset does not override - * any of the default sniff settings. - * - * @var array - */ - public $ruleset = []; - - /** - * The directories that the processed rulesets are in. - * - * @var string[] - */ - protected $rulesetDirs = []; - - /** - * The config data for the run. - * - * @var \PHP_CodeSniffer\Config - */ - private $config = null; - - /** - * An array of the names of sniffs which have been marked as deprecated. - * - * The key is the sniff code and the value - * is the fully qualified name of the sniff class. - * - * @var array - */ - private $deprecatedSniffs = []; - - - /** - * Initialise the ruleset that the run will use. - * - * @param \PHP_CodeSniffer\Config $config The config data for the run. - * - * @return void - * @throws \PHP_CodeSniffer\Exceptions\RuntimeException If no sniffs were registered. - */ - public function __construct(Config $config) - { - $this->config = $config; - $restrictions = $config->sniffs; - $exclusions = $config->exclude; - $sniffs = []; - - $standardPaths = []; - foreach ($config->standards as $standard) { - $installed = Standards::getInstalledStandardPath($standard); - if ($installed === null) { - $standard = Common::realpath($standard); - if (is_dir($standard) === true - && is_file(Common::realpath($standard.DIRECTORY_SEPARATOR.'ruleset.xml')) === true - ) { - $standard = Common::realpath($standard.DIRECTORY_SEPARATOR.'ruleset.xml'); - } - } else { - $standard = $installed; - } - - $standardPaths[] = $standard; - } - - foreach ($standardPaths as $standard) { - $ruleset = @simplexml_load_string(file_get_contents($standard)); - if ($ruleset !== false) { - $standardName = (string) $ruleset['name']; - if ($this->name !== '') { - $this->name .= ', '; - } - - $this->name .= $standardName; - - // Allow autoloading of custom files inside this standard. - if (isset($ruleset['namespace']) === true) { - $namespace = (string) $ruleset['namespace']; - } else { - $namespace = basename(dirname($standard)); - } - - Autoload::addSearchPath(dirname($standard), $namespace); - } - - if (defined('PHP_CODESNIFFER_IN_TESTS') === true && empty($restrictions) === false) { - // In unit tests, only register the sniffs that the test wants and not the entire standard. - try { - foreach ($restrictions as $restriction) { - $sniffs = array_merge($sniffs, $this->expandRulesetReference($restriction, dirname($standard))); - } - } catch (RuntimeException $e) { - // Sniff reference could not be expanded, which probably means this - // is an installed standard. Let the unit test system take care of - // setting the correct sniff for testing. - return; - } - - break; - } - - if (PHP_CODESNIFFER_VERBOSITY === 1) { - echo "Registering sniffs in the $standardName standard... "; - if (count($config->standards) > 1 || PHP_CODESNIFFER_VERBOSITY > 2) { - echo PHP_EOL; - } - } - - $sniffs = array_merge($sniffs, $this->processRuleset($standard)); - }//end foreach - - // Ignore sniff restrictions if caching is on. - if ($config->cache === true) { - $restrictions = []; - $exclusions = []; - } - - $sniffRestrictions = []; - foreach ($restrictions as $sniffCode) { - $parts = explode('.', strtolower($sniffCode)); - $sniffName = $parts[0].'\sniffs\\'.$parts[1].'\\'.$parts[2].'sniff'; - $sniffRestrictions[$sniffName] = true; - } - - $sniffExclusions = []; - foreach ($exclusions as $sniffCode) { - $parts = explode('.', strtolower($sniffCode)); - $sniffName = $parts[0].'\sniffs\\'.$parts[1].'\\'.$parts[2].'sniff'; - $sniffExclusions[$sniffName] = true; - } - - $this->registerSniffs($sniffs, $sniffRestrictions, $sniffExclusions); - $this->populateTokenListeners(); - - $numSniffs = count($this->sniffs); - if (PHP_CODESNIFFER_VERBOSITY === 1) { - echo "DONE ($numSniffs sniffs registered)".PHP_EOL; - } - - if ($numSniffs === 0) { - throw new RuntimeException('No sniffs were registered'); - } - - }//end __construct() - - - /** - * Prints a report showing the sniffs contained in a standard. - * - * @return void - */ - public function explain() - { - $sniffs = array_keys($this->sniffCodes); - sort($sniffs, (SORT_NATURAL | SORT_FLAG_CASE)); - - $sniffCount = count($sniffs); - - // Add a dummy entry to the end so we loop one last time - // and echo out the collected info about the last standard. - $sniffs[] = ''; - - $summaryLine = PHP_EOL."The $this->name standard contains 1 sniff".PHP_EOL; - if ($sniffCount !== 1) { - $summaryLine = str_replace('1 sniff', "$sniffCount sniffs", $summaryLine); - } - - echo $summaryLine; - - $lastStandard = null; - $lastCount = 0; - $sniffsInStandard = []; - - foreach ($sniffs as $i => $sniff) { - if ($i === $sniffCount) { - $currentStandard = null; - } else { - $currentStandard = substr($sniff, 0, strpos($sniff, '.')); - if ($lastStandard === null) { - $lastStandard = $currentStandard; - } - } - - // Reached the first item in the next standard. - // Echo out the info collected from the previous standard. - if ($currentStandard !== $lastStandard) { - $subTitle = $lastStandard.' ('.$lastCount.' sniff'; - if ($lastCount > 1) { - $subTitle .= 's'; - } - - $subTitle .= ')'; - - echo PHP_EOL.$subTitle.PHP_EOL; - echo str_repeat('-', strlen($subTitle)).PHP_EOL; - echo ' '.implode(PHP_EOL.' ', $sniffsInStandard).PHP_EOL; - - $lastStandard = $currentStandard; - $lastCount = 0; - $sniffsInStandard = []; - - if ($currentStandard === null) { - break; - } - }//end if - - if (isset($this->deprecatedSniffs[$sniff]) === true) { - $sniff .= ' *'; - } - - $sniffsInStandard[] = $sniff; - ++$lastCount; - }//end foreach - - if (count($this->deprecatedSniffs) > 0) { - echo PHP_EOL.'* Sniffs marked with an asterix are deprecated.'.PHP_EOL; - } - - }//end explain() - - - /** - * Checks whether any deprecated sniffs were registered via the ruleset. - * - * @return bool - */ - public function hasSniffDeprecations() - { - return (count($this->deprecatedSniffs) > 0); - - }//end hasSniffDeprecations() - - - /** - * Prints an information block about deprecated sniffs being used. - * - * @return void - * - * @throws \PHP_CodeSniffer\Exceptions\RuntimeException When the interface implementation is faulty. - */ - public function showSniffDeprecations() - { - if ($this->hasSniffDeprecations() === false) { - return; - } - - // Don't show deprecation notices in quiet mode, in explain mode - // or when the documentation is being shown. - // Documentation and explain will mark a sniff as deprecated natively - // and also call the Ruleset multiple times which would lead to duplicate - // display of the deprecation messages. - if ($this->config->quiet === true - || $this->config->explain === true - || $this->config->generator !== null - ) { - return; - } - - $reportWidth = $this->config->reportWidth; - // Message takes report width minus the leading dash + two spaces, minus a one space gutter at the end. - $maxMessageWidth = ($reportWidth - 4); - $maxActualWidth = 0; - - ksort($this->deprecatedSniffs, (SORT_NATURAL | SORT_FLAG_CASE)); - - $messages = []; - $messageTemplate = 'This sniff has been deprecated since %s and will be removed in %s. %s'; - $errorTemplate = 'The %s::%s() method must return a %sstring, received %s'; - - foreach ($this->deprecatedSniffs as $sniffCode => $className) { - if (isset($this->sniffs[$className]) === false) { - // Should only be possible in test situations, but some extra defensive coding is never a bad thing. - continue; - } - - // Verify the interface was implemented correctly. - // Unfortunately can't be safeguarded via type declarations yet. - $deprecatedSince = $this->sniffs[$className]->getDeprecationVersion(); - if (is_string($deprecatedSince) === false) { - throw new RuntimeException( - sprintf($errorTemplate, $className, 'getDeprecationVersion', 'non-empty ', gettype($deprecatedSince)) - ); - } - - if ($deprecatedSince === '') { - throw new RuntimeException( - sprintf($errorTemplate, $className, 'getDeprecationVersion', 'non-empty ', '""') - ); - } - - $removedIn = $this->sniffs[$className]->getRemovalVersion(); - if (is_string($removedIn) === false) { - throw new RuntimeException( - sprintf($errorTemplate, $className, 'getRemovalVersion', 'non-empty ', gettype($removedIn)) - ); - } - - if ($removedIn === '') { - throw new RuntimeException( - sprintf($errorTemplate, $className, 'getRemovalVersion', 'non-empty ', '""') - ); - } - - $customMessage = $this->sniffs[$className]->getDeprecationMessage(); - if (is_string($customMessage) === false) { - throw new RuntimeException( - sprintf($errorTemplate, $className, 'getDeprecationMessage', '', gettype($customMessage)) - ); - } - - // Truncate the error code if there is not enough report width. - if (strlen($sniffCode) > $maxMessageWidth) { - $sniffCode = substr($sniffCode, 0, ($maxMessageWidth - 3)).'...'; - } - - $message = '- '."\033[36m".$sniffCode."\033[0m".PHP_EOL; - $maxActualWidth = max($maxActualWidth, strlen($sniffCode)); - - // Normalize new line characters in custom message. - $customMessage = preg_replace('`\R`', PHP_EOL, $customMessage); - - $notice = trim(sprintf($messageTemplate, $deprecatedSince, $removedIn, $customMessage)); - $maxActualWidth = max($maxActualWidth, min(strlen($notice), $maxMessageWidth)); - $wrapped = wordwrap($notice, $maxMessageWidth, PHP_EOL); - $message .= ' '.implode(PHP_EOL.' ', explode(PHP_EOL, $wrapped)); - - $messages[] = $message; - }//end foreach - - if (count($messages) === 0) { - return; - } - - $summaryLine = "WARNING: The $this->name standard uses 1 deprecated sniff"; - $sniffCount = count($messages); - if ($sniffCount !== 1) { - $summaryLine = str_replace('1 deprecated sniff', "$sniffCount deprecated sniffs", $summaryLine); - } - - $maxActualWidth = max($maxActualWidth, min(strlen($summaryLine), $maxMessageWidth)); - - $summaryLine = wordwrap($summaryLine, $reportWidth, PHP_EOL); - if ($this->config->colors === true) { - echo "\033[33m".$summaryLine."\033[0m".PHP_EOL; - } else { - echo $summaryLine.PHP_EOL; - } - - $messages = implode(PHP_EOL, $messages); - if ($this->config->colors === false) { - $messages = Common::stripColors($messages); - } - - echo str_repeat('-', min(($maxActualWidth + 4), $reportWidth)).PHP_EOL; - echo $messages; - - $closer = wordwrap('Deprecated sniffs are still run, but will stop working at some point in the future.', $reportWidth, PHP_EOL); - echo PHP_EOL.PHP_EOL.$closer.PHP_EOL.PHP_EOL; - - }//end showSniffDeprecations() - - - /** - * Processes a single ruleset and returns a list of the sniffs it represents. - * - * Rules founds within the ruleset are processed immediately, but sniff classes - * are not registered by this method. - * - * @param string $rulesetPath The path to a ruleset XML file. - * @param int $depth How many nested processing steps we are in. This - * is only used for debug output. - * - * @return string[] - * @throws \PHP_CodeSniffer\Exceptions\RuntimeException - If the ruleset path is invalid. - * - If a specified autoload file could not be found. - */ - public function processRuleset($rulesetPath, $depth=0) - { - $rulesetPath = Common::realpath($rulesetPath); - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo 'Processing ruleset '.Common::stripBasepath($rulesetPath, $this->config->basepath).PHP_EOL; - } - - libxml_use_internal_errors(true); - $ruleset = simplexml_load_string(file_get_contents($rulesetPath)); - if ($ruleset === false) { - $errorMsg = "Ruleset $rulesetPath is not valid".PHP_EOL; - $errors = libxml_get_errors(); - foreach ($errors as $error) { - $errorMsg .= '- On line '.$error->line.', column '.$error->column.': '.$error->message; - } - - libxml_clear_errors(); - throw new RuntimeException($errorMsg); - } - - libxml_use_internal_errors(false); - - $ownSniffs = []; - $includedSniffs = []; - $excludedSniffs = []; - - $this->paths[] = $rulesetPath; - $rulesetDir = dirname($rulesetPath); - $this->rulesetDirs[] = $rulesetDir; - - $sniffDir = $rulesetDir.DIRECTORY_SEPARATOR.'Sniffs'; - if (is_dir($sniffDir) === true) { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo "\tAdding sniff files from ".Common::stripBasepath($sniffDir, $this->config->basepath).' directory'.PHP_EOL; - } - - $ownSniffs = $this->expandSniffDirectory($sniffDir, $depth); - } - - // Include custom autoloaders. - foreach ($ruleset->{'autoload'} as $autoload) { - if ($this->shouldProcessElement($autoload) === false) { - continue; - } - - $autoloadPath = (string) $autoload; - - // Try relative autoload paths first. - $relativePath = Common::realPath(dirname($rulesetPath).DIRECTORY_SEPARATOR.$autoloadPath); - - if ($relativePath !== false && is_file($relativePath) === true) { - $autoloadPath = $relativePath; - } else if (is_file($autoloadPath) === false) { - throw new RuntimeException('The specified autoload file "'.$autoload.'" does not exist'); - } - - include_once $autoloadPath; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo "\t=> included autoloader $autoloadPath".PHP_EOL; - } - }//end foreach - - // Process custom sniff config settings. - foreach ($ruleset->{'config'} as $config) { - if ($this->shouldProcessElement($config) === false) { - continue; - } - - Config::setConfigData((string) $config['name'], (string) $config['value'], true); - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo "\t=> set config value ".(string) $config['name'].': '.(string) $config['value'].PHP_EOL; - } - } - - foreach ($ruleset->rule as $rule) { - if (isset($rule['ref']) === false - || $this->shouldProcessElement($rule) === false - ) { - continue; - } - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo "\tProcessing rule \"".$rule['ref'].'"'.PHP_EOL; - } - - $expandedSniffs = $this->expandRulesetReference((string) $rule['ref'], $rulesetDir, $depth); - $newSniffs = array_diff($expandedSniffs, $includedSniffs); - $includedSniffs = array_merge($includedSniffs, $expandedSniffs); - - $parts = explode('.', $rule['ref']); - if (count($parts) === 4 - && $parts[0] !== '' - && $parts[1] !== '' - && $parts[2] !== '' - ) { - $sniffCode = $parts[0].'.'.$parts[1].'.'.$parts[2]; - if (isset($this->ruleset[$sniffCode]['severity']) === true - && $this->ruleset[$sniffCode]['severity'] === 0 - ) { - // This sniff code has already been turned off, but now - // it is being explicitly included again, so turn it back on. - $this->ruleset[(string) $rule['ref']]['severity'] = 5; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo "\t\t* disabling sniff exclusion for specific message code *".PHP_EOL; - echo str_repeat("\t", $depth); - echo "\t\t=> severity set to 5".PHP_EOL; - } - } else if (empty($newSniffs) === false) { - $newSniff = $newSniffs[0]; - if (in_array($newSniff, $ownSniffs, true) === false) { - // Including a sniff that hasn't been included higher up, but - // only including a single message from it. So turn off all messages in - // the sniff, except this one. - $this->ruleset[$sniffCode]['severity'] = 0; - $this->ruleset[(string) $rule['ref']]['severity'] = 5; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo "\t\tExcluding sniff \"".$sniffCode.'" except for "'.$parts[3].'"'.PHP_EOL; - } - } - }//end if - }//end if - - if (isset($rule->exclude) === true) { - foreach ($rule->exclude as $exclude) { - if (isset($exclude['name']) === false) { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo "\t\t* ignoring empty exclude rule *".PHP_EOL; - echo "\t\t\t=> ".$exclude->asXML().PHP_EOL; - } - - continue; - } - - if ($this->shouldProcessElement($exclude) === false) { - continue; - } - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo "\t\tExcluding rule \"".$exclude['name'].'"'.PHP_EOL; - } - - // Check if a single code is being excluded, which is a shortcut - // for setting the severity of the message to 0. - $parts = explode('.', $exclude['name']); - if (count($parts) === 4) { - $this->ruleset[(string) $exclude['name']]['severity'] = 0; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo "\t\t=> severity set to 0".PHP_EOL; - } - } else { - $excludedSniffs = array_merge( - $excludedSniffs, - $this->expandRulesetReference((string) $exclude['name'], $rulesetDir, ($depth + 1)) - ); - } - }//end foreach - }//end if - - $this->processRule($rule, $newSniffs, $depth); - }//end foreach - - // Process custom command line arguments. - $cliArgs = []; - foreach ($ruleset->{'arg'} as $arg) { - if ($this->shouldProcessElement($arg) === false) { - continue; - } - - if (isset($arg['name']) === true) { - $argString = '--'.(string) $arg['name']; - if (isset($arg['value']) === true) { - $argString .= '='.(string) $arg['value']; - } - } else { - $argString = '-'.(string) $arg['value']; - } - - $cliArgs[] = $argString; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo "\t=> set command line value $argString".PHP_EOL; - } - }//end foreach - - // Set custom php ini values as CLI args. - foreach ($ruleset->{'ini'} as $arg) { - if ($this->shouldProcessElement($arg) === false) { - continue; - } - - if (isset($arg['name']) === false) { - continue; - } - - $name = (string) $arg['name']; - $argString = $name; - if (isset($arg['value']) === true) { - $value = (string) $arg['value']; - $argString .= "=$value"; - } else { - $value = 'true'; - } - - $cliArgs[] = '-d'; - $cliArgs[] = $argString; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo "\t=> set PHP ini value $name to $value".PHP_EOL; - } - }//end foreach - - if (empty($this->config->files) === true) { - // Process hard-coded file paths. - foreach ($ruleset->{'file'} as $file) { - $file = (string) $file; - $cliArgs[] = $file; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo "\t=> added \"$file\" to the file list".PHP_EOL; - } - } - } - - if (empty($cliArgs) === false) { - // Change the directory so all relative paths are worked - // out based on the location of the ruleset instead of - // the location of the user. - $inPhar = Common::isPharFile($rulesetDir); - if ($inPhar === false) { - $currentDir = getcwd(); - chdir($rulesetDir); - } - - $this->config->setCommandLineValues($cliArgs); - - if ($inPhar === false) { - chdir($currentDir); - } - } - - // Process custom ignore pattern rules. - foreach ($ruleset->{'exclude-pattern'} as $pattern) { - if ($this->shouldProcessElement($pattern) === false) { - continue; - } - - if (isset($pattern['type']) === false) { - $pattern['type'] = 'absolute'; - } - - $this->ignorePatterns[(string) $pattern] = (string) $pattern['type']; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo "\t=> added global ".(string) $pattern['type'].' ignore pattern: '.(string) $pattern.PHP_EOL; - } - } - - $includedSniffs = array_unique(array_merge($ownSniffs, $includedSniffs)); - $excludedSniffs = array_unique($excludedSniffs); - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $included = count($includedSniffs); - $excluded = count($excludedSniffs); - echo str_repeat("\t", $depth); - echo "=> Ruleset processing complete; included $included sniffs and excluded $excluded".PHP_EOL; - } - - // Merge our own sniff list with our externally included - // sniff list, but filter out any excluded sniffs. - $files = []; - foreach ($includedSniffs as $sniff) { - if (in_array($sniff, $excludedSniffs, true) === true) { - continue; - } else { - $files[] = Common::realpath($sniff); - } - } - - return $files; - - }//end processRuleset() - - - /** - * Expands a directory into a list of sniff files within. - * - * @param string $directory The path to a directory. - * @param int $depth How many nested processing steps we are in. This - * is only used for debug output. - * - * @return array - */ - private function expandSniffDirectory($directory, $depth=0) - { - $sniffs = []; - - $rdi = new RecursiveDirectoryIterator($directory, RecursiveDirectoryIterator::FOLLOW_SYMLINKS); - $di = new RecursiveIteratorIterator($rdi, 0, RecursiveIteratorIterator::CATCH_GET_CHILD); - - $dirLen = strlen($directory); - - foreach ($di as $file) { - $filename = $file->getFilename(); - - // Skip hidden files. - if (substr($filename, 0, 1) === '.') { - continue; - } - - // We are only interested in PHP and sniff files. - $fileParts = explode('.', $filename); - if (array_pop($fileParts) !== 'php') { - continue; - } - - $basename = basename($filename, '.php'); - if (substr($basename, -5) !== 'Sniff') { - continue; - } - - $path = $file->getPathname(); - - // Skip files in hidden directories within the Sniffs directory of this - // standard. We use the offset with strpos() to allow hidden directories - // before, valid example: - // /home/foo/.composer/vendor/squiz/custom_tool/MyStandard/Sniffs/... - if (strpos($path, DIRECTORY_SEPARATOR.'.', $dirLen) !== false) { - continue; - } - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo "\t\t=> ".Common::stripBasepath($path, $this->config->basepath).PHP_EOL; - } - - $sniffs[] = $path; - }//end foreach - - return $sniffs; - - }//end expandSniffDirectory() - - - /** - * Expands a ruleset reference into a list of sniff files. - * - * @param string $ref The reference from the ruleset XML file. - * @param string $rulesetDir The directory of the ruleset XML file, used to - * evaluate relative paths. - * @param int $depth How many nested processing steps we are in. This - * is only used for debug output. - * - * @return array - * @throws \PHP_CodeSniffer\Exceptions\RuntimeException If the reference is invalid. - */ - private function expandRulesetReference($ref, $rulesetDir, $depth=0) - { - // Ignore internal sniffs codes as they are used to only - // hide and change internal messages. - if (substr($ref, 0, 9) === 'Internal.') { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo "\t\t* ignoring internal sniff code *".PHP_EOL; - } - - return []; - } - - // As sniffs can't begin with a full stop, assume references in - // this format are relative paths and attempt to convert them - // to absolute paths. If this fails, let the reference run through - // the normal checks and have it fail as normal. - if (substr($ref, 0, 1) === '.') { - $realpath = Common::realpath($rulesetDir.'/'.$ref); - if ($realpath !== false) { - $ref = $realpath; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo "\t\t=> ".Common::stripBasepath($ref, $this->config->basepath).PHP_EOL; - } - } - } - - // As sniffs can't begin with a tilde, assume references in - // this format are relative to the user's home directory. - if (substr($ref, 0, 2) === '~/') { - $realpath = Common::realpath($ref); - if ($realpath !== false) { - $ref = $realpath; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo "\t\t=> ".Common::stripBasepath($ref, $this->config->basepath).PHP_EOL; - } - } - } - - if (is_file($ref) === true) { - if (substr($ref, -9) === 'Sniff.php') { - // A single external sniff. - $this->rulesetDirs[] = dirname(dirname(dirname($ref))); - return [$ref]; - } - } else { - // See if this is a whole standard being referenced. - $path = Standards::getInstalledStandardPath($ref); - if ($path !== null && Common::isPharFile($path) === true && strpos($path, 'ruleset.xml') === false) { - // If the ruleset exists inside the phar file, use it. - if (file_exists($path.DIRECTORY_SEPARATOR.'ruleset.xml') === true) { - $path .= DIRECTORY_SEPARATOR.'ruleset.xml'; - } else { - $path = null; - } - } - - if ($path !== null) { - $ref = $path; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo "\t\t=> ".Common::stripBasepath($ref, $this->config->basepath).PHP_EOL; - } - } else if (is_dir($ref) === false) { - // Work out the sniff path. - $sepPos = strpos($ref, DIRECTORY_SEPARATOR); - if ($sepPos !== false) { - $stdName = substr($ref, 0, $sepPos); - $path = substr($ref, $sepPos); - } else { - $parts = explode('.', $ref); - $stdName = $parts[0]; - if (count($parts) === 1) { - // A whole standard? - $path = ''; - } else if (count($parts) === 2) { - // A directory of sniffs? - $path = DIRECTORY_SEPARATOR.'Sniffs'.DIRECTORY_SEPARATOR.$parts[1]; - } else { - // A single sniff? - $path = DIRECTORY_SEPARATOR.'Sniffs'.DIRECTORY_SEPARATOR.$parts[1].DIRECTORY_SEPARATOR.$parts[2].'Sniff.php'; - } - } - - $newRef = false; - $stdPath = Standards::getInstalledStandardPath($stdName); - if ($stdPath !== null && $path !== '') { - if (Common::isPharFile($stdPath) === true - && strpos($stdPath, 'ruleset.xml') === false - ) { - // Phar files can only return the directory, - // since ruleset can be omitted if building one standard. - $newRef = Common::realpath($stdPath.$path); - } else { - $newRef = Common::realpath(dirname($stdPath).$path); - } - } - - if ($newRef === false) { - // The sniff is not locally installed, so check if it is being - // referenced as a remote sniff outside the install. We do this - // by looking through all directories where we have found ruleset - // files before, looking for ones for this particular standard, - // and seeing if it is in there. - foreach ($this->rulesetDirs as $dir) { - if (strtolower(basename($dir)) !== strtolower($stdName)) { - continue; - } - - $newRef = Common::realpath($dir.$path); - - if ($newRef !== false) { - $ref = $newRef; - } - } - } else { - $ref = $newRef; - } - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo "\t\t=> ".Common::stripBasepath($ref, $this->config->basepath).PHP_EOL; - } - }//end if - }//end if - - if (is_dir($ref) === true) { - if (is_file($ref.DIRECTORY_SEPARATOR.'ruleset.xml') === true) { - // We are referencing an external coding standard. - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo "\t\t* rule is referencing a standard using directory name; processing *".PHP_EOL; - } - - return $this->processRuleset($ref.DIRECTORY_SEPARATOR.'ruleset.xml', ($depth + 2)); - } else { - // We are referencing a whole directory of sniffs. - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo "\t\t* rule is referencing a directory of sniffs *".PHP_EOL; - echo str_repeat("\t", $depth); - echo "\t\tAdding sniff files from directory".PHP_EOL; - } - - return $this->expandSniffDirectory($ref, ($depth + 1)); - } - } else { - if (is_file($ref) === false) { - $error = "Referenced sniff \"$ref\" does not exist"; - throw new RuntimeException($error); - } - - if (substr($ref, -9) === 'Sniff.php') { - // A single sniff. - return [$ref]; - } else { - // Assume an external ruleset.xml file. - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo "\t\t* rule is referencing a standard using ruleset path; processing *".PHP_EOL; - } - - return $this->processRuleset($ref, ($depth + 2)); - } - }//end if - - }//end expandRulesetReference() - - - /** - * Processes a rule from a ruleset XML file, overriding built-in defaults. - * - * @param \SimpleXMLElement $rule The rule object from a ruleset XML file. - * @param string[] $newSniffs An array of sniffs that got included by this rule. - * @param int $depth How many nested processing steps we are in. - * This is only used for debug output. - * - * @return void - * @throws \PHP_CodeSniffer\Exceptions\RuntimeException If rule settings are invalid. - */ - private function processRule($rule, $newSniffs, $depth=0) - { - $ref = (string) $rule['ref']; - $todo = [$ref]; - - $parts = explode('.', $ref); - $partsCount = count($parts); - if ($partsCount <= 2 - || $partsCount > count(array_filter($parts)) - || in_array($ref, $newSniffs) === true - ) { - // We are processing a standard, a category of sniffs or a relative path inclusion. - foreach ($newSniffs as $sniffFile) { - $parts = explode(DIRECTORY_SEPARATOR, $sniffFile); - if (count($parts) === 1 && DIRECTORY_SEPARATOR === '\\') { - // Path using forward slashes while running on Windows. - $parts = explode('/', $sniffFile); - } - - $sniffName = array_pop($parts); - $sniffCategory = array_pop($parts); - array_pop($parts); - $sniffStandard = array_pop($parts); - $todo[] = $sniffStandard.'.'.$sniffCategory.'.'.substr($sniffName, 0, -9); - } - } - - foreach ($todo as $code) { - // Custom severity. - if (isset($rule->severity) === true - && $this->shouldProcessElement($rule->severity) === true - ) { - if (isset($this->ruleset[$code]) === false) { - $this->ruleset[$code] = []; - } - - $this->ruleset[$code]['severity'] = (int) $rule->severity; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo "\t\t=> severity set to ".(int) $rule->severity; - if ($code !== $ref) { - echo " for $code"; - } - - echo PHP_EOL; - } - } - - // Custom message type. - if (isset($rule->type) === true - && $this->shouldProcessElement($rule->type) === true - ) { - if (isset($this->ruleset[$code]) === false) { - $this->ruleset[$code] = []; - } - - $type = strtolower((string) $rule->type); - if ($type !== 'error' && $type !== 'warning') { - throw new RuntimeException("Message type \"$type\" is invalid; must be \"error\" or \"warning\""); - } - - $this->ruleset[$code]['type'] = $type; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo "\t\t=> message type set to ".(string) $rule->type; - if ($code !== $ref) { - echo " for $code"; - } - - echo PHP_EOL; - } - }//end if - - // Custom message. - if (isset($rule->message) === true - && $this->shouldProcessElement($rule->message) === true - ) { - if (isset($this->ruleset[$code]) === false) { - $this->ruleset[$code] = []; - } - - $this->ruleset[$code]['message'] = (string) $rule->message; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo "\t\t=> message set to ".(string) $rule->message; - if ($code !== $ref) { - echo " for $code"; - } - - echo PHP_EOL; - } - } - - // Custom properties. - if (isset($rule->properties) === true - && $this->shouldProcessElement($rule->properties) === true - ) { - $propertyScope = 'standard'; - if ($code === $ref || substr($ref, -9) === 'Sniff.php') { - $propertyScope = 'sniff'; - } - - foreach ($rule->properties->property as $prop) { - if ($this->shouldProcessElement($prop) === false) { - continue; - } - - if (isset($this->ruleset[$code]) === false) { - $this->ruleset[$code] = [ - 'properties' => [], - ]; - } else if (isset($this->ruleset[$code]['properties']) === false) { - $this->ruleset[$code]['properties'] = []; - } - - $name = (string) $prop['name']; - if (isset($prop['type']) === true - && (string) $prop['type'] === 'array' - ) { - $values = []; - if (isset($prop['extend']) === true - && (string) $prop['extend'] === 'true' - && isset($this->ruleset[$code]['properties'][$name]['value']) === true - ) { - $values = $this->ruleset[$code]['properties'][$name]['value']; - } - - if (isset($prop->element) === true) { - $printValue = ''; - foreach ($prop->element as $element) { - if ($this->shouldProcessElement($element) === false) { - continue; - } - - $value = (string) $element['value']; - if (isset($element['key']) === true) { - $key = (string) $element['key']; - $values[$key] = $value; - $printValue .= $key.'=>'.$value.','; - } else { - $values[] = $value; - $printValue .= $value.','; - } - } - - $printValue = rtrim($printValue, ','); - } else { - $value = (string) $prop['value']; - $printValue = $value; - foreach (explode(',', $value) as $val) { - list($k, $v) = explode('=>', $val.'=>'); - if ($v !== '') { - $values[trim($k)] = trim($v); - } else { - $values[] = trim($k); - } - } - }//end if - - $this->ruleset[$code]['properties'][$name] = [ - 'value' => $values, - 'scope' => $propertyScope, - ]; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo "\t\t=> array property \"$name\" set to \"$printValue\""; - if ($code !== $ref) { - echo " for $code"; - } - - echo PHP_EOL; - } - } else { - $this->ruleset[$code]['properties'][$name] = [ - 'value' => (string) $prop['value'], - 'scope' => $propertyScope, - ]; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo "\t\t=> property \"$name\" set to \"".(string) $prop['value'].'"'; - if ($code !== $ref) { - echo " for $code"; - } - - echo PHP_EOL; - } - }//end if - }//end foreach - }//end if - - // Ignore patterns. - foreach ($rule->{'exclude-pattern'} as $pattern) { - if ($this->shouldProcessElement($pattern) === false) { - continue; - } - - if (isset($this->ignorePatterns[$code]) === false) { - $this->ignorePatterns[$code] = []; - } - - if (isset($pattern['type']) === false) { - $pattern['type'] = 'absolute'; - } - - $this->ignorePatterns[$code][(string) $pattern] = (string) $pattern['type']; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo "\t\t=> added rule-specific ".(string) $pattern['type'].' ignore pattern'; - if ($code !== $ref) { - echo " for $code"; - } - - echo ': '.(string) $pattern.PHP_EOL; - } - }//end foreach - - // Include patterns. - foreach ($rule->{'include-pattern'} as $pattern) { - if ($this->shouldProcessElement($pattern) === false) { - continue; - } - - if (isset($this->includePatterns[$code]) === false) { - $this->includePatterns[$code] = []; - } - - if (isset($pattern['type']) === false) { - $pattern['type'] = 'absolute'; - } - - $this->includePatterns[$code][(string) $pattern] = (string) $pattern['type']; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo "\t\t=> added rule-specific ".(string) $pattern['type'].' include pattern'; - if ($code !== $ref) { - echo " for $code"; - } - - echo ': '.(string) $pattern.PHP_EOL; - } - }//end foreach - }//end foreach - - }//end processRule() - - - /** - * Determine if an element should be processed or ignored. - * - * @param \SimpleXMLElement $element An object from a ruleset XML file. - * - * @return bool - */ - private function shouldProcessElement($element) - { - if (isset($element['phpcbf-only']) === false - && isset($element['phpcs-only']) === false - ) { - // No exceptions are being made. - return true; - } - - if (PHP_CODESNIFFER_CBF === true - && isset($element['phpcbf-only']) === true - && (string) $element['phpcbf-only'] === 'true' - ) { - return true; - } - - if (PHP_CODESNIFFER_CBF === false - && isset($element['phpcs-only']) === true - && (string) $element['phpcs-only'] === 'true' - ) { - return true; - } - - return false; - - }//end shouldProcessElement() - - - /** - * Loads and stores sniffs objects used for sniffing files. - * - * @param array $files Paths to the sniff files to register. - * @param array $restrictions The sniff class names to restrict the allowed - * listeners to. - * @param array $exclusions The sniff class names to exclude from the - * listeners list. - * - * @return void - */ - public function registerSniffs($files, $restrictions, $exclusions) - { - $listeners = []; - - foreach ($files as $file) { - // Work out where the position of /StandardName/Sniffs/... is - // so we can determine what the class will be called. - $sniffPos = strrpos($file, DIRECTORY_SEPARATOR.'Sniffs'.DIRECTORY_SEPARATOR); - if ($sniffPos === false) { - continue; - } - - $slashPos = strrpos(substr($file, 0, $sniffPos), DIRECTORY_SEPARATOR); - if ($slashPos === false) { - continue; - } - - $className = Autoload::loadFile($file); - $compareName = Common::cleanSniffClass($className); - - // If they have specified a list of sniffs to restrict to, check - // to see if this sniff is allowed. - if (empty($restrictions) === false - && isset($restrictions[$compareName]) === false - ) { - continue; - } - - // If they have specified a list of sniffs to exclude, check - // to see if this sniff is allowed. - if (empty($exclusions) === false - && isset($exclusions[$compareName]) === true - ) { - continue; - } - - // Skip abstract classes. - $reflection = new ReflectionClass($className); - if ($reflection->isAbstract() === true) { - continue; - } - - $listeners[$className] = $className; - - if (PHP_CODESNIFFER_VERBOSITY > 2) { - echo "Registered $className".PHP_EOL; - } - }//end foreach - - $this->sniffs = $listeners; - - }//end registerSniffs() - - - /** - * Populates the array of PHP_CodeSniffer_Sniff objects for this file. - * - * @return void - * @throws \PHP_CodeSniffer\Exceptions\RuntimeException If sniff registration fails. - */ - public function populateTokenListeners() - { - // Construct a list of listeners indexed by token being listened for. - $this->tokenListeners = []; - - foreach ($this->sniffs as $sniffClass => $sniffObject) { - $this->sniffs[$sniffClass] = null; - $this->sniffs[$sniffClass] = new $sniffClass(); - - $sniffCode = Common::getSniffCode($sniffClass); - $this->sniffCodes[$sniffCode] = $sniffClass; - - if ($this->sniffs[$sniffClass] instanceof DeprecatedSniff) { - $this->deprecatedSniffs[$sniffCode] = $sniffClass; - } - - // Set custom properties. - if (isset($this->ruleset[$sniffCode]['properties']) === true) { - foreach ($this->ruleset[$sniffCode]['properties'] as $name => $settings) { - $this->setSniffProperty($sniffClass, $name, $settings); - } - } - - $tokenizers = []; - $vars = get_class_vars($sniffClass); - if (isset($vars['supportedTokenizers']) === true) { - foreach ($vars['supportedTokenizers'] as $tokenizer) { - $tokenizers[$tokenizer] = $tokenizer; - } - } else { - $tokenizers = ['PHP' => 'PHP']; - } - - $tokens = $this->sniffs[$sniffClass]->register(); - if (is_array($tokens) === false) { - $msg = "Sniff $sniffClass register() method must return an array"; - throw new RuntimeException($msg); - } - - $ignorePatterns = []; - $patterns = $this->getIgnorePatterns($sniffCode); - foreach ($patterns as $pattern => $type) { - $replacements = [ - '\\,' => ',', - '*' => '.*', - ]; - - $ignorePatterns[] = strtr($pattern, $replacements); - } - - $includePatterns = []; - $patterns = $this->getIncludePatterns($sniffCode); - foreach ($patterns as $pattern => $type) { - $replacements = [ - '\\,' => ',', - '*' => '.*', - ]; - - $includePatterns[] = strtr($pattern, $replacements); - } - - foreach ($tokens as $token) { - if (isset($this->tokenListeners[$token]) === false) { - $this->tokenListeners[$token] = []; - } - - if (isset($this->tokenListeners[$token][$sniffClass]) === false) { - $this->tokenListeners[$token][$sniffClass] = [ - 'class' => $sniffClass, - 'source' => $sniffCode, - 'tokenizers' => $tokenizers, - 'ignore' => $ignorePatterns, - 'include' => $includePatterns, - ]; - } - } - }//end foreach - - }//end populateTokenListeners() - - - /** - * Set a single property for a sniff. - * - * @param string $sniffClass The class name of the sniff. - * @param string $name The name of the property to change. - * @param array $settings Array with the new value of the property and the scope of the property being set. - * - * @return void - * - * @throws \PHP_CodeSniffer\Exceptions\RuntimeException When attempting to set a non-existent property on a sniff - * which doesn't declare the property or explicitly supports - * dynamic properties. - */ - public function setSniffProperty($sniffClass, $name, $settings) - { - // Setting a property for a sniff we are not using. - if (isset($this->sniffs[$sniffClass]) === false) { - return; - } - - $name = trim($name); - $propertyName = $name; - if (substr($propertyName, -2) === '[]') { - $propertyName = substr($propertyName, 0, -2); - } - - /* - * BC-compatibility layer for $settings using the pre-PHPCS 3.8.0 format. - * - * Prior to PHPCS 3.8.0, `$settings` was expected to only contain the new _value_ - * for the property (which could be an array). - * Since PHPCS 3.8.0, `$settings` is expected to be an array with two keys: 'scope' - * and 'value', where 'scope' indicates whether the property should be set to the given 'value' - * for one individual sniff or for all sniffs in a standard. - * - * This BC-layer is only for integrations with PHPCS which may call this method directly - * and will be removed in PHPCS 4.0.0. - */ - - if (is_array($settings) === false - || isset($settings['scope'], $settings['value']) === false - ) { - // This will be an "old" format value. - $settings = [ - 'value' => $settings, - 'scope' => 'standard', - ]; - - trigger_error( - __FUNCTION__.': the format of the $settings parameter has changed from (mixed) $value to array(\'scope\' => \'sniff|standard\', \'value\' => $value). Please update your integration code. See PR #3629 for more information.', - E_USER_DEPRECATED - ); - } - - $isSettable = false; - $sniffObject = $this->sniffs[$sniffClass]; - if (property_exists($sniffObject, $propertyName) === true - || ($sniffObject instanceof stdClass) === true - || method_exists($sniffObject, '__set') === true - ) { - $isSettable = true; - } - - if ($isSettable === false) { - if ($settings['scope'] === 'sniff') { - $notice = "Ruleset invalid. Property \"$propertyName\" does not exist on sniff "; - $notice .= array_search($sniffClass, $this->sniffCodes, true); - throw new RuntimeException($notice); - } - - return; - } - - $value = $settings['value']; - - if (is_string($value) === true) { - $value = trim($value); - } - - if ($value === '') { - $value = null; - } - - // Special case for booleans. - if ($value === 'true') { - $value = true; - } else if ($value === 'false') { - $value = false; - } else if (substr($name, -2) === '[]') { - $name = $propertyName; - $values = []; - if ($value !== null) { - foreach (explode(',', $value) as $val) { - list($k, $v) = explode('=>', $val.'=>'); - if ($v !== '') { - $values[trim($k)] = trim($v); - } else { - $values[] = trim($k); - } - } - } - - $value = $values; - } - - $sniffObject->$name = $value; - - }//end setSniffProperty() - - - /** - * Gets the array of ignore patterns. - * - * Optionally takes a listener to get ignore patterns specified - * for that sniff only. - * - * @param string $listener The listener to get patterns for. If NULL, all - * patterns are returned. - * - * @return array - */ - public function getIgnorePatterns($listener=null) - { - if ($listener === null) { - return $this->ignorePatterns; - } - - if (isset($this->ignorePatterns[$listener]) === true) { - return $this->ignorePatterns[$listener]; - } - - return []; - - }//end getIgnorePatterns() - - - /** - * Gets the array of include patterns. - * - * Optionally takes a listener to get include patterns specified - * for that sniff only. - * - * @param string $listener The listener to get patterns for. If NULL, all - * patterns are returned. - * - * @return array - */ - public function getIncludePatterns($listener=null) - { - if ($listener === null) { - return $this->includePatterns; - } - - if (isset($this->includePatterns[$listener]) === true) { - return $this->includePatterns[$listener]; - } - - return []; - - }//end getIncludePatterns() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Runner.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Runner.php deleted file mode 100644 index 20c2eddf..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Runner.php +++ /dev/null @@ -1,992 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer; - -use Exception; -use InvalidArgumentException; -use PHP_CodeSniffer\Exceptions\DeepExitException; -use PHP_CodeSniffer\Exceptions\RuntimeException; -use PHP_CodeSniffer\Files\DummyFile; -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Files\FileList; -use PHP_CodeSniffer\Util\Cache; -use PHP_CodeSniffer\Util\Common; -use PHP_CodeSniffer\Util\Standards; -use PHP_CodeSniffer\Util\Timing; -use PHP_CodeSniffer\Util\Tokens; - -class Runner -{ - - /** - * The config data for the run. - * - * @var \PHP_CodeSniffer\Config - */ - public $config = null; - - /** - * The ruleset used for the run. - * - * @var \PHP_CodeSniffer\Ruleset - */ - public $ruleset = null; - - /** - * The reporter used for generating reports after the run. - * - * @var \PHP_CodeSniffer\Reporter - */ - public $reporter = null; - - - /** - * Run the PHPCS script. - * - * @return int - */ - public function runPHPCS() - { - $this->registerOutOfMemoryShutdownMessage('phpcs'); - - try { - Timing::startTiming(); - Runner::checkRequirements(); - - if (defined('PHP_CODESNIFFER_CBF') === false) { - define('PHP_CODESNIFFER_CBF', false); - } - - // Creating the Config object populates it with all required settings - // based on the CLI arguments provided to the script and any config - // values the user has set. - $this->config = new Config(); - - // Init the run and load the rulesets to set additional config vars. - $this->init(); - - // Print a list of sniffs in each of the supplied standards. - // We fudge the config here so that each standard is explained in isolation. - if ($this->config->explain === true) { - $standards = $this->config->standards; - foreach ($standards as $standard) { - $this->config->standards = [$standard]; - $ruleset = new Ruleset($this->config); - $ruleset->explain(); - } - - return 0; - } - - // Generate documentation for each of the supplied standards. - if ($this->config->generator !== null) { - $standards = $this->config->standards; - foreach ($standards as $standard) { - $this->config->standards = [$standard]; - $ruleset = new Ruleset($this->config); - $class = 'PHP_CodeSniffer\Generators\\'.$this->config->generator; - $generator = new $class($ruleset); - $generator->generate(); - } - - return 0; - } - - // Other report formats don't really make sense in interactive mode - // so we hard-code the full report here and when outputting. - // We also ensure parallel processing is off because we need to do one file at a time. - if ($this->config->interactive === true) { - $this->config->reports = ['full' => null]; - $this->config->parallel = 1; - $this->config->showProgress = false; - } - - // Disable caching if we are processing STDIN as we can't be 100% - // sure where the file came from or if it will change in the future. - if ($this->config->stdin === true) { - $this->config->cache = false; - } - - $numErrors = $this->run(); - - // Print all the reports for this run. - $toScreen = $this->reporter->printReports(); - - // Only print timer output if no reports were - // printed to the screen so we don't put additional output - // in something like an XML report. If we are printing to screen, - // the report types would have already worked out who should - // print the timer info. - if ($this->config->interactive === false - && ($toScreen === false - || (($this->reporter->totalErrors + $this->reporter->totalWarnings) === 0 && $this->config->showProgress === true)) - ) { - Timing::printRunTime(); - } - } catch (DeepExitException $e) { - echo $e->getMessage(); - return $e->getCode(); - }//end try - - if ($numErrors === 0) { - // No errors found. - return 0; - } else if ($this->reporter->totalFixable === 0) { - // Errors found, but none of them can be fixed by PHPCBF. - return 1; - } else { - // Errors found, and some can be fixed by PHPCBF. - return 2; - } - - }//end runPHPCS() - - - /** - * Run the PHPCBF script. - * - * @return int - */ - public function runPHPCBF() - { - $this->registerOutOfMemoryShutdownMessage('phpcbf'); - - if (defined('PHP_CODESNIFFER_CBF') === false) { - define('PHP_CODESNIFFER_CBF', true); - } - - try { - Timing::startTiming(); - Runner::checkRequirements(); - - // Creating the Config object populates it with all required settings - // based on the CLI arguments provided to the script and any config - // values the user has set. - $this->config = new Config(); - - // When processing STDIN, we can't output anything to the screen - // or it will end up mixed in with the file output. - if ($this->config->stdin === true) { - $this->config->verbosity = 0; - } - - // Init the run and load the rulesets to set additional config vars. - $this->init(); - - // When processing STDIN, we only process one file at a time and - // we don't process all the way through, so we can't use the parallel - // running system. - if ($this->config->stdin === true) { - $this->config->parallel = 1; - } - - // Override some of the command line settings that might break the fixes. - $this->config->generator = null; - $this->config->explain = false; - $this->config->interactive = false; - $this->config->cache = false; - $this->config->showSources = false; - $this->config->recordErrors = false; - $this->config->reportFile = null; - - // Only use the "Cbf" report, but allow for the Performance report as well. - $originalReports = array_change_key_case($this->config->reports, CASE_LOWER); - $newReports = ['cbf' => null]; - if (array_key_exists('performance', $originalReports) === true) { - $newReports['performance'] = $originalReports['performance']; - } - - $this->config->reports = $newReports; - - // If a standard tries to set command line arguments itself, some - // may be blocked because PHPCBF is running, so stop the script - // dying if any are found. - $this->config->dieOnUnknownArg = false; - - $this->run(); - $this->reporter->printReports(); - - echo PHP_EOL; - Timing::printRunTime(); - } catch (DeepExitException $e) { - echo $e->getMessage(); - return $e->getCode(); - }//end try - - if ($this->reporter->totalFixed === 0) { - // Nothing was fixed by PHPCBF. - if ($this->reporter->totalFixable === 0) { - // Nothing found that could be fixed. - return 0; - } else { - // Something failed to fix. - return 2; - } - } - - if ($this->reporter->totalFixable === 0) { - // PHPCBF fixed all fixable errors. - return 1; - } - - // PHPCBF fixed some fixable errors, but others failed to fix. - return 2; - - }//end runPHPCBF() - - - /** - * Exits if the minimum requirements of PHP_CodeSniffer are not met. - * - * @return void - * @throws \PHP_CodeSniffer\Exceptions\DeepExitException If the requirements are not met. - */ - public function checkRequirements() - { - // Check the PHP version. - if (PHP_VERSION_ID < 50400) { - $error = 'ERROR: PHP_CodeSniffer requires PHP version 5.4.0 or greater.'.PHP_EOL; - throw new DeepExitException($error, 3); - } - - $requiredExtensions = [ - 'tokenizer', - 'xmlwriter', - 'SimpleXML', - ]; - $missingExtensions = []; - - foreach ($requiredExtensions as $extension) { - if (extension_loaded($extension) === false) { - $missingExtensions[] = $extension; - } - } - - if (empty($missingExtensions) === false) { - $last = array_pop($requiredExtensions); - $required = implode(', ', $requiredExtensions); - $required .= ' and '.$last; - - if (count($missingExtensions) === 1) { - $missing = $missingExtensions[0]; - } else { - $last = array_pop($missingExtensions); - $missing = implode(', ', $missingExtensions); - $missing .= ' and '.$last; - } - - $error = 'ERROR: PHP_CodeSniffer requires the %s extensions to be enabled. Please enable %s.'.PHP_EOL; - $error = sprintf($error, $required, $missing); - throw new DeepExitException($error, 3); - } - - }//end checkRequirements() - - - /** - * Init the rulesets and other high-level settings. - * - * @return void - * @throws \PHP_CodeSniffer\Exceptions\DeepExitException If a referenced standard is not installed. - */ - public function init() - { - if (defined('PHP_CODESNIFFER_CBF') === false) { - define('PHP_CODESNIFFER_CBF', false); - } - - // Ensure this option is enabled or else line endings will not always - // be detected properly for files created on a Mac with the /r line ending. - @ini_set('auto_detect_line_endings', true); - - // Disable the PCRE JIT as this caused issues with parallel running. - ini_set('pcre.jit', false); - - // Check that the standards are valid. - foreach ($this->config->standards as $standard) { - if (Standards::isInstalledStandard($standard) === false) { - // They didn't select a valid coding standard, so help them - // out by letting them know which standards are installed. - $error = 'ERROR: the "'.$standard.'" coding standard is not installed. '; - ob_start(); - Standards::printInstalledStandards(); - $error .= ob_get_contents(); - ob_end_clean(); - throw new DeepExitException($error, 3); - } - } - - // Saves passing the Config object into other objects that only need - // the verbosity flag for debug output. - if (defined('PHP_CODESNIFFER_VERBOSITY') === false) { - define('PHP_CODESNIFFER_VERBOSITY', $this->config->verbosity); - } - - // Create this class so it is autoloaded and sets up a bunch - // of PHP_CodeSniffer-specific token type constants. - new Tokens(); - - // Allow autoloading of custom files inside installed standards. - $installedStandards = Standards::getInstalledStandardDetails(); - foreach ($installedStandards as $details) { - Autoload::addSearchPath($details['path'], $details['namespace']); - } - - // The ruleset contains all the information about how the files - // should be checked and/or fixed. - try { - $this->ruleset = new Ruleset($this->config); - - if ($this->ruleset->hasSniffDeprecations() === true) { - $this->ruleset->showSniffDeprecations(); - } - } catch (RuntimeException $e) { - $error = 'ERROR: '.$e->getMessage().PHP_EOL.PHP_EOL; - $error .= $this->config->printShortUsage(true); - throw new DeepExitException($error, 3); - } - - }//end init() - - - /** - * Performs the run. - * - * @return int The number of errors and warnings found. - * @throws \PHP_CodeSniffer\Exceptions\DeepExitException - * @throws \PHP_CodeSniffer\Exceptions\RuntimeException - */ - private function run() - { - // The class that manages all reporters for the run. - $this->reporter = new Reporter($this->config); - - // Include bootstrap files. - foreach ($this->config->bootstrap as $bootstrap) { - include $bootstrap; - } - - if ($this->config->stdin === true) { - $fileContents = $this->config->stdinContent; - if ($fileContents === null) { - $handle = fopen('php://stdin', 'r'); - stream_set_blocking($handle, true); - $fileContents = stream_get_contents($handle); - fclose($handle); - } - - $todo = new FileList($this->config, $this->ruleset); - $dummy = new DummyFile($fileContents, $this->ruleset, $this->config); - $todo->addFile($dummy->path, $dummy); - } else { - if (empty($this->config->files) === true) { - $error = 'ERROR: You must supply at least one file or directory to process.'.PHP_EOL.PHP_EOL; - $error .= $this->config->printShortUsage(true); - throw new DeepExitException($error, 3); - } - - if (PHP_CODESNIFFER_VERBOSITY > 0) { - echo 'Creating file list... '; - } - - $todo = new FileList($this->config, $this->ruleset); - - if (PHP_CODESNIFFER_VERBOSITY > 0) { - $numFiles = count($todo); - echo "DONE ($numFiles files in queue)".PHP_EOL; - } - - if ($this->config->cache === true) { - if (PHP_CODESNIFFER_VERBOSITY > 0) { - echo 'Loading cache... '; - } - - Cache::load($this->ruleset, $this->config); - - if (PHP_CODESNIFFER_VERBOSITY > 0) { - $size = Cache::getSize(); - echo "DONE ($size files in cache)".PHP_EOL; - } - } - }//end if - - // Turn all sniff errors into exceptions. - set_error_handler([$this, 'handleErrors']); - - // If verbosity is too high, turn off parallelism so the - // debug output is clean. - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $this->config->parallel = 1; - } - - // If the PCNTL extension isn't installed, we can't fork. - if (function_exists('pcntl_fork') === false) { - $this->config->parallel = 1; - } - - $lastDir = ''; - $numFiles = count($todo); - - if ($this->config->parallel === 1) { - // Running normally. - $numProcessed = 0; - foreach ($todo as $path => $file) { - if ($file->ignored === false) { - $currDir = dirname($path); - if ($lastDir !== $currDir) { - if (PHP_CODESNIFFER_VERBOSITY > 0) { - echo 'Changing into directory '.Common::stripBasepath($currDir, $this->config->basepath).PHP_EOL; - } - - $lastDir = $currDir; - } - - $this->processFile($file); - } else if (PHP_CODESNIFFER_VERBOSITY > 0) { - echo 'Skipping '.basename($file->path).PHP_EOL; - } - - $numProcessed++; - $this->printProgress($file, $numFiles, $numProcessed); - } - } else { - // Batching and forking. - $childProcs = []; - $numPerBatch = ceil($numFiles / $this->config->parallel); - - for ($batch = 0; $batch < $this->config->parallel; $batch++) { - $startAt = ($batch * $numPerBatch); - if ($startAt >= $numFiles) { - break; - } - - $endAt = ($startAt + $numPerBatch); - if ($endAt > $numFiles) { - $endAt = $numFiles; - } - - $childOutFilename = tempnam(sys_get_temp_dir(), 'phpcs-child'); - $pid = pcntl_fork(); - if ($pid === -1) { - throw new RuntimeException('Failed to create child process'); - } else if ($pid !== 0) { - $childProcs[$pid] = $childOutFilename; - } else { - // Move forward to the start of the batch. - $todo->rewind(); - for ($i = 0; $i < $startAt; $i++) { - $todo->next(); - } - - // Reset the reporter to make sure only figures from this - // file batch are recorded. - $this->reporter->totalFiles = 0; - $this->reporter->totalErrors = 0; - $this->reporter->totalWarnings = 0; - $this->reporter->totalFixable = 0; - $this->reporter->totalFixed = 0; - - // Process the files. - $pathsProcessed = []; - ob_start(); - for ($i = $startAt; $i < $endAt; $i++) { - $path = $todo->key(); - $file = $todo->current(); - - if ($file->ignored === true) { - $todo->next(); - continue; - } - - $currDir = dirname($path); - if ($lastDir !== $currDir) { - if (PHP_CODESNIFFER_VERBOSITY > 0) { - echo 'Changing into directory '.Common::stripBasepath($currDir, $this->config->basepath).PHP_EOL; - } - - $lastDir = $currDir; - } - - $this->processFile($file); - - $pathsProcessed[] = $path; - $todo->next(); - }//end for - - $debugOutput = ob_get_contents(); - ob_end_clean(); - - // Write information about the run to the filesystem - // so it can be picked up by the main process. - $childOutput = [ - 'totalFiles' => $this->reporter->totalFiles, - 'totalErrors' => $this->reporter->totalErrors, - 'totalWarnings' => $this->reporter->totalWarnings, - 'totalFixable' => $this->reporter->totalFixable, - 'totalFixed' => $this->reporter->totalFixed, - ]; - - $output = '<'.'?php'."\n".' $childOutput = '; - $output .= var_export($childOutput, true); - $output .= ";\n\$debugOutput = "; - $output .= var_export($debugOutput, true); - - if ($this->config->cache === true) { - $childCache = []; - foreach ($pathsProcessed as $path) { - $childCache[$path] = Cache::get($path); - } - - $output .= ";\n\$childCache = "; - $output .= var_export($childCache, true); - } - - $output .= ";\n?".'>'; - file_put_contents($childOutFilename, $output); - exit(); - }//end if - }//end for - - $success = $this->processChildProcs($childProcs); - if ($success === false) { - throw new RuntimeException('One or more child processes failed to run'); - } - }//end if - - restore_error_handler(); - - if (PHP_CODESNIFFER_VERBOSITY === 0 - && $this->config->interactive === false - && $this->config->showProgress === true - ) { - echo PHP_EOL.PHP_EOL; - } - - if ($this->config->cache === true) { - Cache::save(); - } - - $ignoreWarnings = Config::getConfigData('ignore_warnings_on_exit'); - $ignoreErrors = Config::getConfigData('ignore_errors_on_exit'); - - $return = ($this->reporter->totalErrors + $this->reporter->totalWarnings); - if ($ignoreErrors !== null) { - $ignoreErrors = (bool) $ignoreErrors; - if ($ignoreErrors === true) { - $return -= $this->reporter->totalErrors; - } - } - - if ($ignoreWarnings !== null) { - $ignoreWarnings = (bool) $ignoreWarnings; - if ($ignoreWarnings === true) { - $return -= $this->reporter->totalWarnings; - } - } - - return $return; - - }//end run() - - - /** - * Converts all PHP errors into exceptions. - * - * This method forces a sniff to stop processing if it is not - * able to handle a specific piece of code, instead of continuing - * and potentially getting into a loop. - * - * @param int $code The level of error raised. - * @param string $message The error message. - * @param string $file The path of the file that raised the error. - * @param int $line The line number the error was raised at. - * - * @return bool - * @throws \PHP_CodeSniffer\Exceptions\RuntimeException - */ - public function handleErrors($code, $message, $file, $line) - { - if ((error_reporting() & $code) === 0) { - // This type of error is being muted. - return true; - } - - throw new RuntimeException("$message in $file on line $line"); - - }//end handleErrors() - - - /** - * Processes a single file, including checking and fixing. - * - * @param \PHP_CodeSniffer\Files\File $file The file to be processed. - * - * @return void - * @throws \PHP_CodeSniffer\Exceptions\DeepExitException - */ - public function processFile($file) - { - if (PHP_CODESNIFFER_VERBOSITY > 0) { - $startTime = microtime(true); - echo 'Processing '.basename($file->path).' '; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo PHP_EOL; - } - } - - try { - $file->process(); - - if (PHP_CODESNIFFER_VERBOSITY > 0) { - $timeTaken = ((microtime(true) - $startTime) * 1000); - if ($timeTaken < 1000) { - $timeTaken = round($timeTaken); - echo "DONE in {$timeTaken}ms"; - } else { - $timeTaken = round(($timeTaken / 1000), 2); - echo "DONE in $timeTaken secs"; - } - - if (PHP_CODESNIFFER_CBF === true) { - $errors = $file->getFixableCount(); - echo " ($errors fixable violations)".PHP_EOL; - } else { - $errors = $file->getErrorCount(); - $warnings = $file->getWarningCount(); - echo " ($errors errors, $warnings warnings)".PHP_EOL; - } - } - } catch (Exception $e) { - $error = 'An error occurred during processing; checking has been aborted. The error message was: '.$e->getMessage(); - - // Determine which sniff caused the error. - $sniffStack = null; - $nextStack = null; - foreach ($e->getTrace() as $step) { - if (isset($step['file']) === false) { - continue; - } - - if (empty($sniffStack) === false) { - $nextStack = $step; - break; - } - - if (substr($step['file'], -9) === 'Sniff.php') { - $sniffStack = $step; - continue; - } - } - - if (empty($sniffStack) === false) { - $sniffCode = ''; - try { - if (empty($nextStack) === false - && isset($nextStack['class']) === true - && substr($nextStack['class'], -5) === 'Sniff' - ) { - $sniffCode = 'the '.Common::getSniffCode($nextStack['class']).' sniff'; - } - } catch (InvalidArgumentException $e) { - // Sniff code could not be determined. This may be an abstract sniff class. - } - - if ($sniffCode === '') { - $sniffCode = substr(strrchr(str_replace('\\', '/', $sniffStack['file']), '/'), 1); - } - - $error .= sprintf(PHP_EOL.'The error originated in %s on line %s.', $sniffCode, $sniffStack['line']); - } - - $file->addErrorOnLine($error, 1, 'Internal.Exception'); - }//end try - - $this->reporter->cacheFileReport($file); - - if ($this->config->interactive === true) { - /* - Running interactively. - Print the error report for the current file and then wait for user input. - */ - - // Get current violations and then clear the list to make sure - // we only print violations for a single file each time. - $numErrors = null; - while ($numErrors !== 0) { - $numErrors = ($file->getErrorCount() + $file->getWarningCount()); - if ($numErrors === 0) { - continue; - } - - $this->reporter->printReport('full'); - - echo ' to recheck, [s] to skip or [q] to quit : '; - $input = fgets(STDIN); - $input = trim($input); - - switch ($input) { - case 's': - break(2); - case 'q': - throw new DeepExitException('', 0); - default: - // Repopulate the sniffs because some of them save their state - // and only clear it when the file changes, but we are rechecking - // the same file. - $file->ruleset->populateTokenListeners(); - $file->reloadContent(); - $file->process(); - $this->reporter->cacheFileReport($file); - break; - } - }//end while - }//end if - - // Clean up the file to save (a lot of) memory. - $file->cleanUp(); - - }//end processFile() - - - /** - * Waits for child processes to complete and cleans up after them. - * - * The reporting information returned by each child process is merged - * into the main reporter class. - * - * @param array $childProcs An array of child processes to wait for. - * - * @return bool - */ - private function processChildProcs($childProcs) - { - $numProcessed = 0; - $totalBatches = count($childProcs); - - $success = true; - - while (count($childProcs) > 0) { - $pid = pcntl_waitpid(0, $status); - if ($pid <= 0) { - continue; - } - - $childProcessStatus = pcntl_wexitstatus($status); - if ($childProcessStatus !== 0) { - $success = false; - } - - $out = $childProcs[$pid]; - unset($childProcs[$pid]); - if (file_exists($out) === false) { - continue; - } - - include $out; - unlink($out); - - $numProcessed++; - - if (isset($childOutput) === false) { - // The child process died, so the run has failed. - $file = new DummyFile('', $this->ruleset, $this->config); - $file->setErrorCounts(1, 0, 0, 0); - $this->printProgress($file, $totalBatches, $numProcessed); - $success = false; - continue; - } - - $this->reporter->totalFiles += $childOutput['totalFiles']; - $this->reporter->totalErrors += $childOutput['totalErrors']; - $this->reporter->totalWarnings += $childOutput['totalWarnings']; - $this->reporter->totalFixable += $childOutput['totalFixable']; - $this->reporter->totalFixed += $childOutput['totalFixed']; - - if (isset($debugOutput) === true) { - echo $debugOutput; - } - - if (isset($childCache) === true) { - foreach ($childCache as $path => $cache) { - Cache::set($path, $cache); - } - } - - // Fake a processed file so we can print progress output for the batch. - $file = new DummyFile('', $this->ruleset, $this->config); - $file->setErrorCounts( - $childOutput['totalErrors'], - $childOutput['totalWarnings'], - $childOutput['totalFixable'], - $childOutput['totalFixed'] - ); - $this->printProgress($file, $totalBatches, $numProcessed); - }//end while - - return $success; - - }//end processChildProcs() - - - /** - * Print progress information for a single processed file. - * - * @param \PHP_CodeSniffer\Files\File $file The file that was processed. - * @param int $numFiles The total number of files to process. - * @param int $numProcessed The number of files that have been processed, - * including this one. - * - * @return void - */ - public function printProgress(File $file, $numFiles, $numProcessed) - { - if (PHP_CODESNIFFER_VERBOSITY > 0 - || $this->config->showProgress === false - ) { - return; - } - - // Show progress information. - if ($file->ignored === true) { - echo 'S'; - } else { - $errors = $file->getErrorCount(); - $warnings = $file->getWarningCount(); - $fixable = $file->getFixableCount(); - $fixed = $file->getFixedCount(); - - if (PHP_CODESNIFFER_CBF === true) { - // Files with fixed errors or warnings are F (green). - // Files with unfixable errors or warnings are E (red). - // Files with no errors or warnings are . (black). - if ($fixable > 0) { - if ($this->config->colors === true) { - echo "\033[31m"; - } - - echo 'E'; - - if ($this->config->colors === true) { - echo "\033[0m"; - } - } else if ($fixed > 0) { - if ($this->config->colors === true) { - echo "\033[32m"; - } - - echo 'F'; - - if ($this->config->colors === true) { - echo "\033[0m"; - } - } else { - echo '.'; - }//end if - } else { - // Files with errors are E (red). - // Files with fixable errors are E (green). - // Files with warnings are W (yellow). - // Files with fixable warnings are W (green). - // Files with no errors or warnings are . (black). - if ($errors > 0) { - if ($this->config->colors === true) { - if ($fixable > 0) { - echo "\033[32m"; - } else { - echo "\033[31m"; - } - } - - echo 'E'; - - if ($this->config->colors === true) { - echo "\033[0m"; - } - } else if ($warnings > 0) { - if ($this->config->colors === true) { - if ($fixable > 0) { - echo "\033[32m"; - } else { - echo "\033[33m"; - } - } - - echo 'W'; - - if ($this->config->colors === true) { - echo "\033[0m"; - } - } else { - echo '.'; - }//end if - }//end if - }//end if - - $numPerLine = 60; - if ($numProcessed !== $numFiles && ($numProcessed % $numPerLine) !== 0) { - return; - } - - $percent = round(($numProcessed / $numFiles) * 100); - $padding = (strlen($numFiles) - strlen($numProcessed)); - if ($numProcessed === $numFiles - && $numFiles > $numPerLine - && ($numProcessed % $numPerLine) !== 0 - ) { - $padding += ($numPerLine - ($numFiles - (floor($numFiles / $numPerLine) * $numPerLine))); - } - - echo str_repeat(' ', $padding)." $numProcessed / $numFiles ($percent%)".PHP_EOL; - - }//end printProgress() - - - /** - * Registers a PHP shutdown function to provide a more informative out of memory error. - * - * @param string $command The command which was used to initiate the PHPCS run. - * - * @return void - */ - private function registerOutOfMemoryShutdownMessage($command) - { - // Allocate all needed memory beforehand as much as possible. - $errorMsg = PHP_EOL.'The PHP_CodeSniffer "%1$s" command ran out of memory.'.PHP_EOL; - $errorMsg .= 'Either raise the "memory_limit" of PHP in the php.ini file or raise the memory limit at runtime'.PHP_EOL; - $errorMsg .= 'using `%1$s -d memory_limit=512M` (replace 512M with the desired memory limit).'.PHP_EOL; - $errorMsg = sprintf($errorMsg, $command); - $memoryError = 'Allowed memory size of'; - $errorArray = [ - 'type' => 42, - 'message' => 'Some random dummy string to take up memory and take up some more memory and some more', - 'file' => 'Another random string, which would be a filename this time. Should be relatively long to allow for deeply nested files', - 'line' => 31427, - ]; - - register_shutdown_function( - static function () use ( - $errorMsg, - $memoryError, - $errorArray - ) { - $errorArray = error_get_last(); - if (is_array($errorArray) === true && strpos($errorArray['message'], $memoryError) !== false) { - echo $errorMsg; - } - } - ); - - }//end registerOutOfMemoryShutdownMessage() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Sniffs/AbstractPatternSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Sniffs/AbstractPatternSniff.php deleted file mode 100644 index d9528dcc..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Sniffs/AbstractPatternSniff.php +++ /dev/null @@ -1,941 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Sniffs; - -use PHP_CodeSniffer\Exceptions\RuntimeException; -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Tokenizers\PHP; -use PHP_CodeSniffer\Util\Tokens; - -abstract class AbstractPatternSniff implements Sniff -{ - - /** - * If true, comments will be ignored if they are found in the code. - * - * @var boolean - */ - public $ignoreComments = false; - - /** - * The current file being checked. - * - * @var string - */ - protected $currFile = ''; - - /** - * The parsed patterns array. - * - * @var array - */ - private $parsedPatterns = []; - - /** - * Tokens that this sniff wishes to process outside of the patterns. - * - * @var int[] - * @see registerSupplementary() - * @see processSupplementary() - */ - private $supplementaryTokens = []; - - /** - * Positions in the stack where errors have occurred. - * - * @var array - */ - private $errorPos = []; - - - /** - * Constructs a AbstractPatternSniff. - * - * @param boolean $ignoreComments If true, comments will be ignored. - */ - public function __construct($ignoreComments=null) - { - // This is here for backwards compatibility. - if ($ignoreComments !== null) { - $this->ignoreComments = $ignoreComments; - } - - $this->supplementaryTokens = $this->registerSupplementary(); - - }//end __construct() - - - /** - * Registers the tokens to listen to. - * - * Classes extending AbstractPatternTest should implement the - * getPatterns() method to register the patterns they wish to test. - * - * @return array - * @see process() - */ - final public function register() - { - $listenTypes = []; - $patterns = $this->getPatterns(); - - foreach ($patterns as $pattern) { - $parsedPattern = $this->parse($pattern); - - // Find a token position in the pattern that we can use - // for a listener token. - $pos = $this->getListenerTokenPos($parsedPattern); - $tokenType = $parsedPattern[$pos]['token']; - $listenTypes[] = $tokenType; - - $patternArray = [ - 'listen_pos' => $pos, - 'pattern' => $parsedPattern, - 'pattern_code' => $pattern, - ]; - - if (isset($this->parsedPatterns[$tokenType]) === false) { - $this->parsedPatterns[$tokenType] = []; - } - - $this->parsedPatterns[$tokenType][] = $patternArray; - }//end foreach - - return array_unique(array_merge($listenTypes, $this->supplementaryTokens)); - - }//end register() - - - /** - * Returns the token types that the specified pattern is checking for. - * - * Returned array is in the format: - * - * array( - * T_WHITESPACE => 0, // 0 is the position where the T_WHITESPACE token - * // should occur in the pattern. - * ); - * - * - * @param array $pattern The parsed pattern to find the acquire the token - * types from. - * - * @return array - */ - private function getPatternTokenTypes($pattern) - { - $tokenTypes = []; - foreach ($pattern as $pos => $patternInfo) { - if ($patternInfo['type'] === 'token') { - if (isset($tokenTypes[$patternInfo['token']]) === false) { - $tokenTypes[$patternInfo['token']] = $pos; - } - } - } - - return $tokenTypes; - - }//end getPatternTokenTypes() - - - /** - * Returns the position in the pattern that this test should register as - * a listener for the pattern. - * - * @param array $pattern The pattern to acquire the listener for. - * - * @return int The position in the pattern that this test should register - * as the listener. - * @throws \PHP_CodeSniffer\Exceptions\RuntimeException If we could not determine a token to listen for. - */ - private function getListenerTokenPos($pattern) - { - $tokenTypes = $this->getPatternTokenTypes($pattern); - $tokenCodes = array_keys($tokenTypes); - $token = Tokens::getHighestWeightedToken($tokenCodes); - - // If we could not get a token. - if ($token === false) { - $error = 'Could not determine a token to listen for'; - throw new RuntimeException($error); - } - - return $tokenTypes[$token]; - - }//end getListenerTokenPos() - - - /** - * Processes the test. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The PHP_CodeSniffer file where the - * token occurred. - * @param int $stackPtr The position in the tokens stack - * where the listening token type - * was found. - * - * @return void - * @see register() - */ - final public function process(File $phpcsFile, $stackPtr) - { - $file = $phpcsFile->getFilename(); - if ($this->currFile !== $file) { - // We have changed files, so clean up. - $this->errorPos = []; - $this->currFile = $file; - } - - $tokens = $phpcsFile->getTokens(); - - if (in_array($tokens[$stackPtr]['code'], $this->supplementaryTokens, true) === true) { - $this->processSupplementary($phpcsFile, $stackPtr); - } - - $type = $tokens[$stackPtr]['code']; - - // If the type is not set, then it must have been a token registered - // with registerSupplementary(). - if (isset($this->parsedPatterns[$type]) === false) { - return; - } - - $allErrors = []; - - // Loop over each pattern that is listening to the current token type - // that we are processing. - foreach ($this->parsedPatterns[$type] as $patternInfo) { - // If processPattern returns false, then the pattern that we are - // checking the code with must not be designed to check that code. - $errors = $this->processPattern($patternInfo, $phpcsFile, $stackPtr); - if ($errors === false) { - // The pattern didn't match. - continue; - } else if (empty($errors) === true) { - // The pattern matched, but there were no errors. - break; - } - - foreach ($errors as $stackPtr => $error) { - if (isset($this->errorPos[$stackPtr]) === false) { - $this->errorPos[$stackPtr] = true; - $allErrors[$stackPtr] = $error; - } - } - } - - foreach ($allErrors as $stackPtr => $error) { - $phpcsFile->addError($error, $stackPtr, 'Found'); - } - - }//end process() - - - /** - * Processes the pattern and verifies the code at $stackPtr. - * - * @param array $patternInfo Information about the pattern used - * for checking, which includes are - * parsed token representation of the - * pattern. - * @param \PHP_CodeSniffer\Files\File $phpcsFile The PHP_CodeSniffer file where the - * token occurred. - * @param int $stackPtr The position in the tokens stack where - * the listening token type was found. - * - * @return array|false - */ - protected function processPattern($patternInfo, File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - $pattern = $patternInfo['pattern']; - $patternCode = $patternInfo['pattern_code']; - $errors = []; - $found = ''; - - $ignoreTokens = [T_WHITESPACE => T_WHITESPACE]; - if ($this->ignoreComments === true) { - $ignoreTokens += Tokens::$commentTokens; - } - - $origStackPtr = $stackPtr; - $hasError = false; - - if ($patternInfo['listen_pos'] > 0) { - $stackPtr--; - - for ($i = ($patternInfo['listen_pos'] - 1); $i >= 0; $i--) { - if ($pattern[$i]['type'] === 'token') { - if ($pattern[$i]['token'] === T_WHITESPACE) { - if ($tokens[$stackPtr]['code'] === T_WHITESPACE) { - $found = $tokens[$stackPtr]['content'].$found; - } - - // Only check the size of the whitespace if this is not - // the first token. We don't care about the size of - // leading whitespace, just that there is some. - if ($i !== 0) { - if ($tokens[$stackPtr]['content'] !== $pattern[$i]['value']) { - $hasError = true; - } - } - } else { - // Check to see if this important token is the same as the - // previous important token in the pattern. If it is not, - // then the pattern cannot be for this piece of code. - $prev = $phpcsFile->findPrevious( - $ignoreTokens, - $stackPtr, - null, - true - ); - - if ($prev === false - || $tokens[$prev]['code'] !== $pattern[$i]['token'] - ) { - return false; - } - - // If we skipped past some whitespace tokens, then add them - // to the found string. - $tokenContent = $phpcsFile->getTokensAsString( - ($prev + 1), - ($stackPtr - $prev - 1) - ); - - $found = $tokens[$prev]['content'].$tokenContent.$found; - - if (isset($pattern[($i - 1)]) === true - && $pattern[($i - 1)]['type'] === 'skip' - ) { - $stackPtr = $prev; - } else { - $stackPtr = ($prev - 1); - } - }//end if - } else if ($pattern[$i]['type'] === 'skip') { - // Skip to next piece of relevant code. - if ($pattern[$i]['to'] === 'parenthesis_closer') { - $to = 'parenthesis_opener'; - } else { - $to = 'scope_opener'; - } - - // Find the previous opener. - $next = $phpcsFile->findPrevious( - $ignoreTokens, - $stackPtr, - null, - true - ); - - if ($next === false || isset($tokens[$next][$to]) === false) { - // If there was not opener, then we must be - // using the wrong pattern. - return false; - } - - if ($to === 'parenthesis_opener') { - $found = '{'.$found; - } else { - $found = '('.$found; - } - - $found = '...'.$found; - - // Skip to the opening token. - $stackPtr = ($tokens[$next][$to] - 1); - } else if ($pattern[$i]['type'] === 'string') { - $found = 'abc'; - } else if ($pattern[$i]['type'] === 'newline') { - if ($this->ignoreComments === true - && isset(Tokens::$commentTokens[$tokens[$stackPtr]['code']]) === true - ) { - $startComment = $phpcsFile->findPrevious( - Tokens::$commentTokens, - ($stackPtr - 1), - null, - true - ); - - if ($tokens[$startComment]['line'] !== $tokens[($startComment + 1)]['line']) { - $startComment++; - } - - $tokenContent = $phpcsFile->getTokensAsString( - $startComment, - ($stackPtr - $startComment + 1) - ); - - $found = $tokenContent.$found; - $stackPtr = ($startComment - 1); - } - - if ($tokens[$stackPtr]['code'] === T_WHITESPACE) { - if ($tokens[$stackPtr]['content'] !== $phpcsFile->eolChar) { - $found = $tokens[$stackPtr]['content'].$found; - - // This may just be an indent that comes after a newline - // so check the token before to make sure. If it is a newline, we - // can ignore the error here. - if (($tokens[($stackPtr - 1)]['content'] !== $phpcsFile->eolChar) - && ($this->ignoreComments === true - && isset(Tokens::$commentTokens[$tokens[($stackPtr - 1)]['code']]) === false) - ) { - $hasError = true; - } else { - $stackPtr--; - } - } else { - $found = 'EOL'.$found; - } - } else { - $found = $tokens[$stackPtr]['content'].$found; - $hasError = true; - }//end if - - if ($hasError === false && $pattern[($i - 1)]['type'] !== 'newline') { - // Make sure they only have 1 newline. - $prev = $phpcsFile->findPrevious($ignoreTokens, ($stackPtr - 1), null, true); - if ($prev !== false && $tokens[$prev]['line'] !== $tokens[$stackPtr]['line']) { - $hasError = true; - } - } - }//end if - }//end for - }//end if - - $stackPtr = $origStackPtr; - $lastAddedStackPtr = null; - $patternLen = count($pattern); - - if (($stackPtr + $patternLen - $patternInfo['listen_pos']) > $phpcsFile->numTokens) { - // Pattern can never match as there are not enough tokens left in the file. - return false; - } - - for ($i = $patternInfo['listen_pos']; $i < $patternLen; $i++) { - if (isset($tokens[$stackPtr]) === false) { - break; - } - - if ($pattern[$i]['type'] === 'token') { - if ($pattern[$i]['token'] === T_WHITESPACE) { - if ($this->ignoreComments === true) { - // If we are ignoring comments, check to see if this current - // token is a comment. If so skip it. - if (isset(Tokens::$commentTokens[$tokens[$stackPtr]['code']]) === true) { - continue; - } - - // If the next token is a comment, the we need to skip the - // current token as we should allow a space before a - // comment for readability. - if (isset($tokens[($stackPtr + 1)]) === true - && isset(Tokens::$commentTokens[$tokens[($stackPtr + 1)]['code']]) === true - ) { - continue; - } - } - - $tokenContent = ''; - if ($tokens[$stackPtr]['code'] === T_WHITESPACE) { - if (isset($pattern[($i + 1)]) === false) { - // This is the last token in the pattern, so just compare - // the next token of content. - $tokenContent = $tokens[$stackPtr]['content']; - } else { - // Get all the whitespace to the next token. - $next = $phpcsFile->findNext( - Tokens::$emptyTokens, - $stackPtr, - null, - true - ); - - $tokenContent = $phpcsFile->getTokensAsString( - $stackPtr, - ($next - $stackPtr) - ); - - $lastAddedStackPtr = $stackPtr; - $stackPtr = $next; - }//end if - - if ($stackPtr !== $lastAddedStackPtr) { - $found .= $tokenContent; - } - } else { - if ($stackPtr !== $lastAddedStackPtr) { - $found .= $tokens[$stackPtr]['content']; - $lastAddedStackPtr = $stackPtr; - } - }//end if - - if (isset($pattern[($i + 1)]) === true - && $pattern[($i + 1)]['type'] === 'skip' - ) { - // The next token is a skip token, so we just need to make - // sure the whitespace we found has *at least* the - // whitespace required. - if (strpos($tokenContent, $pattern[$i]['value']) !== 0) { - $hasError = true; - } - } else { - if ($tokenContent !== $pattern[$i]['value']) { - $hasError = true; - } - } - } else { - // Check to see if this important token is the same as the - // next important token in the pattern. If it is not, then - // the pattern cannot be for this piece of code. - $next = $phpcsFile->findNext( - $ignoreTokens, - $stackPtr, - null, - true - ); - - if ($next === false - || $tokens[$next]['code'] !== $pattern[$i]['token'] - ) { - // The next important token did not match the pattern. - return false; - } - - if ($lastAddedStackPtr !== null) { - if (($tokens[$next]['code'] === T_OPEN_CURLY_BRACKET - || $tokens[$next]['code'] === T_CLOSE_CURLY_BRACKET) - && isset($tokens[$next]['scope_condition']) === true - && $tokens[$next]['scope_condition'] > $lastAddedStackPtr - ) { - // This is a brace, but the owner of it is after the current - // token, which means it does not belong to any token in - // our pattern. This means the pattern is not for us. - return false; - } - - if (($tokens[$next]['code'] === T_OPEN_PARENTHESIS - || $tokens[$next]['code'] === T_CLOSE_PARENTHESIS) - && isset($tokens[$next]['parenthesis_owner']) === true - && $tokens[$next]['parenthesis_owner'] > $lastAddedStackPtr - ) { - // This is a bracket, but the owner of it is after the current - // token, which means it does not belong to any token in - // our pattern. This means the pattern is not for us. - return false; - } - }//end if - - // If we skipped past some whitespace tokens, then add them - // to the found string. - if (($next - $stackPtr) > 0) { - $hasComment = false; - for ($j = $stackPtr; $j < $next; $j++) { - $found .= $tokens[$j]['content']; - if (isset(Tokens::$commentTokens[$tokens[$j]['code']]) === true) { - $hasComment = true; - } - } - - // If we are not ignoring comments, this additional - // whitespace or comment is not allowed. If we are - // ignoring comments, there needs to be at least one - // comment for this to be allowed. - if ($this->ignoreComments === false - || ($this->ignoreComments === true - && $hasComment === false) - ) { - $hasError = true; - } - - // Even when ignoring comments, we are not allowed to include - // newlines without the pattern specifying them, so - // everything should be on the same line. - if ($tokens[$next]['line'] !== $tokens[$stackPtr]['line']) { - $hasError = true; - } - }//end if - - if ($next !== $lastAddedStackPtr) { - $found .= $tokens[$next]['content']; - $lastAddedStackPtr = $next; - } - - if (isset($pattern[($i + 1)]) === true - && $pattern[($i + 1)]['type'] === 'skip' - ) { - $stackPtr = $next; - } else { - $stackPtr = ($next + 1); - } - }//end if - } else if ($pattern[$i]['type'] === 'skip') { - if ($pattern[$i]['to'] === 'unknown') { - $next = $phpcsFile->findNext( - $pattern[($i + 1)]['token'], - $stackPtr - ); - - if ($next === false) { - // Couldn't find the next token, so we must - // be using the wrong pattern. - return false; - } - - $found .= '...'; - $stackPtr = $next; - } else { - // Find the previous opener. - $next = $phpcsFile->findPrevious( - Tokens::$blockOpeners, - $stackPtr - ); - - if ($next === false - || isset($tokens[$next][$pattern[$i]['to']]) === false - ) { - // If there was not opener, then we must - // be using the wrong pattern. - return false; - } - - $found .= '...'; - if ($pattern[$i]['to'] === 'parenthesis_closer') { - $found .= ')'; - } else { - $found .= '}'; - } - - // Skip to the closing token. - $stackPtr = ($tokens[$next][$pattern[$i]['to']] + 1); - }//end if - } else if ($pattern[$i]['type'] === 'string') { - if ($tokens[$stackPtr]['code'] !== T_STRING) { - $hasError = true; - } - - if ($stackPtr !== $lastAddedStackPtr) { - $found .= 'abc'; - $lastAddedStackPtr = $stackPtr; - } - - $stackPtr++; - } else if ($pattern[$i]['type'] === 'newline') { - // Find the next token that contains a newline character. - $newline = 0; - for ($j = $stackPtr; $j < $phpcsFile->numTokens; $j++) { - if (strpos($tokens[$j]['content'], $phpcsFile->eolChar) !== false) { - $newline = $j; - break; - } - } - - if ($newline === 0) { - // We didn't find a newline character in the rest of the file. - $next = ($phpcsFile->numTokens - 1); - $hasError = true; - } else { - if ($this->ignoreComments === false) { - // The newline character cannot be part of a comment. - if (isset(Tokens::$commentTokens[$tokens[$newline]['code']]) === true) { - $hasError = true; - } - } - - if ($newline === $stackPtr) { - $next = ($stackPtr + 1); - } else { - // Check that there were no significant tokens that we - // skipped over to find our newline character. - $next = $phpcsFile->findNext( - $ignoreTokens, - $stackPtr, - null, - true - ); - - if ($next < $newline) { - // We skipped a non-ignored token. - $hasError = true; - } else { - $next = ($newline + 1); - } - } - }//end if - - if ($stackPtr !== $lastAddedStackPtr) { - $found .= $phpcsFile->getTokensAsString( - $stackPtr, - ($next - $stackPtr) - ); - - $lastAddedStackPtr = ($next - 1); - } - - $stackPtr = $next; - }//end if - }//end for - - if ($hasError === true) { - $error = $this->prepareError($found, $patternCode); - $errors[$origStackPtr] = $error; - } - - return $errors; - - }//end processPattern() - - - /** - * Prepares an error for the specified patternCode. - * - * @param string $found The actual found string in the code. - * @param string $patternCode The expected pattern code. - * - * @return string The error message. - */ - protected function prepareError($found, $patternCode) - { - $found = str_replace("\r\n", '\n', $found); - $found = str_replace("\n", '\n', $found); - $found = str_replace("\r", '\n', $found); - $found = str_replace("\t", '\t', $found); - $found = str_replace('EOL', '\n', $found); - $expected = str_replace('EOL', '\n', $patternCode); - - $error = "Expected \"$expected\"; found \"$found\""; - - return $error; - - }//end prepareError() - - - /** - * Returns the patterns that should be checked. - * - * @return string[] - */ - abstract protected function getPatterns(); - - - /** - * Registers any supplementary tokens that this test might wish to process. - * - * A sniff may wish to register supplementary tests when it wishes to group - * an arbitrary validation that cannot be performed using a pattern, with - * other pattern tests. - * - * @return int[] - * @see processSupplementary() - */ - protected function registerSupplementary() - { - return []; - - }//end registerSupplementary() - - - /** - * Processes any tokens registered with registerSupplementary(). - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The PHP_CodeSniffer file where to - * process the skip. - * @param int $stackPtr The position in the tokens stack to - * process. - * - * @return void - * @see registerSupplementary() - */ - protected function processSupplementary(File $phpcsFile, $stackPtr) - { - - }//end processSupplementary() - - - /** - * Parses a pattern string into an array of pattern steps. - * - * @param string $pattern The pattern to parse. - * - * @return array The parsed pattern array. - * @see createSkipPattern() - * @see createTokenPattern() - */ - private function parse($pattern) - { - $patterns = []; - $length = strlen($pattern); - $lastToken = 0; - $firstToken = 0; - - for ($i = 0; $i < $length; $i++) { - $specialPattern = false; - $isLastChar = ($i === ($length - 1)); - $oldFirstToken = $firstToken; - - if (substr($pattern, $i, 3) === '...') { - // It's a skip pattern. The skip pattern requires the - // content of the token in the "from" position and the token - // to skip to. - $specialPattern = $this->createSkipPattern($pattern, ($i - 1)); - $lastToken = ($i - $firstToken); - $firstToken = ($i + 3); - $i += 2; - - if ($specialPattern['to'] !== 'unknown') { - $firstToken++; - } - } else if (substr($pattern, $i, 3) === 'abc') { - $specialPattern = ['type' => 'string']; - $lastToken = ($i - $firstToken); - $firstToken = ($i + 3); - $i += 2; - } else if (substr($pattern, $i, 3) === 'EOL') { - $specialPattern = ['type' => 'newline']; - $lastToken = ($i - $firstToken); - $firstToken = ($i + 3); - $i += 2; - }//end if - - if ($specialPattern !== false || $isLastChar === true) { - // If we are at the end of the string, don't worry about a limit. - if ($isLastChar === true) { - // Get the string from the end of the last skip pattern, if any, - // to the end of the pattern string. - $str = substr($pattern, $oldFirstToken); - } else { - // Get the string from the end of the last special pattern, - // if any, to the start of this special pattern. - if ($lastToken === 0) { - // Note that if the last special token was zero characters ago, - // there will be nothing to process so we can skip this bit. - // This happens if you have something like: EOL... in your pattern. - $str = ''; - } else { - $str = substr($pattern, $oldFirstToken, $lastToken); - } - } - - if ($str !== '') { - $tokenPatterns = $this->createTokenPattern($str); - foreach ($tokenPatterns as $tokenPattern) { - $patterns[] = $tokenPattern; - } - } - - // Make sure we don't skip the last token. - if ($isLastChar === false && $i === ($length - 1)) { - $i--; - } - }//end if - - // Add the skip pattern *after* we have processed - // all the tokens from the end of the last skip pattern - // to the start of this skip pattern. - if ($specialPattern !== false) { - $patterns[] = $specialPattern; - } - }//end for - - return $patterns; - - }//end parse() - - - /** - * Creates a skip pattern. - * - * @param string $pattern The pattern being parsed. - * @param int $from The token position that the skip pattern starts from. - * - * @return array The pattern step. - * @see createTokenPattern() - * @see parse() - */ - private function createSkipPattern($pattern, $from) - { - $skip = ['type' => 'skip']; - - $nestedParenthesis = 0; - $nestedBraces = 0; - for ($start = $from; $start >= 0; $start--) { - switch ($pattern[$start]) { - case '(': - if ($nestedParenthesis === 0) { - $skip['to'] = 'parenthesis_closer'; - } - - $nestedParenthesis--; - break; - case '{': - if ($nestedBraces === 0) { - $skip['to'] = 'scope_closer'; - } - - $nestedBraces--; - break; - case '}': - $nestedBraces++; - break; - case ')': - $nestedParenthesis++; - break; - }//end switch - - if (isset($skip['to']) === true) { - break; - } - }//end for - - if (isset($skip['to']) === false) { - $skip['to'] = 'unknown'; - } - - return $skip; - - }//end createSkipPattern() - - - /** - * Creates a token pattern. - * - * @param string $str The tokens string that the pattern should match. - * - * @return array The pattern step. - * @see createSkipPattern() - * @see parse() - */ - private function createTokenPattern($str) - { - // Don't add a space after the closing php tag as it will add a new - // whitespace token. - $tokenizer = new PHP('', null); - - // Remove the getTokens(); - $tokens = array_slice($tokens, 1, (count($tokens) - 2)); - - $patterns = []; - foreach ($tokens as $patternInfo) { - $patterns[] = [ - 'type' => 'token', - 'token' => $patternInfo['code'], - 'value' => $patternInfo['content'], - ]; - } - - return $patterns; - - }//end createTokenPattern() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Sniffs/AbstractScopeSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Sniffs/AbstractScopeSniff.php deleted file mode 100644 index d2b6979d..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Sniffs/AbstractScopeSniff.php +++ /dev/null @@ -1,189 +0,0 @@ - - * class ClassScopeTest extends PHP_CodeSniffer_Standards_AbstractScopeSniff - * { - * public function __construct() - * { - * parent::__construct(array(T_CLASS), array(T_FUNCTION)); - * } - * - * protected function processTokenWithinScope(\PHP_CodeSniffer\Files\File $phpcsFile, $stackPtr, $currScope) - * { - * $className = $phpcsFile->getDeclarationName($currScope); - * echo 'encountered a method within class '.$className; - * } - * } - * - * - * @author Greg Sherwood - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Sniffs; - -use PHP_CodeSniffer\Exceptions\RuntimeException; -use PHP_CodeSniffer\Files\File; - -abstract class AbstractScopeSniff implements Sniff -{ - - /** - * The token types that this test wishes to listen to within the scope. - * - * @var array - */ - private $tokens = []; - - /** - * The type of scope opener tokens that this test wishes to listen to. - * - * @var array - */ - private $scopeTokens = []; - - /** - * True if this test should fire on tokens outside of the scope. - * - * @var boolean - */ - private $listenOutside = false; - - - /** - * Constructs a new AbstractScopeTest. - * - * @param array $scopeTokens The type of scope the test wishes to listen to. - * @param array $tokens The tokens that the test wishes to listen to - * within the scope. - * @param boolean $listenOutside If true this test will also alert the - * extending class when a token is found outside - * the scope, by calling the - * processTokenOutsideScope method. - * - * @throws \PHP_CodeSniffer\Exceptions\RuntimeException If the specified tokens arrays are empty - * or invalid. - */ - public function __construct( - array $scopeTokens, - array $tokens, - $listenOutside=false - ) { - if (empty($scopeTokens) === true) { - $error = 'The scope tokens list cannot be empty'; - throw new RuntimeException($error); - } - - if (empty($tokens) === true) { - $error = 'The tokens list cannot be empty'; - throw new RuntimeException($error); - } - - $invalidScopeTokens = array_intersect($scopeTokens, $tokens); - if (empty($invalidScopeTokens) === false) { - $invalid = implode(', ', $invalidScopeTokens); - $error = "Scope tokens [$invalid] can't be in the tokens array"; - throw new RuntimeException($error); - } - - $this->listenOutside = $listenOutside; - $this->scopeTokens = array_flip($scopeTokens); - $this->tokens = $tokens; - - }//end __construct() - - - /** - * The method that is called to register the tokens this test wishes to - * listen to. - * - * DO NOT OVERRIDE THIS METHOD. Use the constructor of this class to register - * for the desired tokens and scope. - * - * @return array - * @see __constructor() - */ - final public function register() - { - return $this->tokens; - - }//end register() - - - /** - * Processes the tokens that this test is listening for. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file where this token was found. - * @param int $stackPtr The position in the stack where this - * token was found. - * - * @return void|int Optionally returns a stack pointer. The sniff will not be - * called again on the current file until the returned stack - * pointer is reached. Return `$phpcsFile->numTokens` to skip - * the rest of the file. - * @see processTokenWithinScope() - */ - final public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - $foundScope = false; - $skipTokens = []; - foreach ($tokens[$stackPtr]['conditions'] as $scope => $code) { - if (isset($this->scopeTokens[$code]) === true) { - $skipTokens[] = $this->processTokenWithinScope($phpcsFile, $stackPtr, $scope); - $foundScope = true; - } - } - - if ($this->listenOutside === true && $foundScope === false) { - $skipTokens[] = $this->processTokenOutsideScope($phpcsFile, $stackPtr); - } - - if (empty($skipTokens) === false) { - return min($skipTokens); - } - - }//end process() - - - /** - * Processes a token that is found within the scope that this test is - * listening to. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file where this token was found. - * @param int $stackPtr The position in the stack where this - * token was found. - * @param int $currScope The position in the tokens array that - * opened the scope that this test is - * listening for. - * - * @return void|int Optionally returns a stack pointer. The sniff will not be - * called again on the current file until the returned stack - * pointer is reached. Return `$phpcsFile->numTokens` to skip - * the rest of the file. - */ - abstract protected function processTokenWithinScope(File $phpcsFile, $stackPtr, $currScope); - - - /** - * Processes a token that is found outside the scope that this test is - * listening to. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file where this token was found. - * @param int $stackPtr The position in the stack where this - * token was found. - * - * @return void|int Optionally returns a stack pointer. The sniff will not be - * called again on the current file until the returned stack - * pointer is reached. Return `$phpcsFile->numTokens` to skip - * the rest of the file. - */ - abstract protected function processTokenOutsideScope(File $phpcsFile, $stackPtr); - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Sniffs/AbstractVariableSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Sniffs/AbstractVariableSniff.php deleted file mode 100644 index 34a3b43a..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Sniffs/AbstractVariableSniff.php +++ /dev/null @@ -1,230 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Sniffs; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Util\Tokens; - -abstract class AbstractVariableSniff extends AbstractScopeSniff -{ - - /** - * List of PHP Reserved variables. - * - * Used by various naming convention sniffs. - * - * @var array - */ - protected $phpReservedVars = [ - '_SERVER' => true, - '_GET' => true, - '_POST' => true, - '_REQUEST' => true, - '_SESSION' => true, - '_ENV' => true, - '_COOKIE' => true, - '_FILES' => true, - 'GLOBALS' => true, - 'http_response_header' => true, - 'HTTP_RAW_POST_DATA' => true, - 'php_errormsg' => true, - ]; - - - /** - * Constructs an AbstractVariableTest. - */ - public function __construct() - { - $scopes = Tokens::$ooScopeTokens; - - $listen = [ - T_VARIABLE, - T_DOUBLE_QUOTED_STRING, - T_HEREDOC, - ]; - - parent::__construct($scopes, $listen, true); - - }//end __construct() - - - /** - * Processes the token in the specified PHP_CodeSniffer\Files\File. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The PHP_CodeSniffer file where this - * token was found. - * @param int $stackPtr The position where the token was found. - * @param int $currScope The current scope opener token. - * - * @return void|int Optionally returns a stack pointer. The sniff will not be - * called again on the current file until the returned stack - * pointer is reached. Return `$phpcsFile->numTokens` to skip - * the rest of the file. - */ - final protected function processTokenWithinScope(File $phpcsFile, $stackPtr, $currScope) - { - $tokens = $phpcsFile->getTokens(); - - if ($tokens[$stackPtr]['code'] === T_DOUBLE_QUOTED_STRING - || $tokens[$stackPtr]['code'] === T_HEREDOC - ) { - // Check to see if this string has a variable in it. - $pattern = '|(?processVariableInString($phpcsFile, $stackPtr); - } - - return; - } - - // If this token is nested inside a function at a deeper - // level than the current OO scope that was found, it's a normal - // variable and not a member var. - $conditions = array_reverse($tokens[$stackPtr]['conditions'], true); - $inFunction = false; - foreach ($conditions as $scope => $code) { - if (isset(Tokens::$ooScopeTokens[$code]) === true) { - break; - } - - if ($code === T_FUNCTION || $code === T_CLOSURE) { - $inFunction = true; - } - } - - if ($scope !== $currScope) { - // We found a closer scope to this token, so ignore - // this particular time through the sniff. We will process - // this token when this closer scope is found to avoid - // duplicate checks. - return; - } - - // Just make sure this isn't a variable in a function declaration. - if ($inFunction === false && isset($tokens[$stackPtr]['nested_parenthesis']) === true) { - foreach ($tokens[$stackPtr]['nested_parenthesis'] as $opener => $closer) { - if (isset($tokens[$opener]['parenthesis_owner']) === false) { - // Check if this is a USE statement for a closure. - $prev = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($opener - 1), null, true); - if ($tokens[$prev]['code'] === T_USE) { - $inFunction = true; - break; - } - - continue; - } - - $owner = $tokens[$opener]['parenthesis_owner']; - if ($tokens[$owner]['code'] === T_FUNCTION - || $tokens[$owner]['code'] === T_CLOSURE - ) { - $inFunction = true; - break; - } - } - }//end if - - if ($inFunction === true) { - return $this->processVariable($phpcsFile, $stackPtr); - } else { - return $this->processMemberVar($phpcsFile, $stackPtr); - } - - }//end processTokenWithinScope() - - - /** - * Processes the token outside the scope in the file. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The PHP_CodeSniffer file where this - * token was found. - * @param int $stackPtr The position where the token was found. - * - * @return void|int Optionally returns a stack pointer. The sniff will not be - * called again on the current file until the returned stack - * pointer is reached. Return `$phpcsFile->numTokens` to skip - * the rest of the file. - */ - final protected function processTokenOutsideScope(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - // These variables are not member vars. - if ($tokens[$stackPtr]['code'] === T_VARIABLE) { - return $this->processVariable($phpcsFile, $stackPtr); - } else if ($tokens[$stackPtr]['code'] === T_DOUBLE_QUOTED_STRING - || $tokens[$stackPtr]['code'] === T_HEREDOC - ) { - // Check to see if this string has a variable in it. - $pattern = '|(?processVariableInString($phpcsFile, $stackPtr); - } - } - - }//end processTokenOutsideScope() - - - /** - * Called to process class member vars. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The PHP_CodeSniffer file where this - * token was found. - * @param int $stackPtr The position where the token was found. - * - * @return void|int Optionally returns a stack pointer. The sniff will not be - * called again on the current file until the returned stack - * pointer is reached. Return `$phpcsFile->numTokens` to skip - * the rest of the file. - */ - abstract protected function processMemberVar(File $phpcsFile, $stackPtr); - - - /** - * Called to process normal member vars. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The PHP_CodeSniffer file where this - * token was found. - * @param int $stackPtr The position where the token was found. - * - * @return void|int Optionally returns a stack pointer. The sniff will not be - * called again on the current file until the returned stack - * pointer is reached. Return `$phpcsFile->numTokens` to skip - * the rest of the file. - */ - abstract protected function processVariable(File $phpcsFile, $stackPtr); - - - /** - * Called to process variables found in double quoted strings or heredocs. - * - * Note that there may be more than one variable in the string, which will - * result only in one call for the string or one call per line for heredocs. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The PHP_CodeSniffer file where this - * token was found. - * @param int $stackPtr The position where the double quoted - * string was found. - * - * @return void|int Optionally returns a stack pointer. The sniff will not be - * called again on the current file until the returned stack - * pointer is reached. Return `$phpcsFile->numTokens` to skip - * the rest of the file. - */ - abstract protected function processVariableInString(File $phpcsFile, $stackPtr); - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Sniffs/Sniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Sniffs/Sniff.php deleted file mode 100644 index e0f7cfe9..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Sniffs/Sniff.php +++ /dev/null @@ -1,80 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Sniffs; - -use PHP_CodeSniffer\Files\File; - -interface Sniff -{ - - - /** - * Registers the tokens that this sniff wants to listen for. - * - * An example return value for a sniff that wants to listen for whitespace - * and any comments would be: - * - * - * return array( - * T_WHITESPACE, - * T_DOC_COMMENT, - * T_COMMENT, - * ); - * - * - * @return array - * @see Tokens.php - */ - public function register(); - - - /** - * Called when one of the token types that this sniff is listening for - * is found. - * - * The stackPtr variable indicates where in the stack the token was found. - * A sniff can acquire information about this token, along with all the other - * tokens within the stack by first acquiring the token stack: - * - * - * $tokens = $phpcsFile->getTokens(); - * echo 'Encountered a '.$tokens[$stackPtr]['type'].' token'; - * echo 'token information: '; - * print_r($tokens[$stackPtr]); - * - * - * If the sniff discovers an anomaly in the code, they can raise an error - * by calling addError() on the \PHP_CodeSniffer\Files\File object, specifying an error - * message and the position of the offending token: - * - * - * $phpcsFile->addError('Encountered an error', $stackPtr); - * - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The PHP_CodeSniffer file where the - * token was found. - * @param int $stackPtr The position in the PHP_CodeSniffer - * file's token stack where the token - * was found. - * - * @return void|int Optionally returns a stack pointer. The sniff will not be - * called again on the current file until the returned stack - * pointer is reached. Return `$phpcsFile->numTokens` to skip - * the rest of the file. - */ - public function process(File $phpcsFile, $stackPtr); - - -}//end interface diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/CodeAnalysis/EmptyPHPStatementStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/CodeAnalysis/EmptyPHPStatementStandard.xml deleted file mode 100644 index 6b96c825..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/CodeAnalysis/EmptyPHPStatementStandard.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - echo 'Hello World'; ?> -'Hello World'; ?> - ]]> - - - ; ?> - ?> - ]]> - - - - - - - - ; -if (true) { - echo 'Hello World'; -} - ]]> - - - ;;; -if (true) { - echo 'Hello World'; -}; - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/ControlStructures/DisallowYodaConditionsStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/ControlStructures/DisallowYodaConditionsStandard.xml deleted file mode 100644 index 651cc70d..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/ControlStructures/DisallowYodaConditionsStandard.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - { - $var = 1; -} - ]]> - - - { - $var = 1; -} - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/Files/InlineHTMLStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/Files/InlineHTMLStandard.xml deleted file mode 100644 index 3c137a9a..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/Files/InlineHTMLStandard.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - some string here - - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/Formatting/MultipleStatementAlignmentStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/Formatting/MultipleStatementAlignmentStandard.xml deleted file mode 100644 index 09df3b7c..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/Formatting/MultipleStatementAlignmentStandard.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - = (1 + 2); -$veryLongVarName = 'string'; -$var = foo($bar, $baz); - ]]> - - - = (1 + 2); -$veryLongVarName = 'string'; -$var = foo($bar, $baz); - ]]> - - - - - - - - += 1; -$veryLongVarName = 1; - ]]> - - - += 1; -$veryLongVarName = 1; - ]]> - - - - - = 1; -$veryLongVarName -= 1; - ]]> - - - = 1; -$veryLongVarName -= 1; - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/Formatting/NoSpaceAfterCastStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/Formatting/NoSpaceAfterCastStandard.xml deleted file mode 100644 index 80b932d2..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/Formatting/NoSpaceAfterCastStandard.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - 1; - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/Formatting/SpaceAfterCastStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/Formatting/SpaceAfterCastStandard.xml deleted file mode 100644 index 0563bb26..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/Formatting/SpaceAfterCastStandard.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - 1; - ]]> - - - 1; - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/Functions/OpeningFunctionBraceBsdAllmanStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/Functions/OpeningFunctionBraceBsdAllmanStandard.xml deleted file mode 100644 index 76314c50..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/Functions/OpeningFunctionBraceBsdAllmanStandard.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - { - ... -} - ]]> - - - { - ... -} - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/Functions/OpeningFunctionBraceKernighanRitchieStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/Functions/OpeningFunctionBraceKernighanRitchieStandard.xml deleted file mode 100644 index acd65e08..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/Functions/OpeningFunctionBraceKernighanRitchieStandard.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - { - ... -} - ]]> - - - { - ... -} - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/NamingConventions/AbstractClassNamePrefixStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/NamingConventions/AbstractClassNamePrefixStandard.xml deleted file mode 100644 index e9e61ddd..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/NamingConventions/AbstractClassNamePrefixStandard.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - AbstractBar -{ -} - ]]> - - - Bar -{ -} - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/NamingConventions/InterfaceNameSuffixStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/NamingConventions/InterfaceNameSuffixStandard.xml deleted file mode 100644 index bf1a7076..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/NamingConventions/InterfaceNameSuffixStandard.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - BarInterface -{ -} - ]]> - - - Bar -{ -} - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/NamingConventions/TraitNameSuffixStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/NamingConventions/TraitNameSuffixStandard.xml deleted file mode 100644 index fb5f2e67..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/NamingConventions/TraitNameSuffixStandard.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - BarTrait -{ -} - ]]> - - - Bar -{ -} - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/NamingConventions/UpperCaseConstantNameStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/NamingConventions/UpperCaseConstantNameStandard.xml deleted file mode 100644 index 22c2f6b1..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/NamingConventions/UpperCaseConstantNameStandard.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - FOO_CONSTANT', 'foo'); - -class FooClass -{ - const FOO_CONSTANT = 'foo'; -} - ]]> - - - Foo_Constant', 'foo'); - -class FooClass -{ - const foo_constant = 'foo'; -} - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/PHP/CharacterBeforePHPOpeningTagStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/PHP/CharacterBeforePHPOpeningTagStandard.xml deleted file mode 100644 index 494a5d73..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/PHP/CharacterBeforePHPOpeningTagStandard.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - Beginning content - - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/PHP/ClosingPHPTagStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/PHP/ClosingPHPTagStandard.xml deleted file mode 100644 index f0c8e529..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/PHP/ClosingPHPTagStandard.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - -echo 'Foo'; -?> - ]]> - - - -echo 'Foo'; - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/PHP/DisallowRequestSuperglobalStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/PHP/DisallowRequestSuperglobalStandard.xml deleted file mode 100644 index 519d7f5c..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/PHP/DisallowRequestSuperglobalStandard.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/PHP/LowerCaseConstantStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/PHP/LowerCaseConstantStandard.xml deleted file mode 100644 index d4aac809..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/PHP/LowerCaseConstantStandard.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - true, false and null constants must always be lowercase. - ]]> - - - - false || $var === null) { - $var = true; -} - ]]> - - - FALSE || $var === NULL) { - $var = TRUE; -} - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/PHP/SAPIUsageStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/PHP/SAPIUsageStandard.xml deleted file mode 100644 index 989827ed..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/PHP/SAPIUsageStandard.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - PHP_SAPI === 'cli') { - echo "Hello, CLI user."; -} - ]]> - - - php_sapi_name() === 'cli') { - echo "Hello, CLI user."; -} - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/PHP/UpperCaseConstantStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/PHP/UpperCaseConstantStandard.xml deleted file mode 100644 index 2cc1df2f..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/PHP/UpperCaseConstantStandard.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - true, false and null constants must always be uppercase. - ]]> - - - - FALSE || $var === NULL) { - $var = TRUE; -} - ]]> - - - false || $var === null) { - $var = true; -} - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/VersionControl/SubversionPropertiesStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/VersionControl/SubversionPropertiesStandard.xml deleted file mode 100644 index c38ae4c4..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/VersionControl/SubversionPropertiesStandard.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/WhiteSpace/ArbitraryParenthesesSpacingStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/WhiteSpace/ArbitraryParenthesesSpacingStandard.xml deleted file mode 100644 index d65c93a8..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/WhiteSpace/ArbitraryParenthesesSpacingStandard.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/WhiteSpace/SpreadOperatorSpacingAfterStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/WhiteSpace/SpreadOperatorSpacingAfterStandard.xml deleted file mode 100644 index 558bebfa..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Docs/WhiteSpace/SpreadOperatorSpacingAfterStandard.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - &...$spread) { - bar(...$spread); - - bar( - [...$foo], - ...array_values($keyedArray) - ); -} - ]]> - - - ... $spread) { - bar(... - $spread - ); - - bar( - [... $foo ],.../*@*/array_values($keyed) - ); -} - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Arrays/ArrayIndentSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Arrays/ArrayIndentSniff.php deleted file mode 100644 index b6e3d37d..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Arrays/ArrayIndentSniff.php +++ /dev/null @@ -1,193 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\Arrays; - -use PHP_CodeSniffer\Sniffs\AbstractArraySniff; -use PHP_CodeSniffer\Util\Tokens; - -class ArrayIndentSniff extends AbstractArraySniff -{ - - /** - * The number of spaces each array key should be indented. - * - * @var integer - */ - public $indent = 4; - - - /** - * Processes a single-line array definition. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The current file being checked. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * @param int $arrayStart The token that starts the array definition. - * @param int $arrayEnd The token that ends the array definition. - * @param array $indices An array of token positions for the array keys, - * double arrows, and values. - * - * @return void - */ - public function processSingleLineArray($phpcsFile, $stackPtr, $arrayStart, $arrayEnd, $indices) - { - - }//end processSingleLineArray() - - - /** - * Processes a multi-line array definition. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The current file being checked. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * @param int $arrayStart The token that starts the array definition. - * @param int $arrayEnd The token that ends the array definition. - * @param array $indices An array of token positions for the array keys, - * double arrows, and values. - * - * @return void - */ - public function processMultiLineArray($phpcsFile, $stackPtr, $arrayStart, $arrayEnd, $indices) - { - $tokens = $phpcsFile->getTokens(); - - // Determine how far indented the entire array declaration should be. - $ignore = Tokens::$emptyTokens; - $ignore[] = T_DOUBLE_ARROW; - $prev = $phpcsFile->findPrevious($ignore, ($stackPtr - 1), null, true); - $start = $phpcsFile->findStartOfStatement($prev); - $first = $phpcsFile->findFirstOnLine(T_WHITESPACE, $start, true); - $baseIndent = ($tokens[$first]['column'] - 1); - - $first = $phpcsFile->findFirstOnLine(T_WHITESPACE, $stackPtr, true); - $startIndent = ($tokens[$first]['column'] - 1); - - // If the open brace is not indented to at least to the level of the start - // of the statement, the sniff will conflict with other sniffs trying to - // check indent levels because it's not valid. But we don't enforce exactly - // how far indented it should be. - if ($startIndent < $baseIndent) { - $pluralizeSpace = 's'; - if ($baseIndent === 1) { - $pluralizeSpace = ''; - } - - $error = 'Array open brace not indented correctly; expected at least %s space%s but found %s'; - $data = [ - $baseIndent, - $pluralizeSpace, - $startIndent, - ]; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'OpenBraceIncorrect', $data); - if ($fix === true) { - $padding = str_repeat(' ', $baseIndent); - if ($startIndent === 0) { - $phpcsFile->fixer->addContentBefore($first, $padding); - } else { - $phpcsFile->fixer->replaceToken(($first - 1), $padding); - } - } - - return; - }//end if - - $expectedIndent = ($startIndent + $this->indent); - - foreach ($indices as $index) { - if (isset($index['index_start']) === true) { - $start = $index['index_start']; - } else { - $start = $index['value_start']; - } - - $prev = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($start - 1), null, true); - if ($tokens[$prev]['line'] === $tokens[$start]['line']) { - // This index isn't the only content on the line - // so we can't check indent rules. - continue; - } - - $first = $phpcsFile->findFirstOnLine(T_WHITESPACE, $start, true); - - $foundIndent = ($tokens[$first]['column'] - 1); - if ($foundIndent === $expectedIndent) { - continue; - } - - $pluralizeSpace = 's'; - if ($expectedIndent === 1) { - $pluralizeSpace = ''; - } - - $error = 'Array key not indented correctly; expected %s space%s but found %s'; - $data = [ - $expectedIndent, - $pluralizeSpace, - $foundIndent, - ]; - $fix = $phpcsFile->addFixableError($error, $first, 'KeyIncorrect', $data); - if ($fix === false) { - continue; - } - - $padding = str_repeat(' ', $expectedIndent); - if ($foundIndent === 0) { - $phpcsFile->fixer->addContentBefore($first, $padding); - } else { - $phpcsFile->fixer->replaceToken(($first - 1), $padding); - } - }//end foreach - - $prev = $phpcsFile->findPrevious(T_WHITESPACE, ($arrayEnd - 1), null, true); - if ($tokens[$prev]['line'] === $tokens[$arrayEnd]['line']) { - $error = 'Closing brace of array declaration must be on a new line'; - $fix = $phpcsFile->addFixableError($error, $arrayEnd, 'CloseBraceNotNewLine'); - if ($fix === true) { - $padding = $phpcsFile->eolChar.str_repeat(' ', $startIndent); - $phpcsFile->fixer->addContentBefore($arrayEnd, $padding); - } - - return; - } - - // The close brace must be indented one stop less. - $foundIndent = ($tokens[$arrayEnd]['column'] - 1); - if ($foundIndent === $startIndent) { - return; - } - - $pluralizeSpace = 's'; - if ($startIndent === 1) { - $pluralizeSpace = ''; - } - - $error = 'Array close brace not indented correctly; expected %s space%s but found %s'; - $data = [ - $startIndent, - $pluralizeSpace, - $foundIndent, - ]; - $fix = $phpcsFile->addFixableError($error, $arrayEnd, 'CloseBraceIncorrect', $data); - if ($fix === false) { - return; - } - - $padding = str_repeat(' ', $startIndent); - if ($foundIndent === 0) { - $phpcsFile->fixer->addContentBefore($arrayEnd, $padding); - } else { - $phpcsFile->fixer->replaceToken(($arrayEnd - 1), $padding); - } - - }//end processMultiLineArray() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Arrays/DisallowLongArraySyntaxSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Arrays/DisallowLongArraySyntaxSniff.php deleted file mode 100644 index 6854945a..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Arrays/DisallowLongArraySyntaxSniff.php +++ /dev/null @@ -1,72 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\Arrays; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; - -class DisallowLongArraySyntaxSniff implements Sniff -{ - - - /** - * Registers the tokens that this sniff wants to listen for. - * - * @return array - */ - public function register() - { - return [T_ARRAY]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - $phpcsFile->recordMetric($stackPtr, 'Short array syntax used', 'no'); - - $error = 'Short array syntax must be used to define arrays'; - - if (isset($tokens[$stackPtr]['parenthesis_opener'], $tokens[$stackPtr]['parenthesis_closer']) === false) { - // Live coding/parse error, just show the error, don't try and fix it. - $phpcsFile->addError($error, $stackPtr, 'Found'); - return; - } - - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'Found'); - - if ($fix === true) { - $opener = $tokens[$stackPtr]['parenthesis_opener']; - $closer = $tokens[$stackPtr]['parenthesis_closer']; - - $phpcsFile->fixer->beginChangeset(); - - $phpcsFile->fixer->replaceToken($stackPtr, ''); - $phpcsFile->fixer->replaceToken($opener, '['); - $phpcsFile->fixer->replaceToken($closer, ']'); - - $phpcsFile->fixer->endChangeset(); - } - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Classes/DuplicateClassNameSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Classes/DuplicateClassNameSniff.php deleted file mode 100644 index ca1ed099..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Classes/DuplicateClassNameSniff.php +++ /dev/null @@ -1,126 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\Classes; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Tokens; - -class DuplicateClassNameSniff implements Sniff -{ - - /** - * List of classes that have been found during checking. - * - * @var array - */ - protected $foundClasses = []; - - - /** - * Registers the tokens that this sniff wants to listen for. - * - * @return array - */ - public function register() - { - return [T_OPEN_TAG]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - $namespace = ''; - $findTokens = [ - T_CLASS, - T_INTERFACE, - T_TRAIT, - T_ENUM, - T_NAMESPACE, - ]; - - $stackPtr = $phpcsFile->findNext($findTokens, ($stackPtr + 1)); - while ($stackPtr !== false) { - // Keep track of what namespace we are in. - if ($tokens[$stackPtr]['code'] === T_NAMESPACE) { - $nextNonEmpty = $phpcsFile->findNext(Tokens::$emptyTokens, ($stackPtr + 1), null, true); - if ($nextNonEmpty !== false - // Ignore namespace keyword used as operator. - && $tokens[$nextNonEmpty]['code'] !== T_NS_SEPARATOR - ) { - $namespace = ''; - for ($i = $nextNonEmpty; $i < $phpcsFile->numTokens; $i++) { - if (isset(Tokens::$emptyTokens[$tokens[$i]['code']]) === true) { - continue; - } - - if ($tokens[$i]['code'] !== T_STRING && $tokens[$i]['code'] !== T_NS_SEPARATOR) { - break; - } - - $namespace .= $tokens[$i]['content']; - } - - $stackPtr = $i; - } - } else { - $name = $phpcsFile->getDeclarationName($stackPtr); - if (empty($name) === false) { - if ($namespace !== '') { - $name = $namespace.'\\'.$name; - } - - $compareName = strtolower($name); - if (isset($this->foundClasses[$compareName]) === true) { - $type = strtolower($tokens[$stackPtr]['content']); - $file = $this->foundClasses[$compareName]['file']; - $line = $this->foundClasses[$compareName]['line']; - $error = 'Duplicate %s name "%s" found; first defined in %s on line %s'; - $data = [ - $type, - $name, - $file, - $line, - ]; - $phpcsFile->addWarning($error, $stackPtr, 'Found', $data); - } else { - $this->foundClasses[$compareName] = [ - 'file' => $phpcsFile->getFilename(), - 'line' => $tokens[$stackPtr]['line'], - ]; - } - }//end if - - if (isset($tokens[$stackPtr]['scope_closer']) === true) { - $stackPtr = $tokens[$stackPtr]['scope_closer']; - } - }//end if - - $stackPtr = $phpcsFile->findNext($findTokens, ($stackPtr + 1)); - }//end while - - return $phpcsFile->numTokens; - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/CodeAnalysis/EmptyPHPStatementSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/CodeAnalysis/EmptyPHPStatementSniff.php deleted file mode 100644 index 6fbfdc0b..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/CodeAnalysis/EmptyPHPStatementSniff.php +++ /dev/null @@ -1,183 +0,0 @@ - - * @copyright 2017 Juliette Reinders Folmer. All rights reserved. - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\CodeAnalysis; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Tokens; - -class EmptyPHPStatementSniff implements Sniff -{ - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [ - T_SEMICOLON, - T_CLOSE_TAG, - ]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - if ($tokens[$stackPtr]['code'] === T_SEMICOLON) { - $this->processSemicolon($phpcsFile, $stackPtr); - } else { - $this->processCloseTag($phpcsFile, $stackPtr); - } - - }//end process() - - - /** - * Detect `something();;`. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * - * @return void - */ - private function processSemicolon(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - $prevNonEmpty = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($stackPtr - 1), null, true); - if ($tokens[$prevNonEmpty]['code'] !== T_SEMICOLON - && $tokens[$prevNonEmpty]['code'] !== T_OPEN_TAG - && $tokens[$prevNonEmpty]['code'] !== T_OPEN_TAG_WITH_ECHO - ) { - if (isset($tokens[$prevNonEmpty]['scope_condition']) === false) { - return; - } - - if ($tokens[$prevNonEmpty]['scope_opener'] !== $prevNonEmpty - && $tokens[$prevNonEmpty]['code'] !== T_CLOSE_CURLY_BRACKET - ) { - return; - } - - $scopeOwner = $tokens[$tokens[$prevNonEmpty]['scope_condition']]['code']; - if ($scopeOwner === T_CLOSURE || $scopeOwner === T_ANON_CLASS || $scopeOwner === T_MATCH) { - return; - } - - // Else, it's something like `if (foo) {};` and the semicolon is not needed. - } - - if (isset($tokens[$stackPtr]['nested_parenthesis']) === true) { - $nested = $tokens[$stackPtr]['nested_parenthesis']; - $lastCloser = array_pop($nested); - if (isset($tokens[$lastCloser]['parenthesis_owner']) === true - && $tokens[$tokens[$lastCloser]['parenthesis_owner']]['code'] === T_FOR - ) { - // Empty for() condition. - return; - } - } - - $fix = $phpcsFile->addFixableWarning( - 'Empty PHP statement detected: superfluous semicolon.', - $stackPtr, - 'SemicolonWithoutCodeDetected' - ); - - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - - if ($tokens[$prevNonEmpty]['code'] === T_OPEN_TAG - || $tokens[$prevNonEmpty]['code'] === T_OPEN_TAG_WITH_ECHO - ) { - // Check for superfluous whitespace after the semicolon which should be - // removed as the `fixer->replaceToken(($stackPtr + 1), $replacement); - } - } - - for ($i = $stackPtr; $i > $prevNonEmpty; $i--) { - if ($tokens[$i]['code'] !== T_SEMICOLON - && $tokens[$i]['code'] !== T_WHITESPACE - ) { - break; - } - - $phpcsFile->fixer->replaceToken($i, ''); - } - - $phpcsFile->fixer->endChangeset(); - }//end if - - }//end processSemicolon() - - - /** - * Detect ``. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * - * @return void - */ - private function processCloseTag(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - $prevNonEmpty = $phpcsFile->findPrevious(T_WHITESPACE, ($stackPtr - 1), null, true); - if ($tokens[$prevNonEmpty]['code'] !== T_OPEN_TAG - && $tokens[$prevNonEmpty]['code'] !== T_OPEN_TAG_WITH_ECHO - ) { - return; - } - - $fix = $phpcsFile->addFixableWarning( - 'Empty PHP open/close tag combination detected.', - $prevNonEmpty, - 'EmptyPHPOpenCloseTagsDetected' - ); - - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - - for ($i = $prevNonEmpty; $i <= $stackPtr; $i++) { - $phpcsFile->fixer->replaceToken($i, ''); - } - - $phpcsFile->fixer->endChangeset(); - } - - }//end processCloseTag() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/CodeAnalysis/JumbledIncrementerSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/CodeAnalysis/JumbledIncrementerSniff.php deleted file mode 100644 index 8174d665..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/CodeAnalysis/JumbledIncrementerSniff.php +++ /dev/null @@ -1,134 +0,0 @@ - - * class Foo - * { - * public function bar($x) - * { - * for ($i = 0; $i < 10; $i++) - * { - * for ($k = 0; $k < 20; $i++) - * { - * echo 'Hello'; - * } - * } - * } - * } - * - * - * @author Manuel Pichler - * @copyright 2007-2014 Manuel Pichler. All rights reserved. - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\CodeAnalysis; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; - -class JumbledIncrementerSniff implements Sniff -{ - - - /** - * Registers the tokens that this sniff wants to listen for. - * - * @return array - */ - public function register() - { - return [T_FOR]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - $token = $tokens[$stackPtr]; - - // Skip for-loop without body. - if (isset($token['scope_opener']) === false) { - return; - } - - // Find incrementers for outer loop. - $outer = $this->findIncrementers($tokens, $token); - - // Skip if empty. - if (count($outer) === 0) { - return; - } - - // Find nested for loops. - $start = ++$token['scope_opener']; - $end = --$token['scope_closer']; - - for (; $start <= $end; ++$start) { - if ($tokens[$start]['code'] !== T_FOR) { - continue; - } - - $inner = $this->findIncrementers($tokens, $tokens[$start]); - $diff = array_intersect($outer, $inner); - - if (count($diff) !== 0) { - $error = 'Loop incrementer (%s) jumbling with inner loop'; - $data = [implode(', ', $diff)]; - $phpcsFile->addWarning($error, $stackPtr, 'Found', $data); - } - } - - }//end process() - - - /** - * Get all used variables in the incrementer part of a for statement. - * - * @param array $tokens Array with all code sniffer tokens. - * @param array $token Current for loop token. - * - * @return string[] List of all found incrementer variables. - */ - protected function findIncrementers(array $tokens, array $token) - { - // Skip invalid statement. - if (isset($token['parenthesis_opener'], $token['parenthesis_closer']) === false) { - return []; - } - - $start = ++$token['parenthesis_opener']; - $end = --$token['parenthesis_closer']; - - $incrementers = []; - $semicolons = 0; - for ($next = $start; $next <= $end; ++$next) { - $code = $tokens[$next]['code']; - if ($code === T_SEMICOLON) { - ++$semicolons; - } else if ($semicolons === 2 && $code === T_VARIABLE) { - $incrementers[] = $tokens[$next]['content']; - } - } - - return $incrementers; - - }//end findIncrementers() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/CodeAnalysis/RequireExplicitBooleanOperatorPrecedenceSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/CodeAnalysis/RequireExplicitBooleanOperatorPrecedenceSniff.php deleted file mode 100644 index 41922efc..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/CodeAnalysis/RequireExplicitBooleanOperatorPrecedenceSniff.php +++ /dev/null @@ -1,112 +0,0 @@ - - * $one = false; - * $two = false; - * $three = true; - * - * $result = $one && $two || $three; - * $result3 = $one && !$two xor $three; - * - * - * {@internal The unary `!` operator is not handled, because its high precedence matches its visuals of - * applying only to the sub-expression right next to it, making it unlikely that someone would - * misinterpret its precedence. Requiring parentheses around it would reduce the readability of - * expressions due to the additional characters, especially if multiple subexpressions / variables - * need to be negated.} - * - * Sister-sniff to the `Squiz.ControlStructures.InlineIfDeclaration` and - * `Squiz.Formatting.OperatorBracket.MissingBrackets` sniffs. - * - * @author Tim Duesterhus - * @copyright 2021-2023 WoltLab GmbH. - * @copyright 2024 PHPCSStandards and contributors - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\CodeAnalysis; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Tokens; - -class RequireExplicitBooleanOperatorPrecedenceSniff implements Sniff -{ - - /** - * Array of tokens this test searches for to find either a boolean - * operator or the start of the current (sub-)expression. Used for - * performance optimization purposes. - * - * @var array - */ - private $searchTargets = []; - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - $this->searchTargets = Tokens::$booleanOperators; - $this->searchTargets[T_INLINE_THEN] = T_INLINE_THEN; - $this->searchTargets[T_INLINE_ELSE] = T_INLINE_ELSE; - - return Tokens::$booleanOperators; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - $start = $phpcsFile->findStartOfStatement($stackPtr); - - $previous = $phpcsFile->findPrevious( - $this->searchTargets, - ($stackPtr - 1), - $start, - false, - null, - true - ); - - if ($previous === false) { - // No token found. - return; - } - - if ($tokens[$previous]['code'] === $tokens[$stackPtr]['code']) { - // Identical operator found. - return; - } - - if (in_array($tokens[$previous]['code'], [T_INLINE_THEN, T_INLINE_ELSE], true) === true) { - // Beginning of the expression found for the ternary conditional operator. - return; - } - - // We found a mismatching operator, thus we must report the error. - $error = 'Mixing different binary boolean operators within an expression'; - $error .= ' without using parentheses to clarify precedence is not allowed.'; - $phpcsFile->addError($error, $stackPtr, 'MissingParentheses'); - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/CodeAnalysis/UselessOverridingMethodSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/CodeAnalysis/UselessOverridingMethodSniff.php deleted file mode 100644 index 5163da71..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/CodeAnalysis/UselessOverridingMethodSniff.php +++ /dev/null @@ -1,184 +0,0 @@ - - * class FooBar { - * public function __construct($a, $b) { - * parent::__construct($a, $b); - * } - * } - * - * - * @author Manuel Pichler - * @copyright 2007-2014 Manuel Pichler. All rights reserved. - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\CodeAnalysis; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Tokens; - -class UselessOverridingMethodSniff implements Sniff -{ - - /** - * Object-Oriented scopes in which a call to parent::method() can exist. - * - * @var array Keys are the token constants, value is irrelevant. - */ - private $validOOScopes = [ - T_CLASS => true, - T_ANON_CLASS => true, - T_TRAIT => true, - ]; - - - /** - * Registers the tokens that this sniff wants to listen for. - * - * @return array - */ - public function register() - { - return [T_FUNCTION]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - $token = $tokens[$stackPtr]; - - // Skip function without body. - if (isset($token['scope_opener'], $token['scope_closer']) === false) { - return; - } - - $conditions = $token['conditions']; - $lastCondition = end($conditions); - - // Skip functions that are not a method part of a class, anon class or trait. - if (isset($this->validOOScopes[$lastCondition]) === false) { - return; - } - - // Get function name. - $methodName = $phpcsFile->getDeclarationName($stackPtr); - - // Get all parameters from method signature. - $signature = []; - foreach ($phpcsFile->getMethodParameters($stackPtr) as $param) { - $signature[] = $param['name']; - } - - $next = ++$token['scope_opener']; - $end = --$token['scope_closer']; - - for (; $next <= $end; ++$next) { - $code = $tokens[$next]['code']; - - if (isset(Tokens::$emptyTokens[$code]) === true) { - continue; - } else if ($code === T_RETURN) { - continue; - } - - break; - } - - // Any token except 'parent' indicates correct code. - if ($tokens[$next]['code'] !== T_PARENT) { - return; - } - - // Find next non empty token index, should be double colon. - $next = $phpcsFile->findNext(Tokens::$emptyTokens, ($next + 1), null, true); - - // Skip for invalid code. - if ($tokens[$next]['code'] !== T_DOUBLE_COLON) { - return; - } - - // Find next non empty token index, should be the name of the method being called. - $next = $phpcsFile->findNext(Tokens::$emptyTokens, ($next + 1), null, true); - - // Skip for invalid code or other method. - if (strcasecmp($tokens[$next]['content'], $methodName) !== 0) { - return; - } - - // Find next non empty token index, should be the open parenthesis. - $next = $phpcsFile->findNext(Tokens::$emptyTokens, ($next + 1), null, true); - - // Skip for invalid code. - if ($tokens[$next]['code'] !== T_OPEN_PARENTHESIS || isset($tokens[$next]['parenthesis_closer']) === false) { - return; - } - - $parameters = ['']; - $parenthesisCount = 1; - for (++$next; $next < $phpcsFile->numTokens; ++$next) { - $code = $tokens[$next]['code']; - - if ($code === T_OPEN_PARENTHESIS) { - ++$parenthesisCount; - } else if ($code === T_CLOSE_PARENTHESIS) { - --$parenthesisCount; - } else if ($parenthesisCount === 1 && $code === T_COMMA) { - $parameters[] = ''; - } else if (isset(Tokens::$emptyTokens[$code]) === false) { - $parameters[(count($parameters) - 1)] .= $tokens[$next]['content']; - } - - if ($parenthesisCount === 0) { - break; - } - }//end for - - $next = $phpcsFile->findNext(Tokens::$emptyTokens, ($next + 1), null, true); - if ($tokens[$next]['code'] !== T_SEMICOLON && $tokens[$next]['code'] !== T_CLOSE_TAG) { - return; - } - - // This list deliberately does not include the `T_OPEN_TAG_WITH_ECHO` as that token implicitly is an echo statement, i.e. content. - $nonContent = Tokens::$emptyTokens; - $nonContent[T_OPEN_TAG] = T_OPEN_TAG; - $nonContent[T_CLOSE_TAG] = T_CLOSE_TAG; - - // Check rest of the scope. - for (++$next; $next <= $end; ++$next) { - $code = $tokens[$next]['code']; - // Skip for any other content. - if (isset($nonContent[$code]) === false) { - return; - } - } - - $parameters = array_map('trim', $parameters); - $parameters = array_filter($parameters); - - if (count($parameters) === count($signature) && $parameters === $signature) { - $phpcsFile->addWarning('Possible useless method overriding detected', $stackPtr, 'Found'); - } - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/ControlStructures/DisallowYodaConditionsSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/ControlStructures/DisallowYodaConditionsSniff.php deleted file mode 100644 index 666b1916..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/ControlStructures/DisallowYodaConditionsSniff.php +++ /dev/null @@ -1,185 +0,0 @@ - - * @author Mark Scherer - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\ControlStructures; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Tokens; - -class DisallowYodaConditionsSniff implements Sniff -{ - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - $tokens = Tokens::$comparisonTokens; - unset($tokens[T_COALESCE]); - - return $tokens; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in the - * stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - $previousIndex = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($stackPtr - 1), null, true); - $relevantTokens = [ - T_CLOSE_SHORT_ARRAY, - T_CLOSE_PARENTHESIS, - T_TRUE, - T_FALSE, - T_NULL, - T_LNUMBER, - T_DNUMBER, - T_CONSTANT_ENCAPSED_STRING, - ]; - - if (in_array($tokens[$previousIndex]['code'], $relevantTokens, true) === false) { - return; - } - - if ($tokens[$previousIndex]['code'] === T_CLOSE_SHORT_ARRAY) { - $previousIndex = $tokens[$previousIndex]['bracket_opener']; - if ($this->isArrayStatic($phpcsFile, $previousIndex) === false) { - return; - } - } - - $prevIndex = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($previousIndex - 1), null, true); - - if (in_array($tokens[$prevIndex]['code'], Tokens::$arithmeticTokens, true) === true) { - return; - } - - if ($tokens[$prevIndex]['code'] === T_STRING_CONCAT) { - return; - } - - // Is it a parenthesis. - if ($tokens[$previousIndex]['code'] === T_CLOSE_PARENTHESIS) { - $beforeOpeningParenthesisIndex = $phpcsFile->findPrevious( - Tokens::$emptyTokens, - ($tokens[$previousIndex]['parenthesis_opener'] - 1), - null, - true - ); - - if ($beforeOpeningParenthesisIndex === false || $tokens[$beforeOpeningParenthesisIndex]['code'] !== T_ARRAY) { - if ($tokens[$beforeOpeningParenthesisIndex]['code'] === T_STRING) { - return; - } - - // If it is not an array check what is inside. - $found = $phpcsFile->findPrevious( - T_VARIABLE, - ($previousIndex - 1), - $tokens[$previousIndex]['parenthesis_opener'] - ); - - // If a variable exists, it is not Yoda. - if ($found !== false) { - return; - } - - // If there is nothing inside the parenthesis, it is not a Yoda condition. - $opener = $tokens[$previousIndex]['parenthesis_opener']; - $prev = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($previousIndex - 1), ($opener + 1), true); - if ($prev === false) { - return; - } - } else if ($tokens[$beforeOpeningParenthesisIndex]['code'] === T_ARRAY - && $this->isArrayStatic($phpcsFile, $beforeOpeningParenthesisIndex) === false - ) { - return; - }//end if - }//end if - - $phpcsFile->addError( - 'Usage of Yoda conditions is not allowed; switch the expression order', - $stackPtr, - 'Found' - ); - - }//end process() - - - /** - * Determines if an array is a static definition. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $arrayToken The position of the array token. - * - * @return bool - */ - public function isArrayStatic(File $phpcsFile, $arrayToken) - { - $tokens = $phpcsFile->getTokens(); - - if ($tokens[$arrayToken]['code'] === T_OPEN_SHORT_ARRAY) { - $start = $arrayToken; - $end = $tokens[$arrayToken]['bracket_closer']; - } else if ($tokens[$arrayToken]['code'] === T_ARRAY) { - $start = $tokens[$arrayToken]['parenthesis_opener']; - $end = $tokens[$arrayToken]['parenthesis_closer']; - } else { - // Shouldn't be possible but may happen if external sniffs are using this method. - return true; // @codeCoverageIgnore - } - - $staticTokens = Tokens::$emptyTokens; - $staticTokens += Tokens::$textStringTokens; - $staticTokens += Tokens::$assignmentTokens; - $staticTokens += Tokens::$equalityTokens; - $staticTokens += Tokens::$comparisonTokens; - $staticTokens += Tokens::$arithmeticTokens; - $staticTokens += Tokens::$operators; - $staticTokens += Tokens::$booleanOperators; - $staticTokens += Tokens::$castTokens; - $staticTokens += Tokens::$bracketTokens; - $staticTokens += [ - T_DOUBLE_ARROW => T_DOUBLE_ARROW, - T_COMMA => T_COMMA, - T_TRUE => T_TRUE, - T_FALSE => T_FALSE, - ]; - - for ($i = ($start + 1); $i < $end; $i++) { - if (isset($tokens[$i]['scope_closer']) === true) { - $i = $tokens[$i]['scope_closer']; - continue; - } - - if (isset($staticTokens[$tokens[$i]['code']]) === false) { - return false; - } - } - - return true; - - }//end isArrayStatic() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/ControlStructures/InlineControlStructureSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/ControlStructures/InlineControlStructureSniff.php deleted file mode 100644 index ff173832..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/ControlStructures/InlineControlStructureSniff.php +++ /dev/null @@ -1,366 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\ControlStructures; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Tokens; - -class InlineControlStructureSniff implements Sniff -{ - - /** - * A list of tokenizers this sniff supports. - * - * @var array - */ - public $supportedTokenizers = [ - 'PHP', - 'JS', - ]; - - /** - * If true, an error will be thrown; otherwise a warning. - * - * @var boolean - */ - public $error = true; - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [ - T_IF, - T_ELSE, - T_ELSEIF, - T_FOREACH, - T_WHILE, - T_DO, - T_SWITCH, - T_FOR, - ]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in the - * stack passed in $tokens. - * - * @return void|int - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - if (isset($tokens[$stackPtr]['scope_opener']) === true) { - $phpcsFile->recordMetric($stackPtr, 'Control structure defined inline', 'no'); - return; - } - - // Ignore the ELSE in ELSE IF. We'll process the IF part later. - if ($tokens[$stackPtr]['code'] === T_ELSE) { - $next = $phpcsFile->findNext(Tokens::$emptyTokens, ($stackPtr + 1), null, true); - if ($tokens[$next]['code'] === T_IF) { - return; - } - } - - if ($tokens[$stackPtr]['code'] === T_WHILE || $tokens[$stackPtr]['code'] === T_FOR) { - // This could be from a DO WHILE, which doesn't have an opening brace or a while/for without body. - if (isset($tokens[$stackPtr]['parenthesis_closer']) === true) { - $afterParensCloser = $phpcsFile->findNext(Tokens::$emptyTokens, ($tokens[$stackPtr]['parenthesis_closer'] + 1), null, true); - if ($afterParensCloser === false) { - // Live coding. - return; - } - - if ($tokens[$afterParensCloser]['code'] === T_SEMICOLON) { - $phpcsFile->recordMetric($stackPtr, 'Control structure defined inline', 'no'); - return; - } - } - }//end if - - if (isset($tokens[$stackPtr]['parenthesis_opener'], $tokens[$stackPtr]['parenthesis_closer']) === false - && $tokens[$stackPtr]['code'] !== T_ELSE - ) { - if ($tokens[$stackPtr]['code'] !== T_DO) { - // Live coding or parse error. - return; - } - - $nextWhile = $phpcsFile->findNext(T_WHILE, ($stackPtr + 1)); - if ($nextWhile !== false - && isset($tokens[$nextWhile]['parenthesis_opener'], $tokens[$nextWhile]['parenthesis_closer']) === false - ) { - // Live coding or parse error. - return; - } - - unset($nextWhile); - } - - $start = $stackPtr; - if (isset($tokens[$stackPtr]['parenthesis_closer']) === true) { - $start = $tokens[$stackPtr]['parenthesis_closer']; - } - - $nextNonEmpty = $phpcsFile->findNext(Tokens::$emptyTokens, ($start + 1), null, true); - if ($nextNonEmpty === false) { - // Live coding or parse error. - return; - } - - if ($tokens[$nextNonEmpty]['code'] === T_OPEN_CURLY_BRACKET - || $tokens[$nextNonEmpty]['code'] === T_COLON - ) { - // T_CLOSE_CURLY_BRACKET missing, or alternative control structure with - // T_END... missing. Either live coding, parse error or end - // tag in short open tags and scan run with short_open_tag=Off. - // Bow out completely as any further detection will be unreliable - // and create incorrect fixes or cause fixer conflicts. - return $phpcsFile->numTokens; - } - - unset($nextNonEmpty, $start); - - // This is a control structure without an opening brace, - // so it is an inline statement. - if ($this->error === true) { - $fix = $phpcsFile->addFixableError('Inline control structures are not allowed', $stackPtr, 'NotAllowed'); - } else { - $fix = $phpcsFile->addFixableWarning('Inline control structures are discouraged', $stackPtr, 'Discouraged'); - } - - $phpcsFile->recordMetric($stackPtr, 'Control structure defined inline', 'yes'); - - // Stop here if we are not fixing the error. - if ($fix !== true) { - return; - } - - $phpcsFile->fixer->beginChangeset(); - if (isset($tokens[$stackPtr]['parenthesis_closer']) === true) { - $closer = $tokens[$stackPtr]['parenthesis_closer']; - } else { - $closer = $stackPtr; - } - - if ($tokens[($closer + 1)]['code'] === T_WHITESPACE - || $tokens[($closer + 1)]['code'] === T_SEMICOLON - ) { - $phpcsFile->fixer->addContent($closer, ' {'); - } else { - $phpcsFile->fixer->addContent($closer, ' { '); - } - - $fixableScopeOpeners = $this->register(); - - $lastNonEmpty = $closer; - for ($end = ($closer + 1); $end < $phpcsFile->numTokens; $end++) { - if ($tokens[$end]['code'] === T_SEMICOLON) { - break; - } - - if ($tokens[$end]['code'] === T_CLOSE_TAG) { - $end = $lastNonEmpty; - break; - } - - if (in_array($tokens[$end]['code'], $fixableScopeOpeners, true) === true - && isset($tokens[$end]['scope_opener']) === false - ) { - // The best way to fix nested inline scopes is middle-out. - // So skip this one. It will be detected and fixed on a future loop. - $phpcsFile->fixer->rollbackChangeset(); - return; - } - - if (isset($tokens[$end]['scope_opener']) === true) { - $type = $tokens[$end]['code']; - $end = $tokens[$end]['scope_closer']; - if ($type === T_DO - || $type === T_IF || $type === T_ELSEIF - || $type === T_TRY || $type === T_CATCH || $type === T_FINALLY - ) { - $next = $phpcsFile->findNext(Tokens::$emptyTokens, ($end + 1), null, true); - if ($next === false) { - break; - } - - $nextType = $tokens[$next]['code']; - - // Let additional conditions loop and find their ending. - if (($type === T_IF - || $type === T_ELSEIF) - && ($nextType === T_ELSEIF - || $nextType === T_ELSE) - ) { - continue; - } - - // Account for TRY... CATCH/FINALLY statements. - if (($type === T_TRY - || $type === T_CATCH - || $type === T_FINALLY) - && ($nextType === T_CATCH - || $nextType === T_FINALLY) - ) { - continue; - } - - // Account for DO... WHILE conditions. - if ($type === T_DO && $nextType === T_WHILE) { - $end = $phpcsFile->findNext(T_SEMICOLON, ($next + 1)); - } - } else if ($type === T_CLOSURE) { - // There should be a semicolon after the closing brace. - $next = $phpcsFile->findNext(Tokens::$emptyTokens, ($end + 1), null, true); - if ($next !== false && $tokens[$next]['code'] === T_SEMICOLON) { - $end = $next; - } - }//end if - - if ($tokens[$end]['code'] !== T_END_HEREDOC - && $tokens[$end]['code'] !== T_END_NOWDOC - ) { - break; - } - }//end if - - if (isset($tokens[$end]['parenthesis_closer']) === true) { - $end = $tokens[$end]['parenthesis_closer']; - $lastNonEmpty = $end; - continue; - } - - if ($tokens[$end]['code'] !== T_WHITESPACE) { - $lastNonEmpty = $end; - } - }//end for - - if ($end === $phpcsFile->numTokens) { - $end = $lastNonEmpty; - } - - $nextContent = $phpcsFile->findNext(Tokens::$emptyTokens, ($end + 1), null, true); - if ($nextContent === false || $tokens[$nextContent]['line'] !== $tokens[$end]['line']) { - // Looks for completely empty statements. - $next = $phpcsFile->findNext(T_WHITESPACE, ($closer + 1), ($end + 1), true); - } else { - $next = ($end + 1); - $endLine = $end; - } - - if ($next !== $end) { - if ($nextContent === false || $tokens[$nextContent]['line'] !== $tokens[$end]['line']) { - // Account for a comment on the end of the line. - for ($endLine = $end; $endLine < $phpcsFile->numTokens; $endLine++) { - if (isset($tokens[($endLine + 1)]) === false - || $tokens[$endLine]['line'] !== $tokens[($endLine + 1)]['line'] - ) { - break; - } - } - - if (isset(Tokens::$commentTokens[$tokens[$endLine]['code']]) === false - && ($tokens[$endLine]['code'] !== T_WHITESPACE - || isset(Tokens::$commentTokens[$tokens[($endLine - 1)]['code']]) === false) - ) { - $endLine = $end; - } - } - - if ($endLine !== $end) { - $endToken = $endLine; - $addedContent = ''; - } else { - $endToken = $end; - $addedContent = $phpcsFile->eolChar; - - if ($tokens[$end]['code'] !== T_SEMICOLON - && $tokens[$end]['code'] !== T_CLOSE_CURLY_BRACKET - ) { - $phpcsFile->fixer->addContent($end, '; '); - } - } - - $next = $phpcsFile->findNext(T_WHITESPACE, ($endToken + 1), null, true); - if ($next !== false - && ($tokens[$next]['code'] === T_ELSE - || $tokens[$next]['code'] === T_ELSEIF) - ) { - $phpcsFile->fixer->addContentBefore($next, '} '); - } else { - $indent = ''; - for ($first = $stackPtr; $first > 0; $first--) { - if ($tokens[$first]['column'] === 1) { - break; - } - } - - if ($tokens[$first]['code'] === T_WHITESPACE) { - $indent = $tokens[$first]['content']; - } else if ($tokens[$first]['code'] === T_INLINE_HTML - || $tokens[$first]['code'] === T_OPEN_TAG - ) { - $addedContent = ''; - } - - $addedContent .= $indent.'}'; - if ($next !== false && $tokens[$endToken]['code'] === T_COMMENT) { - $addedContent .= $phpcsFile->eolChar; - } - - $phpcsFile->fixer->addContent($endToken, $addedContent); - }//end if - } else { - if ($nextContent === false || $tokens[$nextContent]['line'] !== $tokens[$end]['line']) { - // Account for a comment on the end of the line. - for ($endLine = $end; $endLine < $phpcsFile->numTokens; $endLine++) { - if (isset($tokens[($endLine + 1)]) === false - || $tokens[$endLine]['line'] !== $tokens[($endLine + 1)]['line'] - ) { - break; - } - } - - if ($tokens[$endLine]['code'] !== T_COMMENT - && ($tokens[$endLine]['code'] !== T_WHITESPACE - || $tokens[($endLine - 1)]['code'] !== T_COMMENT) - ) { - $endLine = $end; - } - } - - if ($endLine !== $end) { - $phpcsFile->fixer->replaceToken($end, ''); - $phpcsFile->fixer->addNewlineBefore($endLine); - $phpcsFile->fixer->addContent($endLine, '}'); - } else { - $phpcsFile->fixer->replaceToken($end, '}'); - } - }//end if - - $phpcsFile->fixer->endChangeset(); - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Debug/CSSLintSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Debug/CSSLintSniff.php deleted file mode 100644 index 6df4c1ff..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Debug/CSSLintSniff.php +++ /dev/null @@ -1,98 +0,0 @@ - - * @copyright 2013-2014 Roman Levishchenko - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - * - * @deprecated 3.9.0 - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\Debug; - -use PHP_CodeSniffer\Config; -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Common; - -class CSSLintSniff implements Sniff -{ - - /** - * A list of tokenizers this sniff supports. - * - * @var array - */ - public $supportedTokenizers = ['CSS']; - - - /** - * Returns the token types that this sniff is interested in. - * - * @return array - */ - public function register() - { - return [T_OPEN_TAG]; - - }//end register() - - - /** - * Processes the tokens that this sniff is interested in. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file where the token was found. - * @param int $stackPtr The position in the stack where - * the token was found. - * - * @return int - */ - public function process(File $phpcsFile, $stackPtr) - { - $csslintPath = Config::getExecutablePath('csslint'); - if ($csslintPath === null) { - return $phpcsFile->numTokens; - } - - $fileName = $phpcsFile->getFilename(); - - $cmd = Common::escapeshellcmd($csslintPath).' '.escapeshellarg($fileName).' 2>&1'; - exec($cmd, $output, $retval); - - if (is_array($output) === false) { - return $phpcsFile->numTokens; - } - - $count = count($output); - - for ($i = 0; $i < $count; $i++) { - $matches = []; - $numMatches = preg_match( - '/(error|warning) at line (\d+)/', - $output[$i], - $matches - ); - - if ($numMatches === 0) { - continue; - } - - $line = (int) $matches[2]; - $message = 'csslint says: '.$output[($i + 1)]; - // First line is message with error line and error code. - // Second is error message. - // Third is wrong line in file. - // Fourth is empty line. - $i += 4; - - $phpcsFile->addWarningOnLine($message, $line, 'ExternalTool'); - }//end for - - // Ignore the rest of the file. - return $phpcsFile->numTokens; - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Debug/ClosureLinterSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Debug/ClosureLinterSniff.php deleted file mode 100644 index 637bf41e..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Debug/ClosureLinterSniff.php +++ /dev/null @@ -1,119 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - * - * @deprecated 3.9.0 - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\Debug; - -use PHP_CodeSniffer\Config; -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Common; - -class ClosureLinterSniff implements Sniff -{ - - /** - * A list of error codes that should show errors. - * - * All other error codes will show warnings. - * - * @var array - */ - public $errorCodes = []; - - /** - * A list of error codes to ignore. - * - * @var array - */ - public $ignoreCodes = []; - - /** - * A list of tokenizers this sniff supports. - * - * @var array - */ - public $supportedTokenizers = ['JS']; - - - /** - * Returns the token types that this sniff is interested in. - * - * @return array - */ - public function register() - { - return [T_OPEN_TAG]; - - }//end register() - - - /** - * Processes the tokens that this sniff is interested in. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file where the token was found. - * @param int $stackPtr The position in the stack where - * the token was found. - * - * @return int - * @throws \PHP_CodeSniffer\Exceptions\RuntimeException If jslint.js could not be run. - */ - public function process(File $phpcsFile, $stackPtr) - { - $lintPath = Config::getExecutablePath('gjslint'); - if ($lintPath === null) { - return $phpcsFile->numTokens; - } - - $fileName = $phpcsFile->getFilename(); - - $lintPath = Common::escapeshellcmd($lintPath); - $cmd = $lintPath.' --nosummary --notime --unix_mode '.escapeshellarg($fileName); - exec($cmd, $output, $retval); - - if (is_array($output) === false) { - return $phpcsFile->numTokens; - } - - foreach ($output as $finding) { - $matches = []; - $numMatches = preg_match('/^(.*):([0-9]+):\(.*?([0-9]+)\)(.*)$/', $finding, $matches); - if ($numMatches === 0) { - continue; - } - - // Skip error codes we are ignoring. - $code = $matches[3]; - if (in_array($code, $this->ignoreCodes) === true) { - continue; - } - - $line = (int) $matches[2]; - $error = trim($matches[4]); - - $message = 'gjslint says: (%s) %s'; - $data = [ - $code, - $error, - ]; - if (in_array($code, $this->errorCodes) === true) { - $phpcsFile->addErrorOnLine($message, $line, 'ExternalToolError', $data); - } else { - $phpcsFile->addWarningOnLine($message, $line, 'ExternalTool', $data); - } - }//end foreach - - // Ignore the rest of the file. - return $phpcsFile->numTokens; - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Debug/ESLintSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Debug/ESLintSniff.php deleted file mode 100644 index 1c6b0e3f..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Debug/ESLintSniff.php +++ /dev/null @@ -1,115 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - * - * @deprecated 3.9.0 - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\Debug; - -use PHP_CodeSniffer\Config; -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Common; - -class ESLintSniff implements Sniff -{ - - /** - * A list of tokenizers this sniff supports. - * - * @var array - */ - public $supportedTokenizers = ['JS']; - - /** - * ESLint configuration file path. - * - * @var string|null Path to eslintrc. Null to autodetect. - */ - public $configFile = null; - - - /** - * Returns the token types that this sniff is interested in. - * - * @return array - */ - public function register() - { - return [T_OPEN_TAG]; - - }//end register() - - - /** - * Processes the tokens that this sniff is interested in. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file where the token was found. - * @param int $stackPtr The position in the stack where - * the token was found. - * - * @return int - * @throws \PHP_CodeSniffer\Exceptions\RuntimeException If jshint.js could not be run. - */ - public function process(File $phpcsFile, $stackPtr) - { - $eslintPath = Config::getExecutablePath('eslint'); - if ($eslintPath === null) { - return $phpcsFile->numTokens; - } - - $filename = $phpcsFile->getFilename(); - - $configFile = $this->configFile; - if (empty($configFile) === true) { - // Attempt to autodetect. - $candidates = glob('.eslintrc{.js,.yaml,.yml,.json}', GLOB_BRACE); - if (empty($candidates) === false) { - $configFile = $candidates[0]; - } - } - - $eslintOptions = ['--format json']; - if (empty($configFile) === false) { - $eslintOptions[] = '--config '.escapeshellarg($configFile); - } - - $cmd = Common::escapeshellcmd(escapeshellarg($eslintPath).' '.implode(' ', $eslintOptions).' '.escapeshellarg($filename)); - - // Execute! - exec($cmd, $stdout, $code); - - if ($code <= 0) { - // No errors, continue. - return $phpcsFile->numTokens; - } - - $data = json_decode(implode("\n", $stdout)); - if (json_last_error() !== JSON_ERROR_NONE) { - // Ignore any errors. - return $phpcsFile->numTokens; - } - - // Data is a list of files, but we only pass a single one. - $messages = $data[0]->messages; - foreach ($messages as $error) { - $message = 'eslint says: '.$error->message; - if (empty($error->fatal) === false || $error->severity === 2) { - $phpcsFile->addErrorOnLine($message, $error->line, 'ExternalTool'); - } else { - $phpcsFile->addWarningOnLine($message, $error->line, 'ExternalTool'); - } - } - - // Ignore the rest of the file. - return $phpcsFile->numTokens; - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Debug/JSHintSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Debug/JSHintSniff.php deleted file mode 100644 index ae8264eb..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Debug/JSHintSniff.php +++ /dev/null @@ -1,97 +0,0 @@ - - * @author Alexander Wei§ - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - * - * @deprecated 3.9.0 - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\Debug; - -use PHP_CodeSniffer\Config; -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Common; - -class JSHintSniff implements Sniff -{ - - /** - * A list of tokenizers this sniff supports. - * - * @var array - */ - public $supportedTokenizers = ['JS']; - - - /** - * Returns the token types that this sniff is interested in. - * - * @return array - */ - public function register() - { - return [T_OPEN_TAG]; - - }//end register() - - - /** - * Processes the tokens that this sniff is interested in. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file where the token was found. - * @param int $stackPtr The position in the stack where - * the token was found. - * - * @return int - * @throws \PHP_CodeSniffer\Exceptions\RuntimeException If jshint.js could not be run. - */ - public function process(File $phpcsFile, $stackPtr) - { - $rhinoPath = Config::getExecutablePath('rhino'); - $jshintPath = Config::getExecutablePath('jshint'); - if ($jshintPath === null) { - return $phpcsFile->numTokens; - } - - $fileName = $phpcsFile->getFilename(); - $jshintPath = Common::escapeshellcmd($jshintPath); - - if ($rhinoPath !== null) { - $rhinoPath = Common::escapeshellcmd($rhinoPath); - $cmd = "$rhinoPath \"$jshintPath\" ".escapeshellarg($fileName); - exec($cmd, $output, $retval); - - $regex = '`^(?P.+)\(.+:(?P[0-9]+).*:[0-9]+\)$`'; - } else { - $cmd = "$jshintPath ".escapeshellarg($fileName); - exec($cmd, $output, $retval); - - $regex = '`^(.+?): line (?P[0-9]+), col [0-9]+, (?P.+)$`'; - } - - if (is_array($output) === true) { - foreach ($output as $finding) { - $matches = []; - $numMatches = preg_match($regex, $finding, $matches); - if ($numMatches === 0) { - continue; - } - - $line = (int) $matches['line']; - $message = 'jshint says: '.trim($matches['error']); - $phpcsFile->addWarningOnLine($message, $line, 'ExternalTool'); - } - } - - // Ignore the rest of the file. - return $phpcsFile->numTokens; - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Files/ByteOrderMarkSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Files/ByteOrderMarkSniff.php deleted file mode 100644 index 5a1fde6f..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Files/ByteOrderMarkSniff.php +++ /dev/null @@ -1,82 +0,0 @@ - - * @author Greg Sherwood - * @copyright 2010-2014 mediaSELF Sp. z o.o. - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\Files; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; - -class ByteOrderMarkSniff implements Sniff -{ - - /** - * List of supported BOM definitions. - * - * Use encoding names as keys and hex BOM representations as values. - * - * @var array - */ - protected $bomDefinitions = [ - 'UTF-8' => 'efbbbf', - 'UTF-16 (BE)' => 'feff', - 'UTF-16 (LE)' => 'fffe', - ]; - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [T_INLINE_HTML]; - - }//end register() - - - /** - * Processes this sniff, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in - * the stack passed in $tokens. - * - * @return int - */ - public function process(File $phpcsFile, $stackPtr) - { - // The BOM will be the very first token in the file. - if ($stackPtr !== 0) { - return $phpcsFile->numTokens; - } - - $tokens = $phpcsFile->getTokens(); - - foreach ($this->bomDefinitions as $bomName => $expectedBomHex) { - $bomByteLength = (strlen($expectedBomHex) / 2); - $htmlBomHex = bin2hex(substr($tokens[$stackPtr]['content'], 0, $bomByteLength)); - if ($htmlBomHex === $expectedBomHex) { - $errorData = [$bomName]; - $error = 'File contains %s byte order mark, which may corrupt your application'; - $phpcsFile->addError($error, $stackPtr, 'Found', $errorData); - $phpcsFile->recordMetric($stackPtr, 'Using byte order mark', 'yes'); - return $phpcsFile->numTokens; - } - } - - $phpcsFile->recordMetric($stackPtr, 'Using byte order mark', 'no'); - - return $phpcsFile->numTokens; - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Files/EndFileNewlineSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Files/EndFileNewlineSniff.php deleted file mode 100644 index 71bcabbb..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Files/EndFileNewlineSniff.php +++ /dev/null @@ -1,84 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\Files; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; - -class EndFileNewlineSniff implements Sniff -{ - - /** - * A list of tokenizers this sniff supports. - * - * @var array - */ - public $supportedTokenizers = [ - 'PHP', - 'JS', - 'CSS', - ]; - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [ - T_OPEN_TAG, - T_OPEN_TAG_WITH_ECHO, - ]; - - }//end register() - - - /** - * Processes this sniff, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in - * the stack passed in $tokens. - * - * @return int - */ - public function process(File $phpcsFile, $stackPtr) - { - // Skip to the end of the file. - $tokens = $phpcsFile->getTokens(); - $stackPtr = ($phpcsFile->numTokens - 1); - - if ($tokens[$stackPtr]['content'] === '') { - $stackPtr--; - } - - $eolCharLen = strlen($phpcsFile->eolChar); - $lastChars = substr($tokens[$stackPtr]['content'], ($eolCharLen * -1)); - if ($lastChars !== $phpcsFile->eolChar) { - $phpcsFile->recordMetric($stackPtr, 'Newline at EOF', 'no'); - - $error = 'File must end with a newline character'; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'NotFound'); - if ($fix === true) { - $phpcsFile->fixer->addNewline($stackPtr); - } - } else { - $phpcsFile->recordMetric($stackPtr, 'Newline at EOF', 'yes'); - } - - // Ignore the rest of the file. - return $phpcsFile->numTokens; - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Files/EndFileNoNewlineSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Files/EndFileNoNewlineSniff.php deleted file mode 100644 index 3f766075..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Files/EndFileNoNewlineSniff.php +++ /dev/null @@ -1,91 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\Files; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; - -class EndFileNoNewlineSniff implements Sniff -{ - - /** - * A list of tokenizers this sniff supports. - * - * @var array - */ - public $supportedTokenizers = [ - 'PHP', - 'JS', - 'CSS', - ]; - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [ - T_OPEN_TAG, - T_OPEN_TAG_WITH_ECHO, - ]; - - }//end register() - - - /** - * Processes this sniff, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in - * the stack passed in $tokens. - * - * @return int - */ - public function process(File $phpcsFile, $stackPtr) - { - // Skip to the end of the file. - $tokens = $phpcsFile->getTokens(); - $stackPtr = ($phpcsFile->numTokens - 1); - - if ($tokens[$stackPtr]['content'] === '') { - --$stackPtr; - } - - $eolCharLen = strlen($phpcsFile->eolChar); - $lastChars = substr($tokens[$stackPtr]['content'], ($eolCharLen * -1)); - if ($lastChars === $phpcsFile->eolChar) { - $error = 'File must not end with a newline character'; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'Found'); - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - - for ($i = $stackPtr; $i > 0; $i--) { - $newContent = rtrim($tokens[$i]['content'], $phpcsFile->eolChar); - $phpcsFile->fixer->replaceToken($i, $newContent); - - if ($newContent !== '') { - break; - } - } - - $phpcsFile->fixer->endChangeset(); - } - } - - // Ignore the rest of the file. - return $phpcsFile->numTokens; - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Files/ExecutableFileSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Files/ExecutableFileSniff.php deleted file mode 100644 index 8f597dfd..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Files/ExecutableFileSniff.php +++ /dev/null @@ -1,62 +0,0 @@ - - * @copyright 2019 Matthew Peveler - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\Files; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; - -class ExecutableFileSniff implements Sniff -{ - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [ - T_OPEN_TAG, - T_OPEN_TAG_WITH_ECHO, - ]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in the - * stack passed in $tokens. - * - * @return int - */ - public function process(File $phpcsFile, $stackPtr) - { - $filename = $phpcsFile->getFilename(); - - if ($filename !== 'STDIN') { - $perms = fileperms($phpcsFile->getFilename()); - if (($perms & 0x0040) !== 0 || ($perms & 0x0008) !== 0 || ($perms & 0x0001) !== 0) { - $error = 'A PHP file should not be executable; found file permissions set to %s'; - $data = [substr(sprintf('%o', $perms), -4)]; - $phpcsFile->addError($error, 0, 'Executable', $data); - } - } - - // Ignore the rest of the file. - return $phpcsFile->numTokens; - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Files/InlineHTMLSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Files/InlineHTMLSniff.php deleted file mode 100644 index d90b8930..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Files/InlineHTMLSniff.php +++ /dev/null @@ -1,79 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\Files; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; - -class InlineHTMLSniff implements Sniff -{ - - /** - * List of supported BOM definitions. - * - * Use encoding names as keys and hex BOM representations as values. - * - * @var array - */ - protected $bomDefinitions = [ - 'UTF-8' => 'efbbbf', - 'UTF-16 (BE)' => 'feff', - 'UTF-16 (LE)' => 'fffe', - ]; - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [T_INLINE_HTML]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in - * the stack passed in $tokens. - * - * @return int|void - */ - public function process(File $phpcsFile, $stackPtr) - { - // Allow a byte-order mark. - $tokens = $phpcsFile->getTokens(); - foreach ($this->bomDefinitions as $expectedBomHex) { - $bomByteLength = (strlen($expectedBomHex) / 2); - $htmlBomHex = bin2hex(substr($tokens[0]['content'], 0, $bomByteLength)); - if ($htmlBomHex === $expectedBomHex && strlen($tokens[0]['content']) === $bomByteLength) { - return; - } - } - - // Ignore shebang lines. - $tokens = $phpcsFile->getTokens(); - if (substr($tokens[$stackPtr]['content'], 0, 2) === '#!') { - return; - } - - $error = 'PHP files must only contain PHP code'; - $phpcsFile->addError($error, $stackPtr, 'Found'); - - return $phpcsFile->numTokens; - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Files/LineEndingsSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Files/LineEndingsSniff.php deleted file mode 100644 index 1814b555..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Files/LineEndingsSniff.php +++ /dev/null @@ -1,148 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\Files; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; - -class LineEndingsSniff implements Sniff -{ - - /** - * A list of tokenizers this sniff supports. - * - * @var array - */ - public $supportedTokenizers = [ - 'PHP', - 'JS', - 'CSS', - ]; - - /** - * The valid EOL character. - * - * @var string - */ - public $eolChar = '\n'; - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [ - T_OPEN_TAG, - T_OPEN_TAG_WITH_ECHO, - ]; - - }//end register() - - - /** - * Processes this sniff, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in - * the stack passed in $tokens. - * - * @return int - */ - public function process(File $phpcsFile, $stackPtr) - { - $found = $phpcsFile->eolChar; - $found = str_replace("\n", '\n', $found); - $found = str_replace("\r", '\r', $found); - - $phpcsFile->recordMetric($stackPtr, 'EOL char', $found); - - if ($found === $this->eolChar) { - // Ignore the rest of the file. - return $phpcsFile->numTokens; - } - - // Check for single line files without an EOL. This is a very special - // case and the EOL char is set to \n when this happens. - if ($found === '\n') { - $tokens = $phpcsFile->getTokens(); - $lastToken = ($phpcsFile->numTokens - 1); - if ($tokens[$lastToken]['line'] === 1 - && $tokens[$lastToken]['content'] !== "\n" - ) { - return $phpcsFile->numTokens; - } - } - - $error = 'End of line character is invalid; expected "%s" but found "%s"'; - $expected = $this->eolChar; - $expected = str_replace("\n", '\n', $expected); - $expected = str_replace("\r", '\r', $expected); - $data = [ - $expected, - $found, - ]; - - // Errors are always reported on line 1, no matter where the first PHP tag is. - $fix = $phpcsFile->addFixableError($error, 0, 'InvalidEOLChar', $data); - - if ($fix === true) { - $tokens = $phpcsFile->getTokens(); - switch ($this->eolChar) { - case '\n': - $eolChar = "\n"; - break; - case '\r': - $eolChar = "\r"; - break; - case '\r\n': - $eolChar = "\r\n"; - break; - default: - $eolChar = $this->eolChar; - break; - } - - for ($i = 0; $i < $phpcsFile->numTokens; $i++) { - if (isset($tokens[($i + 1)]) === true - && $tokens[($i + 1)]['line'] <= $tokens[$i]['line'] - ) { - continue; - } - - // Token is the last on a line. - if (isset($tokens[$i]['orig_content']) === true) { - $tokenContent = $tokens[$i]['orig_content']; - } else { - $tokenContent = $tokens[$i]['content']; - } - - if ($tokenContent === '') { - // Special case for JS/CSS close tag. - continue; - } - - $newContent = rtrim($tokenContent, "\r\n"); - $newContent .= $eolChar; - if ($tokenContent !== $newContent) { - $phpcsFile->fixer->replaceToken($i, $newContent); - } - }//end for - }//end if - - // Ignore the rest of the file. - return $phpcsFile->numTokens; - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Files/LineLengthSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Files/LineLengthSniff.php deleted file mode 100644 index a65baf76..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Files/LineLengthSniff.php +++ /dev/null @@ -1,201 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\Files; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Tokens; - -class LineLengthSniff implements Sniff -{ - - /** - * The limit that the length of a line should not exceed. - * - * @var integer - */ - public $lineLimit = 80; - - /** - * The limit that the length of a line must not exceed. - * - * Set to zero (0) to disable. - * - * @var integer - */ - public $absoluteLineLimit = 100; - - /** - * Whether or not to ignore trailing comments. - * - * This has the effect of also ignoring all lines - * that only contain comments. - * - * @var boolean - */ - public $ignoreComments = false; - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [T_OPEN_TAG]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in - * the stack passed in $tokens. - * - * @return int - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - for ($i = 1; $i < $phpcsFile->numTokens; $i++) { - if ($tokens[$i]['column'] === 1) { - $this->checkLineLength($phpcsFile, $tokens, $i); - } - } - - $this->checkLineLength($phpcsFile, $tokens, $i); - - // Ignore the rest of the file. - return $phpcsFile->numTokens; - - }//end process() - - - /** - * Checks if a line is too long. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param array $tokens The token stack. - * @param int $stackPtr The first token on the next line. - * - * @return void - */ - protected function checkLineLength($phpcsFile, $tokens, $stackPtr) - { - // The passed token is the first on the line. - $stackPtr--; - - if ($tokens[$stackPtr]['column'] === 1 - && $tokens[$stackPtr]['length'] === 0 - ) { - // Blank line. - return; - } - - if ($tokens[$stackPtr]['column'] !== 1 - && $tokens[$stackPtr]['content'] === $phpcsFile->eolChar - ) { - $stackPtr--; - } - - $onlyComment = false; - if (isset(Tokens::$commentTokens[$tokens[$stackPtr]['code']]) === true) { - $prevNonWhiteSpace = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($stackPtr - 1), null, true); - if ($tokens[$stackPtr]['line'] !== $tokens[$prevNonWhiteSpace]['line']) { - $onlyComment = true; - } - } - - if ($onlyComment === true - && isset(Tokens::$phpcsCommentTokens[$tokens[$stackPtr]['code']]) === true - ) { - // Ignore PHPCS annotation comments that are on a line by themselves. - return; - } - - $lineLength = ($tokens[$stackPtr]['column'] + $tokens[$stackPtr]['length'] - 1); - - if ($this->ignoreComments === true - && isset(Tokens::$commentTokens[$tokens[$stackPtr]['code']]) === true - ) { - // Trailing comments are being ignored in line length calculations. - if ($onlyComment === true) { - // The comment is the only thing on the line, so no need to check length. - return; - } - - $lineLength -= $tokens[$stackPtr]['length']; - } - - // Record metrics for common line length groupings. - if ($lineLength <= 80) { - $phpcsFile->recordMetric($stackPtr, 'Line length', '80 or less'); - } else if ($lineLength <= 120) { - $phpcsFile->recordMetric($stackPtr, 'Line length', '81-120'); - } else if ($lineLength <= 150) { - $phpcsFile->recordMetric($stackPtr, 'Line length', '121-150'); - } else { - $phpcsFile->recordMetric($stackPtr, 'Line length', '151 or more'); - } - - if ($onlyComment === true) { - // If this is a long comment, check if it can be broken up onto multiple lines. - // Some comments contain unbreakable strings like URLs and so it makes sense - // to ignore the line length in these cases if the URL would be longer than the max - // line length once you indent it to the correct level. - if ($lineLength > $this->lineLimit) { - $oldLength = strlen($tokens[$stackPtr]['content']); - $newLength = strlen(ltrim($tokens[$stackPtr]['content'], "/#\t ")); - $indent = (($tokens[$stackPtr]['column'] - 1) + ($oldLength - $newLength)); - - $nonBreakingLength = $tokens[$stackPtr]['length']; - - $space = strrpos($tokens[$stackPtr]['content'], ' '); - if ($space !== false) { - $nonBreakingLength -= ($space + 1); - } - - if (($nonBreakingLength + $indent) > $this->lineLimit) { - return; - } - } - }//end if - - if ($this->absoluteLineLimit > 0 - && $lineLength > $this->absoluteLineLimit - ) { - $data = [ - $this->absoluteLineLimit, - $lineLength, - ]; - - $error = 'Line exceeds maximum limit of %s characters; contains %s characters'; - $phpcsFile->addError($error, $stackPtr, 'MaxExceeded', $data); - } else if ($lineLength > $this->lineLimit) { - $data = [ - $this->lineLimit, - $lineLength, - ]; - - $warning = 'Line exceeds %s characters; contains %s characters'; - $phpcsFile->addWarning($warning, $stackPtr, 'TooLong', $data); - } - - }//end checkLineLength() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Files/LowercasedFilenameSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Files/LowercasedFilenameSniff.php deleted file mode 100644 index 1773cb8a..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Files/LowercasedFilenameSniff.php +++ /dev/null @@ -1,70 +0,0 @@ - - * @copyright 2010-2014 Andy Grunwald - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\Files; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; - -class LowercasedFilenameSniff implements Sniff -{ - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [ - T_OPEN_TAG, - T_OPEN_TAG_WITH_ECHO, - ]; - - }//end register() - - - /** - * Processes this sniff, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in - * the stack passed in $tokens. - * - * @return int - */ - public function process(File $phpcsFile, $stackPtr) - { - $filename = $phpcsFile->getFilename(); - if ($filename === 'STDIN') { - return $phpcsFile->numTokens; - } - - $filename = basename($filename); - $lowercaseFilename = strtolower($filename); - if ($filename !== $lowercaseFilename) { - $data = [ - $filename, - $lowercaseFilename, - ]; - $error = 'Filename "%s" doesn\'t match the expected filename "%s"'; - $phpcsFile->addError($error, $stackPtr, 'NotFound', $data); - $phpcsFile->recordMetric($stackPtr, 'Lowercase filename', 'no'); - } else { - $phpcsFile->recordMetric($stackPtr, 'Lowercase filename', 'yes'); - } - - // Ignore the rest of the file. - return $phpcsFile->numTokens; - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Functions/CallTimePassByReferenceSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Functions/CallTimePassByReferenceSniff.php deleted file mode 100644 index 76c4a630..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Functions/CallTimePassByReferenceSniff.php +++ /dev/null @@ -1,141 +0,0 @@ - - * @copyright 2009-2014 Florian Grandel - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\Functions; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Tokens; - -class CallTimePassByReferenceSniff implements Sniff -{ - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [ - T_STRING, - T_VARIABLE, - T_ANON_CLASS, - T_PARENT, - T_SELF, - T_STATIC, - ]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - $findTokens = Tokens::$emptyTokens; - $findTokens[] = T_BITWISE_AND; - - $prev = $phpcsFile->findPrevious($findTokens, ($stackPtr - 1), null, true); - - // Skip tokens that are the names of functions - // within their definitions. For example: function myFunction... - // "myFunction" is T_STRING but we should skip because it is not a - // function or method *call*. - $prevCode = $tokens[$prev]['code']; - if ($prevCode === T_FUNCTION) { - return; - } - - // If the next non-whitespace token after the function or method call - // is not an opening parenthesis then it cant really be a *call*. - $functionName = $stackPtr; - $openBracket = $phpcsFile->findNext( - Tokens::$emptyTokens, - ($functionName + 1), - null, - true - ); - - if ($openBracket === false || $tokens[$openBracket]['code'] !== T_OPEN_PARENTHESIS) { - return; - } - - if (isset($tokens[$openBracket]['parenthesis_closer']) === false) { - return; - } - - $closeBracket = $tokens[$openBracket]['parenthesis_closer']; - - $nextSeparator = $openBracket; - $find = [ - T_VARIABLE, - T_OPEN_SHORT_ARRAY, - ]; - - while (($nextSeparator = $phpcsFile->findNext($find, ($nextSeparator + 1), $closeBracket)) !== false) { - if ($tokens[$nextSeparator]['code'] === T_OPEN_SHORT_ARRAY) { - $nextSeparator = $tokens[$nextSeparator]['bracket_closer']; - continue; - } - - // Make sure the variable belongs directly to this function call - // and is not inside a nested function call or array. - $brackets = $tokens[$nextSeparator]['nested_parenthesis']; - $lastBracket = array_pop($brackets); - if ($lastBracket !== $closeBracket) { - continue; - } - - $tokenBefore = $phpcsFile->findPrevious( - Tokens::$emptyTokens, - ($nextSeparator - 1), - null, - true - ); - - if ($tokens[$tokenBefore]['code'] === T_BITWISE_AND) { - if ($phpcsFile->isReference($tokenBefore) === false) { - continue; - } - - // We also want to ignore references used in assignment - // operations passed as function arguments, but isReference() - // sees them as valid references (which they are). - $tokenBefore = $phpcsFile->findPrevious( - Tokens::$emptyTokens, - ($tokenBefore - 1), - null, - true - ); - - if (isset(Tokens::$assignmentTokens[$tokens[$tokenBefore]['code']]) === true) { - continue; - } - - // T_BITWISE_AND represents a pass-by-reference. - $error = 'Call-time pass-by-reference calls are prohibited'; - $phpcsFile->addError($error, $tokenBefore, 'NotAllowed'); - }//end if - }//end while - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Functions/FunctionCallArgumentSpacingSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Functions/FunctionCallArgumentSpacingSniff.php deleted file mode 100644 index bf93c553..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Functions/FunctionCallArgumentSpacingSniff.php +++ /dev/null @@ -1,197 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\Functions; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Tokens; - -class FunctionCallArgumentSpacingSniff implements Sniff -{ - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return[ - T_STRING, - T_ISSET, - T_UNSET, - T_SELF, - T_STATIC, - T_PARENT, - T_VARIABLE, - T_CLOSE_CURLY_BRACKET, - T_CLOSE_PARENTHESIS, - ]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in the - * stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - // Skip tokens that are the names of functions or classes - // within their definitions. For example: - // function myFunction... - // "myFunction" is T_STRING but we should skip because it is not a - // function or method *call*. - $functionName = $stackPtr; - $ignoreTokens = Tokens::$emptyTokens; - $ignoreTokens[] = T_BITWISE_AND; - $functionKeyword = $phpcsFile->findPrevious($ignoreTokens, ($stackPtr - 1), null, true); - if ($tokens[$functionKeyword]['code'] === T_FUNCTION || $tokens[$functionKeyword]['code'] === T_CLASS) { - return; - } - - if ($tokens[$stackPtr]['code'] === T_CLOSE_CURLY_BRACKET - && isset($tokens[$stackPtr]['scope_condition']) === true - ) { - // Not a function call. - return; - } - - // If the next non-whitespace token after the function or method call - // is not an opening parenthesis then it can't really be a *call*. - $openBracket = $phpcsFile->findNext(Tokens::$emptyTokens, ($functionName + 1), null, true); - if ($tokens[$openBracket]['code'] !== T_OPEN_PARENTHESIS) { - return; - } - - if (isset($tokens[$openBracket]['parenthesis_closer']) === false) { - return; - } - - $this->checkSpacing($phpcsFile, $stackPtr, $openBracket); - - }//end process() - - - /** - * Checks the spacing around commas. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in the - * stack passed in $tokens. - * @param int $openBracket The position of the opening bracket - * in the stack passed in $tokens. - * - * @return void - */ - public function checkSpacing(File $phpcsFile, $stackPtr, $openBracket) - { - $tokens = $phpcsFile->getTokens(); - - $closeBracket = $tokens[$openBracket]['parenthesis_closer']; - $nextSeparator = $openBracket; - - $find = [ - T_COMMA, - T_CLOSURE, - T_FN, - T_ANON_CLASS, - T_OPEN_SHORT_ARRAY, - T_MATCH, - ]; - - while (($nextSeparator = $phpcsFile->findNext($find, ($nextSeparator + 1), $closeBracket)) !== false) { - if ($tokens[$nextSeparator]['code'] === T_CLOSURE - || $tokens[$nextSeparator]['code'] === T_ANON_CLASS - || $tokens[$nextSeparator]['code'] === T_MATCH - ) { - // Skip closures, anon class declarations and match control structures. - $nextSeparator = $tokens[$nextSeparator]['scope_closer']; - continue; - } else if ($tokens[$nextSeparator]['code'] === T_FN) { - // Skip arrow functions, but don't skip the arrow function closer as it is likely to - // be the comma separating it from the next function call argument (or the parenthesis closer). - $nextSeparator = ($tokens[$nextSeparator]['scope_closer'] - 1); - continue; - } else if ($tokens[$nextSeparator]['code'] === T_OPEN_SHORT_ARRAY) { - // Skips arrays using short notation. - $nextSeparator = $tokens[$nextSeparator]['bracket_closer']; - continue; - } - - // Make sure the comma or variable belongs directly to this function call, - // and is not inside a nested function call or array. - $brackets = $tokens[$nextSeparator]['nested_parenthesis']; - $lastBracket = array_pop($brackets); - if ($lastBracket !== $closeBracket) { - continue; - } - - if ($tokens[$nextSeparator]['code'] === T_COMMA) { - if ($tokens[($nextSeparator - 1)]['code'] === T_WHITESPACE) { - $prev = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($nextSeparator - 2), null, true); - if (isset(Tokens::$heredocTokens[$tokens[$prev]['code']]) === false) { - $error = 'Space found before comma in argument list'; - $fix = $phpcsFile->addFixableError($error, $nextSeparator, 'SpaceBeforeComma'); - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - - if ($tokens[$prev]['line'] !== $tokens[$nextSeparator]['line']) { - $phpcsFile->fixer->addContent($prev, ','); - $phpcsFile->fixer->replaceToken($nextSeparator, ''); - } else { - $phpcsFile->fixer->replaceToken(($nextSeparator - 1), ''); - } - - $phpcsFile->fixer->endChangeset(); - } - }//end if - }//end if - - if ($tokens[($nextSeparator + 1)]['code'] !== T_WHITESPACE) { - // Ignore trailing comma's after last argument as that's outside the scope of this sniff. - if (($nextSeparator + 1) !== $closeBracket) { - $error = 'No space found after comma in argument list'; - $fix = $phpcsFile->addFixableError($error, $nextSeparator, 'NoSpaceAfterComma'); - if ($fix === true) { - $phpcsFile->fixer->addContent($nextSeparator, ' '); - } - } - } else { - // If there is a newline in the space, then they must be formatting - // each argument on a newline, which is valid, so ignore it. - $next = $phpcsFile->findNext(Tokens::$emptyTokens, ($nextSeparator + 1), null, true); - if ($tokens[$next]['line'] === $tokens[$nextSeparator]['line']) { - $space = $tokens[($nextSeparator + 1)]['length']; - if ($space > 1) { - $error = 'Expected 1 space after comma in argument list; %s found'; - $data = [$space]; - $fix = $phpcsFile->addFixableError($error, $nextSeparator, 'TooMuchSpaceAfterComma', $data); - if ($fix === true) { - $phpcsFile->fixer->replaceToken(($nextSeparator + 1), ' '); - } - } - } - }//end if - }//end if - }//end while - - }//end checkSpacing() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Functions/OpeningFunctionBraceKernighanRitchieSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Functions/OpeningFunctionBraceKernighanRitchieSniff.php deleted file mode 100644 index d5a84982..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Functions/OpeningFunctionBraceKernighanRitchieSniff.php +++ /dev/null @@ -1,177 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\Functions; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Tokens; - -class OpeningFunctionBraceKernighanRitchieSniff implements Sniff -{ - - /** - * Should this sniff check function braces? - * - * @var boolean - */ - public $checkFunctions = true; - - /** - * Should this sniff check closure braces? - * - * @var boolean - */ - public $checkClosures = false; - - - /** - * Registers the tokens that this sniff wants to listen for. - * - * @return array - */ - public function register() - { - return [ - T_FUNCTION, - T_CLOSURE, - ]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in the - * stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - if (isset($tokens[$stackPtr]['scope_opener']) === false) { - return; - } - - if (($tokens[$stackPtr]['code'] === T_FUNCTION - && (bool) $this->checkFunctions === false) - || ($tokens[$stackPtr]['code'] === T_CLOSURE - && (bool) $this->checkClosures === false) - ) { - return; - } - - $openingBrace = $tokens[$stackPtr]['scope_opener']; - - // Find the end of the function declaration. - $prev = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($openingBrace - 1), null, true); - - $functionLine = $tokens[$prev]['line']; - $braceLine = $tokens[$openingBrace]['line']; - - $lineDifference = ($braceLine - $functionLine); - - $metricType = 'Function'; - if ($tokens[$stackPtr]['code'] === T_CLOSURE) { - $metricType = 'Closure'; - } - - if ($lineDifference > 0) { - $phpcsFile->recordMetric($stackPtr, "$metricType opening brace placement", 'new line'); - $error = 'Opening brace should be on the same line as the declaration'; - $fix = $phpcsFile->addFixableError($error, $openingBrace, 'BraceOnNewLine'); - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - $phpcsFile->fixer->addContent($prev, ' {'); - $phpcsFile->fixer->replaceToken($openingBrace, ''); - if ($tokens[($openingBrace + 1)]['code'] === T_WHITESPACE - && $tokens[($openingBrace + 2)]['line'] > $tokens[$openingBrace]['line'] - ) { - // Brace is followed by a new line, so remove it to ensure we don't - // leave behind a blank line at the top of the block. - $phpcsFile->fixer->replaceToken(($openingBrace + 1), ''); - - if ($tokens[($openingBrace - 1)]['code'] === T_WHITESPACE - && $tokens[($openingBrace - 1)]['line'] === $tokens[$openingBrace]['line'] - && $tokens[($openingBrace - 2)]['line'] < $tokens[$openingBrace]['line'] - ) { - // Brace is preceded by indent, so remove it to ensure we don't - // leave behind more indent than is required for the first line. - $phpcsFile->fixer->replaceToken(($openingBrace - 1), ''); - } - } - - $phpcsFile->fixer->endChangeset(); - }//end if - } else { - $phpcsFile->recordMetric($stackPtr, "$metricType opening brace placement", 'same line'); - }//end if - - $ignore = Tokens::$phpcsCommentTokens; - $ignore[] = T_WHITESPACE; - $next = $phpcsFile->findNext($ignore, ($openingBrace + 1), null, true); - if ($tokens[$next]['line'] === $tokens[$openingBrace]['line']) { - // Only throw this error when this is not an empty function. - if ($next !== $tokens[$stackPtr]['scope_closer'] - && $tokens[$next]['code'] !== T_CLOSE_TAG - ) { - $error = 'Opening brace must be the last content on the line'; - $fix = $phpcsFile->addFixableError($error, $openingBrace, 'ContentAfterBrace'); - if ($fix === true) { - $phpcsFile->fixer->addNewline($openingBrace); - } - } - } - - // Only continue checking if the opening brace looks good. - if ($lineDifference > 0) { - return; - } - - // Enforce a single space. Tabs not allowed. - $spacing = $tokens[($openingBrace - 1)]['content']; - if ($tokens[($openingBrace - 1)]['code'] !== T_WHITESPACE) { - $length = 0; - } else if ($spacing === "\t") { - // Tab without tab-width set, so no tab replacement has taken place. - $length = '\t'; - } else { - $length = strlen($spacing); - } - - // If tab replacement is on, avoid confusing the user with a "expected 1 space, found 1" - // message when the "1" found is actually a tab, not a space. - if ($length === 1 - && isset($tokens[($openingBrace - 1)]['orig_content']) === true - && $tokens[($openingBrace - 1)]['orig_content'] === "\t" - ) { - $length = '\t'; - } - - if ($length !== 1) { - $error = 'Expected 1 space before opening brace; found %s'; - $data = [$length]; - $fix = $phpcsFile->addFixableError($error, $openingBrace, 'SpaceBeforeBrace', $data); - if ($fix === true) { - if ($length === 0) { - $phpcsFile->fixer->addContentBefore($openingBrace, ' '); - } else { - $phpcsFile->fixer->replaceToken(($openingBrace - 1), ' '); - } - } - } - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Metrics/CyclomaticComplexitySniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Metrics/CyclomaticComplexitySniff.php deleted file mode 100644 index a6b17d13..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Metrics/CyclomaticComplexitySniff.php +++ /dev/null @@ -1,117 +0,0 @@ - - * @author Greg Sherwood - * @copyright 2007-2014 Mayflower GmbH - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\Metrics; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; - -class CyclomaticComplexitySniff implements Sniff -{ - - /** - * A complexity higher than this value will throw a warning. - * - * @var integer - */ - public $complexity = 10; - - /** - * A complexity higher than this value will throw an error. - * - * @var integer - */ - public $absoluteComplexity = 20; - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [T_FUNCTION]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - // Ignore abstract and interface methods. Bail early when live coding. - if (isset($tokens[$stackPtr]['scope_opener'], $tokens[$stackPtr]['scope_closer']) === false) { - return; - } - - // Detect start and end of this function definition. - $start = $tokens[$stackPtr]['scope_opener']; - $end = $tokens[$stackPtr]['scope_closer']; - - // Predicate nodes for PHP. - $find = [ - T_CASE => true, - T_DEFAULT => true, - T_CATCH => true, - T_IF => true, - T_FOR => true, - T_FOREACH => true, - T_WHILE => true, - T_ELSEIF => true, - T_INLINE_THEN => true, - T_COALESCE => true, - T_COALESCE_EQUAL => true, - T_MATCH_ARROW => true, - T_NULLSAFE_OBJECT_OPERATOR => true, - ]; - - $complexity = 1; - - // Iterate from start to end and count predicate nodes. - for ($i = ($start + 1); $i < $end; $i++) { - if (isset($find[$tokens[$i]['code']]) === true) { - $complexity++; - } - } - - if ($complexity > $this->absoluteComplexity) { - $error = 'Function\'s cyclomatic complexity (%s) exceeds allowed maximum of %s'; - $data = [ - $complexity, - $this->absoluteComplexity, - ]; - $phpcsFile->addError($error, $stackPtr, 'MaxExceeded', $data); - } else if ($complexity > $this->complexity) { - $warning = 'Function\'s cyclomatic complexity (%s) exceeds %s; consider refactoring the function'; - $data = [ - $complexity, - $this->complexity, - ]; - $phpcsFile->addWarning($warning, $stackPtr, 'TooHigh', $data); - } - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Metrics/NestingLevelSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Metrics/NestingLevelSniff.php deleted file mode 100644 index d2672b5e..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Metrics/NestingLevelSniff.php +++ /dev/null @@ -1,100 +0,0 @@ - - * @author Greg Sherwood - * @copyright 2007-2014 Mayflower GmbH - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\Metrics; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; - -class NestingLevelSniff implements Sniff -{ - - /** - * A nesting level higher than this value will throw a warning. - * - * @var integer - */ - public $nestingLevel = 5; - - /** - * A nesting level higher than this value will throw an error. - * - * @var integer - */ - public $absoluteNestingLevel = 10; - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [T_FUNCTION]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - // Ignore abstract and interface methods. Bail early when live coding. - if (isset($tokens[$stackPtr]['scope_opener'], $tokens[$stackPtr]['scope_closer']) === false) { - return; - } - - // Detect start and end of this function definition. - $start = $tokens[$stackPtr]['scope_opener']; - $end = $tokens[$stackPtr]['scope_closer']; - - $nestingLevel = 0; - - // Find the maximum nesting level of any token in the function. - for ($i = ($start + 1); $i < $end; $i++) { - $level = $tokens[$i]['level']; - if ($nestingLevel < $level) { - $nestingLevel = $level; - } - } - - // We subtract the nesting level of the function itself. - $nestingLevel = ($nestingLevel - $tokens[$stackPtr]['level'] - 1); - - if ($nestingLevel > $this->absoluteNestingLevel) { - $error = 'Function\'s nesting level (%s) exceeds allowed maximum of %s'; - $data = [ - $nestingLevel, - $this->absoluteNestingLevel, - ]; - $phpcsFile->addError($error, $stackPtr, 'MaxExceeded', $data); - } else if ($nestingLevel > $this->nestingLevel) { - $warning = 'Function\'s nesting level (%s) exceeds %s; consider refactoring the function'; - $data = [ - $nestingLevel, - $this->nestingLevel, - ]; - $phpcsFile->addWarning($warning, $stackPtr, 'TooHigh', $data); - } - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/NamingConventions/AbstractClassNamePrefixSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/NamingConventions/AbstractClassNamePrefixSniff.php deleted file mode 100644 index 44c16390..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/NamingConventions/AbstractClassNamePrefixSniff.php +++ /dev/null @@ -1,60 +0,0 @@ - - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\NamingConventions; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; - -class AbstractClassNamePrefixSniff implements Sniff -{ - - - /** - * Registers the tokens that this sniff wants to listen for. - * - * @return array - */ - public function register() - { - return [T_CLASS]; - - }//end register() - - - /** - * Processes this sniff, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - if ($phpcsFile->getClassProperties($stackPtr)['is_abstract'] === false) { - // This class is not abstract so we don't need to check it. - return; - } - - $className = $phpcsFile->getDeclarationName($stackPtr); - if ($className === null) { - // Live coding or parse error. - return; - } - - $prefix = substr($className, 0, 8); - if (strtolower($prefix) !== 'abstract') { - $phpcsFile->addError('Abstract class names must be prefixed with "Abstract"; found "%s"', $stackPtr, 'Missing', [$className]); - } - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/NamingConventions/CamelCapsFunctionNameSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/NamingConventions/CamelCapsFunctionNameSniff.php deleted file mode 100644 index d596f174..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/NamingConventions/CamelCapsFunctionNameSniff.php +++ /dev/null @@ -1,222 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\NamingConventions; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\AbstractScopeSniff; -use PHP_CodeSniffer\Util\Common; -use PHP_CodeSniffer\Util\Tokens; - -class CamelCapsFunctionNameSniff extends AbstractScopeSniff -{ - - /** - * A list of all PHP magic methods. - * - * @var array - */ - protected $magicMethods = [ - 'construct' => true, - 'destruct' => true, - 'call' => true, - 'callstatic' => true, - 'get' => true, - 'set' => true, - 'isset' => true, - 'unset' => true, - 'sleep' => true, - 'wakeup' => true, - 'serialize' => true, - 'unserialize' => true, - 'tostring' => true, - 'invoke' => true, - 'set_state' => true, - 'clone' => true, - 'debuginfo' => true, - ]; - - /** - * A list of all PHP non-magic methods starting with a double underscore. - * - * These come from PHP modules such as SOAPClient. - * - * @var array - */ - protected $methodsDoubleUnderscore = [ - 'dorequest' => true, - 'getcookies' => true, - 'getfunctions' => true, - 'getlastrequest' => true, - 'getlastrequestheaders' => true, - 'getlastresponse' => true, - 'getlastresponseheaders' => true, - 'gettypes' => true, - 'setcookie' => true, - 'setlocation' => true, - 'setsoapheaders' => true, - 'soapcall' => true, - ]; - - /** - * A list of all PHP magic functions. - * - * @var array - */ - protected $magicFunctions = ['autoload' => true]; - - /** - * If TRUE, the string must not have two capital letters next to each other. - * - * @var boolean - */ - public $strict = true; - - - /** - * Constructs a Generic_Sniffs_NamingConventions_CamelCapsFunctionNameSniff. - */ - public function __construct() - { - parent::__construct(Tokens::$ooScopeTokens, [T_FUNCTION], true); - - }//end __construct() - - - /** - * Processes the tokens within the scope. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being processed. - * @param int $stackPtr The position where this token was - * found. - * @param int $currScope The position of the current scope. - * - * @return void - */ - protected function processTokenWithinScope(File $phpcsFile, $stackPtr, $currScope) - { - $tokens = $phpcsFile->getTokens(); - - // Determine if this is a function which needs to be examined. - $conditions = $tokens[$stackPtr]['conditions']; - end($conditions); - $deepestScope = key($conditions); - if ($deepestScope !== $currScope) { - return; - } - - $methodName = $phpcsFile->getDeclarationName($stackPtr); - if ($methodName === null) { - // Live coding or parse error. Bow out. - return; - } - - $className = $phpcsFile->getDeclarationName($currScope); - if (isset($className) === false) { - $className = '[Anonymous Class]'; - } - - $errorData = [$className.'::'.$methodName]; - - $methodNameLc = strtolower($methodName); - $classNameLc = strtolower($className); - - // Is this a magic method. i.e., is prefixed with "__" ? - if (preg_match('|^__[^_]|', $methodName) !== 0) { - $magicPart = substr($methodNameLc, 2); - if (isset($this->magicMethods[$magicPart]) === true - || isset($this->methodsDoubleUnderscore[$magicPart]) === true - ) { - return; - } - - $error = 'Method name "%s" is invalid; only PHP magic methods should be prefixed with a double underscore'; - $phpcsFile->addError($error, $stackPtr, 'MethodDoubleUnderscore', $errorData); - } - - // PHP4 constructors are allowed to break our rules. - if ($methodNameLc === $classNameLc) { - return; - } - - // PHP4 destructors are allowed to break our rules. - if ($methodNameLc === '_'.$classNameLc) { - return; - } - - // Ignore leading underscores in the method name. - $methodName = ltrim($methodName, '_'); - - $methodProps = $phpcsFile->getMethodProperties($stackPtr); - if (Common::isCamelCaps($methodName, false, true, $this->strict) === false) { - if ($methodProps['scope_specified'] === true) { - $error = '%s method name "%s" is not in camel caps format'; - $data = [ - ucfirst($methodProps['scope']), - $errorData[0], - ]; - $phpcsFile->addError($error, $stackPtr, 'ScopeNotCamelCaps', $data); - } else { - $error = 'Method name "%s" is not in camel caps format'; - $phpcsFile->addError($error, $stackPtr, 'NotCamelCaps', $errorData); - } - - $phpcsFile->recordMetric($stackPtr, 'CamelCase method name', 'no'); - } else { - $phpcsFile->recordMetric($stackPtr, 'CamelCase method name', 'yes'); - } - - }//end processTokenWithinScope() - - - /** - * Processes the tokens outside the scope. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being processed. - * @param int $stackPtr The position where this token was - * found. - * - * @return void - */ - protected function processTokenOutsideScope(File $phpcsFile, $stackPtr) - { - $functionName = $phpcsFile->getDeclarationName($stackPtr); - if ($functionName === null) { - // Live coding or parse error. Bow out. - return; - } - - $errorData = [$functionName]; - - // Is this a magic function. i.e., it is prefixed with "__". - if (preg_match('|^__[^_]|', $functionName) !== 0) { - $magicPart = strtolower(substr($functionName, 2)); - if (isset($this->magicFunctions[$magicPart]) === true) { - return; - } - - $error = 'Function name "%s" is invalid; only PHP magic methods should be prefixed with a double underscore'; - $phpcsFile->addError($error, $stackPtr, 'FunctionDoubleUnderscore', $errorData); - } - - // Ignore leading underscores in the method name. - $functionName = ltrim($functionName, '_'); - - if (Common::isCamelCaps($functionName, false, true, $this->strict) === false) { - $error = 'Function name "%s" is not in camel caps format'; - $phpcsFile->addError($error, $stackPtr, 'NotCamelCaps', $errorData); - $phpcsFile->recordMetric($stackPtr, 'CamelCase function name', 'no'); - } else { - $phpcsFile->recordMetric($stackPtr, 'CamelCase method name', 'yes'); - } - - }//end processTokenOutsideScope() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/NamingConventions/ConstructorNameSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/NamingConventions/ConstructorNameSniff.php deleted file mode 100644 index 48e7659e..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/NamingConventions/ConstructorNameSniff.php +++ /dev/null @@ -1,178 +0,0 @@ - - * @author Leif Wickland - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\NamingConventions; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\AbstractScopeSniff; -use PHP_CodeSniffer\Util\Tokens; - -class ConstructorNameSniff extends AbstractScopeSniff -{ - - /** - * The name of the class we are currently checking. - * - * @var string - */ - private $currentClass = ''; - - /** - * A list of functions in the current class. - * - * @var string[] - */ - private $functionList = []; - - - /** - * Constructs the test with the tokens it wishes to listen for. - */ - public function __construct() - { - parent::__construct([T_CLASS, T_ANON_CLASS], [T_FUNCTION], true); - - }//end __construct() - - - /** - * Processes this test when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The current file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * @param int $currScope A pointer to the start of the scope. - * - * @return void - */ - protected function processTokenWithinScope(File $phpcsFile, $stackPtr, $currScope) - { - $tokens = $phpcsFile->getTokens(); - - // Determine if this is a function which needs to be examined. - $conditions = $tokens[$stackPtr]['conditions']; - end($conditions); - $deepestScope = key($conditions); - if ($deepestScope !== $currScope) { - return; - } - - $className = $phpcsFile->getDeclarationName($currScope); - if (empty($className) === false) { - // Not an anonymous class. - $className = strtolower($className); - } - - if ($className !== $this->currentClass) { - $this->loadFunctionNamesInScope($phpcsFile, $currScope); - $this->currentClass = $className; - } - - $methodName = strtolower($phpcsFile->getDeclarationName($stackPtr)); - - if ($methodName === $className) { - if (in_array('__construct', $this->functionList, true) === false) { - $error = 'PHP4 style constructors are not allowed; use "__construct()" instead'; - $phpcsFile->addError($error, $stackPtr, 'OldStyle'); - } - } else if ($methodName !== '__construct') { - // Not a constructor. - return; - } - - // Stop if the constructor doesn't have a body, like when it is abstract. - if (isset($tokens[$stackPtr]['scope_opener'], $tokens[$stackPtr]['scope_closer']) === false) { - return; - } - - $parentClassName = $phpcsFile->findExtendedClassName($currScope); - if ($parentClassName === false) { - return; - } - - $parentClassNameLc = strtolower($parentClassName); - - $endFunctionIndex = $tokens[$stackPtr]['scope_closer']; - $startIndex = $tokens[$stackPtr]['scope_opener']; - while (($doubleColonIndex = $phpcsFile->findNext(T_DOUBLE_COLON, ($startIndex + 1), $endFunctionIndex)) !== false) { - $nextNonEmpty = $phpcsFile->findNext(Tokens::$emptyTokens, ($doubleColonIndex + 1), null, true); - if ($tokens[$nextNonEmpty]['code'] !== T_STRING - || strtolower($tokens[$nextNonEmpty]['content']) !== $parentClassNameLc - ) { - $startIndex = $nextNonEmpty; - continue; - } - - $prevNonEmpty = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($doubleColonIndex - 1), null, true); - if ($tokens[$prevNonEmpty]['code'] === T_PARENT - || $tokens[$prevNonEmpty]['code'] === T_SELF - || $tokens[$prevNonEmpty]['code'] === T_STATIC - || ($tokens[$prevNonEmpty]['code'] === T_STRING - && strtolower($tokens[$prevNonEmpty]['content']) === $parentClassNameLc) - ) { - $error = 'PHP4 style calls to parent constructors are not allowed; use "parent::__construct()" instead'; - $phpcsFile->addError($error, $nextNonEmpty, 'OldStyleCall'); - } - - $startIndex = $nextNonEmpty; - }//end while - - }//end processTokenWithinScope() - - - /** - * Processes a token that is found within the scope that this test is - * listening to. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file where this token was found. - * @param int $stackPtr The position in the stack where this - * token was found. - * - * @return void - */ - protected function processTokenOutsideScope(File $phpcsFile, $stackPtr) - { - - }//end processTokenOutsideScope() - - - /** - * Extracts all the function names found in the given scope. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The current file being scanned. - * @param int $currScope A pointer to the start of the scope. - * - * @return void - */ - protected function loadFunctionNamesInScope(File $phpcsFile, $currScope) - { - $this->functionList = []; - $tokens = $phpcsFile->getTokens(); - - for ($i = ($tokens[$currScope]['scope_opener'] + 1); $i < $tokens[$currScope]['scope_closer']; $i++) { - if ($tokens[$i]['code'] !== T_FUNCTION) { - continue; - } - - $this->functionList[] = trim(strtolower($phpcsFile->getDeclarationName($i))); - - if (isset($tokens[$i]['scope_closer']) !== false) { - // Skip past nested functions and such. - $i = $tokens[$i]['scope_closer']; - } - } - - }//end loadFunctionNamesInScope() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/NamingConventions/InterfaceNameSuffixSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/NamingConventions/InterfaceNameSuffixSniff.php deleted file mode 100644 index 6dfad6b4..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/NamingConventions/InterfaceNameSuffixSniff.php +++ /dev/null @@ -1,55 +0,0 @@ - - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\NamingConventions; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; - -class InterfaceNameSuffixSniff implements Sniff -{ - - - /** - * Registers the tokens that this sniff wants to listen for. - * - * @return array - */ - public function register() - { - return [T_INTERFACE]; - - }//end register() - - - /** - * Processes this sniff, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - $interfaceName = $phpcsFile->getDeclarationName($stackPtr); - if ($interfaceName === null) { - // Live coding or parse error. Bow out. - return; - } - - $suffix = substr($interfaceName, -9); - if (strtolower($suffix) !== 'interface') { - $phpcsFile->addError('Interface names must be suffixed with "Interface"; found "%s"', $stackPtr, 'Missing', [$interfaceName]); - } - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/NamingConventions/TraitNameSuffixSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/NamingConventions/TraitNameSuffixSniff.php deleted file mode 100644 index 79a77557..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/NamingConventions/TraitNameSuffixSniff.php +++ /dev/null @@ -1,55 +0,0 @@ - - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\NamingConventions; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; - -class TraitNameSuffixSniff implements Sniff -{ - - - /** - * Registers the tokens that this sniff wants to listen for. - * - * @return array - */ - public function register() - { - return [T_TRAIT]; - - }//end register() - - - /** - * Processes this sniff, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - $traitName = $phpcsFile->getDeclarationName($stackPtr); - if ($traitName === null) { - // Live coding or parse error. Bow out. - return; - } - - $suffix = substr($traitName, -5); - if (strtolower($suffix) !== 'trait') { - $phpcsFile->addError('Trait names must be suffixed with "Trait"; found "%s"', $stackPtr, 'Missing', [$traitName]); - } - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/NamingConventions/UpperCaseConstantNameSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/NamingConventions/UpperCaseConstantNameSniff.php deleted file mode 100644 index 259fa296..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/NamingConventions/UpperCaseConstantNameSniff.php +++ /dev/null @@ -1,151 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\NamingConventions; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Tokens; - -class UpperCaseConstantNameSniff implements Sniff -{ - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [ - T_STRING, - T_CONST, - ]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in the - * stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - if ($tokens[$stackPtr]['code'] === T_CONST) { - // This is a constant declared with the "const" keyword. - // This may be an OO constant, in which case it could be typed, so we need to - // jump over a potential type to get to the name. - $assignmentOperator = $phpcsFile->findNext([T_EQUAL, T_SEMICOLON], ($stackPtr + 1)); - if ($assignmentOperator === false || $tokens[$assignmentOperator]['code'] !== T_EQUAL) { - // Parse error/live coding. Nothing to do. Rest of loop is moot. - return; - } - - $constant = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($assignmentOperator - 1), ($stackPtr + 1), true); - if ($constant === false) { - return; - } - - $constName = $tokens[$constant]['content']; - - if (strtoupper($constName) !== $constName) { - if (strtolower($constName) === $constName) { - $phpcsFile->recordMetric($constant, 'Constant name case', 'lower'); - } else { - $phpcsFile->recordMetric($constant, 'Constant name case', 'mixed'); - } - - $error = 'Class constants must be uppercase; expected %s but found %s'; - $data = [ - strtoupper($constName), - $constName, - ]; - $phpcsFile->addError($error, $constant, 'ClassConstantNotUpperCase', $data); - } else { - $phpcsFile->recordMetric($constant, 'Constant name case', 'upper'); - } - - return; - }//end if - - // Only interested in define statements now. - if (strtolower($tokens[$stackPtr]['content']) !== 'define') { - return; - } - - // Make sure this is not a method call or class instantiation. - $prev = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($stackPtr - 1), null, true); - if ($tokens[$prev]['code'] === T_OBJECT_OPERATOR - || $tokens[$prev]['code'] === T_DOUBLE_COLON - || $tokens[$prev]['code'] === T_NULLSAFE_OBJECT_OPERATOR - || $tokens[$prev]['code'] === T_NEW - ) { - return; - } - - // Make sure this is not an attribute. - if (empty($tokens[$stackPtr]['nested_attributes']) === false) { - return; - } - - // If the next non-whitespace token after this token - // is not an opening parenthesis then it is not a function call. - $openBracket = $phpcsFile->findNext(Tokens::$emptyTokens, ($stackPtr + 1), null, true); - if ($openBracket === false || $tokens[$openBracket]['code'] !== T_OPEN_PARENTHESIS) { - return; - } - - // Bow out if next non-empty token after the opening parenthesis is not a string (the - // constant name). This could happen when live coding, if the constant is a variable or an - // expression, or if handling a first-class callable or a function definition outside the - // global scope. - $constPtr = $phpcsFile->findNext(Tokens::$emptyTokens, ($openBracket + 1), null, true); - if ($constPtr === false || $tokens[$constPtr]['code'] !== T_CONSTANT_ENCAPSED_STRING) { - return; - } - - $constName = $tokens[$constPtr]['content']; - $prefix = ''; - - // Strip namespace from constant like /foo/bar/CONSTANT. - $splitPos = strrpos($constName, '\\'); - if ($splitPos !== false) { - $prefix = substr($constName, 0, ($splitPos + 1)); - $constName = substr($constName, ($splitPos + 1)); - } - - if (strtoupper($constName) !== $constName) { - if (strtolower($constName) === $constName) { - $phpcsFile->recordMetric($constPtr, 'Constant name case', 'lower'); - } else { - $phpcsFile->recordMetric($constPtr, 'Constant name case', 'mixed'); - } - - $error = 'Constants must be uppercase; expected %s but found %s'; - $data = [ - $prefix.strtoupper($constName), - $prefix.$constName, - ]; - $phpcsFile->addError($error, $constPtr, 'ConstantNotUpperCase', $data); - } else { - $phpcsFile->recordMetric($constPtr, 'Constant name case', 'upper'); - } - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/PHP/CharacterBeforePHPOpeningTagSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/PHP/CharacterBeforePHPOpeningTagSniff.php deleted file mode 100644 index 61ff4f2f..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/PHP/CharacterBeforePHPOpeningTagSniff.php +++ /dev/null @@ -1,86 +0,0 @@ - - * @copyright 2010-2014 Andy Grunwald - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\PHP; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; - -class CharacterBeforePHPOpeningTagSniff implements Sniff -{ - - /** - * List of supported BOM definitions. - * - * Use encoding names as keys and hex BOM representations as values. - * - * @var array - */ - protected $bomDefinitions = [ - 'UTF-8' => 'efbbbf', - 'UTF-16 (BE)' => 'feff', - 'UTF-16 (LE)' => 'fffe', - ]; - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [T_OPEN_TAG]; - - }//end register() - - - /** - * Processes this sniff, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in - * the stack passed in $tokens. - * - * @return int - */ - public function process(File $phpcsFile, $stackPtr) - { - $expected = 0; - if ($stackPtr > 0) { - // Allow a byte-order mark. - $tokens = $phpcsFile->getTokens(); - foreach ($this->bomDefinitions as $expectedBomHex) { - $bomByteLength = (strlen($expectedBomHex) / 2); - $htmlBomHex = bin2hex(substr($tokens[0]['content'], 0, $bomByteLength)); - if ($htmlBomHex === $expectedBomHex) { - $expected++; - break; - } - } - - // Allow a shebang line. - if (substr($tokens[0]['content'], 0, 2) === '#!') { - $expected++; - } - } - - if ($stackPtr !== $expected) { - $error = 'The opening PHP tag must be the first content in the file'; - $phpcsFile->addError($error, $stackPtr, 'Found'); - } - - // Skip the rest of the file so we don't pick up additional - // open tags, typically embedded in HTML. - return $phpcsFile->numTokens; - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/PHP/DeprecatedFunctionsSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/PHP/DeprecatedFunctionsSniff.php deleted file mode 100644 index 44efd53a..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/PHP/DeprecatedFunctionsSniff.php +++ /dev/null @@ -1,75 +0,0 @@ - - * @author Greg Sherwood - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\PHP; - -use ReflectionFunction; - -class DeprecatedFunctionsSniff extends ForbiddenFunctionsSniff -{ - - /** - * A list of forbidden functions with their alternatives. - * - * The value is NULL if no alternative exists. IE, the - * function should just not be used. - * - * @var array - */ - public $forbiddenFunctions = []; - - - /** - * Constructor. - * - * Uses the Reflection API to get a list of deprecated functions. - */ - public function __construct() - { - $functions = get_defined_functions(); - - foreach ($functions['internal'] as $functionName) { - $function = new ReflectionFunction($functionName); - - if ($function->isDeprecated() === true) { - $this->forbiddenFunctions[$functionName] = null; - } - } - - }//end __construct() - - - /** - * Generates the error or warning for this sniff. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the forbidden function - * in the token array. - * @param string $function The name of the forbidden function. - * @param string $pattern The pattern used for the match. - * - * @return void - */ - protected function addError($phpcsFile, $stackPtr, $function, $pattern=null) - { - $data = [$function]; - $error = 'Function %s() has been deprecated'; - $type = 'Deprecated'; - - if ($this->error === true) { - $phpcsFile->addError($error, $stackPtr, $type, $data); - } else { - $phpcsFile->addWarning($error, $stackPtr, $type, $data); - } - - }//end addError() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/PHP/LowerCaseKeywordSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/PHP/LowerCaseKeywordSniff.php deleted file mode 100644 index 76886471..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/PHP/LowerCaseKeywordSniff.php +++ /dev/null @@ -1,82 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\PHP; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Common; -use PHP_CodeSniffer\Util\Tokens; - -class LowerCaseKeywordSniff implements Sniff -{ - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - $targets = Tokens::$contextSensitiveKeywords; - $targets += [ - T_ANON_CLASS => T_ANON_CLASS, - T_CLOSURE => T_CLOSURE, - T_ENUM_CASE => T_ENUM_CASE, - T_MATCH_DEFAULT => T_MATCH_DEFAULT, - T_PARENT => T_PARENT, - T_SELF => T_SELF, - ]; - - return $targets; - - }//end register() - - - /** - * Processes this sniff, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in the - * stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - $keyword = $tokens[$stackPtr]['content']; - if (strtolower($keyword) !== $keyword) { - if ($keyword === strtoupper($keyword)) { - $phpcsFile->recordMetric($stackPtr, 'PHP keyword case', 'upper'); - } else { - $phpcsFile->recordMetric($stackPtr, 'PHP keyword case', 'mixed'); - } - - $messageKeyword = Common::prepareForOutput($keyword); - - $error = 'PHP keywords must be lowercase; expected "%s" but found "%s"'; - $data = [ - strtolower($messageKeyword), - $messageKeyword, - ]; - - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'Found', $data); - if ($fix === true) { - $phpcsFile->fixer->replaceToken($stackPtr, strtolower($keyword)); - } - } else { - $phpcsFile->recordMetric($stackPtr, 'PHP keyword case', 'lower'); - }//end if - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/PHP/LowerCaseTypeSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/PHP/LowerCaseTypeSniff.php deleted file mode 100644 index 1b085853..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/PHP/LowerCaseTypeSniff.php +++ /dev/null @@ -1,364 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\PHP; - -use PHP_CodeSniffer\Exceptions\RuntimeException; -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Tokens; - -class LowerCaseTypeSniff implements Sniff -{ - - /** - * Native types supported by PHP. - * - * @var array - */ - private $phpTypes = [ - 'self' => true, - 'parent' => true, - 'array' => true, - 'callable' => true, - 'bool' => true, - 'float' => true, - 'int' => true, - 'string' => true, - 'iterable' => true, - 'void' => true, - 'object' => true, - 'mixed' => true, - 'static' => true, - 'false' => true, - 'true' => true, - 'null' => true, - 'never' => true, - ]; - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - $tokens = Tokens::$castTokens; - $tokens += Tokens::$ooScopeTokens; - $tokens[] = T_FUNCTION; - $tokens[] = T_CLOSURE; - $tokens[] = T_FN; - return $tokens; - - }//end register() - - - /** - * Processes this sniff, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in the - * stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - if (isset(Tokens::$castTokens[$tokens[$stackPtr]['code']]) === true) { - // A cast token. - $this->processType( - $phpcsFile, - $stackPtr, - $tokens[$stackPtr]['content'], - 'PHP type casts must be lowercase; expected "%s" but found "%s"', - 'TypeCastFound' - ); - - return; - } - - /* - * Check OO constant and property types. - */ - - if (isset(Tokens::$ooScopeTokens[$tokens[$stackPtr]['code']]) === true) { - if (isset($tokens[$stackPtr]['scope_opener'], $tokens[$stackPtr]['scope_closer']) === false) { - return; - } - - for ($i = ($tokens[$stackPtr]['scope_opener'] + 1); $i < $tokens[$stackPtr]['scope_closer']; $i++) { - // Skip over potentially large docblocks. - if ($tokens[$i]['code'] === T_DOC_COMMENT_OPEN_TAG - && isset($tokens[$i]['comment_closer']) === true - ) { - $i = $tokens[$i]['comment_closer']; - continue; - } - - // Skip over function declarations and everything nested within. - if ($tokens[$i]['code'] === T_FUNCTION - && isset($tokens[$i]['scope_closer']) === true - ) { - $i = $tokens[$i]['scope_closer']; - continue; - } - - if ($tokens[$i]['code'] === T_CONST) { - $ignore = Tokens::$emptyTokens; - $ignore[T_NULLABLE] = T_NULLABLE; - - $startOfType = $phpcsFile->findNext($ignore, ($i + 1), null, true); - if ($startOfType === false) { - // Parse error/live coding. Nothing to do. Rest of loop is moot. - return; - } - - $assignmentOperator = $phpcsFile->findNext([T_EQUAL, T_SEMICOLON], ($startOfType + 1)); - if ($assignmentOperator === false || $tokens[$assignmentOperator]['code'] !== T_EQUAL) { - // Parse error/live coding. Nothing to do. Rest of loop is moot. - return; - } - - $constName = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($assignmentOperator - 1), null, true); - if ($startOfType !== $constName) { - $endOfType = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($constName - 1), null, true); - - $error = 'PHP constant type declarations must be lowercase; expected "%s" but found "%s"'; - $errorCode = 'ConstantTypeFound'; - - if ($startOfType !== $endOfType) { - // Multi-token type. - $this->processUnionType( - $phpcsFile, - $startOfType, - $endOfType, - $error, - $errorCode - ); - } else { - $type = $tokens[$startOfType]['content']; - if (isset($this->phpTypes[strtolower($type)]) === true) { - $this->processType($phpcsFile, $startOfType, $type, $error, $errorCode); - } - } - }//end if - - continue; - }//end if - - if ($tokens[$i]['code'] !== T_VARIABLE) { - continue; - } - - try { - $props = $phpcsFile->getMemberProperties($i); - } catch (RuntimeException $e) { - // Not an OO property. - continue; - } - - if (empty($props) === true) { - // Parse error - property in interface or enum. Ignore. - return; - } - - // Strip off potential nullable indication. - $type = ltrim($props['type'], '?'); - - if ($type !== '') { - $error = 'PHP property type declarations must be lowercase; expected "%s" but found "%s"'; - $errorCode = 'PropertyTypeFound'; - - if ($props['type_token'] !== $props['type_end_token']) { - // Multi-token type. - $this->processUnionType( - $phpcsFile, - $props['type_token'], - $props['type_end_token'], - $error, - $errorCode - ); - } else if (isset($this->phpTypes[strtolower($type)]) === true) { - $this->processType($phpcsFile, $props['type_token'], $type, $error, $errorCode); - } - } - }//end for - - return; - }//end if - - /* - * Check function return type. - */ - - $props = $phpcsFile->getMethodProperties($stackPtr); - - // Strip off potential nullable indication. - $returnType = ltrim($props['return_type'], '?'); - - if ($returnType !== '') { - $error = 'PHP return type declarations must be lowercase; expected "%s" but found "%s"'; - $errorCode = 'ReturnTypeFound'; - - if ($props['return_type_token'] !== $props['return_type_end_token']) { - // Multi-token type. - $this->processUnionType( - $phpcsFile, - $props['return_type_token'], - $props['return_type_end_token'], - $error, - $errorCode - ); - } else if (isset($this->phpTypes[strtolower($returnType)]) === true) { - $this->processType($phpcsFile, $props['return_type_token'], $returnType, $error, $errorCode); - } - } - - /* - * Check function parameter types. - */ - - $params = $phpcsFile->getMethodParameters($stackPtr); - if (empty($params) === true) { - return; - } - - foreach ($params as $param) { - // Strip off potential nullable indication. - $typeHint = ltrim($param['type_hint'], '?'); - - if ($typeHint !== '') { - $error = 'PHP parameter type declarations must be lowercase; expected "%s" but found "%s"'; - $errorCode = 'ParamTypeFound'; - - if ($param['type_hint_token'] !== $param['type_hint_end_token']) { - // Multi-token type. - $this->processUnionType( - $phpcsFile, - $param['type_hint_token'], - $param['type_hint_end_token'], - $error, - $errorCode - ); - } else if (isset($this->phpTypes[strtolower($typeHint)]) === true) { - $this->processType($phpcsFile, $param['type_hint_token'], $typeHint, $error, $errorCode); - } - } - }//end foreach - - }//end process() - - - /** - * Processes a multi-token type declaration. - * - * {@internal The method name is superseded by the reality, but changing it would be a BC-break.} - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $typeDeclStart The position of the start of the type token. - * @param int $typeDeclEnd The position of the end of the type token. - * @param string $error Error message template. - * @param string $errorCode The error code. - * - * @return void - */ - protected function processUnionType(File $phpcsFile, $typeDeclStart, $typeDeclEnd, $error, $errorCode) - { - $tokens = $phpcsFile->getTokens(); - $typeTokenCount = 0; - $typeStart = null; - $type = ''; - - for ($i = $typeDeclStart; $i <= $typeDeclEnd; $i++) { - if (isset(Tokens::$emptyTokens[$tokens[$i]['code']]) === true) { - continue; - } - - if ($tokens[$i]['code'] === T_TYPE_UNION - || $tokens[$i]['code'] === T_TYPE_INTERSECTION - || $tokens[$i]['code'] === T_TYPE_OPEN_PARENTHESIS - || $tokens[$i]['code'] === T_TYPE_CLOSE_PARENTHESIS - ) { - if ($typeTokenCount === 1 - && $type !== '' - && isset($this->phpTypes[strtolower($type)]) === true - ) { - $this->processType($phpcsFile, $typeStart, $type, $error, $errorCode); - } - - // Reset for the next type in the type string. - $typeTokenCount = 0; - $typeStart = null; - $type = ''; - - continue; - } - - if (isset($typeStart) === false) { - $typeStart = $i; - } - - ++$typeTokenCount; - $type .= $tokens[$i]['content']; - }//end for - - // Handle type at end of type string. - if ($typeTokenCount === 1 - && $type !== '' - && isset($this->phpTypes[strtolower($type)]) === true - ) { - $this->processType($phpcsFile, $typeStart, $type, $error, $errorCode); - } - - }//end processUnionType() - - - /** - * Processes a type cast or a singular type declaration. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the type token. - * @param string $type The type found. - * @param string $error Error message template. - * @param string $errorCode The error code. - * - * @return void - */ - protected function processType(File $phpcsFile, $stackPtr, $type, $error, $errorCode) - { - $typeLower = strtolower($type); - - if ($typeLower === $type) { - $phpcsFile->recordMetric($stackPtr, 'PHP type case', 'lower'); - return; - } - - if ($type === strtoupper($type)) { - $phpcsFile->recordMetric($stackPtr, 'PHP type case', 'upper'); - } else { - $phpcsFile->recordMetric($stackPtr, 'PHP type case', 'mixed'); - } - - $data = [ - $typeLower, - $type, - ]; - - $fix = $phpcsFile->addFixableError($error, $stackPtr, $errorCode, $data); - if ($fix === true) { - $phpcsFile->fixer->replaceToken($stackPtr, $typeLower); - } - - }//end processType() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/PHP/SyntaxSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/PHP/SyntaxSniff.php deleted file mode 100644 index 7297ebc1..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/PHP/SyntaxSniff.php +++ /dev/null @@ -1,75 +0,0 @@ - - * @author Blaine Schmeisser - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\PHP; - -use PHP_CodeSniffer\Config; -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Common; - -class SyntaxSniff implements Sniff -{ - - /** - * The path to the PHP version we are checking with. - * - * @var string - */ - private $phpPath = null; - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [ - T_OPEN_TAG, - T_OPEN_TAG_WITH_ECHO, - ]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in - * the stack passed in $tokens. - * - * @return int - */ - public function process(File $phpcsFile, $stackPtr) - { - if ($this->phpPath === null) { - $this->phpPath = Config::getExecutablePath('php'); - } - - $fileName = escapeshellarg($phpcsFile->getFilename()); - $cmd = Common::escapeshellcmd($this->phpPath)." -l -d display_errors=1 -d error_prepend_string='' $fileName 2>&1"; - $output = shell_exec($cmd); - $matches = []; - if (preg_match('/^.*error:(.*) in .* on line ([0-9]+)/m', trim($output), $matches) === 1) { - $error = trim($matches[1]); - $line = (int) $matches[2]; - $phpcsFile->addErrorOnLine("PHP syntax error: $error", $line, 'PHPSyntax'); - } - - // Ignore the rest of the file. - return $phpcsFile->numTokens; - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Strings/UnnecessaryStringConcatSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Strings/UnnecessaryStringConcatSniff.php deleted file mode 100644 index 033a6e7b..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/Strings/UnnecessaryStringConcatSniff.php +++ /dev/null @@ -1,129 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\Strings; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Tokens; - -class UnnecessaryStringConcatSniff implements Sniff -{ - - /** - * A list of tokenizers this sniff supports. - * - * @var array - */ - public $supportedTokenizers = [ - 'PHP', - 'JS', - ]; - - /** - * If true, an error will be thrown; otherwise a warning. - * - * @var boolean - */ - public $error = true; - - /** - * If true, strings concatenated over multiple lines are allowed. - * - * Useful if you break strings over multiple lines to work - * within a max line length. - * - * @var boolean - */ - public $allowMultiline = false; - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [ - T_STRING_CONCAT, - T_PLUS, - ]; - - }//end register() - - - /** - * Processes this sniff, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - if ($tokens[$stackPtr]['code'] === T_STRING_CONCAT && $phpcsFile->tokenizerType === 'JS') { - // JS uses T_PLUS for string concatenation, not T_STRING_CONCAT. - return; - } else if ($tokens[$stackPtr]['code'] === T_PLUS && $phpcsFile->tokenizerType === 'PHP') { - // PHP uses T_STRING_CONCAT for string concatenation, not T_PLUS. - return; - } - - $prev = $phpcsFile->findPrevious(T_WHITESPACE, ($stackPtr - 1), null, true); - $next = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true); - if ($next === false) { - return; - } - - if (isset(Tokens::$stringTokens[$tokens[$prev]['code']]) === false - || isset(Tokens::$stringTokens[$tokens[$next]['code']]) === false - ) { - // Bow out as at least one of the two tokens being concatenated is not a string. - return; - } - - if ($tokens[$prev]['content'][0] !== $tokens[$next]['content'][0]) { - // Bow out as the two strings are not of the same type. - return; - } - - // Before we throw an error for PHP, allow strings to be - // combined if they would have < and ? next to each other because - // this trick is sometimes required in PHP strings. - if ($phpcsFile->tokenizerType === 'PHP') { - $prevChar = substr($tokens[$prev]['content'], -2, 1); - $nextChar = $tokens[$next]['content'][1]; - $combined = $prevChar.$nextChar; - if ($combined === '?'.'>' || $combined === '<'.'?') { - return; - } - } - - if ($this->allowMultiline === true - && $tokens[$prev]['line'] !== $tokens[$next]['line'] - ) { - return; - } - - $error = 'String concat is not required here; use a single string instead'; - if ($this->error === true) { - $phpcsFile->addError($error, $stackPtr, 'Found'); - } else { - $phpcsFile->addWarning($error, $stackPtr, 'Found'); - } - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/VersionControl/GitMergeConflictSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/VersionControl/GitMergeConflictSniff.php deleted file mode 100644 index 67ca59ae..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/VersionControl/GitMergeConflictSniff.php +++ /dev/null @@ -1,228 +0,0 @@ - - * @copyright 2017 Juliette Reinders Folmer. All rights reserved. - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\VersionControl; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; - -class GitMergeConflictSniff implements Sniff -{ - - /** - * A list of tokenizers this sniff supports. - * - * @var array - */ - public $supportedTokenizers = [ - 'PHP', - 'JS', - 'CSS', - ]; - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [ - T_OPEN_TAG, - T_OPEN_TAG_WITH_ECHO, - ]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in the - * stack passed in $tokens. - * - * @return int - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - $error = 'Merge conflict boundary found; type: %s'; - - $checkTokens = [ - T_SL => true, - T_SR => true, - T_IS_IDENTICAL => true, - T_COMMENT => true, - T_DOC_COMMENT_STRING => true, - // PHP + CSS specific. - T_ENCAPSED_AND_WHITESPACE => true, - // PHP specific. - T_INLINE_HTML => true, - T_HEREDOC => true, - T_NOWDOC => true, - // JS specific. - T_ZSR => true, - ]; - - for ($i = 0; $i < $phpcsFile->numTokens; $i++) { - if ($tokens[$i]['column'] !== 1 || isset($checkTokens[$tokens[$i]['code']]) === false) { - continue; - } - - if ($phpcsFile->tokenizerType !== 'JS') { - switch ($tokens[$i]['code']) { - // Check for first non-comment, non-heredoc/nowdoc, non-inline HTML merge conflict opener. - case T_SL: - if (isset($tokens[($i + 1)], $tokens[($i + 2)]) !== false - && $tokens[($i + 1)]['code'] === T_SL - && $tokens[($i + 2)]['code'] === T_STRING - && trim($tokens[($i + 2)]['content']) === '<<< HEAD' - ) { - $phpcsFile->addError($error, $i, 'OpenerFound', ['opener']); - $i += 2; - } - break; - - // Check for merge conflict closer which was opened in a heredoc/nowdoc. - case T_SR: - if (isset($tokens[($i + 1)], $tokens[($i + 2)], $tokens[($i + 3)], $tokens[($i + 4)]) !== false - && $tokens[($i + 1)]['code'] === T_SR - && $tokens[($i + 2)]['code'] === T_SR - && $tokens[($i + 3)]['code'] === T_GREATER_THAN - && $tokens[($i + 4)]['code'] === T_WHITESPACE - && $tokens[($i + 4)]['content'] === ' ' - ) { - $phpcsFile->addError($error, $i, 'CloserFound', ['closer']); - $i += 4; - } - break; - - // Check for merge conflict delimiter which opened in a CSS comment and closed outside. - case T_IS_IDENTICAL: - if (isset($tokens[($i + 1)], $tokens[($i + 2)], $tokens[($i + 3)]) !== false - && $tokens[($i + 1)]['code'] === T_IS_IDENTICAL - && $tokens[($i + 2)]['code'] === T_EQUAL - && $tokens[($i + 3)]['code'] === T_WHITESPACE - && $tokens[($i + 3)]['content'] === "\n" - ) { - $phpcsFile->addError($error, $i, 'DelimiterFound', ['delimiter']); - $i += 3; - } - break; - - // - Check for delimiters and closers. - // - Inspect heredoc/nowdoc content, comments and inline HTML. - // - Check for subsequent merge conflict openers after the first broke the tokenizer. - case T_ENCAPSED_AND_WHITESPACE: - case T_COMMENT: - case T_DOC_COMMENT_STRING: - case T_INLINE_HTML: - case T_HEREDOC: - case T_NOWDOC: - if (substr($tokens[$i]['content'], 0, 12) === '<<<<<<< HEAD') { - $phpcsFile->addError($error, $i, 'OpenerFound', ['opener']); - break; - } else if (substr($tokens[$i]['content'], 0, 8) === '>>>>>>> ') { - $phpcsFile->addError($error, $i, 'CloserFound', ['closer']); - break; - } - - if ($tokens[$i]['code'] === T_DOC_COMMENT_STRING) { - if ($tokens[$i]['content'] === '=======' - && $tokens[($i + 1)]['code'] === T_DOC_COMMENT_WHITESPACE - ) { - $phpcsFile->addError($error, $i, 'DelimiterFound', ['delimiter']); - break; - } - } else { - if ($tokens[$i]['content'] === "=======\n") { - $phpcsFile->addError($error, $i, 'DelimiterFound', ['delimiter']); - } - } - break; - }//end switch - } else { - // Javascript file. - switch ($tokens[$i]['code']) { - // Merge conflict opener. - case T_SL: - if (isset($tokens[($i + 1)], $tokens[($i + 2)], $tokens[($i + 3)], $tokens[($i + 4)], $tokens[($i + 5)]) !== false - && $tokens[($i + 1)]['code'] === T_SL - && $tokens[($i + 2)]['code'] === T_SL - && $tokens[($i + 3)]['code'] === T_LESS_THAN - && $tokens[($i + 4)]['code'] === T_WHITESPACE - && trim($tokens[($i + 5)]['content']) === 'HEAD' - ) { - $phpcsFile->addError($error, $i, 'OpenerFound', ['opener']); - $i += 5; - } - break; - - // Check for merge conflict delimiter. - case T_IS_IDENTICAL: - if (isset($tokens[($i + 1)], $tokens[($i + 2)], $tokens[($i + 3)]) !== false - && $tokens[($i + 1)]['code'] === T_IS_IDENTICAL - && $tokens[($i + 2)]['code'] === T_EQUAL - && $tokens[($i + 3)]['code'] === T_WHITESPACE - && $tokens[($i + 3)]['content'] === "\n" - ) { - $phpcsFile->addError($error, $i, 'DelimiterFound', ['delimiter']); - $i += 3; - } - break; - - // Merge conflict closer. - case T_ZSR: - if ($tokens[$i]['code'] === T_ZSR - && isset($tokens[($i + 1)], $tokens[($i + 2)]) === true - && $tokens[($i + 1)]['code'] === T_ZSR - && $tokens[($i + 2)]['code'] === T_GREATER_THAN - ) { - $phpcsFile->addError($error, $i, 'CloserFound', ['closer']); - $i += 2; - } - break; - - // Check for merge conflicts in all comments. - case T_COMMENT: - case T_DOC_COMMENT_STRING: - if (substr($tokens[$i]['content'], 0, 12) === '<<<<<<< HEAD') { - $phpcsFile->addError($error, $i, 'OpenerFound'); - break; - } else if (substr($tokens[$i]['content'], 0, 8) === '>>>>>>> ') { - $phpcsFile->addError($error, $i, 'CloserFound', ['closer']); - break; - } - - if ($tokens[$i]['code'] === T_DOC_COMMENT_STRING) { - if ($tokens[$i]['content'] === '=======' - && $tokens[($i + 1)]['code'] === T_DOC_COMMENT_WHITESPACE - ) { - $phpcsFile->addError($error, $i, 'DelimiterFound', ['delimiter']); - break; - } - } else { - if ($tokens[$i]['content'] === "=======\n") { - $phpcsFile->addError($error, $i, 'DelimiterFound', ['delimiter']); - } - } - break; - }//end switch - }//end if - }//end for - - // Ignore the rest of the file. - return $phpcsFile->numTokens; - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/VersionControl/SubversionPropertiesSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/VersionControl/SubversionPropertiesSniff.php deleted file mode 100644 index 3e6c5fe1..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/VersionControl/SubversionPropertiesSniff.php +++ /dev/null @@ -1,186 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\VersionControl; - -use PHP_CodeSniffer\Exceptions\RuntimeException; -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; - -class SubversionPropertiesSniff implements Sniff -{ - - /** - * The Subversion properties that should be set. - * - * Key of array is the SVN property and the value is the - * exact value the property should have or NULL if the - * property should just be set but the value is not fixed. - * - * @var array - */ - protected $properties = [ - 'svn:keywords' => 'Author Id Revision', - 'svn:eol-style' => 'native', - ]; - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [T_OPEN_TAG]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * - * @return int - */ - public function process(File $phpcsFile, $stackPtr) - { - $path = $phpcsFile->getFilename(); - $properties = $this->getProperties($path); - if ($properties === null) { - // Not under version control. - return $phpcsFile->numTokens; - } - - $allProperties = ($properties + $this->properties); - foreach ($allProperties as $key => $value) { - if (isset($properties[$key]) === true - && isset($this->properties[$key]) === false - ) { - $error = 'Unexpected Subversion property "%s" = "%s"'; - $data = [ - $key, - $properties[$key], - ]; - $phpcsFile->addError($error, $stackPtr, 'Unexpected', $data); - continue; - } - - if (isset($properties[$key]) === false - && isset($this->properties[$key]) === true - ) { - $error = 'Missing Subversion property "%s" = "%s"'; - $data = [ - $key, - $this->properties[$key], - ]; - $phpcsFile->addError($error, $stackPtr, 'Missing', $data); - continue; - } - - if ($properties[$key] !== null - && $properties[$key] !== $this->properties[$key] - ) { - $error = 'Subversion property "%s" = "%s" does not match "%s"'; - $data = [ - $key, - $properties[$key], - $this->properties[$key], - ]; - $phpcsFile->addError($error, $stackPtr, 'NoMatch', $data); - } - }//end foreach - - // Ignore the rest of the file. - return $phpcsFile->numTokens; - - }//end process() - - - /** - * Returns the Subversion properties which are actually set on a path. - * - * Returns NULL if the file is not under version control. - * - * @param string $path The path to return Subversion properties on. - * - * @return array|null - * @throws \PHP_CodeSniffer\Exceptions\RuntimeException If Subversion properties file could - * not be opened. - */ - protected function getProperties($path) - { - $properties = []; - - $paths = []; - $paths[] = dirname($path).'/.svn/props/'.basename($path).'.svn-work'; - $paths[] = dirname($path).'/.svn/prop-base/'.basename($path).'.svn-base'; - - $foundPath = false; - foreach ($paths as $path) { - if (file_exists($path) === true) { - $foundPath = true; - - $handle = fopen($path, 'r'); - if ($handle === false) { - $error = 'Error opening file; could not get Subversion properties'; - throw new RuntimeException($error); - } - - while (feof($handle) === false) { - // Read a key length line. Might be END, though. - $buffer = trim(fgets($handle)); - - // Check for the end of the hash. - if ($buffer === 'END') { - break; - } - - // Now read that much into a buffer. - $key = fread($handle, substr($buffer, 2)); - - // Suck up extra newline after key data. - fgetc($handle); - - // Read a value length line. - $buffer = trim(fgets($handle)); - - // Now read that much into a buffer. - $length = substr($buffer, 2); - if ($length === '0') { - // Length of value is ZERO characters, so - // value is actually empty. - $value = ''; - } else { - $value = fread($handle, $length); - } - - // Suck up extra newline after value data. - fgetc($handle); - - $properties[$key] = $value; - }//end while - - fclose($handle); - }//end if - }//end foreach - - if ($foundPath === false) { - return null; - } - - return $properties; - - }//end getProperties() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/WhiteSpace/DisallowSpaceIndentSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/WhiteSpace/DisallowSpaceIndentSniff.php deleted file mode 100644 index 37edfc88..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/WhiteSpace/DisallowSpaceIndentSniff.php +++ /dev/null @@ -1,232 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\WhiteSpace; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; - -class DisallowSpaceIndentSniff implements Sniff -{ - - /** - * A list of tokenizers this sniff supports. - * - * @var array - */ - public $supportedTokenizers = [ - 'PHP', - 'JS', - 'CSS', - ]; - - /** - * The --tab-width CLI value that is being used. - * - * @var integer - */ - private $tabWidth = null; - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [ - T_OPEN_TAG, - T_OPEN_TAG_WITH_ECHO, - ]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile All the tokens found in the document. - * @param int $stackPtr The position of the current token in - * the stack passed in $tokens. - * - * @return int - */ - public function process(File $phpcsFile, $stackPtr) - { - $tabsReplaced = false; - if ($this->tabWidth === null) { - if (isset($phpcsFile->config->tabWidth) === false || $phpcsFile->config->tabWidth === 0) { - // We have no idea how wide tabs are, so assume 4 spaces for fixing. - // It shouldn't really matter because indent checks elsewhere in the - // standard should fix things up. - $this->tabWidth = 4; - } else { - $this->tabWidth = $phpcsFile->config->tabWidth; - $tabsReplaced = true; - } - } - - $checkTokens = [ - T_WHITESPACE => true, - T_INLINE_HTML => true, - T_DOC_COMMENT_WHITESPACE => true, - T_COMMENT => true, - T_END_HEREDOC => true, - T_END_NOWDOC => true, - ]; - - $eolLen = strlen($phpcsFile->eolChar); - - $tokens = $phpcsFile->getTokens(); - for ($i = 0; $i < $phpcsFile->numTokens; $i++) { - if ($tokens[$i]['column'] !== 1 || isset($checkTokens[$tokens[$i]['code']]) === false) { - continue; - } - - // If the tokenizer hasn't replaced tabs with spaces, we need to do it manually. - $token = $tokens[$i]; - if ($tabsReplaced === false) { - $phpcsFile->tokenizer->replaceTabsInToken($token, ' ', ' ', $this->tabWidth); - if (strpos($token['content'], $phpcsFile->eolChar) !== false) { - // Newline chars are not counted in the token length. - $token['length'] -= $eolLen; - } - } - - if (isset($tokens[$i]['orig_content']) === true) { - $content = $tokens[$i]['orig_content']; - } else { - $content = $tokens[$i]['content']; - } - - $expectedIndentSize = $token['length']; - - $recordMetrics = true; - - // If this is an inline HTML token or a subsequent line of a multi-line comment, - // split the content into indentation whitespace and the actual HTML/text. - $nonWhitespace = ''; - if (($tokens[$i]['code'] === T_INLINE_HTML - || $tokens[$i]['code'] === T_COMMENT) - && preg_match('`^(\s*)(\S.*)`s', $content, $matches) > 0 - ) { - if (isset($matches[1]) === true) { - $content = $matches[1]; - - // Tabs are not replaced in content, so the "length" is wrong. - $matches[1] = str_replace("\t", str_repeat(' ', $this->tabWidth), $matches[1]); - $expectedIndentSize = strlen($matches[1]); - } - - if (isset($matches[2]) === true) { - $nonWhitespace = $matches[2]; - } - } else if (isset($tokens[($i + 1)]) === true - && $tokens[$i]['line'] < $tokens[($i + 1)]['line'] - ) { - // There is no content after this whitespace except for a newline. - $content = rtrim($content, "\r\n"); - $nonWhitespace = $phpcsFile->eolChar; - - // Don't record metrics for empty lines. - $recordMetrics = false; - }//end if - - $foundSpaces = substr_count($content, ' '); - $foundTabs = substr_count($content, "\t"); - - if ($foundSpaces === 0 && $foundTabs === 0) { - // Empty line. - continue; - } - - if ($foundSpaces === 0 && $foundTabs > 0) { - // All ok, nothing to do. - if ($recordMetrics === true) { - $phpcsFile->recordMetric($i, 'Line indent', 'tabs'); - } - - continue; - } - - if (($tokens[$i]['code'] === T_DOC_COMMENT_WHITESPACE - || $tokens[$i]['code'] === T_COMMENT) - && $content === ' ' - ) { - // Ignore all non-indented comments, especially for recording metrics. - continue; - } - - // OK, by now we know there will be spaces. - // We just don't know yet whether they need to be replaced or - // are precision indentation, nor whether they are correctly - // placed at the end of the whitespace. - $tabAfterSpaces = strpos($content, "\t", strpos($content, ' ')); - - // Calculate the expected tabs and spaces. - $expectedTabs = (int) floor($expectedIndentSize / $this->tabWidth); - $expectedSpaces = ($expectedIndentSize % $this->tabWidth); - - if ($foundTabs === 0) { - if ($recordMetrics === true) { - $phpcsFile->recordMetric($i, 'Line indent', 'spaces'); - } - - if ($foundTabs === $expectedTabs && $foundSpaces === $expectedSpaces) { - // Ignore: precision indentation. - continue; - } - } else { - if ($foundTabs === $expectedTabs && $foundSpaces === $expectedSpaces) { - // Precision indentation. - if ($recordMetrics === true) { - if ($tabAfterSpaces !== false) { - $phpcsFile->recordMetric($i, 'Line indent', 'mixed'); - } else { - $phpcsFile->recordMetric($i, 'Line indent', 'tabs'); - } - } - - if ($tabAfterSpaces === false) { - // Ignore: precision indentation is already at the - // end of the whitespace. - continue; - } - } else if ($recordMetrics === true) { - $phpcsFile->recordMetric($i, 'Line indent', 'mixed'); - } - }//end if - - $error = 'Tabs must be used to indent lines; spaces are not allowed'; - $errorCode = 'SpacesUsed'; - - // Report, but don't auto-fix space identation for a PHP 7.3+ flexible heredoc/nowdoc closer. - // Auto-fixing this would cause parse errors as the indentation of the heredoc/nowdoc contents - // needs to use the same type of indentation. Also see: https://3v4l.org/7OF3M . - if ($tokens[$i]['code'] === T_END_HEREDOC || $tokens[$i]['code'] === T_END_NOWDOC) { - $phpcsFile->addError($error, $i, $errorCode.'HeredocCloser'); - continue; - } - - $fix = $phpcsFile->addFixableError($error, $i, $errorCode); - if ($fix === true) { - $padding = str_repeat("\t", $expectedTabs); - $padding .= str_repeat(' ', $expectedSpaces); - $phpcsFile->fixer->replaceToken($i, $padding.$nonWhitespace); - } - }//end for - - // Ignore the rest of the file. - return $phpcsFile->numTokens; - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/WhiteSpace/DisallowTabIndentSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/WhiteSpace/DisallowTabIndentSniff.php deleted file mode 100644 index b33a58b4..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/WhiteSpace/DisallowTabIndentSniff.php +++ /dev/null @@ -1,201 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\WhiteSpace; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; - -class DisallowTabIndentSniff implements Sniff -{ - - /** - * A list of tokenizers this sniff supports. - * - * @var array - */ - public $supportedTokenizers = [ - 'PHP', - 'JS', - 'CSS', - ]; - - /** - * The --tab-width CLI value that is being used. - * - * @var integer - */ - private $tabWidth = null; - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [ - T_OPEN_TAG, - T_OPEN_TAG_WITH_ECHO, - ]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile All the tokens found in the document. - * @param int $stackPtr The position of the current token in - * the stack passed in $tokens. - * - * @return int - */ - public function process(File $phpcsFile, $stackPtr) - { - if ($this->tabWidth === null) { - if (isset($phpcsFile->config->tabWidth) === false || $phpcsFile->config->tabWidth === 0) { - // We have no idea how wide tabs are, so assume 4 spaces for metrics. - $this->tabWidth = 4; - } else { - $this->tabWidth = $phpcsFile->config->tabWidth; - } - } - - $tokens = $phpcsFile->getTokens(); - $checkTokens = [ - T_WHITESPACE => true, - T_INLINE_HTML => true, - T_DOC_COMMENT_WHITESPACE => true, - T_DOC_COMMENT_STRING => true, - T_COMMENT => true, - T_END_HEREDOC => true, - T_END_NOWDOC => true, - T_YIELD_FROM => true, - ]; - - for ($i = 0; $i < $phpcsFile->numTokens; $i++) { - if (isset($checkTokens[$tokens[$i]['code']]) === false) { - continue; - } - - // If tabs are being converted to spaces by the tokeniser, the - // original content should be checked instead of the converted content. - if (isset($tokens[$i]['orig_content']) === true) { - $content = $tokens[$i]['orig_content']; - } else { - $content = $tokens[$i]['content']; - } - - if ($content === '') { - continue; - } - - // If this is an inline HTML token or a subsequent line of a multi-line comment, - // split off the indentation as that is the only part to take into account for the metrics. - $indentation = $content; - if (($tokens[$i]['code'] === T_INLINE_HTML - || $tokens[$i]['code'] === T_COMMENT) - && preg_match('`^(\s*)\S.*`s', $content, $matches) > 0 - ) { - if (isset($matches[1]) === true) { - $indentation = $matches[1]; - } - } - - if (($tokens[$i]['code'] === T_DOC_COMMENT_WHITESPACE - || $tokens[$i]['code'] === T_COMMENT) - && $indentation === ' ' - ) { - // Ignore all non-indented comments, especially for recording metrics. - continue; - } - - $recordMetrics = true; - if ($content === $indentation - && isset($tokens[($i + 1)]) === true - && $tokens[$i]['line'] < $tokens[($i + 1)]['line'] - ) { - // Don't record metrics for empty lines. - $recordMetrics = false; - } - - $foundTabs = substr_count($content, "\t"); - - $error = 'Spaces must be used to indent lines; tabs are not allowed'; - $errorCode = 'TabsUsed'; - if ($tokens[$i]['column'] === 1) { - if ($recordMetrics === true) { - $foundIndentSpaces = substr_count($indentation, ' '); - $foundIndentTabs = substr_count($indentation, "\t"); - - if ($foundIndentTabs > 0 && $foundIndentSpaces === 0) { - $phpcsFile->recordMetric($i, 'Line indent', 'tabs'); - } else if ($foundIndentTabs === 0 && $foundIndentSpaces > 0) { - $phpcsFile->recordMetric($i, 'Line indent', 'spaces'); - } else if ($foundIndentTabs > 0 && $foundIndentSpaces > 0) { - $spacePosition = strpos($indentation, ' '); - $tabAfterSpaces = strpos($indentation, "\t", $spacePosition); - if ($tabAfterSpaces !== false) { - $phpcsFile->recordMetric($i, 'Line indent', 'mixed'); - } else { - // Check for use of precision spaces. - $numTabs = (int) floor($foundIndentSpaces / $this->tabWidth); - if ($numTabs === 0) { - $phpcsFile->recordMetric($i, 'Line indent', 'tabs'); - } else { - $phpcsFile->recordMetric($i, 'Line indent', 'mixed'); - } - } - } - }//end if - } else { - // Look for tabs so we can report and replace, but don't - // record any metrics about them because they aren't - // line indent tokens. - if ($foundTabs > 0) { - $error = 'Spaces must be used for alignment; tabs are not allowed'; - $errorCode = 'NonIndentTabsUsed'; - } - }//end if - - if ($foundTabs === 0) { - continue; - } - - // Report, but don't auto-fix tab identation for a PHP 7.3+ flexible heredoc/nowdoc closer. - // Auto-fixing this would cause parse errors as the indentation of the heredoc/nowdoc contents - // needs to use the same type of indentation. Also see: https://3v4l.org/7OF3M . - if ($tokens[$i]['code'] === T_END_HEREDOC || $tokens[$i]['code'] === T_END_NOWDOC) { - $phpcsFile->addError($error, $i, $errorCode.'HeredocCloser'); - continue; - } - - $fix = $phpcsFile->addFixableError($error, $i, $errorCode); - if ($fix === true) { - if (isset($tokens[$i]['orig_content']) === true) { - // Use the replacement that PHPCS has already done. - $phpcsFile->fixer->replaceToken($i, $tokens[$i]['content']); - } else { - // Replace tabs with spaces, using an indent of tabWidth spaces. - // Other sniffs can then correct the indent if they need to. - $newContent = str_replace("\t", str_repeat(' ', $this->tabWidth), $tokens[$i]['content']); - $phpcsFile->fixer->replaceToken($i, $newContent); - } - } - }//end for - - // Ignore the rest of the file. - return $phpcsFile->numTokens; - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/WhiteSpace/LanguageConstructSpacingSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/WhiteSpace/LanguageConstructSpacingSniff.php deleted file mode 100644 index 6cb5f92f..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/WhiteSpace/LanguageConstructSpacingSniff.php +++ /dev/null @@ -1,161 +0,0 @@ - - * @copyright 2006-2017 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Sniffs\WhiteSpace; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Common; -use PHP_CodeSniffer\Util\Tokens; - -class LanguageConstructSpacingSniff implements Sniff -{ - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [ - T_ECHO, - T_PRINT, - T_RETURN, - T_INCLUDE, - T_INCLUDE_ONCE, - T_REQUIRE, - T_REQUIRE_ONCE, - T_NEW, - T_YIELD, - T_YIELD_FROM, - T_THROW, - T_NAMESPACE, - T_USE, - ]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in - * the stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - $nextToken = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true); - if ($nextToken === false) { - // Skip when at end of file. - return; - } - - if ($tokens[($stackPtr + 1)]['code'] === T_SEMICOLON) { - // No content for this language construct. - return; - } - - $content = $tokens[$stackPtr]['content']; - if ($tokens[$stackPtr]['code'] === T_NAMESPACE) { - $nextNonEmpty = $phpcsFile->findNext(Tokens::$emptyTokens, ($stackPtr + 1), null, true); - if ($nextNonEmpty !== false && $tokens[$nextNonEmpty]['code'] === T_NS_SEPARATOR) { - // Namespace keyword used as operator, not as the language construct. - return; - } - } - - if ($tokens[$stackPtr]['code'] === T_YIELD_FROM - && strtolower($content) !== 'yield from' - ) { - $found = $content; - $hasComment = false; - $yieldFromEnd = $stackPtr; - - // Handle potentially multi-line/multi-token "yield from" expressions. - if (preg_match('`yield\s+from`i', $content) !== 1) { - for ($i = ($stackPtr + 1); $i < $phpcsFile->numTokens; $i++) { - if (isset(Tokens::$emptyTokens[$tokens[$i]['code']]) === false - && $tokens[$i]['code'] !== T_YIELD_FROM - ) { - break; - } - - if (isset(Tokens::$commentTokens[$tokens[$i]['code']]) === true) { - $hasComment = true; - } - - $found .= $tokens[$i]['content']; - - if ($tokens[$i]['code'] === T_YIELD_FROM - && strtolower(trim($tokens[$i]['content'])) === 'from' - ) { - break; - } - } - - $yieldFromEnd = $i; - }//end if - - $error = 'Language constructs must be followed by a single space; expected 1 space between YIELD FROM found "%s"'; - $data = [Common::prepareForOutput($found)]; - - if ($hasComment === true) { - $phpcsFile->addError($error, $stackPtr, 'IncorrectYieldFromWithComment', $data); - } else { - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'IncorrectYieldFrom', $data); - if ($fix === true) { - preg_match('/yield/i', $found, $yield); - preg_match('/from/i', $found, $from); - $phpcsFile->fixer->beginChangeset(); - $phpcsFile->fixer->replaceToken($stackPtr, $yield[0].' '.$from[0]); - - for ($i = ($stackPtr + 1); $i <= $yieldFromEnd; $i++) { - $phpcsFile->fixer->replaceToken($i, ''); - } - - $phpcsFile->fixer->endChangeset(); - } - }//end if - - return ($yieldFromEnd + 1); - }//end if - - if ($tokens[($stackPtr + 1)]['code'] === T_WHITESPACE) { - $content = $tokens[($stackPtr + 1)]['content']; - if ($content !== ' ') { - $error = 'Language constructs must be followed by a single space; expected 1 space but found "%s"'; - $data = [Common::prepareForOutput($content)]; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'IncorrectSingle', $data); - if ($fix === true) { - $phpcsFile->fixer->replaceToken(($stackPtr + 1), ' '); - } - } - } else if ($tokens[($stackPtr + 1)]['code'] !== T_OPEN_PARENTHESIS) { - $error = 'Language constructs must be followed by a single space; expected "%s" but found "%s"'; - $data = [ - $tokens[$stackPtr]['content'].' '.$tokens[($stackPtr + 1)]['content'], - $tokens[$stackPtr]['content'].$tokens[($stackPtr + 1)]['content'], - ]; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'Incorrect', $data); - if ($fix === true) { - $phpcsFile->fixer->addContent($stackPtr, ' '); - } - }//end if - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Arrays/ArrayIndentUnitTest.inc b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Arrays/ArrayIndentUnitTest.inc deleted file mode 100644 index 06ebca78..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Arrays/ArrayIndentUnitTest.inc +++ /dev/null @@ -1,154 +0,0 @@ - 'one', - 2 => 'two', - 3 => 'three' -]; -$var = [ - 1 => 'one', - 2 => 'two', - /* three */ 3 => 'three', -]; -$var = [ -1 => 'one', - 2 => 'two', - /* three */ 3 => 'three', - ]; - -$var = array( - 'one' => function() { - $foo = [1,2,3]; - $bar = [ - 1, - 2, - 3]; - }, - 'two' => 2, -); - -return [ - [ - 'foo' => true, - ] -]; - -$array = [ - 'foo' => 'foo', - 'bar' => $baz ? - ['abc'] : - ['def'], - 'hey' => $baz ?? - ['one'] ?? - ['two'], - 'fn' => - fn ($x) => yield 'k' => $x, - $a ?? $b, - $c ? $d : $e, -]; - -$foo = -[ - 'bar' => - [ - ], -]; - -$foo = [ - 'foo' - . 'bar', - [ - 'baz', - 'qux', - ], -]; - -// phpcs:set Generic.Arrays.ArrayIndent indent 2 - -$var = [ -1 => 'one', - 2 => 'two', - /* three */ 3 => 'three', - ]; - -// phpcs:set Generic.Arrays.ArrayIndent indent 4 - -$array = array( - match ($test) { 1 => 'a', 2 => 'b' } - => 'dynamic keys, woho!', -); - -$array = [ - match ($test) { 1 => 'a', 2 => 'b' } - => 'dynamic keys, woho!', -]; - -// Ensure that PHP 8.0 named parameters don't affect the sniff. -$array = [ - functionCall( - name: $value - ), -]; - -$array = [ - functionCall( - name: $value - ), -]; - -// phpcs:set Generic.Arrays.ArrayIndent indent 1 - -// Testing pluralization of indent text - open brace indent. - $var = -[ - 1 => 'one', -]; - -// Testing pluralization of indent text - array item indent. -$var = [ - 1 => 'one', - 2 => 'two', - /* three */ 3 => 'three', -]; - -// Testing pluralization of indent text - close brace indent. - $var = [ - 1 => 'one', - ]; - -// phpcs:set Generic.Arrays.ArrayIndent indent 0 - -// No test for open brace indent as that is _minimum_ and any actual value will be 0 or more, so with indent 0, this will never yield an error. - -// Testing pluralization of indent text - array item indent. -$var = [ - 1 => 'one', - 2 => 'two', - /* three */ 3 => 'three', -]; - -// Testing pluralization of indent text - close brace indent. -$var = [ -1 => 'one', - ]; - -// phpcs:set Generic.Arrays.ArrayIndent indent 4 - -$array = [1, -]; diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Arrays/ArrayIndentUnitTest.inc.fixed b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Arrays/ArrayIndentUnitTest.inc.fixed deleted file mode 100644 index 03f508db..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Arrays/ArrayIndentUnitTest.inc.fixed +++ /dev/null @@ -1,155 +0,0 @@ - 'one', - 2 => 'two', - 3 => 'three' -]; -$var = [ - 1 => 'one', - 2 => 'two', - /* three */ 3 => 'three', -]; -$var = [ - 1 => 'one', - 2 => 'two', - /* three */ 3 => 'three', -]; - -$var = array( - 'one' => function() { - $foo = [1,2,3]; - $bar = [ - 1, - 2, - 3 - ]; - }, - 'two' => 2, -); - -return [ - [ - 'foo' => true, - ] -]; - -$array = [ - 'foo' => 'foo', - 'bar' => $baz ? - ['abc'] : - ['def'], - 'hey' => $baz ?? - ['one'] ?? - ['two'], - 'fn' => - fn ($x) => yield 'k' => $x, - $a ?? $b, - $c ? $d : $e, -]; - -$foo = -[ - 'bar' => - [ - ], -]; - -$foo = [ - 'foo' - . 'bar', - [ - 'baz', - 'qux', - ], -]; - -// phpcs:set Generic.Arrays.ArrayIndent indent 2 - -$var = [ - 1 => 'one', - 2 => 'two', - /* three */ 3 => 'three', -]; - -// phpcs:set Generic.Arrays.ArrayIndent indent 4 - -$array = array( - match ($test) { 1 => 'a', 2 => 'b' } - => 'dynamic keys, woho!', -); - -$array = [ - match ($test) { 1 => 'a', 2 => 'b' } - => 'dynamic keys, woho!', -]; - -// Ensure that PHP 8.0 named parameters don't affect the sniff. -$array = [ - functionCall( - name: $value - ), -]; - -$array = [ - functionCall( - name: $value - ), -]; - -// phpcs:set Generic.Arrays.ArrayIndent indent 1 - -// Testing pluralization of indent text - open brace indent. - $var = - [ - 1 => 'one', - ]; - -// Testing pluralization of indent text - array item indent. -$var = [ - 1 => 'one', - 2 => 'two', - /* three */ 3 => 'three', -]; - -// Testing pluralization of indent text - close brace indent. - $var = [ - 1 => 'one', - ]; - -// phpcs:set Generic.Arrays.ArrayIndent indent 0 - -// No test for open brace indent as that is _minimum_ and any actual value will be 0 or more, so with indent 0, this will never yield an error. - -// Testing pluralization of indent text - array item indent. -$var = [ -1 => 'one', -2 => 'two', -/* three */ 3 => 'three', -]; - -// Testing pluralization of indent text - close brace indent. -$var = [ -1 => 'one', -]; - -// phpcs:set Generic.Arrays.ArrayIndent indent 4 - -$array = [1, -]; diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Arrays/DisallowLongArraySyntaxUnitTest.1.inc b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Arrays/DisallowLongArraySyntaxUnitTest.1.inc deleted file mode 100644 index 6855f02c..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Arrays/DisallowLongArraySyntaxUnitTest.1.inc +++ /dev/null @@ -1,33 +0,0 @@ - array_filter($value), - [] -); - -class Foo { - function array() {} -} - -$obj->array( 1, 2, 3 ); diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Arrays/DisallowLongArraySyntaxUnitTest.1.inc.fixed b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Arrays/DisallowLongArraySyntaxUnitTest.1.inc.fixed deleted file mode 100644 index 5e993068..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Arrays/DisallowLongArraySyntaxUnitTest.1.inc.fixed +++ /dev/null @@ -1,33 +0,0 @@ - array_filter($value), - [] -); - -class Foo { - function array() {} -} - -$obj->array( 1, 2, 3 ); diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Arrays/DisallowLongArraySyntaxUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Arrays/DisallowLongArraySyntaxUnitTest.php deleted file mode 100644 index 18f12fe7..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Arrays/DisallowLongArraySyntaxUnitTest.php +++ /dev/null @@ -1,75 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\Arrays; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the DisallowLongArraySyntax sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\Arrays\DisallowLongArraySyntaxSniff - */ -final class DisallowLongArraySyntaxUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getErrorList($testFile='') - { - switch ($testFile) { - case 'DisallowLongArraySyntaxUnitTest.1.inc': - return [ - 2 => 1, - 4 => 1, - 6 => 1, - 7 => 1, - 12 => 1, - ]; - case 'DisallowLongArraySyntaxUnitTest.2.inc': - return [ - 2 => 1, - 9 => 1, - ]; - case 'DisallowLongArraySyntaxUnitTest.3.inc': - return [ - 7 => 1, - ]; - default: - return []; - }//end switch - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.php deleted file mode 100644 index 29bfe9f8..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.php +++ /dev/null @@ -1,98 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\Classes; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the DuplicateClassName sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\Classes\DuplicateClassNameSniff - */ -final class DuplicateClassNameUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @return array - */ - public function getErrorList() - { - return []; - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getWarningList($testFile='') - { - switch ($testFile) { - case 'DuplicateClassNameUnitTest.1.inc': - return [ - 10 => 1, - 11 => 1, - 12 => 1, - 13 => 1, - ]; - - case 'DuplicateClassNameUnitTest.2.inc': - return [ - 2 => 1, - 3 => 1, - 4 => 1, - 5 => 1, - ]; - - case 'DuplicateClassNameUnitTest.5.inc': - return [ - 3 => 1, - 7 => 1, - ]; - - case 'DuplicateClassNameUnitTest.6.inc': - return [10 => 1]; - - case 'DuplicateClassNameUnitTest.8.inc': - return [ - 7 => 1, - 8 => 1, - ]; - - case 'DuplicateClassNameUnitTest.9.inc': - return [ - 3 => 1, - 4 => 1, - ]; - - case 'DuplicateClassNameUnitTest.11.inc': - return [13 => 1]; - - default: - return []; - }//end switch - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/CodeAnalysis/EmptyPHPStatementUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/CodeAnalysis/EmptyPHPStatementUnitTest.php deleted file mode 100644 index 77542acb..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/CodeAnalysis/EmptyPHPStatementUnitTest.php +++ /dev/null @@ -1,110 +0,0 @@ - - * @copyright 2017 Juliette Reinders Folmer. All rights reserved. - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\CodeAnalysis; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the EmptyPHPStatement sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\CodeAnalysis\EmptyPHPStatementSniff - */ -final class EmptyPHPStatementUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Get a list of all test files to check. - * - * @param string $testFileBase The base path that the unit tests files will have. - * - * @return string[] - */ - protected function getTestFiles($testFileBase) - { - $testFiles = [$testFileBase.'1.inc']; - - $option = (bool) ini_get('short_open_tag'); - if ($option === true) { - $testFiles[] = $testFileBase.'2.inc'; - } - - return $testFiles; - - }//end getTestFiles() - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @return array - */ - public function getErrorList() - { - return []; - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getWarningList($testFile='') - { - switch ($testFile) { - case 'EmptyPHPStatementUnitTest.1.inc': - return [ - 9 => 1, - 12 => 1, - 15 => 1, - 18 => 1, - 21 => 1, - 22 => 2, - 31 => 1, - 33 => 1, - 43 => 1, - 45 => 2, - 49 => 1, - 50 => 1, - 57 => 1, - 59 => 1, - 61 => 1, - 63 => 2, - 71 => 1, - 72 => 1, - 80 => 1, - ]; - case 'EmptyPHPStatementUnitTest.2.inc': - return [ - 3 => 1, - 4 => 1, - 13 => 1, - 15 => 1, - 25 => 1, - 27 => 1, - ]; - default: - return []; - }//end switch - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/CodeAnalysis/JumbledIncrementerUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/CodeAnalysis/JumbledIncrementerUnitTest.php deleted file mode 100644 index 0060efe6..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/CodeAnalysis/JumbledIncrementerUnitTest.php +++ /dev/null @@ -1,72 +0,0 @@ - - * @copyright 2007-2014 Manuel Pichler. All rights reserved. - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\CodeAnalysis; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the JumbledIncrementer sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\CodeAnalysis\JumbledIncrementerSniff - */ -final class JumbledIncrementerUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @return array - */ - public function getErrorList() - { - return []; - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getWarningList($testFile='') - { - switch ($testFile) { - case 'JumbledIncrementerUnitTest.1.inc': - return [ - 3 => 2, - 4 => 1, - 20 => 1, - 40 => 2, - 41 => 1, - 58 => 1, - 69 => 1, - 79 => 2, - 80 => 1, - 87 => 1, - ]; - - default: - return []; - } - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/CodeAnalysis/UnconditionalIfStatementUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/CodeAnalysis/UnconditionalIfStatementUnitTest.php deleted file mode 100644 index d7f2e7e4..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/CodeAnalysis/UnconditionalIfStatementUnitTest.php +++ /dev/null @@ -1,65 +0,0 @@ - - * @copyright 2007-2014 Manuel Pichler. All rights reserved. - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\CodeAnalysis; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the UnconditionalIfStatement sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\CodeAnalysis\UnconditionalIfStatementSniff - */ -final class UnconditionalIfStatementUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @return array - */ - public function getErrorList() - { - return []; - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getWarningList($testFile='') - { - switch ($testFile) { - case 'UnconditionalIfStatementUnitTest.1.inc': - return [ - 3 => 1, - 5 => 1, - 7 => 1, - ]; - - default: - return []; - }//end switch - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/CodeAnalysis/UselessOverridingMethodUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/CodeAnalysis/UselessOverridingMethodUnitTest.php deleted file mode 100644 index 91d93f56..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/CodeAnalysis/UselessOverridingMethodUnitTest.php +++ /dev/null @@ -1,72 +0,0 @@ - - * @copyright 2007-2014 Manuel Pichler. All rights reserved. - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\CodeAnalysis; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the UselessOverridingMethod sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\CodeAnalysis\UselessOverridingMethodSniff - */ -final class UselessOverridingMethodUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @return array - */ - public function getErrorList() - { - return []; - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getWarningList($testFile='') - { - switch ($testFile) { - case 'UselessOverridingMethodUnitTest.1.inc': - return [ - 4 => 1, - 16 => 1, - 38 => 1, - 56 => 1, - 68 => 1, - 72 => 1, - 93 => 1, - 116 => 1, - 134 => 1, - 146 => 1, - 153 => 1, - ]; - default: - return []; - } - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/ControlStructures/DisallowYodaConditionsUnitTest.inc b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/ControlStructures/DisallowYodaConditionsUnitTest.inc deleted file mode 100644 index 27053c4d..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/ControlStructures/DisallowYodaConditionsUnitTest.inc +++ /dev/null @@ -1,187 +0,0 @@ -myVar === $value){} -if($value === $object->myVar){} - -if($object->function() === $value){} -if($value === $object->function()){} - -// Check with functions -if(myFunction() === $value){} -if($value === myFunction()){} - -// check with multiple operations -if($value === true && $value === 1 && $value === null){} -if(($value === true && $value === 1) == ($value === null && $value === new stdClass())){} - -if(true === $value && 1 === $value && null === $value){} -if((true === $value && 1 === $value) == (null === $value && new stdClass() === $value)){} - -// Add comments in the middle -if( - //comment - true - // comment - === - // comment - $value -){} - -if( - //comment - $value - // comment - === - // comment - true -){} - -if(array($key => $val) === $value){} -if(array($key => $val) == $value){} - -if([$key => $val] === $value){} -if([$key => $val] == $value){} - -$config['checkAuthIn'] !== $event->getName(); - -if ($var === "ab" || 'cd') {} -if ("ab" || 'cd' === $var) {} -if (2 > $value || 3 < $var) {} -if ($value == true && (/* comment */ 2 > test())) {} -if ((int) 5 > $var) {} -if ((int) $var > (int) 5) {} -if (true == function() { return false;}){} -if (function() { return false;} == true){} - -if (is_array($val) - && array($foo) === array($bar) - && [$foo] === [$bar] - && array('foo', 'bar') === array($foo, $bar) - && ['foo', 'bar'] === [$foo, $bar] - && array('foo' => true, 'bar' => false) === array(getContents()) - && ['foo' => true, 'bar' => false] === array(getContents()) - && array(getContents()) === ['foo' => true, 'bar' => false] -) { -} - -if ($this->cfg['some_closure']() == 2) { -} - -if (is_array($val) - && array(get_class($val[0]), $val[1]) == array('someNamespace\\className', 'method') -) { -} - -if (is_array($val) - && array('someNamespace\\className', 'method') == array(get_class($val[0]), $val[1]) -) { -} - -if ([function() { echo 'hi'; }] === [$foo] - && [$foo] === [function() { echo 'hi'; }] - && [function() { echo 'hi'; }, $bar] === [$foo] - && [$foo] === [function() { echo 'hi'; }, $bar] -) { -} - -echo match (5 == $num) { - true => "true\n", - false => "false\n" -}; - -echo match ($text) { - 'foo' => 10 === $y, - 10 === $y => 'bar', -}; - -1 ?? $nullCoalescingShouldNotTriggerSniff; - -1 + 2 === $sniffBailsArithmeticToken; - -'string' . 'concat' === $sniffBailsStringConcatToken; - -1 != $value; -1 <> $value; -1 >= $value; -1 <= $value; -1 <=> $value; diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/ControlStructures/DisallowYodaConditionsUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/ControlStructures/DisallowYodaConditionsUnitTest.php deleted file mode 100644 index 64a487d5..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/ControlStructures/DisallowYodaConditionsUnitTest.php +++ /dev/null @@ -1,95 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\ControlStructures; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the DisallowYodaConditions sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\ControlStructures\DisallowYodaConditionsSniff - */ -final class DisallowYodaConditionsUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @return array - */ - public function getErrorList() - { - return [ - 7 => 1, - 8 => 1, - 12 => 1, - 13 => 2, - 18 => 1, - 19 => 1, - 24 => 1, - 25 => 1, - 30 => 1, - 31 => 1, - 40 => 1, - 47 => 1, - 48 => 1, - 50 => 1, - 52 => 1, - 57 => 1, - 58 => 1, - 62 => 1, - 68 => 1, - 97 => 3, - 98 => 3, - 105 => 1, - 128 => 1, - 129 => 2, - 130 => 1, - 131 => 1, - 133 => 1, - 139 => 1, - 140 => 1, - 141 => 1, - 142 => 1, - 156 => 1, - 160 => 1, - 167 => 1, - 173 => 1, - 174 => 1, - 183 => 1, - 184 => 1, - 185 => 1, - 186 => 1, - 187 => 1, - ]; - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/ControlStructures/InlineControlStructureUnitTest.1.inc b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/ControlStructures/InlineControlStructureUnitTest.1.inc deleted file mode 100644 index 739ba40a..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/ControlStructures/InlineControlStructureUnitTest.1.inc +++ /dev/null @@ -1,278 +0,0 @@ - 0; $i--) echo 'hello'; - -while ($something) echo 'hello'; - -do { - $i--; -} while ($something); - -if(true) - $someObject->{$name}; - -if (true) : - $foo = true; -endif; - -while (true) : - $foo = true; -endwhile; - -for ($i; $i > 0; $i--) : - echo 'hello'; -endfor; - -foreach ($array as $element) : - echo 'hello'; -endforeach; - -while (!$this->readLine($tokens, $tag)); -while (!$this->readLine($tokens, $tag)); //skip to end of file - -foreach ($cookies as $cookie) - if ($cookie->match($uri, $matchSessionCookies, $now)) - $ret[] = $cookie; - -foreach ($stringParade as $hit) - $hitParade[] = $hit + 0; //cast to integer - -if ($foo) : - echo 'true'; -elseif ($something) : - echo 'foo'; -else: - echo 'false'; -endif; - -function test() -{ - if ($a) - $a.=' '.($b ? 'b' : ($c ? ($d ? 'd' : 'c') : '')); -} - -if ($a) - foreach ($b as $c) { - if ($d) { - $e=$f; - $g=$h; - } elseif ($i==0) { - $j=$k; - } - } - -?> -
    - scenario == 'simple') $widget->renderPager() ?> -
    - -error): - case Shop_Customer :: ERROR_INVALID_GENDER: ?> - Ungültiges Geschlecht! - - Die eingetragene E-Mail-Adresse ist bereits registriert. - allowShopping !== true): - if ($this->status != Shop_Cart :: OK): - switch ($this->status): - case Shop_Cart :: NOT_FOUND: - echo 'foo'; - endswitch; - endif; -else: - echo 'foo'; -endif; - -// ELSE IF split over multiple lines (not inline) -if ($test) { -} else - if ($test) { - } else { - } - -switch($response = \Bar::baz('bat', function ($foo) { - return 'bar'; -})) { - case 1: - return 'test'; - - case 2: - return 'other'; -} - -$stuff = [1,2,3]; -foreach($stuff as $num) - if ($num %2 ) { - echo "even"; - } else { - echo "odd"; - } - -$i = 0; -foreach($stuff as $num) - do { - echo $i; - $i++; - } while ($i < 5); - -foreach($stuff as $num) - if (true) { - echo "true1\n"; - } - if (true) { - echo "true2\n"; - } - -if ($foo) echo 'foo'; -elseif ($bar) echo 'bar'; -else echo 'baz'; - -switch ($type) { - case 1: - if ($foo) { - return true; - } elseif ($baz) - return true; - else { - echo 'else'; - } - break; -} - -foreach ($sql as $s) - if (!$this->execute) echo "
    ",$s.";\n
    "; - else { - $ok = $this->connDest->Execute($s); - if (!$ok) - if ($this->neverAbort) $ret = false; - else return false; - } - -if ($bar) - if ($foo) echo 'hi'; // lol - -if ($level == 'district') - \DB::update(<< $num) - return bar( - baz( - "foobarbaz" - ) - ); - break; -} - -do { - $i++; -} -// Comment -while ($i < 10); - -if ($this) { - if ($that) - foo(${$a[$b]}); -} - -while (!$this->readLine($tokens, $tag)); //phpcs:ignore Standard.Category.Sniff - -while (!$this->readLine($tokens, $tag)); // comment - -while (!$this->readLine($tokens, $tag)); /* comment */ - -foreach ($stringParade as $hit) - $hitParade[] = $hit + 0; // phpcs:ignore Standard.Category.Sniff - -if ($bar) - if ($foo) echo 'hi'; /* @phpcs:ignore Standard.Category.Sniff */ - -if (true) $callable = function () { - return true; -}; - -foreach ([] as $a) -echo 'bar'; -{ - echo 'baz'; -} - -// Issue 2822. -$i = 10; -while ($i > 0 && --$i); - -for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++); - -if ($this->valid(fn(): bool => 2 > 1)) { -} - -// Issue 3345. -function testMultiCatch() -{ - if (true) - try { - } catch (\LogicException $e) { - } catch (\Exception $e) { - } -} - -function testFinally() -{ - if (true) - try { - } catch (\LogicException $e) { - } finally { - } -} - -if ($something) { - echo 'hello'; -} else /* comment */ if ($somethingElse) echo 'hi'; diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/ControlStructures/InlineControlStructureUnitTest.1.inc.fixed b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/ControlStructures/InlineControlStructureUnitTest.1.inc.fixed deleted file mode 100644 index 9a89b0e3..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/ControlStructures/InlineControlStructureUnitTest.1.inc.fixed +++ /dev/null @@ -1,314 +0,0 @@ - 0; $i--) { echo 'hello'; -} - -while ($something) { echo 'hello'; -} - -do { - $i--; -} while ($something); - -if(true) { - $someObject->{$name}; -} - -if (true) : - $foo = true; -endif; - -while (true) : - $foo = true; -endwhile; - -for ($i; $i > 0; $i--) : - echo 'hello'; -endfor; - -foreach ($array as $element) : - echo 'hello'; -endforeach; - -while (!$this->readLine($tokens, $tag)); -while (!$this->readLine($tokens, $tag)); //skip to end of file - -foreach ($cookies as $cookie) { - if ($cookie->match($uri, $matchSessionCookies, $now)) { - $ret[] = $cookie; - } -} - -foreach ($stringParade as $hit) { - $hitParade[] = $hit + 0; //cast to integer -} - -if ($foo) : - echo 'true'; -elseif ($something) : - echo 'foo'; -else: - echo 'false'; -endif; - -function test() -{ - if ($a) { - $a.=' '.($b ? 'b' : ($c ? ($d ? 'd' : 'c') : '')); - } -} - -if ($a) { - foreach ($b as $c) { - if ($d) { - $e=$f; - $g=$h; - } elseif ($i==0) { - $j=$k; - } - } -} - -?> -
    - scenario == 'simple') { $widget->renderPager(); } ?> -
    - -error): - case Shop_Customer :: ERROR_INVALID_GENDER: ?> - Ungültiges Geschlecht! - - Die eingetragene E-Mail-Adresse ist bereits registriert. - allowShopping !== true): - if ($this->status != Shop_Cart :: OK): - switch ($this->status): - case Shop_Cart :: NOT_FOUND: - echo 'foo'; - endswitch; - endif; -else: - echo 'foo'; -endif; - -// ELSE IF split over multiple lines (not inline) -if ($test) { -} else - if ($test) { - } else { - } - -switch($response = \Bar::baz('bat', function ($foo) { - return 'bar'; -})) { - case 1: - return 'test'; - - case 2: - return 'other'; -} - -$stuff = [1,2,3]; -foreach($stuff as $num) { - if ($num %2 ) { - echo "even"; - } else { - echo "odd"; - } -} - -$i = 0; -foreach($stuff as $num) { - do { - echo $i; - $i++; - } while ($i < 5); -} - -foreach($stuff as $num) { - if (true) { - echo "true1\n"; - } -} - if (true) { - echo "true2\n"; - } - -if ($foo) { echo 'foo'; -} elseif ($bar) { echo 'bar'; -} else { echo 'baz'; -} - -switch ($type) { - case 1: - if ($foo) { - return true; - } elseif ($baz) { - return true; - } else { - echo 'else'; - } - break; -} - -foreach ($sql as $s) { - if (!$this->execute) { echo "
    ",$s.";\n
    "; - } else { - $ok = $this->connDest->Execute($s); - if (!$ok) { - if ($this->neverAbort) { $ret = false; - } else { return false; - } - } - } -} - -if ($bar) { - if ($foo) { echo 'hi'; // lol - } -} - -if ($level == 'district') { - \DB::update(<< $num) { - return bar( - baz( - "foobarbaz" - ) - ); - } - break; -} - -do { - $i++; -} -// Comment -while ($i < 10); - -if ($this) { - if ($that) { - foo(${$a[$b]}); - } -} - -while (!$this->readLine($tokens, $tag)); //phpcs:ignore Standard.Category.Sniff - -while (!$this->readLine($tokens, $tag)); // comment - -while (!$this->readLine($tokens, $tag)); /* comment */ - -foreach ($stringParade as $hit) { - $hitParade[] = $hit + 0; // phpcs:ignore Standard.Category.Sniff -} -if ($bar) { - if ($foo) { echo 'hi'; /* @phpcs:ignore Standard.Category.Sniff */ - } -} -if (true) { $callable = function () { - return true; -}; -} - -foreach ([] as $a) { -echo 'bar'; -} -{ - echo 'baz'; -} - -// Issue 2822. -$i = 10; -while ($i > 0 && --$i); - -for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++); - -if ($this->valid(fn(): bool => 2 > 1)) { -} - -// Issue 3345. -function testMultiCatch() -{ - if (true) { - try { - } catch (\LogicException $e) { - } catch (\Exception $e) { - } - } -} - -function testFinally() -{ - if (true) { - try { - } catch (\LogicException $e) { - } finally { - } - } -} - -if ($something) { - echo 'hello'; -} else /* comment */ if ($somethingElse) { echo 'hi'; -} diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/ControlStructures/InlineControlStructureUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/ControlStructures/InlineControlStructureUnitTest.php deleted file mode 100644 index afcaa3a3..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/ControlStructures/InlineControlStructureUnitTest.php +++ /dev/null @@ -1,119 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\ControlStructures; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the InlineControlStructure sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\ControlStructures\InlineControlStructureSniff - */ -final class InlineControlStructureUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getErrorList($testFile='') - { - switch ($testFile) { - case 'InlineControlStructureUnitTest.1.inc': - return [ - 3 => 1, - 7 => 1, - 11 => 1, - 13 => 1, - 15 => 1, - 17 => 1, - 23 => 1, - 45 => 1, - 46 => 1, - 49 => 1, - 62 => 1, - 66 => 1, - 78 => 1, - 120 => 1, - 128 => 1, - 134 => 1, - 142 => 1, - 143 => 1, - 144 => 1, - 150 => 1, - 158 => 1, - 159 => 1, - 162 => 1, - 163 => 1, - 164 => 1, - 167 => 1, - 168 => 1, - 170 => 1, - 178 => 1, - 185 => 1, - 188 => 2, - 191 => 1, - 195 => 1, - 198 => 1, - 206 => 1, - 222 => 1, - 232 => 1, - 235 => 1, - 236 => 1, - 238 => 1, - 242 => 1, - 260 => 1, - 269 => 1, - 278 => 1, - ]; - - case 'InlineControlStructureUnitTest.1.js': - return [ - 3 => 1, - 7 => 1, - 11 => 1, - 13 => 1, - 15 => 1, - 21 => 1, - 27 => 1, - 30 => 1, - 35 => 1, - ]; - - default: - return []; - }//end switch - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Debug/CSSLintUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Debug/CSSLintUnitTest.php deleted file mode 100644 index e4afa67b..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Debug/CSSLintUnitTest.php +++ /dev/null @@ -1,77 +0,0 @@ - - * @copyright 2019 Juliette Reinders Folmer. All rights reserved. - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\Debug; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; -use PHP_CodeSniffer\Config; - -/** - * Unit test class for the CSSLint sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\Debug\CSSLintSniff - * @covers \PHP_CodeSniffer\Config::getExecutablePath - * @group Windows - */ -final class CSSLintUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Should this test be skipped for some reason. - * - * @return bool - */ - protected function shouldSkipTest() - { - $csslintPath = Config::getExecutablePath('csslint'); - if ($csslintPath === null) { - return true; - } - - return false; - - }//end shouldSkipTest() - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @return array - */ - public function getErrorList() - { - return []; - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return [ - 3 => 1, - 4 => 1, - 5 => 1, - ]; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Debug/ESLintUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Debug/ESLintUnitTest.php deleted file mode 100644 index e035c208..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Debug/ESLintUnitTest.php +++ /dev/null @@ -1,122 +0,0 @@ - - * @copyright 2019 Juliette Reinders Folmer. All rights reserved. - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\Debug; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; -use PHP_CodeSniffer\Config; - -/** - * Unit test class for the ESLint sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\Debug\ESLintSniff - */ -final class ESLintUnitTest extends AbstractSniffUnitTest -{ - - /** - * Basic ESLint config to use for testing the sniff. - * - * @var string - */ - const ESLINT_CONFIG = '{ - "parserOptions": { - "ecmaVersion": 5, - "sourceType": "script", - "ecmaFeatures": {} - }, - "rules": { - "no-undef": 2, - "no-unused-vars": 2 - } -}'; - - - /** - * Sets up this unit test. - * - * @before - * - * @return void - */ - protected function setUpPrerequisites() - { - parent::setUpPrerequisites(); - - $cwd = getcwd(); - file_put_contents($cwd.'/.eslintrc.json', self::ESLINT_CONFIG); - - putenv('ESLINT_USE_FLAT_CONFIG=false'); - - }//end setUpPrerequisites() - - - /** - * Remove artifact. - * - * @after - * - * @return void - */ - protected function resetProperties() - { - $cwd = getcwd(); - unlink($cwd.'/.eslintrc.json'); - - }//end resetProperties() - - - /** - * Should this test be skipped for some reason. - * - * @return bool - */ - protected function shouldSkipTest() - { - $eslintPath = Config::getExecutablePath('eslint'); - if ($eslintPath === null) { - return true; - } - - return false; - - }//end shouldSkipTest() - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @return array - */ - public function getErrorList() - { - return [1 => 2]; - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Debug/JSHintUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Debug/JSHintUnitTest.php deleted file mode 100644 index 25451599..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Debug/JSHintUnitTest.php +++ /dev/null @@ -1,71 +0,0 @@ - - * @copyright 2019 Juliette Reinders Folmer. All rights reserved. - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\Debug; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; -use PHP_CodeSniffer\Config; - -/** - * Unit test class for the JSHint sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\Debug\JSHintSniff - */ -final class JSHintUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Should this test be skipped for some reason. - * - * @return bool - */ - protected function shouldSkipTest() - { - $jshintPath = Config::getExecutablePath('jshint'); - if ($jshintPath === null) { - return true; - } - - return false; - - }//end shouldSkipTest() - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @return array - */ - public function getErrorList() - { - return []; - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return [3 => 2]; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Files/LowercasedFilenameUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Files/LowercasedFilenameUnitTest.php deleted file mode 100644 index ea7d5aa8..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Files/LowercasedFilenameUnitTest.php +++ /dev/null @@ -1,106 +0,0 @@ - - * @copyright 2010-2014 Andy Grunwald - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\Files; - -use PHP_CodeSniffer\Files\DummyFile; -use PHP_CodeSniffer\Ruleset; -use PHP_CodeSniffer\Tests\ConfigDouble; -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the LowercasedFilename sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\Files\LowercasedFilenameSniff - */ -final class LowercasedFilenameUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Get a list of all test files to check. - * - * @param string $testFileBase The base path that the unit tests files will have. - * - * @return string[] - */ - protected function getTestFiles($testFileBase) - { - $testFileDir = dirname($testFileBase); - $testFiles = parent::getTestFiles($testFileBase); - $testFiles[] = $testFileDir.DIRECTORY_SEPARATOR.'lowercased_filename_unit_test.inc'; - - return $testFiles; - - }//end getTestFiles() - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getErrorList($testFile='') - { - switch ($testFile) { - case 'LowercasedFilenameUnitTest.1.inc': - case 'LowercasedFilenameUnitTest.2.inc': - return [1 => 1]; - default: - return []; - } - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - - /** - * Test the sniff bails early when handling STDIN. - * - * @return void - */ - public function testStdIn() - { - $config = new ConfigDouble(); - $config->standards = ['Generic']; - $config->sniffs = ['Generic.Files.LowercasedFilename']; - - $ruleset = new Ruleset($config); - - $content = 'process(); - - $this->assertSame(0, $file->getErrorCount()); - $this->assertSame(0, $file->getWarningCount()); - $this->assertCount(0, $file->getErrors()); - - }//end testStdIn() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Formatting/SpaceAfterCastUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Formatting/SpaceAfterCastUnitTest.php deleted file mode 100644 index 8f26eda2..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Formatting/SpaceAfterCastUnitTest.php +++ /dev/null @@ -1,103 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\Formatting; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the SpaceAfterCast sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\Formatting\SpaceAfterCastSniff - */ -final class SpaceAfterCastUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the test file to run. - * - * @return array - */ - public function getErrorList($testFile='') - { - switch ($testFile) { - case 'SpaceAfterCastUnitTest.1.inc': - return [ - 4 => 1, - 5 => 1, - 8 => 1, - 9 => 1, - 12 => 1, - 13 => 1, - 16 => 1, - 17 => 1, - 20 => 1, - 21 => 1, - 24 => 1, - 25 => 1, - 28 => 1, - 29 => 1, - 32 => 1, - 33 => 1, - 36 => 1, - 37 => 1, - 40 => 1, - 41 => 1, - 44 => 1, - 45 => 1, - 51 => 1, - 53 => 1, - 55 => 1, - 58 => 1, - 64 => 1, - 72 => 1, - 73 => 1, - 75 => 1, - 76 => 1, - 78 => 1, - 82 => 1, - 84 => 1, - 85 => 1, - 86 => 1, - 88 => 1, - 93 => 1, - 97 => 1, - 99 => 1, - 100 => 1, - ]; - - default: - return []; - }//end switch - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Formatting/SpaceAfterNotUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Formatting/SpaceAfterNotUnitTest.php deleted file mode 100644 index a439517a..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Formatting/SpaceAfterNotUnitTest.php +++ /dev/null @@ -1,96 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\Formatting; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the SpaceAfterNot sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\Formatting\SpaceAfterNotSniff - */ -final class SpaceAfterNotUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getErrorList($testFile='') - { - switch ($testFile) { - case 'SpaceAfterNotUnitTest.1.inc': - return [ - 3 => 2, - 4 => 2, - 5 => 2, - 6 => 1, - 7 => 1, - 8 => 1, - 11 => 1, - 14 => 1, - 17 => 1, - 20 => 1, - 28 => 1, - 38 => 2, - 39 => 2, - 40 => 1, - 41 => 1, - 42 => 1, - 48 => 1, - 51 => 1, - 56 => 2, - 57 => 1, - 58 => 1, - 59 => 1, - 62 => 1, - 65 => 1, - 68 => 1, - 71 => 1, - 79 => 1, - ]; - - case 'SpaceAfterNotUnitTest.js': - return [ - 2 => 2, - 4 => 2, - 5 => 1, - ]; - - default: - return []; - }//end switch - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Functions/CallTimePassByReferenceUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Functions/CallTimePassByReferenceUnitTest.php deleted file mode 100644 index b0819dac..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Functions/CallTimePassByReferenceUnitTest.php +++ /dev/null @@ -1,75 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\Functions; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the CallTimePassByReference sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\Functions\CallTimePassByReferenceSniff - */ -final class CallTimePassByReferenceUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the test file to process. - * - * @return array - */ - public function getErrorList($testFile='CallTimePassByReferenceUnitTest.1.inc') - { - switch ($testFile) { - case 'CallTimePassByReferenceUnitTest.1.inc': - return [ - 9 => 1, - 12 => 1, - 15 => 1, - 18 => 2, - 23 => 1, - 30 => 1, - 41 => 1, - 50 => 1, - 51 => 1, - 54 => 1, - 62 => 1, - 63 => 1, - 64 => 1, - ]; - - default: - return []; - }//end switch - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Functions/FunctionCallArgumentSpacingUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Functions/FunctionCallArgumentSpacingUnitTest.php deleted file mode 100644 index 35bf11cb..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Functions/FunctionCallArgumentSpacingUnitTest.php +++ /dev/null @@ -1,96 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\Functions; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the FunctionCallArgumentSpacing sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\Functions\FunctionCallArgumentSpacingSniff - */ -final class FunctionCallArgumentSpacingUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the test file to process. - * - * @return array - */ - public function getErrorList($testFile='') - { - switch ($testFile) { - case 'FunctionCallArgumentSpacingUnitTest.1.inc': - return [ - 5 => 1, - 6 => 1, - 7 => 2, - 8 => 1, - 11 => 1, - 12 => 1, - 13 => 1, - 42 => 3, - 43 => 3, - 45 => 1, - 46 => 2, - 79 => 1, - 82 => 1, - 93 => 1, - 105 => 1, - 107 => 1, - 108 => 2, - 114 => 1, - 115 => 1, - 119 => 1, - 125 => 2, - 130 => 2, - 131 => 1, - 132 => 2, - 133 => 2, - 134 => 1, - 154 => 2, - 155 => 1, - 162 => 2, - 170 => 1, - 177 => 1, - 190 => 2, - 191 => 2, - 197 => 1, - ]; - - default: - return []; - }//end switch - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Functions/OpeningFunctionBraceKernighanRitchieUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Functions/OpeningFunctionBraceKernighanRitchieUnitTest.php deleted file mode 100644 index 747d54d8..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Functions/OpeningFunctionBraceKernighanRitchieUnitTest.php +++ /dev/null @@ -1,116 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\Functions; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the OpeningFunctionBraceKernighanRitchie sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\Functions\OpeningFunctionBraceKernighanRitchieSniff - */ -final class OpeningFunctionBraceKernighanRitchieUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Get a list of CLI values to set before the file is tested. - * - * @param string $testFile The name of the file being tested. - * @param \PHP_CodeSniffer\Config $config The config data for the test run. - * - * @return void - */ - public function setCliValues($testFile, $config) - { - if ($testFile === 'OpeningFunctionBraceKernighanRitchieUnitTest.2.inc') { - $config->tabWidth = 4; - } - - }//end setCliValues() - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the test file to process. - * - * @return array - */ - public function getErrorList($testFile='') - { - switch ($testFile) { - case 'OpeningFunctionBraceKernighanRitchieUnitTest.1.inc': - return [ - 9 => 1, - 13 => 1, - 17 => 1, - 29 => 1, - 33 => 1, - 37 => 1, - 53 => 1, - 58 => 1, - 63 => 1, - 77 => 1, - 82 => 1, - 87 => 1, - 104 => 1, - 119 => 1, - 123 => 1, - 127 => 1, - 132 => 1, - 137 => 1, - 142 => 1, - 157 => 1, - 162 => 1, - 171 => 1, - 181 => 1, - 191 => 1, - 197 => 1, - 203 => 1, - 213 => 1, - 214 => 1, - 222 => 1, - 224 => 1, - 227 => 1, - ]; - case 'OpeningFunctionBraceKernighanRitchieUnitTest.2.inc': - return [ - 6 => 1, - 10 => 1, - 14 => 1, - 18 => 1, - ]; - default: - return []; - }//end switch - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Metrics/CyclomaticComplexityUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Metrics/CyclomaticComplexityUnitTest.php deleted file mode 100644 index f7c75f79..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Metrics/CyclomaticComplexityUnitTest.php +++ /dev/null @@ -1,77 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\Metrics; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the CyclomaticComplexity sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\Metrics\CyclomaticComplexitySniff - */ -final class CyclomaticComplexityUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getErrorList($testFile='') - { - switch ($testFile) { - case 'CyclomaticComplexityUnitTest.1.inc': - return [118 => 1]; - default: - return []; - } - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getWarningList($testFile='') - { - switch ($testFile) { - case 'CyclomaticComplexityUnitTest.1.inc': - return [ - 45 => 1, - 72 => 1, - 189 => 1, - 237 => 1, - 285 => 1, - 333 => 1, - 381 => 1, - 417 => 1, - 445 => 1, - ]; - default: - return []; - } - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Metrics/NestingLevelUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Metrics/NestingLevelUnitTest.php deleted file mode 100644 index c26ca456..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Metrics/NestingLevelUnitTest.php +++ /dev/null @@ -1,70 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\Metrics; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the NestingLevel sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\Metrics\NestingLevelSniff - */ -final class NestingLevelUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the test file to process. - * - * @return array - */ - public function getErrorList($testFile='') - { - switch ($testFile) { - case 'NestingLevelUnitTest.1.inc': - return [73 => 1]; - default: - return []; - } - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @param string $testFile The name of the test file to process. - * - * @return array - */ - public function getWarningList($testFile='') - { - switch ($testFile) { - case 'NestingLevelUnitTest.1.inc': - return [ - 27 => 1, - 46 => 1, - ]; - default: - return []; - } - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/NamingConventions/AbstractClassNamePrefixUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/NamingConventions/AbstractClassNamePrefixUnitTest.php deleted file mode 100644 index 52dabed8..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/NamingConventions/AbstractClassNamePrefixUnitTest.php +++ /dev/null @@ -1,67 +0,0 @@ - - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\NamingConventions; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the AbstractClassNamePrefix sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\NamingConventions\AbstractClassNamePrefixSniff - */ -final class AbstractClassNamePrefixUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the test file. - * - * @return array - */ - public function getErrorList($testFile='') - { - switch ($testFile) { - case 'AbstractClassNamePrefixUnitTest.1.inc': - return [ - 3 => 1, - 7 => 1, - 11 => 1, - 16 => 1, - 29 => 1, - 44 => 1, - 45 => 1, - ]; - default: - return []; - } - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/NamingConventions/CamelCapsFunctionNameUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/NamingConventions/CamelCapsFunctionNameUnitTest.php deleted file mode 100644 index 5e33a399..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/NamingConventions/CamelCapsFunctionNameUnitTest.php +++ /dev/null @@ -1,105 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\NamingConventions; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the CamelCapsFunctionName sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\NamingConventions\CamelCapsFunctionNameSniff - */ -final class CamelCapsFunctionNameUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the test file to process. - * - * @return array - */ - public function getErrorList($testFile='') - { - switch ($testFile) { - case 'CamelCapsFunctionNameUnitTest.1.inc': - return[ - 10 => 1, - 11 => 1, - 12 => 1, - 13 => 1, - 16 => 1, - 17 => 1, - 20 => 1, - 21 => 1, - 24 => 1, - 25 => 1, - 30 => 1, - 31 => 1, - 50 => 1, - 52 => 1, - 53 => 2, - 57 => 1, - 58 => 1, - 59 => 1, - 60 => 1, - 61 => 1, - 62 => 1, - 63 => 1, - 64 => 1, - 65 => 1, - 66 => 1, - 67 => 1, - 68 => 2, - 69 => 1, - 71 => 1, - 72 => 1, - 73 => 2, - 118 => 1, - 144 => 1, - 146 => 1, - 147 => 2, - 158 => 1, - 159 => 1, - 179 => 1, - 180 => 2, - 183 => 1, - 184 => 1, - 189 => 1, - 197 => 1, - 204 => 1, - ]; - default: - return []; - }//end switch - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/NamingConventions/ConstructorNameUnitTest.inc b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/NamingConventions/ConstructorNameUnitTest.inc deleted file mode 100644 index 2fb02d6a..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/NamingConventions/ConstructorNameUnitTest.inc +++ /dev/null @@ -1,130 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\NamingConventions; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the ConstructorName sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\NamingConventions\ConstructorNameSniff - */ -final class ConstructorNameUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @return array - */ - public function getErrorList() - { - return [ - 6 => 1, - 11 => 1, - 47 => 1, - 62 => 1, - 91 => 1, - 103 => 1, - 104 => 1, - 112 => 1, - 120 => 1, - 121 => 1, - 126 => 1, - 127 => 1, - ]; - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/NamingConventions/InterfaceNameSuffixUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/NamingConventions/InterfaceNameSuffixUnitTest.php deleted file mode 100644 index 1d89d1b3..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/NamingConventions/InterfaceNameSuffixUnitTest.php +++ /dev/null @@ -1,62 +0,0 @@ - - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\NamingConventions; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the InterfaceNameSuffix sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\NamingConventions\InterfaceNameSuffixSniff - */ -final class InterfaceNameSuffixUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the test file. - * - * @return array - */ - public function getErrorList($testFile='') - { - switch ($testFile) { - case 'InterfaceNameSuffixUnitTest.1.inc': - return [ - 5 => 1, - 9 => 1, - ]; - default: - return []; - } - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/NamingConventions/TraitNameSuffixUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/NamingConventions/TraitNameSuffixUnitTest.php deleted file mode 100644 index 391cbfc7..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/NamingConventions/TraitNameSuffixUnitTest.php +++ /dev/null @@ -1,63 +0,0 @@ - - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\NamingConventions; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the TraitNameSuffix sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\NamingConventions\TraitNameSuffixSniff - */ -final class TraitNameSuffixUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the test file to process. - * - * @return array - */ - public function getErrorList($testFile='') - { - switch ($testFile) { - case 'TraitNameSuffixUnitTest.1.inc': - return [ - 3 => 1, - 9 => 1, - ]; - - default: - return []; - } - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/NamingConventions/UpperCaseConstantNameUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/NamingConventions/UpperCaseConstantNameUnitTest.php deleted file mode 100644 index 34a535ab..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/NamingConventions/UpperCaseConstantNameUnitTest.php +++ /dev/null @@ -1,74 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\NamingConventions; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the ValidConstantName sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\NamingConventions\UpperCaseConstantNameSniff - */ -final class UpperCaseConstantNameUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the test file to process. - * - * @return array - */ - public function getErrorList($testFile='') - { - switch ($testFile) { - case 'UpperCaseConstantNameUnitTest.1.inc': - return [ - 8 => 1, - 10 => 1, - 12 => 1, - 14 => 1, - 19 => 1, - 28 => 1, - 30 => 1, - 40 => 1, - 41 => 1, - 45 => 1, - 51 => 1, - 71 => 1, - 73 => 1, - ]; - default: - return []; - } - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/PHP/DisallowShortOpenTagUnitTest.3.inc b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/PHP/DisallowShortOpenTagUnitTest.3.inc deleted file mode 100644 index 6c4f83d5..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/PHP/DisallowShortOpenTagUnitTest.3.inc +++ /dev/null @@ -1,20 +0,0 @@ -// Test warning for when short_open_tag is off. - -Some content Some more content - -// Test multi-line. -Some content Some more content - -// Make sure skipping works. -Some content Some more content - -// Test snippet clipping with a line that has more than 40 characters after the PHP open tag. -Some content Some longer content to trigger snippet clipping - -// Only recognize closing tag after opener. -// The test below must be the last test in the file because there must be no PHP close tag after it. -Some?> content - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\PHP; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the DisallowShortOpenTag sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\PHP\DisallowShortOpenTagSniff - */ -final class DisallowShortOpenTagUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Get a list of all test files to check. - * - * @param string $testFileBase The base path that the unit tests files will have. - * - * @return string[] - */ - protected function getTestFiles($testFileBase) - { - $testFiles = [$testFileBase.'1.inc']; - - $option = (bool) ini_get('short_open_tag'); - if ($option === true) { - $testFiles[] = $testFileBase.'2.inc'; - } else { - $testFiles[] = $testFileBase.'3.inc'; - $testFiles[] = $testFileBase.'4.inc'; - } - - return $testFiles; - - }//end getTestFiles() - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getErrorList($testFile='') - { - switch ($testFile) { - case 'DisallowShortOpenTagUnitTest.1.inc': - return [ - 5 => 1, - 6 => 1, - 7 => 1, - 10 => 1, - ]; - case 'DisallowShortOpenTagUnitTest.2.inc': - return [ - 2 => 1, - 3 => 1, - 4 => 1, - 7 => 1, - ]; - default: - return []; - }//end switch - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getWarningList($testFile='') - { - switch ($testFile) { - case 'DisallowShortOpenTagUnitTest.1.inc': - return []; - case 'DisallowShortOpenTagUnitTest.3.inc': - return [ - 3 => 1, - 6 => 1, - 11 => 1, - 16 => 1, - ]; - default: - return []; - }//end switch - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/PHP/LowerCaseConstantUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/PHP/LowerCaseConstantUnitTest.php deleted file mode 100644 index a2725864..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/PHP/LowerCaseConstantUnitTest.php +++ /dev/null @@ -1,105 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\PHP; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the LowerCaseConstant sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\PHP\LowerCaseConstantSniff - */ -final class LowerCaseConstantUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getErrorList($testFile='') - { - switch ($testFile) { - case 'LowerCaseConstantUnitTest.1.inc': - return [ - 7 => 1, - 10 => 1, - 15 => 1, - 16 => 1, - 23 => 1, - 26 => 1, - 31 => 1, - 32 => 1, - 39 => 1, - 42 => 1, - 47 => 1, - 48 => 1, - 70 => 1, - 71 => 1, - 87 => 1, - 89 => 1, - 90 => 1, - 92 => 2, - 94 => 2, - 95 => 1, - 100 => 2, - 104 => 1, - 108 => 1, - 118 => 1, - 119 => 1, - 120 => 1, - 121 => 1, - 125 => 1, - 129 => 1, - 149 => 1, - 153 => 1, - ]; - - case 'LowerCaseConstantUnitTest.js': - return [ - 2 => 1, - 3 => 1, - 4 => 1, - 7 => 1, - 8 => 1, - 12 => 1, - 13 => 1, - 14 => 1, - ]; - - default: - return []; - }//end switch - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/PHP/LowerCaseKeywordUnitTest.inc b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/PHP/LowerCaseKeywordUnitTest.inc deleted file mode 100644 index 10d3ed69..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/PHP/LowerCaseKeywordUnitTest.inc +++ /dev/null @@ -1,64 +0,0 @@ - $x; -$r = Match ($x) { - 1 => 1, - 2 => 2, - DEFAULT, => 3, -}; - -class Reading { - Public READOnly int $var; -} - -EnuM ENUM: string -{ - Case HEARTS; -} - -new Class {}; -new clasS extends stdClass {}; -new class {}; - -if (isset($a) && !empty($a)) { unset($a); } -if (ISSET($a) && !Empty($a)) { UnSeT($a); } -eval('foo'); -eVaL('foo'); - -$c = function() { - Yield /*comment*/ From fun(); - YIELD - /*comment*/ - FROM fun(); -} - -__HALT_COMPILER(); // An exception due to phar support. -function diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/PHP/LowerCaseKeywordUnitTest.inc.fixed b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/PHP/LowerCaseKeywordUnitTest.inc.fixed deleted file mode 100644 index 547f72fc..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/PHP/LowerCaseKeywordUnitTest.inc.fixed +++ /dev/null @@ -1,64 +0,0 @@ - $x; -$r = match ($x) { - 1 => 1, - 2 => 2, - default, => 3, -}; - -class Reading { - public readonly int $var; -} - -enum ENUM: string -{ - case HEARTS; -} - -new class {}; -new class extends stdClass {}; -new class {}; - -if (isset($a) && !empty($a)) { unset($a); } -if (isset($a) && !empty($a)) { unset($a); } -eval('foo'); -eval('foo'); - -$c = function() { - yield /*comment*/ from fun(); - yield - /*comment*/ - from fun(); -} - -__HALT_COMPILER(); // An exception due to phar support. -function diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/PHP/LowerCaseKeywordUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/PHP/LowerCaseKeywordUnitTest.php deleted file mode 100644 index 31bfad6d..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/PHP/LowerCaseKeywordUnitTest.php +++ /dev/null @@ -1,78 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\PHP; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the LowerCaseKeyword sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\PHP\LowerCaseKeywordSniff - */ -final class LowerCaseKeywordUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @return array - */ - public function getErrorList() - { - return [ - 10 => 3, - 11 => 4, - 12 => 1, - 13 => 3, - 14 => 7, - 15 => 1, - 19 => 1, - 20 => 1, - 21 => 1, - 25 => 1, - 28 => 1, - 31 => 1, - 32 => 1, - 35 => 1, - 39 => 2, - 42 => 1, - 44 => 1, - 47 => 1, - 48 => 1, - 52 => 3, - 54 => 1, - 57 => 2, - 58 => 1, - 60 => 1, - ]; - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/PHP/LowerCaseTypeUnitTest.inc b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/PHP/LowerCaseTypeUnitTest.inc deleted file mode 100644 index fb5b1fd5..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/PHP/LowerCaseTypeUnitTest.inc +++ /dev/null @@ -1,145 +0,0 @@ - $a * $b; -$arrow = fn (Int $a, String $b, BOOL $c, Array $d, Foo\Bar $e) : Float => $a * $b; - -$cl = function (False $a, TRUE $b, Null $c): ?True {}; - -class TypedClassConstants -{ - const UNTYPED = null; - const FLOAT = 'Reserved keyword as name is valid and should not be changed'; - const OBJECT = 'Reserved keyword as name is valid and should not be changed'; - - const ClassName FIRST = null; - public const Int SECOND = 0; - private const ?BOOL THIRD = false; - public const Self FOURTH = null; -} -interface TypedInterfaceConstants -{ - protected const PaRenT FIRST = null; - private const ARRAY SECOND = []; - public const Float THIRD = 2.5; - final const ?STRING FOURTH = 'fourth'; -} -trait TypedTraitConstants { - const IterablE FIRST = null; - const Object SECOND = null; - const Mixed THIRD = 'third'; -} -enum TypedEnumConstants { - public const Iterable|FALSE|NULL FIRST = null; - protected const SELF|Parent /* comment */ |\Fully\Qualified\ClassName|UnQualifiedClass SECOND = null; - private const ClassName|/*comment*/Float|STRING|False THIRD = 'third'; - public const sTRing | aRRaY | FaLSe FOURTH = 'fourth'; -} - -class DNFTypes { - const (Parent&Something)|Float CONST_NAME = 1.5; - - public readonly TRUE|(\A&B) $prop; - - function DNFParamTypes ( - null|(\Package\ClassName&\Package\Other_Class)|INT $DNFinMiddle, - (\Package\ClassName&\Package\Other_Class)|ARRAY $parensAtStart, - False|(\Package\ClassName&\Package\Other_Class) $parentAtEnd, - ) {} - - function DNFReturnTypes ($var): object|(Self&\Package\Other_Class)|sTRINg|false {} -} - -// Intentional error, should be ignored by the sniff. -interface PropertiesNotAllowed { - public $notAllowed; -} diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/PHP/LowerCaseTypeUnitTest.inc.fixed b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/PHP/LowerCaseTypeUnitTest.inc.fixed deleted file mode 100644 index 10be06b0..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/PHP/LowerCaseTypeUnitTest.inc.fixed +++ /dev/null @@ -1,145 +0,0 @@ - $a * $b; -$arrow = fn (int $a, string $b, bool $c, array $d, Foo\Bar $e) : float => $a * $b; - -$cl = function (false $a, true $b, null $c): ?true {}; - -class TypedClassConstants -{ - const UNTYPED = null; - const FLOAT = 'Reserved keyword as name is valid and should not be changed'; - const OBJECT = 'Reserved keyword as name is valid and should not be changed'; - - const ClassName FIRST = null; - public const int SECOND = 0; - private const ?bool THIRD = false; - public const self FOURTH = null; -} -interface TypedInterfaceConstants -{ - protected const parent FIRST = null; - private const array SECOND = []; - public const float THIRD = 2.5; - final const ?string FOURTH = 'fourth'; -} -trait TypedTraitConstants { - const iterable FIRST = null; - const object SECOND = null; - const mixed THIRD = 'third'; -} -enum TypedEnumConstants { - public const iterable|false|null FIRST = null; - protected const self|parent /* comment */ |\Fully\Qualified\ClassName|UnQualifiedClass SECOND = null; - private const ClassName|/*comment*/float|string|false THIRD = 'third'; - public const string | array | false FOURTH = 'fourth'; -} - -class DNFTypes { - const (parent&Something)|float CONST_NAME = 1.5; - - public readonly true|(\A&B) $prop; - - function DNFParamTypes ( - null|(\Package\ClassName&\Package\Other_Class)|int $DNFinMiddle, - (\Package\ClassName&\Package\Other_Class)|array $parensAtStart, - false|(\Package\ClassName&\Package\Other_Class) $parentAtEnd, - ) {} - - function DNFReturnTypes ($var): object|(self&\Package\Other_Class)|string|false {} -} - -// Intentional error, should be ignored by the sniff. -interface PropertiesNotAllowed { - public $notAllowed; -} diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/PHP/LowerCaseTypeUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/PHP/LowerCaseTypeUnitTest.php deleted file mode 100644 index 26219328..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/PHP/LowerCaseTypeUnitTest.php +++ /dev/null @@ -1,117 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\PHP; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the LowerCaseType sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\PHP\LowerCaseTypeSniff - */ -final class LowerCaseTypeUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @return array - */ - public function getErrorList() - { - return [ - 14 => 1, - 15 => 1, - 16 => 1, - 17 => 1, - 18 => 1, - 21 => 4, - 22 => 3, - 23 => 3, - 25 => 1, - 26 => 2, - 27 => 2, - 32 => 4, - 36 => 1, - 37 => 1, - 38 => 1, - 39 => 1, - 43 => 2, - 44 => 1, - 46 => 1, - 49 => 1, - 51 => 2, - 53 => 1, - 55 => 2, - 60 => 1, - 61 => 1, - 62 => 1, - 63 => 1, - 64 => 1, - 65 => 1, - 66 => 1, - 67 => 1, - 68 => 1, - 69 => 1, - 71 => 3, - 72 => 2, - 73 => 3, - 74 => 3, - 78 => 3, - 82 => 2, - 85 => 1, - 94 => 5, - 96 => 4, - 105 => 1, - 106 => 1, - 107 => 1, - 111 => 1, - 112 => 1, - 113 => 1, - 114 => 1, - 117 => 1, - 118 => 1, - 119 => 1, - 122 => 3, - 123 => 2, - 124 => 3, - 125 => 3, - 129 => 2, - 131 => 1, - 134 => 1, - 135 => 1, - 136 => 1, - 139 => 2, - ]; - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - // Warning from getMemberProperties() about parse error. - return [144 => 1]; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Strings/UnnecessaryStringConcatUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Strings/UnnecessaryStringConcatUnitTest.php deleted file mode 100644 index e657e487..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/Strings/UnnecessaryStringConcatUnitTest.php +++ /dev/null @@ -1,87 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\Strings; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the UnnecessaryStringConcat sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\Strings\UnnecessaryStringConcatSniff - */ -final class UnnecessaryStringConcatUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getErrorList($testFile='') - { - switch ($testFile) { - case 'UnnecessaryStringConcatUnitTest.1.inc': - return [ - 2 => 1, - 6 => 1, - 9 => 1, - 12 => 1, - 19 => 1, - 20 => 1, - ]; - - case 'UnnecessaryStringConcatUnitTest.js': - return [ - 1 => 1, - 8 => 1, - 11 => 1, - 14 => 1, - 15 => 1, - ]; - - default: - return []; - }//end switch - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getWarningList($testFile='') - { - switch ($testFile) { - case 'UnnecessaryStringConcatUnitTest.1.inc': - return [ - 33 => 1, - ]; - - default: - return []; - } - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/WhiteSpace/DisallowSpaceIndentUnitTest.1.inc b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/WhiteSpace/DisallowSpaceIndentUnitTest.1.inc deleted file mode 100644 index b19a58d8..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/WhiteSpace/DisallowSpaceIndentUnitTest.1.inc +++ /dev/null @@ -1,125 +0,0 @@ -"; - return "<$name$xmlns$type_str $atts xsi:nil=\"true\"/>"; -// [space][space][space][tab]return "<$name$xmlns$type_str $atts xsi:nil=\"true\"/>"; - return "<$name$xmlns$type_str $atts xsi:nil=\"true\"/>"; -// Doc comments are indent with tabs and one space -//[tab]/** -//[tab][space]* - /** - * CVS revision for HTTP headers. - * - * @var string - * @access private - */ - /** - * - */ - -$str = 'hello - there'; - -/** - * This PHP DocBlock should be fine, even though there is a single space at the beginning. - * - * @var int $x - */ -$x = 1; - -?> - - - Foo - - -
    -
    -
    -
    -
    -
    - - - -"; - return "<$name$xmlns$type_str $atts xsi:nil=\"true\"/>"; -// [space][space][space][tab]return "<$name$xmlns$type_str $atts xsi:nil=\"true\"/>"; - return "<$name$xmlns$type_str $atts xsi:nil=\"true\"/>"; -// Doc comments are indent with tabs and one space -//[tab]/** -//[tab][space]* - /** - * CVS revision for HTTP headers. - * - * @var string - * @access private - */ - /** - * - */ - -$str = 'hello - there'; - -/** - * This PHP DocBlock should be fine, even though there is a single space at the beginning. - * - * @var int $x - */ -$x = 1; - -?> - - - Foo - - -
    -
    -
    -
    -
    -
    - - - -"; - return "<$name$xmlns$type_str $atts xsi:nil=\"true\"/>"; -// [space][space][space][tab]return "<$name$xmlns$type_str $atts xsi:nil=\"true\"/>"; - return "<$name$xmlns$type_str $atts xsi:nil=\"true\"/>"; -// Doc comments are indent with tabs and one space -//[tab]/** -//[tab][space]* - /** - * CVS revision for HTTP headers. - * - * @var string - * @access private - */ - /** - * - */ - -$str = 'hello - there'; - -/** - * This PHP DocBlock should be fine, even though there is a single space at the beginning. - * - * @var int $x - */ -$x = 1; - -?> - - - Foo - - -
    -
    -
    -
    -
    -
    - - - -"; - return "<$name$xmlns$type_str $atts xsi:nil=\"true\"/>"; -// [space][space][space][tab]return "<$name$xmlns$type_str $atts xsi:nil=\"true\"/>"; - return "<$name$xmlns$type_str $atts xsi:nil=\"true\"/>"; -// Doc comments are indent with tabs and one space -//[tab]/** -//[tab][space]* - /** - * CVS revision for HTTP headers. - * - * @var string - * @access private - */ - /** - * - */ - -$str = 'hello - there'; - -/** - * This PHP DocBlock should be fine, even though there is a single space at the beginning. - * - * @var int $x - */ -$x = 1; - -?> - - - Foo - - -
    -
    -
    -
    -
    -
    - - - - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\WhiteSpace; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the DisallowSpaceIndent sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\WhiteSpace\DisallowSpaceIndentSniff - */ -final class DisallowSpaceIndentUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Get a list of CLI values to set before the file is tested. - * - * @param string $testFile The name of the file being tested. - * @param \PHP_CodeSniffer\Config $config The config data for the test run. - * - * @return void - */ - public function setCliValues($testFile, $config) - { - if ($testFile === 'DisallowSpaceIndentUnitTest.2.inc') { - return; - } - - $config->tabWidth = 4; - - }//end setCliValues() - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getErrorList($testFile='') - { - switch ($testFile) { - case 'DisallowSpaceIndentUnitTest.1.inc': - case 'DisallowSpaceIndentUnitTest.2.inc': - return [ - 5 => 1, - 9 => 1, - 15 => 1, - 22 => 1, - 24 => 1, - 30 => 1, - 35 => 1, - 50 => 1, - 55 => 1, - 57 => 1, - 58 => 1, - 59 => 1, - 60 => 1, - 65 => 1, - 66 => 1, - 67 => 1, - 68 => 1, - 69 => 1, - 70 => 1, - 73 => 1, - 77 => 1, - 81 => 1, - 104 => 1, - 105 => 1, - 106 => 1, - 107 => 1, - 108 => 1, - 110 => 1, - 111 => 1, - 112 => 1, - 114 => 1, - 115 => 1, - 117 => 1, - 118 => 1, - 123 => 1, - ]; - - case 'DisallowSpaceIndentUnitTest.3.inc': - return [ - 2 => 1, - 5 => 1, - 10 => 1, - 12 => 1, - 13 => 1, - 14 => 1, - 15 => 1, - ]; - - case 'DisallowSpaceIndentUnitTest.4.inc': - if (PHP_VERSION_ID >= 70300) { - return [ - 7 => 1, - 13 => 1, - ]; - } - - // PHP 7.2 or lower: PHP version which doesn't support flexible heredocs/nowdocs yet. - return []; - - case 'DisallowSpaceIndentUnitTest.js': - return [3 => 1]; - - case 'DisallowSpaceIndentUnitTest.css': - return [2 => 1]; - - default: - return []; - }//end switch - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/WhiteSpace/DisallowTabIndentUnitTest.1.inc b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/WhiteSpace/DisallowTabIndentUnitTest.1.inc deleted file mode 100644 index 74fa5051..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/WhiteSpace/DisallowTabIndentUnitTest.1.inc +++ /dev/null @@ -1,102 +0,0 @@ - 'Czech republic', - 'România' => 'Romania', - 'Magyarország' => 'Hungary', -); - -$var = "$hello $there"; - -?> - - - Foo - - -
    -
    -
    -
    -
    -
    - - - - 'Czech republic', - 'România' => 'Romania', - 'Magyarország' => 'Hungary', -); - -$var = "$hello $there"; - -?> - - - Foo - - -
    -
    -
    -
    -
    -
    - - - - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\WhiteSpace; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the DisallowTabIndent sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\WhiteSpace\DisallowTabIndentSniff - */ -final class DisallowTabIndentUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Get a list of CLI values to set before the file is tested. - * - * @param string $testFile The name of the file being tested. - * @param \PHP_CodeSniffer\Config $config The config data for the test run. - * - * @return void - */ - public function setCliValues($testFile, $config) - { - $config->tabWidth = 4; - - }//end setCliValues() - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getErrorList($testFile='') - { - switch ($testFile) { - case 'DisallowTabIndentUnitTest.1.inc': - return [ - 5 => 2, - 9 => 1, - 15 => 1, - 20 => 2, - 21 => 1, - 22 => 2, - 23 => 1, - 24 => 2, - 31 => 1, - 32 => 2, - 33 => 2, - 41 => 1, - 42 => 1, - 43 => 1, - 44 => 1, - 45 => 1, - 46 => 1, - 47 => 1, - 48 => 1, - 54 => 1, - 55 => 1, - 56 => 1, - 57 => 1, - 58 => 1, - 59 => 1, - 79 => 1, - 80 => 1, - 81 => 1, - 82 => 1, - 83 => 1, - 85 => 1, - 86 => 1, - 87 => 1, - 89 => 1, - 90 => 1, - 92 => 1, - 93 => 1, - 97 => 1, - 100 => 1, - ]; - - case 'DisallowTabIndentUnitTest.2.inc': - return [ - 6 => 1, - 7 => 1, - 8 => 1, - 9 => 1, - 10 => 1, - 11 => 1, - 12 => 1, - 13 => 1, - 19 => 1, - ]; - - case 'DisallowTabIndentUnitTest.3.inc': - if (PHP_VERSION_ID >= 70300) { - return [ - 7 => 1, - 13 => 1, - ]; - } - - // PHP 7.2 or lower: PHP version which doesn't support flexible heredocs/nowdocs yet. - return []; - - case 'DisallowTabIndentUnitTest.js': - return [ - 3 => 1, - 5 => 1, - 6 => 1, - ]; - - case 'DisallowTabIndentUnitTest.css': - return [ - 1 => 1, - 2 => 1, - ]; - - default: - return []; - }//end switch - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/WhiteSpace/LanguageConstructSpacingUnitTest.1.inc b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/WhiteSpace/LanguageConstructSpacingUnitTest.1.inc deleted file mode 100644 index 8d4acfe0..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/WhiteSpace/LanguageConstructSpacingUnitTest.1.inc +++ /dev/null @@ -1,100 +0,0 @@ - - * @copyright 2006-2017 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\WhiteSpace; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the LanguageConstructSpacing sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\WhiteSpace\LanguageConstructSpacingSniff - */ -final class LanguageConstructSpacingUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getErrorList($testFile='') - { - switch ($testFile) { - case 'LanguageConstructSpacingUnitTest.1.inc': - return [ - 3 => 1, - 5 => 1, - 8 => 1, - 10 => 1, - 13 => 1, - 15 => 1, - 18 => 1, - 20 => 1, - 23 => 1, - 25 => 1, - 28 => 1, - 30 => 1, - 33 => 1, - 36 => 1, - 39 => 1, - 40 => 1, - 43 => 1, - 44 => 1, - 45 => 1, - 46 => 1, - 48 => 1, - 52 => 1, - 55 => 1, - 56 => 1, - 57 => 2, - 60 => 1, - 63 => 1, - 65 => 1, - 73 => 1, - 75 => 1, - 77 => 1, - 81 => 1, - 83 => 1, - 85 => 1, - 86 => 1, - 90 => 1, - 94 => 1, - 95 => 1, - 98 => 1, - ]; - - default: - return []; - }//end switch - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/WhiteSpace/ScopeIndentUnitTest.1.inc b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/WhiteSpace/ScopeIndentUnitTest.1.inc deleted file mode 100644 index 74c5c072..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/WhiteSpace/ScopeIndentUnitTest.1.inc +++ /dev/null @@ -1,1659 +0,0 @@ -phpcs:set Generic.WhiteSpace.ScopeIndent tabIndent false - -hello(); - } - - function hello() - { - echo 'hello'; -}//end hello() - - function hello2() - { - if (TRUE) { - echo 'hello'; // no error here as its more than 4 spaces. - } else { - echo 'bye'; - } - - while (TRUE) { - echo 'hello'; - } - - do { - echo 'hello'; - } while (TRUE); - } - - function hello3() - { - switch ($hello) { - case 'hello': - break; - } - } - -} - -?> -
    -
    -
    -validate()) {
    -    $safe = $form->getSubmitValues();
    -}
    -?>
    -
    -open(); // error here - } - - public function open() - { - // Some inline stuff that shouldn't error - if (TRUE) echo 'hello'; - foreach ($tokens as $token) echo $token; - } - - /** - * This is a comment 1. - * This is a comment 2. - * This is a comment 3. - * This is a comment 4. - */ - public function close() - { - // All ok. - if (TRUE) { - if (TRUE) { - } else if (FALSE) { - foreach ($tokens as $token) { - switch ($token) { - case '1': - case '2': - if (true) { - if (false) { - if (false) { - if (false) { - echo 'hello'; - } - } - } - } - break; - case '5': - break; - } - do { - while (true) { - foreach ($tokens as $token) { - for ($i = 0; $i < $token; $i++) { - echo 'hello'; - } - } - } - } while (true); - } - } - } - } - - /* - This is another c style comment 1. - This is another c style comment 2. - This is another c style comment 3. - This is another c style comment 4. - This is another c style comment 5. - */ - - /* This is a T_COMMENT - * - * - * - */ - - /** This is a T_DOC_COMMENT - */ - - /* - This T_COMMENT has a newline in it. - - */ - - public function read() - { - echo 'hello'; - - // no errors below. - $array = array( - 'this', - 'that' => array( - 'hello', - 'hello again' => array( - 'hello', - ), - ), - ); - } -} - -abstract class Test3 -{ - public function parse() - { - - foreach ($t as $ndx => $token) { - if (is_array($token)) { - echo 'here'; - } else { - $ts[] = array("token" => $token, "value" => ''); - - $last = count($ts) - 1; - - switch ($token) { - case '(': - - if ($last >= 3 && - $ts[0]['token'] != T_CLASS && - $ts[$last - 2]['token'] == T_OBJECT_OPERATOR && - $ts[$last - 3]['token'] == T_VARIABLE ) { - - - if (true) { - echo 'hello'; - } - } - array_push($braces, $token); - break; - } - } - } - } -} - -function test() -{ - $o = << - - - - doSomething( - function () { - echo 123; - } - ); - } -} - -some_function( - function() { - $a = 403; - if ($a === 404) { - $a = 403; - } - } -); - -some_function( - function() { - $a = 403; - if ($a === 404) { - $a = 403; - } - } -); - -$myFunction = function() { - $a = 403; - if ($a === 404) { - $a = 403; - } -}; - -class Whatever -{ - protected $_protectedArray = array( - 'normalString' => 'That email address is already in use!', - 'offendingString' => <<<'STRING' -Each line of this string is always said to be at column 0, - no matter how many spaces are placed - at the beginning of each line -and the ending STRING on the next line is reported as having to be indented. -STRING - ); -} - -class MyClass -{ - public static function myFunction() - { - if (empty($keywords) === FALSE) { - $keywords = 'foo'; - $existing = 'foo'; - } - - return $keywords; - - }//end myFunction() - -}//end class - -$var = call_user_func( - $new_var = function () use (&$a) { - if ($a > 0) { - return $a++; - } else { - return $a--; - } - } -); - -class AnonymousFn -{ - public function getAnonFn() - { - return array( - 'functions' => Array( - 'function1' => function ($a, $b, $c) { - $a = $b + $c; - $b = $c / 2; - return Array($a, $b, $c); - }, - ), - ); - } -} -?> - -
    - -
    -
    - -
    -
    - -
    - - "") { - $test = true; - } else { - $test = true; - } - } - ?> - - - -
    -
    -
    - -
    -
    -
    - - -

    some text

    - function ($a) { - if ($a === true) { - echo 'hi'; - } - } -]; - -$list = [ - 'fn' => function ($a) { - if ($a === true) { - echo 'hi'; - } - } -]; - -if ($foo) { - foreach ($bar as $baz) { - if ($baz) { - ?> -
    -
    -
    - 1) { - echo '1'; - } - ?> -
    - 1) { - echo '1'; - } - ?> -
    - 1) { - echo '1'; - } - ?> -
    - -<?= CHtml::encode($this->pageTitle); ?> - -expects($this->at(2)) - ->with($this->callback( - function ($subject) - { - } - ) - ); - -/** @var Database $mockedDatabase */ -/** @var Container $mockedContainer */ - -echo $string->append('foo') - ->appaend('bar') - ->appaend('baz') - ->outputUsing( - function () - { - } - ); - -echo PHP_EOL; - -switch ($arg) { - case 1: - break; - case 2: - if ($arg2 == 'foo') { - } - case 3: - default: - echo 'default'; -} - -if ($tokens[$stackPtr]['content']{0} === '#') { -} else if ($tokens[$stackPtr]['content']{0} === '/' - && $tokens[$stackPtr]['content']{1} === '/' -) { -} - -$var = call_user_func( - function() { - if ($foo) { - $new_var = function() { - if ($a > 0) { - return $a++; - } else { - return $a--; - } - }; - } - } -); - -a( - function() { - $a = function() { - $b = false; - }; - true; - } -); - -$var = [ - [ - '1' => - function () { - return true; - }, - ], - [ - '1' => - function () { - return true; - }, - '2' => true, - ] -]; - -if ($foo) { - ?> -

    - self::_replaceKeywords($failingComment, $result), - 'screenshot' => Test::getScreenshotPath( - $projectid, - $result['class_name'], - ), - ); - -} - -$this->mockedDatabase - ->with( - $this->callback( - function () { - return; - } - ) - ); - -$this->subject->recordLogin(); - -function a() -{ - if (true) { - static::$a[$b] = - static::where($c) - ->where($c) - ->where( - function ($d) { - $d->whereNull(); - $d->orWhere(); - } - ) - ->first(); - - if (static::$a[$b] === null) { - static::$a[$b] = new static( - array( - 'a' => $a->id, - 'a' => $a->id, - ) - ); - } - } - - return static::$a[$b]; -} - -$foo->load( - array( - 'bar' => function ($baz) { - $baz->call(); - } - ) -); - -hello(); - -$foo = array_unique( - array_map( - function ($entry) { - return $entry * 2; - }, - array() - ) -); -bar($foo); - -class PHP_CodeSniffer_Tokenizers_JS -{ - - public $scopeOpeners = array( - T_CASE => array( - 'end' => array( - T_BREAK => T_BREAK, - T_RETURN => T_RETURN, - ), - 'strict' => true, - ), - ); -} - -echo $string-> - append('foo')-> - appaend('bar')-> - appaend('baz')-> - outputUsing( - function () - { - } - ); - -$str = 'the items I want to show are: ' . - implode( - ', ', - array('a', 'b', 'c') - ); - -echo $str; - -$str = 'foo' - . '1' - . '2'; - -echo $str; - -bar([ - 'foo' => foo(function () { - return 'foo'; - }) -]); - -$domains = array_unique( - array_map( - function ($url) { - $urlObject = new \Purl\Url($url); - return $urlObject->registerableDomain; - }, - $sites - ) -); - -return $domains; - -if ($a == 5) : - echo "a equals 5"; - echo "..."; -elseif ($a == 6) : - echo "a equals 6"; - echo "!!!"; -else : - echo "a is neither 5 nor 6"; -endif; - -if ($foo): -if ($bar) $foo = 1; -elseif ($baz) $foo = 2; -endif; - -$this - ->method(array( - 'foo' => 'bar', - ), 'arg', array( - 'foo' => 'bar', - )); - -class Foo -{ - use Bar { - myMethod as renamedMethod; - } -} - -class Foo -{ - use Bar { - myMethod as renamedMethod; - } -} - -foo(); - -array( - 'key1' => function ($bar) { - return $bar; - }, - 'key2' => function ($foo) { - return $foo; - }, -); - -?> - - 1, - ]; -$c = 2; - -class foo -{ - public function get() - { - $foo = ['b' => 'c', - 'd' => [ - ['e' => 'f'] - ]]; - echo '42'; - - $foo = array('b' => 'c', - 'd' => array( - array('e' => 'f') - )); - echo '42'; - } -} - -switch ($foo) { - case 1: - return array(); - case 2: - return ''; - case 3: - return $function(); - case 4: - return $functionCall($param[0]); - case 5: - return array() + array(); // Array Merge - case 6: - // String connect - return $functionReturningString('') . $functionReturningString(array()); - case 7: - return functionCall( - $withMultiLineParam[0], - array(), - $functionReturningString( - $withMultiLineParam[1] - ) - ); - case 8: - return $param[0][0]; -} - -class Test { - - public - $foo - ,$bar - ,$baz = [ ] - ; - - public function wtfindent() { - } -} - -switch ($x) { - case 1: - return [1]; - default: - return [2]; -} - -switch ($foo) { - case self::FOO: - return $this->bar($gfoo, function ($id) { - return FOO::bar($id); - }, $values); - case self::BAR: - $values = $this->bar($foo, $values); - break; -} - -$var = array( - 'long description' => - array(0, 'something'), - 'another long description' => - array(1, "something else") -); - -$services = array( - 'service 1' => - Mockery::mock('class 1') - ->shouldReceive('setFilter')->once() - ->shouldReceive('getNbResults')->atLeast()->once() - ->shouldReceive('getSlice')->once()->andReturn(array()) - ->getMock(), - 'service 2' => - Mockery::mock('class 2') - ->shouldReceive('__invoke')->once() - ->getMock() -); - -class Foo -{ - public function setUp() - { - $this->foo = new class { - public $name = 'Some value'; - }; - } -} - -try { - foo(); -} catch (\Exception $e) { - $foo = function() { - return 'foo'; - }; - - if (true) { - } -} - -if ($foo) { - foo(); -} else if ($e) { - $foo = function() { - return 'foo'; - }; - - if (true) { - } -} else { - $foo = function() { - return 'foo'; - }; - - if (true) { - } -} - -switch ($parameter) { - case null: - return [ - 'foo' => in_array( - 'foo', - [] - ), - ]; - - default: - return []; -} - -class SomeClass -{ - public function someFunc() - { - a(function () { - echo "a"; - })->b(function () { - echo "b"; - }); - - if (true) { - echo "c"; - } - echo "d"; - } -} - -$params = self::validate_parameters(self::read_competency_framework_parameters(), - array( - 'id' => $id, - )); - -$framework = api::read_framework($params['id']); -self::validate_context($framework->get_context()); -$output = $PAGE->get_renderer('tool_lp'); - -class Test123 -{ - protected static - $prop1 = [ - 'testA' => 123, - ], - $prop2 = [ - 'testB' => 456, - ]; - - protected static - $prop3 = array( - 'testA' => 123, - ), - $prop4 = array( - 'testB' => 456, - ); - - protected static $prop5; -} - -$foo = foo( - function () { - $foo->debug( - $a, - $b - ); - - if ($a) { - $b = $a; - } - } -); - -if (somethingIsTrue()) { - ?> -
    - -
    - bar(foo(function () { - }), foo(function () { - })); - -echo 'foo'; - -class Test { - - public function a() { - ?>adebug( - $a, - $b - ); - - if ($a) { - $b = $a; - } - } -); - -function test() -{ - $array = []; - foreach ($array as $data) { - [ - 'key1' => $var1, - 'key2' => $var2, - ] = $data; - foreach ($var1 as $method) { - echo $method . $var2; - } - } -} - -switch ($a) { - case 0: - $a = function () { - }; - case 1: - break; -} - -class Test -{ - public function __construct() - { -if (false) { -echo 0; - } - } -} - -return [ - 'veryLongKeySoIWantToMakeALineBreak' - => 'veryLonValueSoIWantToMakeALineBreak', - - 'someOtherKey' => [ - 'someValue' - ], - - 'arrayWithArraysInThere' => [ - ['Value1', 'Value1'] - ], -]; - -switch ($sContext) { - case 'SOMETHING': - case 'CONSTANT': - do_something(); - break; - case 'GLOBAL': - case 'GLOBAL1': - do_something(); - // Fall through - default: - { - do_something(); - } -} - -array_map( - static function ( $item ) { - echo $item; - }, - $some_array -); - -/** - * Comment. - */ -$a(function () use ($app) { - echo 'hi'; -})(); - -$app->run(); - -function foo() -{ - $foo('some - long description', function () { - }); - - $foo('some - long - description', function () { - }); - - $foo( -'some long description', function () { - }); -} - -switch ( $a ) { -case 'a': - $b = 2; - /** - * A comment. - */ - apply_filter( 'something', $b ); - break; - -case 'aa': - $b = 2; - /* - * A comment. - */ - apply_filter( 'something', $b ); - break; - -case 'b': - $b = 3; -?> - - - - - -
    - -
    - -
    - -
    - - -
    - - - -
    - [ - ], - 'b' => <<<'FOO' -foo; -FOO - ], - $a, -]; - -$query = Model::query() - ->when($a, function () { - static $b = ''; - }); - -$result = array_map( - static fn(int $number) : int => $number + 1, - $numbers -); - -$a = $a === true ? [ - 'a' => 1, - ] : [ - 'a' => 100, -]; - -return [ - Url::make('View Song', fn($song) => $song->url()) - ->onlyOnDetail(), - - new Panel('Information', [ - Text::make('Title') - ]), -]; - -echo $string?->append('foo') - ?->outputUsing(); - -// phpcs:set Generic.WhiteSpace.ScopeIndent exact true -echo $string?->append('foo') - ?->outputUsing(); -// phpcs:set Generic.WhiteSpace.ScopeIndent exact false - -if (true) { - ?> null, - false => false, - 1, 2, 3 => true, - default => $value, -}; - -$value = match ($value) { - '' => null, -false => false, - 1, 2, 3 => true, - default => $value, -}; - -$value = match ( - $value - ) { - '' => null, - false - => false, - 1, - 2, - 3 => true, - default => -$value, -}; - -function toString(): string -{ - return sprintf( - '%s', - match ($type) { - 'foo' => 'bar', - }, - ); -} - -$list = [ - 'fn' => function ($a) { - if ($a === true) { - echo 'hi'; - } - }, - 'fn' => function ($a) { - if ($a === true) { - echo 'hi'; - $list2 = [ - 'fn' => function ($a) { - if ($a === true) { - echo 'hi'; - } - } - ]; - } - } -]; - -$foo = match ($type) { - 'a' => [ - 'aa' => 'DESC', - 'ab' => 'DESC', - ], - 'b' => [ - 'ba' => 'DESC', - 'bb' => 'DESC', - ], - default => [ - 'da' => 'DESC', - ], -}; - -$a = [ - 'a' => [ - 'a' => fn () => foo() - ], - 'a' => [ - 'a' => 'a', - ] -]; - -switch ($foo) { - case 'a': - $foo = match ($foo) { - 'bar' => 'custom_1', - default => 'a' - }; - return $foo; - case 'b': - return match ($foo) { - 'bar' => 'custom_1', - default => 'b' - }; - default: - return 'default'; -} - -foo(function ($foo) { - return [ - match ($foo) { - } - ]; -}); - -// Issue #110. -echo match (1) { - 0 => match (2) { - 2 => match (3) { - 3 => 3, - default => -1, - }, - }, - 1 => match (2) { - 1 => match (3) { - 3 => 3, - default => -1, - }, - 2 => match (3) { - 3 => 3, - default => -1, - }, - }, -}; - -// Issue #437. -match (true) { - default => [ - 'unrelated' => '', - 'example' => array_filter( - array_map( - function () { - return null; - }, - [] - ) - ) - ] -}; - -// Issue squizlabs/PHP_CodeSniffer#3808 -function test() { - yield - from [ 3, 4 ]; -} - -/* ADD NEW TESTS ABOVE THIS LINE AND MAKE SURE THAT THE 1 (space-based) AND 2 (tab-based) FILES ARE IN SYNC! */ -?> - - - - - - - <<<'INTRO' - lorem ipsum - INTRO, - 'em' => [ - [ - '', - ], - ], - 'abc' => [ - 'a' => 'wop wop', - 'b' => 'ola ola.', - ], -]; - -echo "" diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/WhiteSpace/ScopeIndentUnitTest.1.inc.fixed b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/WhiteSpace/ScopeIndentUnitTest.1.inc.fixed deleted file mode 100644 index 414ea6f7..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/WhiteSpace/ScopeIndentUnitTest.1.inc.fixed +++ /dev/null @@ -1,1659 +0,0 @@ -phpcs:set Generic.WhiteSpace.ScopeIndent tabIndent false - -hello(); - } - - function hello() - { - echo 'hello'; - }//end hello() - - function hello2() - { - if (TRUE) { - echo 'hello'; // no error here as its more than 4 spaces. - } else { - echo 'bye'; - } - - while (TRUE) { - echo 'hello'; - } - - do { - echo 'hello'; - } while (TRUE); - } - - function hello3() - { - switch ($hello) { - case 'hello': - break; - } - } - -} - -?> -
    -
    -
    -validate()) {
    -    $safe = $form->getSubmitValues();
    -}
    -?>
    -
    -open(); // error here - } - - public function open() - { - // Some inline stuff that shouldn't error - if (TRUE) echo 'hello'; - foreach ($tokens as $token) echo $token; - } - - /** - * This is a comment 1. - * This is a comment 2. - * This is a comment 3. - * This is a comment 4. - */ - public function close() - { - // All ok. - if (TRUE) { - if (TRUE) { - } else if (FALSE) { - foreach ($tokens as $token) { - switch ($token) { - case '1': - case '2': - if (true) { - if (false) { - if (false) { - if (false) { - echo 'hello'; - } - } - } - } - break; - case '5': - break; - } - do { - while (true) { - foreach ($tokens as $token) { - for ($i = 0; $i < $token; $i++) { - echo 'hello'; - } - } - } - } while (true); - } - } - } - } - - /* - This is another c style comment 1. - This is another c style comment 2. - This is another c style comment 3. - This is another c style comment 4. - This is another c style comment 5. - */ - - /* This is a T_COMMENT - * - * - * - */ - - /** This is a T_DOC_COMMENT - */ - - /* - This T_COMMENT has a newline in it. - - */ - - public function read() - { - echo 'hello'; - - // no errors below. - $array = array( - 'this', - 'that' => array( - 'hello', - 'hello again' => array( - 'hello', - ), - ), - ); - } -} - -abstract class Test3 -{ - public function parse() - { - - foreach ($t as $ndx => $token) { - if (is_array($token)) { - echo 'here'; - } else { - $ts[] = array("token" => $token, "value" => ''); - - $last = count($ts) - 1; - - switch ($token) { - case '(': - - if ($last >= 3 && - $ts[0]['token'] != T_CLASS && - $ts[$last - 2]['token'] == T_OBJECT_OPERATOR && - $ts[$last - 3]['token'] == T_VARIABLE ) { - - - if (true) { - echo 'hello'; - } - } - array_push($braces, $token); - break; - } - } - } - } -} - -function test() -{ - $o = << - - - - doSomething( - function () { - echo 123; - } - ); - } -} - -some_function( - function() { - $a = 403; - if ($a === 404) { - $a = 403; - } - } -); - -some_function( - function() { - $a = 403; - if ($a === 404) { - $a = 403; - } - } -); - -$myFunction = function() { - $a = 403; - if ($a === 404) { - $a = 403; - } -}; - -class Whatever -{ - protected $_protectedArray = array( - 'normalString' => 'That email address is already in use!', - 'offendingString' => <<<'STRING' -Each line of this string is always said to be at column 0, - no matter how many spaces are placed - at the beginning of each line -and the ending STRING on the next line is reported as having to be indented. -STRING - ); -} - -class MyClass -{ - public static function myFunction() - { - if (empty($keywords) === FALSE) { - $keywords = 'foo'; - $existing = 'foo'; - } - - return $keywords; - - }//end myFunction() - -}//end class - -$var = call_user_func( - $new_var = function () use (&$a) { - if ($a > 0) { - return $a++; - } else { - return $a--; - } - } -); - -class AnonymousFn -{ - public function getAnonFn() - { - return array( - 'functions' => Array( - 'function1' => function ($a, $b, $c) { - $a = $b + $c; - $b = $c / 2; - return Array($a, $b, $c); - }, - ), - ); - } -} -?> - -
    - -
    -
    - -
    -
    - -
    - - "") { - $test = true; - } else { - $test = true; - } - } - ?> - - - -
    -
    -
    - -
    -
    -
    - - -

    some text

    - function ($a) { - if ($a === true) { - echo 'hi'; - } - } -]; - -$list = [ - 'fn' => function ($a) { - if ($a === true) { - echo 'hi'; - } - } -]; - -if ($foo) { - foreach ($bar as $baz) { - if ($baz) { - ?> -
    -
    -
    - 1) { - echo '1'; - } - ?> -
    - 1) { - echo '1'; - } - ?> -
    - 1) { - echo '1'; - } - ?> -
    - -<?= CHtml::encode($this->pageTitle); ?> - -expects($this->at(2)) - ->with($this->callback( - function ($subject) - { - } - ) - ); - -/** @var Database $mockedDatabase */ -/** @var Container $mockedContainer */ - -echo $string->append('foo') - ->appaend('bar') - ->appaend('baz') - ->outputUsing( - function () - { - } - ); - -echo PHP_EOL; - -switch ($arg) { - case 1: - break; - case 2: - if ($arg2 == 'foo') { - } - case 3: - default: - echo 'default'; -} - -if ($tokens[$stackPtr]['content']{0} === '#') { -} else if ($tokens[$stackPtr]['content']{0} === '/' - && $tokens[$stackPtr]['content']{1} === '/' -) { -} - -$var = call_user_func( - function() { - if ($foo) { - $new_var = function() { - if ($a > 0) { - return $a++; - } else { - return $a--; - } - }; - } - } -); - -a( - function() { - $a = function() { - $b = false; - }; - true; - } -); - -$var = [ - [ - '1' => - function () { - return true; - }, - ], - [ - '1' => - function () { - return true; - }, - '2' => true, - ] -]; - -if ($foo) { - ?> -

    - self::_replaceKeywords($failingComment, $result), - 'screenshot' => Test::getScreenshotPath( - $projectid, - $result['class_name'], - ), - ); - -} - -$this->mockedDatabase - ->with( - $this->callback( - function () { - return; - } - ) - ); - -$this->subject->recordLogin(); - -function a() -{ - if (true) { - static::$a[$b] = - static::where($c) - ->where($c) - ->where( - function ($d) { - $d->whereNull(); - $d->orWhere(); - } - ) - ->first(); - - if (static::$a[$b] === null) { - static::$a[$b] = new static( - array( - 'a' => $a->id, - 'a' => $a->id, - ) - ); - } - } - - return static::$a[$b]; -} - -$foo->load( - array( - 'bar' => function ($baz) { - $baz->call(); - } - ) -); - -hello(); - -$foo = array_unique( - array_map( - function ($entry) { - return $entry * 2; - }, - array() - ) -); -bar($foo); - -class PHP_CodeSniffer_Tokenizers_JS -{ - - public $scopeOpeners = array( - T_CASE => array( - 'end' => array( - T_BREAK => T_BREAK, - T_RETURN => T_RETURN, - ), - 'strict' => true, - ), - ); -} - -echo $string-> - append('foo')-> - appaend('bar')-> - appaend('baz')-> - outputUsing( - function () - { - } - ); - -$str = 'the items I want to show are: ' . - implode( - ', ', - array('a', 'b', 'c') - ); - -echo $str; - -$str = 'foo' - . '1' - . '2'; - -echo $str; - -bar([ - 'foo' => foo(function () { - return 'foo'; - }) -]); - -$domains = array_unique( - array_map( - function ($url) { - $urlObject = new \Purl\Url($url); - return $urlObject->registerableDomain; - }, - $sites - ) -); - -return $domains; - -if ($a == 5) : - echo "a equals 5"; - echo "..."; -elseif ($a == 6) : - echo "a equals 6"; - echo "!!!"; -else : - echo "a is neither 5 nor 6"; -endif; - -if ($foo): - if ($bar) $foo = 1; - elseif ($baz) $foo = 2; -endif; - -$this - ->method(array( - 'foo' => 'bar', - ), 'arg', array( - 'foo' => 'bar', - )); - -class Foo -{ - use Bar { - myMethod as renamedMethod; - } -} - -class Foo -{ - use Bar { - myMethod as renamedMethod; - } -} - -foo(); - -array( - 'key1' => function ($bar) { - return $bar; - }, - 'key2' => function ($foo) { - return $foo; - }, -); - -?> - - 1, - ]; -$c = 2; - -class foo -{ - public function get() - { - $foo = ['b' => 'c', - 'd' => [ - ['e' => 'f'] - ]]; - echo '42'; - - $foo = array('b' => 'c', - 'd' => array( - array('e' => 'f') - )); - echo '42'; - } -} - -switch ($foo) { - case 1: - return array(); - case 2: - return ''; - case 3: - return $function(); - case 4: - return $functionCall($param[0]); - case 5: - return array() + array(); // Array Merge - case 6: - // String connect - return $functionReturningString('') . $functionReturningString(array()); - case 7: - return functionCall( - $withMultiLineParam[0], - array(), - $functionReturningString( - $withMultiLineParam[1] - ) - ); - case 8: - return $param[0][0]; -} - -class Test { - - public - $foo - ,$bar - ,$baz = [ ] - ; - - public function wtfindent() { - } -} - -switch ($x) { - case 1: - return [1]; - default: - return [2]; -} - -switch ($foo) { - case self::FOO: - return $this->bar($gfoo, function ($id) { - return FOO::bar($id); - }, $values); - case self::BAR: - $values = $this->bar($foo, $values); - break; -} - -$var = array( - 'long description' => - array(0, 'something'), - 'another long description' => - array(1, "something else") -); - -$services = array( - 'service 1' => - Mockery::mock('class 1') - ->shouldReceive('setFilter')->once() - ->shouldReceive('getNbResults')->atLeast()->once() - ->shouldReceive('getSlice')->once()->andReturn(array()) - ->getMock(), - 'service 2' => - Mockery::mock('class 2') - ->shouldReceive('__invoke')->once() - ->getMock() -); - -class Foo -{ - public function setUp() - { - $this->foo = new class { - public $name = 'Some value'; - }; - } -} - -try { - foo(); -} catch (\Exception $e) { - $foo = function() { - return 'foo'; - }; - - if (true) { - } -} - -if ($foo) { - foo(); -} else if ($e) { - $foo = function() { - return 'foo'; - }; - - if (true) { - } -} else { - $foo = function() { - return 'foo'; - }; - - if (true) { - } -} - -switch ($parameter) { - case null: - return [ - 'foo' => in_array( - 'foo', - [] - ), - ]; - - default: - return []; -} - -class SomeClass -{ - public function someFunc() - { - a(function () { - echo "a"; - })->b(function () { - echo "b"; - }); - - if (true) { - echo "c"; - } - echo "d"; - } -} - -$params = self::validate_parameters(self::read_competency_framework_parameters(), - array( - 'id' => $id, - )); - -$framework = api::read_framework($params['id']); -self::validate_context($framework->get_context()); -$output = $PAGE->get_renderer('tool_lp'); - -class Test123 -{ - protected static - $prop1 = [ - 'testA' => 123, - ], - $prop2 = [ - 'testB' => 456, - ]; - - protected static - $prop3 = array( - 'testA' => 123, - ), - $prop4 = array( - 'testB' => 456, - ); - - protected static $prop5; -} - -$foo = foo( - function () { - $foo->debug( - $a, - $b - ); - - if ($a) { - $b = $a; - } - } -); - -if (somethingIsTrue()) { - ?> -
    - -
    - bar(foo(function () { - }), foo(function () { - })); - -echo 'foo'; - -class Test { - - public function a() { - ?>adebug( - $a, - $b - ); - - if ($a) { - $b = $a; - } - } -); - -function test() -{ - $array = []; - foreach ($array as $data) { - [ - 'key1' => $var1, - 'key2' => $var2, - ] = $data; - foreach ($var1 as $method) { - echo $method . $var2; - } - } -} - -switch ($a) { - case 0: - $a = function () { - }; - case 1: - break; -} - -class Test -{ - public function __construct() - { - if (false) { - echo 0; - } - } -} - -return [ - 'veryLongKeySoIWantToMakeALineBreak' - => 'veryLonValueSoIWantToMakeALineBreak', - - 'someOtherKey' => [ - 'someValue' - ], - - 'arrayWithArraysInThere' => [ - ['Value1', 'Value1'] - ], -]; - -switch ($sContext) { - case 'SOMETHING': - case 'CONSTANT': - do_something(); - break; - case 'GLOBAL': - case 'GLOBAL1': - do_something(); - // Fall through - default: - { - do_something(); - } -} - -array_map( - static function ( $item ) { - echo $item; - }, - $some_array -); - -/** - * Comment. - */ -$a(function () use ($app) { - echo 'hi'; -})(); - -$app->run(); - -function foo() -{ - $foo('some - long description', function () { - }); - - $foo('some - long - description', function () { - }); - - $foo( - 'some long description', function () { - }); -} - -switch ( $a ) { - case 'a': - $b = 2; - /** - * A comment. - */ - apply_filter( 'something', $b ); - break; - - case 'aa': - $b = 2; - /* - * A comment. - */ - apply_filter( 'something', $b ); - break; - - case 'b': - $b = 3; - ?> - - - - - -
    - -
    - -
    - -
    - - -
    - - - -
    - [ - ], - 'b' => <<<'FOO' -foo; -FOO - ], - $a, -]; - -$query = Model::query() - ->when($a, function () { - static $b = ''; - }); - -$result = array_map( - static fn(int $number) : int => $number + 1, - $numbers -); - -$a = $a === true ? [ - 'a' => 1, - ] : [ - 'a' => 100, -]; - -return [ - Url::make('View Song', fn($song) => $song->url()) - ->onlyOnDetail(), - - new Panel('Information', [ - Text::make('Title') - ]), -]; - -echo $string?->append('foo') - ?->outputUsing(); - -// phpcs:set Generic.WhiteSpace.ScopeIndent exact true -echo $string?->append('foo') - ?->outputUsing(); -// phpcs:set Generic.WhiteSpace.ScopeIndent exact false - -if (true) { - ?> null, - false => false, - 1, 2, 3 => true, - default => $value, -}; - -$value = match ($value) { - '' => null, - false => false, - 1, 2, 3 => true, - default => $value, -}; - -$value = match ( - $value - ) { - '' => null, - false - => false, - 1, - 2, - 3 => true, - default => - $value, -}; - -function toString(): string -{ - return sprintf( - '%s', - match ($type) { - 'foo' => 'bar', - }, - ); -} - -$list = [ - 'fn' => function ($a) { - if ($a === true) { - echo 'hi'; - } - }, - 'fn' => function ($a) { - if ($a === true) { - echo 'hi'; - $list2 = [ - 'fn' => function ($a) { - if ($a === true) { - echo 'hi'; - } - } - ]; - } - } -]; - -$foo = match ($type) { - 'a' => [ - 'aa' => 'DESC', - 'ab' => 'DESC', - ], - 'b' => [ - 'ba' => 'DESC', - 'bb' => 'DESC', - ], - default => [ - 'da' => 'DESC', - ], -}; - -$a = [ - 'a' => [ - 'a' => fn () => foo() - ], - 'a' => [ - 'a' => 'a', - ] -]; - -switch ($foo) { - case 'a': - $foo = match ($foo) { - 'bar' => 'custom_1', - default => 'a' - }; - return $foo; - case 'b': - return match ($foo) { - 'bar' => 'custom_1', - default => 'b' - }; - default: - return 'default'; -} - -foo(function ($foo) { - return [ - match ($foo) { - } - ]; -}); - -// Issue #110. -echo match (1) { - 0 => match (2) { - 2 => match (3) { - 3 => 3, - default => -1, - }, - }, - 1 => match (2) { - 1 => match (3) { - 3 => 3, - default => -1, - }, - 2 => match (3) { - 3 => 3, - default => -1, - }, - }, -}; - -// Issue #437. -match (true) { - default => [ - 'unrelated' => '', - 'example' => array_filter( - array_map( - function () { - return null; - }, - [] - ) - ) - ] -}; - -// Issue squizlabs/PHP_CodeSniffer#3808 -function test() { - yield - from [ 3, 4 ]; -} - -/* ADD NEW TESTS ABOVE THIS LINE AND MAKE SURE THAT THE 1 (space-based) AND 2 (tab-based) FILES ARE IN SYNC! */ -?> - - - - - - - <<<'INTRO' - lorem ipsum - INTRO, - 'em' => [ - [ - '', - ], - ], - 'abc' => [ - 'a' => 'wop wop', - 'b' => 'ola ola.', - ], -]; - -echo "" diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/WhiteSpace/ScopeIndentUnitTest.2.inc b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/WhiteSpace/ScopeIndentUnitTest.2.inc deleted file mode 100644 index c30e5b8d..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/WhiteSpace/ScopeIndentUnitTest.2.inc +++ /dev/null @@ -1,1659 +0,0 @@ -phpcs:set Generic.WhiteSpace.ScopeIndent tabIndent true - -hello(); - } - - function hello() - { - echo 'hello'; -}//end hello() - - function hello2() - { - if (TRUE) { - echo 'hello'; // no error here as its more than 4 spaces. - } else { - echo 'bye'; - } - - while (TRUE) { - echo 'hello'; - } - - do { - echo 'hello'; - } while (TRUE); - } - - function hello3() - { - switch ($hello) { - case 'hello': - break; - } - } - -} - -?> -
    -
    -
    -validate()) {
    -	$safe = $form->getSubmitValues();
    -}
    -?>
    -
    -open(); // error here - } - - public function open() - { - // Some inline stuff that shouldn't error - if (TRUE) echo 'hello'; - foreach ($tokens as $token) echo $token; - } - - /** - * This is a comment 1. - * This is a comment 2. - * This is a comment 3. - * This is a comment 4. - */ - public function close() - { - // All ok. - if (TRUE) { - if (TRUE) { - } else if (FALSE) { - foreach ($tokens as $token) { - switch ($token) { - case '1': - case '2': - if (true) { - if (false) { - if (false) { - if (false) { - echo 'hello'; - } - } - } - } - break; - case '5': - break; - } - do { - while (true) { - foreach ($tokens as $token) { - for ($i = 0; $i < $token; $i++) { - echo 'hello'; - } - } - } - } while (true); - } - } - } - } - - /* - This is another c style comment 1. - This is another c style comment 2. - This is another c style comment 3. - This is another c style comment 4. - This is another c style comment 5. - */ - - /* This is a T_COMMENT - * - * - * - */ - - /** This is a T_DOC_COMMENT - */ - - /* - This T_COMMENT has a newline in it. - - */ - - public function read() - { - echo 'hello'; - - // no errors below. - $array = array( - 'this', - 'that' => array( - 'hello', - 'hello again' => array( - 'hello', - ), - ), - ); - } -} - -abstract class Test3 -{ - public function parse() - { - - foreach ($t as $ndx => $token) { - if (is_array($token)) { - echo 'here'; - } else { - $ts[] = array("token" => $token, "value" => ''); - - $last = count($ts) - 1; - - switch ($token) { - case '(': - - if ($last >= 3 && - $ts[0]['token'] != T_CLASS && - $ts[$last - 2]['token'] == T_OBJECT_OPERATOR && - $ts[$last - 3]['token'] == T_VARIABLE ) { - - - if (true) { - echo 'hello'; - } - } - array_push($braces, $token); - break; - } - } - } - } -} - -function test() -{ - $o = << - - - - doSomething( - function () { - echo 123; - } - ); - } -} - -some_function( - function() { - $a = 403; - if ($a === 404) { - $a = 403; - } - } -); - -some_function( - function() { - $a = 403; - if ($a === 404) { - $a = 403; - } - } -); - -$myFunction = function() { - $a = 403; - if ($a === 404) { - $a = 403; - } -}; - -class Whatever -{ - protected $_protectedArray = array( - 'normalString' => 'That email address is already in use!', - 'offendingString' => <<<'STRING' -Each line of this string is always said to be at column 0, - no matter how many spaces are placed - at the beginning of each line -and the ending STRING on the next line is reported as having to be indented. -STRING - ); -} - -class MyClass -{ - public static function myFunction() - { - if (empty($keywords) === FALSE) { - $keywords = 'foo'; - $existing = 'foo'; - } - - return $keywords; - - }//end myFunction() - -}//end class - -$var = call_user_func( - $new_var = function () use (&$a) { - if ($a > 0) { - return $a++; - } else { - return $a--; - } - } -); - -class AnonymousFn -{ - public function getAnonFn() - { - return array( - 'functions' => Array( - 'function1' => function ($a, $b, $c) { - $a = $b + $c; - $b = $c / 2; - return Array($a, $b, $c); - }, - ), - ); - } -} -?> - -
    - -
    -
    - -
    -
    - -
    - - "") { - $test = true; - } else { - $test = true; - } - } - ?> - - - -
    -
    -
    - -
    -
    -
    - - -

    some text

    - function ($a) { - if ($a === true) { - echo 'hi'; - } - } -]; - -$list = [ - 'fn' => function ($a) { - if ($a === true) { - echo 'hi'; - } - } -]; - -if ($foo) { - foreach ($bar as $baz) { - if ($baz) { - ?> -
    -
    -
    - 1) { - echo '1'; - } - ?> -
    - 1) { - echo '1'; - } - ?> -
    - 1) { - echo '1'; - } - ?> -
    - -<?= CHtml::encode($this->pageTitle); ?> - -expects($this->at(2)) - ->with($this->callback( - function ($subject) - { - } - ) - ); - -/** @var Database $mockedDatabase */ -/** @var Container $mockedContainer */ - -echo $string->append('foo') - ->appaend('bar') - ->appaend('baz') - ->outputUsing( - function () - { - } - ); - -echo PHP_EOL; - -switch ($arg) { - case 1: - break; - case 2: - if ($arg2 == 'foo') { - } - case 3: - default: - echo 'default'; -} - -if ($tokens[$stackPtr]['content']{0} === '#') { -} else if ($tokens[$stackPtr]['content']{0} === '/' - && $tokens[$stackPtr]['content']{1} === '/' -) { -} - -$var = call_user_func( - function() { - if ($foo) { - $new_var = function() { - if ($a > 0) { - return $a++; - } else { - return $a--; - } - }; - } - } -); - -a( - function() { - $a = function() { - $b = false; - }; - true; - } -); - -$var = [ - [ - '1' => - function () { - return true; - }, - ], - [ - '1' => - function () { - return true; - }, - '2' => true, - ] -]; - -if ($foo) { - ?> -

    - self::_replaceKeywords($failingComment, $result), - 'screenshot' => Test::getScreenshotPath( - $projectid, - $result['class_name'], - ), - ); - -} - -$this->mockedDatabase - ->with( - $this->callback( - function () { - return; - } - ) - ); - -$this->subject->recordLogin(); - -function a() -{ - if (true) { - static::$a[$b] = - static::where($c) - ->where($c) - ->where( - function ($d) { - $d->whereNull(); - $d->orWhere(); - } - ) - ->first(); - - if (static::$a[$b] === null) { - static::$a[$b] = new static( - array( - 'a' => $a->id, - 'a' => $a->id, - ) - ); - } - } - - return static::$a[$b]; -} - -$foo->load( - array( - 'bar' => function ($baz) { - $baz->call(); - } - ) -); - -hello(); - -$foo = array_unique( - array_map( - function ($entry) { - return $entry * 2; - }, - array() - ) -); -bar($foo); - -class PHP_CodeSniffer_Tokenizers_JS -{ - - public $scopeOpeners = array( - T_CASE => array( - 'end' => array( - T_BREAK => T_BREAK, - T_RETURN => T_RETURN, - ), - 'strict' => true, - ), - ); -} - -echo $string-> - append('foo')-> - appaend('bar')-> - appaend('baz')-> - outputUsing( - function () - { - } - ); - -$str = 'the items I want to show are: ' . - implode( - ', ', - array('a', 'b', 'c') - ); - -echo $str; - -$str = 'foo' - . '1' - . '2'; - -echo $str; - -bar([ - 'foo' => foo(function () { - return 'foo'; - }) -]); - -$domains = array_unique( - array_map( - function ($url) { - $urlObject = new \Purl\Url($url); - return $urlObject->registerableDomain; - }, - $sites - ) -); - -return $domains; - -if ($a == 5) : - echo "a equals 5"; - echo "..."; -elseif ($a == 6) : - echo "a equals 6"; - echo "!!!"; -else : - echo "a is neither 5 nor 6"; -endif; - -if ($foo): -if ($bar) $foo = 1; -elseif ($baz) $foo = 2; -endif; - -$this - ->method(array( - 'foo' => 'bar', - ), 'arg', array( - 'foo' => 'bar', - )); - -class Foo -{ - use Bar { - myMethod as renamedMethod; - } -} - -class Foo -{ - use Bar { - myMethod as renamedMethod; - } -} - -foo(); - -array( - 'key1' => function ($bar) { - return $bar; - }, - 'key2' => function ($foo) { - return $foo; - }, -); - -?> - - 1, - ]; -$c = 2; - -class foo -{ - public function get() - { - $foo = ['b' => 'c', - 'd' => [ - ['e' => 'f'] - ]]; - echo '42'; - - $foo = array('b' => 'c', - 'd' => array( - array('e' => 'f') - )); - echo '42'; - } -} - -switch ($foo) { - case 1: - return array(); - case 2: - return ''; - case 3: - return $function(); - case 4: - return $functionCall($param[0]); - case 5: - return array() + array(); // Array Merge - case 6: - // String connect - return $functionReturningString('') . $functionReturningString(array()); - case 7: - return functionCall( - $withMultiLineParam[0], - array(), - $functionReturningString( - $withMultiLineParam[1] - ) - ); - case 8: - return $param[0][0]; -} - -class Test { - - public - $foo - ,$bar - ,$baz = [ ] - ; - - public function wtfindent() { - } -} - -switch ($x) { - case 1: - return [1]; - default: - return [2]; -} - -switch ($foo) { - case self::FOO: - return $this->bar($gfoo, function ($id) { - return FOO::bar($id); - }, $values); - case self::BAR: - $values = $this->bar($foo, $values); - break; -} - -$var = array( - 'long description' => - array(0, 'something'), - 'another long description' => - array(1, "something else") -); - -$services = array( - 'service 1' => - Mockery::mock('class 1') - ->shouldReceive('setFilter')->once() - ->shouldReceive('getNbResults')->atLeast()->once() - ->shouldReceive('getSlice')->once()->andReturn(array()) - ->getMock(), - 'service 2' => - Mockery::mock('class 2') - ->shouldReceive('__invoke')->once() - ->getMock() -); - -class Foo -{ - public function setUp() - { - $this->foo = new class { - public $name = 'Some value'; - }; - } -} - -try { - foo(); -} catch (\Exception $e) { - $foo = function() { - return 'foo'; - }; - - if (true) { - } -} - -if ($foo) { - foo(); -} else if ($e) { - $foo = function() { - return 'foo'; - }; - - if (true) { - } -} else { - $foo = function() { - return 'foo'; - }; - - if (true) { - } -} - -switch ($parameter) { - case null: - return [ - 'foo' => in_array( - 'foo', - [] - ), - ]; - - default: - return []; -} - -class SomeClass -{ - public function someFunc() - { - a(function () { - echo "a"; - })->b(function () { - echo "b"; - }); - - if (true) { - echo "c"; - } - echo "d"; - } -} - -$params = self::validate_parameters(self::read_competency_framework_parameters(), - array( - 'id' => $id, - )); - -$framework = api::read_framework($params['id']); -self::validate_context($framework->get_context()); -$output = $PAGE->get_renderer('tool_lp'); - -class Test123 -{ - protected static - $prop1 = [ - 'testA' => 123, - ], - $prop2 = [ - 'testB' => 456, - ]; - - protected static - $prop3 = array( - 'testA' => 123, - ), - $prop4 = array( - 'testB' => 456, - ); - - protected static $prop5; -} - -$foo = foo( - function () { - $foo->debug( - $a, - $b - ); - - if ($a) { - $b = $a; - } - } -); - -if (somethingIsTrue()) { - ?> -
    - -
    - bar(foo(function () { - }), foo(function () { - })); - -echo 'foo'; - -class Test { - - public function a() { - ?>adebug( - $a, - $b - ); - - if ($a) { - $b = $a; - } - } -); - -function test() -{ - $array = []; - foreach ($array as $data) { - [ - 'key1' => $var1, - 'key2' => $var2, - ] = $data; - foreach ($var1 as $method) { - echo $method . $var2; - } - } -} - -switch ($a) { - case 0: - $a = function () { - }; - case 1: - break; -} - -class Test -{ - public function __construct() - { -if (false) { -echo 0; - } - } -} - -return [ - 'veryLongKeySoIWantToMakeALineBreak' - => 'veryLonValueSoIWantToMakeALineBreak', - - 'someOtherKey' => [ - 'someValue' - ], - - 'arrayWithArraysInThere' => [ - ['Value1', 'Value1'] - ], -]; - -switch ($sContext) { - case 'SOMETHING': - case 'CONSTANT': - do_something(); - break; - case 'GLOBAL': - case 'GLOBAL1': - do_something(); - // Fall through - default: - { - do_something(); - } -} - -array_map( - static function ( $item ) { - echo $item; - }, - $some_array -); - -/** - * Comment. - */ -$a(function () use ($app) { - echo 'hi'; -})(); - -$app->run(); - -function foo() -{ - $foo('some - long description', function () { - }); - - $foo('some - long - description', function () { - }); - - $foo( -'some long description', function () { - }); -} - -switch ( $a ) { -case 'a': - $b = 2; - /** - * A comment. - */ - apply_filter( 'something', $b ); - break; - -case 'aa': - $b = 2; - /* - * A comment. - */ - apply_filter( 'something', $b ); - break; - -case 'b': - $b = 3; -?> - - - - - -
    - -
    - -
    - -
    - - -
    - - - -
    - [ - ], - 'b' => <<<'FOO' -foo; -FOO - ], - $a, -]; - -$query = Model::query() - ->when($a, function () { - static $b = ''; - }); - -$result = array_map( - static fn(int $number) : int => $number + 1, - $numbers -); - -$a = $a === true ? [ - 'a' => 1, - ] : [ - 'a' => 100, -]; - -return [ - Url::make('View Song', fn($song) => $song->url()) - ->onlyOnDetail(), - - new Panel('Information', [ - Text::make('Title') - ]), -]; - -echo $string?->append('foo') - ?->outputUsing(); - -// phpcs:set Generic.WhiteSpace.ScopeIndent exact true -echo $string?->append('foo') - ?->outputUsing(); -// phpcs:set Generic.WhiteSpace.ScopeIndent exact false - -if (true) { - ?> null, - false => false, - 1, 2, 3 => true, - default => $value, -}; - -$value = match ($value) { - '' => null, -false => false, - 1, 2, 3 => true, - default => $value, -}; - -$value = match ( - $value - ) { - '' => null, - false - => false, - 1, - 2, - 3 => true, - default => -$value, -}; - -function toString(): string -{ - return sprintf( - '%s', - match ($type) { - 'foo' => 'bar', - }, - ); -} - -$list = [ - 'fn' => function ($a) { - if ($a === true) { - echo 'hi'; - } - }, - 'fn' => function ($a) { - if ($a === true) { - echo 'hi'; - $list2 = [ - 'fn' => function ($a) { - if ($a === true) { - echo 'hi'; - } - } - ]; - } - } -]; - -$foo = match ($type) { - 'a' => [ - 'aa' => 'DESC', - 'ab' => 'DESC', - ], - 'b' => [ - 'ba' => 'DESC', - 'bb' => 'DESC', - ], - default => [ - 'da' => 'DESC', - ], -}; - -$a = [ - 'a' => [ - 'a' => fn () => foo() - ], - 'a' => [ - 'a' => 'a', - ] -]; - -switch ($foo) { - case 'a': - $foo = match ($foo) { - 'bar' => 'custom_1', - default => 'a' - }; - return $foo; - case 'b': - return match ($foo) { - 'bar' => 'custom_1', - default => 'b' - }; - default: - return 'default'; -} - -foo(function ($foo) { - return [ - match ($foo) { - } - ]; -}); - -// Issue #110. -echo match (1) { - 0 => match (2) { - 2 => match (3) { - 3 => 3, - default => -1, - }, - }, - 1 => match (2) { - 1 => match (3) { - 3 => 3, - default => -1, - }, - 2 => match (3) { - 3 => 3, - default => -1, - }, - }, -}; - -// Issue #437. -match (true) { - default => [ - 'unrelated' => '', - 'example' => array_filter( - array_map( - function () { - return null; - }, - [] - ) - ) - ] -}; - -// Issue squizlabs/PHP_CodeSniffer#3808 -function test() { - yield - from [ 3, 4 ]; -} - -/* ADD NEW TESTS ABOVE THIS LINE AND MAKE SURE THAT THE 1 (space-based) AND 2 (tab-based) FILES ARE IN SYNC! */ -?> - - - - - - - <<<'INTRO' - lorem ipsum - INTRO, - 'em' => [ - [ - '', - ], - ], - 'abc' => [ - 'a' => 'wop wop', - 'b' => 'ola ola.', - ], -]; - -echo "" diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/WhiteSpace/ScopeIndentUnitTest.2.inc.fixed b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/WhiteSpace/ScopeIndentUnitTest.2.inc.fixed deleted file mode 100644 index 4660f758..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/WhiteSpace/ScopeIndentUnitTest.2.inc.fixed +++ /dev/null @@ -1,1659 +0,0 @@ -phpcs:set Generic.WhiteSpace.ScopeIndent tabIndent true - -hello(); - } - - function hello() - { - echo 'hello'; - }//end hello() - - function hello2() - { - if (TRUE) { - echo 'hello'; // no error here as its more than 4 spaces. - } else { - echo 'bye'; - } - - while (TRUE) { - echo 'hello'; - } - - do { - echo 'hello'; - } while (TRUE); - } - - function hello3() - { - switch ($hello) { - case 'hello': - break; - } - } - -} - -?> -
    -
    -
    -validate()) {
    -	$safe = $form->getSubmitValues();
    -}
    -?>
    -
    -open(); // error here - } - - public function open() - { - // Some inline stuff that shouldn't error - if (TRUE) echo 'hello'; - foreach ($tokens as $token) echo $token; - } - - /** - * This is a comment 1. - * This is a comment 2. - * This is a comment 3. - * This is a comment 4. - */ - public function close() - { - // All ok. - if (TRUE) { - if (TRUE) { - } else if (FALSE) { - foreach ($tokens as $token) { - switch ($token) { - case '1': - case '2': - if (true) { - if (false) { - if (false) { - if (false) { - echo 'hello'; - } - } - } - } - break; - case '5': - break; - } - do { - while (true) { - foreach ($tokens as $token) { - for ($i = 0; $i < $token; $i++) { - echo 'hello'; - } - } - } - } while (true); - } - } - } - } - - /* - This is another c style comment 1. - This is another c style comment 2. - This is another c style comment 3. - This is another c style comment 4. - This is another c style comment 5. - */ - - /* This is a T_COMMENT - * - * - * - */ - - /** This is a T_DOC_COMMENT - */ - - /* - This T_COMMENT has a newline in it. - - */ - - public function read() - { - echo 'hello'; - - // no errors below. - $array = array( - 'this', - 'that' => array( - 'hello', - 'hello again' => array( - 'hello', - ), - ), - ); - } -} - -abstract class Test3 -{ - public function parse() - { - - foreach ($t as $ndx => $token) { - if (is_array($token)) { - echo 'here'; - } else { - $ts[] = array("token" => $token, "value" => ''); - - $last = count($ts) - 1; - - switch ($token) { - case '(': - - if ($last >= 3 && - $ts[0]['token'] != T_CLASS && - $ts[$last - 2]['token'] == T_OBJECT_OPERATOR && - $ts[$last - 3]['token'] == T_VARIABLE ) { - - - if (true) { - echo 'hello'; - } - } - array_push($braces, $token); - break; - } - } - } - } -} - -function test() -{ - $o = << - - - - doSomething( - function () { - echo 123; - } - ); - } -} - -some_function( - function() { - $a = 403; - if ($a === 404) { - $a = 403; - } - } -); - -some_function( - function() { - $a = 403; - if ($a === 404) { - $a = 403; - } - } -); - -$myFunction = function() { - $a = 403; - if ($a === 404) { - $a = 403; - } -}; - -class Whatever -{ - protected $_protectedArray = array( - 'normalString' => 'That email address is already in use!', - 'offendingString' => <<<'STRING' -Each line of this string is always said to be at column 0, - no matter how many spaces are placed - at the beginning of each line -and the ending STRING on the next line is reported as having to be indented. -STRING - ); -} - -class MyClass -{ - public static function myFunction() - { - if (empty($keywords) === FALSE) { - $keywords = 'foo'; - $existing = 'foo'; - } - - return $keywords; - - }//end myFunction() - -}//end class - -$var = call_user_func( - $new_var = function () use (&$a) { - if ($a > 0) { - return $a++; - } else { - return $a--; - } - } -); - -class AnonymousFn -{ - public function getAnonFn() - { - return array( - 'functions' => Array( - 'function1' => function ($a, $b, $c) { - $a = $b + $c; - $b = $c / 2; - return Array($a, $b, $c); - }, - ), - ); - } -} -?> - -
    - -
    -
    - -
    -
    - -
    - - "") { - $test = true; - } else { - $test = true; - } - } - ?> - - - -
    -
    -
    - -
    -
    -
    - - -

    some text

    - function ($a) { - if ($a === true) { - echo 'hi'; - } - } -]; - -$list = [ - 'fn' => function ($a) { - if ($a === true) { - echo 'hi'; - } - } -]; - -if ($foo) { - foreach ($bar as $baz) { - if ($baz) { - ?> -
    -
    -
    - 1) { - echo '1'; - } - ?> -
    - 1) { - echo '1'; - } - ?> -
    - 1) { - echo '1'; - } - ?> -
    - -<?= CHtml::encode($this->pageTitle); ?> - -expects($this->at(2)) - ->with($this->callback( - function ($subject) - { - } - ) - ); - -/** @var Database $mockedDatabase */ -/** @var Container $mockedContainer */ - -echo $string->append('foo') - ->appaend('bar') - ->appaend('baz') - ->outputUsing( - function () - { - } - ); - -echo PHP_EOL; - -switch ($arg) { - case 1: - break; - case 2: - if ($arg2 == 'foo') { - } - case 3: - default: - echo 'default'; -} - -if ($tokens[$stackPtr]['content']{0} === '#') { -} else if ($tokens[$stackPtr]['content']{0} === '/' - && $tokens[$stackPtr]['content']{1} === '/' -) { -} - -$var = call_user_func( - function() { - if ($foo) { - $new_var = function() { - if ($a > 0) { - return $a++; - } else { - return $a--; - } - }; - } - } -); - -a( - function() { - $a = function() { - $b = false; - }; - true; - } -); - -$var = [ - [ - '1' => - function () { - return true; - }, - ], - [ - '1' => - function () { - return true; - }, - '2' => true, - ] -]; - -if ($foo) { - ?> -

    - self::_replaceKeywords($failingComment, $result), - 'screenshot' => Test::getScreenshotPath( - $projectid, - $result['class_name'], - ), - ); - -} - -$this->mockedDatabase - ->with( - $this->callback( - function () { - return; - } - ) - ); - -$this->subject->recordLogin(); - -function a() -{ - if (true) { - static::$a[$b] = - static::where($c) - ->where($c) - ->where( - function ($d) { - $d->whereNull(); - $d->orWhere(); - } - ) - ->first(); - - if (static::$a[$b] === null) { - static::$a[$b] = new static( - array( - 'a' => $a->id, - 'a' => $a->id, - ) - ); - } - } - - return static::$a[$b]; -} - -$foo->load( - array( - 'bar' => function ($baz) { - $baz->call(); - } - ) -); - -hello(); - -$foo = array_unique( - array_map( - function ($entry) { - return $entry * 2; - }, - array() - ) -); -bar($foo); - -class PHP_CodeSniffer_Tokenizers_JS -{ - - public $scopeOpeners = array( - T_CASE => array( - 'end' => array( - T_BREAK => T_BREAK, - T_RETURN => T_RETURN, - ), - 'strict' => true, - ), - ); -} - -echo $string-> - append('foo')-> - appaend('bar')-> - appaend('baz')-> - outputUsing( - function () - { - } - ); - -$str = 'the items I want to show are: ' . - implode( - ', ', - array('a', 'b', 'c') - ); - -echo $str; - -$str = 'foo' - . '1' - . '2'; - -echo $str; - -bar([ - 'foo' => foo(function () { - return 'foo'; - }) -]); - -$domains = array_unique( - array_map( - function ($url) { - $urlObject = new \Purl\Url($url); - return $urlObject->registerableDomain; - }, - $sites - ) -); - -return $domains; - -if ($a == 5) : - echo "a equals 5"; - echo "..."; -elseif ($a == 6) : - echo "a equals 6"; - echo "!!!"; -else : - echo "a is neither 5 nor 6"; -endif; - -if ($foo): - if ($bar) $foo = 1; - elseif ($baz) $foo = 2; -endif; - -$this - ->method(array( - 'foo' => 'bar', - ), 'arg', array( - 'foo' => 'bar', - )); - -class Foo -{ - use Bar { - myMethod as renamedMethod; - } -} - -class Foo -{ - use Bar { - myMethod as renamedMethod; - } -} - -foo(); - -array( - 'key1' => function ($bar) { - return $bar; - }, - 'key2' => function ($foo) { - return $foo; - }, -); - -?> - - 1, - ]; -$c = 2; - -class foo -{ - public function get() - { - $foo = ['b' => 'c', - 'd' => [ - ['e' => 'f'] - ]]; - echo '42'; - - $foo = array('b' => 'c', - 'd' => array( - array('e' => 'f') - )); - echo '42'; - } -} - -switch ($foo) { - case 1: - return array(); - case 2: - return ''; - case 3: - return $function(); - case 4: - return $functionCall($param[0]); - case 5: - return array() + array(); // Array Merge - case 6: - // String connect - return $functionReturningString('') . $functionReturningString(array()); - case 7: - return functionCall( - $withMultiLineParam[0], - array(), - $functionReturningString( - $withMultiLineParam[1] - ) - ); - case 8: - return $param[0][0]; -} - -class Test { - - public - $foo - ,$bar - ,$baz = [ ] - ; - - public function wtfindent() { - } -} - -switch ($x) { - case 1: - return [1]; - default: - return [2]; -} - -switch ($foo) { - case self::FOO: - return $this->bar($gfoo, function ($id) { - return FOO::bar($id); - }, $values); - case self::BAR: - $values = $this->bar($foo, $values); - break; -} - -$var = array( - 'long description' => - array(0, 'something'), - 'another long description' => - array(1, "something else") -); - -$services = array( - 'service 1' => - Mockery::mock('class 1') - ->shouldReceive('setFilter')->once() - ->shouldReceive('getNbResults')->atLeast()->once() - ->shouldReceive('getSlice')->once()->andReturn(array()) - ->getMock(), - 'service 2' => - Mockery::mock('class 2') - ->shouldReceive('__invoke')->once() - ->getMock() -); - -class Foo -{ - public function setUp() - { - $this->foo = new class { - public $name = 'Some value'; - }; - } -} - -try { - foo(); -} catch (\Exception $e) { - $foo = function() { - return 'foo'; - }; - - if (true) { - } -} - -if ($foo) { - foo(); -} else if ($e) { - $foo = function() { - return 'foo'; - }; - - if (true) { - } -} else { - $foo = function() { - return 'foo'; - }; - - if (true) { - } -} - -switch ($parameter) { - case null: - return [ - 'foo' => in_array( - 'foo', - [] - ), - ]; - - default: - return []; -} - -class SomeClass -{ - public function someFunc() - { - a(function () { - echo "a"; - })->b(function () { - echo "b"; - }); - - if (true) { - echo "c"; - } - echo "d"; - } -} - -$params = self::validate_parameters(self::read_competency_framework_parameters(), - array( - 'id' => $id, - )); - -$framework = api::read_framework($params['id']); -self::validate_context($framework->get_context()); -$output = $PAGE->get_renderer('tool_lp'); - -class Test123 -{ - protected static - $prop1 = [ - 'testA' => 123, - ], - $prop2 = [ - 'testB' => 456, - ]; - - protected static - $prop3 = array( - 'testA' => 123, - ), - $prop4 = array( - 'testB' => 456, - ); - - protected static $prop5; -} - -$foo = foo( - function () { - $foo->debug( - $a, - $b - ); - - if ($a) { - $b = $a; - } - } -); - -if (somethingIsTrue()) { - ?> -
    - -
    - bar(foo(function () { - }), foo(function () { - })); - -echo 'foo'; - -class Test { - - public function a() { - ?>adebug( - $a, - $b - ); - - if ($a) { - $b = $a; - } - } -); - -function test() -{ - $array = []; - foreach ($array as $data) { - [ - 'key1' => $var1, - 'key2' => $var2, - ] = $data; - foreach ($var1 as $method) { - echo $method . $var2; - } - } -} - -switch ($a) { - case 0: - $a = function () { - }; - case 1: - break; -} - -class Test -{ - public function __construct() - { - if (false) { - echo 0; - } - } -} - -return [ - 'veryLongKeySoIWantToMakeALineBreak' - => 'veryLonValueSoIWantToMakeALineBreak', - - 'someOtherKey' => [ - 'someValue' - ], - - 'arrayWithArraysInThere' => [ - ['Value1', 'Value1'] - ], -]; - -switch ($sContext) { - case 'SOMETHING': - case 'CONSTANT': - do_something(); - break; - case 'GLOBAL': - case 'GLOBAL1': - do_something(); - // Fall through - default: - { - do_something(); - } -} - -array_map( - static function ( $item ) { - echo $item; - }, - $some_array -); - -/** - * Comment. - */ -$a(function () use ($app) { - echo 'hi'; -})(); - -$app->run(); - -function foo() -{ - $foo('some - long description', function () { - }); - - $foo('some - long - description', function () { - }); - - $foo( - 'some long description', function () { - }); -} - -switch ( $a ) { - case 'a': - $b = 2; - /** - * A comment. - */ - apply_filter( 'something', $b ); - break; - - case 'aa': - $b = 2; - /* - * A comment. - */ - apply_filter( 'something', $b ); - break; - - case 'b': - $b = 3; - ?> - - - - - -
    - -
    - -
    - -
    - - -
    - - - -
    - [ - ], - 'b' => <<<'FOO' -foo; -FOO - ], - $a, -]; - -$query = Model::query() - ->when($a, function () { - static $b = ''; - }); - -$result = array_map( - static fn(int $number) : int => $number + 1, - $numbers -); - -$a = $a === true ? [ - 'a' => 1, - ] : [ - 'a' => 100, -]; - -return [ - Url::make('View Song', fn($song) => $song->url()) - ->onlyOnDetail(), - - new Panel('Information', [ - Text::make('Title') - ]), -]; - -echo $string?->append('foo') - ?->outputUsing(); - -// phpcs:set Generic.WhiteSpace.ScopeIndent exact true -echo $string?->append('foo') - ?->outputUsing(); -// phpcs:set Generic.WhiteSpace.ScopeIndent exact false - -if (true) { - ?> null, - false => false, - 1, 2, 3 => true, - default => $value, -}; - -$value = match ($value) { - '' => null, - false => false, - 1, 2, 3 => true, - default => $value, -}; - -$value = match ( - $value - ) { - '' => null, - false - => false, - 1, - 2, - 3 => true, - default => - $value, -}; - -function toString(): string -{ - return sprintf( - '%s', - match ($type) { - 'foo' => 'bar', - }, - ); -} - -$list = [ - 'fn' => function ($a) { - if ($a === true) { - echo 'hi'; - } - }, - 'fn' => function ($a) { - if ($a === true) { - echo 'hi'; - $list2 = [ - 'fn' => function ($a) { - if ($a === true) { - echo 'hi'; - } - } - ]; - } - } -]; - -$foo = match ($type) { - 'a' => [ - 'aa' => 'DESC', - 'ab' => 'DESC', - ], - 'b' => [ - 'ba' => 'DESC', - 'bb' => 'DESC', - ], - default => [ - 'da' => 'DESC', - ], -}; - -$a = [ - 'a' => [ - 'a' => fn () => foo() - ], - 'a' => [ - 'a' => 'a', - ] -]; - -switch ($foo) { - case 'a': - $foo = match ($foo) { - 'bar' => 'custom_1', - default => 'a' - }; - return $foo; - case 'b': - return match ($foo) { - 'bar' => 'custom_1', - default => 'b' - }; - default: - return 'default'; -} - -foo(function ($foo) { - return [ - match ($foo) { - } - ]; -}); - -// Issue #110. -echo match (1) { - 0 => match (2) { - 2 => match (3) { - 3 => 3, - default => -1, - }, - }, - 1 => match (2) { - 1 => match (3) { - 3 => 3, - default => -1, - }, - 2 => match (3) { - 3 => 3, - default => -1, - }, - }, -}; - -// Issue #437. -match (true) { - default => [ - 'unrelated' => '', - 'example' => array_filter( - array_map( - function () { - return null; - }, - [] - ) - ) - ] -}; - -// Issue squizlabs/PHP_CodeSniffer#3808 -function test() { - yield - from [ 3, 4 ]; -} - -/* ADD NEW TESTS ABOVE THIS LINE AND MAKE SURE THAT THE 1 (space-based) AND 2 (tab-based) FILES ARE IN SYNC! */ -?> - - - - - - - <<<'INTRO' - lorem ipsum - INTRO, - 'em' => [ - [ - '', - ], - ], - 'abc' => [ - 'a' => 'wop wop', - 'b' => 'ola ola.', - ], -]; - -echo "" diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/WhiteSpace/ScopeIndentUnitTest.3.inc b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/WhiteSpace/ScopeIndentUnitTest.3.inc deleted file mode 100644 index dd095617..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/WhiteSpace/ScopeIndentUnitTest.3.inc +++ /dev/null @@ -1,34 +0,0 @@ - $enabled, - 'compression' => $compression, - ] = $options; -} - -$this->foo() - ->bar() - ->baz(); - -// Issue squizlabs/PHP_CodeSniffer#3808 -function test() { - yield - from [ 3, 4 ]; -} diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/WhiteSpace/ScopeIndentUnitTest.3.inc.fixed b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/WhiteSpace/ScopeIndentUnitTest.3.inc.fixed deleted file mode 100644 index aaa0b1c8..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/WhiteSpace/ScopeIndentUnitTest.3.inc.fixed +++ /dev/null @@ -1,34 +0,0 @@ - $enabled, - 'compression' => $compression, - ] = $options; -} - -$this->foo() - ->bar() - ->baz(); - -// Issue squizlabs/PHP_CodeSniffer#3808 -function test() { - yield - from [ 3, 4 ]; -} diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/WhiteSpace/ScopeIndentUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/WhiteSpace/ScopeIndentUnitTest.php deleted file mode 100644 index fc9f9a8b..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/WhiteSpace/ScopeIndentUnitTest.php +++ /dev/null @@ -1,220 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\WhiteSpace; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the ScopeIndent sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\WhiteSpace\ScopeIndentSniff - */ -final class ScopeIndentUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Get a list of CLI values to set before the file is tested. - * - * @param string $testFile The name of the file being tested. - * @param \PHP_CodeSniffer\Config $config The config data for the test run. - * - * @return void - */ - public function setCliValues($testFile, $config) - { - // Tab width setting is only needed for the tabbed file. - if ($testFile === 'ScopeIndentUnitTest.2.inc') { - $config->tabWidth = 4; - } else { - $config->tabWidth = 0; - } - - }//end setCliValues() - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getErrorList($testFile='') - { - if ($testFile === 'ScopeIndentUnitTest.1.js') { - return [ - 6 => 1, - 14 => 1, - 21 => 1, - 30 => 1, - 32 => 1, - 33 => 1, - 34 => 1, - 39 => 1, - 42 => 1, - 59 => 1, - 60 => 1, - 75 => 1, - 120 => 1, - 121 => 1, - 122 => 1, - 123 => 1, - 141 => 1, - 142 => 1, - 155 => 1, - 156 => 1, - 168 => 1, - 184 => 1, - ]; - }//end if - - if ($testFile === 'ScopeIndentUnitTest.3.inc') { - return [ - 6 => 1, - 7 => 1, - 10 => 1, - 33 => 1, - ]; - } - - if ($testFile === 'ScopeIndentUnitTest.4.inc') { - return []; - } - - return [ - 7 => 1, - 10 => 1, - 13 => 1, - 17 => 1, - 20 => 1, - 24 => 1, - 25 => 1, - 27 => 1, - 28 => 1, - 29 => 1, - 30 => 1, - 58 => 1, - 123 => 1, - 224 => 1, - 225 => 1, - 279 => 1, - 280 => 1, - 281 => 1, - 282 => 1, - 283 => 1, - 284 => 1, - 285 => 1, - 286 => 1, - 336 => 1, - 349 => 1, - 380 => 1, - 386 => 1, - 387 => 1, - 388 => 1, - 389 => 1, - 390 => 1, - 397 => 1, - 419 => 1, - 420 => 1, - 465 => 1, - 467 => 1, - 472 => 1, - 473 => 1, - 474 => 1, - 496 => 1, - 498 => 1, - 500 => 1, - 524 => 1, - 526 => 1, - 544 => 1, - 545 => 1, - 546 => 1, - 639 => 1, - 660 => 1, - 662 => 1, - 802 => 1, - 803 => 1, - 823 => 1, - 858 => 1, - 879 => 1, - 1163 => 1, - 1197 => 1, - 1198 => 1, - 1259 => 1, - 1264 => 1, - 1265 => 1, - 1266 => 1, - 1269 => 1, - 1272 => 1, - 1273 => 1, - 1274 => 1, - 1275 => 1, - 1276 => 1, - 1277 => 1, - 1280 => 1, - 1281 => 1, - 1282 => 1, - 1284 => 1, - 1285 => 1, - 1288 => 1, - 1289 => 1, - 1290 => 1, - 1292 => 1, - 1293 => 1, - 1310 => 1, - 1312 => 1, - 1327 => 1, - 1328 => 1, - 1329 => 1, - 1330 => 1, - 1331 => 1, - 1332 => 1, - 1335 => 1, - 1340 => 1, - 1342 => 1, - 1345 => 1, - 1488 => 1, - 1489 => 1, - 1500 => 1, - 1503 => 1, - 1518 => 1, - 1520 => 1, - 1527 => 1, - 1529 => 1, - 1530 => 1, - 1631 => 1, - 1632 => 1, - 1633 => 1, - 1634 => 1, - ]; - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/WhiteSpace/SpreadOperatorSpacingAfterUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/WhiteSpace/SpreadOperatorSpacingAfterUnitTest.php deleted file mode 100644 index 21774f8d..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Generic/Tests/WhiteSpace/SpreadOperatorSpacingAfterUnitTest.php +++ /dev/null @@ -1,72 +0,0 @@ - - * @copyright 2019 Juliette Reinders Folmer. All rights reserved. - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Generic\Tests\WhiteSpace; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the SpreadOperatorSpacingAfter sniff. - * - * @covers \PHP_CodeSniffer\Standards\Generic\Sniffs\WhiteSpace\SpreadOperatorSpacingAfterSniff - */ -final class SpreadOperatorSpacingAfterUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getErrorList($testFile='') - { - switch ($testFile) { - case 'SpreadOperatorSpacingAfterUnitTest.1.inc': - return [ - 12 => 1, - 13 => 1, - 20 => 2, - 40 => 1, - 41 => 1, - 46 => 2, - 60 => 1, - 61 => 1, - 66 => 2, - 78 => 1, - ]; - - default: - return []; - }//end switch - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Docs/Commenting/FileCommentStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Docs/Commenting/FileCommentStandard.xml deleted file mode 100644 index 190670f7..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Docs/Commenting/FileCommentStandard.xml +++ /dev/null @@ -1,293 +0,0 @@ - - - - - - - /** - * Short description here. - * - * PHP version 5 - * - * @category Foo - * @package Foo_Helpers - * @author Marty McFly - * @copyright 2013-2014 Foo Inc. - * @license MIT License - * @link http://example.com - */ - ]]> - - - - ]]> - - - - - Short description here. - * - * PHP version 5 - * - * @category Foo - * @package Foo_Helpers - * @author Marty McFly - * @copyright 2013-2014 Foo Inc. - * @license MIT License - * @link http://example.com - */ - ]]> - - - - * Short description here. - * - * PHP version 5 - * - * @category Foo - * @package Foo_Helpers - * @author Marty McFly - * @copyright 2013-2014 Foo Inc. - * @license MIT License - * @link http://example.com - */ - ]]> - - - - - - * PHP version 5 - * - * @category Foo - * @package Foo_Helpers - * @author Marty McFly - * @copyright 2013-2014 Foo Inc. - * @license MIT License - * @link http://example.com - */ - ]]> - - - - * - * PHP version 5 - * - * - * @category Foo - * @package Foo_Helpers - * @author Marty McFly - * @copyright 2013-2014 Foo Inc. - * @license MIT License - * @link http://example.com - */ - ]]> - - - - - - * @category Foo - * @package Foo_Helpers - * @author Marty McFly - * @copyright 2013-2014 Foo Inc. - * @license MIT License - * @link http://example.com - */ - ]]> - - - - * - * @category Foo - * @package Foo_Helpers - * @author Marty McFly - * @copyright 2013-2014 Foo Inc. - * @license MIT License - * @link http://example.com - */ - ]]> - - - - - @category Foo - * @package Foo_Helpers - * @author Marty McFly - * @copyright 2013-2014 Foo Inc. - * @license MIT License - * @link http://example.com - */ - ]]> - - - - - - - - @category Foo - * @package Foo_Helpers - * @author Marty McFly - * @copyright 2013-2014 Foo Inc. - * @license MIT License - * @link http://example.com - */ - ]]> - - - @category Foo - * @category Bar - * @package Foo_Helpers - * @author Marty McFly - * @copyright 2013-2014 Foo Inc. - * @license MIT License - * @link http://example.com - */ - ]]> - - - - - PHP version 5 - * - * @category Foo - * @package Foo_Helpers - * @author Marty McFly - * @copyright 2013-2014 Foo Inc. - * @license MIT License - * @link http://example.com - */ - ]]> - - - - * @copyright 2013-2014 Foo Inc. - * @license MIT License - * @link http://example.com - */ - ]]> - - - - - - * @copyright 2013-2014 Foo Inc. - * @license MIT License - * @link http://example.com - */ - ]]> - - - @package Foo_Helpers - * @category Foo - * @author Marty McFly - * @copyright 2013-2014 Foo Inc. - * @license MIT License - * @link http://example.com - */ - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Docs/Files/IncludingFileStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Docs/Files/IncludingFileStandard.xml deleted file mode 100644 index 912fa5e0..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Docs/Files/IncludingFileStandard.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - require_once. Anywhere you are conditionally including a class file (for example, factory methods), use include_once. Either of these will ensure that class files are included only once. They share the same file list, so you don't need to worry about mixing them - a file included with require_once will not be included again by include_once. - ]]> - - - include_once and require_once are statements, not functions. Parentheses should not surround the subject filename. - ]]> - - - - - - - ('PHP/CodeSniffer.php'); - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Docs/Functions/FunctionCallSignatureStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Docs/Functions/FunctionCallSignatureStandard.xml deleted file mode 100644 index 2f539c9b..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Docs/Functions/FunctionCallSignatureStandard.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - ( $bar, $baz, $quux ) ; - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Docs/Functions/ValidDefaultValueStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Docs/Functions/ValidDefaultValueStandard.xml deleted file mode 100644 index ef9bc326..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Docs/Functions/ValidDefaultValueStandard.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - $persistent = false) -{ - ... -} - ]]> - - - $persistent = false, $dsn) -{ - ... -} - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Docs/NamingConventions/ValidClassNameStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Docs/NamingConventions/ValidClassNameStandard.xml deleted file mode 100644 index 052fb2ba..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Docs/NamingConventions/ValidClassNameStandard.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Docs/NamingConventions/ValidFunctionNameStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Docs/NamingConventions/ValidFunctionNameStandard.xml deleted file mode 100644 index 5dcff71a..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Docs/NamingConventions/ValidFunctionNameStandard.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Docs/NamingConventions/ValidVariableNameStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Docs/NamingConventions/ValidVariableNameStandard.xml deleted file mode 100644 index 1f8e6d2b..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Docs/NamingConventions/ValidVariableNameStandard.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - publicVar; - protected $protectedVar; - private $_privateVar; -} - ]]> - - - _publicVar; - protected $_protectedVar; - private $privateVar; -} - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Sniffs/Commenting/FileCommentSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Sniffs/Commenting/FileCommentSniff.php deleted file mode 100644 index c47466a0..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Sniffs/Commenting/FileCommentSniff.php +++ /dev/null @@ -1,583 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\PEAR\Sniffs\Commenting; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Common; - -class FileCommentSniff implements Sniff -{ - - /** - * Tags in correct order and related info. - * - * @var array - */ - protected $tags = [ - '@category' => [ - 'required' => true, - 'allow_multiple' => false, - ], - '@package' => [ - 'required' => true, - 'allow_multiple' => false, - ], - '@subpackage' => [ - 'required' => false, - 'allow_multiple' => false, - ], - '@author' => [ - 'required' => true, - 'allow_multiple' => true, - ], - '@copyright' => [ - 'required' => false, - 'allow_multiple' => true, - ], - '@license' => [ - 'required' => true, - 'allow_multiple' => false, - ], - '@version' => [ - 'required' => false, - 'allow_multiple' => false, - ], - '@link' => [ - 'required' => true, - 'allow_multiple' => true, - ], - '@see' => [ - 'required' => false, - 'allow_multiple' => true, - ], - '@since' => [ - 'required' => false, - 'allow_multiple' => false, - ], - '@deprecated' => [ - 'required' => false, - 'allow_multiple' => false, - ], - ]; - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [T_OPEN_TAG]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * - * @return int|void - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - // Find the next non whitespace token. - $commentStart = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true); - - // Allow declare() statements at the top of the file. - if ($tokens[$commentStart]['code'] === T_DECLARE) { - $semicolon = $phpcsFile->findNext(T_SEMICOLON, ($commentStart + 1)); - $commentStart = $phpcsFile->findNext(T_WHITESPACE, ($semicolon + 1), null, true); - } - - // Ignore vim header. - if ($tokens[$commentStart]['code'] === T_COMMENT) { - if (strstr($tokens[$commentStart]['content'], 'vim:') !== false) { - $commentStart = $phpcsFile->findNext( - T_WHITESPACE, - ($commentStart + 1), - null, - true - ); - } - } - - $errorToken = ($stackPtr + 1); - if (isset($tokens[$errorToken]) === false) { - $errorToken--; - } - - if ($tokens[$commentStart]['code'] === T_CLOSE_TAG) { - // We are only interested if this is the first open tag. - return $phpcsFile->numTokens; - } else if ($tokens[$commentStart]['code'] === T_COMMENT) { - $error = 'You must use "/**" style comments for a file comment'; - $phpcsFile->addError($error, $errorToken, 'WrongStyle'); - $phpcsFile->recordMetric($stackPtr, 'File has doc comment', 'yes'); - return $phpcsFile->numTokens; - } else if ($commentStart === false - || $tokens[$commentStart]['code'] !== T_DOC_COMMENT_OPEN_TAG - ) { - $phpcsFile->addError('Missing file doc comment', $errorToken, 'Missing'); - $phpcsFile->recordMetric($stackPtr, 'File has doc comment', 'no'); - return $phpcsFile->numTokens; - } - - $commentEnd = $tokens[$commentStart]['comment_closer']; - - for ($nextToken = ($commentEnd + 1); $nextToken < $phpcsFile->numTokens; $nextToken++) { - if ($tokens[$nextToken]['code'] === T_WHITESPACE) { - continue; - } - - if ($tokens[$nextToken]['code'] === T_ATTRIBUTE - && isset($tokens[$nextToken]['attribute_closer']) === true - ) { - $nextToken = $tokens[$nextToken]['attribute_closer']; - continue; - } - - break; - } - - if ($nextToken === $phpcsFile->numTokens) { - $nextToken--; - } - - $ignore = [ - T_CLASS, - T_INTERFACE, - T_TRAIT, - T_ENUM, - T_FUNCTION, - T_CLOSURE, - T_PUBLIC, - T_PRIVATE, - T_PROTECTED, - T_FINAL, - T_STATIC, - T_ABSTRACT, - T_READONLY, - T_CONST, - T_PROPERTY, - ]; - - if (in_array($tokens[$nextToken]['code'], $ignore, true) === true) { - $phpcsFile->addError('Missing file doc comment', $stackPtr, 'Missing'); - $phpcsFile->recordMetric($stackPtr, 'File has doc comment', 'no'); - return $phpcsFile->numTokens; - } - - $phpcsFile->recordMetric($stackPtr, 'File has doc comment', 'yes'); - - // Check the PHP Version, which should be in some text before the first tag. - $found = false; - for ($i = ($commentStart + 1); $i < $commentEnd; $i++) { - if ($tokens[$i]['code'] === T_DOC_COMMENT_TAG) { - break; - } else if ($tokens[$i]['code'] === T_DOC_COMMENT_STRING - && strstr(strtolower($tokens[$i]['content']), 'php version') !== false - ) { - $found = true; - break; - } - } - - if ($found === false) { - $error = 'PHP version not specified'; - $phpcsFile->addWarning($error, $commentEnd, 'MissingVersion'); - } - - // Check each tag. - $this->processTags($phpcsFile, $stackPtr, $commentStart); - - // Ignore the rest of the file. - return $phpcsFile->numTokens; - - }//end process() - - - /** - * Processes each required or optional tag. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * @param int $commentStart Position in the stack where the comment started. - * - * @return void - */ - protected function processTags($phpcsFile, $stackPtr, $commentStart) - { - $tokens = $phpcsFile->getTokens(); - - if (get_class($this) === 'PHP_CodeSniffer\Standards\PEAR\Sniffs\Commenting\FileCommentSniff') { - $docBlock = 'file'; - } else { - $docBlock = 'class'; - } - - $commentEnd = $tokens[$commentStart]['comment_closer']; - - $foundTags = []; - $tagTokens = []; - foreach ($tokens[$commentStart]['comment_tags'] as $tag) { - $name = $tokens[$tag]['content']; - if (isset($this->tags[$name]) === false) { - continue; - } - - if ($this->tags[$name]['allow_multiple'] === false && isset($tagTokens[$name]) === true) { - $error = 'Only one %s tag is allowed in a %s comment'; - $data = [ - $name, - $docBlock, - ]; - $phpcsFile->addError($error, $tag, 'Duplicate'.ucfirst(substr($name, 1)).'Tag', $data); - } - - $foundTags[] = $name; - $tagTokens[$name][] = $tag; - - $string = $phpcsFile->findNext(T_DOC_COMMENT_STRING, $tag, $commentEnd); - if ($string === false || $tokens[$string]['line'] !== $tokens[$tag]['line']) { - $error = 'Content missing for %s tag in %s comment'; - $data = [ - $name, - $docBlock, - ]; - $phpcsFile->addError($error, $tag, 'Empty'.ucfirst(substr($name, 1)).'Tag', $data); - continue; - } - }//end foreach - - // Check if the tags are in the correct position. - $pos = 0; - foreach ($this->tags as $tag => $tagData) { - if (isset($tagTokens[$tag]) === false) { - if ($tagData['required'] === true) { - $error = 'Missing %s tag in %s comment'; - $data = [ - $tag, - $docBlock, - ]; - $phpcsFile->addError($error, $commentEnd, 'Missing'.ucfirst(substr($tag, 1)).'Tag', $data); - } - - continue; - } else { - $method = 'process'.substr($tag, 1); - if (method_exists($this, $method) === true) { - // Process each tag if a method is defined. - call_user_func([$this, $method], $phpcsFile, $tagTokens[$tag]); - } - } - - if (isset($foundTags[$pos]) === false) { - break; - } - - if ($foundTags[$pos] !== $tag) { - $error = 'The tag in position %s should be the %s tag'; - $data = [ - ($pos + 1), - $tag, - ]; - $phpcsFile->addError($error, $tokens[$commentStart]['comment_tags'][$pos], ucfirst(substr($tag, 1)).'TagOrder', $data); - } - - // Account for multiple tags. - $pos++; - while (isset($foundTags[$pos]) === true && $foundTags[$pos] === $tag) { - $pos++; - } - }//end foreach - - }//end processTags() - - - /** - * Process the category tag. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param array $tags The tokens for these tags. - * - * @return void - */ - protected function processCategory($phpcsFile, array $tags) - { - $tokens = $phpcsFile->getTokens(); - foreach ($tags as $tag) { - if ($tokens[($tag + 2)]['code'] !== T_DOC_COMMENT_STRING) { - // No content. - continue; - } - - $content = $tokens[($tag + 2)]['content']; - if (Common::isUnderscoreName($content) !== true) { - $newContent = str_replace(' ', '_', $content); - $nameBits = explode('_', $newContent); - $firstBit = array_shift($nameBits); - $newName = ucfirst($firstBit).'_'; - foreach ($nameBits as $bit) { - if ($bit !== '') { - $newName .= ucfirst($bit).'_'; - } - } - - $error = 'Category name "%s" is not valid; consider "%s" instead'; - $validName = trim($newName, '_'); - $data = [ - $content, - $validName, - ]; - $phpcsFile->addError($error, $tag, 'InvalidCategory', $data); - } - }//end foreach - - }//end processCategory() - - - /** - * Process the package tag. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param array $tags The tokens for these tags. - * - * @return void - */ - protected function processPackage($phpcsFile, array $tags) - { - $tokens = $phpcsFile->getTokens(); - foreach ($tags as $tag) { - if ($tokens[($tag + 2)]['code'] !== T_DOC_COMMENT_STRING) { - // No content. - continue; - } - - $content = $tokens[($tag + 2)]['content']; - if (Common::isUnderscoreName($content) === true) { - continue; - } - - $newContent = str_replace(' ', '_', $content); - $newContent = trim($newContent, '_'); - $newContent = preg_replace('/[^A-Za-z_]/', '', $newContent); - - if ($newContent === '') { - $error = 'Package name "%s" is not valid'; - $data = [$content]; - $phpcsFile->addError($error, $tag, 'InvalidPackageValue', $data); - } else { - $nameBits = explode('_', $newContent); - $firstBit = array_shift($nameBits); - $newName = strtoupper($firstBit[0]).substr($firstBit, 1).'_'; - foreach ($nameBits as $bit) { - if ($bit !== '') { - $newName .= strtoupper($bit[0]).substr($bit, 1).'_'; - } - } - - $error = 'Package name "%s" is not valid; consider "%s" instead'; - $validName = trim($newName, '_'); - $data = [ - $content, - $validName, - ]; - $phpcsFile->addError($error, $tag, 'InvalidPackage', $data); - }//end if - }//end foreach - - }//end processPackage() - - - /** - * Process the subpackage tag. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param array $tags The tokens for these tags. - * - * @return void - */ - protected function processSubpackage($phpcsFile, array $tags) - { - $tokens = $phpcsFile->getTokens(); - foreach ($tags as $tag) { - if ($tokens[($tag + 2)]['code'] !== T_DOC_COMMENT_STRING) { - // No content. - continue; - } - - $content = $tokens[($tag + 2)]['content']; - if (Common::isUnderscoreName($content) === true) { - continue; - } - - $newContent = str_replace(' ', '_', $content); - $nameBits = explode('_', $newContent); - $firstBit = array_shift($nameBits); - $newName = strtoupper($firstBit[0]).substr($firstBit, 1).'_'; - foreach ($nameBits as $bit) { - if ($bit !== '') { - $newName .= strtoupper($bit[0]).substr($bit, 1).'_'; - } - } - - $error = 'Subpackage name "%s" is not valid; consider "%s" instead'; - $validName = trim($newName, '_'); - $data = [ - $content, - $validName, - ]; - $phpcsFile->addError($error, $tag, 'InvalidSubpackage', $data); - }//end foreach - - }//end processSubpackage() - - - /** - * Process the author tag(s) that this header comment has. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param array $tags The tokens for these tags. - * - * @return void - */ - protected function processAuthor($phpcsFile, array $tags) - { - $tokens = $phpcsFile->getTokens(); - foreach ($tags as $tag) { - if ($tokens[($tag + 2)]['code'] !== T_DOC_COMMENT_STRING) { - // No content. - continue; - } - - $content = $tokens[($tag + 2)]['content']; - $local = '\da-zA-Z-_+'; - // Dot character cannot be the first or last character in the local-part. - $localMiddle = $local.'.\w'; - if (preg_match('/^([^<]*)\s+<(['.$local.'](['.$localMiddle.']*['.$local.'])*@[\da-zA-Z][-.\w]*[\da-zA-Z]\.[a-zA-Z]{2,})>$/', $content) === 0) { - $error = 'Content of the @author tag must be in the form "Display Name "'; - $phpcsFile->addError($error, $tag, 'InvalidAuthors'); - } - } - - }//end processAuthor() - - - /** - * Process the copyright tags. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param array $tags The tokens for these tags. - * - * @return void - */ - protected function processCopyright($phpcsFile, array $tags) - { - $tokens = $phpcsFile->getTokens(); - foreach ($tags as $tag) { - if ($tokens[($tag + 2)]['code'] !== T_DOC_COMMENT_STRING) { - // No content. - continue; - } - - $content = $tokens[($tag + 2)]['content']; - $matches = []; - if (preg_match('/^([0-9]{4})((.{1})([0-9]{4}))? (.+)$/', $content, $matches) !== 0) { - // Check earliest-latest year order. - if ($matches[3] !== '' && $matches[3] !== null) { - if ($matches[3] !== '-') { - $error = 'A hyphen must be used between the earliest and latest year'; - $phpcsFile->addError($error, $tag, 'CopyrightHyphen'); - } - - if ($matches[4] !== '' && $matches[4] !== null && $matches[4] < $matches[1]) { - $error = "Invalid year span \"$matches[1]$matches[3]$matches[4]\" found; consider \"$matches[4]-$matches[1]\" instead"; - $phpcsFile->addWarning($error, $tag, 'InvalidCopyright'); - } - } - } else { - $error = '@copyright tag must contain a year and the name of the copyright holder'; - $phpcsFile->addError($error, $tag, 'IncompleteCopyright'); - } - }//end foreach - - }//end processCopyright() - - - /** - * Process the license tag. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param array $tags The tokens for these tags. - * - * @return void - */ - protected function processLicense($phpcsFile, array $tags) - { - $tokens = $phpcsFile->getTokens(); - foreach ($tags as $tag) { - if ($tokens[($tag + 2)]['code'] !== T_DOC_COMMENT_STRING) { - // No content. - continue; - } - - $content = $tokens[($tag + 2)]['content']; - $matches = []; - preg_match('/^([^\s]+)\s+(.*)/', $content, $matches); - if (count($matches) !== 3) { - $error = '@license tag must contain a URL and a license name'; - $phpcsFile->addError($error, $tag, 'IncompleteLicense'); - } - } - - }//end processLicense() - - - /** - * Process the version tag. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param array $tags The tokens for these tags. - * - * @return void - */ - protected function processVersion($phpcsFile, array $tags) - { - $tokens = $phpcsFile->getTokens(); - foreach ($tags as $tag) { - if ($tokens[($tag + 2)]['code'] !== T_DOC_COMMENT_STRING) { - // No content. - continue; - } - - $content = $tokens[($tag + 2)]['content']; - if (strstr($content, 'CVS:') === false - && strstr($content, 'SVN:') === false - && strstr($content, 'GIT:') === false - && strstr($content, 'HG:') === false - ) { - $error = 'Invalid version "%s" in file comment; consider "CVS: " or "SVN: " or "GIT: " or "HG: " instead'; - $data = [$content]; - $phpcsFile->addWarning($error, $tag, 'InvalidVersion', $data); - } - } - - }//end processVersion() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Sniffs/Functions/FunctionDeclarationSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Sniffs/Functions/FunctionDeclarationSniff.php deleted file mode 100644 index 1d0745b9..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Sniffs/Functions/FunctionDeclarationSniff.php +++ /dev/null @@ -1,549 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\PEAR\Sniffs\Functions; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Standards\Generic\Sniffs\Functions\OpeningFunctionBraceBsdAllmanSniff; -use PHP_CodeSniffer\Standards\Generic\Sniffs\Functions\OpeningFunctionBraceKernighanRitchieSniff; -use PHP_CodeSniffer\Util\Tokens; - -class FunctionDeclarationSniff implements Sniff -{ - - /** - * A list of tokenizers this sniff supports. - * - * @var array - */ - public $supportedTokenizers = [ - 'PHP', - 'JS', - ]; - - /** - * The number of spaces code should be indented. - * - * @var integer - */ - public $indent = 4; - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [ - T_FUNCTION, - T_CLOSURE, - ]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - if (isset($tokens[$stackPtr]['parenthesis_opener']) === false - || isset($tokens[$stackPtr]['parenthesis_closer']) === false - || $tokens[$stackPtr]['parenthesis_opener'] === null - || $tokens[$stackPtr]['parenthesis_closer'] === null - ) { - return; - } - - $openBracket = $tokens[$stackPtr]['parenthesis_opener']; - $closeBracket = $tokens[$stackPtr]['parenthesis_closer']; - - if (strtolower($tokens[$stackPtr]['content']) === 'function') { - // Must be one space after the FUNCTION keyword. - if ($tokens[($stackPtr + 1)]['content'] === $phpcsFile->eolChar) { - $spaces = 'newline'; - } else if ($tokens[($stackPtr + 1)]['code'] === T_WHITESPACE) { - $spaces = $tokens[($stackPtr + 1)]['length']; - } else { - $spaces = 0; - } - - if ($spaces !== 1) { - $error = 'Expected 1 space after FUNCTION keyword; %s found'; - $data = [$spaces]; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'SpaceAfterFunction', $data); - if ($fix === true) { - if ($spaces === 0) { - $phpcsFile->fixer->addContent($stackPtr, ' '); - } else { - $phpcsFile->fixer->replaceToken(($stackPtr + 1), ' '); - } - } - } - }//end if - - // Must be no space before the opening parenthesis. For closures, this is - // enforced by the previous check because there is no content between the keywords - // and the opening parenthesis. - // Unfinished closures are tokenized as T_FUNCTION however, and can be excluded - // by checking for the scope_opener. - $methodProps = $phpcsFile->getMethodProperties($stackPtr); - if ($tokens[$stackPtr]['code'] === T_FUNCTION - && (isset($tokens[$stackPtr]['scope_opener']) === true || $methodProps['has_body'] === false) - ) { - if ($tokens[($openBracket - 1)]['content'] === $phpcsFile->eolChar) { - $spaces = 'newline'; - } else if ($tokens[($openBracket - 1)]['code'] === T_WHITESPACE) { - $spaces = $tokens[($openBracket - 1)]['length']; - } else { - $spaces = 0; - } - - if ($spaces !== 0) { - $error = 'Expected 0 spaces before opening parenthesis; %s found'; - $data = [$spaces]; - $fix = $phpcsFile->addFixableError($error, $openBracket, 'SpaceBeforeOpenParen', $data); - if ($fix === true) { - $phpcsFile->fixer->replaceToken(($openBracket - 1), ''); - } - } - - // Must be no space before semicolon in abstract/interface methods. - if ($methodProps['has_body'] === false) { - $end = $phpcsFile->findNext(T_SEMICOLON, $closeBracket); - if ($end !== false) { - if ($tokens[($end - 1)]['content'] === $phpcsFile->eolChar) { - $spaces = 'newline'; - } else if ($tokens[($end - 1)]['code'] === T_WHITESPACE) { - $spaces = $tokens[($end - 1)]['length']; - } else { - $spaces = 0; - } - - if ($spaces !== 0) { - $error = 'Expected 0 spaces before semicolon; %s found'; - $data = [$spaces]; - $fix = $phpcsFile->addFixableError($error, $end, 'SpaceBeforeSemicolon', $data); - if ($fix === true) { - $phpcsFile->fixer->replaceToken(($end - 1), ''); - } - } - } - }//end if - }//end if - - // Must be one space before and after USE keyword for closures. - if ($tokens[$stackPtr]['code'] === T_CLOSURE) { - $use = $phpcsFile->findNext(T_USE, ($closeBracket + 1), $tokens[$stackPtr]['scope_opener']); - if ($use !== false) { - if ($tokens[($use + 1)]['code'] !== T_WHITESPACE) { - $length = 0; - } else if ($tokens[($use + 1)]['content'] === "\t") { - $length = '\t'; - } else { - $length = $tokens[($use + 1)]['length']; - } - - if ($length !== 1) { - $error = 'Expected 1 space after USE keyword; found %s'; - $data = [$length]; - $fix = $phpcsFile->addFixableError($error, $use, 'SpaceAfterUse', $data); - if ($fix === true) { - if ($length === 0) { - $phpcsFile->fixer->addContent($use, ' '); - } else { - $phpcsFile->fixer->replaceToken(($use + 1), ' '); - } - } - } - - if ($tokens[($use - 1)]['code'] !== T_WHITESPACE) { - $length = 0; - } else if ($tokens[($use - 1)]['content'] === "\t") { - $length = '\t'; - } else { - $length = $tokens[($use - 1)]['length']; - } - - if ($length !== 1) { - $error = 'Expected 1 space before USE keyword; found %s'; - $data = [$length]; - $fix = $phpcsFile->addFixableError($error, $use, 'SpaceBeforeUse', $data); - if ($fix === true) { - if ($length === 0) { - $phpcsFile->fixer->addContentBefore($use, ' '); - } else { - $phpcsFile->fixer->replaceToken(($use - 1), ' '); - } - } - } - }//end if - }//end if - - if ($this->isMultiLineDeclaration($phpcsFile, $stackPtr, $openBracket, $tokens) === true) { - $this->processMultiLineDeclaration($phpcsFile, $stackPtr, $tokens); - } else { - $this->processSingleLineDeclaration($phpcsFile, $stackPtr, $tokens); - } - - }//end process() - - - /** - * Determine if this is a multi-line function declaration. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * @param int $openBracket The position of the opening bracket - * in the stack passed in $tokens. - * @param array $tokens The stack of tokens that make up - * the file. - * - * @return bool - */ - public function isMultiLineDeclaration($phpcsFile, $stackPtr, $openBracket, $tokens) - { - $closeBracket = $tokens[$openBracket]['parenthesis_closer']; - if ($tokens[$openBracket]['line'] !== $tokens[$closeBracket]['line']) { - return true; - } - - // Closures may use the USE keyword and so be multi-line in this way. - if ($tokens[$stackPtr]['code'] === T_CLOSURE) { - $use = $phpcsFile->findNext(T_USE, ($closeBracket + 1), $tokens[$stackPtr]['scope_opener']); - if ($use !== false) { - // If the opening and closing parenthesis of the use statement - // are also on the same line, this is a single line declaration. - $open = $phpcsFile->findNext(T_OPEN_PARENTHESIS, ($use + 1)); - $close = $tokens[$open]['parenthesis_closer']; - if ($tokens[$open]['line'] !== $tokens[$close]['line']) { - return true; - } - } - } - - return false; - - }//end isMultiLineDeclaration() - - - /** - * Processes single-line declarations. - * - * Just uses the Generic BSD-Allman brace sniff. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * @param array $tokens The stack of tokens that make up - * the file. - * - * @return void - */ - public function processSingleLineDeclaration($phpcsFile, $stackPtr, $tokens) - { - if ($tokens[$stackPtr]['code'] === T_CLOSURE) { - $sniff = new OpeningFunctionBraceKernighanRitchieSniff(); - } else { - $sniff = new OpeningFunctionBraceBsdAllmanSniff(); - } - - $sniff->checkClosures = true; - $sniff->process($phpcsFile, $stackPtr); - - }//end processSingleLineDeclaration() - - - /** - * Processes multi-line declarations. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * @param array $tokens The stack of tokens that make up - * the file. - * - * @return void - */ - public function processMultiLineDeclaration($phpcsFile, $stackPtr, $tokens) - { - $this->processArgumentList($phpcsFile, $stackPtr, $this->indent); - - $closeBracket = $tokens[$stackPtr]['parenthesis_closer']; - if ($tokens[$stackPtr]['code'] === T_CLOSURE) { - $use = $phpcsFile->findNext(T_USE, ($closeBracket + 1), $tokens[$stackPtr]['scope_opener']); - if ($use !== false) { - $open = $phpcsFile->findNext(T_OPEN_PARENTHESIS, ($use + 1)); - $closeBracket = $tokens[$open]['parenthesis_closer']; - } - } - - if (isset($tokens[$stackPtr]['scope_opener']) === false) { - return; - } - - // The opening brace needs to be on the same line as the closing parenthesis. - // There should only be one space between the closing parenthesis - or the end of the - // return type - and the opening brace. - $opener = $tokens[$stackPtr]['scope_opener']; - if ($tokens[$opener]['line'] !== $tokens[$closeBracket]['line']) { - $error = 'The closing parenthesis and the opening brace of a multi-line function declaration must be on the same line'; - $code = 'NewlineBeforeOpenBrace'; - - $prev = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($opener - 1), $closeBracket, true); - if ($tokens[$prev]['line'] === $tokens[$opener]['line']) { - // End of the return type is not on the same line as the close parenthesis. - $phpcsFile->addError($error, $opener, $code); - } else { - $fix = $phpcsFile->addFixableError($error, $opener, $code); - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - $phpcsFile->fixer->addContent($prev, ' {'); - - // If the opener is on a line by itself, removing it will create - // an empty line, so remove the entire line instead. - $prev = $phpcsFile->findPrevious(T_WHITESPACE, ($opener - 1), $closeBracket, true); - $next = $phpcsFile->findNext(T_WHITESPACE, ($opener + 1), null, true); - - if ($tokens[$prev]['line'] < $tokens[$opener]['line'] - && $tokens[$next]['line'] > $tokens[$opener]['line'] - ) { - // Clear the whole line. - for ($i = ($prev + 1); $i < $next; $i++) { - if ($tokens[$i]['line'] === $tokens[$opener]['line']) { - $phpcsFile->fixer->replaceToken($i, ''); - } - } - } else { - // Just remove the opener. - $phpcsFile->fixer->replaceToken($opener, ''); - if ($tokens[$next]['line'] === $tokens[$opener]['line'] - && ($opener + 1) !== $next - ) { - $phpcsFile->fixer->replaceToken(($opener + 1), ''); - } - } - - $phpcsFile->fixer->endChangeset(); - }//end if - - return; - }//end if - }//end if - - $prev = $tokens[($opener - 1)]; - if ($prev['code'] !== T_WHITESPACE) { - $length = 0; - } else { - $length = strlen($prev['content']); - } - - if ($length !== 1) { - $error = 'There must be a single space between the closing parenthesis/return type and the opening brace of a multi-line function declaration; found %s spaces'; - $fix = $phpcsFile->addFixableError($error, ($opener - 1), 'SpaceBeforeOpenBrace', [$length]); - if ($fix === true) { - if ($length === 0) { - $phpcsFile->fixer->addContentBefore($opener, ' '); - } else { - $phpcsFile->fixer->replaceToken(($opener - 1), ' '); - } - } - } - - }//end processMultiLineDeclaration() - - - /** - * Processes multi-line argument list declarations. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * @param int $indent The number of spaces code should be indented. - * @param string $type The type of the token the brackets - * belong to. - * - * @return void - */ - public function processArgumentList($phpcsFile, $stackPtr, $indent, $type='function') - { - $tokens = $phpcsFile->getTokens(); - - // We need to work out how far indented the function - // declaration itself is, so we can work out how far to - // indent parameters. - $functionIndent = 0; - for ($i = ($stackPtr - 1); $i >= 0; $i--) { - if ($tokens[$i]['line'] !== $tokens[$stackPtr]['line']) { - break; - } - } - - // Move $i back to the line the function is or to 0. - $i++; - - if ($tokens[$i]['code'] === T_WHITESPACE) { - $functionIndent = $tokens[$i]['length']; - } - - // The closing parenthesis must be on a new line, even - // when checking abstract function definitions. - $closeBracket = $tokens[$stackPtr]['parenthesis_closer']; - $prev = $phpcsFile->findPrevious( - T_WHITESPACE, - ($closeBracket - 1), - null, - true - ); - - if ($tokens[$closeBracket]['line'] !== $tokens[$tokens[$closeBracket]['parenthesis_opener']]['line'] - && $tokens[$prev]['line'] === $tokens[$closeBracket]['line'] - ) { - $error = 'The closing parenthesis of a multi-line '.$type.' declaration must be on a new line'; - $fix = $phpcsFile->addFixableError($error, $closeBracket, 'CloseBracketLine'); - if ($fix === true) { - $phpcsFile->fixer->addNewlineBefore($closeBracket); - } - } - - // If this is a closure and is using a USE statement, the closing - // parenthesis we need to look at from now on is the closing parenthesis - // of the USE statement. - if ($tokens[$stackPtr]['code'] === T_CLOSURE) { - $use = $phpcsFile->findNext(T_USE, ($closeBracket + 1), $tokens[$stackPtr]['scope_opener']); - if ($use !== false) { - $open = $phpcsFile->findNext(T_OPEN_PARENTHESIS, ($use + 1)); - $closeBracket = $tokens[$open]['parenthesis_closer']; - - $prev = $phpcsFile->findPrevious( - T_WHITESPACE, - ($closeBracket - 1), - null, - true - ); - - if ($tokens[$closeBracket]['line'] !== $tokens[$tokens[$closeBracket]['parenthesis_opener']]['line'] - && $tokens[$prev]['line'] === $tokens[$closeBracket]['line'] - ) { - $error = 'The closing parenthesis of a multi-line use declaration must be on a new line'; - $fix = $phpcsFile->addFixableError($error, $closeBracket, 'UseCloseBracketLine'); - if ($fix === true) { - $phpcsFile->fixer->addNewlineBefore($closeBracket); - } - } - }//end if - }//end if - - // Each line between the parenthesis should be indented 4 spaces. - $openBracket = $tokens[$stackPtr]['parenthesis_opener']; - $lastLine = $tokens[$openBracket]['line']; - for ($i = ($openBracket + 1); $i < $closeBracket; $i++) { - if ($tokens[$i]['line'] !== $lastLine) { - if ($i === $tokens[$stackPtr]['parenthesis_closer'] - || ($tokens[$i]['code'] === T_WHITESPACE - && (($i + 1) === $closeBracket - || ($i + 1) === $tokens[$stackPtr]['parenthesis_closer'])) - ) { - // Closing braces need to be indented to the same level - // as the function. - $expectedIndent = $functionIndent; - } else { - $expectedIndent = ($functionIndent + $indent); - } - - // We changed lines, so this should be a whitespace indent token. - $foundIndent = 0; - if ($tokens[$i]['code'] === T_WHITESPACE - && $tokens[$i]['line'] !== $tokens[($i + 1)]['line'] - ) { - $error = 'Blank lines are not allowed in a multi-line '.$type.' declaration'; - $fix = $phpcsFile->addFixableError($error, $i, 'EmptyLine'); - if ($fix === true) { - $phpcsFile->fixer->replaceToken($i, ''); - } - - // This is an empty line, so don't check the indent. - continue; - } else if ($tokens[$i]['code'] === T_WHITESPACE) { - $foundIndent = $tokens[$i]['length']; - } else if ($tokens[$i]['code'] === T_DOC_COMMENT_WHITESPACE) { - $foundIndent = $tokens[$i]['length']; - ++$expectedIndent; - } - - if ($expectedIndent !== $foundIndent) { - $error = 'Multi-line '.$type.' declaration not indented correctly; expected %s spaces but found %s'; - $data = [ - $expectedIndent, - $foundIndent, - ]; - - $fix = $phpcsFile->addFixableError($error, $i, 'Indent', $data); - if ($fix === true) { - $spaces = str_repeat(' ', $expectedIndent); - if ($foundIndent === 0) { - $phpcsFile->fixer->addContentBefore($i, $spaces); - } else { - $phpcsFile->fixer->replaceToken($i, $spaces); - } - } - } - - $lastLine = $tokens[$i]['line']; - }//end if - - if ($tokens[$i]['code'] === T_OPEN_PARENTHESIS - && isset($tokens[$i]['parenthesis_closer']) === true - ) { - $prevNonEmpty = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($i - 1), null, true); - if ($tokens[$prevNonEmpty]['code'] !== T_USE) { - // Since PHP 8.1, a default value can contain a class instantiation. - // Skip over these "function calls" as they have their own indentation rules. - $i = $tokens[$i]['parenthesis_closer']; - $lastLine = $tokens[$i]['line']; - continue; - } - } - - if ($tokens[$i]['code'] === T_ARRAY || $tokens[$i]['code'] === T_OPEN_SHORT_ARRAY) { - // Skip arrays as they have their own indentation rules. - if ($tokens[$i]['code'] === T_OPEN_SHORT_ARRAY) { - $i = $tokens[$i]['bracket_closer']; - } else { - $i = $tokens[$i]['parenthesis_closer']; - } - - $lastLine = $tokens[$i]['line']; - continue; - } - - if ($tokens[$i]['code'] === T_ATTRIBUTE) { - // Skip attributes as they have their own indentation rules. - $i = $tokens[$i]['attribute_closer']; - $lastLine = $tokens[$i]['line']; - continue; - } - }//end for - - }//end processArgumentList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Sniffs/WhiteSpace/ScopeClosingBraceSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Sniffs/WhiteSpace/ScopeClosingBraceSniff.php deleted file mode 100644 index cb8e46d5..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Sniffs/WhiteSpace/ScopeClosingBraceSniff.php +++ /dev/null @@ -1,182 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\PEAR\Sniffs\WhiteSpace; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Tokens; - -class ScopeClosingBraceSniff implements Sniff -{ - - /** - * The number of spaces code should be indented. - * - * @var integer - */ - public $indent = 4; - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return Tokens::$scopeOpeners; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile All the tokens found in the document. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - // If this is an inline condition (ie. there is no scope opener), then - // return, as this is not a new scope. - if (isset($tokens[$stackPtr]['scope_closer']) === false) { - return; - } - - $scopeStart = $tokens[$stackPtr]['scope_opener']; - $scopeEnd = $tokens[$stackPtr]['scope_closer']; - - // If the scope closer doesn't think it belongs to this scope opener - // then the opener is sharing its closer with other tokens. We only - // want to process the closer once, so skip this one. - if (isset($tokens[$scopeEnd]['scope_condition']) === false - || $tokens[$scopeEnd]['scope_condition'] !== $stackPtr - ) { - return; - } - - // We need to actually find the first piece of content on this line, - // because if this is a method with tokens before it (public, static etc) - // or an if with an else before it, then we need to start the scope - // checking from there, rather than the current token. - $lineStart = ($stackPtr - 1); - for ($lineStart; $lineStart > 0; $lineStart--) { - if (strpos($tokens[$lineStart]['content'], $phpcsFile->eolChar) !== false) { - break; - } - } - - $lineStart++; - - $startColumn = 1; - if ($tokens[$lineStart]['code'] === T_WHITESPACE) { - $startColumn = $tokens[($lineStart + 1)]['column']; - } else if ($tokens[$lineStart]['code'] === T_INLINE_HTML) { - $trimmed = ltrim($tokens[$lineStart]['content']); - if ($trimmed === '') { - $startColumn = $tokens[($lineStart + 1)]['column']; - } else { - $startColumn = (strlen($tokens[$lineStart]['content']) - strlen($trimmed)); - } - } - - // Check that the closing brace is on it's own line. - for ($lastContent = ($scopeEnd - 1); $lastContent > $scopeStart; $lastContent--) { - if ($tokens[$lastContent]['code'] === T_WHITESPACE || $tokens[$lastContent]['code'] === T_OPEN_TAG) { - continue; - } - - if ($tokens[$lastContent]['code'] === T_INLINE_HTML - && ltrim($tokens[$lastContent]['content']) === '' - ) { - continue; - } - - break; - } - - if ($tokens[$lastContent]['line'] === $tokens[$scopeEnd]['line']) { - $error = 'Closing brace must be on a line by itself'; - $fix = $phpcsFile->addFixableError($error, $scopeEnd, 'Line'); - if ($fix === true) { - $phpcsFile->fixer->addNewlineBefore($scopeEnd); - } - - return; - } - - // Check now that the closing brace is lined up correctly. - $lineStart = ($scopeEnd - 1); - for ($lineStart; $lineStart > 0; $lineStart--) { - if (strpos($tokens[$lineStart]['content'], $phpcsFile->eolChar) !== false) { - break; - } - } - - $lineStart++; - - $braceIndent = 0; - if ($tokens[$lineStart]['code'] === T_WHITESPACE) { - $braceIndent = ($tokens[($lineStart + 1)]['column'] - 1); - } else if ($tokens[$lineStart]['code'] === T_INLINE_HTML) { - $trimmed = ltrim($tokens[$lineStart]['content']); - if ($trimmed === '') { - $braceIndent = ($tokens[($lineStart + 1)]['column'] - 1); - } else { - $braceIndent = (strlen($tokens[$lineStart]['content']) - strlen($trimmed) - 1); - } - } - - $fix = false; - if ($tokens[$stackPtr]['code'] === T_CASE - || $tokens[$stackPtr]['code'] === T_DEFAULT - ) { - // BREAK statements should be indented n spaces from the - // CASE or DEFAULT statement. - $expectedIndent = ($startColumn + $this->indent - 1); - if ($braceIndent !== $expectedIndent) { - $error = 'Case breaking statement indented incorrectly; expected %s spaces, found %s'; - $data = [ - $expectedIndent, - $braceIndent, - ]; - $fix = $phpcsFile->addFixableError($error, $scopeEnd, 'BreakIndent', $data); - } - } else { - $expectedIndent = max(0, ($startColumn - 1)); - if ($braceIndent !== $expectedIndent) { - $error = 'Closing brace indented incorrectly; expected %s spaces, found %s'; - $data = [ - $expectedIndent, - $braceIndent, - ]; - $fix = $phpcsFile->addFixableError($error, $scopeEnd, 'Indent', $data); - } - }//end if - - if ($fix === true) { - $spaces = str_repeat(' ', $expectedIndent); - if ($braceIndent === 0) { - $phpcsFile->fixer->addContentBefore($lineStart, $spaces); - } else { - $phpcsFile->fixer->replaceToken($lineStart, ltrim($tokens[$lineStart]['content'])); - $phpcsFile->fixer->addContentBefore($lineStart, $spaces); - } - } - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Tests/Functions/FunctionDeclarationUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Tests/Functions/FunctionDeclarationUnitTest.php deleted file mode 100644 index c81e7d4e..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Tests/Functions/FunctionDeclarationUnitTest.php +++ /dev/null @@ -1,149 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\PEAR\Tests\Functions; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the FunctionDeclaration sniff. - * - * @covers \PHP_CodeSniffer\Standards\PEAR\Sniffs\Functions\FunctionDeclarationSniff - */ -final class FunctionDeclarationUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getErrorList($testFile='') - { - switch ($testFile) { - case 'FunctionDeclarationUnitTest.1.inc': - return [ - 3 => 1, - 4 => 1, - 5 => 1, - 9 => 1, - 10 => 1, - 11 => 1, - 14 => 1, - 17 => 1, - 44 => 1, - 52 => 1, - 61 => 2, - 98 => 1, - 110 => 2, - 120 => 3, - 121 => 1, - 140 => 1, - 145 => 1, - 161 => 2, - 162 => 2, - 164 => 2, - 167 => 2, - 171 => 1, - 173 => 1, - 201 => 1, - 206 => 1, - 208 => 1, - 216 => 1, - 223 => 1, - 230 => 1, - 237 => 1, - 243 => 1, - 247 => 1, - 251 => 2, - 253 => 2, - 257 => 2, - 259 => 1, - 263 => 1, - 265 => 1, - 269 => 1, - 273 => 1, - 277 => 1, - 278 => 1, - 283 => 1, - 287 => 2, - 289 => 2, - 293 => 2, - 295 => 1, - 299 => 1, - 301 => 1, - 305 => 1, - 309 => 1, - 313 => 1, - 314 => 1, - 350 => 1, - 351 => 1, - 352 => 1, - 353 => 1, - 361 => 1, - 362 => 1, - 363 => 1, - 364 => 1, - 365 => 1, - 366 => 1, - 367 => 1, - 368 => 1, - 369 => 1, - 370 => 1, - 371 => 1, - 402 => 1, - 406 => 1, - 475 => 1, - 483 => 1, - 490 => 2, - ]; - - case 'FunctionDeclarationUnitTest.js': - return [ - 3 => 1, - 4 => 1, - 5 => 1, - 9 => 1, - 10 => 1, - 11 => 1, - 14 => 1, - 17 => 1, - 41 => 1, - 48 => 1, - ]; - - default: - return []; - }//end switch - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Tests/Functions/ValidDefaultValueUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Tests/Functions/ValidDefaultValueUnitTest.php deleted file mode 100644 index abc2e19d..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Tests/Functions/ValidDefaultValueUnitTest.php +++ /dev/null @@ -1,73 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\PEAR\Tests\Functions; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the ValidDefaultValue sniff. - * - * @covers \PHP_CodeSniffer\Standards\PEAR\Sniffs\Functions\ValidDefaultValueSniff - */ -final class ValidDefaultValueUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getErrorList($testFile='') - { - switch ($testFile) { - case 'ValidDefaultValueUnitTest.1.inc': - return [ - 29 => 1, - 34 => 1, - 39 => 1, - 71 => 1, - 76 => 1, - 81 => 1, - 91 => 1, - 99 => 1, - 101 => 1, - 106 => 1, - 114 => 1, - ]; - - default: - return []; - } - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Tests/WhiteSpace/ScopeClosingBraceUnitTest.inc b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Tests/WhiteSpace/ScopeClosingBraceUnitTest.inc deleted file mode 100644 index a97aca76..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Tests/WhiteSpace/ScopeClosingBraceUnitTest.inc +++ /dev/null @@ -1,170 +0,0 @@ -{$property} =& new $class_name($this->db_index); - $this->modules[$module] =& $this->{$property}; -} - -foreach ($elements as $element) { - if ($something) { - // Do IF. - } else if ($somethingElse) { - // Do ELSE. - } -} - -switch ($foo) { -case 1: - switch ($bar) { - default: - if ($something) { - echo $string{1}; - } else if ($else) { - switch ($else) { - case 1: - // Do something. - break; - default: - // Do something. - break; - } - } - } -break; -case 2: - // Do something; - break; -} - -switch ($httpResponseCode) { - case 100: - case 101: - case 102: - default: - return 'Unknown'; -} - -switch ($httpResponseCode) { - case 100: - case 101: - case 102: - return 'Processing.'; - default: - return 'Unknown'; -} - -switch($i) { -case 1: {} -} - -switch ($httpResponseCode) { - case 100: - case 101: - case 102: - exit; - default: - exit; -} - -if ($foo): - if ($bar): - $foo = 1; - elseif ($baz): - $foo = 2; - endif; -endif; - -if ($foo): -elseif ($baz): $foo = 2; -endif; - -?> -
      - -
    • - -
    -
      - -
    • - -
    -
      - -
    • - -
    - -getSummaryCount(); ?> -
    class="empty"> - - 'a', 2 => 'b' }; - -$match = match ($test) { - 1 => 'a', - 2 => 'b' - }; - -enum Enum -{ -} - -enum Suits {} - -enum Cards -{ - } - -?> - - -
    -
    {$property} =& new $class_name($this->db_index); - $this->modules[$module] =& $this->{$property}; -} - -foreach ($elements as $element) { - if ($something) { - // Do IF. - } else if ($somethingElse) { - // Do ELSE. - } -} - -switch ($foo) { -case 1: - switch ($bar) { - default: - if ($something) { - echo $string{1}; - } else if ($else) { - switch ($else) { - case 1: - // Do something. - break; - default: - // Do something. - break; - } - } - } - break; -case 2: - // Do something; - break; -} - -switch ($httpResponseCode) { - case 100: - case 101: - case 102: - default: - return 'Unknown'; -} - -switch ($httpResponseCode) { - case 100: - case 101: - case 102: - return 'Processing.'; - default: - return 'Unknown'; -} - -switch($i) { -case 1: { - } -} - -switch ($httpResponseCode) { - case 100: - case 101: - case 102: - exit; - default: - exit; -} - -if ($foo): - if ($bar): - $foo = 1; - elseif ($baz): - $foo = 2; - endif; -endif; - -if ($foo): -elseif ($baz): $foo = 2; -endif; - -?> -
      - -
    • - -
    -
      - -
    • - -
    -
      - -
    • - -
    - -getSummaryCount(); ?> -
    class="empty"> - - 'a', 2 => 'b' -}; - -$match = match ($test) { - 1 => 'a', - 2 => 'b' -}; - -enum Enum -{ -} - -enum Suits { -} - -enum Cards -{ -} - -?> - - -
    -
    - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\PEAR\Tests\WhiteSpace; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the ScopeClosingBrace sniff. - * - * @covers \PHP_CodeSniffer\Standards\PEAR\Sniffs\WhiteSpace\ScopeClosingBraceSniff - */ -final class ScopeClosingBraceUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @return array - */ - public function getErrorList() - { - return [ - 11 => 1, - 13 => 1, - 24 => 1, - 30 => 1, - 61 => 1, - 65 => 1, - 85 => 1, - 89 => 1, - 98 => 1, - 122 => 1, - 127 => 1, - 135 => 1, - 141 => 1, - 146 => 1, - 149 => 1, - 154 => 1, - 160 => 1, - 164 => 1, - 170 => 1, - ]; - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR1/Docs/Files/SideEffectsStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR1/Docs/Files/SideEffectsStandard.xml deleted file mode 100644 index 3bb83470..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR1/Docs/Files/SideEffectsStandard.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - echo "Class Foo loaded." - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR1/Docs/Methods/CamelCapsMethodNameStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR1/Docs/Methods/CamelCapsMethodNameStandard.xml deleted file mode 100644 index 66df4e1c..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR1/Docs/Methods/CamelCapsMethodNameStandard.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - doBar() - { - } -} - ]]> - - - do_bar() - { - } -} - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR1/Sniffs/Files/SideEffectsSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR1/Sniffs/Files/SideEffectsSniff.php deleted file mode 100644 index 68a18d8c..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR1/Sniffs/Files/SideEffectsSniff.php +++ /dev/null @@ -1,303 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\PSR1\Sniffs\Files; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Tokens; - -class SideEffectsSniff implements Sniff -{ - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [T_OPEN_TAG]; - - }//end register() - - - /** - * Processes this sniff, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in - * the token stack. - * - * @return int - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - $result = $this->searchForConflict($phpcsFile, 0, ($phpcsFile->numTokens - 1), $tokens); - - if ($result['symbol'] !== null && $result['effect'] !== null) { - $error = 'A file should declare new symbols (classes, functions, constants, etc.) and cause no other side effects, or it should execute logic with side effects, but should not do both. The first symbol is defined on line %s and the first side effect is on line %s.'; - $data = [ - $tokens[$result['symbol']]['line'], - $tokens[$result['effect']]['line'], - ]; - $phpcsFile->addWarning($error, 0, 'FoundWithSymbols', $data); - $phpcsFile->recordMetric($stackPtr, 'Declarations and side effects mixed', 'yes'); - } else { - $phpcsFile->recordMetric($stackPtr, 'Declarations and side effects mixed', 'no'); - } - - // Ignore the rest of the file. - return $phpcsFile->numTokens; - - }//end process() - - - /** - * Searches for symbol declarations and side effects. - * - * Returns the positions of both the first symbol declared and the first - * side effect in the file. A NULL value for either indicates nothing was - * found. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $start The token to start searching from. - * @param int $end The token to search to. - * @param array $tokens The stack of tokens that make up - * the file. - * - * @return array - */ - private function searchForConflict($phpcsFile, $start, $end, $tokens) - { - $symbols = [ - T_CLASS => T_CLASS, - T_INTERFACE => T_INTERFACE, - T_TRAIT => T_TRAIT, - T_ENUM => T_ENUM, - T_FUNCTION => T_FUNCTION, - ]; - - $conditions = [ - T_IF => T_IF, - T_ELSE => T_ELSE, - T_ELSEIF => T_ELSEIF, - ]; - - $checkAnnotations = $phpcsFile->config->annotations; - - $firstSymbol = null; - $firstEffect = null; - for ($i = $start; $i <= $end; $i++) { - // Respect phpcs:disable comments. - if ($checkAnnotations === true - && $tokens[$i]['code'] === T_PHPCS_DISABLE - && (empty($tokens[$i]['sniffCodes']) === true - || isset($tokens[$i]['sniffCodes']['PSR1']) === true - || isset($tokens[$i]['sniffCodes']['PSR1.Files']) === true - || isset($tokens[$i]['sniffCodes']['PSR1.Files.SideEffects']) === true - || isset($tokens[$i]['sniffCodes']['PSR1.Files.SideEffects.FoundWithSymbols']) === true) - ) { - do { - $i = $phpcsFile->findNext(T_PHPCS_ENABLE, ($i + 1)); - } while ($i !== false - && empty($tokens[$i]['sniffCodes']) === false - && isset($tokens[$i]['sniffCodes']['PSR1']) === false - && isset($tokens[$i]['sniffCodes']['PSR1.Files']) === false - && isset($tokens[$i]['sniffCodes']['PSR1.Files.SideEffects']) === false - && isset($tokens[$i]['sniffCodes']['PSR1.Files.SideEffects.FoundWithSymbols']) === false); - - if ($i === false) { - // The entire rest of the file is disabled, - // so return what we have so far. - break; - } - - continue; - } - - // Ignore whitespace and comments. - if (isset(Tokens::$emptyTokens[$tokens[$i]['code']]) === true) { - continue; - } - - // Ignore PHP tags. - if ($tokens[$i]['code'] === T_OPEN_TAG - || $tokens[$i]['code'] === T_CLOSE_TAG - ) { - continue; - } - - // Ignore shebang. - if (substr($tokens[$i]['content'], 0, 2) === '#!') { - continue; - } - - // Ignore logical operators. - if (isset(Tokens::$booleanOperators[$tokens[$i]['code']]) === true) { - continue; - } - - // Ignore entire namespace, declare, const and use statements. - if ($tokens[$i]['code'] === T_NAMESPACE - || $tokens[$i]['code'] === T_USE - || $tokens[$i]['code'] === T_DECLARE - || $tokens[$i]['code'] === T_CONST - ) { - if (isset($tokens[$i]['scope_opener']) === true) { - $i = $tokens[$i]['scope_closer']; - if ($tokens[$i]['code'] === T_ENDDECLARE) { - $semicolon = $phpcsFile->findNext(Tokens::$emptyTokens, ($i + 1), null, true); - if ($semicolon !== false && $tokens[$semicolon]['code'] === T_SEMICOLON) { - $i = $semicolon; - } - } - } else { - $semicolon = $phpcsFile->findNext(T_SEMICOLON, ($i + 1)); - if ($semicolon !== false) { - $i = $semicolon; - } - } - - continue; - } - - // Ignore function/class prefixes. - if (isset(Tokens::$methodPrefixes[$tokens[$i]['code']]) === true - || $tokens[$i]['code'] === T_READONLY - ) { - continue; - } - - // Ignore anon classes. - if ($tokens[$i]['code'] === T_ANON_CLASS) { - $i = $tokens[$i]['scope_closer']; - continue; - } - - // Ignore attributes. - if ($tokens[$i]['code'] === T_ATTRIBUTE - && isset($tokens[$i]['attribute_closer']) === true - ) { - $i = $tokens[$i]['attribute_closer']; - continue; - } - - // Detect and skip over symbols. - if (isset($symbols[$tokens[$i]['code']]) === true - && isset($tokens[$i]['scope_closer']) === true - ) { - if ($firstSymbol === null) { - $firstSymbol = $i; - } - - $i = $tokens[$i]['scope_closer']; - continue; - } else if ($tokens[$i]['code'] === T_STRING - && strtolower($tokens[$i]['content']) === 'define' - ) { - $prev = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($i - 1), null, true); - if ($tokens[$prev]['code'] !== T_OBJECT_OPERATOR - && $tokens[$prev]['code'] !== T_NULLSAFE_OBJECT_OPERATOR - && $tokens[$prev]['code'] !== T_DOUBLE_COLON - && $tokens[$prev]['code'] !== T_FUNCTION - ) { - if ($firstSymbol === null) { - $firstSymbol = $i; - } - - $semicolon = $phpcsFile->findNext(T_SEMICOLON, ($i + 1)); - if ($semicolon !== false) { - $i = $semicolon; - } - - continue; - } - }//end if - - // Special case for defined() as it can be used to see - // if a constant (a symbol) should be defined or not and - // doesn't need to use a full conditional block. - if ($tokens[$i]['code'] === T_STRING - && strtolower($tokens[$i]['content']) === 'defined' - ) { - $openBracket = $phpcsFile->findNext(Tokens::$emptyTokens, ($i + 1), null, true); - if ($openBracket !== false - && $tokens[$openBracket]['code'] === T_OPEN_PARENTHESIS - && isset($tokens[$openBracket]['parenthesis_closer']) === true - ) { - $prev = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($i - 1), null, true); - if ($tokens[$prev]['code'] !== T_OBJECT_OPERATOR - && $tokens[$prev]['code'] !== T_NULLSAFE_OBJECT_OPERATOR - && $tokens[$prev]['code'] !== T_DOUBLE_COLON - && $tokens[$prev]['code'] !== T_FUNCTION - ) { - $i = $tokens[$openBracket]['parenthesis_closer']; - continue; - } - } - }//end if - - // Conditional statements are allowed in symbol files as long as the - // contents is only a symbol definition. So don't count these as effects - // in this case. - if (isset($conditions[$tokens[$i]['code']]) === true) { - if (isset($tokens[$i]['scope_opener']) === false) { - // Probably an "else if", so just ignore. - continue; - } - - $result = $this->searchForConflict( - $phpcsFile, - ($tokens[$i]['scope_opener'] + 1), - ($tokens[$i]['scope_closer'] - 1), - $tokens - ); - - if ($result['symbol'] !== null) { - if ($firstSymbol === null) { - $firstSymbol = $result['symbol']; - } - - if ($result['effect'] !== null) { - // Found a conflict. - $firstEffect = $result['effect']; - break; - } - } - - if ($firstEffect === null) { - $firstEffect = $result['effect']; - } - - $i = $tokens[$i]['scope_closer']; - continue; - }//end if - - if ($firstEffect === null) { - $firstEffect = $i; - } - - if ($firstSymbol !== null) { - // We have a conflict we have to report, so no point continuing. - break; - } - }//end for - - return [ - 'symbol' => $firstSymbol, - 'effect' => $firstEffect, - ]; - - }//end searchForConflict() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR12/Docs/Functions/NullableTypeDeclarationStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR12/Docs/Functions/NullableTypeDeclarationStandard.xml deleted file mode 100644 index 95904c9a..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR12/Docs/Functions/NullableTypeDeclarationStandard.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR12/Sniffs/ControlStructures/ControlStructureSpacingSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR12/Sniffs/ControlStructures/ControlStructureSpacingSniff.php deleted file mode 100644 index 56c4192a..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR12/Sniffs/ControlStructures/ControlStructureSpacingSniff.php +++ /dev/null @@ -1,219 +0,0 @@ - - * @copyright 2006-2019 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\PSR12\Sniffs\ControlStructures; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Standards\PSR2\Sniffs\ControlStructures\ControlStructureSpacingSniff as PSR2ControlStructureSpacing; -use PHP_CodeSniffer\Util\Tokens; - -class ControlStructureSpacingSniff implements Sniff -{ - - /** - * The number of spaces code should be indented. - * - * @var integer - */ - public $indent = 4; - - /** - * Instance of the PSR2 ControlStructureSpacingSniff sniff. - * - * @var \PHP_CodeSniffer\Standards\PSR2\Sniffs\ControlStructures\ControlStructureSpacingSniff - */ - private $psr2ControlStructureSpacing; - - - /** - * Constructor. - */ - public function __construct() - { - $this->psr2ControlStructureSpacing = new PSR2ControlStructureSpacing(); - - }//end __construct() - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [ - T_IF, - T_WHILE, - T_FOREACH, - T_FOR, - T_SWITCH, - T_ELSEIF, - T_CATCH, - T_MATCH, - ]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - if (isset($tokens[$stackPtr]['parenthesis_opener']) === false - || isset($tokens[$stackPtr]['parenthesis_closer']) === false - ) { - return; - } - - $parenOpener = $tokens[$stackPtr]['parenthesis_opener']; - $parenCloser = $tokens[$stackPtr]['parenthesis_closer']; - - if ($tokens[$parenOpener]['line'] === $tokens[$parenCloser]['line']) { - // Conditions are all on the same line, so follow PSR2. - return $this->psr2ControlStructureSpacing->process($phpcsFile, $stackPtr); - } - - $next = $phpcsFile->findNext(T_WHITESPACE, ($parenOpener + 1), $parenCloser, true); - if ($next === false) { - // No conditions; parse error. - return; - } - - // Check the first expression. - if ($tokens[$next]['line'] !== ($tokens[$parenOpener]['line'] + 1)) { - $error = 'The first expression of a multi-line control structure must be on the line after the opening parenthesis'; - $fix = $phpcsFile->addFixableError($error, $next, 'FirstExpressionLine'); - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - if ($tokens[$next]['line'] > ($tokens[$parenOpener]['line'] + 1)) { - for ($i = ($parenOpener + 1); $i < $next; $i++) { - if ($tokens[$next]['line'] === $tokens[$i]['line']) { - break; - } - - $phpcsFile->fixer->replaceToken($i, ''); - } - } - - $phpcsFile->fixer->addNewline($parenOpener); - $phpcsFile->fixer->endChangeset(); - } - } - - // Check the indent of each line. - $first = $phpcsFile->findFirstOnLine(T_WHITESPACE, $stackPtr, true); - $requiredIndent = ($tokens[$first]['column'] + $this->indent - 1); - for ($i = $parenOpener; $i < $parenCloser; $i++) { - if ($tokens[$i]['column'] !== 1 - || $tokens[($i + 1)]['line'] > $tokens[$i]['line'] - || isset(Tokens::$commentTokens[$tokens[$i]['code']]) === true - ) { - continue; - } - - if (($i + 1) === $parenCloser) { - break; - } - - // Leave indentation inside multi-line strings. - if (isset(Tokens::$textStringTokens[$tokens[$i]['code']]) === true - || isset(Tokens::$heredocTokens[$tokens[$i]['code']]) === true - ) { - continue; - } - - if ($tokens[$i]['code'] !== T_WHITESPACE) { - $foundIndent = 0; - } else { - $foundIndent = $tokens[$i]['length']; - } - - if ($foundIndent < $requiredIndent) { - $error = 'Each line in a multi-line control structure must be indented at least once; expected at least %s spaces, but found %s'; - $data = [ - $requiredIndent, - $foundIndent, - ]; - $fix = $phpcsFile->addFixableError($error, $i, 'LineIndent', $data); - if ($fix === true) { - $padding = str_repeat(' ', $requiredIndent); - if ($foundIndent === 0) { - $phpcsFile->fixer->addContentBefore($i, $padding); - } else { - $phpcsFile->fixer->replaceToken($i, $padding); - } - } - } - }//end for - - // Check the closing parenthesis. - $prev = $phpcsFile->findPrevious(T_WHITESPACE, ($parenCloser - 1), $parenOpener, true); - if ($tokens[$parenCloser]['line'] !== ($tokens[$prev]['line'] + 1)) { - $error = 'The closing parenthesis of a multi-line control structure must be on the line after the last expression'; - $fix = $phpcsFile->addFixableError($error, $parenCloser, 'CloseParenthesisLine'); - if ($fix === true) { - if ($tokens[$parenCloser]['line'] === $tokens[$prev]['line']) { - $phpcsFile->fixer->addNewlineBefore($parenCloser); - } else { - $phpcsFile->fixer->beginChangeset(); - for ($i = ($prev + 1); $i < $parenCloser; $i++) { - // Maintain existing newline. - if ($tokens[$i]['line'] === $tokens[$prev]['line']) { - continue; - } - - // Maintain existing indent. - if ($tokens[$i]['line'] === $tokens[$parenCloser]['line']) { - break; - } - - $phpcsFile->fixer->replaceToken($i, ''); - } - - $phpcsFile->fixer->endChangeset(); - } - }//end if - }//end if - - if ($tokens[$parenCloser]['line'] !== $tokens[$prev]['line']) { - $requiredIndent = ($tokens[$first]['column'] - 1); - $foundIndent = ($tokens[$parenCloser]['column'] - 1); - if ($foundIndent !== $requiredIndent) { - $error = 'The closing parenthesis of a multi-line control structure must be indented to the same level as start of the control structure; expected %s spaces but found %s'; - $data = [ - $requiredIndent, - $foundIndent, - ]; - $fix = $phpcsFile->addFixableError($error, $parenCloser, 'CloseParenthesisIndent', $data); - if ($fix === true) { - $padding = str_repeat(' ', $requiredIndent); - if ($foundIndent === 0) { - $phpcsFile->fixer->addContentBefore($parenCloser, $padding); - } else { - $phpcsFile->fixer->replaceToken(($parenCloser - 1), $padding); - } - } - } - } - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR12/Sniffs/Operators/OperatorSpacingSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR12/Sniffs/Operators/OperatorSpacingSniff.php deleted file mode 100644 index 41628ce3..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR12/Sniffs/Operators/OperatorSpacingSniff.php +++ /dev/null @@ -1,128 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\PSR12\Sniffs\Operators; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Standards\Squiz\Sniffs\WhiteSpace\OperatorSpacingSniff as SquizOperatorSpacingSniff; -use PHP_CodeSniffer\Util\Tokens; - -class OperatorSpacingSniff extends SquizOperatorSpacingSniff -{ - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - parent::register(); - - $targets = Tokens::$comparisonTokens; - $targets += Tokens::$operators; - $targets += Tokens::$assignmentTokens; - $targets += Tokens::$booleanOperators; - $targets[] = T_INLINE_THEN; - $targets[] = T_INLINE_ELSE; - $targets[] = T_STRING_CONCAT; - $targets[] = T_INSTANCEOF; - - // Also register the contexts we want to specifically skip over. - $targets[] = T_DECLARE; - - return $targets; - - }//end register() - - - /** - * Processes this sniff, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The current file being checked. - * @param int $stackPtr The position of the current token in - * the stack passed in $tokens. - * - * @return void|int Optionally returns a stack pointer. The sniff will not be - * called again on the current file until the returned stack - * pointer is reached. Return `$phpcsFile->numTokens` to skip - * the rest of the file. - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - // Skip over declare statements as those should be handled by different sniffs. - if ($tokens[$stackPtr]['code'] === T_DECLARE) { - if (isset($tokens[$stackPtr]['parenthesis_closer']) === false) { - // Parse error / live coding. - return $phpcsFile->numTokens; - } - - return $tokens[$stackPtr]['parenthesis_closer']; - } - - if ($this->isOperator($phpcsFile, $stackPtr) === false) { - return; - } - - $operator = $tokens[$stackPtr]['content']; - - $checkBefore = true; - $checkAfter = true; - - // Skip short ternary. - if ($tokens[($stackPtr)]['code'] === T_INLINE_ELSE - && $tokens[($stackPtr - 1)]['code'] === T_INLINE_THEN - ) { - $checkBefore = false; - } - - // Skip operator with comment on previous line. - if ($tokens[($stackPtr - 1)]['code'] === T_COMMENT - && $tokens[($stackPtr - 1)]['line'] < $tokens[$stackPtr]['line'] - ) { - $checkBefore = false; - } - - if (isset($tokens[($stackPtr + 1)]) === true) { - // Skip short ternary. - if ($tokens[$stackPtr]['code'] === T_INLINE_THEN - && $tokens[($stackPtr + 1)]['code'] === T_INLINE_ELSE - ) { - $checkAfter = false; - } - } else { - // Skip partial files. - $checkAfter = false; - } - - if ($checkBefore === true && $tokens[($stackPtr - 1)]['code'] !== T_WHITESPACE) { - $error = 'Expected at least 1 space before "%s"; 0 found'; - $data = [$operator]; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'NoSpaceBefore', $data); - if ($fix === true) { - $phpcsFile->fixer->addContentBefore($stackPtr, ' '); - } - } - - if ($checkAfter === true && $tokens[($stackPtr + 1)]['code'] !== T_WHITESPACE) { - $error = 'Expected at least 1 space after "%s"; 0 found'; - $data = [$operator]; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'NoSpaceAfter', $data); - if ($fix === true) { - $phpcsFile->fixer->addContent($stackPtr, ' '); - } - } - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR12/Tests/ControlStructures/ControlStructureSpacingUnitTest.inc b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR12/Tests/ControlStructures/ControlStructureSpacingUnitTest.inc deleted file mode 100644 index f3706969..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR12/Tests/ControlStructures/ControlStructureSpacingUnitTest.inc +++ /dev/null @@ -1,133 +0,0 @@ - $foo - /* - * A multi-line comment. - */ - && $foo === true - ) { - break; - } - -match ( - $expr1 && - $expr2 && - $expr3 - ) { - // structure body -}; - -match ($expr1 && -$expr2 && - $expr3) { - // structure body -}; - -// Ensure the sniff handles too many newlines (not just too few). -for ( - - - $i = 0; - $i < 10; - $i++ - - -) {} - -// Ensure the sniff does not remove indentation whitespace when comments are involved. -for ( - - - // comment. - $i = 0; - $i < 10; - $i++ -) {} - -// The sniff treats a comment (ie non-whitespace) as content, but only at the -// start / end of the control structure. So the inner-whitespace here is -// intentionally ignored by this sniff. Additionally, the comment is not indented -// by this sniff when fixing. -for (// comment. - - - $i = 0; - $i < 10; - $i++ -) {} diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR12/Tests/ControlStructures/ControlStructureSpacingUnitTest.inc.fixed b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR12/Tests/ControlStructures/ControlStructureSpacingUnitTest.inc.fixed deleted file mode 100644 index d6c3f48c..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR12/Tests/ControlStructures/ControlStructureSpacingUnitTest.inc.fixed +++ /dev/null @@ -1,131 +0,0 @@ - $foo - /* - * A multi-line comment. - */ - && $foo === true - ) { - break; - } - -match ( - $expr1 && - $expr2 && - $expr3 -) { - // structure body -}; - -match ( - $expr1 && - $expr2 && - $expr3 -) { - // structure body -}; - -// Ensure the sniff handles too many newlines (not just too few). -for ( - $i = 0; - $i < 10; - $i++ -) {} - -// Ensure the sniff does not remove indentation whitespace when comments are involved. -for ( - // comment. - $i = 0; - $i < 10; - $i++ -) {} - -// The sniff treats a comment (ie non-whitespace) as content, but only at the -// start / end of the control structure. So the inner-whitespace here is -// intentionally ignored by this sniff. Additionally, the comment is not indented -// by this sniff when fixing. -for ( -// comment. - - - $i = 0; - $i < 10; - $i++ -) {} diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR12/Tests/ControlStructures/ControlStructureSpacingUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR12/Tests/ControlStructures/ControlStructureSpacingUnitTest.php deleted file mode 100644 index 3763b5d3..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR12/Tests/ControlStructures/ControlStructureSpacingUnitTest.php +++ /dev/null @@ -1,77 +0,0 @@ - - * @copyright 2006-2019 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\PSR12\Tests\ControlStructures; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the ControlStructureSpacing sniff. - * - * @covers \PHP_CodeSniffer\Standards\PSR12\Sniffs\ControlStructures\ControlStructureSpacingSniff - */ -final class ControlStructureSpacingUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @return array - */ - public function getErrorList() - { - return [ - 2 => 2, - 16 => 1, - 17 => 1, - 18 => 1, - 22 => 1, - 23 => 1, - 32 => 1, - 33 => 1, - 34 => 1, - 37 => 1, - 38 => 1, - 39 => 1, - 48 => 2, - 58 => 1, - 59 => 1, - 92 => 1, - 96 => 1, - 97 => 1, - 98 => 2, - 106 => 1, - 111 => 1, - 117 => 1, - 127 => 1, - ]; - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR12/Tests/Operators/OperatorSpacingUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR12/Tests/Operators/OperatorSpacingUnitTest.php deleted file mode 100644 index 4affd51c..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR12/Tests/Operators/OperatorSpacingUnitTest.php +++ /dev/null @@ -1,81 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\PSR12\Tests\Operators; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the OperatorSpacing sniff. - * - * @covers \PHP_CodeSniffer\Standards\PSR12\Sniffs\Operators\OperatorSpacingSniff - */ -final class OperatorSpacingUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getErrorList($testFile='') - { - switch ($testFile) { - case 'OperatorSpacingUnitTest.1.inc': - return [ - 2 => 1, - 3 => 2, - 4 => 1, - 5 => 2, - 6 => 4, - 9 => 3, - 10 => 2, - 11 => 3, - 13 => 3, - 14 => 2, - 18 => 1, - 20 => 1, - 22 => 2, - 23 => 2, - 26 => 1, - 37 => 4, - 39 => 1, - 40 => 1, - 44 => 2, - 47 => 2, - ]; - default: - return []; - }//end switch - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR12/ruleset.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR12/ruleset.xml deleted file mode 100644 index 2f9ae0a4..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR12/ruleset.xml +++ /dev/null @@ -1,348 +0,0 @@ - - - The PSR-12 coding standard. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - 0 - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - error - Method name "%s" must not be prefixed with an underscore to indicate visibility - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - 0 - - - - - - - - - - - - - - - - - 0 - - - 0 - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR2/Docs/Methods/MethodDeclarationStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR2/Docs/Methods/MethodDeclarationStandard.xml deleted file mode 100644 index 91ff8c2c..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR2/Docs/Methods/MethodDeclarationStandard.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - bar() - { - } -} - ]]> - - - _bar() - { - } -} - ]]> - - - - - final public static function bar() - { - } -} - ]]> - - - static public final function bar() - { - } -} - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR2/Sniffs/Classes/ClassDeclarationSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR2/Sniffs/Classes/ClassDeclarationSniff.php deleted file mode 100644 index 887c552e..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR2/Sniffs/Classes/ClassDeclarationSniff.php +++ /dev/null @@ -1,540 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\PSR2\Sniffs\Classes; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Standards\PEAR\Sniffs\Classes\ClassDeclarationSniff as PEARClassDeclarationSniff; -use PHP_CodeSniffer\Util\Tokens; - -class ClassDeclarationSniff extends PEARClassDeclarationSniff -{ - - /** - * The number of spaces code should be indented. - * - * @var integer - */ - public $indent = 4; - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - // We want all the errors from the PEAR standard, plus some of our own. - parent::process($phpcsFile, $stackPtr); - - // Just in case. - $tokens = $phpcsFile->getTokens(); - if (isset($tokens[$stackPtr]['scope_opener']) === false) { - return; - } - - $this->processOpen($phpcsFile, $stackPtr); - $this->processClose($phpcsFile, $stackPtr); - - }//end process() - - - /** - * Processes the opening section of a class declaration. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * - * @return void - */ - public function processOpen(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - $stackPtrType = strtolower($tokens[$stackPtr]['content']); - - // Check alignment of the keyword and braces. - $classModifiers = [ - T_ABSTRACT => T_ABSTRACT, - T_FINAL => T_FINAL, - T_READONLY => T_READONLY, - ]; - - $prevNonSpace = $phpcsFile->findPrevious(T_WHITESPACE, ($stackPtr - 1), null, true); - $prevNonEmpty = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($stackPtr - 1), null, true); - - if (isset($classModifiers[$tokens[$prevNonEmpty]['code']]) === true) { - $spaces = 0; - $errorCode = 'SpaceBeforeKeyword'; - if ($tokens[$prevNonEmpty]['line'] !== $tokens[$stackPtr]['line']) { - $spaces = 'newline'; - $errorCode = 'NewlineBeforeKeyword'; - } else if ($tokens[($stackPtr - 1)]['code'] === T_WHITESPACE) { - $spaces = $tokens[($stackPtr - 1)]['length']; - } - - if ($spaces !== 1) { - $error = 'Expected 1 space between %s and %s keywords; %s found'; - $data = [ - strtolower($tokens[$prevNonEmpty]['content']), - $stackPtrType, - $spaces, - ]; - - if ($prevNonSpace !== $prevNonEmpty) { - // Comment found between modifier and class keyword. Do not auto-fix. - $phpcsFile->addError($error, $stackPtr, $errorCode, $data); - } else { - $fix = $phpcsFile->addFixableError($error, $stackPtr, $errorCode, $data); - if ($fix === true) { - if ($spaces === 0) { - $phpcsFile->fixer->addContentBefore($stackPtr, ' '); - } else { - $phpcsFile->fixer->beginChangeset(); - $phpcsFile->fixer->replaceToken(($stackPtr - 1), ' '); - for ($i = ($stackPtr - 2); $i > $prevNonSpace; $i--) { - $phpcsFile->fixer->replaceToken($i, ' '); - } - - $phpcsFile->fixer->endChangeset(); - } - } - } - }//end if - }//end if - - // We'll need the indent of the class/interface declaration for later. - $classIndent = 0; - for ($i = ($stackPtr - 1); $i > 0; $i--) { - if ($tokens[$i]['line'] === $tokens[$stackPtr]['line']) { - continue; - } - - // We changed lines. - if ($tokens[($i + 1)]['code'] === T_WHITESPACE) { - $classIndent = $tokens[($i + 1)]['length']; - } - - break; - } - - $className = null; - $checkSpacing = true; - - if ($tokens[$stackPtr]['code'] !== T_ANON_CLASS) { - $className = $phpcsFile->findNext(T_STRING, $stackPtr); - } else { - // Ignore the spacing check if this is a simple anon class. - $next = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true); - if ($next === $tokens[$stackPtr]['scope_opener'] - && $tokens[$next]['line'] > $tokens[$stackPtr]['line'] - ) { - $checkSpacing = false; - } - } - - if ($checkSpacing === true) { - // Spacing of the keyword. - if ($tokens[($stackPtr + 1)]['code'] !== T_WHITESPACE) { - $gap = 0; - } else if ($tokens[($stackPtr + 2)]['line'] !== $tokens[$stackPtr]['line']) { - $gap = 'newline'; - } else { - $gap = $tokens[($stackPtr + 1)]['length']; - } - - if ($gap !== 1) { - $error = 'Expected 1 space after %s keyword; %s found'; - $data = [ - $stackPtrType, - $gap, - ]; - - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'SpaceAfterKeyword', $data); - if ($fix === true) { - if ($gap === 0) { - $phpcsFile->fixer->addContent($stackPtr, ' '); - } else { - $phpcsFile->fixer->replaceToken(($stackPtr + 1), ' '); - } - } - } - }//end if - - // Check after the class/interface name. - if ($className !== null - && $tokens[($className + 2)]['line'] === $tokens[$className]['line'] - ) { - $gap = $tokens[($className + 1)]['content']; - if (strlen($gap) !== 1) { - $found = strlen($gap); - $error = 'Expected 1 space after %s name; %s found'; - $data = [ - $stackPtrType, - $found, - ]; - - $fix = $phpcsFile->addFixableError($error, $className, 'SpaceAfterName', $data); - if ($fix === true) { - $phpcsFile->fixer->replaceToken(($className + 1), ' '); - } - } - } - - $openingBrace = $tokens[$stackPtr]['scope_opener']; - - // Check positions of the extends and implements keywords. - $compareToken = $stackPtr; - $compareType = 'name'; - if ($tokens[$stackPtr]['code'] === T_ANON_CLASS) { - if (isset($tokens[$stackPtr]['parenthesis_opener']) === true) { - $compareToken = $tokens[$stackPtr]['parenthesis_closer']; - $compareType = 'closing parenthesis'; - } else { - $compareType = 'keyword'; - } - } - - foreach (['extends', 'implements'] as $keywordType) { - $keyword = $phpcsFile->findNext(constant('T_'.strtoupper($keywordType)), ($compareToken + 1), $openingBrace); - if ($keyword !== false) { - if ($tokens[$keyword]['line'] !== $tokens[$compareToken]['line']) { - $error = 'The '.$keywordType.' keyword must be on the same line as the %s '.$compareType; - $data = [$stackPtrType]; - $fix = $phpcsFile->addFixableError($error, $keyword, ucfirst($keywordType).'Line', $data); - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - $comments = []; - - for ($i = ($compareToken + 1); $i < $keyword; ++$i) { - if ($tokens[$i]['code'] === T_COMMENT) { - $comments[] = trim($tokens[$i]['content']); - } - - if ($tokens[$i]['code'] === T_WHITESPACE - || $tokens[$i]['code'] === T_COMMENT - ) { - $phpcsFile->fixer->replaceToken($i, ' '); - } - } - - $phpcsFile->fixer->addContent($compareToken, ' '); - if (empty($comments) === false) { - $i = $keyword; - while ($tokens[($i + 1)]['line'] === $tokens[$keyword]['line']) { - ++$i; - } - - $phpcsFile->fixer->addContentBefore($i, ' '.implode(' ', $comments)); - } - - $phpcsFile->fixer->endChangeset(); - }//end if - } else { - // Check the whitespace before. Whitespace after is checked - // later by looking at the whitespace before the first class name - // in the list. - $gap = $tokens[($keyword - 1)]['length']; - if ($gap !== 1) { - $error = 'Expected 1 space before '.$keywordType.' keyword; %s found'; - $data = [$gap]; - $fix = $phpcsFile->addFixableError($error, $keyword, 'SpaceBefore'.ucfirst($keywordType), $data); - if ($fix === true) { - $phpcsFile->fixer->replaceToken(($keyword - 1), ' '); - } - } - }//end if - }//end if - }//end foreach - - // Check each of the extends/implements class names. If the extends/implements - // keyword is the last content on the line, it means we need to check for - // the multi-line format, so we do not include the class names - // from the extends/implements list in the following check. - // Note that classes can only extend one other class, so they can't use a - // multi-line extends format, whereas an interface can extend multiple - // other interfaces, and so uses a multi-line extends format. - if ($tokens[$stackPtr]['code'] === T_INTERFACE) { - $keywordTokenType = T_EXTENDS; - } else { - $keywordTokenType = T_IMPLEMENTS; - } - - $implements = $phpcsFile->findNext($keywordTokenType, ($stackPtr + 1), $openingBrace); - $multiLineImplements = false; - if ($implements !== false) { - $prev = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($openingBrace - 1), $implements, true); - if ($tokens[$prev]['line'] !== $tokens[$implements]['line']) { - $multiLineImplements = true; - } - } - - $find = [ - T_STRING, - $keywordTokenType, - ]; - - if ($className !== null) { - $start = $className; - } else if (isset($tokens[$stackPtr]['parenthesis_closer']) === true) { - $start = $tokens[$stackPtr]['parenthesis_closer']; - } else { - $start = $stackPtr; - } - - $classNames = []; - $nextClass = $phpcsFile->findNext($find, ($start + 2), ($openingBrace - 1)); - while ($nextClass !== false) { - $classNames[] = $nextClass; - $nextClass = $phpcsFile->findNext($find, ($nextClass + 1), ($openingBrace - 1)); - } - - $classCount = count($classNames); - $checkingImplements = false; - $implementsToken = null; - foreach ($classNames as $n => $className) { - if ($tokens[$className]['code'] === $keywordTokenType) { - $checkingImplements = true; - $implementsToken = $className; - - continue; - } - - if ($checkingImplements === true - && $multiLineImplements === true - && ($tokens[($className - 1)]['code'] !== T_NS_SEPARATOR - || ($tokens[($className - 2)]['code'] !== T_STRING - && $tokens[($className - 2)]['code'] !== T_NAMESPACE)) - ) { - $prev = $phpcsFile->findPrevious( - [ - T_NS_SEPARATOR, - T_WHITESPACE, - ], - ($className - 1), - $implements, - true - ); - - if ($prev === $implementsToken && $tokens[$className]['line'] !== ($tokens[$prev]['line'] + 1)) { - if ($keywordTokenType === T_EXTENDS) { - $error = 'The first item in a multi-line extends list must be on the line following the extends keyword'; - $fix = $phpcsFile->addFixableError($error, $className, 'FirstExtendsInterfaceSameLine'); - } else { - $error = 'The first item in a multi-line implements list must be on the line following the implements keyword'; - $fix = $phpcsFile->addFixableError($error, $className, 'FirstInterfaceSameLine'); - } - - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - for ($i = ($prev + 1); $i < $className; $i++) { - if ($tokens[$i]['code'] !== T_WHITESPACE) { - break; - } - - $phpcsFile->fixer->replaceToken($i, ''); - } - - $phpcsFile->fixer->addNewline($prev); - $phpcsFile->fixer->endChangeset(); - } - } else if ((isset(Tokens::$commentTokens[$tokens[$prev]['code']]) === false - && $tokens[$prev]['line'] !== ($tokens[$className]['line'] - 1)) - || $tokens[$prev]['line'] === $tokens[$className]['line'] - ) { - if ($keywordTokenType === T_EXTENDS) { - $error = 'Only one interface may be specified per line in a multi-line extends declaration'; - $fix = $phpcsFile->addFixableError($error, $className, 'ExtendsInterfaceSameLine'); - } else { - $error = 'Only one interface may be specified per line in a multi-line implements declaration'; - $fix = $phpcsFile->addFixableError($error, $className, 'InterfaceSameLine'); - } - - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - for ($i = ($prev + 1); $i < $className; $i++) { - if ($tokens[$i]['code'] !== T_WHITESPACE) { - break; - } - - $phpcsFile->fixer->replaceToken($i, ''); - } - - $phpcsFile->fixer->addNewline($prev); - $phpcsFile->fixer->endChangeset(); - } - } else { - $prev = $phpcsFile->findPrevious(T_WHITESPACE, ($className - 1), $implements); - if ($tokens[$prev]['line'] !== $tokens[$className]['line']) { - $found = 0; - } else { - $found = $tokens[$prev]['length']; - } - - $expected = ($classIndent + $this->indent); - if ($found !== $expected) { - $error = 'Expected %s spaces before interface name; %s found'; - $data = [ - $expected, - $found, - ]; - $fix = $phpcsFile->addFixableError($error, $className, 'InterfaceWrongIndent', $data); - if ($fix === true) { - $padding = str_repeat(' ', $expected); - if ($found === 0) { - $phpcsFile->fixer->addContent($prev, $padding); - } else { - $phpcsFile->fixer->replaceToken($prev, $padding); - } - } - } - }//end if - } else if ($tokens[($className - 1)]['code'] !== T_NS_SEPARATOR - || ($tokens[($className - 2)]['code'] !== T_STRING - && $tokens[($className - 2)]['code'] !== T_NAMESPACE) - ) { - // Not part of a longer fully qualified or namespace relative class name. - if ($tokens[($className - 1)]['code'] === T_COMMA - || ($tokens[($className - 1)]['code'] === T_NS_SEPARATOR - && $tokens[($className - 2)]['code'] === T_COMMA) - ) { - $error = 'Expected 1 space before "%s"; 0 found'; - $data = [$tokens[$className]['content']]; - $fix = $phpcsFile->addFixableError($error, ($nextComma + 1), 'NoSpaceBeforeName', $data); - if ($fix === true) { - $phpcsFile->fixer->addContentBefore(($nextComma + 1), ' '); - } - } else { - if ($tokens[($className - 1)]['code'] === T_NS_SEPARATOR) { - $prev = ($className - 2); - } else { - $prev = ($className - 1); - } - - $last = $phpcsFile->findPrevious(T_WHITESPACE, $prev, null, true); - $content = $phpcsFile->getTokensAsString(($last + 1), ($prev - $last)); - if ($content !== ' ') { - $found = strlen($content); - - $error = 'Expected 1 space before "%s"; %s found'; - $data = [ - $tokens[$className]['content'], - $found, - ]; - - $fix = $phpcsFile->addFixableError($error, $className, 'SpaceBeforeName', $data); - if ($fix === true) { - if ($tokens[$prev]['code'] === T_WHITESPACE) { - $phpcsFile->fixer->beginChangeset(); - $phpcsFile->fixer->replaceToken($prev, ' '); - while ($tokens[--$prev]['code'] === T_WHITESPACE) { - $phpcsFile->fixer->replaceToken($prev, ' '); - } - - $phpcsFile->fixer->endChangeset(); - } else { - $phpcsFile->fixer->addContent($prev, ' '); - } - } - }//end if - }//end if - }//end if - - if ($checkingImplements === true - && $tokens[($className + 1)]['code'] !== T_NS_SEPARATOR - && $tokens[($className + 1)]['code'] !== T_COMMA - ) { - if ($n !== ($classCount - 1)) { - // This is not the last class name, and the comma - // is not where we expect it to be. - if ($tokens[($className + 2)]['code'] !== $keywordTokenType) { - $error = 'Expected 0 spaces between "%s" and comma; %s found'; - $data = [ - $tokens[$className]['content'], - $tokens[($className + 1)]['length'], - ]; - - $fix = $phpcsFile->addFixableError($error, $className, 'SpaceBeforeComma', $data); - if ($fix === true) { - $phpcsFile->fixer->replaceToken(($className + 1), ''); - } - } - } - - $nextComma = $phpcsFile->findNext(T_COMMA, $className); - } else { - $nextComma = ($className + 1); - }//end if - }//end foreach - - }//end processOpen() - - - /** - * Processes the closing section of a class declaration. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * - * @return void - */ - public function processClose(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - // Check that the closing brace comes right after the code body. - $closeBrace = $tokens[$stackPtr]['scope_closer']; - $prevContent = $phpcsFile->findPrevious(T_WHITESPACE, ($closeBrace - 1), null, true); - if ($prevContent !== $tokens[$stackPtr]['scope_opener'] - && $tokens[$prevContent]['line'] !== ($tokens[$closeBrace]['line'] - 1) - ) { - $error = 'The closing brace for the %s must go on the next line after the body'; - $data = [$tokens[$stackPtr]['content']]; - $fix = $phpcsFile->addFixableError($error, $closeBrace, 'CloseBraceAfterBody', $data); - - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - for ($i = ($prevContent + 1); $tokens[$i]['line'] !== $tokens[$closeBrace]['line']; $i++) { - $phpcsFile->fixer->replaceToken($i, ''); - } - - if (strpos($tokens[$prevContent]['content'], $phpcsFile->eolChar) === false) { - $phpcsFile->fixer->addNewline($prevContent); - } - - $phpcsFile->fixer->endChangeset(); - } - }//end if - - if ($tokens[$stackPtr]['code'] !== T_ANON_CLASS) { - // Check the closing brace is on it's own line, but allow - // for comments like "//end class". - $ignoreTokens = Tokens::$phpcsCommentTokens; - $ignoreTokens[] = T_WHITESPACE; - $ignoreTokens[] = T_COMMENT; - $ignoreTokens[] = T_SEMICOLON; - $nextContent = $phpcsFile->findNext($ignoreTokens, ($closeBrace + 1), null, true); - if ($tokens[$nextContent]['line'] === $tokens[$closeBrace]['line']) { - $type = strtolower($tokens[$stackPtr]['content']); - $error = 'Closing %s brace must be on a line by itself'; - $data = [$type]; - $phpcsFile->addError($error, $closeBrace, 'CloseBraceSameLine', $data); - } - } - - }//end processClose() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR2/Sniffs/Classes/PropertyDeclarationSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR2/Sniffs/Classes/PropertyDeclarationSniff.php deleted file mode 100644 index 29d7023e..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR2/Sniffs/Classes/PropertyDeclarationSniff.php +++ /dev/null @@ -1,226 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\PSR2\Sniffs\Classes; - -use Exception; -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\AbstractVariableSniff; -use PHP_CodeSniffer\Util\Tokens; - -class PropertyDeclarationSniff extends AbstractVariableSniff -{ - - - /** - * Processes the function tokens within the class. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file where this token was found. - * @param int $stackPtr The position where the token was found. - * - * @return void - */ - protected function processMemberVar(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - if ($tokens[$stackPtr]['content'][1] === '_') { - $error = 'Property name "%s" should not be prefixed with an underscore to indicate visibility'; - $data = [$tokens[$stackPtr]['content']]; - $phpcsFile->addWarning($error, $stackPtr, 'Underscore', $data); - } - - // Detect multiple properties defined at the same time. Throw an error - // for this, but also only process the first property in the list so we don't - // repeat errors. - $find = Tokens::$scopeModifiers; - $find[] = T_VARIABLE; - $find[] = T_VAR; - $find[] = T_READONLY; - $find[] = T_SEMICOLON; - $find[] = T_OPEN_CURLY_BRACKET; - - $prev = $phpcsFile->findPrevious($find, ($stackPtr - 1)); - if ($tokens[$prev]['code'] === T_VARIABLE) { - return; - } - - if ($tokens[$prev]['code'] === T_VAR) { - $error = 'The var keyword must not be used to declare a property'; - $phpcsFile->addError($error, $stackPtr, 'VarUsed'); - } - - $next = $phpcsFile->findNext([T_VARIABLE, T_SEMICOLON], ($stackPtr + 1)); - if ($next !== false && $tokens[$next]['code'] === T_VARIABLE) { - $error = 'There must not be more than one property declared per statement'; - $phpcsFile->addError($error, $stackPtr, 'Multiple'); - } - - try { - $propertyInfo = $phpcsFile->getMemberProperties($stackPtr); - if (empty($propertyInfo) === true) { - return; - } - } catch (Exception $e) { - // Turns out not to be a property after all. - return; - } - - if ($propertyInfo['type'] !== '') { - $typeToken = $propertyInfo['type_end_token']; - $error = 'There must be 1 space after the property type declaration; %s found'; - if ($tokens[($typeToken + 1)]['code'] !== T_WHITESPACE) { - $data = ['0']; - $fix = $phpcsFile->addFixableError($error, $typeToken, 'SpacingAfterType', $data); - if ($fix === true) { - $phpcsFile->fixer->addContent($typeToken, ' '); - } - } else if ($tokens[($typeToken + 1)]['content'] !== ' ') { - $next = $phpcsFile->findNext(T_WHITESPACE, ($typeToken + 1), null, true); - if ($tokens[$next]['line'] !== $tokens[$typeToken]['line']) { - $found = 'newline'; - } else { - $found = $tokens[($typeToken + 1)]['length']; - } - - $data = [$found]; - - $nextNonWs = $phpcsFile->findNext(Tokens::$emptyTokens, ($typeToken + 1), null, true); - if ($nextNonWs !== $next) { - $phpcsFile->addError($error, $typeToken, 'SpacingAfterType', $data); - } else { - $fix = $phpcsFile->addFixableError($error, $typeToken, 'SpacingAfterType', $data); - if ($fix === true) { - if ($found === 'newline') { - $phpcsFile->fixer->beginChangeset(); - for ($x = ($typeToken + 1); $x < $next; $x++) { - $phpcsFile->fixer->replaceToken($x, ''); - } - - $phpcsFile->fixer->addContent($typeToken, ' '); - $phpcsFile->fixer->endChangeset(); - } else { - $phpcsFile->fixer->replaceToken(($typeToken + 1), ' '); - } - } - } - }//end if - }//end if - - if ($propertyInfo['scope_specified'] === false) { - $error = 'Visibility must be declared on property "%s"'; - $data = [$tokens[$stackPtr]['content']]; - $phpcsFile->addError($error, $stackPtr, 'ScopeMissing', $data); - } - - /* - * Note: per PSR-PER section 4.6, the order should be: - * - Inheritance modifier: `abstract` or `final`. - * - Visibility modifier: `public`, `protected`, or `private`. - * - Scope modifier: `static`. - * - Mutation modifier: `readonly`. - * - Type declaration. - * - Name. - * - * Ref: https://www.php-fig.org/per/coding-style/#46-modifier-keywords - * - * At this time (PHP 8.2), inheritance modifiers cannot be applied to properties and - * the `static` and `readonly` modifiers are mutually exclusive and cannot be used together. - * - * Based on that, the below modifier keyword order checks are sufficient (for now). - */ - - if ($propertyInfo['scope_specified'] === true && $propertyInfo['is_static'] === true) { - $scopePtr = $phpcsFile->findPrevious(Tokens::$scopeModifiers, ($stackPtr - 1)); - $staticPtr = $phpcsFile->findPrevious(T_STATIC, ($stackPtr - 1)); - if ($scopePtr > $staticPtr) { - $error = 'The static declaration must come after the visibility declaration'; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'StaticBeforeVisibility'); - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - - for ($i = ($scopePtr + 1); $scopePtr < $stackPtr; $i++) { - if ($tokens[$i]['code'] !== T_WHITESPACE) { - break; - } - - $phpcsFile->fixer->replaceToken($i, ''); - } - - $phpcsFile->fixer->replaceToken($scopePtr, ''); - $phpcsFile->fixer->addContentBefore($staticPtr, $propertyInfo['scope'].' '); - - $phpcsFile->fixer->endChangeset(); - } - } - }//end if - - if ($propertyInfo['scope_specified'] === true && $propertyInfo['is_readonly'] === true) { - $scopePtr = $phpcsFile->findPrevious(Tokens::$scopeModifiers, ($stackPtr - 1)); - $readonlyPtr = $phpcsFile->findPrevious(T_READONLY, ($stackPtr - 1)); - if ($scopePtr > $readonlyPtr) { - $error = 'The readonly declaration must come after the visibility declaration'; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'ReadonlyBeforeVisibility'); - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - - for ($i = ($scopePtr + 1); $scopePtr < $stackPtr; $i++) { - if ($tokens[$i]['code'] !== T_WHITESPACE) { - break; - } - - $phpcsFile->fixer->replaceToken($i, ''); - } - - $phpcsFile->fixer->replaceToken($scopePtr, ''); - $phpcsFile->fixer->addContentBefore($readonlyPtr, $propertyInfo['scope'].' '); - - $phpcsFile->fixer->endChangeset(); - } - } - }//end if - - }//end processMemberVar() - - - /** - * Processes normal variables. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file where this token was found. - * @param int $stackPtr The position where the token was found. - * - * @return void - */ - protected function processVariable(File $phpcsFile, $stackPtr) - { - /* - We don't care about normal variables. - */ - - }//end processVariable() - - - /** - * Processes variables in double quoted strings. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file where this token was found. - * @param int $stackPtr The position where the token was found. - * - * @return void - */ - protected function processVariableInString(File $phpcsFile, $stackPtr) - { - /* - We don't care about normal variables. - */ - - }//end processVariableInString() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR2/Sniffs/Files/EndFileNewlineSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR2/Sniffs/Files/EndFileNewlineSniff.php deleted file mode 100644 index 5b2d2817..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR2/Sniffs/Files/EndFileNewlineSniff.php +++ /dev/null @@ -1,107 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\PSR2\Sniffs\Files; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; - -class EndFileNewlineSniff implements Sniff -{ - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [ - T_OPEN_TAG, - T_OPEN_TAG_WITH_ECHO, - ]; - - }//end register() - - - /** - * Processes this sniff, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in - * the stack passed in $tokens. - * - * @return int - */ - public function process(File $phpcsFile, $stackPtr) - { - if ($phpcsFile->findNext(T_INLINE_HTML, ($stackPtr + 1)) !== false) { - return $phpcsFile->numTokens; - } - - // Skip to the end of the file. - $tokens = $phpcsFile->getTokens(); - $lastToken = ($phpcsFile->numTokens - 1); - - if ($tokens[$lastToken]['content'] === '') { - $lastToken--; - } - - // Hard-coding the expected \n in this sniff as it is PSR-2 specific and - // PSR-2 enforces the use of unix style newlines. - if (substr($tokens[$lastToken]['content'], -1) !== "\n") { - $error = 'Expected 1 newline at end of file; 0 found'; - $fix = $phpcsFile->addFixableError($error, $lastToken, 'NoneFound'); - if ($fix === true) { - $phpcsFile->fixer->addNewline($lastToken); - } - - $phpcsFile->recordMetric($stackPtr, 'Number of newlines at EOF', '0'); - return $phpcsFile->numTokens; - } - - // Go looking for the last non-empty line. - $lastLine = $tokens[$lastToken]['line']; - if ($tokens[$lastToken]['code'] === T_WHITESPACE - || $tokens[$lastToken]['code'] === T_DOC_COMMENT_WHITESPACE - ) { - $lastCode = $phpcsFile->findPrevious([T_WHITESPACE, T_DOC_COMMENT_WHITESPACE], ($lastToken - 1), null, true); - } else { - $lastCode = $lastToken; - } - - $lastCodeLine = $tokens[$lastCode]['line']; - $blankLines = ($lastLine - $lastCodeLine + 1); - $phpcsFile->recordMetric($stackPtr, 'Number of newlines at EOF', $blankLines); - - if ($blankLines > 1) { - $error = 'Expected 1 blank line at end of file; %s found'; - $data = [$blankLines]; - $fix = $phpcsFile->addFixableError($error, $lastCode, 'TooMany', $data); - - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - $phpcsFile->fixer->replaceToken($lastCode, rtrim($tokens[$lastCode]['content'])); - for ($i = ($lastCode + 1); $i < $lastToken; $i++) { - $phpcsFile->fixer->replaceToken($i, ''); - } - - $phpcsFile->fixer->replaceToken($lastToken, $phpcsFile->eolChar); - $phpcsFile->fixer->endChangeset(); - } - } - - // Skip the rest of the file. - return $phpcsFile->numTokens; - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR2/Sniffs/Namespaces/UseDeclarationSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR2/Sniffs/Namespaces/UseDeclarationSniff.php deleted file mode 100644 index 39c69c8b..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR2/Sniffs/Namespaces/UseDeclarationSniff.php +++ /dev/null @@ -1,297 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\PSR2\Sniffs\Namespaces; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Tokens; - -class UseDeclarationSniff implements Sniff -{ - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [T_USE]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in - * the stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - if ($this->shouldIgnoreUse($phpcsFile, $stackPtr) === true) { - return; - } - - $tokens = $phpcsFile->getTokens(); - - // One space after the use keyword. - if ($tokens[($stackPtr + 1)]['content'] !== ' ') { - $error = 'There must be a single space after the USE keyword'; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'SpaceAfterUse'); - if ($fix === true) { - $phpcsFile->fixer->replaceToken(($stackPtr + 1), ' '); - } - } - - // Only one USE declaration allowed per statement. - $next = $phpcsFile->findNext([T_COMMA, T_SEMICOLON, T_OPEN_USE_GROUP, T_CLOSE_TAG], ($stackPtr + 1)); - if ($next !== false - && $tokens[$next]['code'] !== T_SEMICOLON - && $tokens[$next]['code'] !== T_CLOSE_TAG - ) { - $error = 'There must be one USE keyword per declaration'; - - if ($tokens[$next]['code'] === T_COMMA) { - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'MultipleDeclarations'); - if ($fix === true) { - switch ($tokens[($stackPtr + 2)]['content']) { - case 'const': - $baseUse = 'use const'; - break; - case 'function': - $baseUse = 'use function'; - break; - default: - $baseUse = 'use'; - } - - if ($tokens[($next + 1)]['code'] !== T_WHITESPACE) { - $baseUse .= ' '; - } - - $phpcsFile->fixer->replaceToken($next, ';'.$phpcsFile->eolChar.$baseUse); - } - } else { - $closingCurly = $phpcsFile->findNext(T_CLOSE_USE_GROUP, ($next + 1)); - if ($closingCurly === false) { - // Parse error or live coding. Not auto-fixable. - $phpcsFile->addError($error, $stackPtr, 'MultipleDeclarations'); - } else { - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'MultipleDeclarations'); - if ($fix === true) { - $baseUse = rtrim($phpcsFile->getTokensAsString($stackPtr, ($next - $stackPtr))); - $lastNonWhitespace = $phpcsFile->findPrevious(T_WHITESPACE, ($closingCurly - 1), null, true); - - $phpcsFile->fixer->beginChangeset(); - - // Remove base use statement. - for ($i = $stackPtr; $i <= $next; $i++) { - $phpcsFile->fixer->replaceToken($i, ''); - } - - if (preg_match('`^[\r\n]+$`', $tokens[($next + 1)]['content']) === 1) { - $phpcsFile->fixer->replaceToken(($next + 1), ''); - } - - // Convert grouped use statements into full use statements. - do { - $next = $phpcsFile->findNext(Tokens::$emptyTokens, ($next + 1), $closingCurly, true); - if ($next === false) { - // Group use statement with trailing comma after last item. - break; - } - - $nonWhitespace = $phpcsFile->findPrevious(T_WHITESPACE, ($next - 1), null, true); - for ($i = ($nonWhitespace + 1); $i < $next; $i++) { - if (preg_match('`^[\r\n]+$`', $tokens[$i]['content']) === 1) { - // Preserve new lines. - continue; - } - - $phpcsFile->fixer->replaceToken($i, ''); - } - - if ($tokens[$next]['content'] === 'const' || $tokens[$next]['content'] === 'function') { - $phpcsFile->fixer->addContentBefore($next, 'use '); - $next = $phpcsFile->findNext(Tokens::$emptyTokens, ($next + 1), $closingCurly, true); - $phpcsFile->fixer->addContentBefore($next, str_replace('use ', '', $baseUse)); - } else { - $phpcsFile->fixer->addContentBefore($next, $baseUse); - } - - $next = $phpcsFile->findNext(T_COMMA, ($next + 1), $closingCurly); - if ($next !== false) { - $nextNonEmpty = $phpcsFile->findNext(Tokens::$emptyTokens, ($next + 1), $closingCurly, true); - if ($nextNonEmpty !== false && $tokens[$nextNonEmpty]['line'] === $tokens[$next]['line']) { - $prevNonWhitespace = $phpcsFile->findPrevious(T_WHITESPACE, ($nextNonEmpty - 1), $next, true); - if ($prevNonWhitespace === $next) { - $phpcsFile->fixer->replaceToken($next, ';'.$phpcsFile->eolChar); - } else { - $phpcsFile->fixer->replaceToken($next, ';'); - $phpcsFile->fixer->addNewline($prevNonWhitespace); - } - } else { - // Last item with trailing comma or next item already on new line. - $phpcsFile->fixer->replaceToken($next, ';'); - } - } else { - // Last item without trailing comma. - $phpcsFile->fixer->addContent($lastNonWhitespace, ';'); - } - } while ($next !== false); - - // Remove closing curly, semicolon and any whitespace between last child and closing curly. - $next = $phpcsFile->findNext(Tokens::$emptyTokens, ($closingCurly + 1), null, true); - if ($next === false || $tokens[$next]['code'] !== T_SEMICOLON) { - // Parse error, forgotten semicolon. - $next = $closingCurly; - } - - for ($i = ($lastNonWhitespace + 1); $i <= $next; $i++) { - $phpcsFile->fixer->replaceToken($i, ''); - } - - $phpcsFile->fixer->endChangeset(); - }//end if - }//end if - }//end if - }//end if - - // Make sure this USE comes after the first namespace declaration. - $prev = $phpcsFile->findPrevious(T_NAMESPACE, ($stackPtr - 1)); - if ($prev === false) { - $next = $phpcsFile->findNext(T_NAMESPACE, ($stackPtr + 1)); - if ($next !== false) { - $error = 'USE declarations must go after the namespace declaration'; - $phpcsFile->addError($error, $stackPtr, 'UseBeforeNamespace'); - } - } - - // Only interested in the last USE statement from here onwards. - $nextUse = $phpcsFile->findNext(T_USE, ($stackPtr + 1)); - while ($this->shouldIgnoreUse($phpcsFile, $nextUse) === true) { - $nextUse = $phpcsFile->findNext(T_USE, ($nextUse + 1)); - if ($nextUse === false) { - break; - } - } - - if ($nextUse !== false) { - return; - } - - $end = $phpcsFile->findNext([T_SEMICOLON, T_CLOSE_USE_GROUP, T_CLOSE_TAG], ($stackPtr + 1)); - if ($end === false) { - return; - } - - if ($tokens[$end]['code'] === T_CLOSE_USE_GROUP) { - $nextNonEmpty = $phpcsFile->findNext(Tokens::$emptyTokens, ($end + 1), null, true); - if ($tokens[$nextNonEmpty]['code'] === T_SEMICOLON) { - $end = $nextNonEmpty; - } - } - - // Find either the start of the next line or the beginning of the next statement, - // whichever comes first. - for ($end = ++$end; $end < $phpcsFile->numTokens; $end++) { - if (isset(Tokens::$emptyTokens[$tokens[$end]['code']]) === false) { - break; - } - - if ($tokens[$end]['column'] === 1) { - // Reached the next line. - break; - } - } - - --$end; - - if (($tokens[$end]['code'] === T_COMMENT - || isset(Tokens::$phpcsCommentTokens[$tokens[$end]['code']]) === true) - && substr($tokens[$end]['content'], 0, 2) === '/*' - && substr($tokens[$end]['content'], -2) !== '*/' - ) { - // Multi-line block comments are not allowed as trailing comment after a use statement. - --$end; - } - - $next = $phpcsFile->findNext(T_WHITESPACE, ($end + 1), null, true); - - if ($next === false || $tokens[$next]['code'] === T_CLOSE_TAG) { - return; - } - - $diff = ($tokens[$next]['line'] - $tokens[$end]['line'] - 1); - if ($diff !== 1) { - if ($diff < 0) { - $diff = 0; - } - - $error = 'There must be one blank line after the last USE statement; %s found;'; - $data = [$diff]; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'SpaceAfterLastUse', $data); - if ($fix === true) { - if ($diff === 0) { - $phpcsFile->fixer->addNewline($end); - } else { - $phpcsFile->fixer->beginChangeset(); - for ($i = ($end + 1); $i < $next; $i++) { - if ($tokens[$i]['line'] === $tokens[$next]['line']) { - break; - } - - $phpcsFile->fixer->replaceToken($i, ''); - } - - $phpcsFile->fixer->addNewline($end); - $phpcsFile->fixer->endChangeset(); - } - } - }//end if - - }//end process() - - - /** - * Check if this use statement is part of the namespace block. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in - * the stack passed in $tokens. - * - * @return bool - */ - private function shouldIgnoreUse($phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - // Ignore USE keywords inside closures and during live coding. - $next = $phpcsFile->findNext(Tokens::$emptyTokens, ($stackPtr + 1), null, true); - if ($next === false || $tokens[$next]['code'] === T_OPEN_PARENTHESIS) { - return true; - } - - // Ignore USE keywords for traits. - if ($phpcsFile->hasCondition($stackPtr, [T_CLASS, T_TRAIT, T_ENUM]) === true) { - return true; - } - - return false; - - }//end shouldIgnoreUse() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR2/Tests/Classes/ClassDeclarationUnitTest.inc b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR2/Tests/Classes/ClassDeclarationUnitTest.inc deleted file mode 100644 index 1df40d51..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR2/Tests/Classes/ClassDeclarationUnitTest.inc +++ /dev/null @@ -1,346 +0,0 @@ -anonymous = new class extends ArrayObject - { - public function __construct() - { - parent::__construct(['a' => 1, 'b' => 2]); - } - }; - } -} - -class A extends B - implements C -{ -} - -class C2 -{ - -} // phpcs:ignore Standard.Category.Sniff - -interface I1 extends - Foo -{ -} - -interface I2 extends - Bar -{ -} - -interface I3 extends - Foo, - Bar -{ -} - -class C1 extends - Foo -{ -} - -class C2 extends - Bar -{ -} - -class C3 extends Foo implements - Bar -{ -} - -class C4 extends Foo implements - Bar -{ -} - -class C5 extends Foo implements - Bar, - Baz -{ -} - -class C6 extends \Foo\Bar implements - \Baz\Bar -{ -} - -interface I4 extends - \Baz - \Bar -{ -} - -interface I5 extends /* comment */ - \Foo\Bar -{ -} - -interface I6 extends // comment - \Foo\Bar -{ -} - -class C7 extends // comment - \Foo\Bar implements \Baz\Bar -{ -} - -class -C8 -{ -} - -foo(new class { -}); - -readonly -class Test -{ -} - -readonly class Test -{ -} - -if (!class_exists('IndentedDeclaration')) { - class IndentedDeclaration - { - function foo() {} - - - } -} - -// Space between modifier and class keyword would not be flagged nor fixed if newline + indentation. -final - class FinalClassWithIndentation - { - } - -readonly - class ReadonlyClassWithIndentation - { - } - -// And would also not be flagged if there was a comment between (not auto-fixable). -final/*comment*/class FinalClassWithComment -{ -} -abstract /*comment*/ class AbstractClassWithComment -{ -} - -readonly - // comment - class ReadonlyClassWithComment - { - } - -// Safeguard against fixer conflict when there are namespace relative interface names in extends. -interface FooBar extends namespace\BarFoo -{ -} - -// Safeguard against fixer conflict when there are namespace relative interface names in a multi-line implements. -class BarFoo implements - namespace\BarFoo -{ -} - -// Safeguard that the sniff ignores comments between interface names in a multiline implements. -class ClassWithMultiLineImplementsAndIgnoreAnnotation implements - SomeInterface, - // phpcs:disable Stnd.Cat.Sniff -- For reasons. - - \AnotherInterface -{ -} - -class ClassWithMultiLineImplementsAndComment implements - SomeInterface, - // Comment. - -AnotherInterface -{ -} - -class ClassWithMultiLineImplementsAndCommentOnSameLineAsInterfaceName implements - SomeInterface, - /* Comment. */ AnotherInterface -{ -} - -// Verify the `CloseBraceSameLine` error code is thrown when expected. -class ClassBraceNotOnLineByItselfError -{ - public $prop; -} $foo = new ClassBraceNotOnLineByItselfError; - -interface ClassBraceNotOnLineByItselfTrailingCommentIsAllowed -{ - public function myMethod(); -} //end interface -- this comment is allowed. - -trait ClassBraceNotOnLineByItselfTrailingAnnotationIsAllowed -{ -} // phpcs:ignore Stnd.Cat.Sniff -- this comment is also allowed. - -// Issue squizlabs/PHP_CodeSniffer#2621 - fix was superseded by fix for #2678. -$foo->bar( - new class implements Bar { - // ... - }, -); - -enum BraceNotOnLineByItselfCloseTagError -{ -} ?> - -anonymous = new class extends ArrayObject - { - public function __construct() - { - parent::__construct(['a' => 1, 'b' => 2]); - } - }; - } -} - -class A extends B implements C -{ -} - -class C2 -{ - -} // phpcs:ignore Standard.Category.Sniff - -interface I1 extends - Foo -{ -} - -interface I2 extends - Bar -{ -} - -interface I3 extends - Foo, - Bar -{ -} - -class C1 extends Foo -{ -} - -class C2 extends Bar -{ -} - -class C3 extends Foo implements - Bar -{ -} - -class C4 extends Foo implements - Bar -{ -} - -class C5 extends Foo implements - Bar, - Baz -{ -} - -class C6 extends \Foo\Bar implements - \Baz\Bar -{ -} - -interface I4 extends - \Baz\Bar -{ -} - -interface I5 extends /* comment */ - \Foo\Bar -{ -} - -interface I6 extends // comment - \Foo\Bar -{ -} - -class C7 extends \Foo\Bar implements \Baz\Bar // comment -{ -} - -class C8 -{ -} - -foo(new class { -}); - -readonly class Test -{ -} - -readonly class Test -{ -} - -if (!class_exists('IndentedDeclaration')) { - class IndentedDeclaration - { - function foo() {} - } -} - -// Space between modifier and class keyword would not be flagged nor fixed if newline + indentation. -final class FinalClassWithIndentation -{ - } - -readonly class ReadonlyClassWithIndentation -{ - } - -// And would also not be flagged if there was a comment between (not auto-fixable). -final/*comment*/class FinalClassWithComment -{ -} -abstract /*comment*/ class AbstractClassWithComment -{ -} - -readonly - // comment - class ReadonlyClassWithComment - { - } - -// Safeguard against fixer conflict when there are namespace relative interface names in extends. -interface FooBar extends namespace\BarFoo -{ -} - -// Safeguard against fixer conflict when there are namespace relative interface names in a multi-line implements. -class BarFoo implements - namespace\BarFoo -{ -} - -// Safeguard that the sniff ignores comments between interface names in a multiline implements. -class ClassWithMultiLineImplementsAndIgnoreAnnotation implements - SomeInterface, - // phpcs:disable Stnd.Cat.Sniff -- For reasons. - - \AnotherInterface -{ -} - -class ClassWithMultiLineImplementsAndComment implements - SomeInterface, - // Comment. - - AnotherInterface -{ -} - -class ClassWithMultiLineImplementsAndCommentOnSameLineAsInterfaceName implements - SomeInterface, - /* Comment. */ - AnotherInterface -{ -} - -// Verify the `CloseBraceSameLine` error code is thrown when expected. -class ClassBraceNotOnLineByItselfError -{ - public $prop; -} $foo = new ClassBraceNotOnLineByItselfError; - -interface ClassBraceNotOnLineByItselfTrailingCommentIsAllowed -{ - public function myMethod(); -} //end interface -- this comment is allowed. - -trait ClassBraceNotOnLineByItselfTrailingAnnotationIsAllowed -{ -} // phpcs:ignore Stnd.Cat.Sniff -- this comment is also allowed. - -// Issue squizlabs/PHP_CodeSniffer#2621 - fix was superseded by fix for #2678. -$foo->bar( - new class implements Bar { - // ... - }, -); - -enum BraceNotOnLineByItselfCloseTagError -{ -} ?> - - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\PSR2\Tests\Classes; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the ClassDeclaration sniff. - * - * @covers \PHP_CodeSniffer\Standards\PSR2\Sniffs\Classes\ClassDeclarationSniff - */ -final class ClassDeclarationUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @return array - */ - public function getErrorList() - { - return [ - 2 => 1, - 7 => 3, - 12 => 1, - 13 => 1, - 17 => 1, - 19 => 2, - 20 => 1, - 21 => 1, - 22 => 1, - 25 => 1, - 27 => 2, - 34 => 1, - 35 => 2, - 44 => 1, - 45 => 1, - 63 => 1, - 95 => 1, - 116 => 1, - 118 => 1, - 119 => 1, - 124 => 1, - 130 => 2, - 131 => 1, - 158 => 1, - 168 => 1, - 178 => 1, - 179 => 1, - 184 => 1, - 189 => 1, - 194 => 1, - 204 => 1, - 205 => 1, - 210 => 1, - 215 => 2, - 216 => 1, - 231 => 2, - 235 => 1, - 244 => 1, - 248 => 1, - 258 => 1, - 263 => 1, - 268 => 1, - 273 => 1, - 276 => 1, - 282 => 1, - 310 => 1, - 316 => 1, - 324 => 1, - 344 => 1, - ]; - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR2/Tests/Namespaces/UseDeclarationUnitTest.1.inc b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR2/Tests/Namespaces/UseDeclarationUnitTest.1.inc deleted file mode 100644 index 977a7fb2..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/PSR2/Tests/Namespaces/UseDeclarationUnitTest.1.inc +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - ['bar']; - ]]> - - - [ 'bar' ]; - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/Arrays/ArrayDeclarationStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/Arrays/ArrayDeclarationStandard.xml deleted file mode 100644 index 568fac30..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/Arrays/ArrayDeclarationStandard.xml +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - array keyword must be lowercase. - ]]> - - - - - - - - - - - array keyword. - ]]> - - - - 'value1', - 'key2' => 'value2', - ); - ]]> - - - 'value1', - 'key2' => 'value2', - ); - ]]> - - - - array keyword. The closing parenthesis must be aligned with the start of the array keyword. - ]]> - - - - 'key1' => 'value1', - 'key2' => 'value2', - ); - ]]> - - - 'key1' => 'value1', - 'key2' => 'value2', -); - ]]> - - - - - - - - => 'ValueTen', - 'keyTwenty' => 'ValueTwenty', - ); - ]]> - - - => 'ValueTen', - 'keyTwenty' => 'ValueTwenty', - ); - ]]> - - - - - - - - 'value1', - 'key2' => 'value2', - 'key3' => 'value3', - ); - ]]> - - - 'value1', - 'key2' => 'value2', - 'key3' => 'value3' - ); - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/Classes/LowercaseClassKeywordsStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/Classes/LowercaseClassKeywordsStandard.xml deleted file mode 100644 index 610edf62..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/Classes/LowercaseClassKeywordsStandard.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - final class Foo extends Bar -{ -} - ]]> - - - Final Class Foo Extends Bar -{ -} - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/Classes/SelfMemberReferenceStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/Classes/SelfMemberReferenceStandard.xml deleted file mode 100644 index 4f982fa4..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/Classes/SelfMemberReferenceStandard.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - self::foo(); - ]]> - - - SELF::foo(); - ]]> - - - - - ::foo(); - ]]> - - - :: foo(); - ]]> - - - - - self::bar(); - } -} - ]]> - - - Foo -{ - public static function bar() - { - } - - public static function baz() - { - Foo::bar(); - } -} - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/Commenting/DocCommentAlignmentStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/Commenting/DocCommentAlignmentStandard.xml deleted file mode 100644 index 17fed42c..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/Commenting/DocCommentAlignmentStandard.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - * @see foo() - */ - ]]> - - - * @see foo() -*/ - ]]> - - - - - @see foo() - */ - ]]> - - - @see foo() - */ - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/Commenting/FunctionCommentThrowTagStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/Commenting/FunctionCommentThrowTagStandard.xml deleted file mode 100644 index e3638a49..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/Commenting/FunctionCommentThrowTagStandard.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - @throws Exception all the time - * @return void - */ -function foo() -{ - throw new Exception('Danger!'); -} - ]]> - - - - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/ControlStructures/ForEachLoopDeclarationStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/ControlStructures/ForEachLoopDeclarationStandard.xml deleted file mode 100644 index 42fa6f43..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/ControlStructures/ForEachLoopDeclarationStandard.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - $foo as $bar => $baz) { - echo $baz; -} - ]]> - - - $foo as $bar=>$baz ) { - echo $baz; -} - ]]> - - - - - as $bar => $baz) { - echo $baz; -} - ]]> - - - AS $bar => $baz) { - echo $baz; -} - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/ControlStructures/ForLoopDeclarationStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/ControlStructures/ForLoopDeclarationStandard.xml deleted file mode 100644 index 37caaded..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/ControlStructures/ForLoopDeclarationStandard.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - $i = 0; $i < 10; $i++) { - echo $i; -} - ]]> - - - $i = 0; $i < 10; $i++ ) { - echo $i; -} - ]]> - - - - - ; $i < 10; $i++) { - echo $i; -} - ]]> - - - ; $i < 10 ; $i++) { - echo $i; -} - ]]> - - - - - $i < 10; $i++) { - echo $i; -} - ]]> - - - $i < 10;$i++) { - echo $i; -} - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/ControlStructures/LowercaseDeclarationStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/ControlStructures/LowercaseDeclarationStandard.xml deleted file mode 100644 index d281400b..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/ControlStructures/LowercaseDeclarationStandard.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - if ($foo) { - $bar = true; -} - ]]> - - - IF ($foo) { - $bar = true; -} - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/Functions/LowercaseFunctionKeywordsStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/Functions/LowercaseFunctionKeywordsStandard.xml deleted file mode 100644 index fb2ef443..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/Functions/LowercaseFunctionKeywordsStandard.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - function foo() -{ - return true; -} - ]]> - - - FUNCTION foo() -{ - return true; -} - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/Scope/StaticThisUsageStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/Scope/StaticThisUsageStandard.xml deleted file mode 100644 index 0145657d..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/Scope/StaticThisUsageStandard.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - static function bar() - { - return self::$staticMember; - } -} - ]]> - - - static function bar() - { - return $this->$staticMember; - } -} - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/Strings/EchoedStringsStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/Strings/EchoedStringsStandard.xml deleted file mode 100644 index 2bc536eb..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/Strings/EchoedStringsStandard.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - "Hello"; - ]]> - - - ("Hello"); - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/WhiteSpace/CastSpacingStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/WhiteSpace/CastSpacingStandard.xml deleted file mode 100644 index 9529b1fd..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/WhiteSpace/CastSpacingStandard.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - int)'42'; - ]]> - - - int )'42'; - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/WhiteSpace/FunctionOpeningBraceStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/WhiteSpace/FunctionOpeningBraceStandard.xml deleted file mode 100644 index 28fa712f..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/WhiteSpace/FunctionOpeningBraceStandard.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - { -} - ]]> - - - { -} - ]]> - - - - - return 42; -} - ]]> - - - - return 42; -} - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/WhiteSpace/LanguageConstructSpacingStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/WhiteSpace/LanguageConstructSpacingStandard.xml deleted file mode 100644 index 85838ec3..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/WhiteSpace/LanguageConstructSpacingStandard.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - "hi"; - ]]> - - - "hi"; - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/WhiteSpace/ObjectOperatorSpacingStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/WhiteSpace/ObjectOperatorSpacingStandard.xml deleted file mode 100644 index 44edc7b5..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/WhiteSpace/ObjectOperatorSpacingStandard.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - ) should not have any space around it. - ]]> - - - - ->bar(); - ]]> - - - -> bar(); - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/WhiteSpace/ScopeKeywordSpacingStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/WhiteSpace/ScopeKeywordSpacingStandard.xml deleted file mode 100644 index f226a128..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/WhiteSpace/ScopeKeywordSpacingStandard.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - static function foo() -{ -} - ]]> - - - static function foo() -{ -} - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/WhiteSpace/SemicolonSpacingStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/WhiteSpace/SemicolonSpacingStandard.xml deleted file mode 100644 index bb9bf8f0..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Docs/WhiteSpace/SemicolonSpacingStandard.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - ; - ]]> - - - ; - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Arrays/ArrayDeclarationSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Arrays/ArrayDeclarationSniff.php deleted file mode 100644 index efad97e4..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Arrays/ArrayDeclarationSniff.php +++ /dev/null @@ -1,962 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Sniffs\Arrays; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Tokens; - -class ArrayDeclarationSniff implements Sniff -{ - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [ - T_ARRAY, - T_OPEN_SHORT_ARRAY, - ]; - - }//end register() - - - /** - * Processes this sniff, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The current file being checked. - * @param int $stackPtr The position of the current token in - * the stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - // Prevent acting on short lists inside a foreach (see - // https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/527). - if ($tokens[$stackPtr]['code'] === T_OPEN_SHORT_ARRAY - && isset($tokens[$stackPtr]['nested_parenthesis']) === true - ) { - $nestedParens = $tokens[$stackPtr]['nested_parenthesis']; - $lastParenthesisCloser = end($nestedParens); - $lastParenthesisOpener = key($nestedParens); - - if (isset($tokens[$lastParenthesisCloser]['parenthesis_owner']) === true - && $tokens[$tokens[$lastParenthesisCloser]['parenthesis_owner']]['code'] === T_FOREACH - ) { - $asKeyword = $phpcsFile->findNext(T_AS, ($lastParenthesisOpener + 1), $lastParenthesisCloser); - - if ($asKeyword !== false && $asKeyword < $stackPtr) { - return; - } - } - } - - if ($tokens[$stackPtr]['code'] === T_ARRAY) { - $phpcsFile->recordMetric($stackPtr, 'Short array syntax used', 'no'); - - // Array keyword should be lower case. - if ($tokens[$stackPtr]['content'] !== strtolower($tokens[$stackPtr]['content'])) { - if ($tokens[$stackPtr]['content'] === strtoupper($tokens[$stackPtr]['content'])) { - $phpcsFile->recordMetric($stackPtr, 'Array keyword case', 'upper'); - } else { - $phpcsFile->recordMetric($stackPtr, 'Array keyword case', 'mixed'); - } - - $error = 'Array keyword should be lower case; expected "array" but found "%s"'; - $data = [$tokens[$stackPtr]['content']]; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'NotLowerCase', $data); - if ($fix === true) { - $phpcsFile->fixer->replaceToken($stackPtr, 'array'); - } - } else { - $phpcsFile->recordMetric($stackPtr, 'Array keyword case', 'lower'); - } - - $arrayStart = $tokens[$stackPtr]['parenthesis_opener']; - if (isset($tokens[$arrayStart]['parenthesis_closer']) === false) { - return; - } - - $arrayEnd = $tokens[$arrayStart]['parenthesis_closer']; - - if ($arrayStart !== ($stackPtr + 1)) { - $error = 'There must be no space between the "array" keyword and the opening parenthesis'; - - $next = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), $arrayStart, true); - if (isset(Tokens::$commentTokens[$tokens[$next]['code']]) === true) { - // We don't have anywhere to put the comment, so don't attempt to fix it. - $phpcsFile->addError($error, $stackPtr, 'SpaceAfterKeyword'); - } else { - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'SpaceAfterKeyword'); - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - for ($i = ($stackPtr + 1); $i < $arrayStart; $i++) { - $phpcsFile->fixer->replaceToken($i, ''); - } - - $phpcsFile->fixer->endChangeset(); - } - } - } - } else { - $phpcsFile->recordMetric($stackPtr, 'Short array syntax used', 'yes'); - $arrayStart = $stackPtr; - $arrayEnd = $tokens[$stackPtr]['bracket_closer']; - }//end if - - // Check for empty arrays. - $content = $phpcsFile->findNext(T_WHITESPACE, ($arrayStart + 1), ($arrayEnd + 1), true); - if ($content === $arrayEnd) { - // Empty array, but if the brackets aren't together, there's a problem. - if (($arrayEnd - $arrayStart) !== 1) { - $error = 'Empty array declaration must have no space between the parentheses'; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'SpaceInEmptyArray'); - - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - for ($i = ($arrayStart + 1); $i < $arrayEnd; $i++) { - $phpcsFile->fixer->replaceToken($i, ''); - } - - $phpcsFile->fixer->endChangeset(); - } - } - - // We can return here because there is nothing else to check. All code - // below can assume that the array is not empty. - return; - } - - if ($tokens[$arrayStart]['line'] === $tokens[$arrayEnd]['line']) { - $this->processSingleLineArray($phpcsFile, $stackPtr, $arrayStart, $arrayEnd); - } else { - $this->processMultiLineArray($phpcsFile, $stackPtr, $arrayStart, $arrayEnd); - } - - }//end process() - - - /** - * Processes a single-line array definition. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The current file being checked. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * @param int $arrayStart The token that starts the array definition. - * @param int $arrayEnd The token that ends the array definition. - * - * @return void - */ - public function processSingleLineArray($phpcsFile, $stackPtr, $arrayStart, $arrayEnd) - { - $tokens = $phpcsFile->getTokens(); - - // Check if there are multiple values. If so, then it has to be multiple lines - // unless it is contained inside a function call or condition. - $valueCount = 0; - $commas = []; - for ($i = ($arrayStart + 1); $i < $arrayEnd; $i++) { - // Skip bracketed statements, like function calls. - if ($tokens[$i]['code'] === T_OPEN_PARENTHESIS) { - $i = $tokens[$i]['parenthesis_closer']; - continue; - } - - if ($tokens[$i]['code'] === T_COMMA) { - // Before counting this comma, make sure we are not - // at the end of the array. - $next = $phpcsFile->findNext(T_WHITESPACE, ($i + 1), $arrayEnd, true); - if ($next !== false) { - $valueCount++; - $commas[] = $i; - } else { - // There is a comma at the end of a single line array. - $error = 'Comma not allowed after last value in single-line array declaration'; - $fix = $phpcsFile->addFixableError($error, $i, 'CommaAfterLast'); - if ($fix === true) { - $phpcsFile->fixer->replaceToken($i, ''); - } - } - } - }//end for - - // Now check each of the double arrows (if any). - $nextArrow = $arrayStart; - while (($nextArrow = $phpcsFile->findNext(T_DOUBLE_ARROW, ($nextArrow + 1), $arrayEnd)) !== false) { - if ($tokens[($nextArrow - 1)]['code'] !== T_WHITESPACE) { - $content = $tokens[($nextArrow - 1)]['content']; - $error = 'Expected 1 space between "%s" and double arrow; 0 found'; - $data = [$content]; - $fix = $phpcsFile->addFixableError($error, $nextArrow, 'NoSpaceBeforeDoubleArrow', $data); - if ($fix === true) { - $phpcsFile->fixer->addContentBefore($nextArrow, ' '); - } - } else { - $spaceLength = $tokens[($nextArrow - 1)]['length']; - if ($spaceLength !== 1) { - $content = $tokens[($nextArrow - 2)]['content']; - $error = 'Expected 1 space between "%s" and double arrow; %s found'; - $data = [ - $content, - $spaceLength, - ]; - - $fix = $phpcsFile->addFixableError($error, $nextArrow, 'SpaceBeforeDoubleArrow', $data); - if ($fix === true) { - $phpcsFile->fixer->replaceToken(($nextArrow - 1), ' '); - } - } - }//end if - - if ($tokens[($nextArrow + 1)]['code'] !== T_WHITESPACE) { - $content = $tokens[($nextArrow + 1)]['content']; - $error = 'Expected 1 space between double arrow and "%s"; 0 found'; - $data = [$content]; - $fix = $phpcsFile->addFixableError($error, $nextArrow, 'NoSpaceAfterDoubleArrow', $data); - if ($fix === true) { - $phpcsFile->fixer->addContent($nextArrow, ' '); - } - } else { - $spaceLength = $tokens[($nextArrow + 1)]['length']; - if ($spaceLength !== 1) { - $content = $tokens[($nextArrow + 2)]['content']; - $error = 'Expected 1 space between double arrow and "%s"; %s found'; - $data = [ - $content, - $spaceLength, - ]; - - $fix = $phpcsFile->addFixableError($error, $nextArrow, 'SpaceAfterDoubleArrow', $data); - if ($fix === true) { - $phpcsFile->fixer->replaceToken(($nextArrow + 1), ' '); - } - } - }//end if - }//end while - - if ($valueCount > 0) { - $nestedParenthesis = false; - if (isset($tokens[$stackPtr]['nested_parenthesis']) === true) { - $nested = $tokens[$stackPtr]['nested_parenthesis']; - $nestedParenthesis = array_pop($nested); - } - - if ($nestedParenthesis === false - || $tokens[$nestedParenthesis]['line'] !== $tokens[$stackPtr]['line'] - ) { - $error = 'Array with multiple values cannot be declared on a single line'; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'SingleLineNotAllowed'); - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - $phpcsFile->fixer->addNewline($arrayStart); - - if ($tokens[($arrayEnd - 1)]['code'] === T_WHITESPACE) { - $phpcsFile->fixer->replaceToken(($arrayEnd - 1), $phpcsFile->eolChar); - } else { - $phpcsFile->fixer->addNewlineBefore($arrayEnd); - } - - $phpcsFile->fixer->endChangeset(); - } - - return; - } - - // We have a multiple value array that is inside a condition or - // function. Check its spacing is correct. - foreach ($commas as $comma) { - if ($tokens[($comma + 1)]['code'] !== T_WHITESPACE) { - $content = $tokens[($comma + 1)]['content']; - $error = 'Expected 1 space between comma and "%s"; 0 found'; - $data = [$content]; - $fix = $phpcsFile->addFixableError($error, $comma, 'NoSpaceAfterComma', $data); - if ($fix === true) { - $phpcsFile->fixer->addContent($comma, ' '); - } - } else { - $spaceLength = $tokens[($comma + 1)]['length']; - if ($spaceLength !== 1) { - $content = $tokens[($comma + 2)]['content']; - $error = 'Expected 1 space between comma and "%s"; %s found'; - $data = [ - $content, - $spaceLength, - ]; - - $fix = $phpcsFile->addFixableError($error, $comma, 'SpaceAfterComma', $data); - if ($fix === true) { - $phpcsFile->fixer->replaceToken(($comma + 1), ' '); - } - } - }//end if - - if ($tokens[($comma - 1)]['code'] === T_WHITESPACE) { - $content = $tokens[($comma - 2)]['content']; - $spaceLength = $tokens[($comma - 1)]['length']; - $error = 'Expected 0 spaces between "%s" and comma; %s found'; - $data = [ - $content, - $spaceLength, - ]; - - $fix = $phpcsFile->addFixableError($error, $comma, 'SpaceBeforeComma', $data); - if ($fix === true) { - $phpcsFile->fixer->replaceToken(($comma - 1), ''); - } - } - }//end foreach - }//end if - - }//end processSingleLineArray() - - - /** - * Processes a multi-line array definition. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The current file being checked. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * @param int $arrayStart The token that starts the array definition. - * @param int $arrayEnd The token that ends the array definition. - * - * @return void - */ - public function processMultiLineArray($phpcsFile, $stackPtr, $arrayStart, $arrayEnd) - { - $tokens = $phpcsFile->getTokens(); - $keywordStart = $tokens[$stackPtr]['column']; - - // Check the closing bracket is on a new line. - $lastContent = $phpcsFile->findPrevious(T_WHITESPACE, ($arrayEnd - 1), $arrayStart, true); - if ($tokens[$lastContent]['line'] === $tokens[$arrayEnd]['line']) { - $error = 'Closing parenthesis of array declaration must be on a new line'; - $fix = $phpcsFile->addFixableError($error, $arrayEnd, 'CloseBraceNewLine'); - if ($fix === true) { - $phpcsFile->fixer->addNewlineBefore($arrayEnd); - } - } else if ($tokens[$arrayEnd]['column'] !== $keywordStart) { - // Check the closing bracket is lined up under the "a" in array. - $expected = ($keywordStart - 1); - $found = ($tokens[$arrayEnd]['column'] - 1); - $pluralizeSpace = 's'; - if ($expected === 1) { - $pluralizeSpace = ''; - } - - $error = 'Closing parenthesis not aligned correctly; expected %s space%s but found %s'; - $data = [ - $expected, - $pluralizeSpace, - $found, - ]; - - $fix = $phpcsFile->addFixableError($error, $arrayEnd, 'CloseBraceNotAligned', $data); - if ($fix === true) { - if ($found === 0) { - $phpcsFile->fixer->addContent(($arrayEnd - 1), str_repeat(' ', $expected)); - } else { - $phpcsFile->fixer->replaceToken(($arrayEnd - 1), str_repeat(' ', $expected)); - } - } - }//end if - - $keyUsed = false; - $singleUsed = false; - $indices = []; - $maxLength = 0; - - if ($tokens[$stackPtr]['code'] === T_ARRAY) { - $lastToken = $tokens[$stackPtr]['parenthesis_opener']; - } else { - $lastToken = $stackPtr; - } - - // Find all the double arrows that reside in this scope. - for ($nextToken = ($stackPtr + 1); $nextToken < $arrayEnd; $nextToken++) { - // Skip bracketed statements, like function calls. - if ($tokens[$nextToken]['code'] === T_OPEN_PARENTHESIS - && (isset($tokens[$nextToken]['parenthesis_owner']) === false - || $tokens[$nextToken]['parenthesis_owner'] !== $stackPtr) - ) { - $nextToken = $tokens[$nextToken]['parenthesis_closer']; - continue; - } - - if ($tokens[$nextToken]['code'] === T_ARRAY - || $tokens[$nextToken]['code'] === T_OPEN_SHORT_ARRAY - || $tokens[$nextToken]['code'] === T_CLOSURE - || $tokens[$nextToken]['code'] === T_FN - || $tokens[$nextToken]['code'] === T_MATCH - ) { - // Let subsequent calls of this test handle nested arrays. - if ($tokens[$lastToken]['code'] !== T_DOUBLE_ARROW) { - $indices[] = ['value' => $nextToken]; - $lastToken = $nextToken; - } - - if ($tokens[$nextToken]['code'] === T_ARRAY) { - $nextToken = $tokens[$tokens[$nextToken]['parenthesis_opener']]['parenthesis_closer']; - } else if ($tokens[$nextToken]['code'] === T_OPEN_SHORT_ARRAY) { - $nextToken = $tokens[$nextToken]['bracket_closer']; - } else { - // T_CLOSURE. - $nextToken = $tokens[$nextToken]['scope_closer']; - } - - $nextToken = $phpcsFile->findNext(T_WHITESPACE, ($nextToken + 1), null, true); - if ($tokens[$nextToken]['code'] !== T_COMMA) { - $nextToken--; - } else { - $lastToken = $nextToken; - } - - continue; - }//end if - - if ($tokens[$nextToken]['code'] !== T_DOUBLE_ARROW && $tokens[$nextToken]['code'] !== T_COMMA) { - continue; - } - - $currentEntry = []; - - if ($tokens[$nextToken]['code'] === T_COMMA) { - $stackPtrCount = 0; - if (isset($tokens[$stackPtr]['nested_parenthesis']) === true) { - $stackPtrCount = count($tokens[$stackPtr]['nested_parenthesis']); - } - - $commaCount = 0; - if (isset($tokens[$nextToken]['nested_parenthesis']) === true) { - $commaCount = count($tokens[$nextToken]['nested_parenthesis']); - if ($tokens[$stackPtr]['code'] === T_ARRAY) { - // Remove parenthesis that are used to define the array. - $commaCount--; - } - } - - if ($commaCount > $stackPtrCount) { - // This comma is inside more parenthesis than the ARRAY keyword, - // then there it is actually a comma used to separate arguments - // in a function call. - continue; - } - - if ($keyUsed === true && $tokens[$lastToken]['code'] === T_COMMA) { - $nextToken = $phpcsFile->findNext(Tokens::$emptyTokens, ($lastToken + 1), null, true); - // Allow for PHP 7.4+ array unpacking within an array declaration. - if ($tokens[$nextToken]['code'] !== T_ELLIPSIS) { - $error = 'No key specified for array entry; first entry specifies key'; - $phpcsFile->addError($error, $nextToken, 'NoKeySpecified'); - return; - } - } - - if ($keyUsed === false) { - if ($tokens[($nextToken - 1)]['code'] === T_WHITESPACE) { - $prev = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($nextToken - 1), null, true); - if (($tokens[$prev]['code'] !== T_END_HEREDOC - && $tokens[$prev]['code'] !== T_END_NOWDOC) - || $tokens[($nextToken - 1)]['line'] === $tokens[$nextToken]['line'] - ) { - if ($tokens[($nextToken - 1)]['content'] === $phpcsFile->eolChar) { - $spaceLength = 'newline'; - } else { - $spaceLength = $tokens[($nextToken - 1)]['length']; - } - - $error = 'Expected 0 spaces before comma; %s found'; - $data = [$spaceLength]; - - // The error is only fixable if there is only whitespace between the tokens. - if ($prev === $phpcsFile->findPrevious(T_WHITESPACE, ($nextToken - 1), null, true)) { - $fix = $phpcsFile->addFixableError($error, $nextToken, 'SpaceBeforeComma', $data); - if ($fix === true) { - $phpcsFile->fixer->replaceToken(($nextToken - 1), ''); - } - } else { - $phpcsFile->addError($error, $nextToken, 'SpaceBeforeComma', $data); - } - } - }//end if - - $valueContent = $phpcsFile->findNext( - Tokens::$emptyTokens, - ($lastToken + 1), - $nextToken, - true - ); - - $indices[] = ['value' => $valueContent]; - $usesArrayUnpacking = $phpcsFile->findPrevious( - Tokens::$emptyTokens, - ($nextToken - 2), - null, - true - ); - if ($tokens[$usesArrayUnpacking]['code'] !== T_ELLIPSIS) { - // Don't decide if an array is key => value indexed or not when PHP 7.4+ array unpacking is used. - $singleUsed = true; - } - }//end if - - $lastToken = $nextToken; - continue; - }//end if - - if ($tokens[$nextToken]['code'] === T_DOUBLE_ARROW) { - if ($singleUsed === true) { - $error = 'Key specified for array entry; first entry has no key'; - $phpcsFile->addError($error, $nextToken, 'KeySpecified'); - return; - } - - $currentEntry['arrow'] = $nextToken; - $keyUsed = true; - - // Find the start of index that uses this double arrow. - $indexEnd = $phpcsFile->findPrevious(T_WHITESPACE, ($nextToken - 1), $arrayStart, true); - $indexStart = $phpcsFile->findStartOfStatement($indexEnd); - - if ($indexStart === $indexEnd) { - $currentEntry['index'] = $indexEnd; - $currentEntry['index_content'] = $tokens[$indexEnd]['content']; - $currentEntry['index_length'] = $tokens[$indexEnd]['length']; - } else { - $currentEntry['index'] = $indexStart; - $currentEntry['index_content'] = ''; - $currentEntry['index_length'] = 0; - for ($i = $indexStart; $i <= $indexEnd; $i++) { - $currentEntry['index_content'] .= $tokens[$i]['content']; - $currentEntry['index_length'] += $tokens[$i]['length']; - } - } - - if ($maxLength < $currentEntry['index_length']) { - $maxLength = $currentEntry['index_length']; - } - - // Find the value of this index. - $nextContent = $phpcsFile->findNext( - Tokens::$emptyTokens, - ($nextToken + 1), - $arrayEnd, - true - ); - - $currentEntry['value'] = $nextContent; - $indices[] = $currentEntry; - $lastToken = $nextToken; - }//end if - }//end for - - // Check for multi-line arrays that should be single-line. - $singleValue = false; - - if (empty($indices) === true) { - $singleValue = true; - } else if (count($indices) === 1 && $tokens[$lastToken]['code'] === T_COMMA) { - // There may be another array value without a comma. - $exclude = Tokens::$emptyTokens; - $exclude[] = T_COMMA; - $nextContent = $phpcsFile->findNext($exclude, ($indices[0]['value'] + 1), $arrayEnd, true); - if ($nextContent === false) { - $singleValue = true; - } - } - - if ($singleValue === true) { - // Before we complain, make sure the single value isn't a here/nowdoc. - $next = $phpcsFile->findNext(Tokens::$heredocTokens, ($arrayStart + 1), ($arrayEnd - 1)); - if ($next === false) { - // Array cannot be empty, so this is a multi-line array with - // a single value. It should be defined on single line. - $error = 'Multi-line array contains a single value; use single-line array instead'; - $errorCode = 'MultiLineNotAllowed'; - - $find = Tokens::$phpcsCommentTokens; - $find[] = T_COMMENT; - $comment = $phpcsFile->findNext($find, ($arrayStart + 1), $arrayEnd); - if ($comment === false) { - $fix = $phpcsFile->addFixableError($error, $stackPtr, $errorCode); - } else { - $fix = false; - $phpcsFile->addError($error, $stackPtr, $errorCode); - } - - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - for ($i = ($arrayStart + 1); $i < $arrayEnd; $i++) { - if ($tokens[$i]['code'] !== T_WHITESPACE) { - break; - } - - $phpcsFile->fixer->replaceToken($i, ''); - } - - for ($i = ($arrayEnd - 1); $i > $arrayStart; $i--) { - if ($tokens[$i]['code'] !== T_WHITESPACE) { - break; - } - - $phpcsFile->fixer->replaceToken($i, ''); - } - - $phpcsFile->fixer->endChangeset(); - } - - return; - }//end if - }//end if - - /* - This section checks for arrays that don't specify keys. - - Arrays such as: - array( - 'aaa', - 'bbb', - 'd', - ); - */ - - if ($keyUsed === false && empty($indices) === false) { - $count = count($indices); - $lastIndex = $indices[($count - 1)]['value']; - - $trailingContent = $phpcsFile->findPrevious( - Tokens::$emptyTokens, - ($arrayEnd - 1), - $lastIndex, - true - ); - - if ($tokens[$trailingContent]['code'] !== T_COMMA) { - $phpcsFile->recordMetric($stackPtr, 'Array end comma', 'no'); - $error = 'Comma required after last value in array declaration'; - $fix = $phpcsFile->addFixableError($error, $trailingContent, 'NoCommaAfterLast'); - if ($fix === true) { - $phpcsFile->fixer->addContent($trailingContent, ','); - } - } else { - $phpcsFile->recordMetric($stackPtr, 'Array end comma', 'yes'); - } - - foreach ($indices as $valuePosition => $value) { - if (empty($value['value']) === true) { - // Array was malformed and we couldn't figure out - // the array value correctly, so we have to ignore it. - // Other parts of this sniff will correct the error. - continue; - } - - $valuePointer = $value['value']; - - $ignoreTokens = [ - T_WHITESPACE => T_WHITESPACE, - T_COMMA => T_COMMA, - ]; - $ignoreTokens += Tokens::$castTokens; - - if ($tokens[$valuePointer]['code'] === T_CLOSURE - || $tokens[$valuePointer]['code'] === T_FN - ) { - // Check if the closure is static, if it is, override the value pointer as indices before skip static. - $staticPointer = $phpcsFile->findPrevious($ignoreTokens, ($valuePointer - 1), ($arrayStart + 1), true); - if ($staticPointer !== false && $tokens[$staticPointer]['code'] === T_STATIC) { - $valuePointer = $staticPointer; - } - } - - $previous = $phpcsFile->findPrevious($ignoreTokens, ($valuePointer - 1), ($arrayStart + 1), true); - if ($previous === false) { - $previous = $stackPtr; - } - - $previousIsWhitespace = $tokens[($valuePointer - 1)]['code'] === T_WHITESPACE; - if ($tokens[$previous]['line'] === $tokens[$valuePointer]['line']) { - $error = 'Each value in a multi-line array must be on a new line'; - if ($valuePosition === 0) { - $error = 'The first value in a multi-value array must be on a new line'; - } - - $fix = $phpcsFile->addFixableError($error, $valuePointer, 'ValueNoNewline'); - if ($fix === true) { - if ($previousIsWhitespace === true) { - $phpcsFile->fixer->replaceToken(($valuePointer - 1), $phpcsFile->eolChar); - } else { - $phpcsFile->fixer->addNewlineBefore($valuePointer); - } - } - } else if ($previousIsWhitespace === true) { - $expected = $keywordStart; - - $first = $phpcsFile->findFirstOnLine(T_WHITESPACE, $valuePointer, true); - $found = ($tokens[$first]['column'] - 1); - $pluralizeSpace = 's'; - if ($expected === 1) { - $pluralizeSpace = ''; - } - - if ($found !== $expected) { - $error = 'Array value not aligned correctly; expected %s space%s but found %s'; - $data = [ - $expected, - $pluralizeSpace, - $found, - ]; - - $fix = $phpcsFile->addFixableError($error, $first, 'ValueNotAligned', $data); - if ($fix === true) { - if ($found === 0) { - $phpcsFile->fixer->addContent(($first - 1), str_repeat(' ', $expected)); - } else { - $phpcsFile->fixer->replaceToken(($first - 1), str_repeat(' ', $expected)); - } - } - } - }//end if - }//end foreach - }//end if - - /* - Below the actual indentation of the array is checked. - Errors will be thrown when a key is not aligned, when - a double arrow is not aligned, and when a value is not - aligned correctly. - If an error is found in one of the above areas, then errors - are not reported for the rest of the line to avoid reporting - spaces and columns incorrectly. Often fixing the first - problem will fix the other 2 anyway. - - For example: - - $a = array( - 'index' => '2', - ); - - or - - $a = [ - 'index' => '2', - ]; - - In this array, the double arrow is indented too far, but this - will also cause an error in the value's alignment. If the arrow were - to be moved back one space however, then both errors would be fixed. - */ - - $indicesStart = ($keywordStart + 1); - foreach ($indices as $valuePosition => $index) { - $valuePointer = $index['value']; - if ($valuePointer === false) { - // Syntax error or live coding. - continue; - } - - if (isset($index['index']) === false) { - // Array value only. - continue; - } - - $indexPointer = $index['index']; - $indexLine = $tokens[$indexPointer]['line']; - - $previous = $phpcsFile->findPrevious([T_WHITESPACE, T_COMMA], ($indexPointer - 1), ($arrayStart + 1), true); - if ($previous === false) { - $previous = $stackPtr; - } - - if ($tokens[$previous]['line'] === $indexLine) { - $error = 'Each index in a multi-line array must be on a new line'; - if ($valuePosition === 0) { - $error = 'The first index in a multi-value array must be on a new line'; - } - - $fix = $phpcsFile->addFixableError($error, $indexPointer, 'IndexNoNewline'); - if ($fix === true) { - if ($tokens[($indexPointer - 1)]['code'] === T_WHITESPACE) { - $phpcsFile->fixer->replaceToken(($indexPointer - 1), $phpcsFile->eolChar); - } else { - $phpcsFile->fixer->addNewlineBefore($indexPointer); - } - } - - continue; - } - - if ($tokens[$indexPointer]['column'] !== $indicesStart && ($indexPointer - 1) !== $arrayStart) { - $expected = ($indicesStart - 1); - $found = ($tokens[$indexPointer]['column'] - 1); - $pluralizeSpace = 's'; - if ($expected === 1) { - $pluralizeSpace = ''; - } - - $error = 'Array key not aligned correctly; expected %s space%s but found %s'; - $data = [ - $expected, - $pluralizeSpace, - $found, - ]; - - $fix = $phpcsFile->addFixableError($error, $indexPointer, 'KeyNotAligned', $data); - if ($fix === true) { - if ($found === 0 || $tokens[($indexPointer - 1)]['code'] !== T_WHITESPACE) { - $phpcsFile->fixer->addContent(($indexPointer - 1), str_repeat(' ', $expected)); - } else { - $phpcsFile->fixer->replaceToken(($indexPointer - 1), str_repeat(' ', $expected)); - } - } - }//end if - - $arrowStart = ($tokens[$indexPointer]['column'] + $maxLength + 1); - if ($tokens[$index['arrow']]['column'] !== $arrowStart) { - $expected = ($arrowStart - ($index['index_length'] + $tokens[$indexPointer]['column'])); - $found = ($tokens[$index['arrow']]['column'] - ($index['index_length'] + $tokens[$indexPointer]['column'])); - $pluralizeSpace = 's'; - if ($expected === 1) { - $pluralizeSpace = ''; - } - - $error = 'Array double arrow not aligned correctly; expected %s space%s but found %s'; - $data = [ - $expected, - $pluralizeSpace, - $found, - ]; - - $fix = $phpcsFile->addFixableError($error, $index['arrow'], 'DoubleArrowNotAligned', $data); - if ($fix === true) { - if ($found === 0) { - $phpcsFile->fixer->addContent(($index['arrow'] - 1), str_repeat(' ', $expected)); - } else { - $phpcsFile->fixer->replaceToken(($index['arrow'] - 1), str_repeat(' ', $expected)); - } - } - - continue; - }//end if - - $valueStart = ($arrowStart + 3); - if ($tokens[$valuePointer]['column'] !== $valueStart) { - $expected = ($valueStart - ($tokens[$index['arrow']]['length'] + $tokens[$index['arrow']]['column'])); - $found = ($tokens[$valuePointer]['column'] - ($tokens[$index['arrow']]['length'] + $tokens[$index['arrow']]['column'])); - if ($found < 0) { - $found = 'newline'; - } - - $pluralizeSpace = 's'; - if ($expected === 1) { - $pluralizeSpace = ''; - } - - $error = 'Array value not aligned correctly; expected %s space%s but found %s'; - $data = [ - $expected, - $pluralizeSpace, - $found, - ]; - - $fix = $phpcsFile->addFixableError($error, $index['arrow'], 'ValueNotAligned', $data); - if ($fix === true) { - if ($found === 'newline') { - $prev = $phpcsFile->findPrevious(T_WHITESPACE, ($valuePointer - 1), null, true); - $phpcsFile->fixer->beginChangeset(); - for ($i = ($prev + 1); $i < $valuePointer; $i++) { - $phpcsFile->fixer->replaceToken($i, ''); - } - - $phpcsFile->fixer->replaceToken(($valuePointer - 1), str_repeat(' ', $expected)); - $phpcsFile->fixer->endChangeset(); - } else if ($found === 0) { - $phpcsFile->fixer->addContent(($valuePointer - 1), str_repeat(' ', $expected)); - } else { - $phpcsFile->fixer->replaceToken(($valuePointer - 1), str_repeat(' ', $expected)); - } - } - }//end if - - // Check each line ends in a comma. - $valueStart = $valuePointer; - $nextComma = false; - - $end = $phpcsFile->findEndOfStatement($valueStart); - if ($end === false) { - $valueEnd = $valueStart; - } else if ($tokens[$end]['code'] === T_COMMA) { - $valueEnd = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($end - 1), $valueStart, true); - $nextComma = $end; - } else { - $valueEnd = $end; - $next = $phpcsFile->findNext(Tokens::$emptyTokens, ($end + 1), $arrayEnd, true); - if ($next !== false && $tokens[$next]['code'] === T_COMMA) { - $nextComma = $next; - } - } - - $valueLine = $tokens[$valueEnd]['line']; - if ($tokens[$valueEnd]['code'] === T_END_HEREDOC || $tokens[$valueEnd]['code'] === T_END_NOWDOC) { - $valueLine++; - } - - if ($nextComma === false || ($tokens[$nextComma]['line'] !== $valueLine)) { - $error = 'Each line in an array declaration must end in a comma'; - $fix = $phpcsFile->addFixableError($error, $valuePointer, 'NoComma'); - - if ($fix === true) { - // Find the end of the line and put a comma there. - for ($i = ($valuePointer + 1); $i <= $arrayEnd; $i++) { - if ($tokens[$i]['line'] > $valueLine) { - break; - } - } - - $phpcsFile->fixer->beginChangeset(); - $phpcsFile->fixer->addContentBefore(($i - 1), ','); - if ($nextComma !== false) { - $phpcsFile->fixer->replaceToken($nextComma, ''); - } - - $phpcsFile->fixer->endChangeset(); - } - }//end if - - // Check that there is no space before the comma. - if ($nextComma !== false && $tokens[($nextComma - 1)]['code'] === T_WHITESPACE) { - // Here/nowdoc closing tags must have the comma on the next line. - $prev = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($nextComma - 1), null, true); - if ($tokens[$prev]['code'] !== T_END_HEREDOC && $tokens[$prev]['code'] !== T_END_NOWDOC) { - $content = $tokens[($nextComma - 2)]['content']; - $spaceLength = $tokens[($nextComma - 1)]['length']; - $error = 'Expected 0 spaces between "%s" and comma; %s found'; - $data = [ - $content, - $spaceLength, - ]; - - $fix = $phpcsFile->addFixableError($error, $nextComma, 'SpaceBeforeComma', $data); - if ($fix === true) { - $phpcsFile->fixer->replaceToken(($nextComma - 1), ''); - } - } - } - }//end foreach - - }//end processMultiLineArray() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/CSS/SemicolonSpacingSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/CSS/SemicolonSpacingSniff.php deleted file mode 100644 index 9030468b..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/CSS/SemicolonSpacingSniff.php +++ /dev/null @@ -1,105 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - * - * @deprecated 3.9.0 - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Sniffs\CSS; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Tokens; - -class SemicolonSpacingSniff implements Sniff -{ - - /** - * A list of tokenizers this sniff supports. - * - * @var array - */ - public $supportedTokenizers = ['CSS']; - - - /** - * Returns the token types that this sniff is interested in. - * - * @return array - */ - public function register() - { - return [T_STYLE]; - - }//end register() - - - /** - * Processes the tokens that this sniff is interested in. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file where the token was found. - * @param int $stackPtr The position in the stack where - * the token was found. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - $nextStatement = $phpcsFile->findNext([T_STYLE, T_CLOSE_CURLY_BRACKET], ($stackPtr + 1)); - if ($nextStatement === false) { - return; - } - - $ignore = Tokens::$emptyTokens; - if ($tokens[$nextStatement]['code'] === T_STYLE) { - // Allow for star-prefix hack. - $ignore[] = T_MULTIPLY; - } - - $endOfThisStatement = $phpcsFile->findPrevious($ignore, ($nextStatement - 1), null, true); - if ($tokens[$endOfThisStatement]['code'] !== T_SEMICOLON) { - $error = 'Style definitions must end with a semicolon'; - $phpcsFile->addError($error, $endOfThisStatement, 'NotAtEnd'); - return; - } - - if ($tokens[($endOfThisStatement - 1)]['code'] !== T_WHITESPACE) { - return; - } - - // There is a semicolon, so now find the last token in the statement. - $prevNonEmpty = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($endOfThisStatement - 1), null, true); - $found = $tokens[($endOfThisStatement - 1)]['length']; - if ($tokens[$prevNonEmpty]['line'] !== $tokens[$endOfThisStatement]['line']) { - $found = 'newline'; - } - - $error = 'Expected 0 spaces before semicolon in style definition; %s found'; - $data = [$found]; - $fix = $phpcsFile->addFixableError($error, $prevNonEmpty, 'SpaceFound', $data); - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - $phpcsFile->fixer->addContent($prevNonEmpty, ';'); - $phpcsFile->fixer->replaceToken($endOfThisStatement, ''); - - for ($i = ($endOfThisStatement - 1); $i > $prevNonEmpty; $i--) { - if ($tokens[$i]['code'] !== T_WHITESPACE) { - break; - } - - $phpcsFile->fixer->replaceToken($i, ''); - } - - $phpcsFile->fixer->endChangeset(); - } - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Classes/SelfMemberReferenceSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Classes/SelfMemberReferenceSniff.php deleted file mode 100644 index 8ee4de45..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Classes/SelfMemberReferenceSniff.php +++ /dev/null @@ -1,248 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Sniffs\Classes; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\AbstractScopeSniff; -use PHP_CodeSniffer\Util\Tokens; - -class SelfMemberReferenceSniff extends AbstractScopeSniff -{ - - - /** - * Constructs a Squiz_Sniffs_Classes_SelfMemberReferenceSniff. - */ - public function __construct() - { - parent::__construct([T_CLASS], [T_DOUBLE_COLON]); - - }//end __construct() - - - /** - * Processes the function tokens within the class. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file where this token was found. - * @param int $stackPtr The position where the token was found. - * @param int $currScope The current scope opener token. - * - * @return void - */ - protected function processTokenWithinScope(File $phpcsFile, $stackPtr, $currScope) - { - $tokens = $phpcsFile->getTokens(); - - // Determine if this is a double colon which needs to be examined. - $conditions = $tokens[$stackPtr]['conditions']; - $conditions = array_reverse($conditions, true); - foreach ($conditions as $conditionToken => $tokenCode) { - if ($tokenCode === T_CLASS || $tokenCode === T_ANON_CLASS || $tokenCode === T_CLOSURE) { - break; - } - } - - if ($conditionToken !== $currScope) { - return; - } - - $calledClassName = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($stackPtr - 1), null, true); - if ($calledClassName === false) { - // Parse error. - return; - } - - if ($tokens[$calledClassName]['code'] === T_SELF) { - if ($tokens[$calledClassName]['content'] !== 'self') { - $error = 'Must use "self::" for local static member reference; found "%s::"'; - $data = [$tokens[$calledClassName]['content']]; - $fix = $phpcsFile->addFixableError($error, $calledClassName, 'IncorrectCase', $data); - if ($fix === true) { - $phpcsFile->fixer->replaceToken($calledClassName, 'self'); - } - - return; - } - } else if ($tokens[$calledClassName]['code'] === T_STRING) { - // If the class is called with a namespace prefix, build fully qualified - // namespace calls for both current scope class and requested class. - $prevNonEmpty = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($calledClassName - 1), null, true); - if ($prevNonEmpty !== false && $tokens[$prevNonEmpty]['code'] === T_NS_SEPARATOR) { - $declarationName = $this->getDeclarationNameWithNamespace($tokens, $calledClassName); - $declarationName = ltrim($declarationName, '\\'); - $fullQualifiedClassName = $this->getNamespaceOfScope($phpcsFile, $currScope); - if ($fullQualifiedClassName === '\\') { - $fullQualifiedClassName = ''; - } else { - $fullQualifiedClassName .= '\\'; - } - - $fullQualifiedClassName .= $phpcsFile->getDeclarationName($currScope); - } else { - $declarationName = $phpcsFile->getDeclarationName($currScope); - $fullQualifiedClassName = $tokens[$calledClassName]['content']; - } - - if ($declarationName === $fullQualifiedClassName) { - // Class name is the same as the current class, which is not allowed. - $error = 'Must use "self::" for local static member reference'; - $fix = $phpcsFile->addFixableError($error, $calledClassName, 'NotUsed'); - - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - - $currentPointer = ($stackPtr - 1); - while ($tokens[$currentPointer]['code'] === T_NS_SEPARATOR - || $tokens[$currentPointer]['code'] === T_STRING - || isset(Tokens::$emptyTokens[$tokens[$currentPointer]['code']]) === true - ) { - if (isset(Tokens::$emptyTokens[$tokens[$currentPointer]['code']]) === true) { - --$currentPointer; - continue; - } - - $phpcsFile->fixer->replaceToken($currentPointer, ''); - --$currentPointer; - } - - $phpcsFile->fixer->replaceToken($stackPtr, 'self::'); - $phpcsFile->fixer->endChangeset(); - - // Fix potential whitespace issues in the next loop. - return; - }//end if - }//end if - }//end if - - if ($tokens[($stackPtr - 1)]['code'] === T_WHITESPACE) { - $found = $tokens[($stackPtr - 1)]['length']; - $error = 'Expected 0 spaces before double colon; %s found'; - $data = [$found]; - $fix = $phpcsFile->addFixableError($error, ($stackPtr - 1), 'SpaceBefore', $data); - - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - - for ($i = ($stackPtr - 1); $tokens[$i]['code'] === T_WHITESPACE; $i--) { - $phpcsFile->fixer->replaceToken($i, ''); - } - - $phpcsFile->fixer->endChangeset(); - } - } - - if ($tokens[($stackPtr + 1)]['code'] === T_WHITESPACE) { - $found = $tokens[($stackPtr + 1)]['length']; - $error = 'Expected 0 spaces after double colon; %s found'; - $data = [$found]; - $fix = $phpcsFile->addFixableError($error, ($stackPtr - 1), 'SpaceAfter', $data); - - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - - for ($i = ($stackPtr + 1); $tokens[$i]['code'] === T_WHITESPACE; $i++) { - $phpcsFile->fixer->replaceToken($i, ''); - } - - $phpcsFile->fixer->endChangeset(); - } - } - - }//end processTokenWithinScope() - - - /** - * Processes a token that is found within the scope that this test is - * listening to. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file where this token was found. - * @param int $stackPtr The position in the stack where this - * token was found. - * - * @return void - */ - protected function processTokenOutsideScope(File $phpcsFile, $stackPtr) - { - - }//end processTokenOutsideScope() - - - /** - * Returns the declaration names for classes/interfaces/functions with a namespace. - * - * @param array $tokens Token stack for this file. - * @param int $stackPtr The position where the namespace building will start. - * - * @return string - */ - protected function getDeclarationNameWithNamespace(array $tokens, $stackPtr) - { - $nameParts = []; - $currentPointer = $stackPtr; - while ($tokens[$currentPointer]['code'] === T_NS_SEPARATOR - || $tokens[$currentPointer]['code'] === T_STRING - || isset(Tokens::$emptyTokens[$tokens[$currentPointer]['code']]) === true - ) { - if (isset(Tokens::$emptyTokens[$tokens[$currentPointer]['code']]) === true) { - --$currentPointer; - continue; - } - - $nameParts[] = $tokens[$currentPointer]['content']; - --$currentPointer; - } - - $nameParts = array_reverse($nameParts); - return implode('', $nameParts); - - }//end getDeclarationNameWithNamespace() - - - /** - * Returns the namespace declaration of a file. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file where this token was found. - * @param int $stackPtr The position where the search for the - * namespace declaration will start. - * - * @return string - */ - protected function getNamespaceOfScope(File $phpcsFile, $stackPtr) - { - $namespace = '\\'; - $tokens = $phpcsFile->getTokens(); - - while (($namespaceDeclaration = $phpcsFile->findPrevious(T_NAMESPACE, $stackPtr)) !== false) { - $nextNonEmpty = $phpcsFile->findNext(Tokens::$emptyTokens, ($namespaceDeclaration + 1), null, true); - if ($tokens[$nextNonEmpty]['code'] === T_NS_SEPARATOR) { - // Namespace operator. Ignore. - $stackPtr = ($namespaceDeclaration - 1); - continue; - } - - $endOfNamespaceDeclaration = $phpcsFile->findNext([T_SEMICOLON, T_OPEN_CURLY_BRACKET, T_CLOSE_TAG], $namespaceDeclaration); - $namespace = $this->getDeclarationNameWithNamespace( - $phpcsFile->getTokens(), - ($endOfNamespaceDeclaration - 1) - ); - break; - } - - return $namespace; - - }//end getNamespaceOfScope() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Commenting/ClosingDeclarationCommentSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Commenting/ClosingDeclarationCommentSniff.php deleted file mode 100644 index 44bd4388..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Commenting/ClosingDeclarationCommentSniff.php +++ /dev/null @@ -1,130 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Sniffs\Commenting; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; - -class ClosingDeclarationCommentSniff implements Sniff -{ - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [ - T_CLASS, - T_ENUM, - T_FUNCTION, - T_INTERFACE, - T_TRAIT, - ]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in the - * stack passed in $tokens.. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - if ($tokens[$stackPtr]['code'] === T_FUNCTION) { - $methodProps = $phpcsFile->getMethodProperties($stackPtr); - - // Abstract methods do not require a closing comment. - if ($methodProps['is_abstract'] === true) { - return; - } - - // If this function is in an interface then we don't require - // a closing comment. - if ($phpcsFile->hasCondition($stackPtr, T_INTERFACE) === true) { - return; - } - - if (isset($tokens[$stackPtr]['scope_closer']) === false) { - $error = 'Possible parse error: non-abstract method defined as abstract'; - $phpcsFile->addWarning($error, $stackPtr, 'Abstract'); - return; - } - - $decName = $phpcsFile->getDeclarationName($stackPtr); - $comment = '//end '.$decName.'()'; - } else if ($tokens[$stackPtr]['code'] === T_CLASS) { - $comment = '//end class'; - } else if ($tokens[$stackPtr]['code'] === T_INTERFACE) { - $comment = '//end interface'; - } else if ($tokens[$stackPtr]['code'] === T_TRAIT) { - $comment = '//end trait'; - } else { - $comment = '//end enum'; - }//end if - - if (isset($tokens[$stackPtr]['scope_closer']) === false) { - $error = 'Possible parse error: %s missing opening or closing brace'; - $data = [$tokens[$stackPtr]['content']]; - $phpcsFile->addWarning($error, $stackPtr, 'MissingBrace', $data); - return; - } - - $closingBracket = $tokens[$stackPtr]['scope_closer']; - - $data = [$comment]; - if (isset($tokens[($closingBracket + 1)]) === false || $tokens[($closingBracket + 1)]['code'] !== T_COMMENT) { - $next = $phpcsFile->findNext(T_WHITESPACE, ($closingBracket + 1), null, true); - if ($next !== false && rtrim($tokens[$next]['content']) === $comment) { - // The comment isn't really missing; it is just in the wrong place. - $fix = $phpcsFile->addFixableError('Expected %s directly after closing brace', $closingBracket, 'Misplaced', $data); - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - for ($i = ($closingBracket + 1); $i < $next; $i++) { - $phpcsFile->fixer->replaceToken($i, ''); - } - - // Just in case, because indentation fixes can add indents onto - // these comments and cause us to be unable to fix them. - $phpcsFile->fixer->replaceToken($next, $comment.$phpcsFile->eolChar); - $phpcsFile->fixer->endChangeset(); - } - } else { - $fix = $phpcsFile->addFixableError('Expected %s', $closingBracket, 'Missing', $data); - if ($fix === true) { - $phpcsFile->fixer->replaceToken($closingBracket, '}'.$comment); - } - } - - return; - }//end if - - if (rtrim($tokens[($closingBracket + 1)]['content']) !== $comment) { - $fix = $phpcsFile->addFixableError('Expected %s', $closingBracket, 'Incorrect', $data); - if ($fix === true) { - $phpcsFile->fixer->replaceToken(($closingBracket + 1), $comment.$phpcsFile->eolChar); - } - - return; - } - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Commenting/FileCommentSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Commenting/FileCommentSniff.php deleted file mode 100644 index cfff91fc..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Commenting/FileCommentSniff.php +++ /dev/null @@ -1,228 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Sniffs\Commenting; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; - -class FileCommentSniff implements Sniff -{ - - /** - * A list of tokenizers this sniff supports. - * - * @var array - */ - public $supportedTokenizers = [ - 'PHP', - 'JS', - ]; - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [T_OPEN_TAG]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * - * @return int - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - $commentStart = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true); - - if ($tokens[$commentStart]['code'] === T_COMMENT) { - $phpcsFile->addError('You must use "/**" style comments for a file comment', $commentStart, 'WrongStyle'); - $phpcsFile->recordMetric($stackPtr, 'File has doc comment', 'yes'); - return $phpcsFile->numTokens; - } else if ($commentStart === false || $tokens[$commentStart]['code'] !== T_DOC_COMMENT_OPEN_TAG) { - $phpcsFile->addError('Missing file doc comment', $stackPtr, 'Missing'); - $phpcsFile->recordMetric($stackPtr, 'File has doc comment', 'no'); - return $phpcsFile->numTokens; - } - - if (isset($tokens[$commentStart]['comment_closer']) === false - || ($tokens[$tokens[$commentStart]['comment_closer']]['content'] === '' - && $tokens[$commentStart]['comment_closer'] === ($phpcsFile->numTokens - 1)) - ) { - // Don't process an unfinished file comment during live coding. - return $phpcsFile->numTokens; - } - - $commentEnd = $tokens[$commentStart]['comment_closer']; - - for ($nextToken = ($commentEnd + 1); $nextToken < $phpcsFile->numTokens; $nextToken++) { - if ($tokens[$nextToken]['code'] === T_WHITESPACE) { - continue; - } - - if ($tokens[$nextToken]['code'] === T_ATTRIBUTE - && isset($tokens[$nextToken]['attribute_closer']) === true - ) { - $nextToken = $tokens[$nextToken]['attribute_closer']; - continue; - } - - break; - } - - if ($nextToken === $phpcsFile->numTokens) { - $nextToken--; - } - - $ignore = [ - T_CLASS, - T_INTERFACE, - T_TRAIT, - T_ENUM, - T_FUNCTION, - T_CLOSURE, - T_PUBLIC, - T_PRIVATE, - T_PROTECTED, - T_FINAL, - T_STATIC, - T_ABSTRACT, - T_READONLY, - T_CONST, - T_PROPERTY, - T_INCLUDE, - T_INCLUDE_ONCE, - T_REQUIRE, - T_REQUIRE_ONCE, - ]; - - if (in_array($tokens[$nextToken]['code'], $ignore, true) === true) { - $phpcsFile->addError('Missing file doc comment', $stackPtr, 'Missing'); - $phpcsFile->recordMetric($stackPtr, 'File has doc comment', 'no'); - return $phpcsFile->numTokens; - } - - $phpcsFile->recordMetric($stackPtr, 'File has doc comment', 'yes'); - - // No blank line between the open tag and the file comment. - if ($tokens[$commentStart]['line'] > ($tokens[$stackPtr]['line'] + 1)) { - $error = 'There must be no blank lines before the file comment'; - $phpcsFile->addError($error, $stackPtr, 'SpacingAfterOpen'); - } - - // Exactly one blank line after the file comment. - $next = $phpcsFile->findNext(T_WHITESPACE, ($commentEnd + 1), null, true); - if ($next !== false && $tokens[$next]['line'] !== ($tokens[$commentEnd]['line'] + 2)) { - $error = 'There must be exactly one blank line after the file comment'; - $phpcsFile->addError($error, $commentEnd, 'SpacingAfterComment'); - } - - // Required tags in correct order. - $required = [ - '@package' => true, - '@subpackage' => true, - '@author' => true, - '@copyright' => true, - ]; - - $foundTags = []; - foreach ($tokens[$commentStart]['comment_tags'] as $tag) { - $name = $tokens[$tag]['content']; - $isRequired = isset($required[$name]); - - if ($isRequired === true && in_array($name, $foundTags, true) === true) { - $error = 'Only one %s tag is allowed in a file comment'; - $data = [$name]; - $phpcsFile->addError($error, $tag, 'Duplicate'.ucfirst(substr($name, 1)).'Tag', $data); - } - - $foundTags[] = $name; - - if ($isRequired === false) { - continue; - } - - $string = $phpcsFile->findNext(T_DOC_COMMENT_STRING, $tag, $commentEnd); - if ($string === false || $tokens[$string]['line'] !== $tokens[$tag]['line']) { - $error = 'Content missing for %s tag in file comment'; - $data = [$name]; - $phpcsFile->addError($error, $tag, 'Empty'.ucfirst(substr($name, 1)).'Tag', $data); - continue; - } - - if ($name === '@author') { - if ($tokens[$string]['content'] !== 'Squiz Pty Ltd ') { - $error = 'Expected "Squiz Pty Ltd " for author tag'; - $fix = $phpcsFile->addFixableError($error, $tag, 'IncorrectAuthor'); - if ($fix === true) { - $expected = 'Squiz Pty Ltd '; - $phpcsFile->fixer->replaceToken($string, $expected); - } - } - } else if ($name === '@copyright') { - if (preg_match('/^([0-9]{4})(-[0-9]{4})? (Squiz Pty Ltd \(ABN 77 084 670 600\))$/', $tokens[$string]['content']) === 0) { - $error = 'Expected "xxxx-xxxx Squiz Pty Ltd (ABN 77 084 670 600)" for copyright declaration'; - $fix = $phpcsFile->addFixableError($error, $tag, 'IncorrectCopyright'); - if ($fix === true) { - $matches = []; - preg_match('/^(([0-9]{4})(-[0-9]{4})?)?.*$/', $tokens[$string]['content'], $matches); - if (isset($matches[1]) === false) { - $matches[1] = date('Y'); - } - - $expected = $matches[1].' Squiz Pty Ltd (ABN 77 084 670 600)'; - $phpcsFile->fixer->replaceToken($string, $expected); - } - } - }//end if - }//end foreach - - // Check if the tags are in the correct position. - $pos = 0; - foreach ($required as $tag => $true) { - if (in_array($tag, $foundTags, true) === false) { - $error = 'Missing %s tag in file comment'; - $data = [$tag]; - $phpcsFile->addError($error, $commentEnd, 'Missing'.ucfirst(substr($tag, 1)).'Tag', $data); - } - - if (isset($foundTags[$pos]) === false) { - break; - } - - if ($foundTags[$pos] !== $tag) { - $error = 'The tag in position %s should be the %s tag'; - $data = [ - ($pos + 1), - $tag, - ]; - $phpcsFile->addError($error, $tokens[$commentStart]['comment_tags'][$pos], ucfirst(substr($tag, 1)).'TagOrder', $data); - } - - $pos++; - }//end foreach - - // Ignore the rest of the file. - return $phpcsFile->numTokens; - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Commenting/FunctionCommentSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Commenting/FunctionCommentSniff.php deleted file mode 100644 index b0b7cafb..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Commenting/FunctionCommentSniff.php +++ /dev/null @@ -1,800 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Sniffs\Commenting; - -use PHP_CodeSniffer\Config; -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Standards\PEAR\Sniffs\Commenting\FunctionCommentSniff as PEARFunctionCommentSniff; -use PHP_CodeSniffer\Util\Common; - -class FunctionCommentSniff extends PEARFunctionCommentSniff -{ - - /** - * Whether to skip inheritdoc comments. - * - * @var boolean - */ - public $skipIfInheritdoc = false; - - /** - * The current PHP version. - * - * @var integer|string|null - */ - private $phpVersion = null; - - - /** - * Process the return comment of this function comment. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * @param int $commentStart The position in the stack where the comment started. - * - * @return void - */ - protected function processReturn(File $phpcsFile, $stackPtr, $commentStart) - { - $tokens = $phpcsFile->getTokens(); - $return = null; - - if ($this->skipIfInheritdoc === true) { - if ($this->checkInheritdoc($phpcsFile, $stackPtr, $commentStart) === true) { - return; - } - } - - foreach ($tokens[$commentStart]['comment_tags'] as $tag) { - if ($tokens[$tag]['content'] === '@return') { - if ($return !== null) { - $error = 'Only 1 @return tag is allowed in a function comment'; - $phpcsFile->addError($error, $tag, 'DuplicateReturn'); - return; - } - - $return = $tag; - } - } - - // Skip constructor and destructor. - $methodName = $phpcsFile->getDeclarationName($stackPtr); - $isSpecialMethod = in_array($methodName, $this->specialMethods, true); - - if ($return !== null) { - $content = $tokens[($return + 2)]['content']; - if (empty($content) === true || $tokens[($return + 2)]['code'] !== T_DOC_COMMENT_STRING) { - $error = 'Return type missing for @return tag in function comment'; - $phpcsFile->addError($error, $return, 'MissingReturnType'); - } else { - // Support both a return type and a description. - preg_match('`^((?:\|?(?:array\([^\)]*\)|[\\\\a-z0-9\[\]]+))*)( .*)?`i', $content, $returnParts); - if (isset($returnParts[1]) === false) { - return; - } - - $returnType = $returnParts[1]; - - // Check return type (can be multiple, separated by '|'). - $typeNames = explode('|', $returnType); - $suggestedNames = []; - foreach ($typeNames as $typeName) { - $suggestedName = Common::suggestType($typeName); - if (in_array($suggestedName, $suggestedNames, true) === false) { - $suggestedNames[] = $suggestedName; - } - } - - $suggestedType = implode('|', $suggestedNames); - if ($returnType !== $suggestedType) { - $error = 'Expected "%s" but found "%s" for function return type'; - $data = [ - $suggestedType, - $returnType, - ]; - $fix = $phpcsFile->addFixableError($error, $return, 'InvalidReturn', $data); - if ($fix === true) { - $replacement = $suggestedType; - if (empty($returnParts[2]) === false) { - $replacement .= $returnParts[2]; - } - - $phpcsFile->fixer->replaceToken(($return + 2), $replacement); - unset($replacement); - } - } - - // If the return type is void, make sure there is - // no return statement in the function. - if ($returnType === 'void') { - if (isset($tokens[$stackPtr]['scope_closer']) === true) { - $endToken = $tokens[$stackPtr]['scope_closer']; - for ($returnToken = $stackPtr; $returnToken < $endToken; $returnToken++) { - if ($tokens[$returnToken]['code'] === T_CLOSURE - || $tokens[$returnToken]['code'] === T_ANON_CLASS - ) { - $returnToken = $tokens[$returnToken]['scope_closer']; - continue; - } - - if ($tokens[$returnToken]['code'] === T_RETURN - || $tokens[$returnToken]['code'] === T_YIELD - || $tokens[$returnToken]['code'] === T_YIELD_FROM - ) { - break; - } - } - - if ($returnToken !== $endToken) { - // If the function is not returning anything, just - // exiting, then there is no problem. - $semicolon = $phpcsFile->findNext(T_WHITESPACE, ($returnToken + 1), null, true); - if ($tokens[$semicolon]['code'] !== T_SEMICOLON) { - $error = 'Function return type is void, but function contains return statement'; - $phpcsFile->addError($error, $return, 'InvalidReturnVoid'); - } - } - }//end if - } else if ($returnType !== 'mixed' - && $returnType !== 'never' - && in_array('void', $typeNames, true) === false - ) { - // If return type is not void, never, or mixed, there needs to be a - // return statement somewhere in the function that returns something. - if (isset($tokens[$stackPtr]['scope_closer']) === true) { - $endToken = $tokens[$stackPtr]['scope_closer']; - for ($returnToken = $stackPtr; $returnToken < $endToken; $returnToken++) { - if ($tokens[$returnToken]['code'] === T_CLOSURE - || $tokens[$returnToken]['code'] === T_ANON_CLASS - ) { - $returnToken = $tokens[$returnToken]['scope_closer']; - continue; - } - - if ($tokens[$returnToken]['code'] === T_RETURN - || $tokens[$returnToken]['code'] === T_YIELD - || $tokens[$returnToken]['code'] === T_YIELD_FROM - ) { - break; - } - } - - if ($returnToken === $endToken) { - $error = 'Function return type is not void, but function has no return statement'; - $phpcsFile->addError($error, $return, 'InvalidNoReturn'); - } else { - $semicolon = $phpcsFile->findNext(T_WHITESPACE, ($returnToken + 1), null, true); - if ($tokens[$semicolon]['code'] === T_SEMICOLON) { - $error = 'Function return type is not void, but function is returning void here'; - $phpcsFile->addError($error, $returnToken, 'InvalidReturnNotVoid'); - } - } - }//end if - }//end if - }//end if - } else { - if ($isSpecialMethod === true) { - return; - } - - $error = 'Missing @return tag in function comment'; - $phpcsFile->addError($error, $tokens[$commentStart]['comment_closer'], 'MissingReturn'); - }//end if - - }//end processReturn() - - - /** - * Process any throw tags that this function comment has. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * @param int $commentStart The position in the stack where the comment started. - * - * @return void - */ - protected function processThrows(File $phpcsFile, $stackPtr, $commentStart) - { - $tokens = $phpcsFile->getTokens(); - - if ($this->skipIfInheritdoc === true) { - if ($this->checkInheritdoc($phpcsFile, $stackPtr, $commentStart) === true) { - return; - } - } - - foreach ($tokens[$commentStart]['comment_tags'] as $pos => $tag) { - if ($tokens[$tag]['content'] !== '@throws') { - continue; - } - - $exception = null; - $comment = null; - if ($tokens[($tag + 2)]['code'] === T_DOC_COMMENT_STRING) { - $matches = []; - preg_match('/([^\s]+)(?:\s+(.*))?/', $tokens[($tag + 2)]['content'], $matches); - $exception = $matches[1]; - if (isset($matches[2]) === true && trim($matches[2]) !== '') { - $comment = $matches[2]; - } - } - - if ($exception === null) { - $error = 'Exception type and comment missing for @throws tag in function comment'; - $phpcsFile->addError($error, $tag, 'InvalidThrows'); - } else if ($comment === null) { - $error = 'Comment missing for @throws tag in function comment'; - $phpcsFile->addError($error, $tag, 'EmptyThrows'); - } else { - // Any strings until the next tag belong to this comment. - if (isset($tokens[$commentStart]['comment_tags'][($pos + 1)]) === true) { - $end = $tokens[$commentStart]['comment_tags'][($pos + 1)]; - } else { - $end = $tokens[$commentStart]['comment_closer']; - } - - for ($i = ($tag + 3); $i < $end; $i++) { - if ($tokens[$i]['code'] === T_DOC_COMMENT_STRING) { - $comment .= ' '.$tokens[$i]['content']; - } - } - - $comment = trim($comment); - - // Starts with a capital letter and ends with a fullstop. - $firstChar = $comment[0]; - if (strtoupper($firstChar) !== $firstChar) { - $error = '@throws tag comment must start with a capital letter'; - $phpcsFile->addError($error, ($tag + 2), 'ThrowsNotCapital'); - } - - $lastChar = substr($comment, -1); - if ($lastChar !== '.') { - $error = '@throws tag comment must end with a full stop'; - $phpcsFile->addError($error, ($tag + 2), 'ThrowsNoFullStop'); - } - }//end if - }//end foreach - - }//end processThrows() - - - /** - * Process the function parameter comments. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * @param int $commentStart The position in the stack where the comment started. - * - * @return void - */ - protected function processParams(File $phpcsFile, $stackPtr, $commentStart) - { - if ($this->phpVersion === null) { - $this->phpVersion = Config::getConfigData('php_version'); - if ($this->phpVersion === null) { - $this->phpVersion = PHP_VERSION_ID; - } - } - - $tokens = $phpcsFile->getTokens(); - - if ($this->skipIfInheritdoc === true) { - if ($this->checkInheritdoc($phpcsFile, $stackPtr, $commentStart) === true) { - return; - } - } - - $params = []; - $maxType = 0; - $maxVar = 0; - foreach ($tokens[$commentStart]['comment_tags'] as $pos => $tag) { - if ($tokens[$tag]['content'] !== '@param') { - continue; - } - - $type = ''; - $typeSpace = 0; - $var = ''; - $varSpace = 0; - $comment = ''; - $commentLines = []; - if ($tokens[($tag + 2)]['code'] === T_DOC_COMMENT_STRING) { - $matches = []; - preg_match('/([^$&.]+)(?:((?:\.\.\.)?(?:\$|&)[^\s]+)(?:(\s+)(.*))?)?/', $tokens[($tag + 2)]['content'], $matches); - - if (empty($matches) === false) { - $typeLen = strlen($matches[1]); - $type = trim($matches[1]); - $typeSpace = ($typeLen - strlen($type)); - $typeLen = strlen($type); - if ($typeLen > $maxType) { - $maxType = $typeLen; - } - } - - if (isset($matches[2]) === true) { - $var = $matches[2]; - $varLen = strlen($var); - if ($varLen > $maxVar) { - $maxVar = $varLen; - } - - if (isset($matches[4]) === true) { - $varSpace = strlen($matches[3]); - $comment = $matches[4]; - $commentLines[] = [ - 'comment' => $comment, - 'token' => ($tag + 2), - 'indent' => $varSpace, - ]; - - // Any strings until the next tag belong to this comment. - if (isset($tokens[$commentStart]['comment_tags'][($pos + 1)]) === true) { - $end = $tokens[$commentStart]['comment_tags'][($pos + 1)]; - } else { - $end = $tokens[$commentStart]['comment_closer']; - } - - for ($i = ($tag + 3); $i < $end; $i++) { - if ($tokens[$i]['code'] === T_DOC_COMMENT_STRING) { - $indent = 0; - if ($tokens[($i - 1)]['code'] === T_DOC_COMMENT_WHITESPACE) { - $indent = $tokens[($i - 1)]['length']; - } - - $comment .= ' '.$tokens[$i]['content']; - $commentLines[] = [ - 'comment' => $tokens[$i]['content'], - 'token' => $i, - 'indent' => $indent, - ]; - } - } - } else { - $error = 'Missing parameter comment'; - $phpcsFile->addError($error, $tag, 'MissingParamComment'); - $commentLines[] = ['comment' => '']; - }//end if - } else if ($tokens[($tag + 2)]['content'][0] === '$') { - $error = 'Missing parameter type'; - $phpcsFile->addError($error, $tag, 'MissingParamType'); - } else { - $error = 'Missing parameter name'; - $phpcsFile->addError($error, $tag, 'MissingParamName'); - }//end if - } else { - $error = 'Missing parameter type'; - $phpcsFile->addError($error, $tag, 'MissingParamType'); - }//end if - - $params[] = [ - 'tag' => $tag, - 'type' => $type, - 'var' => $var, - 'comment' => $comment, - 'commentLines' => $commentLines, - 'type_space' => $typeSpace, - 'var_space' => $varSpace, - ]; - }//end foreach - - $realParams = $phpcsFile->getMethodParameters($stackPtr); - $foundParams = []; - - // We want to use ... for all variable length arguments, so added - // this prefix to the variable name so comparisons are easier. - foreach ($realParams as $pos => $param) { - if ($param['variable_length'] === true) { - $realParams[$pos]['name'] = '...'.$realParams[$pos]['name']; - } - } - - foreach ($params as $pos => $param) { - // If the type is empty, the whole line is empty. - if ($param['type'] === '') { - continue; - } - - // Check the param type value. - $typeNames = explode('|', $param['type']); - $suggestedTypeNames = []; - - foreach ($typeNames as $typeName) { - if ($typeName === '') { - continue; - } - - // Strip nullable operator. - if ($typeName[0] === '?') { - $typeName = substr($typeName, 1); - } - - $suggestedName = Common::suggestType($typeName); - $suggestedTypeNames[] = $suggestedName; - - if (count($typeNames) > 1) { - continue; - } - - // Check type hint for array and custom type. - $suggestedTypeHint = ''; - if (strpos($suggestedName, 'array') !== false || substr($suggestedName, -2) === '[]') { - $suggestedTypeHint = 'array'; - } else if (strpos($suggestedName, 'callable') !== false) { - $suggestedTypeHint = 'callable'; - } else if (strpos($suggestedName, 'callback') !== false) { - $suggestedTypeHint = 'callable'; - } else if (in_array($suggestedName, Common::$allowedTypes, true) === false) { - $suggestedTypeHint = $suggestedName; - } - - if ($this->phpVersion >= 70000) { - if ($suggestedName === 'string') { - $suggestedTypeHint = 'string'; - } else if ($suggestedName === 'int' || $suggestedName === 'integer') { - $suggestedTypeHint = 'int'; - } else if ($suggestedName === 'float') { - $suggestedTypeHint = 'float'; - } else if ($suggestedName === 'bool' || $suggestedName === 'boolean') { - $suggestedTypeHint = 'bool'; - } - } - - if ($this->phpVersion >= 70200) { - if ($suggestedName === 'object') { - $suggestedTypeHint = 'object'; - } - } - - if ($this->phpVersion >= 80000) { - if ($suggestedName === 'mixed') { - $suggestedTypeHint = 'mixed'; - } - } - - if ($suggestedTypeHint !== '' && isset($realParams[$pos]) === true && $param['var'] !== '') { - $typeHint = $realParams[$pos]['type_hint']; - - // Remove namespace prefixes when comparing. - $compareTypeHint = substr($suggestedTypeHint, (strlen($typeHint) * -1)); - - if ($typeHint === '') { - $error = 'Type hint "%s" missing for %s'; - $data = [ - $suggestedTypeHint, - $param['var'], - ]; - - $errorCode = 'TypeHintMissing'; - if ($suggestedTypeHint === 'string' - || $suggestedTypeHint === 'int' - || $suggestedTypeHint === 'float' - || $suggestedTypeHint === 'bool' - ) { - $errorCode = 'Scalar'.$errorCode; - } - - $phpcsFile->addError($error, $stackPtr, $errorCode, $data); - } else if ($typeHint !== $compareTypeHint && $typeHint !== '?'.$compareTypeHint) { - $error = 'Expected type hint "%s"; found "%s" for %s'; - $data = [ - $suggestedTypeHint, - $typeHint, - $param['var'], - ]; - $phpcsFile->addError($error, $stackPtr, 'IncorrectTypeHint', $data); - }//end if - } else if ($suggestedTypeHint === '' && isset($realParams[$pos]) === true) { - $typeHint = $realParams[$pos]['type_hint']; - if ($typeHint !== '') { - $error = 'Unknown type hint "%s" found for %s'; - $data = [ - $typeHint, - $param['var'], - ]; - $phpcsFile->addError($error, $stackPtr, 'InvalidTypeHint', $data); - } - }//end if - }//end foreach - - $suggestedType = implode('|', $suggestedTypeNames); - if ($param['type'] !== $suggestedType) { - $error = 'Expected "%s" but found "%s" for parameter type'; - $data = [ - $suggestedType, - $param['type'], - ]; - - $fix = $phpcsFile->addFixableError($error, $param['tag'], 'IncorrectParamVarName', $data); - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - - $content = $suggestedType; - $content .= str_repeat(' ', $param['type_space']); - $content .= $param['var']; - $content .= str_repeat(' ', $param['var_space']); - if (isset($param['commentLines'][0]) === true) { - $content .= $param['commentLines'][0]['comment']; - } - - $phpcsFile->fixer->replaceToken(($param['tag'] + 2), $content); - - // Fix up the indent of additional comment lines. - foreach ($param['commentLines'] as $lineNum => $line) { - if ($lineNum === 0 - || $param['commentLines'][$lineNum]['indent'] === 0 - ) { - continue; - } - - $diff = (strlen($param['type']) - strlen($suggestedType)); - $newIndent = ($param['commentLines'][$lineNum]['indent'] - $diff); - $phpcsFile->fixer->replaceToken( - ($param['commentLines'][$lineNum]['token'] - 1), - str_repeat(' ', $newIndent) - ); - } - - $phpcsFile->fixer->endChangeset(); - }//end if - }//end if - - if ($param['var'] === '') { - continue; - } - - $foundParams[] = $param['var']; - - // Check number of spaces after the type. - $this->checkSpacingAfterParamType($phpcsFile, $param, $maxType); - - // Make sure the param name is correct. - if (isset($realParams[$pos]) === true) { - $realName = $realParams[$pos]['name']; - $paramVarName = $param['var']; - - if ($param['var'][0] === '&') { - // Even when passed by reference, the variable name in $realParams does not have - // a leading '&'. This sniff will accept both '&$var' and '$var' in these cases. - $paramVarName = substr($param['var'], 1); - - // This makes sure that the 'MissingParamTag' check won't throw a false positive. - $foundParams[(count($foundParams) - 1)] = $paramVarName; - - if ($realParams[$pos]['pass_by_reference'] !== true && $realName === $paramVarName) { - // Don't complain about this unless the param name is otherwise correct. - $error = 'Doc comment for parameter %s is prefixed with "&" but parameter is not passed by reference'; - $code = 'ParamNameUnexpectedAmpersandPrefix'; - $data = [$paramVarName]; - - // We're not offering an auto-fix here because we can't tell if the docblock - // is wrong, or the parameter should be passed by reference. - $phpcsFile->addError($error, $param['tag'], $code, $data); - } - } - - if ($realName !== $paramVarName) { - $code = 'ParamNameNoMatch'; - $data = [ - $paramVarName, - $realName, - ]; - - $error = 'Doc comment for parameter %s does not match '; - if (strtolower($paramVarName) === strtolower($realName)) { - $error .= 'case of '; - $code = 'ParamNameNoCaseMatch'; - } - - $error .= 'actual variable name %s'; - - $phpcsFile->addError($error, $param['tag'], $code, $data); - }//end if - } else if (substr($param['var'], -4) !== ',...') { - // We must have an extra parameter comment. - $error = 'Superfluous parameter comment'; - $phpcsFile->addError($error, $param['tag'], 'ExtraParamComment'); - }//end if - - if ($param['comment'] === '') { - continue; - } - - // Check number of spaces after the var name. - $this->checkSpacingAfterParamName($phpcsFile, $param, $maxVar); - - // Param comments must start with a capital letter and end with a full stop. - if (preg_match('/^(\p{Ll}|\P{L})/u', $param['comment']) === 1) { - $error = 'Parameter comment must start with a capital letter'; - $phpcsFile->addError($error, $param['tag'], 'ParamCommentNotCapital'); - } - - $lastChar = substr($param['comment'], -1); - if ($lastChar !== '.') { - $error = 'Parameter comment must end with a full stop'; - $phpcsFile->addError($error, $param['tag'], 'ParamCommentFullStop'); - } - }//end foreach - - $realNames = []; - foreach ($realParams as $realParam) { - $realNames[] = $realParam['name']; - } - - // Report missing comments. - $diff = array_diff($realNames, $foundParams); - foreach ($diff as $neededParam) { - $error = 'Doc comment for parameter "%s" missing'; - $data = [$neededParam]; - $phpcsFile->addError($error, $commentStart, 'MissingParamTag', $data); - } - - }//end processParams() - - - /** - * Check the spacing after the type of a parameter. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param array $param The parameter to be checked. - * @param int $maxType The maxlength of the longest parameter type. - * @param int $spacing The number of spaces to add after the type. - * - * @return void - */ - protected function checkSpacingAfterParamType(File $phpcsFile, $param, $maxType, $spacing=1) - { - // Check number of spaces after the type. - $spaces = ($maxType - strlen($param['type']) + $spacing); - if ($param['type_space'] !== $spaces) { - $error = 'Expected %s spaces after parameter type; %s found'; - $data = [ - $spaces, - $param['type_space'], - ]; - - $fix = $phpcsFile->addFixableError($error, $param['tag'], 'SpacingAfterParamType', $data); - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - - $content = $param['type']; - $content .= str_repeat(' ', $spaces); - $content .= $param['var']; - $content .= str_repeat(' ', $param['var_space']); - $content .= $param['commentLines'][0]['comment']; - $phpcsFile->fixer->replaceToken(($param['tag'] + 2), $content); - - // Fix up the indent of additional comment lines. - $diff = ($param['type_space'] - $spaces); - foreach ($param['commentLines'] as $lineNum => $line) { - if ($lineNum === 0 - || $param['commentLines'][$lineNum]['indent'] === 0 - ) { - continue; - } - - $newIndent = ($param['commentLines'][$lineNum]['indent'] - $diff); - if ($newIndent <= 0) { - continue; - } - - $phpcsFile->fixer->replaceToken( - ($param['commentLines'][$lineNum]['token'] - 1), - str_repeat(' ', $newIndent) - ); - } - - $phpcsFile->fixer->endChangeset(); - }//end if - }//end if - - }//end checkSpacingAfterParamType() - - - /** - * Check the spacing after the name of a parameter. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param array $param The parameter to be checked. - * @param int $maxVar The maxlength of the longest parameter name. - * @param int $spacing The number of spaces to add after the type. - * - * @return void - */ - protected function checkSpacingAfterParamName(File $phpcsFile, $param, $maxVar, $spacing=1) - { - // Check number of spaces after the var name. - $spaces = ($maxVar - strlen($param['var']) + $spacing); - if ($param['var_space'] !== $spaces) { - $error = 'Expected %s spaces after parameter name; %s found'; - $data = [ - $spaces, - $param['var_space'], - ]; - - $fix = $phpcsFile->addFixableError($error, $param['tag'], 'SpacingAfterParamName', $data); - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - - $content = $param['type']; - $content .= str_repeat(' ', $param['type_space']); - $content .= $param['var']; - $content .= str_repeat(' ', $spaces); - $content .= $param['commentLines'][0]['comment']; - $phpcsFile->fixer->replaceToken(($param['tag'] + 2), $content); - - // Fix up the indent of additional comment lines. - foreach ($param['commentLines'] as $lineNum => $line) { - if ($lineNum === 0 - || $param['commentLines'][$lineNum]['indent'] === 0 - ) { - continue; - } - - $diff = ($param['var_space'] - $spaces); - $newIndent = ($param['commentLines'][$lineNum]['indent'] - $diff); - if ($newIndent <= 0) { - continue; - } - - $phpcsFile->fixer->replaceToken( - ($param['commentLines'][$lineNum]['token'] - 1), - str_repeat(' ', $newIndent) - ); - } - - $phpcsFile->fixer->endChangeset(); - }//end if - }//end if - - }//end checkSpacingAfterParamName() - - - /** - * Determines whether the whole comment is an inheritdoc comment. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * @param int $commentStart The position in the stack where the comment started. - * - * @return boolean TRUE if the docblock contains only {@inheritdoc} (case-insensitive). - */ - protected function checkInheritdoc(File $phpcsFile, $stackPtr, $commentStart) - { - $tokens = $phpcsFile->getTokens(); - - $allowedTokens = [ - T_DOC_COMMENT_OPEN_TAG, - T_DOC_COMMENT_WHITESPACE, - T_DOC_COMMENT_STAR, - ]; - for ($i = $commentStart; $i <= $tokens[$commentStart]['comment_closer']; $i++) { - if (in_array($tokens[$i]['code'], $allowedTokens) === false) { - $trimmedContent = strtolower(trim($tokens[$i]['content'])); - - if ($trimmedContent === '{@inheritdoc}') { - return true; - } else { - return false; - } - } - } - - return false; - - }//end checkInheritdoc() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Commenting/LongConditionClosingCommentSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Commenting/LongConditionClosingCommentSniff.php deleted file mode 100644 index 7c06e429..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Commenting/LongConditionClosingCommentSniff.php +++ /dev/null @@ -1,218 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Sniffs\Commenting; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; - -class LongConditionClosingCommentSniff implements Sniff -{ - - /** - * A list of tokenizers this sniff supports. - * - * @var array - */ - public $supportedTokenizers = [ - 'PHP', - 'JS', - ]; - - /** - * The openers that we are interested in. - * - * @var integer[] - */ - private static $openers = [ - T_SWITCH, - T_IF, - T_FOR, - T_FOREACH, - T_WHILE, - T_TRY, - T_CASE, - T_MATCH, - ]; - - /** - * The length that a code block must be before - * requiring a closing comment. - * - * @var integer - */ - public $lineLimit = 20; - - /** - * The format the end comment should be in. - * - * The placeholder %s will be replaced with the type of condition opener. - * - * @var string - */ - public $commentFormat = '//end %s'; - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [T_CLOSE_CURLY_BRACKET]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in the - * stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - if (isset($tokens[$stackPtr]['scope_condition']) === false) { - // No scope condition. It is a function closer. - return; - } - - $startCondition = $tokens[$tokens[$stackPtr]['scope_condition']]; - $startBrace = $tokens[$tokens[$stackPtr]['scope_opener']]; - $endBrace = $tokens[$stackPtr]; - - // We are only interested in some code blocks. - if (in_array($startCondition['code'], self::$openers, true) === false) { - return; - } - - if ($startCondition['code'] === T_IF) { - // If this is actually an ELSE IF, skip it as the brace - // will be checked by the original IF. - $else = $phpcsFile->findPrevious(T_WHITESPACE, ($tokens[$stackPtr]['scope_condition'] - 1), null, true); - if ($tokens[$else]['code'] === T_ELSE) { - return; - } - - // IF statements that have an ELSE block need to use - // "end if" rather than "end else" or "end elseif". - do { - $nextToken = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true); - if ($tokens[$nextToken]['code'] === T_ELSE || $tokens[$nextToken]['code'] === T_ELSEIF) { - // Check for ELSE IF (2 tokens) as opposed to ELSEIF (1 token). - if ($tokens[$nextToken]['code'] === T_ELSE - && isset($tokens[$nextToken]['scope_closer']) === false - ) { - $nextToken = $phpcsFile->findNext(T_WHITESPACE, ($nextToken + 1), null, true); - if ($tokens[$nextToken]['code'] !== T_IF - || isset($tokens[$nextToken]['scope_closer']) === false - ) { - // Not an ELSE IF or is an inline ELSE IF. - break; - } - } - - if (isset($tokens[$nextToken]['scope_closer']) === false) { - // There isn't going to be anywhere to print the "end if" comment - // because there is no closer. - return; - } - - // The end brace becomes the ELSE's end brace. - $stackPtr = $tokens[$nextToken]['scope_closer']; - $endBrace = $tokens[$stackPtr]; - } else { - break; - }//end if - } while (isset($tokens[$nextToken]['scope_closer']) === true); - }//end if - - if ($startCondition['code'] === T_TRY) { - // TRY statements need to check until the end of all CATCH statements. - do { - $nextToken = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true); - if ($tokens[$nextToken]['code'] === T_CATCH - || $tokens[$nextToken]['code'] === T_FINALLY - ) { - // The end brace becomes the CATCH end brace. - $stackPtr = $tokens[$nextToken]['scope_closer']; - $endBrace = $tokens[$stackPtr]; - } else { - break; - } - } while (isset($tokens[$nextToken]['scope_closer']) === true); - } - - if ($startCondition['code'] === T_MATCH) { - // Move the stackPtr to after the semicolon/comma if there is one. - $nextToken = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true); - if ($nextToken !== false - && ($tokens[$nextToken]['code'] === T_SEMICOLON - || $tokens[$nextToken]['code'] === T_COMMA) - ) { - $stackPtr = $nextToken; - } - } - - $lineDifference = ($endBrace['line'] - $startBrace['line']); - - $expected = sprintf($this->commentFormat, $startCondition['content']); - $comment = $phpcsFile->findNext([T_COMMENT], $stackPtr, null, false); - - if (($comment === false) || ($tokens[$comment]['line'] !== $endBrace['line'])) { - if ($lineDifference >= $this->lineLimit) { - $error = 'End comment for long condition not found; expected "%s"'; - $data = [$expected]; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'Missing', $data); - - if ($fix === true) { - $next = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true); - if ($next !== false && $tokens[$next]['line'] === $tokens[$stackPtr]['line']) { - $expected .= $phpcsFile->eolChar; - } - - $phpcsFile->fixer->addContent($stackPtr, $expected); - } - } - - return; - } - - if (($comment - $stackPtr) !== 1) { - $error = 'Space found before closing comment; expected "%s"'; - $data = [$expected]; - $phpcsFile->addError($error, $stackPtr, 'SpacingBefore', $data); - } - - if (trim($tokens[$comment]['content']) !== $expected) { - $found = trim($tokens[$comment]['content']); - $error = 'Incorrect closing comment; expected "%s" but found "%s"'; - $data = [ - $expected, - $found, - ]; - - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'Invalid', $data); - if ($fix === true) { - $phpcsFile->fixer->replaceToken($comment, $expected.$phpcsFile->eolChar); - } - - return; - } - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Commenting/PostStatementCommentSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Commenting/PostStatementCommentSniff.php deleted file mode 100644 index 82b934a7..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Commenting/PostStatementCommentSniff.php +++ /dev/null @@ -1,129 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Sniffs\Commenting; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; - -class PostStatementCommentSniff implements Sniff -{ - - /** - * A list of tokenizers this sniff supports. - * - * @var array - */ - public $supportedTokenizers = [ - 'PHP', - 'JS', - ]; - - /** - * Exceptions to the rule. - * - * If post statement comments are found within the condition - * parenthesis of these structures, leave them alone. - * - * @var array - */ - private $controlStructureExceptions = [ - T_IF => true, - T_ELSEIF => true, - T_SWITCH => true, - T_WHILE => true, - T_FOR => true, - T_FOREACH => true, - T_MATCH => true, - ]; - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [T_COMMENT]; - - }//end register() - - - /** - * Processes this sniff, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in the - * stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - if (substr($tokens[$stackPtr]['content'], 0, 2) !== '//') { - return; - } - - $commentLine = $tokens[$stackPtr]['line']; - $lastContent = $phpcsFile->findPrevious(T_WHITESPACE, ($stackPtr - 1), null, true); - - if ($lastContent === false - || $tokens[$lastContent]['line'] !== $commentLine - || $tokens[$stackPtr]['column'] === 1 - ) { - return; - } - - if ($tokens[$lastContent]['code'] === T_CLOSE_CURLY_BRACKET) { - return; - } - - // Special case for JS files and PHP closures. - if ($tokens[$lastContent]['code'] === T_COMMA - || $tokens[$lastContent]['code'] === T_SEMICOLON - ) { - $lastContent = $phpcsFile->findPrevious(T_WHITESPACE, ($lastContent - 1), null, true); - if ($lastContent === false || $tokens[$lastContent]['code'] === T_CLOSE_CURLY_BRACKET) { - return; - } - } - - // Special case for (trailing) comments within multi-line control structures. - if (isset($tokens[$stackPtr]['nested_parenthesis']) === true) { - $nestedParens = $tokens[$stackPtr]['nested_parenthesis']; - foreach ($nestedParens as $open => $close) { - if (isset($tokens[$open]['parenthesis_owner']) === true - && isset($this->controlStructureExceptions[$tokens[$tokens[$open]['parenthesis_owner']]['code']]) === true - ) { - return; - } - } - } - - if ($phpcsFile->tokenizerType === 'PHP' - && preg_match('|^//[ \t]*@[^\s]+|', $tokens[$stackPtr]['content']) === 1 - ) { - $error = 'Annotations may not appear after statements'; - $phpcsFile->addError($error, $stackPtr, 'AnnotationFound'); - return; - } - - $error = 'Comments may not appear after statements'; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'Found'); - if ($fix === true) { - $phpcsFile->fixer->addNewlineBefore($stackPtr); - } - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Commenting/VariableCommentSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Commenting/VariableCommentSniff.php deleted file mode 100644 index 61ccbf7a..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Commenting/VariableCommentSniff.php +++ /dev/null @@ -1,201 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Sniffs\Commenting; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\AbstractVariableSniff; -use PHP_CodeSniffer\Util\Common; - -class VariableCommentSniff extends AbstractVariableSniff -{ - - - /** - * Called to process class member vars. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * - * @return void - */ - public function processMemberVar(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - $ignore = [ - T_PUBLIC => T_PUBLIC, - T_PRIVATE => T_PRIVATE, - T_PROTECTED => T_PROTECTED, - T_VAR => T_VAR, - T_STATIC => T_STATIC, - T_READONLY => T_READONLY, - T_WHITESPACE => T_WHITESPACE, - T_STRING => T_STRING, - T_NS_SEPARATOR => T_NS_SEPARATOR, - T_NAMESPACE => T_NAMESPACE, - T_NULLABLE => T_NULLABLE, - T_TYPE_UNION => T_TYPE_UNION, - T_TYPE_INTERSECTION => T_TYPE_INTERSECTION, - T_NULL => T_NULL, - T_TRUE => T_TRUE, - T_FALSE => T_FALSE, - T_SELF => T_SELF, - T_PARENT => T_PARENT, - ]; - - for ($commentEnd = ($stackPtr - 1); $commentEnd >= 0; $commentEnd--) { - if (isset($ignore[$tokens[$commentEnd]['code']]) === true) { - continue; - } - - if ($tokens[$commentEnd]['code'] === T_ATTRIBUTE_END - && isset($tokens[$commentEnd]['attribute_opener']) === true - ) { - $commentEnd = $tokens[$commentEnd]['attribute_opener']; - continue; - } - - break; - } - - if ($commentEnd === false - || ($tokens[$commentEnd]['code'] !== T_DOC_COMMENT_CLOSE_TAG - && $tokens[$commentEnd]['code'] !== T_COMMENT) - ) { - $phpcsFile->addError('Missing member variable doc comment', $stackPtr, 'Missing'); - return; - } - - if ($tokens[$commentEnd]['code'] === T_COMMENT) { - $phpcsFile->addError('You must use "/**" style comments for a member variable comment', $stackPtr, 'WrongStyle'); - return; - } - - $commentStart = $tokens[$commentEnd]['comment_opener']; - - $foundVar = null; - foreach ($tokens[$commentStart]['comment_tags'] as $tag) { - if ($tokens[$tag]['content'] === '@var') { - if ($foundVar !== null) { - $error = 'Only one @var tag is allowed in a member variable comment'; - $phpcsFile->addError($error, $tag, 'DuplicateVar'); - } else { - $foundVar = $tag; - } - } else if ($tokens[$tag]['content'] === '@see') { - // Make sure the tag isn't empty. - $string = $phpcsFile->findNext(T_DOC_COMMENT_STRING, $tag, $commentEnd); - if ($string === false || $tokens[$string]['line'] !== $tokens[$tag]['line']) { - $error = 'Content missing for @see tag in member variable comment'; - $phpcsFile->addError($error, $tag, 'EmptySees'); - } - } else { - $error = '%s tag is not allowed in member variable comment'; - $data = [$tokens[$tag]['content']]; - $phpcsFile->addWarning($error, $tag, 'TagNotAllowed', $data); - }//end if - }//end foreach - - // The @var tag is the only one we require. - if ($foundVar === null) { - $error = 'Missing @var tag in member variable comment'; - $phpcsFile->addError($error, $commentEnd, 'MissingVar'); - return; - } - - $firstTag = $tokens[$commentStart]['comment_tags'][0]; - if ($foundVar !== null && $tokens[$firstTag]['content'] !== '@var') { - $error = 'The @var tag must be the first tag in a member variable comment'; - $phpcsFile->addError($error, $foundVar, 'VarOrder'); - } - - // Make sure the tag isn't empty and has the correct padding. - $string = $phpcsFile->findNext(T_DOC_COMMENT_STRING, $foundVar, $commentEnd); - if ($string === false || $tokens[$string]['line'] !== $tokens[$foundVar]['line']) { - $error = 'Content missing for @var tag in member variable comment'; - $phpcsFile->addError($error, $foundVar, 'EmptyVar'); - return; - } - - // Support both a var type and a description. - preg_match('`^((?:\|?(?:array\([^\)]*\)|[\\\\a-z0-9\[\]]+))*)( .*)?`i', $tokens[($foundVar + 2)]['content'], $varParts); - if (isset($varParts[1]) === false) { - return; - } - - $varType = $varParts[1]; - - // Check var type (can be multiple, separated by '|'). - $typeNames = explode('|', $varType); - $suggestedNames = []; - foreach ($typeNames as $typeName) { - $suggestedName = Common::suggestType($typeName); - if (in_array($suggestedName, $suggestedNames, true) === false) { - $suggestedNames[] = $suggestedName; - } - } - - $suggestedType = implode('|', $suggestedNames); - if ($varType !== $suggestedType) { - $error = 'Expected "%s" but found "%s" for @var tag in member variable comment'; - $data = [ - $suggestedType, - $varType, - ]; - $fix = $phpcsFile->addFixableError($error, $foundVar, 'IncorrectVarType', $data); - if ($fix === true) { - $replacement = $suggestedType; - if (empty($varParts[2]) === false) { - $replacement .= $varParts[2]; - } - - $phpcsFile->fixer->replaceToken(($foundVar + 2), $replacement); - unset($replacement); - } - } - - }//end processMemberVar() - - - /** - * Called to process a normal variable. - * - * Not required for this sniff. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The PHP_CodeSniffer file where this token was found. - * @param int $stackPtr The position where the double quoted - * string was found. - * - * @return void - */ - protected function processVariable(File $phpcsFile, $stackPtr) - { - - }//end processVariable() - - - /** - * Called to process variables found in double quoted strings. - * - * Not required for this sniff. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The PHP_CodeSniffer file where this token was found. - * @param int $stackPtr The position where the double quoted - * string was found. - * - * @return void - */ - protected function processVariableInString(File $phpcsFile, $stackPtr) - { - - }//end processVariableInString() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/ControlStructures/ForEachLoopDeclarationSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/ControlStructures/ForEachLoopDeclarationSniff.php deleted file mode 100644 index 456886b3..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/ControlStructures/ForEachLoopDeclarationSniff.php +++ /dev/null @@ -1,236 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Sniffs\ControlStructures; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; - -class ForEachLoopDeclarationSniff implements Sniff -{ - - /** - * How many spaces should follow the opening bracket. - * - * @var integer - */ - public $requiredSpacesAfterOpen = 0; - - /** - * How many spaces should precede the closing bracket. - * - * @var integer - */ - public $requiredSpacesBeforeClose = 0; - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [T_FOREACH]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in the - * stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - $this->requiredSpacesAfterOpen = (int) $this->requiredSpacesAfterOpen; - $this->requiredSpacesBeforeClose = (int) $this->requiredSpacesBeforeClose; - $tokens = $phpcsFile->getTokens(); - - $openingBracket = $phpcsFile->findNext(T_OPEN_PARENTHESIS, $stackPtr); - if ($openingBracket === false) { - $error = 'Possible parse error: FOREACH has no opening parenthesis'; - $phpcsFile->addWarning($error, $stackPtr, 'MissingOpenParenthesis'); - return; - } - - if (isset($tokens[$openingBracket]['parenthesis_closer']) === false) { - $error = 'Possible parse error: FOREACH has no closing parenthesis'; - $phpcsFile->addWarning($error, $stackPtr, 'MissingCloseParenthesis'); - return; - } - - $closingBracket = $tokens[$openingBracket]['parenthesis_closer']; - - if ($this->requiredSpacesAfterOpen === 0 && $tokens[($openingBracket + 1)]['code'] === T_WHITESPACE) { - $error = 'Space found after opening bracket of FOREACH loop'; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'SpaceAfterOpen'); - if ($fix === true) { - $phpcsFile->fixer->replaceToken(($openingBracket + 1), ''); - } - } else if ($this->requiredSpacesAfterOpen > 0) { - $spaceAfterOpen = 0; - if ($tokens[($openingBracket + 1)]['code'] === T_WHITESPACE) { - $spaceAfterOpen = $tokens[($openingBracket + 1)]['length']; - } - - if ($spaceAfterOpen !== $this->requiredSpacesAfterOpen) { - $error = 'Expected %s spaces after opening bracket; %s found'; - $data = [ - $this->requiredSpacesAfterOpen, - $spaceAfterOpen, - ]; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'SpaceAfterOpen', $data); - if ($fix === true) { - $padding = str_repeat(' ', $this->requiredSpacesAfterOpen); - if ($spaceAfterOpen === 0) { - $phpcsFile->fixer->addContent($openingBracket, $padding); - } else { - $phpcsFile->fixer->replaceToken(($openingBracket + 1), $padding); - } - } - } - }//end if - - if ($this->requiredSpacesBeforeClose === 0 && $tokens[($closingBracket - 1)]['code'] === T_WHITESPACE) { - $error = 'Space found before closing bracket of FOREACH loop'; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'SpaceBeforeClose'); - if ($fix === true) { - $phpcsFile->fixer->replaceToken(($closingBracket - 1), ''); - } - } else if ($this->requiredSpacesBeforeClose > 0) { - $spaceBeforeClose = 0; - if ($tokens[($closingBracket - 1)]['code'] === T_WHITESPACE) { - $spaceBeforeClose = $tokens[($closingBracket - 1)]['length']; - } - - if ($spaceBeforeClose !== $this->requiredSpacesBeforeClose) { - $error = 'Expected %s spaces before closing bracket; %s found'; - $data = [ - $this->requiredSpacesBeforeClose, - $spaceBeforeClose, - ]; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'SpaceBeforeClose', $data); - if ($fix === true) { - $padding = str_repeat(' ', $this->requiredSpacesBeforeClose); - if ($spaceBeforeClose === 0) { - $phpcsFile->fixer->addContentBefore($closingBracket, $padding); - } else { - $phpcsFile->fixer->replaceToken(($closingBracket - 1), $padding); - } - } - } - }//end if - - $asToken = $phpcsFile->findNext(T_AS, $openingBracket); - if ($asToken === false) { - $error = 'Possible parse error: FOREACH has no AS statement'; - $phpcsFile->addWarning($error, $stackPtr, 'MissingAs'); - return; - } - - $content = $tokens[$asToken]['content']; - if ($content !== strtolower($content)) { - $expected = strtolower($content); - $error = 'AS keyword must be lowercase; expected "%s" but found "%s"'; - $data = [ - $expected, - $content, - ]; - - $fix = $phpcsFile->addFixableError($error, $asToken, 'AsNotLower', $data); - if ($fix === true) { - $phpcsFile->fixer->replaceToken($asToken, $expected); - } - } - - $doubleArrow = $phpcsFile->findNext(T_DOUBLE_ARROW, $asToken, $closingBracket); - - if ($doubleArrow !== false) { - if ($tokens[($doubleArrow - 1)]['code'] !== T_WHITESPACE) { - $error = 'Expected 1 space before "=>"; 0 found'; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'NoSpaceBeforeArrow'); - if ($fix === true) { - $phpcsFile->fixer->addContentBefore($doubleArrow, ' '); - } - } else { - if ($tokens[($doubleArrow - 1)]['length'] !== 1) { - $spaces = $tokens[($doubleArrow - 1)]['length']; - $error = 'Expected 1 space before "=>"; %s found'; - $data = [$spaces]; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'SpacingBeforeArrow', $data); - if ($fix === true) { - $phpcsFile->fixer->replaceToken(($doubleArrow - 1), ' '); - } - } - } - - if ($tokens[($doubleArrow + 1)]['code'] !== T_WHITESPACE) { - $error = 'Expected 1 space after "=>"; 0 found'; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'NoSpaceAfterArrow'); - if ($fix === true) { - $phpcsFile->fixer->addContent($doubleArrow, ' '); - } - } else { - if ($tokens[($doubleArrow + 1)]['length'] !== 1) { - $spaces = $tokens[($doubleArrow + 1)]['length']; - $error = 'Expected 1 space after "=>"; %s found'; - $data = [$spaces]; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'SpacingAfterArrow', $data); - if ($fix === true) { - $phpcsFile->fixer->replaceToken(($doubleArrow + 1), ' '); - } - } - } - }//end if - - if ($tokens[($asToken - 1)]['code'] !== T_WHITESPACE) { - $error = 'Expected 1 space before "as"; 0 found'; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'NoSpaceBeforeAs'); - if ($fix === true) { - $phpcsFile->fixer->addContentBefore($asToken, ' '); - } - } else { - if ($tokens[($asToken - 1)]['length'] !== 1) { - $spaces = $tokens[($asToken - 1)]['length']; - $error = 'Expected 1 space before "as"; %s found'; - $data = [$spaces]; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'SpacingBeforeAs', $data); - if ($fix === true) { - $phpcsFile->fixer->replaceToken(($asToken - 1), ' '); - } - } - } - - if ($tokens[($asToken + 1)]['code'] !== T_WHITESPACE) { - $error = 'Expected 1 space after "as"; 0 found'; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'NoSpaceAfterAs'); - if ($fix === true) { - $phpcsFile->fixer->addContent($asToken, ' '); - } - } else { - if ($tokens[($asToken + 1)]['length'] !== 1) { - $spaces = $tokens[($asToken + 1)]['length']; - $error = 'Expected 1 space after "as"; %s found'; - $data = [$spaces]; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'SpacingAfterAs', $data); - if ($fix === true) { - $phpcsFile->fixer->replaceToken(($asToken + 1), ' '); - } - } - } - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/ControlStructures/ForLoopDeclarationSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/ControlStructures/ForLoopDeclarationSniff.php deleted file mode 100644 index 38313e16..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/ControlStructures/ForLoopDeclarationSniff.php +++ /dev/null @@ -1,316 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Sniffs\ControlStructures; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Tokens; - -class ForLoopDeclarationSniff implements Sniff -{ - - /** - * How many spaces should follow the opening bracket. - * - * @var integer - */ - public $requiredSpacesAfterOpen = 0; - - /** - * How many spaces should precede the closing bracket. - * - * @var integer - */ - public $requiredSpacesBeforeClose = 0; - - /** - * Allow newlines instead of spaces. - * - * @var boolean - */ - public $ignoreNewlines = false; - - /** - * A list of tokenizers this sniff supports. - * - * @var array - */ - public $supportedTokenizers = [ - 'PHP', - 'JS', - ]; - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [T_FOR]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in the - * stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - $this->requiredSpacesAfterOpen = (int) $this->requiredSpacesAfterOpen; - $this->requiredSpacesBeforeClose = (int) $this->requiredSpacesBeforeClose; - $tokens = $phpcsFile->getTokens(); - - $openingBracket = $phpcsFile->findNext(T_OPEN_PARENTHESIS, $stackPtr); - if ($openingBracket === false || isset($tokens[$openingBracket]['parenthesis_closer']) === false) { - $error = 'Possible parse error: no opening/closing parenthesis for FOR keyword'; - $phpcsFile->addWarning($error, $stackPtr, 'NoOpenBracket'); - return; - } - - $closingBracket = $tokens[$openingBracket]['parenthesis_closer']; - - if ($this->requiredSpacesAfterOpen === 0 - && $tokens[($openingBracket + 1)]['code'] === T_WHITESPACE - ) { - $nextNonWhiteSpace = $phpcsFile->findNext(T_WHITESPACE, ($openingBracket + 1), $closingBracket, true); - if ($this->ignoreNewlines === false - || $tokens[$nextNonWhiteSpace]['line'] === $tokens[$openingBracket]['line'] - ) { - $error = 'Whitespace found after opening bracket of FOR loop'; - $fix = $phpcsFile->addFixableError($error, $openingBracket, 'SpacingAfterOpen'); - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - for ($i = ($openingBracket + 1); $i < $closingBracket; $i++) { - if ($tokens[$i]['code'] !== T_WHITESPACE) { - break; - } - - $phpcsFile->fixer->replaceToken($i, ''); - } - - $phpcsFile->fixer->endChangeset(); - } - } - } else if ($this->requiredSpacesAfterOpen > 0) { - $nextNonWhiteSpace = $phpcsFile->findNext(T_WHITESPACE, ($openingBracket + 1), $closingBracket, true); - $spaceAfterOpen = 0; - if ($tokens[$openingBracket]['line'] !== $tokens[$nextNonWhiteSpace]['line']) { - $spaceAfterOpen = 'newline'; - } else if ($tokens[($openingBracket + 1)]['code'] === T_WHITESPACE) { - $spaceAfterOpen = $tokens[($openingBracket + 1)]['length']; - } - - if ($spaceAfterOpen !== $this->requiredSpacesAfterOpen - && ($this->ignoreNewlines === false - || $spaceAfterOpen !== 'newline') - ) { - $error = 'Expected %s spaces after opening bracket; %s found'; - $data = [ - $this->requiredSpacesAfterOpen, - $spaceAfterOpen, - ]; - $fix = $phpcsFile->addFixableError($error, $openingBracket, 'SpacingAfterOpen', $data); - if ($fix === true) { - $padding = str_repeat(' ', $this->requiredSpacesAfterOpen); - if ($spaceAfterOpen === 0) { - $phpcsFile->fixer->addContent($openingBracket, $padding); - } else { - $phpcsFile->fixer->beginChangeset(); - $phpcsFile->fixer->replaceToken(($openingBracket + 1), $padding); - for ($i = ($openingBracket + 2); $i < $nextNonWhiteSpace; $i++) { - $phpcsFile->fixer->replaceToken($i, ''); - } - - $phpcsFile->fixer->endChangeset(); - } - } - }//end if - }//end if - - $prevNonWhiteSpace = $phpcsFile->findPrevious(T_WHITESPACE, ($closingBracket - 1), $openingBracket, true); - $beforeClosefixable = true; - if ($tokens[$prevNonWhiteSpace]['line'] !== $tokens[$closingBracket]['line'] - && isset(Tokens::$emptyTokens[$tokens[$prevNonWhiteSpace]['code']]) === true - ) { - $beforeClosefixable = false; - } - - if ($this->requiredSpacesBeforeClose === 0 - && $tokens[($closingBracket - 1)]['code'] === T_WHITESPACE - && ($this->ignoreNewlines === false - || $tokens[$prevNonWhiteSpace]['line'] === $tokens[$closingBracket]['line']) - ) { - $error = 'Whitespace found before closing bracket of FOR loop'; - - if ($beforeClosefixable === false) { - $phpcsFile->addError($error, $closingBracket, 'SpacingBeforeClose'); - } else { - $fix = $phpcsFile->addFixableError($error, $closingBracket, 'SpacingBeforeClose'); - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - for ($i = ($closingBracket - 1); $i > $openingBracket; $i--) { - if ($tokens[$i]['code'] !== T_WHITESPACE) { - break; - } - - $phpcsFile->fixer->replaceToken($i, ''); - } - - $phpcsFile->fixer->endChangeset(); - } - } - } else if ($this->requiredSpacesBeforeClose > 0) { - $spaceBeforeClose = 0; - if ($tokens[$closingBracket]['line'] !== $tokens[$prevNonWhiteSpace]['line']) { - $spaceBeforeClose = 'newline'; - } else if ($tokens[($closingBracket - 1)]['code'] === T_WHITESPACE) { - $spaceBeforeClose = $tokens[($closingBracket - 1)]['length']; - } - - if ($this->requiredSpacesBeforeClose !== $spaceBeforeClose - && ($this->ignoreNewlines === false - || $spaceBeforeClose !== 'newline') - ) { - $error = 'Expected %s spaces before closing bracket; %s found'; - $data = [ - $this->requiredSpacesBeforeClose, - $spaceBeforeClose, - ]; - - if ($beforeClosefixable === false) { - $phpcsFile->addError($error, $closingBracket, 'SpacingBeforeClose', $data); - } else { - $fix = $phpcsFile->addFixableError($error, $closingBracket, 'SpacingBeforeClose', $data); - if ($fix === true) { - $padding = str_repeat(' ', $this->requiredSpacesBeforeClose); - if ($spaceBeforeClose === 0) { - $phpcsFile->fixer->addContentBefore($closingBracket, $padding); - } else { - $phpcsFile->fixer->beginChangeset(); - $phpcsFile->fixer->replaceToken(($closingBracket - 1), $padding); - for ($i = ($closingBracket - 2); $i > $prevNonWhiteSpace; $i--) { - $phpcsFile->fixer->replaceToken($i, ''); - } - - $phpcsFile->fixer->endChangeset(); - } - } - } - }//end if - }//end if - - /* - * Check whitespace around each of the semicolon tokens. - */ - - $semicolonCount = 0; - $semicolon = $openingBracket; - $targetNestinglevel = 0; - if (isset($tokens[$openingBracket]['conditions']) === true) { - $targetNestinglevel = count($tokens[$openingBracket]['conditions']); - } - - do { - $semicolon = $phpcsFile->findNext(T_SEMICOLON, ($semicolon + 1), $closingBracket); - if ($semicolon === false) { - break; - } - - if (isset($tokens[$semicolon]['conditions']) === true - && count($tokens[$semicolon]['conditions']) > $targetNestinglevel - ) { - // Semicolon doesn't belong to the for(). - continue; - } - - ++$semicolonCount; - - $humanReadableCount = 'first'; - if ($semicolonCount !== 1) { - $humanReadableCount = 'second'; - } - - $humanReadableCode = ucfirst($humanReadableCount); - $data = [$humanReadableCount]; - - // Only examine the space before the first semicolon if the first expression is not empty. - // If it *is* empty, leave it up to the `SpacingAfterOpen` logic. - $prevNonWhiteSpace = $phpcsFile->findPrevious(T_WHITESPACE, ($semicolon - 1), $openingBracket, true); - if ($semicolonCount !== 1 || $prevNonWhiteSpace !== $openingBracket) { - if ($tokens[($semicolon - 1)]['code'] === T_WHITESPACE) { - $error = 'Whitespace found before %s semicolon of FOR loop'; - $errorCode = 'SpacingBefore'.$humanReadableCode; - $fix = $phpcsFile->addFixableError($error, $semicolon, $errorCode, $data); - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - for ($i = ($semicolon - 1); $i > $prevNonWhiteSpace; $i--) { - $phpcsFile->fixer->replaceToken($i, ''); - } - - $phpcsFile->fixer->endChangeset(); - } - } - } - - // Only examine the space after the second semicolon if the last expression is not empty. - // If it *is* empty, leave it up to the `SpacingBeforeClose` logic. - $nextNonWhiteSpace = $phpcsFile->findNext(T_WHITESPACE, ($semicolon + 1), ($closingBracket + 1), true); - if ($semicolonCount !== 2 || $nextNonWhiteSpace !== $closingBracket) { - if ($tokens[($semicolon + 1)]['code'] !== T_WHITESPACE - && $tokens[($semicolon + 1)]['code'] !== T_SEMICOLON - ) { - $error = 'Expected 1 space after %s semicolon of FOR loop; 0 found'; - $errorCode = 'NoSpaceAfter'.$humanReadableCode; - $fix = $phpcsFile->addFixableError($error, $semicolon, $errorCode, $data); - if ($fix === true) { - $phpcsFile->fixer->addContent($semicolon, ' '); - } - } else if ($tokens[($semicolon + 1)]['code'] === T_WHITESPACE - && $tokens[$nextNonWhiteSpace]['code'] !== T_SEMICOLON - ) { - $spaces = $tokens[($semicolon + 1)]['length']; - if ($tokens[$semicolon]['line'] !== $tokens[$nextNonWhiteSpace]['line']) { - $spaces = 'newline'; - } - - if ($spaces !== 1 - && ($this->ignoreNewlines === false - || $spaces !== 'newline') - ) { - $error = 'Expected 1 space after %s semicolon of FOR loop; %s found'; - $errorCode = 'SpacingAfter'.$humanReadableCode; - $data[] = $spaces; - $fix = $phpcsFile->addFixableError($error, $semicolon, $errorCode, $data); - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - $phpcsFile->fixer->replaceToken(($semicolon + 1), ' '); - for ($i = ($semicolon + 2); $i < $nextNonWhiteSpace; $i++) { - $phpcsFile->fixer->replaceToken($i, ''); - } - - $phpcsFile->fixer->endChangeset(); - } - } - }//end if - }//end if - } while ($semicolonCount < 2); - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Debug/JSLintSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Debug/JSLintSniff.php deleted file mode 100644 index 652391f1..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Debug/JSLintSniff.php +++ /dev/null @@ -1,88 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - * - * @deprecated 3.9.0 - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Sniffs\Debug; - -use PHP_CodeSniffer\Config; -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Common; - -class JSLintSniff implements Sniff -{ - - /** - * A list of tokenizers this sniff supports. - * - * @var array - */ - public $supportedTokenizers = ['JS']; - - - /** - * Returns the token types that this sniff is interested in. - * - * @return array - */ - public function register() - { - return [T_OPEN_TAG]; - - }//end register() - - - /** - * Processes the tokens that this sniff is interested in. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file where the token was found. - * @param int $stackPtr The position in the stack where - * the token was found. - * - * @return int - * @throws \PHP_CodeSniffer\Exceptions\RuntimeException If jslint.js could not be run. - */ - public function process(File $phpcsFile, $stackPtr) - { - $rhinoPath = Config::getExecutablePath('rhino'); - $jslintPath = Config::getExecutablePath('jslint'); - if ($rhinoPath === null || $jslintPath === null) { - return $phpcsFile->numTokens; - } - - $fileName = $phpcsFile->getFilename(); - - $rhinoPath = Common::escapeshellcmd($rhinoPath); - $jslintPath = Common::escapeshellcmd($jslintPath); - - $cmd = "$rhinoPath \"$jslintPath\" ".escapeshellarg($fileName); - exec($cmd, $output, $retval); - - if (is_array($output) === true) { - foreach ($output as $finding) { - $matches = []; - $numMatches = preg_match('/Lint at line ([0-9]+).*:(.*)$/', $finding, $matches); - if ($numMatches === 0) { - continue; - } - - $line = (int) $matches[1]; - $message = 'jslint says: '.trim($matches[2]); - $phpcsFile->addWarningOnLine($message, $line, 'ExternalTool'); - } - } - - // Ignore the rest of the file. - return $phpcsFile->numTokens; - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Debug/JavaScriptLintSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Debug/JavaScriptLintSniff.php deleted file mode 100644 index 031b2e39..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Debug/JavaScriptLintSniff.php +++ /dev/null @@ -1,91 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - * - * @deprecated 3.9.0 - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Sniffs\Debug; - -use PHP_CodeSniffer\Config; -use PHP_CodeSniffer\Exceptions\RuntimeException; -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Common; - -class JavaScriptLintSniff implements Sniff -{ - - /** - * A list of tokenizers this sniff supports. - * - * @var array - */ - public $supportedTokenizers = ['JS']; - - - /** - * Returns the token types that this sniff is interested in. - * - * @return array - */ - public function register() - { - return [T_OPEN_TAG]; - - }//end register() - - - /** - * Processes the tokens that this sniff is interested in. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file where the token was found. - * @param int $stackPtr The position in the stack where - * the token was found. - * - * @return int - * @throws \PHP_CodeSniffer\Exceptions\RuntimeException If Javascript Lint ran into trouble. - */ - public function process(File $phpcsFile, $stackPtr) - { - $jslPath = Config::getExecutablePath('jsl'); - if ($jslPath === null) { - return $phpcsFile->numTokens; - } - - $fileName = $phpcsFile->getFilename(); - - $cmd = '"'.Common::escapeshellcmd($jslPath).'" -nologo -nofilelisting -nocontext -nosummary -output-format __LINE__:__ERROR__ -process '.escapeshellarg($fileName); - $msg = exec($cmd, $output, $retval); - - // Variable $exitCode is the last line of $output if no error occurs, on - // error it is numeric. Try to handle various error conditions and - // provide useful error reporting. - if ($retval === 2 || $retval === 4) { - if (is_array($output) === true) { - $msg = implode('\n', $output); - } - - throw new RuntimeException("Failed invoking JavaScript Lint, retval was [$retval], output was [$msg]"); - } - - if (is_array($output) === true) { - foreach ($output as $finding) { - $split = strpos($finding, ':'); - $line = substr($finding, 0, $split); - $message = substr($finding, ($split + 1)); - $phpcsFile->addWarningOnLine(trim($message), $line, 'ExternalTool'); - } - } - - // Ignore the rest of the file. - return $phpcsFile->numTokens; - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Files/FileExtensionSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Files/FileExtensionSniff.php deleted file mode 100644 index aceecffd..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Files/FileExtensionSniff.php +++ /dev/null @@ -1,68 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Sniffs\Files; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; - -class FileExtensionSniff implements Sniff -{ - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [T_OPEN_TAG]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in the - * stack passed in $tokens. - * - * @return int - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - $fileName = $phpcsFile->getFilename(); - $extension = substr($fileName, strrpos($fileName, '.')); - $nextClass = $phpcsFile->findNext([T_CLASS, T_INTERFACE, T_TRAIT, T_ENUM], $stackPtr); - - if ($nextClass !== false) { - $phpcsFile->recordMetric($stackPtr, 'File extension for class files', $extension); - if ($extension === '.php') { - $error = '%s found in ".php" file; use ".inc" extension instead'; - $data = [ucfirst($tokens[$nextClass]['content'])]; - $phpcsFile->addError($error, $stackPtr, 'ClassFound', $data); - } - } else { - $phpcsFile->recordMetric($stackPtr, 'File extension for non-class files', $extension); - if ($extension === '.inc') { - $error = 'No interface or class found in ".inc" file; use ".php" extension instead'; - $phpcsFile->addError($error, $stackPtr, 'NoClass'); - } - } - - // Ignore the rest of the file. - return $phpcsFile->numTokens; - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Formatting/OperatorBracketSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Formatting/OperatorBracketSniff.php deleted file mode 100644 index 44429012..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Formatting/OperatorBracketSniff.php +++ /dev/null @@ -1,402 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Sniffs\Formatting; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Tokens; - -class OperatorBracketSniff implements Sniff -{ - - /** - * A list of tokenizers this sniff supports. - * - * @var array - */ - public $supportedTokenizers = [ - 'PHP', - 'JS', - ]; - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return Tokens::$operators; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in the - * stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - if ($phpcsFile->tokenizerType === 'JS' && $tokens[$stackPtr]['code'] === T_PLUS) { - // JavaScript uses the plus operator for string concatenation as well - // so we cannot accurately determine if it is a string concat or addition. - // So just ignore it. - return; - } - - // If the & is a reference, then we don't want to check for brackets. - if ($tokens[$stackPtr]['code'] === T_BITWISE_AND && $phpcsFile->isReference($stackPtr) === true) { - return; - } - - // There is one instance where brackets aren't needed, which involves - // the minus sign being used to assign a negative number to a variable. - if ($tokens[$stackPtr]['code'] === T_MINUS) { - // Check to see if we are trying to return -n. - $prev = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($stackPtr - 1), null, true); - if ($tokens[$prev]['code'] === T_RETURN) { - return; - } - - $number = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true); - if ($tokens[$number]['code'] === T_LNUMBER || $tokens[$number]['code'] === T_DNUMBER) { - $previous = $phpcsFile->findPrevious(T_WHITESPACE, ($stackPtr - 1), null, true); - if ($previous !== false) { - $isAssignment = isset(Tokens::$assignmentTokens[$tokens[$previous]['code']]); - $isEquality = isset(Tokens::$equalityTokens[$tokens[$previous]['code']]); - $isComparison = isset(Tokens::$comparisonTokens[$tokens[$previous]['code']]); - $isUnary = isset(Tokens::$operators[$tokens[$previous]['code']]); - if ($isAssignment === true || $isEquality === true || $isComparison === true || $isUnary === true) { - // This is a negative assignment or comparison. - // We need to check that the minus and the number are - // adjacent. - if (($number - $stackPtr) !== 1) { - $error = 'No space allowed between minus sign and number'; - $phpcsFile->addError($error, $stackPtr, 'SpacingAfterMinus'); - } - - return; - } - } - } - }//end if - - $previousToken = $phpcsFile->findPrevious(T_WHITESPACE, ($stackPtr - 1), null, true, null, true); - if ($previousToken !== false) { - // A list of tokens that indicate that the token is not - // part of an arithmetic operation. - $invalidTokens = [ - T_COMMA => true, - T_COLON => true, - T_OPEN_PARENTHESIS => true, - T_OPEN_SQUARE_BRACKET => true, - T_OPEN_CURLY_BRACKET => true, - T_OPEN_SHORT_ARRAY => true, - T_CASE => true, - T_EXIT => true, - T_MATCH_ARROW => true, - ]; - - if (isset($invalidTokens[$tokens[$previousToken]['code']]) === true) { - return; - } - } - - if ($tokens[$stackPtr]['code'] === T_BITWISE_OR - && isset($tokens[$stackPtr]['nested_parenthesis']) === true - ) { - $brackets = $tokens[$stackPtr]['nested_parenthesis']; - $lastBracket = array_pop($brackets); - if (isset($tokens[$lastBracket]['parenthesis_owner']) === true - && $tokens[$tokens[$lastBracket]['parenthesis_owner']]['code'] === T_CATCH - ) { - // This is a pipe character inside a catch statement, so it is acting - // as an exception type separator and not an arithmetic operation. - return; - } - } - - // Tokens that are allowed inside a bracketed operation. - $allowed = [ - T_VARIABLE, - T_LNUMBER, - T_DNUMBER, - T_STRING, - T_WHITESPACE, - T_NS_SEPARATOR, - T_THIS, - T_SELF, - T_STATIC, - T_PARENT, - T_OBJECT_OPERATOR, - T_NULLSAFE_OBJECT_OPERATOR, - T_DOUBLE_COLON, - T_OPEN_SQUARE_BRACKET, - T_CLOSE_SQUARE_BRACKET, - T_MODULUS, - T_NONE, - T_BITWISE_NOT, - ]; - - $allowed += Tokens::$operators; - - $lastBracket = false; - if (isset($tokens[$stackPtr]['nested_parenthesis']) === true) { - $parenthesis = array_reverse($tokens[$stackPtr]['nested_parenthesis'], true); - foreach ($parenthesis as $bracket => $endBracket) { - $prevToken = $phpcsFile->findPrevious(T_WHITESPACE, ($bracket - 1), null, true); - $prevCode = $tokens[$prevToken]['code']; - - if ($prevCode === T_ISSET) { - // This operation is inside an isset() call, but has - // no bracket of it's own. - break; - } - - if ($prevCode === T_STRING || $prevCode === T_SWITCH || $prevCode === T_MATCH) { - // We allow simple operations to not be bracketed. - // For example, ceil($one / $two). - for ($prev = ($stackPtr - 1); $prev > $bracket; $prev--) { - if (in_array($tokens[$prev]['code'], $allowed, true) === true) { - continue; - } - - if ($tokens[$prev]['code'] === T_CLOSE_PARENTHESIS) { - $prev = $tokens[$prev]['parenthesis_opener']; - } else { - break; - } - } - - if ($prev !== $bracket) { - break; - } - - for ($next = ($stackPtr + 1); $next < $endBracket; $next++) { - if (in_array($tokens[$next]['code'], $allowed, true) === true) { - continue; - } - - if ($tokens[$next]['code'] === T_OPEN_PARENTHESIS) { - $next = $tokens[$next]['parenthesis_closer']; - } else { - break; - } - } - - if ($next !== $endBracket) { - break; - } - }//end if - - if (in_array($prevCode, Tokens::$scopeOpeners, true) === true) { - // This operation is inside a control structure like FOREACH - // or IF, but has no bracket of it's own. - // The only control structures allowed to do this are SWITCH and MATCH. - if ($prevCode !== T_SWITCH && $prevCode !== T_MATCH) { - break; - } - } - - if ($prevCode === T_OPEN_PARENTHESIS) { - // These are two open parenthesis in a row. If the current - // one doesn't enclose the operator, go to the previous one. - if ($endBracket < $stackPtr) { - continue; - } - } - - $lastBracket = $bracket; - break; - }//end foreach - }//end if - - if ($lastBracket === false) { - // It is not in a bracketed statement at all. - $this->addMissingBracketsError($phpcsFile, $stackPtr); - return; - } else if ($tokens[$lastBracket]['parenthesis_closer'] < $stackPtr) { - // There are a set of brackets in front of it that don't include it. - $this->addMissingBracketsError($phpcsFile, $stackPtr); - return; - } else { - // We are enclosed in a set of bracket, so the last thing to - // check is that we are not also enclosed in square brackets - // like this: ($array[$index + 1]), which is invalid. - $brackets = [ - T_OPEN_SQUARE_BRACKET, - T_CLOSE_SQUARE_BRACKET, - ]; - - $squareBracket = $phpcsFile->findPrevious($brackets, ($stackPtr - 1), $lastBracket); - if ($squareBracket !== false && $tokens[$squareBracket]['code'] === T_OPEN_SQUARE_BRACKET) { - $closeSquareBracket = $phpcsFile->findNext($brackets, ($stackPtr + 1)); - if ($closeSquareBracket !== false && $tokens[$closeSquareBracket]['code'] === T_CLOSE_SQUARE_BRACKET) { - $this->addMissingBracketsError($phpcsFile, $stackPtr); - } - } - - return; - }//end if - - $lastAssignment = $phpcsFile->findPrevious(Tokens::$assignmentTokens, $stackPtr, null, false, null, true); - if ($lastAssignment !== false && $lastAssignment > $lastBracket) { - $this->addMissingBracketsError($phpcsFile, $stackPtr); - } - - }//end process() - - - /** - * Add and fix the missing brackets error. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in the - * stack passed in $tokens. - * - * @return void - */ - public function addMissingBracketsError($phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - $allowed = [ - T_VARIABLE => true, - T_LNUMBER => true, - T_DNUMBER => true, - T_STRING => true, - T_CONSTANT_ENCAPSED_STRING => true, - T_DOUBLE_QUOTED_STRING => true, - T_WHITESPACE => true, - T_NS_SEPARATOR => true, - T_THIS => true, - T_SELF => true, - T_STATIC => true, - T_OBJECT_OPERATOR => true, - T_NULLSAFE_OBJECT_OPERATOR => true, - T_DOUBLE_COLON => true, - T_MODULUS => true, - T_ISSET => true, - T_ARRAY => true, - T_NONE => true, - T_BITWISE_NOT => true, - ]; - - // Find the first token in the expression. - for ($before = ($stackPtr - 1); $before > 0; $before--) { - // Special case for plus operators because we can't tell if they are used - // for addition or string contact. So assume string concat to be safe. - if ($phpcsFile->tokenizerType === 'JS' && $tokens[$before]['code'] === T_PLUS) { - break; - } - - if (isset(Tokens::$emptyTokens[$tokens[$before]['code']]) === true - || isset(Tokens::$operators[$tokens[$before]['code']]) === true - || isset(Tokens::$castTokens[$tokens[$before]['code']]) === true - || isset($allowed[$tokens[$before]['code']]) === true - ) { - continue; - } - - if ($tokens[$before]['code'] === T_CLOSE_PARENTHESIS) { - $before = $tokens[$before]['parenthesis_opener']; - continue; - } - - if ($tokens[$before]['code'] === T_CLOSE_SQUARE_BRACKET) { - $before = $tokens[$before]['bracket_opener']; - continue; - } - - if ($tokens[$before]['code'] === T_CLOSE_SHORT_ARRAY) { - $before = $tokens[$before]['bracket_opener']; - continue; - } - - break; - }//end for - - $before = $phpcsFile->findNext(Tokens::$emptyTokens, ($before + 1), null, true); - - // A few extra tokens are allowed to be on the right side of the expression. - $allowed[T_EQUAL] = true; - $allowed[T_NEW] = true; - - // Find the last token in the expression. - for ($after = ($stackPtr + 1); $after < $phpcsFile->numTokens; $after++) { - // Special case for plus operators because we can't tell if they are used - // for addition or string concat. So assume string concat to be safe. - if ($phpcsFile->tokenizerType === 'JS' && $tokens[$after]['code'] === T_PLUS) { - break; - } - - if (isset(Tokens::$emptyTokens[$tokens[$after]['code']]) === true - || isset(Tokens::$operators[$tokens[$after]['code']]) === true - || isset(Tokens::$castTokens[$tokens[$after]['code']]) === true - || isset($allowed[$tokens[$after]['code']]) === true - ) { - continue; - } - - if ($tokens[$after]['code'] === T_OPEN_PARENTHESIS) { - if (isset($tokens[$after]['parenthesis_closer']) === false) { - // Live coding/parse error. Ignore. - return; - } - - $after = $tokens[$after]['parenthesis_closer']; - continue; - } - - if (($tokens[$after]['code'] === T_OPEN_SQUARE_BRACKET - || $tokens[$after]['code'] === T_OPEN_SHORT_ARRAY) - ) { - if (isset($tokens[$after]['bracket_closer']) === false) { - // Live coding/parse error. Ignore. - return; - } - - $after = $tokens[$after]['bracket_closer']; - continue; - } - - break; - }//end for - - $after = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($after - 1), null, true); - - $error = 'Operation must be bracketed'; - if ($before === $after || $before === $stackPtr || $after === $stackPtr) { - $phpcsFile->addError($error, $stackPtr, 'MissingBrackets'); - return; - } - - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'MissingBrackets'); - if ($fix === true) { - // Can only fix this error if both tokens are available for fixing. - // Adding one bracket without the other will create parse errors. - $phpcsFile->fixer->beginChangeset(); - $phpcsFile->fixer->replaceToken($before, '('.$tokens[$before]['content']); - $phpcsFile->fixer->replaceToken($after, $tokens[$after]['content'].')'); - $phpcsFile->fixer->endChangeset(); - } - - }//end addMissingBracketsError() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Functions/MultiLineFunctionDeclarationSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Functions/MultiLineFunctionDeclarationSniff.php deleted file mode 100644 index e88d5c9a..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Functions/MultiLineFunctionDeclarationSniff.php +++ /dev/null @@ -1,262 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Sniffs\Functions; - -use PHP_CodeSniffer\Standards\PEAR\Sniffs\Functions\FunctionDeclarationSniff as PEARFunctionDeclarationSniff; -use PHP_CodeSniffer\Util\Tokens; - -class MultiLineFunctionDeclarationSniff extends PEARFunctionDeclarationSniff -{ - - /** - * A list of tokenizers this sniff supports. - * - * @var array - */ - public $supportedTokenizers = [ - 'PHP', - 'JS', - ]; - - - /** - * Determine if this is a multi-line function declaration. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * @param int $openBracket The position of the opening bracket - * in the stack passed in $tokens. - * @param array $tokens The stack of tokens that make up - * the file. - * - * @return bool - */ - public function isMultiLineDeclaration($phpcsFile, $stackPtr, $openBracket, $tokens) - { - $bracketsToCheck = [$stackPtr => $openBracket]; - - // Closures may use the USE keyword and so be multi-line in this way. - if ($tokens[$stackPtr]['code'] === T_CLOSURE) { - $use = $phpcsFile->findNext(T_USE, ($tokens[$openBracket]['parenthesis_closer'] + 1), $tokens[$stackPtr]['scope_opener']); - if ($use !== false) { - $open = $phpcsFile->findNext(T_OPEN_PARENTHESIS, ($use + 1)); - if ($open !== false) { - $bracketsToCheck[$use] = $open; - } - } - } - - foreach ($bracketsToCheck as $stackPtr => $openBracket) { - // If the first argument is on a new line, this is a multi-line - // function declaration, even if there is only one argument. - $next = $phpcsFile->findNext(Tokens::$emptyTokens, ($openBracket + 1), null, true); - if ($tokens[$next]['line'] !== $tokens[$stackPtr]['line']) { - return true; - } - - $closeBracket = $tokens[$openBracket]['parenthesis_closer']; - - $end = $phpcsFile->findEndOfStatement($openBracket + 1); - while ($tokens[$end]['code'] === T_COMMA) { - // If the next bit of code is not on the same line, this is a - // multi-line function declaration. - $next = $phpcsFile->findNext(Tokens::$emptyTokens, ($end + 1), $closeBracket, true); - if ($next === false) { - continue(2); - } - - if ($tokens[$next]['line'] !== $tokens[$end]['line']) { - return true; - } - - $end = $phpcsFile->findEndOfStatement($next); - } - - // We've reached the last argument, so see if the next content - // (should be the close bracket) is also on the same line. - $next = $phpcsFile->findNext(Tokens::$emptyTokens, ($end + 1), $closeBracket, true); - if ($next !== false && $tokens[$next]['line'] !== $tokens[$end]['line']) { - return true; - } - }//end foreach - - return false; - - }//end isMultiLineDeclaration() - - - /** - * Processes single-line declarations. - * - * Just uses the Generic BSD-Allman brace sniff. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * @param array $tokens The stack of tokens that make up - * the file. - * - * @return void - */ - public function processSingleLineDeclaration($phpcsFile, $stackPtr, $tokens) - { - // We do everything the parent sniff does, and a bit more because we - // define multi-line declarations a bit differently. - parent::processSingleLineDeclaration($phpcsFile, $stackPtr, $tokens); - - $openingBracket = $tokens[$stackPtr]['parenthesis_opener']; - $closingBracket = $tokens[$stackPtr]['parenthesis_closer']; - - $prevNonWhiteSpace = $phpcsFile->findPrevious(T_WHITESPACE, ($closingBracket - 1), $openingBracket, true); - if ($tokens[$prevNonWhiteSpace]['line'] !== $tokens[$closingBracket]['line']) { - $error = 'There must not be a newline before the closing parenthesis of a single-line function declaration'; - - if (isset(Tokens::$emptyTokens[$tokens[$prevNonWhiteSpace]['code']]) === true) { - $phpcsFile->addError($error, $closingBracket, 'CloseBracketNewLine'); - } else { - $fix = $phpcsFile->addFixableError($error, $closingBracket, 'CloseBracketNewLine'); - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - for ($i = ($closingBracket - 1); $i > $openingBracket; $i--) { - if ($tokens[$i]['code'] !== T_WHITESPACE) { - break; - } - - $phpcsFile->fixer->replaceToken($i, ''); - } - - $phpcsFile->fixer->endChangeset(); - } - } - }//end if - - }//end processSingleLineDeclaration() - - - /** - * Processes multi-line declarations. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * @param array $tokens The stack of tokens that make up - * the file. - * - * @return void - */ - public function processMultiLineDeclaration($phpcsFile, $stackPtr, $tokens) - { - // We do everything the parent sniff does, and a bit more. - parent::processMultiLineDeclaration($phpcsFile, $stackPtr, $tokens); - - $openBracket = $tokens[$stackPtr]['parenthesis_opener']; - $this->processBracket($phpcsFile, $openBracket, $tokens, 'function'); - - if ($tokens[$stackPtr]['code'] !== T_CLOSURE) { - return; - } - - $use = $phpcsFile->findNext(T_USE, ($tokens[$stackPtr]['parenthesis_closer'] + 1), $tokens[$stackPtr]['scope_opener']); - if ($use === false) { - return; - } - - $openBracket = $phpcsFile->findNext(T_OPEN_PARENTHESIS, ($use + 1), null); - $this->processBracket($phpcsFile, $openBracket, $tokens, 'use'); - - }//end processMultiLineDeclaration() - - - /** - * Processes the contents of a single set of brackets. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $openBracket The position of the open bracket - * in the stack passed in $tokens. - * @param array $tokens The stack of tokens that make up - * the file. - * @param string $type The type of the token the brackets - * belong to (function or use). - * - * @return void - */ - public function processBracket($phpcsFile, $openBracket, $tokens, $type='function') - { - $errorPrefix = ''; - if ($type === 'use') { - $errorPrefix = 'Use'; - } - - $closeBracket = $tokens[$openBracket]['parenthesis_closer']; - - // The open bracket should be the last thing on the line. - if ($tokens[$openBracket]['line'] !== $tokens[$closeBracket]['line']) { - $next = $phpcsFile->findNext(Tokens::$emptyTokens, ($openBracket + 1), null, true); - if ($tokens[$next]['line'] === $tokens[$openBracket]['line']) { - $error = 'The first parameter of a multi-line '.$type.' declaration must be on the line after the opening bracket'; - $fix = $phpcsFile->addFixableError($error, $next, $errorPrefix.'FirstParamSpacing'); - if ($fix === true) { - if ($tokens[$next]['line'] === $tokens[$openBracket]['line']) { - $phpcsFile->fixer->addNewline($openBracket); - } else { - $phpcsFile->fixer->beginChangeset(); - for ($x = $openBracket; $x < $next; $x++) { - if ($tokens[$x]['line'] === $tokens[$openBracket]['line']) { - continue; - } - - if ($tokens[$x]['line'] === $tokens[$next]['line']) { - break; - } - } - - $phpcsFile->fixer->endChangeset(); - } - } - }//end if - }//end if - - // Each line between the brackets should contain a single parameter. - for ($i = ($openBracket + 1); $i < $closeBracket; $i++) { - // Skip brackets, like arrays, as they can contain commas. - if (isset($tokens[$i]['bracket_closer']) === true) { - $i = $tokens[$i]['bracket_closer']; - continue; - } - - if (isset($tokens[$i]['parenthesis_closer']) === true) { - $i = $tokens[$i]['parenthesis_closer']; - continue; - } - - if (isset($tokens[$i]['attribute_closer']) === true) { - $i = $tokens[$i]['attribute_closer']; - continue; - } - - if ($tokens[$i]['code'] !== T_COMMA) { - continue; - } - - $next = $phpcsFile->findNext(Tokens::$emptyTokens, ($i + 1), null, true); - if ($tokens[$next]['line'] === $tokens[$i]['line']) { - $error = 'Multi-line '.$type.' declarations must define one parameter per line'; - $fix = $phpcsFile->addFixableError($error, $next, $errorPrefix.'OneParamPerLine'); - if ($fix === true) { - $phpcsFile->fixer->addNewline($i); - } - } - }//end for - - }//end processBracket() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/PHP/CommentedOutCodeSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/PHP/CommentedOutCodeSniff.php deleted file mode 100644 index c8e1a403..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/PHP/CommentedOutCodeSniff.php +++ /dev/null @@ -1,283 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Sniffs\PHP; - -use PHP_CodeSniffer\Exceptions\TokenizerException; -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Tokens; - -class CommentedOutCodeSniff implements Sniff -{ - - /** - * A list of tokenizers this sniff supports. - * - * @var array - */ - public $supportedTokenizers = [ - 'PHP', - 'CSS', - ]; - - /** - * If a comment is more than $maxPercentage% code, a warning will be shown. - * - * @var integer - */ - public $maxPercentage = 35; - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [T_COMMENT]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * - * @return int|void Integer stack pointer to skip forward or void to continue - * normal file processing. - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - // Ignore comments at the end of code blocks. - if (substr($tokens[$stackPtr]['content'], 0, 6) === '//end ') { - return; - } - - $content = ''; - $lastLineSeen = $tokens[$stackPtr]['line']; - $commentStyle = 'line'; - if (strpos($tokens[$stackPtr]['content'], '/*') === 0) { - $commentStyle = 'block'; - } - - $lastCommentBlockToken = $stackPtr; - for ($i = $stackPtr; $i < $phpcsFile->numTokens; $i++) { - if (isset(Tokens::$emptyTokens[$tokens[$i]['code']]) === false) { - break; - } - - if ($tokens[$i]['code'] === T_WHITESPACE) { - continue; - } - - if (isset(Tokens::$phpcsCommentTokens[$tokens[$i]['code']]) === true) { - $lastLineSeen = $tokens[$i]['line']; - continue; - } - - if ($commentStyle === 'line' - && ($lastLineSeen + 1) <= $tokens[$i]['line'] - && strpos($tokens[$i]['content'], '/*') === 0 - ) { - // First non-whitespace token on a new line is start of a different style comment. - break; - } - - if ($commentStyle === 'line' - && ($lastLineSeen + 1) < $tokens[$i]['line'] - ) { - // Blank line breaks a '//' style comment block. - break; - } - - /* - Trim as much off the comment as possible so we don't - have additional whitespace tokens or comment tokens - */ - - $tokenContent = trim($tokens[$i]['content']); - $break = false; - - if ($commentStyle === 'line') { - if (substr($tokenContent, 0, 2) === '//') { - $tokenContent = substr($tokenContent, 2); - } - - if (substr($tokenContent, 0, 1) === '#') { - $tokenContent = substr($tokenContent, 1); - } - } else { - if (substr($tokenContent, 0, 3) === '/**') { - $tokenContent = substr($tokenContent, 3); - } - - if (substr($tokenContent, 0, 2) === '/*') { - $tokenContent = substr($tokenContent, 2); - } - - if (substr($tokenContent, -2) === '*/') { - $tokenContent = substr($tokenContent, 0, -2); - $break = true; - } - - if (substr($tokenContent, 0, 1) === '*') { - $tokenContent = substr($tokenContent, 1); - } - }//end if - - $content .= $tokenContent.$phpcsFile->eolChar; - $lastLineSeen = $tokens[$i]['line']; - - $lastCommentBlockToken = $i; - - if ($break === true) { - // Closer of a block comment found. - break; - } - }//end for - - // Ignore typical warning suppression annotations from other tools. - if (preg_match('`^\s*@[A-Za-z()\._-]+\s*$`', $content) === 1) { - return ($lastCommentBlockToken + 1); - } - - // Quite a few comments use multiple dashes, equals signs etc - // to frame comments and licence headers. - $content = preg_replace('/[-=#*]{2,}/', '-', $content); - - // Random numbers sitting inside the content can throw parse errors - // for invalid literals in PHP7+, so strip those. - $content = preg_replace('/\d+/', '', $content); - - $content = trim($content); - - if ($content === '') { - return ($lastCommentBlockToken + 1); - } - - if ($phpcsFile->tokenizerType === 'PHP') { - $content = ''; - } - - // Because we are not really parsing code, the tokenizer can throw all sorts - // of errors that don't mean anything, so ignore them. - $oldErrors = ini_get('error_reporting'); - ini_set('error_reporting', 0); - try { - $tokenizerClass = get_class($phpcsFile->tokenizer); - $tokenizer = new $tokenizerClass($content, $phpcsFile->config, $phpcsFile->eolChar); - $stringTokens = $tokenizer->getTokens(); - } catch (TokenizerException $e) { - // We couldn't check the comment, so ignore it. - ini_set('error_reporting', $oldErrors); - return ($lastCommentBlockToken + 1); - } - - ini_set('error_reporting', $oldErrors); - - $numTokens = count($stringTokens); - - /* - We know what the first two and last two tokens should be - (because we put them there) so ignore this comment if those - tokens were not parsed correctly. It obviously means this is not - valid code. - */ - - // First token is always the opening tag. - if ($stringTokens[0]['code'] !== T_OPEN_TAG) { - return ($lastCommentBlockToken + 1); - } else { - array_shift($stringTokens); - --$numTokens; - } - - // Last token is always the closing tag, unless something went wrong. - if (isset($stringTokens[($numTokens - 1)]) === false - || $stringTokens[($numTokens - 1)]['code'] !== T_CLOSE_TAG - ) { - return ($lastCommentBlockToken + 1); - } else { - array_pop($stringTokens); - --$numTokens; - } - - // Second last token is always whitespace or a comment, depending - // on the code inside the comment. - if ($phpcsFile->tokenizerType === 'PHP') { - if (isset(Tokens::$emptyTokens[$stringTokens[($numTokens - 1)]['code']]) === false) { - return ($lastCommentBlockToken + 1); - } - - if ($stringTokens[($numTokens - 1)]['code'] === T_WHITESPACE) { - array_pop($stringTokens); - --$numTokens; - } - } - - $emptyTokens = [ - T_WHITESPACE => true, - T_STRING => true, - T_STRING_CONCAT => true, - T_ENCAPSED_AND_WHITESPACE => true, - T_NONE => true, - T_COMMENT => true, - ]; - $emptyTokens += Tokens::$phpcsCommentTokens; - - $numCode = 0; - $numNonWhitespace = 0; - - for ($i = 0; $i < $numTokens; $i++) { - // Do not count comments. - if (isset($emptyTokens[$stringTokens[$i]['code']]) === false - // Commented out HTML/XML and other docs contain a lot of these - // characters, so it is best to not use them directly. - && isset(Tokens::$comparisonTokens[$stringTokens[$i]['code']]) === false - && isset(Tokens::$arithmeticTokens[$stringTokens[$i]['code']]) === false - && $stringTokens[$i]['code'] !== T_GOTO_LABEL - ) { - // Looks like code. - $numCode++; - } - - if ($stringTokens[$i]['code'] !== T_WHITESPACE) { - ++$numNonWhitespace; - } - } - - // Ignore comments with only two or less non-whitespace tokens. - // Sample size too small for a reliably determination. - if ($numNonWhitespace <= 2) { - return ($lastCommentBlockToken + 1); - } - - $percentCode = ceil((($numCode / $numTokens) * 100)); - if ($percentCode > $this->maxPercentage) { - // Just in case. - $percentCode = min(100, $percentCode); - - $error = 'This comment is %s%% valid code; is this commented out code?'; - $data = [$percentCode]; - $phpcsFile->addWarning($error, $stackPtr, 'Found', $data); - } - - return ($lastCommentBlockToken + 1); - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/PHP/DisallowMultipleAssignmentsSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/PHP/DisallowMultipleAssignmentsSniff.php deleted file mode 100644 index 2a953b46..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/PHP/DisallowMultipleAssignmentsSniff.php +++ /dev/null @@ -1,196 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Sniffs\PHP; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Tokens; - -class DisallowMultipleAssignmentsSniff implements Sniff -{ - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [T_EQUAL]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in the - * stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - // Ignore default value assignments in function definitions. - $function = $phpcsFile->findPrevious([T_FUNCTION, T_CLOSURE, T_FN], ($stackPtr - 1), null, false, null, true); - if ($function !== false) { - if (isset($tokens[$function]['parenthesis_closer']) === false) { - // Live coding/parse error. Bow out. - return; - } - - $opener = $tokens[$function]['parenthesis_opener']; - $closer = $tokens[$function]['parenthesis_closer']; - if ($opener < $stackPtr && $closer > $stackPtr) { - return; - } - } - - // Ignore assignments in WHILE loop conditions. - if (isset($tokens[$stackPtr]['nested_parenthesis']) === true) { - $nested = $tokens[$stackPtr]['nested_parenthesis']; - foreach ($nested as $opener => $closer) { - if (isset($tokens[$opener]['parenthesis_owner']) === true - && $tokens[$tokens[$opener]['parenthesis_owner']]['code'] === T_WHILE - ) { - return; - } - } - } - - // Ignore member var definitions. - if (empty($tokens[$stackPtr]['conditions']) === false) { - $conditions = $tokens[$stackPtr]['conditions']; - end($conditions); - $deepestScope = key($conditions); - if (isset(Tokens::$ooScopeTokens[$tokens[$deepestScope]['code']]) === true) { - return; - } - } - - /* - The general rule is: - Find an equal sign and go backwards along the line. If you hit an - end bracket, skip to the opening bracket. When you find a variable, - stop. That variable must be the first non-empty token on the line - or in the statement. If not, throw an error. - */ - - for ($varToken = ($stackPtr - 1); $varToken >= 0; $varToken--) { - if (in_array($tokens[$varToken]['code'], [T_SEMICOLON, T_OPEN_CURLY_BRACKET, T_CLOSE_TAG], true) === true) { - // We've reached the previous statement, so we didn't find a variable. - return; - } - - // Skip brackets. - if (isset($tokens[$varToken]['parenthesis_opener']) === true && $tokens[$varToken]['parenthesis_opener'] < $varToken) { - $varToken = $tokens[$varToken]['parenthesis_opener']; - continue; - } - - if (isset($tokens[$varToken]['bracket_opener']) === true) { - $varToken = $tokens[$varToken]['bracket_opener']; - continue; - } - - if ($tokens[$varToken]['code'] === T_VARIABLE) { - $prevNonEmpty = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($varToken - 1), null, true); - if ($tokens[$prevNonEmpty]['code'] === T_OBJECT_OPERATOR) { - // Dynamic property access, the real "start" variable still needs to be found. - $varToken = $prevNonEmpty; - continue; - } - - // We found our variable. - break; - } - }//end for - - if ($varToken <= 0) { - // Didn't find a variable. - return; - } - - $start = $phpcsFile->findStartOfStatement($varToken); - - $allowed = Tokens::$emptyTokens; - - $allowed[T_STRING] = T_STRING; - $allowed[T_NS_SEPARATOR] = T_NS_SEPARATOR; - $allowed[T_DOUBLE_COLON] = T_DOUBLE_COLON; - $allowed[T_ASPERAND] = T_ASPERAND; - $allowed[T_DOLLAR] = T_DOLLAR; - $allowed[T_SELF] = T_SELF; - $allowed[T_PARENT] = T_PARENT; - $allowed[T_STATIC] = T_STATIC; - - $varToken = $phpcsFile->findPrevious($allowed, ($varToken - 1), null, true); - - if ($varToken < $start - && $tokens[$varToken]['code'] !== T_OPEN_PARENTHESIS - && $tokens[$varToken]['code'] !== T_OPEN_SQUARE_BRACKET - ) { - $varToken = $start; - } - - // Ignore the first part of FOR loops as we are allowed to - // assign variables there even though the variable is not the - // first thing on the line. - if ($tokens[$varToken]['code'] === T_OPEN_PARENTHESIS && isset($tokens[$varToken]['parenthesis_owner']) === true) { - $owner = $tokens[$varToken]['parenthesis_owner']; - if ($tokens[$owner]['code'] === T_FOR) { - return; - } - } - - if ($tokens[$varToken]['code'] === T_VARIABLE - || $tokens[$varToken]['code'] === T_OPEN_TAG - || $tokens[$varToken]['code'] === T_GOTO_LABEL - || $tokens[$varToken]['code'] === T_INLINE_THEN - || $tokens[$varToken]['code'] === T_INLINE_ELSE - || $tokens[$varToken]['code'] === T_SEMICOLON - || $tokens[$varToken]['code'] === T_CLOSE_PARENTHESIS - || isset($allowed[$tokens[$varToken]['code']]) === true - ) { - return; - } - - $error = 'Assignments must be the first block of code on a line'; - $errorCode = 'Found'; - - if (isset($nested) === true) { - $controlStructures = [ - T_IF => T_IF, - T_ELSEIF => T_ELSEIF, - T_SWITCH => T_SWITCH, - T_CASE => T_CASE, - T_FOR => T_FOR, - T_MATCH => T_MATCH, - ]; - foreach ($nested as $opener => $closer) { - if (isset($tokens[$opener]['parenthesis_owner']) === true - && isset($controlStructures[$tokens[$tokens[$opener]['parenthesis_owner']]['code']]) === true - ) { - $errorCode .= 'InControlStructure'; - break; - } - } - } - - $phpcsFile->addError($error, $stackPtr, $errorCode); - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/PHP/EmbeddedPhpSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/PHP/EmbeddedPhpSniff.php deleted file mode 100644 index 63a1cdd0..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/PHP/EmbeddedPhpSniff.php +++ /dev/null @@ -1,516 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Sniffs\PHP; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Tokens; - -class EmbeddedPhpSniff implements Sniff -{ - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [ - T_OPEN_TAG, - T_OPEN_TAG_WITH_ECHO, - ]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in the - * stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - // If the close php tag is on the same line as the opening - // then we have an inline embedded PHP block. - $closeTag = $phpcsFile->findNext(T_CLOSE_TAG, $stackPtr); - if ($closeTag === false || $tokens[$stackPtr]['line'] !== $tokens[$closeTag]['line']) { - $this->validateMultilineEmbeddedPhp($phpcsFile, $stackPtr, $closeTag); - } else { - $this->validateInlineEmbeddedPhp($phpcsFile, $stackPtr, $closeTag); - } - - }//end process() - - - /** - * Validates embedded PHP that exists on multiple lines. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in the - * stack passed in $tokens. - * @param int|false $closingTag The position of the PHP close tag in the - * stack passed in $tokens. - * - * @return void - */ - private function validateMultilineEmbeddedPhp($phpcsFile, $stackPtr, $closingTag) - { - $tokens = $phpcsFile->getTokens(); - - $prevTag = $phpcsFile->findPrevious($this->register(), ($stackPtr - 1)); - if ($prevTag === false) { - // This is the first open tag. - return; - } - - $firstContent = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true); - if ($firstContent === false) { - // Unclosed PHP open tag at the end of a file. Nothing to do. - return; - } - - if ($closingTag !== false) { - $firstContentAfterBlock = $phpcsFile->findNext(T_WHITESPACE, ($closingTag + 1), $phpcsFile->numTokens, true); - if ($firstContentAfterBlock === false) { - // Final closing tag. It will be handled elsewhere. - return; - } - - // We have an opening and a closing tag, that lie within other content. - if ($firstContent === $closingTag) { - $this->reportEmptyTagSet($phpcsFile, $stackPtr, $closingTag); - return; - } - }//end if - - if ($tokens[$firstContent]['line'] === $tokens[$stackPtr]['line']) { - $error = 'Opening PHP tag must be on a line by itself'; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'ContentAfterOpen'); - if ($fix === true) { - $first = $phpcsFile->findFirstOnLine(T_WHITESPACE, $stackPtr, true); - $padding = (strlen($tokens[$first]['content']) - strlen(ltrim($tokens[$first]['content']))); - - $phpcsFile->fixer->beginChangeset(); - $phpcsFile->fixer->replaceToken($stackPtr, rtrim($tokens[$stackPtr]['content'])); - $phpcsFile->fixer->addNewline($stackPtr); - $phpcsFile->fixer->addContent($stackPtr, str_repeat(' ', $padding)); - - if ($tokens[($stackPtr + 1)]['code'] === T_WHITESPACE) { - $phpcsFile->fixer->replaceToken(($stackPtr + 1), ''); - } - - $phpcsFile->fixer->endChangeset(); - } - } else { - // Check the indent of the first line, except if it is a scope closer. - if (isset($tokens[$firstContent]['scope_closer']) === false - || $tokens[$firstContent]['scope_closer'] !== $firstContent - ) { - // Check for a blank line at the top. - if ($tokens[$firstContent]['line'] > ($tokens[$stackPtr]['line'] + 1)) { - // Find a token on the blank line to throw the error on. - $i = $stackPtr; - do { - $i++; - } while ($tokens[$i]['line'] !== ($tokens[$stackPtr]['line'] + 1)); - - $error = 'Blank line found at start of embedded PHP content'; - $fix = $phpcsFile->addFixableError($error, $i, 'SpacingBefore'); - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - for ($i = ($stackPtr + 1); $i < $firstContent; $i++) { - if ($tokens[$i]['line'] === $tokens[$firstContent]['line'] - || $tokens[$i]['line'] === $tokens[$stackPtr]['line'] - ) { - continue; - } - - $phpcsFile->fixer->replaceToken($i, ''); - } - - $phpcsFile->fixer->endChangeset(); - } - }//end if - - $indent = 0; - $first = $phpcsFile->findFirstOnLine(T_WHITESPACE, $stackPtr); - if ($first === false) { - $first = $phpcsFile->findFirstOnLine(T_INLINE_HTML, $stackPtr); - if ($first !== false) { - $indent = (strlen($tokens[$first]['content']) - strlen(ltrim($tokens[$first]['content']))); - } - } else { - $indent = ($tokens[($first + 1)]['column'] - 1); - } - - $contentColumn = ($tokens[$firstContent]['column'] - 1); - if ($contentColumn !== $indent) { - $error = 'First line of embedded PHP code must be indented %s spaces; %s found'; - $data = [ - $indent, - $contentColumn, - ]; - $fix = $phpcsFile->addFixableError($error, $firstContent, 'Indent', $data); - if ($fix === true) { - $padding = str_repeat(' ', $indent); - if ($contentColumn === 0) { - $phpcsFile->fixer->addContentBefore($firstContent, $padding); - } else { - $phpcsFile->fixer->replaceToken(($firstContent - 1), $padding); - } - } - } - }//end if - }//end if - - $lastContentBeforeBlock = $phpcsFile->findPrevious(T_WHITESPACE, ($stackPtr - 1), null, true); - if ($tokens[$lastContentBeforeBlock]['line'] === $tokens[$stackPtr]['line'] - && trim($tokens[$lastContentBeforeBlock]['content']) !== '' - ) { - $error = 'Opening PHP tag must be on a line by itself'; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'ContentBeforeOpen'); - if ($fix === true) { - $padding = 0; - $first = $phpcsFile->findFirstOnLine(T_WHITESPACE, $stackPtr); - if ($first === false) { - $first = $phpcsFile->findFirstOnLine(T_INLINE_HTML, $stackPtr); - if ($first !== false) { - $padding = (strlen($tokens[$first]['content']) - strlen(ltrim($tokens[$first]['content']))); - } - } else { - $padding = ($tokens[($first + 1)]['column'] - 1); - } - - $phpcsFile->fixer->addContentBefore($stackPtr, $phpcsFile->eolChar.str_repeat(' ', $padding)); - } - } else { - // Find the first token on the first non-empty line we find. - for ($first = ($lastContentBeforeBlock - 1); $first > 0; $first--) { - if ($tokens[$first]['line'] === $tokens[$stackPtr]['line']) { - continue; - } else if (trim($tokens[$first]['content']) !== '') { - $first = $phpcsFile->findFirstOnLine([], $first, true); - if ($tokens[$first]['code'] === T_COMMENT - && $tokens[$first]['content'] !== ltrim($tokens[$first]['content']) - ) { - // This is a subsequent line in a star-slash comment containing leading indent. - // We'll need the first line of the comment to correctly determine the indent. - continue; - } - - break; - } - } - - $expected = 0; - if ($tokens[$first]['code'] === T_INLINE_HTML - && trim($tokens[$first]['content']) !== '' - ) { - $expected = (strlen($tokens[$first]['content']) - strlen(ltrim($tokens[$first]['content']))); - } else if ($tokens[$first]['code'] === T_WHITESPACE) { - $expected = ($tokens[($first + 1)]['column'] - 1); - } - - $expected += 4; - $found = ($tokens[$stackPtr]['column'] - 1); - if ($found > $expected) { - $error = 'Opening PHP tag indent incorrect; expected no more than %s spaces but found %s'; - $data = [ - $expected, - $found, - ]; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'OpenTagIndent', $data); - if ($fix === true) { - $phpcsFile->fixer->replaceToken(($stackPtr - 1), str_repeat(' ', $expected)); - } - } - }//end if - - if ($closingTag === false) { - return; - } - - $lastContent = $phpcsFile->findPrevious(T_WHITESPACE, ($closingTag - 1), ($stackPtr + 1), true); - $firstContentAfterBlock = $phpcsFile->findNext(T_WHITESPACE, ($closingTag + 1), null, true); - - if ($tokens[$lastContent]['line'] === $tokens[$closingTag]['line']) { - $error = 'Closing PHP tag must be on a line by itself'; - $fix = $phpcsFile->addFixableError($error, $closingTag, 'ContentBeforeEnd'); - if ($fix === true) { - // Calculate the indent for the close tag. - // If the close tag is on the same line as the first content, re-use the indent - // calculated for the first content line to prevent the indent being based on an - // "old" indent, not the _new_ (fixed) indent. - if ($tokens[$firstContent]['line'] === $tokens[$lastContent]['line'] - && isset($indent) === true - ) { - $closerIndent = $indent; - } else { - $first = $phpcsFile->findFirstOnLine(T_WHITESPACE, $closingTag, true); - - while ($tokens[$first]['code'] === T_COMMENT - && $tokens[$first]['content'] !== ltrim($tokens[$first]['content']) - ) { - // This is a subsequent line in a star-slash comment containing leading indent. - // We'll need the first line of the comment to correctly determine the indent. - $first = $phpcsFile->findFirstOnLine(T_WHITESPACE, ($first - 1), true); - } - - $closerIndent = ($tokens[$first]['column'] - 1); - } - - $phpcsFile->fixer->beginChangeset(); - - if ($tokens[($closingTag - 1)]['code'] === T_WHITESPACE) { - $phpcsFile->fixer->replaceToken(($closingTag - 1), ''); - } - - $phpcsFile->fixer->addContentBefore($closingTag, str_repeat(' ', $closerIndent)); - $phpcsFile->fixer->addNewlineBefore($closingTag); - $phpcsFile->fixer->endChangeset(); - }//end if - } else if ($firstContentAfterBlock !== false - && $tokens[$firstContentAfterBlock]['line'] === $tokens[$closingTag]['line'] - ) { - $error = 'Closing PHP tag must be on a line by itself'; - $fix = $phpcsFile->addFixableError($error, $closingTag, 'ContentAfterEnd'); - if ($fix === true) { - $first = $phpcsFile->findFirstOnLine(T_WHITESPACE, $closingTag, true); - $phpcsFile->fixer->beginChangeset(); - $phpcsFile->fixer->addNewline($closingTag); - $phpcsFile->fixer->addContent($closingTag, str_repeat(' ', ($tokens[$first]['column'] - 1))); - - if ($tokens[$firstContentAfterBlock]['code'] === T_INLINE_HTML) { - $trimmedHtmlContent = ltrim($tokens[$firstContentAfterBlock]['content']); - if ($trimmedHtmlContent === '') { - // HTML token contains only whitespace and the next token after is PHP, not HTML, so remove the whitespace. - $phpcsFile->fixer->replaceToken($firstContentAfterBlock, ''); - } else { - // The HTML token has content, so remove leading whitespace in favour of the indent. - $phpcsFile->fixer->replaceToken($firstContentAfterBlock, $trimmedHtmlContent); - } - } - - if ($tokens[$firstContentAfterBlock]['code'] === T_OPEN_TAG - || $tokens[$firstContentAfterBlock]['code'] === T_OPEN_TAG_WITH_ECHO - ) { - // Next token is a PHP open tag which will also have thrown an error. - // Prevent both fixers running in the same loop by making sure the token is "touched" during this loop. - // This prevents a stray new line being added between the close and open tags. - $phpcsFile->fixer->replaceToken($firstContentAfterBlock, $tokens[$firstContentAfterBlock]['content']); - } - - $phpcsFile->fixer->endChangeset(); - }//end if - }//end if - - $next = $phpcsFile->findNext($this->register(), ($closingTag + 1)); - if ($next === false) { - return; - } - - // Check for a blank line at the bottom. - if ((isset($tokens[$lastContent]['scope_closer']) === false - || $tokens[$lastContent]['scope_closer'] !== $lastContent) - && $tokens[$lastContent]['line'] < ($tokens[$closingTag]['line'] - 1) - ) { - // Find a token on the blank line to throw the error on. - $i = $closingTag; - do { - $i--; - } while ($tokens[$i]['line'] !== ($tokens[$closingTag]['line'] - 1)); - - $error = 'Blank line found at end of embedded PHP content'; - $fix = $phpcsFile->addFixableError($error, $i, 'SpacingAfter'); - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - for ($i = ($lastContent + 1); $i < $closingTag; $i++) { - if ($tokens[$i]['line'] === $tokens[$lastContent]['line'] - || $tokens[$i]['line'] === $tokens[$closingTag]['line'] - ) { - continue; - } - - $phpcsFile->fixer->replaceToken($i, ''); - } - - $phpcsFile->fixer->endChangeset(); - } - }//end if - - }//end validateMultilineEmbeddedPhp() - - - /** - * Validates embedded PHP that exists on one line. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in the - * stack passed in $tokens. - * @param int $closeTag The position of the PHP close tag in the - * stack passed in $tokens. - * - * @return void - */ - private function validateInlineEmbeddedPhp($phpcsFile, $stackPtr, $closeTag) - { - $tokens = $phpcsFile->getTokens(); - - $firstContent = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), $closeTag, true); - - if ($firstContent === false) { - $this->reportEmptyTagSet($phpcsFile, $stackPtr, $closeTag); - return; - } - - // Check that there is one, and only one space at the start of the statement. - $leadingSpace = 0; - $isLongOpenTag = false; - if ($tokens[$stackPtr]['code'] === T_OPEN_TAG - && stripos($tokens[$stackPtr]['content'], 'addFixableError($error, $stackPtr, 'SpacingAfterOpen', $data); - if ($fix === true) { - if ($isLongOpenTag === true) { - $phpcsFile->fixer->replaceToken(($stackPtr + 1), ''); - } else if ($tokens[($stackPtr + 1)]['code'] === T_WHITESPACE) { - // Short open tag with too much whitespace. - $phpcsFile->fixer->replaceToken(($stackPtr + 1), ' '); - } else { - // Short open tag without whitespace. - $phpcsFile->fixer->addContent($stackPtr, ' '); - } - } - } - - $prev = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($closeTag - 1), $stackPtr, true); - if ($prev !== $stackPtr) { - if ((isset($tokens[$prev]['scope_opener']) === false - || $tokens[$prev]['scope_opener'] !== $prev) - && (isset($tokens[$prev]['scope_closer']) === false - || $tokens[$prev]['scope_closer'] !== $prev) - && $tokens[$prev]['code'] !== T_SEMICOLON - ) { - $error = 'Inline PHP statement must end with a semicolon'; - $code = 'NoSemicolon'; - if ($tokens[$stackPtr]['code'] === T_OPEN_TAG_WITH_ECHO) { - $code = 'ShortOpenEchoNoSemicolon'; - } - - $fix = $phpcsFile->addFixableError($error, $stackPtr, $code); - if ($fix === true) { - $phpcsFile->fixer->addContent($prev, ';'); - } - } else if ($tokens[$prev]['code'] === T_SEMICOLON) { - $statementCount = 1; - for ($i = ($stackPtr + 1); $i < $prev; $i++) { - if ($tokens[$i]['code'] === T_SEMICOLON) { - $statementCount++; - } - } - - if ($statementCount > 1) { - $error = 'Inline PHP statement must contain a single statement; %s found'; - $data = [$statementCount]; - $phpcsFile->addError($error, $stackPtr, 'MultipleStatements', $data); - } - }//end if - }//end if - - $trailingSpace = 0; - if ($tokens[($closeTag - 1)]['code'] === T_WHITESPACE) { - $trailingSpace = $tokens[($closeTag - 1)]['length']; - } else if (($tokens[($closeTag - 1)]['code'] === T_COMMENT - || isset(Tokens::$phpcsCommentTokens[$tokens[($closeTag - 1)]['code']]) === true) - && substr($tokens[($closeTag - 1)]['content'], -1) === ' ' - ) { - $trailingSpace = (strlen($tokens[($closeTag - 1)]['content']) - strlen(rtrim($tokens[($closeTag - 1)]['content']))); - } - - if ($trailingSpace !== 1) { - $error = 'Expected 1 space before closing PHP tag; %s found'; - $data = [$trailingSpace]; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'SpacingBeforeClose', $data); - if ($fix === true) { - if ($trailingSpace === 0) { - $phpcsFile->fixer->addContentBefore($closeTag, ' '); - } else if ($tokens[($closeTag - 1)]['code'] === T_COMMENT - || isset(Tokens::$phpcsCommentTokens[$tokens[($closeTag - 1)]['code']]) === true - ) { - $phpcsFile->fixer->replaceToken(($closeTag - 1), rtrim($tokens[($closeTag - 1)]['content']).' '); - } else { - $phpcsFile->fixer->replaceToken(($closeTag - 1), ' '); - } - } - } - - }//end validateInlineEmbeddedPhp() - - - /** - * Report and fix an set of empty PHP tags. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in the - * stack passed in $tokens. - * @param int $closeTag The position of the PHP close tag in the - * stack passed in $tokens. - * - * @return void - */ - private function reportEmptyTagSet(File $phpcsFile, $stackPtr, $closeTag) - { - $tokens = $phpcsFile->getTokens(); - $error = 'Empty embedded PHP tag found'; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'Empty'); - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - for ($i = $stackPtr; $i <= $closeTag; $i++) { - $phpcsFile->fixer->replaceToken($i, ''); - } - - // Prevent leaving indentation whitespace behind when the empty tag set is the only thing on the affected lines. - if (isset($tokens[($closeTag + 1)]) === true - && $tokens[($closeTag + 1)]['line'] !== $tokens[$closeTag]['line'] - && $tokens[($stackPtr - 1)]['code'] === T_INLINE_HTML - && $tokens[($stackPtr - 1)]['line'] === $tokens[$stackPtr]['line'] - && $tokens[($stackPtr - 1)]['column'] === 1 - && trim($tokens[($stackPtr - 1)]['content']) === '' - ) { - $phpcsFile->fixer->replaceToken(($stackPtr - 1), ''); - } - - $phpcsFile->fixer->endChangeset(); - } - - }//end reportEmptyTagSet() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Strings/EchoedStringsSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Strings/EchoedStringsSniff.php deleted file mode 100644 index ec516a99..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Strings/EchoedStringsSniff.php +++ /dev/null @@ -1,88 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Sniffs\Strings; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Tokens; - -class EchoedStringsSniff implements Sniff -{ - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [T_ECHO]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in the - * stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - $firstContent = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true); - // If the first non-whitespace token is not an opening parenthesis, then we are not concerned. - if ($tokens[$firstContent]['code'] !== T_OPEN_PARENTHESIS) { - $phpcsFile->recordMetric($stackPtr, 'Brackets around echoed strings', 'no'); - return; - } - - $end = $phpcsFile->findNext([T_SEMICOLON, T_CLOSE_TAG], $stackPtr, null, false); - - // If the token before the semicolon is not a closing parenthesis, then we are not concerned. - $prev = $phpcsFile->findPrevious(T_WHITESPACE, ($end - 1), null, true); - if ($tokens[$prev]['code'] !== T_CLOSE_PARENTHESIS) { - $phpcsFile->recordMetric($stackPtr, 'Brackets around echoed strings', 'no'); - return; - } - - // If the parenthesis don't match, then we are not concerned. - if ($tokens[$firstContent]['parenthesis_closer'] !== $prev) { - $phpcsFile->recordMetric($stackPtr, 'Brackets around echoed strings', 'no'); - return; - } - - $phpcsFile->recordMetric($stackPtr, 'Brackets around echoed strings', 'yes'); - - if (($phpcsFile->findNext(Tokens::$operators, $stackPtr, $end, false)) === false) { - // There are no arithmetic operators in this. - $error = 'Echoed strings should not be bracketed'; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'HasBracket'); - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - $phpcsFile->fixer->replaceToken($firstContent, ''); - if ($tokens[($firstContent - 1)]['code'] !== T_WHITESPACE) { - $phpcsFile->fixer->addContent(($firstContent - 1), ' '); - } - - $phpcsFile->fixer->replaceToken($prev, ''); - $phpcsFile->fixer->endChangeset(); - } - } - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/WhiteSpace/OperatorSpacingSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/WhiteSpace/OperatorSpacingSniff.php deleted file mode 100644 index 2a87978a..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/WhiteSpace/OperatorSpacingSniff.php +++ /dev/null @@ -1,409 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Sniffs\WhiteSpace; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Tokens; - -class OperatorSpacingSniff implements Sniff -{ - - /** - * A list of tokenizers this sniff supports. - * - * @var array - */ - public $supportedTokenizers = [ - 'PHP', - 'JS', - ]; - - /** - * Allow newlines instead of spaces. - * - * @var boolean - */ - public $ignoreNewlines = false; - - /** - * Don't check spacing for assignment operators. - * - * This allows multiple assignment statements to be aligned. - * - * @var boolean - */ - public $ignoreSpacingBeforeAssignments = true; - - /** - * A list of tokens that aren't considered as operands. - * - * @var string[] - */ - private $nonOperandTokens = []; - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - /* - First we setup an array of all the tokens that can come before - a T_MINUS or T_PLUS token to indicate that the token is not being - used as an operator. - */ - - // Trying to operate on a negative value; eg. ($var * -1). - $this->nonOperandTokens = Tokens::$operators; - - // Trying to compare a negative value; eg. ($var === -1). - $this->nonOperandTokens += Tokens::$comparisonTokens; - - // Trying to compare a negative value; eg. ($var || -1 === $b). - $this->nonOperandTokens += Tokens::$booleanOperators; - - // Trying to assign a negative value; eg. ($var = -1). - $this->nonOperandTokens += Tokens::$assignmentTokens; - - // Returning/printing a negative value; eg. (return -1). - $this->nonOperandTokens += [ - T_RETURN => T_RETURN, - T_ECHO => T_ECHO, - T_EXIT => T_EXIT, - T_PRINT => T_PRINT, - T_YIELD => T_YIELD, - T_FN_ARROW => T_FN_ARROW, - T_MATCH_ARROW => T_MATCH_ARROW, - ]; - - // Trying to use a negative value; eg. myFunction($var, -2). - $this->nonOperandTokens += [ - T_CASE => T_CASE, - T_COLON => T_COLON, - T_COMMA => T_COMMA, - T_INLINE_ELSE => T_INLINE_ELSE, - T_INLINE_THEN => T_INLINE_THEN, - T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET, - T_OPEN_PARENTHESIS => T_OPEN_PARENTHESIS, - T_OPEN_SHORT_ARRAY => T_OPEN_SHORT_ARRAY, - T_OPEN_SQUARE_BRACKET => T_OPEN_SQUARE_BRACKET, - T_STRING_CONCAT => T_STRING_CONCAT, - ]; - - // Casting a negative value; eg. (array) -$a. - $this->nonOperandTokens += Tokens::$castTokens; - - /* - These are the tokens the sniff is looking for. - */ - - $targets = Tokens::$comparisonTokens; - $targets += Tokens::$operators; - $targets += Tokens::$assignmentTokens; - $targets[] = T_INLINE_THEN; - $targets[] = T_INLINE_ELSE; - $targets[] = T_INSTANCEOF; - - // Also register the contexts we want to specifically skip over. - $targets[] = T_DECLARE; - - return $targets; - - }//end register() - - - /** - * Processes this sniff, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The current file being checked. - * @param int $stackPtr The position of the current token in - * the stack passed in $tokens. - * - * @return void|int Optionally returns a stack pointer. The sniff will not be - * called again on the current file until the returned stack - * pointer is reached. Return `$phpcsFile->numTokens` to skip - * the rest of the file. - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - // Skip over declare statements as those should be handled by different sniffs. - if ($tokens[$stackPtr]['code'] === T_DECLARE) { - if (isset($tokens[$stackPtr]['parenthesis_closer']) === false) { - // Parse error / live coding. - return $phpcsFile->numTokens; - } - - return $tokens[$stackPtr]['parenthesis_closer']; - } - - if ($this->isOperator($phpcsFile, $stackPtr) === false) { - return; - } - - if ($tokens[$stackPtr]['code'] === T_BITWISE_AND) { - // Check there is one space before the & operator. - if ($tokens[($stackPtr - 1)]['code'] !== T_WHITESPACE) { - $error = 'Expected 1 space before "&" operator; 0 found'; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'NoSpaceBeforeAmp'); - if ($fix === true) { - $phpcsFile->fixer->addContentBefore($stackPtr, ' '); - } - - $phpcsFile->recordMetric($stackPtr, 'Space before operator', 0); - } else { - if ($tokens[($stackPtr - 2)]['line'] !== $tokens[$stackPtr]['line']) { - $found = 'newline'; - } else { - $found = $tokens[($stackPtr - 1)]['length']; - } - - $phpcsFile->recordMetric($stackPtr, 'Space before operator', $found); - if ($found !== 1 - && ($found !== 'newline' || $this->ignoreNewlines === false) - ) { - $error = 'Expected 1 space before "&" operator; %s found'; - $data = [$found]; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'SpacingBeforeAmp', $data); - if ($fix === true) { - $phpcsFile->fixer->replaceToken(($stackPtr - 1), ' '); - } - } - }//end if - - $hasNext = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true); - if ($hasNext === false) { - // Live coding/parse error at end of file. - return; - } - - // Check there is one space after the & operator. - if ($tokens[($stackPtr + 1)]['code'] !== T_WHITESPACE) { - $error = 'Expected 1 space after "&" operator; 0 found'; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'NoSpaceAfterAmp'); - if ($fix === true) { - $phpcsFile->fixer->addContent($stackPtr, ' '); - } - - $phpcsFile->recordMetric($stackPtr, 'Space after operator', 0); - } else { - if ($tokens[($stackPtr + 2)]['line'] !== $tokens[$stackPtr]['line']) { - $found = 'newline'; - } else { - $found = $tokens[($stackPtr + 1)]['length']; - } - - $phpcsFile->recordMetric($stackPtr, 'Space after operator', $found); - if ($found !== 1 - && ($found !== 'newline' || $this->ignoreNewlines === false) - ) { - $error = 'Expected 1 space after "&" operator; %s found'; - $data = [$found]; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'SpacingAfterAmp', $data); - if ($fix === true) { - $phpcsFile->fixer->replaceToken(($stackPtr + 1), ' '); - } - } - }//end if - - return; - }//end if - - $operator = $tokens[$stackPtr]['content']; - - if ($tokens[($stackPtr - 1)]['code'] !== T_WHITESPACE - && (($tokens[($stackPtr - 1)]['code'] === T_INLINE_THEN - && $tokens[($stackPtr)]['code'] === T_INLINE_ELSE) === false) - ) { - $error = "Expected 1 space before \"$operator\"; 0 found"; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'NoSpaceBefore'); - if ($fix === true) { - $phpcsFile->fixer->addContentBefore($stackPtr, ' '); - } - - $phpcsFile->recordMetric($stackPtr, 'Space before operator', 0); - } else if (isset(Tokens::$assignmentTokens[$tokens[$stackPtr]['code']]) === false - || $this->ignoreSpacingBeforeAssignments === false - ) { - // Throw an error for assignments only if enabled using the sniff property - // because other standards allow multiple spaces to align assignments. - $prevNonWhitespace = $phpcsFile->findPrevious(T_WHITESPACE, ($stackPtr - 1), null, true); - if ($tokens[$prevNonWhitespace]['line'] !== $tokens[$stackPtr]['line']) { - $found = 'newline'; - } else { - $found = $tokens[($stackPtr - 1)]['length']; - } - - $phpcsFile->recordMetric($stackPtr, 'Space before operator', $found); - if ($found !== 1 - && ($found !== 'newline' || $this->ignoreNewlines === false) - ) { - $error = 'Expected 1 space before "%s"; %s found'; - $data = [ - $operator, - $found, - ]; - - if (isset(Tokens::$commentTokens[$tokens[$prevNonWhitespace]['code']]) === true) { - // Throw a non-fixable error if the token on the previous line is a comment token, - // as in that case it's not for the sniff to decide where the comment should be moved to - // and it would get us into unfixable situations as the new line char is included - // in the contents of the comment token. - $phpcsFile->addError($error, $stackPtr, 'SpacingBefore', $data); - } else { - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'SpacingBefore', $data); - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - if ($found === 'newline') { - $i = ($stackPtr - 2); - while ($tokens[$i]['code'] === T_WHITESPACE) { - $phpcsFile->fixer->replaceToken($i, ''); - $i--; - } - } - - $phpcsFile->fixer->replaceToken(($stackPtr - 1), ' '); - $phpcsFile->fixer->endChangeset(); - } - }//end if - }//end if - }//end if - - $hasNext = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true); - if ($hasNext === false) { - // Live coding/parse error at end of file. - return; - } - - if ($tokens[($stackPtr + 1)]['code'] !== T_WHITESPACE) { - // Skip short ternary such as: "$foo = $bar ?: true;". - if (($tokens[$stackPtr]['code'] === T_INLINE_THEN - && $tokens[($stackPtr + 1)]['code'] === T_INLINE_ELSE) - ) { - return; - } - - $error = "Expected 1 space after \"$operator\"; 0 found"; - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'NoSpaceAfter'); - if ($fix === true) { - $phpcsFile->fixer->addContent($stackPtr, ' '); - } - - $phpcsFile->recordMetric($stackPtr, 'Space after operator', 0); - } else { - if (isset($tokens[($stackPtr + 2)]) === true - && $tokens[($stackPtr + 2)]['line'] !== $tokens[$stackPtr]['line'] - ) { - $found = 'newline'; - } else { - $found = $tokens[($stackPtr + 1)]['length']; - } - - $phpcsFile->recordMetric($stackPtr, 'Space after operator', $found); - if ($found !== 1 - && ($found !== 'newline' || $this->ignoreNewlines === false) - ) { - $error = 'Expected 1 space after "%s"; %s found'; - $data = [ - $operator, - $found, - ]; - - $nextNonWhitespace = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true); - if ($nextNonWhitespace !== false - && isset(Tokens::$commentTokens[$tokens[$nextNonWhitespace]['code']]) === true - && $found === 'newline' - ) { - // Don't auto-fix when it's a comment or PHPCS annotation on a new line as - // it causes fixer conflicts and can cause the meaning of annotations to change. - $phpcsFile->addError($error, $stackPtr, 'SpacingAfter', $data); - } else { - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'SpacingAfter', $data); - if ($fix === true) { - $phpcsFile->fixer->replaceToken(($stackPtr + 1), ' '); - } - } - }//end if - }//end if - - }//end process() - - - /** - * Checks if an operator is actually a different type of token in the current context. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The current file being checked. - * @param int $stackPtr The position of the operator in - * the stack. - * - * @return boolean - */ - protected function isOperator(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - if ($tokens[$stackPtr]['code'] === T_DECLARE) { - return false; - } - - // Skip default values in function declarations. - // Skip declare statements. - if ($tokens[$stackPtr]['code'] === T_EQUAL) { - if (isset($tokens[$stackPtr]['nested_parenthesis']) === true) { - $parenthesis = array_keys($tokens[$stackPtr]['nested_parenthesis']); - $bracket = array_pop($parenthesis); - if (isset($tokens[$bracket]['parenthesis_owner']) === true) { - $function = $tokens[$bracket]['parenthesis_owner']; - if ($tokens[$function]['code'] === T_FUNCTION - || $tokens[$function]['code'] === T_CLOSURE - || $tokens[$function]['code'] === T_FN - ) { - return false; - } - } - } - } - - if ($tokens[$stackPtr]['code'] === T_EQUAL) { - // Skip for '=&' case. - if (isset($tokens[($stackPtr + 1)]) === true - && $tokens[($stackPtr + 1)]['code'] === T_BITWISE_AND - ) { - return false; - } - } - - if ($tokens[$stackPtr]['code'] === T_BITWISE_AND) { - // If it's not a reference, then we expect one space either side of the - // bitwise operator. - if ($phpcsFile->isReference($stackPtr) === true) { - return false; - } - } - - if ($tokens[$stackPtr]['code'] === T_MINUS || $tokens[$stackPtr]['code'] === T_PLUS) { - // Check minus spacing, but make sure we aren't just assigning - // a minus value or returning one. - $prev = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($stackPtr - 1), null, true); - if (isset($this->nonOperandTokens[$tokens[$prev]['code']]) === true) { - return false; - } - }//end if - - return true; - - }//end isOperator() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/WhiteSpace/SemicolonSpacingSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/WhiteSpace/SemicolonSpacingSniff.php deleted file mode 100644 index dbf719d2..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/WhiteSpace/SemicolonSpacingSniff.php +++ /dev/null @@ -1,116 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Sniffs\WhiteSpace; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Tokens; - -class SemicolonSpacingSniff implements Sniff -{ - - /** - * A list of tokenizers this sniff supports. - * - * @var array - */ - public $supportedTokenizers = [ - 'PHP', - 'JS', - ]; - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [T_SEMICOLON]; - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * - * @return void - */ - public function process(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - $prevType = $tokens[($stackPtr - 1)]['code']; - if (isset(Tokens::$emptyTokens[$prevType]) === false) { - return; - } - - $nonSpace = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($stackPtr - 2), null, true); - - // Detect whether this is a semicolon for a condition in a `for()` control structure. - $forCondition = false; - if (isset($tokens[$stackPtr]['nested_parenthesis']) === true) { - $nestedParens = $tokens[$stackPtr]['nested_parenthesis']; - $closeParenthesis = end($nestedParens); - - if (isset($tokens[$closeParenthesis]['parenthesis_owner']) === true) { - $owner = $tokens[$closeParenthesis]['parenthesis_owner']; - - if ($tokens[$owner]['code'] === T_FOR) { - $forCondition = true; - $nonSpace = $phpcsFile->findPrevious(T_WHITESPACE, ($stackPtr - 2), null, true); - } - } - } - - if ($tokens[$nonSpace]['code'] === T_SEMICOLON - || ($forCondition === true && $nonSpace === $tokens[$owner]['parenthesis_opener']) - || (isset($tokens[$nonSpace]['scope_opener']) === true - && $tokens[$nonSpace]['scope_opener'] === $nonSpace) - ) { - // Empty statement. - return; - } - - $expected = $tokens[$nonSpace]['content'].';'; - $found = $phpcsFile->getTokensAsString($nonSpace, ($stackPtr - $nonSpace)).';'; - $found = str_replace("\n", '\n', $found); - $found = str_replace("\r", '\r', $found); - $found = str_replace("\t", '\t', $found); - $error = 'Space found before semicolon; expected "%s" but found "%s"'; - $data = [ - $expected, - $found, - ]; - - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'Incorrect', $data); - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - $i = ($stackPtr - 1); - while (($tokens[$i]['code'] === T_WHITESPACE) && ($i > $nonSpace)) { - $phpcsFile->fixer->replaceToken($i, ''); - $i--; - } - - $phpcsFile->fixer->addContent($nonSpace, ';'); - $phpcsFile->fixer->replaceToken($stackPtr, ''); - - $phpcsFile->fixer->endChangeset(); - } - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.1.inc b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.1.inc deleted file mode 100644 index 6a25ab90..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.1.inc +++ /dev/null @@ -1,560 +0,0 @@ - 1, - ); -} - -class TestClass -{ - public $good = array( - 'width' => '', - 'height' => '', - ); - - private $_bad = ARRAY( - 'width' => '', - 'height' => '' - ); - - - public function test() - { - $truck = array( - 'width' => '', - 'height' => '', - ); - - $plane = Array( - 'width' => '', - 'height' => '', - ); - - $car = array( - 'width' => '', - 'height' => '', - ); - - $bus = array( - 'width' => '', - 'height' => '' - ); - - $train = array ( - TRUE, - FALSE, - 'aaa' - ); - - $inline = array('aaa', 'bbb', 'ccc'); - $inline = array('aaa'); - $inline = Array('aaa'); - - $bigone = array( - 'name' => 'bigone', - 'children' => Array( - '1a' => 'child', - '11b' => 'child', - '111c' => 'child', - 'children' => Array( - 'child' => 'aaa', - ), - ), - 'short_name' => 'big' - ); - } - -}//end class - -$value = array ( ); -$value = array( ); -$value = array('1'=>$one, '2' => $two, '3'=> $three, '4' =>$four); -$value = array('1'=>$one); - -if (in_array('1', array('1','2','3')) === TRUE) { - $value = in_array('1', array('1' , '2', '3','4')); -} - -$value = array( - '1'=> TRUE, - FALSE, - '3' => 'aaa',); - -$value = array( - '1'=> TRUE, - FALSE, - ); - -$value = array( - TRUE, - '1' => FALSE, - ); - -$value = array(1, - 2 , - 3 , - ); - -$value = array(1 => $one, - 2 => $two , - 3 => $three , - ); - -$value = array( - 'tag' => $tag, - 'space' => $this->_getIndentation($tag, $tagElement), - ); - -$expected = array( - array( - '1' => 1, - '1' => 2, - ), - ); - -$expected = array( - array( - '1' => 1, - '1' => 2 - ) - ); - -// Space in second arg. -$args = array( - '"'.$this->id.'"', - (int) $hasSessions, - ); - -// No errors. -$paths = array( - Init::ROOT_DIR.'/Systems' => 'Systems', - Init::ROOT_DIR.'/Installer' => 'Systems', - ); - -$x = array( - ); - -$x = array('test' - ); -$x = array('test', - ); -$x = array('name' => 'test', - ); - -$x = array( - $x, - ); - -$func = array( - $x, - 'get'.$x.'Replacement' - ); - -$array = array( - 'input_one' => 'one', - 'inputTwo' => 'two', - 'input_3' => 3, - ); - -$array = array( - 'input_one', - 'inputTwo', - 'input_3', - ); - -// Malformed -$foo = array(1 -, 2); - -$listItems[$aliasPath] = array('itemContent' => implode('
    ', $aliases)); - -$listItems[$aliasPath] = array( - 'itemContent' => implode('
    ', $aliases) - ); - -$x = array - ( - $x, - $y, - ); - -$x = array -( - $x, - $y, - ); - -$x = array( - - $x, - $y, - ); - -$test = array( - 'test' => TestFunction::blah( - $value1, - $value2 - ), - ); - -$c = array('a' => 1,); - -function b() -{ - $a = array( - 'a' => a('a'), - - ); - -} - -$foo = Array('[',']',':',"\n","\r"); -$bar = Array('[',']',':',' ',' '); - -function foo() -{ - return array($a, $b->screen); -} - -$array = array( - 'name' => 'contactSubject', - 'required' => TRUE, - 'validators' => array( - new \Zend\Validator\InArray(array('haystack' => array_keys($aSubjects))), - ), - ); - -$var = array( - 'ViewHelper', - array('Foo'), - 'Errors', - ); - -$data = array( - 'first', - 'second', - 'third', - // Add more here - ); - -$data = array( - 'first', - 'second', - //'third', - ); - -$data = array( - 'first', - 'second' - //'third', - ); - -$foo = array( - $this->getViewName() . '.id' => 'value', - $this->getViewName() . '.title' => 'value', - ); - -$foo = array( - $this->getViewName() . '.id', - $this->getViewName() . '.title', - ); - -$weightings = array( - T_CLOSURE => 100, - - /* - Conditions. - */ - - T_WHILE => 50, - - /* - Operators and arithmetic. - */ - - T_BITWISE_AND => 8, - - T_BOOLEAN_AND => 5, - - /* - Equality. - */ - - T_IS_GREATER_OR_EQUAL => 5, - ); - -foreach (array( - 'foo' => 'bar', - 'foobaz' => 'bazzy', - ) as $key => $value) { -} - -$ids = array( - '1', // Foo. - '13', // Bar. - ); - -array( - 'key1' => function($bar) { - return $bar; - }, - 'key2' => function($foo) { - return $foo; - }, - 'key3' => function($bar) { - return $bar; - } -); - -array( - 'key1' => array( - '1', - '2', - ) -); - -$var = array( - 'tab_template' => ' -
  • %s
  • ', - 'panel_template' => ' -
    - %s -
    ', - ); - -function test() : array -{ - return []; -} - -$fields = array( - 'id' => array('type' => 'INT'), - 'value' => array('type' => 'VARCHAR')); - -get_current_screen()->add_help_tab( array( - 'id' => << false); - -$x = array( - 'xxxx' => array('aaaaaaaaaa' => 'ccccccccccc', - 'bbbbbbbb' => false), -); - -$foo = array - ('foo' => array - ('bar1' => 1 - ,'bar2' => 1 - ,'bar3' => 1 - ,'bar4' => 1 - ,'bar5' => 1 - ) - ); - -$foo = array( - '1' => $row['status'] === 'rejected' - ? self::REJECTED_CODE - : self::VERIFIED_CODE, - '2' => in_array($row['status'], array('notverified', 'unverified'), true) - ? self::STATUS_PENDING - : self::STATUS_VERIFIED, - '3' => strtotime($row['date']), - ); - -$foo = foo( - array( - // comment - ) -); - -$foo = array( - << lorem( - 1 - ), 2 => 2, -); - -$foo = array( - 'тип' => 'авто', - 'цвет' => 'синий', - ); - -$paths = array( - Init::ROOT_DIR.'/тип' => 'авто', - Init::ROOT_DIR.'/цвет' => 'синий', - ); - -$foo = array(<< fn() => return 1, - 'bb' => fn() => return 2, - 'ccc' => ( true ) ? - fn() => return 1 : - fn() => return 2, - ); - -$array = array( - 1 => '1', - 2 => fn ($x) => yield 'a' => $x, - 3 => '3', - ); - -$foo = array( - $this->fn => 'value', - $foo->fn => 'value', - ); - -array($a, $b, -$c); - -array('a' => $a, 'b' => $b, -'c' => $c); - -array( - static function() { - return null; - }, - (array) array(), - (bool) array(), - (double) array(), - (int) array(), - (object) array(), - (string) array(), - (unset) array(), -); - -array( - 'foo', - 'bar' - // This is a non-fixable error. - , -); - -yield array( - static fn () : string => '', -); - -yield array( - static fn () : string => '', - ); - -$foo = array( - 'foo' => match ($anything) { - 'foo' => 'bar', - default => null, - }, - ); - -// Intentional syntax error. -$a = array( - 'a' => - ); - -// Safeguard correct errors for key/no key when PHP 7.4+ array unpacking is encountered. -$x = array( - ...$a, - 'foo' => 'bar', - ); - -$x = array( - 'foo' => 'bar', - ...$a, - ); - -$x = array( - 'foo' => 'bar', - ...$a, - 'baz' => 'bar', - ); - -$x = array( - ...$a, - 'foo' => 'bar', // OK. - 'bar', // NoKeySpecified Error (based on second entry). - ); - -$x = array( - ...$a, - 'bar', // OK. - 'foo' => 'bar', // KeySpecified Error (based on second entry). - ); - -$x = array( - 'foo' => 'bar', - ...$a, - 'baz' => 'bar', - 'bar', // NoKeySpecified Error (based on first entry). - ); - -$x = array( - 'bar', - ...$a, - 'bar', - 'baz' => 'bar', // KeySpecified (based on first entry). - ); - - $x = - array( - 'a', - 'b', - ); - -$x = array( - 1, static fn (float $item): float => match ($item) { - 2.0 => 3.0, - default => $item - }, - ); - -$x = array( - 1, static::helloWorld(), $class instanceof static, - 2, - ); - -$noSpaceBeforeDoubleArrow = array( - 'width'=> '', - 'height' => '', - ); - -$newlineAfterDoubleArrow = array( - 'width' => - '', - 'height' => '', - ); diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.1.inc.fixed b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.1.inc.fixed deleted file mode 100644 index 048f898c..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.1.inc.fixed +++ /dev/null @@ -1,598 +0,0 @@ - 1); -} - -class TestClass -{ - public $good = array( - 'width' => '', - 'height' => '', - ); - - private $_bad = array( - 'width' => '', - 'height' => '', - ); - - - public function test() - { - $truck = array( - 'width' => '', - 'height' => '', - ); - - $plane = array( - 'width' => '', - 'height' => '', - ); - - $car = array( - 'width' => '', - 'height' => '', - ); - - $bus = array( - 'width' => '', - 'height' => '', - ); - - $train = array( - TRUE, - FALSE, - 'aaa', - ); - - $inline = array( - 'aaa', - 'bbb', - 'ccc', - ); - $inline = array('aaa'); - $inline = array('aaa'); - - $bigone = array( - 'name' => 'bigone', - 'children' => array( - '1a' => 'child', - '11b' => 'child', - '111c' => 'child', - 'children' => array('child' => 'aaa'), - ), - 'short_name' => 'big', - ); - } - -}//end class - -$value = array(); -$value = array(); -$value = array( - '1' => $one, - '2' => $two, - '3' => $three, - '4' => $four, - ); -$value = array('1' => $one); - -if (in_array('1', array('1', '2', '3')) === TRUE) { - $value = in_array('1', array('1', '2', '3', '4')); -} - -$value = array( - '1'=> TRUE, - FALSE, - '3' => 'aaa', - ); - -$value = array( - '1'=> TRUE, - FALSE, - ); - -$value = array( - TRUE, - '1' => FALSE, - ); - -$value = array( - 1, - 2, - 3, - ); - -$value = array( - 1 => $one, - 2 => $two, - 3 => $three, - ); - -$value = array( - 'tag' => $tag, - 'space' => $this->_getIndentation($tag, $tagElement), - ); - -$expected = array( - array( - '1' => 1, - '1' => 2, - ), - ); - -$expected = array( - array( - '1' => 1, - '1' => 2, - ), - ); - -// Space in second arg. -$args = array( - '"'.$this->id.'"', - (int) $hasSessions, - ); - -// No errors. -$paths = array( - Init::ROOT_DIR.'/Systems' => 'Systems', - Init::ROOT_DIR.'/Installer' => 'Systems', - ); - -$x = array(); - -$x = array('test'); -$x = array('test'); -$x = array('name' => 'test'); - -$x = array($x); - -$func = array( - $x, - 'get'.$x.'Replacement', - ); - -$array = array( - 'input_one' => 'one', - 'inputTwo' => 'two', - 'input_3' => 3, - ); - -$array = array( - 'input_one', - 'inputTwo', - 'input_3', - ); - -// Malformed -$foo = array( - 1, - 2, - ); - -$listItems[$aliasPath] = array('itemContent' => implode('
    ', $aliases)); - -$listItems[$aliasPath] = array( - 'itemContent' => implode('
    ', $aliases), - ); - -$x = array( - $x, - $y, - ); - -$x = array( - $x, - $y, - ); - -$x = array( - - $x, - $y, - ); - -$test = array( - 'test' => TestFunction::blah( - $value1, - $value2 - ), - ); - -$c = array('a' => 1); - -function b() -{ - $a = array( - 'a' => a('a'), - - ); - -} - -$foo = array( - '[', - ']', - ':', - "\n", - "\r", - ); -$bar = array( - '[', - ']', - ':', - ' ', - ' ', - ); - -function foo() -{ - return array( - $a, - $b->screen, - ); -} - -$array = array( - 'name' => 'contactSubject', - 'required' => TRUE, - 'validators' => array( - new \Zend\Validator\InArray(array('haystack' => array_keys($aSubjects))), - ), - ); - -$var = array( - 'ViewHelper', - array('Foo'), - 'Errors', - ); - -$data = array( - 'first', - 'second', - 'third', - // Add more here - ); - -$data = array( - 'first', - 'second', - //'third', - ); - -$data = array( - 'first', - 'second', - //'third', - ); - -$foo = array( - $this->getViewName() . '.id' => 'value', - $this->getViewName() . '.title' => 'value', - ); - -$foo = array( - $this->getViewName() . '.id', - $this->getViewName() . '.title', - ); - -$weightings = array( - T_CLOSURE => 100, - - /* - Conditions. - */ - - T_WHILE => 50, - - /* - Operators and arithmetic. - */ - - T_BITWISE_AND => 8, - - T_BOOLEAN_AND => 5, - - /* - Equality. - */ - - T_IS_GREATER_OR_EQUAL => 5, - ); - -foreach (array( - 'foo' => 'bar', - 'foobaz' => 'bazzy', - ) as $key => $value) { -} - -$ids = array( - '1', // Foo. - '13', // Bar. - ); - -array( - 'key1' => function($bar) { - return $bar; - }, - 'key2' => function($foo) { - return $foo; - }, - 'key3' => function($bar) { - return $bar; - }, -); - -array( - 'key1' => array( - '1', - '2', - ), -); - -$var = array( - 'tab_template' => ' -
  • %s
  • ', - 'panel_template' => ' -
    - %s -
    ', - ); - -function test() : array -{ - return []; -} - -$fields = array( - 'id' => array('type' => 'INT'), - 'value' => array('type' => 'VARCHAR'), - ); - -get_current_screen()->add_help_tab( array( - 'id' => << false); - -$x = array( - 'xxxx' => array( - 'aaaaaaaaaa' => 'ccccccccccc', - 'bbbbbbbb' => false, - ), - ); - -$foo = array( - 'foo' => array( - 'bar1' => 1, - 'bar2' => 1, - 'bar3' => 1, - 'bar4' => 1, - 'bar5' => 1, - ), - ); - -$foo = array( - '1' => $row['status'] === 'rejected' - ? self::REJECTED_CODE - : self::VERIFIED_CODE, - '2' => in_array($row['status'], array('notverified', 'unverified'), true) - ? self::STATUS_PENDING - : self::STATUS_VERIFIED, - '3' => strtotime($row['date']), - ); - -$foo = foo( - array( - // comment - ) -); - -$foo = array( - << lorem( - 1 - ), - 2 => 2, -); - -$foo = array( - 'тип' => 'авто', - 'цвет' => 'синий', - ); - -$paths = array( - Init::ROOT_DIR.'/тип' => 'авто', - Init::ROOT_DIR.'/цвет' => 'синий', - ); - -$foo = array(<< fn() => return 1, - 'bb' => fn() => return 2, - 'ccc' => ( true ) ? - fn() => return 1 : - fn() => return 2, - ); - -$array = array( - 1 => '1', - 2 => fn ($x) => yield 'a' => $x, - 3 => '3', - ); - -$foo = array( - $this->fn => 'value', - $foo->fn => 'value', - ); - -array( - $a, - $b, - $c, -); - -array( - 'a' => $a, - 'b' => $b, - 'c' => $c, -); - -array( - static function() { - return null; - }, - (array) array(), - (bool) array(), - (double) array(), - (int) array(), - (object) array(), - (string) array(), - (unset) array(), -); - -array( - 'foo', - 'bar' - // This is a non-fixable error. - , -); - -yield array( - static fn () : string => '', - ); - -yield array( - static fn () : string => '', - ); - -$foo = array( - 'foo' => match ($anything) { - 'foo' => 'bar', - default => null, - }, - ); - -// Intentional syntax error. -$a = array( - 'a' => - ); - -// Safeguard correct errors for key/no key when PHP 7.4+ array unpacking is encountered. -$x = array( - ...$a, - 'foo' => 'bar', - ); - -$x = array( - 'foo' => 'bar', - ...$a, - ); - -$x = array( - 'foo' => 'bar', - ...$a, - 'baz' => 'bar', - ); - -$x = array( - ...$a, - 'foo' => 'bar', // OK. - 'bar', // NoKeySpecified Error (based on second entry). - ); - -$x = array( - ...$a, - 'bar', // OK. - 'foo' => 'bar', // KeySpecified Error (based on second entry). - ); - -$x = array( - 'foo' => 'bar', - ...$a, - 'baz' => 'bar', - 'bar', // NoKeySpecified Error (based on first entry). - ); - -$x = array( - 'bar', - ...$a, - 'bar', - 'baz' => 'bar', // KeySpecified (based on first entry). - ); - - $x = - array( - 'a', - 'b', - ); - -$x = array( - 1, - static fn (float $item): float => match ($item) { - 2.0 => 3.0, - default => $item - }, - ); - -$x = array( - 1, - static::helloWorld(), - $class instanceof static, - 2, - ); - -$noSpaceBeforeDoubleArrow = array( - 'width' => '', - 'height' => '', - ); - -$newlineAfterDoubleArrow = array( - 'width' => '', - 'height' => '', - ); diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.2.inc b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.2.inc deleted file mode 100644 index 415042d8..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.2.inc +++ /dev/null @@ -1,555 +0,0 @@ - 1, - ]; -} - -class TestClass -{ - public $good = [ - 'width' => '', - 'height' => '', - ]; - - private $_bad = [ - 'width' => '', - 'height' => '' - ]; - - - public function test() - { - $truck = [ - 'width' => '', - 'height' => '', - ]; - - $plane = [ - 'width' => '', - 'height' => '', - ]; - - $car = [ - 'width' => '', - 'height' => '', - ]; - - $bus = [ - 'width' => '', - 'height' => '' - ]; - - $train = [ - TRUE, - FALSE, - 'aaa' - ]; - - $inline = ['aaa', 'bbb', 'ccc']; - $inline = ['aaa']; - $inline = ['aaa']; - - $bigone = [ - 'name' => 'bigone', - 'children' => [ - '1a' => 'child', - '11b' => 'child', - '111c' => 'child', - 'children' => [ - 'child' => 'aaa', - ], - ], - 'short_name' => 'big' - ]; - } - -}//end class - -$value = [ ]; -$value = [ ]; -$value = ['1'=>$one, '2' => $two, '3'=> $three, '4' =>$four]; -$value = ['1'=>$one]; - -if (in_array('1', ['1','2','3']) === TRUE) { - $value = in_array('1', ['1' , '2', '3','4']); -} - -$value = [ - '1'=> TRUE, - FALSE, - '3' => 'aaa',]; - -$value = [ - '1'=> TRUE, - FALSE, - ]; - -$value = [ - TRUE, - '1' => FALSE, - ]; - -$value = [1, - 2 , - 3 , - ]; - -$value = [1 => $one, - 2 => $two , - 3 => $three , - ]; - -$value = [ - 'tag' => $tag, - 'space' => $this->_getIndentation($tag, $tagElement), - ]; - -$expected = [ - [ - '1' => 1, - '1' => 2, - ], - ]; - -$expected = [ - [ - '1' => 1, - '1' => 2 - ] - ]; - -// Space in second arg. -$args = [ - '"'.$this->id.'"', - (int) $hasSessions, - ]; - -// No errors. -$paths = [ - Init::ROOT_DIR.'/Systems' => 'Systems', - Init::ROOT_DIR.'/Installer' => 'Systems', - ]; - -$x = [ - ]; - -$x = ['test' - ]; -$x = ['test', - ]; -$x = ['name' => 'test', - ]; - -$x = [ - $x, - ]; - -$func = [ - $x, - 'get'.$x.'Replacement' - ]; - -$array = [ - 'input_one' => 'one', - 'inputTwo' => 'two', - 'input_3' => 3, - ]; - -$array = [ - 'input_one', - 'inputTwo', - 'input_3', - ]; - -// Malformed -$foo = [1 -, 2]; - -$listItems[$aliasPath] = ['itemContent' => implode('
    ', $aliases)]; - -$listItems[$aliasPath] = [ - 'itemContent' => implode('
    ', $aliases) - ]; - -$x = - [ - $x, - $y, - ]; - -$x = -[ - $x, - $y, - ]; - -$x = [ - - $x, - $y, - ]; - -$test = [ - 'test' => TestFunction::blah( - $value1, - $value2 - ), - ]; - -$c = ['a' => 1,]; -$c->{$var}[ ] = 2; - -$foo = ['[',']',':',"\n","\r"]; -$bar = ['[',']',':',' ',' ']; - -function foo() -{ - return [$a, $b->screen]; -} - -$array = [ - 'name' => 'contactSubject', - 'required' => TRUE, - 'validators' => [ - new \Zend\Validator\InArray(['haystack' => array_keys($aSubjects)]), - ], - ]; - -$var = [ - 'ViewHelper', - ['Foo'], - 'Errors', - ]; - -$data = [ - 'first', - 'second', - 'third', - // Add more here - ]; - -$data = [ - 'first', - 'second', - //'third', - ]; - -$data = [ - 'first', - 'second' - //'third', - ]; - -$foo = [ - $this->getViewName() . '.id' => 'value', - $this->getViewName() . '.title' => 'value', - ]; - -$foo = [ - $this->getViewName() . '.id', - $this->getViewName() . '.title', - ]; - -$weightings = [ - T_CLOSURE => 100, - - /* - Conditions. - */ - - T_WHILE => 50, - - /* - Operators and arithmetic. - */ - - T_BITWISE_AND => 8, - - T_BOOLEAN_AND => 5, - - /* - Equality. - */ - - T_IS_GREATER_OR_EQUAL => 5, - ]; - -foreach ([ - 'foo' => 'bar', - 'foobaz' => 'bazzy', - ] as $key => $value) { -} - -$ids = [ - '1', // Foo. - '13', // Bar. - ]; - -[ - 'key1' => function($bar) { - return $bar; - }, - 'key2' => function($foo) { - return $foo; - }, - 'key3' => function($bar) { - return $bar; - } -]; - -[ - 'key1' => [ - '1', - '2', - ] -]; - -$var = [ - 'tab_template' => ' -
  • %s
  • ', - 'panel_template' => ' -
    - %s -
    ', - ]; - -function test() : array -{ - return []; -} - -$fields = [ - 'id' => ['type' => 'INT'], - 'value' => ['type' => 'VARCHAR']]; - -get_current_screen()->add_help_tab( [ - 'id' => << false]; - -$x = [ - 'xxxx' => ['aaaaaaaaaa' => 'ccccccccccc', - 'bbbbbbbb' => false], -]; - -$foo = ['foo' => ['bar1' => 1 - ,'bar2' => 1 - ,'bar3' => 1 - ,'bar4' => 1 - ,'bar5' => 1 - ] - ]; - -$foo = [ - '1' => $row['status'] === 'rejected' - ? self::REJECTED_CODE - : self::VERIFIED_CODE, - '2' => in_array($row['status'], ['notverified', 'unverified'], true) - ? self::STATUS_PENDING - : self::STATUS_VERIFIED, - '3' => strtotime($row['date']), - ]; - - -$foo = foo( - [ - // comment - ] -); - -$foo = [ - << lorem( - 1 - ), 2 => 2, -]; - -$foo = [ - 'тип' => 'авто', - 'цвет' => 'синий', - ]; - -$paths = [ - Init::ROOT_DIR.'/тип' => 'авто', - Init::ROOT_DIR.'/цвет' => 'синий', - ]; - -$foo = [<< fn() => return 1, - 'bb' => fn() => return 2, - 'ccc' => ( true ) ? - fn() => return 1 : - fn() => return 2, - ]; - -$array = [ - 1 => '1', - 2 => fn ($x) => yield 'a' => $x, - 3 => '3', - ]; - -$foo = [ - $this->fn => 'value', - $foo->fn => 'value', - ]; - -[$a, $b, -$c]; - -['a' => $a, 'b' => $b, -'c' => $c]; - -[ - static function() { - return null; - }, - (array) [], - (bool) [], - (double) [], - (int) [], - (object) [], - (string) [], - (unset) [], -]; - -[ - 'foo', - 'bar' - // This is a non-fixable error. - , -]; - -yield [ - static fn () : string => '', -]; - -yield [ - static fn () : string => '', - ]; - -$foo = [ - 'foo' => match ($anything) { - 'foo' => 'bar', - default => null, - }, - ]; - -// Intentional syntax error. -$a = [ - 'a' => - ]; - -// Safeguard correct errors for key/no key when PHP 7.4+ array unpacking is encountered. -$x = [ - ...$a, - 'foo' => 'bar', - ]; - -$x = [ - 'foo' => 'bar', - ...$a, - ]; - -$x = [ - 'foo' => 'bar', - ...$a, - 'baz' => 'bar', - ]; - -$x = [ - ...$a, - 'foo' => 'bar', // OK. - 'bar', // NoKeySpecified Error (based on second entry). - ]; - -$x = [ - ...$a, - 'bar', // OK. - 'foo' => 'bar', // KeySpecified Error (based on second entry). - ]; - -$x = [ - 'foo' => 'bar', - ...$a, - 'baz' => 'bar', - 'bar', // NoKeySpecified Error (based on first entry). - ]; - -$x = [ - 'bar', - ...$a, - 'bar', - 'baz' => 'bar', // KeySpecified (based on first entry). - ]; - - $x = - [ - 'a', - 'b', - ]; - -$x = [ - 1, static fn (float $item): float => match ($item) { - 2.0 => 3.0, - default => $item - }, - ]; - -$x = [ - 1, static::helloWorld(), $class instanceof static, - 2, - ]; - -$noSpaceBeforeDoubleArrow = [ - 'width'=> '', - 'height' => '', - ]; - -$newlineAfterDoubleArrow = [ - 'width' => - '', - 'height' => '', - ]; - -// Sniff should ignore short lists when inside a foreach. -// https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/527 -foreach ($data as [, , $value]) {} -foreach ($array as $k => [$v1, , $v3]) {} -foreach ([$a ,$b] as $c) {} // Not a short list. Sniff should handle it. diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.2.inc.fixed b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.2.inc.fixed deleted file mode 100644 index d835064b..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.2.inc.fixed +++ /dev/null @@ -1,591 +0,0 @@ - 1]; -} - -class TestClass -{ - public $good = [ - 'width' => '', - 'height' => '', - ]; - - private $_bad = [ - 'width' => '', - 'height' => '', - ]; - - - public function test() - { - $truck = [ - 'width' => '', - 'height' => '', - ]; - - $plane = [ - 'width' => '', - 'height' => '', - ]; - - $car = [ - 'width' => '', - 'height' => '', - ]; - - $bus = [ - 'width' => '', - 'height' => '', - ]; - - $train = [ - TRUE, - FALSE, - 'aaa', - ]; - - $inline = [ - 'aaa', - 'bbb', - 'ccc', - ]; - $inline = ['aaa']; - $inline = ['aaa']; - - $bigone = [ - 'name' => 'bigone', - 'children' => [ - '1a' => 'child', - '11b' => 'child', - '111c' => 'child', - 'children' => ['child' => 'aaa'], - ], - 'short_name' => 'big', - ]; - } - -}//end class - -$value = []; -$value = []; -$value = [ - '1' => $one, - '2' => $two, - '3' => $three, - '4' => $four, - ]; -$value = ['1' => $one]; - -if (in_array('1', ['1', '2', '3']) === TRUE) { - $value = in_array('1', ['1', '2', '3', '4']); -} - -$value = [ - '1'=> TRUE, - FALSE, - '3' => 'aaa', - ]; - -$value = [ - '1'=> TRUE, - FALSE, - ]; - -$value = [ - TRUE, - '1' => FALSE, - ]; - -$value = [ - 1, - 2, - 3, - ]; - -$value = [ - 1 => $one, - 2 => $two, - 3 => $three, - ]; - -$value = [ - 'tag' => $tag, - 'space' => $this->_getIndentation($tag, $tagElement), - ]; - -$expected = [ - [ - '1' => 1, - '1' => 2, - ], - ]; - -$expected = [ - [ - '1' => 1, - '1' => 2, - ], - ]; - -// Space in second arg. -$args = [ - '"'.$this->id.'"', - (int) $hasSessions, - ]; - -// No errors. -$paths = [ - Init::ROOT_DIR.'/Systems' => 'Systems', - Init::ROOT_DIR.'/Installer' => 'Systems', - ]; - -$x = []; - -$x = ['test']; -$x = ['test']; -$x = ['name' => 'test']; - -$x = [$x]; - -$func = [ - $x, - 'get'.$x.'Replacement', - ]; - -$array = [ - 'input_one' => 'one', - 'inputTwo' => 'two', - 'input_3' => 3, - ]; - -$array = [ - 'input_one', - 'inputTwo', - 'input_3', - ]; - -// Malformed -$foo = [ - 1, - 2, - ]; - -$listItems[$aliasPath] = ['itemContent' => implode('
    ', $aliases)]; - -$listItems[$aliasPath] = [ - 'itemContent' => implode('
    ', $aliases), - ]; - -$x = - [ - $x, - $y, - ]; - -$x = -[ - $x, - $y, -]; - -$x = [ - - $x, - $y, - ]; - -$test = [ - 'test' => TestFunction::blah( - $value1, - $value2 - ), - ]; - -$c = ['a' => 1]; -$c->{$var}[ ] = 2; - -$foo = [ - '[', - ']', - ':', - "\n", - "\r", - ]; -$bar = [ - '[', - ']', - ':', - ' ', - ' ', - ]; - -function foo() -{ - return [ - $a, - $b->screen, - ]; -} - -$array = [ - 'name' => 'contactSubject', - 'required' => TRUE, - 'validators' => [ - new \Zend\Validator\InArray(['haystack' => array_keys($aSubjects)]), - ], - ]; - -$var = [ - 'ViewHelper', - ['Foo'], - 'Errors', - ]; - -$data = [ - 'first', - 'second', - 'third', - // Add more here - ]; - -$data = [ - 'first', - 'second', - //'third', - ]; - -$data = [ - 'first', - 'second', - //'third', - ]; - -$foo = [ - $this->getViewName() . '.id' => 'value', - $this->getViewName() . '.title' => 'value', - ]; - -$foo = [ - $this->getViewName() . '.id', - $this->getViewName() . '.title', - ]; - -$weightings = [ - T_CLOSURE => 100, - - /* - Conditions. - */ - - T_WHILE => 50, - - /* - Operators and arithmetic. - */ - - T_BITWISE_AND => 8, - - T_BOOLEAN_AND => 5, - - /* - Equality. - */ - - T_IS_GREATER_OR_EQUAL => 5, - ]; - -foreach ([ - 'foo' => 'bar', - 'foobaz' => 'bazzy', - ] as $key => $value) { -} - -$ids = [ - '1', // Foo. - '13', // Bar. - ]; - -[ - 'key1' => function($bar) { - return $bar; - }, - 'key2' => function($foo) { - return $foo; - }, - 'key3' => function($bar) { - return $bar; - }, -]; - -[ - 'key1' => [ - '1', - '2', - ], -]; - -$var = [ - 'tab_template' => ' -
  • %s
  • ', - 'panel_template' => ' -
    - %s -
    ', - ]; - -function test() : array -{ - return []; -} - -$fields = [ - 'id' => ['type' => 'INT'], - 'value' => ['type' => 'VARCHAR'], - ]; - -get_current_screen()->add_help_tab( [ - 'id' => << false]; - -$x = [ - 'xxxx' => [ - 'aaaaaaaaaa' => 'ccccccccccc', - 'bbbbbbbb' => false, - ], - ]; - -$foo = [ - 'foo' => [ - 'bar1' => 1, - 'bar2' => 1, - 'bar3' => 1, - 'bar4' => 1, - 'bar5' => 1, - ], - ]; - -$foo = [ - '1' => $row['status'] === 'rejected' - ? self::REJECTED_CODE - : self::VERIFIED_CODE, - '2' => in_array($row['status'], ['notverified', 'unverified'], true) - ? self::STATUS_PENDING - : self::STATUS_VERIFIED, - '3' => strtotime($row['date']), - ]; - - -$foo = foo( - [ - // comment - ] -); - -$foo = [ - << lorem( - 1 - ), - 2 => 2, -]; - -$foo = [ - 'тип' => 'авто', - 'цвет' => 'синий', - ]; - -$paths = [ - Init::ROOT_DIR.'/тип' => 'авто', - Init::ROOT_DIR.'/цвет' => 'синий', - ]; - -$foo = [<< fn() => return 1, - 'bb' => fn() => return 2, - 'ccc' => ( true ) ? - fn() => return 1 : - fn() => return 2, - ]; - -$array = [ - 1 => '1', - 2 => fn ($x) => yield 'a' => $x, - 3 => '3', - ]; - -$foo = [ - $this->fn => 'value', - $foo->fn => 'value', - ]; - -[ - $a, - $b, - $c, -]; - -[ - 'a' => $a, - 'b' => $b, - 'c' => $c, -]; - -[ - static function() { - return null; - }, - (array) [], - (bool) [], - (double) [], - (int) [], - (object) [], - (string) [], - (unset) [], -]; - -[ - 'foo', - 'bar' - // This is a non-fixable error. - , -]; - -yield [ - static fn () : string => '', - ]; - -yield [ - static fn () : string => '', - ]; - -$foo = [ - 'foo' => match ($anything) { - 'foo' => 'bar', - default => null, - }, - ]; - -// Intentional syntax error. -$a = [ - 'a' => - ]; - -// Safeguard correct errors for key/no key when PHP 7.4+ array unpacking is encountered. -$x = [ - ...$a, - 'foo' => 'bar', - ]; - -$x = [ - 'foo' => 'bar', - ...$a, - ]; - -$x = [ - 'foo' => 'bar', - ...$a, - 'baz' => 'bar', - ]; - -$x = [ - ...$a, - 'foo' => 'bar', // OK. - 'bar', // NoKeySpecified Error (based on second entry). - ]; - -$x = [ - ...$a, - 'bar', // OK. - 'foo' => 'bar', // KeySpecified Error (based on second entry). - ]; - -$x = [ - 'foo' => 'bar', - ...$a, - 'baz' => 'bar', - 'bar', // NoKeySpecified Error (based on first entry). - ]; - -$x = [ - 'bar', - ...$a, - 'bar', - 'baz' => 'bar', // KeySpecified (based on first entry). - ]; - - $x = - [ - 'a', - 'b', - ]; - -$x = [ - 1, - static fn (float $item): float => match ($item) { - 2.0 => 3.0, - default => $item - }, - ]; - -$x = [ - 1, - static::helloWorld(), - $class instanceof static, - 2, - ]; - -$noSpaceBeforeDoubleArrow = [ - 'width' => '', - 'height' => '', - ]; - -$newlineAfterDoubleArrow = [ - 'width' => '', - 'height' => '', - ]; - -// Sniff should ignore short lists when inside a foreach. -// https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/527 -foreach ($data as [, , $value]) {} -foreach ($array as $k => [$v1, , $v3]) {} -foreach ([$a, $b] as $c) {} // Not a short list. Sniff should handle it. diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.php deleted file mode 100644 index d173cc24..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.php +++ /dev/null @@ -1,262 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Tests\Arrays; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the ArrayDeclaration sniff. - * - * @covers \PHP_CodeSniffer\Standards\Squiz\Sniffs\Arrays\ArrayDeclarationSniff - */ -final class ArrayDeclarationUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getErrorList($testFile='') - { - switch ($testFile) { - case 'ArrayDeclarationUnitTest.1.inc': - return [ - 2 => 1, - 8 => 2, - 10 => 2, - 22 => 1, - 23 => 2, - 24 => 2, - 25 => 1, - 31 => 2, - 35 => 1, - 36 => 2, - 41 => 1, - 46 => 1, - 47 => 1, - 50 => 1, - 51 => 1, - 53 => 1, - 56 => 1, - 58 => 1, - 61 => 1, - 62 => 1, - 63 => 1, - 64 => 1, - 65 => 1, - 66 => 3, - 70 => 1, - 76 => 2, - 77 => 1, - 78 => 7, - 79 => 2, - 81 => 2, - 82 => 4, - 87 => 1, - 88 => 1, - 92 => 1, - 97 => 1, - 100 => 1, - 101 => 1, - 102 => 1, - 105 => 1, - 106 => 1, - 107 => 1, - 125 => 1, - 126 => 1, - 141 => 1, - 144 => 1, - 146 => 1, - 148 => 1, - 151 => 1, - 157 => 1, - 173 => 1, - 174 => 3, - 179 => 1, - 182 => 1, - 188 => 1, - 207 => 1, - 212 => 2, - 214 => 1, - 218 => 2, - 219 => 2, - 223 => 1, - 255 => 1, - 294 => 1, - 295 => 1, - 296 => 1, - 311 => 1, - 317 => 1, - 339 => 2, - 348 => 2, - 352 => 2, - 355 => 3, - 358 => 3, - 359 => 2, - 360 => 1, - 362 => 1, - 363 => 2, - 364 => 1, - 365 => 2, - 366 => 2, - 367 => 2, - 368 => 2, - 369 => 1, - 370 => 1, - 383 => 1, - 394 => 1, - 400 => 1, - 406 => 1, - 441 => 1, - 444 => 2, - 445 => 2, - 447 => 2, - 448 => 3, - 467 => 1, - 471 => 1, - 472 => 1, - 510 => 1, - 516 => 1, - 523 => 1, - 530 => 1, - 537 => 1, - 540 => 1, - 547 => 2, - 552 => 1, - 557 => 1, - ]; - case 'ArrayDeclarationUnitTest.2.inc': - return [ - 2 => 1, - 10 => 1, - 23 => 2, - 24 => 2, - 25 => 1, - 31 => 2, - 36 => 2, - 41 => 1, - 46 => 1, - 47 => 1, - 51 => 1, - 53 => 1, - 56 => 1, - 61 => 1, - 63 => 1, - 64 => 1, - 65 => 1, - 66 => 2, - 70 => 1, - 76 => 1, - 77 => 1, - 78 => 7, - 79 => 2, - 81 => 2, - 82 => 4, - 87 => 1, - 88 => 1, - 92 => 1, - 97 => 1, - 100 => 1, - 101 => 1, - 102 => 1, - 105 => 1, - 106 => 1, - 107 => 1, - 125 => 1, - 126 => 1, - 141 => 1, - 144 => 1, - 146 => 1, - 148 => 1, - 151 => 1, - 157 => 1, - 173 => 1, - 174 => 3, - 179 => 1, - 190 => 1, - 191 => 1, - 192 => 1, - 207 => 1, - 210 => 1, - 211 => 1, - 215 => 1, - 247 => 1, - 286 => 1, - 287 => 1, - 288 => 1, - 303 => 1, - 309 => 1, - 331 => 2, - 345 => 3, - 348 => 3, - 349 => 2, - 350 => 1, - 352 => 2, - 353 => 2, - 354 => 2, - 355 => 2, - 356 => 2, - 357 => 1, - 358 => 1, - 372 => 1, - 383 => 1, - 389 => 1, - 395 => 1, - 430 => 1, - 433 => 2, - 434 => 2, - 436 => 2, - 437 => 3, - 456 => 1, - 460 => 1, - 461 => 1, - 499 => 1, - 505 => 1, - 512 => 1, - 519 => 1, - 526 => 1, - 529 => 1, - 536 => 2, - 541 => 1, - 546 => 1, - 555 => 2, - ]; - case 'ArrayDeclarationUnitTest.4.inc': - return [8 => 1]; - default: - return []; - }//end switch - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/CSS/ShorthandSizeUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/CSS/ShorthandSizeUnitTest.php deleted file mode 100644 index 7394b77c..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/CSS/ShorthandSizeUnitTest.php +++ /dev/null @@ -1,72 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Tests\CSS; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the ShorthandSize sniff. - * - * @covers \PHP_CodeSniffer\Standards\Squiz\Sniffs\CSS\ShorthandSizeSniff - */ -final class ShorthandSizeUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getErrorList($testFile='') - { - switch ($testFile) { - case 'ShorthandSizeUnitTest.1.css': - return [ - 8 => 1, - 9 => 1, - 10 => 1, - 11 => 1, - 12 => 1, - 13 => 1, - 15 => 1, - 16 => 1, - 17 => 1, - 21 => 1, - ]; - - default: - return []; - }//end switch - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Classes/SelfMemberReferenceUnitTest.inc b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Classes/SelfMemberReferenceUnitTest.inc deleted file mode 100644 index 4f178138..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Classes/SelfMemberReferenceUnitTest.inc +++ /dev/null @@ -1,199 +0,0 @@ -testResults; - - - // Correct call to self. - $testResults[] = self::selfMemberReferenceUnitTestFunction(); - $testResults[] = parent::selfMemberReferenceUnitTestFunction(); - - // Incorrect case. - $testResults[] = Self::selfMemberReferenceUnitTestFunction(); - $testResults[] = SELF::selfMemberReferenceUnitTestFunction(); - $testResults[] = SelfMemberReferenceUnitTestExample::selfMemberReferenceUnitTestFunction(); - - - // Incorrect spacing. - $testResults[] = self ::selfMemberReferenceUnitTestFunction(); - $testResults[] = self:: selfMemberReferenceUnitTestFunction(); - $testResults[] = self :: selfMemberReferenceUnitTestFunction(); - - // Remove ALL the newlines - $testResults[] = self - - - - - :: - - - - - selfMemberReferenceUnitTestFunction(); - - } - - - function selfMemberReferenceUnitTestFunction() - { - $this->testCount = $this->testCount + 1; - return $this->testCount; - - } - - -} - - -class MyClass { - - public static function test($value) { - echo "$value\n"; - } - - public static function walk() { - $callback = function($value, $key) { - // This is valid because you can't use self:: in a closure. - MyClass::test($value); - }; - - $array = array(1,2,3); - array_walk($array, $callback); - } -} - -MyClass::walk(); - -class Controller -{ - public function Action() - { - Doctrine\Common\Util\Debug::dump(); - } -} - -class Foo -{ - public static function bar() - { - \Foo::baz(); - } -} - -namespace TYPO3\CMS\Reports; - -class Status { - const NOTICE = -2; - const INFO = -1; - const OK = 0; - const WARNING = 1; - const ERROR = 2; -} - -namespace TYPO3\CMS\Reports\Report\Status; - -class Status implements \TYPO3\CMS\Reports\ReportInterface { - public function getHighestSeverity(array $statusCollection) { - $highestSeverity = \TYPO3\CMS\Reports\Status::NOTICE; - } -} - -namespace Foo; - -class Bar { - - function myFunction() - { - \Foo\Whatever::something(); - \Foo\Bar::something(); - } -} - -namespace Foo\Bar; - -class Baz { - - function myFunction() - { - \Foo\Bar\Whatever::something(); - \Foo\Bar\Baz::something(); - } -} - -class Nested_Anon_Class { - public function getAnonymousClass() { - // Spacing/comments should not cause false negatives for the NotUsed error. - Nested_Anon_Class :: $prop; - Nested_Anon_Class - /* some comment */ - - :: - - // phpcs:ignore Standard.Category.SniffName -- for reasons. - Bar(); - - // Anonymous class is a different scope. - return new class() { - public function nested_function() { - Nested_Anon_Class::$prop; - Nested_Anon_Class::BAR; - } - }; - } -} - -// Test dealing with scoped namespaces. -namespace Foo\Baz { - class BarFoo { - public function foo() { - echo Foo\Baz\BarFoo::$prop; - } - } -} - -// Prevent false negative when namespace has whitespace/comments. -namespace Foo /*comment*/ \ Bah { - class BarFoo { - public function foo() { - echo Foo \ /*comment*/ Bah\BarFoo::$prop; - } - } -} - -namespace EndsIn\CloseTag ?> -testResults; - - - // Correct call to self. - $testResults[] = self::selfMemberReferenceUnitTestFunction(); - $testResults[] = parent::selfMemberReferenceUnitTestFunction(); - - // Incorrect case. - $testResults[] = self::selfMemberReferenceUnitTestFunction(); - $testResults[] = self::selfMemberReferenceUnitTestFunction(); - $testResults[] = self::selfMemberReferenceUnitTestFunction(); - - - // Incorrect spacing. - $testResults[] = self::selfMemberReferenceUnitTestFunction(); - $testResults[] = self::selfMemberReferenceUnitTestFunction(); - $testResults[] = self::selfMemberReferenceUnitTestFunction(); - - // Remove ALL the newlines - $testResults[] = self::selfMemberReferenceUnitTestFunction(); - - } - - - function selfMemberReferenceUnitTestFunction() - { - $this->testCount = $this->testCount + 1; - return $this->testCount; - - } - - -} - - -class MyClass { - - public static function test($value) { - echo "$value\n"; - } - - public static function walk() { - $callback = function($value, $key) { - // This is valid because you can't use self:: in a closure. - MyClass::test($value); - }; - - $array = array(1,2,3); - array_walk($array, $callback); - } -} - -MyClass::walk(); - -class Controller -{ - public function Action() - { - Doctrine\Common\Util\Debug::dump(); - } -} - -class Foo -{ - public static function bar() - { - self::baz(); - } -} - -namespace TYPO3\CMS\Reports; - -class Status { - const NOTICE = -2; - const INFO = -1; - const OK = 0; - const WARNING = 1; - const ERROR = 2; -} - -namespace TYPO3\CMS\Reports\Report\Status; - -class Status implements \TYPO3\CMS\Reports\ReportInterface { - public function getHighestSeverity(array $statusCollection) { - $highestSeverity = \TYPO3\CMS\Reports\Status::NOTICE; - } -} - -namespace Foo; - -class Bar { - - function myFunction() - { - \Foo\Whatever::something(); - self::something(); - } -} - -namespace Foo\Bar; - -class Baz { - - function myFunction() - { - \Foo\Bar\Whatever::something(); - self::something(); - } -} - -class Nested_Anon_Class { - public function getAnonymousClass() { - // Spacing/comments should not cause false negatives for the NotUsed error. - self::$prop; - - /* some comment */ - - self::// phpcs:ignore Standard.Category.SniffName -- for reasons. - Bar(); - - // Anonymous class is a different scope. - return new class() { - public function nested_function() { - Nested_Anon_Class::$prop; - Nested_Anon_Class::BAR; - } - }; - } -} - -// Test dealing with scoped namespaces. -namespace Foo\Baz { - class BarFoo { - public function foo() { - echo self::$prop; - } - } -} - -// Prevent false negative when namespace has whitespace/comments. -namespace Foo /*comment*/ \ Bah { - class BarFoo { - public function foo() { - echo /*comment*/ self::$prop; - } - } -} - -namespace EndsIn\CloseTag ?> - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Tests\Classes; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the SelfMemberReference sniff. - * - * @covers \PHP_CodeSniffer\Standards\Squiz\Sniffs\Classes\SelfMemberReferenceSniff - */ -final class SelfMemberReferenceUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @return array - */ - public function getErrorList() - { - return [ - 24 => 1, - 25 => 1, - 26 => 1, - 30 => 1, - 31 => 1, - 32 => 2, - 40 => 2, - 92 => 1, - 121 => 1, - 132 => 1, - 139 => 3, - 140 => 1, - 143 => 2, - 162 => 1, - 171 => 1, - 183 => 1, - 197 => 1, - ]; - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Commenting/ClosingDeclarationCommentUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Commenting/ClosingDeclarationCommentUnitTest.php deleted file mode 100644 index fcbb0264..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Commenting/ClosingDeclarationCommentUnitTest.php +++ /dev/null @@ -1,96 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Tests\Commenting; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the ClosingDeclarationComment sniff. - * - * @covers \PHP_CodeSniffer\Standards\Squiz\Sniffs\Commenting\ClosingDeclarationCommentSniff - */ -final class ClosingDeclarationCommentUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the test file being tested. - * - * @return array - */ - public function getErrorList($testFile='') - { - switch ($testFile) { - case 'ClosingDeclarationCommentUnitTest.1.inc': - return [ - 13 => 1, - 17 => 1, - 31 => 1, - 41 => 1, - 59 => 1, - 63 => 1, - 67 => 1, - 79 => 1, - 83 => 1, - 89 => 1, - 92 => 1, - 98 => 1, - 101 => 1, - 106 => 1, - 110 => 1, - 124 => 1, - ]; - - case 'ClosingDeclarationCommentUnitTest.4.inc': - return [8 => 1]; - - case 'ClosingDeclarationCommentUnitTest.5.inc': - return [11 => 1]; - - default: - return []; - }//end switch - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @param string $testFile The name of the test file being tested. - * - * @return array - */ - public function getWarningList($testFile='') - { - switch ($testFile) { - case 'ClosingDeclarationCommentUnitTest.1.inc': - return [71 => 1]; - - case 'ClosingDeclarationCommentUnitTest.2.inc': - case 'ClosingDeclarationCommentUnitTest.3.inc': - return [7 => 1]; - - default: - return []; - } - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Commenting/PostStatementCommentUnitTest.inc b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Commenting/PostStatementCommentUnitTest.inc deleted file mode 100644 index 3374c476..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Commenting/PostStatementCommentUnitTest.inc +++ /dev/null @@ -1,64 +0,0 @@ - function($b) { - }, // comment. - 'key' => 'value', // phpcs:ignore Standard.Category.SniffName -- for reasons. - 'key' => 'value', // comment. -]; - -// Verify that multi-line control structure with comments and annotations are left alone. -for ( - $i = 0; /* Start */ - $i < 10; /* phpcs:ignore Standard.Category.SniffName -- for reasons. */ - $i++ // comment - -) {} - -if ( $condition === true // comment - && $anotherCondition === false -) {} - -$match = match($foo // comment - && $bar -) { - 1 => 1, // comment -}; - -// Issue #560: Annotations should be reported separately and be non-auto-fixable as their meaning may change when moved. -$a = 1; //@codeCoverageIgnore -$b = 2; // @phpstan-ignore variable.undefined -$c = 3; // @phpstan-ignore variable.undefined -$d = 4; // @tabInsteadOfSpace - -// Comments that include `@`, but are not recognized as annotations by this sniff. -$a = 1; // @ = add tag. -$b = 2; // Some comment. // @username diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Commenting/PostStatementCommentUnitTest.inc.fixed b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Commenting/PostStatementCommentUnitTest.inc.fixed deleted file mode 100644 index bd6b171b..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Commenting/PostStatementCommentUnitTest.inc.fixed +++ /dev/null @@ -1,71 +0,0 @@ - function($b) { - }, // comment. - 'key' => 'value', // phpcs:ignore Standard.Category.SniffName -- for reasons. - 'key' => 'value', -// comment. -]; - -// Verify that multi-line control structure with comments and annotations are left alone. -for ( - $i = 0; /* Start */ - $i < 10; /* phpcs:ignore Standard.Category.SniffName -- for reasons. */ - $i++ // comment - -) {} - -if ( $condition === true // comment - && $anotherCondition === false -) {} - -$match = match($foo // comment - && $bar -) { - 1 => 1, -// comment -}; - -// Issue #560: Annotations should be reported separately and be non-auto-fixable as their meaning may change when moved. -$a = 1; //@codeCoverageIgnore -$b = 2; // @phpstan-ignore variable.undefined -$c = 3; // @phpstan-ignore variable.undefined -$d = 4; // @tabInsteadOfSpace - -// Comments that include `@`, but are not recognized as annotations by this sniff. -$a = 1; -// @ = add tag. -$b = 2; -// Some comment. // @username diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Commenting/PostStatementCommentUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Commenting/PostStatementCommentUnitTest.php deleted file mode 100644 index ba3b1c72..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Commenting/PostStatementCommentUnitTest.php +++ /dev/null @@ -1,80 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Tests\Commenting; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the PostStatementComment sniff. - * - * @covers \PHP_CodeSniffer\Standards\Squiz\Sniffs\Commenting\PostStatementCommentSniff - */ -final class PostStatementCommentUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getErrorList($testFile='') - { - switch ($testFile) { - case 'PostStatementCommentUnitTest.inc': - return [ - 6 => 1, - 10 => 1, - 18 => 1, - 35 => 1, - 53 => 1, - 57 => 1, - 58 => 1, - 59 => 1, - 60 => 1, - 63 => 1, - 64 => 1, - ]; - - case 'PostStatementCommentUnitTest.1.js': - return [ - 1 => 1, - 4 => 1, - 9 => 1, - ]; - - default: - return []; - }//end switch - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/ControlStructures/ControlSignatureUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/ControlStructures/ControlSignatureUnitTest.php deleted file mode 100644 index f6db4b19..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/ControlStructures/ControlSignatureUnitTest.php +++ /dev/null @@ -1,115 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Tests\ControlStructures; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the ControlSignature sniff. - * - * @covers \PHP_CodeSniffer\Standards\Squiz\Sniffs\ControlStructures\ControlSignatureSniff - */ -final class ControlSignatureUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getErrorList($testFile='') - { - $errors = [ - 7 => 1, - 12 => 1, - 15 => 1, - 18 => 1, - 20 => 1, - 22 => 2, - 28 => 2, - 32 => 1, - 38 => 2, - 42 => 1, - 48 => 2, - 52 => 1, - 62 => 2, - 66 => 2, - 76 => 4, - 80 => 2, - 94 => 1, - 99 => 1, - 108 => 1, - 112 => 1, - ]; - - switch ($testFile) { - case 'ControlSignatureUnitTest.1.inc': - $errors[122] = 1; - $errors[130] = 2; - $errors[134] = 1; - $errors[150] = 1; - $errors[153] = 1; - $errors[158] = 1; - $errors[165] = 1; - $errors[170] = 2; - $errors[185] = 1; - $errors[190] = 2; - $errors[191] = 2; - $errors[195] = 1; - $errors[227] = 1; - $errors[234] = 1; - $errors[239] = 2; - $errors[243] = 2; - $errors[244] = 2; - $errors[248] = 1; - $errors[259] = 1; - $errors[262] = 1; - $errors[267] = 1; - $errors[269] = 1; - $errors[276] = 1; - $errors[279] = 1; - $errors[283] = 1; - $errors[306] = 3; - $errors[309] = 1; - $errors[315] = 1; - return $errors; - - case 'ControlSignatureUnitTest.js': - return $errors; - - default: - return []; - }//end switch - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/ControlStructures/ForLoopDeclarationUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/ControlStructures/ForLoopDeclarationUnitTest.php deleted file mode 100644 index 90b29021..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/ControlStructures/ForLoopDeclarationUnitTest.php +++ /dev/null @@ -1,138 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Tests\ControlStructures; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the ForLoopDeclaration sniff. - * - * @covers \PHP_CodeSniffer\Standards\Squiz\Sniffs\ControlStructures\ForLoopDeclarationSniff - */ -final class ForLoopDeclarationUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getErrorList($testFile='') - { - switch ($testFile) { - case 'ForLoopDeclarationUnitTest.1.inc': - return [ - 8 => 2, - 11 => 2, - 14 => 2, - 17 => 2, - 21 => 6, - 27 => 1, - 30 => 1, - 37 => 2, - 39 => 2, - 43 => 1, - 49 => 1, - 50 => 1, - 53 => 1, - 54 => 1, - 59 => 4, - 62 => 1, - 63 => 1, - 64 => 1, - 66 => 1, - 69 => 1, - 74 => 1, - 77 => 1, - 82 => 2, - 86 => 2, - 91 => 1, - 95 => 1, - 101 => 2, - 105 => 2, - 110 => 1, - 116 => 2, - ]; - - case 'ForLoopDeclarationUnitTest.1.js': - return [ - 6 => 2, - 9 => 2, - 12 => 2, - 15 => 2, - 19 => 6, - 33 => 1, - 36 => 1, - 43 => 2, - 45 => 2, - 49 => 1, - 55 => 1, - 56 => 1, - 59 => 1, - 60 => 1, - 65 => 4, - 68 => 1, - 69 => 1, - 70 => 1, - 72 => 1, - 75 => 1, - 80 => 1, - 83 => 1, - 88 => 2, - 92 => 2, - 97 => 1, - 101 => 1, - 107 => 2, - 111 => 2, - 116 => 1, - 122 => 2, - ]; - - default: - return []; - }//end switch - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getWarningList($testFile='') - { - switch ($testFile) { - case 'ForLoopDeclarationUnitTest.2.inc': - case 'ForLoopDeclarationUnitTest.3.inc': - return [6 => 1]; - - case 'ForLoopDeclarationUnitTest.2.js': - return [2 => 1]; - - default: - return []; - }//end switch - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Formatting/OperatorBracketUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Formatting/OperatorBracketUnitTest.php deleted file mode 100644 index aac43275..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Formatting/OperatorBracketUnitTest.php +++ /dev/null @@ -1,121 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Tests\Formatting; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the OperatorBracket sniff. - * - * @covers \PHP_CodeSniffer\Standards\Squiz\Sniffs\Formatting\OperatorBracketSniff - */ -final class OperatorBracketUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getErrorList($testFile='') - { - switch ($testFile) { - case 'OperatorBracketUnitTest.1.inc': - return [ - 3 => 1, - 6 => 1, - 9 => 1, - 12 => 1, - 15 => 1, - 18 => 2, - 20 => 1, - 25 => 1, - 28 => 1, - 31 => 1, - 34 => 1, - 37 => 1, - 40 => 1, - 43 => 2, - 45 => 1, - 47 => 5, - 48 => 1, - 50 => 2, - 55 => 2, - 56 => 1, - 63 => 2, - 64 => 1, - 67 => 1, - 86 => 1, - 90 => 1, - 109 => 1, - 130 => 1, - 134 => 1, - 135 => 2, - 137 => 1, - 139 => 1, - 150 => 1, - 161 => 1, - 163 => 2, - 165 => 2, - 169 => 1, - 174 => 1, - 176 => 1, - 185 => 1, - 189 => 1, - 193 => 1, - 194 => 2, - ]; - - case 'OperatorBracketUnitTest.js': - return [ - 5 => 1, - 8 => 1, - 11 => 1, - 14 => 1, - 24 => 1, - 30 => 1, - 33 => 1, - 36 => 1, - 39 => 1, - 46 => 1, - 47 => 1, - 63 => 1, - 108 => 1, - ]; - - default: - return []; - }//end switch - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Functions/FunctionDeclarationUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Functions/FunctionDeclarationUnitTest.php deleted file mode 100644 index eb9713d8..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Functions/FunctionDeclarationUnitTest.php +++ /dev/null @@ -1,64 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Tests\Functions; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the FunctionDeclaration sniff. - * - * @covers \PHP_CodeSniffer\Standards\Squiz\Sniffs\Functions\FunctionDeclarationSniff - */ -final class FunctionDeclarationUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getErrorList($testFile='') - { - switch ($testFile) { - case 'FunctionDeclarationUnitTest.1.inc': - return [ - 55 => 1, - 68 => 1, - ]; - - default: - return []; - }//end switch - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Functions/MultiLineFunctionDeclarationUnitTest.inc b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Functions/MultiLineFunctionDeclarationUnitTest.inc deleted file mode 100644 index e9f019eb..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Functions/MultiLineFunctionDeclarationUnitTest.inc +++ /dev/null @@ -1,356 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Tests\Functions; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the MultiLineFunctionDeclaration sniff. - * - * @covers \PHP_CodeSniffer\Standards\Squiz\Sniffs\Functions\MultiLineFunctionDeclarationSniff - */ -final class MultiLineFunctionDeclarationUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getErrorList($testFile='') - { - if ($testFile === 'MultiLineFunctionDeclarationUnitTest.inc') { - $errors = [ - 2 => 1, - 3 => 1, - 4 => 2, - 5 => 1, - 7 => 1, - 11 => 1, - 12 => 1, - 13 => 1, - 16 => 1, - 36 => 1, - 43 => 2, - 48 => 1, - 81 => 1, - 82 => 2, - 88 => 1, - 102 => 2, - 137 => 1, - 141 => 2, - 142 => 1, - 158 => 1, - 160 => 1, - 182 => 2, - 186 => 2, - 190 => 2, - 194 => 1, - 195 => 1, - 233 => 1, - 234 => 1, - 235 => 1, - 236 => 1, - 244 => 1, - 245 => 1, - 246 => 1, - 247 => 1, - 248 => 1, - 249 => 1, - 250 => 1, - 251 => 1, - 252 => 1, - 253 => 1, - 254 => 1, - 318 => 1, - 323 => 1, - ]; - } else { - $errors = [ - 2 => 1, - 3 => 1, - 4 => 2, - 5 => 1, - 7 => 1, - 11 => 1, - 12 => 1, - 13 => 1, - 16 => 1, - 26 => 1, - 36 => 1, - 43 => 2, - 48 => 1, - 65 => 1, - ]; - }//end if - - return $errors; - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Objects/ObjectInstantiationUnitTest.inc b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Objects/ObjectInstantiationUnitTest.inc deleted file mode 100644 index b6df38c9..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Objects/ObjectInstantiationUnitTest.inc +++ /dev/null @@ -1,49 +0,0 @@ - new MyClass()); -$object->myFunction(new MyClass()); - -throw new MyException($msg); - -function foo() { return new MyClass(); } - -$doodad = $x ? new Foo : new Bar; - -function returnFn() { - $fn = fn($x) => new MyClass(); -} - -function returnMatch() { - $match = match($x) { - 0 => new MyClass() - } -} - -// Issue 3333. -$time2 ??= new \DateTime(); -$time3 = $time1 ?? new \DateTime(); -$time3 = $time1 ?? $time2 ?? new \DateTime(); - -function_call($time1 ?? new \DateTime()); -$return = function_call($time1 ?? new \DateTime()); // False negative depending on interpretation of the sniff. - -function returnViaTernary() { - return ($y == false ) ? ($x === true ? new Foo : new Bar) : new FooBar; -} - -function nonAssignmentTernary() { - if (($x ? new Foo() : new Bar) instanceof FooBar) { - // Do something. - } -} - -// Test for tokenizer issue #3789. -$a = $b !== null - ? match ($c) { - default => 5, - } - : new Foo; diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/PHP/DisallowMultipleAssignmentsUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/PHP/DisallowMultipleAssignmentsUnitTest.php deleted file mode 100644 index 1ece87d2..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/PHP/DisallowMultipleAssignmentsUnitTest.php +++ /dev/null @@ -1,71 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Tests\PHP; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the DisallowMultipleAssignments sniff. - * - * @covers \PHP_CodeSniffer\Standards\Squiz\Sniffs\PHP\DisallowMultipleAssignmentsSniff - */ -final class DisallowMultipleAssignmentsUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the test file to process. - * - * @return array - */ - public function getErrorList($testFile='') - { - switch ($testFile) { - case 'DisallowMultipleAssignmentsUnitTest.1.inc': - return [ - 4 => 1, - 5 => 2, - 7 => 1, - 9 => 1, - 12 => 1, - 14 => 1, - 15 => 1, - 79 => 1, - 85 => 1, - ]; - - default: - return []; - } - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/PHP/EmbeddedPhpUnitTest.1.inc b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/PHP/EmbeddedPhpUnitTest.1.inc deleted file mode 100644 index 01546835..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/PHP/EmbeddedPhpUnitTest.1.inc +++ /dev/null @@ -1,275 +0,0 @@ - - - -<?php echo $title ?> - - - - - hello - - - - - - - - - - - - - - - - - - - - - -section as $section) { - ?> - - - - - - section as $section) { - ?> -
    - - - - - - - - -?> - - - - - - - - - - - - - - - - - - - -
    - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - -
    - - - - -
    - - - - - - - - - - - - - - - - - - - - -<?php echo $title; ?> - - - - - hello - - - - - - - - - - - - - - - - - - - -section as $section) { - ?> -
    - - - - - section as $section) { - ?> -
    - - - - - - - - - - - - -?> - - - - - - - - - - - - - - - - - - - -
    - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - -
    - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Tests\PHP; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the EmbeddedPhp sniff. - * - * @covers \PHP_CodeSniffer\Standards\Squiz\Sniffs\PHP\EmbeddedPhpSniff - */ -final class EmbeddedPhpUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getErrorList($testFile='') - { - switch ($testFile) { - case 'EmbeddedPhpUnitTest.1.inc': - return [ - 7 => 1, - 12 => 1, - 18 => 1, - 19 => 2, - 20 => 1, - 21 => 1, - 22 => 3, - 24 => 1, - 26 => 1, - 29 => 1, - 30 => 1, - 31 => 1, - 34 => 1, - 36 => 1, - 40 => 1, - 41 => 1, - 44 => 1, - 45 => 1, - 49 => 1, - 59 => 1, - 63 => 1, - 93 => 1, - 94 => 2, - 100 => 1, - 102 => 1, - 112 => 1, - 113 => 1, - 116 => 1, - 117 => 1, - 120 => 1, - 121 => 1, - 128 => 1, - 129 => 1, - 132 => 1, - 134 => 1, - 136 => 1, - 138 => 1, - 142 => 1, - 145 => 1, - 151 => 1, - 158 => 1, - 165 => 1, - 169 => 1, - 175 => 1, - 176 => 2, - 178 => 1, - 179 => 1, - 180 => 2, - 181 => 1, - 189 => 1, - 212 => 1, - 214 => 2, - 219 => 1, - 223 => 1, - 225 => 1, - 226 => 1, - 227 => 2, - 228 => 1, - 235 => 1, - 241 => 1, - 248 => 1, - 253 => 1, - 258 => 1, - 263 => 1, - 264 => 1, - 270 => 1, - ]; - - case 'EmbeddedPhpUnitTest.2.inc': - case 'EmbeddedPhpUnitTest.4.inc': - return [ - 5 => 2, - 6 => 2, - 7 => 2, - ]; - - case 'EmbeddedPhpUnitTest.3.inc': - return [ - 10 => 1, - 15 => 1, - 21 => 1, - 22 => 2, - 23 => 1, - 24 => 1, - 25 => 3, - 28 => 1, - 29 => 1, - 30 => 1, - 33 => 1, - 35 => 1, - 39 => 1, - 40 => 1, - 43 => 1, - 44 => 1, - 48 => 1, - 53 => 1, - 55 => 1, - 61 => 1, - 62 => 1, - 65 => 2, - 66 => 2, - 69 => 1, - 70 => 1, - 75 => 1, - 82 => 1, - 89 => 1, - 93 => 1, - 98 => 2, - 99 => 1, - 103 => 2, - 105 => 1, - 111 => 1, - 112 => 2, - 114 => 1, - 115 => 1, - 116 => 2, - 117 => 1, - ]; - - case 'EmbeddedPhpUnitTest.5.inc': - return [ - 16 => 1, - 18 => 1, - 25 => 1, - 26 => 1, - 29 => 1, - 31 => 1, - 33 => 1, - 35 => 1, - 39 => 1, - 42 => 1, - ]; - - case 'EmbeddedPhpUnitTest.12.inc': - case 'EmbeddedPhpUnitTest.13.inc': - return [ - 10 => 1, - 12 => 1, - ]; - - case 'EmbeddedPhpUnitTest.18.inc': - return [11 => 1]; - - case 'EmbeddedPhpUnitTest.19.inc': - return [13 => 1]; - - case 'EmbeddedPhpUnitTest.20.inc': - case 'EmbeddedPhpUnitTest.21.inc': - return [12 => 2]; - - case 'EmbeddedPhpUnitTest.22.inc': - return [ - 14 => 1, - 22 => 2, - ]; - - case 'EmbeddedPhpUnitTest.24.inc': - $shortOpenTagDirective = (bool) ini_get('short_open_tag'); - if ($shortOpenTagDirective === true) { - return [ - 18 => 1, - 20 => 1, - ]; - } - return []; - - default: - return []; - }//end switch - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Scope/MemberVarScopeUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Scope/MemberVarScopeUnitTest.php deleted file mode 100644 index 08412392..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/Scope/MemberVarScopeUnitTest.php +++ /dev/null @@ -1,63 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Tests\Scope; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the MemberVarScope sniff. - * - * @covers \PHP_CodeSniffer\Standards\Squiz\Sniffs\Scope\MemberVarScopeSniff - */ -final class MemberVarScopeUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @return array - */ - public function getErrorList() - { - return [ - 7 => 1, - 25 => 1, - 29 => 1, - 33 => 1, - 39 => 1, - 41 => 1, - 66 => 2, - 67 => 1, - ]; - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - // Warning from getMemberProperties() about parse error. - return [71 => 1]; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.php deleted file mode 100644 index e34a2ec4..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.php +++ /dev/null @@ -1,180 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Squiz\Tests\WhiteSpace; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the OperatorSpacing sniff. - * - * @covers \PHP_CodeSniffer\Standards\Squiz\Sniffs\WhiteSpace\OperatorSpacingSniff - */ -final class OperatorSpacingUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @param string $testFile The name of the file being tested. - * - * @return array - */ - public function getErrorList($testFile='') - { - switch ($testFile) { - case 'OperatorSpacingUnitTest.1.inc': - return [ - 4 => 1, - 5 => 2, - 6 => 1, - 7 => 1, - 8 => 2, - 11 => 1, - 12 => 2, - 13 => 1, - 14 => 1, - 15 => 2, - 18 => 1, - 19 => 2, - 20 => 1, - 21 => 1, - 22 => 2, - 25 => 1, - 26 => 2, - 27 => 1, - 28 => 1, - 29 => 2, - 32 => 1, - 33 => 2, - 34 => 1, - 35 => 1, - 36 => 2, - 40 => 2, - 42 => 2, - 44 => 2, - 45 => 1, - 46 => 2, - 53 => 4, - 54 => 3, - 59 => 10, - 64 => 1, - 77 => 4, - 78 => 1, - 79 => 1, - 80 => 2, - 81 => 1, - 84 => 6, - 85 => 6, - 87 => 4, - 88 => 5, - 90 => 4, - 91 => 5, - 128 => 4, - 132 => 1, - 133 => 1, - 135 => 1, - 136 => 1, - 140 => 1, - 141 => 1, - 174 => 1, - 177 => 1, - 178 => 1, - 179 => 1, - 185 => 2, - 191 => 4, - 194 => 1, - 195 => 1, - 196 => 2, - 199 => 1, - 200 => 1, - 201 => 2, - 239 => 1, - 246 => 1, - 265 => 2, - 266 => 2, - 271 => 2, - 487 => 1, - 488 => 1, - 493 => 1, - 494 => 1, - 499 => 1, - 504 => 1, - ]; - - case 'OperatorSpacingUnitTest.js': - return [ - 4 => 1, - 5 => 2, - 6 => 1, - 7 => 1, - 8 => 2, - 11 => 1, - 12 => 2, - 13 => 1, - 14 => 1, - 15 => 2, - 18 => 1, - 19 => 2, - 20 => 1, - 21 => 1, - 22 => 2, - 25 => 1, - 26 => 2, - 27 => 1, - 28 => 1, - 29 => 2, - 32 => 1, - 33 => 2, - 34 => 1, - 35 => 1, - 36 => 2, - 40 => 2, - 42 => 2, - 44 => 2, - 45 => 1, - 46 => 2, - 55 => 4, - 65 => 1, - 66 => 1, - 68 => 1, - 69 => 1, - 73 => 1, - 74 => 1, - 100 => 1, - 103 => 2, - ]; - - default: - return []; - }//end switch - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return []; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/WhiteSpace/ScopeKeywordSpacingUnitTest.1.inc b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/WhiteSpace/ScopeKeywordSpacingUnitTest.1.inc deleted file mode 100644 index 1d3ccebc..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/WhiteSpace/ScopeKeywordSpacingUnitTest.1.inc +++ /dev/null @@ -1,149 +0,0 @@ - 'a', 'b' => 'b' ), - $varQ = 'string', - $varR = 123; - - // Intentionally missing a semicolon for testing. - public - $varS, - $varT -} - -// Issue #3188 - static as return type. -public static function fCreate($attributes = []): static -{ - return static::factory()->create($attributes); -} - -public static function fCreate($attributes = []): ?static -{ - return static::factory()->create($attributes); -} - -// Also account for static used within union types. -public function staticLast($attributes = []): object|static {} -public function staticMiddle(): string|static|object {} -public function staticFirst(): static|object {} - -// Ensure that static as a scope keyword when preceeded by a colon which is not for a type declaration is still handled. -$callback = $cond ? get_fn_name() : static function ($a) { return $a * 10; }; - -class TypedProperties { - public - int $var; - - protected string $stringA, $stringB; - - private bool - $boolA, - $boolB; -} - -// PHP 8.0 constructor property promotion. -class ConstructorPropertyPromotionTest { - public function __construct( - public $x = 0.0, - protected $y = '', - private $z = null, - $normalParam, - ) {} -} - -class ConstructorPropertyPromotionWithTypesTest { - public function __construct(protected float|int $x, public?string &$y = 'test', private mixed $z) {} -} - -// PHP 8.1 readonly keywords. -class ReadonlyTest { - public readonly int $publicReadonlyProperty; - - protected readonly int $protectedReadonlyProperty; - - readonly protected int $protectedReadonlyProperty; - - readonly private int $privateReadonlyProperty; - - public function __construct(readonly protected float|int $x, public readonly?string &$y = 'test') {} -} - -// PHP 8.2 readonly classes. -readonly class ReadonlyClassTest {} -readonly class ReadonlyClassTest {} - -// PHP 8.3 readonly anonymous classes. -$anon = new readonly class {}; -$anon = new readonly class {}; diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/WhiteSpace/ScopeKeywordSpacingUnitTest.1.inc.fixed b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/WhiteSpace/ScopeKeywordSpacingUnitTest.1.inc.fixed deleted file mode 100644 index d4e8a39e..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/WhiteSpace/ScopeKeywordSpacingUnitTest.1.inc.fixed +++ /dev/null @@ -1,143 +0,0 @@ - 'a', 'b' => 'b' ), - $varQ = 'string', - $varR = 123; - - // Intentionally missing a semicolon for testing. - public - $varS, - $varT -} - -// Issue #3188 - static as return type. -public static function fCreate($attributes = []): static -{ - return static::factory()->create($attributes); -} - -public static function fCreate($attributes = []): ?static -{ - return static::factory()->create($attributes); -} - -// Also account for static used within union types. -public function staticLast($attributes = []): object|static {} -public function staticMiddle(): string|static|object {} -public function staticFirst(): static|object {} - -// Ensure that static as a scope keyword when preceeded by a colon which is not for a type declaration is still handled. -$callback = $cond ? get_fn_name() : static function ($a) { return $a * 10; }; - -class TypedProperties { - public int $var; - - protected string $stringA, $stringB; - - private bool - $boolA, - $boolB; -} - -// PHP 8.0 constructor property promotion. -class ConstructorPropertyPromotionTest { - public function __construct( - public $x = 0.0, - protected $y = '', - private $z = null, - $normalParam, - ) {} -} - -class ConstructorPropertyPromotionWithTypesTest { - public function __construct(protected float|int $x, public ?string &$y = 'test', private mixed $z) {} -} - -// PHP 8.1 readonly keywords. -class ReadonlyTest { - public readonly int $publicReadonlyProperty; - - protected readonly int $protectedReadonlyProperty; - - readonly protected int $protectedReadonlyProperty; - - readonly private int $privateReadonlyProperty; - - public function __construct(readonly protected float|int $x, public readonly ?string &$y = 'test') {} -} - -// PHP 8.2 readonly classes. -readonly class ReadonlyClassTest {} -readonly class ReadonlyClassTest {} - -// PHP 8.3 readonly anonymous classes. -$anon = new readonly class {}; -$anon = new readonly class {}; diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/WhiteSpace/SemicolonSpacingUnitTest.inc b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/WhiteSpace/SemicolonSpacingUnitTest.inc deleted file mode 100644 index 60f87e5b..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/WhiteSpace/SemicolonSpacingUnitTest.inc +++ /dev/null @@ -1,42 +0,0 @@ -testThis(); -$test = $this->testThis() ; -$test = $this->testThis() ; -for ($var = 1 ; $var < 10 ; $var++) { - echo $var ; -} -$test = $this->testThis() /* comment here */; -$test = $this->testThis() /* comment here */ ; - -$hello ='foo'; -; - -$sum = $a /* + $b */; -$sum = $a // + $b -; -$sum = $a /* + $b - + $c */ ; - -/* - * Test that the sniff does *not* throw incorrect errors for semicolons in - * "empty" parts of a `for` control structure. - */ -for ($i = 1; ; $i++) {} -for ( ; $ptr >= 0; $ptr-- ) {} -for ( ; ; ) {} - -// But it should when the semicolon in a `for` follows a comment (but shouldn't move the semicolon). -for ( /* Deliberately left empty. */ ; $ptr >= 0; $ptr-- ) {} -for ( $i = 1 ; /* Deliberately left empty. */ ; $i++ ) {} - -switch ($foo) { - case 'foo': - ; - break - ; -} - -// This is an empty statement and should be ignored. -if ($foo) { -; -} diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/WhiteSpace/SemicolonSpacingUnitTest.inc.fixed b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/WhiteSpace/SemicolonSpacingUnitTest.inc.fixed deleted file mode 100644 index b4dc0f13..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Tests/WhiteSpace/SemicolonSpacingUnitTest.inc.fixed +++ /dev/null @@ -1,41 +0,0 @@ -testThis(); -$test = $this->testThis(); -$test = $this->testThis(); -for ($var = 1; $var < 10; $var++) { - echo $var; -} -$test = $this->testThis(); /* comment here */ -$test = $this->testThis(); /* comment here */ - -$hello ='foo'; -; - -$sum = $a; /* + $b */ -$sum = $a; // + $b - -$sum = $a; /* + $b - + $c */ - -/* - * Test that the sniff does *not* throw incorrect errors for semicolons in - * "empty" parts of a `for` control structure. - */ -for ($i = 1; ; $i++) {} -for ( ; $ptr >= 0; $ptr-- ) {} -for ( ; ; ) {} - -// But it should when the semicolon in a `for` follows a comment (but shouldn't move the semicolon). -for ( /* Deliberately left empty. */; $ptr >= 0; $ptr-- ) {} -for ( $i = 1; /* Deliberately left empty. */; $i++ ) {} - -switch ($foo) { - case 'foo': - ; - break; -} - -// This is an empty statement and should be ignored. -if ($foo) { -; -} diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/ruleset.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/ruleset.xml deleted file mode 100644 index 82f5270a..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Squiz/ruleset.xml +++ /dev/null @@ -1,138 +0,0 @@ - - - The Squiz coding standard. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - %2$s - - - - - - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - 0 - - - - - - - - - - 0 - - - error - - - - - 0 - - - error - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Zend/Docs/Files/ClosingTagStandard.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Zend/Docs/Files/ClosingTagStandard.xml deleted file mode 100644 index f1dca3c6..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Zend/Docs/Files/ClosingTagStandard.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - ?> - ]]> - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Zend/Sniffs/Debug/CodeAnalyzerSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Zend/Sniffs/Debug/CodeAnalyzerSniff.php deleted file mode 100644 index 454f665a..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Zend/Sniffs/Debug/CodeAnalyzerSniff.php +++ /dev/null @@ -1,100 +0,0 @@ - - * @author Greg Sherwood - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - * - * @deprecated 3.9.0 - */ - -namespace PHP_CodeSniffer\Standards\Zend\Sniffs\Debug; - -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Config; -use PHP_CodeSniffer\Exceptions\RuntimeException; -use PHP_CodeSniffer\Util\Common; - -class CodeAnalyzerSniff implements Sniff -{ - - - /** - * Returns the token types that this sniff is interested in. - * - * @return array - */ - public function register() - { - return [T_OPEN_TAG]; - - }//end register() - - - /** - * Processes the tokens that this sniff is interested in. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file where the token was found. - * @param int $stackPtr The position in the stack where - * the token was found. - * - * @return int - * @throws \PHP_CodeSniffer\Exceptions\RuntimeException If ZendCodeAnalyzer could not be run. - */ - public function process(File $phpcsFile, $stackPtr) - { - $analyzerPath = Config::getExecutablePath('zend_ca'); - if ($analyzerPath === null) { - return $phpcsFile->numTokens; - } - - $fileName = $phpcsFile->getFilename(); - - // In the command, 2>&1 is important because the code analyzer sends its - // findings to stderr. $output normally contains only stdout, so using 2>&1 - // will pipe even stderr to stdout. - $cmd = Common::escapeshellcmd($analyzerPath).' '.escapeshellarg($fileName).' 2>&1'; - - // There is the possibility to pass "--ide" as an option to the analyzer. - // This would result in an output format which would be easier to parse. - // The problem here is that no cleartext error messages are returned; only - // error-code-labels. So for a start we go for cleartext output. - $exitCode = exec($cmd, $output, $retval); - - // Variable $exitCode is the last line of $output if no error occurs, on - // error it is numeric. Try to handle various error conditions and - // provide useful error reporting. - if (is_numeric($exitCode) === true && $exitCode > 0) { - if (is_array($output) === true) { - $msg = implode('\n', $output); - } - - throw new RuntimeException("Failed invoking ZendCodeAnalyzer, exitcode was [$exitCode], retval was [$retval], output was [$msg]"); - } - - if (is_array($output) === true) { - foreach ($output as $finding) { - // The first two lines of analyzer output contain - // something like this: - // > Zend Code Analyzer 1.2.2 - // > Analyzing ... - // So skip these... - $res = preg_match("/^.+\(line ([0-9]+)\):(.+)$/", $finding, $regs); - if (empty($regs) === true || $res === false) { - continue; - } - - $phpcsFile->addWarningOnLine(trim($regs[2]), $regs[1], 'ExternalTool'); - } - } - - // Ignore the rest of the file. - return $phpcsFile->numTokens; - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Zend/Sniffs/Files/ClosingTagSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Zend/Sniffs/Files/ClosingTagSniff.php deleted file mode 100644 index 7b547bfd..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Zend/Sniffs/Files/ClosingTagSniff.php +++ /dev/null @@ -1,79 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Zend\Sniffs\Files; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\Sniff; -use PHP_CodeSniffer\Util\Tokens; - -class ClosingTagSniff implements Sniff -{ - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return [T_OPEN_TAG]; - - }//end register() - - - /** - * Processes this sniff, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in - * the stack passed in $tokens. - * - * @return int - */ - public function process(File $phpcsFile, $stackPtr) - { - // Find the last non-empty token. - $tokens = $phpcsFile->getTokens(); - for ($last = ($phpcsFile->numTokens - 1); $last > 0; $last--) { - if (trim($tokens[$last]['content']) !== '') { - break; - } - } - - if ($tokens[$last]['code'] === T_CLOSE_TAG) { - $error = 'A closing tag is not permitted at the end of a PHP file'; - $fix = $phpcsFile->addFixableError($error, $last, 'NotAllowed'); - if ($fix === true) { - $phpcsFile->fixer->beginChangeset(); - $phpcsFile->fixer->replaceToken($last, $phpcsFile->eolChar); - $prev = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($last - 1), null, true); - if ($tokens[$prev]['code'] !== T_SEMICOLON - && $tokens[$prev]['code'] !== T_CLOSE_CURLY_BRACKET - && $tokens[$prev]['code'] !== T_OPEN_TAG - ) { - $phpcsFile->fixer->addContent($prev, ';'); - } - - $phpcsFile->fixer->endChangeset(); - } - - $phpcsFile->recordMetric($stackPtr, 'PHP closing tag at EOF', 'yes'); - } else { - $phpcsFile->recordMetric($stackPtr, 'PHP closing tag at EOF', 'no'); - }//end if - - // Ignore the rest of the file. - return $phpcsFile->numTokens; - - }//end process() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Zend/Sniffs/NamingConventions/ValidVariableNameSniff.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Zend/Sniffs/NamingConventions/ValidVariableNameSniff.php deleted file mode 100644 index 41b19481..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Zend/Sniffs/NamingConventions/ValidVariableNameSniff.php +++ /dev/null @@ -1,196 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Zend\Sniffs\NamingConventions; - -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Sniffs\AbstractVariableSniff; -use PHP_CodeSniffer\Util\Common; -use PHP_CodeSniffer\Util\Tokens; - -class ValidVariableNameSniff extends AbstractVariableSniff -{ - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in the - * stack passed in $tokens. - * - * @return void - */ - protected function processVariable(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - $varName = ltrim($tokens[$stackPtr]['content'], '$'); - - // If it's a php reserved var, then its ok. - if (isset($this->phpReservedVars[$varName]) === true) { - return; - } - - $objOperator = $phpcsFile->findNext([T_WHITESPACE], ($stackPtr + 1), null, true); - if ($tokens[$objOperator]['code'] === T_OBJECT_OPERATOR - || $tokens[$objOperator]['code'] === T_NULLSAFE_OBJECT_OPERATOR - ) { - // Check to see if we are using a variable from an object. - $var = $phpcsFile->findNext([T_WHITESPACE], ($objOperator + 1), null, true); - if ($tokens[$var]['code'] === T_STRING) { - // Either a var name or a function call, so check for bracket. - $bracket = $phpcsFile->findNext([T_WHITESPACE], ($var + 1), null, true); - - if ($tokens[$bracket]['code'] !== T_OPEN_PARENTHESIS) { - $objVarName = $tokens[$var]['content']; - - // There is no way for us to know if the var is public or private, - // so we have to ignore a leading underscore if there is one and just - // check the main part of the variable name. - $originalVarName = $objVarName; - if (substr($objVarName, 0, 1) === '_') { - $objVarName = substr($objVarName, 1); - } - - if (Common::isCamelCaps($objVarName, false, true, false) === false) { - $error = 'Variable "%s" is not in valid camel caps format'; - $data = [$originalVarName]; - $phpcsFile->addError($error, $var, 'NotCamelCaps', $data); - } else if (preg_match('|\d|', $objVarName) === 1) { - $warning = 'Variable "%s" contains numbers but this is discouraged'; - $data = [$originalVarName]; - $phpcsFile->addWarning($warning, $stackPtr, 'ContainsNumbers', $data); - } - }//end if - }//end if - }//end if - - // There is no way for us to know if the var is public or private, - // so we have to ignore a leading underscore if there is one and just - // check the main part of the variable name. - $originalVarName = $varName; - if (substr($varName, 0, 1) === '_') { - $objOperator = $phpcsFile->findPrevious([T_WHITESPACE], ($stackPtr - 1), null, true); - if ($tokens[$objOperator]['code'] === T_DOUBLE_COLON) { - // The variable lives within a class, and is referenced like - // this: MyClass::$_variable, so we don't know its scope. - $inClass = true; - } else { - $inClass = $phpcsFile->hasCondition($stackPtr, Tokens::$ooScopeTokens); - } - - if ($inClass === true) { - $varName = substr($varName, 1); - } - } - - if (Common::isCamelCaps($varName, false, true, false) === false) { - $error = 'Variable "%s" is not in valid camel caps format'; - $data = [$originalVarName]; - $phpcsFile->addError($error, $stackPtr, 'NotCamelCaps', $data); - } else if (preg_match('|\d|', $varName) === 1) { - $warning = 'Variable "%s" contains numbers but this is discouraged'; - $data = [$originalVarName]; - $phpcsFile->addWarning($warning, $stackPtr, 'ContainsNumbers', $data); - } - - }//end processVariable() - - - /** - * Processes class member variables. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in the - * stack passed in $tokens. - * - * @return void - */ - protected function processMemberVar(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - $varName = ltrim($tokens[$stackPtr]['content'], '$'); - $memberProps = $phpcsFile->getMemberProperties($stackPtr); - if (empty($memberProps) === true) { - // Exception encountered. - return; - } - - $public = ($memberProps['scope'] === 'public'); - - if ($public === true) { - if (substr($varName, 0, 1) === '_') { - $error = 'Public member variable "%s" must not contain a leading underscore'; - $data = [$varName]; - $phpcsFile->addError($error, $stackPtr, 'PublicHasUnderscore', $data); - } - } else { - if (substr($varName, 0, 1) !== '_') { - $scope = ucfirst($memberProps['scope']); - $error = '%s member variable "%s" must contain a leading underscore'; - $data = [ - $scope, - $varName, - ]; - $phpcsFile->addError($error, $stackPtr, 'PrivateNoUnderscore', $data); - } - } - - // Remove a potential underscore prefix for testing CamelCaps. - $varName = ltrim($varName, '_'); - - if (Common::isCamelCaps($varName, false, true, false) === false) { - $error = 'Member variable "%s" is not in valid camel caps format'; - $data = [$varName]; - $phpcsFile->addError($error, $stackPtr, 'MemberVarNotCamelCaps', $data); - } else if (preg_match('|\d|', $varName) === 1) { - $warning = 'Member variable "%s" contains numbers but this is discouraged'; - $data = [$varName]; - $phpcsFile->addWarning($warning, $stackPtr, 'MemberVarContainsNumbers', $data); - } - - }//end processMemberVar() - - - /** - * Processes the variable found within a double quoted string. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the double quoted - * string. - * - * @return void - */ - protected function processVariableInString(File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - if (preg_match_all('|[^\\\]\$([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)|', $tokens[$stackPtr]['content'], $matches) !== 0) { - foreach ($matches[1] as $varName) { - // If it's a php reserved var, then its ok. - if (isset($this->phpReservedVars[$varName]) === true) { - continue; - } - - if (Common::isCamelCaps($varName, false, true, false) === false) { - $error = 'Variable "%s" is not in valid camel caps format'; - $data = [$varName]; - $phpcsFile->addError($error, $stackPtr, 'StringVarNotCamelCaps', $data); - } else if (preg_match('|\d|', $varName) === 1) { - $warning = 'Variable "%s" contains numbers but this is discouraged'; - $data = [$varName]; - $phpcsFile->addWarning($warning, $stackPtr, 'StringVarContainsNumbers', $data); - } - }//end foreach - }//end if - - }//end processVariableInString() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Zend/Tests/NamingConventions/ValidVariableNameUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Zend/Tests/NamingConventions/ValidVariableNameUnitTest.php deleted file mode 100644 index c66a2a42..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Standards/Zend/Tests/NamingConventions/ValidVariableNameUnitTest.php +++ /dev/null @@ -1,102 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Standards\Zend\Tests\NamingConventions; - -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; - -/** - * Unit test class for the ValidVariableName sniff. - * - * @covers \PHP_CodeSniffer\Standards\Zend\Sniffs\NamingConventions\ValidVariableNameSniff - */ -final class ValidVariableNameUnitTest extends AbstractSniffUnitTest -{ - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @return array - */ - public function getErrorList() - { - return [ - 3 => 1, - 5 => 1, - 11 => 1, - 13 => 1, - 17 => 1, - 19 => 1, - 23 => 1, - 25 => 1, - 29 => 1, - 31 => 1, - 36 => 1, - 38 => 1, - 42 => 1, - 44 => 1, - 48 => 1, - 50 => 1, - 61 => 1, - 67 => 1, - 72 => 1, - 74 => 1, - 75 => 1, - 76 => 1, - 79 => 1, - 96 => 1, - 99 => 1, - 113 => 1, - 116 => 1, - 121 => 1, - 126 => 1, - 129 => 1, - ]; - - }//end getErrorList() - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - public function getWarningList() - { - return [ - 6 => 1, - 14 => 1, - 20 => 1, - 26 => 1, - 32 => 1, - 39 => 1, - 45 => 1, - 51 => 1, - 64 => 1, - 70 => 1, - 73 => 1, - 76 => 1, - 79 => 1, - 82 => 1, - 94 => 1, - // Warning from getMemberProperties() about parse error. - 107 => 1, - ]; - - }//end getWarningList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Tokenizers/CSS.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Tokenizers/CSS.php deleted file mode 100644 index 36631ddc..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Tokenizers/CSS.php +++ /dev/null @@ -1,541 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Tokenizers; - -use PHP_CodeSniffer\Config; -use PHP_CodeSniffer\Exceptions\TokenizerException; -use PHP_CodeSniffer\Util; - -class CSS extends PHP -{ - - - /** - * Initialise the tokenizer. - * - * Pre-checks the content to see if it looks minified. - * - * @param string $content The content to tokenize. - * @param \PHP_CodeSniffer\Config $config The config data for the run. - * @param string $eolChar The EOL char used in the content. - * - * @return void - * @throws \PHP_CodeSniffer\Exceptions\TokenizerException If the file appears to be minified. - */ - public function __construct($content, Config $config, $eolChar='\n') - { - if ($this->isMinifiedContent($content, $eolChar) === true) { - throw new TokenizerException('File appears to be minified and cannot be processed'); - } - - parent::__construct($content, $config, $eolChar); - - }//end __construct() - - - /** - * Creates an array of tokens when given some CSS code. - * - * Uses the PHP tokenizer to do all the tricky work - * - * @param string $string The string to tokenize. - * - * @return array - */ - public function tokenize($string) - { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t*** START CSS TOKENIZING 1ST PASS ***".PHP_EOL; - } - - // If the content doesn't have an EOL char on the end, add one so - // the open and close tags we add are parsed correctly. - $eolAdded = false; - if (substr($string, (strlen($this->eolChar) * -1)) !== $this->eolChar) { - $string .= $this->eolChar; - $eolAdded = true; - } - - $string = str_replace('', '^PHPCS_CSS_T_CLOSE_TAG^', $string); - $tokens = parent::tokenize(''); - - $finalTokens = []; - $finalTokens[0] = [ - 'code' => T_OPEN_TAG, - 'type' => 'T_OPEN_TAG', - 'content' => '', - ]; - - $newStackPtr = 1; - $numTokens = count($tokens); - $multiLineComment = false; - for ($stackPtr = 1; $stackPtr < $numTokens; $stackPtr++) { - $token = $tokens[$stackPtr]; - - // CSS files don't have lists, breaks etc, so convert these to - // standard strings early so they can be converted into T_STYLE - // tokens and joined with other strings if needed. - if ($token['code'] === T_BREAK - || $token['code'] === T_LIST - || $token['code'] === T_DEFAULT - || $token['code'] === T_SWITCH - || $token['code'] === T_FOR - || $token['code'] === T_FOREACH - || $token['code'] === T_WHILE - || $token['code'] === T_DEC - || $token['code'] === T_NEW - ) { - $token['type'] = 'T_STRING'; - $token['code'] = T_STRING; - } - - $token['content'] = str_replace('^PHPCS_CSS_T_OPEN_TAG^', '', $token['content']); - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $token['type']; - $content = Util\Common::prepareForOutput($token['content']); - echo "\tProcess token $stackPtr: $type => $content".PHP_EOL; - } - - if ($token['code'] === T_BITWISE_XOR - && $tokens[($stackPtr + 1)]['content'] === 'PHPCS_CSS_T_OPEN_TAG' - ) { - $content = ''; - $stackPtr += 2; - break; - } else { - $content .= $tokens[$stackPtr]['content']; - } - } - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t=> Found embedded PHP code: "; - $cleanContent = Util\Common::prepareForOutput($content); - echo $cleanContent.PHP_EOL; - } - - $finalTokens[$newStackPtr] = [ - 'type' => 'T_EMBEDDED_PHP', - 'code' => T_EMBEDDED_PHP, - 'content' => $content, - ]; - - $newStackPtr++; - continue; - }//end if - - if ($token['code'] === T_GOTO_LABEL) { - // Convert these back to T_STRING followed by T_COLON so we can - // more easily process style definitions. - $finalTokens[$newStackPtr] = [ - 'type' => 'T_STRING', - 'code' => T_STRING, - 'content' => substr($token['content'], 0, -1), - ]; - $newStackPtr++; - $finalTokens[$newStackPtr] = [ - 'type' => 'T_COLON', - 'code' => T_COLON, - 'content' => ':', - ]; - $newStackPtr++; - continue; - } - - if ($token['code'] === T_FUNCTION) { - // There are no functions in CSS, so convert this to a string. - $finalTokens[$newStackPtr] = [ - 'type' => 'T_STRING', - 'code' => T_STRING, - 'content' => $token['content'], - ]; - - $newStackPtr++; - continue; - } - - if ($token['code'] === T_COMMENT - && substr($token['content'], 0, 2) === '/*' - ) { - // Multi-line comment. Record it so we can ignore other - // comment tags until we get out of this one. - $multiLineComment = true; - } - - if ($token['code'] === T_COMMENT - && $multiLineComment === false - && (substr($token['content'], 0, 2) === '//' - || $token['content'][0] === '#') - ) { - $content = ltrim($token['content'], '#/'); - - // Guard against PHP7+ syntax errors by stripping - // leading zeros so the content doesn't look like an invalid int. - $leadingZero = false; - if ($content[0] === '0') { - $content = '1'.$content; - $leadingZero = true; - } - - $commentTokens = parent::tokenize(''); - - // The first and last tokens are the open/close tags. - array_shift($commentTokens); - $closeTag = array_pop($commentTokens); - - while ($closeTag['content'] !== '?'.'>') { - $closeTag = array_pop($commentTokens); - } - - if ($leadingZero === true) { - $commentTokens[0]['content'] = substr($commentTokens[0]['content'], 1); - $content = substr($content, 1); - } - - if ($token['content'][0] === '#') { - // The # character is not a comment in CSS files, so - // determine what it means in this context. - $firstContent = $commentTokens[0]['content']; - - // If the first content is just a number, it is probably a - // colour like 8FB7DB, which PHP splits into 8 and FB7DB. - if (($commentTokens[0]['code'] === T_LNUMBER - || $commentTokens[0]['code'] === T_DNUMBER) - && $commentTokens[1]['code'] === T_STRING - ) { - $firstContent .= $commentTokens[1]['content']; - array_shift($commentTokens); - } - - // If the first content looks like a colour and not a class - // definition, join the tokens together. - if (preg_match('/^[ABCDEF0-9]+$/i', $firstContent) === 1 - && $commentTokens[1]['content'] !== '-' - ) { - array_shift($commentTokens); - // Work out what we trimmed off above and remember to re-add it. - $trimmed = substr($token['content'], 0, (strlen($token['content']) - strlen($content))); - $finalTokens[$newStackPtr] = [ - 'type' => 'T_COLOUR', - 'code' => T_COLOUR, - 'content' => $trimmed.$firstContent, - ]; - } else { - $finalTokens[$newStackPtr] = [ - 'type' => 'T_HASH', - 'code' => T_HASH, - 'content' => '#', - ]; - } - } else { - $finalTokens[$newStackPtr] = [ - 'type' => 'T_STRING', - 'code' => T_STRING, - 'content' => '//', - ]; - }//end if - - $newStackPtr++; - - array_splice($tokens, $stackPtr, 1, $commentTokens); - $numTokens = count($tokens); - $stackPtr--; - continue; - }//end if - - if ($token['code'] === T_COMMENT - && substr($token['content'], -2) === '*/' - ) { - // Multi-line comment is done. - $multiLineComment = false; - } - - $finalTokens[$newStackPtr] = $token; - $newStackPtr++; - }//end for - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t*** END CSS TOKENIZING 1ST PASS ***".PHP_EOL; - echo "\t*** START CSS TOKENIZING 2ND PASS ***".PHP_EOL; - } - - // A flag to indicate if we are inside a style definition, - // which is defined using curly braces. - $inStyleDef = false; - - // A flag to indicate if an At-rule like "@media" is used, which will result - // in nested curly brackets. - $asperandStart = false; - - $numTokens = count($finalTokens); - for ($stackPtr = 0; $stackPtr < $numTokens; $stackPtr++) { - $token = $finalTokens[$stackPtr]; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $token['type']; - $content = Util\Common::prepareForOutput($token['content']); - echo "\tProcess token $stackPtr: $type => $content".PHP_EOL; - } - - switch ($token['code']) { - case T_OPEN_CURLY_BRACKET: - // Opening curly brackets for an At-rule do not start a style - // definition. We also reset the asperand flag here because the next - // opening curly bracket could be indeed the start of a style - // definition. - if ($asperandStart === true) { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - if ($inStyleDef === true) { - echo "\t\t* style definition closed *".PHP_EOL; - } - - if ($asperandStart === true) { - echo "\t\t* at-rule definition closed *".PHP_EOL; - } - } - - $inStyleDef = false; - $asperandStart = false; - } else { - $inStyleDef = true; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* style definition opened *".PHP_EOL; - } - } - break; - case T_CLOSE_CURLY_BRACKET: - if (PHP_CODESNIFFER_VERBOSITY > 1) { - if ($inStyleDef === true) { - echo "\t\t* style definition closed *".PHP_EOL; - } - - if ($asperandStart === true) { - echo "\t\t* at-rule definition closed *".PHP_EOL; - } - } - - $inStyleDef = false; - $asperandStart = false; - break; - case T_MINUS: - // Minus signs are often used instead of spaces inside - // class names, IDs and styles. - if ($finalTokens[($stackPtr + 1)]['code'] === T_STRING) { - if ($finalTokens[($stackPtr - 1)]['code'] === T_STRING) { - $newContent = $finalTokens[($stackPtr - 1)]['content'].'-'.$finalTokens[($stackPtr + 1)]['content']; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* token is a string joiner; ignoring this and previous token".PHP_EOL; - $old = Util\Common::prepareForOutput($finalTokens[($stackPtr + 1)]['content']); - $new = Util\Common::prepareForOutput($newContent); - echo "\t\t=> token ".($stackPtr + 1)." content changed from \"$old\" to \"$new\"".PHP_EOL; - } - - $finalTokens[($stackPtr + 1)]['content'] = $newContent; - unset($finalTokens[$stackPtr]); - unset($finalTokens[($stackPtr - 1)]); - } else { - $newContent = '-'.$finalTokens[($stackPtr + 1)]['content']; - - $finalTokens[($stackPtr + 1)]['content'] = $newContent; - unset($finalTokens[$stackPtr]); - } - } else if ($finalTokens[($stackPtr + 1)]['code'] === T_LNUMBER) { - // They can also be used to provide negative numbers. - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* token is part of a negative number; adding content to next token and ignoring *".PHP_EOL; - $content = Util\Common::prepareForOutput($finalTokens[($stackPtr + 1)]['content']); - echo "\t\t=> token ".($stackPtr + 1)." content changed from \"$content\" to \"-$content\"".PHP_EOL; - } - - $finalTokens[($stackPtr + 1)]['content'] = '-'.$finalTokens[($stackPtr + 1)]['content']; - unset($finalTokens[$stackPtr]); - }//end if - break; - case T_COLON: - // Only interested in colons that are defining styles. - if ($inStyleDef === false) { - break; - } - - for ($x = ($stackPtr - 1); $x >= 0; $x--) { - if (isset(Util\Tokens::$emptyTokens[$finalTokens[$x]['code']]) === false) { - break; - } - } - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $finalTokens[$x]['type']; - echo "\t\t=> token $x changed from $type to T_STYLE".PHP_EOL; - } - - $finalTokens[$x]['type'] = 'T_STYLE'; - $finalTokens[$x]['code'] = T_STYLE; - break; - case T_STRING: - if (strtolower($token['content']) === 'url') { - // Find the next content. - for ($x = ($stackPtr + 1); $x < $numTokens; $x++) { - if (isset(Util\Tokens::$emptyTokens[$finalTokens[$x]['code']]) === false) { - break; - } - } - - // Needs to be in the format "url(" for it to be a URL. - if ($finalTokens[$x]['code'] !== T_OPEN_PARENTHESIS) { - continue 2; - } - - // Make sure the content isn't empty. - for ($y = ($x + 1); $y < $numTokens; $y++) { - if (isset(Util\Tokens::$emptyTokens[$finalTokens[$y]['code']]) === false) { - break; - } - } - - if ($finalTokens[$y]['code'] === T_CLOSE_PARENTHESIS) { - continue 2; - } - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - for ($i = ($stackPtr + 1); $i <= $y; $i++) { - $type = $finalTokens[$i]['type']; - $content = Util\Common::prepareForOutput($finalTokens[$i]['content']); - echo "\tProcess token $i: $type => $content".PHP_EOL; - } - - echo "\t\t* token starts a URL *".PHP_EOL; - } - - // Join all the content together inside the url() statement. - $newContent = ''; - for ($i = ($x + 2); $i < $numTokens; $i++) { - if ($finalTokens[$i]['code'] === T_CLOSE_PARENTHESIS) { - break; - } - - $newContent .= $finalTokens[$i]['content']; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $content = Util\Common::prepareForOutput($finalTokens[$i]['content']); - echo "\t\t=> token $i added to URL string and ignored: $content".PHP_EOL; - } - - unset($finalTokens[$i]); - } - - $stackPtr = $i; - - // If the content inside the "url()" is in double quotes - // there will only be one token and so we don't have to do - // anything except change its type. If it is not empty, - // we need to do some token merging. - $finalTokens[($x + 1)]['type'] = 'T_URL'; - $finalTokens[($x + 1)]['code'] = T_URL; - - if ($newContent !== '') { - $finalTokens[($x + 1)]['content'] .= $newContent; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $content = Util\Common::prepareForOutput($finalTokens[($x + 1)]['content']); - echo "\t\t=> token content changed to: $content".PHP_EOL; - } - } - } else if ($finalTokens[$stackPtr]['content'][0] === '-' - && $finalTokens[($stackPtr + 1)]['code'] === T_STRING - ) { - if (isset($finalTokens[($stackPtr - 1)]) === true - && $finalTokens[($stackPtr - 1)]['code'] === T_STRING - ) { - $newContent = $finalTokens[($stackPtr - 1)]['content'].$finalTokens[$stackPtr]['content'].$finalTokens[($stackPtr + 1)]['content']; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* token is a string joiner; ignoring this and previous token".PHP_EOL; - $old = Util\Common::prepareForOutput($finalTokens[($stackPtr + 1)]['content']); - $new = Util\Common::prepareForOutput($newContent); - echo "\t\t=> token ".($stackPtr + 1)." content changed from \"$old\" to \"$new\"".PHP_EOL; - } - - $finalTokens[($stackPtr + 1)]['content'] = $newContent; - unset($finalTokens[$stackPtr]); - unset($finalTokens[($stackPtr - 1)]); - } else { - $newContent = $finalTokens[$stackPtr]['content'].$finalTokens[($stackPtr + 1)]['content']; - - $finalTokens[($stackPtr + 1)]['content'] = $newContent; - unset($finalTokens[$stackPtr]); - } - }//end if - break; - case T_ASPERAND: - $asperandStart = true; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* at-rule definition opened *".PHP_EOL; - } - break; - default: - // Nothing special to be done with this token. - break; - }//end switch - }//end for - - // Reset the array keys to avoid gaps. - $finalTokens = array_values($finalTokens); - $numTokens = count($finalTokens); - - // Blank out the content of the end tag. - $finalTokens[($numTokens - 1)]['content'] = ''; - - if ($eolAdded === true) { - // Strip off the extra EOL char we added for tokenizing. - $finalTokens[($numTokens - 2)]['content'] = substr( - $finalTokens[($numTokens - 2)]['content'], - 0, - (strlen($this->eolChar) * -1) - ); - - if ($finalTokens[($numTokens - 2)]['content'] === '') { - unset($finalTokens[($numTokens - 2)]); - $finalTokens = array_values($finalTokens); - $numTokens = count($finalTokens); - } - } - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t*** END CSS TOKENIZING 2ND PASS ***".PHP_EOL; - } - - return $finalTokens; - - }//end tokenize() - - - /** - * Performs additional processing after main tokenizing. - * - * @return void - */ - public function processAdditional() - { - /* - We override this method because we don't want the PHP version to - run during CSS processing because it is wasted processing time. - */ - - }//end processAdditional() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Tokenizers/Comment.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Tokenizers/Comment.php deleted file mode 100644 index b7c6e374..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Tokenizers/Comment.php +++ /dev/null @@ -1,283 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Tokenizers; - -use PHP_CodeSniffer\Util\Common; - -class Comment -{ - - - /** - * Creates an array of tokens when given some PHP code. - * - * Starts by using token_get_all() but does a lot of extra processing - * to insert information about the context of the token. - * - * @param string $string The string to tokenize. - * @param string $eolChar The EOL character to use for splitting strings. - * @param int $stackPtr The position of the first token in the file. - * - * @return array>> - */ - public function tokenizeString($string, $eolChar, $stackPtr) - { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t*** START COMMENT TOKENIZING ***".PHP_EOL; - } - - $tokens = []; - $numChars = strlen($string); - - /* - Doc block comments start with /*, but typically contain an - extra star when they are used for function and class comments. - */ - - $char = ($numChars - strlen(ltrim($string, '/*'))); - $lastChars = substr($string, -2); - if ($char === $numChars && $lastChars === '*/') { - // Edge case: docblock without whitespace or contents. - $openTag = substr($string, 0, -2); - $string = $lastChars; - } else { - $openTag = substr($string, 0, $char); - $string = ltrim($string, '/*'); - } - - $tokens[$stackPtr] = [ - 'content' => $openTag, - 'code' => T_DOC_COMMENT_OPEN_TAG, - 'type' => 'T_DOC_COMMENT_OPEN_TAG', - 'comment_tags' => [], - ]; - - $openPtr = $stackPtr; - $stackPtr++; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $content = Common::prepareForOutput($openTag); - echo "\t\tCreate comment token: T_DOC_COMMENT_OPEN_TAG => $content".PHP_EOL; - } - - /* - Strip off the close tag so it doesn't interfere with any - of our comment line processing. The token will be added to the - stack just before we return it. - */ - - $closeTag = [ - 'content' => substr($string, strlen(rtrim($string, '/*'))), - 'code' => T_DOC_COMMENT_CLOSE_TAG, - 'type' => 'T_DOC_COMMENT_CLOSE_TAG', - 'comment_opener' => $openPtr, - ]; - - if ($closeTag['content'] === false) { - // In PHP < 8.0 substr() can return `false` instead of always returning a string. - $closeTag['content'] = ''; - } - - $string = rtrim($string, '/*'); - - /* - Process each line of the comment. - */ - - $lines = explode($eolChar, $string); - $numLines = count($lines); - foreach ($lines as $lineNum => $string) { - if ($lineNum !== ($numLines - 1)) { - $string .= $eolChar; - } - - $char = 0; - $numChars = strlen($string); - - // We've started a new line, so process the indent. - $space = $this->collectWhitespace($string, $char, $numChars); - if ($space !== null) { - $tokens[$stackPtr] = $space; - $stackPtr++; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $content = Common::prepareForOutput($space['content']); - echo "\t\tCreate comment token: T_DOC_COMMENT_WHITESPACE => $content".PHP_EOL; - } - - $char += strlen($space['content']); - if ($char === $numChars) { - break; - } - } - - if ($string === '') { - continue; - } - - if ($lineNum > 0 && $string[$char] === '*') { - // This is a function or class doc block line. - $char++; - $tokens[$stackPtr] = [ - 'content' => '*', - 'code' => T_DOC_COMMENT_STAR, - 'type' => 'T_DOC_COMMENT_STAR', - ]; - - $stackPtr++; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\tCreate comment token: T_DOC_COMMENT_STAR => *".PHP_EOL; - } - } - - // Now we are ready to process the actual content of the line. - $lineTokens = $this->processLine($string, $eolChar, $char, $numChars); - foreach ($lineTokens as $lineToken) { - $tokens[$stackPtr] = $lineToken; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $content = Common::prepareForOutput($lineToken['content']); - $type = $lineToken['type']; - echo "\t\tCreate comment token: $type => $content".PHP_EOL; - } - - if ($lineToken['code'] === T_DOC_COMMENT_TAG) { - $tokens[$openPtr]['comment_tags'][] = $stackPtr; - } - - $stackPtr++; - } - }//end foreach - - $tokens[$stackPtr] = $closeTag; - $tokens[$openPtr]['comment_closer'] = $stackPtr; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $content = Common::prepareForOutput($closeTag['content']); - echo "\t\tCreate comment token: T_DOC_COMMENT_CLOSE_TAG => $content".PHP_EOL; - } - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t*** END COMMENT TOKENIZING ***".PHP_EOL; - } - - return $tokens; - - }//end tokenizeString() - - - /** - * Process a single line of a comment. - * - * @param string $string The comment string being tokenized. - * @param string $eolChar The EOL character to use for splitting strings. - * @param int $start The position in the string to start processing. - * @param int $end The position in the string to end processing. - * - * @return array> - */ - private function processLine($string, $eolChar, $start, $end) - { - $tokens = []; - - // Collect content padding. - $space = $this->collectWhitespace($string, $start, $end); - if ($space !== null) { - $tokens[] = $space; - $start += strlen($space['content']); - } - - if (isset($string[$start]) === false) { - return $tokens; - } - - if ($string[$start] === '@') { - // The content up until the first whitespace is the tag name. - $matches = []; - preg_match('/@[^\s]+/', $string, $matches, 0, $start); - if (isset($matches[0]) === true - && substr(strtolower($matches[0]), 0, 7) !== '@phpcs:' - ) { - $tagName = $matches[0]; - $start += strlen($tagName); - $tokens[] = [ - 'content' => $tagName, - 'code' => T_DOC_COMMENT_TAG, - 'type' => 'T_DOC_COMMENT_TAG', - ]; - - // Then there will be some whitespace. - $space = $this->collectWhitespace($string, $start, $end); - if ($space !== null) { - $tokens[] = $space; - $start += strlen($space['content']); - } - } - }//end if - - // Process the rest of the line. - $eol = strpos($string, $eolChar, $start); - if ($eol === false) { - $eol = $end; - } - - if ($eol > $start) { - $tokens[] = [ - 'content' => substr($string, $start, ($eol - $start)), - 'code' => T_DOC_COMMENT_STRING, - 'type' => 'T_DOC_COMMENT_STRING', - ]; - } - - if ($eol !== $end) { - $tokens[] = [ - 'content' => substr($string, $eol, strlen($eolChar)), - 'code' => T_DOC_COMMENT_WHITESPACE, - 'type' => 'T_DOC_COMMENT_WHITESPACE', - ]; - } - - return $tokens; - - }//end processLine() - - - /** - * Collect consecutive whitespace into a single token. - * - * @param string $string The comment string being tokenized. - * @param int $start The position in the string to start processing. - * @param int $end The position in the string to end processing. - * - * @return array|null - */ - private function collectWhitespace($string, $start, $end) - { - $space = ''; - for ($start; $start < $end; $start++) { - if ($string[$start] !== ' ' && $string[$start] !== "\t") { - break; - } - - $space .= $string[$start]; - } - - if ($space === '') { - return null; - } - - return [ - 'content' => $space, - 'code' => T_DOC_COMMENT_WHITESPACE, - 'type' => 'T_DOC_COMMENT_WHITESPACE', - ]; - - }//end collectWhitespace() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Tokenizers/JS.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Tokenizers/JS.php deleted file mode 100644 index c7249fcd..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Tokenizers/JS.php +++ /dev/null @@ -1,1256 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Tokenizers; - -use PHP_CodeSniffer\Config; -use PHP_CodeSniffer\Exceptions\TokenizerException; -use PHP_CodeSniffer\Util; - -class JS extends Tokenizer -{ - - /** - * A list of tokens that are allowed to open a scope. - * - * This array also contains information about what kind of token the scope - * opener uses to open and close the scope, if the token strictly requires - * an opener, if the token can share a scope closer, and who it can be shared - * with. An example of a token that shares a scope closer is a CASE scope. - * - * @var array - */ - public $scopeOpeners = [ - T_IF => [ - 'start' => [T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET], - 'end' => [T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET], - 'strict' => false, - 'shared' => false, - 'with' => [], - ], - T_TRY => [ - 'start' => [T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET], - 'end' => [T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET], - 'strict' => true, - 'shared' => false, - 'with' => [], - ], - T_CATCH => [ - 'start' => [T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET], - 'end' => [T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET], - 'strict' => true, - 'shared' => false, - 'with' => [], - ], - T_ELSE => [ - 'start' => [T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET], - 'end' => [T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET], - 'strict' => false, - 'shared' => false, - 'with' => [], - ], - T_FOR => [ - 'start' => [T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET], - 'end' => [T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET], - 'strict' => false, - 'shared' => false, - 'with' => [], - ], - T_CLASS => [ - 'start' => [T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET], - 'end' => [T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET], - 'strict' => true, - 'shared' => false, - 'with' => [], - ], - T_FUNCTION => [ - 'start' => [T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET], - 'end' => [T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET], - 'strict' => false, - 'shared' => false, - 'with' => [], - ], - T_WHILE => [ - 'start' => [T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET], - 'end' => [T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET], - 'strict' => false, - 'shared' => false, - 'with' => [], - ], - T_DO => [ - 'start' => [T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET], - 'end' => [T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET], - 'strict' => true, - 'shared' => false, - 'with' => [], - ], - T_SWITCH => [ - 'start' => [T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET], - 'end' => [T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET], - 'strict' => true, - 'shared' => false, - 'with' => [], - ], - T_CASE => [ - 'start' => [T_COLON => T_COLON], - 'end' => [ - T_BREAK => T_BREAK, - T_RETURN => T_RETURN, - T_CONTINUE => T_CONTINUE, - T_THROW => T_THROW, - ], - 'strict' => true, - 'shared' => true, - 'with' => [ - T_DEFAULT => T_DEFAULT, - T_CASE => T_CASE, - T_SWITCH => T_SWITCH, - ], - ], - T_DEFAULT => [ - 'start' => [T_COLON => T_COLON], - 'end' => [ - T_BREAK => T_BREAK, - T_RETURN => T_RETURN, - T_CONTINUE => T_CONTINUE, - T_THROW => T_THROW, - ], - 'strict' => true, - 'shared' => true, - 'with' => [ - T_CASE => T_CASE, - T_SWITCH => T_SWITCH, - ], - ], - ]; - - /** - * A list of tokens that end the scope. - * - * This array is just a unique collection of the end tokens - * from the _scopeOpeners array. The data is duplicated here to - * save time during parsing of the file. - * - * @var array - */ - public $endScopeTokens = [ - T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET, - T_BREAK => T_BREAK, - ]; - - /** - * A list of special JS tokens and their types. - * - * @var array - */ - protected $tokenValues = [ - 'class' => 'T_CLASS', - 'function' => 'T_FUNCTION', - 'prototype' => 'T_PROTOTYPE', - 'try' => 'T_TRY', - 'catch' => 'T_CATCH', - 'return' => 'T_RETURN', - 'throw' => 'T_THROW', - 'break' => 'T_BREAK', - 'switch' => 'T_SWITCH', - 'continue' => 'T_CONTINUE', - 'if' => 'T_IF', - 'else' => 'T_ELSE', - 'do' => 'T_DO', - 'while' => 'T_WHILE', - 'for' => 'T_FOR', - 'var' => 'T_VAR', - 'case' => 'T_CASE', - 'default' => 'T_DEFAULT', - 'true' => 'T_TRUE', - 'false' => 'T_FALSE', - 'null' => 'T_NULL', - 'this' => 'T_THIS', - 'typeof' => 'T_TYPEOF', - '(' => 'T_OPEN_PARENTHESIS', - ')' => 'T_CLOSE_PARENTHESIS', - '{' => 'T_OPEN_CURLY_BRACKET', - '}' => 'T_CLOSE_CURLY_BRACKET', - '[' => 'T_OPEN_SQUARE_BRACKET', - ']' => 'T_CLOSE_SQUARE_BRACKET', - '?' => 'T_INLINE_THEN', - '.' => 'T_OBJECT_OPERATOR', - '+' => 'T_PLUS', - '-' => 'T_MINUS', - '*' => 'T_MULTIPLY', - '%' => 'T_MODULUS', - '/' => 'T_DIVIDE', - '^' => 'T_LOGICAL_XOR', - ',' => 'T_COMMA', - ';' => 'T_SEMICOLON', - ':' => 'T_COLON', - '<' => 'T_LESS_THAN', - '>' => 'T_GREATER_THAN', - '<<' => 'T_SL', - '>>' => 'T_SR', - '>>>' => 'T_ZSR', - '<<=' => 'T_SL_EQUAL', - '>>=' => 'T_SR_EQUAL', - '>>>=' => 'T_ZSR_EQUAL', - '<=' => 'T_IS_SMALLER_OR_EQUAL', - '>=' => 'T_IS_GREATER_OR_EQUAL', - '=>' => 'T_DOUBLE_ARROW', - '!' => 'T_BOOLEAN_NOT', - '||' => 'T_BOOLEAN_OR', - '&&' => 'T_BOOLEAN_AND', - '|' => 'T_BITWISE_OR', - '&' => 'T_BITWISE_AND', - '!=' => 'T_IS_NOT_EQUAL', - '!==' => 'T_IS_NOT_IDENTICAL', - '=' => 'T_EQUAL', - '==' => 'T_IS_EQUAL', - '===' => 'T_IS_IDENTICAL', - '-=' => 'T_MINUS_EQUAL', - '+=' => 'T_PLUS_EQUAL', - '*=' => 'T_MUL_EQUAL', - '/=' => 'T_DIV_EQUAL', - '%=' => 'T_MOD_EQUAL', - '++' => 'T_INC', - '--' => 'T_DEC', - '//' => 'T_COMMENT', - '/*' => 'T_COMMENT', - '/**' => 'T_DOC_COMMENT', - '*/' => 'T_COMMENT', - ]; - - /** - * A list string delimiters. - * - * @var array - */ - protected $stringTokens = [ - '\'' => '\'', - '"' => '"', - ]; - - /** - * A list tokens that start and end comments. - * - * @var array - */ - protected $commentTokens = [ - '//' => null, - '/*' => '*/', - '/**' => '*/', - ]; - - - /** - * Initialise the tokenizer. - * - * Pre-checks the content to see if it looks minified. - * - * @param string $content The content to tokenize. - * @param \PHP_CodeSniffer\Config $config The config data for the run. - * @param string $eolChar The EOL char used in the content. - * - * @return void - * @throws \PHP_CodeSniffer\Exceptions\TokenizerException If the file appears to be minified. - */ - public function __construct($content, Config $config, $eolChar='\n') - { - if ($this->isMinifiedContent($content, $eolChar) === true) { - throw new TokenizerException('File appears to be minified and cannot be processed'); - } - - parent::__construct($content, $config, $eolChar); - - }//end __construct() - - - /** - * Creates an array of tokens when given some JS code. - * - * @param string $string The string to tokenize. - * - * @return array - */ - public function tokenize($string) - { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t*** START JS TOKENIZING ***".PHP_EOL; - } - - $maxTokenLength = 0; - foreach ($this->tokenValues as $token => $values) { - if (strlen($token) > $maxTokenLength) { - $maxTokenLength = strlen($token); - } - } - - $tokens = []; - $inString = ''; - $stringChar = null; - $inComment = ''; - $buffer = ''; - $preStringBuffer = ''; - $cleanBuffer = false; - - $commentTokenizer = new Comment(); - - $tokens[] = [ - 'code' => T_OPEN_TAG, - 'type' => 'T_OPEN_TAG', - 'content' => '', - ]; - - // Convert newlines to single characters for ease of - // processing. We will change them back later. - $string = str_replace($this->eolChar, "\n", $string); - - $chars = str_split($string); - $numChars = count($chars); - for ($i = 0; $i < $numChars; $i++) { - $char = $chars[$i]; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $content = Util\Common::prepareForOutput($char); - $bufferContent = Util\Common::prepareForOutput($buffer); - - if ($inString !== '') { - echo "\t"; - } - - if ($inComment !== '') { - echo "\t"; - } - - echo "\tProcess char $i => $content (buffer: $bufferContent)".PHP_EOL; - }//end if - - if ($inString === '' && $inComment === '' && $buffer !== '') { - // If the buffer only has whitespace and we are about to - // add a character, store the whitespace first. - if (trim($char) !== '' && trim($buffer) === '') { - $tokens[] = [ - 'code' => T_WHITESPACE, - 'type' => 'T_WHITESPACE', - 'content' => str_replace("\n", $this->eolChar, $buffer), - ]; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $content = Util\Common::prepareForOutput($buffer); - echo "\t=> Added token T_WHITESPACE ($content)".PHP_EOL; - } - - $buffer = ''; - } - - // If the buffer is not whitespace and we are about to - // add a whitespace character, store the content first. - if ($inString === '' - && $inComment === '' - && trim($char) === '' - && trim($buffer) !== '' - ) { - $tokens[] = [ - 'code' => T_STRING, - 'type' => 'T_STRING', - 'content' => str_replace("\n", $this->eolChar, $buffer), - ]; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $content = Util\Common::prepareForOutput($buffer); - echo "\t=> Added token T_STRING ($content)".PHP_EOL; - } - - $buffer = ''; - } - }//end if - - // Process strings. - if ($inComment === '' && isset($this->stringTokens[$char]) === true) { - if ($inString === $char) { - // This could be the end of the string, but make sure it - // is not escaped first. - $escapes = 0; - for ($x = ($i - 1); $x >= 0; $x--) { - if ($chars[$x] !== '\\') { - break; - } - - $escapes++; - } - - if ($escapes === 0 || ($escapes % 2) === 0) { - // There is an even number escape chars, - // so this is not escaped, it is the end of the string. - $tokens[] = [ - 'code' => T_CONSTANT_ENCAPSED_STRING, - 'type' => 'T_CONSTANT_ENCAPSED_STRING', - 'content' => str_replace("\n", $this->eolChar, $buffer).$char, - ]; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* found end of string *".PHP_EOL; - $content = Util\Common::prepareForOutput($buffer.$char); - echo "\t=> Added token T_CONSTANT_ENCAPSED_STRING ($content)".PHP_EOL; - } - - $buffer = ''; - $preStringBuffer = ''; - $inString = ''; - $stringChar = null; - continue; - }//end if - } else if ($inString === '') { - $inString = $char; - $stringChar = $i; - $preStringBuffer = $buffer; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* looking for string closer *".PHP_EOL; - } - }//end if - }//end if - - if ($inString !== '' && $char === "\n") { - // Unless this newline character is escaped, the string did not - // end before the end of the line, which means it probably - // wasn't a string at all (maybe a regex). - if ($chars[($i - 1)] !== '\\') { - $i = $stringChar; - $buffer = $preStringBuffer; - $preStringBuffer = ''; - $inString = ''; - $stringChar = null; - $char = $chars[$i]; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* found newline before end of string, bailing *".PHP_EOL; - } - } - } - - $buffer .= $char; - - // We don't look for special tokens inside strings, - // so if we are in a string, we can continue here now - // that the current char is in the buffer. - if ($inString !== '') { - continue; - } - - // Special case for T_DIVIDE which can actually be - // the start of a regular expression. - if ($buffer === $char && $char === '/' && $chars[($i + 1)] !== '*') { - $regex = $this->getRegexToken($i, $string, $chars, $tokens); - if ($regex !== null) { - $tokens[] = [ - 'code' => T_REGULAR_EXPRESSION, - 'type' => 'T_REGULAR_EXPRESSION', - 'content' => $regex['content'], - ]; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $content = Util\Common::prepareForOutput($regex['content']); - echo "\t=> Added token T_REGULAR_EXPRESSION ($content)".PHP_EOL; - } - - $i = $regex['end']; - $buffer = ''; - $cleanBuffer = false; - continue; - }//end if - }//end if - - // Check for known tokens, but ignore tokens found that are not at - // the end of a string, like FOR and this.FORmat. - if (isset($this->tokenValues[strtolower($buffer)]) === true - && (preg_match('|[a-zA-z0-9_]|', $char) === 0 - || isset($chars[($i + 1)]) === false - || preg_match('|[a-zA-z0-9_]|', $chars[($i + 1)]) === 0) - ) { - $matchedToken = false; - $lookAheadLength = ($maxTokenLength - strlen($buffer)); - - if ($lookAheadLength > 0) { - // The buffer contains a token type, but we need - // to look ahead at the next chars to see if this is - // actually part of a larger token. For example, - // FOR and FOREACH. - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* buffer possibly contains token, looking ahead $lookAheadLength chars *".PHP_EOL; - } - - $charBuffer = $buffer; - for ($x = 1; $x <= $lookAheadLength; $x++) { - if (isset($chars[($i + $x)]) === false) { - break; - } - - $charBuffer .= $chars[($i + $x)]; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $content = Util\Common::prepareForOutput($charBuffer); - echo "\t\t=> Looking ahead $x chars => $content".PHP_EOL; - } - - if (isset($this->tokenValues[strtolower($charBuffer)]) === true) { - // We've found something larger that matches - // so we can ignore this char. Except for 1 very specific - // case where a comment like /**/ needs to tokenize as - // T_COMMENT and not T_DOC_COMMENT. - $oldType = $this->tokenValues[strtolower($buffer)]; - $newType = $this->tokenValues[strtolower($charBuffer)]; - if ($oldType === 'T_COMMENT' - && $newType === 'T_DOC_COMMENT' - && $chars[($i + $x + 1)] === '/' - ) { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* look ahead ignored T_DOC_COMMENT, continuing *".PHP_EOL; - } - } else { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* look ahead found more specific token ($newType), ignoring $i *".PHP_EOL; - } - - $matchedToken = true; - break; - } - }//end if - }//end for - }//end if - - if ($matchedToken === false) { - if (PHP_CODESNIFFER_VERBOSITY > 1 && $lookAheadLength > 0) { - echo "\t\t* look ahead found nothing *".PHP_EOL; - } - - $value = $this->tokenValues[strtolower($buffer)]; - - if ($value === 'T_FUNCTION' && $buffer !== 'function') { - // The function keyword needs to be all lowercase or else - // it is just a function called "Function". - $value = 'T_STRING'; - } - - $tokens[] = [ - 'code' => constant($value), - 'type' => $value, - 'content' => $buffer, - ]; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $content = Util\Common::prepareForOutput($buffer); - echo "\t=> Added token $value ($content)".PHP_EOL; - } - - $cleanBuffer = true; - }//end if - } else if (isset($this->tokenValues[strtolower($char)]) === true) { - // No matter what token we end up using, we don't - // need the content in the buffer any more because we have - // found a valid token. - $newContent = substr(str_replace("\n", $this->eolChar, $buffer), 0, -1); - if ($newContent !== '') { - $tokens[] = [ - 'code' => T_STRING, - 'type' => 'T_STRING', - 'content' => $newContent, - ]; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $content = Util\Common::prepareForOutput(substr($buffer, 0, -1)); - echo "\t=> Added token T_STRING ($content)".PHP_EOL; - } - } - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* char is token, looking ahead ".($maxTokenLength - 1).' chars *'.PHP_EOL; - } - - // The char is a token type, but we need to look ahead at the - // next chars to see if this is actually part of a larger token. - // For example, = and ===. - $charBuffer = $char; - $matchedToken = false; - for ($x = 1; $x <= $maxTokenLength; $x++) { - if (isset($chars[($i + $x)]) === false) { - break; - } - - $charBuffer .= $chars[($i + $x)]; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $content = Util\Common::prepareForOutput($charBuffer); - echo "\t\t=> Looking ahead $x chars => $content".PHP_EOL; - } - - if (isset($this->tokenValues[strtolower($charBuffer)]) === true) { - // We've found something larger that matches - // so we can ignore this char. - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $this->tokenValues[strtolower($charBuffer)]; - echo "\t\t* look ahead found more specific token ($type), ignoring $i *".PHP_EOL; - } - - $matchedToken = true; - break; - } - }//end for - - if ($matchedToken === false) { - $value = $this->tokenValues[strtolower($char)]; - $tokens[] = [ - 'code' => constant($value), - 'type' => $value, - 'content' => $char, - ]; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* look ahead found nothing *".PHP_EOL; - $content = Util\Common::prepareForOutput($char); - echo "\t=> Added token $value ($content)".PHP_EOL; - } - - $cleanBuffer = true; - } else { - $buffer = $char; - }//end if - }//end if - - // Keep track of content inside comments. - if ($inComment === '' - && array_key_exists($buffer, $this->commentTokens) === true - ) { - // This is not really a comment if the content - // looks like \// (i.e., it is escaped). - if (isset($chars[($i - 2)]) === true && $chars[($i - 2)] === '\\') { - $lastToken = array_pop($tokens); - $lastContent = $lastToken['content']; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $value = $this->tokenValues[strtolower($lastContent)]; - $content = Util\Common::prepareForOutput($lastContent); - echo "\t=> Removed token $value ($content)".PHP_EOL; - } - - $lastChars = str_split($lastContent); - $lastNumChars = count($lastChars); - for ($x = 0; $x < $lastNumChars; $x++) { - $lastChar = $lastChars[$x]; - $value = $this->tokenValues[strtolower($lastChar)]; - $tokens[] = [ - 'code' => constant($value), - 'type' => $value, - 'content' => $lastChar, - ]; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $content = Util\Common::prepareForOutput($lastChar); - echo "\t=> Added token $value ($content)".PHP_EOL; - } - } - } else { - // We have started a comment. - $inComment = $buffer; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* looking for end of comment *".PHP_EOL; - } - }//end if - } else if ($inComment !== '') { - if ($this->commentTokens[$inComment] === null) { - // Comment ends at the next newline. - if (strpos($buffer, "\n") !== false) { - $inComment = ''; - } - } else { - if ($this->commentTokens[$inComment] === $buffer) { - $inComment = ''; - } - } - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - if ($inComment === '') { - echo "\t\t* found end of comment *".PHP_EOL; - } - } - - if ($inComment === '' && $cleanBuffer === false) { - $tokens[] = [ - 'code' => T_STRING, - 'type' => 'T_STRING', - 'content' => str_replace("\n", $this->eolChar, $buffer), - ]; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $content = Util\Common::prepareForOutput($buffer); - echo "\t=> Added token T_STRING ($content)".PHP_EOL; - } - - $buffer = ''; - } - }//end if - - if ($cleanBuffer === true) { - $buffer = ''; - $cleanBuffer = false; - } - }//end for - - if (empty($buffer) === false) { - if ($inString !== '') { - // The string did not end before the end of the file, - // which means there was probably a syntax error somewhere. - $tokens[] = [ - 'code' => T_STRING, - 'type' => 'T_STRING', - 'content' => str_replace("\n", $this->eolChar, $buffer), - ]; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $content = Util\Common::prepareForOutput($buffer); - echo "\t=> Added token T_STRING ($content)".PHP_EOL; - } - } else { - // Buffer contains whitespace from the end of the file. - $tokens[] = [ - 'code' => T_WHITESPACE, - 'type' => 'T_WHITESPACE', - 'content' => str_replace("\n", $this->eolChar, $buffer), - ]; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $content = Util\Common::prepareForOutput($buffer); - echo "\t=> Added token T_WHITESPACE ($content)".PHP_EOL; - } - }//end if - }//end if - - $tokens[] = [ - 'code' => T_CLOSE_TAG, - 'type' => 'T_CLOSE_TAG', - 'content' => '', - ]; - - /* - Now that we have done some basic tokenizing, we need to - modify the tokens to join some together and split some apart - so they match what the PHP tokenizer does. - */ - - $finalTokens = []; - $newStackPtr = 0; - $numTokens = count($tokens); - for ($stackPtr = 0; $stackPtr < $numTokens; $stackPtr++) { - $token = $tokens[$stackPtr]; - - /* - Look for comments and join the tokens together. - */ - - if ($token['code'] === T_COMMENT || $token['code'] === T_DOC_COMMENT) { - $newContent = ''; - $tokenContent = $token['content']; - - $endContent = null; - if (isset($this->commentTokens[$tokenContent]) === true) { - $endContent = $this->commentTokens[$tokenContent]; - } - - while ($tokenContent !== $endContent) { - if ($endContent === null - && strpos($tokenContent, $this->eolChar) !== false - ) { - // A null end token means the comment ends at the end of - // the line so we look for newlines and split the token. - $tokens[$stackPtr]['content'] = substr( - $tokenContent, - (strpos($tokenContent, $this->eolChar) + strlen($this->eolChar)) - ); - - $tokenContent = substr( - $tokenContent, - 0, - (strpos($tokenContent, $this->eolChar) + strlen($this->eolChar)) - ); - - // If the substr failed, skip the token as the content - // will now be blank. - if ($tokens[$stackPtr]['content'] !== false - && $tokens[$stackPtr]['content'] !== '' - ) { - $stackPtr--; - } - - break; - }//end if - - $stackPtr++; - $newContent .= $tokenContent; - if (isset($tokens[$stackPtr]) === false) { - break; - } - - $tokenContent = $tokens[$stackPtr]['content']; - }//end while - - if ($token['code'] === T_DOC_COMMENT) { - $commentTokens = $commentTokenizer->tokenizeString($newContent.$tokenContent, $this->eolChar, $newStackPtr); - foreach ($commentTokens as $commentToken) { - $finalTokens[$newStackPtr] = $commentToken; - $newStackPtr++; - } - - continue; - } else { - // Save the new content in the current token so - // the code below can chop it up on newlines. - $token['content'] = $newContent.$tokenContent; - } - }//end if - - /* - If this token has newlines in its content, split each line up - and create a new token for each line. We do this so it's easier - to ascertain where errors occur on a line. - Note that $token[1] is the token's content. - */ - - if (strpos($token['content'], $this->eolChar) !== false) { - $tokenLines = explode($this->eolChar, $token['content']); - $numLines = count($tokenLines); - - for ($i = 0; $i < $numLines; $i++) { - $newToken = ['content' => $tokenLines[$i]]; - if ($i === ($numLines - 1)) { - if ($tokenLines[$i] === '') { - break; - } - } else { - $newToken['content'] .= $this->eolChar; - } - - $newToken['type'] = $token['type']; - $newToken['code'] = $token['code']; - $finalTokens[$newStackPtr] = $newToken; - $newStackPtr++; - } - } else { - $finalTokens[$newStackPtr] = $token; - $newStackPtr++; - }//end if - - // Convert numbers, including decimals. - if ($token['code'] === T_STRING - || $token['code'] === T_OBJECT_OPERATOR - ) { - $newContent = ''; - $oldStackPtr = $stackPtr; - while (preg_match('|^[0-9\.]+$|', $tokens[$stackPtr]['content']) !== 0) { - $newContent .= $tokens[$stackPtr]['content']; - $stackPtr++; - } - - if ($newContent !== '' && $newContent !== '.') { - $finalTokens[($newStackPtr - 1)]['content'] = $newContent; - if (ctype_digit($newContent) === true) { - $finalTokens[($newStackPtr - 1)]['code'] = constant('T_LNUMBER'); - $finalTokens[($newStackPtr - 1)]['type'] = 'T_LNUMBER'; - } else { - $finalTokens[($newStackPtr - 1)]['code'] = constant('T_DNUMBER'); - $finalTokens[($newStackPtr - 1)]['type'] = 'T_DNUMBER'; - } - - $stackPtr--; - continue; - } else { - $stackPtr = $oldStackPtr; - } - }//end if - - // Convert the token after an object operator into a string, in most cases. - if ($token['code'] === T_OBJECT_OPERATOR) { - for ($i = ($stackPtr + 1); $i < $numTokens; $i++) { - if (isset(Util\Tokens::$emptyTokens[$tokens[$i]['code']]) === true) { - continue; - } - - if ($tokens[$i]['code'] !== T_PROTOTYPE - && $tokens[$i]['code'] !== T_LNUMBER - && $tokens[$i]['code'] !== T_DNUMBER - ) { - $tokens[$i]['code'] = T_STRING; - $tokens[$i]['type'] = 'T_STRING'; - } - - break; - } - } - }//end for - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t*** END TOKENIZING ***".PHP_EOL; - } - - return $finalTokens; - - }//end tokenize() - - - /** - * Tokenizes a regular expression if one is found. - * - * If a regular expression is not found, NULL is returned. - * - * @param int $char The index of the possible regex start character. - * @param string $string The complete content of the string being tokenized. - * @param array $chars An array of characters being tokenized. - * @param array $tokens The current array of tokens found in the string. - * - * @return array|null - */ - public function getRegexToken($char, $string, $chars, $tokens) - { - $beforeTokens = [ - T_EQUAL => true, - T_IS_NOT_EQUAL => true, - T_IS_IDENTICAL => true, - T_IS_NOT_IDENTICAL => true, - T_OPEN_PARENTHESIS => true, - T_OPEN_SQUARE_BRACKET => true, - T_RETURN => true, - T_BOOLEAN_OR => true, - T_BOOLEAN_AND => true, - T_BOOLEAN_NOT => true, - T_BITWISE_OR => true, - T_BITWISE_AND => true, - T_COMMA => true, - T_COLON => true, - T_TYPEOF => true, - T_INLINE_THEN => true, - T_INLINE_ELSE => true, - ]; - - $afterTokens = [ - ',' => true, - ')' => true, - ']' => true, - ';' => true, - ' ' => true, - '.' => true, - ':' => true, - $this->eolChar => true, - ]; - - // Find the last non-whitespace token that was added - // to the tokens array. - $numTokens = count($tokens); - for ($prev = ($numTokens - 1); $prev >= 0; $prev--) { - if (isset(Util\Tokens::$emptyTokens[$tokens[$prev]['code']]) === false) { - break; - } - } - - if (isset($beforeTokens[$tokens[$prev]['code']]) === false) { - return null; - } - - // This is probably a regular expression, so look for the end of it. - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t* token possibly starts a regular expression *".PHP_EOL; - } - - $numChars = count($chars); - for ($next = ($char + 1); $next < $numChars; $next++) { - if ($chars[$next] === '/') { - // Just make sure this is not escaped first. - if ($chars[($next - 1)] !== '\\') { - // In the simple form: /.../ so we found the end. - break; - } else if ($chars[($next - 2)] === '\\') { - // In the form: /...\\/ so we found the end. - break; - } - } else { - $possibleEolChar = substr($string, $next, strlen($this->eolChar)); - if ($possibleEolChar === $this->eolChar) { - // This is the last token on the line and regular - // expressions need to be defined on a single line, - // so this is not a regular expression. - break; - } - } - } - - if ($chars[$next] !== '/') { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t* could not find end of regular expression *".PHP_EOL; - } - - return null; - } - - while (preg_match('|[a-zA-Z]|', $chars[($next + 1)]) !== 0) { - // The token directly after the end of the regex can - // be modifiers like global and case insensitive - // (.e.g, /pattern/gi). - $next++; - } - - $regexEnd = $next; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t* found end of regular expression at token $regexEnd *".PHP_EOL; - } - - for ($next += 1; $next < $numChars; $next++) { - if ($chars[$next] !== ' ') { - break; - } else { - $possibleEolChar = substr($string, $next, strlen($this->eolChar)); - if ($possibleEolChar === $this->eolChar) { - // This is the last token on the line. - break; - } - } - } - - if (isset($afterTokens[$chars[$next]]) === false) { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t* tokens after regular expression do not look correct *".PHP_EOL; - } - - return null; - } - - // This is a regular expression, so join all the tokens together. - $content = ''; - for ($x = $char; $x <= $regexEnd; $x++) { - $content .= $chars[$x]; - } - - $token = [ - 'start' => $char, - 'end' => $regexEnd, - 'content' => $content, - ]; - - return $token; - - }//end getRegexToken() - - - /** - * Performs additional processing after main tokenizing. - * - * This additional processing looks for properties, closures, labels and objects. - * - * @return void - */ - public function processAdditional() - { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t*** START ADDITIONAL JS PROCESSING ***".PHP_EOL; - } - - $numTokens = count($this->tokens); - $classStack = []; - - for ($i = 0; $i < $numTokens; $i++) { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $this->tokens[$i]['type']; - $content = Util\Common::prepareForOutput($this->tokens[$i]['content']); - - echo str_repeat("\t", count($classStack)); - echo "\tProcess token $i: $type => $content".PHP_EOL; - } - - // Looking for functions that are actually closures. - if ($this->tokens[$i]['code'] === T_FUNCTION && isset($this->tokens[$i]['scope_opener']) === true) { - for ($x = ($i + 1); $x < $numTokens; $x++) { - if (isset(Util\Tokens::$emptyTokens[$this->tokens[$x]['code']]) === false) { - break; - } - } - - if ($this->tokens[$x]['code'] === T_OPEN_PARENTHESIS) { - $this->tokens[$i]['code'] = T_CLOSURE; - $this->tokens[$i]['type'] = 'T_CLOSURE'; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $line = $this->tokens[$i]['line']; - echo str_repeat("\t", count($classStack)); - echo "\t* token $i on line $line changed from T_FUNCTION to T_CLOSURE *".PHP_EOL; - } - - for ($x = ($this->tokens[$i]['scope_opener'] + 1); $x < $this->tokens[$i]['scope_closer']; $x++) { - if (isset($this->tokens[$x]['conditions'][$i]) === false) { - continue; - } - - $this->tokens[$x]['conditions'][$i] = T_CLOSURE; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $this->tokens[$x]['type']; - echo str_repeat("\t", count($classStack)); - echo "\t\t* cleaned $x ($type) *".PHP_EOL; - } - } - }//end if - - continue; - } else if ($this->tokens[$i]['code'] === T_OPEN_CURLY_BRACKET - && isset($this->tokens[$i]['scope_condition']) === false - && isset($this->tokens[$i]['bracket_closer']) === true - ) { - $condition = $this->tokens[$i]['conditions']; - $condition = end($condition); - if ($condition === T_CLASS) { - // Possibly an ES6 method. To be classified as one, the previous - // non-empty tokens need to be a set of parenthesis, and then a string - // (the method name). - for ($parenCloser = ($i - 1); $parenCloser > 0; $parenCloser--) { - if (isset(Util\Tokens::$emptyTokens[$this->tokens[$parenCloser]['code']]) === false) { - break; - } - } - - if ($this->tokens[$parenCloser]['code'] === T_CLOSE_PARENTHESIS) { - $parenOpener = $this->tokens[$parenCloser]['parenthesis_opener']; - for ($name = ($parenOpener - 1); $name > 0; $name--) { - if (isset(Util\Tokens::$emptyTokens[$this->tokens[$name]['code']]) === false) { - break; - } - } - - if ($this->tokens[$name]['code'] === T_STRING) { - // We found a method name. - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $line = $this->tokens[$name]['line']; - echo str_repeat("\t", count($classStack)); - echo "\t* token $name on line $line changed from T_STRING to T_FUNCTION *".PHP_EOL; - } - - $closer = $this->tokens[$i]['bracket_closer']; - - $this->tokens[$name]['code'] = T_FUNCTION; - $this->tokens[$name]['type'] = 'T_FUNCTION'; - - foreach ([$name, $i, $closer] as $token) { - $this->tokens[$token]['scope_condition'] = $name; - $this->tokens[$token]['scope_opener'] = $i; - $this->tokens[$token]['scope_closer'] = $closer; - $this->tokens[$token]['parenthesis_opener'] = $parenOpener; - $this->tokens[$token]['parenthesis_closer'] = $parenCloser; - $this->tokens[$token]['parenthesis_owner'] = $name; - } - - $this->tokens[$parenOpener]['parenthesis_owner'] = $name; - $this->tokens[$parenCloser]['parenthesis_owner'] = $name; - - for ($x = ($i + 1); $x < $closer; $x++) { - $this->tokens[$x]['conditions'][$name] = T_FUNCTION; - ksort($this->tokens[$x]['conditions'], SORT_NUMERIC); - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $this->tokens[$x]['type']; - echo str_repeat("\t", count($classStack)); - echo "\t\t* added T_FUNCTION condition to $x ($type) *".PHP_EOL; - } - } - - continue; - }//end if - }//end if - }//end if - - $classStack[] = $i; - - $closer = $this->tokens[$i]['bracket_closer']; - $this->tokens[$i]['code'] = T_OBJECT; - $this->tokens[$i]['type'] = 'T_OBJECT'; - $this->tokens[$closer]['code'] = T_CLOSE_OBJECT; - $this->tokens[$closer]['type'] = 'T_CLOSE_OBJECT'; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", count($classStack)); - echo "\t* token $i converted from T_OPEN_CURLY_BRACKET to T_OBJECT *".PHP_EOL; - echo str_repeat("\t", count($classStack)); - echo "\t* token $closer converted from T_CLOSE_CURLY_BRACKET to T_CLOSE_OBJECT *".PHP_EOL; - } - - for ($x = ($i + 1); $x < $closer; $x++) { - $this->tokens[$x]['conditions'][$i] = T_OBJECT; - ksort($this->tokens[$x]['conditions'], SORT_NUMERIC); - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $this->tokens[$x]['type']; - echo str_repeat("\t", count($classStack)); - echo "\t\t* added T_OBJECT condition to $x ($type) *".PHP_EOL; - } - } - } else if ($this->tokens[$i]['code'] === T_CLOSE_OBJECT) { - array_pop($classStack); - } else if ($this->tokens[$i]['code'] === T_COLON) { - // If it is a scope opener, it belongs to a - // DEFAULT or CASE statement. - if (isset($this->tokens[$i]['scope_condition']) === true) { - continue; - } - - // Make sure this is not part of an inline IF statement. - for ($x = ($i - 1); $x >= 0; $x--) { - if ($this->tokens[$x]['code'] === T_INLINE_THEN) { - $this->tokens[$i]['code'] = T_INLINE_ELSE; - $this->tokens[$i]['type'] = 'T_INLINE_ELSE'; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", count($classStack)); - echo "\t* token $i converted from T_COLON to T_INLINE_THEN *".PHP_EOL; - } - - continue(2); - } else if ($this->tokens[$x]['line'] < $this->tokens[$i]['line']) { - break; - } - } - - // The string to the left of the colon is either a property or label. - for ($label = ($i - 1); $label >= 0; $label--) { - if (isset(Util\Tokens::$emptyTokens[$this->tokens[$label]['code']]) === false) { - break; - } - } - - if ($this->tokens[$label]['code'] !== T_STRING - && $this->tokens[$label]['code'] !== T_CONSTANT_ENCAPSED_STRING - ) { - continue; - } - - if (empty($classStack) === false) { - $this->tokens[$label]['code'] = T_PROPERTY; - $this->tokens[$label]['type'] = 'T_PROPERTY'; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", count($classStack)); - echo "\t* token $label converted from T_STRING to T_PROPERTY *".PHP_EOL; - } - } else { - $this->tokens[$label]['code'] = T_LABEL; - $this->tokens[$label]['type'] = 'T_LABEL'; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", count($classStack)); - echo "\t* token $label converted from T_STRING to T_LABEL *".PHP_EOL; - } - }//end if - }//end if - }//end for - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t*** END ADDITIONAL JS PROCESSING ***".PHP_EOL; - } - - }//end processAdditional() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Tokenizers/PHP.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Tokenizers/PHP.php deleted file mode 100644 index 9c6c11e4..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Tokenizers/PHP.php +++ /dev/null @@ -1,4002 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Tokenizers; - -use PHP_CodeSniffer\Util\Common; -use PHP_CodeSniffer\Util\Tokens; - -class PHP extends Tokenizer -{ - - /** - * A list of tokens that are allowed to open a scope. - * - * This array also contains information about what kind of token the scope - * opener uses to open and close the scope, if the token strictly requires - * an opener, if the token can share a scope closer, and who it can be shared - * with. An example of a token that shares a scope closer is a CASE scope. - * - * @var array - */ - public $scopeOpeners = [ - T_IF => [ - 'start' => [ - T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET, - T_COLON => T_COLON, - ], - 'end' => [ - T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET, - T_ENDIF => T_ENDIF, - T_ELSE => T_ELSE, - T_ELSEIF => T_ELSEIF, - ], - 'strict' => false, - 'shared' => false, - 'with' => [ - T_ELSE => T_ELSE, - T_ELSEIF => T_ELSEIF, - ], - ], - T_TRY => [ - 'start' => [T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET], - 'end' => [T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET], - 'strict' => true, - 'shared' => false, - 'with' => [], - ], - T_CATCH => [ - 'start' => [T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET], - 'end' => [T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET], - 'strict' => true, - 'shared' => false, - 'with' => [], - ], - T_FINALLY => [ - 'start' => [T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET], - 'end' => [T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET], - 'strict' => true, - 'shared' => false, - 'with' => [], - ], - T_ELSE => [ - 'start' => [ - T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET, - T_COLON => T_COLON, - ], - 'end' => [ - T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET, - T_ENDIF => T_ENDIF, - ], - 'strict' => false, - 'shared' => false, - 'with' => [ - T_IF => T_IF, - T_ELSEIF => T_ELSEIF, - ], - ], - T_ELSEIF => [ - 'start' => [ - T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET, - T_COLON => T_COLON, - ], - 'end' => [ - T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET, - T_ENDIF => T_ENDIF, - T_ELSE => T_ELSE, - T_ELSEIF => T_ELSEIF, - ], - 'strict' => false, - 'shared' => false, - 'with' => [ - T_IF => T_IF, - T_ELSE => T_ELSE, - ], - ], - T_FOR => [ - 'start' => [ - T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET, - T_COLON => T_COLON, - ], - 'end' => [ - T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET, - T_ENDFOR => T_ENDFOR, - ], - 'strict' => false, - 'shared' => false, - 'with' => [], - ], - T_FOREACH => [ - 'start' => [ - T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET, - T_COLON => T_COLON, - ], - 'end' => [ - T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET, - T_ENDFOREACH => T_ENDFOREACH, - ], - 'strict' => false, - 'shared' => false, - 'with' => [], - ], - T_INTERFACE => [ - 'start' => [T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET], - 'end' => [T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET], - 'strict' => true, - 'shared' => false, - 'with' => [], - ], - T_FUNCTION => [ - 'start' => [T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET], - 'end' => [T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET], - 'strict' => true, - 'shared' => false, - 'with' => [], - ], - T_CLASS => [ - 'start' => [T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET], - 'end' => [T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET], - 'strict' => true, - 'shared' => false, - 'with' => [], - ], - T_TRAIT => [ - 'start' => [T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET], - 'end' => [T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET], - 'strict' => true, - 'shared' => false, - 'with' => [], - ], - T_ENUM => [ - 'start' => [T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET], - 'end' => [T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET], - 'strict' => true, - 'shared' => false, - 'with' => [], - ], - T_USE => [ - 'start' => [T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET], - 'end' => [T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET], - 'strict' => false, - 'shared' => false, - 'with' => [], - ], - T_DECLARE => [ - 'start' => [ - T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET, - T_COLON => T_COLON, - ], - 'end' => [ - T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET, - T_ENDDECLARE => T_ENDDECLARE, - ], - 'strict' => false, - 'shared' => false, - 'with' => [], - ], - T_NAMESPACE => [ - 'start' => [T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET], - 'end' => [T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET], - 'strict' => false, - 'shared' => false, - 'with' => [], - ], - T_WHILE => [ - 'start' => [ - T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET, - T_COLON => T_COLON, - ], - 'end' => [ - T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET, - T_ENDWHILE => T_ENDWHILE, - ], - 'strict' => false, - 'shared' => false, - 'with' => [], - ], - T_DO => [ - 'start' => [T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET], - 'end' => [T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET], - 'strict' => true, - 'shared' => false, - 'with' => [], - ], - T_SWITCH => [ - 'start' => [ - T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET, - T_COLON => T_COLON, - ], - 'end' => [ - T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET, - T_ENDSWITCH => T_ENDSWITCH, - ], - 'strict' => true, - 'shared' => false, - 'with' => [], - ], - T_CASE => [ - 'start' => [ - T_COLON => T_COLON, - T_SEMICOLON => T_SEMICOLON, - ], - 'end' => [ - T_BREAK => T_BREAK, - T_RETURN => T_RETURN, - T_CONTINUE => T_CONTINUE, - T_THROW => T_THROW, - T_EXIT => T_EXIT, - ], - 'strict' => true, - 'shared' => true, - 'with' => [ - T_DEFAULT => T_DEFAULT, - T_CASE => T_CASE, - T_SWITCH => T_SWITCH, - ], - ], - T_DEFAULT => [ - 'start' => [ - T_COLON => T_COLON, - T_SEMICOLON => T_SEMICOLON, - ], - 'end' => [ - T_BREAK => T_BREAK, - T_RETURN => T_RETURN, - T_CONTINUE => T_CONTINUE, - T_THROW => T_THROW, - T_EXIT => T_EXIT, - ], - 'strict' => true, - 'shared' => true, - 'with' => [ - T_CASE => T_CASE, - T_SWITCH => T_SWITCH, - ], - ], - T_MATCH => [ - 'start' => [T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET], - 'end' => [T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET], - 'strict' => true, - 'shared' => false, - 'with' => [], - ], - T_START_HEREDOC => [ - 'start' => [T_START_HEREDOC => T_START_HEREDOC], - 'end' => [T_END_HEREDOC => T_END_HEREDOC], - 'strict' => true, - 'shared' => false, - 'with' => [], - ], - T_START_NOWDOC => [ - 'start' => [T_START_NOWDOC => T_START_NOWDOC], - 'end' => [T_END_NOWDOC => T_END_NOWDOC], - 'strict' => true, - 'shared' => false, - 'with' => [], - ], - ]; - - /** - * A list of tokens that end the scope. - * - * This array is just a unique collection of the end tokens - * from the scopeOpeners array. The data is duplicated here to - * save time during parsing of the file. - * - * @var array - */ - public $endScopeTokens = [ - T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET, - T_ENDIF => T_ENDIF, - T_ENDFOR => T_ENDFOR, - T_ENDFOREACH => T_ENDFOREACH, - T_ENDWHILE => T_ENDWHILE, - T_ENDSWITCH => T_ENDSWITCH, - T_ENDDECLARE => T_ENDDECLARE, - T_BREAK => T_BREAK, - T_END_HEREDOC => T_END_HEREDOC, - T_END_NOWDOC => T_END_NOWDOC, - ]; - - /** - * Known lengths of tokens. - * - * @var array - */ - public $knownLengths = [ - T_ABSTRACT => 8, - T_AND_EQUAL => 2, - T_ARRAY => 5, - T_AS => 2, - T_BOOLEAN_AND => 2, - T_BOOLEAN_OR => 2, - T_BREAK => 5, - T_CALLABLE => 8, - T_CASE => 4, - T_CATCH => 5, - T_CLASS => 5, - T_CLASS_C => 9, - T_CLONE => 5, - T_CONCAT_EQUAL => 2, - T_CONST => 5, - T_CONTINUE => 8, - T_CURLY_OPEN => 2, - T_DEC => 2, - T_DECLARE => 7, - T_DEFAULT => 7, - T_DIR => 7, - T_DIV_EQUAL => 2, - T_DO => 2, - T_DOLLAR_OPEN_CURLY_BRACES => 2, - T_DOUBLE_ARROW => 2, - T_DOUBLE_COLON => 2, - T_ECHO => 4, - T_ELLIPSIS => 3, - T_ELSE => 4, - T_ELSEIF => 6, - T_EMPTY => 5, - T_ENDDECLARE => 10, - T_ENDFOR => 6, - T_ENDFOREACH => 10, - T_ENDIF => 5, - T_ENDSWITCH => 9, - T_ENDWHILE => 8, - T_ENUM => 4, - T_ENUM_CASE => 4, - T_EVAL => 4, - T_EXTENDS => 7, - T_FILE => 8, - T_FINAL => 5, - T_FINALLY => 7, - T_FN => 2, - T_FOR => 3, - T_FOREACH => 7, - T_FUNCTION => 8, - T_FUNC_C => 12, - T_GLOBAL => 6, - T_GOTO => 4, - T_HALT_COMPILER => 15, - T_IF => 2, - T_IMPLEMENTS => 10, - T_INC => 2, - T_INCLUDE => 7, - T_INCLUDE_ONCE => 12, - T_INSTANCEOF => 10, - T_INSTEADOF => 9, - T_INTERFACE => 9, - T_ISSET => 5, - T_IS_EQUAL => 2, - T_IS_GREATER_OR_EQUAL => 2, - T_IS_IDENTICAL => 3, - T_IS_NOT_EQUAL => 2, - T_IS_NOT_IDENTICAL => 3, - T_IS_SMALLER_OR_EQUAL => 2, - T_LINE => 8, - T_LIST => 4, - T_LOGICAL_AND => 3, - T_LOGICAL_OR => 2, - T_LOGICAL_XOR => 3, - T_MATCH => 5, - T_MATCH_ARROW => 2, - T_MATCH_DEFAULT => 7, - T_METHOD_C => 10, - T_MINUS_EQUAL => 2, - T_POW_EQUAL => 3, - T_MOD_EQUAL => 2, - T_MUL_EQUAL => 2, - T_NAMESPACE => 9, - T_NS_C => 13, - T_NS_SEPARATOR => 1, - T_NEW => 3, - T_NULLSAFE_OBJECT_OPERATOR => 3, - T_OBJECT_OPERATOR => 2, - T_OPEN_TAG_WITH_ECHO => 3, - T_OR_EQUAL => 2, - T_PLUS_EQUAL => 2, - T_PRINT => 5, - T_PRIVATE => 7, - T_PUBLIC => 6, - T_PROTECTED => 9, - T_READONLY => 8, - T_REQUIRE => 7, - T_REQUIRE_ONCE => 12, - T_RETURN => 6, - T_STATIC => 6, - T_SWITCH => 6, - T_THROW => 5, - T_TRAIT => 5, - T_TRAIT_C => 9, - T_TRY => 3, - T_UNSET => 5, - T_USE => 3, - T_VAR => 3, - T_WHILE => 5, - T_XOR_EQUAL => 2, - T_YIELD => 5, - T_OPEN_CURLY_BRACKET => 1, - T_CLOSE_CURLY_BRACKET => 1, - T_OPEN_SQUARE_BRACKET => 1, - T_CLOSE_SQUARE_BRACKET => 1, - T_OPEN_PARENTHESIS => 1, - T_CLOSE_PARENTHESIS => 1, - T_COLON => 1, - T_STRING_CONCAT => 1, - T_INLINE_THEN => 1, - T_INLINE_ELSE => 1, - T_NULLABLE => 1, - T_NULL => 4, - T_FALSE => 5, - T_TRUE => 4, - T_SEMICOLON => 1, - T_EQUAL => 1, - T_MULTIPLY => 1, - T_DIVIDE => 1, - T_PLUS => 1, - T_MINUS => 1, - T_MODULUS => 1, - T_POW => 2, - T_SPACESHIP => 3, - T_COALESCE => 2, - T_COALESCE_EQUAL => 3, - T_BITWISE_AND => 1, - T_BITWISE_OR => 1, - T_BITWISE_XOR => 1, - T_SL => 2, - T_SR => 2, - T_SL_EQUAL => 3, - T_SR_EQUAL => 3, - T_GREATER_THAN => 1, - T_LESS_THAN => 1, - T_BOOLEAN_NOT => 1, - T_SELF => 4, - T_PARENT => 6, - T_COMMA => 1, - T_THIS => 4, - T_CLOSURE => 8, - T_BACKTICK => 1, - T_OPEN_SHORT_ARRAY => 1, - T_CLOSE_SHORT_ARRAY => 1, - T_TYPE_UNION => 1, - T_TYPE_INTERSECTION => 1, - T_TYPE_OPEN_PARENTHESIS => 1, - T_TYPE_CLOSE_PARENTHESIS => 1, - ]; - - /** - * Contexts in which keywords should always be tokenized as T_STRING. - * - * @var array - */ - protected $tstringContexts = [ - T_OBJECT_OPERATOR => true, - T_NULLSAFE_OBJECT_OPERATOR => true, - T_FUNCTION => true, - T_CLASS => true, - T_INTERFACE => true, - T_TRAIT => true, - T_ENUM => true, - T_ENUM_CASE => true, - T_EXTENDS => true, - T_IMPLEMENTS => true, - T_ATTRIBUTE => true, - T_NEW => true, - T_CONST => true, - T_NS_SEPARATOR => true, - T_USE => true, - T_NAMESPACE => true, - T_PAAMAYIM_NEKUDOTAYIM => true, - ]; - - /** - * A cache of different token types, resolved into arrays. - * - * @var array - * @see standardiseToken() - */ - private static $resolveTokenCache = []; - - - /** - * Creates an array of tokens when given some PHP code. - * - * Starts by using token_get_all() but does a lot of extra processing - * to insert information about the context of the token. - * - * @param string $string The string to tokenize. - * - * @return array - */ - protected function tokenize($string) - { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t*** START PHP TOKENIZING ***".PHP_EOL; - $isWin = false; - if (stripos(PHP_OS, 'WIN') === 0) { - $isWin = true; - } - } - - $tokens = @token_get_all($string); - $finalTokens = []; - - $newStackPtr = 0; - $numTokens = count($tokens); - $lastNotEmptyToken = 0; - - $insideInlineIf = []; - $insideUseGroup = false; - $insideConstDeclaration = false; - - $commentTokenizer = new Comment(); - - for ($stackPtr = 0; $stackPtr < $numTokens; $stackPtr++) { - // Special case for tokens we have needed to blank out. - if ($tokens[$stackPtr] === null) { - continue; - } - - $token = (array) $tokens[$stackPtr]; - $tokenIsArray = isset($token[1]); - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - if ($tokenIsArray === true) { - $type = Tokens::tokenName($token[0]); - $content = Common::prepareForOutput($token[1]); - } else { - $newToken = self::resolveSimpleToken($token[0]); - $type = $newToken['type']; - $content = Common::prepareForOutput($token[0]); - } - - echo "\tProcess token "; - if ($tokenIsArray === true) { - echo "[$stackPtr]"; - } else { - echo " $stackPtr "; - } - - echo ": $type => $content"; - }//end if - - if ($newStackPtr > 0 - && isset(Tokens::$emptyTokens[$finalTokens[($newStackPtr - 1)]['code']]) === false - ) { - $lastNotEmptyToken = ($newStackPtr - 1); - } - - /* - If we are using \r\n newline characters, the \r and \n are sometimes - split over two tokens. This normally occurs after comments. We need - to merge these two characters together so that our line endings are - consistent for all lines. - */ - - if ($tokenIsArray === true && substr($token[1], -1) === "\r") { - if (isset($tokens[($stackPtr + 1)]) === true - && is_array($tokens[($stackPtr + 1)]) === true - && $tokens[($stackPtr + 1)][1][0] === "\n" - ) { - $token[1] .= "\n"; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - if ($isWin === true) { - echo '\n'; - } else { - echo "\033[30;1m\\n\033[0m"; - } - } - - if ($tokens[($stackPtr + 1)][1] === "\n") { - // This token's content has been merged into the previous, - // so we can skip it. - $tokens[($stackPtr + 1)] = ''; - } else { - $tokens[($stackPtr + 1)][1] = substr($tokens[($stackPtr + 1)][1], 1); - } - } - }//end if - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo PHP_EOL; - } - - /* - Before PHP 5.5, the yield keyword was tokenized as - T_STRING. So look for and change this token in - earlier versions. - */ - - if (PHP_VERSION_ID < 50500 - && $tokenIsArray === true - && $token[0] === T_STRING - && strtolower($token[1]) === 'yield' - && isset($this->tstringContexts[$finalTokens[$lastNotEmptyToken]['code']]) === false - ) { - // Could still be a context sensitive keyword or "yield from" and potentially multi-line, - // so adjust the token stack in place. - $token[0] = T_YIELD; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* token $stackPtr changed from T_STRING to T_YIELD".PHP_EOL; - } - } - - /* - Tokenize context sensitive keyword as string when it should be string. - */ - - if ($tokenIsArray === true - && isset(Tokens::$contextSensitiveKeywords[$token[0]]) === true - && (isset($this->tstringContexts[$finalTokens[$lastNotEmptyToken]['code']]) === true - || $finalTokens[$lastNotEmptyToken]['content'] === '&' - || $insideConstDeclaration === true) - ) { - if (isset($this->tstringContexts[$finalTokens[$lastNotEmptyToken]['code']]) === true) { - $preserveKeyword = false; - - // `new class`, and `new static` should be preserved. - if ($finalTokens[$lastNotEmptyToken]['code'] === T_NEW - && ($token[0] === T_CLASS - || $token[0] === T_STATIC) - ) { - $preserveKeyword = true; - } - - // `new readonly class` should be preserved. - if ($finalTokens[$lastNotEmptyToken]['code'] === T_NEW - && strtolower($token[1]) === 'readonly' - ) { - for ($i = ($stackPtr + 1); $i < $numTokens; $i++) { - if (is_array($tokens[$i]) === false - || isset(Tokens::$emptyTokens[$tokens[$i][0]]) === false - ) { - break; - } - } - - if (is_array($tokens[$i]) === true && $tokens[$i][0] === T_CLASS) { - $preserveKeyword = true; - } - } - - // `new class extends` `new class implements` should be preserved - if (($token[0] === T_EXTENDS || $token[0] === T_IMPLEMENTS) - && $finalTokens[$lastNotEmptyToken]['code'] === T_CLASS - ) { - $preserveKeyword = true; - } - - // `namespace\` should be preserved - if ($token[0] === T_NAMESPACE) { - for ($i = ($stackPtr + 1); $i < $numTokens; $i++) { - if (is_array($tokens[$i]) === false) { - break; - } - - if (isset(Tokens::$emptyTokens[$tokens[$i][0]]) === true) { - continue; - } - - if ($tokens[$i][0] === T_NS_SEPARATOR) { - $preserveKeyword = true; - } - - break; - } - } - }//end if - - // Types in typed constants should not be touched, but the constant name should be. - if ((isset($this->tstringContexts[$finalTokens[$lastNotEmptyToken]['code']]) === true - && $finalTokens[$lastNotEmptyToken]['code'] === T_CONST) - || $insideConstDeclaration === true - ) { - $preserveKeyword = true; - - // Find the next non-empty token. - for ($i = ($stackPtr + 1); $i < $numTokens; $i++) { - if (is_array($tokens[$i]) === true - && isset(Tokens::$emptyTokens[$tokens[$i][0]]) === true - ) { - continue; - } - - break; - } - - if ($tokens[$i] === '=' || $tokens[$i] === ';') { - $preserveKeyword = false; - $insideConstDeclaration = false; - } - }//end if - - if ($finalTokens[$lastNotEmptyToken]['content'] === '&') { - $preserveKeyword = true; - - for ($i = ($lastNotEmptyToken - 1); $i >= 0; $i--) { - if (isset(Tokens::$emptyTokens[$finalTokens[$i]['code']]) === true) { - continue; - } - - if ($finalTokens[$i]['code'] === T_FUNCTION) { - $preserveKeyword = false; - } - - break; - } - } - - if ($preserveKeyword === false) { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = Tokens::tokenName($token[0]); - echo "\t\t* token $stackPtr changed from $type to T_STRING".PHP_EOL; - } - - $finalTokens[$newStackPtr] = [ - 'code' => T_STRING, - 'type' => 'T_STRING', - 'content' => $token[1], - ]; - - $newStackPtr++; - continue; - } - }//end if - - /* - Mark the start of a constant declaration to allow for handling keyword to T_STRING - convertion for constant names using reserved keywords. - */ - - if ($tokenIsArray === true && $token[0] === T_CONST) { - $insideConstDeclaration = true; - } - - /* - Close an open "inside constant declaration" marker when no keyword conversion was needed. - */ - - if ($insideConstDeclaration === true - && $tokenIsArray === false - && ($token[0] === '=' || $token[0] === ';') - ) { - $insideConstDeclaration = false; - } - - /* - Special case for `static` used as a function name, i.e. `static()`. - - Note: this may incorrectly change the static keyword directly before a DNF property type. - If so, this will be caught and corrected for in the additional processing. - */ - - if ($tokenIsArray === true - && $token[0] === T_STATIC - && $finalTokens[$lastNotEmptyToken]['code'] !== T_NEW - ) { - for ($i = ($stackPtr + 1); $i < $numTokens; $i++) { - if (is_array($tokens[$i]) === true - && isset(Tokens::$emptyTokens[$tokens[$i][0]]) === true - ) { - continue; - } - - if ($tokens[$i][0] === '(') { - $finalTokens[$newStackPtr] = [ - 'code' => T_STRING, - 'type' => 'T_STRING', - 'content' => $token[1], - ]; - - $newStackPtr++; - continue 2; - } - - break; - } - }//end if - - /* - Parse doc blocks into something that can be easily iterated over. - */ - - if ($tokenIsArray === true - && ($token[0] === T_DOC_COMMENT - || ($token[0] === T_COMMENT && strpos($token[1], '/**') === 0 && $token[1] !== '/**/')) - ) { - $commentTokens = $commentTokenizer->tokenizeString($token[1], $this->eolChar, $newStackPtr); - foreach ($commentTokens as $commentToken) { - $finalTokens[$newStackPtr] = $commentToken; - $newStackPtr++; - } - - continue; - } - - /* - PHP 8 tokenizes a new line after a slash and hash comment to the next whitespace token. - */ - - if (PHP_VERSION_ID >= 80000 - && $tokenIsArray === true - && ($token[0] === T_COMMENT && (strpos($token[1], '//') === 0 || strpos($token[1], '#') === 0)) - && isset($tokens[($stackPtr + 1)]) === true - && is_array($tokens[($stackPtr + 1)]) === true - && $tokens[($stackPtr + 1)][0] === T_WHITESPACE - ) { - $nextToken = $tokens[($stackPtr + 1)]; - - // If the next token is a single new line, merge it into the comment token - // and set to it up to be skipped. - if ($nextToken[1] === "\n" || $nextToken[1] === "\r\n" || $nextToken[1] === "\n\r") { - $token[1] .= $nextToken[1]; - $tokens[($stackPtr + 1)] = null; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* merged newline after comment into comment token $stackPtr".PHP_EOL; - } - } else { - // This may be a whitespace token consisting of multiple new lines. - if (strpos($nextToken[1], "\r\n") === 0) { - $token[1] .= "\r\n"; - $tokens[($stackPtr + 1)][1] = substr($nextToken[1], 2); - } else if (strpos($nextToken[1], "\n\r") === 0) { - $token[1] .= "\n\r"; - $tokens[($stackPtr + 1)][1] = substr($nextToken[1], 2); - } else if (strpos($nextToken[1], "\n") === 0) { - $token[1] .= "\n"; - $tokens[($stackPtr + 1)][1] = substr($nextToken[1], 1); - } - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* stripped first newline after comment and added it to comment token $stackPtr".PHP_EOL; - } - }//end if - }//end if - - /* - For Explicit Octal Notation prior to PHP 8.1 we need to combine the - T_LNUMBER and T_STRING token values into a single token value, and - then ignore the T_STRING token. - */ - - if (PHP_VERSION_ID < 80100 - && $tokenIsArray === true && $token[1] === '0' - && (isset($tokens[($stackPtr + 1)]) === true - && is_array($tokens[($stackPtr + 1)]) === true - && $tokens[($stackPtr + 1)][0] === T_STRING - && isset($tokens[($stackPtr + 1)][1][0], $tokens[($stackPtr + 1)][1][1]) === true - && strtolower($tokens[($stackPtr + 1)][1][0]) === 'o' - && $tokens[($stackPtr + 1)][1][1] !== '_') - && preg_match('`^(o[0-7]+(?:_[0-7]+)?)([0-9_]*)$`i', $tokens[($stackPtr + 1)][1], $matches) === 1 - ) { - $finalTokens[$newStackPtr] = [ - 'code' => T_LNUMBER, - 'type' => 'T_LNUMBER', - 'content' => $token[1] .= $matches[1], - ]; - $newStackPtr++; - - if (isset($matches[2]) === true && $matches[2] !== '') { - $type = 'T_LNUMBER'; - if ($matches[2][0] === '_') { - $type = 'T_STRING'; - } - - $finalTokens[$newStackPtr] = [ - 'code' => constant($type), - 'type' => $type, - 'content' => $matches[2], - ]; - $newStackPtr++; - } - - $stackPtr++; - continue; - }//end if - - /* - PHP 8.1 introduced two dedicated tokens for the & character. - Retokenizing both of these to T_BITWISE_AND, which is the - token PHPCS already tokenized them as. - */ - - if ($tokenIsArray === true - && ($token[0] === T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG - || $token[0] === T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG) - ) { - $finalTokens[$newStackPtr] = [ - 'code' => T_BITWISE_AND, - 'type' => 'T_BITWISE_AND', - 'content' => $token[1], - ]; - $newStackPtr++; - continue; - } - - /* - If this is a double quoted string, PHP will tokenize the whole - thing which causes problems with the scope map when braces are - within the string. So we need to merge the tokens together to - provide a single string. - */ - - if ($tokenIsArray === false && ($token[0] === '"' || $token[0] === 'b"')) { - // Binary casts need a special token. - if ($token[0] === 'b"') { - $finalTokens[$newStackPtr] = [ - 'code' => T_BINARY_CAST, - 'type' => 'T_BINARY_CAST', - 'content' => 'b', - ]; - $newStackPtr++; - } - - $tokenContent = '"'; - $nestedVars = []; - for ($i = ($stackPtr + 1); $i < $numTokens; $i++) { - $subToken = (array) $tokens[$i]; - $subTokenIsArray = isset($subToken[1]); - - if ($subTokenIsArray === true) { - $tokenContent .= $subToken[1]; - if (($subToken[1] === '{' - || $subToken[1] === '${') - && $subToken[0] !== T_ENCAPSED_AND_WHITESPACE - ) { - $nestedVars[] = $i; - } - } else { - $tokenContent .= $subToken[0]; - if ($subToken[0] === '}') { - array_pop($nestedVars); - } - } - - if ($subTokenIsArray === false - && $subToken[0] === '"' - && empty($nestedVars) === true - ) { - // We found the other end of the double quoted string. - break; - } - }//end for - - $stackPtr = $i; - - // Convert each line within the double quoted string to a - // new token, so it conforms with other multiple line tokens. - $tokenLines = explode($this->eolChar, $tokenContent); - $numLines = count($tokenLines); - $newToken = []; - - for ($j = 0; $j < $numLines; $j++) { - $newToken['content'] = $tokenLines[$j]; - if ($j === ($numLines - 1)) { - if ($tokenLines[$j] === '') { - break; - } - } else { - $newToken['content'] .= $this->eolChar; - } - - $newToken['code'] = T_DOUBLE_QUOTED_STRING; - $newToken['type'] = 'T_DOUBLE_QUOTED_STRING'; - $finalTokens[$newStackPtr] = $newToken; - $newStackPtr++; - } - - // Continue, as we're done with this token. - continue; - }//end if - - /* - Detect binary casting and assign the casts their own token. - */ - - if ($tokenIsArray === true - && $token[0] === T_CONSTANT_ENCAPSED_STRING - && (substr($token[1], 0, 2) === 'b"' - || substr($token[1], 0, 2) === "b'") - ) { - $finalTokens[$newStackPtr] = [ - 'code' => T_BINARY_CAST, - 'type' => 'T_BINARY_CAST', - 'content' => 'b', - ]; - $newStackPtr++; - $token[1] = substr($token[1], 1); - } - - if ($tokenIsArray === true - && $token[0] === T_STRING_CAST - && preg_match('`^\(\s*binary\s*\)$`i', $token[1]) === 1 - ) { - $finalTokens[$newStackPtr] = [ - 'code' => T_BINARY_CAST, - 'type' => 'T_BINARY_CAST', - 'content' => $token[1], - ]; - $newStackPtr++; - continue; - } - - /* - If this is a heredoc, PHP will tokenize the whole - thing which causes problems when heredocs don't - contain real PHP code, which is almost never. - We want to leave the start and end heredoc tokens - alone though. - */ - - if ($tokenIsArray === true && $token[0] === T_START_HEREDOC) { - // Add the start heredoc token to the final array. - $finalTokens[$newStackPtr] = self::standardiseToken($token); - - // Check if this is actually a nowdoc and use a different token - // to help the sniffs. - $nowdoc = false; - if (strpos($token[1], "'") !== false) { - $finalTokens[$newStackPtr]['code'] = T_START_NOWDOC; - $finalTokens[$newStackPtr]['type'] = 'T_START_NOWDOC'; - $nowdoc = true; - } - - $tokenContent = ''; - for ($i = ($stackPtr + 1); $i < $numTokens; $i++) { - $subTokenIsArray = is_array($tokens[$i]); - if ($subTokenIsArray === true - && $tokens[$i][0] === T_END_HEREDOC - ) { - // We found the other end of the heredoc. - break; - } - - if ($subTokenIsArray === true) { - $tokenContent .= $tokens[$i][1]; - } else { - $tokenContent .= $tokens[$i]; - } - } - - if ($i === $numTokens) { - // We got to the end of the file and never - // found the closing token, so this probably wasn't - // a heredoc. - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $finalTokens[$newStackPtr]['type']; - echo "\t\t* failed to find the end of the here/nowdoc".PHP_EOL; - echo "\t\t* token $stackPtr changed from $type to T_STRING".PHP_EOL; - } - - $finalTokens[$newStackPtr]['code'] = T_STRING; - $finalTokens[$newStackPtr]['type'] = 'T_STRING'; - $newStackPtr++; - continue; - } - - $stackPtr = $i; - $newStackPtr++; - - // Convert each line within the heredoc to a - // new token, so it conforms with other multiple line tokens. - $tokenLines = explode($this->eolChar, $tokenContent); - $numLines = count($tokenLines); - $newToken = []; - - for ($j = 0; $j < $numLines; $j++) { - $newToken['content'] = $tokenLines[$j]; - if ($j === ($numLines - 1)) { - if ($tokenLines[$j] === '') { - break; - } - } else { - $newToken['content'] .= $this->eolChar; - } - - if ($nowdoc === true) { - $newToken['code'] = T_NOWDOC; - $newToken['type'] = 'T_NOWDOC'; - } else { - $newToken['code'] = T_HEREDOC; - $newToken['type'] = 'T_HEREDOC'; - } - - $finalTokens[$newStackPtr] = $newToken; - $newStackPtr++; - }//end for - - // Add the end heredoc token to the final array. - $finalTokens[$newStackPtr] = self::standardiseToken($tokens[$stackPtr]); - - if ($nowdoc === true) { - $finalTokens[$newStackPtr]['code'] = T_END_NOWDOC; - $finalTokens[$newStackPtr]['type'] = 'T_END_NOWDOC'; - } - - $newStackPtr++; - - // Continue, as we're done with this token. - continue; - }//end if - - /* - Enum keyword for PHP < 8.1 - */ - - if ($tokenIsArray === true - && $token[0] === T_STRING - && strtolower($token[1]) === 'enum' - ) { - // Get the next non-empty token. - for ($i = ($stackPtr + 1); $i < $numTokens; $i++) { - if (is_array($tokens[$i]) === false - || isset(Tokens::$emptyTokens[$tokens[$i][0]]) === false - ) { - break; - } - } - - if (isset($tokens[$i]) === true - && is_array($tokens[$i]) === true - && $tokens[$i][0] === T_STRING - ) { - // Modify $tokens directly so we can use it later when converting enum "case". - $tokens[$stackPtr][0] = T_ENUM; - - $newToken = []; - $newToken['code'] = T_ENUM; - $newToken['type'] = 'T_ENUM'; - $newToken['content'] = $token[1]; - $finalTokens[$newStackPtr] = $newToken; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* token $stackPtr changed from T_STRING to T_ENUM".PHP_EOL; - } - - $newStackPtr++; - continue; - } - }//end if - - /* - Convert enum "case" to T_ENUM_CASE - */ - - if ($tokenIsArray === true - && $token[0] === T_CASE - && isset($this->tstringContexts[$finalTokens[$lastNotEmptyToken]['code']]) === false - ) { - $isEnumCase = false; - $scope = 1; - - for ($i = ($stackPtr - 1); $i > 0; $i--) { - if ($tokens[$i] === '}') { - $scope++; - continue; - } - - if ($tokens[$i] === '{') { - $scope--; - continue; - } - - if (is_array($tokens[$i]) === false) { - continue; - } - - if ($scope !== 0) { - continue; - } - - if ($tokens[$i][0] === T_SWITCH) { - break; - } - - if ($tokens[$i][0] === T_ENUM || $tokens[$i][0] === T_ENUM_CASE) { - $isEnumCase = true; - break; - } - }//end for - - if ($isEnumCase === true) { - // Modify $tokens directly so we can use it as optimisation for other enum "case". - $tokens[$stackPtr][0] = T_ENUM_CASE; - - $newToken = []; - $newToken['code'] = T_ENUM_CASE; - $newToken['type'] = 'T_ENUM_CASE'; - $newToken['content'] = $token[1]; - $finalTokens[$newStackPtr] = $newToken; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* token $stackPtr changed from T_CASE to T_ENUM_CASE".PHP_EOL; - } - - $newStackPtr++; - continue; - } - }//end if - - /* - As of PHP 8.0 fully qualified, partially qualified and namespace relative - identifier names are tokenized differently. - This "undoes" the new tokenization so the tokenization will be the same in - in PHP 5, 7 and 8. - */ - - if (PHP_VERSION_ID >= 80000 - && $tokenIsArray === true - && ($token[0] === T_NAME_QUALIFIED - || $token[0] === T_NAME_FULLY_QUALIFIED - || $token[0] === T_NAME_RELATIVE) - ) { - $name = $token[1]; - - if ($token[0] === T_NAME_FULLY_QUALIFIED) { - $newToken = []; - $newToken['code'] = T_NS_SEPARATOR; - $newToken['type'] = 'T_NS_SEPARATOR'; - $newToken['content'] = '\\'; - $finalTokens[$newStackPtr] = $newToken; - ++$newStackPtr; - - $name = ltrim($name, '\\'); - } - - if ($token[0] === T_NAME_RELATIVE) { - $newToken = []; - $newToken['code'] = T_NAMESPACE; - $newToken['type'] = 'T_NAMESPACE'; - $newToken['content'] = substr($name, 0, 9); - $finalTokens[$newStackPtr] = $newToken; - ++$newStackPtr; - - $newToken = []; - $newToken['code'] = T_NS_SEPARATOR; - $newToken['type'] = 'T_NS_SEPARATOR'; - $newToken['content'] = '\\'; - $finalTokens[$newStackPtr] = $newToken; - ++$newStackPtr; - - $name = substr($name, 10); - } - - $parts = explode('\\', $name); - $partCount = count($parts); - $lastPart = ($partCount - 1); - - foreach ($parts as $i => $part) { - $newToken = []; - $newToken['code'] = T_STRING; - $newToken['type'] = 'T_STRING'; - $newToken['content'] = $part; - $finalTokens[$newStackPtr] = $newToken; - ++$newStackPtr; - - if ($i !== $lastPart) { - $newToken = []; - $newToken['code'] = T_NS_SEPARATOR; - $newToken['type'] = 'T_NS_SEPARATOR'; - $newToken['content'] = '\\'; - $finalTokens[$newStackPtr] = $newToken; - ++$newStackPtr; - } - } - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = Tokens::tokenName($token[0]); - $content = Common::prepareForOutput($token[1]); - echo "\t\t* token $stackPtr split into individual tokens; was: $type => $content".PHP_EOL; - } - - continue; - }//end if - - /* - PHP 8.0 Attributes - */ - - if (PHP_VERSION_ID < 80000 - && $token[0] === T_COMMENT - && strpos($token[1], '#[') === 0 - ) { - $subTokens = $this->parsePhpAttribute($tokens, $stackPtr); - if ($subTokens !== null) { - array_splice($tokens, $stackPtr, 1, $subTokens); - $numTokens = count($tokens); - - $tokenIsArray = true; - $token = $tokens[$stackPtr]; - } else { - $token[0] = T_ATTRIBUTE; - } - } - - if ($tokenIsArray === true - && $token[0] === T_ATTRIBUTE - ) { - // Go looking for the close bracket. - $bracketCloser = $this->findCloser($tokens, ($stackPtr + 1), ['[', '#['], ']'); - - $newToken = []; - $newToken['code'] = T_ATTRIBUTE; - $newToken['type'] = 'T_ATTRIBUTE'; - $newToken['content'] = '#['; - $finalTokens[$newStackPtr] = $newToken; - - $tokens[$bracketCloser] = []; - $tokens[$bracketCloser][0] = T_ATTRIBUTE_END; - $tokens[$bracketCloser][1] = ']'; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* token $bracketCloser changed from T_CLOSE_SQUARE_BRACKET to T_ATTRIBUTE_END".PHP_EOL; - } - - $newStackPtr++; - continue; - }//end if - - /* - Tokenize the parameter labels for PHP 8.0 named parameters as a special T_PARAM_NAME - token and ensures that the colon after it is always T_COLON. - */ - - if ($tokenIsArray === true - && ($token[0] === T_STRING - || preg_match('`^[a-zA-Z_\x80-\xff]`', $token[1]) === 1) - ) { - // Get the next non-empty token. - for ($i = ($stackPtr + 1); $i < $numTokens; $i++) { - if (is_array($tokens[$i]) === false - || isset(Tokens::$emptyTokens[$tokens[$i][0]]) === false - ) { - break; - } - } - - if (isset($tokens[$i]) === true - && is_array($tokens[$i]) === false - && $tokens[$i] === ':' - ) { - // Get the previous non-empty token. - for ($j = ($stackPtr - 1); $j > 0; $j--) { - if (is_array($tokens[$j]) === false - || isset(Tokens::$emptyTokens[$tokens[$j][0]]) === false - ) { - break; - } - } - - if (is_array($tokens[$j]) === false - && ($tokens[$j] === '(' - || $tokens[$j] === ',') - ) { - $newToken = []; - $newToken['code'] = T_PARAM_NAME; - $newToken['type'] = 'T_PARAM_NAME'; - $newToken['content'] = $token[1]; - $finalTokens[$newStackPtr] = $newToken; - - $newStackPtr++; - - // Modify the original token stack so that future checks, like - // determining T_COLON vs T_INLINE_ELSE can handle this correctly. - $tokens[$stackPtr][0] = T_PARAM_NAME; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = Tokens::tokenName($token[0]); - echo "\t\t* token $stackPtr changed from $type to T_PARAM_NAME".PHP_EOL; - } - - continue; - } - }//end if - }//end if - - /* - "readonly" keyword for PHP < 8.1 - */ - - if ($tokenIsArray === true - && strtolower($token[1]) === 'readonly' - && (isset($this->tstringContexts[$finalTokens[$lastNotEmptyToken]['code']]) === false - || $finalTokens[$lastNotEmptyToken]['code'] === T_NEW) - ) { - // Get the next non-whitespace token. - for ($i = ($stackPtr + 1); $i < $numTokens; $i++) { - if (is_array($tokens[$i]) === false - || isset(Tokens::$emptyTokens[$tokens[$i][0]]) === false - ) { - break; - } - } - - $isReadonlyKeyword = false; - - if (isset($tokens[$i]) === false - || $tokens[$i] !== '(' - ) { - $isReadonlyKeyword = true; - } else if ($tokens[$i] === '(') { - /* - * Skip over tokens which can be used in type declarations. - * At this point, the only token types which need to be taken into consideration - * as potential type declarations are identifier names, T_ARRAY, T_CALLABLE and T_NS_SEPARATOR - * and the union/intersection/dnf parentheses. - */ - - $foundDNFParens = 1; - $foundDNFPipe = 0; - - for (++$i; $i < $numTokens; $i++) { - if (is_array($tokens[$i]) === true) { - $tokenType = $tokens[$i][0]; - } else { - $tokenType = $tokens[$i]; - } - - if (isset(Tokens::$emptyTokens[$tokenType]) === true) { - continue; - } - - if ($tokenType === '|') { - ++$foundDNFPipe; - continue; - } - - if ($tokenType === ')') { - ++$foundDNFParens; - continue; - } - - if ($tokenType === '(') { - ++$foundDNFParens; - continue; - } - - if ($tokenType === T_STRING - || $tokenType === T_NAME_FULLY_QUALIFIED - || $tokenType === T_NAME_RELATIVE - || $tokenType === T_NAME_QUALIFIED - || $tokenType === T_ARRAY - || $tokenType === T_NAMESPACE - || $tokenType === T_NS_SEPARATOR - || $tokenType === T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG // PHP 8.0+. - || $tokenType === '&' // PHP < 8.0. - ) { - continue; - } - - // Reached the next token after. - if (($foundDNFParens % 2) === 0 - && $foundDNFPipe >= 1 - && ($tokenType === T_VARIABLE - || $tokenType === T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG) - ) { - $isReadonlyKeyword = true; - } - - break; - }//end for - }//end if - - if ($isReadonlyKeyword === true) { - $finalTokens[$newStackPtr] = [ - 'code' => T_READONLY, - 'type' => 'T_READONLY', - 'content' => $token[1], - ]; - $newStackPtr++; - - if (PHP_CODESNIFFER_VERBOSITY > 1 && $type !== T_READONLY) { - echo "\t\t* token $stackPtr changed from $type to T_READONLY".PHP_EOL; - } - } else { - $finalTokens[$newStackPtr] = [ - 'code' => T_STRING, - 'type' => 'T_STRING', - 'content' => $token[1], - ]; - $newStackPtr++; - - if (PHP_CODESNIFFER_VERBOSITY > 1 && $type !== T_STRING) { - echo "\t\t* token $stackPtr changed from $type to T_STRING".PHP_EOL; - } - }//end if - - continue; - }//end if - - /* - Before PHP 7.0, "yield from" was tokenized as - T_YIELD, T_WHITESPACE and T_STRING. So look for - and change this token in earlier versions. - */ - - if (PHP_VERSION_ID < 70000 - && $tokenIsArray === true - && $token[0] === T_YIELD - && isset($tokens[($stackPtr + 1)]) === true - && isset($tokens[($stackPtr + 2)]) === true - && $tokens[($stackPtr + 1)][0] === T_WHITESPACE - && strpos($tokens[($stackPtr + 1)][1], $this->eolChar) === false - && $tokens[($stackPtr + 2)][0] === T_STRING - && strtolower($tokens[($stackPtr + 2)][1]) === 'from' - ) { - // Single-line "yield from" with only whitespace between. - $finalTokens[$newStackPtr] = [ - 'code' => T_YIELD_FROM, - 'type' => 'T_YIELD_FROM', - 'content' => $token[1].$tokens[($stackPtr + 1)][1].$tokens[($stackPtr + 2)][1], - ]; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - for ($i = ($stackPtr + 1); $i <= ($stackPtr + 2); $i++) { - $type = Tokens::tokenName($tokens[$i][0]); - $content = Common::prepareForOutput($tokens[$i][1]); - echo "\t\t* token $i merged into T_YIELD_FROM; was: $type => $content".PHP_EOL; - } - } - - $newStackPtr++; - $stackPtr += 2; - - continue; - } else if (PHP_VERSION_ID < 80300 - && $tokenIsArray === true - && $token[0] === T_STRING - && strtolower($token[1]) === 'from' - && $finalTokens[$lastNotEmptyToken]['code'] === T_YIELD - ) { - /* - Before PHP 8.3, if there was a comment between the "yield" and "from" keywords, - it was tokenized as T_YIELD, T_WHITESPACE, T_COMMENT... and T_STRING. - We want to keep the tokenization of the tokens between, but need to change the - `T_YIELD` and `T_STRING` (from) keywords to `T_YIELD_FROM. - */ - - $finalTokens[$lastNotEmptyToken]['code'] = T_YIELD_FROM; - $finalTokens[$lastNotEmptyToken]['type'] = 'T_YIELD_FROM'; - - $finalTokens[$newStackPtr] = [ - 'code' => T_YIELD_FROM, - 'type' => 'T_YIELD_FROM', - 'content' => $token[1], - ]; - $newStackPtr++; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* token $lastNotEmptyToken (new stack) changed into T_YIELD_FROM; was: T_YIELD".PHP_EOL; - echo "\t\t* token $stackPtr changed into T_YIELD_FROM; was: T_STRING".PHP_EOL; - } - - continue; - } else if (PHP_VERSION_ID >= 70000 - && $tokenIsArray === true - && $token[0] === T_YIELD_FROM - && strpos($token[1], $this->eolChar) !== false - && preg_match('`^yield\s+from$`i', $token[1]) === 1 - ) { - /* - In PHP 7.0+, a multi-line "yield from" (without comment) tokenizes as a single - T_YIELD_FROM token, but we want to split it and tokenize the whitespace - separately for consistency. - */ - - $finalTokens[$newStackPtr] = [ - 'code' => T_YIELD_FROM, - 'type' => 'T_YIELD_FROM', - 'content' => substr($token[1], 0, 5), - ]; - $newStackPtr++; - - $tokenLines = explode($this->eolChar, substr($token[1], 5, -4)); - $numLines = count($tokenLines); - $newToken = [ - 'type' => 'T_WHITESPACE', - 'code' => T_WHITESPACE, - 'content' => '', - ]; - - foreach ($tokenLines as $i => $line) { - $newToken['content'] = $line; - if ($i === ($numLines - 1)) { - if ($line === '') { - break; - } - } else { - $newToken['content'] .= $this->eolChar; - } - - $finalTokens[$newStackPtr] = $newToken; - $newStackPtr++; - } - - $finalTokens[$newStackPtr] = [ - 'code' => T_YIELD_FROM, - 'type' => 'T_YIELD_FROM', - 'content' => substr($token[1], -4), - ]; - $newStackPtr++; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* token $stackPtr split into 'yield', one or more whitespace tokens and 'from'".PHP_EOL; - } - - continue; - } else if (PHP_VERSION_ID >= 80300 - && $tokenIsArray === true - && $token[0] === T_YIELD_FROM - && preg_match('`^yield[ \t]+from$`i', $token[1]) !== 1 - && stripos($token[1], 'yield') === 0 - ) { - /* - Since PHP 8.3, "yield from" allows for comments and will - swallow the comment in the `T_YIELD_FROM` token. - We need to split this up to allow for sniffs handling comments. - */ - - $finalTokens[$newStackPtr] = [ - 'code' => T_YIELD_FROM, - 'type' => 'T_YIELD_FROM', - 'content' => substr($token[1], 0, 5), - ]; - $newStackPtr++; - - $yieldFromSubtokens = @token_get_all(" T_YIELD_FROM, - 1 => substr($token[1], -4), - ]; - - // Inject the new tokens into the token stack. - array_splice($tokens, ($stackPtr + 1), 0, $yieldFromSubtokens); - $numTokens = count($tokens); - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* token $stackPtr split into parts (yield from with comment)".PHP_EOL; - } - - unset($yieldFromSubtokens); - continue; - }//end if - - /* - Before PHP 5.6, the ... operator was tokenized as three - T_STRING_CONCAT tokens in a row. So look for and combine - these tokens in earlier versions. - */ - - if ($tokenIsArray === false - && $token[0] === '.' - && isset($tokens[($stackPtr + 1)]) === true - && isset($tokens[($stackPtr + 2)]) === true - && $tokens[($stackPtr + 1)] === '.' - && $tokens[($stackPtr + 2)] === '.' - ) { - $newToken = []; - $newToken['code'] = T_ELLIPSIS; - $newToken['type'] = 'T_ELLIPSIS'; - $newToken['content'] = '...'; - $finalTokens[$newStackPtr] = $newToken; - - $newStackPtr++; - $stackPtr += 2; - continue; - } - - /* - Before PHP 5.6, the ** operator was tokenized as two - T_MULTIPLY tokens in a row. So look for and combine - these tokens in earlier versions. - */ - - if ($tokenIsArray === false - && $token[0] === '*' - && isset($tokens[($stackPtr + 1)]) === true - && $tokens[($stackPtr + 1)] === '*' - ) { - $newToken = []; - $newToken['code'] = T_POW; - $newToken['type'] = 'T_POW'; - $newToken['content'] = '**'; - $finalTokens[$newStackPtr] = $newToken; - - $newStackPtr++; - $stackPtr++; - continue; - } - - /* - Before PHP 5.6, the **= operator was tokenized as - T_MULTIPLY followed by T_MUL_EQUAL. So look for and combine - these tokens in earlier versions. - */ - - if ($tokenIsArray === false - && $token[0] === '*' - && isset($tokens[($stackPtr + 1)]) === true - && is_array($tokens[($stackPtr + 1)]) === true - && $tokens[($stackPtr + 1)][1] === '*=' - ) { - $newToken = []; - $newToken['code'] = T_POW_EQUAL; - $newToken['type'] = 'T_POW_EQUAL'; - $newToken['content'] = '**='; - $finalTokens[$newStackPtr] = $newToken; - - $newStackPtr++; - $stackPtr++; - continue; - } - - /* - Before PHP 7, the ??= operator was tokenized as - T_INLINE_THEN, T_INLINE_THEN, T_EQUAL. - Between PHP 7.0 and 7.3, the ??= operator was tokenized as - T_COALESCE, T_EQUAL. - So look for and combine these tokens in earlier versions. - */ - - if (($tokenIsArray === false - && $token[0] === '?' - && isset($tokens[($stackPtr + 1)]) === true - && $tokens[($stackPtr + 1)][0] === '?' - && isset($tokens[($stackPtr + 2)]) === true - && $tokens[($stackPtr + 2)][0] === '=') - || ($tokenIsArray === true - && $token[0] === T_COALESCE - && isset($tokens[($stackPtr + 1)]) === true - && $tokens[($stackPtr + 1)][0] === '=') - ) { - $newToken = []; - $newToken['code'] = T_COALESCE_EQUAL; - $newToken['type'] = 'T_COALESCE_EQUAL'; - $newToken['content'] = '??='; - $finalTokens[$newStackPtr] = $newToken; - - $newStackPtr++; - $stackPtr++; - - if ($tokenIsArray === false) { - // Pre PHP 7. - $stackPtr++; - } - - continue; - } - - /* - Before PHP 7, the ?? operator was tokenized as - T_INLINE_THEN followed by T_INLINE_THEN. - So look for and combine these tokens in earlier versions. - */ - - if ($tokenIsArray === false - && $token[0] === '?' - && isset($tokens[($stackPtr + 1)]) === true - && $tokens[($stackPtr + 1)][0] === '?' - ) { - $newToken = []; - $newToken['code'] = T_COALESCE; - $newToken['type'] = 'T_COALESCE'; - $newToken['content'] = '??'; - $finalTokens[$newStackPtr] = $newToken; - - $newStackPtr++; - $stackPtr++; - continue; - } - - /* - Before PHP 8, the ?-> operator was tokenized as - T_INLINE_THEN followed by T_OBJECT_OPERATOR. - So look for and combine these tokens in earlier versions. - */ - - if ($tokenIsArray === false - && $token[0] === '?' - && isset($tokens[($stackPtr + 1)]) === true - && is_array($tokens[($stackPtr + 1)]) === true - && $tokens[($stackPtr + 1)][0] === T_OBJECT_OPERATOR - ) { - $newToken = []; - $newToken['code'] = T_NULLSAFE_OBJECT_OPERATOR; - $newToken['type'] = 'T_NULLSAFE_OBJECT_OPERATOR'; - $newToken['content'] = '?->'; - $finalTokens[$newStackPtr] = $newToken; - - $newStackPtr++; - $stackPtr++; - continue; - } - - /* - Before PHP 7.4, underscores inside T_LNUMBER and T_DNUMBER - tokens split the token with a T_STRING. So look for - and change these tokens in earlier versions. - */ - - if (PHP_VERSION_ID < 70400 - && ($tokenIsArray === true - && ($token[0] === T_LNUMBER - || $token[0] === T_DNUMBER) - && isset($tokens[($stackPtr + 1)]) === true - && is_array($tokens[($stackPtr + 1)]) === true - && $tokens[($stackPtr + 1)][0] === T_STRING - && $tokens[($stackPtr + 1)][1][0] === '_') - ) { - $newContent = $token[1]; - $newType = $token[0]; - for ($i = ($stackPtr + 1); $i < $numTokens; $i++) { - if (is_array($tokens[$i]) === false) { - break; - } - - if ($tokens[$i][0] === T_LNUMBER - || $tokens[$i][0] === T_DNUMBER - ) { - $newContent .= $tokens[$i][1]; - continue; - } - - if ($tokens[$i][0] === T_STRING - && $tokens[$i][1][0] === '_' - && ((strpos($newContent, '0x') === 0 - && preg_match('`^((? PHP_INT_MAX) - || (stripos($newContent, '0b') === 0 && bindec(str_replace('_', '', $newContent)) > PHP_INT_MAX) - || (stripos($newContent, '0o') === 0 && octdec(str_replace('_', '', $newContent)) > PHP_INT_MAX) - || (stripos($newContent, '0x') !== 0 - && (stripos($newContent, 'e') !== false || strpos($newContent, '.') !== false)) - || (strpos($newContent, '0') === 0 && stripos($newContent, '0x') !== 0 - && stripos($newContent, '0b') !== 0 && octdec(str_replace('_', '', $newContent)) > PHP_INT_MAX) - || (strpos($newContent, '0') !== 0 && str_replace('_', '', $newContent) > PHP_INT_MAX)) - ) { - $newType = T_DNUMBER; - } - - $newToken = []; - $newToken['code'] = $newType; - $newToken['type'] = Tokens::tokenName($newType); - $newToken['content'] = $newContent; - $finalTokens[$newStackPtr] = $newToken; - - $newStackPtr++; - $stackPtr = ($i - 1); - continue; - }//end if - - /* - Backfill the T_MATCH token for PHP versions < 8.0 and - do initial correction for non-match expression T_MATCH tokens - to T_STRING for PHP >= 8.0. - A final check for non-match expression T_MATCH tokens is done - in PHP::processAdditional(). - */ - - if ($tokenIsArray === true - && (($token[0] === T_STRING - && strtolower($token[1]) === 'match') - || $token[0] === T_MATCH) - ) { - $isMatch = false; - for ($x = ($stackPtr + 1); $x < $numTokens; $x++) { - if (isset($tokens[$x][0], Tokens::$emptyTokens[$tokens[$x][0]]) === true) { - continue; - } - - if ($tokens[$x] !== '(') { - // This is not a match expression. - break; - } - - if (isset($this->tstringContexts[$finalTokens[$lastNotEmptyToken]['code']]) === true) { - // Also not a match expression. - break; - } - - $isMatch = true; - break; - }//end for - - if ($isMatch === true && $token[0] === T_STRING) { - $newToken = []; - $newToken['code'] = T_MATCH; - $newToken['type'] = 'T_MATCH'; - $newToken['content'] = $token[1]; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* token $stackPtr changed from T_STRING to T_MATCH".PHP_EOL; - } - - $finalTokens[$newStackPtr] = $newToken; - $newStackPtr++; - continue; - } else if ($isMatch === false && $token[0] === T_MATCH) { - // PHP 8.0, match keyword, but not a match expression. - $newToken = []; - $newToken['code'] = T_STRING; - $newToken['type'] = 'T_STRING'; - $newToken['content'] = $token[1]; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* token $stackPtr changed from T_MATCH to T_STRING".PHP_EOL; - } - - $finalTokens[$newStackPtr] = $newToken; - $newStackPtr++; - continue; - }//end if - }//end if - - /* - Retokenize the T_DEFAULT in match control structures as T_MATCH_DEFAULT - to prevent scope being set and the scope for switch default statements - breaking. - */ - - if ($tokenIsArray === true - && $token[0] === T_DEFAULT - && isset($this->tstringContexts[$finalTokens[$lastNotEmptyToken]['code']]) === false - ) { - for ($x = ($stackPtr + 1); $x < $numTokens; $x++) { - if ($tokens[$x] === ',') { - // Skip over potential trailing comma (supported in PHP). - continue; - } - - if (is_array($tokens[$x]) === false - || isset(Tokens::$emptyTokens[$tokens[$x][0]]) === false - ) { - // Non-empty, non-comma content. - break; - } - } - - if (isset($tokens[$x]) === true - && is_array($tokens[$x]) === true - && $tokens[$x][0] === T_DOUBLE_ARROW - ) { - // Modify the original token stack for the double arrow so that - // future checks can disregard the double arrow token more easily. - // For match expression "case" statements, this is handled - // in PHP::processAdditional(). - $tokens[$x][0] = T_MATCH_ARROW; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* token $x changed from T_DOUBLE_ARROW to T_MATCH_ARROW".PHP_EOL; - } - - $newToken = []; - $newToken['code'] = T_MATCH_DEFAULT; - $newToken['type'] = 'T_MATCH_DEFAULT'; - $newToken['content'] = $token[1]; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* token $stackPtr changed from T_DEFAULT to T_MATCH_DEFAULT".PHP_EOL; - } - - $finalTokens[$newStackPtr] = $newToken; - $newStackPtr++; - continue; - }//end if - }//end if - - /* - Convert ? to T_NULLABLE OR T_INLINE_THEN - */ - - if ($tokenIsArray === false && $token[0] === '?') { - $newToken = []; - $newToken['content'] = '?'; - - // For typed constants, we only need to check the token before the ? to be sure. - if ($finalTokens[$lastNotEmptyToken]['code'] === T_CONST) { - $newToken['code'] = T_NULLABLE; - $newToken['type'] = 'T_NULLABLE'; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* token $stackPtr changed from ? to T_NULLABLE".PHP_EOL; - } - - $finalTokens[$newStackPtr] = $newToken; - $newStackPtr++; - continue; - } - - /* - * Check if the next non-empty token is one of the tokens which can be used - * in type declarations. If not, it's definitely a ternary. - * At this point, the only token types which need to be taken into consideration - * as potential type declarations are identifier names, T_ARRAY, T_CALLABLE and T_NS_SEPARATOR. - */ - - $lastRelevantNonEmpty = null; - - for ($i = ($stackPtr + 1); $i < $numTokens; $i++) { - if (is_array($tokens[$i]) === true) { - $tokenType = $tokens[$i][0]; - } else { - $tokenType = $tokens[$i]; - } - - if (isset(Tokens::$emptyTokens[$tokenType]) === true) { - continue; - } - - if ($tokenType === T_STRING - || $tokenType === T_NAME_FULLY_QUALIFIED - || $tokenType === T_NAME_RELATIVE - || $tokenType === T_NAME_QUALIFIED - || $tokenType === T_ARRAY - || $tokenType === T_NAMESPACE - || $tokenType === T_NS_SEPARATOR - ) { - $lastRelevantNonEmpty = $tokenType; - continue; - } - - if (($tokenType !== T_CALLABLE - && isset($lastRelevantNonEmpty) === false) - || ($lastRelevantNonEmpty === T_ARRAY - && $tokenType === '(') - || (($lastRelevantNonEmpty === T_STRING - || $lastRelevantNonEmpty === T_NAME_FULLY_QUALIFIED - || $lastRelevantNonEmpty === T_NAME_RELATIVE - || $lastRelevantNonEmpty === T_NAME_QUALIFIED) - && ($tokenType === T_DOUBLE_COLON - || $tokenType === '(' - || $tokenType === ':')) - ) { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* token $stackPtr changed from ? to T_INLINE_THEN".PHP_EOL; - } - - $newToken['code'] = T_INLINE_THEN; - $newToken['type'] = 'T_INLINE_THEN'; - - $insideInlineIf[] = $stackPtr; - - $finalTokens[$newStackPtr] = $newToken; - $newStackPtr++; - continue 2; - } - - break; - }//end for - - /* - * This can still be a nullable type or a ternary. - * Do additional checking. - */ - - $prevNonEmpty = null; - $lastSeenNonEmpty = null; - - for ($i = ($stackPtr - 1); $i >= 0; $i--) { - if (is_array($tokens[$i]) === true) { - $tokenType = $tokens[$i][0]; - } else { - $tokenType = $tokens[$i]; - } - - if ($tokenType === T_STATIC - && ($lastSeenNonEmpty === T_DOUBLE_COLON - || $lastSeenNonEmpty === '(') - ) { - $lastSeenNonEmpty = $tokenType; - continue; - } - - if ($prevNonEmpty === null - && isset(Tokens::$emptyTokens[$tokenType]) === false - ) { - // Found the previous non-empty token. - if ($tokenType === ':' || $tokenType === ',' || $tokenType === T_ATTRIBUTE_END) { - $newToken['code'] = T_NULLABLE; - $newToken['type'] = 'T_NULLABLE'; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* token $stackPtr changed from ? to T_NULLABLE".PHP_EOL; - } - - break; - } - - $prevNonEmpty = $tokenType; - } - - if ($tokenType === T_FUNCTION - || $tokenType === T_FN - || isset(Tokens::$methodPrefixes[$tokenType]) === true - || $tokenType === T_VAR - ) { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* token $stackPtr changed from ? to T_NULLABLE".PHP_EOL; - } - - $newToken['code'] = T_NULLABLE; - $newToken['type'] = 'T_NULLABLE'; - break; - } else if (in_array($tokenType, [T_DOUBLE_ARROW, T_OPEN_TAG, T_OPEN_TAG_WITH_ECHO, '=', '{', ';'], true) === true) { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* token $stackPtr changed from ? to T_INLINE_THEN".PHP_EOL; - } - - $newToken['code'] = T_INLINE_THEN; - $newToken['type'] = 'T_INLINE_THEN'; - - $insideInlineIf[] = $stackPtr; - break; - } - - if (isset(Tokens::$emptyTokens[$tokenType]) === false) { - $lastSeenNonEmpty = $tokenType; - } - }//end for - - $finalTokens[$newStackPtr] = $newToken; - $newStackPtr++; - continue; - }//end if - - /* - Tokens after a double colon may look like scope openers, - such as when writing code like Foo::NAMESPACE, but they are - only ever variables or strings. - */ - - if ($stackPtr > 1 - && (is_array($tokens[($stackPtr - 1)]) === true - && $tokens[($stackPtr - 1)][0] === T_PAAMAYIM_NEKUDOTAYIM) - && $tokenIsArray === true - && $token[0] !== T_STRING - && $token[0] !== T_VARIABLE - && $token[0] !== T_DOLLAR - && isset(Tokens::$emptyTokens[$token[0]]) === false - ) { - $newToken = []; - $newToken['code'] = T_STRING; - $newToken['type'] = 'T_STRING'; - $newToken['content'] = $token[1]; - $finalTokens[$newStackPtr] = $newToken; - - $newStackPtr++; - continue; - } - - /* - Backfill the T_FN token for PHP versions < 7.4. - */ - - if ($tokenIsArray === true - && $token[0] === T_STRING - && strtolower($token[1]) === 'fn' - ) { - // Modify the original token stack so that - // future checks (like looking for T_NULLABLE) can - // detect the T_FN token more easily. - $tokens[$stackPtr][0] = T_FN; - $token[0] = T_FN; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* token $stackPtr changed from T_STRING to T_FN".PHP_EOL; - } - } - - /* - This is a special condition for T_ARRAY tokens used for - function return types. We want to keep the parenthesis map clean, - so let's tag these tokens as T_STRING. - */ - - if ($tokenIsArray === true - && ($token[0] === T_FUNCTION - || $token[0] === T_FN) - && $finalTokens[$lastNotEmptyToken]['code'] !== T_USE - ) { - // Go looking for the colon to start the return type hint. - // Start by finding the closing parenthesis of the function. - $parenthesisStack = []; - $parenthesisCloser = false; - for ($x = ($stackPtr + 1); $x < $numTokens; $x++) { - if (is_array($tokens[$x]) === false && $tokens[$x] === '(') { - $parenthesisStack[] = $x; - } else if (is_array($tokens[$x]) === false && $tokens[$x] === ')') { - array_pop($parenthesisStack); - if (empty($parenthesisStack) === true) { - $parenthesisCloser = $x; - break; - } - } - } - - if ($parenthesisCloser !== false) { - for ($x = ($parenthesisCloser + 1); $x < $numTokens; $x++) { - if (is_array($tokens[$x]) === false - || isset(Tokens::$emptyTokens[$tokens[$x][0]]) === false - ) { - // Non-empty content. - if (is_array($tokens[$x]) === true && $tokens[$x][0] === T_USE) { - // Found a use statements, so search ahead for the closing parenthesis. - for ($x += 1; $x < $numTokens; $x++) { - if (is_array($tokens[$x]) === false && $tokens[$x] === ')') { - continue(2); - } - } - } - - break; - } - } - - if (isset($tokens[$x]) === true - && is_array($tokens[$x]) === false - && $tokens[$x] === ':' - ) { - // Find the start of the return type. - for ($x += 1; $x < $numTokens; $x++) { - if (is_array($tokens[$x]) === true - && isset(Tokens::$emptyTokens[$tokens[$x][0]]) === true - ) { - // Whitespace or comments before the return type. - continue; - } - - if (is_array($tokens[$x]) === false && $tokens[$x] === '?') { - // Found a nullable operator, so skip it. - // But also convert the token to save the tokenizer - // a bit of time later on. - $tokens[$x] = [ - T_NULLABLE, - '?', - ]; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* token $x changed from ? to T_NULLABLE".PHP_EOL; - } - - continue; - } - - break; - }//end for - }//end if - }//end if - }//end if - - /* - Before PHP 7, the <=> operator was tokenized as - T_IS_SMALLER_OR_EQUAL followed by T_GREATER_THAN. - So look for and combine these tokens in earlier versions. - */ - - if ($tokenIsArray === true - && $token[0] === T_IS_SMALLER_OR_EQUAL - && isset($tokens[($stackPtr + 1)]) === true - && $tokens[($stackPtr + 1)][0] === '>' - ) { - $newToken = []; - $newToken['code'] = T_SPACESHIP; - $newToken['type'] = 'T_SPACESHIP'; - $newToken['content'] = '<=>'; - $finalTokens[$newStackPtr] = $newToken; - - $newStackPtr++; - $stackPtr++; - continue; - } - - /* - PHP doesn't assign a token to goto labels, so we have to. - These are just string tokens with a single colon after them. Double - colons are already tokenized and so don't interfere with this check. - But we do have to account for CASE statements, that look just like - goto labels. - */ - - if ($tokenIsArray === true - && $token[0] === T_STRING - && isset($tokens[($stackPtr + 1)]) === true - && $tokens[($stackPtr + 1)] === ':' - && (is_array($tokens[($stackPtr - 1)]) === false - || $tokens[($stackPtr - 1)][0] !== T_PAAMAYIM_NEKUDOTAYIM) - ) { - $stopTokens = [ - T_CASE => true, - T_SEMICOLON => true, - T_OPEN_TAG => true, - T_OPEN_CURLY_BRACKET => true, - T_INLINE_THEN => true, - T_ENUM => true, - ]; - - for ($x = ($newStackPtr - 1); $x > 0; $x--) { - if (isset($stopTokens[$finalTokens[$x]['code']]) === true) { - break; - } - } - - if ($finalTokens[$x]['code'] !== T_CASE - && $finalTokens[$x]['code'] !== T_INLINE_THEN - && $finalTokens[$x]['code'] !== T_ENUM - ) { - $finalTokens[$newStackPtr] = [ - 'content' => $token[1].':', - 'code' => T_GOTO_LABEL, - 'type' => 'T_GOTO_LABEL', - ]; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* token $stackPtr changed from T_STRING to T_GOTO_LABEL".PHP_EOL; - echo "\t\t* skipping T_COLON token ".($stackPtr + 1).PHP_EOL; - } - - $newStackPtr++; - $stackPtr++; - continue; - } - }//end if - - /* - If this token has newlines in its content, split each line up - and create a new token for each line. We do this so it's easier - to ascertain where errors occur on a line. - Note that $token[1] is the token's content. - */ - - if ($tokenIsArray === true && strpos($token[1], $this->eolChar) !== false) { - $tokenLines = explode($this->eolChar, $token[1]); - $numLines = count($tokenLines); - $newToken = [ - 'type' => Tokens::tokenName($token[0]), - 'code' => $token[0], - 'content' => '', - ]; - - for ($i = 0; $i < $numLines; $i++) { - $newToken['content'] = $tokenLines[$i]; - if ($i === ($numLines - 1)) { - if ($tokenLines[$i] === '') { - break; - } - } else { - $newToken['content'] .= $this->eolChar; - } - - $finalTokens[$newStackPtr] = $newToken; - $newStackPtr++; - } - } else { - // Some T_STRING tokens should remain that way due to their context. - if ($tokenIsArray === true && $token[0] === T_STRING) { - $preserveTstring = false; - - // True/false/parent/self/static in typed constants should be fixed to their own token, - // but the constant name should not be. - if ((isset($this->tstringContexts[$finalTokens[$lastNotEmptyToken]['code']]) === true - && $finalTokens[$lastNotEmptyToken]['code'] === T_CONST) - || $insideConstDeclaration === true - ) { - // Find the next non-empty token. - for ($i = ($stackPtr + 1); $i < $numTokens; $i++) { - if (is_array($tokens[$i]) === true - && isset(Tokens::$emptyTokens[$tokens[$i][0]]) === true - ) { - continue; - } - - break; - } - - if ($tokens[$i] === '=') { - $preserveTstring = true; - $insideConstDeclaration = false; - } - } else if (isset($this->tstringContexts[$finalTokens[$lastNotEmptyToken]['code']]) === true - && $finalTokens[$lastNotEmptyToken]['code'] !== T_CONST - ) { - $preserveTstring = true; - - // Special case for syntax like: return new self/new parent - // where self/parent should not be a string. - $tokenContentLower = strtolower($token[1]); - if ($finalTokens[$lastNotEmptyToken]['code'] === T_NEW - && ($tokenContentLower === 'self' || $tokenContentLower === 'parent') - ) { - $preserveTstring = false; - } - } else if ($finalTokens[$lastNotEmptyToken]['content'] === '&') { - // Function names for functions declared to return by reference. - for ($i = ($lastNotEmptyToken - 1); $i >= 0; $i--) { - if (isset(Tokens::$emptyTokens[$finalTokens[$i]['code']]) === true) { - continue; - } - - if ($finalTokens[$i]['code'] === T_FUNCTION) { - $preserveTstring = true; - } - - break; - } - } else { - // Keywords with special PHPCS token when used as a function call. - for ($i = ($stackPtr + 1); $i < $numTokens; $i++) { - if (is_array($tokens[$i]) === true - && isset(Tokens::$emptyTokens[$tokens[$i][0]]) === true - ) { - continue; - } - - if ($tokens[$i][0] === '(') { - $preserveTstring = true; - } - - break; - } - }//end if - - if ($preserveTstring === true) { - $finalTokens[$newStackPtr] = [ - 'code' => T_STRING, - 'type' => 'T_STRING', - 'content' => $token[1], - ]; - - $newStackPtr++; - continue; - } - }//end if - - $newToken = null; - if ($tokenIsArray === false) { - if (isset(self::$resolveTokenCache[$token[0]]) === true) { - $newToken = self::$resolveTokenCache[$token[0]]; - } - } else { - $cacheKey = null; - if ($token[0] === T_STRING) { - $cacheKey = strtolower($token[1]); - } else if ($token[0] !== T_CURLY_OPEN) { - $cacheKey = $token[0]; - } - - if ($cacheKey !== null && isset(self::$resolveTokenCache[$cacheKey]) === true) { - $newToken = self::$resolveTokenCache[$cacheKey]; - $newToken['content'] = $token[1]; - } - } - - if ($newToken === null) { - $newToken = self::standardiseToken($token); - } - - // Convert colons that are actually the ELSE component of an - // inline IF statement. - if (empty($insideInlineIf) === false && $newToken['code'] === T_COLON) { - $isInlineIf = true; - - // Make sure this isn't a named parameter label. - // Get the previous non-empty token. - for ($i = ($stackPtr - 1); $i > 0; $i--) { - if (is_array($tokens[$i]) === false - || isset(Tokens::$emptyTokens[$tokens[$i][0]]) === false - ) { - break; - } - } - - if ($tokens[$i][0] === T_PARAM_NAME) { - $isInlineIf = false; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* token is parameter label, not T_INLINE_ELSE".PHP_EOL; - } - } - - if ($isInlineIf === true) { - // Make sure this isn't a return type separator. - for ($i = ($stackPtr - 1); $i > 0; $i--) { - if (is_array($tokens[$i]) === false - || ($tokens[$i][0] !== T_DOC_COMMENT - && $tokens[$i][0] !== T_COMMENT - && $tokens[$i][0] !== T_WHITESPACE) - ) { - break; - } - } - - if ($tokens[$i] === ')') { - $parenCount = 1; - for ($i--; $i > 0; $i--) { - if ($tokens[$i] === '(') { - $parenCount--; - if ($parenCount === 0) { - break; - } - } else if ($tokens[$i] === ')') { - $parenCount++; - } - } - - // We've found the open parenthesis, so if the previous - // non-empty token is FUNCTION or USE, this is a return type. - // Note that we need to skip T_STRING tokens here as these - // can be function names. - for ($i--; $i > 0; $i--) { - if (is_array($tokens[$i]) === false - || ($tokens[$i][0] !== T_DOC_COMMENT - && $tokens[$i][0] !== T_COMMENT - && $tokens[$i][0] !== T_WHITESPACE - && $tokens[$i][0] !== T_STRING) - ) { - break; - } - } - - if ($tokens[$i][0] === T_FUNCTION || $tokens[$i][0] === T_FN || $tokens[$i][0] === T_USE) { - $isInlineIf = false; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* token is return type, not T_INLINE_ELSE".PHP_EOL; - } - } - }//end if - }//end if - - // Check to see if this is a CASE or DEFAULT opener. - if ($isInlineIf === true) { - $inlineIfToken = $insideInlineIf[(count($insideInlineIf) - 1)]; - for ($i = $stackPtr; $i > $inlineIfToken; $i--) { - if (is_array($tokens[$i]) === true - && ($tokens[$i][0] === T_CASE - || $tokens[$i][0] === T_DEFAULT) - ) { - $isInlineIf = false; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* token is T_CASE or T_DEFAULT opener, not T_INLINE_ELSE".PHP_EOL; - } - - break; - } - - if (is_array($tokens[$i]) === false - && ($tokens[$i] === ';' - || $tokens[$i] === '{' - || $tokens[$i] === '}') - ) { - break; - } - }//end for - }//end if - - if ($isInlineIf === true) { - array_pop($insideInlineIf); - $newToken['code'] = T_INLINE_ELSE; - $newToken['type'] = 'T_INLINE_ELSE'; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* token changed from T_COLON to T_INLINE_ELSE".PHP_EOL; - } - } - }//end if - - // This is a special condition for T_ARRAY tokens used for anything else - // but array declarations, like type hinting function arguments as - // being arrays. - // We want to keep the parenthesis map clean, so let's tag these tokens as - // T_STRING. - if ($newToken['code'] === T_ARRAY) { - for ($i = ($stackPtr + 1); $i < $numTokens; $i++) { - if (is_array($tokens[$i]) === false - || isset(Tokens::$emptyTokens[$tokens[$i][0]]) === false - ) { - // Non-empty content. - break; - } - } - - if ($i !== $numTokens && $tokens[$i] !== '(') { - $newToken['code'] = T_STRING; - $newToken['type'] = 'T_STRING'; - } - } - - // This is a special case when checking PHP 5.5+ code in PHP < 5.5 - // where "finally" should be T_FINALLY instead of T_STRING. - if ($newToken['code'] === T_STRING - && strtolower($newToken['content']) === 'finally' - && $finalTokens[$lastNotEmptyToken]['code'] === T_CLOSE_CURLY_BRACKET - ) { - $newToken['code'] = T_FINALLY; - $newToken['type'] = 'T_FINALLY'; - } - - // This is a special case for PHP 5.6 use function and use const - // where "function" and "const" should be T_STRING instead of T_FUNCTION - // and T_CONST. - if (($newToken['code'] === T_FUNCTION - || $newToken['code'] === T_CONST) - && ($finalTokens[$lastNotEmptyToken]['code'] === T_USE || $insideUseGroup === true) - ) { - $newToken['code'] = T_STRING; - $newToken['type'] = 'T_STRING'; - } - - // This is a special case for use groups in PHP 7+ where leaving - // the curly braces as their normal tokens would confuse - // the scope map and sniffs. - if ($newToken['code'] === T_OPEN_CURLY_BRACKET - && $finalTokens[$lastNotEmptyToken]['code'] === T_NS_SEPARATOR - ) { - $newToken['code'] = T_OPEN_USE_GROUP; - $newToken['type'] = 'T_OPEN_USE_GROUP'; - $insideUseGroup = true; - } - - if ($insideUseGroup === true && $newToken['code'] === T_CLOSE_CURLY_BRACKET) { - $newToken['code'] = T_CLOSE_USE_GROUP; - $newToken['type'] = 'T_CLOSE_USE_GROUP'; - $insideUseGroup = false; - } - - $finalTokens[$newStackPtr] = $newToken; - $newStackPtr++; - }//end if - }//end for - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t*** END PHP TOKENIZING ***".PHP_EOL; - } - - return $finalTokens; - - }//end tokenize() - - - /** - * Performs additional processing after main tokenizing. - * - * This additional processing checks for CASE statements that are using curly - * braces for scope openers and closers. It also turns some T_FUNCTION tokens - * into T_CLOSURE when they are not standard function definitions. It also - * detects short array syntax and converts those square brackets into new tokens. - * It also corrects some usage of the static and class keywords. It also - * assigns tokens to function return types. - * - * @return void - */ - protected function processAdditional() - { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t*** START ADDITIONAL PHP PROCESSING ***".PHP_EOL; - } - - $this->createAttributesNestingMap(); - - $numTokens = count($this->tokens); - $lastSeenTypeToken = $numTokens; - - for ($i = ($numTokens - 1); $i >= 0; $i--) { - // Check for any unset scope conditions due to alternate IF/ENDIF syntax. - if (isset($this->tokens[$i]['scope_opener']) === true - && isset($this->tokens[$i]['scope_condition']) === false - ) { - $this->tokens[$i]['scope_condition'] = $this->tokens[$this->tokens[$i]['scope_opener']]['scope_condition']; - } - - if ($this->tokens[$i]['code'] === T_FUNCTION) { - /* - Detect functions that are actually closures and - assign them a different token. - */ - - if (isset($this->tokens[$i]['scope_opener']) === true) { - for ($x = ($i + 1); $x < $numTokens; $x++) { - if (isset(Tokens::$emptyTokens[$this->tokens[$x]['code']]) === false - && $this->tokens[$x]['code'] !== T_BITWISE_AND - ) { - break; - } - } - - if ($this->tokens[$x]['code'] === T_OPEN_PARENTHESIS) { - $this->tokens[$i]['code'] = T_CLOSURE; - $this->tokens[$i]['type'] = 'T_CLOSURE'; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $line = $this->tokens[$i]['line']; - echo "\t* token $i on line $line changed from T_FUNCTION to T_CLOSURE".PHP_EOL; - } - - for ($x = ($this->tokens[$i]['scope_opener'] + 1); $x < $this->tokens[$i]['scope_closer']; $x++) { - if (isset($this->tokens[$x]['conditions'][$i]) === false) { - continue; - } - - $this->tokens[$x]['conditions'][$i] = T_CLOSURE; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $this->tokens[$x]['type']; - echo "\t\t* cleaned $x ($type) *".PHP_EOL; - } - } - } - }//end if - - continue; - } else if ($this->tokens[$i]['code'] === T_CLASS && isset($this->tokens[$i]['scope_opener']) === true) { - /* - Detect anonymous classes and assign them a different token. - */ - - for ($x = ($i + 1); $x < $numTokens; $x++) { - if (isset(Tokens::$emptyTokens[$this->tokens[$x]['code']]) === false) { - break; - } - } - - if ($this->tokens[$x]['code'] === T_OPEN_PARENTHESIS - || $this->tokens[$x]['code'] === T_OPEN_CURLY_BRACKET - || $this->tokens[$x]['code'] === T_EXTENDS - || $this->tokens[$x]['code'] === T_IMPLEMENTS - ) { - $this->tokens[$i]['code'] = T_ANON_CLASS; - $this->tokens[$i]['type'] = 'T_ANON_CLASS'; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $line = $this->tokens[$i]['line']; - echo "\t* token $i on line $line changed from T_CLASS to T_ANON_CLASS".PHP_EOL; - } - - if ($this->tokens[$x]['code'] === T_OPEN_PARENTHESIS - && isset($this->tokens[$x]['parenthesis_closer']) === true - ) { - $closer = $this->tokens[$x]['parenthesis_closer']; - - $this->tokens[$i]['parenthesis_opener'] = $x; - $this->tokens[$i]['parenthesis_closer'] = $closer; - $this->tokens[$i]['parenthesis_owner'] = $i; - $this->tokens[$x]['parenthesis_owner'] = $i; - $this->tokens[$closer]['parenthesis_owner'] = $i; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $line = $this->tokens[$i]['line']; - echo "\t\t* added parenthesis keys to T_ANON_CLASS token $i on line $line".PHP_EOL; - } - } - - for ($x = ($this->tokens[$i]['scope_opener'] + 1); $x < $this->tokens[$i]['scope_closer']; $x++) { - if (isset($this->tokens[$x]['conditions'][$i]) === false) { - continue; - } - - $this->tokens[$x]['conditions'][$i] = T_ANON_CLASS; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $this->tokens[$x]['type']; - echo "\t\t* cleaned $x ($type) *".PHP_EOL; - } - } - }//end if - - continue; - } else if ($this->tokens[$i]['code'] === T_FN && isset($this->tokens[($i + 1)]) === true) { - // Possible arrow function. - for ($x = ($i + 1); $x < $numTokens; $x++) { - if (isset(Tokens::$emptyTokens[$this->tokens[$x]['code']]) === false - && $this->tokens[$x]['code'] !== T_BITWISE_AND - ) { - // Non-whitespace content. - break; - } - } - - if (isset($this->tokens[$x]) === true && $this->tokens[$x]['code'] === T_OPEN_PARENTHESIS) { - $ignore = Tokens::$emptyTokens; - $ignore += [ - T_ARRAY => T_ARRAY, - T_CALLABLE => T_CALLABLE, - T_COLON => T_COLON, - T_NAMESPACE => T_NAMESPACE, - T_NS_SEPARATOR => T_NS_SEPARATOR, - T_NULL => T_NULL, - T_TRUE => T_TRUE, - T_FALSE => T_FALSE, - T_NULLABLE => T_NULLABLE, - T_PARENT => T_PARENT, - T_SELF => T_SELF, - T_STATIC => T_STATIC, - T_STRING => T_STRING, - T_TYPE_UNION => T_TYPE_UNION, - T_TYPE_INTERSECTION => T_TYPE_INTERSECTION, - T_TYPE_OPEN_PARENTHESIS => T_TYPE_OPEN_PARENTHESIS, - T_TYPE_CLOSE_PARENTHESIS => T_TYPE_CLOSE_PARENTHESIS, - ]; - - $closer = $this->tokens[$x]['parenthesis_closer']; - for ($arrow = ($closer + 1); $arrow < $numTokens; $arrow++) { - if (isset($ignore[$this->tokens[$arrow]['code']]) === false) { - break; - } - } - - if ($this->tokens[$arrow]['code'] === T_DOUBLE_ARROW) { - $endTokens = [ - T_COLON => true, - T_COMMA => true, - T_SEMICOLON => true, - T_CLOSE_PARENTHESIS => true, - T_CLOSE_SQUARE_BRACKET => true, - T_CLOSE_CURLY_BRACKET => true, - T_CLOSE_SHORT_ARRAY => true, - T_OPEN_TAG => true, - T_CLOSE_TAG => true, - ]; - - $inTernary = false; - $lastEndToken = null; - - for ($scopeCloser = ($arrow + 1); $scopeCloser < $numTokens; $scopeCloser++) { - // Arrow function closer should never be shared with the closer of a match - // control structure. - if (isset($this->tokens[$scopeCloser]['scope_closer'], $this->tokens[$scopeCloser]['scope_condition']) === true - && $scopeCloser === $this->tokens[$scopeCloser]['scope_closer'] - && $this->tokens[$this->tokens[$scopeCloser]['scope_condition']]['code'] === T_MATCH - ) { - if ($arrow < $this->tokens[$scopeCloser]['scope_condition']) { - // Match in return value of arrow function. Move on to the next token. - continue; - } - - // Arrow function as return value for the last match case without trailing comma. - if ($lastEndToken !== null) { - $scopeCloser = $lastEndToken; - break; - } - - for ($lastNonEmpty = ($scopeCloser - 1); $lastNonEmpty > $arrow; $lastNonEmpty--) { - if (isset(Tokens::$emptyTokens[$this->tokens[$lastNonEmpty]['code']]) === false) { - $scopeCloser = $lastNonEmpty; - break 2; - } - } - } - - if (isset($endTokens[$this->tokens[$scopeCloser]['code']]) === true) { - if ($lastEndToken !== null - && ((isset($this->tokens[$scopeCloser]['parenthesis_opener']) === true - && $this->tokens[$scopeCloser]['parenthesis_opener'] < $arrow) - || (isset($this->tokens[$scopeCloser]['bracket_opener']) === true - && $this->tokens[$scopeCloser]['bracket_opener'] < $arrow)) - ) { - for ($lastNonEmpty = ($scopeCloser - 1); $lastNonEmpty > $arrow; $lastNonEmpty--) { - if (isset(Tokens::$emptyTokens[$this->tokens[$lastNonEmpty]['code']]) === false) { - $scopeCloser = $lastNonEmpty; - break; - } - } - } - - break; - } - - if ($inTernary === false - && isset($this->tokens[$scopeCloser]['scope_closer'], $this->tokens[$scopeCloser]['scope_condition']) === true - && $scopeCloser === $this->tokens[$scopeCloser]['scope_closer'] - && $this->tokens[$this->tokens[$scopeCloser]['scope_condition']]['code'] === T_FN - ) { - // Found a nested arrow function that already has the closer set and is in - // the same scope as us, so we can use its closer. - break; - } - - if (isset($this->tokens[$scopeCloser]['scope_closer']) === true - && $this->tokens[$scopeCloser]['code'] !== T_INLINE_ELSE - && $this->tokens[$scopeCloser]['code'] !== T_END_HEREDOC - && $this->tokens[$scopeCloser]['code'] !== T_END_NOWDOC - ) { - // We minus 1 here in case the closer can be shared with us. - $scopeCloser = ($this->tokens[$scopeCloser]['scope_closer'] - 1); - continue; - } - - if (isset($this->tokens[$scopeCloser]['parenthesis_closer']) === true) { - $scopeCloser = $this->tokens[$scopeCloser]['parenthesis_closer']; - $lastEndToken = $scopeCloser; - continue; - } - - if (isset($this->tokens[$scopeCloser]['bracket_closer']) === true) { - $scopeCloser = $this->tokens[$scopeCloser]['bracket_closer']; - $lastEndToken = $scopeCloser; - continue; - } - - if ($this->tokens[$scopeCloser]['code'] === T_INLINE_THEN) { - $inTernary = true; - continue; - } - - if ($this->tokens[$scopeCloser]['code'] === T_INLINE_ELSE) { - if ($inTernary === false) { - break; - } - - $inTernary = false; - continue; - } - }//end for - - if ($scopeCloser !== $numTokens) { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $line = $this->tokens[$i]['line']; - echo "\t=> token $i on line $line processed as arrow function".PHP_EOL; - echo "\t\t* scope opener set to $arrow *".PHP_EOL; - echo "\t\t* scope closer set to $scopeCloser *".PHP_EOL; - echo "\t\t* parenthesis opener set to $x *".PHP_EOL; - echo "\t\t* parenthesis closer set to $closer *".PHP_EOL; - } - - $this->tokens[$i]['code'] = T_FN; - $this->tokens[$i]['type'] = 'T_FN'; - $this->tokens[$i]['scope_condition'] = $i; - $this->tokens[$i]['scope_opener'] = $arrow; - $this->tokens[$i]['scope_closer'] = $scopeCloser; - $this->tokens[$i]['parenthesis_owner'] = $i; - $this->tokens[$i]['parenthesis_opener'] = $x; - $this->tokens[$i]['parenthesis_closer'] = $closer; - - $this->tokens[$arrow]['code'] = T_FN_ARROW; - $this->tokens[$arrow]['type'] = 'T_FN_ARROW'; - - $this->tokens[$arrow]['scope_condition'] = $i; - $this->tokens[$arrow]['scope_opener'] = $arrow; - $this->tokens[$arrow]['scope_closer'] = $scopeCloser; - $this->tokens[$scopeCloser]['scope_condition'] = $i; - $this->tokens[$scopeCloser]['scope_opener'] = $arrow; - $this->tokens[$scopeCloser]['scope_closer'] = $scopeCloser; - - $opener = $this->tokens[$i]['parenthesis_opener']; - $closer = $this->tokens[$i]['parenthesis_closer']; - $this->tokens[$opener]['parenthesis_owner'] = $i; - $this->tokens[$closer]['parenthesis_owner'] = $i; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $line = $this->tokens[$arrow]['line']; - echo "\t\t* token $arrow on line $line changed from T_DOUBLE_ARROW to T_FN_ARROW".PHP_EOL; - } - }//end if - }//end if - }//end if - - // If after all that, the extra tokens are not set, this is not an arrow function. - if (isset($this->tokens[$i]['scope_closer']) === false) { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $line = $this->tokens[$i]['line']; - echo "\t=> token $i on line $line is not an arrow function".PHP_EOL; - echo "\t\t* token changed from T_FN to T_STRING".PHP_EOL; - } - - $this->tokens[$i]['code'] = T_STRING; - $this->tokens[$i]['type'] = 'T_STRING'; - } - } else if ($this->tokens[$i]['code'] === T_OPEN_SQUARE_BRACKET) { - if (isset($this->tokens[$i]['bracket_closer']) === false) { - continue; - } - - // Unless there is a variable or a bracket before this token, - // it is the start of an array being defined using the short syntax. - $isShortArray = false; - $allowed = [ - T_CLOSE_SQUARE_BRACKET => T_CLOSE_SQUARE_BRACKET, - T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET, - T_CLOSE_PARENTHESIS => T_CLOSE_PARENTHESIS, - T_VARIABLE => T_VARIABLE, - T_OBJECT_OPERATOR => T_OBJECT_OPERATOR, - T_NULLSAFE_OBJECT_OPERATOR => T_NULLSAFE_OBJECT_OPERATOR, - T_STRING => T_STRING, - T_CONSTANT_ENCAPSED_STRING => T_CONSTANT_ENCAPSED_STRING, - T_DOUBLE_QUOTED_STRING => T_DOUBLE_QUOTED_STRING, - ]; - $allowed += Tokens::$magicConstants; - - for ($x = ($i - 1); $x >= 0; $x--) { - // If we hit a scope opener, the statement has ended - // without finding anything, so it's probably an array - // using PHP 7.1 short list syntax. - if (isset($this->tokens[$x]['scope_opener']) === true) { - $isShortArray = true; - break; - } - - if (isset(Tokens::$emptyTokens[$this->tokens[$x]['code']]) === false) { - // Allow for control structures without braces. - if (($this->tokens[$x]['code'] === T_CLOSE_PARENTHESIS - && isset($this->tokens[$x]['parenthesis_owner']) === true - && isset(Tokens::$scopeOpeners[$this->tokens[$this->tokens[$x]['parenthesis_owner']]['code']]) === true) - || isset($allowed[$this->tokens[$x]['code']]) === false - ) { - $isShortArray = true; - } - - break; - } - }//end for - - if ($isShortArray === true) { - $this->tokens[$i]['code'] = T_OPEN_SHORT_ARRAY; - $this->tokens[$i]['type'] = 'T_OPEN_SHORT_ARRAY'; - - $closer = $this->tokens[$i]['bracket_closer']; - $this->tokens[$closer]['code'] = T_CLOSE_SHORT_ARRAY; - $this->tokens[$closer]['type'] = 'T_CLOSE_SHORT_ARRAY'; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $line = $this->tokens[$i]['line']; - echo "\t* token $i on line $line changed from T_OPEN_SQUARE_BRACKET to T_OPEN_SHORT_ARRAY".PHP_EOL; - $line = $this->tokens[$closer]['line']; - echo "\t* token $closer on line $line changed from T_CLOSE_SQUARE_BRACKET to T_CLOSE_SHORT_ARRAY".PHP_EOL; - } - } - - continue; - } else if ($this->tokens[$i]['code'] === T_MATCH) { - if (isset($this->tokens[$i]['scope_opener'], $this->tokens[$i]['scope_closer']) === false) { - // Not a match expression after all. - $this->tokens[$i]['code'] = T_STRING; - $this->tokens[$i]['type'] = 'T_STRING'; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* token $i changed from T_MATCH to T_STRING".PHP_EOL; - } - - if (isset($this->tokens[$i]['parenthesis_opener'], $this->tokens[$i]['parenthesis_closer']) === true) { - $opener = $this->tokens[$i]['parenthesis_opener']; - $closer = $this->tokens[$i]['parenthesis_closer']; - unset( - $this->tokens[$opener]['parenthesis_owner'], - $this->tokens[$closer]['parenthesis_owner'] - ); - unset( - $this->tokens[$i]['parenthesis_opener'], - $this->tokens[$i]['parenthesis_closer'], - $this->tokens[$i]['parenthesis_owner'] - ); - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* cleaned parenthesis of token $i *".PHP_EOL; - } - } - } else { - // Retokenize the double arrows for match expression cases to `T_MATCH_ARROW`. - $searchFor = [ - T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET, - T_OPEN_SQUARE_BRACKET => T_OPEN_SQUARE_BRACKET, - T_OPEN_PARENTHESIS => T_OPEN_PARENTHESIS, - T_OPEN_SHORT_ARRAY => T_OPEN_SHORT_ARRAY, - T_DOUBLE_ARROW => T_DOUBLE_ARROW, - ]; - $searchFor += Tokens::$scopeOpeners; - - for ($x = ($this->tokens[$i]['scope_opener'] + 1); $x < $this->tokens[$i]['scope_closer']; $x++) { - if (isset($searchFor[$this->tokens[$x]['code']]) === false) { - continue; - } - - if (isset($this->tokens[$x]['scope_closer']) === true) { - $x = $this->tokens[$x]['scope_closer']; - continue; - } - - if (isset($this->tokens[$x]['parenthesis_closer']) === true) { - $x = $this->tokens[$x]['parenthesis_closer']; - continue; - } - - if (isset($this->tokens[$x]['bracket_closer']) === true) { - $x = $this->tokens[$x]['bracket_closer']; - continue; - } - - // This must be a double arrow, but make sure anyhow. - if ($this->tokens[$x]['code'] === T_DOUBLE_ARROW) { - $this->tokens[$x]['code'] = T_MATCH_ARROW; - $this->tokens[$x]['type'] = 'T_MATCH_ARROW'; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t* token $x changed from T_DOUBLE_ARROW to T_MATCH_ARROW".PHP_EOL; - } - } - }//end for - }//end if - - continue; - } else if ($this->tokens[$i]['code'] === T_BITWISE_OR - || $this->tokens[$i]['code'] === T_BITWISE_AND - || $this->tokens[$i]['code'] === T_CLOSE_PARENTHESIS - ) { - if ($lastSeenTypeToken < $i) { - // We've already examined this code to check if it is a type declaration and concluded it wasn't. - // No need to do it again. - continue; - } - - /* - Convert "|" to T_TYPE_UNION or leave as T_BITWISE_OR. - Convert "&" to T_TYPE_INTERSECTION or leave as T_BITWISE_AND. - Convert "(" and ")" to T_TYPE_(OPEN|CLOSE)_PARENTHESIS or leave as T_(OPEN|CLOSE)_PARENTHESIS. - - All type related tokens will be converted in one go as soon as this section is hit. - */ - - $allowed = [ - T_STRING => T_STRING, - T_CALLABLE => T_CALLABLE, - T_SELF => T_SELF, - T_PARENT => T_PARENT, - T_STATIC => T_STATIC, - T_FALSE => T_FALSE, - T_TRUE => T_TRUE, - T_NULL => T_NULL, - T_NAMESPACE => T_NAMESPACE, - T_NS_SEPARATOR => T_NS_SEPARATOR, - ]; - - $suspectedType = null; - $typeTokenCountAfter = 0; - - for ($x = ($i + 1); $x < $numTokens; $x++) { - if (isset(Tokens::$emptyTokens[$this->tokens[$x]['code']]) === true) { - continue; - } - - if (isset($allowed[$this->tokens[$x]['code']]) === true) { - ++$typeTokenCountAfter; - continue; - } - - if (($typeTokenCountAfter > 0 - || ($this->tokens[$i]['code'] === T_CLOSE_PARENTHESIS - && isset($this->tokens[$i]['parenthesis_owner']) === false)) - && ($this->tokens[$x]['code'] === T_BITWISE_AND - || $this->tokens[$x]['code'] === T_ELLIPSIS) - ) { - // Skip past reference and variadic indicators for parameter types. - continue; - } - - if ($this->tokens[$x]['code'] === T_VARIABLE) { - // Parameter/Property defaults can not contain variables, so this could be a type. - $suspectedType = 'property or parameter'; - break; - } - - if ($this->tokens[$x]['code'] === T_DOUBLE_ARROW) { - // Possible arrow function. - $suspectedType = 'return'; - break; - } - - if ($this->tokens[$x]['code'] === T_SEMICOLON) { - // Possible abstract method or interface method. - $suspectedType = 'return'; - break; - } - - if ($this->tokens[$x]['code'] === T_OPEN_CURLY_BRACKET - && isset($this->tokens[$x]['scope_condition']) === true - && $this->tokens[$this->tokens[$x]['scope_condition']]['code'] === T_FUNCTION - ) { - $suspectedType = 'return'; - break; - } - - if ($this->tokens[$x]['code'] === T_EQUAL) { - // Possible constant declaration, the `T_STRING` name will have been skipped over already. - $suspectedType = 'constant'; - break; - } - - break; - }//end for - - if (($typeTokenCountAfter === 0 - && ($this->tokens[$i]['code'] !== T_CLOSE_PARENTHESIS - || isset($this->tokens[$i]['parenthesis_owner']) === true)) - || isset($suspectedType) === false - ) { - // Definitely not a union, intersection or DNF type, move on. - continue; - } - - if ($suspectedType === 'property or parameter') { - unset($allowed[T_STATIC]); - } - - $typeTokenCountBefore = 0; - $typeOperators = [$i]; - $parenthesesCount = 0; - $confirmed = false; - $maybeNullable = null; - - if ($this->tokens[$i]['code'] === T_OPEN_PARENTHESIS || $this->tokens[$i]['code'] === T_CLOSE_PARENTHESIS) { - ++$parenthesesCount; - } - - for ($x = ($i - 1); $x >= 0; $x--) { - if (isset(Tokens::$emptyTokens[$this->tokens[$x]['code']]) === true) { - continue; - } - - if ($suspectedType === 'property or parameter' - && $this->tokens[$x]['code'] === T_STRING - && strtolower($this->tokens[$x]['content']) === 'static' - ) { - // Static keyword followed directly by an open parenthesis for a DNF type. - // This token should be T_STATIC and was incorrectly identified as a function call before. - $this->tokens[$x]['code'] = T_STATIC; - $this->tokens[$x]['type'] = 'T_STATIC'; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $line = $this->tokens[$x]['line']; - echo "\t* token $x on line $line changed back from T_STRING to T_STATIC".PHP_EOL; - } - } - - if ($suspectedType === 'property or parameter' - && $this->tokens[$x]['code'] === T_OPEN_PARENTHESIS - ) { - // We need to prevent the open parenthesis for a function/fn declaration from being retokenized - // to T_TYPE_OPEN_PARENTHESIS if this is the first parameter in the declaration. - if (isset($this->tokens[$x]['parenthesis_owner']) === true - && $this->tokens[$this->tokens[$x]['parenthesis_owner']]['code'] === T_FUNCTION - ) { - $confirmed = true; - break; - } else { - // This may still be an arrow function which hasn't been handled yet. - for ($y = ($x - 1); $y > 0; $y--) { - if (isset(Tokens::$emptyTokens[$this->tokens[$y]['code']]) === false - && $this->tokens[$y]['code'] !== T_BITWISE_AND - ) { - // Non-whitespace content. - break; - } - } - - if ($this->tokens[$y]['code'] === T_FN) { - $confirmed = true; - break; - } - } - }//end if - - if (isset($allowed[$this->tokens[$x]['code']]) === true) { - ++$typeTokenCountBefore; - continue; - } - - // Union, intersection and DNF types can't use the nullable operator, but be tolerant to parse errors. - if (($typeTokenCountBefore > 0 - || ($this->tokens[$x]['code'] === T_OPEN_PARENTHESIS && isset($this->tokens[$x]['parenthesis_owner']) === false)) - && ($this->tokens[$x]['code'] === T_NULLABLE - || $this->tokens[$x]['code'] === T_INLINE_THEN) - ) { - if ($this->tokens[$x]['code'] === T_INLINE_THEN) { - $maybeNullable = $x; - } - - continue; - } - - if ($this->tokens[$x]['code'] === T_BITWISE_OR || $this->tokens[$x]['code'] === T_BITWISE_AND) { - $typeOperators[] = $x; - continue; - } - - if ($this->tokens[$x]['code'] === T_OPEN_PARENTHESIS || $this->tokens[$x]['code'] === T_CLOSE_PARENTHESIS) { - ++$parenthesesCount; - $typeOperators[] = $x; - continue; - } - - if ($suspectedType === 'return' && $this->tokens[$x]['code'] === T_COLON) { - // Make sure this is the colon for a return type. - for ($y = ($x - 1); $y > 0; $y--) { - if (isset(Tokens::$emptyTokens[$this->tokens[$y]['code']]) === false) { - break; - } - } - - if ($this->tokens[$y]['code'] !== T_CLOSE_PARENTHESIS) { - // Definitely not a union, intersection or DNF return type, move on. - continue 2; - } - - if (isset($this->tokens[$y]['parenthesis_owner']) === true) { - if ($this->tokens[$this->tokens[$y]['parenthesis_owner']]['code'] === T_FUNCTION - || $this->tokens[$this->tokens[$y]['parenthesis_owner']]['code'] === T_CLOSURE - || $this->tokens[$this->tokens[$y]['parenthesis_owner']]['code'] === T_FN - ) { - $confirmed = true; - } - - break; - } - - // Arrow functions may not have the parenthesis_owner set correctly yet. - // Closure use tokens won't be parentheses owners until PHPCS 4.0. - if (isset($this->tokens[$y]['parenthesis_opener']) === true) { - for ($z = ($this->tokens[$y]['parenthesis_opener'] - 1); $z > 0; $z--) { - if (isset(Tokens::$emptyTokens[$this->tokens[$z]['code']]) === false) { - break; - } - } - - if ($this->tokens[$z]['code'] === T_FN || $this->tokens[$z]['code'] === T_USE) { - $confirmed = true; - } - } - - break; - }//end if - - if ($suspectedType === 'constant' && $this->tokens[$x]['code'] === T_CONST) { - $confirmed = true; - break; - } - - if ($suspectedType === 'property or parameter' - && (isset(Tokens::$scopeModifiers[$this->tokens[$x]['code']]) === true - || $this->tokens[$x]['code'] === T_VAR - || $this->tokens[$x]['code'] === T_STATIC - || $this->tokens[$x]['code'] === T_READONLY) - ) { - // This will also confirm constructor property promotion parameters, but that's fine. - $confirmed = true; - } - - break; - }//end for - - // Remember the last token we examined as part of the (non-)"type declaration". - $lastSeenTypeToken = $x; - - if ($confirmed === false - && $suspectedType === 'property or parameter' - && isset($this->tokens[$i]['nested_parenthesis']) === true - ) { - $parens = $this->tokens[$i]['nested_parenthesis']; - $last = end($parens); - - if (isset($this->tokens[$last]['parenthesis_owner']) === true - && $this->tokens[$this->tokens[$last]['parenthesis_owner']]['code'] === T_FUNCTION - ) { - $confirmed = true; - } else { - // No parenthesis owner set, this may be an arrow function which has not yet - // had additional processing done. - if (isset($this->tokens[$last]['parenthesis_opener']) === true) { - for ($x = ($this->tokens[$last]['parenthesis_opener'] - 1); $x >= 0; $x--) { - if (isset(Tokens::$emptyTokens[$this->tokens[$x]['code']]) === true) { - continue; - } - - break; - } - - if ($this->tokens[$x]['code'] === T_FN) { - for (--$x; $x >= 0; $x--) { - if (isset(Tokens::$emptyTokens[$this->tokens[$x]['code']]) === true - || $this->tokens[$x]['code'] === T_BITWISE_AND - ) { - continue; - } - - break; - } - - if ($this->tokens[$x]['code'] !== T_FUNCTION) { - $confirmed = true; - } - } - }//end if - }//end if - - unset($parens, $last); - }//end if - - if ($confirmed === false || ($parenthesesCount % 2) !== 0) { - // Not a (valid) union, intersection or DNF type after all, move on. - continue; - } - - foreach ($typeOperators as $x) { - if ($this->tokens[$x]['code'] === T_BITWISE_OR) { - $this->tokens[$x]['code'] = T_TYPE_UNION; - $this->tokens[$x]['type'] = 'T_TYPE_UNION'; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $line = $this->tokens[$x]['line']; - echo "\t* token $x on line $line changed from T_BITWISE_OR to T_TYPE_UNION".PHP_EOL; - } - } else if ($this->tokens[$x]['code'] === T_BITWISE_AND) { - $this->tokens[$x]['code'] = T_TYPE_INTERSECTION; - $this->tokens[$x]['type'] = 'T_TYPE_INTERSECTION'; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $line = $this->tokens[$x]['line']; - echo "\t* token $x on line $line changed from T_BITWISE_AND to T_TYPE_INTERSECTION".PHP_EOL; - } - } else if ($this->tokens[$x]['code'] === T_OPEN_PARENTHESIS) { - $this->tokens[$x]['code'] = T_TYPE_OPEN_PARENTHESIS; - $this->tokens[$x]['type'] = 'T_TYPE_OPEN_PARENTHESIS'; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $line = $this->tokens[$x]['line']; - echo "\t* token $x on line $line changed from T_OPEN_PARENTHESIS to T_TYPE_OPEN_PARENTHESIS".PHP_EOL; - } - } else if ($this->tokens[$x]['code'] === T_CLOSE_PARENTHESIS) { - $this->tokens[$x]['code'] = T_TYPE_CLOSE_PARENTHESIS; - $this->tokens[$x]['type'] = 'T_TYPE_CLOSE_PARENTHESIS'; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $line = $this->tokens[$x]['line']; - echo "\t* token $x on line $line changed from T_CLOSE_PARENTHESIS to T_TYPE_CLOSE_PARENTHESIS".PHP_EOL; - } - }//end if - }//end foreach - - if (isset($maybeNullable) === true) { - $this->tokens[$maybeNullable]['code'] = T_NULLABLE; - $this->tokens[$maybeNullable]['type'] = 'T_NULLABLE'; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $line = $this->tokens[$maybeNullable]['line']; - echo "\t* token $maybeNullable on line $line changed from T_INLINE_THEN to T_NULLABLE".PHP_EOL; - } - } - - continue; - } else if ($this->tokens[$i]['code'] === T_STATIC) { - for ($x = ($i - 1); $x > 0; $x--) { - if (isset(Tokens::$emptyTokens[$this->tokens[$x]['code']]) === false) { - break; - } - } - - if ($this->tokens[$x]['code'] === T_INSTANCEOF) { - $this->tokens[$i]['code'] = T_STRING; - $this->tokens[$i]['type'] = 'T_STRING'; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $line = $this->tokens[$i]['line']; - echo "\t* token $i on line $line changed from T_STATIC to T_STRING".PHP_EOL; - } - } - - continue; - } else if ($this->tokens[$i]['code'] === T_TRUE - || $this->tokens[$i]['code'] === T_FALSE - || $this->tokens[$i]['code'] === T_NULL - ) { - for ($x = ($i + 1); $x < $numTokens; $x++) { - if (isset(Tokens::$emptyTokens[$this->tokens[$x]['code']]) === false) { - // Non-whitespace content. - break; - } - } - - if ($x !== $numTokens - && isset($this->tstringContexts[$this->tokens[$x]['code']]) === true - ) { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $line = $this->tokens[$i]['line']; - $type = $this->tokens[$i]['type']; - echo "\t* token $i on line $line changed from $type to T_STRING".PHP_EOL; - } - - $this->tokens[$i]['code'] = T_STRING; - $this->tokens[$i]['type'] = 'T_STRING'; - } - }//end if - - if (($this->tokens[$i]['code'] !== T_CASE - && $this->tokens[$i]['code'] !== T_DEFAULT) - || isset($this->tokens[$i]['scope_opener']) === false - ) { - // Only interested in CASE and DEFAULT statements from here on in. - continue; - } - - $scopeOpener = $this->tokens[$i]['scope_opener']; - $scopeCloser = $this->tokens[$i]['scope_closer']; - - // If the first char after the opener is a curly brace - // and that brace has been ignored, it is actually - // opening this case statement and the opener and closer are - // probably set incorrectly. - for ($x = ($scopeOpener + 1); $x < $numTokens; $x++) { - if (isset(Tokens::$emptyTokens[$this->tokens[$x]['code']]) === false) { - // Non-whitespace content. - break; - } - } - - if ($this->tokens[$x]['code'] === T_CASE || $this->tokens[$x]['code'] === T_DEFAULT) { - // Special case for multiple CASE statements that share the same - // closer. Because we are going backwards through the file, this next - // CASE statement is already fixed, so just use its closer and don't - // worry about fixing anything. - $newCloser = $this->tokens[$x]['scope_closer']; - $this->tokens[$i]['scope_closer'] = $newCloser; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $oldType = $this->tokens[$scopeCloser]['type']; - $newType = $this->tokens[$newCloser]['type']; - $line = $this->tokens[$i]['line']; - echo "\t* token $i (T_CASE) on line $line closer changed from $scopeCloser ($oldType) to $newCloser ($newType)".PHP_EOL; - } - - continue; - } - - if ($this->tokens[$x]['code'] !== T_OPEN_CURLY_BRACKET - || isset($this->tokens[$x]['scope_condition']) === true - ) { - // Not a CASE/DEFAULT with a curly brace opener. - continue; - } - - // The closer for this CASE/DEFAULT should be the closing curly brace and - // not whatever it already is. The opener needs to be the opening curly - // brace so everything matches up. - $newCloser = $this->tokens[$x]['bracket_closer']; - foreach ([$i, $x, $newCloser] as $index) { - $this->tokens[$index]['scope_condition'] = $i; - $this->tokens[$index]['scope_opener'] = $x; - $this->tokens[$index]['scope_closer'] = $newCloser; - } - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $line = $this->tokens[$i]['line']; - $tokenType = $this->tokens[$i]['type']; - - $oldType = $this->tokens[$scopeOpener]['type']; - $newType = $this->tokens[$x]['type']; - echo "\t* token $i ($tokenType) on line $line opener changed from $scopeOpener ($oldType) to $x ($newType)".PHP_EOL; - - $oldType = $this->tokens[$scopeCloser]['type']; - $newType = $this->tokens[$newCloser]['type']; - echo "\t* token $i ($tokenType) on line $line closer changed from $scopeCloser ($oldType) to $newCloser ($newType)".PHP_EOL; - } - - if ($this->tokens[$scopeOpener]['scope_condition'] === $i) { - unset($this->tokens[$scopeOpener]['scope_condition']); - unset($this->tokens[$scopeOpener]['scope_opener']); - unset($this->tokens[$scopeOpener]['scope_closer']); - } - - if ($this->tokens[$scopeCloser]['scope_condition'] === $i) { - unset($this->tokens[$scopeCloser]['scope_condition']); - unset($this->tokens[$scopeCloser]['scope_opener']); - unset($this->tokens[$scopeCloser]['scope_closer']); - } else { - // We were using a shared closer. All tokens that were - // sharing this closer with us, except for the scope condition - // and it's opener, need to now point to the new closer. - $condition = $this->tokens[$scopeCloser]['scope_condition']; - $start = ($this->tokens[$condition]['scope_opener'] + 1); - for ($y = $start; $y < $scopeCloser; $y++) { - if (isset($this->tokens[$y]['scope_closer']) === true - && $this->tokens[$y]['scope_closer'] === $scopeCloser - ) { - $this->tokens[$y]['scope_closer'] = $newCloser; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $line = $this->tokens[$y]['line']; - $tokenType = $this->tokens[$y]['type']; - $oldType = $this->tokens[$scopeCloser]['type']; - $newType = $this->tokens[$newCloser]['type']; - echo "\t\t* token $y ($tokenType) on line $line closer changed from $scopeCloser ($oldType) to $newCloser ($newType)".PHP_EOL; - } - } - } - }//end if - - unset($this->tokens[$x]['bracket_opener']); - unset($this->tokens[$x]['bracket_closer']); - unset($this->tokens[$newCloser]['bracket_opener']); - unset($this->tokens[$newCloser]['bracket_closer']); - $this->tokens[$scopeCloser]['conditions'][] = $i; - - // Now fix up all the tokens that think they are - // inside the CASE/DEFAULT statement when they are really outside. - for ($x = $newCloser; $x < $scopeCloser; $x++) { - foreach ($this->tokens[$x]['conditions'] as $num => $oldCond) { - if ($oldCond === $this->tokens[$i]['code']) { - $oldConditions = $this->tokens[$x]['conditions']; - unset($this->tokens[$x]['conditions'][$num]); - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $this->tokens[$x]['type']; - $oldConds = ''; - foreach ($oldConditions as $condition) { - $oldConds .= Tokens::tokenName($condition).','; - } - - $oldConds = rtrim($oldConds, ','); - - $newConds = ''; - foreach ($this->tokens[$x]['conditions'] as $condition) { - $newConds .= Tokens::tokenName($condition).','; - } - - $newConds = rtrim($newConds, ','); - - echo "\t\t* cleaned $x ($type) *".PHP_EOL; - echo "\t\t\t=> conditions changed from $oldConds to $newConds".PHP_EOL; - } - - break; - }//end if - }//end foreach - }//end for - }//end for - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t*** END ADDITIONAL PHP PROCESSING ***".PHP_EOL; - } - - }//end processAdditional() - - - /** - * Takes a token produced from token_get_all() and produces a - * more uniform token. - * - * @param string|array $token The token to convert. - * - * @return array The new token. - */ - public static function standardiseToken($token) - { - if (isset($token[1]) === false) { - if (isset(self::$resolveTokenCache[$token[0]]) === true) { - return self::$resolveTokenCache[$token[0]]; - } - } else { - $cacheKey = null; - if ($token[0] === T_STRING) { - $cacheKey = strtolower($token[1]); - } else if ($token[0] !== T_CURLY_OPEN) { - $cacheKey = $token[0]; - } - - if ($cacheKey !== null && isset(self::$resolveTokenCache[$cacheKey]) === true) { - $newToken = self::$resolveTokenCache[$cacheKey]; - $newToken['content'] = $token[1]; - return $newToken; - } - } - - if (isset($token[1]) === false) { - return self::resolveSimpleToken($token[0]); - } - - if ($token[0] === T_STRING) { - switch ($cacheKey) { - case 'false': - $newToken['type'] = 'T_FALSE'; - break; - case 'true': - $newToken['type'] = 'T_TRUE'; - break; - case 'null': - $newToken['type'] = 'T_NULL'; - break; - case 'self': - $newToken['type'] = 'T_SELF'; - break; - case 'parent': - $newToken['type'] = 'T_PARENT'; - break; - default: - $newToken['type'] = 'T_STRING'; - break; - } - - $newToken['code'] = constant($newToken['type']); - - self::$resolveTokenCache[$cacheKey] = $newToken; - } else if ($token[0] === T_CURLY_OPEN) { - $newToken = [ - 'code' => T_OPEN_CURLY_BRACKET, - 'type' => 'T_OPEN_CURLY_BRACKET', - ]; - } else { - $newToken = [ - 'code' => $token[0], - 'type' => Tokens::tokenName($token[0]), - ]; - - self::$resolveTokenCache[$token[0]] = $newToken; - }//end if - - $newToken['content'] = $token[1]; - return $newToken; - - }//end standardiseToken() - - - /** - * Converts simple tokens into a format that conforms to complex tokens - * produced by token_get_all(). - * - * Simple tokens are tokens that are not in array form when produced from - * token_get_all(). - * - * @param string $token The simple token to convert. - * - * @return array The new token in array format. - */ - public static function resolveSimpleToken($token) - { - $newToken = []; - - switch ($token) { - case '{': - $newToken['type'] = 'T_OPEN_CURLY_BRACKET'; - break; - case '}': - $newToken['type'] = 'T_CLOSE_CURLY_BRACKET'; - break; - case '[': - $newToken['type'] = 'T_OPEN_SQUARE_BRACKET'; - break; - case ']': - $newToken['type'] = 'T_CLOSE_SQUARE_BRACKET'; - break; - case '(': - $newToken['type'] = 'T_OPEN_PARENTHESIS'; - break; - case ')': - $newToken['type'] = 'T_CLOSE_PARENTHESIS'; - break; - case ':': - $newToken['type'] = 'T_COLON'; - break; - case '.': - $newToken['type'] = 'T_STRING_CONCAT'; - break; - case ';': - $newToken['type'] = 'T_SEMICOLON'; - break; - case '=': - $newToken['type'] = 'T_EQUAL'; - break; - case '*': - $newToken['type'] = 'T_MULTIPLY'; - break; - case '/': - $newToken['type'] = 'T_DIVIDE'; - break; - case '+': - $newToken['type'] = 'T_PLUS'; - break; - case '-': - $newToken['type'] = 'T_MINUS'; - break; - case '%': - $newToken['type'] = 'T_MODULUS'; - break; - case '^': - $newToken['type'] = 'T_BITWISE_XOR'; - break; - case '&': - $newToken['type'] = 'T_BITWISE_AND'; - break; - case '|': - $newToken['type'] = 'T_BITWISE_OR'; - break; - case '~': - $newToken['type'] = 'T_BITWISE_NOT'; - break; - case '<': - $newToken['type'] = 'T_LESS_THAN'; - break; - case '>': - $newToken['type'] = 'T_GREATER_THAN'; - break; - case '!': - $newToken['type'] = 'T_BOOLEAN_NOT'; - break; - case ',': - $newToken['type'] = 'T_COMMA'; - break; - case '@': - $newToken['type'] = 'T_ASPERAND'; - break; - case '$': - $newToken['type'] = 'T_DOLLAR'; - break; - case '`': - $newToken['type'] = 'T_BACKTICK'; - break; - default: - $newToken['type'] = 'T_NONE'; - break; - }//end switch - - $newToken['code'] = constant($newToken['type']); - $newToken['content'] = $token; - - self::$resolveTokenCache[$token] = $newToken; - return $newToken; - - }//end resolveSimpleToken() - - - /** - * Finds a "closer" token (closing parenthesis or square bracket for example) - * Handle parenthesis balancing while searching for closing token - * - * @param array $tokens The list of tokens to iterate searching the closing token (as returned by token_get_all). - * @param int $start The starting position. - * @param string|string[] $openerTokens The opening character. - * @param string $closerChar The closing character. - * - * @return int|null The position of the closing token, if found. NULL otherwise. - */ - private function findCloser(array &$tokens, $start, $openerTokens, $closerChar) - { - $numTokens = count($tokens); - $stack = [0]; - $closer = null; - $openerTokens = (array) $openerTokens; - - for ($x = $start; $x < $numTokens; $x++) { - if (in_array($tokens[$x], $openerTokens, true) === true - || (is_array($tokens[$x]) === true && in_array($tokens[$x][1], $openerTokens, true) === true) - ) { - $stack[] = $x; - } else if ($tokens[$x] === $closerChar) { - array_pop($stack); - if (empty($stack) === true) { - $closer = $x; - break; - } - } - } - - return $closer; - - }//end findCloser() - - - /** - * PHP 8 attributes parser for PHP < 8 - * Handles single-line and multiline attributes. - * - * @param array $tokens The original array of tokens (as returned by token_get_all). - * @param int $stackPtr The current position in token array. - * - * @return array|null The array of parsed attribute tokens - */ - private function parsePhpAttribute(array &$tokens, $stackPtr) - { - - $token = $tokens[$stackPtr]; - - $commentBody = substr($token[1], 2); - $subTokens = @token_get_all(' $subToken) { - if (is_array($subToken) === true - && $subToken[0] === T_COMMENT - && strpos($subToken[1], '#[') === 0 - ) { - $reparsed = $this->parsePhpAttribute($subTokens, $i); - if ($reparsed !== null) { - array_splice($subTokens, $i, 1, $reparsed); - } else { - $subToken[0] = T_ATTRIBUTE; - } - } - } - - array_splice($subTokens, 0, 1, [[T_ATTRIBUTE, '#[']]); - - // Go looking for the close bracket. - $bracketCloser = $this->findCloser($subTokens, 1, '[', ']'); - if (PHP_VERSION_ID < 80000 && $bracketCloser === null) { - foreach (array_slice($tokens, ($stackPtr + 1)) as $token) { - if (is_array($token) === true) { - $commentBody .= $token[1]; - } else { - $commentBody .= $token; - } - } - - $subTokens = @token_get_all('findCloser($subTokens, 1, '[', ']'); - if ($bracketCloser !== null) { - array_splice($tokens, ($stackPtr + 1), count($tokens), array_slice($subTokens, ($bracketCloser + 1))); - $subTokens = array_slice($subTokens, 0, ($bracketCloser + 1)); - } - } - - if ($bracketCloser === null) { - return null; - } - - return $subTokens; - - }//end parsePhpAttribute() - - - /** - * Creates a map for the attributes tokens that surround other tokens. - * - * @return void - */ - private function createAttributesNestingMap() - { - $map = []; - for ($i = 0; $i < $this->numTokens; $i++) { - if (isset($this->tokens[$i]['attribute_opener']) === true - && $i === $this->tokens[$i]['attribute_opener'] - ) { - if (empty($map) === false) { - $this->tokens[$i]['nested_attributes'] = $map; - } - - if (isset($this->tokens[$i]['attribute_closer']) === true) { - $map[$this->tokens[$i]['attribute_opener']] - = $this->tokens[$i]['attribute_closer']; - } - } else if (isset($this->tokens[$i]['attribute_closer']) === true - && $i === $this->tokens[$i]['attribute_closer'] - ) { - array_pop($map); - if (empty($map) === false) { - $this->tokens[$i]['nested_attributes'] = $map; - } - } else { - if (empty($map) === false) { - $this->tokens[$i]['nested_attributes'] = $map; - } - }//end if - }//end for - - }//end createAttributesNestingMap() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Tokenizers/Tokenizer.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Tokenizers/Tokenizer.php deleted file mode 100644 index 8c90cd7c..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Tokenizers/Tokenizer.php +++ /dev/null @@ -1,1738 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Tokenizers; - -use PHP_CodeSniffer\Exceptions\TokenizerException; -use PHP_CodeSniffer\Util\Common; -use PHP_CodeSniffer\Util\Tokens; - -abstract class Tokenizer -{ - - /** - * The config data for the run. - * - * @var \PHP_CodeSniffer\Config - */ - protected $config = null; - - /** - * The EOL char used in the content. - * - * @var string - */ - protected $eolChar = ''; - - /** - * A token-based representation of the content. - * - * @var array - */ - protected $tokens = []; - - /** - * The number of tokens in the tokens array. - * - * @var integer - */ - protected $numTokens = 0; - - /** - * A list of tokens that are allowed to open a scope. - * - * @var array - */ - public $scopeOpeners = []; - - /** - * A list of tokens that end the scope. - * - * @var array - */ - public $endScopeTokens = []; - - /** - * Known lengths of tokens. - * - * @var array - */ - public $knownLengths = []; - - /** - * A list of lines being ignored due to error suppression comments. - * - * @var array - */ - public $ignoredLines = []; - - - /** - * Initialise and run the tokenizer. - * - * @param string $content The content to tokenize. - * @param \PHP_CodeSniffer\Config | null $config The config data for the run. - * @param string $eolChar The EOL char used in the content. - * - * @return void - * @throws \PHP_CodeSniffer\Exceptions\TokenizerException If the file appears to be minified. - */ - public function __construct($content, $config, $eolChar='\n') - { - $this->eolChar = $eolChar; - - $this->config = $config; - $this->tokens = $this->tokenize($content); - - if ($config === null) { - return; - } - - $this->createPositionMap(); - $this->createTokenMap(); - $this->createParenthesisNestingMap(); - $this->createScopeMap(); - $this->createLevelMap(); - - // Allow the tokenizer to do additional processing if required. - $this->processAdditional(); - - }//end __construct() - - - /** - * Checks the content to see if it looks minified. - * - * @param string $content The content to tokenize. - * @param string $eolChar The EOL char used in the content. - * - * @return boolean - */ - protected function isMinifiedContent($content, $eolChar='\n') - { - // Minified files often have a very large number of characters per line - // and cause issues when tokenizing. - $numChars = strlen($content); - $numLines = (substr_count($content, $eolChar) + 1); - $average = ($numChars / $numLines); - if ($average > 100) { - return true; - } - - return false; - - }//end isMinifiedContent() - - - /** - * Gets the array of tokens. - * - * @return array - */ - public function getTokens() - { - return $this->tokens; - - }//end getTokens() - - - /** - * Creates an array of tokens when given some content. - * - * @param string $string The string to tokenize. - * - * @return array - */ - abstract protected function tokenize($string); - - - /** - * Performs additional processing after main tokenizing. - * - * @return void - */ - abstract protected function processAdditional(); - - - /** - * Sets token position information. - * - * Can also convert tabs into spaces. Each tab can represent between - * 1 and $width spaces, so this cannot be a straight string replace. - * - * @return void - */ - private function createPositionMap() - { - $currColumn = 1; - $lineNumber = 1; - $eolLen = strlen($this->eolChar); - $ignoring = null; - $inTests = defined('PHP_CODESNIFFER_IN_TESTS'); - - $checkEncoding = false; - if (function_exists('iconv_strlen') === true) { - $checkEncoding = true; - } - - $checkAnnotations = $this->config->annotations; - $encoding = $this->config->encoding; - $tabWidth = $this->config->tabWidth; - - $tokensWithTabs = [ - T_WHITESPACE => true, - T_COMMENT => true, - T_DOC_COMMENT => true, - T_DOC_COMMENT_WHITESPACE => true, - T_DOC_COMMENT_STRING => true, - T_CONSTANT_ENCAPSED_STRING => true, - T_DOUBLE_QUOTED_STRING => true, - T_START_HEREDOC => true, - T_START_NOWDOC => true, - T_HEREDOC => true, - T_NOWDOC => true, - T_END_HEREDOC => true, - T_END_NOWDOC => true, - T_INLINE_HTML => true, - T_YIELD_FROM => true, - ]; - - $this->numTokens = count($this->tokens); - for ($i = 0; $i < $this->numTokens; $i++) { - $this->tokens[$i]['line'] = $lineNumber; - $this->tokens[$i]['column'] = $currColumn; - - if (isset($this->knownLengths[$this->tokens[$i]['code']]) === true) { - // There are no tabs in the tokens we know the length of. - $length = $this->knownLengths[$this->tokens[$i]['code']]; - $currColumn += $length; - } else if ($tabWidth === 0 - || isset($tokensWithTabs[$this->tokens[$i]['code']]) === false - || strpos($this->tokens[$i]['content'], "\t") === false - ) { - // There are no tabs in this content, or we aren't replacing them. - if ($checkEncoding === true) { - // Not using the default encoding, so take a bit more care. - $oldLevel = error_reporting(); - error_reporting(0); - $length = iconv_strlen($this->tokens[$i]['content'], $encoding); - error_reporting($oldLevel); - - if ($length === false) { - // String contained invalid characters, so revert to default. - $length = strlen($this->tokens[$i]['content']); - } - } else { - $length = strlen($this->tokens[$i]['content']); - } - - $currColumn += $length; - } else { - $this->replaceTabsInToken($this->tokens[$i]); - $length = $this->tokens[$i]['length']; - $currColumn += $length; - }//end if - - $this->tokens[$i]['length'] = $length; - - if (isset($this->knownLengths[$this->tokens[$i]['code']]) === false - && strpos($this->tokens[$i]['content'], $this->eolChar) !== false - ) { - $lineNumber++; - $currColumn = 1; - - // Newline chars are not counted in the token length. - $this->tokens[$i]['length'] -= $eolLen; - } - - if ($this->tokens[$i]['code'] === T_COMMENT - || $this->tokens[$i]['code'] === T_DOC_COMMENT_STRING - || $this->tokens[$i]['code'] === T_DOC_COMMENT_TAG - || ($inTests === true && $this->tokens[$i]['code'] === T_INLINE_HTML) - ) { - $commentText = ltrim($this->tokens[$i]['content'], " \t/*#"); - $commentText = rtrim($commentText, " */\t\r\n"); - $commentTextLower = strtolower($commentText); - if (strpos($commentText, '@codingStandards') !== false) { - // If this comment is the only thing on the line, it tells us - // to ignore the following line. If the line contains other content - // then we are just ignoring this one single line. - $ownLine = false; - if ($i > 0) { - for ($prev = ($i - 1); $prev >= 0; $prev--) { - if ($this->tokens[$prev]['code'] === T_WHITESPACE) { - continue; - } - - break; - } - - if ($this->tokens[$prev]['line'] !== $this->tokens[$i]['line']) { - $ownLine = true; - } - } - - if ($ignoring === null - && strpos($commentText, '@codingStandardsIgnoreStart') !== false - ) { - $ignoring = ['.all' => true]; - if ($ownLine === true) { - $this->ignoredLines[$this->tokens[$i]['line']] = $ignoring; - } - } else if ($ignoring !== null - && strpos($commentText, '@codingStandardsIgnoreEnd') !== false - ) { - if ($ownLine === true) { - $this->ignoredLines[$this->tokens[$i]['line']] = ['.all' => true]; - } else { - $this->ignoredLines[$this->tokens[$i]['line']] = $ignoring; - } - - $ignoring = null; - } else if ($ignoring === null - && strpos($commentText, '@codingStandardsIgnoreLine') !== false - ) { - $ignoring = ['.all' => true]; - if ($ownLine === true) { - $this->ignoredLines[$this->tokens[$i]['line']] = $ignoring; - $this->ignoredLines[($this->tokens[$i]['line'] + 1)] = $ignoring; - } else { - $this->ignoredLines[$this->tokens[$i]['line']] = $ignoring; - } - - $ignoring = null; - }//end if - } else if (substr($commentTextLower, 0, 6) === 'phpcs:' - || substr($commentTextLower, 0, 7) === '@phpcs:' - ) { - // If the @phpcs: syntax is being used, strip the @ to make - // comparisons easier. - if ($commentText[0] === '@') { - $commentText = substr($commentText, 1); - $commentTextLower = strtolower($commentText); - } - - // If there is a comment on the end, strip it off. - $commentStart = strpos($commentTextLower, ' --'); - if ($commentStart !== false) { - $commentText = substr($commentText, 0, $commentStart); - $commentTextLower = strtolower($commentText); - } - - // If this comment is the only thing on the line, it tells us - // to ignore the following line. If the line contains other content - // then we are just ignoring this one single line. - $lineHasOtherContent = false; - $lineHasOtherTokens = false; - if ($i > 0) { - for ($prev = ($i - 1); $prev > 0; $prev--) { - if ($this->tokens[$prev]['line'] !== $this->tokens[$i]['line']) { - // Changed lines. - break; - } - - if ($this->tokens[$prev]['code'] === T_WHITESPACE - || $this->tokens[$prev]['code'] === T_DOC_COMMENT_WHITESPACE - || ($this->tokens[$prev]['code'] === T_INLINE_HTML - && trim($this->tokens[$prev]['content']) === '') - ) { - continue; - } - - $lineHasOtherTokens = true; - - if ($this->tokens[$prev]['code'] === T_OPEN_TAG - || $this->tokens[$prev]['code'] === T_DOC_COMMENT_STAR - ) { - continue; - } - - $lineHasOtherContent = true; - break; - }//end for - - $changedLines = false; - for ($next = $i; $next < $this->numTokens; $next++) { - if ($changedLines === true) { - // Changed lines. - break; - } - - if (isset($this->knownLengths[$this->tokens[$next]['code']]) === false - && strpos($this->tokens[$next]['content'], $this->eolChar) !== false - ) { - // Last token on the current line. - $changedLines = true; - } - - if ($next === $i) { - continue; - } - - if ($this->tokens[$next]['code'] === T_WHITESPACE - || $this->tokens[$next]['code'] === T_DOC_COMMENT_WHITESPACE - || ($this->tokens[$next]['code'] === T_INLINE_HTML - && trim($this->tokens[$next]['content']) === '') - ) { - continue; - } - - $lineHasOtherTokens = true; - - if ($this->tokens[$next]['code'] === T_CLOSE_TAG) { - continue; - } - - $lineHasOtherContent = true; - break; - }//end for - }//end if - - if (substr($commentTextLower, 0, 9) === 'phpcs:set') { - // Ignore standards for complete lines that change sniff settings. - if ($lineHasOtherTokens === false) { - $this->ignoredLines[$this->tokens[$i]['line']] = ['.all' => true]; - } - - // Need to maintain case here, to get the correct sniff code. - $parts = explode(' ', substr($commentText, 10)); - if (count($parts) >= 2) { - $sniffParts = explode('.', $parts[0]); - if (count($sniffParts) >= 3) { - $this->tokens[$i]['sniffCode'] = array_shift($parts); - $this->tokens[$i]['sniffProperty'] = array_shift($parts); - $this->tokens[$i]['sniffPropertyValue'] = rtrim(implode(' ', $parts), " */\r\n"); - } - } - - $this->tokens[$i]['code'] = T_PHPCS_SET; - $this->tokens[$i]['type'] = 'T_PHPCS_SET'; - } else if (substr($commentTextLower, 0, 16) === 'phpcs:ignorefile') { - // The whole file will be ignored, but at least set the correct token. - $this->tokens[$i]['code'] = T_PHPCS_IGNORE_FILE; - $this->tokens[$i]['type'] = 'T_PHPCS_IGNORE_FILE'; - } else if (substr($commentTextLower, 0, 13) === 'phpcs:disable') { - if ($lineHasOtherContent === false) { - // Completely ignore the comment line. - $this->ignoredLines[$this->tokens[$i]['line']] = ['.all' => true]; - } - - if ($ignoring === null) { - $ignoring = []; - } - - $disabledSniffs = []; - - $additionalText = substr($commentText, 14); - if (empty($additionalText) === true) { - $ignoring = ['.all' => true]; - } else { - $parts = explode(',', $additionalText); - foreach ($parts as $sniffCode) { - $sniffCode = trim($sniffCode); - $disabledSniffs[$sniffCode] = true; - $ignoring[$sniffCode] = true; - - // This newly disabled sniff might be disabling an existing - // enabled exception that we are tracking. - if (isset($ignoring['.except']) === true) { - foreach (array_keys($ignoring['.except']) as $ignoredSniffCode) { - if ($ignoredSniffCode === $sniffCode - || strpos($ignoredSniffCode, $sniffCode.'.') === 0 - ) { - unset($ignoring['.except'][$ignoredSniffCode]); - } - } - - if (empty($ignoring['.except']) === true) { - unset($ignoring['.except']); - } - } - }//end foreach - }//end if - - $this->tokens[$i]['code'] = T_PHPCS_DISABLE; - $this->tokens[$i]['type'] = 'T_PHPCS_DISABLE'; - $this->tokens[$i]['sniffCodes'] = $disabledSniffs; - } else if (substr($commentTextLower, 0, 12) === 'phpcs:enable') { - if ($ignoring !== null) { - $enabledSniffs = []; - - $additionalText = substr($commentText, 13); - if (empty($additionalText) === true) { - $ignoring = null; - } else { - $parts = explode(',', $additionalText); - foreach ($parts as $sniffCode) { - $sniffCode = trim($sniffCode); - $enabledSniffs[$sniffCode] = true; - - // This new enabled sniff might remove previously disabled - // sniffs if it is actually a standard or category of sniffs. - foreach (array_keys($ignoring) as $ignoredSniffCode) { - if ($ignoredSniffCode === $sniffCode - || strpos($ignoredSniffCode, $sniffCode.'.') === 0 - ) { - unset($ignoring[$ignoredSniffCode]); - } - } - - // This new enabled sniff might be able to clear up - // previously enabled sniffs if it is actually a standard or - // category of sniffs. - if (isset($ignoring['.except']) === true) { - foreach (array_keys($ignoring['.except']) as $ignoredSniffCode) { - if ($ignoredSniffCode === $sniffCode - || strpos($ignoredSniffCode, $sniffCode.'.') === 0 - ) { - unset($ignoring['.except'][$ignoredSniffCode]); - } - } - } - }//end foreach - - if (empty($ignoring) === true) { - $ignoring = null; - } else { - if (isset($ignoring['.except']) === true) { - $ignoring['.except'] += $enabledSniffs; - } else { - $ignoring['.except'] = $enabledSniffs; - } - } - }//end if - - if ($lineHasOtherContent === false) { - // Completely ignore the comment line. - $this->ignoredLines[$this->tokens[$i]['line']] = ['.all' => true]; - } else { - // The comment is on the same line as the code it is ignoring, - // so respect the new ignore rules. - $this->ignoredLines[$this->tokens[$i]['line']] = $ignoring; - } - - $this->tokens[$i]['sniffCodes'] = $enabledSniffs; - }//end if - - $this->tokens[$i]['code'] = T_PHPCS_ENABLE; - $this->tokens[$i]['type'] = 'T_PHPCS_ENABLE'; - } else if (substr($commentTextLower, 0, 12) === 'phpcs:ignore') { - $ignoreRules = []; - - $additionalText = substr($commentText, 13); - if (empty($additionalText) === true) { - $ignoreRules = ['.all' => true]; - } else { - $parts = explode(',', $additionalText); - foreach ($parts as $sniffCode) { - $ignoreRules[trim($sniffCode)] = true; - } - } - - $this->tokens[$i]['code'] = T_PHPCS_IGNORE; - $this->tokens[$i]['type'] = 'T_PHPCS_IGNORE'; - $this->tokens[$i]['sniffCodes'] = $ignoreRules; - - if ($ignoring !== null) { - $ignoreRules += $ignoring; - } - - if ($lineHasOtherContent === false) { - // Completely ignore the comment line, and set the following - // line to include the ignore rules we've set. - $this->ignoredLines[$this->tokens[$i]['line']] = ['.all' => true]; - $this->ignoredLines[($this->tokens[$i]['line'] + 1)] = $ignoreRules; - } else { - // The comment is on the same line as the code it is ignoring, - // so respect the ignore rules it set. - $this->ignoredLines[$this->tokens[$i]['line']] = $ignoreRules; - } - }//end if - }//end if - }//end if - - if ($ignoring !== null && isset($this->ignoredLines[$this->tokens[$i]['line']]) === false) { - $this->ignoredLines[$this->tokens[$i]['line']] = $ignoring; - } - }//end for - - // If annotations are being ignored, we clear out all the ignore rules - // but leave the annotations tokenized as normal. - if ($checkAnnotations === false) { - $this->ignoredLines = []; - } - - }//end createPositionMap() - - - /** - * Replaces tabs in original token content with spaces. - * - * Each tab can represent between 1 and $config->tabWidth spaces, - * so this cannot be a straight string replace. The original content - * is placed into an orig_content index and the new token length is also - * set in the length index. - * - * @param array $token The token to replace tabs inside. - * @param string $prefix The character to use to represent the start of a tab. - * @param string $padding The character to use to represent the end of a tab. - * @param int $tabWidth The number of spaces each tab represents. - * - * @return void - */ - public function replaceTabsInToken(&$token, $prefix=' ', $padding=' ', $tabWidth=null) - { - $checkEncoding = false; - if (function_exists('iconv_strlen') === true) { - $checkEncoding = true; - } - - $currColumn = $token['column']; - if ($tabWidth === null) { - $tabWidth = $this->config->tabWidth; - if ($tabWidth === 0) { - $tabWidth = 1; - } - } - - if (rtrim($token['content'], "\t") === '') { - // String only contains tabs, so we can shortcut the process. - $numTabs = strlen($token['content']); - - $firstTabSize = ($tabWidth - (($currColumn - 1) % $tabWidth)); - $length = ($firstTabSize + ($tabWidth * ($numTabs - 1))); - $newContent = $prefix.str_repeat($padding, ($length - 1)); - } else { - // We need to determine the length of each tab. - $tabs = explode("\t", $token['content']); - - $numTabs = (count($tabs) - 1); - $tabNum = 0; - $newContent = ''; - $length = 0; - - foreach ($tabs as $content) { - if ($content !== '') { - $newContent .= $content; - if ($checkEncoding === true) { - // Not using ASCII encoding, so take a bit more care. - $oldLevel = error_reporting(); - error_reporting(0); - $contentLength = iconv_strlen($content, $this->config->encoding); - error_reporting($oldLevel); - if ($contentLength === false) { - // String contained invalid characters, so revert to default. - $contentLength = strlen($content); - } - } else { - $contentLength = strlen($content); - } - - $currColumn += $contentLength; - $length += $contentLength; - } - - // The last piece of content does not have a tab after it. - if ($tabNum === $numTabs) { - break; - } - - // Process the tab that comes after the content. - $tabNum++; - - // Move the pointer to the next tab stop. - $pad = ($tabWidth - ($currColumn + $tabWidth - 1) % $tabWidth); - $currColumn += $pad; - $length += $pad; - $newContent .= $prefix.str_repeat($padding, ($pad - 1)); - }//end foreach - }//end if - - $token['orig_content'] = $token['content']; - $token['content'] = $newContent; - $token['length'] = $length; - - }//end replaceTabsInToken() - - - /** - * Creates a map of brackets positions. - * - * @return void - */ - private function createTokenMap() - { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t*** START TOKEN MAP ***".PHP_EOL; - } - - $squareOpeners = []; - $curlyOpeners = []; - $this->numTokens = count($this->tokens); - - $openers = []; - $openOwner = null; - - for ($i = 0; $i < $this->numTokens; $i++) { - /* - Parenthesis mapping. - */ - - if (isset(Tokens::$parenthesisOpeners[$this->tokens[$i]['code']]) === true) { - $this->tokens[$i]['parenthesis_opener'] = null; - $this->tokens[$i]['parenthesis_closer'] = null; - $this->tokens[$i]['parenthesis_owner'] = $i; - $openOwner = $i; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", (count($openers) + 1)); - echo "=> Found parenthesis owner at $i".PHP_EOL; - } - } else if ($this->tokens[$i]['code'] === T_OPEN_PARENTHESIS) { - $openers[] = $i; - $this->tokens[$i]['parenthesis_opener'] = $i; - if ($openOwner !== null) { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", count($openers)); - echo "=> Found parenthesis opener at $i for $openOwner".PHP_EOL; - } - - $this->tokens[$openOwner]['parenthesis_opener'] = $i; - $this->tokens[$i]['parenthesis_owner'] = $openOwner; - $openOwner = null; - } else if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", count($openers)); - echo "=> Found unowned parenthesis opener at $i".PHP_EOL; - } - } else if ($this->tokens[$i]['code'] === T_CLOSE_PARENTHESIS) { - // Did we set an owner for this set of parenthesis? - $numOpeners = count($openers); - if ($numOpeners !== 0) { - $opener = array_pop($openers); - if (isset($this->tokens[$opener]['parenthesis_owner']) === true) { - $owner = $this->tokens[$opener]['parenthesis_owner']; - - $this->tokens[$owner]['parenthesis_closer'] = $i; - $this->tokens[$i]['parenthesis_owner'] = $owner; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", (count($openers) + 1)); - echo "=> Found parenthesis closer at $i for $owner".PHP_EOL; - } - } else if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", (count($openers) + 1)); - echo "=> Found unowned parenthesis closer at $i for $opener".PHP_EOL; - } - - $this->tokens[$i]['parenthesis_opener'] = $opener; - $this->tokens[$i]['parenthesis_closer'] = $i; - $this->tokens[$opener]['parenthesis_closer'] = $i; - }//end if - } else if ($this->tokens[$i]['code'] === T_ATTRIBUTE) { - $openers[] = $i; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", count($openers)); - echo "=> Found attribute opener at $i".PHP_EOL; - } - - $this->tokens[$i]['attribute_opener'] = $i; - $this->tokens[$i]['attribute_closer'] = null; - } else if ($this->tokens[$i]['code'] === T_ATTRIBUTE_END) { - $numOpeners = count($openers); - if ($numOpeners !== 0) { - $opener = array_pop($openers); - if (isset($this->tokens[$opener]['attribute_opener']) === true) { - $this->tokens[$opener]['attribute_closer'] = $i; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", (count($openers) + 1)); - echo "=> Found attribute closer at $i for $opener".PHP_EOL; - } - - for ($x = ($opener + 1); $x <= $i; ++$x) { - if (isset($this->tokens[$x]['attribute_closer']) === true) { - continue; - } - - $this->tokens[$x]['attribute_opener'] = $opener; - $this->tokens[$x]['attribute_closer'] = $i; - } - } else if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", (count($openers) + 1)); - echo "=> Found unowned attribute closer at $i for $opener".PHP_EOL; - } - }//end if - }//end if - - /* - Bracket mapping. - */ - - switch ($this->tokens[$i]['code']) { - case T_OPEN_SQUARE_BRACKET: - $squareOpeners[] = $i; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", count($squareOpeners)); - echo str_repeat("\t", count($curlyOpeners)); - echo "=> Found square bracket opener at $i".PHP_EOL; - } - break; - case T_OPEN_CURLY_BRACKET: - if (isset($this->tokens[$i]['scope_closer']) === false) { - $curlyOpeners[] = $i; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", count($squareOpeners)); - echo str_repeat("\t", count($curlyOpeners)); - echo "=> Found curly bracket opener at $i".PHP_EOL; - } - } - break; - case T_CLOSE_SQUARE_BRACKET: - if (empty($squareOpeners) === false) { - $opener = array_pop($squareOpeners); - $this->tokens[$i]['bracket_opener'] = $opener; - $this->tokens[$i]['bracket_closer'] = $i; - $this->tokens[$opener]['bracket_opener'] = $opener; - $this->tokens[$opener]['bracket_closer'] = $i; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", count($squareOpeners)); - echo str_repeat("\t", count($curlyOpeners)); - echo "\t=> Found square bracket closer at $i for $opener".PHP_EOL; - } - } - break; - case T_CLOSE_CURLY_BRACKET: - if (empty($curlyOpeners) === false - && isset($this->tokens[$i]['scope_opener']) === false - ) { - $opener = array_pop($curlyOpeners); - $this->tokens[$i]['bracket_opener'] = $opener; - $this->tokens[$i]['bracket_closer'] = $i; - $this->tokens[$opener]['bracket_opener'] = $opener; - $this->tokens[$opener]['bracket_closer'] = $i; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", count($squareOpeners)); - echo str_repeat("\t", count($curlyOpeners)); - echo "\t=> Found curly bracket closer at $i for $opener".PHP_EOL; - } - } - break; - default: - continue 2; - }//end switch - }//end for - - // Cleanup for any openers that we didn't find closers for. - // This typically means there was a syntax error breaking things. - foreach ($openers as $opener) { - unset($this->tokens[$opener]['parenthesis_opener']); - unset($this->tokens[$opener]['parenthesis_owner']); - } - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t*** END TOKEN MAP ***".PHP_EOL; - } - - }//end createTokenMap() - - - /** - * Creates a map for the parenthesis tokens that surround other tokens. - * - * @return void - */ - private function createParenthesisNestingMap() - { - $map = []; - for ($i = 0; $i < $this->numTokens; $i++) { - if (isset($this->tokens[$i]['parenthesis_opener']) === true - && $i === $this->tokens[$i]['parenthesis_opener'] - ) { - if (empty($map) === false) { - $this->tokens[$i]['nested_parenthesis'] = $map; - } - - if (isset($this->tokens[$i]['parenthesis_closer']) === true) { - $map[$this->tokens[$i]['parenthesis_opener']] - = $this->tokens[$i]['parenthesis_closer']; - } - } else if (isset($this->tokens[$i]['parenthesis_closer']) === true - && $i === $this->tokens[$i]['parenthesis_closer'] - ) { - array_pop($map); - if (empty($map) === false) { - $this->tokens[$i]['nested_parenthesis'] = $map; - } - } else { - if (empty($map) === false) { - $this->tokens[$i]['nested_parenthesis'] = $map; - } - }//end if - }//end for - - }//end createParenthesisNestingMap() - - - /** - * Creates a scope map of tokens that open scopes. - * - * @return void - * @see recurseScopeMap() - */ - private function createScopeMap() - { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t*** START SCOPE MAP ***".PHP_EOL; - } - - for ($i = 0; $i < $this->numTokens; $i++) { - // Check to see if the current token starts a new scope. - if (isset($this->scopeOpeners[$this->tokens[$i]['code']]) === true) { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $this->tokens[$i]['type']; - $content = Common::prepareForOutput($this->tokens[$i]['content']); - echo "\tStart scope map at $i:$type => $content".PHP_EOL; - } - - if (isset($this->tokens[$i]['scope_condition']) === true) { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t* already processed, skipping *".PHP_EOL; - } - - continue; - } - - $i = $this->recurseScopeMap($i); - }//end if - }//end for - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t*** END SCOPE MAP ***".PHP_EOL; - } - - }//end createScopeMap() - - - /** - * Recurses though the scope openers to build a scope map. - * - * @param int $stackPtr The position in the stack of the token that - * opened the scope (eg. an IF token or FOR token). - * @param int $depth How many scope levels down we are. - * @param int $ignore How many curly braces we are ignoring. - * - * @return int The position in the stack that closed the scope. - * @throws \PHP_CodeSniffer\Exceptions\TokenizerException If the nesting level gets too deep. - */ - private function recurseScopeMap($stackPtr, $depth=1, &$ignore=0) - { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo "=> Begin scope map recursion at token $stackPtr with depth $depth".PHP_EOL; - } - - $opener = null; - $currType = $this->tokens[$stackPtr]['code']; - $startLine = $this->tokens[$stackPtr]['line']; - - // We will need this to restore the value if we end up - // returning a token ID that causes our calling function to go back - // over already ignored braces. - $originalIgnore = $ignore; - - // If the start token for this scope opener is the same as - // the scope token, we have already found our opener. - if (isset($this->scopeOpeners[$currType]['start'][$currType]) === true) { - $opener = $stackPtr; - } - - for ($i = ($stackPtr + 1); $i < $this->numTokens; $i++) { - $tokenType = $this->tokens[$i]['code']; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $this->tokens[$i]['type']; - $line = $this->tokens[$i]['line']; - $content = Common::prepareForOutput($this->tokens[$i]['content']); - - echo str_repeat("\t", $depth); - echo "Process token $i on line $line ["; - if ($opener !== null) { - echo "opener:$opener;"; - } - - if ($ignore > 0) { - echo "ignore=$ignore;"; - } - - echo "]: $type => $content".PHP_EOL; - }//end if - - // Very special case for IF statements in PHP that can be defined without - // scope tokens. E.g., if (1) 1; 1 ? (1 ? 1 : 1) : 1; - // If an IF statement below this one has an opener but no - // keyword, the opener will be incorrectly assigned to this IF statement. - // The same case also applies to USE statements, which don't have to have - // openers, so a following USE statement can cause an incorrect brace match. - if (($currType === T_IF || $currType === T_ELSE || $currType === T_USE) - && $opener === null - && ($this->tokens[$i]['code'] === T_SEMICOLON - || $this->tokens[$i]['code'] === T_CLOSE_TAG) - ) { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $this->tokens[$stackPtr]['type']; - echo str_repeat("\t", $depth); - if ($this->tokens[$i]['code'] === T_SEMICOLON) { - $closerType = 'semicolon'; - } else { - $closerType = 'close tag'; - } - - echo "=> Found $closerType before scope opener for $stackPtr:$type, bailing".PHP_EOL; - } - - return $i; - } - - // Special case for PHP control structures that have no braces. - // If we find a curly brace closer before we find the opener, - // we're not going to find an opener. That closer probably belongs to - // a control structure higher up. - if ($opener === null - && $ignore === 0 - && $tokenType === T_CLOSE_CURLY_BRACKET - && isset($this->scopeOpeners[$currType]['end'][$tokenType]) === true - ) { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $this->tokens[$stackPtr]['type']; - echo str_repeat("\t", $depth); - echo "=> Found curly brace closer before scope opener for $stackPtr:$type, bailing".PHP_EOL; - } - - return ($i - 1); - } - - if ($opener !== null - && (isset($this->tokens[$i]['scope_opener']) === false - || $this->scopeOpeners[$this->tokens[$stackPtr]['code']]['shared'] === true) - && isset($this->scopeOpeners[$currType]['end'][$tokenType]) === true - ) { - if ($ignore > 0 && $tokenType === T_CLOSE_CURLY_BRACKET) { - // The last opening bracket must have been for a string - // offset or alike, so let's ignore it. - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo '* finished ignoring curly brace *'.PHP_EOL; - } - - $ignore--; - continue; - } else if ($this->tokens[$opener]['code'] === T_OPEN_CURLY_BRACKET - && $tokenType !== T_CLOSE_CURLY_BRACKET - ) { - // The opener is a curly bracket so the closer must be a curly bracket as well. - // We ignore this closer to handle cases such as T_ELSE or T_ELSEIF being considered - // a closer of T_IF when it should not. - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $this->tokens[$stackPtr]['type']; - echo str_repeat("\t", $depth); - echo "=> Ignoring non-curly scope closer for $stackPtr:$type".PHP_EOL; - } - } else { - $scopeCloser = $i; - $todo = [ - $stackPtr, - $opener, - ]; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $this->tokens[$stackPtr]['type']; - $closerType = $this->tokens[$scopeCloser]['type']; - echo str_repeat("\t", $depth); - echo "=> Found scope closer ($scopeCloser:$closerType) for $stackPtr:$type".PHP_EOL; - } - - $validCloser = true; - if (($this->tokens[$stackPtr]['code'] === T_IF || $this->tokens[$stackPtr]['code'] === T_ELSEIF) - && ($tokenType === T_ELSE || $tokenType === T_ELSEIF) - ) { - // To be a closer, this token must have an opener. - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo "* closer needs to be tested *".PHP_EOL; - } - - $i = self::recurseScopeMap($i, ($depth + 1), $ignore); - - if (isset($this->tokens[$scopeCloser]['scope_opener']) === false) { - $validCloser = false; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo "* closer is not valid (no opener found) *".PHP_EOL; - } - } else if ($this->tokens[$this->tokens[$scopeCloser]['scope_opener']]['code'] !== $this->tokens[$opener]['code']) { - $validCloser = false; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - $type = $this->tokens[$this->tokens[$scopeCloser]['scope_opener']]['type']; - $openerType = $this->tokens[$opener]['type']; - echo "* closer is not valid (mismatched opener type; $type != $openerType) *".PHP_EOL; - } - } else if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo "* closer was valid *".PHP_EOL; - } - } else { - // The closer was not processed, so we need to - // complete that token as well. - $todo[] = $scopeCloser; - }//end if - - if ($validCloser === true) { - foreach ($todo as $token) { - $this->tokens[$token]['scope_condition'] = $stackPtr; - $this->tokens[$token]['scope_opener'] = $opener; - $this->tokens[$token]['scope_closer'] = $scopeCloser; - } - - if ($this->scopeOpeners[$this->tokens[$stackPtr]['code']]['shared'] === true) { - // As we are going back to where we started originally, restore - // the ignore value back to its original value. - $ignore = $originalIgnore; - return $opener; - } else if ($scopeCloser === $i - && isset($this->scopeOpeners[$tokenType]) === true - ) { - // Unset scope_condition here or else the token will appear to have - // already been processed, and it will be skipped. Normally we want that, - // but in this case, the token is both a closer and an opener, so - // it needs to act like an opener. This is also why we return the - // token before this one; so the closer has a chance to be processed - // a second time, but as an opener. - unset($this->tokens[$scopeCloser]['scope_condition']); - return ($i - 1); - } else { - return $i; - } - } else { - continue; - }//end if - }//end if - }//end if - - // Is this an opening condition ? - if (isset($this->scopeOpeners[$tokenType]) === true) { - if ($opener === null) { - if ($tokenType === T_USE) { - // PHP use keywords are special because they can be - // used as blocks but also inline in function definitions. - // So if we find them nested inside another opener, just skip them. - continue; - } - - if ($tokenType === T_NAMESPACE) { - // PHP namespace keywords are special because they can be - // used as blocks but also inline as operators. - // So if we find them nested inside another opener, just skip them. - continue; - } - - if ($tokenType === T_FUNCTION - && $this->tokens[$stackPtr]['code'] !== T_FUNCTION - ) { - // Probably a closure, so process it manually. - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $this->tokens[$stackPtr]['type']; - echo str_repeat("\t", $depth); - echo "=> Found function before scope opener for $stackPtr:$type, processing manually".PHP_EOL; - } - - if (isset($this->tokens[$i]['scope_closer']) === true) { - // We've already processed this closure. - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo '* already processed, skipping *'.PHP_EOL; - } - - $i = $this->tokens[$i]['scope_closer']; - continue; - } - - $i = self::recurseScopeMap($i, ($depth + 1), $ignore); - continue; - }//end if - - if ($tokenType === T_CLASS) { - // Probably an anonymous class inside another anonymous class, - // so process it manually. - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $this->tokens[$stackPtr]['type']; - echo str_repeat("\t", $depth); - echo "=> Found class before scope opener for $stackPtr:$type, processing manually".PHP_EOL; - } - - if (isset($this->tokens[$i]['scope_closer']) === true) { - // We've already processed this anon class. - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo '* already processed, skipping *'.PHP_EOL; - } - - $i = $this->tokens[$i]['scope_closer']; - continue; - } - - $i = self::recurseScopeMap($i, ($depth + 1), $ignore); - continue; - }//end if - - // Found another opening condition but still haven't - // found our opener, so we are never going to find one. - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $this->tokens[$stackPtr]['type']; - echo str_repeat("\t", $depth); - echo "=> Found new opening condition before scope opener for $stackPtr:$type, "; - } - - if (($this->tokens[$stackPtr]['code'] === T_IF - || $this->tokens[$stackPtr]['code'] === T_ELSEIF - || $this->tokens[$stackPtr]['code'] === T_ELSE) - && ($this->tokens[$i]['code'] === T_ELSE - || $this->tokens[$i]['code'] === T_ELSEIF) - ) { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "continuing".PHP_EOL; - } - - return ($i - 1); - } else { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "backtracking".PHP_EOL; - } - - return $stackPtr; - } - }//end if - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo '* token is an opening condition *'.PHP_EOL; - } - - $isShared = ($this->scopeOpeners[$tokenType]['shared'] === true); - - if (isset($this->tokens[$i]['scope_condition']) === true) { - // We've been here before. - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo '* already processed, skipping *'.PHP_EOL; - } - - if ($isShared === false - && isset($this->tokens[$i]['scope_closer']) === true - ) { - $i = $this->tokens[$i]['scope_closer']; - } - - continue; - } else if ($currType === $tokenType - && $isShared === false - && $opener === null - ) { - // We haven't yet found our opener, but we have found another - // scope opener which is the same type as us, and we don't - // share openers, so we will never find one. - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo '* it was another token\'s opener, bailing *'.PHP_EOL; - } - - return $stackPtr; - } else { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo '* searching for opener *'.PHP_EOL; - } - - if (isset($this->scopeOpeners[$tokenType]['end'][T_CLOSE_CURLY_BRACKET]) === true) { - $oldIgnore = $ignore; - $ignore = 0; - } - - // PHP has a max nesting level for functions. Stop before we hit that limit - // because too many loops means we've run into trouble anyway. - if ($depth > 50) { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo '* reached maximum nesting level; aborting *'.PHP_EOL; - } - - throw new TokenizerException('Maximum nesting level reached; file could not be processed'); - } - - $oldDepth = $depth; - if ($isShared === true - && isset($this->scopeOpeners[$tokenType]['with'][$currType]) === true - ) { - // Don't allow the depth to increment because this is - // possibly not a true nesting if we are sharing our closer. - // This can happen, for example, when a SWITCH has a large - // number of CASE statements with the same shared BREAK. - $depth--; - } - - $i = self::recurseScopeMap($i, ($depth + 1), $ignore); - $depth = $oldDepth; - - if (isset($this->scopeOpeners[$tokenType]['end'][T_CLOSE_CURLY_BRACKET]) === true) { - $ignore = $oldIgnore; - } - }//end if - }//end if - - if (isset($this->scopeOpeners[$currType]['start'][$tokenType]) === true - && $opener === null - ) { - if ($tokenType === T_OPEN_CURLY_BRACKET) { - if (isset($this->tokens[$stackPtr]['parenthesis_closer']) === true - && $i < $this->tokens[$stackPtr]['parenthesis_closer'] - ) { - // We found a curly brace inside the condition of the - // current scope opener, so it must be a string offset. - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo '* ignoring curly brace inside condition *'.PHP_EOL; - } - - $ignore++; - } else { - // Make sure this is actually an opener and not a - // string offset (e.g., $var{0}). - for ($x = ($i - 1); $x > 0; $x--) { - if (isset(Tokens::$emptyTokens[$this->tokens[$x]['code']]) === true) { - continue; - } else { - // If the first non-whitespace/comment token looks like this - // brace is a string offset, or this brace is mid-way through - // a new statement, it isn't a scope opener. - $disallowed = Tokens::$assignmentTokens; - $disallowed += [ - T_DOLLAR => true, - T_VARIABLE => true, - T_OBJECT_OPERATOR => true, - T_NULLSAFE_OBJECT_OPERATOR => true, - T_COMMA => true, - T_OPEN_PARENTHESIS => true, - ]; - - if (isset($disallowed[$this->tokens[$x]['code']]) === true) { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo '* ignoring curly brace *'.PHP_EOL; - } - - $ignore++; - } - - break; - }//end if - }//end for - }//end if - }//end if - - if ($ignore === 0 || $tokenType !== T_OPEN_CURLY_BRACKET) { - $openerNested = isset($this->tokens[$i]['nested_parenthesis']); - $ownerNested = isset($this->tokens[$stackPtr]['nested_parenthesis']); - - if (($openerNested === true && $ownerNested === false) - || ($openerNested === false && $ownerNested === true) - || ($openerNested === true - && $this->tokens[$i]['nested_parenthesis'] !== $this->tokens[$stackPtr]['nested_parenthesis']) - ) { - // We found the a token that looks like the opener, but it's nested differently. - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $this->tokens[$i]['type']; - echo str_repeat("\t", $depth); - echo "* ignoring possible opener $i:$type as nested parenthesis don't match *".PHP_EOL; - } - } else { - // We found the opening scope token for $currType. - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $this->tokens[$stackPtr]['type']; - echo str_repeat("\t", $depth); - echo "=> Found scope opener for $stackPtr:$type".PHP_EOL; - } - - $opener = $i; - } - }//end if - } else if ($tokenType === T_SEMICOLON - && $opener === null - && (isset($this->tokens[$stackPtr]['parenthesis_closer']) === false - || $i > $this->tokens[$stackPtr]['parenthesis_closer']) - ) { - // Found the end of a statement but still haven't - // found our opener, so we are never going to find one. - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $this->tokens[$stackPtr]['type']; - echo str_repeat("\t", $depth); - echo "=> Found end of statement before scope opener for $stackPtr:$type, continuing".PHP_EOL; - } - - return ($i - 1); - } else if ($tokenType === T_OPEN_PARENTHESIS) { - if (isset($this->tokens[$i]['parenthesis_owner']) === true) { - $owner = $this->tokens[$i]['parenthesis_owner']; - if (isset(Tokens::$scopeOpeners[$this->tokens[$owner]['code']]) === true - && isset($this->tokens[$i]['parenthesis_closer']) === true - ) { - // If we get into here, then we opened a parenthesis for - // a scope (eg. an if or else if) so we need to update the - // start of the line so that when we check to see - // if the closing parenthesis is more than n lines away from - // the statement, we check from the closing parenthesis. - $startLine = $this->tokens[$this->tokens[$i]['parenthesis_closer']]['line']; - } - } - } else if ($tokenType === T_OPEN_CURLY_BRACKET && $opener !== null) { - // We opened something that we don't have a scope opener for. - // Examples of this are curly brackets for string offsets etc. - // We want to ignore this so that we don't have an invalid scope - // map. - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo '* ignoring curly brace *'.PHP_EOL; - } - - $ignore++; - } else if ($tokenType === T_CLOSE_CURLY_BRACKET && $ignore > 0) { - // We found the end token for the opener we were ignoring. - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo '* finished ignoring curly brace *'.PHP_EOL; - } - - $ignore--; - } else if ($opener === null - && isset($this->scopeOpeners[$currType]) === true - ) { - // If we still haven't found the opener after 30 lines, - // we're not going to find it, unless we know it requires - // an opener (in which case we better keep looking) or the last - // token was empty (in which case we'll just confirm there is - // more code in this file and not just a big comment). - if ($this->tokens[$i]['line'] >= ($startLine + 30) - && isset(Tokens::$emptyTokens[$this->tokens[($i - 1)]['code']]) === false - ) { - if ($this->scopeOpeners[$currType]['strict'] === true) { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $this->tokens[$stackPtr]['type']; - $lines = ($this->tokens[$i]['line'] - $startLine); - echo str_repeat("\t", $depth); - echo "=> Still looking for $stackPtr:$type scope opener after $lines lines".PHP_EOL; - } - } else { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $this->tokens[$stackPtr]['type']; - echo str_repeat("\t", $depth); - echo "=> Couldn't find scope opener for $stackPtr:$type, bailing".PHP_EOL; - } - - return $stackPtr; - } - } - } else if ($opener !== null - && $tokenType !== T_BREAK - && isset($this->endScopeTokens[$tokenType]) === true - ) { - if (isset($this->tokens[$i]['scope_condition']) === false) { - if ($ignore > 0) { - // We found the end token for the opener we were ignoring. - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", $depth); - echo '* finished ignoring curly brace *'.PHP_EOL; - } - - $ignore--; - } else { - // We found a token that closes the scope but it doesn't - // have a condition, so it belongs to another token and - // our token doesn't have a closer, so pretend this is - // the closer. - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $this->tokens[$stackPtr]['type']; - echo str_repeat("\t", $depth); - echo "=> Found (unexpected) scope closer for $stackPtr:$type".PHP_EOL; - } - - foreach ([$stackPtr, $opener] as $token) { - $this->tokens[$token]['scope_condition'] = $stackPtr; - $this->tokens[$token]['scope_opener'] = $opener; - $this->tokens[$token]['scope_closer'] = $i; - } - - return ($i - 1); - }//end if - }//end if - }//end if - }//end for - - return $stackPtr; - - }//end recurseScopeMap() - - - /** - * Constructs the level map. - * - * The level map adds a 'level' index to each token which indicates the - * depth that a token within a set of scope blocks. It also adds a - * 'conditions' index which is an array of the scope conditions that opened - * each of the scopes - position 0 being the first scope opener. - * - * @return void - */ - private function createLevelMap() - { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t*** START LEVEL MAP ***".PHP_EOL; - } - - $this->numTokens = count($this->tokens); - $level = 0; - $conditions = []; - $lastOpener = null; - $openers = []; - - for ($i = 0; $i < $this->numTokens; $i++) { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $this->tokens[$i]['type']; - $line = $this->tokens[$i]['line']; - $len = $this->tokens[$i]['length']; - $col = $this->tokens[$i]['column']; - - $content = Common::prepareForOutput($this->tokens[$i]['content']); - - echo str_repeat("\t", ($level + 1)); - echo "Process token $i on line $line [col:$col;len:$len;lvl:$level;"; - if (empty($conditions) !== true) { - $conditionString = 'conds;'; - foreach ($conditions as $condition) { - $conditionString .= Tokens::tokenName($condition).','; - } - - echo rtrim($conditionString, ',').';'; - } - - echo "]: $type => $content".PHP_EOL; - }//end if - - $this->tokens[$i]['level'] = $level; - $this->tokens[$i]['conditions'] = $conditions; - - if (isset($this->tokens[$i]['scope_condition']) === true) { - // Check to see if this token opened the scope. - if ($this->tokens[$i]['scope_opener'] === $i) { - $stackPtr = $this->tokens[$i]['scope_condition']; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $this->tokens[$stackPtr]['type']; - echo str_repeat("\t", ($level + 1)); - echo "=> Found scope opener for $stackPtr:$type".PHP_EOL; - } - - $stackPtr = $this->tokens[$i]['scope_condition']; - - // If we find a scope opener that has a shared closer, - // then we need to go back over the condition map that we - // just created and fix ourselves as we just added some - // conditions where there was none. This happens for T_CASE - // statements that are using the same break statement. - if ($lastOpener !== null && $this->tokens[$lastOpener]['scope_closer'] === $this->tokens[$i]['scope_closer']) { - // This opener shares its closer with the previous opener, - // but we still need to check if the two openers share their - // closer with each other directly (like CASE and DEFAULT) - // or if they are just sharing because one doesn't have a - // closer (like CASE with no BREAK using a SWITCHes closer). - $thisType = $this->tokens[$this->tokens[$i]['scope_condition']]['code']; - $opener = $this->tokens[$lastOpener]['scope_condition']; - - $isShared = isset($this->scopeOpeners[$thisType]['with'][$this->tokens[$opener]['code']]); - - reset($this->scopeOpeners[$thisType]['end']); - reset($this->scopeOpeners[$this->tokens[$opener]['code']]['end']); - $sameEnd = (current($this->scopeOpeners[$thisType]['end']) === current($this->scopeOpeners[$this->tokens[$opener]['code']]['end'])); - - if ($isShared === true && $sameEnd === true) { - $badToken = $opener; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $this->tokens[$badToken]['type']; - echo str_repeat("\t", ($level + 1)); - echo "* shared closer, cleaning up $badToken:$type *".PHP_EOL; - } - - for ($x = $this->tokens[$i]['scope_condition']; $x <= $i; $x++) { - $oldConditions = $this->tokens[$x]['conditions']; - $oldLevel = $this->tokens[$x]['level']; - $this->tokens[$x]['level']--; - unset($this->tokens[$x]['conditions'][$badToken]); - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $this->tokens[$x]['type']; - $oldConds = ''; - foreach ($oldConditions as $condition) { - $oldConds .= Tokens::tokenName($condition).','; - } - - $oldConds = rtrim($oldConds, ','); - - $newConds = ''; - foreach ($this->tokens[$x]['conditions'] as $condition) { - $newConds .= Tokens::tokenName($condition).','; - } - - $newConds = rtrim($newConds, ','); - - $newLevel = $this->tokens[$x]['level']; - echo str_repeat("\t", ($level + 1)); - echo "* cleaned $x:$type *".PHP_EOL; - echo str_repeat("\t", ($level + 2)); - echo "=> level changed from $oldLevel to $newLevel".PHP_EOL; - echo str_repeat("\t", ($level + 2)); - echo "=> conditions changed from $oldConds to $newConds".PHP_EOL; - }//end if - }//end for - - unset($conditions[$badToken]); - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $this->tokens[$badToken]['type']; - echo str_repeat("\t", ($level + 1)); - echo "* token $badToken:$type removed from conditions array *".PHP_EOL; - } - - unset($openers[$lastOpener]); - - $level--; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", ($level + 2)); - echo '* level decreased *'.PHP_EOL; - } - }//end if - }//end if - - $level++; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", ($level + 1)); - echo '* level increased *'.PHP_EOL; - } - - $conditions[$stackPtr] = $this->tokens[$stackPtr]['code']; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $this->tokens[$stackPtr]['type']; - echo str_repeat("\t", ($level + 1)); - echo "* token $stackPtr:$type added to conditions array *".PHP_EOL; - } - - $lastOpener = $this->tokens[$i]['scope_opener']; - if ($lastOpener !== null) { - $openers[$lastOpener] = $lastOpener; - } - } else if ($lastOpener !== null && $this->tokens[$lastOpener]['scope_closer'] === $i) { - foreach (array_reverse($openers) as $opener) { - if ($this->tokens[$opener]['scope_closer'] === $i) { - $oldOpener = array_pop($openers); - if (empty($openers) === false) { - $lastOpener = array_pop($openers); - $openers[$lastOpener] = $lastOpener; - } else { - $lastOpener = null; - } - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $this->tokens[$oldOpener]['type']; - echo str_repeat("\t", ($level + 1)); - echo "=> Found scope closer for $oldOpener:$type".PHP_EOL; - } - - $oldCondition = array_pop($conditions); - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", ($level + 1)); - echo '* token '.Tokens::tokenName($oldCondition).' removed from conditions array *'.PHP_EOL; - } - - // Make sure this closer actually belongs to us. - // Either the condition also has to think this is the - // closer, or it has to allow sharing with us. - $condition = $this->tokens[$this->tokens[$i]['scope_condition']]['code']; - if ($condition !== $oldCondition) { - if (isset($this->scopeOpeners[$oldCondition]['with'][$condition]) === false) { - $badToken = $this->tokens[$oldOpener]['scope_condition']; - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = Tokens::tokenName($oldCondition); - echo str_repeat("\t", ($level + 1)); - echo "* scope closer was bad, cleaning up $badToken:$type *".PHP_EOL; - } - - for ($x = ($oldOpener + 1); $x <= $i; $x++) { - $oldConditions = $this->tokens[$x]['conditions']; - $oldLevel = $this->tokens[$x]['level']; - $this->tokens[$x]['level']--; - unset($this->tokens[$x]['conditions'][$badToken]); - if (PHP_CODESNIFFER_VERBOSITY > 1) { - $type = $this->tokens[$x]['type']; - $oldConds = ''; - foreach ($oldConditions as $condition) { - $oldConds .= Tokens::tokenName($condition).','; - } - - $oldConds = rtrim($oldConds, ','); - - $newConds = ''; - foreach ($this->tokens[$x]['conditions'] as $condition) { - $newConds .= Tokens::tokenName($condition).','; - } - - $newConds = rtrim($newConds, ','); - - $newLevel = $this->tokens[$x]['level']; - echo str_repeat("\t", ($level + 1)); - echo "* cleaned $x:$type *".PHP_EOL; - echo str_repeat("\t", ($level + 2)); - echo "=> level changed from $oldLevel to $newLevel".PHP_EOL; - echo str_repeat("\t", ($level + 2)); - echo "=> conditions changed from $oldConds to $newConds".PHP_EOL; - }//end if - }//end for - }//end if - }//end if - - $level--; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo str_repeat("\t", ($level + 2)); - echo '* level decreased *'.PHP_EOL; - } - - $this->tokens[$i]['level'] = $level; - $this->tokens[$i]['conditions'] = $conditions; - }//end if - }//end foreach - }//end if - }//end if - }//end for - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t*** END LEVEL MAP ***".PHP_EOL; - } - - }//end createLevelMap() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Util/Cache.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Util/Cache.php deleted file mode 100644 index 408de96e..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Util/Cache.php +++ /dev/null @@ -1,355 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Util; - -use FilesystemIterator; -use PHP_CodeSniffer\Autoload; -use PHP_CodeSniffer\Config; -use PHP_CodeSniffer\Ruleset; -use RecursiveCallbackFilterIterator; -use RecursiveDirectoryIterator; -use RecursiveIteratorIterator; - -class Cache -{ - - /** - * The filesystem location of the cache file. - * - * @var string - */ - private static $path = ''; - - /** - * The cached data. - * - * @var array - */ - private static $cache = []; - - - /** - * Loads existing cache data for the run, if any. - * - * @param \PHP_CodeSniffer\Ruleset $ruleset The ruleset used for the run. - * @param \PHP_CodeSniffer\Config $config The config data for the run. - * - * @return void - */ - public static function load(Ruleset $ruleset, Config $config) - { - // Look at every loaded sniff class so far and use their file contents - // to generate a hash for the code used during the run. - // At this point, the loaded class list contains the core PHPCS code - // and all sniffs that have been loaded as part of the run. - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo PHP_EOL."\tGenerating loaded file list for code hash".PHP_EOL; - } - - $codeHashFiles = []; - - $classes = array_keys(Autoload::getLoadedClasses()); - sort($classes); - - $installDir = dirname(__DIR__); - $installDirLen = strlen($installDir); - $standardDir = $installDir.DIRECTORY_SEPARATOR.'Standards'; - $standardDirLen = strlen($standardDir); - foreach ($classes as $file) { - if (substr($file, 0, $standardDirLen) !== $standardDir) { - if (substr($file, 0, $installDirLen) === $installDir) { - // We are only interested in sniffs here. - continue; - } - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t=> external file: $file".PHP_EOL; - } - } else if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t=> internal sniff: $file".PHP_EOL; - } - - $codeHashFiles[] = $file; - } - - // Add the content of the used rulesets to the hash so that sniff setting - // changes in the ruleset invalidate the cache. - $rulesets = $ruleset->paths; - sort($rulesets); - foreach ($rulesets as $file) { - if (substr($file, 0, $standardDirLen) !== $standardDir) { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t=> external ruleset: $file".PHP_EOL; - } - } else if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t=> internal ruleset: $file".PHP_EOL; - } - - $codeHashFiles[] = $file; - } - - // Go through the core PHPCS code and add those files to the file - // hash. This ensures that core PHPCS changes will also invalidate the cache. - // Note that we ignore sniffs here, and any files that don't affect - // the outcome of the run. - $di = new RecursiveDirectoryIterator( - $installDir, - (FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::SKIP_DOTS) - ); - $filter = new RecursiveCallbackFilterIterator( - $di, - function ($file, $key, $iterator) { - // Skip non-php files. - $filename = $file->getFilename(); - if ($file->isFile() === true && substr($filename, -4) !== '.php') { - return false; - } - - $filePath = Common::realpath($key); - if ($filePath === false) { - return false; - } - - if ($iterator->hasChildren() === true - && ($filename === 'Standards' - || $filename === 'Exceptions' - || $filename === 'Reports' - || $filename === 'Generators') - ) { - return false; - } - - return true; - } - ); - - $iterator = new RecursiveIteratorIterator($filter); - foreach ($iterator as $file) { - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t=> core file: $file".PHP_EOL; - } - - $codeHashFiles[] = $file->getPathname(); - } - - $codeHash = ''; - sort($codeHashFiles); - foreach ($codeHashFiles as $file) { - $codeHash .= md5_file($file); - } - - $codeHash = md5($codeHash); - - // Along with the code hash, use various settings that can affect - // the results of a run to create a new hash. This hash will be used - // in the cache file name. - $rulesetHash = md5(var_export($ruleset->ignorePatterns, true).var_export($ruleset->includePatterns, true)); - $phpExtensionsHash = md5(var_export(get_loaded_extensions(), true)); - $configData = [ - 'phpVersion' => PHP_VERSION_ID, - 'phpExtensions' => $phpExtensionsHash, - 'tabWidth' => $config->tabWidth, - 'encoding' => $config->encoding, - 'recordErrors' => $config->recordErrors, - 'annotations' => $config->annotations, - 'configData' => Config::getAllConfigData(), - 'codeHash' => $codeHash, - 'rulesetHash' => $rulesetHash, - ]; - - $configString = var_export($configData, true); - $cacheHash = substr(sha1($configString), 0, 12); - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\tGenerating cache key data".PHP_EOL; - foreach ($configData as $key => $value) { - if (is_array($value) === true) { - echo "\t\t=> $key:".PHP_EOL; - foreach ($value as $subKey => $subValue) { - echo "\t\t\t=> $subKey: $subValue".PHP_EOL; - } - - continue; - } - - if ($value === true || $value === false) { - $value = (int) $value; - } - - echo "\t\t=> $key: $value".PHP_EOL; - } - - echo "\t\t=> cacheHash: $cacheHash".PHP_EOL; - }//end if - - if ($config->cacheFile !== null) { - $cacheFile = $config->cacheFile; - } else { - // Determine the common paths for all files being checked. - // We can use this to locate an existing cache file, or to - // determine where to create a new one. - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\tChecking possible cache file paths".PHP_EOL; - } - - $paths = []; - foreach ($config->files as $file) { - $file = Common::realpath($file); - while ($file !== DIRECTORY_SEPARATOR) { - if (isset($paths[$file]) === false) { - $paths[$file] = 1; - } else { - $paths[$file]++; - } - - $lastFile = $file; - $file = dirname($file); - if ($file === $lastFile) { - // Just in case something went wrong, - // we don't want to end up in an infinite loop. - break; - } - } - } - - ksort($paths); - $paths = array_reverse($paths); - - $numFiles = count($config->files); - - $cacheFile = null; - $cacheDir = getenv('XDG_CACHE_HOME'); - if ($cacheDir === false || is_dir($cacheDir) === false) { - $cacheDir = sys_get_temp_dir(); - } - - foreach ($paths as $file => $count) { - if ($count !== $numFiles) { - unset($paths[$file]); - continue; - } - - $fileHash = substr(sha1($file), 0, 12); - $testFile = $cacheDir.DIRECTORY_SEPARATOR."phpcs.$fileHash.$cacheHash.cache"; - if ($cacheFile === null) { - // This will be our default location if we can't find - // an existing file. - $cacheFile = $testFile; - } - - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t\t=> $testFile".PHP_EOL; - echo "\t\t\t * based on shared location: $file *".PHP_EOL; - } - - if (file_exists($testFile) === true) { - $cacheFile = $testFile; - break; - } - }//end foreach - - if ($cacheFile === null) { - // Unlikely, but just in case $paths is empty for some reason. - $cacheFile = $cacheDir.DIRECTORY_SEPARATOR."phpcs.$cacheHash.cache"; - } - }//end if - - self::$path = $cacheFile; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t=> Using cache file: ".self::$path.PHP_EOL; - } - - if (file_exists(self::$path) === true) { - self::$cache = json_decode(file_get_contents(self::$path), true); - - // Verify the contents of the cache file. - if (self::$cache['config'] !== $configData) { - self::$cache = []; - if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t* cache was invalid and has been cleared *".PHP_EOL; - } - } - } else if (PHP_CODESNIFFER_VERBOSITY > 1) { - echo "\t* cache file does not exist *".PHP_EOL; - } - - self::$cache['config'] = $configData; - - }//end load() - - - /** - * Saves the current cache to the filesystem. - * - * @return void - */ - public static function save() - { - file_put_contents(self::$path, json_encode(self::$cache)); - - }//end save() - - - /** - * Retrieves a single entry from the cache. - * - * @param string $key The key of the data to get. If NULL, - * everything in the cache is returned. - * - * @return mixed - */ - public static function get($key=null) - { - if ($key === null) { - return self::$cache; - } - - if (isset(self::$cache[$key]) === true) { - return self::$cache[$key]; - } - - return false; - - }//end get() - - - /** - * Retrieves a single entry from the cache. - * - * @param string $key The key of the data to set. If NULL, - * sets the entire cache. - * @param mixed $value The value to set. - * - * @return void - */ - public static function set($key, $value) - { - if ($key === null) { - self::$cache = $value; - } else { - self::$cache[$key] = $value; - } - - }//end set() - - - /** - * Retrieves the number of cache entries. - * - * @return int - */ - public static function getSize() - { - return (count(self::$cache) - 1); - - }//end getSize() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Util/Common.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Util/Common.php deleted file mode 100644 index cb6965f6..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Util/Common.php +++ /dev/null @@ -1,605 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Util; - -use InvalidArgumentException; -use Phar; - -class Common -{ - - /** - * An array of variable types for param/var we will check. - * - * @var string[] - */ - public static $allowedTypes = [ - 'array', - 'boolean', - 'float', - 'integer', - 'mixed', - 'object', - 'string', - 'resource', - 'callable', - ]; - - - /** - * Return TRUE if the path is a PHAR file. - * - * @param string $path The path to use. - * - * @return bool - */ - public static function isPharFile($path) - { - if (strpos($path, 'phar://') === 0) { - return true; - } - - return false; - - }//end isPharFile() - - - /** - * Checks if a file is readable. - * - * Addresses PHP bug related to reading files from network drives on Windows. - * e.g. when using WSL2. - * - * @param string $path The path to the file. - * - * @return boolean - */ - public static function isReadable($path) - { - if (@is_readable($path) === true) { - return true; - } - - if (@file_exists($path) === true && @is_file($path) === true) { - $f = @fopen($path, 'rb'); - if (fclose($f) === true) { - return true; - } - } - - return false; - - }//end isReadable() - - - /** - * CodeSniffer alternative for realpath. - * - * Allows for PHAR support. - * - * @param string $path The path to use. - * - * @return string|false - */ - public static function realpath($path) - { - // Support the path replacement of ~ with the user's home directory. - if (substr($path, 0, 2) === '~/') { - $homeDir = getenv('HOME'); - if ($homeDir !== false) { - $path = $homeDir.substr($path, 1); - } - } - - // Check for process substitution. - if (strpos($path, '/dev/fd') === 0) { - return str_replace('/dev/fd', 'php://fd', $path); - } - - // No extra work needed if this is not a phar file. - if (self::isPharFile($path) === false) { - return realpath($path); - } - - // Before trying to break down the file path, - // check if it exists first because it will mostly not - // change after running the below code. - if (file_exists($path) === true) { - return $path; - } - - $phar = Phar::running(false); - $extra = str_replace('phar://'.$phar, '', $path); - $path = realpath($phar); - if ($path === false) { - return false; - } - - $path = 'phar://'.$path.$extra; - if (file_exists($path) === true) { - return $path; - } - - return false; - - }//end realpath() - - - /** - * Removes a base path from the front of a file path. - * - * @param string $path The path of the file. - * @param string $basepath The base path to remove. This should not end - * with a directory separator. - * - * @return string - */ - public static function stripBasepath($path, $basepath) - { - if (empty($basepath) === true) { - return $path; - } - - $basepathLen = strlen($basepath); - if (substr($path, 0, $basepathLen) === $basepath) { - $path = substr($path, $basepathLen); - } - - $path = ltrim($path, DIRECTORY_SEPARATOR); - if ($path === '') { - $path = '.'; - } - - return $path; - - }//end stripBasepath() - - - /** - * Detects the EOL character being used in a string. - * - * @param string $contents The contents to check. - * - * @return string - */ - public static function detectLineEndings($contents) - { - if (preg_match("/\r\n?|\n/", $contents, $matches) !== 1) { - // Assume there are no newlines. - $eolChar = "\n"; - } else { - $eolChar = $matches[0]; - } - - return $eolChar; - - }//end detectLineEndings() - - - /** - * Check if STDIN is a TTY. - * - * @return boolean - */ - public static function isStdinATTY() - { - // The check is slow (especially calling `tty`) so we static - // cache the result. - static $isTTY = null; - - if ($isTTY !== null) { - return $isTTY; - } - - if (defined('STDIN') === false) { - return false; - } - - // If PHP has the POSIX extensions we will use them. - if (function_exists('posix_isatty') === true) { - $isTTY = (posix_isatty(STDIN) === true); - return $isTTY; - } - - // Next try is detecting whether we have `tty` installed and use that. - if (defined('PHP_WINDOWS_VERSION_PLATFORM') === true) { - $devnull = 'NUL'; - $which = 'where'; - } else { - $devnull = '/dev/null'; - $which = 'which'; - } - - $tty = trim(shell_exec("$which tty 2> $devnull")); - if (empty($tty) === false) { - exec("tty -s 2> $devnull", $output, $returnValue); - $isTTY = ($returnValue === 0); - return $isTTY; - } - - // Finally we will use fstat. The solution borrowed from - // https://stackoverflow.com/questions/11327367/detect-if-a-php-script-is-being-run-interactively-or-not - // This doesn't work on Mingw/Cygwin/... using Mintty but they - // have `tty` installed. - $type = [ - 'S_IFMT' => 0170000, - 'S_IFIFO' => 0010000, - ]; - - $stat = fstat(STDIN); - $mode = ($stat['mode'] & $type['S_IFMT']); - $isTTY = ($mode !== $type['S_IFIFO']); - - return $isTTY; - - }//end isStdinATTY() - - - /** - * Escape a path to a system command. - * - * @param string $cmd The path to the system command. - * - * @return string - */ - public static function escapeshellcmd($cmd) - { - $cmd = escapeshellcmd($cmd); - - if (stripos(PHP_OS, 'WIN') === 0) { - // Spaces are not escaped by escapeshellcmd on Windows, but need to be - // for the command to be able to execute. - $cmd = preg_replace('`(? 0) { - return false; - } - - if ($strict === true) { - // Check that there are not two capital letters next to each other. - $length = strlen($string); - $lastCharWasCaps = $classFormat; - - for ($i = 1; $i < $length; $i++) { - $ascii = ord($string[$i]); - if ($ascii >= 48 && $ascii <= 57) { - // The character is a number, so it can't be a capital. - $isCaps = false; - } else { - if (strtoupper($string[$i]) === $string[$i]) { - $isCaps = true; - } else { - $isCaps = false; - } - } - - if ($isCaps === true && $lastCharWasCaps === true) { - return false; - } - - $lastCharWasCaps = $isCaps; - } - }//end if - - return true; - - }//end isCamelCaps() - - - /** - * Returns true if the specified string is in the underscore caps format. - * - * @param string $string The string to verify. - * - * @return boolean - */ - public static function isUnderscoreName($string) - { - // If there is whitespace in the name, it can't be valid. - if (strpos($string, ' ') !== false) { - return false; - } - - $validName = true; - $nameBits = explode('_', $string); - - if (preg_match('|^[A-Z]|', $string) === 0) { - // Name does not begin with a capital letter. - $validName = false; - } else { - foreach ($nameBits as $bit) { - if ($bit === '') { - continue; - } - - if ($bit[0] !== strtoupper($bit[0])) { - $validName = false; - break; - } - } - } - - return $validName; - - }//end isUnderscoreName() - - - /** - * Returns a valid variable type for param/var tags. - * - * If type is not one of the standard types, it must be a custom type. - * Returns the correct type name suggestion if type name is invalid. - * - * @param string $varType The variable type to process. - * - * @return string - */ - public static function suggestType($varType) - { - if ($varType === '') { - return ''; - } - - if (in_array($varType, self::$allowedTypes, true) === true) { - return $varType; - } else { - $lowerVarType = strtolower($varType); - switch ($lowerVarType) { - case 'bool': - case 'boolean': - return 'boolean'; - case 'double': - case 'real': - case 'float': - return 'float'; - case 'int': - case 'integer': - return 'integer'; - case 'array()': - case 'array': - return 'array'; - }//end switch - - if (strpos($lowerVarType, 'array(') !== false) { - // Valid array declaration: - // array, array(type), array(type1 => type2). - $matches = []; - $pattern = '/^array\(\s*([^\s^=^>]*)(\s*=>\s*(.*))?\s*\)/i'; - if (preg_match($pattern, $varType, $matches) !== 0) { - $type1 = ''; - if (isset($matches[1]) === true) { - $type1 = $matches[1]; - } - - $type2 = ''; - if (isset($matches[3]) === true) { - $type2 = $matches[3]; - } - - $type1 = self::suggestType($type1); - $type2 = self::suggestType($type2); - if ($type2 !== '') { - $type2 = ' => '.$type2; - } - - return "array($type1$type2)"; - } else { - return 'array'; - }//end if - } else if (in_array($lowerVarType, self::$allowedTypes, true) === true) { - // A valid type, but not lower cased. - return $lowerVarType; - } else { - // Must be a custom type name. - return $varType; - }//end if - }//end if - - }//end suggestType() - - - /** - * Given a sniff class name, returns the code for the sniff. - * - * @param string $sniffClass The fully qualified sniff class name. - * - * @return string - * - * @throws \InvalidArgumentException When $sniffClass is not a non-empty string. - * @throws \InvalidArgumentException When $sniffClass is not a FQN for a sniff(test) class. - */ - public static function getSniffCode($sniffClass) - { - if (is_string($sniffClass) === false || $sniffClass === '') { - throw new InvalidArgumentException('The $sniffClass parameter must be a non-empty string'); - } - - $parts = explode('\\', $sniffClass); - $partsCount = count($parts); - $sniff = $parts[($partsCount - 1)]; - - if (substr($sniff, -5) === 'Sniff') { - // Sniff class name. - $sniff = substr($sniff, 0, -5); - } else if (substr($sniff, -8) === 'UnitTest') { - // Unit test class name. - $sniff = substr($sniff, 0, -8); - } else { - throw new InvalidArgumentException( - 'The $sniffClass parameter was not passed a fully qualified sniff(test) class name. Received: '.$sniffClass - ); - } - - $standard = ''; - if (isset($parts[($partsCount - 4)]) === true) { - $standard = $parts[($partsCount - 4)]; - } - - $category = ''; - if (isset($parts[($partsCount - 2)]) === true) { - $category = $parts[($partsCount - 2)]; - } - - return $standard.'.'.$category.'.'.$sniff; - - }//end getSniffCode() - - - /** - * Removes project-specific information from a sniff class name. - * - * @param string $sniffClass The fully qualified sniff class name. - * - * @return string - */ - public static function cleanSniffClass($sniffClass) - { - $newName = strtolower($sniffClass); - - $sniffPos = strrpos($newName, '\sniffs\\'); - if ($sniffPos === false) { - // Nothing we can do as it isn't in a known format. - return $newName; - } - - $end = (strlen($newName) - $sniffPos + 1); - $start = strrpos($newName, '\\', ($end * -1)); - - if ($start === false) { - // Nothing needs to be cleaned. - return $newName; - } - - $newName = substr($newName, ($start + 1)); - return $newName; - - }//end cleanSniffClass() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Util/Standards.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Util/Standards.php deleted file mode 100644 index f7217a72..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Util/Standards.php +++ /dev/null @@ -1,340 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Util; - -use DirectoryIterator; -use PHP_CodeSniffer\Config; - -class Standards -{ - - - /** - * Get a list of paths where standards are installed. - * - * Unresolvable relative paths will be excluded from the results. - * - * @return array - */ - public static function getInstalledStandardPaths() - { - $ds = DIRECTORY_SEPARATOR; - - $installedPaths = [dirname(dirname(__DIR__)).$ds.'src'.$ds.'Standards']; - $configPaths = Config::getConfigData('installed_paths'); - if ($configPaths !== null) { - $installedPaths = array_merge($installedPaths, explode(',', $configPaths)); - } - - $resolvedInstalledPaths = []; - foreach ($installedPaths as $installedPath) { - if (substr($installedPath, 0, 1) === '.') { - $installedPath = Common::realPath(__DIR__.$ds.'..'.$ds.'..'.$ds.$installedPath); - if ($installedPath === false) { - continue; - } - } - - $resolvedInstalledPaths[] = $installedPath; - } - - return $resolvedInstalledPaths; - - }//end getInstalledStandardPaths() - - - /** - * Get the details of all coding standards installed. - * - * Coding standards are directories located in the - * CodeSniffer/Standards directory. Valid coding standards - * include a Sniffs subdirectory. - * - * The details returned for each standard are: - * - path: the path to the coding standard's main directory - * - name: the name of the coding standard, as sourced from the ruleset.xml file - * - namespace: the namespace used by the coding standard, as sourced from the ruleset.xml file - * - * If you only need the paths to the installed standards, - * use getInstalledStandardPaths() instead as it performs less work to - * retrieve coding standard names. - * - * @param boolean $includeGeneric If true, the special "Generic" - * coding standard will be included - * if installed. - * @param string $standardsDir A specific directory to look for standards - * in. If not specified, PHP_CodeSniffer will - * look in its default locations. - * - * @return array - * @see getInstalledStandardPaths() - */ - public static function getInstalledStandardDetails( - $includeGeneric=false, - $standardsDir='' - ) { - $rulesets = []; - - if ($standardsDir === '') { - $installedPaths = self::getInstalledStandardPaths(); - } else { - $installedPaths = [$standardsDir]; - } - - foreach ($installedPaths as $standardsDir) { - // Check if the installed dir is actually a standard itself. - $csFile = $standardsDir.'/ruleset.xml'; - if (is_file($csFile) === true) { - $rulesets[] = $csFile; - continue; - } - - if (is_dir($standardsDir) === false) { - continue; - } - - $di = new DirectoryIterator($standardsDir); - foreach ($di as $file) { - if ($file->isDir() === true && $file->isDot() === false) { - $filename = $file->getFilename(); - - // Ignore the special "Generic" standard. - if ($includeGeneric === false && $filename === 'Generic') { - continue; - } - - // Valid coding standard dirs include a ruleset. - $csFile = $file->getPathname().'/ruleset.xml'; - if (is_file($csFile) === true) { - $rulesets[] = $csFile; - } - } - } - }//end foreach - - $installedStandards = []; - - foreach ($rulesets as $rulesetPath) { - $ruleset = @simplexml_load_string(file_get_contents($rulesetPath)); - if ($ruleset === false) { - continue; - } - - $standardName = (string) $ruleset['name']; - $dirname = basename(dirname($rulesetPath)); - - if (isset($ruleset['namespace']) === true) { - $namespace = (string) $ruleset['namespace']; - } else { - $namespace = $dirname; - } - - $installedStandards[$dirname] = [ - 'path' => dirname($rulesetPath), - 'name' => $standardName, - 'namespace' => $namespace, - ]; - }//end foreach - - return $installedStandards; - - }//end getInstalledStandardDetails() - - - /** - * Get a list of all coding standards installed. - * - * Coding standards are directories located in the - * CodeSniffer/Standards directory. Valid coding standards - * include a Sniffs subdirectory. - * - * @param boolean $includeGeneric If true, the special "Generic" - * coding standard will be included - * if installed. - * @param string $standardsDir A specific directory to look for standards - * in. If not specified, PHP_CodeSniffer will - * look in its default locations. - * - * @return array - * @see isInstalledStandard() - */ - public static function getInstalledStandards( - $includeGeneric=false, - $standardsDir='' - ) { - $installedStandards = []; - - if ($standardsDir === '') { - $installedPaths = self::getInstalledStandardPaths(); - } else { - $installedPaths = [$standardsDir]; - } - - foreach ($installedPaths as $standardsDir) { - // Check if the installed dir is actually a standard itself. - $csFile = $standardsDir.'/ruleset.xml'; - if (is_file($csFile) === true) { - $basename = basename($standardsDir); - $installedStandards[$basename] = $basename; - continue; - } - - if (is_dir($standardsDir) === false) { - // Doesn't exist. - continue; - } - - $di = new DirectoryIterator($standardsDir); - $standardsInDir = []; - foreach ($di as $file) { - if ($file->isDir() === true && $file->isDot() === false) { - $filename = $file->getFilename(); - - // Ignore the special "Generic" standard. - if ($includeGeneric === false && $filename === 'Generic') { - continue; - } - - // Valid coding standard dirs include a ruleset. - $csFile = $file->getPathname().'/ruleset.xml'; - if (is_file($csFile) === true) { - $standardsInDir[$filename] = $filename; - } - } - } - - natsort($standardsInDir); - $installedStandards += $standardsInDir; - }//end foreach - - return $installedStandards; - - }//end getInstalledStandards() - - - /** - * Determine if a standard is installed. - * - * Coding standards are directories located in the - * CodeSniffer/Standards directory. Valid coding standards - * include a ruleset.xml file. - * - * @param string $standard The name of the coding standard. - * - * @return boolean - * @see getInstalledStandards() - */ - public static function isInstalledStandard($standard) - { - $path = self::getInstalledStandardPath($standard); - if ($path !== null && strpos($path, 'ruleset.xml') !== false) { - return true; - } else { - // This could be a custom standard, installed outside our - // standards directory. - $standard = Common::realPath($standard); - if ($standard === false) { - return false; - } - - // Might be an actual ruleset file itUtil. - // If it has an XML extension, let's at least try it. - if (is_file($standard) === true - && (substr(strtolower($standard), -4) === '.xml' - || substr(strtolower($standard), -9) === '.xml.dist') - ) { - return true; - } - - // If it is a directory with a ruleset.xml file in it, - // it is a standard. - $ruleset = rtrim($standard, ' /\\').DIRECTORY_SEPARATOR.'ruleset.xml'; - if (is_file($ruleset) === true) { - return true; - } - }//end if - - return false; - - }//end isInstalledStandard() - - - /** - * Return the path of an installed coding standard. - * - * Coding standards are directories located in the - * CodeSniffer/Standards directory. Valid coding standards - * include a ruleset.xml file. - * - * @param string $standard The name of the coding standard. - * - * @return string|null - */ - public static function getInstalledStandardPath($standard) - { - if (strpos($standard, '.') !== false) { - return null; - } - - $installedPaths = self::getInstalledStandardPaths(); - foreach ($installedPaths as $installedPath) { - $standardPath = $installedPath.DIRECTORY_SEPARATOR.$standard; - if (file_exists($standardPath) === false) { - if (basename($installedPath) !== $standard) { - continue; - } - - $standardPath = $installedPath; - } - - $path = Common::realpath($standardPath.DIRECTORY_SEPARATOR.'ruleset.xml'); - - if ($path !== false && is_file($path) === true) { - return $path; - } else if (Common::isPharFile($standardPath) === true) { - $path = Common::realpath($standardPath); - if ($path !== false) { - return $path; - } - } - }//end foreach - - return null; - - }//end getInstalledStandardPath() - - - /** - * Prints out a list of installed coding standards. - * - * @return void - */ - public static function printInstalledStandards() - { - $installedStandards = self::getInstalledStandards(); - $numStandards = count($installedStandards); - - if ($numStandards === 0) { - echo 'No coding standards are installed.'.PHP_EOL; - } else { - $lastStandard = array_pop($installedStandards); - if ($numStandards === 1) { - echo "The only coding standard installed is $lastStandard".PHP_EOL; - } else { - $standardList = implode(', ', $installedStandards); - $standardList .= ' and '.$lastStandard; - echo 'The installed coding standards are '.$standardList.PHP_EOL; - } - } - - }//end printInstalledStandards() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Util/Timing.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Util/Timing.php deleted file mode 100644 index 95f6810b..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Util/Timing.php +++ /dev/null @@ -1,133 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Util; - -class Timing -{ - - /** - * Number of milliseconds in a minute. - * - * @var int - */ - const MINUTE_IN_MS = 60000; - - /** - * Number of milliseconds in a second. - * - * @var int - */ - const SECOND_IN_MS = 1000; - - /** - * The start time of the run in microseconds. - * - * @var float - */ - private static $startTime; - - /** - * Used to make sure we only print the run time once per run. - * - * @var boolean - */ - private static $printed = false; - - - /** - * Start recording time for the run. - * - * @return void - */ - public static function startTiming() - { - - self::$startTime = microtime(true); - - }//end startTiming() - - - /** - * Get the duration of the run up to "now". - * - * @return float Duration in milliseconds. - */ - public static function getDuration() - { - if (self::$startTime === null) { - // Timing was never started. - return 0; - } - - return ((microtime(true) - self::$startTime) * 1000); - - }//end getDuration() - - - /** - * Convert a duration in milliseconds to a human readable duration string. - * - * @param float $duration Duration in milliseconds. - * - * @return string - */ - public static function getHumanReadableDuration($duration) - { - $timeString = ''; - if ($duration >= self::MINUTE_IN_MS) { - $mins = floor($duration / self::MINUTE_IN_MS); - $secs = round((fmod($duration, self::MINUTE_IN_MS) / self::SECOND_IN_MS), 2); - $timeString = $mins.' mins'; - if ($secs >= 0.01) { - $timeString .= ", $secs secs"; - } - } else if ($duration >= self::SECOND_IN_MS) { - $timeString = round(($duration / self::SECOND_IN_MS), 2).' secs'; - } else { - $timeString = round($duration).'ms'; - } - - return $timeString; - - }//end getHumanReadableDuration() - - - /** - * Print information about the run. - * - * @param boolean $force If TRUE, prints the output even if it has - * already been printed during the run. - * - * @return void - */ - public static function printRunTime($force=false) - { - if ($force === false && self::$printed === true) { - // A double call. - return; - } - - if (self::$startTime === null) { - // Timing was never started. - return; - } - - $duration = self::getDuration(); - $duration = self::getHumanReadableDuration($duration); - - $mem = round((memory_get_peak_usage(true) / (1024 * 1024)), 2).'MB'; - echo "Time: $duration; Memory: $mem".PHP_EOL.PHP_EOL; - - self::$printed = true; - - }//end printRunTime() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Util/Tokens.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Util/Tokens.php deleted file mode 100644 index 5554cc9a..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/src/Util/Tokens.php +++ /dev/null @@ -1,814 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Util; - -define('T_NONE', 'PHPCS_T_NONE'); -define('T_OPEN_CURLY_BRACKET', 'PHPCS_T_OPEN_CURLY_BRACKET'); -define('T_CLOSE_CURLY_BRACKET', 'PHPCS_T_CLOSE_CURLY_BRACKET'); -define('T_OPEN_SQUARE_BRACKET', 'PHPCS_T_OPEN_SQUARE_BRACKET'); -define('T_CLOSE_SQUARE_BRACKET', 'PHPCS_T_CLOSE_SQUARE_BRACKET'); -define('T_OPEN_PARENTHESIS', 'PHPCS_T_OPEN_PARENTHESIS'); -define('T_CLOSE_PARENTHESIS', 'PHPCS_T_CLOSE_PARENTHESIS'); -define('T_COLON', 'PHPCS_T_COLON'); -define('T_NULLABLE', 'PHPCS_T_NULLABLE'); -define('T_STRING_CONCAT', 'PHPCS_T_STRING_CONCAT'); -define('T_INLINE_THEN', 'PHPCS_T_INLINE_THEN'); -define('T_INLINE_ELSE', 'PHPCS_T_INLINE_ELSE'); -define('T_NULL', 'PHPCS_T_NULL'); -define('T_FALSE', 'PHPCS_T_FALSE'); -define('T_TRUE', 'PHPCS_T_TRUE'); -define('T_SEMICOLON', 'PHPCS_T_SEMICOLON'); -define('T_EQUAL', 'PHPCS_T_EQUAL'); -define('T_MULTIPLY', 'PHPCS_T_MULTIPLY'); -define('T_DIVIDE', 'PHPCS_T_DIVIDE'); -define('T_PLUS', 'PHPCS_T_PLUS'); -define('T_MINUS', 'PHPCS_T_MINUS'); -define('T_MODULUS', 'PHPCS_T_MODULUS'); -define('T_BITWISE_AND', 'PHPCS_T_BITWISE_AND'); -define('T_BITWISE_OR', 'PHPCS_T_BITWISE_OR'); -define('T_BITWISE_XOR', 'PHPCS_T_BITWISE_XOR'); -define('T_BITWISE_NOT', 'PHPCS_T_BITWISE_NOT'); -define('T_ARRAY_HINT', 'PHPCS_T_ARRAY_HINT'); -define('T_GREATER_THAN', 'PHPCS_T_GREATER_THAN'); -define('T_LESS_THAN', 'PHPCS_T_LESS_THAN'); -define('T_BOOLEAN_NOT', 'PHPCS_T_BOOLEAN_NOT'); -define('T_SELF', 'PHPCS_T_SELF'); -define('T_PARENT', 'PHPCS_T_PARENT'); -define('T_DOUBLE_QUOTED_STRING', 'PHPCS_T_DOUBLE_QUOTED_STRING'); -define('T_COMMA', 'PHPCS_T_COMMA'); -define('T_HEREDOC', 'PHPCS_T_HEREDOC'); -define('T_PROTOTYPE', 'PHPCS_T_PROTOTYPE'); -define('T_THIS', 'PHPCS_T_THIS'); -define('T_REGULAR_EXPRESSION', 'PHPCS_T_REGULAR_EXPRESSION'); -define('T_PROPERTY', 'PHPCS_T_PROPERTY'); -define('T_LABEL', 'PHPCS_T_LABEL'); -define('T_OBJECT', 'PHPCS_T_OBJECT'); -define('T_CLOSE_OBJECT', 'PHPCS_T_CLOSE_OBJECT'); -define('T_COLOUR', 'PHPCS_T_COLOUR'); -define('T_HASH', 'PHPCS_T_HASH'); -define('T_URL', 'PHPCS_T_URL'); -define('T_STYLE', 'PHPCS_T_STYLE'); -define('T_ASPERAND', 'PHPCS_T_ASPERAND'); -define('T_DOLLAR', 'PHPCS_T_DOLLAR'); -define('T_TYPEOF', 'PHPCS_T_TYPEOF'); -define('T_CLOSURE', 'PHPCS_T_CLOSURE'); -define('T_ANON_CLASS', 'PHPCS_T_ANON_CLASS'); -define('T_BACKTICK', 'PHPCS_T_BACKTICK'); -define('T_START_NOWDOC', 'PHPCS_T_START_NOWDOC'); -define('T_NOWDOC', 'PHPCS_T_NOWDOC'); -define('T_END_NOWDOC', 'PHPCS_T_END_NOWDOC'); -define('T_OPEN_SHORT_ARRAY', 'PHPCS_T_OPEN_SHORT_ARRAY'); -define('T_CLOSE_SHORT_ARRAY', 'PHPCS_T_CLOSE_SHORT_ARRAY'); -define('T_GOTO_LABEL', 'PHPCS_T_GOTO_LABEL'); -define('T_BINARY_CAST', 'PHPCS_T_BINARY_CAST'); -define('T_EMBEDDED_PHP', 'PHPCS_T_EMBEDDED_PHP'); -define('T_RETURN_TYPE', 'PHPCS_T_RETURN_TYPE'); -define('T_OPEN_USE_GROUP', 'PHPCS_T_OPEN_USE_GROUP'); -define('T_CLOSE_USE_GROUP', 'PHPCS_T_CLOSE_USE_GROUP'); -define('T_ZSR', 'PHPCS_T_ZSR'); -define('T_ZSR_EQUAL', 'PHPCS_T_ZSR_EQUAL'); -define('T_FN_ARROW', 'PHPCS_T_FN_ARROW'); -define('T_TYPE_UNION', 'PHPCS_T_TYPE_UNION'); -define('T_PARAM_NAME', 'PHPCS_T_PARAM_NAME'); -define('T_MATCH_ARROW', 'PHPCS_T_MATCH_ARROW'); -define('T_MATCH_DEFAULT', 'PHPCS_T_MATCH_DEFAULT'); -define('T_ATTRIBUTE_END', 'PHPCS_T_ATTRIBUTE_END'); -define('T_ENUM_CASE', 'PHPCS_T_ENUM_CASE'); -define('T_TYPE_INTERSECTION', 'PHPCS_T_TYPE_INTERSECTION'); -define('T_TYPE_OPEN_PARENTHESIS', 'PHPCS_T_TYPE_OPEN_PARENTHESIS'); -define('T_TYPE_CLOSE_PARENTHESIS', 'PHPCS_T_TYPE_CLOSE_PARENTHESIS'); - -// Some PHP 5.5 tokens, replicated for lower versions. -if (defined('T_FINALLY') === false) { - define('T_FINALLY', 'PHPCS_T_FINALLY'); -} - -if (defined('T_YIELD') === false) { - define('T_YIELD', 'PHPCS_T_YIELD'); -} - -// Some PHP 5.6 tokens, replicated for lower versions. -if (defined('T_ELLIPSIS') === false) { - define('T_ELLIPSIS', 'PHPCS_T_ELLIPSIS'); -} - -if (defined('T_POW') === false) { - define('T_POW', 'PHPCS_T_POW'); -} - -if (defined('T_POW_EQUAL') === false) { - define('T_POW_EQUAL', 'PHPCS_T_POW_EQUAL'); -} - -// Some PHP 7 tokens, replicated for lower versions. -if (defined('T_SPACESHIP') === false) { - define('T_SPACESHIP', 'PHPCS_T_SPACESHIP'); -} - -if (defined('T_COALESCE') === false) { - define('T_COALESCE', 'PHPCS_T_COALESCE'); -} - -if (defined('T_COALESCE_EQUAL') === false) { - define('T_COALESCE_EQUAL', 'PHPCS_T_COALESCE_EQUAL'); -} - -if (defined('T_YIELD_FROM') === false) { - define('T_YIELD_FROM', 'PHPCS_T_YIELD_FROM'); -} - -// Some PHP 7.4 tokens, replicated for lower versions. -if (defined('T_BAD_CHARACTER') === false) { - define('T_BAD_CHARACTER', 'PHPCS_T_BAD_CHARACTER'); -} - -if (defined('T_FN') === false) { - define('T_FN', 'PHPCS_T_FN'); -} - -// Some PHP 8.0 tokens, replicated for lower versions. -if (defined('T_NULLSAFE_OBJECT_OPERATOR') === false) { - define('T_NULLSAFE_OBJECT_OPERATOR', 'PHPCS_T_NULLSAFE_OBJECT_OPERATOR'); -} - -if (defined('T_NAME_QUALIFIED') === false) { - define('T_NAME_QUALIFIED', 'PHPCS_T_NAME_QUALIFIED'); -} - -if (defined('T_NAME_FULLY_QUALIFIED') === false) { - define('T_NAME_FULLY_QUALIFIED', 'PHPCS_T_NAME_FULLY_QUALIFIED'); -} - -if (defined('T_NAME_RELATIVE') === false) { - define('T_NAME_RELATIVE', 'PHPCS_T_NAME_RELATIVE'); -} - -if (defined('T_MATCH') === false) { - define('T_MATCH', 'PHPCS_T_MATCH'); -} - -if (defined('T_ATTRIBUTE') === false) { - define('T_ATTRIBUTE', 'PHPCS_T_ATTRIBUTE'); -} - -// Some PHP 8.1 tokens, replicated for lower versions. -if (defined('T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG') === false) { - define('T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG', 'PHPCS_T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG'); -} - -if (defined('T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG') === false) { - define('T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG', 'PHPCS_T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG'); -} - -if (defined('T_READONLY') === false) { - define('T_READONLY', 'PHPCS_T_READONLY'); -} - -if (defined('T_ENUM') === false) { - define('T_ENUM', 'PHPCS_T_ENUM'); -} - -// Tokens used for parsing doc blocks. -define('T_DOC_COMMENT_STAR', 'PHPCS_T_DOC_COMMENT_STAR'); -define('T_DOC_COMMENT_WHITESPACE', 'PHPCS_T_DOC_COMMENT_WHITESPACE'); -define('T_DOC_COMMENT_TAG', 'PHPCS_T_DOC_COMMENT_TAG'); -define('T_DOC_COMMENT_OPEN_TAG', 'PHPCS_T_DOC_COMMENT_OPEN_TAG'); -define('T_DOC_COMMENT_CLOSE_TAG', 'PHPCS_T_DOC_COMMENT_CLOSE_TAG'); -define('T_DOC_COMMENT_STRING', 'PHPCS_T_DOC_COMMENT_STRING'); - -// Tokens used for PHPCS instruction comments. -define('T_PHPCS_ENABLE', 'PHPCS_T_PHPCS_ENABLE'); -define('T_PHPCS_DISABLE', 'PHPCS_T_PHPCS_DISABLE'); -define('T_PHPCS_SET', 'PHPCS_T_PHPCS_SET'); -define('T_PHPCS_IGNORE', 'PHPCS_T_PHPCS_IGNORE'); -define('T_PHPCS_IGNORE_FILE', 'PHPCS_T_PHPCS_IGNORE_FILE'); - -final class Tokens -{ - - /** - * The token weightings. - * - * @var array - */ - public static $weightings = [ - T_CLASS => 1000, - T_INTERFACE => 1000, - T_TRAIT => 1000, - T_ENUM => 1000, - T_NAMESPACE => 1000, - T_FUNCTION => 100, - T_CLOSURE => 100, - - /* - * Conditions. - */ - - T_WHILE => 50, - T_FOR => 50, - T_FOREACH => 50, - T_IF => 50, - T_ELSE => 50, - T_ELSEIF => 50, - T_DO => 50, - T_TRY => 50, - T_CATCH => 50, - T_FINALLY => 50, - T_SWITCH => 50, - T_MATCH => 50, - - T_SELF => 25, - T_PARENT => 25, - - /* - * Operators and arithmetic. - */ - - T_BITWISE_AND => 8, - T_BITWISE_OR => 8, - T_BITWISE_XOR => 8, - - T_MULTIPLY => 5, - T_DIVIDE => 5, - T_PLUS => 5, - T_MINUS => 5, - T_MODULUS => 5, - T_POW => 5, - T_SPACESHIP => 5, - T_COALESCE => 5, - T_COALESCE_EQUAL => 5, - - T_SL => 5, - T_SR => 5, - T_SL_EQUAL => 5, - T_SR_EQUAL => 5, - - T_EQUAL => 5, - T_AND_EQUAL => 5, - T_CONCAT_EQUAL => 5, - T_DIV_EQUAL => 5, - T_MINUS_EQUAL => 5, - T_MOD_EQUAL => 5, - T_MUL_EQUAL => 5, - T_OR_EQUAL => 5, - T_PLUS_EQUAL => 5, - T_XOR_EQUAL => 5, - - T_BOOLEAN_AND => 5, - T_BOOLEAN_OR => 5, - - /* - * Equality. - */ - - T_IS_EQUAL => 5, - T_IS_NOT_EQUAL => 5, - T_IS_IDENTICAL => 5, - T_IS_NOT_IDENTICAL => 5, - T_IS_SMALLER_OR_EQUAL => 5, - T_IS_GREATER_OR_EQUAL => 5, - ]; - - /** - * Tokens that represent assignments. - * - * @var array - */ - public static $assignmentTokens = [ - T_EQUAL => T_EQUAL, - T_AND_EQUAL => T_AND_EQUAL, - T_OR_EQUAL => T_OR_EQUAL, - T_CONCAT_EQUAL => T_CONCAT_EQUAL, - T_DIV_EQUAL => T_DIV_EQUAL, - T_MINUS_EQUAL => T_MINUS_EQUAL, - T_POW_EQUAL => T_POW_EQUAL, - T_MOD_EQUAL => T_MOD_EQUAL, - T_MUL_EQUAL => T_MUL_EQUAL, - T_PLUS_EQUAL => T_PLUS_EQUAL, - T_XOR_EQUAL => T_XOR_EQUAL, - T_DOUBLE_ARROW => T_DOUBLE_ARROW, - T_SL_EQUAL => T_SL_EQUAL, - T_SR_EQUAL => T_SR_EQUAL, - T_COALESCE_EQUAL => T_COALESCE_EQUAL, - T_ZSR_EQUAL => T_ZSR_EQUAL, - ]; - - /** - * Tokens that represent equality comparisons. - * - * @var array - */ - public static $equalityTokens = [ - T_IS_EQUAL => T_IS_EQUAL, - T_IS_NOT_EQUAL => T_IS_NOT_EQUAL, - T_IS_IDENTICAL => T_IS_IDENTICAL, - T_IS_NOT_IDENTICAL => T_IS_NOT_IDENTICAL, - T_IS_SMALLER_OR_EQUAL => T_IS_SMALLER_OR_EQUAL, - T_IS_GREATER_OR_EQUAL => T_IS_GREATER_OR_EQUAL, - ]; - - /** - * Tokens that represent comparison operator. - * - * @var array - */ - public static $comparisonTokens = [ - T_IS_EQUAL => T_IS_EQUAL, - T_IS_IDENTICAL => T_IS_IDENTICAL, - T_IS_NOT_EQUAL => T_IS_NOT_EQUAL, - T_IS_NOT_IDENTICAL => T_IS_NOT_IDENTICAL, - T_LESS_THAN => T_LESS_THAN, - T_GREATER_THAN => T_GREATER_THAN, - T_IS_SMALLER_OR_EQUAL => T_IS_SMALLER_OR_EQUAL, - T_IS_GREATER_OR_EQUAL => T_IS_GREATER_OR_EQUAL, - T_SPACESHIP => T_SPACESHIP, - T_COALESCE => T_COALESCE, - ]; - - /** - * Tokens that represent arithmetic operators. - * - * @var array - */ - public static $arithmeticTokens = [ - T_PLUS => T_PLUS, - T_MINUS => T_MINUS, - T_MULTIPLY => T_MULTIPLY, - T_DIVIDE => T_DIVIDE, - T_MODULUS => T_MODULUS, - T_POW => T_POW, - ]; - - /** - * Tokens that perform operations. - * - * @var array - */ - public static $operators = [ - T_MINUS => T_MINUS, - T_PLUS => T_PLUS, - T_MULTIPLY => T_MULTIPLY, - T_DIVIDE => T_DIVIDE, - T_MODULUS => T_MODULUS, - T_POW => T_POW, - T_SPACESHIP => T_SPACESHIP, - T_COALESCE => T_COALESCE, - T_BITWISE_AND => T_BITWISE_AND, - T_BITWISE_OR => T_BITWISE_OR, - T_BITWISE_XOR => T_BITWISE_XOR, - T_SL => T_SL, - T_SR => T_SR, - ]; - - /** - * Tokens that perform boolean operations. - * - * @var array - */ - public static $booleanOperators = [ - T_BOOLEAN_AND => T_BOOLEAN_AND, - T_BOOLEAN_OR => T_BOOLEAN_OR, - T_LOGICAL_AND => T_LOGICAL_AND, - T_LOGICAL_OR => T_LOGICAL_OR, - T_LOGICAL_XOR => T_LOGICAL_XOR, - ]; - - /** - * Tokens that represent casting. - * - * @var array - */ - public static $castTokens = [ - T_INT_CAST => T_INT_CAST, - T_STRING_CAST => T_STRING_CAST, - T_DOUBLE_CAST => T_DOUBLE_CAST, - T_ARRAY_CAST => T_ARRAY_CAST, - T_BOOL_CAST => T_BOOL_CAST, - T_OBJECT_CAST => T_OBJECT_CAST, - T_UNSET_CAST => T_UNSET_CAST, - T_BINARY_CAST => T_BINARY_CAST, - ]; - - /** - * Token types that open parenthesis. - * - * @var array - */ - public static $parenthesisOpeners = [ - T_ARRAY => T_ARRAY, - T_LIST => T_LIST, - T_FUNCTION => T_FUNCTION, - T_CLOSURE => T_CLOSURE, - T_ANON_CLASS => T_ANON_CLASS, - T_WHILE => T_WHILE, - T_FOR => T_FOR, - T_FOREACH => T_FOREACH, - T_SWITCH => T_SWITCH, - T_IF => T_IF, - T_ELSEIF => T_ELSEIF, - T_CATCH => T_CATCH, - T_DECLARE => T_DECLARE, - T_MATCH => T_MATCH, - ]; - - /** - * Tokens that are allowed to open scopes. - * - * @var array - */ - public static $scopeOpeners = [ - T_CLASS => T_CLASS, - T_ANON_CLASS => T_ANON_CLASS, - T_INTERFACE => T_INTERFACE, - T_TRAIT => T_TRAIT, - T_ENUM => T_ENUM, - T_NAMESPACE => T_NAMESPACE, - T_FUNCTION => T_FUNCTION, - T_CLOSURE => T_CLOSURE, - T_IF => T_IF, - T_SWITCH => T_SWITCH, - T_CASE => T_CASE, - T_DECLARE => T_DECLARE, - T_DEFAULT => T_DEFAULT, - T_WHILE => T_WHILE, - T_ELSE => T_ELSE, - T_ELSEIF => T_ELSEIF, - T_FOR => T_FOR, - T_FOREACH => T_FOREACH, - T_DO => T_DO, - T_TRY => T_TRY, - T_CATCH => T_CATCH, - T_FINALLY => T_FINALLY, - T_PROPERTY => T_PROPERTY, - T_OBJECT => T_OBJECT, - T_USE => T_USE, - T_MATCH => T_MATCH, - ]; - - /** - * Tokens that represent scope modifiers. - * - * @var array - */ - public static $scopeModifiers = [ - T_PRIVATE => T_PRIVATE, - T_PUBLIC => T_PUBLIC, - T_PROTECTED => T_PROTECTED, - ]; - - /** - * Tokens that can prefix a method name - * - * @var array - */ - public static $methodPrefixes = [ - T_PRIVATE => T_PRIVATE, - T_PUBLIC => T_PUBLIC, - T_PROTECTED => T_PROTECTED, - T_ABSTRACT => T_ABSTRACT, - T_STATIC => T_STATIC, - T_FINAL => T_FINAL, - ]; - - /** - * Tokens that open code blocks. - * - * @var array - */ - public static $blockOpeners = [ - T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET, - T_OPEN_SQUARE_BRACKET => T_OPEN_SQUARE_BRACKET, - T_OPEN_PARENTHESIS => T_OPEN_PARENTHESIS, - T_OBJECT => T_OBJECT, - ]; - - /** - * Tokens that don't represent code. - * - * @var array - */ - public static $emptyTokens = [ - T_WHITESPACE => T_WHITESPACE, - T_COMMENT => T_COMMENT, - T_DOC_COMMENT => T_DOC_COMMENT, - T_DOC_COMMENT_STAR => T_DOC_COMMENT_STAR, - T_DOC_COMMENT_WHITESPACE => T_DOC_COMMENT_WHITESPACE, - T_DOC_COMMENT_TAG => T_DOC_COMMENT_TAG, - T_DOC_COMMENT_OPEN_TAG => T_DOC_COMMENT_OPEN_TAG, - T_DOC_COMMENT_CLOSE_TAG => T_DOC_COMMENT_CLOSE_TAG, - T_DOC_COMMENT_STRING => T_DOC_COMMENT_STRING, - T_PHPCS_ENABLE => T_PHPCS_ENABLE, - T_PHPCS_DISABLE => T_PHPCS_DISABLE, - T_PHPCS_SET => T_PHPCS_SET, - T_PHPCS_IGNORE => T_PHPCS_IGNORE, - T_PHPCS_IGNORE_FILE => T_PHPCS_IGNORE_FILE, - ]; - - /** - * Tokens that are comments. - * - * @var array - */ - public static $commentTokens = [ - T_COMMENT => T_COMMENT, - T_DOC_COMMENT => T_DOC_COMMENT, - T_DOC_COMMENT_STAR => T_DOC_COMMENT_STAR, - T_DOC_COMMENT_WHITESPACE => T_DOC_COMMENT_WHITESPACE, - T_DOC_COMMENT_TAG => T_DOC_COMMENT_TAG, - T_DOC_COMMENT_OPEN_TAG => T_DOC_COMMENT_OPEN_TAG, - T_DOC_COMMENT_CLOSE_TAG => T_DOC_COMMENT_CLOSE_TAG, - T_DOC_COMMENT_STRING => T_DOC_COMMENT_STRING, - T_PHPCS_ENABLE => T_PHPCS_ENABLE, - T_PHPCS_DISABLE => T_PHPCS_DISABLE, - T_PHPCS_SET => T_PHPCS_SET, - T_PHPCS_IGNORE => T_PHPCS_IGNORE, - T_PHPCS_IGNORE_FILE => T_PHPCS_IGNORE_FILE, - ]; - - /** - * Tokens that are comments containing PHPCS instructions. - * - * @var array - */ - public static $phpcsCommentTokens = [ - T_PHPCS_ENABLE => T_PHPCS_ENABLE, - T_PHPCS_DISABLE => T_PHPCS_DISABLE, - T_PHPCS_SET => T_PHPCS_SET, - T_PHPCS_IGNORE => T_PHPCS_IGNORE, - T_PHPCS_IGNORE_FILE => T_PHPCS_IGNORE_FILE, - ]; - - /** - * Tokens that represent strings. - * - * Note that T_STRINGS are NOT represented in this list. - * - * @var array - */ - public static $stringTokens = [ - T_CONSTANT_ENCAPSED_STRING => T_CONSTANT_ENCAPSED_STRING, - T_DOUBLE_QUOTED_STRING => T_DOUBLE_QUOTED_STRING, - ]; - - /** - * Tokens that represent text strings. - * - * @var array - */ - public static $textStringTokens = [ - T_CONSTANT_ENCAPSED_STRING => T_CONSTANT_ENCAPSED_STRING, - T_DOUBLE_QUOTED_STRING => T_DOUBLE_QUOTED_STRING, - T_INLINE_HTML => T_INLINE_HTML, - T_HEREDOC => T_HEREDOC, - T_NOWDOC => T_NOWDOC, - ]; - - /** - * Tokens that represent brackets and parenthesis. - * - * @var array - */ - public static $bracketTokens = [ - T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET, - T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET, - T_OPEN_SQUARE_BRACKET => T_OPEN_SQUARE_BRACKET, - T_CLOSE_SQUARE_BRACKET => T_CLOSE_SQUARE_BRACKET, - T_OPEN_PARENTHESIS => T_OPEN_PARENTHESIS, - T_CLOSE_PARENTHESIS => T_CLOSE_PARENTHESIS, - ]; - - /** - * Tokens that include files. - * - * @var array - */ - public static $includeTokens = [ - T_REQUIRE_ONCE => T_REQUIRE_ONCE, - T_REQUIRE => T_REQUIRE, - T_INCLUDE_ONCE => T_INCLUDE_ONCE, - T_INCLUDE => T_INCLUDE, - ]; - - /** - * Tokens that make up a heredoc string. - * - * @var array - */ - public static $heredocTokens = [ - T_START_HEREDOC => T_START_HEREDOC, - T_END_HEREDOC => T_END_HEREDOC, - T_HEREDOC => T_HEREDOC, - T_START_NOWDOC => T_START_NOWDOC, - T_END_NOWDOC => T_END_NOWDOC, - T_NOWDOC => T_NOWDOC, - ]; - - /** - * Tokens that represent the names of called functions. - * - * Mostly, these are just strings. But PHP tokenizes some language - * constructs and functions using their own tokens. - * - * @var array - */ - public static $functionNameTokens = [ - T_STRING => T_STRING, - T_EVAL => T_EVAL, - T_EXIT => T_EXIT, - T_INCLUDE => T_INCLUDE, - T_INCLUDE_ONCE => T_INCLUDE_ONCE, - T_REQUIRE => T_REQUIRE, - T_REQUIRE_ONCE => T_REQUIRE_ONCE, - T_ISSET => T_ISSET, - T_UNSET => T_UNSET, - T_EMPTY => T_EMPTY, - T_SELF => T_SELF, - T_PARENT => T_PARENT, - T_STATIC => T_STATIC, - ]; - - /** - * Tokens that open class and object scopes. - * - * @var array - */ - public static $ooScopeTokens = [ - T_CLASS => T_CLASS, - T_ANON_CLASS => T_ANON_CLASS, - T_INTERFACE => T_INTERFACE, - T_TRAIT => T_TRAIT, - T_ENUM => T_ENUM, - ]; - - /** - * Tokens representing PHP magic constants. - * - * @var array => - * - * @link https://www.php.net/language.constants.predefined PHP Manual on magic constants - */ - public static $magicConstants = [ - T_CLASS_C => T_CLASS_C, - T_DIR => T_DIR, - T_FILE => T_FILE, - T_FUNC_C => T_FUNC_C, - T_LINE => T_LINE, - T_METHOD_C => T_METHOD_C, - T_NS_C => T_NS_C, - T_TRAIT_C => T_TRAIT_C, - ]; - - /** - * Tokens representing context sensitive keywords in PHP. - * - * @var array - * - * https://wiki.php.net/rfc/context_sensitive_lexer - */ - public static $contextSensitiveKeywords = [ - T_ABSTRACT => T_ABSTRACT, - T_ARRAY => T_ARRAY, - T_AS => T_AS, - T_BREAK => T_BREAK, - T_CALLABLE => T_CALLABLE, - T_CASE => T_CASE, - T_CATCH => T_CATCH, - T_CLASS => T_CLASS, - T_CLONE => T_CLONE, - T_CONST => T_CONST, - T_CONTINUE => T_CONTINUE, - T_DECLARE => T_DECLARE, - T_DEFAULT => T_DEFAULT, - T_DO => T_DO, - T_ECHO => T_ECHO, - T_ELSE => T_ELSE, - T_ELSEIF => T_ELSEIF, - T_EMPTY => T_EMPTY, - T_ENDDECLARE => T_ENDDECLARE, - T_ENDFOR => T_ENDFOR, - T_ENDFOREACH => T_ENDFOREACH, - T_ENDIF => T_ENDIF, - T_ENDSWITCH => T_ENDSWITCH, - T_ENDWHILE => T_ENDWHILE, - T_ENUM => T_ENUM, - T_EVAL => T_EVAL, - T_EXIT => T_EXIT, - T_EXTENDS => T_EXTENDS, - T_FINAL => T_FINAL, - T_FINALLY => T_FINALLY, - T_FN => T_FN, - T_FOR => T_FOR, - T_FOREACH => T_FOREACH, - T_FUNCTION => T_FUNCTION, - T_GLOBAL => T_GLOBAL, - T_GOTO => T_GOTO, - T_IF => T_IF, - T_IMPLEMENTS => T_IMPLEMENTS, - T_INCLUDE => T_INCLUDE, - T_INCLUDE_ONCE => T_INCLUDE_ONCE, - T_INSTANCEOF => T_INSTANCEOF, - T_INSTEADOF => T_INSTEADOF, - T_INTERFACE => T_INTERFACE, - T_ISSET => T_ISSET, - T_LIST => T_LIST, - T_LOGICAL_AND => T_LOGICAL_AND, - T_LOGICAL_OR => T_LOGICAL_OR, - T_LOGICAL_XOR => T_LOGICAL_XOR, - T_MATCH => T_MATCH, - T_NAMESPACE => T_NAMESPACE, - T_NEW => T_NEW, - T_PRINT => T_PRINT, - T_PRIVATE => T_PRIVATE, - T_PROTECTED => T_PROTECTED, - T_PUBLIC => T_PUBLIC, - T_READONLY => T_READONLY, - T_REQUIRE => T_REQUIRE, - T_REQUIRE_ONCE => T_REQUIRE_ONCE, - T_RETURN => T_RETURN, - T_STATIC => T_STATIC, - T_SWITCH => T_SWITCH, - T_THROW => T_THROW, - T_TRAIT => T_TRAIT, - T_TRY => T_TRY, - T_UNSET => T_UNSET, - T_USE => T_USE, - T_VAR => T_VAR, - T_WHILE => T_WHILE, - T_YIELD => T_YIELD, - T_YIELD_FROM => T_YIELD_FROM, - ]; - - - /** - * Given a token, returns the name of the token. - * - * If passed an integer, the token name is sourced from PHP's token_name() - * function. If passed a string, it is assumed to be a PHPCS-supplied token - * that begins with PHPCS_T_, so the name is sourced from the token value itself. - * - * @param int|string $token The token to get the name for. - * - * @return string - */ - public static function tokenName($token) - { - if (is_string($token) === false) { - // PHP-supplied token name. - return token_name($token); - } - - return substr($token, 6); - - }//end tokenName() - - - /** - * Returns the highest weighted token type. - * - * Tokens are weighted by their approximate frequency of appearance in code - * - the less frequently they appear in the code, the higher the weighting. - * For example T_CLASS tokens appear very infrequently in a file, and - * therefore have a high weighting. - * - * If there are no weightings for any of the specified tokens, the first token - * seen in the passed array will be returned. - * - * @param array $tokens The token types to get the highest weighted - * type for. - * - * @return int The highest weighted token. - * On equal "weight", returns the first token of that particular weight. - */ - public static function getHighestWeightedToken(array $tokens) - { - $highest = -1; - $highestType = false; - - $weights = self::$weightings; - - foreach ($tokens as $token) { - if (isset($weights[$token]) === true) { - $weight = $weights[$token]; - } else { - $weight = 0; - } - - if ($weight > $highest) { - $highest = $weight; - $highestType = $token; - } - } - - return $highestType; - - }//end getHighestWeightedToken() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/ConfigDouble.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/ConfigDouble.php deleted file mode 100644 index 62caaba8..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/ConfigDouble.php +++ /dev/null @@ -1,212 +0,0 @@ - - * @copyright 2024 Juliette Reinders Folmer. All rights reserved. - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Tests; - -use PHP_CodeSniffer\Config; -use ReflectionProperty; - -final class ConfigDouble extends Config -{ - - /** - * Whether or not the setting of a standard should be skipped. - * - * @var boolean - */ - private $skipSettingStandard = false; - - - /** - * Creates a clean Config object and populates it with command line values. - * - * @param array $cliArgs An array of values gathered from CLI args. - * @param bool $skipSettingStandard Whether to skip setting a standard to prevent - * the Config class trying to auto-discover a ruleset file. - * Should only be set to `true` for tests which actually test - * the ruleset auto-discovery. - * Note: there is no need to set this to `true` when a standard - * is being passed via the `$cliArgs`. Those settings will always - * respected. - * Defaults to `false`. Will result in the standard being set - * to "PSR1" if not provided via `$cliArgs`. - * @param bool $skipSettingReportWidth Whether to skip setting a report-width to prevent - * the Config class trying to auto-discover the screen width. - * Should only be set to `true` for tests which actually test - * the screen width auto-discovery. - * Note: there is no need to set this to `true` when a report-width - * is being passed via the `$cliArgs`. Those settings will always - * respected. - * Defaults to `false`. Will result in the reportWidth being set - * to "80" if not provided via `$cliArgs`. - * - * @return void - */ - public function __construct(array $cliArgs=[], $skipSettingStandard=false, $skipSettingReportWidth=false) - { - $this->skipSettingStandard = $skipSettingStandard; - - $this->resetSelectProperties(); - $this->preventReadingCodeSnifferConfFile(); - - parent::__construct($cliArgs); - - if ($skipSettingReportWidth !== true) { - $this->preventAutoDiscoveryScreenWidth(); - } - - }//end __construct() - - - /** - * Ensures the static properties in the Config class are reset to their default values - * when the ConfigDouble is no longer used. - * - * @return void - */ - public function __destruct() - { - $this->setStaticConfigProperty('overriddenDefaults', []); - $this->setStaticConfigProperty('executablePaths', []); - $this->setStaticConfigProperty('configData', null); - $this->setStaticConfigProperty('configDataFile', null); - - }//end __destruct() - - - /** - * Sets the command line values and optionally prevents a file system search for a custom ruleset. - * - * @param array $args An array of command line arguments to set. - * - * @return void - */ - public function setCommandLineValues($args) - { - parent::setCommandLineValues($args); - - if ($this->skipSettingStandard !== true) { - $this->preventSearchingForRuleset(); - } - - }//end setCommandLineValues() - - - /** - * Reset a few properties on the Config class to their default values. - * - * @return void - */ - private function resetSelectProperties() - { - $this->setStaticConfigProperty('overriddenDefaults', []); - $this->setStaticConfigProperty('executablePaths', []); - - }//end resetSelectProperties() - - - /** - * Prevent the values in a potentially available user-specific `CodeSniffer.conf` file - * from influencing the tests. - * - * This also prevents some file system calls which can influence the test runtime. - * - * @return void - */ - private function preventReadingCodeSnifferConfFile() - { - $this->setStaticConfigProperty('configData', []); - $this->setStaticConfigProperty('configDataFile', ''); - - }//end preventReadingCodeSnifferConfFile() - - - /** - * Prevent searching for a custom ruleset by setting a standard, but only if the test - * being run doesn't set a standard itself. - * - * This also prevents some file system calls which can influence the test runtime. - * - * The standard being set is the smallest one available so the ruleset initialization - * will be the fastest possible. - * - * @return void - */ - private function preventSearchingForRuleset() - { - $overriddenDefaults = $this->getStaticConfigProperty('overriddenDefaults'); - if (isset($overriddenDefaults['standards']) === false) { - $this->standards = ['PSR1']; - $overriddenDefaults['standards'] = true; - } - - self::setStaticConfigProperty('overriddenDefaults', $overriddenDefaults); - - }//end preventSearchingForRuleset() - - - /** - * Prevent a call to stty to figure out the screen width, but only if the test being run - * doesn't set a report width itself. - * - * @return void - */ - private function preventAutoDiscoveryScreenWidth() - { - $settings = $this->getSettings(); - if ($settings['reportWidth'] === 'auto') { - $this->reportWidth = self::DEFAULT_REPORT_WIDTH; - } - - }//end preventAutoDiscoveryScreenWidth() - - - /** - * Helper function to retrieve the value of a private static property on the Config class. - * - * @param string $name The name of the property to retrieve. - * - * @return mixed - */ - private function getStaticConfigProperty($name) - { - $property = new ReflectionProperty('PHP_CodeSniffer\Config', $name); - $property->setAccessible(true); - return $property->getValue(); - - }//end getStaticConfigProperty() - - - /** - * Helper function to set the value of a private static property on the Config class. - * - * @param string $name The name of the property to set. - * @param mixed $value The value to set the property to. - * - * @return void - */ - private function setStaticConfigProperty($name, $value) - { - $property = new ReflectionProperty('PHP_CodeSniffer\Config', $name); - $property->setAccessible(true); - $property->setValue(null, $value); - $property->setAccessible(false); - - }//end setStaticConfigProperty() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/AbstractMethodUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/AbstractMethodUnitTest.php deleted file mode 100644 index 3784fb07..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/AbstractMethodUnitTest.php +++ /dev/null @@ -1,223 +0,0 @@ - - * @copyright 2018-2019 Juliette Reinders Folmer. All rights reserved. - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Tests\Core; - -use Exception; -use PHP_CodeSniffer\Files\DummyFile; -use PHP_CodeSniffer\Files\File; -use PHP_CodeSniffer\Ruleset; -use PHP_CodeSniffer\Tests\ConfigDouble; -use PHPUnit\Framework\TestCase; - -abstract class AbstractMethodUnitTest extends TestCase -{ - - /** - * The file extension of the test case file (without leading dot). - * - * This allows child classes to overrule the default `inc` with, for instance, - * `js` or `css` when applicable. - * - * @var string - */ - protected static $fileExtension = 'inc'; - - /** - * The tab width setting to use when tokenizing the file. - * - * This allows for test case files to use a different tab width than the default. - * - * @var integer - */ - protected static $tabWidth = 4; - - /** - * The \PHP_CodeSniffer\Files\File object containing the parsed contents of the test case file. - * - * @var \PHP_CodeSniffer\Files\File - */ - protected static $phpcsFile; - - - /** - * Initialize & tokenize \PHP_CodeSniffer\Files\File with code from the test case file. - * - * The test case file for a unit test class has to be in the same directory - * directory and use the same file name as the test class, using the .inc extension. - * - * @beforeClass - * - * @return void - */ - public static function initializeFile() - { - $_SERVER['argv'] = []; - $config = new ConfigDouble(); - // Also set a tab-width to enable testing tab-replaced vs `orig_content`. - $config->tabWidth = static::$tabWidth; - - $ruleset = new Ruleset($config); - - // Default to a file with the same name as the test class. Extension is property based. - $relativeCN = str_replace(__NAMESPACE__, '', get_called_class()); - $relativePath = str_replace('\\', DIRECTORY_SEPARATOR, $relativeCN); - $pathToTestFile = realpath(__DIR__).$relativePath.'.'.static::$fileExtension; - - // Make sure the file gets parsed correctly based on the file type. - $contents = 'phpcs_input_file: '.$pathToTestFile.PHP_EOL; - $contents .= file_get_contents($pathToTestFile); - - self::$phpcsFile = new DummyFile($contents, $ruleset, $config); - self::$phpcsFile->parse(); - - }//end initializeFile() - - - /** - * Clean up after finished test by resetting all static properties on the class to their default values. - * - * Note: This is a PHPUnit cross-version compatible {@see \PHPUnit\Framework\TestCase::tearDownAfterClass()} - * method. - * - * @afterClass - * - * @return void - */ - public static function reset() - { - // Explicitly trigger __destruct() on the ConfigDouble to reset the Config statics. - // The explicit method call prevents potential stray test-local references to the $config object - // preventing the destructor from running the clean up (which without stray references would be - // automagically triggered when `self::$phpcsFile` is reset, but we can't definitively rely on that). - if (isset(self::$phpcsFile) === true) { - self::$phpcsFile->config->__destruct(); - } - - self::$fileExtension = 'inc'; - self::$tabWidth = 4; - self::$phpcsFile = null; - - }//end reset() - - - /** - * Get the token pointer for a target token based on a specific comment found on the line before. - * - * Note: the test delimiter comment MUST start with "/* test" to allow this function to - * distinguish between comments used *in* a test and test delimiters. - * - * @param string $commentString The delimiter comment to look for. - * @param int|string|array $tokenType The type of token(s) to look for. - * @param string $tokenContent Optional. The token content for the target token. - * - * @return int - */ - public function getTargetToken($commentString, $tokenType, $tokenContent=null) - { - return self::getTargetTokenFromFile(self::$phpcsFile, $commentString, $tokenType, $tokenContent); - - }//end getTargetToken() - - - /** - * Get the token pointer for a target token based on a specific comment found on the line before. - * - * Note: the test delimiter comment MUST start with "/* test" to allow this function to - * distinguish between comments used *in* a test and test delimiters. - * - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file to find the token in. - * @param string $commentString The delimiter comment to look for. - * @param int|string|array $tokenType The type of token(s) to look for. - * @param string $tokenContent Optional. The token content for the target token. - * - * @return int - * - * @throws Exception When the test delimiter comment is not found. - * @throws Exception When the test target token is not found. - */ - public static function getTargetTokenFromFile(File $phpcsFile, $commentString, $tokenType, $tokenContent=null) - { - $start = ($phpcsFile->numTokens - 1); - $comment = $phpcsFile->findPrevious( - T_COMMENT, - $start, - null, - false, - $commentString - ); - - if ($comment === false) { - throw new Exception( - sprintf('Failed to find the test marker: %s in test case file %s', $commentString, $phpcsFile->getFilename()) - ); - } - - $tokens = $phpcsFile->getTokens(); - $end = ($start + 1); - - // Limit the token finding to between this and the next delimiter comment. - for ($i = ($comment + 1); $i < $end; $i++) { - if ($tokens[$i]['code'] !== T_COMMENT) { - continue; - } - - if (stripos($tokens[$i]['content'], '/* test') === 0) { - $end = $i; - break; - } - } - - $target = $phpcsFile->findNext( - $tokenType, - ($comment + 1), - $end, - false, - $tokenContent - ); - - if ($target === false) { - $msg = 'Failed to find test target token for comment string: '.$commentString; - if ($tokenContent !== null) { - $msg .= ' with token content: '.$tokenContent; - } - - throw new Exception($msg); - } - - return $target; - - }//end getTargetTokenFromFile() - - - /** - * Helper method to tell PHPUnit to expect a PHPCS RuntimeException in a PHPUnit cross-version - * compatible manner. - * - * @param string $message The expected exception message. - * - * @return void - */ - public function expectRunTimeException($message) - { - $exception = 'PHP_CodeSniffer\Exceptions\RuntimeException'; - - if (method_exists($this, 'expectException') === true) { - // PHPUnit 5+. - $this->expectException($exception); - $this->expectExceptionMessage($message); - } else { - // PHPUnit 4. - $this->setExpectedException($exception, $message); - } - - }//end expectRunTimeException() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/AllTests.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/AllTests.php deleted file mode 100644 index a5465f98..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/AllTests.php +++ /dev/null @@ -1,63 +0,0 @@ - - * @author Juliette Reinders Folmer - * @copyright 2006-2019 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Tests\Core; - -use PHP_CodeSniffer\Tests\FileList; -use PHPUnit\Framework\TestSuite; -use PHPUnit\TextUI\TestRunner; - -class AllTests -{ - - - /** - * Prepare the test runner. - * - * @return void - */ - public static function main() - { - TestRunner::run(self::suite()); - - }//end main() - - - /** - * Add all core unit tests into a test suite. - * - * @return \PHPUnit\Framework\TestSuite - */ - public static function suite() - { - $suite = new TestSuite('PHP CodeSniffer Core'); - - $testFileIterator = new FileList(__DIR__, '', '`Test\.php$`Di'); - foreach ($testFileIterator->fileIterator as $file) { - if (strpos($file, 'AbstractMethodUnitTest.php') !== false) { - continue; - } - - include_once $file; - - $class = str_replace(__DIR__, '', $file); - $class = str_replace('.php', '', $class); - $class = str_replace('/', '\\', $class); - $class = 'PHP_CodeSniffer\Tests\Core'.$class; - - $suite->addTestSuite($class); - } - - return $suite; - - }//end suite() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Config/ReportWidthTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Config/ReportWidthTest.php deleted file mode 100644 index d10e7a07..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Config/ReportWidthTest.php +++ /dev/null @@ -1,332 +0,0 @@ - - * @copyright 2006-2023 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Tests\Core\Config; - -use PHP_CodeSniffer\Config; -use PHPUnit\Framework\TestCase; -use ReflectionProperty; - -/** - * Tests for the \PHP_CodeSniffer\Config reportWidth value. - * - * @covers \PHP_CodeSniffer\Config::__get - */ -final class ReportWidthTest extends TestCase -{ - - - /** - * Set static properties in the Config class to prevent tests influencing each other. - * - * @before - * - * @return void - */ - public static function cleanConfig() - { - // Set to the property's default value to clear out potentially set values from other tests. - self::setStaticProperty('executablePaths', []); - - // Set to a usable value to circumvent Config trying to find a phpcs.xml config file. - self::setStaticProperty('overriddenDefaults', ['standards' => ['PSR1']]); - - // Set to values which prevent the test-runner user's `CodeSniffer.conf` file - // from being read and influencing the tests. - self::setStaticProperty('configData', []); - self::setStaticProperty('configDataFile', ''); - - }//end cleanConfig() - - - /** - * Clean up after each finished test. - * - * @after - * - * @return void - */ - public function resetConfig() - { - $_SERVER['argv'] = []; - - }//end resetConfig() - - - /** - * Reset the static properties in the Config class to their true defaults to prevent this class - * from influencing other tests. - * - * @afterClass - * - * @return void - */ - public static function resetConfigToDefaults() - { - self::setStaticProperty('overriddenDefaults', []); - self::setStaticProperty('executablePaths', []); - self::setStaticProperty('configData', null); - self::setStaticProperty('configDataFile', null); - $_SERVER['argv'] = []; - - }//end resetConfigToDefaults() - - - /** - * Test that report width without overrules will always be set to a non-0 positive integer. - * - * @covers \PHP_CodeSniffer\Config::__set - * @covers \PHP_CodeSniffer\Config::restoreDefaults - * - * @return void - */ - public function testReportWidthDefault() - { - $config = new Config(); - - // Can't test the exact value as "auto" will resolve differently depending on the machine running the tests. - $this->assertTrue(is_int($config->reportWidth), 'Report width is not an integer'); - $this->assertGreaterThan(0, $config->reportWidth, 'Report width is not greater than 0'); - - }//end testReportWidthDefault() - - - /** - * Test that the report width will be set to a non-0 positive integer when not found in the CodeSniffer.conf file. - * - * @covers \PHP_CodeSniffer\Config::__set - * @covers \PHP_CodeSniffer\Config::restoreDefaults - * - * @return void - */ - public function testReportWidthWillBeSetFromAutoWhenNotFoundInConfFile() - { - $phpCodeSnifferConfig = [ - 'default_standard' => 'PSR2', - 'show_warnings' => '0', - ]; - - $this->setStaticProperty('configData', $phpCodeSnifferConfig); - - $config = new Config(); - - // Can't test the exact value as "auto" will resolve differently depending on the machine running the tests. - $this->assertTrue(is_int($config->reportWidth), 'Report width is not an integer'); - $this->assertGreaterThan(0, $config->reportWidth, 'Report width is not greater than 0'); - - }//end testReportWidthWillBeSetFromAutoWhenNotFoundInConfFile() - - - /** - * Test that the report width will be set correctly when found in the CodeSniffer.conf file. - * - * @covers \PHP_CodeSniffer\Config::__set - * @covers \PHP_CodeSniffer\Config::getConfigData - * @covers \PHP_CodeSniffer\Config::restoreDefaults - * - * @return void - */ - public function testReportWidthCanBeSetFromConfFile() - { - $phpCodeSnifferConfig = [ - 'default_standard' => 'PSR2', - 'report_width' => '120', - ]; - - $this->setStaticProperty('configData', $phpCodeSnifferConfig); - - $config = new Config(); - $this->assertSame(120, $config->reportWidth); - - }//end testReportWidthCanBeSetFromConfFile() - - - /** - * Test that the report width will be set correctly when passed as a CLI argument. - * - * @covers \PHP_CodeSniffer\Config::__set - * @covers \PHP_CodeSniffer\Config::processLongArgument - * - * @return void - */ - public function testReportWidthCanBeSetFromCLI() - { - $_SERVER['argv'] = [ - 'phpcs', - '--report-width=100', - ]; - - $config = new Config(); - $this->assertSame(100, $config->reportWidth); - - }//end testReportWidthCanBeSetFromCLI() - - - /** - * Test that the report width will be set correctly when multiple report widths are passed on the CLI. - * - * @covers \PHP_CodeSniffer\Config::__set - * @covers \PHP_CodeSniffer\Config::processLongArgument - * - * @return void - */ - public function testReportWidthWhenSetFromCLIFirstValuePrevails() - { - $_SERVER['argv'] = [ - 'phpcs', - '--report-width=100', - '--report-width=200', - ]; - - $config = new Config(); - $this->assertSame(100, $config->reportWidth); - - }//end testReportWidthWhenSetFromCLIFirstValuePrevails() - - - /** - * Test that a report width passed as a CLI argument will overrule a report width set in a CodeSniffer.conf file. - * - * @covers \PHP_CodeSniffer\Config::__set - * @covers \PHP_CodeSniffer\Config::processLongArgument - * @covers \PHP_CodeSniffer\Config::getConfigData - * - * @return void - */ - public function testReportWidthSetFromCLIOverrulesConfFile() - { - $phpCodeSnifferConfig = [ - 'default_standard' => 'PSR2', - 'report_format' => 'summary', - 'show_warnings' => '0', - 'show_progress' => '1', - 'report_width' => '120', - ]; - - $this->setStaticProperty('configData', $phpCodeSnifferConfig); - - $cliArgs = [ - 'phpcs', - '--report-width=180', - ]; - - $config = new Config($cliArgs); - $this->assertSame(180, $config->reportWidth); - - }//end testReportWidthSetFromCLIOverrulesConfFile() - - - /** - * Test that the report width will be set to a non-0 positive integer when set to "auto". - * - * @covers \PHP_CodeSniffer\Config::__set - * - * @return void - */ - public function testReportWidthInputHandlingForAuto() - { - $config = new Config(); - $config->reportWidth = 'auto'; - - // Can't test the exact value as "auto" will resolve differently depending on the machine running the tests. - $this->assertTrue(is_int($config->reportWidth), 'Report width is not an integer'); - $this->assertGreaterThan(0, $config->reportWidth, 'Report width is not greater than 0'); - - }//end testReportWidthInputHandlingForAuto() - - - /** - * Test that the report width will be set correctly for various types of input. - * - * @param mixed $value Input value received. - * @param int $expected Expected report width. - * - * @dataProvider dataReportWidthInputHandling - * @covers \PHP_CodeSniffer\Config::__set - * - * @return void - */ - public function testReportWidthInputHandling($value, $expected) - { - $config = new Config(); - $config->reportWidth = $value; - - $this->assertSame($expected, $config->reportWidth); - - }//end testReportWidthInputHandling() - - - /** - * Data provider. - * - * @return array> - */ - public static function dataReportWidthInputHandling() - { - return [ - 'No value (empty string)' => [ - 'value' => '', - 'expected' => Config::DEFAULT_REPORT_WIDTH, - ], - 'Value: invalid input type null' => [ - 'value' => null, - 'expected' => Config::DEFAULT_REPORT_WIDTH, - ], - 'Value: invalid input type false' => [ - 'value' => false, - 'expected' => Config::DEFAULT_REPORT_WIDTH, - ], - 'Value: invalid input type float' => [ - 'value' => 100.50, - 'expected' => Config::DEFAULT_REPORT_WIDTH, - ], - 'Value: invalid string value "invalid"' => [ - 'value' => 'invalid', - 'expected' => Config::DEFAULT_REPORT_WIDTH, - ], - 'Value: invalid string value, non-integer string "50.25"' => [ - 'value' => '50.25', - 'expected' => Config::DEFAULT_REPORT_WIDTH, - ], - 'Value: valid numeric string value' => [ - 'value' => '250', - 'expected' => 250, - ], - 'Value: valid int value' => [ - 'value' => 220, - 'expected' => 220, - ], - 'Value: negative int value becomes positive int' => [ - 'value' => -180, - 'expected' => 180, - ], - ]; - - }//end dataReportWidthInputHandling() - - - /** - * Helper function to set a static property on the Config class. - * - * @param string $name The name of the property to set. - * @param mixed $value The value to set the property to. - * - * @return void - */ - public static function setStaticProperty($name, $value) - { - $property = new ReflectionProperty('PHP_CodeSniffer\Config', $name); - $property->setAccessible(true); - $property->setValue(null, $value); - $property->setAccessible(false); - - }//end setStaticProperty() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/ErrorSuppressionTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/ErrorSuppressionTest.php deleted file mode 100644 index ccd9f479..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/ErrorSuppressionTest.php +++ /dev/null @@ -1,1278 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Tests\Core; - -use PHP_CodeSniffer\Files\DummyFile; -use PHP_CodeSniffer\Ruleset; -use PHP_CodeSniffer\Tests\ConfigDouble; -use PHPUnit\Framework\TestCase; - -/** - * Tests for PHP_CodeSniffer error suppression tags. - * - * @covers PHP_CodeSniffer\Files\File::addMessage - * @covers PHP_CodeSniffer\Tokenizers\Tokenizer::createPositionMap - */ -final class ErrorSuppressionTest extends TestCase -{ - - - /** - * Test suppressing a single error. - * - * @param string $before Annotation to place before the code. - * @param string $after Annotation to place after the code. - * @param int $expectedErrors Optional. Number of errors expected. - * Defaults to 0. - * - * @dataProvider dataSuppressError - * - * @return void - */ - public function testSuppressError($before, $after, $expectedErrors=0) - { - static $config, $ruleset; - - if (isset($config, $ruleset) === false) { - $config = new ConfigDouble(); - $config->standards = ['Generic']; - $config->sniffs = ['Generic.PHP.LowerCaseConstant']; - - $ruleset = new Ruleset($config); - } - - $content = 'process(); - - $this->assertSame($expectedErrors, $file->getErrorCount()); - $this->assertCount($expectedErrors, $file->getErrors()); - - }//end testSuppressError() - - - /** - * Data provider. - * - * @see testSuppressError() - * - * @return array> - */ - public static function dataSuppressError() - { - return [ - 'no suppression' => [ - 'before' => '', - 'after' => '', - 'expectedErrors' => 1, - ], - - // Inline slash comments. - 'disable/enable: slash comment' => [ - 'before' => '// phpcs:disable'.PHP_EOL, - 'after' => '// phpcs:enable', - ], - 'disable/enable: multi-line slash comment, tab indented' => [ - 'before' => "\t".'// For reasons'.PHP_EOL."\t".'// phpcs:disable'.PHP_EOL."\t", - 'after' => "\t".'// phpcs:enable', - ], - 'disable/enable: slash comment, with @' => [ - 'before' => '// @phpcs:disable'.PHP_EOL, - 'after' => '// @phpcs:enable', - ], - 'disable/enable: slash comment, mixed case' => [ - 'before' => '// PHPCS:Disable'.PHP_EOL, - 'after' => '// pHPcs:enabLE', - ], - - // Inline hash comments. - 'disable/enable: hash comment' => [ - 'before' => '# phpcs:disable'.PHP_EOL, - 'after' => '# phpcs:enable', - ], - 'disable/enable: multi-line hash comment, tab indented' => [ - 'before' => "\t".'# For reasons'.PHP_EOL."\t".'# phpcs:disable'.PHP_EOL."\t", - 'after' => "\t".'# phpcs:enable', - ], - 'disable/enable: hash comment, with @' => [ - 'before' => '# @phpcs:disable'.PHP_EOL, - 'after' => '# @phpcs:enable', - ], - 'disable/enable: hash comment, mixed case' => [ - 'before' => '# PHPCS:Disable'.PHP_EOL, - 'after' => '# pHPcs:enabLE', - ], - - // Inline star (block) comments. - 'disable/enable: star comment' => [ - 'before' => '/* phpcs:disable */'.PHP_EOL, - 'after' => '/* phpcs:enable */', - ], - 'disable/enable: multi-line star comment' => [ - 'before' => '/*'.PHP_EOL.' phpcs:disable'.PHP_EOL.' */'.PHP_EOL, - 'after' => '/*'.PHP_EOL.' phpcs:enable'.PHP_EOL.' */', - ], - 'disable/enable: multi-line star comment, each line starred' => [ - 'before' => '/*'.PHP_EOL.' * phpcs:disable'.PHP_EOL.' */'.PHP_EOL, - 'after' => '/*'.PHP_EOL.' * phpcs:enable'.PHP_EOL.' */', - ], - 'disable/enable: multi-line star comment, each line starred, tab indented' => [ - 'before' => "\t".'/*'.PHP_EOL."\t".' * phpcs:disable'.PHP_EOL."\t".' */'.PHP_EOL."\t", - 'after' => "\t".'/*'.PHP_EOL.' * phpcs:enable'.PHP_EOL.' */', - ], - - // Docblock comments. - 'disable/enable: single line docblock comment' => [ - 'before' => '/** phpcs:disable */'.PHP_EOL, - 'after' => '/** phpcs:enable */', - ], - - // Deprecated syntax. - 'old style: slash comment' => [ - 'before' => '// @codingStandardsIgnoreStart'.PHP_EOL, - 'after' => '// @codingStandardsIgnoreEnd', - ], - 'old style: star comment' => [ - 'before' => '/* @codingStandardsIgnoreStart */'.PHP_EOL, - 'after' => '/* @codingStandardsIgnoreEnd */', - ], - 'old style: multi-line star comment' => [ - 'before' => '/*'.PHP_EOL.' @codingStandardsIgnoreStart'.PHP_EOL.' */'.PHP_EOL, - 'after' => '/*'.PHP_EOL.' @codingStandardsIgnoreEnd'.PHP_EOL.' */', - ], - 'old style: single line docblock comment' => [ - 'before' => '/** @codingStandardsIgnoreStart */'.PHP_EOL, - 'after' => '/** @codingStandardsIgnoreEnd */', - ], - ]; - - }//end dataSuppressError() - - - /** - * Test suppressing 1 out of 2 errors. - * - * @param string $before Annotation to place before the code. - * @param string $between Annotation to place between the code. - * @param int $expectedErrors Optional. Number of errors expected. - * Defaults to 1. - * - * @dataProvider dataSuppressSomeErrors - * - * @return void - */ - public function testSuppressSomeErrors($before, $between, $expectedErrors=1) - { - static $config, $ruleset; - - if (isset($config, $ruleset) === false) { - $config = new ConfigDouble(); - $config->standards = ['Generic']; - $config->sniffs = ['Generic.PHP.LowerCaseConstant']; - - $ruleset = new Ruleset($config); - } - - $content = <<process(); - - $this->assertSame($expectedErrors, $file->getErrorCount()); - $this->assertCount($expectedErrors, $file->getErrors()); - - }//end testSuppressSomeErrors() - - - /** - * Data provider. - * - * @see testSuppressSomeErrors() - * - * @return array> - */ - public static function dataSuppressSomeErrors() - { - return [ - 'no suppression' => [ - 'before' => '', - 'between' => '', - 'expectedErrors' => 2, - ], - - // With suppression. - 'disable/enable: slash comment' => [ - 'before' => '// phpcs:disable', - 'between' => '// phpcs:enable', - ], - 'disable/enable: slash comment, with @' => [ - 'before' => '// @phpcs:disable', - 'between' => '// @phpcs:enable', - ], - 'disable/enable: hash comment' => [ - 'before' => '# phpcs:disable', - 'between' => '# phpcs:enable', - ], - 'disable/enable: hash comment, with @' => [ - 'before' => '# @phpcs:disable', - 'between' => '# @phpcs:enable', - ], - 'disable/enable: single line docblock comment' => [ - 'before' => '/** phpcs:disable */', - 'between' => '/** phpcs:enable */', - ], - - // Deprecated syntax. - 'old style: slash comment' => [ - 'before' => '// @codingStandardsIgnoreStart', - 'between' => '// @codingStandardsIgnoreEnd', - ], - 'old style: single line docblock comment' => [ - 'before' => '/** @codingStandardsIgnoreStart */', - 'between' => '/** @codingStandardsIgnoreEnd */', - ], - ]; - - }//end dataSuppressSomeErrors() - - - /** - * Test suppressing a single warning. - * - * @param string $before Annotation to place before the code. - * @param string $after Annotation to place after the code. - * @param int $expectedWarnings Optional. Number of warnings expected. - * Defaults to 0. - * - * @dataProvider dataSuppressWarning - * - * @return void - */ - public function testSuppressWarning($before, $after, $expectedWarnings=0) - { - static $config, $ruleset; - - if (isset($config, $ruleset) === false) { - $config = new ConfigDouble(); - $config->standards = ['Generic']; - $config->sniffs = ['Generic.Commenting.Todo']; - - $ruleset = new Ruleset($config); - } - - $content = <<process(); - - $this->assertSame($expectedWarnings, $file->getWarningCount()); - $this->assertCount($expectedWarnings, $file->getWarnings()); - - }//end testSuppressWarning() - - - /** - * Data provider. - * - * @see testSuppressWarning() - * - * @return array> - */ - public static function dataSuppressWarning() - { - return [ - 'no suppression' => [ - 'before' => '', - 'after' => '', - 'expectedWarnings' => 1, - ], - - // With suppression. - 'disable/enable: slash comment' => [ - 'before' => '// phpcs:disable', - 'after' => '// phpcs:enable', - ], - 'disable/enable: slash comment, with @' => [ - 'before' => '// @phpcs:disable', - 'after' => '// @phpcs:enable', - ], - 'disable/enable: single line docblock comment' => [ - 'before' => '/** phpcs:disable */', - 'after' => '/** phpcs:enable */', - ], - - // Deprecated syntax. - 'old style: slash comment' => [ - 'before' => '// @codingStandardsIgnoreStart', - 'after' => '// @codingStandardsIgnoreEnd', - ], - 'old style: single line docblock comment' => [ - 'before' => '/** @codingStandardsIgnoreStart */', - 'after' => '/** @codingStandardsIgnoreEnd */', - ], - ]; - - }//end dataSuppressWarning() - - - /** - * Test suppressing a single error using a single line ignore. - * - * @param string $before Annotation to place before the code. - * @param string $after Optional. Annotation to place after the code. - * Defaults to an empty string. - * @param int $expectedErrors Optional. Number of errors expected. - * Defaults to 1. - * - * @dataProvider dataSuppressLine - * - * @return void - */ - public function testSuppressLine($before, $after='', $expectedErrors=1) - { - static $config, $ruleset; - - if (isset($config, $ruleset) === false) { - $config = new ConfigDouble(); - $config->standards = ['Generic']; - $config->sniffs = ['Generic.PHP.LowerCaseConstant']; - - $ruleset = new Ruleset($config); - } - - $content = <<process(); - - $this->assertSame($expectedErrors, $file->getErrorCount()); - $this->assertCount($expectedErrors, $file->getErrors()); - - }//end testSuppressLine() - - - /** - * Data provider. - * - * @see testSuppressLine() - * - * @return array> - */ - public static function dataSuppressLine() - { - return [ - 'no suppression' => [ - 'before' => '', - 'after' => '', - 'expectedErrors' => 2, - ], - - // With suppression on line before. - 'ignore: line before, slash comment' => [ - 'before' => '// phpcs:ignore', - ], - 'ignore: line before, slash comment, with @' => [ - 'before' => '// @phpcs:ignore', - ], - 'ignore: line before, hash comment' => [ - 'before' => '# phpcs:ignore', - ], - 'ignore: line before, hash comment, with @' => [ - 'before' => '# @phpcs:ignore', - ], - 'ignore: line before, star comment' => [ - 'before' => '/* phpcs:ignore */', - ], - 'ignore: line before, star comment, with @' => [ - 'before' => '/* @phpcs:ignore */', - ], - - // With suppression as trailing comment on code line. - 'ignore: end of line, slash comment' => [ - 'before' => '', - 'after' => ' // phpcs:ignore', - ], - 'ignore: end of line, slash comment, with @' => [ - 'before' => '', - 'after' => ' // @phpcs:ignore', - ], - 'ignore: end of line, hash comment' => [ - 'before' => '', - 'after' => ' # phpcs:ignore', - ], - 'ignore: end of line, hash comment, with @' => [ - 'before' => '', - 'after' => ' # @phpcs:ignore', - ], - - // Deprecated syntax. - 'old style: line before, slash comment' => [ - 'before' => '// @codingStandardsIgnoreLine', - ], - 'old style: end of line, slash comment' => [ - 'before' => '', - 'after' => ' // @codingStandardsIgnoreLine', - ], - ]; - - }//end dataSuppressLine() - - - /** - * Test suppressing a single error using a single line ignore in the middle of a line. - * - * @return void - */ - public function testSuppressLineMidLine() - { - $config = new ConfigDouble(); - $config->standards = ['Generic']; - $config->sniffs = ['Generic.PHP.LowerCaseConstant']; - - $ruleset = new Ruleset($config); - - $content = 'process(); - - $this->assertSame(0, $file->getErrorCount()); - $this->assertCount(0, $file->getErrors()); - - }//end testSuppressLineMidLine() - - - /** - * Test suppressing a single error using a single line ignore within a docblock. - * - * @return void - */ - public function testSuppressLineWithinDocblock() - { - $config = new ConfigDouble(); - $config->standards = ['Generic']; - $config->sniffs = ['Generic.Files.LineLength']; - - $ruleset = new Ruleset($config); - - // Process with @ suppression on line before inside docblock. - $comment = str_repeat('a ', 50); - $content = <<process(); - - $this->assertSame(0, $file->getErrorCount()); - $this->assertCount(0, $file->getErrors()); - - }//end testSuppressLineWithinDocblock() - - - /** - * Test that using a single line ignore does not interfere with other suppressions. - * - * @param string $before Annotation to place before the code. - * @param string $after Annotation to place after the code. - * - * @dataProvider dataNestedSuppressLine - * - * @return void - */ - public function testNestedSuppressLine($before, $after) - { - static $config, $ruleset; - - if (isset($config, $ruleset) === false) { - $config = new ConfigDouble(); - $config->standards = ['Generic']; - $config->sniffs = ['Generic.PHP.LowerCaseConstant']; - - $ruleset = new Ruleset($config); - } - - $content = <<process(); - - $this->assertSame(0, $file->getErrorCount()); - $this->assertCount(0, $file->getErrors()); - - }//end testNestedSuppressLine() - - - /** - * Data provider. - * - * @see testNestedSuppressLine() - * - * @return array> - */ - public static function dataNestedSuppressLine() - { - return [ - // Process with disable/enable suppression and no single line suppression. - 'disable/enable: slash comment, no single line suppression' => [ - 'before' => '// phpcs:disable', - 'after' => '// phpcs:enable', - ], - 'disable/enable: slash comment, with @, no single line suppression' => [ - 'before' => '// @phpcs:disable', - 'after' => '// @phpcs:enable', - ], - 'disable/enable: hash comment, no single line suppression' => [ - 'before' => '# phpcs:disable', - 'after' => '# phpcs:enable', - ], - 'old style: slash comment, no single line suppression' => [ - 'before' => '// @codingStandardsIgnoreStart', - 'after' => '// @codingStandardsIgnoreEnd', - ], - - // Process with line suppression nested within disable/enable suppression. - 'disable/enable: slash comment, next line nested single line suppression' => [ - 'before' => '// phpcs:disable'.PHP_EOL.'// phpcs:ignore', - 'after' => '// phpcs:enable', - ], - 'disable/enable: slash comment, with @, next line nested single line suppression' => [ - 'before' => '// @phpcs:disable'.PHP_EOL.'// @phpcs:ignore', - 'after' => '// @phpcs:enable', - ], - 'disable/enable: hash comment, next line nested single line suppression' => [ - 'before' => '# @phpcs:disable'.PHP_EOL.'# @phpcs:ignore', - 'after' => '# @phpcs:enable', - ], - 'old style: slash comment, next line nested single line suppression' => [ - 'before' => '// @codingStandardsIgnoreStart'.PHP_EOL.'// @codingStandardsIgnoreLine', - 'after' => '// @codingStandardsIgnoreEnd', - ], - ]; - - }//end dataNestedSuppressLine() - - - /** - * Test suppressing a scope opener. - * - * @param string $before Annotation to place before the scope opener. - * @param string $after Annotation to place after the scope opener. - * @param int $expectedErrors Optional. Number of errors expected. - * Defaults to 0. - * - * @dataProvider dataSuppressScope - * - * @return void - */ - public function testSuppressScope($before, $after, $expectedErrors=0) - { - static $config, $ruleset; - - if (isset($config, $ruleset) === false) { - $config = new ConfigDouble(); - $config->standards = ['PEAR']; - $config->sniffs = ['PEAR.Functions.FunctionDeclaration']; - - $ruleset = new Ruleset($config); - } - - $content = 'foo(); - } -} -EOD; - $file = new DummyFile($content, $ruleset, $config); - $file->process(); - - $this->assertSame($expectedErrors, $file->getErrorCount()); - $this->assertCount($expectedErrors, $file->getErrors()); - - }//end testSuppressScope() - - - /** - * Data provider. - * - * @see testSuppressScope() - * - * @return array> - */ - public static function dataSuppressScope() - { - return [ - 'no suppression' => [ - 'before' => '', - 'after' => '', - 'expectedErrors' => 1, - ], - - // Process with suppression. - 'disable/enable: slash comment' => [ - 'before' => '//phpcs:disable', - 'after' => '//phpcs:enable', - ], - 'disable/enable: slash comment, with @' => [ - 'before' => '//@phpcs:disable', - 'after' => '//@phpcs:enable', - ], - 'disable/enable: hash comment' => [ - 'before' => '#phpcs:disable', - 'after' => '#phpcs:enable', - ], - 'disable/enable: single line docblock comment' => [ - 'before' => '/** phpcs:disable */', - 'after' => '/** phpcs:enable */', - ], - 'disable/enable: single line docblock comment, with @' => [ - 'before' => '/** @phpcs:disable */', - 'after' => '/** @phpcs:enable */', - ], - - // Deprecated syntax. - 'old style: start/end, slash comment' => [ - 'before' => '//@codingStandardsIgnoreStart', - 'after' => '//@codingStandardsIgnoreEnd', - ], - 'old style: start/end, single line docblock comment' => [ - 'before' => '/** @codingStandardsIgnoreStart */', - 'after' => '/** @codingStandardsIgnoreEnd */', - ], - ]; - - }//end dataSuppressScope() - - - /** - * Test suppressing a whole file. - * - * @param string $before Annotation to place before the code. - * @param string $after Optional. Annotation to place after the code. - * Defaults to an empty string. - * @param int $expectedWarnings Optional. Number of warnings expected. - * Defaults to 0. - * - * @dataProvider dataSuppressFile - * - * @return void - */ - public function testSuppressFile($before, $after='', $expectedWarnings=0) - { - static $config, $ruleset; - - if (isset($config, $ruleset) === false) { - $config = new ConfigDouble(); - $config->standards = ['Generic']; - $config->sniffs = ['Generic.Commenting.Todo']; - - $ruleset = new Ruleset($config); - } - - $content = <<process(); - - $this->assertSame($expectedWarnings, $file->getWarningCount()); - $this->assertCount($expectedWarnings, $file->getWarnings()); - - }//end testSuppressFile() - - - /** - * Data provider. - * - * @see testSuppressFile() - * - * @return array> - */ - public static function dataSuppressFile() - { - return [ - 'no suppression' => [ - 'before' => '', - 'after' => '', - 'expectedWarnings' => 1, - ], - - // Process with suppression. - 'ignoreFile: start of file, slash comment' => [ - 'before' => '// phpcs:ignoreFile', - ], - 'ignoreFile: start of file, slash comment, with @' => [ - 'before' => '// @phpcs:ignoreFile', - ], - 'ignoreFile: start of file, slash comment, mixed case' => [ - 'before' => '// PHPCS:Ignorefile', - ], - 'ignoreFile: start of file, hash comment' => [ - 'before' => '# phpcs:ignoreFile', - ], - 'ignoreFile: start of file, hash comment, with @' => [ - 'before' => '# @phpcs:ignoreFile', - ], - 'ignoreFile: start of file, single-line star comment' => [ - 'before' => '/* phpcs:ignoreFile */', - ], - 'ignoreFile: start of file, multi-line star comment' => [ - 'before' => '/*'.PHP_EOL.' phpcs:ignoreFile'.PHP_EOL.' */', - ], - 'ignoreFile: start of file, single-line docblock comment' => [ - 'before' => '/** phpcs:ignoreFile */', - ], - - // Process late comment. - 'ignoreFile: late comment, slash comment' => [ - 'before' => '', - 'after' => '// phpcs:ignoreFile', - ], - - // Deprecated syntax. - 'old style: start of file, slash comment' => [ - 'before' => '// @codingStandardsIgnoreFile', - ], - 'old style: start of file, single-line star comment' => [ - 'before' => '/* @codingStandardsIgnoreFile */', - ], - 'old style: start of file, multi-line star comment' => [ - 'before' => '/*'.PHP_EOL.' @codingStandardsIgnoreFile'.PHP_EOL.' */', - ], - 'old style: start of file, single-line docblock comment' => [ - 'before' => '/** @codingStandardsIgnoreFile */', - ], - - // Deprecated syntax, late comment. - 'old style: late comment, slash comment' => [ - 'before' => '', - 'after' => '// @codingStandardsIgnoreFile', - ], - ]; - - }//end dataSuppressFile() - - - /** - * Test disabling specific sniffs. - * - * @param string $before Annotation to place before the code. - * @param int $expectedErrors Optional. Number of errors expected. - * Defaults to 0. - * @param int $expectedWarnings Optional. Number of warnings expected. - * Defaults to 0. - * - * @dataProvider dataDisableSelected - * - * @return void - */ - public function testDisableSelected($before, $expectedErrors=0, $expectedWarnings=0) - { - static $config, $ruleset; - - if (isset($config, $ruleset) === false) { - $config = new ConfigDouble(); - $config->standards = ['Generic']; - $config->sniffs = [ - 'Generic.PHP.LowerCaseConstant', - 'Generic.Commenting.Todo', - ]; - - $ruleset = new Ruleset($config); - } - - $content = <<process(); - - $this->assertSame($expectedErrors, $file->getErrorCount()); - $this->assertCount($expectedErrors, $file->getErrors()); - - $this->assertSame($expectedWarnings, $file->getWarningCount()); - $this->assertCount($expectedWarnings, $file->getWarnings()); - - }//end testDisableSelected() - - - /** - * Data provider. - * - * @see testDisableSelected() - * - * @return array> - */ - public static function dataDisableSelected() - { - return [ - // Single sniff. - 'disable: single sniff' => [ - 'before' => '// phpcs:disable Generic.Commenting.Todo', - 'expectedErrors' => 1, - ], - 'disable: single sniff with reason' => [ - 'before' => '# phpcs:disable Generic.Commenting.Todo -- for reasons', - 'expectedErrors' => 1, - ], - 'disable: single sniff, docblock' => [ - 'before' => '/**'.PHP_EOL.' * phpcs:disable Generic.Commenting.Todo'.PHP_EOL.' */ ', - 'expectedErrors' => 1, - ], - 'disable: single sniff, docblock, with @' => [ - 'before' => '/**'.PHP_EOL.' * @phpcs:disable Generic.Commenting.Todo'.PHP_EOL.' */ ', - 'expectedErrors' => 1, - ], - - // Multiple sniffs. - 'disable: multiple sniffs in one comment' => [ - 'before' => '// phpcs:disable Generic.Commenting.Todo,Generic.PHP.LowerCaseConstant', - ], - 'disable: multiple sniff in multiple comments' => [ - 'before' => '// phpcs:disable Generic.Commenting.Todo'.PHP_EOL.'// phpcs:disable Generic.PHP.LowerCaseConstant', - ], - - // Selectiveness variations. - 'disable: complete category' => [ - 'before' => '// phpcs:disable Generic.Commenting', - 'expectedErrors' => 1, - ], - 'disable: whole standard' => [ - 'before' => '// phpcs:disable Generic', - ], - 'disable: single errorcode' => [ - 'before' => '# @phpcs:disable Generic.Commenting.Todo.TaskFound', - 'expectedErrors' => 1, - ], - 'disable: single errorcode and a category' => [ - 'before' => '// phpcs:disable Generic.PHP.LowerCaseConstant.Found,Generic.Commenting', - ], - - // Wrong category/sniff/code. - 'disable: wrong error code and category' => [ - 'before' => '/**'.PHP_EOL.' * phpcs:disable Generic.PHP.LowerCaseConstant.Upper,Generic.Comments'.PHP_EOL.' */ ', - 'expectedErrors' => 1, - 'expectedWarnings' => 1, - ], - 'disable: wrong category, docblock' => [ - 'before' => '/**'.PHP_EOL.' * phpcs:disable Generic.Files'.PHP_EOL.' */ ', - 'expectedErrors' => 1, - 'expectedWarnings' => 1, - ], - 'disable: wrong category, docblock, with @' => [ - 'before' => '/**'.PHP_EOL.' * @phpcs:disable Generic.Files'.PHP_EOL.' */ ', - 'expectedErrors' => 1, - 'expectedWarnings' => 1, - ], - ]; - - }//end dataDisableSelected() - - - /** - * Test re-enabling specific sniffs that have been disabled. - * - * @param string $code Code pattern to check. - * @param int $expectedErrors Number of errors expected. - * @param int $expectedWarnings Number of warnings expected. - * - * @dataProvider dataEnableSelected - * - * @return void - */ - public function testEnableSelected($code, $expectedErrors, $expectedWarnings) - { - static $config, $ruleset; - - if (isset($config, $ruleset) === false) { - $config = new ConfigDouble(); - $config->standards = ['Generic']; - $config->sniffs = [ - 'Generic.PHP.LowerCaseConstant', - 'Generic.Commenting.Todo', - ]; - - $ruleset = new Ruleset($config); - } - - $content = 'process(); - - $this->assertSame($expectedErrors, $file->getErrorCount()); - $this->assertCount($expectedErrors, $file->getErrors()); - - $this->assertSame($expectedWarnings, $file->getWarningCount()); - $this->assertCount($expectedWarnings, $file->getWarnings()); - - }//end testEnableSelected() - - - /** - * Data provider. - * - * @see testEnableSelected() - * - * @return array> - */ - public static function dataEnableSelected() - { - return [ - 'disable/enable: a single sniff' => [ - 'code' => ' - // phpcs:disable Generic.Commenting.Todo - $var = FALSE; - //TODO: write some code - // phpcs:enable Generic.Commenting.Todo - //TODO: write some code', - 'expectedErrors' => 1, - 'expectedWarnings' => 1, - ], - 'disable/enable: multiple sniffs' => [ - 'code' => ' - // phpcs:disable Generic.Commenting.Todo,Generic.PHP.LowerCaseConstant - $var = FALSE; - //TODO: write some code - // phpcs:enable Generic.Commenting.Todo,Generic.PHP.LowerCaseConstant - //TODO: write some code - $var = FALSE;', - 'expectedErrors' => 1, - 'expectedWarnings' => 1, - ], - 'disable: multiple sniffs; enable: one' => [ - 'code' => ' - # phpcs:disable Generic.Commenting.Todo,Generic.PHP.LowerCaseConstant - $var = FALSE; - //TODO: write some code - # phpcs:enable Generic.Commenting.Todo - //TODO: write some code - $var = FALSE;', - 'expectedErrors' => 0, - 'expectedWarnings' => 1, - ], - 'disable/enable: complete category' => [ - 'code' => ' - // phpcs:disable Generic.Commenting - $var = FALSE; - //TODO: write some code - // phpcs:enable Generic.Commenting - //TODO: write some code', - 'expectedErrors' => 1, - 'expectedWarnings' => 1, - ], - 'disable/enable: whole standard' => [ - 'code' => ' - // phpcs:disable Generic - $var = FALSE; - //TODO: write some code - // phpcs:enable Generic - //TODO: write some code', - 'expectedErrors' => 0, - 'expectedWarnings' => 1, - ], - 'disable: whole standard; enable: category from the standard' => [ - 'code' => ' - // phpcs:disable Generic - $var = FALSE; - //TODO: write some code - // phpcs:enable Generic.Commenting - //TODO: write some code', - 'expectedErrors' => 0, - 'expectedWarnings' => 1, - ], - 'disable: a category; enable: the whole standard containing the category' => [ - 'code' => ' - # phpcs:disable Generic.Commenting - $var = FALSE; - //TODO: write some code - # phpcs:enable Generic - //TODO: write some code', - 'expectedErrors' => 1, - 'expectedWarnings' => 1, - ], - 'disable: single sniff; enable: the category containing the sniff' => [ - 'code' => ' - // phpcs:disable Generic.Commenting.Todo - $var = FALSE; - //TODO: write some code - // phpcs:enable Generic.Commenting - //TODO: write some code', - 'expectedErrors' => 1, - 'expectedWarnings' => 1, - ], - 'disable: whole standard; enable: single sniff from the standard' => [ - 'code' => ' - // phpcs:disable Generic - $var = FALSE; - //TODO: write some code - // phpcs:enable Generic.Commenting.Todo - //TODO: write some code', - 'expectedErrors' => 0, - 'expectedWarnings' => 1, - ], - 'disable: whole standard; enable: single sniff from the standard; disable: that same sniff; enable: everything' => [ - 'code' => ' - // phpcs:disable Generic - $var = FALSE; - //TODO: write some code - // phpcs:enable Generic.Commenting.Todo - //TODO: write some code - // phpcs:disable Generic.Commenting.Todo - //TODO: write some code - // phpcs:enable - //TODO: write some code', - 'expectedErrors' => 0, - 'expectedWarnings' => 2, - ], - 'disable: whole standard; enable: single sniff from the standard; enable: other sniff from the standard' => [ - 'code' => ' - // phpcs:disable Generic - $var = FALSE; - //TODO: write some code - // phpcs:enable Generic.Commenting.Todo - //TODO: write some code - $var = FALSE; - // phpcs:enable Generic.PHP.LowerCaseConstant - //TODO: write some code - $var = FALSE;', - 'expectedErrors' => 1, - 'expectedWarnings' => 2, - ], - ]; - - }//end dataEnableSelected() - - - /** - * Test ignoring specific sniffs. - * - * @param string $before Annotation to place before the code. - * @param int $expectedErrors Number of errors expected. - * @param int $expectedWarnings Number of warnings expected. - * - * @dataProvider dataIgnoreSelected - * - * @return void - */ - public function testIgnoreSelected($before, $expectedErrors, $expectedWarnings) - { - static $config, $ruleset; - - if (isset($config, $ruleset) === false) { - $config = new ConfigDouble(); - $config->standards = ['Generic']; - $config->sniffs = [ - 'Generic.PHP.LowerCaseConstant', - 'Generic.Commenting.Todo', - ]; - - $ruleset = new Ruleset($config); - } - - $content = <<process(); - - $this->assertSame($expectedErrors, $file->getErrorCount()); - $this->assertCount($expectedErrors, $file->getErrors()); - - $this->assertSame($expectedWarnings, $file->getWarningCount()); - $this->assertCount($expectedWarnings, $file->getWarnings()); - - }//end testIgnoreSelected() - - - /** - * Data provider. - * - * @see testIgnoreSelected() - * - * @return array> - */ - public static function dataIgnoreSelected() - { - return [ - 'no suppression' => [ - 'before' => '', - 'expectedErrors' => 2, - 'expectedWarnings' => 2, - ], - - // With suppression. - 'ignore: single sniff' => [ - 'before' => '// phpcs:ignore Generic.Commenting.Todo', - 'expectedErrors' => 2, - 'expectedWarnings' => 1, - ], - 'ignore: multiple sniffs' => [ - 'before' => '// phpcs:ignore Generic.Commenting.Todo,Generic.PHP.LowerCaseConstant', - 'expectedErrors' => 1, - 'expectedWarnings' => 1, - ], - 'disable: single sniff; ignore: single sniff' => [ - 'before' => '// phpcs:disable Generic.Commenting.Todo'.PHP_EOL.'// phpcs:ignore Generic.PHP.LowerCaseConstant', - 'expectedErrors' => 1, - 'expectedWarnings' => 0, - ], - 'ignore: category of sniffs' => [ - 'before' => '# phpcs:ignore Generic.Commenting', - 'expectedErrors' => 2, - 'expectedWarnings' => 1, - ], - 'ignore: whole standard' => [ - 'before' => '// phpcs:ignore Generic', - 'expectedErrors' => 1, - 'expectedWarnings' => 1, - ], - ]; - - }//end dataIgnoreSelected() - - - /** - * Test ignoring specific sniffs. - * - * @param string $code Code pattern to check. - * @param int $expectedErrors Number of errors expected. - * @param int $expectedWarnings Number of warnings expected. - * - * @dataProvider dataCommenting - * - * @return void - */ - public function testCommenting($code, $expectedErrors, $expectedWarnings) - { - static $config, $ruleset; - - if (isset($config, $ruleset) === false) { - $config = new ConfigDouble(); - $config->standards = ['Generic']; - $config->sniffs = [ - 'Generic.PHP.LowerCaseConstant', - 'Generic.Commenting.Todo', - ]; - - $ruleset = new Ruleset($config); - } - - $content = 'process(); - - $this->assertSame($expectedErrors, $file->getErrorCount()); - $this->assertCount($expectedErrors, $file->getErrors()); - - $this->assertSame($expectedWarnings, $file->getWarningCount()); - $this->assertCount($expectedWarnings, $file->getWarnings()); - - }//end testCommenting() - - - /** - * Data provider. - * - * @see testCommenting() - * - * @return array> - */ - public static function dataCommenting() - { - return [ - 'ignore: single sniff' => [ - 'code' => ' - // phpcs:ignore Generic.Commenting.Todo -- Because reasons - $var = FALSE; //TODO: write some code - $var = FALSE; //TODO: write some code', - 'expectedErrors' => 2, - 'expectedWarnings' => 1, - ], - 'disable: single sniff; enable: same sniff - test whitespace handling around reason delimiter' => [ - 'code' => ' - // phpcs:disable Generic.Commenting.Todo --Because reasons - $var = FALSE; - //TODO: write some code - // phpcs:enable Generic.Commenting.Todo -- Because reasons - //TODO: write some code', - 'expectedErrors' => 1, - 'expectedWarnings' => 1, - ], - 'disable: single sniff, multi-line comment' => [ - 'code' => ' - /* - Disable some checks - phpcs:disable Generic.Commenting.Todo - */ - $var = FALSE; - //TODO: write some code', - 'expectedErrors' => 1, - 'expectedWarnings' => 0, - ], - 'ignore: single sniff, multi-line slash comment' => [ - 'code' => ' - // Turn off a check for the next line of code. - // phpcs:ignore Generic.Commenting.Todo - $var = FALSE; //TODO: write some code - $var = FALSE; //TODO: write some code', - 'expectedErrors' => 2, - 'expectedWarnings' => 1, - ], - 'enable before disable, sniff not in standard' => [ - 'code' => ' - // phpcs:enable Generic.PHP.NoSilencedErrors -- Because reasons - $var = @delete( $filename ); - ', - 'expectedErrors' => 0, - 'expectedWarnings' => 0, - ], - ]; - - }//end dataCommenting() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/FindEndOfStatementTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/FindEndOfStatementTest.php deleted file mode 100644 index be8f458a..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/FindEndOfStatementTest.php +++ /dev/null @@ -1,457 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Tests\Core\File; - -use PHP_CodeSniffer\Tests\Core\AbstractMethodUnitTest; -use PHP_CodeSniffer\Util\Tokens; - -/** - * Tests for the \PHP_CodeSniffer\Files\File::findEndOfStatement method. - * - * @covers \PHP_CodeSniffer\Files\File::findEndOfStatement - */ -final class FindEndOfStatementTest extends AbstractMethodUnitTest -{ - - - /** - * Test that end of statement is NEVER before the "current" token. - * - * @return void - */ - public function testEndIsNeverLessThanCurrentToken() - { - $tokens = self::$phpcsFile->getTokens(); - $errors = []; - - for ($i = 0; $i < self::$phpcsFile->numTokens; $i++) { - if (isset(Tokens::$emptyTokens[$tokens[$i]['code']]) === true) { - continue; - } - - $end = self::$phpcsFile->findEndOfStatement($i); - - // Collect all the errors. - if ($end < $i) { - $errors[] = sprintf( - 'End of statement for token %1$d (%2$s: %3$s) on line %4$d is %5$d (%6$s), which is less than %1$d', - $i, - $tokens[$i]['type'], - $tokens[$i]['content'], - $tokens[$i]['line'], - $end, - $tokens[$end]['type'] - ); - } - } - - $this->assertSame([], $errors); - - }//end testEndIsNeverLessThanCurrentToken() - - - /** - * Test a simple assignment. - * - * @return void - */ - public function testSimpleAssignment() - { - $start = $this->getTargetToken('/* testSimpleAssignment */', T_VARIABLE); - $found = self::$phpcsFile->findEndOfStatement($start); - - $this->assertSame(($start + 5), $found); - - }//end testSimpleAssignment() - - - /** - * Test a direct call to a control structure. - * - * @return void - */ - public function testControlStructure() - { - $start = $this->getTargetToken('/* testControlStructure */', T_WHILE); - $found = self::$phpcsFile->findEndOfStatement($start); - - $this->assertSame(($start + 6), $found); - - }//end testControlStructure() - - - /** - * Test the assignment of a closure. - * - * @return void - */ - public function testClosureAssignment() - { - $start = $this->getTargetToken('/* testClosureAssignment */', T_VARIABLE, '$a'); - $found = self::$phpcsFile->findEndOfStatement($start); - - $this->assertSame(($start + 13), $found); - - }//end testClosureAssignment() - - - /** - * Test using a heredoc in a function argument. - * - * @return void - */ - public function testHeredocFunctionArg() - { - // Find the end of the function. - $start = $this->getTargetToken('/* testHeredocFunctionArg */', T_STRING, 'myFunction'); - $found = self::$phpcsFile->findEndOfStatement($start); - - $this->assertSame(($start + 10), $found); - - // Find the end of the heredoc. - $start += 2; - $found = self::$phpcsFile->findEndOfStatement($start); - - $this->assertSame(($start + 4), $found); - - // Find the end of the last arg. - $start = ($found + 2); - $found = self::$phpcsFile->findEndOfStatement($start); - - $this->assertSame($start, $found); - - }//end testHeredocFunctionArg() - - - /** - * Test parts of a switch statement. - * - * @return void - */ - public function testSwitch() - { - // Find the end of the switch. - $start = $this->getTargetToken('/* testSwitch */', T_SWITCH); - $found = self::$phpcsFile->findEndOfStatement($start); - - $this->assertSame(($start + 28), $found); - - // Find the end of the case. - $start += 9; - $found = self::$phpcsFile->findEndOfStatement($start); - - $this->assertSame(($start + 8), $found); - - // Find the end of default case. - $start += 11; - $found = self::$phpcsFile->findEndOfStatement($start); - - $this->assertSame(($start + 6), $found); - - }//end testSwitch() - - - /** - * Test statements that are array values. - * - * @return void - */ - public function testStatementAsArrayValue() - { - // Test short array syntax. - $start = $this->getTargetToken('/* testStatementAsArrayValue */', T_NEW); - $found = self::$phpcsFile->findEndOfStatement($start); - - $this->assertSame(($start + 2), $found); - - // Test long array syntax. - $start += 12; - $found = self::$phpcsFile->findEndOfStatement($start); - - $this->assertSame(($start + 2), $found); - - // Test same statement outside of array. - $start += 10; - $found = self::$phpcsFile->findEndOfStatement($start); - - $this->assertSame(($start + 3), $found); - - }//end testStatementAsArrayValue() - - - /** - * Test a use group. - * - * @return void - */ - public function testUseGroup() - { - $start = $this->getTargetToken('/* testUseGroup */', T_USE); - $found = self::$phpcsFile->findEndOfStatement($start); - - $this->assertSame(($start + 23), $found); - - }//end testUseGroup() - - - /** - * Test arrow function as array value. - * - * @return void - */ - public function testArrowFunctionArrayValue() - { - $start = $this->getTargetToken('/* testArrowFunctionArrayValue */', T_FN); - $found = self::$phpcsFile->findEndOfStatement($start); - - $this->assertSame(($start + 9), $found); - - }//end testArrowFunctionArrayValue() - - - /** - * Test static arrow function. - * - * @return void - */ - public function testStaticArrowFunction() - { - $static = $this->getTargetToken('/* testStaticArrowFunction */', T_STATIC); - $fn = $this->getTargetToken('/* testStaticArrowFunction */', T_FN); - - $endOfStatementStatic = self::$phpcsFile->findEndOfStatement($static); - $endOfStatementFn = self::$phpcsFile->findEndOfStatement($fn); - - $this->assertSame($endOfStatementFn, $endOfStatementStatic); - - }//end testStaticArrowFunction() - - - /** - * Test arrow function with return value. - * - * @return void - */ - public function testArrowFunctionReturnValue() - { - $start = $this->getTargetToken('/* testArrowFunctionReturnValue */', T_FN); - $found = self::$phpcsFile->findEndOfStatement($start); - - $this->assertSame(($start + 18), $found); - - }//end testArrowFunctionReturnValue() - - - /** - * Test arrow function used as a function argument. - * - * @return void - */ - public function testArrowFunctionAsArgument() - { - $start = $this->getTargetToken('/* testArrowFunctionAsArgument */', T_FN); - $found = self::$phpcsFile->findEndOfStatement($start); - - $this->assertSame(($start + 8), $found); - - }//end testArrowFunctionAsArgument() - - - /** - * Test arrow function with arrays used as a function argument. - * - * @return void - */ - public function testArrowFunctionWithArrayAsArgument() - { - $start = $this->getTargetToken('/* testArrowFunctionWithArrayAsArgument */', T_FN); - $found = self::$phpcsFile->findEndOfStatement($start); - - $this->assertSame(($start + 17), $found); - - }//end testArrowFunctionWithArrayAsArgument() - - - /** - * Test simple match expression case. - * - * @return void - */ - public function testMatchCase() - { - $start = $this->getTargetToken('/* testMatchCase */', T_LNUMBER); - $found = self::$phpcsFile->findEndOfStatement($start); - - $this->assertSame(($start + 5), $found); - - $start = $this->getTargetToken('/* testMatchCase */', T_CONSTANT_ENCAPSED_STRING); - $found = self::$phpcsFile->findEndOfStatement($start); - - $this->assertSame(($start + 1), $found); - - }//end testMatchCase() - - - /** - * Test simple match expression default case. - * - * @return void - */ - public function testMatchDefault() - { - $start = $this->getTargetToken('/* testMatchDefault */', T_MATCH_DEFAULT); - $found = self::$phpcsFile->findEndOfStatement($start); - - $this->assertSame(($start + 4), $found); - - $start = $this->getTargetToken('/* testMatchDefault */', T_CONSTANT_ENCAPSED_STRING); - $found = self::$phpcsFile->findEndOfStatement($start); - - $this->assertSame($start, $found); - - }//end testMatchDefault() - - - /** - * Test multiple comma-separated match expression case values. - * - * @return void - */ - public function testMatchMultipleCase() - { - $start = $this->getTargetToken('/* testMatchMultipleCase */', T_LNUMBER); - $found = self::$phpcsFile->findEndOfStatement($start); - $this->assertSame(($start + 13), $found); - - $start += 6; - $found = self::$phpcsFile->findEndOfStatement($start); - $this->assertSame(($start + 7), $found); - - }//end testMatchMultipleCase() - - - /** - * Test match expression default case with trailing comma. - * - * @return void - */ - public function testMatchDefaultComma() - { - $start = $this->getTargetToken('/* testMatchDefaultComma */', T_MATCH_DEFAULT); - $found = self::$phpcsFile->findEndOfStatement($start); - - $this->assertSame(($start + 5), $found); - - }//end testMatchDefaultComma() - - - /** - * Test match expression with function call. - * - * @return void - */ - public function testMatchFunctionCall() - { - $start = $this->getTargetToken('/* testMatchFunctionCall */', T_STRING); - $found = self::$phpcsFile->findEndOfStatement($start); - - $this->assertSame(($start + 12), $found); - - $start += 8; - $found = self::$phpcsFile->findEndOfStatement($start); - - $this->assertSame(($start + 1), $found); - - }//end testMatchFunctionCall() - - - /** - * Test match expression with function call in the arm. - * - * @return void - */ - public function testMatchFunctionCallArm() - { - // Check the first case. - $start = $this->getTargetToken('/* testMatchFunctionCallArm */', T_STRING); - $found = self::$phpcsFile->findEndOfStatement($start); - - $this->assertSame(($start + 21), $found); - - // Check the second case. - $start += 24; - $found = self::$phpcsFile->findEndOfStatement($start); - - $this->assertSame(($start + 21), $found); - - }//end testMatchFunctionCallArm() - - - /** - * Test match expression with closure. - * - * @return void - */ - public function testMatchClosure() - { - $start = $this->getTargetToken('/* testMatchClosure */', T_LNUMBER); - $found = self::$phpcsFile->findEndOfStatement($start); - - $this->assertSame(($start + 14), $found); - - $start += 17; - $found = self::$phpcsFile->findEndOfStatement($start); - - $this->assertSame(($start + 14), $found); - - }//end testMatchClosure() - - - /** - * Test match expression with array declaration. - * - * @return void - */ - public function testMatchArray() - { - $start = $this->getTargetToken('/* testMatchArray */', T_LNUMBER); - $found = self::$phpcsFile->findEndOfStatement($start); - - $this->assertSame(($start + 11), $found); - - $start += 14; - $found = self::$phpcsFile->findEndOfStatement($start); - - $this->assertSame(($start + 22), $found); - - }//end testMatchArray() - - - /** - * Test nested match expressions. - * - * @return void - */ - public function testNestedMatch() - { - $start = $this->getTargetToken('/* testNestedMatch */', T_LNUMBER); - $found = self::$phpcsFile->findEndOfStatement($start); - - $this->assertSame(($start + 30), $found); - - $start += 21; - $found = self::$phpcsFile->findEndOfStatement($start); - - $this->assertSame(($start + 5), $found); - - }//end testNestedMatch() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/FindStartOfStatementTest.inc b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/FindStartOfStatementTest.inc deleted file mode 100644 index 574b9861..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/FindStartOfStatementTest.inc +++ /dev/null @@ -1,200 +0,0 @@ - $foo + $bar, 'b' => true]; - -/* testUseGroup */ -use Vendor\Package\{ClassA as A, ClassB, ClassC as C}; - -$a = [ - /* testArrowFunctionArrayValue */ - 'a' => fn() => 1, - 'b' => fn() => 1, -]; - -/* testStaticArrowFunction */ -static fn ($a) => $a; - -/* testArrowFunctionReturnValue */ -fn(): array => [a($a, $b)]; - -/* testArrowFunctionAsArgument */ -$foo = foo( - fn() => bar() -); - -/* testArrowFunctionWithArrayAsArgument */ -$foo = foo( - fn() => [$row[0], $row[3]] -); - -$match = match ($a) { - /* testMatchCase */ - 1 => 'foo', - /* testMatchDefault */ - default => 'bar' -}; - -$match = match ($a) { - /* testMatchMultipleCase */ - 1, 2, => $a * $b, - /* testMatchDefaultComma */ - default, => 'something' -}; - -match ($pressedKey) { - /* testMatchFunctionCall */ - Key::RETURN_ => save($value, $user) -}; - -$result = match (true) { - /* testMatchFunctionCallArm */ - str_contains($text, 'Welcome') || str_contains($text, 'Hello') => 'en', - str_contains($text, 'Bienvenue') || str_contains($text, 'Bonjour') => 'fr', - default => 'pl' -}; - -/* testMatchClosure */ -$result = match ($key) { - 1 => function($a, $b) {}, - 2 => function($b, $c) {}, -}; - -/* testMatchArray */ -$result = match ($key) { - 1 => [1,2,3], - 2 => [1 => one($a, $b), 2 => two($b, $c)], - 3 => [], -}; - -/* testNestedMatch */ -$result = match ($key) { - 1 => match ($key) { - 1 => 'one', - 2 => 'two', - }, - 2 => match ($key) { - 1 => 'two', - 2 => 'one', - }, -}; - -return 0; - -/* testOpenTag */ -?> -

    Test

    -', foo(), ''; - -/* testOpenTagWithEcho */ -?> -

    Test

    -', foo(), ''; - -$value = [ - /* testPrecededByArrowFunctionInArray - Expected */ - Url::make('View Song', fn($song) => $song->url()) - /* testPrecededByArrowFunctionInArray */ - ->onlyOnDetail(), - - new Panel('Information', [ - Text::make('Title') - ]), -]; - -switch ($foo) { - /* testCaseStatement */ - case 1: - /* testInsideCaseStatement */ - $var = doSomething(); - /* testInsideCaseBreakStatement */ - break 1; - - case 2: - /* testInsideCaseContinueStatement */ - continue 1; - - case 3: - /* testInsideCaseReturnStatement */ - return false; - - case 4: - /* testInsideCaseExitStatement */ - exit(1); - - case 5: - /* testInsideCaseThrowStatement */ - throw new Exception(); - - /* testDefaultStatement */ - default: - /* testInsideDefaultContinueStatement */ - continue $var; -} - -match ($var) { - true => - /* test437ClosureDeclaration */ - function ($var) { - /* test437EchoNestedWithinClosureWithinMatch */ - echo $var, 'text', PHP_EOL; - }, - default => false -}; - -match ($var) { - /* test437NestedLongArrayWithinMatch */ - 'a' => array( 1, 2.5, $var), - /* test437NestedFunctionCallWithinMatch */ - 'b' => functionCall( 11, $var, 50.50), - /* test437NestedArrowFunctionWithinMatch */ - 'c' => fn($p1, /* test437FnSecondParamWithinMatch */ $p2) => $p1 + $p2, - default => false -}; - -callMe($paramA, match ($var) { - /* test437NestedLongArrayWithinNestedMatch */ - 'a' => array( 1, 2.5, $var), - /* test437NestedFunctionCallWithinNestedMatch */ - 'b' => functionCall( 11, $var, 50.50), - /* test437NestedArrowFunctionWithinNestedMatch */ - 'c' => fn($p1, /* test437FnSecondParamWithinNestedMatch */ $p2) => $p1 + $p2, - default => false -}); - -match ($var) { - /* test437NestedShortArrayWithinMatch */ - 'a' => [ 1, 2.5, $var], - default => false -}; diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/FindStartOfStatementTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/FindStartOfStatementTest.php deleted file mode 100644 index bfcbfaf9..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/FindStartOfStatementTest.php +++ /dev/null @@ -1,973 +0,0 @@ - - * @author Juliette Reinders Folmer - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @copyright 2019-2024 PHPCSStandards Contributors - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Tests\Core\File; - -use PHP_CodeSniffer\Tests\Core\AbstractMethodUnitTest; -use PHP_CodeSniffer\Util\Tokens; - -/** - * Tests for the \PHP_CodeSniffer\Files\File:findStartOfStatement method. - * - * @covers \PHP_CodeSniffer\Files\File::findStartOfStatement - */ -final class FindStartOfStatementTest extends AbstractMethodUnitTest -{ - - - /** - * Test that start of statement is NEVER beyond the "current" token. - * - * @return void - */ - public function testStartIsNeverMoreThanCurrentToken() - { - $tokens = self::$phpcsFile->getTokens(); - $errors = []; - - for ($i = 0; $i < self::$phpcsFile->numTokens; $i++) { - if (isset(Tokens::$emptyTokens[$tokens[$i]['code']]) === true) { - continue; - } - - $start = self::$phpcsFile->findStartOfStatement($i); - - // Collect all the errors. - if ($start > $i) { - $errors[] = sprintf( - 'Start of statement for token %1$d (%2$s: %3$s) on line %4$d is %5$d (%6$s), which is more than %1$d', - $i, - $tokens[$i]['type'], - $tokens[$i]['content'], - $tokens[$i]['line'], - $start, - $tokens[$start]['type'] - ); - } - } - - $this->assertSame([], $errors); - - }//end testStartIsNeverMoreThanCurrentToken() - - - /** - * Test a simple assignment. - * - * @return void - */ - public function testSimpleAssignment() - { - $start = $this->getTargetToken('/* testSimpleAssignment */', T_SEMICOLON); - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 5), $found); - - }//end testSimpleAssignment() - - - /** - * Test a function call. - * - * @return void - */ - public function testFunctionCall() - { - $start = $this->getTargetToken('/* testFunctionCall */', T_CLOSE_PARENTHESIS); - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 6), $found); - - }//end testFunctionCall() - - - /** - * Test a function call. - * - * @return void - */ - public function testFunctionCallArgument() - { - $start = $this->getTargetToken('/* testFunctionCallArgument */', T_VARIABLE, '$b'); - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame($start, $found); - - }//end testFunctionCallArgument() - - - /** - * Test a direct call to a control structure. - * - * @return void - */ - public function testControlStructure() - { - $start = $this->getTargetToken('/* testControlStructure */', T_CLOSE_CURLY_BRACKET); - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 6), $found); - - }//end testControlStructure() - - - /** - * Test the assignment of a closure. - * - * @return void - */ - public function testClosureAssignment() - { - $start = $this->getTargetToken('/* testClosureAssignment */', T_CLOSE_CURLY_BRACKET); - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 11), $found); - - }//end testClosureAssignment() - - - /** - * Test using a heredoc in a function argument. - * - * @return void - */ - public function testHeredocFunctionArg() - { - // Find the start of the function. - $start = $this->getTargetToken('/* testHeredocFunctionArg */', T_SEMICOLON); - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 10), $found); - - // Find the start of the heredoc. - $start -= 4; - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 4), $found); - - // Find the start of the last arg. - $start += 2; - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame($start, $found); - - }//end testHeredocFunctionArg() - - - /** - * Test parts of a switch statement. - * - * @return void - */ - public function testSwitch() - { - // Find the start of the switch. - $start = $this->getTargetToken('/* testSwitch */', T_CLOSE_CURLY_BRACKET); - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 47), $found); - - // Find the start of default case. - $start -= 5; - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 6), $found); - - // Find the start of the second case. - $start -= 12; - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 5), $found); - - // Find the start of the first case. - $start -= 13; - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 8), $found); - - // Test inside the first case. - $start--; - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 1), $found); - - }//end testSwitch() - - - /** - * Test statements that are array values. - * - * @return void - */ - public function testStatementAsArrayValue() - { - // Test short array syntax. - $start = $this->getTargetToken('/* testStatementAsArrayValue */', T_STRING, 'Datetime'); - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 2), $found); - - // Test long array syntax. - $start += 12; - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 2), $found); - - // Test same statement outside of array. - $start++; - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 9), $found); - - // Test with an array index. - $start += 17; - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 5), $found); - - }//end testStatementAsArrayValue() - - - /** - * Test a use group. - * - * @return void - */ - public function testUseGroup() - { - $start = $this->getTargetToken('/* testUseGroup */', T_SEMICOLON); - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 23), $found); - - }//end testUseGroup() - - - /** - * Test arrow function as array value. - * - * @return void - */ - public function testArrowFunctionArrayValue() - { - $start = $this->getTargetToken('/* testArrowFunctionArrayValue */', T_COMMA); - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 7), $found); - - }//end testArrowFunctionArrayValue() - - - /** - * Test static arrow function. - * - * @return void - */ - public function testStaticArrowFunction() - { - $start = $this->getTargetToken('/* testStaticArrowFunction */', T_SEMICOLON); - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 11), $found); - - }//end testStaticArrowFunction() - - - /** - * Test arrow function with return value. - * - * @return void - */ - public function testArrowFunctionReturnValue() - { - $start = $this->getTargetToken('/* testArrowFunctionReturnValue */', T_SEMICOLON); - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 18), $found); - - }//end testArrowFunctionReturnValue() - - - /** - * Test arrow function used as a function argument. - * - * @return void - */ - public function testArrowFunctionAsArgument() - { - $start = $this->getTargetToken('/* testArrowFunctionAsArgument */', T_FN); - $start += 8; - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 8), $found); - - }//end testArrowFunctionAsArgument() - - - /** - * Test arrow function with arrays used as a function argument. - * - * @return void - */ - public function testArrowFunctionWithArrayAsArgument() - { - $start = $this->getTargetToken('/* testArrowFunctionWithArrayAsArgument */', T_FN); - $start += 17; - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 17), $found); - - }//end testArrowFunctionWithArrayAsArgument() - - - /** - * Test simple match expression case. - * - * @return void - */ - public function testMatchCase() - { - $start = $this->getTargetToken('/* testMatchCase */', T_COMMA); - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 1), $found); - - }//end testMatchCase() - - - /** - * Test simple match expression default case. - * - * @return void - */ - public function testMatchDefault() - { - $start = $this->getTargetToken('/* testMatchDefault */', T_CONSTANT_ENCAPSED_STRING, "'bar'"); - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame($start, $found); - - }//end testMatchDefault() - - - /** - * Test multiple comma-separated match expression case values. - * - * @return void - */ - public function testMatchMultipleCase() - { - $start = $this->getTargetToken('/* testMatchMultipleCase */', T_MATCH_ARROW); - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 6), $found); - - $start += 6; - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 4), $found); - - }//end testMatchMultipleCase() - - - /** - * Test match expression default case with trailing comma. - * - * @return void - */ - public function testMatchDefaultComma() - { - $start = $this->getTargetToken('/* testMatchDefaultComma */', T_MATCH_ARROW); - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 3), $found); - - $start += 2; - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame($start, $found); - - }//end testMatchDefaultComma() - - - /** - * Test match expression with function call. - * - * @return void - */ - public function testMatchFunctionCall() - { - $start = $this->getTargetToken('/* testMatchFunctionCall */', T_CLOSE_PARENTHESIS); - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 6), $found); - - }//end testMatchFunctionCall() - - - /** - * Test match expression with function call in the arm. - * - * @return void - */ - public function testMatchFunctionCallArm() - { - // Check the first case. - $start = $this->getTargetToken('/* testMatchFunctionCallArm */', T_MATCH_ARROW); - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 18), $found); - - // Check the second case. - $start += 24; - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 18), $found); - - }//end testMatchFunctionCallArm() - - - /** - * Test match expression with closure. - * - * @return void - */ - public function testMatchClosure() - { - $start = $this->getTargetToken('/* testMatchClosure */', T_LNUMBER); - $start += 14; - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 10), $found); - - $start += 17; - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 10), $found); - - }//end testMatchClosure() - - - /** - * Test match expression with array declaration. - * - * @return void - */ - public function testMatchArray() - { - // Start of first case statement. - $start = $this->getTargetToken('/* testMatchArray */', T_LNUMBER); - $found = self::$phpcsFile->findStartOfStatement($start); - $this->assertSame($start, $found); - - // Comma after first statement. - $start += 11; - $found = self::$phpcsFile->findStartOfStatement($start); - $this->assertSame(($start - 7), $found); - - // Start of second case statement. - $start += 3; - $found = self::$phpcsFile->findStartOfStatement($start); - $this->assertSame($start, $found); - - // Comma after first statement. - $start += 30; - $found = self::$phpcsFile->findStartOfStatement($start); - $this->assertSame(($start - 26), $found); - - }//end testMatchArray() - - - /** - * Test nested match expressions. - * - * @return void - */ - public function testNestedMatch() - { - $start = $this->getTargetToken('/* testNestedMatch */', T_LNUMBER); - $start += 30; - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 26), $found); - - $start -= 4; - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 1), $found); - - $start -= 3; - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 2), $found); - - }//end testNestedMatch() - - - /** - * Test PHP open tag. - * - * @return void - */ - public function testOpenTag() - { - $start = $this->getTargetToken('/* testOpenTag */', T_OPEN_TAG); - $start += 2; - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 1), $found); - - }//end testOpenTag() - - - /** - * Test PHP short open echo tag. - * - * @return void - */ - public function testOpenTagWithEcho() - { - $start = $this->getTargetToken('/* testOpenTagWithEcho */', T_OPEN_TAG_WITH_ECHO); - $start += 3; - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame(($start - 1), $found); - - }//end testOpenTagWithEcho() - - - /** - * Test object call on result of static function call with arrow function as parameter and wrapped within an array. - * - * @link https://github.com/squizlabs/PHP_CodeSniffer/issues/2849 - * @link https://github.com/squizlabs/PHP_CodeSniffer/commit/fbf67efc3fc0c2a355f5585d49f4f6fe160ff2f9 - * - * @return void - */ - public function testObjectCallPrecededByArrowFunctionAsFunctionCallParameterInArray() - { - $expected = $this->getTargetToken('/* testPrecededByArrowFunctionInArray - Expected */', T_STRING, 'Url'); - - $start = $this->getTargetToken('/* testPrecededByArrowFunctionInArray */', T_STRING, 'onlyOnDetail'); - $found = self::$phpcsFile->findStartOfStatement($start); - - $this->assertSame($expected, $found); - - }//end testObjectCallPrecededByArrowFunctionAsFunctionCallParameterInArray() - - - /** - * Test finding the start of a statement inside a switch control structure case/default statement. - * - * @param string $testMarker The comment which prefaces the target token in the test file. - * @param int|string $targets The token to search for after the test marker. - * @param string|int $expectedTarget Token code of the expected start of statement stack pointer. - * - * @link https://github.com/squizlabs/php_codesniffer/issues/3192 - * @link https://github.com/squizlabs/PHP_CodeSniffer/pull/3186/commits/18a0e54735bb9b3850fec266e5f4c50dacf618ea - * - * @dataProvider dataFindStartInsideSwitchCaseDefaultStatements - * - * @return void - */ - public function testFindStartInsideSwitchCaseDefaultStatements($testMarker, $targets, $expectedTarget) - { - $testToken = $this->getTargetToken($testMarker, $targets); - $expected = $this->getTargetToken($testMarker, $expectedTarget); - - $found = self::$phpcsFile->findStartOfStatement($testToken); - - $this->assertSame($expected, $found); - - }//end testFindStartInsideSwitchCaseDefaultStatements() - - - /** - * Data provider. - * - * @return array> - */ - public static function dataFindStartInsideSwitchCaseDefaultStatements() - { - return [ - 'Case keyword should be start of case statement - case itself' => [ - 'testMarker' => '/* testCaseStatement */', - 'targets' => T_CASE, - 'expectedTarget' => T_CASE, - ], - 'Case keyword should be start of case statement - number (what\'s being compared)' => [ - 'testMarker' => '/* testCaseStatement */', - 'targets' => T_LNUMBER, - 'expectedTarget' => T_CASE, - ], - 'Variable should be start of arbitrary assignment statement - variable itself' => [ - 'testMarker' => '/* testInsideCaseStatement */', - 'targets' => T_VARIABLE, - 'expectedTarget' => T_VARIABLE, - ], - 'Variable should be start of arbitrary assignment statement - equal sign' => [ - 'testMarker' => '/* testInsideCaseStatement */', - 'targets' => T_EQUAL, - 'expectedTarget' => T_VARIABLE, - ], - 'Variable should be start of arbitrary assignment statement - function call' => [ - 'testMarker' => '/* testInsideCaseStatement */', - 'targets' => T_STRING, - 'expectedTarget' => T_VARIABLE, - ], - 'Break should be start for contents of the break statement - contents' => [ - 'testMarker' => '/* testInsideCaseBreakStatement */', - 'targets' => T_LNUMBER, - 'expectedTarget' => T_BREAK, - ], - 'Continue should be start for contents of the continue statement - contents' => [ - 'testMarker' => '/* testInsideCaseContinueStatement */', - 'targets' => T_LNUMBER, - 'expectedTarget' => T_CONTINUE, - ], - 'Return should be start for contents of the return statement - contents' => [ - 'testMarker' => '/* testInsideCaseReturnStatement */', - 'targets' => T_FALSE, - 'expectedTarget' => T_RETURN, - ], - 'Exit should be start for contents of the exit statement - close parenthesis' => [ - // Note: not sure if this is actually correct - should this be the open parenthesis ? - 'testMarker' => '/* testInsideCaseExitStatement */', - 'targets' => T_CLOSE_PARENTHESIS, - 'expectedTarget' => T_EXIT, - ], - 'Throw should be start for contents of the throw statement - new keyword' => [ - 'testMarker' => '/* testInsideCaseThrowStatement */', - 'targets' => T_NEW, - 'expectedTarget' => T_THROW, - ], - 'Throw should be start for contents of the throw statement - exception name' => [ - 'testMarker' => '/* testInsideCaseThrowStatement */', - 'targets' => T_STRING, - 'expectedTarget' => T_THROW, - ], - 'Throw should be start for contents of the throw statement - close parenthesis' => [ - 'testMarker' => '/* testInsideCaseThrowStatement */', - 'targets' => T_CLOSE_PARENTHESIS, - 'expectedTarget' => T_THROW, - ], - 'Default keyword should be start of default statement - default itself' => [ - 'testMarker' => '/* testDefaultStatement */', - 'targets' => T_DEFAULT, - 'expectedTarget' => T_DEFAULT, - ], - 'Return should be start for contents of the return statement (inside default) - variable' => [ - 'testMarker' => '/* testInsideDefaultContinueStatement */', - 'targets' => T_VARIABLE, - 'expectedTarget' => T_CONTINUE, - ], - ]; - - }//end dataFindStartInsideSwitchCaseDefaultStatements() - - - /** - * Test finding the start of a statement inside a closed scope nested within a match expressions. - * - * @param string $testMarker The comment which prefaces the target token in the test file. - * @param int|string $target The token to search for after the test marker. - * @param int|string $expectedTarget Token code of the expected start of statement stack pointer. - * - * @link https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/437 - * - * @dataProvider dataFindStartInsideClosedScopeNestedWithinMatch - * - * @return void - */ - public function testFindStartInsideClosedScopeNestedWithinMatch($testMarker, $target, $expectedTarget) - { - $testToken = $this->getTargetToken($testMarker, $target); - $expected = $this->getTargetToken($testMarker, $expectedTarget); - - $found = self::$phpcsFile->findStartOfStatement($testToken); - - $this->assertSame($expected, $found); - - }//end testFindStartInsideClosedScopeNestedWithinMatch() - - - /** - * Data provider. - * - * @return array> - */ - public static function dataFindStartInsideClosedScopeNestedWithinMatch() - { - return [ - // These were already working correctly. - 'Closure function keyword should be start of closure - closure keyword' => [ - 'testMarker' => '/* test437ClosureDeclaration */', - 'target' => T_CLOSURE, - 'expectedTarget' => T_CLOSURE, - ], - 'Open curly is a statement/expression opener - open curly' => [ - 'testMarker' => '/* test437ClosureDeclaration */', - 'target' => T_OPEN_CURLY_BRACKET, - 'expectedTarget' => T_OPEN_CURLY_BRACKET, - ], - - 'Echo should be start for expression - echo keyword' => [ - 'testMarker' => '/* test437EchoNestedWithinClosureWithinMatch */', - 'target' => T_ECHO, - 'expectedTarget' => T_ECHO, - ], - 'Echo should be start for expression - variable' => [ - 'testMarker' => '/* test437EchoNestedWithinClosureWithinMatch */', - 'target' => T_VARIABLE, - 'expectedTarget' => T_ECHO, - ], - 'Echo should be start for expression - comma' => [ - 'testMarker' => '/* test437EchoNestedWithinClosureWithinMatch */', - 'target' => T_COMMA, - 'expectedTarget' => T_ECHO, - ], - - // These were not working correctly and would previously return the close curly of the match expression. - 'First token after comma in echo expression should be start for expression - text string' => [ - 'testMarker' => '/* test437EchoNestedWithinClosureWithinMatch */', - 'target' => T_CONSTANT_ENCAPSED_STRING, - 'expectedTarget' => T_CONSTANT_ENCAPSED_STRING, - ], - 'First token after comma in echo expression - PHP_EOL constant' => [ - 'testMarker' => '/* test437EchoNestedWithinClosureWithinMatch */', - 'target' => T_STRING, - 'expectedTarget' => T_STRING, - ], - 'First token after comma in echo expression - semicolon' => [ - 'testMarker' => '/* test437EchoNestedWithinClosureWithinMatch */', - 'target' => T_SEMICOLON, - 'expectedTarget' => T_STRING, - ], - ]; - - }//end dataFindStartInsideClosedScopeNestedWithinMatch() - - - /** - * Test finding the start of a statement for a token within a set of parentheses within a match expressions. - * - * @param string $testMarker The comment which prefaces the target token in the test file. - * @param int|string $target The token to search for after the test marker. - * @param int|string $expectedTarget Token code of the expected start of statement stack pointer. - * - * @link https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/437 - * - * @dataProvider dataFindStartInsideParenthesesNestedWithinMatch - * - * @return void - */ - public function testFindStartInsideParenthesesNestedWithinMatch($testMarker, $target, $expectedTarget) - { - $testToken = $this->getTargetToken($testMarker, $target); - $expected = $this->getTargetToken($testMarker, $expectedTarget); - - $found = self::$phpcsFile->findStartOfStatement($testToken); - - $this->assertSame($expected, $found); - - }//end testFindStartInsideParenthesesNestedWithinMatch() - - - /** - * Data provider. - * - * @return array> - */ - public static function dataFindStartInsideParenthesesNestedWithinMatch() - { - return [ - 'Array item itself should be start for first array item' => [ - 'testMarker' => '/* test437NestedLongArrayWithinMatch */', - 'target' => T_LNUMBER, - 'expectedTarget' => T_LNUMBER, - ], - 'Array item itself should be start for second array item' => [ - 'testMarker' => '/* test437NestedLongArrayWithinMatch */', - 'target' => T_DNUMBER, - 'expectedTarget' => T_DNUMBER, - ], - 'Array item itself should be start for third array item' => [ - 'testMarker' => '/* test437NestedLongArrayWithinMatch */', - 'target' => T_VARIABLE, - 'expectedTarget' => T_VARIABLE, - ], - - 'Parameter itself should be start for first param passed to function call' => [ - 'testMarker' => '/* test437NestedFunctionCallWithinMatch */', - 'target' => T_LNUMBER, - 'expectedTarget' => T_LNUMBER, - ], - 'Parameter itself should be start for second param passed to function call' => [ - 'testMarker' => '/* test437NestedFunctionCallWithinMatch */', - 'target' => T_VARIABLE, - 'expectedTarget' => T_VARIABLE, - ], - 'Parameter itself should be start for third param passed to function call' => [ - 'testMarker' => '/* test437NestedFunctionCallWithinMatch */', - 'target' => T_DNUMBER, - 'expectedTarget' => T_DNUMBER, - ], - - 'Parameter itself should be start for first param declared in arrow function' => [ - 'testMarker' => '/* test437NestedArrowFunctionWithinMatch */', - 'target' => T_VARIABLE, - 'expectedTarget' => T_VARIABLE, - ], - 'Parameter itself should be start for second param declared in arrow function' => [ - 'testMarker' => '/* test437FnSecondParamWithinMatch */', - 'target' => T_VARIABLE, - 'expectedTarget' => T_VARIABLE, - ], - ]; - - }//end dataFindStartInsideParenthesesNestedWithinMatch() - - - /** - * Test finding the start of a statement for a token within a set of parentheses within a match expressions, - * which itself is nested within parentheses. - * - * @param string $testMarker The comment which prefaces the target token in the test file. - * @param int|string $target The token to search for after the test marker. - * @param int|string $expectedTarget Token code of the expected start of statement stack pointer. - * - * @link https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/437 - * - * @dataProvider dataFindStartInsideParenthesesNestedWithinNestedMatch - * - * @return void - */ - public function testFindStartInsideParenthesesNestedWithinNestedMatch($testMarker, $target, $expectedTarget) - { - $testToken = $this->getTargetToken($testMarker, $target); - $expected = $this->getTargetToken($testMarker, $expectedTarget); - - $found = self::$phpcsFile->findStartOfStatement($testToken); - - $this->assertSame($expected, $found); - - }//end testFindStartInsideParenthesesNestedWithinNestedMatch() - - - /** - * Data provider. - * - * @return array> - */ - public static function dataFindStartInsideParenthesesNestedWithinNestedMatch() - { - return [ - 'Array item itself should be start for first array item' => [ - 'testMarker' => '/* test437NestedLongArrayWithinNestedMatch */', - 'target' => T_LNUMBER, - 'expectedTarget' => T_LNUMBER, - ], - 'Array item itself should be start for second array item' => [ - 'testMarker' => '/* test437NestedLongArrayWithinNestedMatch */', - 'target' => T_DNUMBER, - 'expectedTarget' => T_DNUMBER, - ], - 'Array item itself should be start for third array item' => [ - 'testMarker' => '/* test437NestedLongArrayWithinNestedMatch */', - 'target' => T_VARIABLE, - 'expectedTarget' => T_VARIABLE, - ], - - 'Parameter itself should be start for first param passed to function call' => [ - 'testMarker' => '/* test437NestedFunctionCallWithinNestedMatch */', - 'target' => T_LNUMBER, - 'expectedTarget' => T_LNUMBER, - ], - 'Parameter itself should be start for second param passed to function call' => [ - 'testMarker' => '/* test437NestedFunctionCallWithinNestedMatch */', - 'target' => T_VARIABLE, - 'expectedTarget' => T_VARIABLE, - ], - 'Parameter itself should be start for third param passed to function call' => [ - 'testMarker' => '/* test437NestedFunctionCallWithinNestedMatch */', - 'target' => T_DNUMBER, - 'expectedTarget' => T_DNUMBER, - ], - - 'Parameter itself should be start for first param declared in arrow function' => [ - 'testMarker' => '/* test437NestedArrowFunctionWithinNestedMatch */', - 'target' => T_VARIABLE, - 'expectedTarget' => T_VARIABLE, - ], - 'Parameter itself should be start for second param declared in arrow function' => [ - 'testMarker' => '/* test437FnSecondParamWithinNestedMatch */', - 'target' => T_VARIABLE, - 'expectedTarget' => T_VARIABLE, - ], - ]; - - }//end dataFindStartInsideParenthesesNestedWithinNestedMatch() - - - /** - * Test finding the start of a statement for a token within a short array within a match expressions. - * - * @param string $testMarker The comment which prefaces the target token in the test file. - * @param int|string $target The token to search for after the test marker. - * @param int|string $expectedTarget Token code of the expected start of statement stack pointer. - * - * @link https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/437 - * - * @dataProvider dataFindStartInsideShortArrayNestedWithinMatch - * - * @return void - */ - public function testFindStartInsideShortArrayNestedWithinMatch($testMarker, $target, $expectedTarget) - { - $testToken = $this->getTargetToken($testMarker, $target); - $expected = $this->getTargetToken($testMarker, $expectedTarget); - - $found = self::$phpcsFile->findStartOfStatement($testToken); - - $this->assertSame($expected, $found); - - }//end testFindStartInsideShortArrayNestedWithinMatch() - - - /** - * Data provider. - * - * @return array> - */ - public static function dataFindStartInsideShortArrayNestedWithinMatch() - { - return [ - 'Array item itself should be start for first array item' => [ - 'testMarker' => '/* test437NestedShortArrayWithinMatch */', - 'target' => T_LNUMBER, - 'expectedTarget' => T_LNUMBER, - ], - 'Array item itself should be start for second array item' => [ - 'testMarker' => '/* test437NestedShortArrayWithinMatch */', - 'target' => T_DNUMBER, - 'expectedTarget' => T_DNUMBER, - ], - 'Array item itself should be start for third array item' => [ - 'testMarker' => '/* test437NestedShortArrayWithinMatch */', - 'target' => T_VARIABLE, - 'expectedTarget' => T_VARIABLE, - ], - ]; - - }//end dataFindStartInsideShortArrayNestedWithinMatch() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/GetMemberPropertiesTest.inc b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/GetMemberPropertiesTest.inc deleted file mode 100644 index 51466208..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/GetMemberPropertiesTest.inc +++ /dev/null @@ -1,356 +0,0 @@ - 'a', 'b' => 'b' ), - /* testGroupPrivate 3 */ - $varQ = 'string', - /* testGroupPrivate 4 */ - $varR = 123, - /* testGroupPrivate 5 */ - $varS = ONE / self::THREE, - /* testGroupPrivate 6 */ - $varT = [ - 'a' => 'a', - 'b' => 'b' - ], - /* testGroupPrivate 7 */ - $varU = __DIR__ . "/base"; - - - /* testMethodParam */ - public function methodName($param) { - /* testImportedGlobal */ - global $importedGlobal = true; - - /* testLocalVariable */ - $localVariable = true; - } - - /* testPropertyAfterMethod */ - private static $varV = true; - - /* testMessyNullableType */ - public /* comment - */ ? //comment - array $foo = []; - - /* testNamespaceType */ - public \MyNamespace\MyClass $foo; - - /* testNullableNamespaceType 1 */ - private ?ClassName $nullableClassType; - - /* testNullableNamespaceType 2 */ - protected ?Folder\ClassName $nullableClassType2; - - /* testMultilineNamespaceType */ - public \MyNamespace /** comment *\/ comment */ - \MyClass /* comment */ - \Foo $foo; - -} - -interface Base -{ - /* testInterfaceProperty */ - protected $anonymous; -} - -/* testGlobalVariable */ -$globalVariable = true; - -/* testNotAVariable */ -return; - -$a = ( $foo == $bar ? new stdClass() : - new class() { - /* testNestedProperty 1 */ - public $var = true; - - /* testNestedMethodParam 1 */ - public function something($var = false) {} - } -); - -function_call( 'param', new class { - /* testNestedProperty 2 */ - public $year = 2017; - - /* testNestedMethodParam 2 */ - public function __construct( $open, $post_id ) {} -}, 10, 2 ); - -class PHP8Mixed { - /* testPHP8MixedTypeHint */ - public static miXed $mixed; - - /* testPHP8MixedTypeHintNullable */ - // Intentional fatal error - nullability is not allowed with mixed, but that's not the concern of the method. - private ?mixed $nullableMixed; -} - -class NSOperatorInType { - /* testNamespaceOperatorTypeHint */ - public ?namespace\Name $prop; -} - -$anon = class() { - /* testPHP8UnionTypesSimple */ - public int|float $unionTypeSimple; - - /* testPHP8UnionTypesTwoClasses */ - private MyClassA|\Package\MyClassB $unionTypesTwoClasses; - - /* testPHP8UnionTypesAllBaseTypes */ - protected array|bool|int|float|NULL|object|string $unionTypesAllBaseTypes; - - /* testPHP8UnionTypesAllPseudoTypes */ - // Intentional fatal error - mixing types which cannot be combined, but that's not the concern of the method. - var false|mixed|self|parent|iterable|Resource $unionTypesAllPseudoTypes; - - /* testPHP8UnionTypesIllegalTypes */ - // Intentional fatal error - types which are not allowed for properties, but that's not the concern of the method. - // Note: static is also not allowed as a type, but using static for a property type is not supported by the tokenizer. - public callable|void $unionTypesIllegalTypes; - - /* testPHP8UnionTypesNullable */ - // Intentional fatal error - nullability is not allowed with union types, but that's not the concern of the method. - public ?int|float $unionTypesNullable; - - /* testPHP8PseudoTypeNull */ - // PHP 8.0 - 8.1: Intentional fatal error - null pseudotype is only allowed in union types, but that's not the concern of the method. - public null $pseudoTypeNull; - - /* testPHP8PseudoTypeFalse */ - // PHP 8.0 - 8.1: Intentional fatal error - false pseudotype is only allowed in union types, but that's not the concern of the method. - public false $pseudoTypeFalse; - - /* testPHP8PseudoTypeFalseAndBool */ - // Intentional fatal error - false pseudotype is not allowed in combination with bool, but that's not the concern of the method. - public bool|FALSE $pseudoTypeFalseAndBool; - - /* testPHP8ObjectAndClass */ - // Intentional fatal error - object is not allowed in combination with class name, but that's not the concern of the method. - public object|ClassName $objectAndClass; - - /* testPHP8PseudoTypeIterableAndArray */ - // Intentional fatal error - iterable pseudotype is not allowed in combination with array or Traversable, but that's not the concern of the method. - public iterable|array|Traversable $pseudoTypeIterableAndArray; - - /* testPHP8DuplicateTypeInUnionWhitespaceAndComment */ - // Intentional fatal error - duplicate types are not allowed in union types, but that's not the concern of the method. - public int |string| /*comment*/ INT $duplicateTypeInUnion; - - /* testPHP81Readonly */ - public readonly int $readonly; - - /* testPHP81ReadonlyWithNullableType */ - public readonly ?array $readonlyWithNullableType; - - /* testPHP81ReadonlyWithUnionType */ - public readonly string|int $readonlyWithUnionType; - - /* testPHP81ReadonlyWithUnionTypeWithNull */ - protected ReadOnly string|null $readonlyWithUnionTypeWithNull; - - /* testPHP81OnlyReadonlyWithUnionType */ - readonly string|int $onlyReadonly; - - /* testPHP81OnlyReadonlyWithUnionTypeMultiple */ - readonly \InterfaceA|\Sub\InterfaceB|false - $onlyReadonly; - - /* testPHP81ReadonlyAndStatic */ - readonly private static ?string $readonlyAndStatic; - - /* testPHP81ReadonlyMixedCase */ - public ReadONLY static $readonlyMixedCase; -}; - -$anon = class { - /* testPHP8PropertySingleAttribute */ - #[PropertyWithAttribute] - public string $foo; - - /* testPHP8PropertyMultipleAttributes */ - #[PropertyWithAttribute(foo: 'bar'), MyAttribute] - protected ?int|float $bar; - - /* testPHP8PropertyMultilineAttribute */ - #[ - PropertyWithAttribute(/* comment */ 'baz') - ] - private mixed $baz; -}; - -enum Suit -{ - /* testEnumProperty */ - protected $anonymous; -} - -enum Direction implements ArrayAccess -{ - case Up; - case Down; - - /* testEnumMethodParamNotProperty */ - public function offsetGet($val) { ... } -} - -$anon = class() { - /* testPHP81IntersectionTypes */ - public Foo&Bar $intersectionType; - - /* testPHP81MoreIntersectionTypes */ - public Foo&Bar&Baz $moreIntersectionTypes; - - /* testPHP81IllegalIntersectionTypes */ - // Intentional fatal error - types which are not allowed for intersection type, but that's not the concern of the method. - public int&string $illegalIntersectionType; - - /* testPHP81NullableIntersectionType */ - // Intentional fatal error - nullability is not allowed with intersection type, but that's not the concern of the method. - public ?Foo&Bar $nullableIntersectionType; -}; - -$anon = class() { - /* testPHP82PseudoTypeTrue */ - public true $pseudoTypeTrue; - - /* testPHP82NullablePseudoTypeTrue */ - static protected ?true $pseudoTypeNullableTrue; - - /* testPHP82PseudoTypeTrueInUnion */ - private int|string|true $pseudoTypeTrueInUnion; - - /* testPHP82PseudoTypeFalseAndTrue */ - // Intentional fatal error - Type contains both true and false, bool should be used instead, but that's not the concern of the method. - readonly true|FALSE $pseudoTypeFalseAndTrue; -}; - -class WhitespaceAndCommentsInTypes { - /* testUnionTypeWithWhitespaceAndComment */ - public int | /*comment*/ string $hasWhitespaceAndComment; - - /* testIntersectionTypeWithWhitespaceAndComment */ - public \Foo /*comment*/ & Bar $hasWhitespaceAndComment; -} - -trait DNFTypes { - /* testPHP82DNFTypeStatic */ - public static (Foo&\Bar)|bool $propA; - - /* testPHP82DNFTypeReadonlyA */ - protected readonly float|(Partially\Qualified&Traversable) $propB; - - /* testPHP82DNFTypeReadonlyB */ - private readonly (namespace\Foo&Bar)|string $propC; - - /* testPHP82DNFTypeIllegalNullable */ - // Intentional fatal error - nullable operator cannot be combined with DNF. - var ?(A&\Pck\B)|bool $propD; -} diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/GetMemberPropertiesTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/GetMemberPropertiesTest.php deleted file mode 100644 index 2d5fbe63..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/GetMemberPropertiesTest.php +++ /dev/null @@ -1,1191 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Tests\Core\File; - -use PHP_CodeSniffer\Tests\Core\AbstractMethodUnitTest; - -/** - * Tests for the \PHP_CodeSniffer\Files\File::getMemberProperties method. - * - * @covers \PHP_CodeSniffer\Files\File::getMemberProperties - */ -final class GetMemberPropertiesTest extends AbstractMethodUnitTest -{ - - - /** - * Test the getMemberProperties() method. - * - * @param string $identifier Comment which precedes the test case. - * @param array $expected Expected function output. - * - * @dataProvider dataGetMemberProperties - * - * @return void - */ - public function testGetMemberProperties($identifier, $expected) - { - $variable = $this->getTargetToken($identifier, T_VARIABLE); - $result = self::$phpcsFile->getMemberProperties($variable); - - // Convert offsets to absolute positions in the token stream. - if (isset($expected['type_token']) === true && is_int($expected['type_token']) === true) { - $expected['type_token'] += $variable; - } - - if (isset($expected['type_end_token']) === true && is_int($expected['type_end_token']) === true) { - $expected['type_end_token'] += $variable; - } - - $this->assertSame($expected, $result); - - }//end testGetMemberProperties() - - - /** - * Data provider for the GetMemberProperties test. - * - * Note: the `expected - type_token` and `expected - type_end_token` indexes should - * contain either `false` (no type) or the _offset_ of the type start/end token in - * relation to the `T_VARIABLE` token which is passed to the getMemberProperties() method. - * - * @see testGetMemberProperties() - * - * @return array>> - */ - public static function dataGetMemberProperties() - { - return [ - 'var-modifier' => [ - 'identifier' => '/* testVar */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => false, - 'is_static' => false, - 'is_readonly' => false, - 'type' => '', - 'type_token' => false, - 'type_end_token' => false, - 'nullable_type' => false, - ], - ], - 'var-modifier-and-type' => [ - 'identifier' => '/* testVarType */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => false, - 'is_static' => false, - 'is_readonly' => false, - 'type' => '?int', - 'type_token' => -2, - 'type_end_token' => -2, - 'nullable_type' => true, - ], - ], - 'public-modifier' => [ - 'identifier' => '/* testPublic */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => '', - 'type_token' => false, - 'type_end_token' => false, - 'nullable_type' => false, - ], - ], - 'public-modifier-and-type' => [ - 'identifier' => '/* testPublicType */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => 'string', - 'type_token' => -2, - 'type_end_token' => -2, - 'nullable_type' => false, - ], - ], - 'protected-modifier' => [ - 'identifier' => '/* testProtected */', - 'expected' => [ - 'scope' => 'protected', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => '', - 'type_token' => false, - 'type_end_token' => false, - 'nullable_type' => false, - ], - ], - 'protected-modifier-and-type' => [ - 'identifier' => '/* testProtectedType */', - 'expected' => [ - 'scope' => 'protected', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => 'bool', - 'type_token' => -2, - 'type_end_token' => -2, - 'nullable_type' => false, - ], - ], - 'private-modifier' => [ - 'identifier' => '/* testPrivate */', - 'expected' => [ - 'scope' => 'private', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => '', - 'type_token' => false, - 'type_end_token' => false, - 'nullable_type' => false, - ], - ], - 'private-modifier-and-type' => [ - 'identifier' => '/* testPrivateType */', - 'expected' => [ - 'scope' => 'private', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => 'array', - 'type_token' => -2, - 'type_end_token' => -2, - 'nullable_type' => false, - ], - ], - 'static-modifier' => [ - 'identifier' => '/* testStatic */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => false, - 'is_static' => true, - 'is_readonly' => false, - 'type' => '', - 'type_token' => false, - 'type_end_token' => false, - 'nullable_type' => false, - ], - ], - 'static-modifier-and-type' => [ - 'identifier' => '/* testStaticType */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => false, - 'is_static' => true, - 'is_readonly' => false, - 'type' => '?string', - 'type_token' => -2, - 'type_end_token' => -2, - 'nullable_type' => true, - ], - ], - 'static-and-var-modifier' => [ - 'identifier' => '/* testStaticVar */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => false, - 'is_static' => true, - 'is_readonly' => false, - 'type' => '', - 'type_token' => false, - 'type_end_token' => false, - 'nullable_type' => false, - ], - ], - 'var-and-static-modifier' => [ - 'identifier' => '/* testVarStatic */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => false, - 'is_static' => true, - 'is_readonly' => false, - 'type' => '', - 'type_token' => false, - 'type_end_token' => false, - 'nullable_type' => false, - ], - ], - 'public-static-modifiers' => [ - 'identifier' => '/* testPublicStatic */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => true, - 'is_readonly' => false, - 'type' => '', - 'type_token' => false, - 'type_end_token' => false, - 'nullable_type' => false, - ], - ], - 'protected-static-modifiers' => [ - 'identifier' => '/* testProtectedStatic */', - 'expected' => [ - 'scope' => 'protected', - 'scope_specified' => true, - 'is_static' => true, - 'is_readonly' => false, - 'type' => '', - 'type_token' => false, - 'type_end_token' => false, - 'nullable_type' => false, - ], - ], - 'private-static-modifiers' => [ - 'identifier' => '/* testPrivateStatic */', - 'expected' => [ - 'scope' => 'private', - 'scope_specified' => true, - 'is_static' => true, - 'is_readonly' => false, - 'type' => '', - 'type_token' => false, - 'type_end_token' => false, - 'nullable_type' => false, - ], - ], - 'no-modifier' => [ - 'identifier' => '/* testNoPrefix */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => false, - 'is_static' => false, - 'is_readonly' => false, - 'type' => '', - 'type_token' => false, - 'type_end_token' => false, - 'nullable_type' => false, - ], - ], - 'public-and-static-modifier-with-docblock' => [ - 'identifier' => '/* testPublicStaticWithDocblock */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => true, - 'is_readonly' => false, - 'type' => '', - 'type_token' => false, - 'type_end_token' => false, - 'nullable_type' => false, - ], - ], - 'protected-and-static-modifier-with-docblock' => [ - 'identifier' => '/* testProtectedStaticWithDocblock */', - 'expected' => [ - 'scope' => 'protected', - 'scope_specified' => true, - 'is_static' => true, - 'is_readonly' => false, - 'type' => '', - 'type_token' => false, - 'type_end_token' => false, - 'nullable_type' => false, - ], - ], - 'private-and-static-modifier-with-docblock' => [ - 'identifier' => '/* testPrivateStaticWithDocblock */', - 'expected' => [ - 'scope' => 'private', - 'scope_specified' => true, - 'is_static' => true, - 'is_readonly' => false, - 'type' => '', - 'type_token' => false, - 'type_end_token' => false, - 'nullable_type' => false, - ], - ], - 'property-group-simple-type-prop-1' => [ - 'identifier' => '/* testGroupType 1 */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => 'float', - 'type_token' => -6, - 'type_end_token' => -6, - 'nullable_type' => false, - ], - ], - 'property-group-simple-type-prop-2' => [ - 'identifier' => '/* testGroupType 2 */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => 'float', - 'type_token' => -13, - 'type_end_token' => -13, - 'nullable_type' => false, - ], - ], - 'property-group-nullable-type-prop-1' => [ - 'identifier' => '/* testGroupNullableType 1 */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => true, - 'is_readonly' => false, - 'type' => '?string', - 'type_token' => -6, - 'type_end_token' => -6, - 'nullable_type' => true, - ], - ], - 'property-group-nullable-type-prop-2' => [ - 'identifier' => '/* testGroupNullableType 2 */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => true, - 'is_readonly' => false, - 'type' => '?string', - 'type_token' => -17, - 'type_end_token' => -17, - 'nullable_type' => true, - ], - ], - 'property-group-protected-static-prop-1' => [ - 'identifier' => '/* testGroupProtectedStatic 1 */', - 'expected' => [ - 'scope' => 'protected', - 'scope_specified' => true, - 'is_static' => true, - 'is_readonly' => false, - 'type' => '', - 'type_token' => false, - 'type_end_token' => false, - 'nullable_type' => false, - ], - ], - 'property-group-protected-static-prop-2' => [ - 'identifier' => '/* testGroupProtectedStatic 2 */', - 'expected' => [ - 'scope' => 'protected', - 'scope_specified' => true, - 'is_static' => true, - 'is_readonly' => false, - 'type' => '', - 'type_token' => false, - 'type_end_token' => false, - 'nullable_type' => false, - ], - ], - 'property-group-protected-static-prop-3' => [ - 'identifier' => '/* testGroupProtectedStatic 3 */', - 'expected' => [ - 'scope' => 'protected', - 'scope_specified' => true, - 'is_static' => true, - 'is_readonly' => false, - 'type' => '', - 'type_token' => false, - 'type_end_token' => false, - 'nullable_type' => false, - ], - ], - 'property-group-private-prop-1' => [ - 'identifier' => '/* testGroupPrivate 1 */', - 'expected' => [ - 'scope' => 'private', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => '', - 'type_token' => false, - 'type_end_token' => false, - 'nullable_type' => false, - ], - ], - 'property-group-private-prop-2' => [ - 'identifier' => '/* testGroupPrivate 2 */', - 'expected' => [ - 'scope' => 'private', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => '', - 'type_token' => false, - 'type_end_token' => false, - 'nullable_type' => false, - ], - ], - 'property-group-private-prop-3' => [ - 'identifier' => '/* testGroupPrivate 3 */', - 'expected' => [ - 'scope' => 'private', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => '', - 'type_token' => false, - 'type_end_token' => false, - 'nullable_type' => false, - ], - ], - 'property-group-private-prop-4' => [ - 'identifier' => '/* testGroupPrivate 4 */', - 'expected' => [ - 'scope' => 'private', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => '', - 'type_token' => false, - 'type_end_token' => false, - 'nullable_type' => false, - ], - ], - 'property-group-private-prop-5' => [ - 'identifier' => '/* testGroupPrivate 5 */', - 'expected' => [ - 'scope' => 'private', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => '', - 'type_token' => false, - 'type_end_token' => false, - 'nullable_type' => false, - ], - ], - 'property-group-private-prop-6' => [ - 'identifier' => '/* testGroupPrivate 6 */', - 'expected' => [ - 'scope' => 'private', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => '', - 'type_token' => false, - 'type_end_token' => false, - 'nullable_type' => false, - ], - ], - 'property-group-private-prop-7' => [ - 'identifier' => '/* testGroupPrivate 7 */', - 'expected' => [ - 'scope' => 'private', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => '', - 'type_token' => false, - 'type_end_token' => false, - 'nullable_type' => false, - ], - ], - 'messy-nullable-type' => [ - 'identifier' => '/* testMessyNullableType */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => '?array', - 'type_token' => -2, - 'type_end_token' => -2, - 'nullable_type' => true, - ], - ], - 'fqn-type' => [ - 'identifier' => '/* testNamespaceType */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => '\MyNamespace\MyClass', - 'type_token' => -5, - 'type_end_token' => -2, - 'nullable_type' => false, - ], - ], - 'nullable-classname-type' => [ - 'identifier' => '/* testNullableNamespaceType 1 */', - 'expected' => [ - 'scope' => 'private', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => '?ClassName', - 'type_token' => -2, - 'type_end_token' => -2, - 'nullable_type' => true, - ], - ], - 'nullable-namespace-relative-class-type' => [ - 'identifier' => '/* testNullableNamespaceType 2 */', - 'expected' => [ - 'scope' => 'protected', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => '?Folder\ClassName', - 'type_token' => -4, - 'type_end_token' => -2, - 'nullable_type' => true, - ], - ], - 'multiline-namespaced-type' => [ - 'identifier' => '/* testMultilineNamespaceType */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => '\MyNamespace\MyClass\Foo', - 'type_token' => -18, - 'type_end_token' => -2, - 'nullable_type' => false, - ], - ], - 'property-after-method' => [ - 'identifier' => '/* testPropertyAfterMethod */', - 'expected' => [ - 'scope' => 'private', - 'scope_specified' => true, - 'is_static' => true, - 'is_readonly' => false, - 'type' => '', - 'type_token' => false, - 'type_end_token' => false, - 'nullable_type' => false, - ], - ], - 'invalid-property-in-interface' => [ - 'identifier' => '/* testInterfaceProperty */', - 'expected' => [], - ], - 'property-in-nested-class-1' => [ - 'identifier' => '/* testNestedProperty 1 */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => '', - 'type_token' => false, - 'type_end_token' => false, - 'nullable_type' => false, - ], - ], - 'property-in-nested-class-2' => [ - 'identifier' => '/* testNestedProperty 2 */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => '', - 'type_token' => false, - 'type_end_token' => false, - 'nullable_type' => false, - ], - ], - 'php8-mixed-type' => [ - 'identifier' => '/* testPHP8MixedTypeHint */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => true, - 'is_readonly' => false, - 'type' => 'miXed', - 'type_token' => -2, - 'type_end_token' => -2, - 'nullable_type' => false, - ], - ], - 'php8-nullable-mixed-type' => [ - 'identifier' => '/* testPHP8MixedTypeHintNullable */', - 'expected' => [ - 'scope' => 'private', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => '?mixed', - 'type_token' => -2, - 'type_end_token' => -2, - 'nullable_type' => true, - ], - ], - 'namespace-operator-type-declaration' => [ - 'identifier' => '/* testNamespaceOperatorTypeHint */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => '?namespace\Name', - 'type_token' => -4, - 'type_end_token' => -2, - 'nullable_type' => true, - ], - ], - 'php8-union-types-simple' => [ - 'identifier' => '/* testPHP8UnionTypesSimple */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => 'int|float', - 'type_token' => -4, - 'type_end_token' => -2, - 'nullable_type' => false, - ], - ], - 'php8-union-types-two-classes' => [ - 'identifier' => '/* testPHP8UnionTypesTwoClasses */', - 'expected' => [ - 'scope' => 'private', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => 'MyClassA|\Package\MyClassB', - 'type_token' => -7, - 'type_end_token' => -2, - 'nullable_type' => false, - ], - ], - 'php8-union-types-all-base-types' => [ - 'identifier' => '/* testPHP8UnionTypesAllBaseTypes */', - 'expected' => [ - 'scope' => 'protected', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => 'array|bool|int|float|NULL|object|string', - 'type_token' => -14, - 'type_end_token' => -2, - 'nullable_type' => false, - ], - ], - 'php8-union-types-all-pseudo-types' => [ - 'identifier' => '/* testPHP8UnionTypesAllPseudoTypes */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => false, - 'is_static' => false, - 'is_readonly' => false, - 'type' => 'false|mixed|self|parent|iterable|Resource', - 'type_token' => -12, - 'type_end_token' => -2, - 'nullable_type' => false, - ], - ], - 'php8-union-types-illegal-types' => [ - 'identifier' => '/* testPHP8UnionTypesIllegalTypes */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - // Missing static, but that's OK as not an allowed syntax. - 'type' => 'callable|void', - 'type_token' => -4, - 'type_end_token' => -2, - 'nullable_type' => false, - ], - ], - 'php8-union-types-nullable' => [ - 'identifier' => '/* testPHP8UnionTypesNullable */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => '?int|float', - 'type_token' => -4, - 'type_end_token' => -2, - 'nullable_type' => true, - ], - ], - 'php8-union-types-pseudo-type-null' => [ - 'identifier' => '/* testPHP8PseudoTypeNull */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => 'null', - 'type_token' => -2, - 'type_end_token' => -2, - 'nullable_type' => false, - ], - ], - 'php8-union-types-pseudo-type-false' => [ - 'identifier' => '/* testPHP8PseudoTypeFalse */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => 'false', - 'type_token' => -2, - 'type_end_token' => -2, - 'nullable_type' => false, - ], - ], - 'php8-union-types-pseudo-type-false-and-bool' => [ - 'identifier' => '/* testPHP8PseudoTypeFalseAndBool */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => 'bool|FALSE', - 'type_token' => -4, - 'type_end_token' => -2, - 'nullable_type' => false, - ], - ], - 'php8-union-types-object-and-class' => [ - 'identifier' => '/* testPHP8ObjectAndClass */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => 'object|ClassName', - 'type_token' => -4, - 'type_end_token' => -2, - 'nullable_type' => false, - ], - ], - 'php8-union-types-pseudo-type-iterable-and-array' => [ - 'identifier' => '/* testPHP8PseudoTypeIterableAndArray */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => 'iterable|array|Traversable', - 'type_token' => -6, - 'type_end_token' => -2, - 'nullable_type' => false, - ], - ], - 'php8-union-types-duplicate-type-with-whitespace-and-comments' => [ - 'identifier' => '/* testPHP8DuplicateTypeInUnionWhitespaceAndComment */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => 'int|string|INT', - 'type_token' => -10, - 'type_end_token' => -2, - 'nullable_type' => false, - ], - ], - 'php8.1-readonly-property' => [ - 'identifier' => '/* testPHP81Readonly */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => true, - 'type' => 'int', - 'type_token' => -2, - 'type_end_token' => -2, - 'nullable_type' => false, - ], - ], - 'php8.1-readonly-property-with-nullable-type' => [ - 'identifier' => '/* testPHP81ReadonlyWithNullableType */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => true, - 'type' => '?array', - 'type_token' => -2, - 'type_end_token' => -2, - 'nullable_type' => true, - ], - ], - 'php8.1-readonly-property-with-union-type' => [ - 'identifier' => '/* testPHP81ReadonlyWithUnionType */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => true, - 'type' => 'string|int', - 'type_token' => -4, - 'type_end_token' => -2, - 'nullable_type' => false, - ], - ], - 'php8.1-readonly-property-with-union-type-with-null' => [ - 'identifier' => '/* testPHP81ReadonlyWithUnionTypeWithNull */', - 'expected' => [ - 'scope' => 'protected', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => true, - 'type' => 'string|null', - 'type_token' => -4, - 'type_end_token' => -2, - 'nullable_type' => false, - ], - ], - 'php8.1-readonly-property-with-union-type-no-visibility' => [ - 'identifier' => '/* testPHP81OnlyReadonlyWithUnionType */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => false, - 'is_static' => false, - 'is_readonly' => true, - 'type' => 'string|int', - 'type_token' => -4, - 'type_end_token' => -2, - 'nullable_type' => false, - ], - ], - 'php8.1-readonly-property-with-multi-union-type-no-visibility' => [ - 'identifier' => '/* testPHP81OnlyReadonlyWithUnionTypeMultiple */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => false, - 'is_static' => false, - 'is_readonly' => true, - 'type' => '\InterfaceA|\Sub\InterfaceB|false', - 'type_token' => -11, - 'type_end_token' => -3, - 'nullable_type' => false, - ], - ], - 'php8.1-readonly-and-static-property' => [ - 'identifier' => '/* testPHP81ReadonlyAndStatic */', - 'expected' => [ - 'scope' => 'private', - 'scope_specified' => true, - 'is_static' => true, - 'is_readonly' => true, - 'type' => '?string', - 'type_token' => -2, - 'type_end_token' => -2, - 'nullable_type' => true, - ], - ], - 'php8.1-readonly-mixed-case-keyword' => [ - 'identifier' => '/* testPHP81ReadonlyMixedCase */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => true, - 'is_readonly' => true, - 'type' => '', - 'type_token' => false, - 'type_end_token' => false, - 'nullable_type' => false, - ], - ], - 'php8-property-with-single-attribute' => [ - 'identifier' => '/* testPHP8PropertySingleAttribute */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => 'string', - 'type_token' => -2, - 'type_end_token' => -2, - 'nullable_type' => false, - ], - ], - 'php8-property-with-multiple-attributes' => [ - 'identifier' => '/* testPHP8PropertyMultipleAttributes */', - 'expected' => [ - 'scope' => 'protected', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => '?int|float', - 'type_token' => -4, - 'type_end_token' => -2, - 'nullable_type' => true, - ], - ], - 'php8-property-with-multiline-attribute' => [ - 'identifier' => '/* testPHP8PropertyMultilineAttribute */', - 'expected' => [ - 'scope' => 'private', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => 'mixed', - 'type_token' => -2, - 'type_end_token' => -2, - 'nullable_type' => false, - ], - ], - 'invalid-property-in-enum' => [ - 'identifier' => '/* testEnumProperty */', - 'expected' => [], - ], - 'php8.1-single-intersection-type' => [ - 'identifier' => '/* testPHP81IntersectionTypes */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => 'Foo&Bar', - 'type_token' => -4, - 'type_end_token' => -2, - 'nullable_type' => false, - ], - ], - 'php8.1-multi-intersection-type' => [ - 'identifier' => '/* testPHP81MoreIntersectionTypes */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => 'Foo&Bar&Baz', - 'type_token' => -6, - 'type_end_token' => -2, - 'nullable_type' => false, - ], - ], - 'php8.1-illegal-intersection-type' => [ - 'identifier' => '/* testPHP81IllegalIntersectionTypes */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => 'int&string', - 'type_token' => -4, - 'type_end_token' => -2, - 'nullable_type' => false, - ], - ], - 'php8.1-nullable-intersection-type' => [ - 'identifier' => '/* testPHP81NullableIntersectionType */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => '?Foo&Bar', - 'type_token' => -4, - 'type_end_token' => -2, - 'nullable_type' => true, - ], - ], - - 'php8.0-union-type-with-whitespace-and-comment' => [ - 'identifier' => '/* testUnionTypeWithWhitespaceAndComment */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => 'int|string', - 'type_token' => -8, - 'type_end_token' => -2, - 'nullable_type' => false, - ], - ], - 'php8.1-intersection-type-with-whitespace-and-comment' => [ - 'identifier' => '/* testIntersectionTypeWithWhitespaceAndComment */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => '\Foo&Bar', - 'type_token' => -9, - 'type_end_token' => -2, - 'nullable_type' => false, - ], - ], - 'php8.2-pseudo-type-true' => [ - 'identifier' => '/* testPHP82PseudoTypeTrue */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => 'true', - 'type_token' => -2, - 'type_end_token' => -2, - 'nullable_type' => false, - ], - ], - 'php8.2-pseudo-type-true-nullable' => [ - 'identifier' => '/* testPHP82NullablePseudoTypeTrue */', - 'expected' => [ - 'scope' => 'protected', - 'scope_specified' => true, - 'is_static' => true, - 'is_readonly' => false, - 'type' => '?true', - 'type_token' => -2, - 'type_end_token' => -2, - 'nullable_type' => true, - ], - ], - 'php8.2-pseudo-type-true-in-union' => [ - 'identifier' => '/* testPHP82PseudoTypeTrueInUnion */', - 'expected' => [ - 'scope' => 'private', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => false, - 'type' => 'int|string|true', - 'type_token' => -6, - 'type_end_token' => -2, - 'nullable_type' => false, - ], - ], - 'php8.2-pseudo-type-invalid-true-false-union' => [ - 'identifier' => '/* testPHP82PseudoTypeFalseAndTrue */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => false, - 'is_static' => false, - 'is_readonly' => true, - 'type' => 'true|FALSE', - 'type_token' => -4, - 'type_end_token' => -2, - 'nullable_type' => false, - ], - ], - - 'php8.2-dnf-with-static' => [ - 'identifier' => '/* testPHP82DNFTypeStatic */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => true, - 'is_static' => true, - 'is_readonly' => false, - 'type' => '(Foo&\Bar)|bool', - 'type_token' => -9, - 'type_end_token' => -2, - 'nullable_type' => false, - ], - ], - 'php8.2-dnf-with-readonly-1' => [ - 'identifier' => '/* testPHP82DNFTypeReadonlyA */', - 'expected' => [ - 'scope' => 'protected', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => true, - 'type' => 'float|(Partially\Qualified&Traversable)', - 'type_token' => -10, - 'type_end_token' => -2, - 'nullable_type' => false, - ], - ], - 'php8.2-dnf-with-readonly-2' => [ - 'identifier' => '/* testPHP82DNFTypeReadonlyB */', - 'expected' => [ - 'scope' => 'private', - 'scope_specified' => true, - 'is_static' => false, - 'is_readonly' => true, - 'type' => '(namespace\Foo&Bar)|string', - 'type_token' => -10, - 'type_end_token' => -2, - 'nullable_type' => false, - ], - ], - 'php8.2-dnf-with-illegal-nullable' => [ - 'identifier' => '/* testPHP82DNFTypeIllegalNullable */', - 'expected' => [ - 'scope' => 'public', - 'scope_specified' => false, - 'is_static' => false, - 'is_readonly' => false, - 'type' => '?(A&\Pck\B)|bool', - 'type_token' => -11, - 'type_end_token' => -2, - 'nullable_type' => true, - ], - ], - ]; - - }//end dataGetMemberProperties() - - - /** - * Test receiving an expected exception when a non property is passed. - * - * @param string $identifier Comment which precedes the test case. - * - * @dataProvider dataNotClassProperty - * - * @return void - */ - public function testNotClassPropertyException($identifier) - { - $this->expectRunTimeException('$stackPtr is not a class member var'); - - $variable = $this->getTargetToken($identifier, T_VARIABLE); - self::$phpcsFile->getMemberProperties($variable); - - }//end testNotClassPropertyException() - - - /** - * Data provider for the NotClassPropertyException test. - * - * @see testNotClassPropertyException() - * - * @return array> - */ - public static function dataNotClassProperty() - { - return [ - 'method parameter' => ['/* testMethodParam */'], - 'variable import using global keyword' => ['/* testImportedGlobal */'], - 'function local variable' => ['/* testLocalVariable */'], - 'global variable' => ['/* testGlobalVariable */'], - 'method parameter in anon class nested in ternary' => ['/* testNestedMethodParam 1 */'], - 'method parameter in anon class nested in function call' => ['/* testNestedMethodParam 2 */'], - 'method parameter in enum' => ['/* testEnumMethodParamNotProperty */'], - ]; - - }//end dataNotClassProperty() - - - /** - * Test receiving an expected exception when a non variable is passed. - * - * @return void - */ - public function testNotAVariableException() - { - $this->expectRunTimeException('$stackPtr must be of type T_VARIABLE'); - - $next = $this->getTargetToken('/* testNotAVariable */', T_RETURN); - self::$phpcsFile->getMemberProperties($next); - - }//end testNotAVariableException() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/GetMethodParametersTest.inc b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/GetMethodParametersTest.inc deleted file mode 100644 index 1f72ccfa..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/GetMethodParametersTest.inc +++ /dev/null @@ -1,338 +0,0 @@ - $b; - -/* testArrowFunctionReturnByRef */ -fn&(?string $a) => $b; - -/* testArrayDefaultValues */ -function arrayDefaultValues($var1 = [], $var2 = array(1, 2, 3) ) {} - -/* testConstantDefaultValueSecondParam */ -function constantDefaultValueSecondParam($var1, $var2 = M_PI) {} - -/* testScalarTernaryExpressionInDefault */ -function ternayInDefault( $a = FOO ? 'bar' : 10, ? bool $b ) {} - -/* testVariadicFunction */ -function variadicFunction( int ... $a ) {} - -/* testVariadicByRefFunction */ -function variadicByRefFunction( &...$a ) {} - -/* testVariadicFunctionClassType */ -function variableLengthArgument($unit, DateInterval ...$intervals) {} - -/* testNameSpacedTypeDeclaration */ -function namespacedClassType( \Package\Sub\ClassName $a, ?Sub\AnotherClass $b ) {} - -/* testWithAllTypes */ -class testAllTypes { - function allTypes( - ?ClassName $a, - self $b, - parent $c, - object $d, - ?int $e, - string &$f, - iterable $g, - bool $h = true, - callable $i = 'is_null', - float $j = 1.1, - array ...$k - ) {} -} - -/* testArrowFunctionWithAllTypes */ -$fn = fn( - ?ClassName $a, - self $b, - parent $c, - object $d, - ?int $e, - string &$f, - iterable $g, - bool $h = true, - callable $i = 'is_null', - float $j = 1.1, - array ...$k -) => $something; - -/* testMessyDeclaration */ -function messyDeclaration( - // comment - ?\MyNS /* comment */ - \ SubCat // phpcs:ignore Standard.Cat.Sniff -- for reasons. - \ MyClass $a, - $b /* test */ = /* test */ 'default' /* test*/, - // phpcs:ignore Stnd.Cat.Sniff -- For reasons. - ? /*comment*/ - bool // phpcs:disable Stnd.Cat.Sniff -- For reasons. - & /*test*/ ... /* phpcs:ignore */ $c -) {} - -/* testPHP8MixedTypeHint */ -function mixedTypeHint(mixed &...$var1) {} - -/* testPHP8MixedTypeHintNullable */ -// Intentional fatal error - nullability is not allowed with mixed, but that's not the concern of the method. -function mixedTypeHintNullable(?Mixed $var1) {} - -/* testNamespaceOperatorTypeHint */ -function namespaceOperatorTypeHint(?namespace\Name $var1) {} - -/* testPHP8UnionTypesSimple */ -function unionTypeSimple(int|float $number, self|parent &...$obj) {} - -/* testPHP8UnionTypesWithSpreadOperatorAndReference */ -function globalFunctionWithSpreadAndReference(float|null &$paramA, string|int ...$paramB ) {} - -/* testPHP8UnionTypesSimpleWithBitwiseOrInDefault */ -$fn = fn(int|float $var = CONSTANT_A | CONSTANT_B) => $var; - -/* testPHP8UnionTypesTwoClasses */ -function unionTypesTwoClasses(MyClassA|\Package\MyClassB $var) {} - -/* testPHP8UnionTypesAllBaseTypes */ -function unionTypesAllBaseTypes(array|bool|callable|int|float|null|object|string $var) {} - -/* testPHP8UnionTypesAllPseudoTypes */ -// Intentional fatal error - mixing types which cannot be combined, but that's not the concern of the method. -function unionTypesAllPseudoTypes(false|mixed|self|parent|iterable|Resource $var) {} - -/* testPHP8UnionTypesNullable */ -// Intentional fatal error - nullability is not allowed with union types, but that's not the concern of the method. -$closure = function (?int|float $number) {}; - -/* testPHP8PseudoTypeNull */ -// PHP 8.0 - 8.1: Intentional fatal error - null pseudotype is only allowed in union types, but that's not the concern of the method. -function pseudoTypeNull(null $var = null) {} - -/* testPHP8PseudoTypeFalse */ -// PHP 8.0 - 8.1: Intentional fatal error - false pseudotype is only allowed in union types, but that's not the concern of the method. -function pseudoTypeFalse(false $var = false) {} - -/* testPHP8PseudoTypeFalseAndBool */ -// Intentional fatal error - false pseudotype is not allowed in combination with bool, but that's not the concern of the method. -function pseudoTypeFalseAndBool(bool|false $var = false) {} - -/* testPHP8ObjectAndClass */ -// Intentional fatal error - object is not allowed in combination with class name, but that's not the concern of the method. -function objectAndClass(object|ClassName $var) {} - -/* testPHP8PseudoTypeIterableAndArray */ -// Intentional fatal error - iterable pseudotype is not allowed in combination with array or Traversable, but that's not the concern of the method. -function pseudoTypeIterableAndArray(iterable|array|Traversable $var) {} - -/* testPHP8DuplicateTypeInUnionWhitespaceAndComment */ -// Intentional fatal error - duplicate types are not allowed in union types, but that's not the concern of the method. -function duplicateTypeInUnion( int | string /*comment*/ | INT $var) {} - -class ConstructorPropertyPromotionNoTypes { - /* testPHP8ConstructorPropertyPromotionNoTypes */ - public function __construct( - public $x = 0.0, - protected $y = '', - private $z = null, - ) {} -} - -class ConstructorPropertyPromotionWithTypes { - /* testPHP8ConstructorPropertyPromotionWithTypes */ - public function __construct(protected float|int $x, public ?string &$y = 'test', private mixed $z) {} -} - -class ConstructorPropertyPromotionAndNormalParams { - /* testPHP8ConstructorPropertyPromotionAndNormalParam */ - public function __construct(public int $promotedProp, ?int $normalArg) {} -} - -class ConstructorPropertyPromotionWithReadOnly { - /* testPHP81ConstructorPropertyPromotionWithReadOnly */ - public function __construct(public readonly ?int $promotedProp, ReadOnly private string|bool &$promotedToo) {} -} - -class ConstructorPropertyPromotionWithReadOnlyNoTypeDeclaration { - /* testPHP81ConstructorPropertyPromotionWithReadOnlyNoTypeDeclaration */ - // Intentional fatal error. Readonly properties MUST be typed. - public function __construct(public readonly $promotedProp, ReadOnly private &$promotedToo) {} -} - -class ConstructorPropertyPromotionWithOnlyReadOnly { - /* testPHP81ConstructorPropertyPromotionWithOnlyReadOnly */ - public function __construct(readonly Foo&Bar $promotedProp, readonly ?bool $promotedToo,) {} -} - -/* testPHP8ConstructorPropertyPromotionGlobalFunction */ -// Intentional fatal error. Property promotion not allowed in non-constructor, but that's not the concern of this method. -function globalFunction(private $x) {} - -abstract class ConstructorPropertyPromotionAbstractMethod { - /* testPHP8ConstructorPropertyPromotionAbstractMethod */ - // Intentional fatal error. - // 1. Property promotion not allowed in abstract method, but that's not the concern of this method. - // 2. Variadic arguments not allowed in property promotion, but that's not the concern of this method. - // 3. The callable type is not supported for properties, but that's not the concern of this method. - abstract public function __construct(public callable $y, private ...$x); -} - -/* testCommentsInParameter */ -function commentsInParams( - // Leading comment. - ?MyClass /*-*/ & /*-*/.../*-*/ $param /*-*/ = /*-*/ 'default value' . /*-*/ 'second part' // Trailing comment. -) {} - -/* testParameterAttributesInFunctionDeclaration */ -class ParametersWithAttributes( - public function __construct( - #[\MyExample\MyAttribute] private string $constructorPropPromTypedParamSingleAttribute, - #[MyAttr([1, 2])] - Type|false - $typedParamSingleAttribute, - #[MyAttribute(1234), MyAttribute(5678)] ?int $nullableTypedParamMultiAttribute, - #[WithoutArgument] #[SingleArgument(0)] $nonTypedParamTwoAttributes, - #[MyAttribute(array("key" => "value"))] - &...$otherParam, - ) {} -} - -/* testPHP8IntersectionTypes */ -function intersectionTypes(Foo&Bar $obj1, Boo&Bar $obj2) {} - -/* testPHP81IntersectionTypesWithSpreadOperatorAndReference */ -function globalFunctionWithSpreadAndReference(Boo&Bar &$paramA, Foo&Bar ...$paramB) {} - -/* testPHP81MoreIntersectionTypes */ -function moreIntersectionTypes(MyClassA&\Package\MyClassB&\Package\MyClassC $var) {} - -/* testPHP81IllegalIntersectionTypes */ -// Intentional fatal error - simple types are not allowed with intersection types, but that's not the concern of the method. -$closure = function (string&int $numeric_string) {}; - -/* testPHP81NullableIntersectionTypes */ -// Intentional fatal error - nullability is not allowed with intersection types, but that's not the concern of the method. -$closure = function (?Foo&Bar $object) {}; - -/* testPHP82PseudoTypeTrue */ -function pseudoTypeTrue(?true $var = true) {} - -/* testPHP82PseudoTypeFalseAndTrue */ -// Intentional fatal error - Type contains both true and false, bool should be used instead, but that's not the concern of the method. -function pseudoTypeFalseAndTrue(true|false $var = true) {} - -/* testPHP81NewInInitializers */ -function newInInitializers( - TypeA $new = new TypeA(self::CONST_VALUE), - \Package\TypeB $newToo = new \Package\TypeB(10, 'string'), -) {} - -/* testPHP82DNFTypes */ -function dnfTypes( - #[MyAttribute] - false|(Foo&Bar)|true $obj1, - (\Boo&\Pck\Bar)|(Boo&Baz) $obj2 = new Boo() -) {} - -/* testPHP82DNFTypesWithSpreadOperatorAndReference */ -function dnfInGlobalFunctionWithSpreadAndReference((Countable&MeMe)|iterable &$paramA, true|(Foo&Bar) ...$paramB) {} - -/* testPHP82DNFTypesIllegalNullable */ -// Intentional fatal error - nullable operator cannot be combined with DNF. -$dnf_closure = function (? ( MyClassA & /*comment*/ \Package\MyClassB & \Package\MyClassC ) $var): void {}; - -/* testPHP82DNFTypesInArrow */ -$dnf_arrow = fn((Hi&Ho)|FALSE &...$range): string => $a; - -/* testFunctionCallFnPHPCS353-354 */ -$value = $obj->fn(true); - -/* testClosureNoParams */ -function() {}; - -/* testClosure */ -function( $a = 'test' ) {}; - -/* testClosureUseNoParams */ -function() use() {}; - -/* testClosureUse */ -function() use( $foo, $bar ) {}; - -/* testFunctionParamListWithTrailingComma */ -function trailingComma( - ?string $foo /*comment*/ , - $bar = 0, -) {} - -/* testClosureParamListWithTrailingComma */ -function( - $foo, - $bar, -) {}; - -/* testArrowFunctionParamListWithTrailingComma */ -$fn = fn( ?int $a , ...$b, ) => $b; - -/* testClosureUseWithTrailingComma */ -function() use( - $foo /*comment*/ , - $bar, -) {}; - -/* testArrowFunctionLiveCoding */ -// Intentional parse error. This has to be the last test in the file. -$fn = fn diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/GetMethodParametersTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/GetMethodParametersTest.php deleted file mode 100644 index f8e7b22e..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/GetMethodParametersTest.php +++ /dev/null @@ -1,3182 +0,0 @@ - - * @author Juliette Reinders Folmer - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @copyright 2019-2024 PHPCSStandards Contributors - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Tests\Core\File; - -use PHP_CodeSniffer\Tests\Core\AbstractMethodUnitTest; - -/** - * Tests for the \PHP_CodeSniffer\Files\File::getMethodParameters method. - * - * @covers \PHP_CodeSniffer\Files\File::getMethodParameters - */ -final class GetMethodParametersTest extends AbstractMethodUnitTest -{ - - - /** - * Test receiving an expected exception when a non function/use token is passed. - * - * @param string $commentString The comment which preceeds the test. - * @param int|string|array $targetTokenType The token type to search for after $commentString. - * - * @dataProvider dataUnexpectedTokenException - * - * @return void - */ - public function testUnexpectedTokenException($commentString, $targetTokenType) - { - $this->expectRunTimeException('$stackPtr must be of type T_FUNCTION or T_CLOSURE or T_USE or T_FN'); - - $target = $this->getTargetToken($commentString, $targetTokenType); - self::$phpcsFile->getMethodParameters($target); - - }//end testUnexpectedTokenException() - - - /** - * Data Provider. - * - * @see testUnexpectedTokenException() For the array format. - * - * @return array>> - */ - public static function dataUnexpectedTokenException() - { - return [ - 'interface' => [ - 'commentString' => '/* testNotAFunction */', - 'targetTokenType' => T_INTERFACE, - ], - 'function-call-fn-phpcs-3.5.3-3.5.4' => [ - 'commentString' => '/* testFunctionCallFnPHPCS353-354 */', - 'targetTokenType' => [ - T_FN, - T_STRING, - ], - ], - 'fn-live-coding' => [ - 'commentString' => '/* testArrowFunctionLiveCoding */', - 'targetTokenType' => [ - T_FN, - T_STRING, - ], - ], - ]; - - }//end dataUnexpectedTokenException() - - - /** - * Test receiving an expected exception when a non-closure use token is passed. - * - * @param string $identifier The comment which preceeds the test. - * - * @dataProvider dataInvalidUse - * - * @return void - */ - public function testInvalidUse($identifier) - { - $this->expectRunTimeException('$stackPtr was not a valid T_USE'); - - $use = $this->getTargetToken($identifier, [T_USE]); - self::$phpcsFile->getMethodParameters($use); - - }//end testInvalidUse() - - - /** - * Data Provider. - * - * @see testInvalidUse() For the array format. - * - * @return array> - */ - public static function dataInvalidUse() - { - return [ - 'ImportUse' => ['/* testImportUse */'], - 'ImportGroupUse' => ['/* testImportGroupUse */'], - 'TraitUse' => ['/* testTraitUse */'], - ]; - - }//end dataInvalidUse() - - - /** - * Test receiving an empty array when there are no parameters. - * - * @param string $commentString The comment which preceeds the test. - * @param int|string|array $targetTokenType Optional. The token type to search for after $commentString. - * Defaults to the function/closure/arrow tokens. - * - * @dataProvider dataNoParams - * - * @return void - */ - public function testNoParams($commentString, $targetTokenType=[T_FUNCTION, T_CLOSURE, T_FN]) - { - $target = $this->getTargetToken($commentString, $targetTokenType); - $result = self::$phpcsFile->getMethodParameters($target); - - $this->assertSame([], $result); - - }//end testNoParams() - - - /** - * Data Provider. - * - * @see testNoParams() For the array format. - * - * @return array>> - */ - public static function dataNoParams() - { - return [ - 'FunctionNoParams' => [ - 'commentString' => '/* testFunctionNoParams */', - ], - 'ClosureNoParams' => [ - 'commentString' => '/* testClosureNoParams */', - ], - 'ClosureUseNoParams' => [ - 'commentString' => '/* testClosureUseNoParams */', - 'targetTokenType' => T_USE, - ], - ]; - - }//end dataNoParams() - - - /** - * Verify pass-by-reference parsing. - * - * @return void - */ - public function testPassByReference() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 5, - 'name' => '$var', - 'content' => '&$var', - 'has_attributes' => false, - 'pass_by_reference' => true, - 'reference_token' => 4, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '', - 'type_hint_token' => false, - 'type_hint_end_token' => false, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPassByReference() - - - /** - * Verify array hint parsing. - * - * @return void - */ - public function testArrayHint() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 6, - 'name' => '$var', - 'content' => 'array $var', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'array', - 'type_hint_token' => 4, - 'type_hint_end_token' => 4, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testArrayHint() - - - /** - * Verify variable. - * - * @return void - */ - public function testVariable() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 4, - 'name' => '$var', - 'content' => '$var', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '', - 'type_hint_token' => false, - 'type_hint_end_token' => false, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testVariable() - - - /** - * Verify default value parsing with a single function param. - * - * @return void - */ - public function testSingleDefaultValue() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 4, - 'name' => '$var1', - 'content' => '$var1=self::CONSTANT', - 'default' => 'self::CONSTANT', - 'default_token' => 6, - 'default_equal_token' => 5, - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '', - 'type_hint_token' => false, - 'type_hint_end_token' => false, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testSingleDefaultValue() - - - /** - * Verify default value parsing. - * - * @return void - */ - public function testDefaultValues() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 4, - 'name' => '$var1', - 'content' => '$var1=1', - 'default' => '1', - 'default_token' => 6, - 'default_equal_token' => 5, - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '', - 'type_hint_token' => false, - 'type_hint_end_token' => false, - 'nullable_type' => false, - 'comma_token' => 7, - ]; - $expected[1] = [ - 'token' => 9, - 'name' => '$var2', - 'content' => "\$var2='value'", - 'default' => "'value'", - 'default_token' => 11, - 'default_equal_token' => 10, - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '', - 'type_hint_token' => false, - 'type_hint_end_token' => false, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testDefaultValues() - - - /** - * Verify type hint parsing. - * - * @return void - */ - public function testTypeHint() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 6, - 'name' => '$var1', - 'content' => 'foo $var1', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'foo', - 'type_hint_token' => 4, - 'type_hint_end_token' => 4, - 'nullable_type' => false, - 'comma_token' => 7, - ]; - - $expected[1] = [ - 'token' => 11, - 'name' => '$var2', - 'content' => 'bar $var2', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'bar', - 'type_hint_token' => 9, - 'type_hint_end_token' => 9, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testTypeHint() - - - /** - * Verify self type hint parsing. - * - * @return void - */ - public function testSelfTypeHint() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 6, - 'name' => '$var', - 'content' => 'self $var', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'self', - 'type_hint_token' => 4, - 'type_hint_end_token' => 4, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testSelfTypeHint() - - - /** - * Verify nullable type hint parsing. - * - * @return void - */ - public function testNullableTypeHint() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 7, - 'name' => '$var1', - 'content' => '?int $var1', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '?int', - 'type_hint_token' => 5, - 'type_hint_end_token' => 5, - 'nullable_type' => true, - 'comma_token' => 8, - ]; - - $expected[1] = [ - 'token' => 14, - 'name' => '$var2', - 'content' => '?\bar $var2', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '?\bar', - 'type_hint_token' => 11, - 'type_hint_end_token' => 12, - 'nullable_type' => true, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testNullableTypeHint() - - - /** - * Verify "bitwise and" in default value !== pass-by-reference. - * - * @return void - */ - public function testBitwiseAndConstantExpressionDefaultValue() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 4, - 'name' => '$a', - 'content' => '$a = 10 & 20', - 'default' => '10 & 20', - 'default_token' => 8, - 'default_equal_token' => 6, - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '', - 'type_hint_token' => false, - 'type_hint_end_token' => false, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testBitwiseAndConstantExpressionDefaultValue() - - - /** - * Verify that arrow functions are supported. - * - * @return void - */ - public function testArrowFunction() - { - // Offsets are relative to the T_FN token. - $expected = []; - $expected[0] = [ - 'token' => 4, - 'name' => '$a', - 'content' => 'int $a', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'int', - 'type_hint_token' => 2, - 'type_hint_end_token' => 2, - 'nullable_type' => false, - 'comma_token' => 5, - ]; - - $expected[1] = [ - 'token' => 8, - 'name' => '$b', - 'content' => '...$b', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => true, - 'variadic_token' => 7, - 'type_hint' => '', - 'type_hint_token' => false, - 'type_hint_end_token' => false, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testArrowFunction() - - - /** - * Verify that arrow functions are supported. - * - * @return void - */ - public function testArrowFunctionReturnByRef() - { - // Offsets are relative to the T_FN token. - $expected = []; - $expected[0] = [ - 'token' => 6, - 'name' => '$a', - 'content' => '?string $a', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '?string', - 'type_hint_token' => 4, - 'type_hint_end_token' => 4, - 'nullable_type' => true, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testArrowFunctionReturnByRef() - - - /** - * Verify default value parsing with array values. - * - * @return void - */ - public function testArrayDefaultValues() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 4, - 'name' => '$var1', - 'content' => '$var1 = []', - 'default' => '[]', - 'default_token' => 8, - 'default_equal_token' => 6, - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '', - 'type_hint_token' => false, - 'type_hint_end_token' => false, - 'nullable_type' => false, - 'comma_token' => 10, - ]; - $expected[1] = [ - 'token' => 12, - 'name' => '$var2', - 'content' => '$var2 = array(1, 2, 3)', - 'default' => 'array(1, 2, 3)', - 'default_token' => 16, - 'default_equal_token' => 14, - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '', - 'type_hint_token' => false, - 'type_hint_end_token' => false, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testArrayDefaultValues() - - - /** - * Verify having a T_STRING constant as a default value for the second parameter. - * - * @return void - */ - public function testConstantDefaultValueSecondParam() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 4, - 'name' => '$var1', - 'content' => '$var1', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '', - 'type_hint_token' => false, - 'type_hint_end_token' => false, - 'nullable_type' => false, - 'comma_token' => 5, - ]; - $expected[1] = [ - 'token' => 7, - 'name' => '$var2', - 'content' => '$var2 = M_PI', - 'default' => 'M_PI', - 'default_token' => 11, - 'default_equal_token' => 9, - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '', - 'type_hint_token' => false, - 'type_hint_end_token' => false, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testConstantDefaultValueSecondParam() - - - /** - * Verify distinquishing between a nullable type and a ternary within a default expression. - * - * @return void - */ - public function testScalarTernaryExpressionInDefault() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 5, - 'name' => '$a', - 'content' => '$a = FOO ? \'bar\' : 10', - 'default' => 'FOO ? \'bar\' : 10', - 'default_token' => 9, - 'default_equal_token' => 7, - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '', - 'type_hint_token' => false, - 'type_hint_end_token' => false, - 'nullable_type' => false, - 'comma_token' => 18, - ]; - $expected[1] = [ - 'token' => 24, - 'name' => '$b', - 'content' => '? bool $b', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '?bool', - 'type_hint_token' => 22, - 'type_hint_end_token' => 22, - 'nullable_type' => true, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testScalarTernaryExpressionInDefault() - - - /** - * Verify a variadic parameter being recognized correctly. - * - * @return void - */ - public function testVariadicFunction() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 9, - 'name' => '$a', - 'content' => 'int ... $a', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => true, - 'variadic_token' => 7, - 'type_hint' => 'int', - 'type_hint_token' => 5, - 'type_hint_end_token' => 5, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testVariadicFunction() - - - /** - * Verify a variadic parameter passed by reference being recognized correctly. - * - * @return void - */ - public function testVariadicByRefFunction() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 7, - 'name' => '$a', - 'content' => '&...$a', - 'has_attributes' => false, - 'pass_by_reference' => true, - 'reference_token' => 5, - 'variable_length' => true, - 'variadic_token' => 6, - 'type_hint' => '', - 'type_hint_token' => false, - 'type_hint_end_token' => false, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testVariadicByRefFunction() - - - /** - * Verify handling of a variadic parameter with a class based type declaration. - * - * @return void - */ - public function testVariadicFunctionClassType() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 4, - 'name' => '$unit', - 'content' => '$unit', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '', - 'type_hint_token' => false, - 'type_hint_end_token' => false, - 'nullable_type' => false, - 'comma_token' => 5, - ]; - $expected[1] = [ - 'token' => 10, - 'name' => '$intervals', - 'content' => 'DateInterval ...$intervals', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => true, - 'variadic_token' => 9, - 'type_hint' => 'DateInterval', - 'type_hint_token' => 7, - 'type_hint_end_token' => 7, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testVariadicFunctionClassType() - - - /** - * Verify distinquishing between a nullable type and a ternary within a default expression. - * - * @return void - */ - public function testNameSpacedTypeDeclaration() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 12, - 'name' => '$a', - 'content' => '\Package\Sub\ClassName $a', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '\Package\Sub\ClassName', - 'type_hint_token' => 5, - 'type_hint_end_token' => 10, - 'nullable_type' => false, - 'comma_token' => 13, - ]; - $expected[1] = [ - 'token' => 20, - 'name' => '$b', - 'content' => '?Sub\AnotherClass $b', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '?Sub\AnotherClass', - 'type_hint_token' => 16, - 'type_hint_end_token' => 18, - 'nullable_type' => true, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testNameSpacedTypeDeclaration() - - - /** - * Verify correctly recognizing all type declarations supported by PHP. - * - * @return void - */ - public function testWithAllTypes() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 9, - 'name' => '$a', - 'content' => '?ClassName $a', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '?ClassName', - 'type_hint_token' => 7, - 'type_hint_end_token' => 7, - 'nullable_type' => true, - 'comma_token' => 10, - ]; - $expected[1] = [ - 'token' => 15, - 'name' => '$b', - 'content' => 'self $b', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'self', - 'type_hint_token' => 13, - 'type_hint_end_token' => 13, - 'nullable_type' => false, - 'comma_token' => 16, - ]; - $expected[2] = [ - 'token' => 21, - 'name' => '$c', - 'content' => 'parent $c', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'parent', - 'type_hint_token' => 19, - 'type_hint_end_token' => 19, - 'nullable_type' => false, - 'comma_token' => 22, - ]; - $expected[3] = [ - 'token' => 27, - 'name' => '$d', - 'content' => 'object $d', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'object', - 'type_hint_token' => 25, - 'type_hint_end_token' => 25, - 'nullable_type' => false, - 'comma_token' => 28, - ]; - $expected[4] = [ - 'token' => 34, - 'name' => '$e', - 'content' => '?int $e', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '?int', - 'type_hint_token' => 32, - 'type_hint_end_token' => 32, - 'nullable_type' => true, - 'comma_token' => 35, - ]; - $expected[5] = [ - 'token' => 41, - 'name' => '$f', - 'content' => 'string &$f', - 'has_attributes' => false, - 'pass_by_reference' => true, - 'reference_token' => 40, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'string', - 'type_hint_token' => 38, - 'type_hint_end_token' => 38, - 'nullable_type' => false, - 'comma_token' => 42, - ]; - $expected[6] = [ - 'token' => 47, - 'name' => '$g', - 'content' => 'iterable $g', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'iterable', - 'type_hint_token' => 45, - 'type_hint_end_token' => 45, - 'nullable_type' => false, - 'comma_token' => 48, - ]; - $expected[7] = [ - 'token' => 53, - 'name' => '$h', - 'content' => 'bool $h = true', - 'default' => 'true', - 'default_token' => 57, - 'default_equal_token' => 55, - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'bool', - 'type_hint_token' => 51, - 'type_hint_end_token' => 51, - 'nullable_type' => false, - 'comma_token' => 58, - ]; - $expected[8] = [ - 'token' => 63, - 'name' => '$i', - 'content' => 'callable $i = \'is_null\'', - 'default' => "'is_null'", - 'default_token' => 67, - 'default_equal_token' => 65, - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'callable', - 'type_hint_token' => 61, - 'type_hint_end_token' => 61, - 'nullable_type' => false, - 'comma_token' => 68, - ]; - $expected[9] = [ - 'token' => 73, - 'name' => '$j', - 'content' => 'float $j = 1.1', - 'default' => '1.1', - 'default_token' => 77, - 'default_equal_token' => 75, - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'float', - 'type_hint_token' => 71, - 'type_hint_end_token' => 71, - 'nullable_type' => false, - 'comma_token' => 78, - ]; - $expected[10] = [ - 'token' => 84, - 'name' => '$k', - 'content' => 'array ...$k', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => true, - 'variadic_token' => 83, - 'type_hint' => 'array', - 'type_hint_token' => 81, - 'type_hint_end_token' => 81, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testWithAllTypes() - - - /** - * Verify correctly recognizing all type declarations supported by PHP when used with an arrow function. - * - * @return void - */ - public function testArrowFunctionWithAllTypes() - { - // Offsets are relative to the T_FN token. - $expected = []; - $expected[0] = [ - 'token' => 7, - 'name' => '$a', - 'content' => '?ClassName $a', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '?ClassName', - 'type_hint_token' => 5, - 'type_hint_end_token' => 5, - 'nullable_type' => true, - 'comma_token' => 8, - ]; - $expected[1] = [ - 'token' => 13, - 'name' => '$b', - 'content' => 'self $b', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'self', - 'type_hint_token' => 11, - 'type_hint_end_token' => 11, - 'nullable_type' => false, - 'comma_token' => 14, - ]; - $expected[2] = [ - 'token' => 19, - 'name' => '$c', - 'content' => 'parent $c', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'parent', - 'type_hint_token' => 17, - 'type_hint_end_token' => 17, - 'nullable_type' => false, - 'comma_token' => 20, - ]; - $expected[3] = [ - 'token' => 25, - 'name' => '$d', - 'content' => 'object $d', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'object', - 'type_hint_token' => 23, - 'type_hint_end_token' => 23, - 'nullable_type' => false, - 'comma_token' => 26, - ]; - $expected[4] = [ - 'token' => 32, - 'name' => '$e', - 'content' => '?int $e', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '?int', - 'type_hint_token' => 30, - 'type_hint_end_token' => 30, - 'nullable_type' => true, - 'comma_token' => 33, - ]; - $expected[5] = [ - 'token' => 39, - 'name' => '$f', - 'content' => 'string &$f', - 'has_attributes' => false, - 'pass_by_reference' => true, - 'reference_token' => 38, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'string', - 'type_hint_token' => 36, - 'type_hint_end_token' => 36, - 'nullable_type' => false, - 'comma_token' => 40, - ]; - $expected[6] = [ - 'token' => 45, - 'name' => '$g', - 'content' => 'iterable $g', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'iterable', - 'type_hint_token' => 43, - 'type_hint_end_token' => 43, - 'nullable_type' => false, - 'comma_token' => 46, - ]; - $expected[7] = [ - 'token' => 51, - 'name' => '$h', - 'content' => 'bool $h = true', - 'default' => 'true', - 'default_token' => 55, - 'default_equal_token' => 53, - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'bool', - 'type_hint_token' => 49, - 'type_hint_end_token' => 49, - 'nullable_type' => false, - 'comma_token' => 56, - ]; - $expected[8] = [ - 'token' => 61, - 'name' => '$i', - 'content' => 'callable $i = \'is_null\'', - 'default' => "'is_null'", - 'default_token' => 65, - 'default_equal_token' => 63, - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'callable', - 'type_hint_token' => 59, - 'type_hint_end_token' => 59, - 'nullable_type' => false, - 'comma_token' => 66, - ]; - $expected[9] = [ - 'token' => 71, - 'name' => '$j', - 'content' => 'float $j = 1.1', - 'default' => '1.1', - 'default_token' => 75, - 'default_equal_token' => 73, - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'float', - 'type_hint_token' => 69, - 'type_hint_end_token' => 69, - 'nullable_type' => false, - 'comma_token' => 76, - ]; - $expected[10] = [ - 'token' => 82, - 'name' => '$k', - 'content' => 'array ...$k', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => true, - 'variadic_token' => 81, - 'type_hint' => 'array', - 'type_hint_token' => 79, - 'type_hint_end_token' => 79, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testArrowFunctionWithAllTypes() - - - /** - * Verify handling of a declaration interlaced with whitespace and comments. - * - * @return void - */ - public function testMessyDeclaration() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 25, - 'name' => '$a', - 'content' => '// comment - ?\MyNS /* comment */ - \ SubCat // phpcs:ignore Standard.Cat.Sniff -- for reasons. - \ MyClass $a', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '?\MyNS\SubCat\MyClass', - 'type_hint_token' => 9, - 'type_hint_end_token' => 23, - 'nullable_type' => true, - 'comma_token' => 26, - ]; - $expected[1] = [ - 'token' => 29, - 'name' => '$b', - 'content' => "\$b /* test */ = /* test */ 'default' /* test*/", - 'default' => "'default' /* test*/", - 'default_token' => 37, - 'default_equal_token' => 33, - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '', - 'type_hint_token' => false, - 'type_hint_end_token' => false, - 'nullable_type' => false, - 'comma_token' => 40, - ]; - $expected[2] = [ - 'token' => 62, - 'name' => '$c', - 'content' => '// phpcs:ignore Stnd.Cat.Sniff -- For reasons. - ? /*comment*/ - bool // phpcs:disable Stnd.Cat.Sniff -- For reasons. - & /*test*/ ... /* phpcs:ignore */ $c', - 'has_attributes' => false, - 'pass_by_reference' => true, - 'reference_token' => 54, - 'variable_length' => true, - 'variadic_token' => 58, - 'type_hint' => '?bool', - 'type_hint_token' => 50, - 'type_hint_end_token' => 50, - 'nullable_type' => true, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testMessyDeclaration() - - - /** - * Verify recognition of PHP8 mixed type declaration. - * - * @return void - */ - public function testPHP8MixedTypeHint() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 8, - 'name' => '$var1', - 'content' => 'mixed &...$var1', - 'has_attributes' => false, - 'pass_by_reference' => true, - 'reference_token' => 6, - 'variable_length' => true, - 'variadic_token' => 7, - 'type_hint' => 'mixed', - 'type_hint_token' => 4, - 'type_hint_end_token' => 4, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8MixedTypeHint() - - - /** - * Verify recognition of PHP8 mixed type declaration with nullability. - * - * @return void - */ - public function testPHP8MixedTypeHintNullable() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 7, - 'name' => '$var1', - 'content' => '?Mixed $var1', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '?Mixed', - 'type_hint_token' => 5, - 'type_hint_end_token' => 5, - 'nullable_type' => true, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8MixedTypeHintNullable() - - - /** - * Verify recognition of type declarations using the namespace operator. - * - * @return void - */ - public function testNamespaceOperatorTypeHint() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 9, - 'name' => '$var1', - 'content' => '?namespace\Name $var1', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '?namespace\Name', - 'type_hint_token' => 5, - 'type_hint_end_token' => 7, - 'nullable_type' => true, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testNamespaceOperatorTypeHint() - - - /** - * Verify recognition of PHP8 union type declaration. - * - * @return void - */ - public function testPHP8UnionTypesSimple() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 8, - 'name' => '$number', - 'content' => 'int|float $number', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'int|float', - 'type_hint_token' => 4, - 'type_hint_end_token' => 6, - 'nullable_type' => false, - 'comma_token' => 9, - ]; - $expected[1] = [ - 'token' => 17, - 'name' => '$obj', - 'content' => 'self|parent &...$obj', - 'has_attributes' => false, - 'pass_by_reference' => true, - 'reference_token' => 15, - 'variable_length' => true, - 'variadic_token' => 16, - 'type_hint' => 'self|parent', - 'type_hint_token' => 11, - 'type_hint_end_token' => 13, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8UnionTypesSimple() - - - /** - * Verify recognition of PHP8 union type declaration when the variable has either a spread operator or a reference. - * - * @return void - */ - public function testPHP8UnionTypesWithSpreadOperatorAndReference() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 9, - 'name' => '$paramA', - 'content' => 'float|null &$paramA', - 'has_attributes' => false, - 'pass_by_reference' => true, - 'reference_token' => 8, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'float|null', - 'type_hint_token' => 4, - 'type_hint_end_token' => 6, - 'nullable_type' => false, - 'comma_token' => 10, - ]; - $expected[1] = [ - 'token' => 17, - 'name' => '$paramB', - 'content' => 'string|int ...$paramB', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => true, - 'variadic_token' => 16, - 'type_hint' => 'string|int', - 'type_hint_token' => 12, - 'type_hint_end_token' => 14, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8UnionTypesWithSpreadOperatorAndReference() - - - /** - * Verify recognition of PHP8 union type declaration with a bitwise or in the default value. - * - * @return void - */ - public function testPHP8UnionTypesSimpleWithBitwiseOrInDefault() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 6, - 'name' => '$var', - 'content' => 'int|float $var = CONSTANT_A | CONSTANT_B', - 'default' => 'CONSTANT_A | CONSTANT_B', - 'default_token' => 10, - 'default_equal_token' => 8, - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'int|float', - 'type_hint_token' => 2, - 'type_hint_end_token' => 4, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8UnionTypesSimpleWithBitwiseOrInDefault() - - - /** - * Verify recognition of PHP8 union type declaration with two classes. - * - * @return void - */ - public function testPHP8UnionTypesTwoClasses() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 11, - 'name' => '$var', - 'content' => 'MyClassA|\Package\MyClassB $var', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'MyClassA|\Package\MyClassB', - 'type_hint_token' => 4, - 'type_hint_end_token' => 9, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8UnionTypesTwoClasses() - - - /** - * Verify recognition of PHP8 union type declaration with all base types. - * - * @return void - */ - public function testPHP8UnionTypesAllBaseTypes() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 20, - 'name' => '$var', - 'content' => 'array|bool|callable|int|float|null|object|string $var', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'array|bool|callable|int|float|null|object|string', - 'type_hint_token' => 4, - 'type_hint_end_token' => 18, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8UnionTypesAllBaseTypes() - - - /** - * Verify recognition of PHP8 union type declaration with all pseudo types. - * - * Note: "Resource" is not a type, but seen as a class name. - * - * @return void - */ - public function testPHP8UnionTypesAllPseudoTypes() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 16, - 'name' => '$var', - 'content' => 'false|mixed|self|parent|iterable|Resource $var', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'false|mixed|self|parent|iterable|Resource', - 'type_hint_token' => 4, - 'type_hint_end_token' => 14, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8UnionTypesAllPseudoTypes() - - - /** - * Verify recognition of PHP8 union type declaration with (illegal) nullability. - * - * @return void - */ - public function testPHP8UnionTypesNullable() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 8, - 'name' => '$number', - 'content' => '?int|float $number', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '?int|float', - 'type_hint_token' => 4, - 'type_hint_end_token' => 6, - 'nullable_type' => true, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8UnionTypesNullable() - - - /** - * Verify recognition of PHP8 type declaration with (illegal) single type null. - * - * @return void - */ - public function testPHP8PseudoTypeNull() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 6, - 'name' => '$var', - 'content' => 'null $var = null', - 'default' => 'null', - 'default_token' => 10, - 'default_equal_token' => 8, - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'null', - 'type_hint_token' => 4, - 'type_hint_end_token' => 4, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8PseudoTypeNull() - - - /** - * Verify recognition of PHP8 type declaration with (illegal) single type false. - * - * @return void - */ - public function testPHP8PseudoTypeFalse() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 6, - 'name' => '$var', - 'content' => 'false $var = false', - 'default' => 'false', - 'default_token' => 10, - 'default_equal_token' => 8, - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'false', - 'type_hint_token' => 4, - 'type_hint_end_token' => 4, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8PseudoTypeFalse() - - - /** - * Verify recognition of PHP8 type declaration with (illegal) type false combined with type bool. - * - * @return void - */ - public function testPHP8PseudoTypeFalseAndBool() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 8, - 'name' => '$var', - 'content' => 'bool|false $var = false', - 'default' => 'false', - 'default_token' => 12, - 'default_equal_token' => 10, - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'bool|false', - 'type_hint_token' => 4, - 'type_hint_end_token' => 6, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8PseudoTypeFalseAndBool() - - - /** - * Verify recognition of PHP8 type declaration with (illegal) type object combined with a class name. - * - * @return void - */ - public function testPHP8ObjectAndClass() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 8, - 'name' => '$var', - 'content' => 'object|ClassName $var', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'object|ClassName', - 'type_hint_token' => 4, - 'type_hint_end_token' => 6, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8ObjectAndClass() - - - /** - * Verify recognition of PHP8 type declaration with (illegal) type iterable combined with array/Traversable. - * - * @return void - */ - public function testPHP8PseudoTypeIterableAndArray() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 10, - 'name' => '$var', - 'content' => 'iterable|array|Traversable $var', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'iterable|array|Traversable', - 'type_hint_token' => 4, - 'type_hint_end_token' => 8, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8PseudoTypeIterableAndArray() - - - /** - * Verify recognition of PHP8 type declaration with (illegal) duplicate types. - * - * @return void - */ - public function testPHP8DuplicateTypeInUnionWhitespaceAndComment() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 17, - 'name' => '$var', - 'content' => 'int | string /*comment*/ | INT $var', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'int|string|INT', - 'type_hint_token' => 5, - 'type_hint_end_token' => 15, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8DuplicateTypeInUnionWhitespaceAndComment() - - - /** - * Verify recognition of PHP8 constructor property promotion without type declaration, with defaults. - * - * @return void - */ - public function testPHP8ConstructorPropertyPromotionNoTypes() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 8, - 'name' => '$x', - 'content' => 'public $x = 0.0', - 'default' => '0.0', - 'default_token' => 12, - 'default_equal_token' => 10, - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '', - 'type_hint_token' => false, - 'type_hint_end_token' => false, - 'nullable_type' => false, - 'property_visibility' => 'public', - 'visibility_token' => 6, - 'property_readonly' => false, - 'comma_token' => 13, - ]; - $expected[1] = [ - 'token' => 18, - 'name' => '$y', - 'content' => 'protected $y = \'\'', - 'default' => "''", - 'default_token' => 22, - 'default_equal_token' => 20, - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '', - 'type_hint_token' => false, - 'type_hint_end_token' => false, - 'nullable_type' => false, - 'property_visibility' => 'protected', - 'visibility_token' => 16, - 'property_readonly' => false, - 'comma_token' => 23, - ]; - $expected[2] = [ - 'token' => 28, - 'name' => '$z', - 'content' => 'private $z = null', - 'default' => 'null', - 'default_token' => 32, - 'default_equal_token' => 30, - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '', - 'type_hint_token' => false, - 'type_hint_end_token' => false, - 'nullable_type' => false, - 'property_visibility' => 'private', - 'visibility_token' => 26, - 'property_readonly' => false, - 'comma_token' => 33, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8ConstructorPropertyPromotionNoTypes() - - - /** - * Verify recognition of PHP8 constructor property promotion with type declarations. - * - * @return void - */ - public function testPHP8ConstructorPropertyPromotionWithTypes() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 10, - 'name' => '$x', - 'content' => 'protected float|int $x', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'float|int', - 'type_hint_token' => 6, - 'type_hint_end_token' => 8, - 'nullable_type' => false, - 'property_visibility' => 'protected', - 'visibility_token' => 4, - 'property_readonly' => false, - 'comma_token' => 11, - ]; - $expected[1] = [ - 'token' => 19, - 'name' => '$y', - 'content' => 'public ?string &$y = \'test\'', - 'default' => "'test'", - 'default_token' => 23, - 'default_equal_token' => 21, - 'has_attributes' => false, - 'pass_by_reference' => true, - 'reference_token' => 18, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '?string', - 'type_hint_token' => 16, - 'type_hint_end_token' => 16, - 'nullable_type' => true, - 'property_visibility' => 'public', - 'visibility_token' => 13, - 'property_readonly' => false, - 'comma_token' => 24, - ]; - $expected[2] = [ - 'token' => 30, - 'name' => '$z', - 'content' => 'private mixed $z', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'mixed', - 'type_hint_token' => 28, - 'type_hint_end_token' => 28, - 'nullable_type' => false, - 'property_visibility' => 'private', - 'visibility_token' => 26, - 'property_readonly' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8ConstructorPropertyPromotionWithTypes() - - - /** - * Verify recognition of PHP8 constructor with both property promotion as well as normal parameters. - * - * @return void - */ - public function testPHP8ConstructorPropertyPromotionAndNormalParam() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 8, - 'name' => '$promotedProp', - 'content' => 'public int $promotedProp', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'int', - 'type_hint_token' => 6, - 'type_hint_end_token' => 6, - 'nullable_type' => false, - 'property_visibility' => 'public', - 'visibility_token' => 4, - 'property_readonly' => false, - 'comma_token' => 9, - ]; - $expected[1] = [ - 'token' => 14, - 'name' => '$normalArg', - 'content' => '?int $normalArg', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '?int', - 'type_hint_token' => 12, - 'type_hint_end_token' => 12, - 'nullable_type' => true, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8ConstructorPropertyPromotionAndNormalParam() - - - /** - * Verify recognition of PHP8 constructor with property promotion using PHP 8.1 readonly keyword. - * - * @return void - */ - public function testPHP81ConstructorPropertyPromotionWithReadOnly() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 11, - 'name' => '$promotedProp', - 'content' => 'public readonly ?int $promotedProp', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '?int', - 'type_hint_token' => 9, - 'type_hint_end_token' => 9, - 'nullable_type' => true, - 'property_visibility' => 'public', - 'visibility_token' => 4, - 'property_readonly' => true, - 'readonly_token' => 6, - 'comma_token' => 12, - ]; - $expected[1] = [ - 'token' => 23, - 'name' => '$promotedToo', - 'content' => 'ReadOnly private string|bool &$promotedToo', - 'has_attributes' => false, - 'pass_by_reference' => true, - 'reference_token' => 22, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'string|bool', - 'type_hint_token' => 18, - 'type_hint_end_token' => 20, - 'nullable_type' => false, - 'property_visibility' => 'private', - 'visibility_token' => 16, - 'property_readonly' => true, - 'readonly_token' => 14, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP81ConstructorPropertyPromotionWithReadOnly() - - - /** - * Verify recognition of PHP8 constructor with property promotion using PHP 8.1 readonly keyword - * without a property type. - * - * @return void - */ - public function testPHP81ConstructorPropertyPromotionWithReadOnlyNoTypeDeclaration() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 8, - 'name' => '$promotedProp', - 'content' => 'public readonly $promotedProp', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '', - 'type_hint_token' => false, - 'type_hint_end_token' => false, - 'nullable_type' => false, - 'property_visibility' => 'public', - 'visibility_token' => 4, - 'property_readonly' => true, - 'readonly_token' => 6, - 'comma_token' => 9, - ]; - $expected[1] = [ - 'token' => 16, - 'name' => '$promotedToo', - 'content' => 'ReadOnly private &$promotedToo', - 'has_attributes' => false, - 'pass_by_reference' => true, - 'reference_token' => 15, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '', - 'type_hint_token' => false, - 'type_hint_end_token' => false, - 'nullable_type' => false, - 'property_visibility' => 'private', - 'visibility_token' => 13, - 'property_readonly' => true, - 'readonly_token' => 11, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP81ConstructorPropertyPromotionWithReadOnlyNoTypeDeclaration() - - - /** - * Verify recognition of PHP8 constructor with property promotion using PHP 8.1 readonly - * keyword without explicit visibility. - * - * @return void - */ - public function testPHP81ConstructorPropertyPromotionWithOnlyReadOnly() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 10, - 'name' => '$promotedProp', - 'content' => 'readonly Foo&Bar $promotedProp', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'Foo&Bar', - 'type_hint_token' => 6, - 'type_hint_end_token' => 8, - 'nullable_type' => false, - 'property_visibility' => 'public', - 'visibility_token' => false, - 'property_readonly' => true, - 'readonly_token' => 4, - 'comma_token' => 11, - ]; - $expected[1] = [ - 'token' => 18, - 'name' => '$promotedToo', - 'content' => 'readonly ?bool $promotedToo', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '?bool', - 'type_hint_token' => 16, - 'type_hint_end_token' => 16, - 'nullable_type' => true, - 'property_visibility' => 'public', - 'visibility_token' => false, - 'property_readonly' => true, - 'readonly_token' => 13, - 'comma_token' => 19, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP81ConstructorPropertyPromotionWithOnlyReadOnly() - - - /** - * Verify behaviour when a non-constructor function uses PHP 8 property promotion syntax. - * - * @return void - */ - public function testPHP8ConstructorPropertyPromotionGlobalFunction() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 6, - 'name' => '$x', - 'content' => 'private $x', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '', - 'type_hint_token' => false, - 'type_hint_end_token' => false, - 'nullable_type' => false, - 'property_visibility' => 'private', - 'visibility_token' => 4, - 'property_readonly' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8ConstructorPropertyPromotionGlobalFunction() - - - /** - * Verify behaviour when an abstract constructor uses PHP 8 property promotion syntax. - * - * @return void - */ - public function testPHP8ConstructorPropertyPromotionAbstractMethod() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 8, - 'name' => '$y', - 'content' => 'public callable $y', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'callable', - 'type_hint_token' => 6, - 'type_hint_end_token' => 6, - 'nullable_type' => false, - 'property_visibility' => 'public', - 'visibility_token' => 4, - 'property_readonly' => false, - 'comma_token' => 9, - ]; - $expected[1] = [ - 'token' => 14, - 'name' => '$x', - 'content' => 'private ...$x', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => true, - 'variadic_token' => 13, - 'type_hint' => '', - 'type_hint_token' => false, - 'type_hint_end_token' => false, - 'nullable_type' => false, - 'property_visibility' => 'private', - 'visibility_token' => 11, - 'property_readonly' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8ConstructorPropertyPromotionAbstractMethod() - - - /** - * Verify and document behaviour when there are comments within a parameter declaration. - * - * @return void - */ - public function testCommentsInParameter() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 19, - 'name' => '$param', - 'content' => '// Leading comment. - ?MyClass /*-*/ & /*-*/.../*-*/ $param /*-*/ = /*-*/ \'default value\' . /*-*/ \'second part\' // Trailing comment.', - 'default' => '\'default value\' . /*-*/ \'second part\' // Trailing comment.', - 'default_token' => 27, - 'default_equal_token' => 23, - 'has_attributes' => false, - 'pass_by_reference' => true, - 'reference_token' => 13, - 'variable_length' => true, - 'variadic_token' => 16, - 'type_hint' => '?MyClass', - 'type_hint_token' => 9, - 'type_hint_end_token' => 9, - 'nullable_type' => true, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testCommentsInParameter() - - - /** - * Verify behaviour when parameters have attributes attached. - * - * @return void - */ - public function testParameterAttributesInFunctionDeclaration() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 17, - 'name' => '$constructorPropPromTypedParamSingleAttribute', - 'content' => '#[\MyExample\MyAttribute] private string $constructorPropPromTypedParamSingleAttribute', - 'has_attributes' => true, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'string', - 'type_hint_token' => 15, - 'type_hint_end_token' => 15, - 'nullable_type' => false, - 'property_visibility' => 'private', - 'visibility_token' => 13, - 'property_readonly' => false, - 'comma_token' => 18, - ]; - $expected[1] = [ - 'token' => 39, - 'name' => '$typedParamSingleAttribute', - 'content' => '#[MyAttr([1, 2])] - Type|false - $typedParamSingleAttribute', - 'has_attributes' => true, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'Type|false', - 'type_hint_token' => 34, - 'type_hint_end_token' => 36, - 'nullable_type' => false, - 'comma_token' => 40, - ]; - $expected[2] = [ - 'token' => 59, - 'name' => '$nullableTypedParamMultiAttribute', - 'content' => '#[MyAttribute(1234), MyAttribute(5678)] ?int $nullableTypedParamMultiAttribute', - 'has_attributes' => true, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '?int', - 'type_hint_token' => 57, - 'type_hint_end_token' => 57, - 'nullable_type' => true, - 'comma_token' => 60, - ]; - $expected[3] = [ - 'token' => 74, - 'name' => '$nonTypedParamTwoAttributes', - 'content' => '#[WithoutArgument] #[SingleArgument(0)] $nonTypedParamTwoAttributes', - 'has_attributes' => true, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '', - 'type_hint_token' => false, - 'type_hint_end_token' => false, - 'nullable_type' => false, - 'comma_token' => 75, - ]; - $expected[4] = [ - 'token' => 95, - 'name' => '$otherParam', - 'content' => '#[MyAttribute(array("key" => "value"))] - &...$otherParam', - 'has_attributes' => true, - 'pass_by_reference' => true, - 'reference_token' => 93, - 'variable_length' => true, - 'variadic_token' => 94, - 'type_hint' => '', - 'type_hint_token' => false, - 'type_hint_end_token' => false, - 'nullable_type' => false, - 'comma_token' => 96, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testParameterAttributesInFunctionDeclaration() - - - /** - * Verify recognition of PHP8.1 intersection type declaration. - * - * @return void - */ - public function testPHP8IntersectionTypes() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 8, - 'name' => '$obj1', - 'content' => 'Foo&Bar $obj1', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'Foo&Bar', - 'type_hint_token' => 4, - 'type_hint_end_token' => 6, - 'nullable_type' => false, - 'comma_token' => 9, - ]; - $expected[1] = [ - 'token' => 15, - 'name' => '$obj2', - 'content' => 'Boo&Bar $obj2', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'Boo&Bar', - 'type_hint_token' => 11, - 'type_hint_end_token' => 13, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8IntersectionTypes() - - - /** - * Verify recognition of PHP8.1 intersection type declaration when the variable - * has either a spread operator or a reference. - * - * @return void - */ - public function testPHP81IntersectionTypesWithSpreadOperatorAndReference() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 9, - 'name' => '$paramA', - 'content' => 'Boo&Bar &$paramA', - 'has_attributes' => false, - 'pass_by_reference' => true, - 'reference_token' => 8, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'Boo&Bar', - 'type_hint_token' => 4, - 'type_hint_end_token' => 6, - 'nullable_type' => false, - 'comma_token' => 10, - ]; - $expected[1] = [ - 'token' => 17, - 'name' => '$paramB', - 'content' => 'Foo&Bar ...$paramB', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => true, - 'variadic_token' => 16, - 'type_hint' => 'Foo&Bar', - 'type_hint_token' => 12, - 'type_hint_end_token' => 14, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP81IntersectionTypesWithSpreadOperatorAndReference() - - - /** - * Verify recognition of PHP8.1 intersection type declaration with more types. - * - * @return void - */ - public function testPHP81MoreIntersectionTypes() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 16, - 'name' => '$var', - 'content' => 'MyClassA&\Package\MyClassB&\Package\MyClassC $var', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'MyClassA&\Package\MyClassB&\Package\MyClassC', - 'type_hint_token' => 4, - 'type_hint_end_token' => 14, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP81MoreIntersectionTypes() - - - /** - * Verify recognition of PHP8.1 intersection type declaration with illegal simple types. - * - * @return void - */ - public function testPHP81IllegalIntersectionTypes() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 7, - 'name' => '$numeric_string', - 'content' => 'string&int $numeric_string', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'string&int', - 'type_hint_token' => 3, - 'type_hint_end_token' => 5, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP81IllegalIntersectionTypes() - - - /** - * Verify recognition of PHP8.1 intersection type declaration with (illegal) nullability. - * - * @return void - */ - public function testPHP81NullableIntersectionTypes() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 8, - 'name' => '$object', - 'content' => '?Foo&Bar $object', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '?Foo&Bar', - 'type_hint_token' => 4, - 'type_hint_end_token' => 6, - 'nullable_type' => true, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP81NullableIntersectionTypes() - - - /** - * Verify recognition of PHP 8.2 stand-alone `true` type. - * - * @return void - */ - public function testPHP82PseudoTypeTrue() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 7, - 'name' => '$var', - 'content' => '?true $var = true', - 'default' => 'true', - 'default_token' => 11, - 'default_equal_token' => 9, - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '?true', - 'type_hint_token' => 5, - 'type_hint_end_token' => 5, - 'nullable_type' => true, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP82PseudoTypeTrue() - - - /** - * Verify recognition of PHP 8.2 type declaration with (illegal) type false combined with type true. - * - * @return void - */ - public function testPHP82PseudoTypeFalseAndTrue() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 8, - 'name' => '$var', - 'content' => 'true|false $var = true', - 'default' => 'true', - 'default_token' => 12, - 'default_equal_token' => 10, - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'true|false', - 'type_hint_token' => 4, - 'type_hint_end_token' => 6, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP82PseudoTypeFalseAndTrue() - - - /** - * Verify behaviour when the default value uses the "new" keyword, as is allowed per PHP 8.1. - * - * @return void - */ - public function testPHP81NewInInitializers() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 8, - 'name' => '$new', - 'content' => 'TypeA $new = new TypeA(self::CONST_VALUE)', - 'default' => 'new TypeA(self::CONST_VALUE)', - 'default_token' => 12, - 'default_equal_token' => 10, - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'TypeA', - 'type_hint_token' => 6, - 'type_hint_end_token' => 6, - 'nullable_type' => false, - 'comma_token' => 20, - ]; - $expected[1] = [ - 'token' => 28, - 'name' => '$newToo', - 'content' => '\Package\TypeB $newToo = new \Package\TypeB(10, \'string\')', - 'default' => "new \Package\TypeB(10, 'string')", - 'default_token' => 32, - 'default_equal_token' => 30, - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '\Package\TypeB', - 'type_hint_token' => 23, - 'type_hint_end_token' => 26, - 'nullable_type' => false, - 'comma_token' => 44, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP81NewInInitializers() - - - /** - * Verify recognition of 8.2 DNF parameter type declarations. - * - * @return void - */ - public function testPHP82DNFTypes() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 21, - 'name' => '$obj1', - 'content' => '#[MyAttribute] - false|(Foo&Bar)|true $obj1', - 'has_attributes' => true, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => 'false|(Foo&Bar)|true', - 'type_hint_token' => 11, - 'type_hint_end_token' => 19, - 'nullable_type' => false, - 'comma_token' => 22, - ]; - $expected[1] = [ - 'token' => 41, - 'name' => '$obj2', - 'content' => '(\Boo&\Pck\Bar)|(Boo&Baz) $obj2 = new Boo()', - 'default' => 'new Boo()', - 'default_token' => 45, - 'default_equal_token' => 43, - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '(\Boo&\Pck\Bar)|(Boo&Baz)', - 'type_hint_token' => 25, - 'type_hint_end_token' => 39, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP82DNFTypes() - - - /** - * Verify recognition of PHP 8.2 DNF parameter type declarations when the variable - * has either a spread operator or a reference. - * - * @return void - */ - public function testPHP82DNFTypesWithSpreadOperatorAndReference() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 13, - 'name' => '$paramA', - 'content' => '(Countable&MeMe)|iterable &$paramA', - 'has_attributes' => false, - 'pass_by_reference' => true, - 'reference_token' => 12, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '(Countable&MeMe)|iterable', - 'type_hint_token' => 4, - 'type_hint_end_token' => 10, - 'nullable_type' => false, - 'comma_token' => 14, - ]; - $expected[1] = [ - 'token' => 25, - 'name' => '$paramB', - 'content' => 'true|(Foo&Bar) ...$paramB', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => true, - 'variadic_token' => 24, - 'type_hint' => 'true|(Foo&Bar)', - 'type_hint_token' => 16, - 'type_hint_end_token' => 22, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP82DNFTypesWithSpreadOperatorAndReference() - - - /** - * Verify recognition of PHP 8.2 DNF parameter type declarations using the nullability operator (not allowed). - * - * @return void - */ - public function testPHP82DNFTypesIllegalNullable() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 27, - 'name' => '$var', - 'content' => '? ( MyClassA & /*comment*/ \Package\MyClassB & \Package\MyClassC ) $var', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '?(MyClassA&\Package\MyClassB&\Package\MyClassC)', - 'type_hint_token' => 5, - 'type_hint_end_token' => 25, - 'nullable_type' => true, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP82DNFTypesIllegalNullable() - - - /** - * Verify recognition of PHP 8.2 DNF parameter type declarations in an arrow function. - * - * @return void - */ - public function testPHP82DNFTypesInArrow() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 12, - 'name' => '$range', - 'content' => '(Hi&Ho)|FALSE &...$range', - 'has_attributes' => false, - 'pass_by_reference' => true, - 'reference_token' => 10, - 'variable_length' => true, - 'variadic_token' => 11, - 'type_hint' => '(Hi&Ho)|FALSE', - 'type_hint_token' => 2, - 'type_hint_end_token' => 8, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP82DNFTypesInArrow() - - - /** - * Verify handling of a closure. - * - * @return void - */ - public function testClosure() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 3, - 'name' => '$a', - 'content' => '$a = \'test\'', - 'default' => "'test'", - 'default_token' => 7, - 'default_equal_token' => 5, - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '', - 'type_hint_token' => false, - 'type_hint_end_token' => false, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testClosure() - - - /** - * Verify handling of a closure T_USE token correctly. - * - * @return void - */ - public function testClosureUse() - { - // Offsets are relative to the T_USE token. - $expected = []; - $expected[0] = [ - 'token' => 3, - 'name' => '$foo', - 'content' => '$foo', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '', - 'type_hint_token' => false, - 'type_hint_end_token' => false, - 'nullable_type' => false, - 'comma_token' => 4, - ]; - $expected[1] = [ - 'token' => 6, - 'name' => '$bar', - 'content' => '$bar', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '', - 'type_hint_token' => false, - 'type_hint_end_token' => false, - 'nullable_type' => false, - 'comma_token' => false, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected, [T_USE]); - - }//end testClosureUse() - - - /** - * Verify function declarations with trailing commas are handled correctly. - * - * @return void - */ - public function testFunctionParamListWithTrailingComma() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 9, - 'name' => '$foo', - 'content' => '?string $foo /*comment*/', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '?string', - 'type_hint_token' => 7, - 'type_hint_end_token' => 7, - 'nullable_type' => true, - 'comma_token' => 13, - ]; - $expected[1] = [ - 'token' => 16, - 'name' => '$bar', - 'content' => '$bar = 0', - 'default' => '0', - 'default_token' => 20, - 'default_equal_token' => 18, - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '', - 'type_hint_token' => false, - 'type_hint_end_token' => false, - 'nullable_type' => false, - 'comma_token' => 21, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testFunctionParamListWithTrailingComma() - - - /** - * Verify closure declarations with trailing commas are handled correctly. - * - * @return void - */ - public function testClosureParamListWithTrailingComma() - { - // Offsets are relative to the T_FUNCTION token. - $expected = []; - $expected[0] = [ - 'token' => 4, - 'name' => '$foo', - 'content' => '$foo', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '', - 'type_hint_token' => false, - 'type_hint_end_token' => false, - 'nullable_type' => false, - 'comma_token' => 5, - ]; - $expected[1] = [ - 'token' => 8, - 'name' => '$bar', - 'content' => '$bar', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '', - 'type_hint_token' => false, - 'type_hint_end_token' => false, - 'nullable_type' => false, - 'comma_token' => 9, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testClosureParamListWithTrailingComma() - - - /** - * Verify arrow function declarations with trailing commas are handled correctly. - * - * @return void - */ - public function testArrowFunctionParamListWithTrailingComma() - { - // Offsets are relative to the T_FN token. - $expected = []; - $expected[0] = [ - 'token' => 6, - 'name' => '$a', - 'content' => '?int $a', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '?int', - 'type_hint_token' => 4, - 'type_hint_end_token' => 4, - 'nullable_type' => true, - 'comma_token' => 8, - ]; - $expected[1] = [ - 'token' => 11, - 'name' => '$b', - 'content' => '...$b', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => true, - 'variadic_token' => 10, - 'type_hint' => '', - 'type_hint_token' => false, - 'type_hint_end_token' => false, - 'nullable_type' => false, - 'comma_token' => 12, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testArrowFunctionParamListWithTrailingComma() - - - /** - * Verify closure T_USE statements with trailing commas are handled correctly. - * - * @return void - */ - public function testClosureUseWithTrailingComma() - { - // Offsets are relative to the T_USE token. - $expected = []; - $expected[0] = [ - 'token' => 4, - 'name' => '$foo', - 'content' => '$foo /*comment*/', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '', - 'type_hint_token' => false, - 'type_hint_end_token' => false, - 'nullable_type' => false, - 'comma_token' => 8, - ]; - $expected[1] = [ - 'token' => 11, - 'name' => '$bar', - 'content' => '$bar', - 'has_attributes' => false, - 'pass_by_reference' => false, - 'reference_token' => false, - 'variable_length' => false, - 'variadic_token' => false, - 'type_hint' => '', - 'type_hint_token' => false, - 'type_hint_end_token' => false, - 'nullable_type' => false, - 'comma_token' => 12, - ]; - - $this->getMethodParametersTestHelper('/* '.__FUNCTION__.' */', $expected, [T_USE]); - - }//end testClosureUseWithTrailingComma() - - - /** - * Test helper. - * - * @param string $commentString The comment which preceeds the test. - * @param array> $expected The expected function output. - * @param int|string|array $targetType Optional. The token type to search for after $marker. - * Defaults to the function/closure/arrow tokens. - * - * @return void - */ - private function getMethodParametersTestHelper($commentString, $expected, $targetType=[T_FUNCTION, T_CLOSURE, T_FN]) - { - $target = $this->getTargetToken($commentString, $targetType); - $found = self::$phpcsFile->getMethodParameters($target); - - // Convert offsets to absolute positions in the token stream. - foreach ($expected as $key => $param) { - $expected[$key]['token'] += $target; - - if (is_int($param['reference_token']) === true) { - $expected[$key]['reference_token'] += $target; - } - - if (is_int($param['variadic_token']) === true) { - $expected[$key]['variadic_token'] += $target; - } - - if (is_int($param['type_hint_token']) === true) { - $expected[$key]['type_hint_token'] += $target; - } - - if (is_int($param['type_hint_end_token']) === true) { - $expected[$key]['type_hint_end_token'] += $target; - } - - if (is_int($param['comma_token']) === true) { - $expected[$key]['comma_token'] += $target; - } - - if (isset($param['default_token']) === true) { - $expected[$key]['default_token'] += $target; - } - - if (isset($param['default_equal_token']) === true) { - $expected[$key]['default_equal_token'] += $target; - } - - if (isset($param['visibility_token']) === true && is_int($param['visibility_token']) === true) { - $expected[$key]['visibility_token'] += $target; - } - - if (isset($param['readonly_token']) === true) { - $expected[$key]['readonly_token'] += $target; - } - }//end foreach - - $this->assertSame($expected, $found); - - }//end getMethodParametersTestHelper() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/GetMethodPropertiesTest.inc b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/GetMethodPropertiesTest.inc deleted file mode 100644 index 7f572f66..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/GetMethodPropertiesTest.inc +++ /dev/null @@ -1,226 +0,0 @@ - $number + 1, - $numbers -); - -class ReturnMe { - /* testReturnTypeStatic */ - private function myFunction(): static { - return $this; - } - - /* testReturnTypeNullableStatic */ - function myNullableFunction(): ?static { - return $this; - } -} - -/* testPHP8MixedTypeHint */ -function mixedTypeHint() :mixed {} - -/* testPHP8MixedTypeHintNullable */ -// Intentional fatal error - nullability is not allowed with mixed, but that's not the concern of the method. -function mixedTypeHintNullable(): ?mixed {} - -/* testNamespaceOperatorTypeHint */ -function namespaceOperatorTypeHint() : ?namespace\Name {} - -/* testPHP8UnionTypesSimple */ -function unionTypeSimple($number) : int|float {} - -/* testPHP8UnionTypesTwoClasses */ -$fn = fn($var): MyClassA|\Package\MyClassB => $var; - -/* testPHP8UnionTypesAllBaseTypes */ -function unionTypesAllBaseTypes() : array|bool|callable|int|float|null|Object|string {} - -/* testPHP8UnionTypesAllPseudoTypes */ -// Intentional fatal error - mixing types which cannot be combined, but that's not the concern of the method. -function unionTypesAllPseudoTypes($var) : false|MIXED|self|parent|static|iterable|Resource|void {} - -/* testPHP8UnionTypesNullable */ -// Intentional fatal error - nullability is not allowed with union types, but that's not the concern of the method. -$closure = function () use($a) :?int|float {}; - -/* testPHP8PseudoTypeNull */ -// PHP 8.0 - 8.1: Intentional fatal error - null pseudotype is only allowed in union types, but that's not the concern of the method. -function pseudoTypeNull(): null {} - -/* testPHP8PseudoTypeFalse */ -// PHP 8.0 - 8.1: Intentional fatal error - false pseudotype is only allowed in union types, but that's not the concern of the method. -function pseudoTypeFalse(): false {} - -/* testPHP8PseudoTypeFalseAndBool */ -// Intentional fatal error - false pseudotype is not allowed in combination with bool, but that's not the concern of the method. -function pseudoTypeFalseAndBool(): bool|false {} - -/* testPHP8ObjectAndClass */ -// Intentional fatal error - object is not allowed in combination with class name, but that's not the concern of the method. -function objectAndClass(): object|ClassName {} - -/* testPHP8PseudoTypeIterableAndArray */ -// Intentional fatal error - iterable pseudotype is not allowed in combination with array or Traversable, but that's not the concern of the method. -interface FooBar { - public function pseudoTypeIterableAndArray(): iterable|array|Traversable; -} - -/* testPHP8DuplicateTypeInUnionWhitespaceAndComment */ -// Intentional fatal error - duplicate types are not allowed in union types, but that's not the concern of the method. -function duplicateTypeInUnion(): int | /*comment*/ string | INT {} - -/* testPHP81NeverType */ -function never(): never {} - -/* testPHP81NullableNeverType */ -// Intentional fatal error - nullability is not allowed with never, but that's not the concern of the method. -function nullableNever(): ?never {} - -/* testPHP8IntersectionTypes */ -function intersectionTypes(): Foo&Bar {} - -/* testPHP81MoreIntersectionTypes */ -function moreIntersectionTypes(): MyClassA&\Package\MyClassB&\Package\MyClassC {} - -/* testPHP81IntersectionArrowFunction */ -$fn = fn($var): MyClassA&\Package\MyClassB => $var; - -/* testPHP81IllegalIntersectionTypes */ -// Intentional fatal error - simple types are not allowed with intersection types, but that's not the concern of the method. -$closure = function (): string&int {}; - -/* testPHP81NullableIntersectionTypes */ -// Intentional fatal error - nullability is not allowed with intersection types, but that's not the concern of the method. -$closure = function (): ?Foo&Bar {}; - -/* testPHP82PseudoTypeTrue */ -function pseudoTypeTrue(): ?true {} - -/* testPHP82PseudoTypeFalseAndTrue */ -// Intentional fatal error - Type contains both true and false, bool should be used instead, but that's not the concern of the method. -function pseudoTypeFalseAndTrue(): true|false {} - -/* testPHP82DNFType */ -function hasDNFType() : bool|(Foo&Bar)|string {} - -abstract class AbstractClass { - /* testPHP82DNFTypeAbstractMethod */ - abstract protected function abstractMethodDNFType() : float|(Foo&Bar); -} - -/* testPHP82DNFTypeIllegalNullable */ -// Intentional fatal error - nullable operator cannot be combined with DNF. -function illegalNullableDNF(): ?(A&\Pck\B)|bool {} - -/* testPHP82DNFTypeClosure */ -$closure = function() : object|(namespace\Foo&Countable) {}; - -/* testPHP82DNFTypeFn */ -// Intentional fatal error - void type cannot be combined with DNF. -$arrow = fn() : null|(Partially\Qualified&Traversable)|void => do_something(); - -/* testNotAFunction */ -return true; - -/* testPhpcsIssue1264 */ -function foo() : array { - echo $foo; -} - -/* testArrowFunctionArrayReturnValue */ -$fn = fn(): array => [a($a, $b)]; - -/* testArrowFunctionReturnByRef */ -fn&(?string $a) : ?string => $b; - -/* testFunctionCallFnPHPCS353-354 */ -$value = $obj->fn(true); - -/* testFunctionDeclarationNestedInTernaryPHPCS2975 */ -return (!$a ? [ new class { public function b(): c {} } ] : []); - -/* testClosureWithUseNoReturnType */ -$closure = function () use($a) /*comment*/ {}; - -/* testClosureWithUseNoReturnTypeIllegalUseProp */ -$closure = function () use ($this->prop){}; - -/* testClosureWithUseWithReturnType */ -$closure = function () use /*comment*/ ($a): Type {}; - -/* testClosureWithUseMultiParamWithReturnType */ -$closure = function () use ($a, &$b, $c, $d, $e, $f, $g): ?array {}; - -/* testArrowFunctionLiveCoding */ -// Intentional parse error. This has to be the last test in the file. -$fn = fn diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/GetMethodPropertiesTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/GetMethodPropertiesTest.php deleted file mode 100644 index 273ff4b2..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/GetMethodPropertiesTest.php +++ /dev/null @@ -1,1562 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Tests\Core\File; - -use PHP_CodeSniffer\Tests\Core\AbstractMethodUnitTest; - -/** - * Tests for the \PHP_CodeSniffer\Files\File::getMethodProperties method. - * - * @covers \PHP_CodeSniffer\Files\File::getMethodProperties - */ -final class GetMethodPropertiesTest extends AbstractMethodUnitTest -{ - - - /** - * Test receiving an expected exception when a non function token is passed. - * - * @param string $commentString The comment which preceeds the test. - * @param string|int|array $targetTokenType The token type to search for after $commentString. - * - * @dataProvider dataNotAFunctionException - * - * @return void - */ - public function testNotAFunctionException($commentString, $targetTokenType) - { - $this->expectRunTimeException('$stackPtr must be of type T_FUNCTION or T_CLOSURE or T_FN'); - - $next = $this->getTargetToken($commentString, $targetTokenType); - self::$phpcsFile->getMethodProperties($next); - - }//end testNotAFunctionException() - - - /** - * Data Provider. - * - * @see testNotAFunctionException() For the array format. - * - * @return array>> - */ - public static function dataNotAFunctionException() - { - return [ - 'return' => [ - 'commentString' => '/* testNotAFunction */', - 'targetTokenType' => T_RETURN, - ], - 'function-call-fn-phpcs-3.5.3-3.5.4' => [ - 'commentString' => '/* testFunctionCallFnPHPCS353-354 */', - 'targetTokenType' => [ - T_FN, - T_STRING, - ], - ], - 'fn-live-coding' => [ - 'commentString' => '/* testArrowFunctionLiveCoding */', - 'targetTokenType' => [ - T_FN, - T_STRING, - ], - ], - ]; - - }//end dataNotAFunctionException() - - - /** - * Test a basic function. - * - * @return void - */ - public function testBasicFunction() - { - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => '', - 'return_type_token' => false, - 'return_type_end_token' => false, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testBasicFunction() - - - /** - * Test a function with a return type. - * - * @return void - */ - public function testReturnFunction() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => 'array', - 'return_type_token' => 11, - 'return_type_end_token' => 11, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testReturnFunction() - - - /** - * Test a closure used as a function argument. - * - * @return void - */ - public function testNestedClosure() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => 'int', - 'return_type_token' => 8, - 'return_type_end_token' => 8, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testNestedClosure() - - - /** - * Test a basic method. - * - * @return void - */ - public function testBasicMethod() - { - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => '', - 'return_type_token' => false, - 'return_type_end_token' => false, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testBasicMethod() - - - /** - * Test a private static method. - * - * @return void - */ - public function testPrivateStaticMethod() - { - $expected = [ - 'scope' => 'private', - 'scope_specified' => true, - 'return_type' => '', - 'return_type_token' => false, - 'return_type_end_token' => false, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => true, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPrivateStaticMethod() - - - /** - * Test a basic final method. - * - * @return void - */ - public function testFinalMethod() - { - $expected = [ - 'scope' => 'public', - 'scope_specified' => true, - 'return_type' => '', - 'return_type_token' => false, - 'return_type_end_token' => false, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => true, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testFinalMethod() - - - /** - * Test a protected method with a return type. - * - * @return void - */ - public function testProtectedReturnMethod() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'protected', - 'scope_specified' => true, - 'return_type' => 'int', - 'return_type_token' => 8, - 'return_type_end_token' => 8, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testProtectedReturnMethod() - - - /** - * Test a public method with a return type. - * - * @return void - */ - public function testPublicReturnMethod() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => true, - 'return_type' => 'array', - 'return_type_token' => 7, - 'return_type_end_token' => 7, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPublicReturnMethod() - - - /** - * Test a public method with a nullable return type. - * - * @return void - */ - public function testNullableReturnMethod() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => true, - 'return_type' => '?array', - 'return_type_token' => 8, - 'return_type_end_token' => 8, - 'nullable_return_type' => true, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testNullableReturnMethod() - - - /** - * Test a public method with a nullable return type. - * - * @return void - */ - public function testMessyNullableReturnMethod() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => true, - 'return_type' => '?array', - 'return_type_token' => 18, - 'return_type_end_token' => 18, - 'nullable_return_type' => true, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testMessyNullableReturnMethod() - - - /** - * Test a method with a namespaced return type. - * - * @return void - */ - public function testReturnNamespace() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => '\MyNamespace\MyClass', - 'return_type_token' => 7, - 'return_type_end_token' => 10, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testReturnNamespace() - - - /** - * Test a method with a messy namespaces return type. - * - * @return void - */ - public function testReturnMultilineNamespace() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => '\MyNamespace\MyClass\Foo', - 'return_type_token' => 7, - 'return_type_end_token' => 23, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testReturnMultilineNamespace() - - - /** - * Test a method with an unqualified named return type. - * - * @return void - */ - public function testReturnUnqualifiedName() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'private', - 'scope_specified' => true, - 'return_type' => '?MyClass', - 'return_type_token' => 8, - 'return_type_end_token' => 8, - 'nullable_return_type' => true, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testReturnUnqualifiedName() - - - /** - * Test a method with a partially qualified namespaced return type. - * - * @return void - */ - public function testReturnPartiallyQualifiedName() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => 'Sub\Level\MyClass', - 'return_type_token' => 7, - 'return_type_end_token' => 11, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testReturnPartiallyQualifiedName() - - - /** - * Test a basic abstract method. - * - * @return void - */ - public function testAbstractMethod() - { - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => '', - 'return_type_token' => false, - 'return_type_end_token' => false, - 'nullable_return_type' => false, - 'is_abstract' => true, - 'is_final' => false, - 'is_static' => false, - 'has_body' => false, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testAbstractMethod() - - - /** - * Test an abstract method with a return type. - * - * @return void - */ - public function testAbstractReturnMethod() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'protected', - 'scope_specified' => true, - 'return_type' => 'bool', - 'return_type_token' => 7, - 'return_type_end_token' => 7, - 'nullable_return_type' => false, - 'is_abstract' => true, - 'is_final' => false, - 'is_static' => false, - 'has_body' => false, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testAbstractReturnMethod() - - - /** - * Test a basic interface method. - * - * @return void - */ - public function testInterfaceMethod() - { - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => '', - 'return_type_token' => false, - 'return_type_end_token' => false, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => false, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testInterfaceMethod() - - - /** - * Test a static arrow function. - * - * @return void - */ - public function testArrowFunction() - { - // Offsets are relative to the T_FN token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => 'int', - 'return_type_token' => 9, - 'return_type_end_token' => 9, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => true, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testArrowFunction() - - - /** - * Test a function with return type "static". - * - * @return void - */ - public function testReturnTypeStatic() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'private', - 'scope_specified' => true, - 'return_type' => 'static', - 'return_type_token' => 7, - 'return_type_end_token' => 7, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testReturnTypeStatic() - - - /** - * Test a function with return type "?static". - * - * @return void - */ - public function testReturnTypeNullableStatic() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => '?static', - 'return_type_token' => 8, - 'return_type_end_token' => 8, - 'nullable_return_type' => true, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testReturnTypeNullableStatic() - - - /** - * Test a function with return type "mixed". - * - * @return void - */ - public function testPHP8MixedTypeHint() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => 'mixed', - 'return_type_token' => 7, - 'return_type_end_token' => 7, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8MixedTypeHint() - - - /** - * Test a function with return type "mixed" and nullability. - * - * @return void - */ - public function testPHP8MixedTypeHintNullable() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => '?mixed', - 'return_type_token' => 8, - 'return_type_end_token' => 8, - 'nullable_return_type' => true, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8MixedTypeHintNullable() - - - /** - * Test a function with return type using the namespace operator. - * - * @return void - */ - public function testNamespaceOperatorTypeHint() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => '?namespace\Name', - 'return_type_token' => 9, - 'return_type_end_token' => 11, - 'nullable_return_type' => true, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testNamespaceOperatorTypeHint() - - - /** - * Verify recognition of PHP8 union type declaration. - * - * @return void - */ - public function testPHP8UnionTypesSimple() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => 'int|float', - 'return_type_token' => 9, - 'return_type_end_token' => 11, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8UnionTypesSimple() - - - /** - * Verify recognition of PHP8 union type declaration with two classes. - * - * @return void - */ - public function testPHP8UnionTypesTwoClasses() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => 'MyClassA|\Package\MyClassB', - 'return_type_token' => 6, - 'return_type_end_token' => 11, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8UnionTypesTwoClasses() - - - /** - * Verify recognition of PHP8 union type declaration with all base types. - * - * @return void - */ - public function testPHP8UnionTypesAllBaseTypes() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => 'array|bool|callable|int|float|null|Object|string', - 'return_type_token' => 8, - 'return_type_end_token' => 22, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8UnionTypesAllBaseTypes() - - - /** - * Verify recognition of PHP8 union type declaration with all pseudo types. - * - * Note: "Resource" is not a type, but seen as a class name. - * - * @return void - */ - public function testPHP8UnionTypesAllPseudoTypes() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => 'false|MIXED|self|parent|static|iterable|Resource|void', - 'return_type_token' => 9, - 'return_type_end_token' => 23, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8UnionTypesAllPseudoTypes() - - - /** - * Verify recognition of PHP8 union type declaration with (illegal) nullability. - * - * @return void - */ - public function testPHP8UnionTypesNullable() - { - // Offsets are relative to the T_CLOSURE token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => '?int|float', - 'return_type_token' => 12, - 'return_type_end_token' => 14, - 'nullable_return_type' => true, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8UnionTypesNullable() - - - /** - * Verify recognition of PHP8 type declaration with (illegal) single type null. - * - * @return void - */ - public function testPHP8PseudoTypeNull() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => 'null', - 'return_type_token' => 7, - 'return_type_end_token' => 7, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8PseudoTypeNull() - - - /** - * Verify recognition of PHP8 type declaration with (illegal) single type false. - * - * @return void - */ - public function testPHP8PseudoTypeFalse() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => 'false', - 'return_type_token' => 7, - 'return_type_end_token' => 7, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8PseudoTypeFalse() - - - /** - * Verify recognition of PHP8 type declaration with (illegal) type false combined with type bool. - * - * @return void - */ - public function testPHP8PseudoTypeFalseAndBool() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => 'bool|false', - 'return_type_token' => 7, - 'return_type_end_token' => 9, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8PseudoTypeFalseAndBool() - - - /** - * Verify recognition of PHP8 type declaration with (illegal) type object combined with a class name. - * - * @return void - */ - public function testPHP8ObjectAndClass() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => 'object|ClassName', - 'return_type_token' => 7, - 'return_type_end_token' => 9, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8ObjectAndClass() - - - /** - * Verify recognition of PHP8 type declaration with (illegal) type iterable combined with array/Traversable. - * - * @return void - */ - public function testPHP8PseudoTypeIterableAndArray() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => true, - 'return_type' => 'iterable|array|Traversable', - 'return_type_token' => 7, - 'return_type_end_token' => 11, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => false, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8PseudoTypeIterableAndArray() - - - /** - * Verify recognition of PHP8 type declaration with (illegal) duplicate types. - * - * @return void - */ - public function testPHP8DuplicateTypeInUnionWhitespaceAndComment() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => 'int|string|INT', - 'return_type_token' => 7, - 'return_type_end_token' => 17, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8DuplicateTypeInUnionWhitespaceAndComment() - - - /** - * Verify recognition of PHP8.1 type "never". - * - * @return void - */ - public function testPHP81NeverType() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => 'never', - 'return_type_token' => 7, - 'return_type_end_token' => 7, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP81NeverType() - - - /** - * Verify recognition of PHP8.1 type "never" with (illegal) nullability. - * - * @return void - */ - public function testPHP81NullableNeverType() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => '?never', - 'return_type_token' => 8, - 'return_type_end_token' => 8, - 'nullable_return_type' => true, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP81NullableNeverType() - - - /** - * Verify recognition of PHP8.1 intersection type declaration. - * - * @return void - */ - public function testPHP8IntersectionTypes() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => 'Foo&Bar', - 'return_type_token' => 7, - 'return_type_end_token' => 9, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP8IntersectionTypes() - - - /** - * Verify recognition of PHP8.1 intersection type declaration with more types. - * - * @return void - */ - public function testPHP81MoreIntersectionTypes() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => 'MyClassA&\Package\MyClassB&\Package\MyClassC', - 'return_type_token' => 7, - 'return_type_end_token' => 17, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP81MoreIntersectionTypes() - - - /** - * Verify recognition of PHP8.1 intersection type declaration in arrow function. - * - * @return void - */ - public function testPHP81IntersectionArrowFunction() - { - // Offsets are relative to the T_FN token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => 'MyClassA&\Package\MyClassB', - 'return_type_token' => 6, - 'return_type_end_token' => 11, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP81IntersectionArrowFunction() - - - /** - * Verify recognition of PHP8.1 intersection type declaration with illegal simple types. - * - * @return void - */ - public function testPHP81IllegalIntersectionTypes() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => 'string&int', - 'return_type_token' => 6, - 'return_type_end_token' => 8, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP81IllegalIntersectionTypes() - - - /** - * Verify recognition of PHP8.1 intersection type declaration with (illegal) nullability. - * - * @return void - */ - public function testPHP81NullableIntersectionTypes() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => '?Foo&Bar', - 'return_type_token' => 7, - 'return_type_end_token' => 9, - 'nullable_return_type' => true, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP81NullableIntersectionTypes() - - - /** - * Verify recognition of PHP 8.2 stand-alone `true` type. - * - * @return void - */ - public function testPHP82PseudoTypeTrue() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => '?true', - 'return_type_token' => 8, - 'return_type_end_token' => 8, - 'nullable_return_type' => true, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP82PseudoTypeTrue() - - - /** - * Verify recognition of PHP 8.2 type declaration with (illegal) type false combined with type true. - * - * @return void - */ - public function testPHP82PseudoTypeFalseAndTrue() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => 'true|false', - 'return_type_token' => 7, - 'return_type_end_token' => 9, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP82PseudoTypeFalseAndTrue() - - - /** - * Verify recognition of PHP 8.2 DNF return type declaration. - * - * @return void - */ - public function testPHP82DNFType() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => 'bool|(Foo&Bar)|string', - 'return_type_token' => 8, - 'return_type_end_token' => 16, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP82DNFType() - - - /** - * Verify recognition of PHP 8.2 DNF return type declaration on an abstract method. - * - * @return void - */ - public function testPHP82DNFTypeAbstractMethod() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'protected', - 'scope_specified' => true, - 'return_type' => 'float|(Foo&Bar)', - 'return_type_token' => 8, - 'return_type_end_token' => 14, - 'nullable_return_type' => false, - 'is_abstract' => true, - 'is_final' => false, - 'is_static' => false, - 'has_body' => false, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP82DNFTypeAbstractMethod() - - - /** - * Verify recognition of PHP 8.2 DNF return type declaration with illegal nullability. - * - * @return void - */ - public function testPHP82DNFTypeIllegalNullable() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => '?(A&\Pck\B)|bool', - 'return_type_token' => 8, - 'return_type_end_token' => 17, - 'nullable_return_type' => true, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP82DNFTypeIllegalNullable() - - - /** - * Verify recognition of PHP 8.2 DNF return type declaration on a closure. - * - * @return void - */ - public function testPHP82DNFTypeClosure() - { - // Offsets are relative to the T_CLOSURE token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => 'object|(namespace\Foo&Countable)', - 'return_type_token' => 6, - 'return_type_end_token' => 14, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP82DNFTypeClosure() - - - /** - * Verify recognition of PHP 8.2 DNF return type declaration on an arrow function. - * - * @return void - */ - public function testPHP82DNFTypeFn() - { - // Offsets are relative to the T_FN token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => 'null|(Partially\Qualified&Traversable)|void', - 'return_type_token' => 6, - 'return_type_end_token' => 16, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPHP82DNFTypeFn() - - - /** - * Test for incorrect tokenization of array return type declarations in PHPCS < 2.8.0. - * - * @link https://github.com/squizlabs/PHP_CodeSniffer/pull/1264 - * - * @return void - */ - public function testPhpcsIssue1264() - { - // Offsets are relative to the T_FUNCTION token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => 'array', - 'return_type_token' => 8, - 'return_type_end_token' => 8, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testPhpcsIssue1264() - - - /** - * Test handling of incorrect tokenization of array return type declarations for arrow functions - * in a very specific code sample in PHPCS < 3.5.4. - * - * @link https://github.com/squizlabs/PHP_CodeSniffer/issues/2773 - * - * @return void - */ - public function testArrowFunctionArrayReturnValue() - { - // Offsets are relative to the T_FN token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => 'array', - 'return_type_token' => 5, - 'return_type_end_token' => 5, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testArrowFunctionArrayReturnValue() - - - /** - * Test handling of an arrow function returning by reference. - * - * @return void - */ - public function testArrowFunctionReturnByRef() - { - // Offsets are relative to the T_FN token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => '?string', - 'return_type_token' => 12, - 'return_type_end_token' => 12, - 'nullable_return_type' => true, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testArrowFunctionReturnByRef() - - - /** - * Test handling of function declaration nested in a ternary, where the colon for the - * return type was incorrectly tokenized as T_INLINE_ELSE prior to PHPCS 3.5.7. - * - * @return void - */ - public function testFunctionDeclarationNestedInTernaryPHPCS2975() - { - // Offsets are relative to the T_FN token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => true, - 'return_type' => 'c', - 'return_type_token' => 7, - 'return_type_end_token' => 7, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testFunctionDeclarationNestedInTernaryPHPCS2975() - - - /** - * Test handling of closure declarations with a use variable import without a return type declaration. - * - * @return void - */ - public function testClosureWithUseNoReturnType() - { - // Offsets are relative to the T_CLOSURE token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => '', - 'return_type_token' => false, - 'return_type_end_token' => false, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testClosureWithUseNoReturnType() - - - /** - * Test handling of closure declarations with an illegal use variable for a property import (not allowed in PHP) - * without a return type declaration. - * - * @return void - */ - public function testClosureWithUseNoReturnTypeIllegalUseProp() - { - // Offsets are relative to the T_CLOSURE token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => '', - 'return_type_token' => false, - 'return_type_end_token' => false, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testClosureWithUseNoReturnTypeIllegalUseProp() - - - /** - * Test handling of closure declarations with a use variable import with a return type declaration. - * - * @return void - */ - public function testClosureWithUseWithReturnType() - { - // Offsets are relative to the T_CLOSURE token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => 'Type', - 'return_type_token' => 14, - 'return_type_end_token' => 14, - 'nullable_return_type' => false, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testClosureWithUseWithReturnType() - - - /** - * Test handling of closure declarations with a use variable import with a return type declaration. - * - * @return void - */ - public function testClosureWithUseMultiParamWithReturnType() - { - // Offsets are relative to the T_CLOSURE token. - $expected = [ - 'scope' => 'public', - 'scope_specified' => false, - 'return_type' => '?array', - 'return_type_token' => 32, - 'return_type_end_token' => 32, - 'nullable_return_type' => true, - 'is_abstract' => false, - 'is_final' => false, - 'is_static' => false, - 'has_body' => true, - ]; - - $this->getMethodPropertiesTestHelper('/* '.__FUNCTION__.' */', $expected); - - }//end testClosureWithUseMultiParamWithReturnType() - - - /** - * Test helper. - * - * @param string $commentString The comment which preceeds the test. - * @param array $expected The expected function output. - * - * @return void - */ - private function getMethodPropertiesTestHelper($commentString, $expected) - { - $function = $this->getTargetToken($commentString, [T_FUNCTION, T_CLOSURE, T_FN]); - $found = self::$phpcsFile->getMethodProperties($function); - - // Convert offsets to absolute positions in the token stream. - if (is_int($expected['return_type_token']) === true) { - $expected['return_type_token'] += $function; - } - - if (is_int($expected['return_type_end_token']) === true) { - $expected['return_type_end_token'] += $function; - } - - $this->assertSame($expected, $found); - - }//end getMethodPropertiesTestHelper() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/GetTokensAsStringTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/GetTokensAsStringTest.php deleted file mode 100644 index 7e797495..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/GetTokensAsStringTest.php +++ /dev/null @@ -1,334 +0,0 @@ - - * @copyright 2022-2024 PHPCSStandards Contributors - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Tests\Core\File; - -use PHP_CodeSniffer\Tests\Core\AbstractMethodUnitTest; - -/** - * Tests for the \PHP_CodeSniffer\Files\File:getTokensAsString method. - * - * @covers \PHP_CodeSniffer\Files\File::getTokensAsString - */ -final class GetTokensAsStringTest extends AbstractMethodUnitTest -{ - - - /** - * Test passing a non-existent token pointer. - * - * @return void - */ - public function testNonExistentToken() - { - $this->expectRunTimeException('The $start position for getTokensAsString() must exist in the token stack'); - - self::$phpcsFile->getTokensAsString(100000, 10); - - }//end testNonExistentToken() - - - /** - * Test passing a non integer `$start`, like the result of a failed $phpcsFile->findNext(). - * - * @return void - */ - public function testNonIntegerStart() - { - $this->expectRunTimeException('The $start position for getTokensAsString() must exist in the token stack'); - - self::$phpcsFile->getTokensAsString(false, 10); - - }//end testNonIntegerStart() - - - /** - * Test passing a non integer `$length`. - * - * @return void - */ - public function testNonIntegerLength() - { - $result = self::$phpcsFile->getTokensAsString(10, false); - $this->assertSame('', $result); - - $result = self::$phpcsFile->getTokensAsString(10, 1.5); - $this->assertSame('', $result); - - }//end testNonIntegerLength() - - - /** - * Test passing a zero or negative `$length`. - * - * @return void - */ - public function testLengthEqualToOrLessThanZero() - { - $result = self::$phpcsFile->getTokensAsString(10, -10); - $this->assertSame('', $result); - - $result = self::$phpcsFile->getTokensAsString(10, 0); - $this->assertSame('', $result); - - }//end testLengthEqualToOrLessThanZero() - - - /** - * Test passing a `$length` beyond the end of the file. - * - * @return void - */ - public function testLengthBeyondEndOfFile() - { - $semicolon = $this->getTargetToken('/* testEndOfFile */', T_SEMICOLON); - $result = self::$phpcsFile->getTokensAsString($semicolon, 20); - $this->assertSame( - '; -', - $result - ); - - }//end testLengthBeyondEndOfFile() - - - /** - * Test getting a token set as a string. - * - * @param string $testMarker The comment which prefaces the target token in the test file. - * @param int|string $startTokenType The type of token(s) to look for for the start of the string. - * @param int $length Token length to get. - * @param string $expected The expected function return value. - * - * @dataProvider dataGetTokensAsString - * - * @return void - */ - public function testGetTokensAsString($testMarker, $startTokenType, $length, $expected) - { - $start = $this->getTargetToken($testMarker, $startTokenType); - $result = self::$phpcsFile->getTokensAsString($start, $length); - $this->assertSame($expected, $result); - - }//end testGetTokensAsString() - - - /** - * Data provider. - * - * @see testGetTokensAsString() For the array format. - * - * @return array> - */ - public static function dataGetTokensAsString() - { - return [ - 'length-0' => [ - 'testMarker' => '/* testCalculation */', - 'startTokenType' => T_LNUMBER, - 'length' => 0, - 'expected' => '', - ], - 'length-1' => [ - 'testMarker' => '/* testCalculation */', - 'startTokenType' => T_LNUMBER, - 'length' => 1, - 'expected' => '1', - ], - 'length-2' => [ - 'testMarker' => '/* testCalculation */', - 'startTokenType' => T_LNUMBER, - 'length' => 2, - 'expected' => '1 ', - ], - 'length-3' => [ - 'testMarker' => '/* testCalculation */', - 'startTokenType' => T_LNUMBER, - 'length' => 3, - 'expected' => '1 +', - ], - 'length-4' => [ - 'testMarker' => '/* testCalculation */', - 'startTokenType' => T_LNUMBER, - 'length' => 4, - 'expected' => '1 + ', - ], - 'length-5' => [ - 'testMarker' => '/* testCalculation */', - 'startTokenType' => T_LNUMBER, - 'length' => 5, - 'expected' => '1 + 2', - ], - 'length-6' => [ - 'testMarker' => '/* testCalculation */', - 'startTokenType' => T_LNUMBER, - 'length' => 6, - 'expected' => '1 + 2 ', - ], - 'length-7' => [ - 'testMarker' => '/* testCalculation */', - 'startTokenType' => T_LNUMBER, - 'length' => 7, - 'expected' => '1 + 2 +', - ], - 'length-8' => [ - 'testMarker' => '/* testCalculation */', - 'startTokenType' => T_LNUMBER, - 'length' => 8, - 'expected' => '1 + 2 + -', - ], - 'length-9' => [ - 'testMarker' => '/* testCalculation */', - 'startTokenType' => T_LNUMBER, - 'length' => 9, - 'expected' => '1 + 2 + - ', - ], - 'length-10' => [ - 'testMarker' => '/* testCalculation */', - 'startTokenType' => T_LNUMBER, - 'length' => 10, - 'expected' => '1 + 2 + - // Comment. -', - ], - 'length-11' => [ - 'testMarker' => '/* testCalculation */', - 'startTokenType' => T_LNUMBER, - 'length' => 11, - 'expected' => '1 + 2 + - // Comment. - ', - ], - 'length-12' => [ - 'testMarker' => '/* testCalculation */', - 'startTokenType' => T_LNUMBER, - 'length' => 12, - 'expected' => '1 + 2 + - // Comment. - 3', - ], - 'length-13' => [ - 'testMarker' => '/* testCalculation */', - 'startTokenType' => T_LNUMBER, - 'length' => 13, - 'expected' => '1 + 2 + - // Comment. - 3 ', - ], - 'length-14' => [ - 'testMarker' => '/* testCalculation */', - 'startTokenType' => T_LNUMBER, - 'length' => 14, - 'expected' => '1 + 2 + - // Comment. - 3 +', - ], - 'length-34' => [ - 'testMarker' => '/* testCalculation */', - 'startTokenType' => T_LNUMBER, - 'length' => 34, - 'expected' => '1 + 2 + - // Comment. - 3 + 4 - + 5 + 6 + 7 > 20;', - ], - 'namespace' => [ - 'testMarker' => '/* testNamespace */', - 'startTokenType' => T_NAMESPACE, - 'length' => 8, - 'expected' => 'namespace Foo\Bar\Baz;', - ], - 'use-with-comments' => [ - 'testMarker' => '/* testUseWithComments */', - 'startTokenType' => T_USE, - 'length' => 17, - 'expected' => 'use Foo /*comment*/ \ Bar - // phpcs:ignore Stnd.Cat.Sniff -- For reasons. - \ Bah;', - ], - 'echo-with-tabs' => [ - 'testMarker' => '/* testEchoWithTabs */', - 'startTokenType' => T_ECHO, - 'length' => 13, - 'expected' => 'echo \'foo\', - \'bar\' , - \'baz\';', - ], - 'end-of-file' => [ - 'testMarker' => '/* testEndOfFile */', - 'startTokenType' => T_ECHO, - 'length' => 4, - 'expected' => 'echo $foo;', - ], - ]; - - }//end dataGetTokensAsString() - - - /** - * Test getting a token set as a string with the original, non tab-replaced content. - * - * @param string $testMarker The comment which prefaces the target token in the test file. - * @param int|string $startTokenType The type of token(s) to look for for the start of the string. - * @param int $length Token length to get. - * @param string $expected The expected function return value. - * - * @dataProvider dataGetOrigContent - * - * @return void - */ - public function testGetOrigContent($testMarker, $startTokenType, $length, $expected) - { - $start = $this->getTargetToken($testMarker, $startTokenType); - $result = self::$phpcsFile->getTokensAsString($start, $length, true); - $this->assertSame($expected, $result); - - }//end testGetOrigContent() - - - /** - * Data provider. - * - * @see testGetOrigContent() For the array format. - * - * @return array> - */ - public static function dataGetOrigContent() - { - return [ - 'use-with-comments' => [ - 'testMarker' => '/* testUseWithComments */', - 'startTokenType' => T_USE, - 'length' => 17, - 'expected' => 'use Foo /*comment*/ \ Bar - // phpcs:ignore Stnd.Cat.Sniff -- For reasons. - \ Bah;', - ], - 'echo-with-tabs' => [ - 'testMarker' => '/* testEchoWithTabs */', - 'startTokenType' => T_ECHO, - 'length' => 13, - 'expected' => 'echo \'foo\', - \'bar\' , - \'baz\';', - ], - 'end-of-file' => [ - 'testMarker' => '/* testEndOfFile */', - 'startTokenType' => T_ECHO, - 'length' => 4, - 'expected' => 'echo $foo;', - ], - ]; - - }//end dataGetOrigContent() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/IsReferenceTest.inc b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/IsReferenceTest.inc deleted file mode 100644 index 05af8390..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/IsReferenceTest.inc +++ /dev/null @@ -1,216 +0,0 @@ - $first, 'b' => $something & $somethingElse ]; - -/* testBitwiseAndF */ -$a = array( 'a' => $first, 'b' => $something & \MyClass::$somethingElse ); - -/* testBitwiseAndG */ -$a = $something & $somethingElse; - -/* testBitwiseAndH */ -function myFunction($a = 10 & 20) {} - -/* testBitwiseAndI */ -$closure = function ($a = MY_CONSTANT & parent::OTHER_CONSTANT) {}; - -/* testFunctionReturnByReference */ -function &myFunction() {} - -/* testFunctionPassByReferenceA */ -function myFunction( &$a ) {} - -/* testFunctionPassByReferenceB */ -function myFunction( $a, &$b ) {} - -/* testFunctionPassByReferenceC */ -$closure = function ( &$a ) {}; - -/* testFunctionPassByReferenceD */ -$closure = function ( $a, &$b ) {}; - -/* testFunctionPassByReferenceE */ -function myFunction(array &$one) {} - -/* testFunctionPassByReferenceF */ -$closure = function (\MyClass &$one) {}; - -/* testFunctionPassByReferenceG */ -$closure = function ($param, &...$moreParams) {}; - -/* testForeachValueByReference */ -foreach( $array as $key => &$value ) {} - -/* testForeachKeyByReference */ -foreach( $array as &$key => $value ) {} - -/* testArrayValueByReferenceA */ -$a = [ 'a' => &$something ]; - -/* testArrayValueByReferenceB */ -$a = [ 'a' => $something, 'b' => &$somethingElse ]; - -/* testArrayValueByReferenceC */ -$a = [ &$something ]; - -/* testArrayValueByReferenceD */ -$a = [ $something, &$somethingElse ]; - -/* testArrayValueByReferenceE */ -$a = array( 'a' => &$something ); - -/* testArrayValueByReferenceF */ -$a = array( 'a' => $something, 'b' => &$somethingElse ); - -/* testArrayValueByReferenceG */ -$a = array( &$something ); - -/* testArrayValueByReferenceH */ -$a = array( $something, &$somethingElse ); - -/* testAssignByReferenceA */ -$b = &$something; - -/* testAssignByReferenceB */ -$b =& $something; - -/* testAssignByReferenceC */ -$b .= &$something; - -/* testAssignByReferenceD */ -$myValue = &$obj->getValue(); - -/* testAssignByReferenceE */ -$collection = &collector(); - -/* testAssignByReferenceF */ -$collection ??= &collector(); - -/* testShortListAssignByReferenceNoKeyA */ -[ - &$a, - /* testShortListAssignByReferenceNoKeyB */ - &$b, - /* testNestedShortListAssignByReferenceNoKey */ - [$c, &$d] -] = $array; - -/* testLongListAssignByReferenceNoKeyA */ -list($a, &$b, list(/* testLongListAssignByReferenceNoKeyB */ &$c, /* testLongListAssignByReferenceNoKeyC */ &$d)) = $array; - -[ - /* testNestedShortListAssignByReferenceWithKeyA */ - 'a' => [&$a, $b], - /* testNestedShortListAssignByReferenceWithKeyB */ - 'b' => [$c, &$d] -] = $array; - - -/* testLongListAssignByReferenceWithKeyA */ -list(get_key()[1] => &$e) = [1, 2, 3]; - -/* testPassByReferenceA */ -functionCall(&$something, $somethingElse); - -/* testPassByReferenceB */ -functionCall($something, &$somethingElse); - -/* testPassByReferenceC */ -functionCall($something, &$this->somethingElse); - -/* testPassByReferenceD */ -functionCall($something, &self::$somethingElse); - -/* testPassByReferenceE */ -functionCall($something, &parent::$somethingElse); - -/* testPassByReferenceF */ -functionCall($something, &static::$somethingElse); - -/* testPassByReferenceG */ -functionCall($something, &SomeClass::$somethingElse); - -/* testPassByReferenceH */ -functionCall(&\SomeClass::$somethingElse); - -/* testPassByReferenceI */ -functionCall($something, &\SomeNS\SomeClass::$somethingElse); - -/* testPassByReferenceJ */ -functionCall($something, &namespace\SomeClass::$somethingElse); - -/* testPassByReferencePartiallyQualifiedName */ -functionCall($something, &Sub\Level\SomeClass::$somethingElse); - -/* testNewByReferenceA */ -$foobar2 = &new Foobar(); - -/* testNewByReferenceB */ -functionCall( $something , &new Foobar() ); - -/* testUseByReference */ -$closure = function() use (&$var){}; - -/* testUseByReferenceWithCommentFirstParam */ -$closure = function() use /*comment*/ (&$value){}; - -/* testUseByReferenceWithCommentSecondParam */ -$closure = function() use /*comment*/ ($varA, &$varB){}; - -/* testArrowFunctionReturnByReference */ -fn&($x) => $x; - -$closure = function ( - /* testBitwiseAndExactParameterA */ - $a = MY_CONSTANT & parent::OTHER_CONSTANT, - /* testPassByReferenceExactParameterB */ - &$b, - /* testPassByReferenceExactParameterC */ - &...$c, - /* testBitwiseAndExactParameterD */ - $d = E_NOTICE & E_STRICT, -) {}; - -// Issue PHPCS#3049. -/* testArrowFunctionPassByReferenceA */ -$fn = fn(array &$one) => 1; - -/* testArrowFunctionPassByReferenceB */ -$fn = fn($param, &...$moreParams) => 1; - -/* testClosureReturnByReference */ -$closure = function &($param) use ($value) {}; - -/* testBitwiseAndArrowFunctionInDefault */ -$fn = fn( $one = E_NOTICE & E_STRICT) => 1; - -/* testIntersectionIsNotReference */ -function intersect(Foo&Bar $param) {} - -/* testDNFTypeIsNotReference */ -$fn = fn((Foo&\Bar)|null /* testParamPassByReference */ &$param) => $param; - -/* testTokenizerIssue1284PHPCSlt280A */ -if ($foo) {} -[&$a, /* testTokenizerIssue1284PHPCSlt280B */ &$b] = $c; - -/* testTokenizerIssue1284PHPCSlt280C */ -if ($foo) {} -[&$a, $b]; diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/IsReferenceTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/IsReferenceTest.php deleted file mode 100644 index 5b977de7..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/File/IsReferenceTest.php +++ /dev/null @@ -1,396 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Tests\Core\File; - -use PHP_CodeSniffer\Tests\Core\AbstractMethodUnitTest; - -/** - * Tests for the \PHP_CodeSniffer\Files\File::isReference method. - * - * @covers \PHP_CodeSniffer\Files\File::isReference - */ -final class IsReferenceTest extends AbstractMethodUnitTest -{ - - - /** - * Test that false is returned when a non-"bitwise and" token is passed. - * - * @param string $testMarker Comment which precedes the test case. - * @param array $targetTokens Type of tokens to look for. - * - * @dataProvider dataNotBitwiseAndToken - * - * @return void - */ - public function testNotBitwiseAndToken($testMarker, $targetTokens) - { - $targetTokens[] = T_BITWISE_AND; - - $target = $this->getTargetToken($testMarker, $targetTokens); - $this->assertFalse(self::$phpcsFile->isReference($target)); - - }//end testNotBitwiseAndToken() - - - /** - * Data provider. - * - * @see testNotBitwiseAndToken() - * - * @return array>> - */ - public static function dataNotBitwiseAndToken() - { - return [ - 'Not ampersand token at all' => [ - 'testMarker' => '/* testBitwiseAndA */', - 'targetTokens' => [T_STRING], - ], - 'ampersand in intersection type' => [ - 'testMarker' => '/* testIntersectionIsNotReference */', - 'targetTokens' => [T_TYPE_INTERSECTION], - ], - 'ampersand in DNF type' => [ - 'testMarker' => '/* testDNFTypeIsNotReference */', - 'targetTokens' => [T_TYPE_INTERSECTION], - ], - ]; - - }//end dataNotBitwiseAndToken() - - - /** - * Test correctly identifying whether a "bitwise and" token is a reference or not. - * - * @param string $testMarker Comment which precedes the test case. - * @param bool $expected Expected function output. - * - * @dataProvider dataIsReference - * - * @return void - */ - public function testIsReference($testMarker, $expected) - { - $bitwiseAnd = $this->getTargetToken($testMarker, T_BITWISE_AND); - $result = self::$phpcsFile->isReference($bitwiseAnd); - $this->assertSame($expected, $result); - - }//end testIsReference() - - - /** - * Data provider for the IsReference test. - * - * @see testIsReference() - * - * @return array> - */ - public static function dataIsReference() - { - return [ - 'issue-1971-list-first-in-file' => [ - 'testMarker' => '/* testTokenizerIssue1971PHPCSlt330gt271A */', - 'expected' => true, - ], - 'issue-1971-list-first-in-file-nested' => [ - 'testMarker' => '/* testTokenizerIssue1971PHPCSlt330gt271B */', - 'expected' => true, - ], - 'bitwise and: param in function call' => [ - 'testMarker' => '/* testBitwiseAndA */', - 'expected' => false, - ], - 'bitwise and: in unkeyed short array, first value' => [ - 'testMarker' => '/* testBitwiseAndB */', - 'expected' => false, - ], - 'bitwise and: in unkeyed short array, last value' => [ - 'testMarker' => '/* testBitwiseAndC */', - 'expected' => false, - ], - 'bitwise and: in unkeyed long array, last value' => [ - 'testMarker' => '/* testBitwiseAndD */', - 'expected' => false, - ], - 'bitwise and: in keyed short array, last value' => [ - 'testMarker' => '/* testBitwiseAndE */', - 'expected' => false, - ], - 'bitwise and: in keyed long array, last value' => [ - 'testMarker' => '/* testBitwiseAndF */', - 'expected' => false, - ], - 'bitwise and: in assignment' => [ - 'testMarker' => '/* testBitwiseAndG */', - 'expected' => false, - ], - 'bitwise and: in param default value in function declaration' => [ - 'testMarker' => '/* testBitwiseAndH */', - 'expected' => false, - ], - 'bitwise and: in param default value in closure declaration' => [ - 'testMarker' => '/* testBitwiseAndI */', - 'expected' => false, - ], - 'reference: function declared to return by reference' => [ - 'testMarker' => '/* testFunctionReturnByReference */', - 'expected' => true, - ], - 'reference: only param in function declaration, pass by reference' => [ - 'testMarker' => '/* testFunctionPassByReferenceA */', - 'expected' => true, - ], - 'reference: last param in function declaration, pass by reference' => [ - 'testMarker' => '/* testFunctionPassByReferenceB */', - 'expected' => true, - ], - 'reference: only param in closure declaration, pass by reference' => [ - 'testMarker' => '/* testFunctionPassByReferenceC */', - 'expected' => true, - ], - 'reference: last param in closure declaration, pass by reference' => [ - 'testMarker' => '/* testFunctionPassByReferenceD */', - 'expected' => true, - ], - 'reference: typed param in function declaration, pass by reference' => [ - 'testMarker' => '/* testFunctionPassByReferenceE */', - 'expected' => true, - ], - 'reference: typed param in closure declaration, pass by reference' => [ - 'testMarker' => '/* testFunctionPassByReferenceF */', - 'expected' => true, - ], - 'reference: variadic param in function declaration, pass by reference' => [ - 'testMarker' => '/* testFunctionPassByReferenceG */', - 'expected' => true, - ], - 'reference: foreach value' => [ - 'testMarker' => '/* testForeachValueByReference */', - 'expected' => true, - ], - 'reference: foreach key' => [ - 'testMarker' => '/* testForeachKeyByReference */', - 'expected' => true, - ], - 'reference: keyed short array, first value, value by reference' => [ - 'testMarker' => '/* testArrayValueByReferenceA */', - 'expected' => true, - ], - 'reference: keyed short array, last value, value by reference' => [ - 'testMarker' => '/* testArrayValueByReferenceB */', - 'expected' => true, - ], - 'reference: unkeyed short array, only value, value by reference' => [ - 'testMarker' => '/* testArrayValueByReferenceC */', - 'expected' => true, - ], - 'reference: unkeyed short array, last value, value by reference' => [ - 'testMarker' => '/* testArrayValueByReferenceD */', - 'expected' => true, - ], - 'reference: keyed long array, first value, value by reference' => [ - 'testMarker' => '/* testArrayValueByReferenceE */', - 'expected' => true, - ], - 'reference: keyed long array, last value, value by reference' => [ - 'testMarker' => '/* testArrayValueByReferenceF */', - 'expected' => true, - ], - 'reference: unkeyed long array, only value, value by reference' => [ - 'testMarker' => '/* testArrayValueByReferenceG */', - 'expected' => true, - ], - 'reference: unkeyed long array, last value, value by reference' => [ - 'testMarker' => '/* testArrayValueByReferenceH */', - 'expected' => true, - ], - 'reference: variable, assign by reference' => [ - 'testMarker' => '/* testAssignByReferenceA */', - 'expected' => true, - ], - 'reference: variable, assign by reference, spacing variation' => [ - 'testMarker' => '/* testAssignByReferenceB */', - 'expected' => true, - ], - 'reference: variable, assign by reference, concat assign' => [ - 'testMarker' => '/* testAssignByReferenceC */', - 'expected' => true, - ], - 'reference: property, assign by reference' => [ - 'testMarker' => '/* testAssignByReferenceD */', - 'expected' => true, - ], - 'reference: function return value, assign by reference' => [ - 'testMarker' => '/* testAssignByReferenceE */', - 'expected' => true, - ], - 'reference: function return value, assign by reference, null coalesce assign' => [ - 'testMarker' => '/* testAssignByReferenceF */', - 'expected' => true, - ], - 'reference: unkeyed short list, first var, assign by reference' => [ - 'testMarker' => '/* testShortListAssignByReferenceNoKeyA */', - 'expected' => true, - ], - 'reference: unkeyed short list, second var, assign by reference' => [ - 'testMarker' => '/* testShortListAssignByReferenceNoKeyB */', - 'expected' => true, - ], - 'reference: unkeyed short list, nested var, assign by reference' => [ - 'testMarker' => '/* testNestedShortListAssignByReferenceNoKey */', - 'expected' => true, - ], - 'reference: unkeyed long list, second var, assign by reference' => [ - 'testMarker' => '/* testLongListAssignByReferenceNoKeyA */', - 'expected' => true, - ], - 'reference: unkeyed long list, first nested var, assign by reference' => [ - 'testMarker' => '/* testLongListAssignByReferenceNoKeyB */', - 'expected' => true, - ], - 'reference: unkeyed long list, last nested var, assign by reference' => [ - 'testMarker' => '/* testLongListAssignByReferenceNoKeyC */', - 'expected' => true, - ], - 'reference: keyed short list, first nested var, assign by reference' => [ - 'testMarker' => '/* testNestedShortListAssignByReferenceWithKeyA */', - 'expected' => true, - ], - 'reference: keyed short list, last nested var, assign by reference' => [ - 'testMarker' => '/* testNestedShortListAssignByReferenceWithKeyB */', - 'expected' => true, - ], - 'reference: keyed long list, only var, assign by reference' => [ - 'testMarker' => '/* testLongListAssignByReferenceWithKeyA */', - 'expected' => true, - ], - 'reference: first param in function call, pass by reference' => [ - 'testMarker' => '/* testPassByReferenceA */', - 'expected' => true, - ], - 'reference: last param in function call, pass by reference' => [ - 'testMarker' => '/* testPassByReferenceB */', - 'expected' => true, - ], - 'reference: property in function call, pass by reference' => [ - 'testMarker' => '/* testPassByReferenceC */', - 'expected' => true, - ], - 'reference: hierarchical self property in function call, pass by reference' => [ - 'testMarker' => '/* testPassByReferenceD */', - 'expected' => true, - ], - 'reference: hierarchical parent property in function call, pass by reference' => [ - 'testMarker' => '/* testPassByReferenceE */', - 'expected' => true, - ], - 'reference: hierarchical static property in function call, pass by reference' => [ - 'testMarker' => '/* testPassByReferenceF */', - 'expected' => true, - ], - 'reference: static property in function call, pass by reference' => [ - 'testMarker' => '/* testPassByReferenceG */', - 'expected' => true, - ], - 'reference: static property in function call, first with FQN, pass by reference' => [ - 'testMarker' => '/* testPassByReferenceH */', - 'expected' => true, - ], - 'reference: static property in function call, last with FQN, pass by reference' => [ - 'testMarker' => '/* testPassByReferenceI */', - 'expected' => true, - ], - 'reference: static property in function call, last with namespace relative name, pass by reference' => [ - 'testMarker' => '/* testPassByReferenceJ */', - 'expected' => true, - ], - 'reference: static property in function call, last with PQN, pass by reference' => [ - 'testMarker' => '/* testPassByReferencePartiallyQualifiedName */', - 'expected' => true, - ], - 'reference: new by reference' => [ - 'testMarker' => '/* testNewByReferenceA */', - 'expected' => true, - ], - 'reference: new by reference as function call param' => [ - 'testMarker' => '/* testNewByReferenceB */', - 'expected' => true, - ], - 'reference: closure use by reference' => [ - 'testMarker' => '/* testUseByReference */', - 'expected' => true, - ], - 'reference: closure use by reference, first param, with comment' => [ - 'testMarker' => '/* testUseByReferenceWithCommentFirstParam */', - 'expected' => true, - ], - 'reference: closure use by reference, last param, with comment' => [ - 'testMarker' => '/* testUseByReferenceWithCommentSecondParam */', - 'expected' => true, - ], - 'reference: arrow fn declared to return by reference' => [ - 'testMarker' => '/* testArrowFunctionReturnByReference */', - 'expected' => true, - ], - 'bitwise and: first param default value in closure declaration' => [ - 'testMarker' => '/* testBitwiseAndExactParameterA */', - 'expected' => false, - ], - 'reference: param in closure declaration, pass by reference' => [ - 'testMarker' => '/* testPassByReferenceExactParameterB */', - 'expected' => true, - ], - 'reference: variadic param in closure declaration, pass by reference' => [ - 'testMarker' => '/* testPassByReferenceExactParameterC */', - 'expected' => true, - ], - 'bitwise and: last param default value in closure declaration' => [ - 'testMarker' => '/* testBitwiseAndExactParameterD */', - 'expected' => false, - ], - 'reference: typed param in arrow fn declaration, pass by reference' => [ - 'testMarker' => '/* testArrowFunctionPassByReferenceA */', - 'expected' => true, - ], - 'reference: variadic param in arrow fn declaration, pass by reference' => [ - 'testMarker' => '/* testArrowFunctionPassByReferenceB */', - 'expected' => true, - ], - 'reference: closure declared to return by reference' => [ - 'testMarker' => '/* testClosureReturnByReference */', - 'expected' => true, - ], - 'bitwise and: param default value in arrow fn declaration' => [ - 'testMarker' => '/* testBitwiseAndArrowFunctionInDefault */', - 'expected' => false, - ], - 'reference: param pass by ref in arrow function' => [ - 'testMarker' => '/* testParamPassByReference */', - 'expected' => true, - ], - 'issue-1284-short-list-directly-after-close-curly-control-structure' => [ - 'testMarker' => '/* testTokenizerIssue1284PHPCSlt280A */', - 'expected' => true, - ], - 'issue-1284-short-list-directly-after-close-curly-control-structure-second-item' => [ - 'testMarker' => '/* testTokenizerIssue1284PHPCSlt280B */', - 'expected' => true, - ], - 'issue-1284-short-array-directly-after-close-curly-control-structure' => [ - 'testMarker' => '/* testTokenizerIssue1284PHPCSlt280C */', - 'expected' => true, - ], - ]; - - }//end dataIsReference() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Filters/AbstractFilterTestCase.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Filters/AbstractFilterTestCase.php deleted file mode 100644 index 4277f8c6..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Filters/AbstractFilterTestCase.php +++ /dev/null @@ -1,250 +0,0 @@ - - * @copyright 2023 PHPCSStandards Contributors - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Tests\Core\Filters; - -use PHP_CodeSniffer\Filters\Filter; -use PHP_CodeSniffer\Ruleset; -use PHP_CodeSniffer\Tests\ConfigDouble; -use PHPUnit\Framework\TestCase; -use RecursiveIteratorIterator; - -/** - * Base functionality and utilities for testing Filter classes. - */ -abstract class AbstractFilterTestCase extends TestCase -{ - - /** - * The Config object. - * - * @var \PHP_CodeSniffer\Config - */ - protected static $config; - - /** - * The Ruleset object. - * - * @var \PHP_CodeSniffer\Ruleset - */ - protected static $ruleset; - - - /** - * Initialize the config and ruleset objects. - * - * @beforeClass - * - * @return void - */ - public static function initializeConfigAndRuleset() - { - self::$config = new ConfigDouble(['--extensions=php,inc/php,js,css']); - self::$ruleset = new Ruleset(self::$config); - - }//end initializeConfigAndRuleset() - - - /** - * Clean up after finished test by resetting all static properties on the Config class to their default values. - * - * Note: This is a PHPUnit cross-version compatible {@see \PHPUnit\Framework\TestCase::tearDownAfterClass()} - * method. - * - * @afterClass - * - * @return void - */ - public static function reset() - { - // Explicitly trigger __destruct() on the ConfigDouble to reset the Config statics. - // The explicit method call prevents potential stray test-local references to the $config object - // preventing the destructor from running the clean up (which without stray references would be - // automagically triggered when `self::$phpcsFile` is reset, but we can't definitively rely on that). - if (isset(self::$config) === true) { - self::$config->__destruct(); - } - - }//end reset() - - - /** - * Helper method to retrieve a mock object for a Filter class. - * - * The `setMethods()` method was silently deprecated in PHPUnit 9 and removed in PHPUnit 10. - * - * Note: direct access to the `getMockBuilder()` method is soft deprecated as of PHPUnit 10, - * and expected to be hard deprecated in PHPUnit 11 and removed in PHPUnit 12. - * Dealing with that is something for a later iteration of the test suite. - * - * @param string $className Fully qualified name of the class under test. - * @param array $constructorArgs Optional. Array of parameters to pass to the class constructor. - * @param array|null $methodsToMock Optional. The methods to mock in the class under test. - * Needed for PHPUnit cross-version support as PHPUnit 4.x does - * not have a `setMethodsExcept()` method yet. - * If not passed, no methods will be replaced. - * - * @return \PHPUnit\Framework\MockObject\MockObject - */ - protected function getMockedClass($className, array $constructorArgs=[], $methodsToMock=null) - { - $mockedObj = $this->getMockBuilder($className); - - if (method_exists($mockedObj, 'onlyMethods') === true) { - // PHPUnit 8+. - if (is_array($methodsToMock) === true) { - return $mockedObj - ->setConstructorArgs($constructorArgs) - ->onlyMethods($methodsToMock) - ->getMock(); - } - - return $mockedObj->getMock() - ->setConstructorArgs($constructorArgs); - } - - // PHPUnit < 8. - return $mockedObj - ->setConstructorArgs($constructorArgs) - ->setMethods($methodsToMock) - ->getMock(); - - }//end getMockedClass() - - - /** - * Retrieve an array of files which were accepted by a filter. - * - * @param \PHP_CodeSniffer\Filters\Filter $filter The Filter object under test. - * - * @return array - */ - protected function getFilteredResultsAsArray(Filter $filter) - { - $iterator = new RecursiveIteratorIterator($filter); - $files = []; - foreach ($iterator as $file) { - $files[] = $file; - } - - return $files; - - }//end getFilteredResultsAsArray() - - - /** - * Retrieve the basedir to use for tests using the `getFakeFileList()` method. - * - * @return string - */ - protected static function getBaseDir() - { - return dirname(dirname(dirname(__DIR__))); - - }//end getBaseDir() - - - /** - * Retrieve a file list containing a range of paths for testing purposes. - * - * This list **must** contain files which exist in this project (well, except for some which don't exist - * purely for testing purposes), as `realpath()` is used in the logic under test and `realpath()` will - * return `false` for any non-existent files, which will automatically filter them out before - * we get to the code under test. - * - * Note this list does not include `.` and `..` as \PHP_CodeSniffer\Files\FileList uses `SKIP_DOTS`. - * - * @return array - */ - protected static function getFakeFileList() - { - $basedir = self::getBaseDir(); - return [ - $basedir.'/.gitignore', - $basedir.'/.yamllint.yml', - $basedir.'/phpcs.xml', - $basedir.'/phpcs.xml.dist', - $basedir.'/autoload.php', - $basedir.'/bin', - $basedir.'/bin/phpcs', - $basedir.'/bin/phpcs.bat', - $basedir.'/scripts', - $basedir.'/scripts/build-phar.php', - $basedir.'/src', - $basedir.'/src/WillNotExist.php', - $basedir.'/src/WillNotExist.bak', - $basedir.'/src/WillNotExist.orig', - $basedir.'/src/Ruleset.php', - $basedir.'/src/Generators', - $basedir.'/src/Generators/Markdown.php', - $basedir.'/src/Standards', - $basedir.'/src/Standards/Generic', - $basedir.'/src/Standards/Generic/Docs', - $basedir.'/src/Standards/Generic/Docs/Classes', - $basedir.'/src/Standards/Generic/Docs/Classes/DuplicateClassNameStandard.xml', - $basedir.'/src/Standards/Generic/Sniffs', - $basedir.'/src/Standards/Generic/Sniffs/Classes', - $basedir.'/src/Standards/Generic/Sniffs/Classes/DuplicateClassNameSniff.php', - $basedir.'/src/Standards/Generic/Tests', - $basedir.'/src/Standards/Generic/Tests/Classes', - $basedir.'/src/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.1.inc', - // Will rarely exist when running the tests. - $basedir.'/src/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.1.inc.bak', - $basedir.'/src/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.2.inc', - $basedir.'/src/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.php', - $basedir.'/src/Standards/Squiz', - $basedir.'/src/Standards/Squiz/Docs', - $basedir.'/src/Standards/Squiz/Docs/WhiteSpace', - $basedir.'/src/Standards/Squiz/Docs/WhiteSpace/SemicolonSpacingStandard.xml', - $basedir.'/src/Standards/Squiz/Sniffs', - $basedir.'/src/Standards/Squiz/Sniffs/WhiteSpace', - $basedir.'/src/Standards/Squiz/Sniffs/WhiteSpace/OperatorSpacingSniff.php', - $basedir.'/src/Standards/Squiz/Tests', - $basedir.'/src/Standards/Squiz/Tests/WhiteSpace', - $basedir.'/src/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.1.inc', - $basedir.'/src/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.1.inc.fixed', - $basedir.'/src/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.js', - $basedir.'/src/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.js.fixed', - $basedir.'/src/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.php', - ]; - - }//end getFakeFileList() - - - /** - * Translate Linux paths to Windows paths, when necessary. - * - * These type of tests should be able to run and pass on both *nix as well as Windows - * based dev systems. This method is a helper to allow for this. - * - * @param array $paths A single or multi-dimensional array containing - * file paths. - * - * @return array - */ - protected static function mapPathsToRuntimeOs(array $paths) - { - if (DIRECTORY_SEPARATOR !== '\\') { - return $paths; - } - - foreach ($paths as $key => $value) { - if (is_string($value) === true) { - $paths[$key] = strtr($value, '/', '\\\\'); - } else if (is_array($value) === true) { - $paths[$key] = self::mapPathsToRuntimeOs($value); - } - } - - return $paths; - - }//end mapPathsToRuntimeOs() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Filters/GitModifiedTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Filters/GitModifiedTest.php deleted file mode 100644 index 2fe89409..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Filters/GitModifiedTest.php +++ /dev/null @@ -1,268 +0,0 @@ - - * @copyright 2023 PHPCSStandards Contributors - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Tests\Core\Filters; - -use PHP_CodeSniffer\Filters\GitModified; -use PHP_CodeSniffer\Tests\Core\Filters\AbstractFilterTestCase; -use RecursiveArrayIterator; -use ReflectionMethod; - -/** - * Tests for the \PHP_CodeSniffer\Filters\GitModified class. - * - * @covers \PHP_CodeSniffer\Filters\GitModified - */ -final class GitModifiedTest extends AbstractFilterTestCase -{ - - - /** - * Test filtering a file list for excluded paths. - * - * @return void - */ - public function testFileNamePassesAsBasePathWillTranslateToDirname() - { - $rootFile = self::getBaseDir().'/autoload.php'; - - $fakeDI = new RecursiveArrayIterator(self::getFakeFileList()); - $constructorArgs = [ - $fakeDI, - $rootFile, - self::$config, - self::$ruleset, - ]; - $mockObj = $this->getMockedClass('PHP_CodeSniffer\Filters\GitModified', $constructorArgs, ['exec']); - - $mockObj->expects($this->once()) - ->method('exec') - ->willReturn(['autoload.php']); - - $this->assertEquals([$rootFile], $this->getFilteredResultsAsArray($mockObj)); - - }//end testFileNamePassesAsBasePathWillTranslateToDirname() - - - /** - * Test filtering a file list for excluded paths. - * - * @param array $inputPaths List of file paths to be filtered. - * @param array $outputGitModified Simulated "git modified" output. - * @param array $expectedOutput Expected filtering result. - * - * @dataProvider dataAcceptOnlyGitModified - * - * @return void - */ - public function testAcceptOnlyGitModified($inputPaths, $outputGitModified, $expectedOutput) - { - $fakeDI = new RecursiveArrayIterator($inputPaths); - $constructorArgs = [ - $fakeDI, - self::getBaseDir(), - self::$config, - self::$ruleset, - ]; - $mockObj = $this->getMockedClass('PHP_CodeSniffer\Filters\GitModified', $constructorArgs, ['exec']); - - $mockObj->expects($this->once()) - ->method('exec') - ->willReturn($outputGitModified); - - $this->assertEquals($expectedOutput, $this->getFilteredResultsAsArray($mockObj)); - - }//end testAcceptOnlyGitModified() - - - /** - * Data provider. - * - * @see testAcceptOnlyGitModified - * - * @return array>> - */ - public static function dataAcceptOnlyGitModified() - { - $basedir = self::getBaseDir(); - $fakeFileList = self::getFakeFileList(); - - $testCases = [ - 'no files marked as git modified' => [ - 'inputPaths' => $fakeFileList, - 'outputGitModified' => [], - 'expectedOutput' => [], - ], - - 'files marked as git modified which don\'t actually exist' => [ - 'inputPaths' => $fakeFileList, - 'outputGitModified' => [ - 'src/WillNotExist.php', - 'src/WillNotExist.bak', - 'src/WillNotExist.orig', - ], - 'expectedOutput' => [], - ], - - 'single file marked as git modified - file in root dir' => [ - 'inputPaths' => $fakeFileList, - 'outputGitModified' => [ - 'autoload.php', - ], - 'expectedOutput' => [ - $basedir.'/autoload.php', - ], - ], - 'single file marked as git modified - file in sub dir' => [ - 'inputPaths' => $fakeFileList, - 'outputGitModified' => [ - 'src/Standards/Generic/Sniffs/Classes/DuplicateClassNameSniff.php', - ], - 'expectedOutput' => [ - $basedir.'/src', - $basedir.'/src/Standards', - $basedir.'/src/Standards/Generic', - $basedir.'/src/Standards/Generic/Sniffs', - $basedir.'/src/Standards/Generic/Sniffs/Classes', - $basedir.'/src/Standards/Generic/Sniffs/Classes/DuplicateClassNameSniff.php', - ], - ], - - 'multiple files marked as git modified, none valid for scan' => [ - 'inputPaths' => $fakeFileList, - 'outputGitModified' => [ - '.gitignore', - 'phpcs.xml.dist', - 'src/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.js.fixed', - ], - 'expectedOutput' => [ - $basedir.'/src', - $basedir.'/src/Standards', - $basedir.'/src/Standards/Squiz', - $basedir.'/src/Standards/Squiz/Tests', - $basedir.'/src/Standards/Squiz/Tests/WhiteSpace', - ], - ], - - 'multiple files marked as git modified, only one file valid for scan' => [ - 'inputPaths' => $fakeFileList, - 'outputGitModified' => [ - '.gitignore', - 'src/Standards/Generic/Docs/Classes/DuplicateClassNameStandard.xml', - 'src/Standards/Generic/Sniffs/Classes/DuplicateClassNameSniff.php', - ], - 'expectedOutput' => [ - $basedir.'/src', - $basedir.'/src/Standards', - $basedir.'/src/Standards/Generic', - $basedir.'/src/Standards/Generic/Docs', - $basedir.'/src/Standards/Generic/Docs/Classes', - $basedir.'/src/Standards/Generic/Sniffs', - $basedir.'/src/Standards/Generic/Sniffs/Classes', - $basedir.'/src/Standards/Generic/Sniffs/Classes/DuplicateClassNameSniff.php', - ], - ], - - 'multiple files marked as git modified, multiple files valid for scan' => [ - 'inputPaths' => $fakeFileList, - 'outputGitModified' => [ - '.yamllint.yml', - 'autoload.php', - 'src/Standards/Squiz/Sniffs/WhiteSpace/OperatorSpacingSniff.php', - 'src/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.1.inc', - 'src/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.1.inc.fixed', - 'src/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.js', - 'src/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.js.fixed', - 'src/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.php', - ], - 'expectedOutput' => [ - $basedir.'/autoload.php', - $basedir.'/src', - $basedir.'/src/Standards', - $basedir.'/src/Standards/Squiz', - $basedir.'/src/Standards/Squiz/Sniffs', - $basedir.'/src/Standards/Squiz/Sniffs/WhiteSpace', - $basedir.'/src/Standards/Squiz/Sniffs/WhiteSpace/OperatorSpacingSniff.php', - $basedir.'/src/Standards/Squiz/Tests', - $basedir.'/src/Standards/Squiz/Tests/WhiteSpace', - $basedir.'/src/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.1.inc', - $basedir.'/src/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.js', - $basedir.'/src/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.php', - ], - ], - ]; - - return $testCases; - - }//end dataAcceptOnlyGitModified() - - - /** - * Test filtering a file list for excluded paths. - * - * @param string $cmd Command to run. - * @param array $expected Expected return value. - * - * @dataProvider dataExecAlwaysReturnsArray - * - * @return void - */ - public function testExecAlwaysReturnsArray($cmd, $expected) - { - if (is_dir(__DIR__.'/../../../.git') === false) { - $this->markTestSkipped('Not a git repository'); - } - - $fakeDI = new RecursiveArrayIterator(self::getFakeFileList()); - $filter = new GitModified($fakeDI, '/', self::$config, self::$ruleset); - - $reflMethod = new ReflectionMethod($filter, 'exec'); - $reflMethod->setAccessible(true); - $result = $reflMethod->invoke($filter, $cmd); - - $this->assertSame($expected, $result); - - }//end testExecAlwaysReturnsArray() - - - /** - * Data provider. - * - * @see testExecAlwaysReturnsArray - * - * {@internal Missing: test with a command which yields a `false` return value. - * JRF: I've not managed to find a command which does so, let alone one, which then - * doesn't have side-effects of uncatchable output while running the tests.} - * - * @return array>> - */ - public static function dataExecAlwaysReturnsArray() - { - return [ - 'valid command which won\'t have any output unless files in the bin dir have been modified' => [ - // Largely using the command used in the filter, but only checking the bin dir. - // This should prevent the test unexpectedly failing during local development (in most cases). - 'cmd' => 'git ls-files -o -m --exclude-standard -- '.escapeshellarg(self::getBaseDir().'/bin'), - 'expected' => [], - ], - 'valid command which will have output' => [ - 'cmd' => 'git ls-files --exclude-standard -- '.escapeshellarg(self::getBaseDir().'/bin'), - 'expected' => [ - 'bin/phpcbf', - 'bin/phpcbf.bat', - 'bin/phpcs', - 'bin/phpcs.bat', - ], - ], - ]; - - }//end dataExecAlwaysReturnsArray() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Filters/GitStagedTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Filters/GitStagedTest.php deleted file mode 100644 index 0da18af9..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Filters/GitStagedTest.php +++ /dev/null @@ -1,268 +0,0 @@ - - * @copyright 2023 PHPCSStandards Contributors - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Tests\Core\Filters; - -use PHP_CodeSniffer\Filters\GitStaged; -use PHP_CodeSniffer\Tests\Core\Filters\AbstractFilterTestCase; -use RecursiveArrayIterator; -use ReflectionMethod; - -/** - * Tests for the \PHP_CodeSniffer\Filters\GitStaged class. - * - * @covers \PHP_CodeSniffer\Filters\GitStaged - */ -final class GitStagedTest extends AbstractFilterTestCase -{ - - - /** - * Test filtering a file list for excluded paths. - * - * @return void - */ - public function testFileNamePassesAsBasePathWillTranslateToDirname() - { - $rootFile = self::getBaseDir().'/autoload.php'; - - $fakeDI = new RecursiveArrayIterator(self::getFakeFileList()); - $constructorArgs = [ - $fakeDI, - $rootFile, - self::$config, - self::$ruleset, - ]; - $mockObj = $this->getMockedClass('PHP_CodeSniffer\Filters\GitStaged', $constructorArgs, ['exec']); - - $mockObj->expects($this->once()) - ->method('exec') - ->willReturn(['autoload.php']); - - $this->assertEquals([$rootFile], $this->getFilteredResultsAsArray($mockObj)); - - }//end testFileNamePassesAsBasePathWillTranslateToDirname() - - - /** - * Test filtering a file list for excluded paths. - * - * @param array $inputPaths List of file paths to be filtered. - * @param array $outputGitStaged Simulated "git staged" output. - * @param array $expectedOutput Expected filtering result. - * - * @dataProvider dataAcceptOnlyGitStaged - * - * @return void - */ - public function testAcceptOnlyGitStaged($inputPaths, $outputGitStaged, $expectedOutput) - { - $fakeDI = new RecursiveArrayIterator($inputPaths); - $constructorArgs = [ - $fakeDI, - self::getBaseDir(), - self::$config, - self::$ruleset, - ]; - $mockObj = $this->getMockedClass('PHP_CodeSniffer\Filters\GitStaged', $constructorArgs, ['exec']); - - $mockObj->expects($this->once()) - ->method('exec') - ->willReturn($outputGitStaged); - - $this->assertEquals($expectedOutput, $this->getFilteredResultsAsArray($mockObj)); - - }//end testAcceptOnlyGitStaged() - - - /** - * Data provider. - * - * @see testAcceptOnlyGitStaged - * - * @return array>> - */ - public static function dataAcceptOnlyGitStaged() - { - $basedir = self::getBaseDir(); - $fakeFileList = self::getFakeFileList(); - - $testCases = [ - 'no files marked as git modified' => [ - 'inputPaths' => $fakeFileList, - 'outputGitStaged' => [], - 'expectedOutput' => [], - ], - - 'files marked as git modified which don\'t actually exist' => [ - 'inputPaths' => $fakeFileList, - 'outputGitStaged' => [ - 'src/WillNotExist.php', - 'src/WillNotExist.bak', - 'src/WillNotExist.orig', - ], - 'expectedOutput' => [], - ], - - 'single file marked as git modified - file in root dir' => [ - 'inputPaths' => $fakeFileList, - 'outputGitStaged' => [ - 'autoload.php', - ], - 'expectedOutput' => [ - $basedir.'/autoload.php', - ], - ], - 'single file marked as git modified - file in sub dir' => [ - 'inputPaths' => $fakeFileList, - 'outputGitStaged' => [ - 'src/Standards/Generic/Sniffs/Classes/DuplicateClassNameSniff.php', - ], - 'expectedOutput' => [ - $basedir.'/src', - $basedir.'/src/Standards', - $basedir.'/src/Standards/Generic', - $basedir.'/src/Standards/Generic/Sniffs', - $basedir.'/src/Standards/Generic/Sniffs/Classes', - $basedir.'/src/Standards/Generic/Sniffs/Classes/DuplicateClassNameSniff.php', - ], - ], - - 'multiple files marked as git modified, none valid for scan' => [ - 'inputPaths' => $fakeFileList, - 'outputGitStaged' => [ - '.gitignore', - 'phpcs.xml.dist', - 'src/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.js.fixed', - ], - 'expectedOutput' => [ - $basedir.'/src', - $basedir.'/src/Standards', - $basedir.'/src/Standards/Squiz', - $basedir.'/src/Standards/Squiz/Tests', - $basedir.'/src/Standards/Squiz/Tests/WhiteSpace', - ], - ], - - 'multiple files marked as git modified, only one file valid for scan' => [ - 'inputPaths' => $fakeFileList, - 'outputGitStaged' => [ - '.gitignore', - 'src/Standards/Generic/Docs/Classes/DuplicateClassNameStandard.xml', - 'src/Standards/Generic/Sniffs/Classes/DuplicateClassNameSniff.php', - ], - 'expectedOutput' => [ - $basedir.'/src', - $basedir.'/src/Standards', - $basedir.'/src/Standards/Generic', - $basedir.'/src/Standards/Generic/Docs', - $basedir.'/src/Standards/Generic/Docs/Classes', - $basedir.'/src/Standards/Generic/Sniffs', - $basedir.'/src/Standards/Generic/Sniffs/Classes', - $basedir.'/src/Standards/Generic/Sniffs/Classes/DuplicateClassNameSniff.php', - ], - ], - - 'multiple files marked as git modified, multiple files valid for scan' => [ - 'inputPaths' => $fakeFileList, - 'outputGitStaged' => [ - '.yamllint.yml', - 'autoload.php', - 'src/Standards/Squiz/Sniffs/WhiteSpace/OperatorSpacingSniff.php', - 'src/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.1.inc', - 'src/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.1.inc.fixed', - 'src/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.js', - 'src/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.js.fixed', - 'src/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.php', - ], - 'expectedOutput' => [ - $basedir.'/autoload.php', - $basedir.'/src', - $basedir.'/src/Standards', - $basedir.'/src/Standards/Squiz', - $basedir.'/src/Standards/Squiz/Sniffs', - $basedir.'/src/Standards/Squiz/Sniffs/WhiteSpace', - $basedir.'/src/Standards/Squiz/Sniffs/WhiteSpace/OperatorSpacingSniff.php', - $basedir.'/src/Standards/Squiz/Tests', - $basedir.'/src/Standards/Squiz/Tests/WhiteSpace', - $basedir.'/src/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.1.inc', - $basedir.'/src/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.js', - $basedir.'/src/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.php', - ], - ], - ]; - - return $testCases; - - }//end dataAcceptOnlyGitStaged() - - - /** - * Test filtering a file list for excluded paths. - * - * @param string $cmd Command to run. - * @param array $expected Expected return value. - * - * @dataProvider dataExecAlwaysReturnsArray - * - * @return void - */ - public function testExecAlwaysReturnsArray($cmd, $expected) - { - if (is_dir(__DIR__.'/../../../.git') === false) { - $this->markTestSkipped('Not a git repository'); - } - - $fakeDI = new RecursiveArrayIterator(self::getFakeFileList()); - $filter = new GitStaged($fakeDI, '/', self::$config, self::$ruleset); - - $reflMethod = new ReflectionMethod($filter, 'exec'); - $reflMethod->setAccessible(true); - $result = $reflMethod->invoke($filter, $cmd); - - $this->assertSame($expected, $result); - - }//end testExecAlwaysReturnsArray() - - - /** - * Data provider. - * - * @see testExecAlwaysReturnsArray - * - * {@internal Missing: test with a command which yields a `false` return value. - * JRF: I've not managed to find a command which does so, let alone one, which then - * doesn't have side-effects of uncatchable output while running the tests.} - * - * @return array>> - */ - public static function dataExecAlwaysReturnsArray() - { - return [ - 'valid command which won\'t have any output unless files in the bin dir have been modified & staged' => [ - // Largely using the command used in the filter, but only checking the bin dir. - // This should prevent the test unexpectedly failing during local development (in most cases). - 'cmd' => 'git diff --cached --name-only -- '.escapeshellarg(self::getBaseDir().'/bin'), - 'expected' => [], - ], - 'valid command which will have output' => [ - 'cmd' => 'git ls-files --exclude-standard -- '.escapeshellarg(self::getBaseDir().'/bin'), - 'expected' => [ - 'bin/phpcbf', - 'bin/phpcbf.bat', - 'bin/phpcs', - 'bin/phpcs.bat', - ], - ], - ]; - - }//end dataExecAlwaysReturnsArray() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/ExplainTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/ExplainTest.php deleted file mode 100644 index 48866cc3..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/ExplainTest.php +++ /dev/null @@ -1,263 +0,0 @@ - - * @copyright 2023 Juliette Reinders Folmer. All rights reserved. - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Tests\Core\Ruleset; - -use PHP_CodeSniffer\Ruleset; -use PHP_CodeSniffer\Runner; -use PHP_CodeSniffer\Tests\ConfigDouble; -use PHPUnit\Framework\TestCase; - -/** - * Test the Ruleset::explain() function. - * - * @covers \PHP_CodeSniffer\Ruleset::explain - */ -final class ExplainTest extends TestCase -{ - - - /** - * Test the output of the "explain" command. - * - * @return void - */ - public function testExplain() - { - // Set up the ruleset. - $config = new ConfigDouble(['--standard=PSR1', '-e']); - $ruleset = new Ruleset($config); - - $expected = PHP_EOL; - $expected .= 'The PSR1 standard contains 8 sniffs'.PHP_EOL.PHP_EOL; - $expected .= 'Generic (4 sniffs)'.PHP_EOL; - $expected .= '------------------'.PHP_EOL; - $expected .= ' Generic.Files.ByteOrderMark'.PHP_EOL; - $expected .= ' Generic.NamingConventions.UpperCaseConstantName'.PHP_EOL; - $expected .= ' Generic.PHP.DisallowAlternativePHPTags'.PHP_EOL; - $expected .= ' Generic.PHP.DisallowShortOpenTag'.PHP_EOL.PHP_EOL; - $expected .= 'PSR1 (3 sniffs)'.PHP_EOL; - $expected .= '---------------'.PHP_EOL; - $expected .= ' PSR1.Classes.ClassDeclaration'.PHP_EOL; - $expected .= ' PSR1.Files.SideEffects'.PHP_EOL; - $expected .= ' PSR1.Methods.CamelCapsMethodName'.PHP_EOL.PHP_EOL; - $expected .= 'Squiz (1 sniff)'.PHP_EOL; - $expected .= '---------------'.PHP_EOL; - $expected .= ' Squiz.Classes.ValidClassName'.PHP_EOL; - - $this->expectOutputString($expected); - - $ruleset->explain(); - - }//end testExplain() - - - /** - * Test the output of the "explain" command is not influenced by a user set report width. - * - * @return void - */ - public function testExplainAlwaysDisplaysCompleteSniffName() - { - // Set up the ruleset. - $config = new ConfigDouble(['--standard=PSR1', '-e', '--report-width=30']); - $ruleset = new Ruleset($config); - - $expected = PHP_EOL; - $expected .= 'The PSR1 standard contains 8 sniffs'.PHP_EOL.PHP_EOL; - $expected .= 'Generic (4 sniffs)'.PHP_EOL; - $expected .= '------------------'.PHP_EOL; - $expected .= ' Generic.Files.ByteOrderMark'.PHP_EOL; - $expected .= ' Generic.NamingConventions.UpperCaseConstantName'.PHP_EOL; - $expected .= ' Generic.PHP.DisallowAlternativePHPTags'.PHP_EOL; - $expected .= ' Generic.PHP.DisallowShortOpenTag'.PHP_EOL.PHP_EOL; - $expected .= 'PSR1 (3 sniffs)'.PHP_EOL; - $expected .= '---------------'.PHP_EOL; - $expected .= ' PSR1.Classes.ClassDeclaration'.PHP_EOL; - $expected .= ' PSR1.Files.SideEffects'.PHP_EOL; - $expected .= ' PSR1.Methods.CamelCapsMethodName'.PHP_EOL.PHP_EOL; - $expected .= 'Squiz (1 sniff)'.PHP_EOL; - $expected .= '---------------'.PHP_EOL; - $expected .= ' Squiz.Classes.ValidClassName'.PHP_EOL; - - $this->expectOutputString($expected); - - $ruleset->explain(); - - }//end testExplainAlwaysDisplaysCompleteSniffName() - - - /** - * Test the output of the "explain" command when a ruleset only contains a single sniff. - * - * This is mostly about making sure that the summary line uses the correct grammar. - * - * @return void - */ - public function testExplainSingleSniff() - { - // Set up the ruleset. - $standard = __DIR__.'/ExplainSingleSniffTest.xml'; - $config = new ConfigDouble(["--standard=$standard", '-e']); - $ruleset = new Ruleset($config); - - $expected = PHP_EOL; - $expected .= 'The ExplainSingleSniffTest standard contains 1 sniff'.PHP_EOL.PHP_EOL; - $expected .= 'Squiz (1 sniff)'.PHP_EOL; - $expected .= '---------------'.PHP_EOL; - $expected .= ' Squiz.Scope.MethodScope'.PHP_EOL; - - $this->expectOutputString($expected); - - $ruleset->explain(); - - }//end testExplainSingleSniff() - - - /** - * Test that "explain" works correctly with custom rulesets. - * - * Verifies that: - * - The "standard" name is taken from the custom ruleset. - * - Any and all sniff additions and exclusions in the ruleset are taken into account correctly. - * - That the displayed list will have both the standards as well as the sniff names - * ordered alphabetically. - * - * @return void - */ - public function testExplainCustomRuleset() - { - // Set up the ruleset. - $standard = __DIR__.'/ExplainCustomRulesetTest.xml'; - $config = new ConfigDouble(["--standard=$standard", '-e']); - $ruleset = new Ruleset($config); - - $expected = PHP_EOL; - $expected .= 'The ExplainCustomRulesetTest standard contains 10 sniffs'.PHP_EOL.PHP_EOL; - $expected .= 'Generic (4 sniffs)'.PHP_EOL; - $expected .= '------------------'.PHP_EOL; - $expected .= ' Generic.Files.ByteOrderMark'.PHP_EOL; - $expected .= ' Generic.NamingConventions.UpperCaseConstantName'.PHP_EOL; - $expected .= ' Generic.PHP.DisallowAlternativePHPTags'.PHP_EOL; - $expected .= ' Generic.PHP.DisallowShortOpenTag'.PHP_EOL.PHP_EOL; - $expected .= 'PSR1 (2 sniffs)'.PHP_EOL; - $expected .= '---------------'.PHP_EOL; - $expected .= ' PSR1.Classes.ClassDeclaration'.PHP_EOL; - $expected .= ' PSR1.Methods.CamelCapsMethodName'.PHP_EOL.PHP_EOL; - $expected .= 'PSR12 (2 sniffs)'.PHP_EOL; - $expected .= '----------------'.PHP_EOL; - $expected .= ' PSR12.ControlStructures.BooleanOperatorPlacement'.PHP_EOL; - $expected .= ' PSR12.ControlStructures.ControlStructureSpacing'.PHP_EOL.PHP_EOL; - $expected .= 'Squiz (2 sniffs)'.PHP_EOL; - $expected .= '----------------'.PHP_EOL; - $expected .= ' Squiz.Classes.ValidClassName'.PHP_EOL; - $expected .= ' Squiz.Scope.MethodScope'.PHP_EOL; - - $this->expectOutputString($expected); - - $ruleset->explain(); - - }//end testExplainCustomRuleset() - - - /** - * Test the output of the "explain" command for a standard containing both deprecated - * and non-deprecated sniffs. - * - * Tests that: - * - Deprecated sniffs are marked with an asterix in the list. - * - A footnote is displayed explaining the asterix. - * - And that the "standard uses # deprecated sniffs" listing is **not** displayed. - * - * @return void - */ - public function testExplainWithDeprecatedSniffs() - { - // Set up the ruleset. - $standard = __DIR__."/ShowSniffDeprecationsTest.xml"; - $config = new ConfigDouble(["--standard=$standard", '-e']); - $ruleset = new Ruleset($config); - - $expected = PHP_EOL; - $expected .= 'The ShowSniffDeprecationsTest standard contains 10 sniffs'.PHP_EOL.PHP_EOL; - - $expected .= 'TestStandard (10 sniffs)'.PHP_EOL; - $expected .= '------------------------'.PHP_EOL; - $expected .= ' TestStandard.Deprecated.WithLongReplacement *'.PHP_EOL; - $expected .= ' TestStandard.Deprecated.WithoutReplacement *'.PHP_EOL; - $expected .= ' TestStandard.Deprecated.WithReplacement *'.PHP_EOL; - $expected .= ' TestStandard.Deprecated.WithReplacementContainingLinuxNewlines *'.PHP_EOL; - $expected .= ' TestStandard.Deprecated.WithReplacementContainingNewlines *'.PHP_EOL; - $expected .= ' TestStandard.SetProperty.AllowedAsDeclared'.PHP_EOL; - $expected .= ' TestStandard.SetProperty.AllowedViaMagicMethod'.PHP_EOL; - $expected .= ' TestStandard.SetProperty.AllowedViaStdClass'.PHP_EOL; - $expected .= ' TestStandard.SetProperty.NotAllowedViaAttribute'.PHP_EOL; - $expected .= ' TestStandard.SetProperty.PropertyTypeHandling'.PHP_EOL.PHP_EOL; - - $expected .= '* Sniffs marked with an asterix are deprecated.'.PHP_EOL; - - $this->expectOutputString($expected); - - $ruleset->explain(); - - }//end testExplainWithDeprecatedSniffs() - - - /** - * Test that each standard passed on the command-line is explained separately. - * - * @covers \PHP_CodeSniffer\Runner::runPHPCS - * - * @return void - */ - public function testExplainWillExplainEachStandardSeparately() - { - if (PHP_CODESNIFFER_CBF === true) { - $this->markTestSkipped('This test needs CS mode to run'); - } - - $standard = __DIR__.'/ExplainSingleSniffTest.xml'; - $_SERVER['argv'] = [ - 'phpcs', - '-e', - "--standard=PSR1,$standard", - '--report-width=80', - ]; - - $expected = PHP_EOL; - $expected .= 'The PSR1 standard contains 8 sniffs'.PHP_EOL.PHP_EOL; - $expected .= 'Generic (4 sniffs)'.PHP_EOL; - $expected .= '------------------'.PHP_EOL; - $expected .= ' Generic.Files.ByteOrderMark'.PHP_EOL; - $expected .= ' Generic.NamingConventions.UpperCaseConstantName'.PHP_EOL; - $expected .= ' Generic.PHP.DisallowAlternativePHPTags'.PHP_EOL; - $expected .= ' Generic.PHP.DisallowShortOpenTag'.PHP_EOL.PHP_EOL; - $expected .= 'PSR1 (3 sniffs)'.PHP_EOL; - $expected .= '---------------'.PHP_EOL; - $expected .= ' PSR1.Classes.ClassDeclaration'.PHP_EOL; - $expected .= ' PSR1.Files.SideEffects'.PHP_EOL; - $expected .= ' PSR1.Methods.CamelCapsMethodName'.PHP_EOL.PHP_EOL; - $expected .= 'Squiz (1 sniff)'.PHP_EOL; - $expected .= '---------------'.PHP_EOL; - $expected .= ' Squiz.Classes.ValidClassName'.PHP_EOL.PHP_EOL; - - $expected .= 'The ExplainSingleSniffTest standard contains 1 sniff'.PHP_EOL.PHP_EOL; - $expected .= 'Squiz (1 sniff)'.PHP_EOL; - $expected .= '---------------'.PHP_EOL; - $expected .= ' Squiz.Scope.MethodScope'.PHP_EOL; - - $this->expectOutputString($expected); - - $runner = new Runner(); - $runner->runPHPCS(); - - }//end testExplainWillExplainEachStandardSeparately() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/RuleInclusionAbsoluteWindowsTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/RuleInclusionAbsoluteWindowsTest.php deleted file mode 100644 index 9dd0370b..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/RuleInclusionAbsoluteWindowsTest.php +++ /dev/null @@ -1,116 +0,0 @@ - - * @copyright 2019 Juliette Reinders Folmer. All rights reserved. - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Tests\Core\Ruleset; - -use PHP_CodeSniffer\Ruleset; -use PHP_CodeSniffer\Tests\ConfigDouble; -use PHPUnit\Framework\TestCase; - -/** - * Tests for the \PHP_CodeSniffer\Ruleset class using a Windows-style absolute path to include a sniff. - * - * @covers \PHP_CodeSniffer\Ruleset - * @requires OS ^WIN.*. - * @group Windows - */ -final class RuleInclusionAbsoluteWindowsTest extends TestCase -{ - - /** - * The Ruleset object. - * - * @var \PHP_CodeSniffer\Ruleset - */ - protected $ruleset; - - /** - * Path to the ruleset file. - * - * @var string - */ - private $standard = ''; - - /** - * The original content of the ruleset. - * - * @var string - */ - private $contents = ''; - - - /** - * Initialize the config and ruleset objects. - * - * @before - * - * @return void - */ - public function initializeConfigAndRuleset() - { - $this->standard = __DIR__.'/'.basename(__FILE__, '.php').'.xml'; - $repoRootDir = dirname(dirname(dirname(__DIR__))); - - // On-the-fly adjust the ruleset test file to be able to test sniffs included with absolute paths. - $contents = file_get_contents($this->standard); - $this->contents = $contents; - - $adjusted = str_replace('%path_slash_back%', $repoRootDir, $contents); - - if (file_put_contents($this->standard, $adjusted) === false) { - $this->markTestSkipped('On the fly ruleset adjustment failed'); - } - - // Initialize the config and ruleset objects for the test. - $config = new ConfigDouble(["--standard={$this->standard}"]); - $this->ruleset = new Ruleset($config); - - }//end initializeConfigAndRuleset() - - - /** - * Reset ruleset file. - * - * @after - * - * @return void - */ - public function resetRuleset() - { - file_put_contents($this->standard, $this->contents); - - }//end resetRuleset() - - - /** - * Test that sniffs registed with a Windows absolute path are correctly recognized and that - * properties are correctly set for them. - * - * @return void - */ - public function testWindowsStylePathRuleInclusion() - { - // Test that the sniff is correctly registered. - $this->assertCount(1, $this->ruleset->sniffCodes); - $this->assertArrayHasKey('Generic.Formatting.SpaceAfterCast', $this->ruleset->sniffCodes); - $this->assertSame( - 'PHP_CodeSniffer\Standards\Generic\Sniffs\Formatting\SpaceAfterCastSniff', - $this->ruleset->sniffCodes['Generic.Formatting.SpaceAfterCast'] - ); - - // Test that the sniff property is correctly set. - $this->assertSame( - '10', - $this->ruleset->sniffs['PHP_CodeSniffer\Standards\Generic\Sniffs\Formatting\SpaceAfterCastSniff']->spacing - ); - - }//end testWindowsStylePathRuleInclusion() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/RuleInclusionTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/RuleInclusionTest.php deleted file mode 100644 index e016a7ea..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/RuleInclusionTest.php +++ /dev/null @@ -1,479 +0,0 @@ - - * @copyright 2019 Juliette Reinders Folmer. All rights reserved. - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Tests\Core\Ruleset; - -use PHP_CodeSniffer\Ruleset; -use PHP_CodeSniffer\Tests\ConfigDouble; -use PHP_CodeSniffer\Tests\Core\Ruleset\AbstractRulesetTestCase; - -/** - * Tests for the \PHP_CodeSniffer\Ruleset class. - * - * @covers \PHP_CodeSniffer\Ruleset - */ -final class RuleInclusionTest extends AbstractRulesetTestCase -{ - - /** - * The Ruleset object. - * - * @var \PHP_CodeSniffer\Ruleset - */ - protected static $ruleset; - - /** - * Path to the ruleset file. - * - * @var string - */ - private static $standard = ''; - - /** - * The original content of the ruleset. - * - * @var string - */ - private static $contents = ''; - - - /** - * Initialize the config and ruleset objects based on the `RuleInclusionTest.xml` ruleset file. - * - * @before - * - * @return void - */ - public static function initializeConfigAndRuleset() - { - if (self::$standard === '') { - $standard = __DIR__.'/'.basename(__FILE__, '.php').'.xml'; - self::$standard = $standard; - - // On-the-fly adjust the ruleset test file to be able to test - // sniffs included with relative paths. - $contents = file_get_contents($standard); - self::$contents = $contents; - - $repoRootDir = basename(dirname(dirname(dirname(__DIR__)))); - - $newPath = $repoRootDir; - if (DIRECTORY_SEPARATOR === '\\') { - $newPath = str_replace('\\', '/', $repoRootDir); - } - - $adjusted = str_replace('%path_root_dir%', $newPath, $contents); - - if (file_put_contents($standard, $adjusted) === false) { - self::markTestSkipped('On the fly ruleset adjustment failed'); - } - - $config = new ConfigDouble(["--standard=$standard"]); - self::$ruleset = new Ruleset($config); - }//end if - - }//end initializeConfigAndRuleset() - - - /** - * Reset ruleset file. - * - * @after - * - * @return void - */ - public function resetRuleset() - { - file_put_contents(self::$standard, self::$contents); - - }//end resetRuleset() - - - /** - * Test that sniffs are registered. - * - * @return void - */ - public function testHasSniffCodes() - { - $this->assertCount(49, self::$ruleset->sniffCodes); - - }//end testHasSniffCodes() - - - /** - * Test that sniffs are correctly registered, independently of the syntax used to include the sniff. - * - * @param string $key Expected array key. - * @param string $value Expected array value. - * - * @dataProvider dataRegisteredSniffCodes - * - * @return void - */ - public function testRegisteredSniffCodes($key, $value) - { - $this->assertArrayHasKey($key, self::$ruleset->sniffCodes); - $this->assertSame($value, self::$ruleset->sniffCodes[$key]); - - }//end testRegisteredSniffCodes() - - - /** - * Data provider. - * - * @see self::testRegisteredSniffCodes() - * - * @return array> - */ - public static function dataRegisteredSniffCodes() - { - return [ - [ - 'PSR2.Classes.ClassDeclaration', - 'PHP_CodeSniffer\Standards\PSR2\Sniffs\Classes\ClassDeclarationSniff', - ], - [ - 'PSR2.Classes.PropertyDeclaration', - 'PHP_CodeSniffer\Standards\PSR2\Sniffs\Classes\PropertyDeclarationSniff', - ], - [ - 'PSR2.ControlStructures.ControlStructureSpacing', - 'PHP_CodeSniffer\Standards\PSR2\Sniffs\ControlStructures\ControlStructureSpacingSniff', - ], - [ - 'PSR2.ControlStructures.ElseIfDeclaration', - 'PHP_CodeSniffer\Standards\PSR2\Sniffs\ControlStructures\ElseIfDeclarationSniff', - ], - [ - 'PSR2.ControlStructures.SwitchDeclaration', - 'PHP_CodeSniffer\Standards\PSR2\Sniffs\ControlStructures\SwitchDeclarationSniff', - ], - [ - 'PSR2.Files.ClosingTag', - 'PHP_CodeSniffer\Standards\PSR2\Sniffs\Files\ClosingTagSniff', - ], - [ - 'PSR2.Files.EndFileNewline', - 'PHP_CodeSniffer\Standards\PSR2\Sniffs\Files\EndFileNewlineSniff', - ], - [ - 'PSR2.Methods.FunctionCallSignature', - 'PHP_CodeSniffer\Standards\PSR2\Sniffs\Methods\FunctionCallSignatureSniff', - ], - [ - 'PSR2.Methods.FunctionClosingBrace', - 'PHP_CodeSniffer\Standards\PSR2\Sniffs\Methods\FunctionClosingBraceSniff', - ], - [ - 'PSR2.Methods.MethodDeclaration', - 'PHP_CodeSniffer\Standards\PSR2\Sniffs\Methods\MethodDeclarationSniff', - ], - [ - 'PSR2.Namespaces.NamespaceDeclaration', - 'PHP_CodeSniffer\Standards\PSR2\Sniffs\Namespaces\NamespaceDeclarationSniff', - ], - [ - 'PSR2.Namespaces.UseDeclaration', - 'PHP_CodeSniffer\Standards\PSR2\Sniffs\Namespaces\UseDeclarationSniff', - ], - [ - 'PSR1.Classes.ClassDeclaration', - 'PHP_CodeSniffer\Standards\PSR1\Sniffs\Classes\ClassDeclarationSniff', - ], - [ - 'PSR1.Files.SideEffects', - 'PHP_CodeSniffer\Standards\PSR1\Sniffs\Files\SideEffectsSniff', - ], - [ - 'PSR1.Methods.CamelCapsMethodName', - 'PHP_CodeSniffer\Standards\PSR1\Sniffs\Methods\CamelCapsMethodNameSniff', - ], - [ - 'Generic.PHP.DisallowAlternativePHPTags', - 'PHP_CodeSniffer\Standards\Generic\Sniffs\PHP\DisallowAlternativePHPTagsSniff', - ], - [ - 'Generic.PHP.DisallowShortOpenTag', - 'PHP_CodeSniffer\Standards\Generic\Sniffs\PHP\DisallowShortOpenTagSniff', - ], - [ - 'Generic.Files.ByteOrderMark', - 'PHP_CodeSniffer\Standards\Generic\Sniffs\Files\ByteOrderMarkSniff', - ], - [ - 'Squiz.Classes.ValidClassName', - 'PHP_CodeSniffer\Standards\Squiz\Sniffs\Classes\ValidClassNameSniff', - ], - [ - 'Generic.NamingConventions.UpperCaseConstantName', - 'PHP_CodeSniffer\Standards\Generic\Sniffs\NamingConventions\UpperCaseConstantNameSniff', - ], - [ - 'Generic.Files.LineEndings', - 'PHP_CodeSniffer\Standards\Generic\Sniffs\Files\LineEndingsSniff', - ], - [ - 'Generic.Files.LineLength', - 'PHP_CodeSniffer\Standards\Generic\Sniffs\Files\LineLengthSniff', - ], - [ - 'Squiz.WhiteSpace.SuperfluousWhitespace', - 'PHP_CodeSniffer\Standards\Squiz\Sniffs\WhiteSpace\SuperfluousWhitespaceSniff', - ], - [ - 'Generic.Formatting.DisallowMultipleStatements', - 'PHP_CodeSniffer\Standards\Generic\Sniffs\Formatting\DisallowMultipleStatementsSniff', - ], - [ - 'Generic.WhiteSpace.ScopeIndent', - 'PHP_CodeSniffer\Standards\Generic\Sniffs\WhiteSpace\ScopeIndentSniff', - ], - [ - 'Generic.WhiteSpace.DisallowTabIndent', - 'PHP_CodeSniffer\Standards\Generic\Sniffs\WhiteSpace\DisallowTabIndentSniff', - ], - [ - 'Generic.PHP.LowerCaseKeyword', - 'PHP_CodeSniffer\Standards\Generic\Sniffs\PHP\LowerCaseKeywordSniff', - ], - [ - 'Generic.PHP.LowerCaseConstant', - 'PHP_CodeSniffer\Standards\Generic\Sniffs\PHP\LowerCaseConstantSniff', - ], - [ - 'Squiz.Scope.MethodScope', - 'PHP_CodeSniffer\Standards\Squiz\Sniffs\Scope\MethodScopeSniff', - ], - [ - 'Squiz.WhiteSpace.ScopeKeywordSpacing', - 'PHP_CodeSniffer\Standards\Squiz\Sniffs\WhiteSpace\ScopeKeywordSpacingSniff', - ], - [ - 'Squiz.Functions.FunctionDeclaration', - 'PHP_CodeSniffer\Standards\Squiz\Sniffs\Functions\FunctionDeclarationSniff', - ], - [ - 'Squiz.Functions.LowercaseFunctionKeywords', - 'PHP_CodeSniffer\Standards\Squiz\Sniffs\Functions\LowercaseFunctionKeywordsSniff', - ], - [ - 'Squiz.Functions.FunctionDeclarationArgumentSpacing', - 'PHP_CodeSniffer\Standards\Squiz\Sniffs\Functions\FunctionDeclarationArgumentSpacingSniff', - ], - [ - 'PEAR.Functions.ValidDefaultValue', - 'PHP_CodeSniffer\Standards\PEAR\Sniffs\Functions\ValidDefaultValueSniff', - ], - [ - 'Squiz.Functions.MultiLineFunctionDeclaration', - 'PHP_CodeSniffer\Standards\Squiz\Sniffs\Functions\MultiLineFunctionDeclarationSniff', - ], - [ - 'Generic.Functions.FunctionCallArgumentSpacing', - 'PHP_CodeSniffer\Standards\Generic\Sniffs\Functions\FunctionCallArgumentSpacingSniff', - ], - [ - 'Squiz.ControlStructures.ControlSignature', - 'PHP_CodeSniffer\Standards\Squiz\Sniffs\ControlStructures\ControlSignatureSniff', - ], - [ - 'Squiz.WhiteSpace.ControlStructureSpacing', - 'PHP_CodeSniffer\Standards\Squiz\Sniffs\WhiteSpace\ControlStructureSpacingSniff', - ], - [ - 'Squiz.WhiteSpace.ScopeClosingBrace', - 'PHP_CodeSniffer\Standards\Squiz\Sniffs\WhiteSpace\ScopeClosingBraceSniff', - ], - [ - 'Squiz.ControlStructures.ForEachLoopDeclaration', - 'PHP_CodeSniffer\Standards\Squiz\Sniffs\ControlStructures\ForEachLoopDeclarationSniff', - ], - [ - 'Squiz.ControlStructures.ForLoopDeclaration', - 'PHP_CodeSniffer\Standards\Squiz\Sniffs\ControlStructures\ForLoopDeclarationSniff', - ], - [ - 'Squiz.ControlStructures.LowercaseDeclaration', - 'PHP_CodeSniffer\Standards\Squiz\Sniffs\ControlStructures\LowercaseDeclarationSniff', - ], - [ - 'Generic.ControlStructures.InlineControlStructure', - 'PHP_CodeSniffer\Standards\Generic\Sniffs\ControlStructures\InlineControlStructureSniff', - ], - [ - 'PSR12.Operators.OperatorSpacing', - 'PHP_CodeSniffer\Standards\PSR12\Sniffs\Operators\OperatorSpacingSniff', - ], - [ - 'Generic.Arrays.ArrayIndent', - 'PHP_CodeSniffer\Standards\Generic\Sniffs\Arrays\ArrayIndentSniff', - ], - [ - 'Generic.Metrics.CyclomaticComplexity', - 'PHP_CodeSniffer\Standards\Generic\Sniffs\Metrics\CyclomaticComplexitySniff', - ], - [ - 'Squiz.Files.FileExtension', - 'PHP_CodeSniffer\Standards\Squiz\Sniffs\Files\FileExtensionSniff', - ], - [ - 'Generic.NamingConventions.CamelCapsFunctionName', - 'PHP_CodeSniffer\Standards\Generic\Sniffs\NamingConventions\CamelCapsFunctionNameSniff', - ], - [ - 'Generic.Metrics.NestingLevel', - 'PHP_CodeSniffer\Standards\Generic\Sniffs\Metrics\NestingLevelSniff', - ], - ]; - - }//end dataRegisteredSniffCodes() - - - /** - * Test that setting properties for standards, categories, sniffs works for all supported rule - * inclusion methods. - * - * @param string $sniffClass The name of the sniff class. - * @param string $propertyName The name of the changed property. - * @param string|int|bool $expectedValue The value expected for the property. - * - * @dataProvider dataSettingProperties - * - * @return void - */ - public function testSettingProperties($sniffClass, $propertyName, $expectedValue) - { - $this->assertArrayHasKey($sniffClass, self::$ruleset->sniffs); - $this->assertXObjectHasProperty($propertyName, self::$ruleset->sniffs[$sniffClass]); - - $actualValue = self::$ruleset->sniffs[$sniffClass]->$propertyName; - $this->assertSame($expectedValue, $actualValue); - - }//end testSettingProperties() - - - /** - * Data provider. - * - * @see self::testSettingProperties() - * - * @return array> - */ - public static function dataSettingProperties() - { - return [ - 'Set property for complete standard: PSR2 ClassDeclaration' => [ - 'sniffClass' => 'PHP_CodeSniffer\Standards\PSR2\Sniffs\Classes\ClassDeclarationSniff', - 'propertyName' => 'indent', - 'expectedValue' => '20', - ], - 'Set property for complete standard: PSR2 SwitchDeclaration' => [ - 'sniffClass' => 'PHP_CodeSniffer\Standards\PSR2\Sniffs\ControlStructures\SwitchDeclarationSniff', - 'propertyName' => 'indent', - 'expectedValue' => '20', - ], - 'Set property for complete standard: PSR2 FunctionCallSignature' => [ - 'sniffClass' => 'PHP_CodeSniffer\Standards\PSR2\Sniffs\Methods\FunctionCallSignatureSniff', - 'propertyName' => 'indent', - 'expectedValue' => '20', - ], - 'Set property for complete category: PSR12 OperatorSpacing' => [ - 'sniffClass' => 'PHP_CodeSniffer\Standards\PSR12\Sniffs\Operators\OperatorSpacingSniff', - 'propertyName' => 'ignoreSpacingBeforeAssignments', - 'expectedValue' => false, - ], - 'Set property for individual sniff: Generic ArrayIndent' => [ - 'sniffClass' => 'PHP_CodeSniffer\Standards\Generic\Sniffs\Arrays\ArrayIndentSniff', - 'propertyName' => 'indent', - 'expectedValue' => '2', - ], - 'Set property for individual sniff using sniff file inclusion: Generic LineLength' => [ - 'sniffClass' => 'PHP_CodeSniffer\Standards\Generic\Sniffs\Files\LineLengthSniff', - 'propertyName' => 'lineLimit', - 'expectedValue' => '10', - ], - 'Set property for individual sniff using sniff file inclusion: CamelCapsFunctionName' => [ - 'sniffClass' => 'PHP_CodeSniffer\Standards\Generic\Sniffs\NamingConventions\CamelCapsFunctionNameSniff', - 'propertyName' => 'strict', - 'expectedValue' => false, - ], - 'Set property for individual sniff via included ruleset: NestingLevel - nestingLevel' => [ - 'sniffClass' => 'PHP_CodeSniffer\Standards\Generic\Sniffs\Metrics\NestingLevelSniff', - 'propertyName' => 'nestingLevel', - 'expectedValue' => '2', - ], - 'Set property for all sniffs in an included ruleset: NestingLevel - absoluteNestingLevel' => [ - 'sniffClass' => 'PHP_CodeSniffer\Standards\Generic\Sniffs\Metrics\NestingLevelSniff', - 'propertyName' => 'absoluteNestingLevel', - 'expectedValue' => true, - ], - - // Testing that setting a property at error code level does *not* work. - 'Set property for error code will not change the sniff property value: CyclomaticComplexity' => [ - 'sniffClass' => 'PHP_CodeSniffer\Standards\Generic\Sniffs\Metrics\CyclomaticComplexitySniff', - 'propertyName' => 'complexity', - 'expectedValue' => 10, - ], - ]; - - }//end dataSettingProperties() - - - /** - * Test that setting properties for standards, categories on sniffs which don't support the property will - * silently ignore the property and not set it. - * - * @param string $sniffClass The name of the sniff class. - * @param string $propertyName The name of the property which should not be set. - * - * @dataProvider dataSettingInvalidPropertiesOnStandardsAndCategoriesSilentlyFails - * - * @return void - */ - public function testSettingInvalidPropertiesOnStandardsAndCategoriesSilentlyFails($sniffClass, $propertyName) - { - $this->assertArrayHasKey($sniffClass, self::$ruleset->sniffs, 'Sniff class '.$sniffClass.' not listed in registered sniffs'); - $this->assertXObjectNotHasProperty($propertyName, self::$ruleset->sniffs[$sniffClass]); - - }//end testSettingInvalidPropertiesOnStandardsAndCategoriesSilentlyFails() - - - /** - * Data provider. - * - * @see self::testSettingInvalidPropertiesOnStandardsAndCategoriesSilentlyFails() - * - * @return arraystring, string>> - */ - public static function dataSettingInvalidPropertiesOnStandardsAndCategoriesSilentlyFails() - { - return [ - 'Set property for complete standard: PSR2 ClassDeclaration' => [ - 'sniffClass' => 'PHP_CodeSniffer\Standards\PSR1\Sniffs\Classes\ClassDeclarationSniff', - 'propertyName' => 'setforallsniffs', - ], - 'Set property for complete standard: PSR2 FunctionCallSignature' => [ - 'sniffClass' => 'PHP_CodeSniffer\Standards\PSR2\Sniffs\Methods\FunctionCallSignatureSniff', - 'propertyName' => 'setforallsniffs', - ], - 'Set property for complete category: PSR12 OperatorSpacing' => [ - 'sniffClass' => 'PHP_CodeSniffer\Standards\PSR12\Sniffs\Operators\OperatorSpacingSniff', - 'propertyName' => 'setforallincategory', - ], - 'Set property for all sniffs in included category directory' => [ - 'sniffClass' => 'PHP_CodeSniffer\Standards\Squiz\Sniffs\Files\FileExtensionSniff', - 'propertyName' => 'setforsquizfilessniffs', - ], - ]; - - }//end dataSettingInvalidPropertiesOnStandardsAndCategoriesSilentlyFails() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/RuleInclusionTest.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/RuleInclusionTest.xml deleted file mode 100644 index 6b5c0a97..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/RuleInclusionTest.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/SetPropertyAllowedAsDeclaredTest.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/SetPropertyAllowedAsDeclaredTest.xml deleted file mode 100644 index 88eaa5eb..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/SetPropertyAllowedAsDeclaredTest.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/SetPropertyAllowedViaMagicMethodTest.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/SetPropertyAllowedViaMagicMethodTest.xml deleted file mode 100644 index e8502e7f..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/SetPropertyAllowedViaMagicMethodTest.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/SetPropertyAllowedViaStdClassTest.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/SetPropertyAllowedViaStdClassTest.xml deleted file mode 100644 index bfbfaf5e..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/SetPropertyAllowedViaStdClassTest.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/SetPropertyAppliesPropertyToMultipleSniffsInCategoryTest.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/SetPropertyAppliesPropertyToMultipleSniffsInCategoryTest.xml deleted file mode 100644 index 67fcca35..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/SetPropertyAppliesPropertyToMultipleSniffsInCategoryTest.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/SetPropertyDoesNotThrowErrorOnInvalidPropertyWhenSetForCategoryTest.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/SetPropertyDoesNotThrowErrorOnInvalidPropertyWhenSetForCategoryTest.xml deleted file mode 100644 index a678c915..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/SetPropertyDoesNotThrowErrorOnInvalidPropertyWhenSetForCategoryTest.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/SetPropertyDoesNotThrowErrorOnInvalidPropertyWhenSetForStandardTest.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/SetPropertyDoesNotThrowErrorOnInvalidPropertyWhenSetForStandardTest.xml deleted file mode 100644 index 8ce97e2d..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/SetPropertyDoesNotThrowErrorOnInvalidPropertyWhenSetForStandardTest.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/SetPropertyNotAllowedViaAttributeTest.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/SetPropertyNotAllowedViaAttributeTest.xml deleted file mode 100644 index c6a14c25..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/SetPropertyNotAllowedViaAttributeTest.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/SetPropertyThrowsErrorOnInvalidPropertyTest.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/SetPropertyThrowsErrorOnInvalidPropertyTest.xml deleted file mode 100644 index a1742618..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/SetPropertyThrowsErrorOnInvalidPropertyTest.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/SetSniffPropertyTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/SetSniffPropertyTest.php deleted file mode 100644 index b974844c..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/SetSniffPropertyTest.php +++ /dev/null @@ -1,421 +0,0 @@ - - * @copyright 2022 Juliette Reinders Folmer. All rights reserved. - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Tests\Core\Ruleset; - -use PHP_CodeSniffer\Ruleset; -use PHP_CodeSniffer\Tests\ConfigDouble; -use PHP_CodeSniffer\Tests\Core\Ruleset\AbstractRulesetTestCase; -use ReflectionObject; - -/** - * These tests specifically focus on the changes made to work around the PHP 8.2 dynamic properties deprecation. - * - * @covers \PHP_CodeSniffer\Ruleset::setSniffProperty - */ -final class SetSniffPropertyTest extends AbstractRulesetTestCase -{ - - - /** - * Test that setting a property via the ruleset works in all situations which allow for it. - * - * @param string $name Name of the test. Used for the sniff name, the ruleset file name etc. - * - * @dataProvider dataSniffPropertiesGetSetWhenAllowed - * - * @return void - */ - public function testSniffPropertiesGetSetWhenAllowed($name) - { - $sniffCode = "TestStandard.SetProperty.{$name}"; - $sniffClass = 'Fixtures\TestStandard\Sniffs\SetProperty\\'.$name.'Sniff'; - $properties = [ - 'arbitrarystring' => 'arbitraryvalue', - 'arbitraryarray' => [ - 'mykey' => 'myvalue', - 'otherkey' => 'othervalue', - ], - ]; - - // Set up the ruleset. - $standard = __DIR__."/SetProperty{$name}Test.xml"; - $config = new ConfigDouble(["--standard=$standard"]); - $ruleset = new Ruleset($config); - - // Verify that the sniff has been registered. - $this->assertGreaterThan(0, count($ruleset->sniffCodes), 'No sniff codes registered'); - - // Verify that our target sniff has been registered. - $this->assertArrayHasKey($sniffCode, $ruleset->sniffCodes, 'Target sniff not registered'); - $this->assertSame($sniffClass, $ruleset->sniffCodes[$sniffCode], 'Target sniff not registered with the correct class'); - - // Test that the property as declared in the ruleset has been set on the sniff. - $this->assertArrayHasKey($sniffClass, $ruleset->sniffs, 'Sniff class not listed in registered sniffs'); - - $sniffObject = $ruleset->sniffs[$sniffClass]; - foreach ($properties as $name => $expectedValue) { - $this->assertSame($expectedValue, $sniffObject->$name, 'Property value not set to expected value'); - } - - }//end testSniffPropertiesGetSetWhenAllowed() - - - /** - * Data provider. - * - * @see self::testSniffPropertiesGetSetWhenAllowed() - * - * @return array> - */ - public static function dataSniffPropertiesGetSetWhenAllowed() - { - return [ - 'Property allowed as explicitly declared' => ['AllowedAsDeclared'], - 'Property allowed as sniff extends stdClass' => ['AllowedViaStdClass'], - 'Property allowed as sniff has magic __set() method' => ['AllowedViaMagicMethod'], - ]; - - }//end dataSniffPropertiesGetSetWhenAllowed() - - - /** - * Test that setting a property for a category will apply it correctly to those sniffs which support the - * property, but won't apply it to sniffs which don't. - * - * Note: this test intentionally uses the `PEAR.Functions` category as two sniffs in that category - * have a public property with the same name (`indent`) and one sniff doesn't, which makes it a great - * test case for this. - * - * @return void - */ - public function testSetPropertyAppliesPropertyToMultipleSniffsInCategory() - { - $propertyName = 'indent'; - $expectedValue = '10'; - - // Set up the ruleset. - $standard = __DIR__.'/SetPropertyAppliesPropertyToMultipleSniffsInCategoryTest.xml'; - $config = new ConfigDouble(["--standard=$standard"]); - $ruleset = new Ruleset($config); - - // Test that the two sniffs which support the property have received the value. - $sniffClass = 'PHP_CodeSniffer\Standards\PEAR\Sniffs\Functions\FunctionCallSignatureSniff'; - $this->assertArrayHasKey($sniffClass, $ruleset->sniffs, 'Sniff class '.$sniffClass.' not listed in registered sniffs'); - $sniffObject = $ruleset->sniffs[$sniffClass]; - $this->assertSame($expectedValue, $sniffObject->$propertyName, 'Property value not set to expected value for '.$sniffClass); - - $sniffClass = 'PHP_CodeSniffer\Standards\PEAR\Sniffs\Functions\FunctionDeclarationSniff'; - $this->assertArrayHasKey($sniffClass, $ruleset->sniffs, 'Sniff class '.$sniffClass.' not listed in registered sniffs'); - $sniffObject = $ruleset->sniffs[$sniffClass]; - $this->assertSame($expectedValue, $sniffObject->$propertyName, 'Property value not set to expected value for '.$sniffClass); - - // Test that the property doesn't get set for the one sniff which doesn't support the property. - $sniffClass = 'PHP_CodeSniffer\Standards\PEAR\Sniffs\Functions\ValidDefaultValueSniff'; - $this->assertArrayHasKey($sniffClass, $ruleset->sniffs, 'Sniff class '.$sniffClass.' not listed in registered sniffs'); - - $hasProperty = (new ReflectionObject($ruleset->sniffs[$sniffClass]))->hasProperty($propertyName); - $errorMsg = sprintf('Property %s registered for sniff %s which does not support it', $propertyName, $sniffClass); - $this->assertFalse($hasProperty, $errorMsg); - - }//end testSetPropertyAppliesPropertyToMultipleSniffsInCategory() - - - /** - * Test that attempting to set a non-existent property directly on a sniff will throw an error - * when the sniff does not explicitly declare the property, extends stdClass or has magic methods. - * - * @return void - */ - public function testSetPropertyThrowsErrorOnInvalidProperty() - { - $exceptionMsg = 'Ruleset invalid. Property "indentation" does not exist on sniff Generic.Arrays.ArrayIndent'; - $this->expectRuntimeExceptionMessage($exceptionMsg); - - // Set up the ruleset. - $standard = __DIR__.'/SetPropertyThrowsErrorOnInvalidPropertyTest.xml'; - $config = new ConfigDouble(["--standard=$standard"]); - new Ruleset($config); - - }//end testSetPropertyThrowsErrorOnInvalidProperty() - - - /** - * Test that attempting to set a non-existent property directly on a sniff will throw an error - * when the sniff does not explicitly declare the property, extends stdClass or has magic methods, - * even though the sniff has the PHP 8.2 `#[AllowDynamicProperties]` attribute set. - * - * @return void - */ - public function testSetPropertyThrowsErrorWhenPropertyOnlyAllowedViaAttribute() - { - $exceptionMsg = 'Ruleset invalid. Property "arbitrarystring" does not exist on sniff TestStandard.SetProperty.NotAllowedViaAttribute'; - $this->expectRuntimeExceptionMessage($exceptionMsg); - - // Set up the ruleset. - $standard = __DIR__.'/SetPropertyNotAllowedViaAttributeTest.xml'; - $config = new ConfigDouble(["--standard=$standard"]); - new Ruleset($config); - - }//end testSetPropertyThrowsErrorWhenPropertyOnlyAllowedViaAttribute() - - - /** - * Test that attempting to set a non-existent property on a sniff when the property directive is - * for the whole standard, does not yield an error. - * - * @doesNotPerformAssertions - * - * @return void - */ - public function testSetPropertyDoesNotThrowErrorOnInvalidPropertyWhenSetForStandard() - { - // Set up the ruleset. - $standard = __DIR__.'/SetPropertyDoesNotThrowErrorOnInvalidPropertyWhenSetForStandardTest.xml'; - $config = new ConfigDouble(["--standard=$standard"]); - new Ruleset($config); - - }//end testSetPropertyDoesNotThrowErrorOnInvalidPropertyWhenSetForStandard() - - - /** - * Test that attempting to set a non-existent property on a sniff when the property directive is - * for a whole category, does not yield an error. - * - * @doesNotPerformAssertions - * - * @return void - */ - public function testSetPropertyDoesNotThrowErrorOnInvalidPropertyWhenSetForCategory() - { - // Set up the ruleset. - $standard = __DIR__.'/SetPropertyDoesNotThrowErrorOnInvalidPropertyWhenSetForCategoryTest.xml'; - $config = new ConfigDouble(["--standard=$standard"]); - new Ruleset($config); - - }//end testSetPropertyDoesNotThrowErrorOnInvalidPropertyWhenSetForCategory() - - - /** - * Test that attempting to set a property for a sniff which isn't registered will be ignored. - * - * @return void - */ - public function testDirectCallIgnoredPropertyForUnusedSniff() - { - $sniffCode = 'Generic.Formatting.SpaceAfterCast'; - $sniffClass = 'PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Formatting\\SpaceAfterCastSniff'; - - // Set up the ruleset. - $config = new ConfigDouble(['--standard=PSR1']); - $ruleset = new Ruleset($config); - - $ruleset->setSniffProperty( - $sniffClass, - 'ignoreNewlines', - [ - 'scope' => 'sniff', - 'value' => true, - ] - ); - - // Verify that there are sniffs registered. - $this->assertGreaterThan(0, count($ruleset->sniffCodes), 'No sniff codes registered'); - - // Verify that our target sniff has NOT been registered after attempting to set the property. - $this->assertArrayNotHasKey($sniffCode, $ruleset->sniffCodes, 'Unused sniff was registered in sniffCodes, but shouldn\'t have been'); - $this->assertArrayNotHasKey($sniffClass, $ruleset->sniffs, 'Unused sniff was registered in sniffs, but shouldn\'t have been'); - - }//end testDirectCallIgnoredPropertyForUnusedSniff() - - - /** - * Test that setting a property via a direct call to the Ruleset::setSniffProperty() method - * sets the property correctly when using the new $settings array format. - * - * @return void - */ - public function testDirectCallWithNewArrayFormatSetsProperty() - { - $name = 'AllowedAsDeclared'; - $sniffCode = "TestStandard.SetProperty.{$name}"; - $sniffClass = 'Fixtures\TestStandard\Sniffs\SetProperty\\'.$name.'Sniff'; - - // Set up the ruleset. - $standard = __DIR__."/SetProperty{$name}Test.xml"; - $config = new ConfigDouble(["--standard=$standard"]); - $ruleset = new Ruleset($config); - - $propertyName = 'arbitrarystring'; - $propertyValue = 'new value'; - - $ruleset->setSniffProperty( - $sniffClass, - $propertyName, - [ - 'scope' => 'sniff', - 'value' => $propertyValue, - ] - ); - - // Verify that the sniff has been registered. - $this->assertGreaterThan(0, count($ruleset->sniffCodes), 'No sniff codes registered'); - - // Verify that our target sniff has been registered. - $this->assertArrayHasKey($sniffCode, $ruleset->sniffCodes, 'Target sniff not registered'); - $this->assertSame($sniffClass, $ruleset->sniffCodes[$sniffCode], 'Target sniff not registered with the correct class'); - - // Test that the property as declared in the ruleset has been set on the sniff. - $this->assertArrayHasKey($sniffClass, $ruleset->sniffs, 'Sniff class not listed in registered sniffs'); - - $sniffObject = $ruleset->sniffs[$sniffClass]; - $this->assertSame($propertyValue, $sniffObject->$propertyName, 'Property value not set to expected value'); - - }//end testDirectCallWithNewArrayFormatSetsProperty() - - - /** - * Test that setting a property via a direct call to the Ruleset::setSniffProperty() method - * sets the property correctly when using the old $settings array format. - * - * Tested by silencing the deprecation notice as otherwise the test would fail on the deprecation notice. - * - * @param mixed $propertyValue Value for the property to set. - * - * @dataProvider dataDirectCallWithOldArrayFormatSetsProperty - * - * @return void - */ - public function testDirectCallWithOldArrayFormatSetsProperty($propertyValue) - { - $name = 'AllowedAsDeclared'; - $sniffCode = "TestStandard.SetProperty.{$name}"; - $sniffClass = 'Fixtures\TestStandard\Sniffs\SetProperty\\'.$name.'Sniff'; - - // Set up the ruleset. - $standard = __DIR__."/SetProperty{$name}Test.xml"; - $config = new ConfigDouble(["--standard=$standard"]); - $ruleset = new Ruleset($config); - - $propertyName = 'arbitrarystring'; - - @$ruleset->setSniffProperty( - $sniffClass, - $propertyName, - $propertyValue - ); - - // Verify that the sniff has been registered. - $this->assertGreaterThan(0, count($ruleset->sniffCodes), 'No sniff codes registered'); - - // Verify that our target sniff has been registered. - $this->assertArrayHasKey($sniffCode, $ruleset->sniffCodes, 'Target sniff not registered'); - $this->assertSame($sniffClass, $ruleset->sniffCodes[$sniffCode], 'Target sniff not registered with the correct class'); - - // Test that the property as declared in the ruleset has been set on the sniff. - $this->assertArrayHasKey($sniffClass, $ruleset->sniffs, 'Sniff class not listed in registered sniffs'); - - $sniffObject = $ruleset->sniffs[$sniffClass]; - $this->assertSame($propertyValue, $sniffObject->$propertyName, 'Property value not set to expected value'); - - }//end testDirectCallWithOldArrayFormatSetsProperty() - - - /** - * Data provider. - * - * @see self::testDirectCallWithOldArrayFormatSetsProperty() - * - * @return array> - */ - public static function dataDirectCallWithOldArrayFormatSetsProperty() - { - return [ - 'Property value is not an array (boolean)' => [ - 'propertyValue' => false, - ], - 'Property value is not an array (string)' => [ - 'propertyValue' => 'a string', - ], - 'Property value is an empty array' => [ - 'propertyValue' => [], - ], - 'Property value is an array without keys' => [ - 'propertyValue' => [ - 'value', - false, - ], - ], - 'Property value is an array without the "scope" or "value" keys' => [ - 'propertyValue' => [ - 'key1' => 'value', - 'key2' => false, - ], - ], - 'Property value is an array without the "scope" key' => [ - 'propertyValue' => [ - 'key1' => 'value', - 'value' => true, - ], - ], - 'Property value is an array without the "value" key' => [ - 'propertyValue' => [ - 'scope' => 'value', - 'key2' => 1234, - ], - ], - ]; - - }//end dataDirectCallWithOldArrayFormatSetsProperty() - - - /** - * Test that setting a property via a direct call to the Ruleset::setSniffProperty() method - * throws a deprecation notice when using the old $settings array format. - * - * Note: as PHPUnit stops as soon as it sees the deprecation notice, the setting of the property - * value is not tested here. - * - * @return void - */ - public function testDirectCallWithOldArrayFormatThrowsDeprecationNotice() - { - $exceptionClass = 'PHPUnit\Framework\Error\Deprecated'; - if (class_exists($exceptionClass) === false) { - $exceptionClass = 'PHPUnit_Framework_Error_Deprecated'; - } - - $exceptionMsg = 'the format of the $settings parameter has changed from (mixed) $value to array(\'scope\' => \'sniff|standard\', \'value\' => $value). Please update your integration code. See PR #3629 for more information.'; - - if (method_exists($this, 'expectException') === true) { - $this->expectException($exceptionClass); - $this->expectExceptionMessage($exceptionMsg); - } else { - // PHPUnit < 5.2.0. - $this->setExpectedException($exceptionClass, $exceptionMsg); - } - - $name = 'AllowedAsDeclared'; - $sniffClass = 'Fixtures\TestStandard\Sniffs\SetProperty\\'.$name.'Sniff'; - - // Set up the ruleset. - $standard = __DIR__."/SetProperty{$name}Test.xml"; - $config = new ConfigDouble(["--standard=$standard"]); - $ruleset = new Ruleset($config); - - $ruleset->setSniffProperty( - $sniffClass, - 'arbitrarystring', - ['key' => 'value'] - ); - - }//end testDirectCallWithOldArrayFormatThrowsDeprecationNotice() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/ShowSniffDeprecationsEmptyDeprecationVersionTest.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/ShowSniffDeprecationsEmptyDeprecationVersionTest.xml deleted file mode 100644 index 75527e2b..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/ShowSniffDeprecationsEmptyDeprecationVersionTest.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/ShowSniffDeprecationsEmptyRemovalVersionTest.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/ShowSniffDeprecationsEmptyRemovalVersionTest.xml deleted file mode 100644 index 150fc3e5..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/ShowSniffDeprecationsEmptyRemovalVersionTest.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/ShowSniffDeprecationsInvalidDeprecationMessageTest.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/ShowSniffDeprecationsInvalidDeprecationMessageTest.xml deleted file mode 100644 index 973e065a..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/ShowSniffDeprecationsInvalidDeprecationMessageTest.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/ShowSniffDeprecationsInvalidDeprecationVersionTest.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/ShowSniffDeprecationsInvalidDeprecationVersionTest.xml deleted file mode 100644 index 493adfd1..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/ShowSniffDeprecationsInvalidDeprecationVersionTest.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/ShowSniffDeprecationsInvalidRemovalVersionTest.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/ShowSniffDeprecationsInvalidRemovalVersionTest.xml deleted file mode 100644 index 358cb0df..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/ShowSniffDeprecationsInvalidRemovalVersionTest.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/ShowSniffDeprecationsOrderTest.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/ShowSniffDeprecationsOrderTest.xml deleted file mode 100644 index fbc0cb7b..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/ShowSniffDeprecationsOrderTest.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/ShowSniffDeprecationsReportWidthTest.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/ShowSniffDeprecationsReportWidthTest.xml deleted file mode 100644 index 86cc615c..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/ShowSniffDeprecationsReportWidthTest.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/ShowSniffDeprecationsTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/ShowSniffDeprecationsTest.php deleted file mode 100644 index 6979d69a..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/ShowSniffDeprecationsTest.php +++ /dev/null @@ -1,540 +0,0 @@ - - * @copyright 2024 Juliette Reinders Folmer. All rights reserved. - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Tests\Core\Ruleset; - -use PHP_CodeSniffer\Ruleset; -use PHP_CodeSniffer\Tests\ConfigDouble; -use PHP_CodeSniffer\Tests\Core\Ruleset\AbstractRulesetTestCase; - -/** - * Tests PHPCS native handling of sniff deprecations. - * - * @covers \PHP_CodeSniffer\Ruleset::hasSniffDeprecations - * @covers \PHP_CodeSniffer\Ruleset::showSniffDeprecations - */ -final class ShowSniffDeprecationsTest extends AbstractRulesetTestCase -{ - - - /** - * Test the return value of the hasSniffDeprecations() method. - * - * @param string $standard The standard to use for the test. - * @param bool $expected The expected function return value. - * - * @dataProvider dataHasSniffDeprecations - * - * @return void - */ - public function testHasSniffDeprecations($standard, $expected) - { - $config = new ConfigDouble(['.', "--standard=$standard"]); - $ruleset = new Ruleset($config); - - $this->assertSame($expected, $ruleset->hasSniffDeprecations()); - - }//end testHasSniffDeprecations() - - - /** - * Data provider. - * - * @see testHasSniffDeprecations() - * - * @return array> - */ - public static function dataHasSniffDeprecations() - { - return [ - 'Standard not using deprecated sniffs: PSR1' => [ - 'standard' => 'PSR1', - 'expected' => false, - ], - 'Standard using deprecated sniffs: Test Fixture' => [ - 'standard' => __DIR__.'/ShowSniffDeprecationsTest.xml', - 'expected' => true, - ], - ]; - - }//end dataHasSniffDeprecations() - - - /** - * Test that the listing with deprecated sniffs will not show when specific command-line options are being used [1]. - * - * @param string $standard The standard to use for the test. - * @param array $additionalArgs Optional. Additional arguments to pass. - * - * @dataProvider dataDeprecatedSniffsListDoesNotShow - * - * @return void - */ - public function testDeprecatedSniffsListDoesNotShow($standard, $additionalArgs=[]) - { - $args = $additionalArgs; - $args[] = '.'; - $args[] = "--standard=$standard"; - - $config = new ConfigDouble($args); - $ruleset = new Ruleset($config); - - $this->expectOutputString(''); - - $ruleset->showSniffDeprecations(); - - }//end testDeprecatedSniffsListDoesNotShow() - - - /** - * Data provider. - * - * @see testDeprecatedSniffsListDoesNotShow() - * - * @return array>> - */ - public static function dataDeprecatedSniffsListDoesNotShow() - { - return [ - 'Standard not using deprecated sniffs: PSR1' => [ - 'standard' => 'PSR1', - ], - 'Standard using deprecated sniffs; explain mode' => [ - 'standard' => __DIR__.'/ShowSniffDeprecationsTest.xml', - 'additionalArgs' => ['-e'], - ], - 'Standard using deprecated sniffs; quiet mode' => [ - 'standard' => __DIR__.'/ShowSniffDeprecationsTest.xml', - 'additionalArgs' => ['-q'], - ], - ]; - - }//end dataDeprecatedSniffsListDoesNotShow() - - - /** - * Test that the listing with deprecated sniffs will not show when specific command-line options are being used [2]. - * - * {@internal Separate test method for the same thing as this test will only work in CS mode.} - * - * @param string $standard The standard to use for the test. - * @param array $additionalArgs Optional. Additional arguments to pass. - * - * @dataProvider dataDeprecatedSniffsListDoesNotShowNeedsCsMode - * - * @return void - */ - public function testDeprecatedSniffsListDoesNotShowNeedsCsMode($standard, $additionalArgs=[]) - { - if (PHP_CODESNIFFER_CBF === true) { - $this->markTestSkipped('This test needs CS mode to run'); - } - - $this->testDeprecatedSniffsListDoesNotShow($standard, $additionalArgs); - - }//end testDeprecatedSniffsListDoesNotShowNeedsCsMode() - - - /** - * Data provider. - * - * @see testDeprecatedSniffsListDoesNotShowNeedsCsMode() - * - * @return array>> - */ - public static function dataDeprecatedSniffsListDoesNotShowNeedsCsMode() - { - return [ - 'Standard using deprecated sniffs; documentation is requested' => [ - 'standard' => __DIR__.'/ShowSniffDeprecationsTest.xml', - 'additionalArgs' => ['--generator=text'], - ], - ]; - - }//end dataDeprecatedSniffsListDoesNotShowNeedsCsMode() - - - /** - * Test that the listing with deprecated sniffs will not show when using a standard containing deprecated sniffs, - * but only running select non-deprecated sniffs (using `--sniffs=...`). - * - * @return void - */ - public function testDeprecatedSniffsListDoesNotShowWhenSelectedSniffsAreNotDeprecated() - { - $standard = __DIR__.'/ShowSniffDeprecationsTest.xml'; - $config = new ConfigDouble(['.', "--standard=$standard"]); - $ruleset = new Ruleset($config); - - /* - * Apply sniff restrictions. - * For tests we need to manually trigger this if the standard is "installed", like with the fixtures these tests use. - */ - - $restrictions = []; - $sniffs = [ - 'TestStandard.SetProperty.AllowedAsDeclared', - 'TestStandard.SetProperty.AllowedViaStdClass', - ]; - foreach ($sniffs as $sniffCode) { - $parts = explode('.', strtolower($sniffCode)); - $sniffName = $parts[0].'\\sniffs\\'.$parts[1].'\\'.$parts[2].'sniff'; - $restrictions[strtolower($sniffName)] = true; - } - - $sniffFiles = []; - $allSniffs = $ruleset->sniffCodes; - foreach ($allSniffs as $sniffName) { - $sniffFile = str_replace('\\', DIRECTORY_SEPARATOR, $sniffName); - $sniffFile = __DIR__.DIRECTORY_SEPARATOR.$sniffFile.'.php'; - $sniffFiles[] = $sniffFile; - } - - $ruleset->registerSniffs($sniffFiles, $restrictions, []); - $ruleset->populateTokenListeners(); - - $this->expectOutputString(''); - - $ruleset->showSniffDeprecations(); - - }//end testDeprecatedSniffsListDoesNotShowWhenSelectedSniffsAreNotDeprecated() - - - /** - * Test that the listing with deprecated sniffs will not show when using a standard containing deprecated sniffs, - * but all deprecated sniffs have been excluded from the run (using `--exclude=...`). - * - * @return void - */ - public function testDeprecatedSniffsListDoesNotShowWhenAllDeprecatedSniffsAreExcluded() - { - $standard = __DIR__.'/ShowSniffDeprecationsTest.xml'; - $config = new ConfigDouble(['.', "--standard=$standard"]); - $ruleset = new Ruleset($config); - - /* - * Apply sniff restrictions. - * For tests we need to manually trigger this if the standard is "installed", like with the fixtures these tests use. - */ - - $exclusions = []; - $exclude = [ - 'TestStandard.Deprecated.WithLongReplacement', - 'TestStandard.Deprecated.WithoutReplacement', - 'TestStandard.Deprecated.WithReplacement', - 'TestStandard.Deprecated.WithReplacementContainingLinuxNewlines', - 'TestStandard.Deprecated.WithReplacementContainingNewlines', - ]; - foreach ($exclude as $sniffCode) { - $parts = explode('.', strtolower($sniffCode)); - $sniffName = $parts[0].'\\sniffs\\'.$parts[1].'\\'.$parts[2].'sniff'; - $exclusions[strtolower($sniffName)] = true; - } - - $sniffFiles = []; - $allSniffs = $ruleset->sniffCodes; - foreach ($allSniffs as $sniffName) { - $sniffFile = str_replace('\\', DIRECTORY_SEPARATOR, $sniffName); - $sniffFile = __DIR__.DIRECTORY_SEPARATOR.$sniffFile.'.php'; - $sniffFiles[] = $sniffFile; - } - - $ruleset->registerSniffs($sniffFiles, [], $exclusions); - $ruleset->populateTokenListeners(); - - $this->expectOutputString(''); - - $ruleset->showSniffDeprecations(); - - }//end testDeprecatedSniffsListDoesNotShowWhenAllDeprecatedSniffsAreExcluded() - - - /** - * Test deprecated sniffs are listed alphabetically in the deprecated sniffs warning. - * - * This tests a number of different aspects: - * 1. That the summary line uses the correct grammar when there is are multiple deprecated sniffs. - * 2. That there is no trailing whitespace when the sniff does not provide a custom message. - * 3. That custom messages containing new line characters (any type) are handled correctly and - * that those new line characters are converted to the OS supported new line char. - * - * @return void - */ - public function testDeprecatedSniffsWarning() - { - $standard = __DIR__.'/ShowSniffDeprecationsTest.xml'; - $config = new ConfigDouble(["--standard=$standard", '--no-colors']); - $ruleset = new Ruleset($config); - - $expected = 'WARNING: The ShowSniffDeprecationsTest standard uses 5 deprecated sniffs'.PHP_EOL; - $expected .= '--------------------------------------------------------------------------------'.PHP_EOL; - $expected .= '- TestStandard.Deprecated.WithLongReplacement'.PHP_EOL; - $expected .= ' This sniff has been deprecated since v3.8.0 and will be removed in v4.0.0.'.PHP_EOL; - $expected .= ' Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce vel'.PHP_EOL; - $expected .= ' vestibulum nunc. Sed luctus dolor tortor, eu euismod purus pretium sed.'.PHP_EOL; - $expected .= ' Fusce egestas congue massa semper cursus. Donec quis pretium tellus. In'.PHP_EOL; - $expected .= ' lacinia, augue ut ornare porttitor, diam nunc faucibus purus, et accumsan'.PHP_EOL; - $expected .= ' eros sapien at sem. Sed pulvinar aliquam malesuada. Aliquam erat volutpat.'.PHP_EOL; - $expected .= ' Mauris gravida rutrum lectus at egestas. Fusce tempus elit in tincidunt'.PHP_EOL; - $expected .= ' dictum. Suspendisse dictum egestas sapien, eget ullamcorper metus elementum'.PHP_EOL; - $expected .= ' semper. Vestibulum sem justo, consectetur ac tincidunt et, finibus eget'.PHP_EOL; - $expected .= ' libero.'.PHP_EOL; - $expected .= '- TestStandard.Deprecated.WithoutReplacement'.PHP_EOL; - $expected .= ' This sniff has been deprecated since v3.4.0 and will be removed in v4.0.0.'.PHP_EOL; - $expected .= '- TestStandard.Deprecated.WithReplacement'.PHP_EOL; - $expected .= ' This sniff has been deprecated since v3.8.0 and will be removed in v4.0.0.'.PHP_EOL; - $expected .= ' Use the Stnd.Category.OtherSniff sniff instead.'.PHP_EOL; - $expected .= '- TestStandard.Deprecated.WithReplacementContainingLinuxNewlines'.PHP_EOL; - $expected .= ' This sniff has been deprecated since v3.8.0 and will be removed in v4.0.0.'.PHP_EOL; - $expected .= ' Lorem ipsum dolor sit amet, consectetur adipiscing elit.'.PHP_EOL; - $expected .= ' Fusce vel vestibulum nunc. Sed luctus dolor tortor, eu euismod purus pretium'.PHP_EOL; - $expected .= ' sed.'.PHP_EOL; - $expected .= ' Fusce egestas congue massa semper cursus. Donec quis pretium tellus.'.PHP_EOL; - $expected .= ' In lacinia, augue ut ornare porttitor, diam nunc faucibus purus, et accumsan'.PHP_EOL; - $expected .= ' eros sapien at sem.'.PHP_EOL; - $expected .= ' Sed pulvinar aliquam malesuada. Aliquam erat volutpat. Mauris gravida rutrum'.PHP_EOL; - $expected .= ' lectus at egestas.'.PHP_EOL; - $expected .= '- TestStandard.Deprecated.WithReplacementContainingNewlines'.PHP_EOL; - $expected .= ' This sniff has been deprecated since v3.8.0 and will be removed in v4.0.0.'.PHP_EOL; - $expected .= ' Lorem ipsum dolor sit amet, consectetur adipiscing elit.'.PHP_EOL; - $expected .= ' Fusce vel vestibulum nunc. Sed luctus dolor tortor, eu euismod purus pretium'.PHP_EOL; - $expected .= ' sed.'.PHP_EOL; - $expected .= ' Fusce egestas congue massa semper cursus. Donec quis pretium tellus.'.PHP_EOL; - $expected .= ' In lacinia, augue ut ornare porttitor, diam nunc faucibus purus, et accumsan'.PHP_EOL; - $expected .= ' eros sapien at sem.'.PHP_EOL; - $expected .= ' Sed pulvinar aliquam malesuada. Aliquam erat volutpat. Mauris gravida rutrum'.PHP_EOL; - $expected .= ' lectus at egestas'.PHP_EOL.PHP_EOL; - $expected .= 'Deprecated sniffs are still run, but will stop working at some point in the'.PHP_EOL; - $expected .= 'future.'.PHP_EOL.PHP_EOL; - - $this->expectOutputString($expected); - - $ruleset->showSniffDeprecations(); - - }//end testDeprecatedSniffsWarning() - - - /** - * Test deprecated sniffs are listed alphabetically in the deprecated sniffs warning. - * - * This tests the following aspects: - * 1. That the summary line uses the correct grammar when there is a single deprecated sniff. - * 2. That the separator line below the summary maximizes at the longest line length. - * 3. That the word wrapping respects the maximum report width. - * 4. That the sniff name is truncated if it is longer than the max report width. - * - * @param int $reportWidth Report width for the test. - * @param string $expectedOutput Expected output. - * - * @dataProvider dataReportWidthIsRespected - * - * @return void - */ - public function testReportWidthIsRespected($reportWidth, $expectedOutput) - { - // Set up the ruleset. - $standard = __DIR__.'/ShowSniffDeprecationsReportWidthTest.xml'; - $config = new ConfigDouble(['.', "--standard=$standard", "--report-width=$reportWidth", '--no-colors']); - $ruleset = new Ruleset($config); - - $this->expectOutputString($expectedOutput); - - $ruleset->showSniffDeprecations(); - - }//end testReportWidthIsRespected() - - - /** - * Data provider. - * - * @see testReportWidthIsRespected() - * - * @return array> - */ - public static function dataReportWidthIsRespected() - { - $summaryLine = 'WARNING: The ShowSniffDeprecationsTest standard uses 1 deprecated sniff'.PHP_EOL; - - // phpcs:disable Squiz.Strings.ConcatenationSpacing.PaddingFound -- Test readability is more important. - return [ - 'Report width small: 40; with truncated sniff name and wrapped header and footer lines' => [ - 'reportWidth' => 40, - 'expectedOutput' => 'WARNING: The ShowSniffDeprecationsTest'.PHP_EOL - .'standard uses 1 deprecated sniff'.PHP_EOL - .'----------------------------------------'.PHP_EOL - .'- TestStandard.Deprecated.WithLongR...'.PHP_EOL - .' This sniff has been deprecated since'.PHP_EOL - .' v3.8.0 and will be removed in'.PHP_EOL - .' v4.0.0. Lorem ipsum dolor sit amet,'.PHP_EOL - .' consectetur adipiscing elit. Fusce'.PHP_EOL - .' vel vestibulum nunc. Sed luctus'.PHP_EOL - .' dolor tortor, eu euismod purus'.PHP_EOL - .' pretium sed. Fusce egestas congue'.PHP_EOL - .' massa semper cursus. Donec quis'.PHP_EOL - .' pretium tellus. In lacinia, augue ut'.PHP_EOL - .' ornare porttitor, diam nunc faucibus'.PHP_EOL - .' purus, et accumsan eros sapien at'.PHP_EOL - .' sem. Sed pulvinar aliquam malesuada.'.PHP_EOL - .' Aliquam erat volutpat. Mauris'.PHP_EOL - .' gravida rutrum lectus at egestas.'.PHP_EOL - .' Fusce tempus elit in tincidunt'.PHP_EOL - .' dictum. Suspendisse dictum egestas'.PHP_EOL - .' sapien, eget ullamcorper metus'.PHP_EOL - .' elementum semper. Vestibulum sem'.PHP_EOL - .' justo, consectetur ac tincidunt et,'.PHP_EOL - .' finibus eget libero.'.PHP_EOL.PHP_EOL - .'Deprecated sniffs are still run, but'.PHP_EOL - .'will stop working at some point in the'.PHP_EOL - .'future.'.PHP_EOL.PHP_EOL, - ], - 'Report width default: 80' => [ - 'reportWidth' => 80, - 'expectedOutput' => $summaryLine.str_repeat('-', 80).PHP_EOL - .'- TestStandard.Deprecated.WithLongReplacement'.PHP_EOL - .' This sniff has been deprecated since v3.8.0 and will be removed in v4.0.0.'.PHP_EOL - .' Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce vel'.PHP_EOL - .' vestibulum nunc. Sed luctus dolor tortor, eu euismod purus pretium sed.'.PHP_EOL - .' Fusce egestas congue massa semper cursus. Donec quis pretium tellus. In'.PHP_EOL - .' lacinia, augue ut ornare porttitor, diam nunc faucibus purus, et accumsan'.PHP_EOL - .' eros sapien at sem. Sed pulvinar aliquam malesuada. Aliquam erat volutpat.'.PHP_EOL - .' Mauris gravida rutrum lectus at egestas. Fusce tempus elit in tincidunt'.PHP_EOL - .' dictum. Suspendisse dictum egestas sapien, eget ullamcorper metus elementum'.PHP_EOL - .' semper. Vestibulum sem justo, consectetur ac tincidunt et, finibus eget'.PHP_EOL - .' libero.'.PHP_EOL.PHP_EOL - .'Deprecated sniffs are still run, but will stop working at some point in the'.PHP_EOL - .'future.'.PHP_EOL.PHP_EOL, - ], - 'Report width matches longest line: 666; the message should not wrap' => [ - // Length = 4 padding + 75 base line + 587 custom message. - 'reportWidth' => 666, - 'expectedOutput' => $summaryLine.str_repeat('-', 666).PHP_EOL - .'- TestStandard.Deprecated.WithLongReplacement'.PHP_EOL - .' This sniff has been deprecated since v3.8.0 and will be removed in v4.0.0. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce vel vestibulum nunc. Sed luctus dolor tortor, eu euismod purus pretium sed. Fusce egestas congue massa semper cursus. Donec quis pretium tellus. In lacinia, augue ut ornare porttitor, diam nunc faucibus purus, et accumsan eros sapien at sem. Sed pulvinar aliquam malesuada. Aliquam erat volutpat. Mauris gravida rutrum lectus at egestas. Fusce tempus elit in tincidunt dictum. Suspendisse dictum egestas sapien, eget ullamcorper metus elementum semper. Vestibulum sem justo, consectetur ac tincidunt et, finibus eget libero.' - .PHP_EOL.PHP_EOL - .'Deprecated sniffs are still run, but will stop working at some point in the future.'.PHP_EOL.PHP_EOL, - ], - 'Report width wide: 1000; delimiter line length should match longest line' => [ - 'reportWidth' => 1000, - 'expectedOutput' => $summaryLine.str_repeat('-', 666).PHP_EOL - .'- TestStandard.Deprecated.WithLongReplacement'.PHP_EOL - .' This sniff has been deprecated since v3.8.0 and will be removed in v4.0.0. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce vel vestibulum nunc. Sed luctus dolor tortor, eu euismod purus pretium sed. Fusce egestas congue massa semper cursus. Donec quis pretium tellus. In lacinia, augue ut ornare porttitor, diam nunc faucibus purus, et accumsan eros sapien at sem. Sed pulvinar aliquam malesuada. Aliquam erat volutpat. Mauris gravida rutrum lectus at egestas. Fusce tempus elit in tincidunt dictum. Suspendisse dictum egestas sapien, eget ullamcorper metus elementum semper. Vestibulum sem justo, consectetur ac tincidunt et, finibus eget libero.' - .PHP_EOL.PHP_EOL - .'Deprecated sniffs are still run, but will stop working at some point in the future.'.PHP_EOL.PHP_EOL, - ], - ]; - // phpcs:enable - - }//end dataReportWidthIsRespected() - - - /** - * Test deprecated sniffs are listed alphabetically in the deprecated sniffs warning. - * - * Additionally, this test verifies that deprecated sniffs are still registered to run. - * - * @return void - */ - public function testDeprecatedSniffsAreListedAlphabetically() - { - // Set up the ruleset. - $standard = __DIR__.'/ShowSniffDeprecationsOrderTest.xml'; - $config = new ConfigDouble(["--standard=$standard", '--no-colors']); - $ruleset = new Ruleset($config); - - $expected = 'WARNING: The ShowSniffDeprecationsTest standard uses 2 deprecated sniffs'.PHP_EOL; - $expected .= '--------------------------------------------------------------------------------'.PHP_EOL; - $expected .= '- TestStandard.Deprecated.WithoutReplacement'.PHP_EOL; - $expected .= ' This sniff has been deprecated since v3.4.0 and will be removed in v4.0.0.'.PHP_EOL; - $expected .= '- TestStandard.Deprecated.WithReplacement'.PHP_EOL; - $expected .= ' This sniff has been deprecated since v3.8.0 and will be removed in v4.0.0.'.PHP_EOL; - $expected .= ' Use the Stnd.Category.OtherSniff sniff instead.'.PHP_EOL.PHP_EOL; - $expected .= 'Deprecated sniffs are still run, but will stop working at some point in the'.PHP_EOL; - $expected .= 'future.'.PHP_EOL.PHP_EOL; - - $this->expectOutputString($expected); - - $ruleset->showSniffDeprecations(); - - // Verify that the sniffs have been registered to run. - $this->assertCount(2, $ruleset->sniffCodes, 'Incorrect number of sniff codes registered'); - $this->assertArrayHasKey( - 'TestStandard.Deprecated.WithoutReplacement', - $ruleset->sniffCodes, - 'WithoutReplacement sniff not registered' - ); - $this->assertArrayHasKey( - 'TestStandard.Deprecated.WithReplacement', - $ruleset->sniffCodes, - 'WithReplacement sniff not registered' - ); - - }//end testDeprecatedSniffsAreListedAlphabetically() - - - /** - * Test that an exception is thrown when any of the interface required methods does not - * comply with the return type/value requirements. - * - * @param string $standard The standard to use for the test. - * @param string $exceptionMessage The contents of the expected exception message. - * - * @dataProvider dataExceptionIsThrownOnIncorrectlyImplementedInterface - * - * @return void - */ - public function testExceptionIsThrownOnIncorrectlyImplementedInterface($standard, $exceptionMessage) - { - $this->expectRuntimeExceptionMessage($exceptionMessage); - - // Set up the ruleset. - $standard = __DIR__.'/'.$standard; - $config = new ConfigDouble(["--standard=$standard"]); - $ruleset = new Ruleset($config); - - $ruleset->showSniffDeprecations(); - - }//end testExceptionIsThrownOnIncorrectlyImplementedInterface() - - - /** - * Data provider. - * - * @see testExceptionIsThrownOnIncorrectlyImplementedInterface() - * - * @return array> - */ - public static function dataExceptionIsThrownOnIncorrectlyImplementedInterface() - { - return [ - 'getDeprecationVersion() does not return a string' => [ - 'standard' => 'ShowSniffDeprecationsInvalidDeprecationVersionTest.xml', - 'exceptionMessage' => 'The Fixtures\TestStandard\Sniffs\DeprecatedInvalid\InvalidDeprecationVersionSniff::getDeprecationVersion() method must return a non-empty string, received double', - ], - 'getRemovalVersion() does not return a string' => [ - 'standard' => 'ShowSniffDeprecationsInvalidRemovalVersionTest.xml', - 'exceptionMessage' => 'The Fixtures\TestStandard\Sniffs\DeprecatedInvalid\InvalidRemovalVersionSniff::getRemovalVersion() method must return a non-empty string, received array', - ], - 'getDeprecationMessage() does not return a string' => [ - 'standard' => 'ShowSniffDeprecationsInvalidDeprecationMessageTest.xml', - 'exceptionMessage' => 'The Fixtures\TestStandard\Sniffs\DeprecatedInvalid\InvalidDeprecationMessageSniff::getDeprecationMessage() method must return a string, received object', - ], - 'getDeprecationVersion() returns an empty string' => [ - 'standard' => 'ShowSniffDeprecationsEmptyDeprecationVersionTest.xml', - 'exceptionMessage' => 'The Fixtures\TestStandard\Sniffs\DeprecatedInvalid\EmptyDeprecationVersionSniff::getDeprecationVersion() method must return a non-empty string, received ""', - ], - 'getRemovalVersion() returns an empty string' => [ - 'standard' => 'ShowSniffDeprecationsEmptyRemovalVersionTest.xml', - 'exceptionMessage' => 'The Fixtures\TestStandard\Sniffs\DeprecatedInvalid\EmptyRemovalVersionSniff::getRemovalVersion() method must return a non-empty string, received ""', - ], - ]; - - }//end dataExceptionIsThrownOnIncorrectlyImplementedInterface() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/ShowSniffDeprecationsTest.xml b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/ShowSniffDeprecationsTest.xml deleted file mode 100644 index 38c7e022..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/ShowSniffDeprecationsTest.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/FileList.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/FileList.php deleted file mode 100644 index ac3c944f..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/FileList.php +++ /dev/null @@ -1,98 +0,0 @@ - - * @copyright 2019 Juliette Reinders Folmer. All rights reserved. - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Tests; - -use RecursiveDirectoryIterator; -use RecursiveIteratorIterator; -use RegexIterator; - -class FileList -{ - - /** - * The path to the project root directory. - * - * @var string - */ - protected $rootPath; - - /** - * Recursive directory iterator. - * - * @var \DirectoryIterator - */ - public $fileIterator; - - /** - * Base regex to use if no filter regex is provided. - * - * Matches based on: - * - File path starts with the project root (replacement done in constructor). - * - Don't match .git/ files. - * - Don't match dot files, i.e. "." or "..". - * - Don't match backup files. - * - Match everything else in a case-insensitive manner. - * - * @var string - */ - private $baseRegex = '`^%s(?!\.git/)(?!(.*/)?\.+$)(?!.*\.(bak|orig)).*$`Dix'; - - - /** - * Constructor. - * - * @param string $directory The directory to examine. - * @param string $rootPath Path to the project root. - * @param string $filter PCRE regular expression to filter the file list with. - */ - public function __construct($directory, $rootPath='', $filter='') - { - $this->rootPath = $rootPath; - - $directory = new RecursiveDirectoryIterator( - $directory, - RecursiveDirectoryIterator::UNIX_PATHS - ); - $flattened = new RecursiveIteratorIterator( - $directory, - RecursiveIteratorIterator::LEAVES_ONLY, - RecursiveIteratorIterator::CATCH_GET_CHILD - ); - - if ($filter === '') { - $filter = sprintf($this->baseRegex, preg_quote($this->rootPath)); - } - - $this->fileIterator = new RegexIterator($flattened, $filter); - - return $this; - - }//end __construct() - - - /** - * Retrieve the filtered file list as an array. - * - * @return array - */ - public function getList() - { - $fileList = []; - - foreach ($this->fileIterator as $file) { - $fileList[] = str_replace($this->rootPath, '', $file); - } - - return $fileList; - - }//end getList() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Standards/AbstractSniffUnitTest.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Standards/AbstractSniffUnitTest.php deleted file mode 100644 index ccd90c51..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Standards/AbstractSniffUnitTest.php +++ /dev/null @@ -1,468 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Tests\Standards; - -use DirectoryIterator; -use PHP_CodeSniffer\Exceptions\RuntimeException; -use PHP_CodeSniffer\Files\LocalFile; -use PHP_CodeSniffer\Ruleset; -use PHP_CodeSniffer\Tests\ConfigDouble; -use PHP_CodeSniffer\Util\Common; -use PHPUnit\Framework\TestCase; - -abstract class AbstractSniffUnitTest extends TestCase -{ - - /** - * Enable or disable the backup and restoration of the $GLOBALS array. - * Overwrite this attribute in a child class of TestCase. - * Setting this attribute in setUp() has no effect! - * - * @var boolean - */ - protected $backupGlobals = false; - - /** - * The path to the standard's main directory. - * - * @var string - */ - public $standardsDir = null; - - /** - * The path to the standard's test directory. - * - * @var string - */ - public $testsDir = null; - - - /** - * Sets up this unit test. - * - * @before - * - * @return void - */ - protected function setUpPrerequisites() - { - $class = get_class($this); - $this->standardsDir = $GLOBALS['PHP_CODESNIFFER_STANDARD_DIRS'][$class]; - $this->testsDir = $GLOBALS['PHP_CODESNIFFER_TEST_DIRS'][$class]; - - }//end setUpPrerequisites() - - - /** - * Get a list of all test files to check. - * - * These will have the same base as the sniff name but different extensions. - * We ignore the .php file as it is the class. - * - * @param string $testFileBase The base path that the unit tests files will have. - * - * @return string[] - */ - protected function getTestFiles($testFileBase) - { - $testFiles = []; - - $dir = substr($testFileBase, 0, strrpos($testFileBase, DIRECTORY_SEPARATOR)); - $di = new DirectoryIterator($dir); - - foreach ($di as $file) { - $path = $file->getPathname(); - if (substr($path, 0, strlen($testFileBase)) === $testFileBase) { - if ($path !== $testFileBase.'php' && substr($path, -5) !== 'fixed' && substr($path, -4) !== '.bak') { - $testFiles[] = $path; - } - } - } - - // Put them in order. - sort($testFiles, SORT_NATURAL); - - return $testFiles; - - }//end getTestFiles() - - - /** - * Should this test be skipped for some reason. - * - * @return boolean - */ - protected function shouldSkipTest() - { - return false; - - }//end shouldSkipTest() - - - /** - * Tests the extending classes Sniff class. - * - * @return void - * @throws \PHPUnit\Framework\Exception - */ - final public function testSniff() - { - // Skip this test if we can't run in this environment. - if ($this->shouldSkipTest() === true) { - $this->markTestSkipped(); - } - - $sniffCode = Common::getSniffCode(get_class($this)); - list($standardName, $categoryName, $sniffName) = explode('.', $sniffCode); - - $testFileBase = $this->testsDir.$categoryName.DIRECTORY_SEPARATOR.$sniffName.'UnitTest.'; - - // Get a list of all test files to check. - $testFiles = $this->getTestFiles($testFileBase); - $GLOBALS['PHP_CODESNIFFER_SNIFF_CASE_FILES'][] = $testFiles; - - if (isset($GLOBALS['PHP_CODESNIFFER_CONFIG']) === true) { - $config = $GLOBALS['PHP_CODESNIFFER_CONFIG']; - } else { - $config = new ConfigDouble(); - $config->cache = false; - $GLOBALS['PHP_CODESNIFFER_CONFIG'] = $config; - } - - $config->standards = [$standardName]; - $config->sniffs = [$sniffCode]; - $config->ignored = []; - - if (isset($GLOBALS['PHP_CODESNIFFER_RULESETS']) === false) { - $GLOBALS['PHP_CODESNIFFER_RULESETS'] = []; - } - - if (isset($GLOBALS['PHP_CODESNIFFER_RULESETS'][$standardName]) === false) { - $ruleset = new Ruleset($config); - $GLOBALS['PHP_CODESNIFFER_RULESETS'][$standardName] = $ruleset; - } - - $ruleset = $GLOBALS['PHP_CODESNIFFER_RULESETS'][$standardName]; - - $sniffFile = $this->standardsDir.DIRECTORY_SEPARATOR.'Sniffs'.DIRECTORY_SEPARATOR.$categoryName.DIRECTORY_SEPARATOR.$sniffName.'Sniff.php'; - - $sniffClassName = substr(get_class($this), 0, -8).'Sniff'; - $sniffClassName = str_replace('\Tests\\', '\Sniffs\\', $sniffClassName); - $sniffClassName = Common::cleanSniffClass($sniffClassName); - - $restrictions = [strtolower($sniffClassName) => true]; - $ruleset->registerSniffs([$sniffFile], $restrictions, []); - $ruleset->populateTokenListeners(); - - $failureMessages = []; - foreach ($testFiles as $testFile) { - $filename = basename($testFile); - $oldConfig = $config->getSettings(); - - try { - $this->setCliValues($filename, $config); - $phpcsFile = new LocalFile($testFile, $ruleset, $config); - $phpcsFile->process(); - } catch (RuntimeException $e) { - $this->fail('An unexpected exception has been caught: '.$e->getMessage()); - } - - $failures = $this->generateFailureMessages($phpcsFile); - $failureMessages = array_merge($failureMessages, $failures); - - if ($phpcsFile->getFixableCount() > 0) { - // Attempt to fix the errors. - $phpcsFile->fixer->fixFile(); - $fixable = $phpcsFile->getFixableCount(); - if ($fixable > 0) { - $failureMessages[] = "Failed to fix $fixable fixable violations in $filename"; - } - - // Check for a .fixed file to check for accuracy of fixes. - $fixedFile = $testFile.'.fixed'; - $filename = basename($testFile); - if (file_exists($fixedFile) === true) { - if ($phpcsFile->fixer->getContents() !== file_get_contents($fixedFile)) { - // Only generate the (expensive) diff if a difference is expected. - $diff = $phpcsFile->fixer->generateDiff($fixedFile); - if (trim($diff) !== '') { - $fixedFilename = basename($fixedFile); - $failureMessages[] = "Fixed version of $filename does not match expected version in $fixedFilename; the diff is\n$diff"; - } - } - } else if (is_callable([$this, 'addWarning']) === true) { - $this->addWarning("Missing fixed version of $filename to verify the accuracy of fixes, while the sniff is making fixes against the test case file"); - } - }//end if - - // Restore the config. - $config->setSettings($oldConfig); - }//end foreach - - if (empty($failureMessages) === false) { - $this->fail(implode(PHP_EOL, $failureMessages)); - } - - }//end testSniff() - - - /** - * Generate a list of test failures for a given sniffed file. - * - * @param \PHP_CodeSniffer\Files\LocalFile $file The file being tested. - * - * @return array - * @throws \PHP_CodeSniffer\Exceptions\RuntimeException - */ - public function generateFailureMessages(LocalFile $file) - { - $testFile = $file->getFilename(); - - $foundErrors = $file->getErrors(); - $foundWarnings = $file->getWarnings(); - $expectedErrors = $this->getErrorList(basename($testFile)); - $expectedWarnings = $this->getWarningList(basename($testFile)); - - if (is_array($expectedErrors) === false) { - throw new RuntimeException('getErrorList() must return an array'); - } - - if (is_array($expectedWarnings) === false) { - throw new RuntimeException('getWarningList() must return an array'); - } - - /* - We merge errors and warnings together to make it easier - to iterate over them and produce the errors string. In this way, - we can report on errors and warnings in the same line even though - it's not really structured to allow that. - */ - - $allProblems = []; - $failureMessages = []; - - foreach ($foundErrors as $line => $lineErrors) { - foreach ($lineErrors as $column => $errors) { - if (isset($allProblems[$line]) === false) { - $allProblems[$line] = [ - 'expected_errors' => 0, - 'expected_warnings' => 0, - 'found_errors' => [], - 'found_warnings' => [], - ]; - } - - $foundErrorsTemp = []; - foreach ($allProblems[$line]['found_errors'] as $foundError) { - $foundErrorsTemp[] = $foundError; - } - - $errorsTemp = []; - foreach ($errors as $foundError) { - $errorsTemp[] = $foundError['message'].' ('.$foundError['source'].')'; - - $source = $foundError['source']; - if (in_array($source, $GLOBALS['PHP_CODESNIFFER_SNIFF_CODES'], true) === false) { - $GLOBALS['PHP_CODESNIFFER_SNIFF_CODES'][] = $source; - } - - if ($foundError['fixable'] === true - && in_array($source, $GLOBALS['PHP_CODESNIFFER_FIXABLE_CODES'], true) === false - ) { - $GLOBALS['PHP_CODESNIFFER_FIXABLE_CODES'][] = $source; - } - } - - $allProblems[$line]['found_errors'] = array_merge($foundErrorsTemp, $errorsTemp); - }//end foreach - - if (isset($expectedErrors[$line]) === true) { - $allProblems[$line]['expected_errors'] = $expectedErrors[$line]; - } else { - $allProblems[$line]['expected_errors'] = 0; - } - - unset($expectedErrors[$line]); - }//end foreach - - foreach ($expectedErrors as $line => $numErrors) { - if (isset($allProblems[$line]) === false) { - $allProblems[$line] = [ - 'expected_errors' => 0, - 'expected_warnings' => 0, - 'found_errors' => [], - 'found_warnings' => [], - ]; - } - - $allProblems[$line]['expected_errors'] = $numErrors; - } - - foreach ($foundWarnings as $line => $lineWarnings) { - foreach ($lineWarnings as $column => $warnings) { - if (isset($allProblems[$line]) === false) { - $allProblems[$line] = [ - 'expected_errors' => 0, - 'expected_warnings' => 0, - 'found_errors' => [], - 'found_warnings' => [], - ]; - } - - $foundWarningsTemp = []; - foreach ($allProblems[$line]['found_warnings'] as $foundWarning) { - $foundWarningsTemp[] = $foundWarning; - } - - $warningsTemp = []; - foreach ($warnings as $warning) { - $warningsTemp[] = $warning['message'].' ('.$warning['source'].')'; - - $source = $warning['source']; - if (in_array($source, $GLOBALS['PHP_CODESNIFFER_SNIFF_CODES'], true) === false) { - $GLOBALS['PHP_CODESNIFFER_SNIFF_CODES'][] = $source; - } - - if ($warning['fixable'] === true - && in_array($source, $GLOBALS['PHP_CODESNIFFER_FIXABLE_CODES'], true) === false - ) { - $GLOBALS['PHP_CODESNIFFER_FIXABLE_CODES'][] = $source; - } - } - - $allProblems[$line]['found_warnings'] = array_merge($foundWarningsTemp, $warningsTemp); - }//end foreach - - if (isset($expectedWarnings[$line]) === true) { - $allProblems[$line]['expected_warnings'] = $expectedWarnings[$line]; - } else { - $allProblems[$line]['expected_warnings'] = 0; - } - - unset($expectedWarnings[$line]); - }//end foreach - - foreach ($expectedWarnings as $line => $numWarnings) { - if (isset($allProblems[$line]) === false) { - $allProblems[$line] = [ - 'expected_errors' => 0, - 'expected_warnings' => 0, - 'found_errors' => [], - 'found_warnings' => [], - ]; - } - - $allProblems[$line]['expected_warnings'] = $numWarnings; - } - - // Order the messages by line number. - ksort($allProblems); - - foreach ($allProblems as $line => $problems) { - $numErrors = count($problems['found_errors']); - $numWarnings = count($problems['found_warnings']); - $expectedErrors = $problems['expected_errors']; - $expectedWarnings = $problems['expected_warnings']; - - $errors = ''; - $foundString = ''; - - if ($expectedErrors !== $numErrors || $expectedWarnings !== $numWarnings) { - $lineMessage = "[LINE $line]"; - $expectedMessage = 'Expected '; - $foundMessage = 'in '.basename($testFile).' but found '; - - if ($expectedErrors !== $numErrors) { - $expectedMessage .= "$expectedErrors error(s)"; - $foundMessage .= "$numErrors error(s)"; - if ($numErrors !== 0) { - $foundString .= 'error(s)'; - $errors .= implode(PHP_EOL.' -> ', $problems['found_errors']); - } - - if ($expectedWarnings !== $numWarnings) { - $expectedMessage .= ' and '; - $foundMessage .= ' and '; - if ($numWarnings !== 0) { - if ($foundString !== '') { - $foundString .= ' and '; - } - } - } - } - - if ($expectedWarnings !== $numWarnings) { - $expectedMessage .= "$expectedWarnings warning(s)"; - $foundMessage .= "$numWarnings warning(s)"; - if ($numWarnings !== 0) { - $foundString .= 'warning(s)'; - if (empty($errors) === false) { - $errors .= PHP_EOL.' -> '; - } - - $errors .= implode(PHP_EOL.' -> ', $problems['found_warnings']); - } - } - - $fullMessage = "$lineMessage $expectedMessage $foundMessage."; - if ($errors !== '') { - $fullMessage .= " The $foundString found were:".PHP_EOL." -> $errors"; - } - - $failureMessages[] = $fullMessage; - }//end if - }//end foreach - - return $failureMessages; - - }//end generateFailureMessages() - - - /** - * Get a list of CLI values to set before the file is tested. - * - * @param string $filename The name of the file being tested. - * @param \PHP_CodeSniffer\Config $config The config data for the run. - * - * @return void - */ - public function setCliValues($filename, $config) - { - - }//end setCliValues() - - - /** - * Returns the lines where errors should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of errors that should occur on that line. - * - * @return array - */ - abstract protected function getErrorList(); - - - /** - * Returns the lines where warnings should occur. - * - * The key of the array should represent the line number and the value - * should represent the number of warnings that should occur on that line. - * - * @return array - */ - abstract protected function getWarningList(); - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Standards/AllSniffs.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Standards/AllSniffs.php deleted file mode 100644 index 1e273e28..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/Standards/AllSniffs.php +++ /dev/null @@ -1,114 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Tests\Standards; - -use PHP_CodeSniffer\Autoload; -use PHP_CodeSniffer\Util\Standards; -use PHPUnit\Framework\TestSuite; -use PHPUnit\TextUI\TestRunner; -use RecursiveDirectoryIterator; -use RecursiveIteratorIterator; - -class AllSniffs -{ - - - /** - * Prepare the test runner. - * - * @return void - */ - public static function main() - { - TestRunner::run(self::suite()); - - }//end main() - - - /** - * Add all sniff unit tests into a test suite. - * - * Sniff unit tests are found by recursing through the 'Tests' directory - * of each installed coding standard. - * - * @return \PHPUnit\Framework\TestSuite - */ - public static function suite() - { - $GLOBALS['PHP_CODESNIFFER_SNIFF_CODES'] = []; - $GLOBALS['PHP_CODESNIFFER_FIXABLE_CODES'] = []; - $GLOBALS['PHP_CODESNIFFER_SNIFF_CASE_FILES'] = []; - - $suite = new TestSuite('PHP CodeSniffer Standards'); - - // Optionally allow for ignoring the tests for one or more standards. - $ignoreTestsForStandards = getenv('PHPCS_IGNORE_TESTS'); - if ($ignoreTestsForStandards === false) { - $ignoreTestsForStandards = []; - } else { - $ignoreTestsForStandards = explode(',', $ignoreTestsForStandards); - } - - $installedStandards = self::getInstalledStandardDetails(); - - foreach ($installedStandards as $standard => $details) { - Autoload::addSearchPath($details['path'], $details['namespace']); - - if (in_array($standard, $ignoreTestsForStandards, true) === true) { - continue; - } - - $testsDir = $details['path'].DIRECTORY_SEPARATOR.'Tests'.DIRECTORY_SEPARATOR; - if (is_dir($testsDir) === false) { - // No tests for this standard. - continue; - } - - $di = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($testsDir)); - - foreach ($di as $file) { - // Skip hidden files. - if (substr($file->getFilename(), 0, 1) === '.') { - continue; - } - - // Tests must have the extension 'php'. - $parts = explode('.', $file); - $ext = array_pop($parts); - if ($ext !== 'php') { - continue; - } - - $className = Autoload::loadFile($file->getPathname()); - $GLOBALS['PHP_CODESNIFFER_STANDARD_DIRS'][$className] = $details['path']; - $GLOBALS['PHP_CODESNIFFER_TEST_DIRS'][$className] = $testsDir; - $suite->addTestSuite($className); - } - }//end foreach - - return $suite; - - }//end suite() - - - /** - * Get the details of all coding standards installed. - * - * @return array - * @see Standards::getInstalledStandardDetails() - */ - protected static function getInstalledStandardDetails() - { - return Standards::getInstalledStandardDetails(true); - - }//end getInstalledStandardDetails() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/TestSuite.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/TestSuite.php deleted file mode 100644 index 4598a856..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/TestSuite.php +++ /dev/null @@ -1,35 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Tests; - -use PHPUnit\Framework\TestResult; -use PHPUnit\Framework\TestSuite as PHPUnit_TestSuite; - -class TestSuite extends PHPUnit_TestSuite -{ - - - /** - * Runs the tests and collects their result in a TestResult. - * - * @param \PHPUnit\Framework\TestResult $result A test result. - * - * @return \PHPUnit\Framework\TestResult - */ - public function run(TestResult $result=null) - { - $result = parent::run($result); - printPHPCodeSnifferTestOutput(); - return $result; - - }//end run() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/TestSuite7.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/TestSuite7.php deleted file mode 100644 index ad0947c5..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/TestSuite7.php +++ /dev/null @@ -1,35 +0,0 @@ - - * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -namespace PHP_CodeSniffer\Tests; - -use PHPUnit\Framework\TestResult; -use PHPUnit\Framework\TestSuite as PHPUnit_TestSuite; - -class TestSuite extends PHPUnit_TestSuite -{ - - - /** - * Runs the tests and collects their result in a TestResult. - * - * @param \PHPUnit\Framework\TestResult|null $result A test result. - * - * @return \PHPUnit\Framework\TestResult - */ - public function run(?TestResult $result=null): TestResult - { - $result = parent::run($result); - printPHPCodeSnifferTestOutput(); - return $result; - - }//end run() - - -}//end class diff --git a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/bootstrap.php b/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/bootstrap.php deleted file mode 100644 index e8ebdbbd..00000000 --- a/docker/streamline-src/vendor/squizlabs/php_codesniffer/tests/bootstrap.php +++ /dev/null @@ -1,99 +0,0 @@ - - * @copyright 2006-2017 Squiz Pty Ltd (ABN 77 084 670 600) - * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence - */ - -if (defined('PHP_CODESNIFFER_IN_TESTS') === false) { - define('PHP_CODESNIFFER_IN_TESTS', true); -} - -/* - * Determine whether the test suite should be run in CBF mode. - * - * Use `` in a `phpunit.xml` file - * or set the ENV variable at an OS-level to enable CBF mode. - * - * To run the CBF specific tests, use the following command: - * vendor/bin/phpunit --group CBF --exclude-group nothing - * - * If the ENV variable has not been set, or is set to "false", the tests will run in CS mode. - */ - -if (defined('PHP_CODESNIFFER_CBF') === false) { - $cbfMode = getenv('PHP_CODESNIFFER_CBF'); - if ($cbfMode === '1') { - define('PHP_CODESNIFFER_CBF', true); - echo 'Note: Tests are running in "CBF" mode'.PHP_EOL.PHP_EOL; - } else { - define('PHP_CODESNIFFER_CBF', false); - echo 'Note: Tests are running in "CS" mode'.PHP_EOL.PHP_EOL; - } -} - -if (defined('PHP_CODESNIFFER_VERBOSITY') === false) { - define('PHP_CODESNIFFER_VERBOSITY', 0); -} - -require_once __DIR__.'/../autoload.php'; - -$tokens = new \PHP_CodeSniffer\Util\Tokens(); - -// Compatibility for PHPUnit < 6 and PHPUnit 6+. -if (class_exists('PHPUnit_Framework_TestSuite') === true && class_exists('PHPUnit\Framework\TestSuite') === false) { - class_alias('PHPUnit_Framework_TestSuite', 'PHPUnit'.'\Framework\TestSuite'); -} - -if (class_exists('PHPUnit_Framework_TestCase') === true && class_exists('PHPUnit\Framework\TestCase') === false) { - class_alias('PHPUnit_Framework_TestCase', 'PHPUnit'.'\Framework\TestCase'); -} - -if (class_exists('PHPUnit_TextUI_TestRunner') === true && class_exists('PHPUnit\TextUI\TestRunner') === false) { - class_alias('PHPUnit_TextUI_TestRunner', 'PHPUnit'.'\TextUI\TestRunner'); -} - -if (class_exists('PHPUnit_Framework_TestResult') === true && class_exists('PHPUnit\Framework\TestResult') === false) { - class_alias('PHPUnit_Framework_TestResult', 'PHPUnit'.'\Framework\TestResult'); -} - - -/** - * A global util function to help print unit test fixing data. - * - * @return void - */ -function printPHPCodeSnifferTestOutput() -{ - echo PHP_EOL.PHP_EOL; - - $output = 'The test files'; - $data = []; - - $codeCount = count($GLOBALS['PHP_CODESNIFFER_SNIFF_CODES']); - if (empty($GLOBALS['PHP_CODESNIFFER_SNIFF_CASE_FILES']) === false) { - $files = call_user_func_array('array_merge', $GLOBALS['PHP_CODESNIFFER_SNIFF_CASE_FILES']); - $files = array_unique($files); - $fileCount = count($files); - - $output = '%d sniff test files'; - $data[] = $fileCount; - } - - $output .= ' generated %d unique error codes'; - $data[] = $codeCount; - - if ($codeCount > 0) { - $fixes = count($GLOBALS['PHP_CODESNIFFER_FIXABLE_CODES']); - $percent = round(($fixes / $codeCount * 100), 2); - - $output .= '; %d were fixable (%d%%)'; - $data[] = $fixes; - $data[] = $percent; - } - - vprintf($output, $data); - -}//end printPHPCodeSnifferTestOutput() diff --git a/docker/streamline-src/vendor/symfony/console/Application.php b/docker/streamline-src/vendor/symfony/console/Application.php deleted file mode 100644 index dc710e8c..00000000 --- a/docker/streamline-src/vendor/symfony/console/Application.php +++ /dev/null @@ -1,1331 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console; - -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Command\CompleteCommand; -use Symfony\Component\Console\Command\DumpCompletionCommand; -use Symfony\Component\Console\Command\HelpCommand; -use Symfony\Component\Console\Command\LazyCommand; -use Symfony\Component\Console\Command\ListCommand; -use Symfony\Component\Console\Command\SignalableCommandInterface; -use Symfony\Component\Console\CommandLoader\CommandLoaderInterface; -use Symfony\Component\Console\Completion\CompletionInput; -use Symfony\Component\Console\Completion\CompletionSuggestions; -use Symfony\Component\Console\Completion\Suggestion; -use Symfony\Component\Console\Event\ConsoleCommandEvent; -use Symfony\Component\Console\Event\ConsoleErrorEvent; -use Symfony\Component\Console\Event\ConsoleSignalEvent; -use Symfony\Component\Console\Event\ConsoleTerminateEvent; -use Symfony\Component\Console\Exception\CommandNotFoundException; -use Symfony\Component\Console\Exception\ExceptionInterface; -use Symfony\Component\Console\Exception\LogicException; -use Symfony\Component\Console\Exception\NamespaceNotFoundException; -use Symfony\Component\Console\Exception\RuntimeException; -use Symfony\Component\Console\Formatter\OutputFormatter; -use Symfony\Component\Console\Helper\DebugFormatterHelper; -use Symfony\Component\Console\Helper\DescriptorHelper; -use Symfony\Component\Console\Helper\FormatterHelper; -use Symfony\Component\Console\Helper\Helper; -use Symfony\Component\Console\Helper\HelperSet; -use Symfony\Component\Console\Helper\ProcessHelper; -use Symfony\Component\Console\Helper\QuestionHelper; -use Symfony\Component\Console\Input\ArgvInput; -use Symfony\Component\Console\Input\ArrayInput; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputAwareInterface; -use Symfony\Component\Console\Input\InputDefinition; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\ConsoleOutput; -use Symfony\Component\Console\Output\ConsoleOutputInterface; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Console\SignalRegistry\SignalRegistry; -use Symfony\Component\Console\Style\SymfonyStyle; -use Symfony\Component\ErrorHandler\ErrorHandler; -use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; -use Symfony\Contracts\Service\ResetInterface; - -/** - * An Application is the container for a collection of commands. - * - * It is the main entry point of a Console application. - * - * This class is optimized for a standard CLI environment. - * - * Usage: - * - * $app = new Application('myapp', '1.0 (stable)'); - * $app->add(new SimpleCommand()); - * $app->run(); - * - * @author Fabien Potencier - */ -class Application implements ResetInterface -{ - private array $commands = []; - private bool $wantHelps = false; - private ?Command $runningCommand = null; - private string $name; - private string $version; - private ?CommandLoaderInterface $commandLoader = null; - private bool $catchExceptions = true; - private bool $catchErrors = false; - private bool $autoExit = true; - private InputDefinition $definition; - private HelperSet $helperSet; - private ?EventDispatcherInterface $dispatcher = null; - private Terminal $terminal; - private string $defaultCommand; - private bool $singleCommand = false; - private bool $initialized = false; - private ?SignalRegistry $signalRegistry = null; - private array $signalsToDispatchEvent = []; - - public function __construct(string $name = 'UNKNOWN', string $version = 'UNKNOWN') - { - $this->name = $name; - $this->version = $version; - $this->terminal = new Terminal(); - $this->defaultCommand = 'list'; - if (\defined('SIGINT') && SignalRegistry::isSupported()) { - $this->signalRegistry = new SignalRegistry(); - $this->signalsToDispatchEvent = [\SIGINT, \SIGTERM, \SIGUSR1, \SIGUSR2]; - } - } - - /** - * @final - */ - public function setDispatcher(EventDispatcherInterface $dispatcher): void - { - $this->dispatcher = $dispatcher; - } - - /** - * @return void - */ - public function setCommandLoader(CommandLoaderInterface $commandLoader) - { - $this->commandLoader = $commandLoader; - } - - public function getSignalRegistry(): SignalRegistry - { - if (!$this->signalRegistry) { - throw new RuntimeException('Signals are not supported. Make sure that the "pcntl" extension is installed and that "pcntl_*" functions are not disabled by your php.ini\'s "disable_functions" directive.'); - } - - return $this->signalRegistry; - } - - /** - * @return void - */ - public function setSignalsToDispatchEvent(int ...$signalsToDispatchEvent) - { - $this->signalsToDispatchEvent = $signalsToDispatchEvent; - } - - /** - * Runs the current application. - * - * @return int 0 if everything went fine, or an error code - * - * @throws \Exception When running fails. Bypass this when {@link setCatchExceptions()}. - */ - public function run(?InputInterface $input = null, ?OutputInterface $output = null): int - { - if (\function_exists('putenv')) { - @putenv('LINES='.$this->terminal->getHeight()); - @putenv('COLUMNS='.$this->terminal->getWidth()); - } - - $input ??= new ArgvInput(); - $output ??= new ConsoleOutput(); - - $renderException = function (\Throwable $e) use ($output) { - if ($output instanceof ConsoleOutputInterface) { - $this->renderThrowable($e, $output->getErrorOutput()); - } else { - $this->renderThrowable($e, $output); - } - }; - if ($phpHandler = set_exception_handler($renderException)) { - restore_exception_handler(); - if (!\is_array($phpHandler) || !$phpHandler[0] instanceof ErrorHandler) { - $errorHandler = true; - } elseif ($errorHandler = $phpHandler[0]->setExceptionHandler($renderException)) { - $phpHandler[0]->setExceptionHandler($errorHandler); - } - } - - try { - $this->configureIO($input, $output); - - $exitCode = $this->doRun($input, $output); - } catch (\Throwable $e) { - if ($e instanceof \Exception && !$this->catchExceptions) { - throw $e; - } - if (!$e instanceof \Exception && !$this->catchErrors) { - throw $e; - } - - $renderException($e); - - $exitCode = $e->getCode(); - if (is_numeric($exitCode)) { - $exitCode = (int) $exitCode; - if ($exitCode <= 0) { - $exitCode = 1; - } - } else { - $exitCode = 1; - } - } finally { - // if the exception handler changed, keep it - // otherwise, unregister $renderException - if (!$phpHandler) { - if (set_exception_handler($renderException) === $renderException) { - restore_exception_handler(); - } - restore_exception_handler(); - } elseif (!$errorHandler) { - $finalHandler = $phpHandler[0]->setExceptionHandler(null); - if ($finalHandler !== $renderException) { - $phpHandler[0]->setExceptionHandler($finalHandler); - } - } - } - - if ($this->autoExit) { - if ($exitCode > 255) { - $exitCode = 255; - } - - exit($exitCode); - } - - return $exitCode; - } - - /** - * Runs the current application. - * - * @return int 0 if everything went fine, or an error code - */ - public function doRun(InputInterface $input, OutputInterface $output) - { - if (true === $input->hasParameterOption(['--version', '-V'], true)) { - $output->writeln($this->getLongVersion()); - - return 0; - } - - try { - // Makes ArgvInput::getFirstArgument() able to distinguish an option from an argument. - $input->bind($this->getDefinition()); - } catch (ExceptionInterface) { - // Errors must be ignored, full binding/validation happens later when the command is known. - } - - $name = $this->getCommandName($input); - if (true === $input->hasParameterOption(['--help', '-h'], true)) { - if (!$name) { - $name = 'help'; - $input = new ArrayInput(['command_name' => $this->defaultCommand]); - } else { - $this->wantHelps = true; - } - } - - if (!$name) { - $name = $this->defaultCommand; - $definition = $this->getDefinition(); - $definition->setArguments(array_merge( - $definition->getArguments(), - [ - 'command' => new InputArgument('command', InputArgument::OPTIONAL, $definition->getArgument('command')->getDescription(), $name), - ] - )); - } - - try { - $this->runningCommand = null; - // the command name MUST be the first element of the input - $command = $this->find($name); - } catch (\Throwable $e) { - if (($e instanceof CommandNotFoundException && !$e instanceof NamespaceNotFoundException) && 1 === \count($alternatives = $e->getAlternatives()) && $input->isInteractive()) { - $alternative = $alternatives[0]; - - $style = new SymfonyStyle($input, $output); - $output->writeln(''); - $formattedBlock = (new FormatterHelper())->formatBlock(sprintf('Command "%s" is not defined.', $name), 'error', true); - $output->writeln($formattedBlock); - if (!$style->confirm(sprintf('Do you want to run "%s" instead? ', $alternative), false)) { - if (null !== $this->dispatcher) { - $event = new ConsoleErrorEvent($input, $output, $e); - $this->dispatcher->dispatch($event, ConsoleEvents::ERROR); - - return $event->getExitCode(); - } - - return 1; - } - - $command = $this->find($alternative); - } else { - if (null !== $this->dispatcher) { - $event = new ConsoleErrorEvent($input, $output, $e); - $this->dispatcher->dispatch($event, ConsoleEvents::ERROR); - - if (0 === $event->getExitCode()) { - return 0; - } - - $e = $event->getError(); - } - - try { - if ($e instanceof CommandNotFoundException && $namespace = $this->findNamespace($name)) { - $helper = new DescriptorHelper(); - $helper->describe($output instanceof ConsoleOutputInterface ? $output->getErrorOutput() : $output, $this, [ - 'format' => 'txt', - 'raw_text' => false, - 'namespace' => $namespace, - 'short' => false, - ]); - - return isset($event) ? $event->getExitCode() : 1; - } - - throw $e; - } catch (NamespaceNotFoundException) { - throw $e; - } - } - } - - if ($command instanceof LazyCommand) { - $command = $command->getCommand(); - } - - $this->runningCommand = $command; - $exitCode = $this->doRunCommand($command, $input, $output); - $this->runningCommand = null; - - return $exitCode; - } - - /** - * @return void - */ - public function reset() - { - } - - /** - * @return void - */ - public function setHelperSet(HelperSet $helperSet) - { - $this->helperSet = $helperSet; - } - - /** - * Get the helper set associated with the command. - */ - public function getHelperSet(): HelperSet - { - return $this->helperSet ??= $this->getDefaultHelperSet(); - } - - /** - * @return void - */ - public function setDefinition(InputDefinition $definition) - { - $this->definition = $definition; - } - - /** - * Gets the InputDefinition related to this Application. - */ - public function getDefinition(): InputDefinition - { - $this->definition ??= $this->getDefaultInputDefinition(); - - if ($this->singleCommand) { - $inputDefinition = $this->definition; - $inputDefinition->setArguments(); - - return $inputDefinition; - } - - return $this->definition; - } - - /** - * Adds suggestions to $suggestions for the current completion input (e.g. option or argument). - */ - public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void - { - if ( - CompletionInput::TYPE_ARGUMENT_VALUE === $input->getCompletionType() - && 'command' === $input->getCompletionName() - ) { - foreach ($this->all() as $name => $command) { - // skip hidden commands and aliased commands as they already get added below - if ($command->isHidden() || $command->getName() !== $name) { - continue; - } - $suggestions->suggestValue(new Suggestion($command->getName(), $command->getDescription())); - foreach ($command->getAliases() as $name) { - $suggestions->suggestValue(new Suggestion($name, $command->getDescription())); - } - } - - return; - } - - if (CompletionInput::TYPE_OPTION_NAME === $input->getCompletionType()) { - $suggestions->suggestOptions($this->getDefinition()->getOptions()); - - return; - } - } - - /** - * Gets the help message. - */ - public function getHelp(): string - { - return $this->getLongVersion(); - } - - /** - * Gets whether to catch exceptions or not during commands execution. - */ - public function areExceptionsCaught(): bool - { - return $this->catchExceptions; - } - - /** - * Sets whether to catch exceptions or not during commands execution. - * - * @return void - */ - public function setCatchExceptions(bool $boolean) - { - $this->catchExceptions = $boolean; - } - - /** - * Sets whether to catch errors or not during commands execution. - */ - public function setCatchErrors(bool $catchErrors = true): void - { - $this->catchErrors = $catchErrors; - } - - /** - * Gets whether to automatically exit after a command execution or not. - */ - public function isAutoExitEnabled(): bool - { - return $this->autoExit; - } - - /** - * Sets whether to automatically exit after a command execution or not. - * - * @return void - */ - public function setAutoExit(bool $boolean) - { - $this->autoExit = $boolean; - } - - /** - * Gets the name of the application. - */ - public function getName(): string - { - return $this->name; - } - - /** - * Sets the application name. - * - * @return void - */ - public function setName(string $name) - { - $this->name = $name; - } - - /** - * Gets the application version. - */ - public function getVersion(): string - { - return $this->version; - } - - /** - * Sets the application version. - * - * @return void - */ - public function setVersion(string $version) - { - $this->version = $version; - } - - /** - * Returns the long version of the application. - * - * @return string - */ - public function getLongVersion() - { - if ('UNKNOWN' !== $this->getName()) { - if ('UNKNOWN' !== $this->getVersion()) { - return sprintf('%s %s', $this->getName(), $this->getVersion()); - } - - return $this->getName(); - } - - return 'Console Tool'; - } - - /** - * Registers a new command. - */ - public function register(string $name): Command - { - return $this->add(new Command($name)); - } - - /** - * Adds an array of command objects. - * - * If a Command is not enabled it will not be added. - * - * @param Command[] $commands An array of commands - * - * @return void - */ - public function addCommands(array $commands) - { - foreach ($commands as $command) { - $this->add($command); - } - } - - /** - * Adds a command object. - * - * If a command with the same name already exists, it will be overridden. - * If the command is not enabled it will not be added. - * - * @return Command|null - */ - public function add(Command $command) - { - $this->init(); - - $command->setApplication($this); - - if (!$command->isEnabled()) { - $command->setApplication(null); - - return null; - } - - if (!$command instanceof LazyCommand) { - // Will throw if the command is not correctly initialized. - $command->getDefinition(); - } - - if (!$command->getName()) { - throw new LogicException(sprintf('The command defined in "%s" cannot have an empty name.', get_debug_type($command))); - } - - $this->commands[$command->getName()] = $command; - - foreach ($command->getAliases() as $alias) { - $this->commands[$alias] = $command; - } - - return $command; - } - - /** - * Returns a registered command by name or alias. - * - * @return Command - * - * @throws CommandNotFoundException When given command name does not exist - */ - public function get(string $name) - { - $this->init(); - - if (!$this->has($name)) { - throw new CommandNotFoundException(sprintf('The command "%s" does not exist.', $name)); - } - - // When the command has a different name than the one used at the command loader level - if (!isset($this->commands[$name])) { - throw new CommandNotFoundException(sprintf('The "%s" command cannot be found because it is registered under multiple names. Make sure you don\'t set a different name via constructor or "setName()".', $name)); - } - - $command = $this->commands[$name]; - - if ($this->wantHelps) { - $this->wantHelps = false; - - $helpCommand = $this->get('help'); - $helpCommand->setCommand($command); - - return $helpCommand; - } - - return $command; - } - - /** - * Returns true if the command exists, false otherwise. - */ - public function has(string $name): bool - { - $this->init(); - - return isset($this->commands[$name]) || ($this->commandLoader?->has($name) && $this->add($this->commandLoader->get($name))); - } - - /** - * Returns an array of all unique namespaces used by currently registered commands. - * - * It does not return the global namespace which always exists. - * - * @return string[] - */ - public function getNamespaces(): array - { - $namespaces = []; - foreach ($this->all() as $command) { - if ($command->isHidden()) { - continue; - } - - $namespaces[] = $this->extractAllNamespaces($command->getName()); - - foreach ($command->getAliases() as $alias) { - $namespaces[] = $this->extractAllNamespaces($alias); - } - } - - return array_values(array_unique(array_filter(array_merge([], ...$namespaces)))); - } - - /** - * Finds a registered namespace by a name or an abbreviation. - * - * @throws NamespaceNotFoundException When namespace is incorrect or ambiguous - */ - public function findNamespace(string $namespace): string - { - $allNamespaces = $this->getNamespaces(); - $expr = implode('[^:]*:', array_map('preg_quote', explode(':', $namespace))).'[^:]*'; - $namespaces = preg_grep('{^'.$expr.'}', $allNamespaces); - - if (empty($namespaces)) { - $message = sprintf('There are no commands defined in the "%s" namespace.', $namespace); - - if ($alternatives = $this->findAlternatives($namespace, $allNamespaces)) { - if (1 == \count($alternatives)) { - $message .= "\n\nDid you mean this?\n "; - } else { - $message .= "\n\nDid you mean one of these?\n "; - } - - $message .= implode("\n ", $alternatives); - } - - throw new NamespaceNotFoundException($message, $alternatives); - } - - $exact = \in_array($namespace, $namespaces, true); - if (\count($namespaces) > 1 && !$exact) { - throw new NamespaceNotFoundException(sprintf("The namespace \"%s\" is ambiguous.\nDid you mean one of these?\n%s.", $namespace, $this->getAbbreviationSuggestions(array_values($namespaces))), array_values($namespaces)); - } - - return $exact ? $namespace : reset($namespaces); - } - - /** - * Finds a command by name or alias. - * - * Contrary to get, this command tries to find the best - * match if you give it an abbreviation of a name or alias. - * - * @return Command - * - * @throws CommandNotFoundException When command name is incorrect or ambiguous - */ - public function find(string $name) - { - $this->init(); - - $aliases = []; - - foreach ($this->commands as $command) { - foreach ($command->getAliases() as $alias) { - if (!$this->has($alias)) { - $this->commands[$alias] = $command; - } - } - } - - if ($this->has($name)) { - return $this->get($name); - } - - $allCommands = $this->commandLoader ? array_merge($this->commandLoader->getNames(), array_keys($this->commands)) : array_keys($this->commands); - $expr = implode('[^:]*:', array_map('preg_quote', explode(':', $name))).'[^:]*'; - $commands = preg_grep('{^'.$expr.'}', $allCommands); - - if (empty($commands)) { - $commands = preg_grep('{^'.$expr.'}i', $allCommands); - } - - // if no commands matched or we just matched namespaces - if (empty($commands) || \count(preg_grep('{^'.$expr.'$}i', $commands)) < 1) { - if (false !== $pos = strrpos($name, ':')) { - // check if a namespace exists and contains commands - $this->findNamespace(substr($name, 0, $pos)); - } - - $message = sprintf('Command "%s" is not defined.', $name); - - if ($alternatives = $this->findAlternatives($name, $allCommands)) { - // remove hidden commands - $alternatives = array_filter($alternatives, fn ($name) => !$this->get($name)->isHidden()); - - if (1 == \count($alternatives)) { - $message .= "\n\nDid you mean this?\n "; - } else { - $message .= "\n\nDid you mean one of these?\n "; - } - $message .= implode("\n ", $alternatives); - } - - throw new CommandNotFoundException($message, array_values($alternatives)); - } - - // filter out aliases for commands which are already on the list - if (\count($commands) > 1) { - $commandList = $this->commandLoader ? array_merge(array_flip($this->commandLoader->getNames()), $this->commands) : $this->commands; - $commands = array_unique(array_filter($commands, function ($nameOrAlias) use (&$commandList, $commands, &$aliases) { - if (!$commandList[$nameOrAlias] instanceof Command) { - $commandList[$nameOrAlias] = $this->commandLoader->get($nameOrAlias); - } - - $commandName = $commandList[$nameOrAlias]->getName(); - - $aliases[$nameOrAlias] = $commandName; - - return $commandName === $nameOrAlias || !\in_array($commandName, $commands); - })); - } - - if (\count($commands) > 1) { - $usableWidth = $this->terminal->getWidth() - 10; - $abbrevs = array_values($commands); - $maxLen = 0; - foreach ($abbrevs as $abbrev) { - $maxLen = max(Helper::width($abbrev), $maxLen); - } - $abbrevs = array_map(function ($cmd) use ($commandList, $usableWidth, $maxLen, &$commands) { - if ($commandList[$cmd]->isHidden()) { - unset($commands[array_search($cmd, $commands)]); - - return false; - } - - $abbrev = str_pad($cmd, $maxLen, ' ').' '.$commandList[$cmd]->getDescription(); - - return Helper::width($abbrev) > $usableWidth ? Helper::substr($abbrev, 0, $usableWidth - 3).'...' : $abbrev; - }, array_values($commands)); - - if (\count($commands) > 1) { - $suggestions = $this->getAbbreviationSuggestions(array_filter($abbrevs)); - - throw new CommandNotFoundException(sprintf("Command \"%s\" is ambiguous.\nDid you mean one of these?\n%s.", $name, $suggestions), array_values($commands)); - } - } - - $command = $this->get(reset($commands)); - - if ($command->isHidden()) { - throw new CommandNotFoundException(sprintf('The command "%s" does not exist.', $name)); - } - - return $command; - } - - /** - * Gets the commands (registered in the given namespace if provided). - * - * The array keys are the full names and the values the command instances. - * - * @return Command[] - */ - public function all(?string $namespace = null) - { - $this->init(); - - if (null === $namespace) { - if (!$this->commandLoader) { - return $this->commands; - } - - $commands = $this->commands; - foreach ($this->commandLoader->getNames() as $name) { - if (!isset($commands[$name]) && $this->has($name)) { - $commands[$name] = $this->get($name); - } - } - - return $commands; - } - - $commands = []; - foreach ($this->commands as $name => $command) { - if ($namespace === $this->extractNamespace($name, substr_count($namespace, ':') + 1)) { - $commands[$name] = $command; - } - } - - if ($this->commandLoader) { - foreach ($this->commandLoader->getNames() as $name) { - if (!isset($commands[$name]) && $namespace === $this->extractNamespace($name, substr_count($namespace, ':') + 1) && $this->has($name)) { - $commands[$name] = $this->get($name); - } - } - } - - return $commands; - } - - /** - * Returns an array of possible abbreviations given a set of names. - * - * @return string[][] - */ - public static function getAbbreviations(array $names): array - { - $abbrevs = []; - foreach ($names as $name) { - for ($len = \strlen($name); $len > 0; --$len) { - $abbrev = substr($name, 0, $len); - $abbrevs[$abbrev][] = $name; - } - } - - return $abbrevs; - } - - public function renderThrowable(\Throwable $e, OutputInterface $output): void - { - $output->writeln('', OutputInterface::VERBOSITY_QUIET); - - $this->doRenderThrowable($e, $output); - - if (null !== $this->runningCommand) { - $output->writeln(sprintf('%s', OutputFormatter::escape(sprintf($this->runningCommand->getSynopsis(), $this->getName()))), OutputInterface::VERBOSITY_QUIET); - $output->writeln('', OutputInterface::VERBOSITY_QUIET); - } - } - - protected function doRenderThrowable(\Throwable $e, OutputInterface $output): void - { - do { - $message = trim($e->getMessage()); - if ('' === $message || OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) { - $class = get_debug_type($e); - $title = sprintf(' [%s%s] ', $class, 0 !== ($code = $e->getCode()) ? ' ('.$code.')' : ''); - $len = Helper::width($title); - } else { - $len = 0; - } - - if (str_contains($message, "@anonymous\0")) { - $message = preg_replace_callback('/[a-zA-Z_\x7f-\xff][\\\\a-zA-Z0-9_\x7f-\xff]*+@anonymous\x00.*?\.php(?:0x?|:[0-9]++\$)?[0-9a-fA-F]++/', fn ($m) => class_exists($m[0], false) ? (get_parent_class($m[0]) ?: key(class_implements($m[0])) ?: 'class').'@anonymous' : $m[0], $message); - } - - $width = $this->terminal->getWidth() ? $this->terminal->getWidth() - 1 : \PHP_INT_MAX; - $lines = []; - foreach ('' !== $message ? preg_split('/\r?\n/', $message) : [] as $line) { - foreach ($this->splitStringByWidth($line, $width - 4) as $line) { - // pre-format lines to get the right string length - $lineLength = Helper::width($line) + 4; - $lines[] = [$line, $lineLength]; - - $len = max($lineLength, $len); - } - } - - $messages = []; - if (!$e instanceof ExceptionInterface || OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) { - $messages[] = sprintf('%s', OutputFormatter::escape(sprintf('In %s line %s:', basename($e->getFile()) ?: 'n/a', $e->getLine() ?: 'n/a'))); - } - $messages[] = $emptyLine = sprintf('%s', str_repeat(' ', $len)); - if ('' === $message || OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) { - $messages[] = sprintf('%s%s', $title, str_repeat(' ', max(0, $len - Helper::width($title)))); - } - foreach ($lines as $line) { - $messages[] = sprintf(' %s %s', OutputFormatter::escape($line[0]), str_repeat(' ', $len - $line[1])); - } - $messages[] = $emptyLine; - $messages[] = ''; - - $output->writeln($messages, OutputInterface::VERBOSITY_QUIET); - - if (OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) { - $output->writeln('Exception trace:', OutputInterface::VERBOSITY_QUIET); - - // exception related properties - $trace = $e->getTrace(); - - array_unshift($trace, [ - 'function' => '', - 'file' => $e->getFile() ?: 'n/a', - 'line' => $e->getLine() ?: 'n/a', - 'args' => [], - ]); - - for ($i = 0, $count = \count($trace); $i < $count; ++$i) { - $class = $trace[$i]['class'] ?? ''; - $type = $trace[$i]['type'] ?? ''; - $function = $trace[$i]['function'] ?? ''; - $file = $trace[$i]['file'] ?? 'n/a'; - $line = $trace[$i]['line'] ?? 'n/a'; - - $output->writeln(sprintf(' %s%s at %s:%s', $class, $function ? $type.$function.'()' : '', $file, $line), OutputInterface::VERBOSITY_QUIET); - } - - $output->writeln('', OutputInterface::VERBOSITY_QUIET); - } - } while ($e = $e->getPrevious()); - } - - /** - * Configures the input and output instances based on the user arguments and options. - * - * @return void - */ - protected function configureIO(InputInterface $input, OutputInterface $output) - { - if (true === $input->hasParameterOption(['--ansi'], true)) { - $output->setDecorated(true); - } elseif (true === $input->hasParameterOption(['--no-ansi'], true)) { - $output->setDecorated(false); - } - - if (true === $input->hasParameterOption(['--no-interaction', '-n'], true)) { - $input->setInteractive(false); - } - - switch ($shellVerbosity = (int) getenv('SHELL_VERBOSITY')) { - case -1: - $output->setVerbosity(OutputInterface::VERBOSITY_QUIET); - break; - case 1: - $output->setVerbosity(OutputInterface::VERBOSITY_VERBOSE); - break; - case 2: - $output->setVerbosity(OutputInterface::VERBOSITY_VERY_VERBOSE); - break; - case 3: - $output->setVerbosity(OutputInterface::VERBOSITY_DEBUG); - break; - default: - $shellVerbosity = 0; - break; - } - - if (true === $input->hasParameterOption(['--quiet', '-q'], true)) { - $output->setVerbosity(OutputInterface::VERBOSITY_QUIET); - $shellVerbosity = -1; - } else { - if ($input->hasParameterOption('-vvv', true) || $input->hasParameterOption('--verbose=3', true) || 3 === $input->getParameterOption('--verbose', false, true)) { - $output->setVerbosity(OutputInterface::VERBOSITY_DEBUG); - $shellVerbosity = 3; - } elseif ($input->hasParameterOption('-vv', true) || $input->hasParameterOption('--verbose=2', true) || 2 === $input->getParameterOption('--verbose', false, true)) { - $output->setVerbosity(OutputInterface::VERBOSITY_VERY_VERBOSE); - $shellVerbosity = 2; - } elseif ($input->hasParameterOption('-v', true) || $input->hasParameterOption('--verbose=1', true) || $input->hasParameterOption('--verbose', true) || $input->getParameterOption('--verbose', false, true)) { - $output->setVerbosity(OutputInterface::VERBOSITY_VERBOSE); - $shellVerbosity = 1; - } - } - - if (-1 === $shellVerbosity) { - $input->setInteractive(false); - } - - if (\function_exists('putenv')) { - @putenv('SHELL_VERBOSITY='.$shellVerbosity); - } - $_ENV['SHELL_VERBOSITY'] = $shellVerbosity; - $_SERVER['SHELL_VERBOSITY'] = $shellVerbosity; - } - - /** - * Runs the current command. - * - * If an event dispatcher has been attached to the application, - * events are also dispatched during the life-cycle of the command. - * - * @return int 0 if everything went fine, or an error code - */ - protected function doRunCommand(Command $command, InputInterface $input, OutputInterface $output) - { - foreach ($command->getHelperSet() as $helper) { - if ($helper instanceof InputAwareInterface) { - $helper->setInput($input); - } - } - - $commandSignals = $command instanceof SignalableCommandInterface ? $command->getSubscribedSignals() : []; - if ($commandSignals || $this->dispatcher && $this->signalsToDispatchEvent) { - if (!$this->signalRegistry) { - throw new RuntimeException('Unable to subscribe to signal events. Make sure that the "pcntl" extension is installed and that "pcntl_*" functions are not disabled by your php.ini\'s "disable_functions" directive.'); - } - - if (Terminal::hasSttyAvailable()) { - $sttyMode = shell_exec('stty -g'); - - foreach ([\SIGINT, \SIGTERM] as $signal) { - $this->signalRegistry->register($signal, static fn () => shell_exec('stty '.$sttyMode)); - } - } - - if ($this->dispatcher) { - // We register application signals, so that we can dispatch the event - foreach ($this->signalsToDispatchEvent as $signal) { - $event = new ConsoleSignalEvent($command, $input, $output, $signal); - - $this->signalRegistry->register($signal, function ($signal) use ($event, $command, $commandSignals) { - $this->dispatcher->dispatch($event, ConsoleEvents::SIGNAL); - $exitCode = $event->getExitCode(); - - // If the command is signalable, we call the handleSignal() method - if (\in_array($signal, $commandSignals, true)) { - $exitCode = $command->handleSignal($signal, $exitCode); - // BC layer for Symfony <= 5 - if (null === $exitCode) { - trigger_deprecation('symfony/console', '6.3', 'Not returning an exit code from "%s::handleSignal()" is deprecated, return "false" to keep the command running or "0" to exit successfully.', get_debug_type($command)); - $exitCode = 0; - } - } - - if (false !== $exitCode) { - $event = new ConsoleTerminateEvent($command, $event->getInput(), $event->getOutput(), $exitCode, $signal); - $this->dispatcher->dispatch($event, ConsoleEvents::TERMINATE); - - exit($event->getExitCode()); - } - }); - } - - // then we register command signals, but not if already handled after the dispatcher - $commandSignals = array_diff($commandSignals, $this->signalsToDispatchEvent); - } - - foreach ($commandSignals as $signal) { - $this->signalRegistry->register($signal, function (int $signal) use ($command): void { - $exitCode = $command->handleSignal($signal); - // BC layer for Symfony <= 5 - if (null === $exitCode) { - trigger_deprecation('symfony/console', '6.3', 'Not returning an exit code from "%s::handleSignal()" is deprecated, return "false" to keep the command running or "0" to exit successfully.', get_debug_type($command)); - $exitCode = 0; - } - - if (false !== $exitCode) { - exit($exitCode); - } - }); - } - } - - if (null === $this->dispatcher) { - return $command->run($input, $output); - } - - // bind before the console.command event, so the listeners have access to input options/arguments - try { - $command->mergeApplicationDefinition(); - $input->bind($command->getDefinition()); - } catch (ExceptionInterface) { - // ignore invalid options/arguments for now, to allow the event listeners to customize the InputDefinition - } - - $event = new ConsoleCommandEvent($command, $input, $output); - $e = null; - - try { - $this->dispatcher->dispatch($event, ConsoleEvents::COMMAND); - - if ($event->commandShouldRun()) { - $exitCode = $command->run($input, $output); - } else { - $exitCode = ConsoleCommandEvent::RETURN_CODE_DISABLED; - } - } catch (\Throwable $e) { - $event = new ConsoleErrorEvent($input, $output, $e, $command); - $this->dispatcher->dispatch($event, ConsoleEvents::ERROR); - $e = $event->getError(); - - if (0 === $exitCode = $event->getExitCode()) { - $e = null; - } - } - - $event = new ConsoleTerminateEvent($command, $input, $output, $exitCode); - $this->dispatcher->dispatch($event, ConsoleEvents::TERMINATE); - - if (null !== $e) { - throw $e; - } - - return $event->getExitCode(); - } - - /** - * Gets the name of the command based on input. - */ - protected function getCommandName(InputInterface $input): ?string - { - return $this->singleCommand ? $this->defaultCommand : $input->getFirstArgument(); - } - - /** - * Gets the default input definition. - */ - protected function getDefaultInputDefinition(): InputDefinition - { - return new InputDefinition([ - new InputArgument('command', InputArgument::REQUIRED, 'The command to execute'), - new InputOption('--help', '-h', InputOption::VALUE_NONE, 'Display help for the given command. When no command is given display help for the '.$this->defaultCommand.' command'), - new InputOption('--quiet', '-q', InputOption::VALUE_NONE, 'Do not output any message'), - new InputOption('--verbose', '-v|vv|vvv', InputOption::VALUE_NONE, 'Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug'), - new InputOption('--version', '-V', InputOption::VALUE_NONE, 'Display this application version'), - new InputOption('--ansi', '', InputOption::VALUE_NEGATABLE, 'Force (or disable --no-ansi) ANSI output', null), - new InputOption('--no-interaction', '-n', InputOption::VALUE_NONE, 'Do not ask any interactive question'), - ]); - } - - /** - * Gets the default commands that should always be available. - * - * @return Command[] - */ - protected function getDefaultCommands(): array - { - return [new HelpCommand(), new ListCommand(), new CompleteCommand(), new DumpCompletionCommand()]; - } - - /** - * Gets the default helper set with the helpers that should always be available. - */ - protected function getDefaultHelperSet(): HelperSet - { - return new HelperSet([ - new FormatterHelper(), - new DebugFormatterHelper(), - new ProcessHelper(), - new QuestionHelper(), - ]); - } - - /** - * Returns abbreviated suggestions in string format. - */ - private function getAbbreviationSuggestions(array $abbrevs): string - { - return ' '.implode("\n ", $abbrevs); - } - - /** - * Returns the namespace part of the command name. - * - * This method is not part of public API and should not be used directly. - */ - public function extractNamespace(string $name, ?int $limit = null): string - { - $parts = explode(':', $name, -1); - - return implode(':', null === $limit ? $parts : \array_slice($parts, 0, $limit)); - } - - /** - * Finds alternative of $name among $collection, - * if nothing is found in $collection, try in $abbrevs. - * - * @return string[] - */ - private function findAlternatives(string $name, iterable $collection): array - { - $threshold = 1e3; - $alternatives = []; - - $collectionParts = []; - foreach ($collection as $item) { - $collectionParts[$item] = explode(':', $item); - } - - foreach (explode(':', $name) as $i => $subname) { - foreach ($collectionParts as $collectionName => $parts) { - $exists = isset($alternatives[$collectionName]); - if (!isset($parts[$i]) && $exists) { - $alternatives[$collectionName] += $threshold; - continue; - } elseif (!isset($parts[$i])) { - continue; - } - - $lev = levenshtein($subname, $parts[$i]); - if ($lev <= \strlen($subname) / 3 || '' !== $subname && str_contains($parts[$i], $subname)) { - $alternatives[$collectionName] = $exists ? $alternatives[$collectionName] + $lev : $lev; - } elseif ($exists) { - $alternatives[$collectionName] += $threshold; - } - } - } - - foreach ($collection as $item) { - $lev = levenshtein($name, $item); - if ($lev <= \strlen($name) / 3 || str_contains($item, $name)) { - $alternatives[$item] = isset($alternatives[$item]) ? $alternatives[$item] - $lev : $lev; - } - } - - $alternatives = array_filter($alternatives, fn ($lev) => $lev < 2 * $threshold); - ksort($alternatives, \SORT_NATURAL | \SORT_FLAG_CASE); - - return array_keys($alternatives); - } - - /** - * Sets the default Command name. - * - * @return $this - */ - public function setDefaultCommand(string $commandName, bool $isSingleCommand = false): static - { - $this->defaultCommand = explode('|', ltrim($commandName, '|'))[0]; - - if ($isSingleCommand) { - // Ensure the command exist - $this->find($commandName); - - $this->singleCommand = true; - } - - return $this; - } - - /** - * @internal - */ - public function isSingleCommand(): bool - { - return $this->singleCommand; - } - - private function splitStringByWidth(string $string, int $width): array - { - // str_split is not suitable for multi-byte characters, we should use preg_split to get char array properly. - // additionally, array_slice() is not enough as some character has doubled width. - // we need a function to split string not by character count but by string width - if (false === $encoding = mb_detect_encoding($string, null, true)) { - return str_split($string, $width); - } - - $utf8String = mb_convert_encoding($string, 'utf8', $encoding); - $lines = []; - $line = ''; - - $offset = 0; - while (preg_match('/.{1,10000}/u', $utf8String, $m, 0, $offset)) { - $offset += \strlen($m[0]); - - foreach (preg_split('//u', $m[0]) as $char) { - // test if $char could be appended to current line - if (mb_strwidth($line.$char, 'utf8') <= $width) { - $line .= $char; - continue; - } - // if not, push current line to array and make new line - $lines[] = str_pad($line, $width); - $line = $char; - } - } - - $lines[] = \count($lines) ? str_pad($line, $width) : $line; - - mb_convert_variables($encoding, 'utf8', $lines); - - return $lines; - } - - /** - * Returns all namespaces of the command name. - * - * @return string[] - */ - private function extractAllNamespaces(string $name): array - { - // -1 as third argument is needed to skip the command short name when exploding - $parts = explode(':', $name, -1); - $namespaces = []; - - foreach ($parts as $part) { - if (\count($namespaces)) { - $namespaces[] = end($namespaces).':'.$part; - } else { - $namespaces[] = $part; - } - } - - return $namespaces; - } - - private function init(): void - { - if ($this->initialized) { - return; - } - $this->initialized = true; - - foreach ($this->getDefaultCommands() as $command) { - $this->add($command); - } - } -} diff --git a/docker/streamline-src/vendor/symfony/console/Completion/CompletionInput.php b/docker/streamline-src/vendor/symfony/console/Completion/CompletionInput.php deleted file mode 100644 index 79c2f659..00000000 --- a/docker/streamline-src/vendor/symfony/console/Completion/CompletionInput.php +++ /dev/null @@ -1,248 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Completion; - -use Symfony\Component\Console\Exception\RuntimeException; -use Symfony\Component\Console\Input\ArgvInput; -use Symfony\Component\Console\Input\InputDefinition; -use Symfony\Component\Console\Input\InputOption; - -/** - * An input specialized for shell completion. - * - * This input allows unfinished option names or values and exposes what kind of - * completion is expected. - * - * @author Wouter de Jong - */ -final class CompletionInput extends ArgvInput -{ - public const TYPE_ARGUMENT_VALUE = 'argument_value'; - public const TYPE_OPTION_VALUE = 'option_value'; - public const TYPE_OPTION_NAME = 'option_name'; - public const TYPE_NONE = 'none'; - - private array $tokens; - private int $currentIndex; - private string $completionType; - private ?string $completionName = null; - private string $completionValue = ''; - - /** - * Converts a terminal string into tokens. - * - * This is required for shell completions without COMP_WORDS support. - */ - public static function fromString(string $inputStr, int $currentIndex): self - { - preg_match_all('/(?<=^|\s)([\'"]?)(.+?)(?tokens = $tokens; - $input->currentIndex = $currentIndex; - - return $input; - } - - public function bind(InputDefinition $definition): void - { - parent::bind($definition); - - $relevantToken = $this->getRelevantToken(); - if ('-' === $relevantToken[0]) { - // the current token is an input option: complete either option name or option value - [$optionToken, $optionValue] = explode('=', $relevantToken, 2) + ['', '']; - - $option = $this->getOptionFromToken($optionToken); - if (null === $option && !$this->isCursorFree()) { - $this->completionType = self::TYPE_OPTION_NAME; - $this->completionValue = $relevantToken; - - return; - } - - if ($option?->acceptValue()) { - $this->completionType = self::TYPE_OPTION_VALUE; - $this->completionName = $option->getName(); - $this->completionValue = $optionValue ?: (!str_starts_with($optionToken, '--') ? substr($optionToken, 2) : ''); - - return; - } - } - - $previousToken = $this->tokens[$this->currentIndex - 1]; - if ('-' === $previousToken[0] && '' !== trim($previousToken, '-')) { - // check if previous option accepted a value - $previousOption = $this->getOptionFromToken($previousToken); - if ($previousOption?->acceptValue()) { - $this->completionType = self::TYPE_OPTION_VALUE; - $this->completionName = $previousOption->getName(); - $this->completionValue = $relevantToken; - - return; - } - } - - // complete argument value - $this->completionType = self::TYPE_ARGUMENT_VALUE; - - foreach ($this->definition->getArguments() as $argumentName => $argument) { - if (!isset($this->arguments[$argumentName])) { - break; - } - - $argumentValue = $this->arguments[$argumentName]; - $this->completionName = $argumentName; - if (\is_array($argumentValue)) { - $this->completionValue = $argumentValue ? $argumentValue[array_key_last($argumentValue)] : null; - } else { - $this->completionValue = $argumentValue; - } - } - - if ($this->currentIndex >= \count($this->tokens)) { - if (!isset($this->arguments[$argumentName]) || $this->definition->getArgument($argumentName)->isArray()) { - $this->completionName = $argumentName; - $this->completionValue = ''; - } else { - // we've reached the end - $this->completionType = self::TYPE_NONE; - $this->completionName = null; - $this->completionValue = ''; - } - } - } - - /** - * Returns the type of completion required. - * - * TYPE_ARGUMENT_VALUE when completing the value of an input argument - * TYPE_OPTION_VALUE when completing the value of an input option - * TYPE_OPTION_NAME when completing the name of an input option - * TYPE_NONE when nothing should be completed - * - * TYPE_OPTION_NAME and TYPE_NONE are already implemented by the Console component. - * - * @return self::TYPE_* - */ - public function getCompletionType(): string - { - return $this->completionType; - } - - /** - * The name of the input option or argument when completing a value. - * - * @return string|null returns null when completing an option name - */ - public function getCompletionName(): ?string - { - return $this->completionName; - } - - /** - * The value already typed by the user (or empty string). - */ - public function getCompletionValue(): string - { - return $this->completionValue; - } - - public function mustSuggestOptionValuesFor(string $optionName): bool - { - return self::TYPE_OPTION_VALUE === $this->getCompletionType() && $optionName === $this->getCompletionName(); - } - - public function mustSuggestArgumentValuesFor(string $argumentName): bool - { - return self::TYPE_ARGUMENT_VALUE === $this->getCompletionType() && $argumentName === $this->getCompletionName(); - } - - protected function parseToken(string $token, bool $parseOptions): bool - { - try { - return parent::parseToken($token, $parseOptions); - } catch (RuntimeException) { - // suppress errors, completed input is almost never valid - } - - return $parseOptions; - } - - private function getOptionFromToken(string $optionToken): ?InputOption - { - $optionName = ltrim($optionToken, '-'); - if (!$optionName) { - return null; - } - - if ('-' === ($optionToken[1] ?? ' ')) { - // long option name - return $this->definition->hasOption($optionName) ? $this->definition->getOption($optionName) : null; - } - - // short option name - return $this->definition->hasShortcut($optionName[0]) ? $this->definition->getOptionForShortcut($optionName[0]) : null; - } - - /** - * The token of the cursor, or the last token if the cursor is at the end of the input. - */ - private function getRelevantToken(): string - { - return $this->tokens[$this->isCursorFree() ? $this->currentIndex - 1 : $this->currentIndex]; - } - - /** - * Whether the cursor is "free" (i.e. at the end of the input preceded by a space). - */ - private function isCursorFree(): bool - { - $nrOfTokens = \count($this->tokens); - if ($this->currentIndex > $nrOfTokens) { - throw new \LogicException('Current index is invalid, it must be the number of input tokens or one more.'); - } - - return $this->currentIndex >= $nrOfTokens; - } - - public function __toString() - { - $str = ''; - foreach ($this->tokens as $i => $token) { - $str .= $token; - - if ($this->currentIndex === $i) { - $str .= '|'; - } - - $str .= ' '; - } - - if ($this->currentIndex > $i) { - $str .= '|'; - } - - return rtrim($str); - } -} diff --git a/docker/streamline-src/vendor/symfony/console/Helper/ProgressBar.php b/docker/streamline-src/vendor/symfony/console/Helper/ProgressBar.php deleted file mode 100644 index 23157e3c..00000000 --- a/docker/streamline-src/vendor/symfony/console/Helper/ProgressBar.php +++ /dev/null @@ -1,618 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Helper; - -use Symfony\Component\Console\Cursor; -use Symfony\Component\Console\Exception\LogicException; -use Symfony\Component\Console\Output\ConsoleOutputInterface; -use Symfony\Component\Console\Output\ConsoleSectionOutput; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Console\Terminal; - -/** - * The ProgressBar provides helpers to display progress output. - * - * @author Fabien Potencier - * @author Chris Jones - */ -final class ProgressBar -{ - public const FORMAT_VERBOSE = 'verbose'; - public const FORMAT_VERY_VERBOSE = 'very_verbose'; - public const FORMAT_DEBUG = 'debug'; - public const FORMAT_NORMAL = 'normal'; - - private const FORMAT_VERBOSE_NOMAX = 'verbose_nomax'; - private const FORMAT_VERY_VERBOSE_NOMAX = 'very_verbose_nomax'; - private const FORMAT_DEBUG_NOMAX = 'debug_nomax'; - private const FORMAT_NORMAL_NOMAX = 'normal_nomax'; - - private int $barWidth = 28; - private string $barChar; - private string $emptyBarChar = '-'; - private string $progressChar = '>'; - private ?string $format = null; - private ?string $internalFormat = null; - private ?int $redrawFreq = 1; - private int $writeCount = 0; - private float $lastWriteTime = 0; - private float $minSecondsBetweenRedraws = 0; - private float $maxSecondsBetweenRedraws = 1; - private OutputInterface $output; - private int $step = 0; - private int $startingStep = 0; - private ?int $max = null; - private int $startTime; - private int $stepWidth; - private float $percent = 0.0; - private array $messages = []; - private bool $overwrite = true; - private Terminal $terminal; - private ?string $previousMessage = null; - private Cursor $cursor; - private array $placeholders = []; - - private static array $formatters; - private static array $formats; - - /** - * @param int $max Maximum steps (0 if unknown) - */ - public function __construct(OutputInterface $output, int $max = 0, float $minSecondsBetweenRedraws = 1 / 25) - { - if ($output instanceof ConsoleOutputInterface) { - $output = $output->getErrorOutput(); - } - - $this->output = $output; - $this->setMaxSteps($max); - $this->terminal = new Terminal(); - - if (0 < $minSecondsBetweenRedraws) { - $this->redrawFreq = null; - $this->minSecondsBetweenRedraws = $minSecondsBetweenRedraws; - } - - if (!$this->output->isDecorated()) { - // disable overwrite when output does not support ANSI codes. - $this->overwrite = false; - - // set a reasonable redraw frequency so output isn't flooded - $this->redrawFreq = null; - } - - $this->startTime = time(); - $this->cursor = new Cursor($output); - } - - /** - * Sets a placeholder formatter for a given name, globally for all instances of ProgressBar. - * - * This method also allow you to override an existing placeholder. - * - * @param string $name The placeholder name (including the delimiter char like %) - * @param callable(ProgressBar):string $callable A PHP callable - */ - public static function setPlaceholderFormatterDefinition(string $name, callable $callable): void - { - self::$formatters ??= self::initPlaceholderFormatters(); - - self::$formatters[$name] = $callable; - } - - /** - * Gets the placeholder formatter for a given name. - * - * @param string $name The placeholder name (including the delimiter char like %) - */ - public static function getPlaceholderFormatterDefinition(string $name): ?callable - { - self::$formatters ??= self::initPlaceholderFormatters(); - - return self::$formatters[$name] ?? null; - } - - /** - * Sets a placeholder formatter for a given name, for this instance only. - * - * @param callable(ProgressBar):string $callable A PHP callable - */ - public function setPlaceholderFormatter(string $name, callable $callable): void - { - $this->placeholders[$name] = $callable; - } - - /** - * Gets the placeholder formatter for a given name. - * - * @param string $name The placeholder name (including the delimiter char like %) - */ - public function getPlaceholderFormatter(string $name): ?callable - { - return $this->placeholders[$name] ?? $this::getPlaceholderFormatterDefinition($name); - } - - /** - * Sets a format for a given name. - * - * This method also allow you to override an existing format. - * - * @param string $name The format name - * @param string $format A format string - */ - public static function setFormatDefinition(string $name, string $format): void - { - self::$formats ??= self::initFormats(); - - self::$formats[$name] = $format; - } - - /** - * Gets the format for a given name. - * - * @param string $name The format name - */ - public static function getFormatDefinition(string $name): ?string - { - self::$formats ??= self::initFormats(); - - return self::$formats[$name] ?? null; - } - - /** - * Associates a text with a named placeholder. - * - * The text is displayed when the progress bar is rendered but only - * when the corresponding placeholder is part of the custom format line - * (by wrapping the name with %). - * - * @param string $message The text to associate with the placeholder - * @param string $name The name of the placeholder - */ - public function setMessage(string $message, string $name = 'message'): void - { - $this->messages[$name] = $message; - } - - public function getMessage(string $name = 'message'): ?string - { - return $this->messages[$name] ?? null; - } - - public function getStartTime(): int - { - return $this->startTime; - } - - public function getMaxSteps(): int - { - return $this->max; - } - - public function getProgress(): int - { - return $this->step; - } - - private function getStepWidth(): int - { - return $this->stepWidth; - } - - public function getProgressPercent(): float - { - return $this->percent; - } - - public function getBarOffset(): float - { - return floor($this->max ? $this->percent * $this->barWidth : (null === $this->redrawFreq ? (int) (min(5, $this->barWidth / 15) * $this->writeCount) : $this->step) % $this->barWidth); - } - - public function getEstimated(): float - { - if (0 === $this->step || $this->step === $this->startingStep) { - return 0; - } - - return round((time() - $this->startTime) / ($this->step - $this->startingStep) * $this->max); - } - - public function getRemaining(): float - { - if (0 === $this->step || $this->step === $this->startingStep) { - return 0; - } - - return round((time() - $this->startTime) / ($this->step - $this->startingStep) * ($this->max - $this->step)); - } - - public function setBarWidth(int $size): void - { - $this->barWidth = max(1, $size); - } - - public function getBarWidth(): int - { - return $this->barWidth; - } - - public function setBarCharacter(string $char): void - { - $this->barChar = $char; - } - - public function getBarCharacter(): string - { - return $this->barChar ?? ($this->max ? '=' : $this->emptyBarChar); - } - - public function setEmptyBarCharacter(string $char): void - { - $this->emptyBarChar = $char; - } - - public function getEmptyBarCharacter(): string - { - return $this->emptyBarChar; - } - - public function setProgressCharacter(string $char): void - { - $this->progressChar = $char; - } - - public function getProgressCharacter(): string - { - return $this->progressChar; - } - - public function setFormat(string $format): void - { - $this->format = null; - $this->internalFormat = $format; - } - - /** - * Sets the redraw frequency. - * - * @param int|null $freq The frequency in steps - */ - public function setRedrawFrequency(?int $freq): void - { - $this->redrawFreq = null !== $freq ? max(1, $freq) : null; - } - - public function minSecondsBetweenRedraws(float $seconds): void - { - $this->minSecondsBetweenRedraws = $seconds; - } - - public function maxSecondsBetweenRedraws(float $seconds): void - { - $this->maxSecondsBetweenRedraws = $seconds; - } - - /** - * Returns an iterator that will automatically update the progress bar when iterated. - * - * @template TKey - * @template TValue - * - * @param iterable $iterable - * @param int|null $max Number of steps to complete the bar (0 if indeterminate), if null it will be inferred from $iterable - * - * @return iterable - */ - public function iterate(iterable $iterable, ?int $max = null): iterable - { - $this->start($max ?? (is_countable($iterable) ? \count($iterable) : 0)); - - foreach ($iterable as $key => $value) { - yield $key => $value; - - $this->advance(); - } - - $this->finish(); - } - - /** - * Starts the progress output. - * - * @param int|null $max Number of steps to complete the bar (0 if indeterminate), null to leave unchanged - * @param int $startAt The starting point of the bar (useful e.g. when resuming a previously started bar) - */ - public function start(?int $max = null, int $startAt = 0): void - { - $this->startTime = time(); - $this->step = $startAt; - $this->startingStep = $startAt; - - $startAt > 0 ? $this->setProgress($startAt) : $this->percent = 0.0; - - if (null !== $max) { - $this->setMaxSteps($max); - } - - $this->display(); - } - - /** - * Advances the progress output X steps. - * - * @param int $step Number of steps to advance - */ - public function advance(int $step = 1): void - { - $this->setProgress($this->step + $step); - } - - /** - * Sets whether to overwrite the progressbar, false for new line. - */ - public function setOverwrite(bool $overwrite): void - { - $this->overwrite = $overwrite; - } - - public function setProgress(int $step): void - { - if ($this->max && $step > $this->max) { - $this->max = $step; - } elseif ($step < 0) { - $step = 0; - } - - $redrawFreq = $this->redrawFreq ?? (($this->max ?: 10) / 10); - $prevPeriod = (int) ($this->step / $redrawFreq); - $currPeriod = (int) ($step / $redrawFreq); - $this->step = $step; - $this->percent = $this->max ? (float) $this->step / $this->max : 0; - $timeInterval = microtime(true) - $this->lastWriteTime; - - // Draw regardless of other limits - if ($this->max === $step) { - $this->display(); - - return; - } - - // Throttling - if ($timeInterval < $this->minSecondsBetweenRedraws) { - return; - } - - // Draw each step period, but not too late - if ($prevPeriod !== $currPeriod || $timeInterval >= $this->maxSecondsBetweenRedraws) { - $this->display(); - } - } - - public function setMaxSteps(int $max): void - { - $this->format = null; - $this->max = max(0, $max); - $this->stepWidth = $this->max ? Helper::width((string) $this->max) : 4; - } - - /** - * Finishes the progress output. - */ - public function finish(): void - { - if (!$this->max) { - $this->max = $this->step; - } - - if ($this->step === $this->max && !$this->overwrite) { - // prevent double 100% output - return; - } - - $this->setProgress($this->max); - } - - /** - * Outputs the current progress string. - */ - public function display(): void - { - if (OutputInterface::VERBOSITY_QUIET === $this->output->getVerbosity()) { - return; - } - - if (null === $this->format) { - $this->setRealFormat($this->internalFormat ?: $this->determineBestFormat()); - } - - $this->overwrite($this->buildLine()); - } - - /** - * Removes the progress bar from the current line. - * - * This is useful if you wish to write some output - * while a progress bar is running. - * Call display() to show the progress bar again. - */ - public function clear(): void - { - if (!$this->overwrite) { - return; - } - - if (null === $this->format) { - $this->setRealFormat($this->internalFormat ?: $this->determineBestFormat()); - } - - $this->overwrite(''); - } - - private function setRealFormat(string $format): void - { - // try to use the _nomax variant if available - if (!$this->max && null !== self::getFormatDefinition($format.'_nomax')) { - $this->format = self::getFormatDefinition($format.'_nomax'); - } elseif (null !== self::getFormatDefinition($format)) { - $this->format = self::getFormatDefinition($format); - } else { - $this->format = $format; - } - } - - /** - * Overwrites a previous message to the output. - */ - private function overwrite(string $message): void - { - if ($this->previousMessage === $message) { - return; - } - - $originalMessage = $message; - - if ($this->overwrite) { - if (null !== $this->previousMessage) { - if ($this->output instanceof ConsoleSectionOutput) { - $messageLines = explode("\n", $this->previousMessage); - $lineCount = \count($messageLines); - foreach ($messageLines as $messageLine) { - $messageLineLength = Helper::width(Helper::removeDecoration($this->output->getFormatter(), $messageLine)); - if ($messageLineLength > $this->terminal->getWidth()) { - $lineCount += floor($messageLineLength / $this->terminal->getWidth()); - } - } - $this->output->clear($lineCount); - } else { - $lineCount = substr_count($this->previousMessage, "\n"); - for ($i = 0; $i < $lineCount; ++$i) { - $this->cursor->moveToColumn(1); - $this->cursor->clearLine(); - $this->cursor->moveUp(); - } - - $this->cursor->moveToColumn(1); - $this->cursor->clearLine(); - } - } - } elseif ($this->step > 0) { - $message = \PHP_EOL.$message; - } - - $this->previousMessage = $originalMessage; - $this->lastWriteTime = microtime(true); - - $this->output->write($message); - ++$this->writeCount; - } - - private function determineBestFormat(): string - { - return match ($this->output->getVerbosity()) { - // OutputInterface::VERBOSITY_QUIET: display is disabled anyway - OutputInterface::VERBOSITY_VERBOSE => $this->max ? self::FORMAT_VERBOSE : self::FORMAT_VERBOSE_NOMAX, - OutputInterface::VERBOSITY_VERY_VERBOSE => $this->max ? self::FORMAT_VERY_VERBOSE : self::FORMAT_VERY_VERBOSE_NOMAX, - OutputInterface::VERBOSITY_DEBUG => $this->max ? self::FORMAT_DEBUG : self::FORMAT_DEBUG_NOMAX, - default => $this->max ? self::FORMAT_NORMAL : self::FORMAT_NORMAL_NOMAX, - }; - } - - private static function initPlaceholderFormatters(): array - { - return [ - 'bar' => function (self $bar, OutputInterface $output) { - $completeBars = $bar->getBarOffset(); - $display = str_repeat($bar->getBarCharacter(), $completeBars); - if ($completeBars < $bar->getBarWidth()) { - $emptyBars = $bar->getBarWidth() - $completeBars - Helper::length(Helper::removeDecoration($output->getFormatter(), $bar->getProgressCharacter())); - $display .= $bar->getProgressCharacter().str_repeat($bar->getEmptyBarCharacter(), $emptyBars); - } - - return $display; - }, - 'elapsed' => fn (self $bar) => Helper::formatTime(time() - $bar->getStartTime(), 2), - 'remaining' => function (self $bar) { - if (!$bar->getMaxSteps()) { - throw new LogicException('Unable to display the remaining time if the maximum number of steps is not set.'); - } - - return Helper::formatTime($bar->getRemaining(), 2); - }, - 'estimated' => function (self $bar) { - if (!$bar->getMaxSteps()) { - throw new LogicException('Unable to display the estimated time if the maximum number of steps is not set.'); - } - - return Helper::formatTime($bar->getEstimated(), 2); - }, - 'memory' => fn (self $bar) => Helper::formatMemory(memory_get_usage(true)), - 'current' => fn (self $bar) => str_pad($bar->getProgress(), $bar->getStepWidth(), ' ', \STR_PAD_LEFT), - 'max' => fn (self $bar) => $bar->getMaxSteps(), - 'percent' => fn (self $bar) => floor($bar->getProgressPercent() * 100), - ]; - } - - private static function initFormats(): array - { - return [ - self::FORMAT_NORMAL => ' %current%/%max% [%bar%] %percent:3s%%', - self::FORMAT_NORMAL_NOMAX => ' %current% [%bar%]', - - self::FORMAT_VERBOSE => ' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%', - self::FORMAT_VERBOSE_NOMAX => ' %current% [%bar%] %elapsed:6s%', - - self::FORMAT_VERY_VERBOSE => ' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%/%estimated:-6s%', - self::FORMAT_VERY_VERBOSE_NOMAX => ' %current% [%bar%] %elapsed:6s%', - - self::FORMAT_DEBUG => ' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%/%estimated:-6s% %memory:6s%', - self::FORMAT_DEBUG_NOMAX => ' %current% [%bar%] %elapsed:6s% %memory:6s%', - ]; - } - - private function buildLine(): string - { - \assert(null !== $this->format); - - $regex = "{%([a-z\-_]+)(?:\:([^%]+))?%}i"; - $callback = function ($matches) { - if ($formatter = $this->getPlaceholderFormatter($matches[1])) { - $text = $formatter($this, $this->output); - } elseif (isset($this->messages[$matches[1]])) { - $text = $this->messages[$matches[1]]; - } else { - return $matches[0]; - } - - if (isset($matches[2])) { - $text = sprintf('%'.$matches[2], $text); - } - - return $text; - }; - $line = preg_replace_callback($regex, $callback, $this->format); - - // gets string length for each sub line with multiline format - $linesLength = array_map(fn ($subLine) => Helper::width(Helper::removeDecoration($this->output->getFormatter(), rtrim($subLine, "\r"))), explode("\n", $line)); - - $linesWidth = max($linesLength); - - $terminalWidth = $this->terminal->getWidth(); - if ($linesWidth <= $terminalWidth) { - return $line; - } - - $this->setBarWidth($this->barWidth - $linesWidth + $terminalWidth); - - return preg_replace_callback($regex, $callback, $this->format); - } -} diff --git a/docker/streamline-src/vendor/symfony/console/Helper/Table.php b/docker/streamline-src/vendor/symfony/console/Helper/Table.php deleted file mode 100644 index 1f026dc5..00000000 --- a/docker/streamline-src/vendor/symfony/console/Helper/Table.php +++ /dev/null @@ -1,930 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Helper; - -use Symfony\Component\Console\Exception\InvalidArgumentException; -use Symfony\Component\Console\Exception\RuntimeException; -use Symfony\Component\Console\Formatter\OutputFormatter; -use Symfony\Component\Console\Formatter\WrappableOutputFormatterInterface; -use Symfony\Component\Console\Output\ConsoleSectionOutput; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * Provides helpers to display a table. - * - * @author Fabien Potencier - * @author Саша Стаменковић - * @author Abdellatif Ait boudad - * @author Max Grigorian - * @author Dany Maillard - */ -class Table -{ - private const SEPARATOR_TOP = 0; - private const SEPARATOR_TOP_BOTTOM = 1; - private const SEPARATOR_MID = 2; - private const SEPARATOR_BOTTOM = 3; - private const BORDER_OUTSIDE = 0; - private const BORDER_INSIDE = 1; - private const DISPLAY_ORIENTATION_DEFAULT = 'default'; - private const DISPLAY_ORIENTATION_HORIZONTAL = 'horizontal'; - private const DISPLAY_ORIENTATION_VERTICAL = 'vertical'; - - private ?string $headerTitle = null; - private ?string $footerTitle = null; - private array $headers = []; - private array $rows = []; - private array $effectiveColumnWidths = []; - private int $numberOfColumns; - private OutputInterface $output; - private TableStyle $style; - private array $columnStyles = []; - private array $columnWidths = []; - private array $columnMaxWidths = []; - private bool $rendered = false; - private string $displayOrientation = self::DISPLAY_ORIENTATION_DEFAULT; - - private static array $styles; - - public function __construct(OutputInterface $output) - { - $this->output = $output; - - self::$styles ??= self::initStyles(); - - $this->setStyle('default'); - } - - /** - * Sets a style definition. - * - * @return void - */ - public static function setStyleDefinition(string $name, TableStyle $style) - { - self::$styles ??= self::initStyles(); - - self::$styles[$name] = $style; - } - - /** - * Gets a style definition by name. - */ - public static function getStyleDefinition(string $name): TableStyle - { - self::$styles ??= self::initStyles(); - - return self::$styles[$name] ?? throw new InvalidArgumentException(sprintf('Style "%s" is not defined.', $name)); - } - - /** - * Sets table style. - * - * @return $this - */ - public function setStyle(TableStyle|string $name): static - { - $this->style = $this->resolveStyle($name); - - return $this; - } - - /** - * Gets the current table style. - */ - public function getStyle(): TableStyle - { - return $this->style; - } - - /** - * Sets table column style. - * - * @param TableStyle|string $name The style name or a TableStyle instance - * - * @return $this - */ - public function setColumnStyle(int $columnIndex, TableStyle|string $name): static - { - $this->columnStyles[$columnIndex] = $this->resolveStyle($name); - - return $this; - } - - /** - * Gets the current style for a column. - * - * If style was not set, it returns the global table style. - */ - public function getColumnStyle(int $columnIndex): TableStyle - { - return $this->columnStyles[$columnIndex] ?? $this->getStyle(); - } - - /** - * Sets the minimum width of a column. - * - * @return $this - */ - public function setColumnWidth(int $columnIndex, int $width): static - { - $this->columnWidths[$columnIndex] = $width; - - return $this; - } - - /** - * Sets the minimum width of all columns. - * - * @return $this - */ - public function setColumnWidths(array $widths): static - { - $this->columnWidths = []; - foreach ($widths as $index => $width) { - $this->setColumnWidth($index, $width); - } - - return $this; - } - - /** - * Sets the maximum width of a column. - * - * Any cell within this column which contents exceeds the specified width will be wrapped into multiple lines, while - * formatted strings are preserved. - * - * @return $this - */ - public function setColumnMaxWidth(int $columnIndex, int $width): static - { - if (!$this->output->getFormatter() instanceof WrappableOutputFormatterInterface) { - throw new \LogicException(sprintf('Setting a maximum column width is only supported when using a "%s" formatter, got "%s".', WrappableOutputFormatterInterface::class, get_debug_type($this->output->getFormatter()))); - } - - $this->columnMaxWidths[$columnIndex] = $width; - - return $this; - } - - /** - * @return $this - */ - public function setHeaders(array $headers): static - { - $headers = array_values($headers); - if ($headers && !\is_array($headers[0])) { - $headers = [$headers]; - } - - $this->headers = $headers; - - return $this; - } - - /** - * @return $this - */ - public function setRows(array $rows) - { - $this->rows = []; - - return $this->addRows($rows); - } - - /** - * @return $this - */ - public function addRows(array $rows): static - { - foreach ($rows as $row) { - $this->addRow($row); - } - - return $this; - } - - /** - * @return $this - */ - public function addRow(TableSeparator|array $row): static - { - if ($row instanceof TableSeparator) { - $this->rows[] = $row; - - return $this; - } - - $this->rows[] = array_values($row); - - return $this; - } - - /** - * Adds a row to the table, and re-renders the table. - * - * @return $this - */ - public function appendRow(TableSeparator|array $row): static - { - if (!$this->output instanceof ConsoleSectionOutput) { - throw new RuntimeException(sprintf('Output should be an instance of "%s" when calling "%s".', ConsoleSectionOutput::class, __METHOD__)); - } - - if ($this->rendered) { - $this->output->clear($this->calculateRowCount()); - } - - $this->addRow($row); - $this->render(); - - return $this; - } - - /** - * @return $this - */ - public function setRow(int|string $column, array $row): static - { - $this->rows[$column] = $row; - - return $this; - } - - /** - * @return $this - */ - public function setHeaderTitle(?string $title): static - { - $this->headerTitle = $title; - - return $this; - } - - /** - * @return $this - */ - public function setFooterTitle(?string $title): static - { - $this->footerTitle = $title; - - return $this; - } - - /** - * @return $this - */ - public function setHorizontal(bool $horizontal = true): static - { - $this->displayOrientation = $horizontal ? self::DISPLAY_ORIENTATION_HORIZONTAL : self::DISPLAY_ORIENTATION_DEFAULT; - - return $this; - } - - /** - * @return $this - */ - public function setVertical(bool $vertical = true): static - { - $this->displayOrientation = $vertical ? self::DISPLAY_ORIENTATION_VERTICAL : self::DISPLAY_ORIENTATION_DEFAULT; - - return $this; - } - - /** - * Renders table to output. - * - * Example: - * - * +---------------+-----------------------+------------------+ - * | ISBN | Title | Author | - * +---------------+-----------------------+------------------+ - * | 99921-58-10-7 | Divine Comedy | Dante Alighieri | - * | 9971-5-0210-0 | A Tale of Two Cities | Charles Dickens | - * | 960-425-059-0 | The Lord of the Rings | J. R. R. Tolkien | - * +---------------+-----------------------+------------------+ - * - * @return void - */ - public function render() - { - $divider = new TableSeparator(); - $isCellWithColspan = static fn ($cell) => $cell instanceof TableCell && $cell->getColspan() >= 2; - - $horizontal = self::DISPLAY_ORIENTATION_HORIZONTAL === $this->displayOrientation; - $vertical = self::DISPLAY_ORIENTATION_VERTICAL === $this->displayOrientation; - - $rows = []; - if ($horizontal) { - foreach ($this->headers[0] ?? [] as $i => $header) { - $rows[$i] = [$header]; - foreach ($this->rows as $row) { - if ($row instanceof TableSeparator) { - continue; - } - if (isset($row[$i])) { - $rows[$i][] = $row[$i]; - } elseif ($isCellWithColspan($rows[$i][0])) { - // Noop, there is a "title" - } else { - $rows[$i][] = null; - } - } - } - } elseif ($vertical) { - $formatter = $this->output->getFormatter(); - $maxHeaderLength = array_reduce($this->headers[0] ?? [], static fn ($max, $header) => max($max, Helper::width(Helper::removeDecoration($formatter, $header))), 0); - - foreach ($this->rows as $row) { - if ($row instanceof TableSeparator) { - continue; - } - - if ($rows) { - $rows[] = [$divider]; - } - - $containsColspan = false; - foreach ($row as $cell) { - if ($containsColspan = $isCellWithColspan($cell)) { - break; - } - } - - $headers = $this->headers[0] ?? []; - $maxRows = max(\count($headers), \count($row)); - for ($i = 0; $i < $maxRows; ++$i) { - $cell = (string) ($row[$i] ?? ''); - - $eol = str_contains($cell, "\r\n") ? "\r\n" : "\n"; - $parts = explode($eol, $cell); - foreach ($parts as $idx => $part) { - if ($headers && !$containsColspan) { - if (0 === $idx) { - $rows[] = [sprintf( - '%s%s: %s', - str_repeat(' ', $maxHeaderLength - Helper::width(Helper::removeDecoration($formatter, $headers[$i] ?? ''))), - $headers[$i] ?? '', - $part - )]; - } else { - $rows[] = [sprintf( - '%s %s', - str_pad('', $maxHeaderLength, ' ', \STR_PAD_LEFT), - $part - )]; - } - } elseif ('' !== $cell) { - $rows[] = [$part]; - } - } - } - } - } else { - $rows = array_merge($this->headers, [$divider], $this->rows); - } - - $this->calculateNumberOfColumns($rows); - - $rowGroups = $this->buildTableRows($rows); - $this->calculateColumnsWidth($rowGroups); - - $isHeader = !$horizontal; - $isFirstRow = $horizontal; - $hasTitle = (bool) $this->headerTitle; - - foreach ($rowGroups as $rowGroup) { - $isHeaderSeparatorRendered = false; - - foreach ($rowGroup as $row) { - if ($divider === $row) { - $isHeader = false; - $isFirstRow = true; - - continue; - } - - if ($row instanceof TableSeparator) { - $this->renderRowSeparator(); - - continue; - } - - if (!$row) { - continue; - } - - if ($isHeader && !$isHeaderSeparatorRendered) { - $this->renderRowSeparator( - self::SEPARATOR_TOP, - $hasTitle ? $this->headerTitle : null, - $hasTitle ? $this->style->getHeaderTitleFormat() : null - ); - $hasTitle = false; - $isHeaderSeparatorRendered = true; - } - - if ($isFirstRow) { - $this->renderRowSeparator( - $horizontal ? self::SEPARATOR_TOP : self::SEPARATOR_TOP_BOTTOM, - $hasTitle ? $this->headerTitle : null, - $hasTitle ? $this->style->getHeaderTitleFormat() : null - ); - $isFirstRow = false; - $hasTitle = false; - } - - if ($vertical) { - $isHeader = false; - $isFirstRow = false; - } - - if ($horizontal) { - $this->renderRow($row, $this->style->getCellRowFormat(), $this->style->getCellHeaderFormat()); - } else { - $this->renderRow($row, $isHeader ? $this->style->getCellHeaderFormat() : $this->style->getCellRowFormat()); - } - } - } - $this->renderRowSeparator(self::SEPARATOR_BOTTOM, $this->footerTitle, $this->style->getFooterTitleFormat()); - - $this->cleanup(); - $this->rendered = true; - } - - /** - * Renders horizontal header separator. - * - * Example: - * - * +-----+-----------+-------+ - */ - private function renderRowSeparator(int $type = self::SEPARATOR_MID, ?string $title = null, ?string $titleFormat = null): void - { - if (!$count = $this->numberOfColumns) { - return; - } - - $borders = $this->style->getBorderChars(); - if (!$borders[0] && !$borders[2] && !$this->style->getCrossingChar()) { - return; - } - - $crossings = $this->style->getCrossingChars(); - if (self::SEPARATOR_MID === $type) { - [$horizontal, $leftChar, $midChar, $rightChar] = [$borders[2], $crossings[8], $crossings[0], $crossings[4]]; - } elseif (self::SEPARATOR_TOP === $type) { - [$horizontal, $leftChar, $midChar, $rightChar] = [$borders[0], $crossings[1], $crossings[2], $crossings[3]]; - } elseif (self::SEPARATOR_TOP_BOTTOM === $type) { - [$horizontal, $leftChar, $midChar, $rightChar] = [$borders[0], $crossings[9], $crossings[10], $crossings[11]]; - } else { - [$horizontal, $leftChar, $midChar, $rightChar] = [$borders[0], $crossings[7], $crossings[6], $crossings[5]]; - } - - $markup = $leftChar; - for ($column = 0; $column < $count; ++$column) { - $markup .= str_repeat($horizontal, $this->effectiveColumnWidths[$column]); - $markup .= $column === $count - 1 ? $rightChar : $midChar; - } - - if (null !== $title) { - $titleLength = Helper::width(Helper::removeDecoration($formatter = $this->output->getFormatter(), $formattedTitle = sprintf($titleFormat, $title))); - $markupLength = Helper::width($markup); - if ($titleLength > $limit = $markupLength - 4) { - $titleLength = $limit; - $formatLength = Helper::width(Helper::removeDecoration($formatter, sprintf($titleFormat, ''))); - $formattedTitle = sprintf($titleFormat, Helper::substr($title, 0, $limit - $formatLength - 3).'...'); - } - - $titleStart = intdiv($markupLength - $titleLength, 2); - if (false === mb_detect_encoding($markup, null, true)) { - $markup = substr_replace($markup, $formattedTitle, $titleStart, $titleLength); - } else { - $markup = mb_substr($markup, 0, $titleStart).$formattedTitle.mb_substr($markup, $titleStart + $titleLength); - } - } - - $this->output->writeln(sprintf($this->style->getBorderFormat(), $markup)); - } - - /** - * Renders vertical column separator. - */ - private function renderColumnSeparator(int $type = self::BORDER_OUTSIDE): string - { - $borders = $this->style->getBorderChars(); - - return sprintf($this->style->getBorderFormat(), self::BORDER_OUTSIDE === $type ? $borders[1] : $borders[3]); - } - - /** - * Renders table row. - * - * Example: - * - * | 9971-5-0210-0 | A Tale of Two Cities | Charles Dickens | - */ - private function renderRow(array $row, string $cellFormat, ?string $firstCellFormat = null): void - { - $rowContent = $this->renderColumnSeparator(self::BORDER_OUTSIDE); - $columns = $this->getRowColumns($row); - $last = \count($columns) - 1; - foreach ($columns as $i => $column) { - if ($firstCellFormat && 0 === $i) { - $rowContent .= $this->renderCell($row, $column, $firstCellFormat); - } else { - $rowContent .= $this->renderCell($row, $column, $cellFormat); - } - $rowContent .= $this->renderColumnSeparator($last === $i ? self::BORDER_OUTSIDE : self::BORDER_INSIDE); - } - $this->output->writeln($rowContent); - } - - /** - * Renders table cell with padding. - */ - private function renderCell(array $row, int $column, string $cellFormat): string - { - $cell = $row[$column] ?? ''; - $width = $this->effectiveColumnWidths[$column]; - if ($cell instanceof TableCell && $cell->getColspan() > 1) { - // add the width of the following columns(numbers of colspan). - foreach (range($column + 1, $column + $cell->getColspan() - 1) as $nextColumn) { - $width += $this->getColumnSeparatorWidth() + $this->effectiveColumnWidths[$nextColumn]; - } - } - - // str_pad won't work properly with multi-byte strings, we need to fix the padding - if (false !== $encoding = mb_detect_encoding($cell, null, true)) { - $width += \strlen($cell) - mb_strwidth($cell, $encoding); - } - - $style = $this->getColumnStyle($column); - - if ($cell instanceof TableSeparator) { - return sprintf($style->getBorderFormat(), str_repeat($style->getBorderChars()[2], $width)); - } - - $width += Helper::length($cell) - Helper::length(Helper::removeDecoration($this->output->getFormatter(), $cell)); - $content = sprintf($style->getCellRowContentFormat(), $cell); - - $padType = $style->getPadType(); - if ($cell instanceof TableCell && $cell->getStyle() instanceof TableCellStyle) { - $isNotStyledByTag = !preg_match('/^<(\w+|(\w+=[\w,]+;?)*)>.+<\/(\w+|(\w+=\w+;?)*)?>$/', $cell); - if ($isNotStyledByTag) { - $cellFormat = $cell->getStyle()->getCellFormat(); - if (!\is_string($cellFormat)) { - $tag = http_build_query($cell->getStyle()->getTagOptions(), '', ';'); - $cellFormat = '<'.$tag.'>%s'; - } - - if (str_contains($content, '')) { - $content = str_replace('', '', $content); - $width -= 3; - } - if (str_contains($content, '')) { - $content = str_replace('', '', $content); - $width -= \strlen(''); - } - } - - $padType = $cell->getStyle()->getPadByAlign(); - } - - return sprintf($cellFormat, str_pad($content, $width, $style->getPaddingChar(), $padType)); - } - - /** - * Calculate number of columns for this table. - */ - private function calculateNumberOfColumns(array $rows): void - { - $columns = [0]; - foreach ($rows as $row) { - if ($row instanceof TableSeparator) { - continue; - } - - $columns[] = $this->getNumberOfColumns($row); - } - - $this->numberOfColumns = max($columns); - } - - private function buildTableRows(array $rows): TableRows - { - /** @var WrappableOutputFormatterInterface $formatter */ - $formatter = $this->output->getFormatter(); - $unmergedRows = []; - for ($rowKey = 0; $rowKey < \count($rows); ++$rowKey) { - $rows = $this->fillNextRows($rows, $rowKey); - - // Remove any new line breaks and replace it with a new line - foreach ($rows[$rowKey] as $column => $cell) { - $colspan = $cell instanceof TableCell ? $cell->getColspan() : 1; - - if (isset($this->columnMaxWidths[$column]) && Helper::width(Helper::removeDecoration($formatter, $cell)) > $this->columnMaxWidths[$column]) { - $cell = $formatter->formatAndWrap($cell, $this->columnMaxWidths[$column] * $colspan); - } - if (!str_contains($cell ?? '', "\n")) { - continue; - } - $eol = str_contains($cell ?? '', "\r\n") ? "\r\n" : "\n"; - $escaped = implode($eol, array_map(OutputFormatter::escapeTrailingBackslash(...), explode($eol, $cell))); - $cell = $cell instanceof TableCell ? new TableCell($escaped, ['colspan' => $cell->getColspan()]) : $escaped; - $lines = explode($eol, str_replace($eol, ''.$eol, $cell)); - foreach ($lines as $lineKey => $line) { - if ($colspan > 1) { - $line = new TableCell($line, ['colspan' => $colspan]); - } - if (0 === $lineKey) { - $rows[$rowKey][$column] = $line; - } else { - if (!\array_key_exists($rowKey, $unmergedRows) || !\array_key_exists($lineKey, $unmergedRows[$rowKey])) { - $unmergedRows[$rowKey][$lineKey] = $this->copyRow($rows, $rowKey); - } - $unmergedRows[$rowKey][$lineKey][$column] = $line; - } - } - } - } - - return new TableRows(function () use ($rows, $unmergedRows): \Traversable { - foreach ($rows as $rowKey => $row) { - $rowGroup = [$row instanceof TableSeparator ? $row : $this->fillCells($row)]; - - if (isset($unmergedRows[$rowKey])) { - foreach ($unmergedRows[$rowKey] as $row) { - $rowGroup[] = $row instanceof TableSeparator ? $row : $this->fillCells($row); - } - } - yield $rowGroup; - } - }); - } - - private function calculateRowCount(): int - { - $numberOfRows = \count(iterator_to_array($this->buildTableRows(array_merge($this->headers, [new TableSeparator()], $this->rows)))); - - if ($this->headers) { - ++$numberOfRows; // Add row for header separator - } - - if ($this->rows) { - ++$numberOfRows; // Add row for footer separator - } - - return $numberOfRows; - } - - /** - * fill rows that contains rowspan > 1. - * - * @throws InvalidArgumentException - */ - private function fillNextRows(array $rows, int $line): array - { - $unmergedRows = []; - foreach ($rows[$line] as $column => $cell) { - if (null !== $cell && !$cell instanceof TableCell && !\is_scalar($cell) && !$cell instanceof \Stringable) { - throw new InvalidArgumentException(sprintf('A cell must be a TableCell, a scalar or an object implementing "__toString()", "%s" given.', get_debug_type($cell))); - } - if ($cell instanceof TableCell && $cell->getRowspan() > 1) { - $nbLines = $cell->getRowspan() - 1; - $lines = [$cell]; - if (str_contains($cell, "\n")) { - $eol = str_contains($cell, "\r\n") ? "\r\n" : "\n"; - $lines = explode($eol, str_replace($eol, ''.$eol.'', $cell)); - $nbLines = \count($lines) > $nbLines ? substr_count($cell, $eol) : $nbLines; - - $rows[$line][$column] = new TableCell($lines[0], ['colspan' => $cell->getColspan(), 'style' => $cell->getStyle()]); - unset($lines[0]); - } - - // create a two dimensional array (rowspan x colspan) - $unmergedRows = array_replace_recursive(array_fill($line + 1, $nbLines, []), $unmergedRows); - foreach ($unmergedRows as $unmergedRowKey => $unmergedRow) { - $value = $lines[$unmergedRowKey - $line] ?? ''; - $unmergedRows[$unmergedRowKey][$column] = new TableCell($value, ['colspan' => $cell->getColspan(), 'style' => $cell->getStyle()]); - if ($nbLines === $unmergedRowKey - $line) { - break; - } - } - } - } - - foreach ($unmergedRows as $unmergedRowKey => $unmergedRow) { - // we need to know if $unmergedRow will be merged or inserted into $rows - if (isset($rows[$unmergedRowKey]) && \is_array($rows[$unmergedRowKey]) && ($this->getNumberOfColumns($rows[$unmergedRowKey]) + $this->getNumberOfColumns($unmergedRows[$unmergedRowKey]) <= $this->numberOfColumns)) { - foreach ($unmergedRow as $cellKey => $cell) { - // insert cell into row at cellKey position - array_splice($rows[$unmergedRowKey], $cellKey, 0, [$cell]); - } - } else { - $row = $this->copyRow($rows, $unmergedRowKey - 1); - foreach ($unmergedRow as $column => $cell) { - if (!empty($cell)) { - $row[$column] = $unmergedRow[$column]; - } - } - array_splice($rows, $unmergedRowKey, 0, [$row]); - } - } - - return $rows; - } - - /** - * fill cells for a row that contains colspan > 1. - */ - private function fillCells(iterable $row): iterable - { - $newRow = []; - - foreach ($row as $column => $cell) { - $newRow[] = $cell; - if ($cell instanceof TableCell && $cell->getColspan() > 1) { - foreach (range($column + 1, $column + $cell->getColspan() - 1) as $position) { - // insert empty value at column position - $newRow[] = ''; - } - } - } - - return $newRow ?: $row; - } - - private function copyRow(array $rows, int $line): array - { - $row = $rows[$line]; - foreach ($row as $cellKey => $cellValue) { - $row[$cellKey] = ''; - if ($cellValue instanceof TableCell) { - $row[$cellKey] = new TableCell('', ['colspan' => $cellValue->getColspan()]); - } - } - - return $row; - } - - /** - * Gets number of columns by row. - */ - private function getNumberOfColumns(array $row): int - { - $columns = \count($row); - foreach ($row as $column) { - $columns += $column instanceof TableCell ? ($column->getColspan() - 1) : 0; - } - - return $columns; - } - - /** - * Gets list of columns for the given row. - */ - private function getRowColumns(array $row): array - { - $columns = range(0, $this->numberOfColumns - 1); - foreach ($row as $cellKey => $cell) { - if ($cell instanceof TableCell && $cell->getColspan() > 1) { - // exclude grouped columns. - $columns = array_diff($columns, range($cellKey + 1, $cellKey + $cell->getColspan() - 1)); - } - } - - return $columns; - } - - /** - * Calculates columns widths. - */ - private function calculateColumnsWidth(iterable $groups): void - { - for ($column = 0; $column < $this->numberOfColumns; ++$column) { - $lengths = []; - foreach ($groups as $group) { - foreach ($group as $row) { - if ($row instanceof TableSeparator) { - continue; - } - - foreach ($row as $i => $cell) { - if ($cell instanceof TableCell) { - $textContent = Helper::removeDecoration($this->output->getFormatter(), $cell); - $textLength = Helper::width($textContent); - if ($textLength > 0) { - $contentColumns = mb_str_split($textContent, ceil($textLength / $cell->getColspan())); - foreach ($contentColumns as $position => $content) { - $row[$i + $position] = $content; - } - } - } - } - - $lengths[] = $this->getCellWidth($row, $column); - } - } - - $this->effectiveColumnWidths[$column] = max($lengths) + Helper::width($this->style->getCellRowContentFormat()) - 2; - } - } - - private function getColumnSeparatorWidth(): int - { - return Helper::width(sprintf($this->style->getBorderFormat(), $this->style->getBorderChars()[3])); - } - - private function getCellWidth(array $row, int $column): int - { - $cellWidth = 0; - - if (isset($row[$column])) { - $cell = $row[$column]; - $cellWidth = Helper::width(Helper::removeDecoration($this->output->getFormatter(), $cell)); - } - - $columnWidth = $this->columnWidths[$column] ?? 0; - $cellWidth = max($cellWidth, $columnWidth); - - return isset($this->columnMaxWidths[$column]) ? min($this->columnMaxWidths[$column], $cellWidth) : $cellWidth; - } - - /** - * Called after rendering to cleanup cache data. - */ - private function cleanup(): void - { - $this->effectiveColumnWidths = []; - unset($this->numberOfColumns); - } - - /** - * @return array - */ - private static function initStyles(): array - { - $borderless = new TableStyle(); - $borderless - ->setHorizontalBorderChars('=') - ->setVerticalBorderChars(' ') - ->setDefaultCrossingChar(' ') - ; - - $compact = new TableStyle(); - $compact - ->setHorizontalBorderChars('') - ->setVerticalBorderChars('') - ->setDefaultCrossingChar('') - ->setCellRowContentFormat('%s ') - ; - - $styleGuide = new TableStyle(); - $styleGuide - ->setHorizontalBorderChars('-') - ->setVerticalBorderChars(' ') - ->setDefaultCrossingChar(' ') - ->setCellHeaderFormat('%s') - ; - - $box = (new TableStyle()) - ->setHorizontalBorderChars('─') - ->setVerticalBorderChars('│') - ->setCrossingChars('┼', '┌', '┬', '┐', '┤', '┘', '┴', '└', '├') - ; - - $boxDouble = (new TableStyle()) - ->setHorizontalBorderChars('═', '─') - ->setVerticalBorderChars('║', '│') - ->setCrossingChars('┼', '╔', '╤', '╗', '╢', '╝', '╧', '╚', '╟', '╠', '╪', '╣') - ; - - return [ - 'default' => new TableStyle(), - 'borderless' => $borderless, - 'compact' => $compact, - 'symfony-style-guide' => $styleGuide, - 'box' => $box, - 'box-double' => $boxDouble, - ]; - } - - private function resolveStyle(TableStyle|string $name): TableStyle - { - if ($name instanceof TableStyle) { - return $name; - } - - return self::$styles[$name] ?? throw new InvalidArgumentException(sprintf('Style "%s" is not defined.', $name)); - } -} diff --git a/docker/streamline-src/vendor/symfony/console/Output/StreamOutput.php b/docker/streamline-src/vendor/symfony/console/Output/StreamOutput.php deleted file mode 100644 index f51d0376..00000000 --- a/docker/streamline-src/vendor/symfony/console/Output/StreamOutput.php +++ /dev/null @@ -1,125 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Output; - -use Symfony\Component\Console\Exception\InvalidArgumentException; -use Symfony\Component\Console\Formatter\OutputFormatterInterface; - -/** - * StreamOutput writes the output to a given stream. - * - * Usage: - * - * $output = new StreamOutput(fopen('php://stdout', 'w')); - * - * As `StreamOutput` can use any stream, you can also use a file: - * - * $output = new StreamOutput(fopen('/path/to/output.log', 'a', false)); - * - * @author Fabien Potencier - */ -class StreamOutput extends Output -{ - /** @var resource */ - private $stream; - - /** - * @param resource $stream A stream resource - * @param int $verbosity The verbosity level (one of the VERBOSITY constants in OutputInterface) - * @param bool|null $decorated Whether to decorate messages (null for auto-guessing) - * @param OutputFormatterInterface|null $formatter Output formatter instance (null to use default OutputFormatter) - * - * @throws InvalidArgumentException When first argument is not a real stream - */ - public function __construct($stream, int $verbosity = self::VERBOSITY_NORMAL, ?bool $decorated = null, ?OutputFormatterInterface $formatter = null) - { - if (!\is_resource($stream) || 'stream' !== get_resource_type($stream)) { - throw new InvalidArgumentException('The StreamOutput class needs a stream as its first argument.'); - } - - $this->stream = $stream; - - $decorated ??= $this->hasColorSupport(); - - parent::__construct($verbosity, $decorated, $formatter); - } - - /** - * Gets the stream attached to this StreamOutput instance. - * - * @return resource - */ - public function getStream() - { - return $this->stream; - } - - /** - * @return void - */ - protected function doWrite(string $message, bool $newline) - { - if ($newline) { - $message .= \PHP_EOL; - } - - @fwrite($this->stream, $message); - - fflush($this->stream); - } - - /** - * Returns true if the stream supports colorization. - * - * Colorization is disabled if not supported by the stream: - * - * This is tricky on Windows, because Cygwin, Msys2 etc emulate pseudo - * terminals via named pipes, so we can only check the environment. - * - * Reference: Composer\XdebugHandler\Process::supportsColor - * https://github.com/composer/xdebug-handler - * - * @return bool true if the stream supports colorization, false otherwise - */ - protected function hasColorSupport(): bool - { - // Follow https://no-color.org/ - if ('' !== (($_SERVER['NO_COLOR'] ?? getenv('NO_COLOR'))[0] ?? '')) { - return false; - } - - // Detect msysgit/mingw and assume this is a tty because detection - // does not work correctly, see https://github.com/composer/composer/issues/9690 - if (!@stream_isatty($this->stream) && !\in_array(strtoupper((string) getenv('MSYSTEM')), ['MINGW32', 'MINGW64'], true)) { - return false; - } - - if ('\\' === \DIRECTORY_SEPARATOR && @sapi_windows_vt100_support($this->stream)) { - return true; - } - - if ('Hyper' === getenv('TERM_PROGRAM') - || false !== getenv('COLORTERM') - || false !== getenv('ANSICON') - || 'ON' === getenv('ConEmuANSI') - ) { - return true; - } - - if ('dumb' === $term = (string) getenv('TERM')) { - return false; - } - - // See https://github.com/chalk/supports-color/blob/d4f413efaf8da045c5ab440ed418ef02dbb28bf1/index.js#L157 - return preg_match('/^((screen|xterm|vt100|vt220|putty|rxvt|ansi|cygwin|linux).*)|(.*-256(color)?(-bce)?)$/', $term); - } -} diff --git a/docker/streamline-src/vendor/symfony/console/Question/ChoiceQuestion.php b/docker/streamline-src/vendor/symfony/console/Question/ChoiceQuestion.php deleted file mode 100644 index 465f3184..00000000 --- a/docker/streamline-src/vendor/symfony/console/Question/ChoiceQuestion.php +++ /dev/null @@ -1,177 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Question; - -use Symfony\Component\Console\Exception\InvalidArgumentException; - -/** - * Represents a choice question. - * - * @author Fabien Potencier - */ -class ChoiceQuestion extends Question -{ - private array $choices; - private bool $multiselect = false; - private string $prompt = ' > '; - private string $errorMessage = 'Value "%s" is invalid'; - - /** - * @param string $question The question to ask to the user - * @param array $choices The list of available choices - * @param string|bool|int|float|null $default The default answer to return - */ - public function __construct(string $question, array $choices, string|bool|int|float|null $default = null) - { - if (!$choices) { - throw new \LogicException('Choice question must have at least 1 choice available.'); - } - - parent::__construct($question, $default); - - $this->choices = $choices; - $this->setValidator($this->getDefaultValidator()); - $this->setAutocompleterValues($choices); - } - - /** - * Returns available choices. - */ - public function getChoices(): array - { - return $this->choices; - } - - /** - * Sets multiselect option. - * - * When multiselect is set to true, multiple choices can be answered. - * - * @return $this - */ - public function setMultiselect(bool $multiselect): static - { - $this->multiselect = $multiselect; - $this->setValidator($this->getDefaultValidator()); - - return $this; - } - - /** - * Returns whether the choices are multiselect. - */ - public function isMultiselect(): bool - { - return $this->multiselect; - } - - /** - * Gets the prompt for choices. - */ - public function getPrompt(): string - { - return $this->prompt; - } - - /** - * Sets the prompt for choices. - * - * @return $this - */ - public function setPrompt(string $prompt): static - { - $this->prompt = $prompt; - - return $this; - } - - /** - * Sets the error message for invalid values. - * - * The error message has a string placeholder (%s) for the invalid value. - * - * @return $this - */ - public function setErrorMessage(string $errorMessage): static - { - $this->errorMessage = $errorMessage; - $this->setValidator($this->getDefaultValidator()); - - return $this; - } - - private function getDefaultValidator(): callable - { - $choices = $this->choices; - $errorMessage = $this->errorMessage; - $multiselect = $this->multiselect; - $isAssoc = $this->isAssoc($choices); - - return function ($selected) use ($choices, $errorMessage, $multiselect, $isAssoc) { - if ($multiselect) { - // Check for a separated comma values - if (!preg_match('/^[^,]+(?:,[^,]+)*$/', (string) $selected, $matches)) { - throw new InvalidArgumentException(sprintf($errorMessage, $selected)); - } - - $selectedChoices = explode(',', (string) $selected); - } else { - $selectedChoices = [$selected]; - } - - if ($this->isTrimmable()) { - foreach ($selectedChoices as $k => $v) { - $selectedChoices[$k] = trim((string) $v); - } - } - - $multiselectChoices = []; - foreach ($selectedChoices as $value) { - $results = []; - foreach ($choices as $key => $choice) { - if ($choice === $value) { - $results[] = $key; - } - } - - if (\count($results) > 1) { - throw new InvalidArgumentException(sprintf('The provided answer is ambiguous. Value should be one of "%s".', implode('" or "', $results))); - } - - $result = array_search($value, $choices); - - if (!$isAssoc) { - if (false !== $result) { - $result = $choices[$result]; - } elseif (isset($choices[$value])) { - $result = $choices[$value]; - } - } elseif (false === $result && isset($choices[$value])) { - $result = $value; - } - - if (false === $result) { - throw new InvalidArgumentException(sprintf($errorMessage, $value)); - } - - // For associative choices, consistently return the key as string: - $multiselectChoices[] = $isAssoc ? (string) $result : $result; - } - - if ($multiselect) { - return $multiselectChoices; - } - - return current($multiselectChoices); - }; - } -} diff --git a/docker/streamline-src/vendor/symfony/console/Resources/completion.bash b/docker/streamline-src/vendor/symfony/console/Resources/completion.bash deleted file mode 100644 index 64c6a338..00000000 --- a/docker/streamline-src/vendor/symfony/console/Resources/completion.bash +++ /dev/null @@ -1,94 +0,0 @@ -# This file is part of the Symfony package. -# -# (c) Fabien Potencier -# -# For the full copyright and license information, please view -# https://symfony.com/doc/current/contributing/code/license.html - -_sf_{{ COMMAND_NAME }}() { - - # Use the default completion for shell redirect operators. - for w in '>' '>>' '&>' '<'; do - if [[ $w = "${COMP_WORDS[COMP_CWORD-1]}" ]]; then - compopt -o filenames - COMPREPLY=($(compgen -f -- "${COMP_WORDS[COMP_CWORD]}")) - return 0 - fi - done - - # Use newline as only separator to allow space in completion values - local IFS=$'\n' - local sf_cmd="${COMP_WORDS[0]}" - - # for an alias, get the real script behind it - sf_cmd_type=$(type -t $sf_cmd) - if [[ $sf_cmd_type == "alias" ]]; then - sf_cmd=$(alias $sf_cmd | sed -E "s/alias $sf_cmd='(.*)'/\1/") - elif [[ $sf_cmd_type == "file" ]]; then - sf_cmd=$(type -p $sf_cmd) - fi - - if [[ $sf_cmd_type != "function" && ! -x $sf_cmd ]]; then - return 1 - fi - - local cur prev words cword - _get_comp_words_by_ref -n := cur prev words cword - - local completecmd=("$sf_cmd" "_complete" "--no-interaction" "-sbash" "-c$cword" "-a{{ VERSION }}") - for w in ${words[@]}; do - w=$(printf -- '%b' "$w") - # remove quotes from typed values - quote="${w:0:1}" - if [ "$quote" == \' ]; then - w="${w%\'}" - w="${w#\'}" - elif [ "$quote" == \" ]; then - w="${w%\"}" - w="${w#\"}" - fi - # empty values are ignored - if [ ! -z "$w" ]; then - completecmd+=("-i$w") - fi - done - - local sfcomplete - if sfcomplete=$(${completecmd[@]} 2>&1); then - local quote suggestions - quote=${cur:0:1} - - # Use single quotes by default if suggestions contains backslash (FQCN) - if [ "$quote" == '' ] && [[ "$sfcomplete" =~ \\ ]]; then - quote=\' - fi - - if [ "$quote" == \' ]; then - # single quotes: no additional escaping (does not accept ' in values) - suggestions=$(for s in $sfcomplete; do printf $'%q%q%q\n' "$quote" "$s" "$quote"; done) - elif [ "$quote" == \" ]; then - # double quotes: double escaping for \ $ ` " - suggestions=$(for s in $sfcomplete; do - s=${s//\\/\\\\} - s=${s//\$/\\\$} - s=${s//\`/\\\`} - s=${s//\"/\\\"} - printf $'%q%q%q\n' "$quote" "$s" "$quote"; - done) - else - # no quotes: double escaping - suggestions=$(for s in $sfcomplete; do printf $'%q\n' $(printf '%q' "$s"); done) - fi - COMPREPLY=($(IFS=$'\n' compgen -W "$suggestions" -- $(printf -- "%q" "$cur"))) - __ltrim_colon_completions "$cur" - else - if [[ "$sfcomplete" != *"Command \"_complete\" is not defined."* ]]; then - >&2 echo - >&2 echo $sfcomplete - fi - - return 1 - fi -} - -complete -F _sf_{{ COMMAND_NAME }} {{ COMMAND_NAME }} diff --git a/docker/streamline-src/vendor/symfony/console/Terminal.php b/docker/streamline-src/vendor/symfony/console/Terminal.php deleted file mode 100644 index f094aded..00000000 --- a/docker/streamline-src/vendor/symfony/console/Terminal.php +++ /dev/null @@ -1,235 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console; - -use Symfony\Component\Console\Output\AnsiColorMode; - -class Terminal -{ - public const DEFAULT_COLOR_MODE = AnsiColorMode::Ansi4; - - private static ?AnsiColorMode $colorMode = null; - private static ?int $width = null; - private static ?int $height = null; - private static ?bool $stty = null; - - /** - * About Ansi color types: https://en.wikipedia.org/wiki/ANSI_escape_code#Colors - * For more information about true color support with terminals https://github.com/termstandard/colors/. - */ - public static function getColorMode(): AnsiColorMode - { - // Use Cache from previous run (or user forced mode) - if (null !== self::$colorMode) { - return self::$colorMode; - } - - // Try with $COLORTERM first - if (\is_string($colorterm = getenv('COLORTERM'))) { - $colorterm = strtolower($colorterm); - - if (str_contains($colorterm, 'truecolor')) { - self::setColorMode(AnsiColorMode::Ansi24); - - return self::$colorMode; - } - - if (str_contains($colorterm, '256color')) { - self::setColorMode(AnsiColorMode::Ansi8); - - return self::$colorMode; - } - } - - // Try with $TERM - if (\is_string($term = getenv('TERM'))) { - $term = strtolower($term); - - if (str_contains($term, 'truecolor')) { - self::setColorMode(AnsiColorMode::Ansi24); - - return self::$colorMode; - } - - if (str_contains($term, '256color')) { - self::setColorMode(AnsiColorMode::Ansi8); - - return self::$colorMode; - } - } - - self::setColorMode(self::DEFAULT_COLOR_MODE); - - return self::$colorMode; - } - - /** - * Force a terminal color mode rendering. - */ - public static function setColorMode(?AnsiColorMode $colorMode): void - { - self::$colorMode = $colorMode; - } - - /** - * Gets the terminal width. - */ - public function getWidth(): int - { - $width = getenv('COLUMNS'); - if (false !== $width) { - return (int) trim($width); - } - - if (null === self::$width) { - self::initDimensions(); - } - - return self::$width ?: 80; - } - - /** - * Gets the terminal height. - */ - public function getHeight(): int - { - $height = getenv('LINES'); - if (false !== $height) { - return (int) trim($height); - } - - if (null === self::$height) { - self::initDimensions(); - } - - return self::$height ?: 50; - } - - /** - * @internal - */ - public static function hasSttyAvailable(): bool - { - if (null !== self::$stty) { - return self::$stty; - } - - // skip check if shell_exec function is disabled - if (!\function_exists('shell_exec')) { - return false; - } - - return self::$stty = (bool) shell_exec('stty 2> '.('\\' === \DIRECTORY_SEPARATOR ? 'NUL' : '/dev/null')); - } - - private static function initDimensions(): void - { - if ('\\' === \DIRECTORY_SEPARATOR) { - $ansicon = getenv('ANSICON'); - if (false !== $ansicon && preg_match('/^(\d+)x(\d+)(?: \((\d+)x(\d+)\))?$/', trim($ansicon), $matches)) { - // extract [w, H] from "wxh (WxH)" - // or [w, h] from "wxh" - self::$width = (int) $matches[1]; - self::$height = isset($matches[4]) ? (int) $matches[4] : (int) $matches[2]; - } elseif (!self::hasVt100Support() && self::hasSttyAvailable()) { - // only use stty on Windows if the terminal does not support vt100 (e.g. Windows 7 + git-bash) - // testing for stty in a Windows 10 vt100-enabled console will implicitly disable vt100 support on STDOUT - self::initDimensionsUsingStty(); - } elseif (null !== $dimensions = self::getConsoleMode()) { - // extract [w, h] from "wxh" - self::$width = (int) $dimensions[0]; - self::$height = (int) $dimensions[1]; - } - } else { - self::initDimensionsUsingStty(); - } - } - - /** - * Returns whether STDOUT has vt100 support (some Windows 10+ configurations). - */ - private static function hasVt100Support(): bool - { - return \function_exists('sapi_windows_vt100_support') && sapi_windows_vt100_support(fopen('php://stdout', 'w')); - } - - /** - * Initializes dimensions using the output of an stty columns line. - */ - private static function initDimensionsUsingStty(): void - { - if ($sttyString = self::getSttyColumns()) { - if (preg_match('/rows.(\d+);.columns.(\d+);/is', $sttyString, $matches)) { - // extract [w, h] from "rows h; columns w;" - self::$width = (int) $matches[2]; - self::$height = (int) $matches[1]; - } elseif (preg_match('/;.(\d+).rows;.(\d+).columns/is', $sttyString, $matches)) { - // extract [w, h] from "; h rows; w columns" - self::$width = (int) $matches[2]; - self::$height = (int) $matches[1]; - } - } - } - - /** - * Runs and parses mode CON if it's available, suppressing any error output. - * - * @return int[]|null An array composed of the width and the height or null if it could not be parsed - */ - private static function getConsoleMode(): ?array - { - $info = self::readFromProcess('mode CON'); - - if (null === $info || !preg_match('/--------+\r?\n.+?(\d+)\r?\n.+?(\d+)\r?\n/', $info, $matches)) { - return null; - } - - return [(int) $matches[2], (int) $matches[1]]; - } - - /** - * Runs and parses stty -a if it's available, suppressing any error output. - */ - private static function getSttyColumns(): ?string - { - return self::readFromProcess(['stty', '-a']); - } - - private static function readFromProcess(string|array $command): ?string - { - if (!\function_exists('proc_open')) { - return null; - } - - $descriptorspec = [ - 1 => ['pipe', 'w'], - 2 => ['pipe', 'w'], - ]; - - $cp = \function_exists('sapi_windows_cp_set') ? sapi_windows_cp_get() : 0; - - if (!$process = @proc_open($command, $descriptorspec, $pipes, null, null, ['suppress_errors' => true])) { - return null; - } - - $info = stream_get_contents($pipes[1]); - fclose($pipes[1]); - fclose($pipes[2]); - proc_close($process); - - if ($cp) { - sapi_windows_cp_set($cp); - } - - return $info; - } -} diff --git a/docker/streamline-src/vendor/symfony/css-selector/CHANGELOG.md b/docker/streamline-src/vendor/symfony/css-selector/CHANGELOG.md deleted file mode 100644 index d2b7fb1d..00000000 --- a/docker/streamline-src/vendor/symfony/css-selector/CHANGELOG.md +++ /dev/null @@ -1,29 +0,0 @@ -CHANGELOG -========= - -7.1 ---- - - * Add support for `:is()` - * Add support for `:where()` - -6.3 ---- - - * Add support for `:scope` - -4.4.0 ------ - - * Added support for `*:only-of-type` - -2.8.0 ------ - - * Added the `CssSelectorConverter` class as a non-static API for the component. - * Deprecated the `CssSelector` static API of the component. - -2.1.0 ------ - - * none diff --git a/docker/streamline-src/vendor/symfony/css-selector/Exception/SyntaxErrorException.php b/docker/streamline-src/vendor/symfony/css-selector/Exception/SyntaxErrorException.php deleted file mode 100644 index 52d8259b..00000000 --- a/docker/streamline-src/vendor/symfony/css-selector/Exception/SyntaxErrorException.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Exception; - -use Symfony\Component\CssSelector\Parser\Token; - -/** - * ParseException is thrown when a CSS selector syntax is not valid. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - */ -class SyntaxErrorException extends ParseException -{ - public static function unexpectedToken(string $expectedValue, Token $foundToken): self - { - return new self(\sprintf('Expected %s, but %s found.', $expectedValue, $foundToken)); - } - - public static function pseudoElementFound(string $pseudoElement, string $unexpectedLocation): self - { - return new self(\sprintf('Unexpected pseudo-element "::%s" found %s.', $pseudoElement, $unexpectedLocation)); - } - - public static function unclosedString(int $position): self - { - return new self(\sprintf('Unclosed/invalid string at %s.', $position)); - } - - public static function nestedNot(): self - { - return new self('Got nested ::not().'); - } - - public static function notAtTheStartOfASelector(string $pseudoElement): self - { - return new self(\sprintf('Got immediate child pseudo-element ":%s" not at the start of a selector', $pseudoElement)); - } - - public static function stringAsFunctionArgument(): self - { - return new self('String not allowed as function argument.'); - } -} diff --git a/docker/streamline-src/vendor/symfony/css-selector/Node/AttributeNode.php b/docker/streamline-src/vendor/symfony/css-selector/Node/AttributeNode.php deleted file mode 100644 index 9bcb3a4e..00000000 --- a/docker/streamline-src/vendor/symfony/css-selector/Node/AttributeNode.php +++ /dev/null @@ -1,73 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Node; - -/** - * Represents a "[| ]" node. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class AttributeNode extends AbstractNode -{ - public function __construct( - private NodeInterface $selector, - private ?string $namespace, - private string $attribute, - private string $operator, - private ?string $value, - ) { - } - - public function getSelector(): NodeInterface - { - return $this->selector; - } - - public function getNamespace(): ?string - { - return $this->namespace; - } - - public function getAttribute(): string - { - return $this->attribute; - } - - public function getOperator(): string - { - return $this->operator; - } - - public function getValue(): ?string - { - return $this->value; - } - - public function getSpecificity(): Specificity - { - return $this->selector->getSpecificity()->plus(new Specificity(0, 1, 0)); - } - - public function __toString(): string - { - $attribute = $this->namespace ? $this->namespace.'|'.$this->attribute : $this->attribute; - - return 'exists' === $this->operator - ? \sprintf('%s[%s[%s]]', $this->getNodeName(), $this->selector, $attribute) - : \sprintf("%s[%s[%s %s '%s']]", $this->getNodeName(), $this->selector, $attribute, $this->operator, $this->value); - } -} diff --git a/docker/streamline-src/vendor/symfony/css-selector/Node/ClassNode.php b/docker/streamline-src/vendor/symfony/css-selector/Node/ClassNode.php deleted file mode 100644 index e9862c31..00000000 --- a/docker/streamline-src/vendor/symfony/css-selector/Node/ClassNode.php +++ /dev/null @@ -1,51 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Node; - -/** - * Represents a "." node. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class ClassNode extends AbstractNode -{ - public function __construct( - private NodeInterface $selector, - private string $name, - ) { - } - - public function getSelector(): NodeInterface - { - return $this->selector; - } - - public function getName(): string - { - return $this->name; - } - - public function getSpecificity(): Specificity - { - return $this->selector->getSpecificity()->plus(new Specificity(0, 1, 0)); - } - - public function __toString(): string - { - return \sprintf('%s[%s.%s]', $this->getNodeName(), $this->selector, $this->name); - } -} diff --git a/docker/streamline-src/vendor/symfony/css-selector/Node/CombinedSelectorNode.php b/docker/streamline-src/vendor/symfony/css-selector/Node/CombinedSelectorNode.php deleted file mode 100644 index 78a2fd3e..00000000 --- a/docker/streamline-src/vendor/symfony/css-selector/Node/CombinedSelectorNode.php +++ /dev/null @@ -1,59 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Node; - -/** - * Represents a combined node. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class CombinedSelectorNode extends AbstractNode -{ - public function __construct( - private NodeInterface $selector, - private string $combinator, - private NodeInterface $subSelector, - ) { - } - - public function getSelector(): NodeInterface - { - return $this->selector; - } - - public function getCombinator(): string - { - return $this->combinator; - } - - public function getSubSelector(): NodeInterface - { - return $this->subSelector; - } - - public function getSpecificity(): Specificity - { - return $this->selector->getSpecificity()->plus($this->subSelector->getSpecificity()); - } - - public function __toString(): string - { - $combinator = ' ' === $this->combinator ? '' : $this->combinator; - - return \sprintf('%s[%s %s %s]', $this->getNodeName(), $this->selector, $combinator, $this->subSelector); - } -} diff --git a/docker/streamline-src/vendor/symfony/css-selector/Node/ElementNode.php b/docker/streamline-src/vendor/symfony/css-selector/Node/ElementNode.php deleted file mode 100644 index 9bfbd088..00000000 --- a/docker/streamline-src/vendor/symfony/css-selector/Node/ElementNode.php +++ /dev/null @@ -1,53 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Node; - -/** - * Represents a "|" node. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class ElementNode extends AbstractNode -{ - public function __construct( - private ?string $namespace = null, - private ?string $element = null, - ) { - } - - public function getNamespace(): ?string - { - return $this->namespace; - } - - public function getElement(): ?string - { - return $this->element; - } - - public function getSpecificity(): Specificity - { - return new Specificity(0, 0, $this->element ? 1 : 0); - } - - public function __toString(): string - { - $element = $this->element ?: '*'; - - return \sprintf('%s[%s]', $this->getNodeName(), $this->namespace ? $this->namespace.'|'.$element : $element); - } -} diff --git a/docker/streamline-src/vendor/symfony/css-selector/Node/FunctionNode.php b/docker/streamline-src/vendor/symfony/css-selector/Node/FunctionNode.php deleted file mode 100644 index de44600b..00000000 --- a/docker/streamline-src/vendor/symfony/css-selector/Node/FunctionNode.php +++ /dev/null @@ -1,70 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Node; - -use Symfony\Component\CssSelector\Parser\Token; - -/** - * Represents a ":()" node. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class FunctionNode extends AbstractNode -{ - private string $name; - - /** - * @param Token[] $arguments - */ - public function __construct( - private NodeInterface $selector, - string $name, - private array $arguments = [], - ) { - $this->name = strtolower($name); - } - - public function getSelector(): NodeInterface - { - return $this->selector; - } - - public function getName(): string - { - return $this->name; - } - - /** - * @return Token[] - */ - public function getArguments(): array - { - return $this->arguments; - } - - public function getSpecificity(): Specificity - { - return $this->selector->getSpecificity()->plus(new Specificity(0, 1, 0)); - } - - public function __toString(): string - { - $arguments = implode(', ', array_map(fn (Token $token) => "'".$token->getValue()."'", $this->arguments)); - - return \sprintf('%s[%s:%s(%s)]', $this->getNodeName(), $this->selector, $this->name, $arguments ? '['.$arguments.']' : ''); - } -} diff --git a/docker/streamline-src/vendor/symfony/css-selector/Node/HashNode.php b/docker/streamline-src/vendor/symfony/css-selector/Node/HashNode.php deleted file mode 100644 index b3fb3c9b..00000000 --- a/docker/streamline-src/vendor/symfony/css-selector/Node/HashNode.php +++ /dev/null @@ -1,51 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Node; - -/** - * Represents a "#" node. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class HashNode extends AbstractNode -{ - public function __construct( - private NodeInterface $selector, - private string $id, - ) { - } - - public function getSelector(): NodeInterface - { - return $this->selector; - } - - public function getId(): string - { - return $this->id; - } - - public function getSpecificity(): Specificity - { - return $this->selector->getSpecificity()->plus(new Specificity(1, 0, 0)); - } - - public function __toString(): string - { - return \sprintf('%s[%s#%s]', $this->getNodeName(), $this->selector, $this->id); - } -} diff --git a/docker/streamline-src/vendor/symfony/css-selector/Node/NegationNode.php b/docker/streamline-src/vendor/symfony/css-selector/Node/NegationNode.php deleted file mode 100644 index c14c33d8..00000000 --- a/docker/streamline-src/vendor/symfony/css-selector/Node/NegationNode.php +++ /dev/null @@ -1,51 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Node; - -/** - * Represents a ":not()" node. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class NegationNode extends AbstractNode -{ - public function __construct( - private NodeInterface $selector, - private NodeInterface $subSelector, - ) { - } - - public function getSelector(): NodeInterface - { - return $this->selector; - } - - public function getSubSelector(): NodeInterface - { - return $this->subSelector; - } - - public function getSpecificity(): Specificity - { - return $this->selector->getSpecificity()->plus($this->subSelector->getSpecificity()); - } - - public function __toString(): string - { - return \sprintf('%s[%s:not(%s)]', $this->getNodeName(), $this->selector, $this->subSelector); - } -} diff --git a/docker/streamline-src/vendor/symfony/css-selector/Node/PseudoNode.php b/docker/streamline-src/vendor/symfony/css-selector/Node/PseudoNode.php deleted file mode 100644 index d1082e86..00000000 --- a/docker/streamline-src/vendor/symfony/css-selector/Node/PseudoNode.php +++ /dev/null @@ -1,54 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Node; - -/** - * Represents a ":" node. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class PseudoNode extends AbstractNode -{ - private string $identifier; - - public function __construct( - private NodeInterface $selector, - string $identifier, - ) { - $this->identifier = strtolower($identifier); - } - - public function getSelector(): NodeInterface - { - return $this->selector; - } - - public function getIdentifier(): string - { - return $this->identifier; - } - - public function getSpecificity(): Specificity - { - return $this->selector->getSpecificity()->plus(new Specificity(0, 1, 0)); - } - - public function __toString(): string - { - return \sprintf('%s[%s:%s]', $this->getNodeName(), $this->selector, $this->identifier); - } -} diff --git a/docker/streamline-src/vendor/symfony/css-selector/Node/SelectorNode.php b/docker/streamline-src/vendor/symfony/css-selector/Node/SelectorNode.php deleted file mode 100644 index f36e54c6..00000000 --- a/docker/streamline-src/vendor/symfony/css-selector/Node/SelectorNode.php +++ /dev/null @@ -1,54 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Node; - -/** - * Represents a "(::|:)" node. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class SelectorNode extends AbstractNode -{ - private ?string $pseudoElement; - - public function __construct( - private NodeInterface $tree, - ?string $pseudoElement = null, - ) { - $this->pseudoElement = $pseudoElement ? strtolower($pseudoElement) : null; - } - - public function getTree(): NodeInterface - { - return $this->tree; - } - - public function getPseudoElement(): ?string - { - return $this->pseudoElement; - } - - public function getSpecificity(): Specificity - { - return $this->tree->getSpecificity()->plus(new Specificity(0, 0, $this->pseudoElement ? 1 : 0)); - } - - public function __toString(): string - { - return \sprintf('%s[%s%s]', $this->getNodeName(), $this->tree, $this->pseudoElement ? '::'.$this->pseudoElement : ''); - } -} diff --git a/docker/streamline-src/vendor/symfony/css-selector/Node/Specificity.php b/docker/streamline-src/vendor/symfony/css-selector/Node/Specificity.php deleted file mode 100644 index c669a395..00000000 --- a/docker/streamline-src/vendor/symfony/css-selector/Node/Specificity.php +++ /dev/null @@ -1,69 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Node; - -/** - * Represents a node specificity. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @see http://www.w3.org/TR/selectors/#specificity - * - * @author Jean-François Simon - * - * @internal - */ -class Specificity -{ - public const A_FACTOR = 100; - public const B_FACTOR = 10; - public const C_FACTOR = 1; - - public function __construct( - private int $a, - private int $b, - private int $c, - ) { - } - - public function plus(self $specificity): self - { - return new self($this->a + $specificity->a, $this->b + $specificity->b, $this->c + $specificity->c); - } - - public function getValue(): int - { - return $this->a * self::A_FACTOR + $this->b * self::B_FACTOR + $this->c * self::C_FACTOR; - } - - /** - * Returns -1 if the object specificity is lower than the argument, - * 0 if they are equal, and 1 if the argument is lower. - */ - public function compareTo(self $specificity): int - { - if ($this->a !== $specificity->a) { - return $this->a > $specificity->a ? 1 : -1; - } - - if ($this->b !== $specificity->b) { - return $this->b > $specificity->b ? 1 : -1; - } - - if ($this->c !== $specificity->c) { - return $this->c > $specificity->c ? 1 : -1; - } - - return 0; - } -} diff --git a/docker/streamline-src/vendor/symfony/css-selector/Parser/Handler/HashHandler.php b/docker/streamline-src/vendor/symfony/css-selector/Parser/Handler/HashHandler.php deleted file mode 100644 index 0be46528..00000000 --- a/docker/streamline-src/vendor/symfony/css-selector/Parser/Handler/HashHandler.php +++ /dev/null @@ -1,52 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Parser\Handler; - -use Symfony\Component\CssSelector\Parser\Reader; -use Symfony\Component\CssSelector\Parser\Token; -use Symfony\Component\CssSelector\Parser\Tokenizer\TokenizerEscaping; -use Symfony\Component\CssSelector\Parser\Tokenizer\TokenizerPatterns; -use Symfony\Component\CssSelector\Parser\TokenStream; - -/** - * CSS selector comment handler. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class HashHandler implements HandlerInterface -{ - public function __construct( - private TokenizerPatterns $patterns, - private TokenizerEscaping $escaping, - ) { - } - - public function handle(Reader $reader, TokenStream $stream): bool - { - $match = $reader->findPattern($this->patterns->getHashPattern()); - - if (!$match) { - return false; - } - - $value = $this->escaping->escapeUnicode($match[1]); - $stream->push(new Token(Token::TYPE_HASH, $value, $reader->getPosition())); - $reader->moveForward(\strlen($match[0])); - - return true; - } -} diff --git a/docker/streamline-src/vendor/symfony/css-selector/Parser/Handler/IdentifierHandler.php b/docker/streamline-src/vendor/symfony/css-selector/Parser/Handler/IdentifierHandler.php deleted file mode 100644 index 7e4356b7..00000000 --- a/docker/streamline-src/vendor/symfony/css-selector/Parser/Handler/IdentifierHandler.php +++ /dev/null @@ -1,52 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Parser\Handler; - -use Symfony\Component\CssSelector\Parser\Reader; -use Symfony\Component\CssSelector\Parser\Token; -use Symfony\Component\CssSelector\Parser\Tokenizer\TokenizerEscaping; -use Symfony\Component\CssSelector\Parser\Tokenizer\TokenizerPatterns; -use Symfony\Component\CssSelector\Parser\TokenStream; - -/** - * CSS selector comment handler. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class IdentifierHandler implements HandlerInterface -{ - public function __construct( - private TokenizerPatterns $patterns, - private TokenizerEscaping $escaping, - ) { - } - - public function handle(Reader $reader, TokenStream $stream): bool - { - $match = $reader->findPattern($this->patterns->getIdentifierPattern()); - - if (!$match) { - return false; - } - - $value = $this->escaping->escapeUnicode($match[0]); - $stream->push(new Token(Token::TYPE_IDENTIFIER, $value, $reader->getPosition())); - $reader->moveForward(\strlen($match[0])); - - return true; - } -} diff --git a/docker/streamline-src/vendor/symfony/css-selector/Parser/Handler/NumberHandler.php b/docker/streamline-src/vendor/symfony/css-selector/Parser/Handler/NumberHandler.php deleted file mode 100644 index 38cc9b1f..00000000 --- a/docker/streamline-src/vendor/symfony/css-selector/Parser/Handler/NumberHandler.php +++ /dev/null @@ -1,49 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Parser\Handler; - -use Symfony\Component\CssSelector\Parser\Reader; -use Symfony\Component\CssSelector\Parser\Token; -use Symfony\Component\CssSelector\Parser\Tokenizer\TokenizerPatterns; -use Symfony\Component\CssSelector\Parser\TokenStream; - -/** - * CSS selector comment handler. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class NumberHandler implements HandlerInterface -{ - public function __construct( - private TokenizerPatterns $patterns, - ) { - } - - public function handle(Reader $reader, TokenStream $stream): bool - { - $match = $reader->findPattern($this->patterns->getNumberPattern()); - - if (!$match) { - return false; - } - - $stream->push(new Token(Token::TYPE_NUMBER, $match[0], $reader->getPosition())); - $reader->moveForward(\strlen($match[0])); - - return true; - } -} diff --git a/docker/streamline-src/vendor/symfony/css-selector/Parser/Handler/StringHandler.php b/docker/streamline-src/vendor/symfony/css-selector/Parser/Handler/StringHandler.php deleted file mode 100644 index 5e00eda0..00000000 --- a/docker/streamline-src/vendor/symfony/css-selector/Parser/Handler/StringHandler.php +++ /dev/null @@ -1,71 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Parser\Handler; - -use Symfony\Component\CssSelector\Exception\InternalErrorException; -use Symfony\Component\CssSelector\Exception\SyntaxErrorException; -use Symfony\Component\CssSelector\Parser\Reader; -use Symfony\Component\CssSelector\Parser\Token; -use Symfony\Component\CssSelector\Parser\Tokenizer\TokenizerEscaping; -use Symfony\Component\CssSelector\Parser\Tokenizer\TokenizerPatterns; -use Symfony\Component\CssSelector\Parser\TokenStream; - -/** - * CSS selector comment handler. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class StringHandler implements HandlerInterface -{ - public function __construct( - private TokenizerPatterns $patterns, - private TokenizerEscaping $escaping, - ) { - } - - public function handle(Reader $reader, TokenStream $stream): bool - { - $quote = $reader->getSubstring(1); - - if (!\in_array($quote, ["'", '"'])) { - return false; - } - - $reader->moveForward(1); - $match = $reader->findPattern($this->patterns->getQuotedStringPattern($quote)); - - if (!$match) { - throw new InternalErrorException(\sprintf('Should have found at least an empty match at %d.', $reader->getPosition())); - } - - // check unclosed strings - if (\strlen($match[0]) === $reader->getRemainingLength()) { - throw SyntaxErrorException::unclosedString($reader->getPosition() - 1); - } - - // check quotes pairs validity - if ($quote !== $reader->getSubstring(1, \strlen($match[0]))) { - throw SyntaxErrorException::unclosedString($reader->getPosition() - 1); - } - - $string = $this->escaping->escapeUnicodeAndNewLine($match[0]); - $stream->push(new Token(Token::TYPE_STRING, $string, $reader->getPosition())); - $reader->moveForward(\strlen($match[0]) + 1); - - return true; - } -} diff --git a/docker/streamline-src/vendor/symfony/css-selector/Parser/Parser.php b/docker/streamline-src/vendor/symfony/css-selector/Parser/Parser.php deleted file mode 100644 index f7eea2f8..00000000 --- a/docker/streamline-src/vendor/symfony/css-selector/Parser/Parser.php +++ /dev/null @@ -1,385 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Parser; - -use Symfony\Component\CssSelector\Exception\SyntaxErrorException; -use Symfony\Component\CssSelector\Node; -use Symfony\Component\CssSelector\Parser\Tokenizer\Tokenizer; - -/** - * CSS selector parser. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/scrapy/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class Parser implements ParserInterface -{ - private Tokenizer $tokenizer; - - public function __construct(?Tokenizer $tokenizer = null) - { - $this->tokenizer = $tokenizer ?? new Tokenizer(); - } - - public function parse(string $source): array - { - $reader = new Reader($source); - $stream = $this->tokenizer->tokenize($reader); - - return $this->parseSelectorList($stream); - } - - /** - * Parses the arguments for ":nth-child()" and friends. - * - * @param Token[] $tokens - * - * @throws SyntaxErrorException - */ - public static function parseSeries(array $tokens): array - { - foreach ($tokens as $token) { - if ($token->isString()) { - throw SyntaxErrorException::stringAsFunctionArgument(); - } - } - - $joined = trim(implode('', array_map(fn (Token $token) => $token->getValue(), $tokens))); - - $int = function ($string) { - if (!is_numeric($string)) { - throw SyntaxErrorException::stringAsFunctionArgument(); - } - - return (int) $string; - }; - - switch (true) { - case 'odd' === $joined: - return [2, 1]; - case 'even' === $joined: - return [2, 0]; - case 'n' === $joined: - return [1, 0]; - case !str_contains($joined, 'n'): - return [0, $int($joined)]; - } - - $split = explode('n', $joined); - $first = $split[0] ?? null; - - return [ - $first ? ('-' === $first || '+' === $first ? $int($first.'1') : $int($first)) : 1, - isset($split[1]) && $split[1] ? $int($split[1]) : 0, - ]; - } - - private function parseSelectorList(TokenStream $stream, bool $isArgument = false): array - { - $stream->skipWhitespace(); - $selectors = []; - - while (true) { - if ($isArgument && $stream->getPeek()->isDelimiter([')'])) { - break; - } - - $selectors[] = $this->parserSelectorNode($stream, $isArgument); - - if ($stream->getPeek()->isDelimiter([','])) { - $stream->getNext(); - $stream->skipWhitespace(); - } else { - break; - } - } - - return $selectors; - } - - private function parserSelectorNode(TokenStream $stream, bool $isArgument = false): Node\SelectorNode - { - [$result, $pseudoElement] = $this->parseSimpleSelector($stream, false, $isArgument); - - while (true) { - $stream->skipWhitespace(); - $peek = $stream->getPeek(); - - if ( - $peek->isFileEnd() - || $peek->isDelimiter([',']) - || ($isArgument && $peek->isDelimiter([')'])) - ) { - break; - } - - if (null !== $pseudoElement) { - throw SyntaxErrorException::pseudoElementFound($pseudoElement, 'not at the end of a selector'); - } - - if ($peek->isDelimiter(['+', '>', '~'])) { - $combinator = $stream->getNext()->getValue(); - $stream->skipWhitespace(); - } else { - $combinator = ' '; - } - - [$nextSelector, $pseudoElement] = $this->parseSimpleSelector($stream, false, $isArgument); - $result = new Node\CombinedSelectorNode($result, $combinator, $nextSelector); - } - - return new Node\SelectorNode($result, $pseudoElement); - } - - /** - * Parses next simple node (hash, class, pseudo, negation). - * - * @throws SyntaxErrorException - */ - private function parseSimpleSelector(TokenStream $stream, bool $insideNegation = false, bool $isArgument = false): array - { - $stream->skipWhitespace(); - - $selectorStart = \count($stream->getUsed()); - $result = $this->parseElementNode($stream); - $pseudoElement = null; - - while (true) { - $peek = $stream->getPeek(); - if ($peek->isWhitespace() - || $peek->isFileEnd() - || $peek->isDelimiter([',', '+', '>', '~']) - || ($isArgument && $peek->isDelimiter([')'])) - ) { - break; - } - - if (null !== $pseudoElement) { - throw SyntaxErrorException::pseudoElementFound($pseudoElement, 'not at the end of a selector'); - } - - if ($peek->isHash()) { - $result = new Node\HashNode($result, $stream->getNext()->getValue()); - } elseif ($peek->isDelimiter(['.'])) { - $stream->getNext(); - $result = new Node\ClassNode($result, $stream->getNextIdentifier()); - } elseif ($peek->isDelimiter(['['])) { - $stream->getNext(); - $result = $this->parseAttributeNode($result, $stream); - } elseif ($peek->isDelimiter([':'])) { - $stream->getNext(); - - if ($stream->getPeek()->isDelimiter([':'])) { - $stream->getNext(); - $pseudoElement = $stream->getNextIdentifier(); - - continue; - } - - $identifier = $stream->getNextIdentifier(); - if (\in_array(strtolower($identifier), ['first-line', 'first-letter', 'before', 'after'])) { - // Special case: CSS 2.1 pseudo-elements can have a single ':'. - // Any new pseudo-element must have two. - $pseudoElement = $identifier; - - continue; - } - - if (!$stream->getPeek()->isDelimiter(['('])) { - $result = new Node\PseudoNode($result, $identifier); - if ('Pseudo[Element[*]:scope]' === $result->__toString()) { - $used = \count($stream->getUsed()); - if (!(2 === $used - || 3 === $used && $stream->getUsed()[0]->isWhiteSpace() - || $used >= 3 && $stream->getUsed()[$used - 3]->isDelimiter([',']) - || $used >= 4 - && $stream->getUsed()[$used - 3]->isWhiteSpace() - && $stream->getUsed()[$used - 4]->isDelimiter([',']) - )) { - throw SyntaxErrorException::notAtTheStartOfASelector('scope'); - } - } - continue; - } - - $stream->getNext(); - $stream->skipWhitespace(); - - if ('not' === strtolower($identifier)) { - if ($insideNegation) { - throw SyntaxErrorException::nestedNot(); - } - - [$argument, $argumentPseudoElement] = $this->parseSimpleSelector($stream, true, true); - $next = $stream->getNext(); - - if (null !== $argumentPseudoElement) { - throw SyntaxErrorException::pseudoElementFound($argumentPseudoElement, 'inside ::not()'); - } - - if (!$next->isDelimiter([')'])) { - throw SyntaxErrorException::unexpectedToken('")"', $next); - } - - $result = new Node\NegationNode($result, $argument); - } elseif ('is' === strtolower($identifier)) { - $selectors = $this->parseSelectorList($stream, true); - - $next = $stream->getNext(); - if (!$next->isDelimiter([')'])) { - throw SyntaxErrorException::unexpectedToken('")"', $next); - } - - $result = new Node\MatchingNode($result, $selectors); - } elseif ('where' === strtolower($identifier)) { - $selectors = $this->parseSelectorList($stream, true); - - $next = $stream->getNext(); - if (!$next->isDelimiter([')'])) { - throw SyntaxErrorException::unexpectedToken('")"', $next); - } - - $result = new Node\SpecificityAdjustmentNode($result, $selectors); - } else { - $arguments = []; - $next = null; - - while (true) { - $stream->skipWhitespace(); - $next = $stream->getNext(); - - if ($next->isIdentifier() - || $next->isString() - || $next->isNumber() - || $next->isDelimiter(['+', '-']) - ) { - $arguments[] = $next; - } elseif ($next->isDelimiter([')'])) { - break; - } else { - throw SyntaxErrorException::unexpectedToken('an argument', $next); - } - } - - if (!$arguments) { - throw SyntaxErrorException::unexpectedToken('at least one argument', $next); - } - - $result = new Node\FunctionNode($result, $identifier, $arguments); - } - } else { - throw SyntaxErrorException::unexpectedToken('selector', $peek); - } - } - - if (\count($stream->getUsed()) === $selectorStart) { - throw SyntaxErrorException::unexpectedToken('selector', $stream->getPeek()); - } - - return [$result, $pseudoElement]; - } - - private function parseElementNode(TokenStream $stream): Node\ElementNode - { - $peek = $stream->getPeek(); - - if ($peek->isIdentifier() || $peek->isDelimiter(['*'])) { - if ($peek->isIdentifier()) { - $namespace = $stream->getNext()->getValue(); - } else { - $stream->getNext(); - $namespace = null; - } - - if ($stream->getPeek()->isDelimiter(['|'])) { - $stream->getNext(); - $element = $stream->getNextIdentifierOrStar(); - } else { - $element = $namespace; - $namespace = null; - } - } else { - $element = $namespace = null; - } - - return new Node\ElementNode($namespace, $element); - } - - private function parseAttributeNode(Node\NodeInterface $selector, TokenStream $stream): Node\AttributeNode - { - $stream->skipWhitespace(); - $attribute = $stream->getNextIdentifierOrStar(); - - if (null === $attribute && !$stream->getPeek()->isDelimiter(['|'])) { - throw SyntaxErrorException::unexpectedToken('"|"', $stream->getPeek()); - } - - if ($stream->getPeek()->isDelimiter(['|'])) { - $stream->getNext(); - - if ($stream->getPeek()->isDelimiter(['='])) { - $namespace = null; - $stream->getNext(); - $operator = '|='; - } else { - $namespace = $attribute; - $attribute = $stream->getNextIdentifier(); - $operator = null; - } - } else { - $namespace = $operator = null; - } - - if (null === $operator) { - $stream->skipWhitespace(); - $next = $stream->getNext(); - - if ($next->isDelimiter([']'])) { - return new Node\AttributeNode($selector, $namespace, $attribute, 'exists', null); - } elseif ($next->isDelimiter(['='])) { - $operator = '='; - } elseif ($next->isDelimiter(['^', '$', '*', '~', '|', '!']) - && $stream->getPeek()->isDelimiter(['=']) - ) { - $operator = $next->getValue().'='; - $stream->getNext(); - } else { - throw SyntaxErrorException::unexpectedToken('operator', $next); - } - } - - $stream->skipWhitespace(); - $value = $stream->getNext(); - - if ($value->isNumber()) { - // if the value is a number, it's casted into a string - $value = new Token(Token::TYPE_STRING, (string) $value->getValue(), $value->getPosition()); - } - - if (!($value->isIdentifier() || $value->isString())) { - throw SyntaxErrorException::unexpectedToken('string or identifier', $value); - } - - $stream->skipWhitespace(); - $next = $stream->getNext(); - - if (!$next->isDelimiter([']'])) { - throw SyntaxErrorException::unexpectedToken('"]"', $next); - } - - return new Node\AttributeNode($selector, $namespace, $attribute, $operator, $value->getValue()); - } -} diff --git a/docker/streamline-src/vendor/symfony/css-selector/Parser/Reader.php b/docker/streamline-src/vendor/symfony/css-selector/Parser/Reader.php deleted file mode 100644 index b68d02f9..00000000 --- a/docker/streamline-src/vendor/symfony/css-selector/Parser/Reader.php +++ /dev/null @@ -1,82 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Parser; - -/** - * CSS selector reader. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class Reader -{ - private int $length; - private int $position = 0; - - public function __construct( - private string $source, - ) { - $this->length = \strlen($source); - } - - public function isEOF(): bool - { - return $this->position >= $this->length; - } - - public function getPosition(): int - { - return $this->position; - } - - public function getRemainingLength(): int - { - return $this->length - $this->position; - } - - public function getSubstring(int $length, int $offset = 0): string - { - return substr($this->source, $this->position + $offset, $length); - } - - public function getOffset(string $string): int|false - { - $position = strpos($this->source, $string, $this->position); - - return false === $position ? false : $position - $this->position; - } - - public function findPattern(string $pattern): array|false - { - $source = substr($this->source, $this->position); - - if (preg_match($pattern, $source, $matches)) { - return $matches; - } - - return false; - } - - public function moveForward(int $length): void - { - $this->position += $length; - } - - public function moveToEnd(): void - { - $this->position = $this->length; - } -} diff --git a/docker/streamline-src/vendor/symfony/css-selector/Parser/Token.php b/docker/streamline-src/vendor/symfony/css-selector/Parser/Token.php deleted file mode 100644 index 5bfb8d4d..00000000 --- a/docker/streamline-src/vendor/symfony/css-selector/Parser/Token.php +++ /dev/null @@ -1,107 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Parser; - -/** - * CSS selector token. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class Token -{ - public const TYPE_FILE_END = 'eof'; - public const TYPE_DELIMITER = 'delimiter'; - public const TYPE_WHITESPACE = 'whitespace'; - public const TYPE_IDENTIFIER = 'identifier'; - public const TYPE_HASH = 'hash'; - public const TYPE_NUMBER = 'number'; - public const TYPE_STRING = 'string'; - - public function __construct( - private ?string $type, - private ?string $value, - private ?int $position, - ) { - } - - public function getType(): ?int - { - return $this->type; - } - - public function getValue(): ?string - { - return $this->value; - } - - public function getPosition(): ?int - { - return $this->position; - } - - public function isFileEnd(): bool - { - return self::TYPE_FILE_END === $this->type; - } - - public function isDelimiter(array $values = []): bool - { - if (self::TYPE_DELIMITER !== $this->type) { - return false; - } - - if (!$values) { - return true; - } - - return \in_array($this->value, $values, true); - } - - public function isWhitespace(): bool - { - return self::TYPE_WHITESPACE === $this->type; - } - - public function isIdentifier(): bool - { - return self::TYPE_IDENTIFIER === $this->type; - } - - public function isHash(): bool - { - return self::TYPE_HASH === $this->type; - } - - public function isNumber(): bool - { - return self::TYPE_NUMBER === $this->type; - } - - public function isString(): bool - { - return self::TYPE_STRING === $this->type; - } - - public function __toString(): string - { - if ($this->value) { - return \sprintf('<%s "%s" at %s>', $this->type, $this->value, $this->position); - } - - return \sprintf('<%s at %s>', $this->type, $this->position); - } -} diff --git a/docker/streamline-src/vendor/symfony/css-selector/Parser/Tokenizer/TokenizerEscaping.php b/docker/streamline-src/vendor/symfony/css-selector/Parser/Tokenizer/TokenizerEscaping.php deleted file mode 100644 index bb504e46..00000000 --- a/docker/streamline-src/vendor/symfony/css-selector/Parser/Tokenizer/TokenizerEscaping.php +++ /dev/null @@ -1,63 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Parser\Tokenizer; - -/** - * CSS selector tokenizer escaping applier. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class TokenizerEscaping -{ - public function __construct( - private TokenizerPatterns $patterns, - ) { - } - - public function escapeUnicode(string $value): string - { - $value = $this->replaceUnicodeSequences($value); - - return preg_replace($this->patterns->getSimpleEscapePattern(), '$1', $value); - } - - public function escapeUnicodeAndNewLine(string $value): string - { - $value = preg_replace($this->patterns->getNewLineEscapePattern(), '', $value); - - return $this->escapeUnicode($value); - } - - private function replaceUnicodeSequences(string $value): string - { - return preg_replace_callback($this->patterns->getUnicodeEscapePattern(), function ($match) { - $c = hexdec($match[1]); - - if (0x80 > $c %= 0x200000) { - return \chr($c); - } - if (0x800 > $c) { - return \chr(0xC0 | $c >> 6).\chr(0x80 | $c & 0x3F); - } - if (0x10000 > $c) { - return \chr(0xE0 | $c >> 12).\chr(0x80 | $c >> 6 & 0x3F).\chr(0x80 | $c & 0x3F); - } - - return ''; - }, $value); - } -} diff --git a/docker/streamline-src/vendor/symfony/css-selector/Parser/Tokenizer/TokenizerPatterns.php b/docker/streamline-src/vendor/symfony/css-selector/Parser/Tokenizer/TokenizerPatterns.php deleted file mode 100644 index 1825bbf3..00000000 --- a/docker/streamline-src/vendor/symfony/css-selector/Parser/Tokenizer/TokenizerPatterns.php +++ /dev/null @@ -1,89 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Parser\Tokenizer; - -/** - * CSS selector tokenizer patterns builder. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class TokenizerPatterns -{ - private string $unicodeEscapePattern; - private string $simpleEscapePattern; - private string $newLineEscapePattern; - private string $escapePattern; - private string $stringEscapePattern; - private string $nonAsciiPattern; - private string $nmCharPattern; - private string $nmStartPattern; - private string $identifierPattern; - private string $hashPattern; - private string $numberPattern; - private string $quotedStringPattern; - - public function __construct() - { - $this->unicodeEscapePattern = '\\\\([0-9a-f]{1,6})(?:\r\n|[ \n\r\t\f])?'; - $this->simpleEscapePattern = '\\\\(.)'; - $this->newLineEscapePattern = '\\\\(?:\n|\r\n|\r|\f)'; - $this->escapePattern = $this->unicodeEscapePattern.'|\\\\[^\n\r\f0-9a-f]'; - $this->stringEscapePattern = $this->newLineEscapePattern.'|'.$this->escapePattern; - $this->nonAsciiPattern = '[^\x00-\x7F]'; - $this->nmCharPattern = '[_a-z0-9-]|'.$this->escapePattern.'|'.$this->nonAsciiPattern; - $this->nmStartPattern = '[_a-z]|'.$this->escapePattern.'|'.$this->nonAsciiPattern; - $this->identifierPattern = '-?(?:'.$this->nmStartPattern.')(?:'.$this->nmCharPattern.')*'; - $this->hashPattern = '#((?:'.$this->nmCharPattern.')+)'; - $this->numberPattern = '[+-]?(?:[0-9]*\.[0-9]+|[0-9]+)'; - $this->quotedStringPattern = '([^\n\r\f\\\\%s]|'.$this->stringEscapePattern.')*'; - } - - public function getNewLineEscapePattern(): string - { - return '~'.$this->newLineEscapePattern.'~'; - } - - public function getSimpleEscapePattern(): string - { - return '~'.$this->simpleEscapePattern.'~'; - } - - public function getUnicodeEscapePattern(): string - { - return '~'.$this->unicodeEscapePattern.'~i'; - } - - public function getIdentifierPattern(): string - { - return '~^'.$this->identifierPattern.'~i'; - } - - public function getHashPattern(): string - { - return '~^'.$this->hashPattern.'~i'; - } - - public function getNumberPattern(): string - { - return '~^'.$this->numberPattern.'~'; - } - - public function getQuotedStringPattern(string $quote): string - { - return '~^'.\sprintf($this->quotedStringPattern, $quote).'~i'; - } -} diff --git a/docker/streamline-src/vendor/symfony/css-selector/XPath/Extension/AttributeMatchingExtension.php b/docker/streamline-src/vendor/symfony/css-selector/XPath/Extension/AttributeMatchingExtension.php deleted file mode 100644 index 28a16c1b..00000000 --- a/docker/streamline-src/vendor/symfony/css-selector/XPath/Extension/AttributeMatchingExtension.php +++ /dev/null @@ -1,113 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\XPath\Extension; - -use Symfony\Component\CssSelector\XPath\Translator; -use Symfony\Component\CssSelector\XPath\XPathExpr; - -/** - * XPath expression translator attribute extension. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class AttributeMatchingExtension extends AbstractExtension -{ - public function getAttributeMatchingTranslators(): array - { - return [ - 'exists' => $this->translateExists(...), - '=' => $this->translateEquals(...), - '~=' => $this->translateIncludes(...), - '|=' => $this->translateDashMatch(...), - '^=' => $this->translatePrefixMatch(...), - '$=' => $this->translateSuffixMatch(...), - '*=' => $this->translateSubstringMatch(...), - '!=' => $this->translateDifferent(...), - ]; - } - - public function translateExists(XPathExpr $xpath, string $attribute, ?string $value): XPathExpr - { - return $xpath->addCondition($attribute); - } - - public function translateEquals(XPathExpr $xpath, string $attribute, ?string $value): XPathExpr - { - return $xpath->addCondition(\sprintf('%s = %s', $attribute, Translator::getXpathLiteral($value))); - } - - public function translateIncludes(XPathExpr $xpath, string $attribute, ?string $value): XPathExpr - { - return $xpath->addCondition($value ? \sprintf( - '%1$s and contains(concat(\' \', normalize-space(%1$s), \' \'), %2$s)', - $attribute, - Translator::getXpathLiteral(' '.$value.' ') - ) : '0'); - } - - public function translateDashMatch(XPathExpr $xpath, string $attribute, ?string $value): XPathExpr - { - return $xpath->addCondition(\sprintf( - '%1$s and (%1$s = %2$s or starts-with(%1$s, %3$s))', - $attribute, - Translator::getXpathLiteral($value), - Translator::getXpathLiteral($value.'-') - )); - } - - public function translatePrefixMatch(XPathExpr $xpath, string $attribute, ?string $value): XPathExpr - { - return $xpath->addCondition($value ? \sprintf( - '%1$s and starts-with(%1$s, %2$s)', - $attribute, - Translator::getXpathLiteral($value) - ) : '0'); - } - - public function translateSuffixMatch(XPathExpr $xpath, string $attribute, ?string $value): XPathExpr - { - return $xpath->addCondition($value ? \sprintf( - '%1$s and substring(%1$s, string-length(%1$s)-%2$s) = %3$s', - $attribute, - \strlen($value) - 1, - Translator::getXpathLiteral($value) - ) : '0'); - } - - public function translateSubstringMatch(XPathExpr $xpath, string $attribute, ?string $value): XPathExpr - { - return $xpath->addCondition($value ? \sprintf( - '%1$s and contains(%1$s, %2$s)', - $attribute, - Translator::getXpathLiteral($value) - ) : '0'); - } - - public function translateDifferent(XPathExpr $xpath, string $attribute, ?string $value): XPathExpr - { - return $xpath->addCondition(\sprintf( - $value ? 'not(%1$s) or %1$s != %2$s' : '%s != %s', - $attribute, - Translator::getXpathLiteral($value) - )); - } - - public function getName(): string - { - return 'attribute-matching'; - } -} diff --git a/docker/streamline-src/vendor/symfony/css-selector/XPath/Extension/FunctionExtension.php b/docker/streamline-src/vendor/symfony/css-selector/XPath/Extension/FunctionExtension.php deleted file mode 100644 index 557e3052..00000000 --- a/docker/streamline-src/vendor/symfony/css-selector/XPath/Extension/FunctionExtension.php +++ /dev/null @@ -1,165 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\XPath\Extension; - -use Symfony\Component\CssSelector\Exception\ExpressionErrorException; -use Symfony\Component\CssSelector\Exception\SyntaxErrorException; -use Symfony\Component\CssSelector\Node\FunctionNode; -use Symfony\Component\CssSelector\Parser\Parser; -use Symfony\Component\CssSelector\XPath\Translator; -use Symfony\Component\CssSelector\XPath\XPathExpr; - -/** - * XPath expression translator function extension. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class FunctionExtension extends AbstractExtension -{ - public function getFunctionTranslators(): array - { - return [ - 'nth-child' => $this->translateNthChild(...), - 'nth-last-child' => $this->translateNthLastChild(...), - 'nth-of-type' => $this->translateNthOfType(...), - 'nth-last-of-type' => $this->translateNthLastOfType(...), - 'contains' => $this->translateContains(...), - 'lang' => $this->translateLang(...), - ]; - } - - /** - * @throws ExpressionErrorException - */ - public function translateNthChild(XPathExpr $xpath, FunctionNode $function, bool $last = false, bool $addNameTest = true): XPathExpr - { - try { - [$a, $b] = Parser::parseSeries($function->getArguments()); - } catch (SyntaxErrorException $e) { - throw new ExpressionErrorException(\sprintf('Invalid series: "%s".', implode('", "', $function->getArguments())), 0, $e); - } - - $xpath->addStarPrefix(); - if ($addNameTest) { - $xpath->addNameTest(); - } - - if (0 === $a) { - return $xpath->addCondition('position() = '.($last ? 'last() - '.($b - 1) : $b)); - } - - if ($a < 0) { - if ($b < 1) { - return $xpath->addCondition('false()'); - } - - $sign = '<='; - } else { - $sign = '>='; - } - - $expr = 'position()'; - - if ($last) { - $expr = 'last() - '.$expr; - --$b; - } - - if (0 !== $b) { - $expr .= ' - '.$b; - } - - $conditions = [\sprintf('%s %s 0', $expr, $sign)]; - - if (1 !== $a && -1 !== $a) { - $conditions[] = \sprintf('(%s) mod %d = 0', $expr, $a); - } - - return $xpath->addCondition(implode(' and ', $conditions)); - - // todo: handle an+b, odd, even - // an+b means every-a, plus b, e.g., 2n+1 means odd - // 0n+b means b - // n+0 means a=1, i.e., all elements - // an means every a elements, i.e., 2n means even - // -n means -1n - // -1n+6 means elements 6 and previous - } - - public function translateNthLastChild(XPathExpr $xpath, FunctionNode $function): XPathExpr - { - return $this->translateNthChild($xpath, $function, true); - } - - public function translateNthOfType(XPathExpr $xpath, FunctionNode $function): XPathExpr - { - return $this->translateNthChild($xpath, $function, false, false); - } - - /** - * @throws ExpressionErrorException - */ - public function translateNthLastOfType(XPathExpr $xpath, FunctionNode $function): XPathExpr - { - if ('*' === $xpath->getElement()) { - throw new ExpressionErrorException('"*:nth-of-type()" is not implemented.'); - } - - return $this->translateNthChild($xpath, $function, true, false); - } - - /** - * @throws ExpressionErrorException - */ - public function translateContains(XPathExpr $xpath, FunctionNode $function): XPathExpr - { - $arguments = $function->getArguments(); - foreach ($arguments as $token) { - if (!($token->isString() || $token->isIdentifier())) { - throw new ExpressionErrorException('Expected a single string or identifier for :contains(), got '.implode(', ', $arguments)); - } - } - - return $xpath->addCondition(\sprintf( - 'contains(string(.), %s)', - Translator::getXpathLiteral($arguments[0]->getValue()) - )); - } - - /** - * @throws ExpressionErrorException - */ - public function translateLang(XPathExpr $xpath, FunctionNode $function): XPathExpr - { - $arguments = $function->getArguments(); - foreach ($arguments as $token) { - if (!($token->isString() || $token->isIdentifier())) { - throw new ExpressionErrorException('Expected a single string or identifier for :lang(), got '.implode(', ', $arguments)); - } - } - - return $xpath->addCondition(\sprintf( - 'lang(%s)', - Translator::getXpathLiteral($arguments[0]->getValue()) - )); - } - - public function getName(): string - { - return 'function'; - } -} diff --git a/docker/streamline-src/vendor/symfony/css-selector/XPath/Extension/HtmlExtension.php b/docker/streamline-src/vendor/symfony/css-selector/XPath/Extension/HtmlExtension.php deleted file mode 100644 index b3bf1320..00000000 --- a/docker/streamline-src/vendor/symfony/css-selector/XPath/Extension/HtmlExtension.php +++ /dev/null @@ -1,178 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\XPath\Extension; - -use Symfony\Component\CssSelector\Exception\ExpressionErrorException; -use Symfony\Component\CssSelector\Node\FunctionNode; -use Symfony\Component\CssSelector\XPath\Translator; -use Symfony\Component\CssSelector\XPath\XPathExpr; - -/** - * XPath expression translator HTML extension. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class HtmlExtension extends AbstractExtension -{ - public function __construct(Translator $translator) - { - $translator - ->getExtension('node') - ->setFlag(NodeExtension::ELEMENT_NAME_IN_LOWER_CASE, true) - ->setFlag(NodeExtension::ATTRIBUTE_NAME_IN_LOWER_CASE, true); - } - - public function getPseudoClassTranslators(): array - { - return [ - 'checked' => $this->translateChecked(...), - 'link' => $this->translateLink(...), - 'disabled' => $this->translateDisabled(...), - 'enabled' => $this->translateEnabled(...), - 'selected' => $this->translateSelected(...), - 'invalid' => $this->translateInvalid(...), - 'hover' => $this->translateHover(...), - 'visited' => $this->translateVisited(...), - ]; - } - - public function getFunctionTranslators(): array - { - return [ - 'lang' => $this->translateLang(...), - ]; - } - - public function translateChecked(XPathExpr $xpath): XPathExpr - { - return $xpath->addCondition( - '(@checked ' - ."and (name(.) = 'input' or name(.) = 'command')" - ."and (@type = 'checkbox' or @type = 'radio'))" - ); - } - - public function translateLink(XPathExpr $xpath): XPathExpr - { - return $xpath->addCondition("@href and (name(.) = 'a' or name(.) = 'link' or name(.) = 'area')"); - } - - public function translateDisabled(XPathExpr $xpath): XPathExpr - { - return $xpath->addCondition( - '(' - .'@disabled and' - .'(' - ."(name(.) = 'input' and @type != 'hidden')" - ." or name(.) = 'button'" - ." or name(.) = 'select'" - ." or name(.) = 'textarea'" - ." or name(.) = 'command'" - ." or name(.) = 'fieldset'" - ." or name(.) = 'optgroup'" - ." or name(.) = 'option'" - .')' - .') or (' - ."(name(.) = 'input' and @type != 'hidden')" - ." or name(.) = 'button'" - ." or name(.) = 'select'" - ." or name(.) = 'textarea'" - .')' - .' and ancestor::fieldset[@disabled]' - ); - // todo: in the second half, add "and is not a descendant of that fieldset element's first legend element child, if any." - } - - public function translateEnabled(XPathExpr $xpath): XPathExpr - { - return $xpath->addCondition( - '(' - .'@href and (' - ."name(.) = 'a'" - ." or name(.) = 'link'" - ." or name(.) = 'area'" - .')' - .') or (' - .'(' - ."name(.) = 'command'" - ." or name(.) = 'fieldset'" - ." or name(.) = 'optgroup'" - .')' - .' and not(@disabled)' - .') or (' - .'(' - ."(name(.) = 'input' and @type != 'hidden')" - ." or name(.) = 'button'" - ." or name(.) = 'select'" - ." or name(.) = 'textarea'" - ." or name(.) = 'keygen'" - .')' - .' and not (@disabled or ancestor::fieldset[@disabled])' - .') or (' - ."name(.) = 'option' and not(" - .'@disabled or ancestor::optgroup[@disabled]' - .')' - .')' - ); - } - - /** - * @throws ExpressionErrorException - */ - public function translateLang(XPathExpr $xpath, FunctionNode $function): XPathExpr - { - $arguments = $function->getArguments(); - foreach ($arguments as $token) { - if (!($token->isString() || $token->isIdentifier())) { - throw new ExpressionErrorException('Expected a single string or identifier for :lang(), got '.implode(', ', $arguments)); - } - } - - return $xpath->addCondition(\sprintf( - 'ancestor-or-self::*[@lang][1][starts-with(concat(' - ."translate(@%s, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), '-')" - .', %s)]', - 'lang', - Translator::getXpathLiteral(strtolower($arguments[0]->getValue()).'-') - )); - } - - public function translateSelected(XPathExpr $xpath): XPathExpr - { - return $xpath->addCondition("(@selected and name(.) = 'option')"); - } - - public function translateInvalid(XPathExpr $xpath): XPathExpr - { - return $xpath->addCondition('0'); - } - - public function translateHover(XPathExpr $xpath): XPathExpr - { - return $xpath->addCondition('0'); - } - - public function translateVisited(XPathExpr $xpath): XPathExpr - { - return $xpath->addCondition('0'); - } - - public function getName(): string - { - return 'html'; - } -} diff --git a/docker/streamline-src/vendor/symfony/css-selector/XPath/Extension/NodeExtension.php b/docker/streamline-src/vendor/symfony/css-selector/XPath/Extension/NodeExtension.php deleted file mode 100644 index 4cd46fa1..00000000 --- a/docker/streamline-src/vendor/symfony/css-selector/XPath/Extension/NodeExtension.php +++ /dev/null @@ -1,221 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\XPath\Extension; - -use Symfony\Component\CssSelector\Node; -use Symfony\Component\CssSelector\XPath\Translator; -use Symfony\Component\CssSelector\XPath\XPathExpr; - -/** - * XPath expression translator node extension. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class NodeExtension extends AbstractExtension -{ - public const ELEMENT_NAME_IN_LOWER_CASE = 1; - public const ATTRIBUTE_NAME_IN_LOWER_CASE = 2; - public const ATTRIBUTE_VALUE_IN_LOWER_CASE = 4; - - public function __construct( - private int $flags = 0, - ) { - } - - /** - * @return $this - */ - public function setFlag(int $flag, bool $on): static - { - if ($on && !$this->hasFlag($flag)) { - $this->flags += $flag; - } - - if (!$on && $this->hasFlag($flag)) { - $this->flags -= $flag; - } - - return $this; - } - - public function hasFlag(int $flag): bool - { - return (bool) ($this->flags & $flag); - } - - public function getNodeTranslators(): array - { - return [ - 'Selector' => $this->translateSelector(...), - 'CombinedSelector' => $this->translateCombinedSelector(...), - 'Negation' => $this->translateNegation(...), - 'Matching' => $this->translateMatching(...), - 'SpecificityAdjustment' => $this->translateSpecificityAdjustment(...), - 'Function' => $this->translateFunction(...), - 'Pseudo' => $this->translatePseudo(...), - 'Attribute' => $this->translateAttribute(...), - 'Class' => $this->translateClass(...), - 'Hash' => $this->translateHash(...), - 'Element' => $this->translateElement(...), - ]; - } - - public function translateSelector(Node\SelectorNode $node, Translator $translator): XPathExpr - { - return $translator->nodeToXPath($node->getTree()); - } - - public function translateCombinedSelector(Node\CombinedSelectorNode $node, Translator $translator): XPathExpr - { - return $translator->addCombination($node->getCombinator(), $node->getSelector(), $node->getSubSelector()); - } - - public function translateNegation(Node\NegationNode $node, Translator $translator): XPathExpr - { - $xpath = $translator->nodeToXPath($node->getSelector()); - $subXpath = $translator->nodeToXPath($node->getSubSelector()); - $subXpath->addNameTest(); - - if ($subXpath->getCondition()) { - return $xpath->addCondition(\sprintf('not(%s)', $subXpath->getCondition())); - } - - return $xpath->addCondition('0'); - } - - public function translateMatching(Node\MatchingNode $node, Translator $translator): XPathExpr - { - $xpath = $translator->nodeToXPath($node->selector); - - foreach ($node->arguments as $argument) { - $expr = $translator->nodeToXPath($argument); - $expr->addNameTest(); - if ($condition = $expr->getCondition()) { - $xpath->addCondition($condition, 'or'); - } - } - - return $xpath; - } - - public function translateSpecificityAdjustment(Node\SpecificityAdjustmentNode $node, Translator $translator): XPathExpr - { - $xpath = $translator->nodeToXPath($node->selector); - - foreach ($node->arguments as $argument) { - $expr = $translator->nodeToXPath($argument); - $expr->addNameTest(); - if ($condition = $expr->getCondition()) { - $xpath->addCondition($condition, 'or'); - } - } - - return $xpath; - } - - public function translateFunction(Node\FunctionNode $node, Translator $translator): XPathExpr - { - $xpath = $translator->nodeToXPath($node->getSelector()); - - return $translator->addFunction($xpath, $node); - } - - public function translatePseudo(Node\PseudoNode $node, Translator $translator): XPathExpr - { - $xpath = $translator->nodeToXPath($node->getSelector()); - - return $translator->addPseudoClass($xpath, $node->getIdentifier()); - } - - public function translateAttribute(Node\AttributeNode $node, Translator $translator): XPathExpr - { - $name = $node->getAttribute(); - $safe = $this->isSafeName($name); - - if ($this->hasFlag(self::ATTRIBUTE_NAME_IN_LOWER_CASE)) { - $name = strtolower($name); - } - - if ($node->getNamespace()) { - $name = \sprintf('%s:%s', $node->getNamespace(), $name); - $safe = $safe && $this->isSafeName($node->getNamespace()); - } - - $attribute = $safe ? '@'.$name : \sprintf('attribute::*[name() = %s]', Translator::getXpathLiteral($name)); - $value = $node->getValue(); - $xpath = $translator->nodeToXPath($node->getSelector()); - - if ($this->hasFlag(self::ATTRIBUTE_VALUE_IN_LOWER_CASE)) { - $value = strtolower($value); - } - - return $translator->addAttributeMatching($xpath, $node->getOperator(), $attribute, $value); - } - - public function translateClass(Node\ClassNode $node, Translator $translator): XPathExpr - { - $xpath = $translator->nodeToXPath($node->getSelector()); - - return $translator->addAttributeMatching($xpath, '~=', '@class', $node->getName()); - } - - public function translateHash(Node\HashNode $node, Translator $translator): XPathExpr - { - $xpath = $translator->nodeToXPath($node->getSelector()); - - return $translator->addAttributeMatching($xpath, '=', '@id', $node->getId()); - } - - public function translateElement(Node\ElementNode $node): XPathExpr - { - $element = $node->getElement(); - - if ($element && $this->hasFlag(self::ELEMENT_NAME_IN_LOWER_CASE)) { - $element = strtolower($element); - } - - if ($element) { - $safe = $this->isSafeName($element); - } else { - $element = '*'; - $safe = true; - } - - if ($node->getNamespace()) { - $element = \sprintf('%s:%s', $node->getNamespace(), $element); - $safe = $safe && $this->isSafeName($node->getNamespace()); - } - - $xpath = new XPathExpr('', $element); - - if (!$safe) { - $xpath->addNameTest(); - } - - return $xpath; - } - - public function getName(): string - { - return 'node'; - } - - private function isSafeName(string $name): bool - { - return 0 < preg_match('~^[a-zA-Z_][a-zA-Z0-9_.-]*$~', $name); - } -} diff --git a/docker/streamline-src/vendor/symfony/css-selector/XPath/Extension/PseudoClassExtension.php b/docker/streamline-src/vendor/symfony/css-selector/XPath/Extension/PseudoClassExtension.php deleted file mode 100644 index 397f06f7..00000000 --- a/docker/streamline-src/vendor/symfony/css-selector/XPath/Extension/PseudoClassExtension.php +++ /dev/null @@ -1,122 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\XPath\Extension; - -use Symfony\Component\CssSelector\Exception\ExpressionErrorException; -use Symfony\Component\CssSelector\XPath\XPathExpr; - -/** - * XPath expression translator pseudo-class extension. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class PseudoClassExtension extends AbstractExtension -{ - public function getPseudoClassTranslators(): array - { - return [ - 'root' => $this->translateRoot(...), - 'scope' => $this->translateScopePseudo(...), - 'first-child' => $this->translateFirstChild(...), - 'last-child' => $this->translateLastChild(...), - 'first-of-type' => $this->translateFirstOfType(...), - 'last-of-type' => $this->translateLastOfType(...), - 'only-child' => $this->translateOnlyChild(...), - 'only-of-type' => $this->translateOnlyOfType(...), - 'empty' => $this->translateEmpty(...), - ]; - } - - public function translateRoot(XPathExpr $xpath): XPathExpr - { - return $xpath->addCondition('not(parent::*)'); - } - - public function translateScopePseudo(XPathExpr $xpath): XPathExpr - { - return $xpath->addCondition('1'); - } - - public function translateFirstChild(XPathExpr $xpath): XPathExpr - { - return $xpath - ->addStarPrefix() - ->addNameTest() - ->addCondition('position() = 1'); - } - - public function translateLastChild(XPathExpr $xpath): XPathExpr - { - return $xpath - ->addStarPrefix() - ->addNameTest() - ->addCondition('position() = last()'); - } - - /** - * @throws ExpressionErrorException - */ - public function translateFirstOfType(XPathExpr $xpath): XPathExpr - { - if ('*' === $xpath->getElement()) { - throw new ExpressionErrorException('"*:first-of-type" is not implemented.'); - } - - return $xpath - ->addStarPrefix() - ->addCondition('position() = 1'); - } - - /** - * @throws ExpressionErrorException - */ - public function translateLastOfType(XPathExpr $xpath): XPathExpr - { - if ('*' === $xpath->getElement()) { - throw new ExpressionErrorException('"*:last-of-type" is not implemented.'); - } - - return $xpath - ->addStarPrefix() - ->addCondition('position() = last()'); - } - - public function translateOnlyChild(XPathExpr $xpath): XPathExpr - { - return $xpath - ->addStarPrefix() - ->addNameTest() - ->addCondition('last() = 1'); - } - - public function translateOnlyOfType(XPathExpr $xpath): XPathExpr - { - $element = $xpath->getElement(); - - return $xpath->addCondition(\sprintf('count(preceding-sibling::%s)=0 and count(following-sibling::%s)=0', $element, $element)); - } - - public function translateEmpty(XPathExpr $xpath): XPathExpr - { - return $xpath->addCondition('not(*) and not(string-length())'); - } - - public function getName(): string - { - return 'pseudo-class'; - } -} diff --git a/docker/streamline-src/vendor/symfony/css-selector/XPath/Translator.php b/docker/streamline-src/vendor/symfony/css-selector/XPath/Translator.php deleted file mode 100644 index b2623e50..00000000 --- a/docker/streamline-src/vendor/symfony/css-selector/XPath/Translator.php +++ /dev/null @@ -1,224 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\XPath; - -use Symfony\Component\CssSelector\Exception\ExpressionErrorException; -use Symfony\Component\CssSelector\Node\FunctionNode; -use Symfony\Component\CssSelector\Node\NodeInterface; -use Symfony\Component\CssSelector\Node\SelectorNode; -use Symfony\Component\CssSelector\Parser\Parser; -use Symfony\Component\CssSelector\Parser\ParserInterface; - -/** - * XPath expression translator interface. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class Translator implements TranslatorInterface -{ - private ParserInterface $mainParser; - - /** - * @var ParserInterface[] - */ - private array $shortcutParsers = []; - - /** - * @var Extension\ExtensionInterface[] - */ - private array $extensions = []; - - private array $nodeTranslators = []; - private array $combinationTranslators = []; - private array $functionTranslators = []; - private array $pseudoClassTranslators = []; - private array $attributeMatchingTranslators = []; - - public function __construct(?ParserInterface $parser = null) - { - $this->mainParser = $parser ?? new Parser(); - - $this - ->registerExtension(new Extension\NodeExtension()) - ->registerExtension(new Extension\CombinationExtension()) - ->registerExtension(new Extension\FunctionExtension()) - ->registerExtension(new Extension\PseudoClassExtension()) - ->registerExtension(new Extension\AttributeMatchingExtension()) - ; - } - - public static function getXpathLiteral(string $element): string - { - if (!str_contains($element, "'")) { - return "'".$element."'"; - } - - if (!str_contains($element, '"')) { - return '"'.$element.'"'; - } - - $string = $element; - $parts = []; - while (true) { - if (false !== $pos = strpos($string, "'")) { - $parts[] = \sprintf("'%s'", substr($string, 0, $pos)); - $parts[] = "\"'\""; - $string = substr($string, $pos + 1); - } else { - $parts[] = "'$string'"; - break; - } - } - - return \sprintf('concat(%s)', implode(', ', $parts)); - } - - public function cssToXPath(string $cssExpr, string $prefix = 'descendant-or-self::'): string - { - $selectors = $this->parseSelectors($cssExpr); - - /** @var SelectorNode $selector */ - foreach ($selectors as $index => $selector) { - if (null !== $selector->getPseudoElement()) { - throw new ExpressionErrorException('Pseudo-elements are not supported.'); - } - - $selectors[$index] = $this->selectorToXPath($selector, $prefix); - } - - return implode(' | ', $selectors); - } - - public function selectorToXPath(SelectorNode $selector, string $prefix = 'descendant-or-self::'): string - { - return ($prefix ?: '').$this->nodeToXPath($selector); - } - - /** - * @return $this - */ - public function registerExtension(Extension\ExtensionInterface $extension): static - { - $this->extensions[$extension->getName()] = $extension; - - $this->nodeTranslators = array_merge($this->nodeTranslators, $extension->getNodeTranslators()); - $this->combinationTranslators = array_merge($this->combinationTranslators, $extension->getCombinationTranslators()); - $this->functionTranslators = array_merge($this->functionTranslators, $extension->getFunctionTranslators()); - $this->pseudoClassTranslators = array_merge($this->pseudoClassTranslators, $extension->getPseudoClassTranslators()); - $this->attributeMatchingTranslators = array_merge($this->attributeMatchingTranslators, $extension->getAttributeMatchingTranslators()); - - return $this; - } - - /** - * @throws ExpressionErrorException - */ - public function getExtension(string $name): Extension\ExtensionInterface - { - if (!isset($this->extensions[$name])) { - throw new ExpressionErrorException(\sprintf('Extension "%s" not registered.', $name)); - } - - return $this->extensions[$name]; - } - - /** - * @return $this - */ - public function registerParserShortcut(ParserInterface $shortcut): static - { - $this->shortcutParsers[] = $shortcut; - - return $this; - } - - /** - * @throws ExpressionErrorException - */ - public function nodeToXPath(NodeInterface $node): XPathExpr - { - if (!isset($this->nodeTranslators[$node->getNodeName()])) { - throw new ExpressionErrorException(\sprintf('Node "%s" not supported.', $node->getNodeName())); - } - - return $this->nodeTranslators[$node->getNodeName()]($node, $this); - } - - /** - * @throws ExpressionErrorException - */ - public function addCombination(string $combiner, NodeInterface $xpath, NodeInterface $combinedXpath): XPathExpr - { - if (!isset($this->combinationTranslators[$combiner])) { - throw new ExpressionErrorException(\sprintf('Combiner "%s" not supported.', $combiner)); - } - - return $this->combinationTranslators[$combiner]($this->nodeToXPath($xpath), $this->nodeToXPath($combinedXpath)); - } - - /** - * @throws ExpressionErrorException - */ - public function addFunction(XPathExpr $xpath, FunctionNode $function): XPathExpr - { - if (!isset($this->functionTranslators[$function->getName()])) { - throw new ExpressionErrorException(\sprintf('Function "%s" not supported.', $function->getName())); - } - - return $this->functionTranslators[$function->getName()]($xpath, $function); - } - - /** - * @throws ExpressionErrorException - */ - public function addPseudoClass(XPathExpr $xpath, string $pseudoClass): XPathExpr - { - if (!isset($this->pseudoClassTranslators[$pseudoClass])) { - throw new ExpressionErrorException(\sprintf('Pseudo-class "%s" not supported.', $pseudoClass)); - } - - return $this->pseudoClassTranslators[$pseudoClass]($xpath); - } - - /** - * @throws ExpressionErrorException - */ - public function addAttributeMatching(XPathExpr $xpath, string $operator, string $attribute, ?string $value): XPathExpr - { - if (!isset($this->attributeMatchingTranslators[$operator])) { - throw new ExpressionErrorException(\sprintf('Attribute matcher operator "%s" not supported.', $operator)); - } - - return $this->attributeMatchingTranslators[$operator]($xpath, $attribute, $value); - } - - /** - * @return SelectorNode[] - */ - private function parseSelectors(string $css): array - { - foreach ($this->shortcutParsers as $shortcut) { - $tokens = $shortcut->parse($css); - - if ($tokens) { - return $tokens; - } - } - - return $this->mainParser->parse($css); - } -} diff --git a/docker/streamline-src/vendor/symfony/css-selector/XPath/XPathExpr.php b/docker/streamline-src/vendor/symfony/css-selector/XPath/XPathExpr.php deleted file mode 100644 index a148febc..00000000 --- a/docker/streamline-src/vendor/symfony/css-selector/XPath/XPathExpr.php +++ /dev/null @@ -1,107 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\XPath; - -/** - * XPath expression translator interface. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class XPathExpr -{ - public function __construct( - private string $path = '', - private string $element = '*', - private string $condition = '', - bool $starPrefix = false, - ) { - if ($starPrefix) { - $this->addStarPrefix(); - } - } - - public function getElement(): string - { - return $this->element; - } - - /** - * @return $this - */ - public function addCondition(string $condition, string $operator = 'and'): static - { - $this->condition = $this->condition ? \sprintf('(%s) %s (%s)', $this->condition, $operator, $condition) : $condition; - - return $this; - } - - public function getCondition(): string - { - return $this->condition; - } - - /** - * @return $this - */ - public function addNameTest(): static - { - if ('*' !== $this->element) { - $this->addCondition('name() = '.Translator::getXpathLiteral($this->element)); - $this->element = '*'; - } - - return $this; - } - - /** - * @return $this - */ - public function addStarPrefix(): static - { - $this->path .= '*/'; - - return $this; - } - - /** - * Joins another XPathExpr with a combiner. - * - * @return $this - */ - public function join(string $combiner, self $expr): static - { - $path = $this->__toString().$combiner; - - if ('*/' !== $expr->path) { - $path .= $expr->path; - } - - $this->path = $path; - $this->element = $expr->element; - $this->condition = $expr->condition; - - return $this; - } - - public function __toString(): string - { - $path = $this->path.$this->element; - $condition = '' === $this->condition ? '' : '['.$this->condition.']'; - - return $path.$condition; - } -} diff --git a/docker/streamline-src/vendor/symfony/error-handler/Error/FatalError.php b/docker/streamline-src/vendor/symfony/error-handler/Error/FatalError.php deleted file mode 100644 index a0657b7b..00000000 --- a/docker/streamline-src/vendor/symfony/error-handler/Error/FatalError.php +++ /dev/null @@ -1,83 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\ErrorHandler\Error; - -class FatalError extends \Error -{ - private array $error; - - /** - * @param array $error An array as returned by error_get_last() - */ - public function __construct(string $message, int $code, array $error, ?int $traceOffset = null, bool $traceArgs = true, ?array $trace = null) - { - parent::__construct($message, $code); - - $this->error = $error; - - if (null !== $trace) { - if (!$traceArgs) { - foreach ($trace as &$frame) { - unset($frame['args'], $frame['this'], $frame); - } - } - } elseif (null !== $traceOffset) { - if (\function_exists('xdebug_get_function_stack') && \in_array(\ini_get('xdebug.mode'), ['develop', false], true) && $trace = @xdebug_get_function_stack()) { - if (0 < $traceOffset) { - array_splice($trace, -$traceOffset); - } - - foreach ($trace as &$frame) { - if (!isset($frame['type'])) { - // XDebug pre 2.1.1 doesn't currently set the call type key http://bugs.xdebug.org/view.php?id=695 - if (isset($frame['class'])) { - $frame['type'] = '::'; - } - } elseif ('dynamic' === $frame['type']) { - $frame['type'] = '->'; - } elseif ('static' === $frame['type']) { - $frame['type'] = '::'; - } - - // XDebug also has a different name for the parameters array - if (!$traceArgs) { - unset($frame['params'], $frame['args']); - } elseif (isset($frame['params']) && !isset($frame['args'])) { - $frame['args'] = $frame['params']; - unset($frame['params']); - } - } - - unset($frame); - $trace = array_reverse($trace); - } else { - $trace = []; - } - } - - foreach ([ - 'file' => $error['file'], - 'line' => $error['line'], - 'trace' => $trace, - ] as $property => $value) { - if (null !== $value) { - $refl = new \ReflectionProperty(\Error::class, $property); - $refl->setValue($this, $value); - } - } - } - - public function getError(): array - { - return $this->error; - } -} diff --git a/docker/streamline-src/vendor/symfony/error-handler/ErrorHandler.php b/docker/streamline-src/vendor/symfony/error-handler/ErrorHandler.php deleted file mode 100644 index 052baf27..00000000 --- a/docker/streamline-src/vendor/symfony/error-handler/ErrorHandler.php +++ /dev/null @@ -1,747 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\ErrorHandler; - -use Psr\Log\LoggerInterface; -use Psr\Log\LogLevel; -use Symfony\Component\ErrorHandler\Error\FatalError; -use Symfony\Component\ErrorHandler\Error\OutOfMemoryError; -use Symfony\Component\ErrorHandler\ErrorEnhancer\ClassNotFoundErrorEnhancer; -use Symfony\Component\ErrorHandler\ErrorEnhancer\ErrorEnhancerInterface; -use Symfony\Component\ErrorHandler\ErrorEnhancer\UndefinedFunctionErrorEnhancer; -use Symfony\Component\ErrorHandler\ErrorEnhancer\UndefinedMethodErrorEnhancer; -use Symfony\Component\ErrorHandler\ErrorRenderer\CliErrorRenderer; -use Symfony\Component\ErrorHandler\ErrorRenderer\HtmlErrorRenderer; -use Symfony\Component\ErrorHandler\Exception\SilencedErrorContext; - -/** - * A generic ErrorHandler for the PHP engine. - * - * Provides five bit fields that control how errors are handled: - * - thrownErrors: errors thrown as \ErrorException - * - loggedErrors: logged errors, when not @-silenced - * - scopedErrors: errors thrown or logged with their local context - * - tracedErrors: errors logged with their stack trace - * - screamedErrors: never @-silenced errors - * - * Each error level can be logged by a dedicated PSR-3 logger object. - * Screaming only applies to logging. - * Throwing takes precedence over logging. - * Uncaught exceptions are logged as E_ERROR. - * E_DEPRECATED and E_USER_DEPRECATED levels never throw. - * E_RECOVERABLE_ERROR and E_USER_ERROR levels always throw. - * Non catchable errors that can be detected at shutdown time are logged when the scream bit field allows so. - * As errors have a performance cost, repeated errors are all logged, so that the developer - * can see them and weight them as more important to fix than others of the same level. - * - * @author Nicolas Grekas - * @author Grégoire Pineau - * - * @final - */ -class ErrorHandler -{ - private array $levels = [ - \E_DEPRECATED => 'Deprecated', - \E_USER_DEPRECATED => 'User Deprecated', - \E_NOTICE => 'Notice', - \E_USER_NOTICE => 'User Notice', - \E_WARNING => 'Warning', - \E_USER_WARNING => 'User Warning', - \E_COMPILE_WARNING => 'Compile Warning', - \E_CORE_WARNING => 'Core Warning', - \E_USER_ERROR => 'User Error', - \E_RECOVERABLE_ERROR => 'Catchable Fatal Error', - \E_COMPILE_ERROR => 'Compile Error', - \E_PARSE => 'Parse Error', - \E_ERROR => 'Error', - \E_CORE_ERROR => 'Core Error', - ]; - - private array $loggers = [ - \E_DEPRECATED => [null, LogLevel::INFO], - \E_USER_DEPRECATED => [null, LogLevel::INFO], - \E_NOTICE => [null, LogLevel::WARNING], - \E_USER_NOTICE => [null, LogLevel::WARNING], - \E_WARNING => [null, LogLevel::WARNING], - \E_USER_WARNING => [null, LogLevel::WARNING], - \E_COMPILE_WARNING => [null, LogLevel::WARNING], - \E_CORE_WARNING => [null, LogLevel::WARNING], - \E_USER_ERROR => [null, LogLevel::CRITICAL], - \E_RECOVERABLE_ERROR => [null, LogLevel::CRITICAL], - \E_COMPILE_ERROR => [null, LogLevel::CRITICAL], - \E_PARSE => [null, LogLevel::CRITICAL], - \E_ERROR => [null, LogLevel::CRITICAL], - \E_CORE_ERROR => [null, LogLevel::CRITICAL], - ]; - - private int $thrownErrors = 0x1FFF; // E_ALL - E_DEPRECATED - E_USER_DEPRECATED - private int $scopedErrors = 0x1FFF; // E_ALL - E_DEPRECATED - E_USER_DEPRECATED - private int $tracedErrors = 0x77FB; // E_ALL - E_STRICT - E_PARSE - private int $screamedErrors = 0x55; // E_ERROR + E_CORE_ERROR + E_COMPILE_ERROR + E_PARSE - private int $loggedErrors = 0; - private \Closure $configureException; - private bool $debug; - - private bool $isRecursive = false; - private bool $isRoot = false; - /** @var callable|null */ - private $exceptionHandler; - private ?BufferingLogger $bootstrappingLogger = null; - - private static ?string $reservedMemory = null; - private static array $silencedErrorCache = []; - private static int $silencedErrorCount = 0; - private static int $exitCode = 0; - - /** - * Registers the error handler. - */ - public static function register(?self $handler = null, bool $replace = true): self - { - if (null === self::$reservedMemory) { - self::$reservedMemory = str_repeat('x', 32768); - register_shutdown_function(self::handleFatalError(...)); - } - - if ($handlerIsNew = null === $handler) { - $handler = new static(); - } - - if (null === $prev = set_error_handler([$handler, 'handleError'])) { - restore_error_handler(); - // Specifying the error types earlier would expose us to https://bugs.php.net/63206 - set_error_handler([$handler, 'handleError'], $handler->thrownErrors | $handler->loggedErrors); - $handler->isRoot = true; - } - - if ($handlerIsNew && \is_array($prev) && $prev[0] instanceof self) { - $handler = $prev[0]; - $replace = false; - } - if (!$replace && $prev) { - restore_error_handler(); - $handlerIsRegistered = \is_array($prev) && $handler === $prev[0]; - } else { - $handlerIsRegistered = true; - } - if (\is_array($prev = set_exception_handler([$handler, 'handleException'])) && $prev[0] instanceof self) { - restore_exception_handler(); - if (!$handlerIsRegistered) { - $handler = $prev[0]; - } elseif ($handler !== $prev[0] && $replace) { - set_exception_handler([$handler, 'handleException']); - $p = $prev[0]->setExceptionHandler(null); - $handler->setExceptionHandler($p); - $prev[0]->setExceptionHandler($p); - } - } else { - $handler->setExceptionHandler($prev ?? [$handler, 'renderException']); - } - - $handler->throwAt(\E_ALL & $handler->thrownErrors, true); - - return $handler; - } - - /** - * Calls a function and turns any PHP error into \ErrorException. - * - * @throws \ErrorException When $function(...$arguments) triggers a PHP error - */ - public static function call(callable $function, mixed ...$arguments): mixed - { - set_error_handler(static function (int $type, string $message, string $file, int $line) { - if (__FILE__ === $file) { - $trace = debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS, 3); - $file = $trace[2]['file'] ?? $file; - $line = $trace[2]['line'] ?? $line; - } - - throw new \ErrorException($message, 0, $type, $file, $line); - }); - - try { - return $function(...$arguments); - } finally { - restore_error_handler(); - } - } - - public function __construct(?BufferingLogger $bootstrappingLogger = null, bool $debug = false) - { - if (\PHP_VERSION_ID < 80400) { - $this->levels[\E_STRICT] = 'Runtime Notice'; - $this->loggers[\E_STRICT] = [null, LogLevel::WARNING]; - } - - if ($bootstrappingLogger) { - $this->bootstrappingLogger = $bootstrappingLogger; - $this->setDefaultLogger($bootstrappingLogger); - } - $traceReflector = new \ReflectionProperty(\Exception::class, 'trace'); - $this->configureException = \Closure::bind(static function ($e, $trace, $file = null, $line = null) use ($traceReflector) { - $traceReflector->setValue($e, $trace); - $e->file = $file ?? $e->file; - $e->line = $line ?? $e->line; - }, null, new class() extends \Exception { - }); - $this->debug = $debug; - } - - /** - * Sets a logger to non assigned errors levels. - * - * @param LoggerInterface $logger A PSR-3 logger to put as default for the given levels - * @param array|int|null $levels An array map of E_* to LogLevel::* or an integer bit field of E_* constants - * @param bool $replace Whether to replace or not any existing logger - */ - public function setDefaultLogger(LoggerInterface $logger, array|int|null $levels = \E_ALL, bool $replace = false): void - { - $loggers = []; - - if (\is_array($levels)) { - foreach ($levels as $type => $logLevel) { - if (empty($this->loggers[$type][0]) || $replace || $this->loggers[$type][0] === $this->bootstrappingLogger) { - $loggers[$type] = [$logger, $logLevel]; - } - } - } else { - $levels ??= \E_ALL; - foreach ($this->loggers as $type => $log) { - if (($type & $levels) && (empty($log[0]) || $replace || $log[0] === $this->bootstrappingLogger)) { - $log[0] = $logger; - $loggers[$type] = $log; - } - } - } - - $this->setLoggers($loggers); - } - - /** - * Sets a logger for each error level. - * - * @param array $loggers Error levels to [LoggerInterface|null, LogLevel::*] map - * - * @throws \InvalidArgumentException - */ - public function setLoggers(array $loggers): array - { - $prevLogged = $this->loggedErrors; - $prev = $this->loggers; - $flush = []; - - foreach ($loggers as $type => $log) { - if (!isset($prev[$type])) { - throw new \InvalidArgumentException('Unknown error type: '.$type); - } - if (!\is_array($log)) { - $log = [$log]; - } elseif (!\array_key_exists(0, $log)) { - throw new \InvalidArgumentException('No logger provided.'); - } - if (null === $log[0]) { - $this->loggedErrors &= ~$type; - } elseif ($log[0] instanceof LoggerInterface) { - $this->loggedErrors |= $type; - } else { - throw new \InvalidArgumentException('Invalid logger provided.'); - } - $this->loggers[$type] = $log + $prev[$type]; - - if ($this->bootstrappingLogger && $prev[$type][0] === $this->bootstrappingLogger) { - $flush[$type] = $type; - } - } - $this->reRegister($prevLogged | $this->thrownErrors); - - if ($flush) { - foreach ($this->bootstrappingLogger->cleanLogs() as $log) { - $type = ThrowableUtils::getSeverity($log[2]['exception']); - if (!isset($flush[$type])) { - $this->bootstrappingLogger->log($log[0], $log[1], $log[2]); - } elseif ($this->loggers[$type][0]) { - $this->loggers[$type][0]->log($this->loggers[$type][1], $log[1], $log[2]); - } - } - } - - return $prev; - } - - public function setExceptionHandler(?callable $handler): ?callable - { - $prev = $this->exceptionHandler; - $this->exceptionHandler = $handler; - - return $prev; - } - - /** - * Sets the PHP error levels that throw an exception when a PHP error occurs. - * - * @param int $levels A bit field of E_* constants for thrown errors - * @param bool $replace Replace or amend the previous value - */ - public function throwAt(int $levels, bool $replace = false): int - { - $prev = $this->thrownErrors; - $this->thrownErrors = ($levels | \E_RECOVERABLE_ERROR | \E_USER_ERROR) & ~\E_USER_DEPRECATED & ~\E_DEPRECATED; - if (!$replace) { - $this->thrownErrors |= $prev; - } - $this->reRegister($prev | $this->loggedErrors); - - return $prev; - } - - /** - * Sets the PHP error levels for which local variables are preserved. - * - * @param int $levels A bit field of E_* constants for scoped errors - * @param bool $replace Replace or amend the previous value - */ - public function scopeAt(int $levels, bool $replace = false): int - { - $prev = $this->scopedErrors; - $this->scopedErrors = $levels; - if (!$replace) { - $this->scopedErrors |= $prev; - } - - return $prev; - } - - /** - * Sets the PHP error levels for which the stack trace is preserved. - * - * @param int $levels A bit field of E_* constants for traced errors - * @param bool $replace Replace or amend the previous value - */ - public function traceAt(int $levels, bool $replace = false): int - { - $prev = $this->tracedErrors; - $this->tracedErrors = $levels; - if (!$replace) { - $this->tracedErrors |= $prev; - } - - return $prev; - } - - /** - * Sets the error levels where the @-operator is ignored. - * - * @param int $levels A bit field of E_* constants for screamed errors - * @param bool $replace Replace or amend the previous value - */ - public function screamAt(int $levels, bool $replace = false): int - { - $prev = $this->screamedErrors; - $this->screamedErrors = $levels; - if (!$replace) { - $this->screamedErrors |= $prev; - } - - return $prev; - } - - /** - * Re-registers as a PHP error handler if levels changed. - */ - private function reRegister(int $prev): void - { - if ($prev !== ($this->thrownErrors | $this->loggedErrors)) { - $handler = set_error_handler(static fn () => null); - $handler = \is_array($handler) ? $handler[0] : null; - restore_error_handler(); - if ($handler === $this) { - restore_error_handler(); - if ($this->isRoot) { - set_error_handler([$this, 'handleError'], $this->thrownErrors | $this->loggedErrors); - } else { - set_error_handler([$this, 'handleError']); - } - } - } - } - - /** - * Handles errors by filtering then logging them according to the configured bit fields. - * - * @return bool Returns false when no handling happens so that the PHP engine can handle the error itself - * - * @throws \ErrorException When $this->thrownErrors requests so - * - * @internal - */ - public function handleError(int $type, string $message, string $file, int $line): bool - { - if (\E_WARNING === $type && '"' === $message[0] && str_contains($message, '" targeting switch is equivalent to "break')) { - $type = \E_DEPRECATED; - } - - // Level is the current error reporting level to manage silent error. - $level = error_reporting(); - $silenced = 0 === ($level & $type); - // Strong errors are not authorized to be silenced. - $level |= \E_RECOVERABLE_ERROR | \E_USER_ERROR | \E_DEPRECATED | \E_USER_DEPRECATED; - $log = $this->loggedErrors & $type; - $throw = $this->thrownErrors & $type & $level; - $type &= $level | $this->screamedErrors; - - // Never throw on warnings triggered by assert() - if (\E_WARNING === $type && 'a' === $message[0] && 0 === strncmp($message, 'assert(): ', 10)) { - $throw = 0; - } - - if (!$type || (!$log && !$throw)) { - return false; - } - - $logMessage = $this->levels[$type].': '.$message; - - if (!$throw && !($type & $level)) { - if (!isset(self::$silencedErrorCache[$id = $file.':'.$line])) { - $lightTrace = $this->tracedErrors & $type ? $this->cleanTrace(debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS, 5), $type, $file, $line, false) : []; - $errorAsException = new SilencedErrorContext($type, $file, $line, isset($lightTrace[1]) ? [$lightTrace[0]] : $lightTrace); - } elseif (isset(self::$silencedErrorCache[$id][$message])) { - $lightTrace = null; - $errorAsException = self::$silencedErrorCache[$id][$message]; - ++$errorAsException->count; - } else { - $lightTrace = []; - $errorAsException = null; - } - - if (100 < ++self::$silencedErrorCount) { - self::$silencedErrorCache = $lightTrace = []; - self::$silencedErrorCount = 1; - } - if ($errorAsException) { - self::$silencedErrorCache[$id][$message] = $errorAsException; - } - if (null === $lightTrace) { - return true; - } - } else { - if (PHP_VERSION_ID < 80303 && str_contains($message, '@anonymous')) { - $backtrace = debug_backtrace(false, 5); - - for ($i = 1; isset($backtrace[$i]); ++$i) { - if (isset($backtrace[$i]['function'], $backtrace[$i]['args'][0]) - && ('trigger_error' === $backtrace[$i]['function'] || 'user_error' === $backtrace[$i]['function']) - ) { - if ($backtrace[$i]['args'][0] !== $message) { - $message = $backtrace[$i]['args'][0]; - } - - break; - } - } - } - - if (false !== strpos($message, "@anonymous\0")) { - $message = $this->parseAnonymousClass($message); - $logMessage = $this->levels[$type].': '.$message; - } - - $errorAsException = new \ErrorException($logMessage, 0, $type, $file, $line); - - if ($throw || $this->tracedErrors & $type) { - $backtrace = $errorAsException->getTrace(); - $backtrace = $this->cleanTrace($backtrace, $type, $file, $line, $throw); - ($this->configureException)($errorAsException, $backtrace, $file, $line); - } else { - ($this->configureException)($errorAsException, []); - } - } - - if ($throw) { - throw $errorAsException; - } - - if ($this->isRecursive) { - $log = 0; - } else { - try { - $this->isRecursive = true; - $level = ($type & $level) ? $this->loggers[$type][1] : LogLevel::DEBUG; - $this->loggers[$type][0]->log($level, $logMessage, $errorAsException ? ['exception' => $errorAsException] : []); - } finally { - $this->isRecursive = false; - } - } - - return !$silenced && $type && $log; - } - - /** - * Handles an exception by logging then forwarding it to another handler. - * - * @internal - */ - public function handleException(\Throwable $exception): void - { - $handlerException = null; - - if (!$exception instanceof FatalError) { - self::$exitCode = 255; - - $type = ThrowableUtils::getSeverity($exception); - } else { - $type = $exception->getError()['type']; - } - - if ($this->loggedErrors & $type) { - if (str_contains($message = $exception->getMessage(), "@anonymous\0")) { - $message = $this->parseAnonymousClass($message); - } - - if ($exception instanceof FatalError) { - $message = 'Fatal '.$message; - } elseif ($exception instanceof \Error) { - $message = 'Uncaught Error: '.$message; - } elseif ($exception instanceof \ErrorException) { - $message = 'Uncaught '.$message; - } else { - $message = 'Uncaught Exception: '.$message; - } - - try { - $this->loggers[$type][0]->log($this->loggers[$type][1], $message, ['exception' => $exception]); - } catch (\Throwable $handlerException) { - } - } - - $exception = $this->enhanceError($exception); - - $exceptionHandler = $this->exceptionHandler; - $this->exceptionHandler = [$this, 'renderException']; - - if (null === $exceptionHandler || $exceptionHandler === $this->exceptionHandler) { - $this->exceptionHandler = null; - } - - try { - if (null !== $exceptionHandler) { - $exceptionHandler($exception); - - return; - } - $handlerException ??= $exception; - } catch (\Throwable $handlerException) { - } - if ($exception === $handlerException && null === $this->exceptionHandler) { - self::$reservedMemory = null; // Disable the fatal error handler - throw $exception; // Give back $exception to the native handler - } - - $loggedErrors = $this->loggedErrors; - if ($exception === $handlerException) { - $this->loggedErrors &= ~$type; - } - - try { - $this->handleException($handlerException); - } finally { - $this->loggedErrors = $loggedErrors; - } - } - - /** - * Shutdown registered function for handling PHP fatal errors. - * - * @param array|null $error An array as returned by error_get_last() - * - * @internal - */ - public static function handleFatalError(?array $error = null): void - { - if (null === self::$reservedMemory) { - return; - } - - $handler = self::$reservedMemory = null; - $handlers = []; - $previousHandler = null; - $sameHandlerLimit = 10; - - while (!\is_array($handler) || !$handler[0] instanceof self) { - $handler = set_exception_handler('is_int'); - restore_exception_handler(); - - if (!$handler) { - break; - } - restore_exception_handler(); - - if ($handler !== $previousHandler) { - array_unshift($handlers, $handler); - $previousHandler = $handler; - } elseif (0 === --$sameHandlerLimit) { - $handler = null; - break; - } - } - foreach ($handlers as $h) { - set_exception_handler($h); - } - if (!$handler) { - if (null === $error && $exitCode = self::$exitCode) { - register_shutdown_function('register_shutdown_function', function () use ($exitCode) { exit($exitCode); }); - } - - return; - } - if ($handler !== $h) { - $handler[0]->setExceptionHandler($h); - } - $handler = $handler[0]; - $handlers = []; - - if ($exit = null === $error) { - $error = error_get_last(); - } - - if ($error && $error['type'] &= \E_PARSE | \E_ERROR | \E_CORE_ERROR | \E_COMPILE_ERROR) { - // Let's not throw anymore but keep logging - $handler->throwAt(0, true); - $trace = $error['backtrace'] ?? null; - - if (str_starts_with($error['message'], 'Allowed memory') || str_starts_with($error['message'], 'Out of memory')) { - $fatalError = new OutOfMemoryError($handler->levels[$error['type']].': '.$error['message'], 0, $error, 2, false, $trace); - } else { - $fatalError = new FatalError($handler->levels[$error['type']].': '.$error['message'], 0, $error, 2, true, $trace); - } - } else { - $fatalError = null; - } - - try { - if (null !== $fatalError) { - self::$exitCode = 255; - $handler->handleException($fatalError); - } - } catch (FatalError) { - // Ignore this re-throw - } - - if ($exit && $exitCode = self::$exitCode) { - register_shutdown_function('register_shutdown_function', function () use ($exitCode) { exit($exitCode); }); - } - } - - /** - * Renders the given exception. - * - * As this method is mainly called during boot where nothing is yet available, - * the output is always either HTML or CLI depending where PHP runs. - */ - private function renderException(\Throwable $exception): void - { - $renderer = \in_array(\PHP_SAPI, ['cli', 'phpdbg', 'embed'], true) ? new CliErrorRenderer() : new HtmlErrorRenderer($this->debug); - - $exception = $renderer->render($exception); - - if (!headers_sent()) { - http_response_code($exception->getStatusCode()); - - foreach ($exception->getHeaders() as $name => $value) { - header($name.': '.$value, false); - } - } - - echo $exception->getAsString(); - } - - public function enhanceError(\Throwable $exception): \Throwable - { - if ($exception instanceof OutOfMemoryError) { - return $exception; - } - - foreach ($this->getErrorEnhancers() as $errorEnhancer) { - if ($e = $errorEnhancer->enhance($exception)) { - return $e; - } - } - - return $exception; - } - - /** - * Override this method if you want to define more error enhancers. - * - * @return ErrorEnhancerInterface[] - */ - protected function getErrorEnhancers(): iterable - { - return [ - new UndefinedFunctionErrorEnhancer(), - new UndefinedMethodErrorEnhancer(), - new ClassNotFoundErrorEnhancer(), - ]; - } - - /** - * Cleans the trace by removing function arguments and the frames added by the error handler and DebugClassLoader. - */ - private function cleanTrace(array $backtrace, int $type, string &$file, int &$line, bool $throw): array - { - $lightTrace = $backtrace; - - for ($i = 0; isset($backtrace[$i]); ++$i) { - if (isset($backtrace[$i]['file'], $backtrace[$i]['line']) && $backtrace[$i]['line'] === $line && $backtrace[$i]['file'] === $file) { - $lightTrace = \array_slice($lightTrace, 1 + $i); - break; - } - } - if (\E_USER_DEPRECATED === $type) { - for ($i = 0; isset($lightTrace[$i]); ++$i) { - if (!isset($lightTrace[$i]['file'], $lightTrace[$i]['line'], $lightTrace[$i]['function'])) { - continue; - } - if (!isset($lightTrace[$i]['class']) && 'trigger_deprecation' === $lightTrace[$i]['function']) { - $file = $lightTrace[$i]['file']; - $line = $lightTrace[$i]['line']; - $lightTrace = \array_slice($lightTrace, 1 + $i); - break; - } - } - } - if (class_exists(DebugClassLoader::class, false)) { - for ($i = \count($lightTrace) - 2; 0 < $i; --$i) { - if (DebugClassLoader::class === ($lightTrace[$i]['class'] ?? null)) { - array_splice($lightTrace, --$i, 2); - } - } - } - if (!($throw || $this->scopedErrors & $type)) { - for ($i = 0; isset($lightTrace[$i]); ++$i) { - unset($lightTrace[$i]['args'], $lightTrace[$i]['object']); - } - } - - return $lightTrace; - } - - /** - * Parse the error message by removing the anonymous class notation - * and using the parent class instead if possible. - */ - private function parseAnonymousClass(string $message): string - { - return preg_replace_callback('/[a-zA-Z_\x7f-\xff][\\\\a-zA-Z0-9_\x7f-\xff]*+@anonymous\x00.*?\.php(?:0x?|:[0-9]++\$)?[0-9a-fA-F]++/', static fn ($m) => class_exists($m[0], false) ? (get_parent_class($m[0]) ?: key(class_implements($m[0])) ?: 'class').'@anonymous' : $m[0], $message); - } -} diff --git a/docker/streamline-src/vendor/symfony/error-handler/ErrorRenderer/HtmlErrorRenderer.php b/docker/streamline-src/vendor/symfony/error-handler/ErrorRenderer/HtmlErrorRenderer.php deleted file mode 100644 index 032f194d..00000000 --- a/docker/streamline-src/vendor/symfony/error-handler/ErrorRenderer/HtmlErrorRenderer.php +++ /dev/null @@ -1,353 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\ErrorHandler\ErrorRenderer; - -use Psr\Log\LoggerInterface; -use Symfony\Component\ErrorHandler\Exception\FlattenException; -use Symfony\Component\HttpFoundation\RequestStack; -use Symfony\Component\HttpFoundation\Response; -use Symfony\Component\HttpKernel\Log\DebugLoggerConfigurator; -use Symfony\Component\VarDumper\Cloner\Data; -use Symfony\Component\VarDumper\Dumper\HtmlDumper; - -/** - * @author Yonel Ceruto - */ -class HtmlErrorRenderer implements ErrorRendererInterface -{ - private const GHOST_ADDONS = [ - '02-14' => self::GHOST_HEART, - '02-29' => self::GHOST_PLUS, - '10-18' => self::GHOST_GIFT, - ]; - - private const GHOST_GIFT = 'M124.00534057617188,5.3606138080358505 C124.40059661865234,4.644828304648399 125.1237564086914,3.712414965033531 123.88127899169922,3.487462028861046 C123.53517150878906,3.3097832053899765 123.18894958496094,2.9953975528478622 122.8432846069336,3.345616325736046 C122.07421112060547,3.649444565176964 121.40750122070312,4.074306473135948 122.2164306640625,4.869479164481163 C122.57514953613281,5.3830065578222275 122.90142822265625,6.503447040915489 123.3077621459961,6.626829609274864 C123.55027770996094,6.210384353995323 123.7774658203125,5.785196766257286 124.00534057617188,5.3606138080358505 zM122.30630493164062,7.336987480521202 C121.60028076171875,6.076864704489708 121.03211975097656,4.72498320043087 120.16796875,3.562500938773155 C119.11695098876953,2.44033907353878 117.04605865478516,2.940566048026085 116.57544708251953,4.387995228171349 C115.95028686523438,5.819030746817589 117.2991714477539,7.527640804648399 118.826171875,7.348545059561729 C119.98493194580078,7.367936596274376 121.15027618408203,7.420116886496544 122.30630493164062,7.336987480521202 zM128.1732177734375,7.379541382193565 C129.67486572265625,7.17823551595211 130.53842163085938,5.287807449698448 129.68344116210938,4.032590612769127 C128.92578125,2.693056806921959 126.74605560302734,2.6463639587163925 125.98509216308594,4.007616028189659 C125.32617950439453,5.108129009604454 124.75428009033203,6.258124336600304 124.14962768554688,7.388818249106407 C125.48638916015625,7.465229496359825 126.8357162475586,7.447416767477989 128.1732177734375,7.379541382193565 zM130.6601104736328,8.991325363516808 C131.17202758789062,8.540884003043175 133.1543731689453,8.009847149252892 131.65304565429688,7.582054600119591 C131.2811279296875,7.476506695151329 130.84751892089844,6.99234913289547 130.5132598876953,7.124847874045372 C129.78744506835938,8.02728746831417 128.67140197753906,8.55669592320919 127.50616455078125,8.501235947012901 C127.27806091308594,8.576229080557823 126.11459350585938,8.38720129430294 126.428955078125,8.601900085806847 C127.25099182128906,9.070617660880089 128.0523223876953,9.579657539725304 128.902587890625,9.995706543326378 C129.49813842773438,9.678531631827354 130.0761260986328,9.329126343131065 130.6601104736328,8.991325363516808 zM118.96446990966797,9.246344551444054 C119.4022445678711,8.991325363516808 119.84001922607422,8.736305221915245 120.27779388427734,8.481284126639366 C118.93965911865234,8.414779648184776 117.40827941894531,8.607666000723839 116.39698791503906,7.531384453177452 C116.11186981201172,7.212117180228233 115.83845520019531,6.846597656607628 115.44329071044922,7.248530372977257 C114.96995544433594,7.574637398123741 113.5140609741211,7.908811077475548 114.63501739501953,8.306883797049522 C115.61112976074219,8.883499130606651 116.58037567138672,9.474181160330772 117.58061218261719,10.008124336600304 C118.05723571777344,9.784612640738487 118.50651550292969,9.5052699893713 118.96446990966797,9.246344551444054 zM125.38018035888672,12.091858848929405 C125.9474868774414,11.636047348380089 127.32159423828125,11.201767906546593 127.36749267578125,10.712632164359093 C126.08487701416016,9.974547371268272 124.83960723876953,9.152772888541222 123.49772644042969,8.528907760977745 C123.03594207763672,8.353693947196007 122.66152954101562,8.623294815421104 122.28982543945312,8.857431396842003 C121.19065856933594,9.51122473180294 120.06505584716797,10.12446115911007 119.00167083740234,10.835315689444542 C120.39238739013672,11.69529627263546 121.79983520507812,12.529837593436241 123.22095489501953,13.338589653372765 C123.94580841064453,12.932025894522667 124.66128540039062,12.508862480521202 125.38018035888672,12.091858848929405 zM131.07164001464844,13.514615997672081 C131.66018676757812,13.143282875418663 132.2487335205078,12.771927818655968 132.8372802734375,12.400571808218956 C132.8324737548828,11.156818374991417 132.8523406982422,9.912529930472374 132.81829833984375,8.669195160269737 C131.63046264648438,9.332009300589561 130.45948791503906,10.027913078665733 129.30828857421875,10.752535805106163 C129.182373046875,12.035354599356651 129.24623107910156,13.33940313756466 129.27359008789062,14.628684982657433 C129.88104248046875,14.27079389989376 130.4737548828125,13.888019546866417 131.07164001464844,13.514640793204308 zM117.26847839355469,12.731024727225304 C117.32825469970703,11.67083452641964 117.45709991455078,10.46224020421505 116.17853546142578,10.148179039359093 C115.37110900878906,9.77159021794796 114.25194549560547,8.806716904044151 113.62991333007812,8.81639002263546 C113.61052703857422,10.0110072940588 113.62078857421875,11.20585821568966 113.61869049072266,12.400571808218956 C114.81139373779297,13.144886955618858 115.98292541503906,13.925040230154991 117.20137023925781,14.626662239432335 C117.31951141357422,14.010867103934288 117.24227905273438,13.35805033147335 117.26847839355469,12.731024727225304 zM125.80937957763672,16.836034759879112 C126.51483917236328,16.390663132071495 127.22030639648438,15.945291504263878 127.92576599121094,15.49991987645626 C127.92250061035156,14.215868934988976 127.97560119628906,12.929980263113976 127.91757202148438,11.647302612662315 C127.14225769042969,11.869626984000206 126.25550079345703,12.556857094168663 125.43866729736328,12.983742699027061 C124.82704162597656,13.342005714774132 124.21542358398438,13.700271591544151 123.60379028320312,14.05853746831417 C123.61585235595703,15.429577812552452 123.57081604003906,16.803131088614464 123.64839172363281,18.172149643301964 C124.37957000732422,17.744937881827354 125.09130859375,17.284801468253136 125.80937957763672,16.836034759879112 zM122.8521499633789,16.115344032645226 C122.8521499633789,15.429741844534874 122.8521499633789,14.744139656424522 122.8521499633789,14.05853746831417 C121.43595123291016,13.230924591422081 120.02428436279297,12.395455345511436 118.60256958007812,11.577354416251183 C118.52394104003906,12.888403877615929 118.56887817382812,14.204405769705772 118.55702209472656,15.517732605338097 C119.97289276123047,16.4041957706213 121.37410736083984,17.314891800284386 122.80789947509766,18.172149643301964 C122.86368560791016,17.488990768790245 122.84332275390625,16.800363525748253 122.8521499633789,16.115344032645226 zM131.10684204101562,18.871450409293175 C131.68399047851562,18.48711584508419 132.2611541748047,18.10278509557247 132.8383026123047,17.718475326895714 C132.81423950195312,16.499977096915245 132.89776611328125,15.264989838004112 132.77627563476562,14.05993078649044 C131.5760040283203,14.744719490408897 130.41763305664062,15.524359688162804 129.23875427246094,16.255397781729698 C129.26707458496094,17.516149505972862 129.18060302734375,18.791316971182823 129.3108367919922,20.041303619742393 C129.91973876953125,19.667551025748253 130.51010131835938,19.264152511954308 131.10684204101562,18.871450409293175 zM117.2557373046875,18.188333496451378 C117.25104522705078,17.549470886588097 117.24633026123047,16.91058538854122 117.24163055419922,16.271720871329308 C116.04924774169922,15.525708183646202 114.87187957763672,14.75476549565792 113.66158294677734,14.038097366690636 C113.5858383178711,15.262084946036339 113.62901306152344,16.49083898961544 113.61761474609375,17.717010483145714 C114.82051086425781,18.513254150748253 116.00987243652344,19.330610260367393 117.22888946533203,20.101993545889854 C117.27559661865234,19.466014847159386 117.25241088867188,18.825733169913292 117.2557373046875,18.188333496451378 zM125.8398666381836,22.38675306737423 C126.54049682617188,21.921453461050987 127.24110412597656,21.456151947379112 127.94172668457031,20.99083136022091 C127.94009399414062,19.693386062979698 127.96646118164062,18.395381912589073 127.93160247802734,17.098379120230675 C126.50540924072266,17.97775076329708 125.08877563476562,18.873308166861534 123.68258666992188,19.78428266942501 C123.52366638183594,21.03710363805294 123.626708984375,22.32878302037716 123.62647247314453,23.595300659537315 C124.06291198730469,23.86113165318966 125.1788101196289,22.68297766149044 125.8398666381836,22.38675306737423 zM122.8521499633789,21.83134649693966 C122.76741790771484,20.936696991324425 123.21651458740234,19.67745779454708 122.0794677734375,19.330633148550987 C120.93280029296875,18.604360565543175 119.7907485961914,17.870157226920128 118.62899780273438,17.16818617284298 C118.45966339111328,18.396427139639854 118.63676452636719,19.675991043448448 118.50668334960938,20.919256195425987 C119.89984130859375,21.92635916173458 121.32942199707031,22.88914106786251 122.78502655029297,23.803510650992393 C122.90177917480469,23.1627406924963 122.82917022705078,22.48402212560177 122.8521499633789,21.83134649693966 zM117.9798355102539,21.59483526647091 C116.28416442871094,20.46288488805294 114.58848571777344,19.330957397818565 112.892822265625,18.199007019400597 C112.89473724365234,14.705654129385948 112.84647369384766,11.211485847830772 112.90847778320312,7.718807205557823 C113.7575912475586,7.194885239005089 114.66117858886719,6.765397056937218 115.5350341796875,6.284702762961388 C114.97061157226562,4.668964847922325 115.78496551513672,2.7054970115423203 117.42159271240234,2.1007001250982285 C118.79354095458984,1.537783369421959 120.44731903076172,2.0457767099142075 121.32200622558594,3.23083733022213 C121.95732116699219,2.9050118774175644 122.59264373779297,2.5791852325201035 123.22796630859375,2.253336176276207 C123.86669921875,2.5821153968572617 124.50543975830078,2.9108948558568954 125.1441650390625,3.23967407643795 C126.05941009521484,2.154020771384239 127.62747192382812,1.5344576686620712 128.986328125,2.1429056972265244 C130.61741638183594,2.716217741370201 131.50650024414062,4.675290569663048 130.9215545654297,6.2884936183691025 C131.8018341064453,6.78548763692379 132.7589111328125,7.1738648265600204 133.5660400390625,7.780336365103722 C133.60182189941406,11.252970680594444 133.56637573242188,14.726140961050987 133.5631103515625,18.199007019400597 C130.18914794921875,20.431867584586143 126.86984252929688,22.74994657933712 123.44108581542969,24.897907242178917 C122.44406127929688,24.897628769278526 121.5834732055664,23.815067276358604 120.65831756591797,23.37616156041622 C119.76387023925781,22.784828171133995 118.87168884277344,22.19007681310177 117.9798355102539,21.59483526647091 z'; - private const GHOST_HEART = 'M125.91386369681868,8.305165958366445 C128.95033202169043,-0.40540639102854037 140.8469835342744,8.305165958366445 125.91386369681868,19.504526138305664 C110.98208663272044,8.305165958366445 122.87795231771452,-0.40540639102854037 125.91386369681868,8.305165958366445 z'; - private const GHOST_PLUS = 'M111.36824226379395,8.969108581542969 L118.69175148010254,8.969108581542969 L118.69175148010254,1.6455793380737305 L126.20429420471191,1.6455793380737305 L126.20429420471191,8.969108581542969 L133.52781105041504,8.969108581542969 L133.52781105041504,16.481630325317383 L126.20429420471191,16.481630325317383 L126.20429420471191,23.805158615112305 L118.69175148010254,23.805158615112305 L118.69175148010254,16.481630325317383 L111.36824226379395,16.481630325317383 z'; - - private bool|\Closure $debug; - private string $charset; - private FileLinkFormatter $fileLinkFormat; - private ?string $projectDir; - private string|\Closure $outputBuffer; - private ?LoggerInterface $logger; - - private static string $template = 'views/error.html.php'; - - /** - * @param bool|callable $debug The debugging mode as a boolean or a callable that should return it - * @param string|callable $outputBuffer The output buffer as a string or a callable that should return it - */ - public function __construct(bool|callable $debug = false, ?string $charset = null, string|FileLinkFormatter|null $fileLinkFormat = null, ?string $projectDir = null, string|callable $outputBuffer = '', ?LoggerInterface $logger = null) - { - $this->debug = \is_bool($debug) ? $debug : $debug(...); - $this->charset = $charset ?: (\ini_get('default_charset') ?: 'UTF-8'); - $this->fileLinkFormat = $fileLinkFormat instanceof FileLinkFormatter ? $fileLinkFormat : new FileLinkFormatter($fileLinkFormat); - $this->projectDir = $projectDir; - $this->outputBuffer = \is_string($outputBuffer) ? $outputBuffer : $outputBuffer(...); - $this->logger = $logger; - } - - public function render(\Throwable $exception): FlattenException - { - $headers = ['Content-Type' => 'text/html; charset='.$this->charset]; - if (\is_bool($this->debug) ? $this->debug : ($this->debug)($exception)) { - $headers['X-Debug-Exception'] = rawurlencode(substr($exception->getMessage(), 0, 2000)); - $headers['X-Debug-Exception-File'] = rawurlencode($exception->getFile()).':'.$exception->getLine(); - } - - $exception = FlattenException::createWithDataRepresentation($exception, null, $headers); - - return $exception->setAsString($this->renderException($exception)); - } - - /** - * Gets the HTML content associated with the given exception. - */ - public function getBody(FlattenException $exception): string - { - return $this->renderException($exception, 'views/exception.html.php'); - } - - /** - * Gets the stylesheet associated with the given exception. - */ - public function getStylesheet(): string - { - if (!$this->debug) { - return $this->include('assets/css/error.css'); - } - - return $this->include('assets/css/exception.css'); - } - - public static function isDebug(RequestStack $requestStack, bool $debug): \Closure - { - return static function () use ($requestStack, $debug): bool { - if (!$request = $requestStack->getCurrentRequest()) { - return $debug; - } - - return $debug && $request->attributes->getBoolean('showException', true); - }; - } - - public static function getAndCleanOutputBuffer(RequestStack $requestStack): \Closure - { - return static function () use ($requestStack): string { - if (!$request = $requestStack->getCurrentRequest()) { - return ''; - } - - $startObLevel = $request->headers->get('X-Php-Ob-Level', -1); - - if (ob_get_level() <= $startObLevel) { - return ''; - } - - Response::closeOutputBuffers($startObLevel + 1, true); - - return ob_get_clean(); - }; - } - - private function renderException(FlattenException $exception, string $debugTemplate = 'views/exception_full.html.php'): string - { - $debug = \is_bool($this->debug) ? $this->debug : ($this->debug)($exception); - $statusText = $this->escape($exception->getStatusText()); - $statusCode = $this->escape($exception->getStatusCode()); - - if (!$debug) { - return $this->include(self::$template, [ - 'statusText' => $statusText, - 'statusCode' => $statusCode, - ]); - } - - $exceptionMessage = $this->escape($exception->getMessage()); - - return $this->include($debugTemplate, [ - 'exception' => $exception, - 'exceptionMessage' => $exceptionMessage, - 'statusText' => $statusText, - 'statusCode' => $statusCode, - 'logger' => null !== $this->logger && class_exists(DebugLoggerConfigurator::class) ? DebugLoggerConfigurator::getDebugLogger($this->logger) : null, - 'currentContent' => \is_string($this->outputBuffer) ? $this->outputBuffer : ($this->outputBuffer)(), - ]); - } - - private function dumpValue(Data $value): string - { - $dumper = new HtmlDumper(); - $dumper->setTheme('light'); - - return $dumper->dump($value, true); - } - - private function formatArgs(array $args): string - { - $result = []; - foreach ($args as $key => $item) { - if ('object' === $item[0]) { - $formattedValue = sprintf('object(%s)', $this->abbrClass($item[1])); - } elseif ('array' === $item[0]) { - $formattedValue = sprintf('array(%s)', \is_array($item[1]) ? $this->formatArgs($item[1]) : $item[1]); - } elseif ('null' === $item[0]) { - $formattedValue = 'null'; - } elseif ('boolean' === $item[0]) { - $formattedValue = ''.strtolower(var_export($item[1], true)).''; - } elseif ('resource' === $item[0]) { - $formattedValue = 'resource'; - } elseif (preg_match('/[^\x07-\x0D\x1B\x20-\xFF]/', $item[1])) { - $formattedValue = 'binary string'; - } else { - $formattedValue = str_replace("\n", '', $this->escape(var_export($item[1], true))); - } - - $result[] = \is_int($key) ? $formattedValue : sprintf("'%s' => %s", $this->escape($key), $formattedValue); - } - - return implode(', ', $result); - } - - private function formatArgsAsText(array $args): string - { - return strip_tags($this->formatArgs($args)); - } - - private function escape(string $string): string - { - return htmlspecialchars($string, \ENT_COMPAT | \ENT_SUBSTITUTE, $this->charset); - } - - private function abbrClass(string $class): string - { - $parts = explode('\\', $class); - $short = array_pop($parts); - - return sprintf('%s', $class, $short); - } - - private function getFileRelative(string $file): ?string - { - $file = str_replace('\\', '/', $file); - - if (null !== $this->projectDir && str_starts_with($file, $this->projectDir)) { - return ltrim(substr($file, \strlen($this->projectDir)), '/'); - } - - return null; - } - - /** - * Formats a file path. - * - * @param string $file An absolute file path - * @param int $line The line number - * @param string $text Use this text for the link rather than the file path - */ - private function formatFile(string $file, int $line, ?string $text = null): string - { - $file = trim($file); - - if (null === $text) { - $text = $file; - if (null !== $rel = $this->getFileRelative($text)) { - $rel = explode('/', $rel, 2); - $text = sprintf('%s%s', $this->projectDir, $rel[0], '/'.($rel[1] ?? '')); - } - } - - if (0 < $line) { - $text .= ' at line '.$line; - } - - $link = $this->fileLinkFormat->format($file, $line); - - return sprintf('
    %s', $this->escape($link), $text); - } - - /** - * Returns an excerpt of a code file around the given line number. - * - * @param string $file A file path - * @param int $line The selected line number - * @param int $srcContext The number of displayed lines around or -1 for the whole file - */ - private function fileExcerpt(string $file, int $line, int $srcContext = 3): string - { - if (is_file($file) && is_readable($file)) { - // highlight_file could throw warnings - // see https://bugs.php.net/25725 - $code = @highlight_file($file, true); - if (\PHP_VERSION_ID >= 80300) { - // remove main pre/code tags - $code = preg_replace('#^\s*(.*)\s*#s', '\\1', $code); - // split multiline span tags - $code = preg_replace_callback('#]++)>((?:[^<\\n]*+\\n)++[^<]*+)#', function ($m) { - return "".str_replace("\n", "\n", $m[2]).''; - }, $code); - $content = explode("\n", $code); - } else { - // remove main code/span tags - $code = preg_replace('#^\s*(.*)\s*#s', '\\1', $code); - // split multiline spans - $code = preg_replace_callback('#]++)>((?:[^<]*+
    )++[^<]*+)
    #', fn ($m) => "".str_replace('
    ', "

    ", $m[2]).'', $code); - $content = explode('
    ', $code); - } - - $lines = []; - if (0 > $srcContext) { - $srcContext = \count($content); - } - - for ($i = max($line - $srcContext, 1), $max = min($line + $srcContext, \count($content)); $i <= $max; ++$i) { - $lines[] = ''.$this->fixCodeMarkup($content[$i - 1]).''; - } - - return '
      '.implode("\n", $lines).'
    '; - } - - return ''; - } - - private function fixCodeMarkup(string $line): string - { - // ending tag from previous line - $opening = strpos($line, ''); - if (false !== $closing && (false === $opening || $closing < $opening)) { - $line = substr_replace($line, '', $closing, 7); - } - - // missing tag at the end of line - $opening = strrpos($line, ''); - if (false !== $opening && (false === $closing || $closing < $opening)) { - $line .= ''; - } - - return trim($line); - } - - private function formatFileFromText(string $text): string - { - return preg_replace_callback('/in ("|")?(.+?)\1(?: +(?:on|at))? +line (\d+)/s', fn ($match) => 'in '.$this->formatFile($match[2], $match[3]), $text) ?? $text; - } - - private function formatLogMessage(string $message, array $context): string - { - if ($context && str_contains($message, '{')) { - $replacements = []; - foreach ($context as $key => $val) { - if (\is_scalar($val)) { - $replacements['{'.$key.'}'] = $val; - } - } - - if ($replacements) { - $message = strtr($message, $replacements); - } - } - - return $this->escape($message); - } - - private function addElementToGhost(): string - { - if (!isset(self::GHOST_ADDONS[date('m-d')])) { - return ''; - } - - return ''; - } - - private function include(string $name, array $context = []): string - { - extract($context, \EXTR_SKIP); - ob_start(); - - include is_file(\dirname(__DIR__).'/Resources/'.$name) ? \dirname(__DIR__).'/Resources/'.$name : $name; - - return trim(ob_get_clean()); - } - - /** - * Allows overriding the default non-debug template. - * - * @param string $template path to the custom template file to render - */ - public static function setTemplate(string $template): void - { - self::$template = $template; - } -} diff --git a/docker/streamline-src/vendor/symfony/error-handler/ErrorRenderer/SerializerErrorRenderer.php b/docker/streamline-src/vendor/symfony/error-handler/ErrorRenderer/SerializerErrorRenderer.php deleted file mode 100644 index b09a6e00..00000000 --- a/docker/streamline-src/vendor/symfony/error-handler/ErrorRenderer/SerializerErrorRenderer.php +++ /dev/null @@ -1,81 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\ErrorHandler\ErrorRenderer; - -use Symfony\Component\ErrorHandler\Exception\FlattenException; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\RequestStack; -use Symfony\Component\Serializer\Exception\NotEncodableValueException; -use Symfony\Component\Serializer\SerializerInterface; - -/** - * Formats an exception using Serializer for rendering. - * - * @author Nicolas Grekas - */ -class SerializerErrorRenderer implements ErrorRendererInterface -{ - private SerializerInterface $serializer; - private string|\Closure $format; - private ErrorRendererInterface $fallbackErrorRenderer; - private bool|\Closure $debug; - - /** - * @param string|callable(FlattenException) $format The format as a string or a callable that should return it - * formats not supported by Request::getMimeTypes() should be given as mime types - * @param bool|callable $debug The debugging mode as a boolean or a callable that should return it - */ - public function __construct(SerializerInterface $serializer, string|callable $format, ?ErrorRendererInterface $fallbackErrorRenderer = null, bool|callable $debug = false) - { - $this->serializer = $serializer; - $this->format = \is_string($format) ? $format : $format(...); - $this->fallbackErrorRenderer = $fallbackErrorRenderer ?? new HtmlErrorRenderer(); - $this->debug = \is_bool($debug) ? $debug : $debug(...); - } - - public function render(\Throwable $exception): FlattenException - { - $headers = ['Vary' => 'Accept']; - $debug = \is_bool($this->debug) ? $this->debug : ($this->debug)($exception); - if ($debug) { - $headers['X-Debug-Exception'] = rawurlencode(substr($exception->getMessage(), 0, 2000)); - $headers['X-Debug-Exception-File'] = rawurlencode($exception->getFile()).':'.$exception->getLine(); - } - - $flattenException = FlattenException::createFromThrowable($exception, null, $headers); - - try { - $format = \is_string($this->format) ? $this->format : ($this->format)($flattenException); - $headers['Content-Type'] = Request::getMimeTypes($format)[0] ?? $format; - - $flattenException->setAsString($this->serializer->serialize($flattenException, $format, [ - 'exception' => $exception, - 'debug' => $debug, - ])); - } catch (NotEncodableValueException) { - $flattenException = $this->fallbackErrorRenderer->render($exception); - } - - return $flattenException->setHeaders($flattenException->getHeaders() + $headers); - } - - public static function getPreferredFormat(RequestStack $requestStack): \Closure - { - return static function () use ($requestStack) { - if (!$request = $requestStack->getCurrentRequest()) { - throw new NotEncodableValueException(); - } - - return $request->getPreferredFormat(); - }; - } -} diff --git a/docker/streamline-src/vendor/symfony/error-handler/Exception/FlattenException.php b/docker/streamline-src/vendor/symfony/error-handler/Exception/FlattenException.php deleted file mode 100644 index f8ec1faf..00000000 --- a/docker/streamline-src/vendor/symfony/error-handler/Exception/FlattenException.php +++ /dev/null @@ -1,440 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\ErrorHandler\Exception; - -use Symfony\Component\HttpFoundation\Exception\RequestExceptionInterface; -use Symfony\Component\HttpFoundation\Response; -use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface; -use Symfony\Component\VarDumper\Caster\Caster; -use Symfony\Component\VarDumper\Cloner\Data; -use Symfony\Component\VarDumper\Cloner\Stub; -use Symfony\Component\VarDumper\Cloner\VarCloner; - -/** - * FlattenException wraps a PHP Error or Exception to be able to serialize it. - * - * Basically, this class removes all objects from the trace. - * - * @author Fabien Potencier - */ -class FlattenException -{ - private string $message; - private string|int $code; - private ?self $previous = null; - private array $trace; - private string $traceAsString; - private string $class; - private int $statusCode; - private string $statusText; - private array $headers; - private string $file; - private int $line; - private ?string $asString = null; - private Data $dataRepresentation; - - public static function create(\Exception $exception, ?int $statusCode = null, array $headers = []): static - { - return static::createFromThrowable($exception, $statusCode, $headers); - } - - public static function createFromThrowable(\Throwable $exception, ?int $statusCode = null, array $headers = []): static - { - $e = new static(); - $e->setMessage($exception->getMessage()); - $e->setCode($exception->getCode()); - - if ($exception instanceof HttpExceptionInterface) { - $statusCode = $exception->getStatusCode(); - $headers = array_merge($headers, $exception->getHeaders()); - } elseif ($exception instanceof RequestExceptionInterface) { - $statusCode = 400; - } - - $statusCode ??= 500; - - if (class_exists(Response::class) && isset(Response::$statusTexts[$statusCode])) { - $statusText = Response::$statusTexts[$statusCode]; - } else { - $statusText = 'Whoops, looks like something went wrong.'; - } - - $e->setStatusText($statusText); - $e->setStatusCode($statusCode); - $e->setHeaders($headers); - $e->setTraceFromThrowable($exception); - $e->setClass(get_debug_type($exception)); - $e->setFile($exception->getFile()); - $e->setLine($exception->getLine()); - - $previous = $exception->getPrevious(); - - if ($previous instanceof \Throwable) { - $e->setPrevious(static::createFromThrowable($previous)); - } - - return $e; - } - - public static function createWithDataRepresentation(\Throwable $throwable, ?int $statusCode = null, array $headers = [], ?VarCloner $cloner = null): static - { - $e = static::createFromThrowable($throwable, $statusCode, $headers); - - static $defaultCloner; - - if (!$cloner ??= $defaultCloner) { - $cloner = $defaultCloner = new VarCloner(); - $cloner->addCasters([ - \Throwable::class => function (\Throwable $e, array $a, Stub $s, bool $isNested): array { - if (!$isNested) { - unset($a[Caster::PREFIX_PROTECTED.'message']); - unset($a[Caster::PREFIX_PROTECTED.'code']); - unset($a[Caster::PREFIX_PROTECTED.'file']); - unset($a[Caster::PREFIX_PROTECTED.'line']); - unset($a["\0Error\0trace"], $a["\0Exception\0trace"]); - unset($a["\0Error\0previous"], $a["\0Exception\0previous"]); - } - - return $a; - }, - ]); - } - - return $e->setDataRepresentation($cloner->cloneVar($throwable)); - } - - public function toArray(): array - { - $exceptions = []; - foreach (array_merge([$this], $this->getAllPrevious()) as $exception) { - $exceptions[] = [ - 'message' => $exception->getMessage(), - 'class' => $exception->getClass(), - 'trace' => $exception->getTrace(), - 'data' => $exception->getDataRepresentation(), - ]; - } - - return $exceptions; - } - - public function getStatusCode(): int - { - return $this->statusCode; - } - - /** - * @return $this - */ - public function setStatusCode(int $code): static - { - $this->statusCode = $code; - - return $this; - } - - public function getHeaders(): array - { - return $this->headers; - } - - /** - * @return $this - */ - public function setHeaders(array $headers): static - { - $this->headers = $headers; - - return $this; - } - - public function getClass(): string - { - return $this->class; - } - - /** - * @return $this - */ - public function setClass(string $class): static - { - $this->class = str_contains($class, "@anonymous\0") ? (get_parent_class($class) ?: key(class_implements($class)) ?: 'class').'@anonymous' : $class; - - return $this; - } - - public function getFile(): string - { - return $this->file; - } - - /** - * @return $this - */ - public function setFile(string $file): static - { - $this->file = $file; - - return $this; - } - - public function getLine(): int - { - return $this->line; - } - - /** - * @return $this - */ - public function setLine(int $line): static - { - $this->line = $line; - - return $this; - } - - public function getStatusText(): string - { - return $this->statusText; - } - - /** - * @return $this - */ - public function setStatusText(string $statusText): static - { - $this->statusText = $statusText; - - return $this; - } - - public function getMessage(): string - { - return $this->message; - } - - /** - * @return $this - */ - public function setMessage(string $message): static - { - if (str_contains($message, "@anonymous\0")) { - $message = preg_replace_callback('/[a-zA-Z_\x7f-\xff][\\\\a-zA-Z0-9_\x7f-\xff]*+@anonymous\x00.*?\.php(?:0x?|:[0-9]++\$)?[0-9a-fA-F]++/', fn ($m) => class_exists($m[0], false) ? (get_parent_class($m[0]) ?: key(class_implements($m[0])) ?: 'class').'@anonymous' : $m[0], $message); - } - - $this->message = $message; - - return $this; - } - - /** - * @return int|string int most of the time (might be a string with PDOException) - */ - public function getCode(): int|string - { - return $this->code; - } - - /** - * @return $this - */ - public function setCode(int|string $code): static - { - $this->code = $code; - - return $this; - } - - public function getPrevious(): ?self - { - return $this->previous; - } - - /** - * @return $this - */ - public function setPrevious(?self $previous): static - { - $this->previous = $previous; - - return $this; - } - - /** - * @return self[] - */ - public function getAllPrevious(): array - { - $exceptions = []; - $e = $this; - while ($e = $e->getPrevious()) { - $exceptions[] = $e; - } - - return $exceptions; - } - - public function getTrace(): array - { - return $this->trace; - } - - /** - * @return $this - */ - public function setTraceFromThrowable(\Throwable $throwable): static - { - $this->traceAsString = $throwable->getTraceAsString(); - - return $this->setTrace($throwable->getTrace(), $throwable->getFile(), $throwable->getLine()); - } - - /** - * @return $this - */ - public function setTrace(array $trace, ?string $file, ?int $line): static - { - $this->trace = []; - $this->trace[] = [ - 'namespace' => '', - 'short_class' => '', - 'class' => '', - 'type' => '', - 'function' => '', - 'file' => $file, - 'line' => $line, - 'args' => [], - ]; - foreach ($trace as $entry) { - $class = ''; - $namespace = ''; - if (isset($entry['class'])) { - $parts = explode('\\', $entry['class']); - $class = array_pop($parts); - $namespace = implode('\\', $parts); - } - - $this->trace[] = [ - 'namespace' => $namespace, - 'short_class' => $class, - 'class' => $entry['class'] ?? '', - 'type' => $entry['type'] ?? '', - 'function' => $entry['function'] ?? null, - 'file' => $entry['file'] ?? null, - 'line' => $entry['line'] ?? null, - 'args' => isset($entry['args']) ? $this->flattenArgs($entry['args']) : [], - ]; - } - - return $this; - } - - public function getDataRepresentation(): ?Data - { - return $this->dataRepresentation ?? null; - } - - /** - * @return $this - */ - public function setDataRepresentation(Data $data): static - { - $this->dataRepresentation = $data; - - return $this; - } - - private function flattenArgs(array $args, int $level = 0, int &$count = 0): array - { - $result = []; - foreach ($args as $key => $value) { - if (++$count > 1e4) { - return ['array', '*SKIPPED over 10000 entries*']; - } - if ($value instanceof \__PHP_Incomplete_Class) { - $result[$key] = ['incomplete-object', $this->getClassNameFromIncomplete($value)]; - } elseif (\is_object($value)) { - $result[$key] = ['object', get_debug_type($value)]; - } elseif (\is_array($value)) { - if ($level > 10) { - $result[$key] = ['array', '*DEEP NESTED ARRAY*']; - } else { - $result[$key] = ['array', $this->flattenArgs($value, $level + 1, $count)]; - } - } elseif (null === $value) { - $result[$key] = ['null', null]; - } elseif (\is_bool($value)) { - $result[$key] = ['boolean', $value]; - } elseif (\is_int($value)) { - $result[$key] = ['integer', $value]; - } elseif (\is_float($value)) { - $result[$key] = ['float', $value]; - } elseif (\is_resource($value)) { - $result[$key] = ['resource', get_resource_type($value)]; - } else { - $result[$key] = ['string', (string) $value]; - } - } - - return $result; - } - - private function getClassNameFromIncomplete(\__PHP_Incomplete_Class $value): string - { - $array = new \ArrayObject($value); - - return $array['__PHP_Incomplete_Class_Name']; - } - - public function getTraceAsString(): string - { - return $this->traceAsString; - } - - /** - * @return $this - */ - public function setAsString(?string $asString): static - { - $this->asString = $asString; - - return $this; - } - - public function getAsString(): string - { - if (null !== $this->asString) { - return $this->asString; - } - - $message = ''; - $next = false; - - foreach (array_reverse(array_merge([$this], $this->getAllPrevious())) as $exception) { - if ($next) { - $message .= 'Next '; - } else { - $next = true; - } - $message .= $exception->getClass(); - - if ('' != $exception->getMessage()) { - $message .= ': '.$exception->getMessage(); - } - - $message .= ' in '.$exception->getFile().':'.$exception->getLine(). - "\nStack trace:\n".$exception->getTraceAsString()."\n\n"; - } - - return rtrim($message); - } -} diff --git a/docker/streamline-src/vendor/symfony/error-handler/Resources/assets/css/exception.css b/docker/streamline-src/vendor/symfony/error-handler/Resources/assets/css/exception.css deleted file mode 100644 index e4d1f11e..00000000 --- a/docker/streamline-src/vendor/symfony/error-handler/Resources/assets/css/exception.css +++ /dev/null @@ -1,359 +0,0 @@ -/* This file is based on WebProfilerBundle/Resources/views/Profiler/profiler.css.twig. - If you make any change in this file, verify the same change is needed in the other file. */ -:root { - --font-sans-serif: Helvetica, Arial, sans-serif; - --page-background: #f9f9f9; - --color-text: #222; - /* when updating any of these colors, do the same in toolbar.css.twig */ - --color-success: #4f805d; - --color-warning: #a46a1f; - --color-error: #b0413e; - --color-muted: #999; - --tab-background: #f0f0f0; - --tab-border-color: #e5e5e5; - --tab-active-border-color: #d4d4d4; - --tab-color: #444; - --tab-active-background: #fff; - --tab-active-color: var(--color-text); - --tab-disabled-background: #f5f5f5; - --tab-disabled-color: #999; - --selected-badge-background: #e5e5e5; - --selected-badge-color: #525252; - --selected-badge-shadow: inset 0 0 0 1px #d4d4d4; - --selected-badge-warning-background: #fde496; - --selected-badge-warning-color: #785b02; - --selected-badge-warning-shadow: inset 0 0 0 1px #e6af05; - --selected-badge-danger-background: #FCE9ED; - --selected-badge-danger-color: #83122A; - --selected-badge-danger-shadow: inset 0 0 0 1px #F5B8C5; - --metric-value-background: #fff; - --metric-value-color: inherit; - --metric-unit-color: #999; - --metric-label-background: #e0e0e0; - --metric-label-color: inherit; - --table-border: #e0e0e0; - --table-background: #fff; - --table-header: #e0e0e0; - --trace-selected-background: #F7E5A1; - --tree-active-background: #F7E5A1; - --exception-title-color: var(--base-2); - --shadow: 0px 0px 1px rgba(128, 128, 128, .2); - --border: 1px solid #e0e0e0; - --background-error: var(--color-error); - --highlight-comment: #969896; - --highlight-default: #222222; - --highlight-keyword: #a71d5d; - --highlight-string: #183691; - --base-0: #fff; - --base-1: #f5f5f5; - --base-2: #e0e0e0; - --base-3: #ccc; - --base-4: #666; - --base-5: #444; - --base-6: #222; -} - -.theme-dark { - --page-background: #36393e; - --color-text: #e0e0e0; - --color-muted: #777; - --color-error: #d43934; - --tab-background: #404040; - --tab-border-color: #737373; - --tab-active-border-color: #171717; - --tab-color: var(--color-text); - --tab-active-background: #d4d4d4; - --tab-active-color: #262626; - --tab-disabled-background: var(--page-background); - --tab-disabled-color: #a3a3a3; - --selected-badge-background: #555; - --selected-badge-color: #ddd; - --selected-badge-shadow: none; - --selected-badge-warning-background: #fcd55f; - --selected-badge-warning-color: #785b02; - --selected-badge-warning-shadow: inset 0 0 0 1px #af8503; - --selected-badge-danger-background: #B41939; - --selected-badge-danger-color: #FCE9ED; - --selected-badge-danger-shadow: none; - --metric-value-background: #555; - --metric-value-color: inherit; - --metric-unit-color: #999; - --metric-label-background: #777; - --metric-label-color: #e0e0e0; - --trace-selected-background: #71663acc; - --table-border: #444; - --table-background: #333; - --table-header: #555; - --info-background: rgba(79, 148, 195, 0.5); - --tree-active-background: var(--metric-label-background); - --exception-title-color: var(--base-2); - --shadow: 0px 0px 1px rgba(32, 32, 32, .2); - --border: 1px solid #666; - --background-error: #b0413e; - --highlight-comment: #dedede; - --highlight-default: var(--base-6); - --highlight-keyword: #ff413c; - --highlight-string: #70a6fd; - --base-0: #2e3136; - --base-1: #444; - --base-2: #666; - --base-3: #666; - --base-4: #666; - --base-5: #e0e0e0; - --base-6: #f5f5f5; - --card-label-background: var(--tab-active-background); - --card-label-color: var(--tab-active-color); -} - -html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}summary{cursor: pointer} - -html { - /* always display the vertical scrollbar to avoid jumps when toggling contents */ - overflow-y: scroll; -} -body { background-color: var(--page-background); color: var(--base-6); font: 14px/1.4 Helvetica, Arial, sans-serif; padding-bottom: 45px; } - -a { cursor: pointer; text-decoration: none; } -a:hover { text-decoration: underline; } -abbr[title] { border-bottom: none; cursor: help; text-decoration: none; } - -code, pre { font: 13px/1.5 Consolas, Monaco, Menlo, "Ubuntu Mono", "Liberation Mono", monospace; } - -table, tr, th, td { background: var(--base-0); border-collapse: collapse; vertical-align: top; } -table { background: var(--base-0); border: var(--border); box-shadow: 0px 0px 1px rgba(128, 128, 128, .2); margin: 1em 0; width: 100%; } -table th, table td { border: solid var(--base-2); border-width: 1px 0; padding: 8px 10px; } -table th { background-color: var(--base-2); font-weight: bold; text-align: left; } - -.m-t-5 { margin-top: 5px; } -.hidden-xs-down { display: none; } -.block { display: block; } -.full-width { width: 100%; } -.hidden { display: none; } -.prewrap { white-space: pre-wrap; } -.nowrap { white-space: nowrap; } -.newline { display: block; } -.break-long-words { word-wrap: break-word; overflow-wrap: break-word; -webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; min-width: 0; } -.text-small { font-size: 12px !important; } -.text-muted { color: #999; } -.text-bold { font-weight: bold; } -.empty { border: 4px dashed var(--base-2); color: #999; margin: 1em 0; padding: .5em 2em; } - -.status-success { background: rgba(94, 151, 110, 0.3); } -.status-warning { background: rgba(240, 181, 24, 0.3); } -.status-error { background: rgba(176, 65, 62, 0.2); } -.status-success td, .status-warning td, .status-error td { background: transparent; } -tr.status-error td, tr.status-warning td { border-bottom: 1px solid var(--base-2); border-top: 1px solid var(--base-2); } -.status-warning .colored { color: #A46A1F; } -.status-error .colored { color: var(--color-error); } - -.sf-toggle { cursor: pointer; position: relative; } -.sf-toggle-content { -moz-transition: display .25s ease; -webkit-transition: display .25s ease; transition: display .25s ease; } -.sf-toggle-content.sf-toggle-hidden { display: none; } -.sf-toggle-content.sf-toggle-visible { display: block; } -thead.sf-toggle-content.sf-toggle-visible, tbody.sf-toggle-content.sf-toggle-visible { display: table-row-group; } -.sf-toggle-off .icon-close, .sf-toggle-on .icon-open { display: none; } -.sf-toggle-off .icon-open, .sf-toggle-on .icon-close { display: block; } - -.tab-navigation { - background-color: var(--tab-background); - border-radius: 6px; - box-shadow: inset 0 0 0 1px var(--tab-border-color), 0 0 0 5px var(--page-background); - display: inline-flex; - flex-wrap: wrap; - margin: 0 0 15px; - padding: 0; - user-select: none; - -webkit-user-select: none; -} -.sf-tabs-sm .tab-navigation { - box-shadow: inset 0 0 0 1px var(--tab-border-color), 0 0 0 4px var(--page-background); - margin: 0 0 10px; -} -.tab-navigation .tab-control { - background: transparent; - border: 0; - box-shadow: none; - transition: box-shadow .05s ease-in, background-color .05s ease-in; - cursor: pointer; - font-size: 14px; - font-weight: 500; - line-height: 1.4; - margin: 0; - padding: 4px 14px; - position: relative; - text-align: center; - z-index: 1; -} -.sf-tabs-sm .tab-navigation .tab-control { - font-size: 13px; - padding: 2.5px 10px; -} -.tab-navigation .tab-control:before { - background: var(--tab-border-color); - bottom: 15%; - content: ""; - left: 0; - position: absolute; - top: 15%; - width: 1px; -} -.tab-navigation .tab-control:first-child:before, -.tab-navigation .tab-control.active + .tab-control:before, -.tab-navigation .tab-control.active:before { - width: 0; -} -.tab-navigation .tab-control .badge { - background: var(--selected-badge-background); - box-shadow: var(--selected-badge-shadow); - color: var(--selected-badge-color); - display: inline-block; - font-size: 12px; - font-weight: bold; - line-height: 1; - margin-left: 8px; - min-width: 10px; - padding: 2px 6px; - text-align: center; - white-space: nowrap; -} -.tab-navigation .tab-control.disabled { - color: var(--tab-disabled-color); -} -.tab-navigation .tab-control.active { - background-color: var(--tab-active-background); - border-radius: 6px; - box-shadow: inset 0 0 0 1.5px var(--tab-active-border-color); - color: var(--tab-active-color); - position: relative; - z-index: 1; -} -.theme-dark .tab-navigation li.active { - box-shadow: inset 0 0 0 1px var(--tab-border-color); -} -.tab-content > *:first-child { - margin-top: 0; -} -.tab-navigation .tab-control .badge.status-warning { - background: var(--selected-badge-warning-background); - box-shadow: var(--selected-badge-warning-shadow); - color: var(--selected-badge-warning-color); -} -.tab-navigation .tab-control .badge.status-error { - background: var(--selected-badge-danger-background); - box-shadow: var(--selected-badge-danger-shadow); - color: var(--selected-badge-danger-color); -} - -.sf-tabs .tab:not(:first-child) { display: none; } - -[data-filters] { position: relative; } -[data-filtered] { cursor: pointer; } -[data-filtered]:after { content: '\00a0\25BE'; } -[data-filtered]:hover .filter-list li { display: inline-flex; } -[class*="filter-hidden-"] { display: none; } -.filter-list { position: absolute; border: var(--border); box-shadow: var(--shadow); margin: 0; padding: 0; display: flex; flex-direction: column; } -.filter-list :after { content: ''; } -.filter-list li { - background: var(--tab-disabled-background); - border-bottom: var(--border); - color: var(--tab-disabled-color); - display: none; - list-style: none; - margin: 0; - padding: 5px 10px; - text-align: left; - font-weight: normal; -} -.filter-list li.active { - background: var(--tab-background); - color: var(--tab-color); -} -.filter-list li.last-active { - background: var(--tab-active-background); - color: var(--tab-active-color); -} - -.filter-list-level li { cursor: s-resize; } -.filter-list-level li.active { cursor: n-resize; } -.filter-list-level li.last-active { cursor: default; } -.filter-list-level li.last-active:before { content: '\2714\00a0'; } -.filter-list-choice li:before { content: '\2714\00a0'; color: transparent; } -.filter-list-choice li.active:before { color: unset; } - -.container { max-width: 1024px; margin: 0 auto; padding: 0 15px; } -.container::after { content: ""; display: table; clear: both; } - -header { background-color: #222; color: rgba(255, 255, 255, 0.75); font-size: 13px; height: 33px; line-height: 33px; padding: 0; } -header .container { display: flex; justify-content: space-between; } -.logo { flex: 1; font-size: 13px; font-weight: normal; margin: 0; padding: 0; } -.logo svg { height: 18px; width: 18px; opacity: .8; vertical-align: -5px; } - -.help-link { margin-left: 15px; } -.help-link a { color: inherit; } -.help-link .icon svg { height: 15px; width: 15px; opacity: .7; vertical-align: -2px; } -.help-link a:hover { color: #EEE; text-decoration: none; } -.help-link a:hover svg { opacity: .9; } - -.exception-summary { background: var(--background-error); border-bottom: 2px solid rgba(0, 0, 0, 0.1); border-top: 1px solid rgba(0, 0, 0, .3); flex: 0 0 auto; margin-bottom: 15px; } -.exception-metadata { background: rgba(0, 0, 0, 0.1); padding: 7px 0; } -.exception-metadata .container { display: flex; flex-direction: row; justify-content: space-between; } -.exception-metadata h2, .exception-metadata h2 > a { color: rgba(255, 255, 255, 0.8); font-size: 13px; font-weight: 400; margin: 0; } -.exception-http small { font-size: 13px; opacity: .7; } -.exception-hierarchy { flex: 1; } -.exception-hierarchy .icon { margin: 0 3px; opacity: .7; } -.exception-hierarchy .icon svg { height: 13px; width: 13px; vertical-align: -2px; } - -.exception-without-message .exception-message-wrapper { display: none; } -.exception-message-wrapper .container { display: flex; align-items: flex-start; min-height: 70px; padding: 10px 15px 8px; } -.exception-message { flex-grow: 1; } -.exception-message, .exception-message a { color: #FFF; font-size: 21px; font-weight: 400; margin: 0; } -.exception-message.long { font-size: 18px; } -.exception-message a { border-bottom: 1px solid rgba(255, 255, 255, 0.5); font-size: inherit; text-decoration: none; } -.exception-message a:hover { border-bottom-color: #ffffff; } - -.exception-properties-wrapper { margin: .8em 0; } -.exception-properties { background: var(--base-0); border: var(--border); box-shadow: 0px 0px 1px rgba(128, 128, 128, .2); } -.exception-properties pre { margin: 0; padding: 0.2em 0; } - -.exception-illustration { flex-basis: 111px; flex-shrink: 0; height: 66px; margin-left: 15px; opacity: .7; } - -.trace + .trace { margin-top: 30px; } -.trace-head { background-color: var(--base-2); padding: 10px; position: relative; } -.trace-head .trace-class { color: var(--base-6); font-size: 18px; font-weight: bold; line-height: 1.3; margin: 0; position: relative; } -.trace-head .trace-namespace { color: #999; display: block; font-size: 13px; } -.trace-head .icon { position: absolute; right: 0; top: 0; } -.trace-head .icon svg { fill: var(--base-5); height: 24px; width: 24px; } - -.trace-details { background: var(--base-0); border: var(--border); box-shadow: 0px 0px 1px rgba(128, 128, 128, .2); margin: 0 0 1em; table-layout: fixed; } - -.trace-message { font-size: 14px; font-weight: normal; margin: .5em 0 0; } - -.trace-line { position: relative; padding-top: 8px; padding-bottom: 8px; } -.trace-line + .trace-line { border-top: var(--border); } -.trace-line:hover { background: var(--base-1); } -.trace-line a { color: var(--base-6); } -.trace-line .icon { opacity: .4; position: absolute; left: 10px; } -.trace-line .icon svg { fill: var(--base-5); height: 16px; width: 16px; } -.trace-line .icon.icon-copy { left: auto; top: auto; padding-left: 5px; display: none } -.trace-line:hover .icon.icon-copy:not(.hidden) { display: inline-block } -.trace-line-header { padding-left: 36px; padding-right: 10px; } - -.trace-file-path, .trace-file-path a { color: var(--base-6); font-size: 13px; } -.trace-class { color: var(--color-error); } -.trace-type { padding: 0 2px; } -.trace-method { color: var(--color-error); font-weight: bold; } -.trace-arguments { color: #777; font-weight: normal; padding-left: 2px; } - -.trace-code { background: var(--base-0); font-size: 12px; margin: 10px 10px 2px 10px; padding: 10px; overflow-x: auto; white-space: nowrap; } -.trace-code ol { margin: 0; float: left; } -.trace-code li { color: #969896; margin: 0; padding-left: 10px; float: left; width: 100%; } -.trace-code li + li { margin-top: 5px; } -.trace-code li.selected { background: var(--trace-selected-background); margin-top: 2px; } -.trace-code li code { color: var(--base-6); white-space: pre; } - -.trace-as-text .stacktrace { line-height: 1.8; margin: 0 0 15px; white-space: pre-wrap; } - -@media (min-width: 575px) { - .hidden-xs-down { display: initial; } - .help-link { margin-left: 30px; } -} diff --git a/docker/streamline-src/vendor/symfony/event-dispatcher-contracts/EventDispatcherInterface.php b/docker/streamline-src/vendor/symfony/event-dispatcher-contracts/EventDispatcherInterface.php deleted file mode 100644 index 2d7840d3..00000000 --- a/docker/streamline-src/vendor/symfony/event-dispatcher-contracts/EventDispatcherInterface.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Contracts\EventDispatcher; - -use Psr\EventDispatcher\EventDispatcherInterface as PsrEventDispatcherInterface; - -/** - * Allows providing hooks on domain-specific lifecycles by dispatching events. - */ -interface EventDispatcherInterface extends PsrEventDispatcherInterface -{ - /** - * Dispatches an event to all registered listeners. - * - * @template T of object - * - * @param T $event The event to pass to the event handlers/listeners - * @param string|null $eventName The name of the event to dispatch. If not supplied, - * the class of $event should be used instead. - * - * @return T The passed $event MUST be returned - */ - public function dispatch(object $event, ?string $eventName = null): object; -} diff --git a/docker/streamline-src/vendor/symfony/event-dispatcher-contracts/composer.json b/docker/streamline-src/vendor/symfony/event-dispatcher-contracts/composer.json deleted file mode 100644 index 35956eb8..00000000 --- a/docker/streamline-src/vendor/symfony/event-dispatcher-contracts/composer.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "symfony/event-dispatcher-contracts", - "type": "library", - "description": "Generic abstractions related to dispatching event", - "keywords": ["abstractions", "contracts", "decoupling", "interfaces", "interoperability", "standards"], - "homepage": "https://symfony.com", - "license": "MIT", - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "require": { - "php": ">=8.1", - "psr/event-dispatcher": "^1" - }, - "autoload": { - "psr-4": { "Symfony\\Contracts\\EventDispatcher\\": "" } - }, - "minimum-stability": "dev", - "extra": { - "branch-alias": { - "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - } -} diff --git a/docker/streamline-src/vendor/symfony/event-dispatcher/Attribute/AsEventListener.php b/docker/streamline-src/vendor/symfony/event-dispatcher/Attribute/AsEventListener.php deleted file mode 100644 index 590ada9e..00000000 --- a/docker/streamline-src/vendor/symfony/event-dispatcher/Attribute/AsEventListener.php +++ /dev/null @@ -1,35 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\EventDispatcher\Attribute; - -/** - * Service tag to autoconfigure event listeners. - * - * @author Alexander M. Turek - */ -#[\Attribute(\Attribute::TARGET_CLASS | \Attribute::TARGET_METHOD | \Attribute::IS_REPEATABLE)] -class AsEventListener -{ - /** - * @param string|null $event The event name to listen to - * @param string|null $method The method to run when the listened event is triggered - * @param int $priority The priority of this listener if several are declared for the same event - * @param string|null $dispatcher The service id of the event dispatcher to listen to - */ - public function __construct( - public ?string $event = null, - public ?string $method = null, - public int $priority = 0, - public ?string $dispatcher = null, - ) { - } -} diff --git a/docker/streamline-src/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php b/docker/streamline-src/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php deleted file mode 100644 index 8330ce15..00000000 --- a/docker/streamline-src/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php +++ /dev/null @@ -1,351 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\EventDispatcher\Debug; - -use Psr\EventDispatcher\StoppableEventInterface; -use Psr\Log\LoggerInterface; -use Symfony\Component\EventDispatcher\EventDispatcher; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; -use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\RequestStack; -use Symfony\Component\Stopwatch\Stopwatch; -use Symfony\Contracts\Service\ResetInterface; - -/** - * Collects some data about event listeners. - * - * This event dispatcher delegates the dispatching to another one. - * - * @author Fabien Potencier - */ -class TraceableEventDispatcher implements EventDispatcherInterface, ResetInterface -{ - /** - * @var \SplObjectStorage|null - */ - private ?\SplObjectStorage $callStack = null; - private array $wrappedListeners = []; - private array $orphanedEvents = []; - private string $currentRequestHash = ''; - - public function __construct( - private EventDispatcherInterface $dispatcher, - protected Stopwatch $stopwatch, - protected ?LoggerInterface $logger = null, - private ?RequestStack $requestStack = null, - ) { - } - - public function addListener(string $eventName, callable|array $listener, int $priority = 0): void - { - $this->dispatcher->addListener($eventName, $listener, $priority); - } - - public function addSubscriber(EventSubscriberInterface $subscriber): void - { - $this->dispatcher->addSubscriber($subscriber); - } - - public function removeListener(string $eventName, callable|array $listener): void - { - if (isset($this->wrappedListeners[$eventName])) { - foreach ($this->wrappedListeners[$eventName] as $index => $wrappedListener) { - if ($wrappedListener->getWrappedListener() === $listener || ($listener instanceof \Closure && $wrappedListener->getWrappedListener() == $listener)) { - $listener = $wrappedListener; - unset($this->wrappedListeners[$eventName][$index]); - break; - } - } - } - - $this->dispatcher->removeListener($eventName, $listener); - } - - public function removeSubscriber(EventSubscriberInterface $subscriber): void - { - $this->dispatcher->removeSubscriber($subscriber); - } - - public function getListeners(?string $eventName = null): array - { - return $this->dispatcher->getListeners($eventName); - } - - public function getListenerPriority(string $eventName, callable|array $listener): ?int - { - // we might have wrapped listeners for the event (if called while dispatching) - // in that case get the priority by wrapper - if (isset($this->wrappedListeners[$eventName])) { - foreach ($this->wrappedListeners[$eventName] as $wrappedListener) { - if ($wrappedListener->getWrappedListener() === $listener || ($listener instanceof \Closure && $wrappedListener->getWrappedListener() == $listener)) { - return $this->dispatcher->getListenerPriority($eventName, $wrappedListener); - } - } - } - - return $this->dispatcher->getListenerPriority($eventName, $listener); - } - - public function hasListeners(?string $eventName = null): bool - { - return $this->dispatcher->hasListeners($eventName); - } - - public function dispatch(object $event, ?string $eventName = null): object - { - $eventName ??= $event::class; - - $this->callStack ??= new \SplObjectStorage(); - - $currentRequestHash = $this->currentRequestHash = $this->requestStack && ($request = $this->requestStack->getCurrentRequest()) ? spl_object_hash($request) : ''; - - if (null !== $this->logger && $event instanceof StoppableEventInterface && $event->isPropagationStopped()) { - $this->logger->debug(\sprintf('The "%s" event is already stopped. No listeners have been called.', $eventName)); - } - - $this->preProcess($eventName); - try { - $this->beforeDispatch($eventName, $event); - try { - $e = $this->stopwatch->start($eventName, 'section'); - try { - $this->dispatcher->dispatch($event, $eventName); - } finally { - if ($e->isStarted()) { - $e->stop(); - } - } - } finally { - $this->afterDispatch($eventName, $event); - } - } finally { - $this->currentRequestHash = $currentRequestHash; - $this->postProcess($eventName); - } - - return $event; - } - - public function getCalledListeners(?Request $request = null): array - { - if (null === $this->callStack) { - return []; - } - - $hash = $request ? spl_object_hash($request) : null; - $called = []; - foreach ($this->callStack as $listener) { - [$eventName, $requestHash] = $this->callStack->getInfo(); - if (null === $hash || $hash === $requestHash) { - $called[] = $listener->getInfo($eventName); - } - } - - return $called; - } - - public function getNotCalledListeners(?Request $request = null): array - { - try { - $allListeners = $this->dispatcher instanceof EventDispatcher ? $this->getListenersWithPriority() : $this->getListenersWithoutPriority(); - } catch (\Exception $e) { - $this->logger?->info('An exception was thrown while getting the uncalled listeners.', ['exception' => $e]); - - // unable to retrieve the uncalled listeners - return []; - } - - $hash = $request ? spl_object_hash($request) : null; - $calledListeners = []; - - if (null !== $this->callStack) { - foreach ($this->callStack as $calledListener) { - [, $requestHash] = $this->callStack->getInfo(); - - if (null === $hash || $hash === $requestHash) { - $calledListeners[] = $calledListener->getWrappedListener(); - } - } - } - - $notCalled = []; - - foreach ($allListeners as $eventName => $listeners) { - foreach ($listeners as [$listener, $priority]) { - if (!\in_array($listener, $calledListeners, true)) { - if (!$listener instanceof WrappedListener) { - $listener = new WrappedListener($listener, null, $this->stopwatch, $this, $priority); - } - $notCalled[] = $listener->getInfo($eventName); - } - } - } - - uasort($notCalled, $this->sortNotCalledListeners(...)); - - return $notCalled; - } - - public function getOrphanedEvents(?Request $request = null): array - { - if ($request) { - return $this->orphanedEvents[spl_object_hash($request)] ?? []; - } - - if (!$this->orphanedEvents) { - return []; - } - - return array_merge(...array_values($this->orphanedEvents)); - } - - public function reset(): void - { - $this->callStack = null; - $this->orphanedEvents = []; - $this->currentRequestHash = ''; - } - - /** - * Proxies all method calls to the original event dispatcher. - * - * @param string $method The method name - * @param array $arguments The method arguments - */ - public function __call(string $method, array $arguments): mixed - { - return $this->dispatcher->{$method}(...$arguments); - } - - /** - * Called before dispatching the event. - */ - protected function beforeDispatch(string $eventName, object $event): void - { - } - - /** - * Called after dispatching the event. - */ - protected function afterDispatch(string $eventName, object $event): void - { - } - - private function preProcess(string $eventName): void - { - if (!$this->dispatcher->hasListeners($eventName)) { - $this->orphanedEvents[$this->currentRequestHash][] = $eventName; - - return; - } - - foreach ($this->dispatcher->getListeners($eventName) as $listener) { - $priority = $this->getListenerPriority($eventName, $listener); - $wrappedListener = new WrappedListener($listener instanceof WrappedListener ? $listener->getWrappedListener() : $listener, null, $this->stopwatch, $this); - $this->wrappedListeners[$eventName][] = $wrappedListener; - $this->dispatcher->removeListener($eventName, $listener); - $this->dispatcher->addListener($eventName, $wrappedListener, $priority); - $this->callStack->attach($wrappedListener, [$eventName, $this->currentRequestHash]); - } - } - - private function postProcess(string $eventName): void - { - unset($this->wrappedListeners[$eventName]); - $skipped = false; - foreach ($this->dispatcher->getListeners($eventName) as $listener) { - if (!$listener instanceof WrappedListener) { // #12845: a new listener was added during dispatch. - continue; - } - // Unwrap listener - $priority = $this->getListenerPriority($eventName, $listener); - $this->dispatcher->removeListener($eventName, $listener); - $this->dispatcher->addListener($eventName, $listener->getWrappedListener(), $priority); - - if (null !== $this->logger) { - $context = ['event' => $eventName, 'listener' => $listener->getPretty()]; - } - - if ($listener->wasCalled()) { - $this->logger?->debug('Notified event "{event}" to listener "{listener}".', $context); - } else { - $this->callStack->detach($listener); - } - - if (null !== $this->logger && $skipped) { - $this->logger->debug('Listener "{listener}" was not called for event "{event}".', $context); - } - - if ($listener->stoppedPropagation()) { - $this->logger?->debug('Listener "{listener}" stopped propagation of the event "{event}".', $context); - - $skipped = true; - } - } - } - - private function sortNotCalledListeners(array $a, array $b): int - { - if (0 !== $cmp = strcmp($a['event'], $b['event'])) { - return $cmp; - } - - if (\is_int($a['priority']) && !\is_int($b['priority'])) { - return 1; - } - - if (!\is_int($a['priority']) && \is_int($b['priority'])) { - return -1; - } - - if ($a['priority'] === $b['priority']) { - return 0; - } - - if ($a['priority'] > $b['priority']) { - return -1; - } - - return 1; - } - - private function getListenersWithPriority(): array - { - $result = []; - - $allListeners = new \ReflectionProperty(EventDispatcher::class, 'listeners'); - - foreach ($allListeners->getValue($this->dispatcher) as $eventName => $listenersByPriority) { - foreach ($listenersByPriority as $priority => $listeners) { - foreach ($listeners as $listener) { - $result[$eventName][] = [$listener, $priority]; - } - } - } - - return $result; - } - - private function getListenersWithoutPriority(): array - { - $result = []; - - foreach ($this->getListeners() as $eventName => $listeners) { - foreach ($listeners as $listener) { - $result[$eventName][] = [$listener, null]; - } - } - - return $result; - } -} diff --git a/docker/streamline-src/vendor/symfony/event-dispatcher/Debug/WrappedListener.php b/docker/streamline-src/vendor/symfony/event-dispatcher/Debug/WrappedListener.php deleted file mode 100644 index b83115bb..00000000 --- a/docker/streamline-src/vendor/symfony/event-dispatcher/Debug/WrappedListener.php +++ /dev/null @@ -1,143 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\EventDispatcher\Debug; - -use Psr\EventDispatcher\StoppableEventInterface; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; -use Symfony\Component\Stopwatch\Stopwatch; -use Symfony\Component\VarDumper\Caster\ClassStub; - -/** - * @author Fabien Potencier - */ -final class WrappedListener -{ - private string|array|object $listener; - private ?\Closure $optimizedListener; - private string $name; - private bool $called = false; - private bool $stoppedPropagation = false; - private string $pretty; - private string $callableRef; - private ClassStub|string $stub; - private static bool $hasClassStub; - - public function __construct( - callable|array $listener, - ?string $name, - private Stopwatch $stopwatch, - private ?EventDispatcherInterface $dispatcher = null, - private ?int $priority = null, - ) { - $this->listener = $listener; - $this->optimizedListener = $listener instanceof \Closure ? $listener : (\is_callable($listener) ? $listener(...) : null); - - if (\is_array($listener)) { - [$this->name, $this->callableRef] = $this->parseListener($listener); - $this->pretty = $this->name.'::'.$listener[1]; - $this->callableRef .= '::'.$listener[1]; - } elseif ($listener instanceof \Closure) { - $r = new \ReflectionFunction($listener); - if ($r->isAnonymous()) { - $this->pretty = $this->name = 'closure'; - } elseif ($class = $r->getClosureCalledClass()) { - $this->name = $class->name; - $this->pretty = $this->name.'::'.$r->name; - } else { - $this->pretty = $this->name = $r->name; - } - } elseif (\is_string($listener)) { - $this->pretty = $this->name = $listener; - } else { - $this->name = get_debug_type($listener); - $this->pretty = $this->name.'::__invoke'; - $this->callableRef = $listener::class.'::__invoke'; - } - - if (null !== $name) { - $this->name = $name; - } - - self::$hasClassStub ??= class_exists(ClassStub::class); - } - - public function getWrappedListener(): callable|array - { - return $this->listener; - } - - public function wasCalled(): bool - { - return $this->called; - } - - public function stoppedPropagation(): bool - { - return $this->stoppedPropagation; - } - - public function getPretty(): string - { - return $this->pretty; - } - - public function getInfo(string $eventName): array - { - $this->stub ??= self::$hasClassStub ? new ClassStub($this->pretty.'()', $this->callableRef ?? $this->listener) : $this->pretty.'()'; - - return [ - 'event' => $eventName, - 'priority' => $this->priority ??= $this->dispatcher?->getListenerPriority($eventName, $this->listener), - 'pretty' => $this->pretty, - 'stub' => $this->stub, - ]; - } - - public function __invoke(object $event, string $eventName, EventDispatcherInterface $dispatcher): void - { - $dispatcher = $this->dispatcher ?: $dispatcher; - - $this->called = true; - $this->priority ??= $dispatcher->getListenerPriority($eventName, $this->listener); - - $e = $this->stopwatch->start($this->name, 'event_listener'); - - try { - ($this->optimizedListener ?? $this->listener)($event, $eventName, $dispatcher); - } finally { - if ($e->isStarted()) { - $e->stop(); - } - } - - if ($event instanceof StoppableEventInterface && $event->isPropagationStopped()) { - $this->stoppedPropagation = true; - } - } - - private function parseListener(array $listener): array - { - if ($listener[0] instanceof \Closure) { - foreach ((new \ReflectionFunction($listener[0]))->getAttributes(\Closure::class) as $attribute) { - if ($name = $attribute->getArguments()['name'] ?? false) { - return [$name, $attribute->getArguments()['class'] ?? $name]; - } - } - } - - if (\is_object($listener[0])) { - return [get_debug_type($listener[0]), $listener[0]::class]; - } - - return [$listener[0], $listener[0]]; - } -} diff --git a/docker/streamline-src/vendor/symfony/event-dispatcher/DependencyInjection/AddEventAliasesPass.php b/docker/streamline-src/vendor/symfony/event-dispatcher/DependencyInjection/AddEventAliasesPass.php deleted file mode 100644 index 53089920..00000000 --- a/docker/streamline-src/vendor/symfony/event-dispatcher/DependencyInjection/AddEventAliasesPass.php +++ /dev/null @@ -1,38 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\EventDispatcher\DependencyInjection; - -use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; -use Symfony\Component\DependencyInjection\ContainerBuilder; - -/** - * This pass allows bundles to extend the list of event aliases. - * - * @author Alexander M. Turek - */ -class AddEventAliasesPass implements CompilerPassInterface -{ - public function __construct( - private array $eventAliases, - ) { - } - - public function process(ContainerBuilder $container): void - { - $eventAliases = $container->hasParameter('event_dispatcher.event_aliases') ? $container->getParameter('event_dispatcher.event_aliases') : []; - - $container->setParameter( - 'event_dispatcher.event_aliases', - array_merge($eventAliases, $this->eventAliases) - ); - } -} diff --git a/docker/streamline-src/vendor/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php b/docker/streamline-src/vendor/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php deleted file mode 100644 index a0267ce3..00000000 --- a/docker/streamline-src/vendor/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php +++ /dev/null @@ -1,213 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\EventDispatcher\DependencyInjection; - -use Symfony\Component\DependencyInjection\Argument\ServiceClosureArgument; -use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; -use Symfony\Component\DependencyInjection\ContainerBuilder; -use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; -use Symfony\Component\DependencyInjection\Reference; -use Symfony\Component\EventDispatcher\EventDispatcher; -use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Contracts\EventDispatcher\Event; - -/** - * Compiler pass to register tagged services for an event dispatcher. - */ -class RegisterListenersPass implements CompilerPassInterface -{ - private array $hotPathEvents = []; - private array $noPreloadEvents = []; - - /** - * @return $this - */ - public function setHotPathEvents(array $hotPathEvents): static - { - $this->hotPathEvents = array_flip($hotPathEvents); - - return $this; - } - - /** - * @return $this - */ - public function setNoPreloadEvents(array $noPreloadEvents): static - { - $this->noPreloadEvents = array_flip($noPreloadEvents); - - return $this; - } - - public function process(ContainerBuilder $container): void - { - if (!$container->hasDefinition('event_dispatcher') && !$container->hasAlias('event_dispatcher')) { - return; - } - - $aliases = []; - - if ($container->hasParameter('event_dispatcher.event_aliases')) { - $aliases = $container->getParameter('event_dispatcher.event_aliases'); - } - - $globalDispatcherDefinition = $container->findDefinition('event_dispatcher'); - - foreach ($container->findTaggedServiceIds('kernel.event_listener', true) as $id => $events) { - $noPreload = 0; - - foreach ($events as $event) { - $priority = $event['priority'] ?? 0; - - if (!isset($event['event'])) { - if ($container->getDefinition($id)->hasTag('kernel.event_subscriber')) { - continue; - } - - $event['method'] ??= '__invoke'; - $event['event'] = $this->getEventFromTypeDeclaration($container, $id, $event['method']); - } - - $event['event'] = $aliases[$event['event']] ?? $event['event']; - - if (!isset($event['method'])) { - $event['method'] = 'on'.preg_replace_callback([ - '/(?<=\b|_)[a-z]/i', - '/[^a-z0-9]/i', - ], fn ($matches) => strtoupper($matches[0]), $event['event']); - $event['method'] = preg_replace('/[^a-z0-9]/i', '', $event['method']); - - if (null !== ($class = $container->getDefinition($id)->getClass()) && ($r = $container->getReflectionClass($class, false)) && !$r->hasMethod($event['method'])) { - if (!$r->hasMethod('__invoke')) { - throw new InvalidArgumentException(\sprintf('None of the "%s" or "__invoke" methods exist for the service "%s". Please define the "method" attribute on "kernel.event_listener" tags.', $event['method'], $id)); - } - - $event['method'] = '__invoke'; - } - } - - $dispatcherDefinition = $globalDispatcherDefinition; - if (isset($event['dispatcher'])) { - $dispatcherDefinition = $container->findDefinition($event['dispatcher']); - } - - $dispatcherDefinition->addMethodCall('addListener', [$event['event'], [new ServiceClosureArgument(new Reference($id)), $event['method']], $priority]); - - if (isset($this->hotPathEvents[$event['event']])) { - $container->getDefinition($id)->addTag('container.hot_path'); - } elseif (isset($this->noPreloadEvents[$event['event']])) { - ++$noPreload; - } - } - - if ($noPreload && \count($events) === $noPreload) { - $container->getDefinition($id)->addTag('container.no_preload'); - } - } - - $extractingDispatcher = new ExtractingEventDispatcher(); - - foreach ($container->findTaggedServiceIds('kernel.event_subscriber', true) as $id => $tags) { - $def = $container->getDefinition($id); - - // We must assume that the class value has been correctly filled, even if the service is created by a factory - $class = $def->getClass(); - - if (!$r = $container->getReflectionClass($class)) { - throw new InvalidArgumentException(\sprintf('Class "%s" used for service "%s" cannot be found.', $class, $id)); - } - if (!$r->isSubclassOf(EventSubscriberInterface::class)) { - throw new InvalidArgumentException(\sprintf('Service "%s" must implement interface "%s".', $id, EventSubscriberInterface::class)); - } - $class = $r->name; - - $dispatcherDefinitions = []; - foreach ($tags as $attributes) { - if (!isset($attributes['dispatcher']) || isset($dispatcherDefinitions[$attributes['dispatcher']])) { - continue; - } - - $dispatcherDefinitions[$attributes['dispatcher']] = $container->findDefinition($attributes['dispatcher']); - } - - if (!$dispatcherDefinitions) { - $dispatcherDefinitions = [$globalDispatcherDefinition]; - } - - $noPreload = 0; - ExtractingEventDispatcher::$aliases = $aliases; - ExtractingEventDispatcher::$subscriber = $class; - $extractingDispatcher->addSubscriber($extractingDispatcher); - foreach ($extractingDispatcher->listeners as $args) { - $args[1] = [new ServiceClosureArgument(new Reference($id)), $args[1]]; - foreach ($dispatcherDefinitions as $dispatcherDefinition) { - $dispatcherDefinition->addMethodCall('addListener', $args); - } - - if (isset($this->hotPathEvents[$args[0]])) { - $container->getDefinition($id)->addTag('container.hot_path'); - } elseif (isset($this->noPreloadEvents[$args[0]])) { - ++$noPreload; - } - } - if ($noPreload && \count($extractingDispatcher->listeners) === $noPreload) { - $container->getDefinition($id)->addTag('container.no_preload'); - } - $extractingDispatcher->listeners = []; - ExtractingEventDispatcher::$aliases = []; - } - } - - private function getEventFromTypeDeclaration(ContainerBuilder $container, string $id, string $method): string - { - if ( - null === ($class = $container->getDefinition($id)->getClass()) - || !($r = $container->getReflectionClass($class, false)) - || !$r->hasMethod($method) - || 1 > ($m = $r->getMethod($method))->getNumberOfParameters() - || !($type = $m->getParameters()[0]->getType()) instanceof \ReflectionNamedType - || $type->isBuiltin() - || Event::class === ($name = $type->getName()) - ) { - throw new InvalidArgumentException(\sprintf('Service "%s" must define the "event" attribute on "kernel.event_listener" tags.', $id)); - } - - return $name; - } -} - -/** - * @internal - */ -class ExtractingEventDispatcher extends EventDispatcher implements EventSubscriberInterface -{ - public array $listeners = []; - - public static array $aliases = []; - public static string $subscriber; - - public function addListener(string $eventName, callable|array $listener, int $priority = 0): void - { - $this->listeners[] = [$eventName, $listener[1], $priority]; - } - - public static function getSubscribedEvents(): array - { - $events = []; - - foreach ([self::$subscriber, 'getSubscribedEvents']() as $eventName => $params) { - $events[self::$aliases[$eventName] ?? $eventName] = $params; - } - - return $events; - } -} diff --git a/docker/streamline-src/vendor/symfony/event-dispatcher/GenericEvent.php b/docker/streamline-src/vendor/symfony/event-dispatcher/GenericEvent.php deleted file mode 100644 index 87f61ad5..00000000 --- a/docker/streamline-src/vendor/symfony/event-dispatcher/GenericEvent.php +++ /dev/null @@ -1,155 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\EventDispatcher; - -use Symfony\Contracts\EventDispatcher\Event; - -/** - * Event encapsulation class. - * - * Encapsulates events thus decoupling the observer from the subject they encapsulate. - * - * @author Drak - * - * @implements \ArrayAccess - * @implements \IteratorAggregate - */ -class GenericEvent extends Event implements \ArrayAccess, \IteratorAggregate -{ - /** - * Encapsulate an event with $subject and $arguments. - * - * @param mixed $subject The subject of the event, usually an object or a callable - * @param array $arguments Arguments to store in the event - */ - public function __construct( - protected mixed $subject = null, - protected array $arguments = [], - ) { - } - - /** - * Getter for subject property. - */ - public function getSubject(): mixed - { - return $this->subject; - } - - /** - * Get argument by key. - * - * @throws \InvalidArgumentException if key is not found - */ - public function getArgument(string $key): mixed - { - if ($this->hasArgument($key)) { - return $this->arguments[$key]; - } - - throw new \InvalidArgumentException(\sprintf('Argument "%s" not found.', $key)); - } - - /** - * Add argument to event. - * - * @return $this - */ - public function setArgument(string $key, mixed $value): static - { - $this->arguments[$key] = $value; - - return $this; - } - - /** - * Getter for all arguments. - */ - public function getArguments(): array - { - return $this->arguments; - } - - /** - * Set args property. - * - * @return $this - */ - public function setArguments(array $args = []): static - { - $this->arguments = $args; - - return $this; - } - - /** - * Has argument. - */ - public function hasArgument(string $key): bool - { - return \array_key_exists($key, $this->arguments); - } - - /** - * ArrayAccess for argument getter. - * - * @param string $key Array key - * - * @throws \InvalidArgumentException if key does not exist in $this->args - */ - public function offsetGet(mixed $key): mixed - { - return $this->getArgument($key); - } - - /** - * ArrayAccess for argument setter. - * - * @param string $key Array key to set - */ - public function offsetSet(mixed $key, mixed $value): void - { - $this->setArgument($key, $value); - } - - /** - * ArrayAccess for unset argument. - * - * @param string $key Array key - */ - public function offsetUnset(mixed $key): void - { - if ($this->hasArgument($key)) { - unset($this->arguments[$key]); - } - } - - /** - * ArrayAccess has argument. - * - * @param string $key Array key - */ - public function offsetExists(mixed $key): bool - { - return $this->hasArgument($key); - } - - /** - * IteratorAggregate for iterating over the object like an array. - * - * @return \ArrayIterator - */ - public function getIterator(): \ArrayIterator - { - return new \ArrayIterator($this->arguments); - } -} diff --git a/docker/streamline-src/vendor/symfony/event-dispatcher/ImmutableEventDispatcher.php b/docker/streamline-src/vendor/symfony/event-dispatcher/ImmutableEventDispatcher.php deleted file mode 100644 index a6d078e9..00000000 --- a/docker/streamline-src/vendor/symfony/event-dispatcher/ImmutableEventDispatcher.php +++ /dev/null @@ -1,65 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\EventDispatcher; - -/** - * A read-only proxy for an event dispatcher. - * - * @author Bernhard Schussek - */ -class ImmutableEventDispatcher implements EventDispatcherInterface -{ - public function __construct( - private EventDispatcherInterface $dispatcher, - ) { - } - - public function dispatch(object $event, ?string $eventName = null): object - { - return $this->dispatcher->dispatch($event, $eventName); - } - - public function addListener(string $eventName, callable|array $listener, int $priority = 0): never - { - throw new \BadMethodCallException('Unmodifiable event dispatchers must not be modified.'); - } - - public function addSubscriber(EventSubscriberInterface $subscriber): never - { - throw new \BadMethodCallException('Unmodifiable event dispatchers must not be modified.'); - } - - public function removeListener(string $eventName, callable|array $listener): never - { - throw new \BadMethodCallException('Unmodifiable event dispatchers must not be modified.'); - } - - public function removeSubscriber(EventSubscriberInterface $subscriber): never - { - throw new \BadMethodCallException('Unmodifiable event dispatchers must not be modified.'); - } - - public function getListeners(?string $eventName = null): array - { - return $this->dispatcher->getListeners($eventName); - } - - public function getListenerPriority(string $eventName, callable|array $listener): ?int - { - return $this->dispatcher->getListenerPriority($eventName, $listener); - } - - public function hasListeners(?string $eventName = null): bool - { - return $this->dispatcher->hasListeners($eventName); - } -} diff --git a/docker/streamline-src/vendor/symfony/finder/Comparator/DateComparator.php b/docker/streamline-src/vendor/symfony/finder/Comparator/DateComparator.php deleted file mode 100644 index f7c27de6..00000000 --- a/docker/streamline-src/vendor/symfony/finder/Comparator/DateComparator.php +++ /dev/null @@ -1,50 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Finder\Comparator; - -/** - * DateCompare compiles date comparisons. - * - * @author Fabien Potencier - */ -class DateComparator extends Comparator -{ - /** - * @param string $test A comparison string - * - * @throws \InvalidArgumentException If the test is not understood - */ - public function __construct(string $test) - { - if (!preg_match('#^\s*(==|!=|[<>]=?|after|since|before|until)?\s*(.+?)\s*$#i', $test, $matches)) { - throw new \InvalidArgumentException(sprintf('Don\'t understand "%s" as a date test.', $test)); - } - - try { - $date = new \DateTimeImmutable($matches[2]); - $target = $date->format('U'); - } catch (\Exception) { - throw new \InvalidArgumentException(sprintf('"%s" is not a valid date.', $matches[2])); - } - - $operator = $matches[1] ?: '=='; - if ('since' === $operator || 'after' === $operator) { - $operator = '>'; - } - - if ('until' === $operator || 'before' === $operator) { - $operator = '<'; - } - - parent::__construct($target, $operator); - } -} diff --git a/docker/streamline-src/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php b/docker/streamline-src/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php deleted file mode 100644 index f5fd2d4d..00000000 --- a/docker/streamline-src/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php +++ /dev/null @@ -1,134 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Finder\Iterator; - -use Symfony\Component\Finder\Exception\AccessDeniedException; -use Symfony\Component\Finder\SplFileInfo; - -/** - * Extends the \RecursiveDirectoryIterator to support relative paths. - * - * @author Victor Berchet - * - * @extends \RecursiveDirectoryIterator - */ -class RecursiveDirectoryIterator extends \RecursiveDirectoryIterator -{ - private bool $ignoreUnreadableDirs; - private bool $ignoreFirstRewind = true; - - // these 3 properties take part of the performance optimization to avoid redoing the same work in all iterations - private string $rootPath; - private string $subPath; - private string $directorySeparator = '/'; - - /** - * @throws \RuntimeException - */ - public function __construct(string $path, int $flags, bool $ignoreUnreadableDirs = false) - { - if ($flags & (self::CURRENT_AS_PATHNAME | self::CURRENT_AS_SELF)) { - throw new \RuntimeException('This iterator only support returning current as fileinfo.'); - } - - parent::__construct($path, $flags); - $this->ignoreUnreadableDirs = $ignoreUnreadableDirs; - $this->rootPath = $path; - if ('/' !== \DIRECTORY_SEPARATOR && !($flags & self::UNIX_PATHS)) { - $this->directorySeparator = \DIRECTORY_SEPARATOR; - } - } - - /** - * Return an instance of SplFileInfo with support for relative paths. - */ - public function current(): SplFileInfo - { - // the logic here avoids redoing the same work in all iterations - - if (!isset($this->subPath)) { - $this->subPath = $this->getSubPath(); - } - $subPathname = $this->subPath; - if ('' !== $subPathname) { - $subPathname .= $this->directorySeparator; - } - $subPathname .= $this->getFilename(); - $basePath = $this->rootPath; - - if ('/' !== $basePath && !str_ends_with($basePath, $this->directorySeparator) && !str_ends_with($basePath, '/')) { - $basePath .= $this->directorySeparator; - } - - return new SplFileInfo($basePath.$subPathname, $this->subPath, $subPathname); - } - - public function hasChildren(bool $allowLinks = false): bool - { - $hasChildren = parent::hasChildren($allowLinks); - - if (!$hasChildren || !$this->ignoreUnreadableDirs) { - return $hasChildren; - } - - try { - parent::getChildren(); - - return true; - } catch (\UnexpectedValueException) { - // If directory is unreadable and finder is set to ignore it, skip children - return false; - } - } - - /** - * @throws AccessDeniedException - */ - public function getChildren(): \RecursiveDirectoryIterator - { - try { - $children = parent::getChildren(); - - if ($children instanceof self) { - // parent method will call the constructor with default arguments, so unreadable dirs won't be ignored anymore - $children->ignoreUnreadableDirs = $this->ignoreUnreadableDirs; - - // performance optimization to avoid redoing the same work in all children - $children->rootPath = $this->rootPath; - } - - return $children; - } catch (\UnexpectedValueException $e) { - throw new AccessDeniedException($e->getMessage(), $e->getCode(), $e); - } - } - - public function next(): void - { - $this->ignoreFirstRewind = false; - - parent::next(); - } - - public function rewind(): void - { - // some streams like FTP are not rewindable, ignore the first rewind after creation, - // as newly created DirectoryIterator does not need to be rewound - if ($this->ignoreFirstRewind) { - $this->ignoreFirstRewind = false; - - return; - } - - parent::rewind(); - } -} diff --git a/docker/streamline-src/vendor/symfony/finder/Iterator/VcsIgnoredFilterIterator.php b/docker/streamline-src/vendor/symfony/finder/Iterator/VcsIgnoredFilterIterator.php deleted file mode 100644 index b278706e..00000000 --- a/docker/streamline-src/vendor/symfony/finder/Iterator/VcsIgnoredFilterIterator.php +++ /dev/null @@ -1,173 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Finder\Iterator; - -use Symfony\Component\Finder\Gitignore; - -/** - * @extends \FilterIterator - */ -final class VcsIgnoredFilterIterator extends \FilterIterator -{ - private string $baseDir; - - /** - * @var array - */ - private array $gitignoreFilesCache = []; - - /** - * @var array - */ - private array $ignoredPathsCache = []; - - /** - * @param \Iterator $iterator - */ - public function __construct(\Iterator $iterator, string $baseDir) - { - $this->baseDir = $this->normalizePath($baseDir); - - foreach ([$this->baseDir, ...$this->parentDirectoriesUpwards($this->baseDir)] as $directory) { - if (@is_dir("{$directory}/.git")) { - $this->baseDir = $directory; - break; - } - } - - parent::__construct($iterator); - } - - public function accept(): bool - { - $file = $this->current(); - - $fileRealPath = $this->normalizePath($file->getRealPath()); - - return !$this->isIgnored($fileRealPath); - } - - private function isIgnored(string $fileRealPath): bool - { - if (is_dir($fileRealPath) && !str_ends_with($fileRealPath, '/')) { - $fileRealPath .= '/'; - } - - if (isset($this->ignoredPathsCache[$fileRealPath])) { - return $this->ignoredPathsCache[$fileRealPath]; - } - - $ignored = false; - - foreach ($this->parentDirectoriesDownwards($fileRealPath) as $parentDirectory) { - if ($this->isIgnored($parentDirectory)) { - // rules in ignored directories are ignored, no need to check further. - break; - } - - $fileRelativePath = substr($fileRealPath, \strlen($parentDirectory) + 1); - - if (null === $regexps = $this->readGitignoreFile("{$parentDirectory}/.gitignore")) { - continue; - } - - [$exclusionRegex, $inclusionRegex] = $regexps; - - if (preg_match($exclusionRegex, $fileRelativePath)) { - $ignored = true; - - continue; - } - - if (preg_match($inclusionRegex, $fileRelativePath)) { - $ignored = false; - } - } - - return $this->ignoredPathsCache[$fileRealPath] = $ignored; - } - - /** - * @return list - */ - private function parentDirectoriesUpwards(string $from): array - { - $parentDirectories = []; - - $parentDirectory = $from; - - while (true) { - $newParentDirectory = \dirname($parentDirectory); - - // dirname('/') = '/' - if ($newParentDirectory === $parentDirectory) { - break; - } - - $parentDirectories[] = $parentDirectory = $newParentDirectory; - } - - return $parentDirectories; - } - - private function parentDirectoriesUpTo(string $from, string $upTo): array - { - return array_filter( - $this->parentDirectoriesUpwards($from), - static fn (string $directory): bool => str_starts_with($directory, $upTo) - ); - } - - /** - * @return list - */ - private function parentDirectoriesDownwards(string $fileRealPath): array - { - return array_reverse( - $this->parentDirectoriesUpTo($fileRealPath, $this->baseDir) - ); - } - - /** - * @return array{0: string, 1: string}|null - */ - private function readGitignoreFile(string $path): ?array - { - if (\array_key_exists($path, $this->gitignoreFilesCache)) { - return $this->gitignoreFilesCache[$path]; - } - - if (!file_exists($path)) { - return $this->gitignoreFilesCache[$path] = null; - } - - if (!is_file($path) || !is_readable($path)) { - throw new \RuntimeException("The \"ignoreVCSIgnored\" option cannot be used by the Finder as the \"{$path}\" file is not readable."); - } - - $gitignoreFileContent = file_get_contents($path); - - return $this->gitignoreFilesCache[$path] = [ - Gitignore::toRegex($gitignoreFileContent), - Gitignore::toRegexMatchingNegatedPatterns($gitignoreFileContent), - ]; - } - - private function normalizePath(string $path): string - { - if ('\\' === \DIRECTORY_SEPARATOR) { - return str_replace('\\', '/', $path); - } - - return $path; - } -} diff --git a/docker/streamline-src/vendor/symfony/http-foundation/BinaryFileResponse.php b/docker/streamline-src/vendor/symfony/http-foundation/BinaryFileResponse.php deleted file mode 100644 index 41a244b8..00000000 --- a/docker/streamline-src/vendor/symfony/http-foundation/BinaryFileResponse.php +++ /dev/null @@ -1,385 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpFoundation; - -use Symfony\Component\HttpFoundation\File\Exception\FileException; -use Symfony\Component\HttpFoundation\File\File; - -/** - * BinaryFileResponse represents an HTTP response delivering a file. - * - * @author Niklas Fiekas - * @author stealth35 - * @author Igor Wiedler - * @author Jordan Alliot - * @author Sergey Linnik - */ -class BinaryFileResponse extends Response -{ - protected static $trustXSendfileTypeHeader = false; - - /** - * @var File - */ - protected $file; - protected $offset = 0; - protected $maxlen = -1; - protected $deleteFileAfterSend = false; - protected $chunkSize = 16 * 1024; - - /** - * @param \SplFileInfo|string $file The file to stream - * @param int $status The response status code (200 "OK" by default) - * @param array $headers An array of response headers - * @param bool $public Files are public by default - * @param string|null $contentDisposition The type of Content-Disposition to set automatically with the filename - * @param bool $autoEtag Whether the ETag header should be automatically set - * @param bool $autoLastModified Whether the Last-Modified header should be automatically set - */ - public function __construct(\SplFileInfo|string $file, int $status = 200, array $headers = [], bool $public = true, ?string $contentDisposition = null, bool $autoEtag = false, bool $autoLastModified = true) - { - parent::__construct(null, $status, $headers); - - $this->setFile($file, $contentDisposition, $autoEtag, $autoLastModified); - - if ($public) { - $this->setPublic(); - } - } - - /** - * Sets the file to stream. - * - * @return $this - * - * @throws FileException - */ - public function setFile(\SplFileInfo|string $file, ?string $contentDisposition = null, bool $autoEtag = false, bool $autoLastModified = true): static - { - if (!$file instanceof File) { - if ($file instanceof \SplFileInfo) { - $file = new File($file->getPathname()); - } else { - $file = new File((string) $file); - } - } - - if (!$file->isReadable()) { - throw new FileException('File must be readable.'); - } - - $this->file = $file; - - if ($autoEtag) { - $this->setAutoEtag(); - } - - if ($autoLastModified) { - $this->setAutoLastModified(); - } - - if ($contentDisposition) { - $this->setContentDisposition($contentDisposition); - } - - return $this; - } - - /** - * Gets the file. - */ - public function getFile(): File - { - return $this->file; - } - - /** - * Sets the response stream chunk size. - * - * @return $this - */ - public function setChunkSize(int $chunkSize): static - { - if ($chunkSize < 1 || $chunkSize > \PHP_INT_MAX) { - throw new \LogicException('The chunk size of a BinaryFileResponse cannot be less than 1 or greater than PHP_INT_MAX.'); - } - - $this->chunkSize = $chunkSize; - - return $this; - } - - /** - * Automatically sets the Last-Modified header according the file modification date. - * - * @return $this - */ - public function setAutoLastModified(): static - { - $this->setLastModified(\DateTimeImmutable::createFromFormat('U', $this->file->getMTime())); - - return $this; - } - - /** - * Automatically sets the ETag header according to the checksum of the file. - * - * @return $this - */ - public function setAutoEtag(): static - { - $this->setEtag(base64_encode(hash_file('sha256', $this->file->getPathname(), true))); - - return $this; - } - - /** - * Sets the Content-Disposition header with the given filename. - * - * @param string $disposition ResponseHeaderBag::DISPOSITION_INLINE or ResponseHeaderBag::DISPOSITION_ATTACHMENT - * @param string $filename Optionally use this UTF-8 encoded filename instead of the real name of the file - * @param string $filenameFallback A fallback filename, containing only ASCII characters. Defaults to an automatically encoded filename - * - * @return $this - */ - public function setContentDisposition(string $disposition, string $filename = '', string $filenameFallback = ''): static - { - if ('' === $filename) { - $filename = $this->file->getFilename(); - } - - if ('' === $filenameFallback && (!preg_match('/^[\x20-\x7e]*$/', $filename) || str_contains($filename, '%'))) { - $encoding = mb_detect_encoding($filename, null, true) ?: '8bit'; - - for ($i = 0, $filenameLength = mb_strlen($filename, $encoding); $i < $filenameLength; ++$i) { - $char = mb_substr($filename, $i, 1, $encoding); - - if ('%' === $char || \ord($char) < 32 || \ord($char) > 126) { - $filenameFallback .= '_'; - } else { - $filenameFallback .= $char; - } - } - } - - $dispositionHeader = $this->headers->makeDisposition($disposition, $filename, $filenameFallback); - $this->headers->set('Content-Disposition', $dispositionHeader); - - return $this; - } - - public function prepare(Request $request): static - { - if ($this->isInformational() || $this->isEmpty()) { - parent::prepare($request); - - $this->maxlen = 0; - - return $this; - } - - if (!$this->headers->has('Content-Type')) { - $this->headers->set('Content-Type', $this->file->getMimeType() ?: 'application/octet-stream'); - } - - parent::prepare($request); - - $this->offset = 0; - $this->maxlen = -1; - - if (false === $fileSize = $this->file->getSize()) { - return $this; - } - $this->headers->remove('Transfer-Encoding'); - $this->headers->set('Content-Length', $fileSize); - - if (!$this->headers->has('Accept-Ranges')) { - // Only accept ranges on safe HTTP methods - $this->headers->set('Accept-Ranges', $request->isMethodSafe() ? 'bytes' : 'none'); - } - - if (self::$trustXSendfileTypeHeader && $request->headers->has('X-Sendfile-Type')) { - // Use X-Sendfile, do not send any content. - $type = $request->headers->get('X-Sendfile-Type'); - $path = $this->file->getRealPath(); - // Fall back to scheme://path for stream wrapped locations. - if (false === $path) { - $path = $this->file->getPathname(); - } - if ('x-accel-redirect' === strtolower($type)) { - // Do X-Accel-Mapping substitutions. - // @link https://github.com/rack/rack/blob/main/lib/rack/sendfile.rb - // @link https://mattbrictson.com/blog/accelerated-rails-downloads - if (!$request->headers->has('X-Accel-Mapping')) { - throw new \LogicException('The "X-Accel-Mapping" header must be set when "X-Sendfile-Type" is set to "X-Accel-Redirect".'); - } - $parts = HeaderUtils::split($request->headers->get('X-Accel-Mapping'), ',='); - foreach ($parts as $part) { - [$pathPrefix, $location] = $part; - if (str_starts_with($path, $pathPrefix)) { - $path = $location.substr($path, \strlen($pathPrefix)); - // Only set X-Accel-Redirect header if a valid URI can be produced - // as nginx does not serve arbitrary file paths. - $this->headers->set($type, $path); - $this->maxlen = 0; - break; - } - } - } else { - $this->headers->set($type, $path); - $this->maxlen = 0; - } - } elseif ($request->headers->has('Range') && $request->isMethod('GET')) { - // Process the range headers. - if (!$request->headers->has('If-Range') || $this->hasValidIfRangeHeader($request->headers->get('If-Range'))) { - $range = $request->headers->get('Range'); - - if (str_starts_with($range, 'bytes=')) { - [$start, $end] = explode('-', substr($range, 6), 2) + [1 => 0]; - - $end = ('' === $end) ? $fileSize - 1 : (int) $end; - - if ('' === $start) { - $start = $fileSize - $end; - $end = $fileSize - 1; - } else { - $start = (int) $start; - } - - if ($start <= $end) { - $end = min($end, $fileSize - 1); - if ($start < 0 || $start > $end) { - $this->setStatusCode(416); - $this->headers->set('Content-Range', sprintf('bytes */%s', $fileSize)); - } elseif ($end - $start < $fileSize - 1) { - $this->maxlen = $end < $fileSize ? $end - $start + 1 : -1; - $this->offset = $start; - - $this->setStatusCode(206); - $this->headers->set('Content-Range', sprintf('bytes %s-%s/%s', $start, $end, $fileSize)); - $this->headers->set('Content-Length', $end - $start + 1); - } - } - } - } - } - - if ($request->isMethod('HEAD')) { - $this->maxlen = 0; - } - - return $this; - } - - private function hasValidIfRangeHeader(?string $header): bool - { - if ($this->getEtag() === $header) { - return true; - } - - if (null === $lastModified = $this->getLastModified()) { - return false; - } - - return $lastModified->format('D, d M Y H:i:s').' GMT' === $header; - } - - public function sendContent(): static - { - try { - if (!$this->isSuccessful()) { - return $this; - } - - if (0 === $this->maxlen) { - return $this; - } - - $out = fopen('php://output', 'w'); - $file = fopen($this->file->getPathname(), 'r'); - - ignore_user_abort(true); - - if (0 !== $this->offset) { - fseek($file, $this->offset); - } - - $length = $this->maxlen; - while ($length && !feof($file)) { - $read = $length > $this->chunkSize || 0 > $length ? $this->chunkSize : $length; - - if (false === $data = fread($file, $read)) { - break; - } - while ('' !== $data) { - $read = fwrite($out, $data); - if (false === $read || connection_aborted()) { - break 2; - } - if (0 < $length) { - $length -= $read; - } - $data = substr($data, $read); - } - } - - fclose($out); - fclose($file); - } finally { - if ($this->deleteFileAfterSend && is_file($this->file->getPathname())) { - unlink($this->file->getPathname()); - } - } - - return $this; - } - - /** - * @throws \LogicException when the content is not null - */ - public function setContent(?string $content): static - { - if (null !== $content) { - throw new \LogicException('The content cannot be set on a BinaryFileResponse instance.'); - } - - return $this; - } - - public function getContent(): string|false - { - return false; - } - - /** - * Trust X-Sendfile-Type header. - * - * @return void - */ - public static function trustXSendfileTypeHeader() - { - self::$trustXSendfileTypeHeader = true; - } - - /** - * If this is set to true, the file will be unlinked after the request is sent - * Note: If the X-Sendfile header is used, the deleteFileAfterSend setting will not be used. - * - * @return $this - */ - public function deleteFileAfterSend(bool $shouldDelete = true): static - { - $this->deleteFileAfterSend = $shouldDelete; - - return $this; - } -} diff --git a/docker/streamline-src/vendor/symfony/http-foundation/HeaderUtils.php b/docker/streamline-src/vendor/symfony/http-foundation/HeaderUtils.php deleted file mode 100644 index 110896e1..00000000 --- a/docker/streamline-src/vendor/symfony/http-foundation/HeaderUtils.php +++ /dev/null @@ -1,298 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpFoundation; - -/** - * HTTP header utility functions. - * - * @author Christian Schmidt - */ -class HeaderUtils -{ - public const DISPOSITION_ATTACHMENT = 'attachment'; - public const DISPOSITION_INLINE = 'inline'; - - /** - * This class should not be instantiated. - */ - private function __construct() - { - } - - /** - * Splits an HTTP header by one or more separators. - * - * Example: - * - * HeaderUtils::split('da, en-gb;q=0.8', ',;') - * // => ['da'], ['en-gb', 'q=0.8']] - * - * @param string $separators List of characters to split on, ordered by - * precedence, e.g. ',', ';=', or ',;=' - * - * @return array Nested array with as many levels as there are characters in - * $separators - */ - public static function split(string $header, string $separators): array - { - if ('' === $separators) { - throw new \InvalidArgumentException('At least one separator must be specified.'); - } - - $quotedSeparators = preg_quote($separators, '/'); - - preg_match_all(' - / - (?!\s) - (?: - # quoted-string - "(?:[^"\\\\]|\\\\.)*(?:"|\\\\|$) - | - # token - [^"'.$quotedSeparators.']+ - )+ - (?['.$quotedSeparators.']) - \s* - /x', trim($header), $matches, \PREG_SET_ORDER); - - return self::groupParts($matches, $separators); - } - - /** - * Combines an array of arrays into one associative array. - * - * Each of the nested arrays should have one or two elements. The first - * value will be used as the keys in the associative array, and the second - * will be used as the values, or true if the nested array only contains one - * element. Array keys are lowercased. - * - * Example: - * - * HeaderUtils::combine([['foo', 'abc'], ['bar']]) - * // => ['foo' => 'abc', 'bar' => true] - */ - public static function combine(array $parts): array - { - $assoc = []; - foreach ($parts as $part) { - $name = strtolower($part[0]); - $value = $part[1] ?? true; - $assoc[$name] = $value; - } - - return $assoc; - } - - /** - * Joins an associative array into a string for use in an HTTP header. - * - * The key and value of each entry are joined with '=', and all entries - * are joined with the specified separator and an additional space (for - * readability). Values are quoted if necessary. - * - * Example: - * - * HeaderUtils::toString(['foo' => 'abc', 'bar' => true, 'baz' => 'a b c'], ',') - * // => 'foo=abc, bar, baz="a b c"' - */ - public static function toString(array $assoc, string $separator): string - { - $parts = []; - foreach ($assoc as $name => $value) { - if (true === $value) { - $parts[] = $name; - } else { - $parts[] = $name.'='.self::quote($value); - } - } - - return implode($separator.' ', $parts); - } - - /** - * Encodes a string as a quoted string, if necessary. - * - * If a string contains characters not allowed by the "token" construct in - * the HTTP specification, it is backslash-escaped and enclosed in quotes - * to match the "quoted-string" construct. - */ - public static function quote(string $s): string - { - if (preg_match('/^[a-z0-9!#$%&\'*.^_`|~-]+$/i', $s)) { - return $s; - } - - return '"'.addcslashes($s, '"\\"').'"'; - } - - /** - * Decodes a quoted string. - * - * If passed an unquoted string that matches the "token" construct (as - * defined in the HTTP specification), it is passed through verbatim. - */ - public static function unquote(string $s): string - { - return preg_replace('/\\\\(.)|"/', '$1', $s); - } - - /** - * Generates an HTTP Content-Disposition field-value. - * - * @param string $disposition One of "inline" or "attachment" - * @param string $filename A unicode string - * @param string $filenameFallback A string containing only ASCII characters that - * is semantically equivalent to $filename. If the filename is already ASCII, - * it can be omitted, or just copied from $filename - * - * @throws \InvalidArgumentException - * - * @see RFC 6266 - */ - public static function makeDisposition(string $disposition, string $filename, string $filenameFallback = ''): string - { - if (!\in_array($disposition, [self::DISPOSITION_ATTACHMENT, self::DISPOSITION_INLINE])) { - throw new \InvalidArgumentException(sprintf('The disposition must be either "%s" or "%s".', self::DISPOSITION_ATTACHMENT, self::DISPOSITION_INLINE)); - } - - if ('' === $filenameFallback) { - $filenameFallback = $filename; - } - - // filenameFallback is not ASCII. - if (!preg_match('/^[\x20-\x7e]*$/', $filenameFallback)) { - throw new \InvalidArgumentException('The filename fallback must only contain ASCII characters.'); - } - - // percent characters aren't safe in fallback. - if (str_contains($filenameFallback, '%')) { - throw new \InvalidArgumentException('The filename fallback cannot contain the "%" character.'); - } - - // path separators aren't allowed in either. - if (str_contains($filename, '/') || str_contains($filename, '\\') || str_contains($filenameFallback, '/') || str_contains($filenameFallback, '\\')) { - throw new \InvalidArgumentException('The filename and the fallback cannot contain the "/" and "\\" characters.'); - } - - $params = ['filename' => $filenameFallback]; - if ($filename !== $filenameFallback) { - $params['filename*'] = "utf-8''".rawurlencode($filename); - } - - return $disposition.'; '.self::toString($params, ';'); - } - - /** - * Like parse_str(), but preserves dots in variable names. - */ - public static function parseQuery(string $query, bool $ignoreBrackets = false, string $separator = '&'): array - { - $q = []; - - foreach (explode($separator, $query) as $v) { - if (false !== $i = strpos($v, "\0")) { - $v = substr($v, 0, $i); - } - - if (false === $i = strpos($v, '=')) { - $k = urldecode($v); - $v = ''; - } else { - $k = urldecode(substr($v, 0, $i)); - $v = substr($v, $i); - } - - if (false !== $i = strpos($k, "\0")) { - $k = substr($k, 0, $i); - } - - $k = ltrim($k, ' '); - - if ($ignoreBrackets) { - $q[$k][] = urldecode(substr($v, 1)); - - continue; - } - - if (false === $i = strpos($k, '[')) { - $q[] = bin2hex($k).$v; - } else { - $q[] = bin2hex(substr($k, 0, $i)).rawurlencode(substr($k, $i)).$v; - } - } - - if ($ignoreBrackets) { - return $q; - } - - parse_str(implode('&', $q), $q); - - $query = []; - - foreach ($q as $k => $v) { - if (false !== $i = strpos($k, '_')) { - $query[substr_replace($k, hex2bin(substr($k, 0, $i)).'[', 0, 1 + $i)] = $v; - } else { - $query[hex2bin($k)] = $v; - } - } - - return $query; - } - - private static function groupParts(array $matches, string $separators, bool $first = true): array - { - $separator = $separators[0]; - $separators = substr($separators, 1) ?: ''; - $i = 0; - - if ('' === $separators && !$first) { - $parts = ['']; - - foreach ($matches as $match) { - if (!$i && isset($match['separator'])) { - $i = 1; - $parts[1] = ''; - } else { - $parts[$i] .= self::unquote($match[0]); - } - } - - return $parts; - } - - $parts = []; - $partMatches = []; - - foreach ($matches as $match) { - if (($match['separator'] ?? null) === $separator) { - ++$i; - } else { - $partMatches[$i][] = $match; - } - } - - foreach ($partMatches as $matches) { - if ('' === $separators && '' !== $unquoted = self::unquote($matches[0][0])) { - $parts[] = $unquoted; - } elseif ($groupedParts = self::groupParts($matches, $separators, false)) { - $parts[] = $groupedParts; - } - } - - return $parts; - } -} diff --git a/docker/streamline-src/vendor/symfony/http-foundation/RedirectResponse.php b/docker/streamline-src/vendor/symfony/http-foundation/RedirectResponse.php deleted file mode 100644 index 408629e3..00000000 --- a/docker/streamline-src/vendor/symfony/http-foundation/RedirectResponse.php +++ /dev/null @@ -1,92 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpFoundation; - -/** - * RedirectResponse represents an HTTP response doing a redirect. - * - * @author Fabien Potencier - */ -class RedirectResponse extends Response -{ - protected $targetUrl; - - /** - * Creates a redirect response so that it conforms to the rules defined for a redirect status code. - * - * @param string $url The URL to redirect to. The URL should be a full URL, with schema etc., - * but practically every browser redirects on paths only as well - * @param int $status The HTTP status code (302 "Found" by default) - * @param array $headers The headers (Location is always set to the given URL) - * - * @throws \InvalidArgumentException - * - * @see https://tools.ietf.org/html/rfc2616#section-10.3 - */ - public function __construct(string $url, int $status = 302, array $headers = []) - { - parent::__construct('', $status, $headers); - - $this->setTargetUrl($url); - - if (!$this->isRedirect()) { - throw new \InvalidArgumentException(sprintf('The HTTP status code is not a redirect ("%s" given).', $status)); - } - - if (301 == $status && !\array_key_exists('cache-control', array_change_key_case($headers, \CASE_LOWER))) { - $this->headers->remove('cache-control'); - } - } - - /** - * Returns the target URL. - */ - public function getTargetUrl(): string - { - return $this->targetUrl; - } - - /** - * Sets the redirect target of this response. - * - * @return $this - * - * @throws \InvalidArgumentException - */ - public function setTargetUrl(string $url): static - { - if ('' === $url) { - throw new \InvalidArgumentException('Cannot redirect to an empty URL.'); - } - - $this->targetUrl = $url; - - $this->setContent( - sprintf(' - - - - - - Redirecting to %1$s - - - Redirecting to %1$s. - -', htmlspecialchars($url, \ENT_QUOTES, 'UTF-8'))); - - $this->headers->set('Location', $url); - $this->headers->set('Content-Type', 'text/html; charset=utf-8'); - - return $this; - } -} diff --git a/docker/streamline-src/vendor/symfony/http-foundation/Request.php b/docker/streamline-src/vendor/symfony/http-foundation/Request.php deleted file mode 100644 index 92201413..00000000 --- a/docker/streamline-src/vendor/symfony/http-foundation/Request.php +++ /dev/null @@ -1,2131 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpFoundation; - -use Symfony\Component\HttpFoundation\Exception\BadRequestException; -use Symfony\Component\HttpFoundation\Exception\ConflictingHeadersException; -use Symfony\Component\HttpFoundation\Exception\JsonException; -use Symfony\Component\HttpFoundation\Exception\SessionNotFoundException; -use Symfony\Component\HttpFoundation\Exception\SuspiciousOperationException; -use Symfony\Component\HttpFoundation\Session\SessionInterface; - -// Help opcache.preload discover always-needed symbols -class_exists(AcceptHeader::class); -class_exists(FileBag::class); -class_exists(HeaderBag::class); -class_exists(HeaderUtils::class); -class_exists(InputBag::class); -class_exists(ParameterBag::class); -class_exists(ServerBag::class); - -/** - * Request represents an HTTP request. - * - * The methods dealing with URL accept / return a raw path (% encoded): - * * getBasePath - * * getBaseUrl - * * getPathInfo - * * getRequestUri - * * getUri - * * getUriForPath - * - * @author Fabien Potencier - */ -class Request -{ - public const HEADER_FORWARDED = 0b000001; // When using RFC 7239 - public const HEADER_X_FORWARDED_FOR = 0b000010; - public const HEADER_X_FORWARDED_HOST = 0b000100; - public const HEADER_X_FORWARDED_PROTO = 0b001000; - public const HEADER_X_FORWARDED_PORT = 0b010000; - public const HEADER_X_FORWARDED_PREFIX = 0b100000; - - public const HEADER_X_FORWARDED_AWS_ELB = 0b0011010; // AWS ELB doesn't send X-Forwarded-Host - public const HEADER_X_FORWARDED_TRAEFIK = 0b0111110; // All "X-Forwarded-*" headers sent by Traefik reverse proxy - - public const METHOD_HEAD = 'HEAD'; - public const METHOD_GET = 'GET'; - public const METHOD_POST = 'POST'; - public const METHOD_PUT = 'PUT'; - public const METHOD_PATCH = 'PATCH'; - public const METHOD_DELETE = 'DELETE'; - public const METHOD_PURGE = 'PURGE'; - public const METHOD_OPTIONS = 'OPTIONS'; - public const METHOD_TRACE = 'TRACE'; - public const METHOD_CONNECT = 'CONNECT'; - - /** - * @var string[] - */ - protected static $trustedProxies = []; - - /** - * @var string[] - */ - protected static $trustedHostPatterns = []; - - /** - * @var string[] - */ - protected static $trustedHosts = []; - - protected static $httpMethodParameterOverride = false; - - /** - * Custom parameters. - * - * @var ParameterBag - */ - public $attributes; - - /** - * Request body parameters ($_POST). - * - * @see getPayload() for portability between content types - * - * @var InputBag - */ - public $request; - - /** - * Query string parameters ($_GET). - * - * @var InputBag - */ - public $query; - - /** - * Server and execution environment parameters ($_SERVER). - * - * @var ServerBag - */ - public $server; - - /** - * Uploaded files ($_FILES). - * - * @var FileBag - */ - public $files; - - /** - * Cookies ($_COOKIE). - * - * @var InputBag - */ - public $cookies; - - /** - * Headers (taken from the $_SERVER). - * - * @var HeaderBag - */ - public $headers; - - /** - * @var string|resource|false|null - */ - protected $content; - - /** - * @var string[]|null - */ - protected $languages; - - /** - * @var string[]|null - */ - protected $charsets; - - /** - * @var string[]|null - */ - protected $encodings; - - /** - * @var string[]|null - */ - protected $acceptableContentTypes; - - /** - * @var string|null - */ - protected $pathInfo; - - /** - * @var string|null - */ - protected $requestUri; - - /** - * @var string|null - */ - protected $baseUrl; - - /** - * @var string|null - */ - protected $basePath; - - /** - * @var string|null - */ - protected $method; - - /** - * @var string|null - */ - protected $format; - - /** - * @var SessionInterface|callable():SessionInterface|null - */ - protected $session; - - /** - * @var string|null - */ - protected $locale; - - /** - * @var string - */ - protected $defaultLocale = 'en'; - - /** - * @var array|null - */ - protected static $formats; - - protected static $requestFactory; - - private ?string $preferredFormat = null; - private bool $isHostValid = true; - private bool $isForwardedValid = true; - private bool $isSafeContentPreferred; - - private array $trustedValuesCache = []; - - private static int $trustedHeaderSet = -1; - - private const FORWARDED_PARAMS = [ - self::HEADER_X_FORWARDED_FOR => 'for', - self::HEADER_X_FORWARDED_HOST => 'host', - self::HEADER_X_FORWARDED_PROTO => 'proto', - self::HEADER_X_FORWARDED_PORT => 'host', - ]; - - /** - * Names for headers that can be trusted when - * using trusted proxies. - * - * The FORWARDED header is the standard as of rfc7239. - * - * The other headers are non-standard, but widely used - * by popular reverse proxies (like Apache mod_proxy or Amazon EC2). - */ - private const TRUSTED_HEADERS = [ - self::HEADER_FORWARDED => 'FORWARDED', - self::HEADER_X_FORWARDED_FOR => 'X_FORWARDED_FOR', - self::HEADER_X_FORWARDED_HOST => 'X_FORWARDED_HOST', - self::HEADER_X_FORWARDED_PROTO => 'X_FORWARDED_PROTO', - self::HEADER_X_FORWARDED_PORT => 'X_FORWARDED_PORT', - self::HEADER_X_FORWARDED_PREFIX => 'X_FORWARDED_PREFIX', - ]; - - /** @var bool */ - private $isIisRewrite = false; - - /** - * @param array $query The GET parameters - * @param array $request The POST parameters - * @param array $attributes The request attributes (parameters parsed from the PATH_INFO, ...) - * @param array $cookies The COOKIE parameters - * @param array $files The FILES parameters - * @param array $server The SERVER parameters - * @param string|resource|null $content The raw body data - */ - public function __construct(array $query = [], array $request = [], array $attributes = [], array $cookies = [], array $files = [], array $server = [], $content = null) - { - $this->initialize($query, $request, $attributes, $cookies, $files, $server, $content); - } - - /** - * Sets the parameters for this request. - * - * This method also re-initializes all properties. - * - * @param array $query The GET parameters - * @param array $request The POST parameters - * @param array $attributes The request attributes (parameters parsed from the PATH_INFO, ...) - * @param array $cookies The COOKIE parameters - * @param array $files The FILES parameters - * @param array $server The SERVER parameters - * @param string|resource|null $content The raw body data - * - * @return void - */ - public function initialize(array $query = [], array $request = [], array $attributes = [], array $cookies = [], array $files = [], array $server = [], $content = null) - { - $this->request = new InputBag($request); - $this->query = new InputBag($query); - $this->attributes = new ParameterBag($attributes); - $this->cookies = new InputBag($cookies); - $this->files = new FileBag($files); - $this->server = new ServerBag($server); - $this->headers = new HeaderBag($this->server->getHeaders()); - - $this->content = $content; - $this->languages = null; - $this->charsets = null; - $this->encodings = null; - $this->acceptableContentTypes = null; - $this->pathInfo = null; - $this->requestUri = null; - $this->baseUrl = null; - $this->basePath = null; - $this->method = null; - $this->format = null; - } - - /** - * Creates a new request with values from PHP's super globals. - */ - public static function createFromGlobals(): static - { - $request = self::createRequestFromFactory($_GET, $_POST, [], $_COOKIE, $_FILES, $_SERVER); - - if (str_starts_with($request->headers->get('CONTENT_TYPE', ''), 'application/x-www-form-urlencoded') - && \in_array(strtoupper($request->server->get('REQUEST_METHOD', 'GET')), ['PUT', 'DELETE', 'PATCH']) - ) { - parse_str($request->getContent(), $data); - $request->request = new InputBag($data); - } - - return $request; - } - - /** - * Creates a Request based on a given URI and configuration. - * - * The information contained in the URI always take precedence - * over the other information (server and parameters). - * - * @param string $uri The URI - * @param string $method The HTTP method - * @param array $parameters The query (GET) or request (POST) parameters - * @param array $cookies The request cookies ($_COOKIE) - * @param array $files The request files ($_FILES) - * @param array $server The server parameters ($_SERVER) - * @param string|resource|null $content The raw body data - * - * @throws BadRequestException When the URI is invalid - */ - public static function create(string $uri, string $method = 'GET', array $parameters = [], array $cookies = [], array $files = [], array $server = [], $content = null): static - { - $server = array_replace([ - 'SERVER_NAME' => 'localhost', - 'SERVER_PORT' => 80, - 'HTTP_HOST' => 'localhost', - 'HTTP_USER_AGENT' => 'Symfony', - 'HTTP_ACCEPT' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', - 'HTTP_ACCEPT_LANGUAGE' => 'en-us,en;q=0.5', - 'HTTP_ACCEPT_CHARSET' => 'ISO-8859-1,utf-8;q=0.7,*;q=0.7', - 'REMOTE_ADDR' => '127.0.0.1', - 'SCRIPT_NAME' => '', - 'SCRIPT_FILENAME' => '', - 'SERVER_PROTOCOL' => 'HTTP/1.1', - 'REQUEST_TIME' => time(), - 'REQUEST_TIME_FLOAT' => microtime(true), - ], $server); - - $server['PATH_INFO'] = ''; - $server['REQUEST_METHOD'] = strtoupper($method); - - if (false === $components = parse_url(\strlen($uri) !== strcspn($uri, '?#') ? $uri : $uri.'#')) { - throw new BadRequestException('Invalid URI.'); - } - - if (false !== ($i = strpos($uri, '\\')) && $i < strcspn($uri, '?#')) { - throw new BadRequestException('Invalid URI: A URI cannot contain a backslash.'); - } - if (\strlen($uri) !== strcspn($uri, "\r\n\t")) { - throw new BadRequestException('Invalid URI: A URI cannot contain CR/LF/TAB characters.'); - } - if ('' !== $uri && (\ord($uri[0]) <= 32 || \ord($uri[-1]) <= 32)) { - throw new BadRequestException('Invalid URI: A URI must not start nor end with ASCII control characters or spaces.'); - } - - if (isset($components['host'])) { - $server['SERVER_NAME'] = $components['host']; - $server['HTTP_HOST'] = $components['host']; - } - - if (isset($components['scheme'])) { - if ('https' === $components['scheme']) { - $server['HTTPS'] = 'on'; - $server['SERVER_PORT'] = 443; - } else { - unset($server['HTTPS']); - $server['SERVER_PORT'] = 80; - } - } - - if (isset($components['port'])) { - $server['SERVER_PORT'] = $components['port']; - $server['HTTP_HOST'] .= ':'.$components['port']; - } - - if (isset($components['user'])) { - $server['PHP_AUTH_USER'] = $components['user']; - } - - if (isset($components['pass'])) { - $server['PHP_AUTH_PW'] = $components['pass']; - } - - if (!isset($components['path'])) { - $components['path'] = '/'; - } - - switch (strtoupper($method)) { - case 'POST': - case 'PUT': - case 'DELETE': - if (!isset($server['CONTENT_TYPE'])) { - $server['CONTENT_TYPE'] = 'application/x-www-form-urlencoded'; - } - // no break - case 'PATCH': - $request = $parameters; - $query = []; - break; - default: - $request = []; - $query = $parameters; - break; - } - - $queryString = ''; - if (isset($components['query'])) { - parse_str(html_entity_decode($components['query']), $qs); - - if ($query) { - $query = array_replace($qs, $query); - $queryString = http_build_query($query, '', '&'); - } else { - $query = $qs; - $queryString = $components['query']; - } - } elseif ($query) { - $queryString = http_build_query($query, '', '&'); - } - - $server['REQUEST_URI'] = $components['path'].('' !== $queryString ? '?'.$queryString : ''); - $server['QUERY_STRING'] = $queryString; - - return self::createRequestFromFactory($query, $request, [], $cookies, $files, $server, $content); - } - - /** - * Sets a callable able to create a Request instance. - * - * This is mainly useful when you need to override the Request class - * to keep BC with an existing system. It should not be used for any - * other purpose. - * - * @return void - */ - public static function setFactory(?callable $callable) - { - self::$requestFactory = $callable; - } - - /** - * Clones a request and overrides some of its parameters. - * - * @param array|null $query The GET parameters - * @param array|null $request The POST parameters - * @param array|null $attributes The request attributes (parameters parsed from the PATH_INFO, ...) - * @param array|null $cookies The COOKIE parameters - * @param array|null $files The FILES parameters - * @param array|null $server The SERVER parameters - */ - public function duplicate(?array $query = null, ?array $request = null, ?array $attributes = null, ?array $cookies = null, ?array $files = null, ?array $server = null): static - { - $dup = clone $this; - if (null !== $query) { - $dup->query = new InputBag($query); - } - if (null !== $request) { - $dup->request = new InputBag($request); - } - if (null !== $attributes) { - $dup->attributes = new ParameterBag($attributes); - } - if (null !== $cookies) { - $dup->cookies = new InputBag($cookies); - } - if (null !== $files) { - $dup->files = new FileBag($files); - } - if (null !== $server) { - $dup->server = new ServerBag($server); - $dup->headers = new HeaderBag($dup->server->getHeaders()); - } - $dup->languages = null; - $dup->charsets = null; - $dup->encodings = null; - $dup->acceptableContentTypes = null; - $dup->pathInfo = null; - $dup->requestUri = null; - $dup->baseUrl = null; - $dup->basePath = null; - $dup->method = null; - $dup->format = null; - - if (!$dup->get('_format') && $this->get('_format')) { - $dup->attributes->set('_format', $this->get('_format')); - } - - if (!$dup->getRequestFormat(null)) { - $dup->setRequestFormat($this->getRequestFormat(null)); - } - - return $dup; - } - - /** - * Clones the current request. - * - * Note that the session is not cloned as duplicated requests - * are most of the time sub-requests of the main one. - */ - public function __clone() - { - $this->query = clone $this->query; - $this->request = clone $this->request; - $this->attributes = clone $this->attributes; - $this->cookies = clone $this->cookies; - $this->files = clone $this->files; - $this->server = clone $this->server; - $this->headers = clone $this->headers; - } - - public function __toString(): string - { - $content = $this->getContent(); - - $cookieHeader = ''; - $cookies = []; - - foreach ($this->cookies as $k => $v) { - $cookies[] = \is_array($v) ? http_build_query([$k => $v], '', '; ', \PHP_QUERY_RFC3986) : "$k=$v"; - } - - if ($cookies) { - $cookieHeader = 'Cookie: '.implode('; ', $cookies)."\r\n"; - } - - return - sprintf('%s %s %s', $this->getMethod(), $this->getRequestUri(), $this->server->get('SERVER_PROTOCOL'))."\r\n". - $this->headers. - $cookieHeader."\r\n". - $content; - } - - /** - * Overrides the PHP global variables according to this request instance. - * - * It overrides $_GET, $_POST, $_REQUEST, $_SERVER, $_COOKIE. - * $_FILES is never overridden, see rfc1867 - * - * @return void - */ - public function overrideGlobals() - { - $this->server->set('QUERY_STRING', static::normalizeQueryString(http_build_query($this->query->all(), '', '&'))); - - $_GET = $this->query->all(); - $_POST = $this->request->all(); - $_SERVER = $this->server->all(); - $_COOKIE = $this->cookies->all(); - - foreach ($this->headers->all() as $key => $value) { - $key = strtoupper(str_replace('-', '_', $key)); - if (\in_array($key, ['CONTENT_TYPE', 'CONTENT_LENGTH', 'CONTENT_MD5'], true)) { - $_SERVER[$key] = implode(', ', $value); - } else { - $_SERVER['HTTP_'.$key] = implode(', ', $value); - } - } - - $request = ['g' => $_GET, 'p' => $_POST, 'c' => $_COOKIE]; - - $requestOrder = \ini_get('request_order') ?: \ini_get('variables_order'); - $requestOrder = preg_replace('#[^cgp]#', '', strtolower($requestOrder)) ?: 'gp'; - - $_REQUEST = [[]]; - - foreach (str_split($requestOrder) as $order) { - $_REQUEST[] = $request[$order]; - } - - $_REQUEST = array_merge(...$_REQUEST); - } - - /** - * Sets a list of trusted proxies. - * - * You should only list the reverse proxies that you manage directly. - * - * @param array $proxies A list of trusted proxies, the string 'REMOTE_ADDR' will be replaced with $_SERVER['REMOTE_ADDR'] - * @param int $trustedHeaderSet A bit field of Request::HEADER_*, to set which headers to trust from your proxies - * - * @return void - */ - public static function setTrustedProxies(array $proxies, int $trustedHeaderSet) - { - self::$trustedProxies = array_reduce($proxies, function ($proxies, $proxy) { - if ('REMOTE_ADDR' !== $proxy) { - $proxies[] = $proxy; - } elseif (isset($_SERVER['REMOTE_ADDR'])) { - $proxies[] = $_SERVER['REMOTE_ADDR']; - } - - return $proxies; - }, []); - self::$trustedHeaderSet = $trustedHeaderSet; - } - - /** - * Gets the list of trusted proxies. - * - * @return string[] - */ - public static function getTrustedProxies(): array - { - return self::$trustedProxies; - } - - /** - * Gets the set of trusted headers from trusted proxies. - * - * @return int A bit field of Request::HEADER_* that defines which headers are trusted from your proxies - */ - public static function getTrustedHeaderSet(): int - { - return self::$trustedHeaderSet; - } - - /** - * Sets a list of trusted host patterns. - * - * You should only list the hosts you manage using regexs. - * - * @param array $hostPatterns A list of trusted host patterns - * - * @return void - */ - public static function setTrustedHosts(array $hostPatterns) - { - self::$trustedHostPatterns = array_map(fn ($hostPattern) => sprintf('{%s}i', $hostPattern), $hostPatterns); - // we need to reset trusted hosts on trusted host patterns change - self::$trustedHosts = []; - } - - /** - * Gets the list of trusted host patterns. - * - * @return string[] - */ - public static function getTrustedHosts(): array - { - return self::$trustedHostPatterns; - } - - /** - * Normalizes a query string. - * - * It builds a normalized query string, where keys/value pairs are alphabetized, - * have consistent escaping and unneeded delimiters are removed. - */ - public static function normalizeQueryString(?string $qs): string - { - if ('' === ($qs ?? '')) { - return ''; - } - - $qs = HeaderUtils::parseQuery($qs); - ksort($qs); - - return http_build_query($qs, '', '&', \PHP_QUERY_RFC3986); - } - - /** - * Enables support for the _method request parameter to determine the intended HTTP method. - * - * Be warned that enabling this feature might lead to CSRF issues in your code. - * Check that you are using CSRF tokens when required. - * If the HTTP method parameter override is enabled, an html-form with method "POST" can be altered - * and used to send a "PUT" or "DELETE" request via the _method request parameter. - * If these methods are not protected against CSRF, this presents a possible vulnerability. - * - * The HTTP method can only be overridden when the real HTTP method is POST. - * - * @return void - */ - public static function enableHttpMethodParameterOverride() - { - self::$httpMethodParameterOverride = true; - } - - /** - * Checks whether support for the _method request parameter is enabled. - */ - public static function getHttpMethodParameterOverride(): bool - { - return self::$httpMethodParameterOverride; - } - - /** - * Gets a "parameter" value from any bag. - * - * This method is mainly useful for libraries that want to provide some flexibility. If you don't need the - * flexibility in controllers, it is better to explicitly get request parameters from the appropriate - * public property instead (attributes, query, request). - * - * Order of precedence: PATH (routing placeholders or custom attributes), GET, POST - * - * @internal use explicit input sources instead - */ - public function get(string $key, mixed $default = null): mixed - { - if ($this !== $result = $this->attributes->get($key, $this)) { - return $result; - } - - if ($this->query->has($key)) { - return $this->query->all()[$key]; - } - - if ($this->request->has($key)) { - return $this->request->all()[$key]; - } - - return $default; - } - - /** - * Gets the Session. - * - * @throws SessionNotFoundException When session is not set properly - */ - public function getSession(): SessionInterface - { - $session = $this->session; - if (!$session instanceof SessionInterface && null !== $session) { - $this->setSession($session = $session()); - } - - if (null === $session) { - throw new SessionNotFoundException('Session has not been set.'); - } - - return $session; - } - - /** - * Whether the request contains a Session which was started in one of the - * previous requests. - */ - public function hasPreviousSession(): bool - { - // the check for $this->session avoids malicious users trying to fake a session cookie with proper name - return $this->hasSession() && $this->cookies->has($this->getSession()->getName()); - } - - /** - * Whether the request contains a Session object. - * - * This method does not give any information about the state of the session object, - * like whether the session is started or not. It is just a way to check if this Request - * is associated with a Session instance. - * - * @param bool $skipIfUninitialized When true, ignores factories injected by `setSessionFactory` - */ - public function hasSession(bool $skipIfUninitialized = false): bool - { - return null !== $this->session && (!$skipIfUninitialized || $this->session instanceof SessionInterface); - } - - /** - * @return void - */ - public function setSession(SessionInterface $session) - { - $this->session = $session; - } - - /** - * @internal - * - * @param callable(): SessionInterface $factory - */ - public function setSessionFactory(callable $factory): void - { - $this->session = $factory(...); - } - - /** - * Returns the client IP addresses. - * - * In the returned array the most trusted IP address is first, and the - * least trusted one last. The "real" client IP address is the last one, - * but this is also the least trusted one. Trusted proxies are stripped. - * - * Use this method carefully; you should use getClientIp() instead. - * - * @see getClientIp() - */ - public function getClientIps(): array - { - $ip = $this->server->get('REMOTE_ADDR'); - - if (!$this->isFromTrustedProxy()) { - return [$ip]; - } - - return $this->getTrustedValues(self::HEADER_X_FORWARDED_FOR, $ip) ?: [$ip]; - } - - /** - * Returns the client IP address. - * - * This method can read the client IP address from the "X-Forwarded-For" header - * when trusted proxies were set via "setTrustedProxies()". The "X-Forwarded-For" - * header value is a comma+space separated list of IP addresses, the left-most - * being the original client, and each successive proxy that passed the request - * adding the IP address where it received the request from. - * - * If your reverse proxy uses a different header name than "X-Forwarded-For", - * ("Client-Ip" for instance), configure it via the $trustedHeaderSet - * argument of the Request::setTrustedProxies() method instead. - * - * @see getClientIps() - * @see https://wikipedia.org/wiki/X-Forwarded-For - */ - public function getClientIp(): ?string - { - $ipAddresses = $this->getClientIps(); - - return $ipAddresses[0]; - } - - /** - * Returns current script name. - */ - public function getScriptName(): string - { - return $this->server->get('SCRIPT_NAME', $this->server->get('ORIG_SCRIPT_NAME', '')); - } - - /** - * Returns the path being requested relative to the executed script. - * - * The path info always starts with a /. - * - * Suppose this request is instantiated from /mysite on localhost: - * - * * http://localhost/mysite returns an empty string - * * http://localhost/mysite/about returns '/about' - * * http://localhost/mysite/enco%20ded returns '/enco%20ded' - * * http://localhost/mysite/about?var=1 returns '/about' - * - * @return string The raw path (i.e. not urldecoded) - */ - public function getPathInfo(): string - { - return $this->pathInfo ??= $this->preparePathInfo(); - } - - /** - * Returns the root path from which this request is executed. - * - * Suppose that an index.php file instantiates this request object: - * - * * http://localhost/index.php returns an empty string - * * http://localhost/index.php/page returns an empty string - * * http://localhost/web/index.php returns '/web' - * * http://localhost/we%20b/index.php returns '/we%20b' - * - * @return string The raw path (i.e. not urldecoded) - */ - public function getBasePath(): string - { - return $this->basePath ??= $this->prepareBasePath(); - } - - /** - * Returns the root URL from which this request is executed. - * - * The base URL never ends with a /. - * - * This is similar to getBasePath(), except that it also includes the - * script filename (e.g. index.php) if one exists. - * - * @return string The raw URL (i.e. not urldecoded) - */ - public function getBaseUrl(): string - { - $trustedPrefix = ''; - - // the proxy prefix must be prepended to any prefix being needed at the webserver level - if ($this->isFromTrustedProxy() && $trustedPrefixValues = $this->getTrustedValues(self::HEADER_X_FORWARDED_PREFIX)) { - $trustedPrefix = rtrim($trustedPrefixValues[0], '/'); - } - - return $trustedPrefix.$this->getBaseUrlReal(); - } - - /** - * Returns the real base URL received by the webserver from which this request is executed. - * The URL does not include trusted reverse proxy prefix. - * - * @return string The raw URL (i.e. not urldecoded) - */ - private function getBaseUrlReal(): string - { - return $this->baseUrl ??= $this->prepareBaseUrl(); - } - - /** - * Gets the request's scheme. - */ - public function getScheme(): string - { - return $this->isSecure() ? 'https' : 'http'; - } - - /** - * Returns the port on which the request is made. - * - * This method can read the client port from the "X-Forwarded-Port" header - * when trusted proxies were set via "setTrustedProxies()". - * - * The "X-Forwarded-Port" header must contain the client port. - * - * @return int|string|null Can be a string if fetched from the server bag - */ - public function getPort(): int|string|null - { - if ($this->isFromTrustedProxy() && $host = $this->getTrustedValues(self::HEADER_X_FORWARDED_PORT)) { - $host = $host[0]; - } elseif ($this->isFromTrustedProxy() && $host = $this->getTrustedValues(self::HEADER_X_FORWARDED_HOST)) { - $host = $host[0]; - } elseif (!$host = $this->headers->get('HOST')) { - return $this->server->get('SERVER_PORT'); - } - - if ('[' === $host[0]) { - $pos = strpos($host, ':', strrpos($host, ']')); - } else { - $pos = strrpos($host, ':'); - } - - if (false !== $pos && $port = substr($host, $pos + 1)) { - return (int) $port; - } - - return 'https' === $this->getScheme() ? 443 : 80; - } - - /** - * Returns the user. - */ - public function getUser(): ?string - { - return $this->headers->get('PHP_AUTH_USER'); - } - - /** - * Returns the password. - */ - public function getPassword(): ?string - { - return $this->headers->get('PHP_AUTH_PW'); - } - - /** - * Gets the user info. - * - * @return string|null A user name if any and, optionally, scheme-specific information about how to gain authorization to access the server - */ - public function getUserInfo(): ?string - { - $userinfo = $this->getUser(); - - $pass = $this->getPassword(); - if ('' != $pass) { - $userinfo .= ":$pass"; - } - - return $userinfo; - } - - /** - * Returns the HTTP host being requested. - * - * The port name will be appended to the host if it's non-standard. - */ - public function getHttpHost(): string - { - $scheme = $this->getScheme(); - $port = $this->getPort(); - - if (('http' === $scheme && 80 == $port) || ('https' === $scheme && 443 == $port)) { - return $this->getHost(); - } - - return $this->getHost().':'.$port; - } - - /** - * Returns the requested URI (path and query string). - * - * @return string The raw URI (i.e. not URI decoded) - */ - public function getRequestUri(): string - { - return $this->requestUri ??= $this->prepareRequestUri(); - } - - /** - * Gets the scheme and HTTP host. - * - * If the URL was called with basic authentication, the user - * and the password are not added to the generated string. - */ - public function getSchemeAndHttpHost(): string - { - return $this->getScheme().'://'.$this->getHttpHost(); - } - - /** - * Generates a normalized URI (URL) for the Request. - * - * @see getQueryString() - */ - public function getUri(): string - { - if (null !== $qs = $this->getQueryString()) { - $qs = '?'.$qs; - } - - return $this->getSchemeAndHttpHost().$this->getBaseUrl().$this->getPathInfo().$qs; - } - - /** - * Generates a normalized URI for the given path. - * - * @param string $path A path to use instead of the current one - */ - public function getUriForPath(string $path): string - { - return $this->getSchemeAndHttpHost().$this->getBaseUrl().$path; - } - - /** - * Returns the path as relative reference from the current Request path. - * - * Only the URIs path component (no schema, host etc.) is relevant and must be given. - * Both paths must be absolute and not contain relative parts. - * Relative URLs from one resource to another are useful when generating self-contained downloadable document archives. - * Furthermore, they can be used to reduce the link size in documents. - * - * Example target paths, given a base path of "/a/b/c/d": - * - "/a/b/c/d" -> "" - * - "/a/b/c/" -> "./" - * - "/a/b/" -> "../" - * - "/a/b/c/other" -> "other" - * - "/a/x/y" -> "../../x/y" - */ - public function getRelativeUriForPath(string $path): string - { - // be sure that we are dealing with an absolute path - if (!isset($path[0]) || '/' !== $path[0]) { - return $path; - } - - if ($path === $basePath = $this->getPathInfo()) { - return ''; - } - - $sourceDirs = explode('/', isset($basePath[0]) && '/' === $basePath[0] ? substr($basePath, 1) : $basePath); - $targetDirs = explode('/', substr($path, 1)); - array_pop($sourceDirs); - $targetFile = array_pop($targetDirs); - - foreach ($sourceDirs as $i => $dir) { - if (isset($targetDirs[$i]) && $dir === $targetDirs[$i]) { - unset($sourceDirs[$i], $targetDirs[$i]); - } else { - break; - } - } - - $targetDirs[] = $targetFile; - $path = str_repeat('../', \count($sourceDirs)).implode('/', $targetDirs); - - // A reference to the same base directory or an empty subdirectory must be prefixed with "./". - // This also applies to a segment with a colon character (e.g., "file:colon") that cannot be used - // as the first segment of a relative-path reference, as it would be mistaken for a scheme name - // (see https://tools.ietf.org/html/rfc3986#section-4.2). - return !isset($path[0]) || '/' === $path[0] - || false !== ($colonPos = strpos($path, ':')) && ($colonPos < ($slashPos = strpos($path, '/')) || false === $slashPos) - ? "./$path" : $path; - } - - /** - * Generates the normalized query string for the Request. - * - * It builds a normalized query string, where keys/value pairs are alphabetized - * and have consistent escaping. - */ - public function getQueryString(): ?string - { - $qs = static::normalizeQueryString($this->server->get('QUERY_STRING')); - - return '' === $qs ? null : $qs; - } - - /** - * Checks whether the request is secure or not. - * - * This method can read the client protocol from the "X-Forwarded-Proto" header - * when trusted proxies were set via "setTrustedProxies()". - * - * The "X-Forwarded-Proto" header must contain the protocol: "https" or "http". - */ - public function isSecure(): bool - { - if ($this->isFromTrustedProxy() && $proto = $this->getTrustedValues(self::HEADER_X_FORWARDED_PROTO)) { - return \in_array(strtolower($proto[0]), ['https', 'on', 'ssl', '1'], true); - } - - $https = $this->server->get('HTTPS'); - - return !empty($https) && 'off' !== strtolower($https); - } - - /** - * Returns the host name. - * - * This method can read the client host name from the "X-Forwarded-Host" header - * when trusted proxies were set via "setTrustedProxies()". - * - * The "X-Forwarded-Host" header must contain the client host name. - * - * @throws SuspiciousOperationException when the host name is invalid or not trusted - */ - public function getHost(): string - { - if ($this->isFromTrustedProxy() && $host = $this->getTrustedValues(self::HEADER_X_FORWARDED_HOST)) { - $host = $host[0]; - } elseif (!$host = $this->headers->get('HOST')) { - if (!$host = $this->server->get('SERVER_NAME')) { - $host = $this->server->get('SERVER_ADDR', ''); - } - } - - // trim and remove port number from host - // host is lowercase as per RFC 952/2181 - $host = strtolower(preg_replace('/:\d+$/', '', trim($host))); - - // as the host can come from the user (HTTP_HOST and depending on the configuration, SERVER_NAME too can come from the user) - // check that it does not contain forbidden characters (see RFC 952 and RFC 2181) - // use preg_replace() instead of preg_match() to prevent DoS attacks with long host names - if ($host && '' !== preg_replace('/(?:^\[)?[a-zA-Z0-9-:\]_]+\.?/', '', $host)) { - if (!$this->isHostValid) { - return ''; - } - $this->isHostValid = false; - - throw new SuspiciousOperationException(sprintf('Invalid Host "%s".', $host)); - } - - if (\count(self::$trustedHostPatterns) > 0) { - // to avoid host header injection attacks, you should provide a list of trusted host patterns - - if (\in_array($host, self::$trustedHosts)) { - return $host; - } - - foreach (self::$trustedHostPatterns as $pattern) { - if (preg_match($pattern, $host)) { - self::$trustedHosts[] = $host; - - return $host; - } - } - - if (!$this->isHostValid) { - return ''; - } - $this->isHostValid = false; - - throw new SuspiciousOperationException(sprintf('Untrusted Host "%s".', $host)); - } - - return $host; - } - - /** - * Sets the request method. - * - * @return void - */ - public function setMethod(string $method) - { - $this->method = null; - $this->server->set('REQUEST_METHOD', $method); - } - - /** - * Gets the request "intended" method. - * - * If the X-HTTP-Method-Override header is set, and if the method is a POST, - * then it is used to determine the "real" intended HTTP method. - * - * The _method request parameter can also be used to determine the HTTP method, - * but only if enableHttpMethodParameterOverride() has been called. - * - * The method is always an uppercased string. - * - * @see getRealMethod() - */ - public function getMethod(): string - { - if (null !== $this->method) { - return $this->method; - } - - $this->method = strtoupper($this->server->get('REQUEST_METHOD', 'GET')); - - if ('POST' !== $this->method) { - return $this->method; - } - - $method = $this->headers->get('X-HTTP-METHOD-OVERRIDE'); - - if (!$method && self::$httpMethodParameterOverride) { - $method = $this->request->get('_method', $this->query->get('_method', 'POST')); - } - - if (!\is_string($method)) { - return $this->method; - } - - $method = strtoupper($method); - - if (\in_array($method, ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'CONNECT', 'OPTIONS', 'PATCH', 'PURGE', 'TRACE'], true)) { - return $this->method = $method; - } - - if (!preg_match('/^[A-Z]++$/D', $method)) { - throw new SuspiciousOperationException('Invalid HTTP method override.'); - } - - return $this->method = $method; - } - - /** - * Gets the "real" request method. - * - * @see getMethod() - */ - public function getRealMethod(): string - { - return strtoupper($this->server->get('REQUEST_METHOD', 'GET')); - } - - /** - * Gets the mime type associated with the format. - */ - public function getMimeType(string $format): ?string - { - if (null === static::$formats) { - static::initializeFormats(); - } - - return isset(static::$formats[$format]) ? static::$formats[$format][0] : null; - } - - /** - * Gets the mime types associated with the format. - * - * @return string[] - */ - public static function getMimeTypes(string $format): array - { - if (null === static::$formats) { - static::initializeFormats(); - } - - return static::$formats[$format] ?? []; - } - - /** - * Gets the format associated with the mime type. - */ - public function getFormat(?string $mimeType): ?string - { - $canonicalMimeType = null; - if ($mimeType && false !== $pos = strpos($mimeType, ';')) { - $canonicalMimeType = trim(substr($mimeType, 0, $pos)); - } - - if (null === static::$formats) { - static::initializeFormats(); - } - - foreach (static::$formats as $format => $mimeTypes) { - if (\in_array($mimeType, (array) $mimeTypes)) { - return $format; - } - if (null !== $canonicalMimeType && \in_array($canonicalMimeType, (array) $mimeTypes)) { - return $format; - } - } - - return null; - } - - /** - * Associates a format with mime types. - * - * @param string|string[] $mimeTypes The associated mime types (the preferred one must be the first as it will be used as the content type) - * - * @return void - */ - public function setFormat(?string $format, string|array $mimeTypes) - { - if (null === static::$formats) { - static::initializeFormats(); - } - - static::$formats[$format] = \is_array($mimeTypes) ? $mimeTypes : [$mimeTypes]; - } - - /** - * Gets the request format. - * - * Here is the process to determine the format: - * - * * format defined by the user (with setRequestFormat()) - * * _format request attribute - * * $default - * - * @see getPreferredFormat - */ - public function getRequestFormat(?string $default = 'html'): ?string - { - $this->format ??= $this->attributes->get('_format'); - - return $this->format ?? $default; - } - - /** - * Sets the request format. - * - * @return void - */ - public function setRequestFormat(?string $format) - { - $this->format = $format; - } - - /** - * Gets the usual name of the format associated with the request's media type (provided in the Content-Type header). - * - * @deprecated since Symfony 6.2, use getContentTypeFormat() instead - */ - public function getContentType(): ?string - { - trigger_deprecation('symfony/http-foundation', '6.2', 'The "%s()" method is deprecated, use "getContentTypeFormat()" instead.', __METHOD__); - - return $this->getContentTypeFormat(); - } - - /** - * Gets the usual name of the format associated with the request's media type (provided in the Content-Type header). - * - * @see Request::$formats - */ - public function getContentTypeFormat(): ?string - { - return $this->getFormat($this->headers->get('CONTENT_TYPE', '')); - } - - /** - * Sets the default locale. - * - * @return void - */ - public function setDefaultLocale(string $locale) - { - $this->defaultLocale = $locale; - - if (null === $this->locale) { - $this->setPhpDefaultLocale($locale); - } - } - - /** - * Get the default locale. - */ - public function getDefaultLocale(): string - { - return $this->defaultLocale; - } - - /** - * Sets the locale. - * - * @return void - */ - public function setLocale(string $locale) - { - $this->setPhpDefaultLocale($this->locale = $locale); - } - - /** - * Get the locale. - */ - public function getLocale(): string - { - return $this->locale ?? $this->defaultLocale; - } - - /** - * Checks if the request method is of specified type. - * - * @param string $method Uppercase request method (GET, POST etc) - */ - public function isMethod(string $method): bool - { - return $this->getMethod() === strtoupper($method); - } - - /** - * Checks whether or not the method is safe. - * - * @see https://tools.ietf.org/html/rfc7231#section-4.2.1 - */ - public function isMethodSafe(): bool - { - return \in_array($this->getMethod(), ['GET', 'HEAD', 'OPTIONS', 'TRACE']); - } - - /** - * Checks whether or not the method is idempotent. - */ - public function isMethodIdempotent(): bool - { - return \in_array($this->getMethod(), ['HEAD', 'GET', 'PUT', 'DELETE', 'TRACE', 'OPTIONS', 'PURGE']); - } - - /** - * Checks whether the method is cacheable or not. - * - * @see https://tools.ietf.org/html/rfc7231#section-4.2.3 - */ - public function isMethodCacheable(): bool - { - return \in_array($this->getMethod(), ['GET', 'HEAD']); - } - - /** - * Returns the protocol version. - * - * If the application is behind a proxy, the protocol version used in the - * requests between the client and the proxy and between the proxy and the - * server might be different. This returns the former (from the "Via" header) - * if the proxy is trusted (see "setTrustedProxies()"), otherwise it returns - * the latter (from the "SERVER_PROTOCOL" server parameter). - */ - public function getProtocolVersion(): ?string - { - if ($this->isFromTrustedProxy()) { - preg_match('~^(HTTP/)?([1-9]\.[0-9]) ~', $this->headers->get('Via') ?? '', $matches); - - if ($matches) { - return 'HTTP/'.$matches[2]; - } - } - - return $this->server->get('SERVER_PROTOCOL'); - } - - /** - * Returns the request body content. - * - * @param bool $asResource If true, a resource will be returned - * - * @return string|resource - * - * @psalm-return ($asResource is true ? resource : string) - */ - public function getContent(bool $asResource = false) - { - $currentContentIsResource = \is_resource($this->content); - - if (true === $asResource) { - if ($currentContentIsResource) { - rewind($this->content); - - return $this->content; - } - - // Content passed in parameter (test) - if (\is_string($this->content)) { - $resource = fopen('php://temp', 'r+'); - fwrite($resource, $this->content); - rewind($resource); - - return $resource; - } - - $this->content = false; - - return fopen('php://input', 'r'); - } - - if ($currentContentIsResource) { - rewind($this->content); - - return stream_get_contents($this->content); - } - - if (null === $this->content || false === $this->content) { - $this->content = file_get_contents('php://input'); - } - - return $this->content; - } - - /** - * Gets the decoded form or json request body. - * - * @throws JsonException When the body cannot be decoded to an array - */ - public function getPayload(): InputBag - { - if ($this->request->count()) { - return clone $this->request; - } - - if ('' === $content = $this->getContent()) { - return new InputBag([]); - } - - try { - $content = json_decode($content, true, 512, \JSON_BIGINT_AS_STRING | \JSON_THROW_ON_ERROR); - } catch (\JsonException $e) { - throw new JsonException('Could not decode request body.', $e->getCode(), $e); - } - - if (!\is_array($content)) { - throw new JsonException(sprintf('JSON content was expected to decode to an array, "%s" returned.', get_debug_type($content))); - } - - return new InputBag($content); - } - - /** - * Gets the request body decoded as array, typically from a JSON payload. - * - * @see getPayload() for portability between content types - * - * @throws JsonException When the body cannot be decoded to an array - */ - public function toArray(): array - { - if ('' === $content = $this->getContent()) { - throw new JsonException('Request body is empty.'); - } - - try { - $content = json_decode($content, true, 512, \JSON_BIGINT_AS_STRING | \JSON_THROW_ON_ERROR); - } catch (\JsonException $e) { - throw new JsonException('Could not decode request body.', $e->getCode(), $e); - } - - if (!\is_array($content)) { - throw new JsonException(sprintf('JSON content was expected to decode to an array, "%s" returned.', get_debug_type($content))); - } - - return $content; - } - - /** - * Gets the Etags. - */ - public function getETags(): array - { - return preg_split('/\s*,\s*/', $this->headers->get('If-None-Match', ''), -1, \PREG_SPLIT_NO_EMPTY); - } - - public function isNoCache(): bool - { - return $this->headers->hasCacheControlDirective('no-cache') || 'no-cache' == $this->headers->get('Pragma'); - } - - /** - * Gets the preferred format for the response by inspecting, in the following order: - * * the request format set using setRequestFormat; - * * the values of the Accept HTTP header. - * - * Note that if you use this method, you should send the "Vary: Accept" header - * in the response to prevent any issues with intermediary HTTP caches. - */ - public function getPreferredFormat(?string $default = 'html'): ?string - { - if ($this->preferredFormat ??= $this->getRequestFormat(null)) { - return $this->preferredFormat; - } - - foreach ($this->getAcceptableContentTypes() as $mimeType) { - if ($this->preferredFormat = $this->getFormat($mimeType)) { - return $this->preferredFormat; - } - } - - return $default; - } - - /** - * Returns the preferred language. - * - * @param string[] $locales An array of ordered available locales - */ - public function getPreferredLanguage(?array $locales = null): ?string - { - $preferredLanguages = $this->getLanguages(); - - if (empty($locales)) { - return $preferredLanguages[0] ?? null; - } - - if (!$preferredLanguages) { - return $locales[0]; - } - - $extendedPreferredLanguages = []; - foreach ($preferredLanguages as $language) { - $extendedPreferredLanguages[] = $language; - if (false !== $position = strpos($language, '_')) { - $superLanguage = substr($language, 0, $position); - if (!\in_array($superLanguage, $preferredLanguages)) { - $extendedPreferredLanguages[] = $superLanguage; - } - } - } - - $preferredLanguages = array_values(array_intersect($extendedPreferredLanguages, $locales)); - - return $preferredLanguages[0] ?? $locales[0]; - } - - /** - * Gets a list of languages acceptable by the client browser ordered in the user browser preferences. - * - * @return string[] - */ - public function getLanguages(): array - { - if (null !== $this->languages) { - return $this->languages; - } - - $languages = AcceptHeader::fromString($this->headers->get('Accept-Language'))->all(); - $this->languages = []; - foreach ($languages as $acceptHeaderItem) { - $lang = $acceptHeaderItem->getValue(); - if (str_contains($lang, '-')) { - $codes = explode('-', $lang); - if ('i' === $codes[0]) { - // Language not listed in ISO 639 that are not variants - // of any listed language, which can be registered with the - // i-prefix, such as i-cherokee - if (\count($codes) > 1) { - $lang = $codes[1]; - } - } else { - for ($i = 0, $max = \count($codes); $i < $max; ++$i) { - if (0 === $i) { - $lang = strtolower($codes[0]); - } else { - $lang .= '_'.strtoupper($codes[$i]); - } - } - } - } - - $this->languages[] = $lang; - } - - return $this->languages; - } - - /** - * Gets a list of charsets acceptable by the client browser in preferable order. - * - * @return string[] - */ - public function getCharsets(): array - { - return $this->charsets ??= array_map('strval', array_keys(AcceptHeader::fromString($this->headers->get('Accept-Charset'))->all())); - } - - /** - * Gets a list of encodings acceptable by the client browser in preferable order. - * - * @return string[] - */ - public function getEncodings(): array - { - return $this->encodings ??= array_map('strval', array_keys(AcceptHeader::fromString($this->headers->get('Accept-Encoding'))->all())); - } - - /** - * Gets a list of content types acceptable by the client browser in preferable order. - * - * @return string[] - */ - public function getAcceptableContentTypes(): array - { - return $this->acceptableContentTypes ??= array_map('strval', array_keys(AcceptHeader::fromString($this->headers->get('Accept'))->all())); - } - - /** - * Returns true if the request is an XMLHttpRequest. - * - * It works if your JavaScript library sets an X-Requested-With HTTP header. - * It is known to work with common JavaScript frameworks: - * - * @see https://wikipedia.org/wiki/List_of_Ajax_frameworks#JavaScript - */ - public function isXmlHttpRequest(): bool - { - return 'XMLHttpRequest' == $this->headers->get('X-Requested-With'); - } - - /** - * Checks whether the client browser prefers safe content or not according to RFC8674. - * - * @see https://tools.ietf.org/html/rfc8674 - */ - public function preferSafeContent(): bool - { - if (isset($this->isSafeContentPreferred)) { - return $this->isSafeContentPreferred; - } - - if (!$this->isSecure()) { - // see https://tools.ietf.org/html/rfc8674#section-3 - return $this->isSafeContentPreferred = false; - } - - return $this->isSafeContentPreferred = AcceptHeader::fromString($this->headers->get('Prefer'))->has('safe'); - } - - /* - * The following methods are derived from code of the Zend Framework (1.10dev - 2010-01-24) - * - * Code subject to the new BSD license (https://framework.zend.com/license). - * - * Copyright (c) 2005-2010 Zend Technologies USA Inc. (https://www.zend.com/) - */ - - /** - * @return string - */ - protected function prepareRequestUri() - { - $requestUri = ''; - - if ($this->isIisRewrite() && '' != $this->server->get('UNENCODED_URL')) { - // IIS7 with URL Rewrite: make sure we get the unencoded URL (double slash problem) - $requestUri = $this->server->get('UNENCODED_URL'); - $this->server->remove('UNENCODED_URL'); - } elseif ($this->server->has('REQUEST_URI')) { - $requestUri = $this->server->get('REQUEST_URI'); - - if ('' !== $requestUri && '/' === $requestUri[0]) { - // To only use path and query remove the fragment. - if (false !== $pos = strpos($requestUri, '#')) { - $requestUri = substr($requestUri, 0, $pos); - } - } else { - // HTTP proxy reqs setup request URI with scheme and host [and port] + the URL path, - // only use URL path. - $uriComponents = parse_url($requestUri); - - if (isset($uriComponents['path'])) { - $requestUri = $uriComponents['path']; - } - - if (isset($uriComponents['query'])) { - $requestUri .= '?'.$uriComponents['query']; - } - } - } elseif ($this->server->has('ORIG_PATH_INFO')) { - // IIS 5.0, PHP as CGI - $requestUri = $this->server->get('ORIG_PATH_INFO'); - if ('' != $this->server->get('QUERY_STRING')) { - $requestUri .= '?'.$this->server->get('QUERY_STRING'); - } - $this->server->remove('ORIG_PATH_INFO'); - } - - // normalize the request URI to ease creating sub-requests from this request - $this->server->set('REQUEST_URI', $requestUri); - - return $requestUri; - } - - /** - * Prepares the base URL. - */ - protected function prepareBaseUrl(): string - { - $filename = basename($this->server->get('SCRIPT_FILENAME', '')); - - if (basename($this->server->get('SCRIPT_NAME', '')) === $filename) { - $baseUrl = $this->server->get('SCRIPT_NAME'); - } elseif (basename($this->server->get('PHP_SELF', '')) === $filename) { - $baseUrl = $this->server->get('PHP_SELF'); - } elseif (basename($this->server->get('ORIG_SCRIPT_NAME', '')) === $filename) { - $baseUrl = $this->server->get('ORIG_SCRIPT_NAME'); // 1and1 shared hosting compatibility - } else { - // Backtrack up the script_filename to find the portion matching - // php_self - $path = $this->server->get('PHP_SELF', ''); - $file = $this->server->get('SCRIPT_FILENAME', ''); - $segs = explode('/', trim($file, '/')); - $segs = array_reverse($segs); - $index = 0; - $last = \count($segs); - $baseUrl = ''; - do { - $seg = $segs[$index]; - $baseUrl = '/'.$seg.$baseUrl; - ++$index; - } while ($last > $index && (false !== $pos = strpos($path, $baseUrl)) && 0 != $pos); - } - - // Does the baseUrl have anything in common with the request_uri? - $requestUri = $this->getRequestUri(); - if ('' !== $requestUri && '/' !== $requestUri[0]) { - $requestUri = '/'.$requestUri; - } - - if ($baseUrl && null !== $prefix = $this->getUrlencodedPrefix($requestUri, $baseUrl)) { - // full $baseUrl matches - return $prefix; - } - - if ($baseUrl && null !== $prefix = $this->getUrlencodedPrefix($requestUri, rtrim(\dirname($baseUrl), '/'.\DIRECTORY_SEPARATOR).'/')) { - // directory portion of $baseUrl matches - return rtrim($prefix, '/'.\DIRECTORY_SEPARATOR); - } - - $truncatedRequestUri = $requestUri; - if (false !== $pos = strpos($requestUri, '?')) { - $truncatedRequestUri = substr($requestUri, 0, $pos); - } - - $basename = basename($baseUrl ?? ''); - if (empty($basename) || !strpos(rawurldecode($truncatedRequestUri), $basename)) { - // no match whatsoever; set it blank - return ''; - } - - // If using mod_rewrite or ISAPI_Rewrite strip the script filename - // out of baseUrl. $pos !== 0 makes sure it is not matching a value - // from PATH_INFO or QUERY_STRING - if (\strlen($requestUri) >= \strlen($baseUrl) && (false !== $pos = strpos($requestUri, $baseUrl)) && 0 !== $pos) { - $baseUrl = substr($requestUri, 0, $pos + \strlen($baseUrl)); - } - - return rtrim($baseUrl, '/'.\DIRECTORY_SEPARATOR); - } - - /** - * Prepares the base path. - */ - protected function prepareBasePath(): string - { - $baseUrl = $this->getBaseUrl(); - if (empty($baseUrl)) { - return ''; - } - - $filename = basename($this->server->get('SCRIPT_FILENAME')); - if (basename($baseUrl) === $filename) { - $basePath = \dirname($baseUrl); - } else { - $basePath = $baseUrl; - } - - if ('\\' === \DIRECTORY_SEPARATOR) { - $basePath = str_replace('\\', '/', $basePath); - } - - return rtrim($basePath, '/'); - } - - /** - * Prepares the path info. - */ - protected function preparePathInfo(): string - { - if (null === ($requestUri = $this->getRequestUri())) { - return '/'; - } - - // Remove the query string from REQUEST_URI - if (false !== $pos = strpos($requestUri, '?')) { - $requestUri = substr($requestUri, 0, $pos); - } - if ('' !== $requestUri && '/' !== $requestUri[0]) { - $requestUri = '/'.$requestUri; - } - - if (null === ($baseUrl = $this->getBaseUrlReal())) { - return $requestUri; - } - - $pathInfo = substr($requestUri, \strlen($baseUrl)); - if (false === $pathInfo || '' === $pathInfo) { - // If substr() returns false then PATH_INFO is set to an empty string - return '/'; - } - - return $pathInfo; - } - - /** - * Initializes HTTP request formats. - * - * @return void - */ - protected static function initializeFormats() - { - static::$formats = [ - 'html' => ['text/html', 'application/xhtml+xml'], - 'txt' => ['text/plain'], - 'js' => ['application/javascript', 'application/x-javascript', 'text/javascript'], - 'css' => ['text/css'], - 'json' => ['application/json', 'application/x-json'], - 'jsonld' => ['application/ld+json'], - 'xml' => ['text/xml', 'application/xml', 'application/x-xml'], - 'rdf' => ['application/rdf+xml'], - 'atom' => ['application/atom+xml'], - 'rss' => ['application/rss+xml'], - 'form' => ['application/x-www-form-urlencoded', 'multipart/form-data'], - ]; - } - - private function setPhpDefaultLocale(string $locale): void - { - // if either the class Locale doesn't exist, or an exception is thrown when - // setting the default locale, the intl module is not installed, and - // the call can be ignored: - try { - if (class_exists(\Locale::class, false)) { - \Locale::setDefault($locale); - } - } catch (\Exception) { - } - } - - /** - * Returns the prefix as encoded in the string when the string starts with - * the given prefix, null otherwise. - */ - private function getUrlencodedPrefix(string $string, string $prefix): ?string - { - if ($this->isIisRewrite()) { - // ISS with UrlRewriteModule might report SCRIPT_NAME/PHP_SELF with wrong case - // see https://github.com/php/php-src/issues/11981 - if (0 !== stripos(rawurldecode($string), $prefix)) { - return null; - } - } elseif (!str_starts_with(rawurldecode($string), $prefix)) { - return null; - } - - $len = \strlen($prefix); - - if (preg_match(sprintf('#^(%%[[:xdigit:]]{2}|.){%d}#', $len), $string, $match)) { - return $match[0]; - } - - return null; - } - - private static function createRequestFromFactory(array $query = [], array $request = [], array $attributes = [], array $cookies = [], array $files = [], array $server = [], $content = null): static - { - if (self::$requestFactory) { - $request = (self::$requestFactory)($query, $request, $attributes, $cookies, $files, $server, $content); - - if (!$request instanceof self) { - throw new \LogicException('The Request factory must return an instance of Symfony\Component\HttpFoundation\Request.'); - } - - return $request; - } - - return new static($query, $request, $attributes, $cookies, $files, $server, $content); - } - - /** - * Indicates whether this request originated from a trusted proxy. - * - * This can be useful to determine whether or not to trust the - * contents of a proxy-specific header. - */ - public function isFromTrustedProxy(): bool - { - return self::$trustedProxies && IpUtils::checkIp($this->server->get('REMOTE_ADDR', ''), self::$trustedProxies); - } - - /** - * This method is rather heavy because it splits and merges headers, and it's called by many other methods such as - * getPort(), isSecure(), getHost(), getClientIps(), getBaseUrl() etc. Thus, we try to cache the results for - * best performance. - */ - private function getTrustedValues(int $type, ?string $ip = null): array - { - $cacheKey = $type."\0".((self::$trustedHeaderSet & $type) ? $this->headers->get(self::TRUSTED_HEADERS[$type]) : ''); - $cacheKey .= "\0".$ip."\0".$this->headers->get(self::TRUSTED_HEADERS[self::HEADER_FORWARDED]); - - if (isset($this->trustedValuesCache[$cacheKey])) { - return $this->trustedValuesCache[$cacheKey]; - } - - $clientValues = []; - $forwardedValues = []; - - if ((self::$trustedHeaderSet & $type) && $this->headers->has(self::TRUSTED_HEADERS[$type])) { - foreach (explode(',', $this->headers->get(self::TRUSTED_HEADERS[$type])) as $v) { - $clientValues[] = (self::HEADER_X_FORWARDED_PORT === $type ? '0.0.0.0:' : '').trim($v); - } - } - - if ((self::$trustedHeaderSet & self::HEADER_FORWARDED) && (isset(self::FORWARDED_PARAMS[$type])) && $this->headers->has(self::TRUSTED_HEADERS[self::HEADER_FORWARDED])) { - $forwarded = $this->headers->get(self::TRUSTED_HEADERS[self::HEADER_FORWARDED]); - $parts = HeaderUtils::split($forwarded, ',;='); - $param = self::FORWARDED_PARAMS[$type]; - foreach ($parts as $subParts) { - if (null === $v = HeaderUtils::combine($subParts)[$param] ?? null) { - continue; - } - if (self::HEADER_X_FORWARDED_PORT === $type) { - if (str_ends_with($v, ']') || false === $v = strrchr($v, ':')) { - $v = $this->isSecure() ? ':443' : ':80'; - } - $v = '0.0.0.0'.$v; - } - $forwardedValues[] = $v; - } - } - - if (null !== $ip) { - $clientValues = $this->normalizeAndFilterClientIps($clientValues, $ip); - $forwardedValues = $this->normalizeAndFilterClientIps($forwardedValues, $ip); - } - - if ($forwardedValues === $clientValues || !$clientValues) { - return $this->trustedValuesCache[$cacheKey] = $forwardedValues; - } - - if (!$forwardedValues) { - return $this->trustedValuesCache[$cacheKey] = $clientValues; - } - - if (!$this->isForwardedValid) { - return $this->trustedValuesCache[$cacheKey] = null !== $ip ? ['0.0.0.0', $ip] : []; - } - $this->isForwardedValid = false; - - throw new ConflictingHeadersException(sprintf('The request has both a trusted "%s" header and a trusted "%s" header, conflicting with each other. You should either configure your proxy to remove one of them, or configure your project to distrust the offending one.', self::TRUSTED_HEADERS[self::HEADER_FORWARDED], self::TRUSTED_HEADERS[$type])); - } - - private function normalizeAndFilterClientIps(array $clientIps, string $ip): array - { - if (!$clientIps) { - return []; - } - $clientIps[] = $ip; // Complete the IP chain with the IP the request actually came from - $firstTrustedIp = null; - - foreach ($clientIps as $key => $clientIp) { - if (strpos($clientIp, '.')) { - // Strip :port from IPv4 addresses. This is allowed in Forwarded - // and may occur in X-Forwarded-For. - $i = strpos($clientIp, ':'); - if ($i) { - $clientIps[$key] = $clientIp = substr($clientIp, 0, $i); - } - } elseif (str_starts_with($clientIp, '[')) { - // Strip brackets and :port from IPv6 addresses. - $i = strpos($clientIp, ']', 1); - $clientIps[$key] = $clientIp = substr($clientIp, 1, $i - 1); - } - - if (!filter_var($clientIp, \FILTER_VALIDATE_IP)) { - unset($clientIps[$key]); - - continue; - } - - if (IpUtils::checkIp($clientIp, self::$trustedProxies)) { - unset($clientIps[$key]); - - // Fallback to this when the client IP falls into the range of trusted proxies - $firstTrustedIp ??= $clientIp; - } - } - - // Now the IP chain contains only untrusted proxies and the client IP - return $clientIps ? array_reverse($clientIps) : [$firstTrustedIp]; - } - - /** - * Is this IIS with UrlRewriteModule? - * - * This method consumes, caches and removed the IIS_WasUrlRewritten env var, - * so we don't inherit it to sub-requests. - */ - private function isIisRewrite(): bool - { - if (1 === $this->server->getInt('IIS_WasUrlRewritten')) { - $this->isIisRewrite = true; - $this->server->remove('IIS_WasUrlRewritten'); - } - - return $this->isIisRewrite; - } -} diff --git a/docker/streamline-src/vendor/symfony/http-foundation/Session/Storage/MockArraySessionStorage.php b/docker/streamline-src/vendor/symfony/http-foundation/Session/Storage/MockArraySessionStorage.php deleted file mode 100644 index f02793d3..00000000 --- a/docker/streamline-src/vendor/symfony/http-foundation/Session/Storage/MockArraySessionStorage.php +++ /dev/null @@ -1,238 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpFoundation\Session\Storage; - -use Symfony\Component\HttpFoundation\Session\SessionBagInterface; - -/** - * MockArraySessionStorage mocks the session for unit tests. - * - * No PHP session is actually started since a session can be initialized - * and shutdown only once per PHP execution cycle. - * - * When doing functional testing, you should use MockFileSessionStorage instead. - * - * @author Fabien Potencier - * @author Bulat Shakirzyanov - * @author Drak - */ -class MockArraySessionStorage implements SessionStorageInterface -{ - /** - * @var string - */ - protected $id = ''; - - /** - * @var string - */ - protected $name; - - /** - * @var bool - */ - protected $started = false; - - /** - * @var bool - */ - protected $closed = false; - - /** - * @var array - */ - protected $data = []; - - /** - * @var MetadataBag - */ - protected $metadataBag; - - /** - * @var array|SessionBagInterface[] - */ - protected $bags = []; - - public function __construct(string $name = 'MOCKSESSID', ?MetadataBag $metaBag = null) - { - $this->name = $name; - $this->setMetadataBag($metaBag); - } - - /** - * @return void - */ - public function setSessionData(array $array) - { - $this->data = $array; - } - - public function start(): bool - { - if ($this->started) { - return true; - } - - if (empty($this->id)) { - $this->id = $this->generateId(); - } - - $this->loadSession(); - - return true; - } - - public function regenerate(bool $destroy = false, ?int $lifetime = null): bool - { - if (!$this->started) { - $this->start(); - } - - $this->metadataBag->stampNew($lifetime); - $this->id = $this->generateId(); - - return true; - } - - public function getId(): string - { - return $this->id; - } - - /** - * @return void - */ - public function setId(string $id) - { - if ($this->started) { - throw new \LogicException('Cannot set session ID after the session has started.'); - } - - $this->id = $id; - } - - public function getName(): string - { - return $this->name; - } - - /** - * @return void - */ - public function setName(string $name) - { - $this->name = $name; - } - - /** - * @return void - */ - public function save() - { - if (!$this->started || $this->closed) { - throw new \RuntimeException('Trying to save a session that was not started yet or was already closed.'); - } - // nothing to do since we don't persist the session data - $this->closed = false; - $this->started = false; - } - - /** - * @return void - */ - public function clear() - { - // clear out the bags - foreach ($this->bags as $bag) { - $bag->clear(); - } - - // clear out the session - $this->data = []; - - // reconnect the bags to the session - $this->loadSession(); - } - - /** - * @return void - */ - public function registerBag(SessionBagInterface $bag) - { - $this->bags[$bag->getName()] = $bag; - } - - public function getBag(string $name): SessionBagInterface - { - if (!isset($this->bags[$name])) { - throw new \InvalidArgumentException(sprintf('The SessionBagInterface "%s" is not registered.', $name)); - } - - if (!$this->started) { - $this->start(); - } - - return $this->bags[$name]; - } - - public function isStarted(): bool - { - return $this->started; - } - - /** - * @return void - */ - public function setMetadataBag(?MetadataBag $bag = null) - { - if (1 > \func_num_args()) { - trigger_deprecation('symfony/http-foundation', '6.2', 'Calling "%s()" without any arguments is deprecated, pass null explicitly instead.', __METHOD__); - } - $this->metadataBag = $bag ?? new MetadataBag(); - } - - /** - * Gets the MetadataBag. - */ - public function getMetadataBag(): MetadataBag - { - return $this->metadataBag; - } - - /** - * Generates a session ID. - * - * This doesn't need to be particularly cryptographically secure since this is just - * a mock. - */ - protected function generateId(): string - { - return bin2hex(random_bytes(16)); - } - - /** - * @return void - */ - protected function loadSession() - { - $bags = array_merge($this->bags, [$this->metadataBag]); - - foreach ($bags as $bag) { - $key = $bag->getStorageKey(); - $this->data[$key] ??= []; - $bag->initialize($this->data[$key]); - } - - $this->started = true; - $this->closed = false; - } -} diff --git a/docker/streamline-src/vendor/symfony/http-foundation/composer.json b/docker/streamline-src/vendor/symfony/http-foundation/composer.json deleted file mode 100644 index 732a011e..00000000 --- a/docker/streamline-src/vendor/symfony/http-foundation/composer.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "symfony/http-foundation", - "type": "library", - "description": "Defines an object-oriented layer for the HTTP specification", - "keywords": [], - "homepage": "https://symfony.com", - "license": "MIT", - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php83": "^1.27" - }, - "require-dev": { - "doctrine/dbal": "^2.13.1|^3|^4", - "predis/predis": "^1.1|^2.0", - "symfony/cache": "^6.4.12|^7.1.5", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0", - "symfony/mime": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/rate-limiter": "^5.4|^6.0|^7.0" - }, - "conflict": { - "symfony/cache": "<6.4.12|>=7.0,<7.1.5" - }, - "autoload": { - "psr-4": { "Symfony\\Component\\HttpFoundation\\": "" }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "minimum-stability": "dev" -} diff --git a/docker/streamline-src/vendor/symfony/http-kernel/Controller/ArgumentResolver/RequestPayloadValueResolver.php b/docker/streamline-src/vendor/symfony/http-kernel/Controller/ArgumentResolver/RequestPayloadValueResolver.php deleted file mode 100644 index f0f735da..00000000 --- a/docker/streamline-src/vendor/symfony/http-kernel/Controller/ArgumentResolver/RequestPayloadValueResolver.php +++ /dev/null @@ -1,199 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpKernel\Controller\ArgumentResolver; - -use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; -use Symfony\Component\HttpKernel\Attribute\MapQueryString; -use Symfony\Component\HttpKernel\Attribute\MapRequestPayload; -use Symfony\Component\HttpKernel\Controller\ValueResolverInterface; -use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata; -use Symfony\Component\HttpKernel\Event\ControllerArgumentsEvent; -use Symfony\Component\HttpKernel\Exception\HttpException; -use Symfony\Component\HttpKernel\KernelEvents; -use Symfony\Component\Serializer\Exception\NotEncodableValueException; -use Symfony\Component\Serializer\Exception\PartialDenormalizationException; -use Symfony\Component\Serializer\Exception\UnsupportedFormatException; -use Symfony\Component\Serializer\Normalizer\DenormalizerInterface; -use Symfony\Component\Serializer\SerializerInterface; -use Symfony\Component\Validator\ConstraintViolation; -use Symfony\Component\Validator\ConstraintViolationList; -use Symfony\Component\Validator\Exception\ValidationFailedException; -use Symfony\Component\Validator\Validator\ValidatorInterface; -use Symfony\Contracts\Translation\TranslatorInterface; - -/** - * @author Konstantin Myakshin - * - * @final - */ -class RequestPayloadValueResolver implements ValueResolverInterface, EventSubscriberInterface -{ - /** - * @see DenormalizerInterface::COLLECT_DENORMALIZATION_ERRORS - */ - private const CONTEXT_DENORMALIZE = [ - 'collect_denormalization_errors' => true, - ]; - - /** - * @see DenormalizerInterface::COLLECT_DENORMALIZATION_ERRORS - */ - private const CONTEXT_DESERIALIZE = [ - 'collect_denormalization_errors' => true, - ]; - - public function __construct( - private readonly SerializerInterface&DenormalizerInterface $serializer, - private readonly ?ValidatorInterface $validator = null, - private readonly ?TranslatorInterface $translator = null, - ) { - } - - public function resolve(Request $request, ArgumentMetadata $argument): iterable - { - $attribute = $argument->getAttributesOfType(MapQueryString::class, ArgumentMetadata::IS_INSTANCEOF)[0] - ?? $argument->getAttributesOfType(MapRequestPayload::class, ArgumentMetadata::IS_INSTANCEOF)[0] - ?? null; - - if (!$attribute) { - return []; - } - - if ($argument->isVariadic()) { - throw new \LogicException(sprintf('Mapping variadic argument "$%s" is not supported.', $argument->getName())); - } - - $attribute->metadata = $argument; - - return [$attribute]; - } - - public function onKernelControllerArguments(ControllerArgumentsEvent $event): void - { - $arguments = $event->getArguments(); - - foreach ($arguments as $i => $argument) { - if ($argument instanceof MapQueryString) { - $payloadMapper = 'mapQueryString'; - $validationFailedCode = $argument->validationFailedStatusCode; - } elseif ($argument instanceof MapRequestPayload) { - $payloadMapper = 'mapRequestPayload'; - $validationFailedCode = $argument->validationFailedStatusCode; - } else { - continue; - } - $request = $event->getRequest(); - - if (!$type = $argument->metadata->getType()) { - throw new \LogicException(sprintf('Could not resolve the "$%s" controller argument: argument should be typed.', $argument->metadata->getName())); - } - - if ($this->validator) { - $violations = new ConstraintViolationList(); - try { - $payload = $this->$payloadMapper($request, $type, $argument); - } catch (PartialDenormalizationException $e) { - $trans = $this->translator ? $this->translator->trans(...) : fn ($m, $p) => strtr($m, $p); - foreach ($e->getErrors() as $error) { - $parameters = []; - $template = 'This value was of an unexpected type.'; - if ($expectedTypes = $error->getExpectedTypes()) { - $template = 'This value should be of type {{ type }}.'; - $parameters['{{ type }}'] = implode('|', $expectedTypes); - } - if ($error->canUseMessageForUser()) { - $parameters['hint'] = $error->getMessage(); - } - $message = $trans($template, $parameters, 'validators'); - $violations->add(new ConstraintViolation($message, $template, $parameters, null, $error->getPath(), null)); - } - $payload = $e->getData(); - } - - if (null !== $payload && !\count($violations)) { - $violations->addAll($this->validator->validate($payload, null, $argument->validationGroups ?? null)); - } - - if (\count($violations)) { - throw new HttpException($validationFailedCode, implode("\n", array_map(static fn ($e) => $e->getMessage(), iterator_to_array($violations))), new ValidationFailedException($payload, $violations)); - } - } else { - try { - $payload = $this->$payloadMapper($request, $type, $argument); - } catch (PartialDenormalizationException $e) { - throw new HttpException($validationFailedCode, implode("\n", array_map(static fn ($e) => $e->getMessage(), $e->getErrors())), $e); - } - } - - if (null === $payload) { - $payload = match (true) { - $argument->metadata->hasDefaultValue() => $argument->metadata->getDefaultValue(), - $argument->metadata->isNullable() => null, - default => throw new HttpException($validationFailedCode) - }; - } - - $arguments[$i] = $payload; - } - - $event->setArguments($arguments); - } - - public static function getSubscribedEvents(): array - { - return [ - KernelEvents::CONTROLLER_ARGUMENTS => 'onKernelControllerArguments', - ]; - } - - private function mapQueryString(Request $request, string $type, MapQueryString $attribute): ?object - { - if (!$data = $request->query->all()) { - return null; - } - - return $this->serializer->denormalize($data, $type, 'csv', $attribute->serializationContext + self::CONTEXT_DENORMALIZE); - } - - private function mapRequestPayload(Request $request, string $type, MapRequestPayload $attribute): ?object - { - if (null === $format = $request->getContentTypeFormat()) { - throw new HttpException(Response::HTTP_UNSUPPORTED_MEDIA_TYPE, 'Unsupported format.'); - } - - if ($attribute->acceptFormat && !\in_array($format, (array) $attribute->acceptFormat, true)) { - throw new HttpException(Response::HTTP_UNSUPPORTED_MEDIA_TYPE, sprintf('Unsupported format, expects "%s", but "%s" given.', implode('", "', (array) $attribute->acceptFormat), $format)); - } - - if ($data = $request->request->all()) { - return $this->serializer->denormalize($data, $type, 'csv', $attribute->serializationContext + self::CONTEXT_DENORMALIZE); - } - - if ('' === $data = $request->getContent()) { - return null; - } - - if ('form' === $format) { - throw new HttpException(Response::HTTP_BAD_REQUEST, 'Request payload contains invalid "form" data.'); - } - - try { - return $this->serializer->deserialize($data, $type, $format, self::CONTEXT_DESERIALIZE + $attribute->serializationContext); - } catch (UnsupportedFormatException $e) { - throw new HttpException(Response::HTTP_UNSUPPORTED_MEDIA_TYPE, sprintf('Unsupported format: "%s".', $format), $e); - } catch (NotEncodableValueException $e) { - throw new HttpException(Response::HTTP_BAD_REQUEST, sprintf('Request payload contains invalid "%s" data.', $format), $e); - } - } -} diff --git a/docker/streamline-src/vendor/symfony/http-kernel/Controller/ControllerResolver.php b/docker/streamline-src/vendor/symfony/http-kernel/Controller/ControllerResolver.php deleted file mode 100644 index 8424b02c..00000000 --- a/docker/streamline-src/vendor/symfony/http-kernel/Controller/ControllerResolver.php +++ /dev/null @@ -1,279 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpKernel\Controller; - -use Psr\Log\LoggerInterface; -use Symfony\Component\HttpFoundation\Exception\BadRequestException; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpKernel\Attribute\AsController; - -/** - * This implementation uses the '_controller' request attribute to determine - * the controller to execute. - * - * @author Fabien Potencier - * @author Tobias Schultze - */ -class ControllerResolver implements ControllerResolverInterface -{ - private ?LoggerInterface $logger; - private array $allowedControllerTypes = []; - private array $allowedControllerAttributes = [AsController::class => AsController::class]; - - public function __construct(?LoggerInterface $logger = null) - { - $this->logger = $logger; - } - - /** - * @param array $types - * @param array $attributes - */ - public function allowControllers(array $types = [], array $attributes = []): void - { - foreach ($types as $type) { - $this->allowedControllerTypes[$type] = $type; - } - - foreach ($attributes as $attribute) { - $this->allowedControllerAttributes[$attribute] = $attribute; - } - } - - /** - * @throws BadRequestException when the request has attribute "_check_controller_is_allowed" set to true and the controller is not allowed - */ - public function getController(Request $request): callable|false - { - if (!$controller = $request->attributes->get('_controller')) { - $this->logger?->warning('Unable to look for the controller as the "_controller" parameter is missing.'); - - return false; - } - - if (\is_array($controller)) { - if (isset($controller[0]) && \is_string($controller[0]) && isset($controller[1])) { - try { - $controller[0] = $this->instantiateController($controller[0]); - } catch (\Error|\LogicException $e) { - if (\is_callable($controller)) { - return $this->checkController($request, $controller); - } - - throw $e; - } - } - - if (!\is_callable($controller)) { - throw new \InvalidArgumentException(sprintf('The controller for URI "%s" is not callable: ', $request->getPathInfo()).$this->getControllerError($controller)); - } - - return $this->checkController($request, $controller); - } - - if (\is_object($controller)) { - if (!\is_callable($controller)) { - throw new \InvalidArgumentException(sprintf('The controller for URI "%s" is not callable: ', $request->getPathInfo()).$this->getControllerError($controller)); - } - - return $this->checkController($request, $controller); - } - - if (\function_exists($controller)) { - return $this->checkController($request, $controller); - } - - try { - $callable = $this->createController($controller); - } catch (\InvalidArgumentException $e) { - throw new \InvalidArgumentException(sprintf('The controller for URI "%s" is not callable: ', $request->getPathInfo()).$e->getMessage(), 0, $e); - } - - if (!\is_callable($callable)) { - throw new \InvalidArgumentException(sprintf('The controller for URI "%s" is not callable: ', $request->getPathInfo()).$this->getControllerError($callable)); - } - - return $this->checkController($request, $callable); - } - - /** - * Returns a callable for the given controller. - * - * @throws \InvalidArgumentException When the controller cannot be created - */ - protected function createController(string $controller): callable - { - if (!str_contains($controller, '::')) { - $controller = $this->instantiateController($controller); - - if (!\is_callable($controller)) { - throw new \InvalidArgumentException($this->getControllerError($controller)); - } - - return $controller; - } - - [$class, $method] = explode('::', $controller, 2); - - try { - $controller = [$this->instantiateController($class), $method]; - } catch (\Error|\LogicException $e) { - try { - if ((new \ReflectionMethod($class, $method))->isStatic()) { - return $class.'::'.$method; - } - } catch (\ReflectionException) { - throw $e; - } - - throw $e; - } - - if (!\is_callable($controller)) { - throw new \InvalidArgumentException($this->getControllerError($controller)); - } - - return $controller; - } - - /** - * Returns an instantiated controller. - */ - protected function instantiateController(string $class): object - { - return new $class(); - } - - private function getControllerError(mixed $callable): string - { - if (\is_string($callable)) { - if (str_contains($callable, '::')) { - $callable = explode('::', $callable, 2); - } else { - return sprintf('Function "%s" does not exist.', $callable); - } - } - - if (\is_object($callable)) { - $availableMethods = $this->getClassMethodsWithoutMagicMethods($callable); - $alternativeMsg = $availableMethods ? sprintf(' or use one of the available methods: "%s"', implode('", "', $availableMethods)) : ''; - - return sprintf('Controller class "%s" cannot be called without a method name. You need to implement "__invoke"%s.', get_debug_type($callable), $alternativeMsg); - } - - if (!\is_array($callable)) { - return sprintf('Invalid type for controller given, expected string, array or object, got "%s".', get_debug_type($callable)); - } - - if (!isset($callable[0]) || !isset($callable[1]) || 2 !== \count($callable)) { - return 'Invalid array callable, expected [controller, method].'; - } - - [$controller, $method] = $callable; - - if (\is_string($controller) && !class_exists($controller)) { - return sprintf('Class "%s" does not exist.', $controller); - } - - $className = \is_object($controller) ? get_debug_type($controller) : $controller; - - if (method_exists($controller, $method)) { - return sprintf('Method "%s" on class "%s" should be public and non-abstract.', $method, $className); - } - - $collection = $this->getClassMethodsWithoutMagicMethods($controller); - - $alternatives = []; - - foreach ($collection as $item) { - $lev = levenshtein($method, $item); - - if ($lev <= \strlen($method) / 3 || str_contains($item, $method)) { - $alternatives[] = $item; - } - } - - asort($alternatives); - - $message = sprintf('Expected method "%s" on class "%s"', $method, $className); - - if (\count($alternatives) > 0) { - $message .= sprintf(', did you mean "%s"?', implode('", "', $alternatives)); - } else { - $message .= sprintf('. Available methods: "%s".', implode('", "', $collection)); - } - - return $message; - } - - private function getClassMethodsWithoutMagicMethods($classOrObject): array - { - $methods = get_class_methods($classOrObject); - - return array_filter($methods, fn (string $method) => 0 !== strncmp($method, '__', 2)); - } - - private function checkController(Request $request, callable $controller): callable - { - if (!$request->attributes->get('_check_controller_is_allowed', false)) { - return $controller; - } - - $r = null; - - if (\is_array($controller)) { - [$class, $name] = $controller; - $name = (\is_string($class) ? $class : $class::class).'::'.$name; - } elseif (\is_object($controller) && !$controller instanceof \Closure) { - $class = $controller; - $name = $class::class.'::__invoke'; - } else { - $r = new \ReflectionFunction($controller); - $name = $r->name; - - if (str_contains($name, '{closure')) { - $name = $class = \Closure::class; - } elseif ($class = \PHP_VERSION_ID >= 80111 ? $r->getClosureCalledClass() : $r->getClosureScopeClass()) { - $class = $class->name; - $name = $class.'::'.$name; - } - } - - if ($class) { - foreach ($this->allowedControllerTypes as $type) { - if (is_a($class, $type, true)) { - return $controller; - } - } - } - - $r ??= new \ReflectionClass($class); - - foreach ($r->getAttributes() as $attribute) { - if (isset($this->allowedControllerAttributes[$attribute->getName()])) { - return $controller; - } - } - - if (str_contains($name, '@anonymous')) { - $name = preg_replace_callback('/[a-zA-Z_\x7f-\xff][\\\\a-zA-Z0-9_\x7f-\xff]*+@anonymous\x00.*?\.php(?:0x?|:[0-9]++\$)?[0-9a-fA-F]++/', fn ($m) => class_exists($m[0], false) ? (get_parent_class($m[0]) ?: key(class_implements($m[0])) ?: 'class').'@anonymous' : $m[0], $name); - } - - if (-1 === $request->attributes->get('_check_controller_is_allowed')) { - trigger_deprecation('symfony/http-kernel', '6.4', 'Callable "%s()" is not allowed as a controller. Did you miss tagging it with "#[AsController]" or registering its type with "%s::allowControllers()"?', $name, self::class); - - return $controller; - } - - throw new BadRequestException(sprintf('Callable "%s()" is not allowed as a controller. Did you miss tagging it with "#[AsController]" or registering its type with "%s::allowControllers()"?', $name, self::class)); - } -} diff --git a/docker/streamline-src/vendor/symfony/http-kernel/DataCollector/DataCollector.php b/docker/streamline-src/vendor/symfony/http-kernel/DataCollector/DataCollector.php deleted file mode 100644 index fdc73de0..00000000 --- a/docker/streamline-src/vendor/symfony/http-kernel/DataCollector/DataCollector.php +++ /dev/null @@ -1,125 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpKernel\DataCollector; - -use Symfony\Component\VarDumper\Caster\CutStub; -use Symfony\Component\VarDumper\Caster\ReflectionCaster; -use Symfony\Component\VarDumper\Cloner\ClonerInterface; -use Symfony\Component\VarDumper\Cloner\Data; -use Symfony\Component\VarDumper\Cloner\Stub; -use Symfony\Component\VarDumper\Cloner\VarCloner; - -/** - * DataCollector. - * - * Children of this class must store the collected data in the data property. - * - * @author Fabien Potencier - * @author Bernhard Schussek - */ -abstract class DataCollector implements DataCollectorInterface -{ - /** - * @var array|Data - */ - protected $data = []; - - private ClonerInterface $cloner; - - /** - * Converts the variable into a serializable Data instance. - * - * This array can be displayed in the template using - * the VarDumper component. - */ - protected function cloneVar(mixed $var): Data - { - if ($var instanceof Data) { - return $var; - } - if (!isset($this->cloner)) { - $this->cloner = new VarCloner(); - $this->cloner->setMaxItems(-1); - $this->cloner->addCasters($this->getCasters()); - } - - return $this->cloner->cloneVar($var); - } - - /** - * @return callable[] The casters to add to the cloner - */ - protected function getCasters() - { - $casters = [ - '*' => function ($v, array $a, Stub $s, $isNested) { - if (!$v instanceof Stub) { - $b = $a; - foreach ($a as $k => $v) { - if (!\is_object($v) || $v instanceof \DateTimeInterface || $v instanceof Stub) { - continue; - } - - try { - $a[$k] = $s = new CutStub($v); - - if ($b[$k] === $s) { - // we've hit a non-typed reference - $a[$k] = $v; - } - } catch (\TypeError $e) { - // we've hit a typed reference - } - } - } - - return $a; - }, - ] + ReflectionCaster::UNSET_CLOSURE_FILE_INFO; - - return $casters; - } - - public function __sleep(): array - { - return ['data']; - } - - /** - * @return void - */ - public function __wakeup() - { - } - - /** - * @internal to prevent implementing \Serializable - */ - final protected function serialize(): void - { - } - - /** - * @internal to prevent implementing \Serializable - */ - final protected function unserialize(string $data): void - { - } - - /** - * @return void - */ - public function reset() - { - $this->data = []; - } -} diff --git a/docker/streamline-src/vendor/symfony/http-kernel/DataCollector/RequestDataCollector.php b/docker/streamline-src/vendor/symfony/http-kernel/DataCollector/RequestDataCollector.php deleted file mode 100644 index 12951b49..00000000 --- a/docker/streamline-src/vendor/symfony/http-kernel/DataCollector/RequestDataCollector.php +++ /dev/null @@ -1,535 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpKernel\DataCollector; - -use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\HttpFoundation\Cookie; -use Symfony\Component\HttpFoundation\ParameterBag; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\RequestStack; -use Symfony\Component\HttpFoundation\Response; -use Symfony\Component\HttpFoundation\Session\SessionBagInterface; -use Symfony\Component\HttpFoundation\Session\SessionInterface; -use Symfony\Component\HttpKernel\Event\ControllerEvent; -use Symfony\Component\HttpKernel\Event\ResponseEvent; -use Symfony\Component\HttpKernel\KernelEvents; -use Symfony\Component\VarDumper\Cloner\Data; - -/** - * @author Fabien Potencier - * - * @final - */ -class RequestDataCollector extends DataCollector implements EventSubscriberInterface, LateDataCollectorInterface -{ - /** - * @var \SplObjectStorage - */ - private \SplObjectStorage $controllers; - private array $sessionUsages = []; - private ?RequestStack $requestStack; - - public function __construct(?RequestStack $requestStack = null) - { - $this->controllers = new \SplObjectStorage(); - $this->requestStack = $requestStack; - } - - public function collect(Request $request, Response $response, ?\Throwable $exception = null): void - { - // attributes are serialized and as they can be anything, they need to be converted to strings. - $attributes = []; - $route = ''; - foreach ($request->attributes->all() as $key => $value) { - if ('_route' === $key) { - $route = \is_object($value) ? $value->getPath() : $value; - $attributes[$key] = $route; - } else { - $attributes[$key] = $value; - } - } - - $content = $request->getContent(); - - $sessionMetadata = []; - $sessionAttributes = []; - $flashes = []; - if (!$request->attributes->getBoolean('_stateless') && $request->hasSession()) { - $session = $request->getSession(); - if ($session->isStarted()) { - $sessionMetadata['Created'] = date(\DATE_RFC822, $session->getMetadataBag()->getCreated()); - $sessionMetadata['Last used'] = date(\DATE_RFC822, $session->getMetadataBag()->getLastUsed()); - $sessionMetadata['Lifetime'] = $session->getMetadataBag()->getLifetime(); - $sessionAttributes = $session->all(); - $flashes = $session->getFlashBag()->peekAll(); - } - } - - $statusCode = $response->getStatusCode(); - - $responseCookies = []; - foreach ($response->headers->getCookies() as $cookie) { - $responseCookies[$cookie->getName()] = $cookie; - } - - $dotenvVars = []; - foreach (explode(',', $_SERVER['SYMFONY_DOTENV_VARS'] ?? $_ENV['SYMFONY_DOTENV_VARS'] ?? '') as $name) { - if ('' !== $name && isset($_ENV[$name])) { - $dotenvVars[$name] = $_ENV[$name]; - } - } - - $this->data = [ - 'method' => $request->getMethod(), - 'format' => $request->getRequestFormat(), - 'content_type' => $response->headers->get('Content-Type', 'text/html'), - 'status_text' => Response::$statusTexts[$statusCode] ?? '', - 'status_code' => $statusCode, - 'request_query' => $request->query->all(), - 'request_request' => $request->request->all(), - 'request_files' => $request->files->all(), - 'request_headers' => $request->headers->all(), - 'request_server' => $request->server->all(), - 'request_cookies' => $request->cookies->all(), - 'request_attributes' => $attributes, - 'route' => $route, - 'response_headers' => $response->headers->all(), - 'response_cookies' => $responseCookies, - 'session_metadata' => $sessionMetadata, - 'session_attributes' => $sessionAttributes, - 'session_usages' => array_values($this->sessionUsages), - 'stateless_check' => $this->requestStack?->getMainRequest()?->attributes->get('_stateless') ?? false, - 'flashes' => $flashes, - 'path_info' => $request->getPathInfo(), - 'controller' => 'n/a', - 'locale' => $request->getLocale(), - 'dotenv_vars' => $dotenvVars, - ]; - - if (isset($this->data['request_headers']['php-auth-pw'])) { - $this->data['request_headers']['php-auth-pw'] = '******'; - } - - if (isset($this->data['request_server']['PHP_AUTH_PW'])) { - $this->data['request_server']['PHP_AUTH_PW'] = '******'; - } - - if (isset($this->data['request_request']['_password'])) { - $encodedPassword = rawurlencode($this->data['request_request']['_password']); - $content = str_replace('_password='.$encodedPassword, '_password=******', $content); - $this->data['request_request']['_password'] = '******'; - } - - $this->data['content'] = $content; - - foreach ($this->data as $key => $value) { - if (!\is_array($value)) { - continue; - } - if ('request_headers' === $key || 'response_headers' === $key) { - $this->data[$key] = array_map(fn ($v) => isset($v[0]) && !isset($v[1]) ? $v[0] : $v, $value); - } - } - - if (isset($this->controllers[$request])) { - $this->data['controller'] = $this->parseController($this->controllers[$request]); - unset($this->controllers[$request]); - } - - if ($request->attributes->has('_redirected') && $redirectCookie = $request->cookies->get('sf_redirect')) { - $this->data['redirect'] = json_decode($redirectCookie, true); - - $response->headers->clearCookie('sf_redirect'); - } - - if ($response->isRedirect()) { - $response->headers->setCookie(new Cookie( - 'sf_redirect', - json_encode([ - 'token' => $response->headers->get('x-debug-token'), - 'route' => $request->attributes->get('_route', 'n/a'), - 'method' => $request->getMethod(), - 'controller' => $this->parseController($request->attributes->get('_controller')), - 'status_code' => $statusCode, - 'status_text' => Response::$statusTexts[$statusCode], - ]), - 0, '/', null, $request->isSecure(), true, false, 'lax' - )); - } - - $this->data['identifier'] = $this->data['route'] ?: (\is_array($this->data['controller']) ? $this->data['controller']['class'].'::'.$this->data['controller']['method'].'()' : $this->data['controller']); - - if ($response->headers->has('x-previous-debug-token')) { - $this->data['forward_token'] = $response->headers->get('x-previous-debug-token'); - } - } - - public function lateCollect(): void - { - $this->data = $this->cloneVar($this->data); - } - - public function reset(): void - { - parent::reset(); - $this->controllers = new \SplObjectStorage(); - $this->sessionUsages = []; - } - - public function getMethod(): string - { - return $this->data['method']; - } - - public function getPathInfo(): string - { - return $this->data['path_info']; - } - - /** - * @return ParameterBag - */ - public function getRequestRequest() - { - return new ParameterBag($this->data['request_request']->getValue()); - } - - /** - * @return ParameterBag - */ - public function getRequestQuery() - { - return new ParameterBag($this->data['request_query']->getValue()); - } - - /** - * @return ParameterBag - */ - public function getRequestFiles() - { - return new ParameterBag($this->data['request_files']->getValue()); - } - - /** - * @return ParameterBag - */ - public function getRequestHeaders() - { - return new ParameterBag($this->data['request_headers']->getValue()); - } - - /** - * @return ParameterBag - */ - public function getRequestServer(bool $raw = false) - { - return new ParameterBag($this->data['request_server']->getValue($raw)); - } - - /** - * @return ParameterBag - */ - public function getRequestCookies(bool $raw = false) - { - return new ParameterBag($this->data['request_cookies']->getValue($raw)); - } - - /** - * @return ParameterBag - */ - public function getRequestAttributes() - { - return new ParameterBag($this->data['request_attributes']->getValue()); - } - - /** - * @return ParameterBag - */ - public function getResponseHeaders() - { - return new ParameterBag($this->data['response_headers']->getValue()); - } - - /** - * @return ParameterBag - */ - public function getResponseCookies() - { - return new ParameterBag($this->data['response_cookies']->getValue()); - } - - public function getSessionMetadata(): array - { - return $this->data['session_metadata']->getValue(); - } - - public function getSessionAttributes(): array - { - return $this->data['session_attributes']->getValue(); - } - - public function getStatelessCheck(): bool - { - return $this->data['stateless_check']; - } - - public function getSessionUsages(): Data|array - { - return $this->data['session_usages']; - } - - public function getFlashes(): array - { - return $this->data['flashes']->getValue(); - } - - /** - * @return string|resource - */ - public function getContent() - { - return $this->data['content']; - } - - /** - * @return bool - */ - public function isJsonRequest() - { - return 1 === preg_match('{^application/(?:\w+\++)*json$}i', $this->data['request_headers']['content-type']); - } - - /** - * @return string|null - */ - public function getPrettyJson() - { - $decoded = json_decode($this->getContent()); - - return \JSON_ERROR_NONE === json_last_error() ? json_encode($decoded, \JSON_PRETTY_PRINT) : null; - } - - public function getContentType(): string - { - return $this->data['content_type']; - } - - public function getStatusText(): string - { - return $this->data['status_text']; - } - - public function getStatusCode(): int - { - return $this->data['status_code']; - } - - public function getFormat(): string - { - return $this->data['format']; - } - - public function getLocale(): string - { - return $this->data['locale']; - } - - /** - * @return ParameterBag - */ - public function getDotenvVars() - { - return new ParameterBag($this->data['dotenv_vars']->getValue()); - } - - /** - * Gets the route name. - * - * The _route request attributes is automatically set by the Router Matcher. - */ - public function getRoute(): string - { - return $this->data['route']; - } - - public function getIdentifier(): string - { - return $this->data['identifier']; - } - - /** - * Gets the route parameters. - * - * The _route_params request attributes is automatically set by the RouterListener. - */ - public function getRouteParams(): array - { - return isset($this->data['request_attributes']['_route_params']) ? $this->data['request_attributes']['_route_params']->getValue() : []; - } - - /** - * Gets the parsed controller. - * - * @return array|string|Data The controller as a string or array of data - * with keys 'class', 'method', 'file' and 'line' - */ - public function getController(): array|string|Data - { - return $this->data['controller']; - } - - /** - * Gets the previous request attributes. - * - * @return array|Data|false A legacy array of data from the previous redirection response - * or false otherwise - */ - public function getRedirect(): array|Data|false - { - return $this->data['redirect'] ?? false; - } - - public function getForwardToken(): ?string - { - return $this->data['forward_token'] ?? null; - } - - public function onKernelController(ControllerEvent $event): void - { - $this->controllers[$event->getRequest()] = $event->getController(); - } - - public function onKernelResponse(ResponseEvent $event): void - { - if (!$event->isMainRequest()) { - return; - } - - if ($event->getRequest()->cookies->has('sf_redirect')) { - $event->getRequest()->attributes->set('_redirected', true); - } - } - - public static function getSubscribedEvents(): array - { - return [ - KernelEvents::CONTROLLER => 'onKernelController', - KernelEvents::RESPONSE => 'onKernelResponse', - ]; - } - - public function getName(): string - { - return 'request'; - } - - public function collectSessionUsage(): void - { - $trace = debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS); - - $traceEndIndex = \count($trace) - 1; - for ($i = $traceEndIndex; $i > 0; --$i) { - if (null !== ($class = $trace[$i]['class'] ?? null) && (is_subclass_of($class, SessionInterface::class) || is_subclass_of($class, SessionBagInterface::class))) { - $traceEndIndex = $i; - break; - } - } - - if ((\count($trace) - 1) === $traceEndIndex) { - return; - } - - // Remove part of the backtrace that belongs to session only - array_splice($trace, 0, $traceEndIndex); - - // Merge identical backtraces generated by internal call reports - $name = sprintf('%s:%s', $trace[1]['class'] ?? $trace[0]['file'], $trace[0]['line']); - if (!\array_key_exists($name, $this->sessionUsages)) { - $this->sessionUsages[$name] = [ - 'name' => $name, - 'file' => $trace[0]['file'], - 'line' => $trace[0]['line'], - 'trace' => $trace, - ]; - } - } - - /** - * @return array|string An array of controller data or a simple string - */ - private function parseController(array|object|string|null $controller): array|string - { - if (\is_string($controller) && str_contains($controller, '::')) { - $controller = explode('::', $controller); - } - - if (\is_array($controller)) { - try { - $r = new \ReflectionMethod($controller[0], $controller[1]); - - return [ - 'class' => \is_object($controller[0]) ? get_debug_type($controller[0]) : $controller[0], - 'method' => $controller[1], - 'file' => $r->getFileName(), - 'line' => $r->getStartLine(), - ]; - } catch (\ReflectionException) { - if (\is_callable($controller)) { - // using __call or __callStatic - return [ - 'class' => \is_object($controller[0]) ? get_debug_type($controller[0]) : $controller[0], - 'method' => $controller[1], - 'file' => 'n/a', - 'line' => 'n/a', - ]; - } - } - } - - if ($controller instanceof \Closure) { - $r = new \ReflectionFunction($controller); - - $controller = [ - 'class' => $r->getName(), - 'method' => null, - 'file' => $r->getFileName(), - 'line' => $r->getStartLine(), - ]; - - if (str_contains($r->name, '{closure')) { - return $controller; - } - $controller['method'] = $r->name; - - if ($class = \PHP_VERSION_ID >= 80111 ? $r->getClosureCalledClass() : $r->getClosureScopeClass()) { - $controller['class'] = $class->name; - } else { - return $r->name; - } - - return $controller; - } - - if (\is_object($controller)) { - $r = new \ReflectionClass($controller); - - return [ - 'class' => $r->getName(), - 'method' => null, - 'file' => $r->getFileName(), - 'line' => $r->getStartLine(), - ]; - } - - return \is_string($controller) ? $controller : 'n/a'; - } -} diff --git a/docker/streamline-src/vendor/symfony/http-kernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php b/docker/streamline-src/vendor/symfony/http-kernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php deleted file mode 100644 index 65bf1ef4..00000000 --- a/docker/streamline-src/vendor/symfony/http-kernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php +++ /dev/null @@ -1,240 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpKernel\DependencyInjection; - -use Symfony\Component\DependencyInjection\Attribute\Autowire; -use Symfony\Component\DependencyInjection\Attribute\AutowireCallable; -use Symfony\Component\DependencyInjection\Attribute\Target; -use Symfony\Component\DependencyInjection\ChildDefinition; -use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; -use Symfony\Component\DependencyInjection\Compiler\ServiceLocatorTagPass; -use Symfony\Component\DependencyInjection\ContainerBuilder; -use Symfony\Component\DependencyInjection\ContainerInterface; -use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; -use Symfony\Component\DependencyInjection\Reference; -use Symfony\Component\DependencyInjection\TypedReference; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; -use Symfony\Component\HttpFoundation\Session\SessionInterface; -use Symfony\Component\VarExporter\ProxyHelper; - -/** - * Creates the service-locators required by ServiceValueResolver. - * - * @author Nicolas Grekas - */ -class RegisterControllerArgumentLocatorsPass implements CompilerPassInterface -{ - /** - * @return void - */ - public function process(ContainerBuilder $container) - { - if (!$container->hasDefinition('argument_resolver.service') && !$container->hasDefinition('argument_resolver.not_tagged_controller')) { - return; - } - - $parameterBag = $container->getParameterBag(); - $controllers = []; - $controllerClasses = []; - - $publicAliases = []; - foreach ($container->getAliases() as $id => $alias) { - if ($alias->isPublic() && !$alias->isPrivate()) { - $publicAliases[(string) $alias][] = $id; - } - } - - $emptyAutowireAttributes = class_exists(Autowire::class) ? null : []; - - foreach ($container->findTaggedServiceIds('controller.service_arguments', true) as $id => $tags) { - $def = $container->getDefinition($id); - $def->setPublic(true); - $def->setLazy(false); - $class = $def->getClass(); - $autowire = $def->isAutowired(); - $bindings = $def->getBindings(); - - // resolve service class, taking parent definitions into account - while ($def instanceof ChildDefinition) { - $def = $container->findDefinition($def->getParent()); - $class = $class ?: $def->getClass(); - $bindings += $def->getBindings(); - } - $class = $parameterBag->resolveValue($class); - - if (!$r = $container->getReflectionClass($class)) { - throw new InvalidArgumentException(sprintf('Class "%s" used for service "%s" cannot be found.', $class, $id)); - } - - $controllerClasses[] = $class; - - // get regular public methods - $methods = []; - $arguments = []; - foreach ($r->getMethods(\ReflectionMethod::IS_PUBLIC) as $r) { - if ('setContainer' === $r->name) { - continue; - } - if (!$r->isConstructor() && !$r->isDestructor() && !$r->isAbstract()) { - $methods[strtolower($r->name)] = [$r, $r->getParameters()]; - } - } - - // validate and collect explicit per-actions and per-arguments service references - foreach ($tags as $attributes) { - if (!isset($attributes['action']) && !isset($attributes['argument']) && !isset($attributes['id'])) { - $autowire = true; - continue; - } - foreach (['action', 'argument', 'id'] as $k) { - if (!isset($attributes[$k][0])) { - throw new InvalidArgumentException(sprintf('Missing "%s" attribute on tag "controller.service_arguments" %s for service "%s".', $k, json_encode($attributes, \JSON_UNESCAPED_UNICODE), $id)); - } - } - if (!isset($methods[$action = strtolower($attributes['action'])])) { - throw new InvalidArgumentException(sprintf('Invalid "action" attribute on tag "controller.service_arguments" for service "%s": no public "%s()" method found on class "%s".', $id, $attributes['action'], $class)); - } - [$r, $parameters] = $methods[$action]; - $found = false; - - foreach ($parameters as $p) { - if ($attributes['argument'] === $p->name) { - if (!isset($arguments[$r->name][$p->name])) { - $arguments[$r->name][$p->name] = $attributes['id']; - } - $found = true; - break; - } - } - - if (!$found) { - throw new InvalidArgumentException(sprintf('Invalid "controller.service_arguments" tag for service "%s": method "%s()" has no "%s" argument on class "%s".', $id, $r->name, $attributes['argument'], $class)); - } - } - - foreach ($methods as [$r, $parameters]) { - /** @var \ReflectionMethod $r */ - - // create a per-method map of argument-names to service/type-references - $args = []; - foreach ($parameters as $p) { - /** @var \ReflectionParameter $p */ - $type = preg_replace('/(^|[(|&])\\\\/', '\1', $target = ltrim(ProxyHelper::exportType($p) ?? '', '?')); - $invalidBehavior = ContainerInterface::IGNORE_ON_INVALID_REFERENCE; - $autowireAttributes = $autowire ? $emptyAutowireAttributes : []; - $parsedName = $p->name; - $k = null; - - if (isset($arguments[$r->name][$p->name])) { - $target = $arguments[$r->name][$p->name]; - if ('?' !== $target[0]) { - $invalidBehavior = ContainerInterface::RUNTIME_EXCEPTION_ON_INVALID_REFERENCE; - } elseif ('' === $target = (string) substr($target, 1)) { - throw new InvalidArgumentException(sprintf('A "controller.service_arguments" tag must have non-empty "id" attributes for service "%s".', $id)); - } elseif ($p->allowsNull() && !$p->isOptional()) { - $invalidBehavior = ContainerInterface::NULL_ON_INVALID_REFERENCE; - } - } elseif (isset($bindings[$bindingName = $type.' $'.$name = Target::parseName($p, $k, $parsedName)]) - || isset($bindings[$bindingName = $type.' $'.$parsedName]) - || isset($bindings[$bindingName = '$'.$name]) - || isset($bindings[$bindingName = $type]) - ) { - $binding = $bindings[$bindingName]; - - [$bindingValue, $bindingId, , $bindingType, $bindingFile] = $binding->getValues(); - $binding->setValues([$bindingValue, $bindingId, true, $bindingType, $bindingFile]); - - $args[$p->name] = $bindingValue; - - continue; - } elseif (!$autowire || (!($autowireAttributes ??= $p->getAttributes(Autowire::class, \ReflectionAttribute::IS_INSTANCEOF)) && (!$type || '\\' !== $target[0]))) { - continue; - } elseif (is_subclass_of($type, \UnitEnum::class)) { - // do not attempt to register enum typed arguments if not already present in bindings - continue; - } elseif (!$p->allowsNull()) { - $invalidBehavior = ContainerInterface::RUNTIME_EXCEPTION_ON_INVALID_REFERENCE; - } - - if (Request::class === $type || SessionInterface::class === $type || Response::class === $type) { - continue; - } - - if ($autowireAttributes) { - $attribute = $autowireAttributes[0]->newInstance(); - $value = $parameterBag->resolveValue($attribute->value); - - if ($attribute instanceof AutowireCallable) { - $value = $attribute->buildDefinition($value, $type, $p); - } - - if ($value instanceof Reference) { - $args[$p->name] = $type ? new TypedReference($value, $type, $invalidBehavior, $p->name) : new Reference($value, $invalidBehavior); - } else { - $args[$p->name] = new Reference('.value.'.$container->hash($value)); - $container->register((string) $args[$p->name], 'mixed') - ->setFactory('current') - ->addArgument([$value]); - } - - continue; - } - - if ($type && !$p->isOptional() && !$p->allowsNull() && !class_exists($type) && !interface_exists($type, false)) { - $message = sprintf('Cannot determine controller argument for "%s::%s()": the $%s argument is type-hinted with the non-existent class or interface: "%s".', $class, $r->name, $p->name, $type); - - // see if the type-hint lives in the same namespace as the controller - if (0 === strncmp($type, $class, strrpos($class, '\\'))) { - $message .= ' Did you forget to add a use statement?'; - } - - $container->register($erroredId = '.errored.'.$container->hash($message), $type) - ->addError($message); - - $args[$p->name] = new Reference($erroredId, ContainerInterface::RUNTIME_EXCEPTION_ON_INVALID_REFERENCE); - } else { - $target = preg_replace('/(^|[(|&])\\\\/', '\1', $target); - $args[$p->name] = $type ? new TypedReference($target, $type, $invalidBehavior, Target::parseName($p)) : new Reference($target, $invalidBehavior); - } - } - // register the maps as a per-method service-locators - if ($args) { - $controllers[$id.'::'.$r->name] = ServiceLocatorTagPass::register($container, $args); - - foreach ($publicAliases[$id] ?? [] as $alias) { - $controllers[$alias.'::'.$r->name] = clone $controllers[$id.'::'.$r->name]; - } - } - } - } - - $controllerLocatorRef = ServiceLocatorTagPass::register($container, $controllers); - - if ($container->hasDefinition('argument_resolver.service')) { - $container->getDefinition('argument_resolver.service') - ->replaceArgument(0, $controllerLocatorRef); - } - - if ($container->hasDefinition('argument_resolver.not_tagged_controller')) { - $container->getDefinition('argument_resolver.not_tagged_controller') - ->replaceArgument(0, $controllerLocatorRef); - } - - $container->setAlias('argument_resolver.controller_locator', (string) $controllerLocatorRef); - - if ($container->hasDefinition('controller_resolver')) { - $container->getDefinition('controller_resolver') - ->addMethodCall('allowControllers', [array_unique($controllerClasses)]); - } - } -} diff --git a/docker/streamline-src/vendor/symfony/http-kernel/Event/ControllerEvent.php b/docker/streamline-src/vendor/symfony/http-kernel/Event/ControllerEvent.php deleted file mode 100644 index 6db2c15f..00000000 --- a/docker/streamline-src/vendor/symfony/http-kernel/Event/ControllerEvent.php +++ /dev/null @@ -1,113 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpKernel\Event; - -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpKernel\HttpKernelInterface; - -/** - * Allows filtering of a controller callable. - * - * You can call getController() to retrieve the current controller. With - * setController() you can set a new controller that is used in the processing - * of the request. - * - * Controllers should be callables. - * - * @author Bernhard Schussek - */ -final class ControllerEvent extends KernelEvent -{ - private string|array|object $controller; - private \ReflectionFunctionAbstract $controllerReflector; - private array $attributes; - - public function __construct(HttpKernelInterface $kernel, callable $controller, Request $request, ?int $requestType) - { - parent::__construct($kernel, $request, $requestType); - - $this->setController($controller); - } - - public function getController(): callable - { - return $this->controller; - } - - public function getControllerReflector(): \ReflectionFunctionAbstract - { - return $this->controllerReflector; - } - - /** - * @param array>|null $attributes - */ - public function setController(callable $controller, ?array $attributes = null): void - { - if (null !== $attributes) { - $this->attributes = $attributes; - } - - if (isset($this->controller) && ($controller instanceof \Closure ? $controller == $this->controller : $controller === $this->controller)) { - $this->controller = $controller; - - return; - } - - if (null === $attributes) { - unset($this->attributes); - } - - if (\is_array($controller) && method_exists(...$controller)) { - $this->controllerReflector = new \ReflectionMethod(...$controller); - } elseif (\is_string($controller) && str_contains($controller, '::')) { - $this->controllerReflector = new \ReflectionMethod(...explode('::', $controller, 2)); - } else { - $this->controllerReflector = new \ReflectionFunction($controller(...)); - } - - $this->controller = $controller; - } - - /** - * @template T of class-string|null - * - * @param T $className - * - * @return array>|list - * - * @psalm-return (T is null ? array> : list) - */ - public function getAttributes(?string $className = null): array - { - if (isset($this->attributes)) { - return null === $className ? $this->attributes : $this->attributes[$className] ?? []; - } - - if (\is_array($this->controller) && method_exists(...$this->controller)) { - $class = new \ReflectionClass($this->controller[0]); - } elseif (\is_string($this->controller) && false !== $i = strpos($this->controller, '::')) { - $class = new \ReflectionClass(substr($this->controller, 0, $i)); - } else { - $class = str_contains($this->controllerReflector->name, '{closure') ? null : (\PHP_VERSION_ID >= 80111 ? $this->controllerReflector->getClosureCalledClass() : $this->controllerReflector->getClosureScopeClass()); - } - $this->attributes = []; - - foreach (array_merge($class?->getAttributes() ?? [], $this->controllerReflector->getAttributes()) as $attribute) { - if (class_exists($attribute->getName())) { - $this->attributes[$attribute->getName()][] = $attribute->newInstance(); - } - } - - return null === $className ? $this->attributes : $this->attributes[$className] ?? []; - } -} diff --git a/docker/streamline-src/vendor/symfony/http-kernel/Event/KernelEvent.php b/docker/streamline-src/vendor/symfony/http-kernel/Event/KernelEvent.php deleted file mode 100644 index 02426c52..00000000 --- a/docker/streamline-src/vendor/symfony/http-kernel/Event/KernelEvent.php +++ /dev/null @@ -1,74 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpKernel\Event; - -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpKernel\HttpKernelInterface; -use Symfony\Contracts\EventDispatcher\Event; - -/** - * Base class for events dispatched in the HttpKernel component. - * - * @author Bernhard Schussek - */ -class KernelEvent extends Event -{ - private HttpKernelInterface $kernel; - private Request $request; - private ?int $requestType; - - /** - * @param int $requestType The request type the kernel is currently processing; one of - * HttpKernelInterface::MAIN_REQUEST or HttpKernelInterface::SUB_REQUEST - */ - public function __construct(HttpKernelInterface $kernel, Request $request, ?int $requestType) - { - $this->kernel = $kernel; - $this->request = $request; - $this->requestType = $requestType; - } - - /** - * Returns the kernel in which this event was thrown. - */ - public function getKernel(): HttpKernelInterface - { - return $this->kernel; - } - - /** - * Returns the request the kernel is currently processing. - */ - public function getRequest(): Request - { - return $this->request; - } - - /** - * Returns the request type the kernel is currently processing. - * - * @return int One of HttpKernelInterface::MAIN_REQUEST and - * HttpKernelInterface::SUB_REQUEST - */ - public function getRequestType(): int - { - return $this->requestType; - } - - /** - * Checks if this is the main request. - */ - public function isMainRequest(): bool - { - return HttpKernelInterface::MAIN_REQUEST === $this->requestType; - } -} diff --git a/docker/streamline-src/vendor/symfony/http-kernel/EventListener/DebugHandlersListener.php b/docker/streamline-src/vendor/symfony/http-kernel/EventListener/DebugHandlersListener.php deleted file mode 100644 index ee720b1e..00000000 --- a/docker/streamline-src/vendor/symfony/http-kernel/EventListener/DebugHandlersListener.php +++ /dev/null @@ -1,136 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpKernel\EventListener; - -use Psr\Log\LoggerInterface; -use Symfony\Component\Console\ConsoleEvents; -use Symfony\Component\Console\Event\ConsoleEvent; -use Symfony\Component\Console\Output\ConsoleOutputInterface; -use Symfony\Component\ErrorHandler\ErrorHandler; -use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\HttpKernel\Event\KernelEvent; -use Symfony\Component\HttpKernel\KernelEvents; - -/** - * Sets an exception handler. - * - * @author Nicolas Grekas - * - * @final - * - * @internal - */ -class DebugHandlersListener implements EventSubscriberInterface -{ - private string|object|null $earlyHandler; - private ?\Closure $exceptionHandler; - private bool $webMode; - private bool $firstCall = true; - private bool $hasTerminatedWithException = false; - - /** - * @param bool $webMode - * @param callable|null $exceptionHandler A handler that must support \Throwable instances that will be called on Exception - */ - public function __construct(?callable $exceptionHandler = null, bool|LoggerInterface|null $webMode = null) - { - if ($webMode instanceof LoggerInterface) { - // BC with Symfony 5 - $webMode = null; - } - - $handler = set_exception_handler('var_dump'); - $this->earlyHandler = \is_array($handler) ? $handler[0] : null; - restore_exception_handler(); - - $this->exceptionHandler = null === $exceptionHandler ? null : $exceptionHandler(...); - $this->webMode = $webMode ?? !\in_array(\PHP_SAPI, ['cli', 'phpdbg', 'embed'], true); - } - - /** - * Configures the error handler. - */ - public function configure(?object $event = null): void - { - if ($event instanceof ConsoleEvent && $this->webMode) { - return; - } - if (!$event instanceof KernelEvent ? !$this->firstCall : !$event->isMainRequest()) { - return; - } - $this->firstCall = $this->hasTerminatedWithException = false; - $hasRun = null; - - if (!$this->exceptionHandler) { - if ($event instanceof KernelEvent) { - if (method_exists($kernel = $event->getKernel(), 'terminateWithException')) { - $request = $event->getRequest(); - $hasRun = &$this->hasTerminatedWithException; - $this->exceptionHandler = static function (\Throwable $e) use ($kernel, $request, &$hasRun) { - if ($hasRun) { - throw $e; - } - - $hasRun = true; - $kernel->terminateWithException($e, $request); - }; - } - } elseif ($event instanceof ConsoleEvent && $app = $event->getCommand()->getApplication()) { - $output = $event->getOutput(); - if ($output instanceof ConsoleOutputInterface) { - $output = $output->getErrorOutput(); - } - $this->exceptionHandler = static function (\Throwable $e) use ($app, $output) { - $app->renderThrowable($e, $output); - }; - } - } - if ($this->exceptionHandler) { - $handler = set_exception_handler('var_dump'); - $handler = \is_array($handler) ? $handler[0] : null; - restore_exception_handler(); - - if (!$handler instanceof ErrorHandler) { - $handler = $this->earlyHandler; - } - - if ($handler instanceof ErrorHandler) { - $handler->setExceptionHandler($this->exceptionHandler); - if (null !== $hasRun) { - $throwAt = $handler->throwAt(0) | \E_ERROR | \E_CORE_ERROR | \E_COMPILE_ERROR | \E_USER_ERROR | \E_RECOVERABLE_ERROR | \E_PARSE; - $loggers = []; - - foreach ($handler->setLoggers([]) as $type => $log) { - if ($type & $throwAt) { - $loggers[$type] = [null, $log[1]]; - } - } - - // Assume $kernel->terminateWithException() will log uncaught exceptions appropriately - $handler->setLoggers($loggers); - } - } - $this->exceptionHandler = null; - } - } - - public static function getSubscribedEvents(): array - { - $events = [KernelEvents::REQUEST => ['configure', 2048]]; - - if (\defined('Symfony\Component\Console\ConsoleEvents::COMMAND')) { - $events[ConsoleEvents::COMMAND] = ['configure', 2048]; - } - - return $events; - } -} diff --git a/docker/streamline-src/vendor/symfony/http-kernel/EventListener/ErrorListener.php b/docker/streamline-src/vendor/symfony/http-kernel/EventListener/ErrorListener.php deleted file mode 100644 index 7aa4875e..00000000 --- a/docker/streamline-src/vendor/symfony/http-kernel/EventListener/ErrorListener.php +++ /dev/null @@ -1,241 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpKernel\EventListener; - -use Psr\Log\LoggerInterface; -use Psr\Log\LogLevel; -use Symfony\Component\ErrorHandler\ErrorHandler; -use Symfony\Component\ErrorHandler\Exception\FlattenException; -use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpKernel\Attribute\WithHttpStatus; -use Symfony\Component\HttpKernel\Attribute\WithLogLevel; -use Symfony\Component\HttpKernel\Event\ControllerArgumentsEvent; -use Symfony\Component\HttpKernel\Event\ExceptionEvent; -use Symfony\Component\HttpKernel\Event\ResponseEvent; -use Symfony\Component\HttpKernel\Exception\HttpException; -use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface; -use Symfony\Component\HttpKernel\HttpKernelInterface; -use Symfony\Component\HttpKernel\KernelEvents; -use Symfony\Component\HttpKernel\Log\DebugLoggerConfigurator; - -/** - * @author Fabien Potencier - */ -class ErrorListener implements EventSubscriberInterface -{ - protected $controller; - protected $logger; - protected $debug; - /** - * @var array|null}> - */ - protected $exceptionsMapping; - - /** - * @param array|null}> $exceptionsMapping - */ - public function __construct(string|object|array|null $controller, ?LoggerInterface $logger = null, bool $debug = false, array $exceptionsMapping = []) - { - $this->controller = $controller; - $this->logger = $logger; - $this->debug = $debug; - $this->exceptionsMapping = $exceptionsMapping; - } - - /** - * @return void - */ - public function logKernelException(ExceptionEvent $event) - { - $throwable = $event->getThrowable(); - $logLevel = $this->resolveLogLevel($throwable); - - foreach ($this->exceptionsMapping as $class => $config) { - if (!$throwable instanceof $class || !$config['status_code']) { - continue; - } - if (!$throwable instanceof HttpExceptionInterface || $throwable->getStatusCode() !== $config['status_code']) { - $headers = $throwable instanceof HttpExceptionInterface ? $throwable->getHeaders() : []; - $throwable = new HttpException($config['status_code'], $throwable->getMessage(), $throwable, $headers); - $event->setThrowable($throwable); - } - break; - } - - // There's no specific status code defined in the configuration for this exception - if (!$throwable instanceof HttpExceptionInterface) { - $class = new \ReflectionClass($throwable); - - do { - if ($attributes = $class->getAttributes(WithHttpStatus::class, \ReflectionAttribute::IS_INSTANCEOF)) { - /** @var WithHttpStatus $instance */ - $instance = $attributes[0]->newInstance(); - - $throwable = new HttpException($instance->statusCode, $throwable->getMessage(), $throwable, $instance->headers); - $event->setThrowable($throwable); - break; - } - } while ($class = $class->getParentClass()); - } - - $e = FlattenException::createFromThrowable($throwable); - - $this->logException($throwable, sprintf('Uncaught PHP Exception %s: "%s" at %s line %s', $e->getClass(), $e->getMessage(), basename($e->getFile()), $e->getLine()), $logLevel); - } - - /** - * @return void - */ - public function onKernelException(ExceptionEvent $event) - { - if (null === $this->controller) { - return; - } - - $throwable = $event->getThrowable(); - - $exceptionHandler = set_exception_handler('var_dump'); - restore_exception_handler(); - - if (\is_array($exceptionHandler) && $exceptionHandler[0] instanceof ErrorHandler) { - $throwable = $exceptionHandler[0]->enhanceError($event->getThrowable()); - } - - $request = $this->duplicateRequest($throwable, $event->getRequest()); - - try { - $response = $event->getKernel()->handle($request, HttpKernelInterface::SUB_REQUEST, false); - } catch (\Exception $e) { - $f = FlattenException::createFromThrowable($e); - - $this->logException($e, sprintf('Exception thrown when handling an exception (%s: %s at %s line %s)', $f->getClass(), $f->getMessage(), basename($e->getFile()), $e->getLine())); - - $prev = $e; - do { - if ($throwable === $wrapper = $prev) { - throw $e; - } - } while ($prev = $wrapper->getPrevious()); - - $prev = new \ReflectionProperty($wrapper instanceof \Exception ? \Exception::class : \Error::class, 'previous'); - $prev->setValue($wrapper, $throwable); - - throw $e; - } - - $event->setResponse($response); - - if ($this->debug) { - $event->getRequest()->attributes->set('_remove_csp_headers', true); - } - } - - public function removeCspHeader(ResponseEvent $event): void - { - if ($this->debug && $event->getRequest()->attributes->get('_remove_csp_headers', false)) { - $event->getResponse()->headers->remove('Content-Security-Policy'); - } - } - - /** - * @return void - */ - public function onControllerArguments(ControllerArgumentsEvent $event) - { - $e = $event->getRequest()->attributes->get('exception'); - - if (!$e instanceof \Throwable || false === $k = array_search($e, $event->getArguments(), true)) { - return; - } - - $r = new \ReflectionFunction($event->getController()(...)); - $r = $r->getParameters()[$k] ?? null; - - if ($r && (!($r = $r->getType()) instanceof \ReflectionNamedType || FlattenException::class === $r->getName())) { - $arguments = $event->getArguments(); - $arguments[$k] = FlattenException::createFromThrowable($e); - $event->setArguments($arguments); - } - } - - public static function getSubscribedEvents(): array - { - return [ - KernelEvents::CONTROLLER_ARGUMENTS => 'onControllerArguments', - KernelEvents::EXCEPTION => [ - ['logKernelException', 0], - ['onKernelException', -128], - ], - KernelEvents::RESPONSE => ['removeCspHeader', -128], - ]; - } - - /** - * Logs an exception. - */ - protected function logException(\Throwable $exception, string $message, ?string $logLevel = null): void - { - if (null === $this->logger) { - return; - } - - $logLevel ??= $this->resolveLogLevel($exception); - - $this->logger->log($logLevel, $message, ['exception' => $exception]); - } - - /** - * Resolves the level to be used when logging the exception. - */ - private function resolveLogLevel(\Throwable $throwable): string - { - foreach ($this->exceptionsMapping as $class => $config) { - if ($throwable instanceof $class && $config['log_level']) { - return $config['log_level']; - } - } - - $class = new \ReflectionClass($throwable); - - do { - if ($attributes = $class->getAttributes(WithLogLevel::class)) { - /** @var WithLogLevel $instance */ - $instance = $attributes[0]->newInstance(); - - return $instance->level; - } - } while ($class = $class->getParentClass()); - - if (!$throwable instanceof HttpExceptionInterface || $throwable->getStatusCode() >= 500) { - return LogLevel::CRITICAL; - } - - return LogLevel::ERROR; - } - - /** - * Clones the request for the exception. - */ - protected function duplicateRequest(\Throwable $exception, Request $request): Request - { - $attributes = [ - '_controller' => $this->controller, - 'exception' => $exception, - 'logger' => DebugLoggerConfigurator::getDebugLogger($this->logger), - ]; - $request = $request->duplicate(null, null, $attributes); - $request->setMethod('GET'); - - return $request; - } -} diff --git a/docker/streamline-src/vendor/symfony/http-kernel/EventListener/ProfilerListener.php b/docker/streamline-src/vendor/symfony/http-kernel/EventListener/ProfilerListener.php deleted file mode 100644 index 1f30582f..00000000 --- a/docker/streamline-src/vendor/symfony/http-kernel/EventListener/ProfilerListener.php +++ /dev/null @@ -1,150 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpKernel\EventListener; - -use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\RequestMatcherInterface; -use Symfony\Component\HttpFoundation\RequestStack; -use Symfony\Component\HttpFoundation\Session\Session; -use Symfony\Component\HttpKernel\Event\ExceptionEvent; -use Symfony\Component\HttpKernel\Event\ResponseEvent; -use Symfony\Component\HttpKernel\Event\TerminateEvent; -use Symfony\Component\HttpKernel\KernelEvents; -use Symfony\Component\HttpKernel\Profiler\Profile; -use Symfony\Component\HttpKernel\Profiler\Profiler; - -/** - * ProfilerListener collects data for the current request by listening to the kernel events. - * - * @author Fabien Potencier - * - * @final - */ -class ProfilerListener implements EventSubscriberInterface -{ - private Profiler $profiler; - private ?RequestMatcherInterface $matcher; - private bool $onlyException; - private bool $onlyMainRequests; - private ?\Throwable $exception = null; - /** @var \SplObjectStorage */ - private \SplObjectStorage $profiles; - private RequestStack $requestStack; - private ?string $collectParameter; - /** @var \SplObjectStorage */ - private \SplObjectStorage $parents; - - /** - * @param bool $onlyException True if the profiler only collects data when an exception occurs, false otherwise - * @param bool $onlyMainRequests True if the profiler only collects data when the request is the main request, false otherwise - */ - public function __construct(Profiler $profiler, RequestStack $requestStack, ?RequestMatcherInterface $matcher = null, bool $onlyException = false, bool $onlyMainRequests = false, ?string $collectParameter = null) - { - $this->profiler = $profiler; - $this->matcher = $matcher; - $this->onlyException = $onlyException; - $this->onlyMainRequests = $onlyMainRequests; - $this->profiles = new \SplObjectStorage(); - $this->parents = new \SplObjectStorage(); - $this->requestStack = $requestStack; - $this->collectParameter = $collectParameter; - } - - /** - * Handles the onKernelException event. - */ - public function onKernelException(ExceptionEvent $event): void - { - if ($this->onlyMainRequests && !$event->isMainRequest()) { - return; - } - - $this->exception = $event->getThrowable(); - } - - /** - * Handles the onKernelResponse event. - */ - public function onKernelResponse(ResponseEvent $event): void - { - if ($this->onlyMainRequests && !$event->isMainRequest()) { - return; - } - - if ($this->onlyException && null === $this->exception) { - return; - } - - $request = $event->getRequest(); - if (null !== $this->collectParameter && null !== $collectParameterValue = $request->get($this->collectParameter)) { - true === $collectParameterValue || filter_var($collectParameterValue, \FILTER_VALIDATE_BOOL) ? $this->profiler->enable() : $this->profiler->disable(); - } - - $exception = $this->exception; - $this->exception = null; - - if (null !== $this->matcher && !$this->matcher->matches($request)) { - return; - } - - $session = !$request->attributes->getBoolean('_stateless') && $request->hasPreviousSession() ? $request->getSession() : null; - - if ($session instanceof Session) { - $usageIndexValue = $usageIndexReference = &$session->getUsageIndex(); - $usageIndexReference = \PHP_INT_MIN; - } - - try { - if (!$profile = $this->profiler->collect($request, $event->getResponse(), $exception)) { - return; - } - } finally { - if ($session instanceof Session) { - $usageIndexReference = $usageIndexValue; - } - } - - $this->profiles[$request] = $profile; - - $this->parents[$request] = $this->requestStack->getParentRequest(); - } - - public function onKernelTerminate(TerminateEvent $event): void - { - // attach children to parents - foreach ($this->profiles as $request) { - if (null !== $parentRequest = $this->parents[$request]) { - if (isset($this->profiles[$parentRequest])) { - $this->profiles[$parentRequest]->addChild($this->profiles[$request]); - } - } - } - - // save profiles - foreach ($this->profiles as $request) { - $this->profiler->saveProfile($this->profiles[$request]); - } - - $this->profiles = new \SplObjectStorage(); - $this->parents = new \SplObjectStorage(); - } - - public static function getSubscribedEvents(): array - { - return [ - KernelEvents::RESPONSE => ['onKernelResponse', -100], - KernelEvents::EXCEPTION => ['onKernelException', 0], - KernelEvents::TERMINATE => ['onKernelTerminate', -1024], - ]; - } -} diff --git a/docker/streamline-src/vendor/symfony/http-kernel/HttpCache/HttpCache.php b/docker/streamline-src/vendor/symfony/http-kernel/HttpCache/HttpCache.php deleted file mode 100644 index 3b484e5c..00000000 --- a/docker/streamline-src/vendor/symfony/http-kernel/HttpCache/HttpCache.php +++ /dev/null @@ -1,765 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * This code is partially based on the Rack-Cache library by Ryan Tomayko, - * which is released under the MIT license. - * (based on commit 02d2b48d75bcb63cf1c0c7149c077ad256542801) - */ - -namespace Symfony\Component\HttpKernel\HttpCache; - -use Symfony\Component\HttpFoundation\Exception\SuspiciousOperationException; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; -use Symfony\Component\HttpKernel\HttpKernelInterface; -use Symfony\Component\HttpKernel\TerminableInterface; - -/** - * Cache provides HTTP caching. - * - * @author Fabien Potencier - */ -class HttpCache implements HttpKernelInterface, TerminableInterface -{ - public const BODY_EVAL_BOUNDARY_LENGTH = 24; - - private HttpKernelInterface $kernel; - private StoreInterface $store; - private Request $request; - private ?SurrogateInterface $surrogate; - private ?ResponseCacheStrategyInterface $surrogateCacheStrategy = null; - private array $options = []; - private array $traces = []; - - /** - * Constructor. - * - * The available options are: - * - * * debug If true, exceptions are thrown when things go wrong. Otherwise, the cache - * will try to carry on and deliver a meaningful response. - * - * * trace_level May be one of 'none', 'short' and 'full'. For 'short', a concise trace of the - * main request will be added as an HTTP header. 'full' will add traces for all - * requests (including ESI subrequests). (default: 'full' if in debug; 'none' otherwise) - * - * * trace_header Header name to use for traces. (default: X-Symfony-Cache) - * - * * default_ttl The number of seconds that a cache entry should be considered - * fresh when no explicit freshness information is provided in - * a response. Explicit Cache-Control or Expires headers - * override this value. (default: 0) - * - * * private_headers Set of request headers that trigger "private" cache-control behavior - * on responses that don't explicitly state whether the response is - * public or private via a Cache-Control directive. (default: Authorization and Cookie) - * - * * skip_response_headers Set of response headers that are never cached even if a response is cacheable (public). - * (default: Set-Cookie) - * - * * allow_reload Specifies whether the client can force a cache reload by including a - * Cache-Control "no-cache" directive in the request. Set it to ``true`` - * for compliance with RFC 2616. (default: false) - * - * * allow_revalidate Specifies whether the client can force a cache revalidate by including - * a Cache-Control "max-age=0" directive in the request. Set it to ``true`` - * for compliance with RFC 2616. (default: false) - * - * * stale_while_revalidate Specifies the default number of seconds (the granularity is the second as the - * Response TTL precision is a second) during which the cache can immediately return - * a stale response while it revalidates it in the background (default: 2). - * This setting is overridden by the stale-while-revalidate HTTP Cache-Control - * extension (see RFC 5861). - * - * * stale_if_error Specifies the default number of seconds (the granularity is the second) during which - * the cache can serve a stale response when an error is encountered (default: 60). - * This setting is overridden by the stale-if-error HTTP Cache-Control extension - * (see RFC 5861). - * - * * terminate_on_cache_hit Specifies if the kernel.terminate event should be dispatched even when the cache - * was hit (default: true). - * Unless your application needs to process events on cache hits, it is recommended - * to set this to false to avoid having to bootstrap the Symfony framework on a cache hit. - */ - public function __construct(HttpKernelInterface $kernel, StoreInterface $store, ?SurrogateInterface $surrogate = null, array $options = []) - { - $this->store = $store; - $this->kernel = $kernel; - $this->surrogate = $surrogate; - - // needed in case there is a fatal error because the backend is too slow to respond - register_shutdown_function($this->store->cleanup(...)); - - $this->options = array_merge([ - 'debug' => false, - 'default_ttl' => 0, - 'private_headers' => ['Authorization', 'Cookie'], - 'skip_response_headers' => ['Set-Cookie'], - 'allow_reload' => false, - 'allow_revalidate' => false, - 'stale_while_revalidate' => 2, - 'stale_if_error' => 60, - 'trace_level' => 'none', - 'trace_header' => 'X-Symfony-Cache', - 'terminate_on_cache_hit' => true, - ], $options); - - if (!isset($options['trace_level'])) { - $this->options['trace_level'] = $this->options['debug'] ? 'full' : 'none'; - } - } - - /** - * Gets the current store. - */ - public function getStore(): StoreInterface - { - return $this->store; - } - - /** - * Returns an array of events that took place during processing of the last request. - */ - public function getTraces(): array - { - return $this->traces; - } - - private function addTraces(Response $response): void - { - $traceString = null; - - if ('full' === $this->options['trace_level']) { - $traceString = $this->getLog(); - } - - if ('short' === $this->options['trace_level'] && $masterId = array_key_first($this->traces)) { - $traceString = implode('/', $this->traces[$masterId]); - } - - if (null !== $traceString) { - $response->headers->add([$this->options['trace_header'] => $traceString]); - } - } - - /** - * Returns a log message for the events of the last request processing. - */ - public function getLog(): string - { - $log = []; - foreach ($this->traces as $request => $traces) { - $log[] = sprintf('%s: %s', $request, implode(', ', $traces)); - } - - return implode('; ', $log); - } - - /** - * Gets the Request instance associated with the main request. - */ - public function getRequest(): Request - { - return $this->request; - } - - /** - * Gets the Kernel instance. - */ - public function getKernel(): HttpKernelInterface - { - return $this->kernel; - } - - /** - * Gets the Surrogate instance. - * - * @throws \LogicException - */ - public function getSurrogate(): SurrogateInterface - { - return $this->surrogate; - } - - public function handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true): Response - { - // FIXME: catch exceptions and implement a 500 error page here? -> in Varnish, there is a built-in error page mechanism - if (HttpKernelInterface::MAIN_REQUEST === $type) { - $this->traces = []; - // Keep a clone of the original request for surrogates so they can access it. - // We must clone here to get a separate instance because the application will modify the request during - // the application flow (we know it always does because we do ourselves by setting REMOTE_ADDR to 127.0.0.1 - // and adding the X-Forwarded-For header, see HttpCache::forward()). - $this->request = clone $request; - if (null !== $this->surrogate) { - $this->surrogateCacheStrategy = $this->surrogate->createCacheStrategy(); - } - } - - $this->traces[$this->getTraceKey($request)] = []; - - if (!$request->isMethodSafe()) { - $response = $this->invalidate($request, $catch); - } elseif ($request->headers->has('expect') || !$request->isMethodCacheable()) { - $response = $this->pass($request, $catch); - } elseif ($this->options['allow_reload'] && $request->isNoCache()) { - /* - If allow_reload is configured and the client requests "Cache-Control: no-cache", - reload the cache by fetching a fresh response and caching it (if possible). - */ - $this->record($request, 'reload'); - $response = $this->fetch($request, $catch); - } else { - $response = $this->lookup($request, $catch); - } - - $this->restoreResponseBody($request, $response); - - if (HttpKernelInterface::MAIN_REQUEST === $type) { - $this->addTraces($response); - } - - if (null !== $this->surrogate) { - if (HttpKernelInterface::MAIN_REQUEST === $type) { - $this->surrogateCacheStrategy->update($response); - } else { - $this->surrogateCacheStrategy->add($response); - } - } - - $response->prepare($request); - - if (HttpKernelInterface::MAIN_REQUEST === $type) { - $response->isNotModified($request); - } - - return $response; - } - - /** - * @return void - */ - public function terminate(Request $request, Response $response) - { - // Do not call any listeners in case of a cache hit. - // This ensures identical behavior as if you had a separate - // reverse caching proxy such as Varnish and the like. - if ($this->options['terminate_on_cache_hit']) { - trigger_deprecation('symfony/http-kernel', '6.2', 'Setting "terminate_on_cache_hit" to "true" is deprecated and will be changed to "false" in Symfony 7.0.'); - } elseif (\in_array('fresh', $this->traces[$this->getTraceKey($request)] ?? [], true)) { - return; - } - - if ($this->getKernel() instanceof TerminableInterface) { - $this->getKernel()->terminate($request, $response); - } - } - - /** - * Forwards the Request to the backend without storing the Response in the cache. - * - * @param bool $catch Whether to process exceptions - */ - protected function pass(Request $request, bool $catch = false): Response - { - $this->record($request, 'pass'); - - return $this->forward($request, $catch); - } - - /** - * Invalidates non-safe methods (like POST, PUT, and DELETE). - * - * @param bool $catch Whether to process exceptions - * - * @throws \Exception - * - * @see RFC2616 13.10 - */ - protected function invalidate(Request $request, bool $catch = false): Response - { - $response = $this->pass($request, $catch); - - // invalidate only when the response is successful - if ($response->isSuccessful() || $response->isRedirect()) { - try { - $this->store->invalidate($request); - - // As per the RFC, invalidate Location and Content-Location URLs if present - foreach (['Location', 'Content-Location'] as $header) { - if ($uri = $response->headers->get($header)) { - $subRequest = Request::create($uri, 'get', [], [], [], $request->server->all()); - - $this->store->invalidate($subRequest); - } - } - - $this->record($request, 'invalidate'); - } catch (\Exception $e) { - $this->record($request, 'invalidate-failed'); - - if ($this->options['debug']) { - throw $e; - } - } - } - - return $response; - } - - /** - * Lookups a Response from the cache for the given Request. - * - * When a matching cache entry is found and is fresh, it uses it as the - * response without forwarding any request to the backend. When a matching - * cache entry is found but is stale, it attempts to "validate" the entry with - * the backend using conditional GET. When no matching cache entry is found, - * it triggers "miss" processing. - * - * @param bool $catch Whether to process exceptions - * - * @throws \Exception - */ - protected function lookup(Request $request, bool $catch = false): Response - { - try { - $entry = $this->store->lookup($request); - } catch (\Exception $e) { - $this->record($request, 'lookup-failed'); - - if ($this->options['debug']) { - throw $e; - } - - return $this->pass($request, $catch); - } - - if (null === $entry) { - $this->record($request, 'miss'); - - return $this->fetch($request, $catch); - } - - if (!$this->isFreshEnough($request, $entry)) { - $this->record($request, 'stale'); - - return $this->validate($request, $entry, $catch); - } - - if ($entry->headers->hasCacheControlDirective('no-cache')) { - return $this->validate($request, $entry, $catch); - } - - $this->record($request, 'fresh'); - - $entry->headers->set('Age', $entry->getAge()); - - return $entry; - } - - /** - * Validates that a cache entry is fresh. - * - * The original request is used as a template for a conditional - * GET request with the backend. - * - * @param bool $catch Whether to process exceptions - */ - protected function validate(Request $request, Response $entry, bool $catch = false): Response - { - $subRequest = clone $request; - - // send no head requests because we want content - if ('HEAD' === $request->getMethod()) { - $subRequest->setMethod('GET'); - } - - // add our cached last-modified validator - if ($entry->headers->has('Last-Modified')) { - $subRequest->headers->set('If-Modified-Since', $entry->headers->get('Last-Modified')); - } - - // Add our cached etag validator to the environment. - // We keep the etags from the client to handle the case when the client - // has a different private valid entry which is not cached here. - $cachedEtags = $entry->getEtag() ? [$entry->getEtag()] : []; - $requestEtags = $request->getETags(); - if ($etags = array_unique(array_merge($cachedEtags, $requestEtags))) { - $subRequest->headers->set('If-None-Match', implode(', ', $etags)); - } - - $response = $this->forward($subRequest, $catch, $entry); - - if (304 == $response->getStatusCode()) { - $this->record($request, 'valid'); - - // return the response and not the cache entry if the response is valid but not cached - $etag = $response->getEtag(); - if ($etag && \in_array($etag, $requestEtags) && !\in_array($etag, $cachedEtags)) { - return $response; - } - - $entry = clone $entry; - $entry->headers->remove('Date'); - - foreach (['Date', 'Expires', 'Cache-Control', 'ETag', 'Last-Modified'] as $name) { - if ($response->headers->has($name)) { - $entry->headers->set($name, $response->headers->get($name)); - } - } - - $response = $entry; - } else { - $this->record($request, 'invalid'); - } - - if ($response->isCacheable()) { - $this->store($request, $response); - } - - return $response; - } - - /** - * Unconditionally fetches a fresh response from the backend and - * stores it in the cache if is cacheable. - * - * @param bool $catch Whether to process exceptions - */ - protected function fetch(Request $request, bool $catch = false): Response - { - $subRequest = clone $request; - - // send no head requests because we want content - if ('HEAD' === $request->getMethod()) { - $subRequest->setMethod('GET'); - } - - // avoid that the backend sends no content - $subRequest->headers->remove('If-Modified-Since'); - $subRequest->headers->remove('If-None-Match'); - - $response = $this->forward($subRequest, $catch); - - if ($response->isCacheable()) { - $this->store($request, $response); - } - - return $response; - } - - /** - * Forwards the Request to the backend and returns the Response. - * - * All backend requests (cache passes, fetches, cache validations) - * run through this method. - * - * @param bool $catch Whether to catch exceptions or not - * @param Response|null $entry A Response instance (the stale entry if present, null otherwise) - * - * @return Response - */ - protected function forward(Request $request, bool $catch = false, ?Response $entry = null) - { - $this->surrogate?->addSurrogateCapability($request); - - // always a "master" request (as the real master request can be in cache) - $response = SubRequestHandler::handle($this->kernel, $request, HttpKernelInterface::MAIN_REQUEST, $catch); - - /* - * Support stale-if-error given on Responses or as a config option. - * RFC 7234 summarizes in Section 4.2.4 (but also mentions with the individual - * Cache-Control directives) that - * - * A cache MUST NOT generate a stale response if it is prohibited by an - * explicit in-protocol directive (e.g., by a "no-store" or "no-cache" - * cache directive, a "must-revalidate" cache-response-directive, or an - * applicable "s-maxage" or "proxy-revalidate" cache-response-directive; - * see Section 5.2.2). - * - * https://tools.ietf.org/html/rfc7234#section-4.2.4 - * - * We deviate from this in one detail, namely that we *do* serve entries in the - * stale-if-error case even if they have a `s-maxage` Cache-Control directive. - */ - if (null !== $entry - && \in_array($response->getStatusCode(), [500, 502, 503, 504]) - && !$entry->headers->hasCacheControlDirective('no-cache') - && !$entry->mustRevalidate() - ) { - if (null === $age = $entry->headers->getCacheControlDirective('stale-if-error')) { - $age = $this->options['stale_if_error']; - } - - /* - * stale-if-error gives the (extra) time that the Response may be used *after* it has become stale. - * So we compare the time the $entry has been sitting in the cache already with the - * time it was fresh plus the allowed grace period. - */ - if ($entry->getAge() <= $entry->getMaxAge() + $age) { - $this->record($request, 'stale-if-error'); - - return $entry; - } - } - - /* - RFC 7231 Sect. 7.1.1.2 says that a server that does not have a reasonably accurate - clock MUST NOT send a "Date" header, although it MUST send one in most other cases - except for 1xx or 5xx responses where it MAY do so. - - Anyway, a client that received a message without a "Date" header MUST add it. - */ - if (!$response->headers->has('Date')) { - $response->setDate(\DateTimeImmutable::createFromFormat('U', time())); - } - - $this->processResponseBody($request, $response); - - if ($this->isPrivateRequest($request) && !$response->headers->hasCacheControlDirective('public')) { - $response->setPrivate(); - } elseif ($this->options['default_ttl'] > 0 && null === $response->getTtl() && !$response->headers->getCacheControlDirective('must-revalidate')) { - $response->setTtl($this->options['default_ttl']); - } - - return $response; - } - - /** - * Checks whether the cache entry is "fresh enough" to satisfy the Request. - */ - protected function isFreshEnough(Request $request, Response $entry): bool - { - if (!$entry->isFresh()) { - return $this->lock($request, $entry); - } - - if ($this->options['allow_revalidate'] && null !== $maxAge = $request->headers->getCacheControlDirective('max-age')) { - return $maxAge > 0 && $maxAge >= $entry->getAge(); - } - - return true; - } - - /** - * Locks a Request during the call to the backend. - * - * @return bool true if the cache entry can be returned even if it is staled, false otherwise - */ - protected function lock(Request $request, Response $entry): bool - { - // try to acquire a lock to call the backend - $lock = $this->store->lock($request); - - if (true === $lock) { - // we have the lock, call the backend - return false; - } - - // there is already another process calling the backend - - // May we serve a stale response? - if ($this->mayServeStaleWhileRevalidate($entry)) { - $this->record($request, 'stale-while-revalidate'); - - return true; - } - - // wait for the lock to be released - if ($this->waitForLock($request)) { - // replace the current entry with the fresh one - $new = $this->lookup($request); - $entry->headers = $new->headers; - $entry->setContent($new->getContent()); - $entry->setStatusCode($new->getStatusCode()); - $entry->setProtocolVersion($new->getProtocolVersion()); - foreach ($new->headers->getCookies() as $cookie) { - $entry->headers->setCookie($cookie); - } - } else { - // backend is slow as hell, send a 503 response (to avoid the dog pile effect) - $entry->setStatusCode(503); - $entry->setContent('503 Service Unavailable'); - $entry->headers->set('Retry-After', 10); - } - - return true; - } - - /** - * Writes the Response to the cache. - * - * @return void - * - * @throws \Exception - */ - protected function store(Request $request, Response $response) - { - try { - $restoreHeaders = []; - foreach ($this->options['skip_response_headers'] as $header) { - if (!$response->headers->has($header)) { - continue; - } - - $restoreHeaders[$header] = $response->headers->all($header); - $response->headers->remove($header); - } - - $this->store->write($request, $response); - $this->record($request, 'store'); - - $response->headers->set('Age', $response->getAge()); - } catch (\Exception $e) { - $this->record($request, 'store-failed'); - - if ($this->options['debug']) { - throw $e; - } - } finally { - foreach ($restoreHeaders as $header => $values) { - $response->headers->set($header, $values); - } - } - - // now that the response is cached, release the lock - $this->store->unlock($request); - } - - /** - * Restores the Response body. - */ - private function restoreResponseBody(Request $request, Response $response): void - { - if ($response->headers->has('X-Body-Eval')) { - \assert(self::BODY_EVAL_BOUNDARY_LENGTH === 24); - - ob_start(); - - $content = $response->getContent(); - $boundary = substr($content, 0, 24); - $j = strpos($content, $boundary, 24); - echo substr($content, 24, $j - 24); - $i = $j + 24; - - while (false !== $j = strpos($content, $boundary, $i)) { - [$uri, $alt, $ignoreErrors, $part] = explode("\n", substr($content, $i, $j - $i), 4); - $i = $j + 24; - - echo $this->surrogate->handle($this, $uri, $alt, $ignoreErrors); - echo $part; - } - - $response->setContent(ob_get_clean()); - $response->headers->remove('X-Body-Eval'); - if (!$response->headers->has('Transfer-Encoding')) { - $response->headers->set('Content-Length', \strlen($response->getContent())); - } - } elseif ($response->headers->has('X-Body-File')) { - // Response does not include possibly dynamic content (ESI, SSI), so we need - // not handle the content for HEAD requests - if (!$request->isMethod('HEAD')) { - $response->setContent(file_get_contents($response->headers->get('X-Body-File'))); - } - } else { - return; - } - - $response->headers->remove('X-Body-File'); - } - - /** - * @return void - */ - protected function processResponseBody(Request $request, Response $response) - { - if ($this->surrogate?->needsParsing($response)) { - $this->surrogate->process($request, $response); - } - } - - /** - * Checks if the Request includes authorization or other sensitive information - * that should cause the Response to be considered private by default. - */ - private function isPrivateRequest(Request $request): bool - { - foreach ($this->options['private_headers'] as $key) { - $key = strtolower(str_replace('HTTP_', '', $key)); - - if ('cookie' === $key) { - if (\count($request->cookies->all())) { - return true; - } - } elseif ($request->headers->has($key)) { - return true; - } - } - - return false; - } - - /** - * Records that an event took place. - */ - private function record(Request $request, string $event): void - { - $this->traces[$this->getTraceKey($request)][] = $event; - } - - /** - * Calculates the key we use in the "trace" array for a given request. - */ - private function getTraceKey(Request $request): string - { - $path = $request->getPathInfo(); - if ($qs = $request->getQueryString()) { - $path .= '?'.$qs; - } - - try { - return $request->getMethod().' '.$path; - } catch (SuspiciousOperationException $e) { - return '_BAD_METHOD_ '.$path; - } - } - - /** - * Checks whether the given (cached) response may be served as "stale" when a revalidation - * is currently in progress. - */ - private function mayServeStaleWhileRevalidate(Response $entry): bool - { - $timeout = $entry->headers->getCacheControlDirective('stale-while-revalidate'); - $timeout ??= $this->options['stale_while_revalidate']; - - $age = $entry->getAge(); - $maxAge = $entry->getMaxAge() ?? 0; - $ttl = $maxAge - $age; - - return abs($ttl) < $timeout; - } - - /** - * Waits for the store to release a locked entry. - */ - private function waitForLock(Request $request): bool - { - $wait = 0; - while ($this->store->isLocked($request) && $wait < 100) { - usleep(50000); - ++$wait; - } - - return $wait < 100; - } -} diff --git a/docker/streamline-src/vendor/symfony/http-kernel/HttpCache/ResponseCacheStrategy.php b/docker/streamline-src/vendor/symfony/http-kernel/HttpCache/ResponseCacheStrategy.php deleted file mode 100644 index bf7ec78f..00000000 --- a/docker/streamline-src/vendor/symfony/http-kernel/HttpCache/ResponseCacheStrategy.php +++ /dev/null @@ -1,236 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpKernel\HttpCache; - -use Symfony\Component\HttpFoundation\Response; - -/** - * ResponseCacheStrategy knows how to compute the Response cache HTTP header - * based on the different response cache headers. - * - * This implementation changes the main response TTL to the smallest TTL received - * or force validation if one of the surrogates has validation cache strategy. - * - * @author Fabien Potencier - */ -class ResponseCacheStrategy implements ResponseCacheStrategyInterface -{ - /** - * Cache-Control headers that are sent to the final response if they appear in ANY of the responses. - */ - private const OVERRIDE_DIRECTIVES = ['private', 'no-cache', 'no-store', 'no-transform', 'must-revalidate', 'proxy-revalidate']; - - /** - * Cache-Control headers that are sent to the final response if they appear in ALL of the responses. - */ - private const INHERIT_DIRECTIVES = ['public', 'immutable']; - - private int $embeddedResponses = 0; - private bool $isNotCacheableResponseEmbedded = false; - private int $age = 0; - private \DateTimeInterface|null|false $lastModified = null; - private array $flagDirectives = [ - 'no-cache' => null, - 'no-store' => null, - 'no-transform' => null, - 'must-revalidate' => null, - 'proxy-revalidate' => null, - 'public' => null, - 'private' => null, - 'immutable' => null, - ]; - private array $ageDirectives = [ - 'max-age' => null, - 's-maxage' => null, - 'expires' => false, - ]; - - /** - * @return void - */ - public function add(Response $response) - { - ++$this->embeddedResponses; - - foreach (self::OVERRIDE_DIRECTIVES as $directive) { - if ($response->headers->hasCacheControlDirective($directive)) { - $this->flagDirectives[$directive] = true; - } - } - - foreach (self::INHERIT_DIRECTIVES as $directive) { - if (false !== $this->flagDirectives[$directive]) { - $this->flagDirectives[$directive] = $response->headers->hasCacheControlDirective($directive); - } - } - - $age = $response->getAge(); - $this->age = max($this->age, $age); - - if ($this->willMakeFinalResponseUncacheable($response)) { - $this->isNotCacheableResponseEmbedded = true; - - return; - } - - $maxAge = $response->headers->hasCacheControlDirective('max-age') ? (int) $response->headers->getCacheControlDirective('max-age') : null; - $sharedMaxAge = $response->headers->hasCacheControlDirective('s-maxage') ? (int) $response->headers->getCacheControlDirective('s-maxage') : $maxAge; - $expires = $response->getExpires(); - $expires = null !== $expires ? (int) $expires->format('U') - (int) $response->getDate()->format('U') : null; - - // See https://datatracker.ietf.org/doc/html/rfc7234#section-4.2.2 - // If a response is "public" but does not have maximum lifetime, heuristics might be applied. - // Do not store NULL values so the final response can have more limiting value from other responses. - $isHeuristicallyCacheable = $response->headers->hasCacheControlDirective('public') - && null === $maxAge - && null === $sharedMaxAge - && null === $expires; - - if (!$isHeuristicallyCacheable || null !== $maxAge || null !== $expires) { - $this->storeRelativeAgeDirective('max-age', $maxAge, $expires, $age); - } - - if (!$isHeuristicallyCacheable || null !== $sharedMaxAge || null !== $expires) { - $this->storeRelativeAgeDirective('s-maxage', $sharedMaxAge, $expires, $age); - } - - if (null !== $expires) { - $this->ageDirectives['expires'] = true; - } - - if (false !== $this->lastModified) { - $lastModified = $response->getLastModified(); - $this->lastModified = $lastModified ? max($this->lastModified, $lastModified) : false; - } - } - - /** - * @return void - */ - public function update(Response $response) - { - // if we have no embedded Response, do nothing - if (0 === $this->embeddedResponses) { - return; - } - - // Remove Etag since it cannot be merged from embedded responses. - $response->setEtag(null); - - $this->add($response); - - $response->headers->set('Age', $this->age); - - if ($this->isNotCacheableResponseEmbedded) { - $response->setLastModified(null); - - if ($this->flagDirectives['no-store']) { - $response->headers->set('Cache-Control', 'no-cache, no-store, must-revalidate'); - } else { - $response->headers->set('Cache-Control', 'no-cache, must-revalidate'); - } - - return; - } - - $response->setLastModified($this->lastModified ?: null); - - $flags = array_filter($this->flagDirectives); - - if (isset($flags['must-revalidate'])) { - $flags['no-cache'] = true; - } - - $response->headers->set('Cache-Control', implode(', ', array_keys($flags))); - - $maxAge = null; - - if (is_numeric($this->ageDirectives['max-age'])) { - $maxAge = $this->ageDirectives['max-age'] + $this->age; - $response->headers->addCacheControlDirective('max-age', $maxAge); - } - - if (is_numeric($this->ageDirectives['s-maxage'])) { - $sMaxage = $this->ageDirectives['s-maxage'] + $this->age; - - if ($maxAge !== $sMaxage) { - $response->headers->addCacheControlDirective('s-maxage', $sMaxage); - } - } - - if ($this->ageDirectives['expires'] && null !== $maxAge) { - $date = clone $response->getDate(); - $date = $date->modify('+'.$maxAge.' seconds'); - $response->setExpires($date); - } - } - - /** - * RFC2616, Section 13.4. - * - * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.4 - */ - private function willMakeFinalResponseUncacheable(Response $response): bool - { - // RFC2616: A response received with a status code of 200, 203, 300, 301 or 410 - // MAY be stored by a cache […] unless a cache-control directive prohibits caching. - if ($response->headers->hasCacheControlDirective('no-cache') - || $response->headers->hasCacheControlDirective('no-store') - ) { - return true; - } - - // Etag headers cannot be merged, they render the response uncacheable - // by default (except if the response also has max-age etc.). - if (null === $response->getEtag() && \in_array($response->getStatusCode(), [200, 203, 300, 301, 410])) { - return false; - } - - // RFC2616: A response received with any other status code (e.g. status codes 302 and 307) - // MUST NOT be returned in a reply to a subsequent request unless there are - // cache-control directives or another header(s) that explicitly allow it. - $cacheControl = ['max-age', 's-maxage', 'must-revalidate', 'proxy-revalidate', 'public', 'private']; - foreach ($cacheControl as $key) { - if ($response->headers->hasCacheControlDirective($key)) { - return false; - } - } - - if ($response->headers->has('Expires')) { - return false; - } - - return true; - } - - /** - * Store lowest max-age/s-maxage/expires for the final response. - * - * The response might have been stored in cache a while ago. To keep things comparable, - * we have to subtract the age so that the value is normalized for an age of 0. - * - * If the value is lower than the currently stored value, we update the value, to keep a rolling - * minimal value of each instruction. If the value is NULL, the directive will not be set on the final response. - */ - private function storeRelativeAgeDirective(string $directive, ?int $value, ?int $expires, int $age): void - { - if (null === $value && null === $expires) { - $this->ageDirectives[$directive] = false; - } - - if (false !== $this->ageDirectives[$directive]) { - $value = min($value ?? PHP_INT_MAX, $expires ?? PHP_INT_MAX); - $value -= $age; - $this->ageDirectives[$directive] = null !== $this->ageDirectives[$directive] ? min($this->ageDirectives[$directive], $value) : $value; - } - } -} diff --git a/docker/streamline-src/vendor/symfony/http-kernel/Kernel.php b/docker/streamline-src/vendor/symfony/http-kernel/Kernel.php deleted file mode 100644 index eb989420..00000000 --- a/docker/streamline-src/vendor/symfony/http-kernel/Kernel.php +++ /dev/null @@ -1,867 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpKernel; - -use Symfony\Component\Config\Builder\ConfigBuilderGenerator; -use Symfony\Component\Config\ConfigCache; -use Symfony\Component\Config\Loader\DelegatingLoader; -use Symfony\Component\Config\Loader\LoaderResolver; -use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; -use Symfony\Component\DependencyInjection\Compiler\PassConfig; -use Symfony\Component\DependencyInjection\Compiler\RemoveBuildParametersPass; -use Symfony\Component\DependencyInjection\ContainerBuilder; -use Symfony\Component\DependencyInjection\ContainerInterface; -use Symfony\Component\DependencyInjection\Dumper\PhpDumper; -use Symfony\Component\DependencyInjection\Dumper\Preloader; -use Symfony\Component\DependencyInjection\Extension\ExtensionInterface; -use Symfony\Component\DependencyInjection\Loader\ClosureLoader; -use Symfony\Component\DependencyInjection\Loader\DirectoryLoader; -use Symfony\Component\DependencyInjection\Loader\GlobFileLoader; -use Symfony\Component\DependencyInjection\Loader\IniFileLoader; -use Symfony\Component\DependencyInjection\Loader\PhpFileLoader; -use Symfony\Component\DependencyInjection\Loader\XmlFileLoader; -use Symfony\Component\DependencyInjection\Loader\YamlFileLoader; -use Symfony\Component\ErrorHandler\DebugClassLoader; -use Symfony\Component\Filesystem\Filesystem; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; -use Symfony\Component\HttpKernel\Bundle\BundleInterface; -use Symfony\Component\HttpKernel\CacheWarmer\WarmableInterface; -use Symfony\Component\HttpKernel\Config\FileLocator; -use Symfony\Component\HttpKernel\DependencyInjection\AddAnnotatedClassesToCachePass; -use Symfony\Component\HttpKernel\DependencyInjection\MergeExtensionConfigurationPass; - -// Help opcache.preload discover always-needed symbols -class_exists(ConfigCache::class); - -/** - * The Kernel is the heart of the Symfony system. - * - * It manages an environment made of bundles. - * - * Environment names must always start with a letter and - * they must only contain letters and numbers. - * - * @author Fabien Potencier - */ -abstract class Kernel implements KernelInterface, RebootableInterface, TerminableInterface -{ - /** - * @var array - */ - protected $bundles = []; - - protected $container; - protected $environment; - protected $debug; - protected $booted = false; - protected $startTime; - - private string $projectDir; - private ?string $warmupDir = null; - private int $requestStackSize = 0; - private bool $resetServices = false; - - /** - * @var array - */ - private static array $freshCache = []; - - public const VERSION = '6.4.17'; - public const VERSION_ID = 60417; - public const MAJOR_VERSION = 6; - public const MINOR_VERSION = 4; - public const RELEASE_VERSION = 17; - public const EXTRA_VERSION = ''; - - public const END_OF_MAINTENANCE = '11/2026'; - public const END_OF_LIFE = '11/2027'; - - public function __construct(string $environment, bool $debug) - { - if (!$this->environment = $environment) { - throw new \InvalidArgumentException(sprintf('Invalid environment provided to "%s": the environment cannot be empty.', get_debug_type($this))); - } - - $this->debug = $debug; - } - - public function __clone() - { - $this->booted = false; - $this->container = null; - $this->requestStackSize = 0; - $this->resetServices = false; - } - - /** - * @return void - */ - public function boot() - { - if (true === $this->booted) { - if (!$this->requestStackSize && $this->resetServices) { - if ($this->container->has('services_resetter')) { - $this->container->get('services_resetter')->reset(); - } - $this->resetServices = false; - if ($this->debug) { - $this->startTime = microtime(true); - } - } - - return; - } - - if (null === $this->container) { - $this->preBoot(); - } - - foreach ($this->getBundles() as $bundle) { - $bundle->setContainer($this->container); - $bundle->boot(); - } - - $this->booted = true; - } - - /** - * @return void - */ - public function reboot(?string $warmupDir) - { - $this->shutdown(); - $this->warmupDir = $warmupDir; - $this->boot(); - } - - /** - * @return void - */ - public function terminate(Request $request, Response $response) - { - if (false === $this->booted) { - return; - } - - if ($this->getHttpKernel() instanceof TerminableInterface) { - $this->getHttpKernel()->terminate($request, $response); - } - } - - /** - * @return void - */ - public function shutdown() - { - if (false === $this->booted) { - return; - } - - $this->booted = false; - - foreach ($this->getBundles() as $bundle) { - $bundle->shutdown(); - $bundle->setContainer(null); - } - - $this->container = null; - $this->requestStackSize = 0; - $this->resetServices = false; - } - - public function handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true): Response - { - if (!$this->booted) { - $container = $this->container ?? $this->preBoot(); - - if ($container->has('http_cache')) { - return $container->get('http_cache')->handle($request, $type, $catch); - } - } - - $this->boot(); - ++$this->requestStackSize; - $this->resetServices = true; - - try { - return $this->getHttpKernel()->handle($request, $type, $catch); - } finally { - --$this->requestStackSize; - } - } - - /** - * Gets an HTTP kernel from the container. - */ - protected function getHttpKernel(): HttpKernelInterface - { - return $this->container->get('http_kernel'); - } - - public function getBundles(): array - { - return $this->bundles; - } - - public function getBundle(string $name): BundleInterface - { - if (!isset($this->bundles[$name])) { - throw new \InvalidArgumentException(sprintf('Bundle "%s" does not exist or it is not enabled. Maybe you forgot to add it in the "registerBundles()" method of your "%s.php" file?', $name, get_debug_type($this))); - } - - return $this->bundles[$name]; - } - - public function locateResource(string $name): string - { - if ('@' !== $name[0]) { - throw new \InvalidArgumentException(sprintf('A resource name must start with @ ("%s" given).', $name)); - } - - if (str_contains($name, '..')) { - throw new \RuntimeException(sprintf('File name "%s" contains invalid characters (..).', $name)); - } - - $bundleName = substr($name, 1); - $path = ''; - if (str_contains($bundleName, '/')) { - [$bundleName, $path] = explode('/', $bundleName, 2); - } - - $bundle = $this->getBundle($bundleName); - if (file_exists($file = $bundle->getPath().'/'.$path)) { - return $file; - } - - throw new \InvalidArgumentException(sprintf('Unable to find file "%s".', $name)); - } - - public function getEnvironment(): string - { - return $this->environment; - } - - public function isDebug(): bool - { - return $this->debug; - } - - /** - * Gets the application root dir (path of the project's composer file). - */ - public function getProjectDir(): string - { - if (!isset($this->projectDir)) { - $r = new \ReflectionObject($this); - - if (!is_file($dir = $r->getFileName())) { - throw new \LogicException(sprintf('Cannot auto-detect project dir for kernel of class "%s".', $r->name)); - } - - $dir = $rootDir = \dirname($dir); - while (!is_file($dir.'/composer.json')) { - if ($dir === \dirname($dir)) { - return $this->projectDir = $rootDir; - } - $dir = \dirname($dir); - } - $this->projectDir = $dir; - } - - return $this->projectDir; - } - - public function getContainer(): ContainerInterface - { - if (!$this->container) { - throw new \LogicException('Cannot retrieve the container from a non-booted kernel.'); - } - - return $this->container; - } - - /** - * @internal - */ - public function setAnnotatedClassCache(array $annotatedClasses): void - { - file_put_contents(($this->warmupDir ?: $this->getBuildDir()).'/annotations.map', sprintf('debug && null !== $this->startTime ? $this->startTime : -\INF; - } - - public function getCacheDir(): string - { - return $this->getProjectDir().'/var/cache/'.$this->environment; - } - - public function getBuildDir(): string - { - // Returns $this->getCacheDir() for backward compatibility - return $this->getCacheDir(); - } - - public function getLogDir(): string - { - return $this->getProjectDir().'/var/log'; - } - - public function getCharset(): string - { - return 'UTF-8'; - } - - /** - * Gets the patterns defining the classes to parse and cache for annotations. - */ - public function getAnnotatedClassesToCompile(): array - { - return []; - } - - /** - * Initializes bundles. - * - * @return void - * - * @throws \LogicException if two bundles share a common name - */ - protected function initializeBundles() - { - // init bundles - $this->bundles = []; - foreach ($this->registerBundles() as $bundle) { - $name = $bundle->getName(); - if (isset($this->bundles[$name])) { - throw new \LogicException(sprintf('Trying to register two bundles with the same name "%s".', $name)); - } - $this->bundles[$name] = $bundle; - } - } - - /** - * The extension point similar to the Bundle::build() method. - * - * Use this method to register compiler passes and manipulate the container during the building process. - * - * @return void - */ - protected function build(ContainerBuilder $container) - { - } - - /** - * Gets the container class. - * - * @throws \InvalidArgumentException If the generated classname is invalid - */ - protected function getContainerClass(): string - { - $class = static::class; - $class = str_contains($class, "@anonymous\0") ? get_parent_class($class).str_replace('.', '_', ContainerBuilder::hash($class)) : $class; - $class = str_replace('\\', '_', $class).ucfirst($this->environment).($this->debug ? 'Debug' : '').'Container'; - - if (!preg_match('/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$/', $class)) { - throw new \InvalidArgumentException(sprintf('The environment "%s" contains invalid characters, it can only contain characters allowed in PHP class names.', $this->environment)); - } - - return $class; - } - - /** - * Gets the container's base class. - * - * All names except Container must be fully qualified. - */ - protected function getContainerBaseClass(): string - { - return 'Container'; - } - - /** - * Initializes the service container. - * - * The built version of the service container is used when fresh, otherwise the - * container is built. - * - * @return void - */ - protected function initializeContainer() - { - $class = $this->getContainerClass(); - $buildDir = $this->warmupDir ?: $this->getBuildDir(); - $cache = new ConfigCache($buildDir.'/'.$class.'.php', $this->debug); - $cachePath = $cache->getPath(); - - // Silence E_WARNING to ignore "include" failures - don't use "@" to prevent silencing fatal errors - $errorLevel = error_reporting(\E_ALL ^ \E_WARNING); - - try { - if (is_file($cachePath) && \is_object($this->container = include $cachePath) - && (!$this->debug || (self::$freshCache[$cachePath] ?? $cache->isFresh())) - ) { - self::$freshCache[$cachePath] = true; - $this->container->set('kernel', $this); - error_reporting($errorLevel); - - return; - } - } catch (\Throwable $e) { - } - - $oldContainer = \is_object($this->container) ? new \ReflectionClass($this->container) : $this->container = null; - - try { - is_dir($buildDir) ?: mkdir($buildDir, 0777, true); - - if ($lock = fopen($cachePath.'.lock', 'w+')) { - if (!flock($lock, \LOCK_EX | \LOCK_NB, $wouldBlock) && !flock($lock, $wouldBlock ? \LOCK_SH : \LOCK_EX)) { - fclose($lock); - $lock = null; - } elseif (!is_file($cachePath) || !\is_object($this->container = include $cachePath)) { - $this->container = null; - } elseif (!$oldContainer || $this->container::class !== $oldContainer->name) { - flock($lock, \LOCK_UN); - fclose($lock); - $this->container->set('kernel', $this); - - return; - } - } - } catch (\Throwable $e) { - } finally { - error_reporting($errorLevel); - } - - if ($collectDeprecations = $this->debug && !\defined('PHPUNIT_COMPOSER_INSTALL')) { - $collectedLogs = []; - $previousHandler = set_error_handler(function ($type, $message, $file, $line) use (&$collectedLogs, &$previousHandler) { - if (\E_USER_DEPRECATED !== $type && \E_DEPRECATED !== $type) { - return $previousHandler ? $previousHandler($type, $message, $file, $line) : false; - } - - if (isset($collectedLogs[$message])) { - ++$collectedLogs[$message]['count']; - - return null; - } - - $backtrace = debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS, 5); - // Clean the trace by removing first frames added by the error handler itself. - for ($i = 0; isset($backtrace[$i]); ++$i) { - if (isset($backtrace[$i]['file'], $backtrace[$i]['line']) && $backtrace[$i]['line'] === $line && $backtrace[$i]['file'] === $file) { - $backtrace = \array_slice($backtrace, 1 + $i); - break; - } - } - for ($i = 0; isset($backtrace[$i]); ++$i) { - if (!isset($backtrace[$i]['file'], $backtrace[$i]['line'], $backtrace[$i]['function'])) { - continue; - } - if (!isset($backtrace[$i]['class']) && 'trigger_deprecation' === $backtrace[$i]['function']) { - $file = $backtrace[$i]['file']; - $line = $backtrace[$i]['line']; - $backtrace = \array_slice($backtrace, 1 + $i); - break; - } - } - - // Remove frames added by DebugClassLoader. - for ($i = \count($backtrace) - 2; 0 < $i; --$i) { - if (DebugClassLoader::class === ($backtrace[$i]['class'] ?? null)) { - $backtrace = [$backtrace[$i + 1]]; - break; - } - } - - $collectedLogs[$message] = [ - 'type' => $type, - 'message' => $message, - 'file' => $file, - 'line' => $line, - 'trace' => [$backtrace[0]], - 'count' => 1, - ]; - - return null; - }); - } - - try { - $container = null; - $container = $this->buildContainer(); - $container->compile(); - } finally { - if ($collectDeprecations) { - restore_error_handler(); - - @file_put_contents($buildDir.'/'.$class.'Deprecations.log', serialize(array_values($collectedLogs))); - @file_put_contents($buildDir.'/'.$class.'Compiler.log', null !== $container ? implode("\n", $container->getCompiler()->getLog()) : ''); - } - } - - $this->dumpContainer($cache, $container, $class, $this->getContainerBaseClass()); - - if ($lock) { - flock($lock, \LOCK_UN); - fclose($lock); - } - - $this->container = require $cachePath; - $this->container->set('kernel', $this); - - if ($oldContainer && $this->container::class !== $oldContainer->name) { - // Because concurrent requests might still be using them, - // old container files are not removed immediately, - // but on a next dump of the container. - static $legacyContainers = []; - $oldContainerDir = \dirname($oldContainer->getFileName()); - $legacyContainers[$oldContainerDir.'.legacy'] = true; - foreach (glob(\dirname($oldContainerDir).\DIRECTORY_SEPARATOR.'*.legacy', \GLOB_NOSORT) as $legacyContainer) { - if (!isset($legacyContainers[$legacyContainer]) && @unlink($legacyContainer)) { - (new Filesystem())->remove(substr($legacyContainer, 0, -7)); - } - } - - touch($oldContainerDir.'.legacy'); - } - - $buildDir = $this->container->getParameter('kernel.build_dir'); - $cacheDir = $this->container->getParameter('kernel.cache_dir'); - $preload = $this instanceof WarmableInterface ? (array) $this->warmUp($cacheDir, $buildDir) : []; - - if ($this->container->has('cache_warmer')) { - $cacheWarmer = $this->container->get('cache_warmer'); - - if ($cacheDir !== $buildDir) { - $cacheWarmer->enableOptionalWarmers(); - } - - $preload = array_merge($preload, (array) $cacheWarmer->warmUp($cacheDir, $buildDir)); - } - - if ($preload && file_exists($preloadFile = $buildDir.'/'.$class.'.preload.php')) { - Preloader::append($preloadFile, $preload); - } - } - - /** - * Returns the kernel parameters. - */ - protected function getKernelParameters(): array - { - $bundles = []; - $bundlesMetadata = []; - - foreach ($this->bundles as $name => $bundle) { - $bundles[$name] = $bundle::class; - $bundlesMetadata[$name] = [ - 'path' => $bundle->getPath(), - 'namespace' => $bundle->getNamespace(), - ]; - } - - return [ - 'kernel.project_dir' => realpath($this->getProjectDir()) ?: $this->getProjectDir(), - 'kernel.environment' => $this->environment, - 'kernel.runtime_environment' => '%env(default:kernel.environment:APP_RUNTIME_ENV)%', - 'kernel.runtime_mode' => '%env(query_string:default:container.runtime_mode:APP_RUNTIME_MODE)%', - 'kernel.runtime_mode.web' => '%env(bool:default::key:web:default:kernel.runtime_mode:)%', - 'kernel.runtime_mode.cli' => '%env(not:default:kernel.runtime_mode.web:)%', - 'kernel.runtime_mode.worker' => '%env(bool:default::key:worker:default:kernel.runtime_mode:)%', - 'kernel.debug' => $this->debug, - 'kernel.build_dir' => realpath($buildDir = $this->warmupDir ?: $this->getBuildDir()) ?: $buildDir, - 'kernel.cache_dir' => realpath($cacheDir = ($this->getCacheDir() === $this->getBuildDir() ? ($this->warmupDir ?: $this->getCacheDir()) : $this->getCacheDir())) ?: $cacheDir, - 'kernel.logs_dir' => realpath($this->getLogDir()) ?: $this->getLogDir(), - 'kernel.bundles' => $bundles, - 'kernel.bundles_metadata' => $bundlesMetadata, - 'kernel.charset' => $this->getCharset(), - 'kernel.container_class' => $this->getContainerClass(), - ]; - } - - /** - * Builds the service container. - * - * @throws \RuntimeException - */ - protected function buildContainer(): ContainerBuilder - { - foreach (['cache' => $this->getCacheDir(), 'build' => $this->warmupDir ?: $this->getBuildDir(), 'logs' => $this->getLogDir()] as $name => $dir) { - if (!is_dir($dir)) { - if (false === @mkdir($dir, 0777, true) && !is_dir($dir)) { - throw new \RuntimeException(sprintf('Unable to create the "%s" directory (%s).', $name, $dir)); - } - } elseif (!is_writable($dir)) { - throw new \RuntimeException(sprintf('Unable to write in the "%s" directory (%s).', $name, $dir)); - } - } - - $container = $this->getContainerBuilder(); - $container->addObjectResource($this); - $this->prepareContainer($container); - $this->registerContainerConfiguration($this->getContainerLoader($container)); - - $container->addCompilerPass(new AddAnnotatedClassesToCachePass($this)); - - return $container; - } - - /** - * Prepares the ContainerBuilder before it is compiled. - * - * @return void - */ - protected function prepareContainer(ContainerBuilder $container) - { - $extensions = []; - foreach ($this->bundles as $bundle) { - if ($extension = $bundle->getContainerExtension()) { - $container->registerExtension($extension); - } - - if ($this->debug) { - $container->addObjectResource($bundle); - } - } - - foreach ($this->bundles as $bundle) { - $bundle->build($container); - } - - $this->build($container); - - foreach ($container->getExtensions() as $extension) { - $extensions[] = $extension->getAlias(); - } - - // ensure these extensions are implicitly loaded - $container->getCompilerPassConfig()->setMergePass(new MergeExtensionConfigurationPass($extensions)); - } - - /** - * Gets a new ContainerBuilder instance used to build the service container. - */ - protected function getContainerBuilder(): ContainerBuilder - { - $container = new ContainerBuilder(); - $container->getParameterBag()->add($this->getKernelParameters()); - - if ($this instanceof ExtensionInterface) { - $container->registerExtension($this); - } - if ($this instanceof CompilerPassInterface) { - $container->addCompilerPass($this, PassConfig::TYPE_BEFORE_OPTIMIZATION, -10000); - } - - return $container; - } - - /** - * Dumps the service container to PHP code in the cache. - * - * @param string $class The name of the class to generate - * @param string $baseClass The name of the container's base class - * - * @return void - */ - protected function dumpContainer(ConfigCache $cache, ContainerBuilder $container, string $class, string $baseClass) - { - // cache the container - $dumper = new PhpDumper($container); - - $buildParameters = []; - foreach ($container->getCompilerPassConfig()->getPasses() as $pass) { - if ($pass instanceof RemoveBuildParametersPass) { - $buildParameters = array_merge($buildParameters, $pass->getRemovedParameters()); - } - } - - $inlineFactories = false; - if (isset($buildParameters['.container.dumper.inline_factories'])) { - $inlineFactories = $buildParameters['.container.dumper.inline_factories']; - } elseif ($container->hasParameter('container.dumper.inline_factories')) { - trigger_deprecation('symfony/http-kernel', '6.3', 'Parameter "%s" is deprecated, use ".%1$s" instead.', 'container.dumper.inline_factories'); - $inlineFactories = $container->getParameter('container.dumper.inline_factories'); - } - - $inlineClassLoader = $this->debug; - if (isset($buildParameters['.container.dumper.inline_class_loader'])) { - $inlineClassLoader = $buildParameters['.container.dumper.inline_class_loader']; - } elseif ($container->hasParameter('container.dumper.inline_class_loader')) { - trigger_deprecation('symfony/http-kernel', '6.3', 'Parameter "%s" is deprecated, use ".%1$s" instead.', 'container.dumper.inline_class_loader'); - $inlineClassLoader = $container->getParameter('container.dumper.inline_class_loader'); - } - - $content = $dumper->dump([ - 'class' => $class, - 'base_class' => $baseClass, - 'file' => $cache->getPath(), - 'as_files' => true, - 'debug' => $this->debug, - 'inline_factories' => $inlineFactories, - 'inline_class_loader' => $inlineClassLoader, - 'build_time' => $container->hasParameter('kernel.container_build_time') ? $container->getParameter('kernel.container_build_time') : time(), - 'preload_classes' => array_map('get_class', $this->bundles), - ]); - - $rootCode = array_pop($content); - $dir = \dirname($cache->getPath()).'/'; - $fs = new Filesystem(); - - foreach ($content as $file => $code) { - $fs->dumpFile($dir.$file, $code); - @chmod($dir.$file, 0666 & ~umask()); - } - $legacyFile = \dirname($dir.key($content)).'.legacy'; - if (is_file($legacyFile)) { - @unlink($legacyFile); - } - - $cache->write($rootCode, $container->getResources()); - } - - /** - * Returns a loader for the container. - */ - protected function getContainerLoader(ContainerInterface $container): DelegatingLoader - { - $env = $this->getEnvironment(); - $locator = new FileLocator($this); - $resolver = new LoaderResolver([ - new XmlFileLoader($container, $locator, $env), - new YamlFileLoader($container, $locator, $env), - new IniFileLoader($container, $locator, $env), - new PhpFileLoader($container, $locator, $env, class_exists(ConfigBuilderGenerator::class) ? new ConfigBuilderGenerator($this->getBuildDir()) : null), - new GlobFileLoader($container, $locator, $env), - new DirectoryLoader($container, $locator, $env), - new ClosureLoader($container, $env), - ]); - - return new DelegatingLoader($resolver); - } - - private function preBoot(): ContainerInterface - { - if ($this->debug) { - $this->startTime = microtime(true); - } - if ($this->debug && !isset($_ENV['SHELL_VERBOSITY']) && !isset($_SERVER['SHELL_VERBOSITY'])) { - if (\function_exists('putenv')) { - putenv('SHELL_VERBOSITY=3'); - } - $_ENV['SHELL_VERBOSITY'] = 3; - $_SERVER['SHELL_VERBOSITY'] = 3; - } - - $this->initializeBundles(); - $this->initializeContainer(); - - $container = $this->container; - - if ($container->hasParameter('kernel.trusted_hosts') && $trustedHosts = $container->getParameter('kernel.trusted_hosts')) { - Request::setTrustedHosts($trustedHosts); - } - - if ($container->hasParameter('kernel.trusted_proxies') && $container->hasParameter('kernel.trusted_headers') && $trustedProxies = $container->getParameter('kernel.trusted_proxies')) { - Request::setTrustedProxies(\is_array($trustedProxies) ? $trustedProxies : array_map('trim', explode(',', $trustedProxies)), $container->getParameter('kernel.trusted_headers')); - } - - return $container; - } - - /** - * Removes comments from a PHP source string. - * - * We don't use the PHP php_strip_whitespace() function - * as we want the content to be readable and well-formatted. - * - * @deprecated since Symfony 6.4 without replacement - */ - public static function stripComments(string $source): string - { - trigger_deprecation('symfony/http-kernel', '6.4', 'Method "%s()" is deprecated without replacement.', __METHOD__); - - if (!\function_exists('token_get_all')) { - return $source; - } - - $rawChunk = ''; - $output = ''; - $tokens = token_get_all($source); - $ignoreSpace = false; - for ($i = 0; isset($tokens[$i]); ++$i) { - $token = $tokens[$i]; - if (!isset($token[1]) || 'b"' === $token) { - $rawChunk .= $token; - } elseif (\T_START_HEREDOC === $token[0]) { - $output .= $rawChunk.$token[1]; - do { - $token = $tokens[++$i]; - $output .= isset($token[1]) && 'b"' !== $token ? $token[1] : $token; - } while (\T_END_HEREDOC !== $token[0]); - $rawChunk = ''; - } elseif (\T_WHITESPACE === $token[0]) { - if ($ignoreSpace) { - $ignoreSpace = false; - - continue; - } - - // replace multiple new lines with a single newline - $rawChunk .= preg_replace(['/\n{2,}/S'], "\n", $token[1]); - } elseif (\in_array($token[0], [\T_COMMENT, \T_DOC_COMMENT])) { - if (!\in_array($rawChunk[\strlen($rawChunk) - 1], [' ', "\n", "\r", "\t"], true)) { - $rawChunk .= ' '; - } - $ignoreSpace = true; - } else { - $rawChunk .= $token[1]; - - // The PHP-open tag already has a new-line - if (\T_OPEN_TAG === $token[0]) { - $ignoreSpace = true; - } else { - $ignoreSpace = false; - } - } - } - - $output .= $rawChunk; - - unset($tokens, $rawChunk); - gc_mem_caches(); - - return $output; - } - - public function __sleep(): array - { - return ['environment', 'debug']; - } - - /** - * @return void - */ - public function __wakeup() - { - if (\is_object($this->environment) || \is_object($this->debug)) { - throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); - } - - $this->__construct($this->environment, $this->debug); - } -} diff --git a/docker/streamline-src/vendor/symfony/http-kernel/Log/Logger.php b/docker/streamline-src/vendor/symfony/http-kernel/Log/Logger.php deleted file mode 100644 index 50578a25..00000000 --- a/docker/streamline-src/vendor/symfony/http-kernel/Log/Logger.php +++ /dev/null @@ -1,190 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpKernel\Log; - -use Psr\Log\AbstractLogger; -use Psr\Log\InvalidArgumentException; -use Psr\Log\LogLevel; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\RequestStack; - -/** - * Minimalist PSR-3 logger designed to write in stderr or any other stream. - * - * @author Kévin Dunglas - */ -class Logger extends AbstractLogger implements DebugLoggerInterface -{ - private const LEVELS = [ - LogLevel::DEBUG => 0, - LogLevel::INFO => 1, - LogLevel::NOTICE => 2, - LogLevel::WARNING => 3, - LogLevel::ERROR => 4, - LogLevel::CRITICAL => 5, - LogLevel::ALERT => 6, - LogLevel::EMERGENCY => 7, - ]; - private const PRIORITIES = [ - LogLevel::DEBUG => 100, - LogLevel::INFO => 200, - LogLevel::NOTICE => 250, - LogLevel::WARNING => 300, - LogLevel::ERROR => 400, - LogLevel::CRITICAL => 500, - LogLevel::ALERT => 550, - LogLevel::EMERGENCY => 600, - ]; - - private int $minLevelIndex; - private \Closure $formatter; - private bool $debug = false; - private array $logs = []; - private array $errorCount = []; - - /** @var resource|null */ - private $handle; - - /** - * @param string|resource|null $output - */ - public function __construct(?string $minLevel = null, $output = null, ?callable $formatter = null, private readonly ?RequestStack $requestStack = null, bool $debug = false) - { - if (null === $minLevel) { - $minLevel = null === $output || 'php://stdout' === $output || 'php://stderr' === $output ? LogLevel::ERROR : LogLevel::WARNING; - - if (isset($_ENV['SHELL_VERBOSITY']) || isset($_SERVER['SHELL_VERBOSITY'])) { - $minLevel = match ((int) ($_ENV['SHELL_VERBOSITY'] ?? $_SERVER['SHELL_VERBOSITY'])) { - -1 => LogLevel::ERROR, - 1 => LogLevel::NOTICE, - 2 => LogLevel::INFO, - 3 => LogLevel::DEBUG, - default => $minLevel, - }; - } - } - - if (!isset(self::LEVELS[$minLevel])) { - throw new InvalidArgumentException(sprintf('The log level "%s" does not exist.', $minLevel)); - } - - $this->minLevelIndex = self::LEVELS[$minLevel]; - $this->formatter = null !== $formatter ? $formatter(...) : $this->format(...); - if ($output && false === $this->handle = \is_string($output) ? @fopen($output, 'a') : $output) { - throw new InvalidArgumentException(sprintf('Unable to open "%s".', $output)); - } - $this->debug = $debug; - } - - public function enableDebug(): void - { - $this->debug = true; - } - - public function log($level, $message, array $context = []): void - { - if (!isset(self::LEVELS[$level])) { - throw new InvalidArgumentException(sprintf('The log level "%s" does not exist.', $level)); - } - - if (self::LEVELS[$level] < $this->minLevelIndex) { - return; - } - - $formatter = $this->formatter; - if ($this->handle) { - @fwrite($this->handle, $formatter($level, $message, $context).\PHP_EOL); - } else { - error_log($formatter($level, $message, $context, false)); - } - - if ($this->debug && $this->requestStack) { - $this->record($level, $message, $context); - } - } - - public function getLogs(?Request $request = null): array - { - if ($request) { - return $this->logs[spl_object_id($request)] ?? []; - } - - return array_merge(...array_values($this->logs)); - } - - public function countErrors(?Request $request = null): int - { - if ($request) { - return $this->errorCount[spl_object_id($request)] ?? 0; - } - - return array_sum($this->errorCount); - } - - public function clear(): void - { - $this->logs = []; - $this->errorCount = []; - } - - private function format(string $level, string $message, array $context, bool $prefixDate = true): string - { - if (str_contains($message, '{')) { - $replacements = []; - foreach ($context as $key => $val) { - if (null === $val || \is_scalar($val) || $val instanceof \Stringable) { - $replacements["{{$key}}"] = $val; - } elseif ($val instanceof \DateTimeInterface) { - $replacements["{{$key}}"] = $val->format(\DateTimeInterface::RFC3339); - } elseif (\is_object($val)) { - $replacements["{{$key}}"] = '[object '.$val::class.']'; - } else { - $replacements["{{$key}}"] = '['.\gettype($val).']'; - } - } - - $message = strtr($message, $replacements); - } - - $log = sprintf('[%s] %s', $level, $message); - if ($prefixDate) { - $log = date(\DateTimeInterface::RFC3339).' '.$log; - } - - return $log; - } - - private function record($level, $message, array $context): void - { - $request = $this->requestStack->getCurrentRequest(); - $key = $request ? spl_object_id($request) : ''; - - $this->logs[$key][] = [ - 'channel' => null, - 'context' => $context, - 'message' => $message, - 'priority' => self::PRIORITIES[$level], - 'priorityName' => $level, - 'timestamp' => time(), - 'timestamp_rfc3339' => date(\DATE_RFC3339_EXTENDED), - ]; - - $this->errorCount[$key] ??= 0; - switch ($level) { - case LogLevel::ERROR: - case LogLevel::CRITICAL: - case LogLevel::ALERT: - case LogLevel::EMERGENCY: - ++$this->errorCount[$key]; - } - } -} diff --git a/docker/streamline-src/vendor/symfony/http-kernel/Profiler/FileProfilerStorage.php b/docker/streamline-src/vendor/symfony/http-kernel/Profiler/FileProfilerStorage.php deleted file mode 100644 index d2372c30..00000000 --- a/docker/streamline-src/vendor/symfony/http-kernel/Profiler/FileProfilerStorage.php +++ /dev/null @@ -1,358 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpKernel\Profiler; - -/** - * Storage for profiler using files. - * - * @author Alexandre Salomé - */ -class FileProfilerStorage implements ProfilerStorageInterface -{ - /** - * Folder where profiler data are stored. - */ - private string $folder; - - /** - * Constructs the file storage using a "dsn-like" path. - * - * Example : "file:/path/to/the/storage/folder" - * - * @throws \RuntimeException - */ - public function __construct(string $dsn) - { - if (!str_starts_with($dsn, 'file:')) { - throw new \RuntimeException(sprintf('Please check your configuration. You are trying to use FileStorage with an invalid dsn "%s". The expected format is "file:/path/to/the/storage/folder".', $dsn)); - } - $this->folder = substr($dsn, 5); - - if (!is_dir($this->folder) && false === @mkdir($this->folder, 0777, true) && !is_dir($this->folder)) { - throw new \RuntimeException(sprintf('Unable to create the storage directory (%s).', $this->folder)); - } - } - - /** - * @param \Closure|null $filter A filter to apply on the list of tokens - */ - public function find(?string $ip, ?string $url, ?int $limit, ?string $method, ?int $start = null, ?int $end = null, ?string $statusCode = null/* , \Closure $filter = null */): array - { - $filter = 7 < \func_num_args() ? func_get_arg(7) : null; - $file = $this->getIndexFilename(); - - if (!file_exists($file)) { - return []; - } - - $file = fopen($file, 'r'); - fseek($file, 0, \SEEK_END); - - $result = []; - while (\count($result) < $limit && $line = $this->readLineFromFile($file)) { - $values = str_getcsv($line, ',', '"', '\\'); - - if (7 > \count($values)) { - // skip invalid lines - continue; - } - - [$csvToken, $csvIp, $csvMethod, $csvUrl, $csvTime, $csvParent, $csvStatusCode, $csvVirtualType] = $values + [7 => null]; - $csvTime = (int) $csvTime; - - $urlFilter = false; - if ($url) { - $urlFilter = str_starts_with($url, '!') ? str_contains($csvUrl, substr($url, 1)) : !str_contains($csvUrl, $url); - } - - if ($ip && !str_contains($csvIp, $ip) || $urlFilter || $method && !str_contains($csvMethod, $method) || $statusCode && !str_contains($csvStatusCode, $statusCode)) { - continue; - } - - if (!empty($start) && $csvTime < $start) { - continue; - } - - if (!empty($end) && $csvTime > $end) { - continue; - } - - $profile = [ - 'token' => $csvToken, - 'ip' => $csvIp, - 'method' => $csvMethod, - 'url' => $csvUrl, - 'time' => $csvTime, - 'parent' => $csvParent, - 'status_code' => $csvStatusCode, - 'virtual_type' => $csvVirtualType ?: 'request', - ]; - - if ($filter && !$filter($profile)) { - continue; - } - - $result[$csvToken] = $profile; - } - - fclose($file); - - return array_values($result); - } - - /** - * @return void - */ - public function purge() - { - $flags = \FilesystemIterator::SKIP_DOTS; - $iterator = new \RecursiveDirectoryIterator($this->folder, $flags); - $iterator = new \RecursiveIteratorIterator($iterator, \RecursiveIteratorIterator::CHILD_FIRST); - - foreach ($iterator as $file) { - if (is_file($file)) { - unlink($file); - } else { - rmdir($file); - } - } - } - - public function read(string $token): ?Profile - { - return $this->doRead($token); - } - - /** - * @throws \RuntimeException - */ - public function write(Profile $profile): bool - { - $file = $this->getFilename($profile->getToken()); - - $profileIndexed = is_file($file); - if (!$profileIndexed) { - // Create directory - $dir = \dirname($file); - if (!is_dir($dir) && false === @mkdir($dir, 0777, true) && !is_dir($dir)) { - throw new \RuntimeException(sprintf('Unable to create the storage directory (%s).', $dir)); - } - } - - $profileToken = $profile->getToken(); - // when there are errors in sub-requests, the parent and/or children tokens - // may equal the profile token, resulting in infinite loops - $parentToken = $profile->getParentToken() !== $profileToken ? $profile->getParentToken() : null; - $childrenToken = array_filter(array_map(fn (Profile $p) => $profileToken !== $p->getToken() ? $p->getToken() : null, $profile->getChildren())); - - // Store profile - $data = [ - 'token' => $profileToken, - 'parent' => $parentToken, - 'children' => $childrenToken, - 'data' => $profile->getCollectors(), - 'ip' => $profile->getIp(), - 'method' => $profile->getMethod(), - 'url' => $profile->getUrl(), - 'time' => $profile->getTime(), - 'status_code' => $profile->getStatusCode(), - 'virtual_type' => $profile->getVirtualType() ?? 'request', - ]; - - $data = serialize($data); - - if (\function_exists('gzencode')) { - $data = gzencode($data, 3); - } - - if (false === file_put_contents($file, $data, \LOCK_EX)) { - return false; - } - - if (!$profileIndexed) { - // Add to index - if (false === $file = fopen($this->getIndexFilename(), 'a')) { - return false; - } - - fputcsv($file, [ - $profile->getToken(), - $profile->getIp(), - $profile->getMethod(), - $profile->getUrl(), - $profile->getTime() ?: time(), - $profile->getParentToken(), - $profile->getStatusCode(), - $profile->getVirtualType() ?? 'request', - ], ',', '"', '\\'); - fclose($file); - - if (1 === mt_rand(1, 10)) { - $this->removeExpiredProfiles(); - } - } - - return true; - } - - /** - * Gets filename to store data, associated to the token. - */ - protected function getFilename(string $token): string - { - // Uses 4 last characters, because first are mostly the same. - $folderA = substr($token, -2, 2); - $folderB = substr($token, -4, 2); - - return $this->folder.'/'.$folderA.'/'.$folderB.'/'.$token; - } - - /** - * Gets the index filename. - */ - protected function getIndexFilename(): string - { - return $this->folder.'/index.csv'; - } - - /** - * Reads a line in the file, backward. - * - * This function automatically skips the empty lines and do not include the line return in result value. - * - * @param resource $file The file resource, with the pointer placed at the end of the line to read - */ - protected function readLineFromFile($file): mixed - { - $line = ''; - $position = ftell($file); - - if (0 === $position) { - return null; - } - - while (true) { - $chunkSize = min($position, 1024); - $position -= $chunkSize; - fseek($file, $position); - - if (0 === $chunkSize) { - // bof reached - break; - } - - $buffer = fread($file, $chunkSize); - - if (false === ($upTo = strrpos($buffer, "\n"))) { - $line = $buffer.$line; - continue; - } - - $position += $upTo; - $line = substr($buffer, $upTo + 1).$line; - fseek($file, max(0, $position), \SEEK_SET); - - if ('' !== $line) { - break; - } - } - - return '' === $line ? null : $line; - } - - /** - * @return Profile - */ - protected function createProfileFromData(string $token, array $data, ?Profile $parent = null) - { - $profile = new Profile($token); - $profile->setIp($data['ip']); - $profile->setMethod($data['method']); - $profile->setUrl($data['url']); - $profile->setTime($data['time']); - $profile->setStatusCode($data['status_code']); - $profile->setVirtualType($data['virtual_type'] ?: 'request'); - $profile->setCollectors($data['data']); - - if (!$parent && $data['parent']) { - $parent = $this->read($data['parent']); - } - - if ($parent) { - $profile->setParent($parent); - } - - foreach ($data['children'] as $token) { - if (null !== $childProfile = $this->doRead($token, $profile)) { - $profile->addChild($childProfile); - } - } - - return $profile; - } - - private function doRead($token, ?Profile $profile = null): ?Profile - { - if (!$token || !file_exists($file = $this->getFilename($token))) { - return null; - } - - $h = fopen($file, 'r'); - flock($h, \LOCK_SH); - $data = stream_get_contents($h); - flock($h, \LOCK_UN); - fclose($h); - - if (\function_exists('gzdecode')) { - $data = @gzdecode($data) ?: $data; - } - - if (!$data = unserialize($data)) { - return null; - } - - return $this->createProfileFromData($token, $data, $profile); - } - - private function removeExpiredProfiles(): void - { - $minimalProfileTimestamp = time() - 2 * 86400; - $file = $this->getIndexFilename(); - $handle = fopen($file, 'r'); - - if ($offset = is_file($file.'.offset') ? (int) file_get_contents($file.'.offset') : 0) { - fseek($handle, $offset); - } - - while ($line = fgets($handle)) { - $values = str_getcsv($line, ',', '"', '\\'); - - if (7 > \count($values)) { - // skip invalid lines - $offset += \strlen($line); - continue; - } - - [$csvToken, , , , $csvTime] = $values; - - if ($csvTime >= $minimalProfileTimestamp) { - break; - } - - @unlink($this->getFilename($csvToken)); - $offset += \strlen($line); - } - fclose($handle); - - file_put_contents($file.'.offset', $offset); - } -} diff --git a/docker/streamline-src/vendor/symfony/http-kernel/composer.json b/docker/streamline-src/vendor/symfony/http-kernel/composer.json deleted file mode 100644 index 1c70224a..00000000 --- a/docker/streamline-src/vendor/symfony/http-kernel/composer.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "name": "symfony/http-kernel", - "type": "library", - "description": "Provides a structured process for converting a Request into a Response", - "keywords": [], - "homepage": "https://symfony.com", - "license": "MIT", - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/error-handler": "^6.4|^7.0", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/polyfill-ctype": "^1.8", - "psr/log": "^1|^2|^3" - }, - "require-dev": { - "symfony/browser-kit": "^5.4|^6.0|^7.0", - "symfony/clock": "^6.2|^7.0", - "symfony/config": "^6.1|^7.0", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/css-selector": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/dom-crawler": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", - "symfony/http-client-contracts": "^2.5|^3", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/property-access": "^5.4.5|^6.0.5|^7.0", - "symfony/routing": "^5.4|^6.0|^7.0", - "symfony/serializer": "^6.4.4|^7.0.4", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/translation": "^5.4|^6.0|^7.0", - "symfony/translation-contracts": "^2.5|^3", - "symfony/uid": "^5.4|^6.0|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/var-dumper": "^5.4|^6.4|^7.0", - "symfony/var-exporter": "^6.2|^7.0", - "psr/cache": "^1.0|^2.0|^3.0", - "twig/twig": "^2.13|^3.0.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<6.1", - "symfony/console": "<5.4", - "symfony/form": "<5.4", - "symfony/dependency-injection": "<6.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/http-client": "<5.4", - "symfony/http-client-contracts": "<2.5", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/translation-contracts": "<2.5", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<6.4", - "symfony/var-dumper": "<6.3", - "twig/twig": "<2.13" - }, - "autoload": { - "psr-4": { "Symfony\\Component\\HttpKernel\\": "" }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "minimum-stability": "dev" -} diff --git a/docker/streamline-src/vendor/symfony/mailer/MailerInterface.php b/docker/streamline-src/vendor/symfony/mailer/MailerInterface.php deleted file mode 100644 index ebac4b53..00000000 --- a/docker/streamline-src/vendor/symfony/mailer/MailerInterface.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Mailer; - -use Symfony\Component\Mailer\Exception\TransportExceptionInterface; -use Symfony\Component\Mime\RawMessage; - -/** - * Interface for mailers able to send emails synchronously and/or asynchronously. - * - * Implementations must support synchronous and asynchronous sending. - * - * @author Fabien Potencier - */ -interface MailerInterface -{ - /** - * @throws TransportExceptionInterface - */ - public function send(RawMessage $message, ?Envelope $envelope = null): void; -} diff --git a/docker/streamline-src/vendor/symfony/mailer/Transport/SendmailTransport.php b/docker/streamline-src/vendor/symfony/mailer/Transport/SendmailTransport.php deleted file mode 100644 index 3add460e..00000000 --- a/docker/streamline-src/vendor/symfony/mailer/Transport/SendmailTransport.php +++ /dev/null @@ -1,124 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Mailer\Transport; - -use Psr\EventDispatcher\EventDispatcherInterface; -use Psr\Log\LoggerInterface; -use Symfony\Component\Mailer\Envelope; -use Symfony\Component\Mailer\SentMessage; -use Symfony\Component\Mailer\Transport\Smtp\SmtpTransport; -use Symfony\Component\Mailer\Transport\Smtp\Stream\AbstractStream; -use Symfony\Component\Mailer\Transport\Smtp\Stream\ProcessStream; -use Symfony\Component\Mime\RawMessage; - -/** - * SendmailTransport for sending mail through a Sendmail/Postfix (etc..) binary. - * - * Transport can be instantiated through SendmailTransportFactory or NativeTransportFactory: - * - * - SendmailTransportFactory to use most common sendmail path and recommended options - * - NativeTransportFactory when configuration is set via php.ini - * - * @author Fabien Potencier - * @author Chris Corbyn - */ -class SendmailTransport extends AbstractTransport -{ - private string $command = '/usr/sbin/sendmail -bs'; - private ProcessStream $stream; - private ?SmtpTransport $transport = null; - - /** - * Constructor. - * - * Supported modes are -bs and -t, with any additional flags desired. - * - * The recommended mode is "-bs" since it is interactive and failure notifications are hence possible. - * Note that the -t mode does not support error reporting and does not support Bcc properly (the Bcc headers are not removed). - * - * If using -t mode, you are strongly advised to include -oi or -i in the flags (like /usr/sbin/sendmail -oi -t) - * - * -f flag will be appended automatically if one is not present. - */ - public function __construct(?string $command = null, ?EventDispatcherInterface $dispatcher = null, ?LoggerInterface $logger = null) - { - parent::__construct($dispatcher, $logger); - - if (null !== $command) { - if (!str_contains($command, ' -bs') && !str_contains($command, ' -t')) { - throw new \InvalidArgumentException(sprintf('Unsupported sendmail command flags "%s"; must be one of "-bs" or "-t" but can include additional flags.', $command)); - } - - $this->command = $command; - } - - $this->stream = new ProcessStream(); - if (str_contains($this->command, ' -bs')) { - $this->stream->setCommand($this->command); - $this->stream->setInteractive(true); - $this->transport = new SmtpTransport($this->stream, $dispatcher, $logger); - } - } - - public function send(RawMessage $message, ?Envelope $envelope = null): ?SentMessage - { - if ($this->transport) { - return $this->transport->send($message, $envelope); - } - - return parent::send($message, $envelope); - } - - public function __toString(): string - { - if ($this->transport) { - return (string) $this->transport; - } - - return 'smtp://sendmail'; - } - - protected function doSend(SentMessage $message): void - { - $this->getLogger()->debug(sprintf('Email transport "%s" starting', __CLASS__)); - - $command = $this->command; - - if ($recipients = $message->getEnvelope()->getRecipients()) { - $command = str_replace(' -t', '', $command); - } - - if (!str_contains($command, ' -f')) { - $command .= ' -f'.escapeshellarg($message->getEnvelope()->getSender()->getEncodedAddress()); - } - - $chunks = AbstractStream::replace("\r\n", "\n", $message->toIterable()); - - if (!str_contains($command, ' -i') && !str_contains($command, ' -oi')) { - $chunks = AbstractStream::replace("\n.", "\n..", $chunks); - } - - foreach ($recipients as $recipient) { - $command .= ' '.escapeshellarg($recipient->getEncodedAddress()); - } - - $this->stream->setCommand($command); - $this->stream->initialize(); - foreach ($chunks as $chunk) { - $this->stream->write($chunk); - } - $this->stream->flush(); - $this->stream->terminate(); - - $this->getLogger()->debug(sprintf('Email transport "%s" stopped', __CLASS__)); - } -} diff --git a/docker/streamline-src/vendor/symfony/mailer/Transport/Smtp/SmtpTransport.php b/docker/streamline-src/vendor/symfony/mailer/Transport/Smtp/SmtpTransport.php deleted file mode 100644 index 0de38fb2..00000000 --- a/docker/streamline-src/vendor/symfony/mailer/Transport/Smtp/SmtpTransport.php +++ /dev/null @@ -1,392 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Mailer\Transport\Smtp; - -use Psr\EventDispatcher\EventDispatcherInterface; -use Psr\Log\LoggerInterface; -use Symfony\Component\Mailer\Envelope; -use Symfony\Component\Mailer\Exception\LogicException; -use Symfony\Component\Mailer\Exception\TransportException; -use Symfony\Component\Mailer\Exception\TransportExceptionInterface; -use Symfony\Component\Mailer\Exception\UnexpectedResponseException; -use Symfony\Component\Mailer\SentMessage; -use Symfony\Component\Mailer\Transport\AbstractTransport; -use Symfony\Component\Mailer\Transport\Smtp\Stream\AbstractStream; -use Symfony\Component\Mailer\Transport\Smtp\Stream\SocketStream; -use Symfony\Component\Mime\RawMessage; - -/** - * Sends emails over SMTP. - * - * @author Fabien Potencier - * @author Chris Corbyn - */ -class SmtpTransport extends AbstractTransport -{ - private bool $started = false; - private int $restartThreshold = 100; - private int $restartThresholdSleep = 0; - private int $restartCounter = 0; - private int $pingThreshold = 100; - private float $lastMessageTime = 0; - private AbstractStream $stream; - private string $domain = '[127.0.0.1]'; - - public function __construct(?AbstractStream $stream = null, ?EventDispatcherInterface $dispatcher = null, ?LoggerInterface $logger = null) - { - parent::__construct($dispatcher, $logger); - - $this->stream = $stream ?? new SocketStream(); - } - - public function getStream(): AbstractStream - { - return $this->stream; - } - - /** - * Sets the maximum number of messages to send before re-starting the transport. - * - * By default, the threshold is set to 100 (and no sleep at restart). - * - * @param int $threshold The maximum number of messages (0 to disable) - * @param int $sleep The number of seconds to sleep between stopping and re-starting the transport - * - * @return $this - */ - public function setRestartThreshold(int $threshold, int $sleep = 0): static - { - $this->restartThreshold = $threshold; - $this->restartThresholdSleep = $sleep; - - return $this; - } - - /** - * Sets the minimum number of seconds required between two messages, before the server is pinged. - * If the transport wants to send a message and the time since the last message exceeds the specified threshold, - * the transport will ping the server first (NOOP command) to check if the connection is still alive. - * Otherwise the message will be sent without pinging the server first. - * - * Do not set the threshold too low, as the SMTP server may drop the connection if there are too many - * non-mail commands (like pinging the server with NOOP). - * - * By default, the threshold is set to 100 seconds. - * - * @param int $seconds The minimum number of seconds between two messages required to ping the server - * - * @return $this - */ - public function setPingThreshold(int $seconds): static - { - $this->pingThreshold = $seconds; - - return $this; - } - - /** - * Sets the name of the local domain that will be used in HELO. - * - * This should be a fully-qualified domain name and should be truly the domain - * you're using. - * - * If your server does not have a domain name, use the IP address. This will - * automatically be wrapped in square brackets as described in RFC 5321, - * section 4.1.3. - * - * @return $this - */ - public function setLocalDomain(string $domain): static - { - if ('' !== $domain && '[' !== $domain[0]) { - if (filter_var($domain, \FILTER_VALIDATE_IP, \FILTER_FLAG_IPV4)) { - $domain = '['.$domain.']'; - } elseif (filter_var($domain, \FILTER_VALIDATE_IP, \FILTER_FLAG_IPV6)) { - $domain = '[IPv6:'.$domain.']'; - } - } - - $this->domain = $domain; - - return $this; - } - - /** - * Gets the name of the domain that will be used in HELO. - * - * If an IP address was specified, this will be returned wrapped in square - * brackets as described in RFC 5321, section 4.1.3. - */ - public function getLocalDomain(): string - { - return $this->domain; - } - - public function send(RawMessage $message, ?Envelope $envelope = null): ?SentMessage - { - try { - $message = parent::send($message, $envelope); - } catch (TransportExceptionInterface $e) { - if ($this->started) { - try { - $this->executeCommand("RSET\r\n", [250]); - } catch (TransportExceptionInterface) { - // ignore this exception as it probably means that the server error was final - } - } - - throw $e; - } - - $this->checkRestartThreshold(); - - return $message; - } - - protected function parseMessageId(string $mtaResult): string - { - $regexps = [ - '/250 Ok (?P[0-9a-f-]+)\r?$/mis', - '/250 Ok:? queued as (?P[A-Z0-9]+)\r?$/mis', - ]; - $matches = []; - foreach ($regexps as $regexp) { - if (preg_match($regexp, $mtaResult, $matches)) { - return $matches['id']; - } - } - - return ''; - } - - public function __toString(): string - { - if ($this->stream instanceof SocketStream) { - $name = sprintf('smtp%s://%s', ($tls = $this->stream->isTLS()) ? 's' : '', $this->stream->getHost()); - $port = $this->stream->getPort(); - if (!(25 === $port || ($tls && 465 === $port))) { - $name .= ':'.$port; - } - - return $name; - } - - return 'smtp://sendmail'; - } - - /** - * Runs a command against the stream, expecting the given response codes. - * - * @param int[] $codes - * - * @throws TransportException when an invalid response if received - */ - public function executeCommand(string $command, array $codes): string - { - $this->stream->write($command); - $response = $this->getFullResponse(); - $this->assertResponseCode($response, $codes); - - return $response; - } - - protected function doSend(SentMessage $message): void - { - if (microtime(true) - $this->lastMessageTime > $this->pingThreshold) { - $this->ping(); - } - - if (!$this->started) { - $this->start(); - } - - try { - $envelope = $message->getEnvelope(); - $this->doMailFromCommand($envelope->getSender()->getEncodedAddress()); - foreach ($envelope->getRecipients() as $recipient) { - $this->doRcptToCommand($recipient->getEncodedAddress()); - } - - $this->executeCommand("DATA\r\n", [354]); - try { - foreach (AbstractStream::replace("\r\n.", "\r\n..", $message->toIterable()) as $chunk) { - $this->stream->write($chunk, false); - } - $this->stream->flush(); - } catch (TransportExceptionInterface $e) { - throw $e; - } catch (\Exception $e) { - $this->stream->terminate(); - $this->started = false; - $this->getLogger()->debug(sprintf('Email transport "%s" stopped', __CLASS__)); - throw $e; - } - $mtaResult = $this->executeCommand("\r\n.\r\n", [250]); - $message->appendDebug($this->stream->getDebug()); - $this->lastMessageTime = microtime(true); - - if ($mtaResult && $messageId = $this->parseMessageId($mtaResult)) { - $message->setMessageId($messageId); - } - } catch (TransportExceptionInterface $e) { - $e->appendDebug($this->stream->getDebug()); - $this->lastMessageTime = 0; - throw $e; - } - } - - /** - * @internal since version 6.1, to be made private in 7.0 - * - * @final since version 6.1, to be made private in 7.0 - */ - protected function doHeloCommand(): void - { - $this->executeCommand(sprintf("HELO %s\r\n", $this->domain), [250]); - } - - private function doMailFromCommand(string $address): void - { - $this->executeCommand(sprintf("MAIL FROM:<%s>\r\n", $address), [250]); - } - - private function doRcptToCommand(string $address): void - { - $this->executeCommand(sprintf("RCPT TO:<%s>\r\n", $address), [250, 251, 252]); - } - - public function start(): void - { - if ($this->started) { - return; - } - - $this->getLogger()->debug(sprintf('Email transport "%s" starting', __CLASS__)); - - $this->stream->initialize(); - $this->assertResponseCode($this->getFullResponse(), [220]); - $this->doHeloCommand(); - $this->started = true; - $this->lastMessageTime = 0; - - $this->getLogger()->debug(sprintf('Email transport "%s" started', __CLASS__)); - } - - /** - * Manually disconnect from the SMTP server. - * - * In most cases this is not necessary since the disconnect happens automatically on termination. - * In cases of long-running scripts, this might however make sense to avoid keeping an open - * connection to the SMTP server in between sending emails. - */ - public function stop(): void - { - if (!$this->started) { - return; - } - - $this->getLogger()->debug(sprintf('Email transport "%s" stopping', __CLASS__)); - - try { - $this->executeCommand("QUIT\r\n", [221]); - } catch (TransportExceptionInterface) { - } finally { - $this->stream->terminate(); - $this->started = false; - $this->getLogger()->debug(sprintf('Email transport "%s" stopped', __CLASS__)); - } - } - - private function ping(): void - { - if (!$this->started) { - return; - } - - try { - $this->executeCommand("NOOP\r\n", [250]); - } catch (TransportExceptionInterface) { - $this->stop(); - } - } - - /** - * @throws TransportException if a response code is incorrect - */ - private function assertResponseCode(string $response, array $codes): void - { - if (!$codes) { - throw new LogicException('You must set the expected response code.'); - } - - [$code] = sscanf($response, '%3d'); - $valid = \in_array($code, $codes); - - if (!$valid || !$response) { - $codeStr = $code ? sprintf('code "%s"', $code) : 'empty code'; - $responseStr = $response ? sprintf(', with message "%s"', trim($response)) : ''; - - throw new UnexpectedResponseException(sprintf('Expected response code "%s" but got ', implode('/', $codes)).$codeStr.$responseStr.'.', $code ?: 0); - } - } - - private function getFullResponse(): string - { - $response = ''; - do { - $line = $this->stream->readLine(); - $response .= $line; - } while ($line && isset($line[3]) && ' ' !== $line[3]); - - return $response; - } - - private function checkRestartThreshold(): void - { - // when using sendmail via non-interactive mode, the transport is never "started" - if (!$this->started) { - return; - } - - ++$this->restartCounter; - if ($this->restartCounter < $this->restartThreshold) { - return; - } - - $this->stop(); - if (0 < $sleep = $this->restartThresholdSleep) { - $this->getLogger()->debug(sprintf('Email transport "%s" sleeps for %d seconds after stopping', __CLASS__, $sleep)); - - sleep($sleep); - } - $this->start(); - $this->restartCounter = 0; - } - - public function __sleep(): array - { - throw new \BadMethodCallException('Cannot serialize '.__CLASS__); - } - - /** - * @return void - */ - public function __wakeup() - { - throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); - } - - public function __destruct() - { - $this->stop(); - } -} diff --git a/docker/streamline-src/vendor/symfony/mailer/Transport/Smtp/Stream/AbstractStream.php b/docker/streamline-src/vendor/symfony/mailer/Transport/Smtp/Stream/AbstractStream.php deleted file mode 100644 index 498dc560..00000000 --- a/docker/streamline-src/vendor/symfony/mailer/Transport/Smtp/Stream/AbstractStream.php +++ /dev/null @@ -1,145 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Mailer\Transport\Smtp\Stream; - -use Symfony\Component\Mailer\Exception\TransportException; - -/** - * A stream supporting remote sockets and local processes. - * - * @author Fabien Potencier - * @author Nicolas Grekas - * @author Chris Corbyn - * - * @internal - */ -abstract class AbstractStream -{ - /** @var resource|null */ - protected $stream; - /** @var resource|null */ - protected $in; - /** @var resource|null */ - protected $out; - protected $err; - - private string $debug = ''; - - public function write(string $bytes, bool $debug = true): void - { - if ($debug) { - foreach (explode("\n", trim($bytes)) as $line) { - $this->debug .= sprintf("> %s\n", $line); - } - } - - $bytesToWrite = \strlen($bytes); - $totalBytesWritten = 0; - while ($totalBytesWritten < $bytesToWrite) { - $bytesWritten = @fwrite($this->in, substr($bytes, $totalBytesWritten)); - if (false === $bytesWritten || 0 === $bytesWritten) { - throw new TransportException('Unable to write bytes on the wire.'); - } - - $totalBytesWritten += $bytesWritten; - } - } - - /** - * Flushes the contents of the stream (empty it) and set the internal pointer to the beginning. - */ - public function flush(): void - { - fflush($this->in); - } - - /** - * Performs any initialization needed. - */ - abstract public function initialize(): void; - - public function terminate(): void - { - $this->stream = $this->err = $this->out = $this->in = null; - } - - public function readLine(): string - { - if (feof($this->out)) { - return ''; - } - - $line = @fgets($this->out); - if ('' === $line || false === $line) { - $metas = stream_get_meta_data($this->out); - if ($metas['timed_out']) { - throw new TransportException(sprintf('Connection to "%s" timed out.', $this->getReadConnectionDescription())); - } - if ($metas['eof']) { - throw new TransportException(sprintf('Connection to "%s" has been closed unexpectedly.', $this->getReadConnectionDescription())); - } - if (false === $line) { - throw new TransportException(sprintf('Unable to read from connection to "%s": ', $this->getReadConnectionDescription()).error_get_last()['message']); - } - } - - $this->debug .= sprintf('< %s', $line); - - return $line; - } - - public function getDebug(): string - { - $debug = $this->debug; - $this->debug = ''; - - return $debug; - } - - public static function replace(string $from, string $to, iterable $chunks): \Generator - { - if ('' === $from) { - yield from $chunks; - - return; - } - - $carry = ''; - $fromLen = \strlen($from); - - foreach ($chunks as $chunk) { - if ('' === $chunk = $carry.$chunk) { - continue; - } - - if (str_contains($chunk, $from)) { - $chunk = explode($from, $chunk); - $carry = array_pop($chunk); - - yield implode($to, $chunk).$to; - } else { - $carry = $chunk; - } - - if (\strlen($carry) > $fromLen) { - yield substr($carry, 0, -$fromLen); - $carry = substr($carry, -$fromLen); - } - } - - if ('' !== $carry) { - yield $carry; - } - } - - abstract protected function getReadConnectionDescription(): string; -} diff --git a/docker/streamline-src/vendor/symfony/mailer/Transport/Smtp/Stream/ProcessStream.php b/docker/streamline-src/vendor/symfony/mailer/Transport/Smtp/Stream/ProcessStream.php deleted file mode 100644 index e6351470..00000000 --- a/docker/streamline-src/vendor/symfony/mailer/Transport/Smtp/Stream/ProcessStream.php +++ /dev/null @@ -1,81 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Mailer\Transport\Smtp\Stream; - -use Symfony\Component\Mailer\Exception\TransportException; - -/** - * A stream supporting local processes. - * - * @author Fabien Potencier - * @author Chris Corbyn - * - * @internal - */ -final class ProcessStream extends AbstractStream -{ - private string $command; - private bool $interactive = false; - - public function setCommand(string $command): void - { - $this->command = $command; - } - - public function setInteractive(bool $interactive): void - { - $this->interactive = $interactive; - } - - public function initialize(): void - { - $descriptorSpec = [ - 0 => ['pipe', 'r'], - 1 => ['pipe', 'w'], - 2 => ['pipe', '\\' === \DIRECTORY_SEPARATOR ? 'a' : 'w'], - ]; - $pipes = []; - $this->stream = proc_open($this->command, $descriptorSpec, $pipes); - stream_set_blocking($pipes[2], false); - if ($err = stream_get_contents($pipes[2])) { - throw new TransportException('Process could not be started: '.$err); - } - $this->in = &$pipes[0]; - $this->out = &$pipes[1]; - $this->err = &$pipes[2]; - } - - public function terminate(): void - { - if (null !== $this->stream) { - fclose($this->in); - $out = stream_get_contents($this->out); - fclose($this->out); - $err = stream_get_contents($this->err); - fclose($this->err); - if (0 !== $exitCode = proc_close($this->stream)) { - $errorMessage = 'Process failed with exit code '.$exitCode.': '.$out.$err; - } - } - - parent::terminate(); - - if (!$this->interactive && isset($errorMessage)) { - throw new TransportException($errorMessage); - } - } - - protected function getReadConnectionDescription(): string - { - return 'process '.$this->command; - } -} diff --git a/docker/streamline-src/vendor/symfony/mime/Header/AbstractHeader.php b/docker/streamline-src/vendor/symfony/mime/Header/AbstractHeader.php deleted file mode 100644 index 3dc7fafb..00000000 --- a/docker/streamline-src/vendor/symfony/mime/Header/AbstractHeader.php +++ /dev/null @@ -1,302 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Mime\Header; - -use Symfony\Component\Mime\Encoder\QpMimeHeaderEncoder; - -/** - * An abstract base MIME Header. - * - * @author Chris Corbyn - */ -abstract class AbstractHeader implements HeaderInterface -{ - public const PHRASE_PATTERN = '(?:(?:(?:(?:(?:(?:(?:[ \t]*(?:\r\n))?[ \t])?(\((?:(?:(?:[ \t]*(?:\r\n))?[ \t])|(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x27\x2A-\x5B\x5D-\x7E])|(?:\\[\x00-\x08\x0B\x0C\x0E-\x7F])|(?1)))*(?:(?:[ \t]*(?:\r\n))?[ \t])?\)))*(?:(?:(?:(?:[ \t]*(?:\r\n))?[ \t])?(\((?:(?:(?:[ \t]*(?:\r\n))?[ \t])|(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x27\x2A-\x5B\x5D-\x7E])|(?:\\[\x00-\x08\x0B\x0C\x0E-\x7F])|(?1)))*(?:(?:[ \t]*(?:\r\n))?[ \t])?\)))|(?:(?:[ \t]*(?:\r\n))?[ \t])))?[a-zA-Z0-9!#\$%&\'\*\+\-\/=\?\^_`\{\}\|~]+(?:(?:(?:(?:[ \t]*(?:\r\n))?[ \t])?(\((?:(?:(?:[ \t]*(?:\r\n))?[ \t])|(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x27\x2A-\x5B\x5D-\x7E])|(?:\\[\x00-\x08\x0B\x0C\x0E-\x7F])|(?1)))*(?:(?:[ \t]*(?:\r\n))?[ \t])?\)))*(?:(?:(?:(?:[ \t]*(?:\r\n))?[ \t])?(\((?:(?:(?:[ \t]*(?:\r\n))?[ \t])|(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x27\x2A-\x5B\x5D-\x7E])|(?:\\[\x00-\x08\x0B\x0C\x0E-\x7F])|(?1)))*(?:(?:[ \t]*(?:\r\n))?[ \t])?\)))|(?:(?:[ \t]*(?:\r\n))?[ \t])))?)|(?:(?:(?:(?:(?:[ \t]*(?:\r\n))?[ \t])?(\((?:(?:(?:[ \t]*(?:\r\n))?[ \t])|(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x27\x2A-\x5B\x5D-\x7E])|(?:\\[\x00-\x08\x0B\x0C\x0E-\x7F])|(?1)))*(?:(?:[ \t]*(?:\r\n))?[ \t])?\)))*(?:(?:(?:(?:[ \t]*(?:\r\n))?[ \t])?(\((?:(?:(?:[ \t]*(?:\r\n))?[ \t])|(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x27\x2A-\x5B\x5D-\x7E])|(?:\\[\x00-\x08\x0B\x0C\x0E-\x7F])|(?1)))*(?:(?:[ \t]*(?:\r\n))?[ \t])?\)))|(?:(?:[ \t]*(?:\r\n))?[ \t])))?"((?:(?:[ \t]*(?:\r\n))?[ \t])?(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21\x23-\x5B\x5D-\x7E])|(?:\\[\x00-\x08\x0B\x0C\x0E-\x7F])))*(?:(?:[ \t]*(?:\r\n))?[ \t])?"(?:(?:(?:(?:[ \t]*(?:\r\n))?[ \t])?(\((?:(?:(?:[ \t]*(?:\r\n))?[ \t])|(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x27\x2A-\x5B\x5D-\x7E])|(?:\\[\x00-\x08\x0B\x0C\x0E-\x7F])|(?1)))*(?:(?:[ \t]*(?:\r\n))?[ \t])?\)))*(?:(?:(?:(?:[ \t]*(?:\r\n))?[ \t])?(\((?:(?:(?:[ \t]*(?:\r\n))?[ \t])|(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x27\x2A-\x5B\x5D-\x7E])|(?:\\[\x00-\x08\x0B\x0C\x0E-\x7F])|(?1)))*(?:(?:[ \t]*(?:\r\n))?[ \t])?\)))|(?:(?:[ \t]*(?:\r\n))?[ \t])))?))+?)'; - - private static QpMimeHeaderEncoder $encoder; - - private string $name; - private int $lineLength = 76; - private ?string $lang = null; - private string $charset = 'utf-8'; - - public function __construct(string $name) - { - $this->name = $name; - } - - /** - * @return void - */ - public function setCharset(string $charset) - { - $this->charset = $charset; - } - - public function getCharset(): ?string - { - return $this->charset; - } - - /** - * Set the language used in this Header. - * - * For example, for US English, 'en-us'. - * - * @return void - */ - public function setLanguage(string $lang) - { - $this->lang = $lang; - } - - public function getLanguage(): ?string - { - return $this->lang; - } - - public function getName(): string - { - return $this->name; - } - - /** - * @return void - */ - public function setMaxLineLength(int $lineLength) - { - $this->lineLength = $lineLength; - } - - public function getMaxLineLength(): int - { - return $this->lineLength; - } - - public function toString(): string - { - return $this->tokensToString($this->toTokens()); - } - - /** - * Produces a compliant, formatted RFC 2822 'phrase' based on the string given. - * - * @param string $string as displayed - * @param bool $shorten the first line to make remove for header name - */ - protected function createPhrase(HeaderInterface $header, string $string, string $charset, bool $shorten = false): string - { - // Treat token as exactly what was given - $phraseStr = $string; - - // If it's not valid - if (!preg_match('/^'.self::PHRASE_PATTERN.'$/D', $phraseStr)) { - // .. but it is just ascii text, try escaping some characters - // and make it a quoted-string - if (preg_match('/^[\x00-\x08\x0B\x0C\x0E-\x7F]*$/D', $phraseStr)) { - foreach (['\\', '"'] as $char) { - $phraseStr = str_replace($char, '\\'.$char, $phraseStr); - } - $phraseStr = '"'.$phraseStr.'"'; - } else { - // ... otherwise it needs encoding - // Determine space remaining on line if first line - if ($shorten) { - $usedLength = \strlen($header->getName().': '); - } else { - $usedLength = 0; - } - $phraseStr = $this->encodeWords($header, $string, $usedLength); - } - } elseif (str_contains($phraseStr, '(')) { - foreach (['\\', '"'] as $char) { - $phraseStr = str_replace($char, '\\'.$char, $phraseStr); - } - $phraseStr = '"'.$phraseStr.'"'; - } - - return $phraseStr; - } - - /** - * Encode needed word tokens within a string of input. - */ - protected function encodeWords(HeaderInterface $header, string $input, int $usedLength = -1): string - { - $value = ''; - $tokens = $this->getEncodableWordTokens($input); - foreach ($tokens as $token) { - // See RFC 2822, Sect 2.2 (really 2.2 ??) - if ($this->tokenNeedsEncoding($token)) { - // Don't encode starting WSP - $firstChar = substr($token, 0, 1); - switch ($firstChar) { - case ' ': - case "\t": - $value .= $firstChar; - $token = substr($token, 1); - } - - if (-1 == $usedLength) { - $usedLength = \strlen($header->getName().': ') + \strlen($value); - } - $value .= $this->getTokenAsEncodedWord($token, $usedLength); - } else { - $value .= $token; - } - } - - return $value; - } - - protected function tokenNeedsEncoding(string $token): bool - { - return (bool) preg_match('~[\x00-\x08\x10-\x19\x7F-\xFF\r\n]~', $token); - } - - /** - * Splits a string into tokens in blocks of words which can be encoded quickly. - * - * @return string[] - */ - protected function getEncodableWordTokens(string $string): array - { - $tokens = []; - $encodedToken = ''; - // Split at all whitespace boundaries - foreach (preg_split('~(?=[\t ])~', $string) as $token) { - if ($this->tokenNeedsEncoding($token)) { - $encodedToken .= $token; - } else { - if ('' !== $encodedToken) { - $tokens[] = $encodedToken; - $encodedToken = ''; - } - $tokens[] = $token; - } - } - if ('' !== $encodedToken) { - $tokens[] = $encodedToken; - } - - foreach ($tokens as $i => $token) { - // whitespace(s) between 2 encoded tokens - if ( - 0 < $i - && isset($tokens[$i + 1]) - && preg_match('~^[\t ]+$~', $token) - && $this->tokenNeedsEncoding($tokens[$i - 1]) - && $this->tokenNeedsEncoding($tokens[$i + 1]) - ) { - $tokens[$i - 1] .= $token.$tokens[$i + 1]; - array_splice($tokens, $i, 2); - } - } - - return $tokens; - } - - /** - * Get a token as an encoded word for safe insertion into headers. - */ - protected function getTokenAsEncodedWord(string $token, int $firstLineOffset = 0): string - { - self::$encoder ??= new QpMimeHeaderEncoder(); - - // Adjust $firstLineOffset to account for space needed for syntax - $charsetDecl = $this->charset; - if (null !== $this->lang) { - $charsetDecl .= '*'.$this->lang; - } - $encodingWrapperLength = \strlen('=?'.$charsetDecl.'?'.self::$encoder->getName().'??='); - - if ($firstLineOffset >= 75) { - // Does this logic need to be here? - $firstLineOffset = 0; - } - - $encodedTextLines = explode("\r\n", - self::$encoder->encodeString($token, $this->charset, $firstLineOffset, 75 - $encodingWrapperLength) - ); - - if ('iso-2022-jp' !== strtolower($this->charset)) { - // special encoding for iso-2022-jp using mb_encode_mimeheader - foreach ($encodedTextLines as $lineNum => $line) { - $encodedTextLines[$lineNum] = '=?'.$charsetDecl.'?'.self::$encoder->getName().'?'.$line.'?='; - } - } - - return implode("\r\n ", $encodedTextLines); - } - - /** - * Generates tokens from the given string which include CRLF as individual tokens. - * - * @return string[] - */ - protected function generateTokenLines(string $token): array - { - return preg_split('~(\r\n)~', $token, -1, \PREG_SPLIT_DELIM_CAPTURE); - } - - /** - * Generate a list of all tokens in the final header. - */ - protected function toTokens(?string $string = null): array - { - $string ??= $this->getBodyAsString(); - - $tokens = []; - // Generate atoms; split at all invisible boundaries followed by WSP - foreach (preg_split('~(?=[ \t])~', $string) as $token) { - $newTokens = $this->generateTokenLines($token); - foreach ($newTokens as $newToken) { - $tokens[] = $newToken; - } - } - - return $tokens; - } - - /** - * Takes an array of tokens which appear in the header and turns them into - * an RFC 2822 compliant string, adding FWSP where needed. - * - * @param string[] $tokens - */ - private function tokensToString(array $tokens): string - { - $lineCount = 0; - $headerLines = []; - $headerLines[] = $this->name.': '; - $currentLine = &$headerLines[$lineCount++]; - - // Build all tokens back into compliant header - foreach ($tokens as $i => $token) { - // Line longer than specified maximum or token was just a new line - if (("\r\n" === $token) - || ($i > 0 && \strlen($currentLine.$token) > $this->lineLength) - && '' !== $currentLine) { - $headerLines[] = ''; - $currentLine = &$headerLines[$lineCount++]; - } - - // Append token to the line - if ("\r\n" !== $token) { - $currentLine .= $token; - } - } - - // Implode with FWS (RFC 2822, 2.2.3) - return implode("\r\n", $headerLines); - } -} diff --git a/docker/streamline-src/vendor/symfony/mime/Message.php b/docker/streamline-src/vendor/symfony/mime/Message.php deleted file mode 100644 index fc8940eb..00000000 --- a/docker/streamline-src/vendor/symfony/mime/Message.php +++ /dev/null @@ -1,169 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Mime; - -use Symfony\Component\Mime\Exception\LogicException; -use Symfony\Component\Mime\Header\Headers; -use Symfony\Component\Mime\Part\AbstractPart; -use Symfony\Component\Mime\Part\TextPart; - -/** - * @author Fabien Potencier - */ -class Message extends RawMessage -{ - private Headers $headers; - private ?AbstractPart $body; - - public function __construct(?Headers $headers = null, ?AbstractPart $body = null) - { - $this->headers = $headers ? clone $headers : new Headers(); - $this->body = $body; - } - - public function __clone() - { - $this->headers = clone $this->headers; - - if (null !== $this->body) { - $this->body = clone $this->body; - } - } - - /** - * @return $this - */ - public function setBody(?AbstractPart $body = null): static - { - if (1 > \func_num_args()) { - trigger_deprecation('symfony/mime', '6.2', 'Calling "%s()" without any arguments is deprecated, pass null explicitly instead.', __METHOD__); - } - $this->body = $body; - - return $this; - } - - public function getBody(): ?AbstractPart - { - return $this->body; - } - - /** - * @return $this - */ - public function setHeaders(Headers $headers): static - { - $this->headers = $headers; - - return $this; - } - - public function getHeaders(): Headers - { - return $this->headers; - } - - public function getPreparedHeaders(): Headers - { - $headers = clone $this->headers; - - if (!$headers->has('From')) { - if (!$headers->has('Sender')) { - throw new LogicException('An email must have a "From" or a "Sender" header.'); - } - $headers->addMailboxListHeader('From', [$headers->get('Sender')->getAddress()]); - } - - if (!$headers->has('MIME-Version')) { - $headers->addTextHeader('MIME-Version', '1.0'); - } - - if (!$headers->has('Date')) { - $headers->addDateHeader('Date', new \DateTimeImmutable()); - } - - // determine the "real" sender - if (!$headers->has('Sender') && \count($froms = $headers->get('From')->getAddresses()) > 1) { - $headers->addMailboxHeader('Sender', $froms[0]); - } - - if (!$headers->has('Message-ID')) { - $headers->addIdHeader('Message-ID', $this->generateMessageId()); - } - - // remove the Bcc field which should NOT be part of the sent message - $headers->remove('Bcc'); - - return $headers; - } - - public function toString(): string - { - if (null === $body = $this->getBody()) { - $body = new TextPart(''); - } - - return $this->getPreparedHeaders()->toString().$body->toString(); - } - - public function toIterable(): iterable - { - if (null === $body = $this->getBody()) { - $body = new TextPart(''); - } - - yield $this->getPreparedHeaders()->toString(); - yield from $body->toIterable(); - } - - /** - * @return void - */ - public function ensureValidity() - { - if (!$this->headers->get('To')?->getBody() && !$this->headers->get('Cc')?->getBody() && !$this->headers->get('Bcc')?->getBody()) { - throw new LogicException('An email must have a "To", "Cc", or "Bcc" header.'); - } - - if (!$this->headers->get('From')?->getBody() && !$this->headers->get('Sender')?->getBody()) { - throw new LogicException('An email must have a "From" or a "Sender" header.'); - } - - parent::ensureValidity(); - } - - public function generateMessageId(): string - { - if ($this->headers->has('Sender')) { - $sender = $this->headers->get('Sender')->getAddress(); - } elseif ($this->headers->has('From')) { - if (!$froms = $this->headers->get('From')->getAddresses()) { - throw new LogicException('A "From" header must have at least one email address.'); - } - $sender = $froms[0]; - } else { - throw new LogicException('An email must have a "From" or a "Sender" header.'); - } - - return bin2hex(random_bytes(16)).strstr($sender->getAddress(), '@'); - } - - public function __serialize(): array - { - return [$this->headers, $this->body]; - } - - public function __unserialize(array $data): void - { - [$this->headers, $this->body] = $data; - } -} diff --git a/docker/streamline-src/vendor/symfony/mime/Part/Multipart/FormDataPart.php b/docker/streamline-src/vendor/symfony/mime/Part/Multipart/FormDataPart.php deleted file mode 100644 index 0db5dfa0..00000000 --- a/docker/streamline-src/vendor/symfony/mime/Part/Multipart/FormDataPart.php +++ /dev/null @@ -1,108 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Mime\Part\Multipart; - -use Symfony\Component\Mime\Exception\InvalidArgumentException; -use Symfony\Component\Mime\Part\AbstractMultipartPart; -use Symfony\Component\Mime\Part\DataPart; -use Symfony\Component\Mime\Part\TextPart; - -/** - * Implements RFC 7578. - * - * @author Fabien Potencier - */ -final class FormDataPart extends AbstractMultipartPart -{ - private array $fields = []; - - /** - * @param array $fields - */ - public function __construct(array $fields = []) - { - parent::__construct(); - - $this->fields = $fields; - - // HTTP does not support \r\n in header values - $this->getHeaders()->setMaxLineLength(\PHP_INT_MAX); - } - - public function getMediaSubtype(): string - { - return 'form-data'; - } - - public function getParts(): array - { - return $this->prepareFields($this->fields); - } - - private function prepareFields(array $fields): array - { - $values = []; - - $prepare = function ($item, $key, $root = null) use (&$values, &$prepare) { - if (null === $root && \is_int($key) && \is_array($item)) { - if (1 !== \count($item)) { - throw new InvalidArgumentException(sprintf('Form field values with integer keys can only have one array element, the key being the field name and the value being the field value, %d provided.', \count($item))); - } - - $key = key($item); - $item = $item[$key]; - } - - $fieldName = null !== $root ? sprintf('%s[%s]', $root, $key) : $key; - - if (\is_array($item)) { - array_walk($item, $prepare, $fieldName); - - return; - } - - if (!\is_string($item) && !$item instanceof TextPart) { - throw new InvalidArgumentException(sprintf('The value of the form field "%s" can only be a string, an array, or an instance of TextPart, "%s" given.', $fieldName, get_debug_type($item))); - } - - $values[] = $this->preparePart($fieldName, $item); - }; - - array_walk($fields, $prepare); - - return $values; - } - - private function preparePart(string $name, string|TextPart $value): TextPart - { - if (\is_string($value)) { - return $this->configurePart($name, new TextPart($value, 'utf-8', 'plain', '8bit')); - } - - return $this->configurePart($name, $value); - } - - private function configurePart(string $name, TextPart $part): TextPart - { - static $r; - - $r ??= new \ReflectionProperty(TextPart::class, 'encoding'); - - $part->setDisposition('form-data'); - $part->setName($name); - // HTTP does not support \r\n in header values - $part->getHeaders()->setMaxLineLength(\PHP_INT_MAX); - $r->setValue($part, '8bit'); - - return $part; - } -} diff --git a/docker/streamline-src/vendor/symfony/mime/Part/TextPart.php b/docker/streamline-src/vendor/symfony/mime/Part/TextPart.php deleted file mode 100644 index 2a8dd585..00000000 --- a/docker/streamline-src/vendor/symfony/mime/Part/TextPart.php +++ /dev/null @@ -1,248 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Mime\Part; - -use Symfony\Component\Mime\Encoder\Base64ContentEncoder; -use Symfony\Component\Mime\Encoder\ContentEncoderInterface; -use Symfony\Component\Mime\Encoder\EightBitContentEncoder; -use Symfony\Component\Mime\Encoder\QpContentEncoder; -use Symfony\Component\Mime\Exception\InvalidArgumentException; -use Symfony\Component\Mime\Header\Headers; - -/** - * @author Fabien Potencier - */ -class TextPart extends AbstractPart -{ - /** @internal */ - protected Headers $_headers; - - private static array $encoders = []; - - /** @var resource|string|File */ - private $body; - private ?string $charset; - private string $subtype; - private ?string $disposition = null; - private ?string $name = null; - private string $encoding; - private ?bool $seekable = null; - - /** - * @param resource|string|File $body Use a File instance to defer loading the file until rendering - */ - public function __construct($body, ?string $charset = 'utf-8', string $subtype = 'plain', ?string $encoding = null) - { - parent::__construct(); - - if (!\is_string($body) && !\is_resource($body) && !$body instanceof File) { - throw new \TypeError(sprintf('The body of "%s" must be a string, a resource, or an instance of "%s" (got "%s").', self::class, File::class, get_debug_type($body))); - } - - if ($body instanceof File) { - $path = $body->getPath(); - if ((is_file($path) && !is_readable($path)) || is_dir($path)) { - throw new InvalidArgumentException(sprintf('Path "%s" is not readable.', $path)); - } - } - - $this->body = $body; - $this->charset = $charset; - $this->subtype = $subtype; - $this->seekable = \is_resource($body) ? stream_get_meta_data($body)['seekable'] && 0 === fseek($body, 0, \SEEK_CUR) : null; - - if (null === $encoding) { - $this->encoding = $this->chooseEncoding(); - } else { - if ('quoted-printable' !== $encoding && 'base64' !== $encoding && '8bit' !== $encoding) { - throw new InvalidArgumentException(sprintf('The encoding must be one of "quoted-printable", "base64", or "8bit" ("%s" given).', $encoding)); - } - $this->encoding = $encoding; - } - } - - public function getMediaType(): string - { - return 'text'; - } - - public function getMediaSubtype(): string - { - return $this->subtype; - } - - /** - * @param string $disposition one of attachment, inline, or form-data - * - * @return $this - */ - public function setDisposition(string $disposition): static - { - $this->disposition = $disposition; - - return $this; - } - - /** - * @return ?string null or one of attachment, inline, or form-data - */ - public function getDisposition(): ?string - { - return $this->disposition; - } - - /** - * Sets the name of the file (used by FormDataPart). - * - * @return $this - */ - public function setName(string $name): static - { - $this->name = $name; - - return $this; - } - - /** - * Gets the name of the file. - */ - public function getName(): ?string - { - return $this->name; - } - - public function getBody(): string - { - if ($this->body instanceof File) { - if (false === $ret = @file_get_contents($this->body->getPath())) { - throw new InvalidArgumentException(error_get_last()['message']); - } - - return $ret; - } - - if (null === $this->seekable) { - return $this->body; - } - - if ($this->seekable) { - rewind($this->body); - } - - return stream_get_contents($this->body) ?: ''; - } - - public function bodyToString(): string - { - return $this->getEncoder()->encodeString($this->getBody(), $this->charset); - } - - public function bodyToIterable(): iterable - { - if ($this->body instanceof File) { - $path = $this->body->getPath(); - if (false === $handle = @fopen($path, 'r', false)) { - throw new InvalidArgumentException(sprintf('Unable to open path "%s".', $path)); - } - - yield from $this->getEncoder()->encodeByteStream($handle); - } elseif (null !== $this->seekable) { - if ($this->seekable) { - rewind($this->body); - } - yield from $this->getEncoder()->encodeByteStream($this->body); - } else { - yield $this->getEncoder()->encodeString($this->body); - } - } - - public function getPreparedHeaders(): Headers - { - $headers = parent::getPreparedHeaders(); - - $headers->setHeaderBody('Parameterized', 'Content-Type', $this->getMediaType().'/'.$this->getMediaSubtype()); - if ($this->charset) { - $headers->setHeaderParameter('Content-Type', 'charset', $this->charset); - } - if ($this->name && 'form-data' !== $this->disposition) { - $headers->setHeaderParameter('Content-Type', 'name', $this->name); - } - $headers->setHeaderBody('Text', 'Content-Transfer-Encoding', $this->encoding); - - if (!$headers->has('Content-Disposition') && null !== $this->disposition) { - $headers->setHeaderBody('Parameterized', 'Content-Disposition', $this->disposition); - if ($this->name) { - $headers->setHeaderParameter('Content-Disposition', 'name', $this->name); - } - } - - return $headers; - } - - public function asDebugString(): string - { - $str = parent::asDebugString(); - if (null !== $this->charset) { - $str .= ' charset: '.$this->charset; - } - if (null !== $this->disposition) { - $str .= ' disposition: '.$this->disposition; - } - - return $str; - } - - private function getEncoder(): ContentEncoderInterface - { - if ('8bit' === $this->encoding) { - return self::$encoders[$this->encoding] ??= new EightBitContentEncoder(); - } - - if ('quoted-printable' === $this->encoding) { - return self::$encoders[$this->encoding] ??= new QpContentEncoder(); - } - - return self::$encoders[$this->encoding] ??= new Base64ContentEncoder(); - } - - private function chooseEncoding(): string - { - if (null === $this->charset) { - return 'base64'; - } - - return 'quoted-printable'; - } - - public function __sleep(): array - { - // convert resources to strings for serialization - if (null !== $this->seekable) { - $this->body = $this->getBody(); - $this->seekable = null; - } - - $this->_headers = $this->getHeaders(); - - return ['_headers', 'body', 'charset', 'subtype', 'disposition', 'name', 'encoding']; - } - - /** - * @return void - */ - public function __wakeup() - { - $r = new \ReflectionProperty(AbstractPart::class, 'headers'); - $r->setValue($this, $this->_headers); - unset($this->_headers); - } -} diff --git a/docker/streamline-src/vendor/symfony/mime/RawMessage.php b/docker/streamline-src/vendor/symfony/mime/RawMessage.php deleted file mode 100644 index 2b1b52cd..00000000 --- a/docker/streamline-src/vendor/symfony/mime/RawMessage.php +++ /dev/null @@ -1,115 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Mime; - -use Symfony\Component\Mime\Exception\LogicException; - -/** - * @author Fabien Potencier - */ -class RawMessage -{ - /** @var iterable|string|resource */ - private $message; - private bool $isGeneratorClosed; - - /** - * @param iterable|string|resource $message - */ - public function __construct(mixed $message) - { - $this->message = $message; - } - - public function __destruct() - { - if (\is_resource($this->message)) { - fclose($this->message); - } - } - - public function toString(): string - { - if (\is_string($this->message)) { - return $this->message; - } - - if (\is_resource($this->message)) { - return stream_get_contents($this->message, -1, 0); - } - - $message = ''; - foreach ($this->message as $chunk) { - $message .= $chunk; - } - - return $this->message = $message; - } - - public function toIterable(): iterable - { - if ($this->isGeneratorClosed ?? false) { - trigger_deprecation('symfony/mime', '6.4', 'Sending an email with a closed generator is deprecated and will throw in 7.0.'); - // throw new LogicException('Unable to send the email as its generator is already closed.'); - } - - if (\is_string($this->message)) { - yield $this->message; - - return; - } - - if (\is_resource($this->message)) { - rewind($this->message); - while ($line = fgets($this->message)) { - yield $line; - } - - return; - } - - if ($this->message instanceof \Generator) { - $message = fopen('php://temp', 'w+'); - foreach ($this->message as $chunk) { - fwrite($message, $chunk); - yield $chunk; - } - $this->isGeneratorClosed = !$this->message->valid(); - $this->message = $message; - - return; - } - - foreach ($this->message as $chunk) { - yield $chunk; - } - } - - /** - * @return void - * - * @throws LogicException if the message is not valid - */ - public function ensureValidity() - { - } - - public function __serialize(): array - { - return [$this->toString()]; - } - - public function __unserialize(array $data): void - { - [$this->message] = $data; - } -} diff --git a/docker/streamline-src/vendor/symfony/mime/composer.json b/docker/streamline-src/vendor/symfony/mime/composer.json deleted file mode 100644 index ae5ca36d..00000000 --- a/docker/streamline-src/vendor/symfony/mime/composer.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "symfony/mime", - "type": "library", - "description": "Allows manipulating MIME messages", - "keywords": ["mime", "mime-type"], - "homepage": "https://symfony.com", - "license": "MIT", - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1|^4", - "league/html-to-markdown": "^5.0", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|^6.4|^7.0", - "symfony/property-access": "^5.4|^6.0|^7.0", - "symfony/property-info": "^5.4|^6.0|^7.0", - "symfony/serializer": "^6.4.3|^7.0.3" - }, - "conflict": { - "egulias/email-validator": "~3.0.0", - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<5.4", - "symfony/serializer": "<6.4.3|>7.0,<7.0.3" - }, - "autoload": { - "psr-4": { "Symfony\\Component\\Mime\\": "" }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "minimum-stability": "dev" -} diff --git a/docker/streamline-src/vendor/symfony/polyfill-ctype/composer.json b/docker/streamline-src/vendor/symfony/polyfill-ctype/composer.json deleted file mode 100644 index 131ca7ad..00000000 --- a/docker/streamline-src/vendor/symfony/polyfill-ctype/composer.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "symfony/polyfill-ctype", - "type": "library", - "description": "Symfony polyfill for ctype functions", - "keywords": ["polyfill", "compatibility", "portable", "ctype"], - "homepage": "https://symfony.com", - "license": "MIT", - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "require": { - "php": ">=7.2" - }, - "provide": { - "ext-ctype": "*" - }, - "autoload": { - "psr-4": { "Symfony\\Polyfill\\Ctype\\": "" }, - "files": [ "bootstrap.php" ] - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "minimum-stability": "dev", - "extra": { - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - } -} diff --git a/docker/streamline-src/vendor/symfony/polyfill-intl-grapheme/composer.json b/docker/streamline-src/vendor/symfony/polyfill-intl-grapheme/composer.json deleted file mode 100644 index 0eea417d..00000000 --- a/docker/streamline-src/vendor/symfony/polyfill-intl-grapheme/composer.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "symfony/polyfill-intl-grapheme", - "type": "library", - "description": "Symfony polyfill for intl's grapheme_* functions", - "keywords": ["polyfill", "shim", "compatibility", "portable", "intl", "grapheme"], - "homepage": "https://symfony.com", - "license": "MIT", - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "require": { - "php": ">=7.2" - }, - "autoload": { - "psr-4": { "Symfony\\Polyfill\\Intl\\Grapheme\\": "" }, - "files": [ "bootstrap.php" ] - }, - "suggest": { - "ext-intl": "For best performance" - }, - "minimum-stability": "dev", - "extra": { - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - } -} diff --git a/docker/streamline-src/vendor/symfony/polyfill-intl-idn/Idn.php b/docker/streamline-src/vendor/symfony/polyfill-intl-idn/Idn.php deleted file mode 100644 index 334f8ee7..00000000 --- a/docker/streamline-src/vendor/symfony/polyfill-intl-idn/Idn.php +++ /dev/null @@ -1,933 +0,0 @@ - and Trevor Rowbotham - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Polyfill\Intl\Idn; - -use Symfony\Polyfill\Intl\Idn\Resources\unidata\DisallowedRanges; -use Symfony\Polyfill\Intl\Idn\Resources\unidata\Regex; - -/** - * @see https://www.unicode.org/reports/tr46/ - * - * @internal - */ -final class Idn -{ - public const ERROR_EMPTY_LABEL = 1; - public const ERROR_LABEL_TOO_LONG = 2; - public const ERROR_DOMAIN_NAME_TOO_LONG = 4; - public const ERROR_LEADING_HYPHEN = 8; - public const ERROR_TRAILING_HYPHEN = 0x10; - public const ERROR_HYPHEN_3_4 = 0x20; - public const ERROR_LEADING_COMBINING_MARK = 0x40; - public const ERROR_DISALLOWED = 0x80; - public const ERROR_PUNYCODE = 0x100; - public const ERROR_LABEL_HAS_DOT = 0x200; - public const ERROR_INVALID_ACE_LABEL = 0x400; - public const ERROR_BIDI = 0x800; - public const ERROR_CONTEXTJ = 0x1000; - public const ERROR_CONTEXTO_PUNCTUATION = 0x2000; - public const ERROR_CONTEXTO_DIGITS = 0x4000; - - public const INTL_IDNA_VARIANT_2003 = 0; - public const INTL_IDNA_VARIANT_UTS46 = 1; - - public const IDNA_DEFAULT = 0; - public const IDNA_ALLOW_UNASSIGNED = 1; - public const IDNA_USE_STD3_RULES = 2; - public const IDNA_CHECK_BIDI = 4; - public const IDNA_CHECK_CONTEXTJ = 8; - public const IDNA_NONTRANSITIONAL_TO_ASCII = 16; - public const IDNA_NONTRANSITIONAL_TO_UNICODE = 32; - - public const MAX_DOMAIN_SIZE = 253; - public const MAX_LABEL_SIZE = 63; - - public const BASE = 36; - public const TMIN = 1; - public const TMAX = 26; - public const SKEW = 38; - public const DAMP = 700; - public const INITIAL_BIAS = 72; - public const INITIAL_N = 128; - public const DELIMITER = '-'; - public const MAX_INT = 2147483647; - - /** - * Contains the numeric value of a basic code point (for use in representing integers) in the - * range 0 to BASE-1, or -1 if b is does not represent a value. - * - * @var array - */ - private static $basicToDigit = [ - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, -1, - - -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, - - -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, - - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - ]; - - /** - * @var array - */ - private static $virama; - - /** - * @var array - */ - private static $mapped; - - /** - * @var array - */ - private static $ignored; - - /** - * @var array - */ - private static $deviation; - - /** - * @var array - */ - private static $disallowed; - - /** - * @var array - */ - private static $disallowed_STD3_mapped; - - /** - * @var array - */ - private static $disallowed_STD3_valid; - - /** - * @var bool - */ - private static $mappingTableLoaded = false; - - /** - * @see https://www.unicode.org/reports/tr46/#ToASCII - * - * @param string $domainName - * @param int $options - * @param int $variant - * @param array $idna_info - * - * @return string|false - */ - public static function idn_to_ascii($domainName, $options = self::IDNA_DEFAULT, $variant = self::INTL_IDNA_VARIANT_UTS46, &$idna_info = []) - { - if (self::INTL_IDNA_VARIANT_2003 === $variant) { - @trigger_error('idn_to_ascii(): INTL_IDNA_VARIANT_2003 is deprecated', \E_USER_DEPRECATED); - } - - $options = [ - 'CheckHyphens' => true, - 'CheckBidi' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 !== ($options & self::IDNA_CHECK_BIDI), - 'CheckJoiners' => self::INTL_IDNA_VARIANT_UTS46 === $variant && 0 !== ($options & self::IDNA_CHECK_CONTEXTJ), - 'UseSTD3ASCIIRules' => 0 !== ($options & self::IDNA_USE_STD3_RULES), - 'Transitional_Processing' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 === ($options & self::IDNA_NONTRANSITIONAL_TO_ASCII), - 'VerifyDnsLength' => true, - ]; - $info = new Info(); - $labels = self::process((string) $domainName, $options, $info); - - foreach ($labels as $i => $label) { - // Only convert labels to punycode that contain non-ASCII code points - if (1 === preg_match('/[^\x00-\x7F]/', $label)) { - try { - $label = 'xn--'.self::punycodeEncode($label); - } catch (\Exception $e) { - $info->errors |= self::ERROR_PUNYCODE; - } - - $labels[$i] = $label; - } - } - - if ($options['VerifyDnsLength']) { - self::validateDomainAndLabelLength($labels, $info); - } - - $idna_info = [ - 'result' => implode('.', $labels), - 'isTransitionalDifferent' => $info->transitionalDifferent, - 'errors' => $info->errors, - ]; - - return 0 === $info->errors ? $idna_info['result'] : false; - } - - /** - * @see https://www.unicode.org/reports/tr46/#ToUnicode - * - * @param string $domainName - * @param int $options - * @param int $variant - * @param array $idna_info - * - * @return string|false - */ - public static function idn_to_utf8($domainName, $options = self::IDNA_DEFAULT, $variant = self::INTL_IDNA_VARIANT_UTS46, &$idna_info = []) - { - if (self::INTL_IDNA_VARIANT_2003 === $variant) { - @trigger_error('idn_to_utf8(): INTL_IDNA_VARIANT_2003 is deprecated', \E_USER_DEPRECATED); - } - - $info = new Info(); - $labels = self::process((string) $domainName, [ - 'CheckHyphens' => true, - 'CheckBidi' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 !== ($options & self::IDNA_CHECK_BIDI), - 'CheckJoiners' => self::INTL_IDNA_VARIANT_UTS46 === $variant && 0 !== ($options & self::IDNA_CHECK_CONTEXTJ), - 'UseSTD3ASCIIRules' => 0 !== ($options & self::IDNA_USE_STD3_RULES), - 'Transitional_Processing' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 === ($options & self::IDNA_NONTRANSITIONAL_TO_UNICODE), - ], $info); - $idna_info = [ - 'result' => implode('.', $labels), - 'isTransitionalDifferent' => $info->transitionalDifferent, - 'errors' => $info->errors, - ]; - - return 0 === $info->errors ? $idna_info['result'] : false; - } - - /** - * @param string $label - * - * @return bool - */ - private static function isValidContextJ(array $codePoints, $label) - { - if (!isset(self::$virama)) { - self::$virama = require __DIR__.\DIRECTORY_SEPARATOR.'Resources'.\DIRECTORY_SEPARATOR.'unidata'.\DIRECTORY_SEPARATOR.'virama.php'; - } - - $offset = 0; - - foreach ($codePoints as $i => $codePoint) { - if (0x200C !== $codePoint && 0x200D !== $codePoint) { - continue; - } - - if (!isset($codePoints[$i - 1])) { - return false; - } - - // If Canonical_Combining_Class(Before(cp)) .eq. Virama Then True; - if (isset(self::$virama[$codePoints[$i - 1]])) { - continue; - } - - // If RegExpMatch((Joining_Type:{L,D})(Joining_Type:T)*\u200C(Joining_Type:T)*(Joining_Type:{R,D})) Then - // True; - // Generated RegExp = ([Joining_Type:{L,D}][Joining_Type:T]*\u200C[Joining_Type:T]*)[Joining_Type:{R,D}] - if (0x200C === $codePoint && 1 === preg_match(Regex::ZWNJ, $label, $matches, \PREG_OFFSET_CAPTURE, $offset)) { - $offset += \strlen($matches[1][0]); - - continue; - } - - return false; - } - - return true; - } - - /** - * @see https://www.unicode.org/reports/tr46/#ProcessingStepMap - * - * @param string $input - * @param array $options - * - * @return string - */ - private static function mapCodePoints($input, array $options, Info $info) - { - $str = ''; - $useSTD3ASCIIRules = $options['UseSTD3ASCIIRules']; - $transitional = $options['Transitional_Processing']; - - foreach (self::utf8Decode($input) as $codePoint) { - $data = self::lookupCodePointStatus($codePoint, $useSTD3ASCIIRules); - - switch ($data['status']) { - case 'disallowed': - case 'valid': - $str .= mb_chr($codePoint, 'utf-8'); - - break; - - case 'ignored': - // Do nothing. - break; - - case 'mapped': - $str .= $transitional && 0x1E9E === $codePoint ? 'ss' : $data['mapping']; - - break; - - case 'deviation': - $info->transitionalDifferent = true; - $str .= ($transitional ? $data['mapping'] : mb_chr($codePoint, 'utf-8')); - - break; - } - } - - return $str; - } - - /** - * @see https://www.unicode.org/reports/tr46/#Processing - * - * @param string $domain - * @param array $options - * - * @return array - */ - private static function process($domain, array $options, Info $info) - { - // If VerifyDnsLength is not set, we are doing ToUnicode otherwise we are doing ToASCII and - // we need to respect the VerifyDnsLength option. - $checkForEmptyLabels = !isset($options['VerifyDnsLength']) || $options['VerifyDnsLength']; - - if ($checkForEmptyLabels && '' === $domain) { - $info->errors |= self::ERROR_EMPTY_LABEL; - - return [$domain]; - } - - // Step 1. Map each code point in the domain name string - $domain = self::mapCodePoints($domain, $options, $info); - - // Step 2. Normalize the domain name string to Unicode Normalization Form C. - if (!\Normalizer::isNormalized($domain, \Normalizer::FORM_C)) { - $domain = \Normalizer::normalize($domain, \Normalizer::FORM_C); - } - - // Step 3. Break the string into labels at U+002E (.) FULL STOP. - $labels = explode('.', $domain); - $lastLabelIndex = \count($labels) - 1; - - // Step 4. Convert and validate each label in the domain name string. - foreach ($labels as $i => $label) { - $validationOptions = $options; - - if ('xn--' === substr($label, 0, 4)) { - // Step 4.1. If the label contains any non-ASCII code point (i.e., a code point greater than U+007F), - // record that there was an error, and continue with the next label. - if (preg_match('/[^\x00-\x7F]/', $label)) { - $info->errors |= self::ERROR_PUNYCODE; - - continue; - } - - // Step 4.2. Attempt to convert the rest of the label to Unicode according to Punycode [RFC3492]. If - // that conversion fails, record that there was an error, and continue - // with the next label. Otherwise replace the original label in the string by the results of the - // conversion. - try { - $label = self::punycodeDecode(substr($label, 4)); - } catch (\Exception $e) { - $info->errors |= self::ERROR_PUNYCODE; - - continue; - } - - $validationOptions['Transitional_Processing'] = false; - $labels[$i] = $label; - } - - self::validateLabel($label, $info, $validationOptions, $i > 0 && $i === $lastLabelIndex); - } - - if ($info->bidiDomain && !$info->validBidiDomain) { - $info->errors |= self::ERROR_BIDI; - } - - // Any input domain name string that does not record an error has been successfully - // processed according to this specification. Conversely, if an input domain_name string - // causes an error, then the processing of the input domain_name string fails. Determining - // what to do with error input is up to the caller, and not in the scope of this document. - return $labels; - } - - /** - * @see https://tools.ietf.org/html/rfc5893#section-2 - * - * @param string $label - */ - private static function validateBidiLabel($label, Info $info) - { - if (1 === preg_match(Regex::RTL_LABEL, $label)) { - $info->bidiDomain = true; - - // Step 1. The first character must be a character with Bidi property L, R, or AL. - // If it has the R or AL property, it is an RTL label - if (1 !== preg_match(Regex::BIDI_STEP_1_RTL, $label)) { - $info->validBidiDomain = false; - - return; - } - - // Step 2. In an RTL label, only characters with the Bidi properties R, AL, AN, EN, ES, - // CS, ET, ON, BN, or NSM are allowed. - if (1 === preg_match(Regex::BIDI_STEP_2, $label)) { - $info->validBidiDomain = false; - - return; - } - - // Step 3. In an RTL label, the end of the label must be a character with Bidi property - // R, AL, EN, or AN, followed by zero or more characters with Bidi property NSM. - if (1 !== preg_match(Regex::BIDI_STEP_3, $label)) { - $info->validBidiDomain = false; - - return; - } - - // Step 4. In an RTL label, if an EN is present, no AN may be present, and vice versa. - if (1 === preg_match(Regex::BIDI_STEP_4_AN, $label) && 1 === preg_match(Regex::BIDI_STEP_4_EN, $label)) { - $info->validBidiDomain = false; - - return; - } - - return; - } - - // We are a LTR label - // Step 1. The first character must be a character with Bidi property L, R, or AL. - // If it has the L property, it is an LTR label. - if (1 !== preg_match(Regex::BIDI_STEP_1_LTR, $label)) { - $info->validBidiDomain = false; - - return; - } - - // Step 5. In an LTR label, only characters with the Bidi properties L, EN, - // ES, CS, ET, ON, BN, or NSM are allowed. - if (1 === preg_match(Regex::BIDI_STEP_5, $label)) { - $info->validBidiDomain = false; - - return; - } - - // Step 6.In an LTR label, the end of the label must be a character with Bidi property L or - // EN, followed by zero or more characters with Bidi property NSM. - if (1 !== preg_match(Regex::BIDI_STEP_6, $label)) { - $info->validBidiDomain = false; - - return; - } - } - - /** - * @param array $labels - */ - private static function validateDomainAndLabelLength(array $labels, Info $info) - { - $maxDomainSize = self::MAX_DOMAIN_SIZE; - $length = \count($labels); - - // Number of "." delimiters. - $domainLength = $length - 1; - - // If the last label is empty and it is not the first label, then it is the root label. - // Increase the max size by 1, making it 254, to account for the root label's "." - // delimiter. This also means we don't need to check the last label's length for being too - // long. - if ($length > 1 && '' === $labels[$length - 1]) { - ++$maxDomainSize; - --$length; - } - - for ($i = 0; $i < $length; ++$i) { - $bytes = \strlen($labels[$i]); - $domainLength += $bytes; - - if ($bytes > self::MAX_LABEL_SIZE) { - $info->errors |= self::ERROR_LABEL_TOO_LONG; - } - } - - if ($domainLength > $maxDomainSize) { - $info->errors |= self::ERROR_DOMAIN_NAME_TOO_LONG; - } - } - - /** - * @see https://www.unicode.org/reports/tr46/#Validity_Criteria - * - * @param string $label - * @param array $options - * @param bool $canBeEmpty - */ - private static function validateLabel($label, Info $info, array $options, $canBeEmpty) - { - if ('' === $label) { - if (!$canBeEmpty && (!isset($options['VerifyDnsLength']) || $options['VerifyDnsLength'])) { - $info->errors |= self::ERROR_EMPTY_LABEL; - } - - return; - } - - // Step 1. The label must be in Unicode Normalization Form C. - if (!\Normalizer::isNormalized($label, \Normalizer::FORM_C)) { - $info->errors |= self::ERROR_INVALID_ACE_LABEL; - } - - $codePoints = self::utf8Decode($label); - - if ($options['CheckHyphens']) { - // Step 2. If CheckHyphens, the label must not contain a U+002D HYPHEN-MINUS character - // in both the thrid and fourth positions. - if (isset($codePoints[2], $codePoints[3]) && 0x002D === $codePoints[2] && 0x002D === $codePoints[3]) { - $info->errors |= self::ERROR_HYPHEN_3_4; - } - - // Step 3. If CheckHyphens, the label must neither begin nor end with a U+002D - // HYPHEN-MINUS character. - if ('-' === substr($label, 0, 1)) { - $info->errors |= self::ERROR_LEADING_HYPHEN; - } - - if ('-' === substr($label, -1, 1)) { - $info->errors |= self::ERROR_TRAILING_HYPHEN; - } - } elseif ('xn--' === substr($label, 0, 4)) { - $info->errors |= self::ERROR_PUNYCODE; - } - - // Step 4. The label must not contain a U+002E (.) FULL STOP. - if (false !== strpos($label, '.')) { - $info->errors |= self::ERROR_LABEL_HAS_DOT; - } - - // Step 5. The label must not begin with a combining mark, that is: General_Category=Mark. - if (1 === preg_match(Regex::COMBINING_MARK, $label)) { - $info->errors |= self::ERROR_LEADING_COMBINING_MARK; - } - - // Step 6. Each code point in the label must only have certain status values according to - // Section 5, IDNA Mapping Table: - $transitional = $options['Transitional_Processing']; - $useSTD3ASCIIRules = $options['UseSTD3ASCIIRules']; - - foreach ($codePoints as $codePoint) { - $data = self::lookupCodePointStatus($codePoint, $useSTD3ASCIIRules); - $status = $data['status']; - - if ('valid' === $status || (!$transitional && 'deviation' === $status)) { - continue; - } - - $info->errors |= self::ERROR_DISALLOWED; - - break; - } - - // Step 7. If CheckJoiners, the label must satisify the ContextJ rules from Appendix A, in - // The Unicode Code Points and Internationalized Domain Names for Applications (IDNA) - // [IDNA2008]. - if ($options['CheckJoiners'] && !self::isValidContextJ($codePoints, $label)) { - $info->errors |= self::ERROR_CONTEXTJ; - } - - // Step 8. If CheckBidi, and if the domain name is a Bidi domain name, then the label must - // satisfy all six of the numbered conditions in [IDNA2008] RFC 5893, Section 2. - if ($options['CheckBidi'] && (!$info->bidiDomain || $info->validBidiDomain)) { - self::validateBidiLabel($label, $info); - } - } - - /** - * @see https://tools.ietf.org/html/rfc3492#section-6.2 - * - * @param string $input - * - * @return string - */ - private static function punycodeDecode($input) - { - $n = self::INITIAL_N; - $out = 0; - $i = 0; - $bias = self::INITIAL_BIAS; - $lastDelimIndex = strrpos($input, self::DELIMITER); - $b = false === $lastDelimIndex ? 0 : $lastDelimIndex; - $inputLength = \strlen($input); - $output = []; - $bytes = array_map('ord', str_split($input)); - - for ($j = 0; $j < $b; ++$j) { - if ($bytes[$j] > 0x7F) { - throw new \Exception('Invalid input'); - } - - $output[$out++] = $input[$j]; - } - - if ($b > 0) { - ++$b; - } - - for ($in = $b; $in < $inputLength; ++$out) { - $oldi = $i; - $w = 1; - - for ($k = self::BASE; /* no condition */; $k += self::BASE) { - if ($in >= $inputLength) { - throw new \Exception('Invalid input'); - } - - $digit = self::$basicToDigit[$bytes[$in++] & 0xFF]; - - if ($digit < 0) { - throw new \Exception('Invalid input'); - } - - if ($digit > intdiv(self::MAX_INT - $i, $w)) { - throw new \Exception('Integer overflow'); - } - - $i += $digit * $w; - - if ($k <= $bias) { - $t = self::TMIN; - } elseif ($k >= $bias + self::TMAX) { - $t = self::TMAX; - } else { - $t = $k - $bias; - } - - if ($digit < $t) { - break; - } - - $baseMinusT = self::BASE - $t; - - if ($w > intdiv(self::MAX_INT, $baseMinusT)) { - throw new \Exception('Integer overflow'); - } - - $w *= $baseMinusT; - } - - $outPlusOne = $out + 1; - $bias = self::adaptBias($i - $oldi, $outPlusOne, 0 === $oldi); - - if (intdiv($i, $outPlusOne) > self::MAX_INT - $n) { - throw new \Exception('Integer overflow'); - } - - $n += intdiv($i, $outPlusOne); - $i %= $outPlusOne; - array_splice($output, $i++, 0, [mb_chr($n, 'utf-8')]); - } - - return implode('', $output); - } - - /** - * @see https://tools.ietf.org/html/rfc3492#section-6.3 - * - * @param string $input - * - * @return string - */ - private static function punycodeEncode($input) - { - $n = self::INITIAL_N; - $delta = 0; - $out = 0; - $bias = self::INITIAL_BIAS; - $inputLength = 0; - $output = ''; - $iter = self::utf8Decode($input); - - foreach ($iter as $codePoint) { - ++$inputLength; - - if ($codePoint < 0x80) { - $output .= \chr($codePoint); - ++$out; - } - } - - $h = $out; - $b = $out; - - if ($b > 0) { - $output .= self::DELIMITER; - ++$out; - } - - while ($h < $inputLength) { - $m = self::MAX_INT; - - foreach ($iter as $codePoint) { - if ($codePoint >= $n && $codePoint < $m) { - $m = $codePoint; - } - } - - if ($m - $n > intdiv(self::MAX_INT - $delta, $h + 1)) { - throw new \Exception('Integer overflow'); - } - - $delta += ($m - $n) * ($h + 1); - $n = $m; - - foreach ($iter as $codePoint) { - if ($codePoint < $n && 0 === ++$delta) { - throw new \Exception('Integer overflow'); - } - - if ($codePoint === $n) { - $q = $delta; - - for ($k = self::BASE; /* no condition */; $k += self::BASE) { - if ($k <= $bias) { - $t = self::TMIN; - } elseif ($k >= $bias + self::TMAX) { - $t = self::TMAX; - } else { - $t = $k - $bias; - } - - if ($q < $t) { - break; - } - - $qMinusT = $q - $t; - $baseMinusT = self::BASE - $t; - $output .= self::encodeDigit($t + $qMinusT % $baseMinusT, false); - ++$out; - $q = intdiv($qMinusT, $baseMinusT); - } - - $output .= self::encodeDigit($q, false); - ++$out; - $bias = self::adaptBias($delta, $h + 1, $h === $b); - $delta = 0; - ++$h; - } - } - - ++$delta; - ++$n; - } - - return $output; - } - - /** - * @see https://tools.ietf.org/html/rfc3492#section-6.1 - * - * @param int $delta - * @param int $numPoints - * @param bool $firstTime - * - * @return int - */ - private static function adaptBias($delta, $numPoints, $firstTime) - { - // xxx >> 1 is a faster way of doing intdiv(xxx, 2) - $delta = $firstTime ? intdiv($delta, self::DAMP) : $delta >> 1; - $delta += intdiv($delta, $numPoints); - $k = 0; - - while ($delta > ((self::BASE - self::TMIN) * self::TMAX) >> 1) { - $delta = intdiv($delta, self::BASE - self::TMIN); - $k += self::BASE; - } - - return $k + intdiv((self::BASE - self::TMIN + 1) * $delta, $delta + self::SKEW); - } - - /** - * @param int $d - * @param bool $flag - * - * @return string - */ - private static function encodeDigit($d, $flag) - { - return \chr($d + 22 + 75 * ($d < 26 ? 1 : 0) - (($flag ? 1 : 0) << 5)); - } - - /** - * Takes a UTF-8 encoded string and converts it into a series of integer code points. Any - * invalid byte sequences will be replaced by a U+FFFD replacement code point. - * - * @see https://encoding.spec.whatwg.org/#utf-8-decoder - * - * @param string $input - * - * @return array - */ - private static function utf8Decode($input) - { - $bytesSeen = 0; - $bytesNeeded = 0; - $lowerBoundary = 0x80; - $upperBoundary = 0xBF; - $codePoint = 0; - $codePoints = []; - $length = \strlen($input); - - for ($i = 0; $i < $length; ++$i) { - $byte = \ord($input[$i]); - - if (0 === $bytesNeeded) { - if ($byte >= 0x00 && $byte <= 0x7F) { - $codePoints[] = $byte; - - continue; - } - - if ($byte >= 0xC2 && $byte <= 0xDF) { - $bytesNeeded = 1; - $codePoint = $byte & 0x1F; - } elseif ($byte >= 0xE0 && $byte <= 0xEF) { - if (0xE0 === $byte) { - $lowerBoundary = 0xA0; - } elseif (0xED === $byte) { - $upperBoundary = 0x9F; - } - - $bytesNeeded = 2; - $codePoint = $byte & 0xF; - } elseif ($byte >= 0xF0 && $byte <= 0xF4) { - if (0xF0 === $byte) { - $lowerBoundary = 0x90; - } elseif (0xF4 === $byte) { - $upperBoundary = 0x8F; - } - - $bytesNeeded = 3; - $codePoint = $byte & 0x7; - } else { - $codePoints[] = 0xFFFD; - } - - continue; - } - - if ($byte < $lowerBoundary || $byte > $upperBoundary) { - $codePoint = 0; - $bytesNeeded = 0; - $bytesSeen = 0; - $lowerBoundary = 0x80; - $upperBoundary = 0xBF; - --$i; - $codePoints[] = 0xFFFD; - - continue; - } - - $lowerBoundary = 0x80; - $upperBoundary = 0xBF; - $codePoint = ($codePoint << 6) | ($byte & 0x3F); - - if (++$bytesSeen !== $bytesNeeded) { - continue; - } - - $codePoints[] = $codePoint; - $codePoint = 0; - $bytesNeeded = 0; - $bytesSeen = 0; - } - - // String unexpectedly ended, so append a U+FFFD code point. - if (0 !== $bytesNeeded) { - $codePoints[] = 0xFFFD; - } - - return $codePoints; - } - - /** - * @param int $codePoint - * @param bool $useSTD3ASCIIRules - * - * @return array{status: string, mapping?: string} - */ - private static function lookupCodePointStatus($codePoint, $useSTD3ASCIIRules) - { - if (!self::$mappingTableLoaded) { - self::$mappingTableLoaded = true; - self::$mapped = require __DIR__.'/Resources/unidata/mapped.php'; - self::$ignored = require __DIR__.'/Resources/unidata/ignored.php'; - self::$deviation = require __DIR__.'/Resources/unidata/deviation.php'; - self::$disallowed = require __DIR__.'/Resources/unidata/disallowed.php'; - self::$disallowed_STD3_mapped = require __DIR__.'/Resources/unidata/disallowed_STD3_mapped.php'; - self::$disallowed_STD3_valid = require __DIR__.'/Resources/unidata/disallowed_STD3_valid.php'; - } - - if (isset(self::$mapped[$codePoint])) { - return ['status' => 'mapped', 'mapping' => self::$mapped[$codePoint]]; - } - - if (isset(self::$ignored[$codePoint])) { - return ['status' => 'ignored']; - } - - if (isset(self::$deviation[$codePoint])) { - return ['status' => 'deviation', 'mapping' => self::$deviation[$codePoint]]; - } - - if (isset(self::$disallowed[$codePoint]) || DisallowedRanges::inRange($codePoint)) { - return ['status' => 'disallowed']; - } - - $isDisallowedMapped = isset(self::$disallowed_STD3_mapped[$codePoint]); - - if ($isDisallowedMapped || isset(self::$disallowed_STD3_valid[$codePoint])) { - $status = 'disallowed'; - - if (!$useSTD3ASCIIRules) { - $status = $isDisallowedMapped ? 'mapped' : 'valid'; - } - - if ($isDisallowedMapped) { - return ['status' => $status, 'mapping' => self::$disallowed_STD3_mapped[$codePoint]]; - } - - return ['status' => $status]; - } - - return ['status' => 'valid']; - } -} diff --git a/docker/streamline-src/vendor/symfony/polyfill-intl-idn/composer.json b/docker/streamline-src/vendor/symfony/polyfill-intl-idn/composer.json deleted file mode 100644 index 760debcd..00000000 --- a/docker/streamline-src/vendor/symfony/polyfill-intl-idn/composer.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "symfony/polyfill-intl-idn", - "type": "library", - "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", - "keywords": ["polyfill", "shim", "compatibility", "portable", "intl", "idn"], - "homepage": "https://symfony.com", - "license": "MIT", - "authors": [ - { - "name": "Laurent Bassin", - "email": "laurent@bassin.info" - }, - { - "name": "Trevor Rowbotham", - "email": "trevor.rowbotham@pm.me" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "require": { - "php": ">=7.2", - "symfony/polyfill-intl-normalizer": "^1.10" - }, - "autoload": { - "psr-4": { "Symfony\\Polyfill\\Intl\\Idn\\": "" }, - "files": [ "bootstrap.php" ] - }, - "suggest": { - "ext-intl": "For best performance" - }, - "minimum-stability": "dev", - "extra": { - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - } -} diff --git a/docker/streamline-src/vendor/symfony/polyfill-intl-normalizer/composer.json b/docker/streamline-src/vendor/symfony/polyfill-intl-normalizer/composer.json deleted file mode 100644 index 9bd04e88..00000000 --- a/docker/streamline-src/vendor/symfony/polyfill-intl-normalizer/composer.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "symfony/polyfill-intl-normalizer", - "type": "library", - "description": "Symfony polyfill for intl's Normalizer class and related functions", - "keywords": ["polyfill", "shim", "compatibility", "portable", "intl", "normalizer"], - "homepage": "https://symfony.com", - "license": "MIT", - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "require": { - "php": ">=7.2" - }, - "autoload": { - "psr-4": { "Symfony\\Polyfill\\Intl\\Normalizer\\": "" }, - "files": [ "bootstrap.php" ], - "classmap": [ "Resources/stubs" ] - }, - "suggest": { - "ext-intl": "For best performance" - }, - "minimum-stability": "dev", - "extra": { - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - } -} diff --git a/docker/streamline-src/vendor/symfony/polyfill-mbstring/Mbstring.php b/docker/streamline-src/vendor/symfony/polyfill-mbstring/Mbstring.php deleted file mode 100644 index 3d45c9d9..00000000 --- a/docker/streamline-src/vendor/symfony/polyfill-mbstring/Mbstring.php +++ /dev/null @@ -1,1045 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Polyfill\Mbstring; - -/** - * Partial mbstring implementation in PHP, iconv based, UTF-8 centric. - * - * Implemented: - * - mb_chr - Returns a specific character from its Unicode code point - * - mb_convert_encoding - Convert character encoding - * - mb_convert_variables - Convert character code in variable(s) - * - mb_decode_mimeheader - Decode string in MIME header field - * - mb_encode_mimeheader - Encode string for MIME header XXX NATIVE IMPLEMENTATION IS REALLY BUGGED - * - mb_decode_numericentity - Decode HTML numeric string reference to character - * - mb_encode_numericentity - Encode character to HTML numeric string reference - * - mb_convert_case - Perform case folding on a string - * - mb_detect_encoding - Detect character encoding - * - mb_get_info - Get internal settings of mbstring - * - mb_http_input - Detect HTTP input character encoding - * - mb_http_output - Set/Get HTTP output character encoding - * - mb_internal_encoding - Set/Get internal character encoding - * - mb_list_encodings - Returns an array of all supported encodings - * - mb_ord - Returns the Unicode code point of a character - * - mb_output_handler - Callback function converts character encoding in output buffer - * - mb_scrub - Replaces ill-formed byte sequences with substitute characters - * - mb_strlen - Get string length - * - mb_strpos - Find position of first occurrence of string in a string - * - mb_strrpos - Find position of last occurrence of a string in a string - * - mb_str_split - Convert a string to an array - * - mb_strtolower - Make a string lowercase - * - mb_strtoupper - Make a string uppercase - * - mb_substitute_character - Set/Get substitution character - * - mb_substr - Get part of string - * - mb_stripos - Finds position of first occurrence of a string within another, case insensitive - * - mb_stristr - Finds first occurrence of a string within another, case insensitive - * - mb_strrchr - Finds the last occurrence of a character in a string within another - * - mb_strrichr - Finds the last occurrence of a character in a string within another, case insensitive - * - mb_strripos - Finds position of last occurrence of a string within another, case insensitive - * - mb_strstr - Finds first occurrence of a string within another - * - mb_strwidth - Return width of string - * - mb_substr_count - Count the number of substring occurrences - * - mb_ucfirst - Make a string's first character uppercase - * - mb_lcfirst - Make a string's first character lowercase - * - mb_trim - Strip whitespace (or other characters) from the beginning and end of a string - * - mb_ltrim - Strip whitespace (or other characters) from the beginning of a string - * - mb_rtrim - Strip whitespace (or other characters) from the end of a string - * - * Not implemented: - * - mb_convert_kana - Convert "kana" one from another ("zen-kaku", "han-kaku" and more) - * - mb_ereg_* - Regular expression with multibyte support - * - mb_parse_str - Parse GET/POST/COOKIE data and set global variable - * - mb_preferred_mime_name - Get MIME charset string - * - mb_regex_encoding - Returns current encoding for multibyte regex as string - * - mb_regex_set_options - Set/Get the default options for mbregex functions - * - mb_send_mail - Send encoded mail - * - mb_split - Split multibyte string using regular expression - * - mb_strcut - Get part of string - * - mb_strimwidth - Get truncated string with specified width - * - * @author Nicolas Grekas - * - * @internal - */ -final class Mbstring -{ - public const MB_CASE_FOLD = \PHP_INT_MAX; - - private const SIMPLE_CASE_FOLD = [ - ['µ', 'ſ', "\xCD\x85", 'ς', "\xCF\x90", "\xCF\x91", "\xCF\x95", "\xCF\x96", "\xCF\xB0", "\xCF\xB1", "\xCF\xB5", "\xE1\xBA\x9B", "\xE1\xBE\xBE"], - ['μ', 's', 'ι', 'σ', 'β', 'θ', 'φ', 'π', 'κ', 'ρ', 'ε', "\xE1\xB9\xA1", 'ι'], - ]; - - private static $encodingList = ['ASCII', 'UTF-8']; - private static $language = 'neutral'; - private static $internalEncoding = 'UTF-8'; - - public static function mb_convert_encoding($s, $toEncoding, $fromEncoding = null) - { - if (\is_array($s)) { - $r = []; - foreach ($s as $str) { - $r[] = self::mb_convert_encoding($str, $toEncoding, $fromEncoding); - } - - return $r; - } - - if (\is_array($fromEncoding) || (null !== $fromEncoding && false !== strpos($fromEncoding, ','))) { - $fromEncoding = self::mb_detect_encoding($s, $fromEncoding); - } else { - $fromEncoding = self::getEncoding($fromEncoding); - } - - $toEncoding = self::getEncoding($toEncoding); - - if ('BASE64' === $fromEncoding) { - $s = base64_decode($s); - $fromEncoding = $toEncoding; - } - - if ('BASE64' === $toEncoding) { - return base64_encode($s); - } - - if ('HTML-ENTITIES' === $toEncoding || 'HTML' === $toEncoding) { - if ('HTML-ENTITIES' === $fromEncoding || 'HTML' === $fromEncoding) { - $fromEncoding = 'Windows-1252'; - } - if ('UTF-8' !== $fromEncoding) { - $s = iconv($fromEncoding, 'UTF-8//IGNORE', $s); - } - - return preg_replace_callback('/[\x80-\xFF]+/', [__CLASS__, 'html_encoding_callback'], $s); - } - - if ('HTML-ENTITIES' === $fromEncoding) { - $s = html_entity_decode($s, \ENT_COMPAT, 'UTF-8'); - $fromEncoding = 'UTF-8'; - } - - return iconv($fromEncoding, $toEncoding.'//IGNORE', $s); - } - - public static function mb_convert_variables($toEncoding, $fromEncoding, &...$vars) - { - $ok = true; - array_walk_recursive($vars, function (&$v) use (&$ok, $toEncoding, $fromEncoding) { - if (false === $v = self::mb_convert_encoding($v, $toEncoding, $fromEncoding)) { - $ok = false; - } - }); - - return $ok ? $fromEncoding : false; - } - - public static function mb_decode_mimeheader($s) - { - return iconv_mime_decode($s, 2, self::$internalEncoding); - } - - public static function mb_encode_mimeheader($s, $charset = null, $transferEncoding = null, $linefeed = null, $indent = null) - { - trigger_error('mb_encode_mimeheader() is bugged. Please use iconv_mime_encode() instead', \E_USER_WARNING); - } - - public static function mb_decode_numericentity($s, $convmap, $encoding = null) - { - if (null !== $s && !\is_scalar($s) && !(\is_object($s) && method_exists($s, '__toString'))) { - trigger_error('mb_decode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', \E_USER_WARNING); - - return null; - } - - if (!\is_array($convmap) || (80000 > \PHP_VERSION_ID && !$convmap)) { - return false; - } - - if (null !== $encoding && !\is_scalar($encoding)) { - trigger_error('mb_decode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', \E_USER_WARNING); - - return ''; // Instead of null (cf. mb_encode_numericentity). - } - - $s = (string) $s; - if ('' === $s) { - return ''; - } - - $encoding = self::getEncoding($encoding); - - if ('UTF-8' === $encoding) { - $encoding = null; - if (!preg_match('//u', $s)) { - $s = @iconv('UTF-8', 'UTF-8//IGNORE', $s); - } - } else { - $s = iconv($encoding, 'UTF-8//IGNORE', $s); - } - - $cnt = floor(\count($convmap) / 4) * 4; - - for ($i = 0; $i < $cnt; $i += 4) { - // collector_decode_htmlnumericentity ignores $convmap[$i + 3] - $convmap[$i] += $convmap[$i + 2]; - $convmap[$i + 1] += $convmap[$i + 2]; - } - - $s = preg_replace_callback('/&#(?:0*([0-9]+)|x0*([0-9a-fA-F]+))(?!&);?/', function (array $m) use ($cnt, $convmap) { - $c = isset($m[2]) ? (int) hexdec($m[2]) : $m[1]; - for ($i = 0; $i < $cnt; $i += 4) { - if ($c >= $convmap[$i] && $c <= $convmap[$i + 1]) { - return self::mb_chr($c - $convmap[$i + 2]); - } - } - - return $m[0]; - }, $s); - - if (null === $encoding) { - return $s; - } - - return iconv('UTF-8', $encoding.'//IGNORE', $s); - } - - public static function mb_encode_numericentity($s, $convmap, $encoding = null, $is_hex = false) - { - if (null !== $s && !\is_scalar($s) && !(\is_object($s) && method_exists($s, '__toString'))) { - trigger_error('mb_encode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', \E_USER_WARNING); - - return null; - } - - if (!\is_array($convmap) || (80000 > \PHP_VERSION_ID && !$convmap)) { - return false; - } - - if (null !== $encoding && !\is_scalar($encoding)) { - trigger_error('mb_encode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', \E_USER_WARNING); - - return null; // Instead of '' (cf. mb_decode_numericentity). - } - - if (null !== $is_hex && !\is_scalar($is_hex)) { - trigger_error('mb_encode_numericentity() expects parameter 4 to be boolean, '.\gettype($s).' given', \E_USER_WARNING); - - return null; - } - - $s = (string) $s; - if ('' === $s) { - return ''; - } - - $encoding = self::getEncoding($encoding); - - if ('UTF-8' === $encoding) { - $encoding = null; - if (!preg_match('//u', $s)) { - $s = @iconv('UTF-8', 'UTF-8//IGNORE', $s); - } - } else { - $s = iconv($encoding, 'UTF-8//IGNORE', $s); - } - - static $ulenMask = ["\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4]; - - $cnt = floor(\count($convmap) / 4) * 4; - $i = 0; - $len = \strlen($s); - $result = ''; - - while ($i < $len) { - $ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"]; - $uchr = substr($s, $i, $ulen); - $i += $ulen; - $c = self::mb_ord($uchr); - - for ($j = 0; $j < $cnt; $j += 4) { - if ($c >= $convmap[$j] && $c <= $convmap[$j + 1]) { - $cOffset = ($c + $convmap[$j + 2]) & $convmap[$j + 3]; - $result .= $is_hex ? sprintf('&#x%X;', $cOffset) : '&#'.$cOffset.';'; - continue 2; - } - } - $result .= $uchr; - } - - if (null === $encoding) { - return $result; - } - - return iconv('UTF-8', $encoding.'//IGNORE', $result); - } - - public static function mb_convert_case($s, $mode, $encoding = null) - { - $s = (string) $s; - if ('' === $s) { - return ''; - } - - $encoding = self::getEncoding($encoding); - - if ('UTF-8' === $encoding) { - $encoding = null; - if (!preg_match('//u', $s)) { - $s = @iconv('UTF-8', 'UTF-8//IGNORE', $s); - } - } else { - $s = iconv($encoding, 'UTF-8//IGNORE', $s); - } - - if (\MB_CASE_TITLE == $mode) { - static $titleRegexp = null; - if (null === $titleRegexp) { - $titleRegexp = self::getData('titleCaseRegexp'); - } - $s = preg_replace_callback($titleRegexp, [__CLASS__, 'title_case'], $s); - } else { - if (\MB_CASE_UPPER == $mode) { - static $upper = null; - if (null === $upper) { - $upper = self::getData('upperCase'); - } - $map = $upper; - } else { - if (self::MB_CASE_FOLD === $mode) { - static $caseFolding = null; - if (null === $caseFolding) { - $caseFolding = self::getData('caseFolding'); - } - $s = strtr($s, $caseFolding); - } - - static $lower = null; - if (null === $lower) { - $lower = self::getData('lowerCase'); - } - $map = $lower; - } - - static $ulenMask = ["\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4]; - - $i = 0; - $len = \strlen($s); - - while ($i < $len) { - $ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"]; - $uchr = substr($s, $i, $ulen); - $i += $ulen; - - if (isset($map[$uchr])) { - $uchr = $map[$uchr]; - $nlen = \strlen($uchr); - - if ($nlen == $ulen) { - $nlen = $i; - do { - $s[--$nlen] = $uchr[--$ulen]; - } while ($ulen); - } else { - $s = substr_replace($s, $uchr, $i - $ulen, $ulen); - $len += $nlen - $ulen; - $i += $nlen - $ulen; - } - } - } - } - - if (null === $encoding) { - return $s; - } - - return iconv('UTF-8', $encoding.'//IGNORE', $s); - } - - public static function mb_internal_encoding($encoding = null) - { - if (null === $encoding) { - return self::$internalEncoding; - } - - $normalizedEncoding = self::getEncoding($encoding); - - if ('UTF-8' === $normalizedEncoding || false !== @iconv($normalizedEncoding, $normalizedEncoding, ' ')) { - self::$internalEncoding = $normalizedEncoding; - - return true; - } - - if (80000 > \PHP_VERSION_ID) { - return false; - } - - throw new \ValueError(sprintf('Argument #1 ($encoding) must be a valid encoding, "%s" given', $encoding)); - } - - public static function mb_language($lang = null) - { - if (null === $lang) { - return self::$language; - } - - switch ($normalizedLang = strtolower($lang)) { - case 'uni': - case 'neutral': - self::$language = $normalizedLang; - - return true; - } - - if (80000 > \PHP_VERSION_ID) { - return false; - } - - throw new \ValueError(sprintf('Argument #1 ($language) must be a valid language, "%s" given', $lang)); - } - - public static function mb_list_encodings() - { - return ['UTF-8']; - } - - public static function mb_encoding_aliases($encoding) - { - switch (strtoupper($encoding)) { - case 'UTF8': - case 'UTF-8': - return ['utf8']; - } - - return false; - } - - public static function mb_check_encoding($var = null, $encoding = null) - { - if (null === $encoding) { - if (null === $var) { - return false; - } - $encoding = self::$internalEncoding; - } - - if (!\is_array($var)) { - return self::mb_detect_encoding($var, [$encoding]) || false !== @iconv($encoding, $encoding, $var); - } - - foreach ($var as $key => $value) { - if (!self::mb_check_encoding($key, $encoding)) { - return false; - } - if (!self::mb_check_encoding($value, $encoding)) { - return false; - } - } - - return true; - } - - public static function mb_detect_encoding($str, $encodingList = null, $strict = false) - { - if (null === $encodingList) { - $encodingList = self::$encodingList; - } else { - if (!\is_array($encodingList)) { - $encodingList = array_map('trim', explode(',', $encodingList)); - } - $encodingList = array_map('strtoupper', $encodingList); - } - - foreach ($encodingList as $enc) { - switch ($enc) { - case 'ASCII': - if (!preg_match('/[\x80-\xFF]/', $str)) { - return $enc; - } - break; - - case 'UTF8': - case 'UTF-8': - if (preg_match('//u', $str)) { - return 'UTF-8'; - } - break; - - default: - if (0 === strncmp($enc, 'ISO-8859-', 9)) { - return $enc; - } - } - } - - return false; - } - - public static function mb_detect_order($encodingList = null) - { - if (null === $encodingList) { - return self::$encodingList; - } - - if (!\is_array($encodingList)) { - $encodingList = array_map('trim', explode(',', $encodingList)); - } - $encodingList = array_map('strtoupper', $encodingList); - - foreach ($encodingList as $enc) { - switch ($enc) { - default: - if (strncmp($enc, 'ISO-8859-', 9)) { - return false; - } - // no break - case 'ASCII': - case 'UTF8': - case 'UTF-8': - } - } - - self::$encodingList = $encodingList; - - return true; - } - - public static function mb_strlen($s, $encoding = null) - { - $encoding = self::getEncoding($encoding); - if ('CP850' === $encoding || 'ASCII' === $encoding) { - return \strlen($s); - } - - return @iconv_strlen($s, $encoding); - } - - public static function mb_strpos($haystack, $needle, $offset = 0, $encoding = null) - { - $encoding = self::getEncoding($encoding); - if ('CP850' === $encoding || 'ASCII' === $encoding) { - return strpos($haystack, $needle, $offset); - } - - $needle = (string) $needle; - if ('' === $needle) { - if (80000 > \PHP_VERSION_ID) { - trigger_error(__METHOD__.': Empty delimiter', \E_USER_WARNING); - - return false; - } - - return 0; - } - - return iconv_strpos($haystack, $needle, $offset, $encoding); - } - - public static function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null) - { - $encoding = self::getEncoding($encoding); - if ('CP850' === $encoding || 'ASCII' === $encoding) { - return strrpos($haystack, $needle, $offset); - } - - if ($offset != (int) $offset) { - $offset = 0; - } elseif ($offset = (int) $offset) { - if ($offset < 0) { - if (0 > $offset += self::mb_strlen($needle)) { - $haystack = self::mb_substr($haystack, 0, $offset, $encoding); - } - $offset = 0; - } else { - $haystack = self::mb_substr($haystack, $offset, 2147483647, $encoding); - } - } - - $pos = '' !== $needle || 80000 > \PHP_VERSION_ID - ? iconv_strrpos($haystack, $needle, $encoding) - : self::mb_strlen($haystack, $encoding); - - return false !== $pos ? $offset + $pos : false; - } - - public static function mb_str_split($string, $split_length = 1, $encoding = null) - { - if (null !== $string && !\is_scalar($string) && !(\is_object($string) && method_exists($string, '__toString'))) { - trigger_error('mb_str_split() expects parameter 1 to be string, '.\gettype($string).' given', \E_USER_WARNING); - - return null; - } - - if (1 > $split_length = (int) $split_length) { - if (80000 > \PHP_VERSION_ID) { - trigger_error('The length of each segment must be greater than zero', \E_USER_WARNING); - - return false; - } - - throw new \ValueError('Argument #2 ($length) must be greater than 0'); - } - - if (null === $encoding) { - $encoding = mb_internal_encoding(); - } - - if ('UTF-8' === $encoding = self::getEncoding($encoding)) { - $rx = '/('; - while (65535 < $split_length) { - $rx .= '.{65535}'; - $split_length -= 65535; - } - $rx .= '.{'.$split_length.'})/us'; - - return preg_split($rx, $string, -1, \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY); - } - - $result = []; - $length = mb_strlen($string, $encoding); - - for ($i = 0; $i < $length; $i += $split_length) { - $result[] = mb_substr($string, $i, $split_length, $encoding); - } - - return $result; - } - - public static function mb_strtolower($s, $encoding = null) - { - return self::mb_convert_case($s, \MB_CASE_LOWER, $encoding); - } - - public static function mb_strtoupper($s, $encoding = null) - { - return self::mb_convert_case($s, \MB_CASE_UPPER, $encoding); - } - - public static function mb_substitute_character($c = null) - { - if (null === $c) { - return 'none'; - } - if (0 === strcasecmp($c, 'none')) { - return true; - } - if (80000 > \PHP_VERSION_ID) { - return false; - } - if (\is_int($c) || 'long' === $c || 'entity' === $c) { - return false; - } - - throw new \ValueError('Argument #1 ($substitute_character) must be "none", "long", "entity" or a valid codepoint'); - } - - public static function mb_substr($s, $start, $length = null, $encoding = null) - { - $encoding = self::getEncoding($encoding); - if ('CP850' === $encoding || 'ASCII' === $encoding) { - return (string) substr($s, $start, null === $length ? 2147483647 : $length); - } - - if ($start < 0) { - $start = iconv_strlen($s, $encoding) + $start; - if ($start < 0) { - $start = 0; - } - } - - if (null === $length) { - $length = 2147483647; - } elseif ($length < 0) { - $length = iconv_strlen($s, $encoding) + $length - $start; - if ($length < 0) { - return ''; - } - } - - return (string) iconv_substr($s, $start, $length, $encoding); - } - - public static function mb_stripos($haystack, $needle, $offset = 0, $encoding = null) - { - [$haystack, $needle] = str_replace(self::SIMPLE_CASE_FOLD[0], self::SIMPLE_CASE_FOLD[1], [ - self::mb_convert_case($haystack, \MB_CASE_LOWER, $encoding), - self::mb_convert_case($needle, \MB_CASE_LOWER, $encoding), - ]); - - return self::mb_strpos($haystack, $needle, $offset, $encoding); - } - - public static function mb_stristr($haystack, $needle, $part = false, $encoding = null) - { - $pos = self::mb_stripos($haystack, $needle, 0, $encoding); - - return self::getSubpart($pos, $part, $haystack, $encoding); - } - - public static function mb_strrchr($haystack, $needle, $part = false, $encoding = null) - { - $encoding = self::getEncoding($encoding); - if ('CP850' === $encoding || 'ASCII' === $encoding) { - $pos = strrpos($haystack, $needle); - } else { - $needle = self::mb_substr($needle, 0, 1, $encoding); - $pos = iconv_strrpos($haystack, $needle, $encoding); - } - - return self::getSubpart($pos, $part, $haystack, $encoding); - } - - public static function mb_strrichr($haystack, $needle, $part = false, $encoding = null) - { - $needle = self::mb_substr($needle, 0, 1, $encoding); - $pos = self::mb_strripos($haystack, $needle, $encoding); - - return self::getSubpart($pos, $part, $haystack, $encoding); - } - - public static function mb_strripos($haystack, $needle, $offset = 0, $encoding = null) - { - $haystack = self::mb_convert_case($haystack, \MB_CASE_LOWER, $encoding); - $needle = self::mb_convert_case($needle, \MB_CASE_LOWER, $encoding); - - $haystack = str_replace(self::SIMPLE_CASE_FOLD[0], self::SIMPLE_CASE_FOLD[1], $haystack); - $needle = str_replace(self::SIMPLE_CASE_FOLD[0], self::SIMPLE_CASE_FOLD[1], $needle); - - return self::mb_strrpos($haystack, $needle, $offset, $encoding); - } - - public static function mb_strstr($haystack, $needle, $part = false, $encoding = null) - { - $pos = strpos($haystack, $needle); - if (false === $pos) { - return false; - } - if ($part) { - return substr($haystack, 0, $pos); - } - - return substr($haystack, $pos); - } - - public static function mb_get_info($type = 'all') - { - $info = [ - 'internal_encoding' => self::$internalEncoding, - 'http_output' => 'pass', - 'http_output_conv_mimetypes' => '^(text/|application/xhtml\+xml)', - 'func_overload' => 0, - 'func_overload_list' => 'no overload', - 'mail_charset' => 'UTF-8', - 'mail_header_encoding' => 'BASE64', - 'mail_body_encoding' => 'BASE64', - 'illegal_chars' => 0, - 'encoding_translation' => 'Off', - 'language' => self::$language, - 'detect_order' => self::$encodingList, - 'substitute_character' => 'none', - 'strict_detection' => 'Off', - ]; - - if ('all' === $type) { - return $info; - } - if (isset($info[$type])) { - return $info[$type]; - } - - return false; - } - - public static function mb_http_input($type = '') - { - return false; - } - - public static function mb_http_output($encoding = null) - { - return null !== $encoding ? 'pass' === $encoding : 'pass'; - } - - public static function mb_strwidth($s, $encoding = null) - { - $encoding = self::getEncoding($encoding); - - if ('UTF-8' !== $encoding) { - $s = iconv($encoding, 'UTF-8//IGNORE', $s); - } - - $s = preg_replace('/[\x{1100}-\x{115F}\x{2329}\x{232A}\x{2E80}-\x{303E}\x{3040}-\x{A4CF}\x{AC00}-\x{D7A3}\x{F900}-\x{FAFF}\x{FE10}-\x{FE19}\x{FE30}-\x{FE6F}\x{FF00}-\x{FF60}\x{FFE0}-\x{FFE6}\x{20000}-\x{2FFFD}\x{30000}-\x{3FFFD}]/u', '', $s, -1, $wide); - - return ($wide << 1) + iconv_strlen($s, 'UTF-8'); - } - - public static function mb_substr_count($haystack, $needle, $encoding = null) - { - return substr_count($haystack, $needle); - } - - public static function mb_output_handler($contents, $status) - { - return $contents; - } - - public static function mb_chr($code, $encoding = null) - { - if (0x80 > $code %= 0x200000) { - $s = \chr($code); - } elseif (0x800 > $code) { - $s = \chr(0xC0 | $code >> 6).\chr(0x80 | $code & 0x3F); - } elseif (0x10000 > $code) { - $s = \chr(0xE0 | $code >> 12).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F); - } else { - $s = \chr(0xF0 | $code >> 18).\chr(0x80 | $code >> 12 & 0x3F).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F); - } - - if ('UTF-8' !== $encoding = self::getEncoding($encoding)) { - $s = mb_convert_encoding($s, $encoding, 'UTF-8'); - } - - return $s; - } - - public static function mb_ord($s, $encoding = null) - { - if ('UTF-8' !== $encoding = self::getEncoding($encoding)) { - $s = mb_convert_encoding($s, 'UTF-8', $encoding); - } - - if (1 === \strlen($s)) { - return \ord($s); - } - - $code = ($s = unpack('C*', substr($s, 0, 4))) ? $s[1] : 0; - if (0xF0 <= $code) { - return (($code - 0xF0) << 18) + (($s[2] - 0x80) << 12) + (($s[3] - 0x80) << 6) + $s[4] - 0x80; - } - if (0xE0 <= $code) { - return (($code - 0xE0) << 12) + (($s[2] - 0x80) << 6) + $s[3] - 0x80; - } - if (0xC0 <= $code) { - return (($code - 0xC0) << 6) + $s[2] - 0x80; - } - - return $code; - } - - public static function mb_str_pad(string $string, int $length, string $pad_string = ' ', int $pad_type = \STR_PAD_RIGHT, ?string $encoding = null): string - { - if (!\in_array($pad_type, [\STR_PAD_RIGHT, \STR_PAD_LEFT, \STR_PAD_BOTH], true)) { - throw new \ValueError('mb_str_pad(): Argument #4 ($pad_type) must be STR_PAD_LEFT, STR_PAD_RIGHT, or STR_PAD_BOTH'); - } - - if (null === $encoding) { - $encoding = self::mb_internal_encoding(); - } else { - self::assertEncoding($encoding, 'mb_str_pad(): Argument #5 ($encoding) must be a valid encoding, "%s" given'); - } - - if (self::mb_strlen($pad_string, $encoding) <= 0) { - throw new \ValueError('mb_str_pad(): Argument #3 ($pad_string) must be a non-empty string'); - } - - $paddingRequired = $length - self::mb_strlen($string, $encoding); - - if ($paddingRequired < 1) { - return $string; - } - - switch ($pad_type) { - case \STR_PAD_LEFT: - return self::mb_substr(str_repeat($pad_string, $paddingRequired), 0, $paddingRequired, $encoding).$string; - case \STR_PAD_RIGHT: - return $string.self::mb_substr(str_repeat($pad_string, $paddingRequired), 0, $paddingRequired, $encoding); - default: - $leftPaddingLength = floor($paddingRequired / 2); - $rightPaddingLength = $paddingRequired - $leftPaddingLength; - - return self::mb_substr(str_repeat($pad_string, $leftPaddingLength), 0, $leftPaddingLength, $encoding).$string.self::mb_substr(str_repeat($pad_string, $rightPaddingLength), 0, $rightPaddingLength, $encoding); - } - } - - public static function mb_ucfirst(string $string, ?string $encoding = null): string - { - if (null === $encoding) { - $encoding = self::mb_internal_encoding(); - } else { - self::assertEncoding($encoding, 'mb_ucfirst(): Argument #2 ($encoding) must be a valid encoding, "%s" given'); - } - - $firstChar = mb_substr($string, 0, 1, $encoding); - $firstChar = mb_convert_case($firstChar, \MB_CASE_TITLE, $encoding); - - return $firstChar.mb_substr($string, 1, null, $encoding); - } - - public static function mb_lcfirst(string $string, ?string $encoding = null): string - { - if (null === $encoding) { - $encoding = self::mb_internal_encoding(); - } else { - self::assertEncoding($encoding, 'mb_lcfirst(): Argument #2 ($encoding) must be a valid encoding, "%s" given'); - } - - $firstChar = mb_substr($string, 0, 1, $encoding); - $firstChar = mb_convert_case($firstChar, \MB_CASE_LOWER, $encoding); - - return $firstChar.mb_substr($string, 1, null, $encoding); - } - - private static function getSubpart($pos, $part, $haystack, $encoding) - { - if (false === $pos) { - return false; - } - if ($part) { - return self::mb_substr($haystack, 0, $pos, $encoding); - } - - return self::mb_substr($haystack, $pos, null, $encoding); - } - - private static function html_encoding_callback(array $m) - { - $i = 1; - $entities = ''; - $m = unpack('C*', htmlentities($m[0], \ENT_COMPAT, 'UTF-8')); - - while (isset($m[$i])) { - if (0x80 > $m[$i]) { - $entities .= \chr($m[$i++]); - continue; - } - if (0xF0 <= $m[$i]) { - $c = (($m[$i++] - 0xF0) << 18) + (($m[$i++] - 0x80) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80; - } elseif (0xE0 <= $m[$i]) { - $c = (($m[$i++] - 0xE0) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80; - } else { - $c = (($m[$i++] - 0xC0) << 6) + $m[$i++] - 0x80; - } - - $entities .= '&#'.$c.';'; - } - - return $entities; - } - - private static function title_case(array $s) - { - return self::mb_convert_case($s[1], \MB_CASE_UPPER, 'UTF-8').self::mb_convert_case($s[2], \MB_CASE_LOWER, 'UTF-8'); - } - - private static function getData($file) - { - if (file_exists($file = __DIR__.'/Resources/unidata/'.$file.'.php')) { - return require $file; - } - - return false; - } - - private static function getEncoding($encoding) - { - if (null === $encoding) { - return self::$internalEncoding; - } - - if ('UTF-8' === $encoding) { - return 'UTF-8'; - } - - $encoding = strtoupper($encoding); - - if ('8BIT' === $encoding || 'BINARY' === $encoding) { - return 'CP850'; - } - - if ('UTF8' === $encoding) { - return 'UTF-8'; - } - - return $encoding; - } - - public static function mb_trim(string $string, ?string $characters = null, ?string $encoding = null): string - { - return self::mb_internal_trim('{^[%s]+|[%1$s]+$}Du', $string, $characters, $encoding, __FUNCTION__); - } - - public static function mb_ltrim(string $string, ?string $characters = null, ?string $encoding = null): string - { - return self::mb_internal_trim('{^[%s]+}Du', $string, $characters, $encoding, __FUNCTION__); - } - - public static function mb_rtrim(string $string, ?string $characters = null, ?string $encoding = null): string - { - return self::mb_internal_trim('{[%s]+$}D', $string, $characters, $encoding, __FUNCTION__); - } - - private static function mb_internal_trim(string $regex, string $string, ?string $characters, ?string $encoding, string $function): string - { - if (null === $encoding) { - $encoding = self::mb_internal_encoding(); - } else { - self::assertEncoding($encoding, $function.'(): Argument #3 ($encoding) must be a valid encoding, "%s" given'); - } - - if ('' === $characters) { - return null === $encoding ? $string : self::mb_convert_encoding($string, $encoding); - } - - if ('UTF-8' === $encoding) { - $encoding = null; - if (!preg_match('//u', $string)) { - $string = @iconv('UTF-8', 'UTF-8//IGNORE', $string); - } - if (null !== $characters && !preg_match('//u', $characters)) { - $characters = @iconv('UTF-8', 'UTF-8//IGNORE', $characters); - } - } else { - $string = iconv($encoding, 'UTF-8//IGNORE', $string); - - if (null !== $characters) { - $characters = iconv($encoding, 'UTF-8//IGNORE', $characters); - } - } - - if (null === $characters) { - $characters = "\\0 \f\n\r\t\v\u{00A0}\u{1680}\u{2000}\u{2001}\u{2002}\u{2003}\u{2004}\u{2005}\u{2006}\u{2007}\u{2008}\u{2009}\u{200A}\u{2028}\u{2029}\u{202F}\u{205F}\u{3000}\u{0085}\u{180E}"; - } else { - $characters = preg_quote($characters); - } - - $string = preg_replace(sprintf($regex, $characters), '', $string); - - if (null === $encoding) { - return $string; - } - - return iconv('UTF-8', $encoding.'//IGNORE', $string); - } - - private static function assertEncoding(string $encoding, string $errorFormat): void - { - try { - $validEncoding = @self::mb_check_encoding('', $encoding); - } catch (\ValueError $e) { - throw new \ValueError(sprintf($errorFormat, $encoding)); - } - - // BC for PHP 7.3 and lower - if (!$validEncoding) { - throw new \ValueError(sprintf($errorFormat, $encoding)); - } - } -} diff --git a/docker/streamline-src/vendor/symfony/polyfill-mbstring/bootstrap.php b/docker/streamline-src/vendor/symfony/polyfill-mbstring/bootstrap.php deleted file mode 100644 index ff51ae07..00000000 --- a/docker/streamline-src/vendor/symfony/polyfill-mbstring/bootstrap.php +++ /dev/null @@ -1,172 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -use Symfony\Polyfill\Mbstring as p; - -if (\PHP_VERSION_ID >= 80000) { - return require __DIR__.'/bootstrap80.php'; -} - -if (!function_exists('mb_convert_encoding')) { - function mb_convert_encoding($string, $to_encoding, $from_encoding = null) { return p\Mbstring::mb_convert_encoding($string, $to_encoding, $from_encoding); } -} -if (!function_exists('mb_decode_mimeheader')) { - function mb_decode_mimeheader($string) { return p\Mbstring::mb_decode_mimeheader($string); } -} -if (!function_exists('mb_encode_mimeheader')) { - function mb_encode_mimeheader($string, $charset = null, $transfer_encoding = null, $newline = "\r\n", $indent = 0) { return p\Mbstring::mb_encode_mimeheader($string, $charset, $transfer_encoding, $newline, $indent); } -} -if (!function_exists('mb_decode_numericentity')) { - function mb_decode_numericentity($string, $map, $encoding = null) { return p\Mbstring::mb_decode_numericentity($string, $map, $encoding); } -} -if (!function_exists('mb_encode_numericentity')) { - function mb_encode_numericentity($string, $map, $encoding = null, $hex = false) { return p\Mbstring::mb_encode_numericentity($string, $map, $encoding, $hex); } -} -if (!function_exists('mb_convert_case')) { - function mb_convert_case($string, $mode, $encoding = null) { return p\Mbstring::mb_convert_case($string, $mode, $encoding); } -} -if (!function_exists('mb_internal_encoding')) { - function mb_internal_encoding($encoding = null) { return p\Mbstring::mb_internal_encoding($encoding); } -} -if (!function_exists('mb_language')) { - function mb_language($language = null) { return p\Mbstring::mb_language($language); } -} -if (!function_exists('mb_list_encodings')) { - function mb_list_encodings() { return p\Mbstring::mb_list_encodings(); } -} -if (!function_exists('mb_encoding_aliases')) { - function mb_encoding_aliases($encoding) { return p\Mbstring::mb_encoding_aliases($encoding); } -} -if (!function_exists('mb_check_encoding')) { - function mb_check_encoding($value = null, $encoding = null) { return p\Mbstring::mb_check_encoding($value, $encoding); } -} -if (!function_exists('mb_detect_encoding')) { - function mb_detect_encoding($string, $encodings = null, $strict = false) { return p\Mbstring::mb_detect_encoding($string, $encodings, $strict); } -} -if (!function_exists('mb_detect_order')) { - function mb_detect_order($encoding = null) { return p\Mbstring::mb_detect_order($encoding); } -} -if (!function_exists('mb_parse_str')) { - function mb_parse_str($string, &$result = []) { parse_str($string, $result); return (bool) $result; } -} -if (!function_exists('mb_strlen')) { - function mb_strlen($string, $encoding = null) { return p\Mbstring::mb_strlen($string, $encoding); } -} -if (!function_exists('mb_strpos')) { - function mb_strpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strpos($haystack, $needle, $offset, $encoding); } -} -if (!function_exists('mb_strtolower')) { - function mb_strtolower($string, $encoding = null) { return p\Mbstring::mb_strtolower($string, $encoding); } -} -if (!function_exists('mb_strtoupper')) { - function mb_strtoupper($string, $encoding = null) { return p\Mbstring::mb_strtoupper($string, $encoding); } -} -if (!function_exists('mb_substitute_character')) { - function mb_substitute_character($substitute_character = null) { return p\Mbstring::mb_substitute_character($substitute_character); } -} -if (!function_exists('mb_substr')) { - function mb_substr($string, $start, $length = 2147483647, $encoding = null) { return p\Mbstring::mb_substr($string, $start, $length, $encoding); } -} -if (!function_exists('mb_stripos')) { - function mb_stripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_stripos($haystack, $needle, $offset, $encoding); } -} -if (!function_exists('mb_stristr')) { - function mb_stristr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_stristr($haystack, $needle, $before_needle, $encoding); } -} -if (!function_exists('mb_strrchr')) { - function mb_strrchr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrchr($haystack, $needle, $before_needle, $encoding); } -} -if (!function_exists('mb_strrichr')) { - function mb_strrichr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrichr($haystack, $needle, $before_needle, $encoding); } -} -if (!function_exists('mb_strripos')) { - function mb_strripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strripos($haystack, $needle, $offset, $encoding); } -} -if (!function_exists('mb_strrpos')) { - function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strrpos($haystack, $needle, $offset, $encoding); } -} -if (!function_exists('mb_strstr')) { - function mb_strstr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strstr($haystack, $needle, $before_needle, $encoding); } -} -if (!function_exists('mb_get_info')) { - function mb_get_info($type = 'all') { return p\Mbstring::mb_get_info($type); } -} -if (!function_exists('mb_http_output')) { - function mb_http_output($encoding = null) { return p\Mbstring::mb_http_output($encoding); } -} -if (!function_exists('mb_strwidth')) { - function mb_strwidth($string, $encoding = null) { return p\Mbstring::mb_strwidth($string, $encoding); } -} -if (!function_exists('mb_substr_count')) { - function mb_substr_count($haystack, $needle, $encoding = null) { return p\Mbstring::mb_substr_count($haystack, $needle, $encoding); } -} -if (!function_exists('mb_output_handler')) { - function mb_output_handler($string, $status) { return p\Mbstring::mb_output_handler($string, $status); } -} -if (!function_exists('mb_http_input')) { - function mb_http_input($type = null) { return p\Mbstring::mb_http_input($type); } -} - -if (!function_exists('mb_convert_variables')) { - function mb_convert_variables($to_encoding, $from_encoding, &...$vars) { return p\Mbstring::mb_convert_variables($to_encoding, $from_encoding, ...$vars); } -} - -if (!function_exists('mb_ord')) { - function mb_ord($string, $encoding = null) { return p\Mbstring::mb_ord($string, $encoding); } -} -if (!function_exists('mb_chr')) { - function mb_chr($codepoint, $encoding = null) { return p\Mbstring::mb_chr($codepoint, $encoding); } -} -if (!function_exists('mb_scrub')) { - function mb_scrub($string, $encoding = null) { $encoding = null === $encoding ? mb_internal_encoding() : $encoding; return mb_convert_encoding($string, $encoding, $encoding); } -} -if (!function_exists('mb_str_split')) { - function mb_str_split($string, $length = 1, $encoding = null) { return p\Mbstring::mb_str_split($string, $length, $encoding); } -} - -if (!function_exists('mb_str_pad')) { - function mb_str_pad(string $string, int $length, string $pad_string = ' ', int $pad_type = STR_PAD_RIGHT, ?string $encoding = null): string { return p\Mbstring::mb_str_pad($string, $length, $pad_string, $pad_type, $encoding); } -} - -if (!function_exists('mb_ucfirst')) { - function mb_ucfirst(string $string, ?string $encoding = null): string { return p\Mbstring::mb_ucfirst($string, $encoding); } -} - -if (!function_exists('mb_lcfirst')) { - function mb_lcfirst(string $string, ?string $encoding = null): string { return p\Mbstring::mb_lcfirst($string, $encoding); } -} - -if (!function_exists('mb_trim')) { - function mb_trim(string $string, ?string $characters = null, ?string $encoding = null): string { return p\Mbstring::mb_trim($string, $characters, $encoding); } -} - -if (!function_exists('mb_ltrim')) { - function mb_ltrim(string $string, ?string $characters = null, ?string $encoding = null): string { return p\Mbstring::mb_ltrim($string, $characters, $encoding); } -} - -if (!function_exists('mb_rtrim')) { - function mb_rtrim(string $string, ?string $characters = null, ?string $encoding = null): string { return p\Mbstring::mb_rtrim($string, $characters, $encoding); } -} - - -if (extension_loaded('mbstring')) { - return; -} - -if (!defined('MB_CASE_UPPER')) { - define('MB_CASE_UPPER', 0); -} -if (!defined('MB_CASE_LOWER')) { - define('MB_CASE_LOWER', 1); -} -if (!defined('MB_CASE_TITLE')) { - define('MB_CASE_TITLE', 2); -} diff --git a/docker/streamline-src/vendor/symfony/polyfill-mbstring/bootstrap80.php b/docker/streamline-src/vendor/symfony/polyfill-mbstring/bootstrap80.php deleted file mode 100644 index 5be7d201..00000000 --- a/docker/streamline-src/vendor/symfony/polyfill-mbstring/bootstrap80.php +++ /dev/null @@ -1,167 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -use Symfony\Polyfill\Mbstring as p; - -if (!function_exists('mb_convert_encoding')) { - function mb_convert_encoding(array|string|null $string, ?string $to_encoding, array|string|null $from_encoding = null): array|string|false { return p\Mbstring::mb_convert_encoding($string ?? '', (string) $to_encoding, $from_encoding); } -} -if (!function_exists('mb_decode_mimeheader')) { - function mb_decode_mimeheader(?string $string): string { return p\Mbstring::mb_decode_mimeheader((string) $string); } -} -if (!function_exists('mb_encode_mimeheader')) { - function mb_encode_mimeheader(?string $string, ?string $charset = null, ?string $transfer_encoding = null, ?string $newline = "\r\n", ?int $indent = 0): string { return p\Mbstring::mb_encode_mimeheader((string) $string, $charset, $transfer_encoding, (string) $newline, (int) $indent); } -} -if (!function_exists('mb_decode_numericentity')) { - function mb_decode_numericentity(?string $string, array $map, ?string $encoding = null): string { return p\Mbstring::mb_decode_numericentity((string) $string, $map, $encoding); } -} -if (!function_exists('mb_encode_numericentity')) { - function mb_encode_numericentity(?string $string, array $map, ?string $encoding = null, ?bool $hex = false): string { return p\Mbstring::mb_encode_numericentity((string) $string, $map, $encoding, (bool) $hex); } -} -if (!function_exists('mb_convert_case')) { - function mb_convert_case(?string $string, ?int $mode, ?string $encoding = null): string { return p\Mbstring::mb_convert_case((string) $string, (int) $mode, $encoding); } -} -if (!function_exists('mb_internal_encoding')) { - function mb_internal_encoding(?string $encoding = null): string|bool { return p\Mbstring::mb_internal_encoding($encoding); } -} -if (!function_exists('mb_language')) { - function mb_language(?string $language = null): string|bool { return p\Mbstring::mb_language($language); } -} -if (!function_exists('mb_list_encodings')) { - function mb_list_encodings(): array { return p\Mbstring::mb_list_encodings(); } -} -if (!function_exists('mb_encoding_aliases')) { - function mb_encoding_aliases(?string $encoding): array { return p\Mbstring::mb_encoding_aliases((string) $encoding); } -} -if (!function_exists('mb_check_encoding')) { - function mb_check_encoding(array|string|null $value = null, ?string $encoding = null): bool { return p\Mbstring::mb_check_encoding($value, $encoding); } -} -if (!function_exists('mb_detect_encoding')) { - function mb_detect_encoding(?string $string, array|string|null $encodings = null, ?bool $strict = false): string|false { return p\Mbstring::mb_detect_encoding((string) $string, $encodings, (bool) $strict); } -} -if (!function_exists('mb_detect_order')) { - function mb_detect_order(array|string|null $encoding = null): array|bool { return p\Mbstring::mb_detect_order($encoding); } -} -if (!function_exists('mb_parse_str')) { - function mb_parse_str(?string $string, &$result = []): bool { parse_str((string) $string, $result); return (bool) $result; } -} -if (!function_exists('mb_strlen')) { - function mb_strlen(?string $string, ?string $encoding = null): int { return p\Mbstring::mb_strlen((string) $string, $encoding); } -} -if (!function_exists('mb_strpos')) { - function mb_strpos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_strpos((string) $haystack, (string) $needle, (int) $offset, $encoding); } -} -if (!function_exists('mb_strtolower')) { - function mb_strtolower(?string $string, ?string $encoding = null): string { return p\Mbstring::mb_strtolower((string) $string, $encoding); } -} -if (!function_exists('mb_strtoupper')) { - function mb_strtoupper(?string $string, ?string $encoding = null): string { return p\Mbstring::mb_strtoupper((string) $string, $encoding); } -} -if (!function_exists('mb_substitute_character')) { - function mb_substitute_character(string|int|null $substitute_character = null): string|int|bool { return p\Mbstring::mb_substitute_character($substitute_character); } -} -if (!function_exists('mb_substr')) { - function mb_substr(?string $string, ?int $start, ?int $length = null, ?string $encoding = null): string { return p\Mbstring::mb_substr((string) $string, (int) $start, $length, $encoding); } -} -if (!function_exists('mb_stripos')) { - function mb_stripos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_stripos((string) $haystack, (string) $needle, (int) $offset, $encoding); } -} -if (!function_exists('mb_stristr')) { - function mb_stristr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_stristr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); } -} -if (!function_exists('mb_strrchr')) { - function mb_strrchr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_strrchr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); } -} -if (!function_exists('mb_strrichr')) { - function mb_strrichr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_strrichr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); } -} -if (!function_exists('mb_strripos')) { - function mb_strripos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_strripos((string) $haystack, (string) $needle, (int) $offset, $encoding); } -} -if (!function_exists('mb_strrpos')) { - function mb_strrpos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_strrpos((string) $haystack, (string) $needle, (int) $offset, $encoding); } -} -if (!function_exists('mb_strstr')) { - function mb_strstr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_strstr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); } -} -if (!function_exists('mb_get_info')) { - function mb_get_info(?string $type = 'all'): array|string|int|false|null { return p\Mbstring::mb_get_info((string) $type); } -} -if (!function_exists('mb_http_output')) { - function mb_http_output(?string $encoding = null): string|bool { return p\Mbstring::mb_http_output($encoding); } -} -if (!function_exists('mb_strwidth')) { - function mb_strwidth(?string $string, ?string $encoding = null): int { return p\Mbstring::mb_strwidth((string) $string, $encoding); } -} -if (!function_exists('mb_substr_count')) { - function mb_substr_count(?string $haystack, ?string $needle, ?string $encoding = null): int { return p\Mbstring::mb_substr_count((string) $haystack, (string) $needle, $encoding); } -} -if (!function_exists('mb_output_handler')) { - function mb_output_handler(?string $string, ?int $status): string { return p\Mbstring::mb_output_handler((string) $string, (int) $status); } -} -if (!function_exists('mb_http_input')) { - function mb_http_input(?string $type = null): array|string|false { return p\Mbstring::mb_http_input($type); } -} - -if (!function_exists('mb_convert_variables')) { - function mb_convert_variables(?string $to_encoding, array|string|null $from_encoding, mixed &$var, mixed &...$vars): string|false { return p\Mbstring::mb_convert_variables((string) $to_encoding, $from_encoding ?? '', $var, ...$vars); } -} - -if (!function_exists('mb_ord')) { - function mb_ord(?string $string, ?string $encoding = null): int|false { return p\Mbstring::mb_ord((string) $string, $encoding); } -} -if (!function_exists('mb_chr')) { - function mb_chr(?int $codepoint, ?string $encoding = null): string|false { return p\Mbstring::mb_chr((int) $codepoint, $encoding); } -} -if (!function_exists('mb_scrub')) { - function mb_scrub(?string $string, ?string $encoding = null): string { $encoding ??= mb_internal_encoding(); return mb_convert_encoding((string) $string, $encoding, $encoding); } -} -if (!function_exists('mb_str_split')) { - function mb_str_split(?string $string, ?int $length = 1, ?string $encoding = null): array { return p\Mbstring::mb_str_split((string) $string, (int) $length, $encoding); } -} - -if (!function_exists('mb_str_pad')) { - function mb_str_pad(string $string, int $length, string $pad_string = ' ', int $pad_type = STR_PAD_RIGHT, ?string $encoding = null): string { return p\Mbstring::mb_str_pad($string, $length, $pad_string, $pad_type, $encoding); } -} - -if (!function_exists('mb_ucfirst')) { - function mb_ucfirst($string, ?string $encoding = null): string { return p\Mbstring::mb_ucfirst($string, $encoding); } -} - -if (!function_exists('mb_lcfirst')) { - function mb_lcfirst($string, ?string $encoding = null): string { return p\Mbstring::mb_lcfirst($string, $encoding); } -} - -if (!function_exists('mb_trim')) { - function mb_trim(string $string, ?string $characters = null, ?string $encoding = null): string { return p\Mbstring::mb_trim($string, $characters, $encoding); } -} - -if (!function_exists('mb_ltrim')) { - function mb_ltrim(string $string, ?string $characters = null, ?string $encoding = null): string { return p\Mbstring::mb_ltrim($string, $characters, $encoding); } -} - -if (!function_exists('mb_rtrim')) { - function mb_rtrim(string $string, ?string $characters = null, ?string $encoding = null): string { return p\Mbstring::mb_rtrim($string, $characters, $encoding); } -} - -if (extension_loaded('mbstring')) { - return; -} - -if (!defined('MB_CASE_UPPER')) { - define('MB_CASE_UPPER', 0); -} -if (!defined('MB_CASE_LOWER')) { - define('MB_CASE_LOWER', 1); -} -if (!defined('MB_CASE_TITLE')) { - define('MB_CASE_TITLE', 2); -} diff --git a/docker/streamline-src/vendor/symfony/polyfill-mbstring/composer.json b/docker/streamline-src/vendor/symfony/polyfill-mbstring/composer.json deleted file mode 100644 index 4ed241a3..00000000 --- a/docker/streamline-src/vendor/symfony/polyfill-mbstring/composer.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "symfony/polyfill-mbstring", - "type": "library", - "description": "Symfony polyfill for the Mbstring extension", - "keywords": ["polyfill", "shim", "compatibility", "portable", "mbstring"], - "homepage": "https://symfony.com", - "license": "MIT", - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "require": { - "php": ">=7.2" - }, - "provide": { - "ext-mbstring": "*" - }, - "autoload": { - "psr-4": { "Symfony\\Polyfill\\Mbstring\\": "" }, - "files": [ "bootstrap.php" ] - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "minimum-stability": "dev", - "extra": { - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - } -} diff --git a/docker/streamline-src/vendor/symfony/polyfill-php80/composer.json b/docker/streamline-src/vendor/symfony/polyfill-php80/composer.json deleted file mode 100644 index a503b039..00000000 --- a/docker/streamline-src/vendor/symfony/polyfill-php80/composer.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "symfony/polyfill-php80", - "type": "library", - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "keywords": ["polyfill", "shim", "compatibility", "portable"], - "homepage": "https://symfony.com", - "license": "MIT", - "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "require": { - "php": ">=7.2" - }, - "autoload": { - "psr-4": { "Symfony\\Polyfill\\Php80\\": "" }, - "files": [ "bootstrap.php" ], - "classmap": [ "Resources/stubs" ] - }, - "minimum-stability": "dev", - "extra": { - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - } -} diff --git a/docker/streamline-src/vendor/symfony/polyfill-php83/Php83.php b/docker/streamline-src/vendor/symfony/polyfill-php83/Php83.php deleted file mode 100644 index 3d94b6c3..00000000 --- a/docker/streamline-src/vendor/symfony/polyfill-php83/Php83.php +++ /dev/null @@ -1,197 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Polyfill\Php83; - -/** - * @author Ion Bazan - * @author Pierre Ambroise - * - * @internal - */ -final class Php83 -{ - private const JSON_MAX_DEPTH = 0x7FFFFFFF; // see https://www.php.net/manual/en/function.json-decode.php - - public static function json_validate(string $json, int $depth = 512, int $flags = 0): bool - { - if (0 !== $flags && \defined('JSON_INVALID_UTF8_IGNORE') && \JSON_INVALID_UTF8_IGNORE !== $flags) { - throw new \ValueError('json_validate(): Argument #3 ($flags) must be a valid flag (allowed flags: JSON_INVALID_UTF8_IGNORE)'); - } - - if ($depth <= 0) { - throw new \ValueError('json_validate(): Argument #2 ($depth) must be greater than 0'); - } - - if ($depth > self::JSON_MAX_DEPTH) { - throw new \ValueError(sprintf('json_validate(): Argument #2 ($depth) must be less than %d', self::JSON_MAX_DEPTH)); - } - - json_decode($json, null, $depth, $flags); - - return \JSON_ERROR_NONE === json_last_error(); - } - - public static function mb_str_pad(string $string, int $length, string $pad_string = ' ', int $pad_type = \STR_PAD_RIGHT, ?string $encoding = null): string - { - if (!\in_array($pad_type, [\STR_PAD_RIGHT, \STR_PAD_LEFT, \STR_PAD_BOTH], true)) { - throw new \ValueError('mb_str_pad(): Argument #4 ($pad_type) must be STR_PAD_LEFT, STR_PAD_RIGHT, or STR_PAD_BOTH'); - } - - if (null === $encoding) { - $encoding = mb_internal_encoding(); - } - - try { - $validEncoding = @mb_check_encoding('', $encoding); - } catch (\ValueError $e) { - throw new \ValueError(sprintf('mb_str_pad(): Argument #5 ($encoding) must be a valid encoding, "%s" given', $encoding)); - } - - // BC for PHP 7.3 and lower - if (!$validEncoding) { - throw new \ValueError(sprintf('mb_str_pad(): Argument #5 ($encoding) must be a valid encoding, "%s" given', $encoding)); - } - - if (mb_strlen($pad_string, $encoding) <= 0) { - throw new \ValueError('mb_str_pad(): Argument #3 ($pad_string) must be a non-empty string'); - } - - $paddingRequired = $length - mb_strlen($string, $encoding); - - if ($paddingRequired < 1) { - return $string; - } - - switch ($pad_type) { - case \STR_PAD_LEFT: - return mb_substr(str_repeat($pad_string, $paddingRequired), 0, $paddingRequired, $encoding).$string; - case \STR_PAD_RIGHT: - return $string.mb_substr(str_repeat($pad_string, $paddingRequired), 0, $paddingRequired, $encoding); - default: - $leftPaddingLength = floor($paddingRequired / 2); - $rightPaddingLength = $paddingRequired - $leftPaddingLength; - - return mb_substr(str_repeat($pad_string, $leftPaddingLength), 0, $leftPaddingLength, $encoding).$string.mb_substr(str_repeat($pad_string, $rightPaddingLength), 0, $rightPaddingLength, $encoding); - } - } - - public static function str_increment(string $string): string - { - if ('' === $string) { - throw new \ValueError('str_increment(): Argument #1 ($string) cannot be empty'); - } - - if (!preg_match('/^[a-zA-Z0-9]+$/', $string)) { - throw new \ValueError('str_increment(): Argument #1 ($string) must be composed only of alphanumeric ASCII characters'); - } - - if (is_numeric($string)) { - $offset = stripos($string, 'e'); - if (false !== $offset) { - $char = $string[$offset]; - ++$char; - $string[$offset] = $char; - ++$string; - - switch ($string[$offset]) { - case 'f': - $string[$offset] = 'e'; - break; - case 'F': - $string[$offset] = 'E'; - break; - case 'g': - $string[$offset] = 'f'; - break; - case 'G': - $string[$offset] = 'F'; - break; - } - - return $string; - } - } - - return ++$string; - } - - public static function str_decrement(string $string): string - { - if ('' === $string) { - throw new \ValueError('str_decrement(): Argument #1 ($string) cannot be empty'); - } - - if (!preg_match('/^[a-zA-Z0-9]+$/', $string)) { - throw new \ValueError('str_decrement(): Argument #1 ($string) must be composed only of alphanumeric ASCII characters'); - } - - if (preg_match('/\A(?:0[aA0]?|[aA])\z/', $string)) { - throw new \ValueError(sprintf('str_decrement(): Argument #1 ($string) "%s" is out of decrement range', $string)); - } - - if (!\in_array(substr($string, -1), ['A', 'a', '0'], true)) { - return implode('', \array_slice(str_split($string), 0, -1)).\chr(\ord(substr($string, -1)) - 1); - } - - $carry = ''; - $decremented = ''; - - for ($i = \strlen($string) - 1; $i >= 0; --$i) { - $char = $string[$i]; - - switch ($char) { - case 'A': - if ('' !== $carry) { - $decremented = $carry.$decremented; - $carry = ''; - } - $carry = 'Z'; - - break; - case 'a': - if ('' !== $carry) { - $decremented = $carry.$decremented; - $carry = ''; - } - $carry = 'z'; - - break; - case '0': - if ('' !== $carry) { - $decremented = $carry.$decremented; - $carry = ''; - } - $carry = '9'; - - break; - case '1': - if ('' !== $carry) { - $decremented = $carry.$decremented; - $carry = ''; - } - - break; - default: - if ('' !== $carry) { - $decremented = $carry.$decremented; - $carry = ''; - } - - if (!\in_array($char, ['A', 'a', '0'], true)) { - $decremented = \chr(\ord($char) - 1).$decremented; - } - } - } - - return $decremented; - } -} diff --git a/docker/streamline-src/vendor/symfony/polyfill-php83/bootstrap.php b/docker/streamline-src/vendor/symfony/polyfill-php83/bootstrap.php deleted file mode 100644 index a92799cb..00000000 --- a/docker/streamline-src/vendor/symfony/polyfill-php83/bootstrap.php +++ /dev/null @@ -1,50 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -use Symfony\Polyfill\Php83 as p; - -if (\PHP_VERSION_ID >= 80300) { - return; -} - -if (!function_exists('json_validate')) { - function json_validate(string $json, int $depth = 512, int $flags = 0): bool { return p\Php83::json_validate($json, $depth, $flags); } -} - -if (extension_loaded('mbstring')) { - if (!function_exists('mb_str_pad')) { - function mb_str_pad(string $string, int $length, string $pad_string = ' ', int $pad_type = STR_PAD_RIGHT, ?string $encoding = null): string { return p\Php83::mb_str_pad($string, $length, $pad_string, $pad_type, $encoding); } - } -} - -if (!function_exists('stream_context_set_options')) { - function stream_context_set_options($context, array $options): bool { return stream_context_set_option($context, $options); } -} - -if (!function_exists('str_increment')) { - function str_increment(string $string): string { return p\Php83::str_increment($string); } -} - -if (!function_exists('str_decrement')) { - function str_decrement(string $string): string { return p\Php83::str_decrement($string); } -} - -if (\PHP_VERSION_ID >= 80100) { - return require __DIR__.'/bootstrap81.php'; -} - -if (!function_exists('ldap_exop_sync') && function_exists('ldap_exop')) { - function ldap_exop_sync($ldap, string $request_oid, ?string $request_data = null, ?array $controls = null, &$response_data = null, &$response_oid = null): bool { return ldap_exop($ldap, $request_oid, $request_data, $controls, $response_data, $response_oid); } -} - -if (!function_exists('ldap_connect_wallet') && function_exists('ldap_connect')) { - function ldap_connect_wallet(?string $uri, string $wallet, string $password, int $auth_mode = \GSLC_SSL_NO_AUTH) { return ldap_connect($uri, $wallet, $password, $auth_mode); } -} diff --git a/docker/streamline-src/vendor/symfony/polyfill-php83/bootstrap81.php b/docker/streamline-src/vendor/symfony/polyfill-php83/bootstrap81.php deleted file mode 100644 index 68395b43..00000000 --- a/docker/streamline-src/vendor/symfony/polyfill-php83/bootstrap81.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -if (\PHP_VERSION_ID >= 80300) { - return; -} - -if (!function_exists('ldap_exop_sync') && function_exists('ldap_exop')) { - function ldap_exop_sync(\LDAP\Connection $ldap, string $request_oid, ?string $request_data = null, ?array $controls = null, &$response_data = null, &$response_oid = null): bool { return ldap_exop($ldap, $request_oid, $request_data, $controls, $response_data, $response_oid); } -} - -if (!function_exists('ldap_connect_wallet') && function_exists('ldap_connect')) { - function ldap_connect_wallet(?string $uri, string $wallet, #[\SensitiveParameter] string $password, int $auth_mode = \GSLC_SSL_NO_AUTH): \LDAP\Connection|false { return ldap_connect($uri, $wallet, $password, $auth_mode); } -} diff --git a/docker/streamline-src/vendor/symfony/polyfill-php83/composer.json b/docker/streamline-src/vendor/symfony/polyfill-php83/composer.json deleted file mode 100644 index a8b8ba70..00000000 --- a/docker/streamline-src/vendor/symfony/polyfill-php83/composer.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "symfony/polyfill-php83", - "type": "library", - "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", - "keywords": ["polyfill", "shim", "compatibility", "portable"], - "homepage": "https://symfony.com", - "license": "MIT", - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "require": { - "php": ">=7.2" - }, - "autoload": { - "psr-4": { "Symfony\\Polyfill\\Php83\\": "" }, - "files": [ "bootstrap.php" ], - "classmap": [ "Resources/stubs" ] - }, - "minimum-stability": "dev", - "extra": { - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - } -} diff --git a/docker/streamline-src/vendor/symfony/polyfill-uuid/composer.json b/docker/streamline-src/vendor/symfony/polyfill-uuid/composer.json deleted file mode 100644 index f3c5045d..00000000 --- a/docker/streamline-src/vendor/symfony/polyfill-uuid/composer.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "symfony/polyfill-uuid", - "type": "library", - "description": "Symfony polyfill for uuid functions", - "keywords": ["polyfill", "compatibility", "portable", "uuid"], - "homepage": "https://symfony.com", - "license": "MIT", - "authors": [ - { - "name": "Grégoire Pineau", - "email": "lyrixx@lyrixx.info" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "require": { - "php": ">=7.2" - }, - "provide": { - "ext-uuid": "*" - }, - "autoload": { - "psr-4": { "Symfony\\Polyfill\\Uuid\\": "" }, - "files": [ "bootstrap.php" ] - }, - "suggest": { - "ext-uuid": "For best performance" - }, - "minimum-stability": "dev", - "extra": { - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - } -} diff --git a/docker/streamline-src/vendor/symfony/process/CHANGELOG.md b/docker/streamline-src/vendor/symfony/process/CHANGELOG.md deleted file mode 100644 index dc0a0cc5..00000000 --- a/docker/streamline-src/vendor/symfony/process/CHANGELOG.md +++ /dev/null @@ -1,123 +0,0 @@ -CHANGELOG -========= - -6.4 ---- - - * Add `PhpSubprocess` to handle PHP subprocesses that take over the - configuration from their parent - * Add `RunProcessMessage` and `RunProcessMessageHandler` - -5.2.0 ------ - - * added `Process::setOptions()` to set `Process` specific options - * added option `create_new_console` to allow a subprocess to continue - to run after the main script exited, both on Linux and on Windows - -5.1.0 ------ - - * added `Process::getStartTime()` to retrieve the start time of the process as float - -5.0.0 ------ - - * removed `Process::inheritEnvironmentVariables()` - * removed `PhpProcess::setPhpBinary()` - * `Process` must be instantiated with a command array, use `Process::fromShellCommandline()` when the command should be parsed by the shell - * removed `Process::setCommandLine()` - -4.4.0 ------ - - * deprecated `Process::inheritEnvironmentVariables()`: env variables are always inherited. - * added `Process::getLastOutputTime()` method - -4.2.0 ------ - - * added the `Process::fromShellCommandline()` to run commands in a shell wrapper - * deprecated passing a command as string when creating a `Process` instance - * deprecated the `Process::setCommandline()` and the `PhpProcess::setPhpBinary()` methods - * added the `Process::waitUntil()` method to wait for the process only for a - specific output, then continue the normal execution of your application - -4.1.0 ------ - - * added the `Process::isTtySupported()` method that allows to check for TTY support - * made `PhpExecutableFinder` look for the `PHP_BINARY` env var when searching the php binary - * added the `ProcessSignaledException` class to properly catch signaled process errors - -4.0.0 ------ - - * environment variables will always be inherited - * added a second `array $env = []` argument to the `start()`, `run()`, - `mustRun()`, and `restart()` methods of the `Process` class - * added a second `array $env = []` argument to the `start()` method of the - `PhpProcess` class - * the `ProcessUtils::escapeArgument()` method has been removed - * the `areEnvironmentVariablesInherited()`, `getOptions()`, and `setOptions()` - methods of the `Process` class have been removed - * support for passing `proc_open()` options has been removed - * removed the `ProcessBuilder` class, use the `Process` class instead - * removed the `getEnhanceWindowsCompatibility()` and `setEnhanceWindowsCompatibility()` methods of the `Process` class - * passing a not existing working directory to the constructor of the `Symfony\Component\Process\Process` class is not - supported anymore - -3.4.0 ------ - - * deprecated the ProcessBuilder class - * deprecated calling `Process::start()` without setting a valid working directory beforehand (via `setWorkingDirectory()` or constructor) - -3.3.0 ------ - - * added command line arrays in the `Process` class - * added `$env` argument to `Process::start()`, `run()`, `mustRun()` and `restart()` methods - * deprecated the `ProcessUtils::escapeArgument()` method - * deprecated not inheriting environment variables - * deprecated configuring `proc_open()` options - * deprecated configuring enhanced Windows compatibility - * deprecated configuring enhanced sigchild compatibility - -2.5.0 ------ - - * added support for PTY mode - * added the convenience method "mustRun" - * deprecation: Process::setStdin() is deprecated in favor of Process::setInput() - * deprecation: Process::getStdin() is deprecated in favor of Process::getInput() - * deprecation: Process::setInput() and ProcessBuilder::setInput() do not accept non-scalar types - -2.4.0 ------ - - * added the ability to define an idle timeout - -2.3.0 ------ - - * added ProcessUtils::escapeArgument() to fix the bug in escapeshellarg() function on Windows - * added Process::signal() - * added Process::getPid() - * added support for a TTY mode - -2.2.0 ------ - - * added ProcessBuilder::setArguments() to reset the arguments on a builder - * added a way to retrieve the standard and error output incrementally - * added Process:restart() - -2.1.0 ------ - - * added support for non-blocking processes (start(), wait(), isRunning(), stop()) - * enhanced Windows compatibility - * added Process::getExitCodeText() that returns a string representation for - the exit code returned by the process - * added ProcessBuilder diff --git a/docker/streamline-src/vendor/symfony/process/ExecutableFinder.php b/docker/streamline-src/vendor/symfony/process/ExecutableFinder.php deleted file mode 100644 index 1838d54b..00000000 --- a/docker/streamline-src/vendor/symfony/process/ExecutableFinder.php +++ /dev/null @@ -1,105 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Process; - -/** - * Generic executable finder. - * - * @author Fabien Potencier - * @author Johannes M. Schmitt - */ -class ExecutableFinder -{ - private const CMD_BUILTINS = [ - 'assoc', 'break', 'call', 'cd', 'chdir', 'cls', 'color', 'copy', 'date', - 'del', 'dir', 'echo', 'endlocal', 'erase', 'exit', 'for', 'ftype', 'goto', - 'help', 'if', 'label', 'md', 'mkdir', 'mklink', 'move', 'path', 'pause', - 'popd', 'prompt', 'pushd', 'rd', 'rem', 'ren', 'rename', 'rmdir', 'set', - 'setlocal', 'shift', 'start', 'time', 'title', 'type', 'ver', 'vol', - ]; - - private array $suffixes = []; - - /** - * Replaces default suffixes of executable. - * - * @return void - */ - public function setSuffixes(array $suffixes) - { - $this->suffixes = $suffixes; - } - - /** - * Adds new possible suffix to check for executable. - * - * @return void - */ - public function addSuffix(string $suffix) - { - $this->suffixes[] = $suffix; - } - - /** - * Finds an executable by name. - * - * @param string $name The executable name (without the extension) - * @param string|null $default The default to return if no executable is found - * @param array $extraDirs Additional dirs to check into - */ - public function find(string $name, ?string $default = null, array $extraDirs = []): ?string - { - // windows built-in commands that are present in cmd.exe should not be resolved using PATH as they do not exist as exes - if ('\\' === \DIRECTORY_SEPARATOR && \in_array(strtolower($name), self::CMD_BUILTINS, true)) { - return $name; - } - - $dirs = array_merge( - explode(\PATH_SEPARATOR, getenv('PATH') ?: getenv('Path')), - $extraDirs - ); - - $suffixes = []; - if ('\\' === \DIRECTORY_SEPARATOR) { - $pathExt = getenv('PATHEXT'); - $suffixes = $this->suffixes; - $suffixes = array_merge($suffixes, $pathExt ? explode(\PATH_SEPARATOR, $pathExt) : ['.exe', '.bat', '.cmd', '.com']); - } - $suffixes = '' !== pathinfo($name, PATHINFO_EXTENSION) ? array_merge([''], $suffixes) : array_merge($suffixes, ['']); - foreach ($suffixes as $suffix) { - foreach ($dirs as $dir) { - if ('' === $dir) { - $dir = '.'; - } - if (@is_file($file = $dir.\DIRECTORY_SEPARATOR.$name.$suffix) && ('\\' === \DIRECTORY_SEPARATOR || @is_executable($file))) { - return $file; - } - - if (!@is_dir($dir) && basename($dir) === $name.$suffix && @is_executable($dir)) { - return $dir; - } - } - } - - if ('\\' === \DIRECTORY_SEPARATOR || !\function_exists('exec') || \strlen($name) !== strcspn($name, '/'.\DIRECTORY_SEPARATOR)) { - return $default; - } - - $execResult = exec('command -v -- '.escapeshellarg($name)); - - if (($executablePath = substr($execResult, 0, strpos($execResult, \PHP_EOL) ?: null)) && @is_executable($executablePath)) { - return $executablePath; - } - - return $default; - } -} diff --git a/docker/streamline-src/vendor/symfony/process/PhpExecutableFinder.php b/docker/streamline-src/vendor/symfony/process/PhpExecutableFinder.php deleted file mode 100644 index e24ca008..00000000 --- a/docker/streamline-src/vendor/symfony/process/PhpExecutableFinder.php +++ /dev/null @@ -1,92 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Process; - -/** - * An executable finder specifically designed for the PHP executable. - * - * @author Fabien Potencier - * @author Johannes M. Schmitt - */ -class PhpExecutableFinder -{ - private ExecutableFinder $executableFinder; - - public function __construct() - { - $this->executableFinder = new ExecutableFinder(); - } - - /** - * Finds The PHP executable. - */ - public function find(bool $includeArgs = true): string|false - { - if ($php = getenv('PHP_BINARY')) { - if (!is_executable($php) && !$php = $this->executableFinder->find($php)) { - return false; - } - - if (@is_dir($php)) { - return false; - } - - return $php; - } - - $args = $this->findArguments(); - $args = $includeArgs && $args ? ' '.implode(' ', $args) : ''; - - // PHP_BINARY return the current sapi executable - if (\PHP_BINARY && \in_array(\PHP_SAPI, ['cli', 'cli-server', 'phpdbg'], true)) { - return \PHP_BINARY.$args; - } - - if ($php = getenv('PHP_PATH')) { - if (!@is_executable($php) || @is_dir($php)) { - return false; - } - - return $php; - } - - if ($php = getenv('PHP_PEAR_PHP_BIN')) { - if (@is_executable($php) && !@is_dir($php)) { - return $php; - } - } - - if (@is_executable($php = \PHP_BINDIR.('\\' === \DIRECTORY_SEPARATOR ? '\\php.exe' : '/php')) && !@is_dir($php)) { - return $php; - } - - $dirs = [\PHP_BINDIR]; - if ('\\' === \DIRECTORY_SEPARATOR) { - $dirs[] = 'C:\xampp\php\\'; - } - - return $this->executableFinder->find('php', false, $dirs); - } - - /** - * Finds the PHP executable arguments. - */ - public function findArguments(): array - { - $arguments = []; - if ('phpdbg' === \PHP_SAPI) { - $arguments[] = '-qrr'; - } - - return $arguments; - } -} diff --git a/docker/streamline-src/vendor/symfony/process/PhpSubprocess.php b/docker/streamline-src/vendor/symfony/process/PhpSubprocess.php deleted file mode 100644 index 04fd8ea8..00000000 --- a/docker/streamline-src/vendor/symfony/process/PhpSubprocess.php +++ /dev/null @@ -1,164 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Process; - -use Symfony\Component\Process\Exception\LogicException; -use Symfony\Component\Process\Exception\RuntimeException; - -/** - * PhpSubprocess runs a PHP command as a subprocess while keeping the original php.ini settings. - * - * For this, it generates a temporary php.ini file taking over all the current settings and disables - * loading additional .ini files. Basically, your command gets prefixed using "php -n -c /tmp/temp.ini". - * - * Given your php.ini contains "memory_limit=-1" and you have a "MemoryTest.php" with the following content: - * - * run(); - * print $p->getOutput()."\n"; - * - * This will output "string(2) "-1", because the process is started with the default php.ini settings. - * - * $p = new PhpSubprocess(['MemoryTest.php'], null, null, 60, ['php', '-d', 'memory_limit=256M']); - * $p->run(); - * print $p->getOutput()."\n"; - * - * This will output "string(4) "256M"", because the process is started with the temporarily created php.ini settings. - * - * @author Yanick Witschi - * @author Partially copied and heavily inspired from composer/xdebug-handler by John Stevenson - */ -class PhpSubprocess extends Process -{ - /** - * @param array $command The command to run and its arguments listed as separate entries. They will automatically - * get prefixed with the PHP binary - * @param string|null $cwd The working directory or null to use the working dir of the current PHP process - * @param array|null $env The environment variables or null to use the same environment as the current PHP process - * @param int $timeout The timeout in seconds - * @param array|null $php Path to the PHP binary to use with any additional arguments - */ - public function __construct(array $command, ?string $cwd = null, ?array $env = null, int $timeout = 60, ?array $php = null) - { - if (null === $php) { - $executableFinder = new PhpExecutableFinder(); - $php = $executableFinder->find(false); - $php = false === $php ? null : array_merge([$php], $executableFinder->findArguments()); - } - - if (null === $php) { - throw new RuntimeException('Unable to find PHP binary.'); - } - - $tmpIni = $this->writeTmpIni($this->getAllIniFiles(), sys_get_temp_dir()); - - $php = array_merge($php, ['-n', '-c', $tmpIni]); - register_shutdown_function('unlink', $tmpIni); - - $command = array_merge($php, $command); - - parent::__construct($command, $cwd, $env, null, $timeout); - } - - public static function fromShellCommandline(string $command, ?string $cwd = null, ?array $env = null, mixed $input = null, ?float $timeout = 60): static - { - throw new LogicException(sprintf('The "%s()" method cannot be called when using "%s".', __METHOD__, self::class)); - } - - public function start(?callable $callback = null, array $env = []): void - { - if (null === $this->getCommandLine()) { - throw new RuntimeException('Unable to find the PHP executable.'); - } - - parent::start($callback, $env); - } - - private function writeTmpIni(array $iniFiles, string $tmpDir): string - { - if (false === $tmpfile = @tempnam($tmpDir, '')) { - throw new RuntimeException('Unable to create temporary ini file.'); - } - - // $iniFiles has at least one item and it may be empty - if ('' === $iniFiles[0]) { - array_shift($iniFiles); - } - - $content = ''; - - foreach ($iniFiles as $file) { - // Check for inaccessible ini files - if (($data = @file_get_contents($file)) === false) { - throw new RuntimeException('Unable to read ini: '.$file); - } - // Check and remove directives after HOST and PATH sections - if (preg_match('/^\s*\[(?:PATH|HOST)\s*=/mi', $data, $matches, \PREG_OFFSET_CAPTURE)) { - $data = substr($data, 0, $matches[0][1]); - } - - $content .= $data."\n"; - } - - // Merge loaded settings into our ini content, if it is valid - $config = parse_ini_string($content); - $loaded = ini_get_all(null, false); - - if (false === $config || false === $loaded) { - throw new RuntimeException('Unable to parse ini data.'); - } - - $content .= $this->mergeLoadedConfig($loaded, $config); - - // Work-around for https://bugs.php.net/bug.php?id=75932 - $content .= "opcache.enable_cli=0\n"; - - if (false === @file_put_contents($tmpfile, $content)) { - throw new RuntimeException('Unable to write temporary ini file.'); - } - - return $tmpfile; - } - - private function mergeLoadedConfig(array $loadedConfig, array $iniConfig): string - { - $content = ''; - - foreach ($loadedConfig as $name => $value) { - if (!\is_string($value)) { - continue; - } - - if (!isset($iniConfig[$name]) || $iniConfig[$name] !== $value) { - // Double-quote escape each value - $content .= $name.'="'.addcslashes($value, '\\"')."\"\n"; - } - } - - return $content; - } - - private function getAllIniFiles(): array - { - $paths = [(string) php_ini_loaded_file()]; - - if (false !== $scanned = php_ini_scanned_files()) { - $paths = array_merge($paths, array_map('trim', explode(',', $scanned))); - } - - return $paths; - } -} diff --git a/docker/streamline-src/vendor/symfony/process/Process.php b/docker/streamline-src/vendor/symfony/process/Process.php deleted file mode 100644 index 280a732d..00000000 --- a/docker/streamline-src/vendor/symfony/process/Process.php +++ /dev/null @@ -1,1618 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Process; - -use Symfony\Component\Process\Exception\InvalidArgumentException; -use Symfony\Component\Process\Exception\LogicException; -use Symfony\Component\Process\Exception\ProcessFailedException; -use Symfony\Component\Process\Exception\ProcessSignaledException; -use Symfony\Component\Process\Exception\ProcessTimedOutException; -use Symfony\Component\Process\Exception\RuntimeException; -use Symfony\Component\Process\Pipes\UnixPipes; -use Symfony\Component\Process\Pipes\WindowsPipes; - -/** - * Process is a thin wrapper around proc_* functions to easily - * start independent PHP processes. - * - * @author Fabien Potencier - * @author Romain Neutron - * - * @implements \IteratorAggregate - */ -class Process implements \IteratorAggregate -{ - public const ERR = 'err'; - public const OUT = 'out'; - - public const STATUS_READY = 'ready'; - public const STATUS_STARTED = 'started'; - public const STATUS_TERMINATED = 'terminated'; - - public const STDIN = 0; - public const STDOUT = 1; - public const STDERR = 2; - - // Timeout Precision in seconds. - public const TIMEOUT_PRECISION = 0.2; - - public const ITER_NON_BLOCKING = 1; // By default, iterating over outputs is a blocking call, use this flag to make it non-blocking - public const ITER_KEEP_OUTPUT = 2; // By default, outputs are cleared while iterating, use this flag to keep them in memory - public const ITER_SKIP_OUT = 4; // Use this flag to skip STDOUT while iterating - public const ITER_SKIP_ERR = 8; // Use this flag to skip STDERR while iterating - - private ?\Closure $callback = null; - private array|string $commandline; - private ?string $cwd; - private array $env = []; - /** @var resource|string|\Iterator|null */ - private $input; - private ?float $starttime = null; - private ?float $lastOutputTime = null; - private ?float $timeout = null; - private ?float $idleTimeout = null; - private ?int $exitcode = null; - private array $fallbackStatus = []; - private array $processInformation; - private bool $outputDisabled = false; - /** @var resource */ - private $stdout; - /** @var resource */ - private $stderr; - /** @var resource|null */ - private $process; - private string $status = self::STATUS_READY; - private int $incrementalOutputOffset = 0; - private int $incrementalErrorOutputOffset = 0; - private bool $tty = false; - private bool $pty; - private array $options = ['suppress_errors' => true, 'bypass_shell' => true]; - - private WindowsPipes|UnixPipes $processPipes; - - private ?int $latestSignal = null; - private ?int $cachedExitCode = null; - - private static ?bool $sigchild = null; - - /** - * Exit codes translation table. - * - * User-defined errors must use exit codes in the 64-113 range. - */ - public static $exitCodes = [ - 0 => 'OK', - 1 => 'General error', - 2 => 'Misuse of shell builtins', - - 126 => 'Invoked command cannot execute', - 127 => 'Command not found', - 128 => 'Invalid exit argument', - - // signals - 129 => 'Hangup', - 130 => 'Interrupt', - 131 => 'Quit and dump core', - 132 => 'Illegal instruction', - 133 => 'Trace/breakpoint trap', - 134 => 'Process aborted', - 135 => 'Bus error: "access to undefined portion of memory object"', - 136 => 'Floating point exception: "erroneous arithmetic operation"', - 137 => 'Kill (terminate immediately)', - 138 => 'User-defined 1', - 139 => 'Segmentation violation', - 140 => 'User-defined 2', - 141 => 'Write to pipe with no one reading', - 142 => 'Signal raised by alarm', - 143 => 'Termination (request to terminate)', - // 144 - not defined - 145 => 'Child process terminated, stopped (or continued*)', - 146 => 'Continue if stopped', - 147 => 'Stop executing temporarily', - 148 => 'Terminal stop signal', - 149 => 'Background process attempting to read from tty ("in")', - 150 => 'Background process attempting to write to tty ("out")', - 151 => 'Urgent data available on socket', - 152 => 'CPU time limit exceeded', - 153 => 'File size limit exceeded', - 154 => 'Signal raised by timer counting virtual time: "virtual timer expired"', - 155 => 'Profiling timer expired', - // 156 - not defined - 157 => 'Pollable event', - // 158 - not defined - 159 => 'Bad syscall', - ]; - - /** - * @param array $command The command to run and its arguments listed as separate entries - * @param string|null $cwd The working directory or null to use the working dir of the current PHP process - * @param array|null $env The environment variables or null to use the same environment as the current PHP process - * @param mixed $input The input as stream resource, scalar or \Traversable, or null for no input - * @param int|float|null $timeout The timeout in seconds or null to disable - * - * @throws LogicException When proc_open is not installed - */ - public function __construct(array $command, ?string $cwd = null, ?array $env = null, mixed $input = null, ?float $timeout = 60) - { - if (!\function_exists('proc_open')) { - throw new LogicException('The Process class relies on proc_open, which is not available on your PHP installation.'); - } - - $this->commandline = $command; - $this->cwd = $cwd; - - // on Windows, if the cwd changed via chdir(), proc_open defaults to the dir where PHP was started - // on Gnu/Linux, PHP builds with --enable-maintainer-zts are also affected - // @see : https://bugs.php.net/51800 - // @see : https://bugs.php.net/50524 - if (null === $this->cwd && (\defined('ZEND_THREAD_SAFE') || '\\' === \DIRECTORY_SEPARATOR)) { - $this->cwd = getcwd(); - } - if (null !== $env) { - $this->setEnv($env); - } - - $this->setInput($input); - $this->setTimeout($timeout); - $this->pty = false; - } - - /** - * Creates a Process instance as a command-line to be run in a shell wrapper. - * - * Command-lines are parsed by the shell of your OS (/bin/sh on Unix-like, cmd.exe on Windows.) - * This allows using e.g. pipes or conditional execution. In this mode, signals are sent to the - * shell wrapper and not to your commands. - * - * In order to inject dynamic values into command-lines, we strongly recommend using placeholders. - * This will save escaping values, which is not portable nor secure anyway: - * - * $process = Process::fromShellCommandline('my_command "${:MY_VAR}"'); - * $process->run(null, ['MY_VAR' => $theValue]); - * - * @param string $command The command line to pass to the shell of the OS - * @param string|null $cwd The working directory or null to use the working dir of the current PHP process - * @param array|null $env The environment variables or null to use the same environment as the current PHP process - * @param mixed $input The input as stream resource, scalar or \Traversable, or null for no input - * @param int|float|null $timeout The timeout in seconds or null to disable - * - * @throws LogicException When proc_open is not installed - */ - public static function fromShellCommandline(string $command, ?string $cwd = null, ?array $env = null, mixed $input = null, ?float $timeout = 60): static - { - $process = new static([], $cwd, $env, $input, $timeout); - $process->commandline = $command; - - return $process; - } - - public function __sleep(): array - { - throw new \BadMethodCallException('Cannot serialize '.__CLASS__); - } - - /** - * @return void - */ - public function __wakeup() - { - throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); - } - - public function __destruct() - { - if ($this->options['create_new_console'] ?? false) { - $this->processPipes->close(); - } else { - $this->stop(0); - } - } - - public function __clone() - { - $this->resetProcessData(); - } - - /** - * Runs the process. - * - * The callback receives the type of output (out or err) and - * some bytes from the output in real-time. It allows to have feedback - * from the independent process during execution. - * - * The STDOUT and STDERR are also available after the process is finished - * via the getOutput() and getErrorOutput() methods. - * - * @param callable|null $callback A PHP callback to run whenever there is some - * output available on STDOUT or STDERR - * - * @return int The exit status code - * - * @throws RuntimeException When process can't be launched - * @throws RuntimeException When process is already running - * @throws ProcessTimedOutException When process timed out - * @throws ProcessSignaledException When process stopped after receiving signal - * @throws LogicException In case a callback is provided and output has been disabled - * - * @final - */ - public function run(?callable $callback = null, array $env = []): int - { - $this->start($callback, $env); - - return $this->wait(); - } - - /** - * Runs the process. - * - * This is identical to run() except that an exception is thrown if the process - * exits with a non-zero exit code. - * - * @return $this - * - * @throws ProcessFailedException if the process didn't terminate successfully - * - * @final - */ - public function mustRun(?callable $callback = null, array $env = []): static - { - if (0 !== $this->run($callback, $env)) { - throw new ProcessFailedException($this); - } - - return $this; - } - - /** - * Starts the process and returns after writing the input to STDIN. - * - * This method blocks until all STDIN data is sent to the process then it - * returns while the process runs in the background. - * - * The termination of the process can be awaited with wait(). - * - * The callback receives the type of output (out or err) and some bytes from - * the output in real-time while writing the standard input to the process. - * It allows to have feedback from the independent process during execution. - * - * @param callable|null $callback A PHP callback to run whenever there is some - * output available on STDOUT or STDERR - * - * @return void - * - * @throws RuntimeException When process can't be launched - * @throws RuntimeException When process is already running - * @throws LogicException In case a callback is provided and output has been disabled - */ - public function start(?callable $callback = null, array $env = []) - { - if ($this->isRunning()) { - throw new RuntimeException('Process is already running.'); - } - - $this->resetProcessData(); - $this->starttime = $this->lastOutputTime = microtime(true); - $this->callback = $this->buildCallback($callback); - $descriptors = $this->getDescriptors(null !== $callback); - - if ($this->env) { - $env += '\\' === \DIRECTORY_SEPARATOR ? array_diff_ukey($this->env, $env, 'strcasecmp') : $this->env; - } - - $env += '\\' === \DIRECTORY_SEPARATOR ? array_diff_ukey($this->getDefaultEnv(), $env, 'strcasecmp') : $this->getDefaultEnv(); - - if (\is_array($commandline = $this->commandline)) { - $commandline = implode(' ', array_map($this->escapeArgument(...), $commandline)); - - if ('\\' !== \DIRECTORY_SEPARATOR) { - // exec is mandatory to deal with sending a signal to the process - $commandline = 'exec '.$commandline; - } - } else { - $commandline = $this->replacePlaceholders($commandline, $env); - } - - if ('\\' === \DIRECTORY_SEPARATOR) { - $commandline = $this->prepareWindowsCommandLine($commandline, $env); - } elseif ($this->isSigchildEnabled()) { - // last exit code is output on the fourth pipe and caught to work around --enable-sigchild - $descriptors[3] = ['pipe', 'w']; - - // See https://unix.stackexchange.com/questions/71205/background-process-pipe-input - $commandline = '{ ('.$commandline.') <&3 3<&- 3>/dev/null & } 3<&0;'; - $commandline .= 'pid=$!; echo $pid >&3; wait $pid 2>/dev/null; code=$?; echo $code >&3; exit $code'; - } - - $envPairs = []; - foreach ($env as $k => $v) { - if (false !== $v && false === \in_array($k, ['argc', 'argv', 'ARGC', 'ARGV'], true)) { - $envPairs[] = $k.'='.$v; - } - } - - if (!is_dir($this->cwd)) { - throw new RuntimeException(sprintf('The provided cwd "%s" does not exist.', $this->cwd)); - } - - $process = @proc_open($commandline, $descriptors, $this->processPipes->pipes, $this->cwd, $envPairs, $this->options); - - if (!$process) { - throw new RuntimeException('Unable to launch a new process.'); - } - $this->process = $process; - $this->status = self::STATUS_STARTED; - - if (isset($descriptors[3])) { - $this->fallbackStatus['pid'] = (int) fgets($this->processPipes->pipes[3]); - } - - if ($this->tty) { - return; - } - - $this->updateStatus(false); - $this->checkTimeout(); - } - - /** - * Restarts the process. - * - * Be warned that the process is cloned before being started. - * - * @param callable|null $callback A PHP callback to run whenever there is some - * output available on STDOUT or STDERR - * - * @throws RuntimeException When process can't be launched - * @throws RuntimeException When process is already running - * - * @see start() - * - * @final - */ - public function restart(?callable $callback = null, array $env = []): static - { - if ($this->isRunning()) { - throw new RuntimeException('Process is already running.'); - } - - $process = clone $this; - $process->start($callback, $env); - - return $process; - } - - /** - * Waits for the process to terminate. - * - * The callback receives the type of output (out or err) and some bytes - * from the output in real-time while writing the standard input to the process. - * It allows to have feedback from the independent process during execution. - * - * @param callable|null $callback A valid PHP callback - * - * @return int The exitcode of the process - * - * @throws ProcessTimedOutException When process timed out - * @throws ProcessSignaledException When process stopped after receiving signal - * @throws LogicException When process is not yet started - */ - public function wait(?callable $callback = null): int - { - $this->requireProcessIsStarted(__FUNCTION__); - - $this->updateStatus(false); - - if (null !== $callback) { - if (!$this->processPipes->haveReadSupport()) { - $this->stop(0); - throw new LogicException('Pass the callback to the "Process::start" method or call enableOutput to use a callback with "Process::wait".'); - } - $this->callback = $this->buildCallback($callback); - } - - do { - $this->checkTimeout(); - $running = $this->isRunning() && ('\\' === \DIRECTORY_SEPARATOR || $this->processPipes->areOpen()); - $this->readPipes($running, '\\' !== \DIRECTORY_SEPARATOR || !$running); - } while ($running); - - while ($this->isRunning()) { - $this->checkTimeout(); - usleep(1000); - } - - if ($this->processInformation['signaled'] && $this->processInformation['termsig'] !== $this->latestSignal) { - throw new ProcessSignaledException($this); - } - - return $this->exitcode; - } - - /** - * Waits until the callback returns true. - * - * The callback receives the type of output (out or err) and some bytes - * from the output in real-time while writing the standard input to the process. - * It allows to have feedback from the independent process during execution. - * - * @throws RuntimeException When process timed out - * @throws LogicException When process is not yet started - * @throws ProcessTimedOutException In case the timeout was reached - */ - public function waitUntil(callable $callback): bool - { - $this->requireProcessIsStarted(__FUNCTION__); - $this->updateStatus(false); - - if (!$this->processPipes->haveReadSupport()) { - $this->stop(0); - throw new LogicException('Pass the callback to the "Process::start" method or call enableOutput to use a callback with "Process::waitUntil".'); - } - $callback = $this->buildCallback($callback); - - $ready = false; - while (true) { - $this->checkTimeout(); - $running = '\\' === \DIRECTORY_SEPARATOR ? $this->isRunning() : $this->processPipes->areOpen(); - $output = $this->processPipes->readAndWrite($running, '\\' !== \DIRECTORY_SEPARATOR || !$running); - - foreach ($output as $type => $data) { - if (3 !== $type) { - $ready = $callback(self::STDOUT === $type ? self::OUT : self::ERR, $data) || $ready; - } elseif (!isset($this->fallbackStatus['signaled'])) { - $this->fallbackStatus['exitcode'] = (int) $data; - } - } - if ($ready) { - return true; - } - if (!$running) { - return false; - } - - usleep(1000); - } - } - - /** - * Returns the Pid (process identifier), if applicable. - * - * @return int|null The process id if running, null otherwise - */ - public function getPid(): ?int - { - return $this->isRunning() ? $this->processInformation['pid'] : null; - } - - /** - * Sends a POSIX signal to the process. - * - * @param int $signal A valid POSIX signal (see https://php.net/pcntl.constants) - * - * @return $this - * - * @throws LogicException In case the process is not running - * @throws RuntimeException In case --enable-sigchild is activated and the process can't be killed - * @throws RuntimeException In case of failure - */ - public function signal(int $signal): static - { - $this->doSignal($signal, true); - - return $this; - } - - /** - * Disables fetching output and error output from the underlying process. - * - * @return $this - * - * @throws RuntimeException In case the process is already running - * @throws LogicException if an idle timeout is set - */ - public function disableOutput(): static - { - if ($this->isRunning()) { - throw new RuntimeException('Disabling output while the process is running is not possible.'); - } - if (null !== $this->idleTimeout) { - throw new LogicException('Output cannot be disabled while an idle timeout is set.'); - } - - $this->outputDisabled = true; - - return $this; - } - - /** - * Enables fetching output and error output from the underlying process. - * - * @return $this - * - * @throws RuntimeException In case the process is already running - */ - public function enableOutput(): static - { - if ($this->isRunning()) { - throw new RuntimeException('Enabling output while the process is running is not possible.'); - } - - $this->outputDisabled = false; - - return $this; - } - - /** - * Returns true in case the output is disabled, false otherwise. - */ - public function isOutputDisabled(): bool - { - return $this->outputDisabled; - } - - /** - * Returns the current output of the process (STDOUT). - * - * @throws LogicException in case the output has been disabled - * @throws LogicException In case the process is not started - */ - public function getOutput(): string - { - $this->readPipesForOutput(__FUNCTION__); - - if (false === $ret = stream_get_contents($this->stdout, -1, 0)) { - return ''; - } - - return $ret; - } - - /** - * Returns the output incrementally. - * - * In comparison with the getOutput method which always return the whole - * output, this one returns the new output since the last call. - * - * @throws LogicException in case the output has been disabled - * @throws LogicException In case the process is not started - */ - public function getIncrementalOutput(): string - { - $this->readPipesForOutput(__FUNCTION__); - - $latest = stream_get_contents($this->stdout, -1, $this->incrementalOutputOffset); - $this->incrementalOutputOffset = ftell($this->stdout); - - if (false === $latest) { - return ''; - } - - return $latest; - } - - /** - * Returns an iterator to the output of the process, with the output type as keys (Process::OUT/ERR). - * - * @param int $flags A bit field of Process::ITER_* flags - * - * @return \Generator - * - * @throws LogicException in case the output has been disabled - * @throws LogicException In case the process is not started - */ - public function getIterator(int $flags = 0): \Generator - { - $this->readPipesForOutput(__FUNCTION__, false); - - $clearOutput = !(self::ITER_KEEP_OUTPUT & $flags); - $blocking = !(self::ITER_NON_BLOCKING & $flags); - $yieldOut = !(self::ITER_SKIP_OUT & $flags); - $yieldErr = !(self::ITER_SKIP_ERR & $flags); - - while (null !== $this->callback || ($yieldOut && !feof($this->stdout)) || ($yieldErr && !feof($this->stderr))) { - if ($yieldOut) { - $out = stream_get_contents($this->stdout, -1, $this->incrementalOutputOffset); - - if (isset($out[0])) { - if ($clearOutput) { - $this->clearOutput(); - } else { - $this->incrementalOutputOffset = ftell($this->stdout); - } - - yield self::OUT => $out; - } - } - - if ($yieldErr) { - $err = stream_get_contents($this->stderr, -1, $this->incrementalErrorOutputOffset); - - if (isset($err[0])) { - if ($clearOutput) { - $this->clearErrorOutput(); - } else { - $this->incrementalErrorOutputOffset = ftell($this->stderr); - } - - yield self::ERR => $err; - } - } - - if (!$blocking && !isset($out[0]) && !isset($err[0])) { - yield self::OUT => ''; - } - - $this->checkTimeout(); - $this->readPipesForOutput(__FUNCTION__, $blocking); - } - } - - /** - * Clears the process output. - * - * @return $this - */ - public function clearOutput(): static - { - ftruncate($this->stdout, 0); - fseek($this->stdout, 0); - $this->incrementalOutputOffset = 0; - - return $this; - } - - /** - * Returns the current error output of the process (STDERR). - * - * @throws LogicException in case the output has been disabled - * @throws LogicException In case the process is not started - */ - public function getErrorOutput(): string - { - $this->readPipesForOutput(__FUNCTION__); - - if (false === $ret = stream_get_contents($this->stderr, -1, 0)) { - return ''; - } - - return $ret; - } - - /** - * Returns the errorOutput incrementally. - * - * In comparison with the getErrorOutput method which always return the - * whole error output, this one returns the new error output since the last - * call. - * - * @throws LogicException in case the output has been disabled - * @throws LogicException In case the process is not started - */ - public function getIncrementalErrorOutput(): string - { - $this->readPipesForOutput(__FUNCTION__); - - $latest = stream_get_contents($this->stderr, -1, $this->incrementalErrorOutputOffset); - $this->incrementalErrorOutputOffset = ftell($this->stderr); - - if (false === $latest) { - return ''; - } - - return $latest; - } - - /** - * Clears the process output. - * - * @return $this - */ - public function clearErrorOutput(): static - { - ftruncate($this->stderr, 0); - fseek($this->stderr, 0); - $this->incrementalErrorOutputOffset = 0; - - return $this; - } - - /** - * Returns the exit code returned by the process. - * - * @return int|null The exit status code, null if the Process is not terminated - */ - public function getExitCode(): ?int - { - $this->updateStatus(false); - - return $this->exitcode; - } - - /** - * Returns a string representation for the exit code returned by the process. - * - * This method relies on the Unix exit code status standardization - * and might not be relevant for other operating systems. - * - * @return string|null A string representation for the exit status code, null if the Process is not terminated - * - * @see http://tldp.org/LDP/abs/html/exitcodes.html - * @see http://en.wikipedia.org/wiki/Unix_signal - */ - public function getExitCodeText(): ?string - { - if (null === $exitcode = $this->getExitCode()) { - return null; - } - - return self::$exitCodes[$exitcode] ?? 'Unknown error'; - } - - /** - * Checks if the process ended successfully. - */ - public function isSuccessful(): bool - { - return 0 === $this->getExitCode(); - } - - /** - * Returns true if the child process has been terminated by an uncaught signal. - * - * It always returns false on Windows. - * - * @throws LogicException In case the process is not terminated - */ - public function hasBeenSignaled(): bool - { - $this->requireProcessIsTerminated(__FUNCTION__); - - return $this->processInformation['signaled']; - } - - /** - * Returns the number of the signal that caused the child process to terminate its execution. - * - * It is only meaningful if hasBeenSignaled() returns true. - * - * @throws RuntimeException In case --enable-sigchild is activated - * @throws LogicException In case the process is not terminated - */ - public function getTermSignal(): int - { - $this->requireProcessIsTerminated(__FUNCTION__); - - if ($this->isSigchildEnabled() && -1 === $this->processInformation['termsig']) { - throw new RuntimeException('This PHP has been compiled with --enable-sigchild. Term signal cannot be retrieved.'); - } - - return $this->processInformation['termsig']; - } - - /** - * Returns true if the child process has been stopped by a signal. - * - * It always returns false on Windows. - * - * @throws LogicException In case the process is not terminated - */ - public function hasBeenStopped(): bool - { - $this->requireProcessIsTerminated(__FUNCTION__); - - return $this->processInformation['stopped']; - } - - /** - * Returns the number of the signal that caused the child process to stop its execution. - * - * It is only meaningful if hasBeenStopped() returns true. - * - * @throws LogicException In case the process is not terminated - */ - public function getStopSignal(): int - { - $this->requireProcessIsTerminated(__FUNCTION__); - - return $this->processInformation['stopsig']; - } - - /** - * Checks if the process is currently running. - */ - public function isRunning(): bool - { - if (self::STATUS_STARTED !== $this->status) { - return false; - } - - $this->updateStatus(false); - - return $this->processInformation['running']; - } - - /** - * Checks if the process has been started with no regard to the current state. - */ - public function isStarted(): bool - { - return self::STATUS_READY != $this->status; - } - - /** - * Checks if the process is terminated. - */ - public function isTerminated(): bool - { - $this->updateStatus(false); - - return self::STATUS_TERMINATED == $this->status; - } - - /** - * Gets the process status. - * - * The status is one of: ready, started, terminated. - */ - public function getStatus(): string - { - $this->updateStatus(false); - - return $this->status; - } - - /** - * Stops the process. - * - * @param int|float $timeout The timeout in seconds - * @param int|null $signal A POSIX signal to send in case the process has not stop at timeout, default is SIGKILL (9) - * - * @return int|null The exit-code of the process or null if it's not running - */ - public function stop(float $timeout = 10, ?int $signal = null): ?int - { - $timeoutMicro = microtime(true) + $timeout; - if ($this->isRunning()) { - // given SIGTERM may not be defined and that "proc_terminate" uses the constant value and not the constant itself, we use the same here - $this->doSignal(15, false); - do { - usleep(1000); - } while ($this->isRunning() && microtime(true) < $timeoutMicro); - - if ($this->isRunning()) { - // Avoid exception here: process is supposed to be running, but it might have stopped just - // after this line. In any case, let's silently discard the error, we cannot do anything. - $this->doSignal($signal ?: 9, false); - } - } - - if ($this->isRunning()) { - if (isset($this->fallbackStatus['pid'])) { - unset($this->fallbackStatus['pid']); - - return $this->stop(0, $signal); - } - $this->close(); - } - - return $this->exitcode; - } - - /** - * Adds a line to the STDOUT stream. - * - * @internal - */ - public function addOutput(string $line): void - { - $this->lastOutputTime = microtime(true); - - fseek($this->stdout, 0, \SEEK_END); - fwrite($this->stdout, $line); - fseek($this->stdout, $this->incrementalOutputOffset); - } - - /** - * Adds a line to the STDERR stream. - * - * @internal - */ - public function addErrorOutput(string $line): void - { - $this->lastOutputTime = microtime(true); - - fseek($this->stderr, 0, \SEEK_END); - fwrite($this->stderr, $line); - fseek($this->stderr, $this->incrementalErrorOutputOffset); - } - - /** - * Gets the last output time in seconds. - */ - public function getLastOutputTime(): ?float - { - return $this->lastOutputTime; - } - - /** - * Gets the command line to be executed. - */ - public function getCommandLine(): string - { - return \is_array($this->commandline) ? implode(' ', array_map($this->escapeArgument(...), $this->commandline)) : $this->commandline; - } - - /** - * Gets the process timeout in seconds (max. runtime). - */ - public function getTimeout(): ?float - { - return $this->timeout; - } - - /** - * Gets the process idle timeout in seconds (max. time since last output). - */ - public function getIdleTimeout(): ?float - { - return $this->idleTimeout; - } - - /** - * Sets the process timeout (max. runtime) in seconds. - * - * To disable the timeout, set this value to null. - * - * @return $this - * - * @throws InvalidArgumentException if the timeout is negative - */ - public function setTimeout(?float $timeout): static - { - $this->timeout = $this->validateTimeout($timeout); - - return $this; - } - - /** - * Sets the process idle timeout (max. time since last output) in seconds. - * - * To disable the timeout, set this value to null. - * - * @return $this - * - * @throws LogicException if the output is disabled - * @throws InvalidArgumentException if the timeout is negative - */ - public function setIdleTimeout(?float $timeout): static - { - if (null !== $timeout && $this->outputDisabled) { - throw new LogicException('Idle timeout cannot be set while the output is disabled.'); - } - - $this->idleTimeout = $this->validateTimeout($timeout); - - return $this; - } - - /** - * Enables or disables the TTY mode. - * - * @return $this - * - * @throws RuntimeException In case the TTY mode is not supported - */ - public function setTty(bool $tty): static - { - if ('\\' === \DIRECTORY_SEPARATOR && $tty) { - throw new RuntimeException('TTY mode is not supported on Windows platform.'); - } - - if ($tty && !self::isTtySupported()) { - throw new RuntimeException('TTY mode requires /dev/tty to be read/writable.'); - } - - $this->tty = $tty; - - return $this; - } - - /** - * Checks if the TTY mode is enabled. - */ - public function isTty(): bool - { - return $this->tty; - } - - /** - * Sets PTY mode. - * - * @return $this - */ - public function setPty(bool $bool): static - { - $this->pty = $bool; - - return $this; - } - - /** - * Returns PTY state. - */ - public function isPty(): bool - { - return $this->pty; - } - - /** - * Gets the working directory. - */ - public function getWorkingDirectory(): ?string - { - if (null === $this->cwd) { - // getcwd() will return false if any one of the parent directories does not have - // the readable or search mode set, even if the current directory does - return getcwd() ?: null; - } - - return $this->cwd; - } - - /** - * Sets the current working directory. - * - * @return $this - */ - public function setWorkingDirectory(string $cwd): static - { - $this->cwd = $cwd; - - return $this; - } - - /** - * Gets the environment variables. - */ - public function getEnv(): array - { - return $this->env; - } - - /** - * Sets the environment variables. - * - * @param array $env The new environment variables - * - * @return $this - */ - public function setEnv(array $env): static - { - $this->env = $env; - - return $this; - } - - /** - * Gets the Process input. - * - * @return resource|string|\Iterator|null - */ - public function getInput() - { - return $this->input; - } - - /** - * Sets the input. - * - * This content will be passed to the underlying process standard input. - * - * @param string|resource|\Traversable|self|null $input The content - * - * @return $this - * - * @throws LogicException In case the process is running - */ - public function setInput(mixed $input): static - { - if ($this->isRunning()) { - throw new LogicException('Input cannot be set while the process is running.'); - } - - $this->input = ProcessUtils::validateInput(__METHOD__, $input); - - return $this; - } - - /** - * Performs a check between the timeout definition and the time the process started. - * - * In case you run a background process (with the start method), you should - * trigger this method regularly to ensure the process timeout - * - * @return void - * - * @throws ProcessTimedOutException In case the timeout was reached - */ - public function checkTimeout() - { - if (self::STATUS_STARTED !== $this->status) { - return; - } - - if (null !== $this->timeout && $this->timeout < microtime(true) - $this->starttime) { - $this->stop(0); - - throw new ProcessTimedOutException($this, ProcessTimedOutException::TYPE_GENERAL); - } - - if (null !== $this->idleTimeout && $this->idleTimeout < microtime(true) - $this->lastOutputTime) { - $this->stop(0); - - throw new ProcessTimedOutException($this, ProcessTimedOutException::TYPE_IDLE); - } - } - - /** - * @throws LogicException in case process is not started - */ - public function getStartTime(): float - { - if (!$this->isStarted()) { - throw new LogicException('Start time is only available after process start.'); - } - - return $this->starttime; - } - - /** - * Defines options to pass to the underlying proc_open(). - * - * @see https://php.net/proc_open for the options supported by PHP. - * - * Enabling the "create_new_console" option allows a subprocess to continue - * to run after the main process exited, on both Windows and *nix - * - * @return void - */ - public function setOptions(array $options) - { - if ($this->isRunning()) { - throw new RuntimeException('Setting options while the process is running is not possible.'); - } - - $defaultOptions = $this->options; - $existingOptions = ['blocking_pipes', 'create_process_group', 'create_new_console']; - - foreach ($options as $key => $value) { - if (!\in_array($key, $existingOptions)) { - $this->options = $defaultOptions; - throw new LogicException(sprintf('Invalid option "%s" passed to "%s()". Supported options are "%s".', $key, __METHOD__, implode('", "', $existingOptions))); - } - $this->options[$key] = $value; - } - } - - /** - * Returns whether TTY is supported on the current operating system. - */ - public static function isTtySupported(): bool - { - static $isTtySupported; - - return $isTtySupported ??= ('/' === \DIRECTORY_SEPARATOR && stream_isatty(\STDOUT) && @is_writable('/dev/tty')); - } - - /** - * Returns whether PTY is supported on the current operating system. - */ - public static function isPtySupported(): bool - { - static $result; - - if (null !== $result) { - return $result; - } - - if ('\\' === \DIRECTORY_SEPARATOR) { - return $result = false; - } - - return $result = (bool) @proc_open('echo 1 >/dev/null', [['pty'], ['pty'], ['pty']], $pipes); - } - - /** - * Creates the descriptors needed by the proc_open. - */ - private function getDescriptors(bool $hasCallback): array - { - if ($this->input instanceof \Iterator) { - $this->input->rewind(); - } - if ('\\' === \DIRECTORY_SEPARATOR) { - $this->processPipes = new WindowsPipes($this->input, !$this->outputDisabled || $hasCallback); - } else { - $this->processPipes = new UnixPipes($this->isTty(), $this->isPty(), $this->input, !$this->outputDisabled || $hasCallback); - } - - return $this->processPipes->getDescriptors(); - } - - /** - * Builds up the callback used by wait(). - * - * The callbacks adds all occurred output to the specific buffer and calls - * the user callback (if present) with the received output. - * - * @param callable|null $callback The user defined PHP callback - */ - protected function buildCallback(?callable $callback = null): \Closure - { - if ($this->outputDisabled) { - return fn ($type, $data): bool => null !== $callback && $callback($type, $data); - } - - $out = self::OUT; - - return function ($type, $data) use ($callback, $out): bool { - if ($out == $type) { - $this->addOutput($data); - } else { - $this->addErrorOutput($data); - } - - return null !== $callback && $callback($type, $data); - }; - } - - /** - * Updates the status of the process, reads pipes. - * - * @param bool $blocking Whether to use a blocking read call - * - * @return void - */ - protected function updateStatus(bool $blocking) - { - if (self::STATUS_STARTED !== $this->status) { - return; - } - - $this->processInformation = proc_get_status($this->process); - $running = $this->processInformation['running']; - - // In PHP < 8.3, "proc_get_status" only returns the correct exit status on the first call. - // Subsequent calls return -1 as the process is discarded. This workaround caches the first - // retrieved exit status for consistent results in later calls, mimicking PHP 8.3 behavior. - if (\PHP_VERSION_ID < 80300) { - if (!isset($this->cachedExitCode) && !$running && -1 !== $this->processInformation['exitcode']) { - $this->cachedExitCode = $this->processInformation['exitcode']; - } - - if (isset($this->cachedExitCode) && !$running && -1 === $this->processInformation['exitcode']) { - $this->processInformation['exitcode'] = $this->cachedExitCode; - } - } - - $this->readPipes($running && $blocking, '\\' !== \DIRECTORY_SEPARATOR || !$running); - - if ($this->fallbackStatus && $this->isSigchildEnabled()) { - $this->processInformation = $this->fallbackStatus + $this->processInformation; - } - - if (!$running) { - $this->close(); - } - } - - /** - * Returns whether PHP has been compiled with the '--enable-sigchild' option or not. - */ - protected function isSigchildEnabled(): bool - { - if (null !== self::$sigchild) { - return self::$sigchild; - } - - if (!\function_exists('phpinfo')) { - return self::$sigchild = false; - } - - ob_start(); - phpinfo(\INFO_GENERAL); - - return self::$sigchild = str_contains(ob_get_clean(), '--enable-sigchild'); - } - - /** - * Reads pipes for the freshest output. - * - * @param string $caller The name of the method that needs fresh outputs - * @param bool $blocking Whether to use blocking calls or not - * - * @throws LogicException in case output has been disabled or process is not started - */ - private function readPipesForOutput(string $caller, bool $blocking = false): void - { - if ($this->outputDisabled) { - throw new LogicException('Output has been disabled.'); - } - - $this->requireProcessIsStarted($caller); - - $this->updateStatus($blocking); - } - - /** - * Validates and returns the filtered timeout. - * - * @throws InvalidArgumentException if the given timeout is a negative number - */ - private function validateTimeout(?float $timeout): ?float - { - $timeout = (float) $timeout; - - if (0.0 === $timeout) { - $timeout = null; - } elseif ($timeout < 0) { - throw new InvalidArgumentException('The timeout value must be a valid positive integer or float number.'); - } - - return $timeout; - } - - /** - * Reads pipes, executes callback. - * - * @param bool $blocking Whether to use blocking calls or not - * @param bool $close Whether to close file handles or not - */ - private function readPipes(bool $blocking, bool $close): void - { - $result = $this->processPipes->readAndWrite($blocking, $close); - - $callback = $this->callback; - foreach ($result as $type => $data) { - if (3 !== $type) { - $callback(self::STDOUT === $type ? self::OUT : self::ERR, $data); - } elseif (!isset($this->fallbackStatus['signaled'])) { - $this->fallbackStatus['exitcode'] = (int) $data; - } - } - } - - /** - * Closes process resource, closes file handles, sets the exitcode. - * - * @return int The exitcode - */ - private function close(): int - { - $this->processPipes->close(); - if ($this->process) { - proc_close($this->process); - $this->process = null; - } - $this->exitcode = $this->processInformation['exitcode']; - $this->status = self::STATUS_TERMINATED; - - if (-1 === $this->exitcode) { - if ($this->processInformation['signaled'] && 0 < $this->processInformation['termsig']) { - // if process has been signaled, no exitcode but a valid termsig, apply Unix convention - $this->exitcode = 128 + $this->processInformation['termsig']; - } elseif ($this->isSigchildEnabled()) { - $this->processInformation['signaled'] = true; - $this->processInformation['termsig'] = -1; - } - } - - // Free memory from self-reference callback created by buildCallback - // Doing so in other contexts like __destruct or by garbage collector is ineffective - // Now pipes are closed, so the callback is no longer necessary - $this->callback = null; - - return $this->exitcode; - } - - /** - * Resets data related to the latest run of the process. - */ - private function resetProcessData(): void - { - $this->starttime = null; - $this->callback = null; - $this->exitcode = null; - $this->fallbackStatus = []; - $this->processInformation = []; - $this->stdout = fopen('php://temp/maxmemory:'.(1024 * 1024), 'w+'); - $this->stderr = fopen('php://temp/maxmemory:'.(1024 * 1024), 'w+'); - $this->process = null; - $this->latestSignal = null; - $this->status = self::STATUS_READY; - $this->incrementalOutputOffset = 0; - $this->incrementalErrorOutputOffset = 0; - } - - /** - * Sends a POSIX signal to the process. - * - * @param int $signal A valid POSIX signal (see https://php.net/pcntl.constants) - * @param bool $throwException Whether to throw exception in case signal failed - * - * @throws LogicException In case the process is not running - * @throws RuntimeException In case --enable-sigchild is activated and the process can't be killed - * @throws RuntimeException In case of failure - */ - private function doSignal(int $signal, bool $throwException): bool - { - if (null === $pid = $this->getPid()) { - if ($throwException) { - throw new LogicException('Cannot send signal on a non running process.'); - } - - return false; - } - - if ('\\' === \DIRECTORY_SEPARATOR) { - exec(sprintf('taskkill /F /T /PID %d 2>&1', $pid), $output, $exitCode); - if ($exitCode && $this->isRunning()) { - if ($throwException) { - throw new RuntimeException(sprintf('Unable to kill the process (%s).', implode(' ', $output))); - } - - return false; - } - } else { - if (!$this->isSigchildEnabled()) { - $ok = @proc_terminate($this->process, $signal); - } elseif (\function_exists('posix_kill')) { - $ok = @posix_kill($pid, $signal); - } elseif ($ok = proc_open(sprintf('kill -%d %d', $signal, $pid), [2 => ['pipe', 'w']], $pipes)) { - $ok = false === fgets($pipes[2]); - } - if (!$ok) { - if ($throwException) { - throw new RuntimeException(sprintf('Error while sending signal "%s".', $signal)); - } - - return false; - } - } - - $this->latestSignal = $signal; - $this->fallbackStatus['signaled'] = true; - $this->fallbackStatus['exitcode'] = -1; - $this->fallbackStatus['termsig'] = $this->latestSignal; - - return true; - } - - private function prepareWindowsCommandLine(string $cmd, array &$env): string - { - $uid = uniqid('', true); - $cmd = preg_replace_callback( - '/"(?:( - [^"%!^]*+ - (?: - (?: !LF! | "(?:\^[%!^])?+" ) - [^"%!^]*+ - )++ - ) | [^"]*+ )"/x', - function ($m) use (&$env, $uid) { - static $varCount = 0; - static $varCache = []; - if (!isset($m[1])) { - return $m[0]; - } - if (isset($varCache[$m[0]])) { - return $varCache[$m[0]]; - } - if (str_contains($value = $m[1], "\0")) { - $value = str_replace("\0", '?', $value); - } - if (false === strpbrk($value, "\"%!\n")) { - return '"'.$value.'"'; - } - - $value = str_replace(['!LF!', '"^!"', '"^%"', '"^^"', '""'], ["\n", '!', '%', '^', '"'], $value); - $value = '"'.preg_replace('/(\\\\*)"/', '$1$1\\"', $value).'"'; - $var = $uid.++$varCount; - - $env[$var] = $value; - - return $varCache[$m[0]] = '!'.$var.'!'; - }, - $cmd - ); - - static $comSpec; - - if (!$comSpec && $comSpec = (new ExecutableFinder())->find('cmd.exe')) { - // Escape according to CommandLineToArgvW rules - $comSpec = '"'.preg_replace('{(\\\\*+)"}', '$1$1\"', $comSpec) .'"'; - } - - $cmd = ($comSpec ?? 'cmd').' /V:ON /E:ON /D /C ('.str_replace("\n", ' ', $cmd).')'; - foreach ($this->processPipes->getFiles() as $offset => $filename) { - $cmd .= ' '.$offset.'>"'.$filename.'"'; - } - - return $cmd; - } - - /** - * Ensures the process is running or terminated, throws a LogicException if the process has a not started. - * - * @throws LogicException if the process has not run - */ - private function requireProcessIsStarted(string $functionName): void - { - if (!$this->isStarted()) { - throw new LogicException(sprintf('Process must be started before calling "%s()".', $functionName)); - } - } - - /** - * Ensures the process is terminated, throws a LogicException if the process has a status different than "terminated". - * - * @throws LogicException if the process is not yet terminated - */ - private function requireProcessIsTerminated(string $functionName): void - { - if (!$this->isTerminated()) { - throw new LogicException(sprintf('Process must be terminated before calling "%s()".', $functionName)); - } - } - - /** - * Escapes a string to be used as a shell argument. - */ - private function escapeArgument(?string $argument): string - { - if ('' === $argument || null === $argument) { - return '""'; - } - if ('\\' !== \DIRECTORY_SEPARATOR) { - return "'".str_replace("'", "'\\''", $argument)."'"; - } - if (str_contains($argument, "\0")) { - $argument = str_replace("\0", '?', $argument); - } - if (!preg_match('/[()%!^"<>&|\s]/', $argument)) { - return $argument; - } - $argument = preg_replace('/(\\\\+)$/', '$1$1', $argument); - - return '"'.str_replace(['"', '^', '%', '!', "\n"], ['""', '"^^"', '"^%"', '"^!"', '!LF!'], $argument).'"'; - } - - private function replacePlaceholders(string $commandline, array $env): string - { - return preg_replace_callback('/"\$\{:([_a-zA-Z]++[_a-zA-Z0-9]*+)\}"/', function ($matches) use ($commandline, $env) { - if (!isset($env[$matches[1]]) || false === $env[$matches[1]]) { - throw new InvalidArgumentException(sprintf('Command line is missing a value for parameter "%s": ', $matches[1]).$commandline); - } - - return $this->escapeArgument($env[$matches[1]]); - }, $commandline); - } - - private function getDefaultEnv(): array - { - $env = getenv(); - $env = ('\\' === \DIRECTORY_SEPARATOR ? array_intersect_ukey($env, $_SERVER, 'strcasecmp') : array_intersect_key($env, $_SERVER)) ?: $env; - - return $_ENV + ('\\' === \DIRECTORY_SEPARATOR ? array_diff_ukey($env, $_ENV, 'strcasecmp') : $env); - } -} diff --git a/docker/streamline-src/vendor/symfony/routing/Loader/AttributeFileLoader.php b/docker/streamline-src/vendor/symfony/routing/Loader/AttributeFileLoader.php deleted file mode 100644 index e9a13e59..00000000 --- a/docker/streamline-src/vendor/symfony/routing/Loader/AttributeFileLoader.php +++ /dev/null @@ -1,145 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Routing\Loader; - -use Symfony\Component\Config\FileLocatorInterface; -use Symfony\Component\Config\Loader\FileLoader; -use Symfony\Component\Config\Resource\FileResource; -use Symfony\Component\Routing\RouteCollection; - -/** - * AttributeFileLoader loads routing information from attributes set - * on a PHP class and its methods. - * - * @author Fabien Potencier - * @author Alexandre Daubois - */ -class AttributeFileLoader extends FileLoader -{ - protected $loader; - - public function __construct(FileLocatorInterface $locator, AttributeClassLoader $loader) - { - if (!\function_exists('token_get_all')) { - throw new \LogicException('The Tokenizer extension is required for the routing attribute loader.'); - } - - parent::__construct($locator); - - $this->loader = $loader; - } - - /** - * Loads from attributes from a file. - * - * @throws \InvalidArgumentException When the file does not exist or its routes cannot be parsed - */ - public function load(mixed $file, ?string $type = null): ?RouteCollection - { - $path = $this->locator->locate($file); - - $collection = new RouteCollection(); - if ($class = $this->findClass($path)) { - $refl = new \ReflectionClass($class); - if ($refl->isAbstract()) { - return null; - } - - $collection->addResource(new FileResource($path)); - $collection->addCollection($this->loader->load($class, $type)); - } - - gc_mem_caches(); - - return $collection; - } - - public function supports(mixed $resource, ?string $type = null): bool - { - if ('annotation' === $type) { - trigger_deprecation('symfony/routing', '6.4', 'The "annotation" route type is deprecated, use the "attribute" route type instead.'); - } - - return \is_string($resource) && 'php' === pathinfo($resource, \PATHINFO_EXTENSION) && (!$type || \in_array($type, ['annotation', 'attribute'], true)); - } - - /** - * Returns the full class name for the first class in the file. - */ - protected function findClass(string $file): string|false - { - $class = false; - $namespace = false; - $tokens = token_get_all(file_get_contents($file)); - - if (1 === \count($tokens) && \T_INLINE_HTML === $tokens[0][0]) { - throw new \InvalidArgumentException(sprintf('The file "%s" does not contain PHP code. Did you forget to add the " true, \T_STRING => true]; - if (\defined('T_NAME_QUALIFIED')) { - $nsTokens[\T_NAME_QUALIFIED] = true; - } - for ($i = 0; isset($tokens[$i]); ++$i) { - $token = $tokens[$i]; - if (!isset($token[1])) { - continue; - } - - if (true === $class && \T_STRING === $token[0]) { - return $namespace.'\\'.$token[1]; - } - - if (true === $namespace && isset($nsTokens[$token[0]])) { - $namespace = $token[1]; - while (isset($tokens[++$i][1], $nsTokens[$tokens[$i][0]])) { - $namespace .= $tokens[$i][1]; - } - $token = $tokens[$i]; - } - - if (\T_CLASS === $token[0]) { - // Skip usage of ::class constant and anonymous classes - $skipClassToken = false; - for ($j = $i - 1; $j > 0; --$j) { - if (!isset($tokens[$j][1])) { - if ('(' === $tokens[$j] || ',' === $tokens[$j]) { - $skipClassToken = true; - } - break; - } - - if (\T_DOUBLE_COLON === $tokens[$j][0] || \T_NEW === $tokens[$j][0]) { - $skipClassToken = true; - break; - } elseif (!\in_array($tokens[$j][0], [\T_WHITESPACE, \T_DOC_COMMENT, \T_COMMENT])) { - break; - } - } - - if (!$skipClassToken) { - $class = true; - } - } - - if (\T_NAMESPACE === $token[0]) { - $namespace = true; - } - } - - return false; - } -} - -if (!class_exists(AnnotationFileLoader::class, false)) { - class_alias(AttributeFileLoader::class, AnnotationFileLoader::class); -} diff --git a/docker/streamline-src/vendor/symfony/routing/Loader/Configurator/Traits/HostTrait.php b/docker/streamline-src/vendor/symfony/routing/Loader/Configurator/Traits/HostTrait.php deleted file mode 100644 index 1050bb0f..00000000 --- a/docker/streamline-src/vendor/symfony/routing/Loader/Configurator/Traits/HostTrait.php +++ /dev/null @@ -1,50 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Routing\Loader\Configurator\Traits; - -use Symfony\Component\Routing\RouteCollection; - -/** - * @internal - */ -trait HostTrait -{ - final protected function addHost(RouteCollection $routes, string|array $hosts): void - { - if (!$hosts || !\is_array($hosts)) { - $routes->setHost($hosts ?: ''); - - return; - } - - foreach ($routes->all() as $name => $route) { - if (null === $locale = $route->getDefault('_locale')) { - $priority = $routes->getPriority($name) ?? 0; - $routes->remove($name); - foreach ($hosts as $locale => $host) { - $localizedRoute = clone $route; - $localizedRoute->setDefault('_locale', $locale); - $localizedRoute->setRequirement('_locale', preg_quote($locale)); - $localizedRoute->setDefault('_canonical_route', $name); - $localizedRoute->setHost($host); - $routes->add($name.'.'.$locale, $localizedRoute, $priority); - } - } elseif (!isset($hosts[$locale])) { - throw new \InvalidArgumentException(sprintf('Route "%s" with locale "%s" is missing a corresponding host in its parent collection.', $name, $locale)); - } else { - $route->setHost($hosts[$locale]); - $route->setRequirement('_locale', preg_quote($locale)); - $routes->add($name, $route, $routes->getPriority($name) ?? 0); - } - } - } -} diff --git a/docker/streamline-src/vendor/symfony/routing/Matcher/Dumper/StaticPrefixCollection.php b/docker/streamline-src/vendor/symfony/routing/Matcher/Dumper/StaticPrefixCollection.php deleted file mode 100644 index 42ca799f..00000000 --- a/docker/streamline-src/vendor/symfony/routing/Matcher/Dumper/StaticPrefixCollection.php +++ /dev/null @@ -1,204 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Routing\Matcher\Dumper; - -use Symfony\Component\Routing\RouteCollection; - -/** - * Prefix tree of routes preserving routes order. - * - * @author Frank de Jonge - * @author Nicolas Grekas - * - * @internal - */ -class StaticPrefixCollection -{ - private string $prefix; - - /** - * @var string[] - */ - private array $staticPrefixes = []; - - /** - * @var string[] - */ - private array $prefixes = []; - - /** - * @var array[]|self[] - */ - private array $items = []; - - public function __construct(string $prefix = '/') - { - $this->prefix = $prefix; - } - - public function getPrefix(): string - { - return $this->prefix; - } - - /** - * @return array[]|self[] - */ - public function getRoutes(): array - { - return $this->items; - } - - /** - * Adds a route to a group. - */ - public function addRoute(string $prefix, array|self $route): void - { - [$prefix, $staticPrefix] = $this->getCommonPrefix($prefix, $prefix); - - for ($i = \count($this->items) - 1; 0 <= $i; --$i) { - $item = $this->items[$i]; - - [$commonPrefix, $commonStaticPrefix] = $this->getCommonPrefix($prefix, $this->prefixes[$i]); - - if ($this->prefix === $commonPrefix) { - // the new route and a previous one have no common prefix, let's see if they are exclusive to each others - - if ($this->prefix !== $staticPrefix && $this->prefix !== $this->staticPrefixes[$i]) { - // the new route and the previous one have exclusive static prefixes - continue; - } - - if ($this->prefix === $staticPrefix && $this->prefix === $this->staticPrefixes[$i]) { - // the new route and the previous one have no static prefix - break; - } - - if ($this->prefixes[$i] !== $this->staticPrefixes[$i] && $this->prefix === $this->staticPrefixes[$i]) { - // the previous route is non-static and has no static prefix - break; - } - - if ($prefix !== $staticPrefix && $this->prefix === $staticPrefix) { - // the new route is non-static and has no static prefix - break; - } - - continue; - } - - if ($item instanceof self && $this->prefixes[$i] === $commonPrefix) { - // the new route is a child of a previous one, let's nest it - $item->addRoute($prefix, $route); - } else { - // the new route and a previous one have a common prefix, let's merge them - $child = new self($commonPrefix); - [$child->prefixes[0], $child->staticPrefixes[0]] = $child->getCommonPrefix($this->prefixes[$i], $this->prefixes[$i]); - [$child->prefixes[1], $child->staticPrefixes[1]] = $child->getCommonPrefix($prefix, $prefix); - $child->items = [$this->items[$i], $route]; - - $this->staticPrefixes[$i] = $commonStaticPrefix; - $this->prefixes[$i] = $commonPrefix; - $this->items[$i] = $child; - } - - return; - } - - // No optimised case was found, in this case we simple add the route for possible - // grouping when new routes are added. - $this->staticPrefixes[] = $staticPrefix; - $this->prefixes[] = $prefix; - $this->items[] = $route; - } - - /** - * Linearizes back a set of nested routes into a collection. - */ - public function populateCollection(RouteCollection $routes): RouteCollection - { - foreach ($this->items as $route) { - if ($route instanceof self) { - $route->populateCollection($routes); - } else { - $routes->add(...$route); - } - } - - return $routes; - } - - /** - * Gets the full and static common prefixes between two route patterns. - * - * The static prefix stops at last at the first opening bracket. - */ - private function getCommonPrefix(string $prefix, string $anotherPrefix): array - { - $baseLength = \strlen($this->prefix); - $end = min(\strlen($prefix), \strlen($anotherPrefix)); - $staticLength = null; - set_error_handler(self::handleError(...)); - - try { - for ($i = $baseLength; $i < $end && $prefix[$i] === $anotherPrefix[$i]; ++$i) { - if ('(' === $prefix[$i]) { - $staticLength ??= $i; - for ($j = 1 + $i, $n = 1; $j < $end && 0 < $n; ++$j) { - if ($prefix[$j] !== $anotherPrefix[$j]) { - break 2; - } - if ('(' === $prefix[$j]) { - ++$n; - } elseif (')' === $prefix[$j]) { - --$n; - } elseif ('\\' === $prefix[$j] && (++$j === $end || $prefix[$j] !== $anotherPrefix[$j])) { - --$j; - break; - } - } - if (0 < $n) { - break; - } - if (('?' === ($prefix[$j] ?? '') || '?' === ($anotherPrefix[$j] ?? '')) && ($prefix[$j] ?? '') !== ($anotherPrefix[$j] ?? '')) { - break; - } - $subPattern = substr($prefix, $i, $j - $i); - if ($prefix !== $anotherPrefix && !preg_match('/^\(\[[^\]]++\]\+\+\)$/', $subPattern) && !preg_match('{(?> 6) && preg_match('//u', $prefix.' '.$anotherPrefix)) { - do { - // Prevent cutting in the middle of an UTF-8 characters - --$i; - } while (0b10 === (\ord($prefix[$i]) >> 6)); - } - - return [substr($prefix, 0, $i), substr($prefix, 0, $staticLength ?? $i)]; - } - - public static function handleError(int $type, string $msg): bool - { - return str_contains($msg, 'Compilation failed: lookbehind assertion is not fixed length') - || str_contains($msg, 'Compilation failed: length of lookbehind assertion is not limited'); - } -} diff --git a/docker/streamline-src/vendor/symfony/routing/Requirement/Requirement.php b/docker/streamline-src/vendor/symfony/routing/Requirement/Requirement.php deleted file mode 100644 index dfbb801f..00000000 --- a/docker/streamline-src/vendor/symfony/routing/Requirement/Requirement.php +++ /dev/null @@ -1,36 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Routing\Requirement; - -/* - * A collection of universal regular-expression constants to use as route parameter requirements. - */ -enum Requirement -{ - public const ASCII_SLUG = '[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*'; // symfony/string AsciiSlugger default implementation - public const CATCH_ALL = '.+'; - public const DATE_YMD = '[0-9]{4}-(?:0[1-9]|1[012])-(?:0[1-9]|[12][0-9]|(? - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Routing; - -use Psr\Log\LoggerInterface; -use Symfony\Component\Config\ConfigCacheFactory; -use Symfony\Component\Config\ConfigCacheFactoryInterface; -use Symfony\Component\Config\ConfigCacheInterface; -use Symfony\Component\Config\Loader\LoaderInterface; -use Symfony\Component\ExpressionLanguage\ExpressionFunctionProviderInterface; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\Routing\Generator\CompiledUrlGenerator; -use Symfony\Component\Routing\Generator\ConfigurableRequirementsInterface; -use Symfony\Component\Routing\Generator\Dumper\CompiledUrlGeneratorDumper; -use Symfony\Component\Routing\Generator\Dumper\GeneratorDumperInterface; -use Symfony\Component\Routing\Generator\UrlGeneratorInterface; -use Symfony\Component\Routing\Matcher\CompiledUrlMatcher; -use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherDumper; -use Symfony\Component\Routing\Matcher\Dumper\MatcherDumperInterface; -use Symfony\Component\Routing\Matcher\RequestMatcherInterface; -use Symfony\Component\Routing\Matcher\UrlMatcherInterface; - -/** - * The Router class is an example of the integration of all pieces of the - * routing system for easier use. - * - * @author Fabien Potencier - */ -class Router implements RouterInterface, RequestMatcherInterface -{ - /** - * @var UrlMatcherInterface|null - */ - protected $matcher; - - /** - * @var UrlGeneratorInterface|null - */ - protected $generator; - - /** - * @var RequestContext - */ - protected $context; - - /** - * @var LoaderInterface - */ - protected $loader; - - /** - * @var RouteCollection|null - */ - protected $collection; - - /** - * @var mixed - */ - protected $resource; - - /** - * @var array - */ - protected $options = []; - - /** - * @var LoggerInterface|null - */ - protected $logger; - - /** - * @var string|null - */ - protected $defaultLocale; - - private ConfigCacheFactoryInterface $configCacheFactory; - - /** - * @var ExpressionFunctionProviderInterface[] - */ - private array $expressionLanguageProviders = []; - - private static ?array $cache = []; - - public function __construct(LoaderInterface $loader, mixed $resource, array $options = [], ?RequestContext $context = null, ?LoggerInterface $logger = null, ?string $defaultLocale = null) - { - $this->loader = $loader; - $this->resource = $resource; - $this->logger = $logger; - $this->context = $context ?? new RequestContext(); - $this->setOptions($options); - $this->defaultLocale = $defaultLocale; - } - - /** - * Sets options. - * - * Available options: - * - * * cache_dir: The cache directory (or null to disable caching) - * * debug: Whether to enable debugging or not (false by default) - * * generator_class: The name of a UrlGeneratorInterface implementation - * * generator_dumper_class: The name of a GeneratorDumperInterface implementation - * * matcher_class: The name of a UrlMatcherInterface implementation - * * matcher_dumper_class: The name of a MatcherDumperInterface implementation - * * resource_type: Type hint for the main resource (optional) - * * strict_requirements: Configure strict requirement checking for generators - * implementing ConfigurableRequirementsInterface (default is true) - * - * @return void - * - * @throws \InvalidArgumentException When unsupported option is provided - */ - public function setOptions(array $options) - { - $this->options = [ - 'cache_dir' => null, - 'debug' => false, - 'generator_class' => CompiledUrlGenerator::class, - 'generator_dumper_class' => CompiledUrlGeneratorDumper::class, - 'matcher_class' => CompiledUrlMatcher::class, - 'matcher_dumper_class' => CompiledUrlMatcherDumper::class, - 'resource_type' => null, - 'strict_requirements' => true, - ]; - - // check option names and live merge, if errors are encountered Exception will be thrown - $invalid = []; - foreach ($options as $key => $value) { - if (\array_key_exists($key, $this->options)) { - $this->options[$key] = $value; - } else { - $invalid[] = $key; - } - } - - if ($invalid) { - throw new \InvalidArgumentException(sprintf('The Router does not support the following options: "%s".', implode('", "', $invalid))); - } - } - - /** - * Sets an option. - * - * @return void - * - * @throws \InvalidArgumentException - */ - public function setOption(string $key, mixed $value) - { - if (!\array_key_exists($key, $this->options)) { - throw new \InvalidArgumentException(sprintf('The Router does not support the "%s" option.', $key)); - } - - $this->options[$key] = $value; - } - - /** - * Gets an option value. - * - * @throws \InvalidArgumentException - */ - public function getOption(string $key): mixed - { - if (!\array_key_exists($key, $this->options)) { - throw new \InvalidArgumentException(sprintf('The Router does not support the "%s" option.', $key)); - } - - return $this->options[$key]; - } - - /** - * @return RouteCollection - */ - public function getRouteCollection() - { - return $this->collection ??= $this->loader->load($this->resource, $this->options['resource_type']); - } - - /** - * @return void - */ - public function setContext(RequestContext $context) - { - $this->context = $context; - - if (isset($this->matcher)) { - $this->getMatcher()->setContext($context); - } - if (isset($this->generator)) { - $this->getGenerator()->setContext($context); - } - } - - public function getContext(): RequestContext - { - return $this->context; - } - - /** - * Sets the ConfigCache factory to use. - * - * @return void - */ - public function setConfigCacheFactory(ConfigCacheFactoryInterface $configCacheFactory) - { - $this->configCacheFactory = $configCacheFactory; - } - - public function generate(string $name, array $parameters = [], int $referenceType = self::ABSOLUTE_PATH): string - { - return $this->getGenerator()->generate($name, $parameters, $referenceType); - } - - public function match(string $pathinfo): array - { - return $this->getMatcher()->match($pathinfo); - } - - public function matchRequest(Request $request): array - { - $matcher = $this->getMatcher(); - if (!$matcher instanceof RequestMatcherInterface) { - // fallback to the default UrlMatcherInterface - return $matcher->match($request->getPathInfo()); - } - - return $matcher->matchRequest($request); - } - - /** - * Gets the UrlMatcher or RequestMatcher instance associated with this Router. - */ - public function getMatcher(): UrlMatcherInterface|RequestMatcherInterface - { - if (isset($this->matcher)) { - return $this->matcher; - } - - if (null === $this->options['cache_dir']) { - $routes = $this->getRouteCollection(); - $compiled = is_a($this->options['matcher_class'], CompiledUrlMatcher::class, true); - if ($compiled) { - $routes = (new CompiledUrlMatcherDumper($routes))->getCompiledRoutes(); - } - $this->matcher = new $this->options['matcher_class']($routes, $this->context); - if (method_exists($this->matcher, 'addExpressionLanguageProvider')) { - foreach ($this->expressionLanguageProviders as $provider) { - $this->matcher->addExpressionLanguageProvider($provider); - } - } - - return $this->matcher; - } - - $cache = $this->getConfigCacheFactory()->cache($this->options['cache_dir'].'/url_matching_routes.php', - function (ConfigCacheInterface $cache) { - $dumper = $this->getMatcherDumperInstance(); - if (method_exists($dumper, 'addExpressionLanguageProvider')) { - foreach ($this->expressionLanguageProviders as $provider) { - $dumper->addExpressionLanguageProvider($provider); - } - } - - $cache->write($dumper->dump(), $this->getRouteCollection()->getResources()); - unset(self::$cache[$cache->getPath()]); - } - ); - - return $this->matcher = new $this->options['matcher_class'](self::getCompiledRoutes($cache->getPath()), $this->context); - } - - /** - * Gets the UrlGenerator instance associated with this Router. - */ - public function getGenerator(): UrlGeneratorInterface - { - if (isset($this->generator)) { - return $this->generator; - } - - if (null === $this->options['cache_dir']) { - $routes = $this->getRouteCollection(); - $compiled = is_a($this->options['generator_class'], CompiledUrlGenerator::class, true); - if ($compiled) { - $generatorDumper = new CompiledUrlGeneratorDumper($routes); - $routes = array_merge($generatorDumper->getCompiledRoutes(), $generatorDumper->getCompiledAliases()); - } - $this->generator = new $this->options['generator_class']($routes, $this->context, $this->logger, $this->defaultLocale); - } else { - $cache = $this->getConfigCacheFactory()->cache($this->options['cache_dir'].'/url_generating_routes.php', - function (ConfigCacheInterface $cache) { - $dumper = $this->getGeneratorDumperInstance(); - - $cache->write($dumper->dump(), $this->getRouteCollection()->getResources()); - unset(self::$cache[$cache->getPath()]); - } - ); - - $this->generator = new $this->options['generator_class'](self::getCompiledRoutes($cache->getPath()), $this->context, $this->logger, $this->defaultLocale); - } - - if ($this->generator instanceof ConfigurableRequirementsInterface) { - $this->generator->setStrictRequirements($this->options['strict_requirements']); - } - - return $this->generator; - } - - /** - * @return void - */ - public function addExpressionLanguageProvider(ExpressionFunctionProviderInterface $provider) - { - $this->expressionLanguageProviders[] = $provider; - } - - protected function getGeneratorDumperInstance(): GeneratorDumperInterface - { - return new $this->options['generator_dumper_class']($this->getRouteCollection()); - } - - protected function getMatcherDumperInstance(): MatcherDumperInterface - { - return new $this->options['matcher_dumper_class']($this->getRouteCollection()); - } - - /** - * Provides the ConfigCache factory implementation, falling back to a - * default implementation if necessary. - */ - private function getConfigCacheFactory(): ConfigCacheFactoryInterface - { - return $this->configCacheFactory ??= new ConfigCacheFactory($this->options['debug']); - } - - private static function getCompiledRoutes(string $path): array - { - if ([] === self::$cache && \function_exists('opcache_invalidate') && filter_var(\ini_get('opcache.enable'), \FILTER_VALIDATE_BOOL) && (!\in_array(\PHP_SAPI, ['cli', 'phpdbg', 'embed'], true) || filter_var(\ini_get('opcache.enable_cli'), \FILTER_VALIDATE_BOOL))) { - self::$cache = null; - } - - if (null === self::$cache) { - return require $path; - } - - return self::$cache[$path] ??= require $path; - } -} diff --git a/docker/streamline-src/vendor/symfony/service-contracts/Attribute/SubscribedService.php b/docker/streamline-src/vendor/symfony/service-contracts/Attribute/SubscribedService.php deleted file mode 100644 index f850b840..00000000 --- a/docker/streamline-src/vendor/symfony/service-contracts/Attribute/SubscribedService.php +++ /dev/null @@ -1,47 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Contracts\Service\Attribute; - -use Symfony\Contracts\Service\ServiceMethodsSubscriberTrait; -use Symfony\Contracts\Service\ServiceSubscriberInterface; - -/** - * For use as the return value for {@see ServiceSubscriberInterface}. - * - * @example new SubscribedService('http_client', HttpClientInterface::class, false, new Target('githubApi')) - * - * Use with {@see ServiceMethodsSubscriberTrait} to mark a method's return type - * as a subscribed service. - * - * @author Kevin Bond - */ -#[\Attribute(\Attribute::TARGET_METHOD)] -final class SubscribedService -{ - /** @var object[] */ - public array $attributes; - - /** - * @param string|null $key The key to use for the service - * @param class-string|null $type The service class - * @param bool $nullable Whether the service is optional - * @param object|object[] $attributes One or more dependency injection attributes to use - */ - public function __construct( - public ?string $key = null, - public ?string $type = null, - public bool $nullable = false, - array|object $attributes = [], - ) { - $this->attributes = \is_array($attributes) ? $attributes : [$attributes]; - } -} diff --git a/docker/streamline-src/vendor/symfony/service-contracts/ServiceSubscriberTrait.php b/docker/streamline-src/vendor/symfony/service-contracts/ServiceSubscriberTrait.php deleted file mode 100644 index cc3bc321..00000000 --- a/docker/streamline-src/vendor/symfony/service-contracts/ServiceSubscriberTrait.php +++ /dev/null @@ -1,84 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Contracts\Service; - -use Psr\Container\ContainerInterface; -use Symfony\Contracts\Service\Attribute\Required; -use Symfony\Contracts\Service\Attribute\SubscribedService; - -trigger_deprecation('symfony/contracts', 'v3.5', '"%s" is deprecated, use "ServiceMethodsSubscriberTrait" instead.', ServiceSubscriberTrait::class); - -/** - * Implementation of ServiceSubscriberInterface that determines subscribed services - * from methods that have the #[SubscribedService] attribute. - * - * Service ids are available as "ClassName::methodName" so that the implementation - * of subscriber methods can be just `return $this->container->get(__METHOD__);`. - * - * @property ContainerInterface $container - * - * @author Kevin Bond - * - * @deprecated since symfony/contracts v3.5, use ServiceMethodsSubscriberTrait instead - */ -trait ServiceSubscriberTrait -{ - public static function getSubscribedServices(): array - { - $services = method_exists(get_parent_class(self::class) ?: '', __FUNCTION__) ? parent::getSubscribedServices() : []; - - foreach ((new \ReflectionClass(self::class))->getMethods() as $method) { - if (self::class !== $method->getDeclaringClass()->name) { - continue; - } - - if (!$attribute = $method->getAttributes(SubscribedService::class)[0] ?? null) { - continue; - } - - if ($method->isStatic() || $method->isAbstract() || $method->isGenerator() || $method->isInternal() || $method->getNumberOfRequiredParameters()) { - throw new \LogicException(sprintf('Cannot use "%s" on method "%s::%s()" (can only be used on non-static, non-abstract methods with no parameters).', SubscribedService::class, self::class, $method->name)); - } - - if (!$returnType = $method->getReturnType()) { - throw new \LogicException(sprintf('Cannot use "%s" on methods without a return type in "%s::%s()".', SubscribedService::class, $method->name, self::class)); - } - - /* @var SubscribedService $attribute */ - $attribute = $attribute->newInstance(); - $attribute->key ??= self::class.'::'.$method->name; - $attribute->type ??= $returnType instanceof \ReflectionNamedType ? $returnType->getName() : (string) $returnType; - $attribute->nullable = $returnType->allowsNull(); - - if ($attribute->attributes) { - $services[] = $attribute; - } else { - $services[$attribute->key] = ($attribute->nullable ? '?' : '').$attribute->type; - } - } - - return $services; - } - - #[Required] - public function setContainer(ContainerInterface $container): ?ContainerInterface - { - $ret = null; - if (method_exists(get_parent_class(self::class) ?: '', __FUNCTION__)) { - $ret = parent::setContainer($container); - } - - $this->container = $container; - - return $ret; - } -} diff --git a/docker/streamline-src/vendor/symfony/service-contracts/composer.json b/docker/streamline-src/vendor/symfony/service-contracts/composer.json deleted file mode 100644 index fc8674a7..00000000 --- a/docker/streamline-src/vendor/symfony/service-contracts/composer.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "symfony/service-contracts", - "type": "library", - "description": "Generic abstractions related to writing services", - "keywords": ["abstractions", "contracts", "decoupling", "interfaces", "interoperability", "standards"], - "homepage": "https://symfony.com", - "license": "MIT", - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "require": { - "php": ">=8.1", - "psr/container": "^1.1|^2.0", - "symfony/deprecation-contracts": "^2.5|^3" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "autoload": { - "psr-4": { "Symfony\\Contracts\\Service\\": "" }, - "exclude-from-classmap": [ - "/Test/" - ] - }, - "minimum-stability": "dev", - "extra": { - "branch-alias": { - "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - } -} diff --git a/docker/streamline-src/vendor/symfony/string/AbstractString.php b/docker/streamline-src/vendor/symfony/string/AbstractString.php deleted file mode 100644 index 500d7c31..00000000 --- a/docker/streamline-src/vendor/symfony/string/AbstractString.php +++ /dev/null @@ -1,718 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\String; - -use Symfony\Component\String\Exception\ExceptionInterface; -use Symfony\Component\String\Exception\InvalidArgumentException; -use Symfony\Component\String\Exception\RuntimeException; - -/** - * Represents a string of abstract characters. - * - * Unicode defines 3 types of "characters" (bytes, code points and grapheme clusters). - * This class is the abstract type to use as a type-hint when the logic you want to - * implement doesn't care about the exact variant it deals with. - * - * @author Nicolas Grekas - * @author Hugo Hamon - * - * @throws ExceptionInterface - */ -abstract class AbstractString implements \Stringable, \JsonSerializable -{ - public const PREG_PATTERN_ORDER = \PREG_PATTERN_ORDER; - public const PREG_SET_ORDER = \PREG_SET_ORDER; - public const PREG_OFFSET_CAPTURE = \PREG_OFFSET_CAPTURE; - public const PREG_UNMATCHED_AS_NULL = \PREG_UNMATCHED_AS_NULL; - - public const PREG_SPLIT = 0; - public const PREG_SPLIT_NO_EMPTY = \PREG_SPLIT_NO_EMPTY; - public const PREG_SPLIT_DELIM_CAPTURE = \PREG_SPLIT_DELIM_CAPTURE; - public const PREG_SPLIT_OFFSET_CAPTURE = \PREG_SPLIT_OFFSET_CAPTURE; - - protected string $string = ''; - protected ?bool $ignoreCase = false; - - abstract public function __construct(string $string = ''); - - /** - * Unwraps instances of AbstractString back to strings. - * - * @return string[]|array - */ - public static function unwrap(array $values): array - { - foreach ($values as $k => $v) { - if ($v instanceof self) { - $values[$k] = $v->__toString(); - } elseif (\is_array($v) && $values[$k] !== $v = static::unwrap($v)) { - $values[$k] = $v; - } - } - - return $values; - } - - /** - * Wraps (and normalizes) strings in instances of AbstractString. - * - * @return static[]|array - */ - public static function wrap(array $values): array - { - $i = 0; - $keys = null; - - foreach ($values as $k => $v) { - if (\is_string($k) && '' !== $k && $k !== $j = (string) new static($k)) { - $keys ??= array_keys($values); - $keys[$i] = $j; - } - - if (\is_string($v)) { - $values[$k] = new static($v); - } elseif (\is_array($v) && $values[$k] !== $v = static::wrap($v)) { - $values[$k] = $v; - } - - ++$i; - } - - return null !== $keys ? array_combine($keys, $values) : $values; - } - - /** - * @param string|string[] $needle - */ - public function after(string|iterable $needle, bool $includeNeedle = false, int $offset = 0): static - { - $str = clone $this; - $i = \PHP_INT_MAX; - - if (\is_string($needle)) { - $needle = [$needle]; - } - - foreach ($needle as $n) { - $n = (string) $n; - $j = $this->indexOf($n, $offset); - - if (null !== $j && $j < $i) { - $i = $j; - $str->string = $n; - } - } - - if (\PHP_INT_MAX === $i) { - return $str; - } - - if (!$includeNeedle) { - $i += $str->length(); - } - - return $this->slice($i); - } - - /** - * @param string|string[] $needle - */ - public function afterLast(string|iterable $needle, bool $includeNeedle = false, int $offset = 0): static - { - $str = clone $this; - $i = null; - - if (\is_string($needle)) { - $needle = [$needle]; - } - - foreach ($needle as $n) { - $n = (string) $n; - $j = $this->indexOfLast($n, $offset); - - if (null !== $j && $j >= $i) { - $i = $offset = $j; - $str->string = $n; - } - } - - if (null === $i) { - return $str; - } - - if (!$includeNeedle) { - $i += $str->length(); - } - - return $this->slice($i); - } - - abstract public function append(string ...$suffix): static; - - /** - * @param string|string[] $needle - */ - public function before(string|iterable $needle, bool $includeNeedle = false, int $offset = 0): static - { - $str = clone $this; - $i = \PHP_INT_MAX; - - if (\is_string($needle)) { - $needle = [$needle]; - } - - foreach ($needle as $n) { - $n = (string) $n; - $j = $this->indexOf($n, $offset); - - if (null !== $j && $j < $i) { - $i = $j; - $str->string = $n; - } - } - - if (\PHP_INT_MAX === $i) { - return $str; - } - - if ($includeNeedle) { - $i += $str->length(); - } - - return $this->slice(0, $i); - } - - /** - * @param string|string[] $needle - */ - public function beforeLast(string|iterable $needle, bool $includeNeedle = false, int $offset = 0): static - { - $str = clone $this; - $i = null; - - if (\is_string($needle)) { - $needle = [$needle]; - } - - foreach ($needle as $n) { - $n = (string) $n; - $j = $this->indexOfLast($n, $offset); - - if (null !== $j && $j >= $i) { - $i = $offset = $j; - $str->string = $n; - } - } - - if (null === $i) { - return $str; - } - - if ($includeNeedle) { - $i += $str->length(); - } - - return $this->slice(0, $i); - } - - /** - * @return int[] - */ - public function bytesAt(int $offset): array - { - $str = $this->slice($offset, 1); - - return '' === $str->string ? [] : array_values(unpack('C*', $str->string)); - } - - abstract public function camel(): static; - - /** - * @return static[] - */ - abstract public function chunk(int $length = 1): array; - - public function collapseWhitespace(): static - { - $str = clone $this; - $str->string = trim(preg_replace("/(?:[ \n\r\t\x0C]{2,}+|[\n\r\t\x0C])/", ' ', $str->string), " \n\r\t\x0C"); - - return $str; - } - - /** - * @param string|string[] $needle - */ - public function containsAny(string|iterable $needle): bool - { - return null !== $this->indexOf($needle); - } - - /** - * @param string|string[] $suffix - */ - public function endsWith(string|iterable $suffix): bool - { - if (\is_string($suffix)) { - throw new \TypeError(\sprintf('Method "%s()" must be overridden by class "%s" to deal with non-iterable values.', __FUNCTION__, static::class)); - } - - foreach ($suffix as $s) { - if ($this->endsWith((string) $s)) { - return true; - } - } - - return false; - } - - public function ensureEnd(string $suffix): static - { - if (!$this->endsWith($suffix)) { - return $this->append($suffix); - } - - $suffix = preg_quote($suffix); - $regex = '{('.$suffix.')(?:'.$suffix.')++$}D'; - - return $this->replaceMatches($regex.($this->ignoreCase ? 'i' : ''), '$1'); - } - - public function ensureStart(string $prefix): static - { - $prefix = new static($prefix); - - if (!$this->startsWith($prefix)) { - return $this->prepend($prefix); - } - - $str = clone $this; - $i = $prefixLen = $prefix->length(); - - while ($this->indexOf($prefix, $i) === $i) { - $str = $str->slice($prefixLen); - $i += $prefixLen; - } - - return $str; - } - - /** - * @param string|string[] $string - */ - public function equalsTo(string|iterable $string): bool - { - if (\is_string($string)) { - throw new \TypeError(\sprintf('Method "%s()" must be overridden by class "%s" to deal with non-iterable values.', __FUNCTION__, static::class)); - } - - foreach ($string as $s) { - if ($this->equalsTo((string) $s)) { - return true; - } - } - - return false; - } - - abstract public function folded(): static; - - public function ignoreCase(): static - { - $str = clone $this; - $str->ignoreCase = true; - - return $str; - } - - /** - * @param string|string[] $needle - */ - public function indexOf(string|iterable $needle, int $offset = 0): ?int - { - if (\is_string($needle)) { - throw new \TypeError(\sprintf('Method "%s()" must be overridden by class "%s" to deal with non-iterable values.', __FUNCTION__, static::class)); - } - - $i = \PHP_INT_MAX; - - foreach ($needle as $n) { - $j = $this->indexOf((string) $n, $offset); - - if (null !== $j && $j < $i) { - $i = $j; - } - } - - return \PHP_INT_MAX === $i ? null : $i; - } - - /** - * @param string|string[] $needle - */ - public function indexOfLast(string|iterable $needle, int $offset = 0): ?int - { - if (\is_string($needle)) { - throw new \TypeError(\sprintf('Method "%s()" must be overridden by class "%s" to deal with non-iterable values.', __FUNCTION__, static::class)); - } - - $i = null; - - foreach ($needle as $n) { - $j = $this->indexOfLast((string) $n, $offset); - - if (null !== $j && $j >= $i) { - $i = $offset = $j; - } - } - - return $i; - } - - public function isEmpty(): bool - { - return '' === $this->string; - } - - abstract public function join(array $strings, ?string $lastGlue = null): static; - - public function jsonSerialize(): string - { - return $this->string; - } - - abstract public function length(): int; - - abstract public function lower(): static; - - /** - * Matches the string using a regular expression. - * - * Pass PREG_PATTERN_ORDER or PREG_SET_ORDER as $flags to get all occurrences matching the regular expression. - * - * @return array All matches in a multi-dimensional array ordered according to flags - */ - abstract public function match(string $regexp, int $flags = 0, int $offset = 0): array; - - abstract public function padBoth(int $length, string $padStr = ' '): static; - - abstract public function padEnd(int $length, string $padStr = ' '): static; - - abstract public function padStart(int $length, string $padStr = ' '): static; - - abstract public function prepend(string ...$prefix): static; - - public function repeat(int $multiplier): static - { - if (0 > $multiplier) { - throw new InvalidArgumentException(\sprintf('Multiplier must be positive, %d given.', $multiplier)); - } - - $str = clone $this; - $str->string = str_repeat($str->string, $multiplier); - - return $str; - } - - abstract public function replace(string $from, string $to): static; - - abstract public function replaceMatches(string $fromRegexp, string|callable $to): static; - - abstract public function reverse(): static; - - abstract public function slice(int $start = 0, ?int $length = null): static; - - abstract public function snake(): static; - - public function kebab(): static - { - return $this->snake()->replace('_', '-'); - } - - abstract public function splice(string $replacement, int $start = 0, ?int $length = null): static; - - /** - * @return static[] - */ - public function split(string $delimiter, ?int $limit = null, ?int $flags = null): array - { - if (null === $flags) { - throw new \TypeError('Split behavior when $flags is null must be implemented by child classes.'); - } - - if ($this->ignoreCase) { - $delimiter .= 'i'; - } - - set_error_handler(static fn ($t, $m) => throw new InvalidArgumentException($m)); - - try { - if (false === $chunks = preg_split($delimiter, $this->string, $limit, $flags)) { - throw new RuntimeException('Splitting failed with error: '.preg_last_error_msg()); - } - } finally { - restore_error_handler(); - } - - $str = clone $this; - - if (self::PREG_SPLIT_OFFSET_CAPTURE & $flags) { - foreach ($chunks as &$chunk) { - $str->string = $chunk[0]; - $chunk[0] = clone $str; - } - } else { - foreach ($chunks as &$chunk) { - $str->string = $chunk; - $chunk = clone $str; - } - } - - return $chunks; - } - - /** - * @param string|string[] $prefix - */ - public function startsWith(string|iterable $prefix): bool - { - if (\is_string($prefix)) { - throw new \TypeError(\sprintf('Method "%s()" must be overridden by class "%s" to deal with non-iterable values.', __FUNCTION__, static::class)); - } - - foreach ($prefix as $prefix) { - if ($this->startsWith((string) $prefix)) { - return true; - } - } - - return false; - } - - abstract public function title(bool $allWords = false): static; - - public function toByteString(?string $toEncoding = null): ByteString - { - $b = new ByteString(); - - $toEncoding = \in_array($toEncoding, ['utf8', 'utf-8', 'UTF8'], true) ? 'UTF-8' : $toEncoding; - - if (null === $toEncoding || $toEncoding === $fromEncoding = $this instanceof AbstractUnicodeString || preg_match('//u', $b->string) ? 'UTF-8' : 'Windows-1252') { - $b->string = $this->string; - - return $b; - } - - try { - $b->string = mb_convert_encoding($this->string, $toEncoding, 'UTF-8'); - } catch (\ValueError $e) { - if (!\function_exists('iconv')) { - throw new InvalidArgumentException($e->getMessage(), $e->getCode(), $e); - } - - $b->string = iconv('UTF-8', $toEncoding, $this->string); - } - - return $b; - } - - public function toCodePointString(): CodePointString - { - return new CodePointString($this->string); - } - - public function toString(): string - { - return $this->string; - } - - public function toUnicodeString(): UnicodeString - { - return new UnicodeString($this->string); - } - - abstract public function trim(string $chars = " \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}"): static; - - abstract public function trimEnd(string $chars = " \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}"): static; - - /** - * @param string|string[] $prefix - */ - public function trimPrefix($prefix): static - { - if (\is_array($prefix) || $prefix instanceof \Traversable) { // don't use is_iterable(), it's slow - foreach ($prefix as $s) { - $t = $this->trimPrefix($s); - - if ($t->string !== $this->string) { - return $t; - } - } - - return clone $this; - } - - $str = clone $this; - - if ($prefix instanceof self) { - $prefix = $prefix->string; - } else { - $prefix = (string) $prefix; - } - - if ('' !== $prefix && \strlen($this->string) >= \strlen($prefix) && 0 === substr_compare($this->string, $prefix, 0, \strlen($prefix), $this->ignoreCase)) { - $str->string = substr($this->string, \strlen($prefix)); - } - - return $str; - } - - abstract public function trimStart(string $chars = " \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}"): static; - - /** - * @param string|string[] $suffix - */ - public function trimSuffix($suffix): static - { - if (\is_array($suffix) || $suffix instanceof \Traversable) { // don't use is_iterable(), it's slow - foreach ($suffix as $s) { - $t = $this->trimSuffix($s); - - if ($t->string !== $this->string) { - return $t; - } - } - - return clone $this; - } - - $str = clone $this; - - if ($suffix instanceof self) { - $suffix = $suffix->string; - } else { - $suffix = (string) $suffix; - } - - if ('' !== $suffix && \strlen($this->string) >= \strlen($suffix) && 0 === substr_compare($this->string, $suffix, -\strlen($suffix), null, $this->ignoreCase)) { - $str->string = substr($this->string, 0, -\strlen($suffix)); - } - - return $str; - } - - public function truncate(int $length, string $ellipsis = '', bool|TruncateMode $cut = TruncateMode::Char): static - { - $stringLength = $this->length(); - - if ($stringLength <= $length) { - return clone $this; - } - - $ellipsisLength = '' !== $ellipsis ? (new static($ellipsis))->length() : 0; - - if ($length < $ellipsisLength) { - $ellipsisLength = 0; - } - - $desiredLength = $length; - if (TruncateMode::WordAfter === $cut || !$cut) { - if (null === $length = $this->indexOf([' ', "\r", "\n", "\t"], ($length ?: 1) - 1)) { - return clone $this; - } - - $length += $ellipsisLength; - } elseif (TruncateMode::WordBefore === $cut && null !== $this->indexOf([' ', "\r", "\n", "\t"], ($length ?: 1) - 1)) { - $length += $ellipsisLength; - } - - $str = $this->slice(0, $length - $ellipsisLength); - - if (TruncateMode::WordBefore === $cut) { - if (0 === $ellipsisLength && $desiredLength === $this->indexOf([' ', "\r", "\n", "\t"], $length)) { - return $str; - } - - $str = $str->beforeLast([' ', "\r", "\n", "\t"]); - } - - return $ellipsisLength ? $str->trimEnd()->append($ellipsis) : $str; - } - - abstract public function upper(): static; - - /** - * Returns the printable length on a terminal. - */ - abstract public function width(bool $ignoreAnsiDecoration = true): int; - - public function wordwrap(int $width = 75, string $break = "\n", bool $cut = false): static - { - $lines = '' !== $break ? $this->split($break) : [clone $this]; - $chars = []; - $mask = ''; - - if (1 === \count($lines) && '' === $lines[0]->string) { - return $lines[0]; - } - - foreach ($lines as $i => $line) { - if ($i) { - $chars[] = $break; - $mask .= '#'; - } - - foreach ($line->chunk() as $char) { - $chars[] = $char->string; - $mask .= ' ' === $char->string ? ' ' : '?'; - } - } - - $string = ''; - $j = 0; - $b = $i = -1; - $mask = wordwrap($mask, $width, '#', $cut); - - while (false !== $b = strpos($mask, '#', $b + 1)) { - for (++$i; $i < $b; ++$i) { - $string .= $chars[$j]; - unset($chars[$j++]); - } - - if ($break === $chars[$j] || ' ' === $chars[$j]) { - unset($chars[$j++]); - } - - $string .= $break; - } - - $str = clone $this; - $str->string = $string.implode('', $chars); - - return $str; - } - - public function __sleep(): array - { - return ['string']; - } - - public function __clone() - { - $this->ignoreCase = false; - } - - public function __toString(): string - { - return $this->string; - } -} diff --git a/docker/streamline-src/vendor/symfony/string/AbstractUnicodeString.php b/docker/streamline-src/vendor/symfony/string/AbstractUnicodeString.php deleted file mode 100644 index 979fcea8..00000000 --- a/docker/streamline-src/vendor/symfony/string/AbstractUnicodeString.php +++ /dev/null @@ -1,664 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\String; - -use Symfony\Component\String\Exception\ExceptionInterface; -use Symfony\Component\String\Exception\InvalidArgumentException; -use Symfony\Component\String\Exception\RuntimeException; - -/** - * Represents a string of abstract Unicode characters. - * - * Unicode defines 3 types of "characters" (bytes, code points and grapheme clusters). - * This class is the abstract type to use as a type-hint when the logic you want to - * implement is Unicode-aware but doesn't care about code points vs grapheme clusters. - * - * @author Nicolas Grekas - * - * @throws ExceptionInterface - */ -abstract class AbstractUnicodeString extends AbstractString -{ - public const NFC = \Normalizer::NFC; - public const NFD = \Normalizer::NFD; - public const NFKC = \Normalizer::NFKC; - public const NFKD = \Normalizer::NFKD; - - // all ASCII letters sorted by typical frequency of occurrence - private const ASCII = "\x20\x65\x69\x61\x73\x6E\x74\x72\x6F\x6C\x75\x64\x5D\x5B\x63\x6D\x70\x27\x0A\x67\x7C\x68\x76\x2E\x66\x62\x2C\x3A\x3D\x2D\x71\x31\x30\x43\x32\x2A\x79\x78\x29\x28\x4C\x39\x41\x53\x2F\x50\x22\x45\x6A\x4D\x49\x6B\x33\x3E\x35\x54\x3C\x44\x34\x7D\x42\x7B\x38\x46\x77\x52\x36\x37\x55\x47\x4E\x3B\x4A\x7A\x56\x23\x48\x4F\x57\x5F\x26\x21\x4B\x3F\x58\x51\x25\x59\x5C\x09\x5A\x2B\x7E\x5E\x24\x40\x60\x7F\x00\x01\x02\x03\x04\x05\x06\x07\x08\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F"; - - // the subset of folded case mappings that is not in lower case mappings - private const FOLD_FROM = ['İ', 'µ', 'ſ', "\xCD\x85", 'ς', 'ϐ', 'ϑ', 'ϕ', 'ϖ', 'ϰ', 'ϱ', 'ϵ', 'ẛ', "\xE1\xBE\xBE", 'ß', 'ʼn', 'ǰ', 'ΐ', 'ΰ', 'և', 'ẖ', 'ẗ', 'ẘ', 'ẙ', 'ẚ', 'ẞ', 'ὐ', 'ὒ', 'ὔ', 'ὖ', 'ᾀ', 'ᾁ', 'ᾂ', 'ᾃ', 'ᾄ', 'ᾅ', 'ᾆ', 'ᾇ', 'ᾈ', 'ᾉ', 'ᾊ', 'ᾋ', 'ᾌ', 'ᾍ', 'ᾎ', 'ᾏ', 'ᾐ', 'ᾑ', 'ᾒ', 'ᾓ', 'ᾔ', 'ᾕ', 'ᾖ', 'ᾗ', 'ᾘ', 'ᾙ', 'ᾚ', 'ᾛ', 'ᾜ', 'ᾝ', 'ᾞ', 'ᾟ', 'ᾠ', 'ᾡ', 'ᾢ', 'ᾣ', 'ᾤ', 'ᾥ', 'ᾦ', 'ᾧ', 'ᾨ', 'ᾩ', 'ᾪ', 'ᾫ', 'ᾬ', 'ᾭ', 'ᾮ', 'ᾯ', 'ᾲ', 'ᾳ', 'ᾴ', 'ᾶ', 'ᾷ', 'ᾼ', 'ῂ', 'ῃ', 'ῄ', 'ῆ', 'ῇ', 'ῌ', 'ῒ', 'ῖ', 'ῗ', 'ῢ', 'ῤ', 'ῦ', 'ῧ', 'ῲ', 'ῳ', 'ῴ', 'ῶ', 'ῷ', 'ῼ', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'ſt', 'st', 'ﬓ', 'ﬔ', 'ﬕ', 'ﬖ', 'ﬗ']; - private const FOLD_TO = ['i̇', 'μ', 's', 'ι', 'σ', 'β', 'θ', 'φ', 'π', 'κ', 'ρ', 'ε', 'ṡ', 'ι', 'ss', 'ʼn', 'ǰ', 'ΐ', 'ΰ', 'եւ', 'ẖ', 'ẗ', 'ẘ', 'ẙ', 'aʾ', 'ss', 'ὐ', 'ὒ', 'ὔ', 'ὖ', 'ἀι', 'ἁι', 'ἂι', 'ἃι', 'ἄι', 'ἅι', 'ἆι', 'ἇι', 'ἀι', 'ἁι', 'ἂι', 'ἃι', 'ἄι', 'ἅι', 'ἆι', 'ἇι', 'ἠι', 'ἡι', 'ἢι', 'ἣι', 'ἤι', 'ἥι', 'ἦι', 'ἧι', 'ἠι', 'ἡι', 'ἢι', 'ἣι', 'ἤι', 'ἥι', 'ἦι', 'ἧι', 'ὠι', 'ὡι', 'ὢι', 'ὣι', 'ὤι', 'ὥι', 'ὦι', 'ὧι', 'ὠι', 'ὡι', 'ὢι', 'ὣι', 'ὤι', 'ὥι', 'ὦι', 'ὧι', 'ὰι', 'αι', 'άι', 'ᾶ', 'ᾶι', 'αι', 'ὴι', 'ηι', 'ήι', 'ῆ', 'ῆι', 'ηι', 'ῒ', 'ῖ', 'ῗ', 'ῢ', 'ῤ', 'ῦ', 'ῧ', 'ὼι', 'ωι', 'ώι', 'ῶ', 'ῶι', 'ωι', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'st', 'st', 'մն', 'մե', 'մի', 'վն', 'մխ']; - - // the subset of https://github.com/unicode-org/cldr/blob/master/common/transforms/Latin-ASCII.xml that is not in NFKD - private const TRANSLIT_FROM = ['Æ', 'Ð', 'Ø', 'Þ', 'ß', 'æ', 'ð', 'ø', 'þ', 'Đ', 'đ', 'Ħ', 'ħ', 'ı', 'ĸ', 'Ŀ', 'ŀ', 'Ł', 'ł', 'ʼn', 'Ŋ', 'ŋ', 'Œ', 'œ', 'Ŧ', 'ŧ', 'ƀ', 'Ɓ', 'Ƃ', 'ƃ', 'Ƈ', 'ƈ', 'Ɖ', 'Ɗ', 'Ƌ', 'ƌ', 'Ɛ', 'Ƒ', 'ƒ', 'Ɠ', 'ƕ', 'Ɩ', 'Ɨ', 'Ƙ', 'ƙ', 'ƚ', 'Ɲ', 'ƞ', 'Ƣ', 'ƣ', 'Ƥ', 'ƥ', 'ƫ', 'Ƭ', 'ƭ', 'Ʈ', 'Ʋ', 'Ƴ', 'ƴ', 'Ƶ', 'ƶ', 'DŽ', 'Dž', 'dž', 'Ǥ', 'ǥ', 'ȡ', 'Ȥ', 'ȥ', 'ȴ', 'ȵ', 'ȶ', 'ȷ', 'ȸ', 'ȹ', 'Ⱥ', 'Ȼ', 'ȼ', 'Ƚ', 'Ⱦ', 'ȿ', 'ɀ', 'Ƀ', 'Ʉ', 'Ɇ', 'ɇ', 'Ɉ', 'ɉ', 'Ɍ', 'ɍ', 'Ɏ', 'ɏ', 'ɓ', 'ɕ', 'ɖ', 'ɗ', 'ɛ', 'ɟ', 'ɠ', 'ɡ', 'ɢ', 'ɦ', 'ɧ', 'ɨ', 'ɪ', 'ɫ', 'ɬ', 'ɭ', 'ɱ', 'ɲ', 'ɳ', 'ɴ', 'ɶ', 'ɼ', 'ɽ', 'ɾ', 'ʀ', 'ʂ', 'ʈ', 'ʉ', 'ʋ', 'ʏ', 'ʐ', 'ʑ', 'ʙ', 'ʛ', 'ʜ', 'ʝ', 'ʟ', 'ʠ', 'ʣ', 'ʥ', 'ʦ', 'ʪ', 'ʫ', 'ᴀ', 'ᴁ', 'ᴃ', 'ᴄ', 'ᴅ', 'ᴆ', 'ᴇ', 'ᴊ', 'ᴋ', 'ᴌ', 'ᴍ', 'ᴏ', 'ᴘ', 'ᴛ', 'ᴜ', 'ᴠ', 'ᴡ', 'ᴢ', 'ᵫ', 'ᵬ', 'ᵭ', 'ᵮ', 'ᵯ', 'ᵰ', 'ᵱ', 'ᵲ', 'ᵳ', 'ᵴ', 'ᵵ', 'ᵶ', 'ᵺ', 'ᵻ', 'ᵽ', 'ᵾ', 'ᶀ', 'ᶁ', 'ᶂ', 'ᶃ', 'ᶄ', 'ᶅ', 'ᶆ', 'ᶇ', 'ᶈ', 'ᶉ', 'ᶊ', 'ᶌ', 'ᶍ', 'ᶎ', 'ᶏ', 'ᶑ', 'ᶒ', 'ᶓ', 'ᶖ', 'ᶙ', 'ẚ', 'ẜ', 'ẝ', 'ẞ', 'Ỻ', 'ỻ', 'Ỽ', 'ỽ', 'Ỿ', 'ỿ', '©', '®', '₠', '₢', '₣', '₤', '₧', '₺', '₹', 'ℌ', '℞', '㎧', '㎮', '㏆', '㏗', '㏞', '㏟', '¼', '½', '¾', '⅓', '⅔', '⅕', '⅖', '⅗', '⅘', '⅙', '⅚', '⅛', '⅜', '⅝', '⅞', '⅟', '〇', '‘', '’', '‚', '‛', '“', '”', '„', '‟', '′', '″', '〝', '〞', '«', '»', '‹', '›', '‐', '‑', '‒', '–', '—', '―', '︱', '︲', '﹘', '‖', '⁄', '⁅', '⁆', '⁎', '、', '。', '〈', '〉', '《', '》', '〔', '〕', '〘', '〙', '〚', '〛', '︑', '︒', '︹', '︺', '︽', '︾', '︿', '﹀', '﹑', '﹝', '﹞', '⦅', '⦆', '。', '、', '×', '÷', '−', '∕', '∖', '∣', '∥', '≪', '≫', '⦅', '⦆']; - private const TRANSLIT_TO = ['AE', 'D', 'O', 'TH', 'ss', 'ae', 'd', 'o', 'th', 'D', 'd', 'H', 'h', 'i', 'q', 'L', 'l', 'L', 'l', '\'n', 'N', 'n', 'OE', 'oe', 'T', 't', 'b', 'B', 'B', 'b', 'C', 'c', 'D', 'D', 'D', 'd', 'E', 'F', 'f', 'G', 'hv', 'I', 'I', 'K', 'k', 'l', 'N', 'n', 'OI', 'oi', 'P', 'p', 't', 'T', 't', 'T', 'V', 'Y', 'y', 'Z', 'z', 'DZ', 'Dz', 'dz', 'G', 'g', 'd', 'Z', 'z', 'l', 'n', 't', 'j', 'db', 'qp', 'A', 'C', 'c', 'L', 'T', 's', 'z', 'B', 'U', 'E', 'e', 'J', 'j', 'R', 'r', 'Y', 'y', 'b', 'c', 'd', 'd', 'e', 'j', 'g', 'g', 'G', 'h', 'h', 'i', 'I', 'l', 'l', 'l', 'm', 'n', 'n', 'N', 'OE', 'r', 'r', 'r', 'R', 's', 't', 'u', 'v', 'Y', 'z', 'z', 'B', 'G', 'H', 'j', 'L', 'q', 'dz', 'dz', 'ts', 'ls', 'lz', 'A', 'AE', 'B', 'C', 'D', 'D', 'E', 'J', 'K', 'L', 'M', 'O', 'P', 'T', 'U', 'V', 'W', 'Z', 'ue', 'b', 'd', 'f', 'm', 'n', 'p', 'r', 'r', 's', 't', 'z', 'th', 'I', 'p', 'U', 'b', 'd', 'f', 'g', 'k', 'l', 'm', 'n', 'p', 'r', 's', 'v', 'x', 'z', 'a', 'd', 'e', 'e', 'i', 'u', 'a', 's', 's', 'SS', 'LL', 'll', 'V', 'v', 'Y', 'y', '(C)', '(R)', 'CE', 'Cr', 'Fr.', 'L.', 'Pts', 'TL', 'Rs', 'x', 'Rx', 'm/s', 'rad/s', 'C/kg', 'pH', 'V/m', 'A/m', ' 1/4', ' 1/2', ' 3/4', ' 1/3', ' 2/3', ' 1/5', ' 2/5', ' 3/5', ' 4/5', ' 1/6', ' 5/6', ' 1/8', ' 3/8', ' 5/8', ' 7/8', ' 1/', '0', '\'', '\'', ',', '\'', '"', '"', ',,', '"', '\'', '"', '"', '"', '<<', '>>', '<', '>', '-', '-', '-', '-', '-', '-', '-', '-', '-', '||', '/', '[', ']', '*', ',', '.', '<', '>', '<<', '>>', '[', ']', '[', ']', '[', ']', ',', '.', '[', ']', '<<', '>>', '<', '>', ',', '[', ']', '((', '))', '.', ',', '*', '/', '-', '/', '\\', '|', '||', '<<', '>>', '((', '))']; - - private static array $transliterators = []; - private static array $tableZero; - private static array $tableWide; - - public static function fromCodePoints(int ...$codes): static - { - $string = ''; - - foreach ($codes as $code) { - if (0x80 > $code %= 0x200000) { - $string .= \chr($code); - } elseif (0x800 > $code) { - $string .= \chr(0xC0 | $code >> 6).\chr(0x80 | $code & 0x3F); - } elseif (0x10000 > $code) { - $string .= \chr(0xE0 | $code >> 12).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F); - } else { - $string .= \chr(0xF0 | $code >> 18).\chr(0x80 | $code >> 12 & 0x3F).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F); - } - } - - return new static($string); - } - - /** - * Generic UTF-8 to ASCII transliteration. - * - * Install the intl extension for best results. - * - * @param string[]|\Transliterator[]|\Closure[] $rules See "*-Latin" rules from Transliterator::listIDs() - */ - public function ascii(array $rules = []): self - { - $str = clone $this; - $s = $str->string; - $str->string = ''; - - array_unshift($rules, 'nfd'); - $rules[] = 'latin-ascii'; - - if (\function_exists('transliterator_transliterate')) { - $rules[] = 'any-latin/bgn'; - } - - $rules[] = 'nfkd'; - $rules[] = '[:nonspacing mark:] remove'; - - while (\strlen($s) - 1 > $i = strspn($s, self::ASCII)) { - if (0 < --$i) { - $str->string .= substr($s, 0, $i); - $s = substr($s, $i); - } - - if (!$rule = array_shift($rules)) { - $rules = []; // An empty rule interrupts the next ones - } - - if ($rule instanceof \Transliterator) { - $s = $rule->transliterate($s); - } elseif ($rule instanceof \Closure) { - $s = $rule($s); - } elseif ($rule) { - if ('nfd' === $rule = strtolower($rule)) { - normalizer_is_normalized($s, self::NFD) ?: $s = normalizer_normalize($s, self::NFD); - } elseif ('nfkd' === $rule) { - normalizer_is_normalized($s, self::NFKD) ?: $s = normalizer_normalize($s, self::NFKD); - } elseif ('[:nonspacing mark:] remove' === $rule) { - $s = preg_replace('/\p{Mn}++/u', '', $s); - } elseif ('latin-ascii' === $rule) { - $s = str_replace(self::TRANSLIT_FROM, self::TRANSLIT_TO, $s); - } elseif ('de-ascii' === $rule) { - $s = preg_replace("/([AUO])\u{0308}(?=\p{Ll})/u", '$1e', $s); - $s = str_replace(["a\u{0308}", "o\u{0308}", "u\u{0308}", "A\u{0308}", "O\u{0308}", "U\u{0308}"], ['ae', 'oe', 'ue', 'AE', 'OE', 'UE'], $s); - } elseif (\function_exists('transliterator_transliterate')) { - if (null === $transliterator = self::$transliterators[$rule] ??= \Transliterator::create($rule)) { - if ('any-latin/bgn' === $rule) { - $rule = 'any-latin'; - $transliterator = self::$transliterators[$rule] ??= \Transliterator::create($rule); - } - - if (null === $transliterator) { - throw new InvalidArgumentException(\sprintf('Unknown transliteration rule "%s".', $rule)); - } - - self::$transliterators['any-latin/bgn'] = $transliterator; - } - - $s = $transliterator->transliterate($s); - } - } elseif (!\function_exists('iconv')) { - $s = preg_replace('/[^\x00-\x7F]/u', '?', $s); - } else { - $s = @preg_replace_callback('/[^\x00-\x7F]/u', static function ($c) { - $c = (string) iconv('UTF-8', 'ASCII//TRANSLIT', $c[0]); - - if ('' === $c && '' === iconv('UTF-8', 'ASCII//TRANSLIT', '²')) { - throw new \LogicException(\sprintf('"%s" requires a translit-able iconv implementation, try installing "gnu-libiconv" if you\'re using Alpine Linux.', static::class)); - } - - return 1 < \strlen($c) ? ltrim($c, '\'`"^~') : ('' !== $c ? $c : '?'); - }, $s); - } - } - - $str->string .= $s; - - return $str; - } - - public function camel(): static - { - $str = clone $this; - $str->string = str_replace(' ', '', preg_replace_callback('/\b.(?!\p{Lu})/u', static function ($m) { - static $i = 0; - - return 1 === ++$i ? ('İ' === $m[0] ? 'i̇' : mb_strtolower($m[0], 'UTF-8')) : mb_convert_case($m[0], \MB_CASE_TITLE, 'UTF-8'); - }, preg_replace('/[^\pL0-9]++/u', ' ', $this->string))); - - return $str; - } - - /** - * @return int[] - */ - public function codePointsAt(int $offset): array - { - $str = $this->slice($offset, 1); - - if ('' === $str->string) { - return []; - } - - $codePoints = []; - - foreach (preg_split('//u', $str->string, -1, \PREG_SPLIT_NO_EMPTY) as $c) { - $codePoints[] = mb_ord($c, 'UTF-8'); - } - - return $codePoints; - } - - public function folded(bool $compat = true): static - { - $str = clone $this; - - if (!$compat || !\defined('Normalizer::NFKC_CF')) { - $str->string = normalizer_normalize($str->string, $compat ? \Normalizer::NFKC : \Normalizer::NFC); - $str->string = mb_strtolower(str_replace(self::FOLD_FROM, self::FOLD_TO, $str->string), 'UTF-8'); - } else { - $str->string = normalizer_normalize($str->string, \Normalizer::NFKC_CF); - } - - return $str; - } - - public function join(array $strings, ?string $lastGlue = null): static - { - $str = clone $this; - - $tail = null !== $lastGlue && 1 < \count($strings) ? $lastGlue.array_pop($strings) : ''; - $str->string = implode($this->string, $strings).$tail; - - if (!preg_match('//u', $str->string)) { - throw new InvalidArgumentException('Invalid UTF-8 string.'); - } - - return $str; - } - - public function lower(): static - { - $str = clone $this; - $str->string = mb_strtolower(str_replace('İ', 'i̇', $str->string), 'UTF-8'); - - return $str; - } - - /** - * @param string $locale In the format language_region (e.g. tr_TR) - */ - public function localeLower(string $locale): static - { - if (null !== $transliterator = $this->getLocaleTransliterator($locale, 'Lower')) { - $str = clone $this; - $str->string = $transliterator->transliterate($str->string); - - return $str; - } - - return $this->lower(); - } - - public function match(string $regexp, int $flags = 0, int $offset = 0): array - { - $match = ((\PREG_PATTERN_ORDER | \PREG_SET_ORDER) & $flags) ? 'preg_match_all' : 'preg_match'; - - if ($this->ignoreCase) { - $regexp .= 'i'; - } - - set_error_handler(static fn ($t, $m) => throw new InvalidArgumentException($m)); - - try { - if (false === $match($regexp.'u', $this->string, $matches, $flags | \PREG_UNMATCHED_AS_NULL, $offset)) { - throw new RuntimeException('Matching failed with error: '.preg_last_error_msg()); - } - } finally { - restore_error_handler(); - } - - return $matches; - } - - public function normalize(int $form = self::NFC): static - { - if (!\in_array($form, [self::NFC, self::NFD, self::NFKC, self::NFKD])) { - throw new InvalidArgumentException('Unsupported normalization form.'); - } - - $str = clone $this; - normalizer_is_normalized($str->string, $form) ?: $str->string = normalizer_normalize($str->string, $form); - - return $str; - } - - public function padBoth(int $length, string $padStr = ' '): static - { - if ('' === $padStr || !preg_match('//u', $padStr)) { - throw new InvalidArgumentException('Invalid UTF-8 string.'); - } - - $pad = clone $this; - $pad->string = $padStr; - - return $this->pad($length, $pad, \STR_PAD_BOTH); - } - - public function padEnd(int $length, string $padStr = ' '): static - { - if ('' === $padStr || !preg_match('//u', $padStr)) { - throw new InvalidArgumentException('Invalid UTF-8 string.'); - } - - $pad = clone $this; - $pad->string = $padStr; - - return $this->pad($length, $pad, \STR_PAD_RIGHT); - } - - public function padStart(int $length, string $padStr = ' '): static - { - if ('' === $padStr || !preg_match('//u', $padStr)) { - throw new InvalidArgumentException('Invalid UTF-8 string.'); - } - - $pad = clone $this; - $pad->string = $padStr; - - return $this->pad($length, $pad, \STR_PAD_LEFT); - } - - public function replaceMatches(string $fromRegexp, string|callable $to): static - { - if ($this->ignoreCase) { - $fromRegexp .= 'i'; - } - - if (\is_array($to) || $to instanceof \Closure) { - $replace = 'preg_replace_callback'; - $to = static function (array $m) use ($to): string { - $to = $to($m); - - if ('' !== $to && (!\is_string($to) || !preg_match('//u', $to))) { - throw new InvalidArgumentException('Replace callback must return a valid UTF-8 string.'); - } - - return $to; - }; - } elseif ('' !== $to && !preg_match('//u', $to)) { - throw new InvalidArgumentException('Invalid UTF-8 string.'); - } else { - $replace = 'preg_replace'; - } - - set_error_handler(static fn ($t, $m) => throw new InvalidArgumentException($m)); - - try { - if (null === $string = $replace($fromRegexp.'u', $to, $this->string)) { - $lastError = preg_last_error(); - - foreach (get_defined_constants(true)['pcre'] as $k => $v) { - if ($lastError === $v && str_ends_with($k, '_ERROR')) { - throw new RuntimeException('Matching failed with '.$k.'.'); - } - } - - throw new RuntimeException('Matching failed with unknown error code.'); - } - } finally { - restore_error_handler(); - } - - $str = clone $this; - $str->string = $string; - - return $str; - } - - public function reverse(): static - { - $str = clone $this; - $str->string = implode('', array_reverse(preg_split('/(\X)/u', $str->string, -1, \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY))); - - return $str; - } - - public function snake(): static - { - $str = $this->camel(); - $str->string = mb_strtolower(preg_replace(['/(\p{Lu}+)(\p{Lu}\p{Ll})/u', '/([\p{Ll}0-9])(\p{Lu})/u'], '\1_\2', $str->string), 'UTF-8'); - - return $str; - } - - public function title(bool $allWords = false): static - { - $str = clone $this; - - $limit = $allWords ? -1 : 1; - - $str->string = preg_replace_callback('/\b./u', static fn (array $m): string => mb_convert_case($m[0], \MB_CASE_TITLE, 'UTF-8'), $str->string, $limit); - - return $str; - } - - /** - * @param string $locale In the format language_region (e.g. tr_TR) - */ - public function localeTitle(string $locale): static - { - if (null !== $transliterator = $this->getLocaleTransliterator($locale, 'Title')) { - $str = clone $this; - $str->string = $transliterator->transliterate($str->string); - - return $str; - } - - return $this->title(); - } - - public function trim(string $chars = " \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}"): static - { - if (" \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}" !== $chars && !preg_match('//u', $chars)) { - throw new InvalidArgumentException('Invalid UTF-8 chars.'); - } - $chars = preg_quote($chars); - - $str = clone $this; - $str->string = preg_replace("{^[$chars]++|[$chars]++$}uD", '', $str->string); - - return $str; - } - - public function trimEnd(string $chars = " \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}"): static - { - if (" \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}" !== $chars && !preg_match('//u', $chars)) { - throw new InvalidArgumentException('Invalid UTF-8 chars.'); - } - $chars = preg_quote($chars); - - $str = clone $this; - $str->string = preg_replace("{[$chars]++$}uD", '', $str->string); - - return $str; - } - - public function trimPrefix($prefix): static - { - if (!$this->ignoreCase) { - return parent::trimPrefix($prefix); - } - - $str = clone $this; - - if ($prefix instanceof \Traversable) { - $prefix = iterator_to_array($prefix, false); - } elseif ($prefix instanceof parent) { - $prefix = $prefix->string; - } - - $prefix = implode('|', array_map('preg_quote', (array) $prefix)); - $str->string = preg_replace("{^(?:$prefix)}iuD", '', $this->string); - - return $str; - } - - public function trimStart(string $chars = " \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}"): static - { - if (" \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}" !== $chars && !preg_match('//u', $chars)) { - throw new InvalidArgumentException('Invalid UTF-8 chars.'); - } - $chars = preg_quote($chars); - - $str = clone $this; - $str->string = preg_replace("{^[$chars]++}uD", '', $str->string); - - return $str; - } - - public function trimSuffix($suffix): static - { - if (!$this->ignoreCase) { - return parent::trimSuffix($suffix); - } - - $str = clone $this; - - if ($suffix instanceof \Traversable) { - $suffix = iterator_to_array($suffix, false); - } elseif ($suffix instanceof parent) { - $suffix = $suffix->string; - } - - $suffix = implode('|', array_map('preg_quote', (array) $suffix)); - $str->string = preg_replace("{(?:$suffix)$}iuD", '', $this->string); - - return $str; - } - - public function upper(): static - { - $str = clone $this; - $str->string = mb_strtoupper($str->string, 'UTF-8'); - - return $str; - } - - /** - * @param string $locale In the format language_region (e.g. tr_TR) - */ - public function localeUpper(string $locale): static - { - if (null !== $transliterator = $this->getLocaleTransliterator($locale, 'Upper')) { - $str = clone $this; - $str->string = $transliterator->transliterate($str->string); - - return $str; - } - - return $this->upper(); - } - - public function width(bool $ignoreAnsiDecoration = true): int - { - $width = 0; - $s = str_replace(["\x00", "\x05", "\x07"], '', $this->string); - - if (str_contains($s, "\r")) { - $s = str_replace(["\r\n", "\r"], "\n", $s); - } - - if (!$ignoreAnsiDecoration) { - $s = preg_replace('/[\p{Cc}\x7F]++/u', '', $s); - } - - foreach (explode("\n", $s) as $s) { - if ($ignoreAnsiDecoration) { - $s = preg_replace('/(?:\x1B(?: - \[ [\x30-\x3F]*+ [\x20-\x2F]*+ [\x40-\x7E] - | [P\]X^_] .*? \x1B\\\\ - | [\x41-\x7E] - )|[\p{Cc}\x7F]++)/xu', '', $s); - } - - $lineWidth = $this->wcswidth($s); - - if ($lineWidth > $width) { - $width = $lineWidth; - } - } - - return $width; - } - - private function pad(int $len, self $pad, int $type): static - { - $sLen = $this->length(); - - if ($len <= $sLen) { - return clone $this; - } - - $padLen = $pad->length(); - $freeLen = $len - $sLen; - $len = $freeLen % $padLen; - - switch ($type) { - case \STR_PAD_RIGHT: - return $this->append(str_repeat($pad->string, intdiv($freeLen, $padLen)).($len ? $pad->slice(0, $len) : '')); - - case \STR_PAD_LEFT: - return $this->prepend(str_repeat($pad->string, intdiv($freeLen, $padLen)).($len ? $pad->slice(0, $len) : '')); - - case \STR_PAD_BOTH: - $freeLen /= 2; - - $rightLen = ceil($freeLen); - $len = $rightLen % $padLen; - $str = $this->append(str_repeat($pad->string, intdiv($rightLen, $padLen)).($len ? $pad->slice(0, $len) : '')); - - $leftLen = floor($freeLen); - $len = $leftLen % $padLen; - - return $str->prepend(str_repeat($pad->string, intdiv($leftLen, $padLen)).($len ? $pad->slice(0, $len) : '')); - - default: - throw new InvalidArgumentException('Invalid padding type.'); - } - } - - /** - * Based on https://github.com/jquast/wcwidth, a Python implementation of https://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c. - */ - private function wcswidth(string $string): int - { - $width = 0; - - foreach (preg_split('//u', $string, -1, \PREG_SPLIT_NO_EMPTY) as $c) { - $codePoint = mb_ord($c, 'UTF-8'); - - if (0 === $codePoint // NULL - || 0x034F === $codePoint // COMBINING GRAPHEME JOINER - || (0x200B <= $codePoint && 0x200F >= $codePoint) // ZERO WIDTH SPACE to RIGHT-TO-LEFT MARK - || 0x2028 === $codePoint // LINE SEPARATOR - || 0x2029 === $codePoint // PARAGRAPH SEPARATOR - || (0x202A <= $codePoint && 0x202E >= $codePoint) // LEFT-TO-RIGHT EMBEDDING to RIGHT-TO-LEFT OVERRIDE - || (0x2060 <= $codePoint && 0x2063 >= $codePoint) // WORD JOINER to INVISIBLE SEPARATOR - ) { - continue; - } - - // Non printable characters - if (32 > $codePoint // C0 control characters - || (0x07F <= $codePoint && 0x0A0 > $codePoint) // C1 control characters and DEL - ) { - return -1; - } - - self::$tableZero ??= require __DIR__.'/Resources/data/wcswidth_table_zero.php'; - - if ($codePoint >= self::$tableZero[0][0] && $codePoint <= self::$tableZero[$ubound = \count(self::$tableZero) - 1][1]) { - $lbound = 0; - while ($ubound >= $lbound) { - $mid = floor(($lbound + $ubound) / 2); - - if ($codePoint > self::$tableZero[$mid][1]) { - $lbound = $mid + 1; - } elseif ($codePoint < self::$tableZero[$mid][0]) { - $ubound = $mid - 1; - } else { - continue 2; - } - } - } - - self::$tableWide ??= require __DIR__.'/Resources/data/wcswidth_table_wide.php'; - - if ($codePoint >= self::$tableWide[0][0] && $codePoint <= self::$tableWide[$ubound = \count(self::$tableWide) - 1][1]) { - $lbound = 0; - while ($ubound >= $lbound) { - $mid = floor(($lbound + $ubound) / 2); - - if ($codePoint > self::$tableWide[$mid][1]) { - $lbound = $mid + 1; - } elseif ($codePoint < self::$tableWide[$mid][0]) { - $ubound = $mid - 1; - } else { - $width += 2; - - continue 2; - } - } - } - - ++$width; - } - - return $width; - } - - private function getLocaleTransliterator(string $locale, string $id): ?\Transliterator - { - $rule = $locale.'-'.$id; - if (\array_key_exists($rule, self::$transliterators)) { - return self::$transliterators[$rule]; - } - - if (null !== $transliterator = self::$transliterators[$rule] = \Transliterator::create($rule)) { - return $transliterator; - } - - // Try to find a parent locale (nl_BE -> nl) - if (false === $i = strpos($locale, '_')) { - return null; - } - - $parentRule = substr_replace($locale, '-'.$id, $i); - - // Parent locale was already cached, return and store as current locale - if (\array_key_exists($parentRule, self::$transliterators)) { - return self::$transliterators[$rule] = self::$transliterators[$parentRule]; - } - - // Create transliterator based on parent locale and cache the result on both initial and parent locale values - $transliterator = \Transliterator::create($parentRule); - - return self::$transliterators[$rule] = self::$transliterators[$parentRule] = $transliterator; - } -} diff --git a/docker/streamline-src/vendor/symfony/string/ByteString.php b/docker/streamline-src/vendor/symfony/string/ByteString.php deleted file mode 100644 index 5cbfd6de..00000000 --- a/docker/streamline-src/vendor/symfony/string/ByteString.php +++ /dev/null @@ -1,490 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\String; - -use Random\Randomizer; -use Symfony\Component\String\Exception\ExceptionInterface; -use Symfony\Component\String\Exception\InvalidArgumentException; -use Symfony\Component\String\Exception\RuntimeException; - -/** - * Represents a binary-safe string of bytes. - * - * @author Nicolas Grekas - * @author Hugo Hamon - * - * @throws ExceptionInterface - */ -class ByteString extends AbstractString -{ - private const ALPHABET_ALPHANUMERIC = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'; - - public function __construct(string $string = '') - { - $this->string = $string; - } - - /* - * The following method was derived from code of the Hack Standard Library (v4.40 - 2020-05-03) - * - * https://github.com/hhvm/hsl/blob/80a42c02f036f72a42f0415e80d6b847f4bf62d5/src/random/private.php#L16 - * - * Code subject to the MIT license (https://github.com/hhvm/hsl/blob/master/LICENSE). - * - * Copyright (c) 2004-2020, Facebook, Inc. (https://www.facebook.com/) - */ - - public static function fromRandom(int $length = 16, ?string $alphabet = null): self - { - if ($length <= 0) { - throw new InvalidArgumentException(\sprintf('A strictly positive length is expected, "%d" given.', $length)); - } - - $alphabet ??= self::ALPHABET_ALPHANUMERIC; - $alphabetSize = \strlen($alphabet); - $bits = (int) ceil(log($alphabetSize, 2.0)); - if ($bits <= 0 || $bits > 56) { - throw new InvalidArgumentException('The length of the alphabet must in the [2^1, 2^56] range.'); - } - - if (\PHP_VERSION_ID >= 80300) { - return new static((new Randomizer())->getBytesFromString($alphabet, $length)); - } - - $ret = ''; - while ($length > 0) { - $urandomLength = (int) ceil(2 * $length * $bits / 8.0); - $data = random_bytes($urandomLength); - $unpackedData = 0; - $unpackedBits = 0; - for ($i = 0; $i < $urandomLength && $length > 0; ++$i) { - // Unpack 8 bits - $unpackedData = ($unpackedData << 8) | \ord($data[$i]); - $unpackedBits += 8; - - // While we have enough bits to select a character from the alphabet, keep - // consuming the random data - for (; $unpackedBits >= $bits && $length > 0; $unpackedBits -= $bits) { - $index = ($unpackedData & ((1 << $bits) - 1)); - $unpackedData >>= $bits; - // Unfortunately, the alphabet size is not necessarily a power of two. - // Worst case, it is 2^k + 1, which means we need (k+1) bits and we - // have around a 50% chance of missing as k gets larger - if ($index < $alphabetSize) { - $ret .= $alphabet[$index]; - --$length; - } - } - } - } - - return new static($ret); - } - - public function bytesAt(int $offset): array - { - $str = $this->string[$offset] ?? ''; - - return '' === $str ? [] : [\ord($str)]; - } - - public function append(string ...$suffix): static - { - $str = clone $this; - $str->string .= 1 >= \count($suffix) ? ($suffix[0] ?? '') : implode('', $suffix); - - return $str; - } - - public function camel(): static - { - $str = clone $this; - - $parts = explode(' ', trim(ucwords(preg_replace('/[^a-zA-Z0-9\x7f-\xff]++/', ' ', $this->string)))); - $parts[0] = 1 !== \strlen($parts[0]) && ctype_upper($parts[0]) ? $parts[0] : lcfirst($parts[0]); - $str->string = implode('', $parts); - - return $str; - } - - public function chunk(int $length = 1): array - { - if (1 > $length) { - throw new InvalidArgumentException('The chunk length must be greater than zero.'); - } - - if ('' === $this->string) { - return []; - } - - $str = clone $this; - $chunks = []; - - foreach (str_split($this->string, $length) as $chunk) { - $str->string = $chunk; - $chunks[] = clone $str; - } - - return $chunks; - } - - public function endsWith(string|iterable|AbstractString $suffix): bool - { - if ($suffix instanceof AbstractString) { - $suffix = $suffix->string; - } elseif (!\is_string($suffix)) { - return parent::endsWith($suffix); - } - - return '' !== $suffix && \strlen($this->string) >= \strlen($suffix) && 0 === substr_compare($this->string, $suffix, -\strlen($suffix), null, $this->ignoreCase); - } - - public function equalsTo(string|iterable|AbstractString $string): bool - { - if ($string instanceof AbstractString) { - $string = $string->string; - } elseif (!\is_string($string)) { - return parent::equalsTo($string); - } - - if ('' !== $string && $this->ignoreCase) { - return 0 === strcasecmp($string, $this->string); - } - - return $string === $this->string; - } - - public function folded(): static - { - $str = clone $this; - $str->string = strtolower($str->string); - - return $str; - } - - public function indexOf(string|iterable|AbstractString $needle, int $offset = 0): ?int - { - if ($needle instanceof AbstractString) { - $needle = $needle->string; - } elseif (!\is_string($needle)) { - return parent::indexOf($needle, $offset); - } - - if ('' === $needle) { - return null; - } - - $i = $this->ignoreCase ? stripos($this->string, $needle, $offset) : strpos($this->string, $needle, $offset); - - return false === $i ? null : $i; - } - - public function indexOfLast(string|iterable|AbstractString $needle, int $offset = 0): ?int - { - if ($needle instanceof AbstractString) { - $needle = $needle->string; - } elseif (!\is_string($needle)) { - return parent::indexOfLast($needle, $offset); - } - - if ('' === $needle) { - return null; - } - - $i = $this->ignoreCase ? strripos($this->string, $needle, $offset) : strrpos($this->string, $needle, $offset); - - return false === $i ? null : $i; - } - - public function isUtf8(): bool - { - return '' === $this->string || preg_match('//u', $this->string); - } - - public function join(array $strings, ?string $lastGlue = null): static - { - $str = clone $this; - - $tail = null !== $lastGlue && 1 < \count($strings) ? $lastGlue.array_pop($strings) : ''; - $str->string = implode($this->string, $strings).$tail; - - return $str; - } - - public function length(): int - { - return \strlen($this->string); - } - - public function lower(): static - { - $str = clone $this; - $str->string = strtolower($str->string); - - return $str; - } - - public function match(string $regexp, int $flags = 0, int $offset = 0): array - { - $match = ((\PREG_PATTERN_ORDER | \PREG_SET_ORDER) & $flags) ? 'preg_match_all' : 'preg_match'; - - if ($this->ignoreCase) { - $regexp .= 'i'; - } - - set_error_handler(static fn ($t, $m) => throw new InvalidArgumentException($m)); - - try { - if (false === $match($regexp, $this->string, $matches, $flags | \PREG_UNMATCHED_AS_NULL, $offset)) { - throw new RuntimeException('Matching failed with error: '.preg_last_error_msg()); - } - } finally { - restore_error_handler(); - } - - return $matches; - } - - public function padBoth(int $length, string $padStr = ' '): static - { - $str = clone $this; - $str->string = str_pad($this->string, $length, $padStr, \STR_PAD_BOTH); - - return $str; - } - - public function padEnd(int $length, string $padStr = ' '): static - { - $str = clone $this; - $str->string = str_pad($this->string, $length, $padStr, \STR_PAD_RIGHT); - - return $str; - } - - public function padStart(int $length, string $padStr = ' '): static - { - $str = clone $this; - $str->string = str_pad($this->string, $length, $padStr, \STR_PAD_LEFT); - - return $str; - } - - public function prepend(string ...$prefix): static - { - $str = clone $this; - $str->string = (1 >= \count($prefix) ? ($prefix[0] ?? '') : implode('', $prefix)).$str->string; - - return $str; - } - - public function replace(string $from, string $to): static - { - $str = clone $this; - - if ('' !== $from) { - $str->string = $this->ignoreCase ? str_ireplace($from, $to, $this->string) : str_replace($from, $to, $this->string); - } - - return $str; - } - - public function replaceMatches(string $fromRegexp, string|callable $to): static - { - if ($this->ignoreCase) { - $fromRegexp .= 'i'; - } - - $replace = \is_array($to) || $to instanceof \Closure ? 'preg_replace_callback' : 'preg_replace'; - - set_error_handler(static fn ($t, $m) => throw new InvalidArgumentException($m)); - - try { - if (null === $string = $replace($fromRegexp, $to, $this->string)) { - $lastError = preg_last_error(); - - foreach (get_defined_constants(true)['pcre'] as $k => $v) { - if ($lastError === $v && str_ends_with($k, '_ERROR')) { - throw new RuntimeException('Matching failed with '.$k.'.'); - } - } - - throw new RuntimeException('Matching failed with unknown error code.'); - } - } finally { - restore_error_handler(); - } - - $str = clone $this; - $str->string = $string; - - return $str; - } - - public function reverse(): static - { - $str = clone $this; - $str->string = strrev($str->string); - - return $str; - } - - public function slice(int $start = 0, ?int $length = null): static - { - $str = clone $this; - $str->string = substr($this->string, $start, $length ?? \PHP_INT_MAX); - - return $str; - } - - public function snake(): static - { - $str = $this->camel(); - $str->string = strtolower(preg_replace(['/([A-Z]+)([A-Z][a-z])/', '/([a-z\d])([A-Z])/'], '\1_\2', $str->string)); - - return $str; - } - - public function splice(string $replacement, int $start = 0, ?int $length = null): static - { - $str = clone $this; - $str->string = substr_replace($this->string, $replacement, $start, $length ?? \PHP_INT_MAX); - - return $str; - } - - public function split(string $delimiter, ?int $limit = null, ?int $flags = null): array - { - if (1 > $limit ??= \PHP_INT_MAX) { - throw new InvalidArgumentException('Split limit must be a positive integer.'); - } - - if ('' === $delimiter) { - throw new InvalidArgumentException('Split delimiter is empty.'); - } - - if (null !== $flags) { - return parent::split($delimiter, $limit, $flags); - } - - $str = clone $this; - $chunks = $this->ignoreCase - ? preg_split('{'.preg_quote($delimiter).'}iD', $this->string, $limit) - : explode($delimiter, $this->string, $limit); - - foreach ($chunks as &$chunk) { - $str->string = $chunk; - $chunk = clone $str; - } - - return $chunks; - } - - public function startsWith(string|iterable|AbstractString $prefix): bool - { - if ($prefix instanceof AbstractString) { - $prefix = $prefix->string; - } elseif (!\is_string($prefix)) { - return parent::startsWith($prefix); - } - - return '' !== $prefix && 0 === ($this->ignoreCase ? strncasecmp($this->string, $prefix, \strlen($prefix)) : strncmp($this->string, $prefix, \strlen($prefix))); - } - - public function title(bool $allWords = false): static - { - $str = clone $this; - $str->string = $allWords ? ucwords($str->string) : ucfirst($str->string); - - return $str; - } - - public function toUnicodeString(?string $fromEncoding = null): UnicodeString - { - return new UnicodeString($this->toCodePointString($fromEncoding)->string); - } - - public function toCodePointString(?string $fromEncoding = null): CodePointString - { - $u = new CodePointString(); - - if (\in_array($fromEncoding, [null, 'utf8', 'utf-8', 'UTF8', 'UTF-8'], true) && preg_match('//u', $this->string)) { - $u->string = $this->string; - - return $u; - } - - set_error_handler(static fn ($t, $m) => throw new InvalidArgumentException($m)); - - try { - try { - $validEncoding = false !== mb_detect_encoding($this->string, $fromEncoding ?? 'Windows-1252', true); - } catch (InvalidArgumentException $e) { - if (!\function_exists('iconv')) { - throw $e; - } - - $u->string = iconv($fromEncoding ?? 'Windows-1252', 'UTF-8', $this->string); - - return $u; - } - } finally { - restore_error_handler(); - } - - if (!$validEncoding) { - throw new InvalidArgumentException(\sprintf('Invalid "%s" string.', $fromEncoding ?? 'Windows-1252')); - } - - $u->string = mb_convert_encoding($this->string, 'UTF-8', $fromEncoding ?? 'Windows-1252'); - - return $u; - } - - public function trim(string $chars = " \t\n\r\0\x0B\x0C"): static - { - $str = clone $this; - $str->string = trim($str->string, $chars); - - return $str; - } - - public function trimEnd(string $chars = " \t\n\r\0\x0B\x0C"): static - { - $str = clone $this; - $str->string = rtrim($str->string, $chars); - - return $str; - } - - public function trimStart(string $chars = " \t\n\r\0\x0B\x0C"): static - { - $str = clone $this; - $str->string = ltrim($str->string, $chars); - - return $str; - } - - public function upper(): static - { - $str = clone $this; - $str->string = strtoupper($str->string); - - return $str; - } - - public function width(bool $ignoreAnsiDecoration = true): int - { - $string = preg_match('//u', $this->string) ? $this->string : preg_replace('/[\x80-\xFF]/', '?', $this->string); - - return (new CodePointString($string))->width($ignoreAnsiDecoration); - } -} diff --git a/docker/streamline-src/vendor/symfony/string/CHANGELOG.md b/docker/streamline-src/vendor/symfony/string/CHANGELOG.md deleted file mode 100644 index ff505b14..00000000 --- a/docker/streamline-src/vendor/symfony/string/CHANGELOG.md +++ /dev/null @@ -1,51 +0,0 @@ -CHANGELOG -========= - -7.2 ---- - - * Add `TruncateMode` enum to handle more truncate methods - * Add the `AbstractString::kebab()` method - -7.1 ---- - - * Add `localeLower()`, `localeUpper()`, `localeTitle()` methods to `AbstractUnicodeString` - -6.2 ---- - - * Add support for emoji in `AsciiSlugger` - -5.4 ---- - - * Add `trimSuffix()` and `trimPrefix()` methods - -5.3 ---- - - * Made `AsciiSlugger` fallback to parent locale's symbolsMap - -5.2.0 ------ - - * added a `FrenchInflector` class - -5.1.0 ------ - - * added the `AbstractString::reverse()` method - * made `AbstractString::width()` follow POSIX.1-2001 - * added `LazyString` which provides memoizing stringable objects - * The component is not marked as `@experimental` anymore - * added the `s()` helper method to get either an `UnicodeString` or `ByteString` instance, - depending of the input string UTF-8 compliancy - * added `$cut` parameter to `Symfony\Component\String\AbstractString::truncate()` - * added `AbstractString::containsAny()` - * allow passing a string of custom characters to `ByteString::fromRandom()` - -5.0.0 ------ - - * added the component as experimental diff --git a/docker/streamline-src/vendor/symfony/string/Inflector/EnglishInflector.php b/docker/streamline-src/vendor/symfony/string/Inflector/EnglishInflector.php deleted file mode 100644 index a5be28d6..00000000 --- a/docker/streamline-src/vendor/symfony/string/Inflector/EnglishInflector.php +++ /dev/null @@ -1,586 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\String\Inflector; - -final class EnglishInflector implements InflectorInterface -{ - /** - * Map English plural to singular suffixes. - * - * @see http://english-zone.com/spelling/plurals.html - */ - private const PLURAL_MAP = [ - // First entry: plural suffix, reversed - // Second entry: length of plural suffix - // Third entry: Whether the suffix may succeed a vowel - // Fourth entry: Whether the suffix may succeed a consonant - // Fifth entry: singular suffix, normal - - // bacteria (bacterium) - ['airetcab', 8, true, true, 'bacterium'], - - // corpora (corpus) - ['aroproc', 7, true, true, 'corpus'], - - // criteria (criterion) - ['airetirc', 8, true, true, 'criterion'], - - // curricula (curriculum) - ['alucirruc', 9, true, true, 'curriculum'], - - // quora (quorum) - ['arouq', 5, true, true, 'quorum'], - - // genera (genus) - ['areneg', 6, true, true, 'genus'], - - // media (medium) - ['aidem', 5, true, true, 'medium'], - - // memoranda (memorandum) - ['adnaromem', 9, true, true, 'memorandum'], - - // phenomena (phenomenon) - ['anemonehp', 9, true, true, 'phenomenon'], - - // strata (stratum) - ['atarts', 6, true, true, 'stratum'], - - // nebulae (nebula) - ['ea', 2, true, true, 'a'], - - // services (service) - ['secivres', 8, true, true, 'service'], - - // mice (mouse), lice (louse) - ['eci', 3, false, true, 'ouse'], - - // geese (goose) - ['esee', 4, false, true, 'oose'], - - // fungi (fungus), alumni (alumnus), syllabi (syllabus), radii (radius) - ['i', 1, true, true, 'us'], - - // men (man), women (woman) - ['nem', 3, true, true, 'man'], - - // children (child) - ['nerdlihc', 8, true, true, 'child'], - - // oxen (ox) - ['nexo', 4, false, false, 'ox'], - - // indices (index), appendices (appendix), prices (price) - ['seci', 4, false, true, ['ex', 'ix', 'ice']], - - // codes (code) - ['sedoc', 5, false, true, 'code'], - - // selfies (selfie) - ['seifles', 7, true, true, 'selfie'], - - // zombies (zombie) - ['seibmoz', 7, true, true, 'zombie'], - - // movies (movie) - ['seivom', 6, true, true, 'movie'], - - // names (name) - ['seman', 5, true, false, 'name'], - - // conspectuses (conspectus), prospectuses (prospectus) - ['sesutcep', 8, true, true, 'pectus'], - - // feet (foot) - ['teef', 4, true, true, 'foot'], - - // geese (goose) - ['eseeg', 5, true, true, 'goose'], - - // teeth (tooth) - ['hteet', 5, true, true, 'tooth'], - - // news (news) - ['swen', 4, true, true, 'news'], - - // series (series) - ['seires', 6, true, true, 'series'], - - // babies (baby) - ['sei', 3, false, true, 'y'], - - // accesses (access), addresses (address), kisses (kiss) - ['sess', 4, true, false, 'ss'], - - // statuses (status) - ['sesutats', 8, true, true, 'status'], - - // article (articles), ancle (ancles) - ['sel', 3, true, true, 'le'], - - // analyses (analysis), ellipses (ellipsis), fungi (fungus), - // neuroses (neurosis), theses (thesis), emphases (emphasis), - // oases (oasis), crises (crisis), houses (house), bases (base), - // atlases (atlas) - ['ses', 3, true, true, ['s', 'se', 'sis']], - - // objectives (objective), alternative (alternatives) - ['sevit', 5, true, true, 'tive'], - - // drives (drive) - ['sevird', 6, false, true, 'drive'], - - // lives (life), wives (wife) - ['sevi', 4, false, true, 'ife'], - - // moves (move) - ['sevom', 5, true, true, 'move'], - - // hooves (hoof), dwarves (dwarf), elves (elf), leaves (leaf), caves (cave), staves (staff) - ['sev', 3, true, true, ['f', 've', 'ff']], - - // axes (axis), axes (ax), axes (axe) - ['sexa', 4, false, false, ['ax', 'axe', 'axis']], - - // indexes (index), matrixes (matrix) - ['sex', 3, true, false, 'x'], - - // quizzes (quiz) - ['sezz', 4, true, false, 'z'], - - // bureaus (bureau) - ['suae', 4, false, true, 'eau'], - - // fees (fee), trees (tree), employees (employee) - ['see', 3, true, true, 'ee'], - - // edges (edge) - ['segd', 4, true, true, 'dge'], - - // roses (rose), garages (garage), cassettes (cassette), - // waltzes (waltz), heroes (hero), bushes (bush), arches (arch), - // shoes (shoe) - ['se', 2, true, true, ['', 'e']], - - // status (status) - ['sutats', 6, true, true, 'status'], - - // tags (tag) - ['s', 1, true, true, ''], - - // chateaux (chateau) - ['xuae', 4, false, true, 'eau'], - - // people (person) - ['elpoep', 6, true, true, 'person'], - ]; - - /** - * Map English singular to plural suffixes. - * - * @see http://english-zone.com/spelling/plurals.html - */ - private const SINGULAR_MAP = [ - // First entry: singular suffix, reversed - // Second entry: length of singular suffix - // Third entry: Whether the suffix may succeed a vowel - // Fourth entry: Whether the suffix may succeed a consonant - // Fifth entry: plural suffix, normal - - // axes (axis) - ['sixa', 4, false, false, 'axes'], - - // criterion (criteria) - ['airetirc', 8, false, false, 'criterion'], - - // nebulae (nebula) - ['aluben', 6, false, false, 'nebulae'], - - // children (child) - ['dlihc', 5, true, true, 'children'], - - // prices (price) - ['eci', 3, false, true, 'ices'], - - // services (service) - ['ecivres', 7, true, true, 'services'], - - // lives (life), wives (wife) - ['efi', 3, false, true, 'ives'], - - // selfies (selfie) - ['eifles', 6, true, true, 'selfies'], - - // movies (movie) - ['eivom', 5, true, true, 'movies'], - - // lice (louse) - ['esuol', 5, false, true, 'lice'], - - // mice (mouse) - ['esuom', 5, false, true, 'mice'], - - // geese (goose) - ['esoo', 4, false, true, 'eese'], - - // houses (house), bases (base) - ['es', 2, true, true, 'ses'], - - // geese (goose) - ['esoog', 5, true, true, 'geese'], - - // caves (cave) - ['ev', 2, true, true, 'ves'], - - // drives (drive) - ['evird', 5, false, true, 'drives'], - - // objectives (objective), alternative (alternatives) - ['evit', 4, true, true, 'tives'], - - // moves (move) - ['evom', 4, true, true, 'moves'], - - // staves (staff) - ['ffats', 5, true, true, 'staves'], - - // hooves (hoof), dwarves (dwarf), elves (elf), leaves (leaf) - ['ff', 2, true, true, 'ffs'], - - // hooves (hoof), dwarves (dwarf), elves (elf), leaves (leaf) - ['f', 1, true, true, ['fs', 'ves']], - - // arches (arch) - ['hc', 2, true, true, 'ches'], - - // bushes (bush) - ['hs', 2, true, true, 'shes'], - - // teeth (tooth) - ['htoot', 5, true, true, 'teeth'], - - // albums (album) - ['mubla', 5, true, true, 'albums'], - - // quorums (quorum) - ['murouq', 6, true, true, ['quora', 'quorums']], - - // bacteria (bacterium), curricula (curriculum), media (medium), memoranda (memorandum), phenomena (phenomenon), strata (stratum) - ['mu', 2, true, true, 'a'], - - // men (man), women (woman) - ['nam', 3, true, true, 'men'], - - // people (person) - ['nosrep', 6, true, true, ['persons', 'people']], - - // criteria (criterion) - ['noiretirc', 9, true, true, 'criteria'], - - // phenomena (phenomenon) - ['nonemonehp', 10, true, true, 'phenomena'], - - // echoes (echo) - ['ohce', 4, true, true, 'echoes'], - - // heroes (hero) - ['oreh', 4, true, true, 'heroes'], - - // atlases (atlas) - ['salta', 5, true, true, 'atlases'], - - // aliases (alias) - ['saila', 5, true, true, 'aliases'], - - // irises (iris) - ['siri', 4, true, true, 'irises'], - - // analyses (analysis), ellipses (ellipsis), neuroses (neurosis) - // theses (thesis), emphases (emphasis), oases (oasis), - // crises (crisis) - ['sis', 3, true, true, 'ses'], - - // accesses (access), addresses (address), kisses (kiss) - ['ss', 2, true, false, 'sses'], - - // syllabi (syllabus) - ['suballys', 8, true, true, 'syllabi'], - - // buses (bus) - ['sub', 3, true, true, 'buses'], - - // circuses (circus) - ['suc', 3, true, true, 'cuses'], - - // hippocampi (hippocampus) - ['supmacoppih', 11, false, false, 'hippocampi'], - - // campuses (campus) - ['sup', 3, true, true, 'puses'], - - // status (status) - ['sutats', 6, true, true, ['status', 'statuses']], - - // conspectuses (conspectus), prospectuses (prospectus) - ['sutcep', 6, true, true, 'pectuses'], - - // fungi (fungus), alumni (alumnus), syllabi (syllabus), radii (radius) - ['su', 2, true, true, 'i'], - - // news (news) - ['swen', 4, true, true, 'news'], - - // feet (foot) - ['toof', 4, true, true, 'feet'], - - // chateaux (chateau), bureaus (bureau) - ['uae', 3, false, true, ['eaus', 'eaux']], - - // oxen (ox) - ['xo', 2, false, false, 'oxen'], - - // hoaxes (hoax) - ['xaoh', 4, true, false, 'hoaxes'], - - // indices (index) - ['xedni', 5, false, true, ['indicies', 'indexes']], - - // fax (faxes, faxxes) - ['xaf', 3, true, true, ['faxes', 'faxxes']], - - // boxes (box) - ['xo', 2, false, true, 'oxes'], - - // indexes (index), matrixes (matrix), appendices (appendix) - ['x', 1, true, false, ['ces', 'xes']], - - // babies (baby) - ['y', 1, false, true, 'ies'], - - // quizzes (quiz) - ['ziuq', 4, true, false, 'quizzes'], - - // waltzes (waltz) - ['z', 1, true, true, 'zes'], - ]; - - /** - * A list of words which should not be inflected, reversed. - */ - private const UNINFLECTED = [ - '', - - // data - 'atad', - - // deer - 'reed', - - // equipment - 'tnempiuqe', - - // feedback - 'kcabdeef', - - // fish - 'hsif', - - // health - 'htlaeh', - - // history - 'yrotsih', - - // info - 'ofni', - - // information - 'noitamrofni', - - // money - 'yenom', - - // moose - 'esoom', - - // series - 'seires', - - // sheep - 'peehs', - - // species - 'seiceps', - - // traffic - 'ciffart', - - // aircraft - 'tfarcria', - - // hardware - 'erawdrah', - ]; - - public function singularize(string $plural): array - { - $pluralRev = strrev($plural); - $lowerPluralRev = strtolower($pluralRev); - $pluralLength = \strlen($lowerPluralRev); - - // Check if the word is one which is not inflected, return early if so - if (\in_array($lowerPluralRev, self::UNINFLECTED, true)) { - return [$plural]; - } - - // The outer loop iterates over the entries of the plural table - // The inner loop $j iterates over the characters of the plural suffix - // in the plural table to compare them with the characters of the actual - // given plural suffix - foreach (self::PLURAL_MAP as $map) { - $suffix = $map[0]; - $suffixLength = $map[1]; - $j = 0; - - // Compare characters in the plural table and of the suffix of the - // given plural one by one - while ($suffix[$j] === $lowerPluralRev[$j]) { - // Let $j point to the next character - ++$j; - - // Successfully compared the last character - // Add an entry with the singular suffix to the singular array - if ($j === $suffixLength) { - // Is there any character preceding the suffix in the plural string? - if ($j < $pluralLength) { - $nextIsVowel = str_contains('aeiou', $lowerPluralRev[$j]); - - if (!$map[2] && $nextIsVowel) { - // suffix may not succeed a vowel but next char is one - break; - } - - if (!$map[3] && !$nextIsVowel) { - // suffix may not succeed a consonant but next char is one - break; - } - } - - $newBase = substr($plural, 0, $pluralLength - $suffixLength); - $newSuffix = $map[4]; - - // Check whether the first character in the plural suffix - // is uppercased. If yes, uppercase the first character in - // the singular suffix too - $firstUpper = ctype_upper($pluralRev[$j - 1]); - - if (\is_array($newSuffix)) { - $singulars = []; - - foreach ($newSuffix as $newSuffixEntry) { - $singulars[] = $newBase.($firstUpper ? ucfirst($newSuffixEntry) : $newSuffixEntry); - } - - return $singulars; - } - - return [$newBase.($firstUpper ? ucfirst($newSuffix) : $newSuffix)]; - } - - // Suffix is longer than word - if ($j === $pluralLength) { - break; - } - } - } - - // Assume that plural and singular is identical - return [$plural]; - } - - public function pluralize(string $singular): array - { - $singularRev = strrev($singular); - $lowerSingularRev = strtolower($singularRev); - $singularLength = \strlen($lowerSingularRev); - - // Check if the word is one which is not inflected, return early if so - if (\in_array($lowerSingularRev, self::UNINFLECTED, true)) { - return [$singular]; - } - - // The outer loop iterates over the entries of the singular table - // The inner loop $j iterates over the characters of the singular suffix - // in the singular table to compare them with the characters of the actual - // given singular suffix - foreach (self::SINGULAR_MAP as $map) { - $suffix = $map[0]; - $suffixLength = $map[1]; - $j = 0; - - // Compare characters in the singular table and of the suffix of the - // given plural one by one - - while ($suffix[$j] === $lowerSingularRev[$j]) { - // Let $j point to the next character - ++$j; - - // Successfully compared the last character - // Add an entry with the plural suffix to the plural array - if ($j === $suffixLength) { - // Is there any character preceding the suffix in the plural string? - if ($j < $singularLength) { - $nextIsVowel = str_contains('aeiou', $lowerSingularRev[$j]); - - if (!$map[2] && $nextIsVowel) { - // suffix may not succeed a vowel but next char is one - break; - } - - if (!$map[3] && !$nextIsVowel) { - // suffix may not succeed a consonant but next char is one - break; - } - } - - $newBase = substr($singular, 0, $singularLength - $suffixLength); - $newSuffix = $map[4]; - - // Check whether the first character in the singular suffix - // is uppercased. If yes, uppercase the first character in - // the singular suffix too - $firstUpper = ctype_upper($singularRev[$j - 1]); - - if (\is_array($newSuffix)) { - $plurals = []; - - foreach ($newSuffix as $newSuffixEntry) { - $plurals[] = $newBase.($firstUpper ? ucfirst($newSuffixEntry) : $newSuffixEntry); - } - - return $plurals; - } - - return [$newBase.($firstUpper ? ucfirst($newSuffix) : $newSuffix)]; - } - - // Suffix is longer than word - if ($j === $singularLength) { - break; - } - } - } - - // Assume that plural is singular with a trailing `s` - return [$singular.'s']; - } -} diff --git a/docker/streamline-src/vendor/symfony/string/LazyString.php b/docker/streamline-src/vendor/symfony/string/LazyString.php deleted file mode 100644 index b86d7337..00000000 --- a/docker/streamline-src/vendor/symfony/string/LazyString.php +++ /dev/null @@ -1,145 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\String; - -/** - * A string whose value is computed lazily by a callback. - * - * @author Nicolas Grekas - */ -class LazyString implements \Stringable, \JsonSerializable -{ - private \Closure|string $value; - - /** - * @param callable|array $callback A callable or a [Closure, method] lazy-callable - */ - public static function fromCallable(callable|array $callback, mixed ...$arguments): static - { - if (\is_array($callback) && !\is_callable($callback) && !(($callback[0] ?? null) instanceof \Closure || 2 < \count($callback))) { - throw new \TypeError(\sprintf('Argument 1 passed to "%s()" must be a callable or a [Closure, method] lazy-callable, "%s" given.', __METHOD__, '['.implode(', ', array_map('get_debug_type', $callback)).']')); - } - - $lazyString = new static(); - $lazyString->value = static function () use (&$callback, &$arguments): string { - static $value; - - if (null !== $arguments) { - if (!\is_callable($callback)) { - $callback[0] = $callback[0](); - $callback[1] ??= '__invoke'; - } - $value = $callback(...$arguments); - $callback = !\is_scalar($value) && !$value instanceof \Stringable ? self::getPrettyName($callback) : 'callable'; - $arguments = null; - } - - return $value ?? ''; - }; - - return $lazyString; - } - - public static function fromStringable(string|int|float|bool|\Stringable $value): static - { - if (\is_object($value)) { - return static::fromCallable($value->__toString(...)); - } - - $lazyString = new static(); - $lazyString->value = (string) $value; - - return $lazyString; - } - - /** - * Tells whether the provided value can be cast to string. - */ - final public static function isStringable(mixed $value): bool - { - return \is_string($value) || $value instanceof \Stringable || \is_scalar($value); - } - - /** - * Casts scalars and stringable objects to strings. - * - * @throws \TypeError When the provided value is not stringable - */ - final public static function resolve(\Stringable|string|int|float|bool $value): string - { - return $value; - } - - public function __toString(): string - { - if (\is_string($this->value)) { - return $this->value; - } - - try { - return $this->value = ($this->value)(); - } catch (\Throwable $e) { - if (\TypeError::class === $e::class && __FILE__ === $e->getFile()) { - $type = explode(', ', $e->getMessage()); - $type = substr(array_pop($type), 0, -\strlen(' returned')); - $r = new \ReflectionFunction($this->value); - $callback = $r->getStaticVariables()['callback']; - - $e = new \TypeError(\sprintf('Return value of %s() passed to %s::fromCallable() must be of the type string, %s returned.', $callback, static::class, $type)); - } - - throw $e; - } - } - - public function __sleep(): array - { - $this->__toString(); - - return ['value']; - } - - public function jsonSerialize(): string - { - return $this->__toString(); - } - - private function __construct() - { - } - - private static function getPrettyName(callable $callback): string - { - if (\is_string($callback)) { - return $callback; - } - - if (\is_array($callback)) { - $class = \is_object($callback[0]) ? get_debug_type($callback[0]) : $callback[0]; - $method = $callback[1]; - } elseif ($callback instanceof \Closure) { - $r = new \ReflectionFunction($callback); - - if ($r->isAnonymous() || !$class = $r->getClosureCalledClass()) { - return $r->name; - } - - $class = $class->name; - $method = $r->name; - } else { - $class = get_debug_type($callback); - $method = '__invoke'; - } - - return $class.'::'.$method; - } -} diff --git a/docker/streamline-src/vendor/symfony/string/Resources/data/wcswidth_table_wide.php b/docker/streamline-src/vendor/symfony/string/Resources/data/wcswidth_table_wide.php deleted file mode 100644 index 6a750942..00000000 --- a/docker/streamline-src/vendor/symfony/string/Resources/data/wcswidth_table_wide.php +++ /dev/null @@ -1,1175 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\String\Slugger; - -use Symfony\Component\Emoji\EmojiTransliterator; -use Symfony\Component\String\AbstractUnicodeString; -use Symfony\Component\String\UnicodeString; -use Symfony\Contracts\Translation\LocaleAwareInterface; - -if (!interface_exists(LocaleAwareInterface::class)) { - throw new \LogicException('You cannot use the "Symfony\Component\String\Slugger\AsciiSlugger" as the "symfony/translation-contracts" package is not installed. Try running "composer require symfony/translation-contracts".'); -} - -/** - * @author Titouan Galopin - */ -class AsciiSlugger implements SluggerInterface, LocaleAwareInterface -{ - private const LOCALE_TO_TRANSLITERATOR_ID = [ - 'am' => 'Amharic-Latin', - 'ar' => 'Arabic-Latin', - 'az' => 'Azerbaijani-Latin', - 'be' => 'Belarusian-Latin', - 'bg' => 'Bulgarian-Latin', - 'bn' => 'Bengali-Latin', - 'de' => 'de-ASCII', - 'el' => 'Greek-Latin', - 'fa' => 'Persian-Latin', - 'he' => 'Hebrew-Latin', - 'hy' => 'Armenian-Latin', - 'ka' => 'Georgian-Latin', - 'kk' => 'Kazakh-Latin', - 'ky' => 'Kirghiz-Latin', - 'ko' => 'Korean-Latin', - 'mk' => 'Macedonian-Latin', - 'mn' => 'Mongolian-Latin', - 'or' => 'Oriya-Latin', - 'ps' => 'Pashto-Latin', - 'ru' => 'Russian-Latin', - 'sr' => 'Serbian-Latin', - 'sr_Cyrl' => 'Serbian-Latin', - 'th' => 'Thai-Latin', - 'tk' => 'Turkmen-Latin', - 'uk' => 'Ukrainian-Latin', - 'uz' => 'Uzbek-Latin', - 'zh' => 'Han-Latin', - ]; - - private \Closure|array $symbolsMap = [ - 'en' => ['@' => 'at', '&' => 'and'], - ]; - private bool|string $emoji = false; - - /** - * Cache of transliterators per locale. - * - * @var \Transliterator[] - */ - private array $transliterators = []; - - public function __construct( - private ?string $defaultLocale = null, - array|\Closure|null $symbolsMap = null, - ) { - $this->symbolsMap = $symbolsMap ?? $this->symbolsMap; - } - - public function setLocale(string $locale): void - { - $this->defaultLocale = $locale; - } - - public function getLocale(): string - { - return $this->defaultLocale; - } - - /** - * @param bool|string $emoji true will use the same locale, - * false will disable emoji, - * and a string to use a specific locale - */ - public function withEmoji(bool|string $emoji = true): static - { - if (false !== $emoji && !class_exists(EmojiTransliterator::class)) { - throw new \LogicException(\sprintf('You cannot use the "%s()" method as the "symfony/emoji" package is not installed. Try running "composer require symfony/emoji".', __METHOD__)); - } - - $new = clone $this; - $new->emoji = $emoji; - - return $new; - } - - public function slug(string $string, string $separator = '-', ?string $locale = null): AbstractUnicodeString - { - $locale ??= $this->defaultLocale; - - $transliterator = []; - if ($locale && ('de' === $locale || str_starts_with($locale, 'de_'))) { - // Use the shortcut for German in UnicodeString::ascii() if possible (faster and no requirement on intl) - $transliterator = ['de-ASCII']; - } elseif (\function_exists('transliterator_transliterate') && $locale) { - $transliterator = (array) $this->createTransliterator($locale); - } - - if ($emojiTransliterator = $this->createEmojiTransliterator($locale)) { - $transliterator[] = $emojiTransliterator; - } - - if ($this->symbolsMap instanceof \Closure) { - // If the symbols map is passed as a closure, there is no need to fallback to the parent locale - // as the closure can just provide substitutions for all locales of interest. - $symbolsMap = $this->symbolsMap; - array_unshift($transliterator, static fn ($s) => $symbolsMap($s, $locale)); - } - - $unicodeString = (new UnicodeString($string))->ascii($transliterator); - - if (\is_array($this->symbolsMap)) { - $map = null; - if (isset($this->symbolsMap[$locale])) { - $map = $this->symbolsMap[$locale]; - } else { - $parent = self::getParentLocale($locale); - if ($parent && isset($this->symbolsMap[$parent])) { - $map = $this->symbolsMap[$parent]; - } - } - if ($map) { - foreach ($map as $char => $replace) { - $unicodeString = $unicodeString->replace($char, ' '.$replace.' '); - } - } - } - - return $unicodeString - ->replaceMatches('/[^A-Za-z0-9]++/', $separator) - ->trim($separator) - ; - } - - private function createTransliterator(string $locale): ?\Transliterator - { - if (\array_key_exists($locale, $this->transliterators)) { - return $this->transliterators[$locale]; - } - - // Exact locale supported, cache and return - if ($id = self::LOCALE_TO_TRANSLITERATOR_ID[$locale] ?? null) { - return $this->transliterators[$locale] = \Transliterator::create($id.'/BGN') ?? \Transliterator::create($id); - } - - // Locale not supported and no parent, fallback to any-latin - if (!$parent = self::getParentLocale($locale)) { - return $this->transliterators[$locale] = null; - } - - // Try to use the parent locale (ie. try "de" for "de_AT") and cache both locales - if ($id = self::LOCALE_TO_TRANSLITERATOR_ID[$parent] ?? null) { - $transliterator = \Transliterator::create($id.'/BGN') ?? \Transliterator::create($id); - } - - return $this->transliterators[$locale] = $this->transliterators[$parent] = $transliterator ?? null; - } - - private function createEmojiTransliterator(?string $locale): ?EmojiTransliterator - { - if (\is_string($this->emoji)) { - $locale = $this->emoji; - } elseif (!$this->emoji) { - return null; - } - - while (null !== $locale) { - try { - return EmojiTransliterator::create("emoji-$locale"); - } catch (\IntlException) { - $locale = self::getParentLocale($locale); - } - } - - return null; - } - - private static function getParentLocale(?string $locale): ?string - { - if (!$locale) { - return null; - } - if (false === $str = strrchr($locale, '_')) { - // no parent locale - return null; - } - - return substr($locale, 0, -\strlen($str)); - } -} diff --git a/docker/streamline-src/vendor/symfony/string/UnicodeString.php b/docker/streamline-src/vendor/symfony/string/UnicodeString.php deleted file mode 100644 index b458de0c..00000000 --- a/docker/streamline-src/vendor/symfony/string/UnicodeString.php +++ /dev/null @@ -1,382 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\String; - -use Symfony\Component\String\Exception\ExceptionInterface; -use Symfony\Component\String\Exception\InvalidArgumentException; - -/** - * Represents a string of Unicode grapheme clusters encoded as UTF-8. - * - * A letter followed by combining characters (accents typically) form what Unicode defines - * as a grapheme cluster: a character as humans mean it in written texts. This class knows - * about the concept and won't split a letter apart from its combining accents. It also - * ensures all string comparisons happen on their canonically-composed representation, - * ignoring e.g. the order in which accents are listed when a letter has many of them. - * - * @see https://unicode.org/reports/tr15/ - * - * @author Nicolas Grekas - * @author Hugo Hamon - * - * @throws ExceptionInterface - */ -class UnicodeString extends AbstractUnicodeString -{ - public function __construct(string $string = '') - { - if ('' === $string || normalizer_is_normalized($this->string = $string)) { - return; - } - - if (false === $string = normalizer_normalize($string)) { - throw new InvalidArgumentException('Invalid UTF-8 string.'); - } - - $this->string = $string; - } - - public function append(string ...$suffix): static - { - $str = clone $this; - $str->string = $this->string.(1 >= \count($suffix) ? ($suffix[0] ?? '') : implode('', $suffix)); - - if (normalizer_is_normalized($str->string)) { - return $str; - } - - if (false === $string = normalizer_normalize($str->string)) { - throw new InvalidArgumentException('Invalid UTF-8 string.'); - } - - $str->string = $string; - - return $str; - } - - public function chunk(int $length = 1): array - { - if (1 > $length) { - throw new InvalidArgumentException('The chunk length must be greater than zero.'); - } - - if ('' === $this->string) { - return []; - } - - $rx = '/('; - while (65535 < $length) { - $rx .= '\X{65535}'; - $length -= 65535; - } - $rx .= '\X{'.$length.'})/u'; - - $str = clone $this; - $chunks = []; - - foreach (preg_split($rx, $this->string, -1, \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY) as $chunk) { - $str->string = $chunk; - $chunks[] = clone $str; - } - - return $chunks; - } - - public function endsWith(string|iterable|AbstractString $suffix): bool - { - if ($suffix instanceof AbstractString) { - $suffix = $suffix->string; - } elseif (!\is_string($suffix)) { - return parent::endsWith($suffix); - } - - $form = null === $this->ignoreCase ? \Normalizer::NFD : \Normalizer::NFC; - normalizer_is_normalized($suffix, $form) ?: $suffix = normalizer_normalize($suffix, $form); - - if ('' === $suffix || false === $suffix) { - return false; - } - - if ($this->ignoreCase) { - return 0 === mb_stripos(grapheme_extract($this->string, \strlen($suffix), \GRAPHEME_EXTR_MAXBYTES, \strlen($this->string) - \strlen($suffix)), $suffix, 0, 'UTF-8'); - } - - return $suffix === grapheme_extract($this->string, \strlen($suffix), \GRAPHEME_EXTR_MAXBYTES, \strlen($this->string) - \strlen($suffix)); - } - - public function equalsTo(string|iterable|AbstractString $string): bool - { - if ($string instanceof AbstractString) { - $string = $string->string; - } elseif (!\is_string($string)) { - return parent::equalsTo($string); - } - - $form = null === $this->ignoreCase ? \Normalizer::NFD : \Normalizer::NFC; - normalizer_is_normalized($string, $form) ?: $string = normalizer_normalize($string, $form); - - if ('' !== $string && false !== $string && $this->ignoreCase) { - return \strlen($string) === \strlen($this->string) && 0 === mb_stripos($this->string, $string, 0, 'UTF-8'); - } - - return $string === $this->string; - } - - public function indexOf(string|iterable|AbstractString $needle, int $offset = 0): ?int - { - if ($needle instanceof AbstractString) { - $needle = $needle->string; - } elseif (!\is_string($needle)) { - return parent::indexOf($needle, $offset); - } - - $form = null === $this->ignoreCase ? \Normalizer::NFD : \Normalizer::NFC; - normalizer_is_normalized($needle, $form) ?: $needle = normalizer_normalize($needle, $form); - - if ('' === $needle || false === $needle) { - return null; - } - - try { - $i = $this->ignoreCase ? grapheme_stripos($this->string, $needle, $offset) : grapheme_strpos($this->string, $needle, $offset); - } catch (\ValueError) { - return null; - } - - return false === $i ? null : $i; - } - - public function indexOfLast(string|iterable|AbstractString $needle, int $offset = 0): ?int - { - if ($needle instanceof AbstractString) { - $needle = $needle->string; - } elseif (!\is_string($needle)) { - return parent::indexOfLast($needle, $offset); - } - - $form = null === $this->ignoreCase ? \Normalizer::NFD : \Normalizer::NFC; - normalizer_is_normalized($needle, $form) ?: $needle = normalizer_normalize($needle, $form); - - if ('' === $needle || false === $needle) { - return null; - } - - $string = $this->string; - - if (0 > $offset) { - // workaround https://bugs.php.net/74264 - if (0 > $offset += grapheme_strlen($needle)) { - $string = grapheme_substr($string, 0, $offset); - } - $offset = 0; - } - - $i = $this->ignoreCase ? grapheme_strripos($string, $needle, $offset) : grapheme_strrpos($string, $needle, $offset); - - return false === $i ? null : $i; - } - - public function join(array $strings, ?string $lastGlue = null): static - { - $str = parent::join($strings, $lastGlue); - normalizer_is_normalized($str->string) ?: $str->string = normalizer_normalize($str->string); - - return $str; - } - - public function length(): int - { - return grapheme_strlen($this->string); - } - - public function normalize(int $form = self::NFC): static - { - $str = clone $this; - - if (\in_array($form, [self::NFC, self::NFKC], true)) { - normalizer_is_normalized($str->string, $form) ?: $str->string = normalizer_normalize($str->string, $form); - } elseif (!\in_array($form, [self::NFD, self::NFKD], true)) { - throw new InvalidArgumentException('Unsupported normalization form.'); - } elseif (!normalizer_is_normalized($str->string, $form)) { - $str->string = normalizer_normalize($str->string, $form); - $str->ignoreCase = null; - } - - return $str; - } - - public function prepend(string ...$prefix): static - { - $str = clone $this; - $str->string = (1 >= \count($prefix) ? ($prefix[0] ?? '') : implode('', $prefix)).$this->string; - - if (normalizer_is_normalized($str->string)) { - return $str; - } - - if (false === $string = normalizer_normalize($str->string)) { - throw new InvalidArgumentException('Invalid UTF-8 string.'); - } - - $str->string = $string; - - return $str; - } - - public function replace(string $from, string $to): static - { - $str = clone $this; - normalizer_is_normalized($from) ?: $from = normalizer_normalize($from); - - if ('' !== $from && false !== $from) { - $tail = $str->string; - $result = ''; - $indexOf = $this->ignoreCase ? 'grapheme_stripos' : 'grapheme_strpos'; - - while ('' !== $tail && false !== $i = $indexOf($tail, $from)) { - $slice = grapheme_substr($tail, 0, $i); - $result .= $slice.$to; - $tail = substr($tail, \strlen($slice) + \strlen($from)); - } - - $str->string = $result.$tail; - - if (normalizer_is_normalized($str->string)) { - return $str; - } - - if (false === $string = normalizer_normalize($str->string)) { - throw new InvalidArgumentException('Invalid UTF-8 string.'); - } - - $str->string = $string; - } - - return $str; - } - - public function replaceMatches(string $fromRegexp, string|callable $to): static - { - $str = parent::replaceMatches($fromRegexp, $to); - normalizer_is_normalized($str->string) ?: $str->string = normalizer_normalize($str->string); - - return $str; - } - - public function slice(int $start = 0, ?int $length = null): static - { - $str = clone $this; - - $str->string = (string) grapheme_substr($this->string, $start, $length ?? 2147483647); - - return $str; - } - - public function splice(string $replacement, int $start = 0, ?int $length = null): static - { - $str = clone $this; - - $start = $start ? \strlen(grapheme_substr($this->string, 0, $start)) : 0; - $length = $length ? \strlen(grapheme_substr($this->string, $start, $length)) : $length; - $str->string = substr_replace($this->string, $replacement, $start, $length ?? 2147483647); - - if (normalizer_is_normalized($str->string)) { - return $str; - } - - if (false === $string = normalizer_normalize($str->string)) { - throw new InvalidArgumentException('Invalid UTF-8 string.'); - } - - $str->string = $string; - - return $str; - } - - public function split(string $delimiter, ?int $limit = null, ?int $flags = null): array - { - if (1 > $limit ??= 2147483647) { - throw new InvalidArgumentException('Split limit must be a positive integer.'); - } - - if ('' === $delimiter) { - throw new InvalidArgumentException('Split delimiter is empty.'); - } - - if (null !== $flags) { - return parent::split($delimiter.'u', $limit, $flags); - } - - normalizer_is_normalized($delimiter) ?: $delimiter = normalizer_normalize($delimiter); - - if (false === $delimiter) { - throw new InvalidArgumentException('Split delimiter is not a valid UTF-8 string.'); - } - - $str = clone $this; - $tail = $this->string; - $chunks = []; - $indexOf = $this->ignoreCase ? 'grapheme_stripos' : 'grapheme_strpos'; - - while (1 < $limit && false !== $i = $indexOf($tail, $delimiter)) { - $str->string = grapheme_substr($tail, 0, $i); - $chunks[] = clone $str; - $tail = substr($tail, \strlen($str->string) + \strlen($delimiter)); - --$limit; - } - - $str->string = $tail; - $chunks[] = clone $str; - - return $chunks; - } - - public function startsWith(string|iterable|AbstractString $prefix): bool - { - if ($prefix instanceof AbstractString) { - $prefix = $prefix->string; - } elseif (!\is_string($prefix)) { - return parent::startsWith($prefix); - } - - $form = null === $this->ignoreCase ? \Normalizer::NFD : \Normalizer::NFC; - normalizer_is_normalized($prefix, $form) ?: $prefix = normalizer_normalize($prefix, $form); - - if ('' === $prefix || false === $prefix) { - return false; - } - - if ($this->ignoreCase) { - return 0 === mb_stripos(grapheme_extract($this->string, \strlen($prefix), \GRAPHEME_EXTR_MAXBYTES), $prefix, 0, 'UTF-8'); - } - - return $prefix === grapheme_extract($this->string, \strlen($prefix), \GRAPHEME_EXTR_MAXBYTES); - } - - public function __wakeup(): void - { - if (!\is_string($this->string)) { - throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); - } - - normalizer_is_normalized($this->string) ?: $this->string = normalizer_normalize($this->string); - } - - public function __clone() - { - if (null === $this->ignoreCase) { - normalizer_is_normalized($this->string) ?: $this->string = normalizer_normalize($this->string); - } - - $this->ignoreCase = false; - } -} diff --git a/docker/streamline-src/vendor/symfony/string/composer.json b/docker/streamline-src/vendor/symfony/string/composer.json deleted file mode 100644 index 10d0ee62..00000000 --- a/docker/streamline-src/vendor/symfony/string/composer.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "symfony/string", - "type": "library", - "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "keywords": ["string", "utf8", "utf-8", "grapheme", "i18n", "unicode"], - "homepage": "https://symfony.com", - "license": "MIT", - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "require": { - "php": ">=8.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "require-dev": { - "symfony/error-handler": "^6.4|^7.0", - "symfony/emoji": "^7.1", - "symfony/http-client": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", - "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^6.4|^7.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.5" - }, - "autoload": { - "psr-4": { "Symfony\\Component\\String\\": "" }, - "files": [ "Resources/functions.php" ], - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "minimum-stability": "dev" -} diff --git a/docker/streamline-src/vendor/symfony/translation-contracts/TranslatableInterface.php b/docker/streamline-src/vendor/symfony/translation-contracts/TranslatableInterface.php deleted file mode 100644 index 8554697e..00000000 --- a/docker/streamline-src/vendor/symfony/translation-contracts/TranslatableInterface.php +++ /dev/null @@ -1,20 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Contracts\Translation; - -/** - * @author Nicolas Grekas - */ -interface TranslatableInterface -{ - public function trans(TranslatorInterface $translator, ?string $locale = null): string; -} diff --git a/docker/streamline-src/vendor/symfony/translation-contracts/TranslatorInterface.php b/docker/streamline-src/vendor/symfony/translation-contracts/TranslatorInterface.php deleted file mode 100644 index 7fa69878..00000000 --- a/docker/streamline-src/vendor/symfony/translation-contracts/TranslatorInterface.php +++ /dev/null @@ -1,68 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Contracts\Translation; - -/** - * @author Fabien Potencier - */ -interface TranslatorInterface -{ - /** - * Translates the given message. - * - * When a number is provided as a parameter named "%count%", the message is parsed for plural - * forms and a translation is chosen according to this number using the following rules: - * - * Given a message with different plural translations separated by a - * pipe (|), this method returns the correct portion of the message based - * on the given number, locale and the pluralization rules in the message - * itself. - * - * The message supports two different types of pluralization rules: - * - * interval: {0} There are no apples|{1} There is one apple|]1,Inf] There are %count% apples - * indexed: There is one apple|There are %count% apples - * - * The indexed solution can also contain labels (e.g. one: There is one apple). - * This is purely for making the translations more clear - it does not - * affect the functionality. - * - * The two methods can also be mixed: - * {0} There are no apples|one: There is one apple|more: There are %count% apples - * - * An interval can represent a finite set of numbers: - * {1,2,3,4} - * - * An interval can represent numbers between two numbers: - * [1, +Inf] - * ]-1,2[ - * - * The left delimiter can be [ (inclusive) or ] (exclusive). - * The right delimiter can be [ (exclusive) or ] (inclusive). - * Beside numbers, you can use -Inf and +Inf for the infinite. - * - * @see https://en.wikipedia.org/wiki/ISO_31-11 - * - * @param string $id The message id (may also be an object that can be cast to string) - * @param array $parameters An array of parameters for the message - * @param string|null $domain The domain for the message or null to use the default - * @param string|null $locale The locale or null to use the default - * - * @throws \InvalidArgumentException If the locale contains invalid characters - */ - public function trans(string $id, array $parameters = [], ?string $domain = null, ?string $locale = null): string; - - /** - * Returns the default locale. - */ - public function getLocale(): string; -} diff --git a/docker/streamline-src/vendor/symfony/translation-contracts/TranslatorTrait.php b/docker/streamline-src/vendor/symfony/translation-contracts/TranslatorTrait.php deleted file mode 100644 index 63f6fb33..00000000 --- a/docker/streamline-src/vendor/symfony/translation-contracts/TranslatorTrait.php +++ /dev/null @@ -1,225 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Contracts\Translation; - -use Symfony\Component\Translation\Exception\InvalidArgumentException; - -/** - * A trait to help implement TranslatorInterface and LocaleAwareInterface. - * - * @author Fabien Potencier - */ -trait TranslatorTrait -{ - private ?string $locale = null; - - /** - * @return void - */ - public function setLocale(string $locale) - { - $this->locale = $locale; - } - - public function getLocale(): string - { - return $this->locale ?: (class_exists(\Locale::class) ? \Locale::getDefault() : 'en'); - } - - public function trans(?string $id, array $parameters = [], ?string $domain = null, ?string $locale = null): string - { - if (null === $id || '' === $id) { - return ''; - } - - if (!isset($parameters['%count%']) || !is_numeric($parameters['%count%'])) { - return strtr($id, $parameters); - } - - $number = (float) $parameters['%count%']; - $locale = $locale ?: $this->getLocale(); - - $parts = []; - if (preg_match('/^\|++$/', $id)) { - $parts = explode('|', $id); - } elseif (preg_match_all('/(?:\|\||[^\|])++/', $id, $matches)) { - $parts = $matches[0]; - } - - $intervalRegexp = <<<'EOF' -/^(?P - ({\s* - (\-?\d+(\.\d+)?[\s*,\s*\-?\d+(\.\d+)?]*) - \s*}) - - | - - (?P[\[\]]) - \s* - (?P-Inf|\-?\d+(\.\d+)?) - \s*,\s* - (?P\+?Inf|\-?\d+(\.\d+)?) - \s* - (?P[\[\]]) -)\s*(?P.*?)$/xs -EOF; - - $standardRules = []; - foreach ($parts as $part) { - $part = trim(str_replace('||', '|', $part)); - - // try to match an explicit rule, then fallback to the standard ones - if (preg_match($intervalRegexp, $part, $matches)) { - if ($matches[2]) { - foreach (explode(',', $matches[3]) as $n) { - if ($number == $n) { - return strtr($matches['message'], $parameters); - } - } - } else { - $leftNumber = '-Inf' === $matches['left'] ? -\INF : (float) $matches['left']; - $rightNumber = is_numeric($matches['right']) ? (float) $matches['right'] : \INF; - - if (('[' === $matches['left_delimiter'] ? $number >= $leftNumber : $number > $leftNumber) - && (']' === $matches['right_delimiter'] ? $number <= $rightNumber : $number < $rightNumber) - ) { - return strtr($matches['message'], $parameters); - } - } - } elseif (preg_match('/^\w+\:\s*(.*?)$/', $part, $matches)) { - $standardRules[] = $matches[1]; - } else { - $standardRules[] = $part; - } - } - - $position = $this->getPluralizationRule($number, $locale); - - if (!isset($standardRules[$position])) { - // when there's exactly one rule given, and that rule is a standard - // rule, use this rule - if (1 === \count($parts) && isset($standardRules[0])) { - return strtr($standardRules[0], $parameters); - } - - $message = sprintf('Unable to choose a translation for "%s" with locale "%s" for value "%d". Double check that this translation has the correct plural options (e.g. "There is one apple|There are %%count%% apples").', $id, $locale, $number); - - if (class_exists(InvalidArgumentException::class)) { - throw new InvalidArgumentException($message); - } - - throw new \InvalidArgumentException($message); - } - - return strtr($standardRules[$position], $parameters); - } - - /** - * Returns the plural position to use for the given locale and number. - * - * The plural rules are derived from code of the Zend Framework (2010-09-25), - * which is subject to the new BSD license (http://framework.zend.com/license/new-bsd). - * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com) - */ - private function getPluralizationRule(float $number, string $locale): int - { - $number = abs($number); - - return match ('pt_BR' !== $locale && 'en_US_POSIX' !== $locale && \strlen($locale) > 3 ? substr($locale, 0, strrpos($locale, '_')) : $locale) { - 'af', - 'bn', - 'bg', - 'ca', - 'da', - 'de', - 'el', - 'en', - 'en_US_POSIX', - 'eo', - 'es', - 'et', - 'eu', - 'fa', - 'fi', - 'fo', - 'fur', - 'fy', - 'gl', - 'gu', - 'ha', - 'he', - 'hu', - 'is', - 'it', - 'ku', - 'lb', - 'ml', - 'mn', - 'mr', - 'nah', - 'nb', - 'ne', - 'nl', - 'nn', - 'no', - 'oc', - 'om', - 'or', - 'pa', - 'pap', - 'ps', - 'pt', - 'so', - 'sq', - 'sv', - 'sw', - 'ta', - 'te', - 'tk', - 'ur', - 'zu' => (1 == $number) ? 0 : 1, - 'am', - 'bh', - 'fil', - 'fr', - 'gun', - 'hi', - 'hy', - 'ln', - 'mg', - 'nso', - 'pt_BR', - 'ti', - 'wa' => ($number < 2) ? 0 : 1, - 'be', - 'bs', - 'hr', - 'ru', - 'sh', - 'sr', - 'uk' => ((1 == $number % 10) && (11 != $number % 100)) ? 0 : ((($number % 10 >= 2) && ($number % 10 <= 4) && (($number % 100 < 10) || ($number % 100 >= 20))) ? 1 : 2), - 'cs', - 'sk' => (1 == $number) ? 0 : ((($number >= 2) && ($number <= 4)) ? 1 : 2), - 'ga' => (1 == $number) ? 0 : ((2 == $number) ? 1 : 2), - 'lt' => ((1 == $number % 10) && (11 != $number % 100)) ? 0 : ((($number % 10 >= 2) && (($number % 100 < 10) || ($number % 100 >= 20))) ? 1 : 2), - 'sl' => (1 == $number % 100) ? 0 : ((2 == $number % 100) ? 1 : (((3 == $number % 100) || (4 == $number % 100)) ? 2 : 3)), - 'mk' => (1 == $number % 10) ? 0 : 1, - 'mt' => (1 == $number) ? 0 : (((0 == $number) || (($number % 100 > 1) && ($number % 100 < 11))) ? 1 : ((($number % 100 > 10) && ($number % 100 < 20)) ? 2 : 3)), - 'lv' => (0 == $number) ? 0 : (((1 == $number % 10) && (11 != $number % 100)) ? 1 : 2), - 'pl' => (1 == $number) ? 0 : ((($number % 10 >= 2) && ($number % 10 <= 4) && (($number % 100 < 12) || ($number % 100 > 14))) ? 1 : 2), - 'cy' => (1 == $number) ? 0 : ((2 == $number) ? 1 : (((8 == $number) || (11 == $number)) ? 2 : 3)), - 'ro' => (1 == $number) ? 0 : (((0 == $number) || (($number % 100 > 0) && ($number % 100 < 20))) ? 1 : 2), - 'ar' => (0 == $number) ? 0 : ((1 == $number) ? 1 : ((2 == $number) ? 2 : ((($number % 100 >= 3) && ($number % 100 <= 10)) ? 3 : ((($number % 100 >= 11) && ($number % 100 <= 99)) ? 4 : 5)))), - default => 0, - }; - } -} diff --git a/docker/streamline-src/vendor/symfony/translation-contracts/composer.json b/docker/streamline-src/vendor/symfony/translation-contracts/composer.json deleted file mode 100644 index 181651e0..00000000 --- a/docker/streamline-src/vendor/symfony/translation-contracts/composer.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "symfony/translation-contracts", - "type": "library", - "description": "Generic abstractions related to translation", - "keywords": ["abstractions", "contracts", "decoupling", "interfaces", "interoperability", "standards"], - "homepage": "https://symfony.com", - "license": "MIT", - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "require": { - "php": ">=8.1" - }, - "autoload": { - "psr-4": { "Symfony\\Contracts\\Translation\\": "" }, - "exclude-from-classmap": [ - "/Test/" - ] - }, - "minimum-stability": "dev", - "extra": { - "branch-alias": { - "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - } -} diff --git a/docker/streamline-src/vendor/symfony/translation/Dumper/CsvFileDumper.php b/docker/streamline-src/vendor/symfony/translation/Dumper/CsvFileDumper.php deleted file mode 100644 index a4ae476b..00000000 --- a/docker/streamline-src/vendor/symfony/translation/Dumper/CsvFileDumper.php +++ /dev/null @@ -1,56 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Translation\Dumper; - -use Symfony\Component\Translation\MessageCatalogue; - -/** - * CsvFileDumper generates a csv formatted string representation of a message catalogue. - * - * @author Stealth35 - */ -class CsvFileDumper extends FileDumper -{ - private string $delimiter = ';'; - private string $enclosure = '"'; - - public function formatCatalogue(MessageCatalogue $messages, string $domain, array $options = []): string - { - $handle = fopen('php://memory', 'r+'); - - foreach ($messages->all($domain) as $source => $target) { - fputcsv($handle, [$source, $target], $this->delimiter, $this->enclosure, '\\'); - } - - rewind($handle); - $output = stream_get_contents($handle); - fclose($handle); - - return $output; - } - - /** - * Sets the delimiter and escape character for CSV. - * - * @return void - */ - public function setCsvControl(string $delimiter = ';', string $enclosure = '"') - { - $this->delimiter = $delimiter; - $this->enclosure = $enclosure; - } - - protected function getExtension(): string - { - return 'csv'; - } -} diff --git a/docker/streamline-src/vendor/symfony/translation/Extractor/Visitor/TransMethodVisitor.php b/docker/streamline-src/vendor/symfony/translation/Extractor/Visitor/TransMethodVisitor.php deleted file mode 100644 index a3dcd6d2..00000000 --- a/docker/streamline-src/vendor/symfony/translation/Extractor/Visitor/TransMethodVisitor.php +++ /dev/null @@ -1,65 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Translation\Extractor\Visitor; - -use PhpParser\Node; -use PhpParser\NodeVisitor; - -/** - * @author Mathieu Santostefano - */ -final class TransMethodVisitor extends AbstractVisitor implements NodeVisitor -{ - public function beforeTraverse(array $nodes): ?Node - { - return null; - } - - public function enterNode(Node $node): ?Node - { - return null; - } - - public function leaveNode(Node $node): ?Node - { - if (!$node instanceof Node\Expr\MethodCall && !$node instanceof Node\Expr\FuncCall) { - return null; - } - - if (!\is_string($node->name) && !$node->name instanceof Node\Identifier && !$node->name instanceof Node\Name) { - return null; - } - - $name = $node->name instanceof Node\Name ? $node->name->getLast() : (string) $node->name; - - if ('trans' === $name || 't' === $name) { - $firstNamedArgumentIndex = $this->nodeFirstNamedArgumentIndex($node); - - if (!$messages = $this->getStringArguments($node, 0 < $firstNamedArgumentIndex ? 0 : 'id')) { - return null; - } - - $domain = $this->getStringArguments($node, 2 < $firstNamedArgumentIndex ? 2 : 'domain')[0] ?? null; - - foreach ($messages as $message) { - $this->addMessageToCatalogue($message, $domain, $node->getStartLine()); - } - } - - return null; - } - - public function afterTraverse(array $nodes): ?Node - { - return null; - } -} diff --git a/docker/streamline-src/vendor/symfony/translation/Loader/CsvFileLoader.php b/docker/streamline-src/vendor/symfony/translation/Loader/CsvFileLoader.php deleted file mode 100644 index 93bee730..00000000 --- a/docker/streamline-src/vendor/symfony/translation/Loader/CsvFileLoader.php +++ /dev/null @@ -1,64 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Translation\Loader; - -use Symfony\Component\Translation\Exception\NotFoundResourceException; - -/** - * CsvFileLoader loads translations from CSV files. - * - * @author Saša Stamenković - */ -class CsvFileLoader extends FileLoader -{ - private string $delimiter = ';'; - private string $enclosure = '"'; - private string $escape = ''; - - protected function loadResource(string $resource): array - { - $messages = []; - - try { - $file = new \SplFileObject($resource, 'rb'); - } catch (\RuntimeException $e) { - throw new NotFoundResourceException(sprintf('Error opening file "%s".', $resource), 0, $e); - } - - $file->setFlags(\SplFileObject::READ_CSV | \SplFileObject::SKIP_EMPTY); - $file->setCsvControl($this->delimiter, $this->enclosure, $this->escape); - - foreach ($file as $data) { - if (false === $data) { - continue; - } - - if (!str_starts_with($data[0], '#') && isset($data[1]) && 2 === \count($data)) { - $messages[$data[0]] = $data[1]; - } - } - - return $messages; - } - - /** - * Sets the delimiter, enclosure, and escape character for CSV. - * - * @return void - */ - public function setCsvControl(string $delimiter = ';', string $enclosure = '"', string $escape = '') - { - $this->delimiter = $delimiter; - $this->enclosure = $enclosure; - $this->escape = $escape; - } -} diff --git a/docker/streamline-src/vendor/symfony/translation/Loader/XliffFileLoader.php b/docker/streamline-src/vendor/symfony/translation/Loader/XliffFileLoader.php deleted file mode 100644 index ffe4bbbd..00000000 --- a/docker/streamline-src/vendor/symfony/translation/Loader/XliffFileLoader.php +++ /dev/null @@ -1,241 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Translation\Loader; - -use Symfony\Component\Config\Resource\FileResource; -use Symfony\Component\Config\Util\Exception\InvalidXmlException; -use Symfony\Component\Config\Util\Exception\XmlParsingException; -use Symfony\Component\Config\Util\XmlUtils; -use Symfony\Component\Translation\Exception\InvalidResourceException; -use Symfony\Component\Translation\Exception\NotFoundResourceException; -use Symfony\Component\Translation\Exception\RuntimeException; -use Symfony\Component\Translation\MessageCatalogue; -use Symfony\Component\Translation\Util\XliffUtils; - -/** - * XliffFileLoader loads translations from XLIFF files. - * - * @author Fabien Potencier - */ -class XliffFileLoader implements LoaderInterface -{ - public function load(mixed $resource, string $locale, string $domain = 'messages'): MessageCatalogue - { - if (!class_exists(XmlUtils::class)) { - throw new RuntimeException('Loading translations from the Xliff format requires the Symfony Config component.'); - } - - if (!$this->isXmlString($resource)) { - if (!stream_is_local($resource)) { - throw new InvalidResourceException(sprintf('This is not a local file "%s".', $resource)); - } - - if (!file_exists($resource)) { - throw new NotFoundResourceException(sprintf('File "%s" not found.', $resource)); - } - - if (!is_file($resource)) { - throw new InvalidResourceException(sprintf('This is neither a file nor an XLIFF string "%s".', $resource)); - } - } - - try { - if ($this->isXmlString($resource)) { - $dom = XmlUtils::parse($resource); - } else { - $dom = XmlUtils::loadFile($resource); - } - } catch (\InvalidArgumentException|XmlParsingException|InvalidXmlException $e) { - throw new InvalidResourceException(sprintf('Unable to load "%s": ', $resource).$e->getMessage(), $e->getCode(), $e); - } - - if ($errors = XliffUtils::validateSchema($dom)) { - throw new InvalidResourceException(sprintf('Invalid resource provided: "%s"; Errors: ', $resource).XliffUtils::getErrorsAsString($errors)); - } - - $catalogue = new MessageCatalogue($locale); - $this->extract($dom, $catalogue, $domain); - - if (is_file($resource) && class_exists(FileResource::class)) { - $catalogue->addResource(new FileResource($resource)); - } - - return $catalogue; - } - - private function extract(\DOMDocument $dom, MessageCatalogue $catalogue, string $domain): void - { - $xliffVersion = XliffUtils::getVersionNumber($dom); - - if ('1.2' === $xliffVersion) { - $this->extractXliff1($dom, $catalogue, $domain); - } - - if ('2.0' === $xliffVersion) { - $this->extractXliff2($dom, $catalogue, $domain); - } - } - - /** - * Extract messages and metadata from DOMDocument into a MessageCatalogue. - */ - private function extractXliff1(\DOMDocument $dom, MessageCatalogue $catalogue, string $domain): void - { - $xml = simplexml_import_dom($dom); - $encoding = $dom->encoding ? strtoupper($dom->encoding) : null; - - $namespace = 'urn:oasis:names:tc:xliff:document:1.2'; - $xml->registerXPathNamespace('xliff', $namespace); - - foreach ($xml->xpath('//xliff:file') as $file) { - $fileAttributes = $file->attributes(); - - $file->registerXPathNamespace('xliff', $namespace); - - foreach ($file->xpath('.//xliff:prop') as $prop) { - $catalogue->setCatalogueMetadata($prop->attributes()['prop-type'], (string) $prop, $domain); - } - - foreach ($file->xpath('.//xliff:trans-unit') as $translation) { - $attributes = $translation->attributes(); - - if (!(isset($attributes['resname']) || isset($translation->source))) { - continue; - } - - $source = (string) (isset($attributes['resname']) && $attributes['resname'] ? $attributes['resname'] : $translation->source); - - if (isset($translation->target) - && 'needs-translation' === (string) $translation->target->attributes()['state'] - && \in_array((string) $translation->target, [$source, (string) $translation->source], true) - ) { - continue; - } - - // If the xlf file has another encoding specified, try to convert it because - // simple_xml will always return utf-8 encoded values - $target = $this->utf8ToCharset((string) ($translation->target ?? $translation->source), $encoding); - - $catalogue->set($source, $target, $domain); - - $metadata = [ - 'source' => (string) $translation->source, - 'file' => [ - 'original' => (string) $fileAttributes['original'], - ], - ]; - if ($notes = $this->parseNotesMetadata($translation->note, $encoding)) { - $metadata['notes'] = $notes; - } - - if (isset($translation->target) && $translation->target->attributes()) { - $metadata['target-attributes'] = []; - foreach ($translation->target->attributes() as $key => $value) { - $metadata['target-attributes'][$key] = (string) $value; - } - } - - if (isset($attributes['id'])) { - $metadata['id'] = (string) $attributes['id']; - } - - $catalogue->setMetadata($source, $metadata, $domain); - } - } - } - - private function extractXliff2(\DOMDocument $dom, MessageCatalogue $catalogue, string $domain): void - { - $xml = simplexml_import_dom($dom); - $encoding = $dom->encoding ? strtoupper($dom->encoding) : null; - - $xml->registerXPathNamespace('xliff', 'urn:oasis:names:tc:xliff:document:2.0'); - - foreach ($xml->xpath('//xliff:unit') as $unit) { - foreach ($unit->segment as $segment) { - $attributes = $unit->attributes(); - $source = $attributes['name'] ?? $segment->source; - - // If the xlf file has another encoding specified, try to convert it because - // simple_xml will always return utf-8 encoded values - $target = $this->utf8ToCharset((string) ($segment->target ?? $segment->source), $encoding); - - $catalogue->set((string) $source, $target, $domain); - - $metadata = []; - if (isset($segment->target) && $segment->target->attributes()) { - $metadata['target-attributes'] = []; - foreach ($segment->target->attributes() as $key => $value) { - $metadata['target-attributes'][$key] = (string) $value; - } - } - - if (isset($unit->notes)) { - $metadata['notes'] = []; - foreach ($unit->notes->note as $noteNode) { - $note = []; - foreach ($noteNode->attributes() as $key => $value) { - $note[$key] = (string) $value; - } - $note['content'] = (string) $noteNode; - $metadata['notes'][] = $note; - } - } - - $catalogue->setMetadata((string) $source, $metadata, $domain); - } - } - } - - /** - * Convert a UTF8 string to the specified encoding. - */ - private function utf8ToCharset(string $content, ?string $encoding = null): string - { - if ('UTF-8' !== $encoding && !empty($encoding)) { - return mb_convert_encoding($content, $encoding, 'UTF-8'); - } - - return $content; - } - - private function parseNotesMetadata(?\SimpleXMLElement $noteElement = null, ?string $encoding = null): array - { - $notes = []; - - if (null === $noteElement) { - return $notes; - } - - /** @var \SimpleXMLElement $xmlNote */ - foreach ($noteElement as $xmlNote) { - $noteAttributes = $xmlNote->attributes(); - $note = ['content' => $this->utf8ToCharset((string) $xmlNote, $encoding)]; - if (isset($noteAttributes['priority'])) { - $note['priority'] = (int) $noteAttributes['priority']; - } - - if (isset($noteAttributes['from'])) { - $note['from'] = (string) $noteAttributes['from']; - } - - $notes[] = $note; - } - - return $notes; - } - - private function isXmlString(string $resource): bool - { - return str_starts_with($resource, ' - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Translation; - -use Symfony\Component\Routing\RequestContext; -use Symfony\Contracts\Translation\LocaleAwareInterface; - -/** - * @author Kevin Bond - */ -class LocaleSwitcher implements LocaleAwareInterface -{ - private string $defaultLocale; - - /** - * @param LocaleAwareInterface[] $localeAwareServices - */ - public function __construct( - private string $locale, - private iterable $localeAwareServices, - private ?RequestContext $requestContext = null, - ) { - $this->defaultLocale = $locale; - } - - public function setLocale(string $locale): void - { - // Silently ignore if the intl extension is not loaded - try { - if (class_exists(\Locale::class, false)) { - \Locale::setDefault($locale); - } - } catch (\Exception) { - } - - $this->locale = $locale; - $this->requestContext?->setParameter('_locale', $locale); - - foreach ($this->localeAwareServices as $service) { - $service->setLocale($locale); - } - } - - public function getLocale(): string - { - return $this->locale; - } - - /** - * Switch to a new locale, execute a callback, then switch back to the original. - * - * @template T - * - * @param callable(string $locale):T $callback - * - * @return T - */ - public function runWithLocale(string $locale, callable $callback): mixed - { - $original = $this->getLocale(); - $this->setLocale($locale); - - try { - return $callback($locale); - } finally { - $this->setLocale($original); - } - } - - public function reset(): void - { - $this->setLocale($this->defaultLocale); - } -} diff --git a/docker/streamline-src/vendor/symfony/translation/Resources/bin/translation-status.php b/docker/streamline-src/vendor/symfony/translation/Resources/bin/translation-status.php deleted file mode 100644 index 42fa1c69..00000000 --- a/docker/streamline-src/vendor/symfony/translation/Resources/bin/translation-status.php +++ /dev/null @@ -1,274 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -if ('cli' !== \PHP_SAPI) { - throw new Exception('This script must be run from the command line.'); -} - -$usageInstructions = << false, - // NULL = analyze all locales - 'locale_to_analyze' => null, - // append --incomplete to only show incomplete languages - 'include_completed_languages' => true, - // the reference files all the other translations are compared to - 'original_files' => [ - 'src/Symfony/Component/Form/Resources/translations/validators.en.xlf', - 'src/Symfony/Component/Security/Core/Resources/translations/security.en.xlf', - 'src/Symfony/Component/Validator/Resources/translations/validators.en.xlf', - ], -]; - -$argc = $_SERVER['argc']; -$argv = $_SERVER['argv']; - -if ($argc > 4) { - echo str_replace('translation-status.php', $argv[0], $usageInstructions); - exit(1); -} - -foreach (array_slice($argv, 1) as $argumentOrOption) { - if ('--incomplete' === $argumentOrOption) { - $config['include_completed_languages'] = false; - continue; - } - - if (str_starts_with($argumentOrOption, '-')) { - $config['verbose_output'] = true; - } else { - $config['locale_to_analyze'] = $argumentOrOption; - } -} - -foreach ($config['original_files'] as $originalFilePath) { - if (!file_exists($originalFilePath)) { - echo sprintf('The following file does not exist. Make sure that you execute this command at the root dir of the Symfony code repository.%s %s', \PHP_EOL, $originalFilePath); - exit(1); - } -} - -$totalMissingTranslations = 0; -$totalTranslationMismatches = 0; - -foreach ($config['original_files'] as $originalFilePath) { - $translationFilePaths = findTranslationFiles($originalFilePath, $config['locale_to_analyze']); - $translationStatus = calculateTranslationStatus($originalFilePath, $translationFilePaths); - - $totalMissingTranslations += array_sum(array_map(fn ($translation) => count($translation['missingKeys']), array_values($translationStatus))); - $totalTranslationMismatches += array_sum(array_map(fn ($translation) => count($translation['mismatches']), array_values($translationStatus))); - - printTranslationStatus($originalFilePath, $translationStatus, $config['verbose_output'], $config['include_completed_languages']); -} - -exit($totalTranslationMismatches > 0 ? 1 : 0); - -function findTranslationFiles($originalFilePath, $localeToAnalyze): array -{ - $translations = []; - - $translationsDir = dirname($originalFilePath); - $originalFileName = basename($originalFilePath); - $translationFileNamePattern = str_replace('.en.', '.*.', $originalFileName); - - $translationFiles = glob($translationsDir.'/'.$translationFileNamePattern, \GLOB_NOSORT); - sort($translationFiles); - foreach ($translationFiles as $filePath) { - $locale = extractLocaleFromFilePath($filePath); - - if (null !== $localeToAnalyze && $locale !== $localeToAnalyze) { - continue; - } - - $translations[$locale] = $filePath; - } - - return $translations; -} - -function calculateTranslationStatus($originalFilePath, $translationFilePaths): array -{ - $translationStatus = []; - $allTranslationKeys = extractTranslationKeys($originalFilePath); - - foreach ($translationFilePaths as $locale => $translationPath) { - $translatedKeys = extractTranslationKeys($translationPath); - $missingKeys = array_diff_key($allTranslationKeys, $translatedKeys); - $mismatches = findTransUnitMismatches($allTranslationKeys, $translatedKeys); - - $translationStatus[$locale] = [ - 'total' => count($allTranslationKeys), - 'translated' => count($translatedKeys), - 'missingKeys' => $missingKeys, - 'mismatches' => $mismatches, - ]; - $translationStatus[$locale]['is_completed'] = isTranslationCompleted($translationStatus[$locale]); - } - - return $translationStatus; -} - -function isTranslationCompleted(array $translationStatus): bool -{ - return $translationStatus['total'] === $translationStatus['translated'] && 0 === count($translationStatus['mismatches']); -} - -function printTranslationStatus($originalFilePath, $translationStatus, $verboseOutput, $includeCompletedLanguages) -{ - printTitle($originalFilePath); - printTable($translationStatus, $verboseOutput, $includeCompletedLanguages); - echo \PHP_EOL.\PHP_EOL; -} - -function extractLocaleFromFilePath($filePath) -{ - $parts = explode('.', $filePath); - - return $parts[count($parts) - 2]; -} - -function extractTranslationKeys($filePath): array -{ - $translationKeys = []; - $contents = new SimpleXMLElement(file_get_contents($filePath)); - - foreach ($contents->file->body->{'trans-unit'} as $translationKey) { - $translationId = (string) $translationKey['id']; - $translationKey = (string) ($translationKey['resname'] ?? $translationKey->source); - - $translationKeys[$translationId] = $translationKey; - } - - return $translationKeys; -} - -/** - * Check whether the trans-unit id and source match with the base translation. - */ -function findTransUnitMismatches(array $baseTranslationKeys, array $translatedKeys): array -{ - $mismatches = []; - - foreach ($baseTranslationKeys as $translationId => $translationKey) { - if (!isset($translatedKeys[$translationId])) { - continue; - } - if ($translatedKeys[$translationId] !== $translationKey) { - $mismatches[$translationId] = [ - 'found' => $translatedKeys[$translationId], - 'expected' => $translationKey, - ]; - } - } - - return $mismatches; -} - -function printTitle($title) -{ - echo $title.\PHP_EOL; - echo str_repeat('=', strlen($title)).\PHP_EOL.\PHP_EOL; -} - -function printTable($translations, $verboseOutput, bool $includeCompletedLanguages) -{ - if (0 === count($translations)) { - echo 'No translations found'; - - return; - } - $longestLocaleNameLength = max(array_map('strlen', array_keys($translations))); - - foreach ($translations as $locale => $translation) { - if (!$includeCompletedLanguages && $translation['is_completed']) { - continue; - } - - if ($translation['translated'] > $translation['total']) { - textColorRed(); - } elseif (count($translation['mismatches']) > 0) { - textColorRed(); - } elseif ($translation['is_completed']) { - textColorGreen(); - } - - echo sprintf( - '| Locale: %-'.$longestLocaleNameLength.'s | Translated: %2d/%2d | Mismatches: %d |', - $locale, - $translation['translated'], - $translation['total'], - count($translation['mismatches']) - ).\PHP_EOL; - - textColorNormal(); - - $shouldBeClosed = false; - if (true === $verboseOutput && count($translation['missingKeys']) > 0) { - echo '| Missing Translations:'.\PHP_EOL; - - foreach ($translation['missingKeys'] as $id => $content) { - echo sprintf('| (id=%s) %s', $id, $content).\PHP_EOL; - } - $shouldBeClosed = true; - } - if (true === $verboseOutput && count($translation['mismatches']) > 0) { - echo '| Mismatches between trans-unit id and source:'.\PHP_EOL; - - foreach ($translation['mismatches'] as $id => $content) { - echo sprintf('| (id=%s) Expected: %s', $id, $content['expected']).\PHP_EOL; - echo sprintf('| Found: %s', $content['found']).\PHP_EOL; - } - $shouldBeClosed = true; - } - if ($shouldBeClosed) { - echo str_repeat('-', 80).\PHP_EOL; - } - } -} - -function textColorGreen() -{ - echo "\033[32m"; -} - -function textColorRed() -{ - echo "\033[31m"; -} - -function textColorNormal() -{ - echo "\033[0m"; -} diff --git a/docker/streamline-src/vendor/symfony/uid/AbstractUid.php b/docker/streamline-src/vendor/symfony/uid/AbstractUid.php deleted file mode 100644 index d556bb73..00000000 --- a/docker/streamline-src/vendor/symfony/uid/AbstractUid.php +++ /dev/null @@ -1,178 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Uid; - -/** - * @author Nicolas Grekas - */ -abstract class AbstractUid implements \JsonSerializable, \Stringable -{ - /** - * The identifier in its canonic representation. - */ - protected $uid; - - /** - * Whether the passed value is valid for the constructor of the current class. - */ - abstract public static function isValid(string $uid): bool; - - /** - * Creates an AbstractUid from an identifier represented in any of the supported formats. - * - * @throws \InvalidArgumentException When the passed value is not valid - */ - abstract public static function fromString(string $uid): static; - - /** - * @throws \InvalidArgumentException When the passed value is not valid - */ - public static function fromBinary(string $uid): static - { - if (16 !== \strlen($uid)) { - throw new \InvalidArgumentException('Invalid binary uid provided.'); - } - - return static::fromString($uid); - } - - /** - * @throws \InvalidArgumentException When the passed value is not valid - */ - public static function fromBase58(string $uid): static - { - if (22 !== \strlen($uid)) { - throw new \InvalidArgumentException('Invalid base-58 uid provided.'); - } - - return static::fromString($uid); - } - - /** - * @throws \InvalidArgumentException When the passed value is not valid - */ - public static function fromBase32(string $uid): static - { - if (26 !== \strlen($uid)) { - throw new \InvalidArgumentException('Invalid base-32 uid provided.'); - } - - return static::fromString($uid); - } - - /** - * @param string $uid A valid RFC 9562/4122 uid - * - * @throws \InvalidArgumentException When the passed value is not valid - */ - public static function fromRfc4122(string $uid): static - { - if (36 !== \strlen($uid)) { - throw new \InvalidArgumentException('Invalid RFC4122 uid provided.'); - } - - return static::fromString($uid); - } - - /** - * Returns the identifier as a raw binary string. - */ - abstract public function toBinary(): string; - - /** - * Returns the identifier as a base58 case sensitive string. - * - * @example 2AifFTC3zXgZzK5fPrrprL (len=22) - */ - public function toBase58(): string - { - return strtr(sprintf('%022s', BinaryUtil::toBase($this->toBinary(), BinaryUtil::BASE58)), '0', '1'); - } - - /** - * Returns the identifier as a base32 case insensitive string. - * - * @see https://tools.ietf.org/html/rfc4648#section-6 - * - * @example 09EJ0S614A9FXVG9C5537Q9ZE1 (len=26) - */ - public function toBase32(): string - { - $uid = bin2hex($this->toBinary()); - $uid = sprintf('%02s%04s%04s%04s%04s%04s%04s', - base_convert(substr($uid, 0, 2), 16, 32), - base_convert(substr($uid, 2, 5), 16, 32), - base_convert(substr($uid, 7, 5), 16, 32), - base_convert(substr($uid, 12, 5), 16, 32), - base_convert(substr($uid, 17, 5), 16, 32), - base_convert(substr($uid, 22, 5), 16, 32), - base_convert(substr($uid, 27, 5), 16, 32) - ); - - return strtr($uid, 'abcdefghijklmnopqrstuv', 'ABCDEFGHJKMNPQRSTVWXYZ'); - } - - /** - * Returns the identifier as a RFC 9562/4122 case insensitive string. - * - * @see https://datatracker.ietf.org/doc/html/rfc9562/#section-4 - * - * @example 09748193-048a-4bfb-b825-8528cf74fdc1 (len=36) - */ - public function toRfc4122(): string - { - // don't use uuid_unparse(), it's slower - $uuid = bin2hex($this->toBinary()); - $uuid = substr_replace($uuid, '-', 8, 0); - $uuid = substr_replace($uuid, '-', 13, 0); - $uuid = substr_replace($uuid, '-', 18, 0); - - return substr_replace($uuid, '-', 23, 0); - } - - /** - * Returns the identifier as a prefixed hexadecimal case insensitive string. - * - * @example 0x09748193048a4bfbb8258528cf74fdc1 (len=34) - */ - public function toHex(): string - { - return '0x'.bin2hex($this->toBinary()); - } - - /** - * Returns whether the argument is an AbstractUid and contains the same value as the current instance. - */ - public function equals(mixed $other): bool - { - if (!$other instanceof self) { - return false; - } - - return $this->uid === $other->uid; - } - - public function compare(self $other): int - { - return (\strlen($this->uid) - \strlen($other->uid)) ?: ($this->uid <=> $other->uid); - } - - public function __toString(): string - { - return $this->uid; - } - - public function jsonSerialize(): string - { - return $this->uid; - } -} diff --git a/docker/streamline-src/vendor/symfony/uid/BinaryUtil.php b/docker/streamline-src/vendor/symfony/uid/BinaryUtil.php deleted file mode 100644 index 203e3135..00000000 --- a/docker/streamline-src/vendor/symfony/uid/BinaryUtil.php +++ /dev/null @@ -1,175 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Uid; - -/** - * @internal - * - * @author Nicolas Grekas - */ -class BinaryUtil -{ - public const BASE10 = [ - '' => '0123456789', - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, - ]; - - public const BASE58 = [ - '' => '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz', - 1 => 0, 1, 2, 3, 4, 5, 6, 7, 8, 'A' => 9, - 'B' => 10, 'C' => 11, 'D' => 12, 'E' => 13, 'F' => 14, 'G' => 15, - 'H' => 16, 'J' => 17, 'K' => 18, 'L' => 19, 'M' => 20, 'N' => 21, - 'P' => 22, 'Q' => 23, 'R' => 24, 'S' => 25, 'T' => 26, 'U' => 27, - 'V' => 28, 'W' => 29, 'X' => 30, 'Y' => 31, 'Z' => 32, 'a' => 33, - 'b' => 34, 'c' => 35, 'd' => 36, 'e' => 37, 'f' => 38, 'g' => 39, - 'h' => 40, 'i' => 41, 'j' => 42, 'k' => 43, 'm' => 44, 'n' => 45, - 'o' => 46, 'p' => 47, 'q' => 48, 'r' => 49, 's' => 50, 't' => 51, - 'u' => 52, 'v' => 53, 'w' => 54, 'x' => 55, 'y' => 56, 'z' => 57, - ]; - - // https://datatracker.ietf.org/doc/html/rfc9562#section-5.1 - // 0x01b21dd213814000 is the number of 100-ns intervals between the - // UUID epoch 1582-10-15 00:00:00 and the Unix epoch 1970-01-01 00:00:00. - private const TIME_OFFSET_INT = 0x01B21DD213814000; - private const TIME_OFFSET_BIN = "\x01\xb2\x1d\xd2\x13\x81\x40\x00"; - private const TIME_OFFSET_COM1 = "\xfe\x4d\xe2\x2d\xec\x7e\xbf\xff"; - private const TIME_OFFSET_COM2 = "\xfe\x4d\xe2\x2d\xec\x7e\xc0\x00"; - - public static function toBase(string $bytes, array $map): string - { - $base = \strlen($alphabet = $map['']); - $bytes = array_values(unpack(\PHP_INT_SIZE >= 8 ? 'n*' : 'C*', $bytes)); - $digits = ''; - - while ($count = \count($bytes)) { - $quotient = []; - $remainder = 0; - - for ($i = 0; $i !== $count; ++$i) { - $carry = $bytes[$i] + ($remainder << (\PHP_INT_SIZE >= 8 ? 16 : 8)); - $digit = intdiv($carry, $base); - $remainder = $carry % $base; - - if ($digit || $quotient) { - $quotient[] = $digit; - } - } - - $digits = $alphabet[$remainder].$digits; - $bytes = $quotient; - } - - return $digits; - } - - public static function fromBase(string $digits, array $map): string - { - $base = \strlen($map['']); - $count = \strlen($digits); - $bytes = []; - - while ($count) { - $quotient = []; - $remainder = 0; - - for ($i = 0; $i !== $count; ++$i) { - $carry = ($bytes ? $digits[$i] : $map[$digits[$i]]) + $remainder * $base; - - if (\PHP_INT_SIZE >= 8) { - $digit = $carry >> 16; - $remainder = $carry & 0xFFFF; - } else { - $digit = $carry >> 8; - $remainder = $carry & 0xFF; - } - - if ($digit || $quotient) { - $quotient[] = $digit; - } - } - - $bytes[] = $remainder; - $count = \count($digits = $quotient); - } - - return pack(\PHP_INT_SIZE >= 8 ? 'n*' : 'C*', ...array_reverse($bytes)); - } - - public static function add(string $a, string $b): string - { - $carry = 0; - for ($i = 7; 0 <= $i; --$i) { - $carry += \ord($a[$i]) + \ord($b[$i]); - $a[$i] = \chr($carry & 0xFF); - $carry >>= 8; - } - - return $a; - } - - /** - * @param string $time Count of 100-nanosecond intervals since the UUID epoch 1582-10-15 00:00:00 in hexadecimal - */ - public static function hexToDateTime(string $time): \DateTimeImmutable - { - if (\PHP_INT_SIZE >= 8) { - $time = (string) (hexdec($time) - self::TIME_OFFSET_INT); - } else { - $time = str_pad(hex2bin($time), 8, "\0", \STR_PAD_LEFT); - - if (self::TIME_OFFSET_BIN <= $time) { - $time = self::add($time, self::TIME_OFFSET_COM2); - $time[0] = $time[0] & "\x7F"; - $time = self::toBase($time, self::BASE10); - } else { - $time = self::add($time, self::TIME_OFFSET_COM1); - $time = '-'.self::toBase($time ^ "\xff\xff\xff\xff\xff\xff\xff\xff", self::BASE10); - } - } - - if (9 > \strlen($time)) { - $time = '-' === $time[0] ? '-'.str_pad(substr($time, 1), 8, '0', \STR_PAD_LEFT) : str_pad($time, 8, '0', \STR_PAD_LEFT); - } - - return \DateTimeImmutable::createFromFormat('U.u?', substr_replace($time, '.', -7, 0)); - } - - /** - * @return string Count of 100-nanosecond intervals since the UUID epoch 1582-10-15 00:00:00 in hexadecimal - */ - public static function dateTimeToHex(\DateTimeInterface $time): string - { - if (\PHP_INT_SIZE >= 8) { - if (-self::TIME_OFFSET_INT > $time = (int) $time->format('Uu0')) { - throw new \InvalidArgumentException('The given UUID date cannot be earlier than 1582-10-15.'); - } - - return str_pad(dechex(self::TIME_OFFSET_INT + $time), 16, '0', \STR_PAD_LEFT); - } - - $time = $time->format('Uu0'); - $negative = '-' === $time[0]; - if ($negative && self::TIME_OFFSET_INT < $time = substr($time, 1)) { - throw new \InvalidArgumentException('The given UUID date cannot be earlier than 1582-10-15.'); - } - $time = self::fromBase($time, self::BASE10); - $time = str_pad($time, 8, "\0", \STR_PAD_LEFT); - - if ($negative) { - $time = self::add($time, self::TIME_OFFSET_COM1) ^ "\xff\xff\xff\xff\xff\xff\xff\xff"; - } else { - $time = self::add($time, self::TIME_OFFSET_BIN); - } - - return bin2hex($time); - } -} diff --git a/docker/streamline-src/vendor/symfony/uid/Uuid.php b/docker/streamline-src/vendor/symfony/uid/Uuid.php deleted file mode 100644 index 0c4cdf8c..00000000 --- a/docker/streamline-src/vendor/symfony/uid/Uuid.php +++ /dev/null @@ -1,185 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Uid; - -/** - * @author Grégoire Pineau - * - * @see https://datatracker.ietf.org/doc/html/rfc9562/#section-6.6 for details about namespaces - */ -class Uuid extends AbstractUid -{ - public const NAMESPACE_DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; - public const NAMESPACE_URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; - public const NAMESPACE_OID = '6ba7b812-9dad-11d1-80b4-00c04fd430c8'; - public const NAMESPACE_X500 = '6ba7b814-9dad-11d1-80b4-00c04fd430c8'; - - protected const TYPE = 0; - protected const NIL = '00000000-0000-0000-0000-000000000000'; - protected const MAX = 'ffffffff-ffff-ffff-ffff-ffffffffffff'; - - public function __construct(string $uuid, bool $checkVariant = false) - { - $type = preg_match('{^[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}$}Di', $uuid) ? (int) $uuid[14] : false; - - if (false === $type || (static::TYPE ?: $type) !== $type) { - throw new \InvalidArgumentException(sprintf('Invalid UUID%s: "%s".', static::TYPE ? 'v'.static::TYPE : '', $uuid)); - } - - $this->uid = strtolower($uuid); - - if ($checkVariant && !\in_array($this->uid[19], ['8', '9', 'a', 'b'], true)) { - throw new \InvalidArgumentException(sprintf('Invalid UUID%s: "%s".', static::TYPE ? 'v'.static::TYPE : '', $uuid)); - } - } - - public static function fromString(string $uuid): static - { - if (22 === \strlen($uuid) && 22 === strspn($uuid, BinaryUtil::BASE58[''])) { - $uuid = str_pad(BinaryUtil::fromBase($uuid, BinaryUtil::BASE58), 16, "\0", \STR_PAD_LEFT); - } - - if (16 === \strlen($uuid)) { - // don't use uuid_unparse(), it's slower - $uuid = bin2hex($uuid); - $uuid = substr_replace($uuid, '-', 8, 0); - $uuid = substr_replace($uuid, '-', 13, 0); - $uuid = substr_replace($uuid, '-', 18, 0); - $uuid = substr_replace($uuid, '-', 23, 0); - } elseif (26 === \strlen($uuid) && Ulid::isValid($uuid)) { - $ulid = new NilUlid(); - $ulid->uid = strtoupper($uuid); - $uuid = $ulid->toRfc4122(); - } - - if (__CLASS__ !== static::class || 36 !== \strlen($uuid)) { - return new static($uuid); - } - - if (self::NIL === $uuid) { - return new NilUuid(); - } - - if (self::MAX === $uuid = strtr($uuid, 'F', 'f')) { - return new MaxUuid(); - } - - if (!\in_array($uuid[19], ['8', '9', 'a', 'b', 'A', 'B'], true)) { - return new self($uuid); - } - - return match ((int) $uuid[14]) { - UuidV1::TYPE => new UuidV1($uuid), - UuidV3::TYPE => new UuidV3($uuid), - UuidV4::TYPE => new UuidV4($uuid), - UuidV5::TYPE => new UuidV5($uuid), - UuidV6::TYPE => new UuidV6($uuid), - UuidV7::TYPE => new UuidV7($uuid), - UuidV8::TYPE => new UuidV8($uuid), - default => new self($uuid), - }; - } - - final public static function v1(): UuidV1 - { - return new UuidV1(); - } - - final public static function v3(self $namespace, string $name): UuidV3 - { - // don't use uuid_generate_md5(), some versions are buggy - $uuid = md5(hex2bin(str_replace('-', '', $namespace->uid)).$name, true); - - return new UuidV3(self::format($uuid, '-3')); - } - - final public static function v4(): UuidV4 - { - return new UuidV4(); - } - - final public static function v5(self $namespace, string $name): UuidV5 - { - // don't use uuid_generate_sha1(), some versions are buggy - $uuid = substr(sha1(hex2bin(str_replace('-', '', $namespace->uid)).$name, true), 0, 16); - - return new UuidV5(self::format($uuid, '-5')); - } - - final public static function v6(): UuidV6 - { - return new UuidV6(); - } - - final public static function v7(): UuidV7 - { - return new UuidV7(); - } - - final public static function v8(string $uuid): UuidV8 - { - return new UuidV8($uuid); - } - - public static function isValid(string $uuid): bool - { - if (self::NIL === $uuid && \in_array(static::class, [__CLASS__, NilUuid::class], true)) { - return true; - } - - if (self::MAX === strtr($uuid, 'F', 'f') && \in_array(static::class, [__CLASS__, MaxUuid::class], true)) { - return true; - } - - if (!preg_match('{^[0-9a-f]{8}(?:-[0-9a-f]{4}){2}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$}Di', $uuid)) { - return false; - } - - return __CLASS__ === static::class || static::TYPE === (int) $uuid[14]; - } - - public function toBinary(): string - { - return uuid_parse($this->uid); - } - - /** - * Returns the identifier as a RFC 9562/4122 case insensitive string. - * - * @see https://datatracker.ietf.org/doc/html/rfc9562/#section-4 - * - * @example 09748193-048a-4bfb-b825-8528cf74fdc1 (len=36) - */ - public function toRfc4122(): string - { - return $this->uid; - } - - public function compare(AbstractUid $other): int - { - if (false !== $cmp = uuid_compare($this->uid, $other->uid)) { - return $cmp; - } - - return parent::compare($other); - } - - private static function format(string $uuid, string $version): string - { - $uuid[8] = $uuid[8] & "\x3F" | "\x80"; - $uuid = substr_replace(bin2hex($uuid), '-', 8, 0); - $uuid = substr_replace($uuid, $version, 13, 1); - $uuid = substr_replace($uuid, '-', 18, 0); - - return substr_replace($uuid, '-', 23, 0); - } -} diff --git a/docker/streamline-src/vendor/symfony/uid/UuidV1.php b/docker/streamline-src/vendor/symfony/uid/UuidV1.php deleted file mode 100644 index 1e687370..00000000 --- a/docker/streamline-src/vendor/symfony/uid/UuidV1.php +++ /dev/null @@ -1,73 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Uid; - -/** - * A v1 UUID contains a 60-bit timestamp and 62 extra unique bits. - * - * @author Grégoire Pineau - */ -class UuidV1 extends Uuid implements TimeBasedUidInterface -{ - protected const TYPE = 1; - - private static string $clockSeq; - - public function __construct(?string $uuid = null) - { - if (null === $uuid) { - $this->uid = strtolower(uuid_create(static::TYPE)); - } else { - parent::__construct($uuid, true); - } - } - - public function getDateTime(): \DateTimeImmutable - { - return BinaryUtil::hexToDateTime('0'.substr($this->uid, 15, 3).substr($this->uid, 9, 4).substr($this->uid, 0, 8)); - } - - public function getNode(): string - { - return uuid_mac($this->uid); - } - - public static function generate(?\DateTimeInterface $time = null, ?Uuid $node = null): string - { - $uuid = !$time || !$node ? uuid_create(static::TYPE) : parent::NIL; - - if ($time) { - if ($node) { - // use clock_seq from the node - $seq = substr($node->uid, 19, 4); - } elseif (!$seq = self::$clockSeq ?? '') { - // generate a static random clock_seq to prevent any collisions with the real one - $seq = substr($uuid, 19, 4); - - do { - self::$clockSeq = sprintf('%04x', random_int(0, 0x3FFF) | 0x8000); - } while ($seq === self::$clockSeq); - - $seq = self::$clockSeq; - } - - $time = BinaryUtil::dateTimeToHex($time); - $uuid = substr($time, 8).'-'.substr($time, 4, 4).'-1'.substr($time, 1, 3).'-'.$seq.substr($uuid, 23); - } - - if ($node) { - $uuid = substr($uuid, 0, 24).substr($node->uid, 24); - } - - return $uuid; - } -} diff --git a/docker/streamline-src/vendor/symfony/var-dumper/Caster/ClassStub.php b/docker/streamline-src/vendor/symfony/var-dumper/Caster/ClassStub.php deleted file mode 100644 index bf0d056c..00000000 --- a/docker/streamline-src/vendor/symfony/var-dumper/Caster/ClassStub.php +++ /dev/null @@ -1,107 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\VarDumper\Caster; - -use Symfony\Component\VarDumper\Cloner\Stub; - -/** - * Represents a PHP class identifier. - * - * @author Nicolas Grekas - */ -class ClassStub extends ConstStub -{ - /** - * @param string $identifier A PHP identifier, e.g. a class, method, interface, etc. name - * @param callable $callable The callable targeted by the identifier when it is ambiguous or not a real PHP identifier - */ - public function __construct(string $identifier, callable|array|string|null $callable = null) - { - $this->value = $identifier; - - try { - if (null !== $callable) { - if ($callable instanceof \Closure) { - $r = new \ReflectionFunction($callable); - } elseif (\is_object($callable)) { - $r = [$callable, '__invoke']; - } elseif (\is_array($callable)) { - $r = $callable; - } elseif (false !== $i = strpos($callable, '::')) { - $r = [substr($callable, 0, $i), substr($callable, 2 + $i)]; - } else { - $r = new \ReflectionFunction($callable); - } - } elseif (0 < $i = strpos($identifier, '::') ?: strpos($identifier, '->')) { - $r = [substr($identifier, 0, $i), substr($identifier, 2 + $i)]; - } else { - $r = new \ReflectionClass($identifier); - } - - if (\is_array($r)) { - try { - $r = new \ReflectionMethod($r[0], $r[1]); - } catch (\ReflectionException) { - $r = new \ReflectionClass($r[0]); - } - } - - if (str_contains($identifier, "@anonymous\0")) { - $this->value = $identifier = preg_replace_callback('/[a-zA-Z_\x7f-\xff][\\\\a-zA-Z0-9_\x7f-\xff]*+@anonymous\x00.*?\.php(?:0x?|:[0-9]++\$)?[0-9a-fA-F]++/', fn ($m) => class_exists($m[0], false) ? (get_parent_class($m[0]) ?: key(class_implements($m[0])) ?: 'class').'@anonymous' : $m[0], $identifier); - } - - if (null !== $callable && $r instanceof \ReflectionFunctionAbstract) { - $s = ReflectionCaster::castFunctionAbstract($r, [], new Stub(), true, Caster::EXCLUDE_VERBOSE); - $s = ReflectionCaster::getSignature($s); - - if (str_ends_with($identifier, '()')) { - $this->value = substr_replace($identifier, $s, -2); - } else { - $this->value .= $s; - } - } - } catch (\ReflectionException) { - return; - } finally { - if (0 < $i = strrpos($this->value, '\\')) { - $this->attr['ellipsis'] = \strlen($this->value) - $i; - $this->attr['ellipsis-type'] = 'class'; - $this->attr['ellipsis-tail'] = 1; - } - } - - if ($f = $r->getFileName()) { - $this->attr['file'] = $f; - $this->attr['line'] = $r->getStartLine(); - } - } - - /** - * @return mixed - */ - public static function wrapCallable(mixed $callable) - { - if (\is_object($callable) || !\is_callable($callable)) { - return $callable; - } - - if (!\is_array($callable)) { - $callable = new static($callable, $callable); - } elseif (\is_string($callable[0])) { - $callable[0] = new static($callable[0], $callable); - } else { - $callable[1] = new static($callable[1], $callable); - } - - return $callable; - } -} diff --git a/docker/streamline-src/vendor/symfony/var-dumper/Caster/DOMCaster.php b/docker/streamline-src/vendor/symfony/var-dumper/Caster/DOMCaster.php deleted file mode 100644 index 4135fbfe..00000000 --- a/docker/streamline-src/vendor/symfony/var-dumper/Caster/DOMCaster.php +++ /dev/null @@ -1,305 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\VarDumper\Caster; - -use Symfony\Component\VarDumper\Cloner\Stub; - -/** - * Casts DOM related classes to array representation. - * - * @author Nicolas Grekas - * - * @final - */ -class DOMCaster -{ - private const ERROR_CODES = [ - 0 => 'DOM_PHP_ERR', - \DOM_INDEX_SIZE_ERR => 'DOM_INDEX_SIZE_ERR', - \DOMSTRING_SIZE_ERR => 'DOMSTRING_SIZE_ERR', - \DOM_HIERARCHY_REQUEST_ERR => 'DOM_HIERARCHY_REQUEST_ERR', - \DOM_WRONG_DOCUMENT_ERR => 'DOM_WRONG_DOCUMENT_ERR', - \DOM_INVALID_CHARACTER_ERR => 'DOM_INVALID_CHARACTER_ERR', - \DOM_NO_DATA_ALLOWED_ERR => 'DOM_NO_DATA_ALLOWED_ERR', - \DOM_NO_MODIFICATION_ALLOWED_ERR => 'DOM_NO_MODIFICATION_ALLOWED_ERR', - \DOM_NOT_FOUND_ERR => 'DOM_NOT_FOUND_ERR', - \DOM_NOT_SUPPORTED_ERR => 'DOM_NOT_SUPPORTED_ERR', - \DOM_INUSE_ATTRIBUTE_ERR => 'DOM_INUSE_ATTRIBUTE_ERR', - \DOM_INVALID_STATE_ERR => 'DOM_INVALID_STATE_ERR', - \DOM_SYNTAX_ERR => 'DOM_SYNTAX_ERR', - \DOM_INVALID_MODIFICATION_ERR => 'DOM_INVALID_MODIFICATION_ERR', - \DOM_NAMESPACE_ERR => 'DOM_NAMESPACE_ERR', - \DOM_INVALID_ACCESS_ERR => 'DOM_INVALID_ACCESS_ERR', - \DOM_VALIDATION_ERR => 'DOM_VALIDATION_ERR', - ]; - - private const NODE_TYPES = [ - \XML_ELEMENT_NODE => 'XML_ELEMENT_NODE', - \XML_ATTRIBUTE_NODE => 'XML_ATTRIBUTE_NODE', - \XML_TEXT_NODE => 'XML_TEXT_NODE', - \XML_CDATA_SECTION_NODE => 'XML_CDATA_SECTION_NODE', - \XML_ENTITY_REF_NODE => 'XML_ENTITY_REF_NODE', - \XML_ENTITY_NODE => 'XML_ENTITY_NODE', - \XML_PI_NODE => 'XML_PI_NODE', - \XML_COMMENT_NODE => 'XML_COMMENT_NODE', - \XML_DOCUMENT_NODE => 'XML_DOCUMENT_NODE', - \XML_DOCUMENT_TYPE_NODE => 'XML_DOCUMENT_TYPE_NODE', - \XML_DOCUMENT_FRAG_NODE => 'XML_DOCUMENT_FRAG_NODE', - \XML_NOTATION_NODE => 'XML_NOTATION_NODE', - \XML_HTML_DOCUMENT_NODE => 'XML_HTML_DOCUMENT_NODE', - \XML_DTD_NODE => 'XML_DTD_NODE', - \XML_ELEMENT_DECL_NODE => 'XML_ELEMENT_DECL_NODE', - \XML_ATTRIBUTE_DECL_NODE => 'XML_ATTRIBUTE_DECL_NODE', - \XML_ENTITY_DECL_NODE => 'XML_ENTITY_DECL_NODE', - \XML_NAMESPACE_DECL_NODE => 'XML_NAMESPACE_DECL_NODE', - ]; - - /** - * @return array - */ - public static function castException(\DOMException $e, array $a, Stub $stub, bool $isNested) - { - $k = Caster::PREFIX_PROTECTED.'code'; - if (isset($a[$k], self::ERROR_CODES[$a[$k]])) { - $a[$k] = new ConstStub(self::ERROR_CODES[$a[$k]], $a[$k]); - } - - return $a; - } - - /** - * @return array - */ - public static function castLength($dom, array $a, Stub $stub, bool $isNested) - { - $a += [ - 'length' => $dom->length, - ]; - - return $a; - } - - /** - * @return array - */ - public static function castImplementation(\DOMImplementation $dom, array $a, Stub $stub, bool $isNested) - { - $a += [ - Caster::PREFIX_VIRTUAL.'Core' => '1.0', - Caster::PREFIX_VIRTUAL.'XML' => '2.0', - ]; - - return $a; - } - - /** - * @return array - */ - public static function castNode(\DOMNode $dom, array $a, Stub $stub, bool $isNested) - { - $a += [ - 'nodeName' => $dom->nodeName, - 'nodeValue' => new CutStub($dom->nodeValue), - 'nodeType' => new ConstStub(self::NODE_TYPES[$dom->nodeType], $dom->nodeType), - 'parentNode' => new CutStub($dom->parentNode), - 'childNodes' => $dom->childNodes, - 'firstChild' => new CutStub($dom->firstChild), - 'lastChild' => new CutStub($dom->lastChild), - 'previousSibling' => new CutStub($dom->previousSibling), - 'nextSibling' => new CutStub($dom->nextSibling), - 'attributes' => $dom->attributes, - 'ownerDocument' => new CutStub($dom->ownerDocument), - 'namespaceURI' => $dom->namespaceURI, - 'prefix' => $dom->prefix, - 'localName' => $dom->localName, - 'baseURI' => $dom->baseURI ? new LinkStub($dom->baseURI) : $dom->baseURI, - 'textContent' => new CutStub($dom->textContent), - ]; - - return $a; - } - - /** - * @return array - */ - public static function castNameSpaceNode(\DOMNameSpaceNode $dom, array $a, Stub $stub, bool $isNested) - { - $a += [ - 'nodeName' => $dom->nodeName, - 'nodeValue' => new CutStub($dom->nodeValue), - 'nodeType' => new ConstStub(self::NODE_TYPES[$dom->nodeType], $dom->nodeType), - 'prefix' => $dom->prefix, - 'localName' => $dom->localName, - 'namespaceURI' => $dom->namespaceURI, - 'ownerDocument' => new CutStub($dom->ownerDocument), - 'parentNode' => new CutStub($dom->parentNode), - ]; - - return $a; - } - - /** - * @return array - */ - public static function castDocument(\DOMDocument $dom, array $a, Stub $stub, bool $isNested, int $filter = 0) - { - $a += [ - 'doctype' => $dom->doctype, - 'implementation' => $dom->implementation, - 'documentElement' => new CutStub($dom->documentElement), - 'encoding' => $dom->encoding, - 'xmlEncoding' => $dom->xmlEncoding, - 'xmlStandalone' => $dom->xmlStandalone, - 'xmlVersion' => $dom->xmlVersion, - 'strictErrorChecking' => $dom->strictErrorChecking, - 'documentURI' => $dom->documentURI ? new LinkStub($dom->documentURI) : $dom->documentURI, - 'formatOutput' => $dom->formatOutput, - 'validateOnParse' => $dom->validateOnParse, - 'resolveExternals' => $dom->resolveExternals, - 'preserveWhiteSpace' => $dom->preserveWhiteSpace, - 'recover' => $dom->recover, - 'substituteEntities' => $dom->substituteEntities, - ]; - - if (!($filter & Caster::EXCLUDE_VERBOSE)) { - $formatOutput = $dom->formatOutput; - $dom->formatOutput = true; - $a += [Caster::PREFIX_VIRTUAL.'xml' => $dom->saveXML()]; - $dom->formatOutput = $formatOutput; - } - - return $a; - } - - /** - * @return array - */ - public static function castCharacterData(\DOMCharacterData $dom, array $a, Stub $stub, bool $isNested) - { - $a += [ - 'data' => $dom->data, - 'length' => $dom->length, - ]; - - return $a; - } - - /** - * @return array - */ - public static function castAttr(\DOMAttr $dom, array $a, Stub $stub, bool $isNested) - { - $a += [ - 'name' => $dom->name, - 'specified' => $dom->specified, - 'value' => $dom->value, - 'ownerElement' => $dom->ownerElement, - 'schemaTypeInfo' => $dom->schemaTypeInfo, - ]; - - return $a; - } - - /** - * @return array - */ - public static function castElement(\DOMElement $dom, array $a, Stub $stub, bool $isNested) - { - $a += [ - 'tagName' => $dom->tagName, - 'schemaTypeInfo' => $dom->schemaTypeInfo, - ]; - - return $a; - } - - /** - * @return array - */ - public static function castText(\DOMText $dom, array $a, Stub $stub, bool $isNested) - { - $a += [ - 'wholeText' => $dom->wholeText, - ]; - - return $a; - } - - /** - * @return array - */ - public static function castDocumentType(\DOMDocumentType $dom, array $a, Stub $stub, bool $isNested) - { - $a += [ - 'name' => $dom->name, - 'entities' => $dom->entities, - 'notations' => $dom->notations, - 'publicId' => $dom->publicId, - 'systemId' => $dom->systemId, - 'internalSubset' => $dom->internalSubset, - ]; - - return $a; - } - - /** - * @return array - */ - public static function castNotation(\DOMNotation $dom, array $a, Stub $stub, bool $isNested) - { - $a += [ - 'publicId' => $dom->publicId, - 'systemId' => $dom->systemId, - ]; - - return $a; - } - - /** - * @return array - */ - public static function castEntity(\DOMEntity $dom, array $a, Stub $stub, bool $isNested) - { - $a += [ - 'publicId' => $dom->publicId, - 'systemId' => $dom->systemId, - 'notationName' => $dom->notationName, - ]; - - return $a; - } - - /** - * @return array - */ - public static function castProcessingInstruction(\DOMProcessingInstruction $dom, array $a, Stub $stub, bool $isNested) - { - $a += [ - 'target' => $dom->target, - 'data' => $dom->data, - ]; - - return $a; - } - - /** - * @return array - */ - public static function castXPath(\DOMXPath $dom, array $a, Stub $stub, bool $isNested) - { - $a += [ - 'document' => $dom->document, - ]; - - return $a; - } -} diff --git a/docker/streamline-src/vendor/symfony/var-dumper/Caster/ExceptionCaster.php b/docker/streamline-src/vendor/symfony/var-dumper/Caster/ExceptionCaster.php deleted file mode 100644 index 3dff5dca..00000000 --- a/docker/streamline-src/vendor/symfony/var-dumper/Caster/ExceptionCaster.php +++ /dev/null @@ -1,419 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\VarDumper\Caster; - -use Symfony\Component\ErrorHandler\Exception\FlattenException; -use Symfony\Component\ErrorHandler\Exception\SilencedErrorContext; -use Symfony\Component\VarDumper\Cloner\Stub; -use Symfony\Component\VarDumper\Exception\ThrowingCasterException; - -/** - * Casts common Exception classes to array representation. - * - * @author Nicolas Grekas - * - * @final - */ -class ExceptionCaster -{ - public static int $srcContext = 1; - public static bool $traceArgs = true; - public static array $errorTypes = [ - \E_DEPRECATED => 'E_DEPRECATED', - \E_USER_DEPRECATED => 'E_USER_DEPRECATED', - \E_RECOVERABLE_ERROR => 'E_RECOVERABLE_ERROR', - \E_ERROR => 'E_ERROR', - \E_WARNING => 'E_WARNING', - \E_PARSE => 'E_PARSE', - \E_NOTICE => 'E_NOTICE', - \E_CORE_ERROR => 'E_CORE_ERROR', - \E_CORE_WARNING => 'E_CORE_WARNING', - \E_COMPILE_ERROR => 'E_COMPILE_ERROR', - \E_COMPILE_WARNING => 'E_COMPILE_WARNING', - \E_USER_ERROR => 'E_USER_ERROR', - \E_USER_WARNING => 'E_USER_WARNING', - \E_USER_NOTICE => 'E_USER_NOTICE', - 2048 => 'E_STRICT', - ]; - - private static array $framesCache = []; - - /** - * @return array - */ - public static function castError(\Error $e, array $a, Stub $stub, bool $isNested, int $filter = 0) - { - return self::filterExceptionArray($stub->class, $a, "\0Error\0", $filter); - } - - /** - * @return array - */ - public static function castException(\Exception $e, array $a, Stub $stub, bool $isNested, int $filter = 0) - { - return self::filterExceptionArray($stub->class, $a, "\0Exception\0", $filter); - } - - /** - * @return array - */ - public static function castErrorException(\ErrorException $e, array $a, Stub $stub, bool $isNested) - { - if (isset($a[$s = Caster::PREFIX_PROTECTED.'severity'], self::$errorTypes[$a[$s]])) { - $a[$s] = new ConstStub(self::$errorTypes[$a[$s]], $a[$s]); - } - - return $a; - } - - /** - * @return array - */ - public static function castThrowingCasterException(ThrowingCasterException $e, array $a, Stub $stub, bool $isNested) - { - $trace = Caster::PREFIX_VIRTUAL.'trace'; - $prefix = Caster::PREFIX_PROTECTED; - $xPrefix = "\0Exception\0"; - - if (isset($a[$xPrefix.'previous'], $a[$trace]) && $a[$xPrefix.'previous'] instanceof \Exception) { - $b = (array) $a[$xPrefix.'previous']; - $class = get_debug_type($a[$xPrefix.'previous']); - self::traceUnshift($b[$xPrefix.'trace'], $class, $b[$prefix.'file'], $b[$prefix.'line']); - $a[$trace] = new TraceStub($b[$xPrefix.'trace'], false, 0, -\count($a[$trace]->value)); - } - - unset($a[$xPrefix.'previous'], $a[$prefix.'code'], $a[$prefix.'file'], $a[$prefix.'line']); - - return $a; - } - - /** - * @return array - */ - public static function castSilencedErrorContext(SilencedErrorContext $e, array $a, Stub $stub, bool $isNested) - { - $sPrefix = "\0".SilencedErrorContext::class."\0"; - - if (!isset($a[$s = $sPrefix.'severity'])) { - return $a; - } - - if (isset(self::$errorTypes[$a[$s]])) { - $a[$s] = new ConstStub(self::$errorTypes[$a[$s]], $a[$s]); - } - - $trace = [[ - 'file' => $a[$sPrefix.'file'], - 'line' => $a[$sPrefix.'line'], - ]]; - - if (isset($a[$sPrefix.'trace'])) { - $trace = array_merge($trace, $a[$sPrefix.'trace']); - } - - unset($a[$sPrefix.'file'], $a[$sPrefix.'line'], $a[$sPrefix.'trace']); - $a[Caster::PREFIX_VIRTUAL.'trace'] = new TraceStub($trace, self::$traceArgs); - - return $a; - } - - /** - * @return array - */ - public static function castTraceStub(TraceStub $trace, array $a, Stub $stub, bool $isNested) - { - if (!$isNested) { - return $a; - } - $stub->class = ''; - $stub->handle = 0; - $frames = $trace->value; - $prefix = Caster::PREFIX_VIRTUAL; - - $a = []; - $j = \count($frames); - if (0 > $i = $trace->sliceOffset) { - $i = max(0, $j + $i); - } - if (!isset($trace->value[$i])) { - return []; - } - $lastCall = isset($frames[$i]['function']) ? (isset($frames[$i]['class']) ? $frames[0]['class'].$frames[$i]['type'] : '').$frames[$i]['function'].'()' : ''; - $frames[] = ['function' => '']; - $collapse = false; - - for ($j += $trace->numberingOffset - $i++; isset($frames[$i]); ++$i, --$j) { - $f = $frames[$i]; - $call = isset($f['function']) ? (isset($f['class']) ? $f['class'].$f['type'] : '').$f['function'] : '???'; - - $frame = new FrameStub( - [ - 'object' => $f['object'] ?? null, - 'class' => $f['class'] ?? null, - 'type' => $f['type'] ?? null, - 'function' => $f['function'] ?? null, - ] + $frames[$i - 1], - false, - true - ); - $f = self::castFrameStub($frame, [], $frame, true); - if (isset($f[$prefix.'src'])) { - foreach ($f[$prefix.'src']->value as $label => $frame) { - if (str_starts_with($label, "\0~collapse=0")) { - if ($collapse) { - $label = substr_replace($label, '1', 11, 1); - } else { - $collapse = true; - } - } - $label = substr_replace($label, "title=Stack level $j.&", 2, 0); - } - $f = $frames[$i - 1]; - if ($trace->keepArgs && !empty($f['args']) && $frame instanceof EnumStub) { - $frame->value['arguments'] = new ArgsStub($f['args'], $f['function'] ?? null, $f['class'] ?? null); - } - } elseif ('???' !== $lastCall) { - $label = new ClassStub($lastCall); - if (isset($label->attr['ellipsis'])) { - $label->attr['ellipsis'] += 2; - $label = substr_replace($prefix, "ellipsis-type=class&ellipsis={$label->attr['ellipsis']}&ellipsis-tail=1&title=Stack level $j.", 2, 0).$label->value.'()'; - } else { - $label = substr_replace($prefix, "title=Stack level $j.", 2, 0).$label->value.'()'; - } - } else { - $label = substr_replace($prefix, "title=Stack level $j.", 2, 0).$lastCall; - } - $a[substr_replace($label, sprintf('separator=%s&', $frame instanceof EnumStub ? ' ' : ':'), 2, 0)] = $frame; - - $lastCall = $call; - } - if (null !== $trace->sliceLength) { - $a = \array_slice($a, 0, $trace->sliceLength, true); - } - - return $a; - } - - /** - * @return array - */ - public static function castFrameStub(FrameStub $frame, array $a, Stub $stub, bool $isNested) - { - if (!$isNested) { - return $a; - } - $f = $frame->value; - $prefix = Caster::PREFIX_VIRTUAL; - - if (isset($f['file'], $f['line'])) { - $cacheKey = $f; - unset($cacheKey['object'], $cacheKey['args']); - $cacheKey[] = self::$srcContext; - $cacheKey = implode('-', $cacheKey); - - if (isset(self::$framesCache[$cacheKey])) { - $a[$prefix.'src'] = self::$framesCache[$cacheKey]; - } else { - if (preg_match('/\((\d+)\)(?:\([\da-f]{32}\))? : (?:eval\(\)\'d code|runtime-created function)$/', $f['file'], $match)) { - $f['file'] = substr($f['file'], 0, -\strlen($match[0])); - $f['line'] = (int) $match[1]; - } - $src = $f['line']; - $srcKey = $f['file']; - $ellipsis = new LinkStub($srcKey, 0); - $srcAttr = 'collapse='.(int) $ellipsis->inVendor; - $ellipsisTail = $ellipsis->attr['ellipsis-tail'] ?? 0; - $ellipsis = $ellipsis->attr['ellipsis'] ?? 0; - - if (is_file($f['file']) && 0 <= self::$srcContext) { - if (!empty($f['class']) && (is_subclass_of($f['class'], 'Twig\Template') || is_subclass_of($f['class'], 'Twig_Template')) && method_exists($f['class'], 'getDebugInfo')) { - $template = null; - if (isset($f['object'])) { - $template = $f['object']; - } elseif ((new \ReflectionClass($f['class']))->isInstantiable()) { - $template = unserialize(sprintf('O:%d:"%s":0:{}', \strlen($f['class']), $f['class'])); - } - if (null !== $template) { - $ellipsis = 0; - $templateSrc = method_exists($template, 'getSourceContext') ? $template->getSourceContext()->getCode() : (method_exists($template, 'getSource') ? $template->getSource() : ''); - $templateInfo = $template->getDebugInfo(); - if (isset($templateInfo[$f['line']])) { - if (!method_exists($template, 'getSourceContext') || !is_file($templatePath = $template->getSourceContext()->getPath())) { - $templatePath = null; - } - if ($templateSrc) { - $src = self::extractSource($templateSrc, $templateInfo[$f['line']], self::$srcContext, 'twig', $templatePath, $f); - $srcKey = ($templatePath ?: $template->getTemplateName()).':'.$templateInfo[$f['line']]; - } - } - } - } - if ($srcKey == $f['file']) { - $src = self::extractSource(file_get_contents($f['file']), $f['line'], self::$srcContext, 'php', $f['file'], $f); - $srcKey .= ':'.$f['line']; - if ($ellipsis) { - $ellipsis += 1 + \strlen($f['line']); - } - } - $srcAttr .= sprintf('&separator= &file=%s&line=%d', rawurlencode($f['file']), $f['line']); - } else { - $srcAttr .= '&separator=:'; - } - $srcAttr .= $ellipsis ? '&ellipsis-type=path&ellipsis='.$ellipsis.'&ellipsis-tail='.$ellipsisTail : ''; - self::$framesCache[$cacheKey] = $a[$prefix.'src'] = new EnumStub(["\0~$srcAttr\0$srcKey" => $src]); - } - } - - unset($a[$prefix.'args'], $a[$prefix.'line'], $a[$prefix.'file']); - if ($frame->inTraceStub) { - unset($a[$prefix.'class'], $a[$prefix.'type'], $a[$prefix.'function']); - } - foreach ($a as $k => $v) { - if (!$v) { - unset($a[$k]); - } - } - if ($frame->keepArgs && !empty($f['args'])) { - $a[$prefix.'arguments'] = new ArgsStub($f['args'], $f['function'], $f['class']); - } - - return $a; - } - - /** - * @return array - */ - public static function castFlattenException(FlattenException $e, array $a, Stub $stub, bool $isNested) - { - if ($isNested) { - $k = sprintf(Caster::PATTERN_PRIVATE, FlattenException::class, 'traceAsString'); - $a[$k] = new CutStub($a[$k]); - } - - return $a; - } - - private static function filterExceptionArray(string $xClass, array $a, string $xPrefix, int $filter): array - { - if (isset($a[$xPrefix.'trace'])) { - $trace = $a[$xPrefix.'trace']; - unset($a[$xPrefix.'trace']); // Ensures the trace is always last - } else { - $trace = []; - } - - if (!($filter & Caster::EXCLUDE_VERBOSE) && $trace) { - if (isset($a[Caster::PREFIX_PROTECTED.'file'], $a[Caster::PREFIX_PROTECTED.'line'])) { - self::traceUnshift($trace, $xClass, $a[Caster::PREFIX_PROTECTED.'file'], $a[Caster::PREFIX_PROTECTED.'line']); - } - $a[Caster::PREFIX_VIRTUAL.'trace'] = new TraceStub($trace, self::$traceArgs); - } - if (empty($a[$xPrefix.'previous'])) { - unset($a[$xPrefix.'previous']); - } - unset($a[$xPrefix.'string'], $a[Caster::PREFIX_DYNAMIC.'xdebug_message']); - - if (isset($a[Caster::PREFIX_PROTECTED.'message']) && str_contains($a[Caster::PREFIX_PROTECTED.'message'], "@anonymous\0")) { - $a[Caster::PREFIX_PROTECTED.'message'] = preg_replace_callback('/[a-zA-Z_\x7f-\xff][\\\\a-zA-Z0-9_\x7f-\xff]*+@anonymous\x00.*?\.php(?:0x?|:[0-9]++\$)?[0-9a-fA-F]++/', fn ($m) => class_exists($m[0], false) ? (get_parent_class($m[0]) ?: key(class_implements($m[0])) ?: 'class').'@anonymous' : $m[0], $a[Caster::PREFIX_PROTECTED.'message']); - } - - if (isset($a[Caster::PREFIX_PROTECTED.'file'], $a[Caster::PREFIX_PROTECTED.'line'])) { - $a[Caster::PREFIX_PROTECTED.'file'] = new LinkStub($a[Caster::PREFIX_PROTECTED.'file'], $a[Caster::PREFIX_PROTECTED.'line']); - } - - return $a; - } - - private static function traceUnshift(array &$trace, ?string $class, string $file, int $line): void - { - if (isset($trace[0]['file'], $trace[0]['line']) && $trace[0]['file'] === $file && $trace[0]['line'] === $line) { - return; - } - array_unshift($trace, [ - 'function' => $class ? 'new '.$class : null, - 'file' => $file, - 'line' => $line, - ]); - } - - private static function extractSource(string $srcLines, int $line, int $srcContext, string $lang, ?string $file, array $frame): EnumStub - { - $srcLines = explode("\n", $srcLines); - $src = []; - - for ($i = $line - 1 - $srcContext; $i <= $line - 1 + $srcContext; ++$i) { - $src[] = ($srcLines[$i] ?? '')."\n"; - } - - if ($frame['function'] ?? false) { - $stub = new CutStub(new \stdClass()); - $stub->class = (isset($frame['class']) ? $frame['class'].$frame['type'] : '').$frame['function']; - $stub->type = Stub::TYPE_OBJECT; - $stub->attr['cut_hash'] = true; - $stub->attr['file'] = $frame['file']; - $stub->attr['line'] = $frame['line']; - - try { - $caller = isset($frame['class']) ? new \ReflectionMethod($frame['class'], $frame['function']) : new \ReflectionFunction($frame['function']); - $stub->class .= ReflectionCaster::getSignature(ReflectionCaster::castFunctionAbstract($caller, [], $stub, true, Caster::EXCLUDE_VERBOSE)); - - if ($f = $caller->getFileName()) { - $stub->attr['file'] = $f; - $stub->attr['line'] = $caller->getStartLine(); - } - } catch (\ReflectionException) { - // ignore fake class/function - } - - $srcLines = ["\0~separator=\0" => $stub]; - } else { - $stub = null; - $srcLines = []; - } - - $ltrim = 0; - do { - $pad = null; - for ($i = $srcContext << 1; $i >= 0; --$i) { - if (isset($src[$i][$ltrim]) && "\r" !== ($c = $src[$i][$ltrim]) && "\n" !== $c) { - $pad ??= $c; - if ((' ' !== $c && "\t" !== $c) || $pad !== $c) { - break; - } - } - } - ++$ltrim; - } while (0 > $i && null !== $pad); - - --$ltrim; - - foreach ($src as $i => $c) { - if ($ltrim) { - $c = isset($c[$ltrim]) && "\r" !== $c[$ltrim] ? substr($c, $ltrim) : ltrim($c, " \t"); - } - $c = substr($c, 0, -1); - if ($i !== $srcContext) { - $c = new ConstStub('default', $c); - } else { - $c = new ConstStub($c, $stub ? 'in '.$stub->class : ''); - if (null !== $file) { - $c->attr['file'] = $file; - $c->attr['line'] = $line; - } - } - $c->attr['lang'] = $lang; - $srcLines[sprintf("\0~separator=› &%d\0", $i + $line - $srcContext)] = $c; - } - - return new EnumStub($srcLines); - } -} diff --git a/docker/streamline-src/vendor/symfony/var-dumper/Caster/FFICaster.php b/docker/streamline-src/vendor/symfony/var-dumper/Caster/FFICaster.php deleted file mode 100644 index ffed9f31..00000000 --- a/docker/streamline-src/vendor/symfony/var-dumper/Caster/FFICaster.php +++ /dev/null @@ -1,171 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\VarDumper\Caster; - -use FFI\CData; -use FFI\CType; -use Symfony\Component\VarDumper\Cloner\Stub; - -/** - * Casts FFI extension classes to array representation. - * - * @author Nesmeyanov Kirill - */ -final class FFICaster -{ - /** - * In case of "char*" contains a string, the length of which depends on - * some other parameter, then during the generation of the string it is - * possible to go beyond the allowable memory area. - * - * This restriction serves to ensure that processing does not take - * up the entire allowable PHP memory limit. - */ - private const MAX_STRING_LENGTH = 255; - - public static function castCTypeOrCData(CData|CType $data, array $args, Stub $stub): array - { - if ($data instanceof CType) { - $type = $data; - $data = null; - } else { - $type = \FFI::typeof($data); - } - - $stub->class = sprintf('%s<%s> size %d align %d', ($data ?? $type)::class, $type->getName(), $type->getSize(), $type->getAlignment()); - - return match ($type->getKind()) { - CType::TYPE_FLOAT, - CType::TYPE_DOUBLE, - \defined('\FFI\CType::TYPE_LONGDOUBLE') ? CType::TYPE_LONGDOUBLE : -1, - CType::TYPE_UINT8, - CType::TYPE_SINT8, - CType::TYPE_UINT16, - CType::TYPE_SINT16, - CType::TYPE_UINT32, - CType::TYPE_SINT32, - CType::TYPE_UINT64, - CType::TYPE_SINT64, - CType::TYPE_BOOL, - CType::TYPE_CHAR, - CType::TYPE_ENUM => null !== $data ? [Caster::PREFIX_VIRTUAL.'cdata' => $data->cdata] : [], - CType::TYPE_POINTER => self::castFFIPointer($stub, $type, $data), - CType::TYPE_STRUCT => self::castFFIStructLike($type, $data), - CType::TYPE_FUNC => self::castFFIFunction($stub, $type), - default => $args, - }; - } - - private static function castFFIFunction(Stub $stub, CType $type): array - { - $arguments = []; - - for ($i = 0, $count = $type->getFuncParameterCount(); $i < $count; ++$i) { - $param = $type->getFuncParameterType($i); - - $arguments[] = $param->getName(); - } - - $abi = match ($type->getFuncABI()) { - CType::ABI_DEFAULT, - CType::ABI_CDECL => '[cdecl]', - CType::ABI_FASTCALL => '[fastcall]', - CType::ABI_THISCALL => '[thiscall]', - CType::ABI_STDCALL => '[stdcall]', - CType::ABI_PASCAL => '[pascal]', - CType::ABI_REGISTER => '[register]', - CType::ABI_MS => '[ms]', - CType::ABI_SYSV => '[sysv]', - CType::ABI_VECTORCALL => '[vectorcall]', - default => '[unknown abi]' - }; - - $returnType = $type->getFuncReturnType(); - - $stub->class = $abi.' callable('.implode(', ', $arguments).'): ' - .$returnType->getName(); - - return [Caster::PREFIX_VIRTUAL.'returnType' => $returnType]; - } - - private static function castFFIPointer(Stub $stub, CType $type, ?CData $data = null): array - { - $ptr = $type->getPointerType(); - - if (null === $data) { - return [Caster::PREFIX_VIRTUAL.'0' => $ptr]; - } - - return match ($ptr->getKind()) { - CType::TYPE_CHAR => [Caster::PREFIX_VIRTUAL.'cdata' => self::castFFIStringValue($data)], - CType::TYPE_FUNC => self::castFFIFunction($stub, $ptr), - default => [Caster::PREFIX_VIRTUAL.'cdata' => $data[0]], - }; - } - - private static function castFFIStringValue(CData $data): string|CutStub - { - $result = []; - $ffi = \FFI::cdef(<<zend_get_page_size(); - - // get cdata address - $start = $ffi->cast('uintptr_t', $ffi->cast('char*', $data))->cdata; - // accessing memory in the same page as $start is safe - $max = min(self::MAX_STRING_LENGTH, ($start | ($pageSize - 1)) - $start); - - for ($i = 0; $i < $max; ++$i) { - $result[$i] = $data[$i]; - - if ("\0" === $data[$i]) { - return implode('', $result); - } - } - - $string = implode('', $result); - $stub = new CutStub($string); - $stub->cut = -1; - $stub->value = $string; - - return $stub; - } - - private static function castFFIStructLike(CType $type, ?CData $data = null): array - { - $isUnion = ($type->getAttributes() & CType::ATTR_UNION) === CType::ATTR_UNION; - - $result = []; - - foreach ($type->getStructFieldNames() as $name) { - $field = $type->getStructFieldType($name); - - // Retrieving the value of a field from a union containing - // a pointer is not a safe operation, because may contain - // incorrect data. - $isUnsafe = $isUnion && CType::TYPE_POINTER === $field->getKind(); - - if ($isUnsafe) { - $result[Caster::PREFIX_VIRTUAL.$name.'?'] = $field; - } elseif (null === $data) { - $result[Caster::PREFIX_VIRTUAL.$name] = $field; - } else { - $fieldName = $data->{$name} instanceof CData ? '' : $field->getName().' '; - $result[Caster::PREFIX_VIRTUAL.$fieldName.$name] = $data->{$name}; - } - } - - return $result; - } -} diff --git a/docker/streamline-src/vendor/symfony/var-dumper/Caster/ReflectionCaster.php b/docker/streamline-src/vendor/symfony/var-dumper/Caster/ReflectionCaster.php deleted file mode 100644 index 1bd156c2..00000000 --- a/docker/streamline-src/vendor/symfony/var-dumper/Caster/ReflectionCaster.php +++ /dev/null @@ -1,491 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\VarDumper\Caster; - -use Symfony\Component\VarDumper\Cloner\Stub; - -/** - * Casts Reflector related classes to array representation. - * - * @author Nicolas Grekas - * - * @final - */ -class ReflectionCaster -{ - public const UNSET_CLOSURE_FILE_INFO = ['Closure' => __CLASS__.'::unsetClosureFileInfo']; - - private const EXTRA_MAP = [ - 'docComment' => 'getDocComment', - 'extension' => 'getExtensionName', - 'isDisabled' => 'isDisabled', - 'isDeprecated' => 'isDeprecated', - 'isInternal' => 'isInternal', - 'isUserDefined' => 'isUserDefined', - 'isGenerator' => 'isGenerator', - 'isVariadic' => 'isVariadic', - ]; - - /** - * @return array - */ - public static function castClosure(\Closure $c, array $a, Stub $stub, bool $isNested, int $filter = 0) - { - $prefix = Caster::PREFIX_VIRTUAL; - $c = new \ReflectionFunction($c); - - $a = static::castFunctionAbstract($c, $a, $stub, $isNested, $filter); - - if (!str_contains($c->name, '{closure')) { - $stub->class = isset($a[$prefix.'class']) ? $a[$prefix.'class']->value.'::'.$c->name : $c->name; - unset($a[$prefix.'class']); - } - unset($a[$prefix.'extra']); - - $stub->class .= self::getSignature($a); - - if ($f = $c->getFileName()) { - $stub->attr['file'] = $f; - $stub->attr['line'] = $c->getStartLine(); - } - - unset($a[$prefix.'parameters']); - - if ($filter & Caster::EXCLUDE_VERBOSE) { - $stub->cut += ($c->getFileName() ? 2 : 0) + \count($a); - - return []; - } - - if ($f) { - $a[$prefix.'file'] = new LinkStub($f, $c->getStartLine()); - $a[$prefix.'line'] = $c->getStartLine().' to '.$c->getEndLine(); - } - - return $a; - } - - /** - * @return array - */ - public static function unsetClosureFileInfo(\Closure $c, array $a) - { - unset($a[Caster::PREFIX_VIRTUAL.'file'], $a[Caster::PREFIX_VIRTUAL.'line']); - - return $a; - } - - public static function castGenerator(\Generator $c, array $a, Stub $stub, bool $isNested): array - { - // Cannot create ReflectionGenerator based on a terminated Generator - try { - $reflectionGenerator = new \ReflectionGenerator($c); - - return self::castReflectionGenerator($reflectionGenerator, $a, $stub, $isNested); - } catch (\Exception) { - $a[Caster::PREFIX_VIRTUAL.'closed'] = true; - - return $a; - } - } - - /** - * @return array - */ - public static function castType(\ReflectionType $c, array $a, Stub $stub, bool $isNested) - { - $prefix = Caster::PREFIX_VIRTUAL; - - if ($c instanceof \ReflectionNamedType) { - $a += [ - $prefix.'name' => $c instanceof \ReflectionNamedType ? $c->getName() : (string) $c, - $prefix.'allowsNull' => $c->allowsNull(), - $prefix.'isBuiltin' => $c->isBuiltin(), - ]; - } elseif ($c instanceof \ReflectionUnionType || $c instanceof \ReflectionIntersectionType) { - $a[$prefix.'allowsNull'] = $c->allowsNull(); - self::addMap($a, $c, [ - 'types' => 'getTypes', - ]); - } else { - $a[$prefix.'allowsNull'] = $c->allowsNull(); - } - - return $a; - } - - /** - * @return array - */ - public static function castAttribute(\ReflectionAttribute $c, array $a, Stub $stub, bool $isNested) - { - $map = [ - 'name' => 'getName', - 'arguments' => 'getArguments', - ]; - - if (\PHP_VERSION_ID >= 80400) { - unset($map['name']); - } - - self::addMap($a, $c, $map); - - return $a; - } - - /** - * @return array - */ - public static function castReflectionGenerator(\ReflectionGenerator $c, array $a, Stub $stub, bool $isNested) - { - $prefix = Caster::PREFIX_VIRTUAL; - - if ($c->getThis()) { - $a[$prefix.'this'] = new CutStub($c->getThis()); - } - $function = $c->getFunction(); - $frame = [ - 'class' => $function->class ?? null, - 'type' => isset($function->class) ? ($function->isStatic() ? '::' : '->') : null, - 'function' => $function->name, - 'file' => $c->getExecutingFile(), - 'line' => $c->getExecutingLine(), - ]; - if ($trace = $c->getTrace(\DEBUG_BACKTRACE_IGNORE_ARGS)) { - $function = new \ReflectionGenerator($c->getExecutingGenerator()); - array_unshift($trace, [ - 'function' => 'yield', - 'file' => $function->getExecutingFile(), - 'line' => $function->getExecutingLine(), - ]); - $trace[] = $frame; - $a[$prefix.'trace'] = new TraceStub($trace, false, 0, -1, -1); - } else { - $function = new FrameStub($frame, false, true); - $function = ExceptionCaster::castFrameStub($function, [], $function, true); - $a[$prefix.'executing'] = $function[$prefix.'src']; - } - - $a[Caster::PREFIX_VIRTUAL.'closed'] = false; - - return $a; - } - - /** - * @return array - */ - public static function castClass(\ReflectionClass $c, array $a, Stub $stub, bool $isNested, int $filter = 0) - { - $prefix = Caster::PREFIX_VIRTUAL; - - if ($n = \Reflection::getModifierNames($c->getModifiers())) { - $a[$prefix.'modifiers'] = implode(' ', $n); - } - - self::addMap($a, $c, [ - 'extends' => 'getParentClass', - 'implements' => 'getInterfaceNames', - 'constants' => 'getReflectionConstants', - ]); - - foreach ($c->getProperties() as $n) { - $a[$prefix.'properties'][$n->name] = $n; - } - - foreach ($c->getMethods() as $n) { - $a[$prefix.'methods'][$n->name] = $n; - } - - self::addAttributes($a, $c, $prefix); - - if (!($filter & Caster::EXCLUDE_VERBOSE) && !$isNested) { - self::addExtra($a, $c); - } - - return $a; - } - - /** - * @return array - */ - public static function castFunctionAbstract(\ReflectionFunctionAbstract $c, array $a, Stub $stub, bool $isNested, int $filter = 0) - { - $prefix = Caster::PREFIX_VIRTUAL; - - self::addMap($a, $c, [ - 'returnsReference' => 'returnsReference', - 'returnType' => 'getReturnType', - 'class' => \PHP_VERSION_ID >= 80111 ? 'getClosureCalledClass' : 'getClosureScopeClass', - 'this' => 'getClosureThis', - ]); - - if (isset($a[$prefix.'returnType'])) { - $v = $a[$prefix.'returnType']; - $v = $v instanceof \ReflectionNamedType ? $v->getName() : (string) $v; - $a[$prefix.'returnType'] = new ClassStub($a[$prefix.'returnType'] instanceof \ReflectionNamedType && $a[$prefix.'returnType']->allowsNull() && !\in_array($v, ['mixed', 'null'], true) ? '?'.$v : $v, [class_exists($v, false) || interface_exists($v, false) || trait_exists($v, false) ? $v : '', '']); - } - if (isset($a[$prefix.'class'])) { - $a[$prefix.'class'] = new ClassStub($a[$prefix.'class']); - } - if (isset($a[$prefix.'this'])) { - $a[$prefix.'this'] = new CutStub($a[$prefix.'this']); - } - - foreach ($c->getParameters() as $v) { - $k = '$'.$v->name; - if ($v->isVariadic()) { - $k = '...'.$k; - } - if ($v->isPassedByReference()) { - $k = '&'.$k; - } - $a[$prefix.'parameters'][$k] = $v; - } - if (isset($a[$prefix.'parameters'])) { - $a[$prefix.'parameters'] = new EnumStub($a[$prefix.'parameters']); - } - - self::addAttributes($a, $c, $prefix); - - if (!($filter & Caster::EXCLUDE_VERBOSE) && $v = $c->getStaticVariables()) { - foreach ($v as $k => &$v) { - if (\is_object($v)) { - $a[$prefix.'use']['$'.$k] = new CutStub($v); - } else { - $a[$prefix.'use']['$'.$k] = &$v; - } - } - unset($v); - $a[$prefix.'use'] = new EnumStub($a[$prefix.'use']); - } - - if (!($filter & Caster::EXCLUDE_VERBOSE) && !$isNested) { - self::addExtra($a, $c); - } - - return $a; - } - - /** - * @return array - */ - public static function castClassConstant(\ReflectionClassConstant $c, array $a, Stub $stub, bool $isNested) - { - $a[Caster::PREFIX_VIRTUAL.'modifiers'] = implode(' ', \Reflection::getModifierNames($c->getModifiers())); - $a[Caster::PREFIX_VIRTUAL.'value'] = $c->getValue(); - - self::addAttributes($a, $c); - - return $a; - } - - /** - * @return array - */ - public static function castMethod(\ReflectionMethod $c, array $a, Stub $stub, bool $isNested) - { - $a[Caster::PREFIX_VIRTUAL.'modifiers'] = implode(' ', \Reflection::getModifierNames($c->getModifiers())); - - return $a; - } - - /** - * @return array - */ - public static function castParameter(\ReflectionParameter $c, array $a, Stub $stub, bool $isNested) - { - $prefix = Caster::PREFIX_VIRTUAL; - - self::addMap($a, $c, [ - 'position' => 'getPosition', - 'isVariadic' => 'isVariadic', - 'byReference' => 'isPassedByReference', - 'allowsNull' => 'allowsNull', - ]); - - self::addAttributes($a, $c, $prefix); - - if ($v = $c->getType()) { - $a[$prefix.'typeHint'] = $v instanceof \ReflectionNamedType ? $v->getName() : (string) $v; - } - - if (isset($a[$prefix.'typeHint'])) { - $v = $a[$prefix.'typeHint']; - $a[$prefix.'typeHint'] = new ClassStub($v, [class_exists($v, false) || interface_exists($v, false) || trait_exists($v, false) ? $v : '', '']); - } else { - unset($a[$prefix.'allowsNull']); - } - - if ($c->isOptional()) { - try { - $a[$prefix.'default'] = $v = $c->getDefaultValue(); - if ($c->isDefaultValueConstant() && !\is_object($v)) { - $a[$prefix.'default'] = new ConstStub($c->getDefaultValueConstantName(), $v); - } - if (null === $v) { - unset($a[$prefix.'allowsNull']); - } - } catch (\ReflectionException) { - } - } - - return $a; - } - - /** - * @return array - */ - public static function castProperty(\ReflectionProperty $c, array $a, Stub $stub, bool $isNested) - { - $a[Caster::PREFIX_VIRTUAL.'modifiers'] = implode(' ', \Reflection::getModifierNames($c->getModifiers())); - - self::addAttributes($a, $c); - self::addExtra($a, $c); - - return $a; - } - - /** - * @return array - */ - public static function castReference(\ReflectionReference $c, array $a, Stub $stub, bool $isNested) - { - $a[Caster::PREFIX_VIRTUAL.'id'] = $c->getId(); - - return $a; - } - - /** - * @return array - */ - public static function castExtension(\ReflectionExtension $c, array $a, Stub $stub, bool $isNested) - { - self::addMap($a, $c, [ - 'version' => 'getVersion', - 'dependencies' => 'getDependencies', - 'iniEntries' => 'getIniEntries', - 'isPersistent' => 'isPersistent', - 'isTemporary' => 'isTemporary', - 'constants' => 'getConstants', - 'functions' => 'getFunctions', - 'classes' => 'getClasses', - ]); - - return $a; - } - - /** - * @return array - */ - public static function castZendExtension(\ReflectionZendExtension $c, array $a, Stub $stub, bool $isNested) - { - self::addMap($a, $c, [ - 'version' => 'getVersion', - 'author' => 'getAuthor', - 'copyright' => 'getCopyright', - 'url' => 'getURL', - ]); - - return $a; - } - - /** - * @return string - */ - public static function getSignature(array $a) - { - $prefix = Caster::PREFIX_VIRTUAL; - $signature = ''; - - if (isset($a[$prefix.'parameters'])) { - foreach ($a[$prefix.'parameters']->value as $k => $param) { - $signature .= ', '; - if ($type = $param->getType()) { - if (!$type instanceof \ReflectionNamedType) { - $signature .= $type.' '; - } else { - if ($param->allowsNull() && !\in_array($type->getName(), ['mixed', 'null'], true)) { - $signature .= '?'; - } - $signature .= substr(strrchr('\\'.$type->getName(), '\\'), 1).' '; - } - } - $signature .= $k; - - if (!$param->isDefaultValueAvailable()) { - continue; - } - $v = $param->getDefaultValue(); - $signature .= ' = '; - - if ($param->isDefaultValueConstant()) { - $signature .= substr(strrchr('\\'.$param->getDefaultValueConstantName(), '\\'), 1); - } elseif (null === $v) { - $signature .= 'null'; - } elseif (\is_array($v)) { - $signature .= $v ? '[…'.\count($v).']' : '[]'; - } elseif (\is_string($v)) { - $signature .= 10 > \strlen($v) && !str_contains($v, '\\') ? "'{$v}'" : "'…".\strlen($v)."'"; - } elseif (\is_bool($v)) { - $signature .= $v ? 'true' : 'false'; - } elseif (\is_object($v)) { - $signature .= 'new '.substr(strrchr('\\'.get_debug_type($v), '\\'), 1); - } else { - $signature .= $v; - } - } - } - $signature = (empty($a[$prefix.'returnsReference']) ? '' : '&').'('.substr($signature, 2).')'; - - if (isset($a[$prefix.'returnType'])) { - $signature .= ': '.substr(strrchr('\\'.$a[$prefix.'returnType'], '\\'), 1); - } - - return $signature; - } - - private static function addExtra(array &$a, \Reflector $c): void - { - $x = isset($a[Caster::PREFIX_VIRTUAL.'extra']) ? $a[Caster::PREFIX_VIRTUAL.'extra']->value : []; - - if (method_exists($c, 'getFileName') && $m = $c->getFileName()) { - $x['file'] = new LinkStub($m, $c->getStartLine()); - $x['line'] = $c->getStartLine().' to '.$c->getEndLine(); - } - - self::addMap($x, $c, self::EXTRA_MAP, ''); - - if ($x) { - $a[Caster::PREFIX_VIRTUAL.'extra'] = new EnumStub($x); - } - } - - private static function addMap(array &$a, object $c, array $map, string $prefix = Caster::PREFIX_VIRTUAL): void - { - foreach ($map as $k => $m) { - if ('isDisabled' === $k) { - continue; - } - - if (method_exists($c, $m) && false !== ($m = $c->$m()) && null !== $m) { - $a[$prefix.$k] = $m instanceof \Reflector ? $m->name : $m; - } - } - } - - private static function addAttributes(array &$a, \Reflector $c, string $prefix = Caster::PREFIX_VIRTUAL): void - { - foreach ($c->getAttributes() as $n) { - $a[$prefix.'attributes'][] = $n; - } - } -} diff --git a/docker/streamline-src/vendor/symfony/var-dumper/Dumper/CliDumper.php b/docker/streamline-src/vendor/symfony/var-dumper/Dumper/CliDumper.php deleted file mode 100644 index e36cee6a..00000000 --- a/docker/streamline-src/vendor/symfony/var-dumper/Dumper/CliDumper.php +++ /dev/null @@ -1,689 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\VarDumper\Dumper; - -use Symfony\Component\ErrorHandler\ErrorRenderer\FileLinkFormatter; -use Symfony\Component\VarDumper\Cloner\Cursor; -use Symfony\Component\VarDumper\Cloner\Stub; - -/** - * CliDumper dumps variables for command line output. - * - * @author Nicolas Grekas - */ -class CliDumper extends AbstractDumper -{ - public static $defaultColors; - /** @var callable|resource|string|null */ - public static $defaultOutput = 'php://stdout'; - - protected $colors; - protected $maxStringWidth = 0; - protected $styles = [ - // See http://en.wikipedia.org/wiki/ANSI_escape_code#graphics - 'default' => '0;38;5;208', - 'num' => '1;38;5;38', - 'const' => '1;38;5;208', - 'str' => '1;38;5;113', - 'note' => '38;5;38', - 'ref' => '38;5;247', - 'public' => '', - 'protected' => '', - 'private' => '', - 'meta' => '38;5;170', - 'key' => '38;5;113', - 'index' => '38;5;38', - ]; - - protected static $controlCharsRx = '/[\x00-\x1F\x7F]+/'; - protected static $controlCharsMap = [ - "\t" => '\t', - "\n" => '\n', - "\v" => '\v', - "\f" => '\f', - "\r" => '\r', - "\033" => '\e', - ]; - protected static $unicodeCharsRx = "/[\u{00A0}\u{00AD}\u{034F}\u{061C}\u{115F}\u{1160}\u{17B4}\u{17B5}\u{180E}\u{2000}-\u{200F}\u{202F}\u{205F}\u{2060}-\u{2064}\u{206A}-\u{206F}\u{3000}\u{2800}\u{3164}\u{FEFF}\u{FFA0}\u{1D159}\u{1D173}-\u{1D17A}]/u"; - - protected $collapseNextHash = false; - protected $expandNextHash = false; - - private array $displayOptions = [ - 'fileLinkFormat' => null, - ]; - - private bool $handlesHrefGracefully; - - public function __construct($output = null, ?string $charset = null, int $flags = 0) - { - parent::__construct($output, $charset, $flags); - - if ('\\' === \DIRECTORY_SEPARATOR && !$this->isWindowsTrueColor()) { - // Use only the base 16 xterm colors when using ANSICON or standard Windows 10 CLI - $this->setStyles([ - 'default' => '31', - 'num' => '1;34', - 'const' => '1;31', - 'str' => '1;32', - 'note' => '34', - 'ref' => '1;30', - 'meta' => '35', - 'key' => '32', - 'index' => '34', - ]); - } - - $this->displayOptions['fileLinkFormat'] = class_exists(FileLinkFormatter::class) ? new FileLinkFormatter() : (\ini_get('xdebug.file_link_format') ?: get_cfg_var('xdebug.file_link_format') ?: 'file://%f#L%l'); - } - - /** - * Enables/disables colored output. - * - * @return void - */ - public function setColors(bool $colors) - { - $this->colors = $colors; - } - - /** - * Sets the maximum number of characters per line for dumped strings. - * - * @return void - */ - public function setMaxStringWidth(int $maxStringWidth) - { - $this->maxStringWidth = $maxStringWidth; - } - - /** - * Configures styles. - * - * @param array $styles A map of style names to style definitions - * - * @return void - */ - public function setStyles(array $styles) - { - $this->styles = $styles + $this->styles; - } - - /** - * Configures display options. - * - * @param array $displayOptions A map of display options to customize the behavior - * - * @return void - */ - public function setDisplayOptions(array $displayOptions) - { - $this->displayOptions = $displayOptions + $this->displayOptions; - } - - /** - * @return void - */ - public function dumpScalar(Cursor $cursor, string $type, string|int|float|bool|null $value) - { - $this->dumpKey($cursor); - $this->collapseNextHash = $this->expandNextHash = false; - - $style = 'const'; - $attr = $cursor->attr; - - switch ($type) { - case 'default': - $style = 'default'; - break; - - case 'label': - $this->styles += ['label' => $this->styles['default']]; - $style = 'label'; - break; - - case 'integer': - $style = 'num'; - - if (isset($this->styles['integer'])) { - $style = 'integer'; - } - - break; - - case 'double': - $style = 'num'; - - if (isset($this->styles['float'])) { - $style = 'float'; - } - - $value = match (true) { - \INF === $value => 'INF', - -\INF === $value => '-INF', - is_nan($value) => 'NAN', - default => !str_contains($value = (string) $value, $this->decimalPoint) ? $value .= $this->decimalPoint.'0' : $value, - }; - break; - - case 'NULL': - $value = 'null'; - break; - - case 'boolean': - $value = $value ? 'true' : 'false'; - break; - - default: - $attr += ['value' => $this->utf8Encode($value)]; - $value = $this->utf8Encode($type); - break; - } - - $this->line .= $this->style($style, $value, $attr); - - $this->endValue($cursor); - } - - /** - * @return void - */ - public function dumpString(Cursor $cursor, string $str, bool $bin, int $cut) - { - $this->dumpKey($cursor); - $this->collapseNextHash = $this->expandNextHash = false; - $attr = $cursor->attr; - - if ($bin) { - $str = $this->utf8Encode($str); - } - if ('' === $str) { - $this->line .= '""'; - if ($cut) { - $this->line .= '…'.$cut; - } - $this->endValue($cursor); - } else { - $attr += [ - 'length' => 0 <= $cut ? mb_strlen($str, 'UTF-8') + $cut : 0, - 'binary' => $bin, - ]; - $str = $bin && str_contains($str, "\0") ? [$str] : explode("\n", $str); - if (isset($str[1]) && !isset($str[2]) && !isset($str[1][0])) { - unset($str[1]); - $str[0] .= "\n"; - } - $m = \count($str) - 1; - $i = $lineCut = 0; - - if (self::DUMP_STRING_LENGTH & $this->flags) { - $this->line .= '('.$attr['length'].') '; - } - if ($bin) { - $this->line .= 'b'; - } - - if ($m) { - $this->line .= '"""'; - $this->dumpLine($cursor->depth); - } else { - $this->line .= '"'; - } - - foreach ($str as $str) { - if ($i < $m) { - $str .= "\n"; - } - if (0 < $this->maxStringWidth && $this->maxStringWidth < $len = mb_strlen($str, 'UTF-8')) { - $str = mb_substr($str, 0, $this->maxStringWidth, 'UTF-8'); - $lineCut = $len - $this->maxStringWidth; - } - if ($m && 0 < $cursor->depth) { - $this->line .= $this->indentPad; - } - if ('' !== $str) { - $this->line .= $this->style('str', $str, $attr); - } - if ($i++ == $m) { - if ($m) { - if ('' !== $str) { - $this->dumpLine($cursor->depth); - if (0 < $cursor->depth) { - $this->line .= $this->indentPad; - } - } - $this->line .= '"""'; - } else { - $this->line .= '"'; - } - if ($cut < 0) { - $this->line .= '…'; - $lineCut = 0; - } elseif ($cut) { - $lineCut += $cut; - } - } - if ($lineCut) { - $this->line .= '…'.$lineCut; - $lineCut = 0; - } - - if ($i > $m) { - $this->endValue($cursor); - } else { - $this->dumpLine($cursor->depth); - } - } - } - } - - /** - * @return void - */ - public function enterHash(Cursor $cursor, int $type, string|int|null $class, bool $hasChild) - { - $this->colors ??= $this->supportsColors(); - - $this->dumpKey($cursor); - $this->expandNextHash = false; - $attr = $cursor->attr; - - if ($this->collapseNextHash) { - $cursor->skipChildren = true; - $this->collapseNextHash = $hasChild = false; - } - - $class = $this->utf8Encode($class); - if (Cursor::HASH_OBJECT === $type) { - $prefix = $class && 'stdClass' !== $class ? $this->style('note', $class, $attr).(empty($attr['cut_hash']) ? ' {' : '') : '{'; - } elseif (Cursor::HASH_RESOURCE === $type) { - $prefix = $this->style('note', $class.' resource', $attr).($hasChild ? ' {' : ' '); - } else { - $prefix = $class && !(self::DUMP_LIGHT_ARRAY & $this->flags) ? $this->style('note', 'array:'.$class).' [' : '['; - } - - if (($cursor->softRefCount || 0 < $cursor->softRefHandle) && empty($attr['cut_hash'])) { - $prefix .= $this->style('ref', (Cursor::HASH_RESOURCE === $type ? '@' : '#').(0 < $cursor->softRefHandle ? $cursor->softRefHandle : $cursor->softRefTo), ['count' => $cursor->softRefCount]); - } elseif ($cursor->hardRefTo && !$cursor->refIndex && $class) { - $prefix .= $this->style('ref', '&'.$cursor->hardRefTo, ['count' => $cursor->hardRefCount]); - } elseif (!$hasChild && Cursor::HASH_RESOURCE === $type) { - $prefix = substr($prefix, 0, -1); - } - - $this->line .= $prefix; - - if ($hasChild) { - $this->dumpLine($cursor->depth); - } - } - - /** - * @return void - */ - public function leaveHash(Cursor $cursor, int $type, string|int|null $class, bool $hasChild, int $cut) - { - if (empty($cursor->attr['cut_hash'])) { - $this->dumpEllipsis($cursor, $hasChild, $cut); - $this->line .= Cursor::HASH_OBJECT === $type ? '}' : (Cursor::HASH_RESOURCE !== $type ? ']' : ($hasChild ? '}' : '')); - } - - $this->endValue($cursor); - } - - /** - * Dumps an ellipsis for cut children. - * - * @param bool $hasChild When the dump of the hash has child item - * @param int $cut The number of items the hash has been cut by - * - * @return void - */ - protected function dumpEllipsis(Cursor $cursor, bool $hasChild, int $cut) - { - if ($cut) { - $this->line .= ' …'; - if (0 < $cut) { - $this->line .= $cut; - } - if ($hasChild) { - $this->dumpLine($cursor->depth + 1); - } - } - } - - /** - * Dumps a key in a hash structure. - * - * @return void - */ - protected function dumpKey(Cursor $cursor) - { - if (null !== $key = $cursor->hashKey) { - if ($cursor->hashKeyIsBinary) { - $key = $this->utf8Encode($key); - } - $attr = ['binary' => $cursor->hashKeyIsBinary]; - $bin = $cursor->hashKeyIsBinary ? 'b' : ''; - $style = 'key'; - switch ($cursor->hashType) { - default: - case Cursor::HASH_INDEXED: - if (self::DUMP_LIGHT_ARRAY & $this->flags) { - break; - } - $style = 'index'; - // no break - case Cursor::HASH_ASSOC: - if (\is_int($key)) { - $this->line .= $this->style($style, $key).' => '; - } else { - $this->line .= $bin.'"'.$this->style($style, $key).'" => '; - } - break; - - case Cursor::HASH_RESOURCE: - $key = "\0~\0".$key; - // no break - case Cursor::HASH_OBJECT: - if (!isset($key[0]) || "\0" !== $key[0]) { - $this->line .= '+'.$bin.$this->style('public', $key).': '; - } elseif (0 < strpos($key, "\0", 1)) { - $key = explode("\0", substr($key, 1), 2); - - switch ($key[0][0]) { - case '+': // User inserted keys - $attr['dynamic'] = true; - $this->line .= '+'.$bin.'"'.$this->style('public', $key[1], $attr).'": '; - break 2; - case '~': - $style = 'meta'; - if (isset($key[0][1])) { - parse_str(substr($key[0], 1), $attr); - $attr += ['binary' => $cursor->hashKeyIsBinary]; - } - break; - case '*': - $style = 'protected'; - $bin = '#'.$bin; - break; - default: - $attr['class'] = $key[0]; - $style = 'private'; - $bin = '-'.$bin; - break; - } - - if (isset($attr['collapse'])) { - if ($attr['collapse']) { - $this->collapseNextHash = true; - } else { - $this->expandNextHash = true; - } - } - - $this->line .= $bin.$this->style($style, $key[1], $attr).($attr['separator'] ?? ': '); - } else { - // This case should not happen - $this->line .= '-'.$bin.'"'.$this->style('private', $key, ['class' => '']).'": '; - } - break; - } - - if ($cursor->hardRefTo) { - $this->line .= $this->style('ref', '&'.($cursor->hardRefCount ? $cursor->hardRefTo : ''), ['count' => $cursor->hardRefCount]).' '; - } - } - } - - /** - * Decorates a value with some style. - * - * @param string $style The type of style being applied - * @param string $value The value being styled - * @param array $attr Optional context information - */ - protected function style(string $style, string $value, array $attr = []): string - { - $this->colors ??= $this->supportsColors(); - - $this->handlesHrefGracefully ??= 'JetBrains-JediTerm' !== getenv('TERMINAL_EMULATOR') - && (!getenv('KONSOLE_VERSION') || (int) getenv('KONSOLE_VERSION') > 201100) - && !isset($_SERVER['IDEA_INITIAL_DIRECTORY']); - - if (isset($attr['ellipsis'], $attr['ellipsis-type'])) { - $prefix = substr($value, 0, -$attr['ellipsis']); - if ('cli' === \PHP_SAPI && 'path' === $attr['ellipsis-type'] && isset($_SERVER[$pwd = '\\' === \DIRECTORY_SEPARATOR ? 'CD' : 'PWD']) && str_starts_with($prefix, $_SERVER[$pwd])) { - $prefix = '.'.substr($prefix, \strlen($_SERVER[$pwd])); - } - if (!empty($attr['ellipsis-tail'])) { - $prefix .= substr($value, -$attr['ellipsis'], $attr['ellipsis-tail']); - $value = substr($value, -$attr['ellipsis'] + $attr['ellipsis-tail']); - } else { - $value = substr($value, -$attr['ellipsis']); - } - - $value = $this->style('default', $prefix).$this->style($style, $value); - - goto href; - } - - $map = static::$controlCharsMap; - $startCchr = $this->colors ? "\033[m\033[{$this->styles['default']}m" : ''; - $endCchr = $this->colors ? "\033[m\033[{$this->styles[$style]}m" : ''; - $value = preg_replace_callback(static::$controlCharsRx, function ($c) use ($map, $startCchr, $endCchr) { - $s = $startCchr; - $c = $c[$i = 0]; - do { - $s .= $map[$c[$i]] ?? sprintf('\x%02X', \ord($c[$i])); - } while (isset($c[++$i])); - - return $s.$endCchr; - }, $value, -1, $cchrCount); - - if (!($attr['binary'] ?? false)) { - $value = preg_replace_callback(static::$unicodeCharsRx, function ($c) use (&$cchrCount, $startCchr, $endCchr) { - ++$cchrCount; - - return $startCchr.'\u{'.strtoupper(dechex(mb_ord($c[0]))).'}'.$endCchr; - }, $value); - } - - if ($this->colors && '' !== $value) { - if ($cchrCount && "\033" === $value[0]) { - $value = substr($value, \strlen($startCchr)); - } else { - $value = "\033[{$this->styles[$style]}m".$value; - } - if ($cchrCount && str_ends_with($value, $endCchr)) { - $value = substr($value, 0, -\strlen($endCchr)); - } else { - $value .= "\033[{$this->styles['default']}m"; - } - } - - href: - if ($this->colors && $this->handlesHrefGracefully) { - if (isset($attr['file']) && $href = $this->getSourceLink($attr['file'], $attr['line'] ?? 0)) { - if ('note' === $style) { - $value .= "\033]8;;{$href}\033\\^\033]8;;\033\\"; - } else { - $attr['href'] = $href; - } - } - if (isset($attr['href'])) { - if ('label' === $style) { - $value .= '^'; - } - $value = "\033]8;;{$attr['href']}\033\\{$value}\033]8;;\033\\"; - } - } - - if ('label' === $style && '' !== $value) { - $value .= ' '; - } - - return $value; - } - - protected function supportsColors(): bool - { - if ($this->outputStream !== static::$defaultOutput) { - return $this->hasColorSupport($this->outputStream); - } - if (isset(static::$defaultColors)) { - return static::$defaultColors; - } - if (isset($_SERVER['argv'][1])) { - $colors = $_SERVER['argv']; - $i = \count($colors); - while (--$i > 0) { - if (isset($colors[$i][5])) { - switch ($colors[$i]) { - case '--ansi': - case '--color': - case '--color=yes': - case '--color=force': - case '--color=always': - case '--colors=always': - return static::$defaultColors = true; - - case '--no-ansi': - case '--color=no': - case '--color=none': - case '--color=never': - case '--colors=never': - return static::$defaultColors = false; - } - } - } - } - - $h = stream_get_meta_data($this->outputStream) + ['wrapper_type' => null]; - $h = 'Output' === $h['stream_type'] && 'PHP' === $h['wrapper_type'] ? fopen('php://stdout', 'w') : $this->outputStream; - - return static::$defaultColors = $this->hasColorSupport($h); - } - - /** - * @return void - */ - protected function dumpLine(int $depth, bool $endOfValue = false) - { - if (null === $this->colors) { - $this->colors = $this->supportsColors(); - } - - if ($this->colors) { - $this->line = sprintf("\033[%sm%s\033[m", $this->styles['default'], $this->line); - } - parent::dumpLine($depth); - } - - /** - * @return void - */ - protected function endValue(Cursor $cursor) - { - if (-1 === $cursor->hashType) { - return; - } - - if (Stub::ARRAY_INDEXED === $cursor->hashType || Stub::ARRAY_ASSOC === $cursor->hashType) { - if (self::DUMP_TRAILING_COMMA & $this->flags && 0 < $cursor->depth) { - $this->line .= ','; - } elseif (self::DUMP_COMMA_SEPARATOR & $this->flags && 1 < $cursor->hashLength - $cursor->hashIndex) { - $this->line .= ','; - } - } - - $this->dumpLine($cursor->depth, true); - } - - /** - * Returns true if the stream supports colorization. - * - * Reference: Composer\XdebugHandler\Process::supportsColor - * https://github.com/composer/xdebug-handler - */ - private function hasColorSupport(mixed $stream): bool - { - if (!\is_resource($stream) || 'stream' !== get_resource_type($stream)) { - return false; - } - - // Follow https://no-color.org/ - if ('' !== (($_SERVER['NO_COLOR'] ?? getenv('NO_COLOR'))[0] ?? '')) { - return false; - } - - // Detect msysgit/mingw and assume this is a tty because detection - // does not work correctly, see https://github.com/composer/composer/issues/9690 - if (!@stream_isatty($stream) && !\in_array(strtoupper((string) getenv('MSYSTEM')), ['MINGW32', 'MINGW64'], true)) { - return false; - } - - if ('\\' === \DIRECTORY_SEPARATOR && @sapi_windows_vt100_support($stream)) { - return true; - } - - if ('Hyper' === getenv('TERM_PROGRAM') - || false !== getenv('COLORTERM') - || false !== getenv('ANSICON') - || 'ON' === getenv('ConEmuANSI') - ) { - return true; - } - - if ('dumb' === $term = (string) getenv('TERM')) { - return false; - } - - // See https://github.com/chalk/supports-color/blob/d4f413efaf8da045c5ab440ed418ef02dbb28bf1/index.js#L157 - return preg_match('/^((screen|xterm|vt100|vt220|putty|rxvt|ansi|cygwin|linux).*)|(.*-256(color)?(-bce)?)$/', $term); - } - - /** - * Returns true if the Windows terminal supports true color. - * - * Note that this does not check an output stream, but relies on environment - * variables from known implementations, or a PHP and Windows version that - * supports true color. - */ - private function isWindowsTrueColor(): bool - { - $result = 183 <= getenv('ANSICON_VER') - || 'ON' === getenv('ConEmuANSI') - || 'xterm' === getenv('TERM') - || 'Hyper' === getenv('TERM_PROGRAM'); - - if (!$result) { - $version = sprintf( - '%s.%s.%s', - PHP_WINDOWS_VERSION_MAJOR, - PHP_WINDOWS_VERSION_MINOR, - PHP_WINDOWS_VERSION_BUILD - ); - $result = $version >= '10.0.15063'; - } - - return $result; - } - - private function getSourceLink(string $file, int $line): string|false - { - if ($fmt = $this->displayOptions['fileLinkFormat']) { - return \is_string($fmt) ? strtr($fmt, ['%f' => $file, '%l' => $line]) : ($fmt->format($file, $line) ?: 'file://'.$file.'#L'.$line); - } - - return false; - } -} diff --git a/docker/streamline-src/vendor/theseer/tokenizer/CHANGELOG.md b/docker/streamline-src/vendor/theseer/tokenizer/CHANGELOG.md deleted file mode 100644 index d867649f..00000000 --- a/docker/streamline-src/vendor/theseer/tokenizer/CHANGELOG.md +++ /dev/null @@ -1,87 +0,0 @@ -# Changelog - -All notable changes to Tokenizer are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. - -## [1.2.3] - 2024-03-03 - -### Changed - -* Do not use implicitly nullable parameters - -## [1.2.2] - 2023-11-20 - -### Fixed - -* [#18](https://github.com/theseer/tokenizer/issues/18): Tokenizer fails on protobuf metadata files - - -## [1.2.1] - 2021-07-28 - -### Fixed - -* [#13](https://github.com/theseer/tokenizer/issues/13): Fatal error when tokenizing files that contain only a single empty line - - -## [1.2.0] - 2020-07-13 - -This release is now PHP 8.0 compliant. - -### Fixed - -* Whitespace handling in general (only noticable in the intermediate `TokenCollection`) is now consitent - -### Changed - -* Updated `Tokenizer` to deal with changed whitespace handling in PHP 8.0 - The XMLSerializer was unaffected. - - -## [1.1.3] - 2019-06-14 - -### Changed - -* Ensure XMLSerializer can deal with empty token collections - -### Fixed - -* [#2](https://github.com/theseer/tokenizer/issues/2): Fatal error in infection / phpunit - - -## [1.1.2] - 2019-04-04 - -### Changed - -* Reverted PHPUnit 8 test update to stay PHP 7.0 compliant - - -## [1.1.1] - 2019-04-03 - -### Fixed - -* [#1](https://github.com/theseer/tokenizer/issues/1): Empty file causes invalid array read - -### Changed - -* Tests should now be PHPUnit 8 compliant - - -## [1.1.0] - 2017-04-07 - -### Added - -* Allow use of custom namespace for XML serialization - - -## [1.0.0] - 2017-04-05 - -Initial Release - -[1.2.3]: https://github.com/theseer/tokenizer/compare/1.2.2...1.2.3 -[1.2.2]: https://github.com/theseer/tokenizer/compare/1.2.1...1.2.2 -[1.2.1]: https://github.com/theseer/tokenizer/compare/1.2.0...1.2.1 -[1.2.0]: https://github.com/theseer/tokenizer/compare/1.1.3...1.2.0 -[1.1.3]: https://github.com/theseer/tokenizer/compare/1.1.2...1.1.3 -[1.1.2]: https://github.com/theseer/tokenizer/compare/1.1.1...1.1.2 -[1.1.1]: https://github.com/theseer/tokenizer/compare/1.1.0...1.1.1 -[1.1.0]: https://github.com/theseer/tokenizer/compare/1.0.0...1.1.0 -[1.0.0]: https://github.com/theseer/tokenizer/compare/b2493e57de80c1b7414219b28503fa5c6b4d0a98...1.0.0 diff --git a/docker/streamline-src/vendor/theseer/tokenizer/src/Tokenizer.php b/docker/streamline-src/vendor/theseer/tokenizer/src/Tokenizer.php deleted file mode 100644 index 2dc79fea..00000000 --- a/docker/streamline-src/vendor/theseer/tokenizer/src/Tokenizer.php +++ /dev/null @@ -1,147 +0,0 @@ - 'T_OPEN_BRACKET', - ')' => 'T_CLOSE_BRACKET', - '[' => 'T_OPEN_SQUARE', - ']' => 'T_CLOSE_SQUARE', - '{' => 'T_OPEN_CURLY', - '}' => 'T_CLOSE_CURLY', - ';' => 'T_SEMICOLON', - '.' => 'T_DOT', - ',' => 'T_COMMA', - '=' => 'T_EQUAL', - '<' => 'T_LT', - '>' => 'T_GT', - '+' => 'T_PLUS', - '-' => 'T_MINUS', - '*' => 'T_MULT', - '/' => 'T_DIV', - '?' => 'T_QUESTION_MARK', - '!' => 'T_EXCLAMATION_MARK', - ':' => 'T_COLON', - '"' => 'T_DOUBLE_QUOTES', - '@' => 'T_AT', - '&' => 'T_AMPERSAND', - '%' => 'T_PERCENT', - '|' => 'T_PIPE', - '$' => 'T_DOLLAR', - '^' => 'T_CARET', - '~' => 'T_TILDE', - '`' => 'T_BACKTICK' - ]; - - public function parse(string $source): TokenCollection { - $result = new TokenCollection(); - - if ($source === '') { - return $result; - } - - $tokens = \token_get_all($source); - - $lastToken = new Token( - $tokens[0][2], - 'Placeholder', - '' - ); - - foreach ($tokens as $pos => $tok) { - if (\is_string($tok)) { - $token = new Token( - $lastToken->getLine(), - $this->map[$tok], - $tok - ); - $result->addToken($token); - $lastToken = $token; - - continue; - } - - $line = $tok[2]; - $values = \preg_split('/\R+/Uu', $tok[1]); - - if (!$values) { - $result->addToken( - new Token( - $line, - \token_name($tok[0]), - '{binary data}' - ) - ); - - continue; - } - - foreach ($values as $v) { - $token = new Token( - $line, - \token_name($tok[0]), - $v - ); - $lastToken = $token; - $line++; - - if ($v === '') { - continue; - } - - $result->addToken($token); - } - } - - return $this->fillBlanks($result, $lastToken->getLine()); - } - - private function fillBlanks(TokenCollection $tokens, int $maxLine): TokenCollection { - $prev = new Token( - 0, - 'Placeholder', - '' - ); - - $final = new TokenCollection(); - - foreach ($tokens as $token) { - $gap = $token->getLine() - $prev->getLine(); - - while ($gap > 1) { - $linebreak = new Token( - $prev->getLine() + 1, - 'T_WHITESPACE', - '' - ); - $final->addToken($linebreak); - $prev = $linebreak; - $gap--; - } - - $final->addToken($token); - $prev = $token; - } - - $gap = $maxLine - $prev->getLine(); - - while ($gap > 0) { - $linebreak = new Token( - $prev->getLine() + 1, - 'T_WHITESPACE', - '' - ); - $final->addToken($linebreak); - $prev = $linebreak; - $gap--; - } - - return $final; - } -} diff --git a/docker/streamline-src/vendor/theseer/tokenizer/src/XMLSerializer.php b/docker/streamline-src/vendor/theseer/tokenizer/src/XMLSerializer.php deleted file mode 100644 index 518bfb06..00000000 --- a/docker/streamline-src/vendor/theseer/tokenizer/src/XMLSerializer.php +++ /dev/null @@ -1,79 +0,0 @@ -xmlns = $xmlns; - } - - public function toDom(TokenCollection $tokens): DOMDocument { - $dom = new DOMDocument(); - $dom->preserveWhiteSpace = false; - $dom->loadXML($this->toXML($tokens)); - - return $dom; - } - - public function toXML(TokenCollection $tokens): string { - $this->writer = new \XMLWriter(); - $this->writer->openMemory(); - $this->writer->setIndent(true); - $this->writer->startDocument(); - $this->writer->startElement('source'); - $this->writer->writeAttribute('xmlns', $this->xmlns->asString()); - - if (\count($tokens) > 0) { - $this->writer->startElement('line'); - $this->writer->writeAttribute('no', '1'); - - $this->previousToken = $tokens[0]; - - foreach ($tokens as $token) { - $this->addToken($token); - } - } - - $this->writer->endElement(); - $this->writer->endElement(); - $this->writer->endDocument(); - - return $this->writer->outputMemory(); - } - - private function addToken(Token $token): void { - if ($this->previousToken->getLine() < $token->getLine()) { - $this->writer->endElement(); - - $this->writer->startElement('line'); - $this->writer->writeAttribute('no', (string)$token->getLine()); - $this->previousToken = $token; - } - - if ($token->getValue() !== '') { - $this->writer->startElement('token'); - $this->writer->writeAttribute('name', $token->getName()); - $this->writer->writeRaw(\htmlspecialchars($token->getValue(), \ENT_NOQUOTES | \ENT_DISALLOWED | \ENT_XML1)); - $this->writer->endElement(); - } - } -} diff --git a/docker/streamline-src/vendor/tijsverkoyen/css-to-inline-styles/composer.json b/docker/streamline-src/vendor/tijsverkoyen/css-to-inline-styles/composer.json deleted file mode 100644 index d9be31d9..00000000 --- a/docker/streamline-src/vendor/tijsverkoyen/css-to-inline-styles/composer.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "tijsverkoyen/css-to-inline-styles", - "type": "library", - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "license": "BSD-3-Clause", - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "require": { - "php": "^7.4 || ^8.0", - "ext-dom": "*", - "ext-libxml": "*", - "symfony/css-selector": "^5.4 || ^6.0 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.21 || ^9.5.10", - "phpstan/phpstan": "^2.0", - "phpstan/phpstan-phpunit": "^2.0" - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "autoload-dev": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\Tests\\": "tests" - } - }, - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - } -} diff --git a/docker/streamline-src/vendor/tijsverkoyen/css-to-inline-styles/src/Css/Processor.php b/docker/streamline-src/vendor/tijsverkoyen/css-to-inline-styles/src/Css/Processor.php deleted file mode 100644 index 25fa0085..00000000 --- a/docker/streamline-src/vendor/tijsverkoyen/css-to-inline-styles/src/Css/Processor.php +++ /dev/null @@ -1,71 +0,0 @@ -doCleanup($css); - $rulesProcessor = new RuleProcessor(); - $rules = $rulesProcessor->splitIntoSeparateRules($css); - - return $rulesProcessor->convertArrayToObjects($rules, $existingRules); - } - - /** - * Get the CSS from the style-tags in the given HTML-string - * - * @param string $html - * - * @return string - */ - public function getCssFromStyleTags($html) - { - $css = ''; - $matches = array(); - $htmlNoComments = preg_replace('||s', '', $html) ?? $html; - preg_match_all('|(.*)|isU', $htmlNoComments, $matches); - - if (!empty($matches[1])) { - foreach ($matches[1] as $match) { - $css .= trim($match) . "\n"; - } - } - - return $css; - } - - /** - * @param string $css - * - * @return string - */ - private function doCleanup($css) - { - // remove charset - $css = preg_replace('/@charset "[^"]++";/', '', $css) ?? $css; - // remove media queries - $css = preg_replace('/@media [^{]*+{([^{}]++|{[^{}]*+})*+}/', '', $css) ?? $css; - - $css = str_replace(array("\r", "\n"), '', $css); - $css = str_replace(array("\t"), ' ', $css); - $css = str_replace('"', '\'', $css); - $css = preg_replace('|/\*.*?\*/|', '', $css) ?? $css; - $css = preg_replace('/\s\s++/', ' ', $css) ?? $css; - $css = trim($css); - - return $css; - } -} diff --git a/docker/streamline-src/vendor/tijsverkoyen/css-to-inline-styles/src/Css/Property/Processor.php b/docker/streamline-src/vendor/tijsverkoyen/css-to-inline-styles/src/Css/Property/Processor.php deleted file mode 100644 index 52e3ba65..00000000 --- a/docker/streamline-src/vendor/tijsverkoyen/css-to-inline-styles/src/Css/Property/Processor.php +++ /dev/null @@ -1,127 +0,0 @@ -cleanup($propertiesString); - - $properties = (array) explode(';', $propertiesString); - $keysToRemove = array(); - $numberOfProperties = count($properties); - - for ($i = 0; $i < $numberOfProperties; $i++) { - $properties[$i] = trim($properties[$i]); - - // if the new property begins with base64 it is part of the current property - if (isset($properties[$i + 1]) && strpos(trim($properties[$i + 1]), 'base64,') === 0) { - $properties[$i] .= ';' . trim($properties[$i + 1]); - $keysToRemove[] = $i + 1; - } - } - - if (!empty($keysToRemove)) { - foreach ($keysToRemove as $key) { - unset($properties[$key]); - } - } - - return array_values($properties); - } - - /** - * @param string $string - * - * @return string - */ - private function cleanup($string) - { - $string = str_replace(array("\r", "\n"), '', $string); - $string = str_replace(array("\t"), ' ', $string); - $string = str_replace('"', '\'', $string); - $string = preg_replace('|/\*.*?\*/|', '', $string) ?? $string; - $string = preg_replace('/\s\s+/', ' ', $string) ?? $string; - - $string = trim($string); - $string = rtrim($string, ';'); - - return $string; - } - - /** - * Converts a property-string into an object - * - * @param string $property - * - * @return Property|null - */ - public function convertToObject($property, ?Specificity $specificity = null) - { - if (strpos($property, ':') === false) { - return null; - } - - list($name, $value) = explode(':', $property, 2); - - $name = trim($name); - $value = trim($value); - - if ($value === '') { - return null; - } - - return new Property($name, $value, $specificity); - } - - /** - * Converts an array of property-strings into objects - * - * @param string[] $properties - * - * @return Property[] - */ - public function convertArrayToObjects(array $properties, ?Specificity $specificity = null) - { - $objects = array(); - - foreach ($properties as $property) { - $object = $this->convertToObject($property, $specificity); - if ($object === null) { - continue; - } - - $objects[] = $object; - } - - return $objects; - } - - /** - * Build the property-string for multiple properties - * - * @param Property[] $properties - * - * @return string - */ - public function buildPropertiesString(array $properties) - { - $chunks = array(); - - foreach ($properties as $property) { - $chunks[] = $property->toString(); - } - - return implode(' ', $chunks); - } -} diff --git a/docker/streamline-src/vendor/tijsverkoyen/css-to-inline-styles/src/Css/Property/Property.php b/docker/streamline-src/vendor/tijsverkoyen/css-to-inline-styles/src/Css/Property/Property.php deleted file mode 100644 index 5ecb6d1c..00000000 --- a/docker/streamline-src/vendor/tijsverkoyen/css-to-inline-styles/src/Css/Property/Property.php +++ /dev/null @@ -1,90 +0,0 @@ -name = $name; - $this->value = $value; - $this->originalSpecificity = $specificity; - } - - /** - * Get name - * - * @return string - */ - public function getName() - { - return $this->name; - } - - /** - * Get value - * - * @return string - */ - public function getValue() - { - return $this->value; - } - - /** - * Get originalSpecificity - * - * @return Specificity|null - */ - public function getOriginalSpecificity() - { - return $this->originalSpecificity; - } - - /** - * Is this property important? - * - * @return bool - */ - public function isImportant() - { - return (stripos($this->value, '!important') !== false); - } - - /** - * Get the textual representation of the property - * - * @return string - */ - public function toString() - { - return sprintf( - '%1$s: %2$s;', - $this->name, - $this->value - ); - } -} diff --git a/docker/streamline-src/vendor/tijsverkoyen/css-to-inline-styles/src/Css/Rule/Processor.php b/docker/streamline-src/vendor/tijsverkoyen/css-to-inline-styles/src/Css/Rule/Processor.php deleted file mode 100644 index 6b09d9d0..00000000 --- a/docker/streamline-src/vendor/tijsverkoyen/css-to-inline-styles/src/Css/Rule/Processor.php +++ /dev/null @@ -1,169 +0,0 @@ -cleanup($rulesString); - - return (array) explode('}', $rulesString); - } - - /** - * @param string $string - * - * @return string - */ - private function cleanup($string) - { - $string = str_replace(array("\r", "\n"), '', $string); - $string = str_replace(array("\t"), ' ', $string); - $string = str_replace('"', '\'', $string); - $string = preg_replace('|/\*.*?\*/|', '', $string) ?? $string; - $string = preg_replace('/\s\s+/', ' ', $string) ?? $string; - - $string = trim($string); - $string = rtrim($string, '}'); - - return $string; - } - - /** - * Converts a rule-string into an object - * - * @param string $rule - * @param int $originalOrder - * - * @return Rule[] - */ - public function convertToObjects($rule, $originalOrder) - { - $rule = $this->cleanup($rule); - - $chunks = explode('{', $rule); - if (!isset($chunks[1])) { - return array(); - } - $propertiesProcessor = new PropertyProcessor(); - $rules = array(); - $selectors = (array) explode(',', trim($chunks[0])); - $properties = $propertiesProcessor->splitIntoSeparateProperties($chunks[1]); - - foreach ($selectors as $selector) { - $selector = trim($selector); - $specificity = $this->calculateSpecificityBasedOnASelector($selector); - - $rules[] = new Rule( - $selector, - $propertiesProcessor->convertArrayToObjects($properties, $specificity), - $specificity, - $originalOrder - ); - } - - return $rules; - } - - /** - * Calculates the specificity based on a CSS Selector string, - * Based on the patterns from premailer/css_parser by Alex Dunae - * - * @see https://github.com/premailer/css_parser/blob/master/lib/css_parser/regexps.rb - * - * @param string $selector - * - * @return Specificity - */ - public function calculateSpecificityBasedOnASelector($selector) - { - $idSelectorCount = preg_match_all("/ \#/ix", $selector, $matches); - $classAttributesPseudoClassesSelectorsPattern = " (\.[\w]+) # classes - | - \[(\w+) # attributes - | - (\:( # pseudo classes - link|visited|active - |hover|focus - |lang - |target - |enabled|disabled|checked|indeterminate - |root - |nth-child|nth-last-child|nth-of-type|nth-last-of-type - |first-child|last-child|first-of-type|last-of-type - |only-child|only-of-type - |empty|contains - ))"; - $classAttributesPseudoClassesSelectorCount = preg_match_all("/{$classAttributesPseudoClassesSelectorsPattern}/ix", $selector, $matches); - - $typePseudoElementsSelectorPattern = " ((^|[\s\+\>\~]+)[\w]+ # elements - | - \:{1,2}( # pseudo-elements - after|before - |first-letter|first-line - |selection - ) - )"; - $typePseudoElementsSelectorCount = preg_match_all("/{$typePseudoElementsSelectorPattern}/ix", $selector, $matches); - - if ($idSelectorCount === false || $classAttributesPseudoClassesSelectorCount === false || $typePseudoElementsSelectorCount === false) { - throw new \RuntimeException('Failed to calculate specificity based on selector.'); - } - - return new Specificity( - $idSelectorCount, - $classAttributesPseudoClassesSelectorCount, - $typePseudoElementsSelectorCount - ); - } - - /** - * @param string[] $rules - * @param Rule[] $objects - * - * @return Rule[] - */ - public function convertArrayToObjects(array $rules, array $objects = array()) - { - $order = 1; - foreach ($rules as $rule) { - $objects = array_merge($objects, $this->convertToObjects($rule, $order)); - $order++; - } - - return $objects; - } - - /** - * Sorts an array on the specificity element in an ascending way - * Lower specificity will be sorted to the beginning of the array - * - * @param Rule $e1 The first element. - * @param Rule $e2 The second element. - * - * @return int - */ - public static function sortOnSpecificity(Rule $e1, Rule $e2) - { - $e1Specificity = $e1->getSpecificity(); - $value = $e1Specificity->compareTo($e2->getSpecificity()); - - // if the specificity is the same, use the order in which the element appeared - if ($value === 0) { - $value = $e1->getOrder() - $e2->getOrder(); - } - - return $value; - } -} diff --git a/docker/streamline-src/vendor/tijsverkoyen/css-to-inline-styles/src/CssToInlineStyles.php b/docker/streamline-src/vendor/tijsverkoyen/css-to-inline-styles/src/CssToInlineStyles.php deleted file mode 100644 index 0e750f43..00000000 --- a/docker/streamline-src/vendor/tijsverkoyen/css-to-inline-styles/src/CssToInlineStyles.php +++ /dev/null @@ -1,253 +0,0 @@ -cssConverter = new CssSelectorConverter(); - } - - /** - * Will inline the $css into the given $html - * - * Remark: if the html contains